From mboxrd@z Thu Jan 1 00:00:00 1970 From: Imre Deak Subject: Re: [PATCH v3 1/8] drm/i915/skl: Add support to load SKL CSR firmware Date: Mon, 13 Apr 2015 15:37:48 +0300 Message-ID: <1428928668.29827.69.camel@intel.com> References: <1428678670-11258-1-git-send-email-animesh.manna@intel.com> <1428920642-23712-1-git-send-email-animesh.manna@intel.com> <1428923030.29827.33.camel@intel.com> <552BBF8A.9070007@intel.com> Reply-To: imre.deak@intel.com Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id 402E26E424 for ; Mon, 13 Apr 2015 05:37:51 -0700 (PDT) In-Reply-To: <552BBF8A.9070007@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Animesh Manna Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gbWEsIDIwMTUtMDQtMTMgYXQgMTg6MzcgKzA1MzAsIEFuaW1lc2ggTWFubmEgd3JvdGU6Cj4g Cj4gT24gMDQvMTMvMjAxNSAwNDozMyBQTSwgSW1yZSBEZWFrIHdyb3RlOgo+ID4gT24gbWEsIDIw MTUtMDQtMTMgYXQgMTU6NTQgKzA1MzAsIEFuaW1lc2ggTWFubmEgd3JvdGU6Cj4gPj4gRnJvbTog IkEuU3VuaWwgS2FtYXRoIiA8c3VuaWwua2FtYXRoQGludGVsLmNvbT4KPiA+Pgo+ID4+IERpc3Bs YXkgQ29udGV4dCBTYXZlIGFuZCBSZXN0b3JlIHN1cHBvcnQgaXMgbmVlZGVkIGZvcgo+ID4+IHZh cmlvdXMgU0tMIERpc3BsYXkgQyBzdGF0ZXMgbGlrZSBEQzUsIERDNi4KPiA+Pgo+ID4+IFRoaXMg aW1wbGVtZW50YXRpb24gaXMgYWRkZWQgYmFzZWQgb24gZmlyc3QgdmVyc2lvbiBvZiBETUMgQ1NS IHByb2dyYW0KPiA+PiB0aGF0IHdlIHJlY2VpdmVkIGZyb20gaC93IHRlYW0uCj4gPj4KPiA+PiBI ZXJlIHdlIGFyZSB1c2luZyByZXF1ZXN0X2Zpcm13YXJlIGJhc2VkIGRlc2lnbi4KPiA+PiBGaW5h bGx5IHRoaXMgZmlybXdhcmUgc2hvdWxkIGVuZCB1cCBpbiBsaW51eC1maXJtd2FyZSB0cmVlLgo+ ID4+Cj4gPj4gRm9yIFNLTCBwbGF0Zm9ybSBpdHMgbWFuZGF0b3J5IHRvIGVuc3VyZSB0aGF0IHdl IGxvYWQgdGhpcwo+ID4+IGNzciBwcm9ncmFtIGJlZm9yZSBlbmFibGluZyBEQyBzdGF0ZXMgbGlr ZSBEQzUvREM2Lgo+ID4+Cj4gPj4gQXMgQ1NSIHByb2dyYW0gZ2V0cyByZXNldCBvbiB2YXJpb3Vz IGNvbmRpdGlvbnMsIHdlIHNob3VsZCBlbnN1cmUKPiA+PiB0byBsb2FkIGl0IGR1cmluZyBib290 IGFuZCBpbiBmdXR1cmUgY2hhbmdlIHRvIGJlIGFkZGVkIHRvIGxvYWQKPiA+PiB0aGlzIHN5c3Rl bSByZXN1bWUgc2VxdWVuY2UgdG9vLgo+ID4+Cj4gPj4gdjE6IEluaXRpYWwgcmVsZXNlIGFzIFJG QyBwYXRjaAo+ID4+Cj4gPj4gdjI6IERlc2lnbiBjaGFuZ2UgYXMgcGVyIERhbmllbCwgRGFtaWVu IGFuZCBTaG9iaXQncyByZXZpZXcgY29tbWVudHMKPiA+PiByZXF1ZXN0IGZpcm13YXJlIG1ldGhv ZCBmb2xsb3dlZC4KPiA+Pgo+ID4+IHYzOiBTb21lIG9wdGltaXphdGlvbiBhbmQgZnVuY3Rpb25h bCBjaGFuZ2VzLgo+ID4+IFB1bGxlZCByZWdpc3RlciBkZWZpbmVzIGludG8gZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9yZWcuaAo+ID4+IFVzZWQga21lbWR1cCB0byBhbGxvY2F0ZSBhbmQgZHVw bGljYXRlIGZpcm13YXJlIGNvbnRlbnQuCj4gPj4gRW5zdXJlZCB0byBmcmVlIGFsbG9jYXRlZCBi dWZmZXIuCj4gPj4KPiA+PiB2NDogTW9kaWZpZWQgYXMgcGVyIHJldmlldyBjb21tZW50cyBmcm9t IFNhdGhlZXNoIGFuZCBEYW5pZWwKPiA+PiBSZW1vdmVkIHRlbXBvcmFyeSBidWZmZXIuCj4gPj4g T3B0aW1pemVkIG51bWJlciBvZiB3cml0ZXMgYnkgcmVwbGFjaW5nIEk5MTVfV1JJVEUgd2l0aCBJ OTE1X1dSSVRFNjQuCj4gPj4KPiA+PiB2NToKPiA+PiBNb2RpZmllZCBhcyBwZXIgcmV2aWV3IGNv bWVtbnRzIGZyb20gRGFtaWVuLgo+ID4+IC0gQ2hhbmdlZCBuYW1lIGZvciBmdW5jdGlvbnMgYW5k IGZpcm13YXJlLgo+ID4+IC0gSW50cm9kdWNlZCBIQVNfQ1NSLgo+ID4+IC0gUmV2ZXJ0ZWQgYmFj ayBwcmV2aW91cyBjaGFuZ2UgYW5kIHVzZWQgY3NyX2J1ZiB3aXRoIHU4IHNpemUuCj4gPj4gLSBV c2luZyBjcHVfdG9fYmU2NCBmb3IgZW5kaWFubmVzcyBjaGFuZ2UuCj4gPj4KPiA+PiBNb2RpZmll ZCBhcyBwZXIgcmV2aWV3IGNvbW1lbnRzIGZyb20gSW1yZS4KPiA+PiAtIE1vZGlmaWVkIHJlZ2lz dGVycyBhbmQgbWFjcm8gbmFtZXMgdG8gYmUgYSBiaXQgY2xvc2VyIHRvIGJzcGVjIHRlcm1pbm9s b2d5Cj4gPj4gYW5kIHRoZSBleGlzdGluZyByZWdpc3RlciBuYW1pbmcgaW4gdGhlIGRyaXZlci4K PiA+PiAtIEVhcmx5IHJldHVybiBmb3Igbm9uIFNLTCBwbGF0Zm9ybXMgaW4gaW50ZWxfbG9hZF9j c3JfcHJvZ3JhbSBmdW5jdGlvbi4KPiA+PiAtIEFkZGVkIGxvY2tpbmcgYXJvdW5kIENTUiBwcm9n cmFtIGxvYWQgZnVuY3Rpb24gYXMgaXQgbWF5IGJlIGNhbGxlZAo+ID4+IGNvbmN1cnJlbnRseSBk dXJpbmcgc3lzdGVtL3J1bnRpbWUgcmVzdW1lLgo+ID4+IC0gUmVsZWFzaW5nIHRoZSBmdyBiZWZv cmUgbG9hZGluZyB0aGUgcHJvZ3JhbSBmb3IgY29uc2lzdGVuY3kKPiA+PiAtIEhhbmRsZWQgZXJy b3IgcGF0aCBkdXJpbmcgZi93IGxvYWQuCj4gPj4KPiA+PiB2NjogTW9kaWZpZWQgYXMgcGVyIHJl dmlldyBjb21tZW50cyBmcm9tIEltcmUuCj4gPj4gLSBDb3JyZWN0ZWQgb3V0X2ZyZWVjc3Igc2Vx dWVuY2UuCj4gPj4KPiA+PiB2NzogTW9kaWZpZWQgYXMgcGVyIHJldmlldyBjb21tZW50cyBmcm9t IEltcmUuCj4gPj4gRmFpbCBsb2FkaW5nIGZ3IGlmIGZ3LT5zaXplJTghPTAuCj4gPj4KPiA+PiB2 ODogUmViYXNlIHRvIGxhdGVzdC4KPiA+Pgo+ID4+IHY5OiBSZWJhc2Ugb24gdG9wIG9mIC1uaWdo dGx5IChEYW1pZW4pCj4gPj4KPiA+PiB2MTA6IEVuYWJsZWQgc3VwcG9ydCBmb3IgZG1jIGZpcm13 YXJlIHZlciAxLjAuCj4gPj4gQWNjb3JkaW5nIHRvIHZlciAxLjAgaW4gYSBzaW5nbGUgYmluYXJ5 IHBhY2thZ2UgYWxsIHRoZSBmaXJtd2FyZSdzIHRoYXQgYXJlCj4gPj4gcmVxdWlyZWQgZm9yIGRp ZmZlcmVudCBzdGVwcGluZydzIG9mIHRoZSBwcm9kdWN0IHdpbGwgYmUgc3RvcmVkLiBUaGUgcGFj a2FnZQo+ID4+IGNvbnRhaW5zIHRoZSBjc3MgaGVhZGVyLCBmb2xsb3dlZCBieSB0aGUgcGFja2Fn ZSBoZWFkZXIgYW5kIHRoZSBhY3R1YWwgZG1jCj4gPj4gZmlybXdhcmVzLiBQYWNrYWdlIGhlYWRl ciBjb250YWlucyB0aGUgZmlybXdhcmUvc3RlcHBpbmcgbWFwcGluZyB0YWJsZSBhbmQKPiA+PiB0 aGUgY29ycmVzcG9uZGluZyBmaXJtd2FyZSBvZmZzZXRzIHRvIHRoZSBpbmRpdmlkdWFsIGJpbmFy aWVzLCB3aXRoaW4gdGhlCj4gPj4gcGFja2FnZS4gRWFjaCBpbmRpdmlkdWFsIHByb2dyYW0gYmlu YXJ5IGNvbnRhaW5zIHRoZSBoZWFkZXIgYW5kIHRoZSBwYXlsb2FkCj4gPj4gc2VjdGlvbnMgd2hv c2Ugc2l6ZSBpcyBzcGVjaWZpZWQgaW4gdGhlIGhlYWRlciBzZWN0aW9uLiBUaGlzIGNoYW5nZXMg YXJlIGRvbmUKPiA+PiB0byBleHRyYWN0IHRoZSBzcGVjaWZpYyBmaXJtYXdhcmUgZnJvbSB0aGUg cGFja2FnZS4gKEFuaW1lc2gpCj4gPj4KPiA+PiB2MTE6IE1vZGlmaWVkIGFzIHBlciByZXZpZXcg Y29tZW1udHMgZnJvbSBJbXJlLgo+ID4+IC0gQWRkZWQgY29kZSBjb21tZW50IGZyb20gYnBlYyBm b3IgaGVhZGVyIHN0cnVjdHVyZSBlbGVtZW50cy4KPiA+PiAtIEFkZGVkIF9fcGFja2VkIHRvIGF2 b2lkIHN0cnVjdHVyZSBwYWRkaW5nLgo+ID4+IC0gQWRkZWQgaGVscGVyIGZ1bmN0aW9ucyBmb3Ig c3RlcHBpbmcgYW5kIHN1YnN0ZXBwaW5nIGluZm8uCj4gPj4gLSBBZGRlZCBjb2RlIGNvbW1lbnQg Zm9yIENTUl9NQVhfRldfU0laRS4KPiA+PiAtIERpc2FibGVkIEJYVCBmaXJtd2FyZSBsb2FkaW5n LCB3aWxsIGJlIGVuYWJsZWQgd2l0aCBkbWMgMS4wIHN1cHBvcnQuCj4gPj4gLSBDaGFuZ2VkIHNr bF9zdGVwcGluZ19pbmZvIGJhc2VkIG9uIGJzcGVjLCBlYXJsaWVyIHVzZWQgZnJvbSBjb25maWcg REIuCj4gPj4gLSBSZW1vdmVkIGR1cGxpY2F0ZSBjYWxsIG9mIGNwdV90b19iZSogZnJvbSBpbnRl bF9jc3JfbG9hZF9wcm9ncmFtIGZ1bmN0aW9uLgo+ID4+IC0gVXNlZCBjcHVfdG9fYmUzMiBpbnN0 ZWFkIG9mIGNwdV90b19iZTY0IGFzIGZpcm13YXJlIGJpbmFyeSBpbiBkd29yZCBhbGlnbmVkLgo+ ID4+IC0gQWRkZWQgc2FuaXR5IGNoZWNrIGZvciBoZWFkZXIgbGVuZ3RoLgo+ID4+IC0gQWRkZWQg c2FuaXR5IGNoZWNrIGZvciBtbWlvIGFkZHJlc3MgZ290IGZyb20gZmlybXdhcmUgYmluYXJ5Lgo+ ID4+IC0ga21hbGxvYyBkb25lIHNlcGFyYXRlbHkgZm9yIGRtYyBoZWFkZXIgYW5kIGRtYyBmaXJt d2FyZS4gKEFuaW1lc2gpCj4gPj4KPiA+PiB2MTI6IE1vZGlmaWVkIGFzIHBlciByZXZpZXcgY29t ZW1udHMgZnJvbSBJbXJlLgo+ID4+IC0gQ29ycmVjdGVkIHRoZSB0eXBvIGVycm9yIGluIHNrbCBz dGVwcGluZyBpbmZvIHN0cnVjdHVyZS4KPiA+PiAtIEFkZGVkIG91dC1vZi1ib3VuZCBhY2Nlc3Mg Zm9yIHNrbF9zdGVwcGluZ19pbmZvLgo+ID4+IC0gU2FuaXR5IGNoZWNrIGZvciBtbWlvIGFkZHJl c3MgbW9kaWZpZWQuCj4gPj4gLSBTYW5pdHkgY2hlY2sgYWRkZWQgZm9yIHN0ZXBwaW5nIGFuZCBz dWJzdGVwcGlnLgo+ID4+IC0gTW9kaWZpZWQgdGhlIGludGVsX2RtY19pbmZvIHN0cnVjdHVyZSwg Y2FjaGUgb25seSB0aGUgcmVxdWlyZWQgaGVhZGVyIGluZm8uIChBbmltZXNoKQo+ID4+Cj4gPj4g djEzOiBjbGFyaWZ5IGZpcm13YXJlIGxvYWQgZXJyb3IgbWVzc2FnZS4KPiA+PiBUaGUgcmVhc29u IGZvciBhIGZpcm13YXJlIGxvYWRpbmcgZmFpbHVyZSBjYW4gYmUgb2JzY3VyZSBpZiB0aGUgZHJp dmVyCj4gPj4gaXMgYnVpbHQtaW4uIFByb3ZpZGUgYW4gZXhwbGFuYXRpb24gdG8gdGhlIHVzZXIg YWJvdXQgdGhlIGxpa2VseSByZWFzb24gZm9yCj4gPj4gdGhlIGZhaWx1cmUgYW5kIGhvdyB0byBy ZXNvbHZlIGl0LiAoSW1yZSkKPiA+Pgo+ID4+IHYxNDogU3VnZ2VzdGVkIGJ5IEphbmkuCj4gPj4g LSBmaXggcy9JOTE1L0NPTkZJR19EUk1fSTkxNS8gdHlwbwo+ID4+IC0gYWRkIGZ3X3BhdGggdG8g dGhlIGZpcm13YXJlIG9iamVjdCBpbnN0ZWFkIG9mIHVzaW5nIGEgc3RhdGljIHB0ciAoSmFuaSkK PiA+Pgo+ID4+IHYxNToKPiA+PiAxKSBDaGFuZ2VkIHRoZSBmaXJtd2FyZSBuYW1lIGFzIGRtY19n ZW45LmJpbiwgZXZlcnl0aW1lIGZvciBhIG5ldyBmaXJtd2FyZSB2ZXJzaW9uIGEgc3ltYm9saWMg bGluawo+ID4+IHdpdGggc2FtZSBuYW1lIHdpbGwgaGVscCBub3QgdG8gYnVpbGQga2VybmVsIGFn YWluLgo+ID4+IDIpIENoYW5nZXMgZG9uZSBhcyBwZXIgcmV2aWV3IGNvbW1lbnRzIGZyb20gSW1y ZS4KPiA+PiAtIEVycm9yIGNoZWNrIHJlbW92ZWQgZm9yIGludGVsX2Nzcl91Y29kZV9pbml0Lgo+ ID4+IC0gTW92ZWQgY3NyLXNwZWNpZmljIGRhdGEgc3RydWN0dXJlIHRvIGludGVsX2Nzci5oIGFu ZCBvcHRpbWl6YXRpb24gZG9uZSBvbiBzdHJ1Y3R1cmUgZGVmaW5pdGlvbi4KPiA+PiAtIGZ3LT5k YXRhIHVzZWQgZGlyZWN0bHkgZm9yIHBhcnNpbmcgdGhlIGhlYWRlciBpbmZvICYgbWVtb3J5IGFs bG9jYXRpb24KPiA+PiBvbmx5IGRvbmUgc2VwYXJhdGVseSBmb3IgcGF5bG9hZC4gKEFuaW1lc2gp Cj4gPj4KPiA+PiB2MTY6Cj4gPj4gTm8gbmVlZCBmb3Igb3V0X3JlZ3MgbGFiZWwgaW4gaTkxNV9k cml2ZXJfbG9hZCgpLCBzbyByZW1vdmVkIGl0LiAoQW5pbWVzaCkKPiA+Pgo+ID4+IElzc3VlOiBW SVotMjU2OQo+ID4+IFNpZ25lZC1vZmYtYnk6IEEuU3VuaWwgS2FtYXRoIDxzdW5pbC5rYW1hdGhA aW50ZWwuY29tPgo+ID4+IFNpZ25lZC1vZmYtYnk6IERhbWllbiBMZXNwaWF1IDxkYW1pZW4ubGVz cGlhdUBpbnRlbC5jb20+Cj4gPj4gU2lnbmVkLW9mZi1ieTogQW5pbWVzaCBNYW5uYSA8YW5pbWVz aC5tYW5uYUBpbnRlbC5jb20+Cj4gPj4gU2lnbmVkLW9mZi1ieTogSW1yZSBEZWFrIDxpbXJlLmRl YWtAaW50ZWwuY29tPgo+ID4+IC0tLQo+ID4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZp bGUgICAgfCAgIDMgKy0KPiA+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMgIHwg IDExICstCj4gPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jICB8ICAyMCArKysr Cj4gPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICB8ICAxNyArKysKPiA+PiAg IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Nzci5jIHwgMjM0ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKwo+ID4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf Y3NyLmggfCAxNjQgKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gPj4gICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcnYuaCB8ICAgNSArCj4gPj4gICA3IGZpbGVzIGNoYW5nZWQsIDQ1 MSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQo+ID4+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0 IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Nzci5jCj4gPj4gICBjcmVhdGUgbW9kZSAxMDA2 NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY3NyLmgKPiA+Pgo+ID4+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01h a2VmaWxlCj4gPj4gaW5kZXggYTY5MDAyZS4uNTIzOGRlYiAxMDA2NDQKPiA+PiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+ID4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L01ha2VmaWxlCj4gPj4gQEAgLTEyLDcgKzEyLDggQEAgaTkxNS15IDo9IGk5MTVfZHJ2Lm8gXAo+ ID4+ICAgICAgICAgICAgIGk5MTVfc3VzcGVuZC5vIFwKPiA+PiAgIAkgIGk5MTVfc3lzZnMubyBc Cj4gPj4gICAJICBpbnRlbF9wbS5vIFwKPiA+PiAtCSAgaW50ZWxfcnVudGltZV9wbS5vCj4gPj4g KwkgIGludGVsX3J1bnRpbWVfcG0ubyBcCj4gPj4gKwkgIGludGVsX2Nzci5vCj4gPj4gICAKPiA+ PiAgIGk5MTUtJChDT05GSUdfQ09NUEFUKSAgICs9IGk5MTVfaW9jMzIubwo+ID4+ICAgaTkxNS0k KENPTkZJR19ERUJVR19GUykgKz0gaTkxNV9kZWJ1Z2ZzLm8KPiA+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZG1hLmMKPiA+PiBpbmRleCBlNDQxMTZmLi5hMjM4ODg5IDEwMDY0NAo+ID4+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMKPiA+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2RtYS5jCj4gPj4gQEAgLTgxNiw2ICs4MTYsNyBAQCBpbnQgaTkxNV9kcml2ZXJfbG9h ZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIGZsYWdzKQo+ID4+ICAgCXNw aW5fbG9ja19pbml0KCZkZXZfcHJpdi0+bW1pb19mbGlwX2xvY2spOwo+ID4+ICAgCW11dGV4X2lu aXQoJmRldl9wcml2LT5kcGlvX2xvY2spOwo+ID4+ICAgCW11dGV4X2luaXQoJmRldl9wcml2LT5t b2Rlc2V0X3Jlc3RvcmVfbG9jayk7Cj4gPj4gKwltdXRleF9pbml0KCZkZXZfcHJpdi0+Y3NyX2xv Y2spOwo+ID4+ICAgCj4gPj4gICAJaW50ZWxfcG1fc2V0dXAoZGV2KTsKPiA+PiAgIAo+ID4+IEBA IC04NjEsOSArODYyLDEyIEBAIGludCBpOTE1X2RyaXZlcl9sb2FkKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpCj4gPj4gICAKPiA+PiAgIAlpbnRlbF91bmNvcmVf aW5pdChkZXYpOwo+ID4+ICAgCj4gPj4gKwkvKiBMb2FkIENTUiBGaXJtd2FyZSBmb3IgU0tMICov Cj4gPj4gKwlpbnRlbF9jc3JfdWNvZGVfaW5pdChkZXYpOwo+ID4+ICsKPiA+PiAgIAlyZXQgPSBp OTE1X2dlbV9ndHRfaW5pdChkZXYpOwo+ID4+ICAgCWlmIChyZXQpCj4gPj4gLQkJZ290byBvdXRf cmVnczsKPiA+PiArCQlnb3RvIG91dF9mcmVlY3NyOwo+ID4+ICAgCj4gPj4gICAJLyogV0FSTklO RzogQXBwYXJlbnRseSB3ZSBtdXN0IGtpY2sgZmJkZXYgZHJpdmVycyBiZWZvcmUgdmdhY29uLAo+ ID4+ICAgCSAqIG90aGVyd2lzZSB0aGUgdmdhIGZiZGV2IGRyaXZlciBmYWxscyBvdmVyLiAqLwo+ ID4+IEBAIC0xMDMzLDcgKzEwMzcsOCBAQCBvdXRfbXRycmZyZWU6Cj4gPj4gICAJaW9fbWFwcGlu Z19mcmVlKGRldl9wcml2LT5ndHQubWFwcGFibGUpOwo+ID4+ICAgb3V0X2d0dDoKPiA+PiAgIAlp OTE1X2dsb2JhbF9ndHRfY2xlYW51cChkZXYpOwo+ID4+IC1vdXRfcmVnczoKPiA+PiArb3V0X2Zy ZWVjc3I6Cj4gPj4gKwlpbnRlbF9jc3JfdWNvZGVfZmluaShkZXYpOwo+ID4+ICAgCWludGVsX3Vu Y29yZV9maW5pKGRldik7Cj4gPj4gICAJcGNpX2lvdW5tYXAoZGV2LT5wZGV2LCBkZXZfcHJpdi0+ cmVncyk7Cj4gPj4gICBwdXRfYnJpZGdlOgo+ID4+IEBAIC0xMTEzLDYgKzExMTgsOCBAQCBpbnQg aTkxNV9kcml2ZXJfdW5sb2FkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gPj4gICAJbXV0ZXhf dW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gPj4gICAJaTkxNV9nZW1fY2xlYW51cF9zdG9s ZW4oZGV2KTsKPiA+PiAgIAo+ID4+ICsJaW50ZWxfY3NyX3Vjb2RlX2ZpbmkoZGV2KTsKPiA+PiAr Cj4gPj4gICAJaW50ZWxfdGVhcmRvd25fZ21idXMoZGV2KTsKPiA+PiAgIAlpbnRlbF90ZWFyZG93 bl9tY2hiYXIoZGV2KTsKPiA+PiAgIAo+ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+ID4+IGlu ZGV4IGMzZmRiYjAuLmFjZDBlMmIgMTAwNjQ0Cj4gPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuYwo+ID4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMK PiA+PiBAQCAtNTU2LDYgKzU1NiwyNiBAQCB2b2lkIGludGVsX2hwZF9jYW5jZWxfd29yayhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPj4gICAJY2FuY2VsX2RlbGF5ZWRfd29y a19zeW5jKCZkZXZfcHJpdi0+aG90cGx1Z19yZWVuYWJsZV93b3JrKTsKPiA+PiAgIH0KPiA+PiAg IAo+ID4+ICt2b2lkIGk5MTVfZmlybXdhcmVfbG9hZF9lcnJvcl9wcmludChjb25zdCBjaGFyICpm d19wYXRoLCBpbnQgZXJyKQo+ID4+ICt7Cj4gPj4gKwlEUk1fRVJST1IoImZhaWxlZCB0byBsb2Fk IGZpcm13YXJlICVzICglZClcbiIsIGZ3X3BhdGgsIGVycik7Cj4gPj4gKwo+ID4+ICsJLyoKPiA+ PiArCSAqIElmIHRoZSByZWFzb24gaXMgbm90IGtub3duIGFzc3VtZSAtRU5PRU5UIHNpbmNlIHRo YXQncyB0aGUgbW9zdAo+ID4+ICsJICogdXN1YWwgZmFpbHVyZSBtb2RlLgo+ID4+ICsJICovCj4g Pj4gKwlpZiAoIWVycikKPiA+PiArCQllcnIgPSAtRU5PRU5UOwo+ID4+ICsKPiA+PiArCWlmICgh KElTX0JVSUxUSU4oQ09ORklHX0RSTV9JOTE1KSAmJiBlcnIgPT0gLUVOT0VOVCkpCj4gPj4gKwkJ cmV0dXJuOwo+ID4+ICsKPiA+PiArCURSTV9FUlJPUigKPiA+PiArCSAgIlRoZSBkcml2ZXIgaXMg YnVpbHQtaW4sIHNvIHRvIGxvYWQgdGhlIGZpcm13YXJlIHlvdSBuZWVkIHRvXG4iCj4gPj4gKwkg ICJpbmNsdWRlIGl0IGVpdGhlciBpbiB0aGUga2VybmVsIChzZWUgQ09ORklHX0VYVFJBX0ZJUk1X QVJFKSBvclxuIgo+ID4+ICsJICAiaW4geW91ciBpbml0cmQvaW5pdHJhbWZzIGltYWdlLlxuIik7 Cj4gPj4gK30KPiA+PiArCj4gPj4gICBzdGF0aWMgdm9pZCBpbnRlbF9zdXNwZW5kX2VuY29kZXJz KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+PiAgIHsKPiA+PiAgIAlzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2ID0gZGV2X3ByaXYtPmRldjsKPiA+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmgKPiA+PiBpbmRleCA0N2JlNGE1Li45MGU0N2E5IDEwMDY0NAo+ID4+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiA+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oCj4gPj4gQEAgLTY2Nyw2ICs2NjcsMTUgQEAgc3RydWN0IGludGVsX3VuY29y ZSB7Cj4gPj4gICAjZGVmaW5lIGZvcl9lYWNoX2Z3X2RvbWFpbihkb21haW5fXywgZGV2X3ByaXZf XywgaV9fKSBcCj4gPj4gICAJZm9yX2VhY2hfZndfZG9tYWluX21hc2soZG9tYWluX18sIEZPUkNF V0FLRV9BTEwsIGRldl9wcml2X18sIGlfXykKPiA+PiAgIAo+ID4+ICtzdHJ1Y3QgaW50ZWxfY3Ny IHsKPiA+PiArCWNvbnN0IGNoYXIgKmZ3X3BhdGg7Cj4gPj4gKwlfX2JlMzIgKmRtY19wYXlsb2Fk Owo+ID4+ICsJdWludDMyX3QgZG1jX2Z3X3NpemU7Cj4gPj4gKwl1aW50MzJfdCBtbWlvX2NvdW50 Owo+ID4+ICsJdWludDMyX3QgbW1pb2FkZHJbOF07Cj4gPj4gKwl1aW50MzJfdCBtbWlvZGF0YVs4 XTsKPiA+PiArfTsKPiA+PiArCj4gPj4gICAjZGVmaW5lIERFVl9JTkZPX0ZPUl9FQUNIX0ZMQUco ZnVuYywgc2VwKSBcCj4gPj4gICAJZnVuYyhpc19tb2JpbGUpIHNlcCBcCj4gPj4gICAJZnVuYyhp c19pODV4KSBzZXAgXAo+ID4+IEBAIC0xNTczLDYgKzE1ODIsMTEgQEAgc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgewo+ID4+ICAgCj4gPj4gICAJc3RydWN0IGk5MTVfdmlydHVhbF9ncHUgdmdwdTsK PiA+PiAgIAo+ID4+ICsJc3RydWN0IGludGVsX2NzciBjc3I7Cj4gPj4gKwo+ID4+ICsJLyogRGlz cGxheSBDU1ItcmVsYXRlZCBwcm90ZWN0aW9uICovCj4gPj4gKwlzdHJ1Y3QgbXV0ZXggY3NyX2xv Y2s7Cj4gPj4gKwo+ID4+ICAgCXN0cnVjdCBpbnRlbF9nbWJ1cyBnbWJ1c1tHTUJVU19OVU1fUElO U107Cj4gPj4gICAKPiA+PiAgIAkvKiogZ21idXNfbXV0ZXggcHJvdGVjdHMgYWdhaW5zdCBjb25j dXJyZW50IHVzYWdlIG9mIHRoZSBzaW5nbGUgaHcgZ21idXMKPiA+PiBAQCAtMjQyNSw2ICsyNDM5 LDggQEAgc3RydWN0IGRybV9pOTE1X2NtZF90YWJsZSB7Cj4gPj4gICAjZGVmaW5lIEhBU19SQzYo ZGV2KQkJKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDYpCj4gPj4gICAjZGVmaW5lIEhBU19SQzZw KGRldikJCShJTlRFTF9JTkZPKGRldiktPmdlbiA9PSA2IHx8IElTX0lWWUJSSURHRShkZXYpKQo+ ID4+ICAgCj4gPj4gKyNkZWZpbmUgSEFTX0NTUihkZXYpCShJU19TS1lMQUtFKGRldikpCj4gPj4g Kwo+ID4+ICAgI2RlZmluZSBJTlRFTF9QQ0hfREVWSUNFX0lEX01BU0sJCTB4ZmYwMAo+ID4+ICAg I2RlZmluZSBJTlRFTF9QQ0hfSUJYX0RFVklDRV9JRF9UWVBFCQkweDNiMDAKPiA+PiAgICNkZWZp bmUgSU5URUxfUENIX0NQVF9ERVZJQ0VfSURfVFlQRQkJMHgxYzAwCj4gPj4gQEAgLTI1MTUsNiAr MjUzMSw3IEBAIGV4dGVybiB1bnNpZ25lZCBsb25nIGk5MTVfZ2Z4X3ZhbChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ID4+ICAgZXh0ZXJuIHZvaWQgaTkxNV91cGRhdGVfZ2Z4 X3ZhbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ID4+ICAgaW50IHZsdl9m b3JjZV9nZnhfY2xvY2soc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBib29sIG9u KTsKPiA+PiAgIHZvaWQgaW50ZWxfaHBkX2NhbmNlbF93b3JrKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdik7Cj4gPj4gK3ZvaWQgaTkxNV9maXJtd2FyZV9sb2FkX2Vycm9yX3ByaW50 KGNvbnN0IGNoYXIgKmZ3X3BhdGgsIGludCBlcnIpOwo+ID4+ICAgCj4gPj4gICAvKiBpOTE1X2ly cS5jICovCj4gPj4gICB2b2lkIGk5MTVfcXVldWVfaGFuZ2NoZWNrKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpOwo+ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jc3Iu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Nzci5jCj4gPj4gbmV3IGZpbGUgbW9kZSAx MDA2NDQKPiA+PiBpbmRleCAwMDAwMDAwLi5hYjliMTZiCj4gPj4gLS0tIC9kZXYvbnVsbAo+ID4+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Nzci5jCj4gPj4gQEAgLTAsMCArMSwy MzQgQEAKPiA+PiArLyoKPiA+PiArICogQ29weXJpZ2h0IMKpIDIwMTQgSW50ZWwgQ29ycG9yYXRp b24KPiA+PiArICoKPiA+PiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBv ZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKPiA+PiArICogY29weSBvZiB0aGlz IHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdh cmUiKSwKPiA+PiArICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlv biwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgo+ID4+ICsgKiB0aGUgcmlnaHRzIHRvIHVz ZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwK PiA+PiArICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1p dCBwZXJzb25zIHRvIHdob20gdGhlCj4gPj4gKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBk byBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Cj4gPj4gKyAqCj4gPj4g KyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNl IChpbmNsdWRpbmcgdGhlIG5leHQKPiA+PiArICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRl ZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQo+ID4+ICsgKiBT b2Z0d2FyZS4KPiA+PiArICoKPiA+PiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJ UyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKPiA+PiArICogSU1Q TElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJD SEFOVEFCSUxJVFksCj4gPj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFO RCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAo+ID4+ICsgKiBUSEUgQVVUSE9S UyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBP UiBPVEhFUgo+ID4+ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRS QUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwo+ID4+ICsgKiBGUk9NLCBPVVQgT0YgT1Ig SU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJ TkdTCj4gPj4gKyAqIElOIFRIRSBTT0ZUV0FSRS4KPiA+PiArICoKPiA+PiArICovCj4gPj4gKyNp bmNsdWRlIDxsaW51eC9maXJtd2FyZS5oPgo+ID4+ICsjaW5jbHVkZSAiaTkxNV9kcnYuaCIKPiA+ PiArI2luY2x1ZGUgImk5MTVfcmVnLmgiCj4gPj4gKyNpbmNsdWRlICJpbnRlbF9jc3IuaCIKPiA+ PiArCj4gPj4gK3N0YXRpYyBzdHJ1Y3Qgc3RlcHBpbmdfaW5mbyBza2xfc3RlcHBpbmdfaW5mb1td ID0gewo+ID4gTml0cGljazogdGhpcyBzaG91bGQgYmUgY29uc3QuCj4gPgo+ID4+ICsJCXsnQScs ICcwJ30sIHsnQicsICcwJ30sIHsnQycsICcwJ30sCj4gPj4gKwkJeydEJywgJzAnfSwgeydFJywg JzAnfSwgeydGJywgJzAnfSwKPiA+PiArCQl7J0cnLCAnMCd9LCB7J0gnLCAnMCd9LCB7J0knLCAn MCd9Cj4gPj4gK307Cj4gPj4gKwo+ID4+ICtzdGF0aWMgY2hhciBpbnRlbF9nZXRfc3RlcHBpbmco c3RydWN0IGRybV9kZXZpY2UgKmRldikKPiA+PiArewo+ID4+ICsJaWYgKElTX1NLWUxBS0UoZGV2 KSAmJiAoZGV2LT5wZGV2LT5yZXZpc2lvbiA8Cj4gPj4gKwkJCUFSUkFZX1NJWkUoc2tsX3N0ZXBw aW5nX2luZm8pKSkKPiA+PiArCQlyZXR1cm4gc2tsX3N0ZXBwaW5nX2luZm9bZGV2LT5wZGV2LT5y ZXZpc2lvbl0uc3RlcHBpbmc7Cj4gPiBOaXRwaWNrOiBhdCB0aGlzIHBvaW50IGl0J3MganVzdAo+ ID4gaWYgKGRldi0+cGRldi0+cmV2aXNpb24gPCA5KQo+ID4gCXJldHVybiAnQScgKyBkZXYtPnBk ZXYtPnJldmlzaW9uOwo+ID4KPiA+IHcvbyB0aGUgbmVlZCBmb3Igc2tsX3N0ZXBwaW5nX2luZm8u Cj4KPiBJZiB3ZSBoYXZlIGRpZmZlcmVudCBmaXJtd2FyZXMgZm9yIGRpZmZlcmVudCBzdWJzdGVw cGluZyBmb3IgZXhhbXBsZQo+IEEwLEExLEEzIHRoZW4gc3RlcHBpbmcgd2lsbCBiZSBzYW1lIGJ1 dCBzdWJzdGVwcGluZyB3aWxsIGJlIGRpZmZlcmVudAo+IGFuZCBJIGFzc3VtZSByZXZpc2lvbl9p ZCBhbHNvIHdpbGwgYmUgZGlmZmVyZW50LiBBbmQgaWYgd2Ugd2FudCB0byBwdXQKPiBzb21lIGxv Z2ljIGxpa2UgKCdBJyArIGRldi0+cGRldi0+cmV2aXNpb24pIHRoZW4gd2UgY2FuIGRvIGl0IGJ1 dAo+IHNob3VsZCBiZSBiYXNlZCBvbiBic3BlYywgV2h5IEkgYW0gdGVsbGluZyBiZWNhdXNlIGlm IGxhdGVyIHdlIGdldCBzb21lCj4gdGFibGUgYW5kIG5vdCBhYmxlIHRvIGRlcml2ZSBhIGNvbW1v biBsb2dpYyB0aGVuIGFnYWluIG1heSBuZWVkIHRoaXMKPiBraW5kIG9mIGxvb2t1cCB0YWJsZS4K Pgo+IEFuZCB1c2luZyBsb29rdW8gdGFibGUgY29tZXMgd2l0aCBhZHZhbnRhZ2UKPiAtIHRvIGV4 dGVuZCBzdXBwb3J0IGZvciBmdXR1cmUgcGxhdGZvcm0gb25seSBoYXZlIHRvIGFkZCBuZXcgc3Ry dWN0dXJlIG9yCj4gICBjaGFuZ2UgZXhpc3Rpbmcgc3RydWN0dXJlIHRvIGluY29ycG9yYXRlIGFu eSBmdXR1cmUgY2hhbmdlcyBpbiBzdGVwcGluZwo+ICAgaW5mbyB3aGljaCBnb3QgZnJvbSBic3Bl Yy4gLSB0aW1lIGNvbXBsZXhpdHkgd2lsbCBiZSBsZXNzLgo+Cj4gWWVzIGFncmVlIHNwYWNlIG1p Z2h0IGJlIGFuIGlzc3VlLiBTdWdnZXN0IG1lIHRyYWRlIG9mZiBiZXR3ZWVuIHRpbWUgYW5kCj4g c3BhY2UuCgpJdCB3b3VsZCBiZSBqdXN0IHNpbXBsZXIgaW4gdGhlIGFib3ZlIHdheSwgaXQncyBu b3QgYSBzcGFjZSBpc3N1ZS4gSQp0aGluayBvbmNlIHdlIGhhdmUgcGxhdGZvcm1zIHdpdGggc3Vi c3RlcHBpbmdzIG90aGVyIHRoYW4gMCwgd2Ugd2lsbAphbnl3YXkgaGF2ZSB0byBjaGFuZ2UgdGhl IGFib3ZlIHN0cnVjdCBzdGVwcGluZ19pbmZvIGFuZCB0aGUgbG9naWMgdG8KbG9vayB1cCB0aGUg cHJvcGVyIGVudHJ5IGluIGl0LiBCdXQgdGhlIGFib3ZlIHdvcmtzIHRvbywgc28gSSdtIG9rIGlm CnlvdSBrZWVwIGl0IGFzLWlzIGZvciBub3cuIEp1c3QgbWFrZSB0aGUgc3RydWN0IGNvbnN0IHBs ZWFzZS4KCj4gPj4gKwllbHNlCj4gPj4gKwkJcmV0dXJuIC1FTk9EQVRBOwo+ID4+ICt9Cj4gPj4g Kwo+ID4+ICtzdGF0aWMgY2hhciBpbnRlbF9nZXRfc3Vic3RlcHBpbmcoc3RydWN0IGRybV9kZXZp Y2UgKmRldikKPiA+PiArewo+ID4+ICsJaWYgKElTX1NLWUxBS0UoZGV2KSAmJiAoZGV2LT5wZGV2 LT5yZXZpc2lvbiA8Cj4gPj4gKwkJCUFSUkFZX1NJWkUoc2tsX3N0ZXBwaW5nX2luZm8pKSkKPiA+ PiArCQlyZXR1cm4gc2tsX3N0ZXBwaW5nX2luZm9bZGV2LT5wZGV2LT5yZXZpc2lvbl0uc3Vic3Rl cHBpbmc7Cj4gPiBhbmQgdGhpcyBvbmUgaXMgc2ltcGx5Cj4gPiByZXR1cm4gMDsKPgo+IEZvciBu b3cgYWxsIHZhbHVlcyBhcmUgMCBmb3Igc2tsLCBidXQgaW1wbGVtZW50YXRpb24gZG9uZSB0aGlu a2luZyBvZgo+IHN1cHBvcnRpbmcgZnV0dXJlIGNoYW5nZXMuIFdlIG1heSBoYXZlIG11bHRpcGxl IGZpcm13YXJlIGZvciBkaWZmZXJlbnQKPiBzdWJzdGVwcGluZy4KCk9rLCBsZXQncyBrZWVwIGl0 IGFzLWlzLgoKPiA+PiArCWVsc2UKPiA+PiArCQlyZXR1cm4gLUVOT0RBVEE7Cj4gPj4gK30KPiA+ IE1pc3NpbmcgbmV3bGluZS4KPiA+Cj4gPj4gK3ZvaWQgaW50ZWxfY3NyX2xvYWRfcHJvZ3JhbShz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ID4+ICt7Cj4gPj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ID4+ICsJX19iZTMyICpwYXlsb2Fk ID0gZGV2X3ByaXYtPmNzci5kbWNfcGF5bG9hZDsKPiA+PiArCXVpbnQzMl90IGksIGZ3X3NpemU7 Cj4gPj4gKwo+ID4+ICsJaWYgKCFJU19HRU45KGRldikpIHsKPiA+PiArCQlEUk1fRVJST1IoIk5v IENTUiBzdXBwb3J0IGF2YWlsYWJsZSBmb3IgdGhpcyBwbGF0Zm9ybVxuIik7Cj4gPj4gKwkJcmV0 dXJuOwo+ID4+ICsJfQo+ID4+ICsKPiA+PiArCW11dGV4X2xvY2soJmRldl9wcml2LT5jc3JfbG9j ayk7Cj4gPj4gKwkvKiBmd19zaXplIGlzIGR3b3JkcywgY29udmVydGluZyBpdCB0byBieXRlcyBh bmQgbmVhcmVzdCA4IG11bHRpcGxlLiAqLwo+ID4gVGhlIGFib3ZlIGNvbW1lbnQgaXMgc3RhbGUg bm93Lgo+IAo+IEFncmVlLgo+IAo+ID4KPiA+PiArCWZ3X3NpemUgPSBkZXZfcHJpdi0+Y3NyLmRt Y19md19zaXplOwo+ID4+ICsJZm9yIChpID0gMDsgaSA8IGZ3X3NpemU7IGkrKykKPiA+PiArCQlJ OTE1X1dSSVRFKENTUl9QUk9HUkFNX0JBU0UgKyBpICogNCwKPiA+PiArCQkJKHUzMiBfX2ZvcmNl KXBheWxvYWRbaV0pOwo+ID4+ICsKPiA+PiArCWZvciAoaSA9IDA7IGkgPCBkZXZfcHJpdi0+Y3Ny Lm1taW9fY291bnQ7IGkrKykgewo+ID4+ICsJCUk5MTVfV1JJVEUoZGV2X3ByaXYtPmNzci5tbWlv YWRkcltpXSwKPiA+PiArCQkJZGV2X3ByaXYtPmNzci5tbWlvZGF0YVtpXSk7Cj4gPj4gKwl9Cj4g Pj4gKwltdXRleF91bmxvY2soJmRldl9wcml2LT5jc3JfbG9jayk7Cj4gPj4gK30KPiA+PiArCj4g Pj4gK3N0YXRpYyB2b2lkIGZpbmlzaF9jc3JfbG9hZChjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3 LCB2b2lkICpjb250ZXh0KQo+ID4+ICt7Cj4gPj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBjb250ZXh0Owo+ID4+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGRldl9w cml2LT5kZXY7Cj4gPj4gKwlzdHJ1Y3QgaW50ZWxfY3NzX2hlYWRlciAqY3NzX2hlYWRlcjsKPiA+ PiArCXN0cnVjdCBpbnRlbF9wYWNrYWdlX2hlYWRlciAqcGFja2FnZV9oZWFkZXI7Cj4gPj4gKwlz dHJ1Y3QgaW50ZWxfZG1jX2hlYWRlciAqZG1jX2hlYWRlcjsKPiA+PiArCXN0cnVjdCBpbnRlbF9j c3IgKmNzciA9ICZkZXZfcHJpdi0+Y3NyOwo+ID4+ICsJY2hhciBzdGVwcGluZyA9IGludGVsX2dl dF9zdGVwcGluZyhkZXYpOwo+ID4+ICsJY2hhciBzdWJzdGVwcGluZyA9IGludGVsX2dldF9zdWJz dGVwcGluZyhkZXYpOwo+ID4+ICsJdWludDMyX3QgZG1jX29mZnNldCA9IENTUl9ERUZBVUxUX0ZX X09GRlNFVCwgcmVhZGNvdW50ID0gMCwgbmJ5dGVzOwo+ID4+ICsJdWludDMyX3QgaTsKPiA+PiAr CV9fYmUzMiAqZG1jX3BheWxvYWQ7Cj4gPj4gKwo+ID4+ICsJaWYgKCFmdykgewo+ID4+ICsJCWk5 MTVfZmlybXdhcmVfbG9hZF9lcnJvcl9wcmludChjc3ItPmZ3X3BhdGgsIDApOwo+ID4+ICsJCWdv dG8gb3V0Owo+ID4+ICsJfQo+ID4+ICsKPiA+PiArCWlmICgoc3RlcHBpbmcgPT0gLUVOT0RBVEEp IHx8IChzdWJzdGVwcGluZyA9PSAtRU5PREFUQSkpIHsKPiA+PiArCQlEUk1fRVJST1IoIlVua25v d24gc3RlcHBpbmcgaW5mbywgZmlybXdhcmUgbG9hZGluZyBmYWlsZWRcbiIpOwo+ID4+ICsJCWdv dG8gb3V0Owo+ID4+ICsJfQo+ID4+ICsKPiA+PiArCS8qIEV4dHJhY3QgQ1NTIEhlYWRlciBpbmZv cm1hdGlvbiovCj4gPj4gKwljc3NfaGVhZGVyID0gKHN0cnVjdCBpbnRlbF9jc3NfaGVhZGVyICop ZnctPmRhdGE7Cj4gPj4gKwlpZiAoc2l6ZW9mKHN0cnVjdCBpbnRlbF9jc3NfaGVhZGVyKSAhPQo+ ID4+ICsJCShjc3NfaGVhZGVyLT5oZWFkZXJfbGVuICogNCkpIHsKPiA+PiArCQlEUk1fRVJST1Io IkZpcm13YXJlIGhhcyB3cm9uZyBDU1MgaGVhZGVyIGxlbmd0aCAldSBieXRlc1xuIiwKPiA+PiAr CQkJKGNzc19oZWFkZXItPmhlYWRlcl9sZW4gKiA0KSk7Cj4gPj4gKwkJZ290byBvdXQ7Cj4gPj4g Kwl9Cj4gPj4gKwlyZWFkY291bnQgKz0gc2l6ZW9mKHN0cnVjdCBpbnRlbF9jc3NfaGVhZGVyKTsK PiA+PiArCj4gPj4gKwkvKiBFeHRyYWN0IFBhY2thZ2UgSGVhZGVyIGluZm9ybWF0aW9uKi8KPiA+ PiArCXBhY2thZ2VfaGVhZGVyID0gKHN0cnVjdCBpbnRlbF9wYWNrYWdlX2hlYWRlciAqKQo+ID4+ ICsJCQkJCSZmdy0+ZGF0YVtyZWFkY291bnRdOwo+ID4+ICsJaWYgKHNpemVvZihzdHJ1Y3QgaW50 ZWxfcGFja2FnZV9oZWFkZXIpICE9Cj4gPj4gKwkJKHBhY2thZ2VfaGVhZGVyLT5oZWFkZXJfbGVu ICogNCkpIHsKPiA+PiArCQlEUk1fRVJST1IoIkZpcm13YXJlIGhhcyB3cm9uZyBwYWNrYWdlIGhl YWRlciBsZW5ndGggJXUgYnl0ZXNcbiIsCj4gPj4gKwkJCShwYWNrYWdlX2hlYWRlci0+aGVhZGVy X2xlbiAqIDQpKTsKPiA+PiArCQlnb3RvIG91dDsKPiA+PiArCX0KPiA+PiArCXJlYWRjb3VudCAr PSBzaXplb2Yoc3RydWN0IGludGVsX3BhY2thZ2VfaGVhZGVyKTsKPiA+PiArCj4gPj4gKwkvKiBT ZWFyY2ggZm9yIGRtY19vZmZzZXQgdG8gZmluZCBmaXJ3YXJlIGJpbmFyeS4gKi8KPiA+PiArCWZv ciAoaSA9IDA7IGkgPCBwYWNrYWdlX2hlYWRlci0+bnVtX2VudHJpZXM7IGkrKykgewo+ID4+ICsJ CWlmIChwYWNrYWdlX2hlYWRlci0+ZndfaW5mb1tpXS5zdWJzdGVwcGluZyA9PSAnKicgJiYKPiA+ PiArCQkJc3RlcHBpbmcgPT0gcGFja2FnZV9oZWFkZXItPmZ3X2luZm9baV0uc3RlcHBpbmcpIHsK PiA+PiArCQkJZG1jX29mZnNldCA9IHBhY2thZ2VfaGVhZGVyLT5md19pbmZvW2ldLm9mZnNldDsK PiA+PiArCQkJYnJlYWs7Cj4gPj4gKwkJfSBlbHNlIGlmIChzdGVwcGluZyA9PSBwYWNrYWdlX2hl YWRlci0+ZndfaW5mb1tpXS5zdGVwcGluZyAmJgo+ID4+ICsJCQlzdWJzdGVwcGluZyA9PSBwYWNr YWdlX2hlYWRlci0+ZndfaW5mb1tpXS5zdWJzdGVwcGluZykgewo+ID4+ICsJCQlkbWNfb2Zmc2V0 ID0gcGFja2FnZV9oZWFkZXItPmZ3X2luZm9baV0ub2Zmc2V0Owo+ID4+ICsJCQlicmVhazsKPiA+ PiArCQl9IGVsc2UgaWYgKHBhY2thZ2VfaGVhZGVyLT5md19pbmZvW2ldLnN0ZXBwaW5nID09ICcq JyAmJgo+ID4+ICsJCQlwYWNrYWdlX2hlYWRlci0+ZndfaW5mb1tpXS5zdWJzdGVwcGluZyA9PSAn KicpCj4gPj4gKwkJCWRtY19vZmZzZXQgPSBwYWNrYWdlX2hlYWRlci0+ZndfaW5mb1tpXS5vZmZz ZXQ7Cj4gPj4gKwl9Cj4gPj4gKwlpZiAoZG1jX29mZnNldCA9PSBDU1JfREVGQVVMVF9GV19PRkZT RVQpIHsKPiA+PiArCQlEUk1fRVJST1IoIkZpcm13YXJlIG5vdCBzdXBwb3J0ZWQgZm9yICVjIHN0 ZXBwaW5nXG4iLCBzdGVwcGluZyk7Cj4gPj4gKwkJZ290byBvdXQ7Cj4gPj4gKwl9Cj4gPj4gKwly ZWFkY291bnQgKz0gZG1jX29mZnNldDsKPiA+PiArCj4gPj4gKwkvKiBFeHRyYWN0IGRtY19oZWFk ZXIgaW5mb3JtYXRpb24uICovCj4gPj4gKwlkbWNfaGVhZGVyID0gKHN0cnVjdCBpbnRlbF9kbWNf aGVhZGVyICopJmZ3LT5kYXRhW3JlYWRjb3VudF07Cj4gPj4gKwlpZiAoc2l6ZW9mKHN0cnVjdCBp bnRlbF9kbWNfaGVhZGVyKSAhPSAoZG1jX2hlYWRlci0+aGVhZGVyX2xlbikpIHsKPiA+PiArCQlE Uk1fRVJST1IoIkZpcm13YXJlIGhhcyB3cm9uZyBkbWMgaGVhZGVyIGxlbmd0aCAldSBieXRlc1xu IiwKPiA+PiArCQkJCShkbWNfaGVhZGVyLT5oZWFkZXJfbGVuKSk7Cj4gPj4gKwkJZ290byBvdXQ7 Cj4gPj4gKwl9Cj4gPj4gKwlyZWFkY291bnQgKz0gc2l6ZW9mKHN0cnVjdCBpbnRlbF9kbWNfaGVh ZGVyKTsKPiA+PiArCj4gPj4gKwkvKiBDYWNoZSB0aGUgZG1jIGhlYWRlciBpbmZvLiAqLwo+ID4+ ICsJaWYgKGRtY19oZWFkZXItPm1taW9fY291bnQgPiBBUlJBWV9TSVpFKGNzci0+bW1pb2FkZHIp KSB7Cj4gPj4gKwkJRFJNX0VSUk9SKCJGaXJtd2FyZSBoYXMgd3JvbmcgbW1pbyBjb3VudCAldVxu IiwKPiA+PiArCQkJCQkJZG1jX2hlYWRlci0+bW1pb19jb3VudCk7Cj4gPj4gKwkJZ290byBvdXQ7 Cj4gPj4gKwl9Cj4gPj4gKwljc3ItPm1taW9fY291bnQgPSBkbWNfaGVhZGVyLT5tbWlvX2NvdW50 Owo+ID4+ICsJZm9yIChpID0gMDsgaSA8IGRtY19oZWFkZXItPm1taW9fY291bnQ7IGkrKykgewo+ ID4+ICsJCWlmIChkbWNfaGVhZGVyLT5tbWlvYWRkcltpXSA8IENTUl9NTUlPX1NUQVJUX1JBTkdF ICYmCj4gPj4gKwkJCWRtY19oZWFkZXItPm1taW9hZGRyW2ldID4gQ1NSX01NSU9fRU5EX1JBTkdF KSB7Cj4gPj4gKwkJCURSTV9FUlJPUigiIEZpcm13YXJlIGhhcyB3cm9uZyBtbWlvIGFkZHJlc3Mg MHgleFxuIiwKPiA+PiArCQkJCQkJZG1jX2hlYWRlci0+bW1pb2FkZHJbaV0pOwo+ID4+ICsJCQln b3RvIG91dDsKPiA+PiArCQl9Cj4gPj4gKwkJY3NyLT5tbWlvYWRkcltpXSA9IGRtY19oZWFkZXIt Pm1taW9hZGRyW2ldOwo+ID4+ICsJCWNzci0+bW1pb2RhdGFbaV0gPSBkbWNfaGVhZGVyLT5tbWlv ZGF0YVtpXTsKPiA+PiArCX0KPiA+PiArCj4gPj4gKwkvKiBmd19zaXplIGlzIGluIGR3b3Jkcywg c28gbXVsdGlwbGllZCBieSA0IHRvIGNvbnZlcnQgaW50byBieXRlcy4gKi8KPiA+PiArCW5ieXRl cyA9IGRtY19oZWFkZXItPmZ3X3NpemUgKiA0Owo+ID4+ICsJaWYgKG5ieXRlcyA+IENTUl9NQVhf RldfU0laRSkgewo+ID4+ICsJCURSTV9FUlJPUigiQ1NSIGZpcm13YXJlIHRvbyBiaWcgKCV1KSBi eXRlc1xuIiwgbmJ5dGVzKTsKPiA+PiArCQlnb3RvIG91dDsKPiA+PiArCX0KPiA+PiArCWNzci0+ ZG1jX2Z3X3NpemUgPSBkbWNfaGVhZGVyLT5md19zaXplOwo+ID4+ICsKPiA+PiArCWNzci0+ZG1j X3BheWxvYWQgPSBrbWFsbG9jKG5ieXRlcywgR0ZQX0tFUk5FTCk7Cj4gPj4gKwlpZiAoIWNzci0+ ZG1jX3BheWxvYWQpIHsKPiA+PiArCQlEUk1fRVJST1IoIk1lbW9yeSBhbGxvY2F0aW9uIGZhaWxl ZCBmb3IgZG1jIHBheWxvYWRcbiIpOwo+ID4+ICsJCWdvdG8gb3V0Owo+ID4+ICsJfQo+ID4+ICsK PiA+PiArCWRtY19wYXlsb2FkID0gY3NyLT5kbWNfcGF5bG9hZDsKPiA+PiArCWZvciAoaSA9IDA7 IGkgPCBkbWNfaGVhZGVyLT5md19zaXplOyBpKyspIHsKPiA+PiArCQl1aW50MzJfdCAqdG1wID0g KHUzMiAqKSZmdy0+ZGF0YVtyZWFkY291bnQgKyBpICogNF07Cj4gPj4gKwkJLyoKPiA+PiArCQkg KiBUaGUgZmlybXdhcmUgcGF5bG9hZCBpcyBhbiBhcnJheSBvZiAzMiBiaXQgd29yZHMgc3RvcmVk IGluCj4gPj4gKwkJICogbGl0dGxlLWVuZGlhbiBmb3JtYXQgaW4gdGhlIGZpcm13YXJlIGltYWdl IGFuZCBwcm9ncmFtbWVkCj4gPj4gKwkJICogYXMgMzIgYml0IGJpZy1lbmRpYW4gZm9ybWF0IHRv IG1lbW9yeS4KPiA+PiArCQkgKi8KPiA+PiArCQlkbWNfcGF5bG9hZFtpXSA9IGNwdV90b19iZTMy KCp0bXApOwo+ID4+ICsJfQo+ID4+ICsKPiA+PiArCS8qIGxvYWQgY3NyIHByb2dyYW0gZHVyaW5n IHN5c3RlbSBib290LCBhcyBuZWVkZWQgZm9yIERDIHN0YXRlcyAqLwo+ID4+ICsJaW50ZWxfY3Ny X2xvYWRfcHJvZ3JhbShkZXYpOwo+ID4+ICtvdXQ6Cj4gPj4gKwlyZWxlYXNlX2Zpcm13YXJlKGZ3 KTsKPiA+PiArfQo+ID4+ICsKPiA+PiArdm9pZCBpbnRlbF9jc3JfdWNvZGVfaW5pdChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQo+ID4+ICt7Cj4gPj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ID4+ICsJc3RydWN0IGludGVsX2NzciAqY3Ny ID0gJmRldl9wcml2LT5jc3I7Cj4gPj4gKwlpbnQgcmV0Owo+ID4+ICsKPiA+PiArCWlmICghSEFT X0NTUihkZXYpKQo+ID4+ICsJCXJldHVybjsKPiA+PiArCj4gPj4gKwlpZiAoSVNfU0tZTEFLRShk ZXYpKQo+ID4+ICsJCWNzci0+ZndfcGF0aCA9IEk5MTVfQ1NSX1NLTDsKPiA+PiArCWVsc2Ugewo+ ID4+ICsJCURSTV9FUlJPUigiVW5leHBlY3RlZDogbm8ga25vd24gQ1NSIGZpcm13YXJlIGZvciBw bGF0Zm9ybVxuIik7Cj4gPj4gKwkJcmV0dXJuOwo+ID4+ICsJfQo+ID4+ICsKPiA+PiArCS8qIENT UiBzdXBwb3J0ZWQgZm9yIHBsYXRmb3JtLCBsb2FkIGZpcm13YXJlICovCj4gPj4gKwlyZXQgPSBy ZXF1ZXN0X2Zpcm13YXJlX25vd2FpdChUSElTX01PRFVMRSwgdHJ1ZSwgY3NyLT5md19wYXRoLAo+ ID4+ICsJCQkJJmRldl9wcml2LT5kZXYtPnBkZXYtPmRldiwKPiA+PiArCQkJCUdGUF9LRVJORUws IGRldl9wcml2LAo+ID4+ICsJCQkJZmluaXNoX2Nzcl9sb2FkKTsKPiA+PiArCWlmIChyZXQpCj4g Pj4gKwkJaTkxNV9maXJtd2FyZV9sb2FkX2Vycm9yX3ByaW50KGNzci0+ZndfcGF0aCwgcmV0KTsK PiA+PiArCj4gPj4gK30KPiA+PiArCj4gPj4gK3ZvaWQgaW50ZWxfY3NyX3Vjb2RlX2Zpbmkoc3Ry dWN0IGRybV9kZXZpY2UgKmRldikKPiA+PiArewo+ID4+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiA+PiArCj4gPj4gKwlpZiAoIUhBU19D U1IoZGV2KSkKPiA+PiArCQlyZXR1cm47Cj4gPj4gKwo+ID4+ICsJa2ZyZWUoZGV2X3ByaXYtPmNz ci5kbWNfcGF5bG9hZCk7Cj4gPj4gK30KPiA+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfY3NyLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jc3IuaAo+ID4+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPj4gaW5kZXggMDAwMDAwMC4uYzJhNWE1Mwo+ID4+IC0t LSAvZGV2L251bGwKPiA+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jc3IuaAo+ ID4+IEBAIC0wLDAgKzEsMTY0IEBACj4gPj4gKy8qCj4gPj4gKyAqIENvcHlyaWdodCDCqSAyMDE0 IEludGVsIENvcnBvcmF0aW9uCj4gPj4gKyAqCj4gPj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5 IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCj4gPj4g KyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZp bGVzICh0aGUgIlNvZnR3YXJlIiksCj4gPj4gKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdp dGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KPiA+PiArICog dGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1 dGUsIHN1YmxpY2Vuc2UsCj4gPj4gKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdh cmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQo+ID4+ICsgKiBTb2Z0d2FyZSBp cyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25z Ogo+ID4+ICsgKgo+ID4+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBw ZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Cj4gPj4gKyAqIHBhcmFncmFwaCkg c2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBv ZiB0aGUKPiA+PiArICogU29mdHdhcmUuCj4gPj4gKyAqCj4gPj4gKyAqIFRIRSBTT0ZUV0FSRSBJ UyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNT IE9SCj4gPj4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdB UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+ID4+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKPiA+ PiArICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkg Q0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKPiA+PiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFO IEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKPiA+PiArICog RlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVT RSBPUiBPVEhFUiBERUFMSU5HUwo+ID4+ICsgKiBJTiBUSEUgU09GVFdBUkUuCj4gPj4gKyAqCj4g Pj4gKyAqLwo+ID4+ICsKPiA+PiArI2lmbmRlZiBfSU5URUxfQ1NSX0hfCj4gPj4gKyNkZWZpbmUg X0lOVEVMX0NTUl9IXwo+ID4+ICsKPiA+PiArI2RlZmluZSBJOTE1X0NTUl9TS0wgImk5MTUvZG1j X2dlbjkuYmluIgo+ID4+ICsKPiA+PiArTU9EVUxFX0ZJUk1XQVJFKEk5MTVfQ1NSX1NLTCk7Cj4g Pj4gKwo+ID4+ICsvKgo+ID4+ICsqIFNLTCBDU1IgcmVnaXN0ZXJzIGZvciBEQzUgYW5kIERDNgo+ ID4+ICsqLwo+ID4+ICsjZGVmaW5lIENTUl9QUk9HUkFNX0JBU0UJCTB4ODAwMDAKPiA+PiArI2Rl ZmluZSBDU1JfSEVBREVSX09GRlNFVAkJMTI4Cj4gPj4gKyNkZWZpbmUgQ1NSX1NTUF9CQVNFX0FE RFJfR0VOOQkJMHgwMDAwMkZDMAo+ID4+ICsjZGVmaW5lIENTUl9IVFBfQUREUl9TS0wJCTB4MDA1 MDAwMzQKPiA+PiArI2RlZmluZSBDU1JfU1NQX0JBU0UJCQkweDhGMDc0Cj4gPj4gKyNkZWZpbmUg Q1NSX0hUUF9TS0wJCQkweDhGMDA0Cj4gPj4gKyNkZWZpbmUgQ1NSX0xBU1RfV1JJVEUJCQkweDhG MDM0Cj4gPj4gKyNkZWZpbmUgQ1NSX0xBU1RfV1JJVEVfVkFMVUUJCTB4YzAwM2I0MDAKPiA+PiAr LyogTU1JTyBhZGRyZXNzIHJhbmdlIGZvciBDU1IgcHJvZ3JhbSAoMHg4MDAwMCAtIDB4ODJGRkYp ICovCj4gPj4gKyNkZWZpbmUgQ1NSX01BWF9GV19TSVpFCQkJMHgyRkZGCj4gPj4gKyNkZWZpbmUg Q1NSX0RFRkFVTFRfRldfT0ZGU0VUCQkweEZGRkZGRkZGCj4gPj4gKyNkZWZpbmUgQ1NSX01NSU9f U1RBUlRfUkFOR0UJMHg4MDAwMAo+ID4+ICsjZGVmaW5lIENTUl9NTUlPX0VORF9SQU5HRQkJMHg4 RkZGRgo+ID4+ICsKPiA+PiArc3RydWN0IGludGVsX2Nzc19oZWFkZXIgewo+ID4+ICsJLyogMHgw OSBmb3IgRE1DICovCj4gPj4gKwl1aW50MzJfdCBtb2R1bGVfdHlwZTsKPiA+PiArCj4gPj4gKwkv KiBJbmNsdWRlcyB0aGUgRE1DIHNwZWNpZmljIGhlYWRlciBpbiBkd29yZHMgKi8KPiA+PiArCXVp bnQzMl90IGhlYWRlcl9sZW47Cj4gPj4gKwo+ID4+ICsJLyogYWx3YXlzIHZhbHVlIHdvdWxkIGJl IDB4MTAwMDAgKi8KPiA+PiArCXVpbnQzMl90IGhlYWRlcl92ZXI7Cj4gPj4gKwo+ID4+ICsJLyog Tm90IHVzZWQgKi8KPiA+PiArCXVpbnQzMl90IG1vZHVsZV9pZDsKPiA+PiArCj4gPj4gKwkvKiBO b3QgdXNlZCAqLwo+ID4+ICsJdWludDMyX3QgbW9kdWxlX3ZlbmRvcjsKPiA+PiArCj4gPj4gKwkv KiBpbiBZWVlZTU1ERCBmb3JtYXQgKi8KPiA+PiArCXVpbnQzMl90IGRhdGU7Cj4gPj4gKwo+ID4+ ICsJLyogU2l6ZSBpbiBkd29yZHMgKENTU19IZWFkZXJsZW4gKyBQYWNrYWdlSGVhZGVyTGVuICsg ZG1jIEZXc0xlbikvNCAqLwo+ID4+ICsJdWludDMyX3Qgc2l6ZTsKPiA+PiArCj4gPj4gKwkvKiBO b3QgdXNlZCAqLwo+ID4+ICsJdWludDMyX3Qga2V5X3NpemU7Cj4gPj4gKwo+ID4+ICsJLyogTm90 IHVzZWQgKi8KPiA+PiArCXVpbnQzMl90IG1vZHVsdXNfc2l6ZTsKPiA+PiArCj4gPj4gKwkvKiBO b3QgdXNlZCAqLwo+ID4+ICsJdWludDMyX3QgZXhwb25lbnRfc2l6ZTsKPiA+PiArCj4gPj4gKwkv KiBOb3QgdXNlZCAqLwo+ID4+ICsJdWludDMyX3QgcmVzZXJ2ZWQxWzEyXTsKPiA+PiArCj4gPj4g KwkvKiBNYWpvciBNaW5vciAqLwo+ID4+ICsJdWludDMyX3QgdmVyc2lvbjsKPiA+PiArCj4gPj4g KwkvKiBOb3QgdXNlZCAqLwo+ID4+ICsJdWludDMyX3QgcmVzZXJ2ZWQyWzhdOwo+ID4+ICsKPiA+ PiArCS8qIE5vdCB1c2VkICovCj4gPj4gKwl1aW50MzJfdCBrZXJuZWxfaGVhZGVyX2luZm87Cj4g Pj4gK30gX19wYWNrZWQ7Cj4gPj4gKwo+ID4+ICtzdHJ1Y3QgaW50ZWxfZndfaW5mbyB7Cj4gPj4g Kwl1aW50MTZfdCByZXNlcnZlZDE7Cj4gPj4gKwo+ID4+ICsJLyogU3RlcHBpbmcgKEEsIEIsIEMs IC4uLiwgKikuICogaXMgYSB3aWxkY2FyZCAqLwo+ID4+ICsJY2hhciBzdGVwcGluZzsKPiA+PiAr Cj4gPj4gKwkvKiBTdWItc3RlcHBpbmcgKDAsIDEsIC4uLiwgKikuICogaXMgYSB3aWxkY2FyZCAq Lwo+ID4+ICsJY2hhciBzdWJzdGVwcGluZzsKPiA+PiArCj4gPj4gKwl1aW50MzJfdCBvZmZzZXQ7 Cj4gPj4gKwl1aW50MzJfdCByZXNlcnZlZDI7Cj4gPj4gK30gX19wYWNrZWQ7Cj4gPj4gKwo+ID4+ ICtzdHJ1Y3QgaW50ZWxfcGFja2FnZV9oZWFkZXIgewo+ID4+ICsJLyogRE1DIGNvbnRhaW5lciBo ZWFkZXIgbGVuZ3RoIGluIGR3b3JkcyAqLwo+ID4+ICsJdW5zaWduZWQgY2hhciBoZWFkZXJfbGVu Owo+ID4+ICsKPiA+PiArCS8qIGFsd2F5cyB2YWx1ZSB3b3VsZCBiZSAweDAxICovCj4gPj4gKwl1 bnNpZ25lZCBjaGFyIGhlYWRlcl92ZXI7Cj4gPj4gKwo+ID4+ICsJdW5zaWduZWQgY2hhciByZXNl cnZlZFsxMF07Cj4gPj4gKwo+ID4+ICsJLyogTnVtYmVyIG9mIHZhbGlkIGVudHJpZXMgaW4gdGhl IEZXSW5mbyBhcnJheSBiZWxvdyAqLwo+ID4+ICsJdWludDMyX3QgbnVtX2VudHJpZXM7Cj4gPj4g Kwo+ID4+ICsJc3RydWN0IGludGVsX2Z3X2luZm8gZndfaW5mb1syMF07Cj4gPj4gK30gX19wYWNr ZWQ7Cj4gPj4gKwo+ID4+ICtzdHJ1Y3QgaW50ZWxfZG1jX2hlYWRlciB7Cj4gPj4gKwkvKiBhbHdh eXMgdmFsdWUgd291bGQgYmUgMHg0MDQwM0UzRSAqLwo+ID4+ICsJdWludDMyX3Qgc2lnbmF0dXJl Owo+ID4+ICsKPiA+PiArCS8qIERNQyBiaW5hcnkgaGVhZGVyIGxlbmd0aCAqLwo+ID4+ICsJdW5z aWduZWQgY2hhciBoZWFkZXJfbGVuOwo+ID4+ICsKPiA+PiArCS8qIDB4MDEgKi8KPiA+PiArCXVu c2lnbmVkIGNoYXIgaGVhZGVyX3ZlcjsKPiA+PiArCj4gPj4gKwkvKiBSZXNlcnZlZCAqLwo+ID4+ ICsJdWludDE2X3QgZG1jY192ZXI7Cj4gPj4gKwo+ID4+ICsJLyogTWFqb3IsIE1pbm9yICovCj4g Pj4gKwl1aW50MzJfdAlwcm9qZWN0Owo+ID4+ICsKPiA+PiArCS8qIEZpcm13YXJlIHByb2dyYW0g c2l6ZSAoZXhjbHVkaW5nIGhlYWRlcikgaW4gZHdvcmRzICovCj4gPj4gKwl1aW50MzJfdAlmd19z aXplOwo+ID4+ICsKPiA+PiArCS8qIE1ham9yIE1pbm9yIHZlcnNpb24gKi8KPiA+PiArCXVpbnQz Ml90IGZ3X3ZlcnNpb247Cj4gPj4gKwo+ID4+ICsJLyogTnVtYmVyIG9mIHZhbGlkIE1NSU8gY3lj bGVzIHByZXNlbnQuICovCj4gPj4gKwl1aW50MzJfdCBtbWlvX2NvdW50Owo+ID4+ICsKPiA+PiAr CS8qIE1NSU8gYWRkcmVzcyAqLwo+ID4+ICsJdWludDMyX3QgbW1pb2FkZHJbOF07Cj4gPj4gKwo+ ID4+ICsJLyogTU1JTyBkYXRhICovCj4gPj4gKwl1aW50MzJfdCBtbWlvZGF0YVs4XTsKPiA+PiAr Cj4gPj4gKwkvKiBGVyBmaWxlbmFtZSAgKi8KPiA+PiArCXVuc2lnbmVkIGNoYXIgZGZpbGVbMzJd Owo+ID4+ICsKPiA+PiArCXVpbnQzMl90IHJlc2VydmVkMVsyXTsKPiA+PiArfSBfX3BhY2tlZDsK PiA+PiArCj4gPj4gK3N0cnVjdCBzdGVwcGluZ19pbmZvIHsKPiA+PiArCWNoYXIgc3RlcHBpbmc7 Cj4gPj4gKwljaGFyIHN1YnN0ZXBwaW5nOwo+ID4+ICt9IF9fcGFja2VkOwo+ID4gc3RlcHBpbmdf aW5mbyBkb2Vzbid0IG5lZWQgdG8gYmUgcGFja2VkLgo+IAo+IFRvIGF2b2lkIHN0cnVjdHVyZSBw YWRkaW5nIHVzZWQgX19wYWNrZWQgd2hpY2ggd2lsbCBzYXZlIHNvbWUgbWVtb3J5LgoKTm8sIHRo ZSByZWFzb24gZm9yIF9fcGFja2VkIGFib3ZlIGlzIHNpbXBseSBjb3JyZWN0bmVzcyBmb3IgYmlu YXJ5CmludGVyZmFjZXMgbGlrZSB3aGF0IHdlIGhhdmUgd2l0aCB0aGUgRE1DIGZpcm13YXJlLiBG b3IgYW55dGhpbmcgZWxzZSB3ZQpjYW4gdHJ1c3QgdGhlIGNvbXBpbGVyIHRvIGRvIHRoZSByaWdo dCB0aGluZyB3cnQuIHRvIGFsaWdubWVudC9wYWRkaW5nLgoKPiA+IFdoYXQgSSBtZWFudCBpcyB0 byBhZGQgYWxsIHRoZXNlIHRvIGludGVsX2Nzci5jLiBJIGRvbid0IHRoaW5rCj4gPiB0aGVyZSBp cyBhbnkgcmVhc29uIGZvciBhIG5ldyBoZWFkZXIgZmlsZSB1bmxlc3MgeW91IG5lZWQgdG8gc2hh cmUKPiA+IHNvbWV0aGluaCBhbW9uZyBtdWx0aXBsZSAuYyBtb2R1bGVzLgo+Cj4gaW50ZWxfcnVu dGltZV9wbS5jIGlzIHVzaW5nIGZldyBtYWNybyB3aGljaCBpcyBkZWZpbmVkIGluIHRoaXMgaGVh ZGVyCj4gZmlsZSBpbiBsYXRlciBwYXRjaGVzLiBUaGVuIHdlIGNhbiBtb3ZlIGFsbCBtYWNybyBk ZWZpbml0aW9uIHRvCj4gaTkxNV9kcnYuaCBvciBlbHNlIGNhbiBwdXQgZmV3IG1hY3JvIGluIGlu dGVsX2Nzci5jIGFuZCBmZXcgaW4KPiBpOTE1X2Rydi5oLiBHaXZlIG1lIHlvdXIgc3VnZ2VzdGlv bi4KClllcywgSSBtaXNzZWQgYXNzZXJ0X2Nzcl9sb2FkZWQoKS4gQXMgdGhpcyBpcyByZWFsbHkg c29tZXRoaW5nIGludGVybmFsCnRvIHRoZSBETUMgZmlybXdhcmUsIEkgd291bGQganVzdCBtb3Zl IGFzc2VydF9jc3JfbG9hZGVkKCkgdG8KaW50ZWxfY3NyLmMgYW5kIGV4cG9ydCB0aGF0IGZyb20g aW50ZWxfZHJ2LmguCgotLUltcmUKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v aW50ZWwtZ2Z4Cg==