From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 1/3] drm/layerscape: Add fsl dcu DRM driver Date: Tue, 3 Mar 2015 11:54:11 +0100 Message-ID: <20150303105411.GL18775@phenom.ffwll.local> References: <1423825436-47780-1-git-send-email-b52261@freescale.com> <20150222113507.GO24485@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-we0-f170.google.com (mail-we0-f170.google.com [74.125.82.170]) by gabe.freedesktop.org (Postfix) with ESMTP id F324989904 for ; Tue, 3 Mar 2015 02:53:04 -0800 (PST) Received: by wevl61 with SMTP id l61so2052531wev.0 for ; Tue, 03 Mar 2015 02:53:03 -0800 (PST) Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: "Jianwei.Wang@freescale.com" Cc: Xiubo Li , Huan Wang , "linux-kernel@vger.kernel.org" , "dri-devel@lists.freedesktop.org" , Scott Wood , "linux-arm-kernel@lists.infradead.org" List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBNYXIgMDMsIDIwMTUgYXQgMTA6MDY6NTdBTSArMDAwMCwgSmlhbndlaS5XYW5nQGZy ZWVzY2FsZS5jb20gd3JvdGU6Cj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+ID4gRnJv bTogRGFuaWVsIFZldHRlciBbbWFpbHRvOmRhbmllbC52ZXR0ZXJAZmZ3bGwuY2hdIE9uIEJlaGFs ZiBPZiBEYW5pZWwKPiA+IFZldHRlcgo+ID4gU2VudDogU3VuZGF5LCBGZWJydWFyeSAyMiwgMjAx NSA3OjM1IFBNCj4gPiBUbzogV2FuZyBKaWFud2VpLUI1MjI2MQo+ID4gQ2M6IGRyaS1kZXZlbEBs aXN0cy5mcmVlZGVza3RvcC5vcmc7IGpiYXJuZXNAdmlydHVvdXNnZWVrLm9yZzsgV29vZAo+ID4g U2NvdHQtQjA3NDIxOyBYaXVibyBMaTsgV2FuZyBIdWFuLUIxODk2NTsgbGludXgta2VybmVsQHZn ZXIua2VybmVsLm9yZzsKPiA+IGxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwo+ ID4gU3ViamVjdDogUmU6IFtQQVRDSCAxLzNdIGRybS9sYXllcnNjYXBlOiBBZGQgZnNsIGRjdSBE Uk0gZHJpdmVyCj4gPiAKPiA+IE9uIEZyaSwgRmViIDEzLCAyMDE1IGF0IDA3OjAzOjU0UE0gKzA4 MDAsIEppYW53ZWkgV2FuZyB3cm90ZToKPiA+ID4gVGhpcyBwYXRjaCBhZGQgc3VwcG9ydCBmb3Ig VHdvIERpbWVuc2lvbmFsIEFuaW1hdGlvbiBhbmQgQ29tcG9zaXRpbmcKPiA+ID4gRW5naW5lICgy RC1BQ0UpIG9uIHRoZSBGcmVlc2NhbGUgTFMxMDJ4IFNvQ3MuCj4gPiA+Cj4gPiA+IDJELUFDRSBp cyBhIEZyZWVzY2FsZSBkaXNwbGF5IGNvbnRyb2xsZXIuIEl0IHN1cHBvcnRzIGF0IG1vc3QgZm91 cgo+ID4gPiBwbGFuZSBhbmQgcHJvdmlkZSBhbiBoYXJkd2FyZSBjdXJzb3IuCj4gPiA+Cj4gPiA+ IFRoaXMgaXMgYSBzaW1wbGlmaWVkIHZlcnNpb24sIG9ubHkgYSBwcmltYXJ5IHBsYW5lLCBhIGZi IGNyZWF0ZWQgZm9yCj4gPiA+IGZiZGV2LCBhIGNydGMsIGEgY29ubmVjdG9yIGZvciBURlQgTENE IHBhbmVsLCBhbiBlbmNvZGVyLCBhbmQgdGhlCj4gPiA+IGVuY29kZXIgaXMgbm90IGluIHVzZS4g Tm93IHRoaXMgZHJ2ZXIgc3VwcG9ydCBmYmRldiBvbmx5Lgo+ID4gPgo+ID4gPiBTaWduZWQtb2Zm LWJ5OiBBbGlzb24gV2FuZyA8YjE4OTY1QGZyZWVzY2FsZS5jb20+Cj4gPiA+IFNpZ25lZC1vZmYt Ynk6IFhpdWJvIExpIDxsaXhpdWJvQGNtc3MuY2hpbmFtb2JpbGUuY29tPgo+ID4gPiBTaWduZWQt b2ZmLWJ5OiBKaWFud2VpIFdhbmcgPGI1MjI2MUBmcmVlc2NhbGUuY29tPgo+ID4gCj4gPiBJbW8g YWRkaW5nIGEgbmV3IGRyaXZlciB3aXRob3V0IHByaW1hcnkgcGxhbmUgc3VwcG9ydCAodXNlCj4g PiBkcm1fY3J0Y19pbml0X3dpdGhfcGxhbmVzKSBhbmQgd2l0aG91dCBhdG9taWMgc3VwcG9ydCBk b2Vzbid0IG1ha2Ugc2Vuc2UKPiA+IGFueSBtb3JlLgo+ID4gCj4gPiBBbHNvLCB3aGF0IGRvIHlv dSBtZWFuIHdpdGggInN1cHBvcnQgZmJkZXYgb25seSI/Cj4gPiAtRGFuaWVsCj4gPiAKPiAgCj4g RGFuaWVsLAo+IAo+IFRoaXMgZHJpdmVyIGhhcyBzdXBwb3J0ZWQgcHJpbWFyeSBwbGFuZSAodXNl IGRybV9jcnRjX2luaXRfd2l0aF9wbGFuZXMpIAo+IEFscmVhZHkuIAo+IElmIGF0b21pYyBzdXBw b3J0IGlzIGEgbXVzdD8gMkQtQUNFIGlzIGEgc2ltcGxlIGRpc3BsYXkgQ29udHJvbGxlciBhbmQK PiB0aGlzIGlzIGEgc2ltcGxpZmllZCB2ZXJzaW9uLiBJZiBhdG9taWMgc3VwcG9ydCBpcyBub3Qg YSBtdXN0LCBJIHdhbnQgdG8gYWRkIAo+IGl0IHdpdGggcGF0Y2hlcywgaXMgaXQgb2s/CgphdG9t aWMgaXMgdGhlIG5ldyB3YXkgdGhlIGRybSBkaXNwbGF5IHN1YnN5c3RlbSB3b3Jrcywgbm90IHN1 cHBvcnRpbmcgaXQKaW4gbmV3IGRyaXZlcnMgbWFrZXMgdGhpcyB0cmFuc2l0aW9uIGV2ZW4gbG9u Z2VyLiBTaW5jZSBJIGd1ZXNzIGlmIHlvdQpkb24ndCB3YW50IHRvIGRvIHRoZSBjb252ZXJzaW9u IG5vdyBubyBvbmUgZWxzZSB3aWxsIGRvIGl0IGFueXRpbWUgbGF0ZXIsCmFuZCB0aGVuIHdlJ3Jl IHN0dWNrIHdpdGggdGhpcyBkcml2ZXIgYXMtaXMuIE9uIHRvcCBvZiB0aGF0IGF0b21pYyBzaG91 bGQKc2ltcGxpZnkgdGVzdGluZyBmb3IgeW91ciBkcml2ZXIgYSBsb3QgKHNpbmNlIGEgZmV3IHRo aW5ncyBhcmUgdGFrZSBjYXJlCm9mIGZvciB5b3UgaW4gdGhlIGdlbmVyaWMgYXRvbWljIGNvZGUp LgotRGFuaWVsCgo+IAo+ICIgTm93IHRoaXMgZHJ2ZXIgc3VwcG9ydCBmYmRldiBvbmx5LiIgaWYg dGhpcyBzZW50ZW5jZSBjb25mdXNlcyB5b3UsCj4gSSdkIGxpa2UgcmVtb3ZlIGl0LiBJbiBmYWN0 IEkgbWVhbiB0aGF0IHRoaXMgZHJpdmVyIG9ubHkgY3JlYXRlIGEgZnJhbWVidWZmZXIKPiBkZXYg KHVzZSBkcm1fZmJkZXZfY21hX2luaXQpLgo+IAo+IFRoYW5rcwo+IFJlZ2FyZHMsCj4gV2FuZyBK aWFud2VpCj4gCj4gPiA+IC0tLQo+ID4gPiAgLi4uL2RldmljZXRyZWUvYmluZGluZ3MvdmlkZW8v ZnNsLGRjZmIudHh0ICAgICAgICAgfCAgNTAgKysrCj4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vS2Nv bmZpZyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArCj4gPiA+ICBkcml2ZXJzL2dw dS9kcm0vTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCj4gPiA+ICBk cml2ZXJzL2dwdS9kcm0vZnNsL0tjb25maWcgICAgICAgICAgICAgICAgICAgICAgICB8ICAxNyAr Cj4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vZnNsL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAg ICB8ICAgNyArCj4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vZnNsL2ZzbF9kY3VfZHJtX2NydGMuYyAg ICAgICAgICAgICB8IDQxMgo+ID4gKysrKysrKysrKysrKysrKysrKysrCj4gPiA+ICBkcml2ZXJz L2dwdS9kcm0vZnNsL2ZzbF9kY3VfZHJtX2NydGMuaCAgICAgICAgICAgICB8ICA0MCArKwo+ID4g PiAgZHJpdmVycy9ncHUvZHJtL2ZzbC9mc2xfZGN1X2RybV9kcnYuYyAgICAgICAgICAgICAgfCAz MjMKPiA+ICsrKysrKysrKysrKysrKysKPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9mc2wvZnNsX2Rj dV9kcm1fZHJ2LmggICAgICAgICAgICAgIHwgMTY3ICsrKysrKysrKwo+ID4gPiAgZHJpdmVycy9n cHUvZHJtL2ZzbC9mc2xfZGN1X2RybV9mYmRldi5jICAgICAgICAgICAgfCAgNDMgKysrCj4gPiA+ ICBkcml2ZXJzL2dwdS9kcm0vZnNsL2ZzbF9kY3VfZHJtX2ttcy5jICAgICAgICAgICAgICB8ICA0 NSArKysKPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9mc2wvZnNsX2RjdV9kcm1fa21zLmggICAgICAg ICAgICAgIHwgIDIyICsrCj4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vZnNsL2ZzbF9kY3VfZHJtX3Bs YW5lLmMgICAgICAgICAgICB8IDEyNCArKysrKysrCj4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vZnNs L2ZzbF9kY3VfZHJtX3BsYW5lLmggICAgICAgICAgICB8ICAyOCArKwo+ID4gPiAgMTQgZmlsZXMg Y2hhbmdlZCwgMTI4MSBpbnNlcnRpb25zKCspCj4gPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQKPiA+ ID4gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3ZpZGVvL2ZzbCxkY2ZiLnR4dAo+ ID4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9mc2wvS2NvbmZpZyAgY3Jl YXRlIG1vZGUgMTAwNjQ0Cj4gPiA+IGRyaXZlcnMvZ3B1L2RybS9mc2wvTWFrZWZpbGUgIGNyZWF0 ZSBtb2RlIDEwMDY0NAo+ID4gPiBkcml2ZXJzL2dwdS9kcm0vZnNsL2ZzbF9kY3VfZHJtX2NydGMu Ywo+ID4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9mc2wvZnNsX2RjdV9k cm1fY3J0Yy5oCj4gPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2ZzbC9m c2xfZGN1X2RybV9kcnYuYwo+ID4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2Ry bS9mc2wvZnNsX2RjdV9kcm1fZHJ2LmgKPiA+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJz L2dwdS9kcm0vZnNsL2ZzbF9kY3VfZHJtX2ZiZGV2LmMKPiA+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0 NCBkcml2ZXJzL2dwdS9kcm0vZnNsL2ZzbF9kY3VfZHJtX2ttcy5jCj4gPiA+ICBjcmVhdGUgbW9k ZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2ZzbC9mc2xfZGN1X2RybV9rbXMuaAo+ID4gPiAgY3Jl YXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9mc2wvZnNsX2RjdV9kcm1fcGxhbmUuYwo+ ID4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9mc2wvZnNsX2RjdV9kcm1f cGxhbmUuaAo+ID4gPgo+ID4gPiBkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVl L2JpbmRpbmdzL3ZpZGVvL2ZzbCxkY2ZiLnR4dAo+ID4gPiBiL0RvY3VtZW50YXRpb24vZGV2aWNl dHJlZS9iaW5kaW5ncy92aWRlby9mc2wsZGNmYi50eHQKPiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQKPiA+ID4gaW5kZXggMDAwMDAwMC4uZGU3ZGE5Nwo+ID4gPiAtLS0gL2Rldi9udWxsCj4gPiA+ ICsrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy92aWRlby9mc2wsZGNmYi50 eHQKPiA+ID4gQEAgLTAsMCArMSw1MCBAQAo+ID4gPiArKiBGcmVlc2NhbGUgU2ltcGxlIERpc3Bs YXkgQ29udHJvbGxlciBGQiBEcml2ZXIKPiA+ID4gKwo+ID4gPiArUmVxdWlyZWQgcHJvcGVydGll czoKPiA+ID4gKy0gY29tcGF0aWJsZToJCVNob3VsZCBiZSBvbmUgb2YgImZzbCxsczEwMjFhLWRj ZmIiLgo+ID4gPiArLSByZWc6CQkJQWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBz ZXQgZm9yIGRjZmIuCj4gPiA+ICstIGNsb2NrczoJCUZyb20gY29tbW9uIGNsb2NrIGJpbmRpbmc6 IGhhbmRsZSB0byBkY2ZiIGNsb2NrLgo+ID4gPiArLSBjbG9jay1uYW1lczoJCUZyb20gY29tbW9u IGNsb2NrIGJpbmRpbmc6IFNoYWxsIGJlICJkY2ZiIi4KPiA+ID4gKy0gZGlzcGxheToJCVRoZSBw aGFuZGxlIHRvIGRpc3BsYXkgbm9kZS4KPiA+ID4gKwo+ID4gPiArT3B0aW9uYWwgcHJvcGVydGll czoKPiA+ID4gKy0gc2NmZy1jb250cm9sbGVyOglUaGUgcGhhbmRsZSBvZiBzY2ZnIG5vZGUuCj4g PiA+ICsKPiA+ID4gK1JlcXVpcmVkIHByb3BlcnRpZXM6Cj4gPiA+ICstIGJpdHMtcGVyLXBpeGVs Ogk8MTY+IGZvciBSR0I1NjUsCj4gPiA+ICsJCQk8MjQ+IGZvciBSR0I4ODgsCj4gPiA+ICsJCQk8 MzI+IGZvciBSR0I4ODg4Lgo+ID4gPiArCj4gPiA+ICtSZXF1aXJlZCB0aW1pbmcgbm9kZSBmb3Ig ZGlzcHBsYXkgc3ViLW5vZGU6Cj4gPiA+ICstIGRpc3BsYXktdGltaW5nczoJUmVmZXIgdG8gYmlu ZGluZyBkb2MgZGlzcGxheS10aW1pbmcudHh0IGZvcgo+ID4gZGV0YWlscy4KPiA+ID4gKwo+ID4g PiArRXhhbXBsZXM6Cj4gPiA+ICtkY2ZiOiBkY2ZiQDJjZTAwMDAgewo+ID4gPiArCWNvbXBhdGli bGUgPSAiZnNsLGxzMTAyMWEtZGNmYiI7Cj4gPiA+ICsJcmVnID0gPDB4MCAweDJjZTAwMDAgMHgw IDB4MTAwMDA+Owo+ID4gPiArCWNsb2NrcyA9IDwmcGxhdGZvcm1fY2xrIDA+Owo+ID4gPiArCWNs b2NrLW5hbWVzID0gImRjZmIiOwo+ID4gPiArCXNjZmctY29udHJvbGxlciA9IDwmc2NmZz47Cj4g PiA+ICsJZGlzcGxheSA9IDwmZGlzcGxheT47Cj4gPiA+ICsKPiA+ID4gKwlkaXNwbGF5OiBkaXNw bGF5QDAgewo+ID4gPiArCQliaXRzLXBlci1waXhlbCA9IDwyND47Cj4gPiA+ICsKPiA+ID4gKwkJ ZGlzcGxheS10aW1pbmdzIHsKPiA+ID4gKwkJCW5hdGl2ZS1tb2RlID0gPCZ0aW1pbmcwPjsKPiA+ ID4gKwkJCXRpbWluZzA6IG5sNDgyN2hjMTkgewo+ID4gPiArCQkJCWNsb2NrLWZyZXF1ZW5jeSA9 IDwxMDg3MDAwMD47Cj4gPiA+ICsJCQkJaGFjdGl2ZSA9IDw0ODA+Owo+ID4gPiArCQkJCXZhY3Rp dmUgPSA8MjcyPjsKPiA+ID4gKwkJCQloYmFjay1wb3JjaCA9IDwyPjsKPiA+ID4gKwkJCQloZnJv bnQtcG9yY2ggPSA8Mj47Cj4gPiA+ICsJCQkJdmJhY2stcG9yY2ggPSA8MT47Cj4gPiA+ICsJCQkJ dmZyb250LXBvcmNoID0gPDE+Owo+ID4gPiArCQkJCWhzeW5jLWxlbiA9IDw0MT47Cj4gPiA+ICsJ CQkJdnN5bmMtbGVuID0gPDI+Owo+ID4gPiArCQkJCWhzeW5jLWFjdGl2ZSA9IDwxPjsKPiA+ID4g KwkJCQl2c3luYy1hY3RpdmUgPSA8MT47Cj4gPiA+ICsJCQl9Owo+ID4gPiArCQl9Owo+ID4gPiAr CX07Cj4gPiA+ICt9Owo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL0tjb25maWcg Yi9kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZyBpbmRleAo+ID4gPiAxNTFhMDUwLi5hNjk1N2FhIDEw MDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZwo+ID4gPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vS2NvbmZpZwo+ID4gPiBAQCAtMTk5LDYgKzE5OSw4IEBAIHNvdXJjZSAiZHJp dmVycy9ncHUvZHJtL2JvY2hzL0tjb25maWciCj4gPiA+Cj4gPiA+ICBzb3VyY2UgImRyaXZlcnMv Z3B1L2RybS9tc20vS2NvbmZpZyIKPiA+ID4KPiA+ID4gK3NvdXJjZSAiZHJpdmVycy9ncHUvZHJt L2ZzbC9LY29uZmlnIgo+ID4gPiArCj4gPiA+ICBzb3VyY2UgImRyaXZlcnMvZ3B1L2RybS90ZWdy YS9LY29uZmlnIgo+ID4gPgo+ID4gPiAgc291cmNlICJkcml2ZXJzL2dwdS9kcm0vcGFuZWwvS2Nv bmZpZyIKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZSBiL2RyaXZl cnMvZ3B1L2RybS9NYWtlZmlsZSBpbmRleAo+ID4gPiAyYzIzOWI5Li5hYjViOWVmIDEwMDY0NAo+ ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUKPiA+ID4gKysrIGIvZHJpdmVycy9n cHUvZHJtL01ha2VmaWxlCj4gPiA+IEBAIC01Niw2ICs1Niw3IEBAIG9iai0kKENPTkZJR19EUk1f VURMKSArPSB1ZGwvCj4gPiA+ICBvYmotJChDT05GSUdfRFJNX0FTVCkgKz0gYXN0Lwo+ID4gPiAg b2JqLSQoQ09ORklHX0RSTV9BUk1BREEpICs9IGFybWFkYS8KPiA+ID4gIG9iai0kKENPTkZJR19E Uk1fQVRNRUxfSExDREMpCSs9IGF0bWVsLWhsY2RjLwo+ID4gPiArb2JqLSQoQ09ORklHX0RSTV9G U0xfRENVKSArPSBmc2wvCj4gPiA+ICBvYmotJChDT05GSUdfRFJNX1JDQVJfRFUpICs9IHJjYXIt ZHUvCj4gPiA+ICBvYmotJChDT05GSUdfRFJNX1NITU9CSUxFKSArPXNobW9iaWxlLwo+ID4gPiAg b2JqLSQoQ09ORklHX0RSTV9PTUFQKQkrPSBvbWFwZHJtLwo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2ZzbC9LY29uZmlnIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC9LY29uZmlnCj4g PiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0IGluZGV4IDAwMDAwMDAuLmU0ZjhkZjAKPiA+ID4gLS0t IC9kZXYvbnVsbAo+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZnNsL0tjb25maWcKPiA+ID4g QEAgLTAsMCArMSwxNyBAQAo+ID4gPiArY29uZmlnIERSTV9GU0xfRENVCj4gPiA+ICsJdHJpc3Rh dGUgIkRSTSBTdXBwb3J0IGZvciBGcmVlc2NhbGUgRENVIgo+ID4gPiArCWRlcGVuZHMgb24gRFJN ICYmIE9GICYmIEFSTQo+ID4gPiArCXNlbGVjdCBEUk1fS01TX0hFTFBFUgo+ID4gPiArCXNlbGVj dCBEUk1fS01TX0NNQV9IRUxQRVIKPiA+ID4gKwlzZWxlY3QgVklERU9NT0RFX0hFTFBFUlMKPiA+ ID4gKwlzZWxlY3QgQkFDS0xJR0hUX0NMQVNTX0RFVklDRQo+ID4gPiArCXNlbGVjdCBCQUNLTElH SFRfTENEX1NVUFBPUlQKPiA+ID4gKwlzZWxlY3QgUkVHTUFQX01NSU8KPiA+ID4gKwlzZWxlY3Qg RFJNX0tNU19GQl9IRUxQRVIKPiA+ID4gKwlzZWxlY3QgRkJfU1lTX0ZJTExSRUNUCj4gPiA+ICsJ c2VsZWN0IEZCX1NZU19DT1BZQVJFQQo+ID4gPiArCXNlbGVjdCBGQl9TWVNfSU1BR0VCTElUCj4g PiA+ICsJc2VsZWN0IEZCX1NZU19GT1BTCj4gPiA+ICsJaGVscAo+ID4gPiArCSAgQ2hvb3NlIHRo aXMgb3B0aW9uIGlmIHlvdSBoYXZlIGFuIEZyZWVzY2FsZSBEQ1UgY2hpcHNldC4KPiA+ID4gKwkg IElmIE0gaXMgc2VsZWN0ZWQgdGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBmc2wtZGN1LWRybS4K PiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9mc2wvTWFrZWZpbGUKPiA+ID4gYi9k cml2ZXJzL2dwdS9kcm0vZnNsL01ha2VmaWxlIG5ldyBmaWxlIG1vZGUgMTAwNjQ0IGluZGV4Cj4g PiA+IDAwMDAwMDAuLjUxYzNlMWYKPiA+ID4gLS0tIC9kZXYvbnVsbAo+ID4gPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vZnNsL01ha2VmaWxlCj4gPiA+IEBAIC0wLDAgKzEsNyBAQAo+ID4gPiArZnNs LWRjdS1kcm0teSA6PSBmc2xfZGN1X2RybV9kcnYubyBcCj4gPiA+ICsJICAgICAgIGZzbF9kY3Vf ZHJtX2ttcy5vIFwKPiA+ID4gKwkgICAgICAgZnNsX2RjdV9kcm1fcGxhbmUubyBcCj4gPiA+ICsJ ICAgICAgIGZzbF9kY3VfZHJtX2NydGMubyBcCj4gPiA+ICsJICAgICAgIGZzbF9kY3VfZHJtX2Zi ZGV2Lm8gXAo+ID4gPiArCj4gPiA+ICtvYmotJChDT05GSUdfRFJNX0ZTTF9EQ1UpCSs9IGZzbC1k Y3UtZHJtLm8KPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9mc2wvZnNsX2RjdV9k cm1fY3J0Yy5jCj4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL2ZzbC9mc2xfZGN1X2RybV9jcnRjLmMK PiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+ID4gaW5kZXggMDAwMDAwMC4uOWY1YmE4Ngo+ ID4gPiAtLS0gL2Rldi9udWxsCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9mc2wvZnNsX2Rj dV9kcm1fY3J0Yy5jCj4gPiA+IEBAIC0wLDAgKzEsNDEyIEBACj4gPiA+ICsvKgo+ID4gPiArICog Q29weXJpZ2h0IDIwMTUgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4KPiA+ID4gKyAqCj4g PiA+ICsgKiBGcmVlc2NhbGUgRENVIGRybSBkZXZpY2UgZHJpdmVyCj4gPiA+ICsgKgo+ID4gPiAr ICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vcgo+ID4gPiArbW9kaWZ5Cj4gPiA+ICsgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAo+ID4gPiArYnkKPiA+ID4g KyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhl IExpY2Vuc2UsIG9yCj4gPiA+ICsgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u Lgo+ID4gPiArICovCj4gPiA+ICsKPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9iYWNrbGlnaHQuaD4K PiA+ID4gKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4KPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9yZWdt YXAuaD4KPiA+ID4gKwo+ID4gPiArI2luY2x1ZGUgPGRybS9kcm1QLmg+Cj4gPiA+ICsjaW5jbHVk ZSA8ZHJtL2RybV9hdG9taWNfaGVscGVyLmg+Cj4gPiA+ICsjaW5jbHVkZSA8ZHJtL2RybV9jcnRj Lmg+Cj4gPiA+ICsjaW5jbHVkZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5oPgo+ID4gPiArI2luY2x1 ZGUgPGRybS9kcm1fZmJfY21hX2hlbHBlci5oPgo+ID4gPiArI2luY2x1ZGUgPGRybS9kcm1fZ2Vt X2NtYV9oZWxwZXIuaD4KPiA+ID4gKyNpbmNsdWRlIDxkcm0vZHJtX3BsYW5lX2hlbHBlci5oPgo+ ID4gPiArI2luY2x1ZGUgPHZpZGVvL29mX2Rpc3BsYXlfdGltaW5nLmg+Cj4gPiA+ICsKPiA+ID4g KyNpbmNsdWRlICJmc2xfZGN1X2RybV9jcnRjLmgiCj4gPiA+ICsjaW5jbHVkZSAiZnNsX2RjdV9k cm1fZHJ2LmgiCj4gPiA+ICsjaW5jbHVkZSAiZnNsX2RjdV9kcm1fa21zLmgiCj4gPiA+ICsjaW5j bHVkZSAiZnNsX2RjdV9kcm1fcGxhbmUuaCIKPiA+ID4gKwo+ID4gPiArI2RlZmluZSB0b19mc2xf ZGN1X2NydGMoYykJY29udGFpbmVyX29mKGMsIHN0cnVjdCBmc2xfZGN1X2RybV9jcnRjLAo+ID4g Y3J0YykKPiA+ID4gKwo+ID4gPiArc3RhdGljIHZvaWQgZnNsX2RjdV9kcm1fY3J0Y19zdGFydChz dHJ1Y3QgZHJtX2NydGMgKmNydGMpIHsKPiA+ID4gKwlmc2xfZGN1X2RybV9wbGFuZV9zZXR1cChj cnRjLT5wcmltYXJ5KTsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArc3RhdGljIHZvaWQgZnNsX2Rj dV9kcm1fY3J0Y19zdG9wKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykgeyB9Cj4gPiA+ICsKPiA+ID4g K3ZvaWQgZnNsX2RjdV9kcm1fY3J0Y19zdXNwZW5kKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yykgewo+ ID4gPiArCWZzbF9kY3VfZHJtX2NydGNfc3RvcChjcnRjKTsKPiA+ID4gK30KPiA+ID4gKwo+ID4g PiArdm9pZCBmc2xfZGN1X2RybV9jcnRjX3Jlc3VtZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpIHsK PiA+ID4gKwlzdHJ1Y3QgZnNsX2RjdV9kcm1fY3J0YyAqZnNsX2NydGMgPSB0b19mc2xfZGN1X2Ny dGMoY3J0Yyk7Cj4gPiA+ICsKPiA+ID4gKwlpZiAoZnNsX2NydGMtPmRwbXMgIT0gRFJNX01PREVf RFBNU19PTikKPiA+ID4gKwkJcmV0dXJuOwo+ID4gPiArCj4gPiA+ICsJZnNsX2RjdV9kcm1fY3J0 Y19zdGFydChjcnRjKTsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArc3RhdGljIHZvaWQgZnNsX2Rj dV9kcm1fY3J0Y191cGRhdGVfYmFzZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpIHsgfQo+ID4gPiAr Cj4gPiA+ICtzdGF0aWMgdm9pZCBmc2xfZGN1X2RybV9jcnRjX2RwbXMoc3RydWN0IGRybV9jcnRj ICpjcnRjLCBpbnQgbW9kZSkgewo+ID4gPiArCXN0cnVjdCBmc2xfZGN1X2RybV9jcnRjICpmc2xf Y3J0YyA9IHRvX2ZzbF9kY3VfY3J0YyhjcnRjKTsKPiA+ID4gKwo+ID4gPiArCWlmIChmc2xfY3J0 Yy0+ZHBtcyA9PSBtb2RlKQo+ID4gPiArCQlyZXR1cm47Cj4gPiA+ICsKPiA+ID4gKwlpZiAobW9k ZSA9PSBEUk1fTU9ERV9EUE1TX09OKQo+ID4gPiArCQlmc2xfZGN1X2RybV9jcnRjX3N0YXJ0KGNy dGMpOwo+ID4gPiArCWVsc2UKPiA+ID4gKwkJZnNsX2RjdV9kcm1fY3J0Y19zdG9wKGNydGMpOwo+ ID4gPiArCj4gPiA+ICsJZnNsX2NydGMtPmRwbXMgPSBtb2RlOwo+ID4gPiArfQo+ID4gPiArCj4g PiA+ICtzdGF0aWMgYm9vbCBmc2xfZGN1X2RybV9jcnRjX21vZGVfZml4dXAoc3RydWN0IGRybV9j cnRjICpjcnRjLAo+ID4gPiArCQkJCQljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9k ZSwKPiA+ID4gKwkJCQkJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUpIHsK PiA+ID4gKwlyZXR1cm4gdHJ1ZTsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArc3RhdGljIHZvaWQg ZnNsX2RjdV9kcm1fY3J0Y19tb2RlX3ByZXBhcmUoc3RydWN0IGRybV9jcnRjICpjcnRjKSB7Cj4g PiA+ICsJCWZzbF9kY3VfZHJtX2NydGNfc3RvcChjcnRjKTsKPiA+ID4gK30KPiA+ID4gKwo+ID4g PiArc3RhdGljIGludCBmc2xfZGN1X2RybV9jcnRjX21vZGVfc2V0KHN0cnVjdCBkcm1fY3J0YyAq Y3J0YywKPiA+ID4gKwkJCQkgICAgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlLAo+ID4g PiArCQkJCSAgICAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUsCj4gPiA+ ICsJCQkJICAgICBpbnQgeCwgaW50IHksCj4gPiA+ICsJCQkJICAgICBzdHJ1Y3QgZHJtX2ZyYW1l YnVmZmVyICpvbGRfZmIpIHsKPiA+ID4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ ZGV2Owo+ID4gPiArCXN0cnVjdCBmc2xfZGN1X2RybV9kZXZpY2UgKmZzbF9kZXYgPSBkZXYtPmRl dl9wcml2YXRlOwo+ID4gPiArCXVpbnQzMl90IGhicCwgaGZwLCBoc3csIHZicCwgdmZwLCB2c3cs IGRpdiwgaW5kZXg7Cj4gPiA+ICsKPiA+ID4gKwlEQkcoIjogc2V0IG1vZGU6ICVkOlwiJXNcIiAl ZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAweCV4IDB4JXgiLAo+ID4gPiArCSAgICBtb2Rl LT5iYXNlLmlkLCBtb2RlLT5uYW1lLAo+ID4gPiArCSAgICBtb2RlLT52cmVmcmVzaCwgbW9kZS0+ Y2xvY2ssCj4gPiA+ICsJICAgIG1vZGUtPmhkaXNwbGF5LCBtb2RlLT5oc3luY19zdGFydCwKPiA+ ID4gKwkgICAgbW9kZS0+aHN5bmNfZW5kLCBtb2RlLT5odG90YWwsCj4gPiA+ICsJICAgIG1vZGUt PnZkaXNwbGF5LCBtb2RlLT52c3luY19zdGFydCwKPiA+ID4gKwkgICAgbW9kZS0+dnN5bmNfZW5k LCBtb2RlLT52dG90YWwsCj4gPiA+ICsJICAgIG1vZGUtPnR5cGUsIG1vZGUtPmZsYWdzKTsKPiA+ ID4gKwo+ID4gPiArCWluZGV4ID0gZHJtX2NydGNfaW5kZXgoY3J0Yyk7Cj4gPiA+ICsJZGl2ID0g KHVpbnQzMl90KWNsa19nZXRfcmF0ZShmc2xfZGV2LT5jbGspIC8gY3J0Yy0+bW9kZS5jbG9jayAv Cj4gPiA+ICsxMDAwOwo+ID4gPiArCj4gPiA+ICsJLyogQ29uZmlndXJlIHRpbWluZ3M6ICovCj4g PiA+ICsJaGJwID0gbW9kZS0+aHRvdGFsIC0gbW9kZS0+aHN5bmNfZW5kOwo+ID4gPiArCWhmcCA9 IG1vZGUtPmhzeW5jX3N0YXJ0IC0gbW9kZS0+aGRpc3BsYXk7Cj4gPiA+ICsJaHN3ID0gbW9kZS0+ aHN5bmNfZW5kIC0gbW9kZS0+aHN5bmNfc3RhcnQ7Cj4gPiA+ICsJdmJwID0gbW9kZS0+dnRvdGFs IC0gbW9kZS0+dnN5bmNfZW5kOwo+ID4gPiArCXZmcCA9IG1vZGUtPnZzeW5jX3N0YXJ0IC0gbW9k ZS0+dmRpc3BsYXk7Cj4gPiA+ICsJdnN3ID0gbW9kZS0+dnN5bmNfZW5kIC0gbW9kZS0+dnN5bmNf c3RhcnQ7Cj4gPiA+ICsKPiA+ID4gKwlyZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1Vf SFNZTl9QQVJBLAo+ID4gPiArCQkgICAgIERDVV9IU1lOX1BBUkFfQlAoaGJwKSB8Cj4gPiA+ICsJ CSAgICAgRENVX0hTWU5fUEFSQV9QVyhoc3cpIHwKPiA+ID4gKwkJICAgICBEQ1VfSFNZTl9QQVJB X0ZQKGhmcCkpOwo+ID4gPiArCXJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9WU1lO X1BBUkEsCj4gPiA+ICsJCSAgICAgRENVX1ZTWU5fUEFSQV9CUCh2YnApIHwKPiA+ID4gKwkJICAg ICBEQ1VfVlNZTl9QQVJBX1BXKHZzdykgfAo+ID4gPiArCQkgICAgIERDVV9WU1lOX1BBUkFfRlAo dmZwKSk7Cj4gPiA+ICsJcmVnbWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwgRENVX0RJU1BfU0la RSwKPiA+ID4gKwkJICAgICBEQ1VfRElTUF9TSVpFX0RFTFRBX1kobW9kZS0+dmRpc3BsYXkpIHwK PiA+ID4gKwkJICAgICBEQ1VfRElTUF9TSVpFX0RFTFRBX1gobW9kZS0+aGRpc3BsYXkpKTsKPiA+ ID4gKwlyZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfQ1RSTERFU0NMTl8xKGluZGV4 KSwKPiA+ID4gKwkJICAgICBEQ1VfQ1RSTERFU0NMTl8xX0hFSUdIVChtb2RlLT52ZGlzcGxheSkg fAo+ID4gPiArCQkgICAgIERDVV9DVFJMREVTQ0xOXzFfV0lEVEgobW9kZS0+aGRpc3BsYXkpKTsK PiA+ID4gKwlyZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfQ1RSTERFU0NMTl8yKGlu ZGV4KSwKPiA+ID4gKwkJICAgICBEQ1VfQ1RSTERFU0NMTl8yX1BPU1koeSkgfAo+ID4gPiArCQkg ICAgIERDVV9DVFJMREVTQ0xOXzJfUE9TWCh4KSk7Cj4gPiA+ICsJcmVnbWFwX3dyaXRlKGZzbF9k ZXYtPnJlZ21hcCwgRENVX0RJVl9SQVRJTywgZGl2KTsKPiA+ID4gKwlyZWdtYXBfd3JpdGUoZnNs X2Rldi0+cmVnbWFwLCBEQ1VfVVBEQVRFX01PREUsCj4gPiA+ICtEQ1VfVVBEQVRFX01PREVfUkVB RFJFRyk7Cj4gPiA+ICsKPiA+ID4gKwlyZXR1cm4gMDsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiAr c3RhdGljIHZvaWQgZnNsX2RjdV9kcm1fY3J0Y19tb2RlX2NvbW1pdChzdHJ1Y3QgZHJtX2NydGMg KmNydGMpIHsKPiA+ID4gKwkJZnNsX2RjdV9kcm1fY3J0Y19zdGFydChjcnRjKTsKPiA+ID4gK30K PiA+ID4gKwo+ID4gPiArc3RhdGljIGludCBmc2xfZGN1X2RybV9jcnRjX21vZGVfc2V0X2Jhc2Uo c3RydWN0IGRybV9jcnRjICpjcnRjLCBpbnQgeCwKPiA+IGludCB5LAo+ID4gPiArCQkJCQkgIHN0 cnVjdCBkcm1fZnJhbWVidWZmZXIgKm9sZF9mYikgewo+ID4gPiArCWZzbF9kY3VfZHJtX2NydGNf dXBkYXRlX2Jhc2UoY3J0Yyk7Cj4gPiA+ICsKPiA+ID4gKwlyZXR1cm4gMDsKPiA+ID4gK30KPiA+ ID4gKwo+ID4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY3J0Y19oZWxwZXJfZnVuY3MgY3J0 Y19oZWxwZXJfZnVuY3MgPSB7Cj4gPiA+ICsJLmRwbXMgPSBmc2xfZGN1X2RybV9jcnRjX2RwbXMs Cj4gPiA+ICsJLm1vZGVfZml4dXAgPSBmc2xfZGN1X2RybV9jcnRjX21vZGVfZml4dXAsCj4gPiA+ ICsJLnByZXBhcmUgPSBmc2xfZGN1X2RybV9jcnRjX21vZGVfcHJlcGFyZSwKPiA+ID4gKwkuY29t bWl0ID0gZnNsX2RjdV9kcm1fY3J0Y19tb2RlX2NvbW1pdCwKPiA+ID4gKwkubW9kZV9zZXQgPSBm c2xfZGN1X2RybV9jcnRjX21vZGVfc2V0LAo+ID4gPiArCS5tb2RlX3NldF9iYXNlID0gZnNsX2Rj dV9kcm1fY3J0Y19tb2RlX3NldF9iYXNlLCB9Owo+ID4gPiArCj4gPiA+ICtzdGF0aWMgaW50IGZz bF9kY3VfZHJtX2NydGNfcGFnZV9mbGlwKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiA+ID4gKwkJ CQkgICAgICBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKPiA+ID4gKwkJCQkgICAgICBzdHJ1 Y3QgZHJtX3BlbmRpbmdfdmJsYW5rX2V2ZW50ICpldmVudCwKPiA+ID4gKwkJCQkgICAgICB1aW50 MzJfdCBwYWdlX2ZsaXBfZmxhZ3MpCj4gPiA+ICt7Cj4gPiA+ICsJcmV0dXJuIDA7Cj4gPiA+ICt9 Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2Z1bmNzIGZzbF9k Y3VfZHJtX3BsYW5lX2Z1bmNzID0gewo+ID4gPiArCS51cGRhdGVfcGxhbmUgPSBmc2xfZGN1X2Ry bV9wbGFuZV91cGRhdGUsCj4gPiA+ICsJLmRpc2FibGVfcGxhbmUgPSBmc2xfZGN1X2RybV9wbGFu ZV9kaXNhYmxlLAo+ID4gPiArCS5kZXN0cm95ID0gZnNsX2RjdV9kcm1fcGxhbmVfZGVzdHJveSwg fTsKPiA+ID4gKwo+ID4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY3J0Y19mdW5jcyBjcnRj X2Z1bmNzID0gewo+ID4gPiArCS5kZXN0cm95ID0gZHJtX2NydGNfY2xlYW51cCwKPiA+ID4gKwku c2V0X2NvbmZpZyA9IGRybV9jcnRjX2hlbHBlcl9zZXRfY29uZmlnLAo+ID4gPiArCS5wYWdlX2Zs aXAgPSBmc2xfZGN1X2RybV9jcnRjX3BhZ2VfZmxpcCwgfTsKPiA+ID4gKwo+ID4gPiAraW50IGZz bF9kY3VfZHJtX2NydGNfY3JlYXRlKHN0cnVjdCBmc2xfZGN1X2RybV9kZXZpY2UgKmZzbF9kZXYp IHsKPiA+ID4gKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSAmZnNsX2Rldi0+Y3J0Yy5jcnRjOwo+ ID4gPiArCWludCByZXQ7Cj4gPiA+ICsKPiA+ID4gKwlmc2xfZGV2LT5jcnRjLmRwbXMgPSBEUk1f TU9ERV9EUE1TX09GRjsKPiA+ID4gKwo+ID4gPiArCXJldCA9IGRybV9jcnRjX2luaXQoZnNsX2Rl di0+ZGRldiwgY3J0YywgJmNydGNfZnVuY3MpOwo+ID4gPiArCWlmIChyZXQgPCAwKQo+ID4gPiAr CQlyZXR1cm4gcmV0Owo+ID4gPiArCj4gPiA+ICsJY3J0Yy0+cHJpbWFyeS0+ZnVuY3MgPSAmZnNs X2RjdV9kcm1fcGxhbmVfZnVuY3M7Cj4gPiA+ICsKPiA+ID4gKwlkcm1fY3J0Y19oZWxwZXJfYWRk KGNydGMsICZjcnRjX2hlbHBlcl9mdW5jcyk7Cj4gPiA+ICsKPiA+ID4gKwlyZWdtYXBfd3JpdGUo ZnNsX2Rldi0+cmVnbWFwLCBEQ1VfU1lOX1BPTCwKPiA+ID4gKwkJICAgICBEQ1VfU1lOX1BPTF9J TlZfVlNfTE9XIHwgRENVX1NZTl9QT0xfSU5WX0hTX0xPVyk7Cj4gPiA+ICsJcmVnbWFwX3dyaXRl KGZzbF9kZXYtPnJlZ21hcCwgRENVX0JHTkQsIERDVV9CR05EX1IoMCkgfAo+ID4gPiArCQkgICAg IERDVV9CR05EX0coMCkgfCBEQ1VfQkdORF9CKDApKTsKPiA+ID4gKwlyZWdtYXBfd3JpdGUoZnNs X2Rldi0+cmVnbWFwLCBEQ1VfRENVX01PREUsCj4gPiA+ICsJCSAgICAgRENVX01PREVfQkxFTkRf SVRFUigxKSB8IERDVV9NT0RFX1JBU1RFUl9FTik7Cj4gPiA+ICsJcmVnbWFwX3dyaXRlKGZzbF9k ZXYtPnJlZ21hcCwgRENVX1RIUkVTSE9MRCwKPiA+ID4gKwkJICAgICBEQ1VfVEhSRVNIT0xEX0xT X0JGX1ZTKEJGX1ZTX1ZBTCkgfAo+ID4gPiArCQkgICAgIERDVV9USFJFU0hPTERfT1VUX0JVRl9I SUdIKEJVRl9NQVhfVkFMKSB8Cj4gPiA+ICsJCSAgICAgRENVX1RIUkVTSE9MRF9PVVRfQlVGX0xP VyhCVUZfTUlOX1ZBTCkpOwo+ID4gPiArCXJlZ21hcF91cGRhdGVfYml0cyhmc2xfZGV2LT5yZWdt YXAsIERDVV9EQ1VfTU9ERSwKPiA+ID4gKwkJCSAgIERDVV9NT0RFX0RDVV9NT0RFX01BU0ssCj4g PiA+ICsJCQkgICBEQ1VfTU9ERV9EQ1VfTU9ERShEQ1VfTU9ERV9OT1JNQUwpKTsKPiA+ID4gKwly ZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfVVBEQVRFX01PREUsCj4gPiBEQ1VfVVBE QVRFX01PREVfUkVBRFJFRyk7Cj4gPiA+ICsJcmV0dXJuIDA7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ ID4gKy8qCj4gPiA+ICsgKiBFbmNvZGVyCj4gPiA+ICsgKi8KPiA+ID4gKwo+ID4gPiArI2RlZmlu ZSB0b19mc2xfZGN1X2VuY29kZXIoZSkgXAo+ID4gPiArCWNvbnRhaW5lcl9vZihlLCBzdHJ1Y3Qg ZnNsX2RjdV9kcm1fZW5jb2RlciwgZW5jb2RlcikKPiA+ID4gKwo+ID4gPiArc3RhdGljIHZvaWQg ZnNsX2RjdV9kcm1fZW5jb2Rlcl9kcG1zKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwgaW50 Cj4gPiA+ICttb2RlKSB7Cj4gPiA+ICsJc3RydWN0IGZzbF9kY3VfZHJtX2VuY29kZXIgKmZzbF9l bmMgPSB0b19mc2xfZGN1X2VuY29kZXIoZW5jb2Rlcik7Cj4gPiA+ICsKPiA+ID4gKwlpZiAoZnNs X2VuYy0+ZHBtcyA9PSBtb2RlKQo+ID4gPiArCQlyZXR1cm47Cj4gPiA+ICsKPiA+ID4gKwlmc2xf ZW5jLT5kcG1zID0gbW9kZTsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArc3RhdGljIGJvb2wgZnNs X2RjdV9kcm1fZW5jb2Rlcl9tb2RlX2ZpeHVwCj4gPiA+ICsJCShzdHJ1Y3QgZHJtX2VuY29kZXIg KmVuY29kZXIsCj4gPiA+ICsJCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlLAo+ ID4gPiArCQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSkgewo+ID4gPiAr CXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmNvZGVyLT5kZXY7Cj4gPiA+ICsJc3RydWN0IGZz bF9kY3VfZHJtX2RldmljZSAqZnNsX2RldiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gPiA+ICsJc3Ry dWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciA9ICZmc2xfZGV2LT5jb25uZWN0b3IuY29ubmVj dG9yOwo+ID4gPiArCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpwYW5lbF9tb2RlOwo+ ID4gPiArCj4gPiA+ICsJaWYgKGxpc3RfZW1wdHkoJmNvbm5lY3Rvci0+bW9kZXMpKSB7Cj4gPiA+ ICsJCWRldl9kYmcoZGV2LT5kZXYsICJtb2RlX2ZpeHVwOiBlbXB0eSBtb2RlcyBsaXN0XG4iKTsK PiA+ID4gKwkJcmV0dXJuIGZhbHNlOwo+ID4gPiArCX0KPiA+ID4gKwo+ID4gPiArCS8qIFRoZSBm bGF0IHBhbmVsIG1vZGUgaXMgZml4ZWQsIGp1c3QgY29weSBpdCB0byB0aGUgYWRqdXN0ZWQgbW9k ZS4KPiA+ICovCj4gPiA+ICsJcGFuZWxfbW9kZSA9IGxpc3RfZmlyc3RfZW50cnkoJmNvbm5lY3Rv ci0+bW9kZXMsCj4gPiA+ICsJCQkJICAgICAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUsIGhlYWQp Owo+ID4gPiArCWRybV9tb2RlX2NvcHkoYWRqdXN0ZWRfbW9kZSwgcGFuZWxfbW9kZSk7Cj4gPiA+ ICsKPiA+ID4gKwlyZXR1cm4gdHJ1ZTsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArc3RhdGljIHZv aWQgZnNsX2RjdV9kcm1fZW5jb2Rlcl9tb2RlX3ByZXBhcmUoc3RydWN0IGRybV9lbmNvZGVyCj4g PiA+ICsqZW5jb2RlcikgeyB9Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyB2b2lkIGZzbF9kY3VfZHJt X2VuY29kZXJfbW9kZV9zZXQoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLAo+ID4gPiArCQkJ CQkgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUsCj4gPiA+ICsJCQkJCSBzdHJ1Y3QgZHJt X2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSkgeyB9Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyB2 b2lkIGZzbF9kY3VfZHJtX2VuY29kZXJfbW9kZV9jb21taXQoc3RydWN0IGRybV9lbmNvZGVyCj4g PiA+ICsqZW5jb2Rlcikgewo+ID4gPiArCTsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArc3RhdGlj IGNvbnN0IHN0cnVjdCBkcm1fZW5jb2Rlcl9oZWxwZXJfZnVuY3MgZW5jb2Rlcl9oZWxwZXJfZnVu Y3MgPSB7Cj4gPiA+ICsJLmRwbXMgPSBmc2xfZGN1X2RybV9lbmNvZGVyX2RwbXMsCj4gPiA+ICsJ Lm1vZGVfZml4dXAgPSBmc2xfZGN1X2RybV9lbmNvZGVyX21vZGVfZml4dXAsCj4gPiA+ICsJLnBy ZXBhcmUgPSBmc2xfZGN1X2RybV9lbmNvZGVyX21vZGVfcHJlcGFyZSwKPiA+ID4gKwkuY29tbWl0 ID0gZnNsX2RjdV9kcm1fZW5jb2Rlcl9tb2RlX2NvbW1pdCwKPiA+ID4gKwkubW9kZV9zZXQgPSBm c2xfZGN1X2RybV9lbmNvZGVyX21vZGVfc2V0LCB9Owo+ID4gPiArCj4gPiA+ICtzdGF0aWMgdm9p ZCBmc2xfZGN1X2RybV9lbmNvZGVyX2Rlc3Ryb3koc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVy KQo+ID4gPiArewo+ID4gPiArCWRybV9lbmNvZGVyX2NsZWFudXAoZW5jb2Rlcik7Cj4gPiA+ICt9 Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2VuY29kZXJfZnVuY3MgZW5j b2Rlcl9mdW5jcyA9IHsKPiA+ID4gKwkuZGVzdHJveSA9IGZzbF9kY3VfZHJtX2VuY29kZXJfZGVz dHJveSwgfTsKPiA+ID4gKwo+ID4gPiAraW50IGZzbF9kY3VfZHJtX2VuY29kZXJfY3JlYXRlKHN0 cnVjdCBmc2xfZGN1X2RybV9kZXZpY2UgKmZzbF9kZXYpIHsKPiA+ID4gKwlzdHJ1Y3QgZHJtX2Vu Y29kZXIgKmVuY29kZXIgPSAmZnNsX2Rldi0+ZW5jb2Rlci5lbmNvZGVyOwo+ID4gPiArCWludCBy ZXQ7Cj4gPiA+ICsKPiA+ID4gKwlmc2xfZGV2LT5lbmNvZGVyLmRwbXMgPSBEUk1fTU9ERV9EUE1T X09GRjsKPiA+ID4gKwo+ID4gPiArCWVuY29kZXItPnBvc3NpYmxlX2NydGNzID0gMTsKPiA+ID4g Kwo+ID4gPiArCXJldCA9IGRybV9lbmNvZGVyX2luaXQoZnNsX2Rldi0+ZGRldiwgZW5jb2Rlciwg JmVuY29kZXJfZnVuY3MsCj4gPiA+ICsJCQkgICAgICAgRFJNX01PREVfRU5DT0RFUl9MVkRTKTsK PiA+ID4gKwlpZiAocmV0IDwgMCkKPiA+ID4gKwkJcmV0dXJuIHJldDsKPiA+ID4gKwo+ID4gPiAr CWRybV9lbmNvZGVyX2hlbHBlcl9hZGQoZW5jb2RlciwgJmVuY29kZXJfaGVscGVyX2Z1bmNzKTsK PiA+ID4gKwo+ID4gPiArCXJldHVybiAwOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICsvKgo+ID4g PiArICogQ29ubmVjdG9yCj4gPiA+ICsgKi8KPiA+ID4gKwo+ID4gPiArI2RlZmluZSB0b19mc2xf ZGN1X2Nvbm5lY3RvcihjKSBcCj4gPiA+ICsJY29udGFpbmVyX29mKGMsIHN0cnVjdCBmc2xfZGN1 X2RybV9jb25uZWN0b3IsIGNvbm5lY3RvcikKPiA+ID4gKwo+ID4gPiArc3RhdGljIGludCBmc2xf ZGN1X2RybV9jb25uZWN0b3JfZ2V0X21vZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yCj4gPiA+ICsq Y29ubmVjdG9yKSB7Cj4gPiA+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNvbm5lY3Rvci0+ ZGV2Owo+ID4gPiArCXN0cnVjdCBkZXZpY2Vfbm9kZSAqZGlzcGxheV9ucCwgKm5wID0gZGV2LT5k ZXYtPm9mX25vZGU7Cj4gPiA+ICsJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUgPSBkcm1f bW9kZV9jcmVhdGUoY29ubmVjdG9yLT5kZXYpOwo+ID4gPiArCWludCBudW1fbW9kZXMgPSAwOwo+ ID4gPiArCj4gPiA+ICsJaWYgKG5wKSB7Cj4gPiA+ICsJCWRpc3BsYXlfbnAgPSBvZl9wYXJzZV9w aGFuZGxlKG5wLCAiZGlzcGxheSIsIDApOwo+ID4gPiArCQlpZiAoIWRpc3BsYXlfbnApIHsKPiA+ ID4gKwkJCWRldl9lcnIoZGV2LT5kZXYsICJmYWlsZWQgdG8gZmluZCBkaXNwbGF5IHBoYW5kbGVc biIpOwo+ID4gPiArCQkJcmV0dXJuIG51bV9tb2RlczsKPiA+ID4gKwkJfQo+ID4gPiArCQlvZl9n ZXRfZHJtX2Rpc3BsYXlfbW9kZShkaXNwbGF5X25wLCBtb2RlLCBPRl9VU0VfTkFUSVZFX01PREUp Owo+ID4gPiArCQltb2RlLT50eXBlIHw9IERSTV9NT0RFX1RZUEVfRFJJVkVSIHwgRFJNX01PREVf VFlQRV9QUkVGRVJSRUQsCj4gPiA+ICsJCWRybV9tb2RlX3Byb2JlZF9hZGQoY29ubmVjdG9yLCBt b2RlKTsKPiA+ID4gKwkJbnVtX21vZGVzKys7Cj4gPiA+ICsJfQo+ID4gPiArCj4gPiA+ICsJcmV0 dXJuIG51bV9tb2RlczsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArc3RhdGljIGludCBmc2xfZGN1 X2RybV9jb25uZWN0b3JfbW9kZV92YWxpZChzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcgo+ID4gKmNvbm5l Y3RvciwKPiA+ID4gKwkJCQkJICAgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlKSB7Cj4g PiA+ICsJcmV0dXJuIE1PREVfT0s7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBzdHJ1 Y3QgZHJtX2VuY29kZXIgKgo+ID4gPiArZnNsX2RjdV9kcm1fY29ubmVjdG9yX2Jlc3RfZW5jb2Rl cihzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKSB7Cj4gPiA+ICsJc3RydWN0IGZzbF9k Y3VfZHJtX2Nvbm5lY3RvciAqZnNsX2NvbiA9Cj4gPiA+ICt0b19mc2xfZGN1X2Nvbm5lY3Rvcihj b25uZWN0b3IpOwo+ID4gPiArCj4gPiA+ICsJcmV0dXJuIGZzbF9jb24tPmVuY29kZXI7Cj4gPiA+ ICt9Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9oZWxw ZXJfZnVuY3MgY29ubmVjdG9yX2hlbHBlcl9mdW5jcwo+ID4gPSB7Cj4gPiA+ICsJLmdldF9tb2Rl cyA9IGZzbF9kY3VfZHJtX2Nvbm5lY3Rvcl9nZXRfbW9kZXMsCj4gPiA+ICsJLm1vZGVfdmFsaWQg PSBmc2xfZGN1X2RybV9jb25uZWN0b3JfbW9kZV92YWxpZCwKPiA+ID4gKwkuYmVzdF9lbmNvZGVy ID0gZnNsX2RjdV9kcm1fY29ubmVjdG9yX2Jlc3RfZW5jb2RlciwKPiA+ID4gK307Cj4gPiA+ICsK PiA+ID4gK3N0YXRpYyB2b2lkIGZzbF9kY3VfZHJtX2Nvbm5lY3Rvcl9kZXN0cm95KHN0cnVjdCBk cm1fY29ubmVjdG9yCj4gPiA+ICsqY29ubmVjdG9yKSB7Cj4gPiA+ICsJZHJtX2Nvbm5lY3Rvcl91 bnJlZ2lzdGVyKGNvbm5lY3Rvcik7Cj4gPiA+ICsJZHJtX2Nvbm5lY3Rvcl9jbGVhbnVwKGNvbm5l Y3Rvcik7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBlbnVtIGRybV9jb25uZWN0b3Jf c3RhdHVzCj4gPiA+ICtmc2xfZGN1X2RybV9jb25uZWN0b3JfZGV0ZWN0KHN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0b3IsIGJvb2wKPiA+ID4gK2ZvcmNlKSB7Cj4gPiA+ICsJcmV0dXJuIGNv bm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0aWMg Y29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3JfZnVuY3MgY29ubmVjdG9yX2Z1bmNzID0gewo+ID4g PiArCS5kcG1zID0gZHJtX2hlbHBlcl9jb25uZWN0b3JfZHBtcywKPiA+ID4gKwkuZGV0ZWN0ID0g ZnNsX2RjdV9kcm1fY29ubmVjdG9yX2RldGVjdCwKPiA+ID4gKwkuZmlsbF9tb2RlcyA9IGRybV9o ZWxwZXJfcHJvYmVfc2luZ2xlX2Nvbm5lY3Rvcl9tb2RlcywKPiA+ID4gKwkuZGVzdHJveSA9IGZz bF9kY3VfZHJtX2Nvbm5lY3Rvcl9kZXN0cm95LCB9Owo+ID4gPiArCj4gPiA+ICtpbnQgZnNsX2Rj dV9kcm1fY29ubmVjdG9yX2NyZWF0ZShzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2 LAo+ID4gPiArCQkJCSBzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCj4gPiA+ICt7Cj4gPiA+ ICsJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciA9ICZmc2xfZGV2LT5jb25uZWN0b3Iu Y29ubmVjdG9yOwo+ID4gPiArCWludCByZXQ7Cj4gPiA+ICsKPiA+ID4gKwlmc2xfZGV2LT5jb25u ZWN0b3IuZW5jb2RlciA9IGVuY29kZXI7Cj4gPiA+ICsKPiA+ID4gKwljb25uZWN0b3ItPmRpc3Bs YXlfaW5mby53aWR0aF9tbSA9IDA7Cj4gPiA+ICsJY29ubmVjdG9yLT5kaXNwbGF5X2luZm8uaGVp Z2h0X21tID0gMDsKPiA+ID4gKwo+ID4gPiArCXJldCA9IGRybV9jb25uZWN0b3JfaW5pdChmc2xf ZGV2LT5kZGV2LCBjb25uZWN0b3IsICZjb25uZWN0b3JfZnVuY3MsCj4gPiA+ICsJCQkJIERSTV9N T0RFX0NPTk5FQ1RPUl9MVkRTKTsKPiA+ID4gKwlpZiAocmV0IDwgMCkKPiA+ID4gKwkJcmV0dXJu IHJldDsKPiA+ID4gKwo+ID4gPiArCWRybV9jb25uZWN0b3JfaGVscGVyX2FkZChjb25uZWN0b3Is ICZjb25uZWN0b3JfaGVscGVyX2Z1bmNzKTsKPiA+ID4gKwlyZXQgPSBkcm1fY29ubmVjdG9yX3Jl Z2lzdGVyKGNvbm5lY3Rvcik7Cj4gPiA+ICsJaWYgKHJldCA8IDApCj4gPiA+ICsJCWdvdG8gZXJy X2NsZWFudXA7Cj4gPiA+ICsKPiA+ID4gKwlyZXQgPSBkcm1fbW9kZV9jb25uZWN0b3JfYXR0YWNo X2VuY29kZXIoY29ubmVjdG9yLCBlbmNvZGVyKTsKPiA+ID4gKwlpZiAocmV0IDwgMCkKPiA+ID4g KwkJZ290byBlcnJfc3lzZnM7Cj4gPiA+ICsKPiA+ID4gKwljb25uZWN0b3ItPmVuY29kZXIgPSBl bmNvZGVyOwo+ID4gPiArCj4gPiA+ICsJZHJtX2hlbHBlcl9jb25uZWN0b3JfZHBtcyhjb25uZWN0 b3IsIERSTV9NT0RFX0RQTVNfT0ZGKTsKPiA+ID4gKwlkcm1fb2JqZWN0X3Byb3BlcnR5X3NldF92 YWx1ZQo+ID4gPiArCQkoJmNvbm5lY3Rvci0+YmFzZSwgZnNsX2Rldi0+ZGRldi0+bW9kZV9jb25m aWcuZHBtc19wcm9wZXJ0eSwKPiA+ID4gKwkJRFJNX01PREVfRFBNU19PRkYpOwo+ID4gPiArCj4g PiA+ICsJcmV0dXJuIDA7Cj4gPiA+ICsKPiA+ID4gK2Vycl9zeXNmczoKPiA+ID4gKwlkcm1fY29u bmVjdG9yX3VucmVnaXN0ZXIoY29ubmVjdG9yKTsKPiA+ID4gK2Vycl9jbGVhbnVwOgo+ID4gPiAr CWRybV9jb25uZWN0b3JfY2xlYW51cChjb25uZWN0b3IpOwo+ID4gPiArCXJldHVybiByZXQ7Cj4g PiA+ICt9Cj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZnNsL2ZzbF9kY3VfZHJt X2NydGMuaAo+ID4gPiBiL2RyaXZlcnMvZ3B1L2RybS9mc2wvZnNsX2RjdV9kcm1fY3J0Yy5oCj4g PiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiA+IGluZGV4IDAwMDAwMDAuLmFkNTk5OTIKPiA+ ID4gLS0tIC9kZXYvbnVsbAo+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZnNsL2ZzbF9kY3Vf ZHJtX2NydGMuaAo+ID4gPiBAQCAtMCwwICsxLDQwIEBACj4gPiA+ICsvKgo+ID4gPiArICogQ29w eXJpZ2h0IDIwMTUgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4KPiA+ID4gKyAqCj4gPiA+ ICsgKiBGcmVlc2NhbGUgRENVIGRybSBkZXZpY2UgZHJpdmVyCj4gPiA+ICsgKgo+ID4gPiArICog VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vcgo+ID4gPiArbW9kaWZ5Cj4gPiA+ICsgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAo+ID4gPiArYnkKPiA+ID4gKyAq IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExp Y2Vuc2UsIG9yCj4gPiA+ICsgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgo+ ID4gPiArICovCj4gPiA+ICsKPiA+ID4gKyNpZm5kZWYgX19GU0xfRENVX0RSTV9NT0RTRVRfSF9f Cj4gPiA+ICsjZGVmaW5lIF9fRlNMX0RDVV9EUk1fTU9EU0VUX0hfXwo+ID4gPiArCj4gPiA+ICsj aW5jbHVkZSA8ZHJtL2RybVAuaD4KPiA+ID4gKyNpbmNsdWRlIDxkcm0vZHJtX2NydGMuaD4KPiA+ ID4gKwo+ID4gPiArc3RydWN0IGZzbF9kY3VfZHJtX2RldmljZTsKPiA+ID4gKwo+ID4gPiArc3Ry dWN0IGZzbF9kY3VfZHJtX2NydGMgewo+ID4gPiArCXN0cnVjdCBkcm1fY3J0YyBjcnRjOwo+ID4g PiArCWludCBkcG1zOwo+ID4gPiArfTsKPiA+ID4gKwo+ID4gPiArc3RydWN0IGZzbF9kY3VfZHJt X2VuY29kZXIgewo+ID4gPiArCXN0cnVjdCBkcm1fZW5jb2RlciBlbmNvZGVyOwo+ID4gPiArCWlu dCBkcG1zOwo+ID4gPiArfTsKPiA+ID4gKwo+ID4gPiArc3RydWN0IGZzbF9kY3VfZHJtX2Nvbm5l Y3RvciB7Cj4gPiA+ICsJc3RydWN0IGRybV9jb25uZWN0b3IgY29ubmVjdG9yOwo+ID4gPiArCXN0 cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcjsKPiA+ID4gK307Cj4gPiA+ICsKPiA+ID4gK2ludCBm c2xfZGN1X2RybV9jcnRjX2NyZWF0ZShzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2 KTsgaW50Cj4gPiA+ICtmc2xfZGN1X2RybV9lbmNvZGVyX2NyZWF0ZShzdHJ1Y3QgZnNsX2RjdV9k cm1fZGV2aWNlICpmc2xfZGV2KTsgaW50Cj4gPiA+ICtmc2xfZGN1X2RybV9jb25uZWN0b3JfY3Jl YXRlKHN0cnVjdCBmc2xfZGN1X2RybV9kZXZpY2UgKmZzbF9kZXYsCj4gPiA+ICsJCQkJIHN0cnVj dCBkcm1fZW5jb2RlciAqZW5jb2Rlcik7Cj4gPiA+ICsKPiA+ID4gKyNlbmRpZiAvKiBfX0ZTTF9E Q1VfRFJNX01PRFNFVF9IX18gKi8KPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9m c2wvZnNsX2RjdV9kcm1fZHJ2LmMKPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vZnNsL2ZzbF9kY3Vf ZHJtX2Rydi5jCj4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiA+IGluZGV4IDAwMDAwMDAu LjFiY2E0NWEKPiA+ID4gLS0tIC9kZXYvbnVsbAo+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v ZnNsL2ZzbF9kY3VfZHJtX2Rydi5jCj4gPiA+IEBAIC0wLDAgKzEsMzIzIEBACj4gPiA+ICsvKgo+ ID4gPiArICogQ29weXJpZ2h0IDIwMTUgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4KPiA+ ID4gKyAqCj4gPiA+ICsgKiBGcmVlc2NhbGUgRENVIGRybSBkZXZpY2UgZHJpdmVyCj4gPiA+ICsg Kgo+ID4gPiArICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vcgo+ID4gPiArbW9kaWZ5Cj4gPiA+ICsgKiBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAo+ID4gPiAr YnkKPiA+ID4gKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDIgb2YgdGhlIExpY2Vuc2UsIG9yCj4gPiA+ICsgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgo+ID4gPiArICovCj4gPiA+ICsKPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9jbGsu aD4KPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9pby5oPgo+ID4gPiArI2luY2x1ZGUgPGxpbnV4L21t Lmg+Cj4gPiA+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4gPiA+ICsjaW5jbHVkZSA8bGlu dXgvb2ZfcGxhdGZvcm0uaD4KPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2Uu aD4KPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9wbS5oPgo+ID4gPiArI2luY2x1ZGUgPGxpbnV4L3Bt X3J1bnRpbWUuaD4KPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9yZWdtYXAuaD4KPiA+ID4gKyNpbmNs dWRlIDxsaW51eC9zbGFiLmg+Cj4gPiA+ICsKPiA+ID4gKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgo+ ID4gPiArI2luY2x1ZGUgImZzbF9kY3VfZHJtX2Rydi5oIgo+ID4gPiArI2luY2x1ZGUgImZzbF9k Y3VfZHJtX2ttcy5oIgo+ID4gPiArCj4gPiA+ICtzdGF0aWMgaW50IGZzbF9kY3VfdW5sb2FkKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpIHsKPiA+ID4gKwlkcm1fbW9kZV9jb25maWdfY2xlYW51cChk ZXYpOwo+ID4gPiArCWRybV92YmxhbmtfY2xlYW51cChkZXYpOwo+ID4gPiArCWRybV9pcnFfdW5p bnN0YWxsKGRldik7Cj4gPiA+ICsKPiA+ID4gKwlkZXYtPmRldl9wcml2YXRlID0gTlVMTDsKPiA+ ID4gKwo+ID4gPiArCXJldHVybiAwOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0aWMgc3Ry dWN0IHJlZ21hcF9jb25maWcgZnNsX2RjdV9yZWdtYXBfY29uZmlnID0gewo+ID4gPiArCS5yZWdf Yml0cyA9IDMyLAo+ID4gPiArCS5yZWdfc3RyaWRlID0gNCwKPiA+ID4gKwkudmFsX2JpdHMgPSAz MiwKPiA+ID4gK307Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBpbnQgZnNsX2RjdV9ieXBhc3NfdGNv bihzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2LAo+ID4gPiArCQkJICAgICAgIHN0 cnVjdCBkZXZpY2Vfbm9kZSAqbnApCj4gPiA+ICt7Cj4gPiA+ICsJc3RydWN0IGRldmljZV9ub2Rl ICp0Y29uX25wOwo+ID4gPiArCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXY7Cj4gPiA+ICsJ c3RydWN0IGNsayAqdGNvbl9jbGs7Cj4gPiA+ICsJc3RydWN0IHJlc291cmNlICpyZXM7Cj4gPiA+ ICsJdm9pZCBfX2lvbWVtICpiYXNlOwo+ID4gPiArCj4gPiA+ICsJdGNvbl9ucCA9IG9mX3BhcnNl X3BoYW5kbGUobnAsICJ0Y29uLWNvbnRyb2xsZXIiLCAwKTsKPiA+ID4gKwlpZiAoIXRjb25fbnAp Cj4gPiA+ICsJCXJldHVybiAtRUlOVkFMOwo+ID4gPiArCj4gPiA+ICsJcGRldiA9IG9mX2ZpbmRf ZGV2aWNlX2J5X25vZGUodGNvbl9ucCk7Cj4gPiA+ICsJaWYgKCFwZGV2KQo+ID4gPiArCQlyZXR1 cm4gLUVJTlZBTDsKPiA+ID4gKwo+ID4gPiArCXRjb25fY2xrID0gZGV2bV9jbGtfZ2V0KCZwZGV2 LT5kZXYsICJ0Y29uIik7Cj4gPiA+ICsJaWYgKElTX0VSUih0Y29uX2NsaykpCj4gPiA+ICsJCXJl dHVybiBQVFJfRVJSKHRjb25fY2xrKTsKPiA+ID4gKwljbGtfcHJlcGFyZV9lbmFibGUodGNvbl9j bGspOwo+ID4gPiArCj4gPiA+ICsJcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElP UkVTT1VSQ0VfTUVNLCAwKTsKPiA+ID4gKwlpZiAoIXJlcykKPiA+ID4gKwkJcmV0dXJuIC1FTk9E RVY7Cj4gPiA+ICsKPiA+ID4gKwliYXNlID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKCZwZGV2LT5k ZXYsIHJlcyk7Cj4gPiA+ICsJaWYgKElTX0VSUihiYXNlKSkKPiA+ID4gKwkJcmV0dXJuIFBUUl9F UlIoYmFzZSk7Cj4gPiA+ICsKPiA+ID4gKwlmc2xfZGV2LT50Y29uX3JlZ21hcCA9IGRldm1fcmVn bWFwX2luaXRfbW1pb19jbGsoJnBkZXYtPmRldiwKPiA+ID4gKwkJCSJ0Y29uIiwgYmFzZSwgJmZz bF9kY3VfcmVnbWFwX2NvbmZpZyk7Cj4gPiA+ICsJaWYgKElTX0VSUihmc2xfZGV2LT50Y29uX3Jl Z21hcCkpIHsKPiA+ID4gKwkJZGV2X2VycigmcGRldi0+ZGV2LCAicmVnbWFwIGluaXQgZmFpbGVk XG4iKTsKPiA+ID4gKwkJcmV0dXJuIFBUUl9FUlIoZnNsX2Rldi0+dGNvbl9yZWdtYXApOwo+ID4g PiArCX0KPiA+ID4gKwo+ID4gPiArCXJlZ21hcF93cml0ZShmc2xfZGV2LT50Y29uX3JlZ21hcCwg VENPTl9DVFJMMSwgVENPTl9CWVBBU1NfRU5BQkxFKTsKPiA+ID4gKwlyZXR1cm4gMDsKPiA+ID4g K30KPiA+ID4gKwo+ID4gPiArc3RhdGljIGludCBmc2xfZGN1X3NjZmdfY29uZmlnKHN0cnVjdCBm c2xfZGN1X2RybV9kZXZpY2UgKmZzbF9kZXYsCj4gPiA+ICsJCQkgICAgICAgc3RydWN0IGRldmlj ZV9ub2RlICpucCkKPiA+ID4gK3sKPiA+ID4gKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKnNjZmdfbnA7 Cj4gPiA+ICsJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldjsKPiA+ID4gKwlzdHJ1Y3QgcmVz b3VyY2UgKnJlczsKPiA+ID4gKwl2b2lkIF9faW9tZW0gKmJhc2U7Cj4gPiA+ICsKPiA+ID4gKwlz Y2ZnX25wID0gb2ZfcGFyc2VfcGhhbmRsZShucCwgInNjZmctY29udHJvbGxlciIsIDApOwo+ID4g PiArCWlmICghc2NmZ19ucCkKPiA+ID4gKwkJcmV0dXJuIDA7Cj4gPiA+ICsKPiA+ID4gKwlwZGV2 ID0gb2ZfZmluZF9kZXZpY2VfYnlfbm9kZShzY2ZnX25wKTsKPiA+ID4gKwlpZiAoIXBkZXYpCj4g PiA+ICsJCXJldHVybiAtRUlOVkFMOwo+ID4gPiArCj4gPiA+ICsJcmVzID0gcGxhdGZvcm1fZ2V0 X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0VfTUVNLCAwKTsKPiA+ID4gKwlpZiAoIXJlcykKPiA+ ID4gKwkJcmV0dXJuIC1FTk9ERVY7Cj4gPiA+ICsKPiA+ID4gKwliYXNlID0gZGV2bV9pb3JlbWFw X3Jlc291cmNlKCZwZGV2LT5kZXYsIHJlcyk7Cj4gPiA+ICsJaWYgKElTX0VSUihiYXNlKSkKPiA+ ID4gKwkJcmV0dXJuIFBUUl9FUlIoYmFzZSk7Cj4gPiA+ICsKPiA+ID4gKwlmc2xfZGV2LT5zY2Zn X3JlZ21hcCA9IGRldm1fcmVnbWFwX2luaXRfbW1pb19jbGsoJnBkZXYtPmRldiwKPiA+ID4gKwkJ CU5VTEwsIGJhc2UsICZmc2xfZGN1X3JlZ21hcF9jb25maWcpOwo+ID4gPiArCWlmIChJU19FUlIo ZnNsX2Rldi0+c2NmZ19yZWdtYXApKSB7Cj4gPiA+ICsJCWRldl9lcnIoJnBkZXYtPmRldiwgInJl Z21hcCBpbml0IGZhaWxlZFxuIik7Cj4gPiA+ICsJCXJldHVybiBQVFJfRVJSKGZzbF9kZXYtPnNj ZmdfcmVnbWFwKTsKPiA+ID4gKwl9Cj4gPiA+ICsKPiA+ID4gKwlyZWdtYXBfd3JpdGUoZnNsX2Rl di0+c2NmZ19yZWdtYXAsIDB4MjgsIDB4ODAwMDAwMDApOwo+ID4gPiArCj4gPiA+ICsJcmV0dXJu IDA7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBpbnQgZnNsX2RjdV9sb2FkKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpCj4gPiA+ICt7Cj4gPiA+ICsJ c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IGRldi0+cGxhdGZvcm1kZXY7Cj4gPiA+ICsJ c3RydWN0IGZzbF9kY3VfZHJtX2RldmljZSAqZnNsX2RldjsKPiA+ID4gKwlzdHJ1Y3QgcmVzb3Vy Y2UgKnJlczsKPiA+ID4gKwl2b2lkIF9faW9tZW0gKmJhc2U7Cj4gPiA+ICsJaW50IHJldDsKPiA+ ID4gKwo+ID4gPiArCWZzbF9kZXYgPSBkZXZtX2t6YWxsb2MoJnBkZXYtPmRldiwgc2l6ZW9mKCpm c2xfZGV2KSwgR0ZQX0tFUk5FTCk7Cj4gPiA+ICsJaWYgKCFmc2xfZGV2KQo+ID4gPiArCQlyZXR1 cm4gLUVOT01FTTsKPiA+ID4gKwo+ID4gPiArCWZzbF9kZXYtPmRldiA9ICZwZGV2LT5kZXY7Cj4g PiA+ICsJZnNsX2Rldi0+ZGRldiA9IGRldjsKPiA+ID4gKwlkZXYtPmRldl9wcml2YXRlID0gZnNs X2RldjsKPiA+ID4gKwo+ID4gPiArCXJlcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2LCBJ T1JFU09VUkNFX01FTSwgMCk7Cj4gPiA+ICsJYmFzZSA9IGRldm1faW9yZW1hcF9yZXNvdXJjZSgm cGRldi0+ZGV2LCByZXMpOwo+ID4gPiArCWlmIChJU19FUlIoYmFzZSkpIHsKPiA+ID4gKwkJcmV0 ID0gUFRSX0VSUihiYXNlKTsKPiA+ID4gKwkJcmV0dXJuIHJldDsKPiA+ID4gKwl9Cj4gPiA+ICsK PiA+ID4gKwlmc2xfZGV2LT5yZWdtYXAgPSBkZXZtX3JlZ21hcF9pbml0X21taW8oJnBkZXYtPmRl diwKPiA+ID4gKwkJCWJhc2UsICZmc2xfZGN1X3JlZ21hcF9jb25maWcpOwo+ID4gPiArCWlmIChJ U19FUlIoZnNsX2Rldi0+cmVnbWFwKSkgewo+ID4gPiArCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJy ZWdtYXAgaW5pdCBmYWlsZWRcbiIpOwo+ID4gPiArCQlyZXR1cm4gUFRSX0VSUihmc2xfZGV2LT5y ZWdtYXApOwo+ID4gPiArCX0KPiA+ID4gKwo+ID4gPiArCXJldCA9IGZzbF9kY3VfZHJtX21vZGVz ZXRfaW5pdChmc2xfZGV2KTsKPiA+ID4gKwlpZiAocmV0IDwgMCkgewo+ID4gPiArCQlkZXZfZXJy KCZwZGV2LT5kZXYsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBtb2RlIHNldHRpbmdcbiIpOwo+ID4g PiArCQlyZXR1cm4gcmV0Owo+ID4gPiArCX0KPiA+ID4gKwo+ID4gPiArCXJldCA9IGRybV92Ymxh bmtfaW5pdChkZXYsIDEpOwo+ID4gPiArCWlmIChyZXQgPCAwKSB7Cj4gPiA+ICsJCWRldl9lcnIo JnBkZXYtPmRldiwgImZhaWxlZCB0byBpbml0aWFsaXplIHZibGFua1xuIik7Cj4gPiA+ICsJCWdv dG8gZG9uZTsKPiA+ID4gKwl9Cj4gPiA+ICsKPiA+ID4gKwlyZXQgPSBkcm1faXJxX2luc3RhbGwo ZGV2LCBwbGF0Zm9ybV9nZXRfaXJxKGRldi0+cGxhdGZvcm1kZXYsIDApKTsKPiA+ID4gKwlpZiAo cmV0IDwgMCkgewo+ID4gPiArCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJmYWlsZWQgdG8gaW5zdGFs bCBJUlEgaGFuZGxlclxuIik7Cj4gPiA+ICsJCWdvdG8gZG9uZTsKPiA+ID4gKwl9Cj4gPiA+ICsK PiA+ID4gKwkvKiBQdXQgVENPTiBpbiBieXBhc3MgbW9kZSwgc28gdGhlIGlucHV0IHNpZ25hbHMg ZnJvbSBEQ1UgYXJlCj4gPiBwYXNzZWQKPiA+ID4gKwkgKiB0aHJvdWdoIFRDT04gdW5jaGFuZ2Vk ICovCj4gPiA+ICsJZnNsX2RjdV9ieXBhc3NfdGNvbihmc2xfZGV2LCBwZGV2LT5kZXYub2Zfbm9k ZSk7Cj4gPiA+ICsJZnNsX2RjdV9zY2ZnX2NvbmZpZyhmc2xfZGV2LCBwZGV2LT5kZXYub2Zfbm9k ZSk7Cj4gPiA+ICsKPiA+ID4gKwlmc2xfZGV2LT5jbGsgPSBkZXZtX2Nsa19nZXQoJnBkZXYtPmRl diwgImRjZmIiKTsKPiA+ID4gKwlpZiAoSVNfRVJSKGZzbF9kZXYtPmNsaykpIHsKPiA+ID4gKwkJ cmV0ID0gUFRSX0VSUihmc2xfZGV2LT5jbGspOwo+ID4gPiArCQlkZXZfZXJyKCZwZGV2LT5kZXYs ICJjb3VsZCBub3QgZ2V0IGNsb2NrXG4iKTsKPiA+ID4gKwkJcmV0dXJuIHJldDsKPiA+ID4gKwl9 Cj4gPiA+ICsJY2xrX3ByZXBhcmVfZW5hYmxlKGZzbF9kZXYtPmNsayk7Cj4gPiA+ICsKPiA+ID4g KwlkZXZfc2V0X2RydmRhdGEoZGV2LT5kZXYsIGZzbF9kZXYpOwo+ID4gPiArCj4gPiA+ICsJZnNs X2RjdV9mYmRldl9pbml0KGRldik7Cj4gPiA+ICsKPiA+ID4gKwlyZXR1cm4gMDsKPiA+ID4gK2Rv bmU6Cj4gPiA+ICsJaWYgKHJldCkKPiA+ID4gKwkJZnNsX2RjdV91bmxvYWQoZGV2KTsKPiA+ID4g Kwo+ID4gPiArCXJldHVybiByZXQ7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyB2b2lk IGZzbF9kY3VfZHJtX3ByZWNsb3NlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdAo+ID4g PiArZHJtX2ZpbGUgKmZpbGUpIHsKPiA+ID4gKwk7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3N0 YXRpYyBpcnFyZXR1cm5fdCBmc2xfZGN1X2RybV9pcnEoaW50IGlycSwgdm9pZCAqYXJnKSB7Cj4g PiA+ICsJcmV0dXJuIElSUV9IQU5ETEVEOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0aWMg aW50IGZzbF9kY3VfZHJtX2VuYWJsZV92Ymxhbmsoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50 Cj4gPiA+ICtjcnRjKSB7Cj4gPiA+ICsJcmV0dXJuIDA7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4g K3N0YXRpYyB2b2lkIGZzbF9kY3VfZHJtX2Rpc2FibGVfdmJsYW5rKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIGludAo+ID4gPiArY3J0Yykgewo+ID4gPiArCTsKPiA+ID4gK30KPiA+ID4gKwo+ID4g PiArc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZnNsX2RjdV9kcm1fZm9wcyA9 IHsKPiA+ID4gKwkub3duZXIJCT0gVEhJU19NT0RVTEUsCj4gPiA+ICsJLm9wZW4JCT0gZHJtX29w ZW4sCj4gPiA+ICsJLnJlbGVhc2UJPSBkcm1fcmVsZWFzZSwKPiA+ID4gKwkudW5sb2NrZWRfaW9j dGwJPSBkcm1faW9jdGwsCj4gPiA+ICsjaWZkZWYgQ09ORklHX0NPTVBBVAo+ID4gPiArCS5jb21w YXRfaW9jdGwJPSBkcm1fY29tcGF0X2lvY3RsLAo+ID4gPiArI2VuZGlmCj4gPiA+ICsJLnBvbGwJ CT0gZHJtX3BvbGwsCj4gPiA+ICsJLnJlYWQJCT0gZHJtX3JlYWQsCj4gPiA+ICsJLmxsc2VlawkJ PSBub19sbHNlZWssCj4gPiA+ICsJLm1tYXAJCT0gZHJtX2dlbV9jbWFfbW1hcCwKPiA+ID4gK307 Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBzdHJ1Y3QgZHJtX2RyaXZlciBmc2xfZGN1X2RybV9kcml2 ZXIgPSB7Cj4gPiA+ICsJLmRyaXZlcl9mZWF0dXJlcwk9IERSSVZFUl9IQVZFX0lSUSB8IERSSVZF Ul9HRU0gfCBEUklWRVJfTU9ERVNFVAo+ID4gPiArCQkJCXwgRFJJVkVSX1BSSU1FLAo+ID4gPiAr CS5sb2FkCQkJPSBmc2xfZGN1X2xvYWQsCj4gPiA+ICsJLnVubG9hZAkJCT0gZnNsX2RjdV91bmxv YWQsCj4gPiA+ICsJLnByZWNsb3NlCQk9IGZzbF9kY3VfZHJtX3ByZWNsb3NlLAo+ID4gPiArCS5p cnFfaGFuZGxlcgkJPSBmc2xfZGN1X2RybV9pcnEsCj4gPiA+ICsJLmdldF92YmxhbmtfY291bnRl cgk9IGRybV92YmxhbmtfY291bnQsCj4gPiA+ICsJLmVuYWJsZV92YmxhbmsJCT0gZnNsX2RjdV9k cm1fZW5hYmxlX3ZibGFuaywKPiA+ID4gKwkuZGlzYWJsZV92YmxhbmsJCT0gZnNsX2RjdV9kcm1f ZGlzYWJsZV92YmxhbmssCj4gPiA+ICsJLmdlbV9mcmVlX29iamVjdAk9IGRybV9nZW1fY21hX2Zy ZWVfb2JqZWN0LAo+ID4gPiArCS5nZW1fdm1fb3BzCQk9ICZkcm1fZ2VtX2NtYV92bV9vcHMsCj4g PiA+ICsJLnByaW1lX2hhbmRsZV90b19mZAk9IGRybV9nZW1fcHJpbWVfaGFuZGxlX3RvX2ZkLAo+ ID4gPiArCS5wcmltZV9mZF90b19oYW5kbGUJPSBkcm1fZ2VtX3ByaW1lX2ZkX3RvX2hhbmRsZSwK PiA+ID4gKwkuZ2VtX3ByaW1lX2ltcG9ydAk9IGRybV9nZW1fcHJpbWVfaW1wb3J0LAo+ID4gPiAr CS5nZW1fcHJpbWVfZXhwb3J0CT0gZHJtX2dlbV9wcmltZV9leHBvcnQsCj4gPiA+ICsJLmdlbV9w cmltZV9nZXRfc2dfdGFibGUJPSBkcm1fZ2VtX2NtYV9wcmltZV9nZXRfc2dfdGFibGUsCj4gPiA+ ICsJLmdlbV9wcmltZV9pbXBvcnRfc2dfdGFibGUgPSBkcm1fZ2VtX2NtYV9wcmltZV9pbXBvcnRf c2dfdGFibGUsCj4gPiA+ICsJLmdlbV9wcmltZV92bWFwCQk9IGRybV9nZW1fY21hX3ByaW1lX3Zt YXAsCj4gPiA+ICsJLmdlbV9wcmltZV92dW5tYXAJPSBkcm1fZ2VtX2NtYV9wcmltZV92dW5tYXAs Cj4gPiA+ICsJLmdlbV9wcmltZV9tbWFwCQk9IGRybV9nZW1fY21hX3ByaW1lX21tYXAsCj4gPiA+ ICsJLmR1bWJfY3JlYXRlCQk9IGRybV9nZW1fY21hX2R1bWJfY3JlYXRlLAo+ID4gPiArCS5kdW1i X21hcF9vZmZzZXQJPSBkcm1fZ2VtX2NtYV9kdW1iX21hcF9vZmZzZXQsCj4gPiA+ICsJLmR1bWJf ZGVzdHJveQkJPSBkcm1fZ2VtX2R1bWJfZGVzdHJveSwKPiA+ID4gKwkuZm9wcwkJCT0gJmZzbF9k Y3VfZHJtX2ZvcHMsCj4gPiA+ICsJLm5hbWUJCQk9ICJmc2wtZGN1LWRybSIsCj4gPiA+ICsJLmRl c2MJCQk9ICJGcmVlc2NhbGUgRENVIERSTSIsCj4gPiA+ICsJLmRhdGUJCQk9ICIyMDE1MDIxMyIs Cj4gPiA+ICsJLm1ham9yCQkJPSAxLAo+ID4gPiArCS5taW5vcgkJCT0gMCwKPiA+ID4gK307Cj4g PiA+ICsKPiA+ID4gKyNpZmRlZiBDT05GSUdfUE1fU0xFRVAKPiA+ID4gK3N0YXRpYyBpbnQgZnNs X2RjdV9kcm1fcG1fc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpIHsKPiA+ID4gKwlzdHJ1Y3Qg ZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2ID0gZGV2X2dldF9kcnZkYXRhKGRldik7Cj4gPiA+ ICsKPiA+ID4gKwlkcm1fa21zX2hlbHBlcl9wb2xsX2Rpc2FibGUoZnNsX2Rldi0+ZGRldik7Cj4g PiA+ICsJZnNsX2RjdV9kcm1fY3J0Y19zdXNwZW5kKCZmc2xfZGV2LT5jcnRjKTsKPiA+ID4gKwo+ ID4gPiArCXJldHVybiAwOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0aWMgaW50IGZzbF9k Y3VfZHJtX3BtX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpIHsKPiA+ID4gKwlzdHJ1Y3QgZnNs X2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2ID0gZGV2X2dldF9kcnZkYXRhKGRldik7Cj4gPiA+ICsK PiA+ID4gKwlkcm1fbW9kZXNldF9sb2NrX2FsbChmc2xfZGV2LT5kZGV2KTsKPiA+ID4gKwlmc2xf ZGN1X2RybV9jcnRjX3Jlc3VtZSgmZnNsX2Rldi0+Y3J0Yyk7Cj4gPiA+ICsJZHJtX21vZGVzZXRf dW5sb2NrX2FsbChmc2xfZGV2LT5kZGV2KTsKPiA+ID4gKwo+ID4gPiArCWRybV9rbXNfaGVscGVy X3BvbGxfZW5hYmxlKGZzbF9kZXYtPmRkZXYpOwo+ID4gPiArCXJldHVybiAwOwo+ID4gPiArfQo+ ID4gPiArI2VuZGlmCj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2X3BtX29w cyBmc2xfZGN1X2RybV9wbV9vcHMgPSB7Cj4gPiA+ICsJU0VUX1NZU1RFTV9TTEVFUF9QTV9PUFMo ZnNsX2RjdV9kcm1fcG1fc3VzcGVuZCwKPiA+ID4gK2ZzbF9kY3VfZHJtX3BtX3Jlc3VtZSkgfTsK PiA+ID4gKwo+ID4gPiArc3RhdGljIGludCBmc2xfZGN1X2RybV9wcm9iZShzdHJ1Y3QgcGxhdGZv cm1fZGV2aWNlICpwZGV2KSB7Cj4gPiA+ICsJcmV0dXJuIGRybV9wbGF0Zm9ybV9pbml0KCZmc2xf ZGN1X2RybV9kcml2ZXIsIHBkZXYpOyB9Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBpbnQgZnNsX2Rj dV9kcm1fcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpIHsKPiA+ID4gKwlzdHJ1 Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2ID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRl dik7Cj4gPiA+ICsKPiA+ID4gKwlkcm1fcHV0X2Rldihmc2xfZGV2LT5kZGV2KTsKPiA+ID4gKwo+ ID4gPiArCXJldHVybiAwOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0aWMgc3RydWN0IG9m X2RldmljZV9pZCBmc2xfZGN1X29mX21hdGNoW10gPSB7Cj4gPiA+ICsJCXsgLmNvbXBhdGlibGUg PSAiZnNsLGxzMTAyMWEtZGNmYiIsIH0sCj4gPiA+ICsJCXsgfSwKPiA+ID4gK307Cj4gPiA+ICtN T0RVTEVfREVWSUNFX1RBQkxFKG9mLCBmc2xfZGN1X29mX21hdGNoKTsKPiA+ID4gKwo+ID4gPiAr c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZnNsX2RjdV9kcm1fcGxhdGZvcm1fZHJpdmVy ID0gewo+ID4gPiArCS5wcm9iZQkJPSBmc2xfZGN1X2RybV9wcm9iZSwKPiA+ID4gKwkucmVtb3Zl CQk9IGZzbF9kY3VfZHJtX3JlbW92ZSwKPiA+ID4gKwkuZHJpdmVyCQk9IHsKPiA+ID4gKwkJLm93 bmVyCT0gVEhJU19NT0RVTEUsCj4gPiA+ICsJCS5uYW1lCT0gImZzbCxsczEwMjFhLWRjZmIiLAo+ ID4gPiArCQkucG0JPSAmZnNsX2RjdV9kcm1fcG1fb3BzLAo+ID4gPiArCQkub2ZfbWF0Y2hfdGFi bGUgPSBmc2xfZGN1X29mX21hdGNoLAo+ID4gPiArCX0sCj4gPiA+ICt9Owo+ID4gPiArCj4gPiA+ ICttb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGZzbF9kY3VfZHJtX3BsYXRmb3JtX2RyaXZlcik7Cj4g PiA+ICsKPiA+ID4gK01PRFVMRV9BTElBUygicGxhdGZvcm06ZnNsLWRjdS1kcm0iKTsKPiA+ID4g K01PRFVMRV9ERVNDUklQVElPTigiRnJlZXNjYWxlIERDVSBEUk0gRHJpdmVyIik7Cj4gPiA+ICtN T0RVTEVfTElDRU5TRSgiR1BMIik7Cj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v ZnNsL2ZzbF9kY3VfZHJtX2Rydi5oCj4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL2ZzbC9mc2xfZGN1 X2RybV9kcnYuaAo+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4gPiBpbmRleCAwMDAwMDAw Li44ZGM3YzEwCj4gPiA+IC0tLSAvZGV2L251bGwKPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2ZzbC9mc2xfZGN1X2RybV9kcnYuaAo+ID4gPiBAQCAtMCwwICsxLDE2NyBAQAo+ID4gPiArLyoK PiA+ID4gKyAqIENvcHlyaWdodCAyMDE1IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuCj4g PiA+ICsgKgo+ID4gPiArICogRnJlZXNjYWxlIERDVSBkcm0gZGV2aWNlIGRyaXZlcgo+ID4gPiAr ICoKPiA+ID4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IKPiA+ID4gK21vZGlmeQo+ID4gPiArICogaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKPiA+ID4g K2J5Cj4gPiA+ICsgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAyIG9mIHRoZSBMaWNlbnNlLCBvcgo+ID4gPiArICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KPiA+ID4gKyAqLwo+ID4gPiArCj4gPiA+ICsjaWZuZGVmIF9fRlNMX0RDVV9E Uk1fRFJWX0hfXwo+ID4gPiArI2RlZmluZSBfX0ZTTF9EQ1VfRFJNX0RSVl9IX18KPiA+ID4gKwo+ ID4gPiArI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgo+ID4gPiArI2luY2x1ZGUgPGxpbnV4L3Nw aW5sb2NrLmg+Cj4gPiA+ICsjaW5jbHVkZSA8c3RkZGVmLmg+Cj4gPiA+ICsjaW5jbHVkZSA8ZHJt L2RybS5oPgo+ID4gPiArI2luY2x1ZGUgPGRybS9kcm1QLmg+Cj4gPiA+ICsjaW5jbHVkZSA8ZHJt L2RybV9mYl9oZWxwZXIuaD4KPiA+ID4gKyNpbmNsdWRlIDxkcm0vZHJtX2NydGNfaGVscGVyLmg+ Cj4gPiA+ICsjaW5jbHVkZSA8ZHJtL2RybV9nZW1fY21hX2hlbHBlci5oPgo+ID4gPiArI2luY2x1 ZGUgPGRybS9kcm1fZmJfY21hX2hlbHBlci5oPgo+ID4gPiArCj4gPiA+ICsjaW5jbHVkZSAiZnNs X2RjdV9kcm1fY3J0Yy5oIgo+ID4gPiArI2RlZmluZSBEUklWRVJfTkFNRQkJCSJmc2wtZGN1LWZi Igo+ID4gPiArCj4gPiA+ICsjZGVmaW5lIERDVV9EQ1VfTU9ERQkJCTB4MDAxMAo+ID4gPiArI2Rl ZmluZSBEQ1VfTU9ERV9CTEVORF9JVEVSKHgpCQkoKHgpIDw8IDIwKQo+ID4gPiArI2RlZmluZSBE Q1VfTU9ERV9SQVNURVJfRU4JCUJJVCgxNCkKPiA+ID4gKyNkZWZpbmUgRENVX01PREVfRENVX01P REUoeCkJCSh4KQo+ID4gPiArI2RlZmluZSBEQ1VfTU9ERV9EQ1VfTU9ERV9NQVNLCQkweDAzCj4g PiA+ICsjZGVmaW5lIERDVV9NT0RFX09GRgkJCTAKPiA+ID4gKyNkZWZpbmUgRENVX01PREVfTk9S TUFMCQkJMQo+ID4gPiArI2RlZmluZSBEQ1VfTU9ERV9URVNUCQkJMgo+ID4gPiArI2RlZmluZSBE Q1VfTU9ERV9DT0xPUkJBUgkJMwo+ID4gPiArCj4gPiA+ICsjZGVmaW5lIERDVV9CR05ECQkJMHgw MDE0Cj4gPiA+ICsjZGVmaW5lIERDVV9CR05EX1IoeCkJCQkoKHgpIDw8IDE2KQo+ID4gPiArI2Rl ZmluZSBEQ1VfQkdORF9HKHgpCQkJKCh4KSA8PCA4KQo+ID4gPiArI2RlZmluZSBEQ1VfQkdORF9C KHgpCQkJKHgpCj4gPiA+ICsKPiA+ID4gKyNkZWZpbmUgRENVX0RJU1BfU0laRQkJCTB4MDAxOAo+ ID4gPiArI2RlZmluZSBEQ1VfRElTUF9TSVpFX0RFTFRBX1koeCkJKCh4KSA8PCAxNikKPiA+ID4g Ky8qUmVnaXNpdGVyIHZhbHVlIDEvMTYgb2YgaG9yaXpvbnRhbCByZXNvbHV0aW9uKi8KPiA+ID4g KyNkZWZpbmUgRENVX0RJU1BfU0laRV9ERUxUQV9YKHgpCSgoeCkgPj4gNCkKPiA+ID4gKwo+ID4g PiArI2RlZmluZSBEQ1VfSFNZTl9QQVJBCQkJMHgwMDFjCj4gPiA+ICsjZGVmaW5lIERDVV9IU1lO X1BBUkFfQlAoeCkJCSgoeCkgPDwgMjIpCj4gPiA+ICsjZGVmaW5lIERDVV9IU1lOX1BBUkFfUFco eCkJCSgoeCkgPDwgMTEpCj4gPiA+ICsjZGVmaW5lIERDVV9IU1lOX1BBUkFfRlAoeCkJCSh4KQo+ ID4gPiArCj4gPiA+ICsjZGVmaW5lIERDVV9WU1lOX1BBUkEJCQkweDAwMjAKPiA+ID4gKyNkZWZp bmUgRENVX1ZTWU5fUEFSQV9CUCh4KQkJKCh4KSA8PCAyMikKPiA+ID4gKyNkZWZpbmUgRENVX1ZT WU5fUEFSQV9QVyh4KQkJKCh4KSA8PCAxMSkKPiA+ID4gKyNkZWZpbmUgRENVX1ZTWU5fUEFSQV9G UCh4KQkJKHgpCj4gPiA+ICsKPiA+ID4gKyNkZWZpbmUgRENVX1NZTl9QT0wJCQkweDAwMjQKPiA+ ID4gKyNkZWZpbmUgRENVX1NZTl9QT0xfSU5WX1BYQ0tfRkFMTAkoMCA8PCA2KQo+ID4gPiArI2Rl ZmluZSBEQ1VfU1lOX1BPTF9ORUdfUkVNQUlOCQkoMCA8PCA1KQo+ID4gPiArI2RlZmluZSBEQ1Vf U1lOX1BPTF9JTlZfVlNfTE9XCQlCSVQoMSkKPiA+ID4gKyNkZWZpbmUgRENVX1NZTl9QT0xfSU5W X0hTX0xPVwkJKDEpCj4gPiA+ICsKPiA+ID4gKyNkZWZpbmUgRENVX1RIUkVTSE9MRAkJCTB4MDAy OAo+ID4gPiArI2RlZmluZSBEQ1VfVEhSRVNIT0xEX0xTX0JGX1ZTKHgpCSgoeCkgPDwgMTYpCj4g PiA+ICsjZGVmaW5lIERDVV9USFJFU0hPTERfT1VUX0JVRl9ISUdIKHgpCSgoeCkgPDwgOCkKPiA+ ID4gKyNkZWZpbmUgRENVX1RIUkVTSE9MRF9PVVRfQlVGX0xPVyh4KQkoeCkKPiA+ID4gKyNkZWZp bmUgQkZfVlNfVkFMCQkJMHgwMwo+ID4gPiArI2RlZmluZSBCVUZfTUFYX1ZBTAkJCTB4NzgKPiA+ ID4gKyNkZWZpbmUgQlVGX01JTl9WQUwJCQkweDBhCj4gPiA+ICsKPiA+ID4gKyNkZWZpbmUgRENV X0lOVF9TVEFUVVMJCQkweDAwMkMKPiA+ID4gKyNkZWZpbmUgRENVX0lOVF9TVEFUVVNfVU5EUlVO CQlCSVQoMSkKPiA+ID4gKwo+ID4gPiArI2RlZmluZSBEQ1VfSU5UX01BU0sJCQkweDAwMzAKPiA+ ID4gKyNkZWZpbmUgRENVX0lOVF9NQVNLX1VORFJVTgkJQklUKDEpCj4gPiA+ICsjZGVmaW5lIERD VV9JTlRfTUFTS19WQkxBTksJCUJJVCgzKQo+ID4gPiArCj4gPiA+ICsjZGVmaW5lIERDVV9ESVZf UkFUSU8JCQkweDAwNTQKPiA+ID4gKwo+ID4gPiArI2RlZmluZSBEQ1VfVVBEQVRFX01PREUJCQkw eDAwY2MKPiA+ID4gKyNkZWZpbmUgRENVX1VQREFURV9NT0RFX01PREUJCUJJVCgzMSkKPiA+ID4g KyNkZWZpbmUgRENVX1VQREFURV9NT0RFX1JFQURSRUcJCUJJVCgzMCkKPiA+ID4gKwo+ID4gPiAr I2RlZmluZSBEQ1VfRENGQl9NQVgJCQkweDMwMAo+ID4gPiArCj4gPiA+ICsjZGVmaW5lIERDVV9D VFJMREVTQ0xOXzEoeCkJCSgweDIwMCArICh4KSAqIDB4NDApCj4gPiA+ICsjZGVmaW5lIERDVV9D VFJMREVTQ0xOXzFfSEVJR0hUKHgpCSgoeCkgPDwgMTYpCj4gPiA+ICsjZGVmaW5lIERDVV9DVFJM REVTQ0xOXzFfV0lEVEgoeCkJKHgpCj4gPiA+ICsKPiA+ID4gKyNkZWZpbmUgRENVX0NUUkxERVND TE5fMih4KQkJKDB4MjA0ICsgKHgpICogMHg0MCkKPiA+ID4gKyNkZWZpbmUgRENVX0NUUkxERVND TE5fMl9QT1NZKHgpCSgoeCkgPDwgMTYpCj4gPiA+ICsjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzJf UE9TWCh4KQkoeCkKPiA+ID4gKwo+ID4gPiArI2RlZmluZSBEQ1VfQ1RSTERFU0NMTl8zKHgpCQko MHgyMDggKyAoeCkgKiAweDQwKQo+ID4gPiArCj4gPiA+ICsjZGVmaW5lIERDVV9DVFJMREVTQ0xO XzQoeCkJCSgweDIwYyArICh4KSAqIDB4NDApCj4gPiA+ICsjZGVmaW5lIERDVV9DVFJMREVTQ0xO XzRfRU4JCUJJVCgzMSkKPiA+ID4gKyNkZWZpbmUgRENVX0NUUkxERVNDTE5fNF9USUxFX0VOCUJJ VCgzMCkKPiA+ID4gKyNkZWZpbmUgRENVX0NUUkxERVNDTE5fNF9EQVRBX1NFTF9DTFVUCUJJVCgy OSkKPiA+ID4gKyNkZWZpbmUgRENVX0NUUkxERVNDTE5fNF9TQUZFVFlfRU4JQklUKDI4KQo+ID4g PiArI2RlZmluZSBEQ1VfQ1RSTERFU0NMTl80X1RSQU5TKHgpCSgoeCkgPDwgMjApCj4gPiA+ICsj ZGVmaW5lIERDVV9DVFJMREVTQ0xOXzRfQlBQKHgpCQkoKHgpIDw8IDE2KQo+ID4gPiArI2RlZmlu ZSBEQ1VfQ1RSTERFU0NMTl80X1JMRV9FTgkJQklUKDE1KQo+ID4gPiArI2RlZmluZSBEQ1VfQ1RS TERFU0NMTl80X0xVT0ZGUyh4KQkoKHgpIDw8IDQpCj4gPiA+ICsjZGVmaW5lIERDVV9DVFJMREVT Q0xOXzRfQkJfT04JCUJJVCgyKQo+ID4gPiArI2RlZmluZSBEQ1VfQ1RSTERFU0NMTl80X0FCKHgp CQkoeCkKPiA+ID4gKwo+ID4gPiArI2RlZmluZSBEQ1VfQ1RSTERFU0NMTl81KHgpCQkoMHgyMTAg KyAoeCkgKiAweDQwKQo+ID4gPiArI2RlZmluZSBEQ1VfQ1RSTERFU0NMTl81X0NLTUFYX1IoeCkJ KCh4KSA8PCAxNikKPiA+ID4gKyNkZWZpbmUgRENVX0NUUkxERVNDTE5fNV9DS01BWF9HKHgpCSgo eCkgPDwgOCkKPiA+ID4gKyNkZWZpbmUgRENVX0NUUkxERVNDTE5fNV9DS01BWF9CKHgpCSh4KQo+ ID4gPiArCj4gPiA+ICsjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzYoeCkJCSgweDIxNCArICh4KSAq IDB4NDApCj4gPiA+ICsjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzZfQ0tNSU5fUih4KQkoKHgpIDw8 IDE2KQo+ID4gPiArI2RlZmluZSBEQ1VfQ1RSTERFU0NMTl82X0NLTUlOX0coeCkJKCh4KSA8PCA4 KQo+ID4gPiArI2RlZmluZSBEQ1VfQ1RSTERFU0NMTl82X0NLTUlOX0IoeCkJKHgpCj4gPiA+ICsK PiA+ID4gKyNkZWZpbmUgRENVX0NUUkxERVNDTE5fNyh4KQkJKDB4MjE4ICsgKHgpICogMHg0MCkK PiA+ID4gKyNkZWZpbmUgRENVX0NUUkxERVNDTE5fN19USUxFX1ZFUih4KQkoKHgpIDw8IDE2KQo+ ID4gPiArI2RlZmluZSBEQ1VfQ1RSTERFU0NMTl83X1RJTEVfSE9SKHgpCSh4KQo+ID4gPiArCj4g PiA+ICsjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzgoeCkJCSgweDIxYyArICh4KSAqIDB4NDApCj4g PiA+ICsjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzhfRkdfRkNPTE9SKHgpCSh4KQo+ID4gPiArCj4g PiA+ICsjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzkoeCkJCSgweDIyMCArICh4KSAqIDB4NDApCj4g PiA+ICsjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzlfQkdfQkNPTE9SKHgpCSh4KQo+ID4gPiArCj4g PiA+ICsjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzEwKHgpCQkoMHgyMjQgKyAoeCkgKiAweDQwKQo+ ID4gPiArI2RlZmluZSBEQ1VfQ1RSTERFU0NMTl8xMF9QT1NUX1NLSVAoeCkJKCh4KSA8PCAxNikK PiA+ID4gKyNkZWZpbmUgRENVX0NUUkxERVNDTE5fMTBfUFJFX1NLSVAoeCkJKHgpCj4gPiA+ICsK PiA+ID4gKyNkZWZpbmUgRlNMX0RDVV9SR0I1NjUJCQk0Cj4gPiA+ICsjZGVmaW5lIEZTTF9EQ1Vf UkdCODg4CQkJNQo+ID4gPiArI2RlZmluZSBGU0xfRENVX0FSR0I4ODg4CQk2Cj4gPiA+ICsjZGVm aW5lIEZTTF9EQ1VfQVJHQjE1NTUJCTExCj4gPiA+ICsjZGVmaW5lIEZTTF9EQ1VfQVJHQjQ0NDQJ CTEyCj4gPiA+ICsjZGVmaW5lIEZTTF9EQ1VfWVVWNDIyCQkJMTQKPiA+ID4gKwo+ID4gPiArI2Rl ZmluZSBUQ09OX0NUUkwxCQkJMHgwMDAwCj4gPiA+ICsjZGVmaW5lIFRDT05fQllQQVNTX0VOQUJM RQkJQklUKDI5KQo+ID4gPiArCj4gPiA+ICsjZGVmaW5lIERCRyhmbXQsIC4uLikgRFJNX0RFQlVH KGZtdCJcbiIsICMjX19WQV9BUkdTX18pCj4gPiA+ICsKPiA+ID4gK3N0cnVjdCBjbGs7Cj4gPiA+ ICtzdHJ1Y3QgZGV2aWNlOwo+ID4gPiArc3RydWN0IGRybV9kZXZpY2U7Cj4gPiA+ICsKPiA+ID4g K3N0cnVjdCBmc2xfZGN1X2RybV9kZXZpY2Ugewo+ID4gPiArCXN0cnVjdCBkZXZpY2UgKmRldjsK PiA+ID4gKwlzdHJ1Y3QgcmVnbWFwICpyZWdtYXA7Cj4gPiA+ICsJc3RydWN0IHJlZ21hcCAqdGNv bl9yZWdtYXA7Cj4gPiA+ICsJc3RydWN0IHJlZ21hcCAqc2NmZ19yZWdtYXA7Cj4gPiA+ICsJdW5z aWduZWQgaW50IGlycTsKPiA+ID4gKwlzdHJ1Y3QgY2xrICpjbGs7Cj4gPiA+ICsJLypwcm90ZWN0 cyBoYXJkd2FyZSByZWdpc3RlciovCj4gPiA+ICsJc3BpbmxvY2tfdCBpcnFfbG9jazsKPiA+ID4g KwlzdHJ1Y3QgZHJtX2RldmljZSAqZGRldjsKPiA+ID4gKwlzdHJ1Y3QgZHJtX2ZiZGV2X2NtYSAq ZmJkZXY7Cj4gPiA+ICsJc3RydWN0IGZzbF9kY3VfZHJtX2NydGMgY3J0YzsKPiA+ID4gKwlzdHJ1 Y3QgZnNsX2RjdV9kcm1fZW5jb2RlciBlbmNvZGVyOwo+ID4gPiArCXN0cnVjdCBmc2xfZGN1X2Ry bV9jb25uZWN0b3IgY29ubmVjdG9yOyB9Owo+ID4gPiArCj4gPiA+ICt2b2lkIGZzbF9kY3VfZmJk ZXZfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiA+ID4gKwo+ID4gPiArI2VuZGlmIC8q IF9fRlNMX0RDVV9EUk1fRFJWX0hfXyAqLwo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2ZzbC9mc2xfZGN1X2RybV9mYmRldi5jCj4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL2ZzbC9m c2xfZGN1X2RybV9mYmRldi5jCj4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiA+IGluZGV4 IDAwMDAwMDAuLjY3MjlmOTIKPiA+ID4gLS0tIC9kZXYvbnVsbAo+ID4gPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vZnNsL2ZzbF9kY3VfZHJtX2ZiZGV2LmMKPiA+ID4gQEAgLTAsMCArMSw0MyBAQAo+ ID4gPiArLyoKPiA+ID4gKyAqIENvcHlyaWdodCAyMDE1IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9y LCBJbmMuCj4gPiA+ICsgKgo+ID4gPiArICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgo+ID4gPiArbW9kaWZ5IGl0Cj4gPiA+ICsg KiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNp b24gMiBhcwo+ID4gPiArcHVibGlzaGVkIGJ5Cj4gPiA+ICsgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLgo+ID4gPiArICoKPiA+ID4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+ID4gPiArYnV0IFdJVEhPVVQK PiA+ID4gKyAqIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mIE1FUkNIQU5UQUJJTElUWQo+ID4gPiArb3IKPiA+ID4gKyAqIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKPiA+ID4gK0xpY2Vu c2UgZm9yCj4gPiA+ICsgKiBtb3JlIGRldGFpbHMuCj4gPiA+ICsgKgo+ID4gPiArICovCj4gPiA+ ICsKPiA+ID4gKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgo+ID4gPiArI2luY2x1ZGUgPGRybS9kcm1f Y3J0Yy5oPgo+ID4gPiArI2luY2x1ZGUgPGRybS9kcm1fZmJfaGVscGVyLmg+Cj4gPiA+ICsjaW5j bHVkZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5oPgo+ID4gPiArI2luY2x1ZGUgPGRybS9kcm1fZmJf Y21hX2hlbHBlci5oPgo+ID4gPiArI2luY2x1ZGUgPGRybS9kcm1fZ2VtX2NtYV9oZWxwZXIuaD4K PiA+ID4gKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4KPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9kZWxh eS5oPgo+ID4gPiArI2luY2x1ZGUgPGxpbnV4L2RtYS1tYXBwaW5nLmg+Cj4gPiA+ICsjaW5jbHVk ZSA8bGludXgvZmIuaD4KPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4KPiA+ID4g KyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUu aD4KPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9vZl9wbGF0Zm9ybS5oPgo+ID4gPiArI2luY2x1ZGUg PGxpbnV4L3JlZ21hcC5oPgo+ID4gPiArI2luY2x1ZGUgPHZpZGVvL29mX2Rpc3BsYXlfdGltaW5n Lmg+Cj4gPiA+ICsjaW5jbHVkZSA8dmlkZW8vdmlkZW9tb2RlLmg+Cj4gPiA+ICsjaW5jbHVkZSA8 bGludXgvdWFjY2Vzcy5oPgo+ID4gPiArCj4gPiA+ICsjaW5jbHVkZSAiZnNsX2RjdV9kcm1fZHJ2 LmgiCj4gPiA+ICsjaW5jbHVkZSAiZnNsX2RjdV9kcm1fY3J0Yy5oIgo+ID4gPiArCj4gPiA+ICsv KiBpbml0aWFsaXplIGZiZGV2IGhlbHBlciAqLwo+ID4gPiArdm9pZCBmc2xfZGN1X2ZiZGV2X2lu aXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikgewo+ID4gPiArCXN0cnVjdCBmc2xfZGN1X2RybV9k ZXZpY2UgKmZzbF9kZXYgPSBkZXZfZ2V0X2RydmRhdGEoZGV2LT5kZXYpOwo+ID4gPiArCj4gPiA+ ICsJZnNsX2Rldi0+ZmJkZXYgPSBkcm1fZmJkZXZfY21hX2luaXQoZGV2LCAyNCwgMSwgMSk7IH0K PiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9mc2wvZnNsX2RjdV9kcm1fa21zLmMK PiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vZnNsL2ZzbF9kY3VfZHJtX2ttcy5jCj4gPiA+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0Cj4gPiA+IGluZGV4IDAwMDAwMDAuLjBlYjA2NTIKPiA+ID4gLS0tIC9k ZXYvbnVsbAo+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZnNsL2ZzbF9kY3VfZHJtX2ttcy5j Cj4gPiA+IEBAIC0wLDAgKzEsNDUgQEAKPiA+ID4gKy8qCj4gPiA+ICsgKiBDb3B5cmlnaHQgMjAx NSBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLgo+ID4gPiArICoKPiA+ID4gKyAqIEZyZWVz Y2FsZSBEQ1UgZHJtIGRldmljZSBkcml2ZXIKPiA+ID4gKyAqCj4gPiA+ICsgKiBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCj4gPiA+ ICttb2RpZnkKPiA+ID4gKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCj4gPiA+ICtieQo+ID4gPiArICogdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IK PiA+ID4gKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCj4gPiA+ICsgKi8K PiA+ID4gKwo+ID4gPiArI2luY2x1ZGUgPGRybS9kcm1QLmg+Cj4gPiA+ICsjaW5jbHVkZSA8ZHJt L2RybV9jcnRjLmg+Cj4gPiA+ICsjaW5jbHVkZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5oPgo+ID4g PiArI2luY2x1ZGUgPGRybS9kcm1fZmJfY21hX2hlbHBlci5oPgo+ID4gPiArI2luY2x1ZGUgPGRy bS9kcm1fZ2VtX2NtYV9oZWxwZXIuaD4KPiA+ID4gKwo+ID4gPiArI2luY2x1ZGUgImZzbF9kY3Vf ZHJtX2NydGMuaCIKPiA+ID4gKyNpbmNsdWRlICJmc2xfZGN1X2RybV9kcnYuaCIKPiA+ID4gKyNp bmNsdWRlICJmc2xfZGN1X2RybV9rbXMuaCIKPiA+ID4gKwo+ID4gPiArc3RhdGljIGNvbnN0IHN0 cnVjdCBkcm1fbW9kZV9jb25maWdfZnVuY3MKPiA+IGZzbF9kY3VfZHJtX21vZGVfY29uZmlnX2Z1 bmNzID0gewo+ID4gPiArCS5mYl9jcmVhdGUgPSBkcm1fZmJfY21hX2NyZWF0ZSwKPiA+ID4gK307 Cj4gPiA+ICsKPiA+ID4gK2ludCBmc2xfZGN1X2RybV9tb2Rlc2V0X2luaXQoc3RydWN0IGZzbF9k Y3VfZHJtX2RldmljZSAqZnNsX2Rldikgewo+ID4gPiArCWRybV9tb2RlX2NvbmZpZ19pbml0KGZz bF9kZXYtPmRkZXYpOwo+ID4gPiArCj4gPiA+ICsJZnNsX2Rldi0+ZGRldi0+bW9kZV9jb25maWcu bWluX3dpZHRoID0gMDsKPiA+ID4gKwlmc2xfZGV2LT5kZGV2LT5tb2RlX2NvbmZpZy5taW5faGVp Z2h0ID0gMDsKPiA+ID4gKwlmc2xfZGV2LT5kZGV2LT5tb2RlX2NvbmZpZy5tYXhfd2lkdGggPSAy MDMxOwo+ID4gPiArCWZzbF9kZXYtPmRkZXYtPm1vZGVfY29uZmlnLm1heF9oZWlnaHQgPSAyMDQ3 Owo+ID4gPiArCWZzbF9kZXYtPmRkZXYtPm1vZGVfY29uZmlnLmZ1bmNzID0gJmZzbF9kY3VfZHJt X21vZGVfY29uZmlnX2Z1bmNzOwo+ID4gPiArCj4gPiA+ICsJZnNsX2RjdV9kcm1fY3J0Y19jcmVh dGUoZnNsX2Rldik7Cj4gPiA+ICsJZnNsX2RjdV9kcm1fZW5jb2Rlcl9jcmVhdGUoZnNsX2Rldik7 Cj4gPiA+ICsJZnNsX2RjdV9kcm1fY29ubmVjdG9yX2NyZWF0ZShmc2xfZGV2LCAmZnNsX2Rldi0+ ZW5jb2Rlci5lbmNvZGVyKTsKPiA+ID4gKwo+ID4gPiArCWRybV9rbXNfaGVscGVyX3BvbGxfaW5p dChmc2xfZGV2LT5kZGV2KTsKPiA+ID4gKwo+ID4gPiArCWRybV9oZWxwZXJfZGlzYWJsZV91bnVz ZWRfZnVuY3Rpb25zKGZzbF9kZXYtPmRkZXYpOwo+ID4gPiArCj4gPiA+ICsJcmV0dXJuIDA7Cj4g PiA+ICt9Cj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZnNsL2ZzbF9kY3VfZHJt X2ttcy5oCj4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL2ZzbC9mc2xfZGN1X2RybV9rbXMuaAo+ID4g PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4gPiBpbmRleCAwMDAwMDAwLi45ZDViNzk4Cj4gPiA+ IC0tLSAvZGV2L251bGwKPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC9mc2xfZGN1X2Ry bV9rbXMuaAo+ID4gPiBAQCAtMCwwICsxLDIyIEBACj4gPiA+ICsvKgo+ID4gPiArICogQ29weXJp Z2h0IDIwMTUgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4KPiA+ID4gKyAqCj4gPiA+ICsg KiBGcmVlc2NhbGUgRENVIGRybSBkZXZpY2UgZHJpdmVyCj4gPiA+ICsgKgo+ID4gPiArICogVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v cgo+ID4gPiArbW9kaWZ5Cj4gPiA+ICsgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAo+ID4gPiArYnkKPiA+ID4gKyAqIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu c2UsIG9yCj4gPiA+ICsgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgo+ID4g PiArICovCj4gPiA+ICsKPiA+ID4gKyNpZm5kZWYgX19GU0xfRENVX0RSTV9LTVNfSF9fCj4gPiA+ ICsjZGVmaW5lIF9fRlNMX0RDVV9EUk1fS01TX0hfXwo+ID4gPiArCj4gPiA+ICsjaW5jbHVkZSA8 bGludXgvdHlwZXMuaD4KPiA+ID4gKwo+ID4gPiArc3RydWN0IGRybV9nZW1fY21hX29iamVjdDsK PiA+ID4gK3N0cnVjdCBmc2xfZGN1X2RybV9kZXZpY2U7Cj4gPiA+ICsKPiA+ID4gK2ludCBmc2xf ZGN1X2RybV9tb2Rlc2V0X2luaXQoc3RydWN0IGZzbF9kY3VfZHJtX2RldmljZSAqZnNsX2Rldik7 Cj4gPiA+ICsKPiA+ID4gKyNlbmRpZiAvKiBfX0ZTTF9EQ1VfRFJNX0tNU19IX18gKi8KPiA+ID4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9mc2wvZnNsX2RjdV9kcm1fcGxhbmUuYwo+ID4g PiBiL2RyaXZlcnMvZ3B1L2RybS9mc2wvZnNsX2RjdV9kcm1fcGxhbmUuYwo+ID4gPiBuZXcgZmls ZSBtb2RlIDEwMDY0NAo+ID4gPiBpbmRleCAwMDAwMDAwLi5kNzI1NTk0Cj4gPiA+IC0tLSAvZGV2 L251bGwKPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC9mc2xfZGN1X2RybV9wbGFuZS5j Cj4gPiA+IEBAIC0wLDAgKzEsMTI0IEBACj4gPiA+ICsvKgo+ID4gPiArICogQ29weXJpZ2h0IDIw MTUgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4KPiA+ID4gKyAqCj4gPiA+ICsgKiBGcmVl c2NhbGUgRENVIGRybSBkZXZpY2UgZHJpdmVyCj4gPiA+ICsgKgo+ID4gPiArICogVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgo+ID4g PiArbW9kaWZ5Cj4gPiA+ICsgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAo+ID4gPiArYnkKPiA+ID4gKyAqIHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y Cj4gPiA+ICsgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgo+ID4gPiArICov Cj4gPiA+ICsKPiA+ID4gKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgo+ID4gPiArI2luY2x1ZGUgPGRy bS9kcm1fY3J0Yy5oPgo+ID4gPiArI2luY2x1ZGUgPGRybS9kcm1fY3J0Y19oZWxwZXIuaD4KPiA+ ID4gKyNpbmNsdWRlIDxkcm0vZHJtX2ZiX2NtYV9oZWxwZXIuaD4KPiA+ID4gKyNpbmNsdWRlIDxk cm0vZHJtX2dlbV9jbWFfaGVscGVyLmg+Cj4gPiA+ICsjaW5jbHVkZSA8bGludXgvcmVnbWFwLmg+ Cj4gPiA+ICsKPiA+ID4gKyNpbmNsdWRlICJmc2xfZGN1X2RybV9kcnYuaCIKPiA+ID4gKyNpbmNs dWRlICJmc2xfZGN1X2RybV9rbXMuaCIKPiA+ID4gKyNpbmNsdWRlICJmc2xfZGN1X2RybV9wbGFu ZS5oIgo+ID4gPiArCj4gPiA+ICtzdGF0aWMgdm9pZCBfX2ZzbF9kY3VfZHJtX3BsYW5lX3NldHVw KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ID4gPiArCQkJCSAgICAgIHN0cnVjdCBkcm1fZnJh bWVidWZmZXIgKmZiKSB7Cj4gPiA+ICsJc3RydWN0IGZzbF9kY3VfZHJtX2RldmljZSAqZnNsX2Rl diA9IHBsYW5lLT5kZXYtPmRldl9wcml2YXRlOwo+ID4gPiArCXUzMiBwbGFuZV9udW0gPSAwLCBh bHBoYSwgYnBwOwo+ID4gPiArCXN0cnVjdCBkcm1fZ2VtX2NtYV9vYmplY3QgKmdlbTsKPiA+ID4g Kwo+ID4gPiArCXdoaWxlIChwbGFuZS0+cG9zc2libGVfY3J0Y3MgPj4gMSkKPiA+ID4gKwkJcGxh bmVfbnVtKys7Cj4gPiA+ICsKPiA+ID4gKwlnZW0gPSBkcm1fZmJfY21hX2dldF9nZW1fb2JqKGZi LCAwKTsKPiA+ID4gKwo+ID4gPiArCXN3aXRjaCAoZmItPnBpeGVsX2Zvcm1hdCkgewo+ID4gPiAr CWNhc2UgRFJNX0ZPUk1BVF9SR0I1NjU6Cj4gPiA+ICsJCWJwcCA9IEZTTF9EQ1VfUkdCNTY1Owo+ ID4gPiArCQlhbHBoYSA9IDB4ZmY7Cj4gPiA+ICsJCWJyZWFrOwo+ID4gPiArCWNhc2UgRFJNX0ZP Uk1BVF9SR0I4ODg6Cj4gPiA+ICsJCWJwcCA9IEZTTF9EQ1VfUkdCODg4Owo+ID4gPiArCQlhbHBo YSA9IDB4ZmY7Cj4gPiA+ICsJCWJyZWFrOwo+ID4gPiArCWNhc2UgRFJNX0ZPUk1BVF9BUkdCODg4 ODoKPiA+ID4gKwkJYnBwID0gRlNMX0RDVV9BUkdCODg4ODsKPiA+ID4gKwkJYWxwaGEgPSAweGZm Owo+ID4gPiArCQlicmVhazsKPiA+ID4gKwljYXNlIERSTV9GT1JNQVRfQkdSQTQ0NDQ6Cj4gPiA+ ICsJCWJwcCA9IEZTTF9EQ1VfQVJHQjQ0NDQ7Cj4gPiA+ICsJCWFscGhhID0gMHhmZjsKPiA+ID4g KwkJYnJlYWs7Cj4gPiA+ICsJY2FzZSBEUk1fRk9STUFUX0FSR0IxNTU1Ogo+ID4gPiArCQlicHAg PSBGU0xfRENVX0FSR0IxNTU1Owo+ID4gPiArCQlhbHBoYSA9IDB4ZmY7Cj4gPiA+ICsJCWJyZWFr Owo+ID4gPiArCWNhc2UgRFJNX0ZPUk1BVF9ZVVY0MjI6Cj4gPiA+ICsJCWJwcCA9IEZTTF9EQ1Vf WVVWNDIyOwo+ID4gPiArCQlhbHBoYSA9IDB4ZmY7Cj4gPiA+ICsJCWJyZWFrOwo+ID4gPiArCWRl ZmF1bHQ6Cj4gPiA+ICsJCXJldHVybjsKPiA+ID4gKwl9Cj4gPiA+ICsKPiA+ID4gKwlyZWdtYXBf d3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfQ1RSTERFU0NMTl8zKHBsYW5lX251bSksIGdlbS0K PiA+ID5wYWRkcik7Cj4gPiA+ICsJcmVnbWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwgRENVX0NU UkxERVNDTE5fNChwbGFuZV9udW0pLAo+ID4gPiArCQkgICAgIERDVV9DVFJMREVTQ0xOXzRfRU4g fAo+ID4gPiArCQkgICAgIERDVV9DVFJMREVTQ0xOXzRfVFJBTlMoYWxwaGEpIHwKPiA+ID4gKwkJ ICAgICBEQ1VfQ1RSTERFU0NMTl80X0JQUChicHApIHwKPiA+ID4gKwkJICAgICBEQ1VfQ1RSTERF U0NMTl80X0FCKDIpKTsKPiA+ID4gKwlyZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1Vf Q1RSTERFU0NMTl81KHBsYW5lX251bSksCj4gPiA+ICsJCSAgICAgRENVX0NUUkxERVNDTE5fNV9D S01BWF9SKDB4RkYpIHwKPiA+ID4gKwkJICAgICBEQ1VfQ1RSTERFU0NMTl81X0NLTUFYX0coMHhG RikgfAo+ID4gPiArCQkgICAgIERDVV9DVFJMREVTQ0xOXzVfQ0tNQVhfQigweEZGKSk7Cj4gPiA+ ICsJcmVnbWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwgRENVX0NUUkxERVNDTE5fNihwbGFuZV9u dW0pLAo+ID4gPiArCQkgICAgIERDVV9DVFJMREVTQ0xOXzZfQ0tNSU5fUigwKSB8Cj4gPiA+ICsJ CSAgICAgRENVX0NUUkxERVNDTE5fNl9DS01JTl9HKDApIHwKPiA+ID4gKwkJICAgICBEQ1VfQ1RS TERFU0NMTl82X0NLTUlOX0IoMCkpOwo+ID4gPiArCXJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdt YXAsIERDVV9DVFJMREVTQ0xOXzgocGxhbmVfbnVtKSwKPiA+ID4gKwkJICAgICBEQ1VfQ1RSTERF U0NMTl84X0ZHX0ZDT0xPUigwKSk7Cj4gPiA+ICsJcmVnbWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21h cCwgRENVX0NUUkxERVNDTE5fOShwbGFuZV9udW0pLAo+ID4gPiArCQkgICAgIERDVV9DVFJMREVT Q0xOXzlfQkdfQkNPTE9SKDApKTsKPiA+ID4gKwlyZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFw LCBEQ1VfQ1RSTERFU0NMTl8xMChwbGFuZV9udW0pLAo+ID4gPiArCQkgICAgIERDVV9DVFJMREVT Q0xOXzEwX1BPU1RfU0tJUCgwKSB8Cj4gPiA+ICsJCSAgICAgRENVX0NUUkxERVNDTE5fMTBfUFJF X1NLSVAoMCkpOwo+ID4gPiArCXJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9VUERB VEVfTU9ERSwKPiA+ID4gK0RDVV9VUERBVEVfTU9ERV9SRUFEUkVHKTsgfQo+ID4gPiArCj4gPiA+ ICt2b2lkIGZzbF9kY3VfZHJtX3BsYW5lX3NldHVwKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lKSB7 Cj4gPiA+ICsJaWYgKCFwbGFuZS0+ZmIpCj4gPiA+ICsJCXJldHVybjsKPiA+ID4gKwo+ID4gPiAr CV9fZnNsX2RjdV9kcm1fcGxhbmVfc2V0dXAocGxhbmUsIHBsYW5lLT5mYik7IH0KPiA+ID4gKwo+ ID4gPiAraW50IGZzbF9kY3VfZHJtX3BsYW5lX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFu ZSwgc3RydWN0IGRybV9jcnRjCj4gPiAqY3J0YywKPiA+ID4gKwkJCSAgICAgc3RydWN0IGRybV9m cmFtZWJ1ZmZlciAqZmIsIGludCBjcnRjX3gsIGludCBjcnRjX3ksCj4gPiA+ICsJCQkgICAgdW5z aWduZWQgaW50IGNydGNfdywgdW5zaWduZWQgaW50IGNydGNfaCwKPiA+ID4gKwkJCSAgICB1aW50 MzJfdCBzcmNfeCwgdWludDMyX3Qgc3JjX3ksCj4gPiA+ICsJCQkgICAgdWludDMyX3Qgc3JjX3cs IHVpbnQzMl90IHNyY19oKSB7Cj4gPiA+ICsJX19mc2xfZGN1X2RybV9wbGFuZV9zZXR1cChwbGFu ZSwgZmIpOwo+ID4gPiArCXJldHVybiAwOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtpbnQgZnNs X2RjdV9kcm1fcGxhbmVfZGlzYWJsZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSkgewo+ID4gPiAr CXJldHVybiAwOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICt2b2lkIGZzbF9kY3VfZHJtX3BsYW5l X2Rlc3Ryb3koc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpIHsKPiA+ID4gKwlmc2xfZGN1X2RybV9w bGFuZV9kaXNhYmxlKHBsYW5lKTsKPiA+ID4gKwlkcm1fcGxhbmVfY2xlYW51cChwbGFuZSk7Cj4g PiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBjb25zdCB1aW50MzJfdCBmb3JtYXRzW10gPSB7 Cj4gPiA+ICsJRFJNX0ZPUk1BVF9SR0I1NjUsCj4gPiA+ICsJRFJNX0ZPUk1BVF9SR0I4ODgsCj4g PiA+ICsJRFJNX0ZPUk1BVF9BUkdCODg4OCwKPiA+ID4gKwlEUk1fRk9STUFUX0FSR0I0NDQ0LAo+ ID4gPiArCURSTV9GT1JNQVRfQVJHQjE1NTUsCj4gPiA+ICsJRFJNX0ZPUk1BVF9ZVVY0MjIsCj4g PiA+ICt9Owo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2ZzbC9mc2xfZGN1X2Ry bV9wbGFuZS5oCj4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL2ZzbC9mc2xfZGN1X2RybV9wbGFuZS5o Cj4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiA+IGluZGV4IDAwMDAwMDAuLmRhODhkMWMK PiA+ID4gLS0tIC9kZXYvbnVsbAo+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZnNsL2ZzbF9k Y3VfZHJtX3BsYW5lLmgKPiA+ID4gQEAgLTAsMCArMSwyOCBAQAo+ID4gPiArLyoKPiA+ID4gKyAq IENvcHlyaWdodCAyMDE1IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuCj4gPiA+ICsgKgo+ ID4gPiArICogRnJlZXNjYWxlIERDVSBkcm0gZGV2aWNlIGRyaXZlcgo+ID4gPiArICoKPiA+ID4g KyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IKPiA+ID4gK21vZGlmeQo+ID4gPiArICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKPiA+ID4gK2J5Cj4gPiA+ ICsgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRo ZSBMaWNlbnNlLCBvcgo+ID4gPiArICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KPiA+ID4gKyAqLwo+ID4gPiArCj4gPiA+ICsjaWZuZGVmIF9fRlNMX0RDVV9EUk1fUExBTkVf SF9fCj4gPiA+ICsjZGVmaW5lIF9fRlNMX0RDVV9EUk1fUExBTkVfSF9fCj4gPiA+ICsKPiA+ID4g K3N0cnVjdCBmc2xfZGN1X2RybV9kZXZpY2U7Cj4gPiA+ICsKPiA+ID4gK3ZvaWQgZnNsX2RjdV9k cm1fcGxhbmVfc2V0dXAoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpOyBpbnQKPiA+ID4gK2ZzbF9k Y3VfZHJtX3BsYW5lX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiA+ID4gKwkJCSAg ICAgc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ID4gPiArCQkJICAgICBzdHJ1Y3QgZHJtX2ZyYW1l YnVmZmVyICpmYiwKPiA+ID4gKwkJCSAgICAgaW50IGNydGNfeCwgaW50IGNydGNfeSwKPiA+ID4g KwkJCSAgICAgdW5zaWduZWQgaW50IGNydGNfdywgdW5zaWduZWQgaW50IGNydGNfaCwKPiA+ID4g KwkJCSAgICAgdWludDMyX3Qgc3JjX3gsIHVpbnQzMl90IHNyY195LAo+ID4gPiArCQkJICAgICB1 aW50MzJfdCBzcmNfdywgdWludDMyX3Qgc3JjX2gpOyBpbnQKPiA+ID4gK2ZzbF9kY3VfZHJtX3Bs YW5lX2Rpc2FibGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpOyB2b2lkCj4gPiA+ICtmc2xfZGN1 X2RybV9wbGFuZV9kZXN0cm95KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lKTsKPiA+ID4gKwo+ID4g PiArI2VuZGlmIC8qIF9fRlNMX0RDVV9EUk1fUExBTkVfSF9fICovCj4gPiA+IC0tCj4gPiA+IDIu MS4wLjI3Lmc5NmRiMzI0Cj4gPiA+Cj4gPiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCj4gPiA+IGRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKPiA+ID4gZHJp LWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+ID4gPiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCj4gPiAKPiA+IC0tCj4gPiBEYW5pZWwg VmV0dGVyCj4gPiBTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KPiA+ICs0MSAo MCkgNzkgMzY1IDU3IDQ4IC0gaHR0cDovL2Jsb2cuZmZ3bGwuY2gKCi0tIApEYW5pZWwgVmV0dGVy ClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgorNDEgKDApIDc5IDM2NSA1NyA0 OCAtIGh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vZHJpLWRldmVsCg==