From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=192.55.52.93; helo=mga11.intel.com; envelope-from=yonghong.zhu@intel.com; receiver=edk2-devel@lists.01.org Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 3787721CB2E25 for ; Tue, 2 Jan 2018 01:48:09 -0800 (PST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 02 Jan 2018 01:53:10 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.45,496,1508828400"; d="scan'208";a="7378447" Received: from fmsmsx105.amr.corp.intel.com ([10.18.124.203]) by orsmga008.jf.intel.com with ESMTP; 02 Jan 2018 01:53:09 -0800 Received: from fmsmsx122.amr.corp.intel.com (10.18.125.37) by FMSMSX105.amr.corp.intel.com (10.18.124.203) with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 2 Jan 2018 01:53:09 -0800 Received: from shsmsx152.ccr.corp.intel.com (10.239.6.52) by fmsmsx122.amr.corp.intel.com (10.18.125.37) with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 2 Jan 2018 01:53:07 -0800 Received: from shsmsx103.ccr.corp.intel.com ([169.254.4.213]) by SHSMSX152.ccr.corp.intel.com ([169.254.6.93]) with mapi id 14.03.0319.002; Tue, 2 Jan 2018 17:53:05 +0800 From: "Zhu, Yonghong" To: 'Ard Biesheuvel' CC: "'edk2-devel@lists.01.org'" , "Feng, YunhuaX" , 'Joakim Bech' , "Zhu, Yonghong" Thread-Topic: [edk2] [Patch] BaseTools: Add DevicePath support for PCD values Thread-Index: AQHTf4In/Nv+dBkHO0ql91MWR27ALaNf0ZMAgACNPbCAAAD/kA== Date: Tue, 2 Jan 2018 09:53:04 +0000 Message-ID: References: <1514427485-4112-1-git-send-email-yonghong.zhu@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiN2RmMmNkYTAtMGRmYS00ZmM1LThjMzItMTBlZjBkMWZiMDU4IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE2LjUuOS4zIiwiVHJ1c3RlZExhYmVsSGFzaCI6ImJmKzRndHA1MkNSWkphNDZHeGdvRXU2R2dweWMwZ1NpWmI5YkF1ak9jUms9In0= x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.0.0.116 dlp-reaction: no-action x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [Patch] BaseTools: Add DevicePath support for PCD values X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 02 Jan 2018 09:48:09 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 U3RpbGwgaW4gdmVyaWZ5IHRoZSBuZXcgcGF0Y2hlcywgd2lsbCBzZW5kIGl0IG91dCBzb29uLg0K DQpCZXN0IFJlZ2FyZHMsDQpaaHUgWW9uZ2hvbmcNCg0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0t LS0NCkZyb206IFpodSwgWW9uZ2hvbmcgDQpTZW50OiBUdWVzZGF5LCBKYW51YXJ5IDIsIDIwMTgg NTo0OSBQTQ0KVG86IEFyZCBCaWVzaGV1dmVsIDxhcmQuYmllc2hldXZlbEBsaW5hcm8ub3JnPg0K Q2M6IGVkazItZGV2ZWxAbGlzdHMuMDEub3JnOyBGZW5nLCBZdW5odWFYIDx5dW5odWF4LmZlbmdA aW50ZWwuY29tPjsgSm9ha2ltIEJlY2ggPGpvYWtpbS5iZWNoQGxpbmFyby5vcmc+OyBaaHUsIFlv bmdob25nIDx5b25naG9uZy56aHVAaW50ZWwuY29tPg0KU3ViamVjdDogUkU6IFtlZGsyXSBbUGF0 Y2hdIEJhc2VUb29sczogQWRkIERldmljZVBhdGggc3VwcG9ydCBmb3IgUENEIHZhbHVlcw0KDQpU aGFua3MuIEkgYWxyZWFkeSBjcmVhdGVkIHBhdGNoZXMgZm9yIGl0Lg0KDQpCZXN0IFJlZ2FyZHMs DQpaaHUgWW9uZ2hvbmcNCg0KDQotLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KRnJvbTogQXJk IEJpZXNoZXV2ZWwgW21haWx0bzphcmQuYmllc2hldXZlbEBsaW5hcm8ub3JnXSANClNlbnQ6IFR1 ZXNkYXksIEphbnVhcnkgMDIsIDIwMTggNToyNCBQTQ0KVG86IFpodSwgWW9uZ2hvbmcgPHlvbmdo b25nLnpodUBpbnRlbC5jb20+DQpDYzogZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc7IEZlbmcsIFl1 bmh1YVggPHl1bmh1YXguZmVuZ0BpbnRlbC5jb20+OyBKb2FraW0gQmVjaCA8am9ha2ltLmJlY2hA bGluYXJvLm9yZz4NClN1YmplY3Q6IFJlOiBbZWRrMl0gW1BhdGNoXSBCYXNlVG9vbHM6IEFkZCBE ZXZpY2VQYXRoIHN1cHBvcnQgZm9yIFBDRCB2YWx1ZXMNCg0KSGVsbG8gWW9uZ2hvbmcsDQoNClRo aXMgcGF0Y2ggYnJlYWtzIHRoZSBidWlsZCBvbiBzb21lIHRvb2xjaGFpbnMuIFBsZWFzZSBzZWUg YmVsb3cuDQoNCk9uIDI4IERlY2VtYmVyIDIwMTcgYXQgMDI6MTgsIFlvbmdob25nIFpodSA8eW9u Z2hvbmcuemh1QGludGVsLmNvbT4gd3JvdGU6DQo+IFVzZSBDIGNvZGUgcGFyc2UgZGV2aWNlIHBh dGggdG8gb3V0cHV0IGhleCBzdHJpbmcsIGFuZCBQeXRob24NCj4gcnVuIGNvbW1hbmQgd2hlbiBQ Q0QgVmFsdWUgbmVlZCBkZXZpY2UgcGF0aCBwYXJzZS4NCj4NCj4gaHR0cHM6Ly9idWd6aWxsYS50 aWFub2NvcmUub3JnL3Nob3dfYnVnLmNnaT9pZD01NDENCj4NCj4gQ29udHJpYnV0ZWQtdW5kZXI6 IFRpYW5vQ29yZSBDb250cmlidXRpb24gQWdyZWVtZW50IDEuMQ0KPiBTaWduZWQtb2ZmLWJ5OiBZ dW5odWEgRmVuZyA8eXVuaHVheC5mZW5nQGludGVsLmNvbT4NCj4gU2lnbmVkLW9mZi1ieTogWW9u Z2hvbmcgWmh1IDx5b25naG9uZy56aHVAaW50ZWwuY29tPg0KPiAtLS0NCj4gIEJhc2VUb29scy9C aW5XcmFwcGVycy9Qb3NpeExpa2UvRGV2aWNlUGF0aCAgICAgICAgIHwgICAyOSArDQo+ICBCYXNl VG9vbHMvU291cmNlL0JpbmFyeUZpbGVzLnR4dCAgICAgICAgICAgICAgICAgICB8ICAgIDMgKy0N Cj4gIEJhc2VUb29scy9Tb3VyY2UvQy9Db21tb24vQ29tbW9uTGliLmMgICAgICAgICAgICAgIHwg MTYyOSArKysrKysrKysrDQo+ICBCYXNlVG9vbHMvU291cmNlL0MvQ29tbW9uL0NvbW1vbkxpYi5o ICAgICAgICAgICAgICB8ICAzMDQgKy0NCj4gIEJhc2VUb29scy9Tb3VyY2UvQy9EZXZpY2VQYXRo L0RldmljZVBhdGguYyAgICAgICAgIHwgIDE4NiArKw0KPiAgQmFzZVRvb2xzL1NvdXJjZS9DL0Rl dmljZVBhdGgvRGV2aWNlUGF0aEZyb21UZXh0LmMgfCAzMzQ5ICsrKysrKysrKysrKysrKysrKysr DQo+ICAuLi4vU291cmNlL0MvRGV2aWNlUGF0aC9EZXZpY2VQYXRoVXRpbGl0aWVzLmMgICAgICB8 ICA4NzUgKysrKysNCj4gIEJhc2VUb29scy9Tb3VyY2UvQy9EZXZpY2VQYXRoL0dOVW1ha2VmaWxl ICAgICAgICAgIHwgICAzMCArDQo+ICBCYXNlVG9vbHMvU291cmNlL0MvRGV2aWNlUGF0aC9NYWtl ZmlsZSAgICAgICAgICAgICB8ICAgMjQgKw0KPiAgQmFzZVRvb2xzL1NvdXJjZS9DL0RldmljZVBh dGgvVWVmaURldmljZVBhdGhMaWIuYyAgfCAgMjk4ICsrDQo+ICBCYXNlVG9vbHMvU291cmNlL0Mv RGV2aWNlUGF0aC9VZWZpRGV2aWNlUGF0aExpYi5oICB8ICA0NTIgKysrDQo+ICBCYXNlVG9vbHMv U291cmNlL0MvR05VbWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICB8ICAgIDMgKy0NCj4gIC4u Li9Tb3VyY2UvQy9JbmNsdWRlL0luZHVzdHJ5U3RhbmRhcmQvQmx1ZXRvb3RoLmggIHwgICA2MiAr DQo+ICBCYXNlVG9vbHMvU291cmNlL0MvSW5jbHVkZS9Qcm90b2NvbC9EZXZpY2VQYXRoLmggICB8 IDEzOTEgKysrKysrKysNCj4gIC4uLi9DL0luY2x1ZGUvUHJvdG9jb2wvRGV2aWNlUGF0aFV0aWxp dGllcy5oICAgICAgIHwgIDI5NCArKw0KPiAgQmFzZVRvb2xzL1NvdXJjZS9DL01ha2VmaWxlICAg ICAgICAgICAgICAgICAgICAgICAgfCAgICA1ICstDQo+ICBCYXNlVG9vbHMvU291cmNlL1B5dGhv bi9Db21tb24vTWlzYy5weSAgICAgICAgICAgICB8ICAgMzQgKy0NCj4gIDE3IGZpbGVzIGNoYW5n ZWQsIDg5NTkgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkNCj4gIGNyZWF0ZSBtb2RlIDEw MDc1NSBCYXNlVG9vbHMvQmluV3JhcHBlcnMvUG9zaXhMaWtlL0RldmljZVBhdGgNCj4gIGNyZWF0 ZSBtb2RlIDEwMDY0NCBCYXNlVG9vbHMvU291cmNlL0MvRGV2aWNlUGF0aC9EZXZpY2VQYXRoLmMN Cj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBCYXNlVG9vbHMvU291cmNlL0MvRGV2aWNlUGF0aC9EZXZp Y2VQYXRoRnJvbVRleHQuYw0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IEJhc2VUb29scy9Tb3VyY2Uv Qy9EZXZpY2VQYXRoL0RldmljZVBhdGhVdGlsaXRpZXMuYw0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0 IEJhc2VUb29scy9Tb3VyY2UvQy9EZXZpY2VQYXRoL0dOVW1ha2VmaWxlDQo+ICBjcmVhdGUgbW9k ZSAxMDA2NDQgQmFzZVRvb2xzL1NvdXJjZS9DL0RldmljZVBhdGgvTWFrZWZpbGUNCj4gIGNyZWF0 ZSBtb2RlIDEwMDY0NCBCYXNlVG9vbHMvU291cmNlL0MvRGV2aWNlUGF0aC9VZWZpRGV2aWNlUGF0 aExpYi5jDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgQmFzZVRvb2xzL1NvdXJjZS9DL0RldmljZVBh dGgvVWVmaURldmljZVBhdGhMaWIuaA0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IEJhc2VUb29scy9T b3VyY2UvQy9JbmNsdWRlL0luZHVzdHJ5U3RhbmRhcmQvQmx1ZXRvb3RoLmgNCj4gIGNyZWF0ZSBt b2RlIDEwMDY0NCBCYXNlVG9vbHMvU291cmNlL0MvSW5jbHVkZS9Qcm90b2NvbC9EZXZpY2VQYXRo LmgNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBCYXNlVG9vbHMvU291cmNlL0MvSW5jbHVkZS9Qcm90 b2NvbC9EZXZpY2VQYXRoVXRpbGl0aWVzLmgNCj4NCi4uLg0KPiBkaWZmIC0tZ2l0IGEvQmFzZVRv b2xzL1NvdXJjZS9DL0RldmljZVBhdGgvRGV2aWNlUGF0aC5jIGIvQmFzZVRvb2xzL1NvdXJjZS9D L0RldmljZVBhdGgvRGV2aWNlUGF0aC5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4 IDAwMDAwMDAuLjRjODcxNjMNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9CYXNlVG9vbHMvU291 cmNlL0MvRGV2aWNlUGF0aC9EZXZpY2VQYXRoLmMNCj4gQEAgLTAsMCArMSwxODYgQEANCj4gKy8q KiBAZmlsZQ0KPiArICBEZWZpbml0aW9uIGZvciBEZXZpY2UgUGF0aCBUb29sLg0KPiArDQo+ICtD b3B5cmlnaHQgKGMpIDIwMTcsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVk LjxCUj4NCj4gK1RoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4g K2FyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25k aXRpb25zIG9mIHRoZSBCU0QgTGljZW5zZQ0KPiArd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0 cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0K PiAraHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiArDQo+ ICtUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4g IkFTIElTIiBCQVNJUywNCj4gK1dJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMg T0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ICsNCj4gKyoqLw0KPiAr DQo+ICsjaW5jbHVkZSAiVWVmaURldmljZVBhdGhMaWIuaCINCj4gKw0KPiArLy8NCj4gKy8vIFV0 aWxpdHkgTmFtZQ0KPiArLy8NCj4gKyNkZWZpbmUgVVRJTElUWV9OQU1FICAiRGV2aWNlUGF0aCIN Cj4gKw0KPiArLy8NCj4gKy8vIFV0aWxpdHkgdmVyc2lvbiBpbmZvcm1hdGlvbg0KPiArLy8NCj4g KyNkZWZpbmUgVVRJTElUWV9NQUpPUl9WRVJTSU9OIDANCj4gKyNkZWZpbmUgVVRJTElUWV9NSU5P Ul9WRVJTSU9OIDENCj4gKw0KPiArRUZJX0dVSUQgZ0VmaURlYnVnUG9ydERldmljZVBhdGhHdWlk ID0gREVWSUNFX1BBVEhfTUVTU0FHSU5HX0RFQlVHUE9SVDsNCj4gK0VGSV9HVUlEIGdFZmlQY0Fu c2lHdWlkID0gRUZJX1BDX0FOU0lfR1VJRDsNCj4gK0VGSV9HVUlEIGdFZmlWVDEwMEd1aWQgPSBF RklfVlRfMTAwX0dVSUQ7DQo+ICtFRklfR1VJRCBnRWZpVlQxMDBQbHVzR3VpZCA9IEVGSV9WVF8x MDBfUExVU19HVUlEOw0KPiArRUZJX0dVSUQgZ0VmaVZUVVRGOEd1aWQgPSBFRklfVlRfVVRGOF9H VUlEOw0KPiArRUZJX0dVSUQgZ0VmaVVhcnREZXZpY2VQYXRoR3VpZCA9IEVGSV9VQVJUX0RFVklD RV9QQVRIX0dVSUQ7DQo+ICtFRklfR1VJRCBnRWZpU2FzRGV2aWNlUGF0aEd1aWQgPSBFRklfU0FT X0RFVklDRV9QQVRIX0dVSUQ7DQo+ICtFRklfR1VJRCBnRWZpVmlydHVhbERpc2tHdWlkID0gRUZJ X1ZJUlRVQUxfRElTS19HVUlEOw0KPiArRUZJX0dVSUQgZ0VmaVZpcnR1YWxDZEd1aWQgPSBFRklf VklSVFVBTF9DRF9HVUlEOw0KPiArRUZJX0dVSUQgZ0VmaVBlcnNpc3RlbnRWaXJ0dWFsRGlza0d1 aWQgPSBFRklfUEVSU0lTVEVOVF9WSVJUVUFMX0RJU0tfR1VJRDsNCj4gK0VGSV9HVUlEIGdFZmlQ ZXJzaXN0ZW50VmlydHVhbENkR3VpZCA9IEVGSV9QRVJTSVNURU5UX1ZJUlRVQUxfQ0RfR1VJRDsN Cj4gKw0KPiArU1RBVElDDQo+ICtWT0lEDQo+ICtWZXJzaW9uICgNCj4gKyAgVk9JRA0KPiArKQ0K PiArLyorKw0KPiArDQo+ICtSb3V0aW5lIERlc2NyaXB0aW9uOg0KPiArDQo+ICsgIERpc3BsYXlz IHRoZSBzdGFuZGFyZCB1dGlsaXR5IGluZm9ybWF0aW9uIHRvIFNEVE9VVA0KPiArDQo+ICtBcmd1 bWVudHM6DQo+ICsNCj4gKyAgTm9uZQ0KPiArDQo+ICtSZXR1cm5zOg0KPiArDQo+ICsgIE5vbmUN Cj4gKw0KPiArLS0qLw0KPiArew0KPiArICBmcHJpbnRmIChzdGRvdXQsICIlcyBWZXJzaW9uICVk LiVkICVzIFxuIiwgVVRJTElUWV9OQU1FLCBVVElMSVRZX01BSk9SX1ZFUlNJT04sIFVUSUxJVFlf TUlOT1JfVkVSU0lPTiwgX19CVUlMRF9WRVJTSU9OKTsNCj4gK30NCj4gKw0KPiArU1RBVElDDQo+ ICtWT0lEDQo+ICtVc2FnZSAoDQo+ICsgIFZPSUQNCj4gKyAgKQ0KPiArLyorKw0KPiArDQo+ICtS b3V0aW5lIERlc2NyaXB0aW9uOg0KPiArDQo+ICsgIERpc3BsYXlzIHRoZSB1dGlsaXR5IHVzYWdl IHN5bnRheCB0byBTVERPVVQNCj4gKw0KPiArQXJndW1lbnRzOg0KPiArDQo+ICsgIE5vbmUNCj4g Kw0KPiArUmV0dXJuczoNCj4gKw0KPiArICBOb25lDQo+ICsNCj4gKy0tKi8NCj4gK3sNCj4gKyAg Ly8NCj4gKyAgLy8gU3VtbWFyeSB1c2FnZQ0KPiArICAvLw0KPiArICBmcHJpbnRmIChzdGRvdXQs ICJcblVzYWdlOiAlcyBbb3B0aW9uc11cblxuIiwgVVRJTElUWV9OQU1FKTsNCj4gKw0KPiArICAv Lw0KPiArICAvLyBDb3B5cmlnaHQgZGVjbGFyYXRpb24NCj4gKyAgLy8NCj4gKyAgZnByaW50ZiAo c3Rkb3V0LCAiQ29weXJpZ2h0IChjKSAyMDE3LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0 cyByZXNlcnZlZC5cblxuIik7DQo+ICsgIC8vDQo+ICsgIC8vIERldGFpbHMgT3B0aW9uDQo+ICsg IC8vDQo+ICsgIGZwcmludGYgKHN0ZG91dCwgIk9wdGlvbnM6XG4iKTsNCj4gKyAgZnByaW50ZiAo c3Rkb3V0LCAiICBEZXZpY2VQYXRoU3RyaW5nICAgICAgRGV2aWNlIFBhdGggc3RyaW5nIGlzIHNw ZWNpZmllZCwgbm8gc3BhY2UgY2hhcmFjdGVyLlxuIg0KPiArICAgICAgICAgICAgICAgICAgICIg ICAgICAgICAgICAgICAgICAgICAgICBFeGFtcGxlOiBcIlBjaVJvb3QoMCkvUGNpKDAsMClcIlxu Iik7DQo+ICsNCj4gKyAgZnByaW50ZiAoc3Rkb3V0LCAiICAtLXZlcnNpb24gICAgICAgICAgICAg U2hvdyBwcm9ncmFtJ3MgdmVyc2lvbiBudW1iZXIgYW5kIGV4aXQuXG4iKTsNCj4gKyAgZnByaW50 ZiAoc3Rkb3V0LCAiICAtaCwgLS1oZWxwICAgICAgICAgICAgU2hvdyB0aGlzIGhlbHAgbWVzc2Fn ZSBhbmQgZXhpdC5cbiIpOw0KPiArfQ0KPiArDQo+ICsNCj4gK3ZvaWQgcHJpbnRfbWVtKHZvaWQg Y29uc3QgKnZwLCBzaXplX3QgbikNCj4gK3sNCj4gKyAgICB1bnNpZ25lZCBjaGFyIGNvbnN0ICpw ID0gdnA7DQo+ICsgICAgZm9yIChzaXplX3QgaT0wOyBpPG47IGkrKykgew0KDQpUaGlzIHZpb2xh dGVzIHRoZSBjb2Rpbmcgc3RhbmRhcmQsIGFuZCByZXN1bHRzIGluIHRoZSBmb2xsb3dpbmcgZXJy b3Igb24gR0NDOg0KDQpEZXZpY2VQYXRoLmM6IEluIGZ1bmN0aW9uIGBwcmludF9tZW1gOg0KRGV2 aWNlUGF0aC5jOjEwOTo1OiBlcnJvcjogYGZvcmAgbG9vcCBpbml0aWFsIGRlY2xhcmF0aW9ucyBh cmUgb25seQ0KYWxsb3dlZCBpbiBDOTkgbW9kZQ0KICAgICBmb3IgKHNpemVfdCBpPTA7IGk8bjsg aSsrKSB7DQoNCg0KPiArICAgICAgICBwcmludGYoIjB4JTAyeCAiLCBwW2ldKTsNCj4gKyAgfQ0K PiArfQ0KPiArDQo+ICtWT0lEDQo+ICtBc2NpaTJVbmljb2RlU3RyaW5nICgNCj4gKyAgQ0hBUjgg ICAgKlN0cmluZywNCj4gKyAgQ0hBUjE2ICAgKlVuaVN0cmluZw0KPiArICkNCj4gKy8qKysNCj4g Kw0KPiArUm91dGluZSBEZXNjcmlwdGlvbjoNCj4gKw0KPiArICBXcml0ZSBhc2NpaSBzdHJpbmcg YXMgdW5pY29kZSBzdHJpbmcgZm9ybWF0IHRvIEZJTEUNCj4gKw0KPiArQXJndW1lbnRzOg0KPiAr DQo+ICsgIFN0cmluZyAgICAgIC0gUG9pbnRlciB0byBzdHJpbmcgdGhhdCBpcyB3cml0dGVuIHRv IEZJTEUuDQo+ICsgIFVuaVN0cmluZyAgIC0gUG9pbnRlciB0byB1bmljb2RlIHN0cmluZw0KPiAr DQo+ICtSZXR1cm5zOg0KPiArDQo+ICsgIE5VTEwNCj4gKw0KPiArLS0qLw0KPiArew0KPiArICB3 aGlsZSAoKlN0cmluZyAhPSAnXDAnKSB7DQo+ICsgICAgKihVbmlTdHJpbmcrKykgPSAoQ0hBUjE2 KSAqKFN0cmluZysrKTsNCj4gKyAgfQ0KPiArICAvLw0KPiArICAvLyBFbmQgdGhlIFVuaVN0cmlu ZyB3aXRoIGEgTlVMTC4NCj4gKyAgLy8NCj4gKyAgKlVuaVN0cmluZyA9ICdcMCc7DQo+ICt9DQo+ ICsNCj4gK2ludCBtYWluKGludCBhcmdjLCBDSEFSOCAqYXJndltdKQ0KPiArew0KPiArICBDSEFS OCAqIFN0cjsNCj4gKyAgQ0hBUjE2KiBTdHIxNjsNCj4gKyAgRUZJX0RFVklDRV9QQVRIX1BST1RP Q09MICpEZXZpY2VQYXRoOw0KPiArDQo+ICsgIGlmIChhcmdjID09IDEpIHsNCj4gKyAgICBFcnJv ciAoTlVMTCwgMCwgMTAwMSwgIk1pc3Npbmcgb3B0aW9ucyIsICJObyBpbnB1dCBvcHRpb25zIHNw ZWNpZmllZC4iKTsNCj4gKyAgICBVc2FnZSAoKTsNCj4gKyAgICByZXR1cm4gU1RBVFVTX0VSUk9S Ow0KPiArICB9DQo+ICsgIGlmICgoc3RyaWNtcCAoYXJndlsxXSwgIi1oIikgPT0gMCkgfHwgKHN0 cmljbXAgKGFyZ3ZbMV0sICItLWhlbHAiKSA9PSAwKSkgew0KPiArICAgIFZlcnNpb24gKCk7DQo+ ICsgICAgVXNhZ2UgKCk7DQo+ICsgICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOw0KPiArICB9DQo+ ICsNCj4gKyAgaWYgKHN0cmljbXAgKGFyZ3ZbMV0sICItLXZlcnNpb24iKSA9PSAwKSB7DQo+ICsg ICAgVmVyc2lvbiAoKTsNCj4gKyAgICByZXR1cm4gU1RBVFVTX1NVQ0NFU1M7DQo+ICsgIH0NCj4g KyAgU3RyID0gYXJndlsxXTsNCj4gKyAgaWYgKFN0ciA9PSBOVUxMKSB7DQo+ICsgICAgZnByaW50 ZihzdGRlcnIsICJJbnZhbGlkIG9wdGlvbiB2YWx1ZSwgRGV2aWNlIFBhdGggY2FuJ3QgYmUgTlVM TCIpOw0KPiArICAgIHJldHVybiBTVEFUVVNfRVJST1I7DQo+ICsgIH0NCj4gKyAgU3RyMTYgPSAo Q0hBUjE2ICopbWFsbG9jKDEwMjQpOw0KPiArICBpZiAoU3RyMTYgPT0gTlVMTCkgew0KPiArICAg IGZwcmludGYoc3RkZXJyLCAiUmVzb3VyY2UsIG1lbW9yeSBjYW5ub3QgYmUgYWxsY29hdGVkIik7 DQo+ICsgICAgcmV0dXJuIFNUQVRVU19FUlJPUjsNCj4gKyAgfQ0KPiArICBBc2NpaTJVbmljb2Rl U3RyaW5nKFN0ciwgU3RyMTYpOw0KPiArICBEZXZpY2VQYXRoID0gVWVmaURldmljZVBhdGhMaWJD b252ZXJ0VGV4dFRvRGV2aWNlUGF0aChTdHIxNik7DQo+ICsgIHdoaWxlICghKChEZXZpY2VQYXRo LT5UeXBlID09IEVORF9ERVZJQ0VfUEFUSF9UWVBFKSAmJiAoRGV2aWNlUGF0aC0+U3ViVHlwZSA9 PSBFTkRfRU5USVJFX0RFVklDRV9QQVRIX1NVQlRZUEUpKSApDQo+ICsgIHsNCj4gKyAgICBwcmlu dF9tZW0oRGV2aWNlUGF0aCwgKERldmljZVBhdGgtPkxlbmd0aFswXSB8IERldmljZVBhdGgtPkxl bmd0aFsxXSA8PCA4KSk7DQo+ICsgICAgRGV2aWNlUGF0aCA9IChFRklfREVWSUNFX1BBVEhfUFJP VE9DT0wgKikoKFVJTlQ4ICopRGV2aWNlUGF0aCArIChEZXZpY2VQYXRoLT5MZW5ndGhbMF0gfCBE ZXZpY2VQYXRoLT5MZW5ndGhbMV0gPDwgOCkpOw0KPiArICB9DQo+ICsgIHByaW50X21lbShEZXZp Y2VQYXRoLCAoRGV2aWNlUGF0aC0+TGVuZ3RoWzBdIHwgRGV2aWNlUGF0aC0+TGVuZ3RoWzFdIDw8 IDgpKTsNCj4gKyAgcHV0Y2hhcignXG4nKTsNCj4gKyAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOw0K PiArfQ0KPiBkaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9DL0RldmljZVBhdGgvRGV2aWNl UGF0aEZyb21UZXh0LmMgYi9CYXNlVG9vbHMvU291cmNlL0MvRGV2aWNlUGF0aC9EZXZpY2VQYXRo RnJvbVRleHQuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwLi4zZDJm NWE4DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9DL0RldmljZVBh dGgvRGV2aWNlUGF0aEZyb21UZXh0LmMNCj4gQEAgLTAsMCArMSwzMzQ5IEBADQo+ICsvKiogQGZp bGUNCj4gKyAgRGV2aWNlUGF0aEZyb21UZXh0IHByb3RvY29sIGFzIGRlZmluZWQgaW4gdGhlIFVF RkkgMi4wIHNwZWNpZmljYXRpb24uDQo+ICsNCj4gK0NvcHlyaWdodCAoYykgMjAxNywgSW50ZWwg Q29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiArVGhpcyBwcm9ncmFtIGFu ZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiArYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2 YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNl DQo+ICt3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQg b2YgdGhlIGxpY2Vuc2UgbWF5IGJlIGZvdW5kIGF0DQo+ICtodHRwOi8vb3BlbnNvdXJjZS5vcmcv bGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ICsNCj4gK1RIRSBQUk9HUkFNIElTIERJU1RSSUJV VEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiIEJBU0lTLA0KPiArV0lUSE9V VCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJF U1MgT1IgSU1QTElFRC4NCj4gKw0KPiArKiovDQo+ICsNCj4gKyNpbmNsdWRlICJVZWZpRGV2aWNl UGF0aExpYi5oIg0KPiArDQo+ICsvKioNCj4gKw0KPiArICBEdXBsaWNhdGVzIGEgc3RyaW5nLg0K PiArDQo+ICsgIEBwYXJhbSAgU3JjICBTb3VyY2Ugc3RyaW5nLg0KPiArDQo+ICsgIEByZXR1cm4g VGhlIGR1cGxpY2F0ZWQgc3RyaW5nLg0KPiArDQo+ICsqKi8NCj4gK0NIQVIxNiAqDQo+ICtVZWZp RGV2aWNlUGF0aExpYlN0ckR1cGxpY2F0ZSAoDQo+ICsgICBDT05TVCBDSEFSMTYgICpTcmMNCj4g KyAgKQ0KPiArew0KPiArICByZXR1cm4gQWxsb2NhdGVDb3B5UG9vbCAoU3RyU2l6ZSAoU3JjKSwg U3JjKTsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsNCj4gKyAgR2V0IHBhcmFtZXRlciBpbiBhIHBh aXIgb2YgcGFyZW50aGVzZXMgZm9sbG93IHRoZSBnaXZlbiBub2RlIG5hbWUuDQo+ICsgIEZvciBl eGFtcGxlLCBnaXZlbiB0aGUgIlBjaSgwLDEpIiBhbmQgTm9kZU5hbWUgIlBjaSIsIGl0IHJldHVy bnMgIjAsMSIuDQo+ICsNCj4gKyAgQHBhcmFtICBTdHIgICAgICBEZXZpY2UgUGF0aCBUZXh0Lg0K PiArICBAcGFyYW0gIE5vZGVOYW1lIE5hbWUgb2YgdGhlIG5vZGUuDQo+ICsNCj4gKyAgQHJldHVy biBQYXJhbWV0ZXIgdGV4dCBmb3IgdGhlIG5vZGUuDQo+ICsNCj4gKyoqLw0KPiArQ0hBUjE2ICoN Cj4gK0dldFBhcmFtQnlOb2RlTmFtZSAoDQo+ICsgICBDSEFSMTYgKlN0ciwNCj4gKyAgIENIQVIx NiAqTm9kZU5hbWUNCj4gKyAgKQ0KPiArew0KPiArICBDSEFSMTYgICpQYXJhbVN0cjsNCj4gKyAg Q0hBUjE2ICAqU3RyUG9pbnRlcjsNCj4gKyAgVUlOVE4gICBOb2RlTmFtZUxlbmd0aDsNCj4gKyAg VUlOVE4gICBQYXJhbWV0ZXJMZW5ndGg7DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gQ2hlY2sgd2hl dGhlciB0aGUgbm9kZSBuYW1lIG1hdGNocw0KPiArICAvLw0KPiArICBOb2RlTmFtZUxlbmd0aCA9 IFN0ckxlbiAoTm9kZU5hbWUpOw0KPiArICBpZiAoU3RybkNtcCAoU3RyLCBOb2RlTmFtZSwgTm9k ZU5hbWVMZW5ndGgpICE9IDApIHsNCj4gKyAgICByZXR1cm4gTlVMTDsNCj4gKyAgfQ0KPiArDQo+ ICsgIFBhcmFtU3RyID0gU3RyICsgTm9kZU5hbWVMZW5ndGg7DQo+ICsgIGlmICghSVNfTEVGVF9Q QVJFTlRIICgqUGFyYW1TdHIpKSB7DQo+ICsgICAgcmV0dXJuIE5VTEw7DQo+ICsgIH0NCj4gKw0K PiArICAvLw0KPiArICAvLyBTa2lwIHRoZSBmb3VuZCAnKCcgYW5kIGZpbmQgZmlyc3Qgb2NjdXJy ZW5jZSBvZiAnKScNCj4gKyAgLy8NCj4gKyAgUGFyYW1TdHIrKzsNCj4gKyAgUGFyYW1ldGVyTGVu Z3RoID0gMDsNCj4gKyAgU3RyUG9pbnRlciA9IFBhcmFtU3RyOw0KPiArICB3aGlsZSAoIUlTX05V TEwgKCpTdHJQb2ludGVyKSkgew0KPiArICAgIGlmIChJU19SSUdIVF9QQVJFTlRIICgqU3RyUG9p bnRlcikpIHsNCj4gKyAgICAgIGJyZWFrOw0KPiArICAgIH0NCj4gKyAgICBTdHJQb2ludGVyKys7 DQo+ICsgICAgUGFyYW1ldGVyTGVuZ3RoKys7DQo+ICsgIH0NCj4gKyAgaWYgKElTX05VTEwgKCpT dHJQb2ludGVyKSkgew0KPiArICAgIC8vDQo+ICsgICAgLy8gJyknIG5vdCBmb3VuZA0KPiArICAg IC8vDQo+ICsgICAgcmV0dXJuIE5VTEw7DQo+ICsgIH0NCj4gKw0KPiArICBQYXJhbVN0ciA9IEFs bG9jYXRlQ29weVBvb2wgKChQYXJhbWV0ZXJMZW5ndGggKyAxKSAqIHNpemVvZiAoQ0hBUjE2KSwg UGFyYW1TdHIpOw0KPiArICBpZiAoUGFyYW1TdHIgPT0gTlVMTCkgew0KPiArICAgIHJldHVybiBO VUxMOw0KPiArICB9DQo+ICsgIC8vDQo+ICsgIC8vIFRlcm1pbmF0ZSB0aGUgcGFyYW1ldGVyIHN0 cmluZw0KPiArICAvLw0KPiArICBQYXJhbVN0cltQYXJhbWV0ZXJMZW5ndGhdID0gTCdcMCc7DQo+ ICsNCj4gKyAgcmV0dXJuIFBhcmFtU3RyOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgR2V0cyB0 aGUgbmV4dCBwYXJhbWV0ZXIgc3RyaW5nIGZyb20gdGhlIGxpc3QuDQo+ICsNCj4gKyAgQHBhcmFt IExpc3QgICAgICAgICAgICBBIHN0cmluZyBsaXN0IHNlcGFyYXRlZCBieSB0aGUgc3BlY2lmaWVk IHNlcGFyYXRvcg0KPiArDQo+ICsgIEByZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBjdXJyZW50IHN1 Yi1zdHJpbmcNCj4gKw0KPiArKiovDQo+ICtDSEFSMTYgKg0KPiArR2V0TmV4dFBhcmFtU3RyICgN Cj4gKyAgICBDSEFSMTYgKipMaXN0DQo+ICsgICkNCj4gK3sNCj4gKyAgLy8NCj4gKyAgLy8gVGhl IHNlcGFyYXRvciBpcyBjb21tYQ0KPiArICAvLw0KPiArICByZXR1cm4gU3BsaXRTdHIgKExpc3Qs IEwnLCcpOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgR2V0IG9uZSBkZXZpY2Ugbm9kZSBmcm9t IGVudGlyZSBkZXZpY2UgcGF0aCB0ZXh0Lg0KPiArDQo+ICsgIEBwYXJhbSBEZXZpY2VQYXRoICAg ICAgT24gaW5wdXQsIHRoZSBjdXJyZW50IERldmljZSBQYXRoIG5vZGU7IG9uIG91dHB1dCwgdGhl IG5leHQgZGV2aWNlIHBhdGggbm9kZQ0KPiArICBAcGFyYW0gSXNJbnN0YW5jZUVuZCAgIFRoaXMg bm9kZSBpcyB0aGUgZW5kIG9mIGEgZGV2aWNlIHBhdGggaW5zdGFuY2UNCj4gKw0KPiArICBAcmV0 dXJuIEEgZGV2aWNlIG5vZGUgdGV4dCBvciBOVUxMIGlmIG5vIG1vcmUgZGV2aWNlIG5vZGUgYXZh aWxhYmxlDQo+ICsNCj4gKyoqLw0KPiArQ0hBUjE2ICoNCj4gK0dldE5leHREZXZpY2VOb2RlU3Ry ICgNCj4gKyAgICBDSEFSMTYgICAqKkRldmljZVBhdGgsDQo+ICsgICAgICBCT09MRUFOICAqSXNJ bnN0YW5jZUVuZA0KPiArICApDQo+ICt7DQo+ICsgIENIQVIxNiAgKlN0cjsNCj4gKyAgQ0hBUjE2 ICAqUmV0dXJuU3RyOw0KPiArICBVSU5UTiAgIFBhcmVudGhlc2VzU3RhY2s7DQo+ICsNCj4gKyAg U3RyID0gKkRldmljZVBhdGg7DQo+ICsgIGlmIChJU19OVUxMICgqU3RyKSkgew0KPiArICAgIHJl dHVybiBOVUxMOw0KPiArICB9DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gU2tpcCB0aGUgbGVhZGlu ZyAnLycsICcoJywgJyknIGFuZCAnLCcNCj4gKyAgLy8NCj4gKyAgd2hpbGUgKCFJU19OVUxMICgq U3RyKSkgew0KPiArICAgIGlmICghSVNfU0xBU0ggKCpTdHIpICYmDQo+ICsgICAgICAgICFJU19D T01NQSAoKlN0cikgJiYNCj4gKyAgICAgICAgIUlTX0xFRlRfUEFSRU5USCAoKlN0cikgJiYNCj4g KyAgICAgICAgIUlTX1JJR0hUX1BBUkVOVEggKCpTdHIpKSB7DQo+ICsgICAgICBicmVhazsNCj4g KyAgICB9DQo+ICsgICAgU3RyKys7DQo+ICsgIH0NCj4gKw0KPiArICBSZXR1cm5TdHIgPSBTdHI7 DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gU2NhbiBmb3IgdGhlIHNlcGFyYXRvciBvZiB0aGlzIGRl dmljZSBub2RlLCAnLycgb3IgJywnDQo+ICsgIC8vDQo+ICsgIFBhcmVudGhlc2VzU3RhY2sgPSAw Ow0KPiArICB3aGlsZSAoIUlTX05VTEwgKCpTdHIpKSB7DQo+ICsgICAgaWYgKChJU19DT01NQSAo KlN0cikgfHwgSVNfU0xBU0ggKCpTdHIpKSAmJiAoUGFyZW50aGVzZXNTdGFjayA9PSAwKSkgew0K PiArICAgICAgYnJlYWs7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgaWYgKElTX0xFRlRfUEFSRU5U SCAoKlN0cikpIHsNCj4gKyAgICAgIFBhcmVudGhlc2VzU3RhY2srKzsNCj4gKyAgICB9IGVsc2Ug aWYgKElTX1JJR0hUX1BBUkVOVEggKCpTdHIpKSB7DQo+ICsgICAgICBQYXJlbnRoZXNlc1N0YWNr LS07DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgU3RyKys7DQo+ICsgIH0NCj4gKw0KPiArICBpZiAo UGFyZW50aGVzZXNTdGFjayAhPSAwKSB7DQo+ICsgICAgLy8NCj4gKyAgICAvLyBUaGUgJygnIGRv ZXNuJ3QgcGFpciB3aXRoICcpJywgaW52YWxpZCBkZXZpY2UgcGF0aCB0ZXh0DQo+ICsgICAgLy8N Cj4gKyAgICByZXR1cm4gTlVMTDsNCj4gKyAgfQ0KPiArDQo+ICsgIGlmIChJU19DT01NQSAoKlN0 cikpIHsNCj4gKyAgICAqSXNJbnN0YW5jZUVuZCA9IFRSVUU7DQo+ICsgICAgKlN0ciA9IEwnXDAn Ow0KPiArICAgIFN0cisrOw0KPiArICB9IGVsc2Ugew0KPiArICAgICpJc0luc3RhbmNlRW5kID0g RkFMU0U7DQo+ICsgICAgaWYgKCFJU19OVUxMICgqU3RyKSkgew0KPiArICAgICAgKlN0ciA9IEwn XDAnOw0KPiArICAgICAgU3RyKys7DQo+ICsgICAgfQ0KPiArICB9DQo+ICsNCj4gKyAgKkRldmlj ZVBhdGggPSBTdHI7DQo+ICsNCj4gKyAgcmV0dXJuIFJldHVyblN0cjsNCj4gK30NCj4gKw0KPiAr LyoqDQo+ICsgIENvbnZlcnRzIGEgZ2VuZXJpYyB0ZXh0IGRldmljZSBwYXRoIG5vZGUgdG8gZGV2 aWNlIHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsgIEBwYXJhbSBUeXBlICAgICAgICAgICAgVGhl IHR5cGUgb2YgdGhlIGRldmljZSBwYXRoIG5vZGUuDQo+ICsgIEBwYXJhbSBUZXh0RGV2aWNlTm9k ZSAgVGhlIGlucHV0IHRleHQgZGV2aWNlIHBhdGggbm9kZS4NCj4gKw0KPiArICBAcmV0dXJuIEEg cG9pbnRlciB0byBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsqKi8NCj4gK0VGSV9ERVZJQ0Vf UEFUSF9QUk9UT0NPTCAqDQo+ICtEZXZQYXRoRnJvbVRleHRHZW5lcmljUGF0aCAoDQo+ICsgICBV SU5UOCAgVHlwZSwNCj4gKyAgIENIQVIxNiAqVGV4dERldmljZU5vZGUNCj4gKyAgKQ0KPiArew0K PiArICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKk5vZGU7DQo+ICsgIENIQVIxNiAgICAgICAg ICAgICAgICAgICAqU3VidHlwZVN0cjsNCj4gKyAgQ0hBUjE2ICAgICAgICAgICAgICAgICAgICpE YXRhU3RyOw0KPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgRGF0YUxlbmd0aDsNCj4gKw0K PiArICBTdWJ0eXBlU3RyID0gR2V0TmV4dFBhcmFtU3RyICgmVGV4dERldmljZU5vZGUpOw0KPiAr ICBEYXRhU3RyICAgID0gR2V0TmV4dFBhcmFtU3RyICgmVGV4dERldmljZU5vZGUpOw0KPiArDQo+ ICsgIGlmIChEYXRhU3RyID09IE5VTEwpIHsNCj4gKyAgICBEYXRhTGVuZ3RoID0gMDsNCj4gKyAg fSBlbHNlIHsNCj4gKyAgICBEYXRhTGVuZ3RoID0gU3RyTGVuIChEYXRhU3RyKSAvIDI7DQo+ICsg IH0NCj4gKyAgTm9kZSA9IENyZWF0ZURldmljZU5vZGUgKA0KPiArICAgICAgICAgICBUeXBlLA0K PiArICAgICAgICAgICAoVUlOVDgpIFN0cnRvaSAoU3VidHlwZVN0ciksDQo+ICsgICAgICAgICAg IChVSU5UMTYpIChzaXplb2YgKEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCkgKyBEYXRhTGVuZ3Ro KQ0KPiArICAgICAgICAgICApOw0KPiArDQo+ICsgIFN0ckhleFRvQnl0ZXMgKERhdGFTdHIsIERh dGFMZW5ndGggKiAyLCAoVUlOVDggKikgKE5vZGUgKyAxKSwgRGF0YUxlbmd0aCk7DQo+ICsgIHJl dHVybiBOb2RlOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgQ29udmVydHMgYSBnZW5lcmljIHRl eHQgZGV2aWNlIHBhdGggbm9kZSB0byBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyAg QHBhcmFtIFRleHREZXZpY2VOb2RlICBUaGUgaW5wdXQgVGV4dCBkZXZpY2UgcGF0aCBub2RlLg0K PiArDQo+ICsgIEByZXR1cm4gQSBwb2ludGVyIHRvIGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4g Kw0KPiArKiovDQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0KPiArRGV2UGF0aEZyb21U ZXh0UGF0aCAoDQo+ICsgICBDSEFSMTYgKlRleHREZXZpY2VOb2RlDQo+ICsgICkNCj4gK3sNCj4g KyAgQ0hBUjE2ICAgICAgICAgICAgICAgICAgICpUeXBlU3RyOw0KPiArDQo+ICsgIFR5cGVTdHIg ICAgPSBHZXROZXh0UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsNCj4gKyAgcmV0dXJu IERldlBhdGhGcm9tVGV4dEdlbmVyaWNQYXRoICgoVUlOVDgpIFN0cnRvaSAoVHlwZVN0ciksIFRl eHREZXZpY2VOb2RlKTsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIENvbnZlcnRzIGEgZ2VuZXJp YyBoYXJkd2FyZSB0ZXh0IGRldmljZSBwYXRoIG5vZGUgdG8gSGFyZHdhcmUgZGV2aWNlIHBhdGgg c3RydWN0dXJlLg0KPiArDQo+ICsgIEBwYXJhbSBUZXh0RGV2aWNlTm9kZSAgVGhlIGlucHV0IFRl eHQgZGV2aWNlIHBhdGggbm9kZS4NCj4gKw0KPiArICBAcmV0dXJuIEEgcG9pbnRlciB0byBIYXJk d2FyZSBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyoqLw0KPiArRUZJX0RFVklDRV9Q QVRIX1BST1RPQ09MICoNCj4gK0RldlBhdGhGcm9tVGV4dEhhcmR3YXJlUGF0aCAoDQo+ICsgICBD SEFSMTYgKlRleHREZXZpY2VOb2RlDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIERldlBhdGhG cm9tVGV4dEdlbmVyaWNQYXRoIChIQVJEV0FSRV9ERVZJQ0VfUEFUSCwgVGV4dERldmljZU5vZGUp Ow0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgQ29udmVydHMgYSB0ZXh0IGRldmljZSBwYXRoIG5v ZGUgdG8gSGFyZHdhcmUgUENJIGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArICBAcGFy YW0gVGV4dERldmljZU5vZGUgIFRoZSBpbnB1dCBUZXh0IGRldmljZSBwYXRoIG5vZGUuDQo+ICsN Cj4gKyAgQHJldHVybiBBIHBvaW50ZXIgdG8gSGFyZHdhcmUgUENJIGRldmljZSBwYXRoIHN0cnVj dHVyZS4NCj4gKw0KPiArKiovDQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0KPiArRGV2 UGF0aEZyb21UZXh0UGNpICgNCj4gKyAgIENIQVIxNiAqVGV4dERldmljZU5vZGUNCj4gKyAgKQ0K PiArew0KPiArICBDSEFSMTYgICAgICAgICAgKkZ1bmN0aW9uU3RyOw0KPiArICBDSEFSMTYgICAg ICAgICAgKkRldmljZVN0cjsNCj4gKyAgUENJX0RFVklDRV9QQVRIICpQY2k7DQo+ICsNCj4gKyAg RGV2aWNlU3RyICAgPSBHZXROZXh0UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsgIEZ1 bmN0aW9uU3RyID0gR2V0TmV4dFBhcmFtU3RyICgmVGV4dERldmljZU5vZGUpOw0KPiArICBQY2kg ICAgICAgICA9IChQQ0lfREVWSUNFX1BBVEggKikgQ3JlYXRlRGV2aWNlTm9kZSAoDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBUkRXQVJFX0RFVklDRV9QQVRILA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIV19QQ0lfRFAsDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChVSU5UMTYpIHNpemVvZiAoUENJ X0RFVklDRV9QQVRIKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAp Ow0KPiArDQo+ICsgIFBjaS0+RnVuY3Rpb24gPSAoVUlOVDgpIFN0cnRvaSAoRnVuY3Rpb25TdHIp Ow0KPiArICBQY2ktPkRldmljZSAgID0gKFVJTlQ4KSBTdHJ0b2kgKERldmljZVN0cik7DQo+ICsN Cj4gKyAgcmV0dXJuIChFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKikgUGNpOw0KPiArfQ0KPiAr DQo+ICsvKioNCj4gKyAgQ29udmVydHMgYSB0ZXh0IGRldmljZSBwYXRoIG5vZGUgdG8gSGFyZHdh cmUgUEMgY2FyZCBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyAgQHBhcmFtIFRleHRE ZXZpY2VOb2RlICBUaGUgaW5wdXQgVGV4dCBkZXZpY2UgcGF0aCBub2RlLg0KPiArDQo+ICsgIEBy ZXR1cm4gQSBwb2ludGVyIHRvIEhhcmR3YXJlIFBDIGNhcmQgZGV2aWNlIHBhdGggc3RydWN0dXJl Lg0KPiArDQo+ICsqKi8NCj4gK0VGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqDQo+ICtEZXZQYXRo RnJvbVRleHRQY0NhcmQgKA0KPiArICAgQ0hBUjE2ICpUZXh0RGV2aWNlTm9kZQ0KPiArICApDQo+ ICt7DQo+ICsgIENIQVIxNiAgICAgICAgICAgICAgKkZ1bmN0aW9uTnVtYmVyU3RyOw0KPiArICBQ Q0NBUkRfREVWSUNFX1BBVEggICpQY2NhcmQ7DQo+ICsNCj4gKyAgRnVuY3Rpb25OdW1iZXJTdHIg PSBHZXROZXh0UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsgIFBjY2FyZCAgICAgICAg ICAgID0gKFBDQ0FSRF9ERVZJQ0VfUEFUSCAqKSBDcmVhdGVEZXZpY2VOb2RlICgNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFSRFdBUkVfREVWSUNF X1BBVEgsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEhXX1BDQ0FSRF9EUCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKFVJTlQxNikgc2l6ZW9mIChQQ0NBUkRfREVWSUNFX1BBVEgpDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQo+ICsNCj4gKyAgUGNj YXJkLT5GdW5jdGlvbk51bWJlciAgPSAoVUlOVDgpIFN0cnRvaSAoRnVuY3Rpb25OdW1iZXJTdHIp Ow0KPiArDQo+ICsgIHJldHVybiAoRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICopIFBjY2FyZDsN Cj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIENvbnZlcnRzIGEgdGV4dCBkZXZpY2UgcGF0aCBub2Rl IHRvIEhhcmR3YXJlIG1lbW9yeSBtYXAgZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsg IEBwYXJhbSBUZXh0RGV2aWNlTm9kZSAgVGhlIGlucHV0IFRleHQgZGV2aWNlIHBhdGggbm9kZS4N Cj4gKw0KPiArICBAcmV0dXJuIEEgcG9pbnRlciB0byBIYXJkd2FyZSBtZW1vcnkgbWFwIGRldmlj ZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArKiovDQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9D T0wgKg0KPiArRGV2UGF0aEZyb21UZXh0TWVtb3J5TWFwcGVkICgNCj4gKyAgIENIQVIxNiAqVGV4 dERldmljZU5vZGUNCj4gKyAgKQ0KPiArew0KPiArICBDSEFSMTYgICAgICAgICAgICAgICpNZW1v cnlUeXBlU3RyOw0KPiArICBDSEFSMTYgICAgICAgICAgICAgICpTdGFydGluZ0FkZHJlc3NTdHI7 DQo+ICsgIENIQVIxNiAgICAgICAgICAgICAgKkVuZGluZ0FkZHJlc3NTdHI7DQo+ICsgIE1FTU1B UF9ERVZJQ0VfUEFUSCAgKk1lbU1hcDsNCj4gKw0KPiArICBNZW1vcnlUeXBlU3RyICAgICAgPSBH ZXROZXh0UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsgIFN0YXJ0aW5nQWRkcmVzc1N0 ciA9IEdldE5leHRQYXJhbVN0ciAoJlRleHREZXZpY2VOb2RlKTsNCj4gKyAgRW5kaW5nQWRkcmVz c1N0ciAgID0gR2V0TmV4dFBhcmFtU3RyICgmVGV4dERldmljZU5vZGUpOw0KPiArICBNZW1NYXAg ICAgICAgICAgICAgPSAoTUVNTUFQX0RFVklDRV9QQVRIICopIENyZWF0ZURldmljZU5vZGUgKA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQVJEV0FS RV9ERVZJQ0VfUEFUSCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgSFdfTUVNTUFQX0RQLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoVUlOVDE2KSBzaXplb2YgKE1FTU1BUF9ERVZJQ0VfUEFUSCkNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCj4gKw0K PiArICBNZW1NYXAtPk1lbW9yeVR5cGUgPSAoVUlOVDMyKSBTdHJ0b2kgKE1lbW9yeVR5cGVTdHIp Ow0KPiArICBTdHJ0b2k2NCAoU3RhcnRpbmdBZGRyZXNzU3RyLCAmTWVtTWFwLT5TdGFydGluZ0Fk ZHJlc3MpOw0KPiArICBTdHJ0b2k2NCAoRW5kaW5nQWRkcmVzc1N0ciwgJk1lbU1hcC0+RW5kaW5n QWRkcmVzcyk7DQo+ICsNCj4gKyAgcmV0dXJuIChFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKikg TWVtTWFwOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgQ29udmVydHMgYSB0ZXh0IGRldmljZSBw YXRoIG5vZGUgdG8gVmVuZG9yIGRldmljZSBwYXRoIHN0cnVjdHVyZSBiYXNlZCBvbiB0aGUgaW5w dXQgVHlwZQ0KPiArICBhbmQgU3ViVHlwZS4NCj4gKw0KPiArICBAcGFyYW0gVGV4dERldmljZU5v ZGUgIFRoZSBpbnB1dCBUZXh0IGRldmljZSBwYXRoIG5vZGUuDQo+ICsgIEBwYXJhbSBUeXBlICAg ICAgICAgICAgVGhlIHR5cGUgb2YgZGV2aWNlIHBhdGggbm9kZS4NCj4gKyAgQHBhcmFtIFN1YlR5 cGUgICAgICAgICBUaGUgc3VidHlwZSBvZiBkZXZpY2UgcGF0aCBub2RlLg0KPiArDQo+ICsgIEBy ZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBuZXdseS1jcmVhdGVkIFZlbmRvciBkZXZpY2UgcGF0aCBz dHJ1Y3R1cmUuDQo+ICsNCj4gKyoqLw0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoNCj4g K0NvbnZlcnRGcm9tVGV4dFZlbmRvciAoDQo+ICsgICBDSEFSMTYgKlRleHREZXZpY2VOb2RlLA0K PiArICAgVUlOVDggIFR5cGUsDQo+ICsgICBVSU5UOCAgU3ViVHlwZQ0KPiArICApDQo+ICt7DQo+ ICsgIENIQVIxNiAgICAgICAgICAgICAgKkd1aWRTdHI7DQo+ICsgIENIQVIxNiAgICAgICAgICAg ICAgKkRhdGFTdHI7DQo+ICsgIFVJTlROICAgICAgICAgICAgICAgTGVuZ3RoOw0KPiArICBWRU5E T1JfREVWSUNFX1BBVEggICpWZW5kb3I7DQo+ICsNCj4gKyAgR3VpZFN0ciA9IEdldE5leHRQYXJh bVN0ciAoJlRleHREZXZpY2VOb2RlKTsNCj4gKw0KPiArICBEYXRhU3RyID0gR2V0TmV4dFBhcmFt U3RyICgmVGV4dERldmljZU5vZGUpOw0KPiArICBMZW5ndGggID0gU3RyTGVuIChEYXRhU3RyKTsN Cj4gKyAgLy8NCj4gKyAgLy8gVHdvIGhleCBjaGFyYWN0ZXJzIG1ha2UgdXAgMSBidWZmZXIgYnl0 ZQ0KPiArICAvLw0KPiArICBMZW5ndGggID0gKExlbmd0aCArIDEpIC8gMjsNCj4gKw0KPiArICBW ZW5kb3IgID0gKFZFTkRPUl9ERVZJQ0VfUEFUSCAqKSBDcmVhdGVEZXZpY2VOb2RlICgNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlLA0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFN1YlR5cGUsDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKFVJTlQxNikgKHNpemVvZiAoVkVORE9SX0RFVklDRV9QQVRIKSAr IExlbmd0aCkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KPiAr DQo+ICsgIFN0clRvR3VpZCAoR3VpZFN0ciwgJlZlbmRvci0+R3VpZCk7DQo+ICsgIFN0ckhleFRv Qnl0ZXMgKERhdGFTdHIsIExlbmd0aCAqIDIsIChVSU5UOCAqKSAoVmVuZG9yICsgMSksIExlbmd0 aCk7DQo+ICsNCj4gKyAgcmV0dXJuIChFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKikgVmVuZG9y Ow0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgQ29udmVydHMgYSB0ZXh0IGRldmljZSBwYXRoIG5v ZGUgdG8gVmVuZG9yIEhhcmR3YXJlIGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArICBA cGFyYW0gVGV4dERldmljZU5vZGUgIFRoZSBpbnB1dCBUZXh0IGRldmljZSBwYXRoIG5vZGUuDQo+ ICsNCj4gKyAgQHJldHVybiBBIHBvaW50ZXIgdG8gdGhlIG5ld2x5LWNyZWF0ZWQgVmVuZG9yIEhh cmR3YXJlIGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArKiovDQo+ICtFRklfREVWSUNF X1BBVEhfUFJPVE9DT0wgKg0KPiArRGV2UGF0aEZyb21UZXh0VmVuSHcgKA0KPiArICAgQ0hBUjE2 ICpUZXh0RGV2aWNlTm9kZQ0KPiArICApDQo+ICt7DQo+ICsgIHJldHVybiBDb252ZXJ0RnJvbVRl eHRWZW5kb3IgKA0KPiArICAgICAgICAgICBUZXh0RGV2aWNlTm9kZSwNCj4gKyAgICAgICAgICAg SEFSRFdBUkVfREVWSUNFX1BBVEgsDQo+ICsgICAgICAgICAgIEhXX1ZFTkRPUl9EUA0KPiArICAg ICAgICAgICApOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgQ29udmVydHMgYSB0ZXh0IGRldmlj ZSBwYXRoIG5vZGUgdG8gSGFyZHdhcmUgQ29udHJvbGxlciBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUu DQo+ICsNCj4gKyAgQHBhcmFtIFRleHREZXZpY2VOb2RlICBUaGUgaW5wdXQgVGV4dCBkZXZpY2Ug cGF0aCBub2RlLg0KPiArDQo+ICsgIEByZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBuZXdseS1jcmVh dGVkIEhhcmR3YXJlIENvbnRyb2xsZXIgZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsq Ki8NCj4gK0VGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqDQo+ICtEZXZQYXRoRnJvbVRleHRDdHJs ICgNCj4gKyAgIENIQVIxNiAqVGV4dERldmljZU5vZGUNCj4gKyAgKQ0KPiArew0KPiArICBDSEFS MTYgICAgICAgICAgICAgICAgICAqQ29udHJvbGxlclN0cjsNCj4gKyAgQ09OVFJPTExFUl9ERVZJ Q0VfUEFUSCAgKkNvbnRyb2xsZXI7DQo+ICsNCj4gKyAgQ29udHJvbGxlclN0ciA9IEdldE5leHRQ YXJhbVN0ciAoJlRleHREZXZpY2VOb2RlKTsNCj4gKyAgQ29udHJvbGxlciAgICA9IChDT05UUk9M TEVSX0RFVklDRV9QQVRIICopIENyZWF0ZURldmljZU5vZGUgKA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQVJEV0FSRV9ERVZJQ0VfUEFUSCwNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSFdfQ09OVFJP TExFUl9EUCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKFVJTlQxNikgc2l6ZW9mIChDT05UUk9MTEVSX0RFVklDRV9QQVRIKQ0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KPiArICBDb250cm9sbGVy LT5Db250cm9sbGVyTnVtYmVyID0gKFVJTlQzMikgU3RydG9pIChDb250cm9sbGVyU3RyKTsNCj4g Kw0KPiArICByZXR1cm4gKEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqKSBDb250cm9sbGVyOw0K PiArfQ0KPiArDQo+ICsvKioNCj4gKyAgQ29udmVydHMgYSB0ZXh0IGRldmljZSBwYXRoIG5vZGUg dG8gQk1DIGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArICBAcGFyYW0gVGV4dERldmlj ZU5vZGUgIFRoZSBpbnB1dCBUZXh0IGRldmljZSBwYXRoIG5vZGUuDQo+ICsNCj4gKyAgQHJldHVy biBBIHBvaW50ZXIgdG8gdGhlIG5ld2x5LWNyZWF0ZWQgQk1DIGRldmljZSBwYXRoIHN0cnVjdHVy ZS4NCj4gKw0KPiArKiovDQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0KPiArRGV2UGF0 aEZyb21UZXh0Qm1jICgNCj4gKyAgIENIQVIxNiAqVGV4dERldmljZU5vZGUNCj4gKyAgKQ0KPiAr ew0KPiArICBDSEFSMTYgICAgICAgICAgICAgICAgKkludGVyZmFjZVR5cGVTdHI7DQo+ICsgIENI QVIxNiAgICAgICAgICAgICAgICAqQmFzZUFkZHJlc3NTdHI7DQo+ICsgIEJNQ19ERVZJQ0VfUEFU SCAgICAgICAqQm1jRHA7DQo+ICsNCj4gKyAgSW50ZXJmYWNlVHlwZVN0ciA9IEdldE5leHRQYXJh bVN0ciAoJlRleHREZXZpY2VOb2RlKTsNCj4gKyAgQmFzZUFkZHJlc3NTdHIgICA9IEdldE5leHRQ YXJhbVN0ciAoJlRleHREZXZpY2VOb2RlKTsNCj4gKyAgQm1jRHAgICAgICAgICAgICA9IChCTUNf REVWSUNFX1BBVEggKikgQ3JlYXRlRGV2aWNlTm9kZSAoDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgSEFSRFdBUkVfREVWSUNFX1BBVEgsDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSFdfQk1DX0RQLA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChVSU5UMTYpIHNpemVvZiAoQk1D X0RFVklDRV9QQVRIKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICk7DQo+ICsNCj4gKyAgQm1jRHAtPkludGVyZmFjZVR5cGUgPSAoVUlOVDgpIFN0cnRvaSAo SW50ZXJmYWNlVHlwZVN0cik7DQo+ICsgIFdyaXRlVW5hbGlnbmVkNjQgKA0KPiArICAgIChVSU5U NjQgKikgKCZCbWNEcC0+QmFzZUFkZHJlc3MpLA0KPiArICAgIFN0ckhleFRvVWludDY0IChCYXNl QWRkcmVzc1N0cikNCj4gKyAgICApOw0KPiArDQo+ICsgIHJldHVybiAoRUZJX0RFVklDRV9QQVRI X1BST1RPQ09MICopIEJtY0RwOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgQ29udmVydHMgYSBn ZW5lcmljIEFDUEkgdGV4dCBkZXZpY2UgcGF0aCBub2RlIHRvIEFDUEkgZGV2aWNlIHBhdGggc3Ry dWN0dXJlLg0KPiArDQo+ICsgIEBwYXJhbSBUZXh0RGV2aWNlTm9kZSAgVGhlIGlucHV0IFRleHQg ZGV2aWNlIHBhdGggbm9kZS4NCj4gKw0KPiArICBAcmV0dXJuIEEgcG9pbnRlciB0byBBQ1BJIGRl dmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArKiovDQo+ICtFRklfREVWSUNFX1BBVEhfUFJP VE9DT0wgKg0KPiArRGV2UGF0aEZyb21UZXh0QWNwaVBhdGggKA0KPiArICAgQ0hBUjE2ICpUZXh0 RGV2aWNlTm9kZQ0KPiArICApDQo+ICt7DQo+ICsgIHJldHVybiBEZXZQYXRoRnJvbVRleHRHZW5l cmljUGF0aCAoQUNQSV9ERVZJQ0VfUEFUSCwgVGV4dERldmljZU5vZGUpOw0KPiArfQ0KPiArDQo+ ICsvKioNCj4gKyAgQ29udmVydHMgYSBzdHJpbmcgdG8gRWlzYUlkLg0KPiArDQo+ICsgIEBwYXJh bSBUZXh0ICAgVGhlIGlucHV0IHN0cmluZy4NCj4gKw0KPiArICBAcmV0dXJuIFVJTlQzMiBFSVNB IElELg0KPiArKiovDQo+ICtVSU5UMzINCj4gK0Vpc2FJZEZyb21UZXh0ICgNCj4gKyAgIENIQVIx NiAqVGV4dA0KPiArICApDQo+ICt7DQo+ICsgIHJldHVybiAoKChUZXh0WzBdIC0gJ0EnICsgMSkg JiAweDFmKSA8PCAxMCkNCj4gKyAgICAgICArICgoKFRleHRbMV0gLSAnQScgKyAxKSAmIDB4MWYp IDw8ICA1KQ0KPiArICAgICAgICsgKCgoVGV4dFsyXSAtICdBJyArIDEpICYgMHgxZikgPDwgIDAp DQo+ICsgICAgICAgKyAoVUlOVDMyKSAoU3RySGV4VG9VaW50biAoJlRleHRbM10pIDw8IDE2KQ0K PiArICAgICAgIDsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIENvbnZlcnRzIGEgdGV4dCBkZXZp Y2UgcGF0aCBub2RlIHRvIEFDUEkgSElEIGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiAr ICBAcGFyYW0gVGV4dERldmljZU5vZGUgIFRoZSBpbnB1dCBUZXh0IGRldmljZSBwYXRoIG5vZGUu DQo+ICsNCj4gKyAgQHJldHVybiBBIHBvaW50ZXIgdG8gdGhlIG5ld2x5LWNyZWF0ZWQgQUNQSSBI SUQgZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9ERVZJQ0VfUEFU SF9QUk9UT0NPTCAqDQo+ICtEZXZQYXRoRnJvbVRleHRBY3BpICgNCj4gKyAgIENIQVIxNiAqVGV4 dERldmljZU5vZGUNCj4gKyAgKQ0KPiArew0KPiArICBDSEFSMTYgICAgICAgICAgICAgICAgKkhJ RFN0cjsNCj4gKyAgQ0hBUjE2ICAgICAgICAgICAgICAgICpVSURTdHI7DQo+ICsgIEFDUElfSElE X0RFVklDRV9QQVRIICAqQWNwaTsNCj4gKw0KPiArICBISURTdHIgPSBHZXROZXh0UGFyYW1TdHIg KCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsgIFVJRFN0ciA9IEdldE5leHRQYXJhbVN0ciAoJlRleHRE ZXZpY2VOb2RlKTsNCj4gKyAgQWNwaSAgID0gKEFDUElfSElEX0RFVklDRV9QQVRIICopIENyZWF0 ZURldmljZU5vZGUgKA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBB Q1BJX0RFVklDRV9QQVRILA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBBQ1BJX0RQLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVUlO VDE2KSBzaXplb2YgKEFDUElfSElEX0RFVklDRV9QQVRIKQ0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICApOw0KPiArDQo+ICsgIEFjcGktPkhJRCA9IEVpc2FJZEZyb21U ZXh0IChISURTdHIpOw0KPiArICBBY3BpLT5VSUQgPSAoVUlOVDMyKSBTdHJ0b2kgKFVJRFN0cik7 DQo+ICsNCj4gKyAgcmV0dXJuIChFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKikgQWNwaTsNCj4g K30NCj4gKw0KPiArLyoqDQo+ICsgIENvbnZlcnRzIGEgdGV4dCBkZXZpY2UgcGF0aCBub2RlIHRv IEFDUEkgSElEIGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArICBAcGFyYW0gVGV4dERl dmljZU5vZGUgIFRoZSBpbnB1dCBUZXh0IGRldmljZSBwYXRoIG5vZGUuDQo+ICsgIEBwYXJhbSBQ blBJZCAgICAgICAgICAgVGhlIGlucHV0IHBsdWcgYW5kIHBsYXkgaWRlbnRpZmljYXRpb24uDQo+ ICsNCj4gKyAgQHJldHVybiBBIHBvaW50ZXIgdG8gdGhlIG5ld2x5LWNyZWF0ZWQgQUNQSSBISUQg ZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9ERVZJQ0VfUEFUSF9Q Uk9UT0NPTCAqDQo+ICtDb252ZXJ0RnJvbVRleHRBY3BpICgNCj4gKyAgIENIQVIxNiAqVGV4dERl dmljZU5vZGUsDQo+ICsgICBVSU5UMzIgIFBuUElkDQo+ICsgICkNCj4gK3sNCj4gKyAgQ0hBUjE2 ICAgICAgICAgICAgICAgICpVSURTdHI7DQo+ICsgIEFDUElfSElEX0RFVklDRV9QQVRIICAqQWNw aTsNCj4gKw0KPiArICBVSURTdHIgPSBHZXROZXh0UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7 DQo+ICsgIEFjcGkgICA9IChBQ1BJX0hJRF9ERVZJQ0VfUEFUSCAqKSBDcmVhdGVEZXZpY2VOb2Rl ICgNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQUNQSV9ERVZJQ0Vf UEFUSCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQUNQSV9EUCwN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFVJTlQxNikgc2l6ZW9m IChBQ1BJX0hJRF9ERVZJQ0VfUEFUSCkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKTsNCj4gKw0KPiArICBBY3BpLT5ISUQgPSBFRklfUE5QX0lEIChQblBJZCk7DQo+ ICsgIEFjcGktPlVJRCA9IChVSU5UMzIpIFN0cnRvaSAoVUlEU3RyKTsNCj4gKw0KPiArICByZXR1 cm4gKEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqKSBBY3BpOw0KPiArfQ0KPiArDQo+ICsvKioN Cj4gKyAgQ29udmVydHMgYSB0ZXh0IGRldmljZSBwYXRoIG5vZGUgdG8gUENJIHJvb3QgZGV2aWNl IHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsgIEBwYXJhbSBUZXh0RGV2aWNlTm9kZSAgVGhlIGlu cHV0IFRleHQgZGV2aWNlIHBhdGggbm9kZS4NCj4gKw0KPiArICBAcmV0dXJuIEEgcG9pbnRlciB0 byB0aGUgbmV3bHktY3JlYXRlZCBQQ0kgcm9vdCBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsN Cj4gKyoqLw0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoNCj4gK0RldlBhdGhGcm9tVGV4 dFBjaVJvb3QgKA0KPiArICAgQ0hBUjE2ICpUZXh0RGV2aWNlTm9kZQ0KPiArICApDQo+ICt7DQo+ ICsgIHJldHVybiBDb252ZXJ0RnJvbVRleHRBY3BpIChUZXh0RGV2aWNlTm9kZSwgMHgwYTAzKTsN Cj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIENvbnZlcnRzIGEgdGV4dCBkZXZpY2UgcGF0aCBub2Rl IHRvIFBDSUUgcm9vdCBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyAgQHBhcmFtIFRl eHREZXZpY2VOb2RlICBUaGUgaW5wdXQgVGV4dCBkZXZpY2UgcGF0aCBub2RlLg0KPiArDQo+ICsg IEByZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBuZXdseS1jcmVhdGVkIFBDSUUgcm9vdCBkZXZpY2Ug cGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyoqLw0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09M ICoNCj4gK0RldlBhdGhGcm9tVGV4dFBjaWVSb290ICgNCj4gKyAgIENIQVIxNiAqVGV4dERldmlj ZU5vZGUNCj4gKyAgKQ0KPiArew0KPiArICByZXR1cm4gQ29udmVydEZyb21UZXh0QWNwaSAoVGV4 dERldmljZU5vZGUsIDB4MGEwOCk7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBDb252ZXJ0cyBh IHRleHQgZGV2aWNlIHBhdGggbm9kZSB0byBGbG9wcHkgZGV2aWNlIHBhdGggc3RydWN0dXJlLg0K PiArDQo+ICsgIEBwYXJhbSBUZXh0RGV2aWNlTm9kZSAgVGhlIGlucHV0IFRleHQgZGV2aWNlIHBh dGggbm9kZS4NCj4gKw0KPiArICBAcmV0dXJuIEEgcG9pbnRlciB0byB0aGUgbmV3bHktY3JlYXRl ZCBGbG9wcHkgZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9ERVZJ Q0VfUEFUSF9QUk9UT0NPTCAqDQo+ICtEZXZQYXRoRnJvbVRleHRGbG9wcHkgKA0KPiArICAgQ0hB UjE2ICpUZXh0RGV2aWNlTm9kZQ0KPiArICApDQo+ICt7DQo+ICsgIHJldHVybiBDb252ZXJ0RnJv bVRleHRBY3BpIChUZXh0RGV2aWNlTm9kZSwgMHgwNjA0KTsNCj4gK30NCj4gKw0KPiArLyoqDQo+ ICsgIENvbnZlcnRzIGEgdGV4dCBkZXZpY2UgcGF0aCBub2RlIHRvIEtleWJvYXJkIGRldmljZSBw YXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArICBAcGFyYW0gVGV4dERldmljZU5vZGUgIFRoZSBpbnB1 dCBUZXh0IGRldmljZSBwYXRoIG5vZGUuDQo+ICsNCj4gKyAgQHJldHVybiBBIHBvaW50ZXIgdG8g dGhlIG5ld2x5LWNyZWF0ZWQgIEtleWJvYXJkIGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0K PiArKiovDQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0KPiArRGV2UGF0aEZyb21UZXh0 S2V5Ym9hcmQgKA0KPiArICAgQ0hBUjE2ICpUZXh0RGV2aWNlTm9kZQ0KPiArICApDQo+ICt7DQo+ ICsgIHJldHVybiBDb252ZXJ0RnJvbVRleHRBY3BpIChUZXh0RGV2aWNlTm9kZSwgMHgwMzAxKTsN Cj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIENvbnZlcnRzIGEgdGV4dCBkZXZpY2UgcGF0aCBub2Rl IHRvIFNlcmlhbCBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyAgQHBhcmFtIFRleHRE ZXZpY2VOb2RlICBUaGUgaW5wdXQgVGV4dCBkZXZpY2UgcGF0aCBub2RlLg0KPiArDQo+ICsgIEBy ZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBuZXdseS1jcmVhdGVkIFNlcmlhbCBkZXZpY2UgcGF0aCBz dHJ1Y3R1cmUuDQo+ICsNCj4gKyoqLw0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoNCj4g K0RldlBhdGhGcm9tVGV4dFNlcmlhbCAoDQo+ICsgICBDSEFSMTYgKlRleHREZXZpY2VOb2RlDQo+ ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIENvbnZlcnRGcm9tVGV4dEFjcGkgKFRleHREZXZpY2VO b2RlLCAweDA1MDEpOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgQ29udmVydHMgYSB0ZXh0IGRl dmljZSBwYXRoIG5vZGUgdG8gUGFyYWxsZWwgUG9ydCBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ ICsNCj4gKyAgQHBhcmFtIFRleHREZXZpY2VOb2RlICBUaGUgaW5wdXQgVGV4dCBkZXZpY2UgcGF0 aCBub2RlLg0KPiArDQo+ICsgIEByZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBuZXdseS1jcmVhdGVk IFBhcmFsbGVsIFBvcnQgZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsqKi8NCj4gK0VG SV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqDQo+ICtEZXZQYXRoRnJvbVRleHRQYXJhbGxlbFBvcnQg KA0KPiArICAgQ0hBUjE2ICpUZXh0RGV2aWNlTm9kZQ0KPiArICApDQo+ICt7DQo+ICsgIHJldHVy biBDb252ZXJ0RnJvbVRleHRBY3BpIChUZXh0RGV2aWNlTm9kZSwgMHgwNDAxKTsNCj4gK30NCj4g Kw0KPiArLyoqDQo+ICsgIENvbnZlcnRzIGEgdGV4dCBkZXZpY2UgcGF0aCBub2RlIHRvIEFDUEkg ZXh0ZW5zaW9uIGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArICBAcGFyYW0gVGV4dERl dmljZU5vZGUgIFRoZSBpbnB1dCBUZXh0IGRldmljZSBwYXRoIG5vZGUuDQo+ICsNCj4gKyAgQHJl dHVybiBBIHBvaW50ZXIgdG8gdGhlIG5ld2x5LWNyZWF0ZWQgQUNQSSBleHRlbnNpb24gZGV2aWNl IHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9ERVZJQ0VfUEFUSF9QUk9UT0NP TCAqDQo+ICtEZXZQYXRoRnJvbVRleHRBY3BpRXggKA0KPiArICAgQ0hBUjE2ICpUZXh0RGV2aWNl Tm9kZQ0KPiArICApDQo+ICt7DQo+ICsgIENIQVIxNiAgICAgICAgICAgICAgICAgICAgICAgICAq SElEU3RyOw0KPiArICBDSEFSMTYgICAgICAgICAgICAgICAgICAgICAgICAgKkNJRFN0cjsNCj4g KyAgQ0hBUjE2ICAgICAgICAgICAgICAgICAgICAgICAgICpVSURTdHI7DQo+ICsgIENIQVIxNiAg ICAgICAgICAgICAgICAgICAgICAgICAqSElEU1RSU3RyOw0KPiArICBDSEFSMTYgICAgICAgICAg ICAgICAgICAgICAgICAgKkNJRFNUUlN0cjsNCj4gKyAgQ0hBUjE2ICAgICAgICAgICAgICAgICAg ICAgICAgICpVSURTVFJTdHI7DQo+ICsgIENIQVI4ICAgICAgICAgICAgICAgICAgICAgICAgICAq QXNjaWlTdHI7DQo+ICsgIFVJTlQxNiAgICAgICAgICAgICAgICAgICAgICAgICBMZW5ndGg7DQo+ ICsgIEFDUElfRVhURU5ERURfSElEX0RFVklDRV9QQVRIICAqQWNwaUV4Ow0KPiArDQo+ICsgIEhJ RFN0ciAgICA9IEdldE5leHRQYXJhbVN0ciAoJlRleHREZXZpY2VOb2RlKTsNCj4gKyAgQ0lEU3Ry ICAgID0gR2V0TmV4dFBhcmFtU3RyICgmVGV4dERldmljZU5vZGUpOw0KPiArICBVSURTdHIgICAg PSBHZXROZXh0UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsgIEhJRFNUUlN0ciA9IEdl dE5leHRQYXJhbVN0ciAoJlRleHREZXZpY2VOb2RlKTsNCj4gKyAgQ0lEU1RSU3RyID0gR2V0TmV4 dFBhcmFtU3RyICgmVGV4dERldmljZU5vZGUpOw0KPiArICBVSURTVFJTdHIgPSBHZXROZXh0UGFy YW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsNCj4gKyAgTGVuZ3RoICAgID0gKFVJTlQxNikg KHNpemVvZiAoQUNQSV9FWFRFTkRFRF9ISURfREVWSUNFX1BBVEgpICsgU3RyTGVuIChISURTVFJT dHIpICsgMSk7DQo+ICsgIExlbmd0aCAgICA9IChVSU5UMTYpIChMZW5ndGggKyBTdHJMZW4gKFVJ RFNUUlN0cikgKyAxKTsNCj4gKyAgTGVuZ3RoICAgID0gKFVJTlQxNikgKExlbmd0aCArIFN0ckxl biAoQ0lEU1RSU3RyKSArIDEpOw0KPiArICBBY3BpRXggPSAoQUNQSV9FWFRFTkRFRF9ISURfREVW SUNFX1BBVEggKikgQ3JlYXRlRGV2aWNlTm9kZSAoDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEFDUElfREVWSUNFX1BBVEgsDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFDUElfRVhURU5ERURfRFAsDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExlbmd0aA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KPiAr DQo+ICsgIEFjcGlFeC0+SElEID0gRWlzYUlkRnJvbVRleHQgKEhJRFN0cik7DQo+ICsgIEFjcGlF eC0+Q0lEID0gRWlzYUlkRnJvbVRleHQgKENJRFN0cik7DQo+ICsgIEFjcGlFeC0+VUlEID0gKFVJ TlQzMikgU3RydG9pIChVSURTdHIpOw0KPiArDQo+ICsgIEFzY2lpU3RyID0gKENIQVI4ICopICgo VUlOVDggKilBY3BpRXggKyBzaXplb2YgKEFDUElfRVhURU5ERURfSElEX0RFVklDRV9QQVRIKSk7 DQo+ICsgIFN0clRvQXNjaWkgKEhJRFNUUlN0ciwgJkFzY2lpU3RyKTsNCj4gKyAgU3RyVG9Bc2Np aSAoVUlEU1RSU3RyLCAmQXNjaWlTdHIpOw0KPiArICBTdHJUb0FzY2lpIChDSURTVFJTdHIsICZB c2NpaVN0cik7DQo+ICsNCj4gKyAgcmV0dXJuIChFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKikg QWNwaUV4Ow0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgQ29udmVydHMgYSB0ZXh0IGRldmljZSBw YXRoIG5vZGUgdG8gQUNQSSBleHRlbnNpb24gZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiArDQo+ ICsgIEBwYXJhbSBUZXh0RGV2aWNlTm9kZSAgVGhlIGlucHV0IFRleHQgZGV2aWNlIHBhdGggbm9k ZS4NCj4gKw0KPiArICBAcmV0dXJuIEEgcG9pbnRlciB0byB0aGUgbmV3bHktY3JlYXRlZCBBQ1BJ IGV4dGVuc2lvbiBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyoqLw0KPiArRUZJX0RF VklDRV9QQVRIX1BST1RPQ09MICoNCj4gK0RldlBhdGhGcm9tVGV4dEFjcGlFeHAgKA0KPiArICAg Q0hBUjE2ICpUZXh0RGV2aWNlTm9kZQ0KPiArICApDQo+ICt7DQo+ICsgIENIQVIxNiAgICAgICAg ICAgICAgICAgICAgICAgICAqSElEU3RyOw0KPiArICBDSEFSMTYgICAgICAgICAgICAgICAgICAg ICAgICAgKkNJRFN0cjsNCj4gKyAgQ0hBUjE2ICAgICAgICAgICAgICAgICAgICAgICAgICpVSURT VFJTdHI7DQo+ICsgIENIQVI4ICAgICAgICAgICAgICAgICAgICAgICAgICAqQXNjaWlTdHI7DQo+ ICsgIFVJTlQxNiAgICAgICAgICAgICAgICAgICAgICAgICBMZW5ndGg7DQo+ICsgIEFDUElfRVhU RU5ERURfSElEX0RFVklDRV9QQVRIICAqQWNwaUV4Ow0KPiArDQo+ICsgIEhJRFN0ciAgICA9IEdl dE5leHRQYXJhbVN0ciAoJlRleHREZXZpY2VOb2RlKTsNCj4gKyAgQ0lEU3RyICAgID0gR2V0TmV4 dFBhcmFtU3RyICgmVGV4dERldmljZU5vZGUpOw0KPiArICBVSURTVFJTdHIgPSBHZXROZXh0UGFy YW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsgIExlbmd0aCAgICA9IChVSU5UMTYpIChzaXpl b2YgKEFDUElfRVhURU5ERURfSElEX0RFVklDRV9QQVRIKSArIFN0ckxlbiAoVUlEU1RSU3RyKSAr IDMpOw0KPiArICBBY3BpRXggICAgPSAoQUNQSV9FWFRFTkRFRF9ISURfREVWSUNFX1BBVEggKikg Q3JlYXRlRGV2aWNlTm9kZSAoDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEFDUElfREVWSUNFX1BBVEgsDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFDUElfRVhURU5ERURfRFAsDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExlbmd0aA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KPiAr DQo+ICsgIEFjcGlFeC0+SElEID0gRWlzYUlkRnJvbVRleHQgKEhJRFN0cik7DQo+ICsgIEFjcGlF eC0+Q0lEID0gRWlzYUlkRnJvbVRleHQgKENJRFN0cik7DQo+ICsgIEFjcGlFeC0+VUlEID0gMDsN Cj4gKw0KPiArICBBc2NpaVN0ciA9IChDSEFSOCAqKSAoKFVJTlQ4ICopQWNwaUV4ICsgc2l6ZW9m IChBQ1BJX0VYVEVOREVEX0hJRF9ERVZJQ0VfUEFUSCkpOw0KPiArICAvLw0KPiArICAvLyBISUQg c3RyaW5nIGlzIE5VTEwNCj4gKyAgLy8NCj4gKyAgKkFzY2lpU3RyID0gJ1wwJzsNCj4gKyAgLy8N Cj4gKyAgLy8gQ29udmVydCBVSUQgc3RyaW5nDQo+ICsgIC8vDQo+ICsgIEFzY2lpU3RyKys7DQo+ ICsgIFN0clRvQXNjaWkgKFVJRFNUUlN0ciwgJkFzY2lpU3RyKTsNCj4gKyAgLy8NCj4gKyAgLy8g Q0lEIHN0cmluZyBpcyBOVUxMDQo+ICsgIC8vDQo+ICsgICpBc2NpaVN0ciA9ICdcMCc7DQo+ICsN Cj4gKyAgcmV0dXJuIChFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKikgQWNwaUV4Ow0KPiArfQ0K PiArDQo+ICsvKioNCj4gKyAgQ29udmVydHMgYSB0ZXh0IGRldmljZSBwYXRoIG5vZGUgdG8gQUNQ SSBfQURSIGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArICBAcGFyYW0gVGV4dERldmlj ZU5vZGUgIFRoZSBpbnB1dCBUZXh0IGRldmljZSBwYXRoIG5vZGUuDQo+ICsNCj4gKyAgQHJldHVy biBBIHBvaW50ZXIgdG8gdGhlIG5ld2x5LWNyZWF0ZWQgQUNQSSBfQURSIGRldmljZSBwYXRoIHN0 cnVjdHVyZS4NCj4gKw0KPiArKiovDQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0KPiAr RGV2UGF0aEZyb21UZXh0QWNwaUFkciAoDQo+ICsgICBDSEFSMTYgKlRleHREZXZpY2VOb2RlDQo+ ICsgICkNCj4gK3sNCj4gKyAgQ0hBUjE2ICAgICAgICAgICAgICAgICpEaXNwbGF5RGV2aWNlU3Ry Ow0KPiArICBBQ1BJX0FEUl9ERVZJQ0VfUEFUSCAgKkFjcGlBZHI7DQo+ICsgIFVJTlROICAgICAg ICAgICAgICAgICBJbmRleDsNCj4gKyAgVUlOVE4gICAgICAgICAgICAgICAgIExlbmd0aDsNCj4g Kw0KPiArICBBY3BpQWRyID0gKEFDUElfQURSX0RFVklDRV9QQVRIICopIENyZWF0ZURldmljZU5v ZGUgKA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQUNQSV9ERVZJ Q0VfUEFUSCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFDUElf QURSX0RQLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFVJTlQx Nikgc2l6ZW9mIChBQ1BJX0FEUl9ERVZJQ0VfUEFUSCkNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICk7DQo+ICsgIEFTU0VSVCAoQWNwaUFkciAhPSBOVUxMKTsNCj4g Kw0KPiArICBmb3IgKEluZGV4ID0gMDsgOyBJbmRleCsrKSB7DQo+ICsgICAgRGlzcGxheURldmlj ZVN0ciA9IEdldE5leHRQYXJhbVN0ciAoJlRleHREZXZpY2VOb2RlKTsNCj4gKyAgICBpZiAoSVNf TlVMTCAoKkRpc3BsYXlEZXZpY2VTdHIpKSB7DQo+ICsgICAgICBicmVhazsNCj4gKyAgICB9DQo+ ICsgICAgaWYgKEluZGV4ID4gMCkgew0KPiArICAgICAgTGVuZ3RoICA9IERldmljZVBhdGhOb2Rl TGVuZ3RoIChBY3BpQWRyKTsNCj4gKyAgICAgIEFjcGlBZHIgPSBSZWFsbG9jYXRlUG9vbCAoDQo+ ICsgICAgICAgICAgICAgICAgICBMZW5ndGgsDQo+ICsgICAgICAgICAgICAgICAgICBMZW5ndGgg KyBzaXplb2YgKFVJTlQzMiksDQo+ICsgICAgICAgICAgICAgICAgICBBY3BpQWRyDQo+ICsgICAg ICAgICAgICAgICAgICApOw0KPiArICAgICAgQVNTRVJUIChBY3BpQWRyICE9IE5VTEwpOw0KPiAr ICAgICAgU2V0RGV2aWNlUGF0aE5vZGVMZW5ndGggKEFjcGlBZHIsIExlbmd0aCArIHNpemVvZiAo VUlOVDMyKSk7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgKCZBY3BpQWRyLT5BRFIpW0luZGV4XSA9 IChVSU5UMzIpIFN0cnRvaSAoRGlzcGxheURldmljZVN0cik7DQo+ICsgIH0NCj4gKw0KPiArICBy ZXR1cm4gKEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqKSBBY3BpQWRyOw0KPiArfQ0KPiArDQo+ ICsvKioNCj4gKyAgQ29udmVydHMgYSBnZW5lcmljIG1lc3NhZ2luZyB0ZXh0IGRldmljZSBwYXRo IG5vZGUgdG8gbWVzc2FnaW5nIGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArICBAcGFy YW0gVGV4dERldmljZU5vZGUgIFRoZSBpbnB1dCBUZXh0IGRldmljZSBwYXRoIG5vZGUuDQo+ICsN Cj4gKyAgQHJldHVybiBBIHBvaW50ZXIgdG8gbWVzc2FnaW5nIGRldmljZSBwYXRoIHN0cnVjdHVy ZS4NCj4gKw0KPiArKiovDQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0KPiArRGV2UGF0 aEZyb21UZXh0TXNnICgNCj4gKyAgIENIQVIxNiAqVGV4dERldmljZU5vZGUNCj4gKyAgKQ0KPiAr ew0KPiArICByZXR1cm4gRGV2UGF0aEZyb21UZXh0R2VuZXJpY1BhdGggKE1FU1NBR0lOR19ERVZJ Q0VfUEFUSCwgVGV4dERldmljZU5vZGUpOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgQ29udmVy dHMgYSB0ZXh0IGRldmljZSBwYXRoIG5vZGUgdG8gUGFyYWxsZWwgUG9ydCBkZXZpY2UgcGF0aCBz dHJ1Y3R1cmUuDQo+ICsNCj4gKyAgQHBhcmFtIFRleHREZXZpY2VOb2RlICBUaGUgaW5wdXQgVGV4 dCBkZXZpY2UgcGF0aCBub2RlLg0KPiArDQo+ICsgIEByZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBu ZXdseS1jcmVhdGVkIFBhcmFsbGVsIFBvcnQgZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiArDQo+ ICsqKi8NCj4gK0VGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqDQo+ICtEZXZQYXRoRnJvbVRleHRB dGEgKA0KPiArIENIQVIxNiAqVGV4dERldmljZU5vZGUNCj4gKykNCj4gK3sNCj4gKyAgQ0hBUjE2 ICAgICAgICAgICAgKlByaW1hcnlTZWNvbmRhcnlTdHI7DQo+ICsgIENIQVIxNiAgICAgICAgICAg ICpTbGF2ZU1hc3RlclN0cjsNCj4gKyAgQ0hBUjE2ICAgICAgICAgICAgKkx1blN0cjsNCj4gKyAg QVRBUElfREVWSUNFX1BBVEggKkF0YXBpOw0KPiArDQo+ICsgIEF0YXBpID0gKEFUQVBJX0RFVklD RV9QQVRIICopIENyZWF0ZURldmljZU5vZGUgKA0KPiArICAgIE1FU1NBR0lOR19ERVZJQ0VfUEFU SCwNCj4gKyAgICBNU0dfQVRBUElfRFAsDQo+ICsgICAgKFVJTlQxNikgc2l6ZW9mIChBVEFQSV9E RVZJQ0VfUEFUSCkNCj4gKyAgICApOw0KPiArDQo+ICsgIFByaW1hcnlTZWNvbmRhcnlTdHIgPSBH ZXROZXh0UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsgIFNsYXZlTWFzdGVyU3RyICAg ICAgPSBHZXROZXh0UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsgIEx1blN0ciAgICAg ICAgICAgICAgPSBHZXROZXh0UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsNCj4gKyAg aWYgKFN0ckNtcCAoUHJpbWFyeVNlY29uZGFyeVN0ciwgTCJQcmltYXJ5IikgPT0gMCkgew0KPiAr ICAgIEF0YXBpLT5QcmltYXJ5U2Vjb25kYXJ5ID0gMDsNCj4gKyAgfSBlbHNlIGlmIChTdHJDbXAg KFByaW1hcnlTZWNvbmRhcnlTdHIsIEwiU2Vjb25kYXJ5IikgPT0gMCkgew0KPiArICAgIEF0YXBp LT5QcmltYXJ5U2Vjb25kYXJ5ID0gMTsNCj4gKyAgfSBlbHNlIHsNCj4gKyAgICBBdGFwaS0+UHJp bWFyeVNlY29uZGFyeSA9IChVSU5UOCkgU3RydG9pIChQcmltYXJ5U2Vjb25kYXJ5U3RyKTsNCj4g KyAgfQ0KPiArICBpZiAoU3RyQ21wIChTbGF2ZU1hc3RlclN0ciwgTCJNYXN0ZXIiKSA9PSAwKSB7 DQo+ICsgICAgQXRhcGktPlNsYXZlTWFzdGVyICAgICAgPSAwOw0KPiArICB9IGVsc2UgaWYgKFN0 ckNtcCAoU2xhdmVNYXN0ZXJTdHIsIEwiU2xhdmUiKSA9PSAwKSB7DQo+ICsgICAgQXRhcGktPlNs YXZlTWFzdGVyICAgICAgPSAxOw0KPiArICB9IGVsc2Ugew0KPiArICAgIEF0YXBpLT5TbGF2ZU1h c3RlciAgICAgID0gKFVJTlQ4KSBTdHJ0b2kgKFNsYXZlTWFzdGVyU3RyKTsNCj4gKyAgfQ0KPiAr DQo+ICsgIEF0YXBpLT5MdW4gICAgICAgICAgICAgICAgPSAoVUlOVDE2KSBTdHJ0b2kgKEx1blN0 cik7DQo+ICsNCj4gKyAgcmV0dXJuIChFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKikgQXRhcGk7 DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBDb252ZXJ0cyBhIHRleHQgZGV2aWNlIHBhdGggbm9k ZSB0byBTQ1NJIGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArICBAcGFyYW0gVGV4dERl dmljZU5vZGUgIFRoZSBpbnB1dCBUZXh0IGRldmljZSBwYXRoIG5vZGUuDQo+ICsNCj4gKyAgQHJl dHVybiBBIHBvaW50ZXIgdG8gdGhlIG5ld2x5LWNyZWF0ZWQgU0NTSSBkZXZpY2UgcGF0aCBzdHJ1 Y3R1cmUuDQo+ICsNCj4gKyoqLw0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoNCj4gK0Rl dlBhdGhGcm9tVGV4dFNjc2kgKA0KPiArICAgQ0hBUjE2ICpUZXh0RGV2aWNlTm9kZQ0KPiArICAp DQo+ICt7DQo+ICsgIENIQVIxNiAgICAgICAgICAgICpQdW5TdHI7DQo+ICsgIENIQVIxNiAgICAg ICAgICAgICpMdW5TdHI7DQo+ICsgIFNDU0lfREVWSUNFX1BBVEggICpTY3NpOw0KPiArDQo+ICsg IFB1blN0ciA9IEdldE5leHRQYXJhbVN0ciAoJlRleHREZXZpY2VOb2RlKTsNCj4gKyAgTHVuU3Ry ID0gR2V0TmV4dFBhcmFtU3RyICgmVGV4dERldmljZU5vZGUpOw0KPiArICBTY3NpICAgPSAoU0NT SV9ERVZJQ0VfUEFUSCAqKSBDcmVhdGVEZXZpY2VOb2RlICgNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTUVTU0FHSU5HX0RFVklDRV9QQVRILA0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBNU0dfU0NTSV9EUCwNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKFVJTlQxNikgc2l6ZW9mIChTQ1NJX0RFVklDRV9QQVRIKQ0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KPiArDQo+ICsgIFNjc2ktPlB1 biA9IChVSU5UMTYpIFN0cnRvaSAoUHVuU3RyKTsNCj4gKyAgU2NzaS0+THVuID0gKFVJTlQxNikg U3RydG9pIChMdW5TdHIpOw0KPiArDQo+ICsgIHJldHVybiAoRUZJX0RFVklDRV9QQVRIX1BST1RP Q09MICopIFNjc2k7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBDb252ZXJ0cyBhIHRleHQgZGV2 aWNlIHBhdGggbm9kZSB0byBGaWJyZSBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyAg QHBhcmFtIFRleHREZXZpY2VOb2RlICBUaGUgaW5wdXQgVGV4dCBkZXZpY2UgcGF0aCBub2RlLg0K PiArDQo+ICsgIEByZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBuZXdseS1jcmVhdGVkIEZpYnJlIGRl dmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArKiovDQo+ICtFRklfREVWSUNFX1BBVEhfUFJP VE9DT0wgKg0KPiArRGV2UGF0aEZyb21UZXh0RmlicmUgKA0KPiArICAgQ0hBUjE2ICpUZXh0RGV2 aWNlTm9kZQ0KPiArICApDQo+ICt7DQo+ICsgIENIQVIxNiAgICAgICAgICAgICAgICAgICAgKldX TlN0cjsNCj4gKyAgQ0hBUjE2ICAgICAgICAgICAgICAgICAgICAqTHVuU3RyOw0KPiArICBGSUJS RUNIQU5ORUxfREVWSUNFX1BBVEggICpGaWJyZTsNCj4gKw0KPiArICBXV05TdHIgPSBHZXROZXh0 UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsgIEx1blN0ciA9IEdldE5leHRQYXJhbVN0 ciAoJlRleHREZXZpY2VOb2RlKTsNCj4gKyAgRmlicmUgID0gKEZJQlJFQ0hBTk5FTF9ERVZJQ0Vf UEFUSCAqKSBDcmVhdGVEZXZpY2VOb2RlICgNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE1FU1NBR0lOR19ERVZJQ0VfUEFUSCwNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1TR19GSUJSRUNIQU5ORUxfRFAsDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVUlOVDE2KSBzaXplb2YgKEZJ QlJFQ0hBTk5FTF9ERVZJQ0VfUEFUSCkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICk7DQo+ICsNCj4gKyAgRmlicmUtPlJlc2VydmVkID0gMDsNCj4gKyAgU3Ry dG9pNjQgKFdXTlN0ciwgJkZpYnJlLT5XV04pOw0KPiArICBTdHJ0b2k2NCAoTHVuU3RyLCAmRmli cmUtPkx1bik7DQo+ICsNCj4gKyAgcmV0dXJuIChFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKikg RmlicmU7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBDb252ZXJ0cyBhIHRleHQgZGV2aWNlIHBh dGggbm9kZSB0byBGaWJyZUV4IGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArICBAcGFy YW0gVGV4dERldmljZU5vZGUgIFRoZSBpbnB1dCBUZXh0IGRldmljZSBwYXRoIG5vZGUuDQo+ICsN Cj4gKyAgQHJldHVybiBBIHBvaW50ZXIgdG8gdGhlIG5ld2x5LWNyZWF0ZWQgRmlicmVFeCBkZXZp Y2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyoqLw0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RP Q09MICoNCj4gK0RldlBhdGhGcm9tVGV4dEZpYnJlRXggKA0KPiArICAgQ0hBUjE2ICpUZXh0RGV2 aWNlTm9kZQ0KPiArICApDQo+ICt7DQo+ICsgIENIQVIxNiAgICAgICAgICAgICAgICAgICAgICAq V1dOU3RyOw0KPiArICBDSEFSMTYgICAgICAgICAgICAgICAgICAgICAgKkx1blN0cjsNCj4gKyAg RklCUkVDSEFOTkVMRVhfREVWSUNFX1BBVEggICpGaWJyZUV4Ow0KPiArDQo+ICsgIFdXTlN0ciAg PSBHZXROZXh0UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsgIEx1blN0ciAgPSBHZXRO ZXh0UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsgIEZpYnJlRXggPSAoRklCUkVDSEFO TkVMRVhfREVWSUNFX1BBVEggKikgQ3JlYXRlRGV2aWNlTm9kZSAoDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRVNTQUdJTkdfREVWSUNFX1BBVEgsDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNU0dfRklCUkVD SEFOTkVMRVhfRFAsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoVUlOVDE2KSBzaXplb2YgKEZJQlJFQ0hBTk5FTEVYX0RFVklDRV9QQVRIKQ0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCj4gKw0KPiArICBG aWJyZUV4LT5SZXNlcnZlZCA9IDA7DQo+ICsgIFN0cnRvaTY0IChXV05TdHIsIChVSU5UNjQgKikg KCZGaWJyZUV4LT5XV04pKTsNCj4gKyAgU3RydG9pNjQgKEx1blN0ciwgKFVJTlQ2NCAqKSAoJkZp YnJlRXgtPkx1bikpOw0KPiArDQo+ICsgICooVUlOVDY0ICopICgmRmlicmVFeC0+V1dOKSA9IFN3 YXBCeXRlczY0ICgqKFVJTlQ2NCAqKSAoJkZpYnJlRXgtPldXTikpOw0KPiArICAqKFVJTlQ2NCAq KSAoJkZpYnJlRXgtPkx1bikgPSBTd2FwQnl0ZXM2NCAoKihVSU5UNjQgKikgKCZGaWJyZUV4LT5M dW4pKTsNCj4gKw0KPiArICByZXR1cm4gKEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqKSBGaWJy ZUV4Ow0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgQ29udmVydHMgYSB0ZXh0IGRldmljZSBwYXRo IG5vZGUgdG8gMTM5NCBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyAgQHBhcmFtIFRl eHREZXZpY2VOb2RlICBUaGUgaW5wdXQgVGV4dCBkZXZpY2UgcGF0aCBub2RlLg0KPiArDQo+ICsg IEByZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBuZXdseS1jcmVhdGVkIDEzOTQgZGV2aWNlIHBhdGgg c3RydWN0dXJlLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqDQo+ ICtEZXZQYXRoRnJvbVRleHQxMzk0ICgNCj4gKyAgIENIQVIxNiAqVGV4dERldmljZU5vZGUNCj4g KyAgKQ0KPiArew0KPiArICBDSEFSMTYgICAgICAgICAgICAqR3VpZFN0cjsNCj4gKyAgRjEzOTRf REVWSUNFX1BBVEggKkYxMzk0RGV2UGF0aDsNCj4gKw0KPiArICBHdWlkU3RyID0gR2V0TmV4dFBh cmFtU3RyICgmVGV4dERldmljZU5vZGUpOw0KPiArICBGMTM5NERldlBhdGggID0gKEYxMzk0X0RF VklDRV9QQVRIICopIENyZWF0ZURldmljZU5vZGUgKA0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgTUVTU0FHSU5HX0RFVklDRV9QQVRILA0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTVNHXzEzOTRfRFAsDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVUlOVDE2KSBzaXplb2YgKEYxMzk0 X0RFVklDRV9QQVRIKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKTsNCj4gKw0KPiArICBGMTM5NERldlBhdGgtPlJlc2VydmVkID0gMDsNCj4gKyAgRjEzOTRE ZXZQYXRoLT5HdWlkICAgICA9IFN0ckhleFRvVWludDY0IChHdWlkU3RyKTsNCj4gKw0KPiArICBy ZXR1cm4gKEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqKSBGMTM5NERldlBhdGg7DQo+ICt9DQo+ ICsNCj4gKy8qKg0KPiArICBDb252ZXJ0cyBhIHRleHQgZGV2aWNlIHBhdGggbm9kZSB0byBVU0Ig ZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsgIEBwYXJhbSBUZXh0RGV2aWNlTm9kZSAg VGhlIGlucHV0IFRleHQgZGV2aWNlIHBhdGggbm9kZS4NCj4gKw0KPiArICBAcmV0dXJuIEEgcG9p bnRlciB0byB0aGUgbmV3bHktY3JlYXRlZCBVU0IgZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiAr DQo+ICsqKi8NCj4gK0VGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqDQo+ICtEZXZQYXRoRnJvbVRl eHRVc2IgKA0KPiArICAgQ0hBUjE2ICpUZXh0RGV2aWNlTm9kZQ0KPiArICApDQo+ICt7DQo+ICsg IENIQVIxNiAgICAgICAgICAqUG9ydFN0cjsNCj4gKyAgQ0hBUjE2ICAgICAgICAgICpJbnRlcmZh Y2VTdHI7DQo+ICsgIFVTQl9ERVZJQ0VfUEFUSCAqVXNiOw0KPiArDQo+ICsgIFBvcnRTdHIgICAg ICAgICAgICAgICA9IEdldE5leHRQYXJhbVN0ciAoJlRleHREZXZpY2VOb2RlKTsNCj4gKyAgSW50 ZXJmYWNlU3RyICAgICAgICAgID0gR2V0TmV4dFBhcmFtU3RyICgmVGV4dERldmljZU5vZGUpOw0K PiArICBVc2IgICAgICAgICAgICAgICAgICAgPSAoVVNCX0RFVklDRV9QQVRIICopIENyZWF0ZURl dmljZU5vZGUgKA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTUVTU0FHSU5HX0RFVklDRV9QQVRILA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTVNHX1VTQl9EUCwNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChVSU5UMTYpIHNpemVvZiAoVVNCX0RFVklD RV9QQVRIKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKTsNCj4gKw0KPiArICBVc2ItPlBhcmVudFBvcnROdW1iZXIgPSAoVUlOVDgpIFN0cnRvaSAo UG9ydFN0cik7DQo+ICsgIFVzYi0+SW50ZXJmYWNlTnVtYmVyICA9IChVSU5UOCkgU3RydG9pIChJ bnRlcmZhY2VTdHIpOw0KPiArDQo+ICsgIHJldHVybiAoRUZJX0RFVklDRV9QQVRIX1BST1RPQ09M ICopIFVzYjsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIENvbnZlcnRzIGEgdGV4dCBkZXZpY2Ug cGF0aCBub2RlIHRvIEkyMCBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyAgQHBhcmFt IFRleHREZXZpY2VOb2RlICBUaGUgaW5wdXQgVGV4dCBkZXZpY2UgcGF0aCBub2RlLg0KPiArDQo+ ICsgIEByZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBuZXdseS1jcmVhdGVkIEkyMCBkZXZpY2UgcGF0 aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyoqLw0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoN Cj4gK0RldlBhdGhGcm9tVGV4dEkyTyAoDQo+ICsgICBDSEFSMTYgKlRleHREZXZpY2VOb2RlDQo+ ICsgICkNCj4gK3sNCj4gKyAgQ0hBUjE2ICAgICAgICAgICpUSURTdHI7DQo+ICsgIEkyT19ERVZJ Q0VfUEFUSCAqSTJPRGV2UGF0aDsNCj4gKw0KPiArICBUSURTdHIgICAgID0gR2V0TmV4dFBhcmFt U3RyICgmVGV4dERldmljZU5vZGUpOw0KPiArICBJMk9EZXZQYXRoID0gKEkyT19ERVZJQ0VfUEFU SCAqKSBDcmVhdGVEZXZpY2VOb2RlICgNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIE1FU1NBR0lOR19ERVZJQ0VfUEFUSCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIE1TR19JMk9fRFAsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoVUlOVDE2KSBzaXplb2YgKEkyT19ERVZJQ0VfUEFUSCkNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICk7DQo+ICsNCj4gKyAgSTJPRGV2UGF0aC0+VGlkICA9 IChVSU5UMzIpIFN0cnRvaSAoVElEU3RyKTsNCj4gKw0KPiArICByZXR1cm4gKEVGSV9ERVZJQ0Vf UEFUSF9QUk9UT0NPTCAqKSBJMk9EZXZQYXRoOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgQ29u dmVydHMgYSB0ZXh0IGRldmljZSBwYXRoIG5vZGUgdG8gSW5maW5pIEJhbmQgZGV2aWNlIHBhdGgg c3RydWN0dXJlLg0KPiArDQo+ICsgIEBwYXJhbSBUZXh0RGV2aWNlTm9kZSAgVGhlIGlucHV0IFRl eHQgZGV2aWNlIHBhdGggbm9kZS4NCj4gKw0KPiArICBAcmV0dXJuIEEgcG9pbnRlciB0byB0aGUg bmV3bHktY3JlYXRlZCBJbmZpbmkgQmFuZCBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4g KyoqLw0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoNCj4gK0RldlBhdGhGcm9tVGV4dElu ZmluaWJhbmQgKA0KPiArICAgQ0hBUjE2ICpUZXh0RGV2aWNlTm9kZQ0KPiArICApDQo+ICt7DQo+ ICsgIENIQVIxNiAgICAgICAgICAgICAgICAgICpGbGFnc1N0cjsNCj4gKyAgQ0hBUjE2ICAgICAg ICAgICAgICAgICAgKkd1aWRTdHI7DQo+ICsgIENIQVIxNiAgICAgICAgICAgICAgICAgICpTaWRT dHI7DQo+ICsgIENIQVIxNiAgICAgICAgICAgICAgICAgICpUaWRTdHI7DQo+ICsgIENIQVIxNiAg ICAgICAgICAgICAgICAgICpEaWRTdHI7DQo+ICsgIElORklOSUJBTkRfREVWSUNFX1BBVEggICpJ bmZpbmlCYW5kOw0KPiArDQo+ICsgIEZsYWdzU3RyICAgPSBHZXROZXh0UGFyYW1TdHIgKCZUZXh0 RGV2aWNlTm9kZSk7DQo+ICsgIEd1aWRTdHIgICAgPSBHZXROZXh0UGFyYW1TdHIgKCZUZXh0RGV2 aWNlTm9kZSk7DQo+ICsgIFNpZFN0ciAgICAgPSBHZXROZXh0UGFyYW1TdHIgKCZUZXh0RGV2aWNl Tm9kZSk7DQo+ICsgIFRpZFN0ciAgICAgPSBHZXROZXh0UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9k ZSk7DQo+ICsgIERpZFN0ciAgICAgPSBHZXROZXh0UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7 DQo+ICsgIEluZmluaUJhbmQgPSAoSU5GSU5JQkFORF9ERVZJQ0VfUEFUSCAqKSBDcmVhdGVEZXZp Y2VOb2RlICgNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TUVTU0FHSU5HX0RFVklDRV9QQVRILA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBNU0dfSU5GSU5JQkFORF9EUCwNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKFVJTlQxNikgc2l6ZW9mIChJTkZJTklCQU5EX0RFVklD RV9QQVRIKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAp Ow0KPiArDQo+ICsgIEluZmluaUJhbmQtPlJlc291cmNlRmxhZ3MgPSAoVUlOVDMyKSBTdHJ0b2kg KEZsYWdzU3RyKTsNCj4gKyAgU3RyVG9HdWlkIChHdWlkU3RyLCAoRUZJX0dVSUQgKikgSW5maW5p QmFuZC0+UG9ydEdpZCk7DQo+ICsgIFN0cnRvaTY0IChTaWRTdHIsICZJbmZpbmlCYW5kLT5TZXJ2 aWNlSWQpOw0KPiArICBTdHJ0b2k2NCAoVGlkU3RyLCAmSW5maW5pQmFuZC0+VGFyZ2V0UG9ydElk KTsNCj4gKyAgU3RydG9pNjQgKERpZFN0ciwgJkluZmluaUJhbmQtPkRldmljZUlkKTsNCj4gKw0K PiArICByZXR1cm4gKEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqKSBJbmZpbmlCYW5kOw0KPiAr fQ0KPiArDQo+ICsvKioNCj4gKyAgQ29udmVydHMgYSB0ZXh0IGRldmljZSBwYXRoIG5vZGUgdG8g VmVuZG9yLURlZmluZWQgTWVzc2FnaW5nIGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiAr ICBAcGFyYW0gVGV4dERldmljZU5vZGUgIFRoZSBpbnB1dCBUZXh0IGRldmljZSBwYXRoIG5vZGUu DQo+ICsNCj4gKyAgQHJldHVybiBBIHBvaW50ZXIgdG8gdGhlIG5ld2x5LWNyZWF0ZWQgVmVuZG9y LURlZmluZWQgTWVzc2FnaW5nIGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArKiovDQo+ ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0KPiArRGV2UGF0aEZyb21UZXh0VmVuTXNnICgN Cj4gKyAgIENIQVIxNiAqVGV4dERldmljZU5vZGUNCj4gKyAgKQ0KPiArew0KPiArICByZXR1cm4g Q29udmVydEZyb21UZXh0VmVuZG9yICgNCj4gKyAgICAgICAgICAgIFRleHREZXZpY2VOb2RlLA0K PiArICAgICAgICAgICAgTUVTU0FHSU5HX0RFVklDRV9QQVRILA0KPiArICAgICAgICAgICAgTVNH X1ZFTkRPUl9EUA0KPiArICAgICAgICAgICAgKTsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIENv bnZlcnRzIGEgdGV4dCBkZXZpY2UgcGF0aCBub2RlIHRvIFZlbmRvciBkZWZpbmVkIFBDLUFOU0kg ZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsgIEBwYXJhbSBUZXh0RGV2aWNlTm9kZSAg VGhlIGlucHV0IFRleHQgZGV2aWNlIHBhdGggbm9kZS4NCj4gKw0KPiArICBAcmV0dXJuIEEgcG9p bnRlciB0byB0aGUgbmV3bHktY3JlYXRlZCBWZW5kb3IgZGVmaW5lZCBQQy1BTlNJIGRldmljZSBw YXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArKiovDQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wg Kg0KPiArRGV2UGF0aEZyb21UZXh0VmVuUGNBbnNpICgNCj4gKyAgIENIQVIxNiAqVGV4dERldmlj ZU5vZGUNCj4gKyAgKQ0KPiArew0KPiArICBWRU5ET1JfREVWSUNFX1BBVEggICpWZW5kb3I7DQo+ ICsNCj4gKyAgVmVuZG9yID0gKFZFTkRPUl9ERVZJQ0VfUEFUSCAqKSBDcmVhdGVEZXZpY2VOb2Rl ICgNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FU1NBR0lOR19ERVZJ Q0VfUEFUSCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1TR19WRU5E T1JfRFAsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVUlOVDE2KSBz aXplb2YgKFZFTkRPUl9ERVZJQ0VfUEFUSCkpOw0KPiArICBDb3B5R3VpZCAoJlZlbmRvci0+R3Vp ZCwgJmdFZmlQY0Fuc2lHdWlkKTsNCj4gKw0KPiArICByZXR1cm4gKEVGSV9ERVZJQ0VfUEFUSF9Q Uk9UT0NPTCAqKSBWZW5kb3I7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBDb252ZXJ0cyBhIHRl eHQgZGV2aWNlIHBhdGggbm9kZSB0byBWZW5kb3IgZGVmaW5lZCBWVDEwMCBkZXZpY2UgcGF0aCBz dHJ1Y3R1cmUuDQo+ICsNCj4gKyAgQHBhcmFtIFRleHREZXZpY2VOb2RlICBUaGUgaW5wdXQgVGV4 dCBkZXZpY2UgcGF0aCBub2RlLg0KPiArDQo+ICsgIEByZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBu ZXdseS1jcmVhdGVkIFZlbmRvciBkZWZpbmVkIFZUMTAwIGRldmljZSBwYXRoIHN0cnVjdHVyZS4N Cj4gKw0KPiArKiovDQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0KPiArRGV2UGF0aEZy b21UZXh0VmVuVnQxMDAgKA0KPiArICAgQ0hBUjE2ICpUZXh0RGV2aWNlTm9kZQ0KPiArICApDQo+ ICt7DQo+ICsgIFZFTkRPUl9ERVZJQ0VfUEFUSCAgKlZlbmRvcjsNCj4gKw0KPiArICBWZW5kb3Ig PSAoVkVORE9SX0RFVklDRV9QQVRIICopIENyZWF0ZURldmljZU5vZGUgKA0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVTU0FHSU5HX0RFVklDRV9QQVRILA0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTVNHX1ZFTkRPUl9EUCwNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChVSU5UMTYpIHNpemVvZiAoVkVORE9SX0RF VklDRV9QQVRIKSk7DQo+ICsgIENvcHlHdWlkICgmVmVuZG9yLT5HdWlkLCAmZ0VmaVZUMTAwR3Vp ZCk7DQo+ICsNCj4gKyAgcmV0dXJuIChFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKikgVmVuZG9y Ow0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgQ29udmVydHMgYSB0ZXh0IGRldmljZSBwYXRoIG5v ZGUgdG8gVmVuZG9yIGRlZmluZWQgVlQxMDAgUGx1cyBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ ICsNCj4gKyAgQHBhcmFtIFRleHREZXZpY2VOb2RlICBUaGUgaW5wdXQgVGV4dCBkZXZpY2UgcGF0 aCBub2RlLg0KPiArDQo+ICsgIEByZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBuZXdseS1jcmVhdGVk IFZlbmRvciBkZWZpbmVkIFZUMTAwIFBsdXMgZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiArDQo+ ICsqKi8NCj4gK0VGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqDQo+ICtEZXZQYXRoRnJvbVRleHRW ZW5WdDEwMFBsdXMgKA0KPiArICAgQ0hBUjE2ICpUZXh0RGV2aWNlTm9kZQ0KPiArICApDQo+ICt7 DQo+ICsgIFZFTkRPUl9ERVZJQ0VfUEFUSCAgKlZlbmRvcjsNCj4gKw0KPiArICBWZW5kb3IgPSAo VkVORE9SX0RFVklDRV9QQVRIICopIENyZWF0ZURldmljZU5vZGUgKA0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTUVTU0FHSU5HX0RFVklDRV9QQVRILA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTVNHX1ZFTkRPUl9EUCwNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChVSU5UMTYpIHNpemVvZiAoVkVORE9SX0RFVklD RV9QQVRIKSk7DQo+ICsgIENvcHlHdWlkICgmVmVuZG9yLT5HdWlkLCAmZ0VmaVZUMTAwUGx1c0d1 aWQpOw0KPiArDQo+ICsgIHJldHVybiAoRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICopIFZlbmRv cjsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIENvbnZlcnRzIGEgdGV4dCBkZXZpY2UgcGF0aCBu b2RlIHRvIFZlbmRvciBkZWZpbmVkIFVURjggZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiArDQo+ ICsgIEBwYXJhbSBUZXh0RGV2aWNlTm9kZSAgVGhlIGlucHV0IFRleHQgZGV2aWNlIHBhdGggbm9k ZS4NCj4gKw0KPiArICBAcmV0dXJuIEEgcG9pbnRlciB0byB0aGUgbmV3bHktY3JlYXRlZCBWZW5k b3IgZGVmaW5lZCBVVEY4IGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArKiovDQo+ICtF RklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0KPiArRGV2UGF0aEZyb21UZXh0VmVuVXRmOCAoDQo+ ICsgICBDSEFSMTYgKlRleHREZXZpY2VOb2RlDQo+ICsgICkNCj4gK3sNCj4gKyAgVkVORE9SX0RF VklDRV9QQVRIICAqVmVuZG9yOw0KPiArDQo+ICsgIFZlbmRvciA9IChWRU5ET1JfREVWSUNFX1BB VEggKikgQ3JlYXRlRGV2aWNlTm9kZSAoDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBNRVNTQUdJTkdfREVWSUNFX1BBVEgsDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBNU0dfVkVORE9SX0RQLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKFVJTlQxNikgc2l6ZW9mIChWRU5ET1JfREVWSUNFX1BBVEgpKTsNCj4gKyAg Q29weUd1aWQgKCZWZW5kb3ItPkd1aWQsICZnRWZpVlRVVEY4R3VpZCk7DQo+ICsNCj4gKyAgcmV0 dXJuIChFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKikgVmVuZG9yOw0KPiArfQ0KPiArDQo+ICsv KioNCj4gKyAgQ29udmVydHMgYSB0ZXh0IGRldmljZSBwYXRoIG5vZGUgdG8gVUFSVCBGbG93IENv bnRyb2wgZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsgIEBwYXJhbSBUZXh0RGV2aWNl Tm9kZSAgVGhlIGlucHV0IFRleHQgZGV2aWNlIHBhdGggbm9kZS4NCj4gKw0KPiArICBAcmV0dXJu IEEgcG9pbnRlciB0byB0aGUgbmV3bHktY3JlYXRlZCBVQVJUIEZsb3cgQ29udHJvbCBkZXZpY2Ug cGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyoqLw0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09M ICoNCj4gK0RldlBhdGhGcm9tVGV4dFVhcnRGbG93Q3RybCAoDQo+ICsgICBDSEFSMTYgKlRleHRE ZXZpY2VOb2RlDQo+ICsgICkNCj4gK3sNCj4gKyAgQ0hBUjE2ICAgICAgICAgICAgICAgICAgICAg ICAgKlZhbHVlU3RyOw0KPiArICBVQVJUX0ZMT1dfQ09OVFJPTF9ERVZJQ0VfUEFUSCAqVWFydEZs b3dDb250cm9sOw0KPiArDQo+ICsgIFZhbHVlU3RyICAgICAgICA9IEdldE5leHRQYXJhbVN0ciAo JlRleHREZXZpY2VOb2RlKTsNCj4gKyAgVWFydEZsb3dDb250cm9sID0gKFVBUlRfRkxPV19DT05U Uk9MX0RFVklDRV9QQVRIICopIENyZWF0ZURldmljZU5vZGUgKA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRVNTQUdJTkdfREVWSUNF X1BBVEgsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE1TR19WRU5ET1JfRFAsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChVSU5UMTYpIHNpemVvZiAoVUFSVF9GTE9XX0NP TlRST0xfREVWSUNFX1BBVEgpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICk7DQo+ICsNCj4gKyAgQ29weUd1aWQgKCZVYXJ0Rmxvd0Nv bnRyb2wtPkd1aWQsICZnRWZpVWFydERldmljZVBhdGhHdWlkKTsNCj4gKyAgaWYgKFN0ckNtcCAo VmFsdWVTdHIsIEwiWG9uWG9mZiIpID09IDApIHsNCj4gKyAgICBVYXJ0Rmxvd0NvbnRyb2wtPkZs b3dDb250cm9sTWFwID0gMjsNCj4gKyAgfSBlbHNlIGlmIChTdHJDbXAgKFZhbHVlU3RyLCBMIkhh cmR3YXJlIikgPT0gMCkgew0KPiArICAgIFVhcnRGbG93Q29udHJvbC0+Rmxvd0NvbnRyb2xNYXAg PSAxOw0KPiArICB9IGVsc2Ugew0KPiArICAgIFVhcnRGbG93Q29udHJvbC0+Rmxvd0NvbnRyb2xN YXAgPSAwOw0KPiArICB9DQo+ICsNCj4gKyAgcmV0dXJuIChFRklfREVWSUNFX1BBVEhfUFJPVE9D T0wgKikgVWFydEZsb3dDb250cm9sOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgQ29udmVydHMg YSB0ZXh0IGRldmljZSBwYXRoIG5vZGUgdG8gU2VyaWFsIEF0dGFjaGVkIFNDU0kgZGV2aWNlIHBh dGggc3RydWN0dXJlLg0KPiArDQo+ICsgIEBwYXJhbSBUZXh0RGV2aWNlTm9kZSAgVGhlIGlucHV0 IFRleHQgZGV2aWNlIHBhdGggbm9kZS4NCj4gKw0KPiArICBAcmV0dXJuIEEgcG9pbnRlciB0byB0 aGUgbmV3bHktY3JlYXRlZCBTZXJpYWwgQXR0YWNoZWQgU0NTSSBkZXZpY2UgcGF0aCBzdHJ1Y3R1 cmUuDQo+ICsNCj4gKyoqLw0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoNCj4gK0RldlBh dGhGcm9tVGV4dFNBUyAoDQo+ICsgICBDSEFSMTYgKlRleHREZXZpY2VOb2RlDQo+ICsgICkNCj4g K3sNCj4gKyAgQ0hBUjE2ICAgICAgICAgICpBZGRyZXNzU3RyOw0KPiArICBDSEFSMTYgICAgICAg ICAgKkx1blN0cjsNCj4gKyAgQ0hBUjE2ICAgICAgICAgICpSVFBTdHI7DQo+ICsgIENIQVIxNiAg ICAgICAgICAqU0FTU0FUQVN0cjsNCj4gKyAgQ0hBUjE2ICAgICAgICAgICpMb2NhdGlvblN0cjsN Cj4gKyAgQ0hBUjE2ICAgICAgICAgICpDb25uZWN0U3RyOw0KPiArICBDSEFSMTYgICAgICAgICAg KkRyaXZlQmF5U3RyOw0KPiArICBDSEFSMTYgICAgICAgICAgKlJlc2VydmVkU3RyOw0KPiArICBV SU5UMTYgICAgICAgICAgSW5mbzsNCj4gKyAgVUlOVDE2ICAgICAgICAgIFVpbnQxNjsNCj4gKyAg U0FTX0RFVklDRV9QQVRIICpTYXM7DQo+ICsNCj4gKyAgQWRkcmVzc1N0ciAgPSBHZXROZXh0UGFy YW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsgIEx1blN0ciAgICAgID0gR2V0TmV4dFBhcmFt U3RyICgmVGV4dERldmljZU5vZGUpOw0KPiArICBSVFBTdHIgICAgICA9IEdldE5leHRQYXJhbVN0 ciAoJlRleHREZXZpY2VOb2RlKTsNCj4gKyAgU0FTU0FUQVN0ciAgPSBHZXROZXh0UGFyYW1TdHIg KCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsgIExvY2F0aW9uU3RyID0gR2V0TmV4dFBhcmFtU3RyICgm VGV4dERldmljZU5vZGUpOw0KPiArICBDb25uZWN0U3RyICA9IEdldE5leHRQYXJhbVN0ciAoJlRl eHREZXZpY2VOb2RlKTsNCj4gKyAgRHJpdmVCYXlTdHIgPSBHZXROZXh0UGFyYW1TdHIgKCZUZXh0 RGV2aWNlTm9kZSk7DQo+ICsgIFJlc2VydmVkU3RyID0gR2V0TmV4dFBhcmFtU3RyICgmVGV4dERl dmljZU5vZGUpOw0KPiArICBTYXMgICAgICAgICA9IChTQVNfREVWSUNFX1BBVEggKikgQ3JlYXRl RGV2aWNlTm9kZSAoDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBN RVNTQUdJTkdfREVWSUNFX1BBVEgsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBNU0dfVkVORE9SX0RQLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKFVJTlQxNikgc2l6ZW9mIChTQVNfREVWSUNFX1BBVEgpDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KPiArDQo+ICsgIENvcHlHdWlkICgmU2Fz LT5HdWlkLCAmZ0VmaVNhc0RldmljZVBhdGhHdWlkKTsNCj4gKyAgU3RydG9pNjQgKEFkZHJlc3NT dHIsICZTYXMtPlNhc0FkZHJlc3MpOw0KPiArICBTdHJ0b2k2NCAoTHVuU3RyLCAmU2FzLT5MdW4p Ow0KPiArICBTYXMtPlJlbGF0aXZlVGFyZ2V0UG9ydCA9IChVSU5UMTYpIFN0cnRvaSAoUlRQU3Ry KTsNCj4gKw0KPiArICBpZiAoU3RyQ21wIChTQVNTQVRBU3RyLCBMIk5vVG9wb2xvZ3kiKSA9PSAw KSB7DQo+ICsgICAgSW5mbyA9IDB4MDsNCj4gKw0KPiArICB9IGVsc2UgaWYgKChTdHJDbXAgKFNB U1NBVEFTdHIsIEwiU0FUQSIpID09IDApIHx8IChTdHJDbXAgKFNBU1NBVEFTdHIsIEwiU0FTIikg PT0gMCkpIHsNCj4gKw0KPiArICAgIFVpbnQxNiA9IChVSU5UMTYpIFN0cnRvaSAoRHJpdmVCYXlT dHIpOw0KPiArICAgIGlmIChVaW50MTYgPT0gMCkgew0KPiArICAgICAgSW5mbyA9IDB4MTsNCj4g KyAgICB9IGVsc2Ugew0KPiArICAgICAgSW5mbyA9IChVSU5UMTYpICgweDIgfCAoKFVpbnQxNiAt IDEpIDw8IDgpKTsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICBpZiAoU3RyQ21wIChTQVNTQVRBU3Ry LCBMIlNBVEEiKSA9PSAwKSB7DQo+ICsgICAgICBJbmZvIHw9IEJJVDQ7DQo+ICsgICAgfQ0KPiAr DQo+ICsgICAgLy8NCj4gKyAgICAvLyBMb2NhdGlvbiBpcyBhbiBpbnRlZ2VyIGJldHdlZW4gMCBh bmQgMSBvciBlbHNlDQo+ICsgICAgLy8gdGhlIGtleXdvcmQgSW50ZXJuYWwgKDApIG9yIEV4dGVy bmFsICgxKS4NCj4gKyAgICAvLw0KPiArICAgIGlmIChTdHJDbXAgKExvY2F0aW9uU3RyLCBMIkV4 dGVybmFsIikgPT0gMCkgew0KPiArICAgICAgVWludDE2ID0gMTsNCj4gKyAgICB9IGVsc2UgaWYg KFN0ckNtcCAoTG9jYXRpb25TdHIsIEwiSW50ZXJuYWwiKSA9PSAwKSB7DQo+ICsgICAgICBVaW50 MTYgPSAwOw0KPiArICAgIH0gZWxzZSB7DQo+ICsgICAgICBVaW50MTYgPSAoKFVJTlQxNikgU3Ry dG9pIChMb2NhdGlvblN0cikgJiBCSVQwKTsNCj4gKyAgICB9DQo+ICsgICAgSW5mbyB8PSAoVWlu dDE2IDw8IDUpOw0KPiArDQo+ICsgICAgLy8NCj4gKyAgICAvLyBDb25uZWN0IGlzIGFuIGludGVn ZXIgYmV0d2VlbiAwIGFuZCAzIG9yIGVsc2UNCj4gKyAgICAvLyB0aGUga2V5d29yZCBEaXJlY3Qg KDApIG9yIEV4cGFuZGVkICgxKS4NCj4gKyAgICAvLw0KPiArICAgIGlmIChTdHJDbXAgKENvbm5l Y3RTdHIsIEwiRXhwYW5kZWQiKSA9PSAwKSB7DQo+ICsgICAgICBVaW50MTYgPSAxOw0KPiArICAg IH0gZWxzZSBpZiAoU3RyQ21wIChDb25uZWN0U3RyLCBMIkRpcmVjdCIpID09IDApIHsNCj4gKyAg ICAgIFVpbnQxNiA9IDA7DQo+ICsgICAgfSBlbHNlIHsNCj4gKyAgICAgIFVpbnQxNiA9ICgoVUlO VDE2KSBTdHJ0b2kgKENvbm5lY3RTdHIpICYgKEJJVDAgfCBCSVQxKSk7DQo+ICsgICAgfQ0KPiAr ICAgIEluZm8gfD0gKFVpbnQxNiA8PCA2KTsNCj4gKw0KPiArICB9IGVsc2Ugew0KPiArICAgIElu Zm8gPSAoVUlOVDE2KSBTdHJ0b2kgKFNBU1NBVEFTdHIpOw0KPiArICB9DQo+ICsNCj4gKyAgU2Fz LT5EZXZpY2VUb3BvbG9neSA9IEluZm87DQo+ICsgIFNhcy0+UmVzZXJ2ZWQgICAgICAgPSAoVUlO VDMyKSBTdHJ0b2kgKFJlc2VydmVkU3RyKTsNCj4gKw0KPiArICByZXR1cm4gKEVGSV9ERVZJQ0Vf UEFUSF9QUk9UT0NPTCAqKSBTYXM7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBDb252ZXJ0cyBh IHRleHQgZGV2aWNlIHBhdGggbm9kZSB0byBTZXJpYWwgQXR0YWNoZWQgU0NTSSBFeCBkZXZpY2Ug cGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyAgQHBhcmFtIFRleHREZXZpY2VOb2RlICBUaGUgaW5w dXQgVGV4dCBkZXZpY2UgcGF0aCBub2RlLg0KPiArDQo+ICsgIEByZXR1cm4gQSBwb2ludGVyIHRv IHRoZSBuZXdseS1jcmVhdGVkIFNlcmlhbCBBdHRhY2hlZCBTQ1NJIEV4IGRldmljZSBwYXRoIHN0 cnVjdHVyZS4NCj4gKw0KPiArKiovDQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0KPiAr RGV2UGF0aEZyb21UZXh0U2FzRXggKA0KPiArICAgQ0hBUjE2ICpUZXh0RGV2aWNlTm9kZQ0KPiAr ICApDQo+ICt7DQo+ICsgIENIQVIxNiAgICAgICAgICAgICpBZGRyZXNzU3RyOw0KPiArICBDSEFS MTYgICAgICAgICAgICAqTHVuU3RyOw0KPiArICBDSEFSMTYgICAgICAgICAgICAqUlRQU3RyOw0K PiArICBDSEFSMTYgICAgICAgICAgICAqU0FTU0FUQVN0cjsNCj4gKyAgQ0hBUjE2ICAgICAgICAg ICAgKkxvY2F0aW9uU3RyOw0KPiArICBDSEFSMTYgICAgICAgICAgICAqQ29ubmVjdFN0cjsNCj4g KyAgQ0hBUjE2ICAgICAgICAgICAgKkRyaXZlQmF5U3RyOw0KPiArICBVSU5UMTYgICAgICAgICAg ICBJbmZvOw0KPiArICBVSU5UMTYgICAgICAgICAgICBVaW50MTY7DQo+ICsgIFVJTlQ2NCAgICAg ICAgICAgIFNhc0FkZHJlc3M7DQo+ICsgIFVJTlQ2NCAgICAgICAgICAgIEx1bjsNCj4gKyAgU0FT RVhfREVWSUNFX1BBVEggKlNhc0V4Ow0KPiArDQo+ICsgIEFkZHJlc3NTdHIgID0gR2V0TmV4dFBh cmFtU3RyICgmVGV4dERldmljZU5vZGUpOw0KPiArICBMdW5TdHIgICAgICA9IEdldE5leHRQYXJh bVN0ciAoJlRleHREZXZpY2VOb2RlKTsNCj4gKyAgUlRQU3RyICAgICAgPSBHZXROZXh0UGFyYW1T dHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsgIFNBU1NBVEFTdHIgID0gR2V0TmV4dFBhcmFtU3Ry ICgmVGV4dERldmljZU5vZGUpOw0KPiArICBMb2NhdGlvblN0ciA9IEdldE5leHRQYXJhbVN0ciAo JlRleHREZXZpY2VOb2RlKTsNCj4gKyAgQ29ubmVjdFN0ciAgPSBHZXROZXh0UGFyYW1TdHIgKCZU ZXh0RGV2aWNlTm9kZSk7DQo+ICsgIERyaXZlQmF5U3RyID0gR2V0TmV4dFBhcmFtU3RyICgmVGV4 dERldmljZU5vZGUpOw0KPiArICBTYXNFeCAgICAgICA9IChTQVNFWF9ERVZJQ0VfUEFUSCAqKSBD cmVhdGVEZXZpY2VOb2RlICgNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBNRVNTQUdJTkdfREVWSUNFX1BBVEgsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTVNHX1NBU0VYX0RQLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChVSU5UMTYpIHNpemVvZiAoU0FTRVhfREVWSUNFX1BBVEgpDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCj4gKw0KPiArICBTdHJ0 b2k2NCAoQWRkcmVzc1N0ciwgJlNhc0FkZHJlc3MpOw0KPiArICBTdHJ0b2k2NCAoTHVuU3RyLCAg ICAgJkx1bik7DQo+ICsgIFdyaXRlVW5hbGlnbmVkNjQgKChVSU5UNjQgKikgJlNhc0V4LT5TYXNB ZGRyZXNzLCBTd2FwQnl0ZXM2NCAoU2FzQWRkcmVzcykpOw0KPiArICBXcml0ZVVuYWxpZ25lZDY0 ICgoVUlOVDY0ICopICZTYXNFeC0+THVuLCAgICAgICAgU3dhcEJ5dGVzNjQgKEx1bikpOw0KPiAr ICBTYXNFeC0+UmVsYXRpdmVUYXJnZXRQb3J0ICAgICAgPSAoVUlOVDE2KSBTdHJ0b2kgKFJUUFN0 cik7DQo+ICsNCj4gKyAgaWYgKFN0ckNtcCAoU0FTU0FUQVN0ciwgTCJOb1RvcG9sb2d5IikgPT0g MCkgew0KPiArICAgIEluZm8gPSAweDA7DQo+ICsNCj4gKyAgfSBlbHNlIGlmICgoU3RyQ21wIChT QVNTQVRBU3RyLCBMIlNBVEEiKSA9PSAwKSB8fCAoU3RyQ21wIChTQVNTQVRBU3RyLCBMIlNBUyIp ID09IDApKSB7DQo+ICsNCj4gKyAgICBVaW50MTYgPSAoVUlOVDE2KSBTdHJ0b2kgKERyaXZlQmF5 U3RyKTsNCj4gKyAgICBpZiAoVWludDE2ID09IDApIHsNCj4gKyAgICAgIEluZm8gPSAweDE7DQo+ ICsgICAgfSBlbHNlIHsNCj4gKyAgICAgIEluZm8gPSAoVUlOVDE2KSAoMHgyIHwgKChVaW50MTYg LSAxKSA8PCA4KSk7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgaWYgKFN0ckNtcCAoU0FTU0FUQVN0 ciwgTCJTQVRBIikgPT0gMCkgew0KPiArICAgICAgSW5mbyB8PSBCSVQ0Ow0KPiArICAgIH0NCj4g Kw0KPiArICAgIC8vDQo+ICsgICAgLy8gTG9jYXRpb24gaXMgYW4gaW50ZWdlciBiZXR3ZWVuIDAg YW5kIDEgb3IgZWxzZQ0KPiArICAgIC8vIHRoZSBrZXl3b3JkIEludGVybmFsICgwKSBvciBFeHRl cm5hbCAoMSkuDQo+ICsgICAgLy8NCj4gKyAgICBpZiAoU3RyQ21wIChMb2NhdGlvblN0ciwgTCJF eHRlcm5hbCIpID09IDApIHsNCj4gKyAgICAgIFVpbnQxNiA9IDE7DQo+ICsgICAgfSBlbHNlIGlm IChTdHJDbXAgKExvY2F0aW9uU3RyLCBMIkludGVybmFsIikgPT0gMCkgew0KPiArICAgICAgVWlu dDE2ID0gMDsNCj4gKyAgICB9IGVsc2Ugew0KPiArICAgICAgVWludDE2ID0gKChVSU5UMTYpIFN0 cnRvaSAoTG9jYXRpb25TdHIpICYgQklUMCk7DQo+ICsgICAgfQ0KPiArICAgIEluZm8gfD0gKFVp bnQxNiA8PCA1KTsNCj4gKw0KPiArICAgIC8vDQo+ICsgICAgLy8gQ29ubmVjdCBpcyBhbiBpbnRl Z2VyIGJldHdlZW4gMCBhbmQgMyBvciBlbHNlDQo+ICsgICAgLy8gdGhlIGtleXdvcmQgRGlyZWN0 ICgwKSBvciBFeHBhbmRlZCAoMSkuDQo+ICsgICAgLy8NCj4gKyAgICBpZiAoU3RyQ21wIChDb25u ZWN0U3RyLCBMIkV4cGFuZGVkIikgPT0gMCkgew0KPiArICAgICAgVWludDE2ID0gMTsNCj4gKyAg ICB9IGVsc2UgaWYgKFN0ckNtcCAoQ29ubmVjdFN0ciwgTCJEaXJlY3QiKSA9PSAwKSB7DQo+ICsg ICAgICBVaW50MTYgPSAwOw0KPiArICAgIH0gZWxzZSB7DQo+ICsgICAgICBVaW50MTYgPSAoKFVJ TlQxNikgU3RydG9pIChDb25uZWN0U3RyKSAmIChCSVQwIHwgQklUMSkpOw0KPiArICAgIH0NCj4g KyAgICBJbmZvIHw9IChVaW50MTYgPDwgNik7DQo+ICsNCj4gKyAgfSBlbHNlIHsNCj4gKyAgICBJ bmZvID0gKFVJTlQxNikgU3RydG9pIChTQVNTQVRBU3RyKTsNCj4gKyAgfQ0KPiArDQo+ICsgIFNh c0V4LT5EZXZpY2VUb3BvbG9neSA9IEluZm87DQo+ICsNCj4gKyAgcmV0dXJuIChFRklfREVWSUNF X1BBVEhfUFJPVE9DT0wgKikgU2FzRXg7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBDb252ZXJ0 cyBhIHRleHQgZGV2aWNlIHBhdGggbm9kZSB0byBOVk0gRXhwcmVzcyBOYW1lc3BhY2UgZGV2aWNl IHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsgIEBwYXJhbSBUZXh0RGV2aWNlTm9kZSAgVGhlIGlu cHV0IFRleHQgZGV2aWNlIHBhdGggbm9kZS4NCj4gKw0KPiArICBAcmV0dXJuIEEgcG9pbnRlciB0 byB0aGUgbmV3bHktY3JlYXRlZCBOVk0gRXhwcmVzcyBOYW1lc3BhY2UgZGV2aWNlIHBhdGggc3Ry dWN0dXJlLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqDQo+ICtE ZXZQYXRoRnJvbVRleHROVk1lICgNCj4gKyAgIENIQVIxNiAqVGV4dERldmljZU5vZGUNCj4gKyAg KQ0KPiArew0KPiArICBDSEFSMTYgICAgICAgICAgICAgICAgICAgICAqTmFtZXNwYWNlSWRTdHI7 DQo+ICsgIENIQVIxNiAgICAgICAgICAgICAgICAgICAgICpOYW1lc3BhY2VVdWlkU3RyOw0KPiAr ICBOVk1FX05BTUVTUEFDRV9ERVZJQ0VfUEFUSCAqTnZtZTsNCj4gKyAgVUlOVDggICAgICAgICAg ICAgICAgICAgICAgKlV1aWQ7DQo+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgIEluZGV4 Ow0KPiArDQo+ICsgIE5hbWVzcGFjZUlkU3RyICAgPSBHZXROZXh0UGFyYW1TdHIgKCZUZXh0RGV2 aWNlTm9kZSk7DQo+ICsgIE5hbWVzcGFjZVV1aWRTdHIgPSBHZXROZXh0UGFyYW1TdHIgKCZUZXh0 RGV2aWNlTm9kZSk7DQo+ICsgIE52bWUgPSAoTlZNRV9OQU1FU1BBQ0VfREVWSUNFX1BBVEggKikg Q3JlYXRlRGV2aWNlTm9kZSAoDQo+ICsgICAgTUVTU0FHSU5HX0RFVklDRV9QQVRILA0KPiArICAg IE1TR19OVk1FX05BTUVTUEFDRV9EUCwNCj4gKyAgICAoVUlOVDE2KSBzaXplb2YgKE5WTUVfTkFN RVNQQUNFX0RFVklDRV9QQVRIKQ0KPiArICAgICk7DQo+ICsNCj4gKyAgTnZtZS0+TmFtZXNwYWNl SWQgPSAoVUlOVDMyKSBTdHJ0b2kgKE5hbWVzcGFjZUlkU3RyKTsNCj4gKyAgVXVpZCA9IChVSU5U OCAqKSAmTnZtZS0+TmFtZXNwYWNlVXVpZDsNCj4gKw0KPiArICBJbmRleCA9IHNpemVvZiAoTnZt ZS0+TmFtZXNwYWNlVXVpZCkgLyBzaXplb2YgKFVJTlQ4KTsNCj4gKyAgd2hpbGUgKEluZGV4LS0g IT0gMCkgew0KPiArICAgIFV1aWRbSW5kZXhdID0gKFVJTlQ4KSBTdHJIZXhUb1VpbnRuIChTcGxp dFN0ciAoJk5hbWVzcGFjZVV1aWRTdHIsIEwnLScpKTsNCj4gKyAgfQ0KPiArDQo+ICsgIHJldHVy biAoRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICopIE52bWU7DQo+ICt9DQo+ICsNCj4gKy8qKg0K PiArICBDb252ZXJ0cyBhIHRleHQgZGV2aWNlIHBhdGggbm9kZSB0byBVRlMgZGV2aWNlIHBhdGgg c3RydWN0dXJlLg0KPiArDQo+ICsgIEBwYXJhbSBUZXh0RGV2aWNlTm9kZSAgVGhlIGlucHV0IFRl eHQgZGV2aWNlIHBhdGggbm9kZS4NCj4gKw0KPiArICBAcmV0dXJuIEEgcG9pbnRlciB0byB0aGUg bmV3bHktY3JlYXRlZCBVRlMgZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsqKi8NCj4g K0VGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqDQo+ICtEZXZQYXRoRnJvbVRleHRVZnMgKA0KPiAr ICAgQ0hBUjE2ICpUZXh0RGV2aWNlTm9kZQ0KPiArICApDQo+ICt7DQo+ICsgIENIQVIxNiAgICAg ICAgICAgICpQdW5TdHI7DQo+ICsgIENIQVIxNiAgICAgICAgICAgICpMdW5TdHI7DQo+ICsgIFVG U19ERVZJQ0VfUEFUSCAgICpVZnM7DQo+ICsNCj4gKyAgUHVuU3RyID0gR2V0TmV4dFBhcmFtU3Ry ICgmVGV4dERldmljZU5vZGUpOw0KPiArICBMdW5TdHIgPSBHZXROZXh0UGFyYW1TdHIgKCZUZXh0 RGV2aWNlTm9kZSk7DQo+ICsgIFVmcyAgICA9IChVRlNfREVWSUNFX1BBVEggKikgQ3JlYXRlRGV2 aWNlTm9kZSAoDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRVNTQUdJTkdf REVWSUNFX1BBVEgsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNU0dfVUZT X0RQLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFVJTlQxNikgc2l6ZW9m IChVRlNfREVWSUNFX1BBVEgpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAp Ow0KPiArDQo+ICsgIFVmcy0+UHVuID0gKFVJTlQ4KSBTdHJ0b2kgKFB1blN0cik7DQo+ICsgIFVm cy0+THVuID0gKFVJTlQ4KSBTdHJ0b2kgKEx1blN0cik7DQo+ICsNCj4gKyAgcmV0dXJuIChFRklf REVWSUNFX1BBVEhfUFJPVE9DT0wgKikgVWZzOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgQ29u dmVydHMgYSB0ZXh0IGRldmljZSBwYXRoIG5vZGUgdG8gU0QgKFNlY3VyZSBEaWdpdGFsKSBkZXZp Y2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyAgQHBhcmFtIFRleHREZXZpY2VOb2RlICBUaGUg aW5wdXQgVGV4dCBkZXZpY2UgcGF0aCBub2RlLg0KPiArDQo+ICsgIEByZXR1cm4gQSBwb2ludGVy IHRvIHRoZSBuZXdseS1jcmVhdGVkIFNEIGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiAr KiovDQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0KPiArRGV2UGF0aEZyb21UZXh0U2Qg KA0KPiArICAgQ0hBUjE2ICpUZXh0RGV2aWNlTm9kZQ0KPiArICApDQo+ICt7DQo+ICsgIENIQVIx NiAgICAgICAgICAgICpTbG90TnVtYmVyU3RyOw0KPiArICBTRF9ERVZJQ0VfUEFUSCAgICAqU2Q7 DQo+ICsNCj4gKyAgU2xvdE51bWJlclN0ciA9IEdldE5leHRQYXJhbVN0ciAoJlRleHREZXZpY2VO b2RlKTsNCj4gKyAgU2QgICAgICAgICAgICA9IChTRF9ERVZJQ0VfUEFUSCAqKSBDcmVhdGVEZXZp Y2VOb2RlICgNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FU1NB R0lOR19ERVZJQ0VfUEFUSCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE1TR19TRF9EUCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChVSU5UMTYpIHNpemVvZiAoU0RfREVWSUNFX1BBVEgpDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICApOw0KPiArDQo+ICsgIFNkLT5TbG90TnVtYmVyID0gKFVJTlQ4 KSBTdHJ0b2kgKFNsb3ROdW1iZXJTdHIpOw0KPiArDQo+ICsgIHJldHVybiAoRUZJX0RFVklDRV9Q QVRIX1BST1RPQ09MICopIFNkOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgQ29udmVydHMgYSB0 ZXh0IGRldmljZSBwYXRoIG5vZGUgdG8gRU1NQyAoRW1iZWRkZWQgTU1DKSBkZXZpY2UgcGF0aCBz dHJ1Y3R1cmUuDQo+ICsNCj4gKyAgQHBhcmFtIFRleHREZXZpY2VOb2RlICBUaGUgaW5wdXQgVGV4 dCBkZXZpY2UgcGF0aCBub2RlLg0KPiArDQo+ICsgIEByZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBu ZXdseS1jcmVhdGVkIEVNTUMgZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsqKi8NCj4g K0VGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqDQo+ICtEZXZQYXRoRnJvbVRleHRFbW1jICgNCj4g KyAgIENIQVIxNiAqVGV4dERldmljZU5vZGUNCj4gKyAgKQ0KPiArew0KPiArICBDSEFSMTYgICAg ICAgICAgICAqU2xvdE51bWJlclN0cjsNCj4gKyAgRU1NQ19ERVZJQ0VfUEFUSCAgKkVtbWM7DQo+ ICsNCj4gKyAgU2xvdE51bWJlclN0ciA9IEdldE5leHRQYXJhbVN0ciAoJlRleHREZXZpY2VOb2Rl KTsNCj4gKyAgRW1tYyAgICAgICAgICA9IChFTU1DX0RFVklDRV9QQVRIICopIENyZWF0ZURldmlj ZU5vZGUgKA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVTU0FH SU5HX0RFVklDRV9QQVRILA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTVNHX0VNTUNfRFAsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoVUlOVDE2KSBzaXplb2YgKEVNTUNfREVWSUNFX1BBVEgpDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICApOw0KPiArDQo+ICsgIEVtbWMtPlNsb3ROdW1iZXIgPSAo VUlOVDgpIFN0cnRvaSAoU2xvdE51bWJlclN0cik7DQo+ICsNCj4gKyAgcmV0dXJuIChFRklfREVW SUNFX1BBVEhfUFJPVE9DT0wgKikgRW1tYzsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIENvbnZl cnRzIGEgdGV4dCBkZXZpY2UgcGF0aCBub2RlIHRvIERlYnVnIFBvcnQgZGV2aWNlIHBhdGggc3Ry dWN0dXJlLg0KPiArDQo+ICsgIEBwYXJhbSBUZXh0RGV2aWNlTm9kZSAgVGhlIGlucHV0IFRleHQg ZGV2aWNlIHBhdGggbm9kZS4NCj4gKw0KPiArICBAcmV0dXJuIEEgcG9pbnRlciB0byB0aGUgbmV3 bHktY3JlYXRlZCBEZWJ1ZyBQb3J0IGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArKiov DQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0KPiArRGV2UGF0aEZyb21UZXh0RGVidWdQ b3J0ICgNCj4gKyAgIENIQVIxNiAqVGV4dERldmljZU5vZGUNCj4gKyAgKQ0KPiArew0KPiArICBW RU5ET1JfREVGSU5FRF9NRVNTQUdJTkdfREVWSUNFX1BBVEggICpWZW5kOw0KPiArDQo+ICsgIFZl bmQgPSAoVkVORE9SX0RFRklORURfTUVTU0FHSU5HX0RFVklDRV9QQVRIICopIENyZWF0ZURldmlj ZU5vZGUgKA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIE1FU1NBR0lOR19ERVZJQ0VfUEFUSCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNU0dfVkVORE9SX0RQLA0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChVSU5UMTYpIHNpemVv ZiAoVkVORE9SX0RFRklORURfTUVTU0FHSU5HX0RFVklDRV9QQVRIKQ0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQo+ICsNCj4gKyAgQ29w eUd1aWQgKCZWZW5kLT5HdWlkLCAmZ0VmaURlYnVnUG9ydERldmljZVBhdGhHdWlkKTsNCj4gKw0K PiArICByZXR1cm4gKEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqKSBWZW5kOw0KPiArfQ0KPiAr DQo+ICsvKioNCj4gKyAgQ29udmVydHMgYSB0ZXh0IGRldmljZSBwYXRoIG5vZGUgdG8gTUFDIGRl dmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArICBAcGFyYW0gVGV4dERldmljZU5vZGUgIFRo ZSBpbnB1dCBUZXh0IGRldmljZSBwYXRoIG5vZGUuDQo+ICsNCj4gKyAgQHJldHVybiBBIHBvaW50 ZXIgdG8gdGhlIG5ld2x5LWNyZWF0ZWQgTUFDIGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0K PiArKiovDQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0KPiArRGV2UGF0aEZyb21UZXh0 TUFDICgNCj4gKyAgIENIQVIxNiAqVGV4dERldmljZU5vZGUNCj4gKyAgKQ0KPiArew0KPiArICBD SEFSMTYgICAgICAgICAgICAgICAgKkFkZHJlc3NTdHI7DQo+ICsgIENIQVIxNiAgICAgICAgICAg ICAgICAqSWZUeXBlU3RyOw0KPiArICBVSU5UTiAgICAgICAgICAgICAgICAgTGVuZ3RoOw0KPiAr ICBNQUNfQUREUl9ERVZJQ0VfUEFUSCAgKk1BQ0RldlBhdGg7DQo+ICsNCj4gKyAgQWRkcmVzc1N0 ciAgICA9IEdldE5leHRQYXJhbVN0ciAoJlRleHREZXZpY2VOb2RlKTsNCj4gKyAgSWZUeXBlU3Ry ICAgICA9IEdldE5leHRQYXJhbVN0ciAoJlRleHREZXZpY2VOb2RlKTsNCj4gKyAgTUFDRGV2UGF0 aCAgICA9IChNQUNfQUREUl9ERVZJQ0VfUEFUSCAqKSBDcmVhdGVEZXZpY2VOb2RlICgNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRVNTQUdJTkdfREVW SUNFX1BBVEgsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTVNHX01BQ19BRERSX0RQLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChVSU5UMTYpIHNpemVvZiAoTUFDX0FERFJfREVWSUNFX1BBVEgpDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCj4gKw0KPiAr ICBNQUNEZXZQYXRoLT5JZlR5cGUgICA9IChVSU5UOCkgU3RydG9pIChJZlR5cGVTdHIpOw0KPiAr DQo+ICsgIExlbmd0aCA9IHNpemVvZiAoRUZJX01BQ19BRERSRVNTKTsNCj4gKyAgaWYgKE1BQ0Rl dlBhdGgtPklmVHlwZSA9PSAweDAxIHx8IE1BQ0RldlBhdGgtPklmVHlwZSA9PSAweDAwKSB7DQo+ ICsgICAgTGVuZ3RoID0gNjsNCj4gKyAgfQ0KPiArDQo+ICsgIFN0ckhleFRvQnl0ZXMgKEFkZHJl c3NTdHIsIExlbmd0aCAqIDIsIE1BQ0RldlBhdGgtPk1hY0FkZHJlc3MuQWRkciwgTGVuZ3RoKTsN Cj4gKw0KPiArICByZXR1cm4gKEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqKSBNQUNEZXZQYXRo Ow0KPiArfQ0KPiArDQo+ICsNCj4gKy8qKg0KPiArICBDb252ZXJ0cyBhIHRleHQgZm9ybWF0IHRv IHRoZSBuZXR3b3JrIHByb3RvY29sIElELg0KPiArDQo+ICsgIEBwYXJhbSBUZXh0ICBTdHJpbmcg b2YgcHJvdG9jb2wgZmllbGQuDQo+ICsNCj4gKyAgQHJldHVybiBOZXR3b3JrIHByb3RvY29sIElE IC4NCj4gKw0KPiArKiovDQo+ICtVSU5UTg0KPiArTmV0d29ya1Byb3RvY29sRnJvbVRleHQgKA0K PiArICAgQ0hBUjE2ICpUZXh0DQo+ICsgICkNCj4gK3sNCj4gKyAgaWYgKFN0ckNtcCAoVGV4dCwg TCJVRFAiKSA9PSAwKSB7DQo+ICsgICAgcmV0dXJuIFJGQ18xNzAwX1VEUF9QUk9UT0NPTDsNCj4g KyAgfQ0KPiArDQo+ICsgIGlmIChTdHJDbXAgKFRleHQsIEwiVENQIikgPT0gMCkgew0KPiArICAg IHJldHVybiBSRkNfMTcwMF9UQ1BfUFJPVE9DT0w7DQo+ICsgIH0NCj4gKw0KPiArICByZXR1cm4g U3RydG9pIChUZXh0KTsNCj4gK30NCj4gKw0KPiArDQo+ICsvKioNCj4gKyAgQ29udmVydHMgYSB0 ZXh0IGRldmljZSBwYXRoIG5vZGUgdG8gSVBWNCBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsN Cj4gKyAgQHBhcmFtIFRleHREZXZpY2VOb2RlICBUaGUgaW5wdXQgVGV4dCBkZXZpY2UgcGF0aCBu b2RlLg0KPiArDQo+ICsgIEByZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBuZXdseS1jcmVhdGVkIElQ VjQgZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9ERVZJQ0VfUEFU SF9QUk9UT0NPTCAqDQo+ICtEZXZQYXRoRnJvbVRleHRJUHY0ICgNCj4gKyAgIENIQVIxNiAqVGV4 dERldmljZU5vZGUNCj4gKyAgKQ0KPiArew0KPiArICBDSEFSMTYgICAgICAgICAgICAqUmVtb3Rl SVBTdHI7DQo+ICsgIENIQVIxNiAgICAgICAgICAgICpQcm90b2NvbFN0cjsNCj4gKyAgQ0hBUjE2 ICAgICAgICAgICAgKlR5cGVTdHI7DQo+ICsgIENIQVIxNiAgICAgICAgICAgICpMb2NhbElQU3Ry Ow0KPiArICBDSEFSMTYgICAgICAgICAgICAqR2F0ZXdheUlQU3RyOw0KPiArICBDSEFSMTYgICAg ICAgICAgICAqU3VibmV0TWFza1N0cjsNCj4gKyAgSVB2NF9ERVZJQ0VfUEFUSCAgKklQdjQ7DQo+ ICsNCj4gKyAgUmVtb3RlSVBTdHIgICAgICAgICAgID0gR2V0TmV4dFBhcmFtU3RyICgmVGV4dERl dmljZU5vZGUpOw0KPiArICBQcm90b2NvbFN0ciAgICAgICAgICAgPSBHZXROZXh0UGFyYW1TdHIg KCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsgIFR5cGVTdHIgICAgICAgICAgICAgICA9IEdldE5leHRQ YXJhbVN0ciAoJlRleHREZXZpY2VOb2RlKTsNCj4gKyAgTG9jYWxJUFN0ciAgICAgICAgICAgID0g R2V0TmV4dFBhcmFtU3RyICgmVGV4dERldmljZU5vZGUpOw0KPiArICBHYXRld2F5SVBTdHIgICAg ICAgICAgPSBHZXROZXh0UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsgIFN1Ym5ldE1h c2tTdHIgICAgICAgICA9IEdldE5leHRQYXJhbVN0ciAoJlRleHREZXZpY2VOb2RlKTsNCj4gKyAg SVB2NCAgICAgICAgICAgICAgICAgID0gKElQdjRfREVWSUNFX1BBVEggKikgQ3JlYXRlRGV2aWNl Tm9kZSAoDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTUVTU0FHSU5HX0RFVklDRV9QQVRILA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIE1TR19JUHY0X0RQLA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChVSU5UMTYpIHNpemVvZiAoSVB2NF9ERVZJ Q0VfUEFUSCkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICApOw0KPiArDQo+ICsgIFN0clRvSXB2NEFkZHJlc3MgKFJlbW90ZUlQU3RyLCBOVUxMLCAm SVB2NC0+UmVtb3RlSXBBZGRyZXNzLCBOVUxMKTsNCj4gKyAgSVB2NC0+UHJvdG9jb2wgPSAoVUlO VDE2KSBOZXR3b3JrUHJvdG9jb2xGcm9tVGV4dCAoUHJvdG9jb2xTdHIpOw0KPiArICBpZiAoU3Ry Q21wIChUeXBlU3RyLCBMIlN0YXRpYyIpID09IDApIHsNCj4gKyAgICBJUHY0LT5TdGF0aWNJcEFk ZHJlc3MgPSBUUlVFOw0KPiArICB9IGVsc2Ugew0KPiArICAgIElQdjQtPlN0YXRpY0lwQWRkcmVz cyA9IEZBTFNFOw0KPiArICB9DQo+ICsNCj4gKyAgU3RyVG9JcHY0QWRkcmVzcyAoTG9jYWxJUFN0 ciwgTlVMTCwgJklQdjQtPkxvY2FsSXBBZGRyZXNzLCBOVUxMKTsNCj4gKyAgaWYgKCFJU19OVUxM ICgqR2F0ZXdheUlQU3RyKSAmJiAhSVNfTlVMTCAoKlN1Ym5ldE1hc2tTdHIpKSB7DQo+ICsgICAg U3RyVG9JcHY0QWRkcmVzcyAoR2F0ZXdheUlQU3RyLCAgTlVMTCwgJklQdjQtPkdhdGV3YXlJcEFk ZHJlc3MsIE5VTEwpOw0KPiArICAgIFN0clRvSXB2NEFkZHJlc3MgKFN1Ym5ldE1hc2tTdHIsIE5V TEwsICZJUHY0LT5TdWJuZXRNYXNrLCAgICAgICBOVUxMKTsNCj4gKyAgfSBlbHNlIHsNCj4gKyAg ICBaZXJvTWVtICgmSVB2NC0+R2F0ZXdheUlwQWRkcmVzcywgc2l6ZW9mIChJUHY0LT5HYXRld2F5 SXBBZGRyZXNzKSk7DQo+ICsgICAgWmVyb01lbSAoJklQdjQtPlN1Ym5ldE1hc2ssICAgIHNpemVv ZiAoSVB2NC0+U3VibmV0TWFzaykpOw0KPiArICB9DQo+ICsNCj4gKyAgSVB2NC0+TG9jYWxQb3J0 ICAgICAgID0gMDsNCj4gKyAgSVB2NC0+UmVtb3RlUG9ydCAgICAgID0gMDsNCj4gKw0KPiArICBy ZXR1cm4gKEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqKSBJUHY0Ow0KPiArfQ0KPiArDQo+ICsv KioNCj4gKyAgQ29udmVydHMgYSB0ZXh0IGRldmljZSBwYXRoIG5vZGUgdG8gSVBWNiBkZXZpY2Ug cGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyAgQHBhcmFtIFRleHREZXZpY2VOb2RlICBUaGUgaW5w dXQgVGV4dCBkZXZpY2UgcGF0aCBub2RlLg0KPiArDQo+ICsgIEByZXR1cm4gQSBwb2ludGVyIHRv IHRoZSBuZXdseS1jcmVhdGVkIElQVjYgZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsq Ki8NCj4gK0VGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqDQo+ICtEZXZQYXRoRnJvbVRleHRJUHY2 ICgNCj4gKyAgIENIQVIxNiAqVGV4dERldmljZU5vZGUNCj4gKyAgKQ0KPiArew0KPiArICBDSEFS MTYgICAgICAgICAgICAqUmVtb3RlSVBTdHI7DQo+ICsgIENIQVIxNiAgICAgICAgICAgICpQcm90 b2NvbFN0cjsNCj4gKyAgQ0hBUjE2ICAgICAgICAgICAgKlR5cGVTdHI7DQo+ICsgIENIQVIxNiAg ICAgICAgICAgICpMb2NhbElQU3RyOw0KPiArICBDSEFSMTYgICAgICAgICAgICAqR2F0ZXdheUlQ U3RyOw0KPiArICBDSEFSMTYgICAgICAgICAgICAqUHJlZml4TGVuZ3RoU3RyOw0KPiArICBJUHY2 X0RFVklDRV9QQVRIICAqSVB2NjsNCj4gKw0KPiArICBSZW1vdGVJUFN0ciAgICAgICAgICAgPSBH ZXROZXh0UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsgIFByb3RvY29sU3RyICAgICAg ICAgICA9IEdldE5leHRQYXJhbVN0ciAoJlRleHREZXZpY2VOb2RlKTsNCj4gKyAgVHlwZVN0ciAg ICAgICAgICAgICAgID0gR2V0TmV4dFBhcmFtU3RyICgmVGV4dERldmljZU5vZGUpOw0KPiArICBM b2NhbElQU3RyICAgICAgICAgICAgPSBHZXROZXh0UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7 DQo+ICsgIFByZWZpeExlbmd0aFN0ciAgICAgICA9IEdldE5leHRQYXJhbVN0ciAoJlRleHREZXZp Y2VOb2RlKTsNCj4gKyAgR2F0ZXdheUlQU3RyICAgICAgICAgID0gR2V0TmV4dFBhcmFtU3RyICgm VGV4dERldmljZU5vZGUpOw0KPiArICBJUHY2ICAgICAgICAgICAgICAgICAgPSAoSVB2Nl9ERVZJ Q0VfUEFUSCAqKSBDcmVhdGVEZXZpY2VOb2RlICgNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBNRVNTQUdJTkdfREVWSUNFX1BBVEgsDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTVNHX0lQdjZfRFAs DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFVJ TlQxNikgc2l6ZW9mIChJUHY2X0RFVklDRV9QQVRIKQ0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQo+ICsNCj4gKyAgU3RyVG9JcHY2QWRkcmVz cyAoUmVtb3RlSVBTdHIsIE5VTEwsICZJUHY2LT5SZW1vdGVJcEFkZHJlc3MsIE5VTEwpOw0KPiAr ICBJUHY2LT5Qcm90b2NvbCAgICAgICAgPSAoVUlOVDE2KSBOZXR3b3JrUHJvdG9jb2xGcm9tVGV4 dCAoUHJvdG9jb2xTdHIpOw0KPiArICBpZiAoU3RyQ21wIChUeXBlU3RyLCBMIlN0YXRpYyIpID09 IDApIHsNCj4gKyAgICBJUHY2LT5JcEFkZHJlc3NPcmlnaW4gPSAwOw0KPiArICB9IGVsc2UgaWYg KFN0ckNtcCAoVHlwZVN0ciwgTCJTdGF0ZWxlc3NBdXRvQ29uZmlndXJlIikgPT0gMCkgew0KPiAr ICAgIElQdjYtPklwQWRkcmVzc09yaWdpbiA9IDE7DQo+ICsgIH0gZWxzZSB7DQo+ICsgICAgSVB2 Ni0+SXBBZGRyZXNzT3JpZ2luID0gMjsNCj4gKyAgfQ0KPiArDQo+ICsgIFN0clRvSXB2NkFkZHJl c3MgKExvY2FsSVBTdHIsIE5VTEwsICZJUHY2LT5Mb2NhbElwQWRkcmVzcywgTlVMTCk7DQo+ICsg IGlmICghSVNfTlVMTCAoKkdhdGV3YXlJUFN0cikgJiYgIUlTX05VTEwgKCpQcmVmaXhMZW5ndGhT dHIpKSB7DQo+ICsgICAgU3RyVG9JcHY2QWRkcmVzcyAoR2F0ZXdheUlQU3RyLCBOVUxMLCAmSVB2 Ni0+R2F0ZXdheUlwQWRkcmVzcywgTlVMTCk7DQo+ICsgICAgSVB2Ni0+UHJlZml4TGVuZ3RoID0g KFVJTlQ4KSBTdHJ0b2kgKFByZWZpeExlbmd0aFN0cik7DQo+ICsgIH0gZWxzZSB7DQo+ICsgICAg WmVyb01lbSAoJklQdjYtPkdhdGV3YXlJcEFkZHJlc3MsIHNpemVvZiAoSVB2Ni0+R2F0ZXdheUlw QWRkcmVzcykpOw0KPiArICAgIElQdjYtPlByZWZpeExlbmd0aCA9IDA7DQo+ICsgIH0NCj4gKw0K PiArICBJUHY2LT5Mb2NhbFBvcnQgICAgICAgPSAwOw0KPiArICBJUHY2LT5SZW1vdGVQb3J0ICAg ICAgPSAwOw0KPiArDQo+ICsgIHJldHVybiAoRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICopIElQ djY7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBDb252ZXJ0cyBhIHRleHQgZGV2aWNlIHBhdGgg bm9kZSB0byBVQVJUIGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArICBAcGFyYW0gVGV4 dERldmljZU5vZGUgIFRoZSBpbnB1dCBUZXh0IGRldmljZSBwYXRoIG5vZGUuDQo+ICsNCj4gKyAg QHJldHVybiBBIHBvaW50ZXIgdG8gdGhlIG5ld2x5LWNyZWF0ZWQgVUFSVCBkZXZpY2UgcGF0aCBz dHJ1Y3R1cmUuDQo+ICsNCj4gKyoqLw0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoNCj4g K0RldlBhdGhGcm9tVGV4dFVhcnQgKA0KPiArICAgQ0hBUjE2ICpUZXh0RGV2aWNlTm9kZQ0KPiAr ICApDQo+ICt7DQo+ICsgIENIQVIxNiAgICAgICAgICAgICpCYXVkU3RyOw0KPiArICBDSEFSMTYg ICAgICAgICAgICAqRGF0YUJpdHNTdHI7DQo+ICsgIENIQVIxNiAgICAgICAgICAgICpQYXJpdHlT dHI7DQo+ICsgIENIQVIxNiAgICAgICAgICAgICpTdG9wQml0c1N0cjsNCj4gKyAgVUFSVF9ERVZJ Q0VfUEFUSCAgKlVhcnQ7DQo+ICsNCj4gKyAgQmF1ZFN0ciAgICAgICAgID0gR2V0TmV4dFBhcmFt U3RyICgmVGV4dERldmljZU5vZGUpOw0KPiArICBEYXRhQml0c1N0ciAgICAgPSBHZXROZXh0UGFy YW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsgIFBhcml0eVN0ciAgICAgICA9IEdldE5leHRQ YXJhbVN0ciAoJlRleHREZXZpY2VOb2RlKTsNCj4gKyAgU3RvcEJpdHNTdHIgICAgID0gR2V0TmV4 dFBhcmFtU3RyICgmVGV4dERldmljZU5vZGUpOw0KPiArICBVYXJ0ICAgICAgICAgICAgPSAoVUFS VF9ERVZJQ0VfUEFUSCAqKSBDcmVhdGVEZXZpY2VOb2RlICgNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBNRVNTQUdJTkdfREVWSUNFX1BBVEgsDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTVNHX1VBUlRfRFAsDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFVJTlQxNikgc2l6ZW9m IChVQVJUX0RFVklDRV9QQVRIKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICk7DQo+ICsNCj4gKyAgaWYgKFN0ckNtcCAoQmF1ZFN0ciwgTCJERUZBVUxUIikg PT0gMCkgew0KPiArICAgIFVhcnQtPkJhdWRSYXRlID0gMTE1MjAwOw0KPiArICB9IGVsc2Ugew0K PiArICAgIFN0cnRvaTY0IChCYXVkU3RyLCAmVWFydC0+QmF1ZFJhdGUpOw0KPiArICB9DQo+ICsg IFVhcnQtPkRhdGFCaXRzICA9IChVSU5UOCkgKChTdHJDbXAgKERhdGFCaXRzU3RyLCBMIkRFRkFV TFQiKSA9PSAwKSA/IDggOiBTdHJ0b2kgKERhdGFCaXRzU3RyKSk7DQo+ICsgIHN3aXRjaCAoKlBh cml0eVN0cikgew0KPiArICBjYXNlIEwnRCc6DQo+ICsgICAgVWFydC0+UGFyaXR5ID0gMDsNCj4g KyAgICBicmVhazsNCj4gKw0KPiArICBjYXNlIEwnTic6DQo+ICsgICAgVWFydC0+UGFyaXR5ID0g MTsNCj4gKyAgICBicmVhazsNCj4gKw0KPiArICBjYXNlIEwnRSc6DQo+ICsgICAgVWFydC0+UGFy aXR5ID0gMjsNCj4gKyAgICBicmVhazsNCj4gKw0KPiArICBjYXNlIEwnTyc6DQo+ICsgICAgVWFy dC0+UGFyaXR5ID0gMzsNCj4gKyAgICBicmVhazsNCj4gKw0KPiArICBjYXNlIEwnTSc6DQo+ICsg ICAgVWFydC0+UGFyaXR5ID0gNDsNCj4gKyAgICBicmVhazsNCj4gKw0KPiArICBjYXNlIEwnUyc6 DQo+ICsgICAgVWFydC0+UGFyaXR5ID0gNTsNCj4gKyAgICBicmVhazsNCj4gKw0KPiArICBkZWZh dWx0Og0KPiArICAgIFVhcnQtPlBhcml0eSA9IChVSU5UOCkgU3RydG9pIChQYXJpdHlTdHIpOw0K PiArICAgIGJyZWFrOw0KPiArICB9DQo+ICsNCj4gKyAgaWYgKFN0ckNtcCAoU3RvcEJpdHNTdHIs IEwiRCIpID09IDApIHsNCj4gKyAgICBVYXJ0LT5TdG9wQml0cyA9IChVSU5UOCkgMDsNCj4gKyAg fSBlbHNlIGlmIChTdHJDbXAgKFN0b3BCaXRzU3RyLCBMIjEiKSA9PSAwKSB7DQo+ICsgICAgVWFy dC0+U3RvcEJpdHMgPSAoVUlOVDgpIDE7DQo+ICsgIH0gZWxzZSBpZiAoU3RyQ21wIChTdG9wQml0 c1N0ciwgTCIxLjUiKSA9PSAwKSB7DQo+ICsgICAgVWFydC0+U3RvcEJpdHMgPSAoVUlOVDgpIDI7 DQo+ICsgIH0gZWxzZSBpZiAoU3RyQ21wIChTdG9wQml0c1N0ciwgTCIyIikgPT0gMCkgew0KPiAr ICAgIFVhcnQtPlN0b3BCaXRzID0gKFVJTlQ4KSAzOw0KPiArICB9IGVsc2Ugew0KPiArICAgIFVh cnQtPlN0b3BCaXRzID0gKFVJTlQ4KSBTdHJ0b2kgKFN0b3BCaXRzU3RyKTsNCj4gKyAgfQ0KPiAr DQo+ICsgIHJldHVybiAoRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICopIFVhcnQ7DQo+ICt9DQo+ ICsNCj4gKy8qKg0KPiArICBDb252ZXJ0cyBhIHRleHQgZGV2aWNlIHBhdGggbm9kZSB0byBVU0Ig Y2xhc3MgZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsgIEBwYXJhbSBUZXh0RGV2aWNl Tm9kZSAgVGhlIGlucHV0IFRleHQgZGV2aWNlIHBhdGggbm9kZS4NCj4gKyAgQHBhcmFtIFVzYkNs YXNzVGV4dCAgICBBIHBvaW50ZXIgdG8gVVNCX0NMQVNTX1RFWFQgc3RydWN0dXJlIHRvIGJlIGlu dGVncmF0ZWQgdG8gVVNCIENsYXNzIFRleHQuDQo+ICsNCj4gKyAgQHJldHVybiBBIHBvaW50ZXIg dG8gdGhlIG5ld2x5LWNyZWF0ZWQgVVNCIGNsYXNzIGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4g Kw0KPiArKiovDQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0KPiArQ29udmVydEZyb21U ZXh0VXNiQ2xhc3MgKA0KPiArICAgQ0hBUjE2ICAgICAgICAgKlRleHREZXZpY2VOb2RlLA0KPiAr ICAgVVNCX0NMQVNTX1RFWFQgKlVzYkNsYXNzVGV4dA0KPiArICApDQo+ICt7DQo+ICsgIENIQVIx NiAgICAgICAgICAgICAgICAqVklEU3RyOw0KPiArICBDSEFSMTYgICAgICAgICAgICAgICAgKlBJ RFN0cjsNCj4gKyAgQ0hBUjE2ICAgICAgICAgICAgICAgICpDbGFzc1N0cjsNCj4gKyAgQ0hBUjE2 ICAgICAgICAgICAgICAgICpTdWJDbGFzc1N0cjsNCj4gKyAgQ0hBUjE2ICAgICAgICAgICAgICAg ICpQcm90b2NvbFN0cjsNCj4gKyAgVVNCX0NMQVNTX0RFVklDRV9QQVRIICpVc2JDbGFzczsNCj4g Kw0KPiArICBVc2JDbGFzcyAgICA9IChVU0JfQ0xBU1NfREVWSUNFX1BBVEggKikgQ3JlYXRlRGV2 aWNlTm9kZSAoDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IE1FU1NBR0lOR19ERVZJQ0VfUEFUSCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTVNHX1VTQl9DTEFTU19EUCwNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKFVJTlQxNikgc2l6ZW9mIChVU0JfQ0xBU1NfREVWSUNF X1BBVEgpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7 DQo+ICsNCj4gKyAgVklEU3RyICAgICAgPSBHZXROZXh0UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9k ZSk7DQo+ICsgIFBJRFN0ciAgICAgID0gR2V0TmV4dFBhcmFtU3RyICgmVGV4dERldmljZU5vZGUp Ow0KPiArICBpZiAoVXNiQ2xhc3NUZXh0LT5DbGFzc0V4aXN0KSB7DQo+ICsgICAgQ2xhc3NTdHIg PSBHZXROZXh0UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsgICAgVXNiQ2xhc3MtPkRl dmljZUNsYXNzID0gKFVJTlQ4KSBTdHJ0b2kgKENsYXNzU3RyKTsNCj4gKyAgfSBlbHNlIHsNCj4g KyAgICBVc2JDbGFzcy0+RGV2aWNlQ2xhc3MgPSBVc2JDbGFzc1RleHQtPkNsYXNzOw0KPiArICB9 DQo+ICsgIGlmIChVc2JDbGFzc1RleHQtPlN1YkNsYXNzRXhpc3QpIHsNCj4gKyAgICBTdWJDbGFz c1N0ciA9IEdldE5leHRQYXJhbVN0ciAoJlRleHREZXZpY2VOb2RlKTsNCj4gKyAgICBVc2JDbGFz cy0+RGV2aWNlU3ViQ2xhc3MgPSAoVUlOVDgpIFN0cnRvaSAoU3ViQ2xhc3NTdHIpOw0KPiArICB9 IGVsc2Ugew0KPiArICAgIFVzYkNsYXNzLT5EZXZpY2VTdWJDbGFzcyA9IFVzYkNsYXNzVGV4dC0+ U3ViQ2xhc3M7DQo+ICsgIH0NCj4gKw0KPiArICBQcm90b2NvbFN0ciA9IEdldE5leHRQYXJhbVN0 ciAoJlRleHREZXZpY2VOb2RlKTsNCj4gKw0KPiArICBVc2JDbGFzcy0+VmVuZG9ySWQgICAgICAg ID0gKFVJTlQxNikgU3RydG9pIChWSURTdHIpOw0KPiArICBVc2JDbGFzcy0+UHJvZHVjdElkICAg ICAgID0gKFVJTlQxNikgU3RydG9pIChQSURTdHIpOw0KPiArICBVc2JDbGFzcy0+RGV2aWNlUHJv dG9jb2wgID0gKFVJTlQ4KSBTdHJ0b2kgKFByb3RvY29sU3RyKTsNCj4gKw0KPiArICByZXR1cm4g KEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqKSBVc2JDbGFzczsNCj4gK30NCj4gKw0KPiArDQo+ ICsvKioNCj4gKyAgQ29udmVydHMgYSB0ZXh0IGRldmljZSBwYXRoIG5vZGUgdG8gVVNCIGNsYXNz IGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArICBAcGFyYW0gVGV4dERldmljZU5vZGUg IFRoZSBpbnB1dCBUZXh0IGRldmljZSBwYXRoIG5vZGUuDQo+ICsNCj4gKyAgQHJldHVybiBBIHBv aW50ZXIgdG8gdGhlIG5ld2x5LWNyZWF0ZWQgVVNCIGNsYXNzIGRldmljZSBwYXRoIHN0cnVjdHVy ZS4NCj4gKw0KPiArKiovDQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0KPiArRGV2UGF0 aEZyb21UZXh0VXNiQ2xhc3MgKA0KPiArICAgQ0hBUjE2ICpUZXh0RGV2aWNlTm9kZQ0KPiArICAp DQo+ICt7DQo+ICsgIFVTQl9DTEFTU19URVhUICBVc2JDbGFzc1RleHQ7DQo+ICsNCj4gKyAgVXNi Q2xhc3NUZXh0LkNsYXNzRXhpc3QgICAgPSBUUlVFOw0KPiArICBVc2JDbGFzc1RleHQuU3ViQ2xh c3NFeGlzdCA9IFRSVUU7DQo+ICsNCj4gKyAgcmV0dXJuIENvbnZlcnRGcm9tVGV4dFVzYkNsYXNz IChUZXh0RGV2aWNlTm9kZSwgJlVzYkNsYXNzVGV4dCk7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiAr ICBDb252ZXJ0cyBhIHRleHQgZGV2aWNlIHBhdGggbm9kZSB0byBVU0IgYXVkaW8gZGV2aWNlIHBh dGggc3RydWN0dXJlLg0KPiArDQo+ICsgIEBwYXJhbSBUZXh0RGV2aWNlTm9kZSAgVGhlIGlucHV0 IFRleHQgZGV2aWNlIHBhdGggbm9kZS4NCj4gKw0KPiArICBAcmV0dXJuIEEgcG9pbnRlciB0byB0 aGUgbmV3bHktY3JlYXRlZCBVU0IgYXVkaW8gZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiArDQo+ ICsqKi8NCj4gK0VGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqDQo+ICtEZXZQYXRoRnJvbVRleHRV c2JBdWRpbyAoDQo+ICsgICBDSEFSMTYgKlRleHREZXZpY2VOb2RlDQo+ICsgICkNCj4gK3sNCj4g KyAgVVNCX0NMQVNTX1RFWFQgIFVzYkNsYXNzVGV4dDsNCj4gKw0KPiArICBVc2JDbGFzc1RleHQu Q2xhc3NFeGlzdCAgICA9IEZBTFNFOw0KPiArICBVc2JDbGFzc1RleHQuQ2xhc3MgICAgICAgICA9 IFVTQl9DTEFTU19BVURJTzsNCj4gKyAgVXNiQ2xhc3NUZXh0LlN1YkNsYXNzRXhpc3QgPSBUUlVF Ow0KPiArDQo+ICsgIHJldHVybiBDb252ZXJ0RnJvbVRleHRVc2JDbGFzcyAoVGV4dERldmljZU5v ZGUsICZVc2JDbGFzc1RleHQpOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgQ29udmVydHMgYSB0 ZXh0IGRldmljZSBwYXRoIG5vZGUgdG8gVVNCIENEQyBDb250cm9sIGRldmljZSBwYXRoIHN0cnVj dHVyZS4NCj4gKw0KPiArICBAcGFyYW0gVGV4dERldmljZU5vZGUgIFRoZSBpbnB1dCBUZXh0IGRl dmljZSBwYXRoIG5vZGUuDQo+ICsNCj4gKyAgQHJldHVybiBBIHBvaW50ZXIgdG8gdGhlIG5ld2x5 LWNyZWF0ZWQgVVNCIENEQyBDb250cm9sIGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiAr KiovDQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0KPiArRGV2UGF0aEZyb21UZXh0VXNi Q0RDQ29udHJvbCAoDQo+ICsgICBDSEFSMTYgKlRleHREZXZpY2VOb2RlDQo+ICsgICkNCj4gK3sN Cj4gKyAgVVNCX0NMQVNTX1RFWFQgIFVzYkNsYXNzVGV4dDsNCj4gKw0KPiArICBVc2JDbGFzc1Rl eHQuQ2xhc3NFeGlzdCAgICA9IEZBTFNFOw0KPiArICBVc2JDbGFzc1RleHQuQ2xhc3MgICAgICAg ICA9IFVTQl9DTEFTU19DRENDT05UUk9MOw0KPiArICBVc2JDbGFzc1RleHQuU3ViQ2xhc3NFeGlz dCA9IFRSVUU7DQo+ICsNCj4gKyAgcmV0dXJuIENvbnZlcnRGcm9tVGV4dFVzYkNsYXNzIChUZXh0 RGV2aWNlTm9kZSwgJlVzYkNsYXNzVGV4dCk7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBDb252 ZXJ0cyBhIHRleHQgZGV2aWNlIHBhdGggbm9kZSB0byBVU0IgSElEIGRldmljZSBwYXRoIHN0cnVj dHVyZS4NCj4gKw0KPiArICBAcGFyYW0gVGV4dERldmljZU5vZGUgIFRoZSBpbnB1dCBUZXh0IGRl dmljZSBwYXRoIG5vZGUuDQo+ICsNCj4gKyAgQHJldHVybiBBIHBvaW50ZXIgdG8gdGhlIG5ld2x5 LWNyZWF0ZWQgVVNCIEhJRCBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyoqLw0KPiAr RUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoNCj4gK0RldlBhdGhGcm9tVGV4dFVzYkhJRCAoDQo+ ICsgICBDSEFSMTYgKlRleHREZXZpY2VOb2RlDQo+ICsgICkNCj4gK3sNCj4gKyAgVVNCX0NMQVNT X1RFWFQgIFVzYkNsYXNzVGV4dDsNCj4gKw0KPiArICBVc2JDbGFzc1RleHQuQ2xhc3NFeGlzdCAg ICA9IEZBTFNFOw0KPiArICBVc2JDbGFzc1RleHQuQ2xhc3MgICAgICAgICA9IFVTQl9DTEFTU19I SUQ7DQo+ICsgIFVzYkNsYXNzVGV4dC5TdWJDbGFzc0V4aXN0ID0gVFJVRTsNCj4gKw0KPiArICBy ZXR1cm4gQ29udmVydEZyb21UZXh0VXNiQ2xhc3MgKFRleHREZXZpY2VOb2RlLCAmVXNiQ2xhc3NU ZXh0KTsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIENvbnZlcnRzIGEgdGV4dCBkZXZpY2UgcGF0 aCBub2RlIHRvIFVTQiBJbWFnZSBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyAgQHBh cmFtIFRleHREZXZpY2VOb2RlICBUaGUgaW5wdXQgVGV4dCBkZXZpY2UgcGF0aCBub2RlLg0KPiAr DQo+ICsgIEByZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBuZXdseS1jcmVhdGVkIFVTQiBJbWFnZSBk ZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyoqLw0KPiArRUZJX0RFVklDRV9QQVRIX1BS T1RPQ09MICoNCj4gK0RldlBhdGhGcm9tVGV4dFVzYkltYWdlICgNCj4gKyAgIENIQVIxNiAqVGV4 dERldmljZU5vZGUNCj4gKyAgKQ0KPiArew0KPiArICBVU0JfQ0xBU1NfVEVYVCAgVXNiQ2xhc3NU ZXh0Ow0KPiArDQo+ICsgIFVzYkNsYXNzVGV4dC5DbGFzc0V4aXN0ICAgID0gRkFMU0U7DQo+ICsg IFVzYkNsYXNzVGV4dC5DbGFzcyAgICAgICAgID0gVVNCX0NMQVNTX0lNQUdFOw0KPiArICBVc2JD bGFzc1RleHQuU3ViQ2xhc3NFeGlzdCA9IFRSVUU7DQo+ICsNCj4gKyAgcmV0dXJuIENvbnZlcnRG cm9tVGV4dFVzYkNsYXNzIChUZXh0RGV2aWNlTm9kZSwgJlVzYkNsYXNzVGV4dCk7DQo+ICt9DQo+ ICsNCj4gKy8qKg0KPiArICBDb252ZXJ0cyBhIHRleHQgZGV2aWNlIHBhdGggbm9kZSB0byBVU0Ig UHJpbnQgZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsgIEBwYXJhbSBUZXh0RGV2aWNl Tm9kZSAgVGhlIGlucHV0IFRleHQgZGV2aWNlIHBhdGggbm9kZS4NCj4gKw0KPiArICBAcmV0dXJu IEEgcG9pbnRlciB0byB0aGUgbmV3bHktY3JlYXRlZCBVU0IgUHJpbnQgZGV2aWNlIHBhdGggc3Ry dWN0dXJlLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqDQo+ICtE ZXZQYXRoRnJvbVRleHRVc2JQcmludGVyICgNCj4gKyAgIENIQVIxNiAqVGV4dERldmljZU5vZGUN Cj4gKyAgKQ0KPiArew0KPiArICBVU0JfQ0xBU1NfVEVYVCAgVXNiQ2xhc3NUZXh0Ow0KPiArDQo+ ICsgIFVzYkNsYXNzVGV4dC5DbGFzc0V4aXN0ICAgID0gRkFMU0U7DQo+ICsgIFVzYkNsYXNzVGV4 dC5DbGFzcyAgICAgICAgID0gVVNCX0NMQVNTX1BSSU5URVI7DQo+ICsgIFVzYkNsYXNzVGV4dC5T dWJDbGFzc0V4aXN0ID0gVFJVRTsNCj4gKw0KPiArICByZXR1cm4gQ29udmVydEZyb21UZXh0VXNi Q2xhc3MgKFRleHREZXZpY2VOb2RlLCAmVXNiQ2xhc3NUZXh0KTsNCj4gK30NCj4gKw0KPiArLyoq DQo+ICsgIENvbnZlcnRzIGEgdGV4dCBkZXZpY2UgcGF0aCBub2RlIHRvIFVTQiBtYXNzIHN0b3Jh Z2UgZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsgIEBwYXJhbSBUZXh0RGV2aWNlTm9k ZSAgVGhlIGlucHV0IFRleHQgZGV2aWNlIHBhdGggbm9kZS4NCj4gKw0KPiArICBAcmV0dXJuIEEg cG9pbnRlciB0byB0aGUgbmV3bHktY3JlYXRlZCBVU0IgbWFzcyBzdG9yYWdlIGRldmljZSBwYXRo IHN0cnVjdHVyZS4NCj4gKw0KPiArKiovDQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0K PiArRGV2UGF0aEZyb21UZXh0VXNiTWFzc1N0b3JhZ2UgKA0KPiArICAgQ0hBUjE2ICpUZXh0RGV2 aWNlTm9kZQ0KPiArICApDQo+ICt7DQo+ICsgIFVTQl9DTEFTU19URVhUICBVc2JDbGFzc1RleHQ7 DQo+ICsNCj4gKyAgVXNiQ2xhc3NUZXh0LkNsYXNzRXhpc3QgICAgPSBGQUxTRTsNCj4gKyAgVXNi Q2xhc3NUZXh0LkNsYXNzICAgICAgICAgPSBVU0JfQ0xBU1NfTUFTU19TVE9SQUdFOw0KPiArICBV c2JDbGFzc1RleHQuU3ViQ2xhc3NFeGlzdCA9IFRSVUU7DQo+ICsNCj4gKyAgcmV0dXJuIENvbnZl cnRGcm9tVGV4dFVzYkNsYXNzIChUZXh0RGV2aWNlTm9kZSwgJlVzYkNsYXNzVGV4dCk7DQo+ICt9 DQo+ICsNCj4gKy8qKg0KPiArICBDb252ZXJ0cyBhIHRleHQgZGV2aWNlIHBhdGggbm9kZSB0byBV U0IgSFVCIGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArICBAcGFyYW0gVGV4dERldmlj ZU5vZGUgIFRoZSBpbnB1dCBUZXh0IGRldmljZSBwYXRoIG5vZGUuDQo+ICsNCj4gKyAgQHJldHVy biBBIHBvaW50ZXIgdG8gdGhlIG5ld2x5LWNyZWF0ZWQgVVNCIEhVQiBkZXZpY2UgcGF0aCBzdHJ1 Y3R1cmUuDQo+ICsNCj4gKyoqLw0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoNCj4gK0Rl dlBhdGhGcm9tVGV4dFVzYkh1YiAoDQo+ICsgICBDSEFSMTYgKlRleHREZXZpY2VOb2RlDQo+ICsg ICkNCj4gK3sNCj4gKyAgVVNCX0NMQVNTX1RFWFQgIFVzYkNsYXNzVGV4dDsNCj4gKw0KPiArICBV c2JDbGFzc1RleHQuQ2xhc3NFeGlzdCAgICA9IEZBTFNFOw0KPiArICBVc2JDbGFzc1RleHQuQ2xh c3MgICAgICAgICA9IFVTQl9DTEFTU19IVUI7DQo+ICsgIFVzYkNsYXNzVGV4dC5TdWJDbGFzc0V4 aXN0ID0gVFJVRTsNCj4gKw0KPiArICByZXR1cm4gQ29udmVydEZyb21UZXh0VXNiQ2xhc3MgKFRl eHREZXZpY2VOb2RlLCAmVXNiQ2xhc3NUZXh0KTsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIENv bnZlcnRzIGEgdGV4dCBkZXZpY2UgcGF0aCBub2RlIHRvIFVTQiBDREMgZGF0YSBkZXZpY2UgcGF0 aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyAgQHBhcmFtIFRleHREZXZpY2VOb2RlICBUaGUgaW5wdXQg VGV4dCBkZXZpY2UgcGF0aCBub2RlLg0KPiArDQo+ICsgIEByZXR1cm4gQSBwb2ludGVyIHRvIHRo ZSBuZXdseS1jcmVhdGVkIFVTQiBDREMgZGF0YSBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsN Cj4gKyoqLw0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoNCj4gK0RldlBhdGhGcm9tVGV4 dFVzYkNEQ0RhdGEgKA0KPiArICAgQ0hBUjE2ICpUZXh0RGV2aWNlTm9kZQ0KPiArICApDQo+ICt7 DQo+ICsgIFVTQl9DTEFTU19URVhUICBVc2JDbGFzc1RleHQ7DQo+ICsNCj4gKyAgVXNiQ2xhc3NU ZXh0LkNsYXNzRXhpc3QgICAgPSBGQUxTRTsNCj4gKyAgVXNiQ2xhc3NUZXh0LkNsYXNzICAgICAg ICAgPSBVU0JfQ0xBU1NfQ0RDREFUQTsNCj4gKyAgVXNiQ2xhc3NUZXh0LlN1YkNsYXNzRXhpc3Qg PSBUUlVFOw0KPiArDQo+ICsgIHJldHVybiBDb252ZXJ0RnJvbVRleHRVc2JDbGFzcyAoVGV4dERl dmljZU5vZGUsICZVc2JDbGFzc1RleHQpOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgQ29udmVy dHMgYSB0ZXh0IGRldmljZSBwYXRoIG5vZGUgdG8gVVNCIHNtYXJ0IGNhcmQgZGV2aWNlIHBhdGgg c3RydWN0dXJlLg0KPiArDQo+ICsgIEBwYXJhbSBUZXh0RGV2aWNlTm9kZSAgVGhlIGlucHV0IFRl eHQgZGV2aWNlIHBhdGggbm9kZS4NCj4gKw0KPiArICBAcmV0dXJuIEEgcG9pbnRlciB0byB0aGUg bmV3bHktY3JlYXRlZCBVU0Igc21hcnQgY2FyZCBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsN Cj4gKyoqLw0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoNCj4gK0RldlBhdGhGcm9tVGV4 dFVzYlNtYXJ0Q2FyZCAoDQo+ICsgICBDSEFSMTYgKlRleHREZXZpY2VOb2RlDQo+ICsgICkNCj4g K3sNCj4gKyAgVVNCX0NMQVNTX1RFWFQgIFVzYkNsYXNzVGV4dDsNCj4gKw0KPiArICBVc2JDbGFz c1RleHQuQ2xhc3NFeGlzdCAgICA9IEZBTFNFOw0KPiArICBVc2JDbGFzc1RleHQuQ2xhc3MgICAg ICAgICA9IFVTQl9DTEFTU19TTUFSVF9DQVJEOw0KPiArICBVc2JDbGFzc1RleHQuU3ViQ2xhc3NF eGlzdCA9IFRSVUU7DQo+ICsNCj4gKyAgcmV0dXJuIENvbnZlcnRGcm9tVGV4dFVzYkNsYXNzIChU ZXh0RGV2aWNlTm9kZSwgJlVzYkNsYXNzVGV4dCk7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBD b252ZXJ0cyBhIHRleHQgZGV2aWNlIHBhdGggbm9kZSB0byBVU0IgdmlkZW8gZGV2aWNlIHBhdGgg c3RydWN0dXJlLg0KPiArDQo+ICsgIEBwYXJhbSBUZXh0RGV2aWNlTm9kZSAgVGhlIGlucHV0IFRl eHQgZGV2aWNlIHBhdGggbm9kZS4NCj4gKw0KPiArICBAcmV0dXJuIEEgcG9pbnRlciB0byB0aGUg bmV3bHktY3JlYXRlZCBVU0IgdmlkZW8gZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsq Ki8NCj4gK0VGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqDQo+ICtEZXZQYXRoRnJvbVRleHRVc2JW aWRlbyAoDQo+ICsgICBDSEFSMTYgKlRleHREZXZpY2VOb2RlDQo+ICsgICkNCj4gK3sNCj4gKyAg VVNCX0NMQVNTX1RFWFQgIFVzYkNsYXNzVGV4dDsNCj4gKw0KPiArICBVc2JDbGFzc1RleHQuQ2xh c3NFeGlzdCAgICA9IEZBTFNFOw0KPiArICBVc2JDbGFzc1RleHQuQ2xhc3MgICAgICAgICA9IFVT Ql9DTEFTU19WSURFTzsNCj4gKyAgVXNiQ2xhc3NUZXh0LlN1YkNsYXNzRXhpc3QgPSBUUlVFOw0K PiArDQo+ICsgIHJldHVybiBDb252ZXJ0RnJvbVRleHRVc2JDbGFzcyAoVGV4dERldmljZU5vZGUs ICZVc2JDbGFzc1RleHQpOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgQ29udmVydHMgYSB0ZXh0 IGRldmljZSBwYXRoIG5vZGUgdG8gVVNCIGRpYWdub3N0aWMgZGV2aWNlIHBhdGggc3RydWN0dXJl Lg0KPiArDQo+ICsgIEBwYXJhbSBUZXh0RGV2aWNlTm9kZSAgVGhlIGlucHV0IFRleHQgZGV2aWNl IHBhdGggbm9kZS4NCj4gKw0KPiArICBAcmV0dXJuIEEgcG9pbnRlciB0byB0aGUgbmV3bHktY3Jl YXRlZCBVU0IgZGlhZ25vc3RpYyBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyoqLw0K PiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoNCj4gK0RldlBhdGhGcm9tVGV4dFVzYkRpYWdu b3N0aWMgKA0KPiArICAgQ0hBUjE2ICpUZXh0RGV2aWNlTm9kZQ0KPiArICApDQo+ICt7DQo+ICsg IFVTQl9DTEFTU19URVhUICBVc2JDbGFzc1RleHQ7DQo+ICsNCj4gKyAgVXNiQ2xhc3NUZXh0LkNs YXNzRXhpc3QgICAgPSBGQUxTRTsNCj4gKyAgVXNiQ2xhc3NUZXh0LkNsYXNzICAgICAgICAgPSBV U0JfQ0xBU1NfRElBR05PU1RJQzsNCj4gKyAgVXNiQ2xhc3NUZXh0LlN1YkNsYXNzRXhpc3QgPSBU UlVFOw0KPiArDQo+ICsgIHJldHVybiBDb252ZXJ0RnJvbVRleHRVc2JDbGFzcyAoVGV4dERldmlj ZU5vZGUsICZVc2JDbGFzc1RleHQpOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgQ29udmVydHMg YSB0ZXh0IGRldmljZSBwYXRoIG5vZGUgdG8gVVNCIHdpcmVsZXNzIGRldmljZSBwYXRoIHN0cnVj dHVyZS4NCj4gKw0KPiArICBAcGFyYW0gVGV4dERldmljZU5vZGUgIFRoZSBpbnB1dCBUZXh0IGRl dmljZSBwYXRoIG5vZGUuDQo+ICsNCj4gKyAgQHJldHVybiBBIHBvaW50ZXIgdG8gdGhlIG5ld2x5 LWNyZWF0ZWQgVVNCIHdpcmVsZXNzIGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArKiov DQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0KPiArRGV2UGF0aEZyb21UZXh0VXNiV2ly ZWxlc3MgKA0KPiArICAgQ0hBUjE2ICpUZXh0RGV2aWNlTm9kZQ0KPiArICApDQo+ICt7DQo+ICsg IFVTQl9DTEFTU19URVhUICBVc2JDbGFzc1RleHQ7DQo+ICsNCj4gKyAgVXNiQ2xhc3NUZXh0LkNs YXNzRXhpc3QgICAgPSBGQUxTRTsNCj4gKyAgVXNiQ2xhc3NUZXh0LkNsYXNzICAgICAgICAgPSBV U0JfQ0xBU1NfV0lSRUxFU1M7DQo+ICsgIFVzYkNsYXNzVGV4dC5TdWJDbGFzc0V4aXN0ID0gVFJV RTsNCj4gKw0KPiArICByZXR1cm4gQ29udmVydEZyb21UZXh0VXNiQ2xhc3MgKFRleHREZXZpY2VO b2RlLCAmVXNiQ2xhc3NUZXh0KTsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIENvbnZlcnRzIGEg dGV4dCBkZXZpY2UgcGF0aCBub2RlIHRvIFVTQiBkZXZpY2UgZmlybXdhcmUgdXBkYXRlIGRldmlj ZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArICBAcGFyYW0gVGV4dERldmljZU5vZGUgIFRoZSBp bnB1dCBUZXh0IGRldmljZSBwYXRoIG5vZGUuDQo+ICsNCj4gKyAgQHJldHVybiBBIHBvaW50ZXIg dG8gdGhlIG5ld2x5LWNyZWF0ZWQgVVNCIGRldmljZSBmaXJtd2FyZSB1cGRhdGUgZGV2aWNlIHBh dGggc3RydWN0dXJlLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAq DQo+ICtEZXZQYXRoRnJvbVRleHRVc2JEZXZpY2VGaXJtd2FyZVVwZGF0ZSAoDQo+ICsgICBDSEFS MTYgKlRleHREZXZpY2VOb2RlDQo+ICsgICkNCj4gK3sNCj4gKyAgVVNCX0NMQVNTX1RFWFQgIFVz YkNsYXNzVGV4dDsNCj4gKw0KPiArICBVc2JDbGFzc1RleHQuQ2xhc3NFeGlzdCAgICA9IEZBTFNF Ow0KPiArICBVc2JDbGFzc1RleHQuQ2xhc3MgICAgICAgICA9IFVTQl9DTEFTU19SRVNFUlZFOw0K PiArICBVc2JDbGFzc1RleHQuU3ViQ2xhc3NFeGlzdCA9IEZBTFNFOw0KPiArICBVc2JDbGFzc1Rl eHQuU3ViQ2xhc3MgICAgICA9IFVTQl9TVUJDTEFTU19GV19VUERBVEU7DQo+ICsNCj4gKyAgcmV0 dXJuIENvbnZlcnRGcm9tVGV4dFVzYkNsYXNzIChUZXh0RGV2aWNlTm9kZSwgJlVzYkNsYXNzVGV4 dCk7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBDb252ZXJ0cyBhIHRleHQgZGV2aWNlIHBhdGgg bm9kZSB0byBVU0IgSVJEQSBicmlkZ2UgZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsg IEBwYXJhbSBUZXh0RGV2aWNlTm9kZSAgVGhlIGlucHV0IFRleHQgZGV2aWNlIHBhdGggbm9kZS4N Cj4gKw0KPiArICBAcmV0dXJuIEEgcG9pbnRlciB0byB0aGUgbmV3bHktY3JlYXRlZCBVU0IgSVJE QSBicmlkZ2UgZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9ERVZJ Q0VfUEFUSF9QUk9UT0NPTCAqDQo+ICtEZXZQYXRoRnJvbVRleHRVc2JJcmRhQnJpZGdlICgNCj4g KyAgIENIQVIxNiAqVGV4dERldmljZU5vZGUNCj4gKyAgKQ0KPiArew0KPiArICBVU0JfQ0xBU1Nf VEVYVCAgVXNiQ2xhc3NUZXh0Ow0KPiArDQo+ICsgIFVzYkNsYXNzVGV4dC5DbGFzc0V4aXN0ICAg ID0gRkFMU0U7DQo+ICsgIFVzYkNsYXNzVGV4dC5DbGFzcyAgICAgICAgID0gVVNCX0NMQVNTX1JF U0VSVkU7DQo+ICsgIFVzYkNsYXNzVGV4dC5TdWJDbGFzc0V4aXN0ID0gRkFMU0U7DQo+ICsgIFVz YkNsYXNzVGV4dC5TdWJDbGFzcyAgICAgID0gVVNCX1NVQkNMQVNTX0lSREFfQlJJREdFOw0KPiAr DQo+ICsgIHJldHVybiBDb252ZXJ0RnJvbVRleHRVc2JDbGFzcyAoVGV4dERldmljZU5vZGUsICZV c2JDbGFzc1RleHQpOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgQ29udmVydHMgYSB0ZXh0IGRl dmljZSBwYXRoIG5vZGUgdG8gVVNCIHRleHQgYW5kIG1lYXN1cmVtZW50IGRldmljZSBwYXRoIHN0 cnVjdHVyZS4NCj4gKw0KPiArICBAcGFyYW0gVGV4dERldmljZU5vZGUgIFRoZSBpbnB1dCBUZXh0 IGRldmljZSBwYXRoIG5vZGUuDQo+ICsNCj4gKyAgQHJldHVybiBBIHBvaW50ZXIgdG8gdGhlIG5l d2x5LWNyZWF0ZWQgVVNCIHRleHQgYW5kIG1lYXN1cmVtZW50IGRldmljZSBwYXRoIHN0cnVjdHVy ZS4NCj4gKw0KPiArKiovDQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0KPiArRGV2UGF0 aEZyb21UZXh0VXNiVGVzdEFuZE1lYXN1cmVtZW50ICgNCj4gKyAgIENIQVIxNiAqVGV4dERldmlj ZU5vZGUNCj4gKyAgKQ0KPiArew0KPiArICBVU0JfQ0xBU1NfVEVYVCAgVXNiQ2xhc3NUZXh0Ow0K PiArDQo+ICsgIFVzYkNsYXNzVGV4dC5DbGFzc0V4aXN0ICAgID0gRkFMU0U7DQo+ICsgIFVzYkNs YXNzVGV4dC5DbGFzcyAgICAgICAgID0gVVNCX0NMQVNTX1JFU0VSVkU7DQo+ICsgIFVzYkNsYXNz VGV4dC5TdWJDbGFzc0V4aXN0ID0gRkFMU0U7DQo+ICsgIFVzYkNsYXNzVGV4dC5TdWJDbGFzcyAg ICAgID0gVVNCX1NVQkNMQVNTX1RFU1Q7DQo+ICsNCj4gKyAgcmV0dXJuIENvbnZlcnRGcm9tVGV4 dFVzYkNsYXNzIChUZXh0RGV2aWNlTm9kZSwgJlVzYkNsYXNzVGV4dCk7DQo+ICt9DQo+ICsNCj4g Ky8qKg0KPiArICBDb252ZXJ0cyBhIHRleHQgZGV2aWNlIHBhdGggbm9kZSB0byBVU0IgV1dJRCBk ZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyAgQHBhcmFtIFRleHREZXZpY2VOb2RlICBU aGUgaW5wdXQgVGV4dCBkZXZpY2UgcGF0aCBub2RlLg0KPiArDQo+ICsgIEByZXR1cm4gQSBwb2lu dGVyIHRvIHRoZSBuZXdseS1jcmVhdGVkIFVTQiBXV0lEIGRldmljZSBwYXRoIHN0cnVjdHVyZS4N Cj4gKw0KPiArKiovDQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0KPiArRGV2UGF0aEZy b21UZXh0VXNiV3dpZCAoDQo+ICsgICBDSEFSMTYgKlRleHREZXZpY2VOb2RlDQo+ICsgICkNCj4g K3sNCj4gKyAgQ0hBUjE2ICAgICAgICAgICAgICAgICpWSURTdHI7DQo+ICsgIENIQVIxNiAgICAg ICAgICAgICAgICAqUElEU3RyOw0KPiArICBDSEFSMTYgICAgICAgICAgICAgICAgKkludGVyZmFj ZU51bVN0cjsNCj4gKyAgQ0hBUjE2ICAgICAgICAgICAgICAgICpTZXJpYWxOdW1iZXJTdHI7DQo+ ICsgIFVTQl9XV0lEX0RFVklDRV9QQVRIICAqVXNiV3dpZDsNCj4gKyAgVUlOVE4gICAgICAgICAg ICAgICAgIFNlcmlhbE51bWJlclN0ckxlbjsNCj4gKw0KPiArICBWSURTdHIgICAgICAgICAgICAg ICAgICAgPSBHZXROZXh0UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsgIFBJRFN0ciAg ICAgICAgICAgICAgICAgICA9IEdldE5leHRQYXJhbVN0ciAoJlRleHREZXZpY2VOb2RlKTsNCj4g KyAgSW50ZXJmYWNlTnVtU3RyICAgICAgICAgID0gR2V0TmV4dFBhcmFtU3RyICgmVGV4dERldmlj ZU5vZGUpOw0KPiArICBTZXJpYWxOdW1iZXJTdHIgICAgICAgICAgPSBHZXROZXh0UGFyYW1TdHIg KCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsgIFNlcmlhbE51bWJlclN0ckxlbiAgICAgICA9IFN0ckxl biAoU2VyaWFsTnVtYmVyU3RyKTsNCj4gKyAgaWYgKFNlcmlhbE51bWJlclN0ckxlbiA+PSAyICYm DQo+ICsgICAgICBTZXJpYWxOdW1iZXJTdHJbMF0gPT0gTCdcIicgJiYNCj4gKyAgICAgIFNlcmlh bE51bWJlclN0cltTZXJpYWxOdW1iZXJTdHJMZW4gLSAxXSA9PSBMJ1wiJw0KPiArICAgICkgew0K PiArICAgIFNlcmlhbE51bWJlclN0cltTZXJpYWxOdW1iZXJTdHJMZW4gLSAxXSA9IEwnXDAnOw0K PiArICAgIFNlcmlhbE51bWJlclN0cisrOw0KPiArICAgIFNlcmlhbE51bWJlclN0ckxlbiAtPSAy Ow0KPiArICB9DQo+ICsgIFVzYld3aWQgICAgICAgICAgICAgICAgICA9IChVU0JfV1dJRF9ERVZJ Q0VfUEFUSCAqKSBDcmVhdGVEZXZpY2VOb2RlICgNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FU1NBR0lOR19ERVZJQ0VfUEFUSCwN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE1TR19VU0JfV1dJRF9EUCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChVSU5UMTYpIChzaXplb2YgKFVTQl9XV0lEX0RFVklD RV9QQVRIKSArIFNlcmlhbE51bWJlclN0ckxlbiAqIHNpemVvZiAoQ0hBUjE2KSkNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQo+ ICsgIFVzYld3aWQtPlZlbmRvcklkICAgICAgICA9IChVSU5UMTYpIFN0cnRvaSAoVklEU3RyKTsN Cj4gKyAgVXNiV3dpZC0+UHJvZHVjdElkICAgICAgID0gKFVJTlQxNikgU3RydG9pIChQSURTdHIp Ow0KPiArICBVc2JXd2lkLT5JbnRlcmZhY2VOdW1iZXIgPSAoVUlOVDE2KSBTdHJ0b2kgKEludGVy ZmFjZU51bVN0cik7DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gVGhlcmUgaXMgbm8gbWVtb3J5IGFs bG9jYXRlZCBpbiBVc2JXd2lkIGZvciB0aGUgJ1wwJyBpbiBTZXJpYWxOdW1iZXJTdHIuDQo+ICsg IC8vIFRoZXJlZm9yZSwgdGhlICdcMCcgd2lsbCBub3QgYmUgY29waWVkLg0KPiArICAvLw0KPiAr ICBtZW1jcHkgKA0KPiArICAgIChVSU5UOCAqKSBVc2JXd2lkICsgc2l6ZW9mIChVU0JfV1dJRF9E RVZJQ0VfUEFUSCksDQo+ICsgICAgU2VyaWFsTnVtYmVyU3RyLA0KPiArICAgIFNlcmlhbE51bWJl clN0ckxlbiAqIHNpemVvZiAoQ0hBUjE2KQ0KPiArICAgICk7DQo+ICsNCj4gKyAgcmV0dXJuIChF RklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKikgVXNiV3dpZDsNCj4gK30NCj4gKw0KPiArLyoqDQo+ ICsgIENvbnZlcnRzIGEgdGV4dCBkZXZpY2UgcGF0aCBub2RlIHRvIExvZ2ljIFVuaXQgZGV2aWNl IHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsgIEBwYXJhbSBUZXh0RGV2aWNlTm9kZSAgVGhlIGlu cHV0IFRleHQgZGV2aWNlIHBhdGggbm9kZS4NCj4gKw0KPiArICBAcmV0dXJuIEEgcG9pbnRlciB0 byB0aGUgbmV3bHktY3JlYXRlZCBMb2dpYyBVbml0IGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4g Kw0KPiArKiovDQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0KPiArRGV2UGF0aEZyb21U ZXh0VW5pdCAoDQo+ICsgICBDSEFSMTYgKlRleHREZXZpY2VOb2RlDQo+ICsgICkNCj4gK3sNCj4g KyAgQ0hBUjE2ICAgICAgICAgICAgICAgICAgICAgICAgICAqTHVuU3RyOw0KPiArICBERVZJQ0Vf TE9HSUNBTF9VTklUX0RFVklDRV9QQVRIICpMb2dpY2FsVW5pdDsNCj4gKw0KPiArICBMdW5TdHIg ICAgICA9IEdldE5leHRQYXJhbVN0ciAoJlRleHREZXZpY2VOb2RlKTsNCj4gKyAgTG9naWNhbFVu aXQgPSAoREVWSUNFX0xPR0lDQUxfVU5JVF9ERVZJQ0VfUEFUSCAqKSBDcmVhdGVEZXZpY2VOb2Rl ICgNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE1FU1NBR0lOR19ERVZJQ0VfUEFUSCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1TR19ERVZJQ0VfTE9HSUNBTF9VTklUX0RQLA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KFVJTlQxNikgc2l6ZW9mIChERVZJQ0VfTE9HSUNBTF9VTklUX0RFVklDRV9QQVRIKQ0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCj4g Kw0KPiArICBMb2dpY2FsVW5pdC0+THVuICA9IChVSU5UOCkgU3RydG9pIChMdW5TdHIpOw0KPiAr DQo+ICsgIHJldHVybiAoRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICopIExvZ2ljYWxVbml0Ow0K PiArfQ0KPiArDQo+ICsvKioNCj4gKyAgQ29udmVydHMgYSB0ZXh0IGRldmljZSBwYXRoIG5vZGUg dG8gaVNDU0kgZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsgIEBwYXJhbSBUZXh0RGV2 aWNlTm9kZSAgVGhlIGlucHV0IFRleHQgZGV2aWNlIHBhdGggbm9kZS4NCj4gKw0KPiArICBAcmV0 dXJuIEEgcG9pbnRlciB0byB0aGUgbmV3bHktY3JlYXRlZCBpU0NTSSBkZXZpY2UgcGF0aCBzdHJ1 Y3R1cmUuDQo+ICsNCj4gKyoqLw0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoNCj4gK0Rl dlBhdGhGcm9tVGV4dGlTQ1NJICgNCj4gKyAgIENIQVIxNiAqVGV4dERldmljZU5vZGUNCj4gKyAg KQ0KPiArew0KPiArICBVSU5UMTYgICAgICAgICAgICAgICAgICAgICAgT3B0aW9uczsNCj4gKyAg Q0hBUjE2ICAgICAgICAgICAgICAgICAgICAgICpOYW1lU3RyOw0KPiArICBDSEFSMTYgICAgICAg ICAgICAgICAgICAgICAgKlBvcnRhbEdyb3VwU3RyOw0KPiArICBDSEFSMTYgICAgICAgICAgICAg ICAgICAgICAgKkx1blN0cjsNCj4gKyAgQ0hBUjE2ICAgICAgICAgICAgICAgICAgICAgICpIZWFk ZXJEaWdlc3RTdHI7DQo+ICsgIENIQVIxNiAgICAgICAgICAgICAgICAgICAgICAqRGF0YURpZ2Vz dFN0cjsNCj4gKyAgQ0hBUjE2ICAgICAgICAgICAgICAgICAgICAgICpBdXRoZW50aWNhdGlvblN0 cjsNCj4gKyAgQ0hBUjE2ICAgICAgICAgICAgICAgICAgICAgICpQcm90b2NvbFN0cjsNCj4gKyAg Q0hBUjggICAgICAgICAgICAgICAgICAgICAgICpBc2NpaVN0cjsNCj4gKyAgSVNDU0lfREVWSUNF X1BBVEhfV0lUSF9OQU1FICpJU0NTSURldlBhdGg7DQo+ICsNCj4gKyAgTmFtZVN0ciAgICAgICAg ICAgPSBHZXROZXh0UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsgIFBvcnRhbEdyb3Vw U3RyICAgID0gR2V0TmV4dFBhcmFtU3RyICgmVGV4dERldmljZU5vZGUpOw0KPiArICBMdW5TdHIg ICAgICAgICAgICA9IEdldE5leHRQYXJhbVN0ciAoJlRleHREZXZpY2VOb2RlKTsNCj4gKyAgSGVh ZGVyRGlnZXN0U3RyICAgPSBHZXROZXh0UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsg IERhdGFEaWdlc3RTdHIgICAgID0gR2V0TmV4dFBhcmFtU3RyICgmVGV4dERldmljZU5vZGUpOw0K PiArICBBdXRoZW50aWNhdGlvblN0ciA9IEdldE5leHRQYXJhbVN0ciAoJlRleHREZXZpY2VOb2Rl KTsNCj4gKyAgUHJvdG9jb2xTdHIgICAgICAgPSBHZXROZXh0UGFyYW1TdHIgKCZUZXh0RGV2aWNl Tm9kZSk7DQo+ICsgIElTQ1NJRGV2UGF0aCAgICAgID0gKElTQ1NJX0RFVklDRV9QQVRIX1dJVEhf TkFNRSAqKSBDcmVhdGVEZXZpY2VOb2RlICgNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVTU0FHSU5HX0RFVklDRV9QQVRILA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBN U0dfSVNDU0lfRFAsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChVSU5UMTYpIChzaXplb2YgKElTQ1NJX0RFVklDRV9QQVRIX1dJVEhf TkFNRSkgKyBTdHJMZW4gKE5hbWVTdHIpKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KPiArDQo+ICsgIEFzY2lpU3RyID0gSVND U0lEZXZQYXRoLT5UYXJnZXROYW1lOw0KPiArICBTdHJUb0FzY2lpIChOYW1lU3RyLCAmQXNjaWlT dHIpOw0KPiArDQo+ICsgIElTQ1NJRGV2UGF0aC0+VGFyZ2V0UG9ydGFsR3JvdXBUYWcgPSAoVUlO VDE2KSBTdHJ0b2kgKFBvcnRhbEdyb3VwU3RyKTsNCj4gKyAgU3RydG9pNjQgKEx1blN0ciwgJklT Q1NJRGV2UGF0aC0+THVuKTsNCj4gKw0KPiArICBPcHRpb25zID0gMHgwMDAwOw0KPiArICBpZiAo U3RyQ21wIChIZWFkZXJEaWdlc3RTdHIsIEwiQ1JDMzJDIikgPT0gMCkgew0KPiArICAgIE9wdGlv bnMgfD0gMHgwMDAyOw0KPiArICB9DQo+ICsNCj4gKyAgaWYgKFN0ckNtcCAoRGF0YURpZ2VzdFN0 ciwgTCJDUkMzMkMiKSA9PSAwKSB7DQo+ICsgICAgT3B0aW9ucyB8PSAweDAwMDg7DQo+ICsgIH0N Cj4gKw0KPiArICBpZiAoU3RyQ21wIChBdXRoZW50aWNhdGlvblN0ciwgTCJOb25lIikgPT0gMCkg ew0KPiArICAgIE9wdGlvbnMgfD0gMHgwODAwOw0KPiArICB9DQo+ICsNCj4gKyAgaWYgKFN0ckNt cCAoQXV0aGVudGljYXRpb25TdHIsIEwiQ0hBUF9VTkkiKSA9PSAwKSB7DQo+ICsgICAgT3B0aW9u cyB8PSAweDEwMDA7DQo+ICsgIH0NCj4gKw0KPiArICBJU0NTSURldlBhdGgtPkxvZ2luT3B0aW9u ICAgICAgPSAoVUlOVDE2KSBPcHRpb25zOw0KPiArDQo+ICsgIGlmIChTdHJDbXAgKFByb3RvY29s U3RyLCBMIlRDUCIpID09IDApIHsNCj4gKyAgICBJU0NTSURldlBhdGgtPk5ldHdvcmtQcm90b2Nv bCA9IDA7DQo+ICsgIH0gZWxzZSB7DQo+ICsgICAgLy8NCj4gKyAgICAvLyBVbmRlZmluZWQgYW5k IHJlc2VydmVkLg0KPiArICAgIC8vDQo+ICsgICAgSVNDU0lEZXZQYXRoLT5OZXR3b3JrUHJvdG9j b2wgPSAxOw0KPiArICB9DQo+ICsNCj4gKyAgcmV0dXJuIChFRklfREVWSUNFX1BBVEhfUFJPVE9D T0wgKikgSVNDU0lEZXZQYXRoOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgQ29udmVydHMgYSB0 ZXh0IGRldmljZSBwYXRoIG5vZGUgdG8gVkxBTiBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsN Cj4gKyAgQHBhcmFtIFRleHREZXZpY2VOb2RlICBUaGUgaW5wdXQgVGV4dCBkZXZpY2UgcGF0aCBu b2RlLg0KPiArDQo+ICsgIEByZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBuZXdseS1jcmVhdGVkIFZM QU4gZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9ERVZJQ0VfUEFU SF9QUk9UT0NPTCAqDQo+ICtEZXZQYXRoRnJvbVRleHRWbGFuICgNCj4gKyAgIENIQVIxNiAqVGV4 dERldmljZU5vZGUNCj4gKyAgKQ0KPiArew0KPiArICBDSEFSMTYgICAgICAgICAgICAqVmxhblN0 cjsNCj4gKyAgVkxBTl9ERVZJQ0VfUEFUSCAgKlZsYW47DQo+ICsNCj4gKyAgVmxhblN0ciA9IEdl dE5leHRQYXJhbVN0ciAoJlRleHREZXZpY2VOb2RlKTsNCj4gKyAgVmxhbiAgICA9IChWTEFOX0RF VklDRV9QQVRIICopIENyZWF0ZURldmljZU5vZGUgKA0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBNRVNTQUdJTkdfREVWSUNFX1BBVEgsDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE1TR19WTEFOX0RQLA0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoVUlOVDE2KSBzaXplb2YgKFZMQU5fREVWSUNFX1BBVEgpDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQo+ICsNCj4gKyAgVmxhbi0+Vmxhbklk ID0gKFVJTlQxNikgU3RydG9pIChWbGFuU3RyKTsNCj4gKw0KPiArICByZXR1cm4gKEVGSV9ERVZJ Q0VfUEFUSF9QUk9UT0NPTCAqKSBWbGFuOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgQ29udmVy dHMgYSB0ZXh0IGRldmljZSBwYXRoIG5vZGUgdG8gQmx1ZXRvb3RoIGRldmljZSBwYXRoIHN0cnVj dHVyZS4NCj4gKw0KPiArICBAcGFyYW0gVGV4dERldmljZU5vZGUgIFRoZSBpbnB1dCBUZXh0IGRl dmljZSBwYXRoIG5vZGUuDQo+ICsNCj4gKyAgQHJldHVybiBBIHBvaW50ZXIgdG8gdGhlIG5ld2x5 LWNyZWF0ZWQgQmx1ZXRvb3RoIGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArKiovDQo+ ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0KPiArRGV2UGF0aEZyb21UZXh0Qmx1ZXRvb3Ro ICgNCj4gKyAgIENIQVIxNiAqVGV4dERldmljZU5vZGUNCj4gKyAgKQ0KPiArew0KPiArICBDSEFS MTYgICAgICAgICAgICAgICAgICAqQmx1ZXRvb3RoU3RyOw0KPiArICBCTFVFVE9PVEhfREVWSUNF X1BBVEggICAqQmx1ZXRvb3RoRHA7DQo+ICsNCj4gKyAgQmx1ZXRvb3RoU3RyID0gR2V0TmV4dFBh cmFtU3RyICgmVGV4dERldmljZU5vZGUpOw0KPiArICBCbHVldG9vdGhEcCAgPSAoQkxVRVRPT1RI X0RFVklDRV9QQVRIICopIENyZWF0ZURldmljZU5vZGUgKA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVTU0FHSU5HX0RFVklDRV9QQVRILA0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTVNHX0JMVUVUT09USF9E UCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChVSU5U MTYpIHNpemVvZiAoQkxVRVRPT1RIX0RFVklDRV9QQVRIKQ0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCj4gKyAgU3RySGV4VG9CeXRlcyAoDQo+ICsg ICAgQmx1ZXRvb3RoU3RyLA0KPiArICAgIHNpemVvZiAoQkxVRVRPT1RIX0FERFJFU1MpICogMiwN Cj4gKyAgICBCbHVldG9vdGhEcC0+QkRfQUREUi5BZGRyZXNzLA0KPiArICAgIHNpemVvZiAoQkxV RVRPT1RIX0FERFJFU1MpDQo+ICsgICAgKTsNCj4gKyAgcmV0dXJuIChFRklfREVWSUNFX1BBVEhf UFJPVE9DT0wgKikgQmx1ZXRvb3RoRHA7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBDb252ZXJ0 cyBhIHRleHQgZGV2aWNlIHBhdGggbm9kZSB0byBXaS1GaSBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUu DQo+ICsNCj4gKyAgQHBhcmFtIFRleHREZXZpY2VOb2RlICBUaGUgaW5wdXQgVGV4dCBkZXZpY2Ug cGF0aCBub2RlLg0KPiArDQo+ICsgIEByZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBuZXdseS1jcmVh dGVkIFdpLUZpIGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArKiovDQo+ICtFRklfREVW SUNFX1BBVEhfUFJPVE9DT0wgKg0KPiArRGV2UGF0aEZyb21UZXh0V2lGaSAoDQo+ICsgICBDSEFS MTYgKlRleHREZXZpY2VOb2RlDQo+ICsgICkNCj4gK3sNCj4gKyAgQ0hBUjE2ICAgICAgICAgICAg ICAgICpTU0lkU3RyOw0KPiArICBDSEFSOCAgICAgICAgICAgICAgICAgQXNjaWlTdHJbMzNdOw0K PiArICBVSU5UTiAgICAgICAgICAgICAgICAgRGF0YUxlbjsNCj4gKyAgV0lGSV9ERVZJQ0VfUEFU SCAgICAgICpXaUZpRHA7DQo+ICsNCj4gKyAgU1NJZFN0ciA9IEdldE5leHRQYXJhbVN0ciAoJlRl eHREZXZpY2VOb2RlKTsNCj4gKyAgV2lGaURwICA9IChXSUZJX0RFVklDRV9QQVRIICopIENyZWF0 ZURldmljZU5vZGUgKA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRVNT QUdJTkdfREVWSUNFX1BBVEgsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IE1TR19XSUZJX0RQLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVUlO VDE2KSBzaXplb2YgKFdJRklfREVWSUNFX1BBVEgpDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICk7DQo+ICsNCj4gKyAgaWYgKE5VTEwgIT0gU1NJZFN0cikgew0KPiArICAg IERhdGFMZW4gPSBTdHJMZW4gKFNTSWRTdHIpOw0KPiArICAgIGlmIChTdHJMZW4gKFNTSWRTdHIp ID4gMzIpIHsNCj4gKyAgICAgIFNTSWRTdHJbMzJdID0gTCdcMCc7DQo+ICsgICAgICBEYXRhTGVu ICAgICA9IDMyOw0KPiArICAgIH0NCj4gKw0KPiArICAgIFVuaWNvZGVTdHJUb0FzY2lpU3RyUyAo U1NJZFN0ciwgQXNjaWlTdHIsIHNpemVvZiAoQXNjaWlTdHIpKTsNCj4gKyAgICBtZW1jcHkgKFdp RmlEcC0+U1NJZCwgQXNjaWlTdHIsIERhdGFMZW4pOw0KPiArICB9DQo+ICsNCj4gKyAgcmV0dXJu IChFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKikgV2lGaURwOw0KPiArfQ0KPiArDQo+ICsvKioN Cj4gKyAgQ29udmVydHMgYSB0ZXh0IGRldmljZSBwYXRoIG5vZGUgdG8gVVJJIGRldmljZSBwYXRo IHN0cnVjdHVyZS4NCj4gKw0KPiArICBAcGFyYW0gVGV4dERldmljZU5vZGUgIFRoZSBpbnB1dCBU ZXh0IGRldmljZSBwYXRoIG5vZGUuDQo+ICsNCj4gKyAgQHJldHVybiBBIHBvaW50ZXIgdG8gdGhl IG5ld2x5LWNyZWF0ZWQgVVJJIGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArKiovDQo+ ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0KPiArRGV2UGF0aEZyb21UZXh0VXJpICgNCj4g KyAgIENIQVIxNiAqVGV4dERldmljZU5vZGUNCj4gKyAgKQ0KPiArew0KPiArICBDSEFSMTYgICAg ICAgICAgICpVcmlTdHI7DQo+ICsgIFVJTlROICAgICAgICAgICAgVXJpTGVuZ3RoOw0KPiArICBV UklfREVWSUNFX1BBVEggICpVcmk7DQo+ICsNCj4gKyAgVXJpU3RyID0gR2V0TmV4dFBhcmFtU3Ry ICgmVGV4dERldmljZU5vZGUpOw0KPiArICBVcmlMZW5ndGggPSBTdHJuTGVuUyAoVXJpU3RyLCBN QVhfVUlOVDE2IC0gc2l6ZW9mIChVUklfREVWSUNFX1BBVEgpKTsNCj4gKyAgVXJpICAgID0gKFVS SV9ERVZJQ0VfUEFUSCAqKSBDcmVhdGVEZXZpY2VOb2RlICgNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE1FU1NBR0lOR19ERVZJQ0VfUEFUSCwNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE1TR19VUklfRFAsDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoVUlOVDE2KSAoc2l6ZW9mIChVUklfREVWSUNFX1BBVEgpICsgVXJpTGVuZ3Ro KQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCj4gKw0KPiArICB3aGls ZSAoVXJpTGVuZ3RoLS0gIT0gMCkgew0KPiArICAgIFVyaS0+VXJpW1VyaUxlbmd0aF0gPSAoQ0hB UjgpIFVyaVN0cltVcmlMZW5ndGhdOw0KPiArICB9DQo+ICsNCj4gKyAgcmV0dXJuIChFRklfREVW SUNFX1BBVEhfUFJPVE9DT0wgKikgVXJpOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgQ29udmVy dHMgYSBtZWRpYSB0ZXh0IGRldmljZSBwYXRoIG5vZGUgdG8gbWVkaWEgZGV2aWNlIHBhdGggc3Ry dWN0dXJlLg0KPiArDQo+ICsgIEBwYXJhbSBUZXh0RGV2aWNlTm9kZSAgVGhlIGlucHV0IFRleHQg ZGV2aWNlIHBhdGggbm9kZS4NCj4gKw0KPiArICBAcmV0dXJuIEEgcG9pbnRlciB0byBtZWRpYSBk ZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyoqLw0KPiArRUZJX0RFVklDRV9QQVRIX1BS T1RPQ09MICoNCj4gK0RldlBhdGhGcm9tVGV4dE1lZGlhUGF0aCAoDQo+ICsgICBDSEFSMTYgKlRl eHREZXZpY2VOb2RlDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIERldlBhdGhGcm9tVGV4dEdl bmVyaWNQYXRoIChNRURJQV9ERVZJQ0VfUEFUSCwgVGV4dERldmljZU5vZGUpOw0KPiArfQ0KPiAr DQo+ICsvKioNCj4gKyAgQ29udmVydHMgYSB0ZXh0IGRldmljZSBwYXRoIG5vZGUgdG8gSEQgZGV2 aWNlIHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsgIEBwYXJhbSBUZXh0RGV2aWNlTm9kZSAgVGhl IGlucHV0IFRleHQgZGV2aWNlIHBhdGggbm9kZS4NCj4gKw0KPiArICBAcmV0dXJuIEEgcG9pbnRl ciB0byB0aGUgbmV3bHktY3JlYXRlZCBIRCBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4g KyoqLw0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoNCj4gK0RldlBhdGhGcm9tVGV4dEhE ICgNCj4gKyAgIENIQVIxNiAqVGV4dERldmljZU5vZGUNCj4gKyAgKQ0KPiArew0KPiArICBDSEFS MTYgICAgICAgICAgICAgICAgKlBhcnRpdGlvblN0cjsNCj4gKyAgQ0hBUjE2ICAgICAgICAgICAg ICAgICpUeXBlU3RyOw0KPiArICBDSEFSMTYgICAgICAgICAgICAgICAgKlNpZ25hdHVyZVN0cjsN Cj4gKyAgQ0hBUjE2ICAgICAgICAgICAgICAgICpTdGFydFN0cjsNCj4gKyAgQ0hBUjE2ICAgICAg ICAgICAgICAgICpTaXplU3RyOw0KPiArICBVSU5UMzIgICAgICAgICAgICAgICAgU2lnbmF0dXJl MzI7DQo+ICsgIEhBUkREUklWRV9ERVZJQ0VfUEFUSCAqSGQ7DQo+ICsNCj4gKyAgUGFydGl0aW9u U3RyICAgICAgICA9IEdldE5leHRQYXJhbVN0ciAoJlRleHREZXZpY2VOb2RlKTsNCj4gKyAgVHlw ZVN0ciAgICAgICAgICAgICA9IEdldE5leHRQYXJhbVN0ciAoJlRleHREZXZpY2VOb2RlKTsNCj4g KyAgU2lnbmF0dXJlU3RyICAgICAgICA9IEdldE5leHRQYXJhbVN0ciAoJlRleHREZXZpY2VOb2Rl KTsNCj4gKyAgU3RhcnRTdHIgICAgICAgICAgICA9IEdldE5leHRQYXJhbVN0ciAoJlRleHREZXZp Y2VOb2RlKTsNCj4gKyAgU2l6ZVN0ciAgICAgICAgICAgICA9IEdldE5leHRQYXJhbVN0ciAoJlRl eHREZXZpY2VOb2RlKTsNCj4gKyAgSGQgICAgICAgICAgICAgICAgICA9IChIQVJERFJJVkVfREVW SUNFX1BBVEggKikgQ3JlYXRlRGV2aWNlTm9kZSAoDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVESUFfREVWSUNFX1BBVEgsDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVESUFfSEFS RERSSVZFX0RQLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChVSU5UMTYpIHNpemVvZiAoSEFSRERSSVZFX0RFVklDRV9QQVRIKQ0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQo+ICsN Cj4gKyAgSGQtPlBhcnRpdGlvbk51bWJlciA9IChVSU5UMzIpIFN0cnRvaSAoUGFydGl0aW9uU3Ry KTsNCj4gKw0KPiArICBaZXJvTWVtIChIZC0+U2lnbmF0dXJlLCAxNik7DQo+ICsgIEhkLT5NQlJU eXBlID0gKFVJTlQ4KSAwOw0KPiArDQo+ICsgIGlmIChTdHJDbXAgKFR5cGVTdHIsIEwiTUJSIikg PT0gMCkgew0KPiArICAgIEhkLT5TaWduYXR1cmVUeXBlID0gU0lHTkFUVVJFX1RZUEVfTUJSOw0K PiArICAgIEhkLT5NQlJUeXBlICAgICAgID0gMHgwMTsNCj4gKw0KPiArICAgIFNpZ25hdHVyZTMy ICAgICAgID0gKFVJTlQzMikgU3RydG9pIChTaWduYXR1cmVTdHIpOw0KPiArICAgIG1lbWNweSAo SGQtPlNpZ25hdHVyZSwgJlNpZ25hdHVyZTMyLCBzaXplb2YgKFVJTlQzMikpOw0KPiArICB9IGVs c2UgaWYgKFN0ckNtcCAoVHlwZVN0ciwgTCJHUFQiKSA9PSAwKSB7DQo+ICsgICAgSGQtPlNpZ25h dHVyZVR5cGUgPSBTSUdOQVRVUkVfVFlQRV9HVUlEOw0KPiArICAgIEhkLT5NQlJUeXBlICAgICAg ID0gMHgwMjsNCj4gKw0KPiArICAgIFN0clRvR3VpZCAoU2lnbmF0dXJlU3RyLCAoRUZJX0dVSUQg KikgSGQtPlNpZ25hdHVyZSk7DQo+ICsgIH0gZWxzZSB7DQo+ICsgICAgSGQtPlNpZ25hdHVyZVR5 cGUgPSAoVUlOVDgpIFN0cnRvaSAoVHlwZVN0cik7DQo+ICsgIH0NCj4gKw0KPiArICBTdHJ0b2k2 NCAoU3RhcnRTdHIsICZIZC0+UGFydGl0aW9uU3RhcnQpOw0KPiArICBTdHJ0b2k2NCAoU2l6ZVN0 ciwgJkhkLT5QYXJ0aXRpb25TaXplKTsNCj4gKw0KPiArICByZXR1cm4gKEVGSV9ERVZJQ0VfUEFU SF9QUk9UT0NPTCAqKSBIZDsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIENvbnZlcnRzIGEgdGV4 dCBkZXZpY2UgcGF0aCBub2RlIHRvIENEUk9NIGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0K PiArICBAcGFyYW0gVGV4dERldmljZU5vZGUgIFRoZSBpbnB1dCBUZXh0IGRldmljZSBwYXRoIG5v ZGUuDQo+ICsNCj4gKyAgQHJldHVybiBBIHBvaW50ZXIgdG8gdGhlIG5ld2x5LWNyZWF0ZWQgQ0RS T00gZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9ERVZJQ0VfUEFU SF9QUk9UT0NPTCAqDQo+ICtEZXZQYXRoRnJvbVRleHRDRFJPTSAoDQo+ICsgICBDSEFSMTYgKlRl eHREZXZpY2VOb2RlDQo+ICsgICkNCj4gK3sNCj4gKyAgQ0hBUjE2ICAgICAgICAgICAgKkVudHJ5 U3RyOw0KPiArICBDSEFSMTYgICAgICAgICAgICAqU3RhcnRTdHI7DQo+ICsgIENIQVIxNiAgICAg ICAgICAgICpTaXplU3RyOw0KPiArICBDRFJPTV9ERVZJQ0VfUEFUSCAqQ0RST01EZXZQYXRoOw0K PiArDQo+ICsgIEVudHJ5U3RyICAgICAgICAgICAgICA9IEdldE5leHRQYXJhbVN0ciAoJlRleHRE ZXZpY2VOb2RlKTsNCj4gKyAgU3RhcnRTdHIgICAgICAgICAgICAgID0gR2V0TmV4dFBhcmFtU3Ry ICgmVGV4dERldmljZU5vZGUpOw0KPiArICBTaXplU3RyICAgICAgICAgICAgICAgPSBHZXROZXh0 UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsgIENEUk9NRGV2UGF0aCAgICAgICAgICA9 IChDRFJPTV9ERVZJQ0VfUEFUSCAqKSBDcmVhdGVEZXZpY2VOb2RlICgNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVESUFfREVWSUNFX1BBVEgs DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1F RElBX0NEUk9NX0RQLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoVUlOVDE2KSBzaXplb2YgKENEUk9NX0RFVklDRV9QQVRIKQ0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KPiArDQo+ICsg IENEUk9NRGV2UGF0aC0+Qm9vdEVudHJ5ID0gKFVJTlQzMikgU3RydG9pIChFbnRyeVN0cik7DQo+ ICsgIFN0cnRvaTY0IChTdGFydFN0ciwgJkNEUk9NRGV2UGF0aC0+UGFydGl0aW9uU3RhcnQpOw0K PiArICBTdHJ0b2k2NCAoU2l6ZVN0ciwgJkNEUk9NRGV2UGF0aC0+UGFydGl0aW9uU2l6ZSk7DQo+ ICsNCj4gKyAgcmV0dXJuIChFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKikgQ0RST01EZXZQYXRo Ow0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgQ29udmVydHMgYSB0ZXh0IGRldmljZSBwYXRoIG5v ZGUgdG8gVmVuZG9yLWRlZmluZWQgbWVkaWEgZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiArDQo+ ICsgIEBwYXJhbSBUZXh0RGV2aWNlTm9kZSAgVGhlIGlucHV0IFRleHQgZGV2aWNlIHBhdGggbm9k ZS4NCj4gKw0KPiArICBAcmV0dXJuIEEgcG9pbnRlciB0byB0aGUgbmV3bHktY3JlYXRlZCBWZW5k b3ItZGVmaW5lZCBtZWRpYSBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyoqLw0KPiAr RUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoNCj4gK0RldlBhdGhGcm9tVGV4dFZlbk1lZGlhICgN Cj4gKyAgIENIQVIxNiAqVGV4dERldmljZU5vZGUNCj4gKyAgKQ0KPiArew0KPiArICByZXR1cm4g Q29udmVydEZyb21UZXh0VmVuZG9yICgNCj4gKyAgICAgICAgICAgVGV4dERldmljZU5vZGUsDQo+ ICsgICAgICAgICAgIE1FRElBX0RFVklDRV9QQVRILA0KPiArICAgICAgICAgICBNRURJQV9WRU5E T1JfRFANCj4gKyAgICAgICAgICAgKTsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIENvbnZlcnRz IGEgdGV4dCBkZXZpY2UgcGF0aCBub2RlIHRvIEZpbGUgZGV2aWNlIHBhdGggc3RydWN0dXJlLg0K PiArDQo+ICsgIEBwYXJhbSBUZXh0RGV2aWNlTm9kZSAgVGhlIGlucHV0IFRleHQgZGV2aWNlIHBh dGggbm9kZS4NCj4gKw0KPiArICBAcmV0dXJuIEEgcG9pbnRlciB0byB0aGUgbmV3bHktY3JlYXRl ZCBGaWxlIGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArKiovDQo+ICtFRklfREVWSUNF X1BBVEhfUFJPVE9DT0wgKg0KPiArRGV2UGF0aEZyb21UZXh0RmlsZVBhdGggKA0KPiArICAgQ0hB UjE2ICpUZXh0RGV2aWNlTm9kZQ0KPiArICApDQo+ICt7DQo+ICsgIEZJTEVQQVRIX0RFVklDRV9Q QVRIICAqRmlsZTsNCj4gKw0KPiArICBGaWxlID0gKEZJTEVQQVRIX0RFVklDRV9QQVRIICopIENy ZWF0ZURldmljZU5vZGUgKA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TUVESUFfREVWSUNFX1BBVEgsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBNRURJQV9GSUxFUEFUSF9EUCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChVSU5UMTYpIChzaXplb2YgKEZJTEVQQVRIX0RFVklDRV9QQVRIKSArIFN0ckxlbiAoVGV4 dERldmljZU5vZGUpICogMikNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICk7DQo+ICsNCj4gKyAgU3RyQ3B5UyAoRmlsZS0+UGF0aE5hbWUsIFN0ckxlbiAoVGV4dERldmlj ZU5vZGUpICsgMSwgVGV4dERldmljZU5vZGUpOw0KPiArDQo+ICsgIHJldHVybiAoRUZJX0RFVklD RV9QQVRIX1BST1RPQ09MICopIEZpbGU7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBDb252ZXJ0 cyBhIHRleHQgZGV2aWNlIHBhdGggbm9kZSB0byBNZWRpYSBwcm90b2NvbCBkZXZpY2UgcGF0aCBz dHJ1Y3R1cmUuDQo+ICsNCj4gKyAgQHBhcmFtIFRleHREZXZpY2VOb2RlICBUaGUgaW5wdXQgVGV4 dCBkZXZpY2UgcGF0aCBub2RlLg0KPiArDQo+ICsgIEByZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBu ZXdseS1jcmVhdGVkIE1lZGlhIHByb3RvY29sIGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0K PiArKiovDQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0KPiArRGV2UGF0aEZyb21UZXh0 TWVkaWEgKA0KPiArICAgQ0hBUjE2ICpUZXh0RGV2aWNlTm9kZQ0KPiArICApDQo+ICt7DQo+ICsg IENIQVIxNiAgICAgICAgICAgICAgICAgICAgICAqR3VpZFN0cjsNCj4gKyAgTUVESUFfUFJPVE9D T0xfREVWSUNFX1BBVEggICpNZWRpYTsNCj4gKw0KPiArICBHdWlkU3RyID0gR2V0TmV4dFBhcmFt U3RyICgmVGV4dERldmljZU5vZGUpOw0KPiArICBNZWRpYSAgID0gKE1FRElBX1BST1RPQ09MX0RF VklDRV9QQVRIICopIENyZWF0ZURldmljZU5vZGUgKA0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTUVESUFfREVWSUNFX1BBVEgsDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRURJQV9QUk9UT0NPTF9EUCwNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChVSU5UMTYpIHNp emVvZiAoTUVESUFfUFJPVE9DT0xfREVWSUNFX1BBVEgpDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KPiArDQo+ICsgIFN0clRvR3VpZCAoR3VpZFN0 ciwgJk1lZGlhLT5Qcm90b2NvbCk7DQo+ICsNCj4gKyAgcmV0dXJuIChFRklfREVWSUNFX1BBVEhf UFJPVE9DT0wgKikgTWVkaWE7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBDb252ZXJ0cyBhIHRl eHQgZGV2aWNlIHBhdGggbm9kZSB0byBmaXJtd2FyZSB2b2x1bWUgZGV2aWNlIHBhdGggc3RydWN0 dXJlLg0KPiArDQo+ICsgIEBwYXJhbSBUZXh0RGV2aWNlTm9kZSAgVGhlIGlucHV0IFRleHQgZGV2 aWNlIHBhdGggbm9kZS4NCj4gKw0KPiArICBAcmV0dXJuIEEgcG9pbnRlciB0byB0aGUgbmV3bHkt Y3JlYXRlZCBmaXJtd2FyZSB2b2x1bWUgZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsq Ki8NCj4gK0VGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqDQo+ICtEZXZQYXRoRnJvbVRleHRGdiAo DQo+ICsgICBDSEFSMTYgKlRleHREZXZpY2VOb2RlDQo+ICsgICkNCj4gK3sNCj4gKyAgQ0hBUjE2 ICAgICAgICAgICAgICAgICAgICAqR3VpZFN0cjsNCj4gKyAgTUVESUFfRldfVk9MX0RFVklDRV9Q QVRIICAqRnY7DQo+ICsNCj4gKyAgR3VpZFN0ciA9IEdldE5leHRQYXJhbVN0ciAoJlRleHREZXZp Y2VOb2RlKTsNCj4gKyAgRnYgICAgICA9IChNRURJQV9GV19WT0xfREVWSUNFX1BBVEggKikgQ3Jl YXRlRGV2aWNlTm9kZSAoDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTUVESUFfREVWSUNFX1BBVEgsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTUVESUFfUElXR19GV19WT0xfRFAsDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKFVJTlQxNikgc2l6ZW9mIChNRURJQV9GV19WT0xf REVWSUNFX1BBVEgpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKTsNCj4gKw0KPiArICBTdHJUb0d1aWQgKEd1aWRTdHIsICZGdi0+RnZOYW1lKTsNCj4gKw0K PiArICByZXR1cm4gKEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqKSBGdjsNCj4gK30NCj4gKw0K PiArLyoqDQo+ICsgIENvbnZlcnRzIGEgdGV4dCBkZXZpY2UgcGF0aCBub2RlIHRvIGZpcm13YXJl IGZpbGUgZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsgIEBwYXJhbSBUZXh0RGV2aWNl Tm9kZSAgVGhlIGlucHV0IFRleHQgZGV2aWNlIHBhdGggbm9kZS4NCj4gKw0KPiArICBAcmV0dXJu IEEgcG9pbnRlciB0byB0aGUgbmV3bHktY3JlYXRlZCBmaXJtd2FyZSBmaWxlIGRldmljZSBwYXRo IHN0cnVjdHVyZS4NCj4gKw0KPiArKiovDQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0K PiArRGV2UGF0aEZyb21UZXh0RnZGaWxlICgNCj4gKyAgIENIQVIxNiAqVGV4dERldmljZU5vZGUN Cj4gKyAgKQ0KPiArew0KPiArICBDSEFSMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpH dWlkU3RyOw0KPiArICBNRURJQV9GV19WT0xfRklMRVBBVEhfREVWSUNFX1BBVEggICpGdkZpbGU7 DQo+ICsNCj4gKyAgR3VpZFN0ciA9IEdldE5leHRQYXJhbVN0ciAoJlRleHREZXZpY2VOb2RlKTsN Cj4gKyAgRnZGaWxlICA9IChNRURJQV9GV19WT0xfRklMRVBBVEhfREVWSUNFX1BBVEggKikgQ3Jl YXRlRGV2aWNlTm9kZSAoDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTUVESUFfREVWSUNFX1BBVEgsDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVESUFfUElXR19GV19GSUxFX0RQLA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChV SU5UMTYpIHNpemVvZiAoTUVESUFfRldfVk9MX0ZJTEVQQVRIX0RFVklDRV9QQVRIKQ0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQo+ICsN Cj4gKyAgU3RyVG9HdWlkIChHdWlkU3RyLCAmRnZGaWxlLT5GdkZpbGVOYW1lKTsNCj4gKw0KPiAr ICByZXR1cm4gKEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqKSBGdkZpbGU7DQo+ICt9DQo+ICsN Cj4gKy8qKg0KPiArICBDb252ZXJ0cyBhIHRleHQgZGV2aWNlIHBhdGggbm9kZSB0byB0ZXh0IHJl bGF0aXZlIG9mZnNldCBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyAgQHBhcmFtIFRl eHREZXZpY2VOb2RlICBUaGUgaW5wdXQgVGV4dCBkZXZpY2UgcGF0aCBub2RlLg0KPiArDQo+ICsg IEByZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBuZXdseS1jcmVhdGVkIFRleHQgZGV2aWNlIHBhdGgg c3RydWN0dXJlLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqDQo+ ICtEZXZQYXRoRnJvbVRleHRSZWxhdGl2ZU9mZnNldFJhbmdlICgNCj4gKyAgIENIQVIxNiAqVGV4 dERldmljZU5vZGUNCj4gKyAgKQ0KPiArew0KPiArICBDSEFSMTYgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKlN0YXJ0aW5nT2Zmc2V0U3RyOw0KPiArICBDSEFSMTYgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKkVuZGluZ09mZnNldFN0cjsNCj4gKyAgTUVESUFfUkVM QVRJVkVfT0ZGU0VUX1JBTkdFX0RFVklDRV9QQVRIICpPZmZzZXQ7DQo+ICsNCj4gKyAgU3RhcnRp bmdPZmZzZXRTdHIgPSBHZXROZXh0UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsgIEVu ZGluZ09mZnNldFN0ciAgID0gR2V0TmV4dFBhcmFtU3RyICgmVGV4dERldmljZU5vZGUpOw0KPiAr ICBPZmZzZXQgICAgICAgICAgICA9IChNRURJQV9SRUxBVElWRV9PRkZTRVRfUkFOR0VfREVWSUNF X1BBVEggKikgQ3JlYXRlRGV2aWNlTm9kZSAoDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FRElBX0RFVklDRV9Q QVRILA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBNRURJQV9SRUxBVElWRV9PRkZTRVRfUkFOR0VfRFAsDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChVSU5UMTYpIHNpemVvZiAoTUVESUFfUkVMQVRJVkVfT0ZGU0VUX1JBTkdFX0RF VklDRV9QQVRIKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KPiArDQo+ICsgIFN0cnRvaTY0IChTdGFydGlu Z09mZnNldFN0ciwgJk9mZnNldC0+U3RhcnRpbmdPZmZzZXQpOw0KPiArICBTdHJ0b2k2NCAoRW5k aW5nT2Zmc2V0U3RyLCAmT2Zmc2V0LT5FbmRpbmdPZmZzZXQpOw0KPiArDQo+ICsgIHJldHVybiAo RUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICopIE9mZnNldDsNCj4gK30NCj4gKw0KPiArLyoqDQo+ ICsgIENvbnZlcnRzIGEgdGV4dCBkZXZpY2UgcGF0aCBub2RlIHRvIHRleHQgcmFtIGRpc2sgZGV2 aWNlIHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsgIEBwYXJhbSBUZXh0RGV2aWNlTm9kZSAgVGhl IGlucHV0IFRleHQgZGV2aWNlIHBhdGggbm9kZS4NCj4gKw0KPiArICBAcmV0dXJuIEEgcG9pbnRl ciB0byB0aGUgbmV3bHktY3JlYXRlZCBUZXh0IGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0K PiArKiovDQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0KPiArRGV2UGF0aEZyb21UZXh0 UmFtRGlzayAoDQo+ICsgICBDSEFSMTYgKlRleHREZXZpY2VOb2RlDQo+ICsgICkNCj4gK3sNCj4g KyAgQ0hBUjE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpTdGFydGluZ0FkZHJT dHI7DQo+ICsgIENIQVIxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqRW5kaW5n QWRkclN0cjsNCj4gKyAgQ0hBUjE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpU eXBlR3VpZFN0cjsNCj4gKyAgQ0hBUjE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICpJbnN0YW5jZVN0cjsNCj4gKyAgTUVESUFfUkFNX0RJU0tfREVWSUNFX1BBVEggICAgICAgICAg ICAgICpSYW1EaXNrOw0KPiArICBVSU5UNjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgU3RhcnRpbmdBZGRyOw0KPiArICBVSU5UNjQgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgRW5kaW5nQWRkcjsNCj4gKw0KPiArICBTdGFydGluZ0FkZHJTdHIgPSBHZXROZXh0UGFy YW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsgIEVuZGluZ0FkZHJTdHIgICA9IEdldE5leHRQ YXJhbVN0ciAoJlRleHREZXZpY2VOb2RlKTsNCj4gKyAgSW5zdGFuY2VTdHIgICAgID0gR2V0TmV4 dFBhcmFtU3RyICgmVGV4dERldmljZU5vZGUpOw0KPiArICBUeXBlR3VpZFN0ciAgICAgPSBHZXRO ZXh0UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsgIFJhbURpc2sgICAgICAgICA9IChN RURJQV9SQU1fRElTS19ERVZJQ0VfUEFUSCAqKSBDcmVhdGVEZXZpY2VOb2RlICgNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVESUFfREVW SUNFX1BBVEgsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE1FRElBX1JBTV9ESVNLX0RQLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVUlOVDE2KSBzaXplb2YgKE1FRElBX1JBTV9E SVNLX0RFVklDRV9QQVRIKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICApOw0KPiArDQo+ICsgIFN0cnRvaTY0IChTdGFydGluZ0FkZHJTdHIs ICZTdGFydGluZ0FkZHIpOw0KPiArICBXcml0ZVVuYWxpZ25lZDY0ICgoVUlOVDY0ICopICYoUmFt RGlzay0+U3RhcnRpbmdBZGRyWzBdKSwgU3RhcnRpbmdBZGRyKTsNCj4gKyAgU3RydG9pNjQgKEVu ZGluZ0FkZHJTdHIsICZFbmRpbmdBZGRyKTsNCj4gKyAgV3JpdGVVbmFsaWduZWQ2NCAoKFVJTlQ2 NCAqKSAmKFJhbURpc2stPkVuZGluZ0FkZHJbMF0pLCBFbmRpbmdBZGRyKTsNCj4gKyAgUmFtRGlz ay0+SW5zdGFuY2UgPSAoVUlOVDE2KSBTdHJ0b2kgKEluc3RhbmNlU3RyKTsNCj4gKyAgU3RyVG9H dWlkIChUeXBlR3VpZFN0ciwgJlJhbURpc2stPlR5cGVHdWlkKTsNCj4gKw0KPiArICByZXR1cm4g KEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqKSBSYW1EaXNrOw0KPiArfQ0KPiArDQo+ICsvKioN Cj4gKyAgQ29udmVydHMgYSB0ZXh0IGRldmljZSBwYXRoIG5vZGUgdG8gdGV4dCB2aXJ0dWFsIGRp c2sgZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsgIEBwYXJhbSBUZXh0RGV2aWNlTm9k ZSAgVGhlIGlucHV0IFRleHQgZGV2aWNlIHBhdGggbm9kZS4NCj4gKw0KPiArICBAcmV0dXJuIEEg cG9pbnRlciB0byB0aGUgbmV3bHktY3JlYXRlZCBUZXh0IGRldmljZSBwYXRoIHN0cnVjdHVyZS4N Cj4gKw0KPiArKiovDQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0KPiArRGV2UGF0aEZy b21UZXh0VmlydHVhbERpc2sgKA0KPiArICAgQ0hBUjE2ICpUZXh0RGV2aWNlTm9kZQ0KPiArICAp DQo+ICt7DQo+ICsgIENIQVIxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqU3Rh cnRpbmdBZGRyU3RyOw0KPiArICBDSEFSMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKkVuZGluZ0FkZHJTdHI7DQo+ICsgIENIQVIxNiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAqSW5zdGFuY2VTdHI7DQo+ICsgIE1FRElBX1JBTV9ESVNLX0RFVklDRV9QQVRIICAg ICAgICAgICAgICAqUmFtRGlzazsNCj4gKyAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFN0YXJ0aW5nQWRkcjsNCj4gKyAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEVuZGluZ0FkZHI7DQo+ICsNCj4gKyAgU3RhcnRpbmdBZGRyU3RyID0gR2V0 TmV4dFBhcmFtU3RyICgmVGV4dERldmljZU5vZGUpOw0KPiArICBFbmRpbmdBZGRyU3RyICAgPSBH ZXROZXh0UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsgIEluc3RhbmNlU3RyICAgICA9 IEdldE5leHRQYXJhbVN0ciAoJlRleHREZXZpY2VOb2RlKTsNCj4gKw0KPiArICBSYW1EaXNrICAg ICAgICAgPSAoTUVESUFfUkFNX0RJU0tfREVWSUNFX1BBVEggKikgQ3JlYXRlRGV2aWNlTm9kZSAo DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IE1FRElBX0RFVklDRV9QQVRILA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBNRURJQV9SQU1fRElTS19EUCwNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFVJTlQxNikgc2l6ZW9mIChN RURJQV9SQU1fRElTS19ERVZJQ0VfUEFUSCkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCj4gKw0KPiArICBTdHJ0b2k2NCAoU3RhcnRp bmdBZGRyU3RyLCAmU3RhcnRpbmdBZGRyKTsNCj4gKyAgV3JpdGVVbmFsaWduZWQ2NCAoKFVJTlQ2 NCAqKSAmKFJhbURpc2stPlN0YXJ0aW5nQWRkclswXSksIFN0YXJ0aW5nQWRkcik7DQo+ICsgIFN0 cnRvaTY0IChFbmRpbmdBZGRyU3RyLCAmRW5kaW5nQWRkcik7DQo+ICsgIFdyaXRlVW5hbGlnbmVk NjQgKChVSU5UNjQgKikgJihSYW1EaXNrLT5FbmRpbmdBZGRyWzBdKSwgRW5kaW5nQWRkcik7DQo+ ICsgIFJhbURpc2stPkluc3RhbmNlID0gKFVJTlQxNikgU3RydG9pIChJbnN0YW5jZVN0cik7DQo+ ICsgIENvcHlHdWlkICgmUmFtRGlzay0+VHlwZUd1aWQsICZnRWZpVmlydHVhbERpc2tHdWlkKTsN Cj4gKw0KPiArICByZXR1cm4gKEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqKSBSYW1EaXNrOw0K PiArfQ0KPiArDQo+ICsvKioNCj4gKyAgQ29udmVydHMgYSB0ZXh0IGRldmljZSBwYXRoIG5vZGUg dG8gdGV4dCB2aXJ0dWFsIGNkIGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArICBAcGFy YW0gVGV4dERldmljZU5vZGUgIFRoZSBpbnB1dCBUZXh0IGRldmljZSBwYXRoIG5vZGUuDQo+ICsN Cj4gKyAgQHJldHVybiBBIHBvaW50ZXIgdG8gdGhlIG5ld2x5LWNyZWF0ZWQgVGV4dCBkZXZpY2Ug cGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyoqLw0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09M ICoNCj4gK0RldlBhdGhGcm9tVGV4dFZpcnR1YWxDZCAoDQo+ICsgICBDSEFSMTYgKlRleHREZXZp Y2VOb2RlDQo+ICsgICkNCj4gK3sNCj4gKyAgQ0hBUjE2ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICpTdGFydGluZ0FkZHJTdHI7DQo+ICsgIENIQVIxNiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAqRW5kaW5nQWRkclN0cjsNCj4gKyAgQ0hBUjE2ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICpJbnN0YW5jZVN0cjsNCj4gKyAgTUVESUFfUkFNX0RJU0tf REVWSUNFX1BBVEggICAgICAgICAgICAgICpSYW1EaXNrOw0KPiArICBVSU5UNjQgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgU3RhcnRpbmdBZGRyOw0KPiArICBVSU5UNjQgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5kaW5nQWRkcjsNCj4gKw0KPiArICBTdGFydGlu Z0FkZHJTdHIgPSBHZXROZXh0UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsgIEVuZGlu Z0FkZHJTdHIgICA9IEdldE5leHRQYXJhbVN0ciAoJlRleHREZXZpY2VOb2RlKTsNCj4gKyAgSW5z dGFuY2VTdHIgICAgID0gR2V0TmV4dFBhcmFtU3RyICgmVGV4dERldmljZU5vZGUpOw0KPiArDQo+ ICsgIFJhbURpc2sgICAgICAgICA9IChNRURJQV9SQU1fRElTS19ERVZJQ0VfUEFUSCAqKSBDcmVh dGVEZXZpY2VOb2RlICgNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTUVESUFfREVWSUNFX1BBVEgsDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FRElBX1JBTV9ESVNLX0RQLA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVUlO VDE2KSBzaXplb2YgKE1FRElBX1JBTV9ESVNLX0RFVklDRV9QQVRIKQ0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KPiArDQo+ICsgIFN0 cnRvaTY0IChTdGFydGluZ0FkZHJTdHIsICZTdGFydGluZ0FkZHIpOw0KPiArICBXcml0ZVVuYWxp Z25lZDY0ICgoVUlOVDY0ICopICYoUmFtRGlzay0+U3RhcnRpbmdBZGRyWzBdKSwgU3RhcnRpbmdB ZGRyKTsNCj4gKyAgU3RydG9pNjQgKEVuZGluZ0FkZHJTdHIsICZFbmRpbmdBZGRyKTsNCj4gKyAg V3JpdGVVbmFsaWduZWQ2NCAoKFVJTlQ2NCAqKSAmKFJhbURpc2stPkVuZGluZ0FkZHJbMF0pLCBF bmRpbmdBZGRyKTsNCj4gKyAgUmFtRGlzay0+SW5zdGFuY2UgPSAoVUlOVDE2KSBTdHJ0b2kgKElu c3RhbmNlU3RyKTsNCj4gKyAgQ29weUd1aWQgKCZSYW1EaXNrLT5UeXBlR3VpZCwgJmdFZmlWaXJ0 dWFsQ2RHdWlkKTsNCj4gKw0KPiArICByZXR1cm4gKEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAq KSBSYW1EaXNrOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgQ29udmVydHMgYSB0ZXh0IGRldmlj ZSBwYXRoIG5vZGUgdG8gdGV4dCBwZXJzaXN0ZW50IHZpcnR1YWwgZGlzayBkZXZpY2UgcGF0aCBz dHJ1Y3R1cmUuDQo+ICsNCj4gKyAgQHBhcmFtIFRleHREZXZpY2VOb2RlICBUaGUgaW5wdXQgVGV4 dCBkZXZpY2UgcGF0aCBub2RlLg0KPiArDQo+ICsgIEByZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBu ZXdseS1jcmVhdGVkIFRleHQgZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsqKi8NCj4g K0VGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqDQo+ICtEZXZQYXRoRnJvbVRleHRQZXJzaXN0ZW50 VmlydHVhbERpc2sgKA0KPiArICAgQ0hBUjE2ICpUZXh0RGV2aWNlTm9kZQ0KPiArICApDQo+ICt7 DQo+ICsgIENIQVIxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqU3RhcnRpbmdB ZGRyU3RyOw0KPiArICBDSEFSMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKkVu ZGluZ0FkZHJTdHI7DQo+ICsgIENIQVIxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAqSW5zdGFuY2VTdHI7DQo+ICsgIE1FRElBX1JBTV9ESVNLX0RFVklDRV9QQVRIICAgICAgICAg ICAgICAqUmFtRGlzazsNCj4gKyAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFN0YXJ0aW5nQWRkcjsNCj4gKyAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEVuZGluZ0FkZHI7DQo+ICsNCj4gKyAgU3RhcnRpbmdBZGRyU3RyID0gR2V0TmV4dFBh cmFtU3RyICgmVGV4dERldmljZU5vZGUpOw0KPiArICBFbmRpbmdBZGRyU3RyICAgPSBHZXROZXh0 UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsgIEluc3RhbmNlU3RyICAgICA9IEdldE5l eHRQYXJhbVN0ciAoJlRleHREZXZpY2VOb2RlKTsNCj4gKw0KPiArICBSYW1EaXNrICAgICAgICAg PSAoTUVESUFfUkFNX0RJU0tfREVWSUNFX1BBVEggKikgQ3JlYXRlRGV2aWNlTm9kZSAoDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FRElB X0RFVklDRV9QQVRILA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBNRURJQV9SQU1fRElTS19EUCwNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFVJTlQxNikgc2l6ZW9mIChNRURJQV9S QU1fRElTS19ERVZJQ0VfUEFUSCkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKTsNCj4gKw0KPiArICBTdHJ0b2k2NCAoU3RhcnRpbmdBZGRy U3RyLCAmU3RhcnRpbmdBZGRyKTsNCj4gKyAgV3JpdGVVbmFsaWduZWQ2NCAoKFVJTlQ2NCAqKSAm KFJhbURpc2stPlN0YXJ0aW5nQWRkclswXSksIFN0YXJ0aW5nQWRkcik7DQo+ICsgIFN0cnRvaTY0 IChFbmRpbmdBZGRyU3RyLCAmRW5kaW5nQWRkcik7DQo+ICsgIFdyaXRlVW5hbGlnbmVkNjQgKChV SU5UNjQgKikgJihSYW1EaXNrLT5FbmRpbmdBZGRyWzBdKSwgRW5kaW5nQWRkcik7DQo+ICsgIFJh bURpc2stPkluc3RhbmNlID0gKFVJTlQxNikgU3RydG9pIChJbnN0YW5jZVN0cik7DQo+ICsgIENv cHlHdWlkICgmUmFtRGlzay0+VHlwZUd1aWQsICZnRWZpUGVyc2lzdGVudFZpcnR1YWxEaXNrR3Vp ZCk7DQo+ICsNCj4gKyAgcmV0dXJuIChFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKikgUmFtRGlz azsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIENvbnZlcnRzIGEgdGV4dCBkZXZpY2UgcGF0aCBu b2RlIHRvIHRleHQgcGVyc2lzdGVudCB2aXJ0dWFsIGNkIGRldmljZSBwYXRoIHN0cnVjdHVyZS4N Cj4gKw0KPiArICBAcGFyYW0gVGV4dERldmljZU5vZGUgIFRoZSBpbnB1dCBUZXh0IGRldmljZSBw YXRoIG5vZGUuDQo+ICsNCj4gKyAgQHJldHVybiBBIHBvaW50ZXIgdG8gdGhlIG5ld2x5LWNyZWF0 ZWQgVGV4dCBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyoqLw0KPiArRUZJX0RFVklD RV9QQVRIX1BST1RPQ09MICoNCj4gK0RldlBhdGhGcm9tVGV4dFBlcnNpc3RlbnRWaXJ0dWFsQ2Qg KA0KPiArICAgQ0hBUjE2ICpUZXh0RGV2aWNlTm9kZQ0KPiArICApDQo+ICt7DQo+ICsgIENIQVIx NiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqU3RhcnRpbmdBZGRyU3RyOw0KPiAr ICBDSEFSMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKkVuZGluZ0FkZHJTdHI7 DQo+ICsgIENIQVIxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqSW5zdGFuY2VT dHI7DQo+ICsgIE1FRElBX1JBTV9ESVNLX0RFVklDRV9QQVRIICAgICAgICAgICAgICAqUmFtRGlz azsNCj4gKyAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXJ0aW5n QWRkcjsNCj4gKyAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVuZGlu Z0FkZHI7DQo+ICsNCj4gKyAgU3RhcnRpbmdBZGRyU3RyID0gR2V0TmV4dFBhcmFtU3RyICgmVGV4 dERldmljZU5vZGUpOw0KPiArICBFbmRpbmdBZGRyU3RyICAgPSBHZXROZXh0UGFyYW1TdHIgKCZU ZXh0RGV2aWNlTm9kZSk7DQo+ICsgIEluc3RhbmNlU3RyICAgICA9IEdldE5leHRQYXJhbVN0ciAo JlRleHREZXZpY2VOb2RlKTsNCj4gKw0KPiArICBSYW1EaXNrICAgICAgICAgPSAoTUVESUFfUkFN X0RJU0tfREVWSUNFX1BBVEggKikgQ3JlYXRlRGV2aWNlTm9kZSAoDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FRElBX0RFVklDRV9QQVRI LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBNRURJQV9SQU1fRElTS19EUCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKFVJTlQxNikgc2l6ZW9mIChNRURJQV9SQU1fRElTS19ERVZJ Q0VfUEFUSCkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKTsNCj4gKw0KPiArICBTdHJ0b2k2NCAoU3RhcnRpbmdBZGRyU3RyLCAmU3RhcnRp bmdBZGRyKTsNCj4gKyAgV3JpdGVVbmFsaWduZWQ2NCAoKFVJTlQ2NCAqKSAmKFJhbURpc2stPlN0 YXJ0aW5nQWRkclswXSksIFN0YXJ0aW5nQWRkcik7DQo+ICsgIFN0cnRvaTY0IChFbmRpbmdBZGRy U3RyLCAmRW5kaW5nQWRkcik7DQo+ICsgIFdyaXRlVW5hbGlnbmVkNjQgKChVSU5UNjQgKikgJihS YW1EaXNrLT5FbmRpbmdBZGRyWzBdKSwgRW5kaW5nQWRkcik7DQo+ICsgIFJhbURpc2stPkluc3Rh bmNlID0gKFVJTlQxNikgU3RydG9pIChJbnN0YW5jZVN0cik7DQo+ICsgIENvcHlHdWlkICgmUmFt RGlzay0+VHlwZUd1aWQsICZnRWZpUGVyc2lzdGVudFZpcnR1YWxDZEd1aWQpOw0KPiArDQo+ICsg IHJldHVybiAoRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICopIFJhbURpc2s7DQo+ICt9DQo+ICsN Cj4gKy8qKg0KPiArICBDb252ZXJ0cyBhIEJCUyB0ZXh0IGRldmljZSBwYXRoIG5vZGUgdG8gQkJT IGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArICBAcGFyYW0gVGV4dERldmljZU5vZGUg IFRoZSBpbnB1dCBUZXh0IGRldmljZSBwYXRoIG5vZGUuDQo+ICsNCj4gKyAgQHJldHVybiBBIHBv aW50ZXIgdG8gQkJTIGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArKiovDQo+ICtFRklf REVWSUNFX1BBVEhfUFJPVE9DT0wgKg0KPiArRGV2UGF0aEZyb21UZXh0QmJzUGF0aCAoDQo+ICsg ICBDSEFSMTYgKlRleHREZXZpY2VOb2RlDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIERldlBh dGhGcm9tVGV4dEdlbmVyaWNQYXRoIChCQlNfREVWSUNFX1BBVEgsIFRleHREZXZpY2VOb2RlKTsN Cj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIENvbnZlcnRzIGEgdGV4dCBkZXZpY2UgcGF0aCBub2Rl IHRvIEJJT1MgQm9vdCBTcGVjaWZpY2F0aW9uIGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0K PiArICBAcGFyYW0gVGV4dERldmljZU5vZGUgIFRoZSBpbnB1dCBUZXh0IGRldmljZSBwYXRoIG5v ZGUuDQo+ICsNCj4gKyAgQHJldHVybiBBIHBvaW50ZXIgdG8gdGhlIG5ld2x5LWNyZWF0ZWQgQklP UyBCb290IFNwZWNpZmljYXRpb24gZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsqKi8N Cj4gK0VGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqDQo+ICtEZXZQYXRoRnJvbVRleHRCQlMgKA0K PiArICAgQ0hBUjE2ICpUZXh0RGV2aWNlTm9kZQ0KPiArICApDQo+ICt7DQo+ICsgIENIQVIxNiAg ICAgICAgICAgICAgKlR5cGVTdHI7DQo+ICsgIENIQVIxNiAgICAgICAgICAgICAgKklkU3RyOw0K PiArICBDSEFSMTYgICAgICAgICAgICAgICpGbGFnc1N0cjsNCj4gKyAgQ0hBUjggICAgICAgICAg ICAgICAqQXNjaWlTdHI7DQo+ICsgIEJCU19CQlNfREVWSUNFX1BBVEggKkJiczsNCj4gKw0KPiAr ICBUeXBlU3RyICAgPSBHZXROZXh0UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsgIElk U3RyICAgICA9IEdldE5leHRQYXJhbVN0ciAoJlRleHREZXZpY2VOb2RlKTsNCj4gKyAgRmxhZ3NT dHIgID0gR2V0TmV4dFBhcmFtU3RyICgmVGV4dERldmljZU5vZGUpOw0KPiArICBCYnMgICAgICAg PSAoQkJTX0JCU19ERVZJQ0VfUEFUSCAqKSBDcmVhdGVEZXZpY2VOb2RlICgNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCQlNfREVWSUNFX1BBVEgsDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQkJTX0JCU19EUCwNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVUlOVDE2KSAoc2l6ZW9mIChCQlNf QkJTX0RFVklDRV9QQVRIKSArIFN0ckxlbiAoSWRTdHIpKQ0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICk7DQo+ICsNCj4gKyAgaWYgKFN0ckNtcCAoVHlwZVN0ciwg TCJGbG9wcHkiKSA9PSAwKSB7DQo+ICsgICAgQmJzLT5EZXZpY2VUeXBlID0gQkJTX1RZUEVfRkxP UFBZOw0KPiArICB9IGVsc2UgaWYgKFN0ckNtcCAoVHlwZVN0ciwgTCJIRCIpID09IDApIHsNCj4g KyAgICBCYnMtPkRldmljZVR5cGUgPSBCQlNfVFlQRV9IQVJERFJJVkU7DQo+ICsgIH0gZWxzZSBp ZiAoU3RyQ21wIChUeXBlU3RyLCBMIkNEUk9NIikgPT0gMCkgew0KPiArICAgIEJicy0+RGV2aWNl VHlwZSA9IEJCU19UWVBFX0NEUk9NOw0KPiArICB9IGVsc2UgaWYgKFN0ckNtcCAoVHlwZVN0ciwg TCJQQ01DSUEiKSA9PSAwKSB7DQo+ICsgICAgQmJzLT5EZXZpY2VUeXBlID0gQkJTX1RZUEVfUENN Q0lBOw0KPiArICB9IGVsc2UgaWYgKFN0ckNtcCAoVHlwZVN0ciwgTCJVU0IiKSA9PSAwKSB7DQo+ ICsgICAgQmJzLT5EZXZpY2VUeXBlID0gQkJTX1RZUEVfVVNCOw0KPiArICB9IGVsc2UgaWYgKFN0 ckNtcCAoVHlwZVN0ciwgTCJOZXR3b3JrIikgPT0gMCkgew0KPiArICAgIEJicy0+RGV2aWNlVHlw ZSA9IEJCU19UWVBFX0VNQkVEREVEX05FVFdPUks7DQo+ICsgIH0gZWxzZSB7DQo+ICsgICAgQmJz LT5EZXZpY2VUeXBlID0gKFVJTlQxNikgU3RydG9pIChUeXBlU3RyKTsNCj4gKyAgfQ0KPiArDQo+ ICsgIEFzY2lpU3RyID0gQmJzLT5TdHJpbmc7DQo+ICsgIFN0clRvQXNjaWkgKElkU3RyLCAmQXNj aWlTdHIpOw0KPiArDQo+ICsgIEJicy0+U3RhdHVzRmxhZyA9IChVSU5UMTYpIFN0cnRvaSAoRmxh Z3NTdHIpOw0KPiArDQo+ICsgIHJldHVybiAoRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICopIEJi czsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIENvbnZlcnRzIGEgdGV4dCBkZXZpY2UgcGF0aCBu b2RlIHRvIFNBVEEgZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsgIEBwYXJhbSBUZXh0 RGV2aWNlTm9kZSAgVGhlIGlucHV0IFRleHQgZGV2aWNlIHBhdGggbm9kZS4NCj4gKw0KPiArICBA cmV0dXJuIEEgcG9pbnRlciB0byB0aGUgbmV3bHktY3JlYXRlZCBTQVRBIGRldmljZSBwYXRoIHN0 cnVjdHVyZS4NCj4gKw0KPiArKiovDQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0KPiAr RGV2UGF0aEZyb21UZXh0U2F0YSAoDQo+ICsgICBDSEFSMTYgKlRleHREZXZpY2VOb2RlDQo+ICsg ICkNCj4gK3sNCj4gKyAgU0FUQV9ERVZJQ0VfUEFUSCAqU2F0YTsNCj4gKyAgQ0hBUjE2ICAgICAg ICAgICAqUGFyYW0xOw0KPiArICBDSEFSMTYgICAgICAgICAgICpQYXJhbTI7DQo+ICsgIENIQVIx NiAgICAgICAgICAgKlBhcmFtMzsNCj4gKw0KPiArICBQYXJhbTEgPSBHZXROZXh0UGFyYW1TdHIg KCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsgIFBhcmFtMiA9IEdldE5leHRQYXJhbVN0ciAoJlRleHRE ZXZpY2VOb2RlKTsNCj4gKyAgUGFyYW0zID0gR2V0TmV4dFBhcmFtU3RyICgmVGV4dERldmljZU5v ZGUpOw0KPiArDQo+ICsgIFNhdGEgPSAoU0FUQV9ERVZJQ0VfUEFUSCAqKSBDcmVhdGVEZXZpY2VO b2RlICgNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVTU0FHSU5HX0RFVklD RV9QQVRILA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNU0dfU0FUQV9EUCwN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFVJTlQxNikgc2l6ZW9mIChTQVRB X0RFVklDRV9QQVRIKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KPiAr ICBTYXRhLT5IQkFQb3J0TnVtYmVyICAgICAgICAgICAgPSAoVUlOVDE2KSBTdHJ0b2kgKFBhcmFt MSk7DQo+ICsgIFNhdGEtPlBvcnRNdWx0aXBsaWVyUG9ydE51bWJlciA9IChVSU5UMTYpIFN0cnRv aSAoUGFyYW0yKTsNCj4gKyAgU2F0YS0+THVuICAgICAgICAgICAgICAgICAgICAgID0gKFVJTlQx NikgU3RydG9pIChQYXJhbTMpOw0KPiArDQo+ICsgIHJldHVybiAoRUZJX0RFVklDRV9QQVRIX1BS T1RPQ09MICopIFNhdGE7DQo+ICt9DQo+ICsNCj4gK0RFVklDRV9QQVRIX0ZST01fVEVYVF9UQUJM RSBtVWVmaURldmljZVBhdGhMaWJEZXZQYXRoRnJvbVRleHRUYWJsZVtdID0gew0KPiArICB7TCJQ YXRoIiwgICAgICAgICAgICAgICAgICAgIERldlBhdGhGcm9tVGV4dFBhdGggICAgICAgICAgICAg ICAgICAgIH0sDQo+ICsNCj4gKyAge0wiSGFyZHdhcmVQYXRoIiwgICAgICAgICAgICBEZXZQYXRo RnJvbVRleHRIYXJkd2FyZVBhdGggICAgICAgICAgICB9LA0KPiArICB7TCJQY2kiLCAgICAgICAg ICAgICAgICAgICAgIERldlBhdGhGcm9tVGV4dFBjaSAgICAgICAgICAgICAgICAgICAgIH0sDQo+ ICsgIHtMIlBjQ2FyZCIsICAgICAgICAgICAgICAgICAgRGV2UGF0aEZyb21UZXh0UGNDYXJkICAg ICAgICAgICAgICAgICAgfSwNCj4gKyAge0wiTWVtb3J5TWFwcGVkIiwgICAgICAgICAgICBEZXZQ YXRoRnJvbVRleHRNZW1vcnlNYXBwZWQgICAgICAgICAgICB9LA0KPiArICB7TCJWZW5IdyIsICAg ICAgICAgICAgICAgICAgIERldlBhdGhGcm9tVGV4dFZlbkh3ICAgICAgICAgICAgICAgICAgIH0s DQo+ICsgIHtMIkN0cmwiLCAgICAgICAgICAgICAgICAgICAgRGV2UGF0aEZyb21UZXh0Q3RybCAg ICAgICAgICAgICAgICAgICAgfSwNCj4gKyAge0wiQk1DIiwgICAgICAgICAgICAgICAgICAgICBE ZXZQYXRoRnJvbVRleHRCbWMgICAgICAgICAgICAgICAgICAgICB9LA0KPiArDQo+ICsgIHtMIkFj cGlQYXRoIiwgICAgICAgICAgICAgICAgRGV2UGF0aEZyb21UZXh0QWNwaVBhdGggICAgICAgICAg ICAgICAgfSwNCj4gKyAge0wiQWNwaSIsICAgICAgICAgICAgICAgICAgICBEZXZQYXRoRnJvbVRl eHRBY3BpICAgICAgICAgICAgICAgICAgICB9LA0KPiArICB7TCJQY2lSb290IiwgICAgICAgICAg ICAgICAgIERldlBhdGhGcm9tVGV4dFBjaVJvb3QgICAgICAgICAgICAgICAgIH0sDQo+ICsgIHtM IlBjaWVSb290IiwgICAgICAgICAgICAgICAgRGV2UGF0aEZyb21UZXh0UGNpZVJvb3QgICAgICAg ICAgICAgICAgfSwNCj4gKyAge0wiRmxvcHB5IiwgICAgICAgICAgICAgICAgICBEZXZQYXRoRnJv bVRleHRGbG9wcHkgICAgICAgICAgICAgICAgICB9LA0KPiArICB7TCJLZXlib2FyZCIsICAgICAg ICAgICAgICAgIERldlBhdGhGcm9tVGV4dEtleWJvYXJkICAgICAgICAgICAgICAgIH0sDQo+ICsg IHtMIlNlcmlhbCIsICAgICAgICAgICAgICAgICAgRGV2UGF0aEZyb21UZXh0U2VyaWFsICAgICAg ICAgICAgICAgICAgfSwNCj4gKyAge0wiUGFyYWxsZWxQb3J0IiwgICAgICAgICAgICBEZXZQYXRo RnJvbVRleHRQYXJhbGxlbFBvcnQgICAgICAgICAgICB9LA0KPiArICB7TCJBY3BpRXgiLCAgICAg ICAgICAgICAgICAgIERldlBhdGhGcm9tVGV4dEFjcGlFeCAgICAgICAgICAgICAgICAgIH0sDQo+ ICsgIHtMIkFjcGlFeHAiLCAgICAgICAgICAgICAgICAgRGV2UGF0aEZyb21UZXh0QWNwaUV4cCAg ICAgICAgICAgICAgICAgfSwNCj4gKyAge0wiQWNwaUFkciIsICAgICAgICAgICAgICAgICBEZXZQ YXRoRnJvbVRleHRBY3BpQWRyICAgICAgICAgICAgICAgICB9LA0KPiArDQo+ICsgIHtMIk1zZyIs ICAgICAgICAgICAgICAgICAgICAgRGV2UGF0aEZyb21UZXh0TXNnICAgICAgICAgICAgICAgICAg ICAgfSwNCj4gKyAge0wiQXRhIiwgICAgICAgICAgICAgICAgICAgICBEZXZQYXRoRnJvbVRleHRB dGEgICAgICAgICAgICAgICAgICAgICB9LA0KPiArICB7TCJTY3NpIiwgICAgICAgICAgICAgICAg ICAgIERldlBhdGhGcm9tVGV4dFNjc2kgICAgICAgICAgICAgICAgICAgIH0sDQo+ICsgIHtMIkZp YnJlIiwgICAgICAgICAgICAgICAgICAgRGV2UGF0aEZyb21UZXh0RmlicmUgICAgICAgICAgICAg ICAgICAgfSwNCj4gKyAge0wiRmlicmVFeCIsICAgICAgICAgICAgICAgICBEZXZQYXRoRnJvbVRl eHRGaWJyZUV4ICAgICAgICAgICAgICAgICB9LA0KPiArICB7TCJJMTM5NCIsICAgICAgICAgICAg ICAgICAgIERldlBhdGhGcm9tVGV4dDEzOTQgICAgICAgICAgICAgICAgICAgIH0sDQo+ICsgIHtM IlVTQiIsICAgICAgICAgICAgICAgICAgICAgRGV2UGF0aEZyb21UZXh0VXNiICAgICAgICAgICAg ICAgICAgICAgfSwNCj4gKyAge0wiSTJPIiwgICAgICAgICAgICAgICAgICAgICBEZXZQYXRoRnJv bVRleHRJMk8gICAgICAgICAgICAgICAgICAgICB9LA0KPiArICB7TCJJbmZpbmliYW5kIiwgICAg ICAgICAgICAgIERldlBhdGhGcm9tVGV4dEluZmluaWJhbmQgICAgICAgICAgICAgIH0sDQo+ICsg IHtMIlZlbk1zZyIsICAgICAgICAgICAgICAgICAgRGV2UGF0aEZyb21UZXh0VmVuTXNnICAgICAg ICAgICAgICAgICAgfSwNCj4gKyAge0wiVmVuUGNBbnNpIiwgICAgICAgICAgICAgICBEZXZQYXRo RnJvbVRleHRWZW5QY0Fuc2kgICAgICAgICAgICAgICB9LA0KPiArICB7TCJWZW5WdDEwMCIsICAg ICAgICAgICAgICAgIERldlBhdGhGcm9tVGV4dFZlblZ0MTAwICAgICAgICAgICAgICAgIH0sDQo+ ICsgIHtMIlZlblZ0MTAwUGx1cyIsICAgICAgICAgICAgRGV2UGF0aEZyb21UZXh0VmVuVnQxMDBQ bHVzICAgICAgICAgICAgfSwNCj4gKyAge0wiVmVuVXRmOCIsICAgICAgICAgICAgICAgICBEZXZQ YXRoRnJvbVRleHRWZW5VdGY4ICAgICAgICAgICAgICAgICB9LA0KPiArICB7TCJVYXJ0Rmxvd0N0 cmwiLCAgICAgICAgICAgIERldlBhdGhGcm9tVGV4dFVhcnRGbG93Q3RybCAgICAgICAgICAgIH0s DQo+ICsgIHtMIlNBUyIsICAgICAgICAgICAgICAgICAgICAgRGV2UGF0aEZyb21UZXh0U0FTICAg ICAgICAgICAgICAgICAgICAgfSwNCj4gKyAge0wiU2FzRXgiLCAgICAgICAgICAgICAgICAgICBE ZXZQYXRoRnJvbVRleHRTYXNFeCAgICAgICAgICAgICAgICAgICB9LA0KPiArICB7TCJOVk1lIiwg ICAgICAgICAgICAgICAgICAgIERldlBhdGhGcm9tVGV4dE5WTWUgICAgICAgICAgICAgICAgICAg IH0sDQo+ICsgIHtMIlVGUyIsICAgICAgICAgICAgICAgICAgICAgRGV2UGF0aEZyb21UZXh0VWZz ICAgICAgICAgICAgICAgICAgICAgfSwNCj4gKyAge0wiU0QiLCAgICAgICAgICAgICAgICAgICAg ICBEZXZQYXRoRnJvbVRleHRTZCAgICAgICAgICAgICAgICAgICAgICB9LA0KPiArICB7TCJlTU1D IiwgICAgICAgICAgICAgICAgICAgIERldlBhdGhGcm9tVGV4dEVtbWMgICAgICAgICAgICAgICAg ICAgIH0sDQo+ICsgIHtMIkRlYnVnUG9ydCIsICAgICAgICAgICAgICAgRGV2UGF0aEZyb21UZXh0 RGVidWdQb3J0ICAgICAgICAgICAgICAgfSwNCj4gKyAge0wiTUFDIiwgICAgICAgICAgICAgICAg ICAgICBEZXZQYXRoRnJvbVRleHRNQUMgICAgICAgICAgICAgICAgICAgICB9LA0KPiArICB7TCJJ UHY0IiwgICAgICAgICAgICAgICAgICAgIERldlBhdGhGcm9tVGV4dElQdjQgICAgICAgICAgICAg ICAgICAgIH0sDQo+ICsgIHtMIklQdjYiLCAgICAgICAgICAgICAgICAgICAgRGV2UGF0aEZyb21U ZXh0SVB2NiAgICAgICAgICAgICAgICAgICAgfSwNCj4gKyAge0wiVWFydCIsICAgICAgICAgICAg ICAgICAgICBEZXZQYXRoRnJvbVRleHRVYXJ0ICAgICAgICAgICAgICAgICAgICB9LA0KPiArICB7 TCJVc2JDbGFzcyIsICAgICAgICAgICAgICAgIERldlBhdGhGcm9tVGV4dFVzYkNsYXNzICAgICAg ICAgICAgICAgIH0sDQo+ICsgIHtMIlVzYkF1ZGlvIiwgICAgICAgICAgICAgICAgRGV2UGF0aEZy b21UZXh0VXNiQXVkaW8gICAgICAgICAgICAgICAgfSwNCj4gKyAge0wiVXNiQ0RDQ29udHJvbCIs ICAgICAgICAgICBEZXZQYXRoRnJvbVRleHRVc2JDRENDb250cm9sICAgICAgICAgICB9LA0KPiAr ICB7TCJVc2JISUQiLCAgICAgICAgICAgICAgICAgIERldlBhdGhGcm9tVGV4dFVzYkhJRCAgICAg ICAgICAgICAgICAgIH0sDQo+ICsgIHtMIlVzYkltYWdlIiwgICAgICAgICAgICAgICAgRGV2UGF0 aEZyb21UZXh0VXNiSW1hZ2UgICAgICAgICAgICAgICAgfSwNCj4gKyAge0wiVXNiUHJpbnRlciIs ICAgICAgICAgICAgICBEZXZQYXRoRnJvbVRleHRVc2JQcmludGVyICAgICAgICAgICAgICB9LA0K PiArICB7TCJVc2JNYXNzU3RvcmFnZSIsICAgICAgICAgIERldlBhdGhGcm9tVGV4dFVzYk1hc3NT dG9yYWdlICAgICAgICAgIH0sDQo+ICsgIHtMIlVzYkh1YiIsICAgICAgICAgICAgICAgICAgRGV2 UGF0aEZyb21UZXh0VXNiSHViICAgICAgICAgICAgICAgICAgfSwNCj4gKyAge0wiVXNiQ0RDRGF0 YSIsICAgICAgICAgICAgICBEZXZQYXRoRnJvbVRleHRVc2JDRENEYXRhICAgICAgICAgICAgICB9 LA0KPiArICB7TCJVc2JTbWFydENhcmQiLCAgICAgICAgICAgIERldlBhdGhGcm9tVGV4dFVzYlNt YXJ0Q2FyZCAgICAgICAgICAgIH0sDQo+ICsgIHtMIlVzYlZpZGVvIiwgICAgICAgICAgICAgICAg RGV2UGF0aEZyb21UZXh0VXNiVmlkZW8gICAgICAgICAgICAgICAgfSwNCj4gKyAge0wiVXNiRGlh Z25vc3RpYyIsICAgICAgICAgICBEZXZQYXRoRnJvbVRleHRVc2JEaWFnbm9zdGljICAgICAgICAg ICB9LA0KPiArICB7TCJVc2JXaXJlbGVzcyIsICAgICAgICAgICAgIERldlBhdGhGcm9tVGV4dFVz YldpcmVsZXNzICAgICAgICAgICAgIH0sDQo+ICsgIHtMIlVzYkRldmljZUZpcm13YXJlVXBkYXRl IiwgRGV2UGF0aEZyb21UZXh0VXNiRGV2aWNlRmlybXdhcmVVcGRhdGUgfSwNCj4gKyAge0wiVXNi SXJkYUJyaWRnZSIsICAgICAgICAgICBEZXZQYXRoRnJvbVRleHRVc2JJcmRhQnJpZGdlICAgICAg ICAgICB9LA0KPiArICB7TCJVc2JUZXN0QW5kTWVhc3VyZW1lbnQiLCAgIERldlBhdGhGcm9tVGV4 dFVzYlRlc3RBbmRNZWFzdXJlbWVudCAgIH0sDQo+ICsgIHtMIlVzYld3aWQiLCAgICAgICAgICAg ICAgICAgRGV2UGF0aEZyb21UZXh0VXNiV3dpZCAgICAgICAgICAgICAgICAgfSwNCj4gKyAge0wi VW5pdCIsICAgICAgICAgICAgICAgICAgICBEZXZQYXRoRnJvbVRleHRVbml0ICAgICAgICAgICAg ICAgICAgICB9LA0KPiArICB7TCJpU0NTSSIsICAgICAgICAgICAgICAgICAgIERldlBhdGhGcm9t VGV4dGlTQ1NJICAgICAgICAgICAgICAgICAgIH0sDQo+ICsgIHtMIlZsYW4iLCAgICAgICAgICAg ICAgICAgICAgRGV2UGF0aEZyb21UZXh0VmxhbiAgICAgICAgICAgICAgICAgICAgfSwNCj4gKyAg e0wiVXJpIiwgICAgICAgICAgICAgICAgICAgICBEZXZQYXRoRnJvbVRleHRVcmkgICAgICAgICAg ICAgICAgICAgICB9LA0KPiArICB7TCJCbHVldG9vdGgiLCAgICAgICAgICAgICAgIERldlBhdGhG cm9tVGV4dEJsdWV0b290aCAgICAgICAgICAgICAgIH0sDQo+ICsgIHtMIldpLUZpIiwgICAgICAg ICAgICAgICAgICAgRGV2UGF0aEZyb21UZXh0V2lGaSAgICAgICAgICAgICAgICAgICAgfSwNCj4g KyAge0wiTWVkaWFQYXRoIiwgICAgICAgICAgICAgICBEZXZQYXRoRnJvbVRleHRNZWRpYVBhdGgg ICAgICAgICAgICAgICB9LA0KPiArICB7TCJIRCIsICAgICAgICAgICAgICAgICAgICAgIERldlBh dGhGcm9tVGV4dEhEICAgICAgICAgICAgICAgICAgICAgIH0sDQo+ICsgIHtMIkNEUk9NIiwgICAg ICAgICAgICAgICAgICAgRGV2UGF0aEZyb21UZXh0Q0RST00gICAgICAgICAgICAgICAgICAgfSwN Cj4gKyAge0wiVmVuTWVkaWEiLCAgICAgICAgICAgICAgICBEZXZQYXRoRnJvbVRleHRWZW5NZWRp YSAgICAgICAgICAgICAgICB9LA0KPiArICB7TCJNZWRpYSIsICAgICAgICAgICAgICAgICAgIERl dlBhdGhGcm9tVGV4dE1lZGlhICAgICAgICAgICAgICAgICAgIH0sDQo+ICsgIHtMIkZ2IiwgICAg ICAgICAgICAgICAgICAgICAgRGV2UGF0aEZyb21UZXh0RnYgICAgICAgICAgICAgICAgICAgICAg fSwNCj4gKyAge0wiRnZGaWxlIiwgICAgICAgICAgICAgICAgICBEZXZQYXRoRnJvbVRleHRGdkZp bGUgICAgICAgICAgICAgICAgICB9LA0KPiArICB7TCJPZmZzZXQiLCAgICAgICAgICAgICAgICAg IERldlBhdGhGcm9tVGV4dFJlbGF0aXZlT2Zmc2V0UmFuZ2UgICAgIH0sDQo+ICsgIHtMIlJhbURp c2siLCAgICAgICAgICAgICAgICAgRGV2UGF0aEZyb21UZXh0UmFtRGlzayAgICAgICAgICAgICAg ICAgfSwNCj4gKyAge0wiVmlydHVhbERpc2siLCAgICAgICAgICAgICBEZXZQYXRoRnJvbVRleHRW aXJ0dWFsRGlzayAgICAgICAgICAgICB9LA0KPiArICB7TCJWaXJ0dWFsQ0QiLCAgICAgICAgICAg ICAgIERldlBhdGhGcm9tVGV4dFZpcnR1YWxDZCAgICAgICAgICAgICAgIH0sDQo+ICsgIHtMIlBl cnNpc3RlbnRWaXJ0dWFsRGlzayIsICAgRGV2UGF0aEZyb21UZXh0UGVyc2lzdGVudFZpcnR1YWxE aXNrICAgfSwNCj4gKyAge0wiUGVyc2lzdGVudFZpcnR1YWxDRCIsICAgICBEZXZQYXRoRnJvbVRl eHRQZXJzaXN0ZW50VmlydHVhbENkICAgICB9LA0KPiArDQo+ICsgIHtMIkJic1BhdGgiLCAgICAg ICAgICAgICAgICAgRGV2UGF0aEZyb21UZXh0QmJzUGF0aCAgICAgICAgICAgICAgICAgfSwNCj4g KyAge0wiQkJTIiwgICAgICAgICAgICAgICAgICAgICBEZXZQYXRoRnJvbVRleHRCQlMgICAgICAg ICAgICAgICAgICAgICB9LA0KPiArICB7TCJTYXRhIiwgICAgICAgICAgICAgICAgICAgIERldlBh dGhGcm9tVGV4dFNhdGEgICAgICAgICAgICAgICAgICAgIH0sDQo+ICsgIHtOVUxMLCBOVUxMfQ0K PiArfTsNCj4gKw0KPiArLyoqDQo+ICsgIENvbnZlcnQgdGV4dCB0byB0aGUgYmluYXJ5IHJlcHJl c2VudGF0aW9uIG9mIGEgZGV2aWNlIG5vZGUuDQo+ICsNCj4gKyAgQHBhcmFtIFRleHREZXZpY2VO b2RlICBUZXh0RGV2aWNlTm9kZSBwb2ludHMgdG8gdGhlIHRleHQgcmVwcmVzZW50YXRpb24gb2Yg YSBkZXZpY2UNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLiBDb252ZXJzaW9uIHN0 YXJ0cyB3aXRoIHRoZSBmaXJzdCBjaGFyYWN0ZXIgYW5kIGNvbnRpbnVlcw0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgIHVudGlsIHRoZSBmaXJzdCBub24tZGV2aWNlIG5vZGUgY2hhcmFjdGVy Lg0KPiArDQo+ICsgIEByZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBFRkkgZGV2aWNlIG5vZGUgb3Ig TlVMTCBpZiBUZXh0RGV2aWNlTm9kZSBpcyBOVUxMIG9yIHRoZXJlIHdhcw0KPiArICAgICAgICAg IGluc3VmZmljaWVudCBtZW1vcnkgb3IgdGV4dCB1bnN1cHBvcnRlZC4NCj4gKw0KPiArKiovDQo+ ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0KPiArVWVmaURldmljZVBhdGhMaWJDb252ZXJ0 VGV4dFRvRGV2aWNlTm9kZSAoDQo+ICsgICBDT05TVCBDSEFSMTYgKlRleHREZXZpY2VOb2RlDQo+ ICsgICkNCj4gK3sNCj4gKyAgREVWSUNFX1BBVEhfRlJPTV9URVhUICAgIEZyb21UZXh0Ow0KPiAr ICBDSEFSMTYgICAgICAgICAgICAgICAgICAgKlBhcmFtU3RyOw0KPiArICBFRklfREVWSUNFX1BB VEhfUFJPVE9DT0wgKkRldmljZU5vZGU7DQo+ICsgIENIQVIxNiAgICAgICAgICAgICAgICAgICAq RGV2aWNlTm9kZVN0cjsNCj4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgIEluZGV4Ow0KPiAr DQo+ICsgIGlmICgoVGV4dERldmljZU5vZGUgPT0gTlVMTCkgfHwgKElTX05VTEwgKCpUZXh0RGV2 aWNlTm9kZSkpKSB7DQo+ICsgICAgcmV0dXJuIE5VTEw7DQo+ICsgIH0NCj4gKw0KPiArICBQYXJh bVN0ciAgICAgID0gTlVMTDsNCj4gKyAgRnJvbVRleHQgICAgICA9IE5VTEw7DQo+ICsgIERldmlj ZU5vZGVTdHIgPSBVZWZpRGV2aWNlUGF0aExpYlN0ckR1cGxpY2F0ZSAoVGV4dERldmljZU5vZGUp Ow0KPiArICBBU1NFUlQgKERldmljZU5vZGVTdHIgIT0gTlVMTCk7DQo+ICsNCj4gKyAgZm9yIChJ bmRleCA9IDA7IG1VZWZpRGV2aWNlUGF0aExpYkRldlBhdGhGcm9tVGV4dFRhYmxlW0luZGV4XS5G dW5jdGlvbiAhPSBOVUxMOyBJbmRleCsrKSB7DQo+ICsgICAgUGFyYW1TdHIgPSBHZXRQYXJhbUJ5 Tm9kZU5hbWUgKERldmljZU5vZGVTdHIsIG1VZWZpRGV2aWNlUGF0aExpYkRldlBhdGhGcm9tVGV4 dFRhYmxlW0luZGV4XS5EZXZpY2VQYXRoTm9kZVRleHQpOw0KPiArICAgIGlmIChQYXJhbVN0ciAh PSBOVUxMKSB7DQo+ICsgICAgICBGcm9tVGV4dCA9IG1VZWZpRGV2aWNlUGF0aExpYkRldlBhdGhG cm9tVGV4dFRhYmxlW0luZGV4XS5GdW5jdGlvbjsNCj4gKyAgICAgIGJyZWFrOw0KPiArICAgIH0N Cj4gKyAgfQ0KPiArDQo+ICsgIGlmIChGcm9tVGV4dCA9PSBOVUxMKSB7DQo+ICsgICAgLy8NCj4g KyAgICAvLyBBIGZpbGUgcGF0aA0KPiArICAgIC8vDQo+ICsgICAgRnJvbVRleHQgPSBEZXZQYXRo RnJvbVRleHRGaWxlUGF0aDsNCj4gKyAgICBEZXZpY2VOb2RlID0gRnJvbVRleHQgKERldmljZU5v ZGVTdHIpOw0KPiArICB9IGVsc2Ugew0KPiArICAgIERldmljZU5vZGUgPSBGcm9tVGV4dCAoUGFy YW1TdHIpOw0KPiArICAgIGZyZWUgKFBhcmFtU3RyKTsNCj4gKyAgfQ0KPiArDQo+ICsgIGZyZWUg KERldmljZU5vZGVTdHIpOw0KPiArDQo+ICsgIHJldHVybiBEZXZpY2VOb2RlOw0KPiArfQ0KPiAr DQo+ICsvKioNCj4gKyAgQ29udmVydCB0ZXh0IHRvIHRoZSBiaW5hcnkgcmVwcmVzZW50YXRpb24g b2YgYSBkZXZpY2UgcGF0aC4NCj4gKw0KPiArDQo+ICsgIEBwYXJhbSBUZXh0RGV2aWNlUGF0aCAg VGV4dERldmljZVBhdGggcG9pbnRzIHRvIHRoZSB0ZXh0IHJlcHJlc2VudGF0aW9uIG9mIGEgZGV2 aWNlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC4gQ29udmVyc2lvbiBzdGFydHMg d2l0aCB0aGUgZmlyc3QgY2hhcmFjdGVyIGFuZCBjb250aW51ZXMNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICB1bnRpbCB0aGUgZmlyc3Qgbm9uLWRldmljZSBub2RlIGNoYXJhY3Rlci4NCj4g Kw0KPiArICBAcmV0dXJuIEEgcG9pbnRlciB0byB0aGUgYWxsb2NhdGVkIGRldmljZSBwYXRoIG9y IE5VTEwgaWYgVGV4dERldmljZU5vZGUgaXMgTlVMTCBvcg0KPiArICAgICAgICAgIHRoZXJlIHdh cyBpbnN1ZmZpY2llbnQgbWVtb3J5Lg0KPiArDQo+ICsqKi8NCj4gK0VGSV9ERVZJQ0VfUEFUSF9Q Uk9UT0NPTCAqDQo+ICtVZWZpRGV2aWNlUGF0aExpYkNvbnZlcnRUZXh0VG9EZXZpY2VQYXRoICgN Cj4gKyAgIENPTlNUIENIQVIxNiAqVGV4dERldmljZVBhdGgNCj4gKyAgKQ0KPiArew0KPiArICBF RklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKkRldmljZU5vZGU7DQo+ICsgIEVGSV9ERVZJQ0VfUEFU SF9QUk9UT0NPTCAqTmV3RGV2aWNlUGF0aDsNCj4gKyAgQ0hBUjE2ICAgICAgICAgICAgICAgICAg ICpEZXZpY2VQYXRoU3RyOw0KPiArICBDSEFSMTYgICAgICAgICAgICAgICAgICAgKlN0cjsNCj4g KyAgQ0hBUjE2ICAgICAgICAgICAgICAgICAgICpEZXZpY2VOb2RlU3RyOw0KPiArICBCT09MRUFO ICAgICAgICAgICAgICAgICAgSXNJbnN0YW5jZUVuZDsNCj4gKyAgRUZJX0RFVklDRV9QQVRIX1BS T1RPQ09MICpEZXZpY2VQYXRoOw0KPiArDQo+ICsgIGlmICgoVGV4dERldmljZVBhdGggPT0gTlVM TCkgfHwgKElTX05VTEwgKCpUZXh0RGV2aWNlUGF0aCkpKSB7DQo+ICsgICAgcmV0dXJuIE5VTEw7 DQo+ICsgIH0NCj4gKw0KPiArICBEZXZpY2VQYXRoID0gKEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NP TCAqKSBBbGxvY2F0ZVBvb2wgKEVORF9ERVZJQ0VfUEFUSF9MRU5HVEgpOw0KPiArICBBU1NFUlQg KERldmljZVBhdGggIT0gTlVMTCk7DQo+ICsgIFNldERldmljZVBhdGhFbmROb2RlIChEZXZpY2VQ YXRoKTsNCj4gKw0KPiArICBEZXZpY2VQYXRoU3RyID0gVWVmaURldmljZVBhdGhMaWJTdHJEdXBs aWNhdGUgKFRleHREZXZpY2VQYXRoKTsNCj4gKw0KPiArICBTdHIgICAgICAgICAgID0gRGV2aWNl UGF0aFN0cjsNCj4gKyAgd2hpbGUgKChEZXZpY2VOb2RlU3RyID0gR2V0TmV4dERldmljZU5vZGVT dHIgKCZTdHIsICZJc0luc3RhbmNlRW5kKSkgIT0gTlVMTCkgew0KPiArICAgIERldmljZU5vZGUg PSBVZWZpRGV2aWNlUGF0aExpYkNvbnZlcnRUZXh0VG9EZXZpY2VOb2RlIChEZXZpY2VOb2RlU3Ry KTsNCj4gKw0KPiArICAgIE5ld0RldmljZVBhdGggPSBBcHBlbmREZXZpY2VQYXRoTm9kZSAoRGV2 aWNlUGF0aCwgRGV2aWNlTm9kZSk7DQo+ICsgICAgZnJlZSAoRGV2aWNlUGF0aCk7DQo+ICsgICAg ZnJlZSAoRGV2aWNlTm9kZSk7DQo+ICsgICAgRGV2aWNlUGF0aCA9IE5ld0RldmljZVBhdGg7DQo+ ICsNCj4gKyAgICBpZiAoSXNJbnN0YW5jZUVuZCkgew0KPiArICAgICAgRGV2aWNlTm9kZSA9IChF RklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKikgQWxsb2NhdGVQb29sIChFTkRfREVWSUNFX1BBVEhf TEVOR1RIKTsNCj4gKyAgICAgIEFTU0VSVCAoRGV2aWNlTm9kZSAhPSBOVUxMKTsNCj4gKyAgICAg IFNldERldmljZVBhdGhFbmROb2RlIChEZXZpY2VOb2RlKTsNCj4gKyAgICAgIERldmljZU5vZGUt PlN1YlR5cGUgPSBFTkRfSU5TVEFOQ0VfREVWSUNFX1BBVEhfU1VCVFlQRTsNCj4gKw0KPiArICAg ICAgTmV3RGV2aWNlUGF0aCA9IEFwcGVuZERldmljZVBhdGhOb2RlIChEZXZpY2VQYXRoLCBEZXZp Y2VOb2RlKTsNCj4gKyAgICAgIGZyZWUgKERldmljZVBhdGgpOw0KPiArICAgICAgZnJlZSAoRGV2 aWNlTm9kZSk7DQo+ICsgICAgICBEZXZpY2VQYXRoID0gTmV3RGV2aWNlUGF0aDsNCj4gKyAgICB9 DQo+ICsgIH0NCj4gKw0KPiArICBmcmVlIChEZXZpY2VQYXRoU3RyKTsNCj4gKyAgcmV0dXJuIERl dmljZVBhdGg7DQo+ICt9DQo+IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291cmNlL0MvRGV2aWNl UGF0aC9EZXZpY2VQYXRoVXRpbGl0aWVzLmMgYi9CYXNlVG9vbHMvU291cmNlL0MvRGV2aWNlUGF0 aC9EZXZpY2VQYXRoVXRpbGl0aWVzLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXgg MDAwMDAwMC4uZDRlYzI3NA0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL0Jhc2VUb29scy9Tb3Vy Y2UvQy9EZXZpY2VQYXRoL0RldmljZVBhdGhVdGlsaXRpZXMuYw0KPiBAQCAtMCwwICsxLDg3NSBA QA0KPiArLyoqIEBmaWxlDQo+ICsgIERldmljZSBQYXRoIHNlcnZpY2VzLiBUaGUgdGhpbmcgdG8g cmVtZW1iZXIgaXMgZGV2aWNlIHBhdGhzIGFyZSBidWlsdCBvdXQgb2YNCj4gKyAgbm9kZXMuIFRo ZSBkZXZpY2UgcGF0aCBpcyB0ZXJtaW5hdGVkIGJ5IGFuIGVuZCBub2RlIHRoYXQgaXMgbGVuZ3Ro DQo+ICsgIHNpemVvZihFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wpLiBUaGF0IHdvdWxkIGJlIHdo eSB0aGVyZSBpcyBzaXplb2YoRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MKQ0KPiArICBhbGwgb3Zl ciB0aGlzIGZpbGUuDQo+ICsNCj4gKyAgVGhlIG9ubHkgcGxhY2Ugd2hlcmUgbXVsdGktaW5zdGFu Y2UgZGV2aWNlIHBhdGhzIGFyZSBzdXBwb3J0ZWQgaXMgaW4NCj4gKyAgZW52aXJvbm1lbnQgdmFy aWJsZXMuIE11bHRpLWluc3RhbmNlIGRldmljZSBwYXRocyBzaG91bGQgbmV2ZXIgYmUgcGxhY2Vk DQo+ICsgIG9uIGEgSGFuZGxlLg0KPiArDQo+ICsgIENvcHlyaWdodCAoYykgMjAxNywgSW50ZWwg Q29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiArICBUaGlzIHByb2dyYW0g YW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICsgIGFyZSBsaWNlbnNlZCBhbmQgbWFk ZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGlj ZW5zZQ0KPiArICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxs IHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlIGZvdW5kIGF0DQo+ICsgIGh0dHA6Ly9vcGVuc291 cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHAuDQo+ICsNCj4gKyAgVEhFIFBST0dSQU0g SVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyIgQkFTSVMs DQo+ICsgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQs IEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ICsNCj4gKyoqLw0KPiArDQo+ICsjaW5jbHVk ZSAiVWVmaURldmljZVBhdGhMaWIuaCINCj4gKyNpbmNsdWRlIDxQcm90b2NvbC9EZXZpY2VQYXRo VXRpbGl0aWVzLmg+DQo+ICsNCj4gKy8vDQo+ICsvLyBUZW1wbGF0ZSBmb3IgYW4gZW5kLW9mLWRl dmljZSBwYXRoIG5vZGUuDQo+ICsvLw0KPiArQ09OU1QgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09M ICBtVWVmaURldmljZVBhdGhMaWJFbmREZXZpY2VQYXRoID0gew0KPiArICBFTkRfREVWSUNFX1BB VEhfVFlQRSwNCj4gKyAgRU5EX0VOVElSRV9ERVZJQ0VfUEFUSF9TVUJUWVBFLA0KPiArICB7DQo+ ICsgICAgRU5EX0RFVklDRV9QQVRIX0xFTkdUSCwNCj4gKyAgICAwDQo+ICsgIH0NCj4gK307DQo+ ICsNCj4gKy8qKg0KPiArICBEZXRlcm1pbmUgd2hldGhlciBhIGdpdmVuIGRldmljZSBwYXRoIGlz IHZhbGlkLg0KPiArICBJZiBEZXZpY2VQYXRoIGlzIE5VTEwsIHRoZW4gQVNTRVJUKCkuDQo+ICsN Cj4gKyAgQHBhcmFtICBEZXZpY2VQYXRoICBBIHBvaW50ZXIgdG8gYSBkZXZpY2UgcGF0aCBkYXRh IHN0cnVjdHVyZS4NCj4gKyAgQHBhcmFtICBNYXhTaXplICAgICBUaGUgbWF4aW11bSBzaXplIG9m IHRoZSBkZXZpY2UgcGF0aCBkYXRhIHN0cnVjdHVyZS4NCj4gKw0KPiArICBAcmV0dmFsIFRSVUUg ICAgICAgIERldmljZVBhdGggaXMgdmFsaWQuDQo+ICsgIEByZXR2YWwgRkFMU0UgICAgICAgVGhl IGxlbmd0aCBvZiBhbnkgbm9kZSBub2RlIGluIHRoZSBEZXZpY2VQYXRoIGlzIGxlc3MNCj4gKyAg ICAgICAgICAgICAgICAgICAgICB0aGFuIHNpemVvZiAoRUZJX0RFVklDRV9QQVRIX1BST1RPQ09M KS4NCj4gKyAgQHJldHZhbCBGQUxTRSAgICAgICBJZiBNYXhTaXplIGlzIG5vdCB6ZXJvLCB0aGUg c2l6ZSBvZiB0aGUgRGV2aWNlUGF0aA0KPiArICAgICAgICAgICAgICAgICAgICAgIGV4Y2VlZHMg TWF4U2l6ZS4NCj4gKyAgQHJldHZhbCBGQUxTRSAgICAgICBJZiBQY2RNYXhpbXVtRGV2aWNlUGF0 aE5vZGVDb3VudCBpcyBub3QgemVybywgdGhlIG5vZGUNCj4gKyAgICAgICAgICAgICAgICAgICAg ICBjb3VudCBvZiB0aGUgRGV2aWNlUGF0aCBleGNlZWRzIFBjZE1heGltdW1EZXZpY2VQYXRoTm9k ZUNvdW50Lg0KPiArKiovDQo+ICtCT09MRUFODQo+ICtJc0RldmljZVBhdGhWYWxpZCAoDQo+ICsg ICBDT05TVCBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKkRldmljZVBhdGgsDQo+ICsgICBVSU5U TiAgICAgICAgICAgICAgICAgICAgTWF4U2l6ZQ0KPiArICApDQo+ICt7DQo+ICsgIFVJTlROIENv dW50Ow0KPiArICBVSU5UTiBTaXplOw0KPiArICBVSU5UTiBOb2RlTGVuZ3RoOw0KPiArDQo+ICsg IEFTU0VSVCAoRGV2aWNlUGF0aCAhPSBOVUxMKTsNCj4gKw0KPiArICBpZiAoTWF4U2l6ZSA9PSAw KSB7DQo+ICsgICAgTWF4U2l6ZSA9IE1BWF9VSU5UTjsNCj4gKyB9DQo+ICsNCj4gKyAgLy8NCj4g KyAgLy8gVmFsaWRhdGUgdGhlIGlucHV0IHNpemUgYmlnIGVub3VnaCB0byB0b3VjaCB0aGUgZmly c3Qgbm9kZS4NCj4gKyAgLy8NCj4gKyAgaWYgKE1heFNpemUgPCBzaXplb2YgKEVGSV9ERVZJQ0Vf UEFUSF9QUk9UT0NPTCkpIHsNCj4gKyAgICByZXR1cm4gRkFMU0U7DQo+ICsgIH0NCj4gKw0KPiAr ICBmb3IgKENvdW50ID0gMCwgU2l6ZSA9IDA7ICFJc0RldmljZVBhdGhFbmQgKERldmljZVBhdGgp OyBEZXZpY2VQYXRoID0gTmV4dERldmljZVBhdGhOb2RlIChEZXZpY2VQYXRoKSkgew0KPiArICAg IE5vZGVMZW5ndGggPSBEZXZpY2VQYXRoTm9kZUxlbmd0aCAoRGV2aWNlUGF0aCk7DQo+ICsgICAg aWYgKE5vZGVMZW5ndGggPCBzaXplb2YgKEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCkpIHsNCj4g KyAgICAgIHJldHVybiBGQUxTRTsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICBpZiAoTm9kZUxlbmd0 aCA+IE1BWF9VSU5UTiAtIFNpemUpIHsNCj4gKyAgICAgIHJldHVybiBGQUxTRTsNCj4gKyAgICB9 DQo+ICsgICAgU2l6ZSArPSBOb2RlTGVuZ3RoOw0KPiArDQo+ICsgICAgLy8NCj4gKyAgICAvLyBW YWxpZGF0ZSBuZXh0IG5vZGUgYmVmb3JlIHRvdWNoIGl0Lg0KPiArICAgIC8vDQo+ICsgICAgaWYg KFNpemUgPiBNYXhTaXplIC0gRU5EX0RFVklDRV9QQVRIX0xFTkdUSCApIHsNCj4gKyAgICAgIHJl dHVybiBGQUxTRTsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICBDb3VudCsrOw0KPiArICAgIGlmIChD b3VudCA+PSBNQVhfREVWSUNFX1BBVEhfTk9ERV9DT1VOVCkgew0KPiArICAgICAgcmV0dXJuIEZB TFNFOw0KPiArICAgICAgfQ0KPiArDQo+ICsgIH0NCj4gKw0KPiArICAvLw0KPiArICAvLyBPbmx5 IHJldHVybiBUUlVFIHdoZW4gdGhlIEVuZCBEZXZpY2UgUGF0aCBub2RlIGlzIHZhbGlkLg0KPiAr ICAvLw0KPiArICByZXR1cm4gKEJPT0xFQU4pIChEZXZpY2VQYXRoTm9kZUxlbmd0aCAoRGV2aWNl UGF0aCkgPT0gRU5EX0RFVklDRV9QQVRIX0xFTkdUSCk7DQo+ICt9DQo+ICsNCj4gKw0KPiArLyoq DQo+ICsgIFJldHVybnMgdGhlIFR5cGUgZmllbGQgb2YgYSBkZXZpY2UgcGF0aCBub2RlLg0KPiAr DQo+ICsgIFJldHVybnMgdGhlIFR5cGUgZmllbGQgb2YgdGhlIGRldmljZSBwYXRoIG5vZGUgc3Bl Y2lmaWVkIGJ5IE5vZGUuDQo+ICsNCj4gKyAgSWYgTm9kZSBpcyBOVUxMLCB0aGVuIEFTU0VSVCgp Lg0KPiArDQo+ICsgIEBwYXJhbSAgTm9kZSAgICAgIEEgcG9pbnRlciB0byBhIGRldmljZSBwYXRo IG5vZGUgZGF0YSBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyAgQHJldHVybiBUaGUgVHlwZSBmaWVsZCBv ZiB0aGUgZGV2aWNlIHBhdGggbm9kZSBzcGVjaWZpZWQgYnkgTm9kZS4NCj4gKw0KPiArKiovDQo+ ICtVSU5UOA0KPiArRGV2aWNlUGF0aFR5cGUgKA0KPiArICAgQ09OU1QgVk9JRCAgKk5vZGUNCj4g KyAgKQ0KPiArew0KPiArICBBU1NFUlQgKE5vZGUgIT0gTlVMTCk7DQo+ICsgIHJldHVybiAoKEVG SV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqKShOb2RlKSktPlR5cGU7DQo+ICt9DQo+ICsNCj4gKy8q Kg0KPiArICBSZXR1cm5zIHRoZSBTdWJUeXBlIGZpZWxkIG9mIGEgZGV2aWNlIHBhdGggbm9kZS4N Cj4gKw0KPiArICBSZXR1cm5zIHRoZSBTdWJUeXBlIGZpZWxkIG9mIHRoZSBkZXZpY2UgcGF0aCBu b2RlIHNwZWNpZmllZCBieSBOb2RlLg0KPiArDQo+ICsgIElmIE5vZGUgaXMgTlVMTCwgdGhlbiBB U1NFUlQoKS4NCj4gKw0KPiArICBAcGFyYW0gIE5vZGUgICAgICBBIHBvaW50ZXIgdG8gYSBkZXZp Y2UgcGF0aCBub2RlIGRhdGEgc3RydWN0dXJlLg0KPiArDQo+ICsgIEByZXR1cm4gVGhlIFN1YlR5 cGUgZmllbGQgb2YgdGhlIGRldmljZSBwYXRoIG5vZGUgc3BlY2lmaWVkIGJ5IE5vZGUuDQo+ICsN Cj4gKyoqLw0KPiArVUlOVDgNCj4gK0RldmljZVBhdGhTdWJUeXBlICgNCj4gKyAgIENPTlNUIFZP SUQgICpOb2RlDQo+ICsgICkNCj4gK3sNCj4gKyAgQVNTRVJUIChOb2RlICE9IE5VTEwpOw0KPiAr ICByZXR1cm4gKChFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKikoTm9kZSkpLT5TdWJUeXBlOw0K PiArfQ0KPiArDQo+ICsvKioNCj4gKyAgUmV0dXJucyB0aGUgMTYtYml0IExlbmd0aCBmaWVsZCBv ZiBhIGRldmljZSBwYXRoIG5vZGUuDQo+ICsNCj4gKyAgUmV0dXJucyB0aGUgMTYtYml0IExlbmd0 aCBmaWVsZCBvZiB0aGUgZGV2aWNlIHBhdGggbm9kZSBzcGVjaWZpZWQgYnkgTm9kZS4NCj4gKyAg Tm9kZSBpcyBub3QgcmVxdWlyZWQgdG8gYmUgYWxpZ25lZCBvbiBhIDE2LWJpdCBib3VuZGFyeSwg c28gaXQgaXMgcmVjb21tZW5kZWQNCj4gKyAgdGhhdCBhIGZ1bmN0aW9uIHN1Y2ggYXMgUmVhZFVu YWxpZ25lZDE2KCkgYmUgdXNlZCB0byBleHRyYWN0IHRoZSBjb250ZW50cyBvZg0KPiArICB0aGUg TGVuZ3RoIGZpZWxkLg0KPiArDQo+ICsgIElmIE5vZGUgaXMgTlVMTCwgdGhlbiBBU1NFUlQoKS4N Cj4gKw0KPiArICBAcGFyYW0gIE5vZGUgICAgICBBIHBvaW50ZXIgdG8gYSBkZXZpY2UgcGF0aCBu b2RlIGRhdGEgc3RydWN0dXJlLg0KPiArDQo+ICsgIEByZXR1cm4gVGhlIDE2LWJpdCBMZW5ndGgg ZmllbGQgb2YgdGhlIGRldmljZSBwYXRoIG5vZGUgc3BlY2lmaWVkIGJ5IE5vZGUuDQo+ICsNCj4g KyoqLw0KPiArVUlOVE4NCj4gK0RldmljZVBhdGhOb2RlTGVuZ3RoICgNCj4gKyAgIENPTlNUIFZP SUQgICpOb2RlDQo+ICsgICkNCj4gK3sNCj4gKyAgQVNTRVJUIChOb2RlICE9IE5VTEwpOw0KPiAr ICByZXR1cm4gUmVhZFVuYWxpZ25lZDE2ICgoVUlOVDE2ICopJigoRUZJX0RFVklDRV9QQVRIX1BS T1RPQ09MICopKE5vZGUpKS0+TGVuZ3RoWzBdKTsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIFJl dHVybnMgYSBwb2ludGVyIHRvIHRoZSBuZXh0IG5vZGUgaW4gYSBkZXZpY2UgcGF0aC4NCj4gKw0K PiArICBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgZGV2aWNlIHBhdGggbm9kZSB0aGF0IGZvbGxv d3MgdGhlIGRldmljZSBwYXRoIG5vZGUNCj4gKyAgc3BlY2lmaWVkIGJ5IE5vZGUuDQo+ICsNCj4g KyAgSWYgTm9kZSBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiArDQo+ICsgIEBwYXJhbSAgTm9k ZSAgICAgIEEgcG9pbnRlciB0byBhIGRldmljZSBwYXRoIG5vZGUgZGF0YSBzdHJ1Y3R1cmUuDQo+ ICsNCj4gKyAgQHJldHVybiBhIHBvaW50ZXIgdG8gdGhlIGRldmljZSBwYXRoIG5vZGUgdGhhdCBm b2xsb3dzIHRoZSBkZXZpY2UgcGF0aCBub2RlDQo+ICsgIHNwZWNpZmllZCBieSBOb2RlLg0KPiAr DQo+ICsqKi8NCj4gK0VGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqDQo+ICtOZXh0RGV2aWNlUGF0 aE5vZGUgKA0KPiArICAgQ09OU1QgVk9JRCAgKk5vZGUNCj4gKyAgKQ0KPiArew0KPiArICBBU1NF UlQgKE5vZGUgIT0gTlVMTCk7DQo+ICsgIHJldHVybiAoRUZJX0RFVklDRV9QQVRIX1BST1RPQ09M ICopKChVSU5UOCAqKShOb2RlKSArIERldmljZVBhdGhOb2RlTGVuZ3RoKE5vZGUpKTsNCj4gK30N Cj4gKw0KPiArLyoqDQo+ICsgIERldGVybWluZXMgaWYgYSBkZXZpY2UgcGF0aCBub2RlIGlzIGFu IGVuZCBub2RlIG9mIGEgZGV2aWNlIHBhdGguDQo+ICsgIFRoaXMgaW5jbHVkZXMgbm9kZXMgdGhh dCBhcmUgdGhlIGVuZCBvZiBhIGRldmljZSBwYXRoIGluc3RhbmNlIGFuZCBub2RlcyB0aGF0DQo+ ICsgIGFyZSB0aGUgZW5kIG9mIGFuIGVudGlyZSBkZXZpY2UgcGF0aC4NCj4gKw0KPiArICBEZXRl cm1pbmVzIGlmIHRoZSBkZXZpY2UgcGF0aCBub2RlIHNwZWNpZmllZCBieSBOb2RlIGlzIGFuIGVu ZCBub2RlIG9mIGEgZGV2aWNlIHBhdGguDQo+ICsgIFRoaXMgaW5jbHVkZXMgbm9kZXMgdGhhdCBh cmUgdGhlIGVuZCBvZiBhIGRldmljZSBwYXRoIGluc3RhbmNlIGFuZCBub2RlcyB0aGF0IGFyZSB0 aGUNCj4gKyAgZW5kIG9mIGFuIGVudGlyZSBkZXZpY2UgcGF0aC4gIElmIE5vZGUgcmVwcmVzZW50 cyBhbiBlbmQgbm9kZSBvZiBhIGRldmljZSBwYXRoLA0KPiArICB0aGVuIFRSVUUgaXMgcmV0dXJu ZWQuICBPdGhlcndpc2UsIEZBTFNFIGlzIHJldHVybmVkLg0KPiArDQo+ICsgIElmIE5vZGUgaXMg TlVMTCwgdGhlbiBBU1NFUlQoKS4NCj4gKw0KPiArICBAcGFyYW0gIE5vZGUgICAgICBBIHBvaW50 ZXIgdG8gYSBkZXZpY2UgcGF0aCBub2RlIGRhdGEgc3RydWN0dXJlLg0KPiArDQo+ICsgIEByZXR2 YWwgVFJVRSAgICAgIFRoZSBkZXZpY2UgcGF0aCBub2RlIHNwZWNpZmllZCBieSBOb2RlIGlzIGFu IGVuZCBub2RlIG9mIGENCj4gKyAgICAgICAgICAgICAgICAgICAgZGV2aWNlIHBhdGguDQo+ICsg IEByZXR2YWwgRkFMU0UgICAgIFRoZSBkZXZpY2UgcGF0aCBub2RlIHNwZWNpZmllZCBieSBOb2Rl IGlzIG5vdCBhbiBlbmQgbm9kZSBvZg0KPiArICAgICAgICAgICAgICAgICAgICBhIGRldmljZSBw YXRoLg0KPiArDQo+ICsqKi8NCj4gK0JPT0xFQU4NCj4gK0lzRGV2aWNlUGF0aEVuZFR5cGUgKA0K PiArICAgQ09OU1QgVk9JRCAgKk5vZGUNCj4gKyAgKQ0KPiArew0KPiArICBBU1NFUlQgKE5vZGUg IT0gTlVMTCk7DQo+ICsgIHJldHVybiAoQk9PTEVBTikgKERldmljZVBhdGhUeXBlIChOb2RlKSA9 PSBFTkRfREVWSUNFX1BBVEhfVFlQRSk7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBEZXRlcm1p bmVzIGlmIGEgZGV2aWNlIHBhdGggbm9kZSBpcyBhbiBlbmQgbm9kZSBvZiBhbiBlbnRpcmUgZGV2 aWNlIHBhdGguDQo+ICsNCj4gKyAgRGV0ZXJtaW5lcyBpZiBhIGRldmljZSBwYXRoIG5vZGUgc3Bl Y2lmaWVkIGJ5IE5vZGUgaXMgYW4gZW5kIG5vZGUgb2YgYW4gZW50aXJlDQo+ICsgIGRldmljZSBw YXRoLiBJZiBOb2RlIHJlcHJlc2VudHMgdGhlIGVuZCBvZiBhbiBlbnRpcmUgZGV2aWNlIHBhdGgs IHRoZW4gVFJVRSBpcw0KPiArICByZXR1cm5lZC4gIE90aGVyd2lzZSwgRkFMU0UgaXMgcmV0dXJu ZWQuDQo+ICsNCj4gKyAgSWYgTm9kZSBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiArDQo+ICsg IEBwYXJhbSAgTm9kZSAgICAgIEEgcG9pbnRlciB0byBhIGRldmljZSBwYXRoIG5vZGUgZGF0YSBz dHJ1Y3R1cmUuDQo+ICsNCj4gKyAgQHJldHZhbCBUUlVFICAgICAgVGhlIGRldmljZSBwYXRoIG5v ZGUgc3BlY2lmaWVkIGJ5IE5vZGUgaXMgdGhlIGVuZCBvZiBhbiBlbnRpcmUNCj4gKyAgICAgICAg ICAgICAgICAgICAgZGV2aWNlIHBhdGguDQo+ICsgIEByZXR2YWwgRkFMU0UgICAgIFRoZSBkZXZp Y2UgcGF0aCBub2RlIHNwZWNpZmllZCBieSBOb2RlIGlzIG5vdCB0aGUgZW5kIG9mIGFuDQo+ICsg ICAgICAgICAgICAgICAgICAgIGVudGlyZSBkZXZpY2UgcGF0aC4NCj4gKw0KPiArKiovDQo+ICtC T09MRUFODQo+ICtJc0RldmljZVBhdGhFbmQgKA0KPiArICAgQ09OU1QgVk9JRCAgKk5vZGUNCj4g KyAgKQ0KPiArew0KPiArICBBU1NFUlQgKE5vZGUgIT0gTlVMTCk7DQo+ICsgIHJldHVybiAoQk9P TEVBTikgKElzRGV2aWNlUGF0aEVuZFR5cGUgKE5vZGUpICYmIERldmljZVBhdGhTdWJUeXBlKE5v ZGUpID09IEVORF9FTlRJUkVfREVWSUNFX1BBVEhfU1VCVFlQRSk7DQo+ICt9DQo+ICsNCj4gKy8q Kg0KPiArICBEZXRlcm1pbmVzIGlmIGEgZGV2aWNlIHBhdGggbm9kZSBpcyBhbiBlbmQgbm9kZSBv ZiBhIGRldmljZSBwYXRoIGluc3RhbmNlLg0KPiArDQo+ICsgIERldGVybWluZXMgaWYgYSBkZXZp Y2UgcGF0aCBub2RlIHNwZWNpZmllZCBieSBOb2RlIGlzIGFuIGVuZCBub2RlIG9mIGEgZGV2aWNl DQo+ICsgIHBhdGggaW5zdGFuY2UuIElmIE5vZGUgcmVwcmVzZW50cyB0aGUgZW5kIG9mIGEgZGV2 aWNlIHBhdGggaW5zdGFuY2UsIHRoZW4gVFJVRQ0KPiArICBpcyByZXR1cm5lZC4gIE90aGVyd2lz ZSwgRkFMU0UgaXMgcmV0dXJuZWQuDQo+ICsNCj4gKyAgSWYgTm9kZSBpcyBOVUxMLCB0aGVuIEFT U0VSVCgpLg0KPiArDQo+ICsgIEBwYXJhbSAgTm9kZSAgICAgIEEgcG9pbnRlciB0byBhIGRldmlj ZSBwYXRoIG5vZGUgZGF0YSBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyAgQHJldHZhbCBUUlVFICAgICAg VGhlIGRldmljZSBwYXRoIG5vZGUgc3BlY2lmaWVkIGJ5IE5vZGUgaXMgdGhlIGVuZCBvZiBhIGRl dmljZQ0KPiArICAgICAgICAgICAgICAgICAgICBwYXRoIGluc3RhbmNlLg0KPiArICBAcmV0dmFs IEZBTFNFICAgICBUaGUgZGV2aWNlIHBhdGggbm9kZSBzcGVjaWZpZWQgYnkgTm9kZSBpcyBub3Qg dGhlIGVuZCBvZiBhDQo+ICsgICAgICAgICAgICAgICAgICAgIGRldmljZSBwYXRoIGluc3RhbmNl Lg0KPiArDQo+ICsqKi8NCj4gK0JPT0xFQU4NCj4gK0lzRGV2aWNlUGF0aEVuZEluc3RhbmNlICgN Cj4gKyAgIENPTlNUIFZPSUQgICpOb2RlDQo+ICsgICkNCj4gK3sNCj4gKyAgQVNTRVJUIChOb2Rl ICE9IE5VTEwpOw0KPiArICByZXR1cm4gKEJPT0xFQU4pIChJc0RldmljZVBhdGhFbmRUeXBlIChO b2RlKSAmJiBEZXZpY2VQYXRoU3ViVHlwZShOb2RlKSA9PSBFTkRfSU5TVEFOQ0VfREVWSUNFX1BB VEhfU1VCVFlQRSk7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBTZXRzIHRoZSBsZW5ndGgsIGlu IGJ5dGVzLCBvZiBhIGRldmljZSBwYXRoIG5vZGUuDQo+ICsNCj4gKyAgU2V0cyB0aGUgbGVuZ3Ro IG9mIHRoZSBkZXZpY2UgcGF0aCBub2RlIHNwZWNpZmllZCBieSBOb2RlIHRvIHRoZSB2YWx1ZSBz cGVjaWZpZWQNCj4gKyAgYnkgTm9kZUxlbmd0aC4gIE5vZGVMZW5ndGggaXMgcmV0dXJuZWQuICBO b2RlIGlzIG5vdCByZXF1aXJlZCB0byBiZSBhbGlnbmVkIG9uDQo+ICsgIGEgMTYtYml0IGJvdW5k YXJ5LCBzbyBpdCBpcyByZWNvbW1lbmRlZCB0aGF0IGEgZnVuY3Rpb24gc3VjaCBhcyBXcml0ZVVu YWxpZ25lZDE2KCkNCj4gKyAgYmUgdXNlZCB0byBzZXQgdGhlIGNvbnRlbnRzIG9mIHRoZSBMZW5n dGggZmllbGQuDQo+ICsNCj4gKyAgSWYgTm9kZSBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiAr ICBJZiBOb2RlTGVuZ3RoID49IFNJWkVfNjRLQiwgdGhlbiBBU1NFUlQoKS4NCj4gKyAgSWYgTm9k ZUxlbmd0aCA8IHNpemVvZiAoRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MKSwgdGhlbiBBU1NFUlQo KS4NCj4gKw0KPiArICBAcGFyYW0gIE5vZGUgICAgICBBIHBvaW50ZXIgdG8gYSBkZXZpY2UgcGF0 aCBub2RlIGRhdGEgc3RydWN0dXJlLg0KPiArICBAcGFyYW0gIExlbmd0aCAgICBUaGUgbGVuZ3Ro LCBpbiBieXRlcywgb2YgdGhlIGRldmljZSBwYXRoIG5vZGUuDQo+ICsNCj4gKyAgQHJldHVybiBM ZW5ndGgNCj4gKw0KPiArKiovDQo+ICtVSU5UMTYNCj4gK1NldERldmljZVBhdGhOb2RlTGVuZ3Ro ICgNCj4gKyAgICBWT0lEICAqTm9kZSwNCj4gKyAgIFVJTlROICAgICBMZW5ndGgNCj4gKyAgKQ0K PiArew0KPiArICBBU1NFUlQgKE5vZGUgIT0gTlVMTCk7DQo+ICsgIEFTU0VSVCAoKExlbmd0aCA+ PSBzaXplb2YgKEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCkpICYmIChMZW5ndGggPCBTSVpFXzY0 S0IpKTsNCj4gKyAgcmV0dXJuIFdyaXRlVW5hbGlnbmVkMTYgKChVSU5UMTYgKikmKChFRklfREVW SUNFX1BBVEhfUFJPVE9DT0wgKikoTm9kZSkpLT5MZW5ndGhbMF0sIChVSU5UMTYpKExlbmd0aCkp Ow0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgRmlsbHMgaW4gYWxsIHRoZSBmaWVsZHMgb2YgYSBk ZXZpY2UgcGF0aCBub2RlIHRoYXQgaXMgdGhlIGVuZCBvZiBhbiBlbnRpcmUgZGV2aWNlIHBhdGgu DQo+ICsNCj4gKyAgRmlsbHMgaW4gYWxsIHRoZSBmaWVsZHMgb2YgYSBkZXZpY2UgcGF0aCBub2Rl IHNwZWNpZmllZCBieSBOb2RlIHNvIE5vZGUgcmVwcmVzZW50cw0KPiArICB0aGUgZW5kIG9mIGFu IGVudGlyZSBkZXZpY2UgcGF0aC4gIFRoZSBUeXBlIGZpZWxkIG9mIE5vZGUgaXMgc2V0IHRvDQo+ ICsgIEVORF9ERVZJQ0VfUEFUSF9UWVBFLCB0aGUgU3ViVHlwZSBmaWVsZCBvZiBOb2RlIGlzIHNl dCB0bw0KPiArICBFTkRfRU5USVJFX0RFVklDRV9QQVRIX1NVQlRZUEUsIGFuZCB0aGUgTGVuZ3Ro IGZpZWxkIG9mIE5vZGUgaXMgc2V0IHRvDQo+ICsgIEVORF9ERVZJQ0VfUEFUSF9MRU5HVEguICBO b2RlIGlzIG5vdCByZXF1aXJlZCB0byBiZSBhbGlnbmVkIG9uIGEgMTYtYml0IGJvdW5kYXJ5LA0K PiArICBzbyBpdCBpcyByZWNvbW1lbmRlZCB0aGF0IGEgZnVuY3Rpb24gc3VjaCBhcyBXcml0ZVVu YWxpZ25lZDE2KCkgYmUgdXNlZCB0byBzZXQNCj4gKyAgdGhlIGNvbnRlbnRzIG9mIHRoZSBMZW5n dGggZmllbGQuDQo+ICsNCj4gKyAgSWYgTm9kZSBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiAr DQo+ICsgIEBwYXJhbSAgTm9kZSAgICAgIEEgcG9pbnRlciB0byBhIGRldmljZSBwYXRoIG5vZGUg ZGF0YSBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyoqLw0KPiArVk9JRA0KPiArU2V0RGV2aWNlUGF0aEVu ZE5vZGUgKA0KPiArICAgVk9JRCAgKk5vZGUNCj4gKyAgKQ0KPiArew0KPiArICBBU1NFUlQgKE5v ZGUgIT0gTlVMTCk7DQo+ICsgIG1lbWNweSAoTm9kZSwgJm1VZWZpRGV2aWNlUGF0aExpYkVuZERl dmljZVBhdGgsIHNpemVvZiAobVVlZmlEZXZpY2VQYXRoTGliRW5kRGV2aWNlUGF0aCkpOw0KPiAr fQ0KPiArDQo+ICsvKioNCj4gKyAgUmV0dXJucyB0aGUgc2l6ZSBvZiBhIGRldmljZSBwYXRoIGlu IGJ5dGVzLg0KPiArDQo+ICsgIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgc2l6ZSwgaW4gYnl0 ZXMsIG9mIHRoZSBkZXZpY2UgcGF0aCBkYXRhIHN0cnVjdHVyZQ0KPiArICBzcGVjaWZpZWQgYnkg RGV2aWNlUGF0aCBpbmNsdWRpbmcgdGhlIGVuZCBvZiBkZXZpY2UgcGF0aCBub2RlLg0KPiArICBJ ZiBEZXZpY2VQYXRoIGlzIE5VTEwgb3IgaW52YWxpZCwgdGhlbiAwIGlzIHJldHVybmVkLg0KPiAr DQo+ICsgIEBwYXJhbSAgRGV2aWNlUGF0aCAgQSBwb2ludGVyIHRvIGEgZGV2aWNlIHBhdGggZGF0 YSBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyAgQHJldHZhbCAwICAgICAgICAgICBJZiBEZXZpY2VQYXRo IGlzIE5VTEwgb3IgaW52YWxpZC4NCj4gKyAgQHJldHZhbCBPdGhlcnMgICAgICBUaGUgc2l6ZSBv ZiBhIGRldmljZSBwYXRoIGluIGJ5dGVzLg0KPiArDQo+ICsqKi8NCj4gK1VJTlRODQo+ICtVZWZp RGV2aWNlUGF0aExpYkdldERldmljZVBhdGhTaXplICgNCj4gKyAgIENPTlNUIEVGSV9ERVZJQ0Vf UEFUSF9QUk9UT0NPTCAgKkRldmljZVBhdGgNCj4gKyAgKQ0KPiArew0KPiArICBDT05TVCBFRklf REVWSUNFX1BBVEhfUFJPVE9DT0wgICpTdGFydDsNCj4gKw0KPiArICBpZiAoRGV2aWNlUGF0aCA9 PSBOVUxMKSB7DQo+ICsgICAgcmV0dXJuIDA7DQo+ICsgIH0NCj4gKw0KPiArICBpZiAoIUlzRGV2 aWNlUGF0aFZhbGlkIChEZXZpY2VQYXRoLCAwKSkgew0KPiArICAgIHJldHVybiAwOw0KPiArICB9 DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gU2VhcmNoIGZvciB0aGUgZW5kIG9mIHRoZSBkZXZpY2Ug cGF0aCBzdHJ1Y3R1cmUNCj4gKyAgLy8NCj4gKyAgU3RhcnQgPSBEZXZpY2VQYXRoOw0KPiArICB3 aGlsZSAoIUlzRGV2aWNlUGF0aEVuZCAoRGV2aWNlUGF0aCkpIHsNCj4gKyAgICBEZXZpY2VQYXRo ID0gTmV4dERldmljZVBhdGhOb2RlIChEZXZpY2VQYXRoKTsNCj4gKyAgfQ0KPiArDQo+ICsgIC8v DQo+ICsgIC8vIENvbXB1dGUgdGhlIHNpemUgYW5kIGFkZCBiYWNrIGluIHRoZSBzaXplIG9mIHRo ZSBlbmQgZGV2aWNlIHBhdGggc3RydWN0dXJlDQo+ICsgIC8vDQo+ICsgIHJldHVybiAoKFVJTlRO KSBEZXZpY2VQYXRoIC0gKFVJTlROKSBTdGFydCkgKyBEZXZpY2VQYXRoTm9kZUxlbmd0aCAoRGV2 aWNlUGF0aCk7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBDcmVhdGVzIGEgbmV3IGNvcHkgb2Yg YW4gZXhpc3RpbmcgZGV2aWNlIHBhdGguDQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBhbGxvY2F0 ZXMgc3BhY2UgZm9yIGEgbmV3IGNvcHkgb2YgdGhlIGRldmljZSBwYXRoIHNwZWNpZmllZCBieSBE ZXZpY2VQYXRoLg0KPiArICBJZiBEZXZpY2VQYXRoIGlzIE5VTEwsIHRoZW4gTlVMTCBpcyByZXR1 cm5lZC4gIElmIHRoZSBtZW1vcnkgaXMgc3VjY2Vzc2Z1bGx5DQo+ICsgIGFsbG9jYXRlZCwgdGhl biB0aGUgY29udGVudHMgb2YgRGV2aWNlUGF0aCBhcmUgY29waWVkIHRvIHRoZSBuZXdseSBhbGxv Y2F0ZWQNCj4gKyAgYnVmZmVyLCBhbmQgYSBwb2ludGVyIHRvIHRoYXQgYnVmZmVyIGlzIHJldHVy bmVkLiAgT3RoZXJ3aXNlLCBOVUxMIGlzIHJldHVybmVkLg0KPiArICBUaGUgbWVtb3J5IGZvciB0 aGUgbmV3IGRldmljZSBwYXRoIGlzIGFsbG9jYXRlZCBmcm9tIEVGSSBib290IHNlcnZpY2VzIG1l bW9yeS4NCj4gKyAgSXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBjYWxsZXIgdG8gZnJl ZSB0aGUgbWVtb3J5IGFsbG9jYXRlZC4NCj4gKw0KPiArICBAcGFyYW0gIERldmljZVBhdGggICAg QSBwb2ludGVyIHRvIGEgZGV2aWNlIHBhdGggZGF0YSBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyAgQHJl dHZhbCBOVUxMICAgICAgICAgIERldmljZVBhdGggaXMgTlVMTCBvciBpbnZhbGlkLg0KPiArICBA cmV0dmFsIE90aGVycyAgICAgICAgQSBwb2ludGVyIHRvIHRoZSBkdXBsaWNhdGVkIGRldmljZSBw YXRoLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqDQo+ICtVZWZp RGV2aWNlUGF0aExpYkR1cGxpY2F0ZURldmljZVBhdGggKA0KPiArICAgQ09OU1QgRUZJX0RFVklD RV9QQVRIX1BST1RPQ09MICAqRGV2aWNlUGF0aA0KPiArICApDQo+ICt7DQo+ICsgIFVJTlROICAg ICAgICAgICAgICAgICAgICAgU2l6ZTsNCj4gKw0KPiArICAvLw0KPiArICAvLyBDb21wdXRlIHRo ZSBzaXplDQo+ICsgIC8vDQo+ICsgIFNpemUgPSBHZXREZXZpY2VQYXRoU2l6ZSAoRGV2aWNlUGF0 aCk7DQo+ICsgIGlmIChTaXplID09IDApIHsNCj4gKyAgICByZXR1cm4gTlVMTDsNCj4gKyAgfQ0K PiArDQo+ICsgIC8vDQo+ICsgIC8vIEFsbG9jYXRlIHNwYWNlIGZvciBkdXBsaWNhdGUgZGV2aWNl IHBhdGgNCj4gKyAgLy8NCj4gKw0KPiArICByZXR1cm4gQWxsb2NhdGVDb3B5UG9vbCAoU2l6ZSwg RGV2aWNlUGF0aCk7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBDcmVhdGVzIGEgbmV3IGRldmlj ZSBwYXRoIGJ5IGFwcGVuZGluZyBhIHNlY29uZCBkZXZpY2UgcGF0aCB0byBhIGZpcnN0IGRldmlj ZSBwYXRoLg0KPiArDQo+ICsgIFRoaXMgZnVuY3Rpb24gY3JlYXRlcyBhIG5ldyBkZXZpY2UgcGF0 aCBieSBhcHBlbmRpbmcgYSBjb3B5IG9mIFNlY29uZERldmljZVBhdGgNCj4gKyAgdG8gYSBjb3B5 IG9mIEZpcnN0RGV2aWNlUGF0aCBpbiBhIG5ld2x5IGFsbG9jYXRlZCBidWZmZXIuICBPbmx5IHRo ZSBlbmQtb2YtZGV2aWNlLXBhdGgNCj4gKyAgZGV2aWNlIG5vZGUgZnJvbSBTZWNvbmREZXZpY2VQ YXRoIGlzIHJldGFpbmVkLiBUaGUgbmV3bHkgY3JlYXRlZCBkZXZpY2UgcGF0aCBpcw0KPiArICBy ZXR1cm5lZC4gSWYgRmlyc3REZXZpY2VQYXRoIGlzIE5VTEwsIHRoZW4gaXQgaXMgaWdub3JlZCwg YW5kIGEgZHVwbGljYXRlIG9mDQo+ICsgIFNlY29uZERldmljZVBhdGggaXMgcmV0dXJuZWQuICBJ ZiBTZWNvbmREZXZpY2VQYXRoIGlzIE5VTEwsIHRoZW4gaXQgaXMgaWdub3JlZCwNCj4gKyAgYW5k IGEgZHVwbGljYXRlIG9mIEZpcnN0RGV2aWNlUGF0aCBpcyByZXR1cm5lZC4gSWYgYm90aCBGaXJz dERldmljZVBhdGggYW5kDQo+ICsgIFNlY29uZERldmljZVBhdGggYXJlIE5VTEwsIHRoZW4gYSBj b3B5IG9mIGFuIGVuZC1vZi1kZXZpY2UtcGF0aCBpcyByZXR1cm5lZC4NCj4gKw0KPiArICBJZiB0 aGVyZSBpcyBub3QgZW5vdWdoIG1lbW9yeSBmb3IgdGhlIG5ld2x5IGFsbG9jYXRlZCBidWZmZXIs IHRoZW4gTlVMTCBpcyByZXR1cm5lZC4NCj4gKyAgVGhlIG1lbW9yeSBmb3IgdGhlIG5ldyBkZXZp Y2UgcGF0aCBpcyBhbGxvY2F0ZWQgZnJvbSBFRkkgYm9vdCBzZXJ2aWNlcyBtZW1vcnkuDQo+ICsg IEl0IGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgY2FsbGVyIHRvIGZyZWUgdGhlIG1lbW9y eSBhbGxvY2F0ZWQuDQo+ICsNCj4gKyAgQHBhcmFtICBGaXJzdERldmljZVBhdGggICAgICAgICAg ICBBIHBvaW50ZXIgdG8gYSBkZXZpY2UgcGF0aCBkYXRhIHN0cnVjdHVyZS4NCj4gKyAgQHBhcmFt ICBTZWNvbmREZXZpY2VQYXRoICAgICAgICAgICBBIHBvaW50ZXIgdG8gYSBkZXZpY2UgcGF0aCBk YXRhIHN0cnVjdHVyZS4NCj4gKw0KPiArICBAcmV0dmFsIE5VTEwgICAgICBJZiB0aGVyZSBpcyBu b3QgZW5vdWdoIG1lbW9yeSBmb3IgdGhlIG5ld2x5IGFsbG9jYXRlZCBidWZmZXIuDQo+ICsgIEBy ZXR2YWwgTlVMTCAgICAgIElmIEZpcnN0RGV2aWNlUGF0aCBvciBTZWNvbmREZXZpY2VQYXRoIGlz IGludmFsaWQuDQo+ICsgIEByZXR2YWwgT3RoZXJzICAgIEEgcG9pbnRlciB0byB0aGUgbmV3IGRl dmljZSBwYXRoIGlmIHN1Y2Nlc3MuDQo+ICsgICAgICAgICAgICAgICAgICAgIE9yIGEgY29weSBh biBlbmQtb2YtZGV2aWNlLXBhdGggaWYgYm90aCBGaXJzdERldmljZVBhdGggYW5kIFNlY29uZERl dmljZVBhdGggYXJlIE5VTEwuDQo+ICsNCj4gKyoqLw0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RP Q09MICoNCj4gK1VlZmlEZXZpY2VQYXRoTGliQXBwZW5kRGV2aWNlUGF0aCAoDQo+ICsgICBDT05T VCBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICpGaXJzdERldmljZVBhdGgsDQo+ICsgICBDT05T VCBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICpTZWNvbmREZXZpY2VQYXRoDQo+ICsgICkNCj4g K3sNCj4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBTaXplOw0KPiArICBVSU5UTiAgICAg ICAgICAgICAgICAgICAgIFNpemUxOw0KPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIFNp emUyOw0KPiArICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICpOZXdEZXZpY2VQYXRoOw0KPiAr ICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICpEZXZpY2VQYXRoMjsNCj4gKw0KPiArICAvLw0K PiArICAvLyBJZiB0aGVyZSdzIG9ubHkgMSBwYXRoLCBqdXN0IGR1cGxpY2F0ZSBpdC4NCj4gKyAg Ly8NCj4gKyAgaWYgKEZpcnN0RGV2aWNlUGF0aCA9PSBOVUxMKSB7DQo+ICsgICAgcmV0dXJuIER1 cGxpY2F0ZURldmljZVBhdGggKChTZWNvbmREZXZpY2VQYXRoICE9IE5VTEwpID8gU2Vjb25kRGV2 aWNlUGF0aCA6ICZtVWVmaURldmljZVBhdGhMaWJFbmREZXZpY2VQYXRoKTsNCj4gKyAgfQ0KPiAr DQo+ICsgIGlmIChTZWNvbmREZXZpY2VQYXRoID09IE5VTEwpIHsNCj4gKyAgICByZXR1cm4gRHVw bGljYXRlRGV2aWNlUGF0aCAoRmlyc3REZXZpY2VQYXRoKTsNCj4gKyAgfQ0KPiArDQo+ICsgIGlm ICghSXNEZXZpY2VQYXRoVmFsaWQgKEZpcnN0RGV2aWNlUGF0aCwgMCkgfHwgIUlzRGV2aWNlUGF0 aFZhbGlkIChTZWNvbmREZXZpY2VQYXRoLCAwKSkgew0KPiArICAgIHJldHVybiBOVUxMOw0KPiAr ICB9DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gQWxsb2NhdGUgc3BhY2UgZm9yIHRoZSBjb21iaW5l ZCBkZXZpY2UgcGF0aC4gSXQgb25seSBoYXMgb25lIGVuZCBub2RlIG9mDQo+ICsgIC8vIGxlbmd0 aCBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wuDQo+ICsgIC8vDQo+ICsgIFNpemUxICAgICAgICAg PSBHZXREZXZpY2VQYXRoU2l6ZSAoRmlyc3REZXZpY2VQYXRoKTsNCj4gKyAgU2l6ZTIgICAgICAg ICA9IEdldERldmljZVBhdGhTaXplIChTZWNvbmREZXZpY2VQYXRoKTsNCj4gKyAgU2l6ZSAgICAg ICAgICA9IFNpemUxICsgU2l6ZTIgLSBFTkRfREVWSUNFX1BBVEhfTEVOR1RIOw0KPiArDQo+ICsg IE5ld0RldmljZVBhdGggPSBBbGxvY2F0ZVBvb2wgKFNpemUpOw0KPiArDQo+ICsgIGlmIChOZXdE ZXZpY2VQYXRoICE9IE5VTEwpIHsNCj4gKyAgICBOZXdEZXZpY2VQYXRoID0gbWVtY3B5IChOZXdE ZXZpY2VQYXRoLCBGaXJzdERldmljZVBhdGgsIFNpemUxKTsNCj4gKyAgICAvLw0KPiArICAgIC8v IE92ZXIgd3JpdGUgRmlyc3REZXZpY2VQYXRoIEVuZE5vZGUgYW5kIGRvIHRoZSBjb3B5DQo+ICsg ICAgLy8NCj4gKyAgICBEZXZpY2VQYXRoMiA9IChFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKikg KChDSEFSOCAqKSBOZXdEZXZpY2VQYXRoICsNCj4gKyAgICAgICAgICAgICAgICAgIChTaXplMSAt IEVORF9ERVZJQ0VfUEFUSF9MRU5HVEgpKTsNCj4gKyAgICBtZW1jcHkgKERldmljZVBhdGgyLCBT ZWNvbmREZXZpY2VQYXRoLCBTaXplMik7DQo+ICsgIH0NCj4gKw0KPiArICByZXR1cm4gTmV3RGV2 aWNlUGF0aDsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIENyZWF0ZXMgYSBuZXcgcGF0aCBieSBh cHBlbmRpbmcgdGhlIGRldmljZSBub2RlIHRvIHRoZSBkZXZpY2UgcGF0aC4NCj4gKw0KPiArICBU aGlzIGZ1bmN0aW9uIGNyZWF0ZXMgYSBuZXcgZGV2aWNlIHBhdGggYnkgYXBwZW5kaW5nIGEgY29w eSBvZiB0aGUgZGV2aWNlIG5vZGUNCj4gKyAgc3BlY2lmaWVkIGJ5IERldmljZVBhdGhOb2RlIHRv IGEgY29weSBvZiB0aGUgZGV2aWNlIHBhdGggc3BlY2lmaWVkIGJ5IERldmljZVBhdGgNCj4gKyAg aW4gYW4gYWxsb2NhdGVkIGJ1ZmZlci4gVGhlIGVuZC1vZi1kZXZpY2UtcGF0aCBkZXZpY2Ugbm9k ZSBpcyBtb3ZlZCBhZnRlciB0aGUNCj4gKyAgZW5kIG9mIHRoZSBhcHBlbmRlZCBkZXZpY2Ugbm9k ZS4NCj4gKyAgSWYgRGV2aWNlUGF0aE5vZGUgaXMgTlVMTCB0aGVuIGEgY29weSBvZiBEZXZpY2VQ YXRoIGlzIHJldHVybmVkLg0KPiArICBJZiBEZXZpY2VQYXRoIGlzIE5VTEwgdGhlbiBhIGNvcHkg b2YgRGV2aWNlUGF0aE5vZGUsIGZvbGxvd2VkIGJ5IGFuIGVuZC1vZi1kZXZpY2UNCj4gKyAgcGF0 aCBkZXZpY2Ugbm9kZSBpcyByZXR1cm5lZC4NCj4gKyAgSWYgYm90aCBEZXZpY2VQYXRoTm9kZSBh bmQgRGV2aWNlUGF0aCBhcmUgTlVMTCB0aGVuIGEgY29weSBvZiBhbiBlbmQtb2YtZGV2aWNlLXBh dGgNCj4gKyAgZGV2aWNlIG5vZGUgaXMgcmV0dXJuZWQuDQo+ICsgIElmIHRoZXJlIGlzIG5vdCBl bm91Z2ggbWVtb3J5IHRvIGFsbG9jYXRlIHNwYWNlIGZvciB0aGUgbmV3IGRldmljZSBwYXRoLCB0 aGVuDQo+ICsgIE5VTEwgaXMgcmV0dXJuZWQuDQo+ICsgIFRoZSBtZW1vcnkgaXMgYWxsb2NhdGVk IGZyb20gRUZJIGJvb3Qgc2VydmljZXMgbWVtb3J5LiBJdCBpcyB0aGUgcmVzcG9uc2liaWxpdHkN Cj4gKyAgb2YgdGhlIGNhbGxlciB0byBmcmVlIHRoZSBtZW1vcnkgYWxsb2NhdGVkLg0KPiArDQo+ ICsgIEBwYXJhbSAgRGV2aWNlUGF0aCAgICAgICAgICAgICAgICAgQSBwb2ludGVyIHRvIGEgZGV2 aWNlIHBhdGggZGF0YSBzdHJ1Y3R1cmUuDQo+ICsgIEBwYXJhbSAgRGV2aWNlUGF0aE5vZGUgICAg ICAgICAgICAgQSBwb2ludGVyIHRvIGEgc2luZ2xlIGRldmljZSBwYXRoIG5vZGUuDQo+ICsNCj4g KyAgQHJldHZhbCBOVUxMICAgICAgSWYgdGhlcmUgaXMgbm90IGVub3VnaCBtZW1vcnkgZm9yIHRo ZSBuZXcgZGV2aWNlIHBhdGguDQo+ICsgIEByZXR2YWwgT3RoZXJzICAgIEEgcG9pbnRlciB0byB0 aGUgbmV3IGRldmljZSBwYXRoIGlmIHN1Y2Nlc3MuDQo+ICsgICAgICAgICAgICAgICAgICAgIEEg Y29weSBvZiBEZXZpY2VQYXRoTm9kZSBmb2xsb3dlZCBieSBhbiBlbmQtb2YtZGV2aWNlLXBhdGgg bm9kZQ0KPiArICAgICAgICAgICAgICAgICAgICBpZiBib3RoIEZpcnN0RGV2aWNlUGF0aCBhbmQg U2Vjb25kRGV2aWNlUGF0aCBhcmUgTlVMTC4NCj4gKyAgICAgICAgICAgICAgICAgICAgQSBjb3B5 IG9mIGFuIGVuZC1vZi1kZXZpY2UtcGF0aCBub2RlIGlmIGJvdGggRmlyc3REZXZpY2VQYXRoDQo+ ICsgICAgICAgICAgICAgICAgICAgIGFuZCBTZWNvbmREZXZpY2VQYXRoIGFyZSBOVUxMLg0KPiAr DQo+ICsqKi8NCj4gK0VGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqDQo+ICtVZWZpRGV2aWNlUGF0 aExpYkFwcGVuZERldmljZVBhdGhOb2RlICgNCj4gKyAgIENPTlNUIEVGSV9ERVZJQ0VfUEFUSF9Q Uk9UT0NPTCAgKkRldmljZVBhdGgsDQo+ICsgICBDT05TVCBFRklfREVWSUNFX1BBVEhfUFJPVE9D T0wgICpEZXZpY2VQYXRoTm9kZQ0KPiArICApDQo+ICt7DQo+ICsgIEVGSV9ERVZJQ0VfUEFUSF9Q Uk9UT0NPTCAgKlRlbXBEZXZpY2VQYXRoOw0KPiArICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wg ICpOZXh0Tm9kZTsNCj4gKyAgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICAqTmV3RGV2aWNlUGF0 aDsNCj4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBOb2RlTGVuZ3RoOw0KPiArDQo+ICsg IGlmIChEZXZpY2VQYXRoTm9kZSA9PSBOVUxMKSB7DQo+ICsgICAgcmV0dXJuIER1cGxpY2F0ZURl dmljZVBhdGggKChEZXZpY2VQYXRoICE9IE5VTEwpID8gRGV2aWNlUGF0aCA6ICZtVWVmaURldmlj ZVBhdGhMaWJFbmREZXZpY2VQYXRoKTsNCj4gKyAgfQ0KPiArICAvLw0KPiArICAvLyBCdWlsZCBh IE5vZGUgdGhhdCBoYXMgYSB0ZXJtaW5hdG9yIG9uIGl0DQo+ICsgIC8vDQo+ICsgIE5vZGVMZW5n dGggPSBEZXZpY2VQYXRoTm9kZUxlbmd0aCAoRGV2aWNlUGF0aE5vZGUpOw0KPiArDQo+ICsgIFRl bXBEZXZpY2VQYXRoID0gQWxsb2NhdGVQb29sIChOb2RlTGVuZ3RoICsgRU5EX0RFVklDRV9QQVRI X0xFTkdUSCk7DQo+ICsgIGlmIChUZW1wRGV2aWNlUGF0aCA9PSBOVUxMKSB7DQo+ICsgICAgcmV0 dXJuIE5VTEw7DQo+ICsgIH0NCj4gKyAgVGVtcERldmljZVBhdGggPSBtZW1jcHkgKFRlbXBEZXZp Y2VQYXRoLCBEZXZpY2VQYXRoTm9kZSwgTm9kZUxlbmd0aCk7DQo+ICsgIC8vDQo+ICsgIC8vIEFk ZCBhbmQgZW5kIGRldmljZSBwYXRoIG5vZGUgdG8gY29udmVydCBOb2RlIHRvIGRldmljZSBwYXRo DQo+ICsgIC8vDQo+ICsgIE5leHROb2RlID0gTmV4dERldmljZVBhdGhOb2RlIChUZW1wRGV2aWNl UGF0aCk7DQo+ICsgIFNldERldmljZVBhdGhFbmROb2RlIChOZXh0Tm9kZSk7DQo+ICsgIC8vDQo+ ICsgIC8vIEFwcGVuZCBkZXZpY2UgcGF0aHMNCj4gKyAgLy8NCj4gKyAgTmV3RGV2aWNlUGF0aCA9 IEFwcGVuZERldmljZVBhdGggKERldmljZVBhdGgsIFRlbXBEZXZpY2VQYXRoKTsNCj4gKw0KPiAr ICBmcmVlIChUZW1wRGV2aWNlUGF0aCk7DQo+ICsNCj4gKyAgcmV0dXJuIE5ld0RldmljZVBhdGg7 DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBDcmVhdGVzIGEgbmV3IGRldmljZSBwYXRoIGJ5IGFw cGVuZGluZyB0aGUgc3BlY2lmaWVkIGRldmljZSBwYXRoIGluc3RhbmNlIHRvIHRoZSBzcGVjaWZp ZWQgZGV2aWNlDQo+ICsgIHBhdGguDQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBjcmVhdGVzIGEg bmV3IGRldmljZSBwYXRoIGJ5IGFwcGVuZGluZyBhIGNvcHkgb2YgdGhlIGRldmljZSBwYXRoDQo+ ICsgIGluc3RhbmNlIHNwZWNpZmllZCBieSBEZXZpY2VQYXRoSW5zdGFuY2UgdG8gYSBjb3B5IG9m IHRoZSBkZXZpY2UgcGF0aCBzcGVjaWZpZWQNCj4gKyAgYnkgRGV2aWNlUGF0aCBpbiBhIGFsbG9j YXRlZCBidWZmZXIuDQo+ICsgIFRoZSBlbmQtb2YtZGV2aWNlLXBhdGggZGV2aWNlIG5vZGUgaXMg bW92ZWQgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgYXBwZW5kZWQgZGV2aWNlDQo+ICsgIHBhdGggaW5z dGFuY2UgYW5kIGEgbmV3IGVuZC1vZi1kZXZpY2UtcGF0aC1pbnN0YW5jZSBub2RlIGlzIGluc2Vy dGVkIGJldHdlZW4uDQo+ICsgIElmIERldmljZVBhdGggaXMgTlVMTCwgdGhlbiBhIGNvcHkgaWYg RGV2aWNlUGF0aEluc3RhbmNlIGlzIHJldHVybmVkLg0KPiArICBJZiBEZXZpY2VQYXRoSW5zdGFu Y2UgaXMgTlVMTCwgdGhlbiBOVUxMIGlzIHJldHVybmVkLg0KPiArICBJZiBEZXZpY2VQYXRoIG9y IERldmljZVBhdGhJbnN0YW5jZSBpcyBpbnZhbGlkLCB0aGVuIE5VTEwgaXMgcmV0dXJuZWQuDQo+ ICsgIElmIHRoZXJlIGlzIG5vdCBlbm91Z2ggbWVtb3J5IHRvIGFsbG9jYXRlIHNwYWNlIGZvciB0 aGUgbmV3IGRldmljZSBwYXRoLCB0aGVuDQo+ICsgIE5VTEwgaXMgcmV0dXJuZWQuDQo+ICsgIFRo ZSBtZW1vcnkgaXMgYWxsb2NhdGVkIGZyb20gRUZJIGJvb3Qgc2VydmljZXMgbWVtb3J5LiBJdCBp cyB0aGUgcmVzcG9uc2liaWxpdHkNCj4gKyAgb2YgdGhlIGNhbGxlciB0byBmcmVlIHRoZSBtZW1v cnkgYWxsb2NhdGVkLg0KPiArDQo+ICsgIEBwYXJhbSAgRGV2aWNlUGF0aCAgICAgICAgICAgICAg ICAgQSBwb2ludGVyIHRvIGEgZGV2aWNlIHBhdGggZGF0YSBzdHJ1Y3R1cmUuDQo+ICsgIEBwYXJh bSAgRGV2aWNlUGF0aEluc3RhbmNlICAgICAgICAgQSBwb2ludGVyIHRvIGEgZGV2aWNlIHBhdGgg aW5zdGFuY2UuDQo+ICsNCj4gKyAgQHJldHVybiBBIHBvaW50ZXIgdG8gdGhlIG5ldyBkZXZpY2Ug cGF0aC4NCj4gKw0KPiArKiovDQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0KPiArVWVm aURldmljZVBhdGhMaWJBcHBlbmREZXZpY2VQYXRoSW5zdGFuY2UgKA0KPiArICAgQ09OU1QgRUZJ X0RFVklDRV9QQVRIX1BST1RPQ09MICAqRGV2aWNlUGF0aCwNCj4gKyAgIENPTlNUIEVGSV9ERVZJ Q0VfUEFUSF9QUk9UT0NPTCAgKkRldmljZVBhdGhJbnN0YW5jZQ0KPiArICApDQo+ICt7DQo+ICsg IEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgKk5ld0RldmljZVBhdGg7DQo+ICsgIEVGSV9ERVZJ Q0VfUEFUSF9QUk9UT0NPTCAgKlRlbXBEZXZpY2VQYXRoOw0KPiArICBVSU5UTiAgICAgICAgICAg ICAgICAgICAgIFNyY1NpemU7DQo+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgSW5zdGFu Y2VTaXplOw0KPiArDQo+ICsgIGlmIChEZXZpY2VQYXRoID09IE5VTEwpIHsNCj4gKyAgICByZXR1 cm4gRHVwbGljYXRlRGV2aWNlUGF0aCAoRGV2aWNlUGF0aEluc3RhbmNlKTsNCj4gKyAgfQ0KPiAr DQo+ICsgIGlmIChEZXZpY2VQYXRoSW5zdGFuY2UgPT0gTlVMTCkgew0KPiArICAgIHJldHVybiBO VUxMOw0KPiArICB9DQo+ICsNCj4gKyAgaWYgKCFJc0RldmljZVBhdGhWYWxpZCAoRGV2aWNlUGF0 aCwgMCkgfHwgIUlzRGV2aWNlUGF0aFZhbGlkIChEZXZpY2VQYXRoSW5zdGFuY2UsIDApKSB7DQo+ ICsgICAgcmV0dXJuIE5VTEw7DQo+ICsgIH0NCj4gKw0KPiArICBTcmNTaXplICAgICAgID0gR2V0 RGV2aWNlUGF0aFNpemUgKERldmljZVBhdGgpOw0KPiArICBJbnN0YW5jZVNpemUgID0gR2V0RGV2 aWNlUGF0aFNpemUgKERldmljZVBhdGhJbnN0YW5jZSk7DQo+ICsNCj4gKyAgTmV3RGV2aWNlUGF0 aCA9IEFsbG9jYXRlUG9vbCAoU3JjU2l6ZSArIEluc3RhbmNlU2l6ZSk7DQo+ICsgIGlmIChOZXdE ZXZpY2VQYXRoICE9IE5VTEwpIHsNCj4gKw0KPiArICAgIFRlbXBEZXZpY2VQYXRoID0gbWVtY3B5 IChOZXdEZXZpY2VQYXRoLCBEZXZpY2VQYXRoLCBTcmNTaXplKTs7DQo+ICsNCj4gKyAgICB3aGls ZSAoIUlzRGV2aWNlUGF0aEVuZCAoVGVtcERldmljZVBhdGgpKSB7DQo+ICsgICAgICBUZW1wRGV2 aWNlUGF0aCA9IE5leHREZXZpY2VQYXRoTm9kZSAoVGVtcERldmljZVBhdGgpOw0KPiArICAgIH0N Cj4gKw0KPiArICAgIFRlbXBEZXZpY2VQYXRoLT5TdWJUeXBlICA9IEVORF9JTlNUQU5DRV9ERVZJ Q0VfUEFUSF9TVUJUWVBFOw0KPiArICAgIFRlbXBEZXZpY2VQYXRoICAgICAgICAgICA9IE5leHRE ZXZpY2VQYXRoTm9kZSAoVGVtcERldmljZVBhdGgpOw0KPiArICAgIG1lbWNweSAoVGVtcERldmlj ZVBhdGgsIERldmljZVBhdGhJbnN0YW5jZSwgSW5zdGFuY2VTaXplKTsNCj4gKyAgfQ0KPiArDQo+ ICsgIHJldHVybiBOZXdEZXZpY2VQYXRoOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgQ3JlYXRl cyBhIGNvcHkgb2YgdGhlIGN1cnJlbnQgZGV2aWNlIHBhdGggaW5zdGFuY2UgYW5kIHJldHVybnMg YSBwb2ludGVyIHRvIHRoZSBuZXh0IGRldmljZSBwYXRoDQo+ICsgIGluc3RhbmNlLg0KPiArDQo+ ICsgIFRoaXMgZnVuY3Rpb24gY3JlYXRlcyBhIGNvcHkgb2YgdGhlIGN1cnJlbnQgZGV2aWNlIHBh dGggaW5zdGFuY2UuIEl0IGFsc28gdXBkYXRlcw0KPiArICBEZXZpY2VQYXRoIHRvIHBvaW50IHRv IHRoZSBuZXh0IGRldmljZSBwYXRoIGluc3RhbmNlIGluIHRoZSBkZXZpY2UgcGF0aCAob3IgTlVM TA0KPiArICBpZiBubyBtb3JlKSBhbmQgdXBkYXRlcyBTaXplIHRvIGhvbGQgdGhlIHNpemUgb2Yg dGhlIGRldmljZSBwYXRoIGluc3RhbmNlIGNvcHkuDQo+ICsgIElmIERldmljZVBhdGggaXMgTlVM TCwgdGhlbiBOVUxMIGlzIHJldHVybmVkLg0KPiArICBJZiBEZXZpY2VQYXRoIHBvaW50cyB0byBh IGludmFsaWQgZGV2aWNlIHBhdGgsIHRoZW4gTlVMTCBpcyByZXR1cm5lZC4NCj4gKyAgSWYgdGhl cmUgaXMgbm90IGVub3VnaCBtZW1vcnkgdG8gYWxsb2NhdGUgc3BhY2UgZm9yIHRoZSBuZXcgZGV2 aWNlIHBhdGgsIHRoZW4NCj4gKyAgTlVMTCBpcyByZXR1cm5lZC4NCj4gKyAgVGhlIG1lbW9yeSBp cyBhbGxvY2F0ZWQgZnJvbSBFRkkgYm9vdCBzZXJ2aWNlcyBtZW1vcnkuIEl0IGlzIHRoZSByZXNw b25zaWJpbGl0eQ0KPiArICBvZiB0aGUgY2FsbGVyIHRvIGZyZWUgdGhlIG1lbW9yeSBhbGxvY2F0 ZWQuDQo+ICsgIElmIFNpemUgaXMgTlVMTCwgdGhlbiBBU1NFUlQoKS4NCj4gKw0KPiArICBAcGFy YW0gIERldmljZVBhdGggICAgICAgICAgICAgICAgIE9uIGlucHV0LCB0aGlzIGhvbGRzIHRoZSBw b2ludGVyIHRvIHRoZSBjdXJyZW50DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZGV2aWNlIHBhdGggaW5zdGFuY2UuIE9uIG91dHB1dCwgdGhpcyBob2xkcw0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBwb2ludGVyIHRvIHRoZSBuZXh0 IGRldmljZSBwYXRoIGluc3RhbmNlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgb3IgTlVMTCBpZiB0aGVyZSBhcmUgbm8gbW9yZSBkZXZpY2UgcGF0aA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlcyBpbiB0aGUgZGV2aWNlIHBh dGggcG9pbnRlciB0byBhDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZGV2aWNlIHBhdGggZGF0YSBzdHJ1Y3R1cmUuDQo+ICsgIEBwYXJhbSAgU2l6ZSAgICAgICAgICAg ICAgICAgICAgICAgT24gb3V0cHV0LCB0aGlzIGhvbGRzIHRoZSBzaXplIG9mIHRoZSBkZXZpY2UN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoIGluc3RhbmNlLCBp biBieXRlcyBvciB6ZXJvLCBpZiBEZXZpY2VQYXRoDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaXMgTlVMTC4NCj4gKw0KPiArICBAcmV0dXJuIEEgcG9pbnRlciB0byB0 aGUgY3VycmVudCBkZXZpY2UgcGF0aCBpbnN0YW5jZS4NCj4gKw0KPiArKiovDQo+ICtFRklfREVW SUNFX1BBVEhfUFJPVE9DT0wgKg0KPiArVWVmaURldmljZVBhdGhMaWJHZXROZXh0RGV2aWNlUGF0 aEluc3RhbmNlICgNCj4gKyAgIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAqKkRldmljZVBh dGgsDQo+ICsgICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgKlNpemUNCj4gKyAgKQ0K PiArew0KPiArICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICpEZXZQYXRoOw0KPiArICBFRklf REVWSUNFX1BBVEhfUFJPVE9DT0wgICpSZXR1cm5WYWx1ZTsNCj4gKyAgVUlOVDggICAgICAgICAg ICAgICAgICAgICBUZW1wOw0KPiArDQo+ICsgIEFTU0VSVCAoU2l6ZSAhPSBOVUxMKTsNCj4gKw0K PiArICBpZiAoRGV2aWNlUGF0aCA9PSBOVUxMIHx8ICpEZXZpY2VQYXRoID09IE5VTEwpIHsNCj4g KyAgICAqU2l6ZSA9IDA7DQo+ICsgICAgcmV0dXJuIE5VTEw7DQo+ICsgIH0NCj4gKw0KPiArICBp ZiAoIUlzRGV2aWNlUGF0aFZhbGlkICgqRGV2aWNlUGF0aCwgMCkpIHsNCj4gKyAgICByZXR1cm4g TlVMTDsNCj4gKyAgfQ0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIEZpbmQgdGhlIGVuZCBvZiB0aGUg ZGV2aWNlIHBhdGggaW5zdGFuY2UNCj4gKyAgLy8NCj4gKyAgRGV2UGF0aCA9ICpEZXZpY2VQYXRo Ow0KPiArICB3aGlsZSAoIUlzRGV2aWNlUGF0aEVuZFR5cGUgKERldlBhdGgpKSB7DQo+ICsgICAg RGV2UGF0aCA9IE5leHREZXZpY2VQYXRoTm9kZSAoRGV2UGF0aCk7DQo+ICsgIH0NCj4gKw0KPiAr ICAvLw0KPiArICAvLyBDb21wdXRlIHRoZSBzaXplIG9mIHRoZSBkZXZpY2UgcGF0aCBpbnN0YW5j ZQ0KPiArICAvLw0KPiArICAqU2l6ZSA9ICgoVUlOVE4pIERldlBhdGggLSAoVUlOVE4pICgqRGV2 aWNlUGF0aCkpICsgc2l6ZW9mIChFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wpOw0KPiArDQo+ICsg IC8vDQo+ICsgIC8vIE1ha2UgYSBjb3B5IGFuZCByZXR1cm4gdGhlIGRldmljZSBwYXRoIGluc3Rh bmNlDQo+ICsgIC8vDQo+ICsgIFRlbXAgICAgICAgICAgICAgID0gRGV2UGF0aC0+U3ViVHlwZTsN Cj4gKyAgRGV2UGF0aC0+U3ViVHlwZSAgPSBFTkRfRU5USVJFX0RFVklDRV9QQVRIX1NVQlRZUEU7 DQo+ICsgIFJldHVyblZhbHVlICAgICAgID0gRHVwbGljYXRlRGV2aWNlUGF0aCAoKkRldmljZVBh dGgpOw0KPiArICBEZXZQYXRoLT5TdWJUeXBlICA9IFRlbXA7DQo+ICsNCj4gKyAgLy8NCj4gKyAg Ly8gSWYgRGV2UGF0aCBpcyB0aGUgZW5kIG9mIGFuIGVudGlyZSBkZXZpY2UgcGF0aCwgdGhlbiBh bm90aGVyIGluc3RhbmNlDQo+ICsgIC8vIGRvZXMgbm90IGZvbGxvdywgc28gKkRldmljZVBhdGgg aXMgc2V0IHRvIE5VTEwuDQo+ICsgIC8vDQo+ICsgIGlmIChEZXZpY2VQYXRoU3ViVHlwZSAoRGV2 UGF0aCkgPT0gRU5EX0VOVElSRV9ERVZJQ0VfUEFUSF9TVUJUWVBFKSB7DQo+ICsgICAgKkRldmlj ZVBhdGggPSBOVUxMOw0KPiArICB9IGVsc2Ugew0KPiArICAgICpEZXZpY2VQYXRoID0gTmV4dERl dmljZVBhdGhOb2RlIChEZXZQYXRoKTsNCj4gKyAgfQ0KPiArDQo+ICsgIHJldHVybiBSZXR1cm5W YWx1ZTsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIENyZWF0ZXMgYSBkZXZpY2Ugbm9kZS4NCj4g Kw0KPiArICBUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgYSBuZXcgZGV2aWNlIG5vZGUgaW4gYSBuZXds eSBhbGxvY2F0ZWQgYnVmZmVyIG9mIHNpemUNCj4gKyAgTm9kZUxlbmd0aCBhbmQgaW5pdGlhbGl6 ZXMgdGhlIGRldmljZSBwYXRoIG5vZGUgaGVhZGVyIHdpdGggTm9kZVR5cGUgYW5kIE5vZGVTdWJU eXBlLg0KPiArICBUaGUgbmV3IGRldmljZSBwYXRoIG5vZGUgaXMgcmV0dXJuZWQuDQo+ICsgIElm IE5vZGVMZW5ndGggaXMgc21hbGxlciB0aGFuIGEgZGV2aWNlIHBhdGggaGVhZGVyLCB0aGVuIE5V TEwgaXMgcmV0dXJuZWQuDQo+ICsgIElmIHRoZXJlIGlzIG5vdCBlbm91Z2ggbWVtb3J5IHRvIGFs bG9jYXRlIHNwYWNlIGZvciB0aGUgbmV3IGRldmljZSBwYXRoLCB0aGVuDQo+ICsgIE5VTEwgaXMg cmV0dXJuZWQuDQo+ICsgIFRoZSBtZW1vcnkgaXMgYWxsb2NhdGVkIGZyb20gRUZJIGJvb3Qgc2Vy dmljZXMgbWVtb3J5LiBJdCBpcyB0aGUgcmVzcG9uc2liaWxpdHkNCj4gKyAgb2YgdGhlIGNhbGxl ciB0byBmcmVlIHRoZSBtZW1vcnkgYWxsb2NhdGVkLg0KPiArDQo+ICsgIEBwYXJhbSAgTm9kZVR5 cGUgICAgICAgICAgICAgICAgICAgVGhlIGRldmljZSBub2RlIHR5cGUgZm9yIHRoZSBuZXcgZGV2 aWNlIG5vZGUuDQo+ICsgIEBwYXJhbSAgTm9kZVN1YlR5cGUgICAgICAgICAgICAgICAgVGhlIGRl dmljZSBub2RlIHN1Yi10eXBlIGZvciB0aGUgbmV3IGRldmljZSBub2RlLg0KPiArICBAcGFyYW0g IE5vZGVMZW5ndGggICAgICAgICAgICAgICAgIFRoZSBsZW5ndGggb2YgdGhlIG5ldyBkZXZpY2Ug bm9kZS4NCj4gKw0KPiArICBAcmV0dXJuIFRoZSBuZXcgZGV2aWNlIHBhdGguDQo+ICsNCj4gKyoq Lw0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoNCj4gK1VlZmlEZXZpY2VQYXRoTGliQ3Jl YXRlRGV2aWNlTm9kZSAoDQo+ICsgICBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgIE5v ZGVUeXBlLA0KPiArICAgVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAgICBOb2RlU3ViVHlw ZSwNCj4gKyAgIFVJTlQxNiAgICAgICAgICAgICAgICAgICAgICAgICAgTm9kZUxlbmd0aA0KPiAr ICApDQo+ICt7DQo+ICsgIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAgICpEZXZpY2VQYXRo Ow0KPiArDQo+ICsgIGlmIChOb2RlTGVuZ3RoIDwgc2l6ZW9mIChFRklfREVWSUNFX1BBVEhfUFJP VE9DT0wpKSB7DQo+ICsgICAgLy8NCj4gKyAgICAvLyBOb2RlTGVuZ3RoIGlzIGxlc3MgdGhhbiB0 aGUgc2l6ZSBvZiB0aGUgaGVhZGVyLg0KPiArICAgIC8vDQo+ICsgICAgcmV0dXJuIE5VTEw7DQo+ ICsgIH0NCj4gKw0KPiArICBEZXZpY2VQYXRoID0gQWxsb2NhdGVaZXJvUG9vbCAoTm9kZUxlbmd0 aCk7DQo+ICsgIGlmIChEZXZpY2VQYXRoICE9IE5VTEwpIHsNCj4gKyAgICAgRGV2aWNlUGF0aC0+ VHlwZSAgICA9IE5vZGVUeXBlOw0KPiArICAgICBEZXZpY2VQYXRoLT5TdWJUeXBlID0gTm9kZVN1 YlR5cGU7DQo+ICsgICAgIFNldERldmljZVBhdGhOb2RlTGVuZ3RoIChEZXZpY2VQYXRoLCBOb2Rl TGVuZ3RoKTsNCj4gKyAgfQ0KPiArDQo+ICsgIHJldHVybiBEZXZpY2VQYXRoOw0KPiArfQ0KPiAr DQo+ICsvKioNCj4gKyAgRGV0ZXJtaW5lcyBpZiBhIGRldmljZSBwYXRoIGlzIHNpbmdsZSBvciBt dWx0aS1pbnN0YW5jZS4NCj4gKw0KPiArICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgVFJVRSBpZiB0 aGUgZGV2aWNlIHBhdGggc3BlY2lmaWVkIGJ5IERldmljZVBhdGggaXMNCj4gKyAgbXVsdGktaW5z dGFuY2UuDQo+ICsgIE90aGVyd2lzZSwgRkFMU0UgaXMgcmV0dXJuZWQuDQo+ICsgIElmIERldmlj ZVBhdGggaXMgTlVMTCBvciBpbnZhbGlkLCB0aGVuIEZBTFNFIGlzIHJldHVybmVkLg0KPiArDQo+ ICsgIEBwYXJhbSAgRGV2aWNlUGF0aCAgICAgICAgICAgICAgICAgQSBwb2ludGVyIHRvIGEgZGV2 aWNlIHBhdGggZGF0YSBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyAgQHJldHZhbCAgVFJVRSAgICAgICAg ICAgICAgICAgICAgICBEZXZpY2VQYXRoIGlzIG11bHRpLWluc3RhbmNlLg0KPiArICBAcmV0dmFs ICBGQUxTRSAgICAgICAgICAgICAgICAgICAgIERldmljZVBhdGggaXMgbm90IG11bHRpLWluc3Rh bmNlLCBvciBEZXZpY2VQYXRoDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaXMgTlVMTCBvciBpbnZhbGlkLg0KPiArDQo+ICsqKi8NCj4gK0JPT0xFQU4NCj4gK1VlZmlE ZXZpY2VQYXRoTGliSXNEZXZpY2VQYXRoTXVsdGlJbnN0YW5jZSAoDQo+ICsgICBDT05TVCBFRklf REVWSUNFX1BBVEhfUFJPVE9DT0wgICpEZXZpY2VQYXRoDQo+ICsgICkNCj4gK3sNCj4gKyAgQ09O U1QgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICAgICAqTm9kZTsNCj4gKw0KPiArICBpZiAoRGV2 aWNlUGF0aCA9PSBOVUxMKSB7DQo+ICsgICAgcmV0dXJuIEZBTFNFOw0KPiArICB9DQo+ICsNCj4g KyAgaWYgKCFJc0RldmljZVBhdGhWYWxpZCAoRGV2aWNlUGF0aCwgMCkpIHsNCj4gKyAgICByZXR1 cm4gRkFMU0U7DQo+ICsgIH0NCj4gKw0KPiArICBOb2RlID0gRGV2aWNlUGF0aDsNCj4gKyAgd2hp bGUgKCFJc0RldmljZVBhdGhFbmQgKE5vZGUpKSB7DQo+ICsgICAgaWYgKElzRGV2aWNlUGF0aEVu ZEluc3RhbmNlIChOb2RlKSkgew0KPiArICAgICAgcmV0dXJuIFRSVUU7DQo+ICsgICAgfQ0KPiAr DQo+ICsgICAgTm9kZSA9IE5leHREZXZpY2VQYXRoTm9kZSAoTm9kZSk7DQo+ICsgIH0NCj4gKw0K PiArICByZXR1cm4gRkFMU0U7DQo+ICt9DQo+ICsNCj4gKw0KPiArLyoqDQo+ICsgIFJldHJpZXZl cyB0aGUgZGV2aWNlIHBhdGggcHJvdG9jb2wgZnJvbSBhIGhhbmRsZS4NCj4gKw0KPiArICBUaGlz IGZ1bmN0aW9uIHJldHVybnMgdGhlIGRldmljZSBwYXRoIHByb3RvY29sIGZyb20gdGhlIGhhbmRs ZSBzcGVjaWZpZWQgYnkgSGFuZGxlLg0KPiArICBJZiBIYW5kbGUgaXMgTlVMTCBvciBIYW5kbGUg ZG9lcyBub3QgY29udGFpbiBhIGRldmljZSBwYXRoIHByb3RvY29sLCB0aGVuIE5VTEwNCj4gKyAg aXMgcmV0dXJuZWQuDQo+ICsNCj4gKyAgQHBhcmFtICBIYW5kbGUgICAgICAgICAgICAgICAgICAg ICBUaGUgaGFuZGxlIGZyb20gd2hpY2ggdG8gcmV0cmlldmUgdGhlIGRldmljZQ0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGggcHJvdG9jb2wuDQo+ICsNCj4gKyAg QHJldHVybiBUaGUgZGV2aWNlIHBhdGggcHJvdG9jb2wgZnJvbSB0aGUgaGFuZGxlIHNwZWNpZmll ZCBieSBIYW5kbGUuDQo+ICsNCj4gKyoqLw0KPiArLyoNCj4gK0VGSV9ERVZJQ0VfUEFUSF9QUk9U T0NPTCAqDQo+ICtEZXZpY2VQYXRoRnJvbUhhbmRsZSAoDQo+ICsgICBFRklfSEFORExFICAgICAg ICAgICAgICAgICAgICAgIEhhbmRsZQ0KPiArICApDQo+ICt7DQo+ICsgIEVGSV9ERVZJQ0VfUEFU SF9QUk9UT0NPTCAgKkRldmljZVBhdGg7DQo+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAg U3RhdHVzOw0KPiArDQo+ICsgIFN0YXR1cyA9IGdCUy0+SGFuZGxlUHJvdG9jb2wgKA0KPiArICAg ICAgICAgICAgICAgICAgSGFuZGxlLA0KPiArICAgICAgICAgICAgICAgICAgJmdFZmlEZXZpY2VQ YXRoUHJvdG9jb2xHdWlkLA0KPiArICAgICAgICAgICAgICAgICAgKFZPSUQgKikgJkRldmljZVBh dGgNCj4gKyAgICAgICAgICAgICAgICAgICk7DQo+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykp IHsNCj4gKyAgICBEZXZpY2VQYXRoID0gTlVMTDsNCj4gKyAgfQ0KPiArICByZXR1cm4gRGV2aWNl UGF0aDsNCj4gK30NCj4gKyovDQo+ICsvKioNCj4gKyAgQWxsb2NhdGVzIGEgZGV2aWNlIHBhdGgg Zm9yIGEgZmlsZSBhbmQgYXBwZW5kcyBpdCB0byBhbiBleGlzdGluZyBkZXZpY2UgcGF0aC4NCj4g Kw0KPiArICBJZiBEZXZpY2UgaXMgYSB2YWxpZCBkZXZpY2UgaGFuZGxlIHRoYXQgY29udGFpbnMg YSBkZXZpY2UgcGF0aCBwcm90b2NvbCwgdGhlbiBhIGRldmljZSBwYXRoIGZvcg0KPiArICB0aGUg ZmlsZSBzcGVjaWZpZWQgYnkgRmlsZU5hbWUgIGlzIGFsbG9jYXRlZCBhbmQgYXBwZW5kZWQgdG8g dGhlIGRldmljZSBwYXRoIGFzc29jaWF0ZWQgd2l0aCB0aGUNCj4gKyAgaGFuZGxlIERldmljZS4g IFRoZSBhbGxvY2F0ZWQgZGV2aWNlIHBhdGggaXMgcmV0dXJuZWQuICBJZiBEZXZpY2UgaXMgTlVM TCBvciBEZXZpY2UgaXMgYSBoYW5kbGUNCj4gKyAgdGhhdCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBk ZXZpY2UgcGF0aCBwcm90b2NvbCwgdGhlbiBhIGRldmljZSBwYXRoIGNvbnRhaW5pbmcgYSBzaW5n bGUgZGV2aWNlDQo+ICsgIHBhdGggbm9kZSBmb3IgdGhlIGZpbGUgc3BlY2lmaWVkIGJ5IEZpbGVO YW1lIGlzIGFsbG9jYXRlZCBhbmQgcmV0dXJuZWQuDQo+ICsgIFRoZSBtZW1vcnkgZm9yIHRoZSBu ZXcgZGV2aWNlIHBhdGggaXMgYWxsb2NhdGVkIGZyb20gRUZJIGJvb3Qgc2VydmljZXMgbWVtb3J5 LiBJdCBpcyB0aGUgcmVzcG9uc2liaWxpdHkNCj4gKyAgb2YgdGhlIGNhbGxlciB0byBmcmVlIHRo ZSBtZW1vcnkgYWxsb2NhdGVkLg0KPiArDQo+ICsgIElmIEZpbGVOYW1lIGlzIE5VTEwsIHRoZW4g QVNTRVJUKCkuDQo+ICsgIElmIEZpbGVOYW1lIGlzIG5vdCBhbGlnbmVkIG9uIGEgMTYtYml0IGJv dW5kYXJ5LCB0aGVuIEFTU0VSVCgpLg0KPiArDQo+ICsgIEBwYXJhbSAgRGV2aWNlICAgICAgICAg ICAgICAgICAgICAgQSBwb2ludGVyIHRvIGEgZGV2aWNlIGhhbmRsZS4gIFRoaXMgcGFyYW1ldGVy DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgb3B0aW9uYWwgYW5k IG1heSBiZSBOVUxMLg0KPiArICBAcGFyYW0gIEZpbGVOYW1lICAgICAgICAgICAgICAgICAgIEEg cG9pbnRlciB0byBhIE51bGwtdGVybWluYXRlZCBVbmljb2RlIHN0cmluZy4NCj4gKw0KPiArICBA cmV0dXJuIFRoZSBhbGxvY2F0ZWQgZGV2aWNlIHBhdGguDQo+ICsNCj4gKyoqLw0KPiArRUZJX0RF VklDRV9QQVRIX1BST1RPQ09MICoNCj4gK0ZpbGVEZXZpY2VQYXRoICgNCj4gKyAgIEVGSV9IQU5E TEUgICAgICAgICAgICAgICAgICAgICAgRGV2aWNlLCAgICAgT1BUSU9OQUwNCj4gKyAgIENPTlNU IENIQVIxNiAgICAgICAgICAgICAgICAgICAgKkZpbGVOYW1lDQo+ICsgICkNCj4gK3sNCj4gKyAg VUlOVE4gICAgICAgICAgICAgICAgICAgICBTaXplOw0KPiArICBGSUxFUEFUSF9ERVZJQ0VfUEFU SCAgICAgICpGaWxlUGF0aDsNCj4gKyAgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICAqRGV2aWNl UGF0aDsNCj4gKyAgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICAqRmlsZURldmljZVBhdGg7DQo+ ICsNCj4gKyAgRGV2aWNlUGF0aCA9IE5VTEw7DQo+ICsNCj4gKyAgU2l6ZSA9IFN0clNpemUgKEZp bGVOYW1lKTsNCj4gKyAgRmlsZURldmljZVBhdGggPSBBbGxvY2F0ZVBvb2wgKFNpemUgKyBTSVpF X09GX0ZJTEVQQVRIX0RFVklDRV9QQVRIICsgRU5EX0RFVklDRV9QQVRIX0xFTkdUSCk7DQo+ICsg IGlmIChGaWxlRGV2aWNlUGF0aCAhPSBOVUxMKSB7DQo+ICsgICAgRmlsZVBhdGggPSAoRklMRVBB VEhfREVWSUNFX1BBVEggKikgRmlsZURldmljZVBhdGg7DQo+ICsgICAgRmlsZVBhdGgtPkhlYWRl ci5UeXBlICAgID0gTUVESUFfREVWSUNFX1BBVEg7DQo+ICsgICAgRmlsZVBhdGgtPkhlYWRlci5T dWJUeXBlID0gTUVESUFfRklMRVBBVEhfRFA7DQo+ICsgICAgbWVtY3B5ICgmRmlsZVBhdGgtPlBh dGhOYW1lLCBGaWxlTmFtZSwgU2l6ZSk7DQo+ICsgICAgU2V0RGV2aWNlUGF0aE5vZGVMZW5ndGgg KCZGaWxlUGF0aC0+SGVhZGVyLCBTaXplICsgU0laRV9PRl9GSUxFUEFUSF9ERVZJQ0VfUEFUSCk7 DQo+ICsgICAgU2V0RGV2aWNlUGF0aEVuZE5vZGUgKE5leHREZXZpY2VQYXRoTm9kZSAoJkZpbGVQ YXRoLT5IZWFkZXIpKTsNCj4gKw0KPiArICAgIC8vaWYgKERldmljZSAhPSBOVUxMKSB7DQo+ICsg ICAgLy8gIERldmljZVBhdGggPSBEZXZpY2VQYXRoRnJvbUhhbmRsZSAoRGV2aWNlKTsNCj4gKyAg ICAvL30NCj4gKw0KPiArICAgIERldmljZVBhdGggPSBBcHBlbmREZXZpY2VQYXRoIChEZXZpY2VQ YXRoLCBGaWxlRGV2aWNlUGF0aCk7DQo+ICsgICAgZnJlZSAoRmlsZURldmljZVBhdGgpOw0KPiAr ICB9DQo+ICsNCj4gKyAgcmV0dXJuIERldmljZVBhdGg7DQo+ICt9DQo+IGRpZmYgLS1naXQgYS9C YXNlVG9vbHMvU291cmNlL0MvRGV2aWNlUGF0aC9HTlVtYWtlZmlsZSBiL0Jhc2VUb29scy9Tb3Vy Y2UvQy9EZXZpY2VQYXRoL0dOVW1ha2VmaWxlDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGlu ZGV4IDAwMDAwMDAuLjI3ZjZmYTENCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9CYXNlVG9vbHMv U291cmNlL0MvRGV2aWNlUGF0aC9HTlVtYWtlZmlsZQ0KPiBAQCAtMCwwICsxLDMwIEBADQo+ICsj IyBAZmlsZQ0KPiArIyBHTlUvTGludXggbWFrZWZpbGUgZm9yICdEZXZpY2VQYXRoJyBtb2R1bGUg YnVpbGQuDQo+ICsjDQo+ICsjIENvcHlyaWdodCAoYykgMjAxNywgSW50ZWwgQ29ycG9yYXRpb24u IEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiArIyBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2Nv bXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICsjIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUg dW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGljZW5zZQ0KPiArIyB3 aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhl IGxpY2Vuc2UgbWF5IGJlIGZvdW5kIGF0DQo+ICsjIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNl bnNlcy9ic2QtbGljZW5zZS5waHANCj4gKyMNCj4gKyMgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVU RUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyIgQkFTSVMsDQo+ICsjIFdJVEhP VVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBS RVNTIE9SIElNUExJRUQuDQo+ICsjDQo+ICtBUkNIID89IElBMzINCj4gK01BS0VST09UID89IC4u DQo+ICsNCj4gK0FQUE5BTUUgPSBEZXZpY2VQYXRoDQo+ICsNCj4gK09CSkVDVFMgPSBEZXZpY2VQ YXRoLm8gVWVmaURldmljZVBhdGhMaWIubyBEZXZpY2VQYXRoRnJvbVRleHQubyAgRGV2aWNlUGF0 aFV0aWxpdGllcy5vDQo+ICsNCj4gK2luY2x1ZGUgJChNQUtFUk9PVCkvTWFrZWZpbGVzL2FwcC5t YWtlZmlsZQ0KPiArDQo+ICtMSUJTID0gLWxDb21tb24NCj4gK2lmZXEgKCQoQ1lHV0lOKSwgQ1lH V0lOKQ0KPiArICBMSUJTICs9IC1ML2xpYi9lMmZzcHJvZ3MgLWx1dWlkDQo+ICtlbmRpZg0KPiAr DQo+ICtpZmVxICgkKExJTlVYKSwgTGludXgpDQo+ICsgIExJQlMgKz0gLWx1dWlkDQo+ICtlbmRp Zg0KPiArDQo+IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291cmNlL0MvRGV2aWNlUGF0aC9NYWtl ZmlsZSBiL0Jhc2VUb29scy9Tb3VyY2UvQy9EZXZpY2VQYXRoL01ha2VmaWxlDQo+IG5ldyBmaWxl IG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAuLmEwNjljMjINCj4gLS0tIC9kZXYvbnVsbA0K PiArKysgYi9CYXNlVG9vbHMvU291cmNlL0MvRGV2aWNlUGF0aC9NYWtlZmlsZQ0KPiBAQCAtMCww ICsxLDI0IEBADQo+ICsjIyBAZmlsZQ0KPiArIyBXaW5kb3dzIG1ha2VmaWxlIGZvciAnRGV2aWNl UGF0aCcgbW9kdWxlIGJ1aWxkLg0KPiArIw0KPiArIyBDb3B5cmlnaHQgKGMpIDIwMTcsIEludGVs IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gKyMgVGhpcyBwcm9ncmFt IGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiArIyBhcmUgbGljZW5zZWQgYW5kIG1h ZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEIExp Y2Vuc2UNCj4gKyMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVs bCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KPiArIyBodHRwOi8vb3BlbnNv dXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ICsjDQo+ICsjIFRIRSBQUk9HUkFN IElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiIEJBU0lT LA0KPiArIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5E LCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELg0KPiArIw0KPiArIUlOQ0xVREUgLi5cTWFrZWZp bGVzXG1zLmNvbW1vbg0KPiArDQo+ICtBUFBOQU1FID0gRGV2aWNlUGF0aA0KPiArDQo+ICtMSUJT ID0gJChMSUJfUEFUSClcQ29tbW9uLmxpYg0KPiArDQo+ICtPQkpFQ1RTID0gRGV2aWNlUGF0aC5v YmogVWVmaURldmljZVBhdGhMaWIub2JqIERldmljZVBhdGhGcm9tVGV4dC5vYmogIERldmljZVBh dGhVdGlsaXRpZXMub2JqDQo+ICsNCj4gKyNDRkxBR1MgPSAkKENGTEFHUykgL25vZGVmYXVsdGxp YjpsaWJjLmxpYg0KPiArDQo+ICshSU5DTFVERSAuLlxNYWtlZmlsZXNcbXMuYXBwDQo+ICsNCj4g ZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvQy9EZXZpY2VQYXRoL1VlZmlEZXZpY2VQYXRo TGliLmMgYi9CYXNlVG9vbHMvU291cmNlL0MvRGV2aWNlUGF0aC9VZWZpRGV2aWNlUGF0aExpYi5j DQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAuLmEyZTAzMjINCj4gLS0t IC9kZXYvbnVsbA0KPiArKysgYi9CYXNlVG9vbHMvU291cmNlL0MvRGV2aWNlUGF0aC9VZWZpRGV2 aWNlUGF0aExpYi5jDQo+IEBAIC0wLDAgKzEsMjk4IEBADQo+ICsvKiogQGZpbGUNCj4gKyAgRGV2 aWNlIFBhdGggc2VydmljZXMuIFRoZSB0aGluZyB0byByZW1lbWJlciBpcyBkZXZpY2UgcGF0aHMg YXJlIGJ1aWx0IG91dCBvZg0KPiArICBub2Rlcy4gVGhlIGRldmljZSBwYXRoIGlzIHRlcm1pbmF0 ZWQgYnkgYW4gZW5kIG5vZGUgdGhhdCBpcyBsZW5ndGgNCj4gKyAgc2l6ZW9mKEVGSV9ERVZJQ0Vf UEFUSF9QUk9UT0NPTCkuIFRoYXQgd291bGQgYmUgd2h5IHRoZXJlIGlzIHNpemVvZihFRklfREVW SUNFX1BBVEhfUFJPVE9DT0wpDQo+ICsgIGFsbCBvdmVyIHRoaXMgZmlsZS4NCj4gKw0KPiArICBU aGUgb25seSBwbGFjZSB3aGVyZSBtdWx0aS1pbnN0YW5jZSBkZXZpY2UgcGF0aHMgYXJlIHN1cHBv cnRlZCBpcyBpbg0KPiArICBlbnZpcm9ubWVudCB2YXJpYmxlcy4gTXVsdGktaW5zdGFuY2UgZGV2 aWNlIHBhdGhzIHNob3VsZCBuZXZlciBiZSBwbGFjZWQNCj4gKyAgb24gYSBIYW5kbGUuDQo+ICsN Cj4gKyAgQ29weXJpZ2h0IChjKSAyMDE3LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyBy ZXNlcnZlZC48QlI+DQo+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRl cmlhbHMNCj4gKyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVy bXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlDQo+ICsgIHdoaWNoIGFjY29tcGFu aWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkg YmUgZm91bmQgYXQNCj4gKyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNl bnNlLnBocC4NCj4gKw0KPiArICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUg QlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIiBCQVNJUywNCj4gKyAgV0lUSE9VVCBXQVJSQU5USUVT IE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElF RC4NCj4gKw0KPiArKiovDQo+ICsNCj4gKw0KPiArI2luY2x1ZGUgIlVlZmlEZXZpY2VQYXRoTGli LmgiDQo+ICsNCj4gKy8qKg0KPiArICBSZXR1cm5zIHRoZSBzaXplIG9mIGEgZGV2aWNlIHBhdGgg aW4gYnl0ZXMuDQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBzaXplLCBpbiBi eXRlcywgb2YgdGhlIGRldmljZSBwYXRoIGRhdGEgc3RydWN0dXJlDQo+ICsgIHNwZWNpZmllZCBi eSBEZXZpY2VQYXRoIGluY2x1ZGluZyB0aGUgZW5kIG9mIGRldmljZSBwYXRoIG5vZGUuDQo+ICsg IElmIERldmljZVBhdGggaXMgTlVMTCBvciBpbnZhbGlkLCB0aGVuIDAgaXMgcmV0dXJuZWQuDQo+ ICsNCj4gKyAgQHBhcmFtICBEZXZpY2VQYXRoICBBIHBvaW50ZXIgdG8gYSBkZXZpY2UgcGF0aCBk YXRhIHN0cnVjdHVyZS4NCj4gKw0KPiArICBAcmV0dmFsIDAgICAgICAgICAgIElmIERldmljZVBh dGggaXMgTlVMTCBvciBpbnZhbGlkLg0KPiArICBAcmV0dmFsIE90aGVycyAgICAgIFRoZSBzaXpl IG9mIGEgZGV2aWNlIHBhdGggaW4gYnl0ZXMuDQo+ICsNCj4gKyoqLw0KPiArVUlOVE4NCj4gK0dl dERldmljZVBhdGhTaXplICgNCj4gKyAgIENPTlNUIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAg KkRldmljZVBhdGgNCj4gKyAgKQ0KPiArew0KPiArICByZXR1cm4gVWVmaURldmljZVBhdGhMaWJH ZXREZXZpY2VQYXRoU2l6ZSAoRGV2aWNlUGF0aCk7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBD cmVhdGVzIGEgbmV3IGNvcHkgb2YgYW4gZXhpc3RpbmcgZGV2aWNlIHBhdGguDQo+ICsNCj4gKyAg VGhpcyBmdW5jdGlvbiBhbGxvY2F0ZXMgc3BhY2UgZm9yIGEgbmV3IGNvcHkgb2YgdGhlIGRldmlj ZSBwYXRoIHNwZWNpZmllZCBieSBEZXZpY2VQYXRoLg0KPiArICBJZiBEZXZpY2VQYXRoIGlzIE5V TEwsIHRoZW4gTlVMTCBpcyByZXR1cm5lZC4gIElmIHRoZSBtZW1vcnkgaXMgc3VjY2Vzc2Z1bGx5 DQo+ICsgIGFsbG9jYXRlZCwgdGhlbiB0aGUgY29udGVudHMgb2YgRGV2aWNlUGF0aCBhcmUgY29w aWVkIHRvIHRoZSBuZXdseSBhbGxvY2F0ZWQNCj4gKyAgYnVmZmVyLCBhbmQgYSBwb2ludGVyIHRv IHRoYXQgYnVmZmVyIGlzIHJldHVybmVkLiAgT3RoZXJ3aXNlLCBOVUxMIGlzIHJldHVybmVkLg0K PiArICBUaGUgbWVtb3J5IGZvciB0aGUgbmV3IGRldmljZSBwYXRoIGlzIGFsbG9jYXRlZCBmcm9t IEVGSSBib290IHNlcnZpY2VzIG1lbW9yeS4NCj4gKyAgSXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5 IG9mIHRoZSBjYWxsZXIgdG8gZnJlZSB0aGUgbWVtb3J5IGFsbG9jYXRlZC4NCj4gKw0KPiArICBA cGFyYW0gIERldmljZVBhdGggICAgQSBwb2ludGVyIHRvIGEgZGV2aWNlIHBhdGggZGF0YSBzdHJ1 Y3R1cmUuDQo+ICsNCj4gKyAgQHJldHZhbCBOVUxMICAgICAgICAgIERldmljZVBhdGggaXMgTlVM TCBvciBpbnZhbGlkLg0KPiArICBAcmV0dmFsIE90aGVycyAgICAgICAgQSBwb2ludGVyIHRvIHRo ZSBkdXBsaWNhdGVkIGRldmljZSBwYXRoLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9ERVZJQ0VfUEFU SF9QUk9UT0NPTCAqDQo+ICtEdXBsaWNhdGVEZXZpY2VQYXRoICgNCj4gKyAgIENPTlNUIEVGSV9E RVZJQ0VfUEFUSF9QUk9UT0NPTCAgKkRldmljZVBhdGgNCj4gKyAgKQ0KPiArew0KPiArICByZXR1 cm4gVWVmaURldmljZVBhdGhMaWJEdXBsaWNhdGVEZXZpY2VQYXRoIChEZXZpY2VQYXRoKTsNCj4g K30NCj4gKw0KPiArLyoqDQo+ICsgIENyZWF0ZXMgYSBuZXcgZGV2aWNlIHBhdGggYnkgYXBwZW5k aW5nIGEgc2Vjb25kIGRldmljZSBwYXRoIHRvIGEgZmlyc3QgZGV2aWNlIHBhdGguDQo+ICsNCj4g KyAgVGhpcyBmdW5jdGlvbiBjcmVhdGVzIGEgbmV3IGRldmljZSBwYXRoIGJ5IGFwcGVuZGluZyBh IGNvcHkgb2YgU2Vjb25kRGV2aWNlUGF0aA0KPiArICB0byBhIGNvcHkgb2YgRmlyc3REZXZpY2VQ YXRoIGluIGEgbmV3bHkgYWxsb2NhdGVkIGJ1ZmZlci4gIE9ubHkgdGhlIGVuZC1vZi1kZXZpY2Ut cGF0aA0KPiArICBkZXZpY2Ugbm9kZSBmcm9tIFNlY29uZERldmljZVBhdGggaXMgcmV0YWluZWQu IFRoZSBuZXdseSBjcmVhdGVkIGRldmljZSBwYXRoIGlzDQo+ICsgIHJldHVybmVkLiBJZiBGaXJz dERldmljZVBhdGggaXMgTlVMTCwgdGhlbiBpdCBpcyBpZ25vcmVkLCBhbmQgYSBkdXBsaWNhdGUg b2YNCj4gKyAgU2Vjb25kRGV2aWNlUGF0aCBpcyByZXR1cm5lZC4gIElmIFNlY29uZERldmljZVBh dGggaXMgTlVMTCwgdGhlbiBpdCBpcyBpZ25vcmVkLA0KPiArICBhbmQgYSBkdXBsaWNhdGUgb2Yg Rmlyc3REZXZpY2VQYXRoIGlzIHJldHVybmVkLiBJZiBib3RoIEZpcnN0RGV2aWNlUGF0aCBhbmQN Cj4gKyAgU2Vjb25kRGV2aWNlUGF0aCBhcmUgTlVMTCwgdGhlbiBhIGNvcHkgb2YgYW4gZW5kLW9m LWRldmljZS1wYXRoIGlzIHJldHVybmVkLg0KPiArDQo+ICsgIElmIHRoZXJlIGlzIG5vdCBlbm91 Z2ggbWVtb3J5IGZvciB0aGUgbmV3bHkgYWxsb2NhdGVkIGJ1ZmZlciwgdGhlbiBOVUxMIGlzIHJl dHVybmVkLg0KPiArICBUaGUgbWVtb3J5IGZvciB0aGUgbmV3IGRldmljZSBwYXRoIGlzIGFsbG9j YXRlZCBmcm9tIEVGSSBib290IHNlcnZpY2VzIG1lbW9yeS4NCj4gKyAgSXQgaXMgdGhlIHJlc3Bv bnNpYmlsaXR5IG9mIHRoZSBjYWxsZXIgdG8gZnJlZSB0aGUgbWVtb3J5IGFsbG9jYXRlZC4NCj4g Kw0KPiArICBAcGFyYW0gIEZpcnN0RGV2aWNlUGF0aCAgICAgICAgICAgIEEgcG9pbnRlciB0byBh IGRldmljZSBwYXRoIGRhdGEgc3RydWN0dXJlLg0KPiArICBAcGFyYW0gIFNlY29uZERldmljZVBh dGggICAgICAgICAgIEEgcG9pbnRlciB0byBhIGRldmljZSBwYXRoIGRhdGEgc3RydWN0dXJlLg0K PiArDQo+ICsgIEByZXR2YWwgTlVMTCAgICAgIElmIHRoZXJlIGlzIG5vdCBlbm91Z2ggbWVtb3J5 IGZvciB0aGUgbmV3bHkgYWxsb2NhdGVkIGJ1ZmZlci4NCj4gKyAgQHJldHZhbCBOVUxMICAgICAg SWYgRmlyc3REZXZpY2VQYXRoIG9yIFNlY29uZERldmljZVBhdGggaXMgaW52YWxpZC4NCj4gKyAg QHJldHZhbCBPdGhlcnMgICAgQSBwb2ludGVyIHRvIHRoZSBuZXcgZGV2aWNlIHBhdGggaWYgc3Vj Y2Vzcy4NCj4gKyAgICAgICAgICAgICAgICAgICAgT3IgYSBjb3B5IGFuIGVuZC1vZi1kZXZpY2Ut cGF0aCBpZiBib3RoIEZpcnN0RGV2aWNlUGF0aCBhbmQgU2Vjb25kRGV2aWNlUGF0aCBhcmUgTlVM TC4NCj4gKw0KPiArKiovDQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0KPiArQXBwZW5k RGV2aWNlUGF0aCAoDQo+ICsgICBDT05TVCBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICpGaXJz dERldmljZVBhdGgsICBPUFRJT05BTA0KPiArICAgQ09OU1QgRUZJX0RFVklDRV9QQVRIX1BST1RP Q09MICAqU2Vjb25kRGV2aWNlUGF0aCAgT1BUSU9OQUwNCj4gKyAgKQ0KPiArew0KPiArICByZXR1 cm4gVWVmaURldmljZVBhdGhMaWJBcHBlbmREZXZpY2VQYXRoIChGaXJzdERldmljZVBhdGgsIFNl Y29uZERldmljZVBhdGgpOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgQ3JlYXRlcyBhIG5ldyBw YXRoIGJ5IGFwcGVuZGluZyB0aGUgZGV2aWNlIG5vZGUgdG8gdGhlIGRldmljZSBwYXRoLg0KPiAr DQo+ICsgIFRoaXMgZnVuY3Rpb24gY3JlYXRlcyBhIG5ldyBkZXZpY2UgcGF0aCBieSBhcHBlbmRp bmcgYSBjb3B5IG9mIHRoZSBkZXZpY2Ugbm9kZQ0KPiArICBzcGVjaWZpZWQgYnkgRGV2aWNlUGF0 aE5vZGUgdG8gYSBjb3B5IG9mIHRoZSBkZXZpY2UgcGF0aCBzcGVjaWZpZWQgYnkgRGV2aWNlUGF0 aA0KPiArICBpbiBhbiBhbGxvY2F0ZWQgYnVmZmVyLiBUaGUgZW5kLW9mLWRldmljZS1wYXRoIGRl dmljZSBub2RlIGlzIG1vdmVkIGFmdGVyIHRoZQ0KPiArICBlbmQgb2YgdGhlIGFwcGVuZGVkIGRl dmljZSBub2RlLg0KPiArICBJZiBEZXZpY2VQYXRoTm9kZSBpcyBOVUxMIHRoZW4gYSBjb3B5IG9m IERldmljZVBhdGggaXMgcmV0dXJuZWQuDQo+ICsgIElmIERldmljZVBhdGggaXMgTlVMTCB0aGVu IGEgY29weSBvZiBEZXZpY2VQYXRoTm9kZSwgZm9sbG93ZWQgYnkgYW4gZW5kLW9mLWRldmljZQ0K PiArICBwYXRoIGRldmljZSBub2RlIGlzIHJldHVybmVkLg0KPiArICBJZiBib3RoIERldmljZVBh dGhOb2RlIGFuZCBEZXZpY2VQYXRoIGFyZSBOVUxMIHRoZW4gYSBjb3B5IG9mIGFuIGVuZC1vZi1k ZXZpY2UtcGF0aA0KPiArICBkZXZpY2Ugbm9kZSBpcyByZXR1cm5lZC4NCj4gKyAgSWYgdGhlcmUg aXMgbm90IGVub3VnaCBtZW1vcnkgdG8gYWxsb2NhdGUgc3BhY2UgZm9yIHRoZSBuZXcgZGV2aWNl IHBhdGgsIHRoZW4NCj4gKyAgTlVMTCBpcyByZXR1cm5lZC4NCj4gKyAgVGhlIG1lbW9yeSBpcyBh bGxvY2F0ZWQgZnJvbSBFRkkgYm9vdCBzZXJ2aWNlcyBtZW1vcnkuIEl0IGlzIHRoZSByZXNwb25z aWJpbGl0eQ0KPiArICBvZiB0aGUgY2FsbGVyIHRvIGZyZWUgdGhlIG1lbW9yeSBhbGxvY2F0ZWQu DQo+ICsNCj4gKyAgQHBhcmFtICBEZXZpY2VQYXRoICAgICAgICAgICAgICAgICBBIHBvaW50ZXIg dG8gYSBkZXZpY2UgcGF0aCBkYXRhIHN0cnVjdHVyZS4NCj4gKyAgQHBhcmFtICBEZXZpY2VQYXRo Tm9kZSAgICAgICAgICAgICBBIHBvaW50ZXIgdG8gYSBzaW5nbGUgZGV2aWNlIHBhdGggbm9kZS4N Cj4gKw0KPiArICBAcmV0dmFsIE5VTEwgICAgICBJZiB0aGVyZSBpcyBub3QgZW5vdWdoIG1lbW9y eSBmb3IgdGhlIG5ldyBkZXZpY2UgcGF0aC4NCj4gKyAgQHJldHZhbCBPdGhlcnMgICAgQSBwb2lu dGVyIHRvIHRoZSBuZXcgZGV2aWNlIHBhdGggaWYgc3VjY2Vzcy4NCj4gKyAgICAgICAgICAgICAg ICAgICAgQSBjb3B5IG9mIERldmljZVBhdGhOb2RlIGZvbGxvd2VkIGJ5IGFuIGVuZC1vZi1kZXZp Y2UtcGF0aCBub2RlDQo+ICsgICAgICAgICAgICAgICAgICAgIGlmIGJvdGggRmlyc3REZXZpY2VQ YXRoIGFuZCBTZWNvbmREZXZpY2VQYXRoIGFyZSBOVUxMLg0KPiArICAgICAgICAgICAgICAgICAg ICBBIGNvcHkgb2YgYW4gZW5kLW9mLWRldmljZS1wYXRoIG5vZGUgaWYgYm90aCBGaXJzdERldmlj ZVBhdGgNCj4gKyAgICAgICAgICAgICAgICAgICAgYW5kIFNlY29uZERldmljZVBhdGggYXJlIE5V TEwuDQo+ICsNCj4gKyoqLw0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoNCj4gK0FwcGVu ZERldmljZVBhdGhOb2RlICgNCj4gKyAgIENPTlNUIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAg KkRldmljZVBhdGgsICAgICBPUFRJT05BTA0KPiArICAgQ09OU1QgRUZJX0RFVklDRV9QQVRIX1BS T1RPQ09MICAqRGV2aWNlUGF0aE5vZGUgIE9QVElPTkFMDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0 dXJuIFVlZmlEZXZpY2VQYXRoTGliQXBwZW5kRGV2aWNlUGF0aE5vZGUgKERldmljZVBhdGgsIERl dmljZVBhdGhOb2RlKTsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIENyZWF0ZXMgYSBuZXcgZGV2 aWNlIHBhdGggYnkgYXBwZW5kaW5nIHRoZSBzcGVjaWZpZWQgZGV2aWNlIHBhdGggaW5zdGFuY2Ug dG8gdGhlIHNwZWNpZmllZCBkZXZpY2UNCj4gKyAgcGF0aC4NCj4gKw0KPiArICBUaGlzIGZ1bmN0 aW9uIGNyZWF0ZXMgYSBuZXcgZGV2aWNlIHBhdGggYnkgYXBwZW5kaW5nIGEgY29weSBvZiB0aGUg ZGV2aWNlIHBhdGgNCj4gKyAgaW5zdGFuY2Ugc3BlY2lmaWVkIGJ5IERldmljZVBhdGhJbnN0YW5j ZSB0byBhIGNvcHkgb2YgdGhlIGRldmljZSBwYXRoIHNwZWNpZmllZA0KPiArICBieSBEZXZpY2VQ YXRoIGluIGEgYWxsb2NhdGVkIGJ1ZmZlci4NCj4gKyAgVGhlIGVuZC1vZi1kZXZpY2UtcGF0aCBk ZXZpY2Ugbm9kZSBpcyBtb3ZlZCBhZnRlciB0aGUgZW5kIG9mIHRoZSBhcHBlbmRlZCBkZXZpY2UN Cj4gKyAgcGF0aCBpbnN0YW5jZSBhbmQgYSBuZXcgZW5kLW9mLWRldmljZS1wYXRoLWluc3RhbmNl IG5vZGUgaXMgaW5zZXJ0ZWQgYmV0d2Vlbi4NCj4gKyAgSWYgRGV2aWNlUGF0aCBpcyBOVUxMLCB0 aGVuIGEgY29weSBpZiBEZXZpY2VQYXRoSW5zdGFuY2UgaXMgcmV0dXJuZWQuDQo+ICsgIElmIERl dmljZVBhdGhJbnN0YW5jZSBpcyBOVUxMLCB0aGVuIE5VTEwgaXMgcmV0dXJuZWQuDQo+ICsgIElm IERldmljZVBhdGggb3IgRGV2aWNlUGF0aEluc3RhbmNlIGlzIGludmFsaWQsIHRoZW4gTlVMTCBp cyByZXR1cm5lZC4NCj4gKyAgSWYgdGhlcmUgaXMgbm90IGVub3VnaCBtZW1vcnkgdG8gYWxsb2Nh dGUgc3BhY2UgZm9yIHRoZSBuZXcgZGV2aWNlIHBhdGgsIHRoZW4NCj4gKyAgTlVMTCBpcyByZXR1 cm5lZC4NCj4gKyAgVGhlIG1lbW9yeSBpcyBhbGxvY2F0ZWQgZnJvbSBFRkkgYm9vdCBzZXJ2aWNl cyBtZW1vcnkuIEl0IGlzIHRoZSByZXNwb25zaWJpbGl0eQ0KPiArICBvZiB0aGUgY2FsbGVyIHRv IGZyZWUgdGhlIG1lbW9yeSBhbGxvY2F0ZWQuDQo+ICsNCj4gKyAgQHBhcmFtICBEZXZpY2VQYXRo ICAgICAgICAgICAgICAgICBBIHBvaW50ZXIgdG8gYSBkZXZpY2UgcGF0aCBkYXRhIHN0cnVjdHVy ZS4NCj4gKyAgQHBhcmFtICBEZXZpY2VQYXRoSW5zdGFuY2UgICAgICAgICBBIHBvaW50ZXIgdG8g YSBkZXZpY2UgcGF0aCBpbnN0YW5jZS4NCj4gKw0KPiArICBAcmV0dXJuIEEgcG9pbnRlciB0byB0 aGUgbmV3IGRldmljZSBwYXRoLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9ERVZJQ0VfUEFUSF9QUk9U T0NPTCAqDQo+ICtBcHBlbmREZXZpY2VQYXRoSW5zdGFuY2UgKA0KPiArICAgQ09OU1QgRUZJX0RF VklDRV9QQVRIX1BST1RPQ09MICAqRGV2aWNlUGF0aCwgICAgICAgIE9QVElPTkFMDQo+ICsgICBD T05TVCBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICpEZXZpY2VQYXRoSW5zdGFuY2UgT1BUSU9O QUwNCj4gKyAgKQ0KPiArew0KPiArICByZXR1cm4gVWVmaURldmljZVBhdGhMaWJBcHBlbmREZXZp Y2VQYXRoSW5zdGFuY2UgKERldmljZVBhdGgsIERldmljZVBhdGhJbnN0YW5jZSk7DQo+ICt9DQo+ ICsNCj4gKy8qKg0KPiArICBDcmVhdGVzIGEgY29weSBvZiB0aGUgY3VycmVudCBkZXZpY2UgcGF0 aCBpbnN0YW5jZSBhbmQgcmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIG5leHQgZGV2aWNlIHBhdGgN Cj4gKyAgaW5zdGFuY2UuDQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBjcmVhdGVzIGEgY29weSBv ZiB0aGUgY3VycmVudCBkZXZpY2UgcGF0aCBpbnN0YW5jZS4gSXQgYWxzbyB1cGRhdGVzDQo+ICsg IERldmljZVBhdGggdG8gcG9pbnQgdG8gdGhlIG5leHQgZGV2aWNlIHBhdGggaW5zdGFuY2UgaW4g dGhlIGRldmljZSBwYXRoIChvciBOVUxMDQo+ICsgIGlmIG5vIG1vcmUpIGFuZCB1cGRhdGVzIFNp emUgdG8gaG9sZCB0aGUgc2l6ZSBvZiB0aGUgZGV2aWNlIHBhdGggaW5zdGFuY2UgY29weS4NCj4g KyAgSWYgRGV2aWNlUGF0aCBpcyBOVUxMLCB0aGVuIE5VTEwgaXMgcmV0dXJuZWQuDQo+ICsgIElm IERldmljZVBhdGggcG9pbnRzIHRvIGEgaW52YWxpZCBkZXZpY2UgcGF0aCwgdGhlbiBOVUxMIGlz IHJldHVybmVkLg0KPiArICBJZiB0aGVyZSBpcyBub3QgZW5vdWdoIG1lbW9yeSB0byBhbGxvY2F0 ZSBzcGFjZSBmb3IgdGhlIG5ldyBkZXZpY2UgcGF0aCwgdGhlbg0KPiArICBOVUxMIGlzIHJldHVy bmVkLg0KPiArICBUaGUgbWVtb3J5IGlzIGFsbG9jYXRlZCBmcm9tIEVGSSBib290IHNlcnZpY2Vz IG1lbW9yeS4gSXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5DQo+ICsgIG9mIHRoZSBjYWxsZXIgdG8g ZnJlZSB0aGUgbWVtb3J5IGFsbG9jYXRlZC4NCj4gKyAgSWYgU2l6ZSBpcyBOVUxMLCB0aGVuIEFT U0VSVCgpLg0KPiArDQo+ICsgIEBwYXJhbSAgRGV2aWNlUGF0aCAgICAgICAgICAgICAgICAgT24g aW5wdXQsIHRoaXMgaG9sZHMgdGhlIHBvaW50ZXIgdG8gdGhlIGN1cnJlbnQNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2UgcGF0aCBpbnN0YW5jZS4gT24gb3V0 cHV0LCB0aGlzIGhvbGRzDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dGhlIHBvaW50ZXIgdG8gdGhlIG5leHQgZGV2aWNlIHBhdGggaW5zdGFuY2UNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBOVUxMIGlmIHRoZXJlIGFyZSBubyBtb3Jl IGRldmljZSBwYXRoDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5z dGFuY2VzIGluIHRoZSBkZXZpY2UgcGF0aCBwb2ludGVyIHRvIGENCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2UgcGF0aCBkYXRhIHN0cnVjdHVyZS4NCj4gKyAg QHBhcmFtICBTaXplICAgICAgICAgICAgICAgICAgICAgICBPbiBvdXRwdXQsIHRoaXMgaG9sZHMg dGhlIHNpemUgb2YgdGhlIGRldmljZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHBhdGggaW5zdGFuY2UsIGluIGJ5dGVzIG9yIHplcm8sIGlmIERldmljZVBhdGgNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBOVUxMLg0KPiArDQo+ICsg IEByZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBjdXJyZW50IGRldmljZSBwYXRoIGluc3RhbmNlLg0K PiArDQo+ICsqKi8NCj4gK0VGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqDQo+ICtHZXROZXh0RGV2 aWNlUGF0aEluc3RhbmNlICgNCj4gKyAgICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICAgKipE ZXZpY2VQYXRoLA0KPiArICAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICpTaXplDQo+ ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIFVlZmlEZXZpY2VQYXRoTGliR2V0TmV4dERldmljZVBh dGhJbnN0YW5jZSAoRGV2aWNlUGF0aCwgU2l6ZSk7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBD cmVhdGVzIGEgZGV2aWNlIG5vZGUuDQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBjcmVhdGVzIGEg bmV3IGRldmljZSBub2RlIGluIGEgbmV3bHkgYWxsb2NhdGVkIGJ1ZmZlciBvZiBzaXplDQo+ICsg IE5vZGVMZW5ndGggYW5kIGluaXRpYWxpemVzIHRoZSBkZXZpY2UgcGF0aCBub2RlIGhlYWRlciB3 aXRoIE5vZGVUeXBlIGFuZCBOb2RlU3ViVHlwZS4NCj4gKyAgVGhlIG5ldyBkZXZpY2UgcGF0aCBu b2RlIGlzIHJldHVybmVkLg0KPiArICBJZiBOb2RlTGVuZ3RoIGlzIHNtYWxsZXIgdGhhbiBhIGRl dmljZSBwYXRoIGhlYWRlciwgdGhlbiBOVUxMIGlzIHJldHVybmVkLg0KPiArICBJZiB0aGVyZSBp cyBub3QgZW5vdWdoIG1lbW9yeSB0byBhbGxvY2F0ZSBzcGFjZSBmb3IgdGhlIG5ldyBkZXZpY2Ug cGF0aCwgdGhlbg0KPiArICBOVUxMIGlzIHJldHVybmVkLg0KPiArICBUaGUgbWVtb3J5IGlzIGFs bG9jYXRlZCBmcm9tIEVGSSBib290IHNlcnZpY2VzIG1lbW9yeS4gSXQgaXMgdGhlIHJlc3BvbnNp YmlsaXR5DQo+ICsgIG9mIHRoZSBjYWxsZXIgdG8gZnJlZSB0aGUgbWVtb3J5IGFsbG9jYXRlZC4N Cj4gKw0KPiArICBAcGFyYW0gIE5vZGVUeXBlICAgICAgICAgICAgICAgICAgIFRoZSBkZXZpY2Ug bm9kZSB0eXBlIGZvciB0aGUgbmV3IGRldmljZSBub2RlLg0KPiArICBAcGFyYW0gIE5vZGVTdWJU eXBlICAgICAgICAgICAgICAgIFRoZSBkZXZpY2Ugbm9kZSBzdWItdHlwZSBmb3IgdGhlIG5ldyBk ZXZpY2Ugbm9kZS4NCj4gKyAgQHBhcmFtICBOb2RlTGVuZ3RoICAgICAgICAgICAgICAgICBUaGUg bGVuZ3RoIG9mIHRoZSBuZXcgZGV2aWNlIG5vZGUuDQo+ICsNCj4gKyAgQHJldHVybiBUaGUgbmV3 IGRldmljZSBwYXRoLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAq DQo+ICtDcmVhdGVEZXZpY2VOb2RlICgNCj4gKyAgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAg ICAgICAgTm9kZVR5cGUsDQo+ICsgICBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgIE5v ZGVTdWJUeXBlLA0KPiArICAgVUlOVDE2ICAgICAgICAgICAgICAgICAgICAgICAgICBOb2RlTGVu Z3RoDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIFVlZmlEZXZpY2VQYXRoTGliQ3JlYXRlRGV2 aWNlTm9kZSAoTm9kZVR5cGUsIE5vZGVTdWJUeXBlLCBOb2RlTGVuZ3RoKTsNCj4gK30NCj4gKw0K PiArLyoqDQo+ICsgIERldGVybWluZXMgaWYgYSBkZXZpY2UgcGF0aCBpcyBzaW5nbGUgb3IgbXVs dGktaW5zdGFuY2UuDQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIFRSVUUgaWYgdGhl IGRldmljZSBwYXRoIHNwZWNpZmllZCBieSBEZXZpY2VQYXRoIGlzDQo+ICsgIG11bHRpLWluc3Rh bmNlLg0KPiArICBPdGhlcndpc2UsIEZBTFNFIGlzIHJldHVybmVkLg0KPiArICBJZiBEZXZpY2VQ YXRoIGlzIE5VTEwgb3IgaW52YWxpZCwgdGhlbiBGQUxTRSBpcyByZXR1cm5lZC4NCj4gKw0KPiAr ICBAcGFyYW0gIERldmljZVBhdGggICAgICAgICAgICAgICAgIEEgcG9pbnRlciB0byBhIGRldmlj ZSBwYXRoIGRhdGEgc3RydWN0dXJlLg0KPiArDQo+ICsgIEByZXR2YWwgIFRSVUUgICAgICAgICAg ICAgICAgICAgICAgRGV2aWNlUGF0aCBpcyBtdWx0aS1pbnN0YW5jZS4NCj4gKyAgQHJldHZhbCAg RkFMU0UgICAgICAgICAgICAgICAgICAgICBEZXZpY2VQYXRoIGlzIG5vdCBtdWx0aS1pbnN0YW5j ZSwgb3IgRGV2aWNlUGF0aA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGlzIE5VTEwgb3IgaW52YWxpZC4NCj4gKw0KPiArKiovDQo+ICtCT09MRUFODQo+ICtJc0Rldmlj ZVBhdGhNdWx0aUluc3RhbmNlICgNCj4gKyAgIENPTlNUIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NP TCAgKkRldmljZVBhdGgNCj4gKyAgKQ0KPiArew0KPiArICByZXR1cm4gVWVmaURldmljZVBhdGhM aWJJc0RldmljZVBhdGhNdWx0aUluc3RhbmNlIChEZXZpY2VQYXRoKTsNCj4gK30NCj4gKw0KPiAr LyoqDQo+ICsgIENvbnZlcnQgdGV4dCB0byB0aGUgYmluYXJ5IHJlcHJlc2VudGF0aW9uIG9mIGEg ZGV2aWNlIG5vZGUuDQo+ICsNCj4gKyAgQHBhcmFtIFRleHREZXZpY2VOb2RlICBUZXh0RGV2aWNl Tm9kZSBwb2ludHMgdG8gdGhlIHRleHQgcmVwcmVzZW50YXRpb24gb2YgYSBkZXZpY2UNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICBub2RlLiBDb252ZXJzaW9uIHN0YXJ0cyB3aXRoIHRoZSBm aXJzdCBjaGFyYWN0ZXIgYW5kIGNvbnRpbnVlcw0KPiArICAgICAgICAgICAgICAgICAgICAgICAg IHVudGlsIHRoZSBmaXJzdCBub24tZGV2aWNlIG5vZGUgY2hhcmFjdGVyLg0KPiArDQo+ICsgIEBy ZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBFRkkgZGV2aWNlIG5vZGUgb3IgTlVMTCBpZiBUZXh0RGV2 aWNlTm9kZSBpcyBOVUxMIG9yIHRoZXJlIHdhcw0KPiArICAgICAgICAgIGluc3VmZmljaWVudCBt ZW1vcnkgb3IgdGV4dCB1bnN1cHBvcnRlZC4NCj4gKw0KPiArKiovDQo+ICtFRklfREVWSUNFX1BB VEhfUFJPVE9DT0wgKg0KPiArQ29udmVydFRleHRUb0RldmljZU5vZGUgKA0KPiArICAgQ09OU1Qg Q0hBUjE2ICpUZXh0RGV2aWNlTm9kZQ0KPiArICApDQo+ICt7DQo+ICsgIHJldHVybiBVZWZpRGV2 aWNlUGF0aExpYkNvbnZlcnRUZXh0VG9EZXZpY2VOb2RlIChUZXh0RGV2aWNlTm9kZSk7DQo+ICt9 DQo+ICsNCj4gKy8qKg0KPiArICBDb252ZXJ0IHRleHQgdG8gdGhlIGJpbmFyeSByZXByZXNlbnRh dGlvbiBvZiBhIGRldmljZSBwYXRoLg0KPiArDQo+ICsNCj4gKyAgQHBhcmFtIFRleHREZXZpY2VQ YXRoICBUZXh0RGV2aWNlUGF0aCBwb2ludHMgdG8gdGhlIHRleHQgcmVwcmVzZW50YXRpb24gb2Yg YSBkZXZpY2UNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLiBDb252ZXJzaW9uIHN0 YXJ0cyB3aXRoIHRoZSBmaXJzdCBjaGFyYWN0ZXIgYW5kIGNvbnRpbnVlcw0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgIHVudGlsIHRoZSBmaXJzdCBub24tZGV2aWNlIG5vZGUgY2hhcmFjdGVy Lg0KPiArDQo+ICsgIEByZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBhbGxvY2F0ZWQgZGV2aWNlIHBh dGggb3IgTlVMTCBpZiBUZXh0RGV2aWNlTm9kZSBpcyBOVUxMIG9yDQo+ICsgICAgICAgICAgdGhl cmUgd2FzIGluc3VmZmljaWVudCBtZW1vcnkuDQo+ICsNCj4gKyoqLw0KPiArRUZJX0RFVklDRV9Q QVRIX1BST1RPQ09MICoNCj4gK0NvbnZlcnRUZXh0VG9EZXZpY2VQYXRoICgNCj4gKyAgIENPTlNU IENIQVIxNiAqVGV4dERldmljZVBhdGgNCj4gKyApDQo+ICt7DQo+ICsgIHJldHVybiBVZWZpRGV2 aWNlUGF0aExpYkNvbnZlcnRUZXh0VG9EZXZpY2VQYXRoIChUZXh0RGV2aWNlUGF0aCk7DQo+ICt9 DQo+IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291cmNlL0MvRGV2aWNlUGF0aC9VZWZpRGV2aWNl UGF0aExpYi5oIGIvQmFzZVRvb2xzL1NvdXJjZS9DL0RldmljZVBhdGgvVWVmaURldmljZVBhdGhM aWIuaA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwLi43YmM5NzRkDQo+ IC0tLSAvZGV2L251bGwNCj4gKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9DL0RldmljZVBhdGgvVWVm aURldmljZVBhdGhMaWIuaA0KPiBAQCAtMCwwICsxLDQ1MiBAQA0KPiArLyoqIEBmaWxlDQo+ICsg IERlZmluaXRpb24gZm9yIERldmljZSBQYXRoIGxpYnJhcnkuDQo+ICsNCj4gK0NvcHlyaWdodCAo YykgMjAxNywgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiAr VGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiArYXJlIGxpY2Vu c2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2Yg dGhlIEJTRCBMaWNlbnNlDQo+ICt3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4g IFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlIGZvdW5kIGF0DQo+ICtodHRwOi8v b3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ICsNCj4gK1RIRSBQUk9H UkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiIEJB U0lTLA0KPiArV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lO RCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gKw0KPiArKiovDQo+ICsjaWZuZGVmIF9V RUZJX0RFVklDRV9QQVRIX0xJQl9IXw0KPiArI2RlZmluZSBfVUVGSV9ERVZJQ0VfUEFUSF9MSUJf SF8NCj4gKw0KPiArI2luY2x1ZGUgPHN0ZGlvLmg+DQo+ICsjaW5jbHVkZSA8c3RkbGliLmg+DQo+ ICsjaW5jbHVkZSA8c3RyaW5nLmg+DQo+ICsjaW5jbHVkZSA8Y3R5cGUuaD4NCj4gKyNpbmNsdWRl IDxhc3NlcnQuaD4NCj4gKyNpZmRlZiBfX0dOVUNfXw0KPiArI2luY2x1ZGUgPHVuaXN0ZC5oPg0K PiArI2Vsc2UNCj4gKyNpbmNsdWRlIDxkaXJlY3QuaD4NCj4gKyNlbmRpZg0KPiArI2luY2x1ZGUg PENvbW1vbi9VZWZpQmFzZVR5cGVzLmg+DQo+ICsjaW5jbHVkZSA8UHJvdG9jb2wvRGV2aWNlUGF0 aC5oPg0KPiArI2luY2x1ZGUgPFByb3RvY29sL0RldmljZVBhdGhVdGlsaXRpZXMuaD4NCj4gKyNp bmNsdWRlICJDb21tb25MaWIuaCINCj4gKyNpbmNsdWRlICJFZmlVdGlsaXR5TXNncy5oIg0KPiAr DQo+ICsjZGVmaW5lIEVORF9ERVZJQ0VfUEFUSF9MRU5HVEggICAgICAgICAgICAgICAoc2l6ZW9m IChFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wpKQ0KPiArI2RlZmluZSBNQVhfREVWSUNFX1BBVEhf Tk9ERV9DT1VOVCAgIDEwMjQNCj4gKyNkZWZpbmUgU0laRV82NEtCICAgMHgwMDAxMDAwMA0KPiAr DQo+ICsvLw0KPiArLy8gUHJpdmF0ZSBEYXRhIHN0cnVjdHVyZQ0KPiArLy8NCj4gK3R5cGVkZWYN Cj4gK0VGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgKg0KPiArKCpERVZJQ0VfUEFUSF9GUk9NX1RF WFQpICgNCj4gKyAgSU4gIENIQVIxNiAqU3RyDQo+ICsgKTsNCj4gKw0KPiArdHlwZWRlZiBzdHJ1 Y3Qgew0KPiArICBDSEFSMTYgICpTdHI7DQo+ICsgIFVJTlROICAgQ291bnQ7DQo+ICsgIFVJTlRO ICAgQ2FwYWNpdHk7DQo+ICt9IFBPT0xfUFJJTlQ7DQo+ICsNCj4gKw0KPiArdHlwZWRlZiBzdHJ1 Y3Qgew0KPiArICBDSEFSMTYgICAgICAgICAgICAgICAgICAgICpEZXZpY2VQYXRoTm9kZVRleHQ7 DQo+ICsgIERFVklDRV9QQVRIX0ZST01fVEVYVCAgICAgRnVuY3Rpb247DQo+ICt9IERFVklDRV9Q QVRIX0ZST01fVEVYVF9UQUJMRTsNCj4gKw0KPiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiArICBCT09M RUFOIENsYXNzRXhpc3Q7DQo+ICsgIFVJTlQ4ICAgQ2xhc3M7DQo+ICsgIEJPT0xFQU4gU3ViQ2xh c3NFeGlzdDsNCj4gKyAgVUlOVDggICBTdWJDbGFzczsNCj4gK30gVVNCX0NMQVNTX1RFWFQ7DQo+ ICsNCj4gKyNkZWZpbmUgVVNCX0NMQVNTX0FVRElPICAgICAgICAgICAgMQ0KPiArI2RlZmluZSBV U0JfQ0xBU1NfQ0RDQ09OVFJPTCAgICAgICAyDQo+ICsjZGVmaW5lIFVTQl9DTEFTU19ISUQgICAg ICAgICAgICAgIDMNCj4gKyNkZWZpbmUgVVNCX0NMQVNTX0lNQUdFICAgICAgICAgICAgNg0KPiAr I2RlZmluZSBVU0JfQ0xBU1NfUFJJTlRFUiAgICAgICAgICA3DQo+ICsjZGVmaW5lIFVTQl9DTEFT U19NQVNTX1NUT1JBR0UgICAgIDgNCj4gKyNkZWZpbmUgVVNCX0NMQVNTX0hVQiAgICAgICAgICAg ICAgOQ0KPiArI2RlZmluZSBVU0JfQ0xBU1NfQ0RDREFUQSAgICAgICAgICAxMA0KPiArI2RlZmlu ZSBVU0JfQ0xBU1NfU01BUlRfQ0FSRCAgICAgICAxMQ0KPiArI2RlZmluZSBVU0JfQ0xBU1NfVklE RU8gICAgICAgICAgICAxNA0KPiArI2RlZmluZSBVU0JfQ0xBU1NfRElBR05PU1RJQyAgICAgICAy MjANCj4gKyNkZWZpbmUgVVNCX0NMQVNTX1dJUkVMRVNTICAgICAgICAgMjI0DQo+ICsNCj4gKyNk ZWZpbmUgVVNCX0NMQVNTX1JFU0VSVkUgICAgICAgICAgMjU0DQo+ICsjZGVmaW5lIFVTQl9TVUJD TEFTU19GV19VUERBVEUgICAgIDENCj4gKyNkZWZpbmUgVVNCX1NVQkNMQVNTX0lSREFfQlJJREdF ICAgMg0KPiArI2RlZmluZSBVU0JfU1VCQ0xBU1NfVEVTVCAgICAgICAgICAzDQo+ICsNCj4gKyNk ZWZpbmUgUkZDXzE3MDBfVURQX1BST1RPQ09MICAgICAgMTcNCj4gKyNkZWZpbmUgUkZDXzE3MDBf VENQX1BST1RPQ09MICAgICAgNg0KPiArDQo+ICsjcHJhZ21hIHBhY2soMSkNCj4gKw0KPiArdHlw ZWRlZiBzdHJ1Y3Qgew0KPiArICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgIEhlYWRlcjsNCj4g KyAgRUZJX0dVSUQgICAgICAgICAgICAgICAgICBHdWlkOw0KPiArICBVSU5UOCAgICAgICAgICAg ICAgICAgICAgIFZlbmRvckRlZmluZWREYXRhWzFdOw0KPiArfSBWRU5ET1JfREVGSU5FRF9IQVJE V0FSRV9ERVZJQ0VfUEFUSDsNCj4gKw0KPiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiArICBFRklfREVW SUNFX1BBVEhfUFJPVE9DT0wgIEhlYWRlcjsNCj4gKyAgRUZJX0dVSUQgICAgICAgICAgICAgICAg ICBHdWlkOw0KPiArICBVSU5UOCAgICAgICAgICAgICAgICAgICAgIFZlbmRvckRlZmluZWREYXRh WzFdOw0KPiArfSBWRU5ET1JfREVGSU5FRF9NRVNTQUdJTkdfREVWSUNFX1BBVEg7DQo+ICsNCj4g K3R5cGVkZWYgc3RydWN0IHsNCj4gKyAgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICBIZWFkZXI7 DQo+ICsgIEVGSV9HVUlEICAgICAgICAgICAgICAgICAgR3VpZDsNCj4gKyAgVUlOVDggICAgICAg ICAgICAgICAgICAgICBWZW5kb3JEZWZpbmVkRGF0YVsxXTsNCj4gK30gVkVORE9SX0RFRklORURf TUVESUFfREVWSUNFX1BBVEg7DQo+ICsNCj4gK3R5cGVkZWYgc3RydWN0IHsNCj4gKyAgRUZJX0RF VklDRV9QQVRIX1BST1RPQ09MICBIZWFkZXI7DQo+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAg ICAgSGlkOw0KPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgIFVpZDsNCj4gKyAgVUlOVDMy ICAgICAgICAgICAgICAgICAgICBDaWQ7DQo+ICsgIENIQVI4ICAgICAgICAgICAgICAgICAgICAg SGlkVWlkQ2lkU3RyWzNdOw0KPiArfSBBQ1BJX0VYVEVOREVEX0hJRF9ERVZJQ0VfUEFUSF9XSVRI X1NUUjsNCj4gKw0KPiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiArICBFRklfREVWSUNFX1BBVEhfUFJP VE9DT0wgIEhlYWRlcjsNCj4gKyAgVUlOVDE2ICAgICAgICAgICAgICAgICAgICBOZXR3b3JrUHJv dG9jb2w7DQo+ICsgIFVJTlQxNiAgICAgICAgICAgICAgICAgICAgTG9naW5PcHRpb247DQo+ICsg IFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgTHVuOw0KPiArICBVSU5UMTYgICAgICAgICAgICAg ICAgICAgIFRhcmdldFBvcnRhbEdyb3VwVGFnOw0KPiArICBDSEFSOCAgICAgICAgICAgICAgICAg ICAgIFRhcmdldE5hbWVbMV07DQo+ICt9IElTQ1NJX0RFVklDRV9QQVRIX1dJVEhfTkFNRTsNCj4g Kw0KPiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiArICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgIEhl YWRlcjsNCj4gKyAgRUZJX0dVSUQgICAgICAgICAgICAgICAgICBHdWlkOw0KPiArICBVSU5UOCAg ICAgICAgICAgICAgICAgICAgIFZlbmRvckRlZmluZWREYXRhWzFdOw0KPiArfSBWRU5ET1JfREVW SUNFX1BBVEhfV0lUSF9EQVRBOw0KPiArDQo+ICsjcHJhZ21hIHBhY2soKQ0KPiArDQo+ICsvKioN Cj4gKyAgUmV0dXJucyB0aGUgc2l6ZSBvZiBhIGRldmljZSBwYXRoIGluIGJ5dGVzLg0KPiArDQo+ ICsgIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgc2l6ZSwgaW4gYnl0ZXMsIG9mIHRoZSBkZXZp Y2UgcGF0aCBkYXRhIHN0cnVjdHVyZQ0KPiArICBzcGVjaWZpZWQgYnkgRGV2aWNlUGF0aCBpbmNs dWRpbmcgdGhlIGVuZCBvZiBkZXZpY2UgcGF0aCBub2RlLg0KPiArICBJZiBEZXZpY2VQYXRoIGlz IE5VTEwgb3IgaW52YWxpZCwgdGhlbiAwIGlzIHJldHVybmVkLg0KPiArDQo+ICsgIEBwYXJhbSAg RGV2aWNlUGF0aCAgQSBwb2ludGVyIHRvIGEgZGV2aWNlIHBhdGggZGF0YSBzdHJ1Y3R1cmUuDQo+ ICsNCj4gKyAgQHJldHZhbCAwICAgICAgICAgICBJZiBEZXZpY2VQYXRoIGlzIE5VTEwgb3IgaW52 YWxpZC4NCj4gKyAgQHJldHZhbCBPdGhlcnMgICAgICBUaGUgc2l6ZSBvZiBhIGRldmljZSBwYXRo IGluIGJ5dGVzLg0KPiArDQo+ICsqKi8NCj4gK1VJTlRODQo+ICtVZWZpRGV2aWNlUGF0aExpYkdl dERldmljZVBhdGhTaXplICgNCj4gKyAgIENPTlNUIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAg KkRldmljZVBhdGgNCj4gKyAgKTsNCj4gKw0KPiArLyoqDQo+ICsgIENyZWF0ZXMgYSBuZXcgY29w eSBvZiBhbiBleGlzdGluZyBkZXZpY2UgcGF0aC4NCj4gKw0KPiArICBUaGlzIGZ1bmN0aW9uIGFs bG9jYXRlcyBzcGFjZSBmb3IgYSBuZXcgY29weSBvZiB0aGUgZGV2aWNlIHBhdGggc3BlY2lmaWVk IGJ5IERldmljZVBhdGguDQo+ICsgIElmIERldmljZVBhdGggaXMgTlVMTCwgdGhlbiBOVUxMIGlz IHJldHVybmVkLiAgSWYgdGhlIG1lbW9yeSBpcyBzdWNjZXNzZnVsbHkNCj4gKyAgYWxsb2NhdGVk LCB0aGVuIHRoZSBjb250ZW50cyBvZiBEZXZpY2VQYXRoIGFyZSBjb3BpZWQgdG8gdGhlIG5ld2x5 IGFsbG9jYXRlZA0KPiArICBidWZmZXIsIGFuZCBhIHBvaW50ZXIgdG8gdGhhdCBidWZmZXIgaXMg cmV0dXJuZWQuICBPdGhlcndpc2UsIE5VTEwgaXMgcmV0dXJuZWQuDQo+ICsgIFRoZSBtZW1vcnkg Zm9yIHRoZSBuZXcgZGV2aWNlIHBhdGggaXMgYWxsb2NhdGVkIGZyb20gRUZJIGJvb3Qgc2Vydmlj ZXMgbWVtb3J5Lg0KPiArICBJdCBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGNhbGxlciB0 byBmcmVlIHRoZSBtZW1vcnkgYWxsb2NhdGVkLg0KPiArDQo+ICsgIEBwYXJhbSAgRGV2aWNlUGF0 aCAgICBBIHBvaW50ZXIgdG8gYSBkZXZpY2UgcGF0aCBkYXRhIHN0cnVjdHVyZS4NCj4gKw0KPiAr ICBAcmV0dmFsIE5VTEwgICAgICAgICAgRGV2aWNlUGF0aCBpcyBOVUxMIG9yIGludmFsaWQuDQo+ ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIGR1cGxpY2F0ZWQgZGV2 aWNlIHBhdGguDQo+ICsNCj4gKyoqLw0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoNCj4g K1VlZmlEZXZpY2VQYXRoTGliRHVwbGljYXRlRGV2aWNlUGF0aCAoDQo+ICsgICBDT05TVCBFRklf REVWSUNFX1BBVEhfUFJPVE9DT0wgICpEZXZpY2VQYXRoDQo+ICsgICk7DQo+ICsNCj4gKy8qKg0K PiArICBDcmVhdGVzIGEgbmV3IGRldmljZSBwYXRoIGJ5IGFwcGVuZGluZyBhIHNlY29uZCBkZXZp Y2UgcGF0aCB0byBhIGZpcnN0IGRldmljZSBwYXRoLg0KPiArDQo+ICsgIFRoaXMgZnVuY3Rpb24g Y3JlYXRlcyBhIG5ldyBkZXZpY2UgcGF0aCBieSBhcHBlbmRpbmcgYSBjb3B5IG9mIFNlY29uZERl dmljZVBhdGgNCj4gKyAgdG8gYSBjb3B5IG9mIEZpcnN0RGV2aWNlUGF0aCBpbiBhIG5ld2x5IGFs bG9jYXRlZCBidWZmZXIuICBPbmx5IHRoZSBlbmQtb2YtZGV2aWNlLXBhdGgNCj4gKyAgZGV2aWNl IG5vZGUgZnJvbSBTZWNvbmREZXZpY2VQYXRoIGlzIHJldGFpbmVkLiBUaGUgbmV3bHkgY3JlYXRl ZCBkZXZpY2UgcGF0aCBpcw0KPiArICByZXR1cm5lZC4gSWYgRmlyc3REZXZpY2VQYXRoIGlzIE5V TEwsIHRoZW4gaXQgaXMgaWdub3JlZCwgYW5kIGEgZHVwbGljYXRlIG9mDQo+ICsgIFNlY29uZERl dmljZVBhdGggaXMgcmV0dXJuZWQuICBJZiBTZWNvbmREZXZpY2VQYXRoIGlzIE5VTEwsIHRoZW4g aXQgaXMgaWdub3JlZCwNCj4gKyAgYW5kIGEgZHVwbGljYXRlIG9mIEZpcnN0RGV2aWNlUGF0aCBp cyByZXR1cm5lZC4gSWYgYm90aCBGaXJzdERldmljZVBhdGggYW5kDQo+ICsgIFNlY29uZERldmlj ZVBhdGggYXJlIE5VTEwsIHRoZW4gYSBjb3B5IG9mIGFuIGVuZC1vZi1kZXZpY2UtcGF0aCBpcyBy ZXR1cm5lZC4NCj4gKw0KPiArICBJZiB0aGVyZSBpcyBub3QgZW5vdWdoIG1lbW9yeSBmb3IgdGhl IG5ld2x5IGFsbG9jYXRlZCBidWZmZXIsIHRoZW4gTlVMTCBpcyByZXR1cm5lZC4NCj4gKyAgVGhl IG1lbW9yeSBmb3IgdGhlIG5ldyBkZXZpY2UgcGF0aCBpcyBhbGxvY2F0ZWQgZnJvbSBFRkkgYm9v dCBzZXJ2aWNlcyBtZW1vcnkuDQo+ICsgIEl0IGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUg Y2FsbGVyIHRvIGZyZWUgdGhlIG1lbW9yeSBhbGxvY2F0ZWQuDQo+ICsNCj4gKyAgQHBhcmFtICBG aXJzdERldmljZVBhdGggICAgICAgICAgICBBIHBvaW50ZXIgdG8gYSBkZXZpY2UgcGF0aCBkYXRh IHN0cnVjdHVyZS4NCj4gKyAgQHBhcmFtICBTZWNvbmREZXZpY2VQYXRoICAgICAgICAgICBBIHBv aW50ZXIgdG8gYSBkZXZpY2UgcGF0aCBkYXRhIHN0cnVjdHVyZS4NCj4gKw0KPiArICBAcmV0dmFs IE5VTEwgICAgICBJZiB0aGVyZSBpcyBub3QgZW5vdWdoIG1lbW9yeSBmb3IgdGhlIG5ld2x5IGFs bG9jYXRlZCBidWZmZXIuDQo+ICsgIEByZXR2YWwgTlVMTCAgICAgIElmIEZpcnN0RGV2aWNlUGF0 aCBvciBTZWNvbmREZXZpY2VQYXRoIGlzIGludmFsaWQuDQo+ICsgIEByZXR2YWwgT3RoZXJzICAg IEEgcG9pbnRlciB0byB0aGUgbmV3IGRldmljZSBwYXRoIGlmIHN1Y2Nlc3MuDQo+ICsgICAgICAg ICAgICAgICAgICAgIE9yIGEgY29weSBhbiBlbmQtb2YtZGV2aWNlLXBhdGggaWYgYm90aCBGaXJz dERldmljZVBhdGggYW5kIFNlY29uZERldmljZVBhdGggYXJlIE5VTEwuDQo+ICsNCj4gKyoqLw0K PiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoNCj4gK1VlZmlEZXZpY2VQYXRoTGliQXBwZW5k RGV2aWNlUGF0aCAoDQo+ICsgICBDT05TVCBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICpGaXJz dERldmljZVBhdGgsICBPUFRJT05BTA0KPiArICAgQ09OU1QgRUZJX0RFVklDRV9QQVRIX1BST1RP Q09MICAqU2Vjb25kRGV2aWNlUGF0aCAgT1BUSU9OQUwNCj4gKyAgKTsNCj4gKw0KPiArLyoqDQo+ ICsgIENyZWF0ZXMgYSBuZXcgcGF0aCBieSBhcHBlbmRpbmcgdGhlIGRldmljZSBub2RlIHRvIHRo ZSBkZXZpY2UgcGF0aC4NCj4gKw0KPiArICBUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgYSBuZXcgZGV2 aWNlIHBhdGggYnkgYXBwZW5kaW5nIGEgY29weSBvZiB0aGUgZGV2aWNlIG5vZGUNCj4gKyAgc3Bl Y2lmaWVkIGJ5IERldmljZVBhdGhOb2RlIHRvIGEgY29weSBvZiB0aGUgZGV2aWNlIHBhdGggc3Bl Y2lmaWVkIGJ5IERldmljZVBhdGgNCj4gKyAgaW4gYW4gYWxsb2NhdGVkIGJ1ZmZlci4gVGhlIGVu ZC1vZi1kZXZpY2UtcGF0aCBkZXZpY2Ugbm9kZSBpcyBtb3ZlZCBhZnRlciB0aGUNCj4gKyAgZW5k IG9mIHRoZSBhcHBlbmRlZCBkZXZpY2Ugbm9kZS4NCj4gKyAgSWYgRGV2aWNlUGF0aE5vZGUgaXMg TlVMTCB0aGVuIGEgY29weSBvZiBEZXZpY2VQYXRoIGlzIHJldHVybmVkLg0KPiArICBJZiBEZXZp Y2VQYXRoIGlzIE5VTEwgdGhlbiBhIGNvcHkgb2YgRGV2aWNlUGF0aE5vZGUsIGZvbGxvd2VkIGJ5 IGFuIGVuZC1vZi1kZXZpY2UNCj4gKyAgcGF0aCBkZXZpY2Ugbm9kZSBpcyByZXR1cm5lZC4NCj4g KyAgSWYgYm90aCBEZXZpY2VQYXRoTm9kZSBhbmQgRGV2aWNlUGF0aCBhcmUgTlVMTCB0aGVuIGEg Y29weSBvZiBhbiBlbmQtb2YtZGV2aWNlLXBhdGgNCj4gKyAgZGV2aWNlIG5vZGUgaXMgcmV0dXJu ZWQuDQo+ICsgIElmIHRoZXJlIGlzIG5vdCBlbm91Z2ggbWVtb3J5IHRvIGFsbG9jYXRlIHNwYWNl IGZvciB0aGUgbmV3IGRldmljZSBwYXRoLCB0aGVuDQo+ICsgIE5VTEwgaXMgcmV0dXJuZWQuDQo+ ICsgIFRoZSBtZW1vcnkgaXMgYWxsb2NhdGVkIGZyb20gRUZJIGJvb3Qgc2VydmljZXMgbWVtb3J5 LiBJdCBpcyB0aGUgcmVzcG9uc2liaWxpdHkNCj4gKyAgb2YgdGhlIGNhbGxlciB0byBmcmVlIHRo ZSBtZW1vcnkgYWxsb2NhdGVkLg0KPiArDQo+ICsgIEBwYXJhbSAgRGV2aWNlUGF0aCAgICAgICAg ICAgICAgICAgQSBwb2ludGVyIHRvIGEgZGV2aWNlIHBhdGggZGF0YSBzdHJ1Y3R1cmUuDQo+ICsg IEBwYXJhbSAgRGV2aWNlUGF0aE5vZGUgICAgICAgICAgICAgQSBwb2ludGVyIHRvIGEgc2luZ2xl IGRldmljZSBwYXRoIG5vZGUuDQo+ICsNCj4gKyAgQHJldHZhbCBOVUxMICAgICAgSWYgdGhlcmUg aXMgbm90IGVub3VnaCBtZW1vcnkgZm9yIHRoZSBuZXcgZGV2aWNlIHBhdGguDQo+ICsgIEByZXR2 YWwgT3RoZXJzICAgIEEgcG9pbnRlciB0byB0aGUgbmV3IGRldmljZSBwYXRoIGlmIHN1Y2Nlc3Mu DQo+ICsgICAgICAgICAgICAgICAgICAgIEEgY29weSBvZiBEZXZpY2VQYXRoTm9kZSBmb2xsb3dl ZCBieSBhbiBlbmQtb2YtZGV2aWNlLXBhdGggbm9kZQ0KPiArICAgICAgICAgICAgICAgICAgICBp ZiBib3RoIEZpcnN0RGV2aWNlUGF0aCBhbmQgU2Vjb25kRGV2aWNlUGF0aCBhcmUgTlVMTC4NCj4g KyAgICAgICAgICAgICAgICAgICAgQSBjb3B5IG9mIGFuIGVuZC1vZi1kZXZpY2UtcGF0aCBub2Rl IGlmIGJvdGggRmlyc3REZXZpY2VQYXRoDQo+ICsgICAgICAgICAgICAgICAgICAgIGFuZCBTZWNv bmREZXZpY2VQYXRoIGFyZSBOVUxMLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9ERVZJQ0VfUEFUSF9Q Uk9UT0NPTCAqDQo+ICtVZWZpRGV2aWNlUGF0aExpYkFwcGVuZERldmljZVBhdGhOb2RlICgNCj4g KyAgIENPTlNUIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgKkRldmljZVBhdGgsICAgICBPUFRJ T05BTA0KPiArICAgQ09OU1QgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICAqRGV2aWNlUGF0aE5v ZGUgIE9QVElPTkFMDQo+ICsgICk7DQo+ICsNCj4gKy8qKg0KPiArICBDcmVhdGVzIGEgbmV3IGRl dmljZSBwYXRoIGJ5IGFwcGVuZGluZyB0aGUgc3BlY2lmaWVkIGRldmljZSBwYXRoIGluc3RhbmNl IHRvIHRoZSBzcGVjaWZpZWQgZGV2aWNlDQo+ICsgIHBhdGguDQo+ICsNCj4gKyAgVGhpcyBmdW5j dGlvbiBjcmVhdGVzIGEgbmV3IGRldmljZSBwYXRoIGJ5IGFwcGVuZGluZyBhIGNvcHkgb2YgdGhl IGRldmljZSBwYXRoDQo+ICsgIGluc3RhbmNlIHNwZWNpZmllZCBieSBEZXZpY2VQYXRoSW5zdGFu Y2UgdG8gYSBjb3B5IG9mIHRoZSBkZXZpY2UgcGF0aCBzcGVjaWZpZWQNCj4gKyAgYnkgRGV2aWNl UGF0aCBpbiBhIGFsbG9jYXRlZCBidWZmZXIuDQo+ICsgIFRoZSBlbmQtb2YtZGV2aWNlLXBhdGgg ZGV2aWNlIG5vZGUgaXMgbW92ZWQgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgYXBwZW5kZWQgZGV2aWNl DQo+ICsgIHBhdGggaW5zdGFuY2UgYW5kIGEgbmV3IGVuZC1vZi1kZXZpY2UtcGF0aC1pbnN0YW5j ZSBub2RlIGlzIGluc2VydGVkIGJldHdlZW4uDQo+ICsgIElmIERldmljZVBhdGggaXMgTlVMTCwg dGhlbiBhIGNvcHkgaWYgRGV2aWNlUGF0aEluc3RhbmNlIGlzIHJldHVybmVkLg0KPiArICBJZiBE ZXZpY2VQYXRoSW5zdGFuY2UgaXMgTlVMTCwgdGhlbiBOVUxMIGlzIHJldHVybmVkLg0KPiArICBJ ZiBEZXZpY2VQYXRoIG9yIERldmljZVBhdGhJbnN0YW5jZSBpcyBpbnZhbGlkLCB0aGVuIE5VTEwg aXMgcmV0dXJuZWQuDQo+ICsgIElmIHRoZXJlIGlzIG5vdCBlbm91Z2ggbWVtb3J5IHRvIGFsbG9j YXRlIHNwYWNlIGZvciB0aGUgbmV3IGRldmljZSBwYXRoLCB0aGVuDQo+ICsgIE5VTEwgaXMgcmV0 dXJuZWQuDQo+ICsgIFRoZSBtZW1vcnkgaXMgYWxsb2NhdGVkIGZyb20gRUZJIGJvb3Qgc2Vydmlj ZXMgbWVtb3J5LiBJdCBpcyB0aGUgcmVzcG9uc2liaWxpdHkNCj4gKyAgb2YgdGhlIGNhbGxlciB0 byBmcmVlIHRoZSBtZW1vcnkgYWxsb2NhdGVkLg0KPiArDQo+ICsgIEBwYXJhbSAgRGV2aWNlUGF0 aCAgICAgICAgICAgICAgICAgQSBwb2ludGVyIHRvIGEgZGV2aWNlIHBhdGggZGF0YSBzdHJ1Y3R1 cmUuDQo+ICsgIEBwYXJhbSAgRGV2aWNlUGF0aEluc3RhbmNlICAgICAgICAgQSBwb2ludGVyIHRv IGEgZGV2aWNlIHBhdGggaW5zdGFuY2UuDQo+ICsNCj4gKyAgQHJldHVybiBBIHBvaW50ZXIgdG8g dGhlIG5ldyBkZXZpY2UgcGF0aC4NCj4gKw0KPiArKiovDQo+ICtFRklfREVWSUNFX1BBVEhfUFJP VE9DT0wgKg0KPiArVWVmaURldmljZVBhdGhMaWJBcHBlbmREZXZpY2VQYXRoSW5zdGFuY2UgKA0K PiArICAgQ09OU1QgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICAqRGV2aWNlUGF0aCwgICAgICAg IE9QVElPTkFMDQo+ICsgICBDT05TVCBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICpEZXZpY2VQ YXRoSW5zdGFuY2UgT1BUSU9OQUwNCj4gKyAgKTsNCj4gKw0KPiArLyoqDQo+ICsgIENyZWF0ZXMg YSBjb3B5IG9mIHRoZSBjdXJyZW50IGRldmljZSBwYXRoIGluc3RhbmNlIGFuZCByZXR1cm5zIGEg cG9pbnRlciB0byB0aGUgbmV4dCBkZXZpY2UgcGF0aA0KPiArICBpbnN0YW5jZS4NCj4gKw0KPiAr ICBUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgYSBjb3B5IG9mIHRoZSBjdXJyZW50IGRldmljZSBwYXRo IGluc3RhbmNlLiBJdCBhbHNvIHVwZGF0ZXMNCj4gKyAgRGV2aWNlUGF0aCB0byBwb2ludCB0byB0 aGUgbmV4dCBkZXZpY2UgcGF0aCBpbnN0YW5jZSBpbiB0aGUgZGV2aWNlIHBhdGggKG9yIE5VTEwN Cj4gKyAgaWYgbm8gbW9yZSkgYW5kIHVwZGF0ZXMgU2l6ZSB0byBob2xkIHRoZSBzaXplIG9mIHRo ZSBkZXZpY2UgcGF0aCBpbnN0YW5jZSBjb3B5Lg0KPiArICBJZiBEZXZpY2VQYXRoIGlzIE5VTEws IHRoZW4gTlVMTCBpcyByZXR1cm5lZC4NCj4gKyAgSWYgRGV2aWNlUGF0aCBwb2ludHMgdG8gYSBp bnZhbGlkIGRldmljZSBwYXRoLCB0aGVuIE5VTEwgaXMgcmV0dXJuZWQuDQo+ICsgIElmIHRoZXJl IGlzIG5vdCBlbm91Z2ggbWVtb3J5IHRvIGFsbG9jYXRlIHNwYWNlIGZvciB0aGUgbmV3IGRldmlj ZSBwYXRoLCB0aGVuDQo+ICsgIE5VTEwgaXMgcmV0dXJuZWQuDQo+ICsgIFRoZSBtZW1vcnkgaXMg YWxsb2NhdGVkIGZyb20gRUZJIGJvb3Qgc2VydmljZXMgbWVtb3J5LiBJdCBpcyB0aGUgcmVzcG9u c2liaWxpdHkNCj4gKyAgb2YgdGhlIGNhbGxlciB0byBmcmVlIHRoZSBtZW1vcnkgYWxsb2NhdGVk Lg0KPiArICBJZiBTaXplIGlzIE5VTEwsIHRoZW4gQVNTRVJUKCkuDQo+ICsNCj4gKyAgQHBhcmFt ICBEZXZpY2VQYXRoICAgICAgICAgICAgICAgICBPbiBpbnB1dCwgdGhpcyBob2xkcyB0aGUgcG9p bnRlciB0byB0aGUgY3VycmVudA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGRldmljZSBwYXRoIGluc3RhbmNlLiBPbiBvdXRwdXQsIHRoaXMgaG9sZHMNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgcG9pbnRlciB0byB0aGUgbmV4dCBk ZXZpY2UgcGF0aCBpbnN0YW5jZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG9yIE5VTEwgaWYgdGhlcmUgYXJlIG5vIG1vcmUgZGV2aWNlIHBhdGgNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZXMgaW4gdGhlIGRldmljZSBwYXRo IHBvaW50ZXIgdG8gYQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRl dmljZSBwYXRoIGRhdGEgc3RydWN0dXJlLg0KPiArICBAcGFyYW0gIFNpemUgICAgICAgICAgICAg ICAgICAgICAgIE9uIG91dHB1dCwgdGhpcyBob2xkcyB0aGUgc2l6ZSBvZiB0aGUgZGV2aWNlDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCBpbnN0YW5jZSwgaW4g Ynl0ZXMgb3IgemVybywgaWYgRGV2aWNlUGF0aA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGlzIE5VTEwuDQo+ICsNCj4gKyAgQHJldHVybiBBIHBvaW50ZXIgdG8gdGhl IGN1cnJlbnQgZGV2aWNlIHBhdGggaW5zdGFuY2UuDQo+ICsNCj4gKyoqLw0KPiArRUZJX0RFVklD RV9QQVRIX1BST1RPQ09MICoNCj4gK1VlZmlEZXZpY2VQYXRoTGliR2V0TmV4dERldmljZVBhdGhJ bnN0YW5jZSAoDQo+ICsgICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICAgKipEZXZpY2VQYXRo LA0KPiArICAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICpTaXplDQo+ICsgICk7DQo+ ICsNCj4gKy8qKg0KPiArICBDcmVhdGVzIGEgZGV2aWNlIG5vZGUuDQo+ICsNCj4gKyAgVGhpcyBm dW5jdGlvbiBjcmVhdGVzIGEgbmV3IGRldmljZSBub2RlIGluIGEgbmV3bHkgYWxsb2NhdGVkIGJ1 ZmZlciBvZiBzaXplDQo+ICsgIE5vZGVMZW5ndGggYW5kIGluaXRpYWxpemVzIHRoZSBkZXZpY2Ug cGF0aCBub2RlIGhlYWRlciB3aXRoIE5vZGVUeXBlIGFuZCBOb2RlU3ViVHlwZS4NCj4gKyAgVGhl IG5ldyBkZXZpY2UgcGF0aCBub2RlIGlzIHJldHVybmVkLg0KPiArICBJZiBOb2RlTGVuZ3RoIGlz IHNtYWxsZXIgdGhhbiBhIGRldmljZSBwYXRoIGhlYWRlciwgdGhlbiBOVUxMIGlzIHJldHVybmVk Lg0KPiArICBJZiB0aGVyZSBpcyBub3QgZW5vdWdoIG1lbW9yeSB0byBhbGxvY2F0ZSBzcGFjZSBm b3IgdGhlIG5ldyBkZXZpY2UgcGF0aCwgdGhlbg0KPiArICBOVUxMIGlzIHJldHVybmVkLg0KPiAr ICBUaGUgbWVtb3J5IGlzIGFsbG9jYXRlZCBmcm9tIEVGSSBib290IHNlcnZpY2VzIG1lbW9yeS4g SXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5DQo+ICsgIG9mIHRoZSBjYWxsZXIgdG8gZnJlZSB0aGUg bWVtb3J5IGFsbG9jYXRlZC4NCj4gKw0KPiArICBAcGFyYW0gIE5vZGVUeXBlICAgICAgICAgICAg ICAgICAgIFRoZSBkZXZpY2Ugbm9kZSB0eXBlIGZvciB0aGUgbmV3IGRldmljZSBub2RlLg0KPiAr ICBAcGFyYW0gIE5vZGVTdWJUeXBlICAgICAgICAgICAgICAgIFRoZSBkZXZpY2Ugbm9kZSBzdWIt dHlwZSBmb3IgdGhlIG5ldyBkZXZpY2Ugbm9kZS4NCj4gKyAgQHBhcmFtICBOb2RlTGVuZ3RoICAg ICAgICAgICAgICAgICBUaGUgbGVuZ3RoIG9mIHRoZSBuZXcgZGV2aWNlIG5vZGUuDQo+ICsNCj4g KyAgQHJldHVybiBUaGUgbmV3IGRldmljZSBwYXRoLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9ERVZJ Q0VfUEFUSF9QUk9UT0NPTCAqDQo+ICtVZWZpRGV2aWNlUGF0aExpYkNyZWF0ZURldmljZU5vZGUg KA0KPiArICAgVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAgICBOb2RlVHlwZSwNCj4gKyAg IFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9kZVN1YlR5cGUsDQo+ICsgICBVSU5U MTYgICAgICAgICAgICAgICAgICAgICAgICAgIE5vZGVMZW5ndGgNCj4gKyAgKTsNCj4gKw0KPiAr LyoqDQo+ICsgIERldGVybWluZXMgaWYgYSBkZXZpY2UgcGF0aCBpcyBzaW5nbGUgb3IgbXVsdGkt aW5zdGFuY2UuDQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIFRSVUUgaWYgdGhlIGRl dmljZSBwYXRoIHNwZWNpZmllZCBieSBEZXZpY2VQYXRoIGlzDQo+ICsgIG11bHRpLWluc3RhbmNl Lg0KPiArICBPdGhlcndpc2UsIEZBTFNFIGlzIHJldHVybmVkLg0KPiArICBJZiBEZXZpY2VQYXRo IGlzIE5VTEwgb3IgaW52YWxpZCwgdGhlbiBGQUxTRSBpcyByZXR1cm5lZC4NCj4gKw0KPiArICBA cGFyYW0gIERldmljZVBhdGggICAgICAgICAgICAgICAgIEEgcG9pbnRlciB0byBhIGRldmljZSBw YXRoIGRhdGEgc3RydWN0dXJlLg0KPiArDQo+ICsgIEByZXR2YWwgIFRSVUUgICAgICAgICAgICAg ICAgICAgICAgRGV2aWNlUGF0aCBpcyBtdWx0aS1pbnN0YW5jZS4NCj4gKyAgQHJldHZhbCAgRkFM U0UgICAgICAgICAgICAgICAgICAgICBEZXZpY2VQYXRoIGlzIG5vdCBtdWx0aS1pbnN0YW5jZSwg b3IgRGV2aWNlUGF0aA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlz IE5VTEwgb3IgaW52YWxpZC4NCj4gKw0KPiArKiovDQo+ICtCT09MRUFODQo+ICtVZWZpRGV2aWNl UGF0aExpYklzRGV2aWNlUGF0aE11bHRpSW5zdGFuY2UgKA0KPiArICAgQ09OU1QgRUZJX0RFVklD RV9QQVRIX1BST1RPQ09MICAqRGV2aWNlUGF0aA0KPiArICApOw0KPiArDQo+ICsvKioNCj4gKyAg Q29udmVydCB0ZXh0IHRvIHRoZSBiaW5hcnkgcmVwcmVzZW50YXRpb24gb2YgYSBkZXZpY2Ugbm9k ZS4NCj4gKw0KPiArICBAcGFyYW0gVGV4dERldmljZU5vZGUgIFRleHREZXZpY2VOb2RlIHBvaW50 cyB0byB0aGUgdGV4dCByZXByZXNlbnRhdGlvbiBvZiBhIGRldmljZQ0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgIG5vZGUuIENvbnZlcnNpb24gc3RhcnRzIHdpdGggdGhlIGZpcnN0IGNoYXJh Y3RlciBhbmQgY29udGludWVzDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgdW50aWwgdGhl IGZpcnN0IG5vbi1kZXZpY2Ugbm9kZSBjaGFyYWN0ZXIuDQo+ICsNCj4gKyAgQHJldHVybiBBIHBv aW50ZXIgdG8gdGhlIEVGSSBkZXZpY2Ugbm9kZSBvciBOVUxMIGlmIFRleHREZXZpY2VOb2RlIGlz IE5VTEwgb3IgdGhlcmUgd2FzDQo+ICsgICAgICAgICAgaW5zdWZmaWNpZW50IG1lbW9yeSBvciB0 ZXh0IHVuc3VwcG9ydGVkLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9ERVZJQ0VfUEFUSF9QUk9UT0NP TCAqDQo+ICtVZWZpRGV2aWNlUGF0aExpYkNvbnZlcnRUZXh0VG9EZXZpY2VOb2RlICgNCj4gKyAg IENPTlNUIENIQVIxNiAqVGV4dERldmljZU5vZGUNCj4gKyAgKTsNCj4gKw0KPiArLyoqDQo+ICsg IENvbnZlcnQgdGV4dCB0byB0aGUgYmluYXJ5IHJlcHJlc2VudGF0aW9uIG9mIGEgZGV2aWNlIHBh dGguDQo+ICsNCj4gKw0KPiArICBAcGFyYW0gVGV4dERldmljZVBhdGggIFRleHREZXZpY2VQYXRo IHBvaW50cyB0byB0aGUgdGV4dCByZXByZXNlbnRhdGlvbiBvZiBhIGRldmljZQ0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgIHBhdGguIENvbnZlcnNpb24gc3RhcnRzIHdpdGggdGhlIGZpcnN0 IGNoYXJhY3RlciBhbmQgY29udGludWVzDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgdW50 aWwgdGhlIGZpcnN0IG5vbi1kZXZpY2Ugbm9kZSBjaGFyYWN0ZXIuDQo+ICsNCj4gKyAgQHJldHVy biBBIHBvaW50ZXIgdG8gdGhlIGFsbG9jYXRlZCBkZXZpY2UgcGF0aCBvciBOVUxMIGlmIFRleHRE ZXZpY2VOb2RlIGlzIE5VTEwgb3INCj4gKyAgICAgICAgICB0aGVyZSB3YXMgaW5zdWZmaWNpZW50 IG1lbW9yeS4NCj4gKw0KPiArKiovDQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0KPiAr VWVmaURldmljZVBhdGhMaWJDb252ZXJ0VGV4dFRvRGV2aWNlUGF0aCAoDQo+ICsgICBDT05TVCBD SEFSMTYgKlRleHREZXZpY2VQYXRoDQo+ICsgICk7DQo+ICsNCj4gK0VGSV9ERVZJQ0VfUEFUSF9Q Uk9UT0NPTCAqDQo+ICtDcmVhdGVEZXZpY2VOb2RlICgNCj4gKyAgIFVJTlQ4ICAgICAgICAgICAg ICAgICAgICAgICAgICAgTm9kZVR5cGUsDQo+ICsgICBVSU5UOCAgICAgICAgICAgICAgICAgICAg ICAgICAgIE5vZGVTdWJUeXBlLA0KPiArICAgVUlOVDE2ICAgICAgICAgICAgICAgICAgICAgICAg ICBOb2RlTGVuZ3RoDQo+ICsgICk7DQo+ICsNCj4gKyBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wg Kg0KPiArQ3JlYXRlRGV2aWNlTm9kZSAoDQo+ICsgICBVSU5UOCAgICAgICAgICAgICAgICAgICAg ICAgICAgIE5vZGVUeXBlLA0KPiArICAgVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAgICBO b2RlU3ViVHlwZSwNCj4gKyAgIFVJTlQxNiAgICAgICAgICAgICAgICAgICAgICAgICAgTm9kZUxl bmd0aA0KPiArICApOw0KPiArDQo+ICtCT09MRUFODQo+ICtJc0RldmljZVBhdGhNdWx0aUluc3Rh bmNlICgNCj4gKyAgIENPTlNUIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgKkRldmljZVBhdGgN Cj4gKyAgKTsNCj4gKw0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoNCj4gK0dldE5leHRE ZXZpY2VQYXRoSW5zdGFuY2UgKA0KPiArICAgIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAq KkRldmljZVBhdGgsDQo+ICsgICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgKlNpemUN Cj4gKyAgKTsNCj4gKw0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoNCj4gK0FwcGVuZERl dmljZVBhdGhJbnN0YW5jZSAoDQo+ICsgICBDT05TVCBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wg ICpEZXZpY2VQYXRoLCAgICAgICAgT1BUSU9OQUwNCj4gKyAgIENPTlNUIEVGSV9ERVZJQ0VfUEFU SF9QUk9UT0NPTCAgKkRldmljZVBhdGhJbnN0YW5jZSBPUFRJT05BTA0KPiArICApOw0KPiArDQo+ ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0KPiArQXBwZW5kRGV2aWNlUGF0aE5vZGUgKA0K PiArICAgQ09OU1QgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICAqRGV2aWNlUGF0aCwgICAgIE9Q VElPTkFMDQo+ICsgICBDT05TVCBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICpEZXZpY2VQYXRo Tm9kZSAgT1BUSU9OQUwNCj4gKyAgKTsNCj4gK0VGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqDQo+ ICtBcHBlbmREZXZpY2VQYXRoICgNCj4gKyAgIENPTlNUIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NP TCAgKkZpcnN0RGV2aWNlUGF0aCwgIE9QVElPTkFMDQo+ICsgICBDT05TVCBFRklfREVWSUNFX1BB VEhfUFJPVE9DT0wgICpTZWNvbmREZXZpY2VQYXRoICBPUFRJT05BTA0KPiArICApOw0KPiArDQo+ ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0KPiArRHVwbGljYXRlRGV2aWNlUGF0aCAoDQo+ ICsgICBDT05TVCBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICpEZXZpY2VQYXRoDQo+ICsgICk7 DQo+ICsNCj4gK1VJTlRODQo+ICtHZXREZXZpY2VQYXRoU2l6ZSAoDQo+ICsgICBDT05TVCBFRklf REVWSUNFX1BBVEhfUFJPVE9DT0wgICpEZXZpY2VQYXRoDQo+ICsgICk7DQo+ICsNCj4gK0NIQVIx NiAqDQo+ICtDb252ZXJ0RGV2aWNlTm9kZVRvVGV4dCAoDQo+ICsgICBDT05TVCBFRklfREVWSUNF X1BBVEhfUFJPVE9DT0wgICpEZXZpY2VOb2RlLA0KPiArICAgQk9PTEVBTiAgICAgICAgICAgICAg ICAgICAgICAgICBEaXNwbGF5T25seSwNCj4gKyAgIEJPT0xFQU4gICAgICAgICAgICAgICAgICAg ICAgICAgQWxsb3dTaG9ydGN1dHMNCj4gKyAgKTsNCj4gKw0KPiArQ0hBUjE2ICoNCj4gK0NvbnZl cnREZXZpY2VQYXRoVG9UZXh0ICgNCj4gKyAgIENPTlNUIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NP TCAgICpEZXZpY2VQYXRoLA0KPiArICAgQk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgICAg RGlzcGxheU9ubHksDQo+ICsgICBCT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxv d1Nob3J0Y3V0cw0KPiArICApOw0KPiArDQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0K PiArQ29udmVydFRleHRUb0RldmljZU5vZGUgKA0KPiArICAgQ09OU1QgQ0hBUjE2ICpUZXh0RGV2 aWNlTm9kZQ0KPiArICApOw0KPiArDQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0KPiAr Q29udmVydFRleHRUb0RldmljZVBhdGggKA0KPiArICAgQ09OU1QgQ0hBUjE2ICpUZXh0RGV2aWNl UGF0aA0KPiArICApOw0KPiArDQo+ICsjZW5kaWYNCj4gZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9T b3VyY2UvQy9HTlVtYWtlZmlsZSBiL0Jhc2VUb29scy9Tb3VyY2UvQy9HTlVtYWtlZmlsZQ0KPiBp bmRleCAwZGM3NDgyLi4zNzQyMWFkIDEwMDY0NA0KPiAtLS0gYS9CYXNlVG9vbHMvU291cmNlL0Mv R05VbWFrZWZpbGUNCj4gKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9DL0dOVW1ha2VmaWxlDQo+IEBA IC02NSwxMSArNjUsMTIgQEAgQVBQTElDQVRJT05TID0gXA0KPiAgICBHZW5DcmMzMiBcDQo+ICAg IEdlblZ0ZiBcDQo+ICAgIEx6bWFDb21wcmVzcyBcDQo+ICAgIFNwbGl0IFwNCj4gICAgVGlhbm9D b21wcmVzcyBcDQo+IC0gIFZvbEluZm8NCj4gKyAgVm9sSW5mbyBcDQo+ICsgIERldmljZVBhdGgN Cj4NCj4gIFNVQkRJUlMgOj0gJChMSUJSQVJJRVMpICQoQVBQTElDQVRJT05TKQ0KPg0KPiAgJChM SUJSQVJJRVMpOiAkKE1BS0VST09UKS9saWJzDQo+ICAkKEFQUExJQ0FUSU9OUyk6ICQoTElCUkFS SUVTKSAkKE1BS0VST09UKS9iaW4gJChWRlJBVVRPR0VOKQ0KPiBkaWZmIC0tZ2l0IGEvQmFzZVRv b2xzL1NvdXJjZS9DL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFyZC9CbHVldG9vdGguaCBiL0Jhc2VU b29scy9Tb3VyY2UvQy9JbmNsdWRlL0luZHVzdHJ5U3RhbmRhcmQvQmx1ZXRvb3RoLmgNCj4gbmV3 IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMC4uZDZlNmQ3NQ0KPiAtLS0gL2Rldi9u dWxsDQo+ICsrKyBiL0Jhc2VUb29scy9Tb3VyY2UvQy9JbmNsdWRlL0luZHVzdHJ5U3RhbmRhcmQv Qmx1ZXRvb3RoLmgNCj4gQEAgLTAsMCArMSw2MiBAQA0KPiArLyoqIEBmaWxlDQo+ICsgIFRoaXMg ZmlsZSBjb250YWlucyB0aGUgQmx1ZXRvb3RoIGRlZmluaXRpb25zIHRoYXQgYXJlIGNvbnN1bWVk IGJ5IGRyaXZlcnMuDQo+ICsgIFRoZXNlIGRlZmluaXRpb25zIGFyZSBmcm9tIEJsdWV0b290aCBD b3JlIFNwZWNpZmljYXRpb24gVmVyc2lvbiA0LjAgSnVuZSwgMjAxMA0KPiArDQo+ICsgIENvcHly aWdodCAoYykgMjAxNywgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJS Pg0KPiArICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICsg IGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25k aXRpb25zIG9mIHRoZSBCU0QgTGljZW5zZQ0KPiArICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRp c3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlIGZvdW5kIGF0 DQo+ICsgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4g Kw0KPiArICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0Ug T04gQU4gIkFTIElTIiBCQVNJUywNCj4gKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VO VEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gKw0KPiAr KiovDQo+ICsNCj4gKyNpZm5kZWYgX0JMVUVUT09USF9IXw0KPiArI2RlZmluZSBfQkxVRVRPT1RI X0hfDQo+ICsNCj4gKyNwcmFnbWEgcGFjaygxKQ0KPiArDQo+ICsvLy8NCj4gKy8vLyBCTFVFVE9P VEhfQUREUkVTUw0KPiArLy8vDQo+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ICsgIC8vLw0KPiArICAv Ly8gNDhiaXQgQmx1ZXRvb3RoIGRldmljZSBhZGRyZXNzLg0KPiArICAvLy8NCj4gKyAgVUlOVDgg ICAgICBBZGRyZXNzWzZdOw0KPiArfSBCTFVFVE9PVEhfQUREUkVTUzsNCj4gKw0KPiArLy8vDQo+ ICsvLy8gQkxVRVRPT1RIX0NMQVNTX09GX0RFVklDRS4gU2VlIEJsdWV0b290aCBzcGVjaWZpY2F0 aW9uIGZvciBkZXRhaWwuDQo+ICsvLy8NCj4gK3R5cGVkZWYgc3RydWN0IHsNCj4gKyAgVUlOVDgg ICAgICBGb3JtYXRUeXBlOjI7DQo+ICsgIFVJTlQ4ICAgICAgTWlub3JEZXZpY2VDbGFzczogNjsN Cj4gKyAgVUlOVDE2ICAgICBNYWpvckRldmljZUNsYXNzOiA1Ow0KPiArICBVSU5UMTYgICAgIE1h am9yU2VydmljZUNsYXNzOjExOw0KPiArfSBCTFVFVE9PVEhfQ0xBU1NfT0ZfREVWSUNFOw0KPiAr DQo+ICsvLy8NCj4gKy8vLyBCTFVFVE9PVEhfTEVfQUREUkVTUw0KPiArLy8vDQo+ICt0eXBlZGVm IHN0cnVjdCB7DQo+ICsgIC8vLw0KPiArICAvLy8gNDgtYml0IEJsdWV0b290aCBkZXZpY2UgYWRk cmVzcw0KPiArICAvLy8NCj4gKyAgVUlOVDggICAgICBBZGRyZXNzWzZdOw0KPiArICAvLy8NCj4g KyAgLy8vIDB4MDAgLSBQdWJsaWMgRGV2aWNlIEFkZHJlc3MNCj4gKyAgLy8vIDB4MDEgLSBSYW5k b20gRGV2aWNlIEFkZHJlc3MNCj4gKyAgLy8vDQo+ICsgIFVJTlQ4ICAgICAgVHlwZTsNCj4gK30g QkxVRVRPT1RIX0xFX0FERFJFU1M7DQo+ICsNCj4gKyNwcmFnbWEgcGFjaygpDQo+ICsNCj4gKyNk ZWZpbmUgQkxVRVRPT1RIX0hDSV9DT01NQU5EX0xPQ0FMX1JFQURBQkxFX05BTUVfTUFYX1NJWkUg ICAgMjQ4DQo+ICsNCj4gKyNkZWZpbmUgQkxVRVRPT1RIX0hDSV9MSU5LX0tFWV9TSVpFICAgICAg ICAgICAgICAgICAgICAgICAgICAgMTYNCj4gKw0KPiArI2VuZGlmDQo+IGRpZmYgLS1naXQgYS9C YXNlVG9vbHMvU291cmNlL0MvSW5jbHVkZS9Qcm90b2NvbC9EZXZpY2VQYXRoLmggYi9CYXNlVG9v bHMvU291cmNlL0MvSW5jbHVkZS9Qcm90b2NvbC9EZXZpY2VQYXRoLmgNCj4gbmV3IGZpbGUgbW9k ZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMC4uYTVkOGVlYQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsr KyBiL0Jhc2VUb29scy9Tb3VyY2UvQy9JbmNsdWRlL1Byb3RvY29sL0RldmljZVBhdGguaA0KPiBA QCAtMCwwICsxLDEzOTEgQEANCj4gKy8qKiBAZmlsZQ0KPiArICBUaGUgZGV2aWNlIHBhdGggcHJv dG9jb2wgYXMgZGVmaW5lZCBpbiBVRUZJIDIuMC4NCj4gKw0KPiArICBUaGUgZGV2aWNlIHBhdGgg cmVwcmVzZW50cyBhIHByb2dyYW1tYXRpYyBwYXRoIHRvIGEgZGV2aWNlLA0KPiArICBmcm9tIGEg c29mdHdhcmUgcG9pbnQgb2Ygdmlldy4gVGhlIHBhdGggbXVzdCBwZXJzaXN0IGZyb20gYm9vdCB0 byBib290LCBzbw0KPiArICBpdCBjYW4gbm90IGNvbnRhaW4gdGhpbmdzIGxpa2UgUENJIGJ1cyBu dW1iZXJzIHRoYXQgY2hhbmdlIGZyb20gYm9vdCB0byBib290Lg0KPiArDQo+ICtDb3B5cmlnaHQg KGMpIDIwMTcsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4g K1RoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIGxpY2Vuc2Vk IGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlcg0KPiArdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9m IHRoZSBCU0QgTGljZW5zZSB0aGF0IGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLg0KPiAr VGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUgZm91bmQgYXQNCj4gK2h0dHA6Ly9v cGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHAuDQo+ICsNCj4gK1RIRSBQUk9H UkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiIEJB U0lTLA0KPiArV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lO RCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gKw0KPiArKiovDQo+ICsNCj4gKyNpZm5k ZWYgX19FRklfREVWSUNFX1BBVEhfSF9fDQo+ICsjZGVmaW5lIF9fRUZJX0RFVklDRV9QQVRIX0hf Xw0KPiArDQo+ICsjaW5jbHVkZSA8R3VpZC9QY0Fuc2kuaD4NCj4gKyNpbmNsdWRlIDxJbmR1c3Ry eVN0YW5kYXJkL0FjcGkzXzAuaD4NCj4gKyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJkL0JsdWV0 b290aC5oPg0KPiArDQo+ICsvLy8NCj4gKy8vLyBEZXZpY2UgUGF0aCBwcm90b2NvbC4NCj4gKy8v Lw0KPiArI2RlZmluZSBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0xfR1VJRCBcDQo+ICsgIHsgXA0K PiArICAgIDB4OTU3NmU5MSwgMHg2ZDNmLCAweDExZDIsIHsweDhlLCAweDM5LCAweDAsIDB4YTAs IDB4YzksIDB4NjksIDB4NzIsIDB4M2IgfSBcDQo+ICsgIH0NCj4gKw0KPiArLy8vDQo+ICsvLy8g RGV2aWNlIFBhdGggZ3VpZCBkZWZpbml0aW9uIGZvciBiYWNrd2FyZC1jb21wYXRpYmxlIHdpdGgg RUZJMS4xLg0KPiArLy8vDQo+ICsjZGVmaW5lIERFVklDRV9QQVRIX1BST1RPQ09MICBFRklfREVW SUNFX1BBVEhfUFJPVE9DT0xfR1VJRA0KPiArDQo+ICsjcHJhZ21hIHBhY2soMSkNCj4gKw0KPiAr LyoqDQo+ICsgIFRoaXMgcHJvdG9jb2wgY2FuIGJlIHVzZWQgb24gYW55IGRldmljZSBoYW5kbGUg dG8gb2J0YWluIGdlbmVyaWMgcGF0aC9sb2NhdGlvbg0KPiArICBpbmZvcm1hdGlvbiBjb25jZXJu aW5nIHRoZSBwaHlzaWNhbCBkZXZpY2Ugb3IgbG9naWNhbCBkZXZpY2UuIElmIHRoZSBoYW5kbGUg ZG9lcw0KPiArICBub3QgbG9naWNhbGx5IG1hcCB0byBhIHBoeXNpY2FsIGRldmljZSwgdGhlIGhh bmRsZSBtYXkgbm90IG5lY2Vzc2FyaWx5IHN1cHBvcnQNCj4gKyAgdGhlIGRldmljZSBwYXRoIHBy b3RvY29sLiBUaGUgZGV2aWNlIHBhdGggZGVzY3JpYmVzIHRoZSBsb2NhdGlvbiBvZiB0aGUgZGV2 aWNlDQo+ICsgIHRoZSBoYW5kbGUgaXMgZm9yLiBUaGUgc2l6ZSBvZiB0aGUgRGV2aWNlIFBhdGgg Y2FuIGJlIGRldGVybWluZWQgZnJvbSB0aGUgc3RydWN0dXJlcw0KPiArICB0aGF0IG1ha2UgdXAg dGhlIERldmljZSBQYXRoLg0KPiArKiovDQo+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ICsgIFVJTlQ4 IFR5cGU7ICAgICAgIC8vLzwgMHgwMSBIYXJkd2FyZSBEZXZpY2UgUGF0aC4NCj4gKyAgICAgICAg ICAgICAgICAgICAgLy8vPCAweDAyIEFDUEkgRGV2aWNlIFBhdGguDQo+ICsgICAgICAgICAgICAg ICAgICAgIC8vLzwgMHgwMyBNZXNzYWdpbmcgRGV2aWNlIFBhdGguDQo+ICsgICAgICAgICAgICAg ICAgICAgIC8vLzwgMHgwNCBNZWRpYSBEZXZpY2UgUGF0aC4NCj4gKyAgICAgICAgICAgICAgICAg ICAgLy8vPCAweDA1IEJJT1MgQm9vdCBTcGVjaWZpY2F0aW9uIERldmljZSBQYXRoLg0KPiArICAg ICAgICAgICAgICAgICAgICAvLy88IDB4N0YgRW5kIG9mIEhhcmR3YXJlIERldmljZSBQYXRoLg0K PiArDQo+ICsgIFVJTlQ4IFN1YlR5cGU7ICAgIC8vLzwgVmFyaWVzIGJ5IFR5cGUNCj4gKyAgICAg ICAgICAgICAgICAgICAgLy8vPCAweEZGIEVuZCBFbnRpcmUgRGV2aWNlIFBhdGgsIG9yDQo+ICsg ICAgICAgICAgICAgICAgICAgIC8vLzwgMHgwMSBFbmQgVGhpcyBJbnN0YW5jZSBvZiBhIERldmlj ZSBQYXRoIGFuZCBzdGFydCBhIG5ldw0KPiArICAgICAgICAgICAgICAgICAgICAvLy88IERldmlj ZSBQYXRoLg0KPiArDQo+ICsgIFVJTlQ4IExlbmd0aFsyXTsgIC8vLzwgU3BlY2lmaWMgRGV2aWNl IFBhdGggZGF0YS4gVHlwZSBhbmQgU3ViLVR5cGUgZGVmaW5lDQo+ICsgICAgICAgICAgICAgICAg ICAgIC8vLzwgdHlwZSBvZiBkYXRhLiBTaXplIG9mIGRhdGEgaXMgaW5jbHVkZWQgaW4gTGVuZ3Ro Lg0KPiArDQo+ICt9IEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTDsNCj4gKw0KPiArLy8vDQo+ICsv Ly8gRGV2aWNlIFBhdGggcHJvdG9jb2wgZGVmaW5pdGlvbiBmb3IgYmFja3dhcmQtY29tcGF0aWJs ZSB3aXRoIEVGSTEuMS4NCj4gKy8vLw0KPiArdHlwZWRlZiBFRklfREVWSUNFX1BBVEhfUFJPVE9D T0wgIEVGSV9ERVZJQ0VfUEFUSDsNCj4gKw0KPiArLy8vDQo+ICsvLy8gSGFyZHdhcmUgRGV2aWNl IFBhdGhzLg0KPiArLy8vDQo+ICsjZGVmaW5lIEhBUkRXQVJFX0RFVklDRV9QQVRIICAgICAgMHgw MQ0KPiArDQo+ICsvLy8NCj4gKy8vLyBQQ0kgRGV2aWNlIFBhdGggU3ViVHlwZS4NCj4gKy8vLw0K PiArI2RlZmluZSBIV19QQ0lfRFAgICAgICAgICAgICAgICAgIDB4MDENCj4gKw0KPiArLy8vDQo+ ICsvLy8gUENJIERldmljZSBQYXRoLg0KPiArLy8vDQo+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ICsg IEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAgICAgSGVhZGVyOw0KPiArICAvLy8NCj4gKyAg Ly8vIFBDSSBGdW5jdGlvbiBOdW1iZXIuDQo+ICsgIC8vLw0KPiArICBVSU5UOCAgICAgICAgICAg ICAgICAgICAgICAgICAgIEZ1bmN0aW9uOw0KPiArICAvLy8NCj4gKyAgLy8vIFBDSSBEZXZpY2Ug TnVtYmVyLg0KPiArICAvLy8NCj4gKyAgVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAgICBE ZXZpY2U7DQo+ICt9IFBDSV9ERVZJQ0VfUEFUSDsNCj4gKw0KPiArLy8vDQo+ICsvLy8gUENDQVJE IERldmljZSBQYXRoIFN1YlR5cGUuDQo+ICsvLy8NCj4gKyNkZWZpbmUgSFdfUENDQVJEX0RQICAg ICAgICAgICAgICAweDAyDQo+ICsNCj4gKy8vLw0KPiArLy8vIFBDQ0FSRCBEZXZpY2UgUGF0aC4N Cj4gKy8vLw0KPiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiArICBFRklfREVWSUNFX1BBVEhfUFJPVE9D T0wgICAgICAgIEhlYWRlcjsNCj4gKyAgLy8vDQo+ICsgIC8vLyBGdW5jdGlvbiBOdW1iZXIgKDAg PSBGaXJzdCBGdW5jdGlvbikuDQo+ICsgIC8vLw0KPiArICBVSU5UOCAgICAgICAgICAgICAgICAg ICAgICAgICAgIEZ1bmN0aW9uTnVtYmVyOw0KPiArfSBQQ0NBUkRfREVWSUNFX1BBVEg7DQo+ICsN Cj4gKy8vLw0KPiArLy8vIE1lbW9yeSBNYXBwZWQgRGV2aWNlIFBhdGggU3ViVHlwZS4NCj4gKy8v Lw0KPiArI2RlZmluZSBIV19NRU1NQVBfRFAgICAgICAgICAgICAgMHgwMw0KPiArDQo+ICsvLy8N Cj4gKy8vLyBNZW1vcnkgTWFwcGVkIERldmljZSBQYXRoLg0KPiArLy8vDQo+ICt0eXBlZGVmIHN0 cnVjdCB7DQo+ICsgIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAgICAgSGVhZGVyOw0KPiAr ICAvLy8NCj4gKyAgLy8vIEVGSV9NRU1PUllfVFlQRQ0KPiArICAvLy8NCj4gKyAgVUlOVDMyICAg ICAgICAgICAgICAgICAgICAgICAgICBNZW1vcnlUeXBlOw0KPiArICAvLy8NCj4gKyAgLy8vIFN0 YXJ0aW5nIE1lbW9yeSBBZGRyZXNzLg0KPiArICAvLy8NCj4gKyAgRUZJX1BIWVNJQ0FMX0FERFJF U1MgICAgICAgICAgICBTdGFydGluZ0FkZHJlc3M7DQo+ICsgIC8vLw0KPiArICAvLy8gRW5kaW5n IE1lbW9yeSBBZGRyZXNzLg0KPiArICAvLy8NCj4gKyAgRUZJX1BIWVNJQ0FMX0FERFJFU1MgICAg ICAgICAgICBFbmRpbmdBZGRyZXNzOw0KPiArfSBNRU1NQVBfREVWSUNFX1BBVEg7DQo+ICsNCj4g Ky8vLw0KPiArLy8vIEhhcmR3YXJlIFZlbmRvciBEZXZpY2UgUGF0aCBTdWJUeXBlLg0KPiArLy8v DQo+ICsjZGVmaW5lIEhXX1ZFTkRPUl9EUCAgICAgICAgICAgICAgMHgwNA0KPiArDQo+ICsvLy8N Cj4gKy8vLyBUaGUgVmVuZG9yIERldmljZSBQYXRoIGFsbG93cyB0aGUgY3JlYXRpb24gb2YgdmVu ZG9yLWRlZmluZWQgRGV2aWNlIFBhdGhzLiBBIHZlbmRvciBtdXN0DQo+ICsvLy8gYWxsb2NhdGUg YSBWZW5kb3IgR1VJRCBmb3IgYSBEZXZpY2UgUGF0aC4gVGhlIFZlbmRvciBHVUlEIGNhbiB0aGVu IGJlIHVzZWQgdG8gZGVmaW5lIHRoZQ0KPiArLy8vIGNvbnRlbnRzIG9uIHRoZSBuIGJ5dGVzIHRo YXQgZm9sbG93IGluIHRoZSBWZW5kb3IgRGV2aWNlIFBhdGggbm9kZS4NCj4gKy8vLw0KPiArdHlw ZWRlZiBzdHJ1Y3Qgew0KPiArICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICAgICAgIEhlYWRl cjsNCj4gKyAgLy8vDQo+ICsgIC8vLyBWZW5kb3ItYXNzaWduZWQgR1VJRCB0aGF0IGRlZmluZXMg dGhlIGRhdGEgdGhhdCBmb2xsb3dzLg0KPiArICAvLy8NCj4gKyAgRUZJX0dVSUQgICAgICAgICAg ICAgICAgICAgICAgICBHdWlkOw0KPiArICAvLy8NCj4gKyAgLy8vIFZlbmRvci1kZWZpbmVkIHZh cmlhYmxlIHNpemUgZGF0YS4NCj4gKyAgLy8vDQo+ICt9IFZFTkRPUl9ERVZJQ0VfUEFUSDsNCj4g Kw0KPiArLy8vDQo+ICsvLy8gQ29udHJvbGxlciBEZXZpY2UgUGF0aCBTdWJUeXBlLg0KPiArLy8v DQo+ICsjZGVmaW5lIEhXX0NPTlRST0xMRVJfRFAgICAgICAgICAgMHgwNQ0KPiArDQo+ICsvLy8N Cj4gKy8vLyBDb250cm9sbGVyIERldmljZSBQYXRoLg0KPiArLy8vDQo+ICt0eXBlZGVmIHN0cnVj dCB7DQo+ICsgIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAgICAgSGVhZGVyOw0KPiArICAv Ly8NCj4gKyAgLy8vIENvbnRyb2xsZXIgbnVtYmVyLg0KPiArICAvLy8NCj4gKyAgVUlOVDMyICAg ICAgICAgICAgICAgICAgICAgICAgICBDb250cm9sbGVyTnVtYmVyOw0KPiArfSBDT05UUk9MTEVS X0RFVklDRV9QQVRIOw0KPiArDQo+ICsvLy8NCj4gKy8vLyBCTUMgRGV2aWNlIFBhdGggU3ViVHlw ZS4NCj4gKy8vLw0KPiArI2RlZmluZSBIV19CTUNfRFAgICAgICAgICAgICAgICAgIDB4MDYNCj4g Kw0KPiArLy8vDQo+ICsvLy8gQk1DIERldmljZSBQYXRoLg0KPiArLy8vDQo+ICt0eXBlZGVmIHN0 cnVjdCB7DQo+ICsgIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAgICAgSGVhZGVyOw0KPiAr ICAvLy8NCj4gKyAgLy8vIEludGVyZmFjZSBUeXBlLg0KPiArICAvLy8NCj4gKyAgVUlOVDggICAg ICAgICAgICAgICAgICAgICAgICAgICBJbnRlcmZhY2VUeXBlOw0KPiArICAvLy8NCj4gKyAgLy8v IEJhc2UgQWRkcmVzcy4NCj4gKyAgLy8vDQo+ICsgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAg ICAgICAgQmFzZUFkZHJlc3NbOF07DQo+ICt9IEJNQ19ERVZJQ0VfUEFUSDsNCj4gKw0KPiArLy8v DQo+ICsvLy8gQUNQSSBEZXZpY2UgUGF0aHMuDQo+ICsvLy8NCj4gKyNkZWZpbmUgQUNQSV9ERVZJ Q0VfUEFUSCAgICAgICAgICAweDAyDQo+ICsNCj4gKy8vLw0KPiArLy8vIEFDUEkgRGV2aWNlIFBh dGggU3ViVHlwZS4NCj4gKy8vLw0KPiArI2RlZmluZSBBQ1BJX0RQICAgICAgICAgICAgICAgICAg IDB4MDENCj4gK3R5cGVkZWYgc3RydWN0IHsNCj4gKyAgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09M ICAgICAgICBIZWFkZXI7DQo+ICsgIC8vLw0KPiArICAvLy8gRGV2aWNlJ3MgUG5QIGhhcmR3YXJl IElEIHN0b3JlZCBpbiBhIG51bWVyaWMgMzItYml0DQo+ICsgIC8vLyBjb21wcmVzc2VkIEVJU0Et dHlwZSBJRC4gVGhpcyB2YWx1ZSBtdXN0IG1hdGNoIHRoZQ0KPiArICAvLy8gY29ycmVzcG9uZGlu ZyBfSElEIGluIHRoZSBBQ1BJIG5hbWUgc3BhY2UuDQo+ICsgIC8vLw0KPiArICBVSU5UMzIgICAg ICAgICAgICAgICAgICAgICAgICAgIEhJRDsNCj4gKyAgLy8vDQo+ICsgIC8vLyBVbmlxdWUgSUQg dGhhdCBpcyByZXF1aXJlZCBieSBBQ1BJIGlmIHR3byBkZXZpY2VzIGhhdmUgdGhlDQo+ICsgIC8v LyBzYW1lIF9ISUQuIFRoaXMgdmFsdWUgbXVzdCBhbHNvIG1hdGNoIHRoZSBjb3JyZXNwb25kaW5n DQo+ICsgIC8vLyBfVUlEL19ISUQgcGFpciBpbiB0aGUgQUNQSSBuYW1lIHNwYWNlLiBPbmx5IHRo ZSAzMi1iaXQNCj4gKyAgLy8vIG51bWVyaWMgdmFsdWUgdHlwZSBvZiBfVUlEIGlzIHN1cHBvcnRl ZC4gVGh1cywgc3RyaW5ncyBtdXN0DQo+ICsgIC8vLyBub3QgYmUgdXNlZCBmb3IgdGhlIF9VSUQg aW4gdGhlIEFDUEkgbmFtZSBzcGFjZS4NCj4gKyAgLy8vDQo+ICsgIFVJTlQzMiAgICAgICAgICAg ICAgICAgICAgICAgICAgVUlEOw0KPiArfSBBQ1BJX0hJRF9ERVZJQ0VfUEFUSDsNCj4gKw0KPiAr Ly8vDQo+ICsvLy8gRXhwYW5kZWQgQUNQSSBEZXZpY2UgUGF0aCBTdWJUeXBlLg0KPiArLy8vDQo+ ICsjZGVmaW5lIEFDUElfRVhURU5ERURfRFAgICAgICAgICAgMHgwMg0KPiArdHlwZWRlZiBzdHJ1 Y3Qgew0KPiArICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICAgICAgIEhlYWRlcjsNCj4gKyAg Ly8vDQo+ICsgIC8vLyBEZXZpY2UncyBQblAgaGFyZHdhcmUgSUQgc3RvcmVkIGluIGEgbnVtZXJp YyAzMi1iaXQNCj4gKyAgLy8vIGNvbXByZXNzZWQgRUlTQS10eXBlIElELiBUaGlzIHZhbHVlIG11 c3QgbWF0Y2ggdGhlDQo+ICsgIC8vLyBjb3JyZXNwb25kaW5nIF9ISUQgaW4gdGhlIEFDUEkgbmFt ZSBzcGFjZS4NCj4gKyAgLy8vDQo+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAg SElEOw0KPiArICAvLy8NCj4gKyAgLy8vIFVuaXF1ZSBJRCB0aGF0IGlzIHJlcXVpcmVkIGJ5IEFD UEkgaWYgdHdvIGRldmljZXMgaGF2ZSB0aGUNCj4gKyAgLy8vIHNhbWUgX0hJRC4gVGhpcyB2YWx1 ZSBtdXN0IGFsc28gbWF0Y2ggdGhlIGNvcnJlc3BvbmRpbmcNCj4gKyAgLy8vIF9VSUQvX0hJRCBw YWlyIGluIHRoZSBBQ1BJIG5hbWUgc3BhY2UuDQo+ICsgIC8vLw0KPiArICBVSU5UMzIgICAgICAg ICAgICAgICAgICAgICAgICAgIFVJRDsNCj4gKyAgLy8vDQo+ICsgIC8vLyBEZXZpY2UncyBjb21w YXRpYmxlIFBuUCBoYXJkd2FyZSBJRCBzdG9yZWQgaW4gYSBudW1lcmljDQo+ICsgIC8vLyAzMi1i aXQgY29tcHJlc3NlZCBFSVNBLXR5cGUgSUQuIFRoaXMgdmFsdWUgbXVzdCBtYXRjaCBhdA0KPiAr ICAvLy8gbGVhc3Qgb25lIG9mIHRoZSBjb21wYXRpYmxlIGRldmljZSBJRHMgcmV0dXJuZWQgYnkg dGhlDQo+ICsgIC8vLyBjb3JyZXNwb25kaW5nIF9DSUQgaW4gdGhlIEFDUEkgbmFtZSBzcGFjZS4N Cj4gKyAgLy8vDQo+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgQ0lEOw0KPiAr ICAvLy8NCj4gKyAgLy8vIE9wdGlvbmFsIHZhcmlhYmxlIGxlbmd0aCBfSElEU1RSLg0KPiArICAv Ly8gT3B0aW9uYWwgdmFyaWFibGUgbGVuZ3RoIF9VSURTVFIuDQo+ICsgIC8vLyBPcHRpb25hbCB2 YXJpYWJsZSBsZW5ndGggX0NJRFNUUi4NCj4gKyAgLy8vDQo+ICt9IEFDUElfRVhURU5ERURfSElE X0RFVklDRV9QQVRIOw0KPiArDQo+ICsvLw0KPiArLy8gIEVJU0EgSUQgTWFjcm8NCj4gKy8vICBF SVNBIElEIERlZmluaXRpb24gMzItYml0cw0KPiArLy8gICBiaXRzWzE1OjBdIC0gdGhyZWUgY2hh cmFjdGVyIGNvbXByZXNzZWQgQVNDSUkgRUlTQSBJRC4NCj4gKy8vICAgYml0c1szMToxNl0gLSBi aW5hcnkgbnVtYmVyDQo+ICsvLyAgICBDb21wcmVzc2VkIEFTQ0lJIGlzIDUgYml0cyBwZXIgY2hh cmFjdGVyIDBiMDAwMDEgPSAnQScgMGIxMTAxMCA9ICdaJw0KPiArLy8NCj4gKyNkZWZpbmUgUE5Q X0VJU0FfSURfQ09OU1QgICAgICAgICAweDQxZDANCj4gKyNkZWZpbmUgRUlTQV9JRChfTmFtZSwg X051bSkgICAgICAoKFVJTlQzMikoKF9OYW1lKSB8IChfTnVtKSA8PCAxNikpDQo+ICsjZGVmaW5l IEVJU0FfUE5QX0lEKF9QTlBJZCkgICAgICAgKEVJU0FfSUQoUE5QX0VJU0FfSURfQ09OU1QsIChf UE5QSWQpKSkNCj4gKyNkZWZpbmUgRUZJX1BOUF9JRChfUE5QSWQpICAgICAgICAoRUlTQV9JRChQ TlBfRUlTQV9JRF9DT05TVCwgKF9QTlBJZCkpKQ0KPiArDQo+ICsjZGVmaW5lIFBOUF9FSVNBX0lE X01BU0sgICAgICAgICAgMHhmZmZmDQo+ICsjZGVmaW5lIEVJU0FfSURfVE9fTlVNKF9JZCkgICAg ICAgKChfSWQpID4+IDE2KQ0KPiArDQo+ICsvLy8NCj4gKy8vLyBBQ1BJIF9BRFIgRGV2aWNlIFBh dGggU3ViVHlwZS4NCj4gKy8vLw0KPiArI2RlZmluZSBBQ1BJX0FEUl9EUCAgICAgICAgICAgICAg IDB4MDMNCj4gKw0KPiArLy8vDQo+ICsvLy8gVGhlIF9BRFIgZGV2aWNlIHBhdGggaXMgdXNlZCB0 byBjb250YWluIHZpZGVvIG91dHB1dCBkZXZpY2UgYXR0cmlidXRlcyB0byBzdXBwb3J0IHRoZSBH cmFwaGljcw0KPiArLy8vIE91dHB1dCBQcm90b2NvbC4gVGhlIGRldmljZSBwYXRoIGNhbiBjb250 YWluIG11bHRpcGxlIF9BRFIgZW50cmllcyBpZiBtdWx0aXBsZSB2aWRlbyBvdXRwdXQNCj4gKy8v LyBkZXZpY2VzIGFyZSBkaXNwbGF5aW5nIHRoZSBzYW1lIG91dHB1dC4NCj4gKy8vLw0KPiArdHlw ZWRlZiBzdHJ1Y3Qgew0KPiArICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICAgICAgIEhlYWRl cjsNCj4gKyAgLy8vDQo+ICsgIC8vLyBfQURSIHZhbHVlLiBGb3IgdmlkZW8gb3V0cHV0IGRldmlj ZXMgdGhlIHZhbHVlIG9mIHRoaXMNCj4gKyAgLy8vIGZpZWxkIGNvbWVzIGZyb20gVGFibGUgQi0y IG9mIHRoZSBBQ1BJIDMuMCBzcGVjaWZpY2F0aW9uLiBBdA0KPiArICAvLy8gbGVhc3Qgb25lIF9B RFIgdmFsdWUgaXMgcmVxdWlyZWQuDQo+ICsgIC8vLw0KPiArICBVSU5UMzIgICAgICAgICAgICAg ICAgICAgICAgICAgIEFEUjsNCj4gKyAgLy8NCj4gKyAgLy8gVGhpcyBkZXZpY2UgcGF0aCBtYXkg b3B0aW9uYWxseSBjb250YWluIG1vcmUgdGhhbiBvbmUgX0FEUiBlbnRyeS4NCj4gKyAgLy8NCj4g K30gQUNQSV9BRFJfREVWSUNFX1BBVEg7DQo+ICsNCj4gKyNkZWZpbmUgQUNQSV9BRFJfRElTUExB WV9UWVBFX09USEVSICAgICAgICAgICAgIDANCj4gKyNkZWZpbmUgQUNQSV9BRFJfRElTUExBWV9U WVBFX1ZHQSAgICAgICAgICAgICAgIDENCj4gKyNkZWZpbmUgQUNQSV9BRFJfRElTUExBWV9UWVBF X1RWICAgICAgICAgICAgICAgIDINCj4gKyNkZWZpbmUgQUNQSV9BRFJfRElTUExBWV9UWVBFX0VY VEVSTkFMX0RJR0lUQUwgIDMNCj4gKyNkZWZpbmUgQUNQSV9BRFJfRElTUExBWV9UWVBFX0lOVEVS TkFMX0RJR0lUQUwgIDQNCj4gKw0KPiArI2RlZmluZSBBQ1BJX0RJU1BMQVlfQURSKF9EZXZpY2VJ ZFNjaGVtZSwgX0hlYWRJZCwgX05vblZnYU91dHB1dCwgX0Jpb3NDYW5EZXRlY3QsIF9WZW5kb3JJ bmZvLCBfVHlwZSwgX1BvcnQsIF9JbmRleCkgXA0KPiArICAgICAgICAgICgoVUlOVDMyKSggICgo VUlOVDMyKSgoX0RldmljZUlkU2NoZW1lKSAmIDB4MSkgPDwgMzEpIHwgIFwNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAoKChfSGVhZElkKSAgICAgICAgICAgICAgICAgJiAweDcpIDw8IDE4KSB8 ICBcDQo+ICsgICAgICAgICAgICAgICAgICAgICAgKCgoX05vblZnYU91dHB1dCkgICAgICAgICAg ICYgMHgxKSA8PCAxNykgfCAgXA0KPiArICAgICAgICAgICAgICAgICAgICAgICgoKF9CaW9zQ2Fu RGV0ZWN0KSAgICAgICAgICAmIDB4MSkgPDwgMTYpIHwgIFwNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAoKChfVmVuZG9ySW5mbykgICAgICAgICAgICAgJiAweGYpIDw8IDEyKSB8ICBcDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgKCgoX1R5cGUpICAgICAgICAgICAgICAgICAgICYgMHhmKSA8 PCA4KSAgfCAgXA0KPiArICAgICAgICAgICAgICAgICAgICAgICgoKF9Qb3J0KSAgICAgICAgICAg ICAgICAgICAmIDB4ZikgPDwgNCkgIHwgIFwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgKChf SW5kZXgpICAgICAgICAgICAgICAgICAgJiAweGYpICkpDQo+ICsNCj4gKy8vLw0KPiArLy8vIE1l c3NhZ2luZyBEZXZpY2UgUGF0aHMuDQo+ICsvLy8gVGhpcyBEZXZpY2UgUGF0aCBpcyB1c2VkIHRv IGRlc2NyaWJlIHRoZSBjb25uZWN0aW9uIG9mIGRldmljZXMgb3V0c2lkZSB0aGUgcmVzb3VyY2Ug ZG9tYWluIG9mIHRoZQ0KPiArLy8vIHN5c3RlbS4gVGhpcyBEZXZpY2UgUGF0aCBjYW4gZGVzY3Jp YmUgcGh5c2ljYWwgbWVzc2FnaW5nIGluZm9ybWF0aW9uIGxpa2UgU0NTSSBJRCwgb3IgYWJzdHJh Y3QNCj4gKy8vLyBpbmZvcm1hdGlvbiBsaWtlIG5ldHdvcmtpbmcgcHJvdG9jb2wgSVAgYWRkcmVz c2VzLg0KPiArLy8vDQo+ICsjZGVmaW5lIE1FU1NBR0lOR19ERVZJQ0VfUEFUSCAgICAgMHgwMw0K PiArDQo+ICsvLy8NCj4gKy8vLyBBVEFQSSBEZXZpY2UgUGF0aCBTdWJUeXBlDQo+ICsvLy8NCj4g KyNkZWZpbmUgTVNHX0FUQVBJX0RQICAgICAgICAgICAgICAweDAxDQo+ICt0eXBlZGVmIHN0cnVj dCB7DQo+ICsgIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAgICAgSGVhZGVyOw0KPiArICAv Ly8NCj4gKyAgLy8vIFNldCB0byB6ZXJvIGZvciBwcmltYXJ5LCBvciBvbmUgZm9yIHNlY29uZGFy eS4NCj4gKyAgLy8vDQo+ICsgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpbWFy eVNlY29uZGFyeTsNCj4gKyAgLy8vDQo+ICsgIC8vLyBTZXQgdG8gemVybyBmb3IgbWFzdGVyLCBv ciBvbmUgZm9yIHNsYXZlIG1vZGUuDQo+ICsgIC8vLw0KPiArICBVSU5UOCAgICAgICAgICAgICAg ICAgICAgICAgICAgIFNsYXZlTWFzdGVyOw0KPiArICAvLy8NCj4gKyAgLy8vIExvZ2ljYWwgVW5p dCBOdW1iZXIuDQo+ICsgIC8vLw0KPiArICBVSU5UMTYgICAgICAgICAgICAgICAgICAgICAgICAg IEx1bjsNCj4gK30gQVRBUElfREVWSUNFX1BBVEg7DQo+ICsNCj4gKy8vLw0KPiArLy8vIFNDU0kg RGV2aWNlIFBhdGggU3ViVHlwZS4NCj4gKy8vLw0KPiArI2RlZmluZSBNU0dfU0NTSV9EUCAgICAg ICAgICAgICAgIDB4MDINCj4gK3R5cGVkZWYgc3RydWN0IHsNCj4gKyAgRUZJX0RFVklDRV9QQVRI X1BST1RPQ09MICAgICAgICBIZWFkZXI7DQo+ICsgIC8vLw0KPiArICAvLy8gVGFyZ2V0IElEIG9u IHRoZSBTQ1NJIGJ1cyAoUFVOKS4NCj4gKyAgLy8vDQo+ICsgIFVJTlQxNiAgICAgICAgICAgICAg ICAgICAgICAgICAgUHVuOw0KPiArICAvLy8NCj4gKyAgLy8vIExvZ2ljYWwgVW5pdCBOdW1iZXIg KExVTikuDQo+ICsgIC8vLw0KPiArICBVSU5UMTYgICAgICAgICAgICAgICAgICAgICAgICAgIEx1 bjsNCj4gK30gU0NTSV9ERVZJQ0VfUEFUSDsNCj4gKw0KPiArLy8vDQo+ICsvLy8gRmlicmUgQ2hh bm5lbCBTdWJUeXBlLg0KPiArLy8vDQo+ICsjZGVmaW5lIE1TR19GSUJSRUNIQU5ORUxfRFAgICAg ICAgMHgwMw0KPiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiArICBFRklfREVWSUNFX1BBVEhfUFJPVE9D T0wgICAgICAgIEhlYWRlcjsNCj4gKyAgLy8vDQo+ICsgIC8vLyBSZXNlcnZlZCBmb3IgdGhlIGZ1 dHVyZS4NCj4gKyAgLy8vDQo+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgUmVz ZXJ2ZWQ7DQo+ICsgIC8vLw0KPiArICAvLy8gRmlicmUgQ2hhbm5lbCBXb3JsZCBXaWRlIE51bWJl ci4NCj4gKyAgLy8vDQo+ICsgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgICAgICAgV1dOOw0K PiArICAvLy8NCj4gKyAgLy8vIEZpYnJlIENoYW5uZWwgTG9naWNhbCBVbml0IE51bWJlci4NCj4g KyAgLy8vDQo+ICsgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgICAgICAgTHVuOw0KPiArfSBG SUJSRUNIQU5ORUxfREVWSUNFX1BBVEg7DQo+ICsNCj4gKy8vLw0KPiArLy8vIEZpYnJlIENoYW5u ZWwgRXggU3ViVHlwZS4NCj4gKy8vLw0KPiArI2RlZmluZSBNU0dfRklCUkVDSEFOTkVMRVhfRFAg ICAgIDB4MTUNCj4gK3R5cGVkZWYgc3RydWN0IHsNCj4gKyAgRUZJX0RFVklDRV9QQVRIX1BST1RP Q09MICAgICAgICBIZWFkZXI7DQo+ICsgIC8vLw0KPiArICAvLy8gUmVzZXJ2ZWQgZm9yIHRoZSBm dXR1cmUuDQo+ICsgIC8vLw0KPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgIFJl c2VydmVkOw0KPiArICAvLy8NCj4gKyAgLy8vIDggYnl0ZSBhcnJheSBjb250YWluaW5nIEZpYnJl IENoYW5uZWwgRW5kIERldmljZSBQb3J0IE5hbWUuDQo+ICsgIC8vLw0KPiArICBVSU5UOCAgICAg ICAgICAgICAgICAgICAgICAgICAgIFdXTls4XTsNCj4gKyAgLy8vDQo+ICsgIC8vLyA4IGJ5dGUg YXJyYXkgY29udGFpbmluZyBGaWJyZSBDaGFubmVsIExvZ2ljYWwgVW5pdCBOdW1iZXIuDQo+ICsg IC8vLw0KPiArICBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgIEx1bls4XTsNCj4gK30g RklCUkVDSEFOTkVMRVhfREVWSUNFX1BBVEg7DQo+ICsNCj4gKy8vLw0KPiArLy8vIDEzOTQgRGV2 aWNlIFBhdGggU3ViVHlwZQ0KPiArLy8vDQo+ICsjZGVmaW5lIE1TR18xMzk0X0RQICAgICAgICAg ICAgICAgMHgwNA0KPiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiArICBFRklfREVWSUNFX1BBVEhfUFJP VE9DT0wgICAgICAgIEhlYWRlcjsNCj4gKyAgLy8vDQo+ICsgIC8vLyBSZXNlcnZlZCBmb3IgdGhl IGZ1dHVyZS4NCj4gKyAgLy8vDQo+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAg UmVzZXJ2ZWQ7DQo+ICsgIC8vLw0KPiArICAvLy8gMTM5NCBHbG9iYWwgVW5pcXVlIElEIChHVUlE KS4NCj4gKyAgLy8vDQo+ICsgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgICAgICAgR3VpZDsN Cj4gK30gRjEzOTRfREVWSUNFX1BBVEg7DQo+ICsNCj4gKy8vLw0KPiArLy8vIFVTQiBEZXZpY2Ug UGF0aCBTdWJUeXBlLg0KPiArLy8vDQo+ICsjZGVmaW5lIE1TR19VU0JfRFAgICAgICAgICAgICAg ICAgMHgwNQ0KPiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiArICBFRklfREVWSUNFX1BBVEhfUFJPVE9D T0wgICAgICBIZWFkZXI7DQo+ICsgIC8vLw0KPiArICAvLy8gVVNCIFBhcmVudCBQb3J0IE51bWJl ci4NCj4gKyAgLy8vDQo+ICsgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgIFBhcmVudFBv cnROdW1iZXI7DQo+ICsgIC8vLw0KPiArICAvLy8gVVNCIEludGVyZmFjZSBOdW1iZXIuDQo+ICsg IC8vLw0KPiArICBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlcmZhY2VOdW1iZXI7 DQo+ICt9IFVTQl9ERVZJQ0VfUEFUSDsNCj4gKw0KPiArLy8vDQo+ICsvLy8gVVNCIENsYXNzIERl dmljZSBQYXRoIFN1YlR5cGUuDQo+ICsvLy8NCj4gKyNkZWZpbmUgTVNHX1VTQl9DTEFTU19EUCAg ICAgICAgICAweDBmDQo+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ICsgIEVGSV9ERVZJQ0VfUEFUSF9Q Uk9UT0NPTCAgICAgIEhlYWRlcjsNCj4gKyAgLy8vDQo+ICsgIC8vLyBWZW5kb3IgSUQgYXNzaWdu ZWQgYnkgVVNCLUlGLiBBIHZhbHVlIG9mIDB4RkZGRiB3aWxsDQo+ICsgIC8vLyBtYXRjaCBhbnkg VmVuZG9yIElELg0KPiArICAvLy8NCj4gKyAgVUlOVDE2ICAgICAgICAgICAgICAgICAgICAgICAg VmVuZG9ySWQ7DQo+ICsgIC8vLw0KPiArICAvLy8gUHJvZHVjdCBJRCBhc3NpZ25lZCBieSBVU0It SUYuIEEgdmFsdWUgb2YgMHhGRkZGIHdpbGwNCj4gKyAgLy8vIG1hdGNoIGFueSBQcm9kdWN0IElE Lg0KPiArICAvLy8NCj4gKyAgVUlOVDE2ICAgICAgICAgICAgICAgICAgICAgICAgUHJvZHVjdElk Ow0KPiArICAvLy8NCj4gKyAgLy8vIFRoZSBjbGFzcyBjb2RlIGFzc2lnbmVkIGJ5IHRoZSBVU0It SUYuIEEgdmFsdWUgb2YgMHhGRg0KPiArICAvLy8gd2lsbCBtYXRjaCBhbnkgY2xhc3MgY29kZS4N Cj4gKyAgLy8vDQo+ICsgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgIERldmljZUNsYXNz Ow0KPiArICAvLy8NCj4gKyAgLy8vIFRoZSBzdWJjbGFzcyBjb2RlIGFzc2lnbmVkIGJ5IHRoZSBV U0ItSUYuIEEgdmFsdWUgb2YNCj4gKyAgLy8vIDB4RkYgd2lsbCBtYXRjaCBhbnkgc3ViY2xhc3Mg Y29kZS4NCj4gKyAgLy8vDQo+ICsgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgIERldmlj ZVN1YkNsYXNzOw0KPiArICAvLy8NCj4gKyAgLy8vIFRoZSBwcm90b2NvbCBjb2RlIGFzc2lnbmVk IGJ5IHRoZSBVU0ItSUYuIEEgdmFsdWUgb2YNCj4gKyAgLy8vIDB4RkYgd2lsbCBtYXRjaCBhbnkg cHJvdG9jb2wgY29kZS4NCj4gKyAgLy8vDQo+ICsgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAg ICAgIERldmljZVByb3RvY29sOw0KPiArfSBVU0JfQ0xBU1NfREVWSUNFX1BBVEg7DQo+ICsNCj4g Ky8vLw0KPiArLy8vIFVTQiBXV0lEIERldmljZSBQYXRoIFN1YlR5cGUuDQo+ICsvLy8NCj4gKyNk ZWZpbmUgTVNHX1VTQl9XV0lEX0RQICAgICAgICAgICAweDEwDQo+ICsNCj4gKy8vLw0KPiArLy8v IFRoaXMgZGV2aWNlIHBhdGggZGVzY3JpYmVzIGEgVVNCIGRldmljZSB1c2luZyBpdHMgc2VyaWFs IG51bWJlci4NCj4gKy8vLw0KPiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiArICBFRklfREVWSUNFX1BB VEhfUFJPVE9DT0wgICAgICBIZWFkZXI7DQo+ICsgIC8vLw0KPiArICAvLy8gVVNCIGludGVyZmFj ZSBudW1iZXIuDQo+ICsgIC8vLw0KPiArICBVSU5UMTYgICAgICAgICAgICAgICAgICAgICAgICBJ bnRlcmZhY2VOdW1iZXI7DQo+ICsgIC8vLw0KPiArICAvLy8gVVNCIHZlbmRvciBpZCBvZiB0aGUg ZGV2aWNlLg0KPiArICAvLy8NCj4gKyAgVUlOVDE2ICAgICAgICAgICAgICAgICAgICAgICAgVmVu ZG9ySWQ7DQo+ICsgIC8vLw0KPiArICAvLy8gVVNCIHByb2R1Y3QgaWQgb2YgdGhlIGRldmljZS4N Cj4gKyAgLy8vDQo+ICsgIFVJTlQxNiAgICAgICAgICAgICAgICAgICAgICAgIFByb2R1Y3RJZDsN Cj4gKyAgLy8vDQo+ICsgIC8vLyBMYXN0IDY0LW9yLWZld2VyIFVURi0xNiBjaGFyYWN0ZXJzIG9m IHRoZSBVU0INCj4gKyAgLy8vIHNlcmlhbCBudW1iZXIuIFRoZSBsZW5ndGggb2YgdGhlIHN0cmlu ZyBpcw0KPiArICAvLy8gZGV0ZXJtaW5lZCBieSB0aGUgTGVuZ3RoIGZpZWxkIGxlc3MgdGhlIG9m ZnNldCBvZiB0aGUNCj4gKyAgLy8vIFNlcmlhbCBOdW1iZXIgZmllbGQgKDEwKQ0KPiArICAvLy8N Cj4gKyAgLy8vIENIQVIxNiAgICAgICAgICAgICAgICAgICAgIFNlcmlhbE51bWJlclsuLi5dOw0K PiArfSBVU0JfV1dJRF9ERVZJQ0VfUEFUSDsNCj4gKw0KPiArLy8vDQo+ICsvLy8gRGV2aWNlIExv Z2ljYWwgVW5pdCBTdWJUeXBlLg0KPiArLy8vDQo+ICsjZGVmaW5lIE1TR19ERVZJQ0VfTE9HSUNB TF9VTklUX0RQICAweDExDQo+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ICsgIEVGSV9ERVZJQ0VfUEFU SF9QUk9UT0NPTCAgICAgIEhlYWRlcjsNCj4gKyAgLy8vDQo+ICsgIC8vLyBMb2dpY2FsIFVuaXQg TnVtYmVyIGZvciB0aGUgaW50ZXJmYWNlLg0KPiArICAvLy8NCj4gKyAgVUlOVDggICAgICAgICAg ICAgICAgICAgICAgICAgTHVuOw0KPiArfSBERVZJQ0VfTE9HSUNBTF9VTklUX0RFVklDRV9QQVRI Ow0KPiArDQo+ICsvLy8NCj4gKy8vLyBTQVRBIERldmljZSBQYXRoIFN1YlR5cGUuDQo+ICsvLy8N Cj4gKyNkZWZpbmUgTVNHX1NBVEFfRFAgICAgICAgICAgICAgICAweDEyDQo+ICt0eXBlZGVmIHN0 cnVjdCB7DQo+ICsgIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAgICAgSGVhZGVyOw0KPiAr ICAvLy8NCj4gKyAgLy8vIFRoZSBIQkEgcG9ydCBudW1iZXIgdGhhdCBmYWNpbGl0YXRlcyB0aGUg Y29ubmVjdGlvbiB0byB0aGUNCj4gKyAgLy8vIGRldmljZSBvciBhIHBvcnQgbXVsdGlwbGllci4g VGhlIHZhbHVlIDB4RkZGRiBpcyByZXNlcnZlZC4NCj4gKyAgLy8vDQo+ICsgIFVJTlQxNiAgICAg ICAgICAgICAgICAgICAgICAgICAgSEJBUG9ydE51bWJlcjsNCj4gKyAgLy8vDQo+ICsgIC8vLyBU aGUgUG9ydCBtdWx0aXBsaWVyIHBvcnQgbnVtYmVyIHRoYXQgZmFjaWxpdGF0ZXMgdGhlIGNvbm5l Y3Rpb24NCj4gKyAgLy8vIHRvIHRoZSBkZXZpY2UuIE11c3QgYmUgc2V0IHRvIDB4RkZGRiBpZiB0 aGUgZGV2aWNlIGlzIGRpcmVjdGx5DQo+ICsgIC8vLyBjb25uZWN0ZWQgdG8gdGhlIEhCQS4NCj4g KyAgLy8vDQo+ICsgIFVJTlQxNiAgICAgICAgICAgICAgICAgICAgICAgICAgUG9ydE11bHRpcGxp ZXJQb3J0TnVtYmVyOw0KPiArICAvLy8NCj4gKyAgLy8vIExvZ2ljYWwgVW5pdCBOdW1iZXIuDQo+ ICsgIC8vLw0KPiArICBVSU5UMTYgICAgICAgICAgICAgICAgICAgICAgICAgIEx1bjsNCj4gK30g U0FUQV9ERVZJQ0VfUEFUSDsNCj4gKw0KPiArLy8vDQo+ICsvLy8gRmxhZyBmb3IgaWYgdGhlIGRl dmljZSBpcyBkaXJlY3RseSBjb25uZWN0ZWQgdG8gdGhlIEhCQS4NCj4gKy8vLw0KPiArI2RlZmlu ZSBTQVRBX0hCQV9ESVJFQ1RfQ09OTkVDVF9GTEFHIDB4ODAwMA0KPiArDQo+ICsvLy8NCj4gKy8v LyBJMk8gRGV2aWNlIFBhdGggU3ViVHlwZS4NCj4gKy8vLw0KPiArI2RlZmluZSBNU0dfSTJPX0RQ ICAgICAgICAgICAgICAgIDB4MDYNCj4gK3R5cGVkZWYgc3RydWN0IHsNCj4gKyAgRUZJX0RFVklD RV9QQVRIX1BST1RPQ09MICAgICAgICBIZWFkZXI7DQo+ICsgIC8vLw0KPiArICAvLy8gVGFyZ2V0 IElEIChUSUQpIGZvciBhIGRldmljZS4NCj4gKyAgLy8vDQo+ICsgIFVJTlQzMiAgICAgICAgICAg ICAgICAgICAgICAgICAgVGlkOw0KPiArfSBJMk9fREVWSUNFX1BBVEg7DQo+ICsNCj4gKy8vLw0K PiArLy8vIE1BQyBBZGRyZXNzIERldmljZSBQYXRoIFN1YlR5cGUuDQo+ICsvLy8NCj4gKyNkZWZp bmUgTVNHX01BQ19BRERSX0RQICAgICAgICAgICAweDBiDQo+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ ICsgIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAgICAgSGVhZGVyOw0KPiArICAvLy8NCj4g KyAgLy8vIFRoZSBNQUMgYWRkcmVzcyBmb3IgYSBuZXR3b3JrIGludGVyZmFjZSBwYWRkZWQgd2l0 aCAwcy4NCj4gKyAgLy8vDQo+ICsgIEVGSV9NQUNfQUREUkVTUyAgICAgICAgICAgICAgICAgTWFj QWRkcmVzczsNCj4gKyAgLy8vDQo+ICsgIC8vLyBOZXR3b3JrIGludGVyZmFjZSB0eXBlKGkuZS4g ODAyLjMsIEZEREkpLg0KPiArICAvLy8NCj4gKyAgVUlOVDggICAgICAgICAgICAgICAgICAgICAg ICAgICBJZlR5cGU7DQo+ICt9IE1BQ19BRERSX0RFVklDRV9QQVRIOw0KPiArDQo+ICsvLy8NCj4g Ky8vLyBJUHY0IERldmljZSBQYXRoIFN1YlR5cGUNCj4gKy8vLw0KPiArI2RlZmluZSBNU0dfSVB2 NF9EUCAgICAgICAgICAgICAgIDB4MGMNCj4gK3R5cGVkZWYgc3RydWN0IHsNCj4gKyAgRUZJX0RF VklDRV9QQVRIX1BST1RPQ09MICAgICAgICBIZWFkZXI7DQo+ICsgIC8vLw0KPiArICAvLy8gVGhl IGxvY2FsIElQdjQgYWRkcmVzcy4NCj4gKyAgLy8vDQo+ICsgIEVGSV9JUHY0X0FERFJFU1MgICAg ICAgICAgICAgICAgTG9jYWxJcEFkZHJlc3M7DQo+ICsgIC8vLw0KPiArICAvLy8gVGhlIHJlbW90 ZSBJUHY0IGFkZHJlc3MuDQo+ICsgIC8vLw0KPiArICBFRklfSVB2NF9BRERSRVNTICAgICAgICAg ICAgICAgIFJlbW90ZUlwQWRkcmVzczsNCj4gKyAgLy8vDQo+ICsgIC8vLyBUaGUgbG9jYWwgcG9y dCBudW1iZXIuDQo+ICsgIC8vLw0KPiArICBVSU5UMTYgICAgICAgICAgICAgICAgICAgICAgICAg IExvY2FsUG9ydDsNCj4gKyAgLy8vDQo+ICsgIC8vLyBUaGUgcmVtb3RlIHBvcnQgbnVtYmVyLg0K PiArICAvLy8NCj4gKyAgVUlOVDE2ICAgICAgICAgICAgICAgICAgICAgICAgICBSZW1vdGVQb3J0 Ow0KPiArICAvLy8NCj4gKyAgLy8vIFRoZSBuZXR3b3JrIHByb3RvY29sKGkuZS4gVURQLCBUQ1Ap Lg0KPiArICAvLy8NCj4gKyAgVUlOVDE2ICAgICAgICAgICAgICAgICAgICAgICAgICBQcm90b2Nv bDsNCj4gKyAgLy8vDQo+ICsgIC8vLyAweDAwIC0gVGhlIFNvdXJjZSBJUCBBZGRyZXNzIHdhcyBh c3NpZ25lZCB0aG91Z2ggREhDUC4NCj4gKyAgLy8vIDB4MDEgLSBUaGUgU291cmNlIElQIEFkZHJl c3MgaXMgc3RhdGljYWxseSBib3VuZC4NCj4gKyAgLy8vDQo+ICsgIEJPT0xFQU4gICAgICAgICAg ICAgICAgICAgICAgICAgU3RhdGljSXBBZGRyZXNzOw0KPiArICAvLy8NCj4gKyAgLy8vIFRoZSBn YXRld2F5IElQIGFkZHJlc3MNCj4gKyAgLy8vDQo+ICsgIEVGSV9JUHY0X0FERFJFU1MgICAgICAg ICAgICAgICAgR2F0ZXdheUlwQWRkcmVzczsNCj4gKyAgLy8vDQo+ICsgIC8vLyBUaGUgc3VibmV0 IG1hc2sNCj4gKyAgLy8vDQo+ICsgIEVGSV9JUHY0X0FERFJFU1MgICAgICAgICAgICAgICAgU3Vi bmV0TWFzazsNCj4gK30gSVB2NF9ERVZJQ0VfUEFUSDsNCj4gKw0KPiArLy8vDQo+ICsvLy8gSVB2 NiBEZXZpY2UgUGF0aCBTdWJUeXBlLg0KPiArLy8vDQo+ICsjZGVmaW5lIE1TR19JUHY2X0RQICAg ICAgICAgICAgICAgMHgwZA0KPiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiArICBFRklfREVWSUNFX1BB VEhfUFJPVE9DT0wgICAgICAgIEhlYWRlcjsNCj4gKyAgLy8vDQo+ICsgIC8vLyBUaGUgbG9jYWwg SVB2NiBhZGRyZXNzLg0KPiArICAvLy8NCj4gKyAgRUZJX0lQdjZfQUREUkVTUyAgICAgICAgICAg ICAgICBMb2NhbElwQWRkcmVzczsNCj4gKyAgLy8vDQo+ICsgIC8vLyBUaGUgcmVtb3RlIElQdjYg YWRkcmVzcy4NCj4gKyAgLy8vDQo+ICsgIEVGSV9JUHY2X0FERFJFU1MgICAgICAgICAgICAgICAg UmVtb3RlSXBBZGRyZXNzOw0KPiArICAvLy8NCj4gKyAgLy8vIFRoZSBsb2NhbCBwb3J0IG51bWJl ci4NCj4gKyAgLy8vDQo+ICsgIFVJTlQxNiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jYWxQ b3J0Ow0KPiArICAvLy8NCj4gKyAgLy8vIFRoZSByZW1vdGUgcG9ydCBudW1iZXIuDQo+ICsgIC8v Lw0KPiArICBVSU5UMTYgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbW90ZVBvcnQ7DQo+ICsg IC8vLw0KPiArICAvLy8gVGhlIG5ldHdvcmsgcHJvdG9jb2woaS5lLiBVRFAsIFRDUCkuDQo+ICsg IC8vLw0KPiArICBVSU5UMTYgICAgICAgICAgICAgICAgICAgICAgICAgIFByb3RvY29sOw0KPiAr ICAvLy8NCj4gKyAgLy8vIDB4MDAgLSBUaGUgTG9jYWwgSVAgQWRkcmVzcyB3YXMgbWFudWFsbHkg Y29uZmlndXJlZC4NCj4gKyAgLy8vIDB4MDEgLSBUaGUgTG9jYWwgSVAgQWRkcmVzcyBpcyBhc3Np Z25lZCB0aHJvdWdoIElQdjYNCj4gKyAgLy8vIHN0YXRlbGVzcyBhdXRvLWNvbmZpZ3VyYXRpb24u DQo+ICsgIC8vLyAweDAyIC0gVGhlIExvY2FsIElQIEFkZHJlc3MgaXMgYXNzaWduZWQgdGhyb3Vn aCBJUHY2DQo+ICsgIC8vLyBzdGF0ZWZ1bCBjb25maWd1cmF0aW9uLg0KPiArICAvLy8NCj4gKyAg VUlOVDggICAgICAgICAgICAgICAgICAgICAgICAgICBJcEFkZHJlc3NPcmlnaW47DQo+ICsgIC8v Lw0KPiArICAvLy8gVGhlIHByZWZpeCBsZW5ndGgNCj4gKyAgLy8vDQo+ICsgIFVJTlQ4ICAgICAg ICAgICAgICAgICAgICAgICAgICAgUHJlZml4TGVuZ3RoOw0KPiArICAvLy8NCj4gKyAgLy8vIFRo ZSBnYXRld2F5IElQIGFkZHJlc3MNCj4gKyAgLy8vDQo+ICsgIEVGSV9JUHY2X0FERFJFU1MgICAg ICAgICAgICAgICAgR2F0ZXdheUlwQWRkcmVzczsNCj4gK30gSVB2Nl9ERVZJQ0VfUEFUSDsNCj4g Kw0KPiArLy8vDQo+ICsvLy8gSW5maW5pQmFuZCBEZXZpY2UgUGF0aCBTdWJUeXBlLg0KPiArLy8v DQo+ICsjZGVmaW5lIE1TR19JTkZJTklCQU5EX0RQICAgICAgICAgMHgwOQ0KPiArdHlwZWRlZiBz dHJ1Y3Qgew0KPiArICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICAgICAgIEhlYWRlcjsNCj4g KyAgLy8vDQo+ICsgIC8vLyBGbGFncyB0byBoZWxwIGlkZW50aWZ5L21hbmFnZSBJbmZpbmlCYW5k IGRldmljZSBwYXRoIGVsZW1lbnRzOg0KPiArICAvLy8gQml0IDAgLSBJT0MvU2VydmljZSAoMGIg PSBJT0MsIDFiID0gU2VydmljZSkuDQo+ICsgIC8vLyBCaXQgMSAtIEV4dGVuZCBCb290IEVudmly b25tZW50Lg0KPiArICAvLy8gQml0IDIgLSBDb25zb2xlIFByb3RvY29sLg0KPiArICAvLy8gQml0 IDMgLSBTdG9yYWdlIFByb3RvY29sLg0KPiArICAvLy8gQml0IDQgLSBOZXR3b3JrIFByb3RvY29s Lg0KPiArICAvLy8gQWxsIG90aGVyIGJpdHMgYXJlIHJlc2VydmVkLg0KPiArICAvLy8NCj4gKyAg VUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZUZsYWdzOw0KPiArICAvLy8N Cj4gKyAgLy8vIDEyOC1iaXQgR2xvYmFsIElkZW50aWZpZXIgZm9yIHJlbW90ZSBmYWJyaWMgcG9y dC4NCj4gKyAgLy8vDQo+ICsgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9ydEdp ZFsxNl07DQo+ICsgIC8vLw0KPiArICAvLy8gNjQtYml0IHVuaXF1ZSBpZGVudGlmaWVyIHRvIHJl bW90ZSBJT0Mgb3Igc2VydmVyIHByb2Nlc3MuDQo+ICsgIC8vLyBJbnRlcnByZXRhdGlvbiBvZiBm aWVsZCBzcGVjaWZpZWQgYnkgUmVzb3VyY2UgRmxhZ3MgKGJpdCAwKS4NCj4gKyAgLy8vDQo+ICsg IFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgICAgICAgU2VydmljZUlkOw0KPiArICAvLy8NCj4g KyAgLy8vIDY0LWJpdCBwZXJzaXN0ZW50IElEIG9mIHJlbW90ZSBJT0MgcG9ydC4NCj4gKyAgLy8v DQo+ICsgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgICAgICAgVGFyZ2V0UG9ydElkOw0KPiAr ICAvLy8NCj4gKyAgLy8vIDY0LWJpdCBwZXJzaXN0ZW50IElEIG9mIHJlbW90ZSBkZXZpY2UuDQo+ ICsgIC8vLw0KPiArICBVSU5UNjQgICAgICAgICAgICAgICAgICAgICAgICAgIERldmljZUlkOw0K PiArfSBJTkZJTklCQU5EX0RFVklDRV9QQVRIOw0KPiArDQo+ICsjZGVmaW5lIElORklOSUJBTkRf UkVTT1VSQ0VfRkxBR19JT0NfU0VSVklDRSAgICAgICAgICAgICAgICAweDAxDQo+ICsjZGVmaW5l IElORklOSUJBTkRfUkVTT1VSQ0VfRkxBR19FWFRFTkRFRF9CT09UX0VOVklST05NRU5UICAweDAy DQo+ICsjZGVmaW5lIElORklOSUJBTkRfUkVTT1VSQ0VfRkxBR19DT05TT0xFX1BST1RPQ09MICAg ICAgICAgICAweDA0DQo+ICsjZGVmaW5lIElORklOSUJBTkRfUkVTT1VSQ0VfRkxBR19TVE9SQUdF X1BST1RPQ09MICAgICAgICAgICAweDA4DQo+ICsjZGVmaW5lIElORklOSUJBTkRfUkVTT1VSQ0Vf RkxBR19ORVRXT1JLX1BST1RPQ09MICAgICAgICAgICAweDEwDQo+ICsNCj4gKy8vLw0KPiArLy8v IFVBUlQgRGV2aWNlIFBhdGggU3ViVHlwZS4NCj4gKy8vLw0KPiArI2RlZmluZSBNU0dfVUFSVF9E UCAgICAgICAgICAgICAgIDB4MGUNCj4gK3R5cGVkZWYgc3RydWN0IHsNCj4gKyAgRUZJX0RFVklD RV9QQVRIX1BST1RPQ09MICAgICAgICBIZWFkZXI7DQo+ICsgIC8vLw0KPiArICAvLy8gUmVzZXJ2 ZWQuDQo+ICsgIC8vLw0KPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc2Vy dmVkOw0KPiArICAvLy8NCj4gKyAgLy8vIFRoZSBiYXVkIHJhdGUgc2V0dGluZyBmb3IgdGhlIFVB UlQgc3R5bGUgZGV2aWNlLiBBIHZhbHVlIG9mIDANCj4gKyAgLy8vIG1lYW5zIHRoYXQgdGhlIGRl dmljZSdzIGRlZmF1bHQgYmF1ZCByYXRlIHdpbGwgYmUgdXNlZC4NCj4gKyAgLy8vDQo+ICsgIFVJ TlQ2NCAgICAgICAgICAgICAgICAgICAgICAgICAgQmF1ZFJhdGU7DQo+ICsgIC8vLw0KPiArICAv Ly8gVGhlIG51bWJlciBvZiBkYXRhIGJpdHMgZm9yIHRoZSBVQVJUIHN0eWxlIGRldmljZS4gQSB2 YWx1ZQ0KPiArICAvLy8gb2YgMCBtZWFucyB0aGF0IHRoZSBkZXZpY2UncyBkZWZhdWx0IG51bWJl ciBvZiBkYXRhIGJpdHMgd2lsbCBiZSB1c2VkLg0KPiArICAvLy8NCj4gKyAgVUlOVDggICAgICAg ICAgICAgICAgICAgICAgICAgICBEYXRhQml0czsNCj4gKyAgLy8vDQo+ICsgIC8vLyBUaGUgcGFy aXR5IHNldHRpbmcgZm9yIHRoZSBVQVJUIHN0eWxlIGRldmljZS4NCj4gKyAgLy8vIFBhcml0eSAw eDAwIC0gRGVmYXVsdCBQYXJpdHkuDQo+ICsgIC8vLyBQYXJpdHkgMHgwMSAtIE5vIFBhcml0eS4N Cj4gKyAgLy8vIFBhcml0eSAweDAyIC0gRXZlbiBQYXJpdHkuDQo+ICsgIC8vLyBQYXJpdHkgMHgw MyAtIE9kZCBQYXJpdHkuDQo+ICsgIC8vLyBQYXJpdHkgMHgwNCAtIE1hcmsgUGFyaXR5Lg0KPiAr ICAvLy8gUGFyaXR5IDB4MDUgLSBTcGFjZSBQYXJpdHkuDQo+ICsgIC8vLw0KPiArICBVSU5UOCAg ICAgICAgICAgICAgICAgICAgICAgICAgIFBhcml0eTsNCj4gKyAgLy8vDQo+ICsgIC8vLyBUaGUg bnVtYmVyIG9mIHN0b3AgYml0cyBmb3IgdGhlIFVBUlQgc3R5bGUgZGV2aWNlLg0KPiArICAvLy8g U3RvcCBCaXRzIDB4MDAgLSBEZWZhdWx0IFN0b3AgQml0cy4NCj4gKyAgLy8vIFN0b3AgQml0cyAw eDAxIC0gMSBTdG9wIEJpdC4NCj4gKyAgLy8vIFN0b3AgQml0cyAweDAyIC0gMS41IFN0b3AgQml0 cy4NCj4gKyAgLy8vIFN0b3AgQml0cyAweDAzIC0gMiBTdG9wIEJpdHMuDQo+ICsgIC8vLw0KPiAr ICBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0b3BCaXRzOw0KPiArfSBVQVJUX0RF VklDRV9QQVRIOw0KPiArDQo+ICsvLw0KPiArLy8gVXNlIFZFTkRPUl9ERVZJQ0VfUEFUSCBzdHJ1 Y3QNCj4gKy8vDQo+ICsjZGVmaW5lIE1TR19WRU5ET1JfRFAgICAgICAgICAgICAgMHgwYQ0KPiAr dHlwZWRlZiBWRU5ET1JfREVWSUNFX1BBVEggICAgICAgIFZFTkRPUl9ERUZJTkVEX0RFVklDRV9Q QVRIOw0KPiArDQo+ICsjZGVmaW5lIERFVklDRV9QQVRIX01FU1NBR0lOR19QQ19BTlNJICAgICBF RklfUENfQU5TSV9HVUlEDQo+ICsjZGVmaW5lIERFVklDRV9QQVRIX01FU1NBR0lOR19WVF8xMDAg ICAgICBFRklfVlRfMTAwX0dVSUQNCj4gKyNkZWZpbmUgREVWSUNFX1BBVEhfTUVTU0FHSU5HX1ZU XzEwMF9QTFVTIEVGSV9WVF8xMDBfUExVU19HVUlEDQo+ICsjZGVmaW5lIERFVklDRV9QQVRIX01F U1NBR0lOR19WVF9VVEY4ICAgICBFRklfVlRfVVRGOF9HVUlEDQo+ICsNCj4gKy8vLw0KPiArLy8v IEEgbmV3IGRldmljZSBwYXRoIG5vZGUgaXMgZGVmaW5lZCB0byBkZWNsYXJlIGZsb3cgY29udHJv bCBjaGFyYWN0ZXJpc3RpY3MuDQo+ICsvLy8gVUFSVCBGbG93IENvbnRyb2wgTWVzc2FnaW5nIERl dmljZSBQYXRoDQo+ICsvLy8NCj4gK3R5cGVkZWYgc3RydWN0IHsNCj4gKyAgRUZJX0RFVklDRV9Q QVRIX1BST1RPQ09MICAgICAgICBIZWFkZXI7DQo+ICsgIC8vLw0KPiArICAvLy8gREVWSUNFX1BB VEhfTUVTU0FHSU5HX1VBUlRfRkxPV19DT05UUk9MIEdVSUQuDQo+ICsgIC8vLw0KPiArICBFRklf R1VJRCAgICAgICAgICAgICAgICAgICAgICAgIEd1aWQ7DQo+ICsgIC8vLw0KPiArICAvLy8gQml0 bWFwIG9mIHN1cHBvcnRlZCBmbG93IGNvbnRyb2wgdHlwZXMuDQo+ICsgIC8vLyBCaXQgMCBzZXQg aW5kaWNhdGVzIGhhcmR3YXJlIGZsb3cgY29udHJvbC4NCj4gKyAgLy8vIEJpdCAxIHNldCBpbmRp Y2F0ZXMgWG9uL1hvZmYgZmxvdyBjb250cm9sLg0KPiArICAvLy8gQWxsIG90aGVyIGJpdHMgYXJl IHJlc2VydmVkIGFuZCBhcmUgY2xlYXIuDQo+ICsgIC8vLw0KPiArICBVSU5UMzIgICAgICAgICAg ICAgICAgICAgICAgICAgIEZsb3dDb250cm9sTWFwOw0KPiArfSBVQVJUX0ZMT1dfQ09OVFJPTF9E RVZJQ0VfUEFUSDsNCj4gKw0KPiArI2RlZmluZSBVQVJUX0ZMT1dfQ09OVFJPTF9IQVJEV0FSRSAg ICAgICAgIDB4MDAwMDAwMDENCj4gKyNkZWZpbmUgVUFSVF9GTE9XX0NPTlRST0xfWE9OX1hPRkYg ICAgICAgICAweDAwMDAwMDEwDQo+ICsNCj4gKyNkZWZpbmUgREVWSUNFX1BBVEhfTUVTU0FHSU5H X1NBUyAgICAgICAgICBFRklfU0FTX0RFVklDRV9QQVRIX0dVSUQNCj4gKy8vLw0KPiArLy8vIFNl cmlhbCBBdHRhY2hlZCBTQ1NJIChTQVMpIERldmljZSBQYXRoLg0KPiArLy8vDQo+ICt0eXBlZGVm IHN0cnVjdCB7DQo+ICsgIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAgICAgSGVhZGVyOw0K PiArICAvLy8NCj4gKyAgLy8vIERFVklDRV9QQVRIX01FU1NBR0lOR19TQVMgR1VJRC4NCj4gKyAg Ly8vDQo+ICsgIEVGSV9HVUlEICAgICAgICAgICAgICAgICAgICAgICAgR3VpZDsNCj4gKyAgLy8v DQo+ICsgIC8vLyBSZXNlcnZlZCBmb3IgZnV0dXJlIHVzZS4NCj4gKyAgLy8vDQo+ICsgIFVJTlQz MiAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzZXJ2ZWQ7DQo+ICsgIC8vLw0KPiArICAvLy8g U0FTIEFkZHJlc3MgZm9yIFNlcmlhbCBBdHRhY2hlZCBTQ1NJIFRhcmdldC4NCj4gKyAgLy8vDQo+ ICsgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgICAgICAgU2FzQWRkcmVzczsNCj4gKyAgLy8v DQo+ICsgIC8vLyBTQVMgTG9naWNhbCBVbml0IE51bWJlci4NCj4gKyAgLy8vDQo+ICsgIFVJTlQ2 NCAgICAgICAgICAgICAgICAgICAgICAgICAgTHVuOw0KPiArICAvLy8NCj4gKyAgLy8vIE1vcmUg SW5mb3JtYXRpb24gYWJvdXQgdGhlIGRldmljZSBhbmQgaXRzIGludGVyY29ubmVjdC4NCj4gKyAg Ly8vDQo+ICsgIFVJTlQxNiAgICAgICAgICAgICAgICAgICAgICAgICAgRGV2aWNlVG9wb2xvZ3k7 DQo+ICsgIC8vLw0KPiArICAvLy8gUmVsYXRpdmUgVGFyZ2V0IFBvcnQgKFJUUCkuDQo+ICsgIC8v Lw0KPiArICBVSU5UMTYgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGF0aXZlVGFyZ2V0UG9y dDsNCj4gK30gU0FTX0RFVklDRV9QQVRIOw0KPiArDQo+ICsvLy8NCj4gKy8vLyBTZXJpYWwgQXR0 YWNoZWQgU0NTSSAoU0FTKSBFeCBEZXZpY2UgUGF0aCBTdWJUeXBlDQo+ICsvLy8NCj4gKyNkZWZp bmUgTVNHX1NBU0VYX0RQICAgICAgICAgICAgICAweDE2DQo+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ ICsgIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAgICAgSGVhZGVyOw0KPiArICAvLy8NCj4g KyAgLy8vIDgtYnl0ZSBhcnJheSBvZiB0aGUgU0FTIEFkZHJlc3MgZm9yIFNlcmlhbCBBdHRhY2hl ZCBTQ1NJIFRhcmdldCBQb3J0Lg0KPiArICAvLy8NCj4gKyAgVUlOVDggICAgICAgICAgICAgICAg ICAgICAgICAgICBTYXNBZGRyZXNzWzhdOw0KPiArICAvLy8NCj4gKyAgLy8vIDgtYnl0ZSBhcnJh eSBvZiB0aGUgU0FTIExvZ2ljYWwgVW5pdCBOdW1iZXIuDQo+ICsgIC8vLw0KPiArICBVSU5UOCAg ICAgICAgICAgICAgICAgICAgICAgICAgIEx1bls4XTsNCj4gKyAgLy8vDQo+ICsgIC8vLyBNb3Jl IEluZm9ybWF0aW9uIGFib3V0IHRoZSBkZXZpY2UgYW5kIGl0cyBpbnRlcmNvbm5lY3QuDQo+ICsg IC8vLw0KPiArICBVSU5UMTYgICAgICAgICAgICAgICAgICAgICAgICAgIERldmljZVRvcG9sb2d5 Ow0KPiArICAvLy8NCj4gKyAgLy8vIFJlbGF0aXZlIFRhcmdldCBQb3J0IChSVFApLg0KPiArICAv Ly8NCj4gKyAgVUlOVDE2ICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxhdGl2ZVRhcmdldFBv cnQ7DQo+ICt9IFNBU0VYX0RFVklDRV9QQVRIOw0KPiArDQo+ICsvLy8NCj4gKy8vLyBOdm1FeHBy ZXNzIE5hbWVzcGFjZSBEZXZpY2UgUGF0aCBTdWJUeXBlLg0KPiArLy8vDQo+ICsjZGVmaW5lIE1T R19OVk1FX05BTUVTUEFDRV9EUCAgICAgMHgxNw0KPiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiArICBF RklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICAgICAgIEhlYWRlcjsNCj4gKyAgVUlOVDMyICAgICAg ICAgICAgICAgICAgICAgICAgICBOYW1lc3BhY2VJZDsNCj4gKyAgVUlOVDY0ICAgICAgICAgICAg ICAgICAgICAgICAgICBOYW1lc3BhY2VVdWlkOw0KPiArfSBOVk1FX05BTUVTUEFDRV9ERVZJQ0Vf UEFUSDsNCj4gKw0KPiArLy8vDQo+ICsvLy8gRE5TIERldmljZSBQYXRoIFN1YlR5cGUNCj4gKy8v Lw0KPiArI2RlZmluZSBNU0dfRE5TX0RQICAgICAgICAgICAgICAgIDB4MUYNCj4gK3R5cGVkZWYg c3RydWN0IHsNCj4gKyAgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICAgICAgICBIZWFkZXI7DQo+ ICsgIC8vLw0KPiArICAvLy8gSW5kaWNhdGVzIHRoZSBETlMgc2VydmVyIGFkZHJlc3MgaXMgSVB2 NCBvciBJUHY2IGFkZHJlc3MuDQo+ICsgIC8vLw0KPiArICBVSU5UOCAgICAgICAgICAgICAgICAg ICAgICAgICAgIElzSVB2NjsNCj4gKyAgLy8vDQo+ICsgIC8vLyBJbnN0YW5jZSBvZiB0aGUgRE5T IHNlcnZlciBhZGRyZXNzLg0KPiArICAvLy8NCj4gKyAgRUZJX0lQX0FERFJFU1MgICAgICAgICAg ICAgICAgICBEbnNTZXJ2ZXJJcFsxMDI0XTsNCj4gK30gRE5TX0RFVklDRV9QQVRIOw0KPiArDQo+ ICsvLy8NCj4gKy8vLyBVbmlmb3JtIFJlc291cmNlIElkZW50aWZpZXJzIChVUkkpIERldmljZSBQ YXRoIFN1YlR5cGUNCj4gKy8vLw0KPiArI2RlZmluZSBNU0dfVVJJX0RQICAgICAgICAgICAgICAg IDB4MTgNCj4gK3R5cGVkZWYgc3RydWN0IHsNCj4gKyAgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09M ICAgICAgICBIZWFkZXI7DQo+ICsgIC8vLw0KPiArICAvLy8gSW5zdGFuY2Ugb2YgdGhlIFVSSSBw dXJzdWFudCB0byBSRkMgMzk4Ni4NCj4gKyAgLy8vDQo+ICsgIENIQVI4ICAgICAgICAgICAgICAg ICAgICAgICAgICAgVXJpWzEwMjRdOw0KPiArfSBVUklfREVWSUNFX1BBVEg7DQo+ICsNCj4gKy8v Lw0KPiArLy8vIFVuaXZlcnNhbCBGbGFzaCBTdG9yYWdlIChVRlMpIERldmljZSBQYXRoIFN1YlR5 cGUuDQo+ICsvLy8NCj4gKyNkZWZpbmUgTVNHX1VGU19EUCAgICAgICAgICAgICAgICAweDE5DQo+ ICt0eXBlZGVmIHN0cnVjdCB7DQo+ICsgIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAgICAg SGVhZGVyOw0KPiArICAvLy8NCj4gKyAgLy8vIFRhcmdldCBJRCBvbiB0aGUgVUZTIGJ1cyAoUFVO KS4NCj4gKyAgLy8vDQo+ICsgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVuOw0K PiArICAvLy8NCj4gKyAgLy8vIExvZ2ljYWwgVW5pdCBOdW1iZXIgKExVTikuDQo+ICsgIC8vLw0K PiArICBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgIEx1bjsNCj4gK30gVUZTX0RFVklD RV9QQVRIOw0KPiArDQo+ICsvLy8NCj4gKy8vLyBTRCAoU2VjdXJlIERpZ2l0YWwpIERldmljZSBQ YXRoIFN1YlR5cGUuDQo+ICsvLy8NCj4gKyNkZWZpbmUgTVNHX1NEX0RQICAgICAgICAgICAgICAg ICAweDFBDQo+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ICsgIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NP TCAgICAgICAgSGVhZGVyOw0KPiArICBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgIFNs b3ROdW1iZXI7DQo+ICt9IFNEX0RFVklDRV9QQVRIOw0KPiArDQo+ICsvLy8NCj4gKy8vLyBFTU1D IChFbWJlZGRlZCBNTUMpIERldmljZSBQYXRoIFN1YlR5cGUuDQo+ICsvLy8NCj4gKyNkZWZpbmUg TVNHX0VNTUNfRFAgICAgICAgICAgICAgICAgIDB4MUQNCj4gK3R5cGVkZWYgc3RydWN0IHsNCj4g KyAgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICAgICAgICBIZWFkZXI7DQo+ICsgIFVJTlQ4ICAg ICAgICAgICAgICAgICAgICAgICAgICAgU2xvdE51bWJlcjsNCj4gK30gRU1NQ19ERVZJQ0VfUEFU SDsNCj4gKw0KPiArLy8vDQo+ICsvLy8gaVNDU0kgRGV2aWNlIFBhdGggU3ViVHlwZQ0KPiArLy8v DQo+ICsjZGVmaW5lIE1TR19JU0NTSV9EUCAgICAgICAgICAgICAgMHgxMw0KPiArdHlwZWRlZiBz dHJ1Y3Qgew0KPiArICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICAgICAgIEhlYWRlcjsNCj4g KyAgLy8vDQo+ICsgIC8vLyBOZXR3b3JrIFByb3RvY29sICgwID0gVENQLCAxKyA9IHJlc2VydmVk KS4NCj4gKyAgLy8vDQo+ICsgIFVJTlQxNiAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0d29y a1Byb3RvY29sOw0KPiArICAvLy8NCj4gKyAgLy8vIGlTQ1NJIExvZ2luIE9wdGlvbnMuDQo+ICsg IC8vLw0KPiArICBVSU5UMTYgICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2luT3B0aW9uOw0K PiArICAvLy8NCj4gKyAgLy8vIGlTQ1NJIExvZ2ljYWwgVW5pdCBOdW1iZXIuDQo+ICsgIC8vLw0K PiArICBVSU5UNjQgICAgICAgICAgICAgICAgICAgICAgICAgIEx1bjsNCj4gKyAgLy8vDQo+ICsg IC8vLyBpU0NTSSBUYXJnZXQgUG9ydGFsIGdyb3VwIHRhZyB0aGUgaW5pdGlhdG9yIGludGVuZHMN Cj4gKyAgLy8vIHRvIGVzdGFibGlzaCBhIHNlc3Npb24gd2l0aC4NCj4gKyAgLy8vDQo+ICsgIFVJ TlQxNiAgICAgICAgICAgICAgICAgICAgICAgICAgVGFyZ2V0UG9ydGFsR3JvdXBUYWc7DQo+ICsg IC8vLw0KPiArICAvLy8gaVNDU0kgTm9kZVRhcmdldCBOYW1lLiBUaGUgbGVuZ3RoIG9mIHRoZSBu YW1lDQo+ICsgIC8vLyBpcyBkZXRlcm1pbmVkIGJ5IHN1YnRyYWN0aW5nIHRoZSBvZmZzZXQgb2Yg dGhpcyBmaWVsZCBmcm9tIExlbmd0aC4NCj4gKyAgLy8vDQo+ICsgIC8vLyBDSEFSOCAgICAgICAg ICAgICAgICAgICAgICAgIGlTQ1NJIFRhcmdldCBOYW1lLg0KPiArfSBJU0NTSV9ERVZJQ0VfUEFU SDsNCj4gKw0KPiArI2RlZmluZSBJU0NTSV9MT0dJTl9PUFRJT05fTk9fSEVBREVSX0RJR0VTVCAg ICAgICAgICAgICAweDAwMDANCj4gKyNkZWZpbmUgSVNDU0lfTE9HSU5fT1BUSU9OX0hFQURFUl9E SUdFU1RfVVNJTkdfQ1JDMzJDICAgMHgwMDAyDQo+ICsjZGVmaW5lIElTQ1NJX0xPR0lOX09QVElP Tl9OT19EQVRBX0RJR0VTVCAgICAgICAgICAgICAgIDB4MDAwMA0KPiArI2RlZmluZSBJU0NTSV9M T0dJTl9PUFRJT05fREFUQV9ESUdFU1RfVVNJTkdfQ1JDMzJDICAgICAweDAwMDgNCj4gKyNkZWZp bmUgSVNDU0lfTE9HSU5fT1BUSU9OX0FVVEhNRVRIT0RfQ0hBUCAgICAgICAgICAgICAgMHgwMDAw DQo+ICsjZGVmaW5lIElTQ1NJX0xPR0lOX09QVElPTl9BVVRITUVUSE9EX05PTiAgICAgICAgICAg ICAgIDB4MTAwMA0KPiArI2RlZmluZSBJU0NTSV9MT0dJTl9PUFRJT05fQ0hBUF9CSSAgICAgICAg ICAgICAgICAgICAgICAweDAwMDANCj4gKyNkZWZpbmUgSVNDU0lfTE9HSU5fT1BUSU9OX0NIQVBf VU5JICAgICAgICAgICAgICAgICAgICAgMHgyMDAwDQo+ICsNCj4gKy8vLw0KPiArLy8vIFZMQU4g RGV2aWNlIFBhdGggU3ViVHlwZS4NCj4gKy8vLw0KPiArI2RlZmluZSBNU0dfVkxBTl9EUCAgICAg ICAgICAgICAgIDB4MTQNCj4gK3R5cGVkZWYgc3RydWN0IHsNCj4gKyAgRUZJX0RFVklDRV9QQVRI X1BST1RPQ09MICAgICAgICBIZWFkZXI7DQo+ICsgIC8vLw0KPiArICAvLy8gVkxBTiBpZGVudGlm aWVyICgwLTQwOTQpLg0KPiArICAvLy8NCj4gKyAgVUlOVDE2ICAgICAgICAgICAgICAgICAgICAg ICAgICBWbGFuSWQ7DQo+ICt9IFZMQU5fREVWSUNFX1BBVEg7DQo+ICsNCj4gKy8vLw0KPiArLy8v IEJsdWV0b290aCBEZXZpY2UgUGF0aCBTdWJUeXBlLg0KPiArLy8vDQo+ICsjZGVmaW5lIE1TR19C TFVFVE9PVEhfRFAgICAgIDB4MWINCj4gK3R5cGVkZWYgc3RydWN0IHsNCj4gKyAgRUZJX0RFVklD RV9QQVRIX1BST1RPQ09MICAgICAgICBIZWFkZXI7DQo+ICsgIC8vLw0KPiArICAvLy8gNDhiaXQg Qmx1ZXRvb3RoIGRldmljZSBhZGRyZXNzLg0KPiArICAvLy8NCj4gKyAgQkxVRVRPT1RIX0FERFJF U1MgICAgICAgICAgICAgICBCRF9BRERSOw0KPiArfSBCTFVFVE9PVEhfREVWSUNFX1BBVEg7DQo+ ICsNCj4gKy8vLw0KPiArLy8vIFdpLUZpIERldmljZSBQYXRoIFN1YlR5cGUuDQo+ICsvLy8NCj4g KyNkZWZpbmUgTVNHX1dJRklfRFAgICAgICAgICAgICAgICAweDFDDQo+ICt0eXBlZGVmIHN0cnVj dCB7DQo+ICsgIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAgICAgSGVhZGVyOw0KPiArICAv Ly8NCj4gKyAgLy8vIFNlcnZpY2Ugc2V0IGlkZW50aWZpZXIuIEEgMzItYnl0ZSBvY3RldHMgc3Ry aW5nLg0KPiArICAvLy8NCj4gKyAgVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAgICBTU0lk WzMyXTsNCj4gK30gV0lGSV9ERVZJQ0VfUEFUSDsNCj4gKw0KPiArLy8vDQo+ICsvLy8gQmx1ZXRv b3RoIExFIERldmljZSBQYXRoIFN1YlR5cGUuDQo+ICsvLy8NCj4gKyNkZWZpbmUgTVNHX0JMVUVU T09USF9MRV9EUCAgICAgICAweDFFDQo+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ICsgIEVGSV9ERVZJ Q0VfUEFUSF9QUk9UT0NPTCAgICAgICAgSGVhZGVyOw0KPiArICBCTFVFVE9PVEhfTEVfQUREUkVT UyAgICAgICAgICAgIEFkZHJlc3M7DQo+ICt9IEJMVUVUT09USF9MRV9ERVZJQ0VfUEFUSDsNCj4g Kw0KPiArLy8NCj4gKy8vIE1lZGlhIERldmljZSBQYXRoDQo+ICsvLw0KPiArI2RlZmluZSBNRURJ QV9ERVZJQ0VfUEFUSCAgICAgICAgIDB4MDQNCj4gKw0KPiArLy8vDQo+ICsvLy8gSGFyZCBEcml2 ZSBNZWRpYSBEZXZpY2UgUGF0aCBTdWJUeXBlLg0KPiArLy8vDQo+ICsjZGVmaW5lIE1FRElBX0hB UkREUklWRV9EUCAgICAgICAgMHgwMQ0KPiArDQo+ICsvLy8NCj4gKy8vLyBUaGUgSGFyZCBEcml2 ZSBNZWRpYSBEZXZpY2UgUGF0aCBpcyB1c2VkIHRvIHJlcHJlc2VudCBhIHBhcnRpdGlvbiBvbiBh IGhhcmQgZHJpdmUuDQo+ICsvLy8NCj4gK3R5cGVkZWYgc3RydWN0IHsNCj4gKyAgRUZJX0RFVklD RV9QQVRIX1BST1RPQ09MICAgICAgICBIZWFkZXI7DQo+ICsgIC8vLw0KPiArICAvLy8gRGVzY3Jp YmVzIHRoZSBlbnRyeSBpbiBhIHBhcnRpdGlvbiB0YWJsZSwgc3RhcnRpbmcgd2l0aCBlbnRyeSAx Lg0KPiArICAvLy8gUGFydGl0aW9uIG51bWJlciB6ZXJvIHJlcHJlc2VudHMgdGhlIGVudGlyZSBk ZXZpY2UuIFZhbGlkDQo+ICsgIC8vLyBwYXJ0aXRpb24gbnVtYmVycyBmb3IgYSBNQlIgcGFydGl0 aW9uIGFyZSBbMSwgNF0uIFZhbGlkDQo+ICsgIC8vLyBwYXJ0aXRpb24gbnVtYmVycyBmb3IgYSBH UFQgcGFydGl0aW9uIGFyZSBbMSwgTnVtYmVyT2ZQYXJ0aXRpb25FbnRyaWVzXS4NCj4gKyAgLy8v DQo+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgUGFydGl0aW9uTnVtYmVyOw0K PiArICAvLy8NCj4gKyAgLy8vIFN0YXJ0aW5nIExCQSBvZiB0aGUgcGFydGl0aW9uIG9uIHRoZSBo YXJkIGRyaXZlLg0KPiArICAvLy8NCj4gKyAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICAgICAg ICBQYXJ0aXRpb25TdGFydDsNCj4gKyAgLy8vDQo+ICsgIC8vLyBTaXplIG9mIHRoZSBwYXJ0aXRp b24gaW4gdW5pdHMgb2YgTG9naWNhbCBCbG9ja3MuDQo+ICsgIC8vLw0KPiArICBVSU5UNjQgICAg ICAgICAgICAgICAgICAgICAgICAgIFBhcnRpdGlvblNpemU7DQo+ICsgIC8vLw0KPiArICAvLy8g U2lnbmF0dXJlIHVuaXF1ZSB0byB0aGlzIHBhcnRpdGlvbjoNCj4gKyAgLy8vIElmIFNpZ25hdHVy ZVR5cGUgaXMgMCwgdGhpcyBmaWVsZCBoYXMgdG8gYmUgaW5pdGlhbGl6ZWQgd2l0aCAxNiB6ZXJv cy4NCj4gKyAgLy8vIElmIFNpZ25hdHVyZVR5cGUgaXMgMSwgdGhlIE1CUiBzaWduYXR1cmUgaXMg c3RvcmVkIGluIHRoZSBmaXJzdCA0IGJ5dGVzIG9mIHRoaXMgZmllbGQuDQo+ICsgIC8vLyBUaGUg b3RoZXIgMTIgYnl0ZXMgYXJlIGluaXRpYWxpemVkIHdpdGggemVyb3MuDQo+ICsgIC8vLyBJZiBT aWduYXR1cmVUeXBlIGlzIDIsIHRoaXMgZmllbGQgY29udGFpbnMgYSAxNiBieXRlIHNpZ25hdHVy ZS4NCj4gKyAgLy8vDQo+ICsgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgU2lnbmF0 dXJlWzE2XTsNCj4gKyAgLy8vDQo+ICsgIC8vLyBQYXJ0aXRpb24gRm9ybWF0OiAoVW51c2VkIHZh bHVlcyByZXNlcnZlZCkuDQo+ICsgIC8vLyAweDAxIC0gUEMtQVQgY29tcGF0aWJsZSBsZWdhY3kg TUJSLg0KPiArICAvLy8gMHgwMiAtIEdVSUQgUGFydGl0aW9uIFRhYmxlLg0KPiArICAvLy8NCj4g KyAgVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAgICBNQlJUeXBlOw0KPiArICAvLy8NCj4g KyAgLy8vIFR5cGUgb2YgRGlzayBTaWduYXR1cmU6IChVbnVzZWQgdmFsdWVzIHJlc2VydmVkKS4N Cj4gKyAgLy8vIDB4MDAgLSBObyBEaXNrIFNpZ25hdHVyZS4NCj4gKyAgLy8vIDB4MDEgLSAzMi1i aXQgc2lnbmF0dXJlIGZyb20gYWRkcmVzcyAweDFiOCBvZiB0aGUgdHlwZSAweDAxIE1CUi4NCj4g KyAgLy8vIDB4MDIgLSBHVUlEIHNpZ25hdHVyZS4NCj4gKyAgLy8vDQo+ICsgIFVJTlQ4ICAgICAg ICAgICAgICAgICAgICAgICAgICAgU2lnbmF0dXJlVHlwZTsNCj4gK30gSEFSRERSSVZFX0RFVklD RV9QQVRIOw0KPiArDQo+ICsjZGVmaW5lIE1CUl9UWVBFX1BDQVQgICAgICAgICAgICAgMHgwMQ0K PiArI2RlZmluZSBNQlJfVFlQRV9FRklfUEFSVElUSU9OX1RBQkxFX0hFQURFUiAweDAyDQo+ICsN Cj4gKyNkZWZpbmUgTk9fRElTS19TSUdOQVRVUkUgICAgICAgICAweDAwDQo+ICsjZGVmaW5lIFNJ R05BVFVSRV9UWVBFX01CUiAgICAgICAgMHgwMQ0KPiArI2RlZmluZSBTSUdOQVRVUkVfVFlQRV9H VUlEICAgICAgIDB4MDINCj4gKw0KPiArLy8vDQo+ICsvLy8gQ0QtUk9NIE1lZGlhIERldmljZSBQ YXRoIFN1YlR5cGUuDQo+ICsvLy8NCj4gKyNkZWZpbmUgTUVESUFfQ0RST01fRFAgICAgICAgICAg ICAweDAyDQo+ICsNCj4gKy8vLw0KPiArLy8vIFRoZSBDRC1ST00gTWVkaWEgRGV2aWNlIFBhdGgg aXMgdXNlZCB0byBkZWZpbmUgYSBzeXN0ZW0gcGFydGl0aW9uIHRoYXQgZXhpc3RzIG9uIGEgQ0Qt Uk9NLg0KPiArLy8vDQo+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ICsgIEVGSV9ERVZJQ0VfUEFUSF9Q Uk9UT0NPTCAgICAgICAgSGVhZGVyOw0KPiArICAvLy8NCj4gKyAgLy8vIEJvb3QgRW50cnkgbnVt YmVyIGZyb20gdGhlIEJvb3QgQ2F0YWxvZy4gVGhlIEluaXRpYWwvRGVmYXVsdCBlbnRyeSBpcyBk ZWZpbmVkIGFzIHplcm8uDQo+ICsgIC8vLw0KPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAg ICAgICAgIEJvb3RFbnRyeTsNCj4gKyAgLy8vDQo+ICsgIC8vLyBTdGFydGluZyBSQkEgb2YgdGhl IHBhcnRpdGlvbiBvbiB0aGUgbWVkaXVtLiBDRC1ST01zIHVzZSBSZWxhdGl2ZSBsb2dpY2FsIEJs b2NrIEFkZHJlc3NpbmcuDQo+ICsgIC8vLw0KPiArICBVSU5UNjQgICAgICAgICAgICAgICAgICAg ICAgICAgIFBhcnRpdGlvblN0YXJ0Ow0KPiArICAvLy8NCj4gKyAgLy8vIFNpemUgb2YgdGhlIHBh cnRpdGlvbiBpbiB1bml0cyBvZiBCbG9ja3MsIGFsc28gY2FsbGVkIFNlY3RvcnMuDQo+ICsgIC8v Lw0KPiArICBVSU5UNjQgICAgICAgICAgICAgICAgICAgICAgICAgIFBhcnRpdGlvblNpemU7DQo+ ICt9IENEUk9NX0RFVklDRV9QQVRIOw0KPiArDQo+ICsvLw0KPiArLy8gVXNlIFZFTkRPUl9ERVZJ Q0VfUEFUSCBzdHJ1Y3QNCj4gKy8vDQo+ICsjZGVmaW5lIE1FRElBX1ZFTkRPUl9EUCAgICAgICAg ICAgMHgwMyAgLy8vPCBNZWRpYSB2ZW5kb3IgZGV2aWNlIHBhdGggc3VidHlwZS4NCj4gKw0KPiAr Ly8vDQo+ICsvLy8gRmlsZSBQYXRoIE1lZGlhIERldmljZSBQYXRoIFN1YlR5cGUNCj4gKy8vLw0K PiArI2RlZmluZSBNRURJQV9GSUxFUEFUSF9EUCAgICAgICAgIDB4MDQNCj4gK3R5cGVkZWYgc3Ry dWN0IHsNCj4gKyAgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICAgICAgICBIZWFkZXI7DQo+ICsg IC8vLw0KPiArICAvLy8gQSBOVUxMLXRlcm1pbmF0ZWQgUGF0aCBzdHJpbmcgaW5jbHVkaW5nIGRp cmVjdG9yeSBhbmQgZmlsZSBuYW1lcy4NCj4gKyAgLy8vDQo+ICsgIENIQVIxNiAgICAgICAgICAg ICAgICAgICAgICAgICAgUGF0aE5hbWVbMV07DQo+ICt9IEZJTEVQQVRIX0RFVklDRV9QQVRIOw0K PiArDQo+ICsjZGVmaW5lIFNJWkVfT0ZfRklMRVBBVEhfREVWSUNFX1BBVEggIE9GRlNFVF9PRihG SUxFUEFUSF9ERVZJQ0VfUEFUSCxQYXRoTmFtZSkNCj4gKw0KPiArLy8vDQo+ICsvLy8gTWVkaWEg UHJvdG9jb2wgRGV2aWNlIFBhdGggU3ViVHlwZS4NCj4gKy8vLw0KPiArI2RlZmluZSBNRURJQV9Q Uk9UT0NPTF9EUCAgICAgICAgIDB4MDUNCj4gKw0KPiArLy8vDQo+ICsvLy8gVGhlIE1lZGlhIFBy b3RvY29sIERldmljZSBQYXRoIGlzIHVzZWQgdG8gZGVub3RlIHRoZSBwcm90b2NvbCB0aGF0IGlz IGJlaW5nDQo+ICsvLy8gdXNlZCBpbiBhIGRldmljZSBwYXRoIGF0IHRoZSBsb2NhdGlvbiBvZiB0 aGUgcGF0aCBzcGVjaWZpZWQuDQo+ICsvLy8gTWFueSBwcm90b2NvbHMgYXJlIGluaGVyZW50IHRv IHRoZSBzdHlsZSBvZiBkZXZpY2UgcGF0aC4NCj4gKy8vLw0KPiArdHlwZWRlZiBzdHJ1Y3Qgew0K PiArICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICAgICAgIEhlYWRlcjsNCj4gKyAgLy8vDQo+ ICsgIC8vLyBUaGUgSUQgb2YgdGhlIHByb3RvY29sLg0KPiArICAvLy8NCj4gKyAgRUZJX0dVSUQg ICAgICAgICAgICAgICAgICAgICAgICBQcm90b2NvbDsNCj4gK30gTUVESUFfUFJPVE9DT0xfREVW SUNFX1BBVEg7DQo+ICsNCj4gKy8vLw0KPiArLy8vIFBJV0cgRmlybXdhcmUgRmlsZSBTdWJUeXBl Lg0KPiArLy8vDQo+ICsjZGVmaW5lIE1FRElBX1BJV0dfRldfRklMRV9EUCAgICAgMHgwNg0KPiAr DQo+ICsvLy8NCj4gKy8vLyBUaGlzIGRldmljZSBwYXRoIGlzIHVzZWQgYnkgc3lzdGVtcyBpbXBs ZW1lbnRpbmcgdGhlIFVFRkkgUEkgU3BlY2lmaWNhdGlvbiAxLjAgdG8gZGVzY3JpYmUgYSBmaXJt d2FyZSBmaWxlLg0KPiArLy8vDQo+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ICsgIEVGSV9ERVZJQ0Vf UEFUSF9QUk9UT0NPTCAgICAgICAgSGVhZGVyOw0KPiArICAvLy8NCj4gKyAgLy8vIEZpcm13YXJl IGZpbGUgbmFtZQ0KPiArICAvLy8NCj4gKyAgRUZJX0dVSUQgICAgICAgICAgICAgICAgICAgICAg ICBGdkZpbGVOYW1lOw0KPiArfSBNRURJQV9GV19WT0xfRklMRVBBVEhfREVWSUNFX1BBVEg7DQo+ ICsNCj4gKy8vLw0KPiArLy8vIFBJV0cgRmlybXdhcmUgVm9sdW1lIERldmljZSBQYXRoIFN1YlR5 cGUuDQo+ICsvLy8NCj4gKyNkZWZpbmUgTUVESUFfUElXR19GV19WT0xfRFAgICAgICAweDA3DQo+ ICsNCj4gKy8vLw0KPiArLy8vIFRoaXMgZGV2aWNlIHBhdGggaXMgdXNlZCBieSBzeXN0ZW1zIGlt cGxlbWVudGluZyB0aGUgVUVGSSBQSSBTcGVjaWZpY2F0aW9uIDEuMCB0byBkZXNjcmliZSBhIGZp cm13YXJlIHZvbHVtZS4NCj4gKy8vLw0KPiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiArICBFRklfREVW SUNFX1BBVEhfUFJPVE9DT0wgICAgICAgIEhlYWRlcjsNCj4gKyAgLy8vDQo+ICsgIC8vLyBGaXJt d2FyZSB2b2x1bWUgbmFtZS4NCj4gKyAgLy8vDQo+ICsgIEVGSV9HVUlEICAgICAgICAgICAgICAg ICAgICAgICAgRnZOYW1lOw0KPiArfSBNRURJQV9GV19WT0xfREVWSUNFX1BBVEg7DQo+ICsNCj4g Ky8vLw0KPiArLy8vIE1lZGlhIHJlbGF0aXZlIG9mZnNldCByYW5nZSBkZXZpY2UgcGF0aC4NCj4g Ky8vLw0KPiArI2RlZmluZSBNRURJQV9SRUxBVElWRV9PRkZTRVRfUkFOR0VfRFAgMHgwOA0KPiAr DQo+ICsvLy8NCj4gKy8vLyBVc2VkIHRvIGRlc2NyaWJlIHRoZSBvZmZzZXQgcmFuZ2Ugb2YgbWVk aWEgcmVsYXRpdmUuDQo+ICsvLy8NCj4gK3R5cGVkZWYgc3RydWN0IHsNCj4gKyAgRUZJX0RFVklD RV9QQVRIX1BST1RPQ09MICBIZWFkZXI7DQo+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAg UmVzZXJ2ZWQ7DQo+ICsgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgU3RhcnRpbmdPZmZzZXQ7 DQo+ICsgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgRW5kaW5nT2Zmc2V0Ow0KPiArfSBNRURJ QV9SRUxBVElWRV9PRkZTRVRfUkFOR0VfREVWSUNFX1BBVEg7DQo+ICsNCj4gKy8vLw0KPiArLy8v IFRoaXMgR1VJRCBkZWZpbmVzIGEgUkFNIERpc2sgc3VwcG9ydGluZyBhIHJhdyBkaXNrIGZvcm1h dCBpbiB2b2xhdGlsZSBtZW1vcnkuDQo+ICsvLy8NCj4gKyNkZWZpbmUgRUZJX1ZJUlRVQUxfRElT S19HVUlEIFwNCj4gKyAgeyBcDQo+ICsgICAgMHg3N0FCNTM1QSwgMHg0NUZDLCAweDYyNEIsIHsw eDU1LCAweDYwLCAweEY3LCAweEIyLCAweDgxLCAweEQxLCAweEY5LCAweDZFIH0gXA0KPiArICB9 DQo+ICsNCj4gK2V4dGVybiAgRUZJX0dVSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ0Vm aVZpcnR1YWxEaXNrR3VpZDsNCj4gKw0KPiArLy8vDQo+ICsvLy8gVGhpcyBHVUlEIGRlZmluZXMg YSBSQU0gRGlzayBzdXBwb3J0aW5nIGFuIElTTyBpbWFnZSBpbiB2b2xhdGlsZSBtZW1vcnkuDQo+ ICsvLy8NCj4gKyNkZWZpbmUgRUZJX1ZJUlRVQUxfQ0RfR1VJRCBcDQo+ICsgIHsgXA0KPiArICAg IDB4M0Q1QUJEMzAsIDB4NDE3NSwgMHg4N0NFLCB7MHg2RCwgMHg2NCwgMHhEMiwgMHhBRCwgMHhF NSwgMHgyMywgMHhDNCwgMHhCQiB9IFwNCj4gKyAgfQ0KPiArZXh0ZXJuICBFRklfR1VJRCAgICAg ICAgICAgICAgICAgICAgICAgICAgICBnRWZpVmlydHVhbENkR3VpZDsNCj4gKw0KPiArLy8vDQo+ ICsvLy8gVGhpcyBHVUlEIGRlZmluZXMgYSBSQU0gRGlzayBzdXBwb3J0aW5nIGEgcmF3IGRpc2sg Zm9ybWF0IGluIHBlcnNpc3RlbnQgbWVtb3J5Lg0KPiArLy8vDQo+ICsjZGVmaW5lIEVGSV9QRVJT SVNURU5UX1ZJUlRVQUxfRElTS19HVUlEIFwNCj4gKyAgeyBcDQo+ICsgICAgMHg1Q0VBMDJDOSwg MHg0RDA3LCAweDY5RDMsIHsweDI2LCAweDlGICwweDQ0LCAweDk2LCAweEZCLCAweEUwLCAweDk2 LCAweEY5IH0gXA0KPiArICB9DQo+ICsNCj4gK2V4dGVybiAgRUZJX0dVSUQgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZ0VmaVBlcnNpc3RlbnRWaXJ0dWFsRGlza0d1aWQ7DQo+ICsNCj4gKy8v Lw0KPiArLy8vIFRoaXMgR1VJRCBkZWZpbmVzIGEgUkFNIERpc2sgc3VwcG9ydGluZyBhbiBJU08g aW1hZ2UgaW4gcGVyc2lzdGVudCBtZW1vcnkuDQo+ICsvLy8NCj4gKyNkZWZpbmUgRUZJX1BFUlNJ U1RFTlRfVklSVFVBTF9DRF9HVUlEIFwNCj4gKyAgeyBcDQo+ICsgICAgMHgwODAxODE4OCwgMHg0 MkNELCAweEJCNDgsIHsweDEwLCAweDBGLCAweDUzLCAweDg3LCAweEQ1LCAweDNELCAweEVELCAw eDNEIH0gXA0KPiArICB9DQo+ICsNCj4gK2V4dGVybiAgRUZJX0dVSUQgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZ0VmaVBlcnNpc3RlbnRWaXJ0dWFsQ2RHdWlkOw0KPiArDQo+ICsvLy8NCj4g Ky8vLyBNZWRpYSByYW0gZGlzayBkZXZpY2UgcGF0aC4NCj4gKy8vLw0KPiArI2RlZmluZSBNRURJ QV9SQU1fRElTS19EUCAgICAgICAgIDB4MDkNCj4gKw0KPiArLy8vDQo+ICsvLy8gVXNlZCB0byBk ZXNjcmliZSB0aGUgcmFtIGRpc2sgZGV2aWNlIHBhdGguDQo+ICsvLy8NCj4gK3R5cGVkZWYgc3Ry dWN0IHsNCj4gKyAgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICAgICAgICBIZWFkZXI7DQo+ICsg IC8vLw0KPiArICAvLy8gU3RhcnRpbmcgTWVtb3J5IEFkZHJlc3MuDQo+ICsgIC8vLw0KPiArICBV SU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXJ0aW5nQWRkclsyXTsNCj4gKyAgLy8v DQo+ICsgIC8vLyBFbmRpbmcgTWVtb3J5IEFkZHJlc3MuDQo+ICsgIC8vLw0KPiArICBVSU5UMzIg ICAgICAgICAgICAgICAgICAgICAgICAgIEVuZGluZ0FkZHJbMl07DQo+ICsgIC8vLw0KPiArICAv Ly8gR1VJRCB0aGF0IGRlZmluZXMgdGhlIHR5cGUgb2YgdGhlIFJBTSBEaXNrLg0KPiArICAvLy8N Cj4gKyAgRUZJX0dVSUQgICAgICAgICAgICAgICAgICAgICAgICBUeXBlR3VpZDsNCj4gKyAgLy8v DQo+ICsgIC8vLyBSQU0gRGlza2luc3RhbmNlIG51bWJlciwgaWYgc3VwcG9ydGVkLiBUaGUgZGVm YXVsdCB2YWx1ZSBpcyB6ZXJvLg0KPiArICAvLy8NCj4gKyAgVUlOVDE2ICAgICAgICAgICAgICAg ICAgICAgICAgICBJbnN0YW5jZTsNCj4gK30gTUVESUFfUkFNX0RJU0tfREVWSUNFX1BBVEg7DQo+ ICsNCj4gKy8vLw0KPiArLy8vIEJJT1MgQm9vdCBTcGVjaWZpY2F0aW9uIERldmljZSBQYXRoLg0K PiArLy8vDQo+ICsjZGVmaW5lIEJCU19ERVZJQ0VfUEFUSCAgICAgICAgICAgMHgwNQ0KPiArDQo+ ICsvLy8NCj4gKy8vLyBCSU9TIEJvb3QgU3BlY2lmaWNhdGlvbiBEZXZpY2UgUGF0aCBTdWJUeXBl Lg0KPiArLy8vDQo+ICsjZGVmaW5lIEJCU19CQlNfRFAgICAgICAgICAgICAgICAgMHgwMQ0KPiAr DQo+ICsvLy8NCj4gKy8vLyBUaGlzIERldmljZSBQYXRoIGlzIHVzZWQgdG8gZGVzY3JpYmUgdGhl IGJvb3Rpbmcgb2Ygbm9uLUVGSS1hd2FyZSBvcGVyYXRpbmcgc3lzdGVtcy4NCj4gKy8vLw0KPiAr dHlwZWRlZiBzdHJ1Y3Qgew0KPiArICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICAgICAgIEhl YWRlcjsNCj4gKyAgLy8vDQo+ICsgIC8vLyBEZXZpY2UgVHlwZSBhcyBkZWZpbmVkIGJ5IHRoZSBC SU9TIEJvb3QgU3BlY2lmaWNhdGlvbi4NCj4gKyAgLy8vDQo+ICsgIFVJTlQxNiAgICAgICAgICAg ICAgICAgICAgICAgICAgRGV2aWNlVHlwZTsNCj4gKyAgLy8vDQo+ICsgIC8vLyBTdGF0dXMgRmxh Z3MgYXMgZGVmaW5lZCBieSB0aGUgQklPUyBCb290IFNwZWNpZmljYXRpb24uDQo+ICsgIC8vLw0K PiArICBVSU5UMTYgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXR1c0ZsYWc7DQo+ICsgIC8v Lw0KPiArICAvLy8gTnVsbC10ZXJtaW5hdGVkIEFTQ0lJIHN0cmluZyB0aGF0IGRlc2NyaWJlcyB0 aGUgYm9vdCBkZXZpY2UgdG8gYSB1c2VyLg0KPiArICAvLy8NCj4gKyAgQ0hBUjggICAgICAgICAg ICAgICAgICAgICAgICAgICBTdHJpbmdbMV07DQo+ICt9IEJCU19CQlNfREVWSUNFX1BBVEg7DQo+ ICsNCj4gKy8vDQo+ICsvLyBEZXZpY2VUeXBlIGRlZmluaXRpb25zIC0gZnJvbSBCQlMgc3BlY2lm aWNhdGlvbg0KPiArLy8NCj4gKyNkZWZpbmUgQkJTX1RZUEVfRkxPUFBZICAgICAgICAgICAweDAx DQo+ICsjZGVmaW5lIEJCU19UWVBFX0hBUkREUklWRSAgICAgICAgMHgwMg0KPiArI2RlZmluZSBC QlNfVFlQRV9DRFJPTSAgICAgICAgICAgIDB4MDMNCj4gKyNkZWZpbmUgQkJTX1RZUEVfUENNQ0lB ICAgICAgICAgICAweDA0DQo+ICsjZGVmaW5lIEJCU19UWVBFX1VTQiAgICAgICAgICAgICAgMHgw NQ0KPiArI2RlZmluZSBCQlNfVFlQRV9FTUJFRERFRF9ORVRXT1JLIDB4MDYNCj4gKyNkZWZpbmUg QkJTX1RZUEVfQkVWICAgICAgICAgICAgICAweDgwDQo+ICsjZGVmaW5lIEJCU19UWVBFX1VOS05P V04gICAgICAgICAgMHhGRg0KPiArDQo+ICsNCj4gKy8vLw0KPiArLy8vIFVuaW9uIG9mIGFsbCBw b3NzaWJsZSBEZXZpY2UgUGF0aHMgYW5kIHBvaW50ZXJzIHRvIERldmljZSBQYXRocy4NCj4gKy8v Lw0KPiArdHlwZWRlZiB1bmlvbiB7DQo+ICsgIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAg ICAgICAgICAgICAgICBEZXZQYXRoOw0KPiArICBQQ0lfREVWSUNFX1BBVEggICAgICAgICAgICAg ICAgICAgICAgICAgICAgUGNpOw0KPiArICBQQ0NBUkRfREVWSUNFX1BBVEggICAgICAgICAgICAg ICAgICAgICAgICAgUGNDYXJkOw0KPiArICBNRU1NQVBfREVWSUNFX1BBVEggICAgICAgICAgICAg ICAgICAgICAgICAgTWVtTWFwOw0KPiArICBWRU5ET1JfREVWSUNFX1BBVEggICAgICAgICAgICAg ICAgICAgICAgICAgVmVuZG9yOw0KPiArDQo+ICsgIENPTlRST0xMRVJfREVWSUNFX1BBVEggICAg ICAgICAgICAgICAgICAgICBDb250cm9sbGVyOw0KPiArICBCTUNfREVWSUNFX1BBVEggICAgICAg ICAgICAgICAgICAgICAgICAgICAgQm1jOw0KPiArICBBQ1BJX0hJRF9ERVZJQ0VfUEFUSCAgICAg ICAgICAgICAgICAgICAgICAgQWNwaTsNCj4gKyAgQUNQSV9FWFRFTkRFRF9ISURfREVWSUNFX1BB VEggICAgICAgICAgICAgIEV4dGVuZGVkQWNwaTsNCj4gKyAgQUNQSV9BRFJfREVWSUNFX1BBVEgg ICAgICAgICAgICAgICAgICAgICAgIEFjcGlBZHI7DQo+ICsNCj4gKyAgQVRBUElfREVWSUNFX1BB VEggICAgICAgICAgICAgICAgICAgICAgICAgIEF0YXBpOw0KPiArICBTQ1NJX0RFVklDRV9QQVRI ICAgICAgICAgICAgICAgICAgICAgICAgICAgU2NzaTsNCj4gKyAgSVNDU0lfREVWSUNFX1BBVEgg ICAgICAgICAgICAgICAgICAgICAgICAgIElzY3NpOw0KPiArICBGSUJSRUNIQU5ORUxfREVWSUNF X1BBVEggICAgICAgICAgICAgICAgICAgRmlicmVDaGFubmVsOw0KPiArICBGSUJSRUNIQU5ORUxF WF9ERVZJQ0VfUEFUSCAgICAgICAgICAgICAgICAgRmlicmVDaGFubmVsRXg7DQo+ICsNCj4gKyAg RjEzOTRfREVWSUNFX1BBVEggICAgICAgICAgICAgICAgICAgICAgICAgIEYxMzk0Ow0KPiArICBV U0JfREVWSUNFX1BBVEggICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNiOw0KPiArICBTQVRB X0RFVklDRV9QQVRIICAgICAgICAgICAgICAgICAgICAgICAgICAgU2F0YTsNCj4gKyAgVVNCX0NM QVNTX0RFVklDRV9QQVRIICAgICAgICAgICAgICAgICAgICAgIFVzYkNsYXNzOw0KPiArICBVU0Jf V1dJRF9ERVZJQ0VfUEFUSCAgICAgICAgICAgICAgICAgICAgICAgVXNiV3dpZDsNCj4gKyAgREVW SUNFX0xPR0lDQUxfVU5JVF9ERVZJQ0VfUEFUSCAgICAgICAgICAgIExvZ2ljVW5pdDsNCj4gKyAg STJPX0RFVklDRV9QQVRIICAgICAgICAgICAgICAgICAgICAgICAgICAgIEkyTzsNCj4gKyAgTUFD X0FERFJfREVWSUNFX1BBVEggICAgICAgICAgICAgICAgICAgICAgIE1hY0FkZHI7DQo+ICsgIElQ djRfREVWSUNFX1BBVEggICAgICAgICAgICAgICAgICAgICAgICAgICBJcHY0Ow0KPiArICBJUHY2 X0RFVklDRV9QQVRIICAgICAgICAgICAgICAgICAgICAgICAgICAgSXB2NjsNCj4gKyAgVkxBTl9E RVZJQ0VfUEFUSCAgICAgICAgICAgICAgICAgICAgICAgICAgIFZsYW47DQo+ICsgIElORklOSUJB TkRfREVWSUNFX1BBVEggICAgICAgICAgICAgICAgICAgICBJbmZpbmlCYW5kOw0KPiArICBVQVJU X0RFVklDRV9QQVRIICAgICAgICAgICAgICAgICAgICAgICAgICAgVWFydDsNCj4gKyAgVUFSVF9G TE9XX0NPTlRST0xfREVWSUNFX1BBVEggICAgICAgICAgICAgIFVhcnRGbG93Q29udHJvbDsNCj4g KyAgU0FTX0RFVklDRV9QQVRIICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhczsNCj4gKyAg U0FTRVhfREVWSUNFX1BBVEggICAgICAgICAgICAgICAgICAgICAgICAgIFNhc0V4Ow0KPiArICBO Vk1FX05BTUVTUEFDRV9ERVZJQ0VfUEFUSCAgICAgICAgICAgICAgICAgTnZtZU5hbWVzcGFjZTsN Cj4gKyAgRE5TX0RFVklDRV9QQVRIICAgICAgICAgICAgICAgICAgICAgICAgICAgIERuczsNCj4g KyAgVVJJX0RFVklDRV9QQVRIICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVyaTsNCj4gKyAg QkxVRVRPT1RIX0RFVklDRV9QQVRIICAgICAgICAgICAgICAgICAgICAgIEJsdWV0b290aDsNCj4g KyAgV0lGSV9ERVZJQ0VfUEFUSCAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpRmk7DQo+ICsg IFVGU19ERVZJQ0VfUEFUSCAgICAgICAgICAgICAgICAgICAgICAgICAgICBVZnM7DQo+ICsgIFNE X0RFVklDRV9QQVRIICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZDsNCj4gKyAgRU1NQ19E RVZJQ0VfUEFUSCAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtbWM7DQo+ICsgIEhBUkREUklW RV9ERVZJQ0VfUEFUSCAgICAgICAgICAgICAgICAgICAgICBIYXJkRHJpdmU7DQo+ICsgIENEUk9N X0RFVklDRV9QQVRIICAgICAgICAgICAgICAgICAgICAgICAgICBDRDsNCj4gKw0KPiArICBGSUxF UEFUSF9ERVZJQ0VfUEFUSCAgICAgICAgICAgICAgICAgICAgICAgRmlsZVBhdGg7DQo+ICsgIE1F RElBX1BST1RPQ09MX0RFVklDRV9QQVRIICAgICAgICAgICAgICAgICBNZWRpYVByb3RvY29sOw0K PiArDQo+ICsgIE1FRElBX0ZXX1ZPTF9ERVZJQ0VfUEFUSCAgICAgICAgICAgICAgICAgICBGaXJt d2FyZVZvbHVtZTsNCj4gKyAgTUVESUFfRldfVk9MX0ZJTEVQQVRIX0RFVklDRV9QQVRIICAgICAg ICAgIEZpcm13YXJlRmlsZTsNCj4gKyAgTUVESUFfUkVMQVRJVkVfT0ZGU0VUX1JBTkdFX0RFVklD RV9QQVRIICAgIE9mZnNldDsNCj4gKyAgTUVESUFfUkFNX0RJU0tfREVWSUNFX1BBVEggICAgICAg ICAgICAgICAgIFJhbURpc2s7DQo+ICsgIEJCU19CQlNfREVWSUNFX1BBVEggICAgICAgICAgICAg ICAgICAgICAgICBCYnM7DQo+ICt9IEVGSV9ERVZfUEFUSDsNCj4gKw0KPiArDQo+ICsNCj4gK3R5 cGVkZWYgdW5pb24gew0KPiArICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICAgICAgICAgICAg ICAgICAgKkRldlBhdGg7DQo+ICsgIFBDSV9ERVZJQ0VfUEFUSCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAqUGNpOw0KPiArICBQQ0NBUkRfREVWSUNFX1BBVEggICAgICAgICAgICAgICAgICAg ICAgICAgKlBjQ2FyZDsNCj4gKyAgTUVNTUFQX0RFVklDRV9QQVRIICAgICAgICAgICAgICAgICAg ICAgICAgICpNZW1NYXA7DQo+ICsgIFZFTkRPUl9ERVZJQ0VfUEFUSCAgICAgICAgICAgICAgICAg ICAgICAgICAqVmVuZG9yOw0KPiArDQo+ICsgIENPTlRST0xMRVJfREVWSUNFX1BBVEggICAgICAg ICAgICAgICAgICAgICAqQ29udHJvbGxlcjsNCj4gKyAgQk1DX0RFVklDRV9QQVRIICAgICAgICAg ICAgICAgICAgICAgICAgICAgICpCbWM7DQo+ICsgIEFDUElfSElEX0RFVklDRV9QQVRIICAgICAg ICAgICAgICAgICAgICAgICAqQWNwaTsNCj4gKyAgQUNQSV9FWFRFTkRFRF9ISURfREVWSUNFX1BB VEggICAgICAgICAgICAgICpFeHRlbmRlZEFjcGk7DQo+ICsgIEFDUElfQURSX0RFVklDRV9QQVRI ICAgICAgICAgICAgICAgICAgICAgICAqQWNwaUFkcjsNCj4gKw0KPiArICBBVEFQSV9ERVZJQ0Vf UEFUSCAgICAgICAgICAgICAgICAgICAgICAgICAgKkF0YXBpOw0KPiArICBTQ1NJX0RFVklDRV9Q QVRIICAgICAgICAgICAgICAgICAgICAgICAgICAgKlNjc2k7DQo+ICsgIElTQ1NJX0RFVklDRV9Q QVRIICAgICAgICAgICAgICAgICAgICAgICAgICAqSXNjc2k7DQo+ICsgIEZJQlJFQ0hBTk5FTF9E RVZJQ0VfUEFUSCAgICAgICAgICAgICAgICAgICAqRmlicmVDaGFubmVsOw0KPiArICBGSUJSRUNI QU5ORUxFWF9ERVZJQ0VfUEFUSCAgICAgICAgICAgICAgICAgKkZpYnJlQ2hhbm5lbEV4Ow0KPiAr DQo+ICsgIEYxMzk0X0RFVklDRV9QQVRIICAgICAgICAgICAgICAgICAgICAgICAgICAqRjEzOTQ7 DQo+ICsgIFVTQl9ERVZJQ0VfUEFUSCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqVXNiOw0K PiArICBTQVRBX0RFVklDRV9QQVRIICAgICAgICAgICAgICAgICAgICAgICAgICAgKlNhdGE7DQo+ ICsgIFVTQl9DTEFTU19ERVZJQ0VfUEFUSCAgICAgICAgICAgICAgICAgICAgICAqVXNiQ2xhc3M7 DQo+ICsgIFVTQl9XV0lEX0RFVklDRV9QQVRIICAgICAgICAgICAgICAgICAgICAgICAqVXNiV3dp ZDsNCj4gKyAgREVWSUNFX0xPR0lDQUxfVU5JVF9ERVZJQ0VfUEFUSCAgICAgICAgICAgICpMb2dp Y1VuaXQ7DQo+ICsgIEkyT19ERVZJQ0VfUEFUSCAgICAgICAgICAgICAgICAgICAgICAgICAgICAq STJPOw0KPiArICBNQUNfQUREUl9ERVZJQ0VfUEFUSCAgICAgICAgICAgICAgICAgICAgICAgKk1h Y0FkZHI7DQo+ICsgIElQdjRfREVWSUNFX1BBVEggICAgICAgICAgICAgICAgICAgICAgICAgICAq SXB2NDsNCj4gKyAgSVB2Nl9ERVZJQ0VfUEFUSCAgICAgICAgICAgICAgICAgICAgICAgICAgICpJ cHY2Ow0KPiArICBWTEFOX0RFVklDRV9QQVRIICAgICAgICAgICAgICAgICAgICAgICAgICAgKlZs YW47DQo+ICsgIElORklOSUJBTkRfREVWSUNFX1BBVEggICAgICAgICAgICAgICAgICAgICAqSW5m aW5pQmFuZDsNCj4gKyAgVUFSVF9ERVZJQ0VfUEFUSCAgICAgICAgICAgICAgICAgICAgICAgICAg ICpVYXJ0Ow0KPiArICBVQVJUX0ZMT1dfQ09OVFJPTF9ERVZJQ0VfUEFUSCAgICAgICAgICAgICAg KlVhcnRGbG93Q29udHJvbDsNCj4gKyAgU0FTX0RFVklDRV9QQVRIICAgICAgICAgICAgICAgICAg ICAgICAgICAgICpTYXM7DQo+ICsgIFNBU0VYX0RFVklDRV9QQVRIICAgICAgICAgICAgICAgICAg ICAgICAgICAqU2FzRXg7DQo+ICsgIE5WTUVfTkFNRVNQQUNFX0RFVklDRV9QQVRIICAgICAgICAg ICAgICAgICAqTnZtZU5hbWVzcGFjZTsNCj4gKyAgRE5TX0RFVklDRV9QQVRIICAgICAgICAgICAg ICAgICAgICAgICAgICAgICpEbnM7DQo+ICsgIFVSSV9ERVZJQ0VfUEFUSCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAqVXJpOw0KPiArICBCTFVFVE9PVEhfREVWSUNFX1BBVEggICAgICAgICAg ICAgICAgICAgICAgKkJsdWV0b290aDsNCj4gKyAgV0lGSV9ERVZJQ0VfUEFUSCAgICAgICAgICAg ICAgICAgICAgICAgICAgICpXaUZpOw0KPiArICBVRlNfREVWSUNFX1BBVEggICAgICAgICAgICAg ICAgICAgICAgICAgICAgKlVmczsNCj4gKyAgU0RfREVWSUNFX1BBVEggICAgICAgICAgICAgICAg ICAgICAgICAgICAgICpTZDsNCj4gKyAgRU1NQ19ERVZJQ0VfUEFUSCAgICAgICAgICAgICAgICAg ICAgICAgICAgICpFbW1jOw0KPiArICBIQVJERFJJVkVfREVWSUNFX1BBVEggICAgICAgICAgICAg ICAgICAgICAgKkhhcmREcml2ZTsNCj4gKyAgQ0RST01fREVWSUNFX1BBVEggICAgICAgICAgICAg ICAgICAgICAgICAgICpDRDsNCj4gKw0KPiArICBGSUxFUEFUSF9ERVZJQ0VfUEFUSCAgICAgICAg ICAgICAgICAgICAgICAgKkZpbGVQYXRoOw0KPiArICBNRURJQV9QUk9UT0NPTF9ERVZJQ0VfUEFU SCAgICAgICAgICAgICAgICAgKk1lZGlhUHJvdG9jb2w7DQo+ICsNCj4gKyAgTUVESUFfRldfVk9M X0RFVklDRV9QQVRIICAgICAgICAgICAgICAgICAgICpGaXJtd2FyZVZvbHVtZTsNCj4gKyAgTUVE SUFfRldfVk9MX0ZJTEVQQVRIX0RFVklDRV9QQVRIICAgICAgICAgICpGaXJtd2FyZUZpbGU7DQo+ ICsgIE1FRElBX1JFTEFUSVZFX09GRlNFVF9SQU5HRV9ERVZJQ0VfUEFUSCAgICAqT2Zmc2V0Ow0K PiArICBNRURJQV9SQU1fRElTS19ERVZJQ0VfUEFUSCAgICAgICAgICAgICAgICAgKlJhbURpc2s7 DQo+ICsgIEJCU19CQlNfREVWSUNFX1BBVEggICAgICAgICAgICAgICAgICAgICAgICAqQmJzOw0K PiArICBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlJhdzsNCj4g K30gRUZJX0RFVl9QQVRIX1BUUjsNCj4gKw0KPiArI2RlZmluZSBFRklfREVCVUdQT1JUX1BST1RP Q09MX0dVSUQgXA0KPiArICB7IFwNCj4gKyAgICAweEVCQTRFOEQyLCAweDM4NTgsIDB4NDFFQywg ezB4QTIsIDB4ODEsIDB4MjYsIDB4NDcsIDB4QkEsIDB4OTYsIDB4NjAsIDB4RDAgfSBcDQo+ICsg IH0NCj4gKy8vDQo+ICsvLyBERUJVR1BPUlQgdmFyaWFibGUgZGVmaW5pdGlvbnMuLi4NCj4gKy8v DQo+ICsjZGVmaW5lIEVGSV9ERUJVR1BPUlRfVkFSSUFCTEVfTkFNRSBMIkRFQlVHUE9SVCINCj4g KyNkZWZpbmUgRUZJX0RFQlVHUE9SVF9WQVJJQUJMRV9HVUlEIEVGSV9ERUJVR1BPUlRfUFJPVE9D T0xfR1VJRA0KPiArZXh0ZXJuIEVGSV9HVUlEICBnRWZpRGVidWdQb3J0VmFyaWFibGVHdWlkOw0K PiArDQo+ICsvLw0KPiArLy8gRGVidWdQb3J0IGRldmljZSBwYXRoIGRlZmluaXRpb25zLi4uDQo+ ICsvLw0KPiArI2RlZmluZSBERVZJQ0VfUEFUSF9NRVNTQUdJTkdfREVCVUdQT1JUIEVGSV9ERUJV R1BPUlRfUFJPVE9DT0xfR1VJRA0KPiArZXh0ZXJuIEVGSV9HVUlEICBnRWZpRGVidWdQb3J0RGV2 aWNlUGF0aEd1aWQ7DQo+ICsNCj4gK3R5cGVkZWYgc3RydWN0IHsNCj4gKyAgRUZJX0RFVklDRV9Q QVRIX1BST1RPQ09MICBIZWFkZXI7DQo+ICsgIEVGSV9HVUlEICAgICAgICAgICAgICAgICAgR3Vp ZDsNCj4gK30gREVCVUdQT1JUX0RFVklDRV9QQVRIOw0KPiArDQo+ICsjcHJhZ21hIHBhY2soKQ0K PiArDQo+ICsjZGVmaW5lIEVORF9ERVZJQ0VfUEFUSF9UWVBFICAgICAgICAgICAgICAgICAweDdm DQo+ICsjZGVmaW5lIEVORF9FTlRJUkVfREVWSUNFX1BBVEhfU1VCVFlQRSAgICAgICAweEZGDQo+ ICsjZGVmaW5lIEVORF9JTlNUQU5DRV9ERVZJQ0VfUEFUSF9TVUJUWVBFICAgICAweDAxDQo+ICsN Cj4gK2V4dGVybiBFRklfR1VJRCBnRWZpRGV2aWNlUGF0aFByb3RvY29sR3VpZDsNCj4gKw0KPiAr I2VuZGlmDQo+IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291cmNlL0MvSW5jbHVkZS9Qcm90b2Nv bC9EZXZpY2VQYXRoVXRpbGl0aWVzLmggYi9CYXNlVG9vbHMvU291cmNlL0MvSW5jbHVkZS9Qcm90 b2NvbC9EZXZpY2VQYXRoVXRpbGl0aWVzLmgNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5k ZXggMDAwMDAwMC4uZDA0NmM4Ng0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL0Jhc2VUb29scy9T b3VyY2UvQy9JbmNsdWRlL1Byb3RvY29sL0RldmljZVBhdGhVdGlsaXRpZXMuaA0KPiBAQCAtMCww ICsxLDI5NCBAQA0KPiArLyoqIEBmaWxlDQo+ICsgIEVGSV9ERVZJQ0VfUEFUSF9VVElMSVRJRVNf UFJPVE9DT0wgYXMgZGVmaW5lZCBpbiBVRUZJIDIuMC4NCj4gKyAgVXNlIHRvIGNyZWF0ZSBhbmQg bWFuaXB1bGF0ZSBkZXZpY2UgcGF0aHMgYW5kIGRldmljZSBub2Rlcy4NCj4gKw0KPiArICBDb3B5 cmlnaHQgKGMpIDIwMTcsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxC Uj4NCj4gKyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiAr ICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29u ZGl0aW9ucyBvZiB0aGUgQlNEIExpY2Vuc2UNCj4gKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBk aXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBh dA0KPiArICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ ICsNCj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNF IE9OIEFOICJBUyBJUyIgQkFTSVMsDQo+ICsgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNF TlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ICsNCj4g KyoqLw0KPiArDQo+ICsjaWZuZGVmIF9fREVWSUNFX1BBVEhfVVRJTElUSUVTX0hfXw0KPiArI2Rl ZmluZSBfX0RFVklDRV9QQVRIX1VUSUxJVElFU19IX18NCj4gKw0KPiArLy8vDQo+ICsvLy8gRGV2 aWNlIFBhdGggVXRpbGl0aWVzIHByb3RvY29sDQo+ICsvLy8NCj4gKyNkZWZpbmUgRUZJX0RFVklD RV9QQVRIX1VUSUxJVElFU19HVUlEIFwNCj4gKyAgeyBcDQo+ICsgICAgMHgzNzliZTRlLCAweGQ3 MDYsIDB4NDM3ZCwgezB4YjAsIDB4MzcsIDB4ZWQsIDB4YjgsIDB4MmYsIDB4YjcsIDB4NzIsIDB4 YTQgfSBcDQo+ICsgIH0NCj4gKw0KPiArLyoqDQo+ICsgIFJldHVybnMgdGhlIHNpemUgb2YgdGhl IGRldmljZSBwYXRoLCBpbiBieXRlcy4NCj4gKw0KPiArICBAcGFyYW0gIERldmljZVBhdGggUG9p bnRzIHRvIHRoZSBzdGFydCBvZiB0aGUgRUZJIGRldmljZSBwYXRoLg0KPiArDQo+ICsgIEByZXR1 cm4gU2l6ZSAgU2l6ZSBvZiB0aGUgc3BlY2lmaWVkIGRldmljZSBwYXRoLCBpbiBieXRlcywgaW5j bHVkaW5nIHRoZSBlbmQtb2YtcGF0aCB0YWcuDQo+ICsgIEByZXR2YWwgMCAgICAgRGV2aWNlUGF0 aCBpcyBOVUxMDQo+ICsNCj4gKyoqLw0KPiArdHlwZWRlZg0KPiArVUlOVE4NCj4gKyggKkVGSV9E RVZJQ0VfUEFUSF9VVElMU19HRVRfREVWSUNFX1BBVEhfU0laRSkoDQo+ICsgICBDT05TVCBFRklf REVWSUNFX1BBVEhfUFJPVE9DT0wgKkRldmljZVBhdGgNCj4gKyAgKTsNCj4gKw0KPiArDQo+ICsv KioNCj4gKyAgQ3JlYXRlIGEgZHVwbGljYXRlIG9mIHRoZSBzcGVjaWZpZWQgcGF0aC4NCj4gKw0K PiArICBAcGFyYW0gIERldmljZVBhdGggUG9pbnRzIHRvIHRoZSBzb3VyY2UgRUZJIGRldmljZSBw YXRoLg0KPiArDQo+ICsgIEByZXR2YWwgUG9pbnRlciAgICBBIHBvaW50ZXIgdG8gdGhlIGR1cGxp Y2F0ZSBkZXZpY2UgcGF0aC4NCj4gKyAgQHJldHZhbCBOVUxMICAgICAgIGluc3VmZmljaWVudCBt ZW1vcnkgb3IgRGV2aWNlUGF0aCBpcyBOVUxMDQo+ICsNCj4gKyoqLw0KPiArdHlwZWRlZg0KPiAr RUZJX0RFVklDRV9QQVRIX1BST1RPQ09MKg0KPiArKCAqRUZJX0RFVklDRV9QQVRIX1VUSUxTX0RV UF9ERVZJQ0VfUEFUSCkoDQo+ICsgICBDT05TVCBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKkRl dmljZVBhdGgNCj4gKyAgKTsNCj4gKw0KPiArLyoqDQo+ICsgIENyZWF0ZSBhIG5ldyBwYXRoIGJ5 IGFwcGVuZGluZyB0aGUgc2Vjb25kIGRldmljZSBwYXRoIHRvIHRoZSBmaXJzdC4NCj4gKyAgSWYg U3JjMSBpcyBOVUxMIGFuZCBTcmMyIGlzIG5vbi1OVUxMLCB0aGVuIGEgZHVwbGljYXRlIG9mIFNy YzIgaXMgcmV0dXJuZWQuDQo+ICsgIElmIFNyYzEgaXMgbm9uLU5VTEwgYW5kIFNyYzIgaXMgTlVM TCwgdGhlbiBhIGR1cGxpY2F0ZSBvZiBTcmMxIGlzIHJldHVybmVkLg0KPiArICBJZiBTcmMxIGFu ZCBTcmMyIGFyZSBib3RoIE5VTEwsIHRoZW4gYSBjb3B5IG9mIGFuIGVuZC1vZi1kZXZpY2UtcGF0 aCBpcyByZXR1cm5lZC4NCj4gKw0KPiArICBAcGFyYW0gIFNyYzEgUG9pbnRzIHRvIHRoZSBmaXJz dCBkZXZpY2UgcGF0aC4NCj4gKyAgQHBhcmFtICBTcmMyIFBvaW50cyB0byB0aGUgc2Vjb25kIGRl dmljZSBwYXRoLg0KPiArDQo+ICsgIEByZXR2YWwgUG9pbnRlciAgQSBwb2ludGVyIHRvIHRoZSBu ZXdseSBjcmVhdGVkIGRldmljZSBwYXRoLg0KPiArICBAcmV0dmFsIE5VTEwgICAgIE1lbW9yeSBj b3VsZCBub3QgYmUgYWxsb2NhdGVkDQo+ICsNCj4gKyoqLw0KPiArdHlwZWRlZg0KPiArRUZJX0RF VklDRV9QQVRIX1BST1RPQ09MKg0KPiArKCAqRUZJX0RFVklDRV9QQVRIX1VUSUxTX0FQUEVORF9Q QVRIKSgNCj4gKyAgIENPTlNUIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqU3JjMSwNCj4gKyAg IENPTlNUIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqU3JjMg0KPiArICApOw0KPiArDQo+ICsv KioNCj4gKyAgQ3JlYXRlcyBhIG5ldyBwYXRoIGJ5IGFwcGVuZGluZyB0aGUgZGV2aWNlIG5vZGUg dG8gdGhlIGRldmljZSBwYXRoLg0KPiArICBJZiBEZXZpY2VOb2RlIGlzIE5VTEwgdGhlbiBhIGNv cHkgb2YgRGV2aWNlUGF0aCBpcyByZXR1cm5lZC4NCj4gKyAgSWYgRGV2aWNlUGF0aCBpcyBOVUxM IHRoZW4gYSBjb3B5IG9mIERldmljZU5vZGUsIGZvbGxvd2VkIGJ5IGFuIGVuZC1vZi1kZXZpY2Ug cGF0aCBkZXZpY2Ugbm9kZSBpcyByZXR1cm5lZC4NCj4gKyAgSWYgYm90aCBEZXZpY2VOb2RlIGFu ZCBEZXZpY2VQYXRoIGFyZSBOVUxMIHRoZW4gYSBjb3B5IG9mIGFuIGVuZC1vZi1kZXZpY2UtcGF0 aCBkZXZpY2Ugbm9kZSBpcyByZXR1cm5lZC4NCj4gKw0KPiArICBAcGFyYW0gIERldmljZVBhdGgg UG9pbnRzIHRvIHRoZSBkZXZpY2UgcGF0aC4NCj4gKyAgQHBhcmFtICBEZXZpY2VOb2RlIFBvaW50 cyB0byB0aGUgZGV2aWNlIG5vZGUuDQo+ICsNCj4gKyAgQHJldHZhbCBQb2ludGVyICAgIEEgcG9p bnRlciB0byB0aGUgYWxsb2NhdGVkIGRldmljZSBub2RlLg0KPiArICBAcmV0dmFsIE5VTEwgICAg ICAgVGhlcmUgd2FzIGluc3VmZmljaWVudCBtZW1vcnkuDQo+ICsNCj4gKyoqLw0KPiArdHlwZWRl Zg0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MKg0KPiArKCAqRUZJX0RFVklDRV9QQVRIX1VU SUxTX0FQUEVORF9OT0RFKSgNCj4gKyAgIENPTlNUIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAq RGV2aWNlUGF0aCwNCj4gKyAgIENPTlNUIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqRGV2aWNl Tm9kZQ0KPiArICApOw0KPiArDQo+ICsvKioNCj4gKyAgQ3JlYXRlcyBhIG5ldyBwYXRoIGJ5IGFw cGVuZGluZyB0aGUgc3BlY2lmaWVkIGRldmljZSBwYXRoIGluc3RhbmNlIHRvIHRoZSBzcGVjaWZp ZWQgZGV2aWNlIHBhdGguDQo+ICsNCj4gKyAgQHBhcmFtICBEZXZpY2VQYXRoICAgICAgICAgUG9p bnRzIHRvIHRoZSBkZXZpY2UgcGF0aC4gSWYgTlVMTCwgdGhlbiBpZ25vcmVkLg0KPiArICBAcGFy YW0gIERldmljZVBhdGhJbnN0YW5jZSBQb2ludHMgdG8gdGhlIGRldmljZSBwYXRoIGluc3RhbmNl Lg0KPiArDQo+ICsgIEByZXR2YWwgUG9pbnRlciAgICAgICAgICAgIEEgcG9pbnRlciB0byB0aGUg bmV3bHkgY3JlYXRlZCBkZXZpY2UgcGF0aA0KPiArICBAcmV0dmFsIE5VTEwgICAgICAgICAgICAg ICBNZW1vcnkgY291bGQgbm90IGJlIGFsbG9jYXRlZCBvciBEZXZpY2VQYXRoSW5zdGFuY2UgaXMg TlVMTC4NCj4gKw0KPiArKiovDQo+ICt0eXBlZGVmDQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9D T0wqDQo+ICsoICpFRklfREVWSUNFX1BBVEhfVVRJTFNfQVBQRU5EX0lOU1RBTkNFKSgNCj4gKyAg IENPTlNUIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqRGV2aWNlUGF0aCwNCj4gKyAgIENPTlNU IEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqRGV2aWNlUGF0aEluc3RhbmNlDQo+ICsgICk7DQo+ ICsNCj4gKy8qKg0KPiArICBDcmVhdGVzIGEgY29weSBvZiB0aGUgY3VycmVudCBkZXZpY2UgcGF0 aCBpbnN0YW5jZSBhbmQgcmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIG5leHQgZGV2aWNlIHBhdGgN Cj4gKyAgaW5zdGFuY2UuDQo+ICsNCj4gKyAgQHBhcmFtICBEZXZpY2VQYXRoSW5zdGFuY2UgICAg IE9uIGlucHV0LCB0aGlzIGhvbGRzIHRoZSBwb2ludGVyIHRvIHRoZSBjdXJyZW50IGRldmljZSBw YXRoDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS4gT24gb3V0 cHV0LCB0aGlzIGhvbGRzIHRoZSBwb2ludGVyIHRvIHRoZSBuZXh0DQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBkZXZpY2UgcGF0aCBpbnN0YW5jZSBvciBOVUxMIGlmIHRoZXJl IGFyZSBubyBtb3JlIGRldmljZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cGF0aCBpbnN0YW5jZXMgaW4gdGhlIGRldmljZSBwYXRoLg0KPiArICBAcGFyYW0gIERldmljZVBh dGhJbnN0YW5jZVNpemUgT24gb3V0cHV0LCB0aGlzIGhvbGRzIHRoZSBzaXplIG9mIHRoZSBkZXZp Y2UgcGF0aCBpbnN0YW5jZSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu IGJ5dGVzIG9yIHplcm8sIGlmIERldmljZVBhdGhJbnN0YW5jZSBpcyBOVUxMLg0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgTlVMTCwgdGhlbiB0aGUgaW5zdGFuY2Ugc2l6 ZSBpcyBub3Qgb3V0cHV0Lg0KPiArDQo+ICsgIEByZXR2YWwgUG9pbnRlciAgICAgICAgICAgICAg ICBBIHBvaW50ZXIgdG8gdGhlIGNvcHkgb2YgdGhlIGN1cnJlbnQgZGV2aWNlIHBhdGggaW5zdGFu Y2UuDQo+ICsgIEByZXR2YWwgTlVMTCAgICAgICAgICAgICAgICAgICBEZXZpY2VQYXRoSW5zdGFj ZSB3YXMgTlVMTCBvbiBlbnRyeSBvciB0aGVyZSB3YXMgaW5zdWZmaWNpZW50IG1lbW9yeS4NCj4g Kw0KPiArKiovDQo+ICt0eXBlZGVmDQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wqDQo+ICso ICpFRklfREVWSUNFX1BBVEhfVVRJTFNfR0VUX05FWFRfSU5TVEFOQ0UpKA0KPiArICAgICBFRklf REVWSUNFX1BBVEhfUFJPVE9DT0wgICoqRGV2aWNlUGF0aEluc3RhbmNlLA0KPiArICAgVUlOVE4g ICAgICAgICAgICAgICAgICAgICAgICAgKkRldmljZVBhdGhJbnN0YW5jZVNpemUNCj4gKyAgKTsN Cj4gKw0KPiArLyoqDQo+ICsgIENyZWF0ZXMgYSBkZXZpY2Ugbm9kZQ0KPiArDQo+ICsgIEBwYXJh bSAgTm9kZVR5cGUgICAgTm9kZVR5cGUgaXMgdGhlIGRldmljZSBub2RlIHR5cGUgKEVGSV9ERVZJ Q0VfUEFUSC5UeXBlKSBmb3INCj4gKyAgICAgICAgICAgICAgICAgICAgICB0aGUgbmV3IGRldmlj ZSBub2RlLg0KPiArICBAcGFyYW0gIE5vZGVTdWJUeXBlIE5vZGVTdWJUeXBlIGlzIHRoZSBkZXZp Y2Ugbm9kZSBzdWItdHlwZQ0KPiArICAgICAgICAgICAgICAgICAgICAgIEVGSV9ERVZJQ0VfUEFU SC5TdWJUeXBlKSBmb3IgdGhlIG5ldyBkZXZpY2Ugbm9kZS4NCj4gKyAgQHBhcmFtICBOb2RlTGVu Z3RoICBOb2RlTGVuZ3RoIGlzIHRoZSBsZW5ndGggb2YgdGhlIGRldmljZSBub2RlDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgKEVGSV9ERVZJQ0VfUEFUSC5MZW5ndGgpIGZvciB0aGUgbmV3IGRl dmljZSBub2RlLg0KPiArDQo+ICsgIEByZXR2YWwgUG9pbnRlciAgICAgQSBwb2ludGVyIHRvIHRo ZSBuZXdseSBjcmVhdGVkIGRldmljZSBub2RlLg0KPiArICBAcmV0dmFsIE5VTEwgICAgICAgIE5v ZGVMZW5ndGggaXMgbGVzcyB0aGFuDQo+ICsgICAgICAgICAgICAgICAgICAgICAgdGhlIHNpemUg b2YgdGhlIGhlYWRlciBvciB0aGVyZSB3YXMgaW5zdWZmaWNpZW50IG1lbW9yeS4NCj4gKw0KPiAr KiovDQo+ICt0eXBlZGVmDQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wqDQo+ICsoICpFRklf REVWSUNFX1BBVEhfVVRJTFNfQ1JFQVRFX05PREUpKA0KPiArICAgVUlOVDggICAgICAgICAgICAg ICAgICAgICAgICAgIE5vZGVUeXBlLA0KPiArICAgVUlOVDggICAgICAgICAgICAgICAgICAgICAg ICAgIE5vZGVTdWJUeXBlLA0KPiArICAgVUlOVDE2ICAgICAgICAgICAgICAgICAgICAgICAgIE5v ZGVMZW5ndGgNCj4gKyk7DQo+ICsNCj4gKy8qKg0KPiArICBSZXR1cm5zIHdoZXRoZXIgYSBkZXZp Y2UgcGF0aCBpcyBtdWx0aS1pbnN0YW5jZS4NCj4gKw0KPiArICBAcGFyYW0gIERldmljZVBhdGgg UG9pbnRzIHRvIHRoZSBkZXZpY2UgcGF0aC4gSWYgTlVMTCwgdGhlbiBpZ25vcmVkLg0KPiArDQo+ ICsgIEByZXR2YWwgVFJVRSAgICAgICBUaGUgZGV2aWNlIHBhdGggaGFzIG1vcmUgdGhhbiBvbmUg aW5zdGFuY2UNCj4gKyAgQHJldHZhbCBGQUxTRSAgICAgIFRoZSBkZXZpY2UgcGF0aCBpcyBlbXB0 eSBvciBjb250YWlucyBvbmx5IGEgc2luZ2xlIGluc3RhbmNlLg0KPiArDQo+ICsqKi8NCj4gK3R5 cGVkZWYNCj4gK0JPT0xFQU4NCj4gKyggKkVGSV9ERVZJQ0VfUEFUSF9VVElMU19JU19NVUxUSV9J TlNUQU5DRSkoDQo+ICsgICBDT05TVCBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICAgICAgICAq RGV2aWNlUGF0aA0KPiArICApOw0KPiArDQo+ICsvLy8NCj4gKy8vLyBUaGlzIHByb3RvY29sIGlz IHVzZWQgdG8gY3JlYXRlcyBhbmQgbWFuaXB1bGF0ZXMgZGV2aWNlIHBhdGhzIGFuZCBkZXZpY2Ug bm9kZXMuDQo+ICsvLy8NCj4gK3R5cGVkZWYgc3RydWN0IHsNCj4gKyAgRUZJX0RFVklDRV9QQVRI X1VUSUxTX0dFVF9ERVZJQ0VfUEFUSF9TSVpFIEdldERldmljZVBhdGhTaXplOw0KPiArICBFRklf REVWSUNFX1BBVEhfVVRJTFNfRFVQX0RFVklDRV9QQVRIICAgICAgRHVwbGljYXRlRGV2aWNlUGF0 aDsNCj4gKyAgRUZJX0RFVklDRV9QQVRIX1VUSUxTX0FQUEVORF9QQVRIICAgICAgICAgIEFwcGVu ZERldmljZVBhdGg7DQo+ICsgIEVGSV9ERVZJQ0VfUEFUSF9VVElMU19BUFBFTkRfTk9ERSAgICAg ICAgICBBcHBlbmREZXZpY2VOb2RlOw0KPiArICBFRklfREVWSUNFX1BBVEhfVVRJTFNfQVBQRU5E X0lOU1RBTkNFICAgICAgQXBwZW5kRGV2aWNlUGF0aEluc3RhbmNlOw0KPiArICBFRklfREVWSUNF X1BBVEhfVVRJTFNfR0VUX05FWFRfSU5TVEFOQ0UgICAgR2V0TmV4dERldmljZVBhdGhJbnN0YW5j ZTsNCj4gKyAgRUZJX0RFVklDRV9QQVRIX1VUSUxTX0lTX01VTFRJX0lOU1RBTkNFICAgIElzRGV2 aWNlUGF0aE11bHRpSW5zdGFuY2U7DQo+ICsgIEVGSV9ERVZJQ0VfUEFUSF9VVElMU19DUkVBVEVf Tk9ERSAgICAgICAgICBDcmVhdGVEZXZpY2VOb2RlOw0KPiArfSBFRklfREVWSUNFX1BBVEhfVVRJ TElUSUVTX1BST1RPQ09MOw0KPiArDQo+ICtleHRlcm4gRUZJX0dVSUQgZ0VmaURldmljZVBhdGhV dGlsaXRpZXNQcm90b2NvbEd1aWQ7DQo+ICsNCj4gK1ZPSUQNCj4gK1NldERldmljZVBhdGhFbmRO b2RlICgNCj4gKyAgIFZPSUQgICpOb2RlDQo+ICsgICk7DQo+ICsNCj4gK0JPT0xFQU4NCj4gK0lz RGV2aWNlUGF0aFZhbGlkICgNCj4gKyAgIENPTlNUIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAq RGV2aWNlUGF0aCwNCj4gKyAgIFVJTlROICAgICAgICAgICAgICAgICAgICBNYXhTaXplDQo+ICsg ICk7DQo+ICsNCj4gK1VJTlQ4DQo+ICtEZXZpY2VQYXRoVHlwZSAoDQo+ICsgICBDT05TVCBWT0lE ICAqTm9kZQ0KPiArICApOw0KPiArDQo+ICtVSU5UOA0KPiArRGV2aWNlUGF0aFN1YlR5cGUgKA0K PiArICAgQ09OU1QgVk9JRCAgKk5vZGUNCj4gKyAgKTsNCj4gKw0KPiArVUlOVE4NCj4gK0Rldmlj ZVBhdGhOb2RlTGVuZ3RoICgNCj4gKyAgIENPTlNUIFZPSUQgICpOb2RlDQo+ICsgICk7DQo+ICsN Cj4gK0VGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqDQo+ICtOZXh0RGV2aWNlUGF0aE5vZGUgKA0K PiArICAgQ09OU1QgVk9JRCAgKk5vZGUNCj4gKyAgKTsNCj4gKw0KPiArQk9PTEVBTg0KPiArSXNE ZXZpY2VQYXRoRW5kVHlwZSAoDQo+ICsgICBDT05TVCBWT0lEICAqTm9kZQ0KPiArICApOw0KPiAr DQo+ICtCT09MRUFODQo+ICtJc0RldmljZVBhdGhFbmQgKA0KPiArICAgQ09OU1QgVk9JRCAgKk5v ZGUNCj4gKyAgKTsNCj4gK0JPT0xFQU4NCj4gK0lzRGV2aWNlUGF0aEVuZEluc3RhbmNlICgNCj4g KyAgIENPTlNUIFZPSUQgICpOb2RlDQo+ICsgICk7DQo+ICsNCj4gK1VJTlQxNg0KPiArU2V0RGV2 aWNlUGF0aE5vZGVMZW5ndGggKA0KPiArICAgIFZPSUQgICpOb2RlLA0KPiArICAgVUlOVE4gICAg IExlbmd0aA0KPiArICApOw0KPiArDQo+ICtWT0lEDQo+ICtTZXREZXZpY2VQYXRoRW5kTm9kZSAo DQo+ICsgICBWT0lEICAqTm9kZQ0KPiArICApOw0KPiArDQo+ICtVSU5UTg0KPiArVWVmaURldmlj ZVBhdGhMaWJHZXREZXZpY2VQYXRoU2l6ZSAoDQo+ICsgICBDT05TVCBFRklfREVWSUNFX1BBVEhf UFJPVE9DT0wgICpEZXZpY2VQYXRoDQo+ICsgICk7DQo+ICsNCj4gK0VGSV9ERVZJQ0VfUEFUSF9Q Uk9UT0NPTCAqDQo+ICtVZWZpRGV2aWNlUGF0aExpYkR1cGxpY2F0ZURldmljZVBhdGggKA0KPiAr ICAgQ09OU1QgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICAqRGV2aWNlUGF0aA0KPiArICApOw0K PiArDQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0KPiArVWVmaURldmljZVBhdGhMaWJB cHBlbmREZXZpY2VQYXRoICgNCj4gKyAgIENPTlNUIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAg KkZpcnN0RGV2aWNlUGF0aCwNCj4gKyAgIENPTlNUIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAg KlNlY29uZERldmljZVBhdGgNCj4gKyAgKTsNCj4gKw0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RP Q09MICoNCj4gK1VlZmlEZXZpY2VQYXRoTGliQXBwZW5kRGV2aWNlUGF0aE5vZGUgKA0KPiArICAg Q09OU1QgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICAqRGV2aWNlUGF0aCwNCj4gKyAgIENPTlNU IEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgKkRldmljZVBhdGhOb2RlDQo+ICsgICk7DQo+ICsN Cj4gK0VGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqDQo+ICtVZWZpRGV2aWNlUGF0aExpYkFwcGVu ZERldmljZVBhdGhJbnN0YW5jZSAoDQo+ICsgICBDT05TVCBFRklfREVWSUNFX1BBVEhfUFJPVE9D T0wgICpEZXZpY2VQYXRoLA0KPiArICAgQ09OU1QgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICAq RGV2aWNlUGF0aEluc3RhbmNlDQo+ICsgICk7DQo+ICsNCj4gK0VGSV9ERVZJQ0VfUEFUSF9QUk9U T0NPTCAqDQo+ICtVZWZpRGV2aWNlUGF0aExpYkdldE5leHREZXZpY2VQYXRoSW5zdGFuY2UgKA0K PiArICAgIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAqKkRldmljZVBhdGgsDQo+ICsgICBV SU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgKlNpemUNCj4gKyAgKTsNCj4gKw0KPiArRUZJ X0RFVklDRV9QQVRIX1BST1RPQ09MICoNCj4gK1VlZmlEZXZpY2VQYXRoTGliQ3JlYXRlRGV2aWNl Tm9kZSAoDQo+ICsgICBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vZGVUeXBlLA0K PiArICAgVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAgICBOb2RlU3ViVHlwZSwNCj4gKyAg IFVJTlQxNiAgICAgICAgICAgICAgICAgICAgICAgICAgTm9kZUxlbmd0aA0KPiArICApOw0KPiAr DQo+ICtCT09MRUFODQo+ICtVZWZpRGV2aWNlUGF0aExpYklzRGV2aWNlUGF0aE11bHRpSW5zdGFu Y2UgKA0KPiArICAgQ09OU1QgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICAqRGV2aWNlUGF0aA0K PiArICApOw0KPiArDQo+ICsjZW5kaWYNCj4gZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2Uv Qy9NYWtlZmlsZSBiL0Jhc2VUb29scy9Tb3VyY2UvQy9NYWtlZmlsZQ0KPiBpbmRleCA1MGJlNzcz Li41NDI4MTgwIDEwMDY0NA0KPiAtLS0gYS9CYXNlVG9vbHMvU291cmNlL0MvTWFrZWZpbGUNCj4g KysrIGIvQmFzZVRvb2xzL1NvdXJjZS9DL01ha2VmaWxlDQo+IEBAIC0xLDkgKzEsOSBAQA0KPiAg IyMgQGZpbGUNCj4gICMgV2luZG93cyBtYWtlZmlsZSBmb3IgQyB0b29scyBidWlsZC4NCj4gICMN Cj4gLSMgQ29weXJpZ2h0IChjKSAyMDA5IC0gMjAxNCwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCBy aWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiArIyBDb3B5cmlnaHQgKGMpIDIwMDkgLSAyMDE3LCBJbnRl bCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ICAjIFRoaXMgcHJvZ3Jh bSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gICMgYXJlIGxpY2Vuc2VkIGFuZCBt YWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBM aWNlbnNlDQo+ICAjIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1 bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUgZm91bmQgYXQNCj4gICMgaHR0cDovL29wZW5z b3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiAgIw0KPiBAQCAtMzAsMTEgKzMw LDEyIEBAIEFQUExJQ0FUSU9OUyA9IFwNCj4gICAgR2VuVnRmIFwNCj4gICAgTHptYUNvbXByZXNz IFwNCj4gICAgU3BsaXQgXA0KPiAgICBUaWFub0NvbXByZXNzIFwNCj4gICAgVm9sSW5mbyBcDQo+ IC0gIFZmckNvbXBpbGUNCj4gKyAgVmZyQ29tcGlsZSBcDQo+ICsgIERldmljZVBhdGgNCj4NCj4g IGFsbDogbGlicyBhcHBzIGluc3RhbGwNCj4NCj4gIGxpYnM6ICQoTElCUkFSSUVTKQ0KPiAgICAg ICAgIEBlY2hvLg0KPiBkaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vQ29tbW9u L01pc2MucHkgYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9Db21tb24vTWlzYy5weQ0KPiBpbmRl eCA1OWQxYmEyLi4xNWFkOWU0IDEwMDY0NA0KPiAtLS0gYS9CYXNlVG9vbHMvU291cmNlL1B5dGhv bi9Db21tb24vTWlzYy5weQ0KPiArKysgYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9Db21tb24v TWlzYy5weQ0KPiBAQCAtMzYsMTEgKzM2LDExIEBAIGZyb20gQ29tbW9uRGF0YUNsYXNzLkRhdGFD bGFzcyBpbXBvcnQgKg0KPiAgZnJvbSBQYXJzaW5nIGltcG9ydCBHZXRTcGxpdFZhbHVlTGlzdA0K PiAgZnJvbSBDb21tb24uTG9uZ0ZpbGVQYXRoU3VwcG9ydCBpbXBvcnQgT3BlbkxvbmdGaWxlUGF0 aCBhcyBvcGVuDQo+ICBmcm9tIENvbW1vbi5NdWx0aXBsZVdvcmtzcGFjZSBpbXBvcnQgTXVsdGlw bGVXb3Jrc3BhY2UgYXMgbXdzDQo+ICBpbXBvcnQgdXVpZA0KPiAgZnJvbSBDb21tb25EYXRhQ2xh c3MuRXhjZXB0aW9ucyBpbXBvcnQgQmFkRXhwcmVzc2lvbg0KPiAtDQo+ICtpbXBvcnQgc3VicHJv Y2Vzcw0KPiAgIyMgUmVndWxhciBleHByZXNzaW9uIHVzZWQgdG8gZmluZCBvdXQgcGxhY2UgaG9s ZGVycyBpbiBzdHJpbmcgdGVtcGxhdGUNCj4gIGdQbGFjZWhvbGRlclBhdHRlcm4gPSByZS5jb21w aWxlKCJcJFx7KFteJCgpXHNdKylcfSIsIHJlLk1VTFRJTElORSB8IHJlLlVOSUNPREUpDQo+DQo+ ICAjIyBEaWN0aW9uYXJ5IHVzZWQgdG8gc3RvcmUgZmlsZSB0aW1lIHN0YW1wIGZvciBxdWljayBy ZS1hY2Nlc3MNCj4gIGdGaWxlVGltZVN0YW1wQ2FjaGUgPSB7fSAgICAjIHtmaWxlIHBhdGggOiBm aWxlIHRpbWUgc3RhbXB9DQo+IEBAIC0xNDcyLDExICsxNDcyLDQxIEBAIGRlZiBBbmFseXplUGNk RXhwcmVzc2lvbihTZXR0aW5nKToNCj4gICAgICAgICAgU3RhcnRQb3MgPSBQb3MgKyAxDQo+DQo+ ICAgICAgcmV0dXJuIEZpZWxkTGlzdA0KPg0KPiAgZGVmIFBhcnNlRGV2UGF0aFZhbHVlIChWYWx1 ZSk6DQo+IC0gICAgcGFzcw0KPiArICAgIERldlBhdGhMaXN0ID0gWyAiUGF0aCIsIkhhcmR3YXJl UGF0aCIsIlBjaSIsIlBjQ2FyZCIsIk1lbW9yeU1hcHBlZCIsIlZlbkh3IiwiQ3RybCIsIkJNQyIs IkFjcGlQYXRoIiwiQWNwaSIsIlBjaVJvb3QiLA0KPiArICAgICAgICAgICAgICAgICAgICAiUGNp ZVJvb3QiLCJGbG9wcHkiLCJLZXlib2FyZCIsIlNlcmlhbCIsIlBhcmFsbGVsUG9ydCIsIkFjcGlF eCIsIkFjcGlFeHAiLCJBY3BpQWRyIiwiTXNnIiwiQXRhIiwiU2NzaSIsDQo+ICsgICAgICAgICAg ICAgICAgICAgICJGaWJyZSIsIkZpYnJlRXgiLCJJMTM5NCIsIlVTQiIsIkkyTyIsIkluZmluaWJh bmQiLCJWZW5Nc2ciLCJWZW5QY0Fuc2kiLCJWZW5WdDEwMCIsIlZlblZ0MTAwUGx1cyIsDQo+ICsg ICAgICAgICAgICAgICAgICAgICJWZW5VdGY4IiwiVWFydEZsb3dDdHJsIiwiU0FTIiwiU2FzRXgi LCJOVk1lIiwiVUZTIiwiU0QiLCJlTU1DIiwiRGVidWdQb3J0IiwiTUFDIiwiSVB2NCIsIklQdjYi LCJVYXJ0IiwNCj4gKyAgICAgICAgICAgICAgICAgICAgIlVzYkNsYXNzIiwiVXNiQXVkaW8iLCJV c2JDRENDb250cm9sIiwiVXNiSElEIiwiVXNiSW1hZ2UiLCJVc2JQcmludGVyIiwiVXNiTWFzc1N0 b3JhZ2UiLCJVc2JIdWIiLA0KPiArICAgICAgICAgICAgICAgICAgICAiVXNiQ0RDRGF0YSIsIlVz YlNtYXJ0Q2FyZCIsIlVzYlZpZGVvIiwiVXNiRGlhZ25vc3RpYyIsIlVzYldpcmVsZXNzIiwiVXNi RGV2aWNlRmlybXdhcmVVcGRhdGUiLA0KPiArICAgICAgICAgICAgICAgICAgICAiVXNiSXJkYUJy aWRnZSIsIlVzYlRlc3RBbmRNZWFzdXJlbWVudCIsIlVzYld3aWQiLCJVbml0IiwiaVNDU0kiLCJW bGFuIiwiVXJpIiwiQmx1ZXRvb3RoIiwiV2ktRmkiLA0KPiArICAgICAgICAgICAgICAgICAgICAi TWVkaWFQYXRoIiwiSEQiLCJDRFJPTSIsIlZlbk1lZGlhIiwiTWVkaWEiLCJGdiIsIkZ2RmlsZSIs Ik9mZnNldCIsIlJhbURpc2siLCJWaXJ0dWFsRGlzayIsIlZpcnR1YWxDRCIsDQo+ICsgICAgICAg ICAgICAgICAgICAgICJQZXJzaXN0ZW50VmlydHVhbERpc2siLCJQZXJzaXN0ZW50VmlydHVhbENE IiwiQmJzUGF0aCIsIkJCUyIsIlNhdGEiIF0NCj4gKyAgICBpZiAnXFwnIGluIFZhbHVlOg0KPiAr ICAgICAgICBWYWx1ZS5yZXBsYWNlKCdcXCcsICcvJykucmVwbGFjZSgnICcsICcnKQ0KPiArICAg IGZvciBJdGVtIGluIFZhbHVlLnNwbGl0KCcvJyk6DQo+ICsgICAgICAgIEtleSA9IEl0ZW0uc3Ry aXAoKS5zcGxpdCgnKCcpWzBdDQo+ICsgICAgICAgIGlmIEtleSBub3QgaW4gRGV2UGF0aExpc3Q6 DQo+ICsgICAgICAgICAgICBwYXNzDQo+ICsNCj4gKyAgICBDbWQgPSAnRGV2aWNlUGF0aCAnICsg JyInICsgVmFsdWUgKyAnIicNCj4gKyAgICB0cnk6DQo+ICsgICAgICAgIHAgPSBzdWJwcm9jZXNz LlBvcGVuKENtZCwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN1YnByb2Nlc3MuUElQ RSwgc2hlbGw9VHJ1ZSkNCj4gKyAgICAgICAgb3V0LCBlcnIgPSBwLmNvbW11bmljYXRlKCkNCj4g KyAgICBleGNlcHQgRXhjZXB0aW9uLCBYOg0KPiArICAgICAgICByYWlzZSBCYWRFeHByZXNzaW9u KCJEZXZpY2VQYXRoOiAlcyIgJSAoc3RyKFgpKSApDQo+ICsgICAgZmluYWxseToNCj4gKyAgICAg ICAgc3VicHJvY2Vzcy5fY2xlYW51cCgpDQo+ICsgICAgICAgIHAuc3Rkb3V0LmNsb3NlKCkNCj4g KyAgICAgICAgcC5zdGRlcnIuY2xvc2UoKQ0KPiArICAgIGlmIGVycjoNCj4gKyAgICAgICAgcmFp c2UgQmFkRXhwcmVzc2lvbigiRGV2aWNlUGF0aDogJXMiICUgc3RyKGVycikpDQo+ICsgICAgU2l6 ZSA9IGxlbihvdXQuc3BsaXQoKSkNCj4gKyAgICBvdXQgPSAnLCcuam9pbihvdXQuc3BsaXQoKSkN Cj4gKyAgICByZXR1cm4gJ3snICsgb3V0ICsgJ30nLCBTaXplDQo+DQo+ICBkZWYgUGFyc2VGaWVs ZFZhbHVlIChWYWx1ZSk6DQo+ICAgICAgaWYgdHlwZShWYWx1ZSkgPT0gdHlwZSgwKToNCj4gICAg ICAgICAgcmV0dXJuIFZhbHVlLCAoVmFsdWUuYml0X2xlbmd0aCgpICsgNykgLyA4DQo+ICAgICAg aWYgdHlwZShWYWx1ZSkgPD4gdHlwZSgnJyk6DQo+IC0tDQo+IDIuNi4xLndpbmRvd3MuMQ0KPg0K PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KPiBlZGsy LWRldmVsIG1haWxpbmcgbGlzdA0KPiBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZw0KPiBodHRwczov L2xpc3RzLjAxLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2VkazItZGV2ZWwNCg==