From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9C8D76E7F4 for ; Tue, 26 Mar 2019 12:00:49 +0000 (UTC) From: "Lisovskiy, Stanislav" Date: Tue, 26 Mar 2019 12:00:46 +0000 Message-ID: <04660a3387bb9f93e1a11c73f4110ff032f8e45b.camel@intel.com> References: <20190325155440.22182-1-stanislav.lisovskiy@intel.com> <20190326091141.GZ4038@platvala-desk.ger.corp.intel.com> In-Reply-To: <20190326091141.GZ4038@platvala-desk.ger.corp.intel.com> Content-Language: en-US Content-ID: <7AECFF5B3C62C94D97A339B4D5A2230A@intel.com> MIME-Version: 1.0 Subject: Re: [igt-dev] [PATCH i-g-t v4] igt/tests: kms_plane_stress: Add plane stress test 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: "Latvala, Petri" Cc: "igt-dev@lists.freedesktop.org" , "Syrjala, Ville" , "Peres, Martin" List-ID: T24gVHVlLCAyMDE5LTAzLTI2IGF0IDExOjExICswMjAwLCBQZXRyaSBMYXR2YWxhIHdyb3RlOg0K PiBPbiBNb24sIE1hciAyNSwgMjAxOSBhdCAwNTo1NDo0MFBNICswMjAwLCBTdGFuaXNsYXYgTGlz b3Zza2l5IHdyb3RlOg0KPiA+IFRoaXMgdGVzdCBhdHRlbXB0cyB0byB1dGlsaXplIGFsbCBjb25u ZWN0ZWQNCj4gPiBvdXRwdXRzIGF0IHRoZSBzYW1lIHRpbWUsIHVzaW5nIG1heGltdW0gcG9zc2li bGUNCj4gPiByZXNvbHV0aW9uIGFuZCBhbW91bnQgb2YgcGxhbmVzLCB0byBjaGVjayB3aGV0aGVy DQo+ID4gd2UgYXJlIGhpdGluZyBhbnkga2luZCBvZiBiYW5kd2lkdGgsIHdhdGVybWFyayBvcg0K PiA+IG90aGVyIGxpbWl0YXRpb25zLg0KPiA+IA0KPiA+IHYyOiBBZGRlZCBjcHUgYW5kIGdwdSBs b2FkIHRocmVhZHMsIHdoaWNoIGNvbnN1bWUNCj4gPiAgICAgYWRkaXRpb25hbCBiYW5kd2lkdGgu DQo+ID4gDQo+ID4gdjM6IFJlbW92ZWQgYmluYXJ5IHBpY3R1cmUgZmlsZSwgdXNpbmcgcGF0dGVy biBmYg0KPiA+ICAgICBpbnN0ZWFkLg0KPiA+IA0KPiA+IHY0OiBNb3ZlZCBGQiBjcmVhdGlvbi9y ZW1vdmFsIHRvIGJldHRlciBwbGFjZS4NCj4gPiANCj4gPiBTaWduZWQtb2ZmLWJ5OiBTdGFuaXNs YXYgTGlzb3Zza2l5IDxzdGFuaXNsYXYubGlzb3Zza2l5QGludGVsLmNvbT4NCj4gPiAtLS0NCj4g PiAgbGliL2lndF9rbXMuaCAgICAgICAgICAgIHwgICA3ICsNCj4gPiAgdGVzdHMvTWFrZWZpbGUu c291cmNlcyAgIHwgICAxICsNCj4gPiAgdGVzdHMva21zX3BsYW5lX3N0cmVzcy5jIHwgNTQ2DQo+ ID4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ID4gIHRlc3RzL21l c29uLmJ1aWxkICAgICAgICB8ICAgMSArDQo+ID4gIDQgZmlsZXMgY2hhbmdlZCwgNTU1IGluc2Vy dGlvbnMoKykNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL2ttc19wbGFuZV9zdHJlc3Mu Yw0KPiA+IA0KPiA+IGRpZmYgLS1naXQgYS9saWIvaWd0X2ttcy5oIGIvbGliL2lndF9rbXMuaA0K PiA+IGluZGV4IDQwN2YzZDY0Li4wZTY3ODRjYSAxMDA2NDQNCj4gPiAtLS0gYS9saWIvaWd0X2tt cy5oDQo+ID4gKysrIGIvbGliL2lndF9rbXMuaA0KPiA+IEBAIC01MTksNiArNTE5LDEzIEBAIHN0 YXRpYyBpbmxpbmUgYm9vbA0KPiA+IGlndF9vdXRwdXRfaXNfY29ubmVjdGVkKGlndF9vdXRwdXRf dCAqb3V0cHV0KQ0KPiA+ICAJCWZvcl9lYWNoX2lmICgoKChvdXRwdXQpID0gJihkaXNwbGF5KS0+ b3V0cHV0c1tjb25fX10pLA0KPiA+IFwNCj4gPiAgCQkJICAgICBpZ3RfcGlwZV9jb25uZWN0b3Jf dmFsaWQoKHBpcGUpLA0KPiA+IChvdXRwdXQpKSkpDQo+ID4gIA0KPiA+ICsjZGVmaW5lIGZvcl9l YWNoX3BpcGVfd2l0aF9uZXdfb3V0cHV0KGRpc3BsYXksIHBpcGUsIG91dHB1dCkgXA0KPiA+ICsJ CQlmb3IgKGludCBjb24gPSAwLCAocGlwZSkgPSAwOyBjb24gPCAoZGlzcGxheSktDQo+ID4gPm5f b3V0cHV0czsgY29uKyspIFwNCj4gPiArCQkJCWZvcl9lYWNoX2lmKChvdXRwdXQpID0gJihkaXNw bGF5KS0NCj4gPiA+b3V0cHV0c1tjb25dKSBcDQo+ID4gKwkJCQkJZm9yX2VhY2hfaWYoKHBpcGUp IDwNCj4gPiBJR1RfTUFYX1BJUEVTKSBcDQo+ID4gKwkJCQkJCWZvcl9lYWNoX2lmKGlndF9waXBl X2NvDQo+ID4gbm5lY3Rvcl92YWxpZCgocGlwZSksIChvdXRwdXQpKSkNCj4gDQo+IA0KPiBEb2Nz IGZvciB0aGlzLiBBbmQgYSB2ZXJ5IGdvb2QgZXhwbGFuYXRpb24gd2hhdCBpcyBkaWZmZXJlbnQg ZnJvbQ0KPiBmb3JfZWFjaF9waXBlX3dpdGhfdmFsaWRfb3V0cHV0KCkuDQoNClN1cmUsIHdpbGwg YWRkIHRob3NlLiBUaGUgcmVhc29uaW5nIGlzIHRoYXQNCmZvcl9lYWNoX3BpcGVfd2l0aF92YWxp ZF9vdXRwdXQgd2lsbCB0cnkgdG8gdGVzdCBldmVyeSBwb3NzaWJsZQ0KY29tYmluYXRpb24gb2Yg cGlwZSBhbmQgb3V0cHV0LCB3aGlsZSBpbiB0aGlzIGNhc2UgaXQgaXMgbm90IG5lZWRlZC4NCiAN ClRoaXMgdGVzdCBjYXNlIGlzIGRpZmZlcmVudCBmcm9tIGZvciBleGFtcGxlIGttc19hdG9taWNf dHJhbnNpdGlvbiwNCmJlY2F1c2UgaXQgYXR0ZW1wdHMgdG8gdGVzdCBhbGwgdGhlIHBpcGVzIGNv bm5lY3RlZCB0byBvdXRwdXRzDQpzaW11bHRhbmVvdXNseSwgd2hpbGUgbW9zdCBvZiBjdXJyZW50 IHRlc3QgY2FzZXMgZG8gaXQgb25lIGJ5IG9uZS4NCg0KPiANCj4gDQo+ID4gKw0KPiA+ICsNCj4g PiAgaWd0X291dHB1dF90ICoqX19pZ3RfcGlwZV9wb3B1bGF0ZV9vdXRwdXRzKGlndF9kaXNwbGF5 X3QgKmRpc3BsYXksDQo+ID4gIAkJCQkJICAgaWd0X291dHB1dF90DQo+ID4gKipjaG9zZW5fb3V0 cHV0cyk7DQo+ID4gIA0KPiA+IGRpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzIGIv dGVzdHMvTWFrZWZpbGUuc291cmNlcw0KPiA+IGluZGV4IDcxY2NmMDBhLi45ZDA0ZDg4OCAxMDA2 NDQNCj4gPiAtLS0gYS90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzDQo+ID4gKysrIGIvdGVzdHMvTWFr ZWZpbGUuc291cmNlcw0KPiA+IEBAIC01OSw2ICs1OSw3IEBAIFRFU1RTX3Byb2dzID0gXA0KPiA+ ICAJa21zX3BsYW5lX2xvd3JlcyBcDQo+ID4gIAlrbXNfcGxhbmVfbXVsdGlwbGUgXA0KPiA+ICAJ a21zX3BsYW5lX3NjYWxpbmcgXA0KPiA+ICsJa21zX3BsYW5lX3N0cmVzcyBcDQo+ID4gIAlrbXNf cHJvcF9ibG9iIFwNCj4gPiAgCWttc19wcm9wZXJ0aWVzIFwNCj4gPiAgCWttc19wc3IgXA0KPiA+ IGRpZmYgLS1naXQgYS90ZXN0cy9rbXNfcGxhbmVfc3RyZXNzLmMgYi90ZXN0cy9rbXNfcGxhbmVf c3RyZXNzLmMNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwLi44 YTI0NGRjNw0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi90ZXN0cy9rbXNfcGxhbmVfc3Ry ZXNzLmMNCj4gPiBAQCAtMCwwICsxLDU0NiBAQA0KPiA+ICsvKg0KPiA+ICsgKiBDb3B5cmlnaHQg wqkgMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbg0KPiANCj4gMjAxNj8NCj4gDQo+IA0KPiA+ICsgKg0K PiA+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8g YW55IHBlcnNvbg0KPiA+IG9idGFpbmluZyBhDQo+ID4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2Fy ZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUNCj4gPiAiU29mdHdhcmUi KSwNCj4gPiArICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwg aW5jbHVkaW5nIHdpdGhvdXQNCj4gPiBsaW1pdGF0aW9uDQo+ID4gKyAqIHRoZSByaWdodHMgdG8g dXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLA0KPiA+IHN1Ymxp Y2Vuc2UsDQo+ID4gKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0 byBwZXJtaXQgcGVyc29ucyB0bw0KPiA+IHdob20gdGhlDQo+ID4gKyAqIFNvZnR3YXJlIGlzIGZ1 cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nDQo+ID4gY29uZGl0aW9u czoNCj4gPiArICoNCj4gPiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMg cGVybWlzc2lvbiBub3RpY2UNCj4gPiAoaW5jbHVkaW5nIHRoZSBuZXh0DQo+ID4gKyAqIHBhcmFn cmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbA0KPiA+ IHBvcnRpb25zIG9mIHRoZQ0KPiA+ICsgKiBTb2Z0d2FyZS4NCj4gPiArICoNCj4gPiArICogVEhF IFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJ TkQsDQo+ID4gRVhQUkVTUyBPUg0KPiA+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBM SU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GDQo+ID4gTUVSQ0hBTlRBQklMSVRZLA0KPiA+ICsg KiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAg SU4gTk8NCj4gPiBFVkVOVCBTSEFMTA0KPiA+ICsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQg SE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwNCj4gPiBEQU1BR0VTIE9SIE9USEVSDQo+ ID4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQg T1IgT1RIRVJXSVNFLA0KPiA+IEFSSVNJTkcNCj4gPiArICogRlJPTSwgT1VUIE9GIE9SIElOIENP Tk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUg0KPiA+IE9USEVSIERFQUxJ TkdTDQo+ID4gKyAqIElOIFRIRSBTT0ZUV0FSRS4NCj4gPiArICovDQo+ID4gKw0KPiA+ICsjaW5j bHVkZSAiaWd0LmgiDQo+ID4gKyNpbmNsdWRlICJpZ3RfcmFuZC5oIg0KPiA+ICsjaW5jbHVkZSAi ZHJtdGVzdC5oIg0KPiA+ICsjaW5jbHVkZSAic3dfc3luYy5oIg0KPiA+ICsjaW5jbHVkZSA8ZXJy bm8uaD4NCj4gPiArI2luY2x1ZGUgPHB0aHJlYWQuaD4NCj4gPiArI2luY2x1ZGUgPHN0ZGJvb2wu aD4NCj4gPiArI2luY2x1ZGUgPHN0ZGlvLmg+DQo+ID4gKyNpbmNsdWRlIDxzdHJpbmcuaD4NCj4g PiArI2luY2x1ZGUgPHRpbWUuaD4NCj4gPiArI2luY2x1ZGUgPHBvbGwuaD4NCj4gPiArI2luY2x1 ZGUgPHB0aHJlYWQuaD4NCj4gPiArDQo+ID4gKyNpZm5kZWYgRFJNX0NBUF9DVVJTT1JfV0lEVEgN Cj4gPiArI2RlZmluZSBEUk1fQ0FQX0NVUlNPUl9XSURUSCAweDgNCj4gPiArI2VuZGlmDQo+ID4g KyNpZm5kZWYgRFJNX0NBUF9DVVJTT1JfSEVJR0hUDQo+ID4gKyNkZWZpbmUgRFJNX0NBUF9DVVJT T1JfSEVJR0hUIDB4OQ0KPiA+ICsjZW5kaWYNCj4gPiArDQo+ID4gKw0KPiA+ICtkcm1Nb2RlTW9k ZUluZm8gdWhkX21vZGVfNjBoeiA9IHsNCj4gPiArCS5uYW1lID0gIjM4NDB4MjE2MEA2MGh6IiwN Cj4gPiArCS52cmVmcmVzaCA9IDYwLA0KPiA+ICsJLmNsb2NrID0gMTQyNjY3KjIsDQo+ID4gKwku aGRpc3BsYXkgPSAzODQwLA0KPiA+ICsJLmhzeW5jX3N0YXJ0ID0gMTkzNioyLA0KPiA+ICsJLmhz eW5jX2VuZCA9IDE5NTIqMiwNCj4gPiArCS5odG90YWwgPSAyMTA0KjIsDQo+ID4gKwkudmRpc3Bs YXkgPSAyMTYwLA0KPiA+ICsJLnZzeW5jX3N0YXJ0ID0gMTA4MyoyLA0KPiA+ICsJLnZzeW5jX2Vu ZCA9IDEwOTcqMiwNCj4gPiArCS52dG90YWwgPSAxMTI4KjIsDQo+ID4gKwkuZmxhZ3MgPSAweGEs DQo+ID4gK307DQo+ID4gKw0KPiA+ICsjZGVmaW5lIE5fRk9STUFUUyAzDQo+ID4gK3N0YXRpYyBj b25zdCB1aW50MzJfdCBmb3JtYXRzW05fRk9STUFUU10gPSB7DQo+ID4gKwlEUk1fRk9STUFUX1hS R0I4ODg4LA0KPiA+ICsJRFJNX0ZPUk1BVF9SR0I1NjUsDQo+ID4gKwlEUk1fRk9STUFUX1hSR0Iy MTAxMDEwLA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBOX1RJTElOR19NRVRIT0RTIDMN Cj4gPiArc3RhdGljIGNvbnN0IHVpbnQ2NF90IHRpbGluZ3NbTl9USUxJTkdfTUVUSE9EU10gPSB7 DQo+ID4gKwlEUk1fRk9STUFUX01PRF9MSU5FQVIsDQo+ID4gKwlJOTE1X0ZPUk1BVF9NT0RfWF9U SUxFRCwNCj4gPiArCUk5MTVfRk9STUFUX01PRF9ZX1RJTEVELA0KPiA+ICt9Ow0KPiA+ICsNCj4g PiArc3RhdGljIGNvbnN0IGNoYXIgKmZvcm1hdF9zdHIoaW50IGZvcm1hdF9pbmRleCkNCj4gPiAr ew0KPiA+ICsJc3dpdGNoIChmb3JtYXRzW2Zvcm1hdF9pbmRleF0pIHsNCj4gPiArCWNhc2UgRFJN X0ZPUk1BVF9SR0I1NjU6DQo+ID4gKwkJcmV0dXJuICJyZ2I1NjUiOw0KPiA+ICsJY2FzZSBEUk1f Rk9STUFUX1hSR0I4ODg4Og0KPiA+ICsJCXJldHVybiAieHJnYjg4ODgiOw0KPiA+ICsJY2FzZSBE Uk1fRk9STUFUX1hSR0IyMTAxMDEwOg0KPiA+ICsJCXJldHVybiAieHJnYjIxMDEwMTAiOw0KPiA+ ICsJZGVmYXVsdDoNCj4gPiArCQlpZ3RfYXNzZXJ0KGZhbHNlKTsNCj4gPiArCX0NCj4gPiArfQ0K PiA+ICsNCj4gPiArc3RhdGljIGNvbnN0IGNoYXIgKnRpbGluZ19zdHIoaW50IHRpbGluZ19pbmRl eCkNCj4gPiArew0KPiA+ICsJc3dpdGNoICh0aWxpbmdzW3RpbGluZ19pbmRleF0pIHsNCj4gPiAr CWNhc2UgRFJNX0ZPUk1BVF9NT0RfTElORUFSOg0KPiA+ICsJCXJldHVybiAidW50aWxlZCI7DQo+ ID4gKwljYXNlIEk5MTVfRk9STUFUX01PRF9YX1RJTEVEOg0KPiA+ICsJCXJldHVybiAieHRpbGVk IjsNCj4gPiArCWNhc2UgSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQ6DQo+ID4gKwkJcmV0dXJuICJ5 dGlsZWQiOw0KPiA+ICsJZGVmYXVsdDoNCj4gPiArCQlpZ3RfYXNzZXJ0KGZhbHNlKTsNCj4gPiAr CX0NCj4gPiArfQ0KPiA+ICsNCj4gPiArDQo+ID4gKyNkZWZpbmUgTUFYX0NPUkVTIDgNCj4gPiAr DQo+ID4gK3N0cnVjdCBkYXRhOw0KPiA+ICsNCj4gPiArc3RydWN0IHRocmVhZF9jb250ZXh0IHsN Cj4gPiArCXN0cnVjdCBkYXRhICpkYXRhOw0KPiA+ICsJaW50IGlkOw0KPiA+ICsJdm9pZCAqYnVm MTsNCj4gPiArCXZvaWQgKmJ1ZjI7DQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdHJ1Y3QgZ3B1X2Nv bnRleHQgew0KPiA+ICsJc3RydWN0IGRhdGEgKmRhdGE7DQo+ID4gKwlpbnQgcGlwZTsNCj4gPiAr CWludCBjb2xvcjsNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0cnVjdCBkYXRhIHsNCj4gPiArCWlu dCBkcm1fZmQ7DQo+ID4gKwlpZ3RfZGlzcGxheV90IGRpc3BsYXk7DQo+ID4gKwlpbnQgbnVtX3Bs YW5lczsNCj4gPiArCXVpbnQzMl90IGZvcm1hdDsNCj4gPiArCXVpbnQ2NF90IG1vZGlmaWVyOw0K PiA+ICsJdWludDMyX3QgZGV2aWQ7DQo+ID4gKwlkcm1faW50ZWxfYnVmbWdyICpidWZtZ3I7DQo+ ID4gKwlzdHJ1Y3QgaWd0X2ZiIGZiW0lHVF9NQVhfUElQRVNdOw0KPiA+ICsJc3RydWN0IGlndF9m YiBjdXJzb3JfZmJbSUdUX01BWF9QSVBFU107DQo+ID4gKwlwdGhyZWFkX3QgY3B1X3RocmVhZFtN QVhfQ09SRVNdOw0KPiA+ICsJYm9vbCBjcHVfdGhyZWFkX3N0b3BbTUFYX0NPUkVTXTsNCj4gPiAr CXN0cnVjdCB0aHJlYWRfY29udGV4dCBjcHVfY29udGV4dFtNQVhfQ09SRVNdOw0KPiA+ICsJc3Ry dWN0IGdwdV9jb250ZXh0IGdwdV9jb250ZXh0W0lHVF9NQVhfUElQRVNdOw0KPiA+ICt9Ow0KPiA+ ICsNCj4gPiArDQo+ID4gK3N0cnVjdCBiYXNlX2NyYyB7DQo+ID4gKwlib29sIHNldDsNCj4gPiAr CWlndF9jcmNfdCBjcmM7DQo+ID4gK307DQo+ID4gKw0KPiA+ICtpZ3RfcGlwZV9jcmNfdCAqcGlw ZV9jcmM7DQo+ID4gKw0KPiA+ICsjZGVmaW5lIEJVRl9TSVpFIDEyOCoxMDI0KjEwMjQNCj4gPiAr DQo+ID4gK3N0YXRpYyB2b2lkICpjcHVfbG9hZCh2b2lkICpkKQ0KPiA+ICt7DQo+ID4gKwljaGFy ICpidWYxLCAqYnVmMjsNCj4gPiArCXN0cnVjdCB0aHJlYWRfY29udGV4dCAqY29udGV4dCA9IChz dHJ1Y3QgdGhyZWFkX2NvbnRleHQgKilkOw0KPiA+ICsJc3RydWN0IGRhdGEgKmRhdGEgPSBjb250 ZXh0LT5kYXRhOw0KPiA+ICsNCj4gPiArCWJ1ZjEgPSBjb250ZXh0LT5idWYxOw0KPiA+ICsJYnVm MiA9IGNvbnRleHQtPmJ1ZjI7DQo+ID4gKw0KPiA+ICsJZGF0YS0+Y3B1X3RocmVhZF9zdG9wW2Nv bnRleHQtPmlkXSA9IGZhbHNlOw0KPiA+ICsNCj4gPiArCXdoaWxlKCFkYXRhLT5jcHVfdGhyZWFk X3N0b3BbY29udGV4dC0+aWRdKSB7DQo+ID4gKwkJbWVtY3B5KGJ1ZjEsIGJ1ZjIsIEJVRl9TSVpF KTsNCj4gPiArCQltZW1jcHkoYnVmMiwgYnVmMSwgQlVGX1NJWkUpOw0KPiA+ICsJfQ0KPiA+ICsN Cj4gPiArCXJldHVybiBOVUxMOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsNCj4gPiArc3RhdGljIHZv aWQgc2NyYXRjaF9idWZfaW5pdChzdHJ1Y3QgaWd0X2J1ZiAqYnVmLA0KPiA+ICsJCQlkcm1faW50 ZWxfYm8gKmJvLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludA0KPiA+IHN0cmlkZSwgaW50IHRp bGluZykNCj4gPiArew0KPiA+ICsJYnVmLT5ibyA9IGJvOw0KPiA+ICsJYnVmLT5zdHJpZGUgPSBz dHJpZGU7DQo+ID4gKwlidWYtPnRpbGluZyA9IHRpbGluZzsNCj4gPiArCWJ1Zi0+c2l6ZSA9IHdp ZHRoICogaGVpZ2h0ICogNDsNCj4gPiArCWJ1Zi0+YnBwID0gMzI7DQo+ID4gK30NCj4gPiArDQo+ ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCBncHVfbG9hZChzdHJ1Y3QgZ3B1X2NvbnRleHQgKmdwdV9j b250ZXh0KQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoID0g TlVMTDsNCj4gPiArCXN0cnVjdCBpZ3RfYnVmIGRzdDsNCj4gPiArCXN0cnVjdCBkYXRhICpkYXRh ID0gZ3B1X2NvbnRleHQtPmRhdGE7DQo+ID4gKwlpbnQgcGlwZSA9IGdwdV9jb250ZXh0LT5waXBl Ow0KPiA+ICsJaWd0X2ZpbGxmdW5jX3QgZ3BncHVfZmlsbCA9IE5VTEw7DQo+ID4gKwlkcm1faW50 ZWxfYm8gKmJvOw0KPiA+ICsJc3RydWN0IGlndF9mYiAqZmIgPSAmZGF0YS0+ZmJbcGlwZV07DQo+ ID4gKw0KPiA+ICsJaWYgKCFkYXRhLT5kZXZpZCkgew0KPiA+ICsJCWRhdGEtPmRldmlkID0gaW50 ZWxfZ2V0X2RybV9kZXZpZChkYXRhLT5kcm1fZmQpOw0KPiA+ICsJCWlndF9yZXF1aXJlX2dlbShk YXRhLT5kcm1fZmQpOw0KPiA+ICsNCj4gPiArCQlkYXRhLT5idWZtZ3IgPSBkcm1faW50ZWxfYnVm bWdyX2dlbV9pbml0KGRhdGEtPmRybV9mZCwNCj4gPiA0MDk2KTsNCj4gPiArCQlpZ3RfYXNzZXJ0 KGRhdGEtPmJ1Zm1ncik7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJZ3BncHVfZmlsbCA9IGlndF9n ZXRfZ3BncHVfZmlsbGZ1bmMoZGF0YS0+ZGV2aWQpOw0KPiA+ICsNCj4gPiArCWlndF9yZXF1aXJl X2YoZ3BncHVfZmlsbCwNCj4gPiArCSAgICAgICJubyBncGdwdS1maWxsIGZ1bmN0aW9uXG4iKTsN Cj4gPiArDQo+ID4gKwliYXRjaCA9IGludGVsX2JhdGNoYnVmZmVyX2FsbG9jKGRhdGEtPmJ1Zm1n ciwgZGF0YS0+ZGV2aWQpOw0KPiA+ICsJaWd0X2Fzc2VydChiYXRjaCk7DQo+ID4gKw0KPiA+ICsJ Ym8gPSBnZW1faGFuZGxlX3RvX2xpYmRybV9ibyhkYXRhLT5idWZtZ3IsIGRhdGEtPmRybV9mZCwg IiIsDQo+ID4gZmItPmdlbV9oYW5kbGUpOw0KPiA+ICsNCj4gPiArCXNjcmF0Y2hfYnVmX2luaXQo JmRzdCwgYm8sIGZiLT53aWR0aCwgZmItPmhlaWdodCwgZmItDQo+ID4gPnN0cmlkZXNbMF0sIGZi LT50aWxpbmcpOw0KPiA+ICsNCj4gPiArCWdwZ3B1X2ZpbGwoYmF0Y2gsDQo+ID4gKwkgICAmZHN0 LCAwLCAwLCAoZmItPndpZHRoICogNCksIGZiLT5oZWlnaHQsDQo+ID4gKwkgICBncHVfY29udGV4 dC0+Y29sb3IpOw0KPiA+ICsNCj4gPiArCWdwdV9jb250ZXh0LT5jb2xvciArPSAweDEwOw0KPiA+ ICsNCj4gPiArCWludGVsX2JhdGNoYnVmZmVyX2ZyZWUoYmF0Y2gpOw0KPiA+ICt9DQo+ID4gKw0K PiA+ICtzdGF0aWMgaW5saW5lIHVpbnQzMl90IHBpcGVfc2VsZWN0KGVudW0gcGlwZSBwaXBlKQ0K PiA+ICt7DQo+ID4gKwlpZiAocGlwZSA+IDEpDQo+ID4gKwkJcmV0dXJuIHBpcGUgPDwgRFJNX1ZC TEFOS19ISUdIX0NSVENfU0hJRlQ7DQo+ID4gKwllbHNlIGlmIChwaXBlID4gMCkNCj4gPiArCQly ZXR1cm4gRFJNX1ZCTEFOS19TRUNPTkRBUlk7DQo+ID4gKwllbHNlDQo+ID4gKwkJcmV0dXJuIDA7 DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyB1bnNpZ25lZCBnZXRfdmJsYW5rKGludCBmZCwg ZW51bSBwaXBlIHBpcGUsIHVuc2lnbmVkIGZsYWdzKQ0KPiA+ICt7DQo+ID4gKwl1bmlvbiBkcm1f d2FpdF92YmxhbmsgdmJsOw0KPiA+ICsNCj4gPiArCW1lbXNldCgmdmJsLCAwLCBzaXplb2YodmJs KSk7DQo+ID4gKwl2YmwucmVxdWVzdC50eXBlID0gRFJNX1ZCTEFOS19SRUxBVElWRSB8IHBpcGVf c2VsZWN0KHBpcGUpIHwNCj4gPiBmbGFnczsNCj4gPiArCWlmIChkcm1Jb2N0bChmZCwgRFJNX0lP Q1RMX1dBSVRfVkJMQU5LLCAmdmJsKSkNCj4gPiArCQlyZXR1cm4gMDsNCj4gPiArDQo+ID4gKwly ZXR1cm4gdmJsLnJlcGx5LnNlcXVlbmNlOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsNCj4gPiArc3Rh dGljIGludCBwbGFuZV9zdHJlc3Moc3RydWN0IGRhdGEgKmRhdGEsIGlndF9vdXRwdXRfdCAqb3V0 cHV0LA0KPiA+IGVudW0gcGlwZSBwaXBlLCBkcm1Nb2RlTW9kZUluZm8gKm1vZGUsIGJvb2wgZ3B1 KQ0KPiA+ICt7DQo+ID4gKwlpZ3RfcGxhbmVfdCAqcGxhbmU7DQo+ID4gKwl1aW50NjRfdCBjdXJz b3Jfd2lkdGgsIGN1cnNvcl9oZWlnaHQ7DQo+ID4gKwlpbnQgaTsNCj4gPiArCWludCByZXQ7DQo+ ID4gKwlpZ3RfY3JjX3QJY3JjLCBjcmMyOw0KPiA+ICsNCj4gPiArCWlndF9vdXRwdXRfb3ZlcnJp ZGVfbW9kZShvdXRwdXQsIG1vZGUpOw0KPiA+ICsJcmV0ID0gaWd0X2Rpc3BsYXlfdHJ5X2NvbW1p dF9hdG9taWMoJmRhdGEtPmRpc3BsYXksDQo+ID4gKwkJCURSTV9NT0RFX0FUT01JQ19URVNUX09O TFkgfA0KPiA+IERSTV9NT0RFX0FUT01JQ19BTExPV19NT0RFU0VULCBOVUxMKTsNCj4gPiArCWlm IChyZXQpIHsNCj4gPiArCQlyZXR1cm4gcmV0Ow0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCWlndF9v dXRwdXRfc2V0X3BpcGUob3V0cHV0LCBwaXBlKTsNCj4gPiArDQo+ID4gKwlpZ3RfZGlzcGxheV9j b21taXQyKCZkYXRhLT5kaXNwbGF5LCBDT01NSVRfQVRPTUlDKTsNCj4gPiArDQo+ID4gKwltb2Rl ID0gaWd0X291dHB1dF9nZXRfbW9kZShvdXRwdXQpOw0KPiA+ICsNCj4gPiArCWRvX29yX2RpZShk cm1HZXRDYXAoZGF0YS0+ZHJtX2ZkLCBEUk1fQ0FQX0NVUlNPUl9XSURUSCwNCj4gPiAmY3Vyc29y X3dpZHRoKSk7DQo+ID4gKwlkb19vcl9kaWUoZHJtR2V0Q2FwKGRhdGEtPmRybV9mZCwgRFJNX0NB UF9DVVJTT1JfSEVJR0hULA0KPiA+ICZjdXJzb3JfaGVpZ2h0KSk7DQo+ID4gKw0KPiA+ICsJaWYg KCFkYXRhLT5jdXJzb3JfZmJbcGlwZV0uZmJfaWQpIHsNCj4gPiArCQlpZ3RfY3JlYXRlX2NvbG9y X2ZiKGRhdGEtPmRybV9mZCwgY3Vyc29yX3dpZHRoLA0KPiA+IGN1cnNvcl9oZWlnaHQsDQo+ID4g KwkJCQlEUk1fRk9STUFUX0FSR0I4ODg4LA0KPiA+ICsJCQkJTE9DQUxfRFJNX0ZPUk1BVF9NT0Rf Tk9ORSwNCj4gPiArCQkJCQkxLjAsMC4wLDAuMCwNCj4gPiArCQkJCQkmZGF0YS0+Y3Vyc29yX2Zi W3BpcGVdKTsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlpZiAoIWRhdGEtPmZiW3BpcGVdLmZiX2lk KSB7DQo+ID4gKwkJaWd0X2NyZWF0ZV9jb2xvcl9wYXR0ZXJuX2ZiKGRhdGEtPmRybV9mZCwgbW9k ZS0NCj4gPiA+aGRpc3BsYXksIG1vZGUtPnZkaXNwbGF5LA0KPiA+ICsJCQkJICAgIGRhdGEtPmZv cm1hdCwNCj4gPiArCQkJCSAgICBkYXRhLT5tb2RpZmllciwNCj4gPiArCQkJCSAgICAwLjAsIDEu MCwgMC4wLCAmZGF0YS0+ZmJbcGlwZV0pOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXJldCA9IGln dF9kaXNwbGF5X3RyeV9jb21taXRfYXRvbWljKCZkYXRhLT5kaXNwbGF5LA0KPiA+IERSTV9NT0RF X0FUT01JQ19URVNUX09OTFkgfCBEUk1fTU9ERV9BVE9NSUNfQUxMT1dfTU9ERVNFVCwgTlVMTCk7 DQo+ID4gKwlpZiAocmV0KSB7DQo+ID4gKwkJaWd0X2luZm8oIlBsYW5lICVkIHBpcGUgJWQgdHJ5 IGNvbW1pdCBmYWlsZWQsDQo+ID4gZXhpdGluZ1xuIiwgaSwgcGlwZSk7DQo+ID4gKwkJZ290byBj bGVhbnVwOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCWlndF9kaXNwbGF5X2NvbW1pdDIoJmRhdGEt PmRpc3BsYXksIENPTU1JVF9BVE9NSUMpOw0KPiA+ICsNCj4gPiArCWkgPSAwOw0KPiA+ICsNCj4g PiArCWZvcl9lYWNoX3BsYW5lX29uX3BpcGUoJmRhdGEtPmRpc3BsYXksIHBpcGUsIHBsYW5lKSB7 DQo+ID4gKw0KPiA+ICsJCWlmIChwbGFuZS0+dHlwZSA9PSBEUk1fUExBTkVfVFlQRV9DVVJTT1Ip IHsNCj4gPiArCQkJaWd0X3BsYW5lX3NldF9mYihwbGFuZSwgJmRhdGEtDQo+ID4gPmN1cnNvcl9m YltwaXBlXSk7DQo+ID4gKwkJCWlndF9mYl9zZXRfc2l6ZSgmZGF0YS0+Y3Vyc29yX2ZiW3BpcGVd LCBwbGFuZSwNCj4gPiBjdXJzb3Jfd2lkdGgsIGN1cnNvcl9oZWlnaHQpOw0KPiA+ICsJCQlpZ3Rf cGxhbmVfc2V0X3NpemUocGxhbmUsIGN1cnNvcl93aWR0aCwNCj4gPiBjdXJzb3JfaGVpZ2h0KTsN Cj4gPiArCQl9IGVsc2Ugew0KPiA+ICsJCQlpZ3RfcGxhbmVfc2V0X2ZiKHBsYW5lLCAmZGF0YS0+ ZmJbcGlwZV0pOw0KPiA+ICsJCQlpZ3RfcGxhbmVfc2V0X3Bvc2l0aW9uKHBsYW5lLCAwLCAwKTsN Cj4gPiArCQkJaWd0X2ZiX3NldF9zaXplKCZkYXRhLT5mYltwaXBlXSwgcGxhbmUsIG1vZGUtDQo+ ID4gPmhkaXNwbGF5LCBtb2RlLT52ZGlzcGxheSk7DQo+ID4gKwkJCWlndF9wbGFuZV9zZXRfc2l6 ZShwbGFuZSwgbW9kZS0+aGRpc3BsYXksIG1vZGUtDQo+ID4gPnZkaXNwbGF5KTsNCj4gPiArCQl9 DQo+ID4gKw0KPiA+ICsJCXJldCA9IGlndF9kaXNwbGF5X3RyeV9jb21taXRfYXRvbWljKCZkYXRh LT5kaXNwbGF5LA0KPiA+IERSTV9NT0RFX0FUT01JQ19URVNUX09OTFkgfCBEUk1fTU9ERV9BVE9N SUNfQUxMT1dfTU9ERVNFVCwgTlVMTCk7DQo+ID4gKwkJaWYgKHJldCkgew0KPiA+ICsJCQlpZ3Rf aW5mbygiUGxhbmUgJWQgcGlwZSAlZCB0cnkgY29tbWl0IGZhaWxlZCwNCj4gPiBleGl0aW5nXG4i LCBpLCBwaXBlKTsNCj4gPiArCQkJZ290byBjbGVhbnVwOw0KPiA+ICsJCX0NCj4gPiArDQo+ID4g KwkJaWYgKCsraSA+PSBkYXRhLT5udW1fcGxhbmVzKQ0KPiA+ICsJCQlicmVhazsNCj4gPiArCX0N Cj4gPiArDQo+ID4gKwlpZiAoZ3B1KSB7DQo+ID4gKwkJZ3B1X2xvYWQoJmRhdGEtPmdwdV9jb250 ZXh0W3BpcGVdKTsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlpZ3RfZGlzcGxheV9jb21taXQyKCZk YXRhLT5kaXNwbGF5LCBDT01NSVRfQVRPTUlDKTsNCj4gPiArDQo+ID4gKwlnZXRfdmJsYW5rKGRh dGEtPmRpc3BsYXkuZHJtX2ZkLCBwaXBlLCBEUk1fVkJMQU5LX05FWFRPTk1JU1MpOw0KPiA+ICsN Cj4gPiArCWlndF9waXBlX2NyY19jb2xsZWN0X2NyYyhwaXBlX2NyYywgJmNyYyk7DQo+ID4gKw0K PiA+ICsJZ2V0X3ZibGFuayhkYXRhLT5kaXNwbGF5LmRybV9mZCwgcGlwZSwgRFJNX1ZCTEFOS19O RVhUT05NSVNTKTsNCj4gPiArDQo+ID4gKwlpZ3RfcGlwZV9jcmNfY29sbGVjdF9jcmMocGlwZV9j cmMsICZjcmMyKTsNCj4gPiArCWlndF9hc3NlcnRfY3JjX2VxdWFsKCZjcmMsICZjcmMyKTsNCj4g PiArDQo+ID4gKwlyZXR1cm4gMDsNCj4gPiArDQo+ID4gK2NsZWFudXA6DQo+ID4gKwlmb3JfZWFj aF9wbGFuZV9vbl9waXBlKCZkYXRhLT5kaXNwbGF5LCBwaXBlLCBwbGFuZSkgew0KPiA+ICsJCWln dF9wbGFuZV9zZXRfZmIocGxhbmUsIE5VTEwpOw0KPiA+ICsJfQ0KPiA+ICsJaWd0X3JlbW92ZV9m YihkYXRhLT5kaXNwbGF5LmRybV9mZCwgJmRhdGEtPmZiW3BpcGVdKTsNCj4gPiArCWRhdGEtPmZi W3BpcGVdLmZiX2lkID0gMDsNCj4gPiArDQo+ID4gKwlyZXR1cm4gcmV0Ow0KPiA+ICt9DQo+ID4g Kw0KPiA+ICsjZGVmaW5lIERVUkFUSU9OX1NFQyA1LjAwDQo+ID4gKw0KPiA+ICtzdGF0aWMgZHJt TW9kZU1vZGVJbmZvICogZmluZF9oaWdoZXN0X21vZGUoZHJtTW9kZUNvbm5lY3Rvcg0KPiA+ICpj b25uZWN0b3IpDQo+ID4gK3sNCj4gPiArCWRybU1vZGVNb2RlSW5mbyAqaGlnaGVzdF9tb2RlID0g TlVMTDsNCj4gPiArCWludCBqOw0KPiA+ICsNCj4gPiArCWZvciAoaiA9IDA7IGogPCBjb25uZWN0 b3ItPmNvdW50X21vZGVzOyBqKyspIHsNCj4gPiArCQlpZiAoIWhpZ2hlc3RfbW9kZSkgew0KPiA+ ICsJCQloaWdoZXN0X21vZGUgPSAmY29ubmVjdG9yLT5tb2Rlc1tqXTsNCj4gPiArCQl9DQo+ID4g KwkJZWxzZSBpZiAoY29ubmVjdG9yLT5tb2Rlc1tqXS52ZGlzcGxheSAmJiBjb25uZWN0b3ItDQo+ ID4gPm1vZGVzW2pdLmhkaXNwbGF5KSB7DQo+ID4gKwkJCWlmIChoaWdoZXN0X21vZGUtPmhkaXNw bGF5IDwgY29ubmVjdG9yLQ0KPiA+ID5tb2Rlc1tqXS5oZGlzcGxheSkNCj4gPiArCQkJCWhpZ2hl c3RfbW9kZSA9ICZjb25uZWN0b3ItPm1vZGVzW2pdOw0KPiA+ICsJCQl9DQo+ID4gKwl9DQo+ID4g Kw0KPiA+ICsJcmV0dXJuIGhpZ2hlc3RfbW9kZTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGlj IHZvaWQgc3RyZXNzKHN0cnVjdCBkYXRhICpkYXRhLCBib29sIG92ZXJyaWRlLCBib29sIGdwdSwg aW50DQo+ID4gZm9ybWF0X2lkeCwgaW50IHRpbGluZ19pZHgpDQo+ID4gK3sNCj4gPiArCXN0cnVj dCB0aW1lc3BlYyBzdGFydCwgZW5kOw0KPiA+ICsJaWd0X291dHB1dF90ICpvdXRwdXQ7DQo+ID4g KwlpbnQgcmV0O2ludCBjcnRjX2lkID0gMDsNCj4gPiArCWludCBpOw0KPiA+ICsJZHJtTW9kZU1v ZGVJbmZvICpoaWdoZXN0X21vZGUgPSBOVUxMOw0KPiA+ICsNCj4gPiArCWRybU1vZGVSZXMgKm1v ZGVfcmVzb3VyY2VzID0gZHJtTW9kZUdldFJlc291cmNlcyhkYXRhLT5kcm1fZmQpOw0KPiA+ICsN Cj4gPiArCWlmICghbW9kZV9yZXNvdXJjZXMpIHsNCj4gPiArCQlpZ3Rfd2FybigiZHJtTW9kZUdl dFJlc291cmNlcyBmYWlsZWQ6ICVzXG4iLA0KPiA+IHN0cmVycm9yKGVycm5vKSk7DQo+ID4gKwkJ cmV0dXJuOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCWNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RP TklDLCAmc3RhcnQpOw0KPiA+ICsNCj4gPiArCWRvIHsNCj4gPiArCQlmb3JfZWFjaF9waXBlX3dp dGhfbmV3X291dHB1dCgmZGF0YS0+ZGlzcGxheSwgcGlwZSwNCj4gPiBvdXRwdXQpIHsNCj4gPiAr CQkJY3J0Y19pZCA9IDA7DQo+ID4gKwkJCWZvciAoaSA9IDA7IGkgPCBtb2RlX3Jlc291cmNlcy0N Cj4gPiA+Y291bnRfY29ubmVjdG9yczsgaSsrKSB7DQo+ID4gKwkJCQlkcm1Nb2RlQ29ubmVjdG9y ICpjb25uZWN0b3I7DQo+ID4gKw0KPiA+ICsJCQkJY29ubmVjdG9yID0NCj4gPiBkcm1Nb2RlR2V0 Q29ubmVjdG9yQ3VycmVudChkYXRhLT5kcm1fZmQsDQo+ID4gKwkJCQkJCQkgICAgICAgbW9kZV9y ZXMNCj4gPiBvdXJjZXMtPmNvbm5lY3RvcnNbaV0pOw0KPiA+ICsJCQkJaWYgKCFjb25uZWN0b3Ip IHsNCj4gPiArCQkJCQlpZ3Rfd2FybigiY291bGQgbm90IGdldA0KPiA+IGNvbm5lY3RvciAlaTog JXNcbiIsIG1vZGVfcmVzb3VyY2VzLT5jb25uZWN0b3JzW2ldLA0KPiA+IHN0cmVycm9yKGVycm5v KSk7DQo+ID4gKwkJCQkJY29udGludWU7DQo+ID4gKwkJCQl9DQo+ID4gKw0KPiA+ICsJCQkJaWYg KCFjb25uZWN0b3ItPmNvdW50X21vZGVzKSB7DQo+ID4gKwkJCQkJZHJtTW9kZUZyZWVDb25uZWN0 b3IoY29ubmVjdG9yKQ0KPiA+IDsNCj4gPiArCQkJCQljb250aW51ZTsNCj4gPiArCQkJCX0NCj4g PiArDQo+ID4gKwkJCQlpZiAoY29ubmVjdG9yLT5jb25uZWN0aW9uID09DQo+ID4gRFJNX01PREVf Q09OTkVDVEVEKSB7DQo+ID4gKwkJCQkJaWYgKGNydGNfaWQgPT0gcGlwZSkgew0KPiA+ICsJCQkJ CQlpZiAoIW92ZXJyaWRlKSB7DQo+ID4gKwkJCQkJCQloaWdoZXN0X21vZGUgPQ0KPiA+IGZpbmRf aGlnaGVzdF9tb2RlKGNvbm5lY3Rvcik7DQo+ID4gKwkJCQkJCX0NCj4gPiArCQkJCQkJZWxzZQ0K PiA+ICsJCQkJCQkJaGlnaGVzdF9tb2RlID0NCj4gPiAmdWhkX21vZGVfNjBoejsNCj4gPiArDQo+ ID4gKwkJCQkJCWRhdGEtPmZvcm1hdCA9DQo+ID4gZm9ybWF0c1tmb3JtYXRfaWR4XTsNCj4gPiAr CQkJCQkJZGF0YS0+bW9kaWZpZXIgPQ0KPiA+IHRpbGluZ3NbdGlsaW5nX2lkeF07DQo+ID4gKwkJ CQkJCWRhdGEtPm51bV9wbGFuZXMgPQ0KPiA+IGRhdGEtPmRpc3BsYXkucGlwZXNbcGlwZV0ubl9w bGFuZXM7DQo+ID4gKw0KPiA+ICsJCQkJCQlpZ3RfaW5mbygiUGlwZSAlcyAlZA0KPiA+IHBsYW5l cywgdXNpbmcgbW9kZToiLCBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlKSwNCj4gPiArCQkJCQkJCQlk YXRhLQ0KPiA+ID5udW1fcGxhbmVzKTsNCj4gPiArDQo+ID4gKwkJCQkJCWttc3Rlc3RfZHVtcF9t b2RlKGhpZ2hlDQo+ID4gc3RfbW9kZSk7DQo+ID4gKw0KPiA+ICsJCQkJCQlwaXBlX2NyYyA9DQo+ ID4gaWd0X3BpcGVfY3JjX25ldyhkYXRhLT5kcm1fZmQsIHBpcGUsDQo+ID4gKwkJCQkJCQlJTlRF TF9QSVBFX0NSQ18NCj4gPiBTT1VSQ0VfQVVUTyk7DQo+ID4gKw0KPiA+ICsJCQkJCQlyZXQgPQ0K PiA+IHBsYW5lX3N0cmVzcyhkYXRhLCBvdXRwdXQsIHBpcGUsIGhpZ2hlc3RfbW9kZSwgZ3B1KTsN Cj4gPiArDQo+ID4gKwkJCQkJCWlndF9waXBlX2NyY19mcmVlKHBpcGVfDQo+ID4gY3JjKTsNCj4g PiArCQkJCQl9DQo+ID4gKwkJCQkJY3J0Y19pZCsrOw0KPiA+ICsJCQkJfQ0KPiA+ICsJCQkJZHJt TW9kZUZyZWVDb25uZWN0b3IoY29ubmVjdG9yKTsNCj4gPiArCQkJfQ0KPiA+ICsJCQlwaXBlKys7 DQo+ID4gKwkJfQ0KPiA+ICsJCWNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCAmZW5kKTsN Cj4gPiArCX0gd2hpbGUgKChpZ3RfdGltZV9lbGFwc2VkKCZzdGFydCwgJmVuZCkgPCBEVVJBVElP Tl9TRUMpICYmDQo+ID4gIXJldCk7DQo+IA0KPiANCj4gSXMgdGhlcmUgYSByZWFzb24gZm9yIHVz aW5nIGNsb2NrX2dldHRpbWUgd2l0aCBleHBsaWNpdA0KPiBDTE9DS19NT05PVE9OSUMgaW5zdGVh ZCBvZiBpZ3RfZ2V0dGltZT8gQW5kIGlndF90aW1lX2VsYXBzZWQgaW5zdGVhZA0KPiBvZiBpZ3Rf dW50aWxfdGltZW91dD8NCg0KSW4gZmFjdCBubywgSSBzaW1wbHkgc2F3IGEgbG90IG9mIHRlc3Qg Y2FzZXMgZG9pbmcgc28sIGxpa2Uga21zX3ZibGFuaw0KYW5kIHVzZWQgaXQgYXMgYSByZWZlcmVu Y2UuIENvbnNpZGVyaW5nIHRoYXQgaWd0X2dldHRpbWUgY2FuIGRvIHRoZQ0Kc2FtZSB0aGluZywg SSBndWVzcyBpdCB3aWxsIG1ha2UgdGhpbmdzIGVhc2llciBmb3IgbWUsIGp1c3QgYXMNCmlndF91 bnRpbF90aW1lb3V0IG1hY3JvLg0KSSBtb3N0bHkgdHJ5IHRvIHVzZSBleGlzdGluZyBJR1QgZnVu Y3Rpb25zIGluc3RlYWQgb2YgaW52ZW50aW5nIG15IG93biwNCmhvd2V2ZXIgdGhpcyB0aW1lIHBy b2JhYmx5IEkgdXNlZCB3cm9uZyBleGFtcGxlIGhlcmUgOikNCg0KPiANCj4gPiArDQo+ID4gKwlk cm1Nb2RlRnJlZVJlc291cmNlcyhtb2RlX3Jlc291cmNlcyk7DQo+ID4gK30NCj4gPiArDQo+ID4g K3N0YXRpYyB2b2lkIHRlc3Qoc3RydWN0IGRhdGEgKmRhdGEsIGJvb2wgb3ZlcnJpZGUsIGJvb2wg Y3B1LCBib29sDQo+ID4gZ3B1KQ0KPiA+ICt7DQo+ID4gKwlpbnQgaTsNCj4gPiArCWludCBudW1i ZXJfb2ZfY29yZXMgPSBtaW4oc3lzY29uZihfU0NfTlBST0NFU1NPUlNfT05MTiksDQo+ID4gTUFY X0NPUkVTKTsNCj4gPiArCWludCBmb3JtYXRfaWR4LCB0aWxpbmdfaWR4Ow0KPiA+ICsNCj4gPiAr CWlndF9maXh0dXJlIHsNCj4gPiArCQlmb3IgKGkgPSAwOyBpIDwgSUdUX01BWF9QSVBFUzsgaSsr KSB7DQo+ID4gKwkJCQlkYXRhLT5mYltpXS5mYl9pZCA9IDA7DQo+ID4gKwkJCQlkYXRhLT5jdXJz b3JfZmJbaV0uZmJfaWQgPSAwOw0KPiA+ICsJCX0NCj4gPiArCQlpZiAoZ3B1KSB7DQo+ID4gKwkJ CWZvciAoaSA9IDA7IGkgPCBJR1RfTUFYX1BJUEVTOyBpKyspIHsNCj4gPiArCQkJCWRhdGEtPmdw dV9jb250ZXh0W2ldLmRhdGEgPSBkYXRhOw0KPiA+ICsJCQkJZGF0YS0+Z3B1X2NvbnRleHRbaV0u cGlwZSA9IGk7DQo+ID4gKwkJCX0NCj4gPiArCQl9DQo+ID4gKw0KPiA+ICsJCWlmIChjcHUpIHsN Cj4gPiArCQkJZm9yIChpID0gMDsgaSA8IG51bWJlcl9vZl9jb3JlcztpKyspIHsNCj4gPiArCQkJ CWRhdGEtPmNwdV9jb250ZXh0W2ldLmJ1ZjEgPQ0KPiA+IG1hbGxvYyhCVUZfU0laRSk7DQo+ID4g KwkJCQlkYXRhLT5jcHVfY29udGV4dFtpXS5idWYyID0NCj4gPiBtYWxsb2MoQlVGX1NJWkUpOw0K PiA+ICsJCQkJZGF0YS0+Y3B1X2NvbnRleHRbaV0uaWQgPSBpOw0KPiA+ICsJCQkJZGF0YS0+Y3B1 X2NvbnRleHRbaV0uZGF0YSA9IGRhdGE7DQo+ID4gKwkJCQlwdGhyZWFkX2NyZWF0ZSgmZGF0YS0+ Y3B1X3RocmVhZFtpXSwNCj4gPiBOVUxMLCBjcHVfbG9hZCwgKHZvaWQqKSZkYXRhLT5jcHVfY29u dGV4dFtpXSk7DQo+ID4gKwkJCX0NCj4gPiArCQl9DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJZm9y IChmb3JtYXRfaWR4ID0gMDsgZm9ybWF0X2lkeCA8IE5fRk9STUFUUzsgZm9ybWF0X2lkeCsrKSB7 DQo+ID4gKwkJZm9yICh0aWxpbmdfaWR4ID0gMDsgdGlsaW5nX2lkeCA8IE5fVElMSU5HX01FVEhP RFM7DQo+ID4gdGlsaW5nX2lkeCsrKSB7DQo+ID4gKw0KPiA+ICsJCQlpZ3Rfc3VidGVzdF9mKCJz dHJlc3MlcyVzJXMtJXMtJXMiLA0KPiA+ICsJCQkJICAgICAgb3ZlcnJpZGUgPT0gZmFsc2UgPyAi IiA6ICItbW9kZS0NCj4gPiBvdmVycmlkZSIsDQo+ID4gKwkJCQkgICAgICBjcHUgPT0gZmFsc2Ug PyAiIiA6ICItY3B1LWxvYWQiLA0KPiA+ICsJCQkJICAgICAgZ3B1ID09IGZhbHNlID8gIiIgOiAi LWdwdS1sb2FkIiwNCj4gPiArCQkJCSAgICAgIGZvcm1hdF9zdHIoZm9ybWF0X2lkeCksDQo+ID4g KwkJCQkgICAgICB0aWxpbmdfc3RyKHRpbGluZ19pZHgpKQ0KPiANCj4gDQo+IERpZCB5b3UgbWVh biB0byBoYXZlIHNvbWUgYnJhY2VzIGhlcmU/DQo+IA0KPiANCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaWd0LWRldg==