From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by dpdk.org (Postfix) with ESMTP id B50A93237 for ; Mon, 25 May 2015 10:05:55 +0200 (CEST) Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga101.fm.intel.com with ESMTP; 25 May 2015 01:05:54 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.13,490,1427785200"; d="scan'208";a="497867811" Received: from kmsmsx152.gar.corp.intel.com ([172.21.73.87]) by FMSMGA003.fm.intel.com with ESMTP; 25 May 2015 01:05:53 -0700 Received: from shsmsx152.ccr.corp.intel.com (10.239.6.52) by KMSMSX152.gar.corp.intel.com (172.21.73.87) with Microsoft SMTP Server (TLS) id 14.3.224.2; Mon, 25 May 2015 16:05:44 +0800 Received: from shsmsx101.ccr.corp.intel.com ([169.254.1.120]) by SHSMSX152.ccr.corp.intel.com ([169.254.6.50]) with mapi id 14.03.0224.002; Mon, 25 May 2015 16:05:42 +0800 From: "Xu, HuilongX" To: "Tang, HaifengX" , "dts@dpdk.org" Thread-Topic: [dts] [PATCH] add unit_test_cmdline ,unit_test_dump and unit_test_eal test suite and testplan Thread-Index: AQHQlsAwDzjn5XRvFk+2RNKBWV2Mi52MVX4Q Date: Mon, 25 May 2015 08:05:42 +0000 Message-ID: References: <1432540503-14108-1-git-send-email-haifengx.tang@intel.com> In-Reply-To: <1432540503-14108-1-git-send-email-haifengx.tang@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-cr-hashedpuzzle: OUA= CI9D CWi9 Crqp Du5z Ed3h EgPf FRia FcSX GOQx GiCk HP7l HR+R HrGG H6aW IPL5; 1; ZAB0AHMAQABkAHAAZABrAC4AbwByAGcA; Sosha1_v1; 7; {780365D8-C295-4DFB-AFED-085EDA654436}; aAB1AGkAbABvAG4AZwB4AC4AeAB1AEAAaQBuAHQAZQBsAC4AYwBvAG0A; Mon, 25 May 2015 08:05:40 GMT; UgBFADoAIABbAGQAdABzAF0AIABbAFAAQQBUAEMASABdACAAYQBkAGQAIAB1AG4AaQB0AF8AdABlAHMAdABfAGMAbQBkAGwAaQBuAGUAIAAsAHUAbgBpAHQAXwB0AGUAcwB0AF8AZAB1AG0AcAAgAGEAbgBkACAAdQBuAGkAdABfAHQAZQBzAHQAXwBlAGEAbAAgAHQAZQBzAHQAIABzAHUAaQB0AGUAIABhAG4AZAAgAHQAZQBzAHQAcABsAGEAbgA= x-cr-puzzleid: {780365D8-C295-4DFB-AFED-085EDA654436} x-originating-ip: [10.239.127.40] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dts] [PATCH] add unit_test_cmdline , unit_test_dump and unit_test_eal test suite and testplan X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: test suite reviews and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 08:05:56 -0000 SGkgaGFpZmVuZywNCldvdWxkIHlvdSBhZGQgYSBuZXcgZXhlY3V0aW9uLmNmZyBmb3IgdW5pdCB0 ZXN0Pw0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IGR0cyBbbWFpbHRv OmR0cy1ib3VuY2VzQGRwZGsub3JnXSBPbiBCZWhhbGYgT2YgaGFpZmVuZw0KPiBTZW50OiBNb25k YXksIE1heSAyNSwgMjAxNSAzOjU1IFBNDQo+IFRvOiBkdHNAZHBkay5vcmcNCj4gU3ViamVjdDog W2R0c10gW1BBVENIXSBhZGQgdW5pdF90ZXN0X2NtZGxpbmUgLHVuaXRfdGVzdF9kdW1wIGFuZA0K PiB1bml0X3Rlc3RfZWFsIHRlc3Qgc3VpdGUgYW5kIHRlc3RwbGFuDQo+IA0KPiBGcm9tOiBUYW5n SGFpZmVuZyA8aGFpZmVuZ3gudGFuZ0BpbnRlbC5jb20+DQo+IA0KPiAtLS0NCj4gIHRlc3RfcGxh bnMvdW5pdF90ZXN0c19jbWRsaW5lX3Rlc3RfcGxhbi5yc3QgfCAgIDM4ICsrKw0KPiAgdGVzdF9w bGFucy91bml0X3Rlc3RzX2R1bXBfdGVzdF9wbGFuLnJzdCAgICB8ICAxNjkgKysrKysrKysrKysN Cj4gIHRlc3RfcGxhbnMvdW5pdF90ZXN0c19lYWxfdGVzdF9wbGFuLnJzdCAgICAgfCAgMzE1ICsr KysrKysrKysrKysrKysrKysrKw0KPiAgdGVzdHMvVGVzdFN1aXRlX3VuaXRfdGVzdHNfY21kbGlu ZS5weSAgICAgICB8ICAgNjAgKysrKw0KPiAgdGVzdHMvVGVzdFN1aXRlX3VuaXRfdGVzdHNfZHVt cC5weSAgICAgICAgICB8ICAxODEgKysrKysrKysrKysrDQo+ICB0ZXN0cy9UZXN0U3VpdGVfdW5p dF90ZXN0c19lYWwucHkgICAgICAgICAgIHwgIDQwOQ0KPiArKysrKysrKysrKysrKysrKysrKysr KysrKysNCj4gIDYgZmlsZXMgY2hhbmdlZCwgMTE3MiBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9u cygtKQ0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RfcGxhbnMvdW5pdF90ZXN0c19jbWRsaW5l X3Rlc3RfcGxhbi5yc3QNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0X3BsYW5zL3VuaXRfdGVz dHNfZHVtcF90ZXN0X3BsYW4ucnN0DQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdF9wbGFucy91 bml0X3Rlc3RzX2VhbF90ZXN0X3BsYW4ucnN0DQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMv VGVzdFN1aXRlX3VuaXRfdGVzdHNfY21kbGluZS5weQ0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHRl c3RzL1Rlc3RTdWl0ZV91bml0X3Rlc3RzX2R1bXAucHkNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCB0 ZXN0cy9UZXN0U3VpdGVfdW5pdF90ZXN0c19lYWwucHkNCj4gDQo+IGRpZmYgLS1naXQgYS90ZXN0 X3BsYW5zL3VuaXRfdGVzdHNfY21kbGluZV90ZXN0X3BsYW4ucnN0DQo+IGIvdGVzdF9wbGFucy91 bml0X3Rlc3RzX2NtZGxpbmVfdGVzdF9wbGFuLnJzdA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0K PiBpbmRleCAwMDAwMDAwLi45NTcwMmUwDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvdGVzdF9w bGFucy91bml0X3Rlc3RzX2NtZGxpbmVfdGVzdF9wbGFuLnJzdA0KPiBAQCAtMCwwICsxLDM4IEBA DQo+ICsuLiBDb3B5cmlnaHQgKGMpIDwyMDEwPiwgSW50ZWwgQ29ycG9yYXRpb24NCj4gKyAgIEFs bCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsNCj4gKyAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KPiArICAgbW9kaWZpY2F0 aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z DQo+ICsgICBhcmUgbWV0Og0KPiArDQo+ICsgICAtIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQo+ICsgICAgIG5vdGljZSwgdGhp cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCj4gKw0K PiArICAgLSBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl IGFib3ZlIGNvcHlyaWdodA0KPiArICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4NCj4gKyAgICAgdGhlIGRvY3VtZW50YXRp b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQ0KPiArICAgICBkaXN0 cmlidXRpb24uDQo+ICsNCj4gKyAgIC0gTmVpdGhlciB0aGUgbmFtZSBvZiBJbnRlbCBDb3Jwb3Jh dGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0cw0KPiArICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVz ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQNCj4gKyAgICAgZnJvbSB0 aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLg0K PiArDQo+ICsgICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M REVSUyBBTkQgQ09OVFJJQlVUT1JTDQo+ICsgICAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVA0KPiArICAgTElNSVRFRCBUTywg VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MNCj4g KyAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg U0hBTEwgVEhFDQo+ICsgICBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsDQo+ICsgICBJTkNJREVOVEFMLCBTUEVDSUFMLCBF WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUw0KPiArICAgKElOQ0xVRElORywgQlVU IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SDQo+ICsg ICBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO VEVSUlVQVElPTikNCj4gKyAgIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwNCj4gKyAgIFNUUklDVCBMSUFCSUxJVFksIE9S IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkNCj4gKyAgIEFSSVNJTkcg SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT RUQNCj4gKyAgIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4NCj4gKw0KPiArPT09 PT09PT09PT09PT09PT09DQo+ICtDbWRsaW5lICBBdXRvdGVzdHMNCj4gKz09PT09PT09PT09PT09 PT09PQ0KPiArDQo+ICsNCj4gK1RPRE8uDQo+IGRpZmYgLS1naXQgYS90ZXN0X3BsYW5zL3VuaXRf dGVzdHNfZHVtcF90ZXN0X3BsYW4ucnN0DQo+IGIvdGVzdF9wbGFucy91bml0X3Rlc3RzX2R1bXBf dGVzdF9wbGFuLnJzdA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwLi4y M2RkOTkzDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvdGVzdF9wbGFucy91bml0X3Rlc3RzX2R1 bXBfdGVzdF9wbGFuLnJzdA0KPiBAQCAtMCwwICsxLDE2OSBAQA0KPiArLi4gQ29weXJpZ2h0IChj KSA8MjAxND4sIEludGVsIENvcnBvcmF0aW9uDQo+ICsgICBBbGwgcmlnaHRzIHJlc2VydmVkLg0K PiArDQo+ICsgICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv cm1zLCB3aXRoIG9yIHdpdGhvdXQNCj4gKyAgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KPiArICAgYXJlIG1ldDoNCj4g Kw0KPiArICAgLSBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl IGFib3ZlIGNvcHlyaWdodA0KPiArICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQo+ICsNCj4gKyAgIC0gUmVkaXN0cmlidXRp b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQNCj4g KyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk aXNjbGFpbWVyIGluDQo+ICsgICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUNCj4gKyAgICAgZGlzdHJpYnV0aW9uLg0KPiArDQo+ICsg ICAtIE5laXRoZXIgdGhlIG5hbWUgb2YgSW50ZWwgQ29ycG9yYXRpb24gbm9yIHRoZSBuYW1lcyBv ZiBpdHMNCj4gKyAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv bW90ZSBwcm9kdWN0cyBkZXJpdmVkDQo+ICsgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0 IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4NCj4gKw0KPiArICAgVEhJUyBTT0ZU V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S Uw0KPiArICAgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ TkNMVURJTkcsIEJVVCBOT1QNCj4gKyAgIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTDQo+ICsgICBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQ0KPiArICAgQ09Q WVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO RElSRUNULA0KPiArICAgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV RU5USUFMIERBTUFHRVMNCj4gKyAgIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUg0KPiArICAgU0VSVklDRVM7IExPU1MgT0Yg VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pDQo+ICsgICBI T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g Q09OVFJBQ1QsDQo+ICsgICBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH TElHRU5DRSBPUiBPVEhFUldJU0UpDQo+ICsgICBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEDQo+ICsgICBPRiBUSEUgUE9T U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuDQo+ICsNCj4gKz09PT09PT09PT09PT09PT09PT09PT09 PT0NCj4gK0R1bXAgbG9nIGhpc3RvcnkgQXV0b3Rlc3QNCj4gKz09PT09PT09PT09PT09PT09PT09 PT09PT0NCj4gKw0KPiArVGhpcyBpcyB0aGUgdGVzdCBwbGFuIGZvciBkdW1wIGhpc3RvcnkgbG9n IG9mIEludGVswq4gRFBESyAuDQo+ICsNCj4gK1RoaXMgc2VjdGlvbiBleHBsYWlucyBob3cgdG8g cnVuIHRoZSB1bml0IHRlc3RzIGZvciBkdW1wIGhpc3RvcnkgbG9nLiBUaGUNCj4gdGVzdA0KPiAr Y2FuIGJlIGxhdW5jaGVkIGluZGVwZW5kZW50bHkgdXNpbmcgdGhlIGNvbW1hbmQgbGluZSBpbnRl cmZhY2UuDQo+ICtUaGlzIHRlc3QgaXMgaW1wbGVtZW50ZWQgYXMgYSBsaW51eGFwcCBlbnZpcm9u bWVudCBhcHBsaWNhdGlvbi4NCj4gKw0KPiArVGhlIGNvbXBsZXRlIHRlc3Qgc3VpdGUgaXMgbGF1 bmNoZWQgYXV0b21hdGljYWxseSB1c2luZyBhIHB5dGhvbi1leHBlY3QNCj4gK3NjcmlwdCAobGF1 bmNoZWQgdXNpbmcgYGBtYWtlIHRlc3RgYCkgdGhhdCBzZW5kcyBjb21tYW5kcyB0bw0KPiArdGhl IGFwcGxpY2F0aW9uIGFuZCBjaGVja3MgdGhlIHJlc3VsdHMuIEEgdGVzdCByZXBvcnQgaXMgZGlz cGxheWVkIG9uDQo+ICtzdGRvdXQuDQo+ICsNCj4gK1RoZSBzdGVwcyB0byBydW4gdGhlIHVuaXQg dGVzdCBtYW51YWxseSBhcmUgYXMgZm9sbG93OjoNCj4gKw0KPiArICAjIG1ha2UgLUMgLi9hcHAv dGVzdC8NCj4gKyAgIyAuL2FwcC90ZXN0L3Rlc3QgLW4gMSAtYyBmZmZmDQo+ICsgIFJURT4+IGR1 bXBfbG9nX2hpc3RvcnkNCj4gKw0KPiArVGhlIGZpbmFsIG91dHB1dCBvZiB0aGUgdGVzdCB3aWxs IGJlIHRoZSBpbml0aWFsIGxvZyBvZiBEUERLLg0KPiArDQo+ICs9PT09PT09PT09PT09PT09PT0N Cj4gK0R1bXAgcmluZyBBdXRvdGVzdA0KPiArPT09PT09PT09PT09PT09PT09DQo+ICsNCj4gK1Ro aXMgaXMgdGhlIHRlc3QgcGxhbiBmb3IgZHVtcCB0aGUgZWxlbWVudHMgb2YgSW50ZWzCriBEUERL IHJpbmcuDQo+ICsNCj4gK1RoaXMgc2VjdGlvbiBleHBsYWlucyBob3cgdG8gcnVuIHRoZSB1bml0 IHRlc3RzIGZvciBkdW1wIGVsZW1lbnRzIG9mIHJpbmcuDQo+ICtUaGUgdGVzdCBjYW4gYmUgbGF1 bmNoZWQgaW5kZXBlbmRlbnRseSB1c2luZyB0aGUgY29tbWFuZCBsaW5lIGludGVyZmFjZS4NCj4g K1RoaXMgdGVzdCBpcyBpbXBsZW1lbnRlZCBhcyBhIGxpbnV4YXBwIGVudmlyb25tZW50IGFwcGxp Y2F0aW9uLg0KPiArDQo+ICtUaGUgY29tcGxldGUgdGVzdCBzdWl0ZSBpcyBsYXVuY2hlZCBhdXRv bWF0aWNhbGx5IHVzaW5nIGEgcHl0aG9uLWV4cGVjdA0KPiArc2NyaXB0IChsYXVuY2hlZCB1c2lu ZyBgYG1ha2UgdGVzdGBgKSB0aGF0IHNlbmRzIGNvbW1hbmRzIHRvDQo+ICt0aGUgYXBwbGljYXRp b24gYW5kIGNoZWNrcyB0aGUgcmVzdWx0cy4gQSB0ZXN0IHJlcG9ydCBpcyBkaXNwbGF5ZWQgb24N Cj4gK3N0ZG91dC4NCj4gKw0KPiArVGhlIHN0ZXBzIHRvIHJ1biB0aGUgdW5pdCB0ZXN0IG1hbnVh bGx5IGFyZSBhcyBmb2xsb3c6Og0KPiArDQo+ICsgICMgbWFrZSAtQyAuL2FwcC90ZXN0Lw0KPiAr ICAjIC4vYXBwL3Rlc3QvdGVzdCAtbiAxIC1jIGZmZmYNCj4gKyAgUlRFPj4gZHVtcF9yaW5nDQo+ ICsNCj4gK1RoZSBmaW5hbCBvdXRwdXQgb2YgdGhlIHRlc3Qgd2lsbCBiZSBkZXRhaWwgZWxlbWVu dHMgb2YgRFBESyByaW5nLg0KPiArDQo+ICs9PT09PT09PT09PT09PT09PT09PT0NCj4gK0R1bXAg bWVtcG9vbCBBdXRvdGVzdA0KPiArPT09PT09PT09PT09PT09PT09PT09DQo+ICsNCj4gK1RoaXMg aXMgdGhlIHRlc3QgcGxhbiBmb3IgZHVtcCB0aGUgZWxlbWVudHMgb2YgSW50ZWzCriBEUERLIG1l bXBvb2wuDQo+ICsNCj4gK1RoaXMgc2VjdGlvbiBleHBsYWlucyBob3cgdG8gcnVuIHRoZSB1bml0 IHRlc3RzIGZvciBkdW1wIGVsZW1lbnRzIG9mDQo+IG1lbXBvb2wuDQo+ICtUaGUgdGVzdCBjYW4g YmUgbGF1bmNoZWQgaW5kZXBlbmRlbnRseSB1c2luZyB0aGUgY29tbWFuZCBsaW5lIGludGVyZmFj ZS4NCj4gK1RoaXMgdGVzdCBpcyBpbXBsZW1lbnRlZCBhcyBhIGxpbnV4YXBwIGVudmlyb25tZW50 IGFwcGxpY2F0aW9uLg0KPiArDQo+ICtUaGUgY29tcGxldGUgdGVzdCBzdWl0ZSBpcyBsYXVuY2hl ZCBhdXRvbWF0aWNhbGx5IHVzaW5nIGEgcHl0aG9uLWV4cGVjdA0KPiArc2NyaXB0IChsYXVuY2hl ZCB1c2luZyBgYG1ha2UgdGVzdGBgKSB0aGF0IHNlbmRzIGNvbW1hbmRzIHRvDQo+ICt0aGUgYXBw bGljYXRpb24gYW5kIGNoZWNrcyB0aGUgcmVzdWx0cy4gQSB0ZXN0IHJlcG9ydCBpcyBkaXNwbGF5 ZWQgb24NCj4gK3N0ZG91dC4NCj4gKw0KPiArVGhlIHN0ZXBzIHRvIHJ1biB0aGUgdW5pdCB0ZXN0 IG1hbnVhbGx5IGFyZSBhcyBmb2xsb3c6Og0KPiArDQo+ICsgICMgbWFrZSAtQyAuL2FwcC90ZXN0 Lw0KPiArICAjIC4vYXBwL3Rlc3QvdGVzdCAtbiAxIC1jIGZmZmYNCj4gKyAgUlRFPj4gZHVtcF9t ZW1wb29sDQo+ICsNCj4gK1RoZSBmaW5hbCBvdXRwdXQgb2YgdGhlIHRlc3Qgd2lsbCBiZSBkZXRh aWwgZWxlbWVudHMgb2YgRFBESyBtZW1wb29sLg0KPiArDQo+ICs9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQ0KPiArRHVtcCBQaHlzaWNhbCBtZW1vcnkgQXV0b3Rlc3QNCj4gKz09PT09PT09 PT09PT09PT09PT09PT09PT09PT09DQo+ICsNCj4gK1RoaXMgaXMgdGhlIHRlc3QgcGxhbiBmb3Ig ZHVtcCB0aGUgZWxlbWVudHMgb2YgSW50ZWzCriBEUERLIHBoeXNpY2FsDQo+IG1lbW9yeS4NCj4g Kw0KPiArVGhpcyBzZWN0aW9uIGV4cGxhaW5zIGhvdyB0byBydW4gdGhlIHVuaXQgdGVzdHMgZm9y IGR1bXAgZWxlbWVudHMgb2YNCj4gbWVtb3J5Lg0KPiArVGhlIHRlc3QgY2FuIGJlIGxhdW5jaGVk IGluZGVwZW5kZW50bHkgdXNpbmcgdGhlIGNvbW1hbmQgbGluZSBpbnRlcmZhY2UuDQo+ICtUaGlz IHRlc3QgaXMgaW1wbGVtZW50ZWQgYXMgYSBsaW51eGFwcCBlbnZpcm9ubWVudCBhcHBsaWNhdGlv bi4NCj4gKw0KPiArVGhlIGNvbXBsZXRlIHRlc3Qgc3VpdGUgaXMgbGF1bmNoZWQgYXV0b21hdGlj YWxseSB1c2luZyBhIHB5dGhvbi1leHBlY3QNCj4gK3NjcmlwdCAobGF1bmNoZWQgdXNpbmcgYGBt YWtlIHRlc3RgYCkgdGhhdCBzZW5kcyBjb21tYW5kcyB0bw0KPiArdGhlIGFwcGxpY2F0aW9uIGFu ZCBjaGVja3MgdGhlIHJlc3VsdHMuIEEgdGVzdCByZXBvcnQgaXMgZGlzcGxheWVkIG9uDQo+ICtz dGRvdXQuDQo+ICsNCj4gK1RoZSBzdGVwcyB0byBydW4gdGhlIHVuaXQgdGVzdCBtYW51YWxseSBh cmUgYXMgZm9sbG93OjoNCj4gKw0KPiArICAjIG1ha2UgLUMgLi9hcHAvdGVzdC8NCj4gKyAgIyAu L2FwcC90ZXN0L3Rlc3QgLW4gMSAtYyBmZmZmDQo+ICsgIFJURT4+IGR1bXBfcGh5c21lbQ0KPiAr DQo+ICtUaGUgZmluYWwgb3V0cHV0IG9mIHRoZSB0ZXN0IHdpbGwgYmUgZGV0YWlsIGVsZW1lbnRz IG9mIERQREsgcGh5c2ljYWwNCj4gbWVtb3J5Lg0KPiArDQo+ICs9PT09PT09PT09PT09PT09PT09 PT0NCj4gK0R1bXAgTWVtem9uZSBBdXRvdGVzdA0KPiArPT09PT09PT09PT09PT09PT09PT09DQo+ ICsNCj4gK1RoaXMgaXMgdGhlIHRlc3QgcGxhbiBmb3IgZHVtcCB0aGUgZWxlbWVudHMgb2YgSW50 ZWzCriBEUERLIG1lbXpvbmUuDQo+ICsNCj4gK1RoaXMgc2VjdGlvbiBleHBsYWlucyBob3cgdG8g cnVuIHRoZSB1bml0IHRlc3RzIGZvciBkdW1wIGVsZW1lbnRzIG9mDQo+IG1lbXpvbmUuDQo+ICtU aGUgdGVzdCBjYW4gYmUgbGF1bmNoZWQgaW5kZXBlbmRlbnRseSB1c2luZyB0aGUgY29tbWFuZCBs aW5lIGludGVyZmFjZS4NCj4gK1RoaXMgdGVzdCBpcyBpbXBsZW1lbnRlZCBhcyBhIGxpbnV4YXBw IGVudmlyb25tZW50IGFwcGxpY2F0aW9uLg0KPiArDQo+ICtUaGUgY29tcGxldGUgdGVzdCBzdWl0 ZSBpcyBsYXVuY2hlZCBhdXRvbWF0aWNhbGx5IHVzaW5nIGEgcHl0aG9uLWV4cGVjdA0KPiArc2Ny aXB0IChsYXVuY2hlZCB1c2luZyBgYG1ha2UgdGVzdGBgKSB0aGF0IHNlbmRzIGNvbW1hbmRzIHRv DQo+ICt0aGUgYXBwbGljYXRpb24gYW5kIGNoZWNrcyB0aGUgcmVzdWx0cy4gQSB0ZXN0IHJlcG9y dCBpcyBkaXNwbGF5ZWQgb24NCj4gK3N0ZG91dC4NCj4gKw0KPiArVGhlIHN0ZXBzIHRvIHJ1biB0 aGUgdW5pdCB0ZXN0IG1hbnVhbGx5IGFyZSBhcyBmb2xsb3c6Og0KPiArDQo+ICsgICMgbWFrZSAt QyAuL2FwcC90ZXN0Lw0KPiArICAjIC4vYXBwL3Rlc3QvdGVzdCAtbiAxIC1jIGZmZmYNCj4gKyAg UlRFPj4gZHVtcF9tZW16b25lDQo+ICsNCj4gK1RoZSBmaW5hbCBvdXRwdXQgb2YgdGhlIHRlc3Qg d2lsbCBiZSBkZXRhaWwgZWxlbWVudHMgb2YgRFBESyBtZW16b25lLg0KPiArDQo+ICs9PT09PT09 PT09PT09PT09DQo+ICtEdW1wIFN0cnVjdCBzaXplDQo+ICs9PT09PT09PT09PT09PT09DQo+ICsN Cj4gK1RoaXMgaXMgdGhlIHRlc3QgcGxhbiBmb3IgZHVtcCB0aGUgc2l6ZSBvZiBJbnRlbMKuIERQ REsgc3RydWN0dXJlLg0KPiArDQo+ICtUaGlzIHNlY3Rpb24gZXhwbGFpbnMgaG93IHRvIHJ1biB0 aGUgdW5pdCB0ZXN0cyBmb3IgZHVtcCBzdHJ1Y3R1cmUgc2l6ZS4NCj4gK1RoZSB0ZXN0IGNhbiBi ZSBsYXVuY2hlZCBpbmRlcGVuZGVudGx5IHVzaW5nIHRoZSBjb21tYW5kIGxpbmUgaW50ZXJmYWNl Lg0KPiArVGhpcyB0ZXN0IGlzIGltcGxlbWVudGVkIGFzIGEgbGludXhhcHAgZW52aXJvbm1lbnQg YXBwbGljYXRpb24uDQo+ICsNCj4gK1RoZSBjb21wbGV0ZSB0ZXN0IHN1aXRlIGlzIGxhdW5jaGVk IGF1dG9tYXRpY2FsbHkgdXNpbmcgYSBweXRob24tZXhwZWN0DQo+ICtzY3JpcHQgKGxhdW5jaGVk IHVzaW5nIGBgbWFrZSB0ZXN0YGApIHRoYXQgc2VuZHMgY29tbWFuZHMgdG8NCj4gK3RoZSBhcHBs aWNhdGlvbiBhbmQgY2hlY2tzIHRoZSByZXN1bHRzLiBBIHRlc3QgcmVwb3J0IGlzIGRpc3BsYXll ZCBvbg0KPiArc3Rkb3V0Lg0KPiArDQo+ICtUaGUgc3RlcHMgdG8gcnVuIHRoZSB1bml0IHRlc3Qg bWFudWFsbHkgYXJlIGFzIGZvbGxvdzo6DQo+ICsNCj4gKyAgIyBtYWtlIC1DIC4vYXBwL3Rlc3Qv DQo+ICsgICMgLi9hcHAvdGVzdC90ZXN0IC1uIDEgLWMgZmZmZg0KPiArICBSVEU+PiBkdW1wX3N0 cnVjdF9zaXplcw0KPiArDQo+ICtUaGUgZmluYWwgb3V0cHV0IG9mIHRoZSB0ZXN0IHdpbGwgYmUg dGhlIHNpemUgb2YgRFBESyBzdHJ1Y3R1cmUuDQo+IGRpZmYgLS1naXQgYS90ZXN0X3BsYW5zL3Vu aXRfdGVzdHNfZWFsX3Rlc3RfcGxhbi5yc3QNCj4gYi90ZXN0X3BsYW5zL3VuaXRfdGVzdHNfZWFs X3Rlc3RfcGxhbi5yc3QNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMC4u YzFmODk1MA0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL3Rlc3RfcGxhbnMvdW5pdF90ZXN0c19l YWxfdGVzdF9wbGFuLnJzdA0KPiBAQCAtMCwwICsxLDMxNSBAQA0KPiArLi4gQ29weXJpZ2h0IChj KSA8MjAxMD4sIEludGVsIENvcnBvcmF0aW9uDQo+ICsgICBBbGwgcmlnaHRzIHJlc2VydmVkLg0K PiArDQo+ICsgICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv cm1zLCB3aXRoIG9yIHdpdGhvdXQNCj4gKyAgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KPiArICAgYXJlIG1ldDoNCj4g Kw0KPiArICAgLSBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl IGFib3ZlIGNvcHlyaWdodA0KPiArICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQo+ICsNCj4gKyAgIC0gUmVkaXN0cmlidXRp b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQNCj4g KyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk aXNjbGFpbWVyIGluDQo+ICsgICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUNCj4gKyAgICAgZGlzdHJpYnV0aW9uLg0KPiArDQo+ICsg ICAtIE5laXRoZXIgdGhlIG5hbWUgb2YgSW50ZWwgQ29ycG9yYXRpb24gbm9yIHRoZSBuYW1lcyBv ZiBpdHMNCj4gKyAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv bW90ZSBwcm9kdWN0cyBkZXJpdmVkDQo+ICsgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0 IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4NCj4gKw0KPiArICAgVEhJUyBTT0ZU V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S Uw0KPiArICAgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ TkNMVURJTkcsIEJVVCBOT1QNCj4gKyAgIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTDQo+ICsgICBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQ0KPiArICAgQ09Q WVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO RElSRUNULA0KPiArICAgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV RU5USUFMIERBTUFHRVMNCj4gKyAgIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUg0KPiArICAgU0VSVklDRVM7IExPU1MgT0Yg VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pDQo+ICsgICBI T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g Q09OVFJBQ1QsDQo+ICsgICBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH TElHRU5DRSBPUiBPVEhFUldJU0UpDQo+ICsgICBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEDQo+ICsgICBPRiBUSEUgUE9T U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuDQo+ICsNCj4gKz09PT09PT09PT09PT0NCj4gK0VBTCBB dXRvdGVzdHMNCj4gKz09PT09PT09PT09PT0NCj4gKw0KPiArVGhpcyBzZWN0aW9uIGRlc2NyaWJl cyB0aGUgdGVzdHMgdGhhdCBhcmUgZG9uZSB0byB2YWxpZGF0ZSB0aGUgRUFMLiBFYWNoDQo+ICt0 ZXN0IGNhbiBiZSBsYXVuY2hlZCBpbmRlcGVuZGVudGx5IHVzaW5nIHRoZSBjb21tYW5kIGxpbmUN Cj4gK2ludGVyZmFjZS4gVGhlc2UgdGVzdHMgYXJlIGltcGxlbWVudGVkIGFzIGEgbGludXhhcHAg ZW52aXJvbm1lbnQNCj4gK2FwcGxpY2F0aW9uLg0KPiArDQo+ICtUaGUgY29tcGxldGUgdGVzdCBz dWl0ZSBpcyBsYXVuY2hlZCBhdXRvbWF0aWNhbGx5IHVzaW5nIGEgcHl0aG9uLWV4cGVjdA0KPiAr c2NyaXB0IChsYXVuY2hlZCB1c2luZyBgYG1ha2UgdGVzdGBgKSB0aGF0IHNlbmRzIGNvbW1hbmRz IHRvDQo+ICt0aGUgYXBwbGljYXRpb24gYW5kIGNoZWNrcyB0aGUgcmVzdWx0cy4gQSB0ZXN0IHJl cG9ydCBpcyBkaXNwbGF5ZWQgb24NCj4gK3N0ZG91dC4NCj4gKw0KPiArVmVyc2lvbg0KPiArPT09 PT09PQ0KPiArDQo+ICtUbyBCZSBGaWxsZWQNCj4gKw0KPiArDQo+ICtDb21tb24NCj4gKz09PT09 PT0NCj4gKw0KPiArVG8gQmUgRmlsbGVkDQo+ICsNCj4gK0VhbF9mcw0KPiArPT09PT09DQo+ICsN Cj4gK1RvIEJlIEZpbGxlZA0KPiArDQo+ICtNZW1vcnkNCj4gKz09PT09PQ0KPiArDQo+ICstIER1 bXAgdGhlIG1hcHBlZCBtZW1vcnkuIFRoZSBweXRob24tZXhwZWN0IHNjcmlwdCBjaGVja3MgdGhh dCBhdA0KPiArICBsZWFzdCBvbmUgbGluZSBpcyBkdW1wZWQuDQo+ICsNCj4gKy0gQ2hlY2sgdGhh dCBtZW1vcnkgc2l6ZSBpcyBkaWZmZXJlbnQgdGhhbiAwLg0KPiArDQo+ICstIFRyeSB0byByZWFk IGFsbCBtZW1vcnk7IGl0IHNob3VsZCBub3Qgc2VnZmF1bHQuDQo+ICsNCj4gK1BDSQ0KPiArPT09 DQo+ICsNCj4gKy0gUmVnaXN0ZXIgYSBkcml2ZXIgd2l0aCBhIGBgZGV2aW5pdCgpYGAgZnVuY3Rp b24uDQo+ICsNCj4gKy0gRHVtcCBhbGwgUENJIGRldmljZXMuDQo+ICsNCj4gKy0gQ2hlY2sgdGhh dCB0aGUgYGBkZXZpbml0KClgYCBmdW5jdGlvbiBpcyBjYWxsZWQgYXQgbGVhc3Qgb25jZS4NCj4g Kw0KPiArUGVyLWxjb3JlIFZhcmlhYmxlcyBhbmQgbGNvcmUgTGF1bmNoDQo+ICs9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4gKw0KPiArLSBVc2UgYGBydGVfZWFsX21wX3Jl bW90ZV9sYXVuY2goKWBgIHRvIGNhbGwgYGBhc3NpZ25fdmFycygpYGAgb24NCj4gKyAgZXZlcnkg YXZhaWxhYmxlIGxjb3JlLiBJbiB0aGlzIGZ1bmN0aW9uLCBhIHBlci1sY29yZSB2YXJpYWJsZSBp cw0KPiArICBhc3NpZ25lZCB0byB0aGUgbGNvcmVfaWQuDQo+ICsNCj4gKy0gVXNlIGBgcnRlX2Vh bF9tcF9yZW1vdGVfbGF1bmNoKClgYCB0byBjYWxsIGBgZGlzcGxheV92YXJzKClgYCBvbg0KPiAr ICBldmVyeSBhdmFpbGFibGUgbGNvcmUuIFRoZSBmdW5jdGlvbiBjaGVja3MgdGhhdCB0aGUgdmFy aWFibGUgaXMNCj4gKyAgY29ycmVjdGx5IHNldCwgb3IgcmV0dXJucyAtMS4NCj4gKw0KPiArLSBJ ZiBhdCBsZWFzdCBvbmUgcGVyLWNvcmUgdmFyaWFibGUgd2FzIG5vdCBjb3JyZWN0LCB0aGUgdGVz dCBmdW5jdGlvbg0KPiArICByZXR1cm5zIC0xLg0KPiArDQo+ICtTcGlubG9jaw0KPiArPT09PT09 PT0NCj4gKw0KPiArLSBUaGVyZSBpcyBhIGdsb2JhbCBzcGlubG9jayBhbmQgYSB0YWJsZSBvZiBz cGlubG9ja3MgKG9uZSBwZXIgbGNvcmUpLg0KPiArDQo+ICstIFRoZSB0ZXN0IGZ1bmN0aW9uIHRh a2VzIGFsbCBvZiB0aGVzZSBsb2NrcyBhbmQgbGF1bmNoZXMgdGhlDQo+ICsgIGBgdGVzdF9zcGlu bG9ja19wZXJfY29yZSgpYGAgZnVuY3Rpb24gb24gZWFjaCBjb3JlIChleGNlcHQgdGhlIG1hc3Rl cikuDQo+ICsNCj4gKyAgLSBUaGUgZnVuY3Rpb24gdGFrZXMgdGhlIGdsb2JhbCBsb2NrLCBkaXNw bGF5cyBzb21ldGhpbmcsIHRoZW4gcmVsZWFzZXMNCj4gKyAgICB0aGUgZ2xvYmFsIGxvY2suDQo+ ICsgIC0gVGhlIGZ1bmN0aW9uIHRha2VzIHRoZSBwZXItbGNvcmUgbG9jaywgZGlzcGxheXMgc29t ZXRoaW5nLCB0aGVuDQo+IHJlbGVhc2VzDQo+ICsgICAgdGhlIHBlci1jb3JlIGxvY2suDQo+ICsN Cj4gKy0gVGhlIG1haW4gZnVuY3Rpb24gdW5sb2NrcyB0aGUgcGVyLWxjb3JlIGxvY2tzIHNlcXVl bnRpYWxseSBhbmQNCj4gKyAgd2FpdHMgYmV0d2VlbiBlYWNoIGxvY2suIFRoaXMgdHJpZ2dlcnMg dGhlIGRpc3BsYXkgb2YgYSBtZXNzYWdlDQo+ICsgIGZvciBlYWNoIGNvcmUsIGluIHRoZSBjb3Jy ZWN0IG9yZGVyLiBUaGUgYXV0b3Rlc3Qgc2NyaXB0IGNoZWNrcyB0aGF0DQo+ICsgIHRoaXMgb3Jk ZXIgaXMgY29ycmVjdC4NCj4gKw0KPiArUndsb2NrDQo+ICs9PT09PT0NCj4gKw0KPiArLSBUaGVy ZSBpcyBhIGdsb2JhbCByd2xvY2sgYW5kIGEgdGFibGUgb2Ygcndsb2NrcyAob25lIHBlciBsY29y ZSkuDQo+ICsNCj4gKy0gVGhlIHRlc3QgZnVuY3Rpb24gdGFrZXMgYWxsIG9mIHRoZXNlIGxvY2tz IGFuZCBsYXVuY2hlcyB0aGUNCj4gKyAgYGB0ZXN0X3J3bG9ja19wZXJfY29yZSgpYGAgZnVuY3Rp b24gb24gZWFjaCBjb3JlIChleGNlcHQgdGhlIG1hc3RlcikuDQo+ICsNCj4gKyAgLSBUaGUgZnVu Y3Rpb24gdGFrZXMgdGhlIGdsb2JhbCB3cml0ZSBsb2NrLCBkaXNwbGF5IHNvbWV0aGluZywNCj4g KyAgICB0aGVuIHJlbGVhc2VzIHRoZSBnbG9iYWwgbG9jay4NCj4gKyAgLSBUaGVuLCBpdCB0YWtl cyB0aGUgcGVyLWxjb3JlIHdyaXRlIGxvY2ssIGRpc3BsYXkgc29tZXRoaW5nLCBhbmQNCj4gKyAg ICByZWxlYXNlcyB0aGUgcGVyLWNvcmUgbG9jay4NCj4gKyAgLSBGaW5hbGx5LCBhIHJlYWQgbG9j ayBpcyB0YWtlbiBkdXJpbmcgMTAwIG1zLCB0aGVuIHJlbGVhc2VkLg0KPiArDQo+ICstIFRoZSBt YWluIGZ1bmN0aW9uIHVubG9ja3MgdGhlIHBlci1sY29yZSBsb2NrcyBzZXF1ZW50aWFsbHkgYW5k DQo+ICsgIHdhaXRzIGJldHdlZW4gZWFjaCBsb2NrLiBUaGlzIHRyaWdnZXJzIHRoZSBkaXNwbGF5 IG9mIGEgbWVzc2FnZQ0KPiArICBmb3IgZWFjaCBjb3JlLCBpbiB0aGUgY29ycmVjdCBvcmRlci4N Cj4gKw0KPiArICBUaGVuLCBpdCB0cmllcyB0byB0YWtlIHRoZSBnbG9iYWwgd3JpdGUgbG9jayBh bmQgZGlzcGxheSB0aGUgbGFzdA0KPiArICBtZXNzYWdlLiBUaGUgYXV0b3Rlc3Qgc2NyaXB0IGNo ZWNrcyB0aGF0IHRoZSBtZXNzYWdlIG9yZGVyIGlzIGNvcnJlY3QuDQo+ICsNCj4gK0F0b21pYyBW YXJpYWJsZXMNCj4gKz09PT09PT09PT09PT09PT0NCj4gKw0KPiArLSBUaGUgbWFpbiB0ZXN0IGZ1 bmN0aW9uIHBlcmZvcm1zIHRocmVlIHN1YnRlc3RzLiBUaGUgZmlyc3QgdGVzdA0KPiArICBjaGVj a3MgdGhhdCB0aGUgdXN1YWwgaW5jL2RlYy9hZGQvc3ViIGZ1bmN0aW9ucyBhcmUgd29ya2luZw0K PiArICBjb3JyZWN0bHk6DQo+ICsNCj4gKyAgLSBJbml0aWFsaXplIDMyLWJpdCBhbmQgNjQtYml0 IGF0b21pYyB2YXJpYWJsZXMgdG8gc3BlY2lmaWMNCj4gKyAgICB2YWx1ZXMuDQo+ICsNCj4gKyAg LSBUaGVzZSB2YXJpYWJsZXMgYXJlIGluY3JlbWVudGVkIGFuZCBkZWNyZW1lbnRlZCBvbiBlYWNo IGNvcmUgYXQNCj4gKyAgICB0aGUgc2FtZSB0aW1lIGluIGBgdGVzdF9hdG9taWNfdXN1YWwoKWBg Lg0KPiArDQo+ICsgIC0gVGhlIGZ1bmN0aW9uIGNoZWNrcyB0aGF0IG9uY2UgYWxsIGxjb3JlcyBm aW5pc2ggdGhlaXIgZnVuY3Rpb24sDQo+ICsgICAgdGhlIHZhbHVlIG9mIHRoZSBhdG9taWMgdmFy aWFibGVzIGFyZSBzdGlsbCB0aGUgc2FtZS4NCj4gKw0KPiArLSBUaGUgc2Vjb25kIHRlc3QgdmVy aWZpZXMgdGhlIGJlaGF2aW9yIG9mICJ0ZXN0IGFuZCBzZXQiIGZ1bmN0aW9ucy4NCj4gKw0KPiAr ICAtIEluaXRpYWxpemUgMzItYml0IGFuZCA2NC1iaXQgYXRvbWljIHZhcmlhYmxlcyB0byB6ZXJv Lg0KPiArDQo+ICsgIC0gSW52b2tlIGBgdGVzdF9hdG9taWNfdGFzKClgYCBvbiBlYWNoIGxjb3Jl IGJlZm9yZSBkb2luZyBhbnl0aGluZw0KPiArICAgIGVsc2UuIFRoZSBjb3JlcyBhcmUgYXdhaXRp bmcgc3luY2hyb25pemF0aW9pbiB1c2luZyB0aGUgYGB3aGlsZQ0KPiArICAgIChydGVfYXRvbWlj MzJfcmVhZCgmdmFsKSA9PSAwKWBgIHN0YXRlbWVudCB3aGljaCBpcyB0cmlnZ2VyZWQgYnkgdGhl DQo+ICsgICAgbWFpbiB0ZXN0IGZ1bmN0aW9uLiBUaGVuIGFsbCBjb3JlcyBkbyBhbg0KPiArICAg IGBgcnRlX2F0b21pY1hYX3Rlc3RfYW5kX3NldCgpYGAgYXQgdGhlIHNhbWUgdGltZS4gSWYgaXQg aXMgc3VjY2Vzc2Z1bCwNCj4gKyAgICBpdCBpbmNyZW1lbnRzIGFub3RoZXIgYXRvbWljIGNvdW50 ZXIuDQo+ICsNCj4gKyAgLSBUaGUgbWFpbiBmdW5jdGlvbiBjaGVja3MgdGhhdCB0aGUgYXRvbWlj IGNvdW50ZXIgd2FzIGluY3JlbWVudGVkDQo+ICsgICAgdHdpY2Ugb25seSAob25lIGZvciAzMi1i aXQgYW5kIG9uZSBmb3IgNjQtYml0IHZhbHVlcykuDQo+ICsNCj4gKy0gVGVzdCAiYWRkL3N1YiBh bmQgcmV0dXJuIg0KPiArDQo+ICsgIC0gSW5pdGlhbGl6ZSAzMi1iaXQgYW5kIDY0LWJpdCBhdG9t aWMgdmFyaWFibGVzIHRvIHplcm8uDQo+ICsNCj4gKyAgLSBJbnZva2UgYGB0ZXN0X2F0b21pY19h ZGRzdWJfcmV0dXJuKClgYCBvbiBlYWNoIGxjb3JlLiBCZWZvcmUgZG9pbmcNCj4gKyAgICBhbnl0 aGluZyBlbHNlLCB0aGUgY29yZXMgYXJlIHdhaXRpbmcgYSBzeW5jaHJvLiBFYWNoIGxjb3JlIGRv ZXMNCj4gKyAgICB0aGlzIG9wZXJhdGlvbiBzZXZlcmFsIHRpbWVzOjoNCj4gKw0KPiArICAgICAg dG1wID0gYXRvbWljX2FkZF9yZXR1cm4oJmEsIDEpOw0KPiArICAgICAgYXRvbWljX2FkZCgmY291 bnQsIHRtcCk7DQo+ICsgICAgICB0bXAgPSBhdG9taWNfc3ViX3JldHVybigmYSwgMSk7DQo+ICsg ICAgICBhdG9taWNfc3ViKCZjb3VudCwgdG1wKzEpOw0KPiArDQo+ICsgIC0gQXQgdGhlIGVuZCBv ZiB0aGUgdGVzdCwgdGhlICpjb3VudCogdmFsdWUgbXVzdCBiZSAwLg0KPiArDQo+ICtQcmVmZXRj aA0KPiArPT09PT09PT0NCj4gKw0KPiArSnVzdCB0ZXN0IHRoYXQgdGhlIG1hY3JvIGNhbiBiZSBj YWxsZWQgYW5kIHZhbGlkYXRlIHRoZSBjb21waWxhdGlvbi4NCj4gK1RoZSB0ZXN0IGFsd2F5cyBy ZXR1cm4gc3VjY2Vzcy4NCj4gKw0KPiArQnl0ZW9yZGVyIGZ1bmN0aW9ucw0KPiArPT09PT09PT09 PT09PT09PT09PQ0KPiArDQo+ICtDaGVjayB0aGUgcmVzdWx0IG9mIG9wdGltaXplZCBieXRlIHN3 YXAgZnVuY3Rpb25zIGZvciBlYWNoIHNpemUgKDE2LSwNCj4gKzMyLSBhbmQgNjQtYml0KS4NCj4g Kw0KPiArQ3ljbGVzIFRlc3QNCj4gKz09PT09PT09PT09DQo+ICsNCj4gKy0gTG9vcCBOIHRpbWVz IGFuZCBjaGVjayB0aGF0IHRoZSB0aW1lciBhbHdheSBpbmNyZW1lbnRzIGFuZA0KPiArICBuZXZl ciBkZWNyZW1lbnRzIGR1cmluZyB0aGlzIGxvb3AuDQo+ICsNCj4gKy0gV2FpdCBvbmUgc2Vjb25k IHVzaW5nIHJ0ZV91c2xlZXAoKSBhbmQgY2hlY2sgdGhhdCB0aGUgaW5jcmVtZW50DQo+ICsgIG9m IGN5Y2xlcyBpcyBjb3JyZWN0IHdpdGggcmVnYXJkIHRvIHRoZSBmcmVxdWVuY3kgb2YgdGhlIHRp bWVyLg0KPiArDQo+ICtMb2dzDQo+ICs9PT09DQo+ICsNCj4gKy0gRW5hYmxlIGxvZyB0eXBlcy4N Cj4gKy0gU2V0IGxvZyBsZXZlbC4NCj4gKy0gRXhlY3V0ZSBsb2dnaW5nIGZ1bmN0aW9ucyB3aXRo IGRpZmZlcmVudCB0eXBlcyBhbmQgbGV2ZWxzOyBzb21lIHNob3VsZA0KPiArICBub3QgYmUgZGlz cGxheWVkLg0KPiArDQo+ICtNZW16b25lDQo+ICs9PT09PT09DQo+ICsNCj4gKy0gU2VhcmNoIGZv ciB0aHJlZSByZXNlcnZlZCB6b25lcyBvciByZXNlcnZlIHRoZW0gaWYgdGhleSBkbyBub3QgZXhp c3Q6DQo+ICsNCj4gKyAgLSBPbmUgaXMgb24gYW55IHNvY2tldCBpZC4NCj4gKyAgLSBUaGUgc2Vj b25kIGlzIG9uIHNvY2tldCAwLg0KPiArICAtIFRoZSBsYXN0IG9uZSBpcyBvbiBzb2NrZXQgMSAo aWYgc29ja2V0IDEgZXhpc3RzKS4NCj4gKw0KPiArLSBDaGVjayB0aGF0IHRoZSB6b25lcyBleGlz dC4NCj4gKw0KPiArLSBDaGVjayB0aGF0IHRoZSB6b25lcyBhcmUgY2FjaGUtYWxpZ25lZC4NCj4g Kw0KPiArLSBDaGVjayB0aGF0IHpvbmVzIGRvIG5vdCBvdmVybGFwLg0KPiArDQo+ICstIENoZWNr IHRoYXQgdGhlIHpvbmVzIGFyZSBvbiB0aGUgY29ycmVjdCBzb2NrZXQgaWQuDQo+ICsNCj4gKy0g Q2hlY2sgdGhhdCBhIGxvb2t1cCBvZiB0aGUgZmlyc3Qgem9uZSByZXR1cm5zIHRoZSBzYW1lIHBv aW50ZXIuDQo+ICsNCj4gKy0gQ2hlY2sgdGhhdCBpdCBpcyBub3QgcG9zc2libGUgdG8gY3JlYXRl IGFub3RoZXIgem9uZSB3aXRoIHRoZQ0KPiArICBzYW1lIG5hbWUgYXMgYW4gZXhpc3Rpbmcgem9u ZS4NCj4gKw0KPiArTWVtY3B5DQo+ICs9PT09PT0NCj4gKw0KPiArQ3JlYXRlIHR3byBidWZmZXJz LCBhbmQgaW5pdGlhbGlzZSBvbmUgd2l0aCByYW5kb20gdmFsdWVzLiBUaGVzZSBhcmUNCj4gY29w aWVkDQo+ICt0byB0aGUgc2Vjb25kIGJ1ZmZlciBhbmQgdGhlbiBjb21wYXJlZCB0byBzZWUgaWYg dGhlIGNvcHkgd2FzIHN1Y2Nlc3NmdWxsLg0KPiArVGhlIGJ5dGVzIG91dHNpZGUgdGhlIGNvcGll ZCBhcmVhIGFyZSBhbHNvIGNoZWNrZWQgdG8gbWFrZSBzdXJlIHRoZXkgd2VyZQ0KPiBub3QNCj4g K2NoYW5nZWQuDQo+ICsNCj4gK1RoaXMgaXMgcmVwZWF0ZWQgZm9yIGEgbnVtYmVyIG9mIGRpZmZl cmVudCBzaXplcyBhbmQgb2Zmc2V0cywgd2l0aA0KPiArdGhlIHNlY29uZCBidWZmZXIgYmVpbmcg Y2xlYXJlZCBiZWZvcmUgZWFjaCB0ZXN0Lg0KPiArDQo+ICtEZWJ1ZyB0ZXN0DQo+ICs9PT09PT09 PT09DQo+ICsNCj4gKy0gQ2FsbCBydGVfZHVtcF9zdGFjaygpIGFuZCBydGVfZHVtcF9yZWdpc3Rl cnMoKS4NCj4gKw0KPiArQWxhcm0NCj4gKz09PT09DQo+ICsNCj4gKy0gQ2hlY2sgdGhhdCB0aGUg Y2FsbGJhY2sgZm9yIHRoZSBhbGFybSBjYW4gdG8gYmUgY2FsbGVkLg0KPiArLSBDaGVjayB0aGF0 IGl0IGlzIG5vdCBwb3NzaWJsZSB0byBzZXQgYWxhcm0gd2l0aCBpbnZhbGlkIHRpbWUgdmFsdWUu DQo+ICstIENoZWNrIHRoYXQgaXQgaXMgbm90IHBvc3NpYmxlIHRvIHNldCBhbGFybSB3aXRob3V0 IGEgY2FsbGJhY2suDQo+ICstIENoZWNrIHRoYXQgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGNhbmNl bCBhbGFybSB3aXRob3V0IGEgY2FsbGJhY2sNCj4gcG9pbnRlci4NCj4gKy0gQ2hlY2sgdGhhdCBt dWx0aXBsZSBjYWxsYmFja3MgZm9yIHRoZSBhbGFybSBjYW4gYmUgY2FsbGVkLg0KPiArLSBDaGVj ayB0aGF0IHRoZSBudW1iZXIgb2YgcmVtb3ZlZCBhbmQgdW5yZW1vdmVkIGFsYXJtcyBhcmUgY29y cmVjdC4NCj4gKy0gQ2hlY2sgdGhhdCBubyBjYWxsYmFjayBpcyBjYWxsZWQgaWYgYWxsIGFsYXJt IHJlbW92ZWQuDQo+ICstIENoZWNrIHRoYXQgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGNhbmNlbCBh biBhbGFybSB3aXRoaW4gdGhlIGNhbGxiYWNrDQo+IGl0c2VsZi4NCj4gKy0gQ2hlY2sgdGhhdCB0 aGUgY2FsbGJhY2sgd2hpY2ggaXMgdGhlIGhlYWQgb2YgYWxsIGlzIGFibGUgdG8gYmUgcmVtb3Zl ZC4NCj4gKy0gQ2hlY2sgdGhhdCBhbGwgYWxhcm1zIGZvciB0aGUgc2FtZSBjYWxsYmFjayBjYW4g YmUgY2FuY2VsbGVkLg0KPiArDQo+ICsNCj4gK0NQVSBmbGFncw0KPiArPT09PT09PT09DQo+ICsN Cj4gKy0gVXNpbmcgdGhlIHJ0ZV9jcHVfZ2V0X2ZsYWdfZW5hYmxlZCgpIGNoZWNrcyBmb3IgQ1BV IGZlYXR1cmVzIGZyb20NCj4gZGlmZmVyZW50IENQVUlEIHRhYmxlcw0KPiArLSBDaGVja3MgaWYg cnRlX2NwdV9nZXRfZmxhZ19lbmFibGVkKCkgcHJvcGVybHkgZmFpbHMgb24gdHJ5aW5nIHRvIGNo ZWNrDQo+IGZvciBpbnZhbGlkIGZlYXR1cmUNCj4gKw0KPiArDQo+ICtFcnJubw0KPiArPT09PT0N Cj4gKw0KPiArUGVyZm9ybXMgdmFsaWRhdGlvbiBvbiB0aGUgZXJyb3IgbWVzc2FnZSBzdHJpbmdz IHByb3ZpZGVkIGJ5IHRoZQ0KPiBydGVfc3RyZXJyb3IoKSBjYWxsLCB0byBlbnN1cmUgdGhhdCBz dWl0YWJsZSBzdHJpbmdzIGFyZSByZXR1cm5lZCBmb3IgdGhlDQo+IHJ0ZS1zcGVjaWZpYyBlcnJv ciBjb2RlcywgYXMgd2VsbCBhcyBlbnN1cmluZyB0aGF0IGZvciBzdGFuZGFyZCBlcnJvcg0KPiBj b2RlcyB0aGUgY29ycmVjdCBlcnJvciBtZXNzYWdlIGlzIHJldHVybmVkLg0KPiArDQo+ICtJbnRl cnJ1cHRzDQo+ICs9PT09PT09PT09DQo+ICstIENoZWNrIHRoYXQgdGhlIGNhbGxiYWNrIGZvciB0 aGUgc3BlY2lmaWMgaW50ZXJydXB0IGNhbiBiZSBjYWxsZWQuDQo+ICstIENoZWNrIHRoYXQgaXQg aXMgbm90IHBvc3NpYmxlIHRvIHJlZ2lzdGVyIGEgY2FsbGJhY2sgdG8gYW4gaW52YWxpZA0KPiBp bnRlcnJ1cHQgaGFuZGxlLg0KPiArLSBDaGVjayB0aGF0IGl0IGlzIG5vdCBwb3NzaWJsZSB0byBy ZWdpc3RlciBubyBjYWxsYmFjayB0byBhbiBpbnRlcnJ1cHQNCj4gaGFuZGxlLg0KPiArLSBDaGVj ayB0aGF0IGl0IGlzIG5vdCBwb3NzaWJsZSB0byB1bnJlZ2lzdGVyIGEgY2FsbGJhY2sgdG8gYW4g aW52YWxpZA0KPiBpbnRlcnJ1cHQgaGFuZGxlLg0KPiArLSBDaGVjayB0aGF0IG11bHRpcGxlIGNh bGxiYWNrcyBhcmUgcmVnaXN0ZXJlZCB0byB0aGUgc2FtZSBpbnRlcnJ1cHQNCj4gaGFuZGxlLg0K PiArLSBDaGVjayB0aGF0IGl0IGlzIG5vdCBwb3NzaWJsZSB0byB1bnJlZ2lzdGVyIGEgY2FsbGJh Y2sgd2l0aCBpbnZhbGlkDQo+IHBhcmFtZXRlci4NCj4gKy0gQ2hlY2sgdGhhdCBpdCBpcyBub3Qg cG9zc2libGUgdG8gZW5hYmxlIGFuIGludGVycnVwdCB3aXRoIGludmFsaWQNCj4gaGFuZGxlIG9y IHdyb25nIGhhbmRsZSB0eXBlLg0KPiArLSBDaGVjayB0aGF0IGl0IGlzIG5vdCBwb3NzaWJsZSB0 byBkaXNhYmxlIGFuIGludGVycnVwdCB3aXRoIGludmFsaWQNCj4gaGFuZGxlIG9yIHdyb25nIGhh bmRsZSB0eXBlLg0KPiArDQo+ICsNCj4gK011bHRpcHJvY2Vzcw0KPiArPT09PT09PT09PT09DQo+ ICsNCj4gK1ZhbGlkYXRlcyB0aGF0IGEgc2Vjb25kYXJ5IEludGVsIERQREsgaW5zdGFuY2UgY2Fu IGJlIHJ1biBhbG9uZ3NpZGUgYQ0KPiBwcmltYXJ5IHdoZW4gdGhlIGFwcHJvcHJpYXRlIEVBTCBj b21tYW5kLWxpbmUgZmxhZ3MgYXJlIHBhc3NlZC4gQWxzbw0KPiB2YWxpZGF0ZXMgdGhhdCBzZWNv bmRhcnkgcHJvY2Vzc2VzIGNhbm5vdCBpbnRlcmZlcmUgd2l0aCBwcmltYXJ5IHByb2Nlc3Nlcw0K PiBieSBjcmVhdGluZyBtZW1vcnkgb2JqZWN0cywgc3VjaCBhcyBtZW1wb29scyBvciByaW5ncy4N Cj4gKw0KPiArU3RyaW5nDQo+ICs9PT09PT0NCj4gKw0KPiArUGVyZm9ybXMgdmFsaWRhdGlvbiBv biB0aGUgbmV3IHN0cmluZyBmdW5jdGlvbnMgcHJvdmlkZWQgaW4NCj4gcnRlX3N0cmluZ19mbnMu aCwgZW5zdXJpbmcgdGhhdCBhbGwgdmFsdWVzIHJldHVybmVkIGFyZSBOVUxMIHRlcm1pbmF0ZWQs DQo+IGFuZCB0aGF0IHN1aXRhYmxlIGVycm9ycyBhcmUgcmV0dXJuZWQgd2hlbiBjYWxsZWQgd2l0 aCBpbnZhbGlkIHBhcmFtZXRlcnMuDQo+ICsNCj4gK1RhaWxxDQo+ICs9PT09PQ0KPiArDQo+ICtW YWxpZGF0ZXMgdGhhdCB3ZSBjYW4gY3JlYXRlIGFuZCBwZXJmb3JtIGxvb2t1cHMgb24gbmFtZWQg dGFpbCBxdWV1ZXMNCj4gd2l0aGluIHRoZSBFQUwgZm9yIHZhcmlvdXMgb2JqZWN0IHR5cGVzLiBB bHNvIGVuc3VyZXMgYXBwcm9wcmlhdGUgZXJyb3INCj4gY29kZXMgYXJlIHJldHVybmVkIGZyb20g dGhlIGZ1bmN0aW9ucyBpZiBpbnZhbGlkIHBhcmFtZXRlcnMgYXJlIHBhc3NlZC4NCj4gKw0KPiAr RGV2YXJncw0KPiArPT09PT09PQ0KPiArVG8gQmUgRmlsbGVkDQo+ICsNCj4gK0t2YXJncw0KPiAr PT09PT09DQo+ICtUbyBCZSBGaWxsZWQNCj4gKw0KPiArQWNsDQo+ICs9PT0NCj4gK1RvIEJlIEZp bGxlZA0KPiArDQo+ICtMaW5rX2JvbmRpbmcNCj4gKz09PT09PT09PT09PQ0KPiArVG8gQmUgRmls bGVkDQo+IGRpZmYgLS1naXQgYS90ZXN0cy9UZXN0U3VpdGVfdW5pdF90ZXN0c19jbWRsaW5lLnB5 DQo+IGIvdGVzdHMvVGVzdFN1aXRlX3VuaXRfdGVzdHNfY21kbGluZS5weQ0KPiBuZXcgZmlsZSBt b2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwLi44YTEzNzAzDQo+IC0tLSAvZGV2L251bGwNCj4g KysrIGIvdGVzdHMvVGVzdFN1aXRlX3VuaXRfdGVzdHNfY21kbGluZS5weQ0KPiBAQCAtMCwwICsx LDYwIEBADQo+ICsjIDxDT1BZUklHSFRfVEFHPg0KPiArDQo+ICsiIiINCj4gK0RQREsgVGVzdCBz dWl0ZS4NCj4gKw0KPiArQ21kbGluZSBhdXRvdGVzdA0KPiArDQo+ICsiIiINCj4gKw0KPiArZnJv bSB0ZXN0X2Nhc2UgaW1wb3J0IFRlc3RDYXNlDQo+ICsNCj4gKyMNCj4gKyMNCj4gKyMgVGVzdCBj bGFzcy4NCj4gKyMNCj4gKw0KPiArDQo+ICtjbGFzcyBUZXN0VW5pdFRlc3RzQ21kbGluZShUZXN0 Q2FzZSk6DQo+ICsNCj4gKyAgICAjDQo+ICsgICAgIw0KPiArICAgICMNCj4gKyAgICAjIFRlc3Qg Y2FzZXMuDQo+ICsgICAgIw0KPiArDQo+ICsgICAgZGVmIHNldF91cF9hbGwoc2VsZik6DQo+ICsg ICAgICAgICIiIg0KPiArICAgICAgICBSdW4gYXQgdGhlIHN0YXJ0IG9mIGVhY2ggdGVzdCBzdWl0 ZS4NCj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAgIG91dCA9IHNlbGYuZHV0LmJ1aWxkX2RwZGtf YXBwcygnLi9hcHAvdGVzdC8nKQ0KPiArICAgICAgICBzZWxmLnZlcmlmeSgnbWFrZTogTGVhdmlu ZyBkaXJlY3RvcnknIGluIG91dCwgIkNvbXBpbGF0aW9uDQo+IGZhaWxlZCIpDQo+ICsNCj4gKyAg ICBkZWYgc2V0X3VwKHNlbGYpOg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgUnVuIGJlZm9y ZSBlYWNoIHRlc3QgY2FzZS4NCj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAgIHBhc3MNCj4gKw0K PiArICAgIGRlZiB0ZXN0X2NtZGxpbmUoc2VsZik6DQo+ICsgICAgICAgICIiIg0KPiArICAgICAg ICBSdW4gY21kbGluZSBhdXRvdGVzdHMgaW4gUlRFIGNvbWFuZCBsaW5lLg0KPiArICAgICAgICAi IiINCj4gKw0KPiArICAgICAgICBzZWxmLmR1dC5zZW5kX2V4cGVjdCgiLi9hcHAvdGVzdC90ZXN0 IC1uIDEgLWMgZmZmZiIsDQo+ICJSLipULipFLio+Lio+IiwgMTApDQo+ICsgICAgICAgIG91dCA9 IHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJjbWRsaW5lX2F1dG90ZXN0IiwgIlJURT4+IiwgMTApDQo+ ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJxdWl0IiwgIiMgIikNCj4gKyAgICAgICAg c2VsZi52ZXJpZnkoIlRlc3QgT0siIGluIG91dCwgIlRlc3QgZmFpbGVkIikNCj4gKyAgICAgICAg cmV0dXJuICdTVUNDRVNTJw0KPiArDQo+ICsgICAgZGVmIHRlYXJfZG93bihzZWxmKToNCj4gKyAg ICAgICAgIiIiDQo+ICsgICAgICAgIFJ1biBhZnRlciBlYWNoIHRlc3QgY2FzZS4NCj4gKyAgICAg ICAgIiIiDQo+ICsgICAgICAgIHBhc3MNCj4gKw0KPiArICAgIGRlZiB0ZWFyX2Rvd25fYWxsKHNl bGYpOg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgUnVuIGFmdGVyIGVhY2ggdGVzdCBzdWl0 ZS4NCj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAgIHBhc3MNCj4gZGlmZiAtLWdpdCBhL3Rlc3Rz L1Rlc3RTdWl0ZV91bml0X3Rlc3RzX2R1bXAucHkNCj4gYi90ZXN0cy9UZXN0U3VpdGVfdW5pdF90 ZXN0c19kdW1wLnB5DQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAuLmZm Y2IxNTgNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi90ZXN0cy9UZXN0U3VpdGVfdW5pdF90ZXN0 c19kdW1wLnB5DQo+IEBAIC0wLDAgKzEsMTgxIEBADQo+ICsjIDxDT1BZUklHSFRfVEFHPg0KPiAr aW1wb3J0IHJlDQo+ICsNCj4gKyIiIg0KPiArRFBESyBUZXN0IHN1aXRlLg0KPiArDQo+ICtSdW4g SW50ZXItVk0gc2hhcmUgbWVtb3J5IGF1dG90ZXN0cw0KPiArIiIiDQo+ICsNCj4gKw0KPiArZnJv bSB0ZXN0X2Nhc2UgaW1wb3J0IFRlc3RDYXNlDQo+ICsNCj4gKyMNCj4gKyMNCj4gKyMgVGVzdCBj bGFzcy4NCj4gKyMNCj4gKw0KPiArDQo+ICtjbGFzcyBUZXN0VW5pdFRlc3RzRHVtcChUZXN0Q2Fz ZSk6DQo+ICsNCj4gKyAgICAjDQo+ICsgICAgIw0KPiArICAgICMNCj4gKyAgICAjIFRlc3QgY2Fz ZXMuDQo+ICsgICAgIw0KPiArDQo+ICsgICAgZGVmIHNldF91cF9hbGwoc2VsZik6DQo+ICsgICAg ICAgICIiIg0KPiArICAgICAgICBSdW4gYXQgdGhlIHN0YXJ0IG9mIGVhY2ggdGVzdCBzdWl0ZS4N Cj4gKyAgICAgICAgTm90aGluZyB0byBkbyBoZXJlLg0KPiArICAgICAgICAiIiINCj4gKyAgICAg ICAgIyBCYXNlZCBvbiBoL3cgdHlwZSwgY2hvb3NlIGhvdyBtYW55IHBvcnRzIHRvIHVzZQ0KPiAr ICAgICAgICBzZWxmLmR1dF9wb3J0cyA9IHNlbGYuZHV0LmdldF9wb3J0cyhzZWxmLm5pYykNCj4g KyAgICAgICAgc2VsZi52ZXJpZnkobGVuKHNlbGYuZHV0X3BvcnRzKSA+PSAxLCAiSW5zdWZmaWNp ZW50IHBvcnRzIGZvcg0KPiB0ZXN0aW5nIikNCj4gKw0KPiArICAgIGRlZiBzZXRfdXAoc2VsZik6 DQo+ICsgICAgICAgICIiIg0KPiArICAgICAgICBSdW4gYmVmb3JlIGVhY2ggdGVzdCBjYXNlLg0K PiArICAgICAgICBOb3RoaW5nIHRvIGRvIGhlcmUuDQo+ICsgICAgICAgICIiIg0KPiArICAgICAg ICBwYXNzDQo+ICsNCj4gKyAgICBkZWYgdGVzdF9sb2dfZHVtcChzZWxmKToNCj4gKyAgICAgICAg IiIiDQo+ICsgICAgICAgIFJ1biBoaXN0b3J5IGxvZyBkdW1wIHRlc3QgY2FzZS4NCj4gKyAgICAg ICAgIiIiDQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCIuLyVzL2FwcC90ZXN0IC1u IDEgLWMgZmZmZiIgJSAoc2VsZi50YXJnZXQpLA0KPiAiUi4qVC4qRS4qPi4qPiIsIDEwKQ0KPiAr ICAgICAgICBvdXQgPSBzZWxmLmR1dC5zZW5kX2V4cGVjdCgiZHVtcF9sb2dfaGlzdG9yeSIsICJS VEU+PiIsIDEyMCkNCj4gKyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBlY3QoInF1aXQiLCAiIyAi KQ0KPiArICAgICAgICBzZWxmLnZlcmlmeSgiRUFMIiBpbiBvdXQsICJUZXN0IGZhaWxlZCIpDQo+ ICsNCj4gKyAgICBkZWYgdGVzdF9yaW5nX2R1bXAoc2VsZik6DQo+ICsgICAgICAgICIiIg0KPiAr ICAgICAgICBSdW4gaGlzdG9yeSBsb2cgZHVtcCB0ZXN0IGNhc2UuDQo+ICsgICAgICAgICIiIg0K PiArICAgICAgICBzZWxmLmR1dC5zZW5kX2V4cGVjdCgiLi8lcy9hcHAvdGVzdCAtbiAxIC1jIGZm ZmYiICUgKHNlbGYudGFyZ2V0KSwNCj4gIlIuKlQuKkUuKj4uKj4iLCAxMCkNCj4gKyAgICAgICAg b3V0ID0gc2VsZi5kdXQuc2VuZF9leHBlY3QoImR1bXBfcmluZyIsICJSVEU+PiIsIDEyMCkNCj4g KyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBlY3QoInF1aXQiLCAiIyAiKQ0KPiArICAgICAgICBl bGVtZW50cyA9IFsncmluZycsICdhZGRyZXNzJywgJ2ZsYWdzJywgJ3NpemUnLCAnY3QnLCAnY2gn LCAncHQnLA0KPiAncGgnLCAndXNlZCcsICdhdmFpbCcsICd3YXRlcm1hcmsnXQ0KPiArICAgICAg ICBtYXRjaF9yZWdleCA9ICJyaW5nIDwoLio/KT5AMHgoLiopXHJcbiINCj4gKyAgICAgICAgZm9y IGVsZW1lbnQgaW4gZWxlbWVudHNbMjpdOg0KPiArICAgICAgICAgICAgbWF0Y2hfcmVnZXggKz0g IiAgJXM9KFxkKilcclxuIiAlIGVsZW1lbnQNCj4gKyAgICAgICAgbSA9IHJlLmNvbXBpbGUociIl cyIgJSBtYXRjaF9yZWdleCwgcmUuUykNCj4gKyAgICAgICAgcmVzdWx0ID0gbS5zZWFyY2gob3V0 KQ0KPiArICAgICAgICByaW5nX2luZm8gPSBkaWN0KHppcChlbGVtZW50cywgcmVzdWx0Lmdyb3Vw cygpKSkNCj4gKw0KPiArICAgICAgICBzZWxmLnZlcmlmeShyaW5nX2luZm9bJ3JpbmcnXSA9PSAn TVBfbG9nX2hpc3RvcnknLCAiVGVzdCBmYWlsZWQiKQ0KPiArDQo+ICsgICAgZGVmIHRlc3RfbWVt cG9vbF9kdW1wKHNlbGYpOg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgUnVuIG1lbXBvb2wg ZHVtcCB0ZXN0IGNhc2UuDQo+ICsgICAgICAgICIiIg0KPiArICAgICAgICBzZWxmLmR1dC5zZW5k X2V4cGVjdCgiLi8lcy9hcHAvdGVzdCAtbiAxIC1jIGZmZmYiICUgKHNlbGYudGFyZ2V0KSwNCj4g IlIuKlQuKkUuKj4uKj4iLCAxMCkNCj4gKyAgICAgICAgb3V0ID0gc2VsZi5kdXQuc2VuZF9leHBl Y3QoImR1bXBfbWVtcG9vbCIsICJSVEU+PiIsIDEyMCkNCj4gKyAgICAgICAgc2VsZi5kdXQuc2Vu ZF9leHBlY3QoInF1aXQiLCAiIyAiKQ0KPiArICAgICAgICBlbGVtZW50cyA9IFsnbWVtcG9vbCcs ICdhZGRyZXNzJywgJ2ZsYWdzJywgJ3JpbmcnLCAncGh5c19hZGRyJywNCj4gJ3NpemUnLCAnaGVh ZGVyX3NpemUnLCAnZWx0X3NpemUnLA0KPiArICAgICAgICAgICAgICAgICAgICAndHJhaWxlcl9z aXplJywgJ3RvdGFsX29ial9zaXplJywgJ3ByaXZhdGVfZGF0YV9zaXplJywNCj4gJ3BnX251bScs ICdwZ19zaGlmdCcsICdwZ19tYXNrJywNCj4gKyAgICAgICAgICAgICAgICAgICAgJ2VsdF92YV9z dGFydCcsICdlbHRfdmFfZW5kJywgJ2VsdF9wYVxbMFxdJywgJ2F2Zw0KPiBieXRlcy9vYmplY3Qn DQo+ICsgICAgICAgICAgICAgICAgICAgIF0NCj4gKyAgICAgICAgbWF0Y2hfcmVnZXggPSAibWVt cG9vbCA8KC4qPyk+QDB4KC4qPylcclxuIg0KPiArICAgICAgICBmb3IgZWxlbWVudCBpbiBlbGVt ZW50c1syOl06DQo+ICsgICAgICAgICAgICBtYXRjaF9yZWdleCArPSAiICAlcz0oLio/KVxyXG4i ICUgZWxlbWVudA0KPiArICAgICAgICBtID0gcmUuY29tcGlsZShyIiVzIiAlIG1hdGNoX3JlZ2V4 LCByZS5TKQ0KPiArICAgICAgICByZXN1bHQgPSBtLnNlYXJjaChvdXQpDQo+ICsgICAgICAgIG1l bXBvb2xfaW5mbyA9IGRpY3QoemlwKGVsZW1lbnRzLCByZXN1bHQuZ3JvdXBzKCkpKQ0KPiArDQo+ ICsgICAgICAgIHNlbGYudmVyaWZ5KG1lbXBvb2xfaW5mb1snbWVtcG9vbCddID09ICdsb2dfaGlz dG9yeScsICJUZXN0DQo+IGZhaWxlZCIpDQo+ICsNCj4gKyAgICBkZWYgdGVzdF9waHlzbWVtX2R1 bXAoc2VsZik6DQo+ICsgICAgICAgICIiIg0KPiArICAgICAgICBSdW4gcGh5c2ljYWwgbWVtb3J5 IGR1bXAgdGVzdCBjYXNlLg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgc2VsZi5kdXQuc2Vu ZF9leHBlY3QoIi4vJXMvYXBwL3Rlc3QgLW4gMSAtYyBmZmZmIiAlIChzZWxmLnRhcmdldCksDQo+ ICJSLipULipFLio+Lio+IiwgMTApDQo+ICsgICAgICAgIG91dCA9IHNlbGYuZHV0LnNlbmRfZXhw ZWN0KCJkdW1wX3BoeXNtZW0iLCAiUlRFPj4iLCAxMjApDQo+ICsgICAgICAgIHNlbGYuZHV0LnNl bmRfZXhwZWN0KCJxdWl0IiwgIiMgIikNCj4gKyAgICAgICAgZWxlbWVudHMgPSBbJ1NlZ21lbnQn LCAncGh5cycsICdsZW4nLCAndmlydCcsICdzb2NrZXRfaWQnLA0KPiAnaHVnZXBhZ2Vfc3onLCAn bmNoYW5uZWwnLCAnbnJhbmsnXQ0KPiArICAgICAgICBtYXRjaF9yZWdleCA9ICJTZWdtZW50IChc ZCkrOiINCj4gKyAgICAgICAgZm9yIGVsZW1lbnQgaW4gZWxlbWVudHNbMTotMV06DQo+ICsgICAg ICAgICAgICBtYXRjaF9yZWdleCArPSAiICVzOiguKj8pLCIgJSBlbGVtZW50DQo+ICsgICAgICAg IG1hdGNoX3JlZ2V4ICs9ICIgJXM6KC4qPylcbiIgJSBlbGVtZW50c1stMV0NCj4gKyAgICAgICAg bSA9IHJlLmNvbXBpbGUociIlcyIgJSBtYXRjaF9yZWdleCwgcmUuRE9UQUxMKQ0KPiArICAgICAg ICByZXN1bHRzID0gbS5maW5kYWxsKG91dCkNCj4gKyAgICAgICAgcGh5X2luZm8gPSBbXQ0KPiAr ICAgICAgICBmb3IgcmVzdWx0IGluIHJlc3VsdHM6DQo+ICsgICAgICAgICAgICBwaHlfaW5mby5h cHBlbmQoZGljdCh6aXAoZWxlbWVudHMsIHJlc3VsdCkpKQ0KPiArDQo+ICsgICAgICAgIHNlbGYu dmVyaWZ5KGxlbihwaHlfaW5mbykgPiAwLCAiVGVzdCBmYWlsZWQiKQ0KPiArDQo+ICsgICAgZGVm IHRlc3RfbWVtem9uZV9kdW1wKHNlbGYpOg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgUnVu IG1lbXpvbmUgZHVtcCB0ZXN0IGNhc2UuDQo+ICsgICAgICAgICIiIg0KPiArICAgICAgICBzZWxm LmR1dC5zZW5kX2V4cGVjdCgiLi8lcy9hcHAvdGVzdCAtbiAxIC1jIGZmZmYiICUgKHNlbGYudGFy Z2V0KSwNCj4gIlIuKlQuKkUuKj4uKj4iLCAxMCkNCj4gKyAgICAgICAgb3V0ID0gc2VsZi5kdXQu c2VuZF9leHBlY3QoImR1bXBfbWVtem9uZSIsICJSVEU+PiIsIDEyMCkNCj4gKyAgICAgICAgc2Vs Zi5kdXQuc2VuZF9leHBlY3QoInF1aXQiLCAiIyAiKQ0KPiArDQo+ICsgICAgICAgIGVsZW1lbnRz ID0gWydab25lJywgJ25hbWUnLCAncGh5cycsICdsZW4nLCAndmlydCcsICdzb2NrZXRfaWQnLA0K PiAnZmxhZ3MnXQ0KPiArICAgICAgICBtYXRjaF9yZWdleCA9ICJab25lIChcZCk6Ig0KPiArICAg ICAgICBmb3IgZWxlbWVudCBpbiBlbGVtZW50c1sxOi0xXToNCj4gKyAgICAgICAgICAgIG1hdGNo X3JlZ2V4ICs9ICIgJXM6KC4qPyksIiAlIGVsZW1lbnQNCj4gKyAgICAgICAgbWF0Y2hfcmVnZXgg Kz0gIiAlczooLio/KVxuIiAlIGVsZW1lbnRzWy0xXQ0KPiArICAgICAgICBtID0gcmUuY29tcGls ZShyIiVzIiAlIG1hdGNoX3JlZ2V4LCByZS5ET1RBTEwpDQo+ICsgICAgICAgIHJlc3VsdHMgPSBt LmZpbmRhbGwob3V0KQ0KPiArDQo+ICsgICAgICAgIG1lbXpvbmVfaW5mbyA9IFtdDQo+ICsgICAg ICAgIGZvciByZXN1bHQgaW4gcmVzdWx0czoNCj4gKyAgICAgICAgICAgIG1lbXpvbmVfaW5mby5h cHBlbmQoZGljdCh6aXAoZWxlbWVudHMsIHJlc3VsdCkpKQ0KPiArDQo+ICsgICAgICAgIHNlbGYu dmVyaWZ5KGxlbihtZW16b25lX2luZm8pID4gMCwgIlRlc3QgZmFpbGVkIikNCj4gKw0KPiArICAg IGRlZiB0ZXN0X2R1bXBfc3RydWN0X3NpemUoc2VsZik6DQo+ICsgICAgICAgICIiIg0KPiArICAg ICAgICBSdW4gc3RydWN0IHNpemUgZHVtcCB0ZXN0IGNhc2UuDQo+ICsgICAgICAgICIiIg0KPiAr ICAgICAgICBzZWxmLmR1dC5zZW5kX2V4cGVjdCgiLi8lcy9hcHAvdGVzdCAtbiAxIC1jIGZmZmYi ICUgKHNlbGYudGFyZ2V0KSwNCj4gIlIuKlQuKkUuKj4uKj4iLCAxMCkNCj4gKyAgICAgICAgb3V0 ID0gc2VsZi5kdXQuc2VuZF9leHBlY3QoImR1bXBfc3RydWN0X3NpemVzIiwgIlJURT4+IiwgMTIw KQ0KPiArICAgICAgICBzZWxmLmR1dC5zZW5kX2V4cGVjdCgicXVpdCIsICIjICIpDQo+ICsNCj4g KyAgICAgICAgZWxlbWVudHMgPSBbJ3N0cnVjdCBydGVfbWJ1ZicsICdzdHJ1Y3QgcnRlX21lbXBv b2wnLCAnc3RydWN0DQo+IHJ0ZV9yaW5nJ10NCj4gKyAgICAgICAgbWF0Y2hfcmVnZXggPSAiIg0K PiArICAgICAgICBmb3IgZWxlbWVudCBpbiBlbGVtZW50c1s6LTFdOg0KPiArICAgICAgICAgICAg bWF0Y2hfcmVnZXggKz0gInNpemVvZlwoJXNcKSA9IChcZCspXHJcbiIgJSBlbGVtZW50DQo+ICsg ICAgICAgIG1hdGNoX3JlZ2V4ICs9ICJzaXplb2ZcKCVzXCkgPSAoXGQrKSIgJSBlbGVtZW50c1st MV0NCj4gKyAgICAgICAgbSA9IHJlLmNvbXBpbGUociIlcyIgJSBtYXRjaF9yZWdleCwgcmUuUykN Cj4gKyAgICAgICAgcmVzdWx0ID0gbS5zZWFyY2gob3V0KQ0KPiArICAgICAgICBzdHJ1Y3RfaW5m byA9IGRpY3QoemlwKGVsZW1lbnRzLCByZXN1bHQuZ3JvdXBzKCkpKQ0KPiArDQo+ICsgICAgZGVm IHRlc3RfZHVtcF9kZXZhcmdzKHNlbGYpOg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgUnVu IGRldmFyZ3MgZHVtcCB0ZXN0IGNhc2UuDQo+ICsgICAgICAgICIiIg0KPiArICAgICAgICB0ZXN0 X3BvcnQgPSBzZWxmLmR1dF9wb3J0c1swXQ0KPiArICAgICAgICBzZWxmLmR1dC5zZW5kX2V4cGVj dCgiLi8lcy9hcHAvdGVzdCAtbiAxIC1jIGZmZmYgLWIgMDAwMDolcyINCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJSAoc2VsZi50YXJnZXQsDQo+IHNlbGYuZHV0LnBvcnRzX2luZm9b dGVzdF9wb3J0XVsncGNpJ10pLCAiUi4qVC4qRS4qPi4qPiIsIDEwKQ0KPiArICAgICAgICBvdXQg PSBzZWxmLmR1dC5zZW5kX2V4cGVjdCgiZHVtcF9kZXZhcmdzIiwgIlJURT4+IiwgMTIwKQ0KPiAr ICAgICAgICBzZWxmLmR1dC5zZW5kX2V4cGVjdCgicXVpdCIsICIjICIpDQo+ICsgICAgICAgIGJs YWNrX3N0ciA9ICJQQ0kgYmxhY2tsaXN0IDAwMDA6JXMiICUNCj4gc2VsZi5kdXQucG9ydHNfaW5m b1t0ZXN0X3BvcnRdWydwY2knXQ0KPiArICAgICAgICBzZWxmLnZlcmlmeShibGFja19zdHIgaW4g b3V0LCAiRHVtcCBibGFjayBsaXN0IGZhaWxlZCIpDQo+ICsNCj4gKyAgICAgICAgc2VsZi5kdXQu c2VuZF9leHBlY3QoIi4vJXMvYXBwL3Rlc3QgLW4gMSAtYyBmZmZmIC13IDAwMDA6JXMiDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHNlbGYudGFyZ2V0LA0KPiBzZWxmLmR1dC5w b3J0c19pbmZvW3Rlc3RfcG9ydF1bJ3BjaSddKSwgIlIuKlQuKkUuKj4uKj4iLCAxMCkNCj4gKyAg ICAgICAgb3V0ID0gc2VsZi5kdXQuc2VuZF9leHBlY3QoImR1bXBfZGV2YXJncyIsICJSVEU+PiIs IDEyMCkNCj4gKyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBlY3QoInF1aXQiLCAiIyAiKQ0KPiAr DQo+ICsgICAgICAgIHdoaXRlX3N0ciA9ICJQQ0kgd2hpdGVsaXN0IDAwMDA6JXMiICUNCj4gc2Vs Zi5kdXQucG9ydHNfaW5mb1t0ZXN0X3BvcnRdWydwY2knXQ0KPiArICAgICAgICBzZWxmLnZlcmlm eSh3aGl0ZV9zdHIgaW4gb3V0LCAiRHVtcCB3aGl0ZSBsaXN0IGZhaWxlZCIpDQo+ICsNCj4gKyAg ICBkZWYgdGVhcl9kb3duKHNlbGYpOg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgUnVuIGFm dGVyIGVhY2ggdGVzdCBjYXNlLg0KPiArICAgICAgICBTdG9wIGFwcGxpY2F0aW9uIHRlc3QgYWZ0 ZXIgZXZlcnkgY2FzZS4NCj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAgIHNlbGYuZHV0LmtpbGxf YWxsKCkNCj4gKyAgICAgICAgcGFzcw0KPiArDQo+ICsgICAgZGVmIHRlYXJfZG93bl9hbGwoc2Vs Zik6DQo+ICsgICAgICAgICIiIg0KPiArICAgICAgICBSdW4gYWZ0ZXIgZWFjaCB0ZXN0IHN1aXRl Lg0KPiArICAgICAgICBOb3RoaW5nIHRvIGRvIGhlcmUuDQo+ICsgICAgICAgICIiIg0KPiArICAg ICAgICBwYXNzDQo+IGRpZmYgLS1naXQgYS90ZXN0cy9UZXN0U3VpdGVfdW5pdF90ZXN0c19lYWwu cHkNCj4gYi90ZXN0cy9UZXN0U3VpdGVfdW5pdF90ZXN0c19lYWwucHkNCj4gbmV3IGZpbGUgbW9k ZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMC4uZTM2YWRjNQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsr KyBiL3Rlc3RzL1Rlc3RTdWl0ZV91bml0X3Rlc3RzX2VhbC5weQ0KPiBAQCAtMCwwICsxLDQwOSBA QA0KPiArIyA8Q09QWVJJR0hUX1RBRz4NCj4gKw0KPiArIiIiDQo+ICtEUERLIFRlc3Qgc3VpdGUu DQo+ICsNCj4gK0VBTCBhdXRvdGVzdC4NCj4gKw0KPiArIiIiDQo+ICsNCj4gK2ltcG9ydCBkdHMN Cj4gKw0KPiArDQo+ICtmcm9tIHRlc3RfY2FzZSBpbXBvcnQgVGVzdENhc2UNCj4gKw0KPiArIw0K PiArIw0KPiArIyBUZXN0IGNsYXNzLg0KPiArIw0KPiArDQo+ICsNCj4gK2NsYXNzIFRlc3RVbml0 VGVzdHNFYWwoVGVzdENhc2UpOg0KPiArDQo+ICsgICAgIw0KPiArICAgICMNCj4gKyAgICAjDQo+ ICsgICAgIyBUZXN0IGNhc2VzLg0KPiArICAgICMNCj4gKw0KPiArICAgIGRlZiBzZXRfdXBfYWxs KHNlbGYpOg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgUnVuIGF0IHRoZSBzdGFydCBvZiBl YWNoIHRlc3Qgc3VpdGUuDQo+ICsgICAgICAgICIiIg0KPiArICAgICAgICBvdXQgPSBzZWxmLmR1 dC5idWlsZF9kcGRrX2FwcHMoJy4vYXBwL3Rlc3QvJykNCj4gKyAgICAgICAgc2VsZi52ZXJpZnko J21ha2U6IExlYXZpbmcgZGlyZWN0b3J5JyBpbiBvdXQsICJDb21waWxhdGlvbg0KPiBmYWlsZWQi KQ0KPiArICAgICAgICBbYXJjaCwgbWFjaGluZSwgc2VsZi5lbnYsIHRvb2xjaGFpbl0gPSBzZWxm LnRhcmdldC5zcGxpdCgnLScpDQo+ICsNCj4gKyAgICBkZWYgc2V0X3VwKHNlbGYpOg0KPiArICAg ICAgICAiIiINCj4gKyAgICAgICAgUnVuIGJlZm9yZSBlYWNoIHRlc3QgY2FzZS4NCj4gKyAgICAg ICAgIiIiDQo+ICsgICAgICAgIHBhc3MNCj4gKw0KPiArICAgIGRlZiB0ZXN0X3ZlcnNpb24oc2Vs Zik6DQo+ICsgICAgICAgICIiIg0KPiArICAgICAgICBSdW4gdmVyc2lvbiBhdXRvdGVzdC4NCj4g KyAgICAgICAgIiIiDQo+ICsNCj4gKyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBlY3QoIiVzIC4v YXBwL3Rlc3QvdGVzdCAtbiAxIC1jIGZmZmYiICUNCj4gc2VsZi5kdXQudGFza3NldCgxKSwNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlIuKlQuKkUuKj4uKj4iLCAxMCkNCj4gKyAg ICAgICAgb3V0ID0gc2VsZi5kdXQuc2VuZF9leHBlY3QoInZlcnNpb25fYXV0b3Rlc3QiLCAiUlRF Pj4iLCAzMCkNCj4gKyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBlY3QoInF1aXQiLCAiIyAiKQ0K PiArICAgICAgICBzZWxmLnZlcmlmeSgiVGVzdCBPSyIgaW4gb3V0LCAiVGVzdCBmYWlsZWQiKQ0K PiArDQo+ICsgICAgZGVmIHRlc3RfbWVtY29weShzZWxmKToNCj4gKyAgICAgICAgIiIiDQo+ICsg ICAgICAgIFJ1biBtZW1jb3B5IGF1dG90ZXN0Lg0KPiArICAgICAgICAiIiINCj4gKw0KPiArICAg ICAgICBzZWxmLmR1dC5zZW5kX2V4cGVjdCgiJXMgLi9hcHAvdGVzdC90ZXN0IC1uIDEgLWMgZmZm ZiIgJQ0KPiBzZWxmLmR1dC50YXNrc2V0KDEpLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiUi4qVC4qRS4qPi4qPiIsIDEwKQ0KPiArICAgICAgICBvdXQgPSBzZWxmLmR1dC5zZW5k X2V4cGVjdCgibWVtY3B5X2F1dG90ZXN0IiwgIlJURT4+IiwgMzApDQo+ICsgICAgICAgIHNlbGYu ZHV0LnNlbmRfZXhwZWN0KCJxdWl0IiwgIiMgIikNCj4gKyAgICAgICAgc2VsZi52ZXJpZnkoIlRl c3QgT0siIGluIG91dCwgIlRlc3QgZmFpbGVkIikNCj4gKw0KPiArICAgIGRlZiB0ZXN0X2NvbW1v bihzZWxmKToNCj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAgIFJ1biBjb21tb24gYXV0b3Rlc3Qu DQo+ICsgICAgICAgICIiIg0KPiArDQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCIl cyAuL2FwcC90ZXN0L3Rlc3QgLW4gMSAtYyBmZmZmIiAlDQo+IHNlbGYuZHV0LnRhc2tzZXQoMSks DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSLipULipFLio+Lio+IiwgMTApDQo+ ICsgICAgICAgIG91dCA9IHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJjb21tb25fYXV0b3Rlc3QiLCAi UlRFPj4iLCAzMCkNCj4gKyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBlY3QoInF1aXQiLCAiIyAi KQ0KPiArICAgICAgICBzZWxmLnZlcmlmeSgiVGVzdCBPSyIgaW4gb3V0LCAiVGVzdCBmYWlsZWQi KQ0KPiArDQo+ICsgICAgZGVmIHRlc3RfZWFsX2ZzKHNlbGYpOg0KPiArICAgICAgICAiIiINCj4g KyAgICAgICAgUnVuIG1lbWNvcHkgYXV0b3Rlc3QuDQo+ICsgICAgICAgICIiIg0KPiArDQo+ICsg ICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCIlcyAuL2FwcC90ZXN0L3Rlc3QgLW4gMSAtYyBm ZmZmIiAlDQo+IHNlbGYuZHV0LnRhc2tzZXQoMSksDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICJSLipULipFLio+Lio+IiwgMTApDQo+ICsgICAgICAgIG91dCA9IHNlbGYuZHV0LnNl bmRfZXhwZWN0KCJlYWxfZnNfYXV0b3Rlc3QiLCAiUlRFPj4iLCAzMCkNCj4gKyAgICAgICAgc2Vs Zi5kdXQuc2VuZF9leHBlY3QoInF1aXQiLCAiIyAiKQ0KPiArICAgICAgICBzZWxmLnZlcmlmeSgi VGVzdCBPSyIgaW4gb3V0LCAiVGVzdCBmYWlsZWQiKQ0KPiArDQo+ICsgICAgZGVmIHRlc3RfbWVt Y3B5KHNlbGYpOg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgUnVuIG1lbWNvcHkgYXV0b3Rl c3QuDQo+ICsgICAgICAgICIiIg0KPiArDQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0 KCIlcyAuL2FwcC90ZXN0L3Rlc3QgLW4gMSAtYyBmZmZmIiAlDQo+IHNlbGYuZHV0LnRhc2tzZXQo MSksDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSLipULipFLio+Lio+IiwgMTAp DQo+ICsgICAgICAgIG91dCA9IHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJtZW1jcHlfYXV0b3Rlc3Qi LCAiUlRFPj4iLCAzMCkNCj4gKyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBlY3QoInF1aXQiLCAi IyAiKQ0KPiArICAgICAgICBzZWxmLnZlcmlmeSgiVGVzdCBPSyIgaW4gb3V0LCAiVGVzdCBmYWls ZWQiKQ0KPiArDQo+ICsgICAgZGVmIHRlc3RfbWVtY3B5X3BlcmYoc2VsZik6DQo+ICsgICAgICAg ICIiIg0KPiArICAgICAgICBSdW4gbWVtY29weSBwZXJmb3JtYW5jZSBhdXRvdGVzdC4NCj4gKyAg ICAgICAgIiIiDQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCIlcyAuL2FwcC90ZXN0 L3Rlc3QgLW4gMSAtYyBmZmZmIiAlDQo+IHNlbGYuZHV0LnRhc2tzZXQoMSksDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJSLipULipFLio+Lio+IiwgMTApDQo+ICsgICAgICAgIG91 dCA9IHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJtZW1jcHlfcGVyZl9hdXRvdGVzdCIsICJSVEU+PiIs IDI0MCkNCj4gKyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBlY3QoInF1aXQiLCAiIyAiKQ0KPiAr ICAgICAgICBzZWxmLnZlcmlmeSgiVGVzdCBPSyIgaW4gb3V0LCAiVGVzdCBmYWlsZWQiKQ0KPiAr DQo+ICsgICAgZGVmIHRlc3RfaGFzaChzZWxmKToNCj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAg IFJ1biBoYXNoIGF1dG90ZXN0Lg0KPiArICAgICAgICAiIiINCj4gKw0KPiArICAgICAgICBzZWxm LmR1dC5zZW5kX2V4cGVjdCgiLi9hcHAvdGVzdC90ZXN0IC1uIDEgLWMgZmZmZiIsDQo+ICJSLipU LipFLio+Lio+IiwgMTApDQo+ICsgICAgICAgIG91dCA9IHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJo YXNoX2F1dG90ZXN0IiwgIlJURT4+IiwgMzApDQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhw ZWN0KCJxdWl0IiwgIiMgIikNCj4gKyAgICAgICAgc2VsZi52ZXJpZnkoIlRlc3QgT0siIGluIG91 dCwgIlRlc3QgZmFpbGVkIikNCj4gKw0KPiArICAgIGRlZiB0ZXN0X2hhc2hfcGVyZihzZWxmKToN Cj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAgIFJ1biBoYXMgcGVyZm9ybWFuY2UgYXV0b3Rlc3Qu DQo+ICsgICAgICAgICIiIg0KPiArDQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCIl cyAuL2FwcC90ZXN0L3Rlc3QgLW4gMSAtYyBmZmZlIiAlDQo+IHNlbGYuZHV0LnRhc2tzZXQoMSks DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSLipULipFLio+Lio+IiwgMTApDQo+ ICsgICAgICAgIG91dCA9IHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJoYXNoX3BlcmZfYXV0b3Rlc3Qi LCAiUlRFPj4iLCA2MDApDQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJxdWl0Iiwg IiMgIikNCj4gKyAgICAgICAgc2VsZi52ZXJpZnkoIlRlc3QgT0siIGluIG91dCwgIlRlc3QgZmFp bGVkIikNCj4gKw0KPiArICAgIGRlZiB0ZXN0X21hbGxvYyhzZWxmKToNCj4gKyAgICAgICAgIiIi DQo+ICsgICAgICAgIFJ1biBtYWxsb2MgYXV0b3Rlc3QuDQo+ICsgICAgICAgICIiIg0KPiArDQo+ ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCIuL2FwcC90ZXN0L3Rlc3QgLW4gMSAtYyBm ZmZmIiwNCj4gIlIuKlQuKkUuKj4uKj4iLCAxMCkNCj4gKyAgICAgICAgb3V0ID0gc2VsZi5kdXQu c2VuZF9leHBlY3QoIm1hbGxvY19hdXRvdGVzdCIsICJSVEU+PiIsIDMwKQ0KPiArICAgICAgICBz ZWxmLmR1dC5zZW5kX2V4cGVjdCgicXVpdCIsICIjICIpDQo+ICsgICAgICAgIHNlbGYudmVyaWZ5 KCJUZXN0IE9LIiBpbiBvdXQsICJUZXN0IGZhaWxlZCIpDQo+ICsNCj4gKyAgICBkZWYgdGVzdF9m dW5jX3JlZW50cmFuY3koc2VsZik6DQo+ICsgICAgICAgICIiIg0KPiArICAgICAgICBSdW4gZnVu Y3Rpb24gcmVlbnRyYW5jeSBhdXRvdGVzdC4NCj4gKyAgICAgICAgIiIiDQo+ICsNCj4gKyAgICAg ICAgaWYgc2VsZi5kdXQuYXJjaGl0ZWN0dXJlID09ICJ4ODZfNjQiOg0KPiArICAgICAgICAgICAg Y21kbGluZSA9ICIuL2FwcC90ZXN0L3Rlc3QgLW4gMSAtYyBmZmZmIg0KPiArICAgICAgICBlbHNl Og0KPiArICAgICAgICAgICAgIyBtYXNrIGNvcmVzIG9ubHkgb24gc29ja2V0IDANCj4gKyAgICAg ICAgICAgIGNtZGxpbmUgPSAiJXMgLi9hcHAvdGVzdC90ZXN0IC1uIDEgLWMgNTU1NSIgJQ0KPiBz ZWxmLmR1dC50YXNrc2V0KDEpDQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KGNtZGxp bmUsICJSLipULipFLio+Lio+IiwgMTApDQo+ICsgICAgICAgIG91dCA9IHNlbGYuZHV0LnNlbmRf ZXhwZWN0KCJmdW5jX3JlZW50cmFuY3lfYXV0b3Rlc3QiLCAiUlRFPj4iLA0KPiAzMCkNCj4gKyAg ICAgICAgc2VsZi5kdXQuc2VuZF9leHBlY3QoInF1aXQiLCAiIyAiKQ0KPiArICAgICAgICBzZWxm LnZlcmlmeSgiVGVzdCBPSyIgaW4gb3V0LCAiVGVzdCBmYWlsZWQiKQ0KPiArDQo+ICsgICAgZGVm IHRlc3RfcGNpKHNlbGYpOg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgUnVuIHBjaSBhdXRv dGVzdC4NCj4gKyAgICAgICAgIiIiDQo+ICsNCj4gKyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBl Y3QoIi4vYXBwL3Rlc3QvdGVzdCAtbiAxIC1jIGZmZmYiLA0KPiAiUi4qVC4qRS4qPi4qPiIsIDEw KQ0KPiArICAgICAgICBvdXQgPSBzZWxmLmR1dC5zZW5kX2V4cGVjdCgicGNpX2F1dG90ZXN0Iiwg IlJURT4+IiwgMzApDQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJxdWl0IiwgIiMg IikNCj4gKyAgICAgICAgc2VsZi52ZXJpZnkoIlRlc3QgT0siIGluIG91dCwgIlRlc3QgZmFpbGVk IikNCj4gKw0KPiArICAgIGRlZiB0ZXN0X2F0b21pYyhzZWxmKToNCj4gKyAgICAgICAgIiIiDQo+ ICsgICAgICAgIFJ1biBhdG9taWMgYXV0b3Rlc3QuDQo+ICsgICAgICAgICIiIg0KPiArDQo+ICsg ICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCIuL2FwcC90ZXN0L3Rlc3QgLW4gMSAtYyBmZmZm IiwNCj4gIlIuKlQuKkUuKj4uKj4iLCAxMCkNCj4gKyAgICAgICAgb3V0ID0gc2VsZi5kdXQuc2Vu ZF9leHBlY3QoImF0b21pY19hdXRvdGVzdCIsICJSVEU+PiIsIDMwKQ0KPiArICAgICAgICBzZWxm LmR1dC5zZW5kX2V4cGVjdCgicXVpdCIsICIjICIpDQo+ICsgICAgICAgIHNlbGYudmVyaWZ5KCJU ZXN0IE9LIiBpbiBvdXQsICJUZXN0IGZhaWxlZCIpDQo+ICsNCj4gKyAgICBkZWYgdGVzdF9tZW1v cnkoc2VsZik6DQo+ICsgICAgICAgICIiIg0KPiArICAgICAgICBSdW4gbWVtb3J5IGF1dG90ZXN0 Lg0KPiArICAgICAgICAiIiINCj4gKw0KPiArICAgICAgICBzZWxmLmR1dC5zZW5kX2V4cGVjdCgi Li9hcHAvdGVzdC90ZXN0IC1uIDEgLWMgZmZmZiIsDQo+ICJSLipULipFLio+Lio+IiwgMTApDQo+ ICsgICAgICAgIG91dCA9IHNlbGYuZHV0LnNlbmRfZXhwZWN0KCdtZW1vcnlfYXV0b3Rlc3QnLCAi UlRFPj4iLCAyMCkNCj4gKyAgICAgICAgcmVnZXhwID0gInBoeXM6MHhbMC05YS1mXSosIGxlbjoo WzAtOWEtZl0qKSwgdmlydDoweFswLTlhLWZdKiwNCj4gc29ja2V0X2lkOlswLTldKiINCj4gKyAg ICAgICAgbWF0Y2ggPSBkdHMucmVnZXhwKG91dCwgcmVnZXhwKQ0KPiArICAgICAgICBzaXplID0g aW50KG1hdGNoLCAxNikNCj4gKyAgICAgICAgc2VsZi52ZXJpZnkoc2l6ZSA+IDAsICJiYWQgc2l6 ZSIpDQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJxdWl0IiwgIiMgIikNCj4gKw0K PiArICAgIGRlZiB0ZXN0X2xjb3JlX2xhdW5jaChzZWxmKToNCj4gKyAgICAgICAgIiIiDQo+ICsg ICAgICAgIFJ1biBsY29yZSBhdXRvdGVzdC4NCj4gKyAgICAgICAgIiIiDQo+ICsNCj4gKyAgICAg ICAgc2VsZi5kdXQuc2VuZF9leHBlY3QoIi4vYXBwL3Rlc3QvdGVzdCAtbiAxIC1jIGZmZmYiLA0K PiAiUi4qVC4qRS4qPi4qPiIsIDEwKQ0KPiArICAgICAgICBvdXQgPSBzZWxmLmR1dC5zZW5kX2V4 cGVjdCgicGVyX2xjb3JlX2F1dG90ZXN0IiwgIlJURT4+IiwgMjApDQo+ICsgICAgICAgIHNlbGYu ZHV0LnNlbmRfZXhwZWN0KCJxdWl0IiwgIiMgIikNCj4gKyAgICAgICAgc2VsZi52ZXJpZnkoIlRl c3QgT0siIGluIG91dCwgIlRlc3QgZmFpbGVkIikNCj4gKw0KPiArICAgIGRlZiB0ZXN0X3NwaW5s b2NrKHNlbGYpOg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgUnVuIHNwaW5sb2NrIGF1dG90 ZXN0Lg0KPiArICAgICAgICAiIiINCj4gKw0KPiArICAgICAgICBzZWxmLmR1dC5zZW5kX2V4cGVj dCgiLi9hcHAvdGVzdC90ZXN0IC1uIDEgLWMgZmZmZiIsDQo+ICJSLipULipFLio+Lio+IiwgMTAp DQo+ICsgICAgICAgIG91dCA9IHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJzcGlubG9ja19hdXRvdGVz dCIsICJSVEU+PiIsIDEyMCkNCj4gKyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBlY3QoInF1aXQi LCAiIyAiKQ0KPiArICAgICAgICBzZWxmLnZlcmlmeSgiVGVzdCBPSyIgaW4gb3V0LCAiVGVzdCBm YWlsZWQiKQ0KPiArDQo+ICsgICAgZGVmIHRlc3Rfcndsb2NrKHNlbGYpOg0KPiArICAgICAgICAi IiINCj4gKyAgICAgICAgUnVuIHJ3bG9jayBhdXRvdGVzdC4NCj4gKyAgICAgICAgIiIiDQo+ICsN Cj4gKyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBlY3QoIi4vYXBwL3Rlc3QvdGVzdCAtbiAxIC1j IGZmZmYiLA0KPiAiUi4qVC4qRS4qPi4qPiIsIDEwKQ0KPiArICAgICAgICBvdXQgPSBzZWxmLmR1 dC5zZW5kX2V4cGVjdCgicndsb2NrX2F1dG90ZXN0IiwgIlJURT4+IiwgMjApDQo+ICsgICAgICAg IHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJxdWl0IiwgIiMgIikNCj4gKyAgICAgICAgc2VsZi52ZXJp ZnkoIlRlc3QgT0siIGluIG91dCwgIlRlc3QgZmFpbGVkIikNCj4gKw0KPiArICAgIGRlZiB0ZXN0 X3ByZWZldGNoKHNlbGYpOg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgUnVuIHByZWZldGNo IGF1dG90ZXN0Lg0KPiArICAgICAgICAiIiINCj4gKw0KPiArICAgICAgICBzZWxmLmR1dC5zZW5k X2V4cGVjdCgiLi9hcHAvdGVzdC90ZXN0IC1uIDEgLWMgZmZmZiIsDQo+ICJSLipULipFLio+Lio+ IiwgMTApDQo+ICsgICAgICAgIG91dCA9IHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJwcmVmZXRjaF9h dXRvdGVzdCIsICJSVEU+PiIsIDIwKQ0KPiArICAgICAgICBzZWxmLmR1dC5zZW5kX2V4cGVjdCgi cXVpdCIsICIjICIpDQo+ICsgICAgICAgIHNlbGYudmVyaWZ5KCJUZXN0IE9LIiBpbiBvdXQsICJU ZXN0IGZhaWxlZCIpDQo+ICsNCj4gKyAgICBkZWYgdGVzdF9ieXRlb3JkZXIoc2VsZik6DQo+ICsg ICAgICAgICIiIg0KPiArICAgICAgICBSdW4gYnl0ZSBvcmRlciBhdXRvdGVzdC4NCj4gKyAgICAg ICAgIiIiDQo+ICsNCj4gKyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBlY3QoIi4vYXBwL3Rlc3Qv dGVzdCAtbiAxIC1jIGZmZmYiLA0KPiAiUi4qVC4qRS4qPi4qPiIsIDEwKQ0KPiArICAgICAgICBv dXQgPSBzZWxmLmR1dC5zZW5kX2V4cGVjdCgiYnl0ZW9yZGVyX2F1dG90ZXN0IiwgIlJURT4+Iiwg MTApDQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJxdWl0IiwgIiMgIikNCj4gKyAg ICAgICAgc2VsZi52ZXJpZnkoIlRlc3QgT0siIGluIG91dCwgIlRlc3QgZmFpbGVkIikNCj4gKw0K PiArICAgIGRlZiB0ZXN0X2N5Y2xlcyhzZWxmKToNCj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAg IFJ1biBjeWNsZXMgYXV0b3Rlc3QuDQo+ICsgICAgICAgICIiIg0KPiArDQo+ICsgICAgICAgIHNl bGYuZHV0LnNlbmRfZXhwZWN0KCIuL2FwcC90ZXN0L3Rlc3QgLW4gMSAtYyBmZmZmIiwNCj4gIlIu KlQuKkUuKj4uKj4iLCAxMCkNCj4gKyAgICAgICAgb3V0ID0gc2VsZi5kdXQuc2VuZF9leHBlY3Qo ImN5Y2xlc19hdXRvdGVzdCIsICJSVEU+PiIsIDIwKQ0KPiArICAgICAgICBzZWxmLmR1dC5zZW5k X2V4cGVjdCgicXVpdCIsICIjICIpDQo+ICsgICAgICAgIHNlbGYudmVyaWZ5KCJUZXN0IE9LIiBp biBvdXQsICJUZXN0IGZhaWxlZCIpDQo+ICsNCj4gKyAgICBkZWYgdGVzdF9sb2dzKHNlbGYpOg0K PiArICAgICAgICAiIiINCj4gKyAgICAgICAgUnVuIGxvZ3MgYXV0b3Rlc3QuDQo+ICsgICAgICAg ICIiIg0KPiArDQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCIuL2FwcC90ZXN0L3Rl c3QgLW4gMSAtYyBmZmZmIiwNCj4gIlIuKlQuKkUuKj4uKj4iLCAxMCkNCj4gKyAgICAgICAgb3V0 ID0gc2VsZi5kdXQuc2VuZF9leHBlY3QoImxvZ3NfYXV0b3Rlc3QiLCAiUlRFPj4iLCAxMCkNCj4g KyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBlY3QoInF1aXQiLCAiIyAiKQ0KPiArICAgICAgICBz ZWxmLnZlcmlmeSgiVGVzdCBPSyIgaW4gb3V0LCAiVGVzdCBmYWlsZWQiKQ0KPiArDQo+ICsgICAg ZGVmIHRlc3RfbWVtem9uZShzZWxmKToNCj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAgIFJ1biBt ZW16b25lIGF1dG90ZXN0Lg0KPiArICAgICAgICAiIiINCj4gKw0KPiArICAgICAgICBzZWxmLmR1 dC5zZW5kX2V4cGVjdCgiLi9hcHAvdGVzdC90ZXN0IC1uIDEgLWMgZmZmZiIsDQo+ICJSLipULipF Lio+Lio+IiwgMTApDQo+ICsgICAgICAgIG91dCA9IHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJtZW16 b25lX2F1dG90ZXN0IiwgIlJURT4+IiwgMTApDQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhw ZWN0KCJxdWl0IiwgIiMgIikNCj4gKyAgICAgICAgc2VsZi52ZXJpZnkoIlRlc3QgT0siIGluIG91 dCwgIlRlc3QgZmFpbGVkIikNCj4gKw0KPiArICAgIGRlZiB0ZXN0X2RlYnVnKHNlbGYpOg0KPiAr ICAgICAgICAiIiINCj4gKyAgICAgICAgUnVuIGRlYnVnIGF1dG90ZXN0Lg0KPiArICAgICAgICAi IiINCj4gKw0KPiArICAgICAgICBzZWxmLmR1dC5zZW5kX2V4cGVjdCgiLi9hcHAvdGVzdC90ZXN0 IC1uIDEgLWMgZmZmZiIsDQo+ICJSLipULipFLio+Lio+IiwgMTApDQo+ICsgICAgICAgIG91dCA9 IHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJkZWJ1Z19hdXRvdGVzdCIsICJSVEU+PiIsIDEwKQ0KPiAr ICAgICAgICBzZWxmLmR1dC5zZW5kX2V4cGVjdCgicXVpdCIsICIjICIpDQo+ICsgICAgICAgIHNl bGYudmVyaWZ5KCJUZXN0IE9LIiBpbiBvdXQsICJUZXN0IGZhaWxlZCIpDQo+ICsNCj4gKyAgICBk ZWYgdGVzdF9mbGFncyhzZWxmKToNCj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAgIFJ1biBlYWwg ZmxhZ3MgYXV0b3Rlc3QuDQo+ICsgICAgICAgICIiIg0KPiArDQo+ICsgICAgICAgIHNlbGYuZHV0 LnNlbmRfZXhwZWN0KCIuL2FwcC90ZXN0L3Rlc3QgLW4gMSAtYyBmZmZmIC1tIDY0IiwNCj4gIlIu KlQuKkUuKj4uKj4iLCAxMCkNCj4gKyAgICAgICAgb3V0ID0gc2VsZi5kdXQuc2VuZF9leHBlY3Qo ImVhbF9mbGFnc19hdXRvdGVzdCIsICJSVEU+PiIsIDQwKQ0KPiArICAgICAgICBzZWxmLmR1dC5z ZW5kX2V4cGVjdCgicXVpdCIsICIjICIpDQo+ICsgICAgICAgIHNlbGYudmVyaWZ5KCJUZXN0IE9L IiBpbiBvdXQsICJUZXN0IGZhaWxlZCIpDQo+ICsNCj4gKyAgICBkZWYgdGVzdF9hbGFybShzZWxm KToNCj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAgIFJ1biBhbGFybSBhdXRvdGVzdC4NCj4gKyAg ICAgICAgIiIiDQo+ICsNCj4gKyAgICAgICAgc2VsZi52ZXJpZnkoc2VsZi5lbnYgPT0gImxpbnV4 YXBwIiwgIkFsYXJtIG9ubHkgc3VwcG9ydGVkIGluDQo+IGxpbnV4IGVudiIpDQo+ICsgICAgICAg IHNlbGYuZHV0LnNlbmRfZXhwZWN0KCIuL2FwcC90ZXN0L3Rlc3QgLW4gMSAtYyBmZmZmIiwNCj4g IlIuKlQuKkUuKj4uKj4iLCAxMCkNCj4gKyAgICAgICAgb3V0ID0gc2VsZi5kdXQuc2VuZF9leHBl Y3QoImFsYXJtX2F1dG90ZXN0IiwgIlJURT4+IiwgNjApDQo+ICsgICAgICAgIHNlbGYuZHV0LnNl bmRfZXhwZWN0KCJxdWl0IiwgIiMgIikNCj4gKyAgICAgICAgc2VsZi52ZXJpZnkoIlRlc3QgT0si IGluIG91dCwgIlRlc3QgZmFpbGVkIikNCj4gKw0KPiArICAgIGRlZiB0ZXN0X2NwdWZsYWdzKHNl bGYpOg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgUnVuIENQVSBmbGFncyBhdXRvdGVzdC4N Cj4gKyAgICAgICAgIiIiDQo+ICsNCj4gKyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBlY3QoIi4v YXBwL3Rlc3QvdGVzdCAtbiAxIC1jIGZmZmYiLA0KPiAiUi4qVC4qRS4qPi4qPiIsIDEwKQ0KPiAr ICAgICAgICBvdXQgPSBzZWxmLmR1dC5zZW5kX2V4cGVjdCgiY3B1ZmxhZ3NfYXV0b3Rlc3QiLCAi UlRFPj4iLCA2MCkNCj4gKyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBlY3QoInF1aXQiLCAiIyAi KQ0KPiArICAgICAgICBzZWxmLnZlcmlmeSgiVGVzdCBPSyIgaW4gb3V0LCAiVGVzdCBmYWlsZWQi KQ0KPiArDQo+ICsgICAgZGVmIHRlc3RfZXJybm8oc2VsZik6DQo+ICsgICAgICAgICIiIg0KPiAr ICAgICAgICBSdW4gZXJybm8gYXV0b3Rlc3QuDQo+ICsgICAgICAgICIiIg0KPiArDQo+ICsgICAg ICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCIuL2FwcC90ZXN0L3Rlc3QgLW4gMSAtYyBmZmZmIiwN Cj4gIlIuKlRFPj58UlQuKkU+PnxSVEUuKj4+fFJURT4uKj4iLCAyMCkNCj4gKyAgICAgICAgb3V0 ID0gc2VsZi5kdXQuc2VuZF9leHBlY3QoImVycm5vX2F1dG90ZXN0IiwgIlJURT4+IiwgNjApDQo+ ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJxdWl0IiwgIiMgIikNCj4gKyAgICAgICAg c2VsZi52ZXJpZnkoIlRlc3QgT0siIGluIG91dCwgIlRlc3QgZmFpbGVkIikNCj4gKw0KPiArICAg IGRlZiB0ZXN0X2ludGVycnVwdHMoc2VsZik6DQo+ICsgICAgICAgICIiIg0KPiArICAgICAgICBS dW4gaW50ZXJydXB0IGF1dG90ZXN0Lg0KPiArICAgICAgICAiIiINCj4gKw0KPiArICAgICAgICBz ZWxmLnZlcmlmeShzZWxmLmVudiA9PSAibGludXhhcHAiLCAiSW50ZXJydXB0IG9ubHkgc3VwcG9y dGVkIGluDQo+IGxpbnV4IGVudiIpDQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCIu L2FwcC90ZXN0L3Rlc3QgLW4gMSAtYyBmZmZmIiwNCj4gIlIuKlRFPj58UlQuKkU+PnxSVEUuKj4+ fFJURT4uKj4iLCAyMCkNCj4gKyAgICAgICAgb3V0ID0gc2VsZi5kdXQuc2VuZF9leHBlY3QoImlu dGVycnVwdF9hdXRvdGVzdCIsICJSVEU+PiIsIDYwKQ0KPiArICAgICAgICBzZWxmLmR1dC5zZW5k X2V4cGVjdCgicXVpdCIsICIjICIpDQo+ICsgICAgICAgIHNlbGYudmVyaWZ5KCJUZXN0IE9LIiBp biBvdXQsICJUZXN0IGZhaWxlZCIpDQo+ICsNCj4gKyAgICBkZWYgdGVzdF9tdWx0aXByb2Nlc3Mo c2VsZik6DQo+ICsgICAgICAgICIiIg0KPiArICAgICAgICBSdW4gbXVsdGlwcm9jZXNzIGF1dG90 ZXN0Lg0KPiArICAgICAgICAiIiINCj4gKw0KPiArICAgICAgICBzZWxmLmR1dC5zZW5kX2V4cGVj dCgiLi9hcHAvdGVzdC90ZXN0IC1uIDEgLWMgZmZmZiAtbSA2NCIsDQo+ICJSLipULipFLio+Lio+ IiwgMTApDQo+ICsgICAgICAgIG91dCA9IHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJtdWx0aXByb2Nl c3NfYXV0b3Rlc3QiLCAiUlRFPj4iLCA2MCkNCj4gKyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBl Y3QoInF1aXQiLCAiIyAiKQ0KPiArICAgICAgICBzZWxmLnZlcmlmeSgiVGVzdCBPSyIgaW4gb3V0 LCAiVGVzdCBmYWlsZWQiKQ0KPiArDQo+ICsgICAgZGVmIHRlc3Rfc3RyaW5nKHNlbGYpOg0KPiAr ICAgICAgICAiIiINCj4gKyAgICAgICAgUnVuIHN0cmluZyBhdXRvdGVzdC4NCj4gKyAgICAgICAg IiIiDQo+ICsNCj4gKyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBlY3QoIi4vYXBwL3Rlc3QvdGVz dCAtbiAxIC1jIGZmZmYiLA0KPiAiUi4qVC4qRS4qPi4qPiIsIDEwKQ0KPiArICAgICAgICBvdXQg PSBzZWxmLmR1dC5zZW5kX2V4cGVjdCgic3RyaW5nX2F1dG90ZXN0IiwgIlJURT4+IiwgNjApDQo+ ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJxdWl0IiwgIiMgIikNCj4gKyAgICAgICAg c2VsZi52ZXJpZnkoIlRlc3QgT0siIGluIG91dCwgIlRlc3QgZmFpbGVkIikNCj4gKw0KPiArICAg IGRlZiB0ZXN0X3RhaWxxKHNlbGYpOg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgUnVuIHRh aWxxIGF1dG90ZXN0Lg0KPiArICAgICAgICAiIiINCj4gKw0KPiArICAgICAgICBzZWxmLmR1dC5z ZW5kX2V4cGVjdCgiLi9hcHAvdGVzdC90ZXN0IC1uIDEgLWMgZmZmZiIsDQo+ICJSLipULipFLio+ Lio+IiwgMTApDQo+ICsgICAgICAgIG91dCA9IHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJ0YWlscV9h dXRvdGVzdCIsICJSVEU+PiIsIDYwKQ0KPiArICAgICAgICBzZWxmLmR1dC5zZW5kX2V4cGVjdCgi cXVpdCIsICIjICIpDQo+ICsgICAgICAgIHNlbGYudmVyaWZ5KCJUZXN0IE9LIiBpbiBvdXQsICJU ZXN0IGZhaWxlZCIpDQo+ICsNCj4gKyAgICBkZWYgdGVzdF9kZXZhcmdzKHNlbGYpOg0KPiArICAg ICAgICAiIiINCj4gKyAgICAgICAgUnVuIGRldmFyZ3MgYXV0b3Rlc3QuDQo+ICsgICAgICAgICIi Ig0KPiArDQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCIuL2FwcC90ZXN0L3Rlc3Qg LW4gMSAtYyBmZmZmIiwNCj4gIlIuKlQuKkUuKj4uKj4iLCAxMCkNCj4gKyAgICAgICAgb3V0ID0g c2VsZi5kdXQuc2VuZF9leHBlY3QoImRldmFyZ3NfYXV0b3Rlc3QiLCAiUlRFPj4iLCA2MCkNCj4g KyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBlY3QoInF1aXQiLCAiIyAiKQ0KPiArICAgICAgICBz ZWxmLnZlcmlmeSgiVGVzdCBPSyIgaW4gb3V0LCAiVGVzdCBmYWlsZWQiKQ0KPiArDQo+ICsgICAg ZGVmIHRlc3Rfa3ZhcmdzKHNlbGYpOg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgUnVuIGt2 YXJncyBhdXRvdGVzdC4NCj4gKyAgICAgICAgIiIiDQo+ICsNCj4gKyAgICAgICAgc2VsZi5kdXQu c2VuZF9leHBlY3QoIi4vYXBwL3Rlc3QvdGVzdCAtbiAxIC1jIGZmZmYiLA0KPiAiUi4qVC4qRS4q Pi4qPiIsIDEwKQ0KPiArICAgICAgICBvdXQgPSBzZWxmLmR1dC5zZW5kX2V4cGVjdCgia3Zhcmdz X2F1dG90ZXN0IiwgIlJURT4+IiwgNjApDQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0 KCJxdWl0IiwgIiMgIikNCj4gKyAgICAgICAgc2VsZi52ZXJpZnkoIlRlc3QgT0siIGluIG91dCwg IlRlc3QgZmFpbGVkIikNCj4gKw0KPiArICAgIGRlZiB0ZXN0X2FjbChzZWxmKToNCj4gKyAgICAg ICAgIiIiDQo+ICsgICAgICAgIFJ1biBhY2wgYXV0b3Rlc3QuDQo+ICsgICAgICAgICIiIg0KPiAr DQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCIuL2FwcC90ZXN0L3Rlc3QgLW4gMSAt YyBmZmZmIiwNCj4gIlIuKlQuKkUuKj4uKj4iLCAxMCkNCj4gKyAgICAgICAgb3V0ID0gc2VsZi5k dXQuc2VuZF9leHBlY3QoImFjbF9hdXRvdGVzdCIsICJSVEU+PiIsIDYwKQ0KPiArICAgICAgICBz ZWxmLmR1dC5zZW5kX2V4cGVjdCgicXVpdCIsICIjICIpDQo+ICsgICAgICAgIHNlbGYudmVyaWZ5 KCJUZXN0IE9LIiBpbiBvdXQsICJUZXN0IGZhaWxlZCIpDQo+ICsNCj4gKyAgICBkZWYgdGVzdF9s aW5rX2JvbmRpbmcoc2VsZik6DQo+ICsgICAgICAgICIiIg0KPiArICAgICAgICBSdW4gYWNsIGF1 dG90ZXN0Lg0KPiArICAgICAgICAiIiINCj4gKw0KPiArICAgICAgICBzZWxmLmR1dC5zZW5kX2V4 cGVjdCgiLi9hcHAvdGVzdC90ZXN0IC1uIDEgLWMgZmZmZiIsDQo+ICJSLipULipFLio+Lio+Iiwg MTApDQo+ICsgICAgICAgIG91dCA9IHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJsaW5rX2JvbmRpbmdf YXV0b3Rlc3QiLCAiUlRFPj4iLCA2MCkNCj4gKyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBlY3Qo InF1aXQiLCAiIyAiKQ0KPiArICAgICAgICBzZWxmLnZlcmlmeSgiVGVzdCBPSyIgaW4gb3V0LCAi VGVzdCBmYWlsZWQiKQ0KPiArDQo+ICsgICAgZGVmIHRlYXJfZG93bihzZWxmKToNCj4gKyAgICAg ICAgIiIiDQo+ICsgICAgICAgIFJ1biBhZnRlciBlYWNoIHRlc3QgY2FzZS4NCj4gKyAgICAgICAg IiIiDQo+ICsgICAgICAgIHBhc3MNCj4gKw0KPiArICAgIGRlZiB0ZWFyX2Rvd25fYWxsKHNlbGYp Og0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgUnVuIGFmdGVyIGVhY2ggdGVzdCBzdWl0ZS4N Cj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAgIHBhc3MNCj4gLS0NCj4gMS43LjQuNA0KDQo=