From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Ceraolo Spurio, Daniele" Subject: Re: [PATCH v3] drm/i915/gen11: Preempt-to-idle support in execlists. Date: Tue, 22 May 2018 07:39:26 -0700 Message-ID: <988293c4-e6ce-6961-881e-3c3857506b04@intel.com> References: <1522163879-10837-1-git-send-email-tomasz.lis@intel.com> <1526053522-3745-1-git-send-email-tomasz.lis@intel.com> <1526053522-3745-2-git-send-email-tomasz.lis@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7A1936E1FD for ; Tue, 22 May 2018 14:39:35 +0000 (UTC) In-Reply-To: Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Lis, Tomasz" , intel-gfx@lists.freedesktop.org Cc: mika.kuoppala@intel.com List-Id: intel-gfx@lists.freedesktop.org CgpPbiA1LzIxLzIwMTggMzoxNiBBTSwgTGlzLCBUb21hc3ogd3JvdGU6Cj4gCj4gCj4gT24gMjAx OC0wNS0xOCAyMzowOCwgRGFuaWVsZSBDZXJhb2xvIFNwdXJpbyB3cm90ZToKPj4KPj4KPj4gT24g MTEvMDUvMTggMDg6NDUsIFRvbWFzeiBMaXMgd3JvdGU6Cj4+PiBUaGUgcGF0Y2ggYWRkcyBzdXBw b3J0IG9mIHByZWVtcHQtdG8taWRsZSByZXF1ZXN0aW5nIGJ5IHNldHRpbmcgYSBwcm9wZXIKPj4+ IGJpdCB3aXRoaW4gRXhlY2xpc3QgQ29udHJvbCBSZWdpc3RlciwgYW5kIHJlY2VpdmluZyBwcmVl bXB0aW9uIHJlc3VsdCAKPj4+IGZyb20KPj4+IENvbnRleHQgU3RhdHVzIEJ1ZmZlci4KPj4+Cj4+ PiBQcmVlbXB0aW9uIGluIHByZXZpb3VzIGdlbnMgcmVxdWlyZWQgYSBzcGVjaWFsIGJhdGNoIGJ1 ZmZlciB0byBiZSAKPj4+IGV4ZWN1dGVkLAo+Pj4gc28gdGhlIENvbW1hbmQgU3RyZWFtZXIgbmV2 ZXIgcHJlZW1wdGVkIHRvIGlkbGUgZGlyZWN0bHkuIEluIEljZWxha2UgCj4+PiBpdCBpcwo+Pj4g cG9zc2libGUsIGFzIHRoZXJlIGlzIGEgaGFyZHdhcmUgbWVjaGFuaXNtIHRvIGluZm9ybSB0aGUg a2VybmVsIGFib3V0Cj4+PiBzdGF0dXMgb2YgdGhlIHByZWVtcHRpb24gcmVxdWVzdC4KPj4+Cj4+ PiBUaGlzIHBhdGNoIGRvZXMgbm90IGNvdmVyIHVzaW5nIHRoZSBuZXcgcHJlZW1wdGlvbiBtZWNo YW5pc20gd2hlbiBHdUMgaXMKPj4+IGFjdGl2ZS4KPj4+Cj4+PiB2MjogQWRkZWQgbmVlZHNfcHJl ZW1wdF9jb250ZXh0KCkgY2hhbmdlIHNvIHRoYXQgaXQgaXMgbm90IGNyZWF0ZWQgd2hlbgo+Pj4g wqDCoMKgwqAgcHJlZW1wdC10by1pZGxlIGlzIHN1cHBvcnRlZC4gKENocmlzKQo+Pj4gwqDCoMKg wqAgVXBkYXRlZCBzZXR0aW5nIEhXQUNLIGZsYWcgc28gdGhhdCBpdCBpcyBjbGVhcmVkIGFmdGVy Cj4+PiDCoMKgwqDCoCBwcmVlbXB0LXRvLWRsZS4gKENocmlzLCBEYW5pZWxlKQo+Pj4gwqDCoMKg wqAgVXBkYXRlZCB0byB1c2UgSTkxNV9FTkdJTkVfSEFTX1BSRUVNUFRJT04gZmxhZy4gKENocmlz KQo+Pj4KPj4+IHYzOiBGaXhlZCBuZWVkc19wcmVlbXB0X2NvbnRleHQoKSBjaGFuZ2UuIChDaHJp cykKPj4+IMKgwqDCoMKgIE1lcmdlZCBwcmVlbXB0aW9uIHRyaWdnZXIgZnVuY3Rpb25zIHRvIG9u ZS4gKENocmlzKQo+Pj4gwqDCoMKgwqAgRml4ZWQgY29udGV4dCBzdGF0ZSB0byBub3QgYXNzdW1l IENPTVBMRVRFRF9NQVNLIGFmdGVyIHByZWVtcHRpb24sCj4+PiDCoMKgwqDCoCBzaW5jZSBpZGxl LXRvLWlkbGUgY2FzZSB3aWxsIG5vdCBoYXZlIGl0IHNldC4KPj4+Cj4+PiBCc3BlYzogMTg5MjIK Pj4+IFNpZ25lZC1vZmYtYnk6IFRvbWFzeiBMaXMgPHRvbWFzei5saXNAaW50ZWwuY29tPgo+Pj4g LS0tCj4+PiDCoCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5owqDCoMKgwqDCoMKgwqDC oMKgIHzCoMKgIDIgKwo+Pj4gwqAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4 dC5jwqAgfMKgwqAgNSArLQo+Pj4gwqAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wY2kuY8Kg wqDCoMKgwqDCoMKgwqDCoCB8wqDCoCAzICstCj4+PiDCoCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kZXZpY2VfaW5mby5oIHzCoMKgIDEgKwo+Pj4gwqAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfbHJjLmPCoMKgwqDCoMKgwqDCoMKgIHwgMTE1IAo+Pj4gKysrKysrKysrKysrKysrKysr KysrKy0tLS0tLS0tLQo+Pj4gwqAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmjCoMKg wqDCoMKgwqDCoMKgIHzCoMKgIDEgKwo+Pj4gwqAgNiBmaWxlcyBjaGFuZ2VkLCA5MiBpbnNlcnRp b25zKCspLCAzNSBkZWxldGlvbnMoLSkKPj4+Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaCAKPj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aAo+Pj4gaW5kZXggNTdmYjNhYS4uNmU5NjQ3YiAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmgKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmgKPj4+IEBAIC0yNTM1LDYgKzI1MzUsOCBAQCBpbnRlbF9pbmZvKGNvbnN0IHN0cnVjdCBk cm1faTkxNV9wcml2YXRlIAo+Pj4gKmRldl9wcml2KQo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgICgo ZGV2X3ByaXYpLT5pbmZvLmhhc19sb2dpY2FsX3JpbmdfZWxzcSkKPj4+IMKgICNkZWZpbmUgSEFT X0xPR0lDQUxfUklOR19QUkVFTVBUSU9OKGRldl9wcml2KSBcCj4+PiDCoMKgwqDCoMKgwqDCoMKg wqAgKChkZXZfcHJpdiktPmluZm8uaGFzX2xvZ2ljYWxfcmluZ19wcmVlbXB0aW9uKQo+Pj4gKyNk ZWZpbmUgSEFTX0hXX1BSRUVNUFRfVE9fSURMRShkZXZfcHJpdikgXAo+Pj4gK8KgwqDCoMKgwqDC oMKgICgoZGV2X3ByaXYpLT5pbmZvLmhhc19od19wcmVlbXB0X3RvX2lkbGUpCj4+PiDCoCDCoCAj ZGVmaW5lIEhBU19FWEVDTElTVFMoZGV2X3ByaXYpIEhBU19MT0dJQ0FMX1JJTkdfQ09OVEVYVFMo ZGV2X3ByaXYpCj4+PiDCoCBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fY29udGV4dC5jIAo+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0 LmMKPj4+IGluZGV4IDMzZjhhNGIuLmJkYWMxMjkgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2NvbnRleHQuYwo+Pj4gQEAgLTQ1NCw3ICs0NTQsMTAgQEAgZGVzdHJveV9r ZXJuZWxfY29udGV4dChzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAKPj4+ICoqY3R4cCkKPj4+IMKg IMKgIHN0YXRpYyBib29sIG5lZWRzX3ByZWVtcHRfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSkKPj4+IMKgIHsKPj4+IC3CoMKgwqAgcmV0dXJuIEhBU19MT0dJQ0FMX1JJTkdf UFJFRU1QVElPTihpOTE1KTsKPj4+ICvCoMKgwqAgcmV0dXJuIEhBU19MT0dJQ0FMX1JJTkdfUFJF RU1QVElPTihpOTE1KSAmJgo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgICghSEFTX0hXX1BSRUVN UFRfVE9fSURMRShpOTE1KSB8fAo+Pj4gK8KgwqDCoMKgwqDCoMKgIChIQVNfSFdfUFJFRU1QVF9U T19JRExFKGk5MTUpICYmCj4+PiArwqDCoMKgwqDCoMKgwqAgIVVTRVNfR1VDX1NVQk1JU1NJT04o aTkxNSkpKTsKPj4KPj4gV2h5IGRvIHdlIGtlZXAgdGhlIHByZWVtcHQgY29udGV4dCBmb3IgIVVT RVNfR1VDX1NVQk1JU1NJT04oaTkxNSkgZXZlbiAKPj4gaWYgSEFTX0hXX1BSRUVNUFRfVE9fSURM RShpOTE1KT8gQWZ0ZXIgdGhpcyBwYXRjaCB3ZSBzaG91bGRuJ3QgbmVlZCBpdCAKPj4gYW55bW9y ZSwgcmlnaHQ/Cj4gVGhlIHBhdGNoIG9ubHkgcHJvdmlkZXMgZ2VuMTEgd2F5IGZvciB0aGUgbm9u LUd1QyBzdWJtaXNzaW9uLiBUaGlzIGlzIAo+IHdoeSB0aGUgY29uZGl0aW9uIGlzIHNvIGNvbnZv bHV0ZWQgLSBwcmVlbXB0X2NvbnRleHQgaXMgc3RpbGwgbmVlZGVkIGlmIAo+IHdlIHVzZSBHdUMu Cj4gVGhpcyB3aWxsIGJlIHNpbXBsaWZpZWQgYWZ0ZXIgR3VDIHBhY2hlcyBhcmUgYWRkZWQuCgpt bW0gSSB0aGluayB0aGlzIGNoZWNrIGlzIHRoZSBvdGhlciB3YXkgYXJvdW5kIGJlY2F1c2UgaXQg cmV0dXJucyB0cnVlIAp3aGVuIEhBU19IV19QUkVFTVBUX1RPX0lETEUgZm9yICFVU0VTX0dVQ19T VUJNSVNTSU9OLCBzbyB3aGVuIEd1QyBpcyBub3QgCmluIHVzZS4gQlRXLCBHdUMgZG9lcyBub3Qg c3VwcG9ydCB1c2luZyB0aGUgcHJlZW1wdCBjb250ZXh0IG9uIHBsYXRmb3JtcyAKdGhhdCBoYXZl IEhXIHN1cHBvcnRlZCBwcmVlbXB0LXRvLWlkbGUsIHNvIHRoZXJlIGlzIG5vIG5lZWQgdG8ga2Vl cCB0aGUgCnByZWVtcHQgY29udGV4dCBhcm91bmQgZm9yIEd1Qy4KCj4+Cj4+PiDCoCB9Cj4+PiDC oCDCoCBpbnQgaTkxNV9nZW1fY29udGV4dHNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wY2ku YyAKPj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wY2kuYwo+Pj4gaW5kZXggNDM2NDky Mi4uNjZiNjcwMCAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGNp LmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGNpLmMKPj4+IEBAIC01OTUs NyArNTk1LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9kZXZpY2VfaW5mbyAKPj4+IGlu dGVsX2Nhbm5vbmxha2VfaW5mbyA9IHsKPj4+IMKgwqDCoMKgwqAgR0VOKDExKSwgXAo+Pj4gwqDC oMKgwqDCoCAuZGRiX3NpemUgPSAyMDQ4LCBcCj4+PiDCoMKgwqDCoMKgIC5oYXNfY3NyID0gMCwg XAo+Pj4gLcKgwqDCoCAuaGFzX2xvZ2ljYWxfcmluZ19lbHNxID0gMQo+Pj4gK8KgwqDCoCAuaGFz X2xvZ2ljYWxfcmluZ19lbHNxID0gMSwgXAo+Pj4gK8KgwqDCoCAuaGFzX2h3X3ByZWVtcHRfdG9f aWRsZSA9IDEKPj4+IMKgIMKgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfZGV2aWNlX2luZm8g aW50ZWxfaWNlbGFrZV8xMV9pbmZvID0gewo+Pj4gwqDCoMKgwqDCoCBHRU4xMV9GRUFUVVJFUywK Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZXZpY2VfaW5mby5o IAo+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZXZpY2VfaW5mby5oCj4+PiBpbmRl eCA5MzNlMzE2Li40ZWI5N2I1IDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGV2aWNlX2luZm8uaAo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGV2aWNlX2luZm8uaAo+Pj4gQEAgLTk4LDYgKzk4LDcgQEAgZW51bSBpbnRlbF9wbGF0Zm9ybSB7 Cj4+PiDCoMKgwqDCoMKgIGZ1bmMoaGFzX2xvZ2ljYWxfcmluZ19jb250ZXh0cyk7IFwKPj4+IMKg wqDCoMKgwqAgZnVuYyhoYXNfbG9naWNhbF9yaW5nX2Vsc3EpOyBcCj4+PiDCoMKgwqDCoMKgIGZ1 bmMoaGFzX2xvZ2ljYWxfcmluZ19wcmVlbXB0aW9uKTsgXAo+Pj4gK8KgwqDCoCBmdW5jKGhhc19o d19wcmVlbXB0X3RvX2lkbGUpOyBcCj4+PiDCoMKgwqDCoMKgIGZ1bmMoaGFzX292ZXJsYXkpOyBc Cj4+PiDCoMKgwqDCoMKgIGZ1bmMoaGFzX3Bvb2xlZF9ldSk7IFwKPj4+IMKgwqDCoMKgwqAgZnVu YyhoYXNfcHNyKTsgXAo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2xyYy5jIAo+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+Pj4gaW5kZXgg MjlkY2YzNC4uOGZlNjc5NSAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2xyYy5jCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+Pj4g QEAgLTE1NCw2ICsxNTQsNyBAQAo+Pj4gwqAgI2RlZmluZSBHRU44X0NUWF9TVEFUVVNfQUNUSVZF X0lETEXCoMKgwqAgKDEgPDwgMykKPj4+IMKgICNkZWZpbmUgR0VOOF9DVFhfU1RBVFVTX0NPTVBM RVRFwqDCoMKgICgxIDw8IDQpCj4+PiDCoCAjZGVmaW5lIEdFTjhfQ1RYX1NUQVRVU19MSVRFX1JF U1RPUkXCoMKgwqAgKDEgPDwgMTUpCj4+PiArI2RlZmluZSBHRU4xMV9DVFhfU1RBVFVTX1BSRUVN UFRfSURMRcKgwqDCoCAoMSA8PCAyOSkKPj4+IMKgIMKgICNkZWZpbmUgR0VOOF9DVFhfU1RBVFVT X0NPTVBMRVRFRF9NQVNLIFwKPj4+IMKgwqDCoMKgwqDCoCAoR0VOOF9DVFhfU1RBVFVTX0NPTVBM RVRFIHwgR0VOOF9DVFhfU1RBVFVTX1BSRUVNUFRFRCkKPj4+IEBAIC01MjYsMzEgKzUyNyw0OSBA QCBzdGF0aWMgdm9pZCBwb3J0X2Fzc2lnbihzdHJ1Y3QgZXhlY2xpc3RfcG9ydCAKPj4+ICpwb3J0 LCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKPj4+IMKgIHN0YXRpYyB2b2lkIGluamVjdF9wcmVl bXB0X2NvbnRleHQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+Pgo+PiBGb3IgZ2Vu MTErIHdlIGRvbid0IGluamVjdCBhIHByZWVtcHQgY29udGV4dCBhbnltb3JlLCBtYXliZSB3ZSBj YW4gCj4+IHJlbmFtZSB0aGlzIGZ1bmN0aW9uIHRvIHNvbWV0aGluZyBsaWtlICJpbmplY3RfcHJl ZW1wdCgpIi4KPiBNeSBpbml0aWFsIGFwcHJvYWNoIHdhcyB0byBqdXN0IGFkZCBhIHNlY29uZCBm dW5jdGlvbi4gTWVyZ2luZyB0aGUgCj4gY2hhbmdlcyB0byBpbmplY3RfcHJlZW1wdF9jb250ZXh0 KCkgd2FzIHJlcXVlc3RlZCBieSBDaHJpczsgYXMgSSAKPiB1bmRlcnN0YW5kIGl0IGlzIHRvIG1p bmltaXplIHJlZmFjdG9yaW5nIGluIG90aGVyIHdvcmsgaW4gcHJvZ3Jlc3MuCj4+Cj4+PiDCoCB7 Cj4+PiDCoMKgwqDCoMKgIHN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzICpleGVjbGlzdHMg PSAmZW5naW5lLT5leGVjbGlzdHM7Cj4+PiAtwqDCoMKgIHN0cnVjdCBpbnRlbF9jb250ZXh0ICpj ZSA9Cj4+PiAtwqDCoMKgwqDCoMKgwqAgdG9faW50ZWxfY29udGV4dChlbmdpbmUtPmk5MTUtPnBy ZWVtcHRfY29udGV4dCwgZW5naW5lKTsKPj4+IC3CoMKgwqAgdW5zaWduZWQgaW50IG47Cj4+PiDC oCAtwqDCoMKgIEdFTV9CVUdfT04oZXhlY2xpc3RzLT5wcmVlbXB0X2NvbXBsZXRlX3N0YXR1cyAh PQo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgIHVwcGVyXzMyX2JpdHMoY2UtPmxyY19kZXNjKSk7 Cj4+PiAtwqDCoMKgIEdFTV9CVUdfT04oKGNlLT5scmNfcmVnX3N0YXRlW0NUWF9DT05URVhUX0NP TlRST0wgKyAxXSAmCj4+PiAtIF9NQVNLRURfQklUX0VOQUJMRShDVFhfQ1RSTF9FTkdJTkVfQ1RY X1JFU1RPUkVfSU5ISUJJVCB8Cj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgQ1RYX0NUUkxfRU5HSU5FX0NUWF9TQVZFX0lOSElCSVQpKSAhPQo+Pj4gLSBf TUFTS0VEX0JJVF9FTkFCTEUoQ1RYX0NUUkxfRU5HSU5FX0NUWF9SRVNUT1JFX0lOSElCSVQgfAo+ Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBDVFhfQ1RSTF9F TkdJTkVfQ1RYX1NBVkVfSU5ISUJJVCkpOwo+Pj4gK8KgwqDCoCBpZiAoSEFTX0hXX1BSRUVNUFRf VE9fSURMRShlbmdpbmUtPmk5MTUpKSB7Cj4+PiArwqDCoMKgwqDCoMKgwqAgLyoKPj4+ICvCoMKg wqDCoMKgwqDCoMKgICogSWYgd2UgaGF2ZSBoYXJkd2FyZSBwcmVlbXB0LXRvLWlkbGUsIHdlIGRv IG5vdCBuZWVkIHRvCj4+PiArwqDCoMKgwqDCoMKgwqDCoCAqIGluamVjdCBhbnkgam9iIHRvIHRo ZSBoYXJkd2FyZS4gV2Ugb25seSBzZXQgYSBmbGFnLgo+Pj4gK8KgwqDCoMKgwqDCoMKgwqAgKi8K Pj4+ICvCoMKgwqDCoMKgwqDCoCBHRU1fVFJBQ0UoIiVzXG4iLCBlbmdpbmUtPm5hbWUpOwo+Pgo+ PiBUaGlzIHRyYWNlIGlzIGluIGJvdGggY29uZGl0aW9uYWwgYnJhbmNoZXMsIG1pZ2h0IGJlIGNs ZWFuZXIgdG8ganVzdCAKPj4gcHV0IGl0IGJlZm9yZSB0aGUgaWYgc3RhdGVtZW50Lgo+IFRydWUs IEkgZGlkIG5vdCBkaWZmZXJlbnRpYXRlZCB0aGUgbWVzc2FnZXMuIFdpbGwgcHV0IGJlZm9yZS4K Pj4KPj4+IMKgIC3CoMKgwqAgLyoKPj4+IC3CoMKgwqDCoCAqIFN3aXRjaCB0byBvdXIgZW1wdHkg cHJlZW1wdCBjb250ZXh0IHNvCj4+PiAtwqDCoMKgwqAgKiB0aGUgc3RhdGUgb2YgdGhlIEdQVSBp cyBrbm93biAoaWRsZSkuCj4+PiAtwqDCoMKgwqAgKi8KPj4+IC3CoMKgwqAgR0VNX1RSQUNFKCIl c1xuIiwgZW5naW5lLT5uYW1lKTsKPj4+IC3CoMKgwqAgZm9yIChuID0gZXhlY2xpc3RzX251bV9w b3J0cyhleGVjbGlzdHMpOyAtLW47ICkKPj4+IC3CoMKgwqDCoMKgwqDCoCB3cml0ZV9kZXNjKGV4 ZWNsaXN0cywgMCwgbik7Cj4+PiArwqDCoMKgwqDCoMKgwqAgLyoKPj4+ICvCoMKgwqDCoMKgwqDC oMKgICogaGFyZHdhcmUgd2hpY2ggSEFTX0hXX1BSRUVNUFRfVE9fSURMRSgpLCBhbHdheXMgYWxz bwo+Pj4gK8KgwqDCoMKgwqDCoMKgwqAgKiBIQVNfTE9HSUNBTF9SSU5HX0VMU1EoKSwgc28gd2Ug Y2FuIGFzc3VtZSBjdHJsX3JlZyBpcyBzZXQKPj4+ICvCoMKgwqDCoMKgwqDCoMKgICovCj4+PiAr wqDCoMKgwqDCoMKgwqAgR0VNX0JVR19PTihleGVjbGlzdHMtPmN0cmxfcmVnID09IE5VTEwpOwo+ Pj4gwqAgLcKgwqDCoCB3cml0ZV9kZXNjKGV4ZWNsaXN0cywgY2UtPmxyY19kZXNjLCBuKTsKPj4+ ICvCoMKgwqDCoMKgwqDCoCAvKiB0cmlnZ2VyIHByZWVtcHRpb24gdG8gaWRsZSAqLwo+Pj4gK8Kg wqDCoMKgwqDCoMKgIHdyaXRlbChFTF9DVFJMX1BSRUVNUFRfVE9fSURMRSwgZXhlY2xpc3RzLT5j dHJsX3JlZyk7Cj4+PiArwqDCoMKgIH0gZWxzZSB7Cj4+PiArwqDCoMKgwqDCoMKgwqAgc3RydWN0 IGludGVsX2NvbnRleHQgKmNlID0KPj4+ICsgdG9faW50ZWxfY29udGV4dChlbmdpbmUtPmk5MTUt PnByZWVtcHRfY29udGV4dCwgZW5naW5lKTsKPj4+ICvCoMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBp bnQgbjsKPj4+IMKgIC3CoMKgwqAgLyogd2UgbmVlZCB0byBtYW51YWxseSBsb2FkIHRoZSBzdWJt aXQgcXVldWUgKi8KPj4+IC3CoMKgwqAgaWYgKGV4ZWNsaXN0cy0+Y3RybF9yZWcpCj4+PiAtwqDC oMKgwqDCoMKgwqAgd3JpdGVsKEVMX0NUUkxfTE9BRCwgZXhlY2xpc3RzLT5jdHJsX3JlZyk7Cj4+ PiArwqDCoMKgwqDCoMKgwqAgR0VNX0JVR19PTihleGVjbGlzdHMtPnByZWVtcHRfY29tcGxldGVf c3RhdHVzICE9Cj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1cHBlcl8zMl9iaXRz KGNlLT5scmNfZGVzYykpOwo+Pj4gK8KgwqDCoMKgwqDCoMKgIEdFTV9CVUdfT04oKGNlLT5scmNf cmVnX3N0YXRlW0NUWF9DT05URVhUX0NPTlRST0wgKyAxXSAmCj4+PiArIF9NQVNLRURfQklUX0VO QUJMRShDVFhfQ1RSTF9FTkdJTkVfQ1RYX1JFU1RPUkVfSU5ISUJJVCB8Cj4+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIENUWF9DVFJMX0VOR0lORV9DVFhfU0FW RV9JTkhJQklUKSkgIT0KPj4+ICsgX01BU0tFRF9CSVRfRU5BQkxFKENUWF9DVFJMX0VOR0lORV9D VFhfUkVTVE9SRV9JTkhJQklUIHwKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgQ1RYX0NUUkxfRU5HSU5FX0NUWF9TQVZFX0lOSElCSVQpKTsKPj4+ICsKPj4+ ICvCoMKgwqDCoMKgwqDCoCAvKgo+Pj4gK8KgwqDCoMKgwqDCoMKgwqAgKiBTd2l0Y2ggdG8gb3Vy IGVtcHR5IHByZWVtcHQgY29udGV4dCBzbwo+Pj4gK8KgwqDCoMKgwqDCoMKgwqAgKiB0aGUgc3Rh dGUgb2YgdGhlIEdQVSBpcyBrbm93biAoaWRsZSkuCj4+PiArwqDCoMKgwqDCoMKgwqDCoCAqLwo+ Pj4gK8KgwqDCoMKgwqDCoMKgIEdFTV9UUkFDRSgiJXNcbiIsIGVuZ2luZS0+bmFtZSk7Cj4+PiAr wqDCoMKgwqDCoMKgwqAgZm9yIChuID0gZXhlY2xpc3RzX251bV9wb3J0cyhleGVjbGlzdHMpOyAt LW47ICkKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHdyaXRlX2Rlc2MoZXhlY2xpc3RzLCAw LCBuKTsKPj4+ICsKPj4+ICvCoMKgwqDCoMKgwqDCoCB3cml0ZV9kZXNjKGV4ZWNsaXN0cywgY2Ut PmxyY19kZXNjLCBuKTsKPj4+ICsKPj4+ICvCoMKgwqDCoMKgwqDCoCAvKiB3ZSBuZWVkIHRvIG1h bnVhbGx5IGxvYWQgdGhlIHN1Ym1pdCBxdWV1ZSAqLwo+Pj4gK8KgwqDCoMKgwqDCoMKgIGlmIChl eGVjbGlzdHMtPmN0cmxfcmVnKQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgd3JpdGVsKEVM X0NUUkxfTE9BRCwgZXhlY2xpc3RzLT5jdHJsX3JlZyk7Cj4+PiArwqDCoMKgIH0KPj4+IMKgIMKg wqDCoMKgwqAgZXhlY2xpc3RzX2NsZWFyX2FjdGl2ZSgmZW5naW5lLT5leGVjbGlzdHMsIAo+Pj4g RVhFQ0xJU1RTX0FDVElWRV9IV0FDSyk7Cj4+PiDCoMKgwqDCoMKgIGV4ZWNsaXN0c19zZXRfYWN0 aXZlKCZlbmdpbmUtPmV4ZWNsaXN0cywgCj4+PiBFWEVDTElTVFNfQUNUSVZFX1BSRUVNUFQpOwo+ Pj4gQEAgLTEwNDUsMjIgKzEwNjQsNTEgQEAgc3RhdGljIHZvaWQgCj4+PiBleGVjbGlzdHNfc3Vi bWlzc2lvbl90YXNrbGV0KHVuc2lnbmVkIGxvbmcgZGF0YSkKPj4+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0YXR1cywgYnVmWzIqaGVhZCArIDFdLAo+Pj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZXhlY2xpc3RzLT5hY3RpdmUpOwo+Pj4g wqAgLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKHN0YXR1cyAmIChHRU44X0NUWF9TVEFUVVNf SURMRV9BQ1RJVkUgfAo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBHRU44X0NUWF9TVEFUVVNfUFJFRU1QVEVEKSkKPj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgZXhlY2xpc3RzX3NldF9hY3RpdmUoZXhlY2xpc3RzLAo+Pj4gLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEVYRUNMSVNU U19BQ1RJVkVfSFdBQ0spOwo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKHN0YXR1cyAm IEdFTjhfQ1RYX1NUQVRVU19BQ1RJVkVfSURMRSkKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IC8qCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogQ2hlY2sgaWYgcHJlZW1wdGVkIGZy b20gaWRsZSB0byBpZGxlIGRpcmVjdGx5Lgo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAq IFRoZSBTVEFUVVNfSURMRV9BQ1RJVkUgZmxhZyBpcyB1c2VkIHRvIG1hcmsKPj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgKiBzdWNoIHRyYW5zaXRpb24uCj4+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgICovCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoKHN0YXR1cyAmIEdF TjhfQ1RYX1NUQVRVU19JRExFX0FDVElWRSkgJiYKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAoc3RhdHVzICYgR0VOMTFfQ1RYX1NUQVRVU19QUkVFTVBUX0lETEUpKSB7Cj4+ PiArCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGV4ZWNsaXN0c19jbGVh cl9hY3RpdmUoZXhlY2xpc3RzLAo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBFWEVDTElTVFNfQUNUSVZFX0hXQUNLKTsK Pj4KPj4gRVhFQ0xJU1RTX0FDVElWRV9IV0FDSyBzaG91bGQgYmUgYWxyZWFkeSBjbGVhciBoZXJl ICh3ZSBjbGVhciBpdCBib3RoIAo+PiB3aGVuIHdlIGluamVjdCB0aGUgcHJlLWVtcHRpb24gYW5k IG9uIHRoZSBwcmV2aW91cyBBLT5JIENTQiBldmVudCksIHNvIAo+PiB0aGVyZSBzaG91bGQgYmUg bm8gbmVlZCB0byBjbGVhciBpdC4KPiBUaGlzIGlzIGEgY29tcGxleCBjYXNlOyBvcHRpbWl6YXRp b25zIGhlcmUgbWF5IGxlYWQgdG8gZXJyb3JzIGxhdGVyLgo+IEJ1dCBJIGFncmVlIC0gc2luY2Ug dGhpcyBibG9jayBpcyBvbmx5IGVudGVyZWQgb24gaWRsZS10by1pZGxlIAo+IHByZWVtcHRpb24s IGFuZCBzZXR0aW5nIHRoZSBmbGFnIGNhbiBvbmx5IGhhcHBlbiB3aGVuIGhhcmR3YXJlIGlzIG5v dCAKPiBpZGxlLCB3ZSBzaG91bGQgbmV2ZXIgc2VlIHRoZSBBQ1RJVkVfSFdBQ0sgZmxhZyBzZXQg aGVyZS4KPiBJIHdpbGwgY2hhbmdlIGl0IHRvIEdFTV9CVUdfT04oKSwgdW5sZXNzIEkgd2lsbCBn ZXQgYW55IGVycm9ycyBpbiAKPiB0ZXN0aW5nIHRoYXQuCj4gCgpJJ20gbm90IHN1cmUgd2UgYWN0 dWFsbHkgbmVlZCB0byBjYXJlIGF0IGFsbCBhYm91dCAKRVhFQ0xJU1RTX0FDVElWRV9IV0FDSyBo ZXJlLiBGcm9tIHdoYXQgSSBjYW4gc2VlIHRoYXQgaXMgb25seSB1c2VkIHRvIAptYWtlIHN1cmUg d2UgZG9uJ3Qgc3VibWl0IHdoaWxlIHRoZSBleGVjbGlzdHMgSFcgaXMgbG9hZGluZyB0aGUgY3Vy cmVudCAKc3VibWlzc2lvbi4gSW4gdGhpcyBjYXNlIGhvd2V2ZXIgd2UncmUgc3VyZSBubyBzdWJt aXNzaW9ucyBhcmUgb2NjdXJyaW5nIApiZWNhdXNlIEVYRUNMSVNUU19BQ1RJVkVfUFJFRU1QVCBp cyBzZXQsIHNvIHdlJ3JlIGFscmVhZHkgZ3VhcmRlZC4KCkRhbmllbGUKCj4+Cj4+PiDCoCAtwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoIShzdGF0dXMgJiBHRU44X0NUWF9TVEFUVVNfQ09NUExF VEVEX01BU0spKQo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb250aW51ZTsK Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyoKPj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAqIFdlIGNvdWxkIG5vdCBoYXZlIENPTVBMRVRFRCBhbnl0aGlu Zwo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogaWYgd2Ugd2VyZSBpZGxl IGJlZm9yZSBwcmVlbXB0aW9uLgo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ICovCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEdFTV9CVUdfT04oc3RhdHVz ICYgR0VOOF9DVFhfU1RBVFVTX0NPTVBMRVRFRF9NQVNLKTsKPj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIH0KPj4+ICsKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGVsc2Ugewo+Pgo+PiBu aXRwaWNrOiBmb3JtYXR0aW5nIGlzIHdyb25nIGhlcmUuCj4gYWNrLgo+Pgo+PiBEYW5pZWxlCj4+ Cj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChzdGF0dXMgJiAoR0VOOF9D VFhfU1RBVFVTX0lETEVfQUNUSVZFIHwKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBHRU44X0NUWF9TVEFUVVNfUFJFRU1QVEVEKSkKPj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBleGVjbGlzdHNfc2V0X2FjdGl2 ZShleGVjbGlzdHMsCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIEVYRUNMSVNUU19BQ1RJVkVfSFdBQ0spOwo+Pj4gKwo+Pj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoc3RhdHVzICYgR0VOOF9DVFhfU1RB VFVTX0FDVElWRV9JRExFKQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGV4ZWNsaXN0c19jbGVhcl9hY3RpdmUoZXhlY2xpc3RzLAo+Pj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBFWEVDTElTVFNf QUNUSVZFX0hXQUNLKTsKPj4+IMKgIC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIFdlIHNob3Vs ZCBuZXZlciBnZXQgYSBDT01QTEVURUQgfCBJRExFX0FDVElWRSEgKi8KPj4+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgIEdFTV9CVUdfT04oc3RhdHVzICYgR0VOOF9DVFhfU1RBVFVTX0lETEVfQUNU SVZFKTsKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKCEoc3RhdHVzICYg R0VOOF9DVFhfU1RBVFVTX0NPTVBMRVRFRF9NQVNLKSkKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBjb250aW51ZTsKPj4+IMKgIC3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGlmIChzdGF0dXMgJiBHRU44X0NUWF9TVEFUVVNfQ09NUExFVEUgJiYKPj4+IC3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnVmWzIqaGVhZCArIDFdID09IAo+Pj4gZXhlY2xpc3Rz LT5wcmVlbXB0X2NvbXBsZXRlX3N0YXR1cykgewo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCAvKgo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogV2Ugc2hv dWxkIG5ldmVyIGdldCBhCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBD T01QTEVURUQgfCBJRExFX0FDVElWRSEKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAqLwo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBHRU1fQlVHX09OKHN0 YXR1cyAmIEdFTjhfQ1RYX1NUQVRVU19JRExFX0FDVElWRSk7Cj4+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB9Cj4+PiArCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKgo+Pj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAqIENoZWNrIGlmIHByZWVtcHRlZCB0byByZWFsIGlkbGUsIGVp dGhlciBkaXJlY3RseSBvcgo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIHRoZSBwcmVl bXB0aXZlIGNvbnRleHQgYWxyZWFkeSBmaW5pc2hlZCBleGVjdXRpbmcKPj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgKi8KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmICgoc3RhdHVz ICYgR0VOMTFfQ1RYX1NUQVRVU19QUkVFTVBUX0lETEUpIHx8Cj4+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIChzdGF0dXMgJiBHRU44X0NUWF9TVEFUVVNfQ09NUExFVEUgJiYKPj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnVmWzIqaGVhZCArIDFdID09IAo+Pj4g ZXhlY2xpc3RzLT5wcmVlbXB0X2NvbXBsZXRlX3N0YXR1cykpIHsKPj4+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgR0VNX1RSQUNFKCIlcyBwcmVlbXB0LWlkbGVcbiIsIGVuZ2lu ZS0+bmFtZSk7Cj4+PiDCoCDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGV4ZWNs aXN0c19jYW5jZWxfcG9ydF9yZXF1ZXN0cyhleGVjbGlzdHMpOwo+Pj4gQEAgLTIyMTcsNyArMjI2 NSw4IEBAIHN0YXRpYyB2b2lkIAo+Pj4gZXhlY2xpc3RzX3NldF9kZWZhdWx0X3N1Ym1pc3Npb24o c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+Pj4gwqDCoMKgwqDCoCBlbmdpbmUtPnVu cGFyayA9IE5VTEw7Cj4+PiDCoCDCoMKgwqDCoMKgIGVuZ2luZS0+ZmxhZ3MgfD0gSTkxNV9FTkdJ TkVfU1VQUE9SVFNfU1RBVFM7Cj4+PiAtwqDCoMKgIGlmIChlbmdpbmUtPmk5MTUtPnByZWVtcHRf Y29udGV4dCkKPj4+ICvCoMKgwqAgaWYgKGVuZ2luZS0+aTkxNS0+cHJlZW1wdF9jb250ZXh0IHx8 Cj4+PiArwqDCoMKgwqDCoMKgwqAgSEFTX0hXX1BSRUVNUFRfVE9fSURMRShlbmdpbmUtPmk5MTUp KQo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIGVuZ2luZS0+ZmxhZ3MgfD0gSTkxNV9FTkdJTkVfSEFT X1BSRUVNUFRJT047Cj4+PiDCoCDCoMKgwqDCoMKgIGVuZ2luZS0+aTkxNS0+Y2Fwcy5zY2hlZHVs ZXIgPQo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5oIAo+ Pj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuaAo+Pj4gaW5kZXggNGVjN2Q4ZC4u YjEwODNhYyAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5o Cj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuaAo+Pj4gQEAgLTQ1LDYg KzQ1LDcgQEAKPj4+IMKgICNkZWZpbmUgUklOR19FWEVDTElTVF9TUV9DT05URU5UUyhlbmdpbmUp IF9NTUlPKChlbmdpbmUpLT5tbWlvX2Jhc2UgCj4+PiArIDB4NTEwKQo+Pj4gwqAgI2RlZmluZSBS SU5HX0VYRUNMSVNUX0NPTlRST0woZW5naW5lKSBfTU1JTygoZW5naW5lKS0+bW1pb19iYXNlICsg Cj4+PiAweDU1MCkKPj4+IMKgICNkZWZpbmXCoMKgwqDCoMKgIEVMX0NUUkxfTE9BRMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoMSA8PCAwKQo+Pj4gKyNkZWZpbmXCoMKgwqDCoMKgIEVM X0NUUkxfUFJFRU1QVF9UT19JRExFwqDCoMKgwqDCoMKgwqAgKDEgPDwgMSkKPj4+IMKgIMKgIC8q IFRoZSBkb2NzIHNwZWNpZnkgdGhhdCB0aGUgd3JpdGUgcG9pbnRlciB3cmFwcyBhcm91bmQgYWZ0 ZXIgNWgsIAo+Pj4gIkFmdGVyIHN0YXR1cwo+Pj4gwqDCoCAqIGlzIHdyaXR0ZW4gb3V0IHRvIHRo ZSBsYXN0IGF2YWlsYWJsZSBzdGF0dXMgUVcgYXQgb2Zmc2V0IDVoLCAKPj4+IHRoaXMgcG9pbnRl cgo+Pj4KPiAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K SW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==