From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm1-x329.google.com (mail-wm1-x329.google.com [IPv6:2a00:1450:4864:20::329]) by sourceware.org (Postfix) with ESMTPS id 522963858407 for ; Sun, 20 Mar 2022 09:33:23 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 522963858407 Received: by mail-wm1-x329.google.com with SMTP id k124-20020a1ca182000000b0038c9cf6e2a6so823480wme.0 for ; Sun, 20 Mar 2022 02:33:23 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=9mlKwCpwRuVrW75A/ZaPdvkoNtHe91fe0WLqqaX3B9I=; b=WE+RpDrfE0lPRjDuHt6k1d9hrHQGnWGHVUA3BAmMLudZBXroF7RfjuE88Pwey+aFv4 uk748mAHwHtZT7021b6nT2E1YZqzb8fsDvRriGQy0U1syWrH4uoRy+LC3OxUvx2EIMCh sv8CAMEqy4cWplkvclEI2fag3wcxrCSXz24BRVewMmXUyTbtoXHrWvVwWKVYGzV0buiK br6GpPmE1wCI6llmoyh7fF1qs0vR6EWf8226jAEik6QLog9eP/yC+ix6/ZBC/r4Tq8wk ifLYjby2S3EwvMLxy/qYPo7fZLMdaoWIEMAPTyXG3hOQaA2rDA3rZSroNsJdWrYjP1Qc w7JA== X-Gm-Message-State: AOAM530UwHPVZxVyVMd+B9niXTPFP6MYEYJ5PHuvtrAkAl0uRfDnZRV+ 6NMJ1OEUpDdF1cS49hygkjdCrpQ2YAxHyVYM9eLibi4D X-Google-Smtp-Source: ABdhPJy1Kuqk+pZBrVzuwLPj8kX9K6v3OKyjgcsjyLoOvtjLKrTZ9n8nnruu/EVPNVNYaQvsDEFyXZ6kjgdsMcv2zwo= X-Received: by 2002:a05:600c:1e1f:b0:38b:d7ea:99b9 with SMTP id ay31-20020a05600c1e1f00b0038bd7ea99b9mr15184241wmb.8.1647768801722; Sun, 20 Mar 2022 02:33:21 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Mohamed Atef Date: Sun, 20 Mar 2022 11:33:10 +0200 Message-ID: Subject: Re: [PATCH] libgompd: add OMPD support, libgompd initialization and global ICVs functions To: gcc-patches@gcc.gnu.org Content-Type: multipart/mixed; boundary="000000000000196a2b05daa3127e" X-Spam-Status: No, score=-7.3 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM, GIT_PATCH_0, HTML_MESSAGE, KAM_SHORT, KAM_STOCKGEN, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 20 Mar 2022 09:33:30 -0000 --000000000000196a2b05daa3127e Content-Type: text/plain; charset="UTF-8" hello, I know it's too much. we fixed the functions' names that are not part of the standard form ompd_ * prefix to gompd_ Thanks On Wed, Mar 16, 2022 at 5:48 AM Mohamed Atef wrote: > Hi, > we found some typos in the ChangeLog and some wrong spaces (nightmare) > in the files. > So here's the best we can do. > and please don't be disappointed and trust us we're doing our best. > I hope you could review it by Sunday night. > > Thanks. > > > libgomp/ChangeLog > > 2022-03-15 Mohamed Atef > > *config/darwin/plugin-suffix.h (SONAME_SUFFIX): Remove ()s. > *config/hpux/plugin-suffix.h (SONAME_SUFFIX): Remove ()s. > *config/posix/plugin-suffix.h (SONAME_SUFFIX): Remove ()s. > *configure: Regenerate. > * Makefile.am (toolexeclib_LTLIBRARIES): Add libgompd.la. > > (libgompd_la_LDFLAGS, libgompd_la_DEPENDENCIES, libgompd_la_LINK, > libgompd_la_SOURCES, libgompd_version_dep, libgompd_version_script, > libgompd.ver-sun, libgompd.ver, libgompd_version_info): New. > *Makefile.in: Regenerate. > *aclocal.m4: Regenerate. > *env.c: Include ompd-support.h. > (initialize_env): Call gompd_load. > *team.c: Include ompd-support.h. > (gomp_team_start): Call ompd_bp_parallel_begin. > (gomp_team_end): Call ompd_bp_parallel_end. > *libgomp.map: Add OMP_5.0.3 symbol versions. > *libgompd.map: New. > *omp-tools.h.in: New. > *ompd-types.h.in: New. > *ompd-support.h: New. > *ompd-support.c: New. > *ompd-helper.h: New. > *ompd-helper.c: New. > *ompd-init.c: New. > *ompd-icv.c: New. > *configure.ac (AC_CONFIG_FILES): Add omp-tools.h and ompd-types.h. > > > On Tue, Mar 15, 2022 at 11:32 PM Mohamed Atef > wrote: > >> >> >> On Tue, Mar 15, 2022 at 11:32 PM Mohamed Atef >> wrote: >> >>> This patch added OMPD support to libgomp, api version funcitos and >>> global ICVs functions. >>> I hope you review it as soon as possible, to fix the problems. >>> I tried as much as I could to follow GNU standards. >>> We have a seminar at the college next week, so we need this to be >>> reviewed. >>> Thanks >>> >>> >>> libgomp/ChangeLog >>> >>> 2022-03-15 Mohamed Atef >>> >>> *config/darwin/plugin-suffix.h (SONAME_SUFFIX): Remove ()s. >>> *config/hpux/plugin-suffix.h (SONAME_SUFFIX): Remove ()s. >>> *config/posix/plugin-suffix.h (SONAME_SUFFIX): Remove ()s. >>> *configure: Regenerate. >>> * Makefile.am (toolexeclib_LTLIBRARIES): Add libgompd.la >>> (libgompd_la_LDFLAGS, libgompd_la_DEPENDENCIES, libgompd_la_LINK, >>> libgompd_la_SOURCES, libgompd_version_dep, libgompd_version_script, >>> libgompd.ver-sun, libgompd.ver, libgompd_version_info): New. >>> *Makefile.in: Regenerate. >>> *aclocal.m4: Regenerate. >>> *env.c: Include ompd-support.h. >>> (initialize_env): Call gompd_load. >>> *team.c: Include ompd-support.h. >>> (gomp_team_start): Call ompd_bp_parallel_begin. >>> (gomp_team_end): Call ompd_bp_parallel_end. >>> *libgomp.map: Add OMP_5.0.3 symbol versions. >>> *libgompd.map: New. >>> *omp-tools.h.in: New. >>> *ompd-types.h.in: New. >>> *ompd-support.h: New. >>> *ompd-support.c: New. >>> *ompd-helper.h: New. >>> *ompd-helper.c: New. >>> *ompd-init.c: New. >>> *ompd-icv.c: New. >>> *configure.ac (AC_CONFIG_FILES): Add omp-tools.h and ompd-types.h. >>> >> --000000000000196a2b05daa3127e Content-Type: text/plain; charset="US-ASCII"; name="diff.txt" Content-Disposition: attachment; filename="diff.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l0z2x8420 ZGlmZiAtLWdpdCBhL2xpYmdvbXAvTWFrZWZpbGUuYW0gYi9saWJnb21wL01ha2VmaWxlLmFtCmlu ZGV4IGY4YjJhMDZkNjNlLi5mNTMwYTczMGVhOCAxMDA2NDQKLS0tIGEvbGliZ29tcC9NYWtlZmls ZS5hbQorKysgYi9saWJnb21wL01ha2VmaWxlLmFtCkBAIC0yMCw3ICsyMCw3IEBAIEFNX0NQUEZM QUdTID0gJChhZGRwcmVmaXggLUksICQoc2VhcmNoX3BhdGgpKQogQU1fQ0ZMQUdTID0gJChYQ0ZM QUdTKQogQU1fTERGTEFHUyA9ICQoWExERkxBR1MpICQoU0VDVElPTl9MREZMQUdTKSAkKE9QVF9M REZMQUdTKQogCi10b29sZXhlY2xpYl9MVExJQlJBUklFUyA9IGxpYmdvbXAubGEKK3Rvb2xleGVj bGliX0xUTElCUkFSSUVTID0gbGliZ29tcC5sYSBsaWJnb21wZC5sYQogbm9kaXN0X3Rvb2xleGVj bGliX0hFQURFUlMgPSBsaWJnb21wLnNwZWMKIAogaWYgTElCR09NUF9CVUlMRF9WRVJTSU9ORURf U0hMSUIKQEAgLTMyLDEzICszMiwyMSBAQCBsaWJnb21wLnZlcjogJCh0b3Bfc3JjZGlyKS9saWJn b21wLm1hcAogCSQoRUdSRVApIC12ICcjKCN8IHwkJCknICQ8IHwgXAogCSAgJChQUkVQUk9DRVNT KSAtUCAtaW5jbHVkZSBjb25maWcuaCAtID4gJEAgfHwgKHJtIC1mICRAIDsgZXhpdCAxKQogCits aWJnb21wZC52ZXI6ICQodG9wX3NyY2RpcikvbGliZ29tcGQubWFwCisJJChFR1JFUCkgLXYgJyMo I3wgfCQkKScgJDwgfCBcCisJCSQoUFJFUFJPQ0VTUykgLVAgLWluY2x1ZGUgY29uZmlnLmggLSA+ ICRAIHx8IChybSAtZiAkQCA7IGV4aXQgMSkKKwogaWYgTElCR09NUF9CVUlMRF9WRVJTSU9ORURf U0hMSUJfR05VCiBsaWJnb21wX3ZlcnNpb25fc2NyaXB0ID0gLVdsLC0tdmVyc2lvbi1zY3JpcHQs bGliZ29tcC52ZXIKK2xpYmdvbXBkX3ZlcnNpb25fc2NyaXB0ID0gLVdsLC0tdmVyc2lvbi1zY3Jp cHQsbGliZ29tcGQudmVyCiBsaWJnb21wX3ZlcnNpb25fZGVwID0gbGliZ29tcC52ZXIKK2xpYmdv bXBkX3ZlcnNpb25fZGVwID0gbGliZ29tcGQudmVyCiBlbmRpZgogaWYgTElCR09NUF9CVUlMRF9W RVJTSU9ORURfU0hMSUJfU1VOCiBsaWJnb21wX3ZlcnNpb25fc2NyaXB0ID0gLVdsLC1NLGxpYmdv bXAudmVyLXN1bgorbGliZ29tcGRfdmVyc2lvbl9zY3JpcHQgPSAtV2wsLU0sbGliZ29tcGQudmVy LXN1bgogbGliZ29tcF92ZXJzaW9uX2RlcCA9IGxpYmdvbXAudmVyLXN1bgorbGliZ29tcGRfdmVy c2lvbl9kZXAgPSBsaWJnb21wZC52ZXItc3VuCiBsaWJnb21wLnZlci1zdW4gOiBsaWJnb21wLnZl ciBcCiAJCSQodG9wX3NyY2RpcikvLi4vY29udHJpYi9tYWtlX3N1bnZlci5wbCBcCiAJCSQobGli Z29tcF9sYV9PQkpFQ1RTKSAkKGxpYmdvbXBfbGFfTElCQUREKQpAQCAtNDgsMTYgKzU2LDM0IEBA IGxpYmdvbXAudmVyLXN1biA6IGxpYmdvbXAudmVyIFwKIAkgYGVjaG8gJChsaWJnb21wX2xhX0xJ QkFERCkgfCBcCiAJICAgIHNlZCAncywvXChbXi8uXSpcKVwubGEsLy5saWJzL1wxLmEsZydgIFwK IAkgPiAkQCB8fCAocm0gLWYgJEAgOyBleGl0IDEpCisKK2xpYmdvbXBkLnZlci1zdW4gOiBsaWJn b21wZC52ZXIgXAorCQkkKHRvcF9zcmNkaXIpLy4uL2NvbnRyaWIvbWFrZV9zdW52ZXIucGwgXAor CQkkKGxpYmdvbXBkX2xhX09CSkVDVFMpICQobGliZ29tcGRfbGFfTElCQUREKQorCXBlcmwgJCh0 b3Bfc3JjZGlyKS8uLi9jb250cmliL21ha2Vfc3VudmVyLnBsIFwKKwkJbGliZ29tcGQudmVyIFwK KwkJJChsaWJnb21wZF9sYV9PQkpFQ1RTOiUubG89LmxpYnMvJS5vKSBcCisJCWBlY2hvICQobGli Z29tcGRfbGFfTElCQUREKSB8IFwKKwkJCXNlZCAncywvXChbXi8uXSpcKVwubGEsLy5saWJzL1wx LmEsZydgIFwKKwkJPiAkQCB8fCAocm0gLWYgJEAgOyBleGl0IDEpCisKIGVuZGlmCiBlbHNlCiBs aWJnb21wX3ZlcnNpb25fc2NyaXB0ID0KK2xpYmdvbXBkX3ZlcnNpb25fc2NyaXB0ID0KIGxpYmdv bXBfdmVyc2lvbl9kZXAgPQorbGliZ29tcGRfdmVyc2lvbl9kZXAgPQogZW5kaWYKIGxpYmdvbXBf dmVyc2lvbl9pbmZvID0gLXZlcnNpb24taW5mbyAkKGxpYnRvb2xfVkVSU0lPTikKK2xpYmdvbXBk X3ZlcnNpb25faW5mbyA9IC12ZXJzaW9uLWluZm8gJChsaWJ0b29sX1ZFUlNJT04pCiBsaWJnb21w X2xhX0xERkxBR1MgPSAkKGxpYmdvbXBfdmVyc2lvbl9pbmZvKSAkKGxpYmdvbXBfdmVyc2lvbl9z Y3JpcHQpIFwKICAgICAgICAgJChsdF9ob3N0X2ZsYWdzKQorbGliZ29tcGRfbGFfTERGTEFHUyA9 ICQobGliZ29tcGRfdmVyc2lvbl9pbmZvKSAkKGxpYmdvbXBkX3ZlcnNpb25fc2NyaXB0KSBcCisJ CQkJJChsdF9ob3N0X2ZsYWdzKQogbGliZ29tcF9sYV9ERVBFTkRFTkNJRVMgPSAkKGxpYmdvbXBf dmVyc2lvbl9kZXApCitsaWJnb21wZF9sYV9ERVBFTkRFTkNJRVMgPSAkKGxpYmdvbXBkX3ZlcnNp b25fZGVwKQogbGliZ29tcF9sYV9MSU5LID0gJChMSU5LKSAkKGxpYmdvbXBfbGFfTERGTEFHUykK K2xpYmdvbXBkX2xhX0xJTksgPSAkKExJTkspICQobGliZ29tcGRfbGFfTERGTEFHUykKIAogbGli Z29tcF9sYV9TT1VSQ0VTID0gYWxsb2MuYyBhdG9taWMuYyBiYXJyaWVyLmMgY3JpdGljYWwuYyBl bnYuYyBlcnJvci5jIFwKIAlpY3YuYyBpY3YtZGV2aWNlLmMgaXRlci5jIGl0ZXJfdWxsLmMgbG9v cC5jIGxvb3BfdWxsLmMgb3JkZXJlZC5jIFwKQEAgLTY2LDggKzkyLDkgQEAgbGliZ29tcF9sYV9T T1VSQ0VTID0gYWxsb2MuYyBhdG9taWMuYyBiYXJyaWVyLmMgY3JpdGljYWwuYyBlbnYuYyBlcnJv ci5jIFwKIAl0YXJnZXQuYyBzcGxheS10cmVlLmMgbGliZ29tcC1wbHVnaW4uYyBvYWNjLXBhcmFs bGVsLmMgb2FjYy1ob3N0LmMgXAogCW9hY2MtaW5pdC5jIG9hY2MtbWVtLmMgb2FjYy1hc3luYy5j IG9hY2MtcGx1Z2luLmMgb2FjYy1jdWRhLmMgXAogCXByaW9yaXR5X3F1ZXVlLmMgYWZmaW5pdHkt Zm10LmMgdGVhbXMuYyBhbGxvY2F0b3IuYyBvYWNjLXByb2ZpbGluZy5jIFwKLQlvYWNjLXRhcmdl dC5jCisJb2FjYy10YXJnZXQuYyBvbXBkLXN1cHBvcnQuYwogCitsaWJnb21wZF9sYV9TT1VSQ0VT ID0gb21wZC1pbml0LmMgb21wZC1oZWxwZXIuYyBvbXBkLWljdi5jCiBpbmNsdWRlICQodG9wX3Ny Y2RpcikvcGx1Z2luL01ha2VmcmFnLmFtCiAKIGlmIFVTRV9GT1JUUkFOCkBAIC03NSw3ICsxMDIs NyBAQCBsaWJnb21wX2xhX1NPVVJDRVMgKz0gb3BlbmFjYy5mOTAKIGVuZGlmCiAKIG5vZGlzdF9u b2luc3RfSEVBREVSUyA9IGxpYmdvbXBfZi5oCi1ub2Rpc3RfbGlic3ViaW5jbHVkZV9IRUFERVJT ID0gb21wLmggb3BlbmFjYy5oIGFjY19wcm9mLmgKK25vZGlzdF9saWJzdWJpbmNsdWRlX0hFQURF UlMgPSBvbXAuaCBvcGVuYWNjLmggYWNjX3Byb2YuaCBvbXAtdG9vbHMuaCBvbXBkLXR5cGVzLmgK IGlmIFVTRV9GT1JUUkFOCiBub2Rpc3RfZmluY2x1ZGVfSEVBREVSUyA9IG9tcF9saWIuaCBvbXBf bGliLmY5MCBvbXBfbGliLm1vZCBvbXBfbGliX2tpbmRzLm1vZCBcCiAJb3BlbmFjY19saWIuaCBv cGVuYWNjLmY5MCBvcGVuYWNjLm1vZCBvcGVuYWNjX2tpbmRzLm1vZApkaWZmIC0tZ2l0IGEvbGli Z29tcC9NYWtlZmlsZS5pbiBiL2xpYmdvbXAvTWFrZWZpbGUuaW4KaW5kZXggMjJjYjIxMzZhMDgu LmFmZWI5NjRiMDFmIDEwMDY0NAotLS0gYS9saWJnb21wL01ha2VmaWxlLmluCisrKyBiL2xpYmdv bXAvTWFrZWZpbGUuaW4KQEAgLTE2LDcgKzE2LDcgQEAKIAogIyBQbHVnaW5zIGZvciBvZmZsb2Fk IGV4ZWN1dGlvbiwgTWFrZWZpbGUuYW0gZnJhZ21lbnQuCiAjCi0jIENvcHlyaWdodCAoQykgMjAx NC0yMDIxIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyBDb3B5cmlnaHQgKEMpIDIw MTQtMjAyMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICMKICMgQ29udHJpYnV0ZWQg YnkgTWVudG9yIEVtYmVkZGVkLgogIwpAQCAtMTQ4LDcgKzE0OCw3IEBAIGFtX19DT05GSUdfRElT VENMRUFOX0ZJTEVTID0gY29uZmlnLnN0YXR1cyBjb25maWcuY2FjaGUgY29uZmlnLmxvZyBcCiBt a2luc3RhbGxkaXJzID0gJChTSEVMTCkgJCh0b3Bfc3JjZGlyKS8uLi9ta2luc3RhbGxkaXJzCiBD T05GSUdfSEVBREVSID0gY29uZmlnLmgKIENPTkZJR19DTEVBTl9GSUxFUyA9IG9tcC5oIG9tcF9s aWIuaCBvbXBfbGliLmY5MCBsaWJnb21wX2YuaCBcCi0JbGliZ29tcC5zcGVjCisJb21wLXRvb2xz Lmggb21wZC10eXBlcy5oIGxpYmdvbXAuc3BlYwogQ09ORklHX0NMRUFOX1ZQQVRIX0ZJTEVTID0K IGFtX192cGF0aF9hZGpfc2V0dXAgPSBzcmNkaXJzdHJpcD1gZWNobyAiJChzcmNkaXIpIiB8IHNl ZCAnc3wufC58ZydgOwogYW1fX3ZwYXRoX2FkaiA9IGNhc2UgJCRwIGluIFwKQEAgLTIyMCw4ICsy MjAsMTEgQEAgYW1fbGliZ29tcF9sYV9PQkpFQ1RTID0gYWxsb2MubG8gYXRvbWljLmxvIGJhcnJp ZXIubG8gY3JpdGljYWwubG8gXAogCW9hY2MtcGFyYWxsZWwubG8gb2FjYy1ob3N0LmxvIG9hY2Mt aW5pdC5sbyBvYWNjLW1lbS5sbyBcCiAJb2FjYy1hc3luYy5sbyBvYWNjLXBsdWdpbi5sbyBvYWNj LWN1ZGEubG8gcHJpb3JpdHlfcXVldWUubG8gXAogCWFmZmluaXR5LWZtdC5sbyB0ZWFtcy5sbyBh bGxvY2F0b3IubG8gb2FjYy1wcm9maWxpbmcubG8gXAotCW9hY2MtdGFyZ2V0LmxvICQoYW1fX29i amVjdHNfMSkKKwlvYWNjLXRhcmdldC5sbyBvbXBkLXN1cHBvcnQubG8gJChhbV9fb2JqZWN0c18x KQogbGliZ29tcF9sYV9PQkpFQ1RTID0gJChhbV9saWJnb21wX2xhX09CSkVDVFMpCitsaWJnb21w ZF9sYV9MSUJBREQgPQorYW1fbGliZ29tcGRfbGFfT0JKRUNUUyA9IG9tcGQtaW5pdC5sbyBvbXBk LWhlbHBlci5sbyBvbXBkLWljdi5sbworbGliZ29tcGRfbGFfT0JKRUNUUyA9ICQoYW1fbGliZ29t cGRfbGFfT0JKRUNUUykKIEFNX1ZfUCA9ICQoYW1fX3ZfUF9AQU1fVkApCiBhbV9fdl9QXyA9ICQo YW1fX3ZfUF9AQU1fREVGQVVMVF9WQCkKIGFtX192X1BfMCA9IGZhbHNlCkBAIC0yNjksNyArMjcy LDggQEAgYW1fX3ZfRkNMRF8gPSAkKGFtX192X0ZDTERfQEFNX0RFRkFVTFRfVkApCiBhbV9fdl9G Q0xEXzAgPSBAZWNobyAiICBGQ0xEICAgICIgJEA7CiBhbV9fdl9GQ0xEXzEgPSAKIFNPVVJDRVMg PSAkKGxpYmdvbXBfcGx1Z2luX2djbl9sYV9TT1VSQ0VTKSBcCi0JJChsaWJnb21wX3BsdWdpbl9u dnB0eF9sYV9TT1VSQ0VTKSAkKGxpYmdvbXBfbGFfU09VUkNFUykKKwkkKGxpYmdvbXBfcGx1Z2lu X252cHR4X2xhX1NPVVJDRVMpICQobGliZ29tcF9sYV9TT1VSQ0VTKSBcCisJJChsaWJnb21wZF9s YV9TT1VSQ0VTKQogQU1fVl9EVklQUyA9ICQoYW1fX3ZfRFZJUFNfQEFNX1ZAKQogYW1fX3ZfRFZJ UFNfID0gJChhbV9fdl9EVklQU19AQU1fREVGQVVMVF9WQCkKIGFtX192X0RWSVBTXzAgPSBAZWNo byAiICBEVklQUyAgICIgJEA7CkBAIC01MzMsNyArNTM3LDggQEAgbGlic3ViaW5jbHVkZWRpciA9 ICQobGliZGlyKS9nY2MvJCh0YXJnZXRfYWxpYXMpLyQoZ2NjX3ZlcnNpb24pL2luY2x1ZGUKIEFN X0NQUEZMQUdTID0gJChhZGRwcmVmaXggLUksICQoc2VhcmNoX3BhdGgpKQogQU1fQ0ZMQUdTID0g JChYQ0ZMQUdTKQogQU1fTERGTEFHUyA9ICQoWExERkxBR1MpICQoU0VDVElPTl9MREZMQUdTKSAk KE9QVF9MREZMQUdTKQotdG9vbGV4ZWNsaWJfTFRMSUJSQVJJRVMgPSBsaWJnb21wLmxhICQoYW1f X2FwcGVuZF8xKSAkKGFtX19hcHBlbmRfMikKK3Rvb2xleGVjbGliX0xUTElCUkFSSUVTID0gbGli Z29tcC5sYSBsaWJnb21wZC5sYSAkKGFtX19hcHBlbmRfMSkgXAorCSQoYW1fX2FwcGVuZF8yKQog bm9kaXN0X3Rvb2xleGVjbGliX0hFQURFUlMgPSBsaWJnb21wLnNwZWMKIAogIyAtV2MgaXMgb25s eSBhIGxpYnRvb2wgb3B0aW9uLgpAQCAtNTQyLDE1ICs1NDcsMjcgQEAgbm9kaXN0X3Rvb2xleGVj bGliX0hFQURFUlMgPSBsaWJnb21wLnNwZWMKIEBMSUJHT01QX0JVSUxEX1ZFUlNJT05FRF9TSExJ Ql9GQUxTRUBsaWJnb21wX3ZlcnNpb25fc2NyaXB0ID0gCiBATElCR09NUF9CVUlMRF9WRVJTSU9O RURfU0hMSUJfR05VX1RSVUVAQExJQkdPTVBfQlVJTERfVkVSU0lPTkVEX1NITElCX1RSVUVAbGli Z29tcF92ZXJzaW9uX3NjcmlwdCA9IC1XbCwtLXZlcnNpb24tc2NyaXB0LGxpYmdvbXAudmVyCiBA TElCR09NUF9CVUlMRF9WRVJTSU9ORURfU0hMSUJfU1VOX1RSVUVAQExJQkdPTVBfQlVJTERfVkVS U0lPTkVEX1NITElCX1RSVUVAbGliZ29tcF92ZXJzaW9uX3NjcmlwdCA9IC1XbCwtTSxsaWJnb21w LnZlci1zdW4KK0BMSUJHT01QX0JVSUxEX1ZFUlNJT05FRF9TSExJQl9GQUxTRUBsaWJnb21wZF92 ZXJzaW9uX3NjcmlwdCA9IAorQExJQkdPTVBfQlVJTERfVkVSU0lPTkVEX1NITElCX0dOVV9UUlVF QEBMSUJHT01QX0JVSUxEX1ZFUlNJT05FRF9TSExJQl9UUlVFQGxpYmdvbXBkX3ZlcnNpb25fc2Ny aXB0ID0gLVdsLC0tdmVyc2lvbi1zY3JpcHQsbGliZ29tcGQudmVyCitATElCR09NUF9CVUlMRF9W RVJTSU9ORURfU0hMSUJfU1VOX1RSVUVAQExJQkdPTVBfQlVJTERfVkVSU0lPTkVEX1NITElCX1RS VUVAbGliZ29tcGRfdmVyc2lvbl9zY3JpcHQgPSAtV2wsLU0sbGliZ29tcGQudmVyLXN1bgogQExJ QkdPTVBfQlVJTERfVkVSU0lPTkVEX1NITElCX0ZBTFNFQGxpYmdvbXBfdmVyc2lvbl9kZXAgPSAK IEBMSUJHT01QX0JVSUxEX1ZFUlNJT05FRF9TSExJQl9HTlVfVFJVRUBATElCR09NUF9CVUlMRF9W RVJTSU9ORURfU0hMSUJfVFJVRUBsaWJnb21wX3ZlcnNpb25fZGVwID0gbGliZ29tcC52ZXIKIEBM SUJHT01QX0JVSUxEX1ZFUlNJT05FRF9TSExJQl9TVU5fVFJVRUBATElCR09NUF9CVUlMRF9WRVJT SU9ORURfU0hMSUJfVFJVRUBsaWJnb21wX3ZlcnNpb25fZGVwID0gbGliZ29tcC52ZXItc3VuCitA TElCR09NUF9CVUlMRF9WRVJTSU9ORURfU0hMSUJfRkFMU0VAbGliZ29tcGRfdmVyc2lvbl9kZXAg PSAKK0BMSUJHT01QX0JVSUxEX1ZFUlNJT05FRF9TSExJQl9HTlVfVFJVRUBATElCR09NUF9CVUlM RF9WRVJTSU9ORURfU0hMSUJfVFJVRUBsaWJnb21wZF92ZXJzaW9uX2RlcCA9IGxpYmdvbXBkLnZl cgorQExJQkdPTVBfQlVJTERfVkVSU0lPTkVEX1NITElCX1NVTl9UUlVFQEBMSUJHT01QX0JVSUxE X1ZFUlNJT05FRF9TSExJQl9UUlVFQGxpYmdvbXBkX3ZlcnNpb25fZGVwID0gbGliZ29tcGQudmVy LXN1bgogbGliZ29tcF92ZXJzaW9uX2luZm8gPSAtdmVyc2lvbi1pbmZvICQobGlidG9vbF9WRVJT SU9OKQorbGliZ29tcGRfdmVyc2lvbl9pbmZvID0gLXZlcnNpb24taW5mbyAkKGxpYnRvb2xfVkVS U0lPTikKIGxpYmdvbXBfbGFfTERGTEFHUyA9ICQobGliZ29tcF92ZXJzaW9uX2luZm8pICQobGli Z29tcF92ZXJzaW9uX3NjcmlwdCkgXAogICAgICAgICAkKGx0X2hvc3RfZmxhZ3MpCiAKK2xpYmdv bXBkX2xhX0xERkxBR1MgPSAkKGxpYmdvbXBkX3ZlcnNpb25faW5mbykgJChsaWJnb21wZF92ZXJz aW9uX3NjcmlwdCkgXAorCQkJCSQobHRfaG9zdF9mbGFncykKKwogbGliZ29tcF9sYV9ERVBFTkRF TkNJRVMgPSAkKGxpYmdvbXBfdmVyc2lvbl9kZXApCitsaWJnb21wZF9sYV9ERVBFTkRFTkNJRVMg PSAkKGxpYmdvbXBkX3ZlcnNpb25fZGVwKQogbGliZ29tcF9sYV9MSU5LID0gJChMSU5LKSAkKGxp YmdvbXBfbGFfTERGTEFHUykKK2xpYmdvbXBkX2xhX0xJTksgPSAkKExJTkspICQobGliZ29tcGRf bGFfTERGTEFHUykKIGxpYmdvbXBfbGFfU09VUkNFUyA9IGFsbG9jLmMgYXRvbWljLmMgYmFycmll ci5jIGNyaXRpY2FsLmMgZW52LmMgXAogCWVycm9yLmMgaWN2LmMgaWN2LWRldmljZS5jIGl0ZXIu YyBpdGVyX3VsbC5jIGxvb3AuYyBsb29wX3VsbC5jIFwKIAlvcmRlcmVkLmMgcGFyYWxsZWwuYyBz Y29wZS5jIHNlY3Rpb25zLmMgc2luZ2xlLmMgdGFzay5jIHRlYW0uYyBcCkBAIC01NTksNyArNTc2 LDggQEAgbGliZ29tcF9sYV9TT1VSQ0VTID0gYWxsb2MuYyBhdG9taWMuYyBiYXJyaWVyLmMgY3Jp dGljYWwuYyBlbnYuYyBcCiAJb2FjYy1wYXJhbGxlbC5jIG9hY2MtaG9zdC5jIG9hY2MtaW5pdC5j IG9hY2MtbWVtLmMgXAogCW9hY2MtYXN5bmMuYyBvYWNjLXBsdWdpbi5jIG9hY2MtY3VkYS5jIHBy aW9yaXR5X3F1ZXVlLmMgXAogCWFmZmluaXR5LWZtdC5jIHRlYW1zLmMgYWxsb2NhdG9yLmMgb2Fj Yy1wcm9maWxpbmcuYyBcCi0Jb2FjYy10YXJnZXQuYyAkKGFtX19hcHBlbmRfMykKKwlvYWNjLXRh cmdldC5jIG9tcGQtc3VwcG9ydC5jICQoYW1fX2FwcGVuZF8zKQorbGliZ29tcGRfbGFfU09VUkNF UyA9IG9tcGQtaW5pdC5jIG9tcGQtaGVscGVyLmMgb21wZC1pY3YuYwogCiAjIE52aWRpYSBQVFgg T3BlbkFDQyBwbHVnaW4uCiBAUExVR0lOX05WUFRYX1RSVUVAbGliZ29tcF9wbHVnaW5fbnZwdHhf dmVyc2lvbl9pbmZvID0gLXZlcnNpb24taW5mbyAkKGxpYnRvb2xfVkVSU0lPTikKQEAgLTU4Myw3 ICs2MDEsNyBAQCBsaWJnb21wX2xhX1NPVVJDRVMgPSBhbGxvYy5jIGF0b21pYy5jIGJhcnJpZXIu YyBjcml0aWNhbC5jIGVudi5jIFwKIEBQTFVHSU5fR0NOX1RSVUVAbGliZ29tcF9wbHVnaW5fZ2Nu X2xhX0xJQkFERCA9IGxpYmdvbXAubGEgJChQTFVHSU5fR0NOX0xJQlMpCiBAUExVR0lOX0dDTl9U UlVFQGxpYmdvbXBfcGx1Z2luX2djbl9sYV9MSUJUT09MRkxBR1MgPSAtLXRhZz1kaXNhYmxlLXN0 YXRpYwogbm9kaXN0X25vaW5zdF9IRUFERVJTID0gbGliZ29tcF9mLmgKLW5vZGlzdF9saWJzdWJp bmNsdWRlX0hFQURFUlMgPSBvbXAuaCBvcGVuYWNjLmggYWNjX3Byb2YuaAorbm9kaXN0X2xpYnN1 YmluY2x1ZGVfSEVBREVSUyA9IG9tcC5oIG9wZW5hY2MuaCBhY2NfcHJvZi5oIG9tcC10b29scy5o IG9tcGQtdHlwZXMuaAogQFVTRV9GT1JUUkFOX1RSVUVAbm9kaXN0X2ZpbmNsdWRlX0hFQURFUlMg PSBvbXBfbGliLmggb21wX2xpYi5mOTAgb21wX2xpYi5tb2Qgb21wX2xpYl9raW5kcy5tb2QgXAog QFVTRV9GT1JUUkFOX1RSVUVACW9wZW5hY2NfbGliLmggb3BlbmFjYy5mOTAgb3BlbmFjYy5tb2Qg b3BlbmFjY19raW5kcy5tb2QKIApAQCAtNjgwLDYgKzY5OCwxMCBAQCBvbXBfbGliLmY5MDogJCh0 b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMgJChzcmNkaXIpL29tcF9saWIuZjkwLmluCiAJY2Qg JCh0b3BfYnVpbGRkaXIpICYmICQoU0hFTEwpIC4vY29uZmlnLnN0YXR1cyAkQAogbGliZ29tcF9m Lmg6ICQodG9wX2J1aWxkZGlyKS9jb25maWcuc3RhdHVzICQoc3JjZGlyKS9saWJnb21wX2YuaC5p bgogCWNkICQodG9wX2J1aWxkZGlyKSAmJiAkKFNIRUxMKSAuL2NvbmZpZy5zdGF0dXMgJEAKK29t cC10b29scy5oOiAkKHRvcF9idWlsZGRpcikvY29uZmlnLnN0YXR1cyAkKHNyY2Rpcikvb21wLXRv b2xzLmguaW4KKwljZCAkKHRvcF9idWlsZGRpcikgJiYgJChTSEVMTCkgLi9jb25maWcuc3RhdHVz ICRACitvbXBkLXR5cGVzLmg6ICQodG9wX2J1aWxkZGlyKS9jb25maWcuc3RhdHVzICQoc3JjZGly KS9vbXBkLXR5cGVzLmguaW4KKwljZCAkKHRvcF9idWlsZGRpcikgJiYgJChTSEVMTCkgLi9jb25m aWcuc3RhdHVzICRACiBsaWJnb21wLnNwZWM6ICQodG9wX2J1aWxkZGlyKS9jb25maWcuc3RhdHVz ICQoc3JjZGlyKS9saWJnb21wLnNwZWMuaW4KIAljZCAkKHRvcF9idWlsZGRpcikgJiYgJChTSEVM TCkgLi9jb25maWcuc3RhdHVzICRACiAKQEAgLTcyNyw2ICs3NDksOSBAQCBsaWJnb21wLXBsdWdp bi1udnB0eC5sYTogJChsaWJnb21wX3BsdWdpbl9udnB0eF9sYV9PQkpFQ1RTKSAkKGxpYmdvbXBf cGx1Z2luX252cAogbGliZ29tcC5sYTogJChsaWJnb21wX2xhX09CSkVDVFMpICQobGliZ29tcF9s YV9ERVBFTkRFTkNJRVMpICQoRVhUUkFfbGliZ29tcF9sYV9ERVBFTkRFTkNJRVMpIAogCSQoQU1f Vl9HRU4pJChsaWJnb21wX2xhX0xJTkspIC1ycGF0aCAkKHRvb2xleGVjbGliZGlyKSAkKGxpYmdv bXBfbGFfT0JKRUNUUykgJChsaWJnb21wX2xhX0xJQkFERCkgJChMSUJTKQogCitsaWJnb21wZC5s YTogJChsaWJnb21wZF9sYV9PQkpFQ1RTKSAkKGxpYmdvbXBkX2xhX0RFUEVOREVOQ0lFUykgJChF WFRSQV9saWJnb21wZF9sYV9ERVBFTkRFTkNJRVMpIAorCSQoQU1fVl9HRU4pJChsaWJnb21wZF9s YV9MSU5LKSAtcnBhdGggJCh0b29sZXhlY2xpYmRpcikgJChsaWJnb21wZF9sYV9PQkpFQ1RTKSAk KGxpYmdvbXBkX2xhX0xJQkFERCkgJChMSUJTKQorCiBtb3N0bHljbGVhbi1jb21waWxlOgogCS1y bSAtZiAqLiQoT0JKRVhUKQogCkBAIC03NjQsNiArNzg5LDEwIEBAIGRpc3RjbGVhbi1jb21waWxl OgogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL29hY2Mt cGx1Z2luLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVv dGVALi8kKERFUERJUikvb2FjYy1wcm9maWxpbmcuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVF QEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9vYWNjLXRhcmdldC5QbG9AYW1f X3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIp L29tcGQtaGVscGVyLlBsb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBh bV9fcXVvdGVALi8kKERFUERJUikvb21wZC1pY3YuUGxvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVF QEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9vbXBkLWluaXQuUGxvQGFtX19x dW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9v bXBkLXN1cHBvcnQuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFt X19xdW90ZUAuLyQoREVQRElSKS9vcmRlcmVkLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBA YW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvcGFyYWxsZWwuUGxvQGFtX19xdW90 ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9wcmlv cml0eV9xdWV1ZS5QbG9AYW1fX3F1b3RlQApAQCAtMTM2Niw2ICsxMzk1LDEwIEBAIHZwYXRoICUg JChzdHJpcCAkKHNlYXJjaF9wYXRoKSkKIEBMSUJHT01QX0JVSUxEX1ZFUlNJT05FRF9TSExJQl9U UlVFQGxpYmdvbXAudmVyOiAkKHRvcF9zcmNkaXIpL2xpYmdvbXAubWFwCiBATElCR09NUF9CVUlM RF9WRVJTSU9ORURfU0hMSUJfVFJVRUAJJChFR1JFUCkgLXYgJyMoI3wgfCQkKScgJDwgfCBcCiBA TElCR09NUF9CVUlMRF9WRVJTSU9ORURfU0hMSUJfVFJVRUAJICAkKFBSRVBST0NFU1MpIC1QIC1p bmNsdWRlIGNvbmZpZy5oIC0gPiAkQCB8fCAocm0gLWYgJEAgOyBleGl0IDEpCisKK0BMSUJHT01Q X0JVSUxEX1ZFUlNJT05FRF9TSExJQl9UUlVFQGxpYmdvbXBkLnZlcjogJCh0b3Bfc3JjZGlyKS9s aWJnb21wZC5tYXAKK0BMSUJHT01QX0JVSUxEX1ZFUlNJT05FRF9TSExJQl9UUlVFQAkkKEVHUkVQ KSAtdiAnIygjfCB8JCQpJyAkPCB8IFwKK0BMSUJHT01QX0JVSUxEX1ZFUlNJT05FRF9TSExJQl9U UlVFQAkJJChQUkVQUk9DRVNTKSAtUCAtaW5jbHVkZSBjb25maWcuaCAtID4gJEAgfHwgKHJtIC1m ICRAIDsgZXhpdCAxKQogQExJQkdPTVBfQlVJTERfVkVSU0lPTkVEX1NITElCX1NVTl9UUlVFQEBM SUJHT01QX0JVSUxEX1ZFUlNJT05FRF9TSExJQl9UUlVFQGxpYmdvbXAudmVyLXN1biA6IGxpYmdv bXAudmVyIFwKIEBMSUJHT01QX0JVSUxEX1ZFUlNJT05FRF9TSExJQl9TVU5fVFJVRUBATElCR09N UF9CVUlMRF9WRVJTSU9ORURfU0hMSUJfVFJVRUAJCSQodG9wX3NyY2RpcikvLi4vY29udHJpYi9t YWtlX3N1bnZlci5wbCBcCiBATElCR09NUF9CVUlMRF9WRVJTSU9ORURfU0hMSUJfU1VOX1RSVUVA QExJQkdPTVBfQlVJTERfVkVSU0lPTkVEX1NITElCX1RSVUVACQkkKGxpYmdvbXBfbGFfT0JKRUNU UykgJChsaWJnb21wX2xhX0xJQkFERCkKQEAgLTEzNzYsNiArMTQwOSwxNiBAQCB2cGF0aCAlICQo c3RyaXAgJChzZWFyY2hfcGF0aCkpCiBATElCR09NUF9CVUlMRF9WRVJTSU9ORURfU0hMSUJfU1VO X1RSVUVAQExJQkdPTVBfQlVJTERfVkVSU0lPTkVEX1NITElCX1RSVUVACSAgICBzZWQgJ3MsL1wo W14vLl0qXClcLmxhLC8ubGlicy9cMS5hLGcnYCBcCiBATElCR09NUF9CVUlMRF9WRVJTSU9ORURf U0hMSUJfU1VOX1RSVUVAQExJQkdPTVBfQlVJTERfVkVSU0lPTkVEX1NITElCX1RSVUVACSA+ICRA IHx8IChybSAtZiAkQCA7IGV4aXQgMSkKIAorQExJQkdPTVBfQlVJTERfVkVSU0lPTkVEX1NITElC X1NVTl9UUlVFQEBMSUJHT01QX0JVSUxEX1ZFUlNJT05FRF9TSExJQl9UUlVFQGxpYmdvbXBkLnZl ci1zdW4gOiBsaWJnb21wZC52ZXIgXAorQExJQkdPTVBfQlVJTERfVkVSU0lPTkVEX1NITElCX1NV Tl9UUlVFQEBMSUJHT01QX0JVSUxEX1ZFUlNJT05FRF9TSExJQl9UUlVFQAkJJCh0b3Bfc3JjZGly KS8uLi9jb250cmliL21ha2Vfc3VudmVyLnBsIFwKK0BMSUJHT01QX0JVSUxEX1ZFUlNJT05FRF9T SExJQl9TVU5fVFJVRUBATElCR09NUF9CVUlMRF9WRVJTSU9ORURfU0hMSUJfVFJVRUAJCSQobGli Z29tcGRfbGFfT0JKRUNUUykgJChsaWJnb21wZF9sYV9MSUJBREQpCitATElCR09NUF9CVUlMRF9W RVJTSU9ORURfU0hMSUJfU1VOX1RSVUVAQExJQkdPTVBfQlVJTERfVkVSU0lPTkVEX1NITElCX1RS VUVACXBlcmwgJCh0b3Bfc3JjZGlyKS8uLi9jb250cmliL21ha2Vfc3VudmVyLnBsIFwKK0BMSUJH T01QX0JVSUxEX1ZFUlNJT05FRF9TSExJQl9TVU5fVFJVRUBATElCR09NUF9CVUlMRF9WRVJTSU9O RURfU0hMSUJfVFJVRUAJCWxpYmdvbXBkLnZlciBcCitATElCR09NUF9CVUlMRF9WRVJTSU9ORURf U0hMSUJfU1VOX1RSVUVAQExJQkdPTVBfQlVJTERfVkVSU0lPTkVEX1NITElCX1RSVUVACQkkKGxp YmdvbXBkX2xhX09CSkVDVFM6JS5sbz0ubGlicy8lLm8pIFwKK0BMSUJHT01QX0JVSUxEX1ZFUlNJ T05FRF9TSExJQl9TVU5fVFJVRUBATElCR09NUF9CVUlMRF9WRVJTSU9ORURfU0hMSUJfVFJVRUAJ CWBlY2hvICQobGliZ29tcGRfbGFfTElCQUREKSB8IFwKK0BMSUJHT01QX0JVSUxEX1ZFUlNJT05F RF9TSExJQl9TVU5fVFJVRUBATElCR09NUF9CVUlMRF9WRVJTSU9ORURfU0hMSUJfVFJVRUAJCQlz ZWQgJ3MsL1woW14vLl0qXClcLmxhLC8ubGlicy9cMS5hLGcnYCBcCitATElCR09NUF9CVUlMRF9W RVJTSU9ORURfU0hMSUJfU1VOX1RSVUVAQExJQkdPTVBfQlVJTERfVkVSU0lPTkVEX1NITElCX1RS VUVACQk+ICRAIHx8IChybSAtZiAkQCA7IGV4aXQgMSkKKwogb21wX2xpYl9raW5kcy5tb2Q6IG9t cF9saWIubW9kCiAJOgogb3BlbmFjY19raW5kcy5tb2Q6IG9wZW5hY2MubW9kCmRpZmYgLS1naXQg YS9saWJnb21wL2NvbmZpZy9kYXJ3aW4vcGx1Z2luLXN1ZmZpeC5oIGIvbGliZ29tcC9jb25maWcv ZGFyd2luL3BsdWdpbi1zdWZmaXguaAppbmRleCA3YzFhZDMxYzliNC4uNTdmMTI3ZjZkM2UgMTAw NjQ0Ci0tLSBhL2xpYmdvbXAvY29uZmlnL2Rhcndpbi9wbHVnaW4tc3VmZml4LmgKKysrIGIvbGli Z29tcC9jb25maWcvZGFyd2luL3BsdWdpbi1zdWZmaXguaApAQCAtMjMsNCArMjMsNCBAQAogICAg c2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJlc3BlY3RpdmVseS4g IElmIG5vdCwgc2VlCiAgICA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwogCi0j ZGVmaW5lIFNPTkFNRV9TVUZGSVgobikgKCIuIiAjbiAiLmR5bGliIikKKyNkZWZpbmUgU09OQU1F X1NVRkZJWChuKSAiLiIgI24gIi5keWxpYiIKZGlmZiAtLWdpdCBhL2xpYmdvbXAvY29uZmlnL2hw dXgvcGx1Z2luLXN1ZmZpeC5oIGIvbGliZ29tcC9jb25maWcvaHB1eC9wbHVnaW4tc3VmZml4LmgK aW5kZXggYTRjNDhhNDVkZDEuLmNlYWYyYzZlMDU0IDEwMDY0NAotLS0gYS9saWJnb21wL2NvbmZp Zy9ocHV4L3BsdWdpbi1zdWZmaXguaAorKysgYi9saWJnb21wL2NvbmZpZy9ocHV4L3BsdWdpbi1z dWZmaXguaApAQCAtMjMsNCArMjMsNCBAQAogICAgc2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQg Q09QWUlORy5SVU5USU1FIHJlc3BlY3RpdmVseS4gIElmIG5vdCwgc2VlCiAgICA8aHR0cDovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwogCi0jZGVmaW5lIFNPTkFNRV9TVUZGSVgobikgKCIu c2wuIiAjbikKKyNkZWZpbmUgU09OQU1FX1NVRkZJWChuKSAiLnNsLiIgI24KZGlmZiAtLWdpdCBh L2xpYmdvbXAvY29uZmlnL3Bvc2l4L3BsdWdpbi1zdWZmaXguaCBiL2xpYmdvbXAvY29uZmlnL3Bv c2l4L3BsdWdpbi1zdWZmaXguaAppbmRleCBjZjAzZjY0ZjdhMy4uOTk1ZDM0ZjUzZWEgMTAwNjQ0 Ci0tLSBhL2xpYmdvbXAvY29uZmlnL3Bvc2l4L3BsdWdpbi1zdWZmaXguaAorKysgYi9saWJnb21w L2NvbmZpZy9wb3NpeC9wbHVnaW4tc3VmZml4LmgKQEAgLTIzLDQgKzIzLDQgQEAKICAgIHNlZSB0 aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVElNRSByZXNwZWN0aXZlbHkuICBJZiBu b3QsIHNlZQogICAgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KIAotI2RlZmlu ZSBTT05BTUVfU1VGRklYKG4pICgiLnNvLiIgI24pCisjZGVmaW5lIFNPTkFNRV9TVUZGSVgobikg Ii5zby4iICNuCmRpZmYgLS1naXQgYS9saWJnb21wL2NvbmZpZ3VyZSBiL2xpYmdvbXAvY29uZmln dXJlCmluZGV4IGE3M2E2ZDQ0MDAzLi41OTJmMzI5NzRiNiAxMDA3NTUKLS0tIGEvbGliZ29tcC9j b25maWd1cmUKKysrIGIvbGliZ29tcC9jb25maWd1cmUKQEAgLTE3MDY1LDcgKzE3MDY1LDcgQEAg ZmkKIAogCiAKLWFjX2NvbmZpZ19maWxlcz0iJGFjX2NvbmZpZ19maWxlcyBvbXAuaCBvbXBfbGli Lmggb21wX2xpYi5mOTAgbGliZ29tcF9mLmgiCithY19jb25maWdfZmlsZXM9IiRhY19jb25maWdf ZmlsZXMgb21wLmggb21wX2xpYi5oIG9tcF9saWIuZjkwIGxpYmdvbXBfZi5oIG9tcC10b29scy5o IG9tcGQtdHlwZXMuaCIKIAogYWNfY29uZmlnX2ZpbGVzPSIkYWNfY29uZmlnX2ZpbGVzIE1ha2Vm aWxlIHRlc3RzdWl0ZS9NYWtlZmlsZSBsaWJnb21wLnNwZWMiCiAKQEAgLTE4MjE4LDYgKzE4MjE4 LDggQEAgZG8KICAgICAib21wX2xpYi5oIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIG9t cF9saWIuaCIgOzsKICAgICAib21wX2xpYi5mOTAiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklM RVMgb21wX2xpYi5mOTAiIDs7CiAgICAgImxpYmdvbXBfZi5oIikgQ09ORklHX0ZJTEVTPSIkQ09O RklHX0ZJTEVTIGxpYmdvbXBfZi5oIiA7OworICAgICJvbXAtdG9vbHMuaCIpIENPTkZJR19GSUxF Uz0iJENPTkZJR19GSUxFUyBvbXAtdG9vbHMuaCIgOzsKKyAgICAib21wZC10eXBlcy5oIikgQ09O RklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIG9tcGQtdHlwZXMuaCIgOzsKICAgICAiTWFrZWZpbGUi KSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgTWFrZWZpbGUiIDs7CiAgICAgInRlc3RzdWl0 ZS9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyB0ZXN0c3VpdGUvTWFrZWZp bGUiIDs7CiAgICAgImxpYmdvbXAuc3BlYyIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBs aWJnb21wLnNwZWMiIDs7CmRpZmYgLS1naXQgYS9saWJnb21wL2NvbmZpZ3VyZS5hYyBiL2xpYmdv bXAvY29uZmlndXJlLmFjCmluZGV4IGE5YjFmMzk3M2Y3Li5jZDZjM2NjMWE5NiAxMDA2NDQKLS0t IGEvbGliZ29tcC9jb25maWd1cmUuYWMKKysrIGIvbGliZ29tcC9jb25maWd1cmUuYWMKQEAgLTQ3 Miw3ICs0NzIsNyBAQCBDRkxBR1M9IiRzYXZlX0NGTEFHUyIKICMgRGV0ZXJtaW5lIHdoYXQgR0ND IHZlcnNpb24gbnVtYmVyIHRvIHVzZSBpbiBmaWxlc3lzdGVtIHBhdGhzLgogR0NDX0JBU0VfVkVS CiAKLUFDX0NPTkZJR19GSUxFUyhvbXAuaCBvbXBfbGliLmggb21wX2xpYi5mOTAgbGliZ29tcF9m LmgpCitBQ19DT05GSUdfRklMRVMob21wLmggb21wX2xpYi5oIG9tcF9saWIuZjkwIGxpYmdvbXBf Zi5oIG9tcC10b29scy5oIG9tcGQtdHlwZXMuaCkKIEFDX0NPTkZJR19GSUxFUyhNYWtlZmlsZSB0 ZXN0c3VpdGUvTWFrZWZpbGUgbGliZ29tcC5zcGVjKQogQUNfQ09ORklHX0ZJTEVTKFt0ZXN0c3Vp dGUvbGliZ29tcC10ZXN0LXN1cHBvcnQucHQuZXhwOnRlc3RzdWl0ZS9saWJnb21wLXRlc3Qtc3Vw cG9ydC5leHAuaW5dKQogQUNfQ09ORklHX0ZJTEVTKFt0ZXN0c3VpdGUvbGliZ29tcC1zaXRlLWV4 dHJhLmV4cF0pCmRpZmYgLS1naXQgYS9saWJnb21wL2Vudi5jIGIvbGliZ29tcC9lbnYuYwppbmRl eCAxYzRlZTg5NDUxNS4uYzBmMjA1MjM1ZTkgMTAwNjQ0Ci0tLSBhL2xpYmdvbXAvZW52LmMKKysr IGIvbGliZ29tcC9lbnYuYwpAQCAtMzMsNiArMzMsNyBAQAogI2lmbmRlZiBMSUJHT01QX09GRkxP QURFRF9PTkxZCiAjaW5jbHVkZSAibGliZ29tcF9mLmgiCiAjaW5jbHVkZSAib2FjYy1pbnQuaCIK KyNpbmNsdWRlICJvbXBkLXN1cHBvcnQuaCIKICNpbmNsdWRlIDxjdHlwZS5oPgogI2luY2x1ZGUg PHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CkBAIC0xNDgzLDYgKzE0ODQsNyBAQCBpbml0 aWFsaXplX2VudiAodm9pZCkKIAk9IHRocmVhZF9saW1pdF92YXIgPiBJTlRfTUFYID8gVUlOVF9N QVggOiB0aHJlYWRfbGltaXRfdmFyOwogICAgIH0KICAgcGFyc2VfaW50X3NlY3VyZSAoIkdPTVBf REVCVUciLCAmZ29tcF9kZWJ1Z192YXIsIHRydWUpOworICBnb21wZF9sb2FkICgpOwogI2lmbmRl ZiBIQVZFX1NZTkNfQlVJTFRJTlMKICAgZ29tcF9tdXRleF9pbml0ICgmZ29tcF9tYW5hZ2VkX3Ro cmVhZHNfbG9jayk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL2xpYmdvbXAvbGliZ29tcC5tYXAgYi9s aWJnb21wL2xpYmdvbXAubWFwCmluZGV4IDJhYzU4MDk0MTY5Li40NmZlYmEzOTRmNSAxMDA2NDQK LS0tIGEvbGliZ29tcC9saWJnb21wLm1hcAorKysgYi9saWJnb21wL2xpYmdvbXAubWFwCkBAIC0x Myw3ICsxMyw3IEBAIE9NUF8xLjAgewogI2lmZGVmIEhBVkVfU1lNVkVSX1NZTUJPTF9SRU5BTUlO R19SVU5USU1FX1NVUFBPUlQKICAgICAgICAgIyBJZiB0aGUgYXNzZW1ibGVyIHVzZWQgbGFja3Mg dGhlIC5zeW12ZXIgZGlyZWN0aXZlIG9yIHRoZSBsaW5rZXIKIAkjIGRvZXNuJ3Qgc3VwcG9ydCBH TlUgc3ltYm9sIHZlcnNpb25pbmcsIHdlIGhhdmUgdGhlIHNhbWUgc3ltYm9sIGluCi0JIyB0d28g dmVyc2lvbnMsIHdoaWNoIFN1biBsZCBjaG9rZXMgb24uIAorCSMgdHdvIHZlcnNpb25zLCB3aGlj aCBTdW4gbGQgY2hva2VzIG9uLgogCW9tcF9pbml0X2xvY2s7CiAJb21wX2luaXRfbmVzdF9sb2Nr OwogCW9tcF9kZXN0cm95X2xvY2s7CkBAIC0yMjYsNiArMjI2LDE0IEBAIE9NUF81LjEgewogCW9t cF9nZXRfdGVhbXNfdGhyZWFkX2xpbWl0XzsKIH0gT01QXzUuMC4yOwogCitPTVBfNS4wLjMgewor ICBnbG9iYWw6CisJb21wZF9kbGxfbG9jYXRpb25zOworCW9tcGRfZGxsX2xvY2F0aW9uc192YWxp ZDsKKwlvbXBkX2JwX3BhcmFsbGVsX2JlZ2luOworCW9tcGRfYnBfcGFyYWxsZWxfZW5kOworfSBP TVBfNS4wLjI7CisKIEdPTVBfMS4wIHsKICAgZ2xvYmFsOgogCUdPTVBfYXRvbWljX2VuZDsKZGlm ZiAtLWdpdCBhL2xpYmdvbXAvbGliZ29tcGQubWFwIGIvbGliZ29tcC9saWJnb21wZC5tYXAKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmZjMWIyMTljZGRlCi0tLSAvZGV2 L251bGwKKysrIGIvbGliZ29tcC9saWJnb21wZC5tYXAKQEAgLTAsMCArMSwyMSBAQAorT01QRF81 LjEgeworICBnbG9iYWw6CisgICAgb21wZF9pbml0aWFsaXplOworICAgIG9tcGRfZ2V0X2FwaV92 ZXJzaW9uOworICAgIG9tcGRfZ2V0X3ZlcnNpb25fc3RyaW5nOworICAgIG9tcGRfcHJvY2Vzc19p bml0aWFsaXplOworICAgIG9tcGRfZGV2aWNlX2luaXRpYWxpemU7CisgICAgb21wZF9yZWxfYWRk cmVzc19zcGFjZV9oYW5kbGU7CisgICAgb21wZF9maW5hbGl6ZTsKKyAgICBvbXBkX2VudW1lcmF0 ZV9pY3ZzOworICAgIG9tcGRfZ2V0X2ljdl9mcm9tX3Njb3BlOworICAgIG9tcGRfZ2V0X2ljdl9z dHJpbmdfZnJvbV9zY29wZTsKKyAgICBvbXBkX2dldF90aHJlYWRfaGFuZGxlOworICAgIG9tcGRf Z2V0X3RocmVhZF9pbl9wYXJhbGxlbDsKKyAgICBvbXBkX3JlbF90aHJlYWRfaGFuZGxlOworICAg IG9tcGRfdGhyZWFkX2hhbmRsZV9jb21wYXJlOworICAgIG9tcGRfZ2V0X3RocmVhZF9pZDsKKyAg ICBvbXBkX2dldF9kZXZpY2VfZnJvbV90aHJlYWQ7CisgICAgb21wZF9icF90aHJlYWRfYmVnaW47 CisgICAgb21wZF9icF90aHJlYWRfZW5kOworfTsKZGlmZiAtLWdpdCBhL2xpYmdvbXAvb21wLXRv b2xzLmguaW4gYi9saWJnb21wL29tcC10b29scy5oLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwLi4zMWJhYjUxYmFiYgotLS0gL2Rldi9udWxsCisrKyBiL2xpYmdvbXAv b21wLXRvb2xzLmguaW4KQEAgLTAsMCArMSwzMDMgQEAKKy8qIENvcHlyaWdodCAoQykgMjAyMiBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgIENvbnRyaWJ1dGVkIGJ5IE1vaGFtZWQg QXRlZiA8bW9oYW1lZGF0ZWYxNjk4QGdtYWlsLmNvbT4uCisgICBUaGlzIGZpbGUgaXMgcGFydCBv ZiB0aGUgR05VIE9mZmxvYWRpbmcgYW5kIE11bHRpIFByb2Nlc3NpbmcgTGlicmFyeQorICAgKGxp YmdvbXApLgorICAgTGliZ29tcCBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICAgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMywgb3IgKGF0IHlvdXIgb3B0aW9uKQorICAgYW55 IGxhdGVyIHZlcnNpb24uCisgICBMaWJnb21wIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQorICAgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UworICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IKKyAgIG1vcmUgZGV0YWlscy4KKyAgIFVuZGVyIFNlY3Rpb24gNyBvZiBH UEwgdmVyc2lvbiAzLCB5b3UgYXJlIGdyYW50ZWQgYWRkaXRpb25hbAorICAgcGVybWlzc2lvbnMg ZGVzY3JpYmVkIGluIHRoZSBHQ0MgUnVudGltZSBMaWJyYXJ5IEV4Y2VwdGlvbiwgdmVyc2lvbgor ICAgMy4xLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAg IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFuZAorICAgYSBjb3B5IG9mIHRoZSBHQ0MgUnVudGltZSBMaWJyYXJ5IEV4Y2Vw dGlvbiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsKKyAgIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMg YW5kIENPUFlJTkcuUlVOVElNRSByZXNwZWN0aXZlbHkuICBJZiBub3QsIHNlZQorICAgPGh0dHA6 Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKworLyogVGhpcyBmaWxlIGNvbnRhaW5zIGRh dGEgdHlwZXMgYW5kIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyB0aGF0CisgICB0aGF0IGFyZSBkZWZp bmVkIGluIE9NUEQgc3RhbmRhcmQuICAqLworCisjaWZuZGVmIF9PTVBfVE9PTFNfSAorI2RlZmlu ZSBfT01QX1RPT0xTX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRp ZgorCitleHRlcm4gY29uc3QgY2hhciAqKm9tcGRfZGxsX2xvY2F0aW9uczsKKworI2lmZGVmIF9f RUxGX18KKyNkZWZpbmUgb21wZF9kbGxfbG9jYXRpb25zX3ZhbGlkKCkgXAorICBfX2FzbV9fIF9f dm9sYXRpbGVfXyAoIi5nbG9ibCBvbXBkX2RsbF9sb2NhdGlvbnNfdmFsaWRcblx0IiBcCisJCQki b21wZF9kbGxfbG9jYXRpb25zX3ZhbGlkOiIpCisjZWxzZQorZXh0ZXJuIHZvaWQgb21wZF9kbGxf bG9jYXRpb25zX3ZhbGlkICh2b2lkKTsKKyNlbmRpZiAvKiBfX0VMRl9fICovCisKK3R5cGVkZWYg X19VSU5UNjRfVFlQRV9fIG9tcGRfc2l6ZV90OwordHlwZWRlZiBfX1VJTlQ2NF9UWVBFX18gb21w ZF93YWl0X2lkX3Q7CisKK3R5cGVkZWYgX19VSU5UNjRfVFlQRV9fIG9tcGRfYWRkcl90OwordHlw ZWRlZiBfX0lOVDY0X1RZUEVfXyBvbXBkX3dvcmRfdDsKK3R5cGVkZWYgX19VSU5UNjRfVFlQRV9f IG9tcGRfc2VnX3Q7CisKK3R5cGVkZWYgc3RydWN0IG9tcGRfYWRkcmVzc190Cit7CisgIG9tcGRf c2VnX3Qgc2VnbWVudDsKKyAgb21wZF9hZGRyX3QgYWRkcmVzczsKK30gb21wZF9hZGRyZXNzX3Q7 CisKK3R5cGVkZWYgc3RydWN0IG9tcGRfZnJhbWVfaW5mb190Cit7CisgIG9tcGRfYWRkcmVzc190 IGZyYW1lX2FkZHJlc3M7CisgIG9tcGRfd29yZF90IGZyYW1lX2ZsYWc7Cit9IG9tcGRfZnJhbWVf aW5mb190OworCit0eXBlZGVmIF9fVUlOVDY0X1RZUEVfXyBvbXBkX2RldmljZV90OwordHlwZWRl ZiBfX1VJTlQ2NF9UWVBFX18gb21wZF90aHJlYWRfaWRfdDsKKwordHlwZWRlZiBzdHJ1Y3QgX29t cGRfYXNwYWNlX2hhbmRsZSBvbXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3Q7Cit0eXBlZGVmIHN0 cnVjdCBfb21wZF90aHJlYWRfaGFuZGxlIG9tcGRfdGhyZWFkX2hhbmRsZV90OwordHlwZWRlZiBz dHJ1Y3QgX29tcGRfcGFyYWxsZWxfaGFuZGxlIG9tcGRfcGFyYWxsZWxfaGFuZGxlX3Q7Cit0eXBl ZGVmIHN0cnVjdCBfb21wZF90YXNrX2hhbmRsZSBvbXBkX3Rhc2tfaGFuZGxlX3Q7CisKK3R5cGVk ZWYgZW51bSBvbXBkX3Njb3BlX3QKK3sKKyAgb21wZF9zY29wZV9nbG9iYWwgPSAxLAorICBvbXBk X3Njb3BlX2FkZHJlc3Nfc3BhY2UgPSAyLAorICBvbXBkX3Njb3BlX3RocmVhZCA9IDMsCisgIG9t cGRfc2NvcGVfcGFyYWxsZWwgPSA0LAorICBvbXBkX3Njb3BlX2ltcGxpY2l0X3Rhc2sgPSA1LAor ICBvbXBkX3Njb3BlX3Rhc2sgPSA2Cit9IG9tcGRfc2NvcGVfdDsKKwordHlwZWRlZiBfX1VJTlQ2 NF9UWVBFX18gb21wZF9pY3ZfaWRfdDsKKwordHlwZWRlZiBzdHJ1Y3QgX29tcGRfYXNwYWNlX2Nv bnQgb21wZF9hZGRyZXNzX3NwYWNlX2NvbnRleHRfdDsKK3R5cGVkZWYgc3RydWN0IF9vbXBkX3Ro cmVhZF9jb250IG9tcGRfdGhyZWFkX2NvbnRleHRfdDsKKwordHlwZWRlZiBlbnVtIG9tcGRfcmNf dAoreworICBvbXBkX3JjX29rID0gMCwKKyAgb21wZF9yY191bmF2YWlsYWJsZSA9IDEsCisgIG9t cGRfcmNfc3RhbGVfaGFuZGxlID0gMiwKKyAgb21wZF9yY19iYWRfaW5wdXQgPSAzLAorICBvbXBk X3JjX2Vycm9yID0gNCwKKyAgb21wZF9yY191bnN1cHBvcnRlZCA9IDUsCisgIG9tcGRfcmNfbmVl ZHNfc3RhdGVfdHJhY2tpbmcgPSA2LAorICBvbXBkX3JjX2luY29tcGF0aWJsZSA9IDcsCisgIG9t cGRfcmNfZGV2aWNlX3JlYWRfZXJyb3IgPSA4LAorICBvbXBkX3JjX2RldmljZV93cml0ZV9lcnJv ciA9IDksCisgIG9tcGRfcmNfbm9tZW0gPSAxMCwKKyAgb21wZF9yY19pbmNvbXBsZXRlID0gMTEs CisgIG9tcGRfcmNfY2FsbGJhY2tfZXJyb3IgPSAxMgorfSBvbXBkX3JjX3Q7CisKKwordHlwZWRl ZiBzdHJ1Y3Qgb21wZF9kZXZpY2VfdHlwZV9zaXplc190Cit7CisgIF9fVUlOVDhfVFlQRV9fIHNp emVvZl9jaGFyOworICBfX1VJTlQ4X1RZUEVfXyBzaXplb2Zfc2hvcnQ7CisgIF9fVUlOVDhfVFlQ RV9fIHNpemVvZl9pbnQ7CisgIF9fVUlOVDhfVFlQRV9fIHNpemVvZl9sb25nOworICBfX1VJTlQ4 X1RZUEVfXyBzaXplb2ZfbG9uZ19sb25nOworICBfX1VJTlQ4X1RZUEVfXyBzaXplb2ZfcG9pbnRl cjsKK30gb21wZF9kZXZpY2VfdHlwZV9zaXplc190OworCisKK3R5cGVkZWYgb21wZF9yY190ICgq b21wZF9jYWxsYmFja19tZW1vcnlfYWxsb2NfZm5fdCkgKG9tcGRfc2l6ZV90LCB2b2lkICoqKTsK K3R5cGVkZWYgb21wZF9yY190ICgqb21wZF9jYWxsYmFja19tZW1vcnlfZnJlZV9mbl90KSAodm9p ZCAqKTsKKwordHlwZWRlZiBvbXBkX3JjX3QgKCpvbXBkX2NhbGxiYWNrX2dldF90aHJlYWRfY29u dGV4dF9mb3JfdGhyZWFkX2lkX2ZuX3QpCisgIChvbXBkX2FkZHJlc3Nfc3BhY2VfY29udGV4dF90 ICosIG9tcGRfdGhyZWFkX2lkX3QsCisgICBvbXBkX3NpemVfdCwgY29uc3Qgdm9pZCAqLCBvbXBk X3RocmVhZF9jb250ZXh0X3QgKiopOworCisKK3R5cGVkZWYgb21wZF9yY190ICgqb21wZF9jYWxs YmFja19zaXplb2ZfZm5fdCkgKG9tcGRfYWRkcmVzc19zcGFjZV9jb250ZXh0X3QgKiwKKwkJCQkJ CW9tcGRfZGV2aWNlX3R5cGVfc2l6ZXNfdCAqKTsKKworCit0eXBlZGVmIG9tcGRfcmNfdCAoKm9t cGRfY2FsbGJhY2tfc3ltYm9sX2FkZHJfZm5fdCkKKyAgKG9tcGRfYWRkcmVzc19zcGFjZV9jb250 ZXh0X3QgKiwgb21wZF90aHJlYWRfY29udGV4dF90ICosIGNvbnN0IGNoYXIgKiwKKyAgIG9tcGRf YWRkcmVzc190ICosIGNvbnN0IGNoYXIgKik7CisKK3R5cGVkZWYgb21wZF9yY190ICgqb21wZF9j YWxsYmFja19tZW1vcnlfcmVhZF9mbl90KQorICAob21wZF9hZGRyZXNzX3NwYWNlX2NvbnRleHRf dCAqLCBvbXBkX3RocmVhZF9jb250ZXh0X3QgKiwKKyAgIGNvbnN0IG9tcGRfYWRkcmVzc190ICos IG9tcGRfc2l6ZV90IG5ieXRlcywgdm9pZCAqKTsKKworCit0eXBlZGVmIG9tcGRfcmNfdCAoKm9t cGRfY2FsbGJhY2tfbWVtb3J5X3dyaXRlX2ZuX3QpCisgIChvbXBkX2FkZHJlc3Nfc3BhY2VfY29u dGV4dF90ICosIG9tcGRfdGhyZWFkX2NvbnRleHRfdCAqLAorICAgY29uc3Qgb21wZF9hZGRyZXNz X3QgKiwgb21wZF9zaXplX3QsIGNvbnN0IHZvaWQgKik7CisKK3R5cGVkZWYgb21wZF9yY190ICgq b21wZF9jYWxsYmFja19kZXZpY2VfaG9zdF9mbl90KQorICAob21wZF9hZGRyZXNzX3NwYWNlX2Nv bnRleHRfdCAqLCBjb25zdCB2b2lkICosCisgICBvbXBkX3NpemVfdCwgb21wZF9zaXplX3QsIHZv aWQgKik7CisKK3R5cGVkZWYgb21wZF9yY190ICgqb21wZF9jYWxsYmFja19wcmludF9zdHJpbmdf Zm5fdCkgKGNvbnN0IGNoYXIgKiwgaW50KTsKKwordHlwZWRlZiBzdHJ1Y3Qgb21wZF9jYWxsYmFj a3NfdAoreworICBvbXBkX2NhbGxiYWNrX21lbW9yeV9hbGxvY19mbl90IGFsbG9jX21lbW9yeTsK KyAgb21wZF9jYWxsYmFja19tZW1vcnlfZnJlZV9mbl90IGZyZWVfbWVtb3J5OworICBvbXBkX2Nh bGxiYWNrX3ByaW50X3N0cmluZ19mbl90IHByaW50X3N0cmluZzsKKyAgb21wZF9jYWxsYmFja19z aXplb2ZfZm5fdCBzaXplb2ZfdHlwZTsKKyAgb21wZF9jYWxsYmFja19zeW1ib2xfYWRkcl9mbl90 IHN5bWJvbF9hZGRyX2xvb2t1cDsKKyAgb21wZF9jYWxsYmFja19tZW1vcnlfcmVhZF9mbl90IHJl YWRfbWVtb3J5OworICBvbXBkX2NhbGxiYWNrX21lbW9yeV93cml0ZV9mbl90IHdyaXRlX21lbW9y eTsKKyAgb21wZF9jYWxsYmFja19tZW1vcnlfcmVhZF9mbl90IHJlYWRfc3RyaW5nOworICBvbXBk X2NhbGxiYWNrX2RldmljZV9ob3N0X2ZuX3QgZGV2aWNlX3RvX2hvc3Q7CisgIG9tcGRfY2FsbGJh Y2tfZGV2aWNlX2hvc3RfZm5fdCBob3N0X3RvX2RldmljZTsKKyAgb21wZF9jYWxsYmFja19nZXRf dGhyZWFkX2NvbnRleHRfZm9yX3RocmVhZF9pZF9mbl90CisgICAgZ2V0X3RocmVhZF9jb250ZXh0 X2Zvcl90aHJlYWRfaWQ7Cit9IG9tcGRfY2FsbGJhY2tzX3Q7CisKK29tcGRfcmNfdCBvbXBkX2lu aXRpYWxpemUgKG9tcGRfd29yZF90LCBjb25zdCBvbXBkX2NhbGxiYWNrc190ICopOworCitvbXBk X3JjX3Qgb21wZF9nZXRfYXBpX3ZlcnNpb24gKG9tcGRfd29yZF90ICopOworb21wZF9yY190IG9t cGRfZ2V0X3ZlcnNpb25fc3RyaW5nIChjb25zdCBjaGFyICoqKTsKKworb21wZF9yY190IG9tcGRf ZmluYWxpemUgKHZvaWQpOworCitvbXBkX3JjX3Qgb21wZF9wcm9jZXNzX2luaXRpYWxpemUgKG9t cGRfYWRkcmVzc19zcGFjZV9jb250ZXh0X3QgKiwKKwkJCQkgICBvbXBkX2FkZHJlc3Nfc3BhY2Vf aGFuZGxlX3QgKiopOworCitvbXBkX3JjX3Qgb21wZF9kZXZpY2VfaW5pdGlhbGl6ZSAob21wZF9h ZGRyZXNzX3NwYWNlX2hhbmRsZV90ICosCisJCQkJICBvbXBkX2FkZHJlc3Nfc3BhY2VfY29udGV4 dF90ICosIG9tcGRfZGV2aWNlX3QsCisJCQkJICBvbXBkX3NpemVfdCwgdm9pZCAqLAorCQkJCSAg b21wZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90ICoqKTsKKworb21wZF9yY190IG9tcGRfcmVsX2Fk ZHJlc3Nfc3BhY2VfaGFuZGxlIChvbXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3QgKik7CisKK29t cGRfcmNfdCBvbXBkX2dldF9vbXBfdmVyc2lvbiAob21wZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90 ICosIG9tcGRfd29yZF90ICopOworCitvbXBkX3JjX3Qgb21wZF9nZXRfb21wX3ZlcnNpb25fc3Ry aW5nIChvbXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3QgKiwKKwkJCQkgICAgICAgY29uc3QgY2hh ciAqKik7CisKK29tcGRfcmNfdCBvbXBkX2dldF90aHJlYWRfaW5fcGFyYWxsZWwgKG9tcGRfcGFy YWxsZWxfaGFuZGxlX3QgKiwgaW50LAorCQkJCSAgICAgICBvbXBkX3RocmVhZF9oYW5kbGVfdCAq Kik7CisKK29tcGRfcmNfdCBvbXBkX2dldF90aHJlYWRfaGFuZGxlIChvbXBkX2FkZHJlc3Nfc3Bh Y2VfaGFuZGxlX3QgKiwKKwkJCQkgIG9tcGRfdGhyZWFkX2lkX3QsIG9tcGRfc2l6ZV90LGNvbnN0 IHZvaWQgKiwKKwkJCQkgIG9tcGRfdGhyZWFkX2hhbmRsZV90ICoqKTsKKworb21wZF9yY190IG9t cGRfcmVsX3RocmVhZF9oYW5kbGUgKG9tcGRfdGhyZWFkX2hhbmRsZV90ICopOworCitvbXBkX3Jj X3Qgb21wZF90aHJlYWRfaGFuZGxlX2NvbXBhcmUgKG9tcGRfdGhyZWFkX2hhbmRsZV90ICosCisJ CQkJICAgICAgb21wZF90aHJlYWRfaGFuZGxlX3QgKixpbnQgKik7CisKK29tcGRfcmNfdCBvbXBk X2dldF90aHJlYWRfaWQgKG9tcGRfdGhyZWFkX2hhbmRsZV90ICosIG9tcGRfdGhyZWFkX2lkX3Qs CisJCQkgICAgICBvbXBkX3NpemVfdCwgdm9pZCAqKTsKKworb21wZF9yY190IG9tcGRfZ2V0X2N1 cnJfcGFyYWxsZWxfaGFuZGxlIChvbXBkX3RocmVhZF9oYW5kbGVfdCAqLAorCQkJCQkgb21wZF9w YXJhbGxlbF9oYW5kbGVfdCAqKik7CisKK29tcGRfcmNfdCBvbXBkX2dldF9lbmNsb3NpbmdfcGFy YWxsZWxfaGFuZGxlIChvbXBkX3BhcmFsbGVsX2hhbmRsZV90ICosCisJCQkJCSAgICAgIG9tcGRf cGFyYWxsZWxfaGFuZGxlX3QgKiopOworCitvbXBkX3JjX3Qgb21wZF9nZXRfdGFza19wYXJhbGxl bF9oYW5kbGUgKG9tcGRfdGFza19oYW5kbGVfdCAqLAorCQkJCQkgb21wZF9wYXJhbGxlbF9oYW5k bGVfdCAqKik7CisKK29tcGRfcmNfdCBvbXBkX3JlbF9wYXJhbGxlbF9oYW5kbGUgKG9tcGRfcGFy YWxsZWxfaGFuZGxlX3QgKik7CisKK29tcGRfcmNfdCBvbXBkX3BhcmFsbGVsX2hhbmRsZV9jb21w YXJlIChvbXBkX3BhcmFsbGVsX2hhbmRsZV90ICosCisJCQkJCW9tcGRfcGFyYWxsZWxfaGFuZGxl X3QgKiwgaW50ICopOworCitvbXBkX3JjX3Qgb21wZF9nZXRfY3Vycl90YXNrX2hhbmRsZSAob21w ZF90aHJlYWRfaGFuZGxlX3QgKiwKKwkJCQkgICAgIG9tcGRfdGFza19oYW5kbGVfdCAqKik7CisK K29tcGRfcmNfdCBvbXBkX2dldF9nZW5lcmF0aW5nX3Rhc2tfaGFuZGxlIChvbXBkX3Rhc2tfaGFu ZGxlX3QgKiwKKwkJCQkJICAgb21wZF90YXNrX2hhbmRsZV90ICoqKTsKKworb21wZF9yY190IG9t cGRfZ2V0X3NjaGVkdWxpbmdfdGFza19oYW5kbGUgKG9tcGRfdGFza19oYW5kbGVfdCAqLAorCQkJ CQkgICBvbXBkX3Rhc2tfaGFuZGxlX3QgKiopOworCitvbXBkX3JjX3Qgb21wZF9nZXRfdGFza19p bl9wYXJhbGxlbCAob21wZF9wYXJhbGxlbF9oYW5kbGVfdCAqLCBpbnQsCisJCQkJICAgICBvbXBk X3Rhc2tfaGFuZGxlX3QgKiopOworCitvbXBkX3JjX3Qgb21wZF9yZWxfdGFza19oYW5kbGUgKG9t cGRfdGFza19oYW5kbGVfdCAqKTsKKworb21wZF9yY190IG9tcGRfdGFza19oYW5kbGVfY29tcGFy ZSAob21wZF90YXNrX2hhbmRsZV90ICosIG9tcGRfdGFza19oYW5kbGVfdCAqLAorCQkJCSAgICBp bnQgKik7CisKK29tcGRfcmNfdCBvbXBkX2dldF90YXNrX2Z1bmN0aW9uIChvbXBkX3Rhc2tfaGFu ZGxlX3QgKiwgb21wZF9hZGRyZXNzX3QgKik7CisKK29tcGRfcmNfdCBvbXBkX2dldF90YXNrX2Zy YW1lIChvbXBkX3Rhc2tfaGFuZGxlX3QgKiwgb21wZF9mcmFtZV9pbmZvX3QgKiwKKwkJCSAgICAg ICBvbXBkX2ZyYW1lX2luZm9fdCAqKTsKKworb21wZF9yY190IG9tcGRfZW51bWVyYXRlX3N0YXRl cyAob21wZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90ICosIG9tcGRfd29yZF90LAorCQkJCSBvbXBk X3dvcmRfdCAqLCBjb25zdCBjaGFyICoqLCBvbXBkX3dvcmRfdCAqKTsKKworb21wZF9yY190IG9t cGRfZ2V0X3N0YXRlIChvbXBkX3RocmVhZF9oYW5kbGVfdCAqLCBvbXBkX3dvcmRfdCAqLAorCQkJ ICBvbXBkX3dhaXRfaWRfdCAqKTsKKworb21wZF9yY190IG9tcGRfZ2V0X2Rpc3BsYXlfY29udHJv bF92YXJzIChvbXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3QgKiwKKwkJCQkJIGNvbnN0IGNoYXIg KiBjb25zdCAqKik7CisKK29tcGRfcmNfdCBvbXBkX3JlbF9kaXNwbGF5X2NvbnRyb2xfdmFycyAo Y29uc3QgY2hhciAqIGNvbnN0ICoqKTsKKworb21wZF9yY190IG9tcGRfZW51bWVyYXRlX2ljdnMg KG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqLCBvbXBkX2ljdl9pZF90LAorCQkJICAgICAg IG9tcGRfaWN2X2lkX3QgKiwgY29uc3QgY2hhciAqKiwgb21wZF9zY29wZV90ICosCisJCQkgICAg ICAgaW50ICopOworCitvbXBkX3JjX3Qgb21wZF9nZXRfaWN2X2Zyb21fc2NvcGUgKHZvaWQgKiwg b21wZF9zY29wZV90LCBvbXBkX2ljdl9pZF90LAorCQkJCSAgIG9tcGRfd29yZF90ICopOworCitv bXBkX3JjX3Qgb21wZF9nZXRfaWN2X3N0cmluZ19mcm9tX3Njb3BlICh2b2lkICosIG9tcGRfc2Nv cGVfdCwgb21wZF9pY3ZfaWRfdCwKKwkJCQkJICBjb25zdCBjaGFyICoqKTsKKworb21wZF9yY190 IG9tcGRfZ2V0X3Rvb2xfZGF0YSAodm9pZCAqLCBvbXBkX3Njb3BlX3QsIG9tcGRfd29yZF90ICos CisJCQkgICAgICBvbXBkX2FkZHJlc3NfdCAqKTsKKworI2lmZGVmIF9fRUxGX18KKyNkZWZpbmUg b21wZF9icF9wYXJhbGxlbF9iZWdpbigpIFwKKyAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCIuZ2xv Ymwgb21wZF9icF9wYXJhbGxlbF9iZWdpblxuXHQiIFwKKwkJCSJvbXBkX2JwX3BhcmFsbGVsX2Jl Z2luOiIpCisjZGVmaW5lIG9tcGRfYnBfcGFyYWxsZWxfZW5kKCkgXAorICBfX2FzbV9fIF9fdm9s YXRpbGVfXyAoIi5nbG9ibCBvbXBkX2JwX3BhcmFsbGVsX2VuZFxuXHQiIFwKKwkJCSJvbXBkX2Jw X3BhcmFsbGVsX2VuZDoiKQorI2RlZmluZSBvbXBkX2JwX3Rhc2tfYmVnaW4oKSBcCisgIF9fYXNt X18gX192b2xhdGlsZV9fICgiLmdsb2JsIG9tcGRfYnBfdGFza19iZWdpblxuXHQiIFwKKwkJCSJv bXBkX2JwX3Rhc2tfYmVnaW46IikKKyNkZWZpbmUgb21wZF9icF90YXNrX2VuZCgpIFwKKyAgX19h c21fXyBfX3ZvbGF0aWxlX18gKCIuZ2xvYmwgb21wZF9icF90YXNrX2VuZFxuXHQiIFwKKwkJCSJv bXBkX2JwX3Rhc2tfZW5kOiIpCisjZGVmaW5lIG9tcGRfYnBfdGhyZWFkX2JlZ2luKCkgXAorICBf X2FzbV9fIF9fdm9sYXRpbGVfXyAoIi5nbG9ibCBvbXBkX2JwX3RocmVhZF9iZWdpblxuXHQiIFwK KwkJCSJvbXBkX2JwX3RocmVhZF9iZWdpbjoiKQorI2RlZmluZSBvbXBkX2JwX3RocmVhZF9lbmQo KSBcCisgIF9fYXNtX18gX192b2xhdGlsZV9fICgiLmdsb2JsIG9tcGRfYnBfdGhyZWFkX2VuZFxu XHQiIFwKKwkJCSJvbXBkX2JwX3RocmVhZF9lbmQ6IikKKyNkZWZpbmUgb21wZF9icF9kZXZpY2Vf YmVnaW4oKSBcCisgIF9fYXNtX18gX192b2xhdGlsZV9fICgiLmdsb2JsIG9tcGRfYnBfZGV2aWNl X2JlZ2luXG5cdCIgXAorCQkJIm9tcGRfYnBfZGV2aWNlX2VuZDoiKQorI2RlZmluZSBvbXBkX2Jw X2RldmljZV9lbmQoKSBcCisgIF9fYXNtX18gX192b2xhdGlsZV9fICgiLmdsb2JsIG9tcGRfYnBf ZGV2aWNlX2VuZFxuXHQiIFwKKwkJCSJvbXBkX2JwX2RldmljZV9lbmQ6IikKKyNlbHNlCisKK2V4 dGVybiB2b2lkIG9tcGRfYnBfcGFyYWxsZWxfYmVnaW4gKHZvaWQpOworZXh0ZXJuIHZvaWQgb21w ZF9icF9wYXJhbGxlbF9lbmQgKHZvaWQpOworCitleHRlcm4gdm9pZCBvbXBkX2JwX3Rhc2tfYmVn aW4gKHZvaWQpOworZXh0ZXJuIHZvaWQgb21wZF9icF90YXNrX2VuZCAodm9pZCk7CisKK2V4dGVy biB2b2lkIG9tcGRfYnBfdGhyZWFkX2JlZ2luICh2b2lkKTsKK2V4dGVybiB2b2lkIG9tcGRfYnBf dGhyZWFkX2VuZCAodm9pZCk7CisKK2V4dGVybiB2b2lkIG9tcGRfYnBfZGV2aWNlX2JlZ2luICh2 b2lkKTsKK2V4dGVybiB2b2lkIG9tcGRfYnBfZGV2aWNlX2VuZCAodm9pZCk7CisjZW5kaWYgLyog X19FTEZfXyAqLworCisjZGVmaW5lIG9tcGRfc2VnbWVudF9ub25lICAoKG9tcGRfc2VnX3QpIDAp CisjZGVmaW5lIG9tcGRfaWN2X3VuZGVmaW5lZCAoKG9tcGRfaWN2X2lkX3QpIDApCisKKyNpZmRl ZiBfX2NwbHVzcGx1cworfTsgLy8gZXh0ZXJuICJDIgorI2VuZGlmCisKKyNlbmRpZiAvKiBfT01Q X1RPT0xTX0ggKi8KZGlmZiAtLWdpdCBhL2xpYmdvbXAvb21wZC1oZWxwZXIuYyBiL2xpYmdvbXAv b21wZC1oZWxwZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMzhm MDkyM2M3NTYKLS0tIC9kZXYvbnVsbAorKysgYi9saWJnb21wL29tcGQtaGVscGVyLmMKQEAgLTAs MCArMSwyNTIgQEAKKy8qIENvcHlyaWdodCAoQykgMjAyMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KKyAgIENvbnRyaWJ1dGVkIGJ5IE1vaGFtZWQgQXRlZiA8bW9oYW1lZGF0ZWYxNjk4 QGdtYWlsLmNvbT4uCisgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIE9mZmxvYWRpbmcg YW5kIE11bHRpIFByb2Nlc3NpbmcgTGlicmFyeQorICAgKGxpYmdvbXApLgorICAgTGliZ29tcCBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0 CisgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQorICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMywgb3IgKGF0IHlvdXIgb3B0aW9uKQorICAgYW55IGxhdGVyIHZlcnNpb24uCisgICBM aWJnb21wIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws IGJ1dCBXSVRIT1VUIEFOWQorICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUworICAgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IKKyAgIG1v cmUgZGV0YWlscy4KKyAgIFVuZGVyIFNlY3Rpb24gNyBvZiBHUEwgdmVyc2lvbiAzLCB5b3UgYXJl IGdyYW50ZWQgYWRkaXRpb25hbAorICAgcGVybWlzc2lvbnMgZGVzY3JpYmVkIGluIHRoZSBHQ0Mg UnVudGltZSBMaWJyYXJ5IEV4Y2VwdGlvbiwgdmVyc2lvbgorICAgMy4xLCBhcyBwdWJsaXNoZWQg YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFuZAorICAgYSBj b3B5IG9mIHRoZSBHQ0MgUnVudGltZSBMaWJyYXJ5IEV4Y2VwdGlvbiBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbTsKKyAgIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVElNRSBy ZXNwZWN0aXZlbHkuICBJZiBub3QsIHNlZQorICAgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy8+LiAgKi8KKworLyogVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBzb3VyY2UgY29kZSBvZiBmdW5j dGlvbnMKKyAgZGVjbGFyZWQgaW4gb21wZC1oZWxwZXIuaC4gICovCisKKyNpbmNsdWRlICJvbXBk LWhlbHBlci5oIgorCitvbXBkX2RldmljZV90eXBlX3NpemVzX3QgdGFyZ2V0X3NpemVzOworCisv KiBHZXQgZ2xvYmFsIElDVnMuICAqLworb21wZF9yY190Citnb21wZF9nZXRfY2FuY2VsbGF0aW9u IChvbXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3QgKmFoLAorCQkJb21wZF93b3JkX3QgKmNhbmNl bF92YXIpCit7CisgIENIRUNLIChhaCk7CisgIG9tcGRfd29yZF90IGNhbmNlbCA9IDA7CisgIG9t cGRfcmNfdCByZXQ7CisgIG9tcGRfYWRkcmVzc190IHN5bWJvbF9hZGRyID0ge09NUERfU0VHTUVO VF9VTlNQRUNJRklFRCwgMH07CisgIEdFVF9WQUxVRSAoYWgtPmNvbnRleHQsIE5VTEwsICJnb21w X2NhbmNlbF92YXIiLCBjYW5jZWwsIGNhbmNlbCwKKwkgICAgIHRhcmdldF9zaXplcy5zaXplb2Zf Y2hhciwgMSwgcmV0LCBzeW1ib2xfYWRkcik7CisgICpjYW5jZWxfdmFyID0gY2FuY2VsOworICBy ZXR1cm4gcmV0OworfQorCitvbXBkX3JjX3QKK2dvbXBkX2dldF9tYXhfdGFza19wcmlvcml0eSAo b21wZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90ICphaCwKKwkJCSAgICAgb21wZF93b3JkX3QgKnRh c2tfcCkKK3sKKyAgQ0hFQ0sgKGFoKTsKKyAgb21wZF93b3JkX3QgdGFza19wcmlvcml0eSA9IDA7 CisgIG9tcGRfcmNfdCByZXQ7CisgIG9tcGRfYWRkcmVzc190IHN5bWJvbF9hZGRyID0ge09NUERf U0VHTUVOVF9VTlNQRUNJRklFRCwgMH07CisgIEdFVF9WQUxVRSAoYWgtPmNvbnRleHQsIE5VTEws ICJnb21wX21heF90YXNrX3ByaW9yaXR5X3ZhciIsIHRhc2tfcHJpb3JpdHksCisJICAgICB0YXNr X3ByaW9yaXR5LCB0YXJnZXRfc2l6ZXMuc2l6ZW9mX2ludCwgMSwgcmV0LCBzeW1ib2xfYWRkcik7 CisgICp0YXNrX3AgPSB0YXNrX3ByaW9yaXR5OworICByZXR1cm4gcmV0OworfQorCitvbXBkX3Jj X3QKK2dvbXBkX2dldF9zdGFja3NpemUgKG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqYWgs IG9tcGRfd29yZF90ICpzdGFja3NpemUpCit7CisgIENIRUNLIChhaCk7CisgIG9tcGRfd29yZF90 IHN0YWNrX3ZhciA9IDA7CisgIG9tcGRfcmNfdCByZXQ7CisgIG9tcGRfYWRkcmVzc190IHN5bWJv bF9hZGRyID0ge09NUERfU0VHTUVOVF9VTlNQRUNJRklFRCwgMH07CisgIEdFVF9WQUxVRSAoYWgt PmNvbnRleHQsIE5VTEwsICJzdGFja3NpemUiLCBzdGFja192YXIsIHN0YWNrX3ZhciwKKwkgICAg IHRhcmdldF9zaXplcy5zaXplb2ZfbG9uZywgMSwgcmV0LCBzeW1ib2xfYWRkcik7CisgICpzdGFj a3NpemUgPSBzdGFja192YXI7CisgIHJldHVybiByZXQ7Cit9CisKK29tcGRfcmNfdAorZ29tcGRf Z2V0X2RlYnVnIChvbXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3QgKmFoLCBvbXBkX3dvcmRfdCAq ZGVidWdfdmFyKQoreworICBDSEVDSyAoYWgpOworICBvbXBkX3dvcmRfdCBkZWJ1ZyA9IDA7Cisg IG9tcGRfcmNfdCByZXQ7CisgIG9tcGRfYWRkcmVzc190IHN5bWJvbF9hZGRyID0ge09NUERfU0VH TUVOVF9VTlNQRUNJRklFRCwgMH07CisgIEdFVF9WQUxVRSAoYWgtPmNvbnRleHQsIE5VTEwsICJn b21wX2RlYnVnX3ZhciIsIGRlYnVnLCBkZWJ1ZywKKwkgICAgIHRhcmdldF9zaXplcy5zaXplb2Zf aW50LCAxLCByZXQsIHN5bWJvbF9hZGRyKTsKKyAgKmRlYnVnX3ZhciA9IGRlYnVnOworICByZXR1 cm4gcmV0OworfQorCitvbXBkX3JjX3QKK2dvbXBkX2dldF9kaXNwbGF5X2FmZmluaXR5IChvbXBk X2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3QgKmFoLCBvbXBkX3dvcmRfdCAqYWZmKQoreworICBDSEVD SyAoYWgpOworICBvbXBkX3dvcmRfdCBhZmZpbiA9IDA7CisgIG9tcGRfcmNfdCByZXQ7CisgIG9t cGRfYWRkcmVzc190IHN5bWJvbF9hZGRyID0ge09NUERfU0VHTUVOVF9VTlNQRUNJRklFRCwgMH07 CisgIEdFVF9WQUxVRSAoYWgtPmNvbnRleHQsIE5VTEwsICJnb21wX2Rpc3BsYXlfYWZmaW5pdHlf dmFyIiwgYWZmaW4sIGFmZmluLAorCSAgICAgdGFyZ2V0X3NpemVzLnNpemVvZl9jaGFyLCAxLCBy ZXQsIHN5bWJvbF9hZGRyKTsKKyAgKmFmZiA9IGFmZmluOworICByZXR1cm4gcmV0OworfQorCitv bXBkX3JjX3QKK2dvbXBkX2dldF9hZmZpbml0eV9mb3JtYXRfbGVuIChvbXBkX2FkZHJlc3Nfc3Bh Y2VfaGFuZGxlX3QgKmFoLAorCQkJICAgICAgIG9tcGRfd29yZF90ICpsZW4pCit7CisgIENIRUNL IChhaCk7CisgIG9tcGRfd29yZF90IGxlbl92YXIgPSAwOworICBvbXBkX3JjX3QgcmV0OworICBv bXBkX2FkZHJlc3NfdCBzeW1ib2xfYWRkciA9IHtPTVBEX1NFR01FTlRfVU5TUEVDSUZJRUQsIDB9 OworICBHRVRfVkFMVUUgKGFoLT5jb250ZXh0LCBOVUxMLCAiZ29tcF9hZmZpbml0eV9mb3JtYXRf bGVuIiwgbGVuX3ZhciwgbGVuX3ZhciwKKwkgICAgIHRhcmdldF9zaXplcy5zaXplb2ZfaW50LCAx LCByZXQsIHN5bWJvbF9hZGRyKTsKKyAgKmxlbiA9IGxlbl92YXI7CisgIHJldHVybiByZXQ7Cit9 CisKK29tcGRfcmNfdAorZ29tcGRfZ2V0X2FmZmluaXR5X2Zvcm1hdCAob21wZF9hZGRyZXNzX3Nw YWNlX2hhbmRsZV90ICphaCwgY29uc3QgY2hhciAqKnN0cmluZykKK3sKKyAgQ0hFQ0sgKGFoKTsK KyAgb21wZF93b3JkX3QgbGVuID0gMTAwOworICBvbXBkX3JjX3QgcmV0OworICBjaGFyICp0ZW1w X3N0cjsKKyAgb21wZF93b3JkX3QgYWRkcjsKKyAgcmV0ID0gY2FsbGJhY2tzLT5hbGxvY19tZW1v cnkgKGxlbiArIDEsICh2b2lkICoqKSAmdGVtcF9zdHIpOworICB0ZW1wX3N0cltsZW5dID0gJ1ww JzsKKyAgb21wZF9hZGRyZXNzX3Qgc3ltYm9sX2FkZHIgPSB7T01QRF9TRUdNRU5UX1VOU1BFQ0lG SUVELCAwfTsKKyAgcmV0ID0gY2FsbGJhY2tzLT5zeW1ib2xfYWRkcl9sb29rdXAgKGFoLT5jb250 ZXh0LCBOVUxMLAorCQkJCSAgICAgICAiZ29tcF9hZmZpbml0eV9mb3JtYXRfdmFyIiwgJnN5bWJv bF9hZGRyLAorCQkJCSAgICAgICBOVUxMKTsKKyAgQ0hFQ0tfUkVUIChyZXQpOworICByZXQgPSBj YWxsYmFja3MtPnJlYWRfbWVtb3J5IChhaC0+Y29udGV4dCwgTlVMTCwgJnN5bWJvbF9hZGRyLAor CQkJCXRhcmdldF9zaXplcy5zaXplb2ZfcG9pbnRlciwgJmFkZHIpOworICBDSEVDS19SRVQgKHJl dCk7CisgIHN5bWJvbF9hZGRyLmFkZHJlc3MgPSBhZGRyOworICByZXQgPSBjYWxsYmFja3MtPnJl YWRfc3RyaW5nIChhaC0+Y29udGV4dCwgTlVMTCwgJnN5bWJvbF9hZGRyLCBsZW4sCisJCQkJKHZv aWQgKikgdGVtcF9zdHIpOworICBDSEVDS19SRVQgKHJldCk7CisgIHJldCA9IGNhbGxiYWNrcy0+ ZGV2aWNlX3RvX2hvc3QgKGFoLT5jb250ZXh0LCAmdGVtcF9zdHIsCisJCQkJICAgdGFyZ2V0X3Np emVzLnNpemVvZl9jaGFyLCBsZW4sICZ0ZW1wX3N0cik7CisgICpzdHJpbmcgPSB0ZW1wX3N0cjsK KyAgcmV0dXJuIHJldDsKK30KKworb21wZF9yY190Citnb21wZF9nZXRfd2FpdF9wb2xpY3kgKG9t cGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqYWgsCisJCSAgICAgICBvbXBkX3dvcmRfdCAqd2Fp dF9wb2xpY3kpCit7CisgIENIRUNLIChhaCk7CisgIG9tcGRfd29yZF90IHdhaXRfcCA9IDA7Cisg IG9tcGRfcmNfdCByZXQ7CisgIG9tcGRfYWRkcmVzc190IHN5bWJvbF9hZGRyID0ge09NUERfU0VH TUVOVF9VTlNQRUNJRklFRCwgMH07CisgIEdFVF9WQUxVRSAoYWgtPmNvbnRleHQsIE5VTEwsICJ3 YWl0X3BvbGljeSIsIHdhaXRfcCwgd2FpdF9wLAorCSAgICAgdGFyZ2V0X3NpemVzLnNpemVvZl9p bnQsIDEsIHJldCwgc3ltYm9sX2FkZHIpOworICAqd2FpdF9wb2xpY3kgPSB3YWl0X3A7CisgIHJl dHVybiByZXQ7Cit9CisKK29tcGRfcmNfdAorZ29tcGRfZ2V0X251bV90ZWFtcyAob21wZF9hZGRy ZXNzX3NwYWNlX2hhbmRsZV90ICphaCwgb21wZF93b3JkX3QgKm51bV90ZWFtcykKK3sKKyAgQ0hF Q0sgKGFoKTsKKyAgb21wZF93b3JkX3QgbnVtX3QgPSAwOworICBvbXBkX3JjX3QgcmV0OworICBv bXBkX2FkZHJlc3NfdCBzeW1ib2xfYWRkciA9IHtPTVBEX1NFR01FTlRfVU5TUEVDSUZJRUQsIDB9 OworICBHRVRfVkFMVUUgKGFoLT5jb250ZXh0LCBOVUxMLCAiZ29tcF9udW1fdGVhbXNfdmFyIiwg bnVtX3QsIG51bV90LAorCSAgICAgdGFyZ2V0X3NpemVzLnNpemVvZl9pbnQsIDEsIHJldCwgc3lt Ym9sX2FkZHIpOworICAqbnVtX3RlYW1zID0gbnVtX3Q7CisgIHJldHVybiByZXQ7Cit9CisKK29t cGRfcmNfdAorZ29tcGRfZ2V0X3RlYW1zX3RocmVhZF9saW1pdCAob21wZF9hZGRyZXNzX3NwYWNl X2hhbmRsZV90ICphaCwKKwkJCSAgICAgIG9tcGRfd29yZF90ICp0aHJlYWRfbGltaXQpCit7Cisg IENIRUNLIChhaCk7CisgIG9tcGRfd29yZF90IHRocl9saW0gPSAwOworICBvbXBkX3JjX3QgcmV0 OworICBvbXBkX2FkZHJlc3NfdCBzeW1ib2xfYWRkciA9IHtPTVBEX1NFR01FTlRfVU5TUEVDSUZJ RUQsIDB9OworICBHRVRfVkFMVUUgKGFoLT5jb250ZXh0LCBOVUxMLCAiZ29tcF90ZWFtc190aHJl YWRfbGltaXRfdmFyIiwgdGhyX2xpbSwgdGhyX2xpbSwKKwkgICAgIHRhcmdldF9zaXplcy5zaXpl b2ZfaW50LCAxLCByZXQsIHN5bWJvbF9hZGRyKTsKKyAgKnRocmVhZF9saW1pdCA9IHRocl9saW07 CisgIHJldHVybiByZXQ7Cit9CisKK29tcGRfcmNfdAorZ29tcGRfZ2V0X3NwaW5fY291bnQgKG9t cGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqYWgsIG9tcGRfd29yZF90ICpzcGluX2NvdW50KQor eworICBDSEVDSyAoYWgpOworICBvbXBkX3dvcmRfdCBzcGlucyA9IDA7CisgIG9tcGRfcmNfdCBy ZXQ7CisgIG9tcGRfYWRkcmVzc190IHN5bWJvbF9hZGRyID0ge09NUERfU0VHTUVOVF9VTlNQRUNJ RklFRCwgMH07CisgIEdFVF9WQUxVRSAoYWgtPmNvbnRleHQsIE5VTEwsICJnb21wX3NwaW5fY291 bnRfdmFyIiwgc3BpbnMsIHNwaW5zLAorCSAgICAgdGFyZ2V0X3NpemVzLnNpemVvZl9sb25nX2xv bmcsIDEsIHJldCwgc3ltYm9sX2FkZHIpOworICAqc3Bpbl9jb3VudCA9IHNwaW5zOworICByZXR1 cm4gcmV0OworfQorCitvbXBkX3JjX3QKK2dvbXBkX2dldF9hdmFpbGFibGVfY3B1cyAob21wZF9h ZGRyZXNzX3NwYWNlX2hhbmRsZV90ICphaCwgb21wZF93b3JkX3QgKnByb2NzKQoreworICBDSEVD SyAoYWgpOworICBvbXBkX3dvcmRfdCBjcHVzID0gMDsKKyAgb21wZF9yY190IHJldDsKKyAgb21w ZF9hZGRyZXNzX3Qgc3ltYm9sX2FkZHIgPSB7T01QRF9TRUdNRU5UX1VOU1BFQ0lGSUVELCAwfTsK KyAgR0VUX1ZBTFVFIChhaC0+Y29udGV4dCwgTlVMTCwgImdvbXBfYXZhaWxhYmxlX2NwdXMiLCBj cHVzLCBjcHVzLAorCSAgICAgdGFyZ2V0X3NpemVzLnNpemVvZl9sb25nLCAxLCByZXQsIHN5bWJv bF9hZGRyKTsKKyAgKnByb2NzID0gY3B1czsKKyAgcmV0dXJuIHJldDsKK30KKworb21wZF9yY190 Citnb21wZF9nZXRfdGhyb3R0bGVkX3NwaW5fY291bnQgKG9tcGRfYWRkcmVzc19zcGFjZV9oYW5k bGVfdCAqYWgsCisJCQkJb21wZF93b3JkX3QgKnRocm90KQoreworICBDSEVDSyAoYWgpOworICBv bXBkX3dvcmRfdCB0ZW1wID0gMDsKKyAgb21wZF9yY190IHJldDsKKyAgb21wZF9hZGRyZXNzX3Qg c3ltYm9sX2FkZHIgPSB7T01QRF9TRUdNRU5UX1VOU1BFQ0lGSUVELCAwfTsKKyAgR0VUX1ZBTFVF IChhaC0+Y29udGV4dCwgTlVMTCwgImdvbXBfdGhyb3R0bGVkX3NwaW5fY291bnRfdmFyIiwgdGVt cCwgdGVtcCwKKwkgICAgIHRhcmdldF9zaXplcy5zaXplb2ZfbG9uZ19sb25nLCAxLCByZXQsIHN5 bWJvbF9hZGRyKTsKKyAgKnRocm90ID0gdGVtcDsKKyAgcmV0dXJuIHJldDsKK30KKworb21wZF9y Y190Citnb21wZF9nZXRfbWFuYWdlZF90aHJlYWRzIChvbXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxl X3QgKmFoLCBvbXBkX3dvcmRfdCAqbWFuX3RoKQoreworICBDSEVDSyAoYWgpOworICBvbXBkX3dv cmRfdCB0ZW1wID0gMDsKKyAgb21wZF9yY190IHJldDsKKyAgb21wZF9hZGRyZXNzX3Qgc3ltYm9s X2FkZHIgPSB7T01QRF9TRUdNRU5UX1VOU1BFQ0lGSUVELCAwfTsKKyAgR0VUX1ZBTFVFIChhaC0+ Y29udGV4dCwgTlVMTCwgImdvbXBfbWFuYWdlZF90aHJlYWRzIiwgdGVtcCwgdGVtcCwKKwkgICAg IHRhcmdldF9zaXplcy5zaXplb2ZfbG9uZywgMSwgcmV0LCBzeW1ib2xfYWRkcik7CisgICptYW5f dGggPSB0ZW1wOworICByZXR1cm4gcmV0OworfQorCisvKiBFbmQgb2YgZ2xvYmFsIElDVnMgZnVu Y3Rpb25zLiAgKi8KKworb21wZF9yY190CitnZXRfc2l6ZXMgKG9tcGRfYWRkcmVzc19zcGFjZV9j b250ZXh0X3QgKmNvbnRleHQpCit7CisgIGlmIChjb250ZXh0ID09IE5VTEwpCisgICAgcmV0dXJu IG9tcGRfcmNfYmFkX2lucHV0OworCisgIHN0YXRpYyBib29sIGluaXRlZCA9IGZhbHNlOworICBz dGF0aWMgb21wZF9yY190IHJldDsKKworICBpZiAoaW5pdGVkKQorICAgIHJldHVybiByZXQ7CisK KyAgcmV0ID0gY2FsbGJhY2tzLT5zaXplb2ZfdHlwZSAoY29udGV4dCwgJnRhcmdldF9zaXplcyk7 CisgIGlmIChyZXQgIT0gb21wZF9yY19vaykKKyAgICByZXR1cm4gcmV0OworCisgIGluaXRlZCA9 IHRydWU7CisgIHJldHVybiByZXQ7Cit9CmRpZmYgLS1naXQgYS9saWJnb21wL29tcGQtaGVscGVy LmggYi9saWJnb21wL29tcGQtaGVscGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAuLmZhZjRhZWY1MzNjCi0tLSAvZGV2L251bGwKKysrIGIvbGliZ29tcC9vbXBkLWhl bHBlci5oCkBAIC0wLDAgKzEsMTg4IEBACisvKiBDb3B5cmlnaHQgKEMpIDIwMjIgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgICBDb250cmlidXRlZCBieSBNb2hhbWVkIEF0ZWYgPG1v aGFtZWRhdGVmMTY5OEBnbWFpbC5jb20+LgorICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdO VSBPZmZsb2FkaW5nIGFuZCBNdWx0aSBQcm9jZXNzaW5nIExpYnJhcnkKKyAgIChsaWJnb21wKS4K KyAgIExpYmdvbXAgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeSBpdAorICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlciB2ZXJzaW9uIDMsIG9yIChhdCB5b3VyIG9wdGlvbikKKyAgIGFueSBsYXRlciB2 ZXJzaW9uLgorICAgTGliZ29tcCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkKKyAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKKyAgIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yCisgICBtb3JlIGRldGFpbHMuCisgICBVbmRlciBTZWN0aW9uIDcgb2YgR1BMIHZlcnNp b24gMywgeW91IGFyZSBncmFudGVkIGFkZGl0aW9uYWwKKyAgIHBlcm1pc3Npb25zIGRlc2NyaWJl ZCBpbiB0aGUgR0NDIFJ1bnRpbWUgTGlicmFyeSBFeGNlcHRpb24sIHZlcnNpb24KKyAgIDMuMSwg YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgICBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhbmQKKyAgIGEgY29weSBvZiB0aGUgR0NDIFJ1bnRpbWUgTGlicmFyeSBFeGNlcHRpb24gYWxv bmcgd2l0aCB0aGlzIHByb2dyYW07CisgICBzZWUgdGhlIGZpbGVzIENPUFlJTkczIGFuZCBDT1BZ SU5HLlJVTlRJTUUgcmVzcGVjdGl2ZWx5LiAgSWYgbm90LCBzZWUKKyAgIDxodHRwOi8vd3d3Lmdu dS5vcmcvbGljZW5zZXMvPi4gICovCisKKy8qIFRoaXMgZmlsZSBjb250YWlucyBkYXRhIHR5cGVz IGFuZCBkZWNsYXJhdGlvbnMgb2YgZnVuY3Rpb25zIHRoYXQgYXJlIG5vdAorICAgcHJvdmlkZWQg YnkgdGhlIGJvb2sgYnV0IHdlIGZpbmQgdGhlbSBuZWNlc3NhcnkuICAqLworCisjaWZuZGVmIF9P TVBEX0hFTFBFUl9ICisjZGVmaW5lIF9PTVBEX0hFTFBFUl9ICisKKyNpZmRlZiBfX2NwbHVzcGx1 cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworI2luY2x1ZGUgIm9tcC10b29scy5oIgorI2luY2x1 ZGUgIm9tcGQtdHlwZXMuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGRlZi5o PgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN0ZGJvb2wuaD4KKworI2RlZmluZSBz dHJpbmdpemUoeCkgc3RyaW5naXplMSh4KQorI2RlZmluZSBzdHJpbmdpemUxKHgpICN4CisKKyNk ZWZpbmUgVkVSU0lPTiAyMDIwMTEKKworZXh0ZXJuIGNvbnN0IG9tcGRfY2FsbGJhY2tzX3QgKmNh bGxiYWNrczsKK2V4dGVybiBfX1VJTlQ2NF9UWVBFX18gZ29tcGRfc3RhdGU7CitleHRlcm4gb21w ZF9kZXZpY2VfdHlwZV9zaXplc190IHRhcmdldF9zaXplczsKKwordHlwZWRlZiBzdHJ1Y3QgX29t cGRfYXNwYWNlX2hhbmRsZQoreworICBvbXBkX2FkZHJlc3Nfc3BhY2VfY29udGV4dF90ICpjb250 ZXh0OworICBvbXBkX2RldmljZV90IGtpbmQ7Cit9IG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVf dDsKKwordHlwZWRlZiBzdHJ1Y3QgX29tcGRfdGhyZWFkX2hhbmRsZQoreworICBvbXBkX2FkZHJl c3Nfc3BhY2VfaGFuZGxlX3QgKmFoOworICBvbXBkX3RocmVhZF9jb250ZXh0X3QgKnRocmVhZF9j b250ZXh0OworICBvbXBkX2FkZHJlc3NfdCB0aDsKK30gb21wZF90aHJlYWRfaGFuZGxlX3Q7CisK K3R5cGVkZWYgc3RydWN0IF9vbXBkX3BhcmFsbGVsX2hhbmRsZQoreworICBvbXBkX2FkZHJlc3Nf c3BhY2VfaGFuZGxlX3QgKmFoOworICBvbXBkX2FkZHJlc3NfdCB0aDsKK30gb21wZF9wYXJhbGxl bF9oYW5kbGVfdDsKKwordHlwZWRlZiBzdHJ1Y3QgX29tcGRfdGFza19oYW5kbGUKK3sKKyAgb21w ZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90ICphaDsKKyAgb21wZF9hZGRyZXNzX3QgdGg7Cit9IG9t cGRfdGFza19oYW5kbGVfdDsKKworI2RlZmluZSBDSEVDS19SRVQocmV0KSBcCisgZG8geyBcCisg ICBpZiAocmV0ICE9IG9tcGRfcmNfb2spIFwKKyAgICAgcmV0dXJuIHJldDsgXAorIH0gd2hpbGUg KDApCisKKyNkZWZpbmUgR0VUX1ZBTFVFKGNvbnRleHQsIHRocmVhZF9jb250ZXh0LCBuYW1lLCBv dXRwdXQsIGRpc3RfYnVmLCBzaXplLCBcCisgIGNvdW50LCByZXQsIHN5bWJvbF9hZGRyKSBcCisg IGRvIHsgXAorICAgIHJldCA9IGNhbGxiYWNrcy0+c3ltYm9sX2FkZHJfbG9va3VwIChjb250ZXh0 LCB0aHJlYWRfY29udGV4dCwgbmFtZSwgXAorCQkJCQkgJnN5bWJvbF9hZGRyLCBOVUxMKTsgXAor ICAgIENIRUNLX1JFVCAocmV0KTsgXAorICAgIHJldCA9IGNhbGxiYWNrcy0+cmVhZF9tZW1vcnkg KGNvbnRleHQsIHRocmVhZF9jb250ZXh0LCAmc3ltYm9sX2FkZHIsIHNpemUsIFwKKwkJCQkgICZk aXN0X2J1Zik7IFwKKyAgICBDSEVDS19SRVQgKHJldCk7IFwKKyAgICByZXQgPSBjYWxsYmFja3Mt PmRldmljZV90b19ob3N0IChjb250ZXh0LCAmZGlzdF9idWYsIHNpemUsIGNvdW50LCAmb3V0cHV0 KTtcCisgICAgQ0hFQ0tfUkVUIChyZXQpOyBcCisgIH0gd2hpbGUgKDApCisKKyNkZWZpbmUgQ0hF Q0soYWgpIFwKKyAgZG8geyAgIFwKKyAgICBpZiAoYWggPT0gTlVMTCB8fCBhaC0+Y29udGV4dCA9 PSBOVUxMKSBcCisgICAgICByZXR1cm4gb21wZF9yY19zdGFsZV9oYW5kbGU7IFwKKyAgICBpZiAo Y2FsbGJhY2tzID09IE5VTEwpIFwKKyAgICAgIHJldHVybiBvbXBkX3JjX2NhbGxiYWNrX2Vycm9y OyBcCisgIH0gd2hpbGUgKDApCisKKy8qICh2YXJfbmFtZSwgc3RyaW5nX25hbWUsIHNjb3BlKS4g ICovCisjZGVmaW5lIEZPUkVBQ0hfT01QRF9JQ1Yob21wZF9pY3YpIFwKKyAgb21wZF9pY3YgKG50 aHJlYWRfdmFyLCAibnRocmVhZCB2YXIiLCBvbXBkX3Njb3BlX3RocmVhZCkgXAorICBvbXBkX2lj diAodGhyZWFkX2xpbWl0X3ZhciwgInRocmVhZCBsaW1pdCB2YXIiLCBvbXBkX3Njb3BlX3Rhc2sp IFwKKyAgb21wZF9pY3YgKHJ1bl9zY2hlZF92YXIsICJydW4gc2NoZWQgbGltaXQgdmFyIiwgb21w ZF9zY29wZV90YXNrKSBcCisgIG9tcGRfaWN2IChydW5fc2NoZWRfY2h1bmtfc2l6ZSwgInJ1biBz Y2hlZCBjaHVuayBzaXplIHZhciIsIG9tcGRfc2NvcGVfdGFzaykgXAorICBvbXBkX2ljdiAoZGVm YXVsdF9kZXZpY2VfdmFyLCAiZGVmYXVsdCBkZXZpY2UgdmFyIiwgb21wZF9zY29wZV90aHJlYWQp IFwKKyAgb21wZF9pY3YgKGR5bl92YXIsICJkeW5hbWljIHZhciIsIG9tcGRfc2NvcGVfdGhyZWFk KSBcCisgIG9tcGRfaWN2IChtYXhfYWN0aXZlX2xldmVsc192YXIsICJtYXggYWN0aXZlIGxldmVs IHZhciIsIG9tcGRfc2NvcGVfdGFzaykgXAorICBvbXBkX2ljdiAoYmluZF92YXIsICJwcm9jIGJp bmQgdmFyIiwgb21wZF9zY29wZV90YXNrKSBcCisgIG9tcGRfaWN2IChjYW5jZWxsYXRpb25fdmFy LCAiY2FuY2VsIHZhciIsIG9tcGRfc2NvcGVfYWRkcmVzc19zcGFjZSkgXAorICBvbXBkX2ljdiAo bWF4X3Rhc2tfcHJpb3JpdHlfdmFyLCAibWF4IHRhc2sgcHJpb3JpdHkgdmFyIiwgXAorCSAgICBv bXBkX3Njb3BlX2FkZHJlc3Nfc3BhY2UpIFwKKyAgb21wZF9pY3YgKHN0YWNrc2l6ZV92YXIsICJz dGFjayBzaXplIHZhciIsIG9tcGRfc2NvcGVfYWRkcmVzc19zcGFjZSkgXAorICBvbXBkX2ljdiAo ZGVidWdfdmFyLCAiZGVidWcgdmFyIiwgb21wZF9zY29wZV9hZGRyZXNzX3NwYWNlKSBcCisgIG9t cGRfaWN2IChkaXNwbGF5X2FmZmluaXR5X3ZhciwgImRpc3BsYXkgYWZmaW5pdHkgdmFyIiwgXAor CSAgICBvbXBkX3Njb3BlX2FkZHJlc3Nfc3BhY2UpIFwKKyAgb21wZF9pY3YgKGFmZmluaXR5X2Zv cm1hdF92YXIsICJhZmZpbml0eSBmb3JtYXQgdmFyIiwgXAorCSAgICBvbXBkX3Njb3BlX2FkZHJl c3Nfc3BhY2UpIFwKKyAgb21wZF9pY3YgKGFmZmluaXR5X2Zvcm1hdF9sZW5fdmFyLCAiYWZmaW5p dHkgZm9ybWF0IGxlbiB2YXIiLCBcCisJICAgIG9tcGRfc2NvcGVfYWRkcmVzc19zcGFjZSkgXAor ICBvbXBkX2ljdiAod2FpdF9wb2xpY3lfdmFyLCAid2FpdCBwb2xpY3kgdmFyIiwgb21wZF9zY29w ZV9hZGRyZXNzX3NwYWNlKSBcCisgIG9tcGRfaWN2IChudW1fdGVhbXNfdmFyLCAibnVtIHRlYW1z IHZhciIsIG9tcGRfc2NvcGVfYWRkcmVzc19zcGFjZSkgXAorICBvbXBkX2ljdiAodGVhbXNfdGhy ZWFkX2xpbWl0X3ZhciwgInRlYW1zIHRocmVhZCBsaW1pdCB2YXIiLCBcCisJICAgIG9tcGRfc2Nv cGVfYWRkcmVzc19zcGFjZSkgXAorICBvbXBkX2ljdiAoc3Bpbl9jb3VudF92YXIsICJzcGluIGNv dW50IHZhciIsIG9tcGRfc2NvcGVfYWRkcmVzc19zcGFjZSkgXAorICBvbXBkX2ljdiAobnVtX3By b2NfdmFyLCAibnVtIHByb2MgdmFyIiwgb21wZF9zY29wZV9hZGRyZXNzX3NwYWNlKSBcCisgIG9t cGRfaWN2ICh0aHJvdHRsZWRfc3Bpbl9jb3VudF92YXIsICJ0aHJvdHRsZWQgc3BpbiBjb3VudCB2 YXIiLCBcCisJICAgIG9tcGRfc2NvcGVfYWRkcmVzc19zcGFjZSkgXAorICBvbXBkX2ljdiAobWFu YWdlZF90aHJlYWRzX3ZhciwgIm1hbmFnZWQgdGhyZWFkcyB2YXIiLCBcCisJICAgIG9tcGRfc2Nv cGVfYWRkcmVzc19zcGFjZSkgXAorICBvbXBkX2ljdiAodGhyZWFkX251bV92YXIsICJ0aHJlYWQg bnVtIHZhciIsIG9tcGRfc2NvcGVfdGhyZWFkKSBcCisgIG9tcGRfaWN2IChmaW5hbF90YXNrX3Zh ciwgImZpbmFsIHRhc2sgdmFyIiwgb21wZF9zY29wZV90YXNrKSBcCisgIG9tcGRfaWN2IChpbXBs aWNpdF90YXNrX3ZhciwgImltcGxpY2l0IHRhc2sgdmFyIiwgb21wZF9zY29wZV90YXNrKSBcCisg IG9tcGRfaWN2ICh0ZWFtX3NpemVfdmFyLCAidGVhbSBzaXplIHZhciIsIG9tcGRfc2NvcGVfcGFy YWxsZWwpCisKK2VudW0gb21wZF9pY3YKK3sKKyAgZ29tcGRfaWN2X3VuZGVmaW5lZF92YXIgPSAw LAorICAjZGVmaW5lIGdvbXBkX2ljdl9pdGVyYXRvcih2YXJfbmFtZSwgc3RyaW5nX25hbWUsIHNj b3BlKSBnb21wZF9pY3ZfIyN2YXJfbmFtZSwKKyAgICBGT1JFQUNIX09NUERfSUNWIChnb21wZF9p Y3ZfaXRlcmF0b3IpCisgICN1bmRlZiBnb21wZF9pY3ZfaXRlcmF0b3IKKyAgZ29tcGRfbGFzdF9p Y3ZfdmFyCit9OworCitvbXBkX3JjX3QgZ2V0X3NpemVzIChvbXBkX2FkZHJlc3Nfc3BhY2VfY29u dGV4dF90ICopOworCisvKiBHZXQgTG9jYWwgaW50ZXJuYWwgY29udHJvbCB2YXJpYWJsZXMuICAq Lworb21wZF9yY190IGdvbXBkX2dldF9udGhyZWFkIChvbXBkX3RocmVhZF9oYW5kbGVfdCAqLCBv bXBkX3dvcmRfdCAqKTsKK29tcGRfcmNfdCBnb21wZF9nZXRfdGhyZWFkX2xpbWl0IChvbXBkX3Rh c2tfaGFuZGxlX3QgKiwgb21wZF93b3JkX3QgKik7CitvbXBkX3JjX3QgZ29tcGRfZ2V0X3J1bl9z Y2hlZCAob21wZF90YXNrX2hhbmRsZV90ICosICBvbXBkX3dvcmRfdCAqKTsKK29tcGRfcmNfdCBn b21wZF9nZXRfcnVuX3NjaGVkX2NodW5rX3NpemUgKG9tcGRfdGFza19oYW5kbGVfdCAqLCBvbXBk X3dvcmRfdCAqKTsKK29tcGRfcmNfdCBnb21wZF9nZXRfZGVmYXVsdF9kZXZpY2UgKG9tcGRfdGhy ZWFkX2hhbmRsZV90ICosIG9tcGRfd29yZF90ICopOworb21wZF9yY190IGdvbXBkX2dldF9keW5h bWljIChvbXBkX3RocmVhZF9oYW5kbGVfdCAqLCBvbXBkX3dvcmRfdCAqKTsKK29tcGRfcmNfdCBn b21wZF9nZXRfbWF4X2FjdGl2ZV9sZXZlbHMgKG9tcGRfdGFza19oYW5kbGVfdCAqLCBvbXBkX3dv cmRfdCAqKTsKK29tcGRfcmNfdCBnb21wZF9nZXRfcHJvY19iaW5kIChvbXBkX3Rhc2tfaGFuZGxl X3QgKiwgb21wZF93b3JkX3QgKik7CitvbXBkX3JjX3QgZ29tcGRfaXNfZmluYWwgKG9tcGRfdGFz a19oYW5kbGVfdCAqLCBvbXBkX3dvcmRfdCAqKTsKK29tcGRfcmNfdCBnb21wZF9pc19pbXBsaWNp dCAob21wZF90YXNrX2hhbmRsZV90ICosIG9tcGRfd29yZF90ICopOworb21wZF9yY190IGdvbXBk X2dldF90ZWFtX3NpemUgKG9tcGRfcGFyYWxsZWxfaGFuZGxlX3QgKiwgb21wZF93b3JkX3QgKik7 CisKKy8qIEdldCBHbG9iYWwgSUNWcy4gICovCitvbXBkX3JjX3QgZ29tcGRfZ2V0X2NhbmNlbGxh dGlvbiAob21wZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90ICosIG9tcGRfd29yZF90ICopOworb21w ZF9yY190IGdvbXBkX2dldF9tYXhfdGFza19wcmlvcml0eSAob21wZF9hZGRyZXNzX3NwYWNlX2hh bmRsZV90ICosCisgIAkJCQkgICAgICAgb21wZF93b3JkX3QgKik7CitvbXBkX3JjX3QgZ29tcGRf Z2V0X3N0YWNrc2l6ZSAob21wZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90ICosIG9tcGRfd29yZF90 ICopOworb21wZF9yY190IGdvbXBkX2dldF9kZWJ1ZyAob21wZF9hZGRyZXNzX3NwYWNlX2hhbmRs ZV90ICosIG9tcGRfd29yZF90ICopOworb21wZF9yY190IGdvbXBkX2dldF9kaXNwbGF5X2FmZmlu aXR5IChvbXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3QgKiwKKwkJCQkgICAgICBvbXBkX3dvcmRf dCAqKTsKK29tcGRfcmNfdCBnb21wZF9nZXRfYWZmaW5pdHlfZm9ybWF0IChvbXBkX2FkZHJlc3Nf c3BhY2VfaGFuZGxlX3QgKiwKKwkJCQkgICAgIGNvbnN0IGNoYXIgKiopOworb21wZF9yY190IGdv bXBkX2dldF9hZmZpbml0eV9mb3JtYXRfbGVuIChvbXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3Qg KiwKKwkJCQkJIG9tcGRfd29yZF90ICopOworb21wZF9yY190IGdvbXBkX2dldF93YWl0X3BvbGlj eSAob21wZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90ICosIG9tcGRfd29yZF90ICopOworb21wZF9y Y190IGdvbXBkX2dldF9udW1fdGVhbXMgKG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqLCBv bXBkX3dvcmRfdCAqKTsKK29tcGRfcmNfdCBnb21wZF9nZXRfdGVhbXNfdGhyZWFkX2xpbWl0IChv bXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3QgKiwKKwkJCQkJb21wZF93b3JkX3QgKik7CitvbXBk X3JjX3QgZ29tcGRfZ2V0X3NwaW5fY291bnQgKG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAq LCBvbXBkX3dvcmRfdCAqKTsKK29tcGRfcmNfdCBnb21wZF9nZXRfYXZhaWxhYmxlX2NwdXMgKG9t cGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqLAorCQkJCSAgICBvbXBkX3dvcmRfdCAqKTsKK29t cGRfcmNfdCBnb21wZF9nZXRfdGhyb3R0bGVkX3NwaW5fY291bnQgKG9tcGRfYWRkcmVzc19zcGFj ZV9oYW5kbGVfdCAqLAorCQkJCQkgIG9tcGRfd29yZF90ICopOworb21wZF9yY190IGdvbXBkX2dl dF9tYW5hZ2VkX3RocmVhZHMgKG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqLAorCQkJCSAg ICAgb21wZF93b3JkX3QgKik7CisvKkVuZCBvZiBHbG9iYWwgSUNWcy4gICovCisKKyNpZmRlZiBf X2NwbHVzcGx1cworfSAvLyBleHRlcm4gQworI2VuZGlmCisKKyNlbmRpZiAvKiBfT01QRF9IRUxQ RVJfSCAqLwpkaWZmIC0tZ2l0IGEvbGliZ29tcC9vbXBkLWljdi5jIGIvbGliZ29tcC9vbXBkLWlj di5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hNTA0ZDA3YzBlOAot LS0gL2Rldi9udWxsCisrKyBiL2xpYmdvbXAvb21wZC1pY3YuYwpAQCAtMCwwICsxLDE5OCBAQAor LyogQ29weXJpZ2h0IChDKSAyMDIyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICAg Q29udHJpYnV0ZWQgYnkgTW9oYW1lZCBBdGVmIDxtb2hhbWVkYXRlZjE2OThAZ21haWwuY29tPi4K KyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgT2ZmbG9hZGluZyBhbmQgTXVsdGkgUHJv Y2Vzc2luZyBMaWJyYXJ5CisgICAobGliZ29tcCkuCisgICBMaWJnb21wIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAgIHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 CisgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzLCBvciAo YXQgeW91ciBvcHRpb24pCisgICBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAgIExpYmdvbXAgaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQg QU5ZCisgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTCisgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcgorICAgbW9yZSBkZXRhaWxzLgor ICAgVW5kZXIgU2VjdGlvbiA3IG9mIEdQTCB2ZXJzaW9uIDMsIHlvdSBhcmUgZ3JhbnRlZCBhZGRp dGlvbmFsCisgICBwZXJtaXNzaW9ucyBkZXNjcmliZWQgaW4gdGhlIEdDQyBSdW50aW1lIExpYnJh cnkgRXhjZXB0aW9uLCB2ZXJzaW9uCisgICAzLjEsIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLgorICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYW5kCisgICBhIGNvcHkgb2YgdGhlIEdD QyBSdW50aW1lIExpYnJhcnkgRXhjZXB0aW9uIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOworICAg c2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJlc3BlY3RpdmVseS4g IElmIG5vdCwgc2VlCisgICA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworCisv KiBUaGlzIGZpbGUgY29udGFpbnMgaW1wbGVtZW50YXRpb24gb2YgZnVuY3Rpb25zIGRlZmluZWQg aW4gNS41LjggYW5kIDUuNS45CisgIGluIE9wZW5NUCBBcHBsaWNhdGlvbiBQcm9ncmFtbWluZyBJ bnRlcmZhY2UgdjUuMS4gICovCisKKyNpbmNsdWRlICJvbXBkLWhlbHBlci5oIgorCitzdGF0aWMg Y29uc3QgY2hhciAqZ29tcGRfaWN2X3N0cmluZ1tdID0geyAidW5kZWZpbmVkIiwKKyAgI2RlZmlu ZSBnb21wZF9pY3ZfaXRlcmF0b3IodmFyX25hbWUsIHN0cmluZ19uYW1lLCBzY29wZSkgc3RyaW5n X25hbWUsCisgICAgRk9SRUFDSF9PTVBEX0lDViAoZ29tcGRfaWN2X2l0ZXJhdG9yKQorICAjdW5k ZWYgZ29tcGRfaWN2X2l0ZXJhdG9yCit9OworCitzdGF0aWMgY29uc3Qgb21wZF9zY29wZV90IGdv bXBkX2ljdl9zY29wZVtdID0ge29tcGRfc2NvcGVfZ2xvYmFsLAorICAjZGVmaW5lIGdvbXBkX2lj dl9pdGVyYXRvcih2YXJfbmFtZSwgc3RyaW5nX25hbWUsIHNjb3BlKSBzY29wZSwKKyAgICBGT1JF QUNIX09NUERfSUNWIChnb21wZF9pY3ZfaXRlcmF0b3IpCisgICN1bmRlZiBnb21wZF9pY3ZfaXRl cmF0b3IKK307CisKK29tcGRfcmNfdAorb21wZF9lbnVtZXJhdGVfaWN2cyAob21wZF9hZGRyZXNz X3NwYWNlX2hhbmRsZV90ICphaCwKKwkJICAgICBvbXBkX2ljdl9pZF90IGN1cnJlbnQsIG9tcGRf aWN2X2lkX3QgKm5leHRfaWQsCisJCSAgICAgY29uc3QgY2hhciAqKm5leHRfaWN2X25hbWUsCisJ CSAgICAgb21wZF9zY29wZV90ICpuZXh0X3Njb3BlLCBpbnQgKm1vcmUpCit7CisgIGlmIChhaCA9 PSBOVUxMKQorICAgIHJldHVybiBvbXBkX3JjX3N0YWxlX2hhbmRsZTsKKyAgaWYgKGN1cnJlbnQg KyAxID49IGdvbXBkX2xhc3RfaWN2X3ZhciB8fCBuZXh0X2lkID09IE5VTEwKKyAgICB8fCBuZXh0 X2ljdl9uYW1lID09IE5VTEwgfHwgbmV4dF9zY29wZSA9PSBOVUxMIHx8IG1vcmUgPT0gTlVMTCkK KyAgICAgIHJldHVybiBvbXBkX3JjX2JhZF9pbnB1dDsKKyAgaWYgKGNhbGxiYWNrcyA9PSBOVUxM KQorICAgIHJldHVybiBvbXBkX3JjX2NhbGxiYWNrX2Vycm9yOworICAqbmV4dF9pZCA9IGN1cnJl bnQgKyAxOworICBjaGFyICp0ZW1wX25hbWUgPSBOVUxMOworICBvbXBkX3JjX3QgcmV0CisgICAg PSBjYWxsYmFja3MtPmFsbG9jX21lbW9yeSAoc3RybGVuIChnb21wZF9pY3Zfc3RyaW5nWypuZXh0 X2lkXSkgKyAxLAorCQkJICAgICAgICh2b2lkICoqKSAmdGVtcF9uYW1lKTsKKyAgQ0hFQ0tfUkVU IChyZXQpOworICBzdHJjcHkgKHRlbXBfbmFtZSwgZ29tcGRfaWN2X3N0cmluZ1sqbmV4dF9pZF0p OworICAqbmV4dF9pY3ZfbmFtZSA9IHRlbXBfbmFtZTsKKyAgKm5leHRfc2NvcGUgPSBnb21wZF9p Y3Zfc2NvcGVbKm5leHRfaWRdOworICBpZiAoKCpuZXh0X2lkKSArIDEgPCBnb21wZF9sYXN0X2lj dl92YXIpCisgICAgKm1vcmUgPSAxOworICBlbHNlCisgICAgKm1vcmUgPSAwOworICByZXR1cm4g b21wZF9yY19vazsKK30KKworb21wZF9yY190CitvbXBkX2dldF9pY3ZfZnJvbV9zY29wZSAodm9p ZCAqaGFuZGxlLCBvbXBkX3Njb3BlX3Qgc2NvcGUsIG9tcGRfaWN2X2lkX3QgaWN2X2lkLAorCQkJ IG9tcGRfd29yZF90ICppY3ZfdmFsdWUpCit7CisgIGlmIChoYW5kbGUgPT0gTlVMTCkKKyAgICBy ZXR1cm4gb21wZF9yY19zdGFsZV9oYW5kbGU7CisgIGlmIChpY3ZfdmFsdWUgPT0gTlVMTCB8fCAh aWN2X2lkIHx8IGljdl9pZCA+PSBnb21wZF9sYXN0X2ljdl92YXIpCisgICAgcmV0dXJuIG9tcGRf cmNfYmFkX2lucHV0OworICBpZiAoY2FsbGJhY2tzID09IE5VTEwpCisgICAgcmV0dXJuIG9tcGRf cmNfY2FsbGJhY2tfZXJyb3I7CisgIG9tcGRfZGV2aWNlX3QgZGV2aWNlOworICBzd2l0Y2ggKHNj b3BlKQorICAgIHsKKyAgICAgIGNhc2Ugb21wZF9zY29wZV9hZGRyZXNzX3NwYWNlOgorCWRldmlj ZSA9ICgob21wZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90ICopIGhhbmRsZSktPmtpbmQ7CisJYnJl YWs7CisgICAgICBjYXNlIG9tcGRfc2NvcGVfdGhyZWFkOgorCWRldmljZSA9ICgob21wZF90aHJl YWRfaGFuZGxlX3QgKikgaGFuZGxlKS0+YWgtPmtpbmQ7CisJYnJlYWs7CisgICAgICBjYXNlIG9t cGRfc2NvcGVfcGFyYWxsZWw6CisJZGV2aWNlID0gKChvbXBkX3BhcmFsbGVsX2hhbmRsZV90ICop IGhhbmRsZSktPmFoLT5raW5kOworCWJyZWFrOworICAgICAgY2FzZSBvbXBkX3Njb3BlX3Rhc2s6 CisJZGV2aWNlID0gKChvbXBkX3Rhc2tfaGFuZGxlX3QgKikgaGFuZGxlKS0+YWgtPmtpbmQ7CisJ YnJlYWs7CisgICAgICBkZWZhdWx0OgorCXJldHVybiBvbXBkX3JjX2JhZF9pbnB1dDsKKyAgICB9 CisgIC8qIE5PIGN1ZGEgZm9yIG5vdy4gICovCisgIGlmIChkZXZpY2UgPT0gT01QRF9ERVZJQ0Vf S0lORF9IT1NUKQorICAgIHsKKyAgICAgIHN3aXRjaCAoaWN2X2lkKQorCXsKKwkgIGNhc2UgZ29t cGRfaWN2X2NhbmNlbGxhdGlvbl92YXI6CisJICAgIHJldHVybgorCSAgICAgIGdvbXBkX2dldF9j YW5jZWxsYXRpb24gKChvbXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3QgKikgaGFuZGxlLAorCQkJ CSAgICAgIGljdl92YWx1ZSk7CisJICBjYXNlIGdvbXBkX2ljdl9tYXhfdGFza19wcmlvcml0eV92 YXI6CisJICAgIHJldHVybiBnb21wZF9nZXRfbWF4X3Rhc2tfcHJpb3JpdHkgKChvbXBkX2FkZHJl c3Nfc3BhY2VfaGFuZGxlX3QgKikKKwkJCQkJCWhhbmRsZSwgaWN2X3ZhbHVlKTsKKwkgIGNhc2Ug Z29tcGRfaWN2X3N0YWNrc2l6ZV92YXI6CisJICAgIHJldHVybiBnb21wZF9nZXRfc3RhY2tzaXpl ICgob21wZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90ICopIGhhbmRsZSwKKwkJCQkJaWN2X3ZhbHVl KTsKKwkgIGNhc2UgZ29tcGRfaWN2X2RlYnVnX3ZhcjoKKwkgICAgcmV0dXJuIGdvbXBkX2dldF9k ZWJ1ZyAoKG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqKSBoYW5kbGUsCisJCQkJICAgIGlj dl92YWx1ZSk7CisJICBjYXNlIGdvbXBkX2ljdl9kaXNwbGF5X2FmZmluaXR5X3ZhcjoKKwkgICAg cmV0dXJuCisJICAgICAgZ29tcGRfZ2V0X2Rpc3BsYXlfYWZmaW5pdHkgKChvbXBkX2FkZHJlc3Nf c3BhY2VfaGFuZGxlX3QgKikKKwkJCQkJICBoYW5kbGUsIGljdl92YWx1ZSk7CisJICBjYXNlIGdv bXBkX2ljdl9hZmZpbml0eV9mb3JtYXRfdmFyOgorCSAgICByZXR1cm4gb21wZF9yY19pbmNvbXBh dGlibGU7CisJICBjYXNlIGdvbXBkX2ljdl9hZmZpbml0eV9mb3JtYXRfbGVuX3ZhcjoKKwkgICAg cmV0dXJuIGdvbXBkX2dldF9hZmZpbml0eV9mb3JtYXRfbGVuCisJCSAgICAoKG9tcGRfYWRkcmVz c19zcGFjZV9oYW5kbGVfdCAqKSBoYW5kbGUsIGljdl92YWx1ZSk7CisJICAgY2FzZSBnb21wZF9p Y3Zfd2FpdF9wb2xpY3lfdmFyOgorCSAgICAgcmV0dXJuCisJICAgICAgIGdvbXBkX2dldF93YWl0 X3BvbGljeSAoKG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqKWhhbmRsZSwKKwkJCQkgICAg ICBpY3ZfdmFsdWUpOworCSAgIGNhc2UgZ29tcGRfaWN2X251bV90ZWFtc192YXI6CisJICAgICBy ZXR1cm4gZ29tcGRfZ2V0X251bV90ZWFtcyAoKG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAq KWhhbmRsZSwKKwkJCQkJIGljdl92YWx1ZSk7CisJICAgY2FzZSBnb21wZF9pY3ZfdGVhbXNfdGhy ZWFkX2xpbWl0X3ZhcjoKKwkgICAgIHJldHVybgorCSAgICAgICBnb21wZF9nZXRfdGVhbXNfdGhy ZWFkX2xpbWl0ICgob21wZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90ICopCisJCQkJCSAgICAgaGFu ZGxlLCBpY3ZfdmFsdWUpOworCSAgIGNhc2UgZ29tcGRfaWN2X3NwaW5fY291bnRfdmFyOgorCSAg ICAgcmV0dXJuCisJICAgICAgIGdvbXBkX2dldF9zcGluX2NvdW50ICgob21wZF9hZGRyZXNzX3Nw YWNlX2hhbmRsZV90ICopIGhhbmRsZSwKKwkJCQkgICAgIGljdl92YWx1ZSk7CisJICAgY2FzZSBn b21wZF9pY3ZfbnVtX3Byb2NfdmFyOgorCSAgICAgcmV0dXJuCisJICAgICAgIGdvbXBkX2dldF9h dmFpbGFibGVfY3B1cyAoKG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqKSBoYW5kbGUsCisJ CQkJCSBpY3ZfdmFsdWUpOworCSAgIGNhc2UgZ29tcGRfaWN2X3Rocm90dGxlZF9zcGluX2NvdW50 X3ZhcjoKKwkgICAgIHJldHVybgorCSAgICAgICBnb21wZF9nZXRfdGhyb3R0bGVkX3NwaW5fY291 bnQgKChvbXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3QgKikKKwkJCQkJICAgICAgIGhhbmRsZSwg aWN2X3ZhbHVlKTsKKwkgICBjYXNlIGdvbXBkX2ljdl9tYW5hZ2VkX3RocmVhZHNfdmFyOgorCSAg ICAgcmV0dXJuCisJICAgICAgIGdvbXBkX2dldF9tYW5hZ2VkX3RocmVhZHMgKChvbXBkX2FkZHJl c3Nfc3BhY2VfaGFuZGxlX3QgKikKKwkJCQkJICBoYW5kbGUsIGljdl92YWx1ZSk7CisJICBkZWZh dWx0OgorCSAgICByZXR1cm4gb21wZF9yY191bnN1cHBvcnRlZDsKKwkgfQorICAgIH0KKyAgICBy ZXR1cm4gb21wZF9yY19lcnJvcjsKK30KKworb21wZF9yY190CitvbXBkX2dldF9pY3Zfc3RyaW5n X2Zyb21fc2NvcGUgKHZvaWQgKmhhbmRsZSwgb21wZF9zY29wZV90IHNjb3BlLAorCQkJCW9tcGRf aWN2X2lkX3QgaWN2X2lkLCBjb25zdCBjaGFyICoqaWN2X3ZhbHVlKQoreworICBpZiAoaGFuZGxl ID09IE5VTEwpCisgICAgcmV0dXJuIG9tcGRfcmNfc3RhbGVfaGFuZGxlOworICBpZiAoaWN2X3Zh bHVlID09IE5VTEwgfHwgIWljdl9pZCB8fCBpY3ZfaWQgPj0gZ29tcGRfbGFzdF9pY3ZfdmFyKQor ICAgIHJldHVybiBvbXBkX3JjX2JhZF9pbnB1dDsKKyAgaWYgKGNhbGxiYWNrcyA9PSBOVUxMKQor ICAgIHJldHVybiBvbXBkX3JjX2NhbGxiYWNrX2Vycm9yOworICBvbXBkX2RldmljZV90IGRldmlj ZTsKKyAgc3dpdGNoIChzY29wZSkKKyAgICB7CisgICAgICBjYXNlIG9tcGRfc2NvcGVfYWRkcmVz c19zcGFjZToKKwlkZXZpY2UgPSAoKG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqKSBoYW5k bGUpLT5raW5kOworCWJyZWFrOworICAgICAgY2FzZSBvbXBkX3Njb3BlX3RocmVhZDoKKwlkZXZp Y2UgPSAoKG9tcGRfdGhyZWFkX2hhbmRsZV90ICopIGhhbmRsZSktPmFoLT5raW5kOworCWJyZWFr OworICAgICAgY2FzZSBvbXBkX3Njb3BlX3BhcmFsbGVsOgorCWRldmljZSA9ICgob21wZF9wYXJh bGxlbF9oYW5kbGVfdCAqKSBoYW5kbGUpLT5haC0+a2luZDsKKwlicmVhazsKKyAgICAgIGNhc2Ug b21wZF9zY29wZV90YXNrOgorCWRldmljZSA9ICgob21wZF90YXNrX2hhbmRsZV90ICopIGhhbmRs ZSktPmFoLT5raW5kOworCWJyZWFrOworICAgICAgZGVmYXVsdDoKKwlyZXR1cm4gb21wZF9yY19i YWRfaW5wdXQ7CisgICAgfQorICAvKiBObyBjdWRhLiAgKi8KKyAgaWYgKGRldmljZSA9PSBPTVBE X0RFVklDRV9LSU5EX0hPU1QpCisgICAgeworICAgICAgc3dpdGNoIChpY3ZfaWQpCisJIHsKKwkg IGNhc2UgZ29tcGRfaWN2X2FmZmluaXR5X2Zvcm1hdF92YXI6CisJICAgIHJldHVybgorCSAgICAg IGdvbXBkX2dldF9hZmZpbml0eV9mb3JtYXQgKChvbXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3Qg KikgaGFuZGxlLAorCQkJCQkgaWN2X3ZhbHVlKTsKKwkgIGRlZmF1bHQ6CisJICAgIHJldHVybiBv bXBkX3JjX3Vuc3VwcG9ydGVkOworCSB9CisgICAgfQorICByZXR1cm4gb21wZF9yY19lcnJvcjsK K30KZGlmZiAtLWdpdCBhL2xpYmdvbXAvb21wZC1pbml0LmMgYi9saWJnb21wL29tcGQtaW5pdC5j Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iN2MyM2UwNDczMQotLS0g L2Rldi9udWxsCisrKyBiL2xpYmdvbXAvb21wZC1pbml0LmMKQEAgLTAsMCArMSwxMzEgQEAKKy8q IENvcHlyaWdodCAoQykgMjAyMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgIENv bnRyaWJ1dGVkIGJ5IE1vaGFtZWQgQXRlZiA8bW9oYW1lZGF0ZWYxNjk4QGdtYWlsLmNvbT4uCisg ICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIE9mZmxvYWRpbmcgYW5kIE11bHRpIFByb2Nl c3NpbmcgTGlicmFyeQorICAgKGxpYmdvbXApLgorICAgTGliZ29tcCBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgICB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQor ICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMywgb3IgKGF0 IHlvdXIgb3B0aW9uKQorICAgYW55IGxhdGVyIHZlcnNpb24uCisgICBMaWJnb21wIGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFO WQorICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUworICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IKKyAgIG1vcmUgZGV0YWlscy4KKyAg IFVuZGVyIFNlY3Rpb24gNyBvZiBHUEwgdmVyc2lvbiAzLCB5b3UgYXJlIGdyYW50ZWQgYWRkaXRp b25hbAorICAgcGVybWlzc2lvbnMgZGVzY3JpYmVkIGluIHRoZSBHQ0MgUnVudGltZSBMaWJyYXJ5 IEV4Y2VwdGlvbiwgdmVyc2lvbgorICAgMy4xLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbi4KKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFuZAorICAgYSBjb3B5IG9mIHRoZSBHQ0Mg UnVudGltZSBMaWJyYXJ5IEV4Y2VwdGlvbiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsKKyAgIHNl ZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVElNRSByZXNwZWN0aXZlbHkuICBJ ZiBub3QsIHNlZQorICAgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKworLyog VGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBmdW5jdGlvbnMgZGVmaW5l ZCBpbgorICAgc2VjdGlvbiA1LjUuMSwgNS41LjIuICAqLworCisjaW5jbHVkZSAib21wZC1oZWxw ZXIuaCIKKworLyogUGVyIE9NUEQgaW5pdGlhbGl6YXRpb24gYW5kIGZpbmFsaXphdGlvbi4gICov CisKK19fVUlOVDY0X1RZUEVfXyBnb21wZF9zdGF0ZTsKK2NvbnN0IG9tcGRfY2FsbGJhY2tzX3Qg KmNhbGxiYWNrczsKKworb21wZF9yY190CitvbXBkX2luaXRpYWxpemUgKG9tcGRfd29yZF90IGFw aV92ZXJzaW9uLAorCQkgY29uc3Qgb21wZF9jYWxsYmFja3NfdCAqY2FsbGJhY2tzX3RhYmxlKQor eworICBpZiAoY2FsbGJhY2tzX3RhYmxlID09IE5VTEwpCisgICAgcmV0dXJuIG9tcGRfcmNfYmFk X2lucHV0OworCisgIG9tcGRfd29yZF90IHZlcnNpb247CisgIG9tcGRfcmNfdCByZXQgPSBvbXBk X2dldF9hcGlfdmVyc2lvbiAoJnZlcnNpb24pOworCisgIGlmICh2ZXJzaW9uICE9IGFwaV92ZXJz aW9uKQorICAgIHJldHVybiBvbXBkX3JjX3Vuc3VwcG9ydGVkOworCisgIGNhbGxiYWNrcyA9IGNh bGxiYWNrc190YWJsZTsKKyAgcmV0dXJuIHJldDsKK30KKworb21wZF9yY190CitvbXBkX2dldF9h cGlfdmVyc2lvbiAob21wZF93b3JkX3QgKnZlcnNpb24pCit7CisgIGlmICh2ZXJzaW9uID09IE5V TEwpCisgICAgcmV0dXJuIG9tcGRfcmNfYmFkX2lucHV0OworCisgICp2ZXJzaW9uID0gVkVSU0lP TjsKKyAgcmV0dXJuIG9tcGRfcmNfb2s7Cit9CisKK29tcGRfcmNfdAorb21wZF9nZXRfdmVyc2lv bl9zdHJpbmcgKGNvbnN0IGNoYXIgKipzdHJpbmcpCit7CisgIGlmIChzdHJpbmcgPT0gTlVMTCkK KyAgICByZXR1cm4gb21wZF9yY19iYWRfaW5wdXQ7CisgIHN0YXRpYyBjb25zdCBjaGFyIHRtcF9z dHJpbmdbXQorICAgID0gIkdOVSBPcGVuTVAgcnVudGltZSBpbXBsZW1lbnRpbmcgT01QRCB2ZXJz aW9uICIKKyAgICAgIHN0cmluZ2l6ZSAoVkVSU0lPTikgIiBEZWJ1Z2dpbmcgbGlicmFyeSI7Cisg ICpzdHJpbmcgPSB0bXBfc3RyaW5nOworICByZXR1cm4gb21wZF9yY19vazsKK30KKworb21wZF9y Y190CitvbXBkX2ZpbmFsaXplICgpCit7CisgIHJldHVybiBvbXBkX3JjX29rOworfQorCisvKiBQ ZXIgcHJvY2VzcyBpbml0aWFsaXphdGlvbiBhbmQgZmluYWxpemF0aW9uLiAgKi8KKworb21wZF9y Y190CitvbXBkX3Byb2Nlc3NfaW5pdGlhbGl6ZSAob21wZF9hZGRyZXNzX3NwYWNlX2NvbnRleHRf dCAqY29udGV4dCwKKwkJCSBvbXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3QgKipoYW5kbGUpCit7 CisgIGlmIChjb250ZXh0ID09IE5VTEwgfHwgaGFuZGxlID09IE5VTEwpCisgICAgcmV0dXJuIG9t cGRfcmNfYmFkX2lucHV0OworCisgIG9tcGRfcmNfdCByZXQgPSBnZXRfc2l6ZXMgKGNvbnRleHQp OworICBpZiAocmV0ICE9IG9tcGRfcmNfb2spCisgICAgcmV0dXJuIHJldDsKKworICAvKiBOYWl2 ZSB3YXkgdG8gcmVhZCBmcm9tIG1lbW9yeS4gICovCisgIG9tcGRfYWRkcmVzc190IHN5bWJvbF9h ZGRyID0ge09NUERfU0VHTUVOVF9VTlNQRUNJRklFRCwgMH07CisgIEdFVF9WQUxVRSAoY29udGV4 dCwgTlVMTCwgImdvbXBkX3N0YXRlIiwgZ29tcGRfc3RhdGUsIGdvbXBkX3N0YXRlLAorCSAgICAg dGFyZ2V0X3NpemVzLnNpemVvZl9sb25nX2xvbmcsIDEsIHJldCwgc3ltYm9sX2FkZHIpOworCisg IHJldCA9IGNhbGxiYWNrcy0+YWxsb2NfbWVtb3J5IChzaXplb2YgKG9tcGRfYWRkcmVzc19zcGFj ZV9oYW5kbGVfdCksCisJCQkJICh2b2lkICoqKSAoaGFuZGxlKSk7CisKKyAgaWYgKHJldCAhPSBv bXBkX3JjX29rKQorICAgIHJldHVybiByZXQ7CisKKyAgaWYgKGhhbmRsZSA9PSBOVUxMKQorICAg IHJldHVybiBvbXBkX3JjX2Vycm9yOworCisgICgqaGFuZGxlKS0+Y29udGV4dCA9IGNvbnRleHQ7 CisgICgqaGFuZGxlKS0+a2luZCA9IE9NUERfREVWSUNFX0tJTkRfSE9TVDsKKyAgcmV0dXJuIHJl dDsKK30KKworLyogT01QRCB3aWxsIG5vdCBzdXBwb3J0IEdQVXMgZm9yIG5vdy4gICovCisKK29t cGRfcmNfdAorb21wZF9kZXZpY2VfaW5pdGlhbGl6ZSAob21wZF9hZGRyZXNzX3NwYWNlX2hhbmRs ZV90ICpwcm9jZXNzX2hhbmRsZSwKKwkJCW9tcGRfYWRkcmVzc19zcGFjZV9jb250ZXh0X3QgKmRl dmljZV9jb250ZXh0LAorCQkJb21wZF9kZXZpY2VfdCBraW5kLCBvbXBkX3NpemVfdCBzaXplb2Zf aWQsIHZvaWQgKmlkLAorCQkJb21wZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90ICoqZGV2aWNlX2hh bmRsZSkKK3sKKyAgaWYgKGRldmljZV9jb250ZXh0ID09IE5VTEwpCisgICAgcmV0dXJuIG9tcGRf cmNfYmFkX2lucHV0OworCisgIHJldHVybiBvbXBkX3JjX3Vuc3VwcG9ydGVkOworfQorCisKK29t cGRfcmNfdAorb21wZF9yZWxfYWRkcmVzc19zcGFjZV9oYW5kbGUgKG9tcGRfYWRkcmVzc19zcGFj ZV9oYW5kbGVfdCAqaGFuZGxlKQoreworICBpZiAoaGFuZGxlID09IE5VTEwpCisgICAgcmV0dXJu IG9tcGRfcmNfc3RhbGVfaGFuZGxlOworCisgIG9tcGRfcmNfdCByZXQgPSBjYWxsYmFja3MtPmZy ZWVfbWVtb3J5ICgodm9pZCAqKSBoYW5kbGUpOworICByZXR1cm4gcmV0OworfQpkaWZmIC0tZ2l0 IGEvbGliZ29tcC9vbXBkLXN1cHBvcnQuYyBiL2xpYmdvbXAvb21wZC1zdXBwb3J0LmMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjUxNjAwNzE0ODg2Ci0tLSAvZGV2L251 bGwKKysrIGIvbGliZ29tcC9vbXBkLXN1cHBvcnQuYwpAQCAtMCwwICsxLDEyNyBAQAorLyogQ29w eXJpZ2h0IChDKSAyMDIyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICAgQ29udHJp YnV0ZWQgYnkgTW9oYW1lZCBBdGVmIDxtb2hhbWVkYXRlZjE2OThAZ21haWwuY29tPi4KKyAgIFRo aXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgT2ZmbG9hZGluZyBhbmQgTXVsdGkgUHJvY2Vzc2lu ZyBMaWJyYXJ5CisgICAobGliZ29tcCkuCisgICBMaWJnb21wIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAgIHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgICB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzLCBvciAoYXQgeW91 ciBvcHRpb24pCisgICBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAgIExpYmdvbXAgaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZCisg ICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTCisgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcgorICAgbW9yZSBkZXRhaWxzLgorICAgVW5k ZXIgU2VjdGlvbiA3IG9mIEdQTCB2ZXJzaW9uIDMsIHlvdSBhcmUgZ3JhbnRlZCBhZGRpdGlvbmFs CisgICBwZXJtaXNzaW9ucyBkZXNjcmliZWQgaW4gdGhlIEdDQyBSdW50aW1lIExpYnJhcnkgRXhj ZXB0aW9uLCB2ZXJzaW9uCisgICAzLjEsIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLgorICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYW5kCisgICBhIGNvcHkgb2YgdGhlIEdDQyBSdW50 aW1lIExpYnJhcnkgRXhjZXB0aW9uIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOworICAgc2VlIHRo ZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJlc3BlY3RpdmVseS4gIElmIG5v dCwgc2VlCisgICA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworCisjaW5jbHVk ZSAib21wZC1zdXBwb3J0LmgiCisKKyNkZWZpbmUgZ29tcGRfZGVjbGFyZV9hY2Nlc3ModCwgbSkg X19VSU5UNjRfVFlQRV9fIGdvbXBkX2FjY2Vzc18jI3QjI18jI207CisgIEdPTVBEX0ZPUkVBQ0hf QUNDRVNTIChnb21wZF9kZWNsYXJlX2FjY2VzcykKKyN1bmRlZiBnb21wZF9kZWNsYXJlX2FjY2Vz cworCisjZGVmaW5lIGdvbXBkX2RlY2xhcmVfc2l6ZW9mX21lbWJlcnModCwgbSkgXAorICBfX1VJ TlQ2NF9UWVBFX18gZ29tcGRfc2l6ZW9mXyMjdCMjXyMjbTsKKyAgR09NUERfRk9SRUFDSF9BQ0NF U1MgKGdvbXBkX2RlY2xhcmVfc2l6ZW9mX21lbWJlcnMpCisjdW5kZWYgZ29tcGRfZGVjbGFyZV9z aXplb2ZfbWVtYmVycworCisjZGVmaW5lIGdvbXBkX2RlY2xhcmVfc2l6ZXModCkgX19VSU5UNjRf VFlQRV9fIGdvbXBkX3NpemVvZl8jI3Q7CisgIEdPTVBEX1NJWkVTIChnb21wZF9kZWNsYXJlX3Np emVzKQorI3VuZGVmIGdvbXBkX2RlY2xhcmVfc2l6ZXMKKworY29uc3QgY2hhciAqKm9tcGRfZGxs X2xvY2F0aW9ucyA9IE5VTEw7CitfX1VJTlQ2NF9UWVBFX18gZ29tcGRfc3RhdGU7CisKK3ZvaWQK K2dvbXBkX2xvYWQgKCkKK3sKKyAgY29uc3QgY2hhciAqb21wZF9lbnZfdmFyID0gZ2V0ZW52ICgi T01QX0RFQlVHIik7CisgIGlmIChvbXBkX2Vudl92YXIgPT0gTlVMTCB8fCBzdHJjbXAgKG9tcGRf ZW52X3ZhciwgImVuYWJsZWQiKSkKKyAgICByZXR1cm47CisKKyAgLyogR2V0IHRoZSBvZmZzZXQg b2YgdGhlIHN0cnVjdCBtZW1iZXJzLiAgKi8KKyAgI2RlZmluZSBnb21wZF9pbml0X2FjY2Vzcyh0 LCBtKSAgXAorICAgIGdvbXBkX2FjY2Vzc18jI3QjI18jI20gPSAoX19VSU5UNjRfVFlQRV9fKSAm ICgoKHN0cnVjdCB0ICopIE5VTEwpLT5tKTsKKyAgICBHT01QRF9GT1JFQUNIX0FDQ0VTUyAoZ29t cGRfaW5pdF9hY2Nlc3MpOworICAjdW5kZWYgZ29tcGRfaW5pdF9hY2Nlc3MKKworICAvKiBHZXQg c2l6ZW9mIG1lbWJlcnMuICAqLworCisgICNkZWZpbmUgZ29tcGRfaW5pdF9zaXplb2ZfbWVtYmVy cyh0LCBtKSBcCisgICAgZ29tcGRfc2l6ZW9mXyMjdCMjXyMjbSA9IHNpemVvZiAoKChzdHJ1Y3Qg dCAqKSBOVUxMKS0+bSk7CisgICAgR09NUERfRk9SRUFDSF9BQ0NFU1MgKGdvbXBkX2luaXRfc2l6 ZW9mX21lbWJlcnMpOworICAjdW5kZWYgZ29tcGRfZGVjbGFyZV9zaXplb2ZfbWVtYmVycworCisg ICNkZWZpbmUgZ29tcGRfaW5pdF9zaXplcyh0KSBnb21wZF9zaXplb2ZfIyN0ID0gc2l6ZW9mIChz dHJ1Y3QgdCk7CisgICAgR09NUERfU0laRVMgKGdvbXBkX2luaXRfc2l6ZXMpCisgICN1bmRlZiBn b21wZF9pbml0X3NpemVzCisKKyAgZ29tcF9kZWJ1ZyAoMiwgIk9NUCBPTVBEIGFjdGl2ZVxuIik7 CisgIHN0YXRpYyBjb25zdCBjaGFyICpvbXBkX2RsbF9sb2NhdGlvbnNfYXJyYXlbMl0KKyAgICA9 IHsibGliZ29tcGQiIFNPTkFNRV9TVUZGSVggKDEpICwgTlVMTH07CisgIGdvbXBkX3N0YXRlIHw9 IE9NUERfRU5BQkxFRDsKKyAgb21wZF9kbGxfbG9jYXRpb25zID0gJm9tcGRfZGxsX2xvY2F0aW9u c19hcnJheVswXTsKKyAgb21wZF9kbGxfbG9jYXRpb25zX3ZhbGlkICgpOworfQorCisjaWZuZGVm IF9fRUxGX18KKy8qIER1bW15IGZ1bmN0aW9ucy4gdGhleSBzaG91ZCBub3QgYmUgb3B0aW1pemVk LiAgKi8KKwordm9pZCBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKQorb21wZF9kbGxfbG9jYXRp b25zX3ZhbGlkICgpCit7CisgIGFzbSAoIiIpOworfQorCit2b2lkIF9fYXR0cmlidXRlX18gKChu b2lubGluZSkpCitvbXBkX2JwX3BhcmFsbGVsX2JlZ2luICgpCit7CisgIGFzbSAoIiIpOworfQor Cit2b2lkIF9fYXR0cmlidXRlX18gKChub2lubGluZSkpCitvbXBkX2JwX3BhcmFsbGVsX2VuZCAo KQoreworICBhc20gKCIiKTsKK30KKwordm9pZCBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKQor b21wZF9icF90YXNrX2JlZ2luICgpCit7CisgIGFzbSAoIiIpOworfQorCit2b2lkIF9fYXR0cmli dXRlX18gKChub2lubGluZSkpCitvbXBkX2JwX3Rhc2tfZW5kICgpCit7CisgIGFzbSAoIiIpOwor fQorCit2b2lkIF9fYXR0cmlidXRlX18gKChub2lubGluZSkpCitvbXBkX2JwX3RocmVhZF9iZWdp biAoKQoreworICBhc20gKCIiKTsKK30KKwordm9pZCBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUp KQorb21wZF9icF90aHJlYWRfZW5kICgpCit7CisgIGFzbSAoIiIpOworfQorCit2b2lkIF9fYXR0 cmlidXRlX18gKChub2lubGluZSkpCitvbXBkX2JwX2RldmljZV9iZWdpbiAoKQoreworICBhc20g KCIiKTsKK30KKwordm9pZCBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKQorb21wZF9icF9kZXZp Y2VfZW5kICgpCit7CisgIGFzbSAoIiIpOworfQorI2VuZGlmIC8qIF9fRUxGX18qLwpkaWZmIC0t Z2l0IGEvbGliZ29tcC9vbXBkLXN1cHBvcnQuaCBiL2xpYmdvbXAvb21wZC1zdXBwb3J0LmgKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmQ2MGZjNTU4NGU5Ci0tLSAvZGV2 L251bGwKKysrIGIvbGliZ29tcC9vbXBkLXN1cHBvcnQuaApAQCAtMCwwICsxLDU3IEBACisvKiBD b3B5cmlnaHQgKEMpIDIwMjIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgICBDb250 cmlidXRlZCBieSBNb2hhbWVkIEF0ZWYgPG1vaGFtZWRhdGVmMTY5OEBnbWFpbC5jb20+LgorICAg VGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBPZmZsb2FkaW5nIGFuZCBNdWx0aSBQcm9jZXNz aW5nIExpYnJhcnkKKyAgIChsaWJnb21wKS4KKyAgIExpYmdvbXAgaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICAgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAg IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMsIG9yIChhdCB5 b3VyIG9wdGlvbikKKyAgIGFueSBsYXRlciB2ZXJzaW9uLgorICAgTGliZ29tcCBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkK KyAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MKKyAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yCisgICBtb3JlIGRldGFpbHMuCisgICBV bmRlciBTZWN0aW9uIDcgb2YgR1BMIHZlcnNpb24gMywgeW91IGFyZSBncmFudGVkIGFkZGl0aW9u YWwKKyAgIHBlcm1pc3Npb25zIGRlc2NyaWJlZCBpbiB0aGUgR0NDIFJ1bnRpbWUgTGlicmFyeSBF eGNlcHRpb24sIHZlcnNpb24KKyAgIDMuMSwgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24uCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbmQKKyAgIGEgY29weSBvZiB0aGUgR0NDIFJ1 bnRpbWUgTGlicmFyeSBFeGNlcHRpb24gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07CisgICBzZWUg dGhlIGZpbGVzIENPUFlJTkczIGFuZCBDT1BZSU5HLlJVTlRJTUUgcmVzcGVjdGl2ZWx5LiAgSWYg bm90LCBzZWUKKyAgIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisKKy8qVGhp cyBmaWxlIGNvbnRhaW5zIHRoZSBydW50aW1lIHN1cHBvcnQgZm9yIGdvbXBkLiAgKi8KKworI2lm bmRlZiBfT01QRF9TVVBQT1JUX0gKKyNkZWZpbmUgX09NUERfU1VQUE9SVF9ICisKKyNpbmNsdWRl ICJvbXAtdG9vbHMuaCIKKyNpbmNsdWRlICJwbHVnaW4tc3VmZml4LmgiCisjaW5jbHVkZSAibGli Z29tcC5oIgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1 ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkZGVmLmg+CisKK3ZvaWQgZ29tcGRfbG9hZCAoKTsK K2V4dGVybiBfX1VJTlQ2NF9UWVBFX18gZ29tcGRfc3RhdGU7CisKKyNkZWZpbmUgT01QRF9FTkFC TEVEIDB4MQorCisjZGVmaW5lIEdPTVBEX0ZPUkVBQ0hfQUNDRVNTKGdvbXBkX2FjY2VzcykgXAor ICAgZ29tcGRfYWNjZXNzIChnb21wX3Rhc2tfaWN2LCBudGhyZWFkc192YXIpIFwKKyAgIGdvbXBk X2FjY2VzcyAoZ29tcF90YXNrX2ljdiwgcnVuX3NjaGVkX3ZhcikgXAorICAgZ29tcGRfYWNjZXNz IChnb21wX3Rhc2tfaWN2LCBydW5fc2NoZWRfY2h1bmtfc2l6ZSkgXAorICAgZ29tcGRfYWNjZXNz IChnb21wX3Rhc2tfaWN2LCBkZWZhdWx0X2RldmljZV92YXIpIFwKKyAgIGdvbXBkX2FjY2VzcyAo Z29tcF90YXNrX2ljdiwgdGhyZWFkX2xpbWl0X3ZhcikgXAorICAgZ29tcGRfYWNjZXNzIChnb21w X3Rhc2tfaWN2LCBkeW5fdmFyKSBcCisgICBnb21wZF9hY2Nlc3MgKGdvbXBfdGFza19pY3YsIGJp bmRfdmFyKSBcCisgICBnb21wZF9hY2Nlc3MgKGdvbXBfdGhyZWFkLCB0YXNrKSBcCisgICBnb21w ZF9hY2Nlc3MgKGdvbXBfdGhyZWFkX3Bvb2wsIHRocmVhZHMpIFwKKyAgIGdvbXBkX2FjY2VzcyAo Z29tcF90aHJlYWQsIHRzKSBcCisgICBnb21wZF9hY2Nlc3MgKGdvbXBfdGVhbV9zdGF0ZSwgdGVh bV9pZCkgXAorCisjZGVmaW5lIEdPTVBEX1NJWkVTKGdvbXBkX3NpemUpIFwKKyAgIGdvbXBkX3Np emUgKGdvbXBfdGhyZWFkKSBcCisgICBnb21wZF9zaXplIChnb21wX3Rhc2tfaWN2KSBcCisgICBn b21wZF9zaXplIChnb21wX3Rhc2spCisKKyNlbmRpZiAvKiBfT01QRF9TVVBQT1JUX0ggKi8KZGlm ZiAtLWdpdCBhL2xpYmdvbXAvb21wZC10eXBlcy5oLmluIGIvbGliZ29tcC9vbXBkLXR5cGVzLmgu aW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmU1YmZiMmYzN2NmCi0t LSAvZGV2L251bGwKKysrIGIvbGliZ29tcC9vbXBkLXR5cGVzLmguaW4KQEAgLTAsMCArMSw1NCBA QAorLyogQ29weXJpZ2h0IChDKSAyMDIyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgor ICAgQ29udHJpYnV0ZWQgYnkgTW9oYW1lZCBBdGVmIDxtb2hhbWVkYXRlZjE2OThAZ21haWwuY29t Pi4KKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgT2ZmbG9hZGluZyBhbmQgTXVsdGkg UHJvY2Vzc2luZyBMaWJyYXJ5CisgICAobGliZ29tcCkuCisgICBMaWJnb21wIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAgIHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5CisgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzLCBv ciAoYXQgeW91ciBvcHRpb24pCisgICBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAgIExpYmdvbXAgaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhP VVQgQU5ZCisgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCisgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcgorICAgbW9yZSBkZXRhaWxz LgorICAgVW5kZXIgU2VjdGlvbiA3IG9mIEdQTCB2ZXJzaW9uIDMsIHlvdSBhcmUgZ3JhbnRlZCBh ZGRpdGlvbmFsCisgICBwZXJtaXNzaW9ucyBkZXNjcmliZWQgaW4gdGhlIEdDQyBSdW50aW1lIExp YnJhcnkgRXhjZXB0aW9uLCB2ZXJzaW9uCisgICAzLjEsIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYW5kCisgICBhIGNvcHkgb2YgdGhl IEdDQyBSdW50aW1lIExpYnJhcnkgRXhjZXB0aW9uIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOwor ICAgc2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJlc3BlY3RpdmVs eS4gIElmIG5vdCwgc2VlCisgICA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwor CisvKiBUaGlzIGZpbGUgY29udGFpbnMgdGhlIHR5cGVzIG5lZWRlZCBmb3IgT01QRCBpbXBsZW1l bnRhdGlvbi4gICovCisKKyNpZm5kZWYgX09NUERfVFlQRVNfSAorI2RlZmluZSBfT01QRF9UWVBF U19ICisKKyNpZmRlZiBfX2NwdWxzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworI2RlZmlu ZSBPTVBEX1RZUEVTX1ZFUlNJT04gICAyMDE4MDkwNiAvKiBZWVlZTU1ERCBGb3JtYXQuICAqLwor CisvKiBLaW5kcyBvZiBkZXZpY2UgdGhyZWFkcy4gICovCisjZGVmaW5lIE9NUERfVEhSRUFEX0lE X1BUSFJFQUQgICAgICAoKG9tcGRfdGhyZWFkX2lkX3QpMCkKKyNkZWZpbmUgT01QRF9USFJFQURf SURfTFdQICAgICAgICAgICgob21wZF90aHJlYWRfaWRfdCkxKQorI2RlZmluZSBPTVBEX1RIUkVB RF9JRF9XSU5USFJFQUQgICAgKChvbXBkX3RocmVhZF9pZF90KTIpCisKKy8qIFRoZSByYW5nZSBv ZiBub24tc3RhbmRhcmQgaW1wbGVtZW50YXRpb24gZGVmaW5lZCB2YWx1ZXMuICAqLworI2RlZmlu ZSBPTVBEX1RIUkVBRF9JRF9MTyAgICAgICAoKG9tcGRfdGhyZWFkX2lkX3QpMTAwMDAwMCkKKyNk ZWZpbmUgT01QRF9USFJFQURfSURfSEkgICAgICAgKChvbXBkX3RocmVhZF9pZF90KTExMDAwMDAp CisKKy8qIE1lbW9yeSBBY2Nlc3MgU2VnbWVudCBkZWZpbml0aW9ucyBmb3IgSG9zdCBhbmQgVGFy Z2V0IERldmljZXMuICAqLworI2RlZmluZSBPTVBEX1NFR01FTlRfVU5TUEVDSUZJRUQgICAgICAg ICAgICAgKChvbXBkX3NlZ190KTApCisKKy8qIEtpbmRzIG9mIGRldmljZSBkZXZpY2UgYWRkcmVz cyBzcGFjZXMuICAqLworI2RlZmluZSBPTVBEX0RFVklDRV9LSU5EX0hPU1QgICAgICgob21wZF9k ZXZpY2VfdCkxKQorCisvKiBUaGUgcmFuZ2Ugb2Ygbm9uLXN0YW5kYXJkIGltcGxlbWVudGF0aW9u IGRlZmluZWQgdmFsdWVzLiAgKi8KKyNkZWZpbmUgT01QRF9ERVZJQ0VfSU1QTF9MTyAgICAgICAo KG9tcGRfZGV2aWNlX3QpMTAwMDAwMCkKKyNkZWZpbmUgT01QRF9ERVZJQ0VfSU1QTF9ISSAgICAg ICAoKG9tcGRfZGV2aWNlX3QpMTEwMDAwMCkKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9IC8vIGV4 dGVybiBDCisjZW5kaWYKKyNlbmRpZiAvKiBfT01QRF9UWVBFU19IICovCmRpZmYgLS1naXQgYS9s aWJnb21wL3RlYW0uYyBiL2xpYmdvbXAvdGVhbS5jCmluZGV4IGNiNjg3NWQ3MGZhLi4yOTk4NGJh ZmJiZSAxMDA2NDQKLS0tIGEvbGliZ29tcC90ZWFtLmMKKysrIGIvbGliZ29tcC90ZWFtLmMKQEAg LTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJwb29sLmgiCiAjaW5jbHVkZSA8c3RkbGliLmg+CiAj aW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSAib21wZC1zdXBwb3J0LmgiCiAKICNpZmRlZiBM SUJHT01QX1VTRV9QVEhSRUFEUwogcHRocmVhZF9hdHRyX3QgZ29tcF90aHJlYWRfYXR0cjsKQEAg LTMyMSw2ICszMjIsNyBAQCBnb21wX3RlYW1fc3RhcnQgKHZvaWQgKCpmbikgKHZvaWQgKiksIHZv aWQgKmRhdGEsIHVuc2lnbmVkIG50aHJlYWRzLAogCQkgdW5zaWduZWQgZmxhZ3MsIHN0cnVjdCBn b21wX3RlYW0gKnRlYW0sCiAJCSBzdHJ1Y3QgZ29tcF90YXNrZ3JvdXAgKnRhc2tncm91cCkKIHsK KyAgb21wZF9icF9wYXJhbGxlbF9iZWdpbiAoKTsKICAgc3RydWN0IGdvbXBfdGhyZWFkX3N0YXJ0 X2RhdGEgKnN0YXJ0X2RhdGEgPSBOVUxMOwogICBzdHJ1Y3QgZ29tcF90aHJlYWQgKnRociwgKm50 aHI7CiAgIHN0cnVjdCBnb21wX3Rhc2sgKnRhc2s7CkBAIC0xMDExLDYgKzEwMTMsNyBAQCBnb21w X3RlYW1fZW5kICh2b2lkKQogICAgICAgcG9vbC0+bGFzdF90ZWFtID0gdGVhbTsKICAgICAgIGdv bXBfcmVsZWFzZV90aHJlYWRfcG9vbCAocG9vbCk7CiAgICAgfQorICBvbXBkX2JwX3BhcmFsbGVs X2VuZCAoKTsKIH0KIAogI2lmZGVmIExJQkdPTVBfVVNFX1BUSFJFQURTCg== --000000000000196a2b05daa3127e--