From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 2/2] drm/i915/skl: Support for 90/270 rotation Date: Mon, 13 Apr 2015 13:49:22 +0300 Message-ID: <20150413104922.GD11009@intel.com> References: <1428656849-5004-1-git-send-email-sonika.jindal@intel.com> <1428656849-5004-2-git-send-email-sonika.jindal@intel.com> <20150410141717.GL6092@phenom.ffwll.local> <20150410144419.GA28877@intel.com> <552B40AA.3040504@intel.com> <20150413101045.GA11009@intel.com> <552B991A.7060403@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 1104489798 for ; Mon, 13 Apr 2015 03:49:28 -0700 (PDT) Content-Disposition: inline In-Reply-To: <552B991A.7060403@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Jindal, Sonika" Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBBcHIgMTMsIDIwMTUgYXQgMDM6NTM6MjJQTSArMDUzMCwgSmluZGFsLCBTb25pa2Eg d3JvdGU6Cj4gCj4gCj4gT24gNC8xMy8yMDE1IDM6NDAgUE0sIFZpbGxlIFN5cmrDpGzDpCB3cm90 ZToKPiA+IE9uIE1vbiwgQXByIDEzLCAyMDE1IGF0IDA5OjM2OjAyQU0gKzA1MzAsIEppbmRhbCwg U29uaWthIHdyb3RlOgo+ID4+Cj4gPj4KPiA+PiBPbiA0LzEwLzIwMTUgODoxNCBQTSwgVmlsbGUg U3lyasOkbMOkIHdyb3RlOgo+ID4+PiBPbiBGcmksIEFwciAxMCwgMjAxNSBhdCAwNDoxNzoxN1BN ICswMjAwLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+ID4+Pj4gT24gRnJpLCBBcHIgMTAsIDIwMTUg YXQgMDI6Mzc6MjlQTSArMDUzMCwgU29uaWthIEppbmRhbCB3cm90ZToKPiA+Pj4+PiB2MjogTW92 aW5nIGNyZWF0aW9uIG9mIHByb3BlcnR5IGluIGEgZnVuY3Rpb24sIGNoZWNraW5nIGZvciA5MC8y NzAKPiA+Pj4+PiByb3RhdGlvbiBzaW11bHRhbmVvdXNseSAoQ2hyaXMpCj4gPj4+Pj4gTGV0dGlu ZyBwcmltYXJ5IHBsYW5lIHRvIGJlIHBvc2l0aW9uZWQKPiA+Pj4+PiB2MzogQWRkaW5nIGlmL2Vs c2UgZm9yIDkwLzI3MCBhbmQgcmVzdCBwYXJhbXMgcHJvZ3JhbW1pbmcsIGFkZGluZyBjaGVjayBm b3IKPiA+Pj4+PiBwaXhlbF9mb3JtYXQsIHNvbWUgY2xlYW51cCAocmV2aWV3IGNvbW1lbnRzKQo+ ID4+Pj4+IHY0OiBBZGRpbmcgcmlnaHQgcGl4ZWxfZm9ybWF0cywgdXNpbmcgc3JjXyogcGFyYW1z IGluc3RlYWQgb2YgY3J0Y18qIGZvciBvZmZzZXQKPiA+Pj4+PiBhbmQgc2l6ZSBwcm9ncmFtbWlu ZyAoVmlsbGUpCj4gPj4+Pj4gdjU6IFJlYmFzZWQgb24gLW5pZ2h0bHkgYW5kIFR2cnRrbydzIHNl cmllcyBmb3IgZ3R0IHJlbWFwcGluZy4KPiA+Pj4+PiB2NjogUmViYXNlZCBvbiAtbmlnaHRseSAo VHZydGtvJ3Mgc2VyaWVzIG1lcmdlZCkKPiA+Pj4+PiB2NzogTW92aW5nIHBpeGVsX2Zvcm1hdCBj aGVjayB0byBpbnRlbF9hdG9taWNfcGxhbmVfY2hlY2sgKE1hdHQpCj4gPj4+Pj4KPiA+Pj4+PiBT aWduZWQtb2ZmLWJ5OiBTb25pa2EgSmluZGFsIDxzb25pa2EuamluZGFsQGludGVsLmNvbT4KPiA+ Pj4+PiBSZXZpZXdlZC1ieTogTWF0dCBSb3BlciA8bWF0dGhldy5kLnJvcGVyQGludGVsLmNvbT4K PiA+Pj4+Cj4gPj4+PiBQYXRjaGVzIGFyZSBtaXNzaW5nIHRoZSBUZXN0Y2FzZTogdGFnLCBwbGVh c2UgYWRkIHRoYXQuIEFsc28sIGFyZSBhbGwgdGhlCj4gPj4+PiBpZ3QgY29tbWl0dGVkIG9yIG5v dCB5ZXQ/IFB1bGxlZCB0aGVzZSB0d28gaW4gbWVhbndoaWxlLgo+ID4+Pgo+ID4+PiBUaGluZ3Mg YXJlIGdvaW5nIHNvbWV3aGF0IGJyb2tlbiBiZWNhdXNlIHlvdSBkaWRuJ3QgYXBwbHkgbXkgcGxh bmUKPiA+Pj4gc3RhdGUgc3R1ZmYuIEhtbS4gQWN0dWFsbHkgaXQgc29ydCBvZiBsb29rcyB0aGF0 IGl0IG1pZ2h0IHdvcmsgYnkgbHVjawo+ID4+PiBhcyBsb25nIGFzIHRoZSBwcmltYXJ5IHBsYW5l IGRvZXNuJ3QgZ2V0IGNsaXBwZWQgc2luY2UgdGhpcyBpcyBiYXNoaW5nCj4gPj4+IHRoZSB1c2Vy IHN0YXRlIGRpcmVjdGx5IGludG8gdGhlIGhhcmR3YXJlIHJlZ2lzdGVycyBhbmQgbm90IHRoZSBk ZXJpdmVkCj4gPj4+IHN0YXRlIChpZS4gY2xpcHBlZCBjb29yZGluYXRlcykuCj4gPj4+Cj4gPj4g SSB3YXMgaG9waW5nIHlvdXIgY2hhbmdlcyBnZXQgbWVyZ2VkLCBidXQgbm90IHN1cmUgd2h5IHRo ZXkgYXJlIGhlbGQgdXAuCj4gPj4KPiA+Pj4gQWxzbyBJIHNlZSBteSByZXZpZXcgY29tbWVudCBh Ym91dCB0aGUgOTAgdnMuIDI3MCByb3RhdGlvbiBtaXh1cCB3YXMKPiA+Pj4gaWdub3JlZCBhdCBs ZWFzdC4KPiA+Pj4KPiA+PiBJIG5ldmVyIHJlYWxseSBnb3QgdGhlIHRvIHVuZGVyc3RhbmQgdGhl IG5lZWQgb2YgcmV2ZXJzaW5nIDkwIGFuZCAyNzAgOikKPiA+PiBUaGUgbGFzdCBkaXNjdXNzaW9u IHdhcyBub3QgY29uY2x1ZGVkLCBBRkFJUi4KPiA+PiBUaGluZ3MgbG9vayBjb3JyZWN0IHRvIG1l IGFuZCB3b3JrIGZpbmUgd2l0aCB0aGUgdGVzdGNhc2UgYWxzby4KPiA+PiBJcyB0aGVyZSBzb21l dGhpbmcgY29tcGxldGVseSBkaWZmZXJlbnQgd2hpY2ggSSBhbSB1bmFibGUgdG8gZ2V0Pwo+ID4K PiA+IEJTcGVjIGdpdmVzIG1lIHRoZSBpbXByZXNzaW9uIHRoZSBodyByb3RhdGlvbiBpcyBjdywg d2hlcmVhcyB0aGUgZHJtIG9uZQo+ID4gaXMgY2N3Lgo+ID4KPiBZZXMsIEhXIHJvdGF0aW9uIGlz IGN3IGFzIHBlciBic3BlYy4gSW4gZHJtLCB3aGVyZSBkbyB3ZSBjb25zaWRlciBpdCBhcyAKPiBh bnRpLWN3PyBJIGFzc3VtZSBpdCBpcyBjdyBiZWNhdXNlIGFsbCB0aGUgbWFjcm9zIHdvcmsgYXMg ZXhwZWN0ZWQsIGllIGN3LgoKVGhlIGNjdyBydWxlIHdhcyBpbmhlcml0ZWQgZnJvbSBYUmFuZFIu IEknbSBub3Qgc3VyZSB3aGF0IG1hY3JvcyB5b3UKbWVhbiwgYnV0IGRybV9yZWN0X3JvdGF0ZSgp IHdpbGwgY2VydGFpbmx5IGdpdmUgeW91IHdyb25nIHJlc3VsdHMgaWYKeW91IGFzc3VtZSBjdy4K Cj4gCj4gPj4KPiA+PiAtU29uaWthCj4gPj4KPiA+Pj4+IC1EYW5pZWwKPiA+Pj4+Cj4gPj4+Pj4g LS0tCj4gPj4+Pj4gICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCAgICAgICAgICAg fCAgICAyICsKPiA+Pj4+PiAgICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWNfcGxh bmUuYyB8ICAgMjQgKysrKysrKysKPiA+Pj4+PiAgICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kaXNwbGF5LmMgICAgICB8ICAgODggKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0KPiA+ Pj4+PiAgICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgICAgICB8ICAgIDYg KysKPiA+Pj4+PiAgICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYyAgICAgICB8 ICAgNTIgKysrKysrKysrKysrLS0tLS0KPiA+Pj4+PiAgICA1IGZpbGVzIGNoYW5nZWQsIDEzMSBp bnNlcnRpb25zKCspLCA0MSBkZWxldGlvbnMoLSkKPiA+Pj4+Pgo+ID4+Pj4+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9yZWcuaAo+ID4+Pj4+IGluZGV4IGI1MjJlYjYuLjU2NGJiZDUgMTAwNjQ0Cj4gPj4+Pj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+ID4+Pj4+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiA+Pj4+PiBAQCAtNDg1NCw3ICs0ODU0LDkgQEAg ZW51bSBza2xfZGlzcF9wb3dlcl93ZWxscyB7Cj4gPj4+Pj4gICAgI2RlZmluZSAgIFBMQU5FX0NU TF9BTFBIQV9IV19QUkVNVUxUSVBMWQkoICAzIDw8IDQpCj4gPj4+Pj4gICAgI2RlZmluZSAgIFBM QU5FX0NUTF9ST1RBVEVfTUFTSwkJCTB4Mwo+ID4+Pj4+ICAgICNkZWZpbmUgICBQTEFORV9DVExf Uk9UQVRFXzAJCQkweDAKPiA+Pj4+PiArI2RlZmluZSAgIFBMQU5FX0NUTF9ST1RBVEVfOTAJCQkw eDEKPiA+Pj4+PiAgICAjZGVmaW5lICAgUExBTkVfQ1RMX1JPVEFURV8xODAJCQkweDIKPiA+Pj4+ PiArI2RlZmluZSAgIFBMQU5FX0NUTF9ST1RBVEVfMjcwCQkJMHgzCj4gPj4+Pj4gICAgI2RlZmlu ZSBfUExBTkVfU1RSSURFXzFfQQkJCTB4NzAxODgKPiA+Pj4+PiAgICAjZGVmaW5lIF9QTEFORV9T VFJJREVfMl9BCQkJMHg3MDI4OAo+ID4+Pj4+ICAgICNkZWZpbmUgX1BMQU5FX1NUUklERV8zX0EJ CQkweDcwMzg4Cj4gPj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2F0b21pY19wbGFuZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljX3BsYW5l LmMKPiA+Pj4+PiBpbmRleCA5NzZiODkxLi5hMjdlZThjIDEwMDY0NAo+ID4+Pj4+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pY19wbGFuZS5jCj4gPj4+Pj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljX3BsYW5lLmMKPiA+Pj4+PiBAQCAtMTYyLDYg KzE2MiwzMCBAQCBzdGF0aWMgaW50IGludGVsX3BsYW5lX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJt X3BsYW5lICpwbGFuZSwKPiA+Pj4+PiAgICAJCQkoMSA8PCBkcm1fcGxhbmVfaW5kZXgocGxhbmUp KTsKPiA+Pj4+PiAgICAJfQo+ID4+Pj4+Cj4gPj4+Pj4gKwlpZiAoc3RhdGUtPmZiICYmIGludGVs X3JvdGF0aW9uXzkwX29yXzI3MChzdGF0ZS0+cm90YXRpb24pKSB7Cj4gPj4+Pj4gKwkJaWYgKCEo c3RhdGUtPmZiLT5tb2RpZmllclswXSA9PSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRCB8fAo+ID4+ Pj4+ICsJCQlzdGF0ZS0+ZmItPm1vZGlmaWVyWzBdID09IEk5MTVfRk9STUFUX01PRF9ZZl9USUxF RCkpIHsKPiA+Pj4+PiArCQkJRFJNX0RFQlVHX0tNUygiWS9ZZiB0aWxpbmcgcmVxdWlyZWQgZm9y IDkwLzI3MCFcbiIpOwo+ID4+Pj4+ICsJCQlyZXR1cm4gLUVJTlZBTDsKPiA+Pj4+PiArCQl9Cj4g Pj4+Pj4gKwo+ID4+Pj4+ICsJCS8qCj4gPj4+Pj4gKwkJICogOTAvMjcwIGlzIG5vdCBhbGxvd2Vk IHdpdGggUkdCNjQgMTY6MTY6MTY6MTYsCj4gPj4+Pj4gKwkJICogUkdCIDE2LWJpdCA1OjY6NSwg YW5kIEluZGV4ZWQgOC1iaXQuCj4gPj4+Pj4gKwkJICogVEJEOiBBZGQgUkdCNjQgY2FzZSBvbmNl IGl0cyBhZGRlZCBpbiBzdXBwb3J0ZWQgZm9ybWF0IGxpc3QuCj4gPj4+Pj4gKwkJICovCj4gPj4+ Pj4gKwkJc3dpdGNoIChzdGF0ZS0+ZmItPnBpeGVsX2Zvcm1hdCkgewo+ID4+Pj4+ICsJCWNhc2Ug RFJNX0ZPUk1BVF9DODoKPiA+Pj4+PiArCQljYXNlIERSTV9GT1JNQVRfUkdCNTY1Ogo+ID4+Pj4+ ICsJCQlEUk1fREVCVUdfS01TKCJVbnN1cHBvcnRlZCBwaXhlbCBmb3JtYXQgJXMgZm9yIDkwLzI3 MCFcbiIsCj4gPj4+Pj4gKwkJCQkJZHJtX2dldF9mb3JtYXRfbmFtZShzdGF0ZS0+ZmItPnBpeGVs X2Zvcm1hdCkpOwo+ID4+Pj4+ICsJCQlyZXR1cm4gLUVJTlZBTDsKPiA+Pj4+PiArCj4gPj4+Pj4g KwkJZGVmYXVsdDoKPiA+Pj4+PiArCQkJYnJlYWs7Cj4gPj4+Pj4gKwkJfQo+ID4+Pj4+ICsJfQo+ ID4+Pj4+ICsKPiA+Pj4+PiAgICAJcmV0dXJuIGludGVsX3BsYW5lLT5jaGVja19wbGFuZShwbGFu ZSwgaW50ZWxfc3RhdGUpOwo+ID4+Pj4+ICAgIH0KPiA+Pj4+Pgo+ID4+Pj4+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kaXNwbGF5LmMKPiA+Pj4+PiBpbmRleCBmMGJiYzIyLi40ZGU1NDRjIDEwMDY0 NAo+ID4+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4+ Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4+Pj4+IEBA IC0yMzExLDEzICsyMzExLDYgQEAgaW50ZWxfZmlsbF9mYl9nZ3R0X3ZpZXcoc3RydWN0IGk5MTVf Z2d0dF92aWV3ICp2aWV3LCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKPiA+Pj4+PiAgICAJ aW5mby0+cGl0Y2ggPSBmYi0+cGl0Y2hlc1swXTsKPiA+Pj4+PiAgICAJaW5mby0+ZmJfbW9kaWZp ZXIgPSBmYi0+bW9kaWZpZXJbMF07Cj4gPj4+Pj4KPiA+Pj4+PiAtCWlmICghKGluZm8tPmZiX21v ZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEIHx8Cj4gPj4+Pj4gLQkgICAgICBpbmZv LT5mYl9tb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWWZfVElMRUQpKSB7Cj4gPj4+Pj4gLQkJ RFJNX0RFQlVHX0tNUygKPiA+Pj4+PiAtCQkJICAgICAgIlkgb3IgWWYgdGlsaW5nIGlzIG5lZWRl ZCBmb3IgOTAvMjcwIHJvdGF0aW9uIVxuIik7Cj4gPj4+Pj4gLQkJcmV0dXJuIC1FSU5WQUw7Cj4g Pj4+Pj4gLQl9Cj4gPj4+Pj4gLQo+ID4+Pj4+ICAgIAlyZXR1cm4gMDsKPiA+Pj4+PiAgICB9Cj4g Pj4+Pj4KPiA+Pj4+PiBAQCAtMjkxOSw4ICsyOTEyLDEyIEBAIHN0YXRpYyB2b2lkIHNreWxha2Vf dXBkYXRlX3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ID4+Pj4+ICAgIAlz dHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gPj4+ Pj4gICAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Cj4gPj4+Pj4gICAgCWludCBw aXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiA+Pj4+PiAtCXUzMiBwbGFuZV9jdGwsIHN0cmlkZV9k aXY7Cj4gPj4+Pj4gKwl1MzIgcGxhbmVfY3RsLCBzdHJpZGVfZGl2LCBzdHJpZGU7Cj4gPj4+Pj4g Kwl1MzIgdGlsZV9oZWlnaHQsIHBsYW5lX29mZnNldCwgcGxhbmVfc2l6ZTsKPiA+Pj4+PiArCXVu c2lnbmVkIGludCByb3RhdGlvbjsKPiA+Pj4+PiArCWludCB4X29mZnNldCwgeV9vZmZzZXQ7Cj4g Pj4+Pj4gICAgCXVuc2lnbmVkIGxvbmcgc3VyZl9hZGRyOwo+ID4+Pj4+ICsJc3RydWN0IGRybV9w bGFuZSAqcGxhbmU7Cj4gPj4+Pj4KPiA+Pj4+PiAgICAJaWYgKCFpbnRlbF9jcnRjLT5wcmltYXJ5 X2VuYWJsZWQpIHsKPiA+Pj4+PiAgICAJCUk5MTVfV1JJVEUoUExBTkVfQ1RMKHBpcGUsIDApLCAw KTsKPiA+Pj4+PiBAQCAtMjk4MSwyMSArMjk3OCw1MSBAQCBzdGF0aWMgdm9pZCBza3lsYWtlX3Vw ZGF0ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiA+Pj4+PiAgICAJfQo+ ID4+Pj4+Cj4gPj4+Pj4gICAgCXBsYW5lX2N0bCB8PSBQTEFORV9DVExfUExBTkVfR0FNTUFfRElT QUJMRTsKPiA+Pj4+PiAtCWlmIChjcnRjLT5wcmltYXJ5LT5zdGF0ZS0+cm90YXRpb24gPT0gQklU KERSTV9ST1RBVEVfMTgwKSkKPiA+Pj4+PiArCj4gPj4+Pj4gKwlwbGFuZSA9IGNydGMtPnByaW1h cnk7Cj4gPj4+Pj4gKwlyb3RhdGlvbiA9IHBsYW5lLT5zdGF0ZS0+cm90YXRpb247Cj4gPj4+Pj4g Kwlzd2l0Y2ggKHJvdGF0aW9uKSB7Cj4gPj4+Pj4gKwljYXNlIEJJVChEUk1fUk9UQVRFXzkwKToK PiA+Pj4+PiArCQlwbGFuZV9jdGwgfD0gUExBTkVfQ1RMX1JPVEFURV85MDsKPiA+Pj4+PiArCQli cmVhazsKPiA+Pj4+PiArCj4gPj4+Pj4gKwljYXNlIEJJVChEUk1fUk9UQVRFXzE4MCk6Cj4gPj4+ Pj4gICAgCQlwbGFuZV9jdGwgfD0gUExBTkVfQ1RMX1JPVEFURV8xODA7Cj4gPj4+Pj4gKwkJYnJl YWs7Cj4gPj4+Pj4gKwo+ID4+Pj4+ICsJY2FzZSBCSVQoRFJNX1JPVEFURV8yNzApOgo+ID4+Pj4+ ICsJCXBsYW5lX2N0bCB8PSBQTEFORV9DVExfUk9UQVRFXzI3MDsKPiA+Pj4+PiArCQlicmVhazsK PiA+Pj4+PiArCX0KPiA+Pj4+Pgo+ID4+Pj4+ICAgIAlvYmogPSBpbnRlbF9mYl9vYmooZmIpOwo+ ID4+Pj4+ICAgIAlzdHJpZGVfZGl2ID0gaW50ZWxfZmJfc3RyaWRlX2FsaWdubWVudChkZXYsIGZi LT5tb2RpZmllclswXSwKPiA+Pj4+PiAgICAJCQkJCSAgICAgICBmYi0+cGl4ZWxfZm9ybWF0KTsK PiA+Pj4+PiAtCXN1cmZfYWRkciA9IGludGVsX3BsYW5lX29ial9vZmZzZXQodG9faW50ZWxfcGxh bmUoY3J0Yy0+cHJpbWFyeSksIG9iaik7Cj4gPj4+Pj4gKwlzdXJmX2FkZHIgPSBpbnRlbF9wbGFu ZV9vYmpfb2Zmc2V0KHRvX2ludGVsX3BsYW5lKHBsYW5lKSwgb2JqKTsKPiA+Pj4+PiArCj4gPj4+ Pj4gKwlpZiAoaW50ZWxfcm90YXRpb25fOTBfb3JfMjcwKHJvdGF0aW9uKSkgewo+ID4+Pj4+ICsJ CS8qIHN0cmlkZSA9IFN1cmZhY2UgaGVpZ2h0IGluIHRpbGVzICovCj4gPj4+Pj4gKwkJdGlsZV9o ZWlnaHQgPSBpbnRlbF90aWxlX2hlaWdodChkZXYsIGZiLT5iaXRzX3Blcl9waXhlbCwKPiA+Pj4+ PiArCQkJCQkJZmItPm1vZGlmaWVyWzBdKTsKPiA+Pj4+PiArCQlzdHJpZGUgPSBESVZfUk9VTkRf VVAoZmItPmhlaWdodCwgdGlsZV9oZWlnaHQpOwo+ID4+Pj4+ICsJCXhfb2Zmc2V0ID0gc3RyaWRl ICogdGlsZV9oZWlnaHQgLSB5IC0gKHBsYW5lLT5zdGF0ZS0+c3JjX2ggPj4gMTYpOwo+ID4+Pj4+ ICsJCXlfb2Zmc2V0ID0geDsKPiA+Pj4+PiArCQlwbGFuZV9zaXplID0gKChwbGFuZS0+c3RhdGUt PnNyY193ID4+IDE2KSAtIDEpIDw8IDE2IHwKPiA+Pj4+PiArCQkJCQkoKHBsYW5lLT5zdGF0ZS0+ c3JjX2ggPj4gMTYpIC0gMSk7Cj4gPj4+Pj4gKwl9IGVsc2Ugewo+ID4+Pj4+ICsJCXN0cmlkZSA9 IGZiLT5waXRjaGVzWzBdIC8gc3RyaWRlX2RpdjsKPiA+Pj4+PiArCQl4X29mZnNldCA9IHg7Cj4g Pj4+Pj4gKwkJeV9vZmZzZXQgPSB5Owo+ID4+Pj4+ICsJCXBsYW5lX3NpemUgPSAoKHBsYW5lLT5z dGF0ZS0+c3JjX2ggPj4gMTYpIC0gMSkgPDwgMTYgfAo+ID4+Pj4+ICsJCQkoKHBsYW5lLT5zdGF0 ZS0+c3JjX3cgPj4gMTYpIC0gMSk7Cj4gPj4+Pj4gKwl9Cj4gPj4+Pj4gKwlwbGFuZV9vZmZzZXQg PSB5X29mZnNldCA8PCAxNiB8IHhfb2Zmc2V0Owo+ID4+Pj4+Cj4gPj4+Pj4gICAgCUk5MTVfV1JJ VEUoUExBTkVfQ1RMKHBpcGUsIDApLCBwbGFuZV9jdGwpOwo+ID4+Pj4+ICAgIAlJOTE1X1dSSVRF KFBMQU5FX1BPUyhwaXBlLCAwKSwgMCk7Cj4gPj4+Pj4gLQlJOTE1X1dSSVRFKFBMQU5FX09GRlNF VChwaXBlLCAwKSwgKHkgPDwgMTYpIHwgeCk7Cj4gPj4+Pj4gLQlJOTE1X1dSSVRFKFBMQU5FX1NJ WkUocGlwZSwgMCksCj4gPj4+Pj4gLQkJICAgKGludGVsX2NydGMtPmNvbmZpZy0+cGlwZV9zcmNf aCAtIDEpIDw8IDE2IHwKPiA+Pj4+PiAtCQkgICAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5waXBlX3Ny Y193IC0gMSkpOwo+ID4+Pj4+IC0JSTkxNV9XUklURShQTEFORV9TVFJJREUocGlwZSwgMCksIGZi LT5waXRjaGVzWzBdIC8gc3RyaWRlX2Rpdik7Cj4gPj4+Pj4gKwlJOTE1X1dSSVRFKFBMQU5FX09G RlNFVChwaXBlLCAwKSwgcGxhbmVfb2Zmc2V0KTsKPiA+Pj4+PiArCUk5MTVfV1JJVEUoUExBTkVf U0laRShwaXBlLCAwKSwgcGxhbmVfc2l6ZSk7Cj4gPj4+Pj4gKwlJOTE1X1dSSVRFKFBMQU5FX1NU UklERShwaXBlLCAwKSwgc3RyaWRlKTsKPiA+Pj4+PiAgICAJSTkxNV9XUklURShQTEFORV9TVVJG KHBpcGUsIDApLCBzdXJmX2FkZHIpOwo+ID4+Pj4+Cj4gPj4+Pj4gICAgCVBPU1RJTkdfUkVBRChQ TEFORV9TVVJGKHBpcGUsIDApKTsKPiA+Pj4+PiBAQCAtMTI0MDYsMjMgKzEyNDMzLDMyIEBAIHN0 YXRpYyBzdHJ1Y3QgZHJtX3BsYW5lICppbnRlbF9wcmltYXJ5X3BsYW5lX2NyZWF0ZShzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LAo+ID4+Pj4+ICAgIAkJCQkgaW50ZWxfcHJpbWFyeV9mb3JtYXRzLCBu dW1fZm9ybWF0cywKPiA+Pj4+PiAgICAJCQkJIERSTV9QTEFORV9UWVBFX1BSSU1BUlkpOwo+ID4+ Pj4+Cj4gPj4+Pj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNCkgewo+ID4+Pj4+IC0J CWlmICghZGV2LT5tb2RlX2NvbmZpZy5yb3RhdGlvbl9wcm9wZXJ0eSkKPiA+Pj4+PiAtCQkJZGV2 LT5tb2RlX2NvbmZpZy5yb3RhdGlvbl9wcm9wZXJ0eSA9Cj4gPj4+Pj4gLQkJCQlkcm1fbW9kZV9j cmVhdGVfcm90YXRpb25fcHJvcGVydHkoZGV2LAo+ID4+Pj4+IC0JCQkJCQkJQklUKERSTV9ST1RB VEVfMCkgfAo+ID4+Pj4+IC0JCQkJCQkJQklUKERSTV9ST1RBVEVfMTgwKSk7Cj4gPj4+Pj4gLQkJ aWYgKGRldi0+bW9kZV9jb25maWcucm90YXRpb25fcHJvcGVydHkpCj4gPj4+Pj4gLQkJCWRybV9v YmplY3RfYXR0YWNoX3Byb3BlcnR5KCZwcmltYXJ5LT5iYXNlLmJhc2UsCj4gPj4+Pj4gLQkJCQlk ZXYtPm1vZGVfY29uZmlnLnJvdGF0aW9uX3Byb3BlcnR5LAo+ID4+Pj4+IC0JCQkJc3RhdGUtPmJh c2Uucm90YXRpb24pOwo+ID4+Pj4+IC0JfQo+ID4+Pj4+ICsJaWYgKElOVEVMX0lORk8oZGV2KS0+ Z2VuID49IDQpCj4gPj4+Pj4gKwkJaW50ZWxfY3JlYXRlX3JvdGF0aW9uX3Byb3BlcnR5KGRldiwg cHJpbWFyeSk7Cj4gPj4+Pj4KPiA+Pj4+PiAgICAJZHJtX3BsYW5lX2hlbHBlcl9hZGQoJnByaW1h cnktPmJhc2UsICZpbnRlbF9wbGFuZV9oZWxwZXJfZnVuY3MpOwo+ID4+Pj4+Cj4gPj4+Pj4gICAg CXJldHVybiAmcHJpbWFyeS0+YmFzZTsKPiA+Pj4+PiAgICB9Cj4gPj4+Pj4KPiA+Pj4+PiArdm9p ZCBpbnRlbF9jcmVhdGVfcm90YXRpb25fcHJvcGVydHkoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg c3RydWN0IGludGVsX3BsYW5lICpwbGFuZSkKPiA+Pj4+PiArewo+ID4+Pj4+ICsJaWYgKCFkZXYt Pm1vZGVfY29uZmlnLnJvdGF0aW9uX3Byb3BlcnR5KSB7Cj4gPj4+Pj4gKwkJdW5zaWduZWQgbG9u ZyBmbGFncyA9IEJJVChEUk1fUk9UQVRFXzApIHwKPiA+Pj4+PiArCQkJQklUKERSTV9ST1RBVEVf MTgwKTsKPiA+Pj4+PiArCj4gPj4+Pj4gKwkJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDkp Cj4gPj4+Pj4gKwkJCWZsYWdzIHw9IEJJVChEUk1fUk9UQVRFXzkwKSB8IEJJVChEUk1fUk9UQVRF XzI3MCk7Cj4gPj4+Pj4gKwo+ID4+Pj4+ICsJCWRldi0+bW9kZV9jb25maWcucm90YXRpb25fcHJv cGVydHkgPQo+ID4+Pj4+ICsJCQlkcm1fbW9kZV9jcmVhdGVfcm90YXRpb25fcHJvcGVydHkoZGV2 LCBmbGFncyk7Cj4gPj4+Pj4gKwl9Cj4gPj4+Pj4gKwlpZiAoZGV2LT5tb2RlX2NvbmZpZy5yb3Rh dGlvbl9wcm9wZXJ0eSkKPiA+Pj4+PiArCQlkcm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgmcGxh bmUtPmJhc2UuYmFzZSwKPiA+Pj4+PiArCQkJCWRldi0+bW9kZV9jb25maWcucm90YXRpb25fcHJv cGVydHksCj4gPj4+Pj4gKwkJCQlwbGFuZS0+YmFzZS5zdGF0ZS0+cm90YXRpb24pOwo+ID4+Pj4+ ICt9Cj4gPj4+Pj4gKwo+ID4+Pj4+ICAgIHN0YXRpYyBpbnQKPiA+Pj4+PiAgICBpbnRlbF9jaGVj a19jdXJzb3JfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gPj4+Pj4gICAgCQkJIHN0 cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqc3RhdGUpCj4gPj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHJ2LmgKPiA+Pj4+PiBpbmRleCA4MTFhMWRiLi5kMzIwMjVhIDEwMDY0NAo+ID4+Pj4+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPj4+Pj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+Pj4+PiBAQCAtOTk1LDYgKzk5NSwxMiBAQCBpbnRl bF9yb3RhdGlvbl85MF9vcl8yNzAodW5zaWduZWQgaW50IHJvdGF0aW9uKQo+ID4+Pj4+ICAgIAly ZXR1cm4gcm90YXRpb24gJiAoQklUKERSTV9ST1RBVEVfOTApIHwgQklUKERSTV9ST1RBVEVfMjcw KSk7Cj4gPj4+Pj4gICAgfQo+ID4+Pj4+Cj4gPj4+Pj4gK3Vuc2lnbmVkIGludAo+ID4+Pj4+ICtp bnRlbF90aWxlX2hlaWdodChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1aW50MzJfdCBiaXRzX3Bl cl9waXhlbCwKPiA+Pj4+PiArCQkgIHVpbnQ2NF90IGZiX21vZGlmaWVyKTsKPiA+Pj4+PiArdm9p ZCBpbnRlbF9jcmVhdGVfcm90YXRpb25fcHJvcGVydHkoc3RydWN0IGRybV9kZXZpY2UgKmRldiwK PiA+Pj4+PiArCQkJCQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lKTsKPiA+Pj4+PiArCj4gPj4+ Pj4gICAgYm9vbCBpbnRlbF93bV9uZWVkX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwK PiA+Pj4+PiAgICAJCQkgIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnN0YXRlKTsKPiA+Pj4+Pgo+ ID4+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4gPj4+Pj4gaW5kZXggZjQxZTg3 Mi4uODNhZGM5YiAxMDA2NDQKPiA+Pj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9zcHJpdGUuYwo+ID4+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0 ZS5jCj4gPj4+Pj4gQEAgLTE5MCwxMCArMTkwLDEzIEBAIHNrbF91cGRhdGVfcGxhbmUoc3RydWN0 IGRybV9wbGFuZSAqZHJtX3BsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gPj4+Pj4gICAg CXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBpbnRlbF9mYl9vYmooZmIpOwo+ID4+ Pj4+ICAgIAljb25zdCBpbnQgcGlwZSA9IGludGVsX3BsYW5lLT5waXBlOwo+ID4+Pj4+ICAgIAlj b25zdCBpbnQgcGxhbmUgPSBpbnRlbF9wbGFuZS0+cGxhbmUgKyAxOwo+ID4+Pj4+IC0JdTMyIHBs YW5lX2N0bCwgc3RyaWRlX2RpdjsKPiA+Pj4+PiArCXUzMiBwbGFuZV9jdGwsIHN0cmlkZV9kaXYs IHN0cmlkZTsKPiA+Pj4+PiAgICAJaW50IHBpeGVsX3NpemUgPSBkcm1fZm9ybWF0X3BsYW5lX2Nw cChmYi0+cGl4ZWxfZm9ybWF0LCAwKTsKPiA+Pj4+PiAgICAJY29uc3Qgc3RydWN0IGRybV9pbnRl bF9zcHJpdGVfY29sb3JrZXkgKmtleSA9ICZpbnRlbF9wbGFuZS0+Y2tleTsKPiA+Pj4+PiAgICAJ dW5zaWduZWQgbG9uZyBzdXJmX2FkZHI7Cj4gPj4+Pj4gKwl1MzIgdGlsZV9oZWlnaHQsIHBsYW5l X29mZnNldCwgcGxhbmVfc2l6ZTsKPiA+Pj4+PiArCXVuc2lnbmVkIGludCByb3RhdGlvbjsKPiA+ Pj4+PiArCWludCB4X29mZnNldCwgeV9vZmZzZXQ7Cj4gPj4+Pj4KPiA+Pj4+PiAgICAJcGxhbmVf Y3RsID0gUExBTkVfQ1RMX0VOQUJMRSB8Cj4gPj4+Pj4gICAgCQlQTEFORV9DVExfUElQRV9DU0Nf RU5BQkxFOwo+ID4+Pj4+IEBAIC0yNTQsOCArMjU3LDIwIEBAIHNrbF91cGRhdGVfcGxhbmUoc3Ry dWN0IGRybV9wbGFuZSAqZHJtX3BsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gPj4+Pj4g ICAgCQlNSVNTSU5HX0NBU0UoZmItPm1vZGlmaWVyWzBdKTsKPiA+Pj4+PiAgICAJfQo+ID4+Pj4+ Cj4gPj4+Pj4gLQlpZiAoZHJtX3BsYW5lLT5zdGF0ZS0+cm90YXRpb24gPT0gQklUKERSTV9ST1RB VEVfMTgwKSkKPiA+Pj4+PiArCXJvdGF0aW9uID0gZHJtX3BsYW5lLT5zdGF0ZS0+cm90YXRpb247 Cj4gPj4+Pj4gKwlzd2l0Y2ggKHJvdGF0aW9uKSB7Cj4gPj4+Pj4gKwljYXNlIEJJVChEUk1fUk9U QVRFXzkwKToKPiA+Pj4+PiArCQlwbGFuZV9jdGwgfD0gUExBTkVfQ1RMX1JPVEFURV85MDsKPiA+ Pj4+PiArCQlicmVhazsKPiA+Pj4+PiArCj4gPj4+Pj4gKwljYXNlIEJJVChEUk1fUk9UQVRFXzE4 MCk6Cj4gPj4+Pj4gICAgCQlwbGFuZV9jdGwgfD0gUExBTkVfQ1RMX1JPVEFURV8xODA7Cj4gPj4+ Pj4gKwkJYnJlYWs7Cj4gPj4+Pj4gKwo+ID4+Pj4+ICsJY2FzZSBCSVQoRFJNX1JPVEFURV8yNzAp Ogo+ID4+Pj4+ICsJCXBsYW5lX2N0bCB8PSBQTEFORV9DVExfUk9UQVRFXzI3MDsKPiA+Pj4+PiAr CQlicmVhazsKPiA+Pj4+PiArCX0KPiA+Pj4+Pgo+ID4+Pj4+ICAgIAlpbnRlbF91cGRhdGVfc3By aXRlX3dhdGVybWFya3MoZHJtX3BsYW5lLCBjcnRjLCBzcmNfdywgc3JjX2gsCj4gPj4+Pj4gICAg CQkJCSAgICAgICBwaXhlbF9zaXplLCB0cnVlLAo+ID4+Pj4+IEBAIC0yODMsMTAgKzI5OCwyNiBA QCBza2xfdXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKmRybV9wbGFuZSwgc3RydWN0IGRy bV9jcnRjICpjcnRjLAo+ID4+Pj4+Cj4gPj4+Pj4gICAgCXN1cmZfYWRkciA9IGludGVsX3BsYW5l X29ial9vZmZzZXQoaW50ZWxfcGxhbmUsIG9iaik7Cj4gPj4+Pj4KPiA+Pj4+PiAtCUk5MTVfV1JJ VEUoUExBTkVfT0ZGU0VUKHBpcGUsIHBsYW5lKSwgKHkgPDwgMTYpIHwgeCk7Cj4gPj4+Pj4gLQlJ OTE1X1dSSVRFKFBMQU5FX1NUUklERShwaXBlLCBwbGFuZSksIGZiLT5waXRjaGVzWzBdIC8gc3Ry aWRlX2Rpdik7Cj4gPj4+Pj4gKwlpZiAoaW50ZWxfcm90YXRpb25fOTBfb3JfMjcwKHJvdGF0aW9u KSkgewo+ID4+Pj4+ICsJCS8qIHN0cmlkZTogU3VyZmFjZSBoZWlnaHQgaW4gdGlsZXMgKi8KPiA+ Pj4+PiArCQl0aWxlX2hlaWdodCA9IGludGVsX3RpbGVfaGVpZ2h0KGRldiwgZmItPmJpdHNfcGVy X3BpeGVsLAo+ID4+Pj4+ICsJCQkJCQkJZmItPm1vZGlmaWVyWzBdKTsKPiA+Pj4+PiArCQlzdHJp ZGUgPSBESVZfUk9VTkRfVVAoZmItPmhlaWdodCwgdGlsZV9oZWlnaHQpOwo+ID4+Pj4+ICsJCXBs YW5lX3NpemUgPSAoc3JjX3cgPDwgMTYpIHwgc3JjX2g7Cj4gPj4+Pj4gKwkJeF9vZmZzZXQgPSBz dHJpZGUgKiB0aWxlX2hlaWdodCAtIHkgLSAoc3JjX2ggKyAxKTsKPiA+Pj4+PiArCQl5X29mZnNl dCA9IHg7Cj4gPj4+Pj4gKwl9IGVsc2Ugewo+ID4+Pj4+ICsJCXN0cmlkZSA9IGZiLT5waXRjaGVz WzBdIC8gc3RyaWRlX2RpdjsKPiA+Pj4+PiArCQlwbGFuZV9zaXplID0gKHNyY19oIDw8IDE2KSB8 IHNyY193Owo+ID4+Pj4+ICsJCXhfb2Zmc2V0ID0geDsKPiA+Pj4+PiArCQl5X29mZnNldCA9IHk7 Cj4gPj4+Pj4gKwl9Cj4gPj4+Pj4gKwlwbGFuZV9vZmZzZXQgPSB5X29mZnNldCA8PCAxNiB8IHhf b2Zmc2V0Owo+ID4+Pj4+ICsKPiA+Pj4+PiArCUk5MTVfV1JJVEUoUExBTkVfT0ZGU0VUKHBpcGUs IHBsYW5lKSwgcGxhbmVfb2Zmc2V0KTsKPiA+Pj4+PiArCUk5MTVfV1JJVEUoUExBTkVfU1RSSURF KHBpcGUsIHBsYW5lKSwgc3RyaWRlKTsKPiA+Pj4+PiAgICAJSTkxNV9XUklURShQTEFORV9QT1Mo cGlwZSwgcGxhbmUpLCAoY3J0Y195IDw8IDE2KSB8IGNydGNfeCk7Cj4gPj4+Pj4gLQlJOTE1X1dS SVRFKFBMQU5FX1NJWkUocGlwZSwgcGxhbmUpLCAoY3J0Y19oIDw8IDE2KSB8IGNydGNfdyk7Cj4g Pj4+Pj4gKwlJOTE1X1dSSVRFKFBMQU5FX1NJWkUocGlwZSwgcGxhbmUpLCBwbGFuZV9zaXplKTsK PiA+Pj4+PiAgICAJSTkxNV9XUklURShQTEFORV9DVEwocGlwZSwgcGxhbmUpLCBwbGFuZV9jdGwp Owo+ID4+Pj4+ICAgIAlJOTE1X1dSSVRFKFBMQU5FX1NVUkYocGlwZSwgcGxhbmUpLCBzdXJmX2Fk ZHIpOwo+ID4+Pj4+ICAgIAlQT1NUSU5HX1JFQUQoUExBTkVfU1VSRihwaXBlLCBwbGFuZSkpOwo+ ID4+Pj4+IEBAIC0xMzEwLDE2ICsxMzQxLDcgQEAgaW50ZWxfcGxhbmVfaW5pdChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCBlbnVtIHBpcGUgcGlwZSwgaW50IHBsYW5lKQo+ID4+Pj4+ICAgIAkJZ290 byBvdXQ7Cj4gPj4+Pj4gICAgCX0KPiA+Pj4+Pgo+ID4+Pj4+IC0JaWYgKCFkZXYtPm1vZGVfY29u ZmlnLnJvdGF0aW9uX3Byb3BlcnR5KQo+ID4+Pj4+IC0JCWRldi0+bW9kZV9jb25maWcucm90YXRp b25fcHJvcGVydHkgPQo+ID4+Pj4+IC0JCQlkcm1fbW9kZV9jcmVhdGVfcm90YXRpb25fcHJvcGVy dHkoZGV2LAo+ID4+Pj4+IC0JCQkJCQkJICBCSVQoRFJNX1JPVEFURV8wKSB8Cj4gPj4+Pj4gLQkJ CQkJCQkgIEJJVChEUk1fUk9UQVRFXzE4MCkpOwo+ID4+Pj4+IC0KPiA+Pj4+PiAtCWlmIChkZXYt Pm1vZGVfY29uZmlnLnJvdGF0aW9uX3Byb3BlcnR5KQo+ID4+Pj4+IC0JCWRybV9vYmplY3RfYXR0 YWNoX3Byb3BlcnR5KCZpbnRlbF9wbGFuZS0+YmFzZS5iYXNlLAo+ID4+Pj4+IC0JCQkJCSAgIGRl di0+bW9kZV9jb25maWcucm90YXRpb25fcHJvcGVydHksCj4gPj4+Pj4gLQkJCQkJICAgc3RhdGUt PmJhc2Uucm90YXRpb24pOwo+ID4+Pj4+ICsJaW50ZWxfY3JlYXRlX3JvdGF0aW9uX3Byb3BlcnR5 KGRldiwgaW50ZWxfcGxhbmUpOwo+ID4+Pj4+Cj4gPj4+Pj4gICAgCWRybV9wbGFuZV9oZWxwZXJf YWRkKCZpbnRlbF9wbGFuZS0+YmFzZSwgJmludGVsX3BsYW5lX2hlbHBlcl9mdW5jcyk7Cj4gPj4+ Pj4KPiA+Pj4+PiAtLQo+ID4+Pj4+IDEuNy4xMC40Cj4gPj4+Pj4KPiA+Pj4+PiBfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ID4+Pj4+IEludGVsLWdmeCBt YWlsaW5nIGxpc3QKPiA+Pj4+PiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gPj4+ Pj4gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdm eAo+ID4+Pj4KPiA+Pj4+IC0tCj4gPj4+PiBEYW5pZWwgVmV0dGVyCj4gPj4+PiBTb2Z0d2FyZSBF bmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KPiA+Pj4+IGh0dHA6Ly9ibG9nLmZmd2xsLmNoCj4g Pj4+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ID4+ Pj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+ID4+Pj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwo+ID4+Pj4gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2ludGVsLWdmeAo+ID4+Pgo+ID4KCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwgT1RDCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBt YWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==