From mboxrd@z Thu Jan 1 00:00:00 1970 From: Abhinav Kumar Subject: Re: [PATCH v8 1/2] drm/panel: Add support for Truly NT35597 panel driver Date: Thu, 27 Sep 2018 10:25:33 -0700 Message-ID: References: <1537483957-22710-1-git-send-email-abhinavk@codeaurora.org> <20180927122006.GG29102@ulmo> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from smtp.codeaurora.org (smtp.codeaurora.org [198.145.29.96]) by gabe.freedesktop.org (Postfix) with ESMTPS id D0B456E606 for ; Thu, 27 Sep 2018 17:25:36 +0000 (UTC) In-Reply-To: <20180927122006.GG29102@ulmo> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Thierry Reding Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, bjorn.andersson@linaro.org, seanpaul@chromium.org, hoegsberg@google.com, chandanu@codeaurora.org List-Id: dri-devel@lists.freedesktop.org SGkgVGhpZXJyeQoKVGhhbmtzIGZvciB0aGUgY29tbWVudHMuCgpJIHdpbGwgZml4IHRoZXNlIGlu IHY5LgoKVGhhbmtzCgpBYmhpbmF2Ck9uIDIwMTgtMDktMjcgMDU6MjAsIFRoaWVycnkgUmVkaW5n IHdyb3RlOgo+IE9uIFRodSwgU2VwIDIwLCAyMDE4IGF0IDAzOjUyOjM2UE0gLTA3MDAsIEFiaGlu YXYgS3VtYXIgd3JvdGU6Cj4+IEZyb206ICJhYmhpbmF2a0Bjb2RlYXVyb3JhLm9yZyIgPGFiaGlu YXZrQGNvZGVhdXJvcmEub3JnPgo+PiAKPj4gQWRkIHN1cHBvcnQgZm9yIFRydWx5IE5UMzU1OTcg cGFuZWwgZHJpdmVyIHVzZWQKPj4gaW4gTVNNIHJlZmVyZW5jZSBwbGF0Zm9ybXMuCj4+IAo+PiBU aGlzIHBhbmVsIGRyaXZlciBzdXBwb3J0cyBib3RoIHNpbmdsZSBEU0kgYW5kIGR1YWwgRFNJCj4+ IG1vZGVzLgo+PiAKPj4gSG93ZXZlciwgdGhpcyBwYXRjaCBzZXJpZXMgYWRkcyBzdXBwb3J0IG9u bHkgZm9yCj4+IGR1YWwgRFNJIG1vZGUuCj4gCj4gWW91ciBsaW5lcyBhcmUgdmVyeSBzaG9ydCBo ZXJlLiBJdCdzIHVzdWFsbHkgYSBnb29kIGlkZWEgdG8ga2VlcCB0aGUKPiBzdWJqZWN0IGxpbmUg c2hvcnQsIGJ1dCB0aGVyZSdzIG5vIG5lZWQgdG8gd3JhcCB0aGlzIGVhcmx5IGluIHRoZSByZXN0 Cj4gb2YgdGhlIGNvbW1pdCBtZXNzYWdlLiBJdCdzIGN1c3RvbWFyeSB0byB1c2UgdXAgdG8gNzIg Y2hhcmFjdGVycy4KPiAKPj4gCj4+IENoYW5nZXMgaW4gdjg6Cj4+IC0gUmVtb3ZlIHZpZGVvIG1v ZGUgY29uZmlnIGFuZCBoZWFkZXJzCj4+IC0gUmVtb3ZlIHVudXNlZCBtYWNyb3MKPj4gLSBUcnkg dG8gYXZvaWQgbXVsdGktbGluZXMgd2hlcmV2ZXIgcG9zc2libGUKPj4gLSBGaXggY29tbWVudHMg bG9jYXRpb25zIGFuZCBtYWtlIGl0IGNvbmNpc2UKPj4gLSBGaXggcmV0dXJuIHBvaW50cyBpbiBw cm9iZSBmdW5jdGlvbgo+PiAKPj4gU2lnbmVkLW9mZi1ieTogQXJjaGl0IFRhbmVqYSA8YXJjaGl0 dEBjb2RlYXVyb3JhLm9yZz4KPj4gU2lnbmVkLW9mZi1ieTogQWJoaW5hdiBLdW1hciA8YWJoaW5h dmtAY29kZWF1cm9yYS5vcmc+Cj4+IC0tLQo+PiAgZHJpdmVycy9ncHUvZHJtL3BhbmVsL0tjb25m aWcgICAgICAgICAgICAgICB8ICAgNyArCj4+ICBkcml2ZXJzL2dwdS9kcm0vcGFuZWwvTWFrZWZp bGUgICAgICAgICAgICAgIHwgICAxICsKPj4gIGRyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC10 cnVseS1udDM1NTk3LmMgfCA2NzYgCj4+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysKPj4g IDMgZmlsZXMgY2hhbmdlZCwgNjg0IGluc2VydGlvbnMoKykKPj4gIGNyZWF0ZSBtb2RlIDEwMDY0 NCBkcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtdHJ1bHktbnQzNTU5Ny5jCj4+IAo+PiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BhbmVsL0tjb25maWcgCj4+IGIvZHJpdmVycy9ncHUv ZHJtL3BhbmVsL0tjb25maWcKPj4gaW5kZXggNjAyMGMzMC4uMDczZmZhMCAxMDA2NDQKPj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL3BhbmVsL0tjb25maWcKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L3BhbmVsL0tjb25maWcKPj4gQEAgLTE4Niw0ICsxODYsMTEgQEAgY29uZmlnIERSTV9QQU5FTF9T SVRST05JWF9TVDc3ODlWCj4+ICAJICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIGVuYWJsZSBz dXBwb3J0IGZvciB0aGUgU2l0cm9uaXgKPj4gIAkgIFNUNzc4OVYgY29udHJvbGxlciBmb3IgMjQw eDMyMCBMQ0QgcGFuZWxzCj4+IAo+PiArY29uZmlnIERSTV9QQU5FTF9UUlVMWV9OVDM1NTk3X1dR WEdBCj4+ICsJdHJpc3RhdGUgIlRydWx5IFdRWEdBIgo+PiArCWRlcGVuZHMgb24gT0YKPj4gKwlk ZXBlbmRzIG9uIERSTV9NSVBJX0RTSQo+PiArCWhlbHAKPj4gKwkgIFNheSBZIGhlcmUgaWYgeW91 IHdhbnQgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIFRydWx5IE5UMzU1OTcgV1FYR0EgCj4+IER1YWwg RFNJCj4+ICsJICBWaWRlbyBNb2RlIHBhbmVsCj4+ICBlbmRtZW51Cj4+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vcGFuZWwvTWFrZWZpbGUgCj4+IGIvZHJpdmVycy9ncHUvZHJtL3BhbmVs L01ha2VmaWxlCj4+IGluZGV4IDVjY2FhYTkuLjgwZmQxOWYgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9wYW5lbC9NYWtlZmlsZQo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwv TWFrZWZpbGUKPj4gQEAgLTE5LDMgKzE5LDQgQEAgb2JqLSQoQ09ORklHX0RSTV9QQU5FTF9TRUlL T180M1dWRjFHKSArPSAKPj4gcGFuZWwtc2Vpa28tNDN3dmYxZy5vCj4+ICBvYmotJChDT05GSUdf RFJNX1BBTkVMX1NIQVJQX0xRMTAxUjFTWDAxKSArPSAKPj4gcGFuZWwtc2hhcnAtbHExMDFyMXN4 MDEubwo+PiAgb2JqLSQoQ09ORklHX0RSTV9QQU5FTF9TSEFSUF9MUzA0M1QxTEUwMSkgKz0gCj4+ IHBhbmVsLXNoYXJwLWxzMDQzdDFsZTAxLm8KPj4gIG9iai0kKENPTkZJR19EUk1fUEFORUxfU0lU Uk9OSVhfU1Q3Nzg5VikgKz0gcGFuZWwtc2l0cm9uaXgtc3Q3Nzg5di5vCj4+ICtvYmotJChDT05G SUdfRFJNX1BBTkVMX1RSVUxZX05UMzU1OTdfV1FYR0EpICs9IHBhbmVsLXRydWx5LW50MzU1OTcu bwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLXRydWx5LW50MzU1 OTcuYyAKPj4gYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtdHJ1bHktbnQzNTU5Ny5jCj4+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4IDAwMDAwMDAuLmM5ZTA5ZTIKPj4gLS0tIC9k ZXYvbnVsbAo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtdHJ1bHktbnQzNTU5 Ny5jCj4+IEBAIC0wLDAgKzEsNjc2IEBACj4+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog R1BMLTIuMAo+PiArLyoKPj4gKyAqIENvcHlyaWdodCAoYykgMjAxOCwgVGhlIExpbnV4IEZvdW5k YXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4+ICsgKi8KPj4gKwo+PiArI2luY2x1ZGUgPGxp bnV4L2dwaW8vY29uc3VtZXIuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9vZl9ncmFwaC5oPgo+PiAr I2luY2x1ZGUgPGxpbnV4L3JlZ3VsYXRvci9jb25zdW1lci5oPgo+PiArI2luY2x1ZGUgPGxpbnV4 L3BpbmN0cmwvY29uc3VtZXIuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9vZl9kZXZpY2UuaD4KPj4g Kwo+PiArI2luY2x1ZGUgPHZpZGVvL21pcGlfZGlzcGxheS5oPgo+PiArCj4+ICsjaW5jbHVkZSA8 ZHJtL2RybVAuaD4KPj4gKyNpbmNsdWRlIDxkcm0vZHJtX3BhbmVsLmg+Cj4+ICsjaW5jbHVkZSA8 ZHJtL2RybV9taXBpX2RzaS5oPgo+IAo+IFRoZSBoZWFkZXJzIHNob3VsZCBiZSBzb3J0ZWQgYWxw aGFiZXRpY2FsbHkuCj4gCj4+ICsKPj4gK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3QgcmVndWxh dG9yX25hbWVzW10gPSB7Cj4+ICsJInZkZGEiLAo+PiArCSJ2ZGlzcHAiLAo+PiArCSJ2ZGlzcG4i LAo+PiArfTsKPj4gKwo+PiArc3RhdGljIHVuc2lnbmVkIGxvbmcgY29uc3QgcmVndWxhdG9yX2Vu YWJsZV9sb2Fkc1tdID0gewo+PiArCTYyMDAwLAo+PiArCTEwMDAwMCwKPj4gKwkxMDAwMDAsCj4+ ICt9Owo+PiArCj4+ICtzdGF0aWMgdW5zaWduZWQgbG9uZyBjb25zdCByZWd1bGF0b3JfZGlzYWJs ZV9sb2Fkc1tdID0gewo+PiArCTgwLAo+PiArCTEwMCwKPj4gKwkxMDAsCj4+ICt9Owo+PiArCj4+ ICtzdHJ1Y3QgbnQzNTU5N19jb25maWcgewo+PiArCXUzMiB3aWR0aF9tbTsKPj4gKwl1MzIgaGVp Z2h0X21tOwo+PiArCWNvbnN0IGNoYXIgKnBhbmVsX25hbWU7Cj4+ICsJY29uc3Qgdm9pZCAqcGFu ZWxfb25fY21kczsKPiAKPiBXaHkgdm9pZCAqPyBZb3UgZGVmaW5lIHRoZSBjb3JyZWN0IGRhdGEg c3RydWN0dXJlIGEgZmV3IGxpbmVzIGZ1cnRoZXIKPiBkb3duLCBzbyB5b3UgbWlnaHQgYXMgd2Vs bCBqdXN0IG1vdmUgdGhhdCBkZWZpbml0aW9uIHVwIGFuZCB1c2UgdGhlCj4gcHJvcGVyIGRhdGEg c3RydWN0dXJlIGhlcmUuIFRoZW4gdGhlcmUnZCBiZSBubyBuZWVkIHRvIGNhc3QgdGhpcyB0bwo+ IHN0cnVjdCBjbWRfc2V0ICogbGF0ZXIgb24gd2hlbiB5b3UgdXNlIGl0Lgo+IAo+PiArCXUzMiBu dW1fb25fY21kczsKPj4gKwljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqZG07Cj4+ICt9 Owo+PiArCj4+ICtzdHJ1Y3QgdHJ1bHlfbnQzNTU5NyB7Cj4+ICsJc3RydWN0IGRldmljZSAqZGV2 Owo+PiArCXN0cnVjdCBkcm1fcGFuZWwgcGFuZWw7Cj4+ICsKPj4gKwlzdHJ1Y3QgcmVndWxhdG9y X2J1bGtfZGF0YSBzdXBwbGllc1tBUlJBWV9TSVpFKHJlZ3VsYXRvcl9uYW1lcyldOwo+PiArCj4+ ICsJc3RydWN0IGdwaW9fZGVzYyAqcmVzZXRfZ3BpbzsKPj4gKwlzdHJ1Y3QgZ3Bpb19kZXNjICpt b2RlX2dwaW87Cj4+ICsKPj4gKwlzdHJ1Y3QgYmFja2xpZ2h0X2RldmljZSAqYmFja2xpZ2h0Owo+ PiArCj4+ICsJc3RydWN0IG1pcGlfZHNpX2RldmljZSAqZHNpWzJdOwo+PiArCj4+ICsJY29uc3Qg c3RydWN0IG50MzU1OTdfY29uZmlnICpjb25maWc7Cj4+ICsJYm9vbCBwcmVwYXJlZDsKPj4gKwli b29sIGVuYWJsZWQ7Cj4+ICt9Owo+PiArCj4+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCB0cnVseV9u dDM1NTk3ICpwYW5lbF90b19jdHgoc3RydWN0IGRybV9wYW5lbCAKPj4gKnBhbmVsKQo+PiArewo+ PiArCXJldHVybiBjb250YWluZXJfb2YocGFuZWwsIHN0cnVjdCB0cnVseV9udDM1NTk3LCBwYW5l bCk7Cj4+ICt9Cj4+ICsKPj4gK3N0cnVjdCBjbWRfc2V0IHsKPj4gKwl1OCBjb21tYW5kc1s0XTsK Pj4gKwl1OCBzaXplOwo+PiArfTsKPj4gKwo+PiArc3RhdGljIHN0cnVjdCBjbWRfc2V0IHFjb21f MmtfcGFuZWxfbWFnaWNfY21kc1tdID0gewo+IAo+IHN0YXRpYyBjb25zdD8KPiAKPj4gKwkvKiBD TUQyX1AwICovCj4+ICsJeyB7IDB4ZmYsIDB4MjAgfSwgMiB9LAo+PiArCXsgeyAweGZiLCAweDAx IH0sIDIgfSwKPj4gKwl7IHsgMHgwMCwgMHgwMSB9LCAyIH0sCj4+ICsJeyB7IDB4MDEsIDB4NTUg fSwgMiB9LAo+PiArCXsgeyAweDAyLCAweDQ1IH0sIDIgfSwKPj4gKwl7IHsgMHgwNSwgMHg0MCB9 LCAyIH0sCj4+ICsJeyB7IDB4MDYsIDB4MTkgfSwgMiB9LAo+PiArCXsgeyAweDA3LCAweDFlIH0s IDIgfSwKPj4gKwl7IHsgMHgwYiwgMHg3MyB9LCAyIH0sCj4+ICsJeyB7IDB4MGMsIDB4NzMgfSwg MiB9LAo+PiArCXsgeyAweDBlLCAweGIwIH0sIDIgfSwKPj4gKwl7IHsgMHgwZiwgMHhhZSB9LCAy IH0sCj4+ICsJeyB7IDB4MTEsIDB4YjggfSwgMiB9LAo+PiArCXsgeyAweDEzLCAweDAwIH0sIDIg fSwKPj4gKwl7IHsgMHg1OCwgMHg4MCB9LCAyIH0sCj4+ICsJeyB7IDB4NTksIDB4MDEgfSwgMiB9 LAo+PiArCXsgeyAweDVhLCAweDAwIH0sIDIgfSwKPj4gKwl7IHsgMHg1YiwgMHgwMSB9LCAyIH0s Cj4+ICsJeyB7IDB4NWMsIDB4ODAgfSwgMiB9LAo+PiArCXsgeyAweDVkLCAweDgxIH0sIDIgfSwK Pj4gKwl7IHsgMHg1ZSwgMHgwMCB9LCAyIH0sCj4+ICsJeyB7IDB4NWYsIDB4MDEgfSwgMiB9LAo+ PiArCXsgeyAweDcyLCAweDExIH0sIDIgfSwKPj4gKwl7IHsgMHg2OCwgMHgwMyB9LCAyIH0sCj4+ ICsJLyogQ01EMl9QNCAqLwo+PiArCXsgeyAweEZGLCAweDI0IH0sIDIgfSwKPj4gKwl7IHsgMHhG QiwgMHgwMSB9LCAyIH0sCj4+ICsJeyB7IDB4MDAsIDB4MUMgfSwgMiB9LAo+PiArCXsgeyAweDAx LCAweDBCIH0sIDIgfSwKPj4gKwl7IHsgMHgwMiwgMHgwQyB9LCAyIH0sCj4+ICsJeyB7IDB4MDMs IDB4MDEgfSwgMiB9LAo+PiArCXsgeyAweDA0LCAweDBGIH0sIDIgfSwKPj4gKwl7IHsgMHgwNSwg MHgxMCB9LCAyIH0sCj4+ICsJeyB7IDB4MDYsIDB4MTAgfSwgMiB9LAo+PiArCXsgeyAweDA3LCAw eDEwIH0sIDIgfSwKPj4gKwl7IHsgMHgwOCwgMHg4OSB9LCAyIH0sCj4+ICsJeyB7IDB4MDksIDB4 OEEgfSwgMiB9LAo+PiArCXsgeyAweDBBLCAweDEzIH0sIDIgfSwKPj4gKwl7IHsgMHgwQiwgMHgx MyB9LCAyIH0sCj4+ICsJeyB7IDB4MEMsIDB4MTUgfSwgMiB9LAo+PiArCXsgeyAweDBELCAweDE1 IH0sIDIgfSwKPj4gKwl7IHsgMHgwRSwgMHgxNyB9LCAyIH0sCj4+ICsJeyB7IDB4MEYsIDB4MTcg fSwgMiB9LAo+PiArCXsgeyAweDEwLCAweDFDIH0sIDIgfSwKPj4gKwl7IHsgMHgxMSwgMHgwQiB9 LCAyIH0sCj4+ICsJeyB7IDB4MTIsIDB4MEMgfSwgMiB9LAo+PiArCXsgeyAweDEzLCAweDAxIH0s IDIgfSwKPj4gKwl7IHsgMHgxNCwgMHgwRiB9LCAyIH0sCj4+ICsJeyB7IDB4MTUsIDB4MTAgfSwg MiB9LAo+PiArCXsgeyAweDE2LCAweDEwIH0sIDIgfSwKPj4gKwl7IHsgMHgxNywgMHgxMCB9LCAy IH0sCj4+ICsJeyB7IDB4MTgsIDB4ODkgfSwgMiB9LAo+PiArCXsgeyAweDE5LCAweDhBIH0sIDIg fSwKPj4gKwl7IHsgMHgxQSwgMHgxMyB9LCAyIH0sCj4+ICsJeyB7IDB4MUIsIDB4MTMgfSwgMiB9 LAo+PiArCXsgeyAweDFDLCAweDE1IH0sIDIgfSwKPj4gKwl7IHsgMHgxRCwgMHgxNSB9LCAyIH0s Cj4+ICsJeyB7IDB4MUUsIDB4MTcgfSwgMiB9LAo+PiArCXsgeyAweDFGLCAweDE3IH0sIDIgfSwK Pj4gKwkvKiBTVFYgKi8KPj4gKwl7IHsgMHgyMCwgMHg0MCB9LCAyIH0sCj4+ICsJeyB7IDB4MjEs IDB4MDEgfSwgMiB9LAo+PiArCXsgeyAweDIyLCAweDAwIH0sIDIgfSwKPj4gKwl7IHsgMHgyMywg MHg0MCB9LCAyIH0sCj4+ICsJeyB7IDB4MjQsIDB4NDAgfSwgMiB9LAo+PiArCXsgeyAweDI1LCAw eDZEIH0sIDIgfSwKPj4gKwl7IHsgMHgyNiwgMHg0MCB9LCAyIH0sCj4+ICsJeyB7IDB4MjcsIDB4 NDAgfSwgMiB9LAo+PiArCS8qIFZlbmQgKi8KPj4gKwl7IHsgMHhFMCwgMHgwMCB9LCAyIH0sCj4+ ICsJeyB7IDB4REMsIDB4MjEgfSwgMiB9LAo+PiArCXsgeyAweERELCAweDIyIH0sIDIgfSwKPj4g Kwl7IHsgMHhERSwgMHgwNyB9LCAyIH0sCj4+ICsJeyB7IDB4REYsIDB4MDcgfSwgMiB9LAo+PiAr CXsgeyAweEUzLCAweDZEIH0sIDIgfSwKPj4gKwl7IHsgMHhFMSwgMHgwNyB9LCAyIH0sCj4+ICsJ eyB7IDB4RTIsIDB4MDcgfSwgMiB9LAo+PiArCS8qIFVEICovCj4+ICsJeyB7IDB4MjksIDB4RDgg fSwgMiB9LAo+PiArCXsgeyAweDJBLCAweDJBIH0sIDIgfSwKPj4gKwkvKiBDTEsgKi8KPj4gKwl7 IHsgMHg0QiwgMHgwMyB9LCAyIH0sCj4+ICsJeyB7IDB4NEMsIDB4MTEgfSwgMiB9LAo+PiArCXsg eyAweDRELCAweDEwIH0sIDIgfSwKPj4gKwl7IHsgMHg0RSwgMHgwMSB9LCAyIH0sCj4+ICsJeyB7 IDB4NEYsIDB4MDEgfSwgMiB9LAo+PiArCXsgeyAweDUwLCAweDEwIH0sIDIgfSwKPj4gKwl7IHsg MHg1MSwgMHgwMCB9LCAyIH0sCj4+ICsJeyB7IDB4NTIsIDB4ODAgfSwgMiB9LAo+PiArCXsgeyAw eDUzLCAweDAwIH0sIDIgfSwKPj4gKwl7IHsgMHg1NiwgMHgwMCB9LCAyIH0sCj4+ICsJeyB7IDB4 NTQsIDB4MDcgfSwgMiB9LAo+PiArCXsgeyAweDU4LCAweDA3IH0sIDIgfSwKPj4gKwl7IHsgMHg1 NSwgMHgyNSB9LCAyIH0sCj4+ICsJLyogUmVzZXQgWERPTkIgKi8KPj4gKwl7IHsgMHg1QiwgMHg0 MyB9LCAyIH0sCj4+ICsJeyB7IDB4NUMsIDB4MDAgfSwgMiB9LAo+PiArCXsgeyAweDVGLCAweDcz IH0sIDIgfSwKPj4gKwl7IHsgMHg2MCwgMHg3MyB9LCAyIH0sCj4+ICsJeyB7IDB4NjMsIDB4MjIg fSwgMiB9LAo+PiArCXsgeyAweDY0LCAweDAwIH0sIDIgfSwKPj4gKwl7IHsgMHg2NywgMHgwOCB9 LCAyIH0sCj4+ICsJeyB7IDB4NjgsIDB4MDQgfSwgMiB9LAo+PiArCS8qIFJlc29sdXRpb246MTQ0 MHgyNTYwICovCj4+ICsJeyB7IDB4NzIsIDB4MDIgfSwgMiB9LAo+PiArCS8qIG11eCAqLwo+PiAr CXsgeyAweDdBLCAweDgwIH0sIDIgfSwKPj4gKwl7IHsgMHg3QiwgMHg5MSB9LCAyIH0sCj4+ICsJ eyB7IDB4N0MsIDB4RDggfSwgMiB9LAo+PiArCXsgeyAweDdELCAweDYwIH0sIDIgfSwKPj4gKwl7 IHsgMHg3RiwgMHgxNSB9LCAyIH0sCj4+ICsJeyB7IDB4NzUsIDB4MTUgfSwgMiB9LAo+PiArCS8q IEFCT0ZGICovCj4+ICsJeyB7IDB4QjMsIDB4QzAgfSwgMiB9LAo+PiArCXsgeyAweEI0LCAweDAw IH0sIDIgfSwKPj4gKwl7IHsgMHhCNSwgMHgwMCB9LCAyIH0sCj4+ICsJLyogU291cmNlIEVRICov Cj4+ICsJeyB7IDB4NzgsIDB4MDAgfSwgMiB9LAo+PiArCXsgeyAweDc5LCAweDAwIH0sIDIgfSwK Pj4gKwl7IHsgMHg4MCwgMHgwMCB9LCAyIH0sCj4+ICsJeyB7IDB4ODMsIDB4MDAgfSwgMiB9LAo+ PiArCS8qIEZQIEJQICovCj4+ICsJeyB7IDB4OTMsIDB4MEEgfSwgMiB9LAo+PiArCXsgeyAweDk0 LCAweDBBIH0sIDIgfSwKPj4gKwkvKiBJbnZlcnNpb24gVHlwZSAqLwo+PiArCXsgeyAweDhBLCAw eDAwIH0sIDIgfSwKPj4gKwl7IHsgMHg5QiwgMHhGRiB9LCAyIH0sCj4+ICsJLyogSU1HU1dBUCA9 MSBAUG9ydFN3YXA9MSAqLwo+PiArCXsgeyAweDlELCAweEIwIH0sIDIgfSwKPj4gKwl7IHsgMHg5 RiwgMHg2MyB9LCAyIH0sCj4+ICsJeyB7IDB4OTgsIDB4MTAgfSwgMiB9LAo+PiArCS8qIEZSTSAq Lwo+PiArCXsgeyAweEVDLCAweDAwIH0sIDIgfSwKPj4gKwkvKiBDTUQxICovCj4+ICsJeyB7IDB4 RkYsIDB4MTAgfSwgMiB9LAo+PiArCS8qIFZCUCtWU0E9LFZGUCA9IDEwSCAqLwo+PiArCXsgeyAw eDNCLCAweDAzLCAweDBBLCAweDBBIH0sIDQgfSwKPj4gKwkvKiBGVEUgb24gKi8KPj4gKwl7IHsg MHgzNSwgMHgwMCB9LCAyIH0sCj4+ICsJLyogRU5fQksgPTEoYXV0byBibGFjaykgKi8KPj4gKwl7 IHsgMHhFNSwgMHgwMSB9LCAyIH0sCj4+ICsJLyogQ01EIG1vZGUoMTApIFZETyBtb2RlKDAzKSAq Lwo+PiArCXsgeyAweEJCLCAweDAzIH0sIDIgfSwKPj4gKwkvKiBOb24gUmVsb2FkIE1UUCAqLwo+ PiArCXsgeyAweEZCLCAweDAxIH0sIDIgfSwKPj4gK307Cj4+ICsKPj4gK3N0YXRpYyBpbnQgdHJ1 bHlfZGNzX3dyaXRlKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsLCB1MzIgY29tbWFuZCkKPj4gK3sK Pj4gKwlzdHJ1Y3QgdHJ1bHlfbnQzNTU5NyAqY3R4ID0gcGFuZWxfdG9fY3R4KHBhbmVsKTsKPj4g KwlpbnQgaSwgcmV0Owo+PiArCj4+ICsJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoY3R4LT5k c2kpOyBpKyspIHsKPj4gKwkJcmV0ID0gbWlwaV9kc2lfZGNzX3dyaXRlKGN0eC0+ZHNpW2ldLCBj b21tYW5kLCBOVUxMLCAwKTsKPj4gKwkJaWYgKHJldCA8IDApIHsKPj4gKwkJCURSTV9ERVZfRVJS T1IoY3R4LT5kZXYsCj4+ICsJCQkJImNtZCAweCV4IGZhaWxlZCBmb3IgZHNpID0gJWRcbiIsCj4+ ICsJCQkJY29tbWFuZCwgaSk7Cj4+ICsJCX0KPj4gKwl9Cj4+ICsKPj4gKwlyZXR1cm4gcmV0Owo+ PiArfQo+PiArCj4+ICtzdGF0aWMgaW50IHRydWx5X2Rjc193cml0ZV9idWYoc3RydWN0IGRybV9w YW5lbCAqcGFuZWwsCj4+ICsJdTMyIHNpemUsIHU4ICpidWYpCj4+ICt7Cj4+ICsJc3RydWN0IHRy dWx5X250MzU1OTcgKmN0eCA9IHBhbmVsX3RvX2N0eChwYW5lbCk7Cj4+ICsJaW50IHJldCA9IDA7 Cj4+ICsJaW50IGk7Cj4+ICsKPj4gKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShjdHgtPmRz aSk7IGkrKykgewo+PiArCQlyZXQgPSBtaXBpX2RzaV9kY3Nfd3JpdGVfYnVmZmVyKGN0eC0+ZHNp W2ldLCBidWYsIHNpemUpOwo+PiArCQlpZiAocmV0IDwgMCkgewo+PiArCQkJRFJNX0RFVl9FUlJP UihjdHgtPmRldiwKPj4gKwkJCQkiZmFpbGVkIHRvIHR4IGNtZCBbJWRdLCBlcnI6ICVkXG4iLCBp LCByZXQpOwo+PiArCQkJcmV0dXJuIHJldDsKPj4gKwkJfQo+PiArCX0KPj4gKwo+PiArCXJldHVy biByZXQ7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQgdHJ1bHlfMzU1OTdfcG93ZXJfb24oc3Ry dWN0IHRydWx5X250MzU1OTcgKmN0eCkKPj4gK3sKPj4gKwlpbnQgcmV0LCBpOwo+PiArCj4+ICsJ Zm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoY3R4LT5zdXBwbGllcyk7IGkrKykgewo+PiArCQly ZXQgPSByZWd1bGF0b3Jfc2V0X2xvYWQoY3R4LT5zdXBwbGllc1tpXS5jb25zdW1lciwKPj4gKwkJ CQkJcmVndWxhdG9yX2VuYWJsZV9sb2Fkc1tpXSk7Cj4+ICsJCWlmIChyZXQpCj4+ICsJCQlyZXR1 cm4gcmV0Owo+PiArCX0KPj4gKwo+PiArCXJldCA9IHJlZ3VsYXRvcl9idWxrX2VuYWJsZShBUlJB WV9TSVpFKGN0eC0+c3VwcGxpZXMpLCAKPj4gY3R4LT5zdXBwbGllcyk7Cj4+ICsJaWYgKHJldCA8 IDApCj4+ICsJCXJldHVybiByZXQ7Cj4+ICsKPj4gKwkvKgo+PiArCSAqIFJlc2V0IHNlcXVlbmNl IG9mIHRydWx5IHBhbmVsIHJlcXVpcmVzIHRoZSBwYW5lbCB0byBiZQo+PiArCSAqIG91dCBvZiBy ZXNldCBmb3IgMTBtcywgZm9sbG93ZWQgYnkgYmVpbmcgaGVsZCBpbiByZXNldAo+PiArCSAqIGZv ciAxMG1zIGFuZCB0aGVuIG91dCBhZ2Fpbgo+PiArCSAqLwo+PiArCWdwaW9kX3NldF92YWx1ZShj dHgtPnJlc2V0X2dwaW8sIDApOwo+PiArCXVzbGVlcF9yYW5nZSgxMDAwMCwgMjAwMDApOwo+PiAr CWdwaW9kX3NldF92YWx1ZShjdHgtPnJlc2V0X2dwaW8sIDEpOwo+PiArCXVzbGVlcF9yYW5nZSgx MDAwMCwgMjAwMDApOwo+PiArCWdwaW9kX3NldF92YWx1ZShjdHgtPnJlc2V0X2dwaW8sIDApOwo+ PiArCj4+ICsJcmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQgdHJ1bHlfbnQzNTU5 N19wb3dlcl9vZmYoc3RydWN0IHRydWx5X250MzU1OTcgKmN0eCkKPj4gK3sKPj4gKwlpbnQgcmV0 ID0gMDsKPj4gKwlpbnQgaTsKPj4gKwo+PiArCWdwaW9kX3NldF92YWx1ZShjdHgtPnJlc2V0X2dw aW8sIDEpOwo+PiArCj4+ICsJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoY3R4LT5zdXBwbGll cyk7IGkrKykgewo+PiArCQlyZXQgPSByZWd1bGF0b3Jfc2V0X2xvYWQoY3R4LT5zdXBwbGllc1tp XS5jb25zdW1lciwKPj4gKwkJCQlyZWd1bGF0b3JfZGlzYWJsZV9sb2Fkc1tpXSk7Cj4+ICsJCWlm IChyZXQpIHsKPj4gKwkJCURSTV9ERVZfRVJST1IoY3R4LT5kZXYsCj4+ICsJCQkJInJlZ3VsYXRv cl9zZXRfbG9hZCBmYWlsZWQgJWRcbiIsIHJldCk7Cj4+ICsJCQlyZXR1cm4gcmV0Owo+PiArCQl9 Cj4+ICsJfQo+PiArCj4+ICsJcmV0ID0gcmVndWxhdG9yX2J1bGtfZGlzYWJsZShBUlJBWV9TSVpF KGN0eC0+c3VwcGxpZXMpLCAKPj4gY3R4LT5zdXBwbGllcyk7Cj4+ICsJaWYgKHJldCkgewo+PiAr CQlEUk1fREVWX0VSUk9SKGN0eC0+ZGV2LAo+PiArCQkJInJlZ3VsYXRvcl9idWxrX2Rpc2FibGUg ZmFpbGVkICVkXG4iLCByZXQpOwo+PiArCX0KPj4gKwlyZXR1cm4gcmV0Owo+PiArfQo+PiArCj4+ ICtzdGF0aWMgaW50IHRydWx5X250MzU1OTdfZGlzYWJsZShzdHJ1Y3QgZHJtX3BhbmVsICpwYW5l bCkKPj4gK3sKPj4gKwlzdHJ1Y3QgdHJ1bHlfbnQzNTU5NyAqY3R4ID0gcGFuZWxfdG9fY3R4KHBh bmVsKTsKPj4gKwlpbnQgcmV0Owo+PiArCj4+ICsJaWYgKCFjdHgtPmVuYWJsZWQpCj4+ICsJCXJl dHVybiAwOwo+PiArCj4+ICsJaWYgKGN0eC0+YmFja2xpZ2h0KSB7Cj4+ICsJCXJldCA9IGJhY2ts aWdodF9kaXNhYmxlKGN0eC0+YmFja2xpZ2h0KTsKPj4gKwkJaWYgKHJldCA8IDApCj4+ICsJCQlE Uk1fREVWX0VSUk9SKGN0eC0+ZGV2LCAiYmFja2xpZ2h0IGRpc2FibGUgZmFpbGVkICVkXG4iLAo+ PiArCQkJCXJldCk7Cj4+ICsJfQo+PiArCj4+ICsJY3R4LT5lbmFibGVkID0gZmFsc2U7Cj4+ICsJ cmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQgdHJ1bHlfbnQzNTU5N191bnByZXBh cmUoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCj4+ICt7Cj4+ICsJc3RydWN0IHRydWx5X250MzU1 OTcgKmN0eCA9IHBhbmVsX3RvX2N0eChwYW5lbCk7Cj4+ICsJaW50IHJldCA9IDA7Cj4+ICsKPj4g KwlpZiAoIWN0eC0+cHJlcGFyZWQpCj4+ICsJCXJldHVybiAwOwo+PiArCj4+ICsJY3R4LT5kc2lb MF0tPm1vZGVfZmxhZ3MgPSAwOwo+PiArCWN0eC0+ZHNpWzFdLT5tb2RlX2ZsYWdzID0gMDsKPj4g Kwo+PiArCXJldCA9IHRydWx5X2Rjc193cml0ZShwYW5lbCwgTUlQSV9EQ1NfU0VUX0RJU1BMQVlf T0ZGKTsKPj4gKwlpZiAocmV0IDwgMCkgewo+PiArCQlEUk1fREVWX0VSUk9SKGN0eC0+ZGV2LAo+ PiArCQkJInNldF9kaXNwbGF5X29mZiBjbWQgZmFpbGVkIHJldCA9ICVkXG4iLAo+PiArCQkJcmV0 KTsKPj4gKwl9Cj4+ICsKPj4gKwkvKiAxMjBtcyBkZWxheSByZXF1aXJlZCBoZXJlIGFzIHBlciBE Q1Mgc3BlYyAqLwo+PiArCW1zbGVlcCgxMjApOwo+PiArCj4+ICsJcmV0ID0gdHJ1bHlfZGNzX3dy aXRlKHBhbmVsLCBNSVBJX0RDU19FTlRFUl9TTEVFUF9NT0RFKTsKPj4gKwlpZiAocmV0IDwgMCkg ewo+PiArCQlEUk1fREVWX0VSUk9SKGN0eC0+ZGV2LAo+PiArCQkJImVudGVyX3NsZWVwIGNtZCBm YWlsZWQgcmV0ID0gJWRcbiIsIHJldCk7Cj4+ICsJfQo+PiArCj4+ICsJcmV0ID0gdHJ1bHlfbnQz NTU5N19wb3dlcl9vZmYoY3R4KTsKPj4gKwlpZiAocmV0IDwgMCkKPj4gKwkJRFJNX0RFVl9FUlJP UihjdHgtPmRldiwgInBvd2VyX29mZiBmYWlsZWQgcmV0ID0gJWRcbiIsIHJldCk7Cj4+ICsKPj4g KwljdHgtPnByZXBhcmVkID0gZmFsc2U7Cj4+ICsJcmV0dXJuIHJldDsKPj4gK30KPj4gKwo+PiAr c3RhdGljIGludCB0cnVseV9udDM1NTk3X3ByZXBhcmUoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwp Cj4+ICt7Cj4+ICsJc3RydWN0IHRydWx5X250MzU1OTcgKmN0eCA9IHBhbmVsX3RvX2N0eChwYW5l bCk7Cj4+ICsJaW50IHJldDsKPj4gKwlpbnQgaTsKPj4gKwlzdHJ1Y3QgY21kX3NldCAqcGFuZWxf b25fY21kczsKPj4gKwljb25zdCBzdHJ1Y3QgbnQzNTU5N19jb25maWcgKmNvbmZpZzsKPj4gKwl1 MzIgbnVtX2NtZHM7Cj4+ICsKPj4gKwlpZiAoY3R4LT5wcmVwYXJlZCkKPj4gKwkJcmV0dXJuIDA7 Cj4+ICsKPj4gKwlyZXQgPSB0cnVseV8zNTU5N19wb3dlcl9vbihjdHgpOwo+PiArCWlmIChyZXQg PCAwKQo+PiArCQlyZXR1cm4gcmV0Owo+PiArCj4+ICsJY3R4LT5kc2lbMF0tPm1vZGVfZmxhZ3Mg fD0gTUlQSV9EU0lfTU9ERV9MUE07Cj4+ICsJY3R4LT5kc2lbMV0tPm1vZGVfZmxhZ3MgfD0gTUlQ SV9EU0lfTU9ERV9MUE07Cj4+ICsKPj4gKwljb25maWcgPSBjdHgtPmNvbmZpZzsKPj4gKwlwYW5l bF9vbl9jbWRzID0gKHN0cnVjdCBjbWRfc2V0ICopY29uZmlnLT5wYW5lbF9vbl9jbWRzOwo+PiAr CW51bV9jbWRzID0gY29uZmlnLT5udW1fb25fY21kczsKPj4gKwo+PiArCWZvciAoaSA9IDA7IGkg PCBudW1fY21kczsgaSsrKSB7Cj4+ICsJCXJldCA9IHRydWx5X2Rjc193cml0ZV9idWYocGFuZWws Cj4+ICsJCQkJcGFuZWxfb25fY21kc1tpXS5zaXplLAo+PiArCQkJCQlwYW5lbF9vbl9jbWRzW2ld LmNvbW1hbmRzKTsKPj4gKwkJaWYgKHJldCA8IDApIHsKPj4gKwkJCURSTV9ERVZfRVJST1IoY3R4 LT5kZXYsCj4+ICsJCQkJImNtZCBzZXQgdHggZmFpbGVkIGkgPSAlZCByZXQgPSAlZFxuIiwKPj4g KwkJCQkJaSwgcmV0KTsKPj4gKwkJCWdvdG8gcG93ZXJfb2ZmOwo+PiArCQl9Cj4+ICsJfQo+PiAr Cj4+ICsJcmV0ID0gdHJ1bHlfZGNzX3dyaXRlKHBhbmVsLCBNSVBJX0RDU19FWElUX1NMRUVQX01P REUpOwo+PiArCWlmIChyZXQgPCAwKSB7Cj4+ICsJCURSTV9ERVZfRVJST1IoY3R4LT5kZXYsCj4+ ICsJCQkiZXhpdF9zbGVlcF9tb2RlIGNtZCBmYWlsZWQgcmV0ID0gJWRcbiIsCj4+ICsJCQlyZXQp Owo+PiArCQlnb3RvIHBvd2VyX29mZjsKPj4gKwl9Cj4+ICsKPj4gKwkvKiBQZXIgRFNJIHNwZWMg d2FpdCAxMjBtcyBhZnRlciBzZW5kaW5nIGV4aXQgc2xlZXAgRENTIGNvbW1hbmQgKi8KPj4gKwlt c2xlZXAoMTIwKTsKPj4gKwo+PiArCXJldCA9IHRydWx5X2Rjc193cml0ZShwYW5lbCwgTUlQSV9E Q1NfU0VUX0RJU1BMQVlfT04pOwo+PiArCWlmIChyZXQgPCAwKSB7Cj4+ICsJCURSTV9ERVZfRVJS T1IoY3R4LT5kZXYsCj4+ICsJCQkic2V0X2Rpc3BsYXlfb24gY21kIGZhaWxlZCByZXQgPSAlZFxu IiwgcmV0KTsKPj4gKwkJZ290byBwb3dlcl9vZmY7Cj4+ICsJfQo+PiArCj4+ICsJLyogUGVyIERT SSBzcGVjIHdhaXQgMTIwbXMgYWZ0ZXIgc2VuZGluZyBzZXRfZGlzcGxheV9vbiBEQ1MgY29tbWFu ZCAKPj4gKi8KPj4gKwltc2xlZXAoMTIwKTsKPj4gKwo+PiArCWN0eC0+cHJlcGFyZWQgPSB0cnVl Owo+PiArCj4+ICsJcmV0dXJuIDA7Cj4+ICsKPj4gK3Bvd2VyX29mZjoKPj4gKwlpZiAodHJ1bHlf bnQzNTU5N19wb3dlcl9vZmYoY3R4KSkKPj4gKwkJRFJNX0RFVl9FUlJPUihjdHgtPmRldiwgInBv d2VyX29mZiBmYWlsZWRcbiIpOwo+PiArCXJldHVybiByZXQ7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRp YyBpbnQgdHJ1bHlfbnQzNTU5N19lbmFibGUoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCj4+ICt7 Cj4+ICsJc3RydWN0IHRydWx5X250MzU1OTcgKmN0eCA9IHBhbmVsX3RvX2N0eChwYW5lbCk7Cj4+ ICsJaW50IHJldDsKPj4gKwo+PiArCWlmIChjdHgtPmVuYWJsZWQpCj4+ICsJCXJldHVybiAwOwo+ PiArCj4+ICsJaWYgKGN0eC0+YmFja2xpZ2h0KSB7Cj4+ICsJCXJldCA9IGJhY2tsaWdodF9lbmFi bGUoY3R4LT5iYWNrbGlnaHQpOwo+PiArCQlpZiAocmV0IDwgMCkKPj4gKwkJCURSTV9ERVZfRVJS T1IoY3R4LT5kZXYsICJiYWNrbGlnaHQgZW5hYmxlIGZhaWxlZCAlZFxuIiwKPj4gKwkJCQkJCSAg cmV0KTsKPj4gKwl9Cj4+ICsKPj4gKwljdHgtPmVuYWJsZWQgPSB0cnVlOwo+PiArCj4+ICsJcmV0 dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQgdHJ1bHlfbnQzNTU5N19nZXRfbW9kZXMo c3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCj4+ICt7Cj4+ICsJc3RydWN0IGRybV9jb25uZWN0b3Ig KmNvbm5lY3RvciA9IHBhbmVsLT5jb25uZWN0b3I7Cj4+ICsJc3RydWN0IHRydWx5X250MzU1OTcg KmN0eCA9IHBhbmVsX3RvX2N0eChwYW5lbCk7Cj4+ICsJc3RydWN0IGRybV9kaXNwbGF5X21vZGUg Km1vZGU7Cj4+ICsJY29uc3Qgc3RydWN0IG50MzU1OTdfY29uZmlnICpjb25maWc7Cj4+ICsKPj4g Kwljb25maWcgPSBjdHgtPmNvbmZpZzsKPj4gKwltb2RlID0gZHJtX21vZGVfY3JlYXRlKGNvbm5l Y3Rvci0+ZGV2KTsKPj4gKwlpZiAoIW1vZGUpIHsKPj4gKwkJRFJNX0RFVl9FUlJPUihjdHgtPmRl diwKPj4gKwkJCSJmYWlsZWQgdG8gY3JlYXRlIGEgbmV3IGRpc3BsYXkgbW9kZVxuIik7Cj4+ICsJ CXJldHVybiAwOwo+PiArCX0KPj4gKwo+PiArCWNvbm5lY3Rvci0+ZGlzcGxheV9pbmZvLndpZHRo X21tID0gY29uZmlnLT53aWR0aF9tbTsKPj4gKwljb25uZWN0b3ItPmRpc3BsYXlfaW5mby5oZWln aHRfbW0gPSBjb25maWctPmhlaWdodF9tbTsKPj4gKwlkcm1fbW9kZV9jb3B5KG1vZGUsIGNvbmZp Zy0+ZG0pOwo+PiArCW1vZGUtPnR5cGUgPSBEUk1fTU9ERV9UWVBFX0RSSVZFUiB8IERSTV9NT0RF X1RZUEVfUFJFRkVSUkVEOwo+PiArCWRybV9tb2RlX3Byb2JlZF9hZGQoY29ubmVjdG9yLCBtb2Rl KTsKPj4gKwo+PiArCXJldHVybiAxOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0 IGRybV9wYW5lbF9mdW5jcyB0cnVseV9udDM1NTk3X2RybV9mdW5jcyA9IHsKPj4gKwkuZGlzYWJs ZSA9IHRydWx5X250MzU1OTdfZGlzYWJsZSwKPj4gKwkudW5wcmVwYXJlID0gdHJ1bHlfbnQzNTU5 N191bnByZXBhcmUsCj4+ICsJLnByZXBhcmUgPSB0cnVseV9udDM1NTk3X3ByZXBhcmUsCj4+ICsJ LmVuYWJsZSA9IHRydWx5X250MzU1OTdfZW5hYmxlLAo+PiArCS5nZXRfbW9kZXMgPSB0cnVseV9u dDM1NTk3X2dldF9tb2RlcywKPj4gK307Cj4+ICsKPj4gK3N0YXRpYyBpbnQgdHJ1bHlfbnQzNTU5 N19wYW5lbF9hZGQoc3RydWN0IHRydWx5X250MzU1OTcgKmN0eCkKPj4gK3sKPj4gKwlzdHJ1Y3Qg ZGV2aWNlICpkZXYgPSBjdHgtPmRldjsKPj4gKwlpbnQgcmV0LCBpOwo+PiArCWNvbnN0IHN0cnVj dCBudDM1NTk3X2NvbmZpZyAqY29uZmlnOwo+PiArCj4+ICsJY29uZmlnID0gY3R4LT5jb25maWc7 Cj4+ICsJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoY3R4LT5zdXBwbGllcyk7IGkrKykKPj4g KwkJY3R4LT5zdXBwbGllc1tpXS5zdXBwbHkgPSByZWd1bGF0b3JfbmFtZXNbaV07Cj4+ICsKPj4g KwlyZXQgPSBkZXZtX3JlZ3VsYXRvcl9idWxrX2dldChkZXYsIEFSUkFZX1NJWkUoY3R4LT5zdXBw bGllcyksCj4+ICsJCQkJICAgICAgY3R4LT5zdXBwbGllcyk7Cj4+ICsJaWYgKHJldCA8IDApCj4+ ICsJCXJldHVybiByZXQ7Cj4+ICsKPj4gKwljdHgtPnJlc2V0X2dwaW8gPSBkZXZtX2dwaW9kX2dl dChkZXYsICJyZXNldCIsIEdQSU9EX09VVF9MT1cpOwo+PiArCWlmIChJU19FUlIoY3R4LT5yZXNl dF9ncGlvKSkgewo+PiArCQlEUk1fREVWX0VSUk9SKGRldiwgImNhbm5vdCBnZXQgcmVzZXQgZ3Bp byAlbGRcbiIsCj4+ICsJCQlQVFJfRVJSKGN0eC0+cmVzZXRfZ3BpbykpOwo+PiArCQlyZXR1cm4g UFRSX0VSUihjdHgtPnJlc2V0X2dwaW8pOwo+PiArCX0KPj4gKwo+PiArCWN0eC0+bW9kZV9ncGlv ID0gZGV2bV9ncGlvZF9nZXQoZGV2LCAibW9kZSIsIEdQSU9EX09VVF9MT1cpOwo+PiArCWlmIChJ U19FUlIoY3R4LT5tb2RlX2dwaW8pKSB7Cj4+ICsJCURSTV9ERVZfRVJST1IoZGV2LCAiY2Fubm90 IGdldCBtb2RlIGdwaW8gJWxkXG4iLAo+PiArCQkJUFRSX0VSUihjdHgtPm1vZGVfZ3BpbykpOwo+ PiArCQlyZXR1cm4gUFRSX0VSUihjdHgtPm1vZGVfZ3Bpbyk7Cj4+ICsJfQo+PiArCj4+ICsJLyog ZHVhbCBwb3J0ICovCj4+ICsJZ3Bpb2Rfc2V0X3ZhbHVlKGN0eC0+bW9kZV9ncGlvLCAwKTsKPj4g Kwo+PiArCWRybV9wYW5lbF9pbml0KCZjdHgtPnBhbmVsKTsKPj4gKwljdHgtPnBhbmVsLmRldiA9 IGRldjsKPj4gKwljdHgtPnBhbmVsLmZ1bmNzID0gJnRydWx5X250MzU1OTdfZHJtX2Z1bmNzOwo+ PiArCWRybV9wYW5lbF9hZGQoJmN0eC0+cGFuZWwpOwo+PiArCj4+ICsJcmV0dXJuIDA7Cj4+ICt9 Cj4+ICsKPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSBxY29tX3NkbTg0 NV9tdHBfMmtfbW9kZSA9IHsKPj4gKwkubmFtZSA9ICIxNDQweDI1NjAiLAo+PiArCS5jbG9jayA9 IDI2ODMxNiwKPj4gKwkuaGRpc3BsYXkgPSAxNDQwLAo+PiArCS5oc3luY19zdGFydCA9IDE0NDAg KyAyMDAsCj4+ICsJLmhzeW5jX2VuZCA9IDE0NDAgKyAyMDAgKyAzMiwKPj4gKwkuaHRvdGFsID0g MTQ0MCArIDIwMCArIDMyICsgNjQsCj4+ICsJLnZkaXNwbGF5ID0gMjU2MCwKPj4gKwkudnN5bmNf c3RhcnQgPSAyNTYwICsgOCwKPj4gKwkudnN5bmNfZW5kID0gMjU2MCArIDggKyAxLAo+PiArCS52 dG90YWwgPSAyNTYwICsgOCArIDEgKyA3LAo+PiArCS52cmVmcmVzaCA9IDYwLAo+PiArCS5mbGFn cyA9IDAsCj4+ICt9Owo+PiArCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG50MzU1OTdfY29uZmln IG50MzU1OTdfZGlyID0gewo+PiArCS53aWR0aF9tbSA9IDc0LAo+PiArCS5oZWlnaHRfbW0gPSAx MzEsCj4+ICsJLnBhbmVsX25hbWUgPSAicWNvbV9zZG04NDVfbXRwXzJrX3BhbmVsIiwKPj4gKwku ZG0gPSAmcWNvbV9zZG04NDVfbXRwXzJrX21vZGUsCj4+ICsJLnBhbmVsX29uX2NtZHMgPSBxY29t XzJrX3BhbmVsX21hZ2ljX2NtZHMsCj4+ICsJLm51bV9vbl9jbWRzID0gQVJSQVlfU0laRShxY29t XzJrX3BhbmVsX21hZ2ljX2NtZHMpLAo+PiArfTsKPj4gKwo+PiArc3RhdGljIGludCB0cnVseV9u dDM1NTk3X3Byb2JlKHN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRzaSkKPj4gK3sKPj4gKwlzdHJ1 Y3QgZGV2aWNlICpkZXYgPSAmZHNpLT5kZXY7Cj4+ICsJc3RydWN0IHRydWx5X250MzU1OTcgKmN0 eDsKPj4gKwlzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICpkc2kxX2RldmljZTsKPj4gKwlzdHJ1Y3Qg ZGV2aWNlX25vZGUgKmRzaTE7Cj4+ICsJc3RydWN0IG1pcGlfZHNpX2hvc3QgKmRzaTFfaG9zdDsK Pj4gKwlzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICpkc2lfZGV2Owo+PiArCWludCByZXQgPSAwOwo+ PiArCWludCBpOwo+PiArCj4+ICsJY29uc3Qgc3RydWN0IG1pcGlfZHNpX2RldmljZV9pbmZvIGlu Zm8gPSB7Cj4+ICsJCS50eXBlID0gInRydWx5bnQzNTU5NyIsCj4+ICsJCS5jaGFubmVsID0gMCwK Pj4gKwkJLm5vZGUgPSBOVUxMLAo+PiArCX07Cj4+ICsKPj4gKwljdHggPSBkZXZtX2t6YWxsb2Mo ZGV2LCBzaXplb2YoKmN0eCksIEdGUF9LRVJORUwpOwo+PiArCj4+ICsJaWYgKCFjdHgpCj4+ICsJ CXJldHVybiAtRU5PTUVNOwo+PiArCj4+ICsJLyoKPj4gKwkgKiBUaGlzIGRldmljZSByZXByZXNl bnRzIGl0c2VsZiBhcyBvbmUgd2l0aAo+PiArCSAqIHR3byBpbnB1dCBwb3J0cyB3aGljaCBhcmUg ZmVkIGJ5IHRoZSBvdXRwdXQKPj4gKwkgKiBwb3J0cyBvZiB0aGUgdHdvIERTSSBjb250cm9sbGVy cyAuIFRoZSBEU0kwCj4+ICsJICogaXMgdGhlIG1hc3RlciBjb250cm9sbGVyIGFuZCBoYXMgbW9z dCBvZiB0aGUKPj4gKwkgKiBwYW5lbCByZWxhdGVkIGluZm8gaW4gaXRzIGNoaWxkIG5vZGUuCj4+ ICsJICovCj4gCj4gWW91ciBjb21tZW50cyBjYW4gYmUgd2lkZXIuIEl0J3MgdHlwaWNhbCB0byB3 cmFwIGF0IGNvbHVtbiA3OCwgbm90Cj4gZWFybGllci4KPiAKPj4gKwo+PiArCWN0eC0+Y29uZmln ID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7Cj4+ICsKPj4gKwlpZiAoIWN0eC0+Y29u ZmlnKSB7Cj4+ICsJCWRldl9lcnIoZGV2LCAibWlzc2luZyBkZXZpY2UgY29uZmlndXJhdGlvblxu Iik7Cj4+ICsJCXJldHVybiAtRU5PREVWOwo+PiArCX0KPj4gKwo+PiArCWRzaTEgPSBvZl9ncmFw aF9nZXRfcmVtb3RlX25vZGUoZHNpLT5kZXYub2Zfbm9kZSwgMSwgLTEpOwo+PiArCWlmICghZHNp MSkgewo+PiArCQlEUk1fREVWX0VSUk9SKGRldiwKPj4gKwkJCSJmYWlsZWQgdG8gZ2V0IHJlbW90 ZSBub2RlIGZvciBkc2kxX2RldmljZVxuIik7Cj4+ICsJCXJldHVybiAtRU5PREVWOwo+PiArCX0K Pj4gKwo+PiArCWRzaTFfaG9zdCA9IG9mX2ZpbmRfbWlwaV9kc2lfaG9zdF9ieV9ub2RlKGRzaTEp Owo+PiArCW9mX25vZGVfcHV0KGRzaTEpOwo+PiArCWlmICghZHNpMV9ob3N0KSB7Cj4+ICsJCURS TV9ERVZfRVJST1IoZGV2LCAiZmFpbGVkIHRvIGZpbmQgZHNpIGhvc3RcbiIpOwo+PiArCQlyZXR1 cm4gLUVQUk9CRV9ERUZFUjsKPj4gKwl9Cj4+ICsKPj4gKwkvKiByZWdpc3RlciB0aGUgc2Vjb25k IERTSSBkZXZpY2UgKi8KPj4gKwlkc2kxX2RldmljZSA9IG1pcGlfZHNpX2RldmljZV9yZWdpc3Rl cl9mdWxsKGRzaTFfaG9zdCwgJmluZm8pOwo+PiArCWlmIChJU19FUlIoZHNpMV9kZXZpY2UpKSB7 Cj4+ICsJCURSTV9ERVZfRVJST1IoZGV2LCAiZmFpbGVkIHRvIGNyZWF0ZSBkc2kgZGV2aWNlXG4i KTsKPj4gKwkJcmV0dXJuIFBUUl9FUlIoZHNpKTsKPj4gKwl9Cj4gCj4gQ2FuIHlvdSByb2xsIGlu IHRoZSBmaXggZnJvbSBoZXJlOgo+IAo+IAlodHRwczovL3BhdGNod29yay5mcmVlZGVza3RvcC5v cmcvcGF0Y2gvMjQ1MTc1Lwo+IAo+PiArCj4+ICsJbWlwaV9kc2lfc2V0X2RydmRhdGEoZHNpLCBj dHgpOwo+PiArCj4+ICsJY3R4LT5kZXYgPSBkZXY7Cj4+ICsJY3R4LT5kc2lbMF0gPSBkc2k7Cj4+ ICsJY3R4LT5kc2lbMV0gPSBkc2kxX2RldmljZTsKPj4gKwo+PiArCXJldCA9IHRydWx5X250MzU1 OTdfcGFuZWxfYWRkKGN0eCk7Cj4+ICsJaWYgKHJldCkgewo+PiArCQlEUk1fREVWX0VSUk9SKGRl diwgImZhaWxlZCB0byBhZGQgcGFuZWxcbiIpOwo+PiArCQlnb3RvIGVycl9wYW5lbF9hZGQ7Cj4+ ICsJfQo+PiArCj4+ICsJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoY3R4LT5kc2kpOyBpKysp IHsKPj4gKwkJZHNpX2RldiA9IGN0eC0+ZHNpW2ldOwo+PiArCQlkc2lfZGV2LT5sYW5lcyA9IDQ7 Cj4+ICsJCWRzaV9kZXYtPmZvcm1hdCA9IE1JUElfRFNJX0ZNVF9SR0I4ODg7Cj4+ICsJCWRzaV9k ZXYtPm1vZGVfZmxhZ3MgPSBNSVBJX0RTSV9NT0RFX1ZJREVPIHwgTUlQSV9EU0lfTU9ERV9MUE0g fAo+PiArCQkJTUlQSV9EU0lfQ0xPQ0tfTk9OX0NPTlRJTlVPVVM7Cj4+ICsJCXJldCA9IG1pcGlf ZHNpX2F0dGFjaChkc2lfZGV2KTsKPj4gKwkJaWYgKHJldCA8IDApIHsKPj4gKwkJCURSTV9ERVZf RVJST1IoZGV2LAo+PiArCQkJCSJkc2kgYXR0YWNoIGZhaWxlZCBpID0gJWRcbiIsIGkpOwo+PiAr CQkJCWdvdG8gZXJyX2RzaV9hdHRhY2g7Cj4gCj4gSW5kZW50YXRpb24gaXMgd3JvbmcgaGVyZS4g VGhlIGdvdG8gc2hvdWxkIGJlIGluZGVudGVkIG9uZSBsZXZlbCBsZXNzLgo+IAo+PiArCQl9Cj4+ ICsJfQo+PiArCj4+ICsJcmV0dXJuIDA7Cj4+ICsKPj4gK2Vycl9kc2lfYXR0YWNoOgo+PiArCWRy bV9wYW5lbF9yZW1vdmUoJmN0eC0+cGFuZWwpOwo+PiArZXJyX3BhbmVsX2FkZDoKPj4gKwltaXBp X2RzaV9kZXZpY2VfdW5yZWdpc3Rlcihkc2kxX2RldmljZSk7Cj4+ICsJcmV0dXJuIHJldDsKPj4g K30KPj4gKwo+PiArc3RhdGljIGludCB0cnVseV9udDM1NTk3X3JlbW92ZShzdHJ1Y3QgbWlwaV9k c2lfZGV2aWNlICpkc2kpCj4+ICt7Cj4+ICsJc3RydWN0IHRydWx5X250MzU1OTcgKmN0eCA9IG1p cGlfZHNpX2dldF9kcnZkYXRhKGRzaSk7Cj4+ICsKPj4gKwlpZiAoY3R4LT5kc2lbMF0pCj4+ICsJ CW1pcGlfZHNpX2RldGFjaChjdHgtPmRzaVswXSk7Cj4+ICsJaWYgKGN0eC0+ZHNpWzFdKSB7Cj4+ ICsJCW1pcGlfZHNpX2RldGFjaChjdHgtPmRzaVsxXSk7Cj4+ICsJCW1pcGlfZHNpX2RldmljZV91 bnJlZ2lzdGVyKGN0eC0+ZHNpWzFdKTsKPj4gKwl9Cj4+ICsKPj4gKwlkcm1fcGFuZWxfcmVtb3Zl KCZjdHgtPnBhbmVsKTsKPj4gKwlyZXR1cm4gMDsKPj4gK30KPj4gKwo+PiArc3RhdGljIGNvbnN0 IHN0cnVjdCBvZl9kZXZpY2VfaWQgdHJ1bHlfbnQzNTU5N19vZl9tYXRjaFtdID0gewo+PiArCXsJ LmNvbXBhdGlibGUgPSAidHJ1bHksbnQzNTU5Ny0ySy1kaXNwbGF5IiwKPj4gKwkJLmRhdGEgPSAm bnQzNTU5N19kaXIsCj4+ICsJfSwKPj4gKwo+PiArCXsgfQo+IAo+IFRoZSB0YWJsZSBpcyB3ZWly ZGx5IGZvcm1hdHRlZC4gVGhlICIuY29tcGF0aWJsZSA9IC4uLiIgbGluZSBzaG91bGQgYmUKPiBh biBhIHNlcGFyYXRlIGxpbmUsIGFuZCB0aGVyZSBzaG91bGQgYmUgbm8gYmxhbmsgbGluZSBiZWZv cmUgeyB9Lgo+IAo+PiArfTsKPj4gK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHRydWx5X250MzU1 OTdfb2ZfbWF0Y2gpOwo+PiArCj4+ICtzdGF0aWMgc3RydWN0IG1pcGlfZHNpX2RyaXZlciB0cnVs eV9udDM1NTk3X2RyaXZlciA9IHsKPj4gKwkuZHJpdmVyID0gewo+PiArCQkubmFtZSA9ICJwYW5l bF90cnVseV9udDM1NTk3IiwKPiAKPiBZb3Ugc2hvdWxkIHVzZSAtIGluc3RlYWQgb2YgXyBpbiB0 aGUgbmFtZSBmb3IgY29uc2lzdGVuY3kgd2l0aCBvdGhlcgo+IGRyaXZlcnMuCj4gCj4gVGhhbmtz LAo+IFRoaWVycnkKPiAKPj4gKwkJLm9mX21hdGNoX3RhYmxlID0gdHJ1bHlfbnQzNTU5N19vZl9t YXRjaCwKPj4gKwl9LAo+PiArCS5wcm9iZSA9IHRydWx5X250MzU1OTdfcHJvYmUsCj4+ICsJLnJl bW92ZSA9IHRydWx5X250MzU1OTdfcmVtb3ZlLAo+PiArfTsKPj4gK21vZHVsZV9taXBpX2RzaV9k cml2ZXIodHJ1bHlfbnQzNTU5N19kcml2ZXIpOwo+PiArCj4+ICtNT0RVTEVfREVTQ1JJUFRJT04o IlRydWx5IE5UMzU1OTcgRFNJIFBhbmVsIERyaXZlciIpOwo+PiArTU9EVUxFX0xJQ0VOU0UoIkdQ TCB2MiIpOwo+PiAtLQo+PiBUaGUgUXVhbGNvbW0gSW5ub3ZhdGlvbiBDZW50ZXIsIEluYy4gaXMg YSBtZW1iZXIgb2YgdGhlIENvZGUgQXVyb3JhIAo+PiBGb3J1bSwKPj4gYSBMaW51eCBGb3VuZGF0 aW9uIENvbGxhYm9yYXRpdmUgUHJvamVjdAo+PiAKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vZHJpLWRldmVsCg==