From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Zanoni, Paulo R" Subject: Re: [PATCH v4 3/8] drm/i915: Kill off intel_crtc->atomic.wait_vblank, v4. Date: Thu, 18 Feb 2016 17:02:54 +0000 Message-ID: <1455814972.2576.57.camel@intel.com> References: <1455108583-29227-1-git-send-email-maarten.lankhorst@linux.intel.com> <1455108583-29227-4-git-send-email-maarten.lankhorst@linux.intel.com> <1455744008.2576.41.camel@intel.com> <56C5C5AC.8080906@linux.intel.com> <1455804871.2576.51.camel@intel.com> <56C5D92A.6060403@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id 4F9ED6ECB8 for ; Thu, 18 Feb 2016 17:03:28 +0000 (UTC) In-Reply-To: <56C5D92A.6060403@linux.intel.com> Content-Language: en-US Content-ID: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "intel-gfx@lists.freedesktop.org" , "maarten.lankhorst@linux.intel.com" List-Id: intel-gfx@lists.freedesktop.org RW0gUXVpLCAyMDE2LTAyLTE4IMOgcyAxNTo0NiArMDEwMCwgTWFhcnRlbiBMYW5raG9yc3QgZXNj cmV2ZXU6DQo+IE9wIDE4LTAyLTE2IG9tIDE1OjE0IHNjaHJlZWYgWmFub25pLCBQYXVsbyBSOg0K PiA+IEVtIFF1aSwgMjAxNi0wMi0xOCDDoHMgMTQ6MjIgKzAxMDAsIE1hYXJ0ZW4gTGFua2hvcnN0 IGVzY3JldmV1Og0KPiA+ID4gT3AgMTctMDItMTYgb20gMjI6MjAgc2NocmVlZiBaYW5vbmksIFBh dWxvIFI6DQo+ID4gPiA+IEVtIFF1YSwgMjAxNi0wMi0xMCDDoHMgMTM6NDkgKzAxMDAsIE1hYXJ0 ZW4gTGFua2hvcnN0IGVzY3JldmV1Og0KPiA+ID4gPiA+IEN1cnJlbnRseSB3ZSBwZXJmb3JtIG91 ciBvd24gd2FpdCBpbiBwb3N0X3BsYW5lX3VwZGF0ZSwNCj4gPiA+ID4gPiBidXQgdGhlIGF0b21p YyBjb3JlIHBlcmZvcm1zIGFub3RoZXIgb25lIGluIHdhaXRfZm9yX3ZibGFua3MuDQo+ID4gPiA+ ID4gVGhpcyBtZWFucyB0aGF0IDIgdmJsYW5rcyBhcmUgZG9uZSB3aGVuIGEgZmIgaXMgY2hhbmdl ZCwNCj4gPiA+ID4gPiB3aGljaCBpcyBhIGJpdCBvdmVya2lsbC4NCj4gPiA+ID4gPiANCj4gPiA+ ID4gPiBNZXJnZSB0aGVtIGJ5IGNyZWF0aW5nIGEgaGVscGVyIGZ1bmN0aW9uIHRoYXQgdGFrZXMg YSBjcnRjDQo+ID4gPiA+ID4gbWFzaw0KPiA+ID4gPiA+IGZvciB0aGUgcGxhbmVzIHRvIHdhaXQg b24uDQo+ID4gPiA+ID4gDQo+ID4gPiA+ID4gVGhlIGJyb2Fkd2VsbCB2Ymxhbmsgd29ya2Fyb3Vu ZCBtYXkgbG9vayBnb25lIGVudGlyZWx5IGJ1dA0KPiA+ID4gPiA+IHRoaXMNCj4gPiA+ID4gPiBp cw0KPiA+ID4gPiA+IG5vdCB0aGUgY2FzZS4gcGlwZV9jb25maWctPndtX2NoYW5nZWQgaXMgc2V0 IHRvIHRydWUNCj4gPiA+ID4gPiB3aGVuIGFueSBwbGFuZSBpcyB0dXJuZWQgb24sIHdoaWNoIGZv cmNlcyBhIHZibGFuayB3YWl0Lg0KPiA+ID4gPiA+IA0KPiA+ID4gPiA+IENoYW5nZXMgc2luY2Ug djE6DQo+ID4gPiA+ID4gLSBSZW1vdmluZyB0aGUgZG91YmxlIHZibGFuayB3YWl0IG9uIGJyb2Fk d2VsbCBtb3ZlZCB0byBpdHMNCj4gPiA+ID4gPiBvd24NCj4gPiA+ID4gPiBjb21taXQuDQo+ID4g PiA+ID4gQ2hhbmdlcyBzaW5jZSB2MjoNCj4gPiA+ID4gPiAtIE1vdmUgb3V0IFBPV0VSX0RPTUFJ Tl9NT0RFU0VUIGhhbmRsaW5nIHRvIGl0cyBvd24gY29tbWl0Lg0KPiA+ID4gPiA+IENoYW5nZXMg c2luY2UgdjM6DQo+ID4gPiA+ID4gLSBEbyBub3Qgd2FpdCBmb3IgdmJsYW5rIG9uIGxlZ2FjeSBj dXJzb3IgdXBkYXRlcy4gKFZpbGxlKQ0KPiA+ID4gPiA+IC0gTW92ZSBicm9hZHdlbGwgdmJsYW5r IHdvcmthcm91bmQgY29tbWVudCB0bw0KPiA+ID4gPiA+IHBhZ2VfZmxpcF9maW5pc2hlZC4NCj4g PiA+ID4gPiAoVmlsbGUpDQo+ID4gPiA+ID4gQ2hhbmdlcyBzaW5jZSB2NDoNCj4gPiA+ID4gPiAt IENvbXBpbGUgZml4LCBsZWdhY3lfY3Vyc29yX2ZsaXAgLT4gKl91cGRhdGUuDQo+ID4gPiA+ID4g DQo+ID4gPiA+ID4gU2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFu a2hvcnN0QGxpbnV4LmludA0KPiA+ID4gPiA+IGVsLmMNCj4gPiA+ID4gPiBvbT4NCj4gPiA+ID4g PiAtLS0NCj4gPiA+ID4gPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pYy5jwqDC oHzCoMKgMSArDQo+ID4gPiA+ID4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5 LmMgfCA4Ng0KPiA+ID4gPiA+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQ0K PiA+ID4gPiA+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmjCoMKgwqDCoMKgfMKg wqAyICstDQo+ID4gPiA+ID4gwqAzIGZpbGVzIGNoYW5nZWQsIDY3IGluc2VydGlvbnMoKyksIDIy IGRlbGV0aW9ucygtKQ0KPiA+ID4gPiA+IA0KPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWMuYw0KPiA+ID4gPiA+IGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfYXRvbWljLmMNCj4gPiA+ID4gPiBpbmRleCA0NjI1ZjhhOWJhMTIuLjhlNTc5 YTg1MDVhYyAxMDA2NDQNCj4gPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9hdG9taWMuYw0KPiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0 b21pYy5jDQo+ID4gPiA+ID4gQEAgLTk3LDYgKzk3LDcgQEAgaW50ZWxfY3J0Y19kdXBsaWNhdGVf c3RhdGUoc3RydWN0IGRybV9jcnRjDQo+ID4gPiA+ID4gKmNydGMpDQo+ID4gPiA+ID4gwqAJY3J0 Y19zdGF0ZS0+ZGlzYWJsZV9scF93bSA9IGZhbHNlOw0KPiA+ID4gPiA+IMKgCWNydGNfc3RhdGUt PmRpc2FibGVfY3hzciA9IGZhbHNlOw0KPiA+ID4gPiA+IMKgCWNydGNfc3RhdGUtPndtX2NoYW5n ZWQgPSBmYWxzZTsNCj4gPiA+ID4gPiArCWNydGNfc3RhdGUtPmZiX2NoYW5nZWQgPSBmYWxzZTsN Cj4gPiA+ID4gPiDCoA0KPiA+ID4gPiA+IMKgCXJldHVybiAmY3J0Y19zdGF0ZS0+YmFzZTsNCj4g PiA+ID4gPiDCoH0NCj4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGlzcGxheS5jDQo+ID4gPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k aXNwbGF5LmMNCj4gPiA+ID4gPiBpbmRleCA4MDRmMmM2ZjI2MGQuLjRkNGRkZGMxZjk3MCAxMDA2 NDQNCj4gPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMN Cj4gPiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMNCj4g PiA+ID4gPiBAQCAtNDc4NSw5ICs0Nzg1LDYgQEAgc3RhdGljIHZvaWQNCj4gPiA+ID4gPiBpbnRl bF9wb3N0X3BsYW5lX3VwZGF0ZShzdHJ1Y3QNCj4gPiA+ID4gPiBpbnRlbF9jcnRjICpjcnRjKQ0K PiA+ID4gPiA+IMKgCQl0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPmJhc2Uuc3RhdGUpOw0KPiA+ ID4gPiA+IMKgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5iYXNlLmRldjsNCj4gPiA+ ID4gPiDCoA0KPiA+ID4gPiA+IC0JaWYgKGF0b21pYy0+d2FpdF92YmxhbmspDQo+ID4gPiA+ID4g LQkJaW50ZWxfd2FpdF9mb3JfdmJsYW5rKGRldiwgY3J0Yy0+cGlwZSk7DQo+ID4gPiA+ID4gLQ0K PiA+ID4gPiA+IMKgCWludGVsX2Zyb250YnVmZmVyX2ZsaXAoZGV2LCBhdG9taWMtPmZiX2JpdHMp Ow0KPiA+ID4gPiA+IMKgDQo+ID4gPiA+ID4gwqAJY3J0Yy0+d20uY3hzcl9hbGxvd2VkID0gdHJ1 ZTsNCj4gPiA+ID4gPiBAQCAtMTA5MDIsNiArMTA4OTksMTIgQEAgc3RhdGljIGJvb2wNCj4gPiA+ ID4gPiBwYWdlX2ZsaXBfZmluaXNoZWQoc3RydWN0DQo+ID4gPiA+ID4gaW50ZWxfY3J0YyAqY3J0 YykNCj4gPiA+ID4gPiDCoAkJcmV0dXJuIHRydWU7DQo+ID4gPiA+ID4gwqANCj4gPiA+ID4gPiDC oAkvKg0KPiA+ID4gPiA+ICsJwqAqIEJEVyBzaWduYWxzIGZsaXAgZG9uZSBpbW1lZGlhdGVseSBp ZiB0aGUgcGxhbmUNCj4gPiA+ID4gPiArCcKgKiBpcyBkaXNhYmxlZCwgZXZlbiBpZiB0aGUgcGxh bmUgZW5hYmxlIGlzIGFscmVhZHkNCj4gPiA+ID4gPiArCcKgKiBhcm1lZCB0byBvY2N1ciBhdCB0 aGUgbmV4dCB2YmxhbmsgOigNCj4gPiA+ID4gPiArCcKgKi8NCj4gPiA+ID4gSGF2aW5nIHRoaXMg Y29tbWVudCBoZXJlIGlzIGp1c3QuLi4gd2VpcmQuIEkgdGhpbmsgaXQgcmVtb3ZlcyBhDQo+ID4g PiA+IGxvdA0KPiA+ID4gPiBvZg0KPiA+ID4gPiB0aGUgY29udGV4dCB0aGF0IHdhcyBwcmVzZW50 IGJlZm9yZS4NCj4gPiA+ID4gDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsJLyoNCj4gPiA+ID4g PiDCoAnCoCogQSBEU1BTVVJGTElWRSBjaGVjayBpc24ndCBlbm91Z2ggaW4gY2FzZSB0aGUgbW1p bw0KPiA+ID4gPiA+IGFuZA0KPiA+ID4gPiA+IENTDQo+ID4gPiA+ID4gZmxpcHMNCj4gPiA+ID4g PiDCoAnCoCogdXNlZCB0aGUgc2FtZSBiYXNlIGFkZHJlc3MuIEluIHRoYXQgY2FzZSB0aGUgbW1p bw0KPiA+ID4gPiA+IGZsaXANCj4gPiA+ID4gPiBtaWdodA0KPiA+ID4gPiA+IMKgCcKgKiBoYXZl IGNvbXBsZXRlZCwgYnV0IHRoZSBDUyBoYXNuJ3QgZXZlbiBleGVjdXRlZA0KPiA+ID4gPiA+IHRo ZQ0KPiA+ID4gPiA+IGZsaXANCj4gPiA+ID4gPiB5ZXQuDQo+ID4gPiA+ID4gQEAgLTExNzc4LDYg KzExNzgxLDkgQEAgaW50DQo+ID4gPiA+ID4gaW50ZWxfcGxhbmVfYXRvbWljX2NhbGNfY2hhbmdl cyhzdHJ1Y3QNCj4gPiA+ID4gPiBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwNCj4gPiA+ID4g PiDCoAlpZiAoIXdhc192aXNpYmxlICYmICF2aXNpYmxlKQ0KPiA+ID4gPiA+IMKgCQlyZXR1cm4g MDsNCj4gPiA+ID4gPiDCoA0KPiA+ID4gPiA+ICsJaWYgKGZiICE9IG9sZF9wbGFuZV9zdGF0ZS0+ YmFzZS5mYikNCj4gPiA+ID4gPiArCQlwaXBlX2NvbmZpZy0+ZmJfY2hhbmdlZCA9IHRydWU7DQo+ ID4gPiA+ID4gKw0KPiA+ID4gPiA+IMKgCXR1cm5fb2ZmID0gd2FzX3Zpc2libGUgJiYgKCF2aXNp YmxlIHx8DQo+ID4gPiA+ID4gbW9kZV9jaGFuZ2VkKTsNCj4gPiA+ID4gPiDCoAl0dXJuX29uID0g dmlzaWJsZSAmJiAoIXdhc192aXNpYmxlIHx8IG1vZGVfY2hhbmdlZCk7DQo+ID4gPiA+ID4gwqAN Cj4gPiA+ID4gPiBAQCAtMTE3OTMsOCArMTE3OTksNiBAQCBpbnQNCj4gPiA+ID4gPiBpbnRlbF9w bGFuZV9hdG9taWNfY2FsY19jaGFuZ2VzKHN0cnVjdA0KPiA+ID4gPiA+IGRybV9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlLA0KPiA+ID4gPiA+IMKgDQo+ID4gPiA+ID4gwqAJCS8qIG11c3QgZGlzYWJs ZSBjeHNyIGFyb3VuZCBwbGFuZQ0KPiA+ID4gPiA+IGVuYWJsZS9kaXNhYmxlDQo+ID4gPiA+ID4g Ki8NCj4gPiA+ID4gPiDCoAkJaWYgKHBsYW5lLT50eXBlICE9IERSTV9QTEFORV9UWVBFX0NVUlNP Uikgew0KPiA+ID4gPiA+IC0JCQlpZiAoaXNfY3J0Y19lbmFibGVkKQ0KPiA+ID4gPiA+IC0JCQkJ aW50ZWxfY3J0Yy0NCj4gPiA+ID4gPiA+YXRvbWljLndhaXRfdmJsYW5rID0NCj4gPiA+ID4gPiB0 cnVlOw0KPiA+ID4gPiA+IMKgCQkJcGlwZV9jb25maWctPmRpc2FibGVfY3hzciA9IHRydWU7DQo+ ID4gPiA+ID4gwqAJCX0NCj4gPiA+ID4gV2UgY291bGQgaGF2ZSBraWxsZWQgdGhlIGJyYWNrZXRz IGhlcmUgOikNCj4gPiA+IEluZGVlZCwgd2lsbCBkbyBzbyBpbiBuZXh0IHZlcnNpb24uDQo+ID4g PiA+ID4gwqAJfSBlbHNlIGlmIChpbnRlbF93bV9uZWVkX3VwZGF0ZShwbGFuZSwgcGxhbmVfc3Rh dGUpKQ0KPiA+ID4gPiA+IHsNCj4gPiA+ID4gPiBAQCAtMTE4MTAsMTQgKzExODE0LDYgQEAgaW50 DQo+ID4gPiA+ID4gaW50ZWxfcGxhbmVfYXRvbWljX2NhbGNfY2hhbmdlcyhzdHJ1Y3QNCj4gPiA+ ID4gPiBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwNCj4gPiA+ID4gPiDCoAkJaW50ZWxfY3J0 Yy0+YXRvbWljLnBvc3RfZW5hYmxlX3ByaW1hcnkgPQ0KPiA+ID4gPiA+IHR1cm5fb247DQo+ID4g PiA+ID4gwqAJCWludGVsX2NydGMtPmF0b21pYy51cGRhdGVfZmJjID0gdHJ1ZTsNCj4gPiA+ID4g PiDCoA0KPiA+ID4gPiA+IC0JCS8qDQo+ID4gPiA+ID4gLQkJwqAqIEJEVyBzaWduYWxzIGZsaXAg ZG9uZSBpbW1lZGlhdGVseSBpZiB0aGUNCj4gPiA+ID4gPiBwbGFuZQ0KPiA+ID4gPiA+IC0JCcKg KiBpcyBkaXNhYmxlZCwgZXZlbiBpZiB0aGUgcGxhbmUgZW5hYmxlIGlzDQo+ID4gPiA+ID4gYWxy ZWFkeQ0KPiA+ID4gPiA+IC0JCcKgKiBhcm1lZCB0byBvY2N1ciBhdCB0aGUgbmV4dCB2Ymxhbmsg OigNCj4gPiA+ID4gPiAtCQnCoCovDQo+ID4gPiA+ID4gLQkJaWYgKHR1cm5fb24gJiYgSVNfQlJP QURXRUxMKGRldikpDQo+ID4gPiA+ID4gLQkJCWludGVsX2NydGMtPmF0b21pYy53YWl0X3ZibGFu ayA9DQo+ID4gPiA+ID4gdHJ1ZTsNCj4gPiA+ID4gPiAtDQo+ID4gPiA+ID4gwqAJCWJyZWFrOw0K PiA+ID4gPiA+IMKgCWNhc2UgRFJNX1BMQU5FX1RZUEVfQ1VSU09SOg0KPiA+ID4gPiA+IMKgCQli cmVhazsNCj4gPiA+ID4gPiBAQCAtMTE4MzEsMTIgKzExODI3LDEwIEBAIGludA0KPiA+ID4gPiA+ IGludGVsX3BsYW5lX2F0b21pY19jYWxjX2NoYW5nZXMoc3RydWN0DQo+ID4gPiA+ID4gZHJtX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUsDQo+ID4gPiA+ID4gwqAJCWlmIChJU19JVllCUklER0UoZGV2 KSAmJg0KPiA+ID4gPiA+IMKgCQnCoMKgwqDCoG5lZWRzX3NjYWxpbmcodG9faW50ZWxfcGxhbmVf c3RhdGUocGxhbmUNCj4gPiA+ID4gPiBfc3RhDQo+ID4gPiA+ID4gdGUpKQ0KPiA+ID4gPiA+ICYm DQo+ID4gPiA+ID4gwqAJCcKgwqDCoMKgIW5lZWRzX3NjYWxpbmcob2xkX3BsYW5lX3N0YXRlKSkg ew0KPiA+ID4gPiA+IC0JCQl0b19pbnRlbF9jcnRjX3N0YXRlKGNydGNfc3RhdGUpLQ0KPiA+ID4g PiA+ID4gZGlzYWJsZV9scF93bSA9IHRydWU7DQo+ID4gPiA+ID4gLQkJfSBlbHNlIGlmICh0dXJu X29mZiAmJiAhbW9kZV9jaGFuZ2VkKSB7DQo+ID4gPiA+ID4gLQkJCWludGVsX2NydGMtPmF0b21p Yy53YWl0X3ZibGFuayA9DQo+ID4gPiA+ID4gdHJ1ZTsNCj4gPiA+ID4gPiArCQkJcGlwZV9jb25m aWctPmRpc2FibGVfbHBfd20gPSB0cnVlOw0KPiA+ID4gPiA+ICsJCX0gZWxzZSBpZiAodHVybl9v ZmYgJiYgIW1vZGVfY2hhbmdlZCkNCj4gPiA+ID4gPiDCoAkJCWludGVsX2NydGMtDQo+ID4gPiA+ ID4gPiBhdG9taWMudXBkYXRlX3Nwcml0ZV93YXRlcm1hcmtzDQo+ID4gPiA+ID4gPiA9DQo+ID4g PiA+ID4gwqAJCQkJMSA8PCBpOw0KPiA+ID4gPiA+IC0JCX0NCj4gPiA+ID4gV2VpcmQgYnJhY2tl dHMgaGVyZS4gRWl0aGVyIGtpbGwgb24gYm90aCBzaWRlcyBvZiB0aGUgaWYNCj4gPiA+ID4gc3Rh dGVtZW50DQo+ID4gPiA+ICh0aGUNCj4gPiA+ID4gcHJlZmVycmVkIHdheSksIG9yIG5vbmUuDQoN Ckkgbm90aWNlZCB0aGF0IHlvdSBmaXggdGhlIGJyYWNrZXRzIG9uIHBhdGNoIDQvOCBieSByZW1v dmluZyB0aGUgImVsc2UiDQpwYXJ0LiBTbyBmZWVsIGZyZWUgdG8ga2VlcCB0aGlzIGNodW5rIGxp a2UgdGhpcywgc28geW91IHdvbid0IG5lZWQgdG8NCnJlc2VuZCBwYXRjaCA0Lg0KDQoNCj4gPiA+ ID4gDQo+ID4gPiA+IEFsc28sIHNob3VsZG4ndCB3ZSBpbnRyb2R1Y2UgcGlwZV9jb25maWctPnNw cml0ZV9jaGFuZ2VkPw0KPiA+ID4gPiBXaGF0J3MNCj4gPiA+ID4gZ3VhcmFudGVlaW5nIHRoYXQg d2UncmUgZ29pbmcgdG8gZGVmaW5pdGVseSB3YWl0IGZvciBhIHZibGFuaw0KPiA+ID4gPiBkdXJp bmcNCj4gPiA+ID4gc3ByaXRlIHVwZGF0ZXM/IEkgbGlrZSBleHBsaWNpdCBkdW1iLXByb29mIGNv ZGUgaW5zdGVhZCBvZg0KPiA+ID4gPiBpbXBsaWNhdGlvbnMNCj4gPiA+ID4gc3VjaCBhcyAid2Un cmUgZG9pbmcgd2FpdHMgZHVyaW5nIHNwcml0ZSB1cGRhdGVzIGJlY2F1c2UNCj4gPiA+ID4gd2hl bmV2ZXINCj4gPiA+ID4gd2UNCj4gPiA+ID4gdXBkYXRlIHNwcml0ZXMsIGEgc3BlY2lmaWMgdW5y ZWxhdGVkIHZhcmlhYmxlIHRoYXQncyB1c2VkIGZvciBhDQo+ID4gPiA+IGRpZmZlcmVudCBwdXJw b3NlIGdldHMgc2V0IHRvIHRydWUsIGFuZCB3ZSBjaGVjayBmb3IgdGhpcw0KPiA+ID4gPiB2YXJp YWJsZSIuDQo+ID4gPiBzcHJpdGVfY2hhbmdlZCB3b3VsZCBiZSBzYW1lIGFzIGZiX2NoYW5nZWQg KyB3bV9jaGFuZ2VkLCBhbmQNCj4gPiA+IHVwZGF0ZV9zcHJpdGVfd2F0ZXJtYXJrcyBnZXRzIHJl bW92ZWQgaW4gdGhpcyBzZXJpZXMNCj4gPiA+IGJlY2F1c2Ugbm90aGluZyB1c2VzIGl0Lg0KPiA+ IEhtbW0sIHJpZ2h0LiBGb3Igc29tZSByZWFzb24sIEkgd2FzIGludGVycHJldGluZyBmYl9jaGFu Z2VkIGFzDQo+ID4gYmVpbmcNCj4gPiBvbmx5IHZhbGlkIGZvciB0aGUgcHJpbWFyeSBmYiwgbm90 IGZvciBzcHIvY3VyLiBNeSBiYWQuIFNvDQo+ID4gZmJfY2hhbmdlZA0KPiA+IG1lYW5zICJpZiBh bnkgb2YgcHJpL2N1ci9zcHIgY2hhbmdlZCIgSSBndWVzcy4gTWF5YmUgcGxhbmVzX2NoYW5nZWQN Cj4gPiBjb3VsZCBiZSBhIGJldHRlciBuYW1lLCBvciBmYnNfY2hhbmdlZCAocGx1cmFsKSwgc2lu Y2Ugd2UncmUNCj4gPiB0YWxraW5nDQo+ID4gYWJvdXQgbW9yZSB0aGVuIG9uZSBwb3NzaWJsZSBw bGFuZSBoZXJlLiBOb3QgYSByZXF1aXJlbWVudCwganVzdA0KPiA+IHRocm93aW5nIHRoZSBpZGVh Lg0KPiBwbGFuZXNfY2hhbmdlZCBpcyBhbHJlYWR5IHVzZWQsIGl0IG1lYW5zIHRoYXQgYW55IHBs YW5lX3N0YXRlIGlzDQo+IGJlaW5nIHVwZGF0ZWQgZm9yIHRoaXMgY3J0Yy4NCj4gZmJzX2NoYW5n ZWQgY291bGQgd29yayB0aG91Z2gsIG1vc3Qgb3RoZXIgKl9jaGFuZ2VkIGFyZSBwbHVyYWwuDQo+ ID4gPiA+ID4gwqANCj4gPiA+ID4gPiDCoAkJYnJlYWs7DQo+ID4gPiA+ID4gwqAJfQ0KPiA+ID4g PiA+IEBAIC0xMzM3MCw2ICsxMzM2NCw0OCBAQCBzdGF0aWMgaW50DQo+ID4gPiA+ID4gaW50ZWxf YXRvbWljX3ByZXBhcmVfY29tbWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsDQo+ID4gPiA+ID4g wqAJcmV0dXJuIHJldDsNCj4gPiA+ID4gPiDCoH0NCj4gPiA+ID4gPiDCoA0KPiA+ID4gPiA+ICtz dGF0aWMgdm9pZCBpbnRlbF9hdG9taWNfd2FpdF9mb3JfdmJsYW5rcyhzdHJ1Y3QgZHJtX2Rldmlj ZQ0KPiA+ID4gPiA+ICpkZXYsDQo+ID4gPiA+ID4gKwkJCQkJwqDCoHN0cnVjdA0KPiA+ID4gPiA+ IGRybV9pOTE1X3ByaXZhdGUNCj4gPiA+ID4gPiAqZGV2X3ByaXYsDQo+ID4gPiA+ID4gKwkJCQkJ wqDCoHVuc2lnbmVkDQo+ID4gPiA+ID4gY3J0Y19tYXNrKQ0KPiA+ID4gPiA+ICt7DQo+ID4gPiA+ ID4gKwl1bnNpZ25lZCBsYXN0X3ZibGFua19jb3VudFtJOTE1X01BWF9QSVBFU107DQo+ID4gPiA+ ID4gKwllbnVtIHBpcGUgcGlwZTsNCj4gPiA+ID4gPiArCWludCByZXQ7DQo+ID4gPiA+ID4gKw0K PiA+ID4gPiA+ICsJaWYgKCFjcnRjX21hc2spDQo+ID4gPiA+ID4gKwkJcmV0dXJuOw0KPiA+ID4g PiA+ICsNCj4gPiA+ID4gPiArCWZvcl9lYWNoX3BpcGUoZGV2X3ByaXYsIHBpcGUpIHsNCj4gPiA+ ID4gPiArCQlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBkZXZfcHJpdi0NCj4gPiA+ID4gPiA+IHBp cGVfdG9fY3J0Y19tYXBwaW5nW3BpcGVdOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArCQlpZiAo ISgoMSA8PCBwaXBlKSAmIGNydGNfbWFzaykpDQo+ID4gPiA+ID4gKwkJCWNvbnRpbnVlOw0KPiA+ ID4gPiA+ICsNCj4gPiA+ID4gPiArCQlyZXQgPSBkcm1fY3J0Y192YmxhbmtfZ2V0KGNydGMpOw0K PiA+ID4gPiA+ICsJCWlmIChyZXQgIT0gMCkgew0KPiA+ID4gPiA+ICsJCQljcnRjX21hc2sgJj0g figxIDw8IHBpcGUpOw0KPiA+ID4gPiA+ICsJCQljb250aW51ZTsNCj4gPiA+ID4gU2hvdWxkbid0 IHdlIERSTV9FUlJPUiBoZXJlPw0KPiA+ID4gV0FSTl9PTiBpcyBlbm91Z2gsIHRoaXMgc2hvdWxk bid0IGV2ZXIgaGFwcGVuLg0KPiA+IEV2ZW4gYmV0dGVyIDopDQo+ID4gDQo+ID4gPiA+ID4gKwkJ fQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArCQlsYXN0X3ZibGFua19jb3VudFtwaXBlXSA9DQo+ ID4gPiA+ID4gZHJtX2NydGNfdmJsYW5rX2NvdW50KGNydGMpOw0KPiA+ID4gPiA+ICsJfQ0KPiA+ ID4gPiA+ICsNCj4gPiA+ID4gPiArCWZvcl9lYWNoX3BpcGUoZGV2X3ByaXYsIHBpcGUpIHsNCj4g PiA+ID4gPiArCQlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBkZXZfcHJpdi0NCj4gPiA+ID4gPiA+ IHBpcGVfdG9fY3J0Y19tYXBwaW5nW3BpcGVdOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArCQlp ZiAoISgoMSA8PCBwaXBlKSAmIGNydGNfbWFzaykpDQo+ID4gPiA+ID4gKwkJCWNvbnRpbnVlOw0K PiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArCQl3YWl0X2V2ZW50X3RpbWVvdXQoZGV2LT52Ymxhbmtb cGlwZV0ucXVldWUsDQo+ID4gPiA+ID4gKwkJCQlsYXN0X3ZibGFua19jb3VudFtwaXBlXSAhPQ0K PiA+ID4gPiA+ICsJCQkJCWRybV9jcnRjX3ZibGFua19jb3VuDQo+ID4gPiA+ID4gdChjcg0KPiA+ ID4gPiA+IHRjKSwNCj4gPiA+ID4gPiArCQkJCW1zZWNzX3RvX2ppZmZpZXMoNTApKTsNCj4gPiA+ ID4gQWxzbyBtYXliZSBEUk1fRVJST1IgaW4gY2FzZSB3ZSBoaXQgdGhlIHRpbWVvdXQ/DQo+ID4g PiA+IA0KPiA+ID4gPiBJIGtub3cgdGhlIG9yaWdpbmFsIGNvZGUgZG9lc24ndCBoYXZlIHRoaXMs IGJ1dCBub3cgdGhhdCB3ZSdyZQ0KPiA+ID4gPiBkb2luZyBvcg0KPiA+ID4gPiBvd24gdGhpbmcs IHdlIG1heSBzY3JlYW0gaW4gdW5leHBlY3RlZCBjYXNlcy4NCj4gPiA+IEknbGwgbWFrZSBpdCBh IFdBUk5fT04sIHNob3VsZG4ndCBoYXBwZW4uDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsJCWRy bV9jcnRjX3ZibGFua19wdXQoY3J0Yyk7DQo+ID4gPiA+ID4gKwl9DQo+ID4gPiA+ID4gK30NCj4g PiA+ID4gPiArDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiBUd28gbmV3bGluZXMgOikNCj4gPiA+IElu ZGVlZCENCj4gPiA+ID4gPiDCoC8qKg0KPiA+ID4gPiA+IMKgICogaW50ZWxfYXRvbWljX2NvbW1p dCAtIGNvbW1pdCB2YWxpZGF0ZWQgc3RhdGUgb2JqZWN0DQo+ID4gPiA+ID4gwqAgKiBAZGV2OiBE Uk0gZGV2aWNlDQo+ID4gPiA+ID4gQEAgLTEzMzk3LDYgKzEzNDMzLDcgQEAgc3RhdGljIGludCBp bnRlbF9hdG9taWNfY29tbWl0KHN0cnVjdA0KPiA+ID4gPiA+IGRybV9kZXZpY2UgKmRldiwNCj4g PiA+ID4gPiDCoAlpbnQgcmV0ID0gMCwgaTsNCj4gPiA+ID4gPiDCoAlib29sIGh3X2NoZWNrID0g aW50ZWxfc3RhdGUtPm1vZGVzZXQ7DQo+ID4gPiA+ID4gwqAJdW5zaWduZWQgbG9uZyBwdXRfZG9t YWluc1tJOTE1X01BWF9QSVBFU10gPSB7fTsNCj4gPiA+ID4gPiArCXVuc2lnbmVkIGNydGNfdmJs YW5rX21hc2sgPSAwOw0KPiA+ID4gPiA+IMKgDQo+ID4gPiA+ID4gwqAJcmV0ID0gaW50ZWxfYXRv bWljX3ByZXBhcmVfY29tbWl0KGRldiwgc3RhdGUsDQo+ID4gPiA+ID4gYXN5bmMpOw0KPiA+ID4g PiA+IMKgCWlmIChyZXQpIHsNCj4gPiA+ID4gPiBAQCAtMTM0NzAsOCArMTM1MDcsOSBAQCBzdGF0 aWMgaW50IGludGVsX2F0b21pY19jb21taXQoc3RydWN0DQo+ID4gPiA+ID4gZHJtX2RldmljZSAq ZGV2LA0KPiA+ID4gPiA+IMKgCWZvcl9lYWNoX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNy dGNfc3RhdGUsIGkpIHsNCj4gPiA+ID4gPiDCoAkJc3RydWN0IGludGVsX2NydGMgKmludGVsX2Ny dGMgPQ0KPiA+ID4gPiA+IHRvX2ludGVsX2NydGMoY3J0Yyk7DQo+ID4gPiA+ID4gwqAJCWJvb2wg bW9kZXNldCA9IG5lZWRzX21vZGVzZXQoY3J0Yy0+c3RhdGUpOw0KPiA+ID4gPiA+IC0JCWJvb2wg dXBkYXRlX3BpcGUgPSAhbW9kZXNldCAmJg0KPiA+ID4gPiA+IC0JCQl0b19pbnRlbF9jcnRjX3N0 YXRlKGNydGMtPnN0YXRlKS0NCj4gPiA+ID4gPiA+IHVwZGF0ZV9waXBlOw0KPiA+ID4gPiA+ICsJ CXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZyA9DQo+ID4gPiA+ID4gKwkJCXRv X2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpOw0KPiA+ID4gPiA+ICsJCWJvb2wgdXBkYXRl X3BpcGUgPSAhbW9kZXNldCAmJiBwaXBlX2NvbmZpZy0NCj4gPiA+ID4gPiA+IHVwZGF0ZV9waXBl Ow0KPiA+ID4gPiA+IMKgDQo+ID4gPiA+ID4gwqAJCWlmIChtb2Rlc2V0ICYmIGNydGMtPnN0YXRl LT5hY3RpdmUpIHsNCj4gPiA+ID4gPiDCoAkJCXVwZGF0ZV9zY2FubGluZV9vZmZzZXQodG9faW50 ZWxfY3J0Yw0KPiA+ID4gPiA+IChjcnQNCj4gPiA+ID4gPiBjKSk7DQo+ID4gPiA+ID4gQEAgLTEz NDg4LDE0ICsxMzUyNiwyMCBAQCBzdGF0aWMgaW50DQo+ID4gPiA+ID4gaW50ZWxfYXRvbWljX2Nv bW1pdChzdHJ1Y3QNCj4gPiA+ID4gPiBkcm1fZGV2aWNlICpkZXYsDQo+ID4gPiA+ID4gwqAJCcKg wqDCoMKgKGNydGMtPnN0YXRlLT5wbGFuZXNfY2hhbmdlZCB8fA0KPiA+ID4gPiA+IHVwZGF0ZV9w aXBlKSkNCj4gPiA+ID4gPiDCoAkJCWRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9wbGFuZXNfb25f Yw0KPiA+ID4gPiA+IHJ0YygNCj4gPiA+ID4gPiBjcnRjDQo+ID4gPiA+ID4gX3N0YXRlKTsNCj4g PiA+ID4gPiDCoA0KPiA+ID4gPiA+IC0JCWludGVsX3Bvc3RfcGxhbmVfdXBkYXRlKGludGVsX2Ny dGMpOw0KPiA+ID4gPiA+ICsJCWlmIChwaXBlX2NvbmZpZy0+YmFzZS5hY3RpdmUgJiYNCj4gPiA+ ID4gPiArCQnCoMKgwqDCoChwaXBlX2NvbmZpZy0+d21fY2hhbmdlZCB8fCBwaXBlX2NvbmZpZy0N Cj4gPiA+ID4gPiA+IGRpc2FibGVfY3hzciB8fA0KPiA+ID4gPiA+ICsJCcKgwqDCoMKgwqBwaXBl X2NvbmZpZy0+ZmJfY2hhbmdlZCkpDQo+ID4gPiA+IFNvIHRoZSB3bV9jaGFuZ2VkIGlzIGp1c3Qg Zm9yIHRoZSBCRFcgd29ya2Fyb3VuZCArIHNwcml0ZXM/DQo+ID4gPiA+IFdoYXQNCj4gPiA+ID4g YWJvdXQNCj4gPiA+ID4gdGhpcyBkaXNhYmxlX2N4c3IsIHdoeSBpcyBpdCBoZXJlPyBBbHNvIHNl ZSBteSBjb21tZW50IGFib3ZlDQo+ID4gPiA+IGFib3V0DQo+ID4gPiA+IHNwcml0ZV9jaGFuZ2Vk LiBNYXliZSB3ZSBuZWVkIHNvbWUgY29tbWVudHMgaGVyZSB0byBleHBsYWluIHRoZQ0KPiA+ID4g PiBjb21wbGV4DQo+ID4gPiA+IGNoZWNrcy4NCj4gPiA+IE5vIGl0J3Mgd2FpdGluZyBmb3IgYSB2 YmxhbmsgZm9yIHBvc3RfcGxhbmVfdXBkYXRlIHNvIGFsbA0KPiA+ID4gb3B0aW1pemVkDQo+ID4g PiB3bSB2YWx1ZXMNCj4gPiA+IGNhbiBnZXQgd3JpdHRlbiwgaXQncyBub3QganVzdCBmb3IgdGhl IEJEVyB3b3JrYXJvdW5kLg0KPiA+ID4gSXQganVzdCBoYXBwZW5zIHRvIGJlIHRoYXQgdGhlIEJE VyB3L2EgZ2V0cyBhcHBsaWVkIHRvbyBhcyBhIHNpZGUNCj4gPiA+IGVmZmVjdC4NCj4gPiBTbyBt YXliZSBzb21lIGNvbW1lbnQgcmVnYXJkaW5nIHRoZSBCRFcgV0EgY291bGQgYmUgaGVyZS4NCj4g PiANCj4gPiBXaGF0IGFib3V0IGRpc2FibGVfY3hzcj8gV2h5IGlzIHRoaXMgaGVyZT8NCj4gVGhh dCdzIHdoYXQgbWF0Y2hlcyB0aGUgY3VycmVudCBjb2RlLCBzZWUgdGhlIGNhbGNfY2hhbmdlcyBo dW5rIHdoaWNoDQo+IGhhZCBhIHZibGFua193YWl0ID0gdHJ1ZS4NCg0KSG1tLCByaWdodC4gSSBt aXNzZWQgdGhhdCwgc29ycnkuDQoNCj4gPiA+ID4gPiArCQkJY3J0Y192YmxhbmtfbWFzayB8PSAx IDw8IGk7DQo+ID4gPiA+ID4gwqAJfQ0KPiA+ID4gPiA+IMKgDQo+ID4gPiA+ID4gwqAJLyogRklY TUU6IGFkZCBzdWJwaXhlbCBvcmRlciAqLw0KPiA+ID4gPiA+IMKgDQo+ID4gPiA+ID4gLQlkcm1f YXRvbWljX2hlbHBlcl93YWl0X2Zvcl92YmxhbmtzKGRldiwgc3RhdGUpOw0KPiA+ID4gPiA+ICsJ aWYgKCFzdGF0ZS0+bGVnYWN5X2N1cnNvcl91cGRhdGUpDQo+ID4gPiA+ID4gKwkJaW50ZWxfYXRv bWljX3dhaXRfZm9yX3ZibGFua3MoZGV2LCBkZXZfcHJpdiwNCj4gPiA+ID4gPiBjcnRjX3ZibGFu a19tYXNrKTsNCj4gPiA+ID4gPiDCoA0KPiA+ID4gPiA+IMKgCWZvcl9lYWNoX2NydGNfaW5fc3Rh dGUoc3RhdGUsIGNydGMsIGNydGNfc3RhdGUsIGkpIHsNCj4gPiA+ID4gPiArCQlpbnRlbF9wb3N0 X3BsYW5lX3VwZGF0ZSh0b19pbnRlbF9jcnRjKGNydGMpKQ0KPiA+ID4gPiA+IDsNCj4gPiA+ID4g PiArDQo+ID4gPiA+ID4gwqAJCWlmIChwdXRfZG9tYWluc1tpXSkNCj4gPiA+ID4gPiDCoAkJCW1v ZGVzZXRfcHV0X3Bvd2VyX2RvbWFpbnMoZGV2X3ByaXYsDQo+ID4gPiA+ID4gcHV0X2RvbWFpbnNb aV0pOw0KPiA+ID4gPiA+IMKgCX0NCj4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHJ2LmgNCj4gPiA+ID4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rydi5oDQo+ID4gPiA+ID4gaW5kZXggMzM1ZTZiMjRiMGJjLi5lOTExYzg2Zjg3M2IgMTAw NjQ0DQo+ID4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgNCj4g PiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaA0KPiA+ID4gPiA+ IEBAIC0zNzksNiArMzc5LDcgQEAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgew0KPiA+ID4gPiA+ IMKgCWJvb2wgdXBkYXRlX3BpcGU7IC8qIGNhbiBhIGZhc3QgbW9kZXNldCBiZQ0KPiA+ID4gPiA+ IHBlcmZvcm1lZD8gKi8NCj4gPiA+ID4gPiDCoAlib29sIGRpc2FibGVfY3hzcjsNCj4gPiA+ID4g PiDCoAlib29sIHdtX2NoYW5nZWQ7IC8qIHdhdGVybWFya3MgYXJlIHVwZGF0ZWQgKi8NCj4gPiA+ ID4gPiArCWJvb2wgZmJfY2hhbmdlZDsgLyogZmIgb24gYW55IG9mIHRoZSBwbGFuZXMgaXMNCj4g PiA+ID4gPiBjaGFuZ2VkDQo+ID4gPiA+ID4gKi8NCj4gPiA+ID4gPiDCoA0KPiA+ID4gPiA+IMKg CS8qIFBpcGUgc291cmNlIHNpemUgKGllLiBwYW5lbCBmaXR0ZXIgaW5wdXQgc2l6ZSkNCj4gPiA+ ID4gPiDCoAnCoCogQWxsIHBsYW5lcyB3aWxsIGJlIHBvc2l0aW9uZWQgaW5zaWRlIHRoaXMgc3Bh Y2UsDQo+ID4gPiA+ID4gQEAgLTU0Nyw3ICs1NDgsNiBAQCBzdHJ1Y3QgaW50ZWxfY3J0Y19hdG9t aWNfY29tbWl0IHsNCj4gPiA+ID4gPiDCoA0KPiA+ID4gPiA+IMKgCS8qIFNsZWVwYWJsZSBvcGVy YXRpb25zIHRvIHBlcmZvcm0gYWZ0ZXIgY29tbWl0ICovDQo+ID4gPiA+ID4gwqAJdW5zaWduZWQg ZmJfYml0czsNCj4gPiA+ID4gPiAtCWJvb2wgd2FpdF92Ymxhbms7DQo+ID4gPiA+IE9uZSBvZiB0 aGUgdGhpbmdzIHRoYXQgSSBsaWtlIGFib3V0IHRoZSBjb2RlIHdpdGhvdXQgdGhpcyBwYXRjaA0K PiA+ID4gPiBpcw0KPiA+ID4gPiB0aGF0DQo+ID4gPiA+IGl0J3MgdmVyeSBleHBsaWNpdCBvbiB3 aGVuIHdlIG5lZWQgdG8gd2FpdCBmb3IgdmJsYW5rcyAoZXhjZXB0DQo+ID4gPiA+IGZvcg0KPiA+ ID4gPiB0aGUNCj4gPiA+ID4gcHJvYmxlbSB3aGVyZSB3ZSB3YWl0IHR3aWNlKS4gVGhlIG5ldyBj b2RlIGlzIG5vdCBhcyBlYXN5IHRvDQo+ID4gPiA+IHJlYWQvdW5kZXJzdGFuZCBhcyB0aGUgb2xk IG9uZS4gVGhpcyBjb21tZW50IGlzIHNpbWlsYXIgdG8gdGhlDQo+ID4gPiA+IG9uZQ0KPiA+ID4g PiBJDQo+ID4gPiA+IG1hZGUgaW4gcGF0Y2ggNjogSSdtIG5vdCBzdXJlIGlmIHNhY3JpZmljaW5n IHJlYWRhYmlsaXR5IGlzDQo+ID4gPiA+IHdvcnRoDQo+ID4gPiA+IGl0Lg0KPiA+ID4gPiANCj4g PiA+ID4gSSB3b25kZXIgdGhhdCBtYXliZSB0aGUgY2xlYW5lc3QgZml4IHRvIHRoZSAid2UncmUg d2FpdGluZyAyDQo+ID4gPiA+IHZibGFua3MiDQo+ID4gPiA+IHByb2JsZW0gaXMgdG8ganVzdCBy ZW1vdmUgdGhlIGNhbGwgdG8NCj4gPiA+ID4gZHJtX2F0b21pY19oZWxwZXJfd2FpdF9mb3JfdmJs YW5rcygpLCB3aGljaCB3b3VsZCBiZSBhIGZpcnN0DQo+ID4gPiA+IHBhdGNoLg0KPiA+ID4gPiBU aGVuIHdlJ2QgaGF2ZSBhIHNlY29uZCBwYXRjaCBpbnRyb2R1Y2luZw0KPiA+ID4gPiBpbnRlbF9h dG9taWNfd2FpdF9mb3JfdmJsYW5rcygpIGZvciB0aGUgIndhaXQgZm9yIGFsbCB2YmxhbmtzDQo+ ID4gPiA+IGF0DQo+ID4gPiA+IHRoZQ0KPiA+ID4gPiBzYW1lIHRpbWUiIG9wdGltaXphdGlvbiwg YW5kIHRoZW4gYSBsYXN0IGNvbW1pdCBwb3NzaWJseQ0KPiA+ID4gPiByZXBsYWNpbmcNCj4gPiA+ ID4gY29tbWl0LT53YWl0X3ZibGFuayBmb3Igc3RhdGUtPmZiX2NoYW5nZWQuIEp1c3QgYW4gaWRl YSwgbm90IGENCj4gPiA+ID4gcmVxdWVzdC4NCj4gPiA+IFRoZXJlIHdlcmUgY2FzZXMgaW4gd2hp Y2ggdGhlIGF0b21pYyBoZWxwZXIgd291bGQgd2FpdCBmb3INCj4gPiA+IHZibGFua3MNCj4gPiA+ IHdoaWNoDQo+ID4gPiB3b3VsZG4ndCB0cmlnZ2VyIGFueSBvZiB0aGUgb3RoZXIgY2hhbmdlcywg c28gaXQgY2FuJ3QgYmUgYmxpbmRseQ0KPiA+ID4gcmVtb3ZlZC4gTW9zdGx5IHdoZW4NCj4gPiA+ IHVwZGF0aW5nIGEgcGxhbmUgd2l0aCBhIHNhbWUgc2l6ZWQgZmIuDQo+ID4gVGhvc2UgY291bGQg YmUgc3BlY2lmaWNhbGx5IGFkZHJlc3NlZCBvbiB0aGVpciBvd24gcGF0Y2hlcywgdGhlbiA6KQ0K PiBJdCB3b3VsZCBicmVhayB0aGluZ3MgdGhvdWdoLg0KDQpPaywgbGV0J3MgZGlzY2FyZCB0aGUg aWRlYSB0aGVuLg0KDQo+IA0KPiBJIHRoaW5rIHdoYXQgbWlnaHQgbWFrZSB0aGUgbW9zdCBzZW5z ZSBpcyBhZGRpbmcgYSBpbmxpbmUgZnVuY3Rpb24NCj4gZm9yIG5lZWRzX3ZibGFuaywNCj4gd2l0 aCBjb21tZW50cyB3aHkgY2VydGFpbiBmbGFncyByZXF1aXJlIGEgdmJsYW5rIHdhaXQuDQoNClRo YXQgY291bGQgYmUgZ29vZC4NCg0KSSBoYXZlIG5vIGZ1cnRoZXIgcXVlc3Rpb25zL3JlcXVlc3Rz IGZvciB0aGlzIHBhdGNoLiBJbiB0aGUgZW5kLCBpdA0Kc2VlbXMgdGhlIGNoYW5nZXMgbmVlZGVk IGFyZSBzbWFsbCA6KS4gSSdsbCB3YWl0IGZvciB0aGUgbmV4dCB2ZXJzaW9uLg0KDQo+ID4gPiBX YWl0IGZvciB2YmxhbmsgaXMgcmVxdWlyZWQgZm9yIHVucGlubmluZywgaXQgd291bGQgYmUgYmFk IGlmIHRoZQ0KPiA+ID4gY3VycmVudCBmYiBpcyB1bnBpbm5lZC4NCj4gPiA+IA0KPiA+ID4gPiBJ J2xsIHdhaXQgZm9yIHlvdXIgYW5zd2VycyBiZWZvcmUgcmVhY2hpbmcgYW55IGNvbmNsdXNpb25z IG9mDQo+ID4gPiA+IHdoYXQNCj4gPiA+ID4gSQ0KPiA+ID4gPiB0aGluayBzaG91bGQgYmUgZG9u ZSwgc2luY2UgSSBtYXkgYmUgbWlzdW5kZXJzdGFuZGluZw0KPiA+ID4gPiBzb21ldGhpbmcuDQo+ ID4gPiBJIHdhbnQgdG8gY2FsbCBhbGwgcG9zdCBmbGlwIHdvcmsgc2NoZWR1bGVkIGxhdGVyIG9u IHNvIGl0DQo+ID4gPiBoYXBwZW5zDQo+ID4gPiBhZnRlciB0aGUgbmV4dCB2YmxhbmsuDQo+ID4g PiBUaGF0IHdpbGwgcmVtb3ZlIGFsbCBjb25mdXNpb24gb24gd2hlbiBhIHZibGFuayBpcyByZXF1 aXJlZCwNCj4gPiA+IGJlY2F1c2UNCj4gPiA+IGFsbCBwb3N0X3BsYW5lX3VwZGF0ZQ0KPiA+ID4g YW5kIHVucGluIHdpbGwgYWx3YXlzIHdhaXQgdW50aWwgbmV4dCB2YmxhbmsuDQo+ID4gPiANCj4g PiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+ID4g PiBJbnRlbC1nZnggbWFpbGluZyBsaXN0DQo+ID4gPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnDQo+ID4gPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2ludGVsLWdmeA0KPiAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50 ZWwtZ2Z4Cg==