Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oefRf-0001U1-PV for pgsql-hackers@arkaria.postgresql.org; Sat, 01 Oct 2022 16:34:32 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1oefRe-0003Jx-GJ for pgsql-hackers@arkaria.postgresql.org; Sat, 01 Oct 2022 16:34:30 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oefRd-0003Jo-No for pgsql-hackers@lists.postgresql.org; Sat, 01 Oct 2022 16:34:30 +0000 Received: from mxout.index.de ([185.11.139.159]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oefRV-0000di-BP for pgsql-hackers@postgresql.org; Sat, 01 Oct 2022 16:34:28 +0000 Received: from remote.index.de (unknown [217.110.204.106]) by mxout.index.de (Postfix) with ESMTPS id 26BC5608FE; Sat, 1 Oct 2022 16:34:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=index.de; s=dkim; t=1664642058; bh=XuPU8MT+SFvoM4XNaVPYb48kLUNeqF7vir6GkplDCrQ=; h=From:To:CC:Subject:Date:References:In-Reply-To:From; b=o9TzsGaBgEG45/Sdi3sVcNFe8NNizOF1FrPLvdJwSdjxF2O7RGRHq8qjbwEopMnxl hWymOjh/0OTYivQcJt8L/ei9tSe+xRP86j3zHch+7VFK9uFSBLnrsIFYrphpAFacAZ XvtPdc++OuxWdDM5QGfDsLctbWW25s6Asrmt5fJ+aCReIbygc06wi8kzeYVjnR9Spp rstV11o3cYkHzPBICSHvqEQlMF8hSl7BcL/or8XulWiZvtaLms3Fj3XRkBzrwpjX68 jPttll5a9XAg18KhR1qpupOXcd7OxFji9u1e34TympJIHaS00LweBLzwZjoAD+57L8 W/H5yqZTJnR1A== Received: from acedia.index-gruppe.local (192.168.54.121) by invidia.index-gruppe.local (192.168.54.140) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.12; Sat, 1 Oct 2022 18:34:17 +0200 Received: from invidia.index-gruppe.local (192.168.54.140) by acedia.index-gruppe.local (192.168.54.121) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.12; Sat, 1 Oct 2022 18:34:17 +0200 Received: from invidia.index-gruppe.local ([fe80::adf7:ee83:6209:5ea2]) by invidia.index-gruppe.local ([fe80::adf7:ee83:6209:5ea2%15]) with mapi id 15.01.2507.012; Sat, 1 Oct 2022 18:34:16 +0200 From: Arne Roland To: Amit Langote , David Rowley CC: pgsql-hackers , Zhihong Yu , Alvaro Herrera , Julien Rouhaud Subject: Re: missing indexes in indexlist with partitioned tables Thread-Topic: missing indexes in indexlist with partitioned tables Thread-Index: AQHXsJoeXw6ojQG4NkOLdiX4KUBdD6vkTOpcgIAWJQCAA2SO7oAAbRh////16wCAADDYxYAAo/oAgABsDQCAAiIn7oAADRXl///25gCAAD4kxoAIQqeAgAnMh4CBIEebGIBFWqsAgAZz6YCAABQ2gIAAAgsAgAO9bJk= Date: Sat, 1 Oct 2022 16:34:16 +0000 Message-ID: <24e924b48a8a47649d6a92cb1c95eb4b@index.de> References: <20220118065750.v5zigpuisljc6jmk@jrouhaud> <202201181324.idvthmrhbtf5@alvherre.pgsql>, In-Reply-To: Accept-Language: en-US, de-DE Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-originating-ip: [10.255.1.33] Content-Type: multipart/mixed; boundary="_004_24e924b48a8a47649d6a92cb1c95eb4bindexde_" MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_004_24e924b48a8a47649d6a92cb1c95eb4bindexde_ Content-Type: multipart/alternative; boundary="_000_24e924b48a8a47649d6a92cb1c95eb4bindexde_" --_000_24e924b48a8a47649d6a92cb1c95eb4bindexde_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable On Tue, Sep 20, 2022 at 4:53 PM David Rowley wrote: > Arne sent me an off-list > message to say he's planning on working on the patch that uses the > existing field instead of the new one he originally added. Let's hold > off for that patch. I wouldn't say, I explicitly stated that. But I ended up doing something, t= hat resulted in the attached patch. :) For my own sanity I greped one last time for the usage of indexlist. Most of the (untouched) usages have comments that, they are only called for= baserels/plain tables. Namely all but the cluster of partitioned tables. I had to reread that sect= ion. There we are just traversing the tree and omitting partitioned tables. There is now a test section in join.sql for partitioned tables, that tests = very similar to the baserel case. That's more thorough, than what I originally went for. Further feedback would be appreciated! Regards Arne --_000_24e924b48a8a47649d6a92cb1c95eb4bindexde_ Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable

On Tue, Sep 20, 2022 at = 4:53 PM David Rowley <dgrowleyml@gmail.com> wrote:
> Arne sent me an off-list
> message to say he's planning on working on the patch that uses the
> existing field instead of the new one he originally added. Let's hold<= br> > off for that patch.

I wouldn't say, I explicitly stated that. But I ended up doing something= , that resulted in the attached patch. :)


For my own sanity I greped one last time for the usage of indexlist.

Most of the (untouched) usages have comments that, they are only called = for baserels/plain tables.

Namely all but the cluster of partitioned tables. I had to reread that s= ection. There we are just traversing the tree and omitting partitioned tabl= es.


There is now a test section in join.sql for partitioned tables, that tes= ts very similar to the 

baserel case. That's more thorough, than what I originally went for.

Further feedback would be appreciated!


Regards
Arne


--_000_24e924b48a8a47649d6a92cb1c95eb4bindexde_-- --_004_24e924b48a8a47649d6a92cb1c95eb4bindexde_ Content-Type: text/x-patch; name="v8_indexlist_contains_partitioned_indexes-0001-v8.patch" Content-Description: v8_indexlist_contains_partitioned_indexes-0001-v8.patch Content-Disposition: attachment; filename="v8_indexlist_contains_partitioned_indexes-0001-v8.patch"; size=26885; creation-date="Sat, 01 Oct 2022 16:20:09 GMT"; modification-date="Sat, 01 Oct 2022 16:20:09 GMT" Content-Transfer-Encoding: base64 RnJvbSAyOTAyNTJiYWI1ODM3YzFhNmY0MmJkNTNjZjc4OGM4Njk2ZDVkMGVjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBcm5lIFJvbGFuZCA8YXJuZS5yb2xhbmRAaW5kZXguZGU+CkRh dGU6IFNhdCwgMSBPY3QgMjAyMiAxODoxNDozNCArMDIwMApTdWJqZWN0OiBbUEFUQ0ggdjhfaW5k ZXhsaXN0X2NvbnRhaW5zX3BhcnRpdGlvbmVkX2luZGV4ZXNdIHY4CgotLS0KIHNyYy9iYWNrZW5k L29wdGltaXplci91dGlsL3BsYW5jYXQuYyAgICAgICAgIHwgMjI2ICsrKysrKysrKystLS0tLS0t LS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jICAgICAgICAgIHwgICA2ICst CiBzcmMvYmFja2VuZC91dGlscy9hZHQvc2VsZnVuY3MuYyAgICAgICAgICAgICB8ICAgNCArCiBz cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2luaGVyaXQub3V0ICAgICAgICB8ICAgNiArCiBzcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pvaW4ub3V0ICAgICAgICAgICB8IDEyNCArKysrKysrKyst CiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9qb2luLm91dCB8ICAzMCArLS0K IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2luaGVyaXQuc3FsICAgICAgICAgICAgIHwgICAyICsKIHNy Yy90ZXN0L3JlZ3Jlc3Mvc3FsL2pvaW4uc3FsICAgICAgICAgICAgICAgIHwgIDY5ICsrKysrLQog c3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX2pvaW4uc3FsICAgICAgfCAgIDYgKy0KIDkg ZmlsZXMgY2hhbmdlZCwgMzQ4IGluc2VydGlvbnMoKyksIDEyNSBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMgYi9zcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMKaW5kZXggNmQ1NzE4ZWU0Yy4uNzU0NWFlODYyZCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jCisrKyBiL3Ny Yy9iYWNrZW5kL29wdGltaXplci91dGlsL3BsYW5jYXQuYwpAQCAtMTA2LDEwICsxMDYsMTIgQEAg c3RhdGljIHZvaWQgc2V0X2Jhc2VyZWxfcGFydGl0aW9uX2NvbnN0cmFpbnQoUmVsYXRpb24gcmVs YXRpb24sCiAgKiBjYXNlcyB0aGVzZSBhcmUgbGVmdCBhcyB6ZXJvZXMsIGJ1dCBzb21ldGltZXMg d2UgbmVlZCB0byBjb21wdXRlIGF0dHIKICAqIHdpZHRocyBoZXJlLCBhbmQgd2UgbWF5IGFzIHdl bGwgY2FjaGUgdGhlIHJlc3VsdHMgZm9yIGNvc3RzaXplLmMuCiAgKgotICogSWYgaW5ocGFyZW50 IGlzIHRydWUsIGFsbCB3ZSBuZWVkIHRvIGRvIGlzIHNldCB1cCB0aGUgYXR0ciBhcnJheXM6Ci0g KiB0aGUgUmVsT3B0SW5mbyBhY3R1YWxseSByZXByZXNlbnRzIHRoZSBhcHBlbmRyZWwgZm9ybWVk IGJ5IGFuIGluaGVyaXRhbmNlCi0gKiB0cmVlLCBhbmQgc28gdGhlIHBhcmVudCByZWwncyBwaHlz aWNhbCBzaXplIGFuZCBpbmRleCBpbmZvcm1hdGlvbiBpc24ndAotICogaW1wb3J0YW50IGZvciBp dC4KKyAqIElmIGluaHBhcmVudCBpcyB0cnVlLCB3ZSBkb24ndCBjYXJlIGFib3V0IHBoeXNpY2Fs IHNpemUsIGluZGV4IGFtCisgKiBhbmQgZXN0aW1hdGVzLgorICogV2Ugc3RpbGwgbmVlZCBpbmRl eCB1bmlxdWVuZXNzIGZvciBqb2luIHJlbW92YWwuCisgKiBXaGVuIGl0IGNvbWVzIHRvIHRoZSBw YXRoLCB0aGUgUmVsT3B0SW5mbyBhY3R1YWxseSByZXByZXNlbnRzCisgKiB0aGUgYXBwZW5kcmVs IGZvcm1lZCBieSBhbiBpbmhlcml0YW5jZSB0cmVlLCBhbmQgc28gdGhlIHBhcmVudAorICogcmVs J3MgcGh5c2ljYWwgc2l6ZSBpc24ndCBpbXBvcnRhbnQgZm9yIGl0LgogICovCiB2b2lkCiBnZXRf cmVsYXRpb25faW5mbyhQbGFubmVySW5mbyAqcm9vdCwgT2lkIHJlbGF0aW9uT2JqZWN0SWQsIGJv b2wgaW5ocGFyZW50LApAQCAtMTU3LDEwICsxNTksMTIgQEAgZ2V0X3JlbGF0aW9uX2luZm8oUGxh bm5lckluZm8gKnJvb3QsIE9pZCByZWxhdGlvbk9iamVjdElkLCBib29sIGluaHBhcmVudCwKIAog CS8qCiAJICogTWFrZSBsaXN0IG9mIGluZGV4ZXMuICBJZ25vcmUgaW5kZXhlcyBvbiBzeXN0ZW0g Y2F0YWxvZ3MgaWYgdG9sZCB0by4KLQkgKiBEb24ndCBib3RoZXIgd2l0aCBpbmRleGVzIGZvciBh biBpbmhlcml0YW5jZSBwYXJlbnQsIGVpdGhlci4KKwkgKiBEb24ndCBib3RoZXIgd2l0aCBpbmRl eGVzIGZyb20gdHJhZGl0aW9uYWwgaW5oZXJpdGFuY2UgcGFyZW50cy4KKwkgKiBXZSBjYXJlIGFi b3V0IHBhcnRpdGlvbmVkIGluZGV4ZXMgZm9yIGpvaW4gcHJ1bmluZywKKwkgKiBldmVuIGlmIHdl IGRvbid0IGhhdmUgYW55IGFtIGZvciB0aGVtLgogCSAqLwotCWlmIChpbmhwYXJlbnQgfHwKLQkJ KElnbm9yZVN5c3RlbUluZGV4ZXMgJiYgSXNTeXN0ZW1SZWxhdGlvbihyZWxhdGlvbikpKQorCWlm ICgoaW5ocGFyZW50ICYmIHJlbGF0aW9uLT5yZF9yZWwtPnJlbGtpbmQgIT0gUkVMS0lORF9QQVJU SVRJT05FRF9UQUJMRSkKKwkJfHwgKElnbm9yZVN5c3RlbUluZGV4ZXMgJiYgSXNTeXN0ZW1SZWxh dGlvbihyZWxhdGlvbikpKQogCQloYXNpbmRleCA9IGZhbHNlOwogCWVsc2UKIAkJaGFzaW5kZXgg PSByZWxhdGlvbi0+cmRfcmVsLT5yZWxoYXNpbmRleDsKQEAgLTE5MSw4ICsxOTUsOCBAQCBnZXRf cmVsYXRpb25faW5mbyhQbGFubmVySW5mbyAqcm9vdCwgT2lkIHJlbGF0aW9uT2JqZWN0SWQsIGJv b2wgaW5ocGFyZW50LAogCQkJSW5kZXhBbVJvdXRpbmUgKmFtcm91dGluZTsKIAkJCUluZGV4T3B0 SW5mbyAqaW5mbzsKIAkJCWludAkJCW5jb2x1bW5zLAotCQkJCQkJbmtleWNvbHVtbnM7Ci0JCQlp bnQJCQlpOworCQkJCQkJbmtleWNvbHVtbnMsCisJCQkgICAgICAgICAgICBpOwogCiAJCQkvKgog CQkJICogRXh0cmFjdCBpbmZvIGZyb20gdGhlIHJlbGF0aW9uIGRlc2NyaXB0b3IgZm9yIHRoZSBp bmRleC4KQEAgLTIxMywxNiArMjE3LDYgQEAgZ2V0X3JlbGF0aW9uX2luZm8oUGxhbm5lckluZm8g KnJvb3QsIE9pZCByZWxhdGlvbk9iamVjdElkLCBib29sIGluaHBhcmVudCwKIAkJCQljb250aW51 ZTsKIAkJCX0KIAotCQkJLyoKLQkJCSAqIElnbm9yZSBwYXJ0aXRpb25lZCBpbmRleGVzLCBzaW5j ZSB0aGV5IGFyZSBub3QgdXNhYmxlIGZvcgotCQkJICogcXVlcmllcy4KLQkJCSAqLwotCQkJaWYg KGluZGV4UmVsYXRpb24tPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX0lO REVYKQotCQkJewotCQkJCWluZGV4X2Nsb3NlKGluZGV4UmVsYXRpb24sIE5vTG9jayk7Ci0JCQkJ Y29udGludWU7Ci0JCQl9Ci0KIAkJCS8qCiAJCQkgKiBJZiB0aGUgaW5kZXggaXMgdmFsaWQsIGJ1 dCBjYW5ub3QgeWV0IGJlIHVzZWQsIGlnbm9yZSBpdDsgYnV0CiAJCQkgKiBtYXJrIHRoZSBwbGFu IHdlIGFyZSBnZW5lcmF0aW5nIGFzIHRyYW5zaWVudC4gU2VlCkBAIC0yNjcsMTA4ICsyNjEsMTMz IEBAIGdldF9yZWxhdGlvbl9pbmZvKFBsYW5uZXJJbmZvICpyb290LCBPaWQgcmVsYXRpb25PYmpl Y3RJZCwgYm9vbCBpbmhwYXJlbnQsCiAKIAkJCWluZm8tPnJlbGFtID0gaW5kZXhSZWxhdGlvbi0+ cmRfcmVsLT5yZWxhbTsKIAotCQkJLyogV2UgY29weSBqdXN0IHRoZSBmaWVsZHMgd2UgbmVlZCwg bm90IGFsbCBvZiByZF9pbmRhbSAqLwotCQkJYW1yb3V0aW5lID0gaW5kZXhSZWxhdGlvbi0+cmRf aW5kYW07Ci0JCQlpbmZvLT5hbWNhbm9yZGVyYnlvcCA9IGFtcm91dGluZS0+YW1jYW5vcmRlcmJ5 b3A7Ci0JCQlpbmZvLT5hbW9wdGlvbmFsa2V5ID0gYW1yb3V0aW5lLT5hbW9wdGlvbmFsa2V5Owot CQkJaW5mby0+YW1zZWFyY2hhcnJheSA9IGFtcm91dGluZS0+YW1zZWFyY2hhcnJheTsKLQkJCWlu Zm8tPmFtc2VhcmNobnVsbHMgPSBhbXJvdXRpbmUtPmFtc2VhcmNobnVsbHM7Ci0JCQlpbmZvLT5h bWNhbnBhcmFsbGVsID0gYW1yb3V0aW5lLT5hbWNhbnBhcmFsbGVsOwotCQkJaW5mby0+YW1oYXNn ZXR0dXBsZSA9IChhbXJvdXRpbmUtPmFtZ2V0dHVwbGUgIT0gTlVMTCk7Ci0JCQlpbmZvLT5hbWhh c2dldGJpdG1hcCA9IGFtcm91dGluZS0+YW1nZXRiaXRtYXAgIT0gTlVMTCAmJgotCQkJCXJlbGF0 aW9uLT5yZF90YWJsZWFtLT5zY2FuX2JpdG1hcF9uZXh0X2Jsb2NrICE9IE5VTEw7Ci0JCQlpbmZv LT5hbWNhbm1hcmtwb3MgPSAoYW1yb3V0aW5lLT5hbW1hcmtwb3MgIT0gTlVMTCAmJgotCQkJCQkJ CQkgIGFtcm91dGluZS0+YW1yZXN0cnBvcyAhPSBOVUxMKTsKLQkJCWluZm8tPmFtY29zdGVzdGlt YXRlID0gYW1yb3V0aW5lLT5hbWNvc3Rlc3RpbWF0ZTsKLQkJCUFzc2VydChpbmZvLT5hbWNvc3Rl c3RpbWF0ZSAhPSBOVUxMKTsKLQotCQkJLyogRmV0Y2ggaW5kZXggb3BjbGFzcyBvcHRpb25zICov Ci0JCQlpbmZvLT5vcGNsYXNzb3B0aW9ucyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRPcHRpb25zKGlu ZGV4UmVsYXRpb24sIHRydWUpOwotCiAJCQkvKgotCQkJICogRmV0Y2ggdGhlIG9yZGVyaW5nIGlu Zm9ybWF0aW9uIGZvciB0aGUgaW5kZXgsIGlmIGFueS4KKwkJCSAqIFdlIGRvbid0IGhhdmUgYW0g Zm9yIHBhcnRpdGlvbmVkIGluZGV4ZXMsIHRoZXJlZm9yZSB3ZSBza2lwCisJCQkgKiBnYXRoZXJp bmcgdGhlIGluZm8uIFRoaXMgaXMgb2ssIGJlY2F1c2Ugd2UgZG9uJ3QgdXNlCisJCQkgKiBwYXJ0 aXRpb25lZCBpbmRleGVzIGluIHBhdGhzLiBXZSByZXNvbHZlIGluaGVyaXRhbmNlIGJlZm9yZQor CQkJICogZ2VuZXJhdGluZyBwYXRocy4KIAkJCSAqLwotCQkJaWYgKGluZm8tPnJlbGFtID09IEJU UkVFX0FNX09JRCkKKwkJCWlmIChpbmRleFJlbGF0aW9uLT5yZF9yZWwtPnJlbGtpbmQgIT0gUkVM S0lORF9QQVJUSVRJT05FRF9JTkRFWCkKIAkJCXsKKwkJCQkvKiBXZSBjb3B5IGp1c3QgdGhlIGZp ZWxkcyB3ZSBuZWVkLCBub3QgYWxsIG9mIHJkX2luZGFtICovCisJCQkJYW1yb3V0aW5lID0gaW5k ZXhSZWxhdGlvbi0+cmRfaW5kYW07CisJCQkJaW5mby0+YW1jYW5vcmRlcmJ5b3AgPSBhbXJvdXRp bmUtPmFtY2Fub3JkZXJieW9wOworCQkJCWluZm8tPmFtb3B0aW9uYWxrZXkgPSBhbXJvdXRpbmUt PmFtb3B0aW9uYWxrZXk7CisJCQkJaW5mby0+YW1zZWFyY2hhcnJheSA9IGFtcm91dGluZS0+YW1z ZWFyY2hhcnJheTsKKwkJCQlpbmZvLT5hbXNlYXJjaG51bGxzID0gYW1yb3V0aW5lLT5hbXNlYXJj aG51bGxzOworCQkJCWluZm8tPmFtY2FucGFyYWxsZWwgPSBhbXJvdXRpbmUtPmFtY2FucGFyYWxs ZWw7CisJCQkJaW5mby0+YW1oYXNnZXR0dXBsZSA9IChhbXJvdXRpbmUtPmFtZ2V0dHVwbGUgIT0g TlVMTCk7CisJCQkJaW5mby0+YW1oYXNnZXRiaXRtYXAgPSBhbXJvdXRpbmUtPmFtZ2V0Yml0bWFw ICE9IE5VTEwgJiYKKwkJCQkJcmVsYXRpb24tPnJkX3RhYmxlYW0tPnNjYW5fYml0bWFwX25leHRf YmxvY2sgIT0gTlVMTDsKKwkJCQlpbmZvLT5hbWNhbm1hcmtwb3MgPSAoYW1yb3V0aW5lLT5hbW1h cmtwb3MgIT0gTlVMTCAmJgorCQkJCQlhbXJvdXRpbmUtPmFtcmVzdHJwb3MgIT0gTlVMTCk7CisJ CQkJaW5mby0+YW1jb3N0ZXN0aW1hdGUgPSBhbXJvdXRpbmUtPmFtY29zdGVzdGltYXRlOworCQkJ CUFzc2VydChpbmZvLT5hbWNvc3Rlc3RpbWF0ZSAhPSBOVUxMKTsKKworCQkJCS8qIEZldGNoIGlu ZGV4IG9wY2xhc3Mgb3B0aW9ucyAqLworCQkJCWluZm8tPm9wY2xhc3NvcHRpb25zID0gUmVsYXRp b25HZXRJbmRleEF0dE9wdGlvbnMoaW5kZXhSZWxhdGlvbiwgdHJ1ZSk7CisKIAkJCQkvKgotCQkJ CSAqIElmIGl0J3MgYSBidHJlZSBpbmRleCwgd2UgY2FuIHVzZSBpdHMgb3BmYW1pbHkgT0lEcwot CQkJCSAqIGRpcmVjdGx5IGFzIHRoZSBzb3J0IG9yZGVyaW5nIG9wZmFtaWx5IE9JRHMuCisJCQkJ ICogRmV0Y2ggdGhlIG9yZGVyaW5nIGluZm9ybWF0aW9uIGZvciB0aGUgaW5kZXgsIGlmIGFueS4K IAkJCQkgKi8KLQkJCQlBc3NlcnQoYW1yb3V0aW5lLT5hbWNhbm9yZGVyKTsKLQotCQkJCWluZm8t PnNvcnRvcGZhbWlseSA9IGluZm8tPm9wZmFtaWx5OwotCQkJCWluZm8tPnJldmVyc2Vfc29ydCA9 IChib29sICopIHBhbGxvYyhzaXplb2YoYm9vbCkgKiBua2V5Y29sdW1ucyk7Ci0JCQkJaW5mby0+ bnVsbHNfZmlyc3QgPSAoYm9vbCAqKSBwYWxsb2Moc2l6ZW9mKGJvb2wpICogbmtleWNvbHVtbnMp OwotCi0JCQkJZm9yIChpID0gMDsgaSA8IG5rZXljb2x1bW5zOyBpKyspCisJCQkJaWYgKGluZm8t PnJlbGFtID09IEJUUkVFX0FNX09JRCkKIAkJCQl7Ci0JCQkJCWludDE2CQlvcHQgPSBpbmRleFJl bGF0aW9uLT5yZF9pbmRvcHRpb25baV07CisJCQkJCS8qCisJCQkJCSAqIElmIGl0J3MgYSBidHJl ZSBpbmRleCwgd2UgY2FuIHVzZSBpdHMgb3BmYW1pbHkgT0lEcworCQkJCQkgKiBkaXJlY3RseSBh cyB0aGUgc29ydCBvcmRlcmluZyBvcGZhbWlseSBPSURzLgorCQkJCQkgKi8KKwkJCQkJQXNzZXJ0 KGFtcm91dGluZS0+YW1jYW5vcmRlcik7CiAKLQkJCQkJaW5mby0+cmV2ZXJzZV9zb3J0W2ldID0g KG9wdCAmIElORE9QVElPTl9ERVNDKSAhPSAwOwotCQkJCQlpbmZvLT5udWxsc19maXJzdFtpXSA9 IChvcHQgJiBJTkRPUFRJT05fTlVMTFNfRklSU1QpICE9IDA7Ci0JCQkJfQotCQkJfQotCQkJZWxz ZSBpZiAoYW1yb3V0aW5lLT5hbWNhbm9yZGVyKQotCQkJewotCQkJCS8qCi0JCQkJICogT3RoZXJ3 aXNlLCBpZGVudGlmeSB0aGUgY29ycmVzcG9uZGluZyBidHJlZSBvcGZhbWlsaWVzIGJ5Ci0JCQkJ ICogdHJ5aW5nIHRvIG1hcCB0aGlzIGluZGV4J3MgIjwiIG9wZXJhdG9ycyBpbnRvIGJ0cmVlLiAg U2luY2UKLQkJCQkgKiAiPCIgdW5pcXVlbHkgZGVmaW5lcyB0aGUgYmVoYXZpb3Igb2YgYSBzb3J0 IG9yZGVyLCB0aGlzIGlzCi0JCQkJICogYSBzdWZmaWNpZW50IHRlc3QuCi0JCQkJICoKLQkJCQkg KiBYWFggVGhpcyBtZXRob2QgaXMgcmF0aGVyIHNsb3cgYW5kIGFsc28gcmVxdWlyZXMgdGhlCi0J CQkJICogdW5kZXNpcmFibGUgYXNzdW1wdGlvbiB0aGF0IHRoZSBvdGhlciBpbmRleCBBTSBudW1i ZXJzIGl0cwotCQkJCSAqIHN0cmF0ZWdpZXMgdGhlIHNhbWUgYXMgYnRyZWUuICBJdCdkIGJlIGJl dHRlciB0byBoYXZlIGEgd2F5Ci0JCQkJICogdG8gZXhwbGljaXRseSBkZWNsYXJlIHRoZSBjb3Jy ZXNwb25kaW5nIGJ0cmVlIG9wZmFtaWx5IGZvcgotCQkJCSAqIGVhY2ggb3BmYW1pbHkgb2YgdGhl IG90aGVyIGluZGV4IHR5cGUuICBCdXQgZ2l2ZW4gdGhlIGxhY2sKLQkJCQkgKiBvZiBjdXJyZW50 IG9yIGZvcmVzZWVhYmxlIGFtY2Fub3JkZXIgaW5kZXggdHlwZXMsIGl0J3Mgbm90Ci0JCQkJICog d29ydGggZXhwZW5kaW5nIG1vcmUgZWZmb3J0IG9uIG5vdy4KLQkJCQkgKi8KLQkJCQlpbmZvLT5z b3J0b3BmYW1pbHkgPSAoT2lkICopIHBhbGxvYyhzaXplb2YoT2lkKSAqIG5rZXljb2x1bW5zKTsK LQkJCQlpbmZvLT5yZXZlcnNlX3NvcnQgPSAoYm9vbCAqKSBwYWxsb2Moc2l6ZW9mKGJvb2wpICog bmtleWNvbHVtbnMpOwotCQkJCWluZm8tPm51bGxzX2ZpcnN0ID0gKGJvb2wgKikgcGFsbG9jKHNp emVvZihib29sKSAqIG5rZXljb2x1bW5zKTsKKwkJCQkJaW5mby0+c29ydG9wZmFtaWx5ID0gaW5m by0+b3BmYW1pbHk7CisJCQkJCWluZm8tPnJldmVyc2Vfc29ydCA9IChib29sICopcGFsbG9jKHNp emVvZihib29sKSAqIG5rZXljb2x1bW5zKTsKKwkJCQkJaW5mby0+bnVsbHNfZmlyc3QgPSAoYm9v bCAqKXBhbGxvYyhzaXplb2YoYm9vbCkgKiBua2V5Y29sdW1ucyk7CiAKLQkJCQlmb3IgKGkgPSAw OyBpIDwgbmtleWNvbHVtbnM7IGkrKykKLQkJCQl7Ci0JCQkJCWludDE2CQlvcHQgPSBpbmRleFJl bGF0aW9uLT5yZF9pbmRvcHRpb25baV07Ci0JCQkJCU9pZAkJCWx0b3ByOwotCQkJCQlPaWQJCQli dG9wZmFtaWx5OwotCQkJCQlPaWQJCQlidG9wY2ludHlwZTsKLQkJCQkJaW50MTYJCWJ0c3RyYXRl Z3k7Ci0KLQkJCQkJaW5mby0+cmV2ZXJzZV9zb3J0W2ldID0gKG9wdCAmIElORE9QVElPTl9ERVND KSAhPSAwOwotCQkJCQlpbmZvLT5udWxsc19maXJzdFtpXSA9IChvcHQgJiBJTkRPUFRJT05fTlVM TFNfRklSU1QpICE9IDA7Ci0KLQkJCQkJbHRvcHIgPSBnZXRfb3BmYW1pbHlfbWVtYmVyKGluZm8t Pm9wZmFtaWx5W2ldLAotCQkJCQkJCQkJCQkJaW5mby0+b3BjaW50eXBlW2ldLAotCQkJCQkJCQkJ CQkJaW5mby0+b3BjaW50eXBlW2ldLAotCQkJCQkJCQkJCQkJQlRMZXNzU3RyYXRlZ3lOdW1iZXIp OwotCQkJCQlpZiAoT2lkSXNWYWxpZChsdG9wcikgJiYKLQkJCQkJCWdldF9vcmRlcmluZ19vcF9w cm9wZXJ0aWVzKGx0b3ByLAotCQkJCQkJCQkJCQkJICAgJmJ0b3BmYW1pbHksCi0JCQkJCQkJCQkJ CQkgICAmYnRvcGNpbnR5cGUsCi0JCQkJCQkJCQkJCQkgICAmYnRzdHJhdGVneSkgJiYKLQkJCQkJ CWJ0b3BjaW50eXBlID09IGluZm8tPm9wY2ludHlwZVtpXSAmJgotCQkJCQkJYnRzdHJhdGVneSA9 PSBCVExlc3NTdHJhdGVneU51bWJlcikKKwkJCQkJZm9yIChpID0gMDsgaSA8IG5rZXljb2x1bW5z OyBpKyspCiAJCQkJCXsKLQkJCQkJCS8qIFN1Y2Nlc3NmdWwgbWFwcGluZyAqLwotCQkJCQkJaW5m by0+c29ydG9wZmFtaWx5W2ldID0gYnRvcGZhbWlseTsKKwkJCQkJCWludDE2CQlvcHQgPSBpbmRl eFJlbGF0aW9uLT5yZF9pbmRvcHRpb25baV07CisKKwkJCQkJCWluZm8tPnJldmVyc2Vfc29ydFtp XSA9IChvcHQgJiBJTkRPUFRJT05fREVTQykgIT0gMDsKKwkJCQkJCWluZm8tPm51bGxzX2ZpcnN0 W2ldID0gKG9wdCAmIElORE9QVElPTl9OVUxMU19GSVJTVCkgIT0gMDsKIAkJCQkJfQotCQkJCQll bHNlCisJCQkJfQorCQkJCWVsc2UgaWYgKGFtcm91dGluZS0+YW1jYW5vcmRlcikKKwkJCQl7CisJ CQkJCS8qCisJCQkJCSAqIE90aGVyd2lzZSwgaWRlbnRpZnkgdGhlIGNvcnJlc3BvbmRpbmcgYnRy ZWUgb3BmYW1pbGllcyBieQorCQkJCQkgKiB0cnlpbmcgdG8gbWFwIHRoaXMgaW5kZXgncyAiPCIg b3BlcmF0b3JzIGludG8gYnRyZWUuICBTaW5jZQorCQkJCQkgKiAiPCIgdW5pcXVlbHkgZGVmaW5l cyB0aGUgYmVoYXZpb3Igb2YgYSBzb3J0IG9yZGVyLCB0aGlzIGlzCisJCQkJCSAqIGEgc3VmZmlj aWVudCB0ZXN0LgorCQkJCQkgKgorCQkJCQkgKiBYWFggVGhpcyBtZXRob2QgaXMgcmF0aGVyIHNs b3cgYW5kIGFsc28gcmVxdWlyZXMgdGhlCisJCQkJCSAqIHVuZGVzaXJhYmxlIGFzc3VtcHRpb24g dGhhdCB0aGUgb3RoZXIgaW5kZXggQU0gbnVtYmVycyBpdHMKKwkJCQkJICogc3RyYXRlZ2llcyB0 aGUgc2FtZSBhcyBidHJlZS4gIEl0J2QgYmUgYmV0dGVyIHRvIGhhdmUgYSB3YXkKKwkJCQkJICog dG8gZXhwbGljaXRseSBkZWNsYXJlIHRoZSBjb3JyZXNwb25kaW5nIGJ0cmVlIG9wZmFtaWx5IGZv cgorCQkJCQkgKiBlYWNoIG9wZmFtaWx5IG9mIHRoZSBvdGhlciBpbmRleCB0eXBlLiAgQnV0IGdp dmVuIHRoZSBsYWNrCisJCQkJCSAqIG9mIGN1cnJlbnQgb3IgZm9yZXNlZWFibGUgYW1jYW5vcmRl ciBpbmRleCB0eXBlcywgaXQncyBub3QKKwkJCQkJICogd29ydGggZXhwZW5kaW5nIG1vcmUgZWZm b3J0IG9uIG5vdy4KKwkJCQkJICovCisJCQkJCWluZm8tPnNvcnRvcGZhbWlseSA9IChPaWQgKilw YWxsb2Moc2l6ZW9mKE9pZCkgKiBua2V5Y29sdW1ucyk7CisJCQkJCWluZm8tPnJldmVyc2Vfc29y dCA9IChib29sICopcGFsbG9jKHNpemVvZihib29sKSAqIG5rZXljb2x1bW5zKTsKKwkJCQkJaW5m by0+bnVsbHNfZmlyc3QgPSAoYm9vbCAqKXBhbGxvYyhzaXplb2YoYm9vbCkgKiBua2V5Y29sdW1u cyk7CisKKwkJCQkJZm9yIChpID0gMDsgaSA8IG5rZXljb2x1bW5zOyBpKyspCiAJCQkJCXsKLQkJ CQkJCS8qIEZhaWwgLi4uIHF1aWV0bHkgdHJlYXQgaW5kZXggYXMgdW5vcmRlcmVkICovCi0JCQkJ CQlpbmZvLT5zb3J0b3BmYW1pbHkgPSBOVUxMOwotCQkJCQkJaW5mby0+cmV2ZXJzZV9zb3J0ID0g TlVMTDsKLQkJCQkJCWluZm8tPm51bGxzX2ZpcnN0ID0gTlVMTDsKLQkJCQkJCWJyZWFrOworCQkJ CQkJaW50MTYJCW9wdCA9IGluZGV4UmVsYXRpb24tPnJkX2luZG9wdGlvbltpXTsKKwkJCQkJCU9p ZAkJCWx0b3ByOworCQkJCQkJT2lkCQkJYnRvcGZhbWlseTsKKwkJCQkJCU9pZAkJCWJ0b3BjaW50 eXBlOworCQkJCQkJaW50MTYJCWJ0c3RyYXRlZ3k7CisKKwkJCQkJCWluZm8tPnJldmVyc2Vfc29y dFtpXSA9IChvcHQgJiBJTkRPUFRJT05fREVTQykgIT0gMDsKKwkJCQkJCWluZm8tPm51bGxzX2Zp cnN0W2ldID0gKG9wdCAmIElORE9QVElPTl9OVUxMU19GSVJTVCkgIT0gMDsKKworCQkJCQkJbHRv cHIgPSBnZXRfb3BmYW1pbHlfbWVtYmVyKGluZm8tPm9wZmFtaWx5W2ldLAorCQkJCQkJCWluZm8t Pm9wY2ludHlwZVtpXSwKKwkJCQkJCQlpbmZvLT5vcGNpbnR5cGVbaV0sCisJCQkJCQkJQlRMZXNz U3RyYXRlZ3lOdW1iZXIpOworCQkJCQkJaWYgKE9pZElzVmFsaWQobHRvcHIpICYmCisJCQkJCQkJ Z2V0X29yZGVyaW5nX29wX3Byb3BlcnRpZXMobHRvcHIsCisJCQkJCQkJCSZidG9wZmFtaWx5LAor CQkJCQkJCQkmYnRvcGNpbnR5cGUsCisJCQkJCQkJCSZidHN0cmF0ZWd5KSAmJgorCQkJCQkJCWJ0 b3BjaW50eXBlID09IGluZm8tPm9wY2ludHlwZVtpXSAmJgorCQkJCQkJCWJ0c3RyYXRlZ3kgPT0g QlRMZXNzU3RyYXRlZ3lOdW1iZXIpCisJCQkJCQl7CisJCQkJCQkJLyogU3VjY2Vzc2Z1bCBtYXBw aW5nICovCisJCQkJCQkJaW5mby0+c29ydG9wZmFtaWx5W2ldID0gYnRvcGZhbWlseTsKKwkJCQkJ CX0KKwkJCQkJCWVsc2UKKwkJCQkJCXsKKwkJCQkJCQkvKiBGYWlsIC4uLiBxdWlldGx5IHRyZWF0 IGluZGV4IGFzIHVub3JkZXJlZCAqLworCQkJCQkJCWluZm8tPnNvcnRvcGZhbWlseSA9IE5VTEw7 CisJCQkJCQkJaW5mby0+cmV2ZXJzZV9zb3J0ID0gTlVMTDsKKwkJCQkJCQlpbmZvLT5udWxsc19m aXJzdCA9IE5VTEw7CisJCQkJCQkJYnJlYWs7CisJCQkJCQl9CiAJCQkJCX0KIAkJCQl9CisJCQkJ ZWxzZQorCQkJCXsKKwkJCQkJaW5mby0+c29ydG9wZmFtaWx5ID0gTlVMTDsKKwkJCQkJaW5mby0+ cmV2ZXJzZV9zb3J0ID0gTlVMTDsKKwkJCQkJaW5mby0+bnVsbHNfZmlyc3QgPSBOVUxMOworCQkJ CX0KIAkJCX0KIAkJCWVsc2UKIAkJCXsKIAkJCQlpbmZvLT5zb3J0b3BmYW1pbHkgPSBOVUxMOwog CQkJCWluZm8tPnJldmVyc2Vfc29ydCA9IE5VTEw7CiAJCQkJaW5mby0+bnVsbHNfZmlyc3QgPSBO VUxMOworCisJCQkJaW5mby0+YW1jYW5vcmRlcmJ5b3AgPSBmYWxzZTsKKwkJCQlpbmZvLT5hbW9w dGlvbmFsa2V5ID0gZmFsc2U7CisJCQkJaW5mby0+YW1zZWFyY2hhcnJheSA9IGZhbHNlOworCQkJ CWluZm8tPmFtc2VhcmNobnVsbHMgPSBmYWxzZTsKKwkJCQlpbmZvLT5hbWNhbnBhcmFsbGVsID0g ZmFsc2U7CisJCQkJaW5mby0+YW1oYXNnZXR0dXBsZSA9IGZhbHNlOworCQkJCWluZm8tPmFtaGFz Z2V0Yml0bWFwID0gZmFsc2U7CisJCQkJaW5mby0+YW1jYW5tYXJrcG9zID0gZmFsc2U7CisJCQkJ aW5mby0+YW1jb3N0ZXN0aW1hdGUgPSBOVUxMOwogCQkJfQogCiAJCQkvKgpAQCAtNDE1LDcgKzQz NCw4IEBAIGdldF9yZWxhdGlvbl9pbmZvKFBsYW5uZXJJbmZvICpyb290LCBPaWQgcmVsYXRpb25P YmplY3RJZCwgYm9vbCBpbmhwYXJlbnQsCiAJCQkJCWluZm8tPnR1cGxlcyA9IHJlbC0+dHVwbGVz OwogCQkJfQogCi0JCQlpZiAoaW5mby0+cmVsYW0gPT0gQlRSRUVfQU1fT0lEKQorCQkJaWYgKGlu Zm8tPnJlbGFtID09IEJUUkVFX0FNX09JRCAmJgorCQkJCWluZGV4UmVsYXRpb24tPnJkX3JlbC0+ cmVsa2luZCAhPSBSRUxLSU5EX1BBUlRJVElPTkVEX0lOREVYKQogCQkJewogCQkJCS8qIEZvciBi dHJlZXMsIGdldCB0cmVlIGhlaWdodCB3aGlsZSB3ZSBoYXZlIHRoZSBpbmRleCBvcGVuICovCiAJ CQkJaW5mby0+dHJlZV9oZWlnaHQgPSBfYnRfZ2V0cm9vdGhlaWdodChpbmRleFJlbGF0aW9uKTsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMKaW5kZXggNWIwZTUzMWY5Ny4uOTFkZjY1NDE0 YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMKKysrIGIv c3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMKQEAgLTI5NzEsOSArMjk3MSwxMSBA QCBSZWxhdGlvbkdldE51bWJlck9mQmxvY2tzSW5Gb3JrKFJlbGF0aW9uIHJlbGF0aW9uLCBGb3Jr TnVtYmVyIGZvcmtOdW0pCiAJCXJldHVybiBzbWdybmJsb2NrcyhSZWxhdGlvbkdldFNtZ3IocmVs YXRpb24pLCBmb3JrTnVtKTsKIAl9CiAJZWxzZQotCQlBc3NlcnQoZmFsc2UpOworCXsKKwkJQXNz ZXJ0KHJlbGF0aW9uLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9JTkRF WCk7CisJfQogCi0JcmV0dXJuIDA7CQkJCQkvKiBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCisJcmV0 dXJuIDA7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvc2VsZnVu Y3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9zZWxmdW5jcy5jCmluZGV4IDE4MDgzODgzOTcu LmYxYTk3MTMyYmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9zZWxmdW5jcy5j CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9zZWxmdW5jcy5jCkBAIC01OTk1LDYgKzU5OTUs MTAgQEAgZ2V0X2FjdHVhbF92YXJpYWJsZV9yYW5nZShQbGFubmVySW5mbyAqcm9vdCwgVmFyaWFi bGVTdGF0RGF0YSAqdmFyZGF0YSwKIAlydGUgPSByb290LT5zaW1wbGVfcnRlX2FycmF5W3JlbC0+ cmVsaWRdOwogCUFzc2VydChydGUtPnJ0ZWtpbmQgPT0gUlRFX1JFTEFUSU9OKTsKIAorCS8qIGln bm9yZSBwYXJ0aXRpb25lZCB0YWJsZXMuICBBbnkgaW5kZXhlcyBoZXJlIGFyZSBub3QgcmVhbCBp bmRleGVzICovCisJaWYgKHJ0ZS0+cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxF KQorCQlyZXR1cm4gZmFsc2U7CisKIAkvKiBTZWFyY2ggdGhyb3VnaCB0aGUgaW5kZXhlcyB0byBz ZWUgaWYgYW55IG1hdGNoIG91ciBwcm9ibGVtICovCiAJZm9yZWFjaChsYywgcmVsLT5pbmRleGxp c3QpCiAJewpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9pbmhlcml0Lm91 dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaW5oZXJpdC5vdXQKaW5kZXggMmQ0OWU3NjVk ZS4uYzE2MTk3NTRhNyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9pbmhl cml0Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2luaGVyaXQub3V0CkBAIC03 MjEsNiArNzIxLDEyIEBAIHNlbGVjdCAqIGZyb20gZDsKICAzMiB8IG9uZSB8IHR3byB8IHRocmVl CiAoMSByb3cpCiAKK0RST1AgVEFCTEUgYSBDQVNDQURFOworTk9USUNFOiAgZHJvcCBjYXNjYWRl cyB0byA0IG90aGVyIG9iamVjdHMKK0RFVEFJTDogIGRyb3AgY2FzY2FkZXMgdG8gdGFibGUgYgor ZHJvcCBjYXNjYWRlcyB0byB0YWJsZSBjCitkcm9wIGNhc2NhZGVzIHRvIHRhYmxlIGQKK2Ryb3Ag Y2FzY2FkZXMgdG8gdGFibGUgegogLS0gVGhlIGFib3ZlIHZlcmlmaWVkIHRoYXQgd2UgY2FuIGNo YW5nZSB0aGUgdHlwZSBvZiBhIG11bHRpcGx5LWluaGVyaXRlZAogLS0gY29sdW1uOyBidXQgd2Ug c2hvdWxkIHJlamVjdCB0aGF0IGlmIGFueSBkZWZpbml0aW9uIHdhcyBpbmhlcml0ZWQgZnJvbQog LS0gYW4gdW5yZWxhdGVkIHBhcmVudC4KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvam9pbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pvaW4ub3V0CmluZGV4 IDJlZDJlNTQyYTQuLmE1ZjFhYTU3N2IgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvam9pbi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qb2luLm91dApA QCAtNDU4OCw3ICs0NTg4LDggQEAgc2VsZWN0IGEucTIsIGIucTEKIHJlc2V0IGVuYWJsZV9oYXNo am9pbjsKIHJlc2V0IGVuYWJsZV9uZXN0bG9vcDsKIC0tCi0tLSB0ZXN0IGpvaW4gcmVtb3ZhbAor LS0gdGVzdCBqb2luIHJlbW92YWwgZm9yIHBsYWluIHRhYmxlcworLS0gd2UgaGF2ZSBhbG1vc3Qg dGhlIHNtYXJlIHRlc3RzIGZvciBwYXJ0aXRpb25lZCB0YWJsZXMgYmVsb3cKIC0tCiBiZWdpbjsK IENSRUFURSBURU1QIFRBQkxFIGEgKGlkIGludCBQUklNQVJZIEtFWSwgYl9pZCBpbnQpOwpAQCAt NDcyMiw2ICs0NzIzLDEyNyBAQCBzZWxlY3QgMSBmcm9tIChzZWxlY3QgYS5pZCBGUk9NIGEgbGVm dCBqb2luIGIgb24gYS5iX2lkID0gYi5pZCkgcSwKICAgICAgICAgIEZpbHRlcjogKGEuaWQgPSBp KQogKDQgcm93cykKIAorcm9sbGJhY2s7CistLQorLS0gdGVzdCBqb2luIHJlbW92YWwgZm9yIHBh cnRpdGlvbmVkIHRhYmxlcworLS0gdGhpcyBpcyBhbmFsb2cgdG8gdGhlIG5vbiBwYXJ0aXRpb25l ZCBjYXNlIGFib3ZlCistLQorYmVnaW47CitDUkVBVEUgVEFCTEUgYSAoaWQgaW50IFBSSU1BUlkg S0VZLCBiX2lkIGludCkgcGFydGl0aW9uIGJ5IHJhbmdlKGlkKTsKK0NSRUFURSBUQUJMRSBhX20g cGFydGl0aW9uIG9mIGEgZm9yIHZhbHVlcyBmcm9tICgwKSB0byAoMTApIHBhcnRpdGlvbiBieSBy YW5nZShpZCk7CitDUkVBVEUgVEFCTEUgYV9jIHBhcnRpdGlvbiBvZiBhX20gZm9yIHZhbHVlcyBm cm9tICgwKSB0byAoMTApOworQ1JFQVRFIFRBQkxFIGIgKGlkIGludCBQUklNQVJZIEtFWSwgY19p ZCBpbnQpIHBhcnRpdGlvbiBieSByYW5nZShpZCk7CitDUkVBVEUgVEFCTEUgYl9tIHBhcnRpdGlv biBvZiBiIGZvciB2YWx1ZXMgZnJvbSAoMCkgdG8gKDEwKSBwYXJ0aXRpb24gYnkgcmFuZ2UoaWQp OworQ1JFQVRFIFRBQkxFIGJfYyBwYXJ0aXRpb24gb2YgYl9tIGZvciB2YWx1ZXMgZnJvbSAoMCkg dG8gKDEwKTsKK0NSRUFURSBUQUJMRSBjIChpZCBpbnQgUFJJTUFSWSBLRVkpIHBhcnRpdGlvbiBi eSByYW5nZShpZCk7CitDUkVBVEUgVEFCTEUgY19tIHBhcnRpdGlvbiBvZiBjIGZvciB2YWx1ZXMg ZnJvbSAoMCkgdG8gKDEwKSBwYXJ0aXRpb24gYnkgcmFuZ2UoaWQpOworQ1JFQVRFIFRBQkxFIGNf YyBwYXJ0aXRpb24gb2YgY19tIGZvciB2YWx1ZXMgZnJvbSAoMCkgdG8gKDEwKTsKK0NSRUFURSBU QUJMRSBkIChhIGludCwgYiBpbnQpIHBhcnRpdGlvbiBieSByYW5nZShhKTsKK0NSRUFURSBUQUJM RSBkX2MgcGFydGl0aW9uIG9mIGQgZm9yIHZhbHVlcyBmcm9tICgwKSB0byAoMTApOworSU5TRVJU IElOVE8gYSBWQUxVRVMgKDAsIDApLCAoMSwgTlVMTCk7CitJTlNFUlQgSU5UTyBiIFZBTFVFUyAo MCwgMCksICgxLCBOVUxMKTsKK0lOU0VSVCBJTlRPIGMgVkFMVUVTICgwKSwgKDEpOworSU5TRVJU IElOVE8gZCBWQUxVRVMgKDEsMyksICgyLDIpLCAoMywxKTsKKy0tIGFsbCB0aHJlZSBjYXNlcyBz aG91bGQgYmUgb3B0aW1pemFibGUgaW50byBhIHNpbXBsZSBzZXFzY2FuCitleHBsYWluIChjb3N0 cyBvZmYpIFNFTEVDVCBhLiogRlJPTSBhIExFRlQgSk9JTiBiIE9OIGEuYl9pZCA9IGIuaWQ7Cisg ICAgUVVFUlkgUExBTiAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gYV9j IGEKKygxIHJvdykKKworZXhwbGFpbiAoY29zdHMgb2ZmKSBTRUxFQ1QgYi4qIEZST00gYiBMRUZU IEpPSU4gYyBPTiBiLmNfaWQgPSBjLmlkOworICAgIFFVRVJZIFBMQU4gICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIGJfYyBiCisoMSByb3cpCisKK2V4cGxhaW4gKGNvc3Rz IG9mZikKKyAgU0VMRUNUIGEuKiBGUk9NIGEgTEVGVCBKT0lOIChiIGxlZnQgam9pbiBjIG9uIGIu Y19pZCA9IGMuaWQpCisgIE9OIChhLmJfaWQgPSBiLmlkKTsKKyAgICBRVUVSWSBQTEFOICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBhX2MgYQorKDEgcm93KQorCistLSBj aGVjayBvcHRpbWl6YXRpb24gb2Ygb3V0ZXIgam9pbiB3aXRoaW4gYW5vdGhlciBzcGVjaWFsIGpv aW4KK2V4cGxhaW4gKGNvc3RzIG9mZikKK3NlbGVjdCBpZCBmcm9tIGEgd2hlcmUgaWQgaW4gKAor CXNlbGVjdCBiLmlkIGZyb20gYiBsZWZ0IGpvaW4gYyBvbiBiLmlkID0gYy5pZAorKTsKKyAgICAg ICAgICBRVUVSWSBQTEFOICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBIYXNoIEpvaW4KKyAgIEhhc2ggQ29uZDogKGEuaWQgPSBiLmlkKQorICAgLT4gIFNlcSBT Y2FuIG9uIGFfYyBhCisgICAtPiAgSGFzaAorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGJfYyBi CisoNSByb3dzKQorCistLSBjaGVjayB0aGF0IGpvaW4gcmVtb3ZhbCB3b3JrcyBmb3IgYSBsZWZ0 IGpvaW4gd2hlbiBqb2luaW5nIGEgc3VicXVlcnkKKy0tIHRoYXQgaXMgZ3VhcmFudGVlZCB0byBi ZSB1bmlxdWUgYnkgaXRzIEdST1VQIEJZIGNsYXVzZQorZXhwbGFpbiAoY29zdHMgb2ZmKQorc2Vs ZWN0IGQuKiBmcm9tIGQgbGVmdCBqb2luIChzZWxlY3QgKiBmcm9tIGIgZ3JvdXAgYnkgYi5pZCwg Yi5jX2lkKSBzCisgIG9uIGQuYSA9IHMuaWQgYW5kIGQuYiA9IHMuY19pZDsKKyAgICBRVUVSWSBQ TEFOICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBkX2MgZAorKDEgcm93 KQorCistLSBzaW1pbGFybHksIGJ1dCBrZXlpbmcgb2ZmIGEgRElTVElOQ1QgY2xhdXNlCitleHBs YWluIChjb3N0cyBvZmYpCitzZWxlY3QgZC4qIGZyb20gZCBsZWZ0IGpvaW4gKHNlbGVjdCBkaXN0 aW5jdCAqIGZyb20gYikgcworICBvbiBkLmEgPSBzLmlkIGFuZCBkLmIgPSBzLmNfaWQ7CisgICAg UVVFUlkgUExBTiAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gZF9jIGQK KygxIHJvdykKKworLS0gam9pbiByZW1vdmFsIGlzIG5vdCBwb3NzaWJsZSB3aGVuIHRoZSBHUk9V UCBCWSBjb250YWlucyBhIGNvbHVtbiB0aGF0IGlzCistLSBub3QgaW4gdGhlIGpvaW4gY29uZGl0 aW9uLiAgU2VlIGFib3ZlIGZvciBmdXJ0aGVyIG5vdGVzIGFib3V0IHRoaXMuCitleHBsYWluIChj b3N0cyBvZmYpCitzZWxlY3QgZC4qIGZyb20gZCBsZWZ0IGpvaW4gKHNlbGVjdCAqIGZyb20gYiBn cm91cCBieSBiLmlkLCBiLmNfaWQpIHMKKyAgb24gZC5hID0gcy5pZDsKKyAgICAgICAgICAgICAg ICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgTWVyZ2UgUmlnaHQgSm9pbgorICAgTWVyZ2Ug Q29uZDogKGIuaWQgPSBkLmEpCisgICAtPiAgR3JvdXAKKyAgICAgICAgIEdyb3VwIEtleTogYi5p ZAorICAgICAgICAgLT4gIEluZGV4IFNjYW4gdXNpbmcgYl9jX3BrZXkgb24gYl9jIGIKKyAgIC0+ ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogZC5hCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24g ZF9jIGQKKyg4IHJvd3MpCisKKy0tIHNpbWlsYXJseSwgYnV0IGtleWluZyBvZmYgYSBESVNUSU5D VCBjbGF1c2UKK2V4cGxhaW4gKGNvc3RzIG9mZikKK3NlbGVjdCBkLiogZnJvbSBkIGxlZnQgam9p biAoc2VsZWN0IGRpc3RpbmN0ICogZnJvbSBiKSBzCisgIG9uIGQuYSA9IHMuaWQ7CisgICAgICAg ICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIE1lcmdlIExlZnQgSm9pbgorICAgTWVyZ2Ug Q29uZDogKGQuYSA9IHMuaWQpCisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IGQuYQor ICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGRfYyBkCisgICAtPiAgU29ydAorICAgICAgICAgU29y dCBLZXk6IHMuaWQKKyAgICAgICAgIC0+ICBTdWJxdWVyeSBTY2FuIG9uIHMKKyAgICAgICAgICAg ICAgIC0+ICBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IGIu aWQsIGIuY19pZAorICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGJfYyBiCiso MTEgcm93cykKKworLS0gY2hlY2sgam9pbiByZW1vdmFsIHdvcmtzIHdoZW4gdW5pcXVlbmVzcyBv ZiB0aGUgam9pbiBjb25kaXRpb24gaXMgZW5mb3JjZWQKKy0tIGJ5IGEgVU5JT04KK2V4cGxhaW4g KGNvc3RzIG9mZikKK3NlbGVjdCBkLiogZnJvbSBkIGxlZnQgam9pbiAoc2VsZWN0IGlkIGZyb20g YSB1bmlvbiBzZWxlY3QgaWQgZnJvbSBiKSBzCisgIG9uIGQuYSA9IHMuaWQ7CisgICAgUVVFUlkg UExBTiAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gZF9jIGQKKygxIHJv dykKKwogcm9sbGJhY2s7CiBjcmVhdGUgdGVtcCB0YWJsZSBwYXJlbnQgKGsgaW50IHByaW1hcnkg a2V5LCBwZCBpbnQpOwogY3JlYXRlIHRlbXAgdGFibGUgY2hpbGQgKGsgaW50IHVuaXF1ZSwgY2Qg aW50KTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX2pv aW4ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fam9pbi5vdXQKaW5k ZXggMDM5MjZhODQxMy4uYzg1NDIyODQ4MiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9wYXJ0aXRpb25fam9pbi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9wYXJ0aXRpb25fam9pbi5vdXQKQEAgLTQ4NTIsNDYgKzQ4NTIsNDYgQEAgU0VMRUNUIHQxLios IHQyLiogRlJPTSBhbHBoYSB0MSBJTk5FUiBKT0lOIGJldGEgdDIgT04gKHQxLmEgPSB0Mi5hIEFO RCB0MS5iID0gdDIKICg4IHJvd3MpCiAKIC0tIHBhcnRpdGlvbndpc2Ugam9pbiB3aXRoIGZyYWN0 aW9uYWwgcGF0aHMKLUNSRUFURSBUQUJMRSBmcmFjdF90IChpZCBCSUdJTlQsIFBSSU1BUlkgS0VZ IChpZCkpIFBBUlRJVElPTiBCWSBSQU5HRSAoaWQpOworQ1JFQVRFIFRBQkxFIGZyYWN0X3QgKGlk IEJJR0lOVCwgYyBJTlQsIFBSSU1BUlkgS0VZIChpZCkpIFBBUlRJVElPTiBCWSBSQU5HRSAoaWQp OwogQ1JFQVRFIFRBQkxFIGZyYWN0X3QwIFBBUlRJVElPTiBPRiBmcmFjdF90IEZPUiBWQUxVRVMg RlJPTSAoJzAnKSBUTyAoJzEwMDAnKTsKIENSRUFURSBUQUJMRSBmcmFjdF90MSBQQVJUSVRJT04g T0YgZnJhY3RfdCBGT1IgVkFMVUVTIEZST00gKCcxMDAwJykgVE8gKCcyMDAwJyk7CiAtLSBpbnNl cnQgZGF0YQotSU5TRVJUIElOVE8gZnJhY3RfdCAoaWQpIChTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVz KDAsIDE5OTkpKTsKK0lOU0VSVCBJTlRPIGZyYWN0X3QgKGlkLGMpIFNFTEVDVCBpLGkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMCwgMTk5OSkgaTsKIEFOQUxZWkUgZnJhY3RfdDsKLS0tIHZlcmlmeSBw bGFuOyBuZXN0ZWQgaW5kZXggb25seSBzY2FucworLS0gdmVyaWZ5IHBsYW47IG5lc3RlZCBpbmRl eCBzY2FucwogU0VUIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAwOwogU0VUIGVu YWJsZV9wYXJ0aXRpb253aXNlX2pvaW4gPSBvbjsKIEVYUExBSU4gKENPU1RTIE9GRikKIFNFTEVD VCAqIEZST00gZnJhY3RfdCB4IExFRlQgSk9JTiBmcmFjdF90IHkgVVNJTkcgKGlkKSBPUkRFUiBC WSBpZCBBU0MgTElNSVQgMTA7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQ TEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCiAgTGltaXQKICAgIC0+ICBNZXJnZSBBcHBlbmQKICAgICAgICAgIFNv cnQgS2V5OiB4LmlkCiAgICAgICAgICAtPiAgTWVyZ2UgTGVmdCBKb2luCiAgICAgICAgICAgICAg ICBNZXJnZSBDb25kOiAoeF8xLmlkID0geV8xLmlkKQotICAgICAgICAgICAgICAgLT4gIEluZGV4 IE9ubHkgU2NhbiB1c2luZyBmcmFjdF90MF9wa2V5IG9uIGZyYWN0X3QwIHhfMQotICAgICAgICAg ICAgICAgLT4gIEluZGV4IE9ubHkgU2NhbiB1c2luZyBmcmFjdF90MF9wa2V5IG9uIGZyYWN0X3Qw IHlfMQorICAgICAgICAgICAgICAgLT4gIEluZGV4IFNjYW4gdXNpbmcgZnJhY3RfdDBfcGtleSBv biBmcmFjdF90MCB4XzEKKyAgICAgICAgICAgICAgIC0+ICBJbmRleCBTY2FuIHVzaW5nIGZyYWN0 X3QwX3BrZXkgb24gZnJhY3RfdDAgeV8xCiAgICAgICAgICAtPiAgTWVyZ2UgTGVmdCBKb2luCiAg ICAgICAgICAgICAgICBNZXJnZSBDb25kOiAoeF8yLmlkID0geV8yLmlkKQotICAgICAgICAgICAg ICAgLT4gIEluZGV4IE9ubHkgU2NhbiB1c2luZyBmcmFjdF90MV9wa2V5IG9uIGZyYWN0X3QxIHhf MgotICAgICAgICAgICAgICAgLT4gIEluZGV4IE9ubHkgU2NhbiB1c2luZyBmcmFjdF90MV9wa2V5 IG9uIGZyYWN0X3QxIHlfMgorICAgICAgICAgICAgICAgLT4gIEluZGV4IFNjYW4gdXNpbmcgZnJh Y3RfdDFfcGtleSBvbiBmcmFjdF90MSB4XzIKKyAgICAgICAgICAgICAgIC0+ICBJbmRleCBTY2Fu IHVzaW5nIGZyYWN0X3QxX3BrZXkgb24gZnJhY3RfdDEgeV8yCiAoMTEgcm93cykKIAogRVhQTEFJ TiAoQ09TVFMgT0ZGKQogU0VMRUNUICogRlJPTSBmcmFjdF90IHggTEVGVCBKT0lOIGZyYWN0X3Qg eSBVU0lORyAoaWQpIE9SREVSIEJZIGlkIERFU0MgTElNSVQgMTA7Ci0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCiAgTGltaXQKICAgIC0+ICBNZXJnZSBBcHBlbmQKICAgICAgICAgIFNv cnQgS2V5OiB4LmlkIERFU0MKICAgICAgICAgIC0+ICBOZXN0ZWQgTG9vcCBMZWZ0IEpvaW4KLSAg ICAgICAgICAgICAgIC0+ICBJbmRleCBPbmx5IFNjYW4gQmFja3dhcmQgdXNpbmcgZnJhY3RfdDBf cGtleSBvbiBmcmFjdF90MCB4XzEKLSAgICAgICAgICAgICAgIC0+ICBJbmRleCBPbmx5IFNjYW4g dXNpbmcgZnJhY3RfdDBfcGtleSBvbiBmcmFjdF90MCB5XzEKKyAgICAgICAgICAgICAgIC0+ICBJ bmRleCBTY2FuIEJhY2t3YXJkIHVzaW5nIGZyYWN0X3QwX3BrZXkgb24gZnJhY3RfdDAgeF8xCisg ICAgICAgICAgICAgICAtPiAgSW5kZXggU2NhbiB1c2luZyBmcmFjdF90MF9wa2V5IG9uIGZyYWN0 X3QwIHlfMQogICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGlkID0geF8xLmlkKQog ICAgICAgICAgLT4gIE5lc3RlZCBMb29wIExlZnQgSm9pbgotICAgICAgICAgICAgICAgLT4gIElu ZGV4IE9ubHkgU2NhbiBCYWNrd2FyZCB1c2luZyBmcmFjdF90MV9wa2V5IG9uIGZyYWN0X3QxIHhf MgotICAgICAgICAgICAgICAgLT4gIEluZGV4IE9ubHkgU2NhbiB1c2luZyBmcmFjdF90MV9wa2V5 IG9uIGZyYWN0X3QxIHlfMgorICAgICAgICAgICAgICAgLT4gIEluZGV4IFNjYW4gQmFja3dhcmQg dXNpbmcgZnJhY3RfdDFfcGtleSBvbiBmcmFjdF90MSB4XzIKKyAgICAgICAgICAgICAgIC0+ICBJ bmRleCBTY2FuIHVzaW5nIGZyYWN0X3QxX3BrZXkgb24gZnJhY3RfdDEgeV8yCiAgICAgICAgICAg ICAgICAgICAgICBJbmRleCBDb25kOiAoaWQgPSB4XzIuaWQpCiAoMTEgcm93cykKIApkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvaW5oZXJpdC5zcWwgYi9zcmMvdGVzdC9yZWdyZXNz L3NxbC9pbmhlcml0LnNxbAppbmRleCAxOTVhZWRiNWZmLi5lZTU1ZmMxZWM4IDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9pbmhlcml0LnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L3NxbC9pbmhlcml0LnNxbApAQCAtMjA4LDYgKzIwOCw4IEBAIGluc2VydCBpbnRvIGQgdmFsdWVz KCd0ZXN0Jywnb25lJywndHdvJywndGhyZWUnKTsKIGFsdGVyIHRhYmxlIGEgYWx0ZXIgY29sdW1u IGFhIHR5cGUgaW50ZWdlciB1c2luZyBiaXRfbGVuZ3RoKGFhKTsKIHNlbGVjdCAqIGZyb20gZDsK IAorRFJPUCBUQUJMRSBhIENBU0NBREU7CisKIC0tIFRoZSBhYm92ZSB2ZXJpZmllZCB0aGF0IHdl IGNhbiBjaGFuZ2UgdGhlIHR5cGUgb2YgYSBtdWx0aXBseS1pbmhlcml0ZWQKIC0tIGNvbHVtbjsg YnV0IHdlIHNob3VsZCByZWplY3QgdGhhdCBpZiBhbnkgZGVmaW5pdGlvbiB3YXMgaW5oZXJpdGVk IGZyb20KIC0tIGFuIHVucmVsYXRlZCBwYXJlbnQuCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9qb2luLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pvaW4uc3FsCmluZGV4IDI3 ZTdlNzQxYTEuLmRmN2ZhZDIyYmMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pv aW4uc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pvaW4uc3FsCkBAIC0xNTc5LDcgKzE1 NzksOCBAQCByZXNldCBlbmFibGVfaGFzaGpvaW47CiByZXNldCBlbmFibGVfbmVzdGxvb3A7CiAK IC0tCi0tLSB0ZXN0IGpvaW4gcmVtb3ZhbAorLS0gdGVzdCBqb2luIHJlbW92YWwgZm9yIHBsYWlu IHRhYmxlcworLS0gd2UgaGF2ZSBhbG1vc3QgdGhlIHNtYXJlIHRlc3RzIGZvciBwYXJ0aXRpb25l ZCB0YWJsZXMgYmVsb3cKIC0tCiAKIGJlZ2luOwpAQCAtMTY0OCw2ICsxNjQ5LDcyIEBAIHNlbGVj dCAxIGZyb20gKHNlbGVjdCBhLmlkIEZST00gYSBsZWZ0IGpvaW4gYiBvbiBhLmJfaWQgPSBiLmlk KSBxLAogCiByb2xsYmFjazsKIAorLS0KKy0tIHRlc3Qgam9pbiByZW1vdmFsIGZvciBwYXJ0aXRp b25lZCB0YWJsZXMKKy0tIHRoaXMgaXMgYW5hbG9nIHRvIHRoZSBub24gcGFydGl0aW9uZWQgY2Fz ZSBhYm92ZQorLS0KKworYmVnaW47CisKK0NSRUFURSBUQUJMRSBhIChpZCBpbnQgUFJJTUFSWSBL RVksIGJfaWQgaW50KSBwYXJ0aXRpb24gYnkgcmFuZ2UoaWQpOworQ1JFQVRFIFRBQkxFIGFfbSBw YXJ0aXRpb24gb2YgYSBmb3IgdmFsdWVzIGZyb20gKDApIHRvICgxMCkgcGFydGl0aW9uIGJ5IHJh bmdlKGlkKTsKK0NSRUFURSBUQUJMRSBhX2MgcGFydGl0aW9uIG9mIGFfbSBmb3IgdmFsdWVzIGZy b20gKDApIHRvICgxMCk7CitDUkVBVEUgVEFCTEUgYiAoaWQgaW50IFBSSU1BUlkgS0VZLCBjX2lk IGludCkgcGFydGl0aW9uIGJ5IHJhbmdlKGlkKTsKK0NSRUFURSBUQUJMRSBiX20gcGFydGl0aW9u IG9mIGIgZm9yIHZhbHVlcyBmcm9tICgwKSB0byAoMTApIHBhcnRpdGlvbiBieSByYW5nZShpZCk7 CitDUkVBVEUgVEFCTEUgYl9jIHBhcnRpdGlvbiBvZiBiX20gZm9yIHZhbHVlcyBmcm9tICgwKSB0 byAoMTApOworQ1JFQVRFIFRBQkxFIGMgKGlkIGludCBQUklNQVJZIEtFWSkgcGFydGl0aW9uIGJ5 IHJhbmdlKGlkKTsKK0NSRUFURSBUQUJMRSBjX20gcGFydGl0aW9uIG9mIGMgZm9yIHZhbHVlcyBm cm9tICgwKSB0byAoMTApIHBhcnRpdGlvbiBieSByYW5nZShpZCk7CitDUkVBVEUgVEFCTEUgY19j IHBhcnRpdGlvbiBvZiBjX20gZm9yIHZhbHVlcyBmcm9tICgwKSB0byAoMTApOworQ1JFQVRFIFRB QkxFIGQgKGEgaW50LCBiIGludCkgcGFydGl0aW9uIGJ5IHJhbmdlKGEpOworQ1JFQVRFIFRBQkxF IGRfYyBwYXJ0aXRpb24gb2YgZCBmb3IgdmFsdWVzIGZyb20gKDApIHRvICgxMCk7CitJTlNFUlQg SU5UTyBhIFZBTFVFUyAoMCwgMCksICgxLCBOVUxMKTsKK0lOU0VSVCBJTlRPIGIgVkFMVUVTICgw LCAwKSwgKDEsIE5VTEwpOworSU5TRVJUIElOVE8gYyBWQUxVRVMgKDApLCAoMSk7CitJTlNFUlQg SU5UTyBkIFZBTFVFUyAoMSwzKSwgKDIsMiksICgzLDEpOworCistLSBhbGwgdGhyZWUgY2FzZXMg c2hvdWxkIGJlIG9wdGltaXphYmxlIGludG8gYSBzaW1wbGUgc2Vxc2NhbgorZXhwbGFpbiAoY29z dHMgb2ZmKSBTRUxFQ1QgYS4qIEZST00gYSBMRUZUIEpPSU4gYiBPTiBhLmJfaWQgPSBiLmlkOwor ZXhwbGFpbiAoY29zdHMgb2ZmKSBTRUxFQ1QgYi4qIEZST00gYiBMRUZUIEpPSU4gYyBPTiBiLmNf aWQgPSBjLmlkOworZXhwbGFpbiAoY29zdHMgb2ZmKQorICBTRUxFQ1QgYS4qIEZST00gYSBMRUZU IEpPSU4gKGIgbGVmdCBqb2luIGMgb24gYi5jX2lkID0gYy5pZCkKKyAgT04gKGEuYl9pZCA9IGIu aWQpOworCistLSBjaGVjayBvcHRpbWl6YXRpb24gb2Ygb3V0ZXIgam9pbiB3aXRoaW4gYW5vdGhl ciBzcGVjaWFsIGpvaW4KK2V4cGxhaW4gKGNvc3RzIG9mZikKK3NlbGVjdCBpZCBmcm9tIGEgd2hl cmUgaWQgaW4gKAorCXNlbGVjdCBiLmlkIGZyb20gYiBsZWZ0IGpvaW4gYyBvbiBiLmlkID0gYy5p ZAorKTsKKworLS0gY2hlY2sgdGhhdCBqb2luIHJlbW92YWwgd29ya3MgZm9yIGEgbGVmdCBqb2lu IHdoZW4gam9pbmluZyBhIHN1YnF1ZXJ5CistLSB0aGF0IGlzIGd1YXJhbnRlZWQgdG8gYmUgdW5p cXVlIGJ5IGl0cyBHUk9VUCBCWSBjbGF1c2UKK2V4cGxhaW4gKGNvc3RzIG9mZikKK3NlbGVjdCBk LiogZnJvbSBkIGxlZnQgam9pbiAoc2VsZWN0ICogZnJvbSBiIGdyb3VwIGJ5IGIuaWQsIGIuY19p ZCkgcworICBvbiBkLmEgPSBzLmlkIGFuZCBkLmIgPSBzLmNfaWQ7CisKKy0tIHNpbWlsYXJseSwg YnV0IGtleWluZyBvZmYgYSBESVNUSU5DVCBjbGF1c2UKK2V4cGxhaW4gKGNvc3RzIG9mZikKK3Nl bGVjdCBkLiogZnJvbSBkIGxlZnQgam9pbiAoc2VsZWN0IGRpc3RpbmN0ICogZnJvbSBiKSBzCisg IG9uIGQuYSA9IHMuaWQgYW5kIGQuYiA9IHMuY19pZDsKKworLS0gam9pbiByZW1vdmFsIGlzIG5v dCBwb3NzaWJsZSB3aGVuIHRoZSBHUk9VUCBCWSBjb250YWlucyBhIGNvbHVtbiB0aGF0IGlzCist LSBub3QgaW4gdGhlIGpvaW4gY29uZGl0aW9uLiAgU2VlIGFib3ZlIGZvciBmdXJ0aGVyIG5vdGVz IGFib3V0IHRoaXMuCitleHBsYWluIChjb3N0cyBvZmYpCitzZWxlY3QgZC4qIGZyb20gZCBsZWZ0 IGpvaW4gKHNlbGVjdCAqIGZyb20gYiBncm91cCBieSBiLmlkLCBiLmNfaWQpIHMKKyAgb24gZC5h ID0gcy5pZDsKKworLS0gc2ltaWxhcmx5LCBidXQga2V5aW5nIG9mZiBhIERJU1RJTkNUIGNsYXVz ZQorZXhwbGFpbiAoY29zdHMgb2ZmKQorc2VsZWN0IGQuKiBmcm9tIGQgbGVmdCBqb2luIChzZWxl Y3QgZGlzdGluY3QgKiBmcm9tIGIpIHMKKyAgb24gZC5hID0gcy5pZDsKKworLS0gY2hlY2sgam9p biByZW1vdmFsIHdvcmtzIHdoZW4gdW5pcXVlbmVzcyBvZiB0aGUgam9pbiBjb25kaXRpb24gaXMg ZW5mb3JjZWQKKy0tIGJ5IGEgVU5JT04KK2V4cGxhaW4gKGNvc3RzIG9mZikKK3NlbGVjdCBkLiog ZnJvbSBkIGxlZnQgam9pbiAoc2VsZWN0IGlkIGZyb20gYSB1bmlvbiBzZWxlY3QgaWQgZnJvbSBi KSBzCisgIG9uIGQuYSA9IHMuaWQ7CisKK3JvbGxiYWNrOworCiBjcmVhdGUgdGVtcCB0YWJsZSBw YXJlbnQgKGsgaW50IHByaW1hcnkga2V5LCBwZCBpbnQpOwogY3JlYXRlIHRlbXAgdGFibGUgY2hp bGQgKGsgaW50IHVuaXF1ZSwgY2QgaW50KTsKIGluc2VydCBpbnRvIHBhcmVudCB2YWx1ZXMgKDEs IDEwKSwgKDIsIDIwKSwgKDMsIDMwKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3BhcnRpdGlvbl9qb2luLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9qb2lu LnNxbAppbmRleCA2N2Y1MDYzNjFmLi4wMDkxODRkMzQ4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9wYXJ0aXRpb25fam9pbi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwv cGFydGl0aW9uX2pvaW4uc3FsCkBAIC0xMTQ0LDE1ICsxMTQ0LDE1IEBAIFNFTEVDVCB0MS4qLCB0 Mi4qIEZST00gYWxwaGEgdDEgSU5ORVIgSk9JTiBiZXRhIHQyIE9OICh0MS5hID0gdDIuYSBBTkQg dDEuYiA9IHQyCiBTRUxFQ1QgdDEuKiwgdDIuKiBGUk9NIGFscGhhIHQxIElOTkVSIEpPSU4gYmV0 YSB0MiBPTiAodDEuYSA9IHQyLmEgQU5EIHQxLmIgPSB0Mi5iIEFORCB0MS5jID0gdDIuYykgV0hF UkUgKCh0MS5iID49IDEwMCBBTkQgdDEuYiA8IDExMCkgT1IgKHQxLmIgPj0gMjAwIEFORCB0MS5i IDwgMjEwKSkgQU5EICgodDIuYiA+PSAxMDAgQU5EIHQyLmIgPCAxMTApIE9SICh0Mi5iID49IDIw MCBBTkQgdDIuYiA8IDIxMCkpIEFORCB0MS5jIElOICgnMDAwNCcsICcwMDA5JykgT1JERVIgQlkg dDEuYSwgdDEuYjsKIAogLS0gcGFydGl0aW9ud2lzZSBqb2luIHdpdGggZnJhY3Rpb25hbCBwYXRo cwotQ1JFQVRFIFRBQkxFIGZyYWN0X3QgKGlkIEJJR0lOVCwgUFJJTUFSWSBLRVkgKGlkKSkgUEFS VElUSU9OIEJZIFJBTkdFIChpZCk7CitDUkVBVEUgVEFCTEUgZnJhY3RfdCAoaWQgQklHSU5ULCBj IElOVCwgUFJJTUFSWSBLRVkgKGlkKSkgUEFSVElUSU9OIEJZIFJBTkdFIChpZCk7CiBDUkVBVEUg VEFCTEUgZnJhY3RfdDAgUEFSVElUSU9OIE9GIGZyYWN0X3QgRk9SIFZBTFVFUyBGUk9NICgnMCcp IFRPICgnMTAwMCcpOwogQ1JFQVRFIFRBQkxFIGZyYWN0X3QxIFBBUlRJVElPTiBPRiBmcmFjdF90 IEZPUiBWQUxVRVMgRlJPTSAoJzEwMDAnKSBUTyAoJzIwMDAnKTsKIAogLS0gaW5zZXJ0IGRhdGEK LUlOU0VSVCBJTlRPIGZyYWN0X3QgKGlkKSAoU0VMRUNUIGdlbmVyYXRlX3NlcmllcygwLCAxOTk5 KSk7CitJTlNFUlQgSU5UTyBmcmFjdF90IChpZCxjKSBTRUxFQ1QgaSxpIEZST00gZ2VuZXJhdGVf c2VyaWVzKDAsIDE5OTkpIGk7CiBBTkFMWVpFIGZyYWN0X3Q7CiAKLS0tIHZlcmlmeSBwbGFuOyBu ZXN0ZWQgaW5kZXggb25seSBzY2FucworLS0gdmVyaWZ5IHBsYW47IG5lc3RlZCBpbmRleCBzY2Fu cwogU0VUIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAwOwogU0VUIGVuYWJsZV9w YXJ0aXRpb253aXNlX2pvaW4gPSBvbjsKIAotLSAKMi4zNS4zCgo= --_004_24e924b48a8a47649d6a92cb1c95eb4bindexde_--