From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id 30C788995F for ; Wed, 31 Jul 2019 08:15:49 +0000 (UTC) From: "Ser, Simon" Date: Wed, 31 Jul 2019 08:15:45 +0000 Message-ID: References: <20190717180257.32314-1-madhumitha.tolakanahalli.pradeep@intel.com> In-Reply-To: Content-Language: en-US Content-ID: MIME-Version: 1.0 Subject: Re: [igt-dev] [PATCH i-g-t] igt/tests/kms_dp_tiled_display.c : kms test file for display port tiled displays List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: "igt-dev@lists.freedesktop.org" , "Tolakanahalli Pradeep, Madhumitha" Cc: "Navare, Manasi D" , "Latvala, Petri" List-ID: T24gVHVlLCAyMDE5LTA3LTMwIGF0IDE3OjQyIC0wNzAwLCBUb2xha2FuYWhhbGxpIFByYWRlZXAs IE1hZGh1bWl0aGEgd3JvdGU6DQo+IFRoYW5rIHlvdSB2ZXJ5IG11Y2ggZm9yIHlvdXIgY29tbWVu dHMsIFNpbW9uLg0KPiANCj4gVGhhbmtzIGZvciBwb2ludGluZyBvdXQgdGhlIHN0eWxlIHJlYWx0 ZWQgaXNzdWVzLCBJIGhhdmUgdGhlbQ0KPiBmaXhlZCAodGFicywgYFxgIGV0YykuDQo+IA0KPiBP biBUaHUsIDIwMTktMDctMTggYXQgMDc6NDMgKzAxMDAsIFNlciwgU2ltb24gd3JvdGU6DQo+ID4g VGhhbmtzIGZvciB5b3VyIHBhdGNoISBIZXJlIGFyZSBzb21lIGNvbW1lbnRzLg0KPiA+IA0KPiA+ IFN0eWxlOiB3ZSB1c2UgdGFicyBmb3IgaW5kZW50YXRpb24sIG5vdCBzcGFjZXMuDQo+ID4gDQo+ ID4gT24gV2VkLCAyMDE5LTA3LTE3IGF0IDExOjAyIC0wNzAwLCBNYWRodW1pdGhhIFRvbGFrYW5h aGFsbGkgUHJhZGVlcA0KPiA+IHdyb3RlOg0KPiA+ID4gVGhpcyB0ZXN0IHZhbGlkYXRlcyB0aGUg dGlsZWQgRFAgZGlzcGxheXMgdG8gZGlzcGxheSBhIHRlc3QgcGF0dGVybg0KPiA+ID4gc2VhbWxl c3NseQ0KPiA+ID4gYWNyb3NzIHRoZSB0d28gdGlsZXMuIEl0IHZhbGlkYXRlcyB0aGUgdHJhbnNj b2RlciBwb3J0IHN5bmMgZmVhdHVyZQ0KPiA+ID4gb24gaTkxNSB0bw0KPiA+ID4gZ2V0IGEgdGVh cmZyZWUgdGlsZWQgZGlzcGxheSBvdXRwdXQuDQo+ID4gPiANCj4gPiA+IFJlbGF0ZWQga2VybmVs IHdvcmsgcGF0Y2hlcyAtPiANCj4gPiA+IGh0dHBzOi8vcGF0Y2h3b3JrLmZyZWVkZXNrdG9wLm9y Zy9zZXJpZXMvNTk4MzcvI3JldjQuDQo+ID4gPiBUaGlzIHRlc3QgY2FuIGV2ZW50dWFsbHkgYmUg ZXh0ZW5kZWQgdG8gY292ZXIgdGlsZWQgZGlzcGxheSBzdXBwb3J0DQo+ID4gPiBvbiBvdGhlciBj b25uZWN0b3INCj4gPiA+IHR5cGVzLg0KPiA+ID4gDQo+ID4gPiBDYzogTWFuYXNpIE5hdmFyZSA8 bWFuYXNpLmQubmF2YXJlQGludGVsLmNvbT4NCj4gPiA+IENjOiBQZXRyaSBMYXR2YWxhIDxwZXRy aS5sYXR2YWxhQGludGVsLmNvbT4NCj4gPiA+IFNpZ25lZC1vZmYtYnk6IE1hZGh1bWl0aGEgVG9s YWthbmFoYWxsaSBQcmFkZWVwIDwNCj4gPiA+IG1hZGh1bWl0aGEudG9sYWthbmFoYWxsaS5wcmFk ZWVwQGludGVsLmNvbT4NCj4gPiANCj4gPiBOZXh0IHRpbWUsIGNhbiB5b3Ugc2VuZCBib3RoIHBh dGNoZXMgaW4gb25lIGdvPyBJdCdzIG5vdCBwb3NzaWJsZSB0bw0KPiA+IGNoZWNrIHdoZXRoZXIg dGhpcyB0ZXN0IGFjdHVhbGx5IHBhc3NlcyBDSSwgc2luY2UgYnVpbGQgZmFpbHMgKHNlZQ0KPiA+ IHRoZQ0KPiA+IHR3byBhdXRvbWF0ZWQgZmFpbHVyZSByZXBsaWVzKS4NCj4gDQo+IE15IGFwb2xv Z2llcywgSSBzaGFsbCBrZWVwIHRoYXQgaW4gbWluZCBmb3IgdGhlIG5leHQgdGltZS4NCj4gDQo+ ID4gVG8gbGVhcm4gaG93IHRvIHVzZSBnaXQtc2VuZC1lbWFpbCwgeW91IGNhbiByZWFkOg0KPiA+ IGh0dHBzOi8vZ2l0LXNlbmQtZW1haWwuaW8vDQo+ID4gDQo+ID4gPiAtLS0NCj4gPiA+ICB0ZXN0 cy9NYWtlZmlsZS5zb3VyY2VzICAgICAgIHwgICAxICsNCj4gPiA+ICB0ZXN0cy9rbXNfZHBfdGls ZWRfZGlzcGxheS5jIHwgMjM5DQo+ID4gPiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKw0KPiA+ID4gIHRlc3RzL21lc29uLmJ1aWxkICAgICAgICAgICAgfCAgIDEgKw0KPiA+ID4g IDMgZmlsZXMgY2hhbmdlZCwgMjQxIGluc2VydGlvbnMoKykNCj4gPiA+ICBjcmVhdGUgbW9kZSAx MDA2NDQgdGVzdHMva21zX2RwX3RpbGVkX2Rpc3BsYXkuYw0KPiA+ID4gDQo+ID4gPiBkaWZmIC0t Z2l0IGEvdGVzdHMvTWFrZWZpbGUuc291cmNlcyBiL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMNCj4g PiA+IGluZGV4IDI1MGRiZDMzLi5lOTM3Mzk0MSAxMDA2NDQNCj4gPiA+IC0tLSBhL3Rlc3RzL01h a2VmaWxlLnNvdXJjZXMNCj4gPiA+ICsrKyBiL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMNCj4gPiA+ IEBAIC00MCw2ICs0MCw3IEBAIFRFU1RTX3Byb2dzID0gXA0KPiA+ID4gIAlrbXNfY3Vyc29yX2Vk Z2Vfd2FsayBcDQo+ID4gPiAgCWttc19jdXJzb3JfbGVnYWN5IFwNCj4gPiA+ICAJa21zX2RwX2Rz YyBcDQo+ID4gPiArCWttc19kcF90aWxlZF9kaXNwbGF5IFwNCj4gPiA+ICAJa21zX2RyYXdfY3Jj IFwNCj4gPiA+ICAJa21zX2ZiY29uX2ZidCBcDQo+ID4gPiAgCWttc19mZW5jZV9waW5fbGVhayBc DQo+ID4gPiBkaWZmIC0tZ2l0IGEvdGVzdHMva21zX2RwX3RpbGVkX2Rpc3BsYXkuYw0KPiA+ID4g Yi90ZXN0cy9rbXNfZHBfdGlsZWRfZGlzcGxheS5jDQo+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0 NA0KPiA+ID4gaW5kZXggMDAwMDAwMDAuLmFmNjQ0NTczDQo+ID4gPiAtLS0gL2Rldi9udWxsDQo+ ID4gPiArKysgYi90ZXN0cy9rbXNfZHBfdGlsZWRfZGlzcGxheS5jDQo+ID4gPiBAQCAtMCwwICsx LDIzOSBAQA0KPiA+ID4gKy8qDQo+ID4gPiArICogQ29weXJpZ2h0IMKpIDIwMTggSW50ZWwgQ29y cG9yYXRpb24NCj4gPiA+ICsgKg0KPiA+ID4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50 ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uDQo+ID4gPiBvYnRhaW5pbmcgYQ0KPiA+ ID4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9u IGZpbGVzICh0aGUNCj4gPiA+ICJTb2Z0d2FyZSIpLA0KPiA+ID4gKyAqIHRvIGRlYWwgaW4gdGhl IFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0DQo+ID4gPiBs aW1pdGF0aW9uDQo+ID4gPiArICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVy Z2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsDQo+ID4gPiBzdWJsaWNlbnNlLA0KPiA+ID4gKyAqIGFu ZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0 bw0KPiA+ID4gd2hvbSB0aGUNCj4gPiA+ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8g c28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZw0KPiA+ID4gY29uZGl0aW9uczoNCj4gPiA+ICsg Kg0KPiA+ID4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Np b24gbm90aWNlDQo+ID4gPiAoaW5jbHVkaW5nIHRoZSBuZXh0DQo+ID4gPiArICogcGFyYWdyYXBo KSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsDQo+ID4gPiBw b3J0aW9ucyBvZiB0aGUNCj4gPiA+ICsgKiBTb2Z0d2FyZS4NCj4gPiA+ICsgKg0KPiA+ID4gKyAq IFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFO WSBLSU5ELA0KPiA+ID4gRVhQUkVTUyBPUg0KPiA+ID4gKyAqIElNUExJRUQsIElOQ0xVRElORyBC VVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YNCj4gPiA+IE1FUkNIQU5UQUJJTElU WSwNCj4gPiA+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5G UklOR0VNRU5ULiAgSU4gTk8NCj4gPiA+IEVWRU5UIFNIQUxMDQo+ID4gPiArICogVEhFIEFVVEhP UlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sDQo+ID4gPiBE QU1BR0VTIE9SIE9USEVSDQo+ID4gPiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElP TiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsDQo+ID4gPiBBUklTSU5HDQo+ID4gPiAr ICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhF IFVTRSBPUg0KPiA+ID4gT1RIRVIgREVBTElOR1MNCj4gPiA+ICsgKiBJTiBUSEUgU09GVFdBUkUu DQo+ID4gPiArICoNCj4gPiA+ICsgKiBBdXRob3JzOg0KPiA+ID4gKyAqICBNYWRodW1pdGhhIFRv bGFrYW5haGFsbGkgUHJhZGVlcA0KPiA+ID4gKyAqICAgICAgPG1hZGh1bWl0aGEudG9sYWthbmFo YWxsaS5wcmFkZWVwQGludGVsLmNvbT4NCj4gPiA+ICsgKg0KPiA+ID4gKyAqIERpc3BsYXkgUG9y dCBUaWxlZCBEaXNwbGF5IFRlc3QNCj4gPiA+ICsgKiBUaGlzIHRlc3QgcGFyc2VzIHRoZSB0aWxl IGluZm9ybWF0aW9uIG9mIHRoZSBjb25uZWN0b3JzIHRoYXQNCj4gPiA+IGhhdmUgVElMRQ0KPiA+ ID4gKyAqIHByb3BlcnR5IHNldCwgc2V0cyB1cCB0aGUgZnJhbWVidWZmZXIgd2l0aCBjb3JyZWN0 IG9mZnNldHMNCj4gPiA+IGNvcnJlc3BvbmRpbmcgdG8NCj4gPiA+ICsgKiB0aGUgdGlsZSBvZmZz ZXRzIGFuZCBkb2VzIGFuIGF0b21pYyBtb2Rlc2V0IHdpdGggdHdvIENSVENzIGZvcg0KPiA+ID4g dHdvDQo+ID4gPiArICogY29ubmVjdG9ycy4NCj4gPiA+ICsgKg0KPiA+ID4gKyAqIFRoaXMgdGVz dCBjdXJyZW50bHkgc3VwcG9ydHMgb25seSBob3Jpem9udGFsbHkgdGlsZWQgZGlzcGxheXMsDQo+ ID4gPiBpbiBsaW5lIHdpdGgNCj4gPiA+ICsgKiB0aGUgZGlzcGxheXMgc3VwcG9ydGVkIGJ5IHRo ZSBrZXJuZWwgYXQgdGhlIG1vbWVudC4NCj4gPiA+ICsgKi8NCj4gPiA+ICsNCj4gPiA+ICsjaW5j bHVkZSAiZHJtX21vZGUuaCINCj4gPiA+ICsjaW5jbHVkZSAiZHJtX2ZvdXJjYy5oIg0KPiA+ID4g KyNpbmNsdWRlICJpZ3QuaCINCj4gPiA+ICsNCj4gPiA+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ID4g PiArICAgIGludCBkcm1fZmQ7DQo+ID4gPiArICAgIGludCBudW1faF90aWxlczsNCj4gPiA+ICsg ICAgaWd0X2Rpc3BsYXlfdCAqZGlzcGxheTsNCj4gPiA+ICsgICAgZW51bSBpZ3RfY29tbWl0X3N0 eWxlIGNvbW1pdDsNCj4gPiA+ICt9IGRhdGFfdDsNCj4gPiA+ICsNCj4gPiA+ICt0eXBlZGVmIHN0 cnVjdCB7DQo+ID4gPiArICAgIGlndF9vdXRwdXRfdCAqb3V0cHV0Ow0KPiA+ID4gKyAgICBpZ3Rf dGlsZV9pbmZvX3QgKnRpbGU7DQo+ID4gPiArICAgIGlndF9mYl90IGZiX3Rlc3RfcGF0dGVybjsN Cj4gPiA+ICsgICAgZHJtTW9kZUNvbm5lY3RvclB0ciBjb25uZWN0b3I7DQo+ID4gPiArICAgIGVu dW0gcGlwZSBwaXBlOw0KPiA+ID4gKyAgICBlbnVtIGlndF9jb21taXRfc3R5bGUgY29tbWl0Ow0K PiA+ID4gK30gZGF0YV9jb25uZWN0b3JfdDsNCj4gPiA+ICsNCj4gPiA+ICtzdGF0aWMgaW5saW5l IGludCBkcm1fcHJvcGVydHlfaXNfdGlsZShkcm1Nb2RlUHJvcGVydHlQdHIgcHJvcCkNCj4gPiAN Cj4gPiBJIHdvdWxkbid0IHBlcnNvbmFsbHkgdXNlIGBpbmxpbmVgLiBUaGUgY29tcGlsZXIgaXMg c21hcnRlciB0aGFuDQo+ID4gaHVtYW5zDQo+ID4gdG8gZGVjaWRlIHdoZXRoZXIgb3Igbm90IGEg ZnVuY3Rpb24gc2hvdWxkIGJlIGlubGluZWQuDQo+ID4gDQo+IA0KPiBNYWtlcyBzZW5zZSwgSSBz aGFsbCByZW1vdmUgJ2lubGluZScuDQo+IA0KPiA+ID4gK3sNCj4gPiA+ICsJcmV0dXJuKHN0cmNt cChwcm9wLT5uYW1lID8gcHJvcC0+bmFtZSA6ICIiLCAiVElMRSIpPyAwIDogMSk7DQo+ID4gDQo+ ID4gU3R5bGU6IHVubmVjZXNzYXJ5IHBhcmVudGhlc2VzLCBtaXNzaW5nIHNwYWNlIGJlZm9yZSBg P2AuDQo+ID4gDQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gK3N0YXRpYyB2b2lkIGdldF9udW1i ZXJfb2ZfaF90aWxlcyhkYXRhX3QgKmRhdGEpDQo+ID4gDQo+ID4gV2hhdCBpZiBtdWx0aXBsZSB0 aWxlcyBhcmUgY29ubmVjdGVkPyBTaG91bGRuJ3Qgd2UgdXNlIHRpbGVfZ3JvdXBfaWQ/DQo+IA0K PiBDdXJyZW50bHksIHRoZSBoYXJkd2FyZSBkb2VzIG5vdCBzdXBwb3J0IGRpc3BsYXlzIHRoYXQg YXJlIGNvbm5lY3RlZCB0bw0KPiBtdWx0aXBsZSB0aWxlcy4gT25seSBjb25uZWN0b3JzIHdpdGgg dGhlIHNhbWUgdGlsZV9ncm91cF9pZCBhcmUNCj4gc3VwcG9ydGVkIGZvciB0aWxlZCBtb25pdG9y cy4gDQo+IEkgd2FzIHRoaW5raW5nIG9mIGFkZGluZyBhIGNoZWNrIGZvciBtYWtpbmcgc3VyZSBi b3RoIHRoZSBjb25uZWN0ZWQgRFANCj4gY29ubmVjdG9ycyBiZWxvbmcgdG8gdGhlIHNhbWUgdGls ZSBncm91cCBhcyB0aGF0IG1ha2UgdGhlIHRlc3QgbW9yZQ0KPiByb2J1c3QuIEFueSBzdWdnZXN0 aW9ucyBmb3IgdGhlIHNhbWU/DQoNClllcy4gKFNlZSBNYW5hc2kncyByZXBseSkNCg0KPiA+IA0K PiA+ID4gK3sNCj4gPiA+ICsgICAgaW50IGk7DQo+ID4gPiArICAgIGRybU1vZGVSZXMgKnJlczsN Cj4gPiA+ICsgICAgZHJtTW9kZUNvbm5lY3RvciAqY29ubmVjdG9yOw0KPiA+ID4gKyAgICBkcm1N b2RlUHJvcGVydHlQdHIgcHJvcDsNCj4gPiA+ICsgICAgZHJtTW9kZVByb3BlcnR5QmxvYlB0ciBi bG9iOw0KPiA+ID4gKyAgICBpZ3RfdGlsZV9pbmZvX3QgdGlsZTsNCj4gPiA+ICsNCj4gPiA+ICsg ICAgaWd0X3JlcXVpcmUocmVzID0gZHJtTW9kZUdldFJlc291cmNlcyhkYXRhLT5kcm1fZmQpKTsN Cj4gPiANCj4gPiBUaGlzIHNob3VsZCBwcm9iYWJseSBiZSBpZ3RfYXNzZXJ0Lg0KPiANCj4gWWVz LCBtYWtlcyBzZW5zZS4gSSBzaGFsbCB1cGRhdGUgaXQgZm9yIHJldjIuDQo+IA0KPiA+ID4gKyAg ICBmb3IoaSA9IDA7IGkgPCByZXMtPmNvdW50X2Nvbm5lY3RvcnM7IGkrKykNCj4gPiA+ICsgICAg ew0KPiA+IA0KPiA+IFN0eWxlOiBubyBuZXdsaW5lIGJlZm9yZSBge2AgKG9ubHkgZm9yIGZ1bmN0 aW9ucywgYXBwbGllcyB0byB0aGUNCj4gPiB3aG9sZQ0KPiA+IHBhdGNoKS4NCj4gPiANCj4gPiA+ ICsgICAgICAgIGNvbm5lY3RvciA9IGRybU1vZGVHZXRDb25uZWN0b3JDdXJyZW50KGRhdGEtPmRy bV9mZCwgXA0KPiA+IA0KPiA+IFN0eWxlOiB1bm5lY2Vzc2FyeSBgXGAuDQo+ID4gDQo+ID4gV2Ug Y291bGQgaWd0X2Fzc2VydChjb25uZWN0b3IpLg0KPiANCj4gWWVzLCBtYWtlcyBzZW5zZS4gSSBz aGFsbCB1cGRhdGUgaXQgZm9yIHJldjIuDQo+IA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzLQ0KPiA+ID4gPiBjb25uZWN0b3JzW2ldKTsN Cj4gPiA+ICsNCj4gPiA+ICsgICAgICAgIGlmKCEoKGNvbm5lY3Rvci0+Y29ubmVjdGlvbiA9PSBE Uk1fTU9ERV9DT05ORUNURUQpICYmDQo+ID4gPiArICAgICAgICAgICAgKGNvbm5lY3Rvci0+Y29u bmVjdG9yX3R5cGUgPT0NCj4gPiA+IERSTV9NT0RFX0NPTk5FQ1RPUl9EaXNwbGF5UG9ydCkpKQ0K PiA+ID4gKyAgICAgICAgICAgICAgICBjb250aW51ZTsNCj4gPiANCj4gPiBTdHlsZTogd2UgY2Fu IGludmVydCB0aGlzIGNvbmRpdGlvbiB0byBtYWtlIGNsZWFyZXIuDQo+IA0KPiBUaGlzIHdhcyBk b25lIHRvIHJlZHVjZSBuZXN0aW5nLiBXb3VsZCB5b3Ugc3VnZ2VzdCB3ZSBkbyBvdGhlcndpc2U/ DQoNCihTZWUgbXkgcmVwbHkgdG8gTWFuYXNpKQ0KDQo+ID4gPiArDQo+ID4gPiArICAgICAgICBm b3IoaSA9IDA7IGkgPCBjb25uZWN0b3ItPmNvdW50X3Byb3BzOyBpKyspDQo+ID4gPiArICAgICAg ICB7DQo+ID4gPiArICAgICAgICAgICAgcHJvcCA9IGRybU1vZGVHZXRQcm9wZXJ0eShkYXRhLT5k cm1fZmQsIGNvbm5lY3Rvci0NCj4gPiA+ID4gcHJvcHNbaV0pOw0KPiA+IA0KPiA+IFdlIGNvdWxk IGlndF9hc3NlcnQocHJvcCkNCj4gDQo+IFllcywgbWFrZXMgc2Vuc2UuIEkgc2hhbGwgdXBkYXRl IGl0IGZvciByZXYyLg0KPiANCj4gPiBXZSBuZWVkIHRvIGZyZWUgaXQgYXQgc29tZSBwb2ludC4N Cj4gDQo+ICdwcm9wJyBpcyBhIGxvY2FsIHBvaW50ZXIgdGhhdCBpc250IGR5bmFtaWNhbGx5IGFs bG9jYXRlZC4gTm90IHRvbyBzdXJlDQo+IHdoeSB0aGF0IHdvdWxkIG5lZWQgZnJlZS1pbmcuIENv dWxkIHlvdSBwbGVhc2UgcHJvdmlkZSBtb3JlIGNsYXJpdHkgb24NCj4gdGhlIGFib3ZlIGNvbW1l bnQ/DQoNCmRybU1vZGVHZXRQcm9wZXJ0eSBhbGxvY2F0ZXMgb24gdGhlIGhlYXAuDQoNCjxyYW50 Pg0KVGhpcyBpcyBzb21laG93IGhpZGRlbiBiZWNhdXNlIGxpYmRybSBoYWQgdGhlIGJyaWxsaWFu dCBpZGVhIHRvDQppbnRyb2R1Y2UgZHJtTW9kZVByb3BlcnR5UHRyLCB3aGljaCBpcyBhIHR5cGUg ZGVmaW5pdGlvbiBmb3INCmRybU1vZGVQcm9wZXJ0eVJlcyAqLiBJIHJlYWxseSBkb24ndCBnZXQg d2hhdCdzIHRoZSBwb2ludCBvZg0KZHJtTW9kZVByb3BlcnR5UHRyLiBJdHMgb25seSBwdXJwb3Nl IHNlZW1zIHRvIGNvbmZ1c2UgcGVvcGxlLg0KZHJtTW9kZVByb3BlcnR5UmVzICogaXMgbXVjaCBj bGVhcmVyIHNpbmNlIHdlIGRvbid0IGhhdmUgdG8gbGVhcm4gYWJvdXQNCmEgbGliZHJtLXNwZWNp ZmljIHVuaWRpb21hdGljIG5hbWluZyBjb252ZW50aW9uIHRvIGtub3cgaXQncyBhIHBvaW50ZXIu DQpJdCdzIGNsZWFyIGEgZnVuY3Rpb24gcmV0dXJuaW5nIHRoaW5nICogYWxsb2NhdGVzIHNvbWV0 aGluZyB0aGF0IG5lZWRzDQp0byBiZSBmcmVlJ2QsIGl0J3Mgbm90IGNsZWFyIGlmIHRoZSBmdW5j dGlvbiByZXR1cm5zIG90aGVyVGhpbmcuDQpQZXJzb25hbGx5IEkganVzdCBpZ25vcmUgbGliZHJt IHdlaXJkIGRlZmluaXRpb25zIGFuZCBqdXN0IHVzZQ0KZHJtTW9kZVByb3BlcnR5UmVzICouDQo8 L3JhbnQ+DQoNCkFueXdheSwgZHJtTW9kZUZyZWVQcm9wZXJ0eSB3aWxsIGZyZWUgcHJvcC4NCg0K PiA+ID4gKyAgICAgICAgICAgIGlmKCEoZHJtX3Byb3BlcnR5X2lzX3RpbGUocHJvcCkgJiYNCj4g PiANCj4gPiBTdHlsZTogbWlzc2luZyBzcGFjZSBhZnRlciBpZiBrZXl3b3JkIChhcHBsaWVzIHRv IHRoZSB3aG9sZSBwYXRjaCkuDQo+ID4gDQo+ID4gPiArICAgICAgICAgICAgICAgIGRybV9wcm9w ZXJ0eV90eXBlX2lzKHByb3AsIERSTV9NT0RFX1BST1BfQkxPQikpKQ0KPiA+IA0KPiA+IEknZCBt b3ZlIHRoaXMgY2hlY2sgaW50byBkcm1fcHJvcGVydHlfaXNfdGlsZS4NCj4gDQo+IFllcywgbWFr ZXMgc2Vuc2UuIEkgc2hhbGwgdXBkYXRlIGl0IGZvciByZXYyLg0KPiANCj4gPiA+ICsgICAgICAg ICAgICAgICAgY29udGludWU7DQo+ID4gPiArDQo+ID4gPiArICAgICAgICAgICAgYmxvYiA9IGRy bU1vZGVHZXRQcm9wZXJ0eUJsb2IoZGF0YS0+ZHJtX2ZkLCBcDQo+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdG9yLQ0KPiA+ID4gPiBwcm9wX3Zh bHVlc1tpXSk7DQo+ID4gPiArDQo+ID4gPiArICAgICAgICAgICAgaWYoIWJsb2IpDQo+ID4gPiAr ICAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ID4gKyAgICAgICAgICAgIGlndF9wYXJzZV9jb25u ZWN0b3JfdGlsZV9ibG9iKGJsb2IsICZ0aWxlKTsNCj4gPiA+ICsgICAgICAgICAgICBkYXRhLT5u dW1faF90aWxlcyA9IHRpbGUubnVtX2hfdGlsZTsNCj4gPiA+ICsgICAgICAgICAgICBicmVhazsN Cj4gPiA+ICsgICAgICAgIH0NCj4gPiA+ICsgICAgfQ0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ ICtzdGF0aWMgaW50IHNldF90ZXN0X3BhdHRlcm5fZmIoZGF0YV90ICpkYXRhLCBkYXRhX2Nvbm5l Y3Rvcl90DQo+ID4gPiAqY29ubl9kYXRhKQ0KPiA+ID4gK3sNCj4gPiA+ICsgICAgaW50IGk7DQo+ ID4gPiArICAgIGludCBjb3VudCA9IDA7DQo+ID4gPiArICAgIGJvb2wgaXNfdGlsZSA9IGZhbHNl Ow0KPiA+ID4gKyAgICBlbnVtIHBpcGUgcGlwZTsNCj4gPiA+ICsgICAgaWd0X3RpbGVfaW5mb190 IHRpbGU7DQo+ID4gPiArICAgIGlndF9vdXRwdXRfdCAqb3V0cHV0Ow0KPiA+ID4gKyAgICBpZ3Rf cGxhbmVfdCAqcHJpbWFyeTsNCj4gPiA+ICsgICAgZHJtTW9kZVByb3BlcnR5UHRyIHByb3A7DQo+ ID4gPiArICAgIGRybU1vZGVQcm9wZXJ0eUJsb2JQdHIgYmxvYjsNCj4gPiA+ICsNCj4gPiA+ICsg ICAgZm9yX2VhY2hfY29ubmVjdGVkX291dHB1dChkYXRhLT5kaXNwbGF5LCBvdXRwdXQpDQo+ID4g PiArICAgIHsNCj4gPiA+ICsgICAgICAgIGlzX3RpbGUgPSBmYWxzZTsNCj4gPiA+ICsNCj4gPiA+ ICsgICAgICAgIGNvbm5fZGF0YVtjb3VudF0uY29ubmVjdG9yID0gZHJtTW9kZUdldENvbm5lY3Rv cihkYXRhLQ0KPiA+ID4gPiBkaXNwbGF5LT5kcm1fZmQsIFwNCj4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQtDQo+ID4g PiA+IGlkKTsNCj4gPiA+ICsNCj4gPiA+ICsgICAgICAgIGlmKCEoY29ubl9kYXRhW2NvdW50XS5j b25uZWN0b3ItPmNvbm5lY3Rvcl90eXBlID09DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgRFJNX01PREVfQ09OTkVDVE9SX0Rpc3BsYXlQb3J0KSkNCj4gPiA+ICsgICAgICAgICAgICBj b250aW51ZTsNCj4gPiA+ICsNCj4gPiA+ICsgICAgICAgIC8qIFBhcnNlIHRocm91Z2ggZWFjaCBj b25uZWN0b3IgcHJvcGVydHkgKi8NCj4gPiA+ICsgICAgICAgIGZvcihpID0gMDsgaSA8IGNvbm5f ZGF0YVtjb3VudF0uY29ubmVjdG9yLT5jb3VudF9wcm9wczsNCj4gPiA+IGkrKykNCj4gPiA+ICsg ICAgICAgIHsNCj4gPiA+ICsgICAgICAgICAgICBwcm9wID0gZHJtTW9kZUdldFByb3BlcnR5KGRh dGEtPmRpc3BsYXktPmRybV9mZCwgXA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29ubl9kYXRhW2NvdW50XS5jb25uZWN0b3ItDQo+ID4gPiA+IHByb3BzW2ld KTsNCj4gPiA+ICsNCj4gPiA+ICsgICAgICAgICAgICBpZighKChkcm1fcHJvcGVydHlfaXNfdGls ZShwcm9wKSAmJg0KPiA+ID4gKyAgICAgICAgICAgICAgICBkcm1fcHJvcGVydHlfdHlwZV9pcyhw cm9wLCBEUk1fTU9ERV9QUk9QX0JMT0IpKSkpDQo+ID4gPiArICAgICAgICAgICAgICAgIGNvbnRp bnVlOw0KPiA+ID4gKw0KPiA+ID4gKyAgICAgICAgICAgIGJsb2IgPSBkcm1Nb2RlR2V0UHJvcGVy dHlCbG9iKGRhdGEtPmRpc3BsYXktPmRybV9mZCwgXA0KPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25uX2RhdGFbY291bnRdLmNvbm5lY3Rvci0NCj4gPiA+ID4gcHJvcF92YWx1 ZXNbaV0pOw0KPiA+ID4gKw0KPiA+ID4gKyAgICAgICAgICAgIGlmKCFibG9iKQ0KPiA+ID4gKyAg ICAgICAgICAgICAgICBicmVhazsNCj4gPiA+ICsNCj4gPiA+ICsgICAgICAgICAgICBpZ3RfcGFy c2VfY29ubmVjdG9yX3RpbGVfYmxvYihibG9iLCAmdGlsZSk7DQo+ID4gPiArICAgICAgICAgICAg Y29ubl9kYXRhW2NvdW50XS50aWxlID0gJnRpbGU7DQo+ID4gPiArICAgICAgICAgICAgaXNfdGls ZSA9IHRydWU7DQo+ID4gPiArICAgICAgICAgICAgYnJlYWs7DQo+ID4gPiArICAgICAgICB9DQo+ ID4gDQo+ID4gSSBmZWVsIGxpa2UgdGhpcyB3aG9sZSBibG9jayBhYm92ZSBpcyBkdXBsaWNhdGVk LiBDb3VsZCBiZSBleHRyYWN0ZWQNCj4gPiBpbnRvIGEgZnVuY3Rpb24sIGUuZy4NCj4gDQo+IEkg d2FzIGNvbnRlbXBsYXRpbmcgb24gdGhhdCB0b28sIHNoYWxsIGRvIGl0IGZvciByZXYyLg0KPiAN Cj4gPiAgICAgYm9vbCBjb25uZWN0b3JfZ2V0X3RpbGUoZHJtTW9kZUNvbm5lY3RvclJlcyAqY29u biwNCj4gPiBpZ3RfdGlsZV9pbmZvX3QgKnRpbGVfaW5mbykNCj4gPiANCj4gPiA+ICsgICAgICAg IGlmKCFpc190aWxlKQ0KPiA+ID4gKyAgICAgICAgICAgIGNvbnRpbnVlOw0KPiA+ID4gKw0KPiA+ ID4gKyAgICAgICAgb3V0cHV0ID0gaWd0X291dHB1dF9mcm9tX2Nvbm5lY3RvcihkYXRhLT5kaXNw bGF5LCBcDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbm5fZGF0YVtjb3VudF0uY29ubmVjDQo+ID4gPiB0b3IpOw0KPiA+IA0KPiA+IFN0eWxlOiB1 bm5lY2Vzc2FyeSBgXGAuIEFwcGxpZXMgdG8gdGhlIHdob2xlIHBhdGNoLg0KPiA+IA0KPiA+ID4g Kw0KPiA+ID4gKyAgICAgICAgZm9yX2VhY2hfcGlwZShkYXRhLT5kaXNwbGF5LCBwaXBlKQ0KPiA+ ID4gKyAgICAgICAgew0KPiA+ID4gKyAgICAgICAgICAgIGlndF9kZWJ1ZygiQ3VycmVudCBQSVBF IGlzICVkXG4iLCBwaXBlKTsNCj4gPiA+ICsNCj4gPiA+ICsgICAgICAgICAgICBpZigoY291bnQg PiAwKSAmJiAocGlwZSA9PSBjb25uX2RhdGFbY291bnQtMV0ucGlwZSkpDQo+ID4gPiArICAgICAg ICAgICAgICAgIGNvbnRpbnVlOw0KPiA+IA0KPiA+IFN0eWxlOiB1bm5lY2Vzc2FyeSBwYXJlbnRo ZXNlcy4NCj4gPiANCj4gPiA+ICsgICAgICAgICAgICBpZihpZ3RfcGlwZV9jb25uZWN0b3JfdmFs aWQocGlwZSwgb3V0cHV0KSkgew0KPiA+ID4gKyAgICAgICAgICAgICAgICBjb25uX2RhdGFbY291 bnRdLnBpcGUgPSBwaXBlOw0KPiA+ID4gKyAgICAgICAgICAgICAgICBjb25uX2RhdGFbY291bnRd Lm91dHB1dCA9IG91dHB1dDsNCj4gPiA+ICsNCj4gPiA+ICsgICAgICAgICAgICAgICAgaWd0X291 dHB1dF9zZXRfcGlwZShjb25uX2RhdGFbY291bnRdLm91dHB1dCwgXA0KPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5fZGF0YVtjb3VudF0ucGlwZSk7DQo+ID4g PiArDQo+ID4gPiArICAgICAgICAgICAgICAgIGlndF9jcmVhdGVfcGF0dGVybl9mYihkYXRhLT5k cm1fZmQsXA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25u X2RhdGFbY291bnRdLnRpbGUtDQo+ID4gPiA+IHRpbGVfaF9zaXplICpcDQo+ID4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtPm51bV9oX3RpbGVzKSxcDQo+ID4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5fZGF0YVtjb3VudF0u dGlsZS0NCj4gPiA+ID4gdGlsZV92X3NpemUsXA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBEUk1fRk9STUFUX1hCR1I4ODg4LFwNCj4gPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgTE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9ORSxcDQo+ ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb25uX2RhdGFbY291 bnRdLmZiX3Rlc3RfcGF0DQo+ID4gPiB0ZXJuKTsNCj4gPiA+ICsNCj4gPiA+ICsgICAgICAgICAg ICAgICAgcHJpbWFyeSA9DQo+ID4gPiBpZ3Rfb3V0cHV0X2dldF9wbGFuZV90eXBlKGNvbm5fZGF0 YVtjb3VudF0ub3V0cHV0LFwNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgRFJNX1BMQU5FX1RZUEUNCj4gPiA+IF9QUklNQVJZKTsNCj4g PiA+ICsNCj4gPiA+ICsgICAgICAgICAgICAgICAgaWd0X3BsYW5lX3NldF9mYihwcmltYXJ5LA0K PiA+ID4gJmNvbm5fZGF0YVtjb3VudF0uZmJfdGVzdF9wYXR0ZXJuKTsNCj4gPiA+ICsNCj4gPiA+ ICsgICAgICAgICAgICAgICAgaWd0X2ZiX3NldF9zaXplKCZjb25uX2RhdGFbY291bnRdLmZiX3Rl c3RfcGF0dGVybiwNCj4gPiA+IHByaW1hcnksXA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29ubl9kYXRhW2NvdW50XS50aWxlLQ0KPiA+ID4gPiB0aWxlX2hfc2l6ZSxc DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uX2RhdGFbY291bnRd LnRpbGUtDQo+ID4gPiA+IHRpbGVfdl9zaXplKTsNCj4gPiA+ICsNCj4gPiA+ICsgICAgICAgICAg ICAgICAgaWd0X2ZiX3NldF9wb3NpdGlvbigmY29ubl9kYXRhW2NvdW50XS5mYl90ZXN0X3BhdHQN Cj4gPiA+IGVybiwgXA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHByaW1hcnksXA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChj b25uX2RhdGFbY291bnRdLnRpbGUtDQo+ID4gPiA+IHRpbGVfaF9zaXplICpcDQo+ID4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubl9kYXRhW2NvdW50XS50aWxlLQ0K PiA+ID4gPiB0aWxlX2hfbG9jKSwNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoY29ubl9kYXRhW2NvdW50XS50aWxlLQ0KPiA+ID4gPiB0aWxlX3Zfc2l6ZSAqXA0K PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5fZGF0YVtjb3Vu dF0udGlsZS0NCj4gPiA+ID4gdGlsZV92X2xvYykpOw0KPiA+ID4gKw0KPiA+ID4gKyAgICAgICAg ICAgICAgICBpZ3RfcGxhbmVfc2V0X3NpemUocHJpbWFyeSxcDQo+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25uX2RhdGFbY291bnRdLnRpbGUtDQo+ID4gPiA+IHRp bGVfaF9zaXplLFwNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bm5fZGF0YVtjb3VudF0udGlsZS0NCj4gPiA+ID4gdGlsZV92X3NpemUpOw0KPiA+ID4gKw0KPiA+ ID4gKyAgICAgICAgICAgICAgICBicmVhazsNCj4gPiA+ICsgICAgICAgICAgICB9DQo+ID4gPiAr ICAgICAgICB9DQo+ID4gPiArICAgICAgICBjb3VudCsrOw0KPiA+ID4gKyAgICB9DQo+ID4gPiAr DQo+ID4gPiArICAgIHJldHVybiBjb3VudDsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiAraWd0 X21haW4NCj4gPiA+ICt7DQo+ID4gPiArICAgIGlndF9kaXNwbGF5X3QgZGlzcGxheTsNCj4gPiA+ ICsgICAgZGF0YV90IGRhdGEgPSB7fTsNCj4gPiA+ICsgICAgZGF0YV9jb25uZWN0b3JfdCAqY29u bl9kYXRhOw0KPiA+ID4gKw0KPiA+ID4gKyAgICBpZ3RfZml4dHVyZSB7DQo+ID4gPiArICAgICAg ICBkYXRhLmRybV9mZCA9IGRybV9vcGVuX2RyaXZlcl9tYXN0ZXIoRFJJVkVSX0FOWSk7DQo+ID4g PiArICAgICAgICBrbXN0ZXN0X3NldF92dF9ncmFwaGljc19tb2RlKCk7DQo+ID4gPiArICAgICAg ICBpZ3RfZGlzcGxheV9yZXF1aXJlKCZkaXNwbGF5LCBkYXRhLmRybV9mZCk7DQo+ID4gPiArICAg ICAgICBkYXRhLmRpc3BsYXkgPSAmZGlzcGxheTsNCj4gPiA+ICsNCj4gPiA+ICsgICAgICAgIGdl dF9udW1iZXJfb2ZfaF90aWxlcygmZGF0YSk7DQo+ID4gPiArICAgICAgICBpZ3RfZGVidWcoIk51 bWJlciBvZiBIb3Jpem9udGFsIFRpbGVzOiAlZFxuIiwNCj4gPiA+IGRhdGEubnVtX2hfdGlsZXMp Ow0KPiA+ID4gKyAgICAgICAgZGF0YS5jb21taXQgPSBkYXRhLmRpc3BsYXktPmlzX2F0b21pYyA/ IENPTU1JVF9BVE9NSUMgOg0KPiA+ID4gQ09NTUlUX0xFR0FDWTsNCj4gPiA+ICsgICAgfQ0KPiA+ ID4gKw0KPiA+ID4gKyAgICBpZihkYXRhLm51bV9oX3RpbGVzID4gMCkNCj4gPiA+ICsgICAgICAg IGNvbm5fZGF0YSA9IChkYXRhX2Nvbm5lY3Rvcl90ICopbWFsbG9jKGRhdGEubnVtX2hfdGlsZXMg Kg0KPiA+ID4gXA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNpemVvZihkYXRhX2Nvbm5lYw0KPiA+ID4gdG9yX3QpKTsNCj4gPiANCj4gPiBO byBuZWVkIGZvciB0aGlzIGNhc3QsIHVubmVjZXNzYXJ5IGBcYC4NCj4gPiANCj4gPiA+ICsgICAg aWd0X2Fzc2VydChjb25uX2RhdGEpOw0KPiA+IA0KPiA+IFRoaXMgY2hlY2sgcmVhZHMgZ2FyYmFn ZSBmcm9tIHRoZSBzdGFjayBpZiBkYXRhLm51bV9oX3RpbGVzID09IDAuDQo+IA0KPiBJIG1vdmVk IHRoZSBhc3NlcnQgdG8gaWd0X3N1YnRlc3QgYmxvY2sgYWZ0ZXIgaWd0X3NraXBfb24gc28gdGhh dCBpZg0KPiBkYXRhLm51bV9oX3RpbGVzID09IDAsIGFzc2VydCB3b3VsZCBub3QgYmUgcGVyZm9y bWVkLg0KPiANCj4gPiA+ICsgICAgaWd0X3N1YnRlc3RfZigiYmFzaWMtdGVzdC1wYXR0ZXJuIikg ew0KPiA+IA0KPiA+IE5vIG5lZWQgZm9yIHRoZSBfZiBzdWZmaXguDQo+IA0KPiBZZXMsIG1ha2Vz IHNlbnNlLiBJIHNoYWxsIHVwZGF0ZSBpdCBmb3IgcmV2Mi4NCj4gDQo+ID4gVGhpcyBzdWJ0ZXN0 IGlzIG1pc3NpbmcgYSBkZXNjcmlwdGlvbi4gQ291bGQgeW91IGFkZCBvbmU/IEZvciBtb3JlDQo+ ID4gaW5mb3JtYXRpb24sIHNlZToNCj4gPiANCj4gaHR0cHM6Ly9kcm0ucGFnZXMuZnJlZWRlc2t0 b3Aub3JnL2lndC1ncHUtdG9vbHMvaWd0LWdwdS10b29scy1Db3JlLmh0bWwjaWd0LWRlc2NyaWJl DQo+IA0KPiBJIHNoYWxsIGFkZCBhIGRlc2NyaXB0aW9uLg0KPiANCj4gDQo+ID4gPiArICAgICAg ICBpZ3Rfc2tpcF9vbighZGF0YS5udW1faF90aWxlcyk7DQo+ID4gPiArICAgICAgICBzZXRfdGVz dF9wYXR0ZXJuX2ZiKCZkYXRhLCBjb25uX2RhdGEpOw0KPiA+ID4gKyAgICAgICAgaWd0X2Rpc3Bs YXlfY29tbWl0MihkYXRhLmRpc3BsYXksIGRhdGEuY29tbWl0KTsNCj4gPiANCj4gPiBJJ20gbm90 IHN1cmUgSSB1bmRlcnN0YW5kIHdoYXQgdGhpcyB0ZXN0IGNoZWNrcy4gSXQgZG9lcyBhIGNvbW1p dCBvbg0KPiA+IGFsbCB0aWxlZCBjb25uZWN0b3JzLCBidXQgZG9lc24ndCBjaGVjayBhbnl0aGlu ZyBhZnRlcndhcmRzLiBNYXliZSBpdA0KPiA+IHNob3VsZCBjaGVjayB0aGUgcGFnZWZsaXAgc2Vy aWFsIGFuZCB0aW1pbmdzPw0KPiANCj4gVGhpcyB0ZXN0IHdhcyBtZWFudCB0byBtYWtlIHN1cmUg dGhlIHRyYW5zY29kZXIgcG9ydCBzeW5jIGZlYXR1cmUgd2FzDQo+IHdvcmtpbmcgd2l0aG91dCBh bnkgb2Zmc2V0cyBpbiB0aGUgdHdvIHRpbGVzIG9mIHRoZSBkaXNwbGF5LiBBbnkNCj4gc3VnZ2Vz dGlvbnMvcmVzb3VyY2VzIGZvciBob3cgdG8gdGVzdCBwYWdlZmxpcHM/DQoNCihTZWUgdGhlIGRp c2N1c3Npb24gd2l0aCBNYW5hc2kpDQoNCj4gPiA+ICsgICAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAg ICBpZ3RfZml4dHVyZSB7DQo+ID4gPiArICAgICAgICBpZihkYXRhLm51bV9oX3RpbGVzID4gMCkN Cj4gPiA+ICsgICAgICAgICAgICBmcmVlKGNvbm5fZGF0YSk7DQo+ID4gDQo+ID4gSWYgY29ubl9k YXRhIHdhcyBpbml0aWFsaXplZCB0byBOVUxMLCBubyBuZWVkIGZvciB0aGUgY2hlY2ssIGJlY2F1 c2UNCj4gPiBmcmVlKE5VTEwpIGlzIGEgbm8tb3AuDQo+IA0KPiBZZXMsIG1ha2VzIHNlbnNlLiBJ IHNoYWxsIHVwZGF0ZSBpdCBmb3IgcmV2Mi4NCj4gDQo+ID4gPiArICAgICAgICBrbXN0ZXN0X3Jl c3RvcmVfdnRfbW9kZSgpOw0KPiA+ID4gKyAgICAgICAgaWd0X2Rpc3BsYXlfZmluaShkYXRhLmRp c3BsYXkpOw0KPiA+ID4gKyAgICB9DQo+ID4gPiArfQ0KPiA+ID4gZGlmZiAtLWdpdCBhL3Rlc3Rz L21lc29uLmJ1aWxkIGIvdGVzdHMvbWVzb24uYnVpbGQNCj4gPiA+IGluZGV4IDM0YTc0MDI1Li42 YTZlOWNlOSAxMDA2NDQNCj4gPiA+IC0tLSBhL3Rlc3RzL21lc29uLmJ1aWxkDQo+ID4gPiArKysg Yi90ZXN0cy9tZXNvbi5idWlsZA0KPiA+ID4gQEAgLTI1LDYgKzI1LDcgQEAgdGVzdF9wcm9ncyA9 IFsNCj4gPiA+ICAJJ2ttc19jdXJzb3JfZWRnZV93YWxrJywNCj4gPiA+ICAJJ2ttc19jdXJzb3Jf bGVnYWN5JywNCj4gPiA+ICAJJ2ttc19kcF9kc2MnLA0KPiA+ID4gKwkna21zX2RwX3RpbGVkX2Rp c3BsYXknLA0KPiA+ID4gIAkna21zX2RyYXdfY3JjJywNCj4gPiA+ICAJJ2ttc19mYmNvbl9mYnQn LA0KPiA+ID4gIAkna21zX2ZlbmNlX3Bpbl9sZWFrJywNCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaWd0LWRldg==