Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1ibidt-0005ax-E3 for pgsql-hackers@arkaria.postgresql.org; Mon, 02 Dec 2019 10:09:21 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1ibids-0004jW-7M for pgsql-hackers@arkaria.postgresql.org; Mon, 02 Dec 2019 10:09:20 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1ibidr-0004jP-Hp for pgsql-hackers@lists.postgresql.org; Mon, 02 Dec 2019 10:09:19 +0000 Received: from courriel.mines-paristech.fr ([77.158.173.149] helo=antispam-1.ensmp.fr) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1ibidj-0001RT-2X for pgsql-hackers@lists.postgresql.org; Mon, 02 Dec 2019 10:09:18 +0000 Received: from smtp-5.mines-paristech.fr (smtp.mines-paristech.fr [77.158.173.146]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by antispam-1.ensmp.fr (antispam.mines-paristech.fr) with ESMTPS id 4D3FC55ED4; Mon, 2 Dec 2019 11:09:07 +0100 (CET) Received: from pseudopolis-wln.cri.ensmp.fr (sfr-14.cri.mines-paristech.fr [77.158.180.238]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp-5.mines-paristech.fr (Postfix) with ESMTPSA id 01C8C20067; Mon, 2 Dec 2019 11:09:06 +0100 (CET) Date: Mon, 2 Dec 2019 11:09:02 +0100 (CET) From: Fabien COELHO X-X-Sender: fabien@pseudo Reply-To: Fabien COELHO To: vignesh C cc: Alvaro Herrera , Kyotaro Horiguchi , daniel@manitou-mail.org, peter.eisentraut@2ndquadrant.com, iwata.aya@jp.fujitsu.com, PostgreSQL Developers Subject: Re: psql - add SHOW_ALL_RESULTS option In-Reply-To: Message-ID: References: <20190912193111.GA4044@alvherre.pgsql> User-Agent: Alpine 2.21 (DEB 202 2017-01-01) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="2056645051-466993053-1575281347=:26333" X-CLAMAV-SCAN: ok X-VRSPAM-SCORE: -100 X-VRSPAM-STATE: legit X-VRSPAM-CAUSE: gggruggvucftvghtrhhoucdtuddrgedufedrudejhedgudegucetufdoteggodetrfcurfhrohhfihhlvgemucggtfgfnhhsuhgsshgtrhhisggvnecuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjughrpeffhfhrvffujgfkfhgfgggtsehmtderredtredvnecuhfhrohhmpefhrggsihgvnhcuvefqgffnjffquceotghovghlhhhosegtrhhirdgvnhhsmhhprdhfrheqnecukfhppeejjedrudehkedrudektddrvdefkeenucfrrghrrghmpehmohguvgepshhmthhpohhuth X-VRSPAM-EXTCAUSE: mhhouggvpehsmhhtphhouhht List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --2056645051-466993053-1575281347=:26333 Content-Type: text/plain; charset=US-ASCII; format=flowed >> The below addition can be removed, it seems to be duplicate: > > Indeed. I'm unsure how this got into the patch, probably some rebase mix-up. > Attached v7 removes the duplicates. Attached patch v8 is a rebase. -- Fabien. --2056645051-466993053-1575281347=:26333 Content-Type: text/x-diff; name=psql-always-show-results-8.patch Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=psql-always-show-results-8.patch ZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL2V4cGVj dGVkL3BnX3N0YXRfc3RhdGVtZW50cy5vdXQgYi9jb250cmliL3BnX3N0YXRf c3RhdGVtZW50cy9leHBlY3RlZC9wZ19zdGF0X3N0YXRlbWVudHMub3V0DQpp bmRleCA2Nzg3ZWMxZWZkLi5kZTU5YTVjZjY1IDEwMDY0NA0KLS0tIGEvY29u dHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvZXhwZWN0ZWQvcGdfc3RhdF9zdGF0 ZW1lbnRzLm91dA0KKysrIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMv ZXhwZWN0ZWQvcGdfc3RhdF9zdGF0ZW1lbnRzLm91dA0KQEAgLTQ5LDE3ICs0 OSw0MiBAQCBCRUdJTiBcOw0KIFNFTEVDVCAyLjAgQVMgImZsb2F0IiBcOw0K IFNFTEVDVCAnd29ybGQnIEFTICJ0ZXh0IiBcOw0KIENPTU1JVDsNCisgZmxv YXQgDQorLS0tLS0tLQ0KKyAgIDIuMA0KKygxIHJvdykNCisNCisgdGV4dCAg DQorLS0tLS0tLQ0KKyB3b3JsZA0KKygxIHJvdykNCisNCiAtLSBjb21wb3Vu ZCB3aXRoIGVtcHR5IHN0YXRlbWVudHMgYW5kIHNwdXJpb3VzIGxlYWRpbmcg c3BhY2luZw0KLVw7XDsgICBTRUxFQ1QgMyArIDMgXDtcO1w7ICAgU0VMRUNU ICcgJyB8fCAnICEnIFw7XDsgICBTRUxFQ1QgMSArIDQgXDs7DQotID9jb2x1 bW4/IA0KLS0tLS0tLS0tLS0NCi0gICAgICAgIDUNCitcO1w7ICAgU0VMRUNU IDMgKyAzIEFTICIrIiBcO1w7XDsgICBTRUxFQ1QgJyAnIHx8ICcgIScgQVMg Inx8IiBcO1w7ICAgU0VMRUNUIDEgKyA0IEFTICIrIiBcOzsNCisgKyANCist LS0NCisgNg0KKygxIHJvdykNCisNCisgfHwgIA0KKy0tLS0tDQorICAgIQ0K KygxIHJvdykNCisNCisgKyANCistLS0NCisgNQ0KICgxIHJvdykNCiANCiAt LSBub24gOy10ZXJtaW5hdGVkIHN0YXRlbWVudHMNCiBTRUxFQ1QgMSArIDEg KyAxIEFTICJhZGQiIFxnc2V0DQogU0VMRUNUIDphZGQgKyAxICsgMSBBUyAi YWRkIiBcOw0KIFNFTEVDVCA6YWRkICsgMSArIDEgQVMgImFkZCIgXGdzZXQN CisgYWRkIA0KKy0tLS0tDQorICAgNQ0KKygxIHJvdykNCisNCiAtLSBzZXQg b3BlcmF0b3INCiBTRUxFQ1QgMSBBUyBpIFVOSU9OIFNFTEVDVCAyIE9SREVS IEJZIGk7DQogIGkgDQpAQCAtMTAyLDEyICsxMjcsMTIgQEAgU0VMRUNUIHF1 ZXJ5LCBjYWxscywgcm93cyBGUk9NIHBnX3N0YXRfc3RhdGVtZW50cyBPUkRF UiBCWSBxdWVyeSBDT0xMQVRFICJDIjsNCiAgU0VMRUNUICQxICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICt8ICAgICA0IHwgICAg NA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgK3wgICAgICAgfCANCiAgICBBUyAidGV4dCIgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwgDQotIFNF TEVDVCAkMSArICQyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgICAgMiB8ICAgIDINCiAgU0VMRUNUICQxICsgJDIgKyAkMyBBUyAi YWRkIiAgICAgICAgICAgICAgICAgICAgICB8ICAgICAzIHwgICAgMw0KKyBT RUxFQ1QgJDEgKyAkMiBBUyAiKyIgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgIDIgfCAgICAyDQogIFNFTEVDVCAkMSBBUyAiZmxvYXQiICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgMSB8ICAgIDENCiAg U0VMRUNUICQxIEFTICJpbnQiICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgICAyIHwgICAgMg0KICBTRUxFQ1QgJDEgQVMgaSBVTklPTiBT RUxFQ1QgJDIgT1JERVIgQlkgaSAgICAgICAgIHwgICAgIDEgfCAgICAyDQot IFNFTEVDVCAkMSB8fCAkMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgICAgMSB8ICAgIDENCisgU0VMRUNUICQxIHx8ICQyIEFTICJ8 fCIgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAxIHwgICAgMQ0K ICBTRUxFQ1QgcGdfc3RhdF9zdGF0ZW1lbnRzX3Jlc2V0KCkgICAgICAgICAg ICAgICAgIHwgICAgIDEgfCAgICAxDQogIFdJVEggdChmKSBBUyAoICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICArfCAgICAgMSB8ICAgIDIN CiAgICBWQUxVRVMgKCQxKSwgKCQyKSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICt8ICAgICAgIHwgDQpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19z dGF0X3N0YXRlbWVudHMvc3FsL3BnX3N0YXRfc3RhdGVtZW50cy5zcWwgYi9j b250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9zcWwvcGdfc3RhdF9zdGF0ZW1l bnRzLnNxbA0KaW5kZXggOGI1MjcwNzBkNC4uZWEzYTMxMTc2ZSAxMDA2NDQN Ci0tLSBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3NxbC9wZ19zdGF0 X3N0YXRlbWVudHMuc3FsDQorKysgYi9jb250cmliL3BnX3N0YXRfc3RhdGVt ZW50cy9zcWwvcGdfc3RhdF9zdGF0ZW1lbnRzLnNxbA0KQEAgLTI3LDcgKzI3 LDcgQEAgU0VMRUNUICd3b3JsZCcgQVMgInRleHQiIFw7DQogQ09NTUlUOw0K IA0KIC0tIGNvbXBvdW5kIHdpdGggZW1wdHkgc3RhdGVtZW50cyBhbmQgc3B1 cmlvdXMgbGVhZGluZyBzcGFjaW5nDQotXDtcOyAgIFNFTEVDVCAzICsgMyBc O1w7XDsgICBTRUxFQ1QgJyAnIHx8ICcgIScgXDtcOyAgIFNFTEVDVCAxICsg NCBcOzsNCitcO1w7ICAgU0VMRUNUIDMgKyAzIEFTICIrIiBcO1w7XDsgICBT RUxFQ1QgJyAnIHx8ICcgIScgQVMgInx8IiBcO1w7ICAgU0VMRUNUIDEgKyA0 IEFTICIrIiBcOzsNCiANCiAtLSBub24gOy10ZXJtaW5hdGVkIHN0YXRlbWVu dHMNCiBTRUxFQ1QgMSArIDEgKyAxIEFTICJhZGQiIFxnc2V0DQpkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9wc3FsLXJlZi5zZ21sIGIvZG9jL3Ny Yy9zZ21sL3JlZi9wc3FsLXJlZi5zZ21sDQppbmRleCA0OGIwODFmZDU4Li45 MjRiYTkzZGYyIDEwMDY0NA0KLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9wc3Fs LXJlZi5zZ21sDQorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL3BzcWwtcmVmLnNn bWwNCkBAIC0xMjcsMTggKzEyNywxMSBAQCBlY2hvICdceCBcXCBTRUxFQ1Qg KiBGUk9NIGZvbzsnIHwgcHNxbA0KICAgICAgICBjb21tYW5kcyBpbmNsdWRl ZCBpbiB0aGUgc3RyaW5nIHRvIGRpdmlkZSBpdCBpbnRvIG11bHRpcGxlDQog ICAgICAgIHRyYW5zYWN0aW9ucy4gIChTZWUgPHhyZWYgbGlua2VuZD0icHJv dG9jb2wtZmxvdy1tdWx0aS1zdGF0ZW1lbnQiLz4NCiAgICAgICAgZm9yIG1v cmUgZGV0YWlscyBhYm91dCBob3cgdGhlIHNlcnZlciBoYW5kbGVzIG11bHRp LXF1ZXJ5IHN0cmluZ3MuKQ0KLSAgICAgICBBbHNvLCA8YXBwbGljYXRpb24+ cHNxbDwvYXBwbGljYXRpb24+IG9ubHkgcHJpbnRzIHRoZQ0KLSAgICAgICBy ZXN1bHQgb2YgdGhlIGxhc3QgPGFjcm9ueW0+U1FMPC9hY3JvbnltPiBjb21t YW5kIGluIHRoZSBzdHJpbmcuDQotICAgICAgIFRoaXMgaXMgZGlmZmVyZW50 IGZyb20gdGhlIGJlaGF2aW9yIHdoZW4gdGhlIHNhbWUgc3RyaW5nIGlzIHJl YWQgZnJvbQ0KLSAgICAgICBhIGZpbGUgb3IgZmVkIHRvIDxhcHBsaWNhdGlv bj5wc3FsPC9hcHBsaWNhdGlvbj4ncyBzdGFuZGFyZCBpbnB1dCwNCi0gICAg ICAgYmVjYXVzZSB0aGVuIDxhcHBsaWNhdGlvbj5wc3FsPC9hcHBsaWNhdGlv bj4gc2VuZHMNCi0gICAgICAgZWFjaCA8YWNyb255bT5TUUw8L2Fjcm9ueW0+ IGNvbW1hbmQgc2VwYXJhdGVseS4NCiAgICAgICA8L3BhcmE+DQogICAgICAg PHBhcmE+DQotICAgICAgIEJlY2F1c2Ugb2YgdGhpcyBiZWhhdmlvciwgcHV0 dGluZyBtb3JlIHRoYW4gb25lIFNRTCBjb21tYW5kIGluIGENCi0gICAgICAg c2luZ2xlIDxvcHRpb24+LWM8L29wdGlvbj4gc3RyaW5nIG9mdGVuIGhhcyB1 bmV4cGVjdGVkIHJlc3VsdHMuDQotICAgICAgIEl0J3MgYmV0dGVyIHRvIHVz ZSByZXBlYXRlZCA8b3B0aW9uPi1jPC9vcHRpb24+IGNvbW1hbmRzIG9yIGZl ZWQNCi0gICAgICAgbXVsdGlwbGUgY29tbWFuZHMgdG8gPGFwcGxpY2F0aW9u PnBzcWw8L2FwcGxpY2F0aW9uPidzIHN0YW5kYXJkIGlucHV0LA0KKyAgICAg ICBJZiBoYXZpbmcgc2V2ZXJhbCBjb21tYW5kcyBleGVjdXRlZCBpbiBvbmUg dHJhbnNhY3Rpb24gaXMgbm90IGRlc2lyZWQsIA0KKyAgICAgICB1c2UgcmVw ZWF0ZWQgPG9wdGlvbj4tYzwvb3B0aW9uPiBjb21tYW5kcyBvciBmZWVkIG11 bHRpcGxlIGNvbW1hbmRzIHRvDQorICAgICAgIDxhcHBsaWNhdGlvbj5wc3Fs PC9hcHBsaWNhdGlvbj4ncyBzdGFuZGFyZCBpbnB1dCwNCiAgICAgICAgZWl0 aGVyIHVzaW5nIDxhcHBsaWNhdGlvbj5lY2hvPC9hcHBsaWNhdGlvbj4gYXMg aWxsdXN0cmF0ZWQgYWJvdmUsIG9yDQogICAgICAgIHZpYSBhIHNoZWxsIGhl cmUtZG9jdW1lbnQsIGZvciBleGFtcGxlOg0KIDxwcm9ncmFtbGlzdGluZz4N CkBAIC0zMzYxLDEwICszMzU0LDggQEAgc2VsZWN0IDFcOyBzZWxlY3QgMlw7 IHNlbGVjdCAzOw0KICAgICAgICAgY29tbWFuZHMgaW5jbHVkZWQgaW4gdGhl IHN0cmluZyB0byBkaXZpZGUgaXQgaW50byBtdWx0aXBsZQ0KICAgICAgICAg dHJhbnNhY3Rpb25zLiAgKFNlZSA8eHJlZiBsaW5rZW5kPSJwcm90b2NvbC1m bG93LW11bHRpLXN0YXRlbWVudCIvPg0KICAgICAgICAgZm9yIG1vcmUgZGV0 YWlscyBhYm91dCBob3cgdGhlIHNlcnZlciBoYW5kbGVzIG11bHRpLXF1ZXJ5 IHN0cmluZ3MuKQ0KLSAgICAgICAgPGFwcGxpY2F0aW9uPnBzcWw8L2FwcGxp Y2F0aW9uPiBwcmludHMgb25seSB0aGUgbGFzdCBxdWVyeSByZXN1bHQNCi0g ICAgICAgIGl0IHJlY2VpdmVzIGZvciBlYWNoIHJlcXVlc3Q7IGluIHRoaXMg ZXhhbXBsZSwgYWx0aG91Z2ggYWxsDQotICAgICAgICB0aHJlZSA8Y29tbWFu ZD5TRUxFQ1Q8L2NvbW1hbmQ+cyBhcmUgaW5kZWVkIGV4ZWN1dGVkLCA8YXBw bGljYXRpb24+cHNxbDwvYXBwbGljYXRpb24+DQotICAgICAgICBvbmx5IHBy aW50cyB0aGUgPGxpdGVyYWw+MzwvbGl0ZXJhbD4uDQorICAgICAgICA8YXBw bGljYXRpb24+cHNxbDwvYXBwbGljYXRpb24+IHByaW50cyBhbGwgcmVzdWx0 cyBpdCByZWNlaXZlcywgb25lDQorICAgICAgICBhZnRlciB0aGUgb3RoZXIu DQogICAgICAgICA8L3BhcmE+DQogICAgICAgICA8L2xpc3RpdGVtPg0KICAg ICAgIDwvdmFybGlzdGVudHJ5Pg0KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNx bC9jb21tb24uYyBiL3NyYy9iaW4vcHNxbC9jb21tb24uYw0KaW5kZXggOWMw ZDUzNjg5ZS4uNDg3NmFjMTMyYyAxMDA2NDQNCi0tLSBhL3NyYy9iaW4vcHNx bC9jb21tb24uYw0KKysrIGIvc3JjL2Jpbi9wc3FsL2NvbW1vbi5jDQpAQCAt MzQ4LDYgKzM0OCwxOSBAQCBDaGVja0Nvbm5lY3Rpb24odm9pZCkNCiB9DQog DQogDQorLyoNCisgKiBTaG93IGVycm9yIG1lc3NhZ2UgZnJvbSByZXN1bHQs IGlmIGFueSwgYW5kIGNoZWNrIGNvbm5lY3Rpb24gaW4gcGFzc2luZy4NCisg Ki8NCitzdGF0aWMgdm9pZA0KK1Nob3dFcnJvck1lc3NhZ2UoY29uc3QgUEdy ZXN1bHQgKnJlc3VsdCkNCit7DQorCWNvbnN0IGNoYXIgKmVycm9yID0gUFFl cnJvck1lc3NhZ2UocHNldC5kYik7DQorDQorCWlmIChzdHJsZW4oZXJyb3Ip KQ0KKwkJcGdfbG9nX2luZm8oIiVzIiwgZXJyb3IpOw0KKw0KKwlDaGVja0Nv bm5lY3Rpb24oKTsNCit9DQogDQogDQogLyoNCkBAIC0zNTksNyArMzcyLDcg QEAgQ2hlY2tDb25uZWN0aW9uKHZvaWQpDQogICogUmV0dXJucyB0cnVlIGZv ciB2YWxpZCByZXN1bHQsIGZhbHNlIGZvciBlcnJvciBzdGF0ZS4NCiAgKi8N CiBzdGF0aWMgYm9vbA0KLUFjY2VwdFJlc3VsdChjb25zdCBQR3Jlc3VsdCAq cmVzdWx0KQ0KK0FjY2VwdFJlc3VsdChjb25zdCBQR3Jlc3VsdCAqcmVzdWx0 LCBib29sIHNob3dfZXJyb3IpDQogew0KIAlib29sCQlPSzsNCiANCkBAIC0z OTAsMTUgKzQwMyw4IEBAIEFjY2VwdFJlc3VsdChjb25zdCBQR3Jlc3VsdCAq cmVzdWx0KQ0KIAkJCQlicmVhazsNCiAJCX0NCiANCi0JaWYgKCFPSykNCi0J ew0KLQkJY29uc3QgY2hhciAqZXJyb3IgPSBQUWVycm9yTWVzc2FnZShwc2V0 LmRiKTsNCi0NCi0JCWlmIChzdHJsZW4oZXJyb3IpKQ0KLQkJCXBnX2xvZ19p bmZvKCIlcyIsIGVycm9yKTsNCi0NCi0JCUNoZWNrQ29ubmVjdGlvbigpOw0K LQl9DQorCWlmICghT0sgJiYgc2hvd19lcnJvcikNCisJCVNob3dFcnJvck1l c3NhZ2UocmVzdWx0KTsNCiANCiAJcmV0dXJuIE9LOw0KIH0NCkBAIC01Nzgs NyArNTg0LDcgQEAgUFNRTGV4ZWMoY29uc3QgY2hhciAqcXVlcnkpDQogDQog CVJlc2V0Q2FuY2VsQ29ubigpOw0KIA0KLQlpZiAoIUFjY2VwdFJlc3VsdChy ZXMpKQ0KKwlpZiAoIUFjY2VwdFJlc3VsdChyZXMsIHRydWUpKQ0KIAl7DQog CQlDbGVhck9yU2F2ZVJlc3VsdChyZXMpOw0KIAkJcmVzID0gTlVMTDsNCkBA IC02MjAsNyArNjI2LDcgQEAgUFNRTGV4ZWNXYXRjaChjb25zdCBjaGFyICpx dWVyeSwgY29uc3QgcHJpbnRRdWVyeU9wdCAqb3B0KQ0KIA0KIAlSZXNldENh bmNlbENvbm4oKTsNCiANCi0JaWYgKCFBY2NlcHRSZXN1bHQocmVzKSkNCisJ aWYgKCFBY2NlcHRSZXN1bHQocmVzLCB0cnVlKSkNCiAJew0KIAkJQ2xlYXJP clNhdmVSZXN1bHQocmVzKTsNCiAJCXJldHVybiAwOw0KQEAgLTg3NiwxOTkg Kzg4MiwxMTUgQEAgbG9vcF9leGl0Og0KIAlyZXR1cm4gc3VjY2VzczsNCiB9 DQogDQotDQogLyoNCi0gKiBQcm9jZXNzUmVzdWx0OiB1dGlsaXR5IGZ1bmN0 aW9uIGZvciB1c2UgYnkgU2VuZFF1ZXJ5KCkgb25seQ0KLSAqDQotICogV2hl biBvdXIgY29tbWFuZCBzdHJpbmcgY29udGFpbmVkIGEgQ09QWSBGUk9NIFNU RElOIG9yIENPUFkgVE8gU1RET1VULA0KLSAqIFBRZXhlYygpIGhhcyBzdG9w cGVkIGF0IHRoZSBQR3Jlc3VsdCBhc3NvY2lhdGVkIHdpdGggdGhlIGZpcnN0 IHN1Y2gNCi0gKiBjb21tYW5kLiAgSW4gdGhhdCBldmVudCwgd2UnbGwgbWFy c2hhbCBkYXRhIGZvciB0aGUgQ09QWSBhbmQgdGhlbiBjeWNsZQ0KLSAqIHRo cm91Z2ggYW55IHN1YnNlcXVlbnQgUEdyZXN1bHQgb2JqZWN0cy4NCi0gKg0K LSAqIFdoZW4gdGhlIGNvbW1hbmQgc3RyaW5nIGNvbnRhaW5lZCBubyBzdWNo IENPUFkgY29tbWFuZCwgdGhpcyBmdW5jdGlvbg0KLSAqIGRlZ2VuZXJhdGVz IHRvIGFuIEFjY2VwdFJlc3VsdCgpIGNhbGwuDQotICoNCi0gKiBDaGFuZ2Vz IGl0cyBhcmd1bWVudCB0byBwb2ludCB0byB0aGUgbGFzdCBQR3Jlc3VsdCBv ZiB0aGUgY29tbWFuZCBzdHJpbmcsDQotICogb3IgTlVMTCBpZiB0aGF0IHJl c3VsdCB3YXMgZm9yIGEgQ09QWSBUTyBTVERPVVQuICAoUmV0dXJuaW5nIE5V TEwgcHJldmVudHMNCi0gKiB0aGUgY29tbWFuZCBzdGF0dXMgZnJvbSBiZWlu ZyBwcmludGVkLCB3aGljaCB3ZSB3YW50IGluIHRoYXQgY2FzZSBzbyB0aGF0 DQotICogdGhlIHN0YXR1cyBsaW5lIGRvZXNuJ3QgZ2V0IHRha2VuIGFzIHBh cnQgb2YgdGhlIENPUFkgZGF0YS4pDQotICoNCi0gKiBSZXR1cm5zIHRydWUg b24gY29tcGxldGUgc3VjY2VzcywgZmFsc2Ugb3RoZXJ3aXNlLiAgUG9zc2li bGUgZmFpbHVyZSBtb2Rlcw0KLSAqIGluY2x1ZGUgcHVyZWx5IGNsaWVudC1z aWRlIHByb2JsZW1zOyBjaGVjayB0aGUgdHJhbnNhY3Rpb24gc3RhdHVzIGZv ciB0aGUNCi0gKiBzZXJ2ZXItc2lkZSBvcGluaW9uLg0KKyAqIE1hcnNoYWwg dGhlIENPUFkgZGF0YS4gIEVpdGhlciBzdWJyb3V0aW5lIHdpbGwgZ2V0IHRo ZQ0KKyAqIGNvbm5lY3Rpb24gb3V0IG9mIGl0cyBDT1BZIHN0YXRlLCB0aGVu IGNhbGwgUFFyZXN1bHRTdGF0dXMoKQ0KKyAqIG9uY2UgYW5kIHJlcG9ydCBh bnkgZXJyb3IuIFJldHVybiB3aGV0aGVyIGFsbCB3YXMgb2suDQorICoNCisg KiBGb3IgQ09QWSBPVVQsIGRpcmVjdCB0aGUgb3V0cHV0IHRvIHBzZXQuY29w eVN0cmVhbSBpZiBpdCdzIHNldCwNCisgKiBvdGhlcndpc2UgdG8gcHNldC5n Zm5hbWUgaWYgaXQncyBzZXQsIG90aGVyd2lzZSB0byBxdWVyeUZvdXQuDQor ICogRm9yIENPUFkgSU4sIHVzZSBwc2V0LmNvcHlTdHJlYW0gYXMgZGF0YSBz b3VyY2UgaWYgaXQncyBzZXQsDQorICogb3RoZXJ3aXNlIGN1cl9jbWRfc291 cmNlLg0KKyAqDQorICogVXBkYXRlIHJlc3VsdCBpZiBmdXJ0aGVyIHByb2Nl c3NpbmcgaXMgbmVjZXNzYXJ5LCBvciBOVUxMIG90aGVyd2lzZS4NCisgKiBS ZXR1cm4gYSByZXN1bHQgd2hlbiBxdWVyeUZvdXQgY2FuIHNhZmVseSBvdXRw dXQgYSByZXN1bHQgc3RhdHVzOg0KKyAqIG9uIENPUFkgSU4sIG9yIG9uIENP UFkgT1VUIGlmIHdyaXR0ZW4gdG8gc29tZXRoaW5nIG90aGVyIGhhbiBwc2V0 LnF1ZXJ5Rm91dC4NCisgKiBSZXR1cm5pbmcgTlVMTCBwcmV2ZW50cyB0aGUg Y29tbWFuZCBzdGF0dXMgZnJvbSBiZWluZyBwcmludGVkLCB3aGljaA0KKyAq IHdlIHdhbnQgaWYgdGhlIHN0YXR1cyBsaW5lIGRvZXNuJ3QgZ2V0IHRha2Vu IGFzIHBhcnQgb2YgdGhlIENPUFkgZGF0YS4NCiAgKi8NCiBzdGF0aWMgYm9v bA0KLVByb2Nlc3NSZXN1bHQoUEdyZXN1bHQgKipyZXN1bHRzKQ0KK0hhbmRs ZUNvcHlSZXN1bHQoUEdyZXN1bHQgKipyZXN1bHQpDQogew0KLQlib29sCQlz dWNjZXNzID0gdHJ1ZTsNCi0JYm9vbAkJZmlyc3RfY3ljbGUgPSB0cnVlOw0K Kwlib29sCQlzdWNjZXNzOw0KKwlGSUxFCSAgICpjb3B5c3RyZWFtOw0KKwlQ R3Jlc3VsdCAgICpjb3B5X3Jlc3VsdDsNCisJRXhlY1N0YXR1c1R5cGUgcmVz dWx0X3N0YXR1cyA9IFBRcmVzdWx0U3RhdHVzKCpyZXN1bHQpOw0KIA0KLQlm b3IgKDs7KQ0KKwlBc3NlcnQocmVzdWx0X3N0YXR1cyA9PSBQR1JFU19DT1BZ X09VVCB8fA0KKwkJICAgcmVzdWx0X3N0YXR1cyA9PSBQR1JFU19DT1BZX0lO KTsNCisNCisJU2V0Q2FuY2VsQ29ubihwc2V0LmRiKTsNCisNCisJaWYgKHJl c3VsdF9zdGF0dXMgPT0gUEdSRVNfQ09QWV9PVVQpDQogCXsNCi0JCUV4ZWNT dGF0dXNUeXBlIHJlc3VsdF9zdGF0dXM7DQotCQlib29sCQlpc19jb3B5Ow0K LQkJUEdyZXN1bHQgICAqbmV4dF9yZXN1bHQ7DQorCQlib29sCQluZWVkX2Ns b3NlID0gZmFsc2U7DQorCQlib29sCQlpc19waXBlID0gZmFsc2U7DQogDQot CQlpZiAoIUFjY2VwdFJlc3VsdCgqcmVzdWx0cykpDQorCQlpZiAocHNldC5j b3B5U3RyZWFtKQ0KIAkJew0KLQkJCS8qDQotCQkJICogRmFpbHVyZSBhdCB0 aGlzIHBvaW50IGlzIGFsd2F5cyBhIHNlcnZlci1zaWRlIGZhaWx1cmUgb3Ig YQ0KLQkJCSAqIGZhaWx1cmUgdG8gc3VibWl0IHRoZSBjb21tYW5kIHN0cmlu Zy4gIEVpdGhlciB3YXksIHdlJ3JlDQotCQkJICogZmluaXNoZWQgd2l0aCB0 aGlzIGNvbW1hbmQgc3RyaW5nLg0KLQkJCSAqLw0KLQkJCXN1Y2Nlc3MgPSBm YWxzZTsNCi0JCQlicmVhazsNCisJCQkvKiBpbnZva2VkIGJ5IFxjb3B5ICov DQorCQkJY29weXN0cmVhbSA9IHBzZXQuY29weVN0cmVhbTsNCiAJCX0NCi0N Ci0JCXJlc3VsdF9zdGF0dXMgPSBQUXJlc3VsdFN0YXR1cygqcmVzdWx0cyk7 DQotCQlzd2l0Y2ggKHJlc3VsdF9zdGF0dXMpDQorCQllbHNlIGlmIChwc2V0 LmdmbmFtZSkNCiAJCXsNCi0JCQljYXNlIFBHUkVTX0VNUFRZX1FVRVJZOg0K LQkJCWNhc2UgUEdSRVNfQ09NTUFORF9PSzoNCi0JCQljYXNlIFBHUkVTX1RV UExFU19PSzoNCi0JCQkJaXNfY29weSA9IGZhbHNlOw0KLQkJCQlicmVhazsN Ci0NCi0JCQljYXNlIFBHUkVTX0NPUFlfT1VUOg0KLQkJCWNhc2UgUEdSRVNf Q09QWV9JTjoNCi0JCQkJaXNfY29weSA9IHRydWU7DQotCQkJCWJyZWFrOw0K LQ0KLQkJCWRlZmF1bHQ6DQotCQkJCS8qIEFjY2VwdFJlc3VsdCgpIHNob3Vs ZCBoYXZlIGNhdWdodCBhbnl0aGluZyBlbHNlLiAqLw0KLQkJCQlpc19jb3B5 ID0gZmFsc2U7DQotCQkJCXBnX2xvZ19lcnJvcigidW5leHBlY3RlZCBQUXJl c3VsdFN0YXR1czogJWQiLCByZXN1bHRfc3RhdHVzKTsNCi0JCQkJYnJlYWs7 DQotCQl9DQotDQotCQlpZiAoaXNfY29weSkNCi0JCXsNCi0JCQkvKg0KLQkJ CSAqIE1hcnNoYWwgdGhlIENPUFkgZGF0YS4gIEVpdGhlciBzdWJyb3V0aW5l IHdpbGwgZ2V0IHRoZQ0KLQkJCSAqIGNvbm5lY3Rpb24gb3V0IG9mIGl0cyBD T1BZIHN0YXRlLCB0aGVuIGNhbGwgUFFyZXN1bHRTdGF0dXMoKQ0KLQkJCSAq IG9uY2UgYW5kIHJlcG9ydCBhbnkgZXJyb3IuDQotCQkJICoNCi0JCQkgKiBG b3IgQ09QWSBPVVQsIGRpcmVjdCB0aGUgb3V0cHV0IHRvIHBzZXQuY29weVN0 cmVhbSBpZiBpdCdzIHNldCwNCi0JCQkgKiBvdGhlcndpc2UgdG8gcHNldC5n Zm5hbWUgaWYgaXQncyBzZXQsIG90aGVyd2lzZSB0byBxdWVyeUZvdXQuDQot CQkJICogRm9yIENPUFkgSU4sIHVzZSBwc2V0LmNvcHlTdHJlYW0gYXMgZGF0 YSBzb3VyY2UgaWYgaXQncyBzZXQsDQotCQkJICogb3RoZXJ3aXNlIGN1cl9j bWRfc291cmNlLg0KLQkJCSAqLw0KLQkJCUZJTEUJICAgKmNvcHlzdHJlYW07 DQotCQkJUEdyZXN1bHQgICAqY29weV9yZXN1bHQ7DQotDQotCQkJU2V0Q2Fu Y2VsQ29ubihwc2V0LmRiKTsNCi0JCQlpZiAocmVzdWx0X3N0YXR1cyA9PSBQ R1JFU19DT1BZX09VVCkNCisJCQkvKiBpbnZva2VkIGJ5IFxnICovDQorCQkJ aWYgKG9wZW5RdWVyeU91dHB1dEZpbGUocHNldC5nZm5hbWUsDQorCQkJCQkJ CQkJJmNvcHlzdHJlYW0sICZpc19waXBlKSkNCiAJCQl7DQotCQkJCWJvb2wJ CW5lZWRfY2xvc2UgPSBmYWxzZTsNCi0JCQkJYm9vbAkJaXNfcGlwZSA9IGZh bHNlOw0KLQ0KLQkJCQlpZiAocHNldC5jb3B5U3RyZWFtKQ0KLQkJCQl7DQot CQkJCQkvKiBpbnZva2VkIGJ5IFxjb3B5ICovDQotCQkJCQljb3B5c3RyZWFt ID0gcHNldC5jb3B5U3RyZWFtOw0KLQkJCQl9DQotCQkJCWVsc2UgaWYgKHBz ZXQuZ2ZuYW1lKQ0KLQkJCQl7DQotCQkJCQkvKiBpbnZva2VkIGJ5IFxnICov DQotCQkJCQlpZiAob3BlblF1ZXJ5T3V0cHV0RmlsZShwc2V0LmdmbmFtZSwN Ci0JCQkJCQkJCQkJCSZjb3B5c3RyZWFtLCAmaXNfcGlwZSkpDQotCQkJCQl7 DQotCQkJCQkJbmVlZF9jbG9zZSA9IHRydWU7DQotCQkJCQkJaWYgKGlzX3Bp cGUpDQotCQkJCQkJCWRpc2FibGVfc2lncGlwZV90cmFwKCk7DQotCQkJCQl9 DQotCQkJCQllbHNlDQotCQkJCQkJY29weXN0cmVhbSA9IE5VTEw7CS8qIGRp c2NhcmQgQ09QWSBkYXRhIGVudGlyZWx5ICovDQotCQkJCX0NCi0JCQkJZWxz ZQ0KLQkJCQl7DQotCQkJCQkvKiBmYWxsIGJhY2sgdG8gdGhlIGdlbmVyaWMg cXVlcnkgb3V0cHV0IHN0cmVhbSAqLw0KLQkJCQkJY29weXN0cmVhbSA9IHBz ZXQucXVlcnlGb3V0Ow0KLQkJCQl9DQotDQotCQkJCXN1Y2Nlc3MgPSBoYW5k bGVDb3B5T3V0KHBzZXQuZGIsDQotCQkJCQkJCQkJCWNvcHlzdHJlYW0sDQot CQkJCQkJCQkJCSZjb3B5X3Jlc3VsdCkNCi0JCQkJCSYmIHN1Y2Nlc3MNCi0J CQkJCSYmIChjb3B5c3RyZWFtICE9IE5VTEwpOw0KLQ0KLQkJCQkvKg0KLQkJ CQkgKiBTdXBwcmVzcyBzdGF0dXMgcHJpbnRpbmcgaWYgdGhlIHJlcG9ydCB3 b3VsZCBnbyB0byB0aGUgc2FtZQ0KLQkJCQkgKiBwbGFjZSBhcyB0aGUgQ09Q WSBkYXRhIGp1c3Qgd2VudC4gIE5vdGUgdGhpcyBkb2Vzbid0DQotCQkJCSAq IHByZXZlbnQgZXJyb3IgcmVwb3J0aW5nLCBzaW5jZSBoYW5kbGVDb3B5T3V0 IGRpZCB0aGF0Lg0KLQkJCQkgKi8NCi0JCQkJaWYgKGNvcHlzdHJlYW0gPT0g cHNldC5xdWVyeUZvdXQpDQotCQkJCXsNCi0JCQkJCVBRY2xlYXIoY29weV9y ZXN1bHQpOw0KLQkJCQkJY29weV9yZXN1bHQgPSBOVUxMOw0KLQkJCQl9DQot DQotCQkJCWlmIChuZWVkX2Nsb3NlKQ0KLQkJCQl7DQotCQkJCQkvKiBjbG9z ZSBcZyBhcmd1bWVudCBmaWxlL3BpcGUgKi8NCi0JCQkJCWlmIChpc19waXBl KQ0KLQkJCQkJew0KLQkJCQkJCXBjbG9zZShjb3B5c3RyZWFtKTsNCi0JCQkJ CQlyZXN0b3JlX3NpZ3BpcGVfdHJhcCgpOw0KLQkJCQkJfQ0KLQkJCQkJZWxz ZQ0KLQkJCQkJew0KLQkJCQkJCWZjbG9zZShjb3B5c3RyZWFtKTsNCi0JCQkJ CX0NCi0JCQkJfQ0KKwkJCQluZWVkX2Nsb3NlID0gdHJ1ZTsNCisJCQkJaWYg KGlzX3BpcGUpDQorCQkJCQlkaXNhYmxlX3NpZ3BpcGVfdHJhcCgpOw0KIAkJ CX0NCiAJCQllbHNlDQotCQkJew0KLQkJCQkvKiBDT1BZIElOICovDQotCQkJ CWNvcHlzdHJlYW0gPSBwc2V0LmNvcHlTdHJlYW0gPyBwc2V0LmNvcHlTdHJl YW0gOiBwc2V0LmN1cl9jbWRfc291cmNlOw0KLQkJCQlzdWNjZXNzID0gaGFu ZGxlQ29weUluKHBzZXQuZGIsDQotCQkJCQkJCQkJICAgY29weXN0cmVhbSwN Ci0JCQkJCQkJCQkgICBQUWJpbmFyeVR1cGxlcygqcmVzdWx0cyksDQotCQkJ CQkJCQkJICAgJmNvcHlfcmVzdWx0KSAmJiBzdWNjZXNzOw0KLQkJCX0NCi0J CQlSZXNldENhbmNlbENvbm4oKTsNCi0NCi0JCQkvKg0KLQkJCSAqIFJlcGxh Y2UgdGhlIFBHUkVTX0NPUFlfT1VUL0lOIHJlc3VsdCB3aXRoIENPUFkgY29t bWFuZCdzIGV4aXQNCi0JCQkgKiBzdGF0dXMsIG9yIHdpdGggTlVMTCBpZiB3 ZSB3YW50IHRvIHN1cHByZXNzIHByaW50aW5nIGFueXRoaW5nLg0KLQkJCSAq Lw0KLQkJCVBRY2xlYXIoKnJlc3VsdHMpOw0KLQkJCSpyZXN1bHRzID0gY29w eV9yZXN1bHQ7DQorCQkJCWNvcHlzdHJlYW0gPSBOVUxMOwkvKiBkaXNjYXJk IENPUFkgZGF0YSBlbnRpcmVseSAqLw0KIAkJfQ0KLQkJZWxzZSBpZiAoZmly c3RfY3ljbGUpDQorCQllbHNlDQogCQl7DQotCQkJLyogZmFzdCBwYXRoOiBu byBDT1BZIGNvbW1hbmRzOyBQUWV4ZWMgdmlzaXRlZCBhbGwgcmVzdWx0cyAq Lw0KLQkJCWJyZWFrOw0KKwkJCS8qIGZhbGwgYmFjayB0byB0aGUgZ2VuZXJp YyBxdWVyeSBvdXRwdXQgc3RyZWFtICovDQorCQkJY29weXN0cmVhbSA9IHBz ZXQucXVlcnlGb3V0Ow0KIAkJfQ0KIA0KKwkJc3VjY2VzcyA9IGhhbmRsZUNv cHlPdXQocHNldC5kYiwNCisJCQkJCQkJCWNvcHlzdHJlYW0sDQorCQkJCQkJ CQkmY29weV9yZXN1bHQpDQorCQkJJiYgKGNvcHlzdHJlYW0gIT0gTlVMTCk7 DQorDQogCQkvKg0KLQkJICogQ2hlY2sgUFFnZXRSZXN1bHQoKSBhZ2Fpbi4g IEluIHRoZSB0eXBpY2FsIGNhc2Ugb2YgYSBzaW5nbGUtY29tbWFuZA0KLQkJ ICogc3RyaW5nLCBpdCB3aWxsIHJldHVybiBOVUxMLiAgT3RoZXJ3aXNlLCB3 ZSdsbCBoYXZlIG90aGVyIHJlc3VsdHMNCi0JCSAqIHRvIHByb2Nlc3MgdGhh dCBtYXkgaW5jbHVkZSBvdGhlciBDT1BZcy4gIFdlIGtlZXAgdGhlIGxhc3Qg cmVzdWx0Lg0KKwkJICogU3VwcHJlc3Mgc3RhdHVzIHByaW50aW5nIGlmIHRo ZSByZXBvcnQgd291bGQgZ28gdG8gdGhlIHNhbWUNCisJCSAqIHBsYWNlIGFz IHRoZSBDT1BZIGRhdGEganVzdCB3ZW50LiAgTm90ZSB0aGlzIGRvZXNuJ3QN CisJCSAqIHByZXZlbnQgZXJyb3IgcmVwb3J0aW5nLCBzaW5jZSBoYW5kbGVD b3B5T3V0IGRpZCB0aGF0Lg0KIAkJICovDQotCQluZXh0X3Jlc3VsdCA9IFBR Z2V0UmVzdWx0KHBzZXQuZGIpOw0KLQkJaWYgKCFuZXh0X3Jlc3VsdCkNCi0J CQlicmVhazsNCisJCWlmIChjb3B5c3RyZWFtID09IHBzZXQucXVlcnlGb3V0 KQ0KKwkJew0KKwkJCVBRY2xlYXIoY29weV9yZXN1bHQpOw0KKwkJCWNvcHlf cmVzdWx0ID0gTlVMTDsNCisJCX0NCiANCi0JCVBRY2xlYXIoKnJlc3VsdHMp Ow0KLQkJKnJlc3VsdHMgPSBuZXh0X3Jlc3VsdDsNCi0JCWZpcnN0X2N5Y2xl ID0gZmFsc2U7DQorCQlpZiAobmVlZF9jbG9zZSkNCisJCXsNCisJCQkvKiBj bG9zZSBcZyBhcmd1bWVudCBmaWxlL3BpcGUgKi8NCisJCQlpZiAoaXNfcGlw ZSkNCisJCQl7DQorCQkJCXBjbG9zZShjb3B5c3RyZWFtKTsNCisJCQkJcmVz dG9yZV9zaWdwaXBlX3RyYXAoKTsNCisJCQl9DQorCQkJZWxzZQ0KKwkJCXsN CisJCQkJZmNsb3NlKGNvcHlzdHJlYW0pOw0KKwkJCX0NCisJCX0NCisJfQ0K KwllbHNlDQorCXsNCisJCS8qIENPUFkgSU4gKi8NCisJCWNvcHlzdHJlYW0g PSBwc2V0LmNvcHlTdHJlYW0gPyBwc2V0LmNvcHlTdHJlYW0gOiBwc2V0LmN1 cl9jbWRfc291cmNlOw0KKwkJc3VjY2VzcyA9IGhhbmRsZUNvcHlJbihwc2V0 LmRiLA0KKwkJCQkJCQkgICBjb3B5c3RyZWFtLA0KKwkJCQkJCQkgICBQUWJp bmFyeVR1cGxlcygqcmVzdWx0KSwNCisJCQkJCQkJICAgJmNvcHlfcmVzdWx0 KTsNCiAJfQ0KIA0KLQlTZXRSZXN1bHRWYXJpYWJsZXMoKnJlc3VsdHMsIHN1 Y2Nlc3MpOw0KLQ0KLQkvKiBtYXkgbmVlZCB0aGlzIHRvIHJlY292ZXIgZnJv bSBjb25uIGxvc3MgZHVyaW5nIENPUFkgKi8NCi0JaWYgKCFmaXJzdF9jeWNs ZSAmJiAhQ2hlY2tDb25uZWN0aW9uKCkpDQotCQlyZXR1cm4gZmFsc2U7DQor CVJlc2V0Q2FuY2VsQ29ubigpOw0KKwlQUWNsZWFyKCpyZXN1bHQpOw0KKwkq cmVzdWx0ID0gY29weV9yZXN1bHQ7DQogDQogCXJldHVybiBzdWNjZXNzOw0K IH0NCiANCi0NCiAvKg0KICAqIFByaW50UXVlcnlTdGF0dXM6IHJlcG9ydCBj b21tYW5kIHN0YXR1cyBhcyByZXF1aXJlZA0KICAqDQotICogTm90ZTogVXRp bGl0eSBmdW5jdGlvbiBmb3IgdXNlIGJ5IFByaW50UXVlcnlSZXN1bHRzKCkg b25seS4NCisgKiBOb3RlOiBVdGlsaXR5IGZ1bmN0aW9uIGZvciB1c2UgYnkg SGFuZGxlUXVlcnlSZXN1bHQoKSBvbmx5Lg0KICAqLw0KIHN0YXRpYyB2b2lk DQogUHJpbnRRdWVyeVN0YXR1cyhQR3Jlc3VsdCAqcmVzdWx0cykNCkBAIC0x MDk2LDQzICsxMDE4LDQ0IEBAIFByaW50UXVlcnlTdGF0dXMoUEdyZXN1bHQg KnJlc3VsdHMpDQogDQogDQogLyoNCi0gKiBQcmludFF1ZXJ5UmVzdWx0czog cHJpbnQgb3V0IChvciBzdG9yZSBvciBleGVjdXRlKSBxdWVyeSByZXN1bHRz IGFzIHJlcXVpcmVkDQotICoNCi0gKiBOb3RlOiBVdGlsaXR5IGZ1bmN0aW9u IGZvciB1c2UgYnkgU2VuZFF1ZXJ5KCkgb25seS4NCisgKiBIYW5kbGVRdWVy eVJlc3VsdDogcHJpbnQgb3V0LCBzdG9yZSBvciBleGVjdXRlIG9uZSBxdWVy eSByZXN1bHQNCisgKiBhcyByZXF1aXJlZC4NCiAgKg0KICAqIFJldHVybnMg dHJ1ZSBpZiB0aGUgcXVlcnkgZXhlY3V0ZWQgc3VjY2Vzc2Z1bGx5LCBmYWxz ZSBvdGhlcndpc2UuDQogICovDQogc3RhdGljIGJvb2wNCi1QcmludFF1ZXJ5 UmVzdWx0cyhQR3Jlc3VsdCAqcmVzdWx0cykNCitIYW5kbGVRdWVyeVJlc3Vs dChQR3Jlc3VsdCAqcmVzdWx0LCBib29sIGxhc3QpDQogew0KIAlib29sCQlz dWNjZXNzOw0KIAljb25zdCBjaGFyICpjbWRzdGF0dXM7DQogDQotCWlmICgh cmVzdWx0cykNCisJaWYgKHJlc3VsdCA9PSBOVUxMKQ0KIAkJcmV0dXJuIGZh bHNlOw0KIA0KLQlzd2l0Y2ggKFBRcmVzdWx0U3RhdHVzKHJlc3VsdHMpKQ0K Kwlzd2l0Y2ggKFBRcmVzdWx0U3RhdHVzKHJlc3VsdCkpDQogCXsNCiAJCWNh c2UgUEdSRVNfVFVQTEVTX09LOg0KIAkJCS8qIHN0b3JlIG9yIGV4ZWN1dGUg b3IgcHJpbnQgdGhlIGRhdGEgLi4uICovDQotCQkJaWYgKHBzZXQuZ3NldF9w cmVmaXgpDQotCQkJCXN1Y2Nlc3MgPSBTdG9yZVF1ZXJ5VHVwbGUocmVzdWx0 cyk7DQotCQkJZWxzZSBpZiAocHNldC5nZXhlY19mbGFnKQ0KLQkJCQlzdWNj ZXNzID0gRXhlY1F1ZXJ5VHVwbGVzKHJlc3VsdHMpOw0KLQkJCWVsc2UgaWYg KHBzZXQuY3Jvc3N0YWJfZmxhZykNCi0JCQkJc3VjY2VzcyA9IFByaW50UmVz dWx0c0luQ3Jvc3N0YWIocmVzdWx0cyk7DQorCQkJaWYgKGxhc3QgJiYgcHNl dC5nc2V0X3ByZWZpeCkNCisJCQkJc3VjY2VzcyA9IFN0b3JlUXVlcnlUdXBs ZShyZXN1bHQpOw0KKwkJCWVsc2UgaWYgKGxhc3QgJiYgcHNldC5nZXhlY19m bGFnKQ0KKwkJCQlzdWNjZXNzID0gRXhlY1F1ZXJ5VHVwbGVzKHJlc3VsdCk7 DQorCQkJZWxzZSBpZiAobGFzdCAmJiBwc2V0LmNyb3NzdGFiX2ZsYWcpDQor CQkJCXN1Y2Nlc3MgPSBQcmludFJlc3VsdHNJbkNyb3NzdGFiKHJlc3VsdCk7 DQogCQkJZWxzZQ0KLQkJCQlzdWNjZXNzID0gUHJpbnRRdWVyeVR1cGxlcyhy ZXN1bHRzKTsNCisJCQkJc3VjY2VzcyA9IFByaW50UXVlcnlUdXBsZXMocmVz dWx0KTsNCisNCiAJCQkvKiBpZiBpdCdzIElOU0VSVC9VUERBVEUvREVMRVRF IFJFVFVSTklORywgYWxzbyBwcmludCBzdGF0dXMgKi8NCi0JCQljbWRzdGF0 dXMgPSBQUWNtZFN0YXR1cyhyZXN1bHRzKTsNCisJCQljbWRzdGF0dXMgPSBQ UWNtZFN0YXR1cyhyZXN1bHQpOw0KIAkJCWlmIChzdHJuY21wKGNtZHN0YXR1 cywgIklOU0VSVCIsIDYpID09IDAgfHwNCiAJCQkJc3RybmNtcChjbWRzdGF0 dXMsICJVUERBVEUiLCA2KSA9PSAwIHx8DQogCQkJCXN0cm5jbXAoY21kc3Rh dHVzLCAiREVMRVRFIiwgNikgPT0gMCkNCi0JCQkJUHJpbnRRdWVyeVN0YXR1 cyhyZXN1bHRzKTsNCisJCQkJUHJpbnRRdWVyeVN0YXR1cyhyZXN1bHQpOw0K Kw0KIAkJCWJyZWFrOw0KIA0KIAkJY2FzZSBQR1JFU19DT01NQU5EX09LOg0K LQkJCVByaW50UXVlcnlTdGF0dXMocmVzdWx0cyk7DQorCQkJUHJpbnRRdWVy eVN0YXR1cyhyZXN1bHQpOw0KIAkJCXN1Y2Nlc3MgPSB0cnVlOw0KIAkJCWJy ZWFrOw0KIA0KQEAgLTExNDIsNyArMTA2NSw3IEBAIFByaW50UXVlcnlSZXN1 bHRzKFBHcmVzdWx0ICpyZXN1bHRzKQ0KIA0KIAkJY2FzZSBQR1JFU19DT1BZ X09VVDoNCiAJCWNhc2UgUEdSRVNfQ09QWV9JTjoNCi0JCQkvKiBub3RoaW5n IHRvIGRvIGhlcmUgKi8NCisJCQkvKiBub3RoaW5nIHRvIGRvIGhlcmU6IGFs cmVhZHkgcHJvY2Vzc2VkICovDQogCQkJc3VjY2VzcyA9IHRydWU7DQogCQkJ YnJlYWs7DQogDQpAQCAtMTE1NSw3ICsxMDc4LDcgQEAgUHJpbnRRdWVyeVJl c3VsdHMoUEdyZXN1bHQgKnJlc3VsdHMpDQogCQlkZWZhdWx0Og0KIAkJCXN1 Y2Nlc3MgPSBmYWxzZTsNCiAJCQlwZ19sb2dfZXJyb3IoInVuZXhwZWN0ZWQg UFFyZXN1bHRTdGF0dXM6ICVkIiwNCi0JCQkJCQkgUFFyZXN1bHRTdGF0dXMo cmVzdWx0cykpOw0KKwkJCQkJCSBQUXJlc3VsdFN0YXR1cyhyZXN1bHQpKTsN CiAJCQlicmVhazsNCiAJfQ0KIA0KQEAgLTExNjQsNiArMTA4NywxNzYgQEAg UHJpbnRRdWVyeVJlc3VsdHMoUEdyZXN1bHQgKnJlc3VsdHMpDQogCXJldHVy biBzdWNjZXNzOw0KIH0NCiANCisvKg0KKyAqIERhdGEgc3RydWN0dXJlIGFu ZCBmdW5jdGlvbnMgdG8gcmVjb3JkIG5vdGljZXMgd2hpbGUgdGhleSBhcmUN CisgKiBlbWl0dGVkLCBzbyB0aGF0IHRoZXkgY2FuIGJlIHNob3duIGxhdGVy Lg0KKyAqDQorICogV2UgbmVlZCB0byBrbm93IHdoaWNoIHJlc3VsdCBpcyBs YXN0LCB3aGljaCByZXF1aXJlcyB0byBleHRyYWN0DQorICogb25lIHJlc3Vs dCBpbiBhZHZhbmNlLCBoZW5jZSB0d28gYnVmZmVycyBhcmUgbmVlZGVkLg0K KyAqLw0KK3R5cGVkZWYgc3RydWN0IHsNCisJYm9vbAkJCWluX2ZsaXA7DQor CVBRRXhwQnVmZmVyRGF0YQlmbGlwOw0KKwlQUUV4cEJ1ZmZlckRhdGEJZmxv cDsNCit9IHRfbm90aWNlX21lc3NhZ2VzOw0KKw0KKy8qDQorICogU3RvcmUg bm90aWNlcyBpbiBhcHByb3ByaWF0ZSBidWZmZXIsIGZvciBsYXRlciBkaXNw bGF5Lg0KKyAqLw0KK3N0YXRpYyB2b2lkDQorQXBwZW5kTm90aWNlTWVzc2Fn ZSh2b2lkICphcmcsIGNvbnN0IGNoYXIgKm1zZykNCit7DQorCXRfbm90aWNl X21lc3NhZ2VzICpub3RlcyA9ICh0X25vdGljZV9tZXNzYWdlcyopIGFyZzsN CisJYXBwZW5kUFFFeHBCdWZmZXJTdHIobm90ZXMtPmluX2ZsaXAgPyAmbm90 ZXMtPmZsaXAgOiAmbm90ZXMtPmZsb3AsIG1zZyk7DQorfQ0KKw0KKy8qDQor ICogU2hvdyBub3RpY2VzIHN0b3JlZCBpbiBidWZmZXIsIHdoaWNoIGlzIHRo ZW4gcmVzZXQuDQorICovDQorc3RhdGljIHZvaWQNCitTaG93Tm90aWNlTWVz c2FnZSh0X25vdGljZV9tZXNzYWdlcyAqbm90ZXMpDQorew0KKwlQUUV4cEJ1 ZmZlckRhdGEJKmN1cnJlbnQgPSBub3Rlcy0+aW5fZmxpcCA/ICZub3Rlcy0+ ZmxpcCA6ICZub3Rlcy0+ZmxvcDsNCisJaWYgKGN1cnJlbnQtPmRhdGEgIT0g TlVMTCAmJiAqY3VycmVudC0+ZGF0YSAhPSAnXDAnKQ0KKwkJcGdfbG9nX2lu Zm8oIiVzIiwgY3VycmVudC0+ZGF0YSk7DQorCXJlc2V0UFFFeHBCdWZmZXIo Y3VycmVudCk7DQorfQ0KKw0KKy8qDQorICogU2VuZFF1ZXJ5QW5kUHJvY2Vz c1Jlc3VsdHM6IHV0aWxpdHkgZnVuY3Rpb24gZm9yIHVzZSBieSBTZW5kUXVl cnkoKSBvbmx5DQorICoNCisgKiBTZW5kcyBxdWVyeSBhbmQgY3ljbGVzIHRo cm91Z2ggUEdyZXN1bHQgb2JqZWN0cy4NCisgKg0KKyAqIFdoZW4gb3VyIGNv bW1hbmQgc3RyaW5nIGNvbnRhaW5lZCBhIENPUFkgRlJPTSBTVERJTiBvciBD T1BZIFRPIFNURE9VVCwNCisgKiB0aGUgUEdyZXN1bHQgYXNzb2NpYXRlZCB3 aXRoIHRoZXNlIGNvbW1hbmRzIG11c3QgYmUgcHJvY2Vzc2VkIGJ5IHByb3Zp ZGluZw0KKyAqIGFuIGlucHV0IG9yIG91dHB1dCBzdHJlYW0uICBJbiB0aGF0 IGV2ZW50LCB3ZSdsbCBtYXJzaGFsIGRhdGEgZm9yIHRoZSBDT1BZLg0KKyAq DQorICogRm9yIG90aGVyIGNvbW1hbmRzLCB0aGUgcmVzdWx0cyBhcmUgcHJv Y2Vzc2VkIG5vcm1hbGx5LCBkZXBlbmRpbmcgb24gdGhlaXINCisgKiBzdGF0 dXMuDQorICoNCisgKiBSZXR1cm5zIHRydWUgb24gY29tcGxldGUgc3VjY2Vz cywgZmFsc2Ugb3RoZXJ3aXNlLiAgUG9zc2libGUgZmFpbHVyZSBtb2Rlcw0K KyAqIGluY2x1ZGUgcHVyZWx5IGNsaWVudC1zaWRlIHByb2JsZW1zOyBjaGVj ayB0aGUgdHJhbnNhY3Rpb24gc3RhdHVzIGZvciB0aGUNCisgKiBzZXJ2ZXIt c2lkZSBvcGluaW9uLg0KKyAqDQorICogTm90ZSB0aGF0IG9uIGEgY29tYmlu ZWQgcXVlcnksIGZhaWx1cmUgZG9lcyBub3QgbWVhbiB0aGF0IG5vdGhpbmcg d2FzDQorICogY29tbWl0dGVkLg0KKyAqLw0KK3N0YXRpYyBib29sDQorU2Vu ZFF1ZXJ5QW5kUHJvY2Vzc1Jlc3VsdHMoY29uc3QgY2hhciAqcXVlcnksIGRv dWJsZSAqcGVsYXBzZWRfbXNlYykNCit7DQorCWJvb2wJCQkJc3VjY2VzczsN CisJaW5zdHJfdGltZQkJCWJlZm9yZTsNCisJUEdyZXN1bHQJCSAgICpyZXN1 bHQ7DQorCXRfbm90aWNlX21lc3NhZ2VzCW5vdGVzOw0KKw0KKwlpZiAocHNl dC50aW1pbmcpDQorCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKGJlZm9yZSk7 DQorDQorCXN1Y2Nlc3MgPSBQUXNlbmRRdWVyeShwc2V0LmRiLCBxdWVyeSk7 DQorCVJlc2V0Q2FuY2VsQ29ubigpOw0KKw0KKwlpZiAoIXN1Y2Nlc3MpDQor CQlyZXR1cm4gZmFsc2U7DQorDQorCS8qIGludGVyY2VwdCBub3RpY2VzICov DQorCW5vdGVzLmluX2ZsaXAgPSB0cnVlOw0KKwlpbml0UFFFeHBCdWZmZXIo Jm5vdGVzLmZsaXApOw0KKwlpbml0UFFFeHBCdWZmZXIoJm5vdGVzLmZsb3Ap Ow0KKwlQUXNldE5vdGljZVByb2Nlc3Nvcihwc2V0LmRiLCBBcHBlbmROb3Rp Y2VNZXNzYWdlLCAmbm90ZXMpOw0KKw0KKwkvKiBmaXJzdCByZXN1bHQgKi8N CisJcmVzdWx0ID0gUFFnZXRSZXN1bHQocHNldC5kYik7DQorDQorCXdoaWxl IChyZXN1bHQgIT0gTlVMTCkNCisJew0KKwkJRXhlY1N0YXR1c1R5cGUgcmVz dWx0X3N0YXR1czsNCisJCVBHcmVzdWx0ICAgKm5leHRfcmVzdWx0Ow0KKwkJ Ym9vbAkJbGFzdDsNCisNCisJCWlmICghQWNjZXB0UmVzdWx0KHJlc3VsdCwg ZmFsc2UpKQ0KKwkJew0KKwkJCS8qDQorCQkJICogU29tZSBlcnJvciBvY2N1 cmVkLCBlaXRoZXIgYSBzZXJ2ZXItc2lkZSBmYWlsdXJlIG9yDQorCQkJICog YSBmYWlsdXJlIHRvIHN1Ym1pdCB0aGUgY29tbWFuZCBzdHJpbmcuICBSZWNv cmQgdGhhdC4NCisJCQkgKi8NCisJCQlTaG93Tm90aWNlTWVzc2FnZSgmbm90 ZXMpOw0KKwkJCVNob3dFcnJvck1lc3NhZ2UocmVzdWx0KTsNCisJCQlTZXRS ZXN1bHRWYXJpYWJsZXMocmVzdWx0LCBmYWxzZSk7DQorCQkJQ2xlYXJPclNh dmVSZXN1bHQocmVzdWx0KTsNCisJCQlzdWNjZXNzID0gZmFsc2U7DQorDQor CQkJLyogYW5kIHN3aXRjaCB0byBuZXh0IHJlc3VsdCAqLw0KKwkJCXJlc3Vs dCA9IFBRZ2V0UmVzdWx0KHBzZXQuZGIpOw0KKwkJCWNvbnRpbnVlOw0KKwkJ fQ0KKw0KKwkJLyogbXVzdCBoYW5kbGUgQ09QWSBiZWZvcmUgY2hhbmdpbmcg dGhlIGN1cnJlbnQgcmVzdWx0ICovDQorCQlyZXN1bHRfc3RhdHVzID0gUFFy ZXN1bHRTdGF0dXMocmVzdWx0KTsNCisJCWlmIChyZXN1bHRfc3RhdHVzID09 IFBHUkVTX0NPUFlfSU4gfHwNCisJCQlyZXN1bHRfc3RhdHVzID09IFBHUkVT X0NPUFlfT1VUKQ0KKwkJew0KKwkJCVNob3dOb3RpY2VNZXNzYWdlKCZub3Rl cyk7DQorCQkJc3VjY2VzcyAmPSBIYW5kbGVDb3B5UmVzdWx0KCZyZXN1bHQp Ow0KKwkJfQ0KKw0KKwkJLyoNCisJCSAqIENoZWNrIFBRZ2V0UmVzdWx0KCkg YWdhaW4uICBJbiB0aGUgdHlwaWNhbCBjYXNlIG9mIGEgc2luZ2xlLWNvbW1h bmQNCisJCSAqIHN0cmluZywgaXQgd2lsbCByZXR1cm4gTlVMTC4gIE90aGVy d2lzZSwgd2UnbGwgaGF2ZSBvdGhlciByZXN1bHRzDQorCQkgKiB0byBwcm9j ZXNzLg0KKwkJICovDQorCQlub3Rlcy5pbl9mbGlwID0gIW5vdGVzLmluX2Zs aXA7DQorCQluZXh0X3Jlc3VsdCA9IFBRZ2V0UmVzdWx0KHBzZXQuZGIpOw0K KwkJbm90ZXMuaW5fZmxpcCA9ICFub3Rlcy5pbl9mbGlwOw0KKwkJbGFzdCA9 IChuZXh0X3Jlc3VsdCA9PSBOVUxMKTsNCisNCisJCS8qDQorCQkgKiBHZXQg dGltaW5nIG1lYXN1cmUgYmVmb3JlIHByaW50aW5nIHRoZSBsYXN0IHJlc3Vs dC4NCisJCSAqDQorCQkgKiBJdCB3aWxsIGluY2x1ZGUgdGhlIGRpc3BsYXkg b2YgcHJldmlvdXMgcmVzdWx0cywgaWYgYW55Lg0KKwkJICogVGhpcyBjYW5u b3QgYmUgaGVscGVkIGJlY2F1c2UgdGhlIHNlcnZlciBnb2VzIG9uIHByb2Nl c3NpbmcNCisJCSAqIGZ1cnRoZXIgcXVlcmllcyBhbnl3YXkgd2hpbGUgdGhl IHByZXZpb3VzIG9uZXMgYXJlIGJlaW5nIGRpc3BsYXllZC4NCisJCSAqIFRo ZSBwYXJhbGxlbCBleGVjdXRpb24gb2YgdGhlIGNsaWVudCBkaXNwbGF5IGhp ZGVzIHRoZSBzZXJ2ZXIgdGltZQ0KKwkJICogd2hlbiBpdCBpcyBzaG9ydGVy Lg0KKwkJICoNCisJCSAqIFdpdGggY29tYmluZWQgcXVlcmllcywgdGltaW5n IG11c3QgYmUgdW5kZXJzdG9vZCBhcyBhbiB1cHBlciBib3VuZA0KKwkJICog b2YgdGhlIHRpbWUgc3BlbnQgcHJvY2Vzc2luZyB0aGVtLg0KKwkJICovDQor CQlpZiAobGFzdCAmJiBwc2V0LnRpbWluZykNCisJCXsNCisJCQlpbnN0cl90 aW1lCW5vdzsNCisJCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKG5vdyk7DQor CQkJSU5TVFJfVElNRV9TVUJUUkFDVChub3csIGJlZm9yZSk7DQorCQkJKnBl bGFwc2VkX21zZWMgPSBJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyhub3cpOw0K KwkJfQ0KKw0KKwkJLyogbm90aWNlcyBhbHJlYWR5IHNob3cgYWJvdmUgZm9y IGNvcHkgKi8NCisJCVNob3dOb3RpY2VNZXNzYWdlKCZub3Rlcyk7DQorDQor CQkvKiB0aGlzIG1heSBvciBtYXkgbm90IHByaW50IHNvbWV0aGluZyBkZXBl bmRpbmcgb24gc2V0dGluZ3MgKi8NCisJCWlmIChyZXN1bHQgIT0gTlVMTCkN CisJCQlzdWNjZXNzICY9IEhhbmRsZVF1ZXJ5UmVzdWx0KHJlc3VsdCwgbGFz dCk7DQorDQorCQkvKiBzZXQgdmFyaWFibGVzIG9uIGxhc3QgcmVzdWx0IGlm IGFsbCB3ZW50IHdlbGwgKi8NCisJCWlmIChsYXN0ICYmIHN1Y2Nlc3MpDQor CQkJU2V0UmVzdWx0VmFyaWFibGVzKHJlc3VsdCwgdHJ1ZSk7DQorDQorCQlD bGVhck9yU2F2ZVJlc3VsdChyZXN1bHQpOw0KKwkJbm90ZXMuaW5fZmxpcCA9 ICFub3Rlcy5pbl9mbGlwOw0KKwkJcmVzdWx0ID0gbmV4dF9yZXN1bHQ7DQor CX0NCisNCisJLyogcmVzZXQgbm90aWNlIGhvb2sgKi8NCisJUFFzZXROb3Rp Y2VQcm9jZXNzb3IocHNldC5kYiwgTm90aWNlUHJvY2Vzc29yLCBOVUxMKTsN CisJdGVybVBRRXhwQnVmZmVyKCZub3Rlcy5mbGlwKTsNCisJdGVybVBRRXhw QnVmZmVyKCZub3Rlcy5mbG9wKTsNCisNCisJLyogbWF5IG5lZWQgdGhpcyB0 byByZWNvdmVyIGZyb20gY29ubiBsb3NzIGR1cmluZyBDT1BZICovDQorCWlm ICghQ2hlY2tDb25uZWN0aW9uKCkpDQorCQlyZXR1cm4gZmFsc2U7DQorDQor CXJldHVybiBzdWNjZXNzOw0KK30NCisNCiANCiAvKg0KICAqIFNlbmRRdWVy eTogc2VuZCB0aGUgcXVlcnkgc3RyaW5nIHRvIHRoZSBiYWNrZW5kDQpAQCAt MTE4MCw5ICsxMjczLDkgQEAgUHJpbnRRdWVyeVJlc3VsdHMoUEdyZXN1bHQg KnJlc3VsdHMpDQogYm9vbA0KIFNlbmRRdWVyeShjb25zdCBjaGFyICpxdWVy eSkNCiB7DQotCVBHcmVzdWx0ICAgKnJlc3VsdHM7DQorCVBHcmVzdWx0ICAg KnJlc3VsdHMgPSBOVUxMOw0KIAlQR1RyYW5zYWN0aW9uU3RhdHVzVHlwZSB0 cmFuc2FjdGlvbl9zdGF0dXM7DQotCWRvdWJsZQkJZWxhcHNlZF9tc2VjID0g MDsNCisJZG91YmxlCQllbGFwc2VkX21zZWMgPSAwLjA7DQogCWJvb2wJCU9L ID0gZmFsc2U7DQogCWludAkJCWk7DQogCWJvb2wJCW9uX2Vycm9yX3JvbGxi YWNrX3NhdmVwb2ludCA9IGZhbHNlOw0KQEAgLTEyODUsMjggKzEzNzgsNyBA QCBTZW5kUXVlcnkoY29uc3QgY2hhciAqcXVlcnkpDQogCQkJIHBzZXQuY3Jv c3N0YWJfZmxhZyB8fCAhaXNfc2VsZWN0X2NvbW1hbmQocXVlcnkpKQ0KIAl7 DQogCQkvKiBEZWZhdWx0IGZldGNoLWl0LWFsbC1hbmQtcHJpbnQgbW9kZSAq Lw0KLQkJaW5zdHJfdGltZQliZWZvcmUsDQotCQkJCQlhZnRlcjsNCi0NCi0J CWlmIChwc2V0LnRpbWluZykNCi0JCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5U KGJlZm9yZSk7DQotDQotCQlyZXN1bHRzID0gUFFleGVjKHBzZXQuZGIsIHF1 ZXJ5KTsNCi0NCi0JCS8qIHRoZXNlIG9wZXJhdGlvbnMgYXJlIGluY2x1ZGVk IGluIHRoZSB0aW1pbmcgcmVzdWx0OiAqLw0KLQkJUmVzZXRDYW5jZWxDb25u KCk7DQotCQlPSyA9IFByb2Nlc3NSZXN1bHQoJnJlc3VsdHMpOw0KLQ0KLQkJ aWYgKHBzZXQudGltaW5nKQ0KLQkJew0KLQkJCUlOU1RSX1RJTUVfU0VUX0NV UlJFTlQoYWZ0ZXIpOw0KLQkJCUlOU1RSX1RJTUVfU1VCVFJBQ1QoYWZ0ZXIs IGJlZm9yZSk7DQotCQkJZWxhcHNlZF9tc2VjID0gSU5TVFJfVElNRV9HRVRf TUlMTElTRUMoYWZ0ZXIpOw0KLQkJfQ0KLQ0KLQkJLyogYnV0IHByaW50aW5n IHJlc3VsdHMgaXNuJ3Q6ICovDQotCQlpZiAoT0sgJiYgcmVzdWx0cykNCi0J CQlPSyA9IFByaW50UXVlcnlSZXN1bHRzKHJlc3VsdHMpOw0KKwkJT0sgPSBT ZW5kUXVlcnlBbmRQcm9jZXNzUmVzdWx0cyhxdWVyeSwgJmVsYXBzZWRfbXNl Yyk7DQogCX0NCiAJZWxzZQ0KIAl7DQpAQCAtMTQ4Myw3ICsxNTU1LDcgQEAg RGVzY3JpYmVRdWVyeShjb25zdCBjaGFyICpxdWVyeSwgZG91YmxlICplbGFw c2VkX21zZWMpDQogCVBRY2xlYXIocmVzdWx0cyk7DQogDQogCXJlc3VsdHMg PSBQUWRlc2NyaWJlUHJlcGFyZWQocHNldC5kYiwgIiIpOw0KLQlPSyA9IEFj Y2VwdFJlc3VsdChyZXN1bHRzKSAmJg0KKwlPSyA9IEFjY2VwdFJlc3VsdChy ZXN1bHRzLCB0cnVlKSAmJg0KIAkJKFBRcmVzdWx0U3RhdHVzKHJlc3VsdHMp ID09IFBHUkVTX0NPTU1BTkRfT0spOw0KIAlpZiAoT0sgJiYgcmVzdWx0cykN CiAJew0KQEAgLTE1MzEsNyArMTYwMyw3IEBAIERlc2NyaWJlUXVlcnkoY29u c3QgY2hhciAqcXVlcnksIGRvdWJsZSAqZWxhcHNlZF9tc2VjKQ0KIAkJCVBR Y2xlYXIocmVzdWx0cyk7DQogDQogCQkJcmVzdWx0cyA9IFBRZXhlYyhwc2V0 LmRiLCBidWYuZGF0YSk7DQotCQkJT0sgPSBBY2NlcHRSZXN1bHQocmVzdWx0 cyk7DQorCQkJT0sgPSBBY2NlcHRSZXN1bHQocmVzdWx0cywgdHJ1ZSk7DQog DQogCQkJaWYgKHBzZXQudGltaW5nKQ0KIAkJCXsNCkBAIC0xNTQxLDcgKzE2 MTMsNyBAQCBEZXNjcmliZVF1ZXJ5KGNvbnN0IGNoYXIgKnF1ZXJ5LCBkb3Vi bGUgKmVsYXBzZWRfbXNlYykNCiAJCQl9DQogDQogCQkJaWYgKE9LICYmIHJl c3VsdHMpDQotCQkJCU9LID0gUHJpbnRRdWVyeVJlc3VsdHMocmVzdWx0cyk7 DQorCQkJCU9LID0gSGFuZGxlUXVlcnlSZXN1bHQocmVzdWx0cywgdHJ1ZSk7 DQogDQogCQkJdGVybVBRRXhwQnVmZmVyKCZidWYpOw0KIAkJfQ0KQEAgLTE2 MDAsNyArMTY3Miw3IEBAIEV4ZWNRdWVyeVVzaW5nQ3Vyc29yKGNvbnN0IGNo YXIgKnF1ZXJ5LCBkb3VibGUgKmVsYXBzZWRfbXNlYykNCiAJaWYgKFBRdHJh bnNhY3Rpb25TdGF0dXMocHNldC5kYikgPT0gUFFUUkFOU19JRExFKQ0KIAl7 DQogCQlyZXN1bHRzID0gUFFleGVjKHBzZXQuZGIsICJCRUdJTiIpOw0KLQkJ T0sgPSBBY2NlcHRSZXN1bHQocmVzdWx0cykgJiYNCisJCU9LID0gQWNjZXB0 UmVzdWx0KHJlc3VsdHMsIHRydWUpICYmDQogCQkJKFBRcmVzdWx0U3RhdHVz KHJlc3VsdHMpID09IFBHUkVTX0NPTU1BTkRfT0spOw0KIAkJQ2xlYXJPclNh dmVSZXN1bHQocmVzdWx0cyk7DQogCQlpZiAoIU9LKQ0KQEAgLTE2MTQsNyAr MTY4Niw3IEBAIEV4ZWNRdWVyeVVzaW5nQ3Vyc29yKGNvbnN0IGNoYXIgKnF1 ZXJ5LCBkb3VibGUgKmVsYXBzZWRfbXNlYykNCiAJCQkJCSAgcXVlcnkpOw0K IA0KIAlyZXN1bHRzID0gUFFleGVjKHBzZXQuZGIsIGJ1Zi5kYXRhKTsNCi0J T0sgPSBBY2NlcHRSZXN1bHQocmVzdWx0cykgJiYNCisJT0sgPSBBY2NlcHRS ZXN1bHQocmVzdWx0cywgdHJ1ZSkgJiYNCiAJCShQUXJlc3VsdFN0YXR1cyhy ZXN1bHRzKSA9PSBQR1JFU19DT01NQU5EX09LKTsNCiAJaWYgKCFPSykNCiAJ CVNldFJlc3VsdFZhcmlhYmxlcyhyZXN1bHRzLCBPSyk7DQpAQCAtMTY5MSw3 ICsxNzYzLDcgQEAgRXhlY1F1ZXJ5VXNpbmdDdXJzb3IoY29uc3QgY2hhciAq cXVlcnksIGRvdWJsZSAqZWxhcHNlZF9tc2VjKQ0KIAkJCQlpc19wYWdlciA9 IGZhbHNlOw0KIAkJCX0NCiANCi0JCQlPSyA9IEFjY2VwdFJlc3VsdChyZXN1 bHRzKTsNCisJCQlPSyA9IEFjY2VwdFJlc3VsdChyZXN1bHRzLCB0cnVlKTsN CiAJCQlBc3NlcnQoIU9LKTsNCiAJCQlTZXRSZXN1bHRWYXJpYWJsZXMocmVz dWx0cywgT0spOw0KIAkJCUNsZWFyT3JTYXZlUmVzdWx0KHJlc3VsdHMpOw0K QEAgLTE4MDAsNyArMTg3Miw3IEBAIGNsZWFudXA6DQogCXJlc3VsdHMgPSBQ UWV4ZWMocHNldC5kYiwgIkNMT1NFIF9wc3FsX2N1cnNvciIpOw0KIAlpZiAo T0spDQogCXsNCi0JCU9LID0gQWNjZXB0UmVzdWx0KHJlc3VsdHMpICYmDQor CQlPSyA9IEFjY2VwdFJlc3VsdChyZXN1bHRzLCB0cnVlKSAmJg0KIAkJCShQ UXJlc3VsdFN0YXR1cyhyZXN1bHRzKSA9PSBQR1JFU19DT01NQU5EX09LKTsN CiAJCUNsZWFyT3JTYXZlUmVzdWx0KHJlc3VsdHMpOw0KIAl9DQpAQCAtMTgx MCw3ICsxODgyLDcgQEAgY2xlYW51cDoNCiAJaWYgKHN0YXJ0ZWRfdHhuKQ0K IAl7DQogCQlyZXN1bHRzID0gUFFleGVjKHBzZXQuZGIsIE9LID8gIkNPTU1J VCIgOiAiUk9MTEJBQ0siKTsNCi0JCU9LICY9IEFjY2VwdFJlc3VsdChyZXN1 bHRzKSAmJg0KKwkJT0sgJj0gQWNjZXB0UmVzdWx0KHJlc3VsdHMsIHRydWUp ICYmDQogCQkJKFBRcmVzdWx0U3RhdHVzKHJlc3VsdHMpID09IFBHUkVTX0NP TU1BTkRfT0spOw0KIAkJQ2xlYXJPclNhdmVSZXN1bHQocmVzdWx0cyk7DQog CX0NCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Nv cHkyLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weTIub3V0 DQppbmRleCBjNTNlZDNlYmY1Li45YzhjODM2MWY4IDEwMDY0NA0KLS0tIGEv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Mi5vdXQNCisrKyBiL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weTIub3V0DQpAQCAtNDc1LDEw ICs0NzUsMTAgQEAgY29weSBjaGVja19jb25fdGJsIGZyb20gc3RkaW47DQog Tk9USUNFOiAgaW5wdXQgPSB7ImYxIjoxfQ0KIE5PVElDRTogIGlucHV0ID0g eyJmMSI6bnVsbH0NCiBjb3B5IGNoZWNrX2Nvbl90YmwgZnJvbSBzdGRpbjsN Ci1OT1RJQ0U6ICBpbnB1dCA9IHsiZjEiOjB9DQogRVJST1I6ICBuZXcgcm93 IGZvciByZWxhdGlvbiAiY2hlY2tfY29uX3RibCIgdmlvbGF0ZXMgY2hlY2sg Y29uc3RyYWludCAiY2hlY2tfY29uX3RibF9jaGVjayINCiBERVRBSUw6ICBG YWlsaW5nIHJvdyBjb250YWlucyAoMCkuDQogQ09OVEVYVDogIENPUFkgY2hl Y2tfY29uX3RibCwgbGluZSAxOiAiMCINCitOT1RJQ0U6ICBpbnB1dCA9IHsi ZjEiOjB9DQogc2VsZWN0ICogZnJvbSBjaGVja19jb25fdGJsOw0KICBmMSAN CiAtLS0tDQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9jb3B5ZG1sLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29w eWRtbC5vdXQNCmluZGV4IDFiNTMzOTYyYzYuLmI1YTIyNTYyOGYgMTAwNjQ0 DQotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHlkbWwub3V0 DQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHlkbWwub3V0 DQpAQCAtODQsMTAgKzg0LDEwIEBAIGRyb3AgcnVsZSBxcXEgb24gY29weWRt bF90ZXN0Ow0KIGNyZWF0ZSBmdW5jdGlvbiBxcXFfdHJpZygpIHJldHVybnMg dHJpZ2dlciBhcyAkJA0KIGJlZ2luDQogaWYgdGdfb3AgaW4gKCdJTlNFUlQn LCAnVVBEQVRFJykgdGhlbg0KLSAgICByYWlzZSBub3RpY2UgJyUgJScsIHRn X29wLCBuZXcuaWQ7DQorICAgIHJhaXNlIG5vdGljZSAnJSAlICUnLCB0Z193 aGVuLCB0Z19vcCwgbmV3LmlkOw0KICAgICByZXR1cm4gbmV3Ow0KIGVsc2UN Ci0gICAgcmFpc2Ugbm90aWNlICclICUnLCB0Z19vcCwgb2xkLmlkOw0KKyAg ICByYWlzZSBub3RpY2UgJyUgJSAlJywgdGdfd2hlbiwgdGdfb3AsIG9sZC5p ZDsNCiAgICAgcmV0dXJuIG9sZDsNCiBlbmQgaWY7DQogZW5kDQpAQCAtOTcs MTYgKzk3LDE2IEBAIGNyZWF0ZSB0cmlnZ2VyIHFxcWJlZiBiZWZvcmUgaW5z ZXJ0IG9yIHVwZGF0ZSBvciBkZWxldGUgb24gY29weWRtbF90ZXN0DQogY3Jl YXRlIHRyaWdnZXIgcXFxYWYgYWZ0ZXIgaW5zZXJ0IG9yIHVwZGF0ZSBvciBk ZWxldGUgb24gY29weWRtbF90ZXN0DQogICAgIGZvciBlYWNoIHJvdyBleGVj dXRlIHByb2NlZHVyZSBxcXFfdHJpZygpOw0KIGNvcHkgKGluc2VydCBpbnRv IGNvcHlkbWxfdGVzdCAodCkgdmFsdWVzICgnZicpIHJldHVybmluZyBpZCkg dG8gc3Rkb3V0Ow0KLU5PVElDRTogIElOU0VSVCA4DQorTk9USUNFOiAgQkVG T1JFIElOU0VSVCA4DQogOA0KLU5PVElDRTogIElOU0VSVCA4DQorTk9USUNF OiAgQUZURVIgSU5TRVJUIDgNCiBjb3B5ICh1cGRhdGUgY29weWRtbF90ZXN0 IHNldCB0ID0gJ2cnIHdoZXJlIHQgPSAnZicgcmV0dXJuaW5nIGlkKSB0byBz dGRvdXQ7DQotTk9USUNFOiAgVVBEQVRFIDgNCitOT1RJQ0U6ICBCRUZPUkUg VVBEQVRFIDgNCiA4DQotTk9USUNFOiAgVVBEQVRFIDgNCitOT1RJQ0U6ICBB RlRFUiBVUERBVEUgOA0KIGNvcHkgKGRlbGV0ZSBmcm9tIGNvcHlkbWxfdGVz dCB3aGVyZSB0ID0gJ2cnIHJldHVybmluZyBpZCkgdG8gc3Rkb3V0Ow0KLU5P VElDRTogIERFTEVURSA4DQorTk9USUNFOiAgQkVGT1JFIERFTEVURSA4DQog OA0KLU5PVElDRTogIERFTEVURSA4DQorTk9USUNFOiAgQUZURVIgREVMRVRF IDgNCiBkcm9wIHRhYmxlIGNvcHlkbWxfdGVzdDsNCiBkcm9wIGZ1bmN0aW9u IHFxcV90cmlnKCk7DQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9jb3B5c2VsZWN0Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvY29weXNlbGVjdC5vdXQNCmluZGV4IDcyODY1ZmUxZWIuLjM5YWI4 ZmM4N2EgMTAwNjQ0DQotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L2NvcHlzZWxlY3Qub3V0DQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL2NvcHlzZWxlY3Qub3V0DQpAQCAtMTI2LDcgKzEyNiw3IEBAIGNvcHkg KHNlbGVjdCAxKSB0byBzdGRvdXRcOyBzZWxlY3QgMS8wOwktLSByb3csIHRo ZW4gZXJyb3INCiBFUlJPUjogIGRpdmlzaW9uIGJ5IHplcm8NCiBzZWxlY3Qg MS8wXDsgY29weSAoc2VsZWN0IDEpIHRvIHN0ZG91dDsgLS0gZXJyb3Igb25s eQ0KIEVSUk9SOiAgZGl2aXNpb24gYnkgemVybw0KLWNvcHkgKHNlbGVjdCAx KSB0byBzdGRvdXRcOyBjb3B5IChzZWxlY3QgMikgdG8gc3Rkb3V0XDsgc2Vs ZWN0IDBcOyBzZWxlY3QgMzsgLS0gMSAyIDMNCitjb3B5IChzZWxlY3QgMSkg dG8gc3Rkb3V0XDsgY29weSAoc2VsZWN0IDIpIHRvIHN0ZG91dFw7IHNlbGVj dCAzXDsgc2VsZWN0IDQ7IC0tIDEgMiAzIDQNCiAxDQogMg0KICA/Y29sdW1u PyANCkBAIC0xMzQsOCArMTM0LDE4IEBAIGNvcHkgKHNlbGVjdCAxKSB0byBz dGRvdXRcOyBjb3B5IChzZWxlY3QgMikgdG8gc3Rkb3V0XDsgc2VsZWN0IDBc OyBzZWxlY3QgMzsgLS0NCiAgICAgICAgIDMNCiAoMSByb3cpDQogDQorID9j b2x1bW4/IA0KKy0tLS0tLS0tLS0NCisgICAgICAgIDQNCisoMSByb3cpDQor DQogY3JlYXRlIHRhYmxlIHRlc3QzIChjIGludCk7DQogc2VsZWN0IDBcOyBj b3B5IHRlc3QzIGZyb20gc3RkaW5cOyBjb3B5IHRlc3QzIGZyb20gc3RkaW5c OyBzZWxlY3QgMTsgLS0gMQ0KKyA/Y29sdW1uPyANCistLS0tLS0tLS0tDQor ICAgICAgICAwDQorKDEgcm93KQ0KKw0KICA/Y29sdW1uPyANCiAtLS0tLS0t LS0tDQogICAgICAgICAxDQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9wc3FsLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvcHNxbC5vdXQNCmluZGV4IDI0MmY4MTcxNjMuLmFlOTg3YjU0OGMgMTAw NjQ0DQotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwub3V0 DQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwub3V0DQpA QCAtNDgwOSwzICs0ODA5LDg3IEBAIE93bmluZyB0YWJsZTogInBnX2NhdGFs b2cucGdfc3RhdGlzdGljIg0KIEluZGV4ZXM6DQogICAgICJwZ190b2FzdF8y NjE5X2luZGV4IiBQUklNQVJZIEtFWSwgYnRyZWUgKGNodW5rX2lkLCBjaHVu a19zZXEpDQogDQorLS0NCistLSBjb21iaW5lZCBxdWVyaWVzDQorLS0NCitc ZWNobyAnIyBjb21iaW5lZCBxdWVyaWVzIHRlc3RzJw0KKyMgY29tYmluZWQg cXVlcmllcyB0ZXN0cw0KK0NSRUFURSBGVU5DVElPTiB3YXJuKG1zZyBURVhU KSBSRVRVUk5TIEJPT0xFQU4gQVMgJCQNCisgIEJFR0lOIFJBSVNFIE5PVElD RSAnd2FybiAlJywgbXNnIDsgUkVUVVJOIFRSVUUgOyBFTkQNCiskJCBMQU5H VUFHRSBwbHBnc3FsOw0KKy0tIHNob3cgYm90aA0KK1NFTEVDVCAxIEFTIG9u ZSBcOyBTRUxFQ1Qgd2FybignMS41JykgXDsgU0VMRUNUIDIgQVMgdHdvIDsN Cisgb25lIA0KKy0tLS0tDQorICAgMQ0KKygxIHJvdykNCisNCitOT1RJQ0U6 ICB3YXJuIDEuNQ0KK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiB3YXJu KHRleHQpIGxpbmUgMiBhdCBSQUlTRQ0KKyB3YXJuIA0KKy0tLS0tLQ0KKyB0 DQorKDEgcm93KQ0KKw0KKyB0d28gDQorLS0tLS0NCisgICAyDQorKDEgcm93 KQ0KKw0KKy0tIFxnc2V0IGFwcGxpZXMgdG8gbGFzdCBxdWVyeSBvbmx5DQor U0VMRUNUIDMgQVMgdGhyZWUgXDsgU0VMRUNUIHdhcm4oJzMuNScpIFw7IFNF TEVDVCA0IEFTIGZvdXIgXGdzZXQNCisgdGhyZWUgDQorLS0tLS0tLQ0KKyAg ICAgMw0KKygxIHJvdykNCisNCitOT1RJQ0U6ICB3YXJuIDMuNQ0KK0NPTlRF WFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiB3YXJuKHRleHQpIGxpbmUgMiBhdCBS QUlTRQ0KKyB3YXJuIA0KKy0tLS0tLQ0KKyB0DQorKDEgcm93KQ0KKw0KK1xl Y2hvIDp0aHJlZSA6Zm91cg0KKzp0aHJlZSA0DQorLS0gc3ludGF4IGVycm9y IHN0b3BzIGFsbCBwcm9jZXNzaW5nDQorU0VMRUNUIDUgXDsgU0VMRUNUIDYg KyBcOyBTRUxFQ1Qgd2FybignNi41JykgXDsgU0VMRUNUIDcgOw0KK0VSUk9S OiAgc3ludGF4IGVycm9yIGF0IG9yIG5lYXIgIjsiDQorTElORSAxOiBTRUxF Q1QgNSA7IFNFTEVDVCA2ICsgOyBTRUxFQ1Qgd2FybignNi41JykgOyBTRUxF Q1QgNyA7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXg0KKy0t IHdpdGggYWJvcnRlZCB0cmFuc2FjdGlvbiwgc3RvcCBvbiBmaXJzdCBlcnJv cg0KK0JFR0lOIFw7IFNFTEVDVCA4IEFTIGVpZ2h0IFw7IFNFTEVDVCA5LzAg QVMgbmluZSBcOyBST0xMQkFDSyBcOyBTRUxFQ1QgMTAgQVMgdGVuIDsNCisg ZWlnaHQgDQorLS0tLS0tLQ0KKyAgICAgOA0KKygxIHJvdykNCisNCitFUlJP UjogIGRpdmlzaW9uIGJ5IHplcm8NCistLSBjbG9zZSBwcmV2aW91c2x5IGFi b3J0ZWQgdHJhbnNhY3Rpb24NCitST0xMQkFDSzsNCistLSBtaXNjIFNRTCBj b21tYW5kcw0KKy0tIChub24gU0VMRUNUIG91dHB1dCBpcyBzZW50IHRvIHN0 ZGVyciwgdGh1cyBpcyBub3Qgc2hvd24gaW4gZXhwZWN0ZWQgcmVzdWx0cykN CitTRUxFQ1QgJ29rJyBBUyAiYmVnaW4iIFw7DQorQ1JFQVRFIFRBQkxFIHBz cWxfY29taWNzKHMgVEVYVCkgXDsNCitJTlNFUlQgSU5UTyBwc3FsX2NvbWlj cyBWQUxVRVMgKCdDYWx2aW4nKSwgKCdob2JiZXMnKSBcOw0KK0NPUFkgcHNx bF9jb21pY3MgRlJPTSBTVERJTiBcOw0KK1VQREFURSBwc3FsX2NvbWljcyBT RVQgcyA9ICdIb2JiZXMnIFdIRVJFIHMgPSAnaG9iYmVzJyBcOw0KK0RFTEVU RSBGUk9NIHBzcWxfY29taWNzIFdIRVJFIHMgPSAnTW9lJyBcOw0KK0NPUFkg cHNxbF9jb21pY3MgVE8gU1RET1VUIFw7DQorVFJVTkNBVEUgcHNxbF9jb21p Y3MgXDsNCitEUk9QIFRBQkxFIHBzcWxfY29taWNzIFw7DQorU0VMRUNUICdv aycgQVMgImRvbmUiIDsNCisgYmVnaW4gDQorLS0tLS0tLQ0KKyBvaw0KKygx IHJvdykNCisNCitDYWx2aW4NCitTdXNpZQ0KK0hvYmJlcw0KKyBkb25lIA0K Ky0tLS0tLQ0KKyBvaw0KKygxIHJvdykNCisNCitEUk9QIEZVTkNUSU9OIHdh cm4oVEVYVCk7DQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC90cmFuc2FjdGlvbnMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC90cmFuc2FjdGlvbnMub3V0DQppbmRleCAxYjAzMzEwMDI5Li5lMmI1 OGU5ZjI5IDEwMDY0NA0KLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC90cmFuc2FjdGlvbnMub3V0DQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3RyYW5zYWN0aW9ucy5vdXQNCkBAIC04NjAsMTEgKzg2MCwyMSBA QCBEUk9QIFRBQkxFIGFiYzsNCiAtLSB0ZXN0cyByZWx5IG9uIHRoZSBmYWN0 IHRoYXQgcHNxbCB3aWxsIG5vdCBicmVhayBTUUwgY29tbWFuZHMgYXBhcnQg YXQgYQ0KIC0tIGJhY2tzbGFzaC1xdW90ZWQgc2VtaWNvbG9uLCBidXQgd2ls bCBzZW5kIHRoZW0gYXMgb25lIFF1ZXJ5Lg0KIGNyZWF0ZSB0ZW1wIHRhYmxl IGlfdGFibGUgKGYxIGludCk7DQotLS0gcHNxbCB3aWxsIHNob3cgb25seSB0 aGUgbGFzdCByZXN1bHQgaW4gYSBtdWx0aS1zdGF0ZW1lbnQgUXVlcnkNCi1T RUxFQ1QgMVw7IFNFTEVDVCAyXDsgU0VMRUNUIDM7DQotID9jb2x1bW4/IA0K LS0tLS0tLS0tLS0NCi0gICAgICAgIDMNCistLSBwc3FsIHdpbGwgc2hvdyBh bGwgcmVzdWx0cyBvZiBhIG11bHRpLXN0YXRlbWVudCBRdWVyeQ0KK1NFTEVD VCAxIEFTIG9uZVw7IFNFTEVDVCAyIEFTIHR3b1w7IFNFTEVDVCAzIEFTIHRo cmVlOw0KKyBvbmUgDQorLS0tLS0NCisgICAxDQorKDEgcm93KQ0KKw0KKyB0 d28gDQorLS0tLS0NCisgICAyDQorKDEgcm93KQ0KKw0KKyB0aHJlZSANCist LS0tLS0tDQorICAgICAzDQogKDEgcm93KQ0KIA0KIC0tIHRoaXMgaW1wbGlj aXRseSBjb21taXRzOg0KQEAgLTg3Niw2ICs4ODYsMTIgQEAgaW5zZXJ0IGlu dG8gaV90YWJsZSB2YWx1ZXMoMSlcOyBzZWxlY3QgKiBmcm9tIGlfdGFibGU7 DQogDQogLS0gMS8wIGVycm9yIHdpbGwgY2F1c2Ugcm9sbGluZyBiYWNrIHRo ZSB3aG9sZSBpbXBsaWNpdCB0cmFuc2FjdGlvbg0KIGluc2VydCBpbnRvIGlf dGFibGUgdmFsdWVzKDIpXDsgc2VsZWN0ICogZnJvbSBpX3RhYmxlXDsgc2Vs ZWN0IDEvMDsNCisgZjEgDQorLS0tLQ0KKyAgMQ0KKyAgMg0KKygyIHJvd3Mp DQorDQogRVJST1I6ICBkaXZpc2lvbiBieSB6ZXJvDQogc2VsZWN0ICogZnJv bSBpX3RhYmxlOw0KICBmMSANCkBAIC04OTQsOSArOTEwLDE5IEBAIHJvbGxi YWNrOyAgLS0gd2UgYXJlIG5vdCBpbiBhIHRyYW5zYWN0aW9uIGF0IHRoaXMg cG9pbnQNCiBXQVJOSU5HOiAgdGhlcmUgaXMgbm8gdHJhbnNhY3Rpb24gaW4g cHJvZ3Jlc3MNCiAtLSBiZWdpbiBjb252ZXJ0cyBpbXBsaWNpdCB0cmFuc2Fj dGlvbiBpbnRvIGEgcmVndWxhciBvbmUgdGhhdA0KIC0tIGNhbiBleHRlbmQg cGFzdCB0aGUgZW5kIG9mIHRoZSBRdWVyeQ0KLXNlbGVjdCAxXDsgYmVnaW5c OyBpbnNlcnQgaW50byBpX3RhYmxlIHZhbHVlcyg1KTsNCitzZWxlY3QgMSBB UyBvbmVcOyBiZWdpblw7IGluc2VydCBpbnRvIGlfdGFibGUgdmFsdWVzKDUp Ow0KKyBvbmUgDQorLS0tLS0NCisgICAxDQorKDEgcm93KQ0KKw0KIGNvbW1p dDsNCi1zZWxlY3QgMVw7IGJlZ2luXDsgaW5zZXJ0IGludG8gaV90YWJsZSB2 YWx1ZXMoNik7DQorc2VsZWN0IDEgQVMgb25lXDsgYmVnaW5cOyBpbnNlcnQg aW50byBpX3RhYmxlIHZhbHVlcyg2KTsNCisgb25lIA0KKy0tLS0tDQorICAg MQ0KKygxIHJvdykNCisNCiByb2xsYmFjazsNCiAtLSBjb21taXQgaW4gaW1w bGljaXQtdHJhbnNhY3Rpb24gc3RhdGUgY29tbWl0cyBidXQgaXNzdWVzIGEg d2FybmluZy4NCiBpbnNlcnQgaW50byBpX3RhYmxlIHZhbHVlcyg3KVw7IGNv bW1pdFw7IGluc2VydCBpbnRvIGlfdGFibGUgdmFsdWVzKDgpXDsgc2VsZWN0 IDEvMDsNCkBAIC05MjIsMjMgKzk0OCw1MyBAQCBzZWxlY3QgKiBmcm9tIGlf dGFibGU7DQogcm9sbGJhY2s7ICAtLSB3ZSBhcmUgbm90IGluIGEgdHJhbnNh Y3Rpb24gYXQgdGhpcyBwb2ludA0KIFdBUk5JTkc6ICB0aGVyZSBpcyBubyB0 cmFuc2FjdGlvbiBpbiBwcm9ncmVzcw0KIC0tIGltcGxpY2l0IHRyYW5zYWN0 aW9uIGJsb2NrIGlzIHN0aWxsIGEgdHJhbnNhY3Rpb24gYmxvY2ssIGZvciBl LmcuIFZBQ1VVTQ0KLVNFTEVDVCAxXDsgVkFDVVVNOw0KK1NFTEVDVCAxIEFT IG9uZVw7IFZBQ1VVTTsNCisgb25lIA0KKy0tLS0tDQorICAgMQ0KKygxIHJv dykNCisNCiBFUlJPUjogIFZBQ1VVTSBjYW5ub3QgcnVuIGluc2lkZSBhIHRy YW5zYWN0aW9uIGJsb2NrDQotU0VMRUNUIDFcOyBDT01NSVRcOyBWQUNVVU07 DQorU0VMRUNUIDIgQVMgdHdvXDsgQ09NTUlUXDsgVkFDVVVNOw0KIFdBUk5J Tkc6ICB0aGVyZSBpcyBubyB0cmFuc2FjdGlvbiBpbiBwcm9ncmVzcw0KKyB0 d28gDQorLS0tLS0NCisgICAyDQorKDEgcm93KQ0KKw0KIEVSUk9SOiAgVkFD VVVNIGNhbm5vdCBydW4gaW5zaWRlIGEgdHJhbnNhY3Rpb24gYmxvY2sNCiAt LSB3ZSBkaXNhbGxvdyBzYXZlcG9pbnQtcmVsYXRlZCBjb21tYW5kcyBpbiBp bXBsaWNpdC10cmFuc2FjdGlvbiBzdGF0ZQ0KLVNFTEVDVCAxXDsgU0FWRVBP SU5UIHNwOw0KK1NFTEVDVCAzIEFTIHRocmVlXDsgU0FWRVBPSU5UIHNwOw0K KyB0aHJlZSANCistLS0tLS0tDQorICAgICAzDQorKDEgcm93KQ0KKw0KIEVS Uk9SOiAgU0FWRVBPSU5UIGNhbiBvbmx5IGJlIHVzZWQgaW4gdHJhbnNhY3Rp b24gYmxvY2tzDQotU0VMRUNUIDFcOyBDT01NSVRcOyBTQVZFUE9JTlQgc3A7 DQorU0VMRUNUIDQgQVMgZm91clw7IENPTU1JVFw7IFNBVkVQT0lOVCBzcDsN CiBXQVJOSU5HOiAgdGhlcmUgaXMgbm8gdHJhbnNhY3Rpb24gaW4gcHJvZ3Jl c3MNCisgZm91ciANCistLS0tLS0NCisgICAgNA0KKygxIHJvdykNCisNCiBF UlJPUjogIFNBVkVQT0lOVCBjYW4gb25seSBiZSB1c2VkIGluIHRyYW5zYWN0 aW9uIGJsb2Nrcw0KLVJPTExCQUNLIFRPIFNBVkVQT0lOVCBzcFw7IFNFTEVD VCAyOw0KK1JPTExCQUNLIFRPIFNBVkVQT0lOVCBzcFw7IFNFTEVDVCA1IEFT IGZpdmU7DQogRVJST1I6ICBST0xMQkFDSyBUTyBTQVZFUE9JTlQgY2FuIG9u bHkgYmUgdXNlZCBpbiB0cmFuc2FjdGlvbiBibG9ja3MNCi1TRUxFQ1QgMlw7 IFJFTEVBU0UgU0FWRVBPSU5UIHNwXDsgU0VMRUNUIDM7DQorU0VMRUNUIDYg QVMgc2l4XDsgUkVMRUFTRSBTQVZFUE9JTlQgc3BcOyBTRUxFQ1QgNyBBUyBz ZXZlbjsNCisgc2l4IA0KKy0tLS0tDQorICAgNg0KKygxIHJvdykNCisNCiBF UlJPUjogIFJFTEVBU0UgU0FWRVBPSU5UIGNhbiBvbmx5IGJlIHVzZWQgaW4g dHJhbnNhY3Rpb24gYmxvY2tzDQogLS0gYnV0IHRoaXMgaXMgT0ssIGJlY2F1 c2UgdGhlIEJFR0lOIGNvbnZlcnRzIGl0IHRvIGEgcmVndWxhciB4YWN0DQot U0VMRUNUIDFcOyBCRUdJTlw7IFNBVkVQT0lOVCBzcFw7IFJPTExCQUNLIFRP IFNBVkVQT0lOVCBzcFw7IENPTU1JVDsNCitTRUxFQ1QgOFw7IEJFR0lOXDsg U0FWRVBPSU5UIHNwXDsgUk9MTEJBQ0sgVE8gU0FWRVBPSU5UIHNwXDsgQ09N TUlUOw0KKyA/Y29sdW1uPyANCistLS0tLS0tLS0tDQorICAgICAgICA4DQor KDEgcm93KQ0KKw0KIC0tIFRlc3RzIGZvciBBTkQgQ0hBSU4gaW4gaW1wbGlj aXQgdHJhbnNhY3Rpb24gYmxvY2tzDQogU0VUIFRSQU5TQUNUSU9OIFJFQUQg T05MWVw7IENPTU1JVCBBTkQgQ0hBSU47ICAtLSBlcnJvcg0KIEVSUk9SOiAg Q09NTUlUIEFORCBDSEFJTiBjYW4gb25seSBiZSB1c2VkIGluIHRyYW5zYWN0 aW9uIGJsb2Nrcw0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L2NvcHlkbWwuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weWRtbC5z cWwNCmluZGV4IDlhMjlmOWM5YWMuLjQ1NzgzNDIyNTMgMTAwNjQ0DQotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5ZG1sLnNxbA0KKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvY29weWRtbC5zcWwNCkBAIC03MCwxMCArNzAs MTAgQEAgZHJvcCBydWxlIHFxcSBvbiBjb3B5ZG1sX3Rlc3Q7DQogY3JlYXRl IGZ1bmN0aW9uIHFxcV90cmlnKCkgcmV0dXJucyB0cmlnZ2VyIGFzICQkDQog YmVnaW4NCiBpZiB0Z19vcCBpbiAoJ0lOU0VSVCcsICdVUERBVEUnKSB0aGVu DQotICAgIHJhaXNlIG5vdGljZSAnJSAlJywgdGdfb3AsIG5ldy5pZDsNCisg ICAgcmFpc2Ugbm90aWNlICclICUgJScsIHRnX3doZW4sIHRnX29wLCBuZXcu aWQ7DQogICAgIHJldHVybiBuZXc7DQogZWxzZQ0KLSAgICByYWlzZSBub3Rp Y2UgJyUgJScsIHRnX29wLCBvbGQuaWQ7DQorICAgIHJhaXNlIG5vdGljZSAn JSAlICUnLCB0Z193aGVuLCB0Z19vcCwgb2xkLmlkOw0KICAgICByZXR1cm4g b2xkOw0KIGVuZCBpZjsNCiBlbmQNCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9jb3B5c2VsZWN0LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL2NvcHlzZWxlY3Quc3FsDQppbmRleCAxZDk4ZGFkM2M4Li5hYmMzMzkw NGMwIDEwMDY0NA0KLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weXNl bGVjdC5zcWwNCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvcHlzZWxl Y3Quc3FsDQpAQCAtODQsNyArODQsNyBAQCBkcm9wIHRhYmxlIHRlc3QxOw0K IC0tIHBzcWwgaGFuZGxpbmcgb2YgQ09QWSBpbiBtdWx0aS1jb21tYW5kIHN0 cmluZ3MNCiBjb3B5IChzZWxlY3QgMSkgdG8gc3Rkb3V0XDsgc2VsZWN0IDEv MDsJLS0gcm93LCB0aGVuIGVycm9yDQogc2VsZWN0IDEvMFw7IGNvcHkgKHNl bGVjdCAxKSB0byBzdGRvdXQ7IC0tIGVycm9yIG9ubHkNCi1jb3B5IChzZWxl Y3QgMSkgdG8gc3Rkb3V0XDsgY29weSAoc2VsZWN0IDIpIHRvIHN0ZG91dFw7 IHNlbGVjdCAwXDsgc2VsZWN0IDM7IC0tIDEgMiAzDQorY29weSAoc2VsZWN0 IDEpIHRvIHN0ZG91dFw7IGNvcHkgKHNlbGVjdCAyKSB0byBzdGRvdXRcOyBz ZWxlY3QgM1w7IHNlbGVjdCA0OyAtLSAxIDIgMyA0DQogDQogY3JlYXRlIHRh YmxlIHRlc3QzIChjIGludCk7DQogc2VsZWN0IDBcOyBjb3B5IHRlc3QzIGZy b20gc3RkaW5cOyBjb3B5IHRlc3QzIGZyb20gc3RkaW5cOyBzZWxlY3QgMTsg LS0gMQ0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BzcWwu c3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHNxbC5zcWwNCmluZGV4IDI2 YTBiY2Y3MTguLjkwM2M0MTNmOTAgMTAwNjQ0DQotLS0gYS9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9wc3FsLnNxbA0KKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9z cWwvcHNxbC5zcWwNCkBAIC0xMTgyLDMgKzExODIsMzggQEAgZHJvcCByb2xl IHJlZ3Jlc3NfcGFydGl0aW9uaW5nX3JvbGU7DQogDQogLS0gXGQgb24gdG9h c3QgdGFibGUgKHVzZSBwZ19zdGF0aXN0aWMncyB0b2FzdCB0YWJsZSwgd2hp Y2ggaGFzIGEga25vd24gbmFtZSkNCiBcZCBwZ190b2FzdC5wZ190b2FzdF8y NjE5DQorDQorLS0NCistLSBjb21iaW5lZCBxdWVyaWVzDQorLS0NCitcZWNo byAnIyBjb21iaW5lZCBxdWVyaWVzIHRlc3RzJw0KK0NSRUFURSBGVU5DVElP TiB3YXJuKG1zZyBURVhUKSBSRVRVUk5TIEJPT0xFQU4gQVMgJCQNCisgIEJF R0lOIFJBSVNFIE5PVElDRSAnd2FybiAlJywgbXNnIDsgUkVUVVJOIFRSVUUg OyBFTkQNCiskJCBMQU5HVUFHRSBwbHBnc3FsOw0KKy0tIHNob3cgYm90aA0K K1NFTEVDVCAxIEFTIG9uZSBcOyBTRUxFQ1Qgd2FybignMS41JykgXDsgU0VM RUNUIDIgQVMgdHdvIDsNCistLSBcZ3NldCBhcHBsaWVzIHRvIGxhc3QgcXVl cnkgb25seQ0KK1NFTEVDVCAzIEFTIHRocmVlIFw7IFNFTEVDVCB3YXJuKCcz LjUnKSBcOyBTRUxFQ1QgNCBBUyBmb3VyIFxnc2V0DQorXGVjaG8gOnRocmVl IDpmb3VyDQorLS0gc3ludGF4IGVycm9yIHN0b3BzIGFsbCBwcm9jZXNzaW5n DQorU0VMRUNUIDUgXDsgU0VMRUNUIDYgKyBcOyBTRUxFQ1Qgd2FybignNi41 JykgXDsgU0VMRUNUIDcgOw0KKy0tIHdpdGggYWJvcnRlZCB0cmFuc2FjdGlv biwgc3RvcCBvbiBmaXJzdCBlcnJvcg0KK0JFR0lOIFw7IFNFTEVDVCA4IEFT IGVpZ2h0IFw7IFNFTEVDVCA5LzAgQVMgbmluZSBcOyBST0xMQkFDSyBcOyBT RUxFQ1QgMTAgQVMgdGVuIDsNCistLSBjbG9zZSBwcmV2aW91c2x5IGFib3J0 ZWQgdHJhbnNhY3Rpb24NCitST0xMQkFDSzsNCistLSBtaXNjIFNRTCBjb21t YW5kcw0KKy0tIChub24gU0VMRUNUIG91dHB1dCBpcyBzZW50IHRvIHN0ZGVy ciwgdGh1cyBpcyBub3Qgc2hvd24gaW4gZXhwZWN0ZWQgcmVzdWx0cykNCitT RUxFQ1QgJ29rJyBBUyAiYmVnaW4iIFw7DQorQ1JFQVRFIFRBQkxFIHBzcWxf Y29taWNzKHMgVEVYVCkgXDsNCitJTlNFUlQgSU5UTyBwc3FsX2NvbWljcyBW QUxVRVMgKCdDYWx2aW4nKSwgKCdob2JiZXMnKSBcOw0KK0NPUFkgcHNxbF9j b21pY3MgRlJPTSBTVERJTiBcOw0KK1VQREFURSBwc3FsX2NvbWljcyBTRVQg cyA9ICdIb2JiZXMnIFdIRVJFIHMgPSAnaG9iYmVzJyBcOw0KK0RFTEVURSBG Uk9NIHBzcWxfY29taWNzIFdIRVJFIHMgPSAnTW9lJyBcOw0KK0NPUFkgcHNx bF9jb21pY3MgVE8gU1RET1VUIFw7DQorVFJVTkNBVEUgcHNxbF9jb21pY3Mg XDsNCitEUk9QIFRBQkxFIHBzcWxfY29taWNzIFw7DQorU0VMRUNUICdvaycg QVMgImRvbmUiIDsNCitNb2UNCitTdXNpZQ0KK1wuDQorRFJPUCBGVU5DVElP TiB3YXJuKFRFWFQpOw0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3RyYW5zYWN0aW9ucy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC90 cmFuc2FjdGlvbnMuc3FsDQppbmRleCBiZjEwMTY0ODlkLi4zYTdlNWQ0NTgy IDEwMDY0NA0KLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdHJhbnNhY3Rp b25zLnNxbA0KKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdHJhbnNhY3Rp b25zLnNxbA0KQEAgLTQ5Myw4ICs0OTMsOCBAQCBEUk9QIFRBQkxFIGFiYzsN CiANCiBjcmVhdGUgdGVtcCB0YWJsZSBpX3RhYmxlIChmMSBpbnQpOw0KIA0K LS0tIHBzcWwgd2lsbCBzaG93IG9ubHkgdGhlIGxhc3QgcmVzdWx0IGluIGEg bXVsdGktc3RhdGVtZW50IFF1ZXJ5DQotU0VMRUNUIDFcOyBTRUxFQ1QgMlw7 IFNFTEVDVCAzOw0KKy0tIHBzcWwgd2lsbCBzaG93IGFsbCByZXN1bHRzIG9m IGEgbXVsdGktc3RhdGVtZW50IFF1ZXJ5DQorU0VMRUNUIDEgQVMgb25lXDsg U0VMRUNUIDIgQVMgdHdvXDsgU0VMRUNUIDMgQVMgdGhyZWU7DQogDQogLS0g dGhpcyBpbXBsaWNpdGx5IGNvbW1pdHM6DQogaW5zZXJ0IGludG8gaV90YWJs ZSB2YWx1ZXMoMSlcOyBzZWxlY3QgKiBmcm9tIGlfdGFibGU7DQpAQCAtNTEy LDkgKzUxMiw5IEBAIHJvbGxiYWNrOyAgLS0gd2UgYXJlIG5vdCBpbiBhIHRy YW5zYWN0aW9uIGF0IHRoaXMgcG9pbnQNCiANCiAtLSBiZWdpbiBjb252ZXJ0 cyBpbXBsaWNpdCB0cmFuc2FjdGlvbiBpbnRvIGEgcmVndWxhciBvbmUgdGhh dA0KIC0tIGNhbiBleHRlbmQgcGFzdCB0aGUgZW5kIG9mIHRoZSBRdWVyeQ0K LXNlbGVjdCAxXDsgYmVnaW5cOyBpbnNlcnQgaW50byBpX3RhYmxlIHZhbHVl cyg1KTsNCitzZWxlY3QgMSBBUyBvbmVcOyBiZWdpblw7IGluc2VydCBpbnRv IGlfdGFibGUgdmFsdWVzKDUpOw0KIGNvbW1pdDsNCi1zZWxlY3QgMVw7IGJl Z2luXDsgaW5zZXJ0IGludG8gaV90YWJsZSB2YWx1ZXMoNik7DQorc2VsZWN0 IDEgQVMgb25lXDsgYmVnaW5cOyBpbnNlcnQgaW50byBpX3RhYmxlIHZhbHVl cyg2KTsNCiByb2xsYmFjazsNCiANCiAtLSBjb21taXQgaW4gaW1wbGljaXQt dHJhbnNhY3Rpb24gc3RhdGUgY29tbWl0cyBidXQgaXNzdWVzIGEgd2Fybmlu Zy4NCkBAIC01MjcsMTcgKzUyNywxNyBAQCBzZWxlY3QgKiBmcm9tIGlfdGFi bGU7DQogcm9sbGJhY2s7ICAtLSB3ZSBhcmUgbm90IGluIGEgdHJhbnNhY3Rp b24gYXQgdGhpcyBwb2ludA0KIA0KIC0tIGltcGxpY2l0IHRyYW5zYWN0aW9u IGJsb2NrIGlzIHN0aWxsIGEgdHJhbnNhY3Rpb24gYmxvY2ssIGZvciBlLmcu IFZBQ1VVTQ0KLVNFTEVDVCAxXDsgVkFDVVVNOw0KLVNFTEVDVCAxXDsgQ09N TUlUXDsgVkFDVVVNOw0KK1NFTEVDVCAxIEFTIG9uZVw7IFZBQ1VVTTsNCitT RUxFQ1QgMiBBUyB0d29cOyBDT01NSVRcOyBWQUNVVU07DQogDQogLS0gd2Ug ZGlzYWxsb3cgc2F2ZXBvaW50LXJlbGF0ZWQgY29tbWFuZHMgaW4gaW1wbGlj aXQtdHJhbnNhY3Rpb24gc3RhdGUNCi1TRUxFQ1QgMVw7IFNBVkVQT0lOVCBz cDsNCi1TRUxFQ1QgMVw7IENPTU1JVFw7IFNBVkVQT0lOVCBzcDsNCi1ST0xM QkFDSyBUTyBTQVZFUE9JTlQgc3BcOyBTRUxFQ1QgMjsNCi1TRUxFQ1QgMlw7 IFJFTEVBU0UgU0FWRVBPSU5UIHNwXDsgU0VMRUNUIDM7DQorU0VMRUNUIDMg QVMgdGhyZWVcOyBTQVZFUE9JTlQgc3A7DQorU0VMRUNUIDQgQVMgZm91clw7 IENPTU1JVFw7IFNBVkVQT0lOVCBzcDsNCitST0xMQkFDSyBUTyBTQVZFUE9J TlQgc3BcOyBTRUxFQ1QgNSBBUyBmaXZlOw0KK1NFTEVDVCA2IEFTIHNpeFw7 IFJFTEVBU0UgU0FWRVBPSU5UIHNwXDsgU0VMRUNUIDcgQVMgc2V2ZW47DQog DQogLS0gYnV0IHRoaXMgaXMgT0ssIGJlY2F1c2UgdGhlIEJFR0lOIGNvbnZl cnRzIGl0IHRvIGEgcmVndWxhciB4YWN0DQotU0VMRUNUIDFcOyBCRUdJTlw7 IFNBVkVQT0lOVCBzcFw7IFJPTExCQUNLIFRPIFNBVkVQT0lOVCBzcFw7IENP TU1JVDsNCitTRUxFQ1QgOFw7IEJFR0lOXDsgU0FWRVBPSU5UIHNwXDsgUk9M TEJBQ0sgVE8gU0FWRVBPSU5UIHNwXDsgQ09NTUlUOw0KIA0KIA0KIC0tIFRl c3RzIGZvciBBTkQgQ0hBSU4gaW4gaW1wbGljaXQgdHJhbnNhY3Rpb24gYmxv Y2tzDQo= --2056645051-466993053-1575281347=:26333--