Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1ulPDz-00057z-8a for pgsql-hackers@arkaria.postgresql.org; Mon, 11 Aug 2025 09:53:51 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1ulPDx-00BWyF-EQ for pgsql-hackers@arkaria.postgresql.org; Mon, 11 Aug 2025 09:53:49 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1ulPDw-00BWy7-TA for pgsql-hackers@lists.postgresql.org; Mon, 11 Aug 2025 09:53:49 +0000 Received: from mail-vk1-xa35.google.com ([2607:f8b0:4864:20::a35]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1ulPDu-001rLb-22 for pgsql-hackers@postgresql.org; Mon, 11 Aug 2025 09:53:48 +0000 Received: by mail-vk1-xa35.google.com with SMTP id 71dfb90a1353d-5390f4513e2so3251081e0c.2 for ; Mon, 11 Aug 2025 02:53:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1754906026; x=1755510826; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=KC7cyTgLREb+ZCXQdRAEr8UWvhXM/1XoiehEZSnmTiQ=; b=Zop5pFX123ch+LO9sYGCcGR4MBF3plRCCtLbYVF86eSB9NEvjkqbRFLiwjxdnpPuSo ZFhGq6gXGUY21Nj/SydrIBkqT2gAm0B3iI4cWbEO0rUn561fP/ssebM/B+srBMei75WT Q3a7SCtcW32b1TPvKZc9AIKzbIE/hc2gXb2aBKOWlZuT7J5ez70OujIFl/UQGBZgoxR6 g5Ck7VI5Eo9sfGc1uXr+gaSdL3I5pMcFHDS7v/T6HX6e8TCUafcb8Nx7D0NHdR5B+ZMi qqxm0qhxD7QYyOlLknaLSaUWMbZFewlCQB7iWdQB5K0irqZblJJGjC97ZWFfioprBt19 wuMQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754906026; x=1755510826; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=KC7cyTgLREb+ZCXQdRAEr8UWvhXM/1XoiehEZSnmTiQ=; b=UuuQErejUo0kgcUmGwyJ0SR1TAU/EG7XAiBPoXIFuWZwc76VFsz2W/D5qgjwG271y7 Q8lDX8KZ6MFGHWNcnoVu7YZjV1JhPytQ+WN3zT67OBSSF2wZU0pANVar8gSQok5OXC6W lkQvxMMkBZy3YRxrAtkKCjc8SYINnfjd+fwSqh7q7YXOSoQCNZWOD9monyu/7oWez193 qGd8slHgs3BpsAs4+3g9Mtf4xkO9O3ckp3YisAtB+Ib5I7/0BE9f/Z4PF7k1JUy4xmAi r2WLYUWDSKoGY5XPnj1TZ9p6kHMURaLAsoFfIWDkPQBfSGvW4EiUNU+tdkiIN/p/v1Se o28g== X-Gm-Message-State: AOJu0YyMXqQngwTxoHAG3nJO0T2U2i00fgKnuRQnwfV+hrGyDu1tMiMd vYftLpNR3M0m2e0HNZ9NtKTADvLbwaFH+mqU50j6sacLTHBRQE7cGcnGVcOVyIyIxdSbivxGrKz IWKUCzFOIDZw1BED/LdTcGmuhS0zAcc0GfM0GZSfLeQ== X-Gm-Gg: ASbGncuPb8IAAvAmWiDHQkjLnjldaT1ZlUe6Gosv7HzJdSGTbEmNAIPnbWvV43ioX3j McFtlINY/fHwYsNB08dzO+Ft0gdGGAuEVpqDFtEqpMej4gl+4lhwQOJcqNAqMHgbHG2O64ZR07+ utbelOl4zlLHd/L9mkYU44ntsZx4dt1krJXVQjxcZXdWgsD0fu+Q4yb4B0AZA1S6i0U5uqRa8OF GkXCXkIEaH2kbPWL88UyerV8IMwsUIA4q57FSc= X-Google-Smtp-Source: AGHT+IHeqah59Mds6PaybkJMQ1ruQ1MUhvFDTcK6xuvrV211g1zZNqKrPK6zUWXBpmqInTVqoFaSxbjMD2zyUvncaWc= X-Received: by 2002:a05:6122:923:b0:535:e714:70af with SMTP id 71dfb90a1353d-53a52ec0e31mr4044110e0c.7.1754906025698; Mon, 11 Aug 2025 02:53:45 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: jian he Date: Mon, 11 Aug 2025 17:53:08 +0800 X-Gm-Features: Ac12FXwCje_Qm1JG26BfnhqvwnbKQynD8pGx-6S2lwopGa892lRE3I4Op-VVLpo Message-ID: Subject: Re: alter check constraint enforceability To: Robert Treat Cc: PostgreSQL-development Content-Type: multipart/mixed; boundary="00000000000046ca3f063c13e6d0" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000046ca3f063c13e6d0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Aug 7, 2025 at 7:35=E2=80=AFAM Robert Treat wrote: > > + if (rel->rd_rel->relkind =3D=3D RELKIND_RELATION && > + cmdcon->is_enforced && > + !currcon->conenforced) > > i think I have convinced myself that this is correct, but maybe I will > ask you if you had any concerns that this needed to also consider > RELKIND_PARTITIONED_TABLE as well? > ATExecAlterCheckConstrEnforceability itself will be recursive to all the children. AlterConstrUpdateConstraintEntry is responsible for changing the catalog st= ate. except the changing the catalog state, if we change the check constraint from NOT ENFORCED to ENFORCED, we also need to verify it in phase 3. that's the purpose of > + if (rel->rd_rel->relkind =3D=3D RELKIND_RELATION && > + cmdcon->is_enforced && > + !currcon->conenforced) partitioned tables don't have storage, phase3 table scan to verify check constraint on partitioned table don't have effect. also partitioned table check constraint (name, definition (pg_constraint.conbin) must match with partition otherwise partition can be attached to the partitioned table. so here you don't need to consider RELKIND_PARTITIONED_TABLE. --00000000000046ca3f063c13e6d0 Content-Type: text/x-patch; charset="US-ASCII"; name="v3-0001-alter-check-constraint-enforceability.patch" Content-Disposition: attachment; filename="v3-0001-alter-check-constraint-enforceability.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_me6xpapr0 RnJvbSBhNTQ2MDljOGFhNjYxNzRlMTcxZmRmZDdjMDg1MTllNTg3NTYxZDg1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IE1vbiwgMTEgQXVnIDIwMjUgMTc6NTE6NTYgKzA4MDAKU3ViamVjdDogW1BBVENIIHYz IDEvMV0gYWx0ZXIgY2hlY2sgY29uc3RyYWludCBlbmZvcmNlYWJpbGl0eQoKc3ludGF4OiBBTFRF UiBUQUJMRSBBTFRFUiBDT05TVFJBSU5UIFtOT1RdIEVORk9SQ0VECgpjb250ZXh0OiBodHRwczov L2dpdC5wb3N0Z3Jlc3FsLm9yZy9jZ2l0L3Bvc3RncmVzcWwuZ2l0L2NvbW1pdC8/aWQ9Y2E4N2M0 MTVlMmZjY2Y4MWNlYzZmZDQ1Njk4ZGRlOWZhZTBhYjU3MApkaXNjdXNzaW9uOiBodHRwczovL3Bv c3Rnci5lcy9tL0NBQ0p1ZnhIQ2hfRlUtRnNFd3NDdmc5bU42LTV0elI2SDludG4rMEtVZ1RDYWVy RE9tZ0BtYWlsLmdtYWlsLmNvbQotLS0KIGRvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dt bCAgICAgICAgIHwgICA0ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAg ICAgICB8IDE2MyArKysrKysrKysrKysrKysrKysrKy0tCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL2NvbnN0cmFpbnRzLm91dCB8ICA1NSArKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9pbmhlcml0Lm91dCAgICAgfCAgNTggKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L2NvbnN0cmFpbnRzLnNxbCAgICAgIHwgIDM2ICsrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9p bmhlcml0LnNxbCAgICAgICAgICB8ICA0MCArKysrKysKIDYgZmlsZXMgY2hhbmdlZCwgMzQ1IGlu c2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9y ZWYvYWx0ZXJfdGFibGUuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbApp bmRleCA4ODY3ZGE2YzY5My4uYTAzZTM2NzYyZjIgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9y ZWYvYWx0ZXJfdGFibGUuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNn bWwKQEAgLTU3MSw4ICs1NzEsOCBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAgIDxsaXN0 aXRlbT4KICAgICAgPHBhcmE+CiAgICAgICBUaGlzIGZvcm0gYWx0ZXJzIHRoZSBhdHRyaWJ1dGVz IG9mIGEgY29uc3RyYWludCB0aGF0IHdhcyBwcmV2aW91c2x5Ci0gICAgICBjcmVhdGVkLiBDdXJy ZW50bHkgb25seSBmb3JlaWduIGtleSBjb25zdHJhaW50cyBtYXkgYmUgYWx0ZXJlZCBpbgotICAg ICAgdGhpcyBmYXNoaW9uLCBidXQgc2VlIGJlbG93LgorICAgICAgY3JlYXRlZC4gQ3VycmVudGx5 IDxsaXRlcmFsPkZPUkVJR04gS0VZPC9saXRlcmFsPiBhbmQKKyAgICAgIDxsaXRlcmFsPkNIRUNL PC9saXRlcmFsPiBjb25zdHJhaW50cyBtYXkgYmUgYWx0ZXJlZCBpbiB0aGlzIGZhc2hpb24sIGJ1 dCBzZWUgYmVsb3cuCiAgICAgIDwvcGFyYT4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0 ZW50cnk+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IGM2ZGQyZTAyMGRhLi5hM2ZkMzA2 YzI2YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTQwMyw2ICs0MDMsOSBAQCBzdGF0 aWMgYm9vbCBBVEV4ZWNBbHRlckNvbnN0ckVuZm9yY2VhYmlsaXR5KExpc3QgKip3cXVldWUsIEFU QWx0ZXJDb25zdHJhaW50ICpjbQogCQkJCQkJCQkJCQlPaWQgUmVmZXJlbmNlZFBhcmVudFVwZFRy aWdnZXIsCiAJCQkJCQkJCQkJCU9pZCBSZWZlcmVuY2luZ1BhcmVudEluc1RyaWdnZXIsCiAJCQkJ CQkJCQkJCU9pZCBSZWZlcmVuY2luZ1BhcmVudFVwZFRyaWdnZXIpOworc3RhdGljIGJvb2wgQVRF eGVjQWx0ZXJDaGVja0NvbnN0ckVuZm9yY2VhYmlsaXR5KExpc3QgKip3cXVldWUsIEFUQWx0ZXJD b25zdHJhaW50ICpjbWRjb24sCisJCQkJCQkJCQkJCQkgUmVsYXRpb24gY29ucmVsLCBIZWFwVHVw bGUgY29udHVwbGUsCisJCQkJCQkJCQkJCQkgYm9vbCByZWN1cnNlLCBib29sIHJlY3Vyc2luZywg TE9DS01PREUgbG9ja21vZGUpOwogc3RhdGljIGJvb2wgQVRFeGVjQWx0ZXJDb25zdHJEZWZlcnJh YmlsaXR5KExpc3QgKip3cXVldWUsIEFUQWx0ZXJDb25zdHJhaW50ICpjbWRjb24sCiAJCQkJCQkJ CQkJICAgUmVsYXRpb24gY29ucmVsLCBSZWxhdGlvbiB0Z3JlbCwgUmVsYXRpb24gcmVsLAogCQkJ CQkJCQkJCSAgIEhlYXBUdXBsZSBjb250dXBsZSwgYm9vbCByZWN1cnNlLApAQCAtNDIxLDYgKzQy NCw5IEBAIHN0YXRpYyB2b2lkIEFsdGVyQ29uc3RyRW5mb3JjZWFiaWxpdHlSZWN1cnNlKExpc3Qg Kip3cXVldWUsIEFUQWx0ZXJDb25zdHJhaW50ICpjCiAJCQkJCQkJCQkJCSBPaWQgUmVmZXJlbmNl ZFBhcmVudFVwZFRyaWdnZXIsCiAJCQkJCQkJCQkJCSBPaWQgUmVmZXJlbmNpbmdQYXJlbnRJbnNU cmlnZ2VyLAogCQkJCQkJCQkJCQkgT2lkIFJlZmVyZW5jaW5nUGFyZW50VXBkVHJpZ2dlcik7Citz dGF0aWMgdm9pZCBBbHRlckNoZWNrQ29uc3RyRW5mb3JjZWFiaWxpdHlSZWN1cnNlKExpc3QgKip3 cXVldWUsIEFUQWx0ZXJDb25zdHJhaW50ICpjbWRjb24sCisJCQkJCQkJCQkJCQkgIFJlbGF0aW9u IGNvbnJlbCwgT2lkIGNvbnJlbGlkLAorCQkJCQkJCQkJCQkJICBib29sIHJlY3Vyc2UsIGJvb2wg cmVjdXJzaW5nLCBMT0NLTU9ERSBsb2NrbW9kZSk7CiBzdGF0aWMgdm9pZCBBbHRlckNvbnN0ckRl ZmVycmFiaWxpdHlSZWN1cnNlKExpc3QgKip3cXVldWUsIEFUQWx0ZXJDb25zdHJhaW50ICpjbWRj b24sCiAJCQkJCQkJCQkJCVJlbGF0aW9uIGNvbnJlbCwgUmVsYXRpb24gdGdyZWwsIFJlbGF0aW9u IHJlbCwKIAkJCQkJCQkJCQkJSGVhcFR1cGxlIGNvbnR1cGxlLCBib29sIHJlY3Vyc2UsCkBAIC0x MjE1Myw3ICsxMjE1OSw3IEBAIEdldEZvcmVpZ25LZXlDaGVja1RyaWdnZXJzKFJlbGF0aW9uIHRy aWdyZWwsCiAgKgogICogVXBkYXRlIHRoZSBhdHRyaWJ1dGVzIG9mIGEgY29uc3RyYWludC4KICAq Ci0gKiBDdXJyZW50bHkgb25seSB3b3JrcyBmb3IgRm9yZWlnbiBLZXkgYW5kIG5vdCBudWxsIGNv bnN0cmFpbnRzLgorICogQ3VycmVudGx5IHdvcmtzIGZvciBGb3JlaWduIEtleSwgQ0hFQ0ssIGFu ZCBub3QgbnVsbCBjb25zdHJhaW50cy4KICAqCiAgKiBJZiB0aGUgY29uc3RyYWludCBpcyBtb2Rp ZmllZCwgcmV0dXJucyBpdHMgYWRkcmVzczsgb3RoZXJ3aXNlLCByZXR1cm4KICAqIEludmFsaWRP YmplY3RBZGRyZXNzLgpAQCAtMTIyMTUsMTEgKzEyMjIxLDEzIEBAIEFURXhlY0FsdGVyQ29uc3Ry YWludChMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiByZWwsIEFUQWx0ZXJDb25zdHJhaW50ICpjbWRj b24sCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCiAJCQkJIGVycm1z ZygiY29uc3RyYWludCBcIiVzXCIgb2YgcmVsYXRpb24gXCIlc1wiIGlzIG5vdCBhIGZvcmVpZ24g a2V5IGNvbnN0cmFpbnQiLAogCQkJCQkJY21kY29uLT5jb25uYW1lLCBSZWxhdGlvbkdldFJlbGF0 aW9uTmFtZShyZWwpKSkpOwotCWlmIChjbWRjb24tPmFsdGVyRW5mb3JjZWFiaWxpdHkgJiYgY3Vy cmNvbi0+Y29udHlwZSAhPSBDT05TVFJBSU5UX0ZPUkVJR04pCisJaWYgKGNtZGNvbi0+YWx0ZXJF bmZvcmNlYWJpbGl0eSAmJgorCQkoY3VycmNvbi0+Y29udHlwZSAhPSBDT05TVFJBSU5UX0ZPUkVJ R04gJiYgY3VycmNvbi0+Y29udHlwZSAhPSBDT05TVFJBSU5UX0NIRUNLKSkKIAkJZXJlcG9ydChF UlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKLQkJCQkgZXJy bXNnKCJjYW5ub3QgYWx0ZXIgZW5mb3JjZWFiaWxpdHkgb2YgY29uc3RyYWludCBcIiVzXCIgb2Yg cmVsYXRpb24gXCIlc1wiIiwKLQkJCQkJCWNtZGNvbi0+Y29ubmFtZSwgUmVsYXRpb25HZXRSZWxh dGlvbk5hbWUocmVsKSkpKTsKKwkJCQllcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUp LAorCQkJCWVycm1zZygiY2Fubm90IGFsdGVyIGVuZm9yY2VhYmlsaXR5IG9mIGNvbnN0cmFpbnQg XCIlc1wiIG9mIHJlbGF0aW9uIFwiJXNcIiIsCisJCQkJCQljbWRjb24tPmNvbm5hbWUsIFJlbGF0 aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpLAorCQkJCWVycmhpbnQoIk9ubHkgZm9yZWlnbiBrZXkg YW5kIGNoZWNrIGNvbnN0cmFpbnRzIGNhbiBjaGFuZ2UgZW5mb3JjZWFiaWxpdHkiKSk7CiAJaWYg KGNtZGNvbi0+YWx0ZXJJbmhlcml0YWJpbGl0eSAmJgogCQljdXJyY29uLT5jb250eXBlICE9IENP TlNUUkFJTlRfTk9UTlVMTCkKIAkJZXJlcG9ydChFUlJPUiwKQEAgLTEyMzIxLDE2ICsxMjMyOSwy MCBAQCBBVEV4ZWNBbHRlckNvbnN0cmFpbnRJbnRlcm5hbChMaXN0ICoqd3F1ZXVlLCBBVEFsdGVy Q29uc3RyYWludCAqY21kY29uLAogCSAqIGVuZm9yY2VhYmlsaXR5LCB3ZSBkb24ndCBuZWVkIHRv IGV4cGxpY2l0bHkgdXBkYXRlIG11bHRpcGxlIGVudHJpZXMgaW4KIAkgKiBwZ190cmlnZ2VyIHJl bGF0ZWQgdG8gZGVmZXJyYWJpbGl0eS4KIAkgKgotCSAqIE1vZGlmeWluZyBlbmZvcmNlYWJpbGl0 eSBpbnZvbHZlcyBlaXRoZXIgY3JlYXRpbmcgb3IgZHJvcHBpbmcgdGhlCi0JICogdHJpZ2dlciwg ZHVyaW5nIHdoaWNoIHRoZSBkZWZlcnJhYmlsaXR5IHNldHRpbmcgd2lsbCBiZSBhZGp1c3RlZAor CSAqIE1vZGlmeWluZyBmb3JlaWduIGtleSBlbmZvcmNlYWJpbGl0eSBpbnZvbHZlcyBlaXRoZXIg Y3JlYXRpbmcgb3IgZHJvcHBpbmcKKwkgKiB0aGUgdHJpZ2dlciwgZHVyaW5nIHdoaWNoIHRoZSBk ZWZlcnJhYmlsaXR5IHNldHRpbmcgd2lsbCBiZSBhZGp1c3RlZAogCSAqIGF1dG9tYXRpY2FsbHku CiAJICovCi0JaWYgKGNtZGNvbi0+YWx0ZXJFbmZvcmNlYWJpbGl0eSAmJgorCWlmIChjbWRjb24t PmFsdGVyRW5mb3JjZWFiaWxpdHkgJiYgY3VycmNvbi0+Y29udHlwZSA9PSBDT05TVFJBSU5UX0ZP UkVJR04gJiYKIAkJQVRFeGVjQWx0ZXJDb25zdHJFbmZvcmNlYWJpbGl0eSh3cXVldWUsIGNtZGNv biwgY29ucmVsLCB0Z3JlbCwKIAkJCQkJCQkJCQljdXJyY29uLT5jb25yZWxpZCwgY3VycmNvbi0+ Y29uZnJlbGlkLAogCQkJCQkJCQkJCWNvbnR1cGxlLCBsb2NrbW9kZSwgSW52YWxpZE9pZCwKIAkJ CQkJCQkJCQlJbnZhbGlkT2lkLCBJbnZhbGlkT2lkLCBJbnZhbGlkT2lkKSkKIAkJY2hhbmdlZCA9 IHRydWU7CisJZWxzZSBpZiAoY21kY29uLT5hbHRlckVuZm9yY2VhYmlsaXR5ICYmIGN1cnJjb24t PmNvbnR5cGUgPT0gQ09OU1RSQUlOVF9DSEVDSyAmJgorCQlBVEV4ZWNBbHRlckNoZWNrQ29uc3Ry RW5mb3JjZWFiaWxpdHkod3F1ZXVlLCBjbWRjb24sIGNvbnJlbCwgY29udHVwbGUsCisJCQkJCQkJ CQkJCSByZWN1cnNlLCBmYWxzZSwgbG9ja21vZGUpKQorCQljaGFuZ2VkID0gdHJ1ZTsKIAogCWVs c2UgaWYgKGNtZGNvbi0+YWx0ZXJEZWZlcnJhYmlsaXR5ICYmCiAJCQkgQVRFeGVjQWx0ZXJDb25z dHJEZWZlcnJhYmlsaXR5KHdxdWV1ZSwgY21kY29uLCBjb25yZWwsIHRncmVsLCByZWwsCkBAIC0x MjM2MSw3ICsxMjM3MywxNDAgQEAgQVRFeGVjQWx0ZXJDb25zdHJhaW50SW50ZXJuYWwoTGlzdCAq KndxdWV1ZSwgQVRBbHRlckNvbnN0cmFpbnQgKmNtZGNvbiwKIH0KIAogLyoKLSAqIFJldHVybnMg dHJ1ZSBpZiB0aGUgY29uc3RyYWludCdzIGVuZm9yY2VhYmlsaXR5IGlzIGFsdGVyZWQuCisgKiBS ZXR1cm5zIHRydWUgaWYgdGhlIENIRUNLIGNvbnN0cmFpbnQncyBlbmZvcmNlYWJpbGl0eSBpcyBh bHRlcmVkLgorICoKKyAqIE5vdGUgdGhhdCB3ZSBtdXN0IHJlY3Vyc2UgZXZlbiB3aGVuIHRyeWlu ZyB0byBjaGFuZ2UgYSBjaGVjayBjb25zdHJhaW50IHRvCisgKiBub3QgZW5mb3JjZWQgaWYgaXQg aXMgYWxyZWFkeSBub3QgZW5mb3JjZWQsIGluIGNhc2UgZGVzY2VuZGFudCBjb25zdHJhaW50cwor ICogbWlnaHQgYmUgZW5mb3JjZWQgYW5kIG5lZWQgdG8gYmUgY2hhbmdlZCB0byBub3QgZW5mb3Jj ZWQuIENvbnZlcnNlbHksIHdlCisgKiBzaG91bGQgZG8gbm90aGluZyBpZiBhIGNvbnN0cmFpbnQg aXMgYmVpbmcgc2V0IHRvIGVuZm9yY2VkIGFuZCBpcyBhbHJlYWR5CisgKiBlbmZvcmNlZCwgYXMg ZGVzY2VuZGFudCBjb25zdHJhaW50cyBjYW5ub3QgYmUgZGlmZmVyZW50IGluIHRoYXQgY2FzZS4K KyAqLworc3RhdGljIGJvb2wKK0FURXhlY0FsdGVyQ2hlY2tDb25zdHJFbmZvcmNlYWJpbGl0eShM aXN0ICoqd3F1ZXVlLCBBVEFsdGVyQ29uc3RyYWludCAqY21kY29uLAorCQkJCQkJCQkJIFJlbGF0 aW9uIGNvbnJlbCwgSGVhcFR1cGxlIGNvbnR1cGxlLAorCQkJCQkJCQkJIGJvb2wgcmVjdXJzZSwg Ym9vbCByZWN1cnNpbmcsIExPQ0tNT0RFIGxvY2ttb2RlKQoreworCUZvcm1fcGdfY29uc3RyYWlu dCBjdXJyY29uOworCVJlbGF0aW9uCXJlbDsKKwlib29sCQljaGFuZ2VkID0gZmFsc2U7CisJTGlz dAkgICAqY2hpbGRyZW4gPSBOSUw7CisKKwkvKiBTaW5jZSB0aGlzIGZ1bmN0aW9uIHJlY3Vyc2Vz LCBpdCBjb3VsZCBiZSBkcml2ZW4gdG8gc3RhY2sgb3ZlcmZsb3cgKi8KKwljaGVja19zdGFja19k ZXB0aCgpOworCisJQXNzZXJ0KGNtZGNvbi0+YWx0ZXJFbmZvcmNlYWJpbGl0eSk7CisKKwljdXJy Y29uID0gKEZvcm1fcGdfY29uc3RyYWludCkgR0VUU1RSVUNUKGNvbnR1cGxlKTsKKworCUFzc2Vy dChjdXJyY29uLT5jb250eXBlID09IENPTlNUUkFJTlRfQ0hFQ0spOworCisJcmVsID0gdGFibGVf b3BlbihjdXJyY29uLT5jb25yZWxpZCwgbG9ja21vZGUpOworCWlmIChjdXJyY29uLT5jb25lbmZv cmNlZCAhPSBjbWRjb24tPmlzX2VuZm9yY2VkKQorCXsKKwkJQWx0ZXJDb25zdHJVcGRhdGVDb25z dHJhaW50RW50cnkoY21kY29uLCBjb25yZWwsIGNvbnR1cGxlKTsKKwkJY2hhbmdlZCA9IHRydWU7 CisJfQorCisJaWYgKCFjbWRjb24tPmlzX2VuZm9yY2VkIHx8IGNoYW5nZWQpCisJeworCQkvKgor CQkgKiBJZiB3ZSdyZSByZWN1cnNpbmcsIHRoZSBwYXJlbnQgaGFzIGFscmVhZHkgZG9uZSB0aGlz LCBzbyBza2lwIGl0LgorCQkgKiBBbHNvLCBpZiB0aGUgY29uc3RyYWludCBpcyBhIE5PIElOSEVS SVQgY29uc3RyYWludCwgd2Ugc2hvdWxkbid0IHRyeQorCQkgKiB0byBsb29rIGZvciBpdCBpbiB0 aGUgY2hpbGRyZW4uCisJCSovCisJCWlmICghcmVjdXJzaW5nICYmICFjdXJyY29uLT5jb25ub2lu aGVyaXQpCisJCQljaGlsZHJlbiA9IGZpbmRfYWxsX2luaGVyaXRvcnMoUmVsYXRpb25HZXRSZWxp ZChyZWwpLAorCQkJCQkJCQkJCSAgIGxvY2ttb2RlLCBOVUxMKTsKKworCQlmb3JlYWNoX29pZChj aGlsZG9pZCwgY2hpbGRyZW4pCisJCXsKKwkJCWlmIChjaGlsZG9pZCA9PSBSZWxhdGlvbkdldFJl bGlkKHJlbCkpCisJCQkJY29udGludWU7CisKKwkJCS8qCisJCQkgKiBJZiB3ZSBhcmUgdG9sZCBu b3QgdG8gcmVjdXJzZSwgdGhlcmUgaGFkIGJldHRlciBub3QgYmUgYW55IGNoaWxkCisJCQkgKiB0 YWJsZXMsIGJlY2F1c2Ugd2UgY2FuJ3QgY2hhbmdlIGNvbnN0cmFpbnQgZW5mb3JjZWFiaWxpdHkg b24gdGhlCisJCQkgKiBwYXJlbnQgdW5sZXNzIHdlIGhhdmUgY2hhbmdlZCBlbmZvcmNlYWJpbGl0 eSBmb3IgYWxsIGNoaWxkLgorCQkJKi8KKwkJCWlmICghcmVjdXJzZSkKKwkJCQllcmVwb3J0KEVS Uk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfVEFCTEVfREVGSU5JVElPTiksCisJ CQkJCQllcnJtc2coImNvbnN0cmFpbnQgbXVzdCBiZSBhbHRlcmVkIG9uIGNoaWxkIHRhYmxlcyB0 b28iKSk7CisKKwkJCUFsdGVyQ2hlY2tDb25zdHJFbmZvcmNlYWJpbGl0eVJlY3Vyc2Uod3F1ZXVl LCBjbWRjb24sIGNvbnJlbCwgY2hpbGRvaWQsIGZhbHNlLCB0cnVlLCBsb2NrbW9kZSk7CisJCX0K Kwl9CisKKwkvKgorCSAqIFRlbGwgUGhhc2UgMyB0byBjaGVjayB0aGF0IHRoZSBjb25zdHJhaW50 IGlzIHNhdGlzZmllZCBieSBleGlzdGluZyByb3dzLgorCSAqIFdlIGRvIHRoaXMgb25seSB3aGVu IGFsdGVyIHRoZSBjb25zdHJhaW50IGZyb20gbm90IGVuZm9yY2VkIHRvIGVuZm9yY2VkLgorCSAq LworCWlmIChyZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX1JFTEFUSU9OICYmCisJCWNt ZGNvbi0+aXNfZW5mb3JjZWQgJiYKKwkJIWN1cnJjb24tPmNvbmVuZm9yY2VkKQorCXsKKwkJQWx0 ZXJlZFRhYmxlSW5mbyAqdGFiOworCQlOZXdDb25zdHJhaW50ICpuZXdjb247CisJCURhdHVtCQl2 YWw7CisJCWNoYXIJICAgKmNvbmJpbjsKKworCQluZXdjb24gPSAoTmV3Q29uc3RyYWludCAqKSBw YWxsb2MwKHNpemVvZihOZXdDb25zdHJhaW50KSk7CisJCW5ld2Nvbi0+bmFtZSA9IHBzdHJkdXAo TmFtZVN0cihjdXJyY29uLT5jb25uYW1lKSk7CisJCW5ld2Nvbi0+Y29udHlwZSA9IENPTlNUUl9D SEVDSzsKKwkJdmFsID0gU3lzQ2FjaGVHZXRBdHRyTm90TnVsbChDT05TVFJPSUQsIGNvbnR1cGxl LAorCQkJCQkJCQkJIEFudW1fcGdfY29uc3RyYWludF9jb25iaW4pOworCQljb25iaW4gPSBUZXh0 RGF0dW1HZXRDU3RyaW5nKHZhbCk7CisJCW5ld2Nvbi0+cXVhbCA9IGV4cGFuZF9nZW5lcmF0ZWRf Y29sdW1uc19pbl9leHByKHN0cmluZ1RvTm9kZShjb25iaW4pLCByZWwsIDEpOworCisJCS8qIEZp bmQgb3IgY3JlYXRlIHdvcmsgcXVldWUgZW50cnkgZm9yIHRoaXMgdGFibGUgKi8KKwkJdGFiID0g QVRHZXRRdWV1ZUVudHJ5KHdxdWV1ZSwgcmVsKTsKKwkJdGFiLT5jb25zdHJhaW50cyA9IGxhcHBl bmQodGFiLT5jb25zdHJhaW50cywgbmV3Y29uKTsKKwl9CisKKwl0YWJsZV9jbG9zZShyZWwsIE5v TG9jayk7CisJcmV0dXJuIGNoYW5nZWQ7Cit9CisKK3N0YXRpYyB2b2lkCitBbHRlckNoZWNrQ29u c3RyRW5mb3JjZWFiaWxpdHlSZWN1cnNlKExpc3QgKip3cXVldWUsIEFUQWx0ZXJDb25zdHJhaW50 ICpjbWRjb24sCisJCQkJCQkJCQkgIFJlbGF0aW9uIGNvbnJlbCwgT2lkIGNvbnJlbGlkLAorCQkJ CQkJCQkJICBib29sIHJlY3Vyc2UsIGJvb2wgcmVjdXJzaW5nLAorCQkJCQkJCQkJICBMT0NLTU9E RSBsb2NrbW9kZSkKK3sKKwlTeXNTY2FuRGVzYyBwc2NhbjsKKwlIZWFwVHVwbGUJY2hpbGR0dXA7 CisJU2NhbktleURhdGEgc2tleVszXTsKKworCVNjYW5LZXlJbml0KCZza2V5WzBdLAorCQkJCUFu dW1fcGdfY29uc3RyYWludF9jb25yZWxpZCwKKwkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1iZXIsIEZf T0lERVEsCisJCQkJT2JqZWN0SWRHZXREYXR1bShjb25yZWxpZCkpOworCVNjYW5LZXlJbml0KCZz a2V5WzFdLAorCQkJCUFudW1fcGdfY29uc3RyYWludF9jb250eXBpZCwKKwkJCQlCVEVxdWFsU3Ry YXRlZ3lOdW1iZXIsIEZfT0lERVEsCisJCQkJT2JqZWN0SWRHZXREYXR1bShJbnZhbGlkT2lkKSk7 CisJU2NhbktleUluaXQoJnNrZXlbMl0sCisJCQkJQW51bV9wZ19jb25zdHJhaW50X2Nvbm5hbWUs CisJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX05BTUVFUSwKKwkJCQlDU3RyaW5nR2V0RGF0 dW0oY21kY29uLT5jb25uYW1lKSk7CisKKwlwc2NhbiA9IHN5c3RhYmxlX2JlZ2luc2Nhbihjb25y ZWwsIENvbnN0cmFpbnRSZWxpZFR5cGlkTmFtZUluZGV4SWQsIHRydWUsCisJCQkJCQkJICAgTlVM TCwgMywgc2tleSk7CisKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQoY2hpbGR0dXAgPSBzeXN0YWJs ZV9nZXRuZXh0KHBzY2FuKSkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RF X1VOREVGSU5FRF9PQkpFQ1QpLAorCQkJCWVycm1zZygiY29uc3RyYWludCBcIiVzXCIgb2YgcmVs YXRpb24gXCIlc1wiIGRvZXMgbm90IGV4aXN0IiwKKwkJCQkJICAgY21kY29uLT5jb25uYW1lLCBn ZXRfcmVsX25hbWUoY29ucmVsaWQpKSk7CisKKwlBVEV4ZWNBbHRlckNoZWNrQ29uc3RyRW5mb3Jj ZWFiaWxpdHkod3F1ZXVlLCBjbWRjb24sIGNvbnJlbCwgY2hpbGR0dXAsCisJCQkJCQkJCQkJIHJl Y3Vyc2UsIHJlY3Vyc2luZywgbG9ja21vZGUpOworCisJc3lzdGFibGVfZW5kc2Nhbihwc2Nhbik7 Cit9CisKKy8qCisgKiBSZXR1cm5zIHRydWUgaWYgdGhlIEZPUkVJR04gS0VZIGNvbnN0cmFpbnQn cyBlbmZvcmNlYWJpbGl0eSBpcyBhbHRlcmVkLgogICoKICAqIERlcGVuZGluZyBvbiB3aGV0aGVy IHRoZSBjb25zdHJhaW50IGlzIGJlaW5nIHNldCB0byBFTkZPUkNFRCBvciBOT1QKICAqIEVORk9S Q0VELCBpdCBjcmVhdGVzIG9yIGRyb3BzIHRoZSB0cmlnZ2VyIGFjY29yZGluZ2x5LgpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb25zdHJhaW50cy5vdXQgYi9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL2NvbnN0cmFpbnRzLm91dAppbmRleCAzNTkwZDMyNzRmMC4uYTQ4 ZGQ4OThjOWYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29uc3RyYWlu dHMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29uc3RyYWludHMub3V0CkBA IC0zOTAsNiArMzkwLDU5IEBAIFNFTEVDVCAqIEZST00gQ09QWV9UQkw7CiAgNiB8IE9LICAgICAg ICAgICAgfCA0CiAoMiByb3dzKQogCistLQorLS0gQ0hFQ0sgY29uc3RyYWludHMKKy0tIEFMVEVS IFRBQkxFIEFMVEVSIENPTlNUUkFJTlQgW05PVF0gRU5GT1JDRUQKK2NyZWF0ZSB0YWJsZSBwYXJ0 ZWRfY2hfdGJsKGEgaW50LCBjb25zdHJhaW50IGNjIGNoZWNrIChhID4gMTApIG5vdCBlbmZvcmNl ZCwgYiBpbnQgKSBwYXJ0aXRpb24gYnkgcmFuZ2UoYSk7CitjcmVhdGUgdGFibGUgcGFydGVkX2No X3RibF8xIHBhcnRpdGlvbiBvZiBwYXJ0ZWRfY2hfdGJsIGZvciB2YWx1ZXMgZnJvbSAoMCkgdG8g KDEwKSBwYXJ0aXRpb24gYnkgbGlzdChiKTsKK2NyZWF0ZSB0YWJsZSBwYXJ0ZWRfY2hfdGJsXzEx IHBhcnRpdGlvbiBvZiBwYXJ0ZWRfY2hfdGJsXzEgZm9yIHZhbHVlcyBpbiAoMCwgMSk7CitjcmVh dGUgdGFibGUgcGFydGVkX2NoX3RibF8xMiBwYXJ0aXRpb24gb2YgcGFydGVkX2NoX3RibF8xIGZv ciB2YWx1ZXMgaW4gKDIpOworY3JlYXRlIHRhYmxlIHBhcnRlZF9jaF90YmxfMiBwYXJ0aXRpb24g b2YgcGFydGVkX2NoX3RibCBmb3IgdmFsdWVzIGZyb20gKDEwKSB0byAoMjApOworYWx0ZXIgdGFi bGUgcGFydGVkX2NoX3RibF8yIGFkZCBjb25zdHJhaW50IGNjXzIgY2hlY2soIGEgPCAxNSkgbm90 IGVuZm9yY2VkOworaW5zZXJ0IGludG8gcGFydGVkX2NoX3RibCB2YWx1ZXMgKDEsIDIpLCAoOSwg MSksICgxNiwgMTYpOworY3JlYXRlIHZpZXcgY2hlY2tfY29uc3RyYWludF9zdGF0dXMgYXMKK3Nl bGVjdCAgY29ubmFtZSwgY29ucmVsaWQ6OnJlZ2NsYXNzLCBjb25lbmZvcmNlZCwgY29udmFsaWRh dGVkCitmcm9tICAgIHBnX2NvbnN0cmFpbnQKK3doZXJlICAgY29ucmVsaWQ6OnJlZ2NsYXNzOjp0 ZXh0IH4qICdecGFydGVkX2NoJyBhbmQgY29udHlwZSA9ICdjJworb3JkZXIgYnkgY29ucmVsaWQ6 OnJlZ2NsYXNzLCBjb25uYW1lOworYWx0ZXIgdGFibGUgcGFydGVkX2NoX3RibCBhbHRlciBjb25z dHJhaW50IGNjIG5vdCBlbmZvcmNlZDsgLS1uby1vcAorYWx0ZXIgdGFibGUgcGFydGVkX2NoX3Ri bCBhbHRlciBjb25zdHJhaW50IGNjIGVuZm9yY2VkOyAtLWVycm9yCitFUlJPUjogIGNoZWNrIGNv bnN0cmFpbnQgImNjIiBvZiByZWxhdGlvbiAicGFydGVkX2NoX3RibF8xMSIgaXMgdmlvbGF0ZWQg Ynkgc29tZSByb3cKK2RlbGV0ZSBmcm9tIHBhcnRlZF9jaF90Ymwgd2hlcmUgYSA9IDE7CithbHRl ciB0YWJsZSBwYXJ0ZWRfY2hfdGJsIGFsdGVyIGNvbnN0cmFpbnQgY2MgZW5mb3JjZWQ7IC0tZXJy b3IKK0VSUk9SOiAgY2hlY2sgY29uc3RyYWludCAiY2MiIG9mIHJlbGF0aW9uICJwYXJ0ZWRfY2hf dGJsXzExIiBpcyB2aW9sYXRlZCBieSBzb21lIHJvdworZGVsZXRlIGZyb20gcGFydGVkX2NoX3Ri bCB3aGVyZSBhID0gOTsKK2FsdGVyIHRhYmxlIHBhcnRlZF9jaF90YmwgYWx0ZXIgY29uc3RyYWlu dCBjYyBlbmZvcmNlZDsgLS1vaworLS1jaGVjayB0aGVzZSBDSEVDSyBjb25zdHJhaW50IHN0YXR1 cworc2VsZWN0ICogZnJvbSBjaGVja19jb25zdHJhaW50X3N0YXR1czsKKyBjb25uYW1lIHwgICAg IGNvbnJlbGlkICAgICB8IGNvbmVuZm9yY2VkIHwgY29udmFsaWRhdGVkIAorLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisgY2MgICAgICB8 IHBhcnRlZF9jaF90YmwgICAgfCB0ICAgICAgICAgICB8IHQKKyBjYyAgICAgIHwgcGFydGVkX2No X3RibF8xICB8IHQgICAgICAgICAgIHwgdAorIGNjICAgICAgfCBwYXJ0ZWRfY2hfdGJsXzExIHwg dCAgICAgICAgICAgfCB0CisgY2MgICAgICB8IHBhcnRlZF9jaF90YmxfMTIgfCB0ICAgICAgICAg ICB8IHQKKyBjYyAgICAgIHwgcGFydGVkX2NoX3RibF8yICB8IHQgICAgICAgICAgIHwgdAorIGNj XzIgICAgfCBwYXJ0ZWRfY2hfdGJsXzIgIHwgZiAgICAgICAgICAgfCBmCisoNiByb3dzKQorCith bHRlciB0YWJsZSBwYXJ0ZWRfY2hfdGJsXzIgYWx0ZXIgY29uc3RyYWludCBjY18yIGVuZm9yY2Vk OyAtLWVycm9yCitFUlJPUjogIGNoZWNrIGNvbnN0cmFpbnQgImNjXzIiIG9mIHJlbGF0aW9uICJw YXJ0ZWRfY2hfdGJsXzIiIGlzIHZpb2xhdGVkIGJ5IHNvbWUgcm93CitkZWxldGUgZnJvbSBwYXJ0 ZWRfY2hfdGJsIHdoZXJlIGEgPSAxNjsKK2FsdGVyIHRhYmxlIHBhcnRlZF9jaF90YmxfMiBhbHRl ciBjb25zdHJhaW50IGNjXzIgZW5mb3JjZWQ7IC0tb2sKK2FsdGVyIHRhYmxlIHBhcnRlZF9jaF90 YmwgYWx0ZXIgY29uc3RyYWludCBjYyBub3QgZW5mb3JjZWQ7IC0tb2sKKy0tY2hlY2sgdGhlc2Ug Q0hFQ0sgY29uc3RyYWludCBzdGF0dXMgYWdhaW4KK3NlbGVjdCAqIGZyb20gY2hlY2tfY29uc3Ry YWludF9zdGF0dXM7CisgY29ubmFtZSB8ICAgICBjb25yZWxpZCAgICAgfCBjb25lbmZvcmNlZCB8 IGNvbnZhbGlkYXRlZCAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLQorIGNjICAgICAgfCBwYXJ0ZWRfY2hfdGJsICAgIHwgZiAgICAgICAg ICAgfCBmCisgY2MgICAgICB8IHBhcnRlZF9jaF90YmxfMSAgfCBmICAgICAgICAgICB8IGYKKyBj YyAgICAgIHwgcGFydGVkX2NoX3RibF8xMSB8IGYgICAgICAgICAgIHwgZgorIGNjICAgICAgfCBw YXJ0ZWRfY2hfdGJsXzEyIHwgZiAgICAgICAgICAgfCBmCisgY2MgICAgICB8IHBhcnRlZF9jaF90 YmxfMiAgfCBmICAgICAgICAgICB8IGYKKyBjY18yICAgIHwgcGFydGVkX2NoX3RibF8yICB8IHQg ICAgICAgICAgIHwgdAorKDYgcm93cykKKworZHJvcCB0YWJsZSBwYXJ0ZWRfY2hfdGJsOwogLS0K IC0tIFByaW1hcnkga2V5cwogLS0KQEAgLTc0Niw4ICs3OTksMTAgQEAgTElORSAxOiBDUkVBVEUg VEFCTEUgVU5JUVVFX05PVEVOX1RCTChpIGludCBVTklRVUUgTk9UIEVORk9SQ0VEKTsKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KIEFMVEVSIFRB QkxFIHVuaXF1ZV90YmwgQUxURVIgQ09OU1RSQUlOVCB1bmlxdWVfdGJsX2lfa2V5IEVORk9SQ0VE OwogRVJST1I6ICBjYW5ub3QgYWx0ZXIgZW5mb3JjZWFiaWxpdHkgb2YgY29uc3RyYWludCAidW5p cXVlX3RibF9pX2tleSIgb2YgcmVsYXRpb24gInVuaXF1ZV90YmwiCitISU5UOiAgT25seSBmb3Jl aWduIGtleSBhbmQgY2hlY2sgY29uc3RyYWludHMgY2FuIGNoYW5nZSBlbmZvcmNlYWJpbGl0eQog QUxURVIgVEFCTEUgdW5pcXVlX3RibCBBTFRFUiBDT05TVFJBSU5UIHVuaXF1ZV90YmxfaV9rZXkg Tk9UIEVORk9SQ0VEOwogRVJST1I6ICBjYW5ub3QgYWx0ZXIgZW5mb3JjZWFiaWxpdHkgb2YgY29u c3RyYWludCAidW5pcXVlX3RibF9pX2tleSIgb2YgcmVsYXRpb24gInVuaXF1ZV90YmwiCitISU5U OiAgT25seSBmb3JlaWduIGtleSBhbmQgY2hlY2sgY29uc3RyYWludHMgY2FuIGNoYW5nZSBlbmZv cmNlYWJpbGl0eQogLS0gY2FuJ3QgbWFrZSBhbiBleGlzdGluZyBjb25zdHJhaW50IE5PVCBWQUxJ RAogQUxURVIgVEFCTEUgdW5pcXVlX3RibCBBTFRFUiBDT05TVFJBSU5UIHVuaXF1ZV90YmxfaV9r ZXkgTk9UIFZBTElEOwogRVJST1I6ICBjb25zdHJhaW50cyBjYW5ub3QgYmUgYWx0ZXJlZCB0byBi ZSBOT1QgVkFMSUQKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaW5oZXJp dC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2luaGVyaXQub3V0CmluZGV4IDViNTA1 NWJhYmRjLi5hNGM4MDI0NmNlMSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9pbmhlcml0Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2luaGVyaXQub3V0 CkBAIC0xNDE4LDExICsxNDE4LDUwIEBAIG9yZGVyIGJ5IDEsIDI7CiAgcDFfYzMgICB8IGluaF9j aGVja19jb25zdHJhaW50OSAgfCBmICAgICAgICAgIHwgICAgICAgICAgIDIgfCB0ICAgICAgICAg ICB8IHQKICgzOCByb3dzKQogCistLSBUZXN0cyBmb3IgQUxURVIgVEFCTEUgQUxURVIgQ09OU1RS QUlOVCBbTk9UXSBFTkZPUkNFRAorYWx0ZXIgdGFibGUgcDEgZHJvcCBjb25zdHJhaW50IGluaF9j aGVja19jb25zdHJhaW50MTsKK2FsdGVyIHRhYmxlIHAxX2MxIGRyb3AgY29uc3RyYWludCBpbmhf Y2hlY2tfY29uc3RyYWludDE7CitpbnNlcnQgaW50byBwMV9jMSB2YWx1ZXMoLTIpOworaW5zZXJ0 IGludG8gcDFfYzMgdmFsdWVzKC0zKTsKK2FsdGVyIHRhYmxlIG9ubHkgcDEgYWx0ZXIgY29uc3Ry YWludCBpbmhfY2hlY2tfY29uc3RyYWludDMgZW5mb3JjZWQ7IC0tZXJyb3IKK0VSUk9SOiAgY29u c3RyYWludCBtdXN0IGJlIGFsdGVyZWQgb24gY2hpbGQgdGFibGVzIHRvbworYWx0ZXIgdGFibGUg b25seSBwMSBhbHRlciBjb25zdHJhaW50IGluaF9jaGVja19jb25zdHJhaW50MyBub3QgZW5mb3Jj ZWQ7IC0tZXJyb3IKK0VSUk9SOiAgY29uc3RyYWludCBtdXN0IGJlIGFsdGVyZWQgb24gY2hpbGQg dGFibGVzIHRvbworYWx0ZXIgdGFibGUgcDEgYWx0ZXIgY29uc3RyYWludCBpbmhfY2hlY2tfY29u c3RyYWludDMgZW5mb3JjZWQ7IC0tZXJyb3IKK0VSUk9SOiAgY2hlY2sgY29uc3RyYWludCAiaW5o X2NoZWNrX2NvbnN0cmFpbnQzIiBvZiByZWxhdGlvbiAicDFfYzEiIGlzIHZpb2xhdGVkIGJ5IHNv bWUgcm93CitkZWxldGUgZnJvbSBvbmx5IHAxX2MxIHdoZXJlIGYxID0gLTI7CithbHRlciB0YWJs ZSBwMV9jMSBhbHRlciBjb25zdHJhaW50IGluaF9jaGVja19jb25zdHJhaW50MyBlbmZvcmNlZDsg LS1lcnJvcgorRVJST1I6ICBjaGVjayBjb25zdHJhaW50ICJpbmhfY2hlY2tfY29uc3RyYWludDMi IG9mIHJlbGF0aW9uICJwMV9jMyIgaXMgdmlvbGF0ZWQgYnkgc29tZSByb3cKK2RlbGV0ZSBmcm9t IG9ubHkgcDFfYzMgd2hlcmUgZjEgPSAtMzsKK2FsdGVyIHRhYmxlIHAxIGFsdGVyIGNvbnN0cmFp bnQgaW5oX2NoZWNrX2NvbnN0cmFpbnQzIGVuZm9yY2VkOyAtLW9rCithbHRlciB0YWJsZSBwMSBh bHRlciBjb25zdHJhaW50IGluaF9jaGVja19jb25zdHJhaW50MyBub3QgZW5mb3JjZWQ7IC0tb2sK K3NlbGVjdCAgY29ubmFtZSwgY29uZW5mb3JjZWQsIGNvbnZhbGlkYXRlZCwgY29ucmVsaWQ6OnJl Z2NsYXNzCitmcm9tICAgIHBnX2NvbnN0cmFpbnQKK3doZXJlICAgY29ubmFtZSA9ICdpbmhfY2hl Y2tfY29uc3RyYWludDMnIGFuZCBjb250eXBlID0gJ2MnCitvcmRlciBieSBjb25yZWxpZDo6cmVn Y2xhc3M6OnRleHQgY29sbGF0ZSAiQyI7CisgICAgICAgIGNvbm5hbWUgICAgICAgIHwgY29uZW5m b3JjZWQgfCBjb252YWxpZGF0ZWQgfCBjb25yZWxpZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIGluaF9jaGVja19jb25z dHJhaW50MyB8IGYgICAgICAgICAgIHwgZiAgICAgICAgICAgIHwgcDEKKyBpbmhfY2hlY2tfY29u c3RyYWludDMgfCBmICAgICAgICAgICB8IGYgICAgICAgICAgICB8IHAxX2MxCisgaW5oX2NoZWNr X2NvbnN0cmFpbnQzIHwgZiAgICAgICAgICAgfCBmICAgICAgICAgICAgfCBwMV9jMgorIGluaF9j aGVja19jb25zdHJhaW50MyB8IGYgICAgICAgICAgIHwgZiAgICAgICAgICAgIHwgcDFfYzMKKyg0 IHJvd3MpCisKIGRyb3AgdGFibGUgcDEgY2FzY2FkZTsKIE5PVElDRTogIGRyb3AgY2FzY2FkZXMg dG8gMyBvdGhlciBvYmplY3RzCiBERVRBSUw6ICBkcm9wIGNhc2NhZGVzIHRvIHRhYmxlIHAxX2Mx CiBkcm9wIGNhc2NhZGVzIHRvIHRhYmxlIHAxX2MyCiBkcm9wIGNhc2NhZGVzIHRvIHRhYmxlIHAx X2MzCistLWZvciAibm8gaW5oZXJpdCIgY2hlY2sgY29uc3RyYWludCwgaXQgd2lsbCBub3QgcmVj dXJzZSB0byBjaGlsZCB0YWJsZQorY3JlYXRlIHRhYmxlIHAxKGYxIGludCBjb25zdHJhaW50IHAx X2FfY2hlY2sgY2hlY2sgKGYxID4gMCkgbm8gaW5oZXJpdCBub3QgZW5mb3JjZWQpOworY3JlYXRl IHRhYmxlIHAxX2MxKGYxIGludCBjb25zdHJhaW50IHAxX2FfY2hlY2sgY2hlY2sgKGYxID4gMCkg bm90IGVuZm9yY2VkKTsKK2FsdGVyIHRhYmxlIHAxX2MxIGluaGVyaXQgcDE7CitpbnNlcnQgaW50 byBwMV9jMSB2YWx1ZXMoLTExKTsKK2FsdGVyIHRhYmxlIHAxIGFsdGVyIGNvbnN0cmFpbnQgcDFf YV9jaGVjayBlbmZvcmNlZDsgLS1vaworYWx0ZXIgdGFibGUgcDFfYzEgYWx0ZXIgY29uc3RyYWlu dCBwMV9hX2NoZWNrIGVuZm9yY2VkOyAtLWVycm9yCitFUlJPUjogIGNoZWNrIGNvbnN0cmFpbnQg InAxX2FfY2hlY2siIG9mIHJlbGF0aW9uICJwMV9jMSIgaXMgdmlvbGF0ZWQgYnkgc29tZSByb3cK K2Ryb3AgdGFibGUgcDEgY2FzY2FkZTsKK05PVElDRTogIGRyb3AgY2FzY2FkZXMgdG8gdGFibGUg cDFfYzEKIC0tCiAtLSBTaW1pbGFybHksIGNoZWNrIHRoZSBtZXJnaW5nIG9mIGV4aXN0aW5nIGNv bnN0cmFpbnRzOyBhIHBhcmVudCBjb25zdHJhaW50CiAtLSBtYXJrZWQgYXMgTk9UIEVORk9SQ0VE IGNhbiBtZXJnZSB3aXRoIGFuIEVORk9SQ0VEIGNoaWxkIGNvbnN0cmFpbnQsIGJ1dCB0aGUKQEAg LTE0MzEsNiArMTQ3MCwyNSBAQCBkcm9wIGNhc2NhZGVzIHRvIHRhYmxlIHAxX2MzCiBjcmVhdGUg dGFibGUgcDEoZjEgaW50IGNvbnN0cmFpbnQgcDFfYV9jaGVjayBjaGVjayAoZjEgPiAwKSBub3Qg ZW5mb3JjZWQpOwogY3JlYXRlIHRhYmxlIHAxX2MxKGYxIGludCBjb25zdHJhaW50IHAxX2FfY2hl Y2sgY2hlY2sgKGYxID4gMCkgZW5mb3JjZWQpOwogYWx0ZXIgdGFibGUgcDFfYzEgaW5oZXJpdCBw MTsKK2luc2VydCBpbnRvIHAxIHZhbHVlcygtMSk7IC0tb2sKK2luc2VydCBpbnRvIHAxX2MxIHZh bHVlcygtMSk7IC0tZXJyb3IKK0VSUk9SOiAgbmV3IHJvdyBmb3IgcmVsYXRpb24gInAxX2MxIiB2 aW9sYXRlcyBjaGVjayBjb25zdHJhaW50ICJwMV9hX2NoZWNrIgorREVUQUlMOiAgRmFpbGluZyBy b3cgY29udGFpbnMgKC0xKS4KK2FsdGVyIHRhYmxlIHAxIGFsdGVyIGNvbnN0cmFpbnQgcDFfYV9j aGVjayBlbmZvcmNlZDsgLS1lcnJvcgorRVJST1I6ICBjaGVjayBjb25zdHJhaW50ICJwMV9hX2No ZWNrIiBvZiByZWxhdGlvbiAicDEiIGlzIHZpb2xhdGVkIGJ5IHNvbWUgcm93Cit0cnVuY2F0ZSBw MTsKK2FsdGVyIHRhYmxlIHAxIGFsdGVyIGNvbnN0cmFpbnQgcDFfYV9jaGVjayBlbmZvcmNlZDsg LS1vaworYWx0ZXIgdGFibGUgcDEgYWx0ZXIgY29uc3RyYWludCBwMV9hX2NoZWNrIG5vdCBlbmZv cmNlZDsgLS1vaworc2VsZWN0ICBjb25uYW1lLCBjb25lbmZvcmNlZCwgY29udmFsaWRhdGVkLCBj b25yZWxpZDo6cmVnY2xhc3MKK2Zyb20gICAgcGdfY29uc3RyYWludAord2hlcmUgICBjb25uYW1l ID0gJ3AxX2FfY2hlY2snIGFuZCBjb250eXBlID0gJ2MnCitvcmRlciBieSBjb25yZWxpZDo6cmVn Y2xhc3M6OnRleHQgY29sbGF0ZSAiQyI7CisgIGNvbm5hbWUgICB8IGNvbmVuZm9yY2VkIHwgY29u dmFsaWRhdGVkIHwgY29ucmVsaWQgCistLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tCisgcDFfYV9jaGVjayB8IGYgICAgICAgICAgIHwgZiAgICAgICAg ICAgIHwgcDEKKyBwMV9hX2NoZWNrIHwgZiAgICAgICAgICAgfCBmICAgICAgICAgICAgfCBwMV9j MQorKDIgcm93cykKKwogZHJvcCB0YWJsZSBwMSBjYXNjYWRlOwogTk9USUNFOiAgZHJvcCBjYXNj YWRlcyB0byB0YWJsZSBwMV9jMQogY3JlYXRlIHRhYmxlIHAxKGYxIGludCBjb25zdHJhaW50IHAx X2FfY2hlY2sgY2hlY2sgKGYxID4gMCkgZW5mb3JjZWQpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvY29uc3RyYWludHMuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29uc3Ry YWludHMuc3FsCmluZGV4IDFmNmRjOGZkNjlmLi5lMzIwMWM5YjNkMyAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvY29uc3RyYWludHMuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL2NvbnN0cmFpbnRzLnNxbApAQCAtMjY2LDYgKzI2Niw0MiBAQCBDT1BZIENPUFlfVEJMIEZS T00gOidmaWxlbmFtZSc7CiAKIFNFTEVDVCAqIEZST00gQ09QWV9UQkw7CiAKKy0tCistLSBDSEVD SyBjb25zdHJhaW50cworLS0gQUxURVIgVEFCTEUgQUxURVIgQ09OU1RSQUlOVCBbTk9UXSBFTkZP UkNFRAorY3JlYXRlIHRhYmxlIHBhcnRlZF9jaF90YmwoYSBpbnQsIGNvbnN0cmFpbnQgY2MgY2hl Y2sgKGEgPiAxMCkgbm90IGVuZm9yY2VkLCBiIGludCApIHBhcnRpdGlvbiBieSByYW5nZShhKTsK K2NyZWF0ZSB0YWJsZSBwYXJ0ZWRfY2hfdGJsXzEgcGFydGl0aW9uIG9mIHBhcnRlZF9jaF90Ymwg Zm9yIHZhbHVlcyBmcm9tICgwKSB0byAoMTApIHBhcnRpdGlvbiBieSBsaXN0KGIpOworY3JlYXRl IHRhYmxlIHBhcnRlZF9jaF90YmxfMTEgcGFydGl0aW9uIG9mIHBhcnRlZF9jaF90YmxfMSBmb3Ig dmFsdWVzIGluICgwLCAxKTsKK2NyZWF0ZSB0YWJsZSBwYXJ0ZWRfY2hfdGJsXzEyIHBhcnRpdGlv biBvZiBwYXJ0ZWRfY2hfdGJsXzEgZm9yIHZhbHVlcyBpbiAoMik7CitjcmVhdGUgdGFibGUgcGFy dGVkX2NoX3RibF8yIHBhcnRpdGlvbiBvZiBwYXJ0ZWRfY2hfdGJsIGZvciB2YWx1ZXMgZnJvbSAo MTApIHRvICgyMCk7CithbHRlciB0YWJsZSBwYXJ0ZWRfY2hfdGJsXzIgYWRkIGNvbnN0cmFpbnQg Y2NfMiBjaGVjayggYSA8IDE1KSBub3QgZW5mb3JjZWQ7CitpbnNlcnQgaW50byBwYXJ0ZWRfY2hf dGJsIHZhbHVlcyAoMSwgMiksICg5LCAxKSwgKDE2LCAxNik7CisKK2NyZWF0ZSB2aWV3IGNoZWNr X2NvbnN0cmFpbnRfc3RhdHVzIGFzCitzZWxlY3QgIGNvbm5hbWUsIGNvbnJlbGlkOjpyZWdjbGFz cywgY29uZW5mb3JjZWQsIGNvbnZhbGlkYXRlZAorZnJvbSAgICBwZ19jb25zdHJhaW50Cit3aGVy ZSAgIGNvbnJlbGlkOjpyZWdjbGFzczo6dGV4dCB+KiAnXnBhcnRlZF9jaCcgYW5kIGNvbnR5cGUg PSAnYycKK29yZGVyIGJ5IGNvbnJlbGlkOjpyZWdjbGFzcywgY29ubmFtZTsKKworYWx0ZXIgdGFi bGUgcGFydGVkX2NoX3RibCBhbHRlciBjb25zdHJhaW50IGNjIG5vdCBlbmZvcmNlZDsgLS1uby1v cAorYWx0ZXIgdGFibGUgcGFydGVkX2NoX3RibCBhbHRlciBjb25zdHJhaW50IGNjIGVuZm9yY2Vk OyAtLWVycm9yCitkZWxldGUgZnJvbSBwYXJ0ZWRfY2hfdGJsIHdoZXJlIGEgPSAxOworYWx0ZXIg dGFibGUgcGFydGVkX2NoX3RibCBhbHRlciBjb25zdHJhaW50IGNjIGVuZm9yY2VkOyAtLWVycm9y CitkZWxldGUgZnJvbSBwYXJ0ZWRfY2hfdGJsIHdoZXJlIGEgPSA5OworYWx0ZXIgdGFibGUgcGFy dGVkX2NoX3RibCBhbHRlciBjb25zdHJhaW50IGNjIGVuZm9yY2VkOyAtLW9rCisKKy0tY2hlY2sg dGhlc2UgQ0hFQ0sgY29uc3RyYWludCBzdGF0dXMKK3NlbGVjdCAqIGZyb20gY2hlY2tfY29uc3Ry YWludF9zdGF0dXM7CisKK2FsdGVyIHRhYmxlIHBhcnRlZF9jaF90YmxfMiBhbHRlciBjb25zdHJh aW50IGNjXzIgZW5mb3JjZWQ7IC0tZXJyb3IKK2RlbGV0ZSBmcm9tIHBhcnRlZF9jaF90Ymwgd2hl cmUgYSA9IDE2OworYWx0ZXIgdGFibGUgcGFydGVkX2NoX3RibF8yIGFsdGVyIGNvbnN0cmFpbnQg Y2NfMiBlbmZvcmNlZDsgLS1vaworYWx0ZXIgdGFibGUgcGFydGVkX2NoX3RibCBhbHRlciBjb25z dHJhaW50IGNjIG5vdCBlbmZvcmNlZDsgLS1vaworCistLWNoZWNrIHRoZXNlIENIRUNLIGNvbnN0 cmFpbnQgc3RhdHVzIGFnYWluCitzZWxlY3QgKiBmcm9tIGNoZWNrX2NvbnN0cmFpbnRfc3RhdHVz OworZHJvcCB0YWJsZSBwYXJ0ZWRfY2hfdGJsOworCiAtLQogLS0gUHJpbWFyeSBrZXlzCiAtLQpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvaW5oZXJpdC5zcWwgYi9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9pbmhlcml0LnNxbAppbmRleCA2OTllOGFjMDljOC4uYTc0MmE2YWJkMzYgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2luaGVyaXQuc3FsCisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL2luaGVyaXQuc3FsCkBAIC01MTAsNiArNTEwLDM1IEBAIHNlbGVjdCBjb25y ZWxpZDo6cmVnY2xhc3M6OnRleHQgYXMgcmVsbmFtZSwgY29ubmFtZSwgY29uaXNsb2NhbCwgY29u aW5oY291bnQsIGNvCiBmcm9tIHBnX2NvbnN0cmFpbnQgd2hlcmUgY29ubmFtZSBsaWtlICdpbmhc X2NoZWNrXF9jb25zdHJhaW50JScKIG9yZGVyIGJ5IDEsIDI7CiAKKy0tIFRlc3RzIGZvciBBTFRF UiBUQUJMRSBBTFRFUiBDT05TVFJBSU5UIFtOT1RdIEVORk9SQ0VECithbHRlciB0YWJsZSBwMSBk cm9wIGNvbnN0cmFpbnQgaW5oX2NoZWNrX2NvbnN0cmFpbnQxOworYWx0ZXIgdGFibGUgcDFfYzEg ZHJvcCBjb25zdHJhaW50IGluaF9jaGVja19jb25zdHJhaW50MTsKKworaW5zZXJ0IGludG8gcDFf YzEgdmFsdWVzKC0yKTsKK2luc2VydCBpbnRvIHAxX2MzIHZhbHVlcygtMyk7CithbHRlciB0YWJs ZSBvbmx5IHAxIGFsdGVyIGNvbnN0cmFpbnQgaW5oX2NoZWNrX2NvbnN0cmFpbnQzIGVuZm9yY2Vk OyAtLWVycm9yCithbHRlciB0YWJsZSBvbmx5IHAxIGFsdGVyIGNvbnN0cmFpbnQgaW5oX2NoZWNr X2NvbnN0cmFpbnQzIG5vdCBlbmZvcmNlZDsgLS1lcnJvcgorCithbHRlciB0YWJsZSBwMSBhbHRl ciBjb25zdHJhaW50IGluaF9jaGVja19jb25zdHJhaW50MyBlbmZvcmNlZDsgLS1lcnJvcgorZGVs ZXRlIGZyb20gb25seSBwMV9jMSB3aGVyZSBmMSA9IC0yOworYWx0ZXIgdGFibGUgcDFfYzEgYWx0 ZXIgY29uc3RyYWludCBpbmhfY2hlY2tfY29uc3RyYWludDMgZW5mb3JjZWQ7IC0tZXJyb3IKKwor ZGVsZXRlIGZyb20gb25seSBwMV9jMyB3aGVyZSBmMSA9IC0zOworYWx0ZXIgdGFibGUgcDEgYWx0 ZXIgY29uc3RyYWludCBpbmhfY2hlY2tfY29uc3RyYWludDMgZW5mb3JjZWQ7IC0tb2sKK2FsdGVy IHRhYmxlIHAxIGFsdGVyIGNvbnN0cmFpbnQgaW5oX2NoZWNrX2NvbnN0cmFpbnQzIG5vdCBlbmZv cmNlZDsgLS1vaworc2VsZWN0ICBjb25uYW1lLCBjb25lbmZvcmNlZCwgY29udmFsaWRhdGVkLCBj b25yZWxpZDo6cmVnY2xhc3MKK2Zyb20gICAgcGdfY29uc3RyYWludAord2hlcmUgICBjb25uYW1l ID0gJ2luaF9jaGVja19jb25zdHJhaW50MycgYW5kIGNvbnR5cGUgPSAnYycKK29yZGVyIGJ5IGNv bnJlbGlkOjpyZWdjbGFzczo6dGV4dCBjb2xsYXRlICJDIjsKK2Ryb3AgdGFibGUgcDEgY2FzY2Fk ZTsKKworLS1mb3IgIm5vIGluaGVyaXQiIGNoZWNrIGNvbnN0cmFpbnQsIGl0IHdpbGwgbm90IHJl Y3Vyc2UgdG8gY2hpbGQgdGFibGUKK2NyZWF0ZSB0YWJsZSBwMShmMSBpbnQgY29uc3RyYWludCBw MV9hX2NoZWNrIGNoZWNrIChmMSA+IDApIG5vIGluaGVyaXQgbm90IGVuZm9yY2VkKTsKK2NyZWF0 ZSB0YWJsZSBwMV9jMShmMSBpbnQgY29uc3RyYWludCBwMV9hX2NoZWNrIGNoZWNrIChmMSA+IDAp IG5vdCBlbmZvcmNlZCk7CithbHRlciB0YWJsZSBwMV9jMSBpbmhlcml0IHAxOworaW5zZXJ0IGlu dG8gcDFfYzEgdmFsdWVzKC0xMSk7CithbHRlciB0YWJsZSBwMSBhbHRlciBjb25zdHJhaW50IHAx X2FfY2hlY2sgZW5mb3JjZWQ7IC0tb2sKK2FsdGVyIHRhYmxlIHAxX2MxIGFsdGVyIGNvbnN0cmFp bnQgcDFfYV9jaGVjayBlbmZvcmNlZDsgLS1lcnJvcgogZHJvcCB0YWJsZSBwMSBjYXNjYWRlOwog CiAtLQpAQCAtNTIwLDYgKzU0OSwxNyBAQCBkcm9wIHRhYmxlIHAxIGNhc2NhZGU7CiBjcmVhdGUg dGFibGUgcDEoZjEgaW50IGNvbnN0cmFpbnQgcDFfYV9jaGVjayBjaGVjayAoZjEgPiAwKSBub3Qg ZW5mb3JjZWQpOwogY3JlYXRlIHRhYmxlIHAxX2MxKGYxIGludCBjb25zdHJhaW50IHAxX2FfY2hl Y2sgY2hlY2sgKGYxID4gMCkgZW5mb3JjZWQpOwogYWx0ZXIgdGFibGUgcDFfYzEgaW5oZXJpdCBw MTsKK2luc2VydCBpbnRvIHAxIHZhbHVlcygtMSk7IC0tb2sKK2luc2VydCBpbnRvIHAxX2MxIHZh bHVlcygtMSk7IC0tZXJyb3IKK2FsdGVyIHRhYmxlIHAxIGFsdGVyIGNvbnN0cmFpbnQgcDFfYV9j aGVjayBlbmZvcmNlZDsgLS1lcnJvcgordHJ1bmNhdGUgcDE7CithbHRlciB0YWJsZSBwMSBhbHRl ciBjb25zdHJhaW50IHAxX2FfY2hlY2sgZW5mb3JjZWQ7IC0tb2sKK2FsdGVyIHRhYmxlIHAxIGFs dGVyIGNvbnN0cmFpbnQgcDFfYV9jaGVjayBub3QgZW5mb3JjZWQ7IC0tb2sKKworc2VsZWN0ICBj b25uYW1lLCBjb25lbmZvcmNlZCwgY29udmFsaWRhdGVkLCBjb25yZWxpZDo6cmVnY2xhc3MKK2Zy b20gICAgcGdfY29uc3RyYWludAord2hlcmUgICBjb25uYW1lID0gJ3AxX2FfY2hlY2snIGFuZCBj b250eXBlID0gJ2MnCitvcmRlciBieSBjb25yZWxpZDo6cmVnY2xhc3M6OnRleHQgY29sbGF0ZSAi QyI7CiBkcm9wIHRhYmxlIHAxIGNhc2NhZGU7CiAKIGNyZWF0ZSB0YWJsZSBwMShmMSBpbnQgY29u c3RyYWludCBwMV9hX2NoZWNrIGNoZWNrIChmMSA+IDApIGVuZm9yY2VkKTsKLS0gCjIuMzQuMQoK --00000000000046ca3f063c13e6d0--