From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id 357E66E2CF for ; Fri, 16 Aug 2019 10:07:59 +0000 (UTC) From: "Ser, Simon" Date: Fri, 16 Aug 2019 10:07:56 +0000 Message-ID: <03468d86c479d38c77fc3e119b97098618bc86bd.camel@intel.com> References: <20190712141618.7110-1-oleg.vasilev@intel.com> <20190712141618.7110-2-oleg.vasilev@intel.com> In-Reply-To: <20190712141618.7110-2-oleg.vasilev@intel.com> Content-Language: en-US Content-ID: <2FD95774FCE1584B8D0CB98BA719DFE2@intel.com> MIME-Version: 1.0 Subject: Re: [igt-dev] [PATCH 2/2] tests/prime_generic: add vendor-agnostic prime tests 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: "Vasilev, Oleg" , "igt-dev@lists.freedesktop.org" Cc: "daniel@ffwll.ch" List-ID: SGksDQoNCk92ZXJhbGwgdGhpcyBsb29rcyBnb29kLiBIZXJlIGFyZSBhIGZldyBjb21tZW50cy4N Cg0KSSBhZ3JlZSB3aXRoIENocmlzIGFuZCBEYW5pZWwgcmVnYXJkaW5nIG5hbWluZy4NCg0KT24g RnJpLCAyMDE5LTA3LTEyIGF0IDE3OjE2ICswMzAwLCBPbGVnIFZhc2lsZXYgd3JvdGU6DQo+IEN1 cnJlbnQsIHdlIGhhdmUgZGlmZmVyZW50IHNldHMgb2YgcHJpbWUgdGVzdHM6DQo+ICAtIHZnZW0r aTkxNQ0KPiAgLSBhbWRncHUraTkxNQ0KPiAgLSBub3V2ZWF1K2k5MTUNCj4gDQo+IFRob3NlIHRl c3RzIHVzZSB2ZW5kb3Itc3BlY2lmaWMgaW9jdGxzLCB0aGVyZWZvcmUsIG5vdCBpbnRlcmNoYW5n ZWFibGUuDQo+IFRoZSBpZGVhIGlzIHRvIGNyZWF0ZSBhIHNldCBvZiB0ZXN0cyB3aGljaCBhcmUg ZXhwZWN0ZWQgdG8gd29yayBvbiBhbnkNCj4gcHJpbWUtY29tcGF0aWJsZSBkcml2ZXIuIEl0IGNh biBiZSBydW4gd2l0aCBhbnkgY29tYmluYXRpb24gb2YNCj4gZXhwb3J0ZXIraW1wb3J0ZXIsIHdo aWxlIHRob3NlIGRldmljZXMgaGF2ZSByZXNwZWN0aXZlIHByaW1lDQo+IGNhcGFiaWxpdGllcy4N Cj4gDQo+IFNpbmNlIHZnZW0gY2FuIGJlIHVzZWQgYXMgYm90aCBleHBvcnRlciBhbmQgaW1wb3J0 ZXIsIGFuZCB0aGVyZSBhcmVuJ3QNCj4gYW55IGdlbmVyaWMga21zIGZlYXR1cmVzIHdoaWNoIHZn ZW0gZG9lc24ndCBzdXBwb3J0LCBpdCBpcyBzdWZmaWNpZW50DQo+IHRvIHRlc3QgRFJJVkVSX0FO WStEUklWRVJfVktNUy4NCj4gDQo+IFRoZSBmaXJzdCB0ZXN0IGlzIHNpbXBsZToNCj4gMS4gRXhw b3J0ZXIgY3JlYXRlcyBhIGR1bWIgRkIgYW5kIGZpbGxzIGl0IHdpdGggYSBwbGFpbiBjb2xvcg0K PiAyLiBGQiBpcyB0cmFuc2ZlcnJlZCB0byB0aGUgaW1wb3J0ZXINCj4gMy4gSW1wb3J0ZXIgbW9k ZXNldHMgYW5kIGNvbXB1dGVzIHBpcGUgQ1JDDQo+IDQuIEltcG9ydGVyIGRyYXdzIHRoZSBzYW1l IGNvbG9yIHRocm91Z2ggY2Fpcm8gYW5kIGNvbXBhcmVzIENSQw0KPiANCj4gVGhlIGluaXRpYWwg bW90aXZhdGlvbiBjb21lcyBmcm9tIHRoZSBuZWVkIHRvIHRlc3QgcHJpbWUgc3VwcG9ydCBpbg0K PiB2a21zLg0KPiANCj4gQ2M6IFJvZHJpZ28gU2lxdWVpcmEgPHJvZHJpZ29zaXF1ZWlyYW1lbG9A Z21haWwuY29tPg0KPiBDYzogRGFuaWVsIFZldHRlciA8ZGFuaWVsQGZmd2xsLmNoPg0KPiBTaWdu ZWQtb2ZmLWJ5OiBPbGVnIFZhc2lsZXYgPG9sZWcudmFzaWxldkBpbnRlbC5jb20+DQo+IC0tLQ0K PiAgdGVzdHMvbWVzb24uYnVpbGQgICAgIHwgICAxICsNCj4gIHRlc3RzL3ByaW1lX2dlbmVyaWMu YyB8IDI1MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gIDIg ZmlsZXMgY2hhbmdlZCwgMjUxIGluc2VydGlvbnMoKykNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCB0 ZXN0cy9wcmltZV9nZW5lcmljLmMNCj4gDQo+IGRpZmYgLS1naXQgYS90ZXN0cy9tZXNvbi5idWls ZCBiL3Rlc3RzL21lc29uLmJ1aWxkDQo+IGluZGV4IDM0YTc0MDI1Li4xYzkzOGU5NSAxMDA2NDQN Cj4gLS0tIGEvdGVzdHMvbWVzb24uYnVpbGQNCj4gKysrIGIvdGVzdHMvbWVzb24uYnVpbGQNCj4g QEAgLTc2LDYgKzc2LDcgQEAgdGVzdF9wcm9ncyA9IFsNCj4gIAkncHJpbWVfc2VsZl9pbXBvcnQn LA0KPiAgCSdwcmltZV91ZGwnLA0KPiAgCSdwcmltZV92Z2VtJywNCj4gKwkncHJpbWVfZ2VuZXJp YycsDQo+ICAJJ3N5bmNvYmpfYmFzaWMnLA0KPiAgCSdzeW5jb2JqX3dhaXQnLA0KPiAgCSd0ZW1w bGF0ZScsDQo+IGRpZmYgLS1naXQgYS90ZXN0cy9wcmltZV9nZW5lcmljLmMgYi90ZXN0cy9wcmlt ZV9nZW5lcmljLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAuLmYy NzNhNGY2DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvdGVzdHMvcHJpbWVfZ2VuZXJpYy5jDQo+ IEBAIC0wLDAgKzEsMjUwIEBADQo+ICsvKg0KPiArICogQ29weXJpZ2h0IMKpIDIwMTkgSW50ZWwg Q29ycG9yYXRpb24NCj4gKyAqDQo+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBm cmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQ0KPiArICogY29weSBvZiB0 aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29m dHdhcmUiKSwNCj4gKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rp b24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24NCj4gKyAqIHRoZSByaWdodHMgdG8gdXNl LCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLA0K PiArICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBw ZXJzb25zIHRvIHdob20gdGhlDQo+ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28s IHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KPiArICoNCj4gKyAqIFRoZSBh Ym92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRp bmcgdGhlIG5leHQNCj4gKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNv cGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUNCj4gKyAqIFNvZnR3YXJlLg0KPiAr ICoNCj4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJB TlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQo+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVU IE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwNCj4gKyAq IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJ TiBOTyBFVkVOVCBTSEFMTA0KPiArICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMg QkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVINCj4gKyAqIExJQUJJTElU WSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBB UklTSU5HDQo+ICsgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZU V0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTDQo+ICsgKiBJTiBUSEUgU09GVFdBUkUu DQo+ICsgKi8NCj4gKw0KPiArI2luY2x1ZGUgImlndC5oIg0KPiArI2luY2x1ZGUgImlndF92Z2Vt LmgiDQo+ICsNCj4gKyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4NCj4gKyNpbmNsdWRlIDxzeXMvcG9s bC5oPg0KPiArI2luY2x1ZGUgPHRpbWUuaD4NCj4gKw0KPiArc3RydWN0IGNyY19pbmZvIHsNCj4g KwlpZ3RfY3JjX3QgY3JjOw0KPiArCWNoYXIgKnN0cjsNCj4gKwljb25zdCBjaGFyICpuYW1lOw0K PiArfTsNCj4gKw0KPiArc3RhdGljIHN0cnVjdCB7DQo+ICsJZG91YmxlIHIsIGcsIGI7DQo+ICsJ dWludDMyX3QgY29sb3I7DQo+ICsJc3RydWN0IGNyY19pbmZvIHByaW1lX2NyYywgZGlyZWN0X2Ny YzsNCj4gK30gY29sb3JzWzNdID0gew0KPiArCXsgLnIgPSAwLjAsIC5nID0gMC4wLCAuYiA9IDAu MCwgLmNvbG9yID0gMHhmZjAwMDAwMH0sDQo+ICsJeyAuciA9IDEuMCwgLmcgPSAxLjAsIC5iID0g MS4wLCAuY29sb3IgPSAweGZmZmZmZmZmfSwNCj4gKwl7IC5yID0gMS4wLCAuZyA9IDAuMCwgLmIg PSAwLjAsIC5jb2xvciA9IDB4ZmZmZjAwMDB9LA0KDQpTdHlsZSBuaXQ6IGFkZCBzcGFjZXMgYmVm b3JlIGB9YCB0b28uDQoNCj4gK307DQo+ICsNCj4gK0lHVF9URVNUX0RFU0NSSVBUSU9OKCJHZW5l cmljIHRlc3RzLCB3b3JraW5nIHdpdGggYW55IHByaW1lIGRldmljZSIpOw0KDQpNYXliZSBtYWtl IGl0IGNsZWFyIGl0J3MgYWJvdXQgS01TIGFuZCBwcmltZT8NCg0KPiArc3RhdGljIGJvb2wgaGFz X3ByaW1lX2ltcG9ydChpbnQgZmQpDQo+ICt7DQo+ICsJdWludDY0X3QgdmFsdWU7DQo+ICsNCj4g KwlpZiAoZHJtR2V0Q2FwKGZkLCBEUk1fQ0FQX1BSSU1FLCAmdmFsdWUpKQ0KPiArCQlyZXR1cm4g ZmFsc2U7DQo+ICsNCj4gKwlyZXR1cm4gdmFsdWUgJiBEUk1fUFJJTUVfQ0FQX0lNUE9SVDsNCg0K VGhpcyByZXR1cm5zIGEgbm9uLXplcm8gdmFsdWUgd2hlbiBpbXBvcnQgaXMgc3VwcG9ydGVkLCBi dXQgZG9lc24ndA0KcmV0dXJuIHRydWUuIFRoaXMgY2FuIGxlYWQgdG8gc3RyYW5nZSBidWdzLg0K DQpJdCdzIGNvbW1vbiB0byB1c2UgISEgdG8gY29udmVydCB0byBhIGJvb2wuDQoNCj4gK30NCj4g Kw0KPiArc3RhdGljIGJvb2wgaGFzX3ByaW1lX2V4cG9ydChpbnQgZmQpDQo+ICt7DQo+ICsJdWlu dDY0X3QgdmFsdWU7DQo+ICsNCj4gKwlpZiAoZHJtR2V0Q2FwKGZkLCBEUk1fQ0FQX1BSSU1FLCAm dmFsdWUpKQ0KPiArCQlyZXR1cm4gZmFsc2U7DQo+ICsNCj4gKwlyZXR1cm4gdmFsdWUgJiBEUk1f UFJJTUVfQ0FQX0VYUE9SVDsNCg0KRGl0dG8NCg0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCBz ZXR1cF9kaXNwbGF5KGludCBpbXBvcnRlciwgaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwgaWd0X291 dHB1dF90ICoqb3V0cHV0LA0KDQpXZSBjYW4gcmV0dXJuIHRoZSBpZ3Rfb3V0cHV0X3QgKiBpbnN0 ZWFkIG9mIHVzaW5nIGFuIGFyZ3VtZW50Lg0KDQpJdCdzIGFsc28gcHJvYmFibHkgYSBnb29kIGlk ZWEgdG8gcmVuYW1lIGltcG9ydGVyIHRvIGUuZy4gaW1wb3J0ZXJfZmQsDQppdCdzIG5vdCBpbW1l ZGlhdGVseSBvYnZpb3VzIHRoaXMgdmFyaWFibGUgcmVwcmVzZW50cyBhIGZpbGUNCmRlc2NyaXB0 b3IuDQoNCj4gKwkJCSAgZW51bSBwaXBlIHBpcGUpDQo+ICt7DQo+ICsJaWd0X2Rpc3BsYXlfcmVx dWlyZShkaXNwbGF5LCBpbXBvcnRlcik7DQo+ICsJaWd0X3NraXBfb24ocGlwZSA+PSBkaXNwbGF5 LT5uX3BpcGVzKTsNCj4gKwkqb3V0cHV0ID0gaWd0X2dldF9zaW5nbGVfb3V0cHV0X2Zvcl9waXBl KGRpc3BsYXksIHBpcGUpOw0KPiArCWlndF9yZXF1aXJlX2YoKm91dHB1dCwgIk5vIGNvbm5lY3Rv ciBmb3VuZCBmb3IgcGlwZSAlc1xuIiwNCj4gKwkJICAgICAga21zdGVzdF9waXBlX25hbWUocGlw ZSkpOw0KPiArDQo+ICsJaWd0X2Rpc3BsYXlfcmVzZXQoZGlzcGxheSk7DQo+ICsJaWd0X291dHB1 dF9zZXRfcGlwZSgqb3V0cHV0LCBwaXBlKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgcHJl cGFyZV9zY3JhdGNoKGludCBleHBvcnRlciwgc3RydWN0IHZnZW1fYm8gKnNjcmF0Y2gsDQo+ICsJ CQkgICAgZHJtTW9kZU1vZGVJbmZvICptb2RlLCB1aW50MzJfdCBjb2xvcikNCj4gK3sNCj4gKwlp bnQgaTsNCg0KTml0OiBzdHJpY3RseSBzcGVha2luZywgdGhpcyBzaG91bGQgYmUgc2l6ZV90DQoN Cj4gKwl1aW50MzJfdCAqcHRyOw0KPiArDQo+ICsJc2NyYXRjaC0+d2lkdGggPSBtb2RlLT5oZGlz cGxheTsNCj4gKwlzY3JhdGNoLT5oZWlnaHQgPSBtb2RlLT52ZGlzcGxheTsNCj4gKwlzY3JhdGNo LT5icHAgPSAzMjsNCj4gKwl2Z2VtX2NyZWF0ZShleHBvcnRlciwgc2NyYXRjaCk7DQoNClRoZSBy ZXR1cm4gdmFsdWUgc2hvdWxkIGJlIGNoZWNrZWQuDQoNCj4gKwlwdHIgPSB2Z2VtX21tYXAoZXhw b3J0ZXIsIHNjcmF0Y2gsIFBST1RfV1JJVEUpOw0KDQpEaXR0bywgd2Ugc2hvdWxkIGNoZWNrIHRo YXQgcHRyICE9IE5VTEwuDQoNCj4gKwlmb3IgKGkgPSAwOyBpIDwgc2NyYXRjaC0+c2l6ZSAvIHNp emVvZigqcHRyKTsgKytpKQ0KPiArCQlwdHJbaV0gPSBjb2xvcjsNCj4gKw0KPiArCW11bm1hcChw dHIsIHNjcmF0Y2gtPnNpemUpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCBwcmVwYXJlX2Zi KGludCBpbXBvcnRlciwgc3RydWN0IHZnZW1fYm8gKnNjcmF0Y2gsIHN0cnVjdCBpZ3RfZmIgKmZi KQ0KPiArew0KPiArCWVudW0gaWd0X2NvbG9yX2VuY29kaW5nIGNvbG9yX2VuY29kaW5nID0gSUdU X0NPTE9SX1lDQkNSX0JUNzA5Ow0KPiArCWVudW0gaWd0X2NvbG9yX3JhbmdlIGNvbG9yX3Jhbmdl ID0gSUdUX0NPTE9SX1lDQkNSX0xJTUlURURfUkFOR0U7DQo+ICsNCj4gKwlpZ3RfaW5pdF9mYihm YiwgaW1wb3J0ZXIsIHNjcmF0Y2gtPndpZHRoLCBzY3JhdGNoLT5oZWlnaHQsDQo+ICsJCSAgICBE Uk1fRk9STUFUX1hSR0I4ODg4LCBMT0NBTF9EUk1fRk9STUFUX01PRF9OT05FLA0KPiArCQkgICAg Y29sb3JfZW5jb2RpbmcsIGNvbG9yX3JhbmdlKTsNCg0KTWF5YmUgd2UgY291bGQgcG9wdWxhdGUg ZmItPnN0cmlkZXNbMF0gaGVyZSwgc28gdGhhdCB3ZSBkb24ndCBuZWVkIHRvDQpwYXNzIGl0IGFy b3VuZCBpbiBpbXBvcnRfZmIuDQoNCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgaW1wb3J0X2Zi KGludCBpbXBvcnRlciwgc3RydWN0IGlndF9mYiAqZmIsDQo+ICsJCSAgICAgIGludCBkbWFidWZf ZmQsIHVpbnQzMl90IHBpdGNoKQ0KPiArew0KPiArCXVpbnQzMl90IG9mZnNldHNbNF0sIHBpdGNo ZXNbNF0sIGhhbmRsZXNbNF07DQoNCkl0J3Mgc2FmZXIgdG8gemVyby1pbml0aWFsaXplIHRoZXNl Lg0KDQo+ICsJaW50IHJldDsNCj4gKw0KPiArCWZiLT5nZW1faGFuZGxlID0gcHJpbWVfZmRfdG9f aGFuZGxlKGltcG9ydGVyLCBkbWFidWZfZmQpOw0KPiArDQo+ICsJaGFuZGxlc1swXSA9IGZiLT5n ZW1faGFuZGxlOw0KPiArCXBpdGNoZXNbMF0gPSBwaXRjaDsNCj4gKwlvZmZzZXRzWzBdID0gMDsN Cj4gKw0KPiArCXJldCA9IGRybU1vZGVBZGRGQjIoaW1wb3J0ZXIsIGZiLT53aWR0aCwgZmItPmhl aWdodCwNCj4gKwkJCSAgICBEUk1fRk9STUFUX1hSR0I4ODg4LA0KPiArCQkJICAgIGhhbmRsZXMs IHBpdGNoZXMsIG9mZnNldHMsDQo+ICsJCQkgICAgJmZiLT5mYl9pZCwgMCk7DQo+ICsJaWd0X2Fz c2VydChyZXQgPT0gMCk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIHNldF9mYihzdHJ1Y3Qg aWd0X2ZiICpmYiwNCj4gKwkJICAgaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwNCj4gKwkJICAgaWd0 X291dHB1dF90ICpvdXRwdXQpDQo+ICt7DQo+ICsJaWd0X3BsYW5lX3QgKnByaW1hcnk7DQo+ICsJ aW50IHJldDsNCj4gKw0KPiArCXByaW1hcnkgPSBpZ3Rfb3V0cHV0X2dldF9wbGFuZShvdXRwdXQs IDApOw0KDQpUaGlzIGFzc3VtZXMgdGhlIGZpcnN0IHBsYW5lIGlzIGEgcHJpbWFyeSBvbmUuIEFj dHVhbGx5IHJlcXVlc3RpbmcgdGhlDQpwcmltYXJ5IHBsYW5lIGlzIHNhZmVyOg0KDQogICAgcHJp bWFyeSA9IGlndF9vdXRwdXRfZ2V0X3BsYW5lX3R5cGUob3V0cHV0LCBEUk1fUExBTkVfVFlQRV9Q UklNQVJZKTsNCiAgICBpZ3RfYXNzZXJ0KHByaW1hcnkpOw0KDQo+ICsJaWd0X3BsYW5lX3NldF9m YihwcmltYXJ5LCBmYik7DQo+ICsJcmV0ID0gaWd0X2Rpc3BsYXlfY29tbWl0KGRpc3BsYXkpOw0K PiArDQo+ICsJaWd0X2Fzc2VydChyZXQgPT0gMCk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lk IGNvbGxlY3RfY3JjKGludCBpbXBvcnRlciwgc3RydWN0IGlndF9mYiAqZmIsIGlndF9kaXNwbGF5 X3QgKmRpc3BsYXksDQo+ICsJCQlpZ3Rfb3V0cHV0X3QgKm91dHB1dCwgaWd0X3BpcGVfY3JjX3Qg KnBpcGVfY3JjLA0KPiArCQkJdWludDMyX3QgY29sb3IsIHN0cnVjdCBjcmNfaW5mbyAqaW5mbykN Cj4gK3sNCj4gKwlzZXRfZmIoZmIsIGRpc3BsYXksIG91dHB1dCk7DQo+ICsJaWd0X3BpcGVfY3Jj X2NvbGxlY3RfY3JjKHBpcGVfY3JjLCAmaW5mby0+Y3JjKTsNCj4gKwlpbmZvLT5zdHIgPSBpZ3Rf Y3JjX3RvX3N0cmluZygmaW5mby0+Y3JjKTsNCj4gKwlpZ3RfZGVidWcoIkNSQyB0aHJvdWdoICcl cycgbWV0aG9kIGZvciAlIzA4eCBpcyAlc1xuIiwNCj4gKwkJICBpbmZvLT5uYW1lLCBjb2xvciwg aW5mby0+c3RyKTsNCj4gKwlpZ3RfcmVtb3ZlX2ZiKGltcG9ydGVyLCBmYik7DQo+ICt9DQo+ICsN Cj4gK3N0YXRpYyB2b2lkIHRlc3RfY3JjKGludCBleHBvcnRlciwgaW50IGltcG9ydGVyKQ0KPiAr ew0KPiArCWlndF9kaXNwbGF5X3QgZGlzcGxheTsNCj4gKwlpZ3Rfb3V0cHV0X3QgKm91dHB1dDsN Cj4gKwlpZ3RfcGlwZV9jcmNfdCAqcGlwZV9jcmM7DQo+ICsJZW51bSBwaXBlIHBpcGUgPSBQSVBF X0E7DQo+ICsJc3RydWN0IGlndF9mYiBmYjsNCj4gKwlpbnQgZG1hYnVmX2ZkOw0KPiArCXN0cnVj dCB2Z2VtX2JvIHNjcmF0Y2g7IC8qIGRlc3BpdGUgdGhlIG5hbWUsIGl0IHN1aXRzIGZvciBhbnkN Cj4gKwkJCQkgKiBnZW0tY29tcGF0aWJsZSBkZXZpY2UNCj4gKwkJCQkgKiBUT0RPOiByZW5hbWUN Cj4gKwkJCQkgKi8NCg0KQ2FuIHdlIGluaXRpYWxpemUgdGhpcyB0byB6ZXJvICg9IHswfSk/IFNp bmNlIGZpZWxkcyBhcmUgcG9wdWxhdGVkDQppbmNyZW1lbnRhbGx5LCBpdCBzZWVtcyBhIGxpdHRs ZSBkYW5nZXJvdXMgdG8gdXNlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5Lg0KDQo+ICsJaW50IGksIGo7 DQo+ICsJZHJtTW9kZU1vZGVJbmZvICptb2RlOw0KPiArDQo+ICsJYm9vbCBjcmNfZXF1YWwgPSBm YWxzZTsNCj4gKw0KPiArCXNldHVwX2Rpc3BsYXkoaW1wb3J0ZXIsICZkaXNwbGF5LCAmb3V0cHV0 LCBwaXBlKTsNCj4gKw0KPiArCW1vZGUgPSBpZ3Rfb3V0cHV0X2dldF9tb2RlKG91dHB1dCk7DQo+ ICsJcGlwZV9jcmMgPSBpZ3RfcGlwZV9jcmNfbmV3KGltcG9ydGVyLCBwaXBlLCBJTlRFTF9QSVBF X0NSQ19TT1VSQ0VfQVVUTyk7DQo+ICsNCj4gKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShj b2xvcnMpOyBpKyspIHsNCj4gKwkJcHJlcGFyZV9zY3JhdGNoKGV4cG9ydGVyLCAmc2NyYXRjaCwg bW9kZSwgY29sb3JzW2ldLmNvbG9yKTsNCj4gKwkJZG1hYnVmX2ZkID0gcHJpbWVfaGFuZGxlX3Rv X2ZkKGV4cG9ydGVyLCBzY3JhdGNoLmhhbmRsZSk7DQoNCldlIHNob3VsZCBjaGVjayBkbWFidWZf ZmQgPj0gMC4NCg0KPiArCQlnZW1fY2xvc2UoZXhwb3J0ZXIsIHNjcmF0Y2guaGFuZGxlKTsNCj4g Kw0KPiArCQlwcmVwYXJlX2ZiKGltcG9ydGVyLCAmc2NyYXRjaCwgJmZiKTsNCj4gKwkJaW1wb3J0 X2ZiKGltcG9ydGVyLCAmZmIsIGRtYWJ1Zl9mZCwgc2NyYXRjaC5waXRjaCk7DQoNCldlIHNob3Vs ZCByZWxlYXNlIHRoaXMgRkIgYWZ0ZXIgd2UncmUgZG9uZS4NCg0KPiArCQljbG9zZShkbWFidWZf ZmQpOw0KPiArDQo+ICsJCWNvbG9yc1tpXS5wcmltZV9jcmMubmFtZSA9ICJwcmltZSI7DQo+ICsJ CWNvbGxlY3RfY3JjKGltcG9ydGVyLCAmZmIsICZkaXNwbGF5LCBvdXRwdXQsDQo+ICsJCQkgICAg cGlwZV9jcmMsIGNvbG9yc1tpXS5jb2xvciwgJmNvbG9yc1tpXS5wcmltZV9jcmMpOw0KPiArDQo+ ICsJCWlndF9jcmVhdGVfY29sb3JfZmIoaW1wb3J0ZXIsDQo+ICsJCQkJICAgIG1vZGUtPmhkaXNw bGF5LCBtb2RlLT52ZGlzcGxheSwNCj4gKwkJCQkgICAgRFJNX0ZPUk1BVF9YUkdCODg4OCwgTE9D QUxfRFJNX0ZPUk1BVF9NT0RfTk9ORSwNCj4gKwkJCQkgICAgY29sb3JzW2ldLnIsIGNvbG9yc1tp XS5nLCBjb2xvcnNbaV0uYiwNCj4gKwkJCQkgICAgJmZiKTsNCg0KRGl0dG8sIHdlIHNob3VsZCBy ZWxlYXNlIHRoaXMgRkIgYWZ0ZXIgd2UncmUgZG9uZS4NCg0KPiArDQo+ICsJCWNvbG9yc1tpXS5k aXJlY3RfY3JjLm5hbWUgPSAiZGlyZWN0IjsNCj4gKwkJY29sbGVjdF9jcmMoaW1wb3J0ZXIsICZm YiwgJmRpc3BsYXksIG91dHB1dCwNCj4gKwkJCSAgICBwaXBlX2NyYywgY29sb3JzW2ldLmNvbG9y LCAmY29sb3JzW2ldLmRpcmVjdF9jcmMpOw0KPiArCX0NCj4gKwlpZ3RfcGlwZV9jcmNfZnJlZShw aXBlX2NyYyk7DQo+ICsNCj4gKwlpZ3RfZGVidWcoIkNSQyB0YWJsZTpcbiIpOw0KPiArCWlndF9k ZWJ1ZygiQ29sb3JcdFx0UHJpbWVcdFx0RGlyZWN0XG4iKTsNCj4gKwlmb3IgKGkgPSAwOyBpIDwg QVJSQVlfU0laRShjb2xvcnMpOyBpKyspIHsNCj4gKwkJaWd0X2RlYnVnKCIlIzA4eFx0JS44c1x0 JS44c1xuIiwgY29sb3JzW2ldLmNvbG9yLA0KPiArCQkJICBjb2xvcnNbaV0ucHJpbWVfY3JjLnN0 ciwgY29sb3JzW2ldLmRpcmVjdF9jcmMuc3RyKTsNCj4gKwkJZnJlZShjb2xvcnNbaV0ucHJpbWVf Y3JjLnN0cik7DQo+ICsJCWZyZWUoY29sb3JzW2ldLmRpcmVjdF9jcmMuc3RyKTsNCj4gKwl9DQo+ ICsNCj4gKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShjb2xvcnMpOyBpKyspIHsNCj4gKwkJ Zm9yIChqID0gMDsgaiA8IEFSUkFZX1NJWkUoY29sb3JzKTsgaisrKSB7DQo+ICsJCQlpZiAoaSA9 PSBqKSB7DQo+ICsJCQkJaWd0X2Fzc2VydF9jcmNfZXF1YWwoJmNvbG9yc1tpXS5wcmltZV9jcmMu Y3JjLA0KPiArCQkJCQkJICAgICAmY29sb3JzW2pdLmRpcmVjdF9jcmMuY3JjKTsNCj4gKwkJCQlj b250aW51ZTsNCj4gKwkJCX0NCj4gKwkJCWNyY19lcXVhbCA9IGlndF9jaGVja19jcmNfZXF1YWwo JmNvbG9yc1tpXS5wcmltZV9jcmMuY3JjLA0KPiArCQkJCQkJCSZjb2xvcnNbal0uZGlyZWN0X2Ny Yy5jcmMpOw0KPiArCQkJaWd0X2Fzc2VydF9mKCFjcmNfZXF1YWwsICJDUkMgc2hvdWxkIGJlIGRp ZmZlcmVudCIpOw0KPiArCQl9DQo+ICsJfQ0KPiArCWlndF9kaXNwbGF5X2ZpbmkoJmRpc3BsYXkp Ow0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCBydW5fdGVzdF9jcmMoaW50IGV4cG9ydF9jaGlw c2V0LCBpbnQgaW1wb3J0X2NoaXBzZXQpDQo+ICt7DQo+ICsJaW50IGltcG9ydGVyID0gLTE7DQo+ ICsJaW50IGV4cG9ydGVyID0gLTE7DQo+ICsNCj4gKwlleHBvcnRlciA9IGRybV9vcGVuX2RyaXZl cihleHBvcnRfY2hpcHNldCk7DQo+ICsJaW1wb3J0ZXIgPSBkcm1fb3Blbl9kcml2ZXJfbWFzdGVy KGltcG9ydF9jaGlwc2V0KTsNCj4gKw0KPiArCWlndF9yZXF1aXJlKGhhc19wcmltZV9leHBvcnQo ZXhwb3J0ZXIpKTsNCj4gKwlpZ3RfcmVxdWlyZShoYXNfcHJpbWVfaW1wb3J0KGltcG9ydGVyKSk7 DQo+ICsJaWd0X3JlcXVpcmVfcGlwZV9jcmMoaW1wb3J0ZXIpOw0KPiArDQo+ICsJdGVzdF9jcmMo ZXhwb3J0ZXIsIGltcG9ydGVyKTsNCj4gKwljbG9zZShpbXBvcnRlcik7DQo+ICsJY2xvc2UoZXhw b3J0ZXIpOw0KPiArfQ0KPiArDQo+ICtpZ3RfbWFpbg0KPiArew0KPiArCWlndF9maXh0dXJlIHsN Cj4gKwkJa21zdGVzdF9zZXRfdnRfZ3JhcGhpY3NfbW9kZSgpOw0KDQpJcyB0aGlzIHJlYWxseSBu ZWVkZWQ/DQoNCj4gKwl9DQo+ICsJaWd0X3N1YnRlc3QoImNyYyIpDQoNClBsZWFzZSBhZGQgYSBz dWJ0ZXN0IGRlc2NyaXB0aW9uLiBTZWU6DQpodHRwczovL2RybS5wYWdlcy5mcmVlZGVza3RvcC5v cmcvaWd0LWdwdS10b29scy9pZ3QtZ3B1LXRvb2xzLUNvcmUuaHRtbCNpZ3QtZGVzY3JpYmUNCg0K PiArCQlydW5fdGVzdF9jcmMoRFJJVkVSX1ZHRU0sIERSSVZFUl9BTlkpOw0KPiArfQ0KX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaWd0LWRldiBtYWlsaW5n IGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2