From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH 1/1] drm/i915: make backlight hooks connector specific Date: Tue, 15 Sep 2015 10:00:49 +0300 Message-ID: <87bnd4jhem.fsf@intel.com> References: <20150914141743.GK3383@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id 02E356E2AD for ; Mon, 14 Sep 2015 23:57:36 -0700 (PDT) In-Reply-To: <20150914141743.GK3383@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniel Vetter Cc: m.deepak@intel.com, yetundex.adebisi@intel.com, intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCAxNCBTZXAgMjAxNSwgRGFuaWVsIFZldHRlciA8ZGFuaWVsQGZmd2xsLmNoPiB3cm90 ZToKPiBPbiBNb24sIFNlcCAxNCwgMjAxNSBhdCAwMjowMzo0OFBNICswMzAwLCBKYW5pIE5pa3Vs YSB3cm90ZToKPj4gUHJldmlvdXNseSB3ZSd2ZSByZWxpZWQgb24gaGF2aW5nIGJhc2ljYWxseSBv bmUgYmFja2xpZ2h0IGFuZCBvbmUKPj4gYmFja2xpZ2h0IHR5cGUgcGVyIHBsYXRmb3JtLiBUaGlz IGlzIGFscmVhZHkgYSBiaXQgcXVpcmt5IHdpdGggUE1JQyBQV00KPj4gc3VwcG9ydCBvbiBWTFYv Q0hWIHBsYXRmb3JtcyB3aXRoIE1JUEkgRFNJLiBJbiB0aGUgZm9yZXNlZWFibGUgZnV0dXJlCj4+ IHdlJ2xsIGhhdmUgYXQgbGVhc3QgRFBDRCBiYXNlZCBiYWNrbGlnaHQgY29udHJvbCBvbiBlRFAg YW5kIERDUyBjb21tYW5kCj4+IGJhc2VkIGJhY2tsaWdodCBjb250cm9sIG9uIE1JUEkgRFNJLiBC YWNrbGlnaHQgaXMgYmVjb21pbmcgbW9yZSBhbmQgbW9yZQo+PiBjb25uZWN0b3Igc3BlY2lmaWMs IHNvIHJlZmxlY3QgdGhpcyBmYWN0IGJ5IG1ha2luZyB0aGUgYmFja2xpZ2h0IGNvbnRyb2wKPj4g aG9va3MgY29ubmVjdG9yIHNwZWNpZmljLgo+PiAKPj4gVGhpcyBlbmFibGVzIGZ1cnRoZXIgd29y ayB0byByZXVzZSBnZW5lcmljIGJhY2tsaWdodCBjb2RlIGluCj4+IGludGVsX3BhbmVsLmMgd2hp bGUgYWRkaW5nIG1vcmUgc3BlY2lmaWMgYmFja2xpZ2h0IGNvZGUgYWNjZXNzZWQgdmlhIHRoZQo+ PiBob29rcy4KPj4gCj4+IENjOiBEZWVwYWsgTSA8bS5kZWVwYWtAaW50ZWwuY29tPgo+PiBDYzog WWV0dW5kZSBBZGViaXNpIDx5ZXR1bmRleC5hZGViaXNpQGludGVsLmNvbT4KPj4gU2lnbmVkLW9m Zi1ieTogSmFuaSBOaWt1bGEgPGphbmkubmlrdWxhQGludGVsLmNvbT4KPj4gLS0tCj4+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgfCAgIDkgLS0tCj4+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgfCAgIDIgLQo+PiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHAuYyAgICAgIHwgICAyICstCj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcnYuaCAgICAgfCAgMTMgKysrLQo+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFu ZWwuYyAgIHwgMTE2ICsrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tCj4+ICA1IGZp bGVzIGNoYW5nZWQsIDc0IGluc2VydGlvbnMoKyksIDY4IGRlbGV0aW9ucygtKQo+PiAKPj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5oCj4+IGluZGV4IDE3NGYzOWQwYmY0Ni4uODEzMDIzYjQzOGIyIDEw MDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPj4gQEAgLTY2NCwxNSArNjY0LDYgQEAgc3Ry dWN0IGRybV9pOTE1X2Rpc3BsYXlfZnVuY3Mgewo+PiAgCS8qIHJlbmRlciBjbG9jayBpbmNyZWFz ZS9kZWNyZWFzZSAqLwo+PiAgCS8qIGRpc3BsYXkgY2xvY2sgaW5jcmVhc2UvZGVjcmVhc2UgKi8K Pj4gIAkvKiBwbGwgY2xvY2sgaW5jcmVhc2UvZGVjcmVhc2UgKi8KPj4gLQo+PiAtCWludCAoKnNl dHVwX2JhY2tsaWdodCkoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBlbnVtIHBp cGUgcGlwZSk7Cj4+IC0JdWludDMyX3QgKCpnZXRfYmFja2xpZ2h0KShzdHJ1Y3QgaW50ZWxfY29u bmVjdG9yICpjb25uZWN0b3IpOwo+PiAtCXZvaWQgKCpzZXRfYmFja2xpZ2h0KShzdHJ1Y3QgaW50 ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsCj4+IC0JCQkgICAgICB1aW50MzJfdCBsZXZlbCk7Cj4+ IC0Jdm9pZCAoKmRpc2FibGVfYmFja2xpZ2h0KShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25u ZWN0b3IpOwo+PiAtCXZvaWQgKCplbmFibGVfYmFja2xpZ2h0KShzdHJ1Y3QgaW50ZWxfY29ubmVj dG9yICpjb25uZWN0b3IpOwo+PiAtCXVpbnQzMl90ICgqYmFja2xpZ2h0X2h6X3RvX3B3bSkoc3Ry dWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+PiAtCQkJCQl1aW50MzJfdCBoeik7Cj4+ ICB9Owo+PiAgCj4+ICBlbnVtIGZvcmNld2FrZV9kb21haW5faWQgewo+PiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGlzcGxheS5jCj4+IGluZGV4IGZjMDA4Njc0OGI3MS4uMTVkZTRjY2MzOTAzIDEw MDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4+IEBAIC0xNDUyMCw4ICsx NDUyMCw2IEBAIHN0YXRpYyB2b2lkIGludGVsX2luaXRfZGlzcGxheShzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KQo+PiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5xdWV1ZV9mbGlwID0gaW50ZWxfZGVmYXVs dF9xdWV1ZV9mbGlwOwo+PiAgCX0KPj4gIAo+PiAtCWludGVsX3BhbmVsX2luaXRfYmFja2xpZ2h0 X2Z1bmNzKGRldik7Cj4+IC0KPj4gIAltdXRleF9pbml0KCZkZXZfcHJpdi0+cHBzX211dGV4KTsK Pj4gIH0KPj4gIAo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPj4gaW5kZXggYTY4NzI1MDhhZGVj Li5mYTFhNTI0ODQ0ZDUgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2RwLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+PiBAQCAtNTk5 MCw3ICs1OTkwLDcgQEAgc3RhdGljIGJvb2wgaW50ZWxfZWRwX2luaXRfY29ubmVjdG9yKHN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4+ICAJfQo+PiAgCj4+ICAJaW50ZWxfcGFuZWxfaW5pdCgm aW50ZWxfY29ubmVjdG9yLT5wYW5lbCwgZml4ZWRfbW9kZSwgZG93bmNsb2NrX21vZGUpOwo+PiAt CWludGVsX2Nvbm5lY3Rvci0+cGFuZWwuYmFja2xpZ2h0X3Bvd2VyID0gaW50ZWxfZWRwX2JhY2ts aWdodF9wb3dlcjsKPj4gKwlpbnRlbF9jb25uZWN0b3ItPnBhbmVsLmJhY2tsaWdodC5wb3dlciA9 IGludGVsX2VkcF9iYWNrbGlnaHRfcG93ZXI7Cj4+ICAJaW50ZWxfcGFuZWxfc2V0dXBfYmFja2xp Z2h0KGNvbm5lY3RvciwgcGlwZSk7Cj4+ICAKPj4gIAlyZXR1cm4gdHJ1ZTsKPj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHJ2LmgKPj4gaW5kZXggMDJhNzU1YTUwYTk2Li4zNWE2NWNhMTA1YjMgMTAwNjQ0 Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4+IEBAIC0xODIsOSArMTgyLDE3IEBAIHN0cnVj dCBpbnRlbF9wYW5lbCB7Cj4+ICAJCXN0cnVjdCBwd21fZGV2aWNlICpwd207Cj4+ICAKPj4gIAkJ c3RydWN0IGJhY2tsaWdodF9kZXZpY2UgKmRldmljZTsKPj4gLQl9IGJhY2tsaWdodDsKPj4gIAo+ PiAtCXZvaWQgKCpiYWNrbGlnaHRfcG93ZXIpKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKiwgYm9v bCBlbmFibGUpOwo+PiArCQkvKiBDb25uZWN0b3IgYW5kIHBsYXRmb3JtIHNwZWNpZmljIGJhY2ts aWdodCBmdW5jdGlvbnMgKi8KPj4gKwkJaW50ICgqc2V0dXApKHN0cnVjdCBpbnRlbF9jb25uZWN0 b3IgKmNvbm5lY3RvciwgZW51bSBwaXBlIHBpcGUpOwo+PiArCQl1aW50MzJfdCAoKmdldCkoc3Ry dWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKTsKPj4gKwkJdm9pZCAoKnNldCkoc3RydWN0 IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLCB1aW50MzJfdCBsZXZlbCk7Cj4+ICsJCXZvaWQg KCpkaXNhYmxlKShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpOwo+PiArCQl2b2lk ICgqZW5hYmxlKShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpOwo+PiArCQl1aW50 MzJfdCAoKmh6X3RvX3B3bSkoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+PiAr CQkJCSAgICAgIHVpbnQzMl90IGh6KTsKPj4gKwkJdm9pZCAoKnBvd2VyKShzdHJ1Y3QgaW50ZWxf Y29ubmVjdG9yICosIGJvb2wgZW5hYmxlKTsKPj4gKwl9IGJhY2tsaWdodDsKPgo+IEZvciB0aGUg aW50ZXJmYWNlLCBjb3VsZCB3ZSBqdXN0IGFkZCBhIHN0cnVjdCBiYWNrbGlnaHRfZGV2aWNlIGlu c3RlYWQ/Cj4gWWVzIHRoZXJlJ3Mgbm8gdXNlZnVsIGtlcm5lbC1pbnRlcm5hbCBpbnRlcmZhY2Ug Zm9yIHRoYXQsIGJ1dCB3ZSBwcm9iYWJseQo+IG5lZWQgdG8gZml4IHRoaXMgc29vbmVyIG9yIGxh dGVyIGFueXdheS4gQW5kIGl0IHdvdWxkIGZ1dHVyZS1wcm9vZiB0aGluZ3MKPiBjb25zaWRlcmFi bGUgSSB0aGluay4KCk5vLiBUaGlzIGlzIG91ciBpbnRlcm5hbCBpbnRlcmZhY2UgdGhhdCdzIGJl ZW4gcHJvdmVuIHRvIGFic3RyYWN0IHNldmVuCnNsaWdodGx5IGRpZmZlcmVudCB3YXlzIG9mIGFk anVzdGluZyBiYWNrbGlnaHQsIHdpdGggY29tbW9uIGJvaWxlcnBsYXRlCnRvIGRlYWwgd2l0aCB0 aGUgcHJvYmxlbXMgb2Ygc3RydWN0IGJhY2tsaWdodF9kZXZpY2UgYW5kIHNjYWxpbmcgYW5kIHNv Cm9uLgoKQlIsCkphbmkuCgoKPiAtRGFuaWVsCj4KPj4gIH07Cj4+ICAKPj4gIHN0cnVjdCBpbnRl bF9jb25uZWN0b3Igewo+PiBAQCAtMTMyMiw3ICsxMzMwLDYgQEAgaW50IGludGVsX3BhbmVsX3Nl dHVwX2JhY2tsaWdodChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBlbnVtIHBpcGUg cGlwZSkKPj4gIHZvaWQgaW50ZWxfcGFuZWxfZW5hYmxlX2JhY2tsaWdodChzdHJ1Y3QgaW50ZWxf Y29ubmVjdG9yICpjb25uZWN0b3IpOwo+PiAgdm9pZCBpbnRlbF9wYW5lbF9kaXNhYmxlX2JhY2ts aWdodChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpOwo+PiAgdm9pZCBpbnRlbF9w YW5lbF9kZXN0cm95X2JhY2tsaWdodChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKTsK Pj4gLXZvaWQgaW50ZWxfcGFuZWxfaW5pdF9iYWNrbGlnaHRfZnVuY3Moc3RydWN0IGRybV9kZXZp Y2UgKmRldik7Cj4+ICBlbnVtIGRybV9jb25uZWN0b3Jfc3RhdHVzIGludGVsX3BhbmVsX2RldGVj dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPj4gIGV4dGVybiBzdHJ1Y3QgZHJtX2Rpc3BsYXlf bW9kZSAqaW50ZWxfZmluZF9wYW5lbF9kb3duY2xvY2soCj4+ICAJCQkJc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVs LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jCj4+IGluZGV4IDIwMzQ0Mzhh MDY2NC4uOWFkYjYyYjFiOTlmIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9wYW5lbC5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMK Pj4gQEAgLTU2Niw3ICs1NjYsNyBAQCBzdGF0aWMgdTMyIGludGVsX3BhbmVsX2dldF9iYWNrbGln aHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+PiAgCW11dGV4X2xvY2soJmRl dl9wcml2LT5iYWNrbGlnaHRfbG9jayk7Cj4+ICAKPj4gIAlpZiAocGFuZWwtPmJhY2tsaWdodC5l bmFibGVkKSB7Cj4+IC0JCXZhbCA9IGRldl9wcml2LT5kaXNwbGF5LmdldF9iYWNrbGlnaHQoY29u bmVjdG9yKTsKPj4gKwkJdmFsID0gcGFuZWwtPmJhY2tsaWdodC5nZXQoY29ubmVjdG9yKTsKPj4g IAkJdmFsID0gaW50ZWxfcGFuZWxfY29tcHV0ZV9icmlnaHRuZXNzKGNvbm5lY3RvciwgdmFsKTsK Pj4gIAl9Cj4+ICAKPj4gQEAgLTY1NSwxMyArNjU1LDEyIEBAIHN0YXRpYyB2b2lkIHB3bV9zZXRf YmFja2xpZ2h0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwgdTMyIGxldmVsKQo+ PiAgc3RhdGljIHZvaWQKPj4gIGludGVsX3BhbmVsX2FjdHVhbGx5X3NldF9iYWNrbGlnaHQoc3Ry dWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLCB1MzIgbGV2ZWwpCj4+ICB7Cj4+IC0Jc3Ry dWN0IGRybV9kZXZpY2UgKmRldiA9IGNvbm5lY3Rvci0+YmFzZS5kZXY7Cj4+IC0Jc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPj4gKwlzdHJ1Y3Qg aW50ZWxfcGFuZWwgKnBhbmVsID0gJmNvbm5lY3Rvci0+cGFuZWw7Cj4+ICAKPj4gIAlEUk1fREVC VUdfRFJJVkVSKCJzZXQgYmFja2xpZ2h0IFBXTSA9ICVkXG4iLCBsZXZlbCk7Cj4+ICAKPj4gIAls ZXZlbCA9IGludGVsX3BhbmVsX2NvbXB1dGVfYnJpZ2h0bmVzcyhjb25uZWN0b3IsIGxldmVsKTsK Pj4gLQlkZXZfcHJpdi0+ZGlzcGxheS5zZXRfYmFja2xpZ2h0KGNvbm5lY3RvciwgbGV2ZWwpOwo+ PiArCXBhbmVsLT5iYWNrbGlnaHQuc2V0KGNvbm5lY3RvciwgbGV2ZWwpOwo+PiAgfQo+PiAgCj4+ ICAvKiBzZXQgYmFja2xpZ2h0IGJyaWdodG5lc3MgdG8gbGV2ZWwgaW4gcmFuZ2UgWzAuLm1heF0s IHNjYWxpbmcgd3J0IGh3IG1pbiAqLwo+PiBAQCAtODM2LDcgKzgzNSw3IEBAIHZvaWQgaW50ZWxf cGFuZWxfZGlzYWJsZV9iYWNrbGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9y KQo+PiAgCWlmIChwYW5lbC0+YmFja2xpZ2h0LmRldmljZSkKPj4gIAkJcGFuZWwtPmJhY2tsaWdo dC5kZXZpY2UtPnByb3BzLnBvd2VyID0gRkJfQkxBTktfUE9XRVJET1dOOwo+PiAgCXBhbmVsLT5i YWNrbGlnaHQuZW5hYmxlZCA9IGZhbHNlOwo+PiAtCWRldl9wcml2LT5kaXNwbGF5LmRpc2FibGVf YmFja2xpZ2h0KGNvbm5lY3Rvcik7Cj4+ICsJcGFuZWwtPmJhY2tsaWdodC5kaXNhYmxlKGNvbm5l Y3Rvcik7Cj4+ICAKPj4gIAltdXRleF91bmxvY2soJmRldl9wcml2LT5iYWNrbGlnaHRfbG9jayk7 Cj4+ICB9Cj4+IEBAIC0xMDg1LDcgKzEwODQsNyBAQCB2b2lkIGludGVsX3BhbmVsX2VuYWJsZV9i YWNrbGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+PiAgCQkJCQkJIHBh bmVsLT5iYWNrbGlnaHQuZGV2aWNlLT5wcm9wcy5tYXhfYnJpZ2h0bmVzcyk7Cj4+ICAJfQo+PiAg Cj4+IC0JZGV2X3ByaXYtPmRpc3BsYXkuZW5hYmxlX2JhY2tsaWdodChjb25uZWN0b3IpOwo+PiAr CXBhbmVsLT5iYWNrbGlnaHQuZW5hYmxlKGNvbm5lY3Rvcik7Cj4+ICAJcGFuZWwtPmJhY2tsaWdo dC5lbmFibGVkID0gdHJ1ZTsKPj4gIAlpZiAocGFuZWwtPmJhY2tsaWdodC5kZXZpY2UpCj4+ICAJ CXBhbmVsLT5iYWNrbGlnaHQuZGV2aWNlLT5wcm9wcy5wb3dlciA9IEZCX0JMQU5LX1VOQkxBTks7 Cj4+IEBAIC0xMTEzLDEwICsxMTEyLDEwIEBAIHN0YXRpYyBpbnQgaW50ZWxfYmFja2xpZ2h0X2Rl dmljZV91cGRhdGVfc3RhdHVzKHN0cnVjdCBiYWNrbGlnaHRfZGV2aWNlICpiZCkKPj4gIAkgKiBj YWxsYmFjayBuZWVkcyB0byB0YWtlIHRoaXMgaW50byBhY2NvdW50Lgo+PiAgCSAqLwo+PiAgCWlm IChwYW5lbC0+YmFja2xpZ2h0LmVuYWJsZWQpIHsKPj4gLQkJaWYgKHBhbmVsLT5iYWNrbGlnaHRf cG93ZXIpIHsKPj4gKwkJaWYgKHBhbmVsLT5iYWNrbGlnaHQucG93ZXIpIHsKPj4gIAkJCWJvb2wg ZW5hYmxlID0gYmQtPnByb3BzLnBvd2VyID09IEZCX0JMQU5LX1VOQkxBTksgJiYKPj4gIAkJCQli ZC0+cHJvcHMuYnJpZ2h0bmVzcyAhPSAwOwo+PiAtCQkJcGFuZWwtPmJhY2tsaWdodF9wb3dlcihj b25uZWN0b3IsIGVuYWJsZSk7Cj4+ICsJCQlwYW5lbC0+YmFja2xpZ2h0LnBvd2VyKGNvbm5lY3Rv ciwgZW5hYmxlKTsKPj4gIAkJfQo+PiAgCX0gZWxzZSB7Cj4+ICAJCWJkLT5wcm9wcy5wb3dlciA9 IEZCX0JMQU5LX1BPV0VSRE9XTjsKPj4gQEAgLTEzNDEsNiArMTM0MCw3IEBAIHN0YXRpYyB1MzIg Z2V0X2JhY2tsaWdodF9tYXhfdmJ0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikK Pj4gIHsKPj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY29ubmVjdG9yLT5iYXNlLmRldjsK Pj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRl Owo+PiArCXN0cnVjdCBpbnRlbF9wYW5lbCAqcGFuZWwgPSAmY29ubmVjdG9yLT5wYW5lbDsKPj4g IAl1MTYgcHdtX2ZyZXFfaHogPSBkZXZfcHJpdi0+dmJ0LmJhY2tsaWdodC5wd21fZnJlcV9oejsK Pj4gIAl1MzIgcHdtOwo+PiAgCj4+IEBAIC0xMzQ5LDEyICsxMzQ5LDEyIEBAIHN0YXRpYyB1MzIg Z2V0X2JhY2tsaWdodF9tYXhfdmJ0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikK Pj4gIAkJcmV0dXJuIDA7Cj4+ICAJfQo+PiAgCj4+IC0JaWYgKCFkZXZfcHJpdi0+ZGlzcGxheS5i YWNrbGlnaHRfaHpfdG9fcHdtKSB7Cj4+ICsJaWYgKCFwYW5lbC0+YmFja2xpZ2h0Lmh6X3RvX3B3 bSkgewo+PiAgCQlEUk1fREVCVUdfS01TKCJiYWNrbGlnaHQgZnJlcXVlbmN5IHNldHRpbmcgZnJv bSBWQlQgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybVxuIik7Cj4+ICAJ CXJldHVybiAwOwo+PiAgCX0KPj4gIAo+PiAtCXB3bSA9IGRldl9wcml2LT5kaXNwbGF5LmJhY2ts aWdodF9oel90b19wd20oY29ubmVjdG9yLCBwd21fZnJlcV9oeik7Cj4+ICsJcHdtID0gcGFuZWwt PmJhY2tsaWdodC5oel90b19wd20oY29ubmVjdG9yLCBwd21fZnJlcV9oeik7Cj4+ICAJaWYgKCFw d20pIHsKPj4gIAkJRFJNX0RFQlVHX0tNUygiYmFja2xpZ2h0IGZyZXF1ZW5jeSBjb252ZXJzaW9u IGZhaWxlZFxuIik7Cj4+ICAJCXJldHVybiAwOwo+PiBAQCAtMTYzOSw5ICsxNjM5LDEzIEBAIGlu dCBpbnRlbF9wYW5lbF9zZXR1cF9iYWNrbGlnaHQoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5l Y3RvciwgZW51bSBwaXBlIHBpcGUpCj4+ICAJCX0KPj4gIAl9Cj4+ICAKPj4gKwkvKiBlbnN1cmUg aW50ZWxfcGFuZWwgaGFzIGJlZW4gaW5pdGlhbGl6ZWQgZmlyc3QgKi8KPj4gKwlpZiAoV0FSTl9P TighcGFuZWwtPmJhY2tsaWdodC5zZXR1cCkpCj4+ICsJCXJldHVybiAtRU5PREVWOwo+PiArCj4+ ICAJLyogc2V0IGxldmVsIGFuZCBtYXggaW4gcGFuZWwgc3RydWN0ICovCj4+ICAJbXV0ZXhfbG9j aygmZGV2X3ByaXYtPmJhY2tsaWdodF9sb2NrKTsKPj4gLQlyZXQgPSBkZXZfcHJpdi0+ZGlzcGxh eS5zZXR1cF9iYWNrbGlnaHQoaW50ZWxfY29ubmVjdG9yLCBwaXBlKTsKPj4gKwlyZXQgPSBwYW5l bC0+YmFja2xpZ2h0LnNldHVwKGludGVsX2Nvbm5lY3RvciwgcGlwZSk7Cj4+ICAJbXV0ZXhfdW5s b2NrKCZkZXZfcHJpdi0+YmFja2xpZ2h0X2xvY2spOwo+PiAgCj4+ICAJaWYgKHJldCkgewo+PiBA QCAtMTY3Myw2MiArMTY3Nyw2NiBAQCB2b2lkIGludGVsX3BhbmVsX2Rlc3Ryb3lfYmFja2xpZ2h0 KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCj4+ICB9Cj4+ICAKPj4gIC8qIFNldCB1 cCBjaGlwIHNwZWNpZmljIGJhY2tsaWdodCBmdW5jdGlvbnMgKi8KPj4gLXZvaWQgaW50ZWxfcGFu ZWxfaW5pdF9iYWNrbGlnaHRfZnVuY3Moc3RydWN0IGRybV9kZXZpY2UgKmRldikKPj4gK3N0YXRp YyB2b2lkCj4+ICtpbnRlbF9wYW5lbF9pbml0X2JhY2tsaWdodF9mdW5jcyhzdHJ1Y3QgaW50ZWxf cGFuZWwgKnBhbmVsKQo+PiAgewo+PiArCXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nv bm5lY3RvciA9Cj4+ICsJCWNvbnRhaW5lcl9vZihwYW5lbCwgc3RydWN0IGludGVsX2Nvbm5lY3Rv ciwgcGFuZWwpOwo+PiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbnRlbF9jb25uZWN0b3It PmJhc2UuZGV2Owo+PiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ ZGV2X3ByaXZhdGU7Cj4+ICAKPj4gIAlpZiAoSVNfQlJPWFRPTihkZXYpKSB7Cj4+IC0JCWRldl9w cml2LT5kaXNwbGF5LnNldHVwX2JhY2tsaWdodCA9IGJ4dF9zZXR1cF9iYWNrbGlnaHQ7Cj4+IC0J CWRldl9wcml2LT5kaXNwbGF5LmVuYWJsZV9iYWNrbGlnaHQgPSBieHRfZW5hYmxlX2JhY2tsaWdo dDsKPj4gLQkJZGV2X3ByaXYtPmRpc3BsYXkuZGlzYWJsZV9iYWNrbGlnaHQgPSBieHRfZGlzYWJs ZV9iYWNrbGlnaHQ7Cj4+IC0JCWRldl9wcml2LT5kaXNwbGF5LnNldF9iYWNrbGlnaHQgPSBieHRf c2V0X2JhY2tsaWdodDsKPj4gLQkJZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2JhY2tsaWdodCA9IGJ4 dF9nZXRfYmFja2xpZ2h0Owo+PiArCQlwYW5lbC0+YmFja2xpZ2h0LnNldHVwID0gYnh0X3NldHVw X2JhY2tsaWdodDsKPj4gKwkJcGFuZWwtPmJhY2tsaWdodC5lbmFibGUgPSBieHRfZW5hYmxlX2Jh Y2tsaWdodDsKPj4gKwkJcGFuZWwtPmJhY2tsaWdodC5kaXNhYmxlID0gYnh0X2Rpc2FibGVfYmFj a2xpZ2h0Owo+PiArCQlwYW5lbC0+YmFja2xpZ2h0LnNldCA9IGJ4dF9zZXRfYmFja2xpZ2h0Owo+ PiArCQlwYW5lbC0+YmFja2xpZ2h0LmdldCA9IGJ4dF9nZXRfYmFja2xpZ2h0Owo+PiAgCX0gZWxz ZSBpZiAoSEFTX1BDSF9MUFQoZGV2KSB8fCBIQVNfUENIX1NQVChkZXYpKSB7Cj4+IC0JCWRldl9w cml2LT5kaXNwbGF5LnNldHVwX2JhY2tsaWdodCA9IGxwdF9zZXR1cF9iYWNrbGlnaHQ7Cj4+IC0J CWRldl9wcml2LT5kaXNwbGF5LmVuYWJsZV9iYWNrbGlnaHQgPSBscHRfZW5hYmxlX2JhY2tsaWdo dDsKPj4gLQkJZGV2X3ByaXYtPmRpc3BsYXkuZGlzYWJsZV9iYWNrbGlnaHQgPSBscHRfZGlzYWJs ZV9iYWNrbGlnaHQ7Cj4+IC0JCWRldl9wcml2LT5kaXNwbGF5LnNldF9iYWNrbGlnaHQgPSBscHRf c2V0X2JhY2tsaWdodDsKPj4gLQkJZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2JhY2tsaWdodCA9IGxw dF9nZXRfYmFja2xpZ2h0Owo+PiArCQlwYW5lbC0+YmFja2xpZ2h0LnNldHVwID0gbHB0X3NldHVw X2JhY2tsaWdodDsKPj4gKwkJcGFuZWwtPmJhY2tsaWdodC5lbmFibGUgPSBscHRfZW5hYmxlX2Jh Y2tsaWdodDsKPj4gKwkJcGFuZWwtPmJhY2tsaWdodC5kaXNhYmxlID0gbHB0X2Rpc2FibGVfYmFj a2xpZ2h0Owo+PiArCQlwYW5lbC0+YmFja2xpZ2h0LnNldCA9IGxwdF9zZXRfYmFja2xpZ2h0Owo+ PiArCQlwYW5lbC0+YmFja2xpZ2h0LmdldCA9IGxwdF9nZXRfYmFja2xpZ2h0Owo+PiAgCQlpZiAo SEFTX1BDSF9MUFQoZGV2KSkKPj4gLQkJCWRldl9wcml2LT5kaXNwbGF5LmJhY2tsaWdodF9oel90 b19wd20gPSBscHRfaHpfdG9fcHdtOwo+PiArCQkJcGFuZWwtPmJhY2tsaWdodC5oel90b19wd20g PSBscHRfaHpfdG9fcHdtOwo+PiAgCQllbHNlCj4+IC0JCQlkZXZfcHJpdi0+ZGlzcGxheS5iYWNr bGlnaHRfaHpfdG9fcHdtID0gc3B0X2h6X3RvX3B3bTsKPj4gKwkJCXBhbmVsLT5iYWNrbGlnaHQu aHpfdG9fcHdtID0gc3B0X2h6X3RvX3B3bTsKPj4gIAl9IGVsc2UgaWYgKEhBU19QQ0hfU1BMSVQo ZGV2KSkgewo+PiAtCQlkZXZfcHJpdi0+ZGlzcGxheS5zZXR1cF9iYWNrbGlnaHQgPSBwY2hfc2V0 dXBfYmFja2xpZ2h0Owo+PiAtCQlkZXZfcHJpdi0+ZGlzcGxheS5lbmFibGVfYmFja2xpZ2h0ID0g cGNoX2VuYWJsZV9iYWNrbGlnaHQ7Cj4+IC0JCWRldl9wcml2LT5kaXNwbGF5LmRpc2FibGVfYmFj a2xpZ2h0ID0gcGNoX2Rpc2FibGVfYmFja2xpZ2h0Owo+PiAtCQlkZXZfcHJpdi0+ZGlzcGxheS5z ZXRfYmFja2xpZ2h0ID0gcGNoX3NldF9iYWNrbGlnaHQ7Cj4+IC0JCWRldl9wcml2LT5kaXNwbGF5 LmdldF9iYWNrbGlnaHQgPSBwY2hfZ2V0X2JhY2tsaWdodDsKPj4gLQkJZGV2X3ByaXYtPmRpc3Bs YXkuYmFja2xpZ2h0X2h6X3RvX3B3bSA9IHBjaF9oel90b19wd207Cj4+ICsJCXBhbmVsLT5iYWNr bGlnaHQuc2V0dXAgPSBwY2hfc2V0dXBfYmFja2xpZ2h0Owo+PiArCQlwYW5lbC0+YmFja2xpZ2h0 LmVuYWJsZSA9IHBjaF9lbmFibGVfYmFja2xpZ2h0Owo+PiArCQlwYW5lbC0+YmFja2xpZ2h0LmRp c2FibGUgPSBwY2hfZGlzYWJsZV9iYWNrbGlnaHQ7Cj4+ICsJCXBhbmVsLT5iYWNrbGlnaHQuc2V0 ID0gcGNoX3NldF9iYWNrbGlnaHQ7Cj4+ICsJCXBhbmVsLT5iYWNrbGlnaHQuZ2V0ID0gcGNoX2dl dF9iYWNrbGlnaHQ7Cj4+ICsJCXBhbmVsLT5iYWNrbGlnaHQuaHpfdG9fcHdtID0gcGNoX2h6X3Rv X3B3bTsKPj4gIAl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgewo+PiAgCQlpZiAoZGV2 X3ByaXYtPnZidC5oYXNfbWlwaSkgewo+PiAtCQkJZGV2X3ByaXYtPmRpc3BsYXkuc2V0dXBfYmFj a2xpZ2h0ID0gcHdtX3NldHVwX2JhY2tsaWdodDsKPj4gLQkJCWRldl9wcml2LT5kaXNwbGF5LmVu YWJsZV9iYWNrbGlnaHQgPSBwd21fZW5hYmxlX2JhY2tsaWdodDsKPj4gLQkJCWRldl9wcml2LT5k aXNwbGF5LmRpc2FibGVfYmFja2xpZ2h0ID0gcHdtX2Rpc2FibGVfYmFja2xpZ2h0Owo+PiAtCQkJ ZGV2X3ByaXYtPmRpc3BsYXkuc2V0X2JhY2tsaWdodCA9IHB3bV9zZXRfYmFja2xpZ2h0Owo+PiAt CQkJZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2JhY2tsaWdodCA9IHB3bV9nZXRfYmFja2xpZ2h0Owo+ PiArCQkJcGFuZWwtPmJhY2tsaWdodC5zZXR1cCA9IHB3bV9zZXR1cF9iYWNrbGlnaHQ7Cj4+ICsJ CQlwYW5lbC0+YmFja2xpZ2h0LmVuYWJsZSA9IHB3bV9lbmFibGVfYmFja2xpZ2h0Owo+PiArCQkJ cGFuZWwtPmJhY2tsaWdodC5kaXNhYmxlID0gcHdtX2Rpc2FibGVfYmFja2xpZ2h0Owo+PiArCQkJ cGFuZWwtPmJhY2tsaWdodC5zZXQgPSBwd21fc2V0X2JhY2tsaWdodDsKPj4gKwkJCXBhbmVsLT5i YWNrbGlnaHQuZ2V0ID0gcHdtX2dldF9iYWNrbGlnaHQ7Cj4+ICAJCX0gZWxzZSB7Cj4+IC0JCQlk ZXZfcHJpdi0+ZGlzcGxheS5zZXR1cF9iYWNrbGlnaHQgPSB2bHZfc2V0dXBfYmFja2xpZ2h0Owo+ PiAtCQkJZGV2X3ByaXYtPmRpc3BsYXkuZW5hYmxlX2JhY2tsaWdodCA9IHZsdl9lbmFibGVfYmFj a2xpZ2h0Owo+PiAtCQkJZGV2X3ByaXYtPmRpc3BsYXkuZGlzYWJsZV9iYWNrbGlnaHQgPSB2bHZf ZGlzYWJsZV9iYWNrbGlnaHQ7Cj4+IC0JCQlkZXZfcHJpdi0+ZGlzcGxheS5zZXRfYmFja2xpZ2h0 ID0gdmx2X3NldF9iYWNrbGlnaHQ7Cj4+IC0JCQlkZXZfcHJpdi0+ZGlzcGxheS5nZXRfYmFja2xp Z2h0ID0gdmx2X2dldF9iYWNrbGlnaHQ7Cj4+IC0JCQlkZXZfcHJpdi0+ZGlzcGxheS5iYWNrbGln aHRfaHpfdG9fcHdtID0gdmx2X2h6X3RvX3B3bTsKPj4gKwkJCXBhbmVsLT5iYWNrbGlnaHQuc2V0 dXAgPSB2bHZfc2V0dXBfYmFja2xpZ2h0Owo+PiArCQkJcGFuZWwtPmJhY2tsaWdodC5lbmFibGUg PSB2bHZfZW5hYmxlX2JhY2tsaWdodDsKPj4gKwkJCXBhbmVsLT5iYWNrbGlnaHQuZGlzYWJsZSA9 IHZsdl9kaXNhYmxlX2JhY2tsaWdodDsKPj4gKwkJCXBhbmVsLT5iYWNrbGlnaHQuc2V0ID0gdmx2 X3NldF9iYWNrbGlnaHQ7Cj4+ICsJCQlwYW5lbC0+YmFja2xpZ2h0LmdldCA9IHZsdl9nZXRfYmFj a2xpZ2h0Owo+PiArCQkJcGFuZWwtPmJhY2tsaWdodC5oel90b19wd20gPSB2bHZfaHpfdG9fcHdt Owo+PiAgCQl9Cj4+ICAJfSBlbHNlIGlmIChJU19HRU40KGRldikpIHsKPj4gLQkJZGV2X3ByaXYt PmRpc3BsYXkuc2V0dXBfYmFja2xpZ2h0ID0gaTk2NV9zZXR1cF9iYWNrbGlnaHQ7Cj4+IC0JCWRl dl9wcml2LT5kaXNwbGF5LmVuYWJsZV9iYWNrbGlnaHQgPSBpOTY1X2VuYWJsZV9iYWNrbGlnaHQ7 Cj4+IC0JCWRldl9wcml2LT5kaXNwbGF5LmRpc2FibGVfYmFja2xpZ2h0ID0gaTk2NV9kaXNhYmxl X2JhY2tsaWdodDsKPj4gLQkJZGV2X3ByaXYtPmRpc3BsYXkuc2V0X2JhY2tsaWdodCA9IGk5eHhf c2V0X2JhY2tsaWdodDsKPj4gLQkJZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2JhY2tsaWdodCA9IGk5 eHhfZ2V0X2JhY2tsaWdodDsKPj4gLQkJZGV2X3ByaXYtPmRpc3BsYXkuYmFja2xpZ2h0X2h6X3Rv X3B3bSA9IGk5NjVfaHpfdG9fcHdtOwo+PiArCQlwYW5lbC0+YmFja2xpZ2h0LnNldHVwID0gaTk2 NV9zZXR1cF9iYWNrbGlnaHQ7Cj4+ICsJCXBhbmVsLT5iYWNrbGlnaHQuZW5hYmxlID0gaTk2NV9l bmFibGVfYmFja2xpZ2h0Owo+PiArCQlwYW5lbC0+YmFja2xpZ2h0LmRpc2FibGUgPSBpOTY1X2Rp c2FibGVfYmFja2xpZ2h0Owo+PiArCQlwYW5lbC0+YmFja2xpZ2h0LnNldCA9IGk5eHhfc2V0X2Jh Y2tsaWdodDsKPj4gKwkJcGFuZWwtPmJhY2tsaWdodC5nZXQgPSBpOXh4X2dldF9iYWNrbGlnaHQ7 Cj4+ICsJCXBhbmVsLT5iYWNrbGlnaHQuaHpfdG9fcHdtID0gaTk2NV9oel90b19wd207Cj4+ICAJ fSBlbHNlIHsKPj4gLQkJZGV2X3ByaXYtPmRpc3BsYXkuc2V0dXBfYmFja2xpZ2h0ID0gaTl4eF9z ZXR1cF9iYWNrbGlnaHQ7Cj4+IC0JCWRldl9wcml2LT5kaXNwbGF5LmVuYWJsZV9iYWNrbGlnaHQg PSBpOXh4X2VuYWJsZV9iYWNrbGlnaHQ7Cj4+IC0JCWRldl9wcml2LT5kaXNwbGF5LmRpc2FibGVf YmFja2xpZ2h0ID0gaTl4eF9kaXNhYmxlX2JhY2tsaWdodDsKPj4gLQkJZGV2X3ByaXYtPmRpc3Bs YXkuc2V0X2JhY2tsaWdodCA9IGk5eHhfc2V0X2JhY2tsaWdodDsKPj4gLQkJZGV2X3ByaXYtPmRp c3BsYXkuZ2V0X2JhY2tsaWdodCA9IGk5eHhfZ2V0X2JhY2tsaWdodDsKPj4gLQkJZGV2X3ByaXYt PmRpc3BsYXkuYmFja2xpZ2h0X2h6X3RvX3B3bSA9IGk5eHhfaHpfdG9fcHdtOwo+PiArCQlwYW5l bC0+YmFja2xpZ2h0LnNldHVwID0gaTl4eF9zZXR1cF9iYWNrbGlnaHQ7Cj4+ICsJCXBhbmVsLT5i YWNrbGlnaHQuZW5hYmxlID0gaTl4eF9lbmFibGVfYmFja2xpZ2h0Owo+PiArCQlwYW5lbC0+YmFj a2xpZ2h0LmRpc2FibGUgPSBpOXh4X2Rpc2FibGVfYmFja2xpZ2h0Owo+PiArCQlwYW5lbC0+YmFj a2xpZ2h0LnNldCA9IGk5eHhfc2V0X2JhY2tsaWdodDsKPj4gKwkJcGFuZWwtPmJhY2tsaWdodC5n ZXQgPSBpOXh4X2dldF9iYWNrbGlnaHQ7Cj4+ICsJCXBhbmVsLT5iYWNrbGlnaHQuaHpfdG9fcHdt ID0gaTl4eF9oel90b19wd207Cj4+ICAJfQo+PiAgfQo+PiAgCj4+IEBAIC0xNzM2LDYgKzE3NDQs OCBAQCBpbnQgaW50ZWxfcGFuZWxfaW5pdChzdHJ1Y3QgaW50ZWxfcGFuZWwgKnBhbmVsLAo+PiAg CQkgICAgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpmaXhlZF9tb2RlLAo+PiAgCQkgICAgIHN0 cnVjdCBkcm1fZGlzcGxheV9tb2RlICpkb3duY2xvY2tfbW9kZSkKPj4gIHsKPj4gKwlpbnRlbF9w YW5lbF9pbml0X2JhY2tsaWdodF9mdW5jcyhwYW5lbCk7Cj4+ICsKPj4gIAlwYW5lbC0+Zml4ZWRf bW9kZSA9IGZpeGVkX21vZGU7Cj4+ICAJcGFuZWwtPmRvd25jbG9ja19tb2RlID0gZG93bmNsb2Nr X21vZGU7Cj4+ICAKPj4gLS0gCj4+IDIuMS40Cj4+IAo+PiBfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwo+PiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4+IElu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPj4gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo+Cj4gLS0gCj4gRGFuaWVsIFZldHRlcgo+ IFNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgo+IGh0dHA6Ly9ibG9nLmZmd2xs LmNoCgotLSAKSmFuaSBOaWt1bGEsIEludGVsIE9wZW4gU291cmNlIFRlY2hub2xvZ3kgQ2VudGVy Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdm eCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==