From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=134.134.136.31; helo=mga06.intel.com; envelope-from=eric.jin@intel.com; receiver=edk2-devel@lists.01.org Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id A83C02118A5B0 for ; Tue, 6 Nov 2018 22:45:54 -0800 (PST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga104.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 06 Nov 2018 22:45:54 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.54,474,1534834800"; d="scan'208";a="272027484" Received: from fmsmsx106.amr.corp.intel.com ([10.18.124.204]) by orsmga005.jf.intel.com with ESMTP; 06 Nov 2018 22:45:53 -0800 Received: from fmsmsx119.amr.corp.intel.com (10.18.124.207) by FMSMSX106.amr.corp.intel.com (10.18.124.204) with Microsoft SMTP Server (TLS) id 14.3.408.0; Tue, 6 Nov 2018 22:45:53 -0800 Received: from shsmsx102.ccr.corp.intel.com (10.239.4.154) by FMSMSX119.amr.corp.intel.com (10.18.124.207) with Microsoft SMTP Server (TLS) id 14.3.408.0; Tue, 6 Nov 2018 22:45:52 -0800 Received: from shsmsx103.ccr.corp.intel.com ([169.254.4.161]) by shsmsx102.ccr.corp.intel.com ([169.254.2.84]) with mapi id 14.03.0415.000; Wed, 7 Nov 2018 14:45:50 +0800 From: "Jin, Eric" To: Supreeth Venkatesh , "edk2-devel@lists.01.org" CC: "Jin, Eric" Thread-Topic: [edk2][edk2-test][PATCH] uefi-sct/SctPkg:Add the checkpoint of Toggle state of ReadKeyStrokeEx Thread-Index: AdR2Wfg4Rs8tkJkLSgWuSzJ8Ks2hBQ== Date: Wed, 7 Nov 2018 06:45:50 +0000 Message-ID: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [edk2-test][PATCH] uefi-sct/SctPkg:Add the checkpoint of Toggle state of ReadKeyStrokeEx X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 07 Nov 2018 06:45:56 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgU3VwcmVldGgsDQoNClRoYW5rIGZvciBjb21tZW50LiBUaGUgbWFnaWMgbnVtIDcgd2lsbCBi ZSByZW1vdmVkIGluIHRoZSB2MiBwYXRjaC4NCg0KQmVzdCBSZWdhcmRzDQpFcmljCQ0KDQotLS0t LU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KRnJvbTogU3VwcmVldGggVmVua2F0ZXNoIDxzdXByZWV0 aC52ZW5rYXRlc2hAYXJtLmNvbT4gDQpTZW50OiBNb25kYXksIE9jdG9iZXIgMTUsIDIwMTggMTA6 MTggQU0NClRvOiBKaW4sIEVyaWMgPGVyaWMuamluQGludGVsLmNvbT47IGVkazItZGV2ZWxAbGlz dHMuMDEub3JnDQpDYzogV3UsIEppYXhpbiA8amlheGluLnd1QGludGVsLmNvbT4NClN1YmplY3Q6 IFJlOiBbUEFUQ0hdIHVlZmktc2N0L1NjdFBrZzpBZGQgdGhlIGNoZWNrcG9pbnQgb2YgVG9nZ2xl IHN0YXRlIG9mIFJlYWRLZXlTdHJva2VFeA0KDQoNCg0KT24gMTAvMTMvMjAxOCAwNToyMSBQTSwg RXJpYyBKaW4gd3JvdGU6DQo+IFVFRkkgU3BlYyBjbGFyaWZ5IHRoZSBUb2dnbGUgc3RhdGUNCj4N Cj4gQ2M6IFN1cHJlZXRoIFZlbmthdGVzaCA8c3VwcmVldGgudmVua2F0ZXNoQGFybS5jb20+DQo+ IENjOiBKaWF4aW4gV3UgPGppYXhpbi53dUBpbnRlbC5jb20+DQo+IENvbnRyaWJ1dGVkLXVuZGVy OiBUaWFub0NvcmUgQ29udHJpYnV0aW9uIEFncmVlbWVudCAxLjENCj4gU2lnbmVkLW9mZi1ieTog RXJpYyBKaW4gPGVyaWMuamluQGludGVsLmNvbT4NCj4gLS0tDQo+ICAgLi4uL1NpbXBsZVRleHRJ bnB1dEV4L0JsYWNrQm94VGVzdC9HdWlkLmMgICAgIHwgICA3ICstDQo+ICAgLi4uL1NpbXBsZVRl eHRJbnB1dEV4L0JsYWNrQm94VGVzdC9HdWlkLmggICAgIHwgIDEyICstDQo+ICAgLi4uL1NpbXBs ZVRleHRJbnB1dEV4QkJUZXN0RnVuY3Rpb24uYyAgICAgICAgIHwgMjEwICsrKysrKysrKysrKysr KysrDQo+ICAgLi4uL1NpbXBsZVRleHRJbnB1dEV4QkJUZXN0TWFpbi5jICAgICAgICAgICAgIHwg IDEzICstDQo+ICAgLi4uL1NpbXBsZVRleHRJbnB1dEV4QkJUZXN0TWFpbi5oICAgICAgICAgICAg IHwgIDIyICstDQo+ICAgLi4uL1NpbXBsZVRleHRJbnB1dEV4L0JsYWNrQm94VGVzdC9HdWlkLmMg ICAgIHwgICA3ICstDQo+ICAgLi4uL1NpbXBsZVRleHRJbnB1dEV4L0JsYWNrQm94VGVzdC9HdWlk LmggICAgIHwgIDEyICstDQo+ICAgLi4uL1NpbXBsZVRleHRJbnB1dEV4QkJUZXN0RnVuY3Rpb24u YyAgICAgICAgIHwgMjEyICsrKysrKysrKysrKysrKysrLQ0KPiAgIC4uLi9TaW1wbGVUZXh0SW5w dXRFeEJCVGVzdE1haW4uYyAgICAgICAgICAgICB8ICAxMSArLQ0KPiAgIC4uLi9TaW1wbGVUZXh0 SW5wdXRFeEJCVGVzdE1haW4uaCAgICAgICAgICAgICB8ICAyMCArLQ0KPiAgIDEwIGZpbGVzIGNo YW5nZWQsIDUxMyBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkNCj4NCj4gZGlmZiAtLWdp dCANCj4gYS91ZWZpLXNjdC9TY3RQa2cvVGVzdENhc2UvVUVGSS9FRkkvUHJvdG9jb2wvU2ltcGxl VGV4dElucHV0RXgvQmxhY2tCbw0KPiB4VGVzdC9HdWlkLmMgDQo+IGIvdWVmaS1zY3QvU2N0UGtn L1Rlc3RDYXNlL1VFRkkvRUZJL1Byb3RvY29sL1NpbXBsZVRleHRJbnB1dEV4L0JsYWNrQm8NCj4g eFRlc3QvR3VpZC5jDQo+IGluZGV4IDljYjE5ZjQ4Li5mZjJkNTBmYSAxMDA2NDQNCj4gLS0tIA0K PiBhL3VlZmktc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0VGSS9Qcm90b2NvbC9TaW1wbGVUZXh0 SW5wdXRFeC9CbGFja0JvDQo+IHhUZXN0L0d1aWQuYw0KPiArKysgYi91ZWZpLXNjdC9TY3RQa2cv VGVzdENhc2UvVUVGSS9FRkkvUHJvdG9jb2wvU2ltcGxlVGV4dElucHV0RXgvQmxhDQo+ICsrKyBj a0JveFRlc3QvR3VpZC5jDQo+IEBAIC0xLDcgKzEsNyBAQA0KPiAgIC8qKiBAZmlsZQ0KPiAgIA0K PiAgICAgQ29weXJpZ2h0IDIwMDYgLSAyMDEyIFVuaWZpZWQgRUZJLCBJbmMuPEJSPg0KPiAtICBD b3B5cmlnaHQgKGMpIDIwMTAgLSAyMDEyLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyAN Cj4gcmVzZXJ2ZWQuPEJSPg0KPiArICBDb3B5cmlnaHQgKGMpIDIwMTAgLSAyMDE4LCBJbnRlbCBD b3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyANCj4gKyByZXNlcnZlZC48QlI+DQo+ICAgDQo+ICAgICBU aGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICAgICBhcmUgbGlj ZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBv ZiANCj4gdGhlIEJTRCBMaWNlbnNlIEBAIC02MywzICs2Myw4IEBAIEVGSV9HVUlEIGdTaW1wbGVU ZXh0SW5wdXRFeEJCVGVzdEZ1bmN0aW9uQXNzZXJ0aW9uR3VpZDAwNyA9IEVGSV9URVNUX1NJTVBM RVRFWFRJDQo+ICAgRUZJX0dVSUQgZ1NpbXBsZVRleHRJbnB1dEV4QkJUZXN0RnVuY3Rpb25Bc3Nl cnRpb25HdWlkMDA4ID0gDQo+IEVGSV9URVNUX1NJTVBMRVRFWFRJTlBVVEVYQkJURVNURlVOQ1RJ T05fQVNTRVJUSU9OXzAwOF9HVUlEOw0KPiAgIA0KPiAgIEVGSV9HVUlEIGdTaW1wbGVUZXh0SW5w dXRFeEJCVGVzdEZ1bmN0aW9uQXNzZXJ0aW9uR3VpZDAwOSA9IA0KPiBFRklfVEVTVF9TSU1QTEVU RVhUSU5QVVRFWEJCVEVTVEZVTkNUSU9OX0FTU0VSVElPTl8wMDlfR1VJRDsNCj4gKw0KPiArRUZJ X0dVSUQgZ1NpbXBsZVRleHRJbnB1dEV4QkJUZXN0RnVuY3Rpb25Bc3NlcnRpb25HdWlkMDEwID0g DQo+ICtFRklfVEVTVF9TSU1QTEVURVhUSU5QVVRFWEJCVEVTVEZVTkNUSU9OX0FTU0VSVElPTl8w MTBfR1VJRDsNCj4gKw0KPiArRUZJX0dVSUQgZ1NpbXBsZVRleHRJbnB1dEV4QkJUZXN0RnVuY3Rp b25Bc3NlcnRpb25HdWlkMDExID0gDQo+ICtFRklfVEVTVF9TSU1QTEVURVhUSU5QVVRFWEJCVEVT VEZVTkNUSU9OX0FTU0VSVElPTl8wMTFfR1VJRDsNCj4gKw0KPiBkaWZmIC0tZ2l0IA0KPiBhL3Vl Zmktc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0VGSS9Qcm90b2NvbC9TaW1wbGVUZXh0SW5wdXRF eC9CbGFja0JvDQo+IHhUZXN0L0d1aWQuaCANCj4gYi91ZWZpLXNjdC9TY3RQa2cvVGVzdENhc2Uv VUVGSS9FRkkvUHJvdG9jb2wvU2ltcGxlVGV4dElucHV0RXgvQmxhY2tCbw0KPiB4VGVzdC9HdWlk LmgNCj4gaW5kZXggNmM5MGZjYTMuLjJhNmJlNDhiIDEwMDY0NA0KPiAtLS0gDQo+IGEvdWVmaS1z Y3QvU2N0UGtnL1Rlc3RDYXNlL1VFRkkvRUZJL1Byb3RvY29sL1NpbXBsZVRleHRJbnB1dEV4L0Js YWNrQm8NCj4geFRlc3QvR3VpZC5oDQo+ICsrKyBiL3VlZmktc2N0L1NjdFBrZy9UZXN0Q2FzZS9V RUZJL0VGSS9Qcm90b2NvbC9TaW1wbGVUZXh0SW5wdXRFeC9CbGENCj4gKysrIGNrQm94VGVzdC9H dWlkLmgNCj4gQEAgLTEsNyArMSw3IEBADQo+ICAgLyoqIEBmaWxlDQo+ICAgDQo+ICAgICBDb3B5 cmlnaHQgMjAwNiAtIDIwMTAgVW5pZmllZCBFRkksIEluYy48QlI+DQo+IC0gIENvcHlyaWdodCAo YykgMjAxMCwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiAr ICBDb3B5cmlnaHQgKGMpIDIwMTAgLSAyMDE4LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0 cyANCj4gKyByZXNlcnZlZC48QlI+DQo+ICAgDQo+ICAgICBUaGlzIHByb2dyYW0gYW5kIHRoZSBh Y2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICAgICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxh YmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiANCj4gdGhlIEJTRCBMaWNlbnNl IEBAIC0xMTksMyArMTE5LDEzIEBAIGV4dGVybiBFRklfR1VJRCBnU2ltcGxlVGV4dElucHV0RXhC QlRlc3RGdW5jdGlvbkFzc2VydGlvbkd1aWQwMDg7DQo+ICAgeyAweDUzNDM2OWY3LCAweDgzOTks IDB4NDM1MywgeyAweDk0LCAweGFkLCAweGM0LCAweDQ4LCAweGZhLCAweGRhLCANCj4gMHhlYiwg MHg4NCB9IH0NCj4gICANCj4gICBleHRlcm4gRUZJX0dVSUQgZ1NpbXBsZVRleHRJbnB1dEV4QkJU ZXN0RnVuY3Rpb25Bc3NlcnRpb25HdWlkMDA5Ow0KPiArDQo+ICsjZGVmaW5lIEVGSV9URVNUX1NJ TVBMRVRFWFRJTlBVVEVYQkJURVNURlVOQ1RJT05fQVNTRVJUSU9OXzAxMF9HVUlEIFwgDQo+ICt7 IDB4Y2Y0ZDU0ZWIsIDB4NjY5NiwgMHg0Nzk0LCB7IDB4OTEsIDB4NzQsIDB4NTksIDB4ZCwgMHgx YywgMHgyMiwgDQo+ICsweGE4LCAweDY3IH0gfQ0KPiArDQo+ICtleHRlcm4gRUZJX0dVSUQgZ1Np bXBsZVRleHRJbnB1dEV4QkJUZXN0RnVuY3Rpb25Bc3NlcnRpb25HdWlkMDEwOw0KPiArDQo+ICsj ZGVmaW5lIEVGSV9URVNUX1NJTVBMRVRFWFRJTlBVVEVYQkJURVNURlVOQ1RJT05fQVNTRVJUSU9O XzAxMV9HVUlEIFwgDQo+ICt7IDB4ZjhlOGY4NzksIDB4YTZkNCwgMHg0ZmQzLCB7IDB4OGIsIDB4 OGUsIDB4YmEsIDB4MWQsIDB4MTgsIDB4ZjEsIA0KPiArMHg0MCwgMHg3MSB9IH0NCj4gKw0KPiAr ZXh0ZXJuIEVGSV9HVUlEIGdTaW1wbGVUZXh0SW5wdXRFeEJCVGVzdEZ1bmN0aW9uQXNzZXJ0aW9u R3VpZDAxMTsNCj4gZGlmZiAtLWdpdCANCj4gYS91ZWZpLXNjdC9TY3RQa2cvVGVzdENhc2UvVUVG SS9FRkkvUHJvdG9jb2wvU2ltcGxlVGV4dElucHV0RXgvQmxhY2tCbw0KPiB4VGVzdC9TaW1wbGVU ZXh0SW5wdXRFeEJCVGVzdEZ1bmN0aW9uLmMgDQo+IGIvdWVmaS1zY3QvU2N0UGtnL1Rlc3RDYXNl L1VFRkkvRUZJL1Byb3RvY29sL1NpbXBsZVRleHRJbnB1dEV4L0JsYWNrQm8NCj4geFRlc3QvU2lt cGxlVGV4dElucHV0RXhCQlRlc3RGdW5jdGlvbi5jDQo+IGluZGV4IDE1M2FkZTAzLi40OGY5MTAw MiAxMDA2NDQNCj4gLS0tIA0KPiBhL3VlZmktc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0VGSS9Q cm90b2NvbC9TaW1wbGVUZXh0SW5wdXRFeC9CbGFja0JvDQo+IHhUZXN0L1NpbXBsZVRleHRJbnB1 dEV4QkJUZXN0RnVuY3Rpb24uYw0KPiArKysgYi91ZWZpLXNjdC9TY3RQa2cvVGVzdENhc2UvVUVG SS9FRkkvUHJvdG9jb2wvU2ltcGxlVGV4dElucHV0RXgvQmxhDQo+ICsrKyBja0JveFRlc3QvU2lt cGxlVGV4dElucHV0RXhCQlRlc3RGdW5jdGlvbi5jDQo+IEBAIC00NTYsNiArNDU2LDc4IEBAIEJC VGVzdFVucmVnaXN0ZXJLZXlOb3RpZnlGdW5jdGlvbk1hbnVhbFRlc3QgKA0KPiAgIH0NCj4gICAN Cj4gICANCj4gK0VGSV9TVEFUVVMNCj4gK0JCVGVzdFJlYWRLZXlTdHJva2VFeEZ1bmN0aW9uQXV0 b1Rlc3QgKA0KPiArICBJTiBFRklfQkJfVEVTVF9QUk9UT0NPTCAgICAgICAqVGhpcywNCj4gKyAg SU4gVk9JRCAgICAgICAgICAgICAgICAgICAgICAgKkNsaWVudEludGVyZmFjZSwNCj4gKyAgSU4g RUZJX1RFU1RfTEVWRUwgICAgICAgICAgICAgVGVzdExldmVsLA0KPiArICBJTiBFRklfSEFORExF ICAgICAgICAgICAgICAgICBTdXBwb3J0SGFuZGxlDQo+ICsgICkNCj4gK3sNCj4gKyAgRUZJX1NU QU5EQVJEX1RFU1RfTElCUkFSWV9QUk9UT0NPTCAgICAqU3RhbmRhcmRMaWI7DQo+ICsgIEVGSV9T VEFUVVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiArICBFRklfU0lNUExF X1RFWFRfSU5QVVRfRVhfUFJPVE9DT0wgICAgICpTaW1wbGVUZXh0SW5wdXRFeDsNCj4gKw0KPiAr ICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICAgICAgICAgICAgKkRldmljZVBhdGg7DQo+ICsg IENIQVIxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqRGV2aWNlUGF0aFN0cjsNCj4g Kw0KPiArICAvLw0KPiArICAvLyBpbml0DQo+ICsgIC8vDQo+ICsgIFNpbXBsZVRleHRJbnB1dEV4 ID0gDQo+ICsgKEVGSV9TSU1QTEVfVEVYVF9JTlBVVF9FWF9QUk9UT0NPTCopQ2xpZW50SW50ZXJm YWNlOw0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIEdldCB0aGUgU3RhbmRhcmQgTGlicmFyeSBJbnRl cmZhY2UgIC8vICBTdGF0dXMgPSANCj4gKyBndEJTLT5IYW5kbGVQcm90b2NvbCAoDQo+ICsgICAg ICAgICAgICAgICAgICAgU3VwcG9ydEhhbmRsZSwNCj4gKyAgICAgICAgICAgICAgICAgICAmZ0Vm aVN0YW5kYXJkVGVzdExpYnJhcnlHdWlkLA0KPiArICAgICAgICAgICAgICAgICAgIChWT0lEICoq KSAmU3RhbmRhcmRMaWINCj4gKyAgICAgICAgICAgICAgICAgICApOw0KPiArICBpZiAoRUZJX0VS Uk9SKFN0YXR1cykpIHsNCj4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiArICB9DQo+ICsNCj4gKyAg Ly8NCj4gKyAgLy8gR2V0IERldmljZSBQYXRoIG9mIGN1cnJlbnQgU2ltcGxlX1RleHRfSW5wdXRf RXhfUHJvdG9jb2wgIC8vIEFuZCANCj4gKyBvdXQgcHV0IGRldmljZSBwYXRoIG9yIGRldmljZSBu YW1lICAvLyAgU3RhdHVzID0gDQo+ICsgTG9jYXRlRGV2aWNlUGF0aEZyb21TaW1wbGVUZXh0SW5w dXRFeCAoU2ltcGxlVGV4dElucHV0RXgsIA0KPiArICZEZXZpY2VQYXRoLCBTdGFuZGFyZExpYik7 ICBpZiAoU3RhdHVzID09IEVGSV9TVUNDRVNTKSB7DQo+ICsgICAgRGV2aWNlUGF0aFN0ciA9IFNj dERldmljZVBhdGhUb1N0ciAoRGV2aWNlUGF0aCk7DQo+ICsgICAgaWYgKERldmljZVBhdGhTdHIg IT0gTlVMTCkgew0KPiArICAgICAgU3RhbmRhcmRMaWItPlJlY29yZE1lc3NhZ2UgKA0KPiArICAg ICAgICAgICAgICAgICAgICAgU3RhbmRhcmRMaWIsDQo+ICsgICAgICAgICAgICAgICAgICAgICBF RklfVkVSQk9TRV9MRVZFTF9ERUZBVUxULA0KPiArICAgICAgICAgICAgICAgICAgICAgTCJcclxu Q3VycmVudCBEZXZpY2U6ICVzIiwNCj4gKyAgICAgICAgICAgICAgICAgICAgIERldmljZVBhdGhT dHINCj4gKyAgICAgICAgICAgICAgICAgICAgICk7DQo+ICsgICAgICBTdGF0dXMgPSBndEJTLT5G cmVlUG9vbCAoRGV2aWNlUGF0aFN0cik7DQo+ICsgICAgICBpZiAoRUZJX0VSUk9SKFN0YXR1cykp DQo+ICsgICAgICAgIHJldHVybiBTdGF0dXM7DQo+ICsgICAgICBEZXZpY2VQYXRoU3RyPU5VTEw7 DQo+ICsgICAgfQ0KPiArICB9IGVsc2Ugew0KPiArICAgIC8vDQo+ICsgICAgLy8gQ29uc29sZSBT cGxpdHRlci9TdGRFcnINCj4gKyAgICAvLw0KPiArICAgIFN0YW5kYXJkTGliLT5SZWNvcmRNZXNz YWdlICgNCj4gKyAgICAgICAgICAgICAgICAgICBTdGFuZGFyZExpYiwNCj4gKyAgICAgICAgICAg ICAgICAgICBFRklfVkVSQk9TRV9MRVZFTF9ERUZBVUxULA0KPiArICAgICAgICAgICAgICAgICAg IEwiXHJcbkN1cnJlbnQgRGV2aWNlOiBDb25zb2xlU3BsaXR0ZXIvVHh0SW4iDQo+ICsgICAgICAg ICAgICAgICAgICAgKTsNCj4gKyAgfQ0KPiArDQo+ICsgIC8vDQo+ICsgIC8vDQo+ICsgIC8vDQo+ ICsgIEJCVGVzdFJlYWRLZXlTdHJva2VFeEZ1bmN0aW9uQXV0b1Rlc3RDaGVja3BvaW50MSAoIFN0 YW5kYXJkTGliLCANCj4gKyBTaW1wbGVUZXh0SW5wdXRFeCApOw0KPiArDQo+ICsgIHJldHVybiBF RklfU1VDQ0VTUzsNCj4gK30NCj4gKw0KPiArDQo+ICsNCj4gICAvLw0KPiAgIC8vQ2hlY2sgUG9p bnRzDQo+ICAgLy8NCj4gQEAgLTEwNjEsMyArMTEzMywxNDEgQEAgDQo+IEJCVGVzdFVucmVnaXN0 ZXJLZXlOb3RpZnlGdW5jdGlvbk1hbnVhbFRlc3RDaGVja3BvaW50MSAoDQo+ICAgDQo+ICAgICBy ZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ICAgfQ0KPiArDQo+ICtFRklfU1RBVFVTDQo+ICtCQlRlc3RS ZWFkS2V5U3Ryb2tlRXhGdW5jdGlvbkF1dG9UZXN0Q2hlY2twb2ludDEgKA0KPiArICBJTiBFRklf U1RBTkRBUkRfVEVTVF9MSUJSQVJZX1BST1RPQ09MICAgICAgICAgKlN0YW5kYXJkTGliLA0KPiAr ICBJTiBFRklfU0lNUExFX1RFWFRfSU5QVVRfRVhfUFJPVE9DT0wgICAgICAgICAgKlNpbXBsZVRl eHRJbnB1dEV4DQo+ICsgICkNCj4gK3sNCj4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgIFN0YXR1 czsNCj4gKyAgRUZJX1RFU1RfQVNTRVJUSU9OICAgIEFzc2VydGlvblR5cGU7DQo+ICsgIEVGSV9L RVlfREFUQSAgICAgICAgICBLZXk7DQo+ICsgIFVJTlQ4ICAgICAgICAgICAgICAgICBJbmRleDsN Cj4gKw0KPiArICBFRklfS0VZX1RPR0dMRV9TVEFURSAgU3RhdGUgPSBFRklfVE9HR0xFX1NUQVRF X1ZBTElEIHwgDQo+ICsgRUZJX0tFWV9TVEFURV9FWFBPU0VEOw0KPiArDQo+ICsgIEVGSV9LRVlf VE9HR0xFX1NUQVRFICBWYWxpZFN0YXRlWzddID0gew0KTWFnaWMgTnVtYmVyIDcNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgRUZJX1RPR0dMRV9TVEFURV9WQUxJRCB8IEVGSV9LRVlfU1RB VEVfRVhQT1NFRCB8IEVGSV9TQ1JPTExfTE9DS19BQ1RJVkUsDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgIEVGSV9UT0dHTEVfU1RBVEVfVkFMSUQgfCBFRklfS0VZX1NUQVRFX0VYUE9TRUQg fCBFRklfTlVNX0xPQ0tfQUNUSVZFLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICBFRklf VE9HR0xFX1NUQVRFX1ZBTElEIHwgRUZJX0tFWV9TVEFURV9FWFBPU0VEIHwgRUZJX0NBUFNfTE9D S19BQ1RJVkUsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9UT0dHTEVfU1RBVEVf VkFMSUQgfCBFRklfS0VZX1NUQVRFX0VYUE9TRUQgfCBFRklfU0NST0xMX0xPQ0tfQUNUSVZFIHwg RUZJX05VTV9MT0NLX0FDVElWRSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX1RP R0dMRV9TVEFURV9WQUxJRCB8IEVGSV9LRVlfU1RBVEVfRVhQT1NFRCB8IEVGSV9TQ1JPTExfTE9D S19BQ1RJVkUgfCBFRklfQ0FQU19MT0NLX0FDVElWRSwNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgRUZJX1RPR0dMRV9TVEFURV9WQUxJRCB8IEVGSV9LRVlfU1RBVEVfRVhQT1NFRCB8IEVG SV9OVU1fTE9DS19BQ1RJVkUgfCBFRklfQ0FQU19MT0NLX0FDVElWRSwNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgRUZJX1RPR0dMRV9TVEFURV9WQUxJRCB8IEVGSV9LRVlfU1RBVEVfRVhQ T1NFRCB8IEVGSV9TQ1JPTExfTE9DS19BQ1RJVkUgfEVGSV9OVU1fTE9DS19BQ1RJVkUgfCBFRklf Q0FQU19MT0NLX0FDVElWRSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgfTsNCj4gKw0K PiArICAvLw0KPiArICAvL1Jlc2V0IHRoZSBjb25zb2xlDQo+ICsgIC8vDQo+ICsgIFN0YXR1cyA9 IFNpbXBsZVRleHRJbnB1dEV4LT5SZWFkS2V5U3Ryb2tlRXggKA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFNpbXBsZVRleHRJbnB1dEV4LA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICZLZXkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICApOw0KPiArICBpZiAoRUZJX0VSUk9SKFN0YXR1cykgJiYgU3RhdHVzICE9IEVGSV9OT1Rf UkVBRFkpIHsNCj4gKyAgCSByZXR1cm4gU3RhdHVzOw0KPiArICB9DQo+ICsNCj4gKyAgaWYgKChL ZXkuS2V5U3RhdGUuS2V5VG9nZ2xlU3RhdGUgJiBFRklfVE9HR0xFX1NUQVRFX1ZBTElEKSA9PSAw KSB7DQo+ICsgIAkgcmV0dXJuIEVGSV9VTlNVUFBPUlRFRDsNCj4gKyAgfQ0KPiArDQo+ICsgIC8v DQo+ICsgIC8vU2V0IHRoZSBLRVlfU1RBVEVfRVhQT1NFRCB0byBjaGVjayB0aGUgaW1jb21wbGV0 ZSBrZXlzdHJva2UgDQo+ICsgc3VwcG9ydCAgLy8gIFN0YXR1cyA9IFNpbXBsZVRleHRJbnB1dEV4 LT5TZXRTdGF0ZSAoDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpbXBsZVRl eHRJbnB1dEV4LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmU3RhdGUNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCj4gKw0KPiArICBpZiAoU3RhdHVz ID09IEVGSV9VTlNVUFBPUlRFRCB8fCBTdGF0dXMgPT0gRUZJX0RFVklDRV9FUlJPUikgew0KPiAr ICAgIFN0YW5kYXJkTGliLT5SZWNvcmRBc3NlcnRpb24gKA0KPiArICAgICAgICAgICAgICAgICAg IFN0YW5kYXJkTGliLA0KPiArICAgICAgICAgICAgICAgICAgIEVGSV9URVNUX0FTU0VSVElPTl9X QVJOSU5HLA0KPiArICAgICAgICAgICAgICAgICAgIGdUZXN0R2VuZXJpY0ZhaWx1cmVHdWlkLA0K PiArICAgICAgICAgICAgICAgICAgIEwiRUZJX1NJTVBMRV9URVhUX0lOUFVUX0VYX1BST1RPQ09M LlNldFN0YXRlIC0gU2V0U3RhdGUoKSBkb2Vzbid0IHJldHVybiBFRklfU1VDQ0VTUyB3aXRoIEVG SV9LRVlfU1RBVEVfRVhQT1NFRCIsDQo+ICsgICAgICAgICAgICAgICAgICAgTCIlYTolZCwgU3Rh dHVzID0gJXJcbiIsDQo+ICsgICAgICAgICAgICAgICAgICAgX19GSUxFX18sDQo+ICsgICAgICAg ICAgICAgICAgICAgKFVJTlROKV9fTElORV9fLA0KPiArICAgICAgICAgICAgICAgICAgIFN0YXR1 cw0KPiArICAgICAgICAgICAgICAgICAgICk7DQo+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gKyAg fQ0KPiArDQo+ICsgIGZvciAoSW5kZXg9MDsgSW5kZXg8NzsgSW5kZXgrKykgew0KTWFnaWMgTnVt YmVyIDcNCj4gKw0KPiArICAgIC8vDQo+ICsgICAgLy8gU2V0IHRoZSB2YWxpZCBLZXlUb2dnbGVT dGF0ZQ0KPiArICAgIC8vDQo+ICsgICAgU3RhdHVzID0gU2ltcGxlVGV4dElucHV0RXgtPlNldFN0 YXRlICgNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaW1wbGVUZXh0SW5w dXRFeCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZFN0YXRlICsg SW5kZXgNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KPiArDQo+ICsg ICAgaWYgKFN0YXR1cyAhPSBFRklfU1VDQ0VTUykgew0KPiArICAgICAgU3RhbmRhcmRMaWItPlJl Y29yZEFzc2VydGlvbiAoDQo+ICsgICAgICAgICAgICAgICAgICAgICBTdGFuZGFyZExpYiwNCj4g KyAgICAgICAgICAgICAgICAgICAgIEVGSV9URVNUX0FTU0VSVElPTl9GQUlMRUQsDQo+ICsgICAg ICAgICAgICAgICAgICAgICBnVGVzdEdlbmVyaWNGYWlsdXJlR3VpZCwNCj4gKyAgICAgICAgICAg ICAgICAgICAgIEwiRUZJX1NJTVBMRV9URVhUX0lOUFVUX0VYX1BST1RPQ09MLlNldFN0YXRlIC0g U2V0U3RhdGUoKSBkb2Vzbid0IHJldHVybiBFRklfU1VDQ0VTUyB3aXRoIHRoZSB2YWxpZCBLZXlU b2dnbGVTdGF0ZSIsDQo+ICsgICAgICAgICAgICAgICAgICAgICBMIiVhOiVkLCBTdGF0dXMgPSAl ciwgS2V5VG9nZ2xlU3RhdGUgPSAleFxuIiwNCj4gKyAgICAgICAgICAgICAgICAgICAgIF9fRklM RV9fLA0KPiArICAgICAgICAgICAgICAgICAgICAgKFVJTlROKV9fTElORV9fLA0KPiArICAgICAg ICAgICAgICAgICAgICAgU3RhdHVzLA0KPiArICAgICAgICAgICAgICAgICAgICAgVmFsaWRTdGF0 ZVtJbmRleF0NCj4gKyAgICAgICAgICAgICAgICAgICAgICk7DQo+ICsgICAgICBjb250aW51ZTsN Cj4gKyAgICB9DQo+ICsNCj4gKyAgICAvLw0KPiArICAgIC8vIEdldCB0aGUgS2V5VG9nZ2xlU3Rh dGUNCj4gKyAgICAvLw0KPiArICAgIFN0YXR1cyA9IFNpbXBsZVRleHRJbnB1dEV4LT5SZWFkS2V5 U3Ryb2tlRXggKA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpbXBsZVRl eHRJbnB1dEV4LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZLZXkNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KPiArDQo+ICsgICAgaWYgKFN0 YXR1cyAhPSBFRklfTk9UX1JFQURZKSB7DQo+ICsgICAgICBBc3NlcnRpb25UeXBlID0gRUZJX1RF U1RfQVNTRVJUSU9OX0ZBSUxFRDsNCj4gKw0KPiArICAgICAgU3RhbmRhcmRMaWItPlJlY29yZEFz c2VydGlvbiAoDQo+ICsgICAgICAgICAgICAgICAgICAgICBTdGFuZGFyZExpYiwNCj4gKyAgICAg ICAgICAgICAgICAgICAgIEFzc2VydGlvblR5cGUsDQo+ICsgICAgICAgICAgICAgICAgICAgICBn U2ltcGxlVGV4dElucHV0RXhCQlRlc3RGdW5jdGlvbkFzc2VydGlvbkd1aWQwMTAsDQo+ICsgICAg ICAgICAgICAgICAgICAgICBMIkVGSV9TSU1QTEVfVEVYVF9JTlBVVF9FWF9QUk9UT0NPTC5SZWFk S2V5U3Ryb2tlRXggLSBSZWFkS2V5U3Ryb2tlRXgoKSBkb2Vzbid0IHJldHVybiBFRklfTk9UX1JF QURZIHdoZW4gdGhlcmUgaXMgbm8gS2V5IGRhdGEgYW5kIEVGSV9LRVlfU1RBVEVfRVhQT1NFRCBp cyBlbmFibGVkIiwNCj4gKyAgICAgICAgICAgICAgICAgICAgIEwiJWE6JWQsIFN0YXR1cyA9ICVy LCBJbmRleCA9ICVkLCBLZXlUb2dnbGVTdGF0ZSA9ICV4XG4iLA0KPiArICAgICAgICAgICAgICAg ICAgICAgX19GSUxFX18sDQo+ICsgICAgICAgICAgICAgICAgICAgICAoVUlOVE4pX19MSU5FX18s DQo+ICsgICAgICAgICAgICAgICAgICAgICBTdGF0dXMsDQo+ICsgICAgICAgICAgICAgICAgICAg ICBJbmRleCwNCj4gKyAgICAgICAgICAgICAgICAgICAgIFZhbGlkU3RhdGVbSW5kZXhdDQo+ICsg ICAgICAgICAgICAgICAgICAgICApOw0KPiArDQo+ICsgICAgfSBlbHNlIHsNCj4gKyAgICAgIGlm IChLZXkuS2V5U3RhdGUuS2V5VG9nZ2xlU3RhdGUgPT0gVmFsaWRTdGF0ZVtJbmRleF0gJiYNCj4g KyAgICAgIAkgICAoS2V5LktleVN0YXRlLktleVNoaWZ0U3RhdGUgPT0gMCB8fCBLZXkuS2V5U3Rh dGUuS2V5U2hpZnRTdGF0ZSA9PSBFRklfU0hJRlRfU1RBVEVfVkFMSUQpICYmDQo+ICsgICAgICAJ IEtleS5LZXkuU2NhbkNvZGUgPT0gMCAmJiBLZXkuS2V5LlVuaWNvZGVDaGFyID09IDApDQo+ICsg ICAgICAgIEFzc2VydGlvblR5cGUgPSBFRklfVEVTVF9BU1NFUlRJT05fUEFTU0VEOw0KPiArICAg ICAgZWxzZQ0KPiArICAgICAgCSBBc3NlcnRpb25UeXBlID0gRUZJX1RFU1RfQVNTRVJUSU9OX0ZB SUxFRDsNCj4gKw0KPiArDQo+ICsgICAgICBTdGFuZGFyZExpYi0+UmVjb3JkQXNzZXJ0aW9uICgN Cj4gKyAgICAgICAgICAgICAgICAgICAgIFN0YW5kYXJkTGliLA0KPiArICAgICAgICAgICAgICAg ICAgICAgQXNzZXJ0aW9uVHlwZSwNCj4gKyAgICAgICAgICAgICAgICAgICAgIGdTaW1wbGVUZXh0 SW5wdXRFeEJCVGVzdEZ1bmN0aW9uQXNzZXJ0aW9uR3VpZDAxMSwNCj4gKyAgICAgICAgICAgICAg ICAgICAgIEwiRUZJX1NJTVBMRV9URVhUX0lOUFVUX0VYX1BST1RPQ09MLlJlYWRLZXlTdHJva2VF eCAtIFJlYWRLZXlTdHJva2VFeCgpIHNob3VsZCBnZXQgdGhlIFZhbGlkU3RhdGUgd2l0aCBFRklf Tk9UX1JFQURZIGFuZCBvdGhlciBmaWVsZCBpcyB6ZXJvIiwNCj4gKyAgICAgICAgICAgICAgICAg ICAgIEwiJWE6JWQsIFN0YXR1cyA9ICVyLCBJbmRleCA9ICVkLCBLZXlUb2dnbGVTdGF0ZSA9ICV4 LCBleHBlY3QgU3RhdGUgPSAleFxuIiwNCj4gKyAgICAgICAgICAgICAgICAgICAgIF9fRklMRV9f LA0KPiArICAgICAgICAgICAgICAgICAgICAgKFVJTlROKV9fTElORV9fLA0KPiArICAgICAgICAg ICAgICAgICAgICAgU3RhdHVzLA0KPiArICAgICAgICAgICAgICAgICAgICAgSW5kZXgsDQo+ICsg ICAgICAgICAgICAgICAgICAgICBLZXkuS2V5U3RhdGUuS2V5VG9nZ2xlU3RhdGUsDQo+ICsgICAg ICAgICAgICAgICAgICAgICBWYWxpZFN0YXRlW0luZGV4XQ0KPiArICAgICAgICAgICAgICAgICAg ICAgKTsNCj4gKw0KPiArICAgIH0NCj4gKyAgfQ0KPiArDQo+ICsgIHJldHVybiBFRklfU1VDQ0VT UzsNCj4gK30NCj4gZGlmZiAtLWdpdCANCj4gYS91ZWZpLXNjdC9TY3RQa2cvVGVzdENhc2UvVUVG SS9FRkkvUHJvdG9jb2wvU2ltcGxlVGV4dElucHV0RXgvQmxhY2tCbw0KPiB4VGVzdC9TaW1wbGVU ZXh0SW5wdXRFeEJCVGVzdE1haW4uYyANCj4gYi91ZWZpLXNjdC9TY3RQa2cvVGVzdENhc2UvVUVG SS9FRkkvUHJvdG9jb2wvU2ltcGxlVGV4dElucHV0RXgvQmxhY2tCbw0KPiB4VGVzdC9TaW1wbGVU ZXh0SW5wdXRFeEJCVGVzdE1haW4uYw0KPiBpbmRleCBmZGJjOTBmZS4uNWI3MWI2YTkgMTAwNjQ0 DQo+IC0tLSANCj4gYS91ZWZpLXNjdC9TY3RQa2cvVGVzdENhc2UvVUVGSS9FRkkvUHJvdG9jb2wv U2ltcGxlVGV4dElucHV0RXgvQmxhY2tCbw0KPiB4VGVzdC9TaW1wbGVUZXh0SW5wdXRFeEJCVGVz dE1haW4uYw0KPiArKysgYi91ZWZpLXNjdC9TY3RQa2cvVGVzdENhc2UvVUVGSS9FRkkvUHJvdG9j b2wvU2ltcGxlVGV4dElucHV0RXgvQmxhDQo+ICsrKyBja0JveFRlc3QvU2ltcGxlVGV4dElucHV0 RXhCQlRlc3RNYWluLmMNCj4gQEAgLTEsNyArMSw3IEBADQo+ICAgLyoqIEBmaWxlDQo+ICAgDQo+ ICAgICBDb3B5cmlnaHQgMjAwNiAtIDIwMTcgVW5pZmllZCBFRkksIEluYy48QlI+DQo+IC0gIENv cHlyaWdodCAoYykgMjAxMCAtIDIwMTcsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIA0K PiByZXNlcnZlZC48QlI+DQo+ICsgIENvcHlyaWdodCAoYykgMjAxMCAtIDIwMTgsIEludGVsIENv cnBvcmF0aW9uLiBBbGwgcmlnaHRzIA0KPiArIHJlc2VydmVkLjxCUj4NCj4gICANCj4gICAgIFRo aXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gICAgIGFyZSBsaWNl bnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9m IA0KPiB0aGUgQlNEIExpY2Vuc2UgQEAgLTEwNSw2ICsxMDUsMTUgQEAgRUZJX0JCX1RFU1RfRU5U UllfRklFTEQgZ0JCVGVzdEVudHJ5RmllbGRbXSA9IHsNCj4gICAgICAgQkJUZXN0VW5yZWdpc3Rl cktleU5vdGlmeUZ1bmN0aW9uTWFudWFsVGVzdA0KPiAgICAgfSwNCj4gICAjZW5kaWYNCj4gKyAg ew0KPiArICAgIEVGSV9TSU1QTEVfVEVYVF9JTlBVVF9FWF9QUk9UT0NPTF9URVNUX0VOVFJZX0dV SUQwMTA3LA0KPiArICAgIEwiUmVhZEtleVN0cm9rZUV4RnVuY3Rpb25BdXRvIiwNCj4gKyAgICBM IkZ1bmN0aW9uIEF1dG8gdGVzdCBmb3IgU2ltcGxlIFRleHQgSW5wdXQgRXggUHJvdG9jb2wgUmVh ZEtleVN0cm9rZUV4KCkuIiwNCj4gKyAgICBFRklfVEVTVF9MRVZFTF9NSU5JTUFMLA0KPiArICAg IGdTdXBwb3J0UHJvdG9jb2xHdWlkLA0KPiArICAgIEVGSV9URVNUX0NBU0VfQVVUTywNCj4gKyAg ICBCQlRlc3RSZWFkS2V5U3Ryb2tlRXhGdW5jdGlvbkF1dG9UZXN0DQo+ICsgIH0sDQo+ICAgICB7 DQo+ICAgICAgIEVGSV9TSU1QTEVfVEVYVF9JTlBVVF9FWF9QUk9UT0NPTF9URVNUX0VOVFJZX0dV SUQwMjAxLA0KPiAgICAgICBMIlJlYWRLZXlTdHJva2VFeENvbmZvcm1hbmNlIiwNCj4gQEAgLTE1 MSw3ICsxNjAsNiBAQCBCT09MRUFOICAgICBCZWVuRXhlY3V0ZWQ7DQo+ICAgLy8NCj4gICANCj4g ICBFRklfU1RBVFVTDQo+IC1FRklBUEkNCj4gICBJbml0aWFsaXplU2ltcGxlVGV4dElucHV0RXhC QlRlc3QgKA0KPiAgICAgSU4gRUZJX0hBTkRMRSAgICAgICAgICAgICAgICAgICBJbWFnZUhhbmRs ZSwNCj4gICAgIElOIEVGSV9TWVNURU1fVEFCTEUgICAgICAgICAgICAgKlN5c3RlbVRhYmxlDQo+ IEBAIC0xNzksNyArMTg3LDYgQEAgSW5pdGlhbGl6ZVNpbXBsZVRleHRJbnB1dEV4QkJUZXN0ICgN Cj4gICANCj4gICANCj4gICBFRklfU1RBVFVTDQo+IC1FRklBUEkNCj4gICBVbmxvYWRTaW1wbGVU ZXh0SW5wdXRFeEJCVGVzdCAoDQo+ICAgICBJTiBFRklfSEFORExFICAgICAgICAgICAgICAgICAg IEltYWdlSGFuZGxlDQo+ICAgICApDQo+IGRpZmYgLS1naXQgDQo+IGEvdWVmaS1zY3QvU2N0UGtn L1Rlc3RDYXNlL1VFRkkvRUZJL1Byb3RvY29sL1NpbXBsZVRleHRJbnB1dEV4L0JsYWNrQm8NCj4g eFRlc3QvU2ltcGxlVGV4dElucHV0RXhCQlRlc3RNYWluLmggDQo+IGIvdWVmaS1zY3QvU2N0UGtn L1Rlc3RDYXNlL1VFRkkvRUZJL1Byb3RvY29sL1NpbXBsZVRleHRJbnB1dEV4L0JsYWNrQm8NCj4g eFRlc3QvU2ltcGxlVGV4dElucHV0RXhCQlRlc3RNYWluLmgNCj4gaW5kZXggY2IyMTYwYjMuLjg2 NzY2MDY4IDEwMDY0NA0KPiAtLS0gDQo+IGEvdWVmaS1zY3QvU2N0UGtnL1Rlc3RDYXNlL1VFRkkv RUZJL1Byb3RvY29sL1NpbXBsZVRleHRJbnB1dEV4L0JsYWNrQm8NCj4geFRlc3QvU2ltcGxlVGV4 dElucHV0RXhCQlRlc3RNYWluLmgNCj4gKysrIGIvdWVmaS1zY3QvU2N0UGtnL1Rlc3RDYXNlL1VF RkkvRUZJL1Byb3RvY29sL1NpbXBsZVRleHRJbnB1dEV4L0JsYQ0KPiArKysgY2tCb3hUZXN0L1Np bXBsZVRleHRJbnB1dEV4QkJUZXN0TWFpbi5oDQo+IEBAIC0xLDcgKzEsNyBAQA0KPiAgIC8qKiBA ZmlsZQ0KPiAgIA0KPiAgICAgQ29weXJpZ2h0IDIwMDYgLSAyMDE3IFVuaWZpZWQgRUZJLCBJbmMu PEJSPg0KPiAtICBDb3B5cmlnaHQgKGMpIDIwMTAgLSAyMDE3LCBJbnRlbCBDb3Jwb3JhdGlvbi4g QWxsIHJpZ2h0cyANCj4gcmVzZXJ2ZWQuPEJSPg0KPiArICBDb3B5cmlnaHQgKGMpIDIwMTAgLSAy MDE4LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyANCj4gKyByZXNlcnZlZC48QlI+DQo+ ICAgDQo+ICAgICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ ICAgICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQg Y29uZGl0aW9ucyBvZiANCj4gdGhlIEJTRCBMaWNlbnNlIEBAIC01Nyw2ICs1Nyw4IEBAIEFic3Ry YWN0Og0KPiAgICNkZWZpbmUgRUZJX1NJTVBMRV9URVhUX0lOUFVUX0VYX1BST1RPQ09MX1RFU1Rf RU5UUllfR1VJRDAxMDYgXA0KPiAgIHsgMHhkYmM2ZTY1OSwgMHhiMGUwLCAweDQ0NzEsIHsgMHg5 NCwgMHgxMywgMHg0NSwgMHgxYiwgMHhkYywgMHhlMiwgDQo+IDB4YWQsIDB4YzcgfSB9DQo+ICAg DQo+ICsjZGVmaW5lIEVGSV9TSU1QTEVfVEVYVF9JTlBVVF9FWF9QUk9UT0NPTF9URVNUX0VOVFJZ X0dVSUQwMTA3IFwgeyANCj4gKzB4MmMzY2EyODIsIDB4NTY0NCwgMHg0MWI2LCB7IDB4YWYsIDB4 YzksIDB4NDMsIDB4ODcsIDB4ZjIsIDB4NTMsIA0KPiArMHg4OSwgMHhiZCB9IH0NCj4gICAvLw0K PiAgIC8vIEVudHJ5IEdVSURzIGZvciBDb25mIFRlc3QNCj4gICAvLw0KPiBAQCAtODYsNyArODgs NiBAQCB0eXBlZGVmIGVudW0gew0KPiAgIC8vDQo+ICAgLy8NCj4gICBFRklfU1RBVFVTDQo+IC1F RklBUEkNCj4gICBJbml0aWFsaXplU2ltcGxlVGV4dElucHV0RXhCQlRlc3QgKA0KPiAgICAgSU4g RUZJX0hBTkRMRSAgICAgICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwNCj4gICAgIElOIEVGSV9T WVNURU1fVEFCTEUgICAgICAgICAgICAgKlN5c3RlbVRhYmxlDQo+IEBAIC05NCw3ICs5NSw2IEBA IEluaXRpYWxpemVTaW1wbGVUZXh0SW5wdXRFeEJCVGVzdCAoDQo+ICAgICANCj4gICAgIA0KPiAg IEVGSV9TVEFUVVMNCj4gLUVGSUFQSQ0KPiAgIFVubG9hZFNpbXBsZVRleHRJbnB1dEV4QkJUZXN0 ICgNCj4gICAgIElOIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgICAgSW1hZ2VIYW5kbGUNCj4g ICAgICk7DQo+IEBAIC0xNTUsNiArMTU1LDE1IEBAIEJCVGVzdFVucmVnaXN0ZXJLZXlOb3RpZnlG dW5jdGlvbk1hbnVhbFRlc3QgKA0KPiAgICAgSU4gRUZJX1RFU1RfTEVWRUwgICAgICAgICAgICAg VGVzdExldmVsLA0KPiAgICAgSU4gRUZJX0hBTkRMRSAgICAgICAgICAgICAgICAgU3VwcG9ydEhh bmRsZQ0KPiAgICAgKTsNCj4gKw0KPiArDQo+ICtFRklfU1RBVFVTDQo+ICtCQlRlc3RSZWFkS2V5 U3Ryb2tlRXhGdW5jdGlvbkF1dG9UZXN0ICgNCj4gKyAgSU4gRUZJX0JCX1RFU1RfUFJPVE9DT0wg ICAgICAgKlRoaXMsDQo+ICsgIElOIFZPSUQgICAgICAgICAgICAgICAgICAgICAgICpDbGllbnRJ bnRlcmZhY2UsDQo+ICsgIElOIEVGSV9URVNUX0xFVkVMICAgICAgICAgICAgIFRlc3RMZXZlbCwN Cj4gKyAgSU4gRUZJX0hBTkRMRSAgICAgICAgICAgICAgICAgU3VwcG9ydEhhbmRsZQ0KPiArICAp Ow0KPiAgICAgDQo+ICAgICANCj4gICBFRklfU1RBVFVTDQo+IEBAIC0yMzgsNiArMjQ3LDEzIEBA IEJCVGVzdFVucmVnaXN0ZXJLZXlOb3RpZnlGdW5jdGlvbk1hbnVhbFRlc3RDaGVja3BvaW50MSAo DQo+ICAgICApOw0KPiAgIA0KPiAgIA0KPiArRUZJX1NUQVRVUw0KPiArQkJUZXN0UmVhZEtleVN0 cm9rZUV4RnVuY3Rpb25BdXRvVGVzdENoZWNrcG9pbnQxICgNCj4gKyAgSU4gRUZJX1NUQU5EQVJE X1RFU1RfTElCUkFSWV9QUk9UT0NPTCAgICAgICAgICpTdGFuZGFyZExpYiwNCj4gKyAgSU4gRUZJ X1NJTVBMRV9URVhUX0lOUFVUX0VYX1BST1RPQ09MICAgICAgICAgICpTaW1wbGVUZXh0SW5wdXRF eA0KPiArICApOw0KPiArDQo+ICsNCj4gICBFRklfU1RBVFVTDQo+ICAgQkJUZXN0UmVhZEtleVN0 cm9rZUV4Q29uZm9ybWFuY2VUZXN0Q2hlY2twb2ludDEgKA0KPiAgICAgSU4gRUZJX1NUQU5EQVJE X1RFU1RfTElCUkFSWV9QUk9UT0NPTCAgICAgICAgICpTdGFuZGFyZExpYiwNCj4gZGlmZiAtLWdp dCANCj4gYS91ZWZpLXNjdC9TY3RQa2cvVGVzdENhc2UvVUVGSS9JSFYvUHJvdG9jb2wvU2ltcGxl VGV4dElucHV0RXgvQmxhY2tCbw0KPiB4VGVzdC9HdWlkLmMgDQo+IGIvdWVmaS1zY3QvU2N0UGtn L1Rlc3RDYXNlL1VFRkkvSUhWL1Byb3RvY29sL1NpbXBsZVRleHRJbnB1dEV4L0JsYWNrQm8NCj4g eFRlc3QvR3VpZC5jDQo+IGluZGV4IGI3OTc3MmM5Li42ODc2ODE0YyAxMDA2NDQNCj4gLS0tIA0K PiBhL3VlZmktc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0lIVi9Qcm90b2NvbC9TaW1wbGVUZXh0 SW5wdXRFeC9CbGFja0JvDQo+IHhUZXN0L0d1aWQuYw0KPiArKysgYi91ZWZpLXNjdC9TY3RQa2cv VGVzdENhc2UvVUVGSS9JSFYvUHJvdG9jb2wvU2ltcGxlVGV4dElucHV0RXgvQmxhDQo+ICsrKyBj a0JveFRlc3QvR3VpZC5jDQo+IEBAIC0xLDcgKzEsNyBAQA0KPiAgIC8qKiBAZmlsZQ0KPiAgIA0K PiAgICAgQ29weXJpZ2h0IDIwMDYgLSAyMDE1IFVuaWZpZWQgRUZJLCBJbmMuPEJSPg0KPiAtICBD b3B5cmlnaHQgKGMpIDIwMTAgLSAyMDE1LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyAN Cj4gcmVzZXJ2ZWQuPEJSPg0KPiArICBDb3B5cmlnaHQgKGMpIDIwMTAgLSAyMDE4LCBJbnRlbCBD b3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyANCj4gKyByZXNlcnZlZC48QlI+DQo+ICAgDQo+ICAgICBU aGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICAgICBhcmUgbGlj ZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBv ZiANCj4gdGhlIEJTRCBMaWNlbnNlIEBAIC02MywzICs2Myw4IEBAIEVGSV9HVUlEIGdTaW1wbGVU ZXh0SW5wdXRFeEJCVGVzdEZ1bmN0aW9uQXNzZXJ0aW9uR3VpZDAwNyA9IEVGSV9URVNUX1NJTVBM RVRFWFRJDQo+ICAgRUZJX0dVSUQgZ1NpbXBsZVRleHRJbnB1dEV4QkJUZXN0RnVuY3Rpb25Bc3Nl cnRpb25HdWlkMDA4ID0gDQo+IEVGSV9URVNUX1NJTVBMRVRFWFRJTlBVVEVYQkJURVNURlVOQ1RJ T05fQVNTRVJUSU9OXzAwOF9HVUlEOw0KPiAgIA0KPiAgIEVGSV9HVUlEIGdTaW1wbGVUZXh0SW5w dXRFeEJCVGVzdEZ1bmN0aW9uQXNzZXJ0aW9uR3VpZDAwOSA9IA0KPiBFRklfVEVTVF9TSU1QTEVU RVhUSU5QVVRFWEJCVEVTVEZVTkNUSU9OX0FTU0VSVElPTl8wMDlfR1VJRDsNCj4gKw0KPiArRUZJ X0dVSUQgZ1NpbXBsZVRleHRJbnB1dEV4QkJUZXN0RnVuY3Rpb25Bc3NlcnRpb25HdWlkMDEwID0g DQo+ICtFRklfVEVTVF9TSU1QTEVURVhUSU5QVVRFWEJCVEVTVEZVTkNUSU9OX0FTU0VSVElPTl8w MTBfR1VJRDsNCj4gKw0KPiArRUZJX0dVSUQgZ1NpbXBsZVRleHRJbnB1dEV4QkJUZXN0RnVuY3Rp b25Bc3NlcnRpb25HdWlkMDExID0gDQo+ICtFRklfVEVTVF9TSU1QTEVURVhUSU5QVVRFWEJCVEVT VEZVTkNUSU9OX0FTU0VSVElPTl8wMTFfR1VJRDsNCj4gKw0KPiBkaWZmIC0tZ2l0IA0KPiBhL3Vl Zmktc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0lIVi9Qcm90b2NvbC9TaW1wbGVUZXh0SW5wdXRF eC9CbGFja0JvDQo+IHhUZXN0L0d1aWQuaCANCj4gYi91ZWZpLXNjdC9TY3RQa2cvVGVzdENhc2Uv VUVGSS9JSFYvUHJvdG9jb2wvU2ltcGxlVGV4dElucHV0RXgvQmxhY2tCbw0KPiB4VGVzdC9HdWlk LmgNCj4gaW5kZXggNmM5MGZjYTMuLjJhNmJlNDhiIDEwMDY0NA0KPiAtLS0gDQo+IGEvdWVmaS1z Y3QvU2N0UGtnL1Rlc3RDYXNlL1VFRkkvSUhWL1Byb3RvY29sL1NpbXBsZVRleHRJbnB1dEV4L0Js YWNrQm8NCj4geFRlc3QvR3VpZC5oDQo+ICsrKyBiL3VlZmktc2N0L1NjdFBrZy9UZXN0Q2FzZS9V RUZJL0lIVi9Qcm90b2NvbC9TaW1wbGVUZXh0SW5wdXRFeC9CbGENCj4gKysrIGNrQm94VGVzdC9H dWlkLmgNCj4gQEAgLTEsNyArMSw3IEBADQo+ICAgLyoqIEBmaWxlDQo+ICAgDQo+ICAgICBDb3B5 cmlnaHQgMjAwNiAtIDIwMTAgVW5pZmllZCBFRkksIEluYy48QlI+DQo+IC0gIENvcHlyaWdodCAo YykgMjAxMCwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiAr ICBDb3B5cmlnaHQgKGMpIDIwMTAgLSAyMDE4LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0 cyANCj4gKyByZXNlcnZlZC48QlI+DQo+ICAgDQo+ICAgICBUaGlzIHByb2dyYW0gYW5kIHRoZSBh Y2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICAgICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxh YmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiANCj4gdGhlIEJTRCBMaWNlbnNl IEBAIC0xMTksMyArMTE5LDEzIEBAIGV4dGVybiBFRklfR1VJRCBnU2ltcGxlVGV4dElucHV0RXhC QlRlc3RGdW5jdGlvbkFzc2VydGlvbkd1aWQwMDg7DQo+ICAgeyAweDUzNDM2OWY3LCAweDgzOTks IDB4NDM1MywgeyAweDk0LCAweGFkLCAweGM0LCAweDQ4LCAweGZhLCAweGRhLCANCj4gMHhlYiwg MHg4NCB9IH0NCj4gICANCj4gICBleHRlcm4gRUZJX0dVSUQgZ1NpbXBsZVRleHRJbnB1dEV4QkJU ZXN0RnVuY3Rpb25Bc3NlcnRpb25HdWlkMDA5Ow0KPiArDQo+ICsjZGVmaW5lIEVGSV9URVNUX1NJ TVBMRVRFWFRJTlBVVEVYQkJURVNURlVOQ1RJT05fQVNTRVJUSU9OXzAxMF9HVUlEIFwgDQo+ICt7 IDB4Y2Y0ZDU0ZWIsIDB4NjY5NiwgMHg0Nzk0LCB7IDB4OTEsIDB4NzQsIDB4NTksIDB4ZCwgMHgx YywgMHgyMiwgDQo+ICsweGE4LCAweDY3IH0gfQ0KPiArDQo+ICtleHRlcm4gRUZJX0dVSUQgZ1Np bXBsZVRleHRJbnB1dEV4QkJUZXN0RnVuY3Rpb25Bc3NlcnRpb25HdWlkMDEwOw0KPiArDQo+ICsj ZGVmaW5lIEVGSV9URVNUX1NJTVBMRVRFWFRJTlBVVEVYQkJURVNURlVOQ1RJT05fQVNTRVJUSU9O XzAxMV9HVUlEIFwgDQo+ICt7IDB4ZjhlOGY4NzksIDB4YTZkNCwgMHg0ZmQzLCB7IDB4OGIsIDB4 OGUsIDB4YmEsIDB4MWQsIDB4MTgsIDB4ZjEsIA0KPiArMHg0MCwgMHg3MSB9IH0NCj4gKw0KPiAr ZXh0ZXJuIEVGSV9HVUlEIGdTaW1wbGVUZXh0SW5wdXRFeEJCVGVzdEZ1bmN0aW9uQXNzZXJ0aW9u R3VpZDAxMTsNCj4gZGlmZiAtLWdpdCANCj4gYS91ZWZpLXNjdC9TY3RQa2cvVGVzdENhc2UvVUVG SS9JSFYvUHJvdG9jb2wvU2ltcGxlVGV4dElucHV0RXgvQmxhY2tCbw0KPiB4VGVzdC9TaW1wbGVU ZXh0SW5wdXRFeEJCVGVzdEZ1bmN0aW9uLmMgDQo+IGIvdWVmaS1zY3QvU2N0UGtnL1Rlc3RDYXNl L1VFRkkvSUhWL1Byb3RvY29sL1NpbXBsZVRleHRJbnB1dEV4L0JsYWNrQm8NCj4geFRlc3QvU2lt cGxlVGV4dElucHV0RXhCQlRlc3RGdW5jdGlvbi5jDQo+IGluZGV4IGNlNWE4MGFjLi4wNDk0OWRl OCAxMDA2NDQNCj4gLS0tIA0KPiBhL3VlZmktc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0lIVi9Q cm90b2NvbC9TaW1wbGVUZXh0SW5wdXRFeC9CbGFja0JvDQo+IHhUZXN0L1NpbXBsZVRleHRJbnB1 dEV4QkJUZXN0RnVuY3Rpb24uYw0KPiArKysgYi91ZWZpLXNjdC9TY3RQa2cvVGVzdENhc2UvVUVG SS9JSFYvUHJvdG9jb2wvU2ltcGxlVGV4dElucHV0RXgvQmxhDQo+ICsrKyBja0JveFRlc3QvU2lt cGxlVGV4dElucHV0RXhCQlRlc3RGdW5jdGlvbi5jDQo+IEBAIC00NTYsNiArNDU2LDc4IEBAIEJC VGVzdFVucmVnaXN0ZXJLZXlOb3RpZnlGdW5jdGlvbk1hbnVhbFRlc3QgKA0KPiAgIH0NCj4gICAN Cj4gICANCj4gK0VGSV9TVEFUVVMNCj4gK0JCVGVzdFJlYWRLZXlTdHJva2VFeEZ1bmN0aW9uQXV0 b1Rlc3QgKA0KPiArICBJTiBFRklfQkJfVEVTVF9QUk9UT0NPTCAgICAgICAqVGhpcywNCj4gKyAg SU4gVk9JRCAgICAgICAgICAgICAgICAgICAgICAgKkNsaWVudEludGVyZmFjZSwNCj4gKyAgSU4g RUZJX1RFU1RfTEVWRUwgICAgICAgICAgICAgVGVzdExldmVsLA0KPiArICBJTiBFRklfSEFORExF ICAgICAgICAgICAgICAgICBTdXBwb3J0SGFuZGxlDQo+ICsgICkNCj4gK3sNCj4gKyAgRUZJX1NU QU5EQVJEX1RFU1RfTElCUkFSWV9QUk9UT0NPTCAgICAqU3RhbmRhcmRMaWI7DQo+ICsgIEVGSV9T VEFUVVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiArICBFRklfU0lNUExF X1RFWFRfSU5QVVRfRVhfUFJPVE9DT0wgICAgICpTaW1wbGVUZXh0SW5wdXRFeDsNCj4gKw0KPiAr ICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICAgICAgICAgICAgKkRldmljZVBhdGg7DQo+ICsg IENIQVIxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqRGV2aWNlUGF0aFN0cjsNCj4g Kw0KPiArICAvLw0KPiArICAvLyBpbml0DQo+ICsgIC8vDQo+ICsgIFNpbXBsZVRleHRJbnB1dEV4 ID0gDQo+ICsgKEVGSV9TSU1QTEVfVEVYVF9JTlBVVF9FWF9QUk9UT0NPTCopQ2xpZW50SW50ZXJm YWNlOw0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIEdldCB0aGUgU3RhbmRhcmQgTGlicmFyeSBJbnRl cmZhY2UgIC8vICBTdGF0dXMgPSANCj4gKyBndEJTLT5IYW5kbGVQcm90b2NvbCAoDQo+ICsgICAg ICAgICAgICAgICAgICAgU3VwcG9ydEhhbmRsZSwNCj4gKyAgICAgICAgICAgICAgICAgICAmZ0Vm aVN0YW5kYXJkVGVzdExpYnJhcnlHdWlkLA0KPiArICAgICAgICAgICAgICAgICAgIChWT0lEICoq KSAmU3RhbmRhcmRMaWINCj4gKyAgICAgICAgICAgICAgICAgICApOw0KPiArICBpZiAoRUZJX0VS Uk9SKFN0YXR1cykpIHsNCj4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiArICB9DQo+ICsNCj4gKyAg Ly8NCj4gKyAgLy8gR2V0IERldmljZSBQYXRoIG9mIGN1cnJlbnQgU2ltcGxlX1RleHRfSW5wdXRf RXhfUHJvdG9jb2wgIC8vIEFuZCANCj4gKyBvdXQgcHV0IGRldmljZSBwYXRoIG9yIGRldmljZSBu YW1lICAvLyAgU3RhdHVzID0gDQo+ICsgTG9jYXRlRGV2aWNlUGF0aEZyb21TaW1wbGVUZXh0SW5w dXRFeCAoU2ltcGxlVGV4dElucHV0RXgsIA0KPiArICZEZXZpY2VQYXRoLCBTdGFuZGFyZExpYik7 ICBpZiAoU3RhdHVzID09IEVGSV9TVUNDRVNTKSB7DQo+ICsgICAgRGV2aWNlUGF0aFN0ciA9IFNj dERldmljZVBhdGhUb1N0ciAoRGV2aWNlUGF0aCk7DQo+ICsgICAgaWYgKERldmljZVBhdGhTdHIg IT0gTlVMTCkgew0KPiArICAgICAgU3RhbmRhcmRMaWItPlJlY29yZE1lc3NhZ2UgKA0KPiArICAg ICAgICAgICAgICAgICAgICAgU3RhbmRhcmRMaWIsDQo+ICsgICAgICAgICAgICAgICAgICAgICBF RklfVkVSQk9TRV9MRVZFTF9ERUZBVUxULA0KPiArICAgICAgICAgICAgICAgICAgICAgTCJcclxu Q3VycmVudCBEZXZpY2U6ICVzIiwNCj4gKyAgICAgICAgICAgICAgICAgICAgIERldmljZVBhdGhT dHINCj4gKyAgICAgICAgICAgICAgICAgICAgICk7DQo+ICsgICAgICBTdGF0dXMgPSBndEJTLT5G cmVlUG9vbCAoRGV2aWNlUGF0aFN0cik7DQo+ICsgICAgICBpZiAoRUZJX0VSUk9SKFN0YXR1cykp DQo+ICsgICAgICAgIHJldHVybiBTdGF0dXM7DQo+ICsgICAgICBEZXZpY2VQYXRoU3RyPU5VTEw7 DQo+ICsgICAgfQ0KPiArICB9IGVsc2Ugew0KPiArICAgIC8vDQo+ICsgICAgLy8gQ29uc29sZSBT cGxpdHRlci9TdGRFcnINCj4gKyAgICAvLw0KPiArICAgIFN0YW5kYXJkTGliLT5SZWNvcmRNZXNz YWdlICgNCj4gKyAgICAgICAgICAgICAgICAgICBTdGFuZGFyZExpYiwNCj4gKyAgICAgICAgICAg ICAgICAgICBFRklfVkVSQk9TRV9MRVZFTF9ERUZBVUxULA0KPiArICAgICAgICAgICAgICAgICAg IEwiXHJcbkN1cnJlbnQgRGV2aWNlOiBDb25zb2xlU3BsaXR0ZXIvVHh0SW4iDQo+ICsgICAgICAg ICAgICAgICAgICAgKTsNCj4gKyAgfQ0KPiArDQo+ICsgIC8vDQo+ICsgIC8vDQo+ICsgIC8vDQo+ ICsgIEJCVGVzdFJlYWRLZXlTdHJva2VFeEZ1bmN0aW9uQXV0b1Rlc3RDaGVja3BvaW50MSAoIFN0 YW5kYXJkTGliLCANCj4gKyBTaW1wbGVUZXh0SW5wdXRFeCApOw0KPiArDQo+ICsgIHJldHVybiBF RklfU1VDQ0VTUzsNCj4gK30NCj4gKw0KPiArDQo+ICsNCj4gICAvLw0KPiAgIC8vQ2hlY2sgUG9p bnRzDQo+ICAgLy8NCj4gQEAgLTEwNjAsNCArMTEzMiwxNDIgQEAgQkJUZXN0VW5yZWdpc3Rlcktl eU5vdGlmeUZ1bmN0aW9uTWFudWFsVGVzdENoZWNrcG9pbnQxICgNCj4gICAgICAgICAgICAgICk7 DQo+ICAgDQo+ICAgICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+IC19DQo+IFwgTm8gbmV3bGluZSBh dCBlbmQgb2YgZmlsZQ0KPiArfQ0KPiArDQo+ICtFRklfU1RBVFVTDQo+ICtCQlRlc3RSZWFkS2V5 U3Ryb2tlRXhGdW5jdGlvbkF1dG9UZXN0Q2hlY2twb2ludDEgKA0KPiArICBJTiBFRklfU1RBTkRB UkRfVEVTVF9MSUJSQVJZX1BST1RPQ09MICAgICAgICAgKlN0YW5kYXJkTGliLA0KPiArICBJTiBF RklfU0lNUExFX1RFWFRfSU5QVVRfRVhfUFJPVE9DT0wgICAgICAgICAgKlNpbXBsZVRleHRJbnB1 dEV4DQo+ICsgICkNCj4gK3sNCj4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgIFN0YXR1czsNCj4g KyAgRUZJX1RFU1RfQVNTRVJUSU9OICAgIEFzc2VydGlvblR5cGU7DQo+ICsgIEVGSV9LRVlfREFU QSAgICAgICAgICBLZXk7DQo+ICsgIFVJTlQ4ICAgICAgICAgICAgICAgICBJbmRleDsNCj4gKw0K PiArICBFRklfS0VZX1RPR0dMRV9TVEFURSAgU3RhdGUgPSBFRklfVE9HR0xFX1NUQVRFX1ZBTElE IHwgDQo+ICsgRUZJX0tFWV9TVEFURV9FWFBPU0VEOw0KPiArDQo+ICsgIEVGSV9LRVlfVE9HR0xF X1NUQVRFICBWYWxpZFN0YXRlWzddID0gew0KTWFnaWMgTnVtYmVyIDcNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgRUZJX1RPR0dMRV9TVEFURV9WQUxJRCB8IEVGSV9LRVlfU1RBVEVfRVhQ T1NFRCB8IEVGSV9TQ1JPTExfTE9DS19BQ1RJVkUsDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgIEVGSV9UT0dHTEVfU1RBVEVfVkFMSUQgfCBFRklfS0VZX1NUQVRFX0VYUE9TRUQgfCBFRklf TlVNX0xPQ0tfQUNUSVZFLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfVE9HR0xF X1NUQVRFX1ZBTElEIHwgRUZJX0tFWV9TVEFURV9FWFBPU0VEIHwgRUZJX0NBUFNfTE9DS19BQ1RJ VkUsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9UT0dHTEVfU1RBVEVfVkFMSUQg fCBFRklfS0VZX1NUQVRFX0VYUE9TRUQgfCBFRklfU0NST0xMX0xPQ0tfQUNUSVZFIHwgRUZJX05V TV9MT0NLX0FDVElWRSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX1RPR0dMRV9T VEFURV9WQUxJRCB8IEVGSV9LRVlfU1RBVEVfRVhQT1NFRCB8IEVGSV9TQ1JPTExfTE9DS19BQ1RJ VkUgfCBFRklfQ0FQU19MT0NLX0FDVElWRSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg RUZJX1RPR0dMRV9TVEFURV9WQUxJRCB8IEVGSV9LRVlfU1RBVEVfRVhQT1NFRCB8IEVGSV9OVU1f TE9DS19BQ1RJVkUgfCBFRklfQ0FQU19MT0NLX0FDVElWRSwNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgRUZJX1RPR0dMRV9TVEFURV9WQUxJRCB8IEVGSV9LRVlfU1RBVEVfRVhQT1NFRCB8 IEVGSV9TQ1JPTExfTE9DS19BQ1RJVkUgfEVGSV9OVU1fTE9DS19BQ1RJVkUgfCBFRklfQ0FQU19M T0NLX0FDVElWRSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgfTsNCj4gKw0KPiArICAv Lw0KPiArICAvL1Jlc2V0IHRoZSBjb25zb2xlDQo+ICsgIC8vDQo+ICsgIFN0YXR1cyA9IFNpbXBs ZVRleHRJbnB1dEV4LT5SZWFkS2V5U3Ryb2tlRXggKA0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFNpbXBsZVRleHRJbnB1dEV4LA0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICZLZXkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAp Ow0KPiArICBpZiAoRUZJX0VSUk9SKFN0YXR1cykgJiYgU3RhdHVzICE9IEVGSV9OT1RfUkVBRFkp IHsNCj4gKyAgCSByZXR1cm4gU3RhdHVzOw0KPiArICB9DQo+ICsNCj4gKyAgaWYgKChLZXkuS2V5 U3RhdGUuS2V5VG9nZ2xlU3RhdGUgJiBFRklfVE9HR0xFX1NUQVRFX1ZBTElEKSA9PSAwKSB7DQo+ ICsgIAkgcmV0dXJuIEVGSV9VTlNVUFBPUlRFRDsNCj4gKyAgfQ0KPiArDQo+ICsgIC8vDQo+ICsg IC8vU2V0IHRoZSBLRVlfU1RBVEVfRVhQT1NFRCB0byBjaGVjayB0aGUgaW1jb21wbGV0ZSBrZXlz dHJva2UgDQo+ICsgc3VwcG9ydCAgLy8gIFN0YXR1cyA9IFNpbXBsZVRleHRJbnB1dEV4LT5TZXRT dGF0ZSAoDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpbXBsZVRleHRJbnB1 dEV4LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmU3RhdGUNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCj4gKw0KPiArICBpZiAoU3RhdHVzID09IEVG SV9VTlNVUFBPUlRFRCB8fCBTdGF0dXMgPT0gRUZJX0RFVklDRV9FUlJPUikgew0KPiArICAgIFN0 YW5kYXJkTGliLT5SZWNvcmRBc3NlcnRpb24gKA0KPiArICAgICAgICAgICAgICAgICAgIFN0YW5k YXJkTGliLA0KPiArICAgICAgICAgICAgICAgICAgIEVGSV9URVNUX0FTU0VSVElPTl9XQVJOSU5H LA0KPiArICAgICAgICAgICAgICAgICAgIGdUZXN0R2VuZXJpY0ZhaWx1cmVHdWlkLA0KPiArICAg ICAgICAgICAgICAgICAgIEwiRUZJX1NJTVBMRV9URVhUX0lOUFVUX0VYX1BST1RPQ09MLlNldFN0 YXRlIC0gU2V0U3RhdGUoKSBkb2Vzbid0IHJldHVybiBFRklfU1VDQ0VTUyB3aXRoIEVGSV9LRVlf U1RBVEVfRVhQT1NFRCIsDQo+ICsgICAgICAgICAgICAgICAgICAgTCIlYTolZCwgU3RhdHVzID0g JXJcbiIsDQo+ICsgICAgICAgICAgICAgICAgICAgX19GSUxFX18sDQo+ICsgICAgICAgICAgICAg ICAgICAgKFVJTlROKV9fTElORV9fLA0KPiArICAgICAgICAgICAgICAgICAgIFN0YXR1cw0KPiAr ICAgICAgICAgICAgICAgICAgICk7DQo+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gKyAgfQ0KPiAr DQo+ICsgIGZvciAoSW5kZXg9MDsgSW5kZXg8NzsgSW5kZXgrKykgew0KTWFnaWMgTnVtYmVyIDcN Cj4gKw0KPiArICAgIC8vDQo+ICsgICAgLy8gU2V0IHRoZSB2YWxpZCBLZXlUb2dnbGVTdGF0ZQ0K PiArICAgIC8vDQo+ICsgICAgU3RhdHVzID0gU2ltcGxlVGV4dElucHV0RXgtPlNldFN0YXRlICgN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaW1wbGVUZXh0SW5wdXRFeCwN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZFN0YXRlICsgSW5kZXgN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KPiArDQo+ICsgICAgaWYg KFN0YXR1cyAhPSBFRklfU1VDQ0VTUykgew0KPiArICAgICAgU3RhbmRhcmRMaWItPlJlY29yZEFz c2VydGlvbiAoDQo+ICsgICAgICAgICAgICAgICAgICAgICBTdGFuZGFyZExpYiwNCj4gKyAgICAg ICAgICAgICAgICAgICAgIEVGSV9URVNUX0FTU0VSVElPTl9GQUlMRUQsDQo+ICsgICAgICAgICAg ICAgICAgICAgICBnVGVzdEdlbmVyaWNGYWlsdXJlR3VpZCwNCj4gKyAgICAgICAgICAgICAgICAg ICAgIEwiRUZJX1NJTVBMRV9URVhUX0lOUFVUX0VYX1BST1RPQ09MLlNldFN0YXRlIC0gU2V0U3Rh dGUoKSBkb2Vzbid0IHJldHVybiBFRklfU1VDQ0VTUyB3aXRoIHRoZSB2YWxpZCBLZXlUb2dnbGVT dGF0ZSIsDQo+ICsgICAgICAgICAgICAgICAgICAgICBMIiVhOiVkLCBTdGF0dXMgPSAlciwgS2V5 VG9nZ2xlU3RhdGUgPSAleFxuIiwNCj4gKyAgICAgICAgICAgICAgICAgICAgIF9fRklMRV9fLA0K PiArICAgICAgICAgICAgICAgICAgICAgKFVJTlROKV9fTElORV9fLA0KPiArICAgICAgICAgICAg ICAgICAgICAgU3RhdHVzLA0KPiArICAgICAgICAgICAgICAgICAgICAgVmFsaWRTdGF0ZVtJbmRl eF0NCj4gKyAgICAgICAgICAgICAgICAgICAgICk7DQo+ICsgICAgICBjb250aW51ZTsNCj4gKyAg ICB9DQo+ICsNCj4gKyAgICAvLw0KPiArICAgIC8vIEdldCB0aGUgS2V5VG9nZ2xlU3RhdGUNCj4g KyAgICAvLw0KPiArICAgIFN0YXR1cyA9IFNpbXBsZVRleHRJbnB1dEV4LT5SZWFkS2V5U3Ryb2tl RXggKA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpbXBsZVRleHRJbnB1 dEV4LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZLZXkNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KPiArDQo+ICsgICAgaWYgKFN0YXR1cyAh PSBFRklfTk9UX1JFQURZKSB7DQo+ICsgICAgICBBc3NlcnRpb25UeXBlID0gRUZJX1RFU1RfQVNT RVJUSU9OX0ZBSUxFRDsNCj4gKw0KPiArICAgICAgU3RhbmRhcmRMaWItPlJlY29yZEFzc2VydGlv biAoDQo+ICsgICAgICAgICAgICAgICAgICAgICBTdGFuZGFyZExpYiwNCj4gKyAgICAgICAgICAg ICAgICAgICAgIEFzc2VydGlvblR5cGUsDQo+ICsgICAgICAgICAgICAgICAgICAgICBnU2ltcGxl VGV4dElucHV0RXhCQlRlc3RGdW5jdGlvbkFzc2VydGlvbkd1aWQwMTAsDQo+ICsgICAgICAgICAg ICAgICAgICAgICBMIkVGSV9TSU1QTEVfVEVYVF9JTlBVVF9FWF9QUk9UT0NPTC5SZWFkS2V5U3Ry b2tlRXggLSBSZWFkS2V5U3Ryb2tlRXgoKSBkb2Vzbid0IHJldHVybiBFRklfTk9UX1JFQURZIHdo ZW4gdGhlcmUgaXMgbm8gS2V5IGRhdGEgYW5kIEVGSV9LRVlfU1RBVEVfRVhQT1NFRCBpcyBlbmFi bGVkIiwNCj4gKyAgICAgICAgICAgICAgICAgICAgIEwiJWE6JWQsIFN0YXR1cyA9ICVyLCBJbmRl eCA9ICVkLCBLZXlUb2dnbGVTdGF0ZSA9ICV4XG4iLA0KPiArICAgICAgICAgICAgICAgICAgICAg X19GSUxFX18sDQo+ICsgICAgICAgICAgICAgICAgICAgICAoVUlOVE4pX19MSU5FX18sDQo+ICsg ICAgICAgICAgICAgICAgICAgICBTdGF0dXMsDQo+ICsgICAgICAgICAgICAgICAgICAgICBJbmRl eCwNCj4gKyAgICAgICAgICAgICAgICAgICAgIFZhbGlkU3RhdGVbSW5kZXhdDQo+ICsgICAgICAg ICAgICAgICAgICAgICApOw0KPiArDQo+ICsgICAgfSBlbHNlIHsNCj4gKyAgICAgIGlmIChLZXku S2V5U3RhdGUuS2V5VG9nZ2xlU3RhdGUgPT0gVmFsaWRTdGF0ZVtJbmRleF0gJiYNCj4gKyAgICAg IAkgICAoS2V5LktleVN0YXRlLktleVNoaWZ0U3RhdGUgPT0gMCB8fCBLZXkuS2V5U3RhdGUuS2V5 U2hpZnRTdGF0ZSA9PSBFRklfU0hJRlRfU1RBVEVfVkFMSUQpICYmDQo+ICsgICAgICAJIEtleS5L ZXkuU2NhbkNvZGUgPT0gMCAmJiBLZXkuS2V5LlVuaWNvZGVDaGFyID09IDApDQo+ICsgICAgICAg IEFzc2VydGlvblR5cGUgPSBFRklfVEVTVF9BU1NFUlRJT05fUEFTU0VEOw0KPiArICAgICAgZWxz ZQ0KPiArICAgICAgCSBBc3NlcnRpb25UeXBlID0gRUZJX1RFU1RfQVNTRVJUSU9OX0ZBSUxFRDsN Cj4gKw0KPiArDQo+ICsgICAgICBTdGFuZGFyZExpYi0+UmVjb3JkQXNzZXJ0aW9uICgNCj4gKyAg ICAgICAgICAgICAgICAgICAgIFN0YW5kYXJkTGliLA0KPiArICAgICAgICAgICAgICAgICAgICAg QXNzZXJ0aW9uVHlwZSwNCj4gKyAgICAgICAgICAgICAgICAgICAgIGdTaW1wbGVUZXh0SW5wdXRF eEJCVGVzdEZ1bmN0aW9uQXNzZXJ0aW9uR3VpZDAxMSwNCj4gKyAgICAgICAgICAgICAgICAgICAg IEwiRUZJX1NJTVBMRV9URVhUX0lOUFVUX0VYX1BST1RPQ09MLlJlYWRLZXlTdHJva2VFeCAtIFJl YWRLZXlTdHJva2VFeCgpIHNob3VsZCBnZXQgdGhlIFZhbGlkU3RhdGUgd2l0aCBFRklfTk9UX1JF QURZIGFuZCBvdGhlciBmaWVsZCBpcyB6ZXJvIiwNCj4gKyAgICAgICAgICAgICAgICAgICAgIEwi JWE6JWQsIFN0YXR1cyA9ICVyLCBJbmRleCA9ICVkLCBLZXlUb2dnbGVTdGF0ZSA9ICV4LCBleHBl Y3QgU3RhdGUgPSAleFxuIiwNCj4gKyAgICAgICAgICAgICAgICAgICAgIF9fRklMRV9fLA0KPiAr ICAgICAgICAgICAgICAgICAgICAgKFVJTlROKV9fTElORV9fLA0KPiArICAgICAgICAgICAgICAg ICAgICAgU3RhdHVzLA0KPiArICAgICAgICAgICAgICAgICAgICAgSW5kZXgsDQo+ICsgICAgICAg ICAgICAgICAgICAgICBLZXkuS2V5U3RhdGUuS2V5VG9nZ2xlU3RhdGUsDQo+ICsgICAgICAgICAg ICAgICAgICAgICBWYWxpZFN0YXRlW0luZGV4XQ0KPiArICAgICAgICAgICAgICAgICAgICAgKTsN Cj4gKw0KPiArICAgIH0NCj4gKyAgfQ0KPiArDQo+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4g K30NCj4gZGlmZiAtLWdpdCANCj4gYS91ZWZpLXNjdC9TY3RQa2cvVGVzdENhc2UvVUVGSS9JSFYv UHJvdG9jb2wvU2ltcGxlVGV4dElucHV0RXgvQmxhY2tCbw0KPiB4VGVzdC9TaW1wbGVUZXh0SW5w dXRFeEJCVGVzdE1haW4uYyANCj4gYi91ZWZpLXNjdC9TY3RQa2cvVGVzdENhc2UvVUVGSS9JSFYv UHJvdG9jb2wvU2ltcGxlVGV4dElucHV0RXgvQmxhY2tCbw0KPiB4VGVzdC9TaW1wbGVUZXh0SW5w dXRFeEJCVGVzdE1haW4uYw0KPiBpbmRleCA0M2RiYmRhZS4uYzBhNGY1YWEgMTAwNjQ0DQo+IC0t LSANCj4gYS91ZWZpLXNjdC9TY3RQa2cvVGVzdENhc2UvVUVGSS9JSFYvUHJvdG9jb2wvU2ltcGxl VGV4dElucHV0RXgvQmxhY2tCbw0KPiB4VGVzdC9TaW1wbGVUZXh0SW5wdXRFeEJCVGVzdE1haW4u Yw0KPiArKysgYi91ZWZpLXNjdC9TY3RQa2cvVGVzdENhc2UvVUVGSS9JSFYvUHJvdG9jb2wvU2lt cGxlVGV4dElucHV0RXgvQmxhDQo+ICsrKyBja0JveFRlc3QvU2ltcGxlVGV4dElucHV0RXhCQlRl c3RNYWluLmMNCj4gQEAgLTEsNyArMSw3IEBADQo+ICAgLyoqIEBmaWxlDQo+ICAgDQo+ICAgICBD b3B5cmlnaHQgMjAwNiAtIDIwMTYgVW5pZmllZCBFRkksIEluYy48QlI+DQo+IC0gIENvcHlyaWdo dCAoYykgMjAxMCAtIDIwMTYsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIA0KPiByZXNl cnZlZC48QlI+DQo+ICsgIENvcHlyaWdodCAoYykgMjAxMCAtIDIwMTgsIEludGVsIENvcnBvcmF0 aW9uLiBBbGwgcmlnaHRzIA0KPiArIHJlc2VydmVkLjxCUj4NCj4gICANCj4gICAgIFRoaXMgcHJv Z3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gICAgIGFyZSBsaWNlbnNlZCBh bmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIA0KPiB0 aGUgQlNEIExpY2Vuc2UgQEAgLTEwNSw2ICsxMDUsMTUgQEAgRUZJX0JCX1RFU1RfRU5UUllfRklF TEQgZ0JCVGVzdEVudHJ5RmllbGRbXSA9IHsNCj4gICAgICAgQkJUZXN0VW5yZWdpc3RlcktleU5v dGlmeUZ1bmN0aW9uTWFudWFsVGVzdA0KPiAgICAgfSwNCj4gICAjZW5kaWYNCj4gKyAgew0KPiAr ICAgIEVGSV9TSU1QTEVfVEVYVF9JTlBVVF9FWF9QUk9UT0NPTF9URVNUX0VOVFJZX0dVSUQwMTA3 LA0KPiArICAgIEwiUmVhZEtleVN0cm9rZUV4RnVuY3Rpb25BdXRvIiwNCj4gKyAgICBMIkZ1bmN0 aW9uIEF1dG8gdGVzdCBmb3IgU2ltcGxlIFRleHQgSW5wdXQgRXggUHJvdG9jb2wgUmVhZEtleVN0 cm9rZUV4KCkuIiwNCj4gKyAgICBFRklfVEVTVF9MRVZFTF9NSU5JTUFMLA0KPiArICAgIGdTdXBw b3J0UHJvdG9jb2xHdWlkLA0KPiArICAgIEVGSV9URVNUX0NBU0VfQVVUTywNCj4gKyAgICBCQlRl c3RSZWFkS2V5U3Ryb2tlRXhGdW5jdGlvbkF1dG9UZXN0DQo+ICsgIH0sDQo+ICAgICB7DQo+ICAg ICAgIEVGSV9TSU1QTEVfVEVYVF9JTlBVVF9FWF9QUk9UT0NPTF9URVNUX0VOVFJZX0dVSUQwMjAx LA0KPiAgICAgICBMIlJlYWRLZXlTdHJva2VFeENvbmZvcm1hbmNlIiwNCj4gZGlmZiAtLWdpdCAN Cj4gYS91ZWZpLXNjdC9TY3RQa2cvVGVzdENhc2UvVUVGSS9JSFYvUHJvdG9jb2wvU2ltcGxlVGV4 dElucHV0RXgvQmxhY2tCbw0KPiB4VGVzdC9TaW1wbGVUZXh0SW5wdXRFeEJCVGVzdE1haW4uaCAN Cj4gYi91ZWZpLXNjdC9TY3RQa2cvVGVzdENhc2UvVUVGSS9JSFYvUHJvdG9jb2wvU2ltcGxlVGV4 dElucHV0RXgvQmxhY2tCbw0KPiB4VGVzdC9TaW1wbGVUZXh0SW5wdXRFeEJCVGVzdE1haW4uaA0K PiBpbmRleCAwYjMzMTJlOS4uYmIwZDhjOWEgMTAwNjQ0DQo+IC0tLSANCj4gYS91ZWZpLXNjdC9T Y3RQa2cvVGVzdENhc2UvVUVGSS9JSFYvUHJvdG9jb2wvU2ltcGxlVGV4dElucHV0RXgvQmxhY2tC bw0KPiB4VGVzdC9TaW1wbGVUZXh0SW5wdXRFeEJCVGVzdE1haW4uaA0KPiArKysgYi91ZWZpLXNj dC9TY3RQa2cvVGVzdENhc2UvVUVGSS9JSFYvUHJvdG9jb2wvU2ltcGxlVGV4dElucHV0RXgvQmxh DQo+ICsrKyBja0JveFRlc3QvU2ltcGxlVGV4dElucHV0RXhCQlRlc3RNYWluLmgNCj4gQEAgLTEs NyArMSw3IEBADQo+ICAgLyoqIEBmaWxlDQo+ICAgDQo+ICAgICBDb3B5cmlnaHQgMjAwNiAtIDIw MTQgVW5pZmllZCBFRkksIEluYy48QlI+DQo+IC0gIENvcHlyaWdodCAoYykgMjAxMCAtIDIwMTQs IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIA0KPiByZXNlcnZlZC48QlI+DQo+ICsgIENv cHlyaWdodCAoYykgMjAxMCAtIDIwMTgsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIA0K PiArIHJlc2VydmVkLjxCUj4NCj4gICANCj4gICAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29t cGFueWluZyBtYXRlcmlhbHMNCj4gICAgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUg dW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIA0KPiB0aGUgQlNEIExpY2Vuc2UgQEAg LTYxLDYgKzYxLDggQEAgQWJzdHJhY3Q6DQo+ICAgI2RlZmluZSBFRklfU0lNUExFX1RFWFRfSU5Q VVRfRVhfUFJPVE9DT0xfVEVTVF9FTlRSWV9HVUlEMDEwNiBcDQo+ICAgeyAweGRiYzZlNjU5LCAw eGIwZTAsIDB4NDQ3MSwgeyAweDk0LCAweDEzLCAweDQ1LCAweDFiLCAweGRjLCAweGUyLCANCj4g MHhhZCwgMHhjNyB9IH0NCj4gICANCj4gKyNkZWZpbmUgRUZJX1NJTVBMRV9URVhUX0lOUFVUX0VY X1BST1RPQ09MX1RFU1RfRU5UUllfR1VJRDAxMDcgXCB7IA0KPiArMHgyYzNjYTI4MiwgMHg1NjQ0 LCAweDQxYjYsIHsgMHhhZiwgMHhjOSwgMHg0MywgMHg4NywgMHhmMiwgMHg1MywgDQo+ICsweDg5 LCAweGJkIH0gfQ0KPiAgIC8vDQo+ICAgLy8gRW50cnkgR1VJRHMgZm9yIENvbmYgVGVzdA0KPiAg IC8vDQo+IEBAIC0xNTcsNiArMTU5LDE1IEBAIEJCVGVzdFVucmVnaXN0ZXJLZXlOb3RpZnlGdW5j dGlvbk1hbnVhbFRlc3QgKA0KPiAgICAgSU4gRUZJX1RFU1RfTEVWRUwgICAgICAgICAgICAgVGVz dExldmVsLA0KPiAgICAgSU4gRUZJX0hBTkRMRSAgICAgICAgICAgICAgICAgU3VwcG9ydEhhbmRs ZQ0KPiAgICAgKTsNCj4gKw0KPiArDQo+ICtFRklfU1RBVFVTDQo+ICtCQlRlc3RSZWFkS2V5U3Ry b2tlRXhGdW5jdGlvbkF1dG9UZXN0ICgNCj4gKyAgSU4gRUZJX0JCX1RFU1RfUFJPVE9DT0wgICAg ICAgKlRoaXMsDQo+ICsgIElOIFZPSUQgICAgICAgICAgICAgICAgICAgICAgICpDbGllbnRJbnRl cmZhY2UsDQo+ICsgIElOIEVGSV9URVNUX0xFVkVMICAgICAgICAgICAgIFRlc3RMZXZlbCwNCj4g KyAgSU4gRUZJX0hBTkRMRSAgICAgICAgICAgICAgICAgU3VwcG9ydEhhbmRsZQ0KPiArICApOw0K PiAgICAgDQo+ICAgICANCj4gICBFRklfU1RBVFVTDQo+IEBAIC0yNDAsNiArMjUxLDEzIEBAIEJC VGVzdFVucmVnaXN0ZXJLZXlOb3RpZnlGdW5jdGlvbk1hbnVhbFRlc3RDaGVja3BvaW50MSAoDQo+ ICAgICApOw0KPiAgIA0KPiAgIA0KPiArRUZJX1NUQVRVUw0KPiArQkJUZXN0UmVhZEtleVN0cm9r ZUV4RnVuY3Rpb25BdXRvVGVzdENoZWNrcG9pbnQxICgNCj4gKyAgSU4gRUZJX1NUQU5EQVJEX1RF U1RfTElCUkFSWV9QUk9UT0NPTCAgICAgICAgICpTdGFuZGFyZExpYiwNCj4gKyAgSU4gRUZJX1NJ TVBMRV9URVhUX0lOUFVUX0VYX1BST1RPQ09MICAgICAgICAgICpTaW1wbGVUZXh0SW5wdXRFeA0K PiArICApOw0KPiArDQo+ICsNCj4gICBFRklfU1RBVFVTDQo+ICAgQkJUZXN0UmVhZEtleVN0cm9r ZUV4Q29uZm9ybWFuY2VUZXN0Q2hlY2twb2ludDEgKA0KPiAgICAgSU4gRUZJX1NUQU5EQVJEX1RF U1RfTElCUkFSWV9QUk9UT0NPTCAgICAgICAgICpTdGFuZGFyZExpYiwNCg0K