From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ramalingam C Subject: Re: [RFC PATCH 01/18] drm/i915: Removing the eDP specific DRRS implementation Date: Mon, 29 Jun 2015 16:54:48 +0530 Message-ID: <55912B00.8020207@intel.com> References: <1435326722-24633-1-git-send-email-ramalingam.c@intel.com> <1435326722-24633-2-git-send-email-ramalingam.c@intel.com> <20150626165007.GE30960@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id 43A586E873 for ; Mon, 29 Jun 2015 04:32:32 -0700 (PDT) In-Reply-To: <20150626165007.GE30960@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: paulo.r.zanoni@intel.com, daniel.vetter@ffwll.ch, intel-gfx@lists.freedesktop.org, rodrigo.vivi@intel.com List-Id: intel-gfx@lists.freedesktop.org Ck9uIEZyaWRheSAyNiBKdW5lIDIwMTUgMTA6MjAgUE0sIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4g T24gRnJpLCBKdW4gMjYsIDIwMTUgYXQgMDc6MjE6NDVQTSArMDUzMCwgUmFtYWxpbmdhbSBDIHdy b3RlOgo+PiBFRFAgc3BlY2lmaWMgRFJSUyBpbXBsZW1lbnRhdGlvbiBpcyByZW1vdmVkIHRvIGlt cGxlbWVudCBhCj4+IGdlbmVyaWMgRFJSUyBzdGFjayBleHRlbnRhYmxlIGFjY3Jvc3MgdGhlIHN1 cHBvcnRhYmxlIGVuY29kZXJzLgo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBSYW1hbGluZ2FtIEMgPHJh bWFsaW5nYW0uY0BpbnRlbC5jb20+Cj4gTmFjay4gWW91IGRvbid0IG1ha2Ugc29tZXRoaW5nIGdl bmVyaWMgYnkgZmlyc3QgdGhyb3dpbmcgb3V0IHRoZSBleGlzdGluZwo+IHNvbHV0aW9uIChhbmQg YWxsIHRoZSBsZXNzb25zIGxlYXJuZWQgaW1wbGVtZW50aW5nIHRoYXQpLgo+Cj4gSW5zdGVhZCBj b252ZXJ0IHRoZSBlZHAgRFJSUyBpbXBsZW1lbnRhdGlvbiBvdmVyIHRvIHVzZSBnZW5lcmljCj4g c3RydWN0dXJlcywgc3RlcC1ieS1zdGVwLCBhbmQgdGhlbiBvbmNlIHRoYXQncyBkb25lIGl0IHNo b3VsZCBiZSBzaW1wbHkgdG8KPiBpbXBsZW1lbnQgRFJSUyBmb3Igb3RoZXIgb3V0cHV0cy4KU3Vy ZSBhZ3JlZWQuIFdlIHdpbGwgbWFrZSB0aGUgZXhpc3RpbmcgY29kZSBhcyBnZW5lcmljIGFuZCBp bXBsZW1lbnQgZm9yIApvdGhlciBlbmNvZGVycyB0b28uCkkgd2lsbCB3b3JrIG9uIHRoYXQuIHRo YW5rcy4KPiAtRGFuaWVsCj4KPj4gLS0tCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k ZWJ1Z2ZzLmMgICAgICB8ICAxMTAgLS0tLS0tLS0tCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaCAgICAgICAgICB8ICAgMjIgLS0KPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kZGkuYyAgICAgICAgIHwgICAgMiAtCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHAuYyAgICAgICAgICB8ICAzOTIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4+ ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgICAgICB8ICAgIDUgLQo+PiAg IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Zyb250YnVmZmVyLmMgfCAgICAyIC0KPj4gICA2 IGZpbGVzIGNoYW5nZWQsIDUzMyBkZWxldGlvbnMoLSkKPj4KPj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kZWJ1Z2ZzLmMKPj4gaW5kZXggYzQ5ZmUyYS4uN2RiZjE3MCAxMDA2NDQKPj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPj4gQEAgLTI5NjIsMTE1ICsyOTYyLDYgQEAgc3RhdGljIGlu dCBpOTE1X2RkYl9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQo+PiAgIAly ZXR1cm4gMDsKPj4gICB9Cj4+ICAgCj4+IC1zdGF0aWMgdm9pZCBkcnJzX3N0YXR1c19wZXJfY3J0 YyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sCj4+IC0JCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVj dCBpbnRlbF9jcnRjICppbnRlbF9jcnRjKQo+PiAtewo+PiAtCXN0cnVjdCBpbnRlbF9lbmNvZGVy ICppbnRlbF9lbmNvZGVyOwo+PiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IGRldi0+ZGV2X3ByaXZhdGU7Cj4+IC0Jc3RydWN0IGk5MTVfZHJycyAqZHJycyA9ICZkZXZfcHJp di0+ZHJyczsKPj4gLQlpbnQgdnJlZnJlc2ggPSAwOwo+PiAtCj4+IC0JZm9yX2VhY2hfZW5jb2Rl cl9vbl9jcnRjKGRldiwgJmludGVsX2NydGMtPmJhc2UsIGludGVsX2VuY29kZXIpIHsKPj4gLQkJ LyogRW5jb2RlciBjb25uZWN0ZWQgb24gdGhpcyBDUlRDICovCj4+IC0JCXN3aXRjaCAoaW50ZWxf ZW5jb2Rlci0+dHlwZSkgewo+PiAtCQljYXNlIElOVEVMX09VVFBVVF9FRFA6Cj4+IC0JCQlzZXFf cHV0cyhtLCAiZURQOlxuIik7Cj4+IC0JCQlicmVhazsKPj4gLQkJY2FzZSBJTlRFTF9PVVRQVVRf RFNJOgo+PiAtCQkJc2VxX3B1dHMobSwgIkRTSTpcbiIpOwo+PiAtCQkJYnJlYWs7Cj4+IC0JCWNh c2UgSU5URUxfT1VUUFVUX0hETUk6Cj4+IC0JCQlzZXFfcHV0cyhtLCAiSERNSTpcbiIpOwo+PiAt CQkJYnJlYWs7Cj4+IC0JCWNhc2UgSU5URUxfT1VUUFVUX0RJU1BMQVlQT1JUOgo+PiAtCQkJc2Vx X3B1dHMobSwgIkRQOlxuIik7Cj4+IC0JCQlicmVhazsKPj4gLQkJZGVmYXVsdDoKPj4gLQkJCXNl cV9wcmludGYobSwgIk90aGVyIGVuY29kZXIgKGlkPSVkKS5cbiIsCj4+IC0JCQkJCQlpbnRlbF9l bmNvZGVyLT50eXBlKTsKPj4gLQkJCXJldHVybjsKPj4gLQkJfQo+PiAtCX0KPj4gLQo+PiAtCWlm IChkZXZfcHJpdi0+dmJ0LmRycnNfdHlwZSA9PSBTVEFUSUNfRFJSU19TVVBQT1JUKQo+PiAtCQlz ZXFfcHV0cyhtLCAiXHRWQlQ6IERSUlNfdHlwZTogU3RhdGljIik7Cj4+IC0JZWxzZSBpZiAoZGV2 X3ByaXYtPnZidC5kcnJzX3R5cGUgPT0gU0VBTUxFU1NfRFJSU19TVVBQT1JUKQo+PiAtCQlzZXFf cHV0cyhtLCAiXHRWQlQ6IERSUlNfdHlwZTogU2VhbWxlc3MiKTsKPj4gLQllbHNlIGlmIChkZXZf cHJpdi0+dmJ0LmRycnNfdHlwZSA9PSBEUlJTX05PVF9TVVBQT1JURUQpCj4+IC0JCXNlcV9wdXRz KG0sICJcdFZCVDogRFJSU190eXBlOiBOb25lIik7Cj4+IC0JZWxzZQo+PiAtCQlzZXFfcHV0cyht LCAiXHRWQlQ6IERSUlNfdHlwZTogRklYTUU6IFVucmVjb2duaXplZCBWYWx1ZSIpOwo+PiAtCj4+ IC0Jc2VxX3B1dHMobSwgIlxuXG4iKTsKPj4gLQo+PiAtCWlmICh0b19pbnRlbF9jcnRjX3N0YXRl KGludGVsX2NydGMtPmJhc2Uuc3RhdGUpLT5oYXNfZHJycykgewo+PiAtCQlzdHJ1Y3QgaW50ZWxf cGFuZWwgKnBhbmVsOwo+PiAtCj4+IC0JCW11dGV4X2xvY2soJmRycnMtPm11dGV4KTsKPj4gLQkJ LyogRFJSUyBTdXBwb3J0ZWQgKi8KPj4gLQkJc2VxX3B1dHMobSwgIlx0RFJSUyBTdXBwb3J0ZWQ6 IFllc1xuIik7Cj4+IC0KPj4gLQkJLyogZGlzYWJsZV9kcnJzKCkgd2lsbCBtYWtlIGRycnMtPmRw IE5VTEwgKi8KPj4gLQkJaWYgKCFkcnJzLT5kcCkgewo+PiAtCQkJc2VxX3B1dHMobSwgIklkbGVu ZXNzIERSUlM6IERpc2FibGVkIik7Cj4+IC0JCQltdXRleF91bmxvY2soJmRycnMtPm11dGV4KTsK Pj4gLQkJCXJldHVybjsKPj4gLQkJfQo+PiAtCj4+IC0JCXBhbmVsID0gJmRycnMtPmRwLT5hdHRh Y2hlZF9jb25uZWN0b3ItPnBhbmVsOwo+PiAtCQlzZXFfcHJpbnRmKG0sICJcdFx0QnVzeV9mcm9u dGJ1ZmZlcl9iaXRzOiAweCVYIiwKPj4gLQkJCQkJZHJycy0+YnVzeV9mcm9udGJ1ZmZlcl9iaXRz KTsKPj4gLQo+PiAtCQlzZXFfcHV0cyhtLCAiXG5cdFx0Iik7Cj4+IC0JCWlmIChkcnJzLT5yZWZy ZXNoX3JhdGVfdHlwZSA9PSBEUlJTX0hJR0hfUlIpIHsKPj4gLQkJCXNlcV9wdXRzKG0sICJEUlJT X1N0YXRlOiBEUlJTX0hJR0hfUlJcbiIpOwo+PiAtCQkJdnJlZnJlc2ggPSBwYW5lbC0+Zml4ZWRf bW9kZS0+dnJlZnJlc2g7Cj4+IC0JCX0gZWxzZSBpZiAoZHJycy0+cmVmcmVzaF9yYXRlX3R5cGUg PT0gRFJSU19MT1dfUlIpIHsKPj4gLQkJCXNlcV9wdXRzKG0sICJEUlJTX1N0YXRlOiBEUlJTX0xP V19SUlxuIik7Cj4+IC0JCQl2cmVmcmVzaCA9IHBhbmVsLT5kb3duY2xvY2tfbW9kZS0+dnJlZnJl c2g7Cj4+IC0JCX0gZWxzZSB7Cj4+IC0JCQlzZXFfcHJpbnRmKG0sICJEUlJTX1N0YXRlOiBVbmtu b3duKCVkKVxuIiwKPj4gLQkJCQkJCWRycnMtPnJlZnJlc2hfcmF0ZV90eXBlKTsKPj4gLQkJCW11 dGV4X3VubG9jaygmZHJycy0+bXV0ZXgpOwo+PiAtCQkJcmV0dXJuOwo+PiAtCQl9Cj4+IC0JCXNl cV9wcmludGYobSwgIlx0XHRWcmVmcmVzaDogJWQiLCB2cmVmcmVzaCk7Cj4+IC0KPj4gLQkJc2Vx X3B1dHMobSwgIlxuXHRcdCIpOwo+PiAtCQltdXRleF91bmxvY2soJmRycnMtPm11dGV4KTsKPj4g LQl9IGVsc2Ugewo+PiAtCQkvKiBEUlJTIG5vdCBzdXBwb3J0ZWQuIFByaW50IHRoZSBWQlQgcGFy YW1ldGVyKi8KPj4gLQkJc2VxX3B1dHMobSwgIlx0RFJSUyBTdXBwb3J0ZWQgOiBObyIpOwo+PiAt CX0KPj4gLQlzZXFfcHV0cyhtLCAiXG4iKTsKPj4gLX0KPj4gLQo+PiAtc3RhdGljIGludCBpOTE1 X2RycnNfc3RhdHVzKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQo+PiAtewo+PiAt CXN0cnVjdCBkcm1faW5mb19ub2RlICpub2RlID0gbS0+cHJpdmF0ZTsKPj4gLQlzdHJ1Y3QgZHJt X2RldmljZSAqZGV2ID0gbm9kZS0+bWlub3ItPmRldjsKPj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAq aW50ZWxfY3J0YzsKPj4gLQlpbnQgYWN0aXZlX2NydGNfY250ID0gMDsKPj4gLQo+PiAtCWZvcl9l YWNoX2ludGVsX2NydGMoZGV2LCBpbnRlbF9jcnRjKSB7Cj4+IC0JCWRybV9tb2Rlc2V0X2xvY2so JmludGVsX2NydGMtPmJhc2UubXV0ZXgsIE5VTEwpOwo+PiAtCj4+IC0JCWlmIChpbnRlbF9jcnRj LT5iYXNlLnN0YXRlLT5hY3RpdmUpIHsKPj4gLQkJCWFjdGl2ZV9jcnRjX2NudCsrOwo+PiAtCQkJ c2VxX3ByaW50ZihtLCAiXG5DUlRDICVkOiAgIiwgYWN0aXZlX2NydGNfY250KTsKPj4gLQo+PiAt CQkJZHJyc19zdGF0dXNfcGVyX2NydGMobSwgZGV2LCBpbnRlbF9jcnRjKTsKPj4gLQkJfQo+PiAt Cj4+IC0JCWRybV9tb2Rlc2V0X3VubG9jaygmaW50ZWxfY3J0Yy0+YmFzZS5tdXRleCk7Cj4+IC0J fQo+PiAtCj4+IC0JaWYgKCFhY3RpdmVfY3J0Y19jbnQpCj4+IC0JCXNlcV9wdXRzKG0sICJObyBh Y3RpdmUgY3J0YyBmb3VuZFxuIik7Cj4+IC0KPj4gLQlyZXR1cm4gMDsKPj4gLX0KPj4gLQo+PiAg IHN0cnVjdCBwaXBlX2NyY19pbmZvIHsKPj4gICAJY29uc3QgY2hhciAqbmFtZTsKPj4gICAJc3Ry dWN0IGRybV9kZXZpY2UgKmRldjsKPj4gQEAgLTUwNDgsNyArNDkzOSw2IEBAIHN0YXRpYyBjb25z dCBzdHJ1Y3QgZHJtX2luZm9fbGlzdCBpOTE1X2RlYnVnZnNfbGlzdFtdID0gewo+PiAgIAl7Imk5 MTVfd2FfcmVnaXN0ZXJzIiwgaTkxNV93YV9yZWdpc3RlcnMsIDB9LAo+PiAgIAl7Imk5MTVfZGRi X2luZm8iLCBpOTE1X2RkYl9pbmZvLCAwfSwKPj4gICAJeyJpOTE1X3NzZXVfc3RhdHVzIiwgaTkx NV9zc2V1X3N0YXR1cywgMH0sCj4+IC0JeyJpOTE1X2RycnNfc3RhdHVzIiwgaTkxNV9kcnJzX3N0 YXR1cywgMH0sCj4+ICAgCXsiaTkxNV9ycHNfYm9vc3RfaW5mbyIsIGk5MTVfcnBzX2Jvb3N0X2lu Zm8sIDB9LAo+PiAgIH07Cj4+ICAgI2RlZmluZSBJOTE1X0RFQlVHRlNfRU5UUklFUyBBUlJBWV9T SVpFKGk5MTVfZGVidWdmc19saXN0KQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPj4gaW5kZXgg NDkxZWYwYy4uOTIyZGQ2OCAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaAo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4+IEBAIC05 MzAsMzMgKzkzMCwxMiBAQCBzdHJ1Y3QgaTkxNV9mYmMgewo+PiAgIAl9IG5vX2ZiY19yZWFzb247 Cj4+ICAgfTsKPj4gICAKPj4gLS8qKgo+PiAtICogSElHSF9SUiBpcyB0aGUgaGlnaGVzdCBlRFAg cGFuZWwgcmVmcmVzaCByYXRlIHJlYWQgZnJvbSBFRElECj4+IC0gKiBMT1dfUlIgaXMgdGhlIGxv d2VzdCBlRFAgcGFuZWwgcmVmcmVzaCByYXRlIGZvdW5kIGZyb20gRURJRAo+PiAtICogcGFyc2lu ZyBmb3Igc2FtZSByZXNvbHV0aW9uLgo+PiAtICovCj4+IC1lbnVtIGRycnNfcmVmcmVzaF9yYXRl X3R5cGUgewo+PiAtCURSUlNfSElHSF9SUiwKPj4gLQlEUlJTX0xPV19SUiwKPj4gLQlEUlJTX01B WF9SUiwgLyogUlIgY291bnQgKi8KPj4gLX07Cj4+IC0KPj4gICBlbnVtIGRycnNfc3VwcG9ydF90 eXBlIHsKPj4gICAJRFJSU19OT1RfU1VQUE9SVEVEID0gMCwKPj4gICAJU1RBVElDX0RSUlNfU1VQ UE9SVCA9IDEsCj4+ICAgCVNFQU1MRVNTX0RSUlNfU1VQUE9SVCA9IDIKPj4gICB9Owo+PiAgIAo+ PiAtc3RydWN0IGludGVsX2RwOwo+PiAtc3RydWN0IGk5MTVfZHJycyB7Cj4+IC0Jc3RydWN0IG11 dGV4IG11dGV4Owo+PiAtCXN0cnVjdCBkZWxheWVkX3dvcmsgd29yazsKPj4gLQlzdHJ1Y3QgaW50 ZWxfZHAgKmRwOwo+PiAtCXVuc2lnbmVkIGJ1c3lfZnJvbnRidWZmZXJfYml0czsKPj4gLQllbnVt IGRycnNfcmVmcmVzaF9yYXRlX3R5cGUgcmVmcmVzaF9yYXRlX3R5cGU7Cj4+IC0JZW51bSBkcnJz X3N1cHBvcnRfdHlwZSB0eXBlOwo+PiAtfTsKPj4gLQo+PiAgIHN0cnVjdCBpOTE1X3BzciB7Cj4+ ICAgCXN0cnVjdCBtdXRleCBsb2NrOwo+PiAgIAlib29sIHNpbmtfc3VwcG9ydDsKPj4gQEAgLTE3 MTgsNyArMTY5Nyw2IEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsKPj4gICAKPj4gICAJc3Ry dWN0IGk5MTVfaG90cGx1ZyBob3RwbHVnOwo+PiAgIAlzdHJ1Y3QgaTkxNV9mYmMgZmJjOwo+PiAt CXN0cnVjdCBpOTE1X2RycnMgZHJyczsKPj4gICAJc3RydWN0IGludGVsX29wcmVnaW9uIG9wcmVn aW9uOwo+PiAgIAlzdHJ1Y3QgaW50ZWxfdmJ0X2RhdGEgdmJ0Owo+PiAgIAo+PiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kZGkuYwo+PiBpbmRleCAzMWIyOWU4Li43NWFmYmQ3IDEwMDY0NAo+PiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kZGkuYwo+PiBAQCAtMjAxMiw3ICsyMDEyLDYgQEAgc3RhdGljIHZvaWQgaW50 ZWxfZW5hYmxlX2RkaShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlcikKPj4gICAK Pj4gICAJCWludGVsX2VkcF9iYWNrbGlnaHRfb24oaW50ZWxfZHApOwo+PiAgIAkJaW50ZWxfcHNy X2VuYWJsZShpbnRlbF9kcCk7Cj4+IC0JCWludGVsX2VkcF9kcnJzX2VuYWJsZShpbnRlbF9kcCk7 Cj4+ICAgCX0KPj4gICAKPj4gICAJaWYgKGludGVsX2NydGMtPmNvbmZpZy0+aGFzX2F1ZGlvKSB7 Cj4+IEBAIC0yMDM4LDcgKzIwMzcsNiBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kaXNhYmxlX2RkaShz dHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlcikKPj4gICAJaWYgKHR5cGUgPT0gSU5U RUxfT1VUUFVUX0VEUCkgewo+PiAgIAkJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9IGVuY190 b19pbnRlbF9kcChlbmNvZGVyKTsKPj4gICAKPj4gLQkJaW50ZWxfZWRwX2RycnNfZGlzYWJsZShp bnRlbF9kcCk7Cj4+ICAgCQlpbnRlbF9wc3JfZGlzYWJsZShpbnRlbF9kcCk7Cj4+ICAgCQlpbnRl bF9lZHBfYmFja2xpZ2h0X29mZihpbnRlbF9kcCk7Cj4+ICAgCX0KPj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcC5jCj4+IGluZGV4IGY1MmVlZjEuLjczOGU5OGUgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHAuYwo+PiBAQCAtMTQ4MywxNSArMTQ4Myw2IEBAIGZvdW5kOgo+PiAgIAkJCSAgICAgICBw aXBlX2NvbmZpZy0+cG9ydF9jbG9jaywKPj4gICAJCQkgICAgICAgJnBpcGVfY29uZmlnLT5kcF9t X24pOwo+PiAgIAo+PiAtCWlmIChpbnRlbF9jb25uZWN0b3ItPnBhbmVsLmRvd25jbG9ja19tb2Rl ICE9IE5VTEwgJiYKPj4gLQkJZGV2X3ByaXYtPmRycnMudHlwZSA9PSBTRUFNTEVTU19EUlJTX1NV UFBPUlQpIHsKPj4gLQkJCXBpcGVfY29uZmlnLT5oYXNfZHJycyA9IHRydWU7Cj4+IC0JCQlpbnRl bF9saW5rX2NvbXB1dGVfbV9uKGJwcCwgbGFuZV9jb3VudCwKPj4gLQkJCQlpbnRlbF9jb25uZWN0 b3ItPnBhbmVsLmRvd25jbG9ja19tb2RlLT5jbG9jaywKPj4gLQkJCQlwaXBlX2NvbmZpZy0+cG9y dF9jbG9jaywKPj4gLQkJCQkmcGlwZV9jb25maWctPmRwX20yX24yKTsKPj4gLQl9Cj4+IC0KPj4g ICAJaWYgKElTX1NLWUxBS0UoZGV2KSAmJiBpc19lZHAoaW50ZWxfZHApKQo+PiAgIAkJc2tsX2Vk cF9zZXRfcGxsX2NvbmZpZyhwaXBlX2NvbmZpZywgY29tbW9uX3JhdGVzW2Nsb2NrXSk7Cj4+ICAg CWVsc2UgaWYgKElTX0JST1hUT04oZGV2KSkKPj4gQEAgLTUyNTQsMzg3ICs1MjQ1LDYgQEAgaW50 ZWxfZHBfaW5pdF9wYW5lbF9wb3dlcl9zZXF1ZW5jZXJfcmVnaXN0ZXJzKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsCj4+ICAgCQkgICAgICBJOTE1X1JFQUQocHBfZGl2X3JlZykpOwo+PiAgIH0KPj4g ICAKPj4gLS8qKgo+PiAtICogaW50ZWxfZHBfc2V0X2RycnNfc3RhdGUgLSBwcm9ncmFtIHJlZ2lz dGVycyBmb3IgUlIgc3dpdGNoIHRvIHRha2UgZWZmZWN0Cj4+IC0gKiBAZGV2OiBEUk0gZGV2aWNl Cj4+IC0gKiBAcmVmcmVzaF9yYXRlOiBSUiB0byBiZSBwcm9ncmFtbWVkCj4+IC0gKgo+PiAtICog VGhpcyBmdW5jdGlvbiBnZXRzIGNhbGxlZCB3aGVuIHJlZnJlc2ggcmF0ZSAoUlIpIGhhcyB0byBi ZSBjaGFuZ2VkIGZyb20KPj4gLSAqIG9uZSBmcmVxdWVuY3kgdG8gYW5vdGhlci4gU3dpdGNoZXMg Y2FuIGJlIGJldHdlZW4gaGlnaCBhbmQgbG93IFJSCj4+IC0gKiBzdXBwb3J0ZWQgYnkgdGhlIHBh bmVsIG9yIHRvIGFueSBvdGhlciBSUiBiYXNlZCBvbiBtZWRpYSBwbGF5YmFjayAoaW4KPj4gLSAq IHRoaXMgY2FzZSwgUlIgdmFsdWUgbmVlZHMgdG8gYmUgcGFzc2VkIGZyb20gdXNlciBzcGFjZSku Cj4+IC0gKgo+PiAtICogVGhlIGNhbGxlciBvZiB0aGlzIGZ1bmN0aW9uIG5lZWRzIHRvIHRha2Ug YSBsb2NrIG9uIGRldl9wcml2LT5kcnJzLgo+PiAtICovCj4+IC1zdGF0aWMgdm9pZCBpbnRlbF9k cF9zZXRfZHJyc19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgcmVmcmVzaF9yYXRl KQo+PiAtewo+PiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2 X3ByaXZhdGU7Cj4+IC0Jc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXI7Cj4+IC0Jc3RydWN0 IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQgPSBOVUxMOwo+PiAtCXN0cnVjdCBpbnRlbF9k cCAqaW50ZWxfZHAgPSBkZXZfcHJpdi0+ZHJycy5kcDsKPj4gLQlzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY29uZmlnID0gTlVMTDsKPj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9 IE5VTEw7Cj4+IC0JdTMyIHJlZywgdmFsOwo+PiAtCWVudW0gZHJyc19yZWZyZXNoX3JhdGVfdHlw ZSBpbmRleCA9IERSUlNfSElHSF9SUjsKPj4gLQo+PiAtCWlmIChyZWZyZXNoX3JhdGUgPD0gMCkg ewo+PiAtCQlEUk1fREVCVUdfS01TKCJSZWZyZXNoIHJhdGUgc2hvdWxkIGJlIHBvc2l0aXZlIG5v bi16ZXJvLlxuIik7Cj4+IC0JCXJldHVybjsKPj4gLQl9Cj4+IC0KPj4gLQlpZiAoaW50ZWxfZHAg PT0gTlVMTCkgewo+PiAtCQlEUk1fREVCVUdfS01TKCJEUlJTIG5vdCBzdXBwb3J0ZWQuXG4iKTsK Pj4gLQkJcmV0dXJuOwo+PiAtCX0KPj4gLQo+PiAtCS8qCj4+IC0JICogRklYTUU6IFRoaXMgbmVl ZHMgcHJvcGVyIHN5bmNocm9uaXphdGlvbiB3aXRoIHBzciBzdGF0ZSBmb3Igc29tZQo+PiAtCSAq IHBsYXRmb3JtcyB0aGF0IGNhbm5vdCBoYXZlIFBTUiBhbmQgRFJSUyBlbmFibGVkIGF0IHRoZSBz YW1lIHRpbWUuCj4+IC0JICovCj4+IC0KPj4gLQlkaWdfcG9ydCA9IGRwX3RvX2RpZ19wb3J0KGlu dGVsX2RwKTsKPj4gLQllbmNvZGVyID0gJmRpZ19wb3J0LT5iYXNlOwo+PiAtCWludGVsX2NydGMg PSB0b19pbnRlbF9jcnRjKGVuY29kZXItPmJhc2UuY3J0Yyk7Cj4+IC0KPj4gLQlpZiAoIWludGVs X2NydGMpIHsKPj4gLQkJRFJNX0RFQlVHX0tNUygiRFJSUzogaW50ZWxfY3J0YyBub3QgaW5pdGlh bGl6ZWRcbiIpOwo+PiAtCQlyZXR1cm47Cj4+IC0JfQo+PiAtCj4+IC0JY29uZmlnID0gaW50ZWxf Y3J0Yy0+Y29uZmlnOwo+PiAtCj4+IC0JaWYgKGRldl9wcml2LT5kcnJzLnR5cGUgPCBTRUFNTEVT U19EUlJTX1NVUFBPUlQpIHsKPj4gLQkJRFJNX0RFQlVHX0tNUygiT25seSBTZWFtbGVzcyBEUlJT IHN1cHBvcnRlZC5cbiIpOwo+PiAtCQlyZXR1cm47Cj4+IC0JfQo+PiAtCj4+IC0JaWYgKGludGVs X2RwLT5hdHRhY2hlZF9jb25uZWN0b3ItPnBhbmVsLmRvd25jbG9ja19tb2RlLT52cmVmcmVzaCA9 PQo+PiAtCQkJcmVmcmVzaF9yYXRlKQo+PiAtCQlpbmRleCA9IERSUlNfTE9XX1JSOwo+PiAtCj4+ IC0JaWYgKGluZGV4ID09IGRldl9wcml2LT5kcnJzLnJlZnJlc2hfcmF0ZV90eXBlKSB7Cj4+IC0J CURSTV9ERUJVR19LTVMoCj4+IC0JCQkiRFJSUyByZXF1ZXN0ZWQgZm9yIHByZXZpb3VzbHkgc2V0 IFJSLi4uaWdub3JpbmdcbiIpOwo+PiAtCQlyZXR1cm47Cj4+IC0JfQo+PiAtCj4+IC0JaWYgKCFp bnRlbF9jcnRjLT5hY3RpdmUpIHsKPj4gLQkJRFJNX0RFQlVHX0tNUygiZURQIGVuY29kZXIgZGlz YWJsZWQuIENSVEMgbm90IEFjdGl2ZVxuIik7Cj4+IC0JCXJldHVybjsKPj4gLQl9Cj4+IC0KPj4g LQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOCAmJiAhSVNfQ0hFUlJZVklFVyhkZXYpKSB7 Cj4+IC0JCXN3aXRjaCAoaW5kZXgpIHsKPj4gLQkJY2FzZSBEUlJTX0hJR0hfUlI6Cj4+IC0JCQlp bnRlbF9kcF9zZXRfbV9uKGludGVsX2NydGMsIE0xX04xKTsKPj4gLQkJCWJyZWFrOwo+PiAtCQlj YXNlIERSUlNfTE9XX1JSOgo+PiAtCQkJaW50ZWxfZHBfc2V0X21fbihpbnRlbF9jcnRjLCBNMl9O Mik7Cj4+IC0JCQlicmVhazsKPj4gLQkJY2FzZSBEUlJTX01BWF9SUjoKPj4gLQkJZGVmYXVsdDoK Pj4gLQkJCURSTV9FUlJPUigiVW5zdXBwb3J0ZWQgcmVmcmVzaHJhdGUgdHlwZVxuIik7Cj4+IC0J CX0KPj4gLQl9IGVsc2UgaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID4gNikgewo+PiAtCQlyZWcg PSBQSVBFQ09ORihpbnRlbF9jcnRjLT5jb25maWctPmNwdV90cmFuc2NvZGVyKTsKPj4gLQkJdmFs ID0gSTkxNV9SRUFEKHJlZyk7Cj4+IC0KPj4gLQkJaWYgKGluZGV4ID4gRFJSU19ISUdIX1JSKSB7 Cj4+IC0JCQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKQo+PiAtCQkJCXZhbCB8PSBQSVBFQ09ORl9F RFBfUlJfTU9ERV9TV0lUQ0hfVkxWOwo+PiAtCQkJZWxzZQo+PiAtCQkJCXZhbCB8PSBQSVBFQ09O Rl9FRFBfUlJfTU9ERV9TV0lUQ0g7Cj4+IC0JCX0gZWxzZSB7Cj4+IC0JCQlpZiAoSVNfVkFMTEVZ VklFVyhkZXYpKQo+PiAtCQkJCXZhbCAmPSB+UElQRUNPTkZfRURQX1JSX01PREVfU1dJVENIX1ZM VjsKPj4gLQkJCWVsc2UKPj4gLQkJCQl2YWwgJj0gflBJUEVDT05GX0VEUF9SUl9NT0RFX1NXSVRD SDsKPj4gLQkJfQo+PiAtCQlJOTE1X1dSSVRFKHJlZywgdmFsKTsKPj4gLQl9Cj4+IC0KPj4gLQlk ZXZfcHJpdi0+ZHJycy5yZWZyZXNoX3JhdGVfdHlwZSA9IGluZGV4Owo+PiAtCj4+IC0JRFJNX0RF QlVHX0tNUygiZURQIFJlZnJlc2ggUmF0ZSBzZXQgdG8gOiAlZEh6XG4iLCByZWZyZXNoX3JhdGUp Owo+PiAtfQo+PiAtCj4+IC0vKioKPj4gLSAqIGludGVsX2VkcF9kcnJzX2VuYWJsZSAtIGluaXQg ZHJycyBzdHJ1Y3QgaWYgc3VwcG9ydGVkCj4+IC0gKiBAaW50ZWxfZHA6IERQIHN0cnVjdAo+PiAt ICoKPj4gLSAqIEluaXRpYWxpemVzIGZyb250YnVmZmVyX2JpdHMgYW5kIGRycnMuZHAKPj4gLSAq Lwo+PiAtdm9pZCBpbnRlbF9lZHBfZHJyc19lbmFibGUoc3RydWN0IGludGVsX2RwICppbnRlbF9k cCkKPj4gLXsKPj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gaW50ZWxfZHBfdG9fZGV2KGlu dGVsX2RwKTsKPj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRl dl9wcml2YXRlOwo+PiAtCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0ID0gZHBf dG9fZGlnX3BvcnQoaW50ZWxfZHApOwo+PiAtCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IGRpZ19w b3J0LT5iYXNlLmJhc2UuY3J0YzsKPj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9 IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4+IC0KPj4gLQlpZiAoIWludGVsX2NydGMtPmNvbmZpZy0+ aGFzX2RycnMpIHsKPj4gLQkJRFJNX0RFQlVHX0tNUygiUGFuZWwgZG9lc24ndCBzdXBwb3J0IERS UlNcbiIpOwo+PiAtCQlyZXR1cm47Cj4+IC0JfQo+PiAtCj4+IC0JbXV0ZXhfbG9jaygmZGV2X3By aXYtPmRycnMubXV0ZXgpOwo+PiAtCWlmIChXQVJOX09OKGRldl9wcml2LT5kcnJzLmRwKSkgewo+ PiAtCQlEUk1fRVJST1IoIkRSUlMgYWxyZWFkeSBlbmFibGVkXG4iKTsKPj4gLQkJZ290byB1bmxv Y2s7Cj4+IC0JfQo+PiAtCj4+IC0JZGV2X3ByaXYtPmRycnMuYnVzeV9mcm9udGJ1ZmZlcl9iaXRz ID0gMDsKPj4gLQo+PiAtCWRldl9wcml2LT5kcnJzLmRwID0gaW50ZWxfZHA7Cj4+IC0KPj4gLXVu bG9jazoKPj4gLQltdXRleF91bmxvY2soJmRldl9wcml2LT5kcnJzLm11dGV4KTsKPj4gLX0KPj4g LQo+PiAtLyoqCj4+IC0gKiBpbnRlbF9lZHBfZHJyc19kaXNhYmxlIC0gRGlzYWJsZSBEUlJTCj4+ IC0gKiBAaW50ZWxfZHA6IERQIHN0cnVjdAo+PiAtICoKPj4gLSAqLwo+PiAtdm9pZCBpbnRlbF9l ZHBfZHJyc19kaXNhYmxlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4+IC17Cj4+IC0Jc3Ry dWN0IGRybV9kZXZpY2UgKmRldiA9IGludGVsX2RwX3RvX2RldihpbnRlbF9kcCk7Cj4+IC0Jc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPj4gLQlz dHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCA9IGRwX3RvX2RpZ19wb3J0KGludGVs X2RwKTsKPj4gLQlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBkaWdfcG9ydC0+YmFzZS5iYXNlLmNy dGM7Cj4+IC0Jc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNy dGMpOwo+PiAtCj4+IC0JaWYgKCFpbnRlbF9jcnRjLT5jb25maWctPmhhc19kcnJzKQo+PiAtCQly ZXR1cm47Cj4+IC0KPj4gLQltdXRleF9sb2NrKCZkZXZfcHJpdi0+ZHJycy5tdXRleCk7Cj4+IC0J aWYgKCFkZXZfcHJpdi0+ZHJycy5kcCkgewo+PiAtCQltdXRleF91bmxvY2soJmRldl9wcml2LT5k cnJzLm11dGV4KTsKPj4gLQkJcmV0dXJuOwo+PiAtCX0KPj4gLQo+PiAtCWlmIChkZXZfcHJpdi0+ ZHJycy5yZWZyZXNoX3JhdGVfdHlwZSA9PSBEUlJTX0xPV19SUikKPj4gLQkJaW50ZWxfZHBfc2V0 X2RycnNfc3RhdGUoZGV2X3ByaXYtPmRldiwKPj4gLQkJCWludGVsX2RwLT5hdHRhY2hlZF9jb25u ZWN0b3ItPnBhbmVsLgo+PiAtCQkJZml4ZWRfbW9kZS0+dnJlZnJlc2gpOwo+PiAtCj4+IC0JZGV2 X3ByaXYtPmRycnMuZHAgPSBOVUxMOwo+PiAtCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmRycnMu bXV0ZXgpOwo+PiAtCj4+IC0JY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZkZXZfcHJpdi0+ZHJy cy53b3JrKTsKPj4gLX0KPj4gLQo+PiAtc3RhdGljIHZvaWQgaW50ZWxfZWRwX2RycnNfZG93bmNs b2NrX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQo+PiAtewo+PiAtCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9Cj4+IC0JCWNvbnRhaW5lcl9vZih3b3JrLCB0eXBlb2Yo KmRldl9wcml2KSwgZHJycy53b3JrLndvcmspOwo+PiAtCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxf ZHA7Cj4+IC0KPj4gLQltdXRleF9sb2NrKCZkZXZfcHJpdi0+ZHJycy5tdXRleCk7Cj4+IC0KPj4g LQlpbnRlbF9kcCA9IGRldl9wcml2LT5kcnJzLmRwOwo+PiAtCj4+IC0JaWYgKCFpbnRlbF9kcCkK Pj4gLQkJZ290byB1bmxvY2s7Cj4+IC0KPj4gLQkvKgo+PiAtCSAqIFRoZSBkZWxheWVkIHdvcmsg Y2FuIHJhY2Ugd2l0aCBhbiBpbnZhbGlkYXRlIGhlbmNlIHdlIG5lZWQgdG8KPj4gLQkgKiByZWNo ZWNrLgo+PiAtCSAqLwo+PiAtCj4+IC0JaWYgKGRldl9wcml2LT5kcnJzLmJ1c3lfZnJvbnRidWZm ZXJfYml0cykKPj4gLQkJZ290byB1bmxvY2s7Cj4+IC0KPj4gLQlpZiAoZGV2X3ByaXYtPmRycnMu cmVmcmVzaF9yYXRlX3R5cGUgIT0gRFJSU19MT1dfUlIpCj4+IC0JCWludGVsX2RwX3NldF9kcnJz X3N0YXRlKGRldl9wcml2LT5kZXYsCj4+IC0JCQlpbnRlbF9kcC0+YXR0YWNoZWRfY29ubmVjdG9y LT5wYW5lbC4KPj4gLQkJCWRvd25jbG9ja19tb2RlLT52cmVmcmVzaCk7Cj4+IC0KPj4gLXVubG9j azoKPj4gLQltdXRleF91bmxvY2soJmRldl9wcml2LT5kcnJzLm11dGV4KTsKPj4gLX0KPj4gLQo+ PiAtLyoqCj4+IC0gKiBpbnRlbF9lZHBfZHJyc19pbnZhbGlkYXRlIC0gRGlzYWJsZSBJZGxlbmVz cyBEUlJTCj4+IC0gKiBAZGV2OiBEUk0gZGV2aWNlCj4+IC0gKiBAZnJvbnRidWZmZXJfYml0czog ZnJvbnRidWZmZXIgcGxhbmUgdHJhY2tpbmcgYml0cwo+PiAtICoKPj4gLSAqIFRoaXMgZnVuY3Rp b24gZ2V0cyBjYWxsZWQgZXZlcnl0aW1lIHJlbmRlcmluZyBvbiB0aGUgZ2l2ZW4gcGxhbmVzIHN0 YXJ0Lgo+PiAtICogSGVuY2UgRFJSUyBuZWVkcyB0byBiZSBVcGNsb2NrZWQsIGkuZS4gKExPV19S UiAtPiBISUdIX1JSKS4KPj4gLSAqCj4+IC0gKiBEaXJ0eSBmcm9udGJ1ZmZlcnMgcmVsZXZhbnQg dG8gRFJSUyBhcmUgdHJhY2tlZCBpbiBidXN5X2Zyb250YnVmZmVyX2JpdHMuCj4+IC0gKi8KPj4g LXZvaWQgaW50ZWxfZWRwX2RycnNfaW52YWxpZGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ PiAtCQl1bnNpZ25lZCBmcm9udGJ1ZmZlcl9iaXRzKQo+PiAtewo+PiAtCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4+IC0Jc3RydWN0IGRybV9j cnRjICpjcnRjOwo+PiAtCWVudW0gcGlwZSBwaXBlOwo+PiAtCj4+IC0JaWYgKGRldl9wcml2LT5k cnJzLnR5cGUgPT0gRFJSU19OT1RfU1VQUE9SVEVEKQo+PiAtCQlyZXR1cm47Cj4+IC0KPj4gLQlj YW5jZWxfZGVsYXllZF93b3JrKCZkZXZfcHJpdi0+ZHJycy53b3JrKTsKPj4gLQo+PiAtCW11dGV4 X2xvY2soJmRldl9wcml2LT5kcnJzLm11dGV4KTsKPj4gLQlpZiAoIWRldl9wcml2LT5kcnJzLmRw KSB7Cj4+IC0JCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmRycnMubXV0ZXgpOwo+PiAtCQlyZXR1 cm47Cj4+IC0JfQo+PiAtCj4+IC0JY3J0YyA9IGRwX3RvX2RpZ19wb3J0KGRldl9wcml2LT5kcnJz LmRwKS0+YmFzZS5iYXNlLmNydGM7Cj4+IC0JcGlwZSA9IHRvX2ludGVsX2NydGMoY3J0YyktPnBp cGU7Cj4+IC0KPj4gLQkvKiBpbnZhbGlkYXRlIG1lYW5zIGJ1c3kgc2NyZWVuIGhlbmNlIHVwY2xv Y2sgKi8KPj4gLQlpZiAoZGV2X3ByaXYtPmRycnMucmVmcmVzaF9yYXRlX3R5cGUgPT0gRFJSU19M T1dfUlIpIHsKPj4gLQkJaW50ZWxfZHBfc2V0X2RycnNfc3RhdGUoZGV2X3ByaXYtPmRldiwKPj4g LQkJCQlkZXZfcHJpdi0+ZHJycy5kcC0+YXR0YWNoZWRfY29ubmVjdG9yLT5wYW5lbC4KPj4gLQkJ CQlmaXhlZF9tb2RlLT52cmVmcmVzaCk7Cj4+IC0JfQo+PiAtCj4+IC0JZnJvbnRidWZmZXJfYml0 cyAmPSBJTlRFTF9GUk9OVEJVRkZFUl9BTExfTUFTSyhwaXBlKTsKPj4gLQo+PiAtCWRldl9wcml2 LT5kcnJzLmJ1c3lfZnJvbnRidWZmZXJfYml0cyB8PSBmcm9udGJ1ZmZlcl9iaXRzOwo+PiAtCW11 dGV4X3VubG9jaygmZGV2X3ByaXYtPmRycnMubXV0ZXgpOwo+PiAtfQo+PiAtCj4+IC0vKioKPj4g LSAqIGludGVsX2VkcF9kcnJzX2ZsdXNoIC0gUmVzdGFydCBJZGxlbmVzcyBEUlJTCj4+IC0gKiBA ZGV2OiBEUk0gZGV2aWNlCj4+IC0gKiBAZnJvbnRidWZmZXJfYml0czogZnJvbnRidWZmZXIgcGxh bmUgdHJhY2tpbmcgYml0cwo+PiAtICoKPj4gLSAqIFRoaXMgZnVuY3Rpb24gZ2V0cyBjYWxsZWQg ZXZlcnkgdGltZSByZW5kZXJpbmcgb24gdGhlIGdpdmVuIHBsYW5lcyBoYXMKPj4gLSAqIGNvbXBs ZXRlZCBvciBmbGlwIG9uIGEgY3J0YyBpcyBjb21wbGV0ZWQuIFNvIERSUlMgc2hvdWxkIGJlIHVw Y2xvY2tlZAo+PiAtICogKExPV19SUiAtPiBISUdIX1JSKS4gQW5kIGFsc28gSWRsZW5lc3MgZGV0 ZWN0aW9uIHNob3VsZCBiZSBzdGFydGVkIGFnYWluLAo+PiAtICogaWYgbm8gb3RoZXIgcGxhbmVz IGFyZSBkaXJ0eS4KPj4gLSAqCj4+IC0gKiBEaXJ0eSBmcm9udGJ1ZmZlcnMgcmVsZXZhbnQgdG8g RFJSUyBhcmUgdHJhY2tlZCBpbiBidXN5X2Zyb250YnVmZmVyX2JpdHMuCj4+IC0gKi8KPj4gLXZv aWQgaW50ZWxfZWRwX2RycnNfZmx1c2goc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPj4gLQkJdW5z aWduZWQgZnJvbnRidWZmZXJfYml0cykKPj4gLXsKPj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+PiAtCXN0cnVjdCBkcm1fY3J0YyAqY3J0 YzsKPj4gLQllbnVtIHBpcGUgcGlwZTsKPj4gLQo+PiAtCWlmIChkZXZfcHJpdi0+ZHJycy50eXBl ID09IERSUlNfTk9UX1NVUFBPUlRFRCkKPj4gLQkJcmV0dXJuOwo+PiAtCj4+IC0JY2FuY2VsX2Rl bGF5ZWRfd29yaygmZGV2X3ByaXYtPmRycnMud29yayk7Cj4+IC0KPj4gLQltdXRleF9sb2NrKCZk ZXZfcHJpdi0+ZHJycy5tdXRleCk7Cj4+IC0JaWYgKCFkZXZfcHJpdi0+ZHJycy5kcCkgewo+PiAt CQltdXRleF91bmxvY2soJmRldl9wcml2LT5kcnJzLm11dGV4KTsKPj4gLQkJcmV0dXJuOwo+PiAt CX0KPj4gLQo+PiAtCWNydGMgPSBkcF90b19kaWdfcG9ydChkZXZfcHJpdi0+ZHJycy5kcCktPmJh c2UuYmFzZS5jcnRjOwo+PiAtCXBpcGUgPSB0b19pbnRlbF9jcnRjKGNydGMpLT5waXBlOwo+PiAt CWRldl9wcml2LT5kcnJzLmJ1c3lfZnJvbnRidWZmZXJfYml0cyAmPSB+ZnJvbnRidWZmZXJfYml0 czsKPj4gLQo+PiAtCS8qIGZsdXNoIG1lYW5zIGJ1c3kgc2NyZWVuIGhlbmNlIHVwY2xvY2sgKi8K Pj4gLQlpZiAoZGV2X3ByaXYtPmRycnMucmVmcmVzaF9yYXRlX3R5cGUgPT0gRFJSU19MT1dfUlIp Cj4+IC0JCWludGVsX2RwX3NldF9kcnJzX3N0YXRlKGRldl9wcml2LT5kZXYsCj4+IC0JCQkJZGV2 X3ByaXYtPmRycnMuZHAtPmF0dGFjaGVkX2Nvbm5lY3Rvci0+cGFuZWwuCj4+IC0JCQkJZml4ZWRf bW9kZS0+dnJlZnJlc2gpOwo+PiAtCj4+IC0JLyoKPj4gLQkgKiBmbHVzaCBhbHNvIG1lYW5zIG5v IG1vcmUgYWN0aXZpdHkgaGVuY2Ugc2NoZWR1bGUgZG93bmNsb2NrLCBpZiBhbGwKPj4gLQkgKiBv dGhlciBmYnMgYXJlIHF1aWVzY2VudCB0b28KPj4gLQkgKi8KPj4gLQlpZiAoIWRldl9wcml2LT5k cnJzLmJ1c3lfZnJvbnRidWZmZXJfYml0cykKPj4gLQkJc2NoZWR1bGVfZGVsYXllZF93b3JrKCZk ZXZfcHJpdi0+ZHJycy53b3JrLAo+PiAtCQkJCW1zZWNzX3RvX2ppZmZpZXMoMTAwMCkpOwo+PiAt CW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmRycnMubXV0ZXgpOwo+PiAtfQo+PiAtCj4+IC0vKioK Pj4gLSAqIERPQzogRGlzcGxheSBSZWZyZXNoIFJhdGUgU3dpdGNoaW5nIChEUlJTKQo+PiAtICoK Pj4gLSAqIERpc3BsYXkgUmVmcmVzaCBSYXRlIFN3aXRjaGluZyAoRFJSUykgaXMgYSBwb3dlciBj b25zZXJ2YXRpb24gZmVhdHVyZQo+PiAtICogd2hpY2ggZW5hYmxlcyBzd3RjaGluZyBiZXR3ZWVu IGxvdyBhbmQgaGlnaCByZWZyZXNoIHJhdGVzLAo+PiAtICogZHluYW1pY2FsbHksIGJhc2VkIG9u IHRoZSB1c2FnZSBzY2VuYXJpby4gVGhpcyBmZWF0dXJlIGlzIGFwcGxpY2FibGUKPj4gLSAqIGZv ciBpbnRlcm5hbCBwYW5lbHMuCj4+IC0gKgo+PiAtICogSW5kaWNhdGlvbiB0aGF0IHRoZSBwYW5l bCBzdXBwb3J0cyBEUlJTIGlzIGdpdmVuIGJ5IHRoZSBwYW5lbCBFRElELCB3aGljaAo+PiAtICog d291bGQgbGlzdCBtdWx0aXBsZSByZWZyZXNoIHJhdGVzIGZvciBvbmUgcmVzb2x1dGlvbi4KPj4g LSAqCj4+IC0gKiBEUlJTIGlzIG9mIDIgdHlwZXMgLSBzdGF0aWMgYW5kIHNlYW1sZXNzLgo+PiAt ICogU3RhdGljIERSUlMgaW52b2x2ZXMgY2hhbmdpbmcgcmVmcmVzaCByYXRlIChSUikgYnkgZG9p bmcgYSBmdWxsIG1vZGVzZXQKPj4gLSAqIChtYXkgYXBwZWFyIGFzIGEgYmxpbmsgb24gc2NyZWVu KSBhbmQgaXMgdXNlZCBpbiBkb2NrLXVuZG9jayBzY2VuYXJpby4KPj4gLSAqIFNlYW1sZXNzIERS UlMgaW52b2x2ZXMgY2hhbmdpbmcgUlIgd2l0aG91dCBhbnkgdmlzdWFsIGVmZmVjdCB0byB0aGUg dXNlcgo+PiAtICogYW5kIGNhbiBiZSB1c2VkIGR1cmluZyBub3JtYWwgc3lzdGVtIHVzYWdlLiBU aGlzIGlzIGRvbmUgYnkgcHJvZ3JhbW1pbmcKPj4gLSAqIGNlcnRhaW4gcmVnaXN0ZXJzLgo+PiAt ICoKPj4gLSAqIFN1cHBvcnQgZm9yIHN0YXRpYy9zZWFtbGVzcyBEUlJTIG1heSBiZSBpbmRpY2F0 ZWQgaW4gdGhlIFZCVCBiYXNlZCBvbgo+PiAtICogaW5wdXRzIGZyb20gdGhlIHBhbmVsIHNwZWMu Cj4+IC0gKgo+PiAtICogRFJSUyBzYXZlcyBwb3dlciBieSBzd2l0Y2hpbmcgdG8gbG93IFJSIGJh c2VkIG9uIHVzYWdlIHNjZW5hcmlvcy4KPj4gLSAqCj4+IC0gKiBlRFAgRFJSUzotCj4+IC0gKiAg ICAgICAgVGhlIGltcGxlbWVudGF0aW9uIGlzIGJhc2VkIG9uIGZyb250YnVmZmVyIHRyYWNraW5n IGltcGxlbWVudGF0aW9uLgo+PiAtICogV2hlbiB0aGVyZSBpcyBhIGRpc3R1cmJhbmNlIG9uIHRo ZSBzY3JlZW4gdHJpZ2dlcmVkIGJ5IHVzZXIgYWN0aXZpdHkgb3IgYQo+PiAtICogcGVyaW9kaWMg c3lzdGVtIGFjdGl2aXR5LCBEUlJTIGlzIGRpc2FibGVkIChSUiBpcyBjaGFuZ2VkIHRvIGhpZ2gg UlIpLgo+PiAtICogV2hlbiB0aGVyZSBpcyBubyBtb3ZlbWVudCBvbiBzY3JlZW4sIGFmdGVyIGEg dGltZW91dCBvZiAxIHNlY29uZCwgYSBzd2l0Y2gKPj4gLSAqIHRvIGxvdyBSUiBpcyBtYWRlLgo+ PiAtICogICAgICAgIEZvciBpbnRlZ3JhdGlvbiB3aXRoIGZyb250YnVmZmVyIHRyYWNraW5nIGNv ZGUsCj4+IC0gKiBpbnRlbF9lZHBfZHJyc19pbnZhbGlkYXRlKCkgYW5kIGludGVsX2VkcF9kcnJz X2ZsdXNoKCkgYXJlIGNhbGxlZC4KPj4gLSAqCj4+IC0gKiBEUlJTIGNhbiBiZSBmdXJ0aGVyIGV4 dGVuZGVkIHRvIHN1cHBvcnQgb3RoZXIgaW50ZXJuYWwgcGFuZWxzIGFuZCBhbHNvCj4+IC0gKiB0 aGUgc2NlbmFyaW8gb2YgdmlkZW8gcGxheWJhY2sgd2hlcmVpbiBSUiBpcyBzZXQgYmFzZWQgb24g dGhlIHJhdGUKPj4gLSAqIHJlcXVlc3RlZCBieSB1c2Vyc3BhY2UuCj4+IC0gKi8KPj4gLQo+PiAt LyoqCj4+IC0gKiBpbnRlbF9kcF9kcnJzX2luaXQgLSBJbml0IGJhc2ljIERSUlMgd29yayBhbmQg bXV0ZXguCj4+IC0gKiBAaW50ZWxfY29ubmVjdG9yOiBlRFAgY29ubmVjdG9yCj4+IC0gKiBAZml4 ZWRfbW9kZTogcHJlZmVycmVkIG1vZGUgb2YgcGFuZWwKPj4gLSAqCj4+IC0gKiBUaGlzIGZ1bmN0 aW9uIGlzICBjYWxsZWQgb25seSBvbmNlIGF0IGRyaXZlciBsb2FkIHRvIGluaXRpYWxpemUgYmFz aWMKPj4gLSAqIERSUlMgc3R1ZmYuCj4+IC0gKgo+PiAtICogUmV0dXJuczoKPj4gLSAqIERvd25j bG9jayBtb2RlIGlmIHBhbmVsIHN1cHBvcnRzIGl0LCBlbHNlIHJldHVybiBOVUxMLgo+PiAtICog RFJSUyBzdXBwb3J0IGlzIGRldGVybWluZWQgYnkgdGhlIHByZXNlbmNlIG9mIGRvd25jbG9jayBt b2RlIChhcGFydAo+PiAtICogZnJvbSBWQlQgc2V0dGluZykuCj4+IC0gKi8KPj4gLXN0YXRpYyBz dHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqCj4+IC1pbnRlbF9kcF9kcnJzX2luaXQoc3RydWN0IGlu dGVsX2Nvbm5lY3RvciAqaW50ZWxfY29ubmVjdG9yLAo+PiAtCQlzdHJ1Y3QgZHJtX2Rpc3BsYXlf bW9kZSAqZml4ZWRfbW9kZSkKPj4gLXsKPj4gLQlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVj dG9yID0gJmludGVsX2Nvbm5lY3Rvci0+YmFzZTsKPj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gY29ubmVjdG9yLT5kZXY7Cj4+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPj4gLQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqZG93bmNs b2NrX21vZGUgPSBOVUxMOwo+PiAtCj4+IC0JSU5JVF9ERUxBWUVEX1dPUksoJmRldl9wcml2LT5k cnJzLndvcmssIGludGVsX2VkcF9kcnJzX2Rvd25jbG9ja193b3JrKTsKPj4gLQltdXRleF9pbml0 KCZkZXZfcHJpdi0+ZHJycy5tdXRleCk7Cj4+IC0KPj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5n ZW4gPD0gNikgewo+PiAtCQlEUk1fREVCVUdfS01TKCJEUlJTIHN1cHBvcnRlZCBmb3IgR2VuNyBh bmQgYWJvdmVcbiIpOwo+PiAtCQlyZXR1cm4gTlVMTDsKPj4gLQl9Cj4+IC0KPj4gLQlpZiAoZGV2 X3ByaXYtPnZidC5kcnJzX3R5cGUgIT0gU0VBTUxFU1NfRFJSU19TVVBQT1JUKSB7Cj4+IC0JCURS TV9ERUJVR19LTVMoIlZCVCBkb2Vzbid0IHN1cHBvcnQgRFJSU1xuIik7Cj4+IC0JCXJldHVybiBO VUxMOwo+PiAtCX0KPj4gLQo+PiAtCWRvd25jbG9ja19tb2RlID0gaW50ZWxfZmluZF9wYW5lbF9k b3duY2xvY2sKPj4gLQkJCQkJKGRldiwgZml4ZWRfbW9kZSwgY29ubmVjdG9yKTsKPj4gLQo+PiAt CWlmICghZG93bmNsb2NrX21vZGUpIHsKPj4gLQkJRFJNX0RFQlVHX0tNUygiRG93bmNsb2NrIG1v ZGUgaXMgbm90IGZvdW5kLiBEUlJTIG5vdCBzdXBwb3J0ZWRcbiIpOwo+PiAtCQlyZXR1cm4gTlVM TDsKPj4gLQl9Cj4+IC0KPj4gLQlkZXZfcHJpdi0+ZHJycy50eXBlID0gZGV2X3ByaXYtPnZidC5k cnJzX3R5cGU7Cj4+IC0KPj4gLQlkZXZfcHJpdi0+ZHJycy5yZWZyZXNoX3JhdGVfdHlwZSA9IERS UlNfSElHSF9SUjsKPj4gLQlEUk1fREVCVUdfS01TKCJzZWFtbGVzcyBEUlJTIHN1cHBvcnRlZCBm b3IgZURQIHBhbmVsLlxuIik7Cj4+IC0JcmV0dXJuIGRvd25jbG9ja19tb2RlOwo+PiAtfQo+PiAt Cj4+ICAgc3RhdGljIGJvb2wgaW50ZWxfZWRwX2luaXRfY29ubmVjdG9yKHN0cnVjdCBpbnRlbF9k cCAqaW50ZWxfZHAsCj4+ICAgCQkJCSAgICAgc3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50ZWxf Y29ubmVjdG9yKQo+PiAgIHsKPj4gQEAgLTU2OTYsOCArNTMwNiw2IEBAIHN0YXRpYyBib29sIGlu dGVsX2VkcF9pbml0X2Nvbm5lY3RvcihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+PiAgIAls aXN0X2Zvcl9lYWNoX2VudHJ5KHNjYW4sICZjb25uZWN0b3ItPnByb2JlZF9tb2RlcywgaGVhZCkg ewo+PiAgIAkJaWYgKChzY2FuLT50eXBlICYgRFJNX01PREVfVFlQRV9QUkVGRVJSRUQpKSB7Cj4+ ICAgCQkJZml4ZWRfbW9kZSA9IGRybV9tb2RlX2R1cGxpY2F0ZShkZXYsIHNjYW4pOwo+PiAtCQkJ ZG93bmNsb2NrX21vZGUgPSBpbnRlbF9kcF9kcnJzX2luaXQoCj4+IC0JCQkJCQlpbnRlbF9jb25u ZWN0b3IsIGZpeGVkX21vZGUpOwo+PiAgIAkJCWJyZWFrOwo+PiAgIAkJfQo+PiAgIAl9Cj4+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rydi5oCj4+IGluZGV4IGJjYWZlZmMuLmUyZjUzNGEgMTAwNjQ0Cj4+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4+IEBAIC0xMTk4LDExICsxMTk4LDYgQEAgdm9pZCBp bnRlbF9kcF9ob3RfcGx1ZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2Rlcik7Cj4+ ICAgdm9pZCB2bHZfcG93ZXJfc2VxdWVuY2VyX3Jlc2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdik7Cj4+ICAgdWludDMyX3QgaW50ZWxfZHBfcGFja19hdXgoY29uc3QgdWludDhf dCAqc3JjLCBpbnQgc3JjX2J5dGVzKTsKPj4gICB2b2lkIGludGVsX3BsYW5lX2Rlc3Ryb3koc3Ry dWN0IGRybV9wbGFuZSAqcGxhbmUpOwo+PiAtdm9pZCBpbnRlbF9lZHBfZHJyc19lbmFibGUoc3Ry dWN0IGludGVsX2RwICppbnRlbF9kcCk7Cj4+IC12b2lkIGludGVsX2VkcF9kcnJzX2Rpc2FibGUo c3RydWN0IGludGVsX2RwICppbnRlbF9kcCk7Cj4+IC12b2lkIGludGVsX2VkcF9kcnJzX2ludmFs aWRhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPj4gLQkJdW5zaWduZWQgZnJvbnRidWZmZXJf Yml0cyk7Cj4+IC12b2lkIGludGVsX2VkcF9kcnJzX2ZsdXNoKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHVuc2lnbmVkIGZyb250YnVmZmVyX2JpdHMpOwo+PiAgIAo+PiAgIC8qIGludGVsX2RwX21z dC5jICovCj4+ICAgaW50IGludGVsX2RwX21zdF9lbmNvZGVyX2luaXQoc3RydWN0IGludGVsX2Rp Z2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsIGludCBjb25uX2lkKTsKPj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Zyb250YnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9mcm9udGJ1ZmZlci5jCj4+IGluZGV4IDU3MDk1ZjUuLjI0OWQwYjMgMTAw NjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Zyb250YnVmZmVyLmMKPj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZnJvbnRidWZmZXIuYwo+PiBAQCAtMTU0 LDcgKzE1NCw2IEBAIHZvaWQgaW50ZWxfZmJfb2JqX2ludmFsaWRhdGUoc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iaiwKPj4gICAJaW50ZWxfbWFya19mYl9idXN5KGRldiwgb2JqLT5mcm9u dGJ1ZmZlcl9iaXRzLCByaW5nKTsKPj4gICAKPj4gICAJaW50ZWxfcHNyX2ludmFsaWRhdGUoZGV2 LCBvYmotPmZyb250YnVmZmVyX2JpdHMpOwo+PiAtCWludGVsX2VkcF9kcnJzX2ludmFsaWRhdGUo ZGV2LCBvYmotPmZyb250YnVmZmVyX2JpdHMpOwo+PiAgIAlpbnRlbF9mYmNfaW52YWxpZGF0ZShk ZXZfcHJpdiwgb2JqLT5mcm9udGJ1ZmZlcl9iaXRzLCBvcmlnaW4pOwo+PiAgIH0KPj4gICAKPj4g QEAgLTE4MSw3ICsxODAsNiBAQCB2b2lkIGludGVsX2Zyb250YnVmZmVyX2ZsdXNoKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsCj4+ICAgCj4+ICAgCWludGVsX21hcmtfZmJfYnVzeShkZXYsIGZyb250 YnVmZmVyX2JpdHMsIE5VTEwpOwo+PiAgIAo+PiAtCWludGVsX2VkcF9kcnJzX2ZsdXNoKGRldiwg ZnJvbnRidWZmZXJfYml0cyk7Cj4+ICAgCWludGVsX3Bzcl9mbHVzaChkZXYsIGZyb250YnVmZmVy X2JpdHMpOwo+PiAgIAlpbnRlbF9mYmNfZmx1c2goZGV2X3ByaXYsIGZyb250YnVmZmVyX2JpdHMp Owo+PiAgIH0KPj4gLS0gCj4+IDEuNy45LjUKPj4KCi0tIApUaGFua3MsCi0tUmFtCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGlu ZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=