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 1vohhh-00CcqH-38 for pgsql-hackers@arkaria.postgresql.org; Sat, 07 Feb 2026 12:46:26 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vohhf-006fto-2q for pgsql-hackers@arkaria.postgresql.org; Sat, 07 Feb 2026 12:46:23 +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.96) (envelope-from ) id 1vohhf-006ftg-0U for pgsql-hackers@lists.postgresql.org; Sat, 07 Feb 2026 12:46:23 +0000 Received: from mail-japanwestazolkn19011028.outbound.protection.outlook.com ([52.103.66.28] helo=OS0P286CU010.outbound.protection.outlook.com) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1vohhc-00000000zQ3-2iYP for pgsql-hackers@postgresql.org; Sat, 07 Feb 2026 12:46:21 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ExD6yaaJtKhVTZBLZA8vmPYIxPHfmqYyyL+CSfTNwhaHK5CuGs62jBJk1+s6XLHjyJUCohLFKtmJWIimeKL2Sl2hh7W2KE2bv6Zu/Pw+h0zNkr1J+MRl0ZU8xVyqawwX/GElWLGLCpodaoAErvBnDvaj17QsWdNaoQIdCQr2pZL2eCs73vMX+UtX7KKEKtiKGA6vL/jUzUD/M9ZUC/3GBJuf1xMYyfKmQxCoWa0R6krhhtnxWwOqrdFUPcEznRhsDv+RDw2JqUZQUCZWWyLooIfhwla1Ejodl33BxhgipfPnT3cC4wKmLemcbvIysTOeyD0mncGewrILFvocrcUchw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=OBnv3nbFdoELktIwFRqjSVEeam0ae9nBKanNqjQEFpc=; b=PXU1lMH/r+XLcVc+6oBalJFqgoG2Dnzx6mjpPTxpEtca2G+xNkSV678ol/Gv+B8lWIo/2BqfZaESLY4DXwpXgraOClNA/a2E+xdtme8XDvk3wV3DO9Xb2VB+Xycc+CmWFt3ycQxFIPvm9owMCoF4NdF9A/lRqP8tQY6OWCwI78gEKHWpKebQzQ17vtECwXzlK+xz33WWhSueYMzWWWsjdOPKjXxKRi3VmeM8ghFFBK89XSo+8NBCNb7AbotxuRafP4SI29Q4teVKtsvc6jJdy8pJmmlH22yuxy+WsXGTbTjDEIdJcByXO8VQoYi/q/vKmbKzS+m6wYgSV4e4Xn1g3Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=OBnv3nbFdoELktIwFRqjSVEeam0ae9nBKanNqjQEFpc=; b=U8xGgeViZmL05USqAmlkKqZDnLLZKXfOrFg61peVTEnAXmhDyUWdJf8IjyT0RVLnXipZDDbijuuSi8mFnzbB8E2QwfjHjE0n2seVlDb6J61aeJV8CCckhIMYoY7CO78auSQ1UrZQmLJR4FxzNey1G4QSPHYakQnYc2AXebicunAN/kttHkd1AltgS7PaE1a4BCe7p5/GliQE73ZZe0OUOCHXVQ1zC9RsTBDCpd0uCDi4D5WhaMITs/sPdlNgJ0pF+HK4RjwrhQOU3woCYyyATU0faonrdBF5zTHDD69AGeTM4BW788cHU/tjArTUP8HGDL3YmPS2O/Fk3bjbOICsNQ== Received: from TYYPR01MB14116.jpnprd01.prod.outlook.com (2603:1096:405:212::9) by TY6PR01MB17791.jpnprd01.prod.outlook.com (2603:1096:405:346::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9564.16; Sat, 7 Feb 2026 12:46:16 +0000 Received: from TYYPR01MB14116.jpnprd01.prod.outlook.com ([fe80::31dd:4ff2:eea8:c663]) by TYYPR01MB14116.jpnprd01.prod.outlook.com ([fe80::31dd:4ff2:eea8:c663%7]) with mapi id 15.20.9587.016; Sat, 7 Feb 2026 12:46:16 +0000 From: Chengpeng Yan To: Tom Lane , Andres Freund CC: PostgreSQL-development , David Rowley Subject: Re: Unfortunate pushing down of expressions below sort Thread-Topic: Unfortunate pushing down of expressions below sort Thread-Index: AQHcluFis0QE5NlnU0Sg29X/QGMp3LV0zPyAgAANy4CAAOPCAIABcxyA Date: Sat, 7 Feb 2026 12:46:15 +0000 Message-ID: <3F7BA12C-7158-4E78-A8F8-A17FE5F6CCF0@Outlook.com> References: <1668738.1770336789@sss.pgh.pa.us> <1674012.1770339751@sss.pgh.pa.us> <988146DB-C16A-487C-8C39-656C702EF4E2@Outlook.com> In-Reply-To: <988146DB-C16A-487C-8C39-656C702EF4E2@Outlook.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-traffictypediagnostic: TYYPR01MB14116:EE_|TY6PR01MB17791:EE_ x-ms-office365-filtering-correlation-id: fdbddabe-9fba-4368-0a70-08de6646e211 x-microsoft-antispam: BCL:0;ARA:14566002|19110799012|8062599012|8060799015|8022599003|31061999003|15080799012|461199028|6092099016|56899033|440099028|3412199025|102099032; x-microsoft-antispam-message-info: =?us-ascii?Q?SLvRELZCeVBeKM7K7zOqFvW286Ya6wSfy9HKM3+aBkAw70EaMzym7dpwtrcI?= =?us-ascii?Q?SFQBXp/5ryCIlgeYueG27I5BMsikyakP2kYTvSP3CjwVax3xs9A57Dux0t1M?= =?us-ascii?Q?4kMGwDUuxFlpF9EM0vtAAfo4mPpsTwJWwR1PO7btKTn88w+39COpkMRf2+zr?= =?us-ascii?Q?01OEkrd7Jv/TwIEbDqHnPKwr7kAEGYUWVIFYjoNbG12FxPx/7CjbD1lS1X5O?= =?us-ascii?Q?WfmodnlRCcG9UPuMXop8XMMj4h3rMG+u7488cL6qffdNJe1atUgdsSNpXqHe?= =?us-ascii?Q?/Dy133LZH6bKqf9n1monj/3Mjo8Ny8Vph80+WnwBSDQehMfzMzUXavcz0cYp?= =?us-ascii?Q?3x0VYE1EDuQlR3vYPnPm6JakWKTO+dR3966Q5YwLAX5HBktER170qR1Uh7j7?= =?us-ascii?Q?Z6sESQNxxH75qts2PNxa4VSmX4ti06ZXBYQ18qBXC0l8QWrcTWOOZzI8hKfT?= =?us-ascii?Q?dGAocccYLdJMLV54bXijBAADvK2ipMTxAw05oNHtprV1cCTW2duAwXxcfXFn?= =?us-ascii?Q?ONrYlMERYgBCTYCateMFLzTsCVIolXg2Hw9XxkSEln0bligxbsoRjKA9fsB5?= =?us-ascii?Q?+VHNmpMI8MpjSSqoNXhdPlRLT4ks461yekipWERPgjRDMHlJxeOhp4auWbed?= =?us-ascii?Q?EYPfusDW0KC6k3X+HCk6s15XvLhuURxOXYhXCf3rzoNtovS4AHO8XOksuFCY?= =?us-ascii?Q?O0Nc2uYUffxrHmI2r/4YBhw5KJxRE2oeTTaszNKv+g5saSrWgbChTdd9r15A?= =?us-ascii?Q?qD8gWzxRLmCvzB5MQdpCSlHUHaEMRei0jIsbNflvdKPTsF6MJJr/lYCkkRbC?= =?us-ascii?Q?m1A5g3Y6YJ+ThZRx2XFJkmIhVeCIBmk+1PbcytEAt0q6St6gttgAKJjMRr3Y?= =?us-ascii?Q?Uh2HWP9S2r8Oadx+M4D19xbWo6qiiQtJBuqRIir6YYnK2gU1xG8Ajb58CRvx?= =?us-ascii?Q?BebkcffC5wXKxxgYzwpzF9S64FgzrVfP+Ro1uJsrFskknlGQPexK6AvByRFh?= =?us-ascii?Q?QgGKm025aWlFFqV7xyl2u8ckWe6cCpA/ktlR1tSf0MTyHH/By++kuAIuIe/+?= =?us-ascii?Q?q/GIf05q9gr+ivVFklIdDBCG4UmlpjGH6lG6KqUBLQVH15P4Bxe54KVkTheS?= =?us-ascii?Q?6VxXnabQahmcxkWov7+zU8npe239LwaVCPuXBbigWCVjk9Op0F8SYgE=3D?= x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?NgLP/5x/HKRq4sLqgkrG7kWqYzY4AoKElV8CLBvXX399OmA+7/D484874Sat?= =?us-ascii?Q?pRZ0w7OX+EaSTTQAZDb7R5mqIFYhiL53Y2l4NpoI6v+cD4hGwrVeXZ1hrkFf?= =?us-ascii?Q?5NBQ1wpWq9FhRfT4rqkrDzCruZfjxx0gCMvZAMIoO0Lddt5F2mTWOCVFK1yF?= =?us-ascii?Q?HYgHwCqWiM8Rs5f2RumRzDaTfNME+5W7sPIpXTWZ7zAwzKkpmPHO5Vz7q59l?= =?us-ascii?Q?h5UP4f/5zEA/C+OO1UzFPCx8ux4f9W0Kj0lF3/aA0p46YFJBHEbDuCMFu2ee?= =?us-ascii?Q?dD4ZeMRXyOUxeWI45w1rsF9TW9d8nhl7ITWPAgZa8Zq8RrlFJjoifRiMk7WG?= =?us-ascii?Q?jkDxldIREO6l8kdhqEcw0+1EUuEx7xJShdRBZ1rdItjTGLUk+qJU8EZfDyOB?= =?us-ascii?Q?0nHK7CI7jdPmJ5kWCz0hWMT/AlpoYQ8qVRXcFpPEjy3pSoLy5pl5X05z/fMU?= =?us-ascii?Q?5Nju2/RGCMoG4jQZs8YptIxaD03ktOcN4SpRI/6QmyS7a/kuqkAOZfmFCO3A?= =?us-ascii?Q?c/EGbU7TydDBqPAouFmKtZsHBgfEMYLK1Ur+qy/gUDiI+UX+bhvrffc89NJx?= =?us-ascii?Q?Tc9kTuOODATWFLsi6Wtb/8HD52MDz1ShS/oXuj5h63nDOFcTDToI4N/wCfvX?= =?us-ascii?Q?YumcR2PtC7D9sCEzkSjRgHorZgarQ4OQ/1tOk9jqdqZmNru0759jZnav//u8?= =?us-ascii?Q?zUq0GYkaKAuDT/iDvATJq4fK5Tp2TqAiIT9BlnJshDs5GBN68EwkuzKloLCb?= =?us-ascii?Q?xs7EWRu4j9CYKvQmfb08N3NqZP+OF1qP1sDEBN9K/gwlm/WahSRqmF8LohWz?= =?us-ascii?Q?y5pGn3JUe28RG+dR3NrOZozihuQElL7HnBJIxtJWBGuBL+sCdtqtQt6O8FPb?= =?us-ascii?Q?fPPNFFr903MvgOXFR5DXANQj+j556S6tnL0qX/TzOwO9LT5wwrAU/MdGWLzm?= =?us-ascii?Q?mH28PG0NiDWelWDCrbvX4KVl7kEy7n0Xii5Yj0Xpo0s8+4DIwSXC00WdDdtU?= =?us-ascii?Q?FkT302rGobTogs4dqynaZ+9bblipWcHK9CLgeWIHRe6dUr987fkNGHuQRYzn?= =?us-ascii?Q?HAqqNmAM/OSXNa5RVP5kME+b58IyfEtp4lhBKT4w8lXARUC0MNQPvPOerseT?= =?us-ascii?Q?5ee0CUbXlu0Ff/Tm6IqdnfPmdeHQkrCROsfAvJYqO+rOkNV5yXyJf4ASrqoe?= =?us-ascii?Q?cdLZcxjvOsOLJp5p6XjdtJaYKuaZ7ps7IAryxBptWfQhknAweOfyBwzaKVR2?= =?us-ascii?Q?UZNs5I52vP8K0NlXaFvMPXbKzpHy3yrGtDboD+i9o1FFIr6D+heVn7IL4R/p?= =?us-ascii?Q?pJ+Z8HSW4bIaJDxYj1NQ54LDMUkKmfesCJbJfEL7X2qIzQHfJrZXp9h+sNTK?= =?us-ascii?Q?MFc211Gj43djcyR12EClu32tePiJhNMlm+ylGq/aPH7wy3F2/w=3D=3D?= Content-Type: multipart/mixed; boundary="_004_3F7BA12C71584E78A8F8A17FE5F6CCF0Outlookcom_" MIME-Version: 1.0 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: TYYPR01MB14116.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: fdbddabe-9fba-4368-0a70-08de6646e211 X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Feb 2026 12:46:15.9482 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY6PR01MB17791 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_004_3F7BA12C71584E78A8F8A17FE5F6CCF0Outlookcom_ Content-Type: multipart/alternative; boundary="_000_3F7BA12C71584E78A8F8A17FE5F6CCF0Outlookcom_" --_000_3F7BA12C71584E78A8F8A17FE5F6CCF0Outlookcom_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi, Following up on the discussion below, I now have a patch. The patch extends make_sort_input_target() with a conservative rule: defer additional non-sort targetlist expressions past Sort only when doing so does not require carrying any additional Vars/PlaceHolderVars through Sort. This way, Sort input width never increases. This still allows cases like repeat(i::text, ...) ORDER BY i to be projected above Sort, while avoiding the md5(widecol) counterexample mentioned earlier, since such expressions are not deferred when they would force a wide non-sort column through Sort. One limitation remains: this can't help queries like 'SELECT repeat(i::text, ...) FROM t ORDER BY othercols;' where the output expression depends on Vars that are not sort keys. In that case we still have to carry i through the Sort to be able to compute the final targetlist, so the patch cannot avoid inflating Sort's input width (and may still evaluate repeat() before Sort, depending on the existing projection placement rules). The existing volatile/SRF/expensive behavior is unchanged (expensive exprs are still postponed once a post-sort projection is needed). I also added regression coverage (including an md5(widecol)-style case). Some existing EXPLAIN outputs (e.g. join/groupingsets) now show a Result above Sort, which is expected from postponing additional non-sort outputs. Patch attached. Comments welcome. -- Best regards, Chengpeng Yan --_000_3F7BA12C71584E78A8F8A17FE5F6CCF0Outlookcom_ Content-Type: text/html; charset="us-ascii" Content-ID: Content-Transfer-Encoding: quoted-printable
Hi,

Following up on the discussion below, I now have a patch.

The patch extends make_sort_input_target() with a conservative rule:
defer additional non-sort targetlist expressions past Sort only when
doing so does not require carrying any additional Vars/PlaceHolderVars
through Sort. This way, Sort input width never increases.

This still allows cases like repeat(i::text, ...) ORDER BY i to be
projected above Sort, while avoiding the md5(widecol) counterexample
mentioned earlier, since such expressions are not deferred when they
would force a wide non-sort column through Sort.

One limitation remains: this can't help queries like
'SELECT repeat(i::text, ...) FROM t ORDER BY othercols;'
where the output expression depends on Vars that are not sort keys. In
that case we still have to carry i through the Sort to be able to
compute the final targetlist, so the patch cannot avoid inflating Sort's input width (and may still evaluate repeat() before Sort, depending on
the existing projection placement rules).

The existing volatile/SRF/expensive behavior is unchanged (expensive
exprs are still postponed once a post-sort projection is needed).

I also added regression coverage (including an md5(widecol)-style case). Some existing EXPLAIN outputs (e.g. join/groupingsets) now show a Result above Sort, which is expected from postponing additional non-sort
outputs.

Patch attached. Comments welcome.

--
Best regards,
Chengpeng Yan
--_000_3F7BA12C71584E78A8F8A17FE5F6CCF0Outlookcom_-- --_004_3F7BA12C71584E78A8F8A17FE5F6CCF0Outlookcom_ Content-Type: application/octet-stream; name="v1-0001-planner-postpone-some-non-sort-output-expressions.patch" Content-Description: v1-0001-planner-postpone-some-non-sort-output-expressions.patch Content-Disposition: attachment; filename="v1-0001-planner-postpone-some-non-sort-output-expressions.patch"; size=20312; creation-date="Sat, 07 Feb 2026 12:46:09 GMT"; modification-date="Sat, 07 Feb 2026 12:46:09 GMT" Content-ID: <3DC6C4BA03C85F46BEDCD87145D1F454@jpnprd01.prod.outlook.com> Content-Transfer-Encoding: base64 RnJvbSBhZDBjNWMyM2E2YjA3ZmU1Mzc2YjBhM2MwNDI0MjNkY2YzZTY3OWQ1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBDaGVuZ3BlbmcgWWFuIDxjaGVuZ3BlbmdfeWFuQG91dGxvb2su Y29tPgpEYXRlOiBTYXQsIDcgRmViIDIwMjYgMjA6MjE6MjcgKzA4MDAKU3ViamVjdDogW1BBVENI IHYxXSBwbGFubmVyOiBwb3N0cG9uZSBzb21lIG5vbi1zb3J0IG91dHB1dCBleHByZXNzaW9ucyBw YXN0CiBTb3J0CgpBbGxvdyBtYWtlX3NvcnRfaW5wdXRfdGFyZ2V0KCkgdG8gcG9zdHBvbmUgYWRk aXRpb25hbCBub24tc29ydAp0YXJnZXRsaXN0IGV4cHJlc3Npb25zIHdoZW4gZG9pbmcgc28gZG9l c24ndCByZXF1aXJlIGNhcnJ5aW5nIGFueQphZGRpdGlvbmFsIFZhcnMgb3IgUGxhY2VIb2xkZXJW YXJzIHRocm91Z2ggdGhlIFNvcnQuICBUaGlzIGtlZXBzIHRoZQpzb3J0IGlucHV0IG5vIHdpZGVy LCBhbmQgY2FuIGF2b2lkIGV2YWx1YXRpbmcgb3V0cHV0IGV4cHJlc3Npb25zIGZvcgpyb3dzIHRo YXQgYXJlIG5ldmVyIHJldHVybmVkIHVuZGVyIExJTUlULgotLS0KIHNyYy9iYWNrZW5kL29wdGlt aXplci9wbGFuL3BsYW5uZXIuYyAgICAgICB8IDEyMSArKysrKysrKysrKysrKysrKysrKy0KIHNy Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ3JvdXBpbmdzZXRzLm91dCB8ICA5OSArKysrKysrKyst LS0tLS0tLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qb2luLm91dCAgICAgICAgIHwgICA5 ICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2xpbWl0Lm91dCAgICAgICAgfCAgNTEgKysr KysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3R1cGxlc29ydC5vdXQgICAgfCAgNDIg KysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvbGltaXQuc3FsICAgICAgICAgICAgIHwgIDI2 ICsrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC90dXBsZXNvcnQuc3FsICAgICAgICAgfCAgMjAg KysrKwogNyBmaWxlcyBjaGFuZ2VkLCAzMTUgaW5zZXJ0aW9ucygrKSwgNTMgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jIGIvc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCmluZGV4IDc1N2JkYzdiMWRlLi40OWQw NTY4ZDAxYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5j CisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwpAQCAtNjQ0NCw2ICs2 NDQ0LDExIEBAIG1ha2VfcGF0aGtleXNfZm9yX3dpbmRvdyhQbGFubmVySW5mbyAqcm9vdCwgV2lu ZG93Q2xhdXNlICp3YywKICAqIGFueSB2b2xhdGlsZSBvciBzZXQtcmV0dXJuaW5nIGV4cHJlc3Np b25zIChzaW5jZSBvbmNlIHdlJ3ZlIHB1dCBpbiBhCiAgKiBwcm9qZWN0aW9uIGF0IGFsbCwgaXQg d29uJ3QgY29zdCBhbnkgbW9yZSB0byBwb3N0cG9uZSBtb3JlIHN0dWZmKS4KICAqCisgKiBXZSBj YW4gYWxzbyBwb3N0cG9uZSBzb21lIGFkZGl0aW9uYWwgbm9uLXNvcnQgb3V0cHV0IGV4cHJlc3Np b25zIHdoZW4gZG9pbmcKKyAqIHNvIHdvdWxkIG5vdCByZXF1aXJlIGNhcnJ5aW5nIGFueSBhZGRp dGlvbmFsIFZhcnMvUGxhY2VIb2xkZXJWYXJzIHRocm91Z2gKKyAqIHRoZSBTb3J0LiAgVGhpcyBr ZWVwcyB0aGUgc29ydCBpbnB1dCBubyB3aWRlciwgYW5kIGNhbiBhdm9pZCBldmFsdWF0aW5nCisg KiBvdXRwdXQgZXhwcmVzc2lvbnMgZm9yIHJvd3MgdGhhdCBhcmUgbmV2ZXIgcmV0dXJuZWQgdW5k ZXIgTElNSVQuCisgKgogICogQW5vdGhlciBpc3N1ZSB0aGF0IGNvdWxkIHBvdGVudGlhbGx5IGJl IGNvbnNpZGVyZWQgaGVyZSBpcyB0aGF0CiAgKiBldmFsdWF0aW5nIHRsaXN0IGV4cHJlc3Npb25z IGNvdWxkIHJlc3VsdCBpbiBkYXRhIHRoYXQncyBlaXRoZXIgd2lkZXIKICAqIG9yIG5hcnJvd2Vy IHRoYW4gdGhlIGlucHV0IFZhcnMsIHRodXMgY2hhbmdpbmcgdGhlIHZvbHVtZSBvZiBkYXRhIHRo YXQKQEAgLTY0ODQsMTIgKzY0ODksMTQgQEAgbWFrZV9zb3J0X2lucHV0X3RhcmdldChQbGFubmVy SW5mbyAqcm9vdCwKIAlQYXRoVGFyZ2V0ICppbnB1dF90YXJnZXQ7CiAJaW50CQkJbmNvbHM7CiAJ Ym9vbAkgICAqY29sX2lzX3NyZjsKKwlib29sCSAgICpjb2xfaXNfZXhwZW5zaXZlOwogCWJvb2wJ ICAgKnBvc3Rwb25lX2NvbDsKIAlib29sCQloYXZlX3NyZjsKIAlib29sCQloYXZlX3ZvbGF0aWxl OwogCWJvb2wJCWhhdmVfZXhwZW5zaXZlOwogCWJvb2wJCWhhdmVfc3JmX3NvcnRjb2xzOwogCWJv b2wJCXBvc3Rwb25lX3NyZnM7CisJYm9vbAkJaGF2ZV9zYWZlX3Bvc3Rwb25lOwogCUxpc3QJICAg KnBvc3Rwb25hYmxlX2NvbHM7CiAJTGlzdAkgICAqcG9zdHBvbmFibGVfdmFyczsKIAlpbnQJCQlp OwpAQCAtNjUwMyw4ICs2NTEwLDEwIEBAIG1ha2Vfc29ydF9pbnB1dF90YXJnZXQoUGxhbm5lcklu Zm8gKnJvb3QsCiAJLyogSW5zcGVjdCB0bGlzdCBhbmQgY29sbGVjdCBwZXItY29sdW1uIGluZm9y bWF0aW9uICovCiAJbmNvbHMgPSBsaXN0X2xlbmd0aChmaW5hbF90YXJnZXQtPmV4cHJzKTsKIAlj b2xfaXNfc3JmID0gKGJvb2wgKikgcGFsbG9jMChuY29scyAqIHNpemVvZihib29sKSk7CisJY29s X2lzX2V4cGVuc2l2ZSA9IChib29sICopIHBhbGxvYzAobmNvbHMgKiBzaXplb2YoYm9vbCkpOwog CXBvc3Rwb25lX2NvbCA9IChib29sICopIHBhbGxvYzAobmNvbHMgKiBzaXplb2YoYm9vbCkpOwog CWhhdmVfc3JmID0gaGF2ZV92b2xhdGlsZSA9IGhhdmVfZXhwZW5zaXZlID0gaGF2ZV9zcmZfc29y dGNvbHMgPSBmYWxzZTsKKwloYXZlX3NhZmVfcG9zdHBvbmUgPSBmYWxzZTsKIAogCWkgPSAwOwog CWZvcmVhY2gobGMsIGZpbmFsX3RhcmdldC0+ZXhwcnMpCkBAIC02NTU2LDcgKzY1NjUsNyBAQCBt YWtlX3NvcnRfaW5wdXRfdGFyZ2V0KFBsYW5uZXJJbmZvICpyb290LAogCQkJCSAqLwogCQkJCWlm IChjb3N0LnBlcl90dXBsZSA+IDEwICogY3B1X29wZXJhdG9yX2Nvc3QpCiAJCQkJewotCQkJCQlw b3N0cG9uZV9jb2xbaV0gPSB0cnVlOworCQkJCQljb2xfaXNfZXhwZW5zaXZlW2ldID0gdHJ1ZTsK IAkJCQkJaGF2ZV9leHBlbnNpdmUgPSB0cnVlOwogCQkJCX0KIAkJCX0KQEAgLTY1NzgsMTIgKzY1 ODcsMTIwIEBAIG1ha2Vfc29ydF9pbnB1dF90YXJnZXQoUGxhbm5lckluZm8gKnJvb3QsCiAJICov CiAJcG9zdHBvbmVfc3JmcyA9IChoYXZlX3NyZiAmJiAhaGF2ZV9zcmZfc29ydGNvbHMpOwogCisJ LyoKKwkgKiBLZWVwIHRoZSBoaXN0b3JpY2FsIGV4cGVuc2l2ZS1leHByZXNzaW9uIHBvbGljeTog b25jZSB3ZSdyZSBhZGRpbmcgYQorCSAqIHBvc3Qtc29ydCBwcm9qZWN0aW9uIGZvciBhbnkgcmVh c29uLCBwb3N0cG9uZSBhbGwgZXhwZW5zaXZlCisJICogZXhwcmVzc2lvbnMuCisJICovCisJaWYg KHBvc3Rwb25lX3NyZnMgfHwgaGF2ZV92b2xhdGlsZSB8fAorCQkoaGF2ZV9leHBlbnNpdmUgJiYg KHBhcnNlLT5saW1pdENvdW50IHx8IHJvb3QtPnR1cGxlX2ZyYWN0aW9uID4gMCkpKQorCXsKKwkJ aSA9IDA7CisJCWZvcmVhY2gobGMsIGZpbmFsX3RhcmdldC0+ZXhwcnMpCisJCXsKKwkJCWlmIChj b2xfaXNfZXhwZW5zaXZlW2ldKQorCQkJCXBvc3Rwb25lX2NvbFtpXSA9IHRydWU7CisJCQlpKys7 CisJCX0KKwl9CisKKwkvKgorCSAqIFdlIGNhbiBwb3N0cG9uZSBzb21lIGFkZGl0aW9uYWwgbm9u LXNvcnQgb3V0cHV0IGV4cHJlc3Npb25zIGlmIGRvaW5nIHNvCisJICogZG9lc24ndCByZXF1aXJl IGNhcnJ5aW5nIGFueSBleHRyYSBWYXJzL1BsYWNlSG9sZGVyVmFycyB0aHJvdWdoIHRoZQorCSAq IFNvcnQuCisJICovCisJeworCQlMaXN0CSAgICpyZXF1aXJlZF9leHBycyA9IE5JTDsKKwkJTGlz dAkgICAqYmFzZV9wb3N0cG9uYWJsZV9jb2xzID0gTklMOworCQlMaXN0CSAgICpiYXNlX3Bvc3Rw b25hYmxlX3ZhcnM7CisJCUxpc3QJICAgKnJlcXVpcmVkX2JlZm9yZV9zb3J0OworCQlpbnQJCQlq OworCisJCS8qCisJCSAqIEJ1aWxkIHRoZSBzZXQgb2YgZXhwcmVzc2lvbnMgdGhhdCB3aWxsIGFs cmVhZHkgYmUgY2FycmllZCB0aHJvdWdoCisJCSAqIHRoZSBTb3J0OiBub24tcG9zdHBvbmVkIGNv bHVtbnMsIHBsdXMgVmFycy9QSFZzIGV0YyBuZWVkZWQgZm9yCisJCSAqIGFscmVhZHktcG9zdHBv bmVkIGNvbHVtbnMuCisJCSAqLworCQlqID0gMDsKKwkJZm9yZWFjaChsYywgZmluYWxfdGFyZ2V0 LT5leHBycykKKwkJeworCQkJRXhwcgkgICAqZXhwciA9IChFeHByICopIGxmaXJzdChsYyk7CisK KwkJCWlmIChwb3N0cG9uZV9jb2xbal0gfHwgKHBvc3Rwb25lX3NyZnMgJiYgY29sX2lzX3NyZltq XSkpCisJCQkJYmFzZV9wb3N0cG9uYWJsZV9jb2xzID0gbGFwcGVuZChiYXNlX3Bvc3Rwb25hYmxl X2NvbHMsIGV4cHIpOworCQkJZWxzZQorCQkJCXJlcXVpcmVkX2V4cHJzID0gbGFwcGVuZChyZXF1 aXJlZF9leHBycywgZXhwcik7CisKKwkJCWorKzsKKwkJfQorCisJCWJhc2VfcG9zdHBvbmFibGVf dmFycyA9IHB1bGxfdmFyX2NsYXVzZSgoTm9kZSAqKSBiYXNlX3Bvc3Rwb25hYmxlX2NvbHMsCisJ CQkJCQkJCQkJCQlQVkNfSU5DTFVERV9BR0dSRUdBVEVTIHwKKwkJCQkJCQkJCQkJCVBWQ19JTkNM VURFX1dJTkRPV0ZVTkNTIHwKKwkJCQkJCQkJCQkJCVBWQ19JTkNMVURFX1BMQUNFSE9MREVSUyk7 CisJCXJlcXVpcmVkX2JlZm9yZV9zb3J0ID0gbGlzdF91bmlvbihyZXF1aXJlZF9leHBycywgYmFz ZV9wb3N0cG9uYWJsZV92YXJzKTsKKworCQkvKgorCQkgKiBNYXJrIGFueSBzYWZlLXRvLXBvc3Rw b25lIGNvbHVtbnMuICBXZSBpZ25vcmUgc2ltcGxlIFZhcnMvQWdncmVmcy8KKwkJICogV2luZG93 RnVuY3MvUEhWcyBiZWNhdXNlIHBvc3Rwb25pbmcgdGhlbSB3b3VsZCBub3QgYXZvaWQgYW55IHdv cmsuCisJCSAqLworCQlqID0gMDsKKwkJZm9yZWFjaChsYywgZmluYWxfdGFyZ2V0LT5leHBycykK KwkJeworCQkJRXhwcgkgICAqZXhwciA9IChFeHByICopIGxmaXJzdChsYyk7CisJCQlMaXN0CSAg ICpleHByX3ZhcnM7CisJCQlMaXN0Q2VsbCAgICpsYzI7CisJCQlib29sCQlzYWZlID0gdHJ1ZTsK KworCQkJaWYgKHBvc3Rwb25lX2NvbFtqXSB8fCAocG9zdHBvbmVfc3JmcyAmJiBjb2xfaXNfc3Jm W2pdKSB8fAorCQkJCWNvbF9pc19zcmZbal0gfHwKKwkJCQlnZXRfcGF0aHRhcmdldF9zb3J0Z3Jv dXByZWYoZmluYWxfdGFyZ2V0LCBqKSAhPSAwIHx8CisJCQkJSXNBKGV4cHIsIFZhcikgfHwKKwkJ CQlJc0EoZXhwciwgQWdncmVmKSB8fAorCQkJCUlzQShleHByLCBXaW5kb3dGdW5jKSB8fAorCQkJ CUlzQShleHByLCBQbGFjZUhvbGRlclZhcikpCisJCQl7CisJCQkJaisrOworCQkJCWNvbnRpbnVl OworCQkJfQorCisJCQlleHByX3ZhcnMgPSBwdWxsX3Zhcl9jbGF1c2UoKE5vZGUgKikgZXhwciwK KwkJCQkJCQkJCQlQVkNfSU5DTFVERV9BR0dSRUdBVEVTIHwKKwkJCQkJCQkJCQlQVkNfSU5DTFVE RV9XSU5ET1dGVU5DUyB8CisJCQkJCQkJCQkJUFZDX0lOQ0xVREVfUExBQ0VIT0xERVJTKTsKKwkJ CWZvcmVhY2gobGMyLCBleHByX3ZhcnMpCisJCQl7CisJCQkJaWYgKCFsaXN0X21lbWJlcihyZXF1 aXJlZF9iZWZvcmVfc29ydCwgbGZpcnN0KGxjMikpKQorCQkJCXsKKwkJCQkJc2FmZSA9IGZhbHNl OworCQkJCQlicmVhazsKKwkJCQl9CisJCQl9CisKKwkJCWlmIChzYWZlKQorCQkJeworCQkJCXBv c3Rwb25lX2NvbFtqXSA9IHRydWU7CisJCQkJaGF2ZV9zYWZlX3Bvc3Rwb25lID0gdHJ1ZTsKKwkJ CX0KKworCQkJbGlzdF9mcmVlKGV4cHJfdmFycyk7CisJCQlqKys7CisJCX0KKworCQkvKiBjbGVh biB1cCBjcnVmdCAqLworCQlsaXN0X2ZyZWUocmVxdWlyZWRfYmVmb3JlX3NvcnQpOworCQlsaXN0 X2ZyZWUoYmFzZV9wb3N0cG9uYWJsZV92YXJzKTsKKwkJbGlzdF9mcmVlKGJhc2VfcG9zdHBvbmFi bGVfY29scyk7CisJCWxpc3RfZnJlZShyZXF1aXJlZF9leHBycyk7CisJfQorCiAJLyoKIAkgKiBJ ZiB3ZSBkb24ndCBuZWVkIGEgcG9zdC1zb3J0IHByb2plY3Rpb24sIGp1c3QgcmV0dXJuIGZpbmFs X3RhcmdldC4KIAkgKi8KIAlpZiAoIShwb3N0cG9uZV9zcmZzIHx8IGhhdmVfdm9sYXRpbGUgfHwK IAkJICAoaGF2ZV9leHBlbnNpdmUgJiYKLQkJICAgKHBhcnNlLT5saW1pdENvdW50IHx8IHJvb3Qt PnR1cGxlX2ZyYWN0aW9uID4gMCkpKSkKKwkJICAgKHBhcnNlLT5saW1pdENvdW50IHx8IHJvb3Qt PnR1cGxlX2ZyYWN0aW9uID4gMCkpIHx8CisJCSAgaGF2ZV9zYWZlX3Bvc3Rwb25lKSkKIAkJcmV0 dXJuIGZpbmFsX3RhcmdldDsKIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL2dyb3VwaW5nc2V0cy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2dyb3Vw aW5nc2V0cy5vdXQKaW5kZXggOTIxMDE3NDg5YzAuLjVkNDc1OTUyMWE3IDEwMDY0NAotLS0gYS9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2dyb3VwaW5nc2V0cy5vdXQKKysrIGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9ncm91cGluZ3NldHMub3V0CkBAIC05NzIsMTkgKzk3MiwyMCBAQCBz ZWxlY3Qgdi5jLCAoc2VsZWN0IGNvdW50KCopIGZyb20gZ3N0ZXN0MiBncm91cCBieSAoKSBoYXZp bmcgdi5jKQogZXhwbGFpbiAoY29zdHMgb2ZmKQogICBzZWxlY3Qgdi5jLCAoc2VsZWN0IGNvdW50 KCopIGZyb20gZ3N0ZXN0MiBncm91cCBieSAoKSBoYXZpbmcgdi5jKQogICAgIGZyb20gKHZhbHVl cyAoZmFsc2UpLCh0cnVlKSkgdihjKSBvcmRlciBieSB2LmM7Ci0gICAgICAgICAgICAgICAgICAg ICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBTb3J0Ci0gICBT b3J0IEtleTogIipWQUxVRVMqIi5jb2x1bW4xCi0gICAtPiAgVmFsdWVzIFNjYW4gb24gIipWQUxV RVMqIgotICAgICAgICAgU3ViUGxhbiBleHByXzEKLSAgICAgICAgICAgLT4gIEFnZ3JlZ2F0ZQot ICAgICAgICAgICAgICAgICBHcm91cCBLZXk6ICgpCi0gICAgICAgICAgICAgICAgIEZpbHRlcjog IipWQUxVRVMqIi5jb2x1bW4xCi0gICAgICAgICAgICAgICAgIC0+ICBSZXN1bHQKLSAgICAgICAg ICAgICAgICAgICAgICAgT25lLVRpbWUgRmlsdGVyOiAiKlZBTFVFUyoiLmNvbHVtbjEKLSAgICAg ICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGdzdGVzdDIKLSgxMCByb3dzKQorICAg ICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgUmVzdWx0 CisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6ICIqVkFMVUVTKiIuY29sdW1uMQorICAg ICAgICAgLT4gIFZhbHVlcyBTY2FuIG9uICIqVkFMVUVTKiIKKyAgIFN1YlBsYW4gZXhwcl8xCisg ICAgIC0+ICBBZ2dyZWdhdGUKKyAgICAgICAgICAgR3JvdXAgS2V5OiAoKQorICAgICAgICAgICBG aWx0ZXI6ICIqVkFMVUVTKiIuY29sdW1uMQorICAgICAgICAgICAtPiAgUmVzdWx0CisgICAgICAg ICAgICAgICAgIE9uZS1UaW1lIEZpbHRlcjogIipWQUxVRVMqIi5jb2x1bW4xCisgICAgICAgICAg ICAgICAgIC0+ICBTZXEgU2NhbiBvbiBnc3Rlc3QyCisoMTEgcm93cykKIAogLS0gdGVzdCBwdXNo ZG93biBvZiBub24tZGVnZW5lcmF0ZSBIQVZJTkcgY2xhdXNlIHRoYXQgZG9lcyBub3QgcmVmZXJl bmNlIGFueQogLS0gY29sdW1ucyB0aGF0IGFyZSBudWxsYWJsZSBieSBncm91cGluZyBzZXRzCkBA IC0yMzk4LDI0ICsyMzk5LDI2IEBAIG9yZGVyIGJ5IGNhc2Ugd2hlbiBncm91cGluZygoc2VsZWN0 IHQxLnYgZnJvbSBnc3Rlc3Q1IHQyIHdoZXJlIGlkID0gdDEuaWQpKSA9IDAKICAgICAgICAgICAg ICAgdGhlbiAoc2VsZWN0IHQxLnYgZnJvbSBnc3Rlc3Q1IHQyIHdoZXJlIGlkID0gdDEuaWQpCiAg ICAgICAgICAgICAgIGVsc2UgbnVsbCBlbmQKICAgICAgICAgIG51bGxzIGZpcnN0OwotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gU29ydAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgUmVzdWx0CiAgICBPdXRwdXQ6 IChHUk9VUElORygoU3ViUGxhbiBleHByXzEpKSksICgoU3ViUGxhbiBleHByXzMpKSwgKENBU0Ug V0hFTiAoR1JPVVBJTkcoKFN1YlBsYW4gZXhwcl8yKSkgPSAwKSBUSEVOICgoU3ViUGxhbiBleHBy XzMpKSBFTFNFIE5VTEw6OmludGVnZXIgRU5EKSwgdDEudgotICAgU29ydCBLZXk6IChDQVNFIFdI RU4gKEdST1VQSU5HKChTdWJQbGFuIGV4cHJfMikpID0gMCkgVEhFTiAoKFN1YlBsYW4gZXhwcl8z KSkgRUxTRSBOVUxMOjppbnRlZ2VyIEVORCkgTlVMTFMgRklSU1QKLSAgIC0+ICBIYXNoQWdncmVn YXRlCi0gICAgICAgICBPdXRwdXQ6IEdST1VQSU5HKChTdWJQbGFuIGV4cHJfMSkpLCAoKFN1YlBs YW4gZXhwcl8zKSksIENBU0UgV0hFTiAoR1JPVVBJTkcoKFN1YlBsYW4gZXhwcl8yKSkgPSAwKSBU SEVOICgoU3ViUGxhbiBleHByXzMpKSBFTFNFIE5VTEw6OmludGVnZXIgRU5ELCB0MS52Ci0gICAg ICAgICBIYXNoIEtleTogdDEudgotICAgICAgICAgSGFzaCBLZXk6IChTdWJQbGFuIGV4cHJfMykK LSAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwZ190ZW1wLmdzdGVzdDUgdDEKLSAgICAgICAgICAg ICAgIE91dHB1dDogKFN1YlBsYW4gZXhwcl8zKSwgdDEudiwgdDEuaWQKLSAgICAgICAgICAgICAg IFN1YlBsYW4gZXhwcl8zCi0gICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9u IHBnX3RlbXAuZ3N0ZXN0NSB0MgotICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLnYK LSAgICAgICAgICAgICAgICAgICAgICAgUmVjaGVjayBDb25kOiAodDIuaWQgPSB0MS5pZCkKLSAg ICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIGdzdGVzdDVfcGtl eQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodDIuaWQgPSB0MS5p ZCkKLSgxNSByb3dzKQorICAgLT4gIFNvcnQKKyAgICAgICAgIE91dHB1dDogKChTdWJQbGFuIGV4 cHJfMykpLCAoQ0FTRSBXSEVOIChHUk9VUElORygoU3ViUGxhbiBleHByXzIpKSA9IDApIFRIRU4g KChTdWJQbGFuIGV4cHJfMykpIEVMU0UgTlVMTDo6aW50ZWdlciBFTkQpLCB0MS52LCAoR1JPVVBJ TkcoKFN1YlBsYW4gZXhwcl8xKSkpCisgICAgICAgICBTb3J0IEtleTogKENBU0UgV0hFTiAoR1JP VVBJTkcoKFN1YlBsYW4gZXhwcl8yKSkgPSAwKSBUSEVOICgoU3ViUGxhbiBleHByXzMpKSBFTFNF IE5VTEw6OmludGVnZXIgRU5EKSBOVUxMUyBGSVJTVAorICAgICAgICAgLT4gIEhhc2hBZ2dyZWdh dGUKKyAgICAgICAgICAgICAgIE91dHB1dDogKChTdWJQbGFuIGV4cHJfMykpLCBDQVNFIFdIRU4g KEdST1VQSU5HKChTdWJQbGFuIGV4cHJfMikpID0gMCkgVEhFTiAoKFN1YlBsYW4gZXhwcl8zKSkg RUxTRSBOVUxMOjppbnRlZ2VyIEVORCwgdDEudiwgR1JPVVBJTkcoKFN1YlBsYW4gZXhwcl8xKSkK KyAgICAgICAgICAgICAgIEhhc2ggS2V5OiB0MS52CisgICAgICAgICAgICAgICBIYXNoIEtleTog KFN1YlBsYW4gZXhwcl8zKQorICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHBnX3RlbXAu Z3N0ZXN0NSB0MQorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiAoU3ViUGxhbiBleHByXzMp LCB0MS52LCB0MS5pZAorICAgICAgICAgICAgICAgICAgICAgU3ViUGxhbiBleHByXzMKKyAgICAg ICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gcGdfdGVtcC5nc3Rlc3Q1 IHQyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDEudgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBSZWNoZWNrIENvbmQ6ICh0Mi5pZCA9IHQxLmlkKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gZ3N0ZXN0NV9w a2V5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh0Mi5p ZCA9IHQxLmlkKQorKDE3IHJvd3MpCiAKIHNlbGVjdCBncm91cGluZygoc2VsZWN0IHQxLnYgZnJv bSBnc3Rlc3Q1IHQyIHdoZXJlIGlkID0gdDEuaWQpKSwKICAgICAgICAoc2VsZWN0IHQxLnYgZnJv bSBnc3Rlc3Q1IHQyIHdoZXJlIGlkID0gdDEuaWQpIGFzIHMKQEAgLTI0NDgsMjQgKzI0NTEsMjYg QEAgc2VsZWN0IGdyb3VwaW5nKChzZWxlY3QgdDEudiBmcm9tIGdzdGVzdDUgdDIgd2hlcmUgaWQg PSB0MS5pZCkpLAogZnJvbSBnc3Rlc3Q1IHQxCiBncm91cCBieSBncm91cGluZyBzZXRzKHYsIHMp CiBvcmRlciBieSBvIG51bGxzIGZpcnN0OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCi0gU29ydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgUmVzdWx0CiAgICBPdXRwdXQ6IChHUk9VUElORygoU3ViUGxhbiBleHBy XzEpKSksICgoU3ViUGxhbiBleHByXzMpKSwgKENBU0UgV0hFTiAoR1JPVVBJTkcoKFN1YlBsYW4g ZXhwcl8yKSkgPSAwKSBUSEVOICgoU3ViUGxhbiBleHByXzMpKSBFTFNFIE5VTEw6OmludGVnZXIg RU5EKSwgdDEudgotICAgU29ydCBLZXk6IChDQVNFIFdIRU4gKEdST1VQSU5HKChTdWJQbGFuIGV4 cHJfMikpID0gMCkgVEhFTiAoKFN1YlBsYW4gZXhwcl8zKSkgRUxTRSBOVUxMOjppbnRlZ2VyIEVO RCkgTlVMTFMgRklSU1QKLSAgIC0+ICBIYXNoQWdncmVnYXRlCi0gICAgICAgICBPdXRwdXQ6IEdS T1VQSU5HKChTdWJQbGFuIGV4cHJfMSkpLCAoKFN1YlBsYW4gZXhwcl8zKSksIENBU0UgV0hFTiAo R1JPVVBJTkcoKFN1YlBsYW4gZXhwcl8yKSkgPSAwKSBUSEVOICgoU3ViUGxhbiBleHByXzMpKSBF TFNFIE5VTEw6OmludGVnZXIgRU5ELCB0MS52Ci0gICAgICAgICBIYXNoIEtleTogdDEudgotICAg ICAgICAgSGFzaCBLZXk6IChTdWJQbGFuIGV4cHJfMykKLSAgICAgICAgIC0+ICBTZXEgU2NhbiBv biBwZ190ZW1wLmdzdGVzdDUgdDEKLSAgICAgICAgICAgICAgIE91dHB1dDogKFN1YlBsYW4gZXhw cl8zKSwgdDEudiwgdDEuaWQKLSAgICAgICAgICAgICAgIFN1YlBsYW4gZXhwcl8zCi0gICAgICAg ICAgICAgICAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIHBnX3RlbXAuZ3N0ZXN0NSB0MgotICAg ICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLnYKLSAgICAgICAgICAgICAgICAgICAgICAg UmVjaGVjayBDb25kOiAodDIuaWQgPSB0MS5pZCkKLSAgICAgICAgICAgICAgICAgICAgICAgLT4g IEJpdG1hcCBJbmRleCBTY2FuIG9uIGdzdGVzdDVfcGtleQotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBJbmRleCBDb25kOiAodDIuaWQgPSB0MS5pZCkKLSgxNSByb3dzKQorICAgLT4gIFNv cnQKKyAgICAgICAgIE91dHB1dDogKChTdWJQbGFuIGV4cHJfMykpLCAoQ0FTRSBXSEVOIChHUk9V UElORygoU3ViUGxhbiBleHByXzIpKSA9IDApIFRIRU4gKChTdWJQbGFuIGV4cHJfMykpIEVMU0Ug TlVMTDo6aW50ZWdlciBFTkQpLCB0MS52LCAoR1JPVVBJTkcoKFN1YlBsYW4gZXhwcl8xKSkpCisg ICAgICAgICBTb3J0IEtleTogKENBU0UgV0hFTiAoR1JPVVBJTkcoKFN1YlBsYW4gZXhwcl8yKSkg PSAwKSBUSEVOICgoU3ViUGxhbiBleHByXzMpKSBFTFNFIE5VTEw6OmludGVnZXIgRU5EKSBOVUxM UyBGSVJTVAorICAgICAgICAgLT4gIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIE91dHB1 dDogKChTdWJQbGFuIGV4cHJfMykpLCBDQVNFIFdIRU4gKEdST1VQSU5HKChTdWJQbGFuIGV4cHJf MikpID0gMCkgVEhFTiAoKFN1YlBsYW4gZXhwcl8zKSkgRUxTRSBOVUxMOjppbnRlZ2VyIEVORCwg dDEudiwgR1JPVVBJTkcoKFN1YlBsYW4gZXhwcl8xKSkKKyAgICAgICAgICAgICAgIEhhc2ggS2V5 OiB0MS52CisgICAgICAgICAgICAgICBIYXNoIEtleTogKFN1YlBsYW4gZXhwcl8zKQorICAgICAg ICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHBnX3RlbXAuZ3N0ZXN0NSB0MQorICAgICAgICAgICAg ICAgICAgICAgT3V0cHV0OiAoU3ViUGxhbiBleHByXzMpLCB0MS52LCB0MS5pZAorICAgICAgICAg ICAgICAgICAgICAgU3ViUGxhbiBleHByXzMKKyAgICAgICAgICAgICAgICAgICAgICAgLT4gIEJp dG1hcCBIZWFwIFNjYW4gb24gcGdfdGVtcC5nc3Rlc3Q1IHQyCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE91dHB1dDogdDEudgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWNo ZWNrIENvbmQ6ICh0Mi5pZCA9IHQxLmlkKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAt PiAgQml0bWFwIEluZGV4IFNjYW4gb24gZ3N0ZXN0NV9wa2V5CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh0Mi5pZCA9IHQxLmlkKQorKDE3IHJvd3MpCiAK IHNlbGVjdCBncm91cGluZygoc2VsZWN0IHQxLnYgZnJvbSBnc3Rlc3Q1IHQyIHdoZXJlIGlkID0g dDEuaWQpKSwKICAgICAgICAoc2VsZWN0IHQxLnYgZnJvbSBnc3Rlc3Q1IHQyIHdoZXJlIGlkID0g dDEuaWQpIGFzIHMsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pvaW4u b3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qb2luLm91dAppbmRleCBkMDVhMGNhMDM3 My4uZDFjYzk1MWFhZTMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvam9p bi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qb2luLm91dApAQCAtMjgxMCwx MiArMjgxMCwxMyBAQCBzZWxlY3QgY291bnQoKikgZnJvbQogICAgLT4gIE1lcmdlIExlZnQgSm9p bgogICAgICAgICAgTWVyZ2UgQ29uZDogKHgudGhvdXNhbmQgPSB5LnVuaXF1ZTIpCiAgICAgICAg ICBKb2luIEZpbHRlcjogKCh4LnR3b3Rob3VzYW5kID0geS5odW5kcmVkKSBBTkQgKHguZml2ZXRo b3VzID0geS51bmlxdWUyKSkKLSAgICAgICAgIC0+ICBTb3J0Ci0gICAgICAgICAgICAgICBTb3J0 IEtleTogeC50aG91c2FuZCwgeC50d290aG91c2FuZCwgeC5maXZldGhvdXMKLSAgICAgICAgICAg ICAgIC0+ICBTZXEgU2NhbiBvbiB0ZW5rMSB4CisgICAgICAgICAtPiAgUmVzdWx0CisgICAgICAg ICAgICAgICAtPiAgU29ydAorICAgICAgICAgICAgICAgICAgICAgU29ydCBLZXk6IHgudGhvdXNh bmQsIHgudHdvdGhvdXNhbmQsIHguZml2ZXRob3VzCisgICAgICAgICAgICAgICAgICAgICAtPiAg U2VxIFNjYW4gb24gdGVuazEgeAogICAgICAgICAgLT4gIE1hdGVyaWFsaXplCiAgICAgICAgICAg ICAgICAtPiAgSW5kZXggU2NhbiB1c2luZyB0ZW5rMV91bmlxdWUyIG9uIHRlbmsxIHkKLSg5IHJv d3MpCisoMTAgcm93cykKIAogc2VsZWN0IGNvdW50KCopIGZyb20KICAgKHNlbGVjdCAqIGZyb20g dGVuazEgeCBvcmRlciBieSB4LnRob3VzYW5kLCB4LnR3b3Rob3VzYW5kLCB4LmZpdmV0aG91cykg eApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9saW1pdC5vdXQgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2xpbWl0Lm91dAppbmRleCBlM2JjYzY4MDY1My4uN2UyOWYw OWM2OGYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvbGltaXQub3V0Cisr KyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvbGltaXQub3V0CkBAIC01NTUsNiArNTU1LDU3 IEBAIHNlbGVjdCBzdW0odGVudGhvdXMpIGFzIHMxLCBzdW0odGVudGhvdXMpICsgcmFuZG9tKCkq MCBhcyBzMgogIDQ1MDIwIHwgNDUwMjAKICgzIHJvd3MpCiAKKy0tCistLSBQb3N0cG9uZSBub24t c29ydCBvdXRwdXQgZXhwcmVzc2lvbnMgcGFzdCBTb3J0IHVuZGVyIExJTUlULCB3aGVuIGRvaW5n IHNvCistLSBkb2Vzbid0IHJlcXVpcmUgY2FycnlpbmcgYWRkaXRpb25hbCBjb2x1bW5zIHRocm91 Z2ggdGhlIFNvcnQuCistLQorZXhwbGFpbiAodmVyYm9zZSwgY29zdHMgb2ZmKQorc2VsZWN0IHJl cGVhdChnLmk6OnRleHQsIDEwMCkKKyAgZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKSBnKGkp CisgIG9yZGVyIGJ5IGcuaQorICBsaW1pdCAxMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIExpbWl0 CisgICBPdXRwdXQ6IChyZXBlYXQoKGkpOjp0ZXh0LCAxMDApKSwgaQorICAgLT4gIFJlc3VsdAor ICAgICAgICAgT3V0cHV0OiByZXBlYXQoKGkpOjp0ZXh0LCAxMDApLCBpCisgICAgICAgICAtPiAg U29ydAorICAgICAgICAgICAgICAgT3V0cHV0OiBpCisgICAgICAgICAgICAgICBTb3J0IEtleTog Zy5pCisgICAgICAgICAgICAgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBwZ19jYXRhbG9nLmdlbmVy YXRlX3NlcmllcyBnCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IGkKKyAgICAgICAgICAg ICAgICAgICAgIEZ1bmN0aW9uIENhbGw6IGdlbmVyYXRlX3NlcmllcygxLCAxMDApCisoMTAgcm93 cykKKworLS0KKy0tIERvbid0IHBvc3Rwb25lIGlmIHRoYXQgd291bGQgcmVxdWlyZSBjYXJyeWlu ZyBhIHdpZGUgY29sdW1uIHRocm91Z2gKKy0tIHRoZSBTb3J0LiAgVXNlIE1BVEVSSUFMSVpFRCB0 byBwcmV2ZW50IGlubGluaW5nLgorLS0KK2V4cGxhaW4gKHZlcmJvc2UsIGNvc3RzIG9mZikKK3dp dGggcyhpLCB3aWRlKSBhcyBtYXRlcmlhbGl6ZWQgKAorICBzZWxlY3QgaSwgcmVwZWF0KGk6OnRl eHQsIDEwMCkgYXMgd2lkZQorICAgIGZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMCkgZyhpKQor KQorc2VsZWN0IG1kNSh3aWRlKQorICBmcm9tIHMKKyAgb3JkZXIgYnkgaQorICBsaW1pdCAxMDsK KyAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBMaW1pdAorICAgT3V0cHV0OiAobWQ1KHMud2lkZSkpLCBzLmkKKyAgIENURSBzCisgICAgIC0+ ICBGdW5jdGlvbiBTY2FuIG9uIHBnX2NhdGFsb2cuZ2VuZXJhdGVfc2VyaWVzIGcKKyAgICAgICAg ICAgT3V0cHV0OiBnLmksIHJlcGVhdCgoZy5pKTo6dGV4dCwgMTAwKQorICAgICAgICAgICBGdW5j dGlvbiBDYWxsOiBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKQorICAgLT4gIFNvcnQKKyAgICAgICAg IE91dHB1dDogKG1kNShzLndpZGUpKSwgcy5pCisgICAgICAgICBTb3J0IEtleTogcy5pCisgICAg ICAgICAtPiAgQ1RFIFNjYW4gb24gcworICAgICAgICAgICAgICAgT3V0cHV0OiBtZDUocy53aWRl KSwgcy5pCisoMTEgcm93cykKKwogLS0KIC0tIEZFVENIIEZJUlNUCiAtLSBDaGVjayB0aGUgV0lU SCBUSUVTIGNsYXVzZQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90dXBs ZXNvcnQub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90dXBsZXNvcnQub3V0CmluZGV4 IDZkZDk3ZTc0MjdhLi4xYzE1YzZiMjFmYSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC90dXBsZXNvcnQub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdHVw bGVzb3J0Lm91dApAQCAtMzU2LDYgKzM1Niw0OCBAQCBPUkRFUiBCWSB2LmEgREVTQzsKICBhYWFh YWFhYWFhIHwgMQogKDIgcm93cykKIAorLS0tLQorLS0gVGVzdCBwb3N0cG9uaW5nIG5vbi1zb3J0 IG91dHB1dCBleHByZXNzaW9ucyBwYXN0IFNvcnQuCistLS0tCitFWFBMQUlOIChWRVJCT1NFLCBD T1NUUyBPRkYpCitTRUxFQ1QgcmVwZWF0KGcuaTo6dGV4dCwgMTAwKQorICBGUk9NIGdlbmVyYXRl X3NlcmllcygxLCAxMDApIGcoaSkKKyAgT1JERVIgQlkgZy5pOworICAgICAgICAgICAgICAgICAg ICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgUmVzdWx0Cisg ICBPdXRwdXQ6IHJlcGVhdCgoaSk6OnRleHQsIDEwMCksIGkKKyAgIC0+ICBTb3J0CisgICAgICAg ICBPdXRwdXQ6IGkKKyAgICAgICAgIFNvcnQgS2V5OiBnLmkKKyAgICAgICAgIC0+ICBGdW5jdGlv biBTY2FuIG9uIHBnX2NhdGFsb2cuZ2VuZXJhdGVfc2VyaWVzIGcKKyAgICAgICAgICAgICAgIE91 dHB1dDogaQorICAgICAgICAgICAgICAgRnVuY3Rpb24gQ2FsbDogZ2VuZXJhdGVfc2VyaWVzKDEs IDEwMCkKKyg4IHJvd3MpCisKKy0tIERvbid0IHBvc3Rwb25lIGlmIHRoYXQgd291bGQgcmVxdWly ZSBjYXJyeWluZyBhIHdpZGUgY29sdW1uIHRocm91Z2gKKy0tIHRoZSBzb3J0LiAgVXNlIE1BVEVS SUFMSVpFRCB0byBwcmV2ZW50IGlubGluaW5nLgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZG KQorV0lUSCBzKGksIHdpZGUpIEFTIE1BVEVSSUFMSVpFRCAoCisgIFNFTEVDVCBpLCByZXBlYXQo aTo6dGV4dCwgMTAwKSBBUyB3aWRlCisgICAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKSBn KGkpCispCitTRUxFQ1QgbWQ1KHdpZGUpCisgIEZST00gcworICBPUkRFUiBCWSBpOworICAgICAg ICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNvcnQK KyAgIE91dHB1dDogKG1kNShzLndpZGUpKSwgcy5pCisgICBTb3J0IEtleTogcy5pCisgICBDVEUg cworICAgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBwZ19jYXRhbG9nLmdlbmVyYXRlX3NlcmllcyBn CisgICAgICAgICAgIE91dHB1dDogZy5pLCByZXBlYXQoKGcuaSk6OnRleHQsIDEwMCkKKyAgICAg ICAgICAgRnVuY3Rpb24gQ2FsbDogZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMCkKKyAgIC0+ICBDVEUg U2NhbiBvbiBzCisgICAgICAgICBPdXRwdXQ6IG1kNShzLndpZGUpLCBzLmkKKyg5IHJvd3MpCisK IC0tLS0KIC0tIHRlc3QgZm9yd2FyZCBhbmQgYmFja3dhcmQgc2NhbnMgZm9yIGluLW1lbW9yeSBh bmQgZGlzayBiYXNlZCB0dXBsZXNvcnQKIC0tLS0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL2xpbWl0LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2xpbWl0LnNxbAppbmRleCA2 MDM5MTBmZTZkMS4uNDEzMjNmYmRhMWUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L2xpbWl0LnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9saW1pdC5zcWwKQEAgLTE1Miw2 ICsxNTIsMzIgQEAgc2VsZWN0IHN1bSh0ZW50aG91cykgYXMgczEsIHN1bSh0ZW50aG91cykgKyBy YW5kb20oKSowIGFzIHMyCiBzZWxlY3Qgc3VtKHRlbnRob3VzKSBhcyBzMSwgc3VtKHRlbnRob3Vz KSArIHJhbmRvbSgpKjAgYXMgczIKICAgZnJvbSB0ZW5rMSBncm91cCBieSB0aG91c2FuZCBvcmRl ciBieSB0aG91c2FuZCBsaW1pdCAzOwogCistLQorLS0gUG9zdHBvbmUgbm9uLXNvcnQgb3V0cHV0 IGV4cHJlc3Npb25zIHBhc3QgU29ydCB1bmRlciBMSU1JVCwgd2hlbiBkb2luZyBzbworLS0gZG9l c24ndCByZXF1aXJlIGNhcnJ5aW5nIGFkZGl0aW9uYWwgY29sdW1ucyB0aHJvdWdoIHRoZSBTb3J0 LgorLS0KKworZXhwbGFpbiAodmVyYm9zZSwgY29zdHMgb2ZmKQorc2VsZWN0IHJlcGVhdChnLmk6 OnRleHQsIDEwMCkKKyAgZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKSBnKGkpCisgIG9yZGVy IGJ5IGcuaQorICBsaW1pdCAxMDsKKworLS0KKy0tIERvbid0IHBvc3Rwb25lIGlmIHRoYXQgd291 bGQgcmVxdWlyZSBjYXJyeWluZyBhIHdpZGUgY29sdW1uIHRocm91Z2gKKy0tIHRoZSBTb3J0LiAg VXNlIE1BVEVSSUFMSVpFRCB0byBwcmV2ZW50IGlubGluaW5nLgorLS0KKworZXhwbGFpbiAodmVy Ym9zZSwgY29zdHMgb2ZmKQord2l0aCBzKGksIHdpZGUpIGFzIG1hdGVyaWFsaXplZCAoCisgIHNl bGVjdCBpLCByZXBlYXQoaTo6dGV4dCwgMTAwKSBhcyB3aWRlCisgICAgZnJvbSBnZW5lcmF0ZV9z ZXJpZXMoMSwgMTAwKSBnKGkpCispCitzZWxlY3QgbWQ1KHdpZGUpCisgIGZyb20gcworICBvcmRl ciBieSBpCisgIGxpbWl0IDEwOworCiAtLQogLS0gRkVUQ0ggRklSU1QKIC0tIENoZWNrIHRoZSBX SVRIIFRJRVMgY2xhdXNlCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC90dXBsZXNv cnQuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdHVwbGVzb3J0LnNxbAppbmRleCA4NDc2ZTU5 NGU2Yy4uZDYzZWM1NzZjNzMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3R1cGxl c29ydC5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdHVwbGVzb3J0LnNxbApAQCAtMTU1 LDYgKzE1NSwyNiBAQCBTRUxFQ1QgTEVGVChhLDEwKSxiIEZST00KICAgICAoVkFMVUVTKFJFUEVB VCgnYScsIDUxMiAqIDEwMjQpLDEpLChSRVBFQVQoJ2InLCA1MTIgKiAxMDI0KSwyKSkgdihhLGIp CiBPUkRFUiBCWSB2LmEgREVTQzsKIAorLS0tLQorLS0gVGVzdCBwb3N0cG9uaW5nIG5vbi1zb3J0 IG91dHB1dCBleHByZXNzaW9ucyBwYXN0IFNvcnQuCistLS0tCisKK0VYUExBSU4gKFZFUkJPU0Us IENPU1RTIE9GRikKK1NFTEVDVCByZXBlYXQoZy5pOjp0ZXh0LCAxMDApCisgIEZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDEwMCkgZyhpKQorICBPUkRFUiBCWSBnLmk7CisKKy0tIERvbid0IHBvc3Rw b25lIGlmIHRoYXQgd291bGQgcmVxdWlyZSBjYXJyeWluZyBhIHdpZGUgY29sdW1uIHRocm91Z2gK Ky0tIHRoZSBzb3J0LiAgVXNlIE1BVEVSSUFMSVpFRCB0byBwcmV2ZW50IGlubGluaW5nLgorRVhQ TEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorV0lUSCBzKGksIHdpZGUpIEFTIE1BVEVSSUFMSVpF RCAoCisgIFNFTEVDVCBpLCByZXBlYXQoaTo6dGV4dCwgMTAwKSBBUyB3aWRlCisgICAgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKSBnKGkpCispCitTRUxFQ1QgbWQ1KHdpZGUpCisgIEZST00g cworICBPUkRFUiBCWSBpOworCiAtLS0tCiAtLSB0ZXN0IGZvcndhcmQgYW5kIGJhY2t3YXJkIHNj YW5zIGZvciBpbi1tZW1vcnkgYW5kIGRpc2sgYmFzZWQgdHVwbGVzb3J0CiAtLS0tCi0tIAoyLjUw LjEgKEFwcGxlIEdpdC0xNTUpCgo= --_004_3F7BA12C71584E78A8F8A17FE5F6CCF0Outlookcom_--