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.96) (envelope-from ) id 1wA7C3-0024lU-0u for pgsql-hackers@arkaria.postgresql.org; Tue, 07 Apr 2026 14:14:15 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wA7C1-000Sqj-2R for pgsql-hackers@arkaria.postgresql.org; Tue, 07 Apr 2026 14:14:14 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wA7C1-000Sqb-1H for pgsql-hackers@lists.postgresql.org; Tue, 07 Apr 2026 14:14:13 +0000 Received: from mail-dl1-x1233.google.com ([2607:f8b0:4864:20::1233]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wA7Bz-000000017TE-0Two for pgsql-hackers@postgresql.org; Tue, 07 Apr 2026 14:14:13 +0000 Received: by mail-dl1-x1233.google.com with SMTP id a92af1059eb24-12c19d23b19so559479c88.0 for ; Tue, 07 Apr 2026 07:14:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1775571249; x=1776176049; darn=postgresql.org; h=in-reply-to:references:to:from:subject:message-id:date:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=gNglIlO4Q9f/YaEkz0LNBdW/J7xzAA5ulodfP4j4IFs=; b=U3fqSG1fAHUkQX7tRuJrOLlzEg/mtMOdb0L2Rgj2vxVnKzBwt6PVnVrHXH1Apyk90q trXIXZIcCa1a7qO1n1VbtKy+/+WO8treHbt97TG0wTYH6as3eKG1E0/Lq2nA6Yl+J7uD jxtI6qJHx3IG/6ZUUNsCatIS5AgLok11JhZSylvvh3cKNenQmGquwXw+Vv4MPar0hmHx u6TEtmekI+F3thC2AXGp9cMrrU9S7LEVlH3PYQPSoFiiaYJvlgz0jj5p4t6kIYCpwhVw qT3lcpxu66X3e1GH0knN013WsyMf6Rh7miWmQQVEko4BBWGSAgZDZCh/85PLckbQ9OXd w3lw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775571249; x=1776176049; h=in-reply-to:references:to:from:subject:message-id:date:mime-version :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=gNglIlO4Q9f/YaEkz0LNBdW/J7xzAA5ulodfP4j4IFs=; b=FemzZBOES5hIvXSMXoOgLZ9LX5HmhT/yY22znWIKtrEAUguSW8CExyQkmoywaQyrxs y5Ae5CtScr7vZ0U365vGU0BZ6ewjQCLN/jD1xXww0UAxxRqLvDMnh8781DLcYGqpmTZh +aV2caenZnGfYx2THv9TM74UVN3+kFbx9ELukJB68raNG8A7jl0QkMPSZVxyUTRgD7pm IJ+BWsyh4AjO65Uyy6QKBXmiJV2Ta8jg1jB3faMQxOPKXZNMN00IYqAkJh7JtMkcYGuS Vsvg7W8Zzw52ICwjUAp1HYB0NV4FrViDLYxS2e/tB8kXcK+Ui6TjtGCyiaCRNjPP0lT/ YOTA== X-Forwarded-Encrypted: i=1; AJvYcCVKIsFJEs2axAGcpeSntCezmQ6lH4bpKjaiZfWOg5xdUlEnmZmzVYcbGxXH/tu5tvx5vDGTmPd4B+s/49rC@postgresql.org X-Gm-Message-State: AOJu0YwflFlDjqfliqFQfwtQvstqqX6VOL1O8/Um+U/du74uXeKQDlsK mEPSoQN9ol7qs5LgsXB8F6gF9RogiSnl7aJRDLaj6jYCsTEPNnLr4esgZdrwiA== X-Gm-Gg: AeBDietpcrULY6HduxymNlsuQXsOnCu4M83F7Wd76o8g42ImJmCpGEsZH/KABNe2OH3 /4nUopbZzI98EeKfxMgXGxfNqy8ATpr9z0a6jDdO8VTpVmA9u0FrY1G1gBhHQGMR8kVgz+NEE0a UlhsATkjxA25o14zVs7/dhOWCaaPY0lStYF+YoiGT/we2dLCrqbf/Ma4R2hO3Jd1uuyCix3pPuy tTIU4uDBK++oqq0QsypZcVbOso6RpdeJNVx2myd3uPmdr8NzluJ/UVkdpE+yhGyFaehqe9xrc3q ILGMNNf8EzYwlrhPMCUBUeYkkwsrePn5BVuBhmAikllgCxeK9HqLxz3yQ5gfvWeQ6nw+ULhx/It no4E2cBwPus3r9k2bQzg9rZsS1sRso4Uumewo/Ndqld4ZMie4/lhEf/BSR1HtvGWXXWg5y2M29p KzLeyTinEWrSjAML8hTFg7pn/YljUM+RXOcO4KQBWYHofC/w== X-Received: by 2002:a05:7022:52b:b0:12a:6902:ddce with SMTP id a92af1059eb24-12bfb6fe86fmr8441672c88.10.1775571248853; Tue, 07 Apr 2026 07:14:08 -0700 (PDT) Received: from localhost ([2804:14d:328a:a59c:ecba:fcaa:a831:c445]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-12c05a7beffsm9019329c88.15.2026.04.07.07.14.07 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 07 Apr 2026 07:14:08 -0700 (PDT) Content-Type: multipart/mixed; boundary=3891c2f2b64f8ccb754c2cc07361c67922ab2a7064c7db9a2fb76bc371a9 Mime-Version: 1.0 Date: Tue, 07 Apr 2026 11:14:05 -0300 Message-Id: Subject: Re: MERGE PARTITIONS and DEPENDS ON EXTENSION. From: "Matheus Alcantara" To: "Kirill Reshke" , "pgsql-hackers" X-Mailer: aerc 0.21.0 References: <31d04a1b-c0cb-4e6f-a344-0db048a3b673@gmail.com> In-Reply-To: <31d04a1b-c0cb-4e6f-a344-0db048a3b673@gmail.com> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --3891c2f2b64f8ccb754c2cc07361c67922ab2a7064c7db9a2fb76bc371a9 Content-Type: multipart/alternative; boundary=ddb405b2b82fc9c49c36d7962d01ebec795ce51506b8f031b40f944342bd --ddb405b2b82fc9c49c36d7962d01ebec795ce51506b8f031b40f944342bd Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-Type: text/plain; charset=UTF-8 On Wed Mar 11, 2026 at 12:12 PM -03, Matheus Alcantara wrote: > On 10/03/26 14:53, Kirill Reshke wrote: >> Today, while reviewing another patch, I spotted PostgreSQL behaviour >> which I cannot tell if is correct. >>=20 >> -- create relation >> reshke=3D# create table pt (i int) partition by range ( i); >> CREATE TABLE >>=20 >> -- create partitions. >> reshke=3D# create table pt1 partition of pt for values from ( 1 ) to (2)= ; >> CREATE TABLE >> reshke=3D# create table pt2 partition of pt for values from ( 2 ) to (3)= ; >> CREATE TABLE >>=20 >> -- manually add dependency on extension. >> reshke=3D# alter index pt1_i_idx depends on extension btree_gist ; >> ALTER INDEX >> reshke=3D# alter index pt2_i_idx depends on extension btree_gist ; >> ALTER INDEX >>=20 >> At this point, `drop extension btree_gist` fails due to existing >> dependencies. However, after `alter table pt merge partitions ( pt1 , >> pt2 ) into pt3;` there are no dependencies, and drop extension >> executes successfully. >>=20 >> My first impression was that there is no issue as the user created a >> new database object, so should manually add dependency on extension. >> However I am not 100% in this reasoning. >>=20 >> Any thoughts? >>=20 > > I'm also not sure if it's correct to assume that the dependency should=20 > be manually added after a partition is merged or splited but I was=20 > checking ATExecMergePartitions() and ATExecSplitPartition() and I=20 > think that it's not complicated to implement this. > > IIUC we just need to collect the extension dependencies before an=20 > index is detached on MERGE and SPLIT operations and then apply the=20 > dependency after the index is created on the new merged/splited=20 > partition. The attached patch implement this. > > Note that I'm using two different extensions for partition_merge and=20 > partition_split tests because I was having deadlock issues when=20 > running these tests in parallel using the same extension as a dependency. > Attaching a new rebased version, no changes compared with v1. -- Matheus Alcantara EDB: https://www.enterprisedb.com --ddb405b2b82fc9c49c36d7962d01ebec795ce51506b8f031b40f944342bd-- --3891c2f2b64f8ccb754c2cc07361c67922ab2a7064c7db9a2fb76bc371a9 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v2-0001-Preserve-extension-dependencies-on-indexes-during.patch Content-Type: text/plain; charset=utf-8; name=v2-0001-Preserve-extension-dependencies-on-indexes-during.patch RnJvbSA0NGMzN2UzMGU2MGI1M2Q0NDc4ZGJmMzJkNGFhZTJhN2Q2YjliMTdmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXRoZXVzIEFsY2FudGFyYSA8bXRocy5kZXZAcG0ubWU+CkRh dGU6IFdlZCwgMTEgTWFyIDIwMjYgMTE6Mzk6NTYgLTAzMDAKU3ViamVjdDogW1BBVENIIHYyXSBQ cmVzZXJ2ZSBleHRlbnNpb24gZGVwZW5kZW5jaWVzIG9uIGluZGV4ZXMgZHVyaW5nCiBwYXJ0aXRp b24gbWVyZ2Uvc3BsaXQKCldoZW4gdXNpbmcgQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElP TlMgb3IgQUxURVIgVEFCTEUgLi4uIFNQTElUClBBUlRJVElPTiwgZXh0ZW5zaW9uIGRlcGVuZGVu Y2llcyBvbiBwYXJ0aXRpb24gaW5kZXhlcyAoY3JlYXRlZCB2aWEKQUxURVIgSU5ERVggLi4uIERF UEVORFMgT04gRVhURU5TSU9OKSB3ZXJlIGJlaW5nIGxvc3QuIFRoaXMgaGFwcGVuZWQKYmVjYXVz ZSB0aGUgbmV3IHBhcnRpdGlvbiBpbmRleGVzIGFyZSBjcmVhdGVkIGZyZXNoIGZyb20gdGhlIHBh cmVudApwYXJ0aXRpb25lZCB0YWJsZSdzIGluZGV4ZXMsIHdoaWxlIHRoZSBvbGQgcGFydGl0aW9u IGluZGV4ZXMgKHdpdGgKdGhlaXIgZXh0ZW5zaW9uIGRlcGVuZGVuY2llcykgYXJlIGRyb3BwZWQu CgpGaXggdGhpcyBieSBjb2xsZWN0aW5nIGV4dGVuc2lvbiBkZXBlbmRlbmNpZXMgZnJvbSBzb3Vy Y2UgcGFydGl0aW9uCmluZGV4ZXMgYmVmb3JlIGRldGFjaGluZyB0aGVtLCB0aGVuIGFwcGx5aW5n IHRob3NlIGRlcGVuZGVuY2llcyB0bwp0aGUgY29ycmVzcG9uZGluZyBuZXcgcGFydGl0aW9uIGlu ZGV4ZXMgYWZ0ZXIgdGhleSdyZSBjcmVhdGVkLiBUaGUKbWFwcGluZyBiZXR3ZWVuIG9sZCBhbmQg bmV3IGluZGV4ZXMgaXMgZG9uZSB2aWEgdGhlaXIgY29tbW9uIHBhcmVudApwYXJ0aXRpb25lZCBp bmRleC4KCkRpc2N1c3Npb246IGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQv Q0FMZFNTUGpYdHpHTTdVazRmV1J3Uk1YY0NjemdlNXVOaXJQUWNZQ0hLUEFXUGtwOWlRJTQwbWFp bC5nbWFpbC5jb20KUmVwb3J0ZWQtYnk6IEtpcmlsbCBSZXNoa2UKLS0tCiBzcmMvYmFja2VuZC9j b21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICAgICAgfCAyMTggKysrKysrKysrKysrKysrKysr CiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9tZXJnZS5vdXQgfCAgNDAgKysr Kwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fc3BsaXQub3V0IHwgIDQxICsr KysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9tZXJnZS5zcWwgICAgICB8ICAzOCAr KysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9zcGxpdC5zcWwgICAgICB8ICAzOSAr KysrCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgICAgICAgfCAgIDEg KwogNiBmaWxlcyBjaGFuZ2VkLCAzNzcgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVj bWRzLmMKaW5kZXggZWVjMDliYTFkZWQuLmFmYTg5ZjhiM2NlIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJs ZWNtZHMuYwpAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfY29sbGF0aW9u LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb25zdHJhaW50LmgiCiAjaW5jbHVkZSAiY2F0YWxv Zy9wZ19kZXBlbmQuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2V4dGVuc2lvbl9kLmgiCiAjaW5j bHVkZSAiY2F0YWxvZy9wZ19mb3JlaWduX3RhYmxlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19p bmhlcml0cy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfbGFyZ2VvYmplY3QuaCIKQEAgLTM2NSw2 ICszNjYsMTYgQEAgdHlwZWRlZiBlbnVtIGFkZEZrQ29uc3RyYWludFNpZGVzCiAJYWRkRmtCb3Ro U2lkZXMsCiB9IGFkZEZrQ29uc3RyYWludFNpZGVzOwogCisvKgorICogSG9sZCBleHRlbnNpb24g ZGVwZW5kZW5jaWVzIGZvciBhIHBhcnRpdGlvbmVkIGluZGV4LiBVc2VkIGJ5CisgKiBjb2xsZWN0 UGFydGl0aW9uSW5kZXhFeHREZXBzIGFuZCBhcHBseVBhcnRpdGlvbkluZGV4RXh0RGVwcy4KKyAq LwordHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9uSW5kZXhFeHREZXBFbnRyeQoreworCU9pZAkJCXBh cmVudEluZGV4T2lkOyAvKiBPSUQgb2YgdGhlIHBhcmVudCBwYXJ0aXRpb25lZCBpbmRleCAqLwor CUxpc3QJICAgKmV4dGVuc2lvbk9pZHM7CS8qIExpc3Qgb2YgZXh0ZW5zaW9uIE9JRHMgdGhpcyBp bmRleCBkZXBlbmRzICovCit9IFBhcnRpdGlvbkluZGV4RXh0RGVwRW50cnk7CisKIC8qCiAgKiBQ YXJ0aXRpb24gdGFibGVzIGFyZSBleHBlY3RlZCB0byBiZSBkcm9wcGVkIHdoZW4gdGhlIHBhcmVu dCBwYXJ0aXRpb25lZAogICogdGFibGUgZ2V0cyBkcm9wcGVkLiBIZW5jZSBmb3IgcGFydGl0aW9u aW5nIHdlIHVzZSBBVVRPIGRlcGVuZGVuY3kuCkBAIC03NjAsNiArNzcxLDkgQEAgc3RhdGljIHZv aWQgQVRFeGVjTWVyZ2VQYXJ0aXRpb25zKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8g KnRhYiwgUmVsYXRpb24KIHN0YXRpYyB2b2lkIEFURXhlY1NwbGl0UGFydGl0aW9uKExpc3QgKip3 cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwKIAkJCQkJCQkJIFJlbGF0aW9uIHJlbCwgUGFy dGl0aW9uQ21kICpjbWQsCiAJCQkJCQkJCSBBbHRlclRhYmxlVXRpbGl0eUNvbnRleHQgKmNvbnRl eHQpOworc3RhdGljIExpc3QgKmNvbGxlY3RQYXJ0aXRpb25JbmRleEV4dERlcHMoTGlzdCAqcGFy dGl0aW9uT2lkcyk7CitzdGF0aWMgdm9pZCBhcHBseVBhcnRpdGlvbkluZGV4RXh0RGVwcyhPaWQg bmV3UGFydE9pZCwgTGlzdCAqZXh0RGVwU3RhdGUpOworc3RhdGljIHZvaWQgZnJlZVBhcnRpdGlv bkluZGV4RXh0RGVwcyhMaXN0ICpleHREZXBTdGF0ZSk7CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCQlEZWZp bmVSZWxhdGlvbgpAQCAtMjMwMDAsNiArMjMwMTQsMTcxIEBAIGRldGFjaFBhcnRpdGlvblRhYmxl KFJlbGF0aW9uIHBhcmVudF9yZWwsIFJlbGF0aW9uIGNoaWxkX3JlbCwgT2lkIGRlZmF1bHRQYXJ0 T2lkCiAJUG9wQWN0aXZlU25hcHNob3QoKTsKIH0KIAorLyoKKyAqIGNvbGxlY3RQYXJ0aXRpb25J bmRleEV4dERlcHM6IGNvbGxlY3QgZXh0ZW5zaW9uIGRlcGVuZGVuY2llcyBmcm9tIGluZGV4ZXMK KyAqIG9uIHRoZSBnaXZlbiBwYXJ0aXRpb25zLgorICoKKyAqIEZvciBlYWNoIGluZGV4IG9uIHRo ZSBzb3VyY2UgcGFydGl0aW9ucyB0aGF0IGhhcyBleHRlbnNpb24gZGVwZW5kZW5jaWVzLCB3ZQor ICogY29sbGVjdCBhIG1hcHBpbmcgZnJvbSB0aGUgcGFyZW50IHBhcnRpdGlvbmVkIGluZGV4IE9J RCB0byB0aGUgbGlzdCBvZgorICogZXh0ZW5zaW9uIE9JRHMuCisgKgorICogUmV0dXJucyBhIGxp c3Qgb2YgUGFydGl0aW9uSW5kZXhFeHREZXBFbnRyeSBzdHJ1Y3RzLgorICovCitzdGF0aWMgTGlz dCAqCitjb2xsZWN0UGFydGl0aW9uSW5kZXhFeHREZXBzKExpc3QgKnBhcnRpdGlvbk9pZHMpCit7 CisJTGlzdAkgICAqcmVzdWx0ID0gTklMOworCisJZm9yZWFjaF9vaWQocGFydE9pZCwgcGFydGl0 aW9uT2lkcykKKwl7CisJCVJlbGF0aW9uCXBhcnRSZWw7CisJCUxpc3QJICAgKmluZGV4TGlzdDsK KworCQkvKgorCQkgKiBVc2UgTm9Mb2NrIHNpbmNlIHRoZSBjYWxsZXIgYWxyZWFkeSBob2xkcyBB Y2Nlc3NFeGNsdXNpdmVMb2NrIG9uCisJCSAqIHRoZXNlIHBhcnRpdGlvbnMuCisJCSAqLworCQlw YXJ0UmVsID0gdGFibGVfb3BlbihwYXJ0T2lkLCBOb0xvY2spOworCQlpbmRleExpc3QgPSBSZWxh dGlvbkdldEluZGV4TGlzdChwYXJ0UmVsKTsKKworCQlmb3JlYWNoX29pZChpbmRleE9pZCwgaW5k ZXhMaXN0KQorCQl7CisJCQlPaWQJCQlwYXJlbnRJZHhPaWQ7CisJCQlMaXN0CSAgICpleHREZXBz OworCQkJUGFydGl0aW9uSW5kZXhFeHREZXBFbnRyeSAqZW50cnkgPSBOVUxMOworCQkJTGlzdENl bGwgICAqbGM7CisKKwkJCS8qIEdldCB0aGUgcGFyZW50IGluZGV4IGlmIHRoaXMgaXMgYSBwYXJ0 aXRpb24gaW5kZXggKi8KKwkJCXBhcmVudElkeE9pZCA9IGdldF9wYXJ0aXRpb25fcGFyZW50KGlu ZGV4T2lkLCB0cnVlKTsKKwkJCWlmICghT2lkSXNWYWxpZChwYXJlbnRJZHhPaWQpKQorCQkJCWNv bnRpbnVlOworCisJCQkvKiBHZXQgZXh0ZW5zaW9uIGRlcGVuZGVuY2llcyBmb3IgdGhpcyBpbmRl eCAqLworCQkJZXh0RGVwcyA9IGdldEF1dG9FeHRlbnNpb25zT2ZPYmplY3QoUmVsYXRpb25SZWxh dGlvbklkLCBpbmRleE9pZCk7CisJCQlpZiAoZXh0RGVwcyA9PSBOSUwpCisJCQkJY29udGludWU7 CisKKwkJCS8qCisJCQkgKiBMb29rIGZvciBleGlzdGluZyBlbnRyeSBmb3IgdGhpcyBwYXJlbnQg aW5kZXguCisJCQkgKi8KKwkJCWZvcmVhY2gobGMsIHJlc3VsdCkKKwkJCXsKKwkJCQlQYXJ0aXRp b25JbmRleEV4dERlcEVudHJ5ICplID0gbGZpcnN0KGxjKTsKKworCQkJCWlmIChlLT5wYXJlbnRJ bmRleE9pZCA9PSBwYXJlbnRJZHhPaWQpCisJCQkJeworCQkJCQllbnRyeSA9IGU7CisJCQkJCWJy ZWFrOworCQkJCX0KKwkJCX0KKworCQkJaWYgKGVudHJ5ICE9IE5VTEwpCisJCQl7CisJCQkJLyog QWRkIGV4dGVuc2lvbiBkZXBlbmRlbmNpZXMgYXZvaWRpbmcgZHVwbGljYXRlcyAqLworCQkJCWZv cmVhY2hfb2lkKGV4dE9pZCwgZXh0RGVwcykKKwkJCQl7CisJCQkJCWlmICghbGlzdF9tZW1iZXJf b2lkKGVudHJ5LT5leHRlbnNpb25PaWRzLCBleHRPaWQpKQorCQkJCQkJZW50cnktPmV4dGVuc2lv bk9pZHMgPSBsYXBwZW5kX29pZChlbnRyeS0+ZXh0ZW5zaW9uT2lkcywKKwkJCQkJCQkJCQkJCQkJ ICAgZXh0T2lkKTsKKwkJCQl9CisJCQkJbGlzdF9mcmVlKGV4dERlcHMpOworCQkJfQorCQkJZWxz ZQorCQkJeworCQkJCS8qIENyZWF0ZSBuZXcgZW50cnkgKi8KKwkJCQllbnRyeSA9IHBhbGxvYyhz aXplb2YoUGFydGl0aW9uSW5kZXhFeHREZXBFbnRyeSkpOworCQkJCWVudHJ5LT5wYXJlbnRJbmRl eE9pZCA9IHBhcmVudElkeE9pZDsKKwkJCQllbnRyeS0+ZXh0ZW5zaW9uT2lkcyA9IGV4dERlcHM7 CisJCQkJcmVzdWx0ID0gbGFwcGVuZChyZXN1bHQsIGVudHJ5KTsKKwkJCX0KKwkJfQorCisJCWxp c3RfZnJlZShpbmRleExpc3QpOworCQl0YWJsZV9jbG9zZShwYXJ0UmVsLCBOb0xvY2spOworCX0K KworCXJldHVybiByZXN1bHQ7Cit9CisKKy8qCisgKiBhcHBseVBhcnRpdGlvbkluZGV4RXh0RGVw czogYXBwbHkgY29sbGVjdGVkIGV4dGVuc2lvbiBkZXBlbmRlbmNpZXMgdG8KKyAqIGluZGV4ZXMg b24gYSBuZXcgcGFydGl0aW9uLgorICoKKyAqIEZvciBlYWNoIGluZGV4IG9uIHRoZSBuZXcgcGFy dGl0aW9uLCBsb29rIHVwIGl0cyBwYXJlbnQgaW5kZXggaW4gdGhlCisgKiBleHREZXBTdGF0ZSBs aXN0LiBJZiBmb3VuZCwgcmVjb3JkIGV4dGVuc2lvbiBkZXBlbmRlbmNpZXMgb24gdGhlIG5ldyBp bmRleC4KKyAqLworc3RhdGljIHZvaWQKK2FwcGx5UGFydGl0aW9uSW5kZXhFeHREZXBzKE9pZCBu ZXdQYXJ0T2lkLCBMaXN0ICpleHREZXBTdGF0ZSkKK3sKKwlSZWxhdGlvbglwYXJ0UmVsOworCUxp c3QJICAgKmluZGV4TGlzdDsKKworCWlmIChleHREZXBTdGF0ZSA9PSBOSUwpCisJCXJldHVybjsK KworCS8qCisJICogVXNlIE5vTG9jayBzaW5jZSB0aGUgY2FsbGVyIGFscmVhZHkgaG9sZHMgQWNj ZXNzRXhjbHVzaXZlTG9jayBvbiB0aGUKKwkgKiBuZXcgcGFydGl0aW9uLgorCSAqLworCXBhcnRS ZWwgPSB0YWJsZV9vcGVuKG5ld1BhcnRPaWQsIE5vTG9jayk7CisJaW5kZXhMaXN0ID0gUmVsYXRp b25HZXRJbmRleExpc3QocGFydFJlbCk7CisKKwlmb3JlYWNoX29pZChpbmRleE9pZCwgaW5kZXhM aXN0KQorCXsKKwkJT2lkCQkJcGFyZW50SWR4T2lkOworCQlMaXN0Q2VsbCAgICpsYzsKKworCQkv KiBHZXQgdGhlIHBhcmVudCBpbmRleCBpZiB0aGlzIGlzIGEgcGFydGl0aW9uIGluZGV4ICovCisJ CXBhcmVudElkeE9pZCA9IGdldF9wYXJ0aXRpb25fcGFyZW50KGluZGV4T2lkLCB0cnVlKTsKKwkJ aWYgKCFPaWRJc1ZhbGlkKHBhcmVudElkeE9pZCkpCisJCQljb250aW51ZTsKKworCQkvKiBMb29r IGZvciBleHRlbnNpb24gZGVwZW5kZW5jaWVzIHRvIGFwcGx5ICovCisJCWZvcmVhY2gobGMsIGV4 dERlcFN0YXRlKQorCQl7CisJCQlQYXJ0aXRpb25JbmRleEV4dERlcEVudHJ5ICplbnRyeSA9IGxm aXJzdChsYyk7CisKKwkJCWlmIChlbnRyeS0+cGFyZW50SW5kZXhPaWQgPT0gcGFyZW50SWR4T2lk KQorCQkJeworCQkJCU9iamVjdEFkZHJlc3MgaW5kZXhBZGRyOworCisJCQkJT2JqZWN0QWRkcmVz c1NldChpbmRleEFkZHIsIFJlbGF0aW9uUmVsYXRpb25JZCwgaW5kZXhPaWQpOworCisJCQkJZm9y ZWFjaF9vaWQoZXh0T2lkLCBlbnRyeS0+ZXh0ZW5zaW9uT2lkcykKKwkJCQl7CisJCQkJCU9iamVj dEFkZHJlc3MgZXh0QWRkcjsKKworCQkJCQlPYmplY3RBZGRyZXNzU2V0KGV4dEFkZHIsIEV4dGVu c2lvblJlbGF0aW9uSWQsIGV4dE9pZCk7CisJCQkJCXJlY29yZERlcGVuZGVuY3lPbigmaW5kZXhB ZGRyLCAmZXh0QWRkciwKKwkJCQkJCQkJCSAgIERFUEVOREVOQ1lfQVVUT19FWFRFTlNJT04pOwor CQkJCX0KKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCX0KKworCWxpc3RfZnJlZShpbmRleExpc3Qp OworCXRhYmxlX2Nsb3NlKHBhcnRSZWwsIE5vTG9jayk7Cit9CisKKy8qCisgKiBmcmVlUGFydGl0 aW9uSW5kZXhFeHREZXBzOiBmcmVlIG1lbW9yeSBhbGxvY2F0ZWQgYnkgY29sbGVjdFBhcnRpdGlv bkluZGV4RXh0RGVwcy4KKyAqLworc3RhdGljIHZvaWQKK2ZyZWVQYXJ0aXRpb25JbmRleEV4dERl cHMoTGlzdCAqZXh0RGVwU3RhdGUpCit7CisJTGlzdENlbGwgICAqbGM7CisKKwlmb3JlYWNoKGxj LCBleHREZXBTdGF0ZSkKKwl7CisJCVBhcnRpdGlvbkluZGV4RXh0RGVwRW50cnkgKmVudHJ5ID0g bGZpcnN0KGxjKTsKKworCQlsaXN0X2ZyZWUoZW50cnktPmV4dGVuc2lvbk9pZHMpOworCQlwZnJl ZShlbnRyeSk7CisJfQorCWxpc3RfZnJlZShleHREZXBTdGF0ZSk7Cit9CisKIC8qCiAgKiBBTFRF UiBUQUJMRSA8bmFtZT4gTUVSR0UgUEFSVElUSU9OUyA8cGFydGl0aW9uLWxpc3Q+IElOVE8gPHBh cnRpdGlvbi1uYW1lPgogICovCkBAIC0yMzAwOSw2ICsyMzE4OCw3IEBAIEFURXhlY01lcmdlUGFy dGl0aW9ucyhMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJl bCwKIHsKIAlSZWxhdGlvbgluZXdQYXJ0UmVsOwogCUxpc3QJICAgKm1lcmdpbmdQYXJ0aXRpb25z ID0gTklMOworCUxpc3QJICAgKmV4dERlcFN0YXRlID0gTklMOwogCU9pZAkJCWRlZmF1bHRQYXJ0 T2lkOwogCU9pZAkJCWV4aXN0aW5nUmVsaWQ7CiAJT2lkCQkJb3duZXJJZCA9IEludmFsaWRPaWQ7 CkBAIC0yMzA5OCw2ICsyMzI3OCwxMyBAQCBBVEV4ZWNNZXJnZVBhcnRpdGlvbnMoTGlzdCAqKndx dWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCiAJZGVmYXVsdFBhcnRP aWQgPQogCQlnZXRfZGVmYXVsdF9vaWRfZnJvbV9wYXJ0ZGVzYyhSZWxhdGlvbkdldFBhcnRpdGlv bkRlc2MocmVsLCB0cnVlKSk7CiAKKwkvKgorCSAqIENvbGxlY3QgZXh0ZW5zaW9uIGRlcGVuZGVu Y2llcyBmcm9tIGluZGV4ZXMgb24gdGhlIG1lcmdpbmcgcGFydGl0aW9ucy4KKwkgKiBXZSBtdXN0 IGRvIHRoaXMgYmVmb3JlIGRldGFjaGluZyB0aGVtLCBzbyB3ZSBjYW4gcmVzdG9yZSB0aGUKKwkg KiBkZXBlbmRlbmNpZXMgb24gdGhlIG5ldyBwYXJ0aXRpb24ncyBpbmRleGVzIGxhdGVyLgorCSAq LworCWV4dERlcFN0YXRlID0gY29sbGVjdFBhcnRpdGlvbkluZGV4RXh0RGVwcyhtZXJnaW5nUGFy dGl0aW9ucyk7CisKIAkvKiBEZXRhY2ggYWxsIG1lcmdpbmcgcGFydGl0aW9ucy4gKi8KIAlmb3Jl YWNoX29pZChtZXJnaW5nUGFydGl0aW9uT2lkLCBtZXJnaW5nUGFydGl0aW9ucykKIAl7CkBAIC0y MzE3NSw2ICsyMzM2MiwxNSBAQCBBVEV4ZWNNZXJnZVBhcnRpdGlvbnMoTGlzdCAqKndxdWV1ZSwg QWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCiAJICovCiAJYXR0YWNoUGFydGl0 aW9uVGFibGUoTlVMTCwgcmVsLCBuZXdQYXJ0UmVsLCBjbWQtPmJvdW5kKTsKIAorCS8qCisJICog QXBwbHkgZXh0ZW5zaW9uIGRlcGVuZGVuY2llcyB0byB0aGUgbmV3IHBhcnRpdGlvbidzIGluZGV4 ZXMuIFRoaXMKKwkgKiBwcmVzZXJ2ZXMgYW55ICJERVBFTkRTIE9OIEVYVEVOU0lPTiIgc2V0dGlu Z3MgZnJvbSB0aGUgbWVyZ2VkCisJICogcGFydGl0aW9ucy4KKwkgKi8KKwlhcHBseVBhcnRpdGlv bkluZGV4RXh0RGVwcyhSZWxhdGlvbkdldFJlbGlkKG5ld1BhcnRSZWwpLCBleHREZXBTdGF0ZSk7 CisKKwlmcmVlUGFydGl0aW9uSW5kZXhFeHREZXBzKGV4dERlcFN0YXRlKTsKKwogCS8qIEtlZXAg dGhlIGxvY2sgdW50aWwgY29tbWl0LiAqLwogCXRhYmxlX2Nsb3NlKG5ld1BhcnRSZWwsIE5vTG9j ayk7CiAKQEAgLTIzNDY5LDExICsyMzY2NSwxMyBAQCBBVEV4ZWNTcGxpdFBhcnRpdGlvbihMaXN0 ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAlib29sCQlp c1NhbWVOYW1lID0gZmFsc2U7CiAJY2hhcgkJdG1wUmVsTmFtZVtOQU1FREFUQUxFTl07CiAJTGlz dAkgICAqbmV3UGFydFJlbHMgPSBOSUw7CisJTGlzdAkgICAqZXh0RGVwU3RhdGUgPSBOSUw7CiAJ T2JqZWN0QWRkcmVzcyBvYmplY3Q7CiAJT2lkCQkJZGVmYXVsdFBhcnRPaWQ7CiAJT2lkCQkJc2F2 ZV91c2VyaWQ7CiAJaW50CQkJc2F2ZV9zZWNfY29udGV4dDsKIAlpbnQJCQlzYXZlX25lc3RsZXZl bDsKKwlMaXN0CSAgICpzcGxpdFBhcnRMaXN0OwogCiAJZGVmYXVsdFBhcnRPaWQgPSBnZXRfZGVm YXVsdF9vaWRfZnJvbV9wYXJ0ZGVzYyhSZWxhdGlvbkdldFBhcnRpdGlvbkRlc2MocmVsLCB0cnVl KSk7CiAKQEAgLTIzNTA2LDYgKzIzNzA0LDE2IEBAIEFURXhlY1NwbGl0UGFydGl0aW9uKExpc3Qg Kip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogCQkJCQllcnJt c2coInJlbGF0aW9uIFwiJXNcIiBhbHJlYWR5IGV4aXN0cyIsIHNwcy0+bmFtZS0+cmVsbmFtZSkp OwogCX0KIAorCS8qCisJICogQ29sbGVjdCBleHRlbnNpb24gZGVwZW5kZW5jaWVzIGZyb20gaW5k ZXhlcyBvbiB0aGUgc3BsaXQgcGFydGl0aW9uLiBXZQorCSAqIG11c3QgZG8gdGhpcyBiZWZvcmUg ZGV0YWNoaW5nIGl0LCBzbyB3ZSBjYW4gcmVzdG9yZSB0aGUgZGVwZW5kZW5jaWVzIG9uCisJICog dGhlIG5ldyBwYXJ0aXRpb25zJyBpbmRleGVzIGxhdGVyLgorCSAqLworCXNwbGl0UGFydExpc3Qg PSBsaXN0X21ha2UxX29pZChzcGxpdFJlbE9pZCk7CisKKwlleHREZXBTdGF0ZSA9IGNvbGxlY3RQ YXJ0aXRpb25JbmRleEV4dERlcHMoc3BsaXRQYXJ0TGlzdCk7CisJbGlzdF9mcmVlKHNwbGl0UGFy dExpc3QpOworCiAJLyogRGV0YWNoIHRoZSBzcGxpdCBwYXJ0aXRpb24uICovCiAJZGV0YWNoUGFy dGl0aW9uVGFibGUocmVsLCBzcGxpdFJlbCwgZGVmYXVsdFBhcnRPaWQpOwogCkBAIC0yMzU4NSwx MCArMjM3OTMsMjAgQEAgQVRFeGVjU3BsaXRQYXJ0aXRpb24oTGlzdCAqKndxdWV1ZSwgQWx0ZXJl ZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCiAJCSAqIG5lZWRlZC4KIAkJICovCiAJCWF0 dGFjaFBhcnRpdGlvblRhYmxlKE5VTEwsIHJlbCwgbmV3UGFydFJlbCwgc3BzLT5ib3VuZCk7CisK KwkJLyoKKwkJICogQXBwbHkgZXh0ZW5zaW9uIGRlcGVuZGVuY2llcyB0byB0aGUgbmV3IHBhcnRp dGlvbidzIGluZGV4ZXMuIFRoaXMKKwkJICogcHJlc2VydmVzIGFueSAiREVQRU5EUyBPTiBFWFRF TlNJT04iIHNldHRpbmdzIGZyb20gdGhlIHNwbGl0CisJCSAqIHBhcnRpdGlvbi4KKwkJICovCisJ CWFwcGx5UGFydGl0aW9uSW5kZXhFeHREZXBzKFJlbGF0aW9uR2V0UmVsaWQobmV3UGFydFJlbCks IGV4dERlcFN0YXRlKTsKKwogCQkvKiBLZWVwIHRoZSBsb2NrIHVudGlsIGNvbW1pdC4gKi8KIAkJ dGFibGVfY2xvc2UobmV3UGFydFJlbCwgTm9Mb2NrKTsKIAl9CiAKKwlmcmVlUGFydGl0aW9uSW5k ZXhFeHREZXBzKGV4dERlcFN0YXRlKTsKKwogCS8qIERyb3AgdGhlIHNwbGl0IHBhcnRpdGlvbi4g Ki8KIAlvYmplY3QuY2xhc3NJZCA9IFJlbGF0aW9uUmVsYXRpb25JZDsKIAlvYmplY3Qub2JqZWN0 SWQgPSBzcGxpdFJlbE9pZDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv cGFydGl0aW9uX21lcmdlLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9u X21lcmdlLm91dAppbmRleCA5MjVmZTRmNTcwYS4uMDBhYTE2OTY0Y2UgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX21lcmdlLm91dAorKysgYi9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9tZXJnZS5vdXQKQEAgLTEwOTEsNiArMTA5MSw0 NiBAQCBTRUxFQ1QgY291bnQoKikgRlJPTSB0IFdIRVJFIGkgPSAxNSBBTkQgZyBJTiAoU0VMRUNU IGcgKyAxMCBGUk9NIHQgV0hFUkUgaSA9IDUpOwogKDEgcm93KQogCiBEUk9QIFRBQkxFIHQ7Cist LQorLS0gVGVzdCB0aGF0IGV4dGVuc2lvbiBkZXBlbmRlbmNpZXMgb24gcGFydGl0aW9uIGluZGV4 ZXMgYXJlIHByZXNlcnZlZAorLS0gYWZ0ZXIgTUVSR0UgUEFSVElUSU9OUy4KKy0tCitDUkVBVEUg RVhURU5TSU9OIGlmIG5vdCBleGlzdHMgYnRyZWVfZ2lzdDsKK0NSRUFURSBUQUJMRSB0X21lcmdl X2V4dGRlcCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdF9t ZXJnZV9leHRkZXBfMSBQQVJUSVRJT04gT0YgdF9tZXJnZV9leHRkZXAgRk9SIFZBTFVFUyBGUk9N ICgxKSBUTyAoMik7CitDUkVBVEUgVEFCTEUgdF9tZXJnZV9leHRkZXBfMiBQQVJUSVRJT04gT0Yg dF9tZXJnZV9leHRkZXAgRk9SIFZBTFVFUyBGUk9NICgyKSBUTyAoMyk7CitDUkVBVEUgSU5ERVgg dF9tZXJnZV9leHRkZXBfaWR4IE9OIHRfbWVyZ2VfZXh0ZGVwIFVTSU5HIGdpc3QgKGkpOworLS0g QWRkIGV4dGVuc2lvbiBkZXBlbmRlbmN5IG9uIHBhcnRpdGlvbiBpbmRleGVzCitBTFRFUiBJTkRF WCB0X21lcmdlX2V4dGRlcF8xX2lfaWR4IERFUEVORFMgT04gRVhURU5TSU9OIGJ0cmVlX2dpc3Q7 CitBTFRFUiBJTkRFWCB0X21lcmdlX2V4dGRlcF8yX2lfaWR4IERFUEVORFMgT04gRVhURU5TSU9O IGJ0cmVlX2dpc3Q7CistLSBTaG91bGQgZmFpbDogZGVwZW5kZW5jaWVzIGV4aXN0CitEUk9QIEVY VEVOU0lPTiBidHJlZV9naXN0OworRVJST1I6ICBjYW5ub3QgZHJvcCBleHRlbnNpb24gYnRyZWVf Z2lzdCBiZWNhdXNlIG90aGVyIG9iamVjdHMgZGVwZW5kIG9uIGl0CitERVRBSUw6ICBpbmRleCB0 X21lcmdlX2V4dGRlcF9pZHggZGVwZW5kcyBvbiBvcGVyYXRvciBjbGFzcyBnaXN0X2ludDRfb3Bz IGZvciBhY2Nlc3MgbWV0aG9kIGdpc3QKK0hJTlQ6ICBVc2UgRFJPUCAuLi4gQ0FTQ0FERSB0byBk cm9wIHRoZSBkZXBlbmRlbnQgb2JqZWN0cyB0b28uCistLSBNZXJnZSBwYXJ0aXRpb25zCitBTFRF UiBUQUJMRSB0X21lcmdlX2V4dGRlcCBNRVJHRSBQQVJUSVRJT05TICh0X21lcmdlX2V4dGRlcF8x LCB0X21lcmdlX2V4dGRlcF8yKSBJTlRPIHRfbWVyZ2VfZXh0ZGVwX21lcmdlZDsKKy0tIFNob3Vs ZCBzdGlsbCBmYWlsOiBkZXBlbmRlbmNpZXMgc2hvdWxkIGJlIHByZXNlcnZlZCBvbiB0aGUgbmV3 IHBhcnRpdGlvbidzIGluZGV4CitEUk9QIEVYVEVOU0lPTiBidHJlZV9naXN0OworRVJST1I6ICBj YW5ub3QgZHJvcCBleHRlbnNpb24gYnRyZWVfZ2lzdCBiZWNhdXNlIG90aGVyIG9iamVjdHMgZGVw ZW5kIG9uIGl0CitERVRBSUw6ICBpbmRleCB0X21lcmdlX2V4dGRlcF9pZHggZGVwZW5kcyBvbiBv cGVyYXRvciBjbGFzcyBnaXN0X2ludDRfb3BzIGZvciBhY2Nlc3MgbWV0aG9kIGdpc3QKK0hJTlQ6 ICBVc2UgRFJPUCAuLi4gQ0FTQ0FERSB0byBkcm9wIHRoZSBkZXBlbmRlbnQgb2JqZWN0cyB0b28u CistLSBWZXJpZnkgdGhlIGRlcGVuZGVuY3kgZXhpc3RzIGluIHBnX2RlcGVuZAorU0VMRUNUIENP VU5UKCopID4gMCBBUyBoYXNfZXh0X2RlcAorRlJPTSBwZ19kZXBlbmQgZAorSk9JTiBwZ19jbGFz cyBjIE9OIGQub2JqaWQgPSBjLm9pZAorSk9JTiBwZ19leHRlbnNpb24gZSBPTiBkLnJlZm9iamlk ID0gZS5vaWQKK1dIRVJFIGMucmVsbmFtZSA9ICd0X21lcmdlX2V4dGRlcF9tZXJnZWRfaV9pZHgn CisgIEFORCBlLmV4dG5hbWUgPSAnYnRyZWVfZ2lzdCcKKyAgQU5EIGQuZGVwdHlwZSA9ICd4JzsK KyBoYXNfZXh0X2RlcCAKKy0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKKy0tIENsZWFuIHVw CitEUk9QIFRBQkxFIHRfbWVyZ2VfZXh0ZGVwOworRFJPUCBFWFRFTlNJT04gYnRyZWVfZ2lzdDsK IFJFU0VUIHNlYXJjaF9wYXRoOwogLS0KIERST1AgU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2No ZW1hOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fc3Bs aXQub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fc3BsaXQub3V0Cmlu ZGV4IDEzY2E3MzNmOWZhLi5hODljMmRhZGM5NyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9wYXJ0aXRpb25fc3BsaXQub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvcGFydGl0aW9uX3NwbGl0Lm91dApAQCAtMTU4OSw2ICsxNTg5LDQ3IEBAIFNFTEVDVCBj b3VudCgqKSBGUk9NIHQgV0hFUkUgaSA9IDAgQU5EIHRhYl9pZCBJTiAoU0VMRUNUIHRhYl9pZCBG Uk9NIHQgV0hFUkUgaSA9CiAoMSByb3cpCiAKIERST1AgVEFCTEUgdDsKKy0tCistLSBUZXN0IHRo YXQgZXh0ZW5zaW9uIGRlcGVuZGVuY2llcyBvbiBwYXJ0aXRpb24gaW5kZXhlcyBhcmUgcHJlc2Vy dmVkCistLSBhZnRlciBTUExJVCBQQVJUSVRJT04uCistLQorQ1JFQVRFIEVYVEVOU0lPTiBjaXRl eHQ7CitDUkVBVEUgVEFCTEUgdF9leHRkZXAgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkp OworQ1JFQVRFIFRBQkxFIHRfZXh0ZGVwXzFfMyBQQVJUSVRJT04gT0YgdF9leHRkZXAgRk9SIFZB TFVFUyBGUk9NICgxKSBUTyAoMyk7CitDUkVBVEUgSU5ERVggdF9leHRkZXBfaWR4IE9OIHRfZXh0 ZGVwIChpKTsKKy0tIEFkZCBleHRlbnNpb24gZGVwZW5kZW5jeSBvbiBwYXJ0aXRpb24gaW5kZXgK K0FMVEVSIElOREVYIHRfZXh0ZGVwXzFfM19pX2lkeCBERVBFTkRTIE9OIEVYVEVOU0lPTiBjaXRl eHQ7CistLSBTaG91bGQgZmFpbDogZGVwZW5kZW5jeSBleGlzdHMKK0RST1AgRVhURU5TSU9OIGNp dGV4dDsKK0VSUk9SOiAgY2Fubm90IGRyb3AgaW5kZXggdF9leHRkZXBfMV8zX2lfaWR4IGJlY2F1 c2UgaW5kZXggdF9leHRkZXBfaWR4IHJlcXVpcmVzIGl0CitISU5UOiAgWW91IGNhbiBkcm9wIGlu ZGV4IHRfZXh0ZGVwX2lkeCBpbnN0ZWFkLgorLS0gU3BsaXQgcGFydGl0aW9uCitBTFRFUiBUQUJM RSB0X2V4dGRlcCBTUExJVCBQQVJUSVRJT04gdF9leHRkZXBfMV8zIElOVE8KKyAgKFBBUlRJVElP TiB0X2V4dGRlcF8xIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpLAorICAgUEFSVElUSU9OIHRf ZXh0ZGVwXzIgRk9SIFZBTFVFUyBGUk9NICgyKSBUTyAoMykpOworLS0gU2hvdWxkIHN0aWxsIGZh aWw6IGRlcGVuZGVuY2llcyBzaG91bGQgYmUgcHJlc2VydmVkIG9uIGFsbCBuZXcgcGFydGl0aW9u cycgaW5kZXhlcworRFJPUCBFWFRFTlNJT04gY2l0ZXh0OworRVJST1I6ICBjYW5ub3QgZHJvcCBp bmRleCB0X2V4dGRlcF8yX2lfaWR4IGJlY2F1c2UgaW5kZXggdF9leHRkZXBfaWR4IHJlcXVpcmVz IGl0CitISU5UOiAgWW91IGNhbiBkcm9wIGluZGV4IHRfZXh0ZGVwX2lkeCBpbnN0ZWFkLgorLS0g VmVyaWZ5IHRoZSBkZXBlbmRlbmNpZXMgZXhpc3QgaW4gcGdfZGVwZW5kIGZvciBib3RoIG5ldyBw YXJ0aXRpb25zCitTRUxFQ1QgYy5yZWxuYW1lLCBDT1VOVCgqKSA+IDAgQVMgaGFzX2V4dF9kZXAK K0ZST00gcGdfZGVwZW5kIGQKK0pPSU4gcGdfY2xhc3MgYyBPTiBkLm9iamlkID0gYy5vaWQKK0pP SU4gcGdfZXh0ZW5zaW9uIGUgT04gZC5yZWZvYmppZCA9IGUub2lkCitXSEVSRSBjLnJlbG5hbWUg SU4gKCd0X2V4dGRlcF8xX2lfaWR4JywgJ3RfZXh0ZGVwXzJfaV9pZHgnKQorICBBTkQgZS5leHRu YW1lID0gJ2NpdGV4dCcKKyAgQU5EIGQuZGVwdHlwZSA9ICd4JworR1JPVVAgQlkgYy5yZWxuYW1l CitPUkRFUiBCWSBjLnJlbG5hbWU7CisgICAgIHJlbG5hbWUgICAgICB8IGhhc19leHRfZGVwIAor LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyB0X2V4dGRlcF8xX2lfaWR4IHwgdAor IHRfZXh0ZGVwXzJfaV9pZHggfCB0CisoMiByb3dzKQorCistLSBDbGVhbiB1cAorRFJPUCBUQUJM RSB0X2V4dGRlcDsKK0RST1AgRVhURU5TSU9OIGNpdGV4dDsKIFJFU0VUIHNlYXJjaF9wYXRoOwog LS0KIERST1AgU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWE7CmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fbWVyZ2Uuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9z cWwvcGFydGl0aW9uX21lcmdlLnNxbAppbmRleCBhMjExZmVlMmFkMS4uNDg2NGM2NjYzNmQgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9tZXJnZS5zcWwKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX21lcmdlLnNxbApAQCAtNzg0LDYgKzc4NCw0 NCBAQCBTRUxFQ1QgY291bnQoKikgRlJPTSB0IFdIRVJFIGkgPSAxNSBBTkQgZyBJTiAoU0VMRUNU IGcgKyAxMCBGUk9NIHQgV0hFUkUgaSA9IDUpOwogRFJPUCBUQUJMRSB0OwogCiAKKy0tCistLSBU ZXN0IHRoYXQgZXh0ZW5zaW9uIGRlcGVuZGVuY2llcyBvbiBwYXJ0aXRpb24gaW5kZXhlcyBhcmUg cHJlc2VydmVkCistLSBhZnRlciBNRVJHRSBQQVJUSVRJT05TLgorLS0KK0NSRUFURSBFWFRFTlNJ T04gaWYgbm90IGV4aXN0cyBidHJlZV9naXN0OworCitDUkVBVEUgVEFCTEUgdF9tZXJnZV9leHRk ZXAgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRFIFRBQkxFIHRfbWVyZ2Vf ZXh0ZGVwXzEgUEFSVElUSU9OIE9GIHRfbWVyZ2VfZXh0ZGVwIEZPUiBWQUxVRVMgRlJPTSAoMSkg VE8gKDIpOworQ1JFQVRFIFRBQkxFIHRfbWVyZ2VfZXh0ZGVwXzIgUEFSVElUSU9OIE9GIHRfbWVy Z2VfZXh0ZGVwIEZPUiBWQUxVRVMgRlJPTSAoMikgVE8gKDMpOworQ1JFQVRFIElOREVYIHRfbWVy Z2VfZXh0ZGVwX2lkeCBPTiB0X21lcmdlX2V4dGRlcCBVU0lORyBnaXN0IChpKTsKKworLS0gQWRk IGV4dGVuc2lvbiBkZXBlbmRlbmN5IG9uIHBhcnRpdGlvbiBpbmRleGVzCitBTFRFUiBJTkRFWCB0 X21lcmdlX2V4dGRlcF8xX2lfaWR4IERFUEVORFMgT04gRVhURU5TSU9OIGJ0cmVlX2dpc3Q7CitB TFRFUiBJTkRFWCB0X21lcmdlX2V4dGRlcF8yX2lfaWR4IERFUEVORFMgT04gRVhURU5TSU9OIGJ0 cmVlX2dpc3Q7CisKKy0tIFNob3VsZCBmYWlsOiBkZXBlbmRlbmNpZXMgZXhpc3QKK0RST1AgRVhU RU5TSU9OIGJ0cmVlX2dpc3Q7CisKKy0tIE1lcmdlIHBhcnRpdGlvbnMKK0FMVEVSIFRBQkxFIHRf bWVyZ2VfZXh0ZGVwIE1FUkdFIFBBUlRJVElPTlMgKHRfbWVyZ2VfZXh0ZGVwXzEsIHRfbWVyZ2Vf ZXh0ZGVwXzIpIElOVE8gdF9tZXJnZV9leHRkZXBfbWVyZ2VkOworCistLSBTaG91bGQgc3RpbGwg ZmFpbDogZGVwZW5kZW5jaWVzIHNob3VsZCBiZSBwcmVzZXJ2ZWQgb24gdGhlIG5ldyBwYXJ0aXRp b24ncyBpbmRleAorRFJPUCBFWFRFTlNJT04gYnRyZWVfZ2lzdDsKKworLS0gVmVyaWZ5IHRoZSBk ZXBlbmRlbmN5IGV4aXN0cyBpbiBwZ19kZXBlbmQKK1NFTEVDVCBDT1VOVCgqKSA+IDAgQVMgaGFz X2V4dF9kZXAKK0ZST00gcGdfZGVwZW5kIGQKK0pPSU4gcGdfY2xhc3MgYyBPTiBkLm9iamlkID0g Yy5vaWQKK0pPSU4gcGdfZXh0ZW5zaW9uIGUgT04gZC5yZWZvYmppZCA9IGUub2lkCitXSEVSRSBj LnJlbG5hbWUgPSAndF9tZXJnZV9leHRkZXBfbWVyZ2VkX2lfaWR4JworICBBTkQgZS5leHRuYW1l ID0gJ2J0cmVlX2dpc3QnCisgIEFORCBkLmRlcHR5cGUgPSAneCc7CisKKy0tIENsZWFuIHVwCitE Uk9QIFRBQkxFIHRfbWVyZ2VfZXh0ZGVwOworRFJPUCBFWFRFTlNJT04gYnRyZWVfZ2lzdDsKKwor CiBSRVNFVCBzZWFyY2hfcGF0aDsKIAogLS0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3BhcnRpdGlvbl9zcGxpdC5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25f c3BsaXQuc3FsCmluZGV4IDM3YzZkNzMwODQwLi5lYTM1YWE1OTFhOCAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3NwbGl0LnNxbAorKysgYi9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9wYXJ0aXRpb25fc3BsaXQuc3FsCkBAIC0xMTI3LDYgKzExMjcsNDUgQEAgU0VMRUNU IGNvdW50KCopIEZST00gdCBXSEVSRSBpID0gMCBBTkQgdGFiX2lkIElOIChTRUxFQ1QgdGFiX2lk IEZST00gdCBXSEVSRSBpID0KIERST1AgVEFCTEUgdDsKIAogCistLQorLS0gVGVzdCB0aGF0IGV4 dGVuc2lvbiBkZXBlbmRlbmNpZXMgb24gcGFydGl0aW9uIGluZGV4ZXMgYXJlIHByZXNlcnZlZAor LS0gYWZ0ZXIgU1BMSVQgUEFSVElUSU9OLgorLS0KK0NSRUFURSBFWFRFTlNJT04gY2l0ZXh0Owor CitDUkVBVEUgVEFCTEUgdF9leHRkZXAgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOwor Q1JFQVRFIFRBQkxFIHRfZXh0ZGVwXzFfMyBQQVJUSVRJT04gT0YgdF9leHRkZXAgRk9SIFZBTFVF UyBGUk9NICgxKSBUTyAoMyk7CitDUkVBVEUgSU5ERVggdF9leHRkZXBfaWR4IE9OIHRfZXh0ZGVw IChpKTsKKworLS0gQWRkIGV4dGVuc2lvbiBkZXBlbmRlbmN5IG9uIHBhcnRpdGlvbiBpbmRleAor QUxURVIgSU5ERVggdF9leHRkZXBfMV8zX2lfaWR4IERFUEVORFMgT04gRVhURU5TSU9OIGNpdGV4 dDsKKworLS0gU2hvdWxkIGZhaWw6IGRlcGVuZGVuY3kgZXhpc3RzCitEUk9QIEVYVEVOU0lPTiBj aXRleHQ7CisKKy0tIFNwbGl0IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgdF9leHRkZXAgU1BMSVQg UEFSVElUSU9OIHRfZXh0ZGVwXzFfMyBJTlRPCisgIChQQVJUSVRJT04gdF9leHRkZXBfMSBGT1Ig VkFMVUVTIEZST00gKDEpIFRPICgyKSwKKyAgIFBBUlRJVElPTiB0X2V4dGRlcF8yIEZPUiBWQUxV RVMgRlJPTSAoMikgVE8gKDMpKTsKKworLS0gU2hvdWxkIHN0aWxsIGZhaWw6IGRlcGVuZGVuY2ll cyBzaG91bGQgYmUgcHJlc2VydmVkIG9uIGFsbCBuZXcgcGFydGl0aW9ucycgaW5kZXhlcworRFJP UCBFWFRFTlNJT04gY2l0ZXh0OworCistLSBWZXJpZnkgdGhlIGRlcGVuZGVuY2llcyBleGlzdCBp biBwZ19kZXBlbmQgZm9yIGJvdGggbmV3IHBhcnRpdGlvbnMKK1NFTEVDVCBjLnJlbG5hbWUsIENP VU5UKCopID4gMCBBUyBoYXNfZXh0X2RlcAorRlJPTSBwZ19kZXBlbmQgZAorSk9JTiBwZ19jbGFz cyBjIE9OIGQub2JqaWQgPSBjLm9pZAorSk9JTiBwZ19leHRlbnNpb24gZSBPTiBkLnJlZm9iamlk ID0gZS5vaWQKK1dIRVJFIGMucmVsbmFtZSBJTiAoJ3RfZXh0ZGVwXzFfaV9pZHgnLCAndF9leHRk ZXBfMl9pX2lkeCcpCisgIEFORCBlLmV4dG5hbWUgPSAnY2l0ZXh0JworICBBTkQgZC5kZXB0eXBl ID0gJ3gnCitHUk9VUCBCWSBjLnJlbG5hbWUKK09SREVSIEJZIGMucmVsbmFtZTsKKworLS0gQ2xl YW4gdXAKK0RST1AgVEFCTEUgdF9leHRkZXA7CitEUk9QIEVYVEVOU0lPTiBjaXRleHQ7CisKIFJF U0VUIHNlYXJjaF9wYXRoOwogCiAtLQpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5 cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCA5ZTZh MzlmNTYwOC4uNTBjM2NjNmY2NGMgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBl ZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0yMTk4 LDYgKzIxOTgsNyBAQCBQYXJ0aXRpb25EaXJlY3RvcnlFbnRyeQogUGFydGl0aW9uRGlzcGF0Y2gK IFBhcnRpdGlvbkVsZW0KIFBhcnRpdGlvbkhhc2hCb3VuZAorUGFydGl0aW9uSW5kZXhFeHREZXBF bnRyeQogUGFydGl0aW9uS2V5CiBQYXJ0aXRpb25MaXN0VmFsdWUKIFBhcnRpdGlvbk1hcAotLSAK Mi41Mi4wCgo= --3891c2f2b64f8ccb754c2cc07361c67922ab2a7064c7db9a2fb76bc371a9--