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 57F34222EDCC2 for ; Tue, 2 Jan 2018 01:44:25 -0800 (PST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 02 Jan 2018 01:49:27 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.45,496,1508828400"; d="scan'208";a="191578565" Received: from fmsmsx108.amr.corp.intel.com ([10.18.124.206]) by fmsmga005.fm.intel.com with ESMTP; 02 Jan 2018 01:49:26 -0800 Received: from shsmsx151.ccr.corp.intel.com (10.239.6.50) by FMSMSX108.amr.corp.intel.com (10.18.124.206) with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 2 Jan 2018 01:49:24 -0800 Received: from shsmsx103.ccr.corp.intel.com ([169.254.4.213]) by SHSMSX151.ccr.corp.intel.com ([169.254.3.218]) with mapi id 14.03.0319.002; Tue, 2 Jan 2018 17:49:22 +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+dBkHO0ql91MWR27ALaNf0ZMAgACNPbA= Date: Tue, 2 Jan 2018 09:49:22 +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-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:44:25 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 VGhhbmtzLiBJIGFscmVhZHkgY3JlYXRlZCBwYXRjaGVzIGZvciBpdC4NCg0KQmVzdCBSZWdhcmRz LA0KWmh1IFlvbmdob25nDQoNCg0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IEFy ZCBCaWVzaGV1dmVsIFttYWlsdG86YXJkLmJpZXNoZXV2ZWxAbGluYXJvLm9yZ10gDQpTZW50OiBU dWVzZGF5LCBKYW51YXJ5IDAyLCAyMDE4IDU6MjQgUE0NClRvOiBaaHUsIFlvbmdob25nIDx5b25n aG9uZy56aHVAaW50ZWwuY29tPg0KQ2M6IGVkazItZGV2ZWxAbGlzdHMuMDEub3JnOyBGZW5nLCBZ dW5odWFYIDx5dW5odWF4LmZlbmdAaW50ZWwuY29tPjsgSm9ha2ltIEJlY2ggPGpvYWtpbS5iZWNo QGxpbmFyby5vcmc+DQpTdWJqZWN0OiBSZTogW2VkazJdIFtQYXRjaF0gQmFzZVRvb2xzOiBBZGQg RGV2aWNlUGF0aCBzdXBwb3J0IGZvciBQQ0QgdmFsdWVzDQoNCkhlbGxvIFlvbmdob25nLA0KDQpU aGlzIHBhdGNoIGJyZWFrcyB0aGUgYnVpbGQgb24gc29tZSB0b29sY2hhaW5zLiBQbGVhc2Ugc2Vl IGJlbG93Lg0KDQpPbiAyOCBEZWNlbWJlciAyMDE3IGF0IDAyOjE4LCBZb25naG9uZyBaaHUgPHlv bmdob25nLnpodUBpbnRlbC5jb20+IHdyb3RlOg0KPiBVc2UgQyBjb2RlIHBhcnNlIGRldmljZSBw YXRoIHRvIG91dHB1dCBoZXggc3RyaW5nLCBhbmQgUHl0aG9uDQo+IHJ1biBjb21tYW5kIHdoZW4g UENEIFZhbHVlIG5lZWQgZGV2aWNlIHBhdGggcGFyc2UuDQo+DQo+IGh0dHBzOi8vYnVnemlsbGEu dGlhbm9jb3JlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQxDQo+DQo+IENvbnRyaWJ1dGVkLXVuZGVy OiBUaWFub0NvcmUgQ29udHJpYnV0aW9uIEFncmVlbWVudCAxLjENCj4gU2lnbmVkLW9mZi1ieTog WXVuaHVhIEZlbmcgPHl1bmh1YXguZmVuZ0BpbnRlbC5jb20+DQo+IFNpZ25lZC1vZmYtYnk6IFlv bmdob25nIFpodSA8eW9uZ2hvbmcuemh1QGludGVsLmNvbT4NCj4gLS0tDQo+ICBCYXNlVG9vbHMv QmluV3JhcHBlcnMvUG9zaXhMaWtlL0RldmljZVBhdGggICAgICAgICB8ICAgMjkgKw0KPiAgQmFz ZVRvb2xzL1NvdXJjZS9CaW5hcnlGaWxlcy50eHQgICAgICAgICAgICAgICAgICAgfCAgICAzICst DQo+ICBCYXNlVG9vbHMvU291cmNlL0MvQ29tbW9uL0NvbW1vbkxpYi5jICAgICAgICAgICAgICB8 IDE2MjkgKysrKysrKysrKw0KPiAgQmFzZVRvb2xzL1NvdXJjZS9DL0NvbW1vbi9Db21tb25MaWIu aCAgICAgICAgICAgICAgfCAgMzA0ICstDQo+ICBCYXNlVG9vbHMvU291cmNlL0MvRGV2aWNlUGF0 aC9EZXZpY2VQYXRoLmMgICAgICAgICB8ICAxODYgKysNCj4gIEJhc2VUb29scy9Tb3VyY2UvQy9E ZXZpY2VQYXRoL0RldmljZVBhdGhGcm9tVGV4dC5jIHwgMzM0OSArKysrKysrKysrKysrKysrKysr Kw0KPiAgLi4uL1NvdXJjZS9DL0RldmljZVBhdGgvRGV2aWNlUGF0aFV0aWxpdGllcy5jICAgICAg fCAgODc1ICsrKysrDQo+ICBCYXNlVG9vbHMvU291cmNlL0MvRGV2aWNlUGF0aC9HTlVtYWtlZmls ZSAgICAgICAgICB8ICAgMzAgKw0KPiAgQmFzZVRvb2xzL1NvdXJjZS9DL0RldmljZVBhdGgvTWFr ZWZpbGUgICAgICAgICAgICAgfCAgIDI0ICsNCj4gIEJhc2VUb29scy9Tb3VyY2UvQy9EZXZpY2VQ YXRoL1VlZmlEZXZpY2VQYXRoTGliLmMgIHwgIDI5OCArKw0KPiAgQmFzZVRvb2xzL1NvdXJjZS9D L0RldmljZVBhdGgvVWVmaURldmljZVBhdGhMaWIuaCAgfCAgNDUyICsrKw0KPiAgQmFzZVRvb2xz L1NvdXJjZS9DL0dOVW1ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgfCAgICAzICstDQo+ICAu Li4vU291cmNlL0MvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL0JsdWV0b290aC5oICB8ICAgNjIg Kw0KPiAgQmFzZVRvb2xzL1NvdXJjZS9DL0luY2x1ZGUvUHJvdG9jb2wvRGV2aWNlUGF0aC5oICAg fCAxMzkxICsrKysrKysrDQo+ICAuLi4vQy9JbmNsdWRlL1Byb3RvY29sL0RldmljZVBhdGhVdGls aXRpZXMuaCAgICAgICB8ICAyOTQgKysNCj4gIEJhc2VUb29scy9Tb3VyY2UvQy9NYWtlZmlsZSAg ICAgICAgICAgICAgICAgICAgICAgIHwgICAgNSArLQ0KPiAgQmFzZVRvb2xzL1NvdXJjZS9QeXRo b24vQ29tbW9uL01pc2MucHkgICAgICAgICAgICAgfCAgIDM0ICstDQo+ICAxNyBmaWxlcyBjaGFu Z2VkLCA4OTU5IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pDQo+ICBjcmVhdGUgbW9kZSAx MDA3NTUgQmFzZVRvb2xzL0JpbldyYXBwZXJzL1Bvc2l4TGlrZS9EZXZpY2VQYXRoDQo+ICBjcmVh dGUgbW9kZSAxMDA2NDQgQmFzZVRvb2xzL1NvdXJjZS9DL0RldmljZVBhdGgvRGV2aWNlUGF0aC5j DQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgQmFzZVRvb2xzL1NvdXJjZS9DL0RldmljZVBhdGgvRGV2 aWNlUGF0aEZyb21UZXh0LmMNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBCYXNlVG9vbHMvU291cmNl L0MvRGV2aWNlUGF0aC9EZXZpY2VQYXRoVXRpbGl0aWVzLmMNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0 NCBCYXNlVG9vbHMvU291cmNlL0MvRGV2aWNlUGF0aC9HTlVtYWtlZmlsZQ0KPiAgY3JlYXRlIG1v ZGUgMTAwNjQ0IEJhc2VUb29scy9Tb3VyY2UvQy9EZXZpY2VQYXRoL01ha2VmaWxlDQo+ICBjcmVh dGUgbW9kZSAxMDA2NDQgQmFzZVRvb2xzL1NvdXJjZS9DL0RldmljZVBhdGgvVWVmaURldmljZVBh dGhMaWIuYw0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IEJhc2VUb29scy9Tb3VyY2UvQy9EZXZpY2VQ YXRoL1VlZmlEZXZpY2VQYXRoTGliLmgNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBCYXNlVG9vbHMv U291cmNlL0MvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL0JsdWV0b290aC5oDQo+ICBjcmVhdGUg bW9kZSAxMDA2NDQgQmFzZVRvb2xzL1NvdXJjZS9DL0luY2x1ZGUvUHJvdG9jb2wvRGV2aWNlUGF0 aC5oDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgQmFzZVRvb2xzL1NvdXJjZS9DL0luY2x1ZGUvUHJv dG9jb2wvRGV2aWNlUGF0aFV0aWxpdGllcy5oDQo+DQouLi4NCj4gZGlmZiAtLWdpdCBhL0Jhc2VU b29scy9Tb3VyY2UvQy9EZXZpY2VQYXRoL0RldmljZVBhdGguYyBiL0Jhc2VUb29scy9Tb3VyY2Uv Qy9EZXZpY2VQYXRoL0RldmljZVBhdGguYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRl eCAwMDAwMDAwLi40Yzg3MTYzDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvQmFzZVRvb2xzL1Nv dXJjZS9DL0RldmljZVBhdGgvRGV2aWNlUGF0aC5jDQo+IEBAIC0wLDAgKzEsMTg2IEBADQo+ICsv KiogQGZpbGUNCj4gKyAgRGVmaW5pdGlvbiBmb3IgRGV2aWNlIFBhdGggVG9vbC4NCj4gKw0KPiAr Q29weXJpZ2h0IChjKSAyMDE3LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZl ZC48QlI+DQo+ICtUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ ICthcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29u ZGl0aW9ucyBvZiB0aGUgQlNEIExpY2Vuc2UNCj4gK3doaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlz dHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUgZm91bmQgYXQN Cj4gK2h0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gKw0K PiArVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFO ICJBUyBJUyIgQkFTSVMsDQo+ICtXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05T IE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELg0KPiArDQo+ICsqKi8NCj4g Kw0KPiArI2luY2x1ZGUgIlVlZmlEZXZpY2VQYXRoTGliLmgiDQo+ICsNCj4gKy8vDQo+ICsvLyBV dGlsaXR5IE5hbWUNCj4gKy8vDQo+ICsjZGVmaW5lIFVUSUxJVFlfTkFNRSAgIkRldmljZVBhdGgi DQo+ICsNCj4gKy8vDQo+ICsvLyBVdGlsaXR5IHZlcnNpb24gaW5mb3JtYXRpb24NCj4gKy8vDQo+ ICsjZGVmaW5lIFVUSUxJVFlfTUFKT1JfVkVSU0lPTiAwDQo+ICsjZGVmaW5lIFVUSUxJVFlfTUlO T1JfVkVSU0lPTiAxDQo+ICsNCj4gK0VGSV9HVUlEIGdFZmlEZWJ1Z1BvcnREZXZpY2VQYXRoR3Vp ZCA9IERFVklDRV9QQVRIX01FU1NBR0lOR19ERUJVR1BPUlQ7DQo+ICtFRklfR1VJRCBnRWZpUGNB bnNpR3VpZCA9IEVGSV9QQ19BTlNJX0dVSUQ7DQo+ICtFRklfR1VJRCBnRWZpVlQxMDBHdWlkID0g RUZJX1ZUXzEwMF9HVUlEOw0KPiArRUZJX0dVSUQgZ0VmaVZUMTAwUGx1c0d1aWQgPSBFRklfVlRf MTAwX1BMVVNfR1VJRDsNCj4gK0VGSV9HVUlEIGdFZmlWVFVURjhHdWlkID0gRUZJX1ZUX1VURjhf R1VJRDsNCj4gK0VGSV9HVUlEIGdFZmlVYXJ0RGV2aWNlUGF0aEd1aWQgPSBFRklfVUFSVF9ERVZJ Q0VfUEFUSF9HVUlEOw0KPiArRUZJX0dVSUQgZ0VmaVNhc0RldmljZVBhdGhHdWlkID0gRUZJX1NB U19ERVZJQ0VfUEFUSF9HVUlEOw0KPiArRUZJX0dVSUQgZ0VmaVZpcnR1YWxEaXNrR3VpZCA9IEVG SV9WSVJUVUFMX0RJU0tfR1VJRDsNCj4gK0VGSV9HVUlEIGdFZmlWaXJ0dWFsQ2RHdWlkID0gRUZJ X1ZJUlRVQUxfQ0RfR1VJRDsNCj4gK0VGSV9HVUlEIGdFZmlQZXJzaXN0ZW50VmlydHVhbERpc2tH dWlkID0gRUZJX1BFUlNJU1RFTlRfVklSVFVBTF9ESVNLX0dVSUQ7DQo+ICtFRklfR1VJRCBnRWZp UGVyc2lzdGVudFZpcnR1YWxDZEd1aWQgPSBFRklfUEVSU0lTVEVOVF9WSVJUVUFMX0NEX0dVSUQ7 DQo+ICsNCj4gK1NUQVRJQw0KPiArVk9JRA0KPiArVmVyc2lvbiAoDQo+ICsgIFZPSUQNCj4gKykN Cj4gKy8qKysNCj4gKw0KPiArUm91dGluZSBEZXNjcmlwdGlvbjoNCj4gKw0KPiArICBEaXNwbGF5 cyB0aGUgc3RhbmRhcmQgdXRpbGl0eSBpbmZvcm1hdGlvbiB0byBTRFRPVVQNCj4gKw0KPiArQXJn dW1lbnRzOg0KPiArDQo+ICsgIE5vbmUNCj4gKw0KPiArUmV0dXJuczoNCj4gKw0KPiArICBOb25l DQo+ICsNCj4gKy0tKi8NCj4gK3sNCj4gKyAgZnByaW50ZiAoc3Rkb3V0LCAiJXMgVmVyc2lvbiAl ZC4lZCAlcyBcbiIsIFVUSUxJVFlfTkFNRSwgVVRJTElUWV9NQUpPUl9WRVJTSU9OLCBVVElMSVRZ X01JTk9SX1ZFUlNJT04sIF9fQlVJTERfVkVSU0lPTik7DQo+ICt9DQo+ICsNCj4gK1NUQVRJQw0K PiArVk9JRA0KPiArVXNhZ2UgKA0KPiArICBWT0lEDQo+ICsgICkNCj4gKy8qKysNCj4gKw0KPiAr Um91dGluZSBEZXNjcmlwdGlvbjoNCj4gKw0KPiArICBEaXNwbGF5cyB0aGUgdXRpbGl0eSB1c2Fn ZSBzeW50YXggdG8gU1RET1VUDQo+ICsNCj4gK0FyZ3VtZW50czoNCj4gKw0KPiArICBOb25lDQo+ ICsNCj4gK1JldHVybnM6DQo+ICsNCj4gKyAgTm9uZQ0KPiArDQo+ICstLSovDQo+ICt7DQo+ICsg IC8vDQo+ICsgIC8vIFN1bW1hcnkgdXNhZ2UNCj4gKyAgLy8NCj4gKyAgZnByaW50ZiAoc3Rkb3V0 LCAiXG5Vc2FnZTogJXMgW29wdGlvbnNdXG5cbiIsIFVUSUxJVFlfTkFNRSk7DQo+ICsNCj4gKyAg Ly8NCj4gKyAgLy8gQ29weXJpZ2h0IGRlY2xhcmF0aW9uDQo+ICsgIC8vDQo+ICsgIGZwcmludGYg KHN0ZG91dCwgIkNvcHlyaWdodCAoYykgMjAxNywgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdo dHMgcmVzZXJ2ZWQuXG5cbiIpOw0KPiArICAvLw0KPiArICAvLyBEZXRhaWxzIE9wdGlvbg0KPiAr ICAvLw0KPiArICBmcHJpbnRmIChzdGRvdXQsICJPcHRpb25zOlxuIik7DQo+ICsgIGZwcmludGYg KHN0ZG91dCwgIiAgRGV2aWNlUGF0aFN0cmluZyAgICAgIERldmljZSBQYXRoIHN0cmluZyBpcyBz cGVjaWZpZWQsIG5vIHNwYWNlIGNoYXJhY3Rlci5cbiINCj4gKyAgICAgICAgICAgICAgICAgICAi ICAgICAgICAgICAgICAgICAgICAgICAgRXhhbXBsZTogXCJQY2lSb290KDApL1BjaSgwLDApXCJc biIpOw0KPiArDQo+ICsgIGZwcmludGYgKHN0ZG91dCwgIiAgLS12ZXJzaW9uICAgICAgICAgICAg IFNob3cgcHJvZ3JhbSdzIHZlcnNpb24gbnVtYmVyIGFuZCBleGl0LlxuIik7DQo+ICsgIGZwcmlu dGYgKHN0ZG91dCwgIiAgLWgsIC0taGVscCAgICAgICAgICAgIFNob3cgdGhpcyBoZWxwIG1lc3Nh Z2UgYW5kIGV4aXQuXG4iKTsNCj4gK30NCj4gKw0KPiArDQo+ICt2b2lkIHByaW50X21lbSh2b2lk IGNvbnN0ICp2cCwgc2l6ZV90IG4pDQo+ICt7DQo+ICsgICAgdW5zaWduZWQgY2hhciBjb25zdCAq cCA9IHZwOw0KPiArICAgIGZvciAoc2l6ZV90IGk9MDsgaTxuOyBpKyspIHsNCg0KVGhpcyB2aW9s YXRlcyB0aGUgY29kaW5nIHN0YW5kYXJkLCBhbmQgcmVzdWx0cyBpbiB0aGUgZm9sbG93aW5nIGVy cm9yIG9uIEdDQzoNCg0KRGV2aWNlUGF0aC5jOiBJbiBmdW5jdGlvbiBgcHJpbnRfbWVtYDoNCkRl dmljZVBhdGguYzoxMDk6NTogZXJyb3I6IGBmb3JgIGxvb3AgaW5pdGlhbCBkZWNsYXJhdGlvbnMg YXJlIG9ubHkNCmFsbG93ZWQgaW4gQzk5IG1vZGUNCiAgICAgZm9yIChzaXplX3QgaT0wOyBpPG47 IGkrKykgew0KDQoNCj4gKyAgICAgICAgcHJpbnRmKCIweCUwMnggIiwgcFtpXSk7DQo+ICsgIH0N Cj4gK30NCj4gKw0KPiArVk9JRA0KPiArQXNjaWkyVW5pY29kZVN0cmluZyAoDQo+ICsgIENIQVI4 ICAgICpTdHJpbmcsDQo+ICsgIENIQVIxNiAgICpVbmlTdHJpbmcNCj4gKyApDQo+ICsvKisrDQo+ ICsNCj4gK1JvdXRpbmUgRGVzY3JpcHRpb246DQo+ICsNCj4gKyAgV3JpdGUgYXNjaWkgc3RyaW5n IGFzIHVuaWNvZGUgc3RyaW5nIGZvcm1hdCB0byBGSUxFDQo+ICsNCj4gK0FyZ3VtZW50czoNCj4g Kw0KPiArICBTdHJpbmcgICAgICAtIFBvaW50ZXIgdG8gc3RyaW5nIHRoYXQgaXMgd3JpdHRlbiB0 byBGSUxFLg0KPiArICBVbmlTdHJpbmcgICAtIFBvaW50ZXIgdG8gdW5pY29kZSBzdHJpbmcNCj4g Kw0KPiArUmV0dXJuczoNCj4gKw0KPiArICBOVUxMDQo+ICsNCj4gKy0tKi8NCj4gK3sNCj4gKyAg d2hpbGUgKCpTdHJpbmcgIT0gJ1wwJykgew0KPiArICAgICooVW5pU3RyaW5nKyspID0gKENIQVIx NikgKihTdHJpbmcrKyk7DQo+ICsgIH0NCj4gKyAgLy8NCj4gKyAgLy8gRW5kIHRoZSBVbmlTdHJp bmcgd2l0aCBhIE5VTEwuDQo+ICsgIC8vDQo+ICsgICpVbmlTdHJpbmcgPSAnXDAnOw0KPiArfQ0K PiArDQo+ICtpbnQgbWFpbihpbnQgYXJnYywgQ0hBUjggKmFyZ3ZbXSkNCj4gK3sNCj4gKyAgQ0hB UjggKiBTdHI7DQo+ICsgIENIQVIxNiogU3RyMTY7DQo+ICsgIEVGSV9ERVZJQ0VfUEFUSF9QUk9U T0NPTCAqRGV2aWNlUGF0aDsNCj4gKw0KPiArICBpZiAoYXJnYyA9PSAxKSB7DQo+ICsgICAgRXJy b3IgKE5VTEwsIDAsIDEwMDEsICJNaXNzaW5nIG9wdGlvbnMiLCAiTm8gaW5wdXQgb3B0aW9ucyBz cGVjaWZpZWQuIik7DQo+ICsgICAgVXNhZ2UgKCk7DQo+ICsgICAgcmV0dXJuIFNUQVRVU19FUlJP UjsNCj4gKyAgfQ0KPiArICBpZiAoKHN0cmljbXAgKGFyZ3ZbMV0sICItaCIpID09IDApIHx8IChz dHJpY21wIChhcmd2WzFdLCAiLS1oZWxwIikgPT0gMCkpIHsNCj4gKyAgICBWZXJzaW9uICgpOw0K PiArICAgIFVzYWdlICgpOw0KPiArICAgIHJldHVybiBTVEFUVVNfU1VDQ0VTUzsNCj4gKyAgfQ0K PiArDQo+ICsgIGlmIChzdHJpY21wIChhcmd2WzFdLCAiLS12ZXJzaW9uIikgPT0gMCkgew0KPiAr ICAgIFZlcnNpb24gKCk7DQo+ICsgICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOw0KPiArICB9DQo+ ICsgIFN0ciA9IGFyZ3ZbMV07DQo+ICsgIGlmIChTdHIgPT0gTlVMTCkgew0KPiArICAgIGZwcmlu dGYoc3RkZXJyLCAiSW52YWxpZCBvcHRpb24gdmFsdWUsIERldmljZSBQYXRoIGNhbid0IGJlIE5V TEwiKTsNCj4gKyAgICByZXR1cm4gU1RBVFVTX0VSUk9SOw0KPiArICB9DQo+ICsgIFN0cjE2ID0g KENIQVIxNiAqKW1hbGxvYygxMDI0KTsNCj4gKyAgaWYgKFN0cjE2ID09IE5VTEwpIHsNCj4gKyAg ICBmcHJpbnRmKHN0ZGVyciwgIlJlc291cmNlLCBtZW1vcnkgY2Fubm90IGJlIGFsbGNvYXRlZCIp Ow0KPiArICAgIHJldHVybiBTVEFUVVNfRVJST1I7DQo+ICsgIH0NCj4gKyAgQXNjaWkyVW5pY29k ZVN0cmluZyhTdHIsIFN0cjE2KTsNCj4gKyAgRGV2aWNlUGF0aCA9IFVlZmlEZXZpY2VQYXRoTGli Q29udmVydFRleHRUb0RldmljZVBhdGgoU3RyMTYpOw0KPiArICB3aGlsZSAoISgoRGV2aWNlUGF0 aC0+VHlwZSA9PSBFTkRfREVWSUNFX1BBVEhfVFlQRSkgJiYgKERldmljZVBhdGgtPlN1YlR5cGUg PT0gRU5EX0VOVElSRV9ERVZJQ0VfUEFUSF9TVUJUWVBFKSkgKQ0KPiArICB7DQo+ICsgICAgcHJp bnRfbWVtKERldmljZVBhdGgsIChEZXZpY2VQYXRoLT5MZW5ndGhbMF0gfCBEZXZpY2VQYXRoLT5M ZW5ndGhbMV0gPDwgOCkpOw0KPiArICAgIERldmljZVBhdGggPSAoRUZJX0RFVklDRV9QQVRIX1BS T1RPQ09MICopKChVSU5UOCAqKURldmljZVBhdGggKyAoRGV2aWNlUGF0aC0+TGVuZ3RoWzBdIHwg RGV2aWNlUGF0aC0+TGVuZ3RoWzFdIDw8IDgpKTsNCj4gKyAgfQ0KPiArICBwcmludF9tZW0oRGV2 aWNlUGF0aCwgKERldmljZVBhdGgtPkxlbmd0aFswXSB8IERldmljZVBhdGgtPkxlbmd0aFsxXSA8 PCA4KSk7DQo+ICsgIHB1dGNoYXIoJ1xuJyk7DQo+ICsgIHJldHVybiBTVEFUVVNfU1VDQ0VTUzsN Cj4gK30NCj4gZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvQy9EZXZpY2VQYXRoL0Rldmlj ZVBhdGhGcm9tVGV4dC5jIGIvQmFzZVRvb2xzL1NvdXJjZS9DL0RldmljZVBhdGgvRGV2aWNlUGF0 aEZyb21UZXh0LmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMC4uM2Qy ZjVhOA0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL0Jhc2VUb29scy9Tb3VyY2UvQy9EZXZpY2VQ YXRoL0RldmljZVBhdGhGcm9tVGV4dC5jDQo+IEBAIC0wLDAgKzEsMzM0OSBAQA0KPiArLyoqIEBm aWxlDQo+ICsgIERldmljZVBhdGhGcm9tVGV4dCBwcm90b2NvbCBhcyBkZWZpbmVkIGluIHRoZSBV RUZJIDIuMCBzcGVjaWZpY2F0aW9uLg0KPiArDQo+ICtDb3B5cmlnaHQgKGMpIDIwMTcsIEludGVs IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gK1RoaXMgcHJvZ3JhbSBh bmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gK2FyZSBsaWNlbnNlZCBhbmQgbWFkZSBh dmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGljZW5z ZQ0KPiArd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0 IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KPiAraHR0cDovL29wZW5zb3VyY2Uub3Jn L2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiArDQo+ICtUSEUgUFJPR1JBTSBJUyBESVNUUklC VVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIiBCQVNJUywNCj4gK1dJVEhP VVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBS RVNTIE9SIElNUExJRUQuDQo+ICsNCj4gKyoqLw0KPiArDQo+ICsjaW5jbHVkZSAiVWVmaURldmlj ZVBhdGhMaWIuaCINCj4gKw0KPiArLyoqDQo+ICsNCj4gKyAgRHVwbGljYXRlcyBhIHN0cmluZy4N Cj4gKw0KPiArICBAcGFyYW0gIFNyYyAgU291cmNlIHN0cmluZy4NCj4gKw0KPiArICBAcmV0dXJu IFRoZSBkdXBsaWNhdGVkIHN0cmluZy4NCj4gKw0KPiArKiovDQo+ICtDSEFSMTYgKg0KPiArVWVm aURldmljZVBhdGhMaWJTdHJEdXBsaWNhdGUgKA0KPiArICAgQ09OU1QgQ0hBUjE2ICAqU3JjDQo+ ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIEFsbG9jYXRlQ29weVBvb2wgKFN0clNpemUgKFNyYyks IFNyYyk7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArDQo+ICsgIEdldCBwYXJhbWV0ZXIgaW4gYSBw YWlyIG9mIHBhcmVudGhlc2VzIGZvbGxvdyB0aGUgZ2l2ZW4gbm9kZSBuYW1lLg0KPiArICBGb3Ig ZXhhbXBsZSwgZ2l2ZW4gdGhlICJQY2koMCwxKSIgYW5kIE5vZGVOYW1lICJQY2kiLCBpdCByZXR1 cm5zICIwLDEiLg0KPiArDQo+ICsgIEBwYXJhbSAgU3RyICAgICAgRGV2aWNlIFBhdGggVGV4dC4N Cj4gKyAgQHBhcmFtICBOb2RlTmFtZSBOYW1lIG9mIHRoZSBub2RlLg0KPiArDQo+ICsgIEByZXR1 cm4gUGFyYW1ldGVyIHRleHQgZm9yIHRoZSBub2RlLg0KPiArDQo+ICsqKi8NCj4gK0NIQVIxNiAq DQo+ICtHZXRQYXJhbUJ5Tm9kZU5hbWUgKA0KPiArICAgQ0hBUjE2ICpTdHIsDQo+ICsgICBDSEFS MTYgKk5vZGVOYW1lDQo+ICsgICkNCj4gK3sNCj4gKyAgQ0hBUjE2ICAqUGFyYW1TdHI7DQo+ICsg IENIQVIxNiAgKlN0clBvaW50ZXI7DQo+ICsgIFVJTlROICAgTm9kZU5hbWVMZW5ndGg7DQo+ICsg IFVJTlROICAgUGFyYW1ldGVyTGVuZ3RoOw0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIENoZWNrIHdo ZXRoZXIgdGhlIG5vZGUgbmFtZSBtYXRjaHMNCj4gKyAgLy8NCj4gKyAgTm9kZU5hbWVMZW5ndGgg PSBTdHJMZW4gKE5vZGVOYW1lKTsNCj4gKyAgaWYgKFN0cm5DbXAgKFN0ciwgTm9kZU5hbWUsIE5v ZGVOYW1lTGVuZ3RoKSAhPSAwKSB7DQo+ICsgICAgcmV0dXJuIE5VTEw7DQo+ICsgIH0NCj4gKw0K PiArICBQYXJhbVN0ciA9IFN0ciArIE5vZGVOYW1lTGVuZ3RoOw0KPiArICBpZiAoIUlTX0xFRlRf UEFSRU5USCAoKlBhcmFtU3RyKSkgew0KPiArICAgIHJldHVybiBOVUxMOw0KPiArICB9DQo+ICsN Cj4gKyAgLy8NCj4gKyAgLy8gU2tpcCB0aGUgZm91bmQgJygnIGFuZCBmaW5kIGZpcnN0IG9jY3Vy cmVuY2Ugb2YgJyknDQo+ICsgIC8vDQo+ICsgIFBhcmFtU3RyKys7DQo+ICsgIFBhcmFtZXRlckxl bmd0aCA9IDA7DQo+ICsgIFN0clBvaW50ZXIgPSBQYXJhbVN0cjsNCj4gKyAgd2hpbGUgKCFJU19O VUxMICgqU3RyUG9pbnRlcikpIHsNCj4gKyAgICBpZiAoSVNfUklHSFRfUEFSRU5USCAoKlN0clBv aW50ZXIpKSB7DQo+ICsgICAgICBicmVhazsNCj4gKyAgICB9DQo+ICsgICAgU3RyUG9pbnRlcisr Ow0KPiArICAgIFBhcmFtZXRlckxlbmd0aCsrOw0KPiArICB9DQo+ICsgIGlmIChJU19OVUxMICgq U3RyUG9pbnRlcikpIHsNCj4gKyAgICAvLw0KPiArICAgIC8vICcpJyBub3QgZm91bmQNCj4gKyAg ICAvLw0KPiArICAgIHJldHVybiBOVUxMOw0KPiArICB9DQo+ICsNCj4gKyAgUGFyYW1TdHIgPSBB bGxvY2F0ZUNvcHlQb29sICgoUGFyYW1ldGVyTGVuZ3RoICsgMSkgKiBzaXplb2YgKENIQVIxNiks IFBhcmFtU3RyKTsNCj4gKyAgaWYgKFBhcmFtU3RyID09IE5VTEwpIHsNCj4gKyAgICByZXR1cm4g TlVMTDsNCj4gKyAgfQ0KPiArICAvLw0KPiArICAvLyBUZXJtaW5hdGUgdGhlIHBhcmFtZXRlciBz dHJpbmcNCj4gKyAgLy8NCj4gKyAgUGFyYW1TdHJbUGFyYW1ldGVyTGVuZ3RoXSA9IEwnXDAnOw0K PiArDQo+ICsgIHJldHVybiBQYXJhbVN0cjsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIEdldHMg dGhlIG5leHQgcGFyYW1ldGVyIHN0cmluZyBmcm9tIHRoZSBsaXN0Lg0KPiArDQo+ICsgIEBwYXJh bSBMaXN0ICAgICAgICAgICAgQSBzdHJpbmcgbGlzdCBzZXBhcmF0ZWQgYnkgdGhlIHNwZWNpZmll ZCBzZXBhcmF0b3INCj4gKw0KPiArICBAcmV0dXJuIEEgcG9pbnRlciB0byB0aGUgY3VycmVudCBz dWItc3RyaW5nDQo+ICsNCj4gKyoqLw0KPiArQ0hBUjE2ICoNCj4gK0dldE5leHRQYXJhbVN0ciAo DQo+ICsgICAgQ0hBUjE2ICoqTGlzdA0KPiArICApDQo+ICt7DQo+ICsgIC8vDQo+ICsgIC8vIFRo ZSBzZXBhcmF0b3IgaXMgY29tbWENCj4gKyAgLy8NCj4gKyAgcmV0dXJuIFNwbGl0U3RyIChMaXN0 LCBMJywnKTsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIEdldCBvbmUgZGV2aWNlIG5vZGUgZnJv bSBlbnRpcmUgZGV2aWNlIHBhdGggdGV4dC4NCj4gKw0KPiArICBAcGFyYW0gRGV2aWNlUGF0aCAg ICAgIE9uIGlucHV0LCB0aGUgY3VycmVudCBEZXZpY2UgUGF0aCBub2RlOyBvbiBvdXRwdXQsIHRo ZSBuZXh0IGRldmljZSBwYXRoIG5vZGUNCj4gKyAgQHBhcmFtIElzSW5zdGFuY2VFbmQgICBUaGlz IG5vZGUgaXMgdGhlIGVuZCBvZiBhIGRldmljZSBwYXRoIGluc3RhbmNlDQo+ICsNCj4gKyAgQHJl dHVybiBBIGRldmljZSBub2RlIHRleHQgb3IgTlVMTCBpZiBubyBtb3JlIGRldmljZSBub2RlIGF2 YWlsYWJsZQ0KPiArDQo+ICsqKi8NCj4gK0NIQVIxNiAqDQo+ICtHZXROZXh0RGV2aWNlTm9kZVN0 ciAoDQo+ICsgICAgQ0hBUjE2ICAgKipEZXZpY2VQYXRoLA0KPiArICAgICAgQk9PTEVBTiAgKklz SW5zdGFuY2VFbmQNCj4gKyAgKQ0KPiArew0KPiArICBDSEFSMTYgICpTdHI7DQo+ICsgIENIQVIx NiAgKlJldHVyblN0cjsNCj4gKyAgVUlOVE4gICBQYXJlbnRoZXNlc1N0YWNrOw0KPiArDQo+ICsg IFN0ciA9ICpEZXZpY2VQYXRoOw0KPiArICBpZiAoSVNfTlVMTCAoKlN0cikpIHsNCj4gKyAgICBy ZXR1cm4gTlVMTDsNCj4gKyAgfQ0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIFNraXAgdGhlIGxlYWRp bmcgJy8nLCAnKCcsICcpJyBhbmQgJywnDQo+ICsgIC8vDQo+ICsgIHdoaWxlICghSVNfTlVMTCAo KlN0cikpIHsNCj4gKyAgICBpZiAoIUlTX1NMQVNIICgqU3RyKSAmJg0KPiArICAgICAgICAhSVNf Q09NTUEgKCpTdHIpICYmDQo+ICsgICAgICAgICFJU19MRUZUX1BBUkVOVEggKCpTdHIpICYmDQo+ ICsgICAgICAgICFJU19SSUdIVF9QQVJFTlRIICgqU3RyKSkgew0KPiArICAgICAgYnJlYWs7DQo+ ICsgICAgfQ0KPiArICAgIFN0cisrOw0KPiArICB9DQo+ICsNCj4gKyAgUmV0dXJuU3RyID0gU3Ry Ow0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIFNjYW4gZm9yIHRoZSBzZXBhcmF0b3Igb2YgdGhpcyBk ZXZpY2Ugbm9kZSwgJy8nIG9yICcsJw0KPiArICAvLw0KPiArICBQYXJlbnRoZXNlc1N0YWNrID0g MDsNCj4gKyAgd2hpbGUgKCFJU19OVUxMICgqU3RyKSkgew0KPiArICAgIGlmICgoSVNfQ09NTUEg KCpTdHIpIHx8IElTX1NMQVNIICgqU3RyKSkgJiYgKFBhcmVudGhlc2VzU3RhY2sgPT0gMCkpIHsN Cj4gKyAgICAgIGJyZWFrOw0KPiArICAgIH0NCj4gKw0KPiArICAgIGlmIChJU19MRUZUX1BBUkVO VEggKCpTdHIpKSB7DQo+ICsgICAgICBQYXJlbnRoZXNlc1N0YWNrKys7DQo+ICsgICAgfSBlbHNl IGlmIChJU19SSUdIVF9QQVJFTlRIICgqU3RyKSkgew0KPiArICAgICAgUGFyZW50aGVzZXNTdGFj ay0tOw0KPiArICAgIH0NCj4gKw0KPiArICAgIFN0cisrOw0KPiArICB9DQo+ICsNCj4gKyAgaWYg KFBhcmVudGhlc2VzU3RhY2sgIT0gMCkgew0KPiArICAgIC8vDQo+ICsgICAgLy8gVGhlICcoJyBk b2Vzbid0IHBhaXIgd2l0aCAnKScsIGludmFsaWQgZGV2aWNlIHBhdGggdGV4dA0KPiArICAgIC8v DQo+ICsgICAgcmV0dXJuIE5VTEw7DQo+ICsgIH0NCj4gKw0KPiArICBpZiAoSVNfQ09NTUEgKCpT dHIpKSB7DQo+ICsgICAgKklzSW5zdGFuY2VFbmQgPSBUUlVFOw0KPiArICAgICpTdHIgPSBMJ1ww JzsNCj4gKyAgICBTdHIrKzsNCj4gKyAgfSBlbHNlIHsNCj4gKyAgICAqSXNJbnN0YW5jZUVuZCA9 IEZBTFNFOw0KPiArICAgIGlmICghSVNfTlVMTCAoKlN0cikpIHsNCj4gKyAgICAgICpTdHIgPSBM J1wwJzsNCj4gKyAgICAgIFN0cisrOw0KPiArICAgIH0NCj4gKyAgfQ0KPiArDQo+ICsgICpEZXZp Y2VQYXRoID0gU3RyOw0KPiArDQo+ICsgIHJldHVybiBSZXR1cm5TdHI7DQo+ICt9DQo+ICsNCj4g Ky8qKg0KPiArICBDb252ZXJ0cyBhIGdlbmVyaWMgdGV4dCBkZXZpY2UgcGF0aCBub2RlIHRvIGRl dmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArICBAcGFyYW0gVHlwZSAgICAgICAgICAgIFRo ZSB0eXBlIG9mIHRoZSBkZXZpY2UgcGF0aCBub2RlLg0KPiArICBAcGFyYW0gVGV4dERldmljZU5v ZGUgIFRoZSBpbnB1dCB0ZXh0IGRldmljZSBwYXRoIG5vZGUuDQo+ICsNCj4gKyAgQHJldHVybiBB IHBvaW50ZXIgdG8gZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiArKiovDQo+ICtFRklfREVWSUNF X1BBVEhfUFJPVE9DT0wgKg0KPiArRGV2UGF0aEZyb21UZXh0R2VuZXJpY1BhdGggKA0KPiArICAg VUlOVDggIFR5cGUsDQo+ICsgICBDSEFSMTYgKlRleHREZXZpY2VOb2RlDQo+ICsgICkNCj4gK3sN Cj4gKyAgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICpOb2RlOw0KPiArICBDSEFSMTYgICAgICAg ICAgICAgICAgICAgKlN1YnR5cGVTdHI7DQo+ICsgIENIQVIxNiAgICAgICAgICAgICAgICAgICAq RGF0YVN0cjsNCj4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgIERhdGFMZW5ndGg7DQo+ICsN Cj4gKyAgU3VidHlwZVN0ciA9IEdldE5leHRQYXJhbVN0ciAoJlRleHREZXZpY2VOb2RlKTsNCj4g KyAgRGF0YVN0ciAgICA9IEdldE5leHRQYXJhbVN0ciAoJlRleHREZXZpY2VOb2RlKTsNCj4gKw0K PiArICBpZiAoRGF0YVN0ciA9PSBOVUxMKSB7DQo+ICsgICAgRGF0YUxlbmd0aCA9IDA7DQo+ICsg IH0gZWxzZSB7DQo+ICsgICAgRGF0YUxlbmd0aCA9IFN0ckxlbiAoRGF0YVN0cikgLyAyOw0KPiAr ICB9DQo+ICsgIE5vZGUgPSBDcmVhdGVEZXZpY2VOb2RlICgNCj4gKyAgICAgICAgICAgVHlwZSwN Cj4gKyAgICAgICAgICAgKFVJTlQ4KSBTdHJ0b2kgKFN1YnR5cGVTdHIpLA0KPiArICAgICAgICAg ICAoVUlOVDE2KSAoc2l6ZW9mIChFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wpICsgRGF0YUxlbmd0 aCkNCj4gKyAgICAgICAgICAgKTsNCj4gKw0KPiArICBTdHJIZXhUb0J5dGVzIChEYXRhU3RyLCBE YXRhTGVuZ3RoICogMiwgKFVJTlQ4ICopIChOb2RlICsgMSksIERhdGFMZW5ndGgpOw0KPiArICBy ZXR1cm4gTm9kZTsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIENvbnZlcnRzIGEgZ2VuZXJpYyB0 ZXh0IGRldmljZSBwYXRoIG5vZGUgdG8gZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsg IEBwYXJhbSBUZXh0RGV2aWNlTm9kZSAgVGhlIGlucHV0IFRleHQgZGV2aWNlIHBhdGggbm9kZS4N Cj4gKw0KPiArICBAcmV0dXJuIEEgcG9pbnRlciB0byBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ ICsNCj4gKyoqLw0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoNCj4gK0RldlBhdGhGcm9t VGV4dFBhdGggKA0KPiArICAgQ0hBUjE2ICpUZXh0RGV2aWNlTm9kZQ0KPiArICApDQo+ICt7DQo+ ICsgIENIQVIxNiAgICAgICAgICAgICAgICAgICAqVHlwZVN0cjsNCj4gKw0KPiArICBUeXBlU3Ry ICAgID0gR2V0TmV4dFBhcmFtU3RyICgmVGV4dERldmljZU5vZGUpOw0KPiArDQo+ICsgIHJldHVy biBEZXZQYXRoRnJvbVRleHRHZW5lcmljUGF0aCAoKFVJTlQ4KSBTdHJ0b2kgKFR5cGVTdHIpLCBU ZXh0RGV2aWNlTm9kZSk7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBDb252ZXJ0cyBhIGdlbmVy aWMgaGFyZHdhcmUgdGV4dCBkZXZpY2UgcGF0aCBub2RlIHRvIEhhcmR3YXJlIGRldmljZSBwYXRo IHN0cnVjdHVyZS4NCj4gKw0KPiArICBAcGFyYW0gVGV4dERldmljZU5vZGUgIFRoZSBpbnB1dCBU ZXh0IGRldmljZSBwYXRoIG5vZGUuDQo+ICsNCj4gKyAgQHJldHVybiBBIHBvaW50ZXIgdG8gSGFy ZHdhcmUgZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9ERVZJQ0Vf UEFUSF9QUk9UT0NPTCAqDQo+ICtEZXZQYXRoRnJvbVRleHRIYXJkd2FyZVBhdGggKA0KPiArICAg Q0hBUjE2ICpUZXh0RGV2aWNlTm9kZQ0KPiArICApDQo+ICt7DQo+ICsgIHJldHVybiBEZXZQYXRo RnJvbVRleHRHZW5lcmljUGF0aCAoSEFSRFdBUkVfREVWSUNFX1BBVEgsIFRleHREZXZpY2VOb2Rl KTsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIENvbnZlcnRzIGEgdGV4dCBkZXZpY2UgcGF0aCBu b2RlIHRvIEhhcmR3YXJlIFBDSSBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyAgQHBh cmFtIFRleHREZXZpY2VOb2RlICBUaGUgaW5wdXQgVGV4dCBkZXZpY2UgcGF0aCBub2RlLg0KPiAr DQo+ICsgIEByZXR1cm4gQSBwb2ludGVyIHRvIEhhcmR3YXJlIFBDSSBkZXZpY2UgcGF0aCBzdHJ1 Y3R1cmUuDQo+ICsNCj4gKyoqLw0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoNCj4gK0Rl dlBhdGhGcm9tVGV4dFBjaSAoDQo+ICsgICBDSEFSMTYgKlRleHREZXZpY2VOb2RlDQo+ICsgICkN Cj4gK3sNCj4gKyAgQ0hBUjE2ICAgICAgICAgICpGdW5jdGlvblN0cjsNCj4gKyAgQ0hBUjE2ICAg ICAgICAgICpEZXZpY2VTdHI7DQo+ICsgIFBDSV9ERVZJQ0VfUEFUSCAqUGNpOw0KPiArDQo+ICsg IERldmljZVN0ciAgID0gR2V0TmV4dFBhcmFtU3RyICgmVGV4dERldmljZU5vZGUpOw0KPiArICBG dW5jdGlvblN0ciA9IEdldE5leHRQYXJhbVN0ciAoJlRleHREZXZpY2VOb2RlKTsNCj4gKyAgUGNp ICAgICAgICAgPSAoUENJX0RFVklDRV9QQVRIICopIENyZWF0ZURldmljZU5vZGUgKA0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQVJEV0FSRV9ERVZJQ0VfUEFUSCwN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSFdfUENJX0RQLA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVUlOVDE2KSBzaXplb2YgKFBD SV9ERVZJQ0VfUEFUSCkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KTsNCj4gKw0KPiArICBQY2ktPkZ1bmN0aW9uID0gKFVJTlQ4KSBTdHJ0b2kgKEZ1bmN0aW9uU3Ry KTsNCj4gKyAgUGNpLT5EZXZpY2UgICA9IChVSU5UOCkgU3RydG9pIChEZXZpY2VTdHIpOw0KPiAr DQo+ICsgIHJldHVybiAoRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICopIFBjaTsNCj4gK30NCj4g Kw0KPiArLyoqDQo+ICsgIENvbnZlcnRzIGEgdGV4dCBkZXZpY2UgcGF0aCBub2RlIHRvIEhhcmR3 YXJlIFBDIGNhcmQgZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsgIEBwYXJhbSBUZXh0 RGV2aWNlTm9kZSAgVGhlIGlucHV0IFRleHQgZGV2aWNlIHBhdGggbm9kZS4NCj4gKw0KPiArICBA cmV0dXJuIEEgcG9pbnRlciB0byBIYXJkd2FyZSBQQyBjYXJkIGRldmljZSBwYXRoIHN0cnVjdHVy ZS4NCj4gKw0KPiArKiovDQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0KPiArRGV2UGF0 aEZyb21UZXh0UGNDYXJkICgNCj4gKyAgIENIQVIxNiAqVGV4dERldmljZU5vZGUNCj4gKyAgKQ0K PiArew0KPiArICBDSEFSMTYgICAgICAgICAgICAgICpGdW5jdGlvbk51bWJlclN0cjsNCj4gKyAg UENDQVJEX0RFVklDRV9QQVRIICAqUGNjYXJkOw0KPiArDQo+ICsgIEZ1bmN0aW9uTnVtYmVyU3Ry ID0gR2V0TmV4dFBhcmFtU3RyICgmVGV4dERldmljZU5vZGUpOw0KPiArICBQY2NhcmQgICAgICAg ICAgICA9IChQQ0NBUkRfREVWSUNFX1BBVEggKikgQ3JlYXRlRGV2aWNlTm9kZSAoDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBUkRXQVJFX0RFVklD RV9QQVRILA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBIV19QQ0NBUkRfRFAsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChVSU5UMTYpIHNpemVvZiAoUENDQVJEX0RFVklDRV9QQVRIKQ0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KPiArDQo+ICsgIFBj Y2FyZC0+RnVuY3Rpb25OdW1iZXIgID0gKFVJTlQ4KSBTdHJ0b2kgKEZ1bmN0aW9uTnVtYmVyU3Ry KTsNCj4gKw0KPiArICByZXR1cm4gKEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqKSBQY2NhcmQ7 DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBDb252ZXJ0cyBhIHRleHQgZGV2aWNlIHBhdGggbm9k ZSB0byBIYXJkd2FyZSBtZW1vcnkgbWFwIGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiAr ICBAcGFyYW0gVGV4dERldmljZU5vZGUgIFRoZSBpbnB1dCBUZXh0IGRldmljZSBwYXRoIG5vZGUu DQo+ICsNCj4gKyAgQHJldHVybiBBIHBvaW50ZXIgdG8gSGFyZHdhcmUgbWVtb3J5IG1hcCBkZXZp Y2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyoqLw0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RP Q09MICoNCj4gK0RldlBhdGhGcm9tVGV4dE1lbW9yeU1hcHBlZCAoDQo+ICsgICBDSEFSMTYgKlRl eHREZXZpY2VOb2RlDQo+ICsgICkNCj4gK3sNCj4gKyAgQ0hBUjE2ICAgICAgICAgICAgICAqTWVt b3J5VHlwZVN0cjsNCj4gKyAgQ0hBUjE2ICAgICAgICAgICAgICAqU3RhcnRpbmdBZGRyZXNzU3Ry Ow0KPiArICBDSEFSMTYgICAgICAgICAgICAgICpFbmRpbmdBZGRyZXNzU3RyOw0KPiArICBNRU1N QVBfREVWSUNFX1BBVEggICpNZW1NYXA7DQo+ICsNCj4gKyAgTWVtb3J5VHlwZVN0ciAgICAgID0g R2V0TmV4dFBhcmFtU3RyICgmVGV4dERldmljZU5vZGUpOw0KPiArICBTdGFydGluZ0FkZHJlc3NT dHIgPSBHZXROZXh0UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsgIEVuZGluZ0FkZHJl c3NTdHIgICA9IEdldE5leHRQYXJhbVN0ciAoJlRleHREZXZpY2VOb2RlKTsNCj4gKyAgTWVtTWFw ICAgICAgICAgICAgID0gKE1FTU1BUF9ERVZJQ0VfUEFUSCAqKSBDcmVhdGVEZXZpY2VOb2RlICgN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFSRFdB UkVfREVWSUNFX1BBVEgsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEhXX01FTU1BUF9EUCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKFVJTlQxNikgc2l6ZW9mIChNRU1NQVBfREVWSUNFX1BBVEgpDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQo+ICsN Cj4gKyAgTWVtTWFwLT5NZW1vcnlUeXBlID0gKFVJTlQzMikgU3RydG9pIChNZW1vcnlUeXBlU3Ry KTsNCj4gKyAgU3RydG9pNjQgKFN0YXJ0aW5nQWRkcmVzc1N0ciwgJk1lbU1hcC0+U3RhcnRpbmdB ZGRyZXNzKTsNCj4gKyAgU3RydG9pNjQgKEVuZGluZ0FkZHJlc3NTdHIsICZNZW1NYXAtPkVuZGlu Z0FkZHJlc3MpOw0KPiArDQo+ICsgIHJldHVybiAoRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICop IE1lbU1hcDsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIENvbnZlcnRzIGEgdGV4dCBkZXZpY2Ug cGF0aCBub2RlIHRvIFZlbmRvciBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUgYmFzZWQgb24gdGhlIGlu cHV0IFR5cGUNCj4gKyAgYW5kIFN1YlR5cGUuDQo+ICsNCj4gKyAgQHBhcmFtIFRleHREZXZpY2VO b2RlICBUaGUgaW5wdXQgVGV4dCBkZXZpY2UgcGF0aCBub2RlLg0KPiArICBAcGFyYW0gVHlwZSAg ICAgICAgICAgIFRoZSB0eXBlIG9mIGRldmljZSBwYXRoIG5vZGUuDQo+ICsgIEBwYXJhbSBTdWJU eXBlICAgICAgICAgVGhlIHN1YnR5cGUgb2YgZGV2aWNlIHBhdGggbm9kZS4NCj4gKw0KPiArICBA cmV0dXJuIEEgcG9pbnRlciB0byB0aGUgbmV3bHktY3JlYXRlZCBWZW5kb3IgZGV2aWNlIHBhdGgg c3RydWN0dXJlLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqDQo+ ICtDb252ZXJ0RnJvbVRleHRWZW5kb3IgKA0KPiArICAgQ0hBUjE2ICpUZXh0RGV2aWNlTm9kZSwN Cj4gKyAgIFVJTlQ4ICBUeXBlLA0KPiArICAgVUlOVDggIFN1YlR5cGUNCj4gKyAgKQ0KPiArew0K PiArICBDSEFSMTYgICAgICAgICAgICAgICpHdWlkU3RyOw0KPiArICBDSEFSMTYgICAgICAgICAg ICAgICpEYXRhU3RyOw0KPiArICBVSU5UTiAgICAgICAgICAgICAgIExlbmd0aDsNCj4gKyAgVkVO RE9SX0RFVklDRV9QQVRIICAqVmVuZG9yOw0KPiArDQo+ICsgIEd1aWRTdHIgPSBHZXROZXh0UGFy YW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsNCj4gKyAgRGF0YVN0ciA9IEdldE5leHRQYXJh bVN0ciAoJlRleHREZXZpY2VOb2RlKTsNCj4gKyAgTGVuZ3RoICA9IFN0ckxlbiAoRGF0YVN0cik7 DQo+ICsgIC8vDQo+ICsgIC8vIFR3byBoZXggY2hhcmFjdGVycyBtYWtlIHVwIDEgYnVmZmVyIGJ5 dGUNCj4gKyAgLy8NCj4gKyAgTGVuZ3RoICA9IChMZW5ndGggKyAxKSAvIDI7DQo+ICsNCj4gKyAg VmVuZG9yICA9IChWRU5ET1JfREVWSUNFX1BBVEggKikgQ3JlYXRlRGV2aWNlTm9kZSAoDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSwNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBTdWJUeXBlLA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChVSU5UMTYpIChzaXplb2YgKFZFTkRPUl9ERVZJQ0VfUEFUSCkg KyBMZW5ndGgpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCj4g Kw0KPiArICBTdHJUb0d1aWQgKEd1aWRTdHIsICZWZW5kb3ItPkd1aWQpOw0KPiArICBTdHJIZXhU b0J5dGVzIChEYXRhU3RyLCBMZW5ndGggKiAyLCAoVUlOVDggKikgKFZlbmRvciArIDEpLCBMZW5n dGgpOw0KPiArDQo+ICsgIHJldHVybiAoRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICopIFZlbmRv cjsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIENvbnZlcnRzIGEgdGV4dCBkZXZpY2UgcGF0aCBu b2RlIHRvIFZlbmRvciBIYXJkd2FyZSBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyAg QHBhcmFtIFRleHREZXZpY2VOb2RlICBUaGUgaW5wdXQgVGV4dCBkZXZpY2UgcGF0aCBub2RlLg0K PiArDQo+ICsgIEByZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBuZXdseS1jcmVhdGVkIFZlbmRvciBI YXJkd2FyZSBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyoqLw0KPiArRUZJX0RFVklD RV9QQVRIX1BST1RPQ09MICoNCj4gK0RldlBhdGhGcm9tVGV4dFZlbkh3ICgNCj4gKyAgIENIQVIx NiAqVGV4dERldmljZU5vZGUNCj4gKyAgKQ0KPiArew0KPiArICByZXR1cm4gQ29udmVydEZyb21U ZXh0VmVuZG9yICgNCj4gKyAgICAgICAgICAgVGV4dERldmljZU5vZGUsDQo+ICsgICAgICAgICAg IEhBUkRXQVJFX0RFVklDRV9QQVRILA0KPiArICAgICAgICAgICBIV19WRU5ET1JfRFANCj4gKyAg ICAgICAgICAgKTsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIENvbnZlcnRzIGEgdGV4dCBkZXZp Y2UgcGF0aCBub2RlIHRvIEhhcmR3YXJlIENvbnRyb2xsZXIgZGV2aWNlIHBhdGggc3RydWN0dXJl Lg0KPiArDQo+ICsgIEBwYXJhbSBUZXh0RGV2aWNlTm9kZSAgVGhlIGlucHV0IFRleHQgZGV2aWNl IHBhdGggbm9kZS4NCj4gKw0KPiArICBAcmV0dXJuIEEgcG9pbnRlciB0byB0aGUgbmV3bHktY3Jl YXRlZCBIYXJkd2FyZSBDb250cm9sbGVyIGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiAr KiovDQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0KPiArRGV2UGF0aEZyb21UZXh0Q3Ry bCAoDQo+ICsgICBDSEFSMTYgKlRleHREZXZpY2VOb2RlDQo+ICsgICkNCj4gK3sNCj4gKyAgQ0hB UjE2ICAgICAgICAgICAgICAgICAgKkNvbnRyb2xsZXJTdHI7DQo+ICsgIENPTlRST0xMRVJfREVW SUNFX1BBVEggICpDb250cm9sbGVyOw0KPiArDQo+ICsgIENvbnRyb2xsZXJTdHIgPSBHZXROZXh0 UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsgIENvbnRyb2xsZXIgICAgPSAoQ09OVFJP TExFUl9ERVZJQ0VfUEFUSCAqKSBDcmVhdGVEZXZpY2VOb2RlICgNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFSRFdBUkVfREVWSUNFX1BBVEgsDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhXX0NPTlRS T0xMRVJfRFAsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChVSU5UMTYpIHNpemVvZiAoQ09OVFJPTExFUl9ERVZJQ0VfUEFUSCkNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCj4gKyAgQ29udHJvbGxl ci0+Q29udHJvbGxlck51bWJlciA9IChVSU5UMzIpIFN0cnRvaSAoQ29udHJvbGxlclN0cik7DQo+ ICsNCj4gKyAgcmV0dXJuIChFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKikgQ29udHJvbGxlcjsN Cj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIENvbnZlcnRzIGEgdGV4dCBkZXZpY2UgcGF0aCBub2Rl IHRvIEJNQyBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyAgQHBhcmFtIFRleHREZXZp Y2VOb2RlICBUaGUgaW5wdXQgVGV4dCBkZXZpY2UgcGF0aCBub2RlLg0KPiArDQo+ICsgIEByZXR1 cm4gQSBwb2ludGVyIHRvIHRoZSBuZXdseS1jcmVhdGVkIEJNQyBkZXZpY2UgcGF0aCBzdHJ1Y3R1 cmUuDQo+ICsNCj4gKyoqLw0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoNCj4gK0RldlBh dGhGcm9tVGV4dEJtYyAoDQo+ICsgICBDSEFSMTYgKlRleHREZXZpY2VOb2RlDQo+ICsgICkNCj4g K3sNCj4gKyAgQ0hBUjE2ICAgICAgICAgICAgICAgICpJbnRlcmZhY2VUeXBlU3RyOw0KPiArICBD SEFSMTYgICAgICAgICAgICAgICAgKkJhc2VBZGRyZXNzU3RyOw0KPiArICBCTUNfREVWSUNFX1BB VEggICAgICAgKkJtY0RwOw0KPiArDQo+ICsgIEludGVyZmFjZVR5cGVTdHIgPSBHZXROZXh0UGFy YW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsgIEJhc2VBZGRyZXNzU3RyICAgPSBHZXROZXh0 UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsgIEJtY0RwICAgICAgICAgICAgPSAoQk1D X0RFVklDRV9QQVRIICopIENyZWF0ZURldmljZU5vZGUgKA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEhBUkRXQVJFX0RFVklDRV9QQVRILA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhXX0JNQ19EUCwNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVUlOVDE2KSBzaXplb2YgKEJN Q19ERVZJQ0VfUEFUSCkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICApOw0KPiArDQo+ICsgIEJtY0RwLT5JbnRlcmZhY2VUeXBlID0gKFVJTlQ4KSBTdHJ0b2kg KEludGVyZmFjZVR5cGVTdHIpOw0KPiArICBXcml0ZVVuYWxpZ25lZDY0ICgNCj4gKyAgICAoVUlO VDY0ICopICgmQm1jRHAtPkJhc2VBZGRyZXNzKSwNCj4gKyAgICBTdHJIZXhUb1VpbnQ2NCAoQmFz ZUFkZHJlc3NTdHIpDQo+ICsgICAgKTsNCj4gKw0KPiArICByZXR1cm4gKEVGSV9ERVZJQ0VfUEFU SF9QUk9UT0NPTCAqKSBCbWNEcDsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIENvbnZlcnRzIGEg Z2VuZXJpYyBBQ1BJIHRleHQgZGV2aWNlIHBhdGggbm9kZSB0byBBQ1BJIGRldmljZSBwYXRoIHN0 cnVjdHVyZS4NCj4gKw0KPiArICBAcGFyYW0gVGV4dERldmljZU5vZGUgIFRoZSBpbnB1dCBUZXh0 IGRldmljZSBwYXRoIG5vZGUuDQo+ICsNCj4gKyAgQHJldHVybiBBIHBvaW50ZXIgdG8gQUNQSSBk ZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyoqLw0KPiArRUZJX0RFVklDRV9QQVRIX1BS T1RPQ09MICoNCj4gK0RldlBhdGhGcm9tVGV4dEFjcGlQYXRoICgNCj4gKyAgIENIQVIxNiAqVGV4 dERldmljZU5vZGUNCj4gKyAgKQ0KPiArew0KPiArICByZXR1cm4gRGV2UGF0aEZyb21UZXh0R2Vu ZXJpY1BhdGggKEFDUElfREVWSUNFX1BBVEgsIFRleHREZXZpY2VOb2RlKTsNCj4gK30NCj4gKw0K PiArLyoqDQo+ICsgIENvbnZlcnRzIGEgc3RyaW5nIHRvIEVpc2FJZC4NCj4gKw0KPiArICBAcGFy YW0gVGV4dCAgIFRoZSBpbnB1dCBzdHJpbmcuDQo+ICsNCj4gKyAgQHJldHVybiBVSU5UMzIgRUlT QSBJRC4NCj4gKyoqLw0KPiArVUlOVDMyDQo+ICtFaXNhSWRGcm9tVGV4dCAoDQo+ICsgICBDSEFS MTYgKlRleHQNCj4gKyAgKQ0KPiArew0KPiArICByZXR1cm4gKCgoVGV4dFswXSAtICdBJyArIDEp ICYgMHgxZikgPDwgMTApDQo+ICsgICAgICAgKyAoKChUZXh0WzFdIC0gJ0EnICsgMSkgJiAweDFm KSA8PCAgNSkNCj4gKyAgICAgICArICgoKFRleHRbMl0gLSAnQScgKyAxKSAmIDB4MWYpIDw8ICAw KQ0KPiArICAgICAgICsgKFVJTlQzMikgKFN0ckhleFRvVWludG4gKCZUZXh0WzNdKSA8PCAxNikN Cj4gKyAgICAgICA7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBDb252ZXJ0cyBhIHRleHQgZGV2 aWNlIHBhdGggbm9kZSB0byBBQ1BJIEhJRCBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4g KyAgQHBhcmFtIFRleHREZXZpY2VOb2RlICBUaGUgaW5wdXQgVGV4dCBkZXZpY2UgcGF0aCBub2Rl Lg0KPiArDQo+ICsgIEByZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBuZXdseS1jcmVhdGVkIEFDUEkg SElEIGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArKiovDQo+ICtFRklfREVWSUNFX1BB VEhfUFJPVE9DT0wgKg0KPiArRGV2UGF0aEZyb21UZXh0QWNwaSAoDQo+ICsgICBDSEFSMTYgKlRl eHREZXZpY2VOb2RlDQo+ICsgICkNCj4gK3sNCj4gKyAgQ0hBUjE2ICAgICAgICAgICAgICAgICpI SURTdHI7DQo+ICsgIENIQVIxNiAgICAgICAgICAgICAgICAqVUlEU3RyOw0KPiArICBBQ1BJX0hJ RF9ERVZJQ0VfUEFUSCAgKkFjcGk7DQo+ICsNCj4gKyAgSElEU3RyID0gR2V0TmV4dFBhcmFtU3Ry ICgmVGV4dERldmljZU5vZGUpOw0KPiArICBVSURTdHIgPSBHZXROZXh0UGFyYW1TdHIgKCZUZXh0 RGV2aWNlTm9kZSk7DQo+ICsgIEFjcGkgICA9IChBQ1BJX0hJRF9ERVZJQ0VfUEFUSCAqKSBDcmVh dGVEZXZpY2VOb2RlICgNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg QUNQSV9ERVZJQ0VfUEFUSCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgQUNQSV9EUCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFVJ TlQxNikgc2l6ZW9mIChBQ1BJX0hJRF9ERVZJQ0VfUEFUSCkNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKTsNCj4gKw0KPiArICBBY3BpLT5ISUQgPSBFaXNhSWRGcm9t VGV4dCAoSElEU3RyKTsNCj4gKyAgQWNwaS0+VUlEID0gKFVJTlQzMikgU3RydG9pIChVSURTdHIp Ow0KPiArDQo+ICsgIHJldHVybiAoRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICopIEFjcGk7DQo+ ICt9DQo+ICsNCj4gKy8qKg0KPiArICBDb252ZXJ0cyBhIHRleHQgZGV2aWNlIHBhdGggbm9kZSB0 byBBQ1BJIEhJRCBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyAgQHBhcmFtIFRleHRE ZXZpY2VOb2RlICBUaGUgaW5wdXQgVGV4dCBkZXZpY2UgcGF0aCBub2RlLg0KPiArICBAcGFyYW0g UG5QSWQgICAgICAgICAgIFRoZSBpbnB1dCBwbHVnIGFuZCBwbGF5IGlkZW50aWZpY2F0aW9uLg0K PiArDQo+ICsgIEByZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBuZXdseS1jcmVhdGVkIEFDUEkgSElE IGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArKiovDQo+ICtFRklfREVWSUNFX1BBVEhf UFJPVE9DT0wgKg0KPiArQ29udmVydEZyb21UZXh0QWNwaSAoDQo+ICsgICBDSEFSMTYgKlRleHRE ZXZpY2VOb2RlLA0KPiArICAgVUlOVDMyICBQblBJZA0KPiArICApDQo+ICt7DQo+ICsgIENIQVIx NiAgICAgICAgICAgICAgICAqVUlEU3RyOw0KPiArICBBQ1BJX0hJRF9ERVZJQ0VfUEFUSCAgKkFj cGk7DQo+ICsNCj4gKyAgVUlEU3RyID0gR2V0TmV4dFBhcmFtU3RyICgmVGV4dERldmljZU5vZGUp Ow0KPiArICBBY3BpICAgPSAoQUNQSV9ISURfREVWSUNFX1BBVEggKikgQ3JlYXRlRGV2aWNlTm9k ZSAoDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFDUElfREVWSUNF X1BBVEgsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFDUElfRFAs DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChVSU5UMTYpIHNpemVv ZiAoQUNQSV9ISURfREVWSUNFX1BBVEgpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICk7DQo+ICsNCj4gKyAgQWNwaS0+SElEID0gRUZJX1BOUF9JRCAoUG5QSWQpOw0K PiArICBBY3BpLT5VSUQgPSAoVUlOVDMyKSBTdHJ0b2kgKFVJRFN0cik7DQo+ICsNCj4gKyAgcmV0 dXJuIChFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKikgQWNwaTsNCj4gK30NCj4gKw0KPiArLyoq DQo+ICsgIENvbnZlcnRzIGEgdGV4dCBkZXZpY2UgcGF0aCBub2RlIHRvIFBDSSByb290IGRldmlj ZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArICBAcGFyYW0gVGV4dERldmljZU5vZGUgIFRoZSBp bnB1dCBUZXh0IGRldmljZSBwYXRoIG5vZGUuDQo+ICsNCj4gKyAgQHJldHVybiBBIHBvaW50ZXIg dG8gdGhlIG5ld2x5LWNyZWF0ZWQgUENJIHJvb3QgZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiAr DQo+ICsqKi8NCj4gK0VGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqDQo+ICtEZXZQYXRoRnJvbVRl eHRQY2lSb290ICgNCj4gKyAgIENIQVIxNiAqVGV4dERldmljZU5vZGUNCj4gKyAgKQ0KPiArew0K PiArICByZXR1cm4gQ29udmVydEZyb21UZXh0QWNwaSAoVGV4dERldmljZU5vZGUsIDB4MGEwMyk7 DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBDb252ZXJ0cyBhIHRleHQgZGV2aWNlIHBhdGggbm9k ZSB0byBQQ0lFIHJvb3QgZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsgIEBwYXJhbSBU ZXh0RGV2aWNlTm9kZSAgVGhlIGlucHV0IFRleHQgZGV2aWNlIHBhdGggbm9kZS4NCj4gKw0KPiAr ICBAcmV0dXJuIEEgcG9pbnRlciB0byB0aGUgbmV3bHktY3JlYXRlZCBQQ0lFIHJvb3QgZGV2aWNl IHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9ERVZJQ0VfUEFUSF9QUk9UT0NP TCAqDQo+ICtEZXZQYXRoRnJvbVRleHRQY2llUm9vdCAoDQo+ICsgICBDSEFSMTYgKlRleHREZXZp Y2VOb2RlDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIENvbnZlcnRGcm9tVGV4dEFjcGkgKFRl eHREZXZpY2VOb2RlLCAweDBhMDgpOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgQ29udmVydHMg YSB0ZXh0IGRldmljZSBwYXRoIG5vZGUgdG8gRmxvcHB5IGRldmljZSBwYXRoIHN0cnVjdHVyZS4N Cj4gKw0KPiArICBAcGFyYW0gVGV4dERldmljZU5vZGUgIFRoZSBpbnB1dCBUZXh0IGRldmljZSBw YXRoIG5vZGUuDQo+ICsNCj4gKyAgQHJldHVybiBBIHBvaW50ZXIgdG8gdGhlIG5ld2x5LWNyZWF0 ZWQgRmxvcHB5IGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArKiovDQo+ICtFRklfREVW SUNFX1BBVEhfUFJPVE9DT0wgKg0KPiArRGV2UGF0aEZyb21UZXh0RmxvcHB5ICgNCj4gKyAgIENI QVIxNiAqVGV4dERldmljZU5vZGUNCj4gKyAgKQ0KPiArew0KPiArICByZXR1cm4gQ29udmVydEZy b21UZXh0QWNwaSAoVGV4dERldmljZU5vZGUsIDB4MDYwNCk7DQo+ICt9DQo+ICsNCj4gKy8qKg0K PiArICBDb252ZXJ0cyBhIHRleHQgZGV2aWNlIHBhdGggbm9kZSB0byBLZXlib2FyZCBkZXZpY2Ug cGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyAgQHBhcmFtIFRleHREZXZpY2VOb2RlICBUaGUgaW5w dXQgVGV4dCBkZXZpY2UgcGF0aCBub2RlLg0KPiArDQo+ICsgIEByZXR1cm4gQSBwb2ludGVyIHRv IHRoZSBuZXdseS1jcmVhdGVkICBLZXlib2FyZCBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsN Cj4gKyoqLw0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoNCj4gK0RldlBhdGhGcm9tVGV4 dEtleWJvYXJkICgNCj4gKyAgIENIQVIxNiAqVGV4dERldmljZU5vZGUNCj4gKyAgKQ0KPiArew0K PiArICByZXR1cm4gQ29udmVydEZyb21UZXh0QWNwaSAoVGV4dERldmljZU5vZGUsIDB4MDMwMSk7 DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBDb252ZXJ0cyBhIHRleHQgZGV2aWNlIHBhdGggbm9k ZSB0byBTZXJpYWwgZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsgIEBwYXJhbSBUZXh0 RGV2aWNlTm9kZSAgVGhlIGlucHV0IFRleHQgZGV2aWNlIHBhdGggbm9kZS4NCj4gKw0KPiArICBA cmV0dXJuIEEgcG9pbnRlciB0byB0aGUgbmV3bHktY3JlYXRlZCBTZXJpYWwgZGV2aWNlIHBhdGgg c3RydWN0dXJlLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqDQo+ ICtEZXZQYXRoRnJvbVRleHRTZXJpYWwgKA0KPiArICAgQ0hBUjE2ICpUZXh0RGV2aWNlTm9kZQ0K PiArICApDQo+ICt7DQo+ICsgIHJldHVybiBDb252ZXJ0RnJvbVRleHRBY3BpIChUZXh0RGV2aWNl Tm9kZSwgMHgwNTAxKTsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIENvbnZlcnRzIGEgdGV4dCBk ZXZpY2UgcGF0aCBub2RlIHRvIFBhcmFsbGVsIFBvcnQgZGV2aWNlIHBhdGggc3RydWN0dXJlLg0K PiArDQo+ICsgIEBwYXJhbSBUZXh0RGV2aWNlTm9kZSAgVGhlIGlucHV0IFRleHQgZGV2aWNlIHBh dGggbm9kZS4NCj4gKw0KPiArICBAcmV0dXJuIEEgcG9pbnRlciB0byB0aGUgbmV3bHktY3JlYXRl ZCBQYXJhbGxlbCBQb3J0IGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArKiovDQo+ICtF RklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0KPiArRGV2UGF0aEZyb21UZXh0UGFyYWxsZWxQb3J0 ICgNCj4gKyAgIENIQVIxNiAqVGV4dERldmljZU5vZGUNCj4gKyAgKQ0KPiArew0KPiArICByZXR1 cm4gQ29udmVydEZyb21UZXh0QWNwaSAoVGV4dERldmljZU5vZGUsIDB4MDQwMSk7DQo+ICt9DQo+ ICsNCj4gKy8qKg0KPiArICBDb252ZXJ0cyBhIHRleHQgZGV2aWNlIHBhdGggbm9kZSB0byBBQ1BJ IGV4dGVuc2lvbiBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyAgQHBhcmFtIFRleHRE ZXZpY2VOb2RlICBUaGUgaW5wdXQgVGV4dCBkZXZpY2UgcGF0aCBub2RlLg0KPiArDQo+ICsgIEBy ZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBuZXdseS1jcmVhdGVkIEFDUEkgZXh0ZW5zaW9uIGRldmlj ZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArKiovDQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9D T0wgKg0KPiArRGV2UGF0aEZyb21UZXh0QWNwaUV4ICgNCj4gKyAgIENIQVIxNiAqVGV4dERldmlj ZU5vZGUNCj4gKyAgKQ0KPiArew0KPiArICBDSEFSMTYgICAgICAgICAgICAgICAgICAgICAgICAg KkhJRFN0cjsNCj4gKyAgQ0hBUjE2ICAgICAgICAgICAgICAgICAgICAgICAgICpDSURTdHI7DQo+ ICsgIENIQVIxNiAgICAgICAgICAgICAgICAgICAgICAgICAqVUlEU3RyOw0KPiArICBDSEFSMTYg ICAgICAgICAgICAgICAgICAgICAgICAgKkhJRFNUUlN0cjsNCj4gKyAgQ0hBUjE2ICAgICAgICAg ICAgICAgICAgICAgICAgICpDSURTVFJTdHI7DQo+ICsgIENIQVIxNiAgICAgICAgICAgICAgICAg ICAgICAgICAqVUlEU1RSU3RyOw0KPiArICBDSEFSOCAgICAgICAgICAgICAgICAgICAgICAgICAg KkFzY2lpU3RyOw0KPiArICBVSU5UMTYgICAgICAgICAgICAgICAgICAgICAgICAgTGVuZ3RoOw0K PiArICBBQ1BJX0VYVEVOREVEX0hJRF9ERVZJQ0VfUEFUSCAgKkFjcGlFeDsNCj4gKw0KPiArICBI SURTdHIgICAgPSBHZXROZXh0UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsgIENJRFN0 ciAgICA9IEdldE5leHRQYXJhbVN0ciAoJlRleHREZXZpY2VOb2RlKTsNCj4gKyAgVUlEU3RyICAg ID0gR2V0TmV4dFBhcmFtU3RyICgmVGV4dERldmljZU5vZGUpOw0KPiArICBISURTVFJTdHIgPSBH ZXROZXh0UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsgIENJRFNUUlN0ciA9IEdldE5l eHRQYXJhbVN0ciAoJlRleHREZXZpY2VOb2RlKTsNCj4gKyAgVUlEU1RSU3RyID0gR2V0TmV4dFBh cmFtU3RyICgmVGV4dERldmljZU5vZGUpOw0KPiArDQo+ICsgIExlbmd0aCAgICA9IChVSU5UMTYp IChzaXplb2YgKEFDUElfRVhURU5ERURfSElEX0RFVklDRV9QQVRIKSArIFN0ckxlbiAoSElEU1RS U3RyKSArIDEpOw0KPiArICBMZW5ndGggICAgPSAoVUlOVDE2KSAoTGVuZ3RoICsgU3RyTGVuIChV SURTVFJTdHIpICsgMSk7DQo+ICsgIExlbmd0aCAgICA9IChVSU5UMTYpIChMZW5ndGggKyBTdHJM ZW4gKENJRFNUUlN0cikgKyAxKTsNCj4gKyAgQWNwaUV4ID0gKEFDUElfRVhURU5ERURfSElEX0RF VklDRV9QQVRIICopIENyZWF0ZURldmljZU5vZGUgKA0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBBQ1BJX0RFVklDRV9QQVRILA0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBQ1BJX0VYVEVOREVEX0RQLA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZW5ndGgN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCj4g Kw0KPiArICBBY3BpRXgtPkhJRCA9IEVpc2FJZEZyb21UZXh0IChISURTdHIpOw0KPiArICBBY3Bp RXgtPkNJRCA9IEVpc2FJZEZyb21UZXh0IChDSURTdHIpOw0KPiArICBBY3BpRXgtPlVJRCA9IChV SU5UMzIpIFN0cnRvaSAoVUlEU3RyKTsNCj4gKw0KPiArICBBc2NpaVN0ciA9IChDSEFSOCAqKSAo KFVJTlQ4ICopQWNwaUV4ICsgc2l6ZW9mIChBQ1BJX0VYVEVOREVEX0hJRF9ERVZJQ0VfUEFUSCkp Ow0KPiArICBTdHJUb0FzY2lpIChISURTVFJTdHIsICZBc2NpaVN0cik7DQo+ICsgIFN0clRvQXNj aWkgKFVJRFNUUlN0ciwgJkFzY2lpU3RyKTsNCj4gKyAgU3RyVG9Bc2NpaSAoQ0lEU1RSU3RyLCAm QXNjaWlTdHIpOw0KPiArDQo+ICsgIHJldHVybiAoRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICop IEFjcGlFeDsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIENvbnZlcnRzIGEgdGV4dCBkZXZpY2Ug cGF0aCBub2RlIHRvIEFDUEkgZXh0ZW5zaW9uIGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0K PiArICBAcGFyYW0gVGV4dERldmljZU5vZGUgIFRoZSBpbnB1dCBUZXh0IGRldmljZSBwYXRoIG5v ZGUuDQo+ICsNCj4gKyAgQHJldHVybiBBIHBvaW50ZXIgdG8gdGhlIG5ld2x5LWNyZWF0ZWQgQUNQ SSBleHRlbnNpb24gZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9E RVZJQ0VfUEFUSF9QUk9UT0NPTCAqDQo+ICtEZXZQYXRoRnJvbVRleHRBY3BpRXhwICgNCj4gKyAg IENIQVIxNiAqVGV4dERldmljZU5vZGUNCj4gKyAgKQ0KPiArew0KPiArICBDSEFSMTYgICAgICAg ICAgICAgICAgICAgICAgICAgKkhJRFN0cjsNCj4gKyAgQ0hBUjE2ICAgICAgICAgICAgICAgICAg ICAgICAgICpDSURTdHI7DQo+ICsgIENIQVIxNiAgICAgICAgICAgICAgICAgICAgICAgICAqVUlE U1RSU3RyOw0KPiArICBDSEFSOCAgICAgICAgICAgICAgICAgICAgICAgICAgKkFzY2lpU3RyOw0K PiArICBVSU5UMTYgICAgICAgICAgICAgICAgICAgICAgICAgTGVuZ3RoOw0KPiArICBBQ1BJX0VY VEVOREVEX0hJRF9ERVZJQ0VfUEFUSCAgKkFjcGlFeDsNCj4gKw0KPiArICBISURTdHIgICAgPSBH ZXROZXh0UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsgIENJRFN0ciAgICA9IEdldE5l eHRQYXJhbVN0ciAoJlRleHREZXZpY2VOb2RlKTsNCj4gKyAgVUlEU1RSU3RyID0gR2V0TmV4dFBh cmFtU3RyICgmVGV4dERldmljZU5vZGUpOw0KPiArICBMZW5ndGggICAgPSAoVUlOVDE2KSAoc2l6 ZW9mIChBQ1BJX0VYVEVOREVEX0hJRF9ERVZJQ0VfUEFUSCkgKyBTdHJMZW4gKFVJRFNUUlN0cikg KyAzKTsNCj4gKyAgQWNwaUV4ICAgID0gKEFDUElfRVhURU5ERURfSElEX0RFVklDRV9QQVRIICop IENyZWF0ZURldmljZU5vZGUgKA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBBQ1BJX0RFVklDRV9QQVRILA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBQ1BJX0VYVEVOREVEX0RQLA0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZW5ndGgNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCj4g Kw0KPiArICBBY3BpRXgtPkhJRCA9IEVpc2FJZEZyb21UZXh0IChISURTdHIpOw0KPiArICBBY3Bp RXgtPkNJRCA9IEVpc2FJZEZyb21UZXh0IChDSURTdHIpOw0KPiArICBBY3BpRXgtPlVJRCA9IDA7 DQo+ICsNCj4gKyAgQXNjaWlTdHIgPSAoQ0hBUjggKikgKChVSU5UOCAqKUFjcGlFeCArIHNpemVv ZiAoQUNQSV9FWFRFTkRFRF9ISURfREVWSUNFX1BBVEgpKTsNCj4gKyAgLy8NCj4gKyAgLy8gSElE IHN0cmluZyBpcyBOVUxMDQo+ICsgIC8vDQo+ICsgICpBc2NpaVN0ciA9ICdcMCc7DQo+ICsgIC8v DQo+ICsgIC8vIENvbnZlcnQgVUlEIHN0cmluZw0KPiArICAvLw0KPiArICBBc2NpaVN0cisrOw0K PiArICBTdHJUb0FzY2lpIChVSURTVFJTdHIsICZBc2NpaVN0cik7DQo+ICsgIC8vDQo+ICsgIC8v IENJRCBzdHJpbmcgaXMgTlVMTA0KPiArICAvLw0KPiArICAqQXNjaWlTdHIgPSAnXDAnOw0KPiAr DQo+ICsgIHJldHVybiAoRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICopIEFjcGlFeDsNCj4gK30N Cj4gKw0KPiArLyoqDQo+ICsgIENvbnZlcnRzIGEgdGV4dCBkZXZpY2UgcGF0aCBub2RlIHRvIEFD UEkgX0FEUiBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyAgQHBhcmFtIFRleHREZXZp Y2VOb2RlICBUaGUgaW5wdXQgVGV4dCBkZXZpY2UgcGF0aCBub2RlLg0KPiArDQo+ICsgIEByZXR1 cm4gQSBwb2ludGVyIHRvIHRoZSBuZXdseS1jcmVhdGVkIEFDUEkgX0FEUiBkZXZpY2UgcGF0aCBz dHJ1Y3R1cmUuDQo+ICsNCj4gKyoqLw0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoNCj4g K0RldlBhdGhGcm9tVGV4dEFjcGlBZHIgKA0KPiArICAgQ0hBUjE2ICpUZXh0RGV2aWNlTm9kZQ0K PiArICApDQo+ICt7DQo+ICsgIENIQVIxNiAgICAgICAgICAgICAgICAqRGlzcGxheURldmljZVN0 cjsNCj4gKyAgQUNQSV9BRFJfREVWSUNFX1BBVEggICpBY3BpQWRyOw0KPiArICBVSU5UTiAgICAg ICAgICAgICAgICAgSW5kZXg7DQo+ICsgIFVJTlROICAgICAgICAgICAgICAgICBMZW5ndGg7DQo+ ICsNCj4gKyAgQWNwaUFkciA9IChBQ1BJX0FEUl9ERVZJQ0VfUEFUSCAqKSBDcmVhdGVEZXZpY2VO b2RlICgNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFDUElfREVW SUNFX1BBVEgsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBQ1BJ X0FEUl9EUCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChVSU5U MTYpIHNpemVvZiAoQUNQSV9BRFJfREVWSUNFX1BBVEgpDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICApOw0KPiArICBBU1NFUlQgKEFjcGlBZHIgIT0gTlVMTCk7DQo+ ICsNCj4gKyAgZm9yIChJbmRleCA9IDA7IDsgSW5kZXgrKykgew0KPiArICAgIERpc3BsYXlEZXZp Y2VTdHIgPSBHZXROZXh0UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsgICAgaWYgKElT X05VTEwgKCpEaXNwbGF5RGV2aWNlU3RyKSkgew0KPiArICAgICAgYnJlYWs7DQo+ICsgICAgfQ0K PiArICAgIGlmIChJbmRleCA+IDApIHsNCj4gKyAgICAgIExlbmd0aCAgPSBEZXZpY2VQYXRoTm9k ZUxlbmd0aCAoQWNwaUFkcik7DQo+ICsgICAgICBBY3BpQWRyID0gUmVhbGxvY2F0ZVBvb2wgKA0K PiArICAgICAgICAgICAgICAgICAgTGVuZ3RoLA0KPiArICAgICAgICAgICAgICAgICAgTGVuZ3Ro ICsgc2l6ZW9mIChVSU5UMzIpLA0KPiArICAgICAgICAgICAgICAgICAgQWNwaUFkcg0KPiArICAg ICAgICAgICAgICAgICAgKTsNCj4gKyAgICAgIEFTU0VSVCAoQWNwaUFkciAhPSBOVUxMKTsNCj4g KyAgICAgIFNldERldmljZVBhdGhOb2RlTGVuZ3RoIChBY3BpQWRyLCBMZW5ndGggKyBzaXplb2Yg KFVJTlQzMikpOw0KPiArICAgIH0NCj4gKw0KPiArICAgICgmQWNwaUFkci0+QURSKVtJbmRleF0g PSAoVUlOVDMyKSBTdHJ0b2kgKERpc3BsYXlEZXZpY2VTdHIpOw0KPiArICB9DQo+ICsNCj4gKyAg cmV0dXJuIChFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKikgQWNwaUFkcjsNCj4gK30NCj4gKw0K PiArLyoqDQo+ICsgIENvbnZlcnRzIGEgZ2VuZXJpYyBtZXNzYWdpbmcgdGV4dCBkZXZpY2UgcGF0 aCBub2RlIHRvIG1lc3NhZ2luZyBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyAgQHBh cmFtIFRleHREZXZpY2VOb2RlICBUaGUgaW5wdXQgVGV4dCBkZXZpY2UgcGF0aCBub2RlLg0KPiAr DQo+ICsgIEByZXR1cm4gQSBwb2ludGVyIHRvIG1lc3NhZ2luZyBkZXZpY2UgcGF0aCBzdHJ1Y3R1 cmUuDQo+ICsNCj4gKyoqLw0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoNCj4gK0RldlBh dGhGcm9tVGV4dE1zZyAoDQo+ICsgICBDSEFSMTYgKlRleHREZXZpY2VOb2RlDQo+ICsgICkNCj4g K3sNCj4gKyAgcmV0dXJuIERldlBhdGhGcm9tVGV4dEdlbmVyaWNQYXRoIChNRVNTQUdJTkdfREVW SUNFX1BBVEgsIFRleHREZXZpY2VOb2RlKTsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIENvbnZl cnRzIGEgdGV4dCBkZXZpY2UgcGF0aCBub2RlIHRvIFBhcmFsbGVsIFBvcnQgZGV2aWNlIHBhdGgg c3RydWN0dXJlLg0KPiArDQo+ICsgIEBwYXJhbSBUZXh0RGV2aWNlTm9kZSAgVGhlIGlucHV0IFRl eHQgZGV2aWNlIHBhdGggbm9kZS4NCj4gKw0KPiArICBAcmV0dXJuIEEgcG9pbnRlciB0byB0aGUg bmV3bHktY3JlYXRlZCBQYXJhbGxlbCBQb3J0IGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0K PiArKiovDQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0KPiArRGV2UGF0aEZyb21UZXh0 QXRhICgNCj4gKyBDSEFSMTYgKlRleHREZXZpY2VOb2RlDQo+ICspDQo+ICt7DQo+ICsgIENIQVIx NiAgICAgICAgICAgICpQcmltYXJ5U2Vjb25kYXJ5U3RyOw0KPiArICBDSEFSMTYgICAgICAgICAg ICAqU2xhdmVNYXN0ZXJTdHI7DQo+ICsgIENIQVIxNiAgICAgICAgICAgICpMdW5TdHI7DQo+ICsg IEFUQVBJX0RFVklDRV9QQVRIICpBdGFwaTsNCj4gKw0KPiArICBBdGFwaSA9IChBVEFQSV9ERVZJ Q0VfUEFUSCAqKSBDcmVhdGVEZXZpY2VOb2RlICgNCj4gKyAgICBNRVNTQUdJTkdfREVWSUNFX1BB VEgsDQo+ICsgICAgTVNHX0FUQVBJX0RQLA0KPiArICAgIChVSU5UMTYpIHNpemVvZiAoQVRBUElf REVWSUNFX1BBVEgpDQo+ICsgICAgKTsNCj4gKw0KPiArICBQcmltYXJ5U2Vjb25kYXJ5U3RyID0g R2V0TmV4dFBhcmFtU3RyICgmVGV4dERldmljZU5vZGUpOw0KPiArICBTbGF2ZU1hc3RlclN0ciAg ICAgID0gR2V0TmV4dFBhcmFtU3RyICgmVGV4dERldmljZU5vZGUpOw0KPiArICBMdW5TdHIgICAg ICAgICAgICAgID0gR2V0TmV4dFBhcmFtU3RyICgmVGV4dERldmljZU5vZGUpOw0KPiArDQo+ICsg IGlmIChTdHJDbXAgKFByaW1hcnlTZWNvbmRhcnlTdHIsIEwiUHJpbWFyeSIpID09IDApIHsNCj4g KyAgICBBdGFwaS0+UHJpbWFyeVNlY29uZGFyeSA9IDA7DQo+ICsgIH0gZWxzZSBpZiAoU3RyQ21w IChQcmltYXJ5U2Vjb25kYXJ5U3RyLCBMIlNlY29uZGFyeSIpID09IDApIHsNCj4gKyAgICBBdGFw aS0+UHJpbWFyeVNlY29uZGFyeSA9IDE7DQo+ICsgIH0gZWxzZSB7DQo+ICsgICAgQXRhcGktPlBy aW1hcnlTZWNvbmRhcnkgPSAoVUlOVDgpIFN0cnRvaSAoUHJpbWFyeVNlY29uZGFyeVN0cik7DQo+ ICsgIH0NCj4gKyAgaWYgKFN0ckNtcCAoU2xhdmVNYXN0ZXJTdHIsIEwiTWFzdGVyIikgPT0gMCkg ew0KPiArICAgIEF0YXBpLT5TbGF2ZU1hc3RlciAgICAgID0gMDsNCj4gKyAgfSBlbHNlIGlmIChT dHJDbXAgKFNsYXZlTWFzdGVyU3RyLCBMIlNsYXZlIikgPT0gMCkgew0KPiArICAgIEF0YXBpLT5T bGF2ZU1hc3RlciAgICAgID0gMTsNCj4gKyAgfSBlbHNlIHsNCj4gKyAgICBBdGFwaS0+U2xhdmVN YXN0ZXIgICAgICA9IChVSU5UOCkgU3RydG9pIChTbGF2ZU1hc3RlclN0cik7DQo+ICsgIH0NCj4g Kw0KPiArICBBdGFwaS0+THVuICAgICAgICAgICAgICAgID0gKFVJTlQxNikgU3RydG9pIChMdW5T dHIpOw0KPiArDQo+ICsgIHJldHVybiAoRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICopIEF0YXBp Ow0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgQ29udmVydHMgYSB0ZXh0IGRldmljZSBwYXRoIG5v ZGUgdG8gU0NTSSBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyAgQHBhcmFtIFRleHRE ZXZpY2VOb2RlICBUaGUgaW5wdXQgVGV4dCBkZXZpY2UgcGF0aCBub2RlLg0KPiArDQo+ICsgIEBy ZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBuZXdseS1jcmVhdGVkIFNDU0kgZGV2aWNlIHBhdGggc3Ry dWN0dXJlLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqDQo+ICtE ZXZQYXRoRnJvbVRleHRTY3NpICgNCj4gKyAgIENIQVIxNiAqVGV4dERldmljZU5vZGUNCj4gKyAg KQ0KPiArew0KPiArICBDSEFSMTYgICAgICAgICAgICAqUHVuU3RyOw0KPiArICBDSEFSMTYgICAg ICAgICAgICAqTHVuU3RyOw0KPiArICBTQ1NJX0RFVklDRV9QQVRIICAqU2NzaTsNCj4gKw0KPiAr ICBQdW5TdHIgPSBHZXROZXh0UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsgIEx1blN0 ciA9IEdldE5leHRQYXJhbVN0ciAoJlRleHREZXZpY2VOb2RlKTsNCj4gKyAgU2NzaSAgID0gKFND U0lfREVWSUNFX1BBVEggKikgQ3JlYXRlRGV2aWNlTm9kZSAoDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE1FU1NBR0lOR19ERVZJQ0VfUEFUSCwNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTVNHX1NDU0lfRFAsDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChVSU5UMTYpIHNpemVvZiAoU0NTSV9ERVZJQ0VfUEFUSCkNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCj4gKw0KPiArICBTY3NpLT5Q dW4gPSAoVUlOVDE2KSBTdHJ0b2kgKFB1blN0cik7DQo+ICsgIFNjc2ktPkx1biA9IChVSU5UMTYp IFN0cnRvaSAoTHVuU3RyKTsNCj4gKw0KPiArICByZXR1cm4gKEVGSV9ERVZJQ0VfUEFUSF9QUk9U T0NPTCAqKSBTY3NpOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgQ29udmVydHMgYSB0ZXh0IGRl dmljZSBwYXRoIG5vZGUgdG8gRmlicmUgZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsg IEBwYXJhbSBUZXh0RGV2aWNlTm9kZSAgVGhlIGlucHV0IFRleHQgZGV2aWNlIHBhdGggbm9kZS4N Cj4gKw0KPiArICBAcmV0dXJuIEEgcG9pbnRlciB0byB0aGUgbmV3bHktY3JlYXRlZCBGaWJyZSBk ZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyoqLw0KPiArRUZJX0RFVklDRV9QQVRIX1BS T1RPQ09MICoNCj4gK0RldlBhdGhGcm9tVGV4dEZpYnJlICgNCj4gKyAgIENIQVIxNiAqVGV4dERl dmljZU5vZGUNCj4gKyAgKQ0KPiArew0KPiArICBDSEFSMTYgICAgICAgICAgICAgICAgICAgICpX V05TdHI7DQo+ICsgIENIQVIxNiAgICAgICAgICAgICAgICAgICAgKkx1blN0cjsNCj4gKyAgRklC UkVDSEFOTkVMX0RFVklDRV9QQVRIICAqRmlicmU7DQo+ICsNCj4gKyAgV1dOU3RyID0gR2V0TmV4 dFBhcmFtU3RyICgmVGV4dERldmljZU5vZGUpOw0KPiArICBMdW5TdHIgPSBHZXROZXh0UGFyYW1T dHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsgIEZpYnJlICA9IChGSUJSRUNIQU5ORUxfREVWSUNF X1BBVEggKikgQ3JlYXRlRGV2aWNlTm9kZSAoDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBNRVNTQUdJTkdfREVWSUNFX1BBVEgsDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNU0dfRklCUkVDSEFOTkVMX0RQLA0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFVJTlQxNikgc2l6ZW9mIChG SUJSRUNIQU5ORUxfREVWSUNFX1BBVEgpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICApOw0KPiArDQo+ICsgIEZpYnJlLT5SZXNlcnZlZCA9IDA7DQo+ICsgIFN0 cnRvaTY0IChXV05TdHIsICZGaWJyZS0+V1dOKTsNCj4gKyAgU3RydG9pNjQgKEx1blN0ciwgJkZp YnJlLT5MdW4pOw0KPiArDQo+ICsgIHJldHVybiAoRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICop IEZpYnJlOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgQ29udmVydHMgYSB0ZXh0IGRldmljZSBw YXRoIG5vZGUgdG8gRmlicmVFeCBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyAgQHBh cmFtIFRleHREZXZpY2VOb2RlICBUaGUgaW5wdXQgVGV4dCBkZXZpY2UgcGF0aCBub2RlLg0KPiAr DQo+ICsgIEByZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBuZXdseS1jcmVhdGVkIEZpYnJlRXggZGV2 aWNlIHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9ERVZJQ0VfUEFUSF9QUk9U T0NPTCAqDQo+ICtEZXZQYXRoRnJvbVRleHRGaWJyZUV4ICgNCj4gKyAgIENIQVIxNiAqVGV4dERl dmljZU5vZGUNCj4gKyAgKQ0KPiArew0KPiArICBDSEFSMTYgICAgICAgICAgICAgICAgICAgICAg KldXTlN0cjsNCj4gKyAgQ0hBUjE2ICAgICAgICAgICAgICAgICAgICAgICpMdW5TdHI7DQo+ICsg IEZJQlJFQ0hBTk5FTEVYX0RFVklDRV9QQVRIICAqRmlicmVFeDsNCj4gKw0KPiArICBXV05TdHIg ID0gR2V0TmV4dFBhcmFtU3RyICgmVGV4dERldmljZU5vZGUpOw0KPiArICBMdW5TdHIgID0gR2V0 TmV4dFBhcmFtU3RyICgmVGV4dERldmljZU5vZGUpOw0KPiArICBGaWJyZUV4ID0gKEZJQlJFQ0hB Tk5FTEVYX0RFVklDRV9QQVRIICopIENyZWF0ZURldmljZU5vZGUgKA0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVTU0FHSU5HX0RFVklDRV9QQVRILA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTVNHX0ZJQlJF Q0hBTk5FTEVYX0RQLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKFVJTlQxNikgc2l6ZW9mIChGSUJSRUNIQU5ORUxFWF9ERVZJQ0VfUEFUSCkNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQo+ICsNCj4gKyAg RmlicmVFeC0+UmVzZXJ2ZWQgPSAwOw0KPiArICBTdHJ0b2k2NCAoV1dOU3RyLCAoVUlOVDY0ICop ICgmRmlicmVFeC0+V1dOKSk7DQo+ICsgIFN0cnRvaTY0IChMdW5TdHIsIChVSU5UNjQgKikgKCZG aWJyZUV4LT5MdW4pKTsNCj4gKw0KPiArICAqKFVJTlQ2NCAqKSAoJkZpYnJlRXgtPldXTikgPSBT d2FwQnl0ZXM2NCAoKihVSU5UNjQgKikgKCZGaWJyZUV4LT5XV04pKTsNCj4gKyAgKihVSU5UNjQg KikgKCZGaWJyZUV4LT5MdW4pID0gU3dhcEJ5dGVzNjQgKCooVUlOVDY0ICopICgmRmlicmVFeC0+ THVuKSk7DQo+ICsNCj4gKyAgcmV0dXJuIChFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKikgRmli cmVFeDsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIENvbnZlcnRzIGEgdGV4dCBkZXZpY2UgcGF0 aCBub2RlIHRvIDEzOTQgZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsgIEBwYXJhbSBU ZXh0RGV2aWNlTm9kZSAgVGhlIGlucHV0IFRleHQgZGV2aWNlIHBhdGggbm9kZS4NCj4gKw0KPiAr ICBAcmV0dXJuIEEgcG9pbnRlciB0byB0aGUgbmV3bHktY3JlYXRlZCAxMzk0IGRldmljZSBwYXRo IHN0cnVjdHVyZS4NCj4gKw0KPiArKiovDQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0K PiArRGV2UGF0aEZyb21UZXh0MTM5NCAoDQo+ICsgICBDSEFSMTYgKlRleHREZXZpY2VOb2RlDQo+ ICsgICkNCj4gK3sNCj4gKyAgQ0hBUjE2ICAgICAgICAgICAgKkd1aWRTdHI7DQo+ICsgIEYxMzk0 X0RFVklDRV9QQVRIICpGMTM5NERldlBhdGg7DQo+ICsNCj4gKyAgR3VpZFN0ciA9IEdldE5leHRQ YXJhbVN0ciAoJlRleHREZXZpY2VOb2RlKTsNCj4gKyAgRjEzOTREZXZQYXRoICA9IChGMTM5NF9E RVZJQ0VfUEFUSCAqKSBDcmVhdGVEZXZpY2VOb2RlICgNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIE1FU1NBR0lOR19ERVZJQ0VfUEFUSCwNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1TR18xMzk0X0RQLA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFVJTlQxNikgc2l6ZW9mIChGMTM5 NF9ERVZJQ0VfUEFUSCkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICk7DQo+ICsNCj4gKyAgRjEzOTREZXZQYXRoLT5SZXNlcnZlZCA9IDA7DQo+ICsgIEYxMzk0 RGV2UGF0aC0+R3VpZCAgICAgPSBTdHJIZXhUb1VpbnQ2NCAoR3VpZFN0cik7DQo+ICsNCj4gKyAg cmV0dXJuIChFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKikgRjEzOTREZXZQYXRoOw0KPiArfQ0K PiArDQo+ICsvKioNCj4gKyAgQ29udmVydHMgYSB0ZXh0IGRldmljZSBwYXRoIG5vZGUgdG8gVVNC IGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArICBAcGFyYW0gVGV4dERldmljZU5vZGUg IFRoZSBpbnB1dCBUZXh0IGRldmljZSBwYXRoIG5vZGUuDQo+ICsNCj4gKyAgQHJldHVybiBBIHBv aW50ZXIgdG8gdGhlIG5ld2x5LWNyZWF0ZWQgVVNCIGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4g Kw0KPiArKiovDQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0KPiArRGV2UGF0aEZyb21U ZXh0VXNiICgNCj4gKyAgIENIQVIxNiAqVGV4dERldmljZU5vZGUNCj4gKyAgKQ0KPiArew0KPiAr ICBDSEFSMTYgICAgICAgICAgKlBvcnRTdHI7DQo+ICsgIENIQVIxNiAgICAgICAgICAqSW50ZXJm YWNlU3RyOw0KPiArICBVU0JfREVWSUNFX1BBVEggKlVzYjsNCj4gKw0KPiArICBQb3J0U3RyICAg ICAgICAgICAgICAgPSBHZXROZXh0UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsgIElu dGVyZmFjZVN0ciAgICAgICAgICA9IEdldE5leHRQYXJhbVN0ciAoJlRleHREZXZpY2VOb2RlKTsN Cj4gKyAgVXNiICAgICAgICAgICAgICAgICAgID0gKFVTQl9ERVZJQ0VfUEFUSCAqKSBDcmVhdGVE ZXZpY2VOb2RlICgNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIE1FU1NBR0lOR19ERVZJQ0VfUEFUSCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE1TR19VU0JfRFAsDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVUlOVDE2KSBzaXplb2YgKFVTQl9ERVZJ Q0VfUEFUSCkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICk7DQo+ICsNCj4gKyAgVXNiLT5QYXJlbnRQb3J0TnVtYmVyID0gKFVJTlQ4KSBTdHJ0b2kg KFBvcnRTdHIpOw0KPiArICBVc2ItPkludGVyZmFjZU51bWJlciAgPSAoVUlOVDgpIFN0cnRvaSAo SW50ZXJmYWNlU3RyKTsNCj4gKw0KPiArICByZXR1cm4gKEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NP TCAqKSBVc2I7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBDb252ZXJ0cyBhIHRleHQgZGV2aWNl IHBhdGggbm9kZSB0byBJMjAgZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsgIEBwYXJh bSBUZXh0RGV2aWNlTm9kZSAgVGhlIGlucHV0IFRleHQgZGV2aWNlIHBhdGggbm9kZS4NCj4gKw0K PiArICBAcmV0dXJuIEEgcG9pbnRlciB0byB0aGUgbmV3bHktY3JlYXRlZCBJMjAgZGV2aWNlIHBh dGggc3RydWN0dXJlLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAq DQo+ICtEZXZQYXRoRnJvbVRleHRJMk8gKA0KPiArICAgQ0hBUjE2ICpUZXh0RGV2aWNlTm9kZQ0K PiArICApDQo+ICt7DQo+ICsgIENIQVIxNiAgICAgICAgICAqVElEU3RyOw0KPiArICBJMk9fREVW SUNFX1BBVEggKkkyT0RldlBhdGg7DQo+ICsNCj4gKyAgVElEU3RyICAgICA9IEdldE5leHRQYXJh bVN0ciAoJlRleHREZXZpY2VOb2RlKTsNCj4gKyAgSTJPRGV2UGF0aCA9IChJMk9fREVWSUNFX1BB VEggKikgQ3JlYXRlRGV2aWNlTm9kZSAoDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBNRVNTQUdJTkdfREVWSUNFX1BBVEgsDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBNU0dfSTJPX0RQLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKFVJTlQxNikgc2l6ZW9mIChJMk9fREVWSUNFX1BBVEgpDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KPiArDQo+ICsgIEkyT0RldlBhdGgtPlRpZCAg PSAoVUlOVDMyKSBTdHJ0b2kgKFRJRFN0cik7DQo+ICsNCj4gKyAgcmV0dXJuIChFRklfREVWSUNF X1BBVEhfUFJPVE9DT0wgKikgSTJPRGV2UGF0aDsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIENv bnZlcnRzIGEgdGV4dCBkZXZpY2UgcGF0aCBub2RlIHRvIEluZmluaSBCYW5kIGRldmljZSBwYXRo IHN0cnVjdHVyZS4NCj4gKw0KPiArICBAcGFyYW0gVGV4dERldmljZU5vZGUgIFRoZSBpbnB1dCBU ZXh0IGRldmljZSBwYXRoIG5vZGUuDQo+ICsNCj4gKyAgQHJldHVybiBBIHBvaW50ZXIgdG8gdGhl IG5ld2x5LWNyZWF0ZWQgSW5maW5pIEJhbmQgZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiArDQo+ ICsqKi8NCj4gK0VGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqDQo+ICtEZXZQYXRoRnJvbVRleHRJ bmZpbmliYW5kICgNCj4gKyAgIENIQVIxNiAqVGV4dERldmljZU5vZGUNCj4gKyAgKQ0KPiArew0K PiArICBDSEFSMTYgICAgICAgICAgICAgICAgICAqRmxhZ3NTdHI7DQo+ICsgIENIQVIxNiAgICAg ICAgICAgICAgICAgICpHdWlkU3RyOw0KPiArICBDSEFSMTYgICAgICAgICAgICAgICAgICAqU2lk U3RyOw0KPiArICBDSEFSMTYgICAgICAgICAgICAgICAgICAqVGlkU3RyOw0KPiArICBDSEFSMTYg ICAgICAgICAgICAgICAgICAqRGlkU3RyOw0KPiArICBJTkZJTklCQU5EX0RFVklDRV9QQVRIICAq SW5maW5pQmFuZDsNCj4gKw0KPiArICBGbGFnc1N0ciAgID0gR2V0TmV4dFBhcmFtU3RyICgmVGV4 dERldmljZU5vZGUpOw0KPiArICBHdWlkU3RyICAgID0gR2V0TmV4dFBhcmFtU3RyICgmVGV4dERl dmljZU5vZGUpOw0KPiArICBTaWRTdHIgICAgID0gR2V0TmV4dFBhcmFtU3RyICgmVGV4dERldmlj ZU5vZGUpOw0KPiArICBUaWRTdHIgICAgID0gR2V0TmV4dFBhcmFtU3RyICgmVGV4dERldmljZU5v ZGUpOw0KPiArICBEaWRTdHIgICAgID0gR2V0TmV4dFBhcmFtU3RyICgmVGV4dERldmljZU5vZGUp Ow0KPiArICBJbmZpbmlCYW5kID0gKElORklOSUJBTkRfREVWSUNFX1BBVEggKikgQ3JlYXRlRGV2 aWNlTm9kZSAoDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IE1FU1NBR0lOR19ERVZJQ0VfUEFUSCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTVNHX0lORklOSUJBTkRfRFAsDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChVSU5UMTYpIHNpemVvZiAoSU5GSU5JQkFORF9ERVZJ Q0VfUEFUSCkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KTsNCj4gKw0KPiArICBJbmZpbmlCYW5kLT5SZXNvdXJjZUZsYWdzID0gKFVJTlQzMikgU3RydG9p IChGbGFnc1N0cik7DQo+ICsgIFN0clRvR3VpZCAoR3VpZFN0ciwgKEVGSV9HVUlEICopIEluZmlu aUJhbmQtPlBvcnRHaWQpOw0KPiArICBTdHJ0b2k2NCAoU2lkU3RyLCAmSW5maW5pQmFuZC0+U2Vy dmljZUlkKTsNCj4gKyAgU3RydG9pNjQgKFRpZFN0ciwgJkluZmluaUJhbmQtPlRhcmdldFBvcnRJ ZCk7DQo+ICsgIFN0cnRvaTY0IChEaWRTdHIsICZJbmZpbmlCYW5kLT5EZXZpY2VJZCk7DQo+ICsN Cj4gKyAgcmV0dXJuIChFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKikgSW5maW5pQmFuZDsNCj4g K30NCj4gKw0KPiArLyoqDQo+ICsgIENvbnZlcnRzIGEgdGV4dCBkZXZpY2UgcGF0aCBub2RlIHRv IFZlbmRvci1EZWZpbmVkIE1lc3NhZ2luZyBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4g KyAgQHBhcmFtIFRleHREZXZpY2VOb2RlICBUaGUgaW5wdXQgVGV4dCBkZXZpY2UgcGF0aCBub2Rl Lg0KPiArDQo+ICsgIEByZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBuZXdseS1jcmVhdGVkIFZlbmRv ci1EZWZpbmVkIE1lc3NhZ2luZyBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyoqLw0K PiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoNCj4gK0RldlBhdGhGcm9tVGV4dFZlbk1zZyAo DQo+ICsgICBDSEFSMTYgKlRleHREZXZpY2VOb2RlDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJu IENvbnZlcnRGcm9tVGV4dFZlbmRvciAoDQo+ICsgICAgICAgICAgICBUZXh0RGV2aWNlTm9kZSwN Cj4gKyAgICAgICAgICAgIE1FU1NBR0lOR19ERVZJQ0VfUEFUSCwNCj4gKyAgICAgICAgICAgIE1T R19WRU5ET1JfRFANCj4gKyAgICAgICAgICAgICk7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBD b252ZXJ0cyBhIHRleHQgZGV2aWNlIHBhdGggbm9kZSB0byBWZW5kb3IgZGVmaW5lZCBQQy1BTlNJ IGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArICBAcGFyYW0gVGV4dERldmljZU5vZGUg IFRoZSBpbnB1dCBUZXh0IGRldmljZSBwYXRoIG5vZGUuDQo+ICsNCj4gKyAgQHJldHVybiBBIHBv aW50ZXIgdG8gdGhlIG5ld2x5LWNyZWF0ZWQgVmVuZG9yIGRlZmluZWQgUEMtQU5TSSBkZXZpY2Ug cGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyoqLw0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09M ICoNCj4gK0RldlBhdGhGcm9tVGV4dFZlblBjQW5zaSAoDQo+ICsgICBDSEFSMTYgKlRleHREZXZp Y2VOb2RlDQo+ICsgICkNCj4gK3sNCj4gKyAgVkVORE9SX0RFVklDRV9QQVRIICAqVmVuZG9yOw0K PiArDQo+ICsgIFZlbmRvciA9IChWRU5ET1JfREVWSUNFX1BBVEggKikgQ3JlYXRlRGV2aWNlTm9k ZSAoDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRVNTQUdJTkdfREVW SUNFX1BBVEgsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNU0dfVkVO RE9SX0RQLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFVJTlQxNikg c2l6ZW9mIChWRU5ET1JfREVWSUNFX1BBVEgpKTsNCj4gKyAgQ29weUd1aWQgKCZWZW5kb3ItPkd1 aWQsICZnRWZpUGNBbnNpR3VpZCk7DQo+ICsNCj4gKyAgcmV0dXJuIChFRklfREVWSUNFX1BBVEhf UFJPVE9DT0wgKikgVmVuZG9yOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgQ29udmVydHMgYSB0 ZXh0IGRldmljZSBwYXRoIG5vZGUgdG8gVmVuZG9yIGRlZmluZWQgVlQxMDAgZGV2aWNlIHBhdGgg c3RydWN0dXJlLg0KPiArDQo+ICsgIEBwYXJhbSBUZXh0RGV2aWNlTm9kZSAgVGhlIGlucHV0IFRl eHQgZGV2aWNlIHBhdGggbm9kZS4NCj4gKw0KPiArICBAcmV0dXJuIEEgcG9pbnRlciB0byB0aGUg bmV3bHktY3JlYXRlZCBWZW5kb3IgZGVmaW5lZCBWVDEwMCBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUu DQo+ICsNCj4gKyoqLw0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoNCj4gK0RldlBhdGhG cm9tVGV4dFZlblZ0MTAwICgNCj4gKyAgIENIQVIxNiAqVGV4dERldmljZU5vZGUNCj4gKyAgKQ0K PiArew0KPiArICBWRU5ET1JfREVWSUNFX1BBVEggICpWZW5kb3I7DQo+ICsNCj4gKyAgVmVuZG9y ID0gKFZFTkRPUl9ERVZJQ0VfUEFUSCAqKSBDcmVhdGVEZXZpY2VOb2RlICgNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FU1NBR0lOR19ERVZJQ0VfUEFUSCwNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1TR19WRU5ET1JfRFAsDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVUlOVDE2KSBzaXplb2YgKFZFTkRPUl9E RVZJQ0VfUEFUSCkpOw0KPiArICBDb3B5R3VpZCAoJlZlbmRvci0+R3VpZCwgJmdFZmlWVDEwMEd1 aWQpOw0KPiArDQo+ICsgIHJldHVybiAoRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICopIFZlbmRv cjsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIENvbnZlcnRzIGEgdGV4dCBkZXZpY2UgcGF0aCBu b2RlIHRvIFZlbmRvciBkZWZpbmVkIFZUMTAwIFBsdXMgZGV2aWNlIHBhdGggc3RydWN0dXJlLg0K PiArDQo+ICsgIEBwYXJhbSBUZXh0RGV2aWNlTm9kZSAgVGhlIGlucHV0IFRleHQgZGV2aWNlIHBh dGggbm9kZS4NCj4gKw0KPiArICBAcmV0dXJuIEEgcG9pbnRlciB0byB0aGUgbmV3bHktY3JlYXRl ZCBWZW5kb3IgZGVmaW5lZCBWVDEwMCBQbHVzIGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0K PiArKiovDQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0KPiArRGV2UGF0aEZyb21UZXh0 VmVuVnQxMDBQbHVzICgNCj4gKyAgIENIQVIxNiAqVGV4dERldmljZU5vZGUNCj4gKyAgKQ0KPiAr ew0KPiArICBWRU5ET1JfREVWSUNFX1BBVEggICpWZW5kb3I7DQo+ICsNCj4gKyAgVmVuZG9yID0g KFZFTkRPUl9ERVZJQ0VfUEFUSCAqKSBDcmVhdGVEZXZpY2VOb2RlICgNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE1FU1NBR0lOR19ERVZJQ0VfUEFUSCwNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1TR19WRU5ET1JfRFAsDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVUlOVDE2KSBzaXplb2YgKFZFTkRPUl9ERVZJ Q0VfUEFUSCkpOw0KPiArICBDb3B5R3VpZCAoJlZlbmRvci0+R3VpZCwgJmdFZmlWVDEwMFBsdXNH dWlkKTsNCj4gKw0KPiArICByZXR1cm4gKEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqKSBWZW5k b3I7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBDb252ZXJ0cyBhIHRleHQgZGV2aWNlIHBhdGgg bm9kZSB0byBWZW5kb3IgZGVmaW5lZCBVVEY4IGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0K PiArICBAcGFyYW0gVGV4dERldmljZU5vZGUgIFRoZSBpbnB1dCBUZXh0IGRldmljZSBwYXRoIG5v ZGUuDQo+ICsNCj4gKyAgQHJldHVybiBBIHBvaW50ZXIgdG8gdGhlIG5ld2x5LWNyZWF0ZWQgVmVu ZG9yIGRlZmluZWQgVVRGOCBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyoqLw0KPiAr RUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoNCj4gK0RldlBhdGhGcm9tVGV4dFZlblV0ZjggKA0K PiArICAgQ0hBUjE2ICpUZXh0RGV2aWNlTm9kZQ0KPiArICApDQo+ICt7DQo+ICsgIFZFTkRPUl9E RVZJQ0VfUEFUSCAgKlZlbmRvcjsNCj4gKw0KPiArICBWZW5kb3IgPSAoVkVORE9SX0RFVklDRV9Q QVRIICopIENyZWF0ZURldmljZU5vZGUgKA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgTUVTU0FHSU5HX0RFVklDRV9QQVRILA0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTVNHX1ZFTkRPUl9EUCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChVSU5UMTYpIHNpemVvZiAoVkVORE9SX0RFVklDRV9QQVRIKSk7DQo+ICsg IENvcHlHdWlkICgmVmVuZG9yLT5HdWlkLCAmZ0VmaVZUVVRGOEd1aWQpOw0KPiArDQo+ICsgIHJl dHVybiAoRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICopIFZlbmRvcjsNCj4gK30NCj4gKw0KPiAr LyoqDQo+ICsgIENvbnZlcnRzIGEgdGV4dCBkZXZpY2UgcGF0aCBub2RlIHRvIFVBUlQgRmxvdyBD b250cm9sIGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArICBAcGFyYW0gVGV4dERldmlj ZU5vZGUgIFRoZSBpbnB1dCBUZXh0IGRldmljZSBwYXRoIG5vZGUuDQo+ICsNCj4gKyAgQHJldHVy biBBIHBvaW50ZXIgdG8gdGhlIG5ld2x5LWNyZWF0ZWQgVUFSVCBGbG93IENvbnRyb2wgZGV2aWNl IHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9ERVZJQ0VfUEFUSF9QUk9UT0NP TCAqDQo+ICtEZXZQYXRoRnJvbVRleHRVYXJ0Rmxvd0N0cmwgKA0KPiArICAgQ0hBUjE2ICpUZXh0 RGV2aWNlTm9kZQ0KPiArICApDQo+ICt7DQo+ICsgIENIQVIxNiAgICAgICAgICAgICAgICAgICAg ICAgICpWYWx1ZVN0cjsNCj4gKyAgVUFSVF9GTE9XX0NPTlRST0xfREVWSUNFX1BBVEggKlVhcnRG bG93Q29udHJvbDsNCj4gKw0KPiArICBWYWx1ZVN0ciAgICAgICAgPSBHZXROZXh0UGFyYW1TdHIg KCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsgIFVhcnRGbG93Q29udHJvbCA9IChVQVJUX0ZMT1dfQ09O VFJPTF9ERVZJQ0VfUEFUSCAqKSBDcmVhdGVEZXZpY2VOb2RlICgNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVTU0FHSU5HX0RFVklD RV9QQVRILA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBNU0dfVkVORE9SX0RQLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVUlOVDE2KSBzaXplb2YgKFVBUlRfRkxPV19D T05UUk9MX0RFVklDRV9QQVRIKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICApOw0KPiArDQo+ICsgIENvcHlHdWlkICgmVWFydEZsb3dD b250cm9sLT5HdWlkLCAmZ0VmaVVhcnREZXZpY2VQYXRoR3VpZCk7DQo+ICsgIGlmIChTdHJDbXAg KFZhbHVlU3RyLCBMIlhvblhvZmYiKSA9PSAwKSB7DQo+ICsgICAgVWFydEZsb3dDb250cm9sLT5G bG93Q29udHJvbE1hcCA9IDI7DQo+ICsgIH0gZWxzZSBpZiAoU3RyQ21wIChWYWx1ZVN0ciwgTCJI YXJkd2FyZSIpID09IDApIHsNCj4gKyAgICBVYXJ0Rmxvd0NvbnRyb2wtPkZsb3dDb250cm9sTWFw ID0gMTsNCj4gKyAgfSBlbHNlIHsNCj4gKyAgICBVYXJ0Rmxvd0NvbnRyb2wtPkZsb3dDb250cm9s TWFwID0gMDsNCj4gKyAgfQ0KPiArDQo+ICsgIHJldHVybiAoRUZJX0RFVklDRV9QQVRIX1BST1RP Q09MICopIFVhcnRGbG93Q29udHJvbDsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIENvbnZlcnRz IGEgdGV4dCBkZXZpY2UgcGF0aCBub2RlIHRvIFNlcmlhbCBBdHRhY2hlZCBTQ1NJIGRldmljZSBw YXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArICBAcGFyYW0gVGV4dERldmljZU5vZGUgIFRoZSBpbnB1 dCBUZXh0IGRldmljZSBwYXRoIG5vZGUuDQo+ICsNCj4gKyAgQHJldHVybiBBIHBvaW50ZXIgdG8g dGhlIG5ld2x5LWNyZWF0ZWQgU2VyaWFsIEF0dGFjaGVkIFNDU0kgZGV2aWNlIHBhdGggc3RydWN0 dXJlLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqDQo+ICtEZXZQ YXRoRnJvbVRleHRTQVMgKA0KPiArICAgQ0hBUjE2ICpUZXh0RGV2aWNlTm9kZQ0KPiArICApDQo+ ICt7DQo+ICsgIENIQVIxNiAgICAgICAgICAqQWRkcmVzc1N0cjsNCj4gKyAgQ0hBUjE2ICAgICAg ICAgICpMdW5TdHI7DQo+ICsgIENIQVIxNiAgICAgICAgICAqUlRQU3RyOw0KPiArICBDSEFSMTYg ICAgICAgICAgKlNBU1NBVEFTdHI7DQo+ICsgIENIQVIxNiAgICAgICAgICAqTG9jYXRpb25TdHI7 DQo+ICsgIENIQVIxNiAgICAgICAgICAqQ29ubmVjdFN0cjsNCj4gKyAgQ0hBUjE2ICAgICAgICAg ICpEcml2ZUJheVN0cjsNCj4gKyAgQ0hBUjE2ICAgICAgICAgICpSZXNlcnZlZFN0cjsNCj4gKyAg VUlOVDE2ICAgICAgICAgIEluZm87DQo+ICsgIFVJTlQxNiAgICAgICAgICBVaW50MTY7DQo+ICsg IFNBU19ERVZJQ0VfUEFUSCAqU2FzOw0KPiArDQo+ICsgIEFkZHJlc3NTdHIgID0gR2V0TmV4dFBh cmFtU3RyICgmVGV4dERldmljZU5vZGUpOw0KPiArICBMdW5TdHIgICAgICA9IEdldE5leHRQYXJh bVN0ciAoJlRleHREZXZpY2VOb2RlKTsNCj4gKyAgUlRQU3RyICAgICAgPSBHZXROZXh0UGFyYW1T dHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsgIFNBU1NBVEFTdHIgID0gR2V0TmV4dFBhcmFtU3Ry ICgmVGV4dERldmljZU5vZGUpOw0KPiArICBMb2NhdGlvblN0ciA9IEdldE5leHRQYXJhbVN0ciAo JlRleHREZXZpY2VOb2RlKTsNCj4gKyAgQ29ubmVjdFN0ciAgPSBHZXROZXh0UGFyYW1TdHIgKCZU ZXh0RGV2aWNlTm9kZSk7DQo+ICsgIERyaXZlQmF5U3RyID0gR2V0TmV4dFBhcmFtU3RyICgmVGV4 dERldmljZU5vZGUpOw0KPiArICBSZXNlcnZlZFN0ciA9IEdldE5leHRQYXJhbVN0ciAoJlRleHRE ZXZpY2VOb2RlKTsNCj4gKyAgU2FzICAgICAgICAgPSAoU0FTX0RFVklDRV9QQVRIICopIENyZWF0 ZURldmljZU5vZGUgKA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TUVTU0FHSU5HX0RFVklDRV9QQVRILA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgTVNHX1ZFTkRPUl9EUCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChVSU5UMTYpIHNpemVvZiAoU0FTX0RFVklDRV9QQVRIKQ0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCj4gKw0KPiArICBDb3B5R3VpZCAoJlNh cy0+R3VpZCwgJmdFZmlTYXNEZXZpY2VQYXRoR3VpZCk7DQo+ICsgIFN0cnRvaTY0IChBZGRyZXNz U3RyLCAmU2FzLT5TYXNBZGRyZXNzKTsNCj4gKyAgU3RydG9pNjQgKEx1blN0ciwgJlNhcy0+THVu KTsNCj4gKyAgU2FzLT5SZWxhdGl2ZVRhcmdldFBvcnQgPSAoVUlOVDE2KSBTdHJ0b2kgKFJUUFN0 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 cy0+RGV2aWNlVG9wb2xvZ3kgPSBJbmZvOw0KPiArICBTYXMtPlJlc2VydmVkICAgICAgID0gKFVJ TlQzMikgU3RydG9pIChSZXNlcnZlZFN0cik7DQo+ICsNCj4gKyAgcmV0dXJuIChFRklfREVWSUNF X1BBVEhfUFJPVE9DT0wgKikgU2FzOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgQ29udmVydHMg YSB0ZXh0IGRldmljZSBwYXRoIG5vZGUgdG8gU2VyaWFsIEF0dGFjaGVkIFNDU0kgRXggZGV2aWNl IHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsgIEBwYXJhbSBUZXh0RGV2aWNlTm9kZSAgVGhlIGlu cHV0IFRleHQgZGV2aWNlIHBhdGggbm9kZS4NCj4gKw0KPiArICBAcmV0dXJuIEEgcG9pbnRlciB0 byB0aGUgbmV3bHktY3JlYXRlZCBTZXJpYWwgQXR0YWNoZWQgU0NTSSBFeCBkZXZpY2UgcGF0aCBz dHJ1Y3R1cmUuDQo+ICsNCj4gKyoqLw0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoNCj4g K0RldlBhdGhGcm9tVGV4dFNhc0V4ICgNCj4gKyAgIENIQVIxNiAqVGV4dERldmljZU5vZGUNCj4g KyAgKQ0KPiArew0KPiArICBDSEFSMTYgICAgICAgICAgICAqQWRkcmVzc1N0cjsNCj4gKyAgQ0hB UjE2ICAgICAgICAgICAgKkx1blN0cjsNCj4gKyAgQ0hBUjE2ICAgICAgICAgICAgKlJUUFN0cjsN Cj4gKyAgQ0hBUjE2ICAgICAgICAgICAgKlNBU1NBVEFTdHI7DQo+ICsgIENIQVIxNiAgICAgICAg ICAgICpMb2NhdGlvblN0cjsNCj4gKyAgQ0hBUjE2ICAgICAgICAgICAgKkNvbm5lY3RTdHI7DQo+ ICsgIENIQVIxNiAgICAgICAgICAgICpEcml2ZUJheVN0cjsNCj4gKyAgVUlOVDE2ICAgICAgICAg ICAgSW5mbzsNCj4gKyAgVUlOVDE2ICAgICAgICAgICAgVWludDE2Ow0KPiArICBVSU5UNjQgICAg ICAgICAgICBTYXNBZGRyZXNzOw0KPiArICBVSU5UNjQgICAgICAgICAgICBMdW47DQo+ICsgIFNB U0VYX0RFVklDRV9QQVRIICpTYXNFeDsNCj4gKw0KPiArICBBZGRyZXNzU3RyICA9IEdldE5leHRQ YXJhbVN0ciAoJlRleHREZXZpY2VOb2RlKTsNCj4gKyAgTHVuU3RyICAgICAgPSBHZXROZXh0UGFy YW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsgIFJUUFN0ciAgICAgID0gR2V0TmV4dFBhcmFt U3RyICgmVGV4dERldmljZU5vZGUpOw0KPiArICBTQVNTQVRBU3RyICA9IEdldE5leHRQYXJhbVN0 ciAoJlRleHREZXZpY2VOb2RlKTsNCj4gKyAgTG9jYXRpb25TdHIgPSBHZXROZXh0UGFyYW1TdHIg KCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsgIENvbm5lY3RTdHIgID0gR2V0TmV4dFBhcmFtU3RyICgm VGV4dERldmljZU5vZGUpOw0KPiArICBEcml2ZUJheVN0ciA9IEdldE5leHRQYXJhbVN0ciAoJlRl eHREZXZpY2VOb2RlKTsNCj4gKyAgU2FzRXggICAgICAgPSAoU0FTRVhfREVWSUNFX1BBVEggKikg Q3JlYXRlRGV2aWNlTm9kZSAoDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTUVTU0FHSU5HX0RFVklDRV9QQVRILA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE1TR19TQVNFWF9EUCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoVUlOVDE2KSBzaXplb2YgKFNBU0VYX0RFVklDRV9QQVRIKQ0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQo+ICsNCj4gKyAgU3Ry dG9pNjQgKEFkZHJlc3NTdHIsICZTYXNBZGRyZXNzKTsNCj4gKyAgU3RydG9pNjQgKEx1blN0ciwg ICAgICZMdW4pOw0KPiArICBXcml0ZVVuYWxpZ25lZDY0ICgoVUlOVDY0ICopICZTYXNFeC0+U2Fz QWRkcmVzcywgU3dhcEJ5dGVzNjQgKFNhc0FkZHJlc3MpKTsNCj4gKyAgV3JpdGVVbmFsaWduZWQ2 NCAoKFVJTlQ2NCAqKSAmU2FzRXgtPkx1biwgICAgICAgIFN3YXBCeXRlczY0IChMdW4pKTsNCj4g KyAgU2FzRXgtPlJlbGF0aXZlVGFyZ2V0UG9ydCAgICAgID0gKFVJTlQxNikgU3RydG9pIChSVFBT dHIpOw0KPiArDQo+ICsgIGlmIChTdHJDbXAgKFNBU1NBVEFTdHIsIEwiTm9Ub3BvbG9neSIpID09 IDApIHsNCj4gKyAgICBJbmZvID0gMHgwOw0KPiArDQo+ICsgIH0gZWxzZSBpZiAoKFN0ckNtcCAo U0FTU0FUQVN0ciwgTCJTQVRBIikgPT0gMCkgfHwgKFN0ckNtcCAoU0FTU0FUQVN0ciwgTCJTQVMi KSA9PSAwKSkgew0KPiArDQo+ICsgICAgVWludDE2ID0gKFVJTlQxNikgU3RydG9pIChEcml2ZUJh eVN0cik7DQo+ICsgICAgaWYgKFVpbnQxNiA9PSAwKSB7DQo+ICsgICAgICBJbmZvID0gMHgxOw0K PiArICAgIH0gZWxzZSB7DQo+ICsgICAgICBJbmZvID0gKFVJTlQxNikgKDB4MiB8ICgoVWludDE2 IC0gMSkgPDwgOCkpOw0KPiArICAgIH0NCj4gKw0KPiArICAgIGlmIChTdHJDbXAgKFNBU1NBVEFT dHIsIEwiU0FUQSIpID09IDApIHsNCj4gKyAgICAgIEluZm8gfD0gQklUNDsNCj4gKyAgICB9DQo+ ICsNCj4gKyAgICAvLw0KPiArICAgIC8vIExvY2F0aW9uIGlzIGFuIGludGVnZXIgYmV0d2VlbiAw IGFuZCAxIG9yIGVsc2UNCj4gKyAgICAvLyB0aGUga2V5d29yZCBJbnRlcm5hbCAoMCkgb3IgRXh0 ZXJuYWwgKDEpLg0KPiArICAgIC8vDQo+ICsgICAgaWYgKFN0ckNtcCAoTG9jYXRpb25TdHIsIEwi RXh0ZXJuYWwiKSA9PSAwKSB7DQo+ICsgICAgICBVaW50MTYgPSAxOw0KPiArICAgIH0gZWxzZSBp ZiAoU3RyQ21wIChMb2NhdGlvblN0ciwgTCJJbnRlcm5hbCIpID09IDApIHsNCj4gKyAgICAgIFVp bnQxNiA9IDA7DQo+ICsgICAgfSBlbHNlIHsNCj4gKyAgICAgIFVpbnQxNiA9ICgoVUlOVDE2KSBT dHJ0b2kgKExvY2F0aW9uU3RyKSAmIEJJVDApOw0KPiArICAgIH0NCj4gKyAgICBJbmZvIHw9IChV aW50MTYgPDwgNSk7DQo+ICsNCj4gKyAgICAvLw0KPiArICAgIC8vIENvbm5lY3QgaXMgYW4gaW50 ZWdlciBiZXR3ZWVuIDAgYW5kIDMgb3IgZWxzZQ0KPiArICAgIC8vIHRoZSBrZXl3b3JkIERpcmVj dCAoMCkgb3IgRXhwYW5kZWQgKDEpLg0KPiArICAgIC8vDQo+ICsgICAgaWYgKFN0ckNtcCAoQ29u bmVjdFN0ciwgTCJFeHBhbmRlZCIpID09IDApIHsNCj4gKyAgICAgIFVpbnQxNiA9IDE7DQo+ICsg ICAgfSBlbHNlIGlmIChTdHJDbXAgKENvbm5lY3RTdHIsIEwiRGlyZWN0IikgPT0gMCkgew0KPiAr ICAgICAgVWludDE2ID0gMDsNCj4gKyAgICB9IGVsc2Ugew0KPiArICAgICAgVWludDE2ID0gKChV SU5UMTYpIFN0cnRvaSAoQ29ubmVjdFN0cikgJiAoQklUMCB8IEJJVDEpKTsNCj4gKyAgICB9DQo+ ICsgICAgSW5mbyB8PSAoVWludDE2IDw8IDYpOw0KPiArDQo+ICsgIH0gZWxzZSB7DQo+ICsgICAg SW5mbyA9IChVSU5UMTYpIFN0cnRvaSAoU0FTU0FUQVN0cik7DQo+ICsgIH0NCj4gKw0KPiArICBT YXNFeC0+RGV2aWNlVG9wb2xvZ3kgPSBJbmZvOw0KPiArDQo+ICsgIHJldHVybiAoRUZJX0RFVklD RV9QQVRIX1BST1RPQ09MICopIFNhc0V4Ow0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgQ29udmVy dHMgYSB0ZXh0IGRldmljZSBwYXRoIG5vZGUgdG8gTlZNIEV4cHJlc3MgTmFtZXNwYWNlIGRldmlj ZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArICBAcGFyYW0gVGV4dERldmljZU5vZGUgIFRoZSBp bnB1dCBUZXh0IGRldmljZSBwYXRoIG5vZGUuDQo+ICsNCj4gKyAgQHJldHVybiBBIHBvaW50ZXIg dG8gdGhlIG5ld2x5LWNyZWF0ZWQgTlZNIEV4cHJlc3MgTmFtZXNwYWNlIGRldmljZSBwYXRoIHN0 cnVjdHVyZS4NCj4gKw0KPiArKiovDQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0KPiAr RGV2UGF0aEZyb21UZXh0TlZNZSAoDQo+ICsgICBDSEFSMTYgKlRleHREZXZpY2VOb2RlDQo+ICsg ICkNCj4gK3sNCj4gKyAgQ0hBUjE2ICAgICAgICAgICAgICAgICAgICAgKk5hbWVzcGFjZUlkU3Ry Ow0KPiArICBDSEFSMTYgICAgICAgICAgICAgICAgICAgICAqTmFtZXNwYWNlVXVpZFN0cjsNCj4g KyAgTlZNRV9OQU1FU1BBQ0VfREVWSUNFX1BBVEggKk52bWU7DQo+ICsgIFVJTlQ4ICAgICAgICAg ICAgICAgICAgICAgICpVdWlkOw0KPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICBJbmRl eDsNCj4gKw0KPiArICBOYW1lc3BhY2VJZFN0ciAgID0gR2V0TmV4dFBhcmFtU3RyICgmVGV4dERl dmljZU5vZGUpOw0KPiArICBOYW1lc3BhY2VVdWlkU3RyID0gR2V0TmV4dFBhcmFtU3RyICgmVGV4 dERldmljZU5vZGUpOw0KPiArICBOdm1lID0gKE5WTUVfTkFNRVNQQUNFX0RFVklDRV9QQVRIICop IENyZWF0ZURldmljZU5vZGUgKA0KPiArICAgIE1FU1NBR0lOR19ERVZJQ0VfUEFUSCwNCj4gKyAg ICBNU0dfTlZNRV9OQU1FU1BBQ0VfRFAsDQo+ICsgICAgKFVJTlQxNikgc2l6ZW9mIChOVk1FX05B TUVTUEFDRV9ERVZJQ0VfUEFUSCkNCj4gKyAgICApOw0KPiArDQo+ICsgIE52bWUtPk5hbWVzcGFj ZUlkID0gKFVJTlQzMikgU3RydG9pIChOYW1lc3BhY2VJZFN0cik7DQo+ICsgIFV1aWQgPSAoVUlO VDggKikgJk52bWUtPk5hbWVzcGFjZVV1aWQ7DQo+ICsNCj4gKyAgSW5kZXggPSBzaXplb2YgKE52 bWUtPk5hbWVzcGFjZVV1aWQpIC8gc2l6ZW9mIChVSU5UOCk7DQo+ICsgIHdoaWxlIChJbmRleC0t ICE9IDApIHsNCj4gKyAgICBVdWlkW0luZGV4XSA9IChVSU5UOCkgU3RySGV4VG9VaW50biAoU3Bs aXRTdHIgKCZOYW1lc3BhY2VVdWlkU3RyLCBMJy0nKSk7DQo+ICsgIH0NCj4gKw0KPiArICByZXR1 cm4gKEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqKSBOdm1lOw0KPiArfQ0KPiArDQo+ICsvKioN Cj4gKyAgQ29udmVydHMgYSB0ZXh0IGRldmljZSBwYXRoIG5vZGUgdG8gVUZTIGRldmljZSBwYXRo IHN0cnVjdHVyZS4NCj4gKw0KPiArICBAcGFyYW0gVGV4dERldmljZU5vZGUgIFRoZSBpbnB1dCBU ZXh0IGRldmljZSBwYXRoIG5vZGUuDQo+ICsNCj4gKyAgQHJldHVybiBBIHBvaW50ZXIgdG8gdGhl IG5ld2x5LWNyZWF0ZWQgVUZTIGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArKiovDQo+ ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0KPiArRGV2UGF0aEZyb21UZXh0VWZzICgNCj4g KyAgIENIQVIxNiAqVGV4dERldmljZU5vZGUNCj4gKyAgKQ0KPiArew0KPiArICBDSEFSMTYgICAg ICAgICAgICAqUHVuU3RyOw0KPiArICBDSEFSMTYgICAgICAgICAgICAqTHVuU3RyOw0KPiArICBV RlNfREVWSUNFX1BBVEggICAqVWZzOw0KPiArDQo+ICsgIFB1blN0ciA9IEdldE5leHRQYXJhbVN0 ciAoJlRleHREZXZpY2VOb2RlKTsNCj4gKyAgTHVuU3RyID0gR2V0TmV4dFBhcmFtU3RyICgmVGV4 dERldmljZU5vZGUpOw0KPiArICBVZnMgICAgPSAoVUZTX0RFVklDRV9QQVRIICopIENyZWF0ZURl dmljZU5vZGUgKA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVTU0FHSU5H X0RFVklDRV9QQVRILA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTVNHX1VG U19EUCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChVSU5UMTYpIHNpemVv ZiAoVUZTX0RFVklDRV9QQVRIKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KTsNCj4gKw0KPiArICBVZnMtPlB1biA9IChVSU5UOCkgU3RydG9pIChQdW5TdHIpOw0KPiArICBV ZnMtPkx1biA9IChVSU5UOCkgU3RydG9pIChMdW5TdHIpOw0KPiArDQo+ICsgIHJldHVybiAoRUZJ X0RFVklDRV9QQVRIX1BST1RPQ09MICopIFVmczsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIENv bnZlcnRzIGEgdGV4dCBkZXZpY2UgcGF0aCBub2RlIHRvIFNEIChTZWN1cmUgRGlnaXRhbCkgZGV2 aWNlIHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsgIEBwYXJhbSBUZXh0RGV2aWNlTm9kZSAgVGhl IGlucHV0IFRleHQgZGV2aWNlIHBhdGggbm9kZS4NCj4gKw0KPiArICBAcmV0dXJuIEEgcG9pbnRl ciB0byB0aGUgbmV3bHktY3JlYXRlZCBTRCBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4g KyoqLw0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoNCj4gK0RldlBhdGhGcm9tVGV4dFNk ICgNCj4gKyAgIENIQVIxNiAqVGV4dERldmljZU5vZGUNCj4gKyAgKQ0KPiArew0KPiArICBDSEFS MTYgICAgICAgICAgICAqU2xvdE51bWJlclN0cjsNCj4gKyAgU0RfREVWSUNFX1BBVEggICAgKlNk Ow0KPiArDQo+ICsgIFNsb3ROdW1iZXJTdHIgPSBHZXROZXh0UGFyYW1TdHIgKCZUZXh0RGV2aWNl Tm9kZSk7DQo+ICsgIFNkICAgICAgICAgICAgPSAoU0RfREVWSUNFX1BBVEggKikgQ3JlYXRlRGV2 aWNlTm9kZSAoDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRVNT QUdJTkdfREVWSUNFX1BBVEgsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBNU0dfU0RfRFAsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoVUlOVDE2KSBzaXplb2YgKFNEX0RFVklDRV9QQVRIKQ0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKTsNCj4gKw0KPiArICBTZC0+U2xvdE51bWJlciA9IChVSU5U OCkgU3RydG9pIChTbG90TnVtYmVyU3RyKTsNCj4gKw0KPiArICByZXR1cm4gKEVGSV9ERVZJQ0Vf UEFUSF9QUk9UT0NPTCAqKSBTZDsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIENvbnZlcnRzIGEg dGV4dCBkZXZpY2UgcGF0aCBub2RlIHRvIEVNTUMgKEVtYmVkZGVkIE1NQykgZGV2aWNlIHBhdGgg c3RydWN0dXJlLg0KPiArDQo+ICsgIEBwYXJhbSBUZXh0RGV2aWNlTm9kZSAgVGhlIGlucHV0IFRl eHQgZGV2aWNlIHBhdGggbm9kZS4NCj4gKw0KPiArICBAcmV0dXJuIEEgcG9pbnRlciB0byB0aGUg bmV3bHktY3JlYXRlZCBFTU1DIGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArKiovDQo+ ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0KPiArRGV2UGF0aEZyb21UZXh0RW1tYyAoDQo+ ICsgICBDSEFSMTYgKlRleHREZXZpY2VOb2RlDQo+ICsgICkNCj4gK3sNCj4gKyAgQ0hBUjE2ICAg ICAgICAgICAgKlNsb3ROdW1iZXJTdHI7DQo+ICsgIEVNTUNfREVWSUNFX1BBVEggICpFbW1jOw0K PiArDQo+ICsgIFNsb3ROdW1iZXJTdHIgPSBHZXROZXh0UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9k ZSk7DQo+ICsgIEVtbWMgICAgICAgICAgPSAoRU1NQ19ERVZJQ0VfUEFUSCAqKSBDcmVhdGVEZXZp Y2VOb2RlICgNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FU1NB R0lOR19ERVZJQ0VfUEFUSCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE1TR19FTU1DX0RQLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKFVJTlQxNikgc2l6ZW9mIChFTU1DX0RFVklDRV9QQVRIKQ0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKTsNCj4gKw0KPiArICBFbW1jLT5TbG90TnVtYmVyID0g KFVJTlQ4KSBTdHJ0b2kgKFNsb3ROdW1iZXJTdHIpOw0KPiArDQo+ICsgIHJldHVybiAoRUZJX0RF VklDRV9QQVRIX1BST1RPQ09MICopIEVtbWM7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBDb252 ZXJ0cyBhIHRleHQgZGV2aWNlIHBhdGggbm9kZSB0byBEZWJ1ZyBQb3J0IGRldmljZSBwYXRoIHN0 cnVjdHVyZS4NCj4gKw0KPiArICBAcGFyYW0gVGV4dERldmljZU5vZGUgIFRoZSBpbnB1dCBUZXh0 IGRldmljZSBwYXRoIG5vZGUuDQo+ICsNCj4gKyAgQHJldHVybiBBIHBvaW50ZXIgdG8gdGhlIG5l d2x5LWNyZWF0ZWQgRGVidWcgUG9ydCBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyoq Lw0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoNCj4gK0RldlBhdGhGcm9tVGV4dERlYnVn UG9ydCAoDQo+ICsgICBDSEFSMTYgKlRleHREZXZpY2VOb2RlDQo+ICsgICkNCj4gK3sNCj4gKyAg VkVORE9SX0RFRklORURfTUVTU0FHSU5HX0RFVklDRV9QQVRIICAqVmVuZDsNCj4gKw0KPiArICBW ZW5kID0gKFZFTkRPUl9ERUZJTkVEX01FU1NBR0lOR19ERVZJQ0VfUEFUSCAqKSBDcmVhdGVEZXZp Y2VOb2RlICgNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBNRVNTQUdJTkdfREVWSUNFX1BBVEgsDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTVNHX1ZFTkRPUl9EUCwNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVUlOVDE2KSBzaXpl b2YgKFZFTkRPUl9ERUZJTkVEX01FU1NBR0lOR19ERVZJQ0VfUEFUSCkNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KPiArDQo+ICsgIENv cHlHdWlkICgmVmVuZC0+R3VpZCwgJmdFZmlEZWJ1Z1BvcnREZXZpY2VQYXRoR3VpZCk7DQo+ICsN Cj4gKyAgcmV0dXJuIChFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKikgVmVuZDsNCj4gK30NCj4g Kw0KPiArLyoqDQo+ICsgIENvbnZlcnRzIGEgdGV4dCBkZXZpY2UgcGF0aCBub2RlIHRvIE1BQyBk ZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyAgQHBhcmFtIFRleHREZXZpY2VOb2RlICBU aGUgaW5wdXQgVGV4dCBkZXZpY2UgcGF0aCBub2RlLg0KPiArDQo+ICsgIEByZXR1cm4gQSBwb2lu dGVyIHRvIHRoZSBuZXdseS1jcmVhdGVkIE1BQyBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsN Cj4gKyoqLw0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoNCj4gK0RldlBhdGhGcm9tVGV4 dE1BQyAoDQo+ICsgICBDSEFSMTYgKlRleHREZXZpY2VOb2RlDQo+ICsgICkNCj4gK3sNCj4gKyAg Q0hBUjE2ICAgICAgICAgICAgICAgICpBZGRyZXNzU3RyOw0KPiArICBDSEFSMTYgICAgICAgICAg ICAgICAgKklmVHlwZVN0cjsNCj4gKyAgVUlOVE4gICAgICAgICAgICAgICAgIExlbmd0aDsNCj4g KyAgTUFDX0FERFJfREVWSUNFX1BBVEggICpNQUNEZXZQYXRoOw0KPiArDQo+ICsgIEFkZHJlc3NT dHIgICAgPSBHZXROZXh0UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsgIElmVHlwZVN0 ciAgICAgPSBHZXROZXh0UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsgIE1BQ0RldlBh dGggICAgPSAoTUFDX0FERFJfREVWSUNFX1BBVEggKikgQ3JlYXRlRGV2aWNlTm9kZSAoDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVTU0FHSU5HX0RF VklDRV9QQVRILA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE1TR19NQUNfQUREUl9EUCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoVUlOVDE2KSBzaXplb2YgKE1BQ19BRERSX0RFVklDRV9QQVRIKQ0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQo+ICsNCj4g KyAgTUFDRGV2UGF0aC0+SWZUeXBlICAgPSAoVUlOVDgpIFN0cnRvaSAoSWZUeXBlU3RyKTsNCj4g Kw0KPiArICBMZW5ndGggPSBzaXplb2YgKEVGSV9NQUNfQUREUkVTUyk7DQo+ICsgIGlmIChNQUNE ZXZQYXRoLT5JZlR5cGUgPT0gMHgwMSB8fCBNQUNEZXZQYXRoLT5JZlR5cGUgPT0gMHgwMCkgew0K PiArICAgIExlbmd0aCA9IDY7DQo+ICsgIH0NCj4gKw0KPiArICBTdHJIZXhUb0J5dGVzIChBZGRy ZXNzU3RyLCBMZW5ndGggKiAyLCBNQUNEZXZQYXRoLT5NYWNBZGRyZXNzLkFkZHIsIExlbmd0aCk7 DQo+ICsNCj4gKyAgcmV0dXJuIChFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKikgTUFDRGV2UGF0 aDsNCj4gK30NCj4gKw0KPiArDQo+ICsvKioNCj4gKyAgQ29udmVydHMgYSB0ZXh0IGZvcm1hdCB0 byB0aGUgbmV0d29yayBwcm90b2NvbCBJRC4NCj4gKw0KPiArICBAcGFyYW0gVGV4dCAgU3RyaW5n IG9mIHByb3RvY29sIGZpZWxkLg0KPiArDQo+ICsgIEByZXR1cm4gTmV0d29yayBwcm90b2NvbCBJ RCAuDQo+ICsNCj4gKyoqLw0KPiArVUlOVE4NCj4gK05ldHdvcmtQcm90b2NvbEZyb21UZXh0ICgN Cj4gKyAgIENIQVIxNiAqVGV4dA0KPiArICApDQo+ICt7DQo+ICsgIGlmIChTdHJDbXAgKFRleHQs IEwiVURQIikgPT0gMCkgew0KPiArICAgIHJldHVybiBSRkNfMTcwMF9VRFBfUFJPVE9DT0w7DQo+ ICsgIH0NCj4gKw0KPiArICBpZiAoU3RyQ21wIChUZXh0LCBMIlRDUCIpID09IDApIHsNCj4gKyAg ICByZXR1cm4gUkZDXzE3MDBfVENQX1BST1RPQ09MOw0KPiArICB9DQo+ICsNCj4gKyAgcmV0dXJu IFN0cnRvaSAoVGV4dCk7DQo+ICt9DQo+ICsNCj4gKw0KPiArLyoqDQo+ICsgIENvbnZlcnRzIGEg dGV4dCBkZXZpY2UgcGF0aCBub2RlIHRvIElQVjQgZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiAr DQo+ICsgIEBwYXJhbSBUZXh0RGV2aWNlTm9kZSAgVGhlIGlucHV0IFRleHQgZGV2aWNlIHBhdGgg bm9kZS4NCj4gKw0KPiArICBAcmV0dXJuIEEgcG9pbnRlciB0byB0aGUgbmV3bHktY3JlYXRlZCBJ UFY0IGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArKiovDQo+ICtFRklfREVWSUNFX1BB VEhfUFJPVE9DT0wgKg0KPiArRGV2UGF0aEZyb21UZXh0SVB2NCAoDQo+ICsgICBDSEFSMTYgKlRl eHREZXZpY2VOb2RlDQo+ICsgICkNCj4gK3sNCj4gKyAgQ0hBUjE2ICAgICAgICAgICAgKlJlbW90 ZUlQU3RyOw0KPiArICBDSEFSMTYgICAgICAgICAgICAqUHJvdG9jb2xTdHI7DQo+ICsgIENIQVIx NiAgICAgICAgICAgICpUeXBlU3RyOw0KPiArICBDSEFSMTYgICAgICAgICAgICAqTG9jYWxJUFN0 cjsNCj4gKyAgQ0hBUjE2ICAgICAgICAgICAgKkdhdGV3YXlJUFN0cjsNCj4gKyAgQ0hBUjE2ICAg ICAgICAgICAgKlN1Ym5ldE1hc2tTdHI7DQo+ICsgIElQdjRfREVWSUNFX1BBVEggICpJUHY0Ow0K PiArDQo+ICsgIFJlbW90ZUlQU3RyICAgICAgICAgICA9IEdldE5leHRQYXJhbVN0ciAoJlRleHRE ZXZpY2VOb2RlKTsNCj4gKyAgUHJvdG9jb2xTdHIgICAgICAgICAgID0gR2V0TmV4dFBhcmFtU3Ry ICgmVGV4dERldmljZU5vZGUpOw0KPiArICBUeXBlU3RyICAgICAgICAgICAgICAgPSBHZXROZXh0 UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsgIExvY2FsSVBTdHIgICAgICAgICAgICA9 IEdldE5leHRQYXJhbVN0ciAoJlRleHREZXZpY2VOb2RlKTsNCj4gKyAgR2F0ZXdheUlQU3RyICAg ICAgICAgID0gR2V0TmV4dFBhcmFtU3RyICgmVGV4dERldmljZU5vZGUpOw0KPiArICBTdWJuZXRN YXNrU3RyICAgICAgICAgPSBHZXROZXh0UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsg IElQdjQgICAgICAgICAgICAgICAgICA9IChJUHY0X0RFVklDRV9QQVRIICopIENyZWF0ZURldmlj ZU5vZGUgKA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE1FU1NBR0lOR19ERVZJQ0VfUEFUSCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBNU0dfSVB2NF9EUCwNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVUlOVDE2KSBzaXplb2YgKElQdjRfREVW SUNFX1BBVEgpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKTsNCj4gKw0KPiArICBTdHJUb0lwdjRBZGRyZXNzIChSZW1vdGVJUFN0ciwgTlVMTCwg JklQdjQtPlJlbW90ZUlwQWRkcmVzcywgTlVMTCk7DQo+ICsgIElQdjQtPlByb3RvY29sID0gKFVJ TlQxNikgTmV0d29ya1Byb3RvY29sRnJvbVRleHQgKFByb3RvY29sU3RyKTsNCj4gKyAgaWYgKFN0 ckNtcCAoVHlwZVN0ciwgTCJTdGF0aWMiKSA9PSAwKSB7DQo+ICsgICAgSVB2NC0+U3RhdGljSXBB ZGRyZXNzID0gVFJVRTsNCj4gKyAgfSBlbHNlIHsNCj4gKyAgICBJUHY0LT5TdGF0aWNJcEFkZHJl c3MgPSBGQUxTRTsNCj4gKyAgfQ0KPiArDQo+ICsgIFN0clRvSXB2NEFkZHJlc3MgKExvY2FsSVBT dHIsIE5VTEwsICZJUHY0LT5Mb2NhbElwQWRkcmVzcywgTlVMTCk7DQo+ICsgIGlmICghSVNfTlVM TCAoKkdhdGV3YXlJUFN0cikgJiYgIUlTX05VTEwgKCpTdWJuZXRNYXNrU3RyKSkgew0KPiArICAg IFN0clRvSXB2NEFkZHJlc3MgKEdhdGV3YXlJUFN0ciwgIE5VTEwsICZJUHY0LT5HYXRld2F5SXBB ZGRyZXNzLCBOVUxMKTsNCj4gKyAgICBTdHJUb0lwdjRBZGRyZXNzIChTdWJuZXRNYXNrU3RyLCBO VUxMLCAmSVB2NC0+U3VibmV0TWFzaywgICAgICAgTlVMTCk7DQo+ICsgIH0gZWxzZSB7DQo+ICsg ICAgWmVyb01lbSAoJklQdjQtPkdhdGV3YXlJcEFkZHJlc3MsIHNpemVvZiAoSVB2NC0+R2F0ZXdh eUlwQWRkcmVzcykpOw0KPiArICAgIFplcm9NZW0gKCZJUHY0LT5TdWJuZXRNYXNrLCAgICBzaXpl b2YgKElQdjQtPlN1Ym5ldE1hc2spKTsNCj4gKyAgfQ0KPiArDQo+ICsgIElQdjQtPkxvY2FsUG9y dCAgICAgICA9IDA7DQo+ICsgIElQdjQtPlJlbW90ZVBvcnQgICAgICA9IDA7DQo+ICsNCj4gKyAg cmV0dXJuIChFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKikgSVB2NDsNCj4gK30NCj4gKw0KPiAr LyoqDQo+ICsgIENvbnZlcnRzIGEgdGV4dCBkZXZpY2UgcGF0aCBub2RlIHRvIElQVjYgZGV2aWNl IHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsgIEBwYXJhbSBUZXh0RGV2aWNlTm9kZSAgVGhlIGlu cHV0IFRleHQgZGV2aWNlIHBhdGggbm9kZS4NCj4gKw0KPiArICBAcmV0dXJuIEEgcG9pbnRlciB0 byB0aGUgbmV3bHktY3JlYXRlZCBJUFY2IGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiAr KiovDQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0KPiArRGV2UGF0aEZyb21UZXh0SVB2 NiAoDQo+ICsgICBDSEFSMTYgKlRleHREZXZpY2VOb2RlDQo+ICsgICkNCj4gK3sNCj4gKyAgQ0hB UjE2ICAgICAgICAgICAgKlJlbW90ZUlQU3RyOw0KPiArICBDSEFSMTYgICAgICAgICAgICAqUHJv dG9jb2xTdHI7DQo+ICsgIENIQVIxNiAgICAgICAgICAgICpUeXBlU3RyOw0KPiArICBDSEFSMTYg ICAgICAgICAgICAqTG9jYWxJUFN0cjsNCj4gKyAgQ0hBUjE2ICAgICAgICAgICAgKkdhdGV3YXlJ UFN0cjsNCj4gKyAgQ0hBUjE2ICAgICAgICAgICAgKlByZWZpeExlbmd0aFN0cjsNCj4gKyAgSVB2 Nl9ERVZJQ0VfUEFUSCAgKklQdjY7DQo+ICsNCj4gKyAgUmVtb3RlSVBTdHIgICAgICAgICAgID0g R2V0TmV4dFBhcmFtU3RyICgmVGV4dERldmljZU5vZGUpOw0KPiArICBQcm90b2NvbFN0ciAgICAg ICAgICAgPSBHZXROZXh0UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsgIFR5cGVTdHIg ICAgICAgICAgICAgICA9IEdldE5leHRQYXJhbVN0ciAoJlRleHREZXZpY2VOb2RlKTsNCj4gKyAg TG9jYWxJUFN0ciAgICAgICAgICAgID0gR2V0TmV4dFBhcmFtU3RyICgmVGV4dERldmljZU5vZGUp Ow0KPiArICBQcmVmaXhMZW5ndGhTdHIgICAgICAgPSBHZXROZXh0UGFyYW1TdHIgKCZUZXh0RGV2 aWNlTm9kZSk7DQo+ICsgIEdhdGV3YXlJUFN0ciAgICAgICAgICA9IEdldE5leHRQYXJhbVN0ciAo JlRleHREZXZpY2VOb2RlKTsNCj4gKyAgSVB2NiAgICAgICAgICAgICAgICAgID0gKElQdjZfREVW SUNFX1BBVEggKikgQ3JlYXRlRGV2aWNlTm9kZSAoDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVTU0FHSU5HX0RFVklDRV9QQVRILA0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1TR19JUHY2X0RQ LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChV SU5UMTYpIHNpemVvZiAoSVB2Nl9ERVZJQ0VfUEFUSCkNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KPiArDQo+ICsgIFN0clRvSXB2NkFkZHJl c3MgKFJlbW90ZUlQU3RyLCBOVUxMLCAmSVB2Ni0+UmVtb3RlSXBBZGRyZXNzLCBOVUxMKTsNCj4g KyAgSVB2Ni0+UHJvdG9jb2wgICAgICAgID0gKFVJTlQxNikgTmV0d29ya1Byb3RvY29sRnJvbVRl eHQgKFByb3RvY29sU3RyKTsNCj4gKyAgaWYgKFN0ckNtcCAoVHlwZVN0ciwgTCJTdGF0aWMiKSA9 PSAwKSB7DQo+ICsgICAgSVB2Ni0+SXBBZGRyZXNzT3JpZ2luID0gMDsNCj4gKyAgfSBlbHNlIGlm IChTdHJDbXAgKFR5cGVTdHIsIEwiU3RhdGVsZXNzQXV0b0NvbmZpZ3VyZSIpID09IDApIHsNCj4g KyAgICBJUHY2LT5JcEFkZHJlc3NPcmlnaW4gPSAxOw0KPiArICB9IGVsc2Ugew0KPiArICAgIElQ djYtPklwQWRkcmVzc09yaWdpbiA9IDI7DQo+ICsgIH0NCj4gKw0KPiArICBTdHJUb0lwdjZBZGRy ZXNzIChMb2NhbElQU3RyLCBOVUxMLCAmSVB2Ni0+TG9jYWxJcEFkZHJlc3MsIE5VTEwpOw0KPiAr ICBpZiAoIUlTX05VTEwgKCpHYXRld2F5SVBTdHIpICYmICFJU19OVUxMICgqUHJlZml4TGVuZ3Ro U3RyKSkgew0KPiArICAgIFN0clRvSXB2NkFkZHJlc3MgKEdhdGV3YXlJUFN0ciwgTlVMTCwgJklQ djYtPkdhdGV3YXlJcEFkZHJlc3MsIE5VTEwpOw0KPiArICAgIElQdjYtPlByZWZpeExlbmd0aCA9 IChVSU5UOCkgU3RydG9pIChQcmVmaXhMZW5ndGhTdHIpOw0KPiArICB9IGVsc2Ugew0KPiArICAg IFplcm9NZW0gKCZJUHY2LT5HYXRld2F5SXBBZGRyZXNzLCBzaXplb2YgKElQdjYtPkdhdGV3YXlJ cEFkZHJlc3MpKTsNCj4gKyAgICBJUHY2LT5QcmVmaXhMZW5ndGggPSAwOw0KPiArICB9DQo+ICsN Cj4gKyAgSVB2Ni0+TG9jYWxQb3J0ICAgICAgID0gMDsNCj4gKyAgSVB2Ni0+UmVtb3RlUG9ydCAg ICAgID0gMDsNCj4gKw0KPiArICByZXR1cm4gKEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqKSBJ UHY2Ow0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgQ29udmVydHMgYSB0ZXh0IGRldmljZSBwYXRo IG5vZGUgdG8gVUFSVCBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyAgQHBhcmFtIFRl eHREZXZpY2VOb2RlICBUaGUgaW5wdXQgVGV4dCBkZXZpY2UgcGF0aCBub2RlLg0KPiArDQo+ICsg IEByZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBuZXdseS1jcmVhdGVkIFVBUlQgZGV2aWNlIHBhdGgg c3RydWN0dXJlLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqDQo+ ICtEZXZQYXRoRnJvbVRleHRVYXJ0ICgNCj4gKyAgIENIQVIxNiAqVGV4dERldmljZU5vZGUNCj4g KyAgKQ0KPiArew0KPiArICBDSEFSMTYgICAgICAgICAgICAqQmF1ZFN0cjsNCj4gKyAgQ0hBUjE2 ICAgICAgICAgICAgKkRhdGFCaXRzU3RyOw0KPiArICBDSEFSMTYgICAgICAgICAgICAqUGFyaXR5 U3RyOw0KPiArICBDSEFSMTYgICAgICAgICAgICAqU3RvcEJpdHNTdHI7DQo+ICsgIFVBUlRfREVW SUNFX1BBVEggICpVYXJ0Ow0KPiArDQo+ICsgIEJhdWRTdHIgICAgICAgICA9IEdldE5leHRQYXJh bVN0ciAoJlRleHREZXZpY2VOb2RlKTsNCj4gKyAgRGF0YUJpdHNTdHIgICAgID0gR2V0TmV4dFBh cmFtU3RyICgmVGV4dERldmljZU5vZGUpOw0KPiArICBQYXJpdHlTdHIgICAgICAgPSBHZXROZXh0 UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsgIFN0b3BCaXRzU3RyICAgICA9IEdldE5l eHRQYXJhbVN0ciAoJlRleHREZXZpY2VOb2RlKTsNCj4gKyAgVWFydCAgICAgICAgICAgID0gKFVB UlRfREVWSUNFX1BBVEggKikgQ3JlYXRlRGV2aWNlTm9kZSAoDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVTU0FHSU5HX0RFVklDRV9QQVRILA0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1TR19VQVJUX0RQLA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChVSU5UMTYpIHNpemVv ZiAoVUFSVF9ERVZJQ0VfUEFUSCkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICApOw0KPiArDQo+ICsgIGlmIChTdHJDbXAgKEJhdWRTdHIsIEwiREVGQVVMVCIp ID09IDApIHsNCj4gKyAgICBVYXJ0LT5CYXVkUmF0ZSA9IDExNTIwMDsNCj4gKyAgfSBlbHNlIHsN Cj4gKyAgICBTdHJ0b2k2NCAoQmF1ZFN0ciwgJlVhcnQtPkJhdWRSYXRlKTsNCj4gKyAgfQ0KPiAr ICBVYXJ0LT5EYXRhQml0cyAgPSAoVUlOVDgpICgoU3RyQ21wIChEYXRhQml0c1N0ciwgTCJERUZB VUxUIikgPT0gMCkgPyA4IDogU3RydG9pIChEYXRhQml0c1N0cikpOw0KPiArICBzd2l0Y2ggKCpQ YXJpdHlTdHIpIHsNCj4gKyAgY2FzZSBMJ0QnOg0KPiArICAgIFVhcnQtPlBhcml0eSA9IDA7DQo+ ICsgICAgYnJlYWs7DQo+ICsNCj4gKyAgY2FzZSBMJ04nOg0KPiArICAgIFVhcnQtPlBhcml0eSA9 IDE7DQo+ICsgICAgYnJlYWs7DQo+ICsNCj4gKyAgY2FzZSBMJ0UnOg0KPiArICAgIFVhcnQtPlBh cml0eSA9IDI7DQo+ICsgICAgYnJlYWs7DQo+ICsNCj4gKyAgY2FzZSBMJ08nOg0KPiArICAgIFVh cnQtPlBhcml0eSA9IDM7DQo+ICsgICAgYnJlYWs7DQo+ICsNCj4gKyAgY2FzZSBMJ00nOg0KPiAr ICAgIFVhcnQtPlBhcml0eSA9IDQ7DQo+ICsgICAgYnJlYWs7DQo+ICsNCj4gKyAgY2FzZSBMJ1Mn Og0KPiArICAgIFVhcnQtPlBhcml0eSA9IDU7DQo+ICsgICAgYnJlYWs7DQo+ICsNCj4gKyAgZGVm YXVsdDoNCj4gKyAgICBVYXJ0LT5QYXJpdHkgPSAoVUlOVDgpIFN0cnRvaSAoUGFyaXR5U3RyKTsN Cj4gKyAgICBicmVhazsNCj4gKyAgfQ0KPiArDQo+ICsgIGlmIChTdHJDbXAgKFN0b3BCaXRzU3Ry LCBMIkQiKSA9PSAwKSB7DQo+ICsgICAgVWFydC0+U3RvcEJpdHMgPSAoVUlOVDgpIDA7DQo+ICsg IH0gZWxzZSBpZiAoU3RyQ21wIChTdG9wQml0c1N0ciwgTCIxIikgPT0gMCkgew0KPiArICAgIFVh cnQtPlN0b3BCaXRzID0gKFVJTlQ4KSAxOw0KPiArICB9IGVsc2UgaWYgKFN0ckNtcCAoU3RvcEJp dHNTdHIsIEwiMS41IikgPT0gMCkgew0KPiArICAgIFVhcnQtPlN0b3BCaXRzID0gKFVJTlQ4KSAy Ow0KPiArICB9IGVsc2UgaWYgKFN0ckNtcCAoU3RvcEJpdHNTdHIsIEwiMiIpID09IDApIHsNCj4g KyAgICBVYXJ0LT5TdG9wQml0cyA9IChVSU5UOCkgMzsNCj4gKyAgfSBlbHNlIHsNCj4gKyAgICBV YXJ0LT5TdG9wQml0cyA9IChVSU5UOCkgU3RydG9pIChTdG9wQml0c1N0cik7DQo+ICsgIH0NCj4g Kw0KPiArICByZXR1cm4gKEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqKSBVYXJ0Ow0KPiArfQ0K PiArDQo+ICsvKioNCj4gKyAgQ29udmVydHMgYSB0ZXh0IGRldmljZSBwYXRoIG5vZGUgdG8gVVNC IGNsYXNzIGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArICBAcGFyYW0gVGV4dERldmlj ZU5vZGUgIFRoZSBpbnB1dCBUZXh0IGRldmljZSBwYXRoIG5vZGUuDQo+ICsgIEBwYXJhbSBVc2JD bGFzc1RleHQgICAgQSBwb2ludGVyIHRvIFVTQl9DTEFTU19URVhUIHN0cnVjdHVyZSB0byBiZSBp bnRlZ3JhdGVkIHRvIFVTQiBDbGFzcyBUZXh0Lg0KPiArDQo+ICsgIEByZXR1cm4gQSBwb2ludGVy IHRvIHRoZSBuZXdseS1jcmVhdGVkIFVTQiBjbGFzcyBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ ICsNCj4gKyoqLw0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoNCj4gK0NvbnZlcnRGcm9t VGV4dFVzYkNsYXNzICgNCj4gKyAgIENIQVIxNiAgICAgICAgICpUZXh0RGV2aWNlTm9kZSwNCj4g KyAgIFVTQl9DTEFTU19URVhUICpVc2JDbGFzc1RleHQNCj4gKyAgKQ0KPiArew0KPiArICBDSEFS MTYgICAgICAgICAgICAgICAgKlZJRFN0cjsNCj4gKyAgQ0hBUjE2ICAgICAgICAgICAgICAgICpQ SURTdHI7DQo+ICsgIENIQVIxNiAgICAgICAgICAgICAgICAqQ2xhc3NTdHI7DQo+ICsgIENIQVIx NiAgICAgICAgICAgICAgICAqU3ViQ2xhc3NTdHI7DQo+ICsgIENIQVIxNiAgICAgICAgICAgICAg ICAqUHJvdG9jb2xTdHI7DQo+ICsgIFVTQl9DTEFTU19ERVZJQ0VfUEFUSCAqVXNiQ2xhc3M7DQo+ ICsNCj4gKyAgVXNiQ2xhc3MgICAgPSAoVVNCX0NMQVNTX0RFVklDRV9QQVRIICopIENyZWF0ZURl dmljZU5vZGUgKA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBNRVNTQUdJTkdfREVWSUNFX1BBVEgsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE1TR19VU0JfQ0xBU1NfRFAsDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChVSU5UMTYpIHNpemVvZiAoVVNCX0NMQVNTX0RFVklD RV9QQVRIKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAp Ow0KPiArDQo+ICsgIFZJRFN0ciAgICAgID0gR2V0TmV4dFBhcmFtU3RyICgmVGV4dERldmljZU5v ZGUpOw0KPiArICBQSURTdHIgICAgICA9IEdldE5leHRQYXJhbVN0ciAoJlRleHREZXZpY2VOb2Rl KTsNCj4gKyAgaWYgKFVzYkNsYXNzVGV4dC0+Q2xhc3NFeGlzdCkgew0KPiArICAgIENsYXNzU3Ry ID0gR2V0TmV4dFBhcmFtU3RyICgmVGV4dERldmljZU5vZGUpOw0KPiArICAgIFVzYkNsYXNzLT5E ZXZpY2VDbGFzcyA9IChVSU5UOCkgU3RydG9pIChDbGFzc1N0cik7DQo+ICsgIH0gZWxzZSB7DQo+ ICsgICAgVXNiQ2xhc3MtPkRldmljZUNsYXNzID0gVXNiQ2xhc3NUZXh0LT5DbGFzczsNCj4gKyAg fQ0KPiArICBpZiAoVXNiQ2xhc3NUZXh0LT5TdWJDbGFzc0V4aXN0KSB7DQo+ICsgICAgU3ViQ2xh c3NTdHIgPSBHZXROZXh0UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsgICAgVXNiQ2xh c3MtPkRldmljZVN1YkNsYXNzID0gKFVJTlQ4KSBTdHJ0b2kgKFN1YkNsYXNzU3RyKTsNCj4gKyAg fSBlbHNlIHsNCj4gKyAgICBVc2JDbGFzcy0+RGV2aWNlU3ViQ2xhc3MgPSBVc2JDbGFzc1RleHQt PlN1YkNsYXNzOw0KPiArICB9DQo+ICsNCj4gKyAgUHJvdG9jb2xTdHIgPSBHZXROZXh0UGFyYW1T dHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsNCj4gKyAgVXNiQ2xhc3MtPlZlbmRvcklkICAgICAg ICA9IChVSU5UMTYpIFN0cnRvaSAoVklEU3RyKTsNCj4gKyAgVXNiQ2xhc3MtPlByb2R1Y3RJZCAg ICAgICA9IChVSU5UMTYpIFN0cnRvaSAoUElEU3RyKTsNCj4gKyAgVXNiQ2xhc3MtPkRldmljZVBy b3RvY29sICA9IChVSU5UOCkgU3RydG9pIChQcm90b2NvbFN0cik7DQo+ICsNCj4gKyAgcmV0dXJu IChFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKikgVXNiQ2xhc3M7DQo+ICt9DQo+ICsNCj4gKw0K PiArLyoqDQo+ICsgIENvbnZlcnRzIGEgdGV4dCBkZXZpY2UgcGF0aCBub2RlIHRvIFVTQiBjbGFz cyBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyAgQHBhcmFtIFRleHREZXZpY2VOb2Rl ICBUaGUgaW5wdXQgVGV4dCBkZXZpY2UgcGF0aCBub2RlLg0KPiArDQo+ICsgIEByZXR1cm4gQSBw b2ludGVyIHRvIHRoZSBuZXdseS1jcmVhdGVkIFVTQiBjbGFzcyBkZXZpY2UgcGF0aCBzdHJ1Y3R1 cmUuDQo+ICsNCj4gKyoqLw0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoNCj4gK0RldlBh dGhGcm9tVGV4dFVzYkNsYXNzICgNCj4gKyAgIENIQVIxNiAqVGV4dERldmljZU5vZGUNCj4gKyAg KQ0KPiArew0KPiArICBVU0JfQ0xBU1NfVEVYVCAgVXNiQ2xhc3NUZXh0Ow0KPiArDQo+ICsgIFVz YkNsYXNzVGV4dC5DbGFzc0V4aXN0ICAgID0gVFJVRTsNCj4gKyAgVXNiQ2xhc3NUZXh0LlN1YkNs YXNzRXhpc3QgPSBUUlVFOw0KPiArDQo+ICsgIHJldHVybiBDb252ZXJ0RnJvbVRleHRVc2JDbGFz cyAoVGV4dERldmljZU5vZGUsICZVc2JDbGFzc1RleHQpOw0KPiArfQ0KPiArDQo+ICsvKioNCj4g KyAgQ29udmVydHMgYSB0ZXh0IGRldmljZSBwYXRoIG5vZGUgdG8gVVNCIGF1ZGlvIGRldmljZSBw YXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArICBAcGFyYW0gVGV4dERldmljZU5vZGUgIFRoZSBpbnB1 dCBUZXh0IGRldmljZSBwYXRoIG5vZGUuDQo+ICsNCj4gKyAgQHJldHVybiBBIHBvaW50ZXIgdG8g dGhlIG5ld2x5LWNyZWF0ZWQgVVNCIGF1ZGlvIGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0K PiArKiovDQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0KPiArRGV2UGF0aEZyb21UZXh0 VXNiQXVkaW8gKA0KPiArICAgQ0hBUjE2ICpUZXh0RGV2aWNlTm9kZQ0KPiArICApDQo+ICt7DQo+ ICsgIFVTQl9DTEFTU19URVhUICBVc2JDbGFzc1RleHQ7DQo+ICsNCj4gKyAgVXNiQ2xhc3NUZXh0 LkNsYXNzRXhpc3QgICAgPSBGQUxTRTsNCj4gKyAgVXNiQ2xhc3NUZXh0LkNsYXNzICAgICAgICAg PSBVU0JfQ0xBU1NfQVVESU87DQo+ICsgIFVzYkNsYXNzVGV4dC5TdWJDbGFzc0V4aXN0ID0gVFJV RTsNCj4gKw0KPiArICByZXR1cm4gQ29udmVydEZyb21UZXh0VXNiQ2xhc3MgKFRleHREZXZpY2VO b2RlLCAmVXNiQ2xhc3NUZXh0KTsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIENvbnZlcnRzIGEg dGV4dCBkZXZpY2UgcGF0aCBub2RlIHRvIFVTQiBDREMgQ29udHJvbCBkZXZpY2UgcGF0aCBzdHJ1 Y3R1cmUuDQo+ICsNCj4gKyAgQHBhcmFtIFRleHREZXZpY2VOb2RlICBUaGUgaW5wdXQgVGV4dCBk ZXZpY2UgcGF0aCBub2RlLg0KPiArDQo+ICsgIEByZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBuZXds eS1jcmVhdGVkIFVTQiBDREMgQ29udHJvbCBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4g KyoqLw0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoNCj4gK0RldlBhdGhGcm9tVGV4dFVz YkNEQ0NvbnRyb2wgKA0KPiArICAgQ0hBUjE2ICpUZXh0RGV2aWNlTm9kZQ0KPiArICApDQo+ICt7 DQo+ICsgIFVTQl9DTEFTU19URVhUICBVc2JDbGFzc1RleHQ7DQo+ICsNCj4gKyAgVXNiQ2xhc3NU ZXh0LkNsYXNzRXhpc3QgICAgPSBGQUxTRTsNCj4gKyAgVXNiQ2xhc3NUZXh0LkNsYXNzICAgICAg ICAgPSBVU0JfQ0xBU1NfQ0RDQ09OVFJPTDsNCj4gKyAgVXNiQ2xhc3NUZXh0LlN1YkNsYXNzRXhp c3QgPSBUUlVFOw0KPiArDQo+ICsgIHJldHVybiBDb252ZXJ0RnJvbVRleHRVc2JDbGFzcyAoVGV4 dERldmljZU5vZGUsICZVc2JDbGFzc1RleHQpOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgQ29u dmVydHMgYSB0ZXh0IGRldmljZSBwYXRoIG5vZGUgdG8gVVNCIEhJRCBkZXZpY2UgcGF0aCBzdHJ1 Y3R1cmUuDQo+ICsNCj4gKyAgQHBhcmFtIFRleHREZXZpY2VOb2RlICBUaGUgaW5wdXQgVGV4dCBk ZXZpY2UgcGF0aCBub2RlLg0KPiArDQo+ICsgIEByZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBuZXds eS1jcmVhdGVkIFVTQiBISUQgZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsqKi8NCj4g K0VGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqDQo+ICtEZXZQYXRoRnJvbVRleHRVc2JISUQgKA0K PiArICAgQ0hBUjE2ICpUZXh0RGV2aWNlTm9kZQ0KPiArICApDQo+ICt7DQo+ICsgIFVTQl9DTEFT U19URVhUICBVc2JDbGFzc1RleHQ7DQo+ICsNCj4gKyAgVXNiQ2xhc3NUZXh0LkNsYXNzRXhpc3Qg ICAgPSBGQUxTRTsNCj4gKyAgVXNiQ2xhc3NUZXh0LkNsYXNzICAgICAgICAgPSBVU0JfQ0xBU1Nf SElEOw0KPiArICBVc2JDbGFzc1RleHQuU3ViQ2xhc3NFeGlzdCA9IFRSVUU7DQo+ICsNCj4gKyAg cmV0dXJuIENvbnZlcnRGcm9tVGV4dFVzYkNsYXNzIChUZXh0RGV2aWNlTm9kZSwgJlVzYkNsYXNz VGV4dCk7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBDb252ZXJ0cyBhIHRleHQgZGV2aWNlIHBh dGggbm9kZSB0byBVU0IgSW1hZ2UgZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsgIEBw YXJhbSBUZXh0RGV2aWNlTm9kZSAgVGhlIGlucHV0IFRleHQgZGV2aWNlIHBhdGggbm9kZS4NCj4g Kw0KPiArICBAcmV0dXJuIEEgcG9pbnRlciB0byB0aGUgbmV3bHktY3JlYXRlZCBVU0IgSW1hZ2Ug ZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9ERVZJQ0VfUEFUSF9Q Uk9UT0NPTCAqDQo+ICtEZXZQYXRoRnJvbVRleHRVc2JJbWFnZSAoDQo+ICsgICBDSEFSMTYgKlRl eHREZXZpY2VOb2RlDQo+ICsgICkNCj4gK3sNCj4gKyAgVVNCX0NMQVNTX1RFWFQgIFVzYkNsYXNz VGV4dDsNCj4gKw0KPiArICBVc2JDbGFzc1RleHQuQ2xhc3NFeGlzdCAgICA9IEZBTFNFOw0KPiAr ICBVc2JDbGFzc1RleHQuQ2xhc3MgICAgICAgICA9IFVTQl9DTEFTU19JTUFHRTsNCj4gKyAgVXNi Q2xhc3NUZXh0LlN1YkNsYXNzRXhpc3QgPSBUUlVFOw0KPiArDQo+ICsgIHJldHVybiBDb252ZXJ0 RnJvbVRleHRVc2JDbGFzcyAoVGV4dERldmljZU5vZGUsICZVc2JDbGFzc1RleHQpOw0KPiArfQ0K PiArDQo+ICsvKioNCj4gKyAgQ29udmVydHMgYSB0ZXh0IGRldmljZSBwYXRoIG5vZGUgdG8gVVNC IFByaW50IGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArICBAcGFyYW0gVGV4dERldmlj ZU5vZGUgIFRoZSBpbnB1dCBUZXh0IGRldmljZSBwYXRoIG5vZGUuDQo+ICsNCj4gKyAgQHJldHVy biBBIHBvaW50ZXIgdG8gdGhlIG5ld2x5LWNyZWF0ZWQgVVNCIFByaW50IGRldmljZSBwYXRoIHN0 cnVjdHVyZS4NCj4gKw0KPiArKiovDQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0KPiAr RGV2UGF0aEZyb21UZXh0VXNiUHJpbnRlciAoDQo+ICsgICBDSEFSMTYgKlRleHREZXZpY2VOb2Rl DQo+ICsgICkNCj4gK3sNCj4gKyAgVVNCX0NMQVNTX1RFWFQgIFVzYkNsYXNzVGV4dDsNCj4gKw0K PiArICBVc2JDbGFzc1RleHQuQ2xhc3NFeGlzdCAgICA9IEZBTFNFOw0KPiArICBVc2JDbGFzc1Rl eHQuQ2xhc3MgICAgICAgICA9IFVTQl9DTEFTU19QUklOVEVSOw0KPiArICBVc2JDbGFzc1RleHQu U3ViQ2xhc3NFeGlzdCA9IFRSVUU7DQo+ICsNCj4gKyAgcmV0dXJuIENvbnZlcnRGcm9tVGV4dFVz YkNsYXNzIChUZXh0RGV2aWNlTm9kZSwgJlVzYkNsYXNzVGV4dCk7DQo+ICt9DQo+ICsNCj4gKy8q Kg0KPiArICBDb252ZXJ0cyBhIHRleHQgZGV2aWNlIHBhdGggbm9kZSB0byBVU0IgbWFzcyBzdG9y YWdlIGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArICBAcGFyYW0gVGV4dERldmljZU5v ZGUgIFRoZSBpbnB1dCBUZXh0IGRldmljZSBwYXRoIG5vZGUuDQo+ICsNCj4gKyAgQHJldHVybiBB IHBvaW50ZXIgdG8gdGhlIG5ld2x5LWNyZWF0ZWQgVVNCIG1hc3Mgc3RvcmFnZSBkZXZpY2UgcGF0 aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyoqLw0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoN Cj4gK0RldlBhdGhGcm9tVGV4dFVzYk1hc3NTdG9yYWdlICgNCj4gKyAgIENIQVIxNiAqVGV4dERl dmljZU5vZGUNCj4gKyAgKQ0KPiArew0KPiArICBVU0JfQ0xBU1NfVEVYVCAgVXNiQ2xhc3NUZXh0 Ow0KPiArDQo+ICsgIFVzYkNsYXNzVGV4dC5DbGFzc0V4aXN0ICAgID0gRkFMU0U7DQo+ICsgIFVz YkNsYXNzVGV4dC5DbGFzcyAgICAgICAgID0gVVNCX0NMQVNTX01BU1NfU1RPUkFHRTsNCj4gKyAg VXNiQ2xhc3NUZXh0LlN1YkNsYXNzRXhpc3QgPSBUUlVFOw0KPiArDQo+ICsgIHJldHVybiBDb252 ZXJ0RnJvbVRleHRVc2JDbGFzcyAoVGV4dERldmljZU5vZGUsICZVc2JDbGFzc1RleHQpOw0KPiAr fQ0KPiArDQo+ICsvKioNCj4gKyAgQ29udmVydHMgYSB0ZXh0IGRldmljZSBwYXRoIG5vZGUgdG8g VVNCIEhVQiBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyAgQHBhcmFtIFRleHREZXZp Y2VOb2RlICBUaGUgaW5wdXQgVGV4dCBkZXZpY2UgcGF0aCBub2RlLg0KPiArDQo+ICsgIEByZXR1 cm4gQSBwb2ludGVyIHRvIHRoZSBuZXdseS1jcmVhdGVkIFVTQiBIVUIgZGV2aWNlIHBhdGggc3Ry dWN0dXJlLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqDQo+ICtE ZXZQYXRoRnJvbVRleHRVc2JIdWIgKA0KPiArICAgQ0hBUjE2ICpUZXh0RGV2aWNlTm9kZQ0KPiAr ICApDQo+ICt7DQo+ICsgIFVTQl9DTEFTU19URVhUICBVc2JDbGFzc1RleHQ7DQo+ICsNCj4gKyAg VXNiQ2xhc3NUZXh0LkNsYXNzRXhpc3QgICAgPSBGQUxTRTsNCj4gKyAgVXNiQ2xhc3NUZXh0LkNs YXNzICAgICAgICAgPSBVU0JfQ0xBU1NfSFVCOw0KPiArICBVc2JDbGFzc1RleHQuU3ViQ2xhc3NF eGlzdCA9IFRSVUU7DQo+ICsNCj4gKyAgcmV0dXJuIENvbnZlcnRGcm9tVGV4dFVzYkNsYXNzIChU ZXh0RGV2aWNlTm9kZSwgJlVzYkNsYXNzVGV4dCk7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBD b252ZXJ0cyBhIHRleHQgZGV2aWNlIHBhdGggbm9kZSB0byBVU0IgQ0RDIGRhdGEgZGV2aWNlIHBh dGggc3RydWN0dXJlLg0KPiArDQo+ICsgIEBwYXJhbSBUZXh0RGV2aWNlTm9kZSAgVGhlIGlucHV0 IFRleHQgZGV2aWNlIHBhdGggbm9kZS4NCj4gKw0KPiArICBAcmV0dXJuIEEgcG9pbnRlciB0byB0 aGUgbmV3bHktY3JlYXRlZCBVU0IgQ0RDIGRhdGEgZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiAr DQo+ICsqKi8NCj4gK0VGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqDQo+ICtEZXZQYXRoRnJvbVRl eHRVc2JDRENEYXRhICgNCj4gKyAgIENIQVIxNiAqVGV4dERldmljZU5vZGUNCj4gKyAgKQ0KPiAr ew0KPiArICBVU0JfQ0xBU1NfVEVYVCAgVXNiQ2xhc3NUZXh0Ow0KPiArDQo+ICsgIFVzYkNsYXNz VGV4dC5DbGFzc0V4aXN0ICAgID0gRkFMU0U7DQo+ICsgIFVzYkNsYXNzVGV4dC5DbGFzcyAgICAg ICAgID0gVVNCX0NMQVNTX0NEQ0RBVEE7DQo+ICsgIFVzYkNsYXNzVGV4dC5TdWJDbGFzc0V4aXN0 ID0gVFJVRTsNCj4gKw0KPiArICByZXR1cm4gQ29udmVydEZyb21UZXh0VXNiQ2xhc3MgKFRleHRE ZXZpY2VOb2RlLCAmVXNiQ2xhc3NUZXh0KTsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIENvbnZl cnRzIGEgdGV4dCBkZXZpY2UgcGF0aCBub2RlIHRvIFVTQiBzbWFydCBjYXJkIGRldmljZSBwYXRo IHN0cnVjdHVyZS4NCj4gKw0KPiArICBAcGFyYW0gVGV4dERldmljZU5vZGUgIFRoZSBpbnB1dCBU ZXh0IGRldmljZSBwYXRoIG5vZGUuDQo+ICsNCj4gKyAgQHJldHVybiBBIHBvaW50ZXIgdG8gdGhl IG5ld2x5LWNyZWF0ZWQgVVNCIHNtYXJ0IGNhcmQgZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiAr DQo+ICsqKi8NCj4gK0VGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqDQo+ICtEZXZQYXRoRnJvbVRl eHRVc2JTbWFydENhcmQgKA0KPiArICAgQ0hBUjE2ICpUZXh0RGV2aWNlTm9kZQ0KPiArICApDQo+ ICt7DQo+ICsgIFVTQl9DTEFTU19URVhUICBVc2JDbGFzc1RleHQ7DQo+ICsNCj4gKyAgVXNiQ2xh c3NUZXh0LkNsYXNzRXhpc3QgICAgPSBGQUxTRTsNCj4gKyAgVXNiQ2xhc3NUZXh0LkNsYXNzICAg ICAgICAgPSBVU0JfQ0xBU1NfU01BUlRfQ0FSRDsNCj4gKyAgVXNiQ2xhc3NUZXh0LlN1YkNsYXNz RXhpc3QgPSBUUlVFOw0KPiArDQo+ICsgIHJldHVybiBDb252ZXJ0RnJvbVRleHRVc2JDbGFzcyAo VGV4dERldmljZU5vZGUsICZVc2JDbGFzc1RleHQpOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAg Q29udmVydHMgYSB0ZXh0IGRldmljZSBwYXRoIG5vZGUgdG8gVVNCIHZpZGVvIGRldmljZSBwYXRo IHN0cnVjdHVyZS4NCj4gKw0KPiArICBAcGFyYW0gVGV4dERldmljZU5vZGUgIFRoZSBpbnB1dCBU ZXh0IGRldmljZSBwYXRoIG5vZGUuDQo+ICsNCj4gKyAgQHJldHVybiBBIHBvaW50ZXIgdG8gdGhl IG5ld2x5LWNyZWF0ZWQgVVNCIHZpZGVvIGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiAr KiovDQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0KPiArRGV2UGF0aEZyb21UZXh0VXNi VmlkZW8gKA0KPiArICAgQ0hBUjE2ICpUZXh0RGV2aWNlTm9kZQ0KPiArICApDQo+ICt7DQo+ICsg IFVTQl9DTEFTU19URVhUICBVc2JDbGFzc1RleHQ7DQo+ICsNCj4gKyAgVXNiQ2xhc3NUZXh0LkNs YXNzRXhpc3QgICAgPSBGQUxTRTsNCj4gKyAgVXNiQ2xhc3NUZXh0LkNsYXNzICAgICAgICAgPSBV U0JfQ0xBU1NfVklERU87DQo+ICsgIFVzYkNsYXNzVGV4dC5TdWJDbGFzc0V4aXN0ID0gVFJVRTsN Cj4gKw0KPiArICByZXR1cm4gQ29udmVydEZyb21UZXh0VXNiQ2xhc3MgKFRleHREZXZpY2VOb2Rl LCAmVXNiQ2xhc3NUZXh0KTsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIENvbnZlcnRzIGEgdGV4 dCBkZXZpY2UgcGF0aCBub2RlIHRvIFVTQiBkaWFnbm9zdGljIGRldmljZSBwYXRoIHN0cnVjdHVy ZS4NCj4gKw0KPiArICBAcGFyYW0gVGV4dERldmljZU5vZGUgIFRoZSBpbnB1dCBUZXh0IGRldmlj ZSBwYXRoIG5vZGUuDQo+ICsNCj4gKyAgQHJldHVybiBBIHBvaW50ZXIgdG8gdGhlIG5ld2x5LWNy ZWF0ZWQgVVNCIGRpYWdub3N0aWMgZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsqKi8N Cj4gK0VGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqDQo+ICtEZXZQYXRoRnJvbVRleHRVc2JEaWFn bm9zdGljICgNCj4gKyAgIENIQVIxNiAqVGV4dERldmljZU5vZGUNCj4gKyAgKQ0KPiArew0KPiAr ICBVU0JfQ0xBU1NfVEVYVCAgVXNiQ2xhc3NUZXh0Ow0KPiArDQo+ICsgIFVzYkNsYXNzVGV4dC5D bGFzc0V4aXN0ICAgID0gRkFMU0U7DQo+ICsgIFVzYkNsYXNzVGV4dC5DbGFzcyAgICAgICAgID0g VVNCX0NMQVNTX0RJQUdOT1NUSUM7DQo+ICsgIFVzYkNsYXNzVGV4dC5TdWJDbGFzc0V4aXN0ID0g VFJVRTsNCj4gKw0KPiArICByZXR1cm4gQ29udmVydEZyb21UZXh0VXNiQ2xhc3MgKFRleHREZXZp Y2VOb2RlLCAmVXNiQ2xhc3NUZXh0KTsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIENvbnZlcnRz IGEgdGV4dCBkZXZpY2UgcGF0aCBub2RlIHRvIFVTQiB3aXJlbGVzcyBkZXZpY2UgcGF0aCBzdHJ1 Y3R1cmUuDQo+ICsNCj4gKyAgQHBhcmFtIFRleHREZXZpY2VOb2RlICBUaGUgaW5wdXQgVGV4dCBk ZXZpY2UgcGF0aCBub2RlLg0KPiArDQo+ICsgIEByZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBuZXds eS1jcmVhdGVkIFVTQiB3aXJlbGVzcyBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyoq Lw0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoNCj4gK0RldlBhdGhGcm9tVGV4dFVzYldp cmVsZXNzICgNCj4gKyAgIENIQVIxNiAqVGV4dERldmljZU5vZGUNCj4gKyAgKQ0KPiArew0KPiAr ICBVU0JfQ0xBU1NfVEVYVCAgVXNiQ2xhc3NUZXh0Ow0KPiArDQo+ICsgIFVzYkNsYXNzVGV4dC5D bGFzc0V4aXN0ICAgID0gRkFMU0U7DQo+ICsgIFVzYkNsYXNzVGV4dC5DbGFzcyAgICAgICAgID0g VVNCX0NMQVNTX1dJUkVMRVNTOw0KPiArICBVc2JDbGFzc1RleHQuU3ViQ2xhc3NFeGlzdCA9IFRS VUU7DQo+ICsNCj4gKyAgcmV0dXJuIENvbnZlcnRGcm9tVGV4dFVzYkNsYXNzIChUZXh0RGV2aWNl Tm9kZSwgJlVzYkNsYXNzVGV4dCk7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBDb252ZXJ0cyBh IHRleHQgZGV2aWNlIHBhdGggbm9kZSB0byBVU0IgZGV2aWNlIGZpcm13YXJlIHVwZGF0ZSBkZXZp Y2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyAgQHBhcmFtIFRleHREZXZpY2VOb2RlICBUaGUg aW5wdXQgVGV4dCBkZXZpY2UgcGF0aCBub2RlLg0KPiArDQo+ICsgIEByZXR1cm4gQSBwb2ludGVy IHRvIHRoZSBuZXdseS1jcmVhdGVkIFVTQiBkZXZpY2UgZmlybXdhcmUgdXBkYXRlIGRldmljZSBw YXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArKiovDQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wg Kg0KPiArRGV2UGF0aEZyb21UZXh0VXNiRGV2aWNlRmlybXdhcmVVcGRhdGUgKA0KPiArICAgQ0hB UjE2ICpUZXh0RGV2aWNlTm9kZQ0KPiArICApDQo+ICt7DQo+ICsgIFVTQl9DTEFTU19URVhUICBV c2JDbGFzc1RleHQ7DQo+ICsNCj4gKyAgVXNiQ2xhc3NUZXh0LkNsYXNzRXhpc3QgICAgPSBGQUxT RTsNCj4gKyAgVXNiQ2xhc3NUZXh0LkNsYXNzICAgICAgICAgPSBVU0JfQ0xBU1NfUkVTRVJWRTsN Cj4gKyAgVXNiQ2xhc3NUZXh0LlN1YkNsYXNzRXhpc3QgPSBGQUxTRTsNCj4gKyAgVXNiQ2xhc3NU ZXh0LlN1YkNsYXNzICAgICAgPSBVU0JfU1VCQ0xBU1NfRldfVVBEQVRFOw0KPiArDQo+ICsgIHJl dHVybiBDb252ZXJ0RnJvbVRleHRVc2JDbGFzcyAoVGV4dERldmljZU5vZGUsICZVc2JDbGFzc1Rl eHQpOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgQ29udmVydHMgYSB0ZXh0IGRldmljZSBwYXRo IG5vZGUgdG8gVVNCIElSREEgYnJpZGdlIGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiAr ICBAcGFyYW0gVGV4dERldmljZU5vZGUgIFRoZSBpbnB1dCBUZXh0IGRldmljZSBwYXRoIG5vZGUu DQo+ICsNCj4gKyAgQHJldHVybiBBIHBvaW50ZXIgdG8gdGhlIG5ld2x5LWNyZWF0ZWQgVVNCIElS REEgYnJpZGdlIGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArKiovDQo+ICtFRklfREVW SUNFX1BBVEhfUFJPVE9DT0wgKg0KPiArRGV2UGF0aEZyb21UZXh0VXNiSXJkYUJyaWRnZSAoDQo+ ICsgICBDSEFSMTYgKlRleHREZXZpY2VOb2RlDQo+ICsgICkNCj4gK3sNCj4gKyAgVVNCX0NMQVNT X1RFWFQgIFVzYkNsYXNzVGV4dDsNCj4gKw0KPiArICBVc2JDbGFzc1RleHQuQ2xhc3NFeGlzdCAg ICA9IEZBTFNFOw0KPiArICBVc2JDbGFzc1RleHQuQ2xhc3MgICAgICAgICA9IFVTQl9DTEFTU19S RVNFUlZFOw0KPiArICBVc2JDbGFzc1RleHQuU3ViQ2xhc3NFeGlzdCA9IEZBTFNFOw0KPiArICBV c2JDbGFzc1RleHQuU3ViQ2xhc3MgICAgICA9IFVTQl9TVUJDTEFTU19JUkRBX0JSSURHRTsNCj4g Kw0KPiArICByZXR1cm4gQ29udmVydEZyb21UZXh0VXNiQ2xhc3MgKFRleHREZXZpY2VOb2RlLCAm VXNiQ2xhc3NUZXh0KTsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIENvbnZlcnRzIGEgdGV4dCBk ZXZpY2UgcGF0aCBub2RlIHRvIFVTQiB0ZXh0IGFuZCBtZWFzdXJlbWVudCBkZXZpY2UgcGF0aCBz dHJ1Y3R1cmUuDQo+ICsNCj4gKyAgQHBhcmFtIFRleHREZXZpY2VOb2RlICBUaGUgaW5wdXQgVGV4 dCBkZXZpY2UgcGF0aCBub2RlLg0KPiArDQo+ICsgIEByZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBu ZXdseS1jcmVhdGVkIFVTQiB0ZXh0IGFuZCBtZWFzdXJlbWVudCBkZXZpY2UgcGF0aCBzdHJ1Y3R1 cmUuDQo+ICsNCj4gKyoqLw0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoNCj4gK0RldlBh dGhGcm9tVGV4dFVzYlRlc3RBbmRNZWFzdXJlbWVudCAoDQo+ICsgICBDSEFSMTYgKlRleHREZXZp Y2VOb2RlDQo+ICsgICkNCj4gK3sNCj4gKyAgVVNCX0NMQVNTX1RFWFQgIFVzYkNsYXNzVGV4dDsN Cj4gKw0KPiArICBVc2JDbGFzc1RleHQuQ2xhc3NFeGlzdCAgICA9IEZBTFNFOw0KPiArICBVc2JD bGFzc1RleHQuQ2xhc3MgICAgICAgICA9IFVTQl9DTEFTU19SRVNFUlZFOw0KPiArICBVc2JDbGFz c1RleHQuU3ViQ2xhc3NFeGlzdCA9IEZBTFNFOw0KPiArICBVc2JDbGFzc1RleHQuU3ViQ2xhc3Mg ICAgICA9IFVTQl9TVUJDTEFTU19URVNUOw0KPiArDQo+ICsgIHJldHVybiBDb252ZXJ0RnJvbVRl eHRVc2JDbGFzcyAoVGV4dERldmljZU5vZGUsICZVc2JDbGFzc1RleHQpOw0KPiArfQ0KPiArDQo+ ICsvKioNCj4gKyAgQ29udmVydHMgYSB0ZXh0IGRldmljZSBwYXRoIG5vZGUgdG8gVVNCIFdXSUQg ZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsgIEBwYXJhbSBUZXh0RGV2aWNlTm9kZSAg VGhlIGlucHV0IFRleHQgZGV2aWNlIHBhdGggbm9kZS4NCj4gKw0KPiArICBAcmV0dXJuIEEgcG9p bnRlciB0byB0aGUgbmV3bHktY3JlYXRlZCBVU0IgV1dJRCBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUu DQo+ICsNCj4gKyoqLw0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoNCj4gK0RldlBhdGhG cm9tVGV4dFVzYld3aWQgKA0KPiArICAgQ0hBUjE2ICpUZXh0RGV2aWNlTm9kZQ0KPiArICApDQo+ ICt7DQo+ICsgIENIQVIxNiAgICAgICAgICAgICAgICAqVklEU3RyOw0KPiArICBDSEFSMTYgICAg ICAgICAgICAgICAgKlBJRFN0cjsNCj4gKyAgQ0hBUjE2ICAgICAgICAgICAgICAgICpJbnRlcmZh Y2VOdW1TdHI7DQo+ICsgIENIQVIxNiAgICAgICAgICAgICAgICAqU2VyaWFsTnVtYmVyU3RyOw0K PiArICBVU0JfV1dJRF9ERVZJQ0VfUEFUSCAgKlVzYld3aWQ7DQo+ICsgIFVJTlROICAgICAgICAg ICAgICAgICBTZXJpYWxOdW1iZXJTdHJMZW47DQo+ICsNCj4gKyAgVklEU3RyICAgICAgICAgICAg ICAgICAgID0gR2V0TmV4dFBhcmFtU3RyICgmVGV4dERldmljZU5vZGUpOw0KPiArICBQSURTdHIg ICAgICAgICAgICAgICAgICAgPSBHZXROZXh0UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ ICsgIEludGVyZmFjZU51bVN0ciAgICAgICAgICA9IEdldE5leHRQYXJhbVN0ciAoJlRleHREZXZp Y2VOb2RlKTsNCj4gKyAgU2VyaWFsTnVtYmVyU3RyICAgICAgICAgID0gR2V0TmV4dFBhcmFtU3Ry ICgmVGV4dERldmljZU5vZGUpOw0KPiArICBTZXJpYWxOdW1iZXJTdHJMZW4gICAgICAgPSBTdHJM ZW4gKFNlcmlhbE51bWJlclN0cik7DQo+ICsgIGlmIChTZXJpYWxOdW1iZXJTdHJMZW4gPj0gMiAm Jg0KPiArICAgICAgU2VyaWFsTnVtYmVyU3RyWzBdID09IEwnXCInICYmDQo+ICsgICAgICBTZXJp YWxOdW1iZXJTdHJbU2VyaWFsTnVtYmVyU3RyTGVuIC0gMV0gPT0gTCdcIicNCj4gKyAgICApIHsN Cj4gKyAgICBTZXJpYWxOdW1iZXJTdHJbU2VyaWFsTnVtYmVyU3RyTGVuIC0gMV0gPSBMJ1wwJzsN Cj4gKyAgICBTZXJpYWxOdW1iZXJTdHIrKzsNCj4gKyAgICBTZXJpYWxOdW1iZXJTdHJMZW4gLT0g MjsNCj4gKyAgfQ0KPiArICBVc2JXd2lkICAgICAgICAgICAgICAgICAgPSAoVVNCX1dXSURfREVW SUNFX1BBVEggKikgQ3JlYXRlRGV2aWNlTm9kZSAoDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRVNTQUdJTkdfREVWSUNFX1BBVEgs DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBNU0dfVVNCX1dXSURfRFAsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoVUlOVDE2KSAoc2l6ZW9mIChVU0JfV1dJRF9ERVZJ Q0VfUEFUSCkgKyBTZXJpYWxOdW1iZXJTdHJMZW4gKiBzaXplb2YgKENIQVIxNikpDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0K PiArICBVc2JXd2lkLT5WZW5kb3JJZCAgICAgICAgPSAoVUlOVDE2KSBTdHJ0b2kgKFZJRFN0cik7 DQo+ICsgIFVzYld3aWQtPlByb2R1Y3RJZCAgICAgICA9IChVSU5UMTYpIFN0cnRvaSAoUElEU3Ry KTsNCj4gKyAgVXNiV3dpZC0+SW50ZXJmYWNlTnVtYmVyID0gKFVJTlQxNikgU3RydG9pIChJbnRl cmZhY2VOdW1TdHIpOw0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIFRoZXJlIGlzIG5vIG1lbW9yeSBh bGxvY2F0ZWQgaW4gVXNiV3dpZCBmb3IgdGhlICdcMCcgaW4gU2VyaWFsTnVtYmVyU3RyLg0KPiAr ICAvLyBUaGVyZWZvcmUsIHRoZSAnXDAnIHdpbGwgbm90IGJlIGNvcGllZC4NCj4gKyAgLy8NCj4g KyAgbWVtY3B5ICgNCj4gKyAgICAoVUlOVDggKikgVXNiV3dpZCArIHNpemVvZiAoVVNCX1dXSURf REVWSUNFX1BBVEgpLA0KPiArICAgIFNlcmlhbE51bWJlclN0ciwNCj4gKyAgICBTZXJpYWxOdW1i ZXJTdHJMZW4gKiBzaXplb2YgKENIQVIxNikNCj4gKyAgICApOw0KPiArDQo+ICsgIHJldHVybiAo RUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICopIFVzYld3aWQ7DQo+ICt9DQo+ICsNCj4gKy8qKg0K PiArICBDb252ZXJ0cyBhIHRleHQgZGV2aWNlIHBhdGggbm9kZSB0byBMb2dpYyBVbml0IGRldmlj ZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArICBAcGFyYW0gVGV4dERldmljZU5vZGUgIFRoZSBp bnB1dCBUZXh0IGRldmljZSBwYXRoIG5vZGUuDQo+ICsNCj4gKyAgQHJldHVybiBBIHBvaW50ZXIg dG8gdGhlIG5ld2x5LWNyZWF0ZWQgTG9naWMgVW5pdCBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ ICsNCj4gKyoqLw0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoNCj4gK0RldlBhdGhGcm9t VGV4dFVuaXQgKA0KPiArICAgQ0hBUjE2ICpUZXh0RGV2aWNlTm9kZQ0KPiArICApDQo+ICt7DQo+ ICsgIENIQVIxNiAgICAgICAgICAgICAgICAgICAgICAgICAgKkx1blN0cjsNCj4gKyAgREVWSUNF X0xPR0lDQUxfVU5JVF9ERVZJQ0VfUEFUSCAqTG9naWNhbFVuaXQ7DQo+ICsNCj4gKyAgTHVuU3Ry ICAgICAgPSBHZXROZXh0UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsgIExvZ2ljYWxV bml0ID0gKERFVklDRV9MT0dJQ0FMX1VOSVRfREVWSUNFX1BBVEggKikgQ3JlYXRlRGV2aWNlTm9k ZSAoDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBNRVNTQUdJTkdfREVWSUNFX1BBVEgsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNU0dfREVWSUNFX0xPR0lDQUxfVU5JVF9EUCwN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChVSU5UMTYpIHNpemVvZiAoREVWSUNFX0xPR0lDQUxfVU5JVF9ERVZJQ0VfUEFUSCkNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQo+ ICsNCj4gKyAgTG9naWNhbFVuaXQtPkx1biAgPSAoVUlOVDgpIFN0cnRvaSAoTHVuU3RyKTsNCj4g Kw0KPiArICByZXR1cm4gKEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqKSBMb2dpY2FsVW5pdDsN Cj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIENvbnZlcnRzIGEgdGV4dCBkZXZpY2UgcGF0aCBub2Rl IHRvIGlTQ1NJIGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArICBAcGFyYW0gVGV4dERl dmljZU5vZGUgIFRoZSBpbnB1dCBUZXh0IGRldmljZSBwYXRoIG5vZGUuDQo+ICsNCj4gKyAgQHJl dHVybiBBIHBvaW50ZXIgdG8gdGhlIG5ld2x5LWNyZWF0ZWQgaVNDU0kgZGV2aWNlIHBhdGggc3Ry dWN0dXJlLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqDQo+ICtE ZXZQYXRoRnJvbVRleHRpU0NTSSAoDQo+ICsgICBDSEFSMTYgKlRleHREZXZpY2VOb2RlDQo+ICsg ICkNCj4gK3sNCj4gKyAgVUlOVDE2ICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbnM7DQo+ICsg IENIQVIxNiAgICAgICAgICAgICAgICAgICAgICAqTmFtZVN0cjsNCj4gKyAgQ0hBUjE2ICAgICAg ICAgICAgICAgICAgICAgICpQb3J0YWxHcm91cFN0cjsNCj4gKyAgQ0hBUjE2ICAgICAgICAgICAg ICAgICAgICAgICpMdW5TdHI7DQo+ICsgIENIQVIxNiAgICAgICAgICAgICAgICAgICAgICAqSGVh ZGVyRGlnZXN0U3RyOw0KPiArICBDSEFSMTYgICAgICAgICAgICAgICAgICAgICAgKkRhdGFEaWdl c3RTdHI7DQo+ICsgIENIQVIxNiAgICAgICAgICAgICAgICAgICAgICAqQXV0aGVudGljYXRpb25T dHI7DQo+ICsgIENIQVIxNiAgICAgICAgICAgICAgICAgICAgICAqUHJvdG9jb2xTdHI7DQo+ICsg IENIQVI4ICAgICAgICAgICAgICAgICAgICAgICAqQXNjaWlTdHI7DQo+ICsgIElTQ1NJX0RFVklD RV9QQVRIX1dJVEhfTkFNRSAqSVNDU0lEZXZQYXRoOw0KPiArDQo+ICsgIE5hbWVTdHIgICAgICAg ICAgID0gR2V0TmV4dFBhcmFtU3RyICgmVGV4dERldmljZU5vZGUpOw0KPiArICBQb3J0YWxHcm91 cFN0ciAgICA9IEdldE5leHRQYXJhbVN0ciAoJlRleHREZXZpY2VOb2RlKTsNCj4gKyAgTHVuU3Ry ICAgICAgICAgICAgPSBHZXROZXh0UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsgIEhl YWRlckRpZ2VzdFN0ciAgID0gR2V0TmV4dFBhcmFtU3RyICgmVGV4dERldmljZU5vZGUpOw0KPiAr ICBEYXRhRGlnZXN0U3RyICAgICA9IEdldE5leHRQYXJhbVN0ciAoJlRleHREZXZpY2VOb2RlKTsN Cj4gKyAgQXV0aGVudGljYXRpb25TdHIgPSBHZXROZXh0UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9k ZSk7DQo+ICsgIFByb3RvY29sU3RyICAgICAgID0gR2V0TmV4dFBhcmFtU3RyICgmVGV4dERldmlj ZU5vZGUpOw0KPiArICBJU0NTSURldlBhdGggICAgICA9IChJU0NTSV9ERVZJQ0VfUEFUSF9XSVRI X05BTUUgKikgQ3JlYXRlRGV2aWNlTm9kZSAoDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FU1NBR0lOR19ERVZJQ0VfUEFUSCwNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TVNHX0lTQ1NJX0RQLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoVUlOVDE2KSAoc2l6ZW9mIChJU0NTSV9ERVZJQ0VfUEFUSF9XSVRI X05BTUUpICsgU3RyTGVuIChOYW1lU3RyKSkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCj4gKw0KPiArICBBc2NpaVN0ciA9IElT Q1NJRGV2UGF0aC0+VGFyZ2V0TmFtZTsNCj4gKyAgU3RyVG9Bc2NpaSAoTmFtZVN0ciwgJkFzY2lp U3RyKTsNCj4gKw0KPiArICBJU0NTSURldlBhdGgtPlRhcmdldFBvcnRhbEdyb3VwVGFnID0gKFVJ TlQxNikgU3RydG9pIChQb3J0YWxHcm91cFN0cik7DQo+ICsgIFN0cnRvaTY0IChMdW5TdHIsICZJ U0NTSURldlBhdGgtPkx1bik7DQo+ICsNCj4gKyAgT3B0aW9ucyA9IDB4MDAwMDsNCj4gKyAgaWYg KFN0ckNtcCAoSGVhZGVyRGlnZXN0U3RyLCBMIkNSQzMyQyIpID09IDApIHsNCj4gKyAgICBPcHRp b25zIHw9IDB4MDAwMjsNCj4gKyAgfQ0KPiArDQo+ICsgIGlmIChTdHJDbXAgKERhdGFEaWdlc3RT dHIsIEwiQ1JDMzJDIikgPT0gMCkgew0KPiArICAgIE9wdGlvbnMgfD0gMHgwMDA4Ow0KPiArICB9 DQo+ICsNCj4gKyAgaWYgKFN0ckNtcCAoQXV0aGVudGljYXRpb25TdHIsIEwiTm9uZSIpID09IDAp IHsNCj4gKyAgICBPcHRpb25zIHw9IDB4MDgwMDsNCj4gKyAgfQ0KPiArDQo+ICsgIGlmIChTdHJD bXAgKEF1dGhlbnRpY2F0aW9uU3RyLCBMIkNIQVBfVU5JIikgPT0gMCkgew0KPiArICAgIE9wdGlv bnMgfD0gMHgxMDAwOw0KPiArICB9DQo+ICsNCj4gKyAgSVNDU0lEZXZQYXRoLT5Mb2dpbk9wdGlv biAgICAgID0gKFVJTlQxNikgT3B0aW9uczsNCj4gKw0KPiArICBpZiAoU3RyQ21wIChQcm90b2Nv bFN0ciwgTCJUQ1AiKSA9PSAwKSB7DQo+ICsgICAgSVNDU0lEZXZQYXRoLT5OZXR3b3JrUHJvdG9j b2wgPSAwOw0KPiArICB9IGVsc2Ugew0KPiArICAgIC8vDQo+ICsgICAgLy8gVW5kZWZpbmVkIGFu ZCByZXNlcnZlZC4NCj4gKyAgICAvLw0KPiArICAgIElTQ1NJRGV2UGF0aC0+TmV0d29ya1Byb3Rv Y29sID0gMTsNCj4gKyAgfQ0KPiArDQo+ICsgIHJldHVybiAoRUZJX0RFVklDRV9QQVRIX1BST1RP Q09MICopIElTQ1NJRGV2UGF0aDsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIENvbnZlcnRzIGEg dGV4dCBkZXZpY2UgcGF0aCBub2RlIHRvIFZMQU4gZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiAr DQo+ICsgIEBwYXJhbSBUZXh0RGV2aWNlTm9kZSAgVGhlIGlucHV0IFRleHQgZGV2aWNlIHBhdGgg bm9kZS4NCj4gKw0KPiArICBAcmV0dXJuIEEgcG9pbnRlciB0byB0aGUgbmV3bHktY3JlYXRlZCBW TEFOIGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArKiovDQo+ICtFRklfREVWSUNFX1BB VEhfUFJPVE9DT0wgKg0KPiArRGV2UGF0aEZyb21UZXh0VmxhbiAoDQo+ICsgICBDSEFSMTYgKlRl eHREZXZpY2VOb2RlDQo+ICsgICkNCj4gK3sNCj4gKyAgQ0hBUjE2ICAgICAgICAgICAgKlZsYW5T dHI7DQo+ICsgIFZMQU5fREVWSUNFX1BBVEggICpWbGFuOw0KPiArDQo+ICsgIFZsYW5TdHIgPSBH ZXROZXh0UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsgIFZsYW4gICAgPSAoVkxBTl9E RVZJQ0VfUEFUSCAqKSBDcmVhdGVEZXZpY2VOb2RlICgNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTUVTU0FHSU5HX0RFVklDRV9QQVRILA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBNU0dfVkxBTl9EUCwNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKFVJTlQxNikgc2l6ZW9mIChWTEFOX0RFVklDRV9QQVRIKQ0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KPiArDQo+ICsgIFZsYW4tPlZsYW5J ZCA9IChVSU5UMTYpIFN0cnRvaSAoVmxhblN0cik7DQo+ICsNCj4gKyAgcmV0dXJuIChFRklfREVW SUNFX1BBVEhfUFJPVE9DT0wgKikgVmxhbjsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIENvbnZl cnRzIGEgdGV4dCBkZXZpY2UgcGF0aCBub2RlIHRvIEJsdWV0b290aCBkZXZpY2UgcGF0aCBzdHJ1 Y3R1cmUuDQo+ICsNCj4gKyAgQHBhcmFtIFRleHREZXZpY2VOb2RlICBUaGUgaW5wdXQgVGV4dCBk ZXZpY2UgcGF0aCBub2RlLg0KPiArDQo+ICsgIEByZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBuZXds eS1jcmVhdGVkIEJsdWV0b290aCBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyoqLw0K PiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoNCj4gK0RldlBhdGhGcm9tVGV4dEJsdWV0b290 aCAoDQo+ICsgICBDSEFSMTYgKlRleHREZXZpY2VOb2RlDQo+ICsgICkNCj4gK3sNCj4gKyAgQ0hB UjE2ICAgICAgICAgICAgICAgICAgKkJsdWV0b290aFN0cjsNCj4gKyAgQkxVRVRPT1RIX0RFVklD RV9QQVRIICAgKkJsdWV0b290aERwOw0KPiArDQo+ICsgIEJsdWV0b290aFN0ciA9IEdldE5leHRQ YXJhbVN0ciAoJlRleHREZXZpY2VOb2RlKTsNCj4gKyAgQmx1ZXRvb3RoRHAgID0gKEJMVUVUT09U SF9ERVZJQ0VfUEFUSCAqKSBDcmVhdGVEZXZpY2VOb2RlICgNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FU1NBR0lOR19ERVZJQ0VfUEFUSCwNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1TR19CTFVFVE9PVEhf RFAsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVUlO VDE2KSBzaXplb2YgKEJMVUVUT09USF9ERVZJQ0VfUEFUSCkNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQo+ICsgIFN0ckhleFRvQnl0ZXMgKA0KPiAr ICAgIEJsdWV0b290aFN0ciwNCj4gKyAgICBzaXplb2YgKEJMVUVUT09USF9BRERSRVNTKSAqIDIs DQo+ICsgICAgQmx1ZXRvb3RoRHAtPkJEX0FERFIuQWRkcmVzcywNCj4gKyAgICBzaXplb2YgKEJM VUVUT09USF9BRERSRVNTKQ0KPiArICAgICk7DQo+ICsgIHJldHVybiAoRUZJX0RFVklDRV9QQVRI X1BST1RPQ09MICopIEJsdWV0b290aERwOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgQ29udmVy dHMgYSB0ZXh0IGRldmljZSBwYXRoIG5vZGUgdG8gV2ktRmkgZGV2aWNlIHBhdGggc3RydWN0dXJl Lg0KPiArDQo+ICsgIEBwYXJhbSBUZXh0RGV2aWNlTm9kZSAgVGhlIGlucHV0IFRleHQgZGV2aWNl IHBhdGggbm9kZS4NCj4gKw0KPiArICBAcmV0dXJuIEEgcG9pbnRlciB0byB0aGUgbmV3bHktY3Jl YXRlZCBXaS1GaSBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyoqLw0KPiArRUZJX0RF VklDRV9QQVRIX1BST1RPQ09MICoNCj4gK0RldlBhdGhGcm9tVGV4dFdpRmkgKA0KPiArICAgQ0hB UjE2ICpUZXh0RGV2aWNlTm9kZQ0KPiArICApDQo+ICt7DQo+ICsgIENIQVIxNiAgICAgICAgICAg ICAgICAqU1NJZFN0cjsNCj4gKyAgQ0hBUjggICAgICAgICAgICAgICAgIEFzY2lpU3RyWzMzXTsN Cj4gKyAgVUlOVE4gICAgICAgICAgICAgICAgIERhdGFMZW47DQo+ICsgIFdJRklfREVWSUNFX1BB VEggICAgICAqV2lGaURwOw0KPiArDQo+ICsgIFNTSWRTdHIgPSBHZXROZXh0UGFyYW1TdHIgKCZU ZXh0RGV2aWNlTm9kZSk7DQo+ICsgIFdpRmlEcCAgPSAoV0lGSV9ERVZJQ0VfUEFUSCAqKSBDcmVh dGVEZXZpY2VOb2RlICgNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVT U0FHSU5HX0RFVklDRV9QQVRILA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBNU0dfV0lGSV9EUCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFVJ TlQxNikgc2l6ZW9mIChXSUZJX0RFVklDRV9QQVRIKQ0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICApOw0KPiArDQo+ICsgIGlmIChOVUxMICE9IFNTSWRTdHIpIHsNCj4gKyAg ICBEYXRhTGVuID0gU3RyTGVuIChTU0lkU3RyKTsNCj4gKyAgICBpZiAoU3RyTGVuIChTU0lkU3Ry KSA+IDMyKSB7DQo+ICsgICAgICBTU0lkU3RyWzMyXSA9IEwnXDAnOw0KPiArICAgICAgRGF0YUxl biAgICAgPSAzMjsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICBVbmljb2RlU3RyVG9Bc2NpaVN0clMg KFNTSWRTdHIsIEFzY2lpU3RyLCBzaXplb2YgKEFzY2lpU3RyKSk7DQo+ICsgICAgbWVtY3B5IChX aUZpRHAtPlNTSWQsIEFzY2lpU3RyLCBEYXRhTGVuKTsNCj4gKyAgfQ0KPiArDQo+ICsgIHJldHVy biAoRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICopIFdpRmlEcDsNCj4gK30NCj4gKw0KPiArLyoq DQo+ICsgIENvbnZlcnRzIGEgdGV4dCBkZXZpY2UgcGF0aCBub2RlIHRvIFVSSSBkZXZpY2UgcGF0 aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyAgQHBhcmFtIFRleHREZXZpY2VOb2RlICBUaGUgaW5wdXQg VGV4dCBkZXZpY2UgcGF0aCBub2RlLg0KPiArDQo+ICsgIEByZXR1cm4gQSBwb2ludGVyIHRvIHRo ZSBuZXdseS1jcmVhdGVkIFVSSSBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyoqLw0K PiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoNCj4gK0RldlBhdGhGcm9tVGV4dFVyaSAoDQo+ ICsgICBDSEFSMTYgKlRleHREZXZpY2VOb2RlDQo+ICsgICkNCj4gK3sNCj4gKyAgQ0hBUjE2ICAg ICAgICAgICAqVXJpU3RyOw0KPiArICBVSU5UTiAgICAgICAgICAgIFVyaUxlbmd0aDsNCj4gKyAg VVJJX0RFVklDRV9QQVRIICAqVXJpOw0KPiArDQo+ICsgIFVyaVN0ciA9IEdldE5leHRQYXJhbVN0 ciAoJlRleHREZXZpY2VOb2RlKTsNCj4gKyAgVXJpTGVuZ3RoID0gU3RybkxlblMgKFVyaVN0ciwg TUFYX1VJTlQxNiAtIHNpemVvZiAoVVJJX0RFVklDRV9QQVRIKSk7DQo+ICsgIFVyaSAgICA9IChV UklfREVWSUNFX1BBVEggKikgQ3JlYXRlRGV2aWNlTm9kZSAoDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBNRVNTQUdJTkdfREVWSUNFX1BBVEgsDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBNU0dfVVJJX0RQLA0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKFVJTlQxNikgKHNpemVvZiAoVVJJX0RFVklDRV9QQVRIKSArIFVyaUxlbmd0 aCkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQo+ICsNCj4gKyAgd2hp bGUgKFVyaUxlbmd0aC0tICE9IDApIHsNCj4gKyAgICBVcmktPlVyaVtVcmlMZW5ndGhdID0gKENI QVI4KSBVcmlTdHJbVXJpTGVuZ3RoXTsNCj4gKyAgfQ0KPiArDQo+ICsgIHJldHVybiAoRUZJX0RF VklDRV9QQVRIX1BST1RPQ09MICopIFVyaTsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIENvbnZl cnRzIGEgbWVkaWEgdGV4dCBkZXZpY2UgcGF0aCBub2RlIHRvIG1lZGlhIGRldmljZSBwYXRoIHN0 cnVjdHVyZS4NCj4gKw0KPiArICBAcGFyYW0gVGV4dERldmljZU5vZGUgIFRoZSBpbnB1dCBUZXh0 IGRldmljZSBwYXRoIG5vZGUuDQo+ICsNCj4gKyAgQHJldHVybiBBIHBvaW50ZXIgdG8gbWVkaWEg ZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9ERVZJQ0VfUEFUSF9Q Uk9UT0NPTCAqDQo+ICtEZXZQYXRoRnJvbVRleHRNZWRpYVBhdGggKA0KPiArICAgQ0hBUjE2ICpU ZXh0RGV2aWNlTm9kZQ0KPiArICApDQo+ICt7DQo+ICsgIHJldHVybiBEZXZQYXRoRnJvbVRleHRH ZW5lcmljUGF0aCAoTUVESUFfREVWSUNFX1BBVEgsIFRleHREZXZpY2VOb2RlKTsNCj4gK30NCj4g Kw0KPiArLyoqDQo+ICsgIENvbnZlcnRzIGEgdGV4dCBkZXZpY2UgcGF0aCBub2RlIHRvIEhEIGRl dmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArICBAcGFyYW0gVGV4dERldmljZU5vZGUgIFRo ZSBpbnB1dCBUZXh0IGRldmljZSBwYXRoIG5vZGUuDQo+ICsNCj4gKyAgQHJldHVybiBBIHBvaW50 ZXIgdG8gdGhlIG5ld2x5LWNyZWF0ZWQgSEQgZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiArDQo+ ICsqKi8NCj4gK0VGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqDQo+ICtEZXZQYXRoRnJvbVRleHRI RCAoDQo+ICsgICBDSEFSMTYgKlRleHREZXZpY2VOb2RlDQo+ICsgICkNCj4gK3sNCj4gKyAgQ0hB UjE2ICAgICAgICAgICAgICAgICpQYXJ0aXRpb25TdHI7DQo+ICsgIENIQVIxNiAgICAgICAgICAg ICAgICAqVHlwZVN0cjsNCj4gKyAgQ0hBUjE2ICAgICAgICAgICAgICAgICpTaWduYXR1cmVTdHI7 DQo+ICsgIENIQVIxNiAgICAgICAgICAgICAgICAqU3RhcnRTdHI7DQo+ICsgIENIQVIxNiAgICAg ICAgICAgICAgICAqU2l6ZVN0cjsNCj4gKyAgVUlOVDMyICAgICAgICAgICAgICAgIFNpZ25hdHVy ZTMyOw0KPiArICBIQVJERFJJVkVfREVWSUNFX1BBVEggKkhkOw0KPiArDQo+ICsgIFBhcnRpdGlv blN0ciAgICAgICAgPSBHZXROZXh0UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsgIFR5 cGVTdHIgICAgICAgICAgICAgPSBHZXROZXh0UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ ICsgIFNpZ25hdHVyZVN0ciAgICAgICAgPSBHZXROZXh0UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9k ZSk7DQo+ICsgIFN0YXJ0U3RyICAgICAgICAgICAgPSBHZXROZXh0UGFyYW1TdHIgKCZUZXh0RGV2 aWNlTm9kZSk7DQo+ICsgIFNpemVTdHIgICAgICAgICAgICAgPSBHZXROZXh0UGFyYW1TdHIgKCZU ZXh0RGV2aWNlTm9kZSk7DQo+ICsgIEhkICAgICAgICAgICAgICAgICAgPSAoSEFSRERSSVZFX0RF VklDRV9QQVRIICopIENyZWF0ZURldmljZU5vZGUgKA0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FRElBX0RFVklDRV9QQVRILA0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FRElBX0hB UkREUklWRV9EUCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoVUlOVDE2KSBzaXplb2YgKEhBUkREUklWRV9ERVZJQ0VfUEFUSCkNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KPiAr DQo+ICsgIEhkLT5QYXJ0aXRpb25OdW1iZXIgPSAoVUlOVDMyKSBTdHJ0b2kgKFBhcnRpdGlvblN0 cik7DQo+ICsNCj4gKyAgWmVyb01lbSAoSGQtPlNpZ25hdHVyZSwgMTYpOw0KPiArICBIZC0+TUJS VHlwZSA9IChVSU5UOCkgMDsNCj4gKw0KPiArICBpZiAoU3RyQ21wIChUeXBlU3RyLCBMIk1CUiIp ID09IDApIHsNCj4gKyAgICBIZC0+U2lnbmF0dXJlVHlwZSA9IFNJR05BVFVSRV9UWVBFX01CUjsN Cj4gKyAgICBIZC0+TUJSVHlwZSAgICAgICA9IDB4MDE7DQo+ICsNCj4gKyAgICBTaWduYXR1cmUz MiAgICAgICA9IChVSU5UMzIpIFN0cnRvaSAoU2lnbmF0dXJlU3RyKTsNCj4gKyAgICBtZW1jcHkg KEhkLT5TaWduYXR1cmUsICZTaWduYXR1cmUzMiwgc2l6ZW9mIChVSU5UMzIpKTsNCj4gKyAgfSBl bHNlIGlmIChTdHJDbXAgKFR5cGVTdHIsIEwiR1BUIikgPT0gMCkgew0KPiArICAgIEhkLT5TaWdu YXR1cmVUeXBlID0gU0lHTkFUVVJFX1RZUEVfR1VJRDsNCj4gKyAgICBIZC0+TUJSVHlwZSAgICAg ICA9IDB4MDI7DQo+ICsNCj4gKyAgICBTdHJUb0d1aWQgKFNpZ25hdHVyZVN0ciwgKEVGSV9HVUlE ICopIEhkLT5TaWduYXR1cmUpOw0KPiArICB9IGVsc2Ugew0KPiArICAgIEhkLT5TaWduYXR1cmVU eXBlID0gKFVJTlQ4KSBTdHJ0b2kgKFR5cGVTdHIpOw0KPiArICB9DQo+ICsNCj4gKyAgU3RydG9p NjQgKFN0YXJ0U3RyLCAmSGQtPlBhcnRpdGlvblN0YXJ0KTsNCj4gKyAgU3RydG9pNjQgKFNpemVT dHIsICZIZC0+UGFydGl0aW9uU2l6ZSk7DQo+ICsNCj4gKyAgcmV0dXJuIChFRklfREVWSUNFX1BB VEhfUFJPVE9DT0wgKikgSGQ7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBDb252ZXJ0cyBhIHRl eHQgZGV2aWNlIHBhdGggbm9kZSB0byBDRFJPTSBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsN Cj4gKyAgQHBhcmFtIFRleHREZXZpY2VOb2RlICBUaGUgaW5wdXQgVGV4dCBkZXZpY2UgcGF0aCBu b2RlLg0KPiArDQo+ICsgIEByZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBuZXdseS1jcmVhdGVkIENE Uk9NIGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArKiovDQo+ICtFRklfREVWSUNFX1BB VEhfUFJPVE9DT0wgKg0KPiArRGV2UGF0aEZyb21UZXh0Q0RST00gKA0KPiArICAgQ0hBUjE2ICpU ZXh0RGV2aWNlTm9kZQ0KPiArICApDQo+ICt7DQo+ICsgIENIQVIxNiAgICAgICAgICAgICpFbnRy eVN0cjsNCj4gKyAgQ0hBUjE2ICAgICAgICAgICAgKlN0YXJ0U3RyOw0KPiArICBDSEFSMTYgICAg ICAgICAgICAqU2l6ZVN0cjsNCj4gKyAgQ0RST01fREVWSUNFX1BBVEggKkNEUk9NRGV2UGF0aDsN Cj4gKw0KPiArICBFbnRyeVN0ciAgICAgICAgICAgICAgPSBHZXROZXh0UGFyYW1TdHIgKCZUZXh0 RGV2aWNlTm9kZSk7DQo+ICsgIFN0YXJ0U3RyICAgICAgICAgICAgICA9IEdldE5leHRQYXJhbVN0 ciAoJlRleHREZXZpY2VOb2RlKTsNCj4gKyAgU2l6ZVN0ciAgICAgICAgICAgICAgID0gR2V0TmV4 dFBhcmFtU3RyICgmVGV4dERldmljZU5vZGUpOw0KPiArICBDRFJPTURldlBhdGggICAgICAgICAg PSAoQ0RST01fREVWSUNFX1BBVEggKikgQ3JlYXRlRGV2aWNlTm9kZSAoDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FRElBX0RFVklDRV9QQVRI LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBN RURJQV9DRFJPTV9EUCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKFVJTlQxNikgc2l6ZW9mIChDRFJPTV9ERVZJQ0VfUEFUSCkNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCj4gKw0KPiAr ICBDRFJPTURldlBhdGgtPkJvb3RFbnRyeSA9IChVSU5UMzIpIFN0cnRvaSAoRW50cnlTdHIpOw0K PiArICBTdHJ0b2k2NCAoU3RhcnRTdHIsICZDRFJPTURldlBhdGgtPlBhcnRpdGlvblN0YXJ0KTsN Cj4gKyAgU3RydG9pNjQgKFNpemVTdHIsICZDRFJPTURldlBhdGgtPlBhcnRpdGlvblNpemUpOw0K PiArDQo+ICsgIHJldHVybiAoRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICopIENEUk9NRGV2UGF0 aDsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIENvbnZlcnRzIGEgdGV4dCBkZXZpY2UgcGF0aCBu b2RlIHRvIFZlbmRvci1kZWZpbmVkIG1lZGlhIGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0K PiArICBAcGFyYW0gVGV4dERldmljZU5vZGUgIFRoZSBpbnB1dCBUZXh0IGRldmljZSBwYXRoIG5v ZGUuDQo+ICsNCj4gKyAgQHJldHVybiBBIHBvaW50ZXIgdG8gdGhlIG5ld2x5LWNyZWF0ZWQgVmVu ZG9yLWRlZmluZWQgbWVkaWEgZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsqKi8NCj4g K0VGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqDQo+ICtEZXZQYXRoRnJvbVRleHRWZW5NZWRpYSAo DQo+ICsgICBDSEFSMTYgKlRleHREZXZpY2VOb2RlDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJu IENvbnZlcnRGcm9tVGV4dFZlbmRvciAoDQo+ICsgICAgICAgICAgIFRleHREZXZpY2VOb2RlLA0K PiArICAgICAgICAgICBNRURJQV9ERVZJQ0VfUEFUSCwNCj4gKyAgICAgICAgICAgTUVESUFfVkVO RE9SX0RQDQo+ICsgICAgICAgICAgICk7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBDb252ZXJ0 cyBhIHRleHQgZGV2aWNlIHBhdGggbm9kZSB0byBGaWxlIGRldmljZSBwYXRoIHN0cnVjdHVyZS4N Cj4gKw0KPiArICBAcGFyYW0gVGV4dERldmljZU5vZGUgIFRoZSBpbnB1dCBUZXh0IGRldmljZSBw YXRoIG5vZGUuDQo+ICsNCj4gKyAgQHJldHVybiBBIHBvaW50ZXIgdG8gdGhlIG5ld2x5LWNyZWF0 ZWQgRmlsZSBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyoqLw0KPiArRUZJX0RFVklD RV9QQVRIX1BST1RPQ09MICoNCj4gK0RldlBhdGhGcm9tVGV4dEZpbGVQYXRoICgNCj4gKyAgIENI QVIxNiAqVGV4dERldmljZU5vZGUNCj4gKyAgKQ0KPiArew0KPiArICBGSUxFUEFUSF9ERVZJQ0Vf UEFUSCAgKkZpbGU7DQo+ICsNCj4gKyAgRmlsZSA9IChGSUxFUEFUSF9ERVZJQ0VfUEFUSCAqKSBD cmVhdGVEZXZpY2VOb2RlICgNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IE1FRElBX0RFVklDRV9QQVRILA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTUVESUFfRklMRVBBVEhfRFAsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoVUlOVDE2KSAoc2l6ZW9mIChGSUxFUEFUSF9ERVZJQ0VfUEFUSCkgKyBTdHJMZW4gKFRl eHREZXZpY2VOb2RlKSAqIDIpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICApOw0KPiArDQo+ICsgIFN0ckNweVMgKEZpbGUtPlBhdGhOYW1lLCBTdHJMZW4gKFRleHREZXZp Y2VOb2RlKSArIDEsIFRleHREZXZpY2VOb2RlKTsNCj4gKw0KPiArICByZXR1cm4gKEVGSV9ERVZJ Q0VfUEFUSF9QUk9UT0NPTCAqKSBGaWxlOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgQ29udmVy dHMgYSB0ZXh0IGRldmljZSBwYXRoIG5vZGUgdG8gTWVkaWEgcHJvdG9jb2wgZGV2aWNlIHBhdGgg c3RydWN0dXJlLg0KPiArDQo+ICsgIEBwYXJhbSBUZXh0RGV2aWNlTm9kZSAgVGhlIGlucHV0IFRl eHQgZGV2aWNlIHBhdGggbm9kZS4NCj4gKw0KPiArICBAcmV0dXJuIEEgcG9pbnRlciB0byB0aGUg bmV3bHktY3JlYXRlZCBNZWRpYSBwcm90b2NvbCBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsN Cj4gKyoqLw0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoNCj4gK0RldlBhdGhGcm9tVGV4 dE1lZGlhICgNCj4gKyAgIENIQVIxNiAqVGV4dERldmljZU5vZGUNCj4gKyAgKQ0KPiArew0KPiAr ICBDSEFSMTYgICAgICAgICAgICAgICAgICAgICAgKkd1aWRTdHI7DQo+ICsgIE1FRElBX1BST1RP Q09MX0RFVklDRV9QQVRIICAqTWVkaWE7DQo+ICsNCj4gKyAgR3VpZFN0ciA9IEdldE5leHRQYXJh bVN0ciAoJlRleHREZXZpY2VOb2RlKTsNCj4gKyAgTWVkaWEgICA9IChNRURJQV9QUk9UT0NPTF9E RVZJQ0VfUEFUSCAqKSBDcmVhdGVEZXZpY2VOb2RlICgNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE1FRElBX0RFVklDRV9QQVRILA0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVESUFfUFJPVE9DT0xfRFAsDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVUlOVDE2KSBz aXplb2YgKE1FRElBX1BST1RPQ09MX0RFVklDRV9QQVRIKQ0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCj4gKw0KPiArICBTdHJUb0d1aWQgKEd1aWRT dHIsICZNZWRpYS0+UHJvdG9jb2wpOw0KPiArDQo+ICsgIHJldHVybiAoRUZJX0RFVklDRV9QQVRI X1BST1RPQ09MICopIE1lZGlhOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgQ29udmVydHMgYSB0 ZXh0IGRldmljZSBwYXRoIG5vZGUgdG8gZmlybXdhcmUgdm9sdW1lIGRldmljZSBwYXRoIHN0cnVj dHVyZS4NCj4gKw0KPiArICBAcGFyYW0gVGV4dERldmljZU5vZGUgIFRoZSBpbnB1dCBUZXh0IGRl dmljZSBwYXRoIG5vZGUuDQo+ICsNCj4gKyAgQHJldHVybiBBIHBvaW50ZXIgdG8gdGhlIG5ld2x5 LWNyZWF0ZWQgZmlybXdhcmUgdm9sdW1lIGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiAr KiovDQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0KPiArRGV2UGF0aEZyb21UZXh0RnYg KA0KPiArICAgQ0hBUjE2ICpUZXh0RGV2aWNlTm9kZQ0KPiArICApDQo+ICt7DQo+ICsgIENIQVIx NiAgICAgICAgICAgICAgICAgICAgKkd1aWRTdHI7DQo+ICsgIE1FRElBX0ZXX1ZPTF9ERVZJQ0Vf UEFUSCAgKkZ2Ow0KPiArDQo+ICsgIEd1aWRTdHIgPSBHZXROZXh0UGFyYW1TdHIgKCZUZXh0RGV2 aWNlTm9kZSk7DQo+ICsgIEZ2ICAgICAgPSAoTUVESUFfRldfVk9MX0RFVklDRV9QQVRIICopIENy ZWF0ZURldmljZU5vZGUgKA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIE1FRElBX0RFVklDRV9QQVRILA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE1FRElBX1BJV0dfRldfVk9MX0RQLA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChVSU5UMTYpIHNpemVvZiAoTUVESUFfRldfVk9M X0RFVklDRV9QQVRIKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICk7DQo+ICsNCj4gKyAgU3RyVG9HdWlkIChHdWlkU3RyLCAmRnYtPkZ2TmFtZSk7DQo+ICsN Cj4gKyAgcmV0dXJuIChFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKikgRnY7DQo+ICt9DQo+ICsN Cj4gKy8qKg0KPiArICBDb252ZXJ0cyBhIHRleHQgZGV2aWNlIHBhdGggbm9kZSB0byBmaXJtd2Fy ZSBmaWxlIGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArICBAcGFyYW0gVGV4dERldmlj ZU5vZGUgIFRoZSBpbnB1dCBUZXh0IGRldmljZSBwYXRoIG5vZGUuDQo+ICsNCj4gKyAgQHJldHVy biBBIHBvaW50ZXIgdG8gdGhlIG5ld2x5LWNyZWF0ZWQgZmlybXdhcmUgZmlsZSBkZXZpY2UgcGF0 aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyoqLw0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoN Cj4gK0RldlBhdGhGcm9tVGV4dEZ2RmlsZSAoDQo+ICsgICBDSEFSMTYgKlRleHREZXZpY2VOb2Rl DQo+ICsgICkNCj4gK3sNCj4gKyAgQ0hBUjE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAq R3VpZFN0cjsNCj4gKyAgTUVESUFfRldfVk9MX0ZJTEVQQVRIX0RFVklDRV9QQVRIICAqRnZGaWxl Ow0KPiArDQo+ICsgIEd1aWRTdHIgPSBHZXROZXh0UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7 DQo+ICsgIEZ2RmlsZSAgPSAoTUVESUFfRldfVk9MX0ZJTEVQQVRIX0RFVklDRV9QQVRIICopIENy ZWF0ZURldmljZU5vZGUgKA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE1FRElBX0RFVklDRV9QQVRILA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FRElBX1BJV0dfRldfRklMRV9EUCwN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo VUlOVDE2KSBzaXplb2YgKE1FRElBX0ZXX1ZPTF9GSUxFUEFUSF9ERVZJQ0VfUEFUSCkNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KPiAr DQo+ICsgIFN0clRvR3VpZCAoR3VpZFN0ciwgJkZ2RmlsZS0+RnZGaWxlTmFtZSk7DQo+ICsNCj4g KyAgcmV0dXJuIChFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKikgRnZGaWxlOw0KPiArfQ0KPiAr DQo+ICsvKioNCj4gKyAgQ29udmVydHMgYSB0ZXh0IGRldmljZSBwYXRoIG5vZGUgdG8gdGV4dCBy ZWxhdGl2ZSBvZmZzZXQgZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsgIEBwYXJhbSBU ZXh0RGV2aWNlTm9kZSAgVGhlIGlucHV0IFRleHQgZGV2aWNlIHBhdGggbm9kZS4NCj4gKw0KPiAr ICBAcmV0dXJuIEEgcG9pbnRlciB0byB0aGUgbmV3bHktY3JlYXRlZCBUZXh0IGRldmljZSBwYXRo IHN0cnVjdHVyZS4NCj4gKw0KPiArKiovDQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0K PiArRGV2UGF0aEZyb21UZXh0UmVsYXRpdmVPZmZzZXRSYW5nZSAoDQo+ICsgICBDSEFSMTYgKlRl eHREZXZpY2VOb2RlDQo+ICsgICkNCj4gK3sNCj4gKyAgQ0hBUjE2ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICpTdGFydGluZ09mZnNldFN0cjsNCj4gKyAgQ0hBUjE2ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICpFbmRpbmdPZmZzZXRTdHI7DQo+ICsgIE1FRElBX1JF TEFUSVZFX09GRlNFVF9SQU5HRV9ERVZJQ0VfUEFUSCAqT2Zmc2V0Ow0KPiArDQo+ICsgIFN0YXJ0 aW5nT2Zmc2V0U3RyID0gR2V0TmV4dFBhcmFtU3RyICgmVGV4dERldmljZU5vZGUpOw0KPiArICBF bmRpbmdPZmZzZXRTdHIgICA9IEdldE5leHRQYXJhbVN0ciAoJlRleHREZXZpY2VOb2RlKTsNCj4g KyAgT2Zmc2V0ICAgICAgICAgICAgPSAoTUVESUFfUkVMQVRJVkVfT0ZGU0VUX1JBTkdFX0RFVklD RV9QQVRIICopIENyZWF0ZURldmljZU5vZGUgKA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRURJQV9ERVZJQ0Vf UEFUSCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgTUVESUFfUkVMQVRJVkVfT0ZGU0VUX1JBTkdFX0RQLA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoVUlOVDE2KSBzaXplb2YgKE1FRElBX1JFTEFUSVZFX09GRlNFVF9SQU5HRV9E RVZJQ0VfUEFUSCkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCj4gKw0KPiArICBTdHJ0b2k2NCAoU3RhcnRp bmdPZmZzZXRTdHIsICZPZmZzZXQtPlN0YXJ0aW5nT2Zmc2V0KTsNCj4gKyAgU3RydG9pNjQgKEVu ZGluZ09mZnNldFN0ciwgJk9mZnNldC0+RW5kaW5nT2Zmc2V0KTsNCj4gKw0KPiArICByZXR1cm4g KEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqKSBPZmZzZXQ7DQo+ICt9DQo+ICsNCj4gKy8qKg0K PiArICBDb252ZXJ0cyBhIHRleHQgZGV2aWNlIHBhdGggbm9kZSB0byB0ZXh0IHJhbSBkaXNrIGRl dmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArICBAcGFyYW0gVGV4dERldmljZU5vZGUgIFRo ZSBpbnB1dCBUZXh0IGRldmljZSBwYXRoIG5vZGUuDQo+ICsNCj4gKyAgQHJldHVybiBBIHBvaW50 ZXIgdG8gdGhlIG5ld2x5LWNyZWF0ZWQgVGV4dCBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsN Cj4gKyoqLw0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoNCj4gK0RldlBhdGhGcm9tVGV4 dFJhbURpc2sgKA0KPiArICAgQ0hBUjE2ICpUZXh0RGV2aWNlTm9kZQ0KPiArICApDQo+ICt7DQo+ ICsgIENIQVIxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqU3RhcnRpbmdBZGRy U3RyOw0KPiArICBDSEFSMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKkVuZGlu Z0FkZHJTdHI7DQo+ICsgIENIQVIxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAq VHlwZUd1aWRTdHI7DQo+ICsgIENIQVIxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAqSW5zdGFuY2VTdHI7DQo+ICsgIE1FRElBX1JBTV9ESVNLX0RFVklDRV9QQVRIICAgICAgICAg ICAgICAqUmFtRGlzazsNCj4gKyAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFN0YXJ0aW5nQWRkcjsNCj4gKyAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEVuZGluZ0FkZHI7DQo+ICsNCj4gKyAgU3RhcnRpbmdBZGRyU3RyID0gR2V0TmV4dFBh cmFtU3RyICgmVGV4dERldmljZU5vZGUpOw0KPiArICBFbmRpbmdBZGRyU3RyICAgPSBHZXROZXh0 UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsgIEluc3RhbmNlU3RyICAgICA9IEdldE5l eHRQYXJhbVN0ciAoJlRleHREZXZpY2VOb2RlKTsNCj4gKyAgVHlwZUd1aWRTdHIgICAgID0gR2V0 TmV4dFBhcmFtU3RyICgmVGV4dERldmljZU5vZGUpOw0KPiArICBSYW1EaXNrICAgICAgICAgPSAo TUVESUFfUkFNX0RJU0tfREVWSUNFX1BBVEggKikgQ3JlYXRlRGV2aWNlTm9kZSAoDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FRElBX0RF VklDRV9QQVRILA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBNRURJQV9SQU1fRElTS19EUCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFVJTlQxNikgc2l6ZW9mIChNRURJQV9SQU1f RElTS19ERVZJQ0VfUEFUSCkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKTsNCj4gKw0KPiArICBTdHJ0b2k2NCAoU3RhcnRpbmdBZGRyU3Ry LCAmU3RhcnRpbmdBZGRyKTsNCj4gKyAgV3JpdGVVbmFsaWduZWQ2NCAoKFVJTlQ2NCAqKSAmKFJh bURpc2stPlN0YXJ0aW5nQWRkclswXSksIFN0YXJ0aW5nQWRkcik7DQo+ICsgIFN0cnRvaTY0IChF bmRpbmdBZGRyU3RyLCAmRW5kaW5nQWRkcik7DQo+ICsgIFdyaXRlVW5hbGlnbmVkNjQgKChVSU5U NjQgKikgJihSYW1EaXNrLT5FbmRpbmdBZGRyWzBdKSwgRW5kaW5nQWRkcik7DQo+ICsgIFJhbURp c2stPkluc3RhbmNlID0gKFVJTlQxNikgU3RydG9pIChJbnN0YW5jZVN0cik7DQo+ICsgIFN0clRv R3VpZCAoVHlwZUd1aWRTdHIsICZSYW1EaXNrLT5UeXBlR3VpZCk7DQo+ICsNCj4gKyAgcmV0dXJu IChFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKikgUmFtRGlzazsNCj4gK30NCj4gKw0KPiArLyoq DQo+ICsgIENvbnZlcnRzIGEgdGV4dCBkZXZpY2UgcGF0aCBub2RlIHRvIHRleHQgdmlydHVhbCBk aXNrIGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArICBAcGFyYW0gVGV4dERldmljZU5v ZGUgIFRoZSBpbnB1dCBUZXh0IGRldmljZSBwYXRoIG5vZGUuDQo+ICsNCj4gKyAgQHJldHVybiBB IHBvaW50ZXIgdG8gdGhlIG5ld2x5LWNyZWF0ZWQgVGV4dCBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUu DQo+ICsNCj4gKyoqLw0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoNCj4gK0RldlBhdGhG cm9tVGV4dFZpcnR1YWxEaXNrICgNCj4gKyAgIENIQVIxNiAqVGV4dERldmljZU5vZGUNCj4gKyAg KQ0KPiArew0KPiArICBDSEFSMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlN0 YXJ0aW5nQWRkclN0cjsNCj4gKyAgQ0hBUjE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICpFbmRpbmdBZGRyU3RyOw0KPiArICBDSEFSMTYgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKkluc3RhbmNlU3RyOw0KPiArICBNRURJQV9SQU1fRElTS19ERVZJQ0VfUEFUSCAg ICAgICAgICAgICAgKlJhbURpc2s7DQo+ICsgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBTdGFydGluZ0FkZHI7DQo+ICsgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBFbmRpbmdBZGRyOw0KPiArDQo+ICsgIFN0YXJ0aW5nQWRkclN0ciA9IEdl dE5leHRQYXJhbVN0ciAoJlRleHREZXZpY2VOb2RlKTsNCj4gKyAgRW5kaW5nQWRkclN0ciAgID0g R2V0TmV4dFBhcmFtU3RyICgmVGV4dERldmljZU5vZGUpOw0KPiArICBJbnN0YW5jZVN0ciAgICAg PSBHZXROZXh0UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsNCj4gKyAgUmFtRGlzayAg ICAgICAgID0gKE1FRElBX1JBTV9ESVNLX0RFVklDRV9QQVRIICopIENyZWF0ZURldmljZU5vZGUg KA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBNRURJQV9ERVZJQ0VfUEFUSCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgTUVESUFfUkFNX0RJU0tfRFAsDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChVSU5UMTYpIHNpemVvZiAo TUVESUFfUkFNX0RJU0tfREVWSUNFX1BBVEgpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQo+ICsNCj4gKyAgU3RydG9pNjQgKFN0YXJ0 aW5nQWRkclN0ciwgJlN0YXJ0aW5nQWRkcik7DQo+ICsgIFdyaXRlVW5hbGlnbmVkNjQgKChVSU5U NjQgKikgJihSYW1EaXNrLT5TdGFydGluZ0FkZHJbMF0pLCBTdGFydGluZ0FkZHIpOw0KPiArICBT dHJ0b2k2NCAoRW5kaW5nQWRkclN0ciwgJkVuZGluZ0FkZHIpOw0KPiArICBXcml0ZVVuYWxpZ25l ZDY0ICgoVUlOVDY0ICopICYoUmFtRGlzay0+RW5kaW5nQWRkclswXSksIEVuZGluZ0FkZHIpOw0K PiArICBSYW1EaXNrLT5JbnN0YW5jZSA9IChVSU5UMTYpIFN0cnRvaSAoSW5zdGFuY2VTdHIpOw0K PiArICBDb3B5R3VpZCAoJlJhbURpc2stPlR5cGVHdWlkLCAmZ0VmaVZpcnR1YWxEaXNrR3VpZCk7 DQo+ICsNCj4gKyAgcmV0dXJuIChFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKikgUmFtRGlzazsN Cj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIENvbnZlcnRzIGEgdGV4dCBkZXZpY2UgcGF0aCBub2Rl IHRvIHRleHQgdmlydHVhbCBjZCBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyAgQHBh cmFtIFRleHREZXZpY2VOb2RlICBUaGUgaW5wdXQgVGV4dCBkZXZpY2UgcGF0aCBub2RlLg0KPiAr DQo+ICsgIEByZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBuZXdseS1jcmVhdGVkIFRleHQgZGV2aWNl IHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9ERVZJQ0VfUEFUSF9QUk9UT0NP TCAqDQo+ICtEZXZQYXRoRnJvbVRleHRWaXJ0dWFsQ2QgKA0KPiArICAgQ0hBUjE2ICpUZXh0RGV2 aWNlTm9kZQ0KPiArICApDQo+ICt7DQo+ICsgIENIQVIxNiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAqU3RhcnRpbmdBZGRyU3RyOw0KPiArICBDSEFSMTYgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKkVuZGluZ0FkZHJTdHI7DQo+ICsgIENIQVIxNiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAqSW5zdGFuY2VTdHI7DQo+ICsgIE1FRElBX1JBTV9ESVNL X0RFVklDRV9QQVRIICAgICAgICAgICAgICAqUmFtRGlzazsNCj4gKyAgVUlOVDY0ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXJ0aW5nQWRkcjsNCj4gKyAgVUlOVDY0ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVuZGluZ0FkZHI7DQo+ICsNCj4gKyAgU3RhcnRp bmdBZGRyU3RyID0gR2V0TmV4dFBhcmFtU3RyICgmVGV4dERldmljZU5vZGUpOw0KPiArICBFbmRp bmdBZGRyU3RyICAgPSBHZXROZXh0UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsgIElu c3RhbmNlU3RyICAgICA9IEdldE5leHRQYXJhbVN0ciAoJlRleHREZXZpY2VOb2RlKTsNCj4gKw0K PiArICBSYW1EaXNrICAgICAgICAgPSAoTUVESUFfUkFNX0RJU0tfREVWSUNFX1BBVEggKikgQ3Jl YXRlRGV2aWNlTm9kZSAoDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE1FRElBX0RFVklDRV9QQVRILA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRURJQV9SQU1fRElTS19EUCwNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFVJ TlQxNikgc2l6ZW9mIChNRURJQV9SQU1fRElTS19ERVZJQ0VfUEFUSCkNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCj4gKw0KPiArICBT dHJ0b2k2NCAoU3RhcnRpbmdBZGRyU3RyLCAmU3RhcnRpbmdBZGRyKTsNCj4gKyAgV3JpdGVVbmFs aWduZWQ2NCAoKFVJTlQ2NCAqKSAmKFJhbURpc2stPlN0YXJ0aW5nQWRkclswXSksIFN0YXJ0aW5n QWRkcik7DQo+ICsgIFN0cnRvaTY0IChFbmRpbmdBZGRyU3RyLCAmRW5kaW5nQWRkcik7DQo+ICsg IFdyaXRlVW5hbGlnbmVkNjQgKChVSU5UNjQgKikgJihSYW1EaXNrLT5FbmRpbmdBZGRyWzBdKSwg RW5kaW5nQWRkcik7DQo+ICsgIFJhbURpc2stPkluc3RhbmNlID0gKFVJTlQxNikgU3RydG9pIChJ bnN0YW5jZVN0cik7DQo+ICsgIENvcHlHdWlkICgmUmFtRGlzay0+VHlwZUd1aWQsICZnRWZpVmly dHVhbENkR3VpZCk7DQo+ICsNCj4gKyAgcmV0dXJuIChFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wg KikgUmFtRGlzazsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIENvbnZlcnRzIGEgdGV4dCBkZXZp Y2UgcGF0aCBub2RlIHRvIHRleHQgcGVyc2lzdGVudCB2aXJ0dWFsIGRpc2sgZGV2aWNlIHBhdGgg c3RydWN0dXJlLg0KPiArDQo+ICsgIEBwYXJhbSBUZXh0RGV2aWNlTm9kZSAgVGhlIGlucHV0IFRl eHQgZGV2aWNlIHBhdGggbm9kZS4NCj4gKw0KPiArICBAcmV0dXJuIEEgcG9pbnRlciB0byB0aGUg bmV3bHktY3JlYXRlZCBUZXh0IGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArKiovDQo+ ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0KPiArRGV2UGF0aEZyb21UZXh0UGVyc2lzdGVu dFZpcnR1YWxEaXNrICgNCj4gKyAgIENIQVIxNiAqVGV4dERldmljZU5vZGUNCj4gKyAgKQ0KPiAr ew0KPiArICBDSEFSMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlN0YXJ0aW5n QWRkclN0cjsNCj4gKyAgQ0hBUjE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpF bmRpbmdBZGRyU3RyOw0KPiArICBDSEFSMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKkluc3RhbmNlU3RyOw0KPiArICBNRURJQV9SQU1fRElTS19ERVZJQ0VfUEFUSCAgICAgICAg ICAgICAgKlJhbURpc2s7DQo+ICsgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBTdGFydGluZ0FkZHI7DQo+ICsgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBFbmRpbmdBZGRyOw0KPiArDQo+ICsgIFN0YXJ0aW5nQWRkclN0ciA9IEdldE5leHRQ YXJhbVN0ciAoJlRleHREZXZpY2VOb2RlKTsNCj4gKyAgRW5kaW5nQWRkclN0ciAgID0gR2V0TmV4 dFBhcmFtU3RyICgmVGV4dERldmljZU5vZGUpOw0KPiArICBJbnN0YW5jZVN0ciAgICAgPSBHZXRO ZXh0UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsNCj4gKyAgUmFtRGlzayAgICAgICAg ID0gKE1FRElBX1JBTV9ESVNLX0RFVklDRV9QQVRIICopIENyZWF0ZURldmljZU5vZGUgKA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRURJ QV9ERVZJQ0VfUEFUSCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTUVESUFfUkFNX0RJU0tfRFAsDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChVSU5UMTYpIHNpemVvZiAoTUVESUFf UkFNX0RJU0tfREVWSUNFX1BBVEgpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICk7DQo+ICsNCj4gKyAgU3RydG9pNjQgKFN0YXJ0aW5nQWRk clN0ciwgJlN0YXJ0aW5nQWRkcik7DQo+ICsgIFdyaXRlVW5hbGlnbmVkNjQgKChVSU5UNjQgKikg JihSYW1EaXNrLT5TdGFydGluZ0FkZHJbMF0pLCBTdGFydGluZ0FkZHIpOw0KPiArICBTdHJ0b2k2 NCAoRW5kaW5nQWRkclN0ciwgJkVuZGluZ0FkZHIpOw0KPiArICBXcml0ZVVuYWxpZ25lZDY0ICgo VUlOVDY0ICopICYoUmFtRGlzay0+RW5kaW5nQWRkclswXSksIEVuZGluZ0FkZHIpOw0KPiArICBS YW1EaXNrLT5JbnN0YW5jZSA9IChVSU5UMTYpIFN0cnRvaSAoSW5zdGFuY2VTdHIpOw0KPiArICBD b3B5R3VpZCAoJlJhbURpc2stPlR5cGVHdWlkLCAmZ0VmaVBlcnNpc3RlbnRWaXJ0dWFsRGlza0d1 aWQpOw0KPiArDQo+ICsgIHJldHVybiAoRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICopIFJhbURp c2s7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBDb252ZXJ0cyBhIHRleHQgZGV2aWNlIHBhdGgg bm9kZSB0byB0ZXh0IHBlcnNpc3RlbnQgdmlydHVhbCBjZCBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUu DQo+ICsNCj4gKyAgQHBhcmFtIFRleHREZXZpY2VOb2RlICBUaGUgaW5wdXQgVGV4dCBkZXZpY2Ug cGF0aCBub2RlLg0KPiArDQo+ICsgIEByZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBuZXdseS1jcmVh dGVkIFRleHQgZGV2aWNlIHBhdGggc3RydWN0dXJlLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9ERVZJ Q0VfUEFUSF9QUk9UT0NPTCAqDQo+ICtEZXZQYXRoRnJvbVRleHRQZXJzaXN0ZW50VmlydHVhbENk ICgNCj4gKyAgIENIQVIxNiAqVGV4dERldmljZU5vZGUNCj4gKyAgKQ0KPiArew0KPiArICBDSEFS MTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlN0YXJ0aW5nQWRkclN0cjsNCj4g KyAgQ0hBUjE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpFbmRpbmdBZGRyU3Ry Ow0KPiArICBDSEFSMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKkluc3RhbmNl U3RyOw0KPiArICBNRURJQV9SQU1fRElTS19ERVZJQ0VfUEFUSCAgICAgICAgICAgICAgKlJhbURp c2s7DQo+ICsgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGFydGlu Z0FkZHI7DQo+ICsgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmRp bmdBZGRyOw0KPiArDQo+ICsgIFN0YXJ0aW5nQWRkclN0ciA9IEdldE5leHRQYXJhbVN0ciAoJlRl eHREZXZpY2VOb2RlKTsNCj4gKyAgRW5kaW5nQWRkclN0ciAgID0gR2V0TmV4dFBhcmFtU3RyICgm VGV4dERldmljZU5vZGUpOw0KPiArICBJbnN0YW5jZVN0ciAgICAgPSBHZXROZXh0UGFyYW1TdHIg KCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsNCj4gKyAgUmFtRGlzayAgICAgICAgID0gKE1FRElBX1JB TV9ESVNLX0RFVklDRV9QQVRIICopIENyZWF0ZURldmljZU5vZGUgKA0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRURJQV9ERVZJQ0VfUEFU SCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTUVESUFfUkFNX0RJU0tfRFAsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChVSU5UMTYpIHNpemVvZiAoTUVESUFfUkFNX0RJU0tfREVW SUNFX1BBVEgpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICk7DQo+ICsNCj4gKyAgU3RydG9pNjQgKFN0YXJ0aW5nQWRkclN0ciwgJlN0YXJ0 aW5nQWRkcik7DQo+ICsgIFdyaXRlVW5hbGlnbmVkNjQgKChVSU5UNjQgKikgJihSYW1EaXNrLT5T dGFydGluZ0FkZHJbMF0pLCBTdGFydGluZ0FkZHIpOw0KPiArICBTdHJ0b2k2NCAoRW5kaW5nQWRk clN0ciwgJkVuZGluZ0FkZHIpOw0KPiArICBXcml0ZVVuYWxpZ25lZDY0ICgoVUlOVDY0ICopICYo UmFtRGlzay0+RW5kaW5nQWRkclswXSksIEVuZGluZ0FkZHIpOw0KPiArICBSYW1EaXNrLT5JbnN0 YW5jZSA9IChVSU5UMTYpIFN0cnRvaSAoSW5zdGFuY2VTdHIpOw0KPiArICBDb3B5R3VpZCAoJlJh bURpc2stPlR5cGVHdWlkLCAmZ0VmaVBlcnNpc3RlbnRWaXJ0dWFsQ2RHdWlkKTsNCj4gKw0KPiAr ICByZXR1cm4gKEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqKSBSYW1EaXNrOw0KPiArfQ0KPiAr DQo+ICsvKioNCj4gKyAgQ29udmVydHMgYSBCQlMgdGV4dCBkZXZpY2UgcGF0aCBub2RlIHRvIEJC UyBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyAgQHBhcmFtIFRleHREZXZpY2VOb2Rl ICBUaGUgaW5wdXQgVGV4dCBkZXZpY2UgcGF0aCBub2RlLg0KPiArDQo+ICsgIEByZXR1cm4gQSBw b2ludGVyIHRvIEJCUyBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyoqLw0KPiArRUZJ X0RFVklDRV9QQVRIX1BST1RPQ09MICoNCj4gK0RldlBhdGhGcm9tVGV4dEJic1BhdGggKA0KPiAr ICAgQ0hBUjE2ICpUZXh0RGV2aWNlTm9kZQ0KPiArICApDQo+ICt7DQo+ICsgIHJldHVybiBEZXZQ YXRoRnJvbVRleHRHZW5lcmljUGF0aCAoQkJTX0RFVklDRV9QQVRILCBUZXh0RGV2aWNlTm9kZSk7 DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBDb252ZXJ0cyBhIHRleHQgZGV2aWNlIHBhdGggbm9k ZSB0byBCSU9TIEJvb3QgU3BlY2lmaWNhdGlvbiBkZXZpY2UgcGF0aCBzdHJ1Y3R1cmUuDQo+ICsN Cj4gKyAgQHBhcmFtIFRleHREZXZpY2VOb2RlICBUaGUgaW5wdXQgVGV4dCBkZXZpY2UgcGF0aCBu b2RlLg0KPiArDQo+ICsgIEByZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBuZXdseS1jcmVhdGVkIEJJ T1MgQm9vdCBTcGVjaWZpY2F0aW9uIGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArKiov DQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0KPiArRGV2UGF0aEZyb21UZXh0QkJTICgN Cj4gKyAgIENIQVIxNiAqVGV4dERldmljZU5vZGUNCj4gKyAgKQ0KPiArew0KPiArICBDSEFSMTYg ICAgICAgICAgICAgICpUeXBlU3RyOw0KPiArICBDSEFSMTYgICAgICAgICAgICAgICpJZFN0cjsN Cj4gKyAgQ0hBUjE2ICAgICAgICAgICAgICAqRmxhZ3NTdHI7DQo+ICsgIENIQVI4ICAgICAgICAg ICAgICAgKkFzY2lpU3RyOw0KPiArICBCQlNfQkJTX0RFVklDRV9QQVRIICpCYnM7DQo+ICsNCj4g KyAgVHlwZVN0ciAgID0gR2V0TmV4dFBhcmFtU3RyICgmVGV4dERldmljZU5vZGUpOw0KPiArICBJ ZFN0ciAgICAgPSBHZXROZXh0UGFyYW1TdHIgKCZUZXh0RGV2aWNlTm9kZSk7DQo+ICsgIEZsYWdz U3RyICA9IEdldE5leHRQYXJhbVN0ciAoJlRleHREZXZpY2VOb2RlKTsNCj4gKyAgQmJzICAgICAg ID0gKEJCU19CQlNfREVWSUNFX1BBVEggKikgQ3JlYXRlRGV2aWNlTm9kZSAoDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQkJTX0RFVklDRV9QQVRILA0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJCU19CQlNfRFAsDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFVJTlQxNikgKHNpemVvZiAoQkJT X0JCU19ERVZJQ0VfUEFUSCkgKyBTdHJMZW4gKElkU3RyKSkNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICApOw0KPiArDQo+ICsgIGlmIChTdHJDbXAgKFR5cGVTdHIs IEwiRmxvcHB5IikgPT0gMCkgew0KPiArICAgIEJicy0+RGV2aWNlVHlwZSA9IEJCU19UWVBFX0ZM T1BQWTsNCj4gKyAgfSBlbHNlIGlmIChTdHJDbXAgKFR5cGVTdHIsIEwiSEQiKSA9PSAwKSB7DQo+ ICsgICAgQmJzLT5EZXZpY2VUeXBlID0gQkJTX1RZUEVfSEFSRERSSVZFOw0KPiArICB9IGVsc2Ug aWYgKFN0ckNtcCAoVHlwZVN0ciwgTCJDRFJPTSIpID09IDApIHsNCj4gKyAgICBCYnMtPkRldmlj ZVR5cGUgPSBCQlNfVFlQRV9DRFJPTTsNCj4gKyAgfSBlbHNlIGlmIChTdHJDbXAgKFR5cGVTdHIs IEwiUENNQ0lBIikgPT0gMCkgew0KPiArICAgIEJicy0+RGV2aWNlVHlwZSA9IEJCU19UWVBFX1BD TUNJQTsNCj4gKyAgfSBlbHNlIGlmIChTdHJDbXAgKFR5cGVTdHIsIEwiVVNCIikgPT0gMCkgew0K PiArICAgIEJicy0+RGV2aWNlVHlwZSA9IEJCU19UWVBFX1VTQjsNCj4gKyAgfSBlbHNlIGlmIChT dHJDbXAgKFR5cGVTdHIsIEwiTmV0d29yayIpID09IDApIHsNCj4gKyAgICBCYnMtPkRldmljZVR5 cGUgPSBCQlNfVFlQRV9FTUJFRERFRF9ORVRXT1JLOw0KPiArICB9IGVsc2Ugew0KPiArICAgIEJi cy0+RGV2aWNlVHlwZSA9IChVSU5UMTYpIFN0cnRvaSAoVHlwZVN0cik7DQo+ICsgIH0NCj4gKw0K PiArICBBc2NpaVN0ciA9IEJicy0+U3RyaW5nOw0KPiArICBTdHJUb0FzY2lpIChJZFN0ciwgJkFz Y2lpU3RyKTsNCj4gKw0KPiArICBCYnMtPlN0YXR1c0ZsYWcgPSAoVUlOVDE2KSBTdHJ0b2kgKEZs YWdzU3RyKTsNCj4gKw0KPiArICByZXR1cm4gKEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqKSBC YnM7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBDb252ZXJ0cyBhIHRleHQgZGV2aWNlIHBhdGgg bm9kZSB0byBTQVRBIGRldmljZSBwYXRoIHN0cnVjdHVyZS4NCj4gKw0KPiArICBAcGFyYW0gVGV4 dERldmljZU5vZGUgIFRoZSBpbnB1dCBUZXh0IGRldmljZSBwYXRoIG5vZGUuDQo+ICsNCj4gKyAg QHJldHVybiBBIHBvaW50ZXIgdG8gdGhlIG5ld2x5LWNyZWF0ZWQgU0FUQSBkZXZpY2UgcGF0aCBz dHJ1Y3R1cmUuDQo+ICsNCj4gKyoqLw0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoNCj4g K0RldlBhdGhGcm9tVGV4dFNhdGEgKA0KPiArICAgQ0hBUjE2ICpUZXh0RGV2aWNlTm9kZQ0KPiAr ICApDQo+ICt7DQo+ICsgIFNBVEFfREVWSUNFX1BBVEggKlNhdGE7DQo+ICsgIENIQVIxNiAgICAg ICAgICAgKlBhcmFtMTsNCj4gKyAgQ0hBUjE2ICAgICAgICAgICAqUGFyYW0yOw0KPiArICBDSEFS MTYgICAgICAgICAgICpQYXJhbTM7DQo+ICsNCj4gKyAgUGFyYW0xID0gR2V0TmV4dFBhcmFtU3Ry ICgmVGV4dERldmljZU5vZGUpOw0KPiArICBQYXJhbTIgPSBHZXROZXh0UGFyYW1TdHIgKCZUZXh0 RGV2aWNlTm9kZSk7DQo+ICsgIFBhcmFtMyA9IEdldE5leHRQYXJhbVN0ciAoJlRleHREZXZpY2VO b2RlKTsNCj4gKw0KPiArICBTYXRhID0gKFNBVEFfREVWSUNFX1BBVEggKikgQ3JlYXRlRGV2aWNl Tm9kZSAoDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FU1NBR0lOR19ERVZJ Q0VfUEFUSCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTVNHX1NBVEFfRFAs DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChVSU5UMTYpIHNpemVvZiAoU0FU QV9ERVZJQ0VfUEFUSCkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCj4g KyAgU2F0YS0+SEJBUG9ydE51bWJlciAgICAgICAgICAgID0gKFVJTlQxNikgU3RydG9pIChQYXJh bTEpOw0KPiArICBTYXRhLT5Qb3J0TXVsdGlwbGllclBvcnROdW1iZXIgPSAoVUlOVDE2KSBTdHJ0 b2kgKFBhcmFtMik7DQo+ICsgIFNhdGEtPkx1biAgICAgICAgICAgICAgICAgICAgICA9IChVSU5U MTYpIFN0cnRvaSAoUGFyYW0zKTsNCj4gKw0KPiArICByZXR1cm4gKEVGSV9ERVZJQ0VfUEFUSF9Q Uk9UT0NPTCAqKSBTYXRhOw0KPiArfQ0KPiArDQo+ICtERVZJQ0VfUEFUSF9GUk9NX1RFWFRfVEFC TEUgbVVlZmlEZXZpY2VQYXRoTGliRGV2UGF0aEZyb21UZXh0VGFibGVbXSA9IHsNCj4gKyAge0wi UGF0aCIsICAgICAgICAgICAgICAgICAgICBEZXZQYXRoRnJvbVRleHRQYXRoICAgICAgICAgICAg ICAgICAgICB9LA0KPiArDQo+ICsgIHtMIkhhcmR3YXJlUGF0aCIsICAgICAgICAgICAgRGV2UGF0 aEZyb21UZXh0SGFyZHdhcmVQYXRoICAgICAgICAgICAgfSwNCj4gKyAge0wiUGNpIiwgICAgICAg ICAgICAgICAgICAgICBEZXZQYXRoRnJvbVRleHRQY2kgICAgICAgICAgICAgICAgICAgICB9LA0K PiArICB7TCJQY0NhcmQiLCAgICAgICAgICAgICAgICAgIERldlBhdGhGcm9tVGV4dFBjQ2FyZCAg ICAgICAgICAgICAgICAgIH0sDQo+ICsgIHtMIk1lbW9yeU1hcHBlZCIsICAgICAgICAgICAgRGV2 UGF0aEZyb21UZXh0TWVtb3J5TWFwcGVkICAgICAgICAgICAgfSwNCj4gKyAge0wiVmVuSHciLCAg ICAgICAgICAgICAgICAgICBEZXZQYXRoRnJvbVRleHRWZW5IdyAgICAgICAgICAgICAgICAgICB9 LA0KPiArICB7TCJDdHJsIiwgICAgICAgICAgICAgICAgICAgIERldlBhdGhGcm9tVGV4dEN0cmwg ICAgICAgICAgICAgICAgICAgIH0sDQo+ICsgIHtMIkJNQyIsICAgICAgICAgICAgICAgICAgICAg RGV2UGF0aEZyb21UZXh0Qm1jICAgICAgICAgICAgICAgICAgICAgfSwNCj4gKw0KPiArICB7TCJB Y3BpUGF0aCIsICAgICAgICAgICAgICAgIERldlBhdGhGcm9tVGV4dEFjcGlQYXRoICAgICAgICAg ICAgICAgIH0sDQo+ICsgIHtMIkFjcGkiLCAgICAgICAgICAgICAgICAgICAgRGV2UGF0aEZyb21U ZXh0QWNwaSAgICAgICAgICAgICAgICAgICAgfSwNCj4gKyAge0wiUGNpUm9vdCIsICAgICAgICAg ICAgICAgICBEZXZQYXRoRnJvbVRleHRQY2lSb290ICAgICAgICAgICAgICAgICB9LA0KPiArICB7 TCJQY2llUm9vdCIsICAgICAgICAgICAgICAgIERldlBhdGhGcm9tVGV4dFBjaWVSb290ICAgICAg ICAgICAgICAgIH0sDQo+ICsgIHtMIkZsb3BweSIsICAgICAgICAgICAgICAgICAgRGV2UGF0aEZy b21UZXh0RmxvcHB5ICAgICAgICAgICAgICAgICAgfSwNCj4gKyAge0wiS2V5Ym9hcmQiLCAgICAg ICAgICAgICAgICBEZXZQYXRoRnJvbVRleHRLZXlib2FyZCAgICAgICAgICAgICAgICB9LA0KPiAr ICB7TCJTZXJpYWwiLCAgICAgICAgICAgICAgICAgIERldlBhdGhGcm9tVGV4dFNlcmlhbCAgICAg ICAgICAgICAgICAgIH0sDQo+ICsgIHtMIlBhcmFsbGVsUG9ydCIsICAgICAgICAgICAgRGV2UGF0 aEZyb21UZXh0UGFyYWxsZWxQb3J0ICAgICAgICAgICAgfSwNCj4gKyAge0wiQWNwaUV4IiwgICAg ICAgICAgICAgICAgICBEZXZQYXRoRnJvbVRleHRBY3BpRXggICAgICAgICAgICAgICAgICB9LA0K PiArICB7TCJBY3BpRXhwIiwgICAgICAgICAgICAgICAgIERldlBhdGhGcm9tVGV4dEFjcGlFeHAg ICAgICAgICAgICAgICAgIH0sDQo+ICsgIHtMIkFjcGlBZHIiLCAgICAgICAgICAgICAgICAgRGV2 UGF0aEZyb21UZXh0QWNwaUFkciAgICAgICAgICAgICAgICAgfSwNCj4gKw0KPiArICB7TCJNc2ci LCAgICAgICAgICAgICAgICAgICAgIERldlBhdGhGcm9tVGV4dE1zZyAgICAgICAgICAgICAgICAg ICAgIH0sDQo+ICsgIHtMIkF0YSIsICAgICAgICAgICAgICAgICAgICAgRGV2UGF0aEZyb21UZXh0 QXRhICAgICAgICAgICAgICAgICAgICAgfSwNCj4gKyAge0wiU2NzaSIsICAgICAgICAgICAgICAg ICAgICBEZXZQYXRoRnJvbVRleHRTY3NpICAgICAgICAgICAgICAgICAgICB9LA0KPiArICB7TCJG aWJyZSIsICAgICAgICAgICAgICAgICAgIERldlBhdGhGcm9tVGV4dEZpYnJlICAgICAgICAgICAg ICAgICAgIH0sDQo+ICsgIHtMIkZpYnJlRXgiLCAgICAgICAgICAgICAgICAgRGV2UGF0aEZyb21U ZXh0RmlicmVFeCAgICAgICAgICAgICAgICAgfSwNCj4gKyAge0wiSTEzOTQiLCAgICAgICAgICAg ICAgICAgICBEZXZQYXRoRnJvbVRleHQxMzk0ICAgICAgICAgICAgICAgICAgICB9LA0KPiArICB7 TCJVU0IiLCAgICAgICAgICAgICAgICAgICAgIERldlBhdGhGcm9tVGV4dFVzYiAgICAgICAgICAg ICAgICAgICAgIH0sDQo+ICsgIHtMIkkyTyIsICAgICAgICAgICAgICAgICAgICAgRGV2UGF0aEZy b21UZXh0STJPICAgICAgICAgICAgICAgICAgICAgfSwNCj4gKyAge0wiSW5maW5pYmFuZCIsICAg ICAgICAgICAgICBEZXZQYXRoRnJvbVRleHRJbmZpbmliYW5kICAgICAgICAgICAgICB9LA0KPiAr ICB7TCJWZW5Nc2ciLCAgICAgICAgICAgICAgICAgIERldlBhdGhGcm9tVGV4dFZlbk1zZyAgICAg ICAgICAgICAgICAgIH0sDQo+ICsgIHtMIlZlblBjQW5zaSIsICAgICAgICAgICAgICAgRGV2UGF0 aEZyb21UZXh0VmVuUGNBbnNpICAgICAgICAgICAgICAgfSwNCj4gKyAge0wiVmVuVnQxMDAiLCAg ICAgICAgICAgICAgICBEZXZQYXRoRnJvbVRleHRWZW5WdDEwMCAgICAgICAgICAgICAgICB9LA0K PiArICB7TCJWZW5WdDEwMFBsdXMiLCAgICAgICAgICAgIERldlBhdGhGcm9tVGV4dFZlblZ0MTAw UGx1cyAgICAgICAgICAgIH0sDQo+ICsgIHtMIlZlblV0ZjgiLCAgICAgICAgICAgICAgICAgRGV2 UGF0aEZyb21UZXh0VmVuVXRmOCAgICAgICAgICAgICAgICAgfSwNCj4gKyAge0wiVWFydEZsb3dD dHJsIiwgICAgICAgICAgICBEZXZQYXRoRnJvbVRleHRVYXJ0Rmxvd0N0cmwgICAgICAgICAgICB9 LA0KPiArICB7TCJTQVMiLCAgICAgICAgICAgICAgICAgICAgIERldlBhdGhGcm9tVGV4dFNBUyAg ICAgICAgICAgICAgICAgICAgIH0sDQo+ICsgIHtMIlNhc0V4IiwgICAgICAgICAgICAgICAgICAg RGV2UGF0aEZyb21UZXh0U2FzRXggICAgICAgICAgICAgICAgICAgfSwNCj4gKyAge0wiTlZNZSIs ICAgICAgICAgICAgICAgICAgICBEZXZQYXRoRnJvbVRleHROVk1lICAgICAgICAgICAgICAgICAg ICB9LA0KPiArICB7TCJVRlMiLCAgICAgICAgICAgICAgICAgICAgIERldlBhdGhGcm9tVGV4dFVm cyAgICAgICAgICAgICAgICAgICAgIH0sDQo+ICsgIHtMIlNEIiwgICAgICAgICAgICAgICAgICAg ICAgRGV2UGF0aEZyb21UZXh0U2QgICAgICAgICAgICAgICAgICAgICAgfSwNCj4gKyAge0wiZU1N QyIsICAgICAgICAgICAgICAgICAgICBEZXZQYXRoRnJvbVRleHRFbW1jICAgICAgICAgICAgICAg ICAgICB9LA0KPiArICB7TCJEZWJ1Z1BvcnQiLCAgICAgICAgICAgICAgIERldlBhdGhGcm9tVGV4 dERlYnVnUG9ydCAgICAgICAgICAgICAgIH0sDQo+ICsgIHtMIk1BQyIsICAgICAgICAgICAgICAg ICAgICAgRGV2UGF0aEZyb21UZXh0TUFDICAgICAgICAgICAgICAgICAgICAgfSwNCj4gKyAge0wi SVB2NCIsICAgICAgICAgICAgICAgICAgICBEZXZQYXRoRnJvbVRleHRJUHY0ICAgICAgICAgICAg ICAgICAgICB9LA0KPiArICB7TCJJUHY2IiwgICAgICAgICAgICAgICAgICAgIERldlBhdGhGcm9t VGV4dElQdjYgICAgICAgICAgICAgICAgICAgIH0sDQo+ICsgIHtMIlVhcnQiLCAgICAgICAgICAg ICAgICAgICAgRGV2UGF0aEZyb21UZXh0VWFydCAgICAgICAgICAgICAgICAgICAgfSwNCj4gKyAg e0wiVXNiQ2xhc3MiLCAgICAgICAgICAgICAgICBEZXZQYXRoRnJvbVRleHRVc2JDbGFzcyAgICAg ICAgICAgICAgICB9LA0KPiArICB7TCJVc2JBdWRpbyIsICAgICAgICAgICAgICAgIERldlBhdGhG cm9tVGV4dFVzYkF1ZGlvICAgICAgICAgICAgICAgIH0sDQo+ICsgIHtMIlVzYkNEQ0NvbnRyb2wi LCAgICAgICAgICAgRGV2UGF0aEZyb21UZXh0VXNiQ0RDQ29udHJvbCAgICAgICAgICAgfSwNCj4g KyAge0wiVXNiSElEIiwgICAgICAgICAgICAgICAgICBEZXZQYXRoRnJvbVRleHRVc2JISUQgICAg ICAgICAgICAgICAgICB9LA0KPiArICB7TCJVc2JJbWFnZSIsICAgICAgICAgICAgICAgIERldlBh dGhGcm9tVGV4dFVzYkltYWdlICAgICAgICAgICAgICAgIH0sDQo+ICsgIHtMIlVzYlByaW50ZXIi LCAgICAgICAgICAgICAgRGV2UGF0aEZyb21UZXh0VXNiUHJpbnRlciAgICAgICAgICAgICAgfSwN Cj4gKyAge0wiVXNiTWFzc1N0b3JhZ2UiLCAgICAgICAgICBEZXZQYXRoRnJvbVRleHRVc2JNYXNz U3RvcmFnZSAgICAgICAgICB9LA0KPiArICB7TCJVc2JIdWIiLCAgICAgICAgICAgICAgICAgIERl dlBhdGhGcm9tVGV4dFVzYkh1YiAgICAgICAgICAgICAgICAgIH0sDQo+ICsgIHtMIlVzYkNEQ0Rh dGEiLCAgICAgICAgICAgICAgRGV2UGF0aEZyb21UZXh0VXNiQ0RDRGF0YSAgICAgICAgICAgICAg fSwNCj4gKyAge0wiVXNiU21hcnRDYXJkIiwgICAgICAgICAgICBEZXZQYXRoRnJvbVRleHRVc2JT bWFydENhcmQgICAgICAgICAgICB9LA0KPiArICB7TCJVc2JWaWRlbyIsICAgICAgICAgICAgICAg IERldlBhdGhGcm9tVGV4dFVzYlZpZGVvICAgICAgICAgICAgICAgIH0sDQo+ICsgIHtMIlVzYkRp YWdub3N0aWMiLCAgICAgICAgICAgRGV2UGF0aEZyb21UZXh0VXNiRGlhZ25vc3RpYyAgICAgICAg ICAgfSwNCj4gKyAge0wiVXNiV2lyZWxlc3MiLCAgICAgICAgICAgICBEZXZQYXRoRnJvbVRleHRV c2JXaXJlbGVzcyAgICAgICAgICAgICB9LA0KPiArICB7TCJVc2JEZXZpY2VGaXJtd2FyZVVwZGF0 ZSIsIERldlBhdGhGcm9tVGV4dFVzYkRldmljZUZpcm13YXJlVXBkYXRlIH0sDQo+ICsgIHtMIlVz YklyZGFCcmlkZ2UiLCAgICAgICAgICAgRGV2UGF0aEZyb21UZXh0VXNiSXJkYUJyaWRnZSAgICAg ICAgICAgfSwNCj4gKyAge0wiVXNiVGVzdEFuZE1lYXN1cmVtZW50IiwgICBEZXZQYXRoRnJvbVRl eHRVc2JUZXN0QW5kTWVhc3VyZW1lbnQgICB9LA0KPiArICB7TCJVc2JXd2lkIiwgICAgICAgICAg ICAgICAgIERldlBhdGhGcm9tVGV4dFVzYld3aWQgICAgICAgICAgICAgICAgIH0sDQo+ICsgIHtM IlVuaXQiLCAgICAgICAgICAgICAgICAgICAgRGV2UGF0aEZyb21UZXh0VW5pdCAgICAgICAgICAg ICAgICAgICAgfSwNCj4gKyAge0wiaVNDU0kiLCAgICAgICAgICAgICAgICAgICBEZXZQYXRoRnJv bVRleHRpU0NTSSAgICAgICAgICAgICAgICAgICB9LA0KPiArICB7TCJWbGFuIiwgICAgICAgICAg ICAgICAgICAgIERldlBhdGhGcm9tVGV4dFZsYW4gICAgICAgICAgICAgICAgICAgIH0sDQo+ICsg IHtMIlVyaSIsICAgICAgICAgICAgICAgICAgICAgRGV2UGF0aEZyb21UZXh0VXJpICAgICAgICAg ICAgICAgICAgICAgfSwNCj4gKyAge0wiQmx1ZXRvb3RoIiwgICAgICAgICAgICAgICBEZXZQYXRo RnJvbVRleHRCbHVldG9vdGggICAgICAgICAgICAgICB9LA0KPiArICB7TCJXaS1GaSIsICAgICAg ICAgICAgICAgICAgIERldlBhdGhGcm9tVGV4dFdpRmkgICAgICAgICAgICAgICAgICAgIH0sDQo+ ICsgIHtMIk1lZGlhUGF0aCIsICAgICAgICAgICAgICAgRGV2UGF0aEZyb21UZXh0TWVkaWFQYXRo ICAgICAgICAgICAgICAgfSwNCj4gKyAge0wiSEQiLCAgICAgICAgICAgICAgICAgICAgICBEZXZQ YXRoRnJvbVRleHRIRCAgICAgICAgICAgICAgICAgICAgICB9LA0KPiArICB7TCJDRFJPTSIsICAg ICAgICAgICAgICAgICAgIERldlBhdGhGcm9tVGV4dENEUk9NICAgICAgICAgICAgICAgICAgIH0s DQo+ICsgIHtMIlZlbk1lZGlhIiwgICAgICAgICAgICAgICAgRGV2UGF0aEZyb21UZXh0VmVuTWVk aWEgICAgICAgICAgICAgICAgfSwNCj4gKyAge0wiTWVkaWEiLCAgICAgICAgICAgICAgICAgICBE ZXZQYXRoRnJvbVRleHRNZWRpYSAgICAgICAgICAgICAgICAgICB9LA0KPiArICB7TCJGdiIsICAg ICAgICAgICAgICAgICAgICAgIERldlBhdGhGcm9tVGV4dEZ2ICAgICAgICAgICAgICAgICAgICAg IH0sDQo+ICsgIHtMIkZ2RmlsZSIsICAgICAgICAgICAgICAgICAgRGV2UGF0aEZyb21UZXh0RnZG aWxlICAgICAgICAgICAgICAgICAgfSwNCj4gKyAge0wiT2Zmc2V0IiwgICAgICAgICAgICAgICAg ICBEZXZQYXRoRnJvbVRleHRSZWxhdGl2ZU9mZnNldFJhbmdlICAgICB9LA0KPiArICB7TCJSYW1E aXNrIiwgICAgICAgICAgICAgICAgIERldlBhdGhGcm9tVGV4dFJhbURpc2sgICAgICAgICAgICAg ICAgIH0sDQo+ICsgIHtMIlZpcnR1YWxEaXNrIiwgICAgICAgICAgICAgRGV2UGF0aEZyb21UZXh0 VmlydHVhbERpc2sgICAgICAgICAgICAgfSwNCj4gKyAge0wiVmlydHVhbENEIiwgICAgICAgICAg ICAgICBEZXZQYXRoRnJvbVRleHRWaXJ0dWFsQ2QgICAgICAgICAgICAgICB9LA0KPiArICB7TCJQ ZXJzaXN0ZW50VmlydHVhbERpc2siLCAgIERldlBhdGhGcm9tVGV4dFBlcnNpc3RlbnRWaXJ0dWFs RGlzayAgIH0sDQo+ICsgIHtMIlBlcnNpc3RlbnRWaXJ0dWFsQ0QiLCAgICAgRGV2UGF0aEZyb21U ZXh0UGVyc2lzdGVudFZpcnR1YWxDZCAgICAgfSwNCj4gKw0KPiArICB7TCJCYnNQYXRoIiwgICAg ICAgICAgICAgICAgIERldlBhdGhGcm9tVGV4dEJic1BhdGggICAgICAgICAgICAgICAgIH0sDQo+ ICsgIHtMIkJCUyIsICAgICAgICAgICAgICAgICAgICAgRGV2UGF0aEZyb21UZXh0QkJTICAgICAg ICAgICAgICAgICAgICAgfSwNCj4gKyAge0wiU2F0YSIsICAgICAgICAgICAgICAgICAgICBEZXZQ YXRoRnJvbVRleHRTYXRhICAgICAgICAgICAgICAgICAgICB9LA0KPiArICB7TlVMTCwgTlVMTH0N Cj4gK307DQo+ICsNCj4gKy8qKg0KPiArICBDb252ZXJ0IHRleHQgdG8gdGhlIGJpbmFyeSByZXBy ZXNlbnRhdGlvbiBvZiBhIGRldmljZSBub2RlLg0KPiArDQo+ICsgIEBwYXJhbSBUZXh0RGV2aWNl Tm9kZSAgVGV4dERldmljZU5vZGUgcG9pbnRzIHRvIHRoZSB0ZXh0IHJlcHJlc2VudGF0aW9uIG9m IGEgZGV2aWNlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS4gQ29udmVyc2lvbiBz dGFydHMgd2l0aCB0aGUgZmlyc3QgY2hhcmFjdGVyIGFuZCBjb250aW51ZXMNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICB1bnRpbCB0aGUgZmlyc3Qgbm9uLWRldmljZSBub2RlIGNoYXJhY3Rl ci4NCj4gKw0KPiArICBAcmV0dXJuIEEgcG9pbnRlciB0byB0aGUgRUZJIGRldmljZSBub2RlIG9y IE5VTEwgaWYgVGV4dERldmljZU5vZGUgaXMgTlVMTCBvciB0aGVyZSB3YXMNCj4gKyAgICAgICAg ICBpbnN1ZmZpY2llbnQgbWVtb3J5IG9yIHRleHQgdW5zdXBwb3J0ZWQuDQo+ICsNCj4gKyoqLw0K PiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoNCj4gK1VlZmlEZXZpY2VQYXRoTGliQ29udmVy dFRleHRUb0RldmljZU5vZGUgKA0KPiArICAgQ09OU1QgQ0hBUjE2ICpUZXh0RGV2aWNlTm9kZQ0K PiArICApDQo+ICt7DQo+ICsgIERFVklDRV9QQVRIX0ZST01fVEVYVCAgICBGcm9tVGV4dDsNCj4g KyAgQ0hBUjE2ICAgICAgICAgICAgICAgICAgICpQYXJhbVN0cjsNCj4gKyAgRUZJX0RFVklDRV9Q QVRIX1BST1RPQ09MICpEZXZpY2VOb2RlOw0KPiArICBDSEFSMTYgICAgICAgICAgICAgICAgICAg KkRldmljZU5vZGVTdHI7DQo+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICBJbmRleDsNCj4g Kw0KPiArICBpZiAoKFRleHREZXZpY2VOb2RlID09IE5VTEwpIHx8IChJU19OVUxMICgqVGV4dERl dmljZU5vZGUpKSkgew0KPiArICAgIHJldHVybiBOVUxMOw0KPiArICB9DQo+ICsNCj4gKyAgUGFy YW1TdHIgICAgICA9IE5VTEw7DQo+ICsgIEZyb21UZXh0ICAgICAgPSBOVUxMOw0KPiArICBEZXZp Y2VOb2RlU3RyID0gVWVmaURldmljZVBhdGhMaWJTdHJEdXBsaWNhdGUgKFRleHREZXZpY2VOb2Rl KTsNCj4gKyAgQVNTRVJUIChEZXZpY2VOb2RlU3RyICE9IE5VTEwpOw0KPiArDQo+ICsgIGZvciAo SW5kZXggPSAwOyBtVWVmaURldmljZVBhdGhMaWJEZXZQYXRoRnJvbVRleHRUYWJsZVtJbmRleF0u RnVuY3Rpb24gIT0gTlVMTDsgSW5kZXgrKykgew0KPiArICAgIFBhcmFtU3RyID0gR2V0UGFyYW1C eU5vZGVOYW1lIChEZXZpY2VOb2RlU3RyLCBtVWVmaURldmljZVBhdGhMaWJEZXZQYXRoRnJvbVRl eHRUYWJsZVtJbmRleF0uRGV2aWNlUGF0aE5vZGVUZXh0KTsNCj4gKyAgICBpZiAoUGFyYW1TdHIg IT0gTlVMTCkgew0KPiArICAgICAgRnJvbVRleHQgPSBtVWVmaURldmljZVBhdGhMaWJEZXZQYXRo RnJvbVRleHRUYWJsZVtJbmRleF0uRnVuY3Rpb247DQo+ICsgICAgICBicmVhazsNCj4gKyAgICB9 DQo+ICsgIH0NCj4gKw0KPiArICBpZiAoRnJvbVRleHQgPT0gTlVMTCkgew0KPiArICAgIC8vDQo+ ICsgICAgLy8gQSBmaWxlIHBhdGgNCj4gKyAgICAvLw0KPiArICAgIEZyb21UZXh0ID0gRGV2UGF0 aEZyb21UZXh0RmlsZVBhdGg7DQo+ICsgICAgRGV2aWNlTm9kZSA9IEZyb21UZXh0IChEZXZpY2VO b2RlU3RyKTsNCj4gKyAgfSBlbHNlIHsNCj4gKyAgICBEZXZpY2VOb2RlID0gRnJvbVRleHQgKFBh cmFtU3RyKTsNCj4gKyAgICBmcmVlIChQYXJhbVN0cik7DQo+ICsgIH0NCj4gKw0KPiArICBmcmVl IChEZXZpY2VOb2RlU3RyKTsNCj4gKw0KPiArICByZXR1cm4gRGV2aWNlTm9kZTsNCj4gK30NCj4g Kw0KPiArLyoqDQo+ICsgIENvbnZlcnQgdGV4dCB0byB0aGUgYmluYXJ5IHJlcHJlc2VudGF0aW9u IG9mIGEgZGV2aWNlIHBhdGguDQo+ICsNCj4gKw0KPiArICBAcGFyYW0gVGV4dERldmljZVBhdGgg IFRleHREZXZpY2VQYXRoIHBvaW50cyB0byB0aGUgdGV4dCByZXByZXNlbnRhdGlvbiBvZiBhIGRl dmljZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguIENvbnZlcnNpb24gc3RhcnRz IHdpdGggdGhlIGZpcnN0IGNoYXJhY3RlciBhbmQgY29udGludWVzDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgdW50aWwgdGhlIGZpcnN0IG5vbi1kZXZpY2Ugbm9kZSBjaGFyYWN0ZXIuDQo+ ICsNCj4gKyAgQHJldHVybiBBIHBvaW50ZXIgdG8gdGhlIGFsbG9jYXRlZCBkZXZpY2UgcGF0aCBv ciBOVUxMIGlmIFRleHREZXZpY2VOb2RlIGlzIE5VTEwgb3INCj4gKyAgICAgICAgICB0aGVyZSB3 YXMgaW5zdWZmaWNpZW50IG1lbW9yeS4NCj4gKw0KPiArKiovDQo+ICtFRklfREVWSUNFX1BBVEhf UFJPVE9DT0wgKg0KPiArVWVmaURldmljZVBhdGhMaWJDb252ZXJ0VGV4dFRvRGV2aWNlUGF0aCAo DQo+ICsgICBDT05TVCBDSEFSMTYgKlRleHREZXZpY2VQYXRoDQo+ICsgICkNCj4gK3sNCj4gKyAg RUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICpEZXZpY2VOb2RlOw0KPiArICBFRklfREVWSUNFX1BB VEhfUFJPVE9DT0wgKk5ld0RldmljZVBhdGg7DQo+ICsgIENIQVIxNiAgICAgICAgICAgICAgICAg ICAqRGV2aWNlUGF0aFN0cjsNCj4gKyAgQ0hBUjE2ICAgICAgICAgICAgICAgICAgICpTdHI7DQo+ ICsgIENIQVIxNiAgICAgICAgICAgICAgICAgICAqRGV2aWNlTm9kZVN0cjsNCj4gKyAgQk9PTEVB TiAgICAgICAgICAgICAgICAgIElzSW5zdGFuY2VFbmQ7DQo+ICsgIEVGSV9ERVZJQ0VfUEFUSF9Q Uk9UT0NPTCAqRGV2aWNlUGF0aDsNCj4gKw0KPiArICBpZiAoKFRleHREZXZpY2VQYXRoID09IE5V TEwpIHx8IChJU19OVUxMICgqVGV4dERldmljZVBhdGgpKSkgew0KPiArICAgIHJldHVybiBOVUxM Ow0KPiArICB9DQo+ICsNCj4gKyAgRGV2aWNlUGF0aCA9IChFRklfREVWSUNFX1BBVEhfUFJPVE9D T0wgKikgQWxsb2NhdGVQb29sIChFTkRfREVWSUNFX1BBVEhfTEVOR1RIKTsNCj4gKyAgQVNTRVJU IChEZXZpY2VQYXRoICE9IE5VTEwpOw0KPiArICBTZXREZXZpY2VQYXRoRW5kTm9kZSAoRGV2aWNl UGF0aCk7DQo+ICsNCj4gKyAgRGV2aWNlUGF0aFN0ciA9IFVlZmlEZXZpY2VQYXRoTGliU3RyRHVw bGljYXRlIChUZXh0RGV2aWNlUGF0aCk7DQo+ICsNCj4gKyAgU3RyICAgICAgICAgICA9IERldmlj ZVBhdGhTdHI7DQo+ICsgIHdoaWxlICgoRGV2aWNlTm9kZVN0ciA9IEdldE5leHREZXZpY2VOb2Rl U3RyICgmU3RyLCAmSXNJbnN0YW5jZUVuZCkpICE9IE5VTEwpIHsNCj4gKyAgICBEZXZpY2VOb2Rl ID0gVWVmaURldmljZVBhdGhMaWJDb252ZXJ0VGV4dFRvRGV2aWNlTm9kZSAoRGV2aWNlTm9kZVN0 cik7DQo+ICsNCj4gKyAgICBOZXdEZXZpY2VQYXRoID0gQXBwZW5kRGV2aWNlUGF0aE5vZGUgKERl dmljZVBhdGgsIERldmljZU5vZGUpOw0KPiArICAgIGZyZWUgKERldmljZVBhdGgpOw0KPiArICAg IGZyZWUgKERldmljZU5vZGUpOw0KPiArICAgIERldmljZVBhdGggPSBOZXdEZXZpY2VQYXRoOw0K PiArDQo+ICsgICAgaWYgKElzSW5zdGFuY2VFbmQpIHsNCj4gKyAgICAgIERldmljZU5vZGUgPSAo RUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICopIEFsbG9jYXRlUG9vbCAoRU5EX0RFVklDRV9QQVRI X0xFTkdUSCk7DQo+ICsgICAgICBBU1NFUlQgKERldmljZU5vZGUgIT0gTlVMTCk7DQo+ICsgICAg ICBTZXREZXZpY2VQYXRoRW5kTm9kZSAoRGV2aWNlTm9kZSk7DQo+ICsgICAgICBEZXZpY2VOb2Rl LT5TdWJUeXBlID0gRU5EX0lOU1RBTkNFX0RFVklDRV9QQVRIX1NVQlRZUEU7DQo+ICsNCj4gKyAg ICAgIE5ld0RldmljZVBhdGggPSBBcHBlbmREZXZpY2VQYXRoTm9kZSAoRGV2aWNlUGF0aCwgRGV2 aWNlTm9kZSk7DQo+ICsgICAgICBmcmVlIChEZXZpY2VQYXRoKTsNCj4gKyAgICAgIGZyZWUgKERl dmljZU5vZGUpOw0KPiArICAgICAgRGV2aWNlUGF0aCA9IE5ld0RldmljZVBhdGg7DQo+ICsgICAg fQ0KPiArICB9DQo+ICsNCj4gKyAgZnJlZSAoRGV2aWNlUGF0aFN0cik7DQo+ICsgIHJldHVybiBE ZXZpY2VQYXRoOw0KPiArfQ0KPiBkaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9DL0Rldmlj ZVBhdGgvRGV2aWNlUGF0aFV0aWxpdGllcy5jIGIvQmFzZVRvb2xzL1NvdXJjZS9DL0RldmljZVBh dGgvRGV2aWNlUGF0aFV0aWxpdGllcy5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4 IDAwMDAwMDAuLmQ0ZWMyNzQNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9CYXNlVG9vbHMvU291 cmNlL0MvRGV2aWNlUGF0aC9EZXZpY2VQYXRoVXRpbGl0aWVzLmMNCj4gQEAgLTAsMCArMSw4NzUg QEANCj4gKy8qKiBAZmlsZQ0KPiArICBEZXZpY2UgUGF0aCBzZXJ2aWNlcy4gVGhlIHRoaW5nIHRv IHJlbWVtYmVyIGlzIGRldmljZSBwYXRocyBhcmUgYnVpbHQgb3V0IG9mDQo+ICsgIG5vZGVzLiBU aGUgZGV2aWNlIHBhdGggaXMgdGVybWluYXRlZCBieSBhbiBlbmQgbm9kZSB0aGF0IGlzIGxlbmd0 aA0KPiArICBzaXplb2YoRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MKS4gVGhhdCB3b3VsZCBiZSB3 aHkgdGhlcmUgaXMgc2l6ZW9mKEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCkNCj4gKyAgYWxsIG92 ZXIgdGhpcyBmaWxlLg0KPiArDQo+ICsgIFRoZSBvbmx5IHBsYWNlIHdoZXJlIG11bHRpLWluc3Rh bmNlIGRldmljZSBwYXRocyBhcmUgc3VwcG9ydGVkIGlzIGluDQo+ICsgIGVudmlyb25tZW50IHZh cmlibGVzLiBNdWx0aS1pbnN0YW5jZSBkZXZpY2UgcGF0aHMgc2hvdWxkIG5ldmVyIGJlIHBsYWNl ZA0KPiArICBvbiBhIEhhbmRsZS4NCj4gKw0KPiArICBDb3B5cmlnaHQgKGMpIDIwMTcsIEludGVs IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gKyAgVGhpcyBwcm9ncmFt IGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiArICBhcmUgbGljZW5zZWQgYW5kIG1h ZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEIExp Y2Vuc2UNCj4gKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVs bCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KPiArICBodHRwOi8vb3BlbnNv dXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwLg0KPiArDQo+ICsgIFRIRSBQUk9HUkFN IElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiIEJBU0lT LA0KPiArICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5E LCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELg0KPiArDQo+ICsqKi8NCj4gKw0KPiArI2luY2x1 ZGUgIlVlZmlEZXZpY2VQYXRoTGliLmgiDQo+ICsjaW5jbHVkZSA8UHJvdG9jb2wvRGV2aWNlUGF0 aFV0aWxpdGllcy5oPg0KPiArDQo+ICsvLw0KPiArLy8gVGVtcGxhdGUgZm9yIGFuIGVuZC1vZi1k ZXZpY2UgcGF0aCBub2RlLg0KPiArLy8NCj4gK0NPTlNUIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NP TCAgbVVlZmlEZXZpY2VQYXRoTGliRW5kRGV2aWNlUGF0aCA9IHsNCj4gKyAgRU5EX0RFVklDRV9Q QVRIX1RZUEUsDQo+ICsgIEVORF9FTlRJUkVfREVWSUNFX1BBVEhfU1VCVFlQRSwNCj4gKyAgew0K PiArICAgIEVORF9ERVZJQ0VfUEFUSF9MRU5HVEgsDQo+ICsgICAgMA0KPiArICB9DQo+ICt9Ow0K PiArDQo+ICsvKioNCj4gKyAgRGV0ZXJtaW5lIHdoZXRoZXIgYSBnaXZlbiBkZXZpY2UgcGF0aCBp cyB2YWxpZC4NCj4gKyAgSWYgRGV2aWNlUGF0aCBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiAr DQo+ICsgIEBwYXJhbSAgRGV2aWNlUGF0aCAgQSBwb2ludGVyIHRvIGEgZGV2aWNlIHBhdGggZGF0 YSBzdHJ1Y3R1cmUuDQo+ICsgIEBwYXJhbSAgTWF4U2l6ZSAgICAgVGhlIG1heGltdW0gc2l6ZSBv ZiB0aGUgZGV2aWNlIHBhdGggZGF0YSBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyAgQHJldHZhbCBUUlVF ICAgICAgICBEZXZpY2VQYXRoIGlzIHZhbGlkLg0KPiArICBAcmV0dmFsIEZBTFNFICAgICAgIFRo ZSBsZW5ndGggb2YgYW55IG5vZGUgbm9kZSBpbiB0aGUgRGV2aWNlUGF0aCBpcyBsZXNzDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgdGhhbiBzaXplb2YgKEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NP TCkuDQo+ICsgIEByZXR2YWwgRkFMU0UgICAgICAgSWYgTWF4U2l6ZSBpcyBub3QgemVybywgdGhl IHNpemUgb2YgdGhlIERldmljZVBhdGgNCj4gKyAgICAgICAgICAgICAgICAgICAgICBleGNlZWRz IE1heFNpemUuDQo+ICsgIEByZXR2YWwgRkFMU0UgICAgICAgSWYgUGNkTWF4aW11bURldmljZVBh dGhOb2RlQ291bnQgaXMgbm90IHplcm8sIHRoZSBub2RlDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgY291bnQgb2YgdGhlIERldmljZVBhdGggZXhjZWVkcyBQY2RNYXhpbXVtRGV2aWNlUGF0aE5v ZGVDb3VudC4NCj4gKyoqLw0KPiArQk9PTEVBTg0KPiArSXNEZXZpY2VQYXRoVmFsaWQgKA0KPiAr ICAgQ09OU1QgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICpEZXZpY2VQYXRoLA0KPiArICAgVUlO VE4gICAgICAgICAgICAgICAgICAgIE1heFNpemUNCj4gKyAgKQ0KPiArew0KPiArICBVSU5UTiBD b3VudDsNCj4gKyAgVUlOVE4gU2l6ZTsNCj4gKyAgVUlOVE4gTm9kZUxlbmd0aDsNCj4gKw0KPiAr ICBBU1NFUlQgKERldmljZVBhdGggIT0gTlVMTCk7DQo+ICsNCj4gKyAgaWYgKE1heFNpemUgPT0g MCkgew0KPiArICAgIE1heFNpemUgPSBNQVhfVUlOVE47DQo+ICsgfQ0KPiArDQo+ICsgIC8vDQo+ ICsgIC8vIFZhbGlkYXRlIHRoZSBpbnB1dCBzaXplIGJpZyBlbm91Z2ggdG8gdG91Y2ggdGhlIGZp cnN0IG5vZGUuDQo+ICsgIC8vDQo+ICsgIGlmIChNYXhTaXplIDwgc2l6ZW9mIChFRklfREVWSUNF X1BBVEhfUFJPVE9DT0wpKSB7DQo+ICsgICAgcmV0dXJuIEZBTFNFOw0KPiArICB9DQo+ICsNCj4g KyAgZm9yIChDb3VudCA9IDAsIFNpemUgPSAwOyAhSXNEZXZpY2VQYXRoRW5kIChEZXZpY2VQYXRo KTsgRGV2aWNlUGF0aCA9IE5leHREZXZpY2VQYXRoTm9kZSAoRGV2aWNlUGF0aCkpIHsNCj4gKyAg ICBOb2RlTGVuZ3RoID0gRGV2aWNlUGF0aE5vZGVMZW5ndGggKERldmljZVBhdGgpOw0KPiArICAg IGlmIChOb2RlTGVuZ3RoIDwgc2l6ZW9mIChFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wpKSB7DQo+ ICsgICAgICByZXR1cm4gRkFMU0U7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgaWYgKE5vZGVMZW5n dGggPiBNQVhfVUlOVE4gLSBTaXplKSB7DQo+ICsgICAgICByZXR1cm4gRkFMU0U7DQo+ICsgICAg fQ0KPiArICAgIFNpemUgKz0gTm9kZUxlbmd0aDsNCj4gKw0KPiArICAgIC8vDQo+ICsgICAgLy8g VmFsaWRhdGUgbmV4dCBub2RlIGJlZm9yZSB0b3VjaCBpdC4NCj4gKyAgICAvLw0KPiArICAgIGlm IChTaXplID4gTWF4U2l6ZSAtIEVORF9ERVZJQ0VfUEFUSF9MRU5HVEggKSB7DQo+ICsgICAgICBy ZXR1cm4gRkFMU0U7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgQ291bnQrKzsNCj4gKyAgICBpZiAo Q291bnQgPj0gTUFYX0RFVklDRV9QQVRIX05PREVfQ09VTlQpIHsNCj4gKyAgICAgIHJldHVybiBG QUxTRTsNCj4gKyAgICAgIH0NCj4gKw0KPiArICB9DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gT25s eSByZXR1cm4gVFJVRSB3aGVuIHRoZSBFbmQgRGV2aWNlIFBhdGggbm9kZSBpcyB2YWxpZC4NCj4g KyAgLy8NCj4gKyAgcmV0dXJuIChCT09MRUFOKSAoRGV2aWNlUGF0aE5vZGVMZW5ndGggKERldmlj ZVBhdGgpID09IEVORF9ERVZJQ0VfUEFUSF9MRU5HVEgpOw0KPiArfQ0KPiArDQo+ICsNCj4gKy8q Kg0KPiArICBSZXR1cm5zIHRoZSBUeXBlIGZpZWxkIG9mIGEgZGV2aWNlIHBhdGggbm9kZS4NCj4g Kw0KPiArICBSZXR1cm5zIHRoZSBUeXBlIGZpZWxkIG9mIHRoZSBkZXZpY2UgcGF0aCBub2RlIHNw ZWNpZmllZCBieSBOb2RlLg0KPiArDQo+ICsgIElmIE5vZGUgaXMgTlVMTCwgdGhlbiBBU1NFUlQo KS4NCj4gKw0KPiArICBAcGFyYW0gIE5vZGUgICAgICBBIHBvaW50ZXIgdG8gYSBkZXZpY2UgcGF0 aCBub2RlIGRhdGEgc3RydWN0dXJlLg0KPiArDQo+ICsgIEByZXR1cm4gVGhlIFR5cGUgZmllbGQg b2YgdGhlIGRldmljZSBwYXRoIG5vZGUgc3BlY2lmaWVkIGJ5IE5vZGUuDQo+ICsNCj4gKyoqLw0K PiArVUlOVDgNCj4gK0RldmljZVBhdGhUeXBlICgNCj4gKyAgIENPTlNUIFZPSUQgICpOb2RlDQo+ ICsgICkNCj4gK3sNCj4gKyAgQVNTRVJUIChOb2RlICE9IE5VTEwpOw0KPiArICByZXR1cm4gKChF RklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKikoTm9kZSkpLT5UeXBlOw0KPiArfQ0KPiArDQo+ICsv KioNCj4gKyAgUmV0dXJucyB0aGUgU3ViVHlwZSBmaWVsZCBvZiBhIGRldmljZSBwYXRoIG5vZGUu DQo+ICsNCj4gKyAgUmV0dXJucyB0aGUgU3ViVHlwZSBmaWVsZCBvZiB0aGUgZGV2aWNlIHBhdGgg bm9kZSBzcGVjaWZpZWQgYnkgTm9kZS4NCj4gKw0KPiArICBJZiBOb2RlIGlzIE5VTEwsIHRoZW4g QVNTRVJUKCkuDQo+ICsNCj4gKyAgQHBhcmFtICBOb2RlICAgICAgQSBwb2ludGVyIHRvIGEgZGV2 aWNlIHBhdGggbm9kZSBkYXRhIHN0cnVjdHVyZS4NCj4gKw0KPiArICBAcmV0dXJuIFRoZSBTdWJU eXBlIGZpZWxkIG9mIHRoZSBkZXZpY2UgcGF0aCBub2RlIHNwZWNpZmllZCBieSBOb2RlLg0KPiAr DQo+ICsqKi8NCj4gK1VJTlQ4DQo+ICtEZXZpY2VQYXRoU3ViVHlwZSAoDQo+ICsgICBDT05TVCBW T0lEICAqTm9kZQ0KPiArICApDQo+ICt7DQo+ICsgIEFTU0VSVCAoTm9kZSAhPSBOVUxMKTsNCj4g KyAgcmV0dXJuICgoRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICopKE5vZGUpKS0+U3ViVHlwZTsN Cj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIFJldHVybnMgdGhlIDE2LWJpdCBMZW5ndGggZmllbGQg b2YgYSBkZXZpY2UgcGF0aCBub2RlLg0KPiArDQo+ICsgIFJldHVybnMgdGhlIDE2LWJpdCBMZW5n dGggZmllbGQgb2YgdGhlIGRldmljZSBwYXRoIG5vZGUgc3BlY2lmaWVkIGJ5IE5vZGUuDQo+ICsg IE5vZGUgaXMgbm90IHJlcXVpcmVkIHRvIGJlIGFsaWduZWQgb24gYSAxNi1iaXQgYm91bmRhcnks IHNvIGl0IGlzIHJlY29tbWVuZGVkDQo+ICsgIHRoYXQgYSBmdW5jdGlvbiBzdWNoIGFzIFJlYWRV bmFsaWduZWQxNigpIGJlIHVzZWQgdG8gZXh0cmFjdCB0aGUgY29udGVudHMgb2YNCj4gKyAgdGhl IExlbmd0aCBmaWVsZC4NCj4gKw0KPiArICBJZiBOb2RlIGlzIE5VTEwsIHRoZW4gQVNTRVJUKCku DQo+ICsNCj4gKyAgQHBhcmFtICBOb2RlICAgICAgQSBwb2ludGVyIHRvIGEgZGV2aWNlIHBhdGgg bm9kZSBkYXRhIHN0cnVjdHVyZS4NCj4gKw0KPiArICBAcmV0dXJuIFRoZSAxNi1iaXQgTGVuZ3Ro IGZpZWxkIG9mIHRoZSBkZXZpY2UgcGF0aCBub2RlIHNwZWNpZmllZCBieSBOb2RlLg0KPiArDQo+ ICsqKi8NCj4gK1VJTlRODQo+ICtEZXZpY2VQYXRoTm9kZUxlbmd0aCAoDQo+ICsgICBDT05TVCBW T0lEICAqTm9kZQ0KPiArICApDQo+ICt7DQo+ICsgIEFTU0VSVCAoTm9kZSAhPSBOVUxMKTsNCj4g KyAgcmV0dXJuIFJlYWRVbmFsaWduZWQxNiAoKFVJTlQxNiAqKSYoKEVGSV9ERVZJQ0VfUEFUSF9Q Uk9UT0NPTCAqKShOb2RlKSktPkxlbmd0aFswXSk7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBS ZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgbmV4dCBub2RlIGluIGEgZGV2aWNlIHBhdGguDQo+ICsN Cj4gKyAgUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIGRldmljZSBwYXRoIG5vZGUgdGhhdCBmb2xs b3dzIHRoZSBkZXZpY2UgcGF0aCBub2RlDQo+ICsgIHNwZWNpZmllZCBieSBOb2RlLg0KPiArDQo+ ICsgIElmIE5vZGUgaXMgTlVMTCwgdGhlbiBBU1NFUlQoKS4NCj4gKw0KPiArICBAcGFyYW0gIE5v ZGUgICAgICBBIHBvaW50ZXIgdG8gYSBkZXZpY2UgcGF0aCBub2RlIGRhdGEgc3RydWN0dXJlLg0K PiArDQo+ICsgIEByZXR1cm4gYSBwb2ludGVyIHRvIHRoZSBkZXZpY2UgcGF0aCBub2RlIHRoYXQg Zm9sbG93cyB0aGUgZGV2aWNlIHBhdGggbm9kZQ0KPiArICBzcGVjaWZpZWQgYnkgTm9kZS4NCj4g Kw0KPiArKiovDQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0KPiArTmV4dERldmljZVBh dGhOb2RlICgNCj4gKyAgIENPTlNUIFZPSUQgICpOb2RlDQo+ICsgICkNCj4gK3sNCj4gKyAgQVNT RVJUIChOb2RlICE9IE5VTEwpOw0KPiArICByZXR1cm4gKEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NP TCAqKSgoVUlOVDggKikoTm9kZSkgKyBEZXZpY2VQYXRoTm9kZUxlbmd0aChOb2RlKSk7DQo+ICt9 DQo+ICsNCj4gKy8qKg0KPiArICBEZXRlcm1pbmVzIGlmIGEgZGV2aWNlIHBhdGggbm9kZSBpcyBh biBlbmQgbm9kZSBvZiBhIGRldmljZSBwYXRoLg0KPiArICBUaGlzIGluY2x1ZGVzIG5vZGVzIHRo YXQgYXJlIHRoZSBlbmQgb2YgYSBkZXZpY2UgcGF0aCBpbnN0YW5jZSBhbmQgbm9kZXMgdGhhdA0K PiArICBhcmUgdGhlIGVuZCBvZiBhbiBlbnRpcmUgZGV2aWNlIHBhdGguDQo+ICsNCj4gKyAgRGV0 ZXJtaW5lcyBpZiB0aGUgZGV2aWNlIHBhdGggbm9kZSBzcGVjaWZpZWQgYnkgTm9kZSBpcyBhbiBl bmQgbm9kZSBvZiBhIGRldmljZSBwYXRoLg0KPiArICBUaGlzIGluY2x1ZGVzIG5vZGVzIHRoYXQg YXJlIHRoZSBlbmQgb2YgYSBkZXZpY2UgcGF0aCBpbnN0YW5jZSBhbmQgbm9kZXMgdGhhdCBhcmUg dGhlDQo+ICsgIGVuZCBvZiBhbiBlbnRpcmUgZGV2aWNlIHBhdGguICBJZiBOb2RlIHJlcHJlc2Vu dHMgYW4gZW5kIG5vZGUgb2YgYSBkZXZpY2UgcGF0aCwNCj4gKyAgdGhlbiBUUlVFIGlzIHJldHVy bmVkLiAgT3RoZXJ3aXNlLCBGQUxTRSBpcyByZXR1cm5lZC4NCj4gKw0KPiArICBJZiBOb2RlIGlz IE5VTEwsIHRoZW4gQVNTRVJUKCkuDQo+ICsNCj4gKyAgQHBhcmFtICBOb2RlICAgICAgQSBwb2lu dGVyIHRvIGEgZGV2aWNlIHBhdGggbm9kZSBkYXRhIHN0cnVjdHVyZS4NCj4gKw0KPiArICBAcmV0 dmFsIFRSVUUgICAgICBUaGUgZGV2aWNlIHBhdGggbm9kZSBzcGVjaWZpZWQgYnkgTm9kZSBpcyBh biBlbmQgbm9kZSBvZiBhDQo+ICsgICAgICAgICAgICAgICAgICAgIGRldmljZSBwYXRoLg0KPiAr ICBAcmV0dmFsIEZBTFNFICAgICBUaGUgZGV2aWNlIHBhdGggbm9kZSBzcGVjaWZpZWQgYnkgTm9k ZSBpcyBub3QgYW4gZW5kIG5vZGUgb2YNCj4gKyAgICAgICAgICAgICAgICAgICAgYSBkZXZpY2Ug cGF0aC4NCj4gKw0KPiArKiovDQo+ICtCT09MRUFODQo+ICtJc0RldmljZVBhdGhFbmRUeXBlICgN Cj4gKyAgIENPTlNUIFZPSUQgICpOb2RlDQo+ICsgICkNCj4gK3sNCj4gKyAgQVNTRVJUIChOb2Rl ICE9IE5VTEwpOw0KPiArICByZXR1cm4gKEJPT0xFQU4pIChEZXZpY2VQYXRoVHlwZSAoTm9kZSkg PT0gRU5EX0RFVklDRV9QQVRIX1RZUEUpOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgRGV0ZXJt aW5lcyBpZiBhIGRldmljZSBwYXRoIG5vZGUgaXMgYW4gZW5kIG5vZGUgb2YgYW4gZW50aXJlIGRl dmljZSBwYXRoLg0KPiArDQo+ICsgIERldGVybWluZXMgaWYgYSBkZXZpY2UgcGF0aCBub2RlIHNw ZWNpZmllZCBieSBOb2RlIGlzIGFuIGVuZCBub2RlIG9mIGFuIGVudGlyZQ0KPiArICBkZXZpY2Ug cGF0aC4gSWYgTm9kZSByZXByZXNlbnRzIHRoZSBlbmQgb2YgYW4gZW50aXJlIGRldmljZSBwYXRo LCB0aGVuIFRSVUUgaXMNCj4gKyAgcmV0dXJuZWQuICBPdGhlcndpc2UsIEZBTFNFIGlzIHJldHVy bmVkLg0KPiArDQo+ICsgIElmIE5vZGUgaXMgTlVMTCwgdGhlbiBBU1NFUlQoKS4NCj4gKw0KPiAr ICBAcGFyYW0gIE5vZGUgICAgICBBIHBvaW50ZXIgdG8gYSBkZXZpY2UgcGF0aCBub2RlIGRhdGEg c3RydWN0dXJlLg0KPiArDQo+ICsgIEByZXR2YWwgVFJVRSAgICAgIFRoZSBkZXZpY2UgcGF0aCBu b2RlIHNwZWNpZmllZCBieSBOb2RlIGlzIHRoZSBlbmQgb2YgYW4gZW50aXJlDQo+ICsgICAgICAg ICAgICAgICAgICAgIGRldmljZSBwYXRoLg0KPiArICBAcmV0dmFsIEZBTFNFICAgICBUaGUgZGV2 aWNlIHBhdGggbm9kZSBzcGVjaWZpZWQgYnkgTm9kZSBpcyBub3QgdGhlIGVuZCBvZiBhbg0KPiAr ICAgICAgICAgICAgICAgICAgICBlbnRpcmUgZGV2aWNlIHBhdGguDQo+ICsNCj4gKyoqLw0KPiAr Qk9PTEVBTg0KPiArSXNEZXZpY2VQYXRoRW5kICgNCj4gKyAgIENPTlNUIFZPSUQgICpOb2RlDQo+ ICsgICkNCj4gK3sNCj4gKyAgQVNTRVJUIChOb2RlICE9IE5VTEwpOw0KPiArICByZXR1cm4gKEJP T0xFQU4pIChJc0RldmljZVBhdGhFbmRUeXBlIChOb2RlKSAmJiBEZXZpY2VQYXRoU3ViVHlwZShO b2RlKSA9PSBFTkRfRU5USVJFX0RFVklDRV9QQVRIX1NVQlRZUEUpOw0KPiArfQ0KPiArDQo+ICsv KioNCj4gKyAgRGV0ZXJtaW5lcyBpZiBhIGRldmljZSBwYXRoIG5vZGUgaXMgYW4gZW5kIG5vZGUg b2YgYSBkZXZpY2UgcGF0aCBpbnN0YW5jZS4NCj4gKw0KPiArICBEZXRlcm1pbmVzIGlmIGEgZGV2 aWNlIHBhdGggbm9kZSBzcGVjaWZpZWQgYnkgTm9kZSBpcyBhbiBlbmQgbm9kZSBvZiBhIGRldmlj ZQ0KPiArICBwYXRoIGluc3RhbmNlLiBJZiBOb2RlIHJlcHJlc2VudHMgdGhlIGVuZCBvZiBhIGRl dmljZSBwYXRoIGluc3RhbmNlLCB0aGVuIFRSVUUNCj4gKyAgaXMgcmV0dXJuZWQuICBPdGhlcndp c2UsIEZBTFNFIGlzIHJldHVybmVkLg0KPiArDQo+ICsgIElmIE5vZGUgaXMgTlVMTCwgdGhlbiBB U1NFUlQoKS4NCj4gKw0KPiArICBAcGFyYW0gIE5vZGUgICAgICBBIHBvaW50ZXIgdG8gYSBkZXZp Y2UgcGF0aCBub2RlIGRhdGEgc3RydWN0dXJlLg0KPiArDQo+ICsgIEByZXR2YWwgVFJVRSAgICAg IFRoZSBkZXZpY2UgcGF0aCBub2RlIHNwZWNpZmllZCBieSBOb2RlIGlzIHRoZSBlbmQgb2YgYSBk ZXZpY2UNCj4gKyAgICAgICAgICAgICAgICAgICAgcGF0aCBpbnN0YW5jZS4NCj4gKyAgQHJldHZh bCBGQUxTRSAgICAgVGhlIGRldmljZSBwYXRoIG5vZGUgc3BlY2lmaWVkIGJ5IE5vZGUgaXMgbm90 IHRoZSBlbmQgb2YgYQ0KPiArICAgICAgICAgICAgICAgICAgICBkZXZpY2UgcGF0aCBpbnN0YW5j ZS4NCj4gKw0KPiArKiovDQo+ICtCT09MRUFODQo+ICtJc0RldmljZVBhdGhFbmRJbnN0YW5jZSAo DQo+ICsgICBDT05TVCBWT0lEICAqTm9kZQ0KPiArICApDQo+ICt7DQo+ICsgIEFTU0VSVCAoTm9k ZSAhPSBOVUxMKTsNCj4gKyAgcmV0dXJuIChCT09MRUFOKSAoSXNEZXZpY2VQYXRoRW5kVHlwZSAo Tm9kZSkgJiYgRGV2aWNlUGF0aFN1YlR5cGUoTm9kZSkgPT0gRU5EX0lOU1RBTkNFX0RFVklDRV9Q QVRIX1NVQlRZUEUpOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgU2V0cyB0aGUgbGVuZ3RoLCBp biBieXRlcywgb2YgYSBkZXZpY2UgcGF0aCBub2RlLg0KPiArDQo+ICsgIFNldHMgdGhlIGxlbmd0 aCBvZiB0aGUgZGV2aWNlIHBhdGggbm9kZSBzcGVjaWZpZWQgYnkgTm9kZSB0byB0aGUgdmFsdWUg c3BlY2lmaWVkDQo+ICsgIGJ5IE5vZGVMZW5ndGguICBOb2RlTGVuZ3RoIGlzIHJldHVybmVkLiAg Tm9kZSBpcyBub3QgcmVxdWlyZWQgdG8gYmUgYWxpZ25lZCBvbg0KPiArICBhIDE2LWJpdCBib3Vu ZGFyeSwgc28gaXQgaXMgcmVjb21tZW5kZWQgdGhhdCBhIGZ1bmN0aW9uIHN1Y2ggYXMgV3JpdGVV bmFsaWduZWQxNigpDQo+ICsgIGJlIHVzZWQgdG8gc2V0IHRoZSBjb250ZW50cyBvZiB0aGUgTGVu Z3RoIGZpZWxkLg0KPiArDQo+ICsgIElmIE5vZGUgaXMgTlVMTCwgdGhlbiBBU1NFUlQoKS4NCj4g KyAgSWYgTm9kZUxlbmd0aCA+PSBTSVpFXzY0S0IsIHRoZW4gQVNTRVJUKCkuDQo+ICsgIElmIE5v ZGVMZW5ndGggPCBzaXplb2YgKEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCksIHRoZW4gQVNTRVJU KCkuDQo+ICsNCj4gKyAgQHBhcmFtICBOb2RlICAgICAgQSBwb2ludGVyIHRvIGEgZGV2aWNlIHBh dGggbm9kZSBkYXRhIHN0cnVjdHVyZS4NCj4gKyAgQHBhcmFtICBMZW5ndGggICAgVGhlIGxlbmd0 aCwgaW4gYnl0ZXMsIG9mIHRoZSBkZXZpY2UgcGF0aCBub2RlLg0KPiArDQo+ICsgIEByZXR1cm4g TGVuZ3RoDQo+ICsNCj4gKyoqLw0KPiArVUlOVDE2DQo+ICtTZXREZXZpY2VQYXRoTm9kZUxlbmd0 aCAoDQo+ICsgICAgVk9JRCAgKk5vZGUsDQo+ICsgICBVSU5UTiAgICAgTGVuZ3RoDQo+ICsgICkN Cj4gK3sNCj4gKyAgQVNTRVJUIChOb2RlICE9IE5VTEwpOw0KPiArICBBU1NFUlQgKChMZW5ndGgg Pj0gc2l6ZW9mIChFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wpKSAmJiAoTGVuZ3RoIDwgU0laRV82 NEtCKSk7DQo+ICsgIHJldHVybiBXcml0ZVVuYWxpZ25lZDE2ICgoVUlOVDE2ICopJigoRUZJX0RF VklDRV9QQVRIX1BST1RPQ09MICopKE5vZGUpKS0+TGVuZ3RoWzBdLCAoVUlOVDE2KShMZW5ndGgp KTsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIEZpbGxzIGluIGFsbCB0aGUgZmllbGRzIG9mIGEg ZGV2aWNlIHBhdGggbm9kZSB0aGF0IGlzIHRoZSBlbmQgb2YgYW4gZW50aXJlIGRldmljZSBwYXRo Lg0KPiArDQo+ICsgIEZpbGxzIGluIGFsbCB0aGUgZmllbGRzIG9mIGEgZGV2aWNlIHBhdGggbm9k ZSBzcGVjaWZpZWQgYnkgTm9kZSBzbyBOb2RlIHJlcHJlc2VudHMNCj4gKyAgdGhlIGVuZCBvZiBh biBlbnRpcmUgZGV2aWNlIHBhdGguICBUaGUgVHlwZSBmaWVsZCBvZiBOb2RlIGlzIHNldCB0bw0K PiArICBFTkRfREVWSUNFX1BBVEhfVFlQRSwgdGhlIFN1YlR5cGUgZmllbGQgb2YgTm9kZSBpcyBz ZXQgdG8NCj4gKyAgRU5EX0VOVElSRV9ERVZJQ0VfUEFUSF9TVUJUWVBFLCBhbmQgdGhlIExlbmd0 aCBmaWVsZCBvZiBOb2RlIGlzIHNldCB0bw0KPiArICBFTkRfREVWSUNFX1BBVEhfTEVOR1RILiAg Tm9kZSBpcyBub3QgcmVxdWlyZWQgdG8gYmUgYWxpZ25lZCBvbiBhIDE2LWJpdCBib3VuZGFyeSwN Cj4gKyAgc28gaXQgaXMgcmVjb21tZW5kZWQgdGhhdCBhIGZ1bmN0aW9uIHN1Y2ggYXMgV3JpdGVV bmFsaWduZWQxNigpIGJlIHVzZWQgdG8gc2V0DQo+ICsgIHRoZSBjb250ZW50cyBvZiB0aGUgTGVu Z3RoIGZpZWxkLg0KPiArDQo+ICsgIElmIE5vZGUgaXMgTlVMTCwgdGhlbiBBU1NFUlQoKS4NCj4g Kw0KPiArICBAcGFyYW0gIE5vZGUgICAgICBBIHBvaW50ZXIgdG8gYSBkZXZpY2UgcGF0aCBub2Rl IGRhdGEgc3RydWN0dXJlLg0KPiArDQo+ICsqKi8NCj4gK1ZPSUQNCj4gK1NldERldmljZVBhdGhF bmROb2RlICgNCj4gKyAgIFZPSUQgICpOb2RlDQo+ICsgICkNCj4gK3sNCj4gKyAgQVNTRVJUIChO b2RlICE9IE5VTEwpOw0KPiArICBtZW1jcHkgKE5vZGUsICZtVWVmaURldmljZVBhdGhMaWJFbmRE ZXZpY2VQYXRoLCBzaXplb2YgKG1VZWZpRGV2aWNlUGF0aExpYkVuZERldmljZVBhdGgpKTsNCj4g K30NCj4gKw0KPiArLyoqDQo+ICsgIFJldHVybnMgdGhlIHNpemUgb2YgYSBkZXZpY2UgcGF0aCBp biBieXRlcy4NCj4gKw0KPiArICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHNpemUsIGluIGJ5 dGVzLCBvZiB0aGUgZGV2aWNlIHBhdGggZGF0YSBzdHJ1Y3R1cmUNCj4gKyAgc3BlY2lmaWVkIGJ5 IERldmljZVBhdGggaW5jbHVkaW5nIHRoZSBlbmQgb2YgZGV2aWNlIHBhdGggbm9kZS4NCj4gKyAg SWYgRGV2aWNlUGF0aCBpcyBOVUxMIG9yIGludmFsaWQsIHRoZW4gMCBpcyByZXR1cm5lZC4NCj4g Kw0KPiArICBAcGFyYW0gIERldmljZVBhdGggIEEgcG9pbnRlciB0byBhIGRldmljZSBwYXRoIGRh dGEgc3RydWN0dXJlLg0KPiArDQo+ICsgIEByZXR2YWwgMCAgICAgICAgICAgSWYgRGV2aWNlUGF0 aCBpcyBOVUxMIG9yIGludmFsaWQuDQo+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgVGhlIHNpemUg b2YgYSBkZXZpY2UgcGF0aCBpbiBieXRlcy4NCj4gKw0KPiArKiovDQo+ICtVSU5UTg0KPiArVWVm aURldmljZVBhdGhMaWJHZXREZXZpY2VQYXRoU2l6ZSAoDQo+ICsgICBDT05TVCBFRklfREVWSUNF X1BBVEhfUFJPVE9DT0wgICpEZXZpY2VQYXRoDQo+ICsgICkNCj4gK3sNCj4gKyAgQ09OU1QgRUZJ X0RFVklDRV9QQVRIX1BST1RPQ09MICAqU3RhcnQ7DQo+ICsNCj4gKyAgaWYgKERldmljZVBhdGgg PT0gTlVMTCkgew0KPiArICAgIHJldHVybiAwOw0KPiArICB9DQo+ICsNCj4gKyAgaWYgKCFJc0Rl dmljZVBhdGhWYWxpZCAoRGV2aWNlUGF0aCwgMCkpIHsNCj4gKyAgICByZXR1cm4gMDsNCj4gKyAg fQ0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIFNlYXJjaCBmb3IgdGhlIGVuZCBvZiB0aGUgZGV2aWNl IHBhdGggc3RydWN0dXJlDQo+ICsgIC8vDQo+ICsgIFN0YXJ0ID0gRGV2aWNlUGF0aDsNCj4gKyAg d2hpbGUgKCFJc0RldmljZVBhdGhFbmQgKERldmljZVBhdGgpKSB7DQo+ICsgICAgRGV2aWNlUGF0 aCA9IE5leHREZXZpY2VQYXRoTm9kZSAoRGV2aWNlUGF0aCk7DQo+ICsgIH0NCj4gKw0KPiArICAv Lw0KPiArICAvLyBDb21wdXRlIHRoZSBzaXplIGFuZCBhZGQgYmFjayBpbiB0aGUgc2l6ZSBvZiB0 aGUgZW5kIGRldmljZSBwYXRoIHN0cnVjdHVyZQ0KPiArICAvLw0KPiArICByZXR1cm4gKChVSU5U TikgRGV2aWNlUGF0aCAtIChVSU5UTikgU3RhcnQpICsgRGV2aWNlUGF0aE5vZGVMZW5ndGggKERl dmljZVBhdGgpOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgQ3JlYXRlcyBhIG5ldyBjb3B5IG9m IGFuIGV4aXN0aW5nIGRldmljZSBwYXRoLg0KPiArDQo+ICsgIFRoaXMgZnVuY3Rpb24gYWxsb2Nh dGVzIHNwYWNlIGZvciBhIG5ldyBjb3B5IG9mIHRoZSBkZXZpY2UgcGF0aCBzcGVjaWZpZWQgYnkg RGV2aWNlUGF0aC4NCj4gKyAgSWYgRGV2aWNlUGF0aCBpcyBOVUxMLCB0aGVuIE5VTEwgaXMgcmV0 dXJuZWQuICBJZiB0aGUgbWVtb3J5IGlzIHN1Y2Nlc3NmdWxseQ0KPiArICBhbGxvY2F0ZWQsIHRo ZW4gdGhlIGNvbnRlbnRzIG9mIERldmljZVBhdGggYXJlIGNvcGllZCB0byB0aGUgbmV3bHkgYWxs b2NhdGVkDQo+ICsgIGJ1ZmZlciwgYW5kIGEgcG9pbnRlciB0byB0aGF0IGJ1ZmZlciBpcyByZXR1 cm5lZC4gIE90aGVyd2lzZSwgTlVMTCBpcyByZXR1cm5lZC4NCj4gKyAgVGhlIG1lbW9yeSBmb3Ig dGhlIG5ldyBkZXZpY2UgcGF0aCBpcyBhbGxvY2F0ZWQgZnJvbSBFRkkgYm9vdCBzZXJ2aWNlcyBt ZW1vcnkuDQo+ICsgIEl0IGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgY2FsbGVyIHRvIGZy ZWUgdGhlIG1lbW9yeSBhbGxvY2F0ZWQuDQo+ICsNCj4gKyAgQHBhcmFtICBEZXZpY2VQYXRoICAg IEEgcG9pbnRlciB0byBhIGRldmljZSBwYXRoIGRhdGEgc3RydWN0dXJlLg0KPiArDQo+ICsgIEBy ZXR2YWwgTlVMTCAgICAgICAgICBEZXZpY2VQYXRoIGlzIE5VTEwgb3IgaW52YWxpZC4NCj4gKyAg QHJldHZhbCBPdGhlcnMgICAgICAgIEEgcG9pbnRlciB0byB0aGUgZHVwbGljYXRlZCBkZXZpY2Ug cGF0aC4NCj4gKw0KPiArKiovDQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0KPiArVWVm aURldmljZVBhdGhMaWJEdXBsaWNhdGVEZXZpY2VQYXRoICgNCj4gKyAgIENPTlNUIEVGSV9ERVZJ Q0VfUEFUSF9QUk9UT0NPTCAgKkRldmljZVBhdGgNCj4gKyAgKQ0KPiArew0KPiArICBVSU5UTiAg ICAgICAgICAgICAgICAgICAgIFNpemU7DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gQ29tcHV0ZSB0 aGUgc2l6ZQ0KPiArICAvLw0KPiArICBTaXplID0gR2V0RGV2aWNlUGF0aFNpemUgKERldmljZVBh dGgpOw0KPiArICBpZiAoU2l6ZSA9PSAwKSB7DQo+ICsgICAgcmV0dXJuIE5VTEw7DQo+ICsgIH0N Cj4gKw0KPiArICAvLw0KPiArICAvLyBBbGxvY2F0ZSBzcGFjZSBmb3IgZHVwbGljYXRlIGRldmlj ZSBwYXRoDQo+ICsgIC8vDQo+ICsNCj4gKyAgcmV0dXJuIEFsbG9jYXRlQ29weVBvb2wgKFNpemUs IERldmljZVBhdGgpOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgQ3JlYXRlcyBhIG5ldyBkZXZp Y2UgcGF0aCBieSBhcHBlbmRpbmcgYSBzZWNvbmQgZGV2aWNlIHBhdGggdG8gYSBmaXJzdCBkZXZp Y2UgcGF0aC4NCj4gKw0KPiArICBUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgYSBuZXcgZGV2aWNlIHBh dGggYnkgYXBwZW5kaW5nIGEgY29weSBvZiBTZWNvbmREZXZpY2VQYXRoDQo+ICsgIHRvIGEgY29w eSBvZiBGaXJzdERldmljZVBhdGggaW4gYSBuZXdseSBhbGxvY2F0ZWQgYnVmZmVyLiAgT25seSB0 aGUgZW5kLW9mLWRldmljZS1wYXRoDQo+ICsgIGRldmljZSBub2RlIGZyb20gU2Vjb25kRGV2aWNl UGF0aCBpcyByZXRhaW5lZC4gVGhlIG5ld2x5IGNyZWF0ZWQgZGV2aWNlIHBhdGggaXMNCj4gKyAg cmV0dXJuZWQuIElmIEZpcnN0RGV2aWNlUGF0aCBpcyBOVUxMLCB0aGVuIGl0IGlzIGlnbm9yZWQs IGFuZCBhIGR1cGxpY2F0ZSBvZg0KPiArICBTZWNvbmREZXZpY2VQYXRoIGlzIHJldHVybmVkLiAg SWYgU2Vjb25kRGV2aWNlUGF0aCBpcyBOVUxMLCB0aGVuIGl0IGlzIGlnbm9yZWQsDQo+ICsgIGFu ZCBhIGR1cGxpY2F0ZSBvZiBGaXJzdERldmljZVBhdGggaXMgcmV0dXJuZWQuIElmIGJvdGggRmly c3REZXZpY2VQYXRoIGFuZA0KPiArICBTZWNvbmREZXZpY2VQYXRoIGFyZSBOVUxMLCB0aGVuIGEg Y29weSBvZiBhbiBlbmQtb2YtZGV2aWNlLXBhdGggaXMgcmV0dXJuZWQuDQo+ICsNCj4gKyAgSWYg dGhlcmUgaXMgbm90IGVub3VnaCBtZW1vcnkgZm9yIHRoZSBuZXdseSBhbGxvY2F0ZWQgYnVmZmVy LCB0aGVuIE5VTEwgaXMgcmV0dXJuZWQuDQo+ICsgIFRoZSBtZW1vcnkgZm9yIHRoZSBuZXcgZGV2 aWNlIHBhdGggaXMgYWxsb2NhdGVkIGZyb20gRUZJIGJvb3Qgc2VydmljZXMgbWVtb3J5Lg0KPiAr ICBJdCBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGNhbGxlciB0byBmcmVlIHRoZSBtZW1v cnkgYWxsb2NhdGVkLg0KPiArDQo+ICsgIEBwYXJhbSAgRmlyc3REZXZpY2VQYXRoICAgICAgICAg ICAgQSBwb2ludGVyIHRvIGEgZGV2aWNlIHBhdGggZGF0YSBzdHJ1Y3R1cmUuDQo+ICsgIEBwYXJh bSAgU2Vjb25kRGV2aWNlUGF0aCAgICAgICAgICAgQSBwb2ludGVyIHRvIGEgZGV2aWNlIHBhdGgg ZGF0YSBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyAgQHJldHZhbCBOVUxMICAgICAgSWYgdGhlcmUgaXMg bm90IGVub3VnaCBtZW1vcnkgZm9yIHRoZSBuZXdseSBhbGxvY2F0ZWQgYnVmZmVyLg0KPiArICBA cmV0dmFsIE5VTEwgICAgICBJZiBGaXJzdERldmljZVBhdGggb3IgU2Vjb25kRGV2aWNlUGF0aCBp cyBpbnZhbGlkLg0KPiArICBAcmV0dmFsIE90aGVycyAgICBBIHBvaW50ZXIgdG8gdGhlIG5ldyBk ZXZpY2UgcGF0aCBpZiBzdWNjZXNzLg0KPiArICAgICAgICAgICAgICAgICAgICBPciBhIGNvcHkg YW4gZW5kLW9mLWRldmljZS1wYXRoIGlmIGJvdGggRmlyc3REZXZpY2VQYXRoIGFuZCBTZWNvbmRE ZXZpY2VQYXRoIGFyZSBOVUxMLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9ERVZJQ0VfUEFUSF9QUk9U T0NPTCAqDQo+ICtVZWZpRGV2aWNlUGF0aExpYkFwcGVuZERldmljZVBhdGggKA0KPiArICAgQ09O U1QgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICAqRmlyc3REZXZpY2VQYXRoLA0KPiArICAgQ09O U1QgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICAqU2Vjb25kRGV2aWNlUGF0aA0KPiArICApDQo+ ICt7DQo+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgU2l6ZTsNCj4gKyAgVUlOVE4gICAg ICAgICAgICAgICAgICAgICBTaXplMTsNCj4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBT aXplMjsNCj4gKyAgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICAqTmV3RGV2aWNlUGF0aDsNCj4g KyAgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICAqRGV2aWNlUGF0aDI7DQo+ICsNCj4gKyAgLy8N Cj4gKyAgLy8gSWYgdGhlcmUncyBvbmx5IDEgcGF0aCwganVzdCBkdXBsaWNhdGUgaXQuDQo+ICsg IC8vDQo+ICsgIGlmIChGaXJzdERldmljZVBhdGggPT0gTlVMTCkgew0KPiArICAgIHJldHVybiBE dXBsaWNhdGVEZXZpY2VQYXRoICgoU2Vjb25kRGV2aWNlUGF0aCAhPSBOVUxMKSA/IFNlY29uZERl dmljZVBhdGggOiAmbVVlZmlEZXZpY2VQYXRoTGliRW5kRGV2aWNlUGF0aCk7DQo+ICsgIH0NCj4g Kw0KPiArICBpZiAoU2Vjb25kRGV2aWNlUGF0aCA9PSBOVUxMKSB7DQo+ICsgICAgcmV0dXJuIER1 cGxpY2F0ZURldmljZVBhdGggKEZpcnN0RGV2aWNlUGF0aCk7DQo+ICsgIH0NCj4gKw0KPiArICBp ZiAoIUlzRGV2aWNlUGF0aFZhbGlkIChGaXJzdERldmljZVBhdGgsIDApIHx8ICFJc0RldmljZVBh dGhWYWxpZCAoU2Vjb25kRGV2aWNlUGF0aCwgMCkpIHsNCj4gKyAgICByZXR1cm4gTlVMTDsNCj4g KyAgfQ0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIEFsbG9jYXRlIHNwYWNlIGZvciB0aGUgY29tYmlu ZWQgZGV2aWNlIHBhdGguIEl0IG9ubHkgaGFzIG9uZSBlbmQgbm9kZSBvZg0KPiArICAvLyBsZW5n dGggRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MLg0KPiArICAvLw0KPiArICBTaXplMSAgICAgICAg ID0gR2V0RGV2aWNlUGF0aFNpemUgKEZpcnN0RGV2aWNlUGF0aCk7DQo+ICsgIFNpemUyICAgICAg ICAgPSBHZXREZXZpY2VQYXRoU2l6ZSAoU2Vjb25kRGV2aWNlUGF0aCk7DQo+ICsgIFNpemUgICAg ICAgICAgPSBTaXplMSArIFNpemUyIC0gRU5EX0RFVklDRV9QQVRIX0xFTkdUSDsNCj4gKw0KPiAr ICBOZXdEZXZpY2VQYXRoID0gQWxsb2NhdGVQb29sIChTaXplKTsNCj4gKw0KPiArICBpZiAoTmV3 RGV2aWNlUGF0aCAhPSBOVUxMKSB7DQo+ICsgICAgTmV3RGV2aWNlUGF0aCA9IG1lbWNweSAoTmV3 RGV2aWNlUGF0aCwgRmlyc3REZXZpY2VQYXRoLCBTaXplMSk7DQo+ICsgICAgLy8NCj4gKyAgICAv LyBPdmVyIHdyaXRlIEZpcnN0RGV2aWNlUGF0aCBFbmROb2RlIGFuZCBkbyB0aGUgY29weQ0KPiAr ICAgIC8vDQo+ICsgICAgRGV2aWNlUGF0aDIgPSAoRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICop ICgoQ0hBUjggKikgTmV3RGV2aWNlUGF0aCArDQo+ICsgICAgICAgICAgICAgICAgICAoU2l6ZTEg LSBFTkRfREVWSUNFX1BBVEhfTEVOR1RIKSk7DQo+ICsgICAgbWVtY3B5IChEZXZpY2VQYXRoMiwg U2Vjb25kRGV2aWNlUGF0aCwgU2l6ZTIpOw0KPiArICB9DQo+ICsNCj4gKyAgcmV0dXJuIE5ld0Rl dmljZVBhdGg7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBDcmVhdGVzIGEgbmV3IHBhdGggYnkg YXBwZW5kaW5nIHRoZSBkZXZpY2Ugbm9kZSB0byB0aGUgZGV2aWNlIHBhdGguDQo+ICsNCj4gKyAg VGhpcyBmdW5jdGlvbiBjcmVhdGVzIGEgbmV3IGRldmljZSBwYXRoIGJ5IGFwcGVuZGluZyBhIGNv cHkgb2YgdGhlIGRldmljZSBub2RlDQo+ICsgIHNwZWNpZmllZCBieSBEZXZpY2VQYXRoTm9kZSB0 byBhIGNvcHkgb2YgdGhlIGRldmljZSBwYXRoIHNwZWNpZmllZCBieSBEZXZpY2VQYXRoDQo+ICsg IGluIGFuIGFsbG9jYXRlZCBidWZmZXIuIFRoZSBlbmQtb2YtZGV2aWNlLXBhdGggZGV2aWNlIG5v ZGUgaXMgbW92ZWQgYWZ0ZXIgdGhlDQo+ICsgIGVuZCBvZiB0aGUgYXBwZW5kZWQgZGV2aWNlIG5v ZGUuDQo+ICsgIElmIERldmljZVBhdGhOb2RlIGlzIE5VTEwgdGhlbiBhIGNvcHkgb2YgRGV2aWNl UGF0aCBpcyByZXR1cm5lZC4NCj4gKyAgSWYgRGV2aWNlUGF0aCBpcyBOVUxMIHRoZW4gYSBjb3B5 IG9mIERldmljZVBhdGhOb2RlLCBmb2xsb3dlZCBieSBhbiBlbmQtb2YtZGV2aWNlDQo+ICsgIHBh dGggZGV2aWNlIG5vZGUgaXMgcmV0dXJuZWQuDQo+ICsgIElmIGJvdGggRGV2aWNlUGF0aE5vZGUg YW5kIERldmljZVBhdGggYXJlIE5VTEwgdGhlbiBhIGNvcHkgb2YgYW4gZW5kLW9mLWRldmljZS1w YXRoDQo+ICsgIGRldmljZSBub2RlIGlzIHJldHVybmVkLg0KPiArICBJZiB0aGVyZSBpcyBub3Qg ZW5vdWdoIG1lbW9yeSB0byBhbGxvY2F0ZSBzcGFjZSBmb3IgdGhlIG5ldyBkZXZpY2UgcGF0aCwg dGhlbg0KPiArICBOVUxMIGlzIHJldHVybmVkLg0KPiArICBUaGUgbWVtb3J5IGlzIGFsbG9jYXRl ZCBmcm9tIEVGSSBib290IHNlcnZpY2VzIG1lbW9yeS4gSXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5 DQo+ICsgIG9mIHRoZSBjYWxsZXIgdG8gZnJlZSB0aGUgbWVtb3J5IGFsbG9jYXRlZC4NCj4gKw0K PiArICBAcGFyYW0gIERldmljZVBhdGggICAgICAgICAgICAgICAgIEEgcG9pbnRlciB0byBhIGRl dmljZSBwYXRoIGRhdGEgc3RydWN0dXJlLg0KPiArICBAcGFyYW0gIERldmljZVBhdGhOb2RlICAg ICAgICAgICAgIEEgcG9pbnRlciB0byBhIHNpbmdsZSBkZXZpY2UgcGF0aCBub2RlLg0KPiArDQo+ ICsgIEByZXR2YWwgTlVMTCAgICAgIElmIHRoZXJlIGlzIG5vdCBlbm91Z2ggbWVtb3J5IGZvciB0 aGUgbmV3IGRldmljZSBwYXRoLg0KPiArICBAcmV0dmFsIE90aGVycyAgICBBIHBvaW50ZXIgdG8g dGhlIG5ldyBkZXZpY2UgcGF0aCBpZiBzdWNjZXNzLg0KPiArICAgICAgICAgICAgICAgICAgICBB IGNvcHkgb2YgRGV2aWNlUGF0aE5vZGUgZm9sbG93ZWQgYnkgYW4gZW5kLW9mLWRldmljZS1wYXRo IG5vZGUNCj4gKyAgICAgICAgICAgICAgICAgICAgaWYgYm90aCBGaXJzdERldmljZVBhdGggYW5k IFNlY29uZERldmljZVBhdGggYXJlIE5VTEwuDQo+ICsgICAgICAgICAgICAgICAgICAgIEEgY29w eSBvZiBhbiBlbmQtb2YtZGV2aWNlLXBhdGggbm9kZSBpZiBib3RoIEZpcnN0RGV2aWNlUGF0aA0K PiArICAgICAgICAgICAgICAgICAgICBhbmQgU2Vjb25kRGV2aWNlUGF0aCBhcmUgTlVMTC4NCj4g Kw0KPiArKiovDQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0KPiArVWVmaURldmljZVBh dGhMaWJBcHBlbmREZXZpY2VQYXRoTm9kZSAoDQo+ICsgICBDT05TVCBFRklfREVWSUNFX1BBVEhf UFJPVE9DT0wgICpEZXZpY2VQYXRoLA0KPiArICAgQ09OU1QgRUZJX0RFVklDRV9QQVRIX1BST1RP Q09MICAqRGV2aWNlUGF0aE5vZGUNCj4gKyAgKQ0KPiArew0KPiArICBFRklfREVWSUNFX1BBVEhf UFJPVE9DT0wgICpUZW1wRGV2aWNlUGF0aDsNCj4gKyAgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09M ICAqTmV4dE5vZGU7DQo+ICsgIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgKk5ld0RldmljZVBh dGg7DQo+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgTm9kZUxlbmd0aDsNCj4gKw0KPiAr ICBpZiAoRGV2aWNlUGF0aE5vZGUgPT0gTlVMTCkgew0KPiArICAgIHJldHVybiBEdXBsaWNhdGVE ZXZpY2VQYXRoICgoRGV2aWNlUGF0aCAhPSBOVUxMKSA/IERldmljZVBhdGggOiAmbVVlZmlEZXZp Y2VQYXRoTGliRW5kRGV2aWNlUGF0aCk7DQo+ICsgIH0NCj4gKyAgLy8NCj4gKyAgLy8gQnVpbGQg YSBOb2RlIHRoYXQgaGFzIGEgdGVybWluYXRvciBvbiBpdA0KPiArICAvLw0KPiArICBOb2RlTGVu Z3RoID0gRGV2aWNlUGF0aE5vZGVMZW5ndGggKERldmljZVBhdGhOb2RlKTsNCj4gKw0KPiArICBU ZW1wRGV2aWNlUGF0aCA9IEFsbG9jYXRlUG9vbCAoTm9kZUxlbmd0aCArIEVORF9ERVZJQ0VfUEFU SF9MRU5HVEgpOw0KPiArICBpZiAoVGVtcERldmljZVBhdGggPT0gTlVMTCkgew0KPiArICAgIHJl dHVybiBOVUxMOw0KPiArICB9DQo+ICsgIFRlbXBEZXZpY2VQYXRoID0gbWVtY3B5IChUZW1wRGV2 aWNlUGF0aCwgRGV2aWNlUGF0aE5vZGUsIE5vZGVMZW5ndGgpOw0KPiArICAvLw0KPiArICAvLyBB ZGQgYW5kIGVuZCBkZXZpY2UgcGF0aCBub2RlIHRvIGNvbnZlcnQgTm9kZSB0byBkZXZpY2UgcGF0 aA0KPiArICAvLw0KPiArICBOZXh0Tm9kZSA9IE5leHREZXZpY2VQYXRoTm9kZSAoVGVtcERldmlj ZVBhdGgpOw0KPiArICBTZXREZXZpY2VQYXRoRW5kTm9kZSAoTmV4dE5vZGUpOw0KPiArICAvLw0K PiArICAvLyBBcHBlbmQgZGV2aWNlIHBhdGhzDQo+ICsgIC8vDQo+ICsgIE5ld0RldmljZVBhdGgg PSBBcHBlbmREZXZpY2VQYXRoIChEZXZpY2VQYXRoLCBUZW1wRGV2aWNlUGF0aCk7DQo+ICsNCj4g KyAgZnJlZSAoVGVtcERldmljZVBhdGgpOw0KPiArDQo+ICsgIHJldHVybiBOZXdEZXZpY2VQYXRo Ow0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgQ3JlYXRlcyBhIG5ldyBkZXZpY2UgcGF0aCBieSBh cHBlbmRpbmcgdGhlIHNwZWNpZmllZCBkZXZpY2UgcGF0aCBpbnN0YW5jZSB0byB0aGUgc3BlY2lm aWVkIGRldmljZQ0KPiArICBwYXRoLg0KPiArDQo+ICsgIFRoaXMgZnVuY3Rpb24gY3JlYXRlcyBh IG5ldyBkZXZpY2UgcGF0aCBieSBhcHBlbmRpbmcgYSBjb3B5IG9mIHRoZSBkZXZpY2UgcGF0aA0K PiArICBpbnN0YW5jZSBzcGVjaWZpZWQgYnkgRGV2aWNlUGF0aEluc3RhbmNlIHRvIGEgY29weSBv ZiB0aGUgZGV2aWNlIHBhdGggc3BlY2lmaWVkDQo+ICsgIGJ5IERldmljZVBhdGggaW4gYSBhbGxv Y2F0ZWQgYnVmZmVyLg0KPiArICBUaGUgZW5kLW9mLWRldmljZS1wYXRoIGRldmljZSBub2RlIGlz IG1vdmVkIGFmdGVyIHRoZSBlbmQgb2YgdGhlIGFwcGVuZGVkIGRldmljZQ0KPiArICBwYXRoIGlu c3RhbmNlIGFuZCBhIG5ldyBlbmQtb2YtZGV2aWNlLXBhdGgtaW5zdGFuY2Ugbm9kZSBpcyBpbnNl cnRlZCBiZXR3ZWVuLg0KPiArICBJZiBEZXZpY2VQYXRoIGlzIE5VTEwsIHRoZW4gYSBjb3B5IGlm IERldmljZVBhdGhJbnN0YW5jZSBpcyByZXR1cm5lZC4NCj4gKyAgSWYgRGV2aWNlUGF0aEluc3Rh bmNlIGlzIE5VTEwsIHRoZW4gTlVMTCBpcyByZXR1cm5lZC4NCj4gKyAgSWYgRGV2aWNlUGF0aCBv ciBEZXZpY2VQYXRoSW5zdGFuY2UgaXMgaW52YWxpZCwgdGhlbiBOVUxMIGlzIHJldHVybmVkLg0K PiArICBJZiB0aGVyZSBpcyBub3QgZW5vdWdoIG1lbW9yeSB0byBhbGxvY2F0ZSBzcGFjZSBmb3Ig dGhlIG5ldyBkZXZpY2UgcGF0aCwgdGhlbg0KPiArICBOVUxMIGlzIHJldHVybmVkLg0KPiArICBU aGUgbWVtb3J5IGlzIGFsbG9jYXRlZCBmcm9tIEVGSSBib290IHNlcnZpY2VzIG1lbW9yeS4gSXQg aXMgdGhlIHJlc3BvbnNpYmlsaXR5DQo+ICsgIG9mIHRoZSBjYWxsZXIgdG8gZnJlZSB0aGUgbWVt b3J5IGFsbG9jYXRlZC4NCj4gKw0KPiArICBAcGFyYW0gIERldmljZVBhdGggICAgICAgICAgICAg ICAgIEEgcG9pbnRlciB0byBhIGRldmljZSBwYXRoIGRhdGEgc3RydWN0dXJlLg0KPiArICBAcGFy YW0gIERldmljZVBhdGhJbnN0YW5jZSAgICAgICAgIEEgcG9pbnRlciB0byBhIGRldmljZSBwYXRo IGluc3RhbmNlLg0KPiArDQo+ICsgIEByZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBuZXcgZGV2aWNl IHBhdGguDQo+ICsNCj4gKyoqLw0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoNCj4gK1Vl ZmlEZXZpY2VQYXRoTGliQXBwZW5kRGV2aWNlUGF0aEluc3RhbmNlICgNCj4gKyAgIENPTlNUIEVG SV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgKkRldmljZVBhdGgsDQo+ICsgICBDT05TVCBFRklfREVW SUNFX1BBVEhfUFJPVE9DT0wgICpEZXZpY2VQYXRoSW5zdGFuY2UNCj4gKyAgKQ0KPiArew0KPiAr ICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICpOZXdEZXZpY2VQYXRoOw0KPiArICBFRklfREVW SUNFX1BBVEhfUFJPVE9DT0wgICpUZW1wRGV2aWNlUGF0aDsNCj4gKyAgVUlOVE4gICAgICAgICAg ICAgICAgICAgICBTcmNTaXplOw0KPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIEluc3Rh bmNlU2l6ZTsNCj4gKw0KPiArICBpZiAoRGV2aWNlUGF0aCA9PSBOVUxMKSB7DQo+ICsgICAgcmV0 dXJuIER1cGxpY2F0ZURldmljZVBhdGggKERldmljZVBhdGhJbnN0YW5jZSk7DQo+ICsgIH0NCj4g Kw0KPiArICBpZiAoRGV2aWNlUGF0aEluc3RhbmNlID09IE5VTEwpIHsNCj4gKyAgICByZXR1cm4g TlVMTDsNCj4gKyAgfQ0KPiArDQo+ICsgIGlmICghSXNEZXZpY2VQYXRoVmFsaWQgKERldmljZVBh dGgsIDApIHx8ICFJc0RldmljZVBhdGhWYWxpZCAoRGV2aWNlUGF0aEluc3RhbmNlLCAwKSkgew0K PiArICAgIHJldHVybiBOVUxMOw0KPiArICB9DQo+ICsNCj4gKyAgU3JjU2l6ZSAgICAgICA9IEdl dERldmljZVBhdGhTaXplIChEZXZpY2VQYXRoKTsNCj4gKyAgSW5zdGFuY2VTaXplICA9IEdldERl dmljZVBhdGhTaXplIChEZXZpY2VQYXRoSW5zdGFuY2UpOw0KPiArDQo+ICsgIE5ld0RldmljZVBh dGggPSBBbGxvY2F0ZVBvb2wgKFNyY1NpemUgKyBJbnN0YW5jZVNpemUpOw0KPiArICBpZiAoTmV3 RGV2aWNlUGF0aCAhPSBOVUxMKSB7DQo+ICsNCj4gKyAgICBUZW1wRGV2aWNlUGF0aCA9IG1lbWNw eSAoTmV3RGV2aWNlUGF0aCwgRGV2aWNlUGF0aCwgU3JjU2l6ZSk7Ow0KPiArDQo+ICsgICAgd2hp bGUgKCFJc0RldmljZVBhdGhFbmQgKFRlbXBEZXZpY2VQYXRoKSkgew0KPiArICAgICAgVGVtcERl dmljZVBhdGggPSBOZXh0RGV2aWNlUGF0aE5vZGUgKFRlbXBEZXZpY2VQYXRoKTsNCj4gKyAgICB9 DQo+ICsNCj4gKyAgICBUZW1wRGV2aWNlUGF0aC0+U3ViVHlwZSAgPSBFTkRfSU5TVEFOQ0VfREVW SUNFX1BBVEhfU1VCVFlQRTsNCj4gKyAgICBUZW1wRGV2aWNlUGF0aCAgICAgICAgICAgPSBOZXh0 RGV2aWNlUGF0aE5vZGUgKFRlbXBEZXZpY2VQYXRoKTsNCj4gKyAgICBtZW1jcHkgKFRlbXBEZXZp Y2VQYXRoLCBEZXZpY2VQYXRoSW5zdGFuY2UsIEluc3RhbmNlU2l6ZSk7DQo+ICsgIH0NCj4gKw0K PiArICByZXR1cm4gTmV3RGV2aWNlUGF0aDsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIENyZWF0 ZXMgYSBjb3B5IG9mIHRoZSBjdXJyZW50IGRldmljZSBwYXRoIGluc3RhbmNlIGFuZCByZXR1cm5z IGEgcG9pbnRlciB0byB0aGUgbmV4dCBkZXZpY2UgcGF0aA0KPiArICBpbnN0YW5jZS4NCj4gKw0K PiArICBUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgYSBjb3B5IG9mIHRoZSBjdXJyZW50IGRldmljZSBw YXRoIGluc3RhbmNlLiBJdCBhbHNvIHVwZGF0ZXMNCj4gKyAgRGV2aWNlUGF0aCB0byBwb2ludCB0 byB0aGUgbmV4dCBkZXZpY2UgcGF0aCBpbnN0YW5jZSBpbiB0aGUgZGV2aWNlIHBhdGggKG9yIE5V TEwNCj4gKyAgaWYgbm8gbW9yZSkgYW5kIHVwZGF0ZXMgU2l6ZSB0byBob2xkIHRoZSBzaXplIG9m IHRoZSBkZXZpY2UgcGF0aCBpbnN0YW5jZSBjb3B5Lg0KPiArICBJZiBEZXZpY2VQYXRoIGlzIE5V TEwsIHRoZW4gTlVMTCBpcyByZXR1cm5lZC4NCj4gKyAgSWYgRGV2aWNlUGF0aCBwb2ludHMgdG8g YSBpbnZhbGlkIGRldmljZSBwYXRoLCB0aGVuIE5VTEwgaXMgcmV0dXJuZWQuDQo+ICsgIElmIHRo ZXJlIGlzIG5vdCBlbm91Z2ggbWVtb3J5IHRvIGFsbG9jYXRlIHNwYWNlIGZvciB0aGUgbmV3IGRl dmljZSBwYXRoLCB0aGVuDQo+ICsgIE5VTEwgaXMgcmV0dXJuZWQuDQo+ICsgIFRoZSBtZW1vcnkg aXMgYWxsb2NhdGVkIGZyb20gRUZJIGJvb3Qgc2VydmljZXMgbWVtb3J5LiBJdCBpcyB0aGUgcmVz cG9uc2liaWxpdHkNCj4gKyAgb2YgdGhlIGNhbGxlciB0byBmcmVlIHRoZSBtZW1vcnkgYWxsb2Nh dGVkLg0KPiArICBJZiBTaXplIGlzIE5VTEwsIHRoZW4gQVNTRVJUKCkuDQo+ICsNCj4gKyAgQHBh cmFtICBEZXZpY2VQYXRoICAgICAgICAgICAgICAgICBPbiBpbnB1dCwgdGhpcyBob2xkcyB0aGUg cG9pbnRlciB0byB0aGUgY3VycmVudA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGRldmljZSBwYXRoIGluc3RhbmNlLiBPbiBvdXRwdXQsIHRoaXMgaG9sZHMNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgcG9pbnRlciB0byB0aGUgbmV4 dCBkZXZpY2UgcGF0aCBpbnN0YW5jZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG9yIE5VTEwgaWYgdGhlcmUgYXJlIG5vIG1vcmUgZGV2aWNlIHBhdGgNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZXMgaW4gdGhlIGRldmljZSBw YXRoIHBvaW50ZXIgdG8gYQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRldmljZSBwYXRoIGRhdGEgc3RydWN0dXJlLg0KPiArICBAcGFyYW0gIFNpemUgICAgICAgICAg ICAgICAgICAgICAgIE9uIG91dHB1dCwgdGhpcyBob2xkcyB0aGUgc2l6ZSBvZiB0aGUgZGV2aWNl DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCBpbnN0YW5jZSwg aW4gYnl0ZXMgb3IgemVybywgaWYgRGV2aWNlUGF0aA0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGlzIE5VTEwuDQo+ICsNCj4gKyAgQHJldHVybiBBIHBvaW50ZXIgdG8g dGhlIGN1cnJlbnQgZGV2aWNlIHBhdGggaW5zdGFuY2UuDQo+ICsNCj4gKyoqLw0KPiArRUZJX0RF VklDRV9QQVRIX1BST1RPQ09MICoNCj4gK1VlZmlEZXZpY2VQYXRoTGliR2V0TmV4dERldmljZVBh dGhJbnN0YW5jZSAoDQo+ICsgICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICAgKipEZXZpY2VQ YXRoLA0KPiArICAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICpTaXplDQo+ICsgICkN Cj4gK3sNCj4gKyAgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICAqRGV2UGF0aDsNCj4gKyAgRUZJ X0RFVklDRV9QQVRIX1BST1RPQ09MICAqUmV0dXJuVmFsdWU7DQo+ICsgIFVJTlQ4ICAgICAgICAg ICAgICAgICAgICAgVGVtcDsNCj4gKw0KPiArICBBU1NFUlQgKFNpemUgIT0gTlVMTCk7DQo+ICsN Cj4gKyAgaWYgKERldmljZVBhdGggPT0gTlVMTCB8fCAqRGV2aWNlUGF0aCA9PSBOVUxMKSB7DQo+ ICsgICAgKlNpemUgPSAwOw0KPiArICAgIHJldHVybiBOVUxMOw0KPiArICB9DQo+ICsNCj4gKyAg aWYgKCFJc0RldmljZVBhdGhWYWxpZCAoKkRldmljZVBhdGgsIDApKSB7DQo+ICsgICAgcmV0dXJu IE5VTEw7DQo+ICsgIH0NCj4gKw0KPiArICAvLw0KPiArICAvLyBGaW5kIHRoZSBlbmQgb2YgdGhl IGRldmljZSBwYXRoIGluc3RhbmNlDQo+ICsgIC8vDQo+ICsgIERldlBhdGggPSAqRGV2aWNlUGF0 aDsNCj4gKyAgd2hpbGUgKCFJc0RldmljZVBhdGhFbmRUeXBlIChEZXZQYXRoKSkgew0KPiArICAg IERldlBhdGggPSBOZXh0RGV2aWNlUGF0aE5vZGUgKERldlBhdGgpOw0KPiArICB9DQo+ICsNCj4g KyAgLy8NCj4gKyAgLy8gQ29tcHV0ZSB0aGUgc2l6ZSBvZiB0aGUgZGV2aWNlIHBhdGggaW5zdGFu Y2UNCj4gKyAgLy8NCj4gKyAgKlNpemUgPSAoKFVJTlROKSBEZXZQYXRoIC0gKFVJTlROKSAoKkRl dmljZVBhdGgpKSArIHNpemVvZiAoRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MKTsNCj4gKw0KPiAr ICAvLw0KPiArICAvLyBNYWtlIGEgY29weSBhbmQgcmV0dXJuIHRoZSBkZXZpY2UgcGF0aCBpbnN0 YW5jZQ0KPiArICAvLw0KPiArICBUZW1wICAgICAgICAgICAgICA9IERldlBhdGgtPlN1YlR5cGU7 DQo+ICsgIERldlBhdGgtPlN1YlR5cGUgID0gRU5EX0VOVElSRV9ERVZJQ0VfUEFUSF9TVUJUWVBF Ow0KPiArICBSZXR1cm5WYWx1ZSAgICAgICA9IER1cGxpY2F0ZURldmljZVBhdGggKCpEZXZpY2VQ YXRoKTsNCj4gKyAgRGV2UGF0aC0+U3ViVHlwZSAgPSBUZW1wOw0KPiArDQo+ICsgIC8vDQo+ICsg IC8vIElmIERldlBhdGggaXMgdGhlIGVuZCBvZiBhbiBlbnRpcmUgZGV2aWNlIHBhdGgsIHRoZW4g YW5vdGhlciBpbnN0YW5jZQ0KPiArICAvLyBkb2VzIG5vdCBmb2xsb3csIHNvICpEZXZpY2VQYXRo IGlzIHNldCB0byBOVUxMLg0KPiArICAvLw0KPiArICBpZiAoRGV2aWNlUGF0aFN1YlR5cGUgKERl dlBhdGgpID09IEVORF9FTlRJUkVfREVWSUNFX1BBVEhfU1VCVFlQRSkgew0KPiArICAgICpEZXZp Y2VQYXRoID0gTlVMTDsNCj4gKyAgfSBlbHNlIHsNCj4gKyAgICAqRGV2aWNlUGF0aCA9IE5leHRE ZXZpY2VQYXRoTm9kZSAoRGV2UGF0aCk7DQo+ICsgIH0NCj4gKw0KPiArICByZXR1cm4gUmV0dXJu VmFsdWU7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBDcmVhdGVzIGEgZGV2aWNlIG5vZGUuDQo+ ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBjcmVhdGVzIGEgbmV3IGRldmljZSBub2RlIGluIGEgbmV3 bHkgYWxsb2NhdGVkIGJ1ZmZlciBvZiBzaXplDQo+ICsgIE5vZGVMZW5ndGggYW5kIGluaXRpYWxp emVzIHRoZSBkZXZpY2UgcGF0aCBub2RlIGhlYWRlciB3aXRoIE5vZGVUeXBlIGFuZCBOb2RlU3Vi VHlwZS4NCj4gKyAgVGhlIG5ldyBkZXZpY2UgcGF0aCBub2RlIGlzIHJldHVybmVkLg0KPiArICBJ ZiBOb2RlTGVuZ3RoIGlzIHNtYWxsZXIgdGhhbiBhIGRldmljZSBwYXRoIGhlYWRlciwgdGhlbiBO VUxMIGlzIHJldHVybmVkLg0KPiArICBJZiB0aGVyZSBpcyBub3QgZW5vdWdoIG1lbW9yeSB0byBh bGxvY2F0ZSBzcGFjZSBmb3IgdGhlIG5ldyBkZXZpY2UgcGF0aCwgdGhlbg0KPiArICBOVUxMIGlz IHJldHVybmVkLg0KPiArICBUaGUgbWVtb3J5IGlzIGFsbG9jYXRlZCBmcm9tIEVGSSBib290IHNl cnZpY2VzIG1lbW9yeS4gSXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5DQo+ICsgIG9mIHRoZSBjYWxs ZXIgdG8gZnJlZSB0aGUgbWVtb3J5IGFsbG9jYXRlZC4NCj4gKw0KPiArICBAcGFyYW0gIE5vZGVU eXBlICAgICAgICAgICAgICAgICAgIFRoZSBkZXZpY2Ugbm9kZSB0eXBlIGZvciB0aGUgbmV3IGRl dmljZSBub2RlLg0KPiArICBAcGFyYW0gIE5vZGVTdWJUeXBlICAgICAgICAgICAgICAgIFRoZSBk ZXZpY2Ugbm9kZSBzdWItdHlwZSBmb3IgdGhlIG5ldyBkZXZpY2Ugbm9kZS4NCj4gKyAgQHBhcmFt ICBOb2RlTGVuZ3RoICAgICAgICAgICAgICAgICBUaGUgbGVuZ3RoIG9mIHRoZSBuZXcgZGV2aWNl IG5vZGUuDQo+ICsNCj4gKyAgQHJldHVybiBUaGUgbmV3IGRldmljZSBwYXRoLg0KPiArDQo+ICsq Ki8NCj4gK0VGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqDQo+ICtVZWZpRGV2aWNlUGF0aExpYkNy ZWF0ZURldmljZU5vZGUgKA0KPiArICAgVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAgICBO b2RlVHlwZSwNCj4gKyAgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9kZVN1YlR5 cGUsDQo+ICsgICBVSU5UMTYgICAgICAgICAgICAgICAgICAgICAgICAgIE5vZGVMZW5ndGgNCj4g KyAgKQ0KPiArew0KPiArICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICAgICAqRGV2aWNlUGF0 aDsNCj4gKw0KPiArICBpZiAoTm9kZUxlbmd0aCA8IHNpemVvZiAoRUZJX0RFVklDRV9QQVRIX1BS T1RPQ09MKSkgew0KPiArICAgIC8vDQo+ICsgICAgLy8gTm9kZUxlbmd0aCBpcyBsZXNzIHRoYW4g dGhlIHNpemUgb2YgdGhlIGhlYWRlci4NCj4gKyAgICAvLw0KPiArICAgIHJldHVybiBOVUxMOw0K PiArICB9DQo+ICsNCj4gKyAgRGV2aWNlUGF0aCA9IEFsbG9jYXRlWmVyb1Bvb2wgKE5vZGVMZW5n dGgpOw0KPiArICBpZiAoRGV2aWNlUGF0aCAhPSBOVUxMKSB7DQo+ICsgICAgIERldmljZVBhdGgt PlR5cGUgICAgPSBOb2RlVHlwZTsNCj4gKyAgICAgRGV2aWNlUGF0aC0+U3ViVHlwZSA9IE5vZGVT dWJUeXBlOw0KPiArICAgICBTZXREZXZpY2VQYXRoTm9kZUxlbmd0aCAoRGV2aWNlUGF0aCwgTm9k ZUxlbmd0aCk7DQo+ICsgIH0NCj4gKw0KPiArICByZXR1cm4gRGV2aWNlUGF0aDsNCj4gK30NCj4g Kw0KPiArLyoqDQo+ICsgIERldGVybWluZXMgaWYgYSBkZXZpY2UgcGF0aCBpcyBzaW5nbGUgb3Ig bXVsdGktaW5zdGFuY2UuDQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIFRSVUUgaWYg dGhlIGRldmljZSBwYXRoIHNwZWNpZmllZCBieSBEZXZpY2VQYXRoIGlzDQo+ICsgIG11bHRpLWlu c3RhbmNlLg0KPiArICBPdGhlcndpc2UsIEZBTFNFIGlzIHJldHVybmVkLg0KPiArICBJZiBEZXZp Y2VQYXRoIGlzIE5VTEwgb3IgaW52YWxpZCwgdGhlbiBGQUxTRSBpcyByZXR1cm5lZC4NCj4gKw0K PiArICBAcGFyYW0gIERldmljZVBhdGggICAgICAgICAgICAgICAgIEEgcG9pbnRlciB0byBhIGRl dmljZSBwYXRoIGRhdGEgc3RydWN0dXJlLg0KPiArDQo+ICsgIEByZXR2YWwgIFRSVUUgICAgICAg ICAgICAgICAgICAgICAgRGV2aWNlUGF0aCBpcyBtdWx0aS1pbnN0YW5jZS4NCj4gKyAgQHJldHZh bCAgRkFMU0UgICAgICAgICAgICAgICAgICAgICBEZXZpY2VQYXRoIGlzIG5vdCBtdWx0aS1pbnN0 YW5jZSwgb3IgRGV2aWNlUGF0aA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGlzIE5VTEwgb3IgaW52YWxpZC4NCj4gKw0KPiArKiovDQo+ICtCT09MRUFODQo+ICtVZWZp RGV2aWNlUGF0aExpYklzRGV2aWNlUGF0aE11bHRpSW5zdGFuY2UgKA0KPiArICAgQ09OU1QgRUZJ X0RFVklDRV9QQVRIX1BST1RPQ09MICAqRGV2aWNlUGF0aA0KPiArICApDQo+ICt7DQo+ICsgIENP TlNUIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAgKk5vZGU7DQo+ICsNCj4gKyAgaWYgKERl dmljZVBhdGggPT0gTlVMTCkgew0KPiArICAgIHJldHVybiBGQUxTRTsNCj4gKyAgfQ0KPiArDQo+ ICsgIGlmICghSXNEZXZpY2VQYXRoVmFsaWQgKERldmljZVBhdGgsIDApKSB7DQo+ICsgICAgcmV0 dXJuIEZBTFNFOw0KPiArICB9DQo+ICsNCj4gKyAgTm9kZSA9IERldmljZVBhdGg7DQo+ICsgIHdo aWxlICghSXNEZXZpY2VQYXRoRW5kIChOb2RlKSkgew0KPiArICAgIGlmIChJc0RldmljZVBhdGhF bmRJbnN0YW5jZSAoTm9kZSkpIHsNCj4gKyAgICAgIHJldHVybiBUUlVFOw0KPiArICAgIH0NCj4g Kw0KPiArICAgIE5vZGUgPSBOZXh0RGV2aWNlUGF0aE5vZGUgKE5vZGUpOw0KPiArICB9DQo+ICsN Cj4gKyAgcmV0dXJuIEZBTFNFOw0KPiArfQ0KPiArDQo+ICsNCj4gKy8qKg0KPiArICBSZXRyaWV2 ZXMgdGhlIGRldmljZSBwYXRoIHByb3RvY29sIGZyb20gYSBoYW5kbGUuDQo+ICsNCj4gKyAgVGhp cyBmdW5jdGlvbiByZXR1cm5zIHRoZSBkZXZpY2UgcGF0aCBwcm90b2NvbCBmcm9tIHRoZSBoYW5k bGUgc3BlY2lmaWVkIGJ5IEhhbmRsZS4NCj4gKyAgSWYgSGFuZGxlIGlzIE5VTEwgb3IgSGFuZGxl IGRvZXMgbm90IGNvbnRhaW4gYSBkZXZpY2UgcGF0aCBwcm90b2NvbCwgdGhlbiBOVUxMDQo+ICsg IGlzIHJldHVybmVkLg0KPiArDQo+ICsgIEBwYXJhbSAgSGFuZGxlICAgICAgICAgICAgICAgICAg ICAgVGhlIGhhbmRsZSBmcm9tIHdoaWNoIHRvIHJldHJpZXZlIHRoZSBkZXZpY2UNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoIHByb3RvY29sLg0KPiArDQo+ICsg IEByZXR1cm4gVGhlIGRldmljZSBwYXRoIHByb3RvY29sIGZyb20gdGhlIGhhbmRsZSBzcGVjaWZp ZWQgYnkgSGFuZGxlLg0KPiArDQo+ICsqKi8NCj4gKy8qDQo+ICtFRklfREVWSUNFX1BBVEhfUFJP VE9DT0wgKg0KPiArRGV2aWNlUGF0aEZyb21IYW5kbGUgKA0KPiArICAgRUZJX0hBTkRMRSAgICAg ICAgICAgICAgICAgICAgICBIYW5kbGUNCj4gKyAgKQ0KPiArew0KPiArICBFRklfREVWSUNFX1BB VEhfUFJPVE9DT0wgICpEZXZpY2VQYXRoOw0KPiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAg IFN0YXR1czsNCj4gKw0KPiArICBTdGF0dXMgPSBnQlMtPkhhbmRsZVByb3RvY29sICgNCj4gKyAg ICAgICAgICAgICAgICAgIEhhbmRsZSwNCj4gKyAgICAgICAgICAgICAgICAgICZnRWZpRGV2aWNl UGF0aFByb3RvY29sR3VpZCwNCj4gKyAgICAgICAgICAgICAgICAgIChWT0lEICopICZEZXZpY2VQ YXRoDQo+ICsgICAgICAgICAgICAgICAgICApOw0KPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMp KSB7DQo+ICsgICAgRGV2aWNlUGF0aCA9IE5VTEw7DQo+ICsgIH0NCj4gKyAgcmV0dXJuIERldmlj ZVBhdGg7DQo+ICt9DQo+ICsqLw0KPiArLyoqDQo+ICsgIEFsbG9jYXRlcyBhIGRldmljZSBwYXRo IGZvciBhIGZpbGUgYW5kIGFwcGVuZHMgaXQgdG8gYW4gZXhpc3RpbmcgZGV2aWNlIHBhdGguDQo+ ICsNCj4gKyAgSWYgRGV2aWNlIGlzIGEgdmFsaWQgZGV2aWNlIGhhbmRsZSB0aGF0IGNvbnRhaW5z IGEgZGV2aWNlIHBhdGggcHJvdG9jb2wsIHRoZW4gYSBkZXZpY2UgcGF0aCBmb3INCj4gKyAgdGhl IGZpbGUgc3BlY2lmaWVkIGJ5IEZpbGVOYW1lICBpcyBhbGxvY2F0ZWQgYW5kIGFwcGVuZGVkIHRv IHRoZSBkZXZpY2UgcGF0aCBhc3NvY2lhdGVkIHdpdGggdGhlDQo+ICsgIGhhbmRsZSBEZXZpY2Uu ICBUaGUgYWxsb2NhdGVkIGRldmljZSBwYXRoIGlzIHJldHVybmVkLiAgSWYgRGV2aWNlIGlzIE5V TEwgb3IgRGV2aWNlIGlzIGEgaGFuZGxlDQo+ICsgIHRoYXQgZG9lcyBub3Qgc3VwcG9ydCB0aGUg ZGV2aWNlIHBhdGggcHJvdG9jb2wsIHRoZW4gYSBkZXZpY2UgcGF0aCBjb250YWluaW5nIGEgc2lu Z2xlIGRldmljZQ0KPiArICBwYXRoIG5vZGUgZm9yIHRoZSBmaWxlIHNwZWNpZmllZCBieSBGaWxl TmFtZSBpcyBhbGxvY2F0ZWQgYW5kIHJldHVybmVkLg0KPiArICBUaGUgbWVtb3J5IGZvciB0aGUg bmV3IGRldmljZSBwYXRoIGlzIGFsbG9jYXRlZCBmcm9tIEVGSSBib290IHNlcnZpY2VzIG1lbW9y eS4gSXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5DQo+ICsgIG9mIHRoZSBjYWxsZXIgdG8gZnJlZSB0 aGUgbWVtb3J5IGFsbG9jYXRlZC4NCj4gKw0KPiArICBJZiBGaWxlTmFtZSBpcyBOVUxMLCB0aGVu IEFTU0VSVCgpLg0KPiArICBJZiBGaWxlTmFtZSBpcyBub3QgYWxpZ25lZCBvbiBhIDE2LWJpdCBi b3VuZGFyeSwgdGhlbiBBU1NFUlQoKS4NCj4gKw0KPiArICBAcGFyYW0gIERldmljZSAgICAgICAg ICAgICAgICAgICAgIEEgcG9pbnRlciB0byBhIGRldmljZSBoYW5kbGUuICBUaGlzIHBhcmFtZXRl cg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIG9wdGlvbmFsIGFu ZCBtYXkgYmUgTlVMTC4NCj4gKyAgQHBhcmFtICBGaWxlTmFtZSAgICAgICAgICAgICAgICAgICBB IHBvaW50ZXIgdG8gYSBOdWxsLXRlcm1pbmF0ZWQgVW5pY29kZSBzdHJpbmcuDQo+ICsNCj4gKyAg QHJldHVybiBUaGUgYWxsb2NhdGVkIGRldmljZSBwYXRoLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9E RVZJQ0VfUEFUSF9QUk9UT0NPTCAqDQo+ICtGaWxlRGV2aWNlUGF0aCAoDQo+ICsgICBFRklfSEFO RExFICAgICAgICAgICAgICAgICAgICAgIERldmljZSwgICAgIE9QVElPTkFMDQo+ICsgICBDT05T VCBDSEFSMTYgICAgICAgICAgICAgICAgICAgICpGaWxlTmFtZQ0KPiArICApDQo+ICt7DQo+ICsg IFVJTlROICAgICAgICAgICAgICAgICAgICAgU2l6ZTsNCj4gKyAgRklMRVBBVEhfREVWSUNFX1BB VEggICAgICAqRmlsZVBhdGg7DQo+ICsgIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgKkRldmlj ZVBhdGg7DQo+ICsgIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgKkZpbGVEZXZpY2VQYXRoOw0K PiArDQo+ICsgIERldmljZVBhdGggPSBOVUxMOw0KPiArDQo+ICsgIFNpemUgPSBTdHJTaXplIChG aWxlTmFtZSk7DQo+ICsgIEZpbGVEZXZpY2VQYXRoID0gQWxsb2NhdGVQb29sIChTaXplICsgU0la RV9PRl9GSUxFUEFUSF9ERVZJQ0VfUEFUSCArIEVORF9ERVZJQ0VfUEFUSF9MRU5HVEgpOw0KPiAr ICBpZiAoRmlsZURldmljZVBhdGggIT0gTlVMTCkgew0KPiArICAgIEZpbGVQYXRoID0gKEZJTEVQ QVRIX0RFVklDRV9QQVRIICopIEZpbGVEZXZpY2VQYXRoOw0KPiArICAgIEZpbGVQYXRoLT5IZWFk ZXIuVHlwZSAgICA9IE1FRElBX0RFVklDRV9QQVRIOw0KPiArICAgIEZpbGVQYXRoLT5IZWFkZXIu U3ViVHlwZSA9IE1FRElBX0ZJTEVQQVRIX0RQOw0KPiArICAgIG1lbWNweSAoJkZpbGVQYXRoLT5Q YXRoTmFtZSwgRmlsZU5hbWUsIFNpemUpOw0KPiArICAgIFNldERldmljZVBhdGhOb2RlTGVuZ3Ro ICgmRmlsZVBhdGgtPkhlYWRlciwgU2l6ZSArIFNJWkVfT0ZfRklMRVBBVEhfREVWSUNFX1BBVEgp Ow0KPiArICAgIFNldERldmljZVBhdGhFbmROb2RlIChOZXh0RGV2aWNlUGF0aE5vZGUgKCZGaWxl UGF0aC0+SGVhZGVyKSk7DQo+ICsNCj4gKyAgICAvL2lmIChEZXZpY2UgIT0gTlVMTCkgew0KPiAr ICAgIC8vICBEZXZpY2VQYXRoID0gRGV2aWNlUGF0aEZyb21IYW5kbGUgKERldmljZSk7DQo+ICsg ICAgLy99DQo+ICsNCj4gKyAgICBEZXZpY2VQYXRoID0gQXBwZW5kRGV2aWNlUGF0aCAoRGV2aWNl UGF0aCwgRmlsZURldmljZVBhdGgpOw0KPiArICAgIGZyZWUgKEZpbGVEZXZpY2VQYXRoKTsNCj4g KyAgfQ0KPiArDQo+ICsgIHJldHVybiBEZXZpY2VQYXRoOw0KPiArfQ0KPiBkaWZmIC0tZ2l0IGEv QmFzZVRvb2xzL1NvdXJjZS9DL0RldmljZVBhdGgvR05VbWFrZWZpbGUgYi9CYXNlVG9vbHMvU291 cmNlL0MvRGV2aWNlUGF0aC9HTlVtYWtlZmlsZQ0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBp bmRleCAwMDAwMDAwLi4yN2Y2ZmExDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvQmFzZVRvb2xz L1NvdXJjZS9DL0RldmljZVBhdGgvR05VbWFrZWZpbGUNCj4gQEAgLTAsMCArMSwzMCBAQA0KPiAr IyMgQGZpbGUNCj4gKyMgR05VL0xpbnV4IG1ha2VmaWxlIGZvciAnRGV2aWNlUGF0aCcgbW9kdWxl IGJ1aWxkLg0KPiArIw0KPiArIyBDb3B5cmlnaHQgKGMpIDIwMTcsIEludGVsIENvcnBvcmF0aW9u LiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gKyMgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNj b21wYW55aW5nIG1hdGVyaWFscw0KPiArIyBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxl IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEIExpY2Vuc2UNCj4gKyMg d2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRo ZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KPiArIyBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGlj ZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ICsjDQo+ICsjIFRIRSBQUk9HUkFNIElTIERJU1RSSUJV VEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiIEJBU0lTLA0KPiArIyBXSVRI T1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQ UkVTUyBPUiBJTVBMSUVELg0KPiArIw0KPiArQVJDSCA/PSBJQTMyDQo+ICtNQUtFUk9PVCA/PSAu Lg0KPiArDQo+ICtBUFBOQU1FID0gRGV2aWNlUGF0aA0KPiArDQo+ICtPQkpFQ1RTID0gRGV2aWNl UGF0aC5vIFVlZmlEZXZpY2VQYXRoTGliLm8gRGV2aWNlUGF0aEZyb21UZXh0Lm8gIERldmljZVBh dGhVdGlsaXRpZXMubw0KPiArDQo+ICtpbmNsdWRlICQoTUFLRVJPT1QpL01ha2VmaWxlcy9hcHAu bWFrZWZpbGUNCj4gKw0KPiArTElCUyA9IC1sQ29tbW9uDQo+ICtpZmVxICgkKENZR1dJTiksIENZ R1dJTikNCj4gKyAgTElCUyArPSAtTC9saWIvZTJmc3Byb2dzIC1sdXVpZA0KPiArZW5kaWYNCj4g Kw0KPiAraWZlcSAoJChMSU5VWCksIExpbnV4KQ0KPiArICBMSUJTICs9IC1sdXVpZA0KPiArZW5k aWYNCj4gKw0KPiBkaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9DL0RldmljZVBhdGgvTWFr ZWZpbGUgYi9CYXNlVG9vbHMvU291cmNlL0MvRGV2aWNlUGF0aC9NYWtlZmlsZQ0KPiBuZXcgZmls ZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwLi5hMDY5YzIyDQo+IC0tLSAvZGV2L251bGwN Cj4gKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9DL0RldmljZVBhdGgvTWFrZWZpbGUNCj4gQEAgLTAs MCArMSwyNCBAQA0KPiArIyMgQGZpbGUNCj4gKyMgV2luZG93cyBtYWtlZmlsZSBmb3IgJ0Rldmlj ZVBhdGgnIG1vZHVsZSBidWlsZC4NCj4gKyMNCj4gKyMgQ29weXJpZ2h0IChjKSAyMDE3LCBJbnRl bCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ICsjIFRoaXMgcHJvZ3Jh bSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gKyMgYXJlIGxpY2Vuc2VkIGFuZCBt YWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBM aWNlbnNlDQo+ICsjIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1 bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUgZm91bmQgYXQNCj4gKyMgaHR0cDovL29wZW5z b3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiArIw0KPiArIyBUSEUgUFJPR1JB TSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIiBCQVNJ UywNCj4gKyMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lO RCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gKyMNCj4gKyFJTkNMVURFIC4uXE1ha2Vm aWxlc1xtcy5jb21tb24NCj4gKw0KPiArQVBQTkFNRSA9IERldmljZVBhdGgNCj4gKw0KPiArTElC UyA9ICQoTElCX1BBVEgpXENvbW1vbi5saWINCj4gKw0KPiArT0JKRUNUUyA9IERldmljZVBhdGgu b2JqIFVlZmlEZXZpY2VQYXRoTGliLm9iaiBEZXZpY2VQYXRoRnJvbVRleHQub2JqICBEZXZpY2VQ YXRoVXRpbGl0aWVzLm9iag0KPiArDQo+ICsjQ0ZMQUdTID0gJChDRkxBR1MpIC9ub2RlZmF1bHRs aWI6bGliYy5saWINCj4gKw0KPiArIUlOQ0xVREUgLi5cTWFrZWZpbGVzXG1zLmFwcA0KPiArDQo+ IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291cmNlL0MvRGV2aWNlUGF0aC9VZWZpRGV2aWNlUGF0 aExpYi5jIGIvQmFzZVRvb2xzL1NvdXJjZS9DL0RldmljZVBhdGgvVWVmaURldmljZVBhdGhMaWIu Yw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwLi5hMmUwMzIyDQo+IC0t LSAvZGV2L251bGwNCj4gKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9DL0RldmljZVBhdGgvVWVmaURl dmljZVBhdGhMaWIuYw0KPiBAQCAtMCwwICsxLDI5OCBAQA0KPiArLyoqIEBmaWxlDQo+ICsgIERl dmljZSBQYXRoIHNlcnZpY2VzLiBUaGUgdGhpbmcgdG8gcmVtZW1iZXIgaXMgZGV2aWNlIHBhdGhz IGFyZSBidWlsdCBvdXQgb2YNCj4gKyAgbm9kZXMuIFRoZSBkZXZpY2UgcGF0aCBpcyB0ZXJtaW5h dGVkIGJ5IGFuIGVuZCBub2RlIHRoYXQgaXMgbGVuZ3RoDQo+ICsgIHNpemVvZihFRklfREVWSUNF X1BBVEhfUFJPVE9DT0wpLiBUaGF0IHdvdWxkIGJlIHdoeSB0aGVyZSBpcyBzaXplb2YoRUZJX0RF VklDRV9QQVRIX1BST1RPQ09MKQ0KPiArICBhbGwgb3ZlciB0aGlzIGZpbGUuDQo+ICsNCj4gKyAg VGhlIG9ubHkgcGxhY2Ugd2hlcmUgbXVsdGktaW5zdGFuY2UgZGV2aWNlIHBhdGhzIGFyZSBzdXBw b3J0ZWQgaXMgaW4NCj4gKyAgZW52aXJvbm1lbnQgdmFyaWJsZXMuIE11bHRpLWluc3RhbmNlIGRl dmljZSBwYXRocyBzaG91bGQgbmV2ZXIgYmUgcGxhY2VkDQo+ICsgIG9uIGEgSGFuZGxlLg0KPiAr DQo+ICsgIENvcHlyaWdodCAoYykgMjAxNywgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMg cmVzZXJ2ZWQuPEJSPg0KPiArICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0 ZXJpYWxzDQo+ICsgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRl cm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGljZW5zZQ0KPiArICB3aGljaCBhY2NvbXBh bmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5 IGJlIGZvdW5kIGF0DQo+ICsgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGlj ZW5zZS5waHAuDQo+ICsNCj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhF IEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyIgQkFTSVMsDQo+ICsgIFdJVEhPVVQgV0FSUkFOVElF UyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJ RUQuDQo+ICsNCj4gKyoqLw0KPiArDQo+ICsNCj4gKyNpbmNsdWRlICJVZWZpRGV2aWNlUGF0aExp Yi5oIg0KPiArDQo+ICsvKioNCj4gKyAgUmV0dXJucyB0aGUgc2l6ZSBvZiBhIGRldmljZSBwYXRo IGluIGJ5dGVzLg0KPiArDQo+ICsgIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgc2l6ZSwgaW4g Ynl0ZXMsIG9mIHRoZSBkZXZpY2UgcGF0aCBkYXRhIHN0cnVjdHVyZQ0KPiArICBzcGVjaWZpZWQg YnkgRGV2aWNlUGF0aCBpbmNsdWRpbmcgdGhlIGVuZCBvZiBkZXZpY2UgcGF0aCBub2RlLg0KPiAr ICBJZiBEZXZpY2VQYXRoIGlzIE5VTEwgb3IgaW52YWxpZCwgdGhlbiAwIGlzIHJldHVybmVkLg0K PiArDQo+ICsgIEBwYXJhbSAgRGV2aWNlUGF0aCAgQSBwb2ludGVyIHRvIGEgZGV2aWNlIHBhdGgg ZGF0YSBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyAgQHJldHZhbCAwICAgICAgICAgICBJZiBEZXZpY2VQ YXRoIGlzIE5VTEwgb3IgaW52YWxpZC4NCj4gKyAgQHJldHZhbCBPdGhlcnMgICAgICBUaGUgc2l6 ZSBvZiBhIGRldmljZSBwYXRoIGluIGJ5dGVzLg0KPiArDQo+ICsqKi8NCj4gK1VJTlRODQo+ICtH ZXREZXZpY2VQYXRoU2l6ZSAoDQo+ICsgICBDT05TVCBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wg ICpEZXZpY2VQYXRoDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIFVlZmlEZXZpY2VQYXRoTGli R2V0RGV2aWNlUGF0aFNpemUgKERldmljZVBhdGgpOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAg Q3JlYXRlcyBhIG5ldyBjb3B5IG9mIGFuIGV4aXN0aW5nIGRldmljZSBwYXRoLg0KPiArDQo+ICsg IFRoaXMgZnVuY3Rpb24gYWxsb2NhdGVzIHNwYWNlIGZvciBhIG5ldyBjb3B5IG9mIHRoZSBkZXZp Y2UgcGF0aCBzcGVjaWZpZWQgYnkgRGV2aWNlUGF0aC4NCj4gKyAgSWYgRGV2aWNlUGF0aCBpcyBO VUxMLCB0aGVuIE5VTEwgaXMgcmV0dXJuZWQuICBJZiB0aGUgbWVtb3J5IGlzIHN1Y2Nlc3NmdWxs eQ0KPiArICBhbGxvY2F0ZWQsIHRoZW4gdGhlIGNvbnRlbnRzIG9mIERldmljZVBhdGggYXJlIGNv cGllZCB0byB0aGUgbmV3bHkgYWxsb2NhdGVkDQo+ICsgIGJ1ZmZlciwgYW5kIGEgcG9pbnRlciB0 byB0aGF0IGJ1ZmZlciBpcyByZXR1cm5lZC4gIE90aGVyd2lzZSwgTlVMTCBpcyByZXR1cm5lZC4N Cj4gKyAgVGhlIG1lbW9yeSBmb3IgdGhlIG5ldyBkZXZpY2UgcGF0aCBpcyBhbGxvY2F0ZWQgZnJv bSBFRkkgYm9vdCBzZXJ2aWNlcyBtZW1vcnkuDQo+ICsgIEl0IGlzIHRoZSByZXNwb25zaWJpbGl0 eSBvZiB0aGUgY2FsbGVyIHRvIGZyZWUgdGhlIG1lbW9yeSBhbGxvY2F0ZWQuDQo+ICsNCj4gKyAg QHBhcmFtICBEZXZpY2VQYXRoICAgIEEgcG9pbnRlciB0byBhIGRldmljZSBwYXRoIGRhdGEgc3Ry dWN0dXJlLg0KPiArDQo+ICsgIEByZXR2YWwgTlVMTCAgICAgICAgICBEZXZpY2VQYXRoIGlzIE5V TEwgb3IgaW52YWxpZC4NCj4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgIEEgcG9pbnRlciB0byB0 aGUgZHVwbGljYXRlZCBkZXZpY2UgcGF0aC4NCj4gKw0KPiArKiovDQo+ICtFRklfREVWSUNFX1BB VEhfUFJPVE9DT0wgKg0KPiArRHVwbGljYXRlRGV2aWNlUGF0aCAoDQo+ICsgICBDT05TVCBFRklf REVWSUNFX1BBVEhfUFJPVE9DT0wgICpEZXZpY2VQYXRoDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0 dXJuIFVlZmlEZXZpY2VQYXRoTGliRHVwbGljYXRlRGV2aWNlUGF0aCAoRGV2aWNlUGF0aCk7DQo+ ICt9DQo+ICsNCj4gKy8qKg0KPiArICBDcmVhdGVzIGEgbmV3IGRldmljZSBwYXRoIGJ5IGFwcGVu ZGluZyBhIHNlY29uZCBkZXZpY2UgcGF0aCB0byBhIGZpcnN0IGRldmljZSBwYXRoLg0KPiArDQo+ ICsgIFRoaXMgZnVuY3Rpb24gY3JlYXRlcyBhIG5ldyBkZXZpY2UgcGF0aCBieSBhcHBlbmRpbmcg YSBjb3B5IG9mIFNlY29uZERldmljZVBhdGgNCj4gKyAgdG8gYSBjb3B5IG9mIEZpcnN0RGV2aWNl UGF0aCBpbiBhIG5ld2x5IGFsbG9jYXRlZCBidWZmZXIuICBPbmx5IHRoZSBlbmQtb2YtZGV2aWNl LXBhdGgNCj4gKyAgZGV2aWNlIG5vZGUgZnJvbSBTZWNvbmREZXZpY2VQYXRoIGlzIHJldGFpbmVk LiBUaGUgbmV3bHkgY3JlYXRlZCBkZXZpY2UgcGF0aCBpcw0KPiArICByZXR1cm5lZC4gSWYgRmly c3REZXZpY2VQYXRoIGlzIE5VTEwsIHRoZW4gaXQgaXMgaWdub3JlZCwgYW5kIGEgZHVwbGljYXRl IG9mDQo+ICsgIFNlY29uZERldmljZVBhdGggaXMgcmV0dXJuZWQuICBJZiBTZWNvbmREZXZpY2VQ YXRoIGlzIE5VTEwsIHRoZW4gaXQgaXMgaWdub3JlZCwNCj4gKyAgYW5kIGEgZHVwbGljYXRlIG9m IEZpcnN0RGV2aWNlUGF0aCBpcyByZXR1cm5lZC4gSWYgYm90aCBGaXJzdERldmljZVBhdGggYW5k DQo+ICsgIFNlY29uZERldmljZVBhdGggYXJlIE5VTEwsIHRoZW4gYSBjb3B5IG9mIGFuIGVuZC1v Zi1kZXZpY2UtcGF0aCBpcyByZXR1cm5lZC4NCj4gKw0KPiArICBJZiB0aGVyZSBpcyBub3QgZW5v dWdoIG1lbW9yeSBmb3IgdGhlIG5ld2x5IGFsbG9jYXRlZCBidWZmZXIsIHRoZW4gTlVMTCBpcyBy ZXR1cm5lZC4NCj4gKyAgVGhlIG1lbW9yeSBmb3IgdGhlIG5ldyBkZXZpY2UgcGF0aCBpcyBhbGxv Y2F0ZWQgZnJvbSBFRkkgYm9vdCBzZXJ2aWNlcyBtZW1vcnkuDQo+ICsgIEl0IGlzIHRoZSByZXNw b25zaWJpbGl0eSBvZiB0aGUgY2FsbGVyIHRvIGZyZWUgdGhlIG1lbW9yeSBhbGxvY2F0ZWQuDQo+ ICsNCj4gKyAgQHBhcmFtICBGaXJzdERldmljZVBhdGggICAgICAgICAgICBBIHBvaW50ZXIgdG8g YSBkZXZpY2UgcGF0aCBkYXRhIHN0cnVjdHVyZS4NCj4gKyAgQHBhcmFtICBTZWNvbmREZXZpY2VQ YXRoICAgICAgICAgICBBIHBvaW50ZXIgdG8gYSBkZXZpY2UgcGF0aCBkYXRhIHN0cnVjdHVyZS4N Cj4gKw0KPiArICBAcmV0dmFsIE5VTEwgICAgICBJZiB0aGVyZSBpcyBub3QgZW5vdWdoIG1lbW9y eSBmb3IgdGhlIG5ld2x5IGFsbG9jYXRlZCBidWZmZXIuDQo+ICsgIEByZXR2YWwgTlVMTCAgICAg IElmIEZpcnN0RGV2aWNlUGF0aCBvciBTZWNvbmREZXZpY2VQYXRoIGlzIGludmFsaWQuDQo+ICsg IEByZXR2YWwgT3RoZXJzICAgIEEgcG9pbnRlciB0byB0aGUgbmV3IGRldmljZSBwYXRoIGlmIHN1 Y2Nlc3MuDQo+ICsgICAgICAgICAgICAgICAgICAgIE9yIGEgY29weSBhbiBlbmQtb2YtZGV2aWNl LXBhdGggaWYgYm90aCBGaXJzdERldmljZVBhdGggYW5kIFNlY29uZERldmljZVBhdGggYXJlIE5V TEwuDQo+ICsNCj4gKyoqLw0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoNCj4gK0FwcGVu ZERldmljZVBhdGggKA0KPiArICAgQ09OU1QgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICAqRmly c3REZXZpY2VQYXRoLCAgT1BUSU9OQUwNCj4gKyAgIENPTlNUIEVGSV9ERVZJQ0VfUEFUSF9QUk9U T0NPTCAgKlNlY29uZERldmljZVBhdGggIE9QVElPTkFMDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0 dXJuIFVlZmlEZXZpY2VQYXRoTGliQXBwZW5kRGV2aWNlUGF0aCAoRmlyc3REZXZpY2VQYXRoLCBT ZWNvbmREZXZpY2VQYXRoKTsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIENyZWF0ZXMgYSBuZXcg cGF0aCBieSBhcHBlbmRpbmcgdGhlIGRldmljZSBub2RlIHRvIHRoZSBkZXZpY2UgcGF0aC4NCj4g Kw0KPiArICBUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgYSBuZXcgZGV2aWNlIHBhdGggYnkgYXBwZW5k aW5nIGEgY29weSBvZiB0aGUgZGV2aWNlIG5vZGUNCj4gKyAgc3BlY2lmaWVkIGJ5IERldmljZVBh dGhOb2RlIHRvIGEgY29weSBvZiB0aGUgZGV2aWNlIHBhdGggc3BlY2lmaWVkIGJ5IERldmljZVBh dGgNCj4gKyAgaW4gYW4gYWxsb2NhdGVkIGJ1ZmZlci4gVGhlIGVuZC1vZi1kZXZpY2UtcGF0aCBk ZXZpY2Ugbm9kZSBpcyBtb3ZlZCBhZnRlciB0aGUNCj4gKyAgZW5kIG9mIHRoZSBhcHBlbmRlZCBk ZXZpY2Ugbm9kZS4NCj4gKyAgSWYgRGV2aWNlUGF0aE5vZGUgaXMgTlVMTCB0aGVuIGEgY29weSBv ZiBEZXZpY2VQYXRoIGlzIHJldHVybmVkLg0KPiArICBJZiBEZXZpY2VQYXRoIGlzIE5VTEwgdGhl biBhIGNvcHkgb2YgRGV2aWNlUGF0aE5vZGUsIGZvbGxvd2VkIGJ5IGFuIGVuZC1vZi1kZXZpY2UN Cj4gKyAgcGF0aCBkZXZpY2Ugbm9kZSBpcyByZXR1cm5lZC4NCj4gKyAgSWYgYm90aCBEZXZpY2VQ YXRoTm9kZSBhbmQgRGV2aWNlUGF0aCBhcmUgTlVMTCB0aGVuIGEgY29weSBvZiBhbiBlbmQtb2Yt ZGV2aWNlLXBhdGgNCj4gKyAgZGV2aWNlIG5vZGUgaXMgcmV0dXJuZWQuDQo+ICsgIElmIHRoZXJl IGlzIG5vdCBlbm91Z2ggbWVtb3J5IHRvIGFsbG9jYXRlIHNwYWNlIGZvciB0aGUgbmV3IGRldmlj ZSBwYXRoLCB0aGVuDQo+ICsgIE5VTEwgaXMgcmV0dXJuZWQuDQo+ICsgIFRoZSBtZW1vcnkgaXMg YWxsb2NhdGVkIGZyb20gRUZJIGJvb3Qgc2VydmljZXMgbWVtb3J5LiBJdCBpcyB0aGUgcmVzcG9u c2liaWxpdHkNCj4gKyAgb2YgdGhlIGNhbGxlciB0byBmcmVlIHRoZSBtZW1vcnkgYWxsb2NhdGVk Lg0KPiArDQo+ICsgIEBwYXJhbSAgRGV2aWNlUGF0aCAgICAgICAgICAgICAgICAgQSBwb2ludGVy IHRvIGEgZGV2aWNlIHBhdGggZGF0YSBzdHJ1Y3R1cmUuDQo+ICsgIEBwYXJhbSAgRGV2aWNlUGF0 aE5vZGUgICAgICAgICAgICAgQSBwb2ludGVyIHRvIGEgc2luZ2xlIGRldmljZSBwYXRoIG5vZGUu DQo+ICsNCj4gKyAgQHJldHZhbCBOVUxMICAgICAgSWYgdGhlcmUgaXMgbm90IGVub3VnaCBtZW1v cnkgZm9yIHRoZSBuZXcgZGV2aWNlIHBhdGguDQo+ICsgIEByZXR2YWwgT3RoZXJzICAgIEEgcG9p bnRlciB0byB0aGUgbmV3IGRldmljZSBwYXRoIGlmIHN1Y2Nlc3MuDQo+ICsgICAgICAgICAgICAg ICAgICAgIEEgY29weSBvZiBEZXZpY2VQYXRoTm9kZSBmb2xsb3dlZCBieSBhbiBlbmQtb2YtZGV2 aWNlLXBhdGggbm9kZQ0KPiArICAgICAgICAgICAgICAgICAgICBpZiBib3RoIEZpcnN0RGV2aWNl UGF0aCBhbmQgU2Vjb25kRGV2aWNlUGF0aCBhcmUgTlVMTC4NCj4gKyAgICAgICAgICAgICAgICAg ICAgQSBjb3B5IG9mIGFuIGVuZC1vZi1kZXZpY2UtcGF0aCBub2RlIGlmIGJvdGggRmlyc3REZXZp Y2VQYXRoDQo+ICsgICAgICAgICAgICAgICAgICAgIGFuZCBTZWNvbmREZXZpY2VQYXRoIGFyZSBO VUxMLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqDQo+ICtBcHBl bmREZXZpY2VQYXRoTm9kZSAoDQo+ICsgICBDT05TVCBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wg ICpEZXZpY2VQYXRoLCAgICAgT1BUSU9OQUwNCj4gKyAgIENPTlNUIEVGSV9ERVZJQ0VfUEFUSF9Q Uk9UT0NPTCAgKkRldmljZVBhdGhOb2RlICBPUFRJT05BTA0KPiArICApDQo+ICt7DQo+ICsgIHJl dHVybiBVZWZpRGV2aWNlUGF0aExpYkFwcGVuZERldmljZVBhdGhOb2RlIChEZXZpY2VQYXRoLCBE ZXZpY2VQYXRoTm9kZSk7DQo+ICt9DQo+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 VE9DT0wgKg0KPiArQXBwZW5kRGV2aWNlUGF0aEluc3RhbmNlICgNCj4gKyAgIENPTlNUIEVGSV9E RVZJQ0VfUEFUSF9QUk9UT0NPTCAgKkRldmljZVBhdGgsICAgICAgICBPUFRJT05BTA0KPiArICAg Q09OU1QgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICAqRGV2aWNlUGF0aEluc3RhbmNlIE9QVElP TkFMDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIFVlZmlEZXZpY2VQYXRoTGliQXBwZW5kRGV2 aWNlUGF0aEluc3RhbmNlIChEZXZpY2VQYXRoLCBEZXZpY2VQYXRoSW5zdGFuY2UpOw0KPiArfQ0K PiArDQo+ICsvKioNCj4gKyAgQ3JlYXRlcyBhIGNvcHkgb2YgdGhlIGN1cnJlbnQgZGV2aWNlIHBh dGggaW5zdGFuY2UgYW5kIHJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBuZXh0IGRldmljZSBwYXRo DQo+ICsgIGluc3RhbmNlLg0KPiArDQo+ICsgIFRoaXMgZnVuY3Rpb24gY3JlYXRlcyBhIGNvcHkg b2YgdGhlIGN1cnJlbnQgZGV2aWNlIHBhdGggaW5zdGFuY2UuIEl0IGFsc28gdXBkYXRlcw0KPiAr ICBEZXZpY2VQYXRoIHRvIHBvaW50IHRvIHRoZSBuZXh0IGRldmljZSBwYXRoIGluc3RhbmNlIGlu IHRoZSBkZXZpY2UgcGF0aCAob3IgTlVMTA0KPiArICBpZiBubyBtb3JlKSBhbmQgdXBkYXRlcyBT aXplIHRvIGhvbGQgdGhlIHNpemUgb2YgdGhlIGRldmljZSBwYXRoIGluc3RhbmNlIGNvcHkuDQo+ ICsgIElmIERldmljZVBhdGggaXMgTlVMTCwgdGhlbiBOVUxMIGlzIHJldHVybmVkLg0KPiArICBJ ZiBEZXZpY2VQYXRoIHBvaW50cyB0byBhIGludmFsaWQgZGV2aWNlIHBhdGgsIHRoZW4gTlVMTCBp cyByZXR1cm5lZC4NCj4gKyAgSWYgdGhlcmUgaXMgbm90IGVub3VnaCBtZW1vcnkgdG8gYWxsb2Nh dGUgc3BhY2UgZm9yIHRoZSBuZXcgZGV2aWNlIHBhdGgsIHRoZW4NCj4gKyAgTlVMTCBpcyByZXR1 cm5lZC4NCj4gKyAgVGhlIG1lbW9yeSBpcyBhbGxvY2F0ZWQgZnJvbSBFRkkgYm9vdCBzZXJ2aWNl cyBtZW1vcnkuIEl0IGlzIHRoZSByZXNwb25zaWJpbGl0eQ0KPiArICBvZiB0aGUgY2FsbGVyIHRv IGZyZWUgdGhlIG1lbW9yeSBhbGxvY2F0ZWQuDQo+ICsgIElmIFNpemUgaXMgTlVMTCwgdGhlbiBB U1NFUlQoKS4NCj4gKw0KPiArICBAcGFyYW0gIERldmljZVBhdGggICAgICAgICAgICAgICAgIE9u IGlucHV0LCB0aGlzIGhvbGRzIHRoZSBwb2ludGVyIHRvIHRoZSBjdXJyZW50DQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlIHBhdGggaW5zdGFuY2UuIE9uIG91 dHB1dCwgdGhpcyBob2xkcw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHRoZSBwb2ludGVyIHRvIHRoZSBuZXh0IGRldmljZSBwYXRoIGluc3RhbmNlDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgTlVMTCBpZiB0aGVyZSBhcmUgbm8gbW9y ZSBkZXZpY2UgcGF0aA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu c3RhbmNlcyBpbiB0aGUgZGV2aWNlIHBhdGggcG9pbnRlciB0byBhDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlIHBhdGggZGF0YSBzdHJ1Y3R1cmUuDQo+ICsg IEBwYXJhbSAgU2l6ZSAgICAgICAgICAgICAgICAgICAgICAgT24gb3V0cHV0LCB0aGlzIGhvbGRz IHRoZSBzaXplIG9mIHRoZSBkZXZpY2UNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwYXRoIGluc3RhbmNlLCBpbiBieXRlcyBvciB6ZXJvLCBpZiBEZXZpY2VQYXRoDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgTlVMTC4NCj4gKw0KPiAr ICBAcmV0dXJuIEEgcG9pbnRlciB0byB0aGUgY3VycmVudCBkZXZpY2UgcGF0aCBpbnN0YW5jZS4N Cj4gKw0KPiArKiovDQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0KPiArR2V0TmV4dERl dmljZVBhdGhJbnN0YW5jZSAoDQo+ICsgICAgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICAgICoq RGV2aWNlUGF0aCwNCj4gKyAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAqU2l6ZQ0K PiArICApDQo+ICt7DQo+ICsgIHJldHVybiBVZWZpRGV2aWNlUGF0aExpYkdldE5leHREZXZpY2VQ YXRoSW5zdGFuY2UgKERldmljZVBhdGgsIFNpemUpOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAg Q3JlYXRlcyBhIGRldmljZSBub2RlLg0KPiArDQo+ICsgIFRoaXMgZnVuY3Rpb24gY3JlYXRlcyBh IG5ldyBkZXZpY2Ugbm9kZSBpbiBhIG5ld2x5IGFsbG9jYXRlZCBidWZmZXIgb2Ygc2l6ZQ0KPiAr ICBOb2RlTGVuZ3RoIGFuZCBpbml0aWFsaXplcyB0aGUgZGV2aWNlIHBhdGggbm9kZSBoZWFkZXIg d2l0aCBOb2RlVHlwZSBhbmQgTm9kZVN1YlR5cGUuDQo+ICsgIFRoZSBuZXcgZGV2aWNlIHBhdGgg bm9kZSBpcyByZXR1cm5lZC4NCj4gKyAgSWYgTm9kZUxlbmd0aCBpcyBzbWFsbGVyIHRoYW4gYSBk ZXZpY2UgcGF0aCBoZWFkZXIsIHRoZW4gTlVMTCBpcyByZXR1cm5lZC4NCj4gKyAgSWYgdGhlcmUg aXMgbm90IGVub3VnaCBtZW1vcnkgdG8gYWxsb2NhdGUgc3BhY2UgZm9yIHRoZSBuZXcgZGV2aWNl IHBhdGgsIHRoZW4NCj4gKyAgTlVMTCBpcyByZXR1cm5lZC4NCj4gKyAgVGhlIG1lbW9yeSBpcyBh bGxvY2F0ZWQgZnJvbSBFRkkgYm9vdCBzZXJ2aWNlcyBtZW1vcnkuIEl0IGlzIHRoZSByZXNwb25z aWJpbGl0eQ0KPiArICBvZiB0aGUgY2FsbGVyIHRvIGZyZWUgdGhlIG1lbW9yeSBhbGxvY2F0ZWQu DQo+ICsNCj4gKyAgQHBhcmFtICBOb2RlVHlwZSAgICAgICAgICAgICAgICAgICBUaGUgZGV2aWNl IG5vZGUgdHlwZSBmb3IgdGhlIG5ldyBkZXZpY2Ugbm9kZS4NCj4gKyAgQHBhcmFtICBOb2RlU3Vi VHlwZSAgICAgICAgICAgICAgICBUaGUgZGV2aWNlIG5vZGUgc3ViLXR5cGUgZm9yIHRoZSBuZXcg ZGV2aWNlIG5vZGUuDQo+ICsgIEBwYXJhbSAgTm9kZUxlbmd0aCAgICAgICAgICAgICAgICAgVGhl IGxlbmd0aCBvZiB0aGUgbmV3IGRldmljZSBub2RlLg0KPiArDQo+ICsgIEByZXR1cm4gVGhlIG5l dyBkZXZpY2UgcGF0aC4NCj4gKw0KPiArKiovDQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wg Kg0KPiArQ3JlYXRlRGV2aWNlTm9kZSAoDQo+ICsgICBVSU5UOCAgICAgICAgICAgICAgICAgICAg ICAgICAgIE5vZGVUeXBlLA0KPiArICAgVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAgICBO b2RlU3ViVHlwZSwNCj4gKyAgIFVJTlQxNiAgICAgICAgICAgICAgICAgICAgICAgICAgTm9kZUxl bmd0aA0KPiArICApDQo+ICt7DQo+ICsgIHJldHVybiBVZWZpRGV2aWNlUGF0aExpYkNyZWF0ZURl dmljZU5vZGUgKE5vZGVUeXBlLCBOb2RlU3ViVHlwZSwgTm9kZUxlbmd0aCk7DQo+ICt9DQo+ICsN Cj4gKy8qKg0KPiArICBEZXRlcm1pbmVzIGlmIGEgZGV2aWNlIHBhdGggaXMgc2luZ2xlIG9yIG11 bHRpLWluc3RhbmNlLg0KPiArDQo+ICsgIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBUUlVFIGlmIHRo ZSBkZXZpY2UgcGF0aCBzcGVjaWZpZWQgYnkgRGV2aWNlUGF0aCBpcw0KPiArICBtdWx0aS1pbnN0 YW5jZS4NCj4gKyAgT3RoZXJ3aXNlLCBGQUxTRSBpcyByZXR1cm5lZC4NCj4gKyAgSWYgRGV2aWNl UGF0aCBpcyBOVUxMIG9yIGludmFsaWQsIHRoZW4gRkFMU0UgaXMgcmV0dXJuZWQuDQo+ICsNCj4g KyAgQHBhcmFtICBEZXZpY2VQYXRoICAgICAgICAgICAgICAgICBBIHBvaW50ZXIgdG8gYSBkZXZp Y2UgcGF0aCBkYXRhIHN0cnVjdHVyZS4NCj4gKw0KPiArICBAcmV0dmFsICBUUlVFICAgICAgICAg ICAgICAgICAgICAgIERldmljZVBhdGggaXMgbXVsdGktaW5zdGFuY2UuDQo+ICsgIEByZXR2YWwg IEZBTFNFICAgICAgICAgICAgICAgICAgICAgRGV2aWNlUGF0aCBpcyBub3QgbXVsdGktaW5zdGFu Y2UsIG9yIERldmljZVBhdGgNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpcyBOVUxMIG9yIGludmFsaWQuDQo+ICsNCj4gKyoqLw0KPiArQk9PTEVBTg0KPiArSXNEZXZp Y2VQYXRoTXVsdGlJbnN0YW5jZSAoDQo+ICsgICBDT05TVCBFRklfREVWSUNFX1BBVEhfUFJPVE9D T0wgICpEZXZpY2VQYXRoDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIFVlZmlEZXZpY2VQYXRo TGliSXNEZXZpY2VQYXRoTXVsdGlJbnN0YW5jZSAoRGV2aWNlUGF0aCk7DQo+ICt9DQo+ICsNCj4g Ky8qKg0KPiArICBDb252ZXJ0IHRleHQgdG8gdGhlIGJpbmFyeSByZXByZXNlbnRhdGlvbiBvZiBh IGRldmljZSBub2RlLg0KPiArDQo+ICsgIEBwYXJhbSBUZXh0RGV2aWNlTm9kZSAgVGV4dERldmlj ZU5vZGUgcG9pbnRzIHRvIHRoZSB0ZXh0IHJlcHJlc2VudGF0aW9uIG9mIGEgZGV2aWNlDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS4gQ29udmVyc2lvbiBzdGFydHMgd2l0aCB0aGUg Zmlyc3QgY2hhcmFjdGVyIGFuZCBjb250aW51ZXMNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICB1bnRpbCB0aGUgZmlyc3Qgbm9uLWRldmljZSBub2RlIGNoYXJhY3Rlci4NCj4gKw0KPiArICBA cmV0dXJuIEEgcG9pbnRlciB0byB0aGUgRUZJIGRldmljZSBub2RlIG9yIE5VTEwgaWYgVGV4dERl dmljZU5vZGUgaXMgTlVMTCBvciB0aGVyZSB3YXMNCj4gKyAgICAgICAgICBpbnN1ZmZpY2llbnQg bWVtb3J5IG9yIHRleHQgdW5zdXBwb3J0ZWQuDQo+ICsNCj4gKyoqLw0KPiArRUZJX0RFVklDRV9Q QVRIX1BST1RPQ09MICoNCj4gK0NvbnZlcnRUZXh0VG9EZXZpY2VOb2RlICgNCj4gKyAgIENPTlNU IENIQVIxNiAqVGV4dERldmljZU5vZGUNCj4gKyAgKQ0KPiArew0KPiArICByZXR1cm4gVWVmaURl dmljZVBhdGhMaWJDb252ZXJ0VGV4dFRvRGV2aWNlTm9kZSAoVGV4dERldmljZU5vZGUpOw0KPiAr fQ0KPiArDQo+ICsvKioNCj4gKyAgQ29udmVydCB0ZXh0IHRvIHRoZSBiaW5hcnkgcmVwcmVzZW50 YXRpb24gb2YgYSBkZXZpY2UgcGF0aC4NCj4gKw0KPiArDQo+ICsgIEBwYXJhbSBUZXh0RGV2aWNl UGF0aCAgVGV4dERldmljZVBhdGggcG9pbnRzIHRvIHRoZSB0ZXh0IHJlcHJlc2VudGF0aW9uIG9m IGEgZGV2aWNlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC4gQ29udmVyc2lvbiBz dGFydHMgd2l0aCB0aGUgZmlyc3QgY2hhcmFjdGVyIGFuZCBjb250aW51ZXMNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICB1bnRpbCB0aGUgZmlyc3Qgbm9uLWRldmljZSBub2RlIGNoYXJhY3Rl ci4NCj4gKw0KPiArICBAcmV0dXJuIEEgcG9pbnRlciB0byB0aGUgYWxsb2NhdGVkIGRldmljZSBw YXRoIG9yIE5VTEwgaWYgVGV4dERldmljZU5vZGUgaXMgTlVMTCBvcg0KPiArICAgICAgICAgIHRo ZXJlIHdhcyBpbnN1ZmZpY2llbnQgbWVtb3J5Lg0KPiArDQo+ICsqKi8NCj4gK0VGSV9ERVZJQ0Vf UEFUSF9QUk9UT0NPTCAqDQo+ICtDb252ZXJ0VGV4dFRvRGV2aWNlUGF0aCAoDQo+ICsgICBDT05T VCBDSEFSMTYgKlRleHREZXZpY2VQYXRoDQo+ICsgKQ0KPiArew0KPiArICByZXR1cm4gVWVmaURl dmljZVBhdGhMaWJDb252ZXJ0VGV4dFRvRGV2aWNlUGF0aCAoVGV4dERldmljZVBhdGgpOw0KPiAr fQ0KPiBkaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9DL0RldmljZVBhdGgvVWVmaURldmlj ZVBhdGhMaWIuaCBiL0Jhc2VUb29scy9Tb3VyY2UvQy9EZXZpY2VQYXRoL1VlZmlEZXZpY2VQYXRo TGliLmgNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMC4uN2JjOTc0ZA0K PiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL0Jhc2VUb29scy9Tb3VyY2UvQy9EZXZpY2VQYXRoL1Vl ZmlEZXZpY2VQYXRoTGliLmgNCj4gQEAgLTAsMCArMSw0NTIgQEANCj4gKy8qKiBAZmlsZQ0KPiAr ICBEZWZpbml0aW9uIGZvciBEZXZpY2UgUGF0aCBsaWJyYXJ5Lg0KPiArDQo+ICtDb3B5cmlnaHQg KGMpIDIwMTcsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4g K1RoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gK2FyZSBsaWNl bnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9m IHRoZSBCU0QgTGljZW5zZQ0KPiArd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24u ICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KPiAraHR0cDov L29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiArDQo+ICtUSEUgUFJP R1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIiBC QVNJUywNCj4gK1dJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJ TkQsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ICsNCj4gKyoqLw0KPiArI2lmbmRlZiBf VUVGSV9ERVZJQ0VfUEFUSF9MSUJfSF8NCj4gKyNkZWZpbmUgX1VFRklfREVWSUNFX1BBVEhfTElC X0hfDQo+ICsNCj4gKyNpbmNsdWRlIDxzdGRpby5oPg0KPiArI2luY2x1ZGUgPHN0ZGxpYi5oPg0K PiArI2luY2x1ZGUgPHN0cmluZy5oPg0KPiArI2luY2x1ZGUgPGN0eXBlLmg+DQo+ICsjaW5jbHVk ZSA8YXNzZXJ0Lmg+DQo+ICsjaWZkZWYgX19HTlVDX18NCj4gKyNpbmNsdWRlIDx1bmlzdGQuaD4N Cj4gKyNlbHNlDQo+ICsjaW5jbHVkZSA8ZGlyZWN0Lmg+DQo+ICsjZW5kaWYNCj4gKyNpbmNsdWRl IDxDb21tb24vVWVmaUJhc2VUeXBlcy5oPg0KPiArI2luY2x1ZGUgPFByb3RvY29sL0RldmljZVBh dGguaD4NCj4gKyNpbmNsdWRlIDxQcm90b2NvbC9EZXZpY2VQYXRoVXRpbGl0aWVzLmg+DQo+ICsj aW5jbHVkZSAiQ29tbW9uTGliLmgiDQo+ICsjaW5jbHVkZSAiRWZpVXRpbGl0eU1zZ3MuaCINCj4g Kw0KPiArI2RlZmluZSBFTkRfREVWSUNFX1BBVEhfTEVOR1RIICAgICAgICAgICAgICAgKHNpemVv ZiAoRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MKSkNCj4gKyNkZWZpbmUgTUFYX0RFVklDRV9QQVRI X05PREVfQ09VTlQgICAxMDI0DQo+ICsjZGVmaW5lIFNJWkVfNjRLQiAgIDB4MDAwMTAwMDANCj4g Kw0KPiArLy8NCj4gKy8vIFByaXZhdGUgRGF0YSBzdHJ1Y3R1cmUNCj4gKy8vDQo+ICt0eXBlZGVm DQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICoNCj4gKygqREVWSUNFX1BBVEhfRlJPTV9U RVhUKSAoDQo+ICsgIElOICBDSEFSMTYgKlN0cg0KPiArICk7DQo+ICsNCj4gK3R5cGVkZWYgc3Ry dWN0IHsNCj4gKyAgQ0hBUjE2ICAqU3RyOw0KPiArICBVSU5UTiAgIENvdW50Ow0KPiArICBVSU5U TiAgIENhcGFjaXR5Ow0KPiArfSBQT09MX1BSSU5UOw0KPiArDQo+ICsNCj4gK3R5cGVkZWYgc3Ry dWN0IHsNCj4gKyAgQ0hBUjE2ICAgICAgICAgICAgICAgICAgICAqRGV2aWNlUGF0aE5vZGVUZXh0 Ow0KPiArICBERVZJQ0VfUEFUSF9GUk9NX1RFWFQgICAgIEZ1bmN0aW9uOw0KPiArfSBERVZJQ0Vf UEFUSF9GUk9NX1RFWFRfVEFCTEU7DQo+ICsNCj4gK3R5cGVkZWYgc3RydWN0IHsNCj4gKyAgQk9P TEVBTiBDbGFzc0V4aXN0Ow0KPiArICBVSU5UOCAgIENsYXNzOw0KPiArICBCT09MRUFOIFN1YkNs YXNzRXhpc3Q7DQo+ICsgIFVJTlQ4ICAgU3ViQ2xhc3M7DQo+ICt9IFVTQl9DTEFTU19URVhUOw0K PiArDQo+ICsjZGVmaW5lIFVTQl9DTEFTU19BVURJTyAgICAgICAgICAgIDENCj4gKyNkZWZpbmUg VVNCX0NMQVNTX0NEQ0NPTlRST0wgICAgICAgMg0KPiArI2RlZmluZSBVU0JfQ0xBU1NfSElEICAg ICAgICAgICAgICAzDQo+ICsjZGVmaW5lIFVTQl9DTEFTU19JTUFHRSAgICAgICAgICAgIDYNCj4g KyNkZWZpbmUgVVNCX0NMQVNTX1BSSU5URVIgICAgICAgICAgNw0KPiArI2RlZmluZSBVU0JfQ0xB U1NfTUFTU19TVE9SQUdFICAgICA4DQo+ICsjZGVmaW5lIFVTQl9DTEFTU19IVUIgICAgICAgICAg ICAgIDkNCj4gKyNkZWZpbmUgVVNCX0NMQVNTX0NEQ0RBVEEgICAgICAgICAgMTANCj4gKyNkZWZp bmUgVVNCX0NMQVNTX1NNQVJUX0NBUkQgICAgICAgMTENCj4gKyNkZWZpbmUgVVNCX0NMQVNTX1ZJ REVPICAgICAgICAgICAgMTQNCj4gKyNkZWZpbmUgVVNCX0NMQVNTX0RJQUdOT1NUSUMgICAgICAg MjIwDQo+ICsjZGVmaW5lIFVTQl9DTEFTU19XSVJFTEVTUyAgICAgICAgIDIyNA0KPiArDQo+ICsj ZGVmaW5lIFVTQl9DTEFTU19SRVNFUlZFICAgICAgICAgIDI1NA0KPiArI2RlZmluZSBVU0JfU1VC Q0xBU1NfRldfVVBEQVRFICAgICAxDQo+ICsjZGVmaW5lIFVTQl9TVUJDTEFTU19JUkRBX0JSSURH RSAgIDINCj4gKyNkZWZpbmUgVVNCX1NVQkNMQVNTX1RFU1QgICAgICAgICAgMw0KPiArDQo+ICsj ZGVmaW5lIFJGQ18xNzAwX1VEUF9QUk9UT0NPTCAgICAgIDE3DQo+ICsjZGVmaW5lIFJGQ18xNzAw X1RDUF9QUk9UT0NPTCAgICAgIDYNCj4gKw0KPiArI3ByYWdtYSBwYWNrKDEpDQo+ICsNCj4gK3R5 cGVkZWYgc3RydWN0IHsNCj4gKyAgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICBIZWFkZXI7DQo+ ICsgIEVGSV9HVUlEICAgICAgICAgICAgICAgICAgR3VpZDsNCj4gKyAgVUlOVDggICAgICAgICAg ICAgICAgICAgICBWZW5kb3JEZWZpbmVkRGF0YVsxXTsNCj4gK30gVkVORE9SX0RFRklORURfSEFS RFdBUkVfREVWSUNFX1BBVEg7DQo+ICsNCj4gK3R5cGVkZWYgc3RydWN0IHsNCj4gKyAgRUZJX0RF VklDRV9QQVRIX1BST1RPQ09MICBIZWFkZXI7DQo+ICsgIEVGSV9HVUlEICAgICAgICAgICAgICAg ICAgR3VpZDsNCj4gKyAgVUlOVDggICAgICAgICAgICAgICAgICAgICBWZW5kb3JEZWZpbmVkRGF0 YVsxXTsNCj4gK30gVkVORE9SX0RFRklORURfTUVTU0FHSU5HX0RFVklDRV9QQVRIOw0KPiArDQo+ ICt0eXBlZGVmIHN0cnVjdCB7DQo+ICsgIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgSGVhZGVy Ow0KPiArICBFRklfR1VJRCAgICAgICAgICAgICAgICAgIEd1aWQ7DQo+ICsgIFVJTlQ4ICAgICAg ICAgICAgICAgICAgICAgVmVuZG9yRGVmaW5lZERhdGFbMV07DQo+ICt9IFZFTkRPUl9ERUZJTkVE X01FRElBX0RFVklDRV9QQVRIOw0KPiArDQo+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ICsgIEVGSV9E RVZJQ0VfUEFUSF9QUk9UT0NPTCAgSGVhZGVyOw0KPiArICBVSU5UMzIgICAgICAgICAgICAgICAg ICAgIEhpZDsNCj4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICBVaWQ7DQo+ICsgIFVJTlQz MiAgICAgICAgICAgICAgICAgICAgQ2lkOw0KPiArICBDSEFSOCAgICAgICAgICAgICAgICAgICAg IEhpZFVpZENpZFN0clszXTsNCj4gK30gQUNQSV9FWFRFTkRFRF9ISURfREVWSUNFX1BBVEhfV0lU SF9TVFI7DQo+ICsNCj4gK3R5cGVkZWYgc3RydWN0IHsNCj4gKyAgRUZJX0RFVklDRV9QQVRIX1BS T1RPQ09MICBIZWFkZXI7DQo+ICsgIFVJTlQxNiAgICAgICAgICAgICAgICAgICAgTmV0d29ya1By b3RvY29sOw0KPiArICBVSU5UMTYgICAgICAgICAgICAgICAgICAgIExvZ2luT3B0aW9uOw0KPiAr ICBVSU5UNjQgICAgICAgICAgICAgICAgICAgIEx1bjsNCj4gKyAgVUlOVDE2ICAgICAgICAgICAg ICAgICAgICBUYXJnZXRQb3J0YWxHcm91cFRhZzsNCj4gKyAgQ0hBUjggICAgICAgICAgICAgICAg ICAgICBUYXJnZXROYW1lWzFdOw0KPiArfSBJU0NTSV9ERVZJQ0VfUEFUSF9XSVRIX05BTUU7DQo+ ICsNCj4gK3R5cGVkZWYgc3RydWN0IHsNCj4gKyAgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICBI ZWFkZXI7DQo+ICsgIEVGSV9HVUlEICAgICAgICAgICAgICAgICAgR3VpZDsNCj4gKyAgVUlOVDgg ICAgICAgICAgICAgICAgICAgICBWZW5kb3JEZWZpbmVkRGF0YVsxXTsNCj4gK30gVkVORE9SX0RF VklDRV9QQVRIX1dJVEhfREFUQTsNCj4gKw0KPiArI3ByYWdtYSBwYWNrKCkNCj4gKw0KPiArLyoq DQo+ICsgIFJldHVybnMgdGhlIHNpemUgb2YgYSBkZXZpY2UgcGF0aCBpbiBieXRlcy4NCj4gKw0K PiArICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHNpemUsIGluIGJ5dGVzLCBvZiB0aGUgZGV2 aWNlIHBhdGggZGF0YSBzdHJ1Y3R1cmUNCj4gKyAgc3BlY2lmaWVkIGJ5IERldmljZVBhdGggaW5j bHVkaW5nIHRoZSBlbmQgb2YgZGV2aWNlIHBhdGggbm9kZS4NCj4gKyAgSWYgRGV2aWNlUGF0aCBp cyBOVUxMIG9yIGludmFsaWQsIHRoZW4gMCBpcyByZXR1cm5lZC4NCj4gKw0KPiArICBAcGFyYW0g IERldmljZVBhdGggIEEgcG9pbnRlciB0byBhIGRldmljZSBwYXRoIGRhdGEgc3RydWN0dXJlLg0K PiArDQo+ICsgIEByZXR2YWwgMCAgICAgICAgICAgSWYgRGV2aWNlUGF0aCBpcyBOVUxMIG9yIGlu dmFsaWQuDQo+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgVGhlIHNpemUgb2YgYSBkZXZpY2UgcGF0 aCBpbiBieXRlcy4NCj4gKw0KPiArKiovDQo+ICtVSU5UTg0KPiArVWVmaURldmljZVBhdGhMaWJH ZXREZXZpY2VQYXRoU2l6ZSAoDQo+ICsgICBDT05TVCBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wg ICpEZXZpY2VQYXRoDQo+ICsgICk7DQo+ICsNCj4gKy8qKg0KPiArICBDcmVhdGVzIGEgbmV3IGNv cHkgb2YgYW4gZXhpc3RpbmcgZGV2aWNlIHBhdGguDQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBh bGxvY2F0ZXMgc3BhY2UgZm9yIGEgbmV3IGNvcHkgb2YgdGhlIGRldmljZSBwYXRoIHNwZWNpZmll ZCBieSBEZXZpY2VQYXRoLg0KPiArICBJZiBEZXZpY2VQYXRoIGlzIE5VTEwsIHRoZW4gTlVMTCBp cyByZXR1cm5lZC4gIElmIHRoZSBtZW1vcnkgaXMgc3VjY2Vzc2Z1bGx5DQo+ICsgIGFsbG9jYXRl ZCwgdGhlbiB0aGUgY29udGVudHMgb2YgRGV2aWNlUGF0aCBhcmUgY29waWVkIHRvIHRoZSBuZXds eSBhbGxvY2F0ZWQNCj4gKyAgYnVmZmVyLCBhbmQgYSBwb2ludGVyIHRvIHRoYXQgYnVmZmVyIGlz IHJldHVybmVkLiAgT3RoZXJ3aXNlLCBOVUxMIGlzIHJldHVybmVkLg0KPiArICBUaGUgbWVtb3J5 IGZvciB0aGUgbmV3IGRldmljZSBwYXRoIGlzIGFsbG9jYXRlZCBmcm9tIEVGSSBib290IHNlcnZp Y2VzIG1lbW9yeS4NCj4gKyAgSXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBjYWxsZXIg dG8gZnJlZSB0aGUgbWVtb3J5IGFsbG9jYXRlZC4NCj4gKw0KPiArICBAcGFyYW0gIERldmljZVBh dGggICAgQSBwb2ludGVyIHRvIGEgZGV2aWNlIHBhdGggZGF0YSBzdHJ1Y3R1cmUuDQo+ICsNCj4g KyAgQHJldHZhbCBOVUxMICAgICAgICAgIERldmljZVBhdGggaXMgTlVMTCBvciBpbnZhbGlkLg0K PiArICBAcmV0dmFsIE90aGVycyAgICAgICAgQSBwb2ludGVyIHRvIHRoZSBkdXBsaWNhdGVkIGRl dmljZSBwYXRoLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqDQo+ ICtVZWZpRGV2aWNlUGF0aExpYkR1cGxpY2F0ZURldmljZVBhdGggKA0KPiArICAgQ09OU1QgRUZJ X0RFVklDRV9QQVRIX1BST1RPQ09MICAqRGV2aWNlUGF0aA0KPiArICApOw0KPiArDQo+ICsvKioN Cj4gKyAgQ3JlYXRlcyBhIG5ldyBkZXZpY2UgcGF0aCBieSBhcHBlbmRpbmcgYSBzZWNvbmQgZGV2 aWNlIHBhdGggdG8gYSBmaXJzdCBkZXZpY2UgcGF0aC4NCj4gKw0KPiArICBUaGlzIGZ1bmN0aW9u IGNyZWF0ZXMgYSBuZXcgZGV2aWNlIHBhdGggYnkgYXBwZW5kaW5nIGEgY29weSBvZiBTZWNvbmRE ZXZpY2VQYXRoDQo+ICsgIHRvIGEgY29weSBvZiBGaXJzdERldmljZVBhdGggaW4gYSBuZXdseSBh bGxvY2F0ZWQgYnVmZmVyLiAgT25seSB0aGUgZW5kLW9mLWRldmljZS1wYXRoDQo+ICsgIGRldmlj ZSBub2RlIGZyb20gU2Vjb25kRGV2aWNlUGF0aCBpcyByZXRhaW5lZC4gVGhlIG5ld2x5IGNyZWF0 ZWQgZGV2aWNlIHBhdGggaXMNCj4gKyAgcmV0dXJuZWQuIElmIEZpcnN0RGV2aWNlUGF0aCBpcyBO VUxMLCB0aGVuIGl0IGlzIGlnbm9yZWQsIGFuZCBhIGR1cGxpY2F0ZSBvZg0KPiArICBTZWNvbmRE ZXZpY2VQYXRoIGlzIHJldHVybmVkLiAgSWYgU2Vjb25kRGV2aWNlUGF0aCBpcyBOVUxMLCB0aGVu IGl0IGlzIGlnbm9yZWQsDQo+ICsgIGFuZCBhIGR1cGxpY2F0ZSBvZiBGaXJzdERldmljZVBhdGgg aXMgcmV0dXJuZWQuIElmIGJvdGggRmlyc3REZXZpY2VQYXRoIGFuZA0KPiArICBTZWNvbmREZXZp Y2VQYXRoIGFyZSBOVUxMLCB0aGVuIGEgY29weSBvZiBhbiBlbmQtb2YtZGV2aWNlLXBhdGggaXMg cmV0dXJuZWQuDQo+ICsNCj4gKyAgSWYgdGhlcmUgaXMgbm90IGVub3VnaCBtZW1vcnkgZm9yIHRo ZSBuZXdseSBhbGxvY2F0ZWQgYnVmZmVyLCB0aGVuIE5VTEwgaXMgcmV0dXJuZWQuDQo+ICsgIFRo ZSBtZW1vcnkgZm9yIHRoZSBuZXcgZGV2aWNlIHBhdGggaXMgYWxsb2NhdGVkIGZyb20gRUZJIGJv b3Qgc2VydmljZXMgbWVtb3J5Lg0KPiArICBJdCBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhl IGNhbGxlciB0byBmcmVlIHRoZSBtZW1vcnkgYWxsb2NhdGVkLg0KPiArDQo+ICsgIEBwYXJhbSAg Rmlyc3REZXZpY2VQYXRoICAgICAgICAgICAgQSBwb2ludGVyIHRvIGEgZGV2aWNlIHBhdGggZGF0 YSBzdHJ1Y3R1cmUuDQo+ICsgIEBwYXJhbSAgU2Vjb25kRGV2aWNlUGF0aCAgICAgICAgICAgQSBw b2ludGVyIHRvIGEgZGV2aWNlIHBhdGggZGF0YSBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyAgQHJldHZh bCBOVUxMICAgICAgSWYgdGhlcmUgaXMgbm90IGVub3VnaCBtZW1vcnkgZm9yIHRoZSBuZXdseSBh bGxvY2F0ZWQgYnVmZmVyLg0KPiArICBAcmV0dmFsIE5VTEwgICAgICBJZiBGaXJzdERldmljZVBh dGggb3IgU2Vjb25kRGV2aWNlUGF0aCBpcyBpbnZhbGlkLg0KPiArICBAcmV0dmFsIE90aGVycyAg ICBBIHBvaW50ZXIgdG8gdGhlIG5ldyBkZXZpY2UgcGF0aCBpZiBzdWNjZXNzLg0KPiArICAgICAg ICAgICAgICAgICAgICBPciBhIGNvcHkgYW4gZW5kLW9mLWRldmljZS1wYXRoIGlmIGJvdGggRmly c3REZXZpY2VQYXRoIGFuZCBTZWNvbmREZXZpY2VQYXRoIGFyZSBOVUxMLg0KPiArDQo+ICsqKi8N Cj4gK0VGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqDQo+ICtVZWZpRGV2aWNlUGF0aExpYkFwcGVu ZERldmljZVBhdGggKA0KPiArICAgQ09OU1QgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICAqRmly c3REZXZpY2VQYXRoLCAgT1BUSU9OQUwNCj4gKyAgIENPTlNUIEVGSV9ERVZJQ0VfUEFUSF9QUk9U T0NPTCAgKlNlY29uZERldmljZVBhdGggIE9QVElPTkFMDQo+ICsgICk7DQo+ICsNCj4gKy8qKg0K PiArICBDcmVhdGVzIGEgbmV3IHBhdGggYnkgYXBwZW5kaW5nIHRoZSBkZXZpY2Ugbm9kZSB0byB0 aGUgZGV2aWNlIHBhdGguDQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBjcmVhdGVzIGEgbmV3IGRl dmljZSBwYXRoIGJ5IGFwcGVuZGluZyBhIGNvcHkgb2YgdGhlIGRldmljZSBub2RlDQo+ICsgIHNw ZWNpZmllZCBieSBEZXZpY2VQYXRoTm9kZSB0byBhIGNvcHkgb2YgdGhlIGRldmljZSBwYXRoIHNw ZWNpZmllZCBieSBEZXZpY2VQYXRoDQo+ICsgIGluIGFuIGFsbG9jYXRlZCBidWZmZXIuIFRoZSBl bmQtb2YtZGV2aWNlLXBhdGggZGV2aWNlIG5vZGUgaXMgbW92ZWQgYWZ0ZXIgdGhlDQo+ICsgIGVu ZCBvZiB0aGUgYXBwZW5kZWQgZGV2aWNlIG5vZGUuDQo+ICsgIElmIERldmljZVBhdGhOb2RlIGlz IE5VTEwgdGhlbiBhIGNvcHkgb2YgRGV2aWNlUGF0aCBpcyByZXR1cm5lZC4NCj4gKyAgSWYgRGV2 aWNlUGF0aCBpcyBOVUxMIHRoZW4gYSBjb3B5IG9mIERldmljZVBhdGhOb2RlLCBmb2xsb3dlZCBi eSBhbiBlbmQtb2YtZGV2aWNlDQo+ICsgIHBhdGggZGV2aWNlIG5vZGUgaXMgcmV0dXJuZWQuDQo+ ICsgIElmIGJvdGggRGV2aWNlUGF0aE5vZGUgYW5kIERldmljZVBhdGggYXJlIE5VTEwgdGhlbiBh IGNvcHkgb2YgYW4gZW5kLW9mLWRldmljZS1wYXRoDQo+ICsgIGRldmljZSBub2RlIGlzIHJldHVy bmVkLg0KPiArICBJZiB0aGVyZSBpcyBub3QgZW5vdWdoIG1lbW9yeSB0byBhbGxvY2F0ZSBzcGFj ZSBmb3IgdGhlIG5ldyBkZXZpY2UgcGF0aCwgdGhlbg0KPiArICBOVUxMIGlzIHJldHVybmVkLg0K PiArICBUaGUgbWVtb3J5IGlzIGFsbG9jYXRlZCBmcm9tIEVGSSBib290IHNlcnZpY2VzIG1lbW9y eS4gSXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5DQo+ICsgIG9mIHRoZSBjYWxsZXIgdG8gZnJlZSB0 aGUgbWVtb3J5IGFsbG9jYXRlZC4NCj4gKw0KPiArICBAcGFyYW0gIERldmljZVBhdGggICAgICAg ICAgICAgICAgIEEgcG9pbnRlciB0byBhIGRldmljZSBwYXRoIGRhdGEgc3RydWN0dXJlLg0KPiAr ICBAcGFyYW0gIERldmljZVBhdGhOb2RlICAgICAgICAgICAgIEEgcG9pbnRlciB0byBhIHNpbmds ZSBkZXZpY2UgcGF0aCBub2RlLg0KPiArDQo+ICsgIEByZXR2YWwgTlVMTCAgICAgIElmIHRoZXJl IGlzIG5vdCBlbm91Z2ggbWVtb3J5IGZvciB0aGUgbmV3IGRldmljZSBwYXRoLg0KPiArICBAcmV0 dmFsIE90aGVycyAgICBBIHBvaW50ZXIgdG8gdGhlIG5ldyBkZXZpY2UgcGF0aCBpZiBzdWNjZXNz Lg0KPiArICAgICAgICAgICAgICAgICAgICBBIGNvcHkgb2YgRGV2aWNlUGF0aE5vZGUgZm9sbG93 ZWQgYnkgYW4gZW5kLW9mLWRldmljZS1wYXRoIG5vZGUNCj4gKyAgICAgICAgICAgICAgICAgICAg aWYgYm90aCBGaXJzdERldmljZVBhdGggYW5kIFNlY29uZERldmljZVBhdGggYXJlIE5VTEwuDQo+ ICsgICAgICAgICAgICAgICAgICAgIEEgY29weSBvZiBhbiBlbmQtb2YtZGV2aWNlLXBhdGggbm9k ZSBpZiBib3RoIEZpcnN0RGV2aWNlUGF0aA0KPiArICAgICAgICAgICAgICAgICAgICBhbmQgU2Vj b25kRGV2aWNlUGF0aCBhcmUgTlVMTC4NCj4gKw0KPiArKiovDQo+ICtFRklfREVWSUNFX1BBVEhf UFJPVE9DT0wgKg0KPiArVWVmaURldmljZVBhdGhMaWJBcHBlbmREZXZpY2VQYXRoTm9kZSAoDQo+ ICsgICBDT05TVCBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICpEZXZpY2VQYXRoLCAgICAgT1BU SU9OQUwNCj4gKyAgIENPTlNUIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgKkRldmljZVBhdGhO b2RlICBPUFRJT05BTA0KPiArICApOw0KPiArDQo+ICsvKioNCj4gKyAgQ3JlYXRlcyBhIG5ldyBk ZXZpY2UgcGF0aCBieSBhcHBlbmRpbmcgdGhlIHNwZWNpZmllZCBkZXZpY2UgcGF0aCBpbnN0YW5j ZSB0byB0aGUgc3BlY2lmaWVkIGRldmljZQ0KPiArICBwYXRoLg0KPiArDQo+ICsgIFRoaXMgZnVu Y3Rpb24gY3JlYXRlcyBhIG5ldyBkZXZpY2UgcGF0aCBieSBhcHBlbmRpbmcgYSBjb3B5IG9mIHRo ZSBkZXZpY2UgcGF0aA0KPiArICBpbnN0YW5jZSBzcGVjaWZpZWQgYnkgRGV2aWNlUGF0aEluc3Rh bmNlIHRvIGEgY29weSBvZiB0aGUgZGV2aWNlIHBhdGggc3BlY2lmaWVkDQo+ICsgIGJ5IERldmlj ZVBhdGggaW4gYSBhbGxvY2F0ZWQgYnVmZmVyLg0KPiArICBUaGUgZW5kLW9mLWRldmljZS1wYXRo IGRldmljZSBub2RlIGlzIG1vdmVkIGFmdGVyIHRoZSBlbmQgb2YgdGhlIGFwcGVuZGVkIGRldmlj ZQ0KPiArICBwYXRoIGluc3RhbmNlIGFuZCBhIG5ldyBlbmQtb2YtZGV2aWNlLXBhdGgtaW5zdGFu Y2Ugbm9kZSBpcyBpbnNlcnRlZCBiZXR3ZWVuLg0KPiArICBJZiBEZXZpY2VQYXRoIGlzIE5VTEws IHRoZW4gYSBjb3B5IGlmIERldmljZVBhdGhJbnN0YW5jZSBpcyByZXR1cm5lZC4NCj4gKyAgSWYg RGV2aWNlUGF0aEluc3RhbmNlIGlzIE5VTEwsIHRoZW4gTlVMTCBpcyByZXR1cm5lZC4NCj4gKyAg SWYgRGV2aWNlUGF0aCBvciBEZXZpY2VQYXRoSW5zdGFuY2UgaXMgaW52YWxpZCwgdGhlbiBOVUxM IGlzIHJldHVybmVkLg0KPiArICBJZiB0aGVyZSBpcyBub3QgZW5vdWdoIG1lbW9yeSB0byBhbGxv Y2F0ZSBzcGFjZSBmb3IgdGhlIG5ldyBkZXZpY2UgcGF0aCwgdGhlbg0KPiArICBOVUxMIGlzIHJl dHVybmVkLg0KPiArICBUaGUgbWVtb3J5IGlzIGFsbG9jYXRlZCBmcm9tIEVGSSBib290IHNlcnZp Y2VzIG1lbW9yeS4gSXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5DQo+ICsgIG9mIHRoZSBjYWxsZXIg dG8gZnJlZSB0aGUgbWVtb3J5IGFsbG9jYXRlZC4NCj4gKw0KPiArICBAcGFyYW0gIERldmljZVBh dGggICAgICAgICAgICAgICAgIEEgcG9pbnRlciB0byBhIGRldmljZSBwYXRoIGRhdGEgc3RydWN0 dXJlLg0KPiArICBAcGFyYW0gIERldmljZVBhdGhJbnN0YW5jZSAgICAgICAgIEEgcG9pbnRlciB0 byBhIGRldmljZSBwYXRoIGluc3RhbmNlLg0KPiArDQo+ICsgIEByZXR1cm4gQSBwb2ludGVyIHRv IHRoZSBuZXcgZGV2aWNlIHBhdGguDQo+ICsNCj4gKyoqLw0KPiArRUZJX0RFVklDRV9QQVRIX1BS T1RPQ09MICoNCj4gK1VlZmlEZXZpY2VQYXRoTGliQXBwZW5kRGV2aWNlUGF0aEluc3RhbmNlICgN Cj4gKyAgIENPTlNUIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgKkRldmljZVBhdGgsICAgICAg ICBPUFRJT05BTA0KPiArICAgQ09OU1QgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICAqRGV2aWNl UGF0aEluc3RhbmNlIE9QVElPTkFMDQo+ICsgICk7DQo+ICsNCj4gKy8qKg0KPiArICBDcmVhdGVz IGEgY29weSBvZiB0aGUgY3VycmVudCBkZXZpY2UgcGF0aCBpbnN0YW5jZSBhbmQgcmV0dXJucyBh IHBvaW50ZXIgdG8gdGhlIG5leHQgZGV2aWNlIHBhdGgNCj4gKyAgaW5zdGFuY2UuDQo+ICsNCj4g KyAgVGhpcyBmdW5jdGlvbiBjcmVhdGVzIGEgY29weSBvZiB0aGUgY3VycmVudCBkZXZpY2UgcGF0 aCBpbnN0YW5jZS4gSXQgYWxzbyB1cGRhdGVzDQo+ICsgIERldmljZVBhdGggdG8gcG9pbnQgdG8g dGhlIG5leHQgZGV2aWNlIHBhdGggaW5zdGFuY2UgaW4gdGhlIGRldmljZSBwYXRoIChvciBOVUxM DQo+ICsgIGlmIG5vIG1vcmUpIGFuZCB1cGRhdGVzIFNpemUgdG8gaG9sZCB0aGUgc2l6ZSBvZiB0 aGUgZGV2aWNlIHBhdGggaW5zdGFuY2UgY29weS4NCj4gKyAgSWYgRGV2aWNlUGF0aCBpcyBOVUxM LCB0aGVuIE5VTEwgaXMgcmV0dXJuZWQuDQo+ICsgIElmIERldmljZVBhdGggcG9pbnRzIHRvIGEg aW52YWxpZCBkZXZpY2UgcGF0aCwgdGhlbiBOVUxMIGlzIHJldHVybmVkLg0KPiArICBJZiB0aGVy ZSBpcyBub3QgZW5vdWdoIG1lbW9yeSB0byBhbGxvY2F0ZSBzcGFjZSBmb3IgdGhlIG5ldyBkZXZp Y2UgcGF0aCwgdGhlbg0KPiArICBOVUxMIGlzIHJldHVybmVkLg0KPiArICBUaGUgbWVtb3J5IGlz IGFsbG9jYXRlZCBmcm9tIEVGSSBib290IHNlcnZpY2VzIG1lbW9yeS4gSXQgaXMgdGhlIHJlc3Bv bnNpYmlsaXR5DQo+ICsgIG9mIHRoZSBjYWxsZXIgdG8gZnJlZSB0aGUgbWVtb3J5IGFsbG9jYXRl ZC4NCj4gKyAgSWYgU2l6ZSBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiArDQo+ICsgIEBwYXJh bSAgRGV2aWNlUGF0aCAgICAgICAgICAgICAgICAgT24gaW5wdXQsIHRoaXMgaG9sZHMgdGhlIHBv aW50ZXIgdG8gdGhlIGN1cnJlbnQNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkZXZpY2UgcGF0aCBpbnN0YW5jZS4gT24gb3V0cHV0LCB0aGlzIGhvbGRzDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHBvaW50ZXIgdG8gdGhlIG5leHQg ZGV2aWNlIHBhdGggaW5zdGFuY2UNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBvciBOVUxMIGlmIHRoZXJlIGFyZSBubyBtb3JlIGRldmljZSBwYXRoDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2VzIGluIHRoZSBkZXZpY2UgcGF0 aCBwb2ludGVyIHRvIGENCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk ZXZpY2UgcGF0aCBkYXRhIHN0cnVjdHVyZS4NCj4gKyAgQHBhcmFtICBTaXplICAgICAgICAgICAg ICAgICAgICAgICBPbiBvdXRwdXQsIHRoaXMgaG9sZHMgdGhlIHNpemUgb2YgdGhlIGRldmljZQ0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGggaW5zdGFuY2UsIGlu IGJ5dGVzIG9yIHplcm8sIGlmIERldmljZVBhdGgNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpcyBOVUxMLg0KPiArDQo+ICsgIEByZXR1cm4gQSBwb2ludGVyIHRvIHRo ZSBjdXJyZW50IGRldmljZSBwYXRoIGluc3RhbmNlLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9ERVZJ Q0VfUEFUSF9QUk9UT0NPTCAqDQo+ICtVZWZpRGV2aWNlUGF0aExpYkdldE5leHREZXZpY2VQYXRo SW5zdGFuY2UgKA0KPiArICAgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICAgICoqRGV2aWNlUGF0 aCwNCj4gKyAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAqU2l6ZQ0KPiArICApOw0K PiArDQo+ICsvKioNCj4gKyAgQ3JlYXRlcyBhIGRldmljZSBub2RlLg0KPiArDQo+ICsgIFRoaXMg ZnVuY3Rpb24gY3JlYXRlcyBhIG5ldyBkZXZpY2Ugbm9kZSBpbiBhIG5ld2x5IGFsbG9jYXRlZCBi dWZmZXIgb2Ygc2l6ZQ0KPiArICBOb2RlTGVuZ3RoIGFuZCBpbml0aWFsaXplcyB0aGUgZGV2aWNl IHBhdGggbm9kZSBoZWFkZXIgd2l0aCBOb2RlVHlwZSBhbmQgTm9kZVN1YlR5cGUuDQo+ICsgIFRo ZSBuZXcgZGV2aWNlIHBhdGggbm9kZSBpcyByZXR1cm5lZC4NCj4gKyAgSWYgTm9kZUxlbmd0aCBp cyBzbWFsbGVyIHRoYW4gYSBkZXZpY2UgcGF0aCBoZWFkZXIsIHRoZW4gTlVMTCBpcyByZXR1cm5l ZC4NCj4gKyAgSWYgdGhlcmUgaXMgbm90IGVub3VnaCBtZW1vcnkgdG8gYWxsb2NhdGUgc3BhY2Ug Zm9yIHRoZSBuZXcgZGV2aWNlIHBhdGgsIHRoZW4NCj4gKyAgTlVMTCBpcyByZXR1cm5lZC4NCj4g KyAgVGhlIG1lbW9yeSBpcyBhbGxvY2F0ZWQgZnJvbSBFRkkgYm9vdCBzZXJ2aWNlcyBtZW1vcnku IEl0IGlzIHRoZSByZXNwb25zaWJpbGl0eQ0KPiArICBvZiB0aGUgY2FsbGVyIHRvIGZyZWUgdGhl IG1lbW9yeSBhbGxvY2F0ZWQuDQo+ICsNCj4gKyAgQHBhcmFtICBOb2RlVHlwZSAgICAgICAgICAg ICAgICAgICBUaGUgZGV2aWNlIG5vZGUgdHlwZSBmb3IgdGhlIG5ldyBkZXZpY2Ugbm9kZS4NCj4g KyAgQHBhcmFtICBOb2RlU3ViVHlwZSAgICAgICAgICAgICAgICBUaGUgZGV2aWNlIG5vZGUgc3Vi LXR5cGUgZm9yIHRoZSBuZXcgZGV2aWNlIG5vZGUuDQo+ICsgIEBwYXJhbSAgTm9kZUxlbmd0aCAg ICAgICAgICAgICAgICAgVGhlIGxlbmd0aCBvZiB0aGUgbmV3IGRldmljZSBub2RlLg0KPiArDQo+ ICsgIEByZXR1cm4gVGhlIG5ldyBkZXZpY2UgcGF0aC4NCj4gKw0KPiArKiovDQo+ICtFRklfREVW SUNFX1BBVEhfUFJPVE9DT0wgKg0KPiArVWVmaURldmljZVBhdGhMaWJDcmVhdGVEZXZpY2VOb2Rl ICgNCj4gKyAgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9kZVR5cGUsDQo+ICsg ICBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vZGVTdWJUeXBlLA0KPiArICAgVUlO VDE2ICAgICAgICAgICAgICAgICAgICAgICAgICBOb2RlTGVuZ3RoDQo+ICsgICk7DQo+ICsNCj4g Ky8qKg0KPiArICBEZXRlcm1pbmVzIGlmIGEgZGV2aWNlIHBhdGggaXMgc2luZ2xlIG9yIG11bHRp LWluc3RhbmNlLg0KPiArDQo+ICsgIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBUUlVFIGlmIHRoZSBk ZXZpY2UgcGF0aCBzcGVjaWZpZWQgYnkgRGV2aWNlUGF0aCBpcw0KPiArICBtdWx0aS1pbnN0YW5j ZS4NCj4gKyAgT3RoZXJ3aXNlLCBGQUxTRSBpcyByZXR1cm5lZC4NCj4gKyAgSWYgRGV2aWNlUGF0 aCBpcyBOVUxMIG9yIGludmFsaWQsIHRoZW4gRkFMU0UgaXMgcmV0dXJuZWQuDQo+ICsNCj4gKyAg QHBhcmFtICBEZXZpY2VQYXRoICAgICAgICAgICAgICAgICBBIHBvaW50ZXIgdG8gYSBkZXZpY2Ug cGF0aCBkYXRhIHN0cnVjdHVyZS4NCj4gKw0KPiArICBAcmV0dmFsICBUUlVFICAgICAgICAgICAg ICAgICAgICAgIERldmljZVBhdGggaXMgbXVsdGktaW5zdGFuY2UuDQo+ICsgIEByZXR2YWwgIEZB TFNFICAgICAgICAgICAgICAgICAgICAgRGV2aWNlUGF0aCBpcyBub3QgbXVsdGktaW5zdGFuY2Us IG9yIERldmljZVBhdGgNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp cyBOVUxMIG9yIGludmFsaWQuDQo+ICsNCj4gKyoqLw0KPiArQk9PTEVBTg0KPiArVWVmaURldmlj ZVBhdGhMaWJJc0RldmljZVBhdGhNdWx0aUluc3RhbmNlICgNCj4gKyAgIENPTlNUIEVGSV9ERVZJ Q0VfUEFUSF9QUk9UT0NPTCAgKkRldmljZVBhdGgNCj4gKyAgKTsNCj4gKw0KPiArLyoqDQo+ICsg IENvbnZlcnQgdGV4dCB0byB0aGUgYmluYXJ5IHJlcHJlc2VudGF0aW9uIG9mIGEgZGV2aWNlIG5v ZGUuDQo+ICsNCj4gKyAgQHBhcmFtIFRleHREZXZpY2VOb2RlICBUZXh0RGV2aWNlTm9kZSBwb2lu dHMgdG8gdGhlIHRleHQgcmVwcmVzZW50YXRpb24gb2YgYSBkZXZpY2UNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICBub2RlLiBDb252ZXJzaW9uIHN0YXJ0cyB3aXRoIHRoZSBmaXJzdCBjaGFy YWN0ZXIgYW5kIGNvbnRpbnVlcw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgIHVudGlsIHRo ZSBmaXJzdCBub24tZGV2aWNlIG5vZGUgY2hhcmFjdGVyLg0KPiArDQo+ICsgIEByZXR1cm4gQSBw b2ludGVyIHRvIHRoZSBFRkkgZGV2aWNlIG5vZGUgb3IgTlVMTCBpZiBUZXh0RGV2aWNlTm9kZSBp cyBOVUxMIG9yIHRoZXJlIHdhcw0KPiArICAgICAgICAgIGluc3VmZmljaWVudCBtZW1vcnkgb3Ig dGV4dCB1bnN1cHBvcnRlZC4NCj4gKw0KPiArKiovDQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9D T0wgKg0KPiArVWVmaURldmljZVBhdGhMaWJDb252ZXJ0VGV4dFRvRGV2aWNlTm9kZSAoDQo+ICsg ICBDT05TVCBDSEFSMTYgKlRleHREZXZpY2VOb2RlDQo+ICsgICk7DQo+ICsNCj4gKy8qKg0KPiAr ICBDb252ZXJ0IHRleHQgdG8gdGhlIGJpbmFyeSByZXByZXNlbnRhdGlvbiBvZiBhIGRldmljZSBw YXRoLg0KPiArDQo+ICsNCj4gKyAgQHBhcmFtIFRleHREZXZpY2VQYXRoICBUZXh0RGV2aWNlUGF0 aCBwb2ludHMgdG8gdGhlIHRleHQgcmVwcmVzZW50YXRpb24gb2YgYSBkZXZpY2UNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICBwYXRoLiBDb252ZXJzaW9uIHN0YXJ0cyB3aXRoIHRoZSBmaXJz dCBjaGFyYWN0ZXIgYW5kIGNvbnRpbnVlcw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgIHVu dGlsIHRoZSBmaXJzdCBub24tZGV2aWNlIG5vZGUgY2hhcmFjdGVyLg0KPiArDQo+ICsgIEByZXR1 cm4gQSBwb2ludGVyIHRvIHRoZSBhbGxvY2F0ZWQgZGV2aWNlIHBhdGggb3IgTlVMTCBpZiBUZXh0 RGV2aWNlTm9kZSBpcyBOVUxMIG9yDQo+ICsgICAgICAgICAgdGhlcmUgd2FzIGluc3VmZmljaWVu dCBtZW1vcnkuDQo+ICsNCj4gKyoqLw0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoNCj4g K1VlZmlEZXZpY2VQYXRoTGliQ29udmVydFRleHRUb0RldmljZVBhdGggKA0KPiArICAgQ09OU1Qg Q0hBUjE2ICpUZXh0RGV2aWNlUGF0aA0KPiArICApOw0KPiArDQo+ICtFRklfREVWSUNFX1BBVEhf UFJPVE9DT0wgKg0KPiArQ3JlYXRlRGV2aWNlTm9kZSAoDQo+ICsgICBVSU5UOCAgICAgICAgICAg ICAgICAgICAgICAgICAgIE5vZGVUeXBlLA0KPiArICAgVUlOVDggICAgICAgICAgICAgICAgICAg ICAgICAgICBOb2RlU3ViVHlwZSwNCj4gKyAgIFVJTlQxNiAgICAgICAgICAgICAgICAgICAgICAg ICAgTm9kZUxlbmd0aA0KPiArICApOw0KPiArDQo+ICsgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09M ICoNCj4gK0NyZWF0ZURldmljZU5vZGUgKA0KPiArICAgVUlOVDggICAgICAgICAgICAgICAgICAg ICAgICAgICBOb2RlVHlwZSwNCj4gKyAgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAg Tm9kZVN1YlR5cGUsDQo+ICsgICBVSU5UMTYgICAgICAgICAgICAgICAgICAgICAgICAgIE5vZGVM ZW5ndGgNCj4gKyAgKTsNCj4gKw0KPiArQk9PTEVBTg0KPiArSXNEZXZpY2VQYXRoTXVsdGlJbnN0 YW5jZSAoDQo+ICsgICBDT05TVCBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICpEZXZpY2VQYXRo DQo+ICsgICk7DQo+ICsNCj4gK0VGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqDQo+ICtHZXROZXh0 RGV2aWNlUGF0aEluc3RhbmNlICgNCj4gKyAgICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICAg KipEZXZpY2VQYXRoLA0KPiArICAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICpTaXpl DQo+ICsgICk7DQo+ICsNCj4gK0VGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqDQo+ICtBcHBlbmRE ZXZpY2VQYXRoSW5zdGFuY2UgKA0KPiArICAgQ09OU1QgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09M ICAqRGV2aWNlUGF0aCwgICAgICAgIE9QVElPTkFMDQo+ICsgICBDT05TVCBFRklfREVWSUNFX1BB VEhfUFJPVE9DT0wgICpEZXZpY2VQYXRoSW5zdGFuY2UgT1BUSU9OQUwNCj4gKyAgKTsNCj4gKw0K PiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoNCj4gK0FwcGVuZERldmljZVBhdGhOb2RlICgN Cj4gKyAgIENPTlNUIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgKkRldmljZVBhdGgsICAgICBP UFRJT05BTA0KPiArICAgQ09OU1QgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICAqRGV2aWNlUGF0 aE5vZGUgIE9QVElPTkFMDQo+ICsgICk7DQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0K PiArQXBwZW5kRGV2aWNlUGF0aCAoDQo+ICsgICBDT05TVCBFRklfREVWSUNFX1BBVEhfUFJPVE9D T0wgICpGaXJzdERldmljZVBhdGgsICBPUFRJT05BTA0KPiArICAgQ09OU1QgRUZJX0RFVklDRV9Q QVRIX1BST1RPQ09MICAqU2Vjb25kRGV2aWNlUGF0aCAgT1BUSU9OQUwNCj4gKyAgKTsNCj4gKw0K PiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoNCj4gK0R1cGxpY2F0ZURldmljZVBhdGggKA0K PiArICAgQ09OU1QgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICAqRGV2aWNlUGF0aA0KPiArICAp Ow0KPiArDQo+ICtVSU5UTg0KPiArR2V0RGV2aWNlUGF0aFNpemUgKA0KPiArICAgQ09OU1QgRUZJ X0RFVklDRV9QQVRIX1BST1RPQ09MICAqRGV2aWNlUGF0aA0KPiArICApOw0KPiArDQo+ICtDSEFS MTYgKg0KPiArQ29udmVydERldmljZU5vZGVUb1RleHQgKA0KPiArICAgQ09OU1QgRUZJX0RFVklD RV9QQVRIX1BST1RPQ09MICAqRGV2aWNlTm9kZSwNCj4gKyAgIEJPT0xFQU4gICAgICAgICAgICAg ICAgICAgICAgICAgRGlzcGxheU9ubHksDQo+ICsgICBCT09MRUFOICAgICAgICAgICAgICAgICAg ICAgICAgIEFsbG93U2hvcnRjdXRzDQo+ICsgICk7DQo+ICsNCj4gK0NIQVIxNiAqDQo+ICtDb252 ZXJ0RGV2aWNlUGF0aFRvVGV4dCAoDQo+ICsgICBDT05TVCBFRklfREVWSUNFX1BBVEhfUFJPVE9D T0wgICAqRGV2aWNlUGF0aCwNCj4gKyAgIEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICAg IERpc3BsYXlPbmx5LA0KPiArICAgQk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgICAgQWxs b3dTaG9ydGN1dHMNCj4gKyAgKTsNCj4gKw0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoN Cj4gK0NvbnZlcnRUZXh0VG9EZXZpY2VOb2RlICgNCj4gKyAgIENPTlNUIENIQVIxNiAqVGV4dERl dmljZU5vZGUNCj4gKyAgKTsNCj4gKw0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoNCj4g K0NvbnZlcnRUZXh0VG9EZXZpY2VQYXRoICgNCj4gKyAgIENPTlNUIENIQVIxNiAqVGV4dERldmlj ZVBhdGgNCj4gKyAgKTsNCj4gKw0KPiArI2VuZGlmDQo+IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMv U291cmNlL0MvR05VbWFrZWZpbGUgYi9CYXNlVG9vbHMvU291cmNlL0MvR05VbWFrZWZpbGUNCj4g aW5kZXggMGRjNzQ4Mi4uMzc0MjFhZCAxMDA2NDQNCj4gLS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9D L0dOVW1ha2VmaWxlDQo+ICsrKyBiL0Jhc2VUb29scy9Tb3VyY2UvQy9HTlVtYWtlZmlsZQ0KPiBA QCAtNjUsMTEgKzY1LDEyIEBAIEFQUExJQ0FUSU9OUyA9IFwNCj4gICAgR2VuQ3JjMzIgXA0KPiAg ICBHZW5WdGYgXA0KPiAgICBMem1hQ29tcHJlc3MgXA0KPiAgICBTcGxpdCBcDQo+ICAgIFRpYW5v Q29tcHJlc3MgXA0KPiAtICBWb2xJbmZvDQo+ICsgIFZvbEluZm8gXA0KPiArICBEZXZpY2VQYXRo DQo+DQo+ICBTVUJESVJTIDo9ICQoTElCUkFSSUVTKSAkKEFQUExJQ0FUSU9OUykNCj4NCj4gICQo TElCUkFSSUVTKTogJChNQUtFUk9PVCkvbGlicw0KPiAgJChBUFBMSUNBVElPTlMpOiAkKExJQlJB UklFUykgJChNQUtFUk9PVCkvYmluICQoVkZSQVVUT0dFTikNCj4gZGlmZiAtLWdpdCBhL0Jhc2VU b29scy9Tb3VyY2UvQy9JbmNsdWRlL0luZHVzdHJ5U3RhbmRhcmQvQmx1ZXRvb3RoLmggYi9CYXNl VG9vbHMvU291cmNlL0MvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL0JsdWV0b290aC5oDQo+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAuLmQ2ZTZkNzUNCj4gLS0tIC9kZXYv bnVsbA0KPiArKysgYi9CYXNlVG9vbHMvU291cmNlL0MvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJk L0JsdWV0b290aC5oDQo+IEBAIC0wLDAgKzEsNjIgQEANCj4gKy8qKiBAZmlsZQ0KPiArICBUaGlz IGZpbGUgY29udGFpbnMgdGhlIEJsdWV0b290aCBkZWZpbml0aW9ucyB0aGF0IGFyZSBjb25zdW1l ZCBieSBkcml2ZXJzLg0KPiArICBUaGVzZSBkZWZpbml0aW9ucyBhcmUgZnJvbSBCbHVldG9vdGgg Q29yZSBTcGVjaWZpY2F0aW9uIFZlcnNpb24gNC4wIEp1bmUsIDIwMTANCj4gKw0KPiArICBDb3B5 cmlnaHQgKGMpIDIwMTcsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxC Uj4NCj4gKyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiAr ICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29u ZGl0aW9ucyBvZiB0aGUgQlNEIExpY2Vuc2UNCj4gKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBk aXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBh dA0KPiArICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ ICsNCj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNF IE9OIEFOICJBUyBJUyIgQkFTSVMsDQo+ICsgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNF TlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ICsNCj4g KyoqLw0KPiArDQo+ICsjaWZuZGVmIF9CTFVFVE9PVEhfSF8NCj4gKyNkZWZpbmUgX0JMVUVUT09U SF9IXw0KPiArDQo+ICsjcHJhZ21hIHBhY2soMSkNCj4gKw0KPiArLy8vDQo+ICsvLy8gQkxVRVRP T1RIX0FERFJFU1MNCj4gKy8vLw0KPiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiArICAvLy8NCj4gKyAg Ly8vIDQ4Yml0IEJsdWV0b290aCBkZXZpY2UgYWRkcmVzcy4NCj4gKyAgLy8vDQo+ICsgIFVJTlQ4 ICAgICAgQWRkcmVzc1s2XTsNCj4gK30gQkxVRVRPT1RIX0FERFJFU1M7DQo+ICsNCj4gKy8vLw0K PiArLy8vIEJMVUVUT09USF9DTEFTU19PRl9ERVZJQ0UuIFNlZSBCbHVldG9vdGggc3BlY2lmaWNh dGlvbiBmb3IgZGV0YWlsLg0KPiArLy8vDQo+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ICsgIFVJTlQ4 ICAgICAgRm9ybWF0VHlwZToyOw0KPiArICBVSU5UOCAgICAgIE1pbm9yRGV2aWNlQ2xhc3M6IDY7 DQo+ICsgIFVJTlQxNiAgICAgTWFqb3JEZXZpY2VDbGFzczogNTsNCj4gKyAgVUlOVDE2ICAgICBN YWpvclNlcnZpY2VDbGFzczoxMTsNCj4gK30gQkxVRVRPT1RIX0NMQVNTX09GX0RFVklDRTsNCj4g Kw0KPiArLy8vDQo+ICsvLy8gQkxVRVRPT1RIX0xFX0FERFJFU1MNCj4gKy8vLw0KPiArdHlwZWRl ZiBzdHJ1Y3Qgew0KPiArICAvLy8NCj4gKyAgLy8vIDQ4LWJpdCBCbHVldG9vdGggZGV2aWNlIGFk ZHJlc3MNCj4gKyAgLy8vDQo+ICsgIFVJTlQ4ICAgICAgQWRkcmVzc1s2XTsNCj4gKyAgLy8vDQo+ ICsgIC8vLyAweDAwIC0gUHVibGljIERldmljZSBBZGRyZXNzDQo+ICsgIC8vLyAweDAxIC0gUmFu ZG9tIERldmljZSBBZGRyZXNzDQo+ICsgIC8vLw0KPiArICBVSU5UOCAgICAgIFR5cGU7DQo+ICt9 IEJMVUVUT09USF9MRV9BRERSRVNTOw0KPiArDQo+ICsjcHJhZ21hIHBhY2soKQ0KPiArDQo+ICsj ZGVmaW5lIEJMVUVUT09USF9IQ0lfQ09NTUFORF9MT0NBTF9SRUFEQUJMRV9OQU1FX01BWF9TSVpF ICAgIDI0OA0KPiArDQo+ICsjZGVmaW5lIEJMVUVUT09USF9IQ0lfTElOS19LRVlfU0laRSAgICAg ICAgICAgICAgICAgICAgICAgICAgIDE2DQo+ICsNCj4gKyNlbmRpZg0KPiBkaWZmIC0tZ2l0IGEv QmFzZVRvb2xzL1NvdXJjZS9DL0luY2x1ZGUvUHJvdG9jb2wvRGV2aWNlUGF0aC5oIGIvQmFzZVRv b2xzL1NvdXJjZS9DL0luY2x1ZGUvUHJvdG9jb2wvRGV2aWNlUGF0aC5oDQo+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAuLmE1ZDhlZWENCj4gLS0tIC9kZXYvbnVsbA0KPiAr KysgYi9CYXNlVG9vbHMvU291cmNlL0MvSW5jbHVkZS9Qcm90b2NvbC9EZXZpY2VQYXRoLmgNCj4g QEAgLTAsMCArMSwxMzkxIEBADQo+ICsvKiogQGZpbGUNCj4gKyAgVGhlIGRldmljZSBwYXRoIHBy b3RvY29sIGFzIGRlZmluZWQgaW4gVUVGSSAyLjAuDQo+ICsNCj4gKyAgVGhlIGRldmljZSBwYXRo IHJlcHJlc2VudHMgYSBwcm9ncmFtbWF0aWMgcGF0aCB0byBhIGRldmljZSwNCj4gKyAgZnJvbSBh IHNvZnR3YXJlIHBvaW50IG9mIHZpZXcuIFRoZSBwYXRoIG11c3QgcGVyc2lzdCBmcm9tIGJvb3Qg dG8gYm9vdCwgc28NCj4gKyAgaXQgY2FuIG5vdCBjb250YWluIHRoaW5ncyBsaWtlIFBDSSBidXMg bnVtYmVycyB0aGF0IGNoYW5nZSBmcm9tIGJvb3QgdG8gYm9vdC4NCj4gKw0KPiArQ29weXJpZ2h0 IChjKSAyMDE3LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ ICtUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBsaWNlbnNl ZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXINCj4gK3RoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBv ZiB0aGUgQlNEIExpY2Vuc2UgdGhhdCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4NCj4g K1RoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlIGZvdW5kIGF0DQo+ICtodHRwOi8v b3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwLg0KPiArDQo+ICtUSEUgUFJP R1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIiBC QVNJUywNCj4gK1dJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJ TkQsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ICsNCj4gKyoqLw0KPiArDQo+ICsjaWZu ZGVmIF9fRUZJX0RFVklDRV9QQVRIX0hfXw0KPiArI2RlZmluZSBfX0VGSV9ERVZJQ0VfUEFUSF9I X18NCj4gKw0KPiArI2luY2x1ZGUgPEd1aWQvUGNBbnNpLmg+DQo+ICsjaW5jbHVkZSA8SW5kdXN0 cnlTdGFuZGFyZC9BY3BpM18wLmg+DQo+ICsjaW5jbHVkZSA8SW5kdXN0cnlTdGFuZGFyZC9CbHVl dG9vdGguaD4NCj4gKw0KPiArLy8vDQo+ICsvLy8gRGV2aWNlIFBhdGggcHJvdG9jb2wuDQo+ICsv Ly8NCj4gKyNkZWZpbmUgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MX0dVSUQgXA0KPiArICB7IFwN Cj4gKyAgICAweDk1NzZlOTEsIDB4NmQzZiwgMHgxMWQyLCB7MHg4ZSwgMHgzOSwgMHgwLCAweGEw LCAweGM5LCAweDY5LCAweDcyLCAweDNiIH0gXA0KPiArICB9DQo+ICsNCj4gKy8vLw0KPiArLy8v IERldmljZSBQYXRoIGd1aWQgZGVmaW5pdGlvbiBmb3IgYmFja3dhcmQtY29tcGF0aWJsZSB3aXRo IEVGSTEuMS4NCj4gKy8vLw0KPiArI2RlZmluZSBERVZJQ0VfUEFUSF9QUk9UT0NPTCAgRUZJX0RF VklDRV9QQVRIX1BST1RPQ09MX0dVSUQNCj4gKw0KPiArI3ByYWdtYSBwYWNrKDEpDQo+ICsNCj4g Ky8qKg0KPiArICBUaGlzIHByb3RvY29sIGNhbiBiZSB1c2VkIG9uIGFueSBkZXZpY2UgaGFuZGxl IHRvIG9idGFpbiBnZW5lcmljIHBhdGgvbG9jYXRpb24NCj4gKyAgaW5mb3JtYXRpb24gY29uY2Vy bmluZyB0aGUgcGh5c2ljYWwgZGV2aWNlIG9yIGxvZ2ljYWwgZGV2aWNlLiBJZiB0aGUgaGFuZGxl IGRvZXMNCj4gKyAgbm90IGxvZ2ljYWxseSBtYXAgdG8gYSBwaHlzaWNhbCBkZXZpY2UsIHRoZSBo YW5kbGUgbWF5IG5vdCBuZWNlc3NhcmlseSBzdXBwb3J0DQo+ICsgIHRoZSBkZXZpY2UgcGF0aCBw cm90b2NvbC4gVGhlIGRldmljZSBwYXRoIGRlc2NyaWJlcyB0aGUgbG9jYXRpb24gb2YgdGhlIGRl dmljZQ0KPiArICB0aGUgaGFuZGxlIGlzIGZvci4gVGhlIHNpemUgb2YgdGhlIERldmljZSBQYXRo IGNhbiBiZSBkZXRlcm1pbmVkIGZyb20gdGhlIHN0cnVjdHVyZXMNCj4gKyAgdGhhdCBtYWtlIHVw IHRoZSBEZXZpY2UgUGF0aC4NCj4gKyoqLw0KPiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiArICBVSU5U OCBUeXBlOyAgICAgICAvLy88IDB4MDEgSGFyZHdhcmUgRGV2aWNlIFBhdGguDQo+ICsgICAgICAg ICAgICAgICAgICAgIC8vLzwgMHgwMiBBQ1BJIERldmljZSBQYXRoLg0KPiArICAgICAgICAgICAg ICAgICAgICAvLy88IDB4MDMgTWVzc2FnaW5nIERldmljZSBQYXRoLg0KPiArICAgICAgICAgICAg ICAgICAgICAvLy88IDB4MDQgTWVkaWEgRGV2aWNlIFBhdGguDQo+ICsgICAgICAgICAgICAgICAg ICAgIC8vLzwgMHgwNSBCSU9TIEJvb3QgU3BlY2lmaWNhdGlvbiBEZXZpY2UgUGF0aC4NCj4gKyAg ICAgICAgICAgICAgICAgICAgLy8vPCAweDdGIEVuZCBvZiBIYXJkd2FyZSBEZXZpY2UgUGF0aC4N Cj4gKw0KPiArICBVSU5UOCBTdWJUeXBlOyAgICAvLy88IFZhcmllcyBieSBUeXBlDQo+ICsgICAg ICAgICAgICAgICAgICAgIC8vLzwgMHhGRiBFbmQgRW50aXJlIERldmljZSBQYXRoLCBvcg0KPiAr ICAgICAgICAgICAgICAgICAgICAvLy88IDB4MDEgRW5kIFRoaXMgSW5zdGFuY2Ugb2YgYSBEZXZp Y2UgUGF0aCBhbmQgc3RhcnQgYSBuZXcNCj4gKyAgICAgICAgICAgICAgICAgICAgLy8vPCBEZXZp Y2UgUGF0aC4NCj4gKw0KPiArICBVSU5UOCBMZW5ndGhbMl07ICAvLy88IFNwZWNpZmljIERldmlj ZSBQYXRoIGRhdGEuIFR5cGUgYW5kIFN1Yi1UeXBlIGRlZmluZQ0KPiArICAgICAgICAgICAgICAg ICAgICAvLy88IHR5cGUgb2YgZGF0YS4gU2l6ZSBvZiBkYXRhIGlzIGluY2x1ZGVkIGluIExlbmd0 aC4NCj4gKw0KPiArfSBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0w7DQo+ICsNCj4gKy8vLw0KPiAr Ly8vIERldmljZSBQYXRoIHByb3RvY29sIGRlZmluaXRpb24gZm9yIGJhY2t3YXJkLWNvbXBhdGli bGUgd2l0aCBFRkkxLjEuDQo+ICsvLy8NCj4gK3R5cGVkZWYgRUZJX0RFVklDRV9QQVRIX1BST1RP Q09MICBFRklfREVWSUNFX1BBVEg7DQo+ICsNCj4gKy8vLw0KPiArLy8vIEhhcmR3YXJlIERldmlj ZSBQYXRocy4NCj4gKy8vLw0KPiArI2RlZmluZSBIQVJEV0FSRV9ERVZJQ0VfUEFUSCAgICAgIDB4 MDENCj4gKw0KPiArLy8vDQo+ICsvLy8gUENJIERldmljZSBQYXRoIFN1YlR5cGUuDQo+ICsvLy8N Cj4gKyNkZWZpbmUgSFdfUENJX0RQICAgICAgICAgICAgICAgICAweDAxDQo+ICsNCj4gKy8vLw0K PiArLy8vIFBDSSBEZXZpY2UgUGF0aC4NCj4gKy8vLw0KPiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiAr ICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICAgICAgIEhlYWRlcjsNCj4gKyAgLy8vDQo+ICsg IC8vLyBQQ0kgRnVuY3Rpb24gTnVtYmVyLg0KPiArICAvLy8NCj4gKyAgVUlOVDggICAgICAgICAg ICAgICAgICAgICAgICAgICBGdW5jdGlvbjsNCj4gKyAgLy8vDQo+ICsgIC8vLyBQQ0kgRGV2aWNl IE51bWJlci4NCj4gKyAgLy8vDQo+ICsgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAg RGV2aWNlOw0KPiArfSBQQ0lfREVWSUNFX1BBVEg7DQo+ICsNCj4gKy8vLw0KPiArLy8vIFBDQ0FS RCBEZXZpY2UgUGF0aCBTdWJUeXBlLg0KPiArLy8vDQo+ICsjZGVmaW5lIEhXX1BDQ0FSRF9EUCAg ICAgICAgICAgICAgMHgwMg0KPiArDQo+ICsvLy8NCj4gKy8vLyBQQ0NBUkQgRGV2aWNlIFBhdGgu DQo+ICsvLy8NCj4gK3R5cGVkZWYgc3RydWN0IHsNCj4gKyAgRUZJX0RFVklDRV9QQVRIX1BST1RP Q09MICAgICAgICBIZWFkZXI7DQo+ICsgIC8vLw0KPiArICAvLy8gRnVuY3Rpb24gTnVtYmVyICgw ID0gRmlyc3QgRnVuY3Rpb24pLg0KPiArICAvLy8NCj4gKyAgVUlOVDggICAgICAgICAgICAgICAg ICAgICAgICAgICBGdW5jdGlvbk51bWJlcjsNCj4gK30gUENDQVJEX0RFVklDRV9QQVRIOw0KPiAr DQo+ICsvLy8NCj4gKy8vLyBNZW1vcnkgTWFwcGVkIERldmljZSBQYXRoIFN1YlR5cGUuDQo+ICsv Ly8NCj4gKyNkZWZpbmUgSFdfTUVNTUFQX0RQICAgICAgICAgICAgIDB4MDMNCj4gKw0KPiArLy8v DQo+ICsvLy8gTWVtb3J5IE1hcHBlZCBEZXZpY2UgUGF0aC4NCj4gKy8vLw0KPiArdHlwZWRlZiBz dHJ1Y3Qgew0KPiArICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICAgICAgIEhlYWRlcjsNCj4g KyAgLy8vDQo+ICsgIC8vLyBFRklfTUVNT1JZX1RZUEUNCj4gKyAgLy8vDQo+ICsgIFVJTlQzMiAg ICAgICAgICAgICAgICAgICAgICAgICAgTWVtb3J5VHlwZTsNCj4gKyAgLy8vDQo+ICsgIC8vLyBT dGFydGluZyBNZW1vcnkgQWRkcmVzcy4NCj4gKyAgLy8vDQo+ICsgIEVGSV9QSFlTSUNBTF9BRERS RVNTICAgICAgICAgICAgU3RhcnRpbmdBZGRyZXNzOw0KPiArICAvLy8NCj4gKyAgLy8vIEVuZGlu ZyBNZW1vcnkgQWRkcmVzcy4NCj4gKyAgLy8vDQo+ICsgIEVGSV9QSFlTSUNBTF9BRERSRVNTICAg ICAgICAgICAgRW5kaW5nQWRkcmVzczsNCj4gK30gTUVNTUFQX0RFVklDRV9QQVRIOw0KPiArDQo+ ICsvLy8NCj4gKy8vLyBIYXJkd2FyZSBWZW5kb3IgRGV2aWNlIFBhdGggU3ViVHlwZS4NCj4gKy8v Lw0KPiArI2RlZmluZSBIV19WRU5ET1JfRFAgICAgICAgICAgICAgIDB4MDQNCj4gKw0KPiArLy8v DQo+ICsvLy8gVGhlIFZlbmRvciBEZXZpY2UgUGF0aCBhbGxvd3MgdGhlIGNyZWF0aW9uIG9mIHZl bmRvci1kZWZpbmVkIERldmljZSBQYXRocy4gQSB2ZW5kb3IgbXVzdA0KPiArLy8vIGFsbG9jYXRl IGEgVmVuZG9yIEdVSUQgZm9yIGEgRGV2aWNlIFBhdGguIFRoZSBWZW5kb3IgR1VJRCBjYW4gdGhl biBiZSB1c2VkIHRvIGRlZmluZSB0aGUNCj4gKy8vLyBjb250ZW50cyBvbiB0aGUgbiBieXRlcyB0 aGF0IGZvbGxvdyBpbiB0aGUgVmVuZG9yIERldmljZSBQYXRoIG5vZGUuDQo+ICsvLy8NCj4gK3R5 cGVkZWYgc3RydWN0IHsNCj4gKyAgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICAgICAgICBIZWFk ZXI7DQo+ICsgIC8vLw0KPiArICAvLy8gVmVuZG9yLWFzc2lnbmVkIEdVSUQgdGhhdCBkZWZpbmVz IHRoZSBkYXRhIHRoYXQgZm9sbG93cy4NCj4gKyAgLy8vDQo+ICsgIEVGSV9HVUlEICAgICAgICAg ICAgICAgICAgICAgICAgR3VpZDsNCj4gKyAgLy8vDQo+ICsgIC8vLyBWZW5kb3ItZGVmaW5lZCB2 YXJpYWJsZSBzaXplIGRhdGEuDQo+ICsgIC8vLw0KPiArfSBWRU5ET1JfREVWSUNFX1BBVEg7DQo+ ICsNCj4gKy8vLw0KPiArLy8vIENvbnRyb2xsZXIgRGV2aWNlIFBhdGggU3ViVHlwZS4NCj4gKy8v Lw0KPiArI2RlZmluZSBIV19DT05UUk9MTEVSX0RQICAgICAgICAgIDB4MDUNCj4gKw0KPiArLy8v DQo+ICsvLy8gQ29udHJvbGxlciBEZXZpY2UgUGF0aC4NCj4gKy8vLw0KPiArdHlwZWRlZiBzdHJ1 Y3Qgew0KPiArICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICAgICAgIEhlYWRlcjsNCj4gKyAg Ly8vDQo+ICsgIC8vLyBDb250cm9sbGVyIG51bWJlci4NCj4gKyAgLy8vDQo+ICsgIFVJTlQzMiAg ICAgICAgICAgICAgICAgICAgICAgICAgQ29udHJvbGxlck51bWJlcjsNCj4gK30gQ09OVFJPTExF Ul9ERVZJQ0VfUEFUSDsNCj4gKw0KPiArLy8vDQo+ICsvLy8gQk1DIERldmljZSBQYXRoIFN1YlR5 cGUuDQo+ICsvLy8NCj4gKyNkZWZpbmUgSFdfQk1DX0RQICAgICAgICAgICAgICAgICAweDA2DQo+ ICsNCj4gKy8vLw0KPiArLy8vIEJNQyBEZXZpY2UgUGF0aC4NCj4gKy8vLw0KPiArdHlwZWRlZiBz dHJ1Y3Qgew0KPiArICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICAgICAgIEhlYWRlcjsNCj4g KyAgLy8vDQo+ICsgIC8vLyBJbnRlcmZhY2UgVHlwZS4NCj4gKyAgLy8vDQo+ICsgIFVJTlQ4ICAg ICAgICAgICAgICAgICAgICAgICAgICAgSW50ZXJmYWNlVHlwZTsNCj4gKyAgLy8vDQo+ICsgIC8v LyBCYXNlIEFkZHJlc3MuDQo+ICsgIC8vLw0KPiArICBVSU5UOCAgICAgICAgICAgICAgICAgICAg ICAgICAgIEJhc2VBZGRyZXNzWzhdOw0KPiArfSBCTUNfREVWSUNFX1BBVEg7DQo+ICsNCj4gKy8v Lw0KPiArLy8vIEFDUEkgRGV2aWNlIFBhdGhzLg0KPiArLy8vDQo+ICsjZGVmaW5lIEFDUElfREVW SUNFX1BBVEggICAgICAgICAgMHgwMg0KPiArDQo+ICsvLy8NCj4gKy8vLyBBQ1BJIERldmljZSBQ YXRoIFN1YlR5cGUuDQo+ICsvLy8NCj4gKyNkZWZpbmUgQUNQSV9EUCAgICAgICAgICAgICAgICAg ICAweDAxDQo+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ICsgIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NP TCAgICAgICAgSGVhZGVyOw0KPiArICAvLy8NCj4gKyAgLy8vIERldmljZSdzIFBuUCBoYXJkd2Fy ZSBJRCBzdG9yZWQgaW4gYSBudW1lcmljIDMyLWJpdA0KPiArICAvLy8gY29tcHJlc3NlZCBFSVNB LXR5cGUgSUQuIFRoaXMgdmFsdWUgbXVzdCBtYXRjaCB0aGUNCj4gKyAgLy8vIGNvcnJlc3BvbmRp bmcgX0hJRCBpbiB0aGUgQUNQSSBuYW1lIHNwYWNlLg0KPiArICAvLy8NCj4gKyAgVUlOVDMyICAg ICAgICAgICAgICAgICAgICAgICAgICBISUQ7DQo+ICsgIC8vLw0KPiArICAvLy8gVW5pcXVlIElE IHRoYXQgaXMgcmVxdWlyZWQgYnkgQUNQSSBpZiB0d28gZGV2aWNlcyBoYXZlIHRoZQ0KPiArICAv Ly8gc2FtZSBfSElELiBUaGlzIHZhbHVlIG11c3QgYWxzbyBtYXRjaCB0aGUgY29ycmVzcG9uZGlu Zw0KPiArICAvLy8gX1VJRC9fSElEIHBhaXIgaW4gdGhlIEFDUEkgbmFtZSBzcGFjZS4gT25seSB0 aGUgMzItYml0DQo+ICsgIC8vLyBudW1lcmljIHZhbHVlIHR5cGUgb2YgX1VJRCBpcyBzdXBwb3J0 ZWQuIFRodXMsIHN0cmluZ3MgbXVzdA0KPiArICAvLy8gbm90IGJlIHVzZWQgZm9yIHRoZSBfVUlE IGluIHRoZSBBQ1BJIG5hbWUgc3BhY2UuDQo+ICsgIC8vLw0KPiArICBVSU5UMzIgICAgICAgICAg ICAgICAgICAgICAgICAgIFVJRDsNCj4gK30gQUNQSV9ISURfREVWSUNFX1BBVEg7DQo+ICsNCj4g Ky8vLw0KPiArLy8vIEV4cGFuZGVkIEFDUEkgRGV2aWNlIFBhdGggU3ViVHlwZS4NCj4gKy8vLw0K PiArI2RlZmluZSBBQ1BJX0VYVEVOREVEX0RQICAgICAgICAgIDB4MDINCj4gK3R5cGVkZWYgc3Ry dWN0IHsNCj4gKyAgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICAgICAgICBIZWFkZXI7DQo+ICsg IC8vLw0KPiArICAvLy8gRGV2aWNlJ3MgUG5QIGhhcmR3YXJlIElEIHN0b3JlZCBpbiBhIG51bWVy aWMgMzItYml0DQo+ICsgIC8vLyBjb21wcmVzc2VkIEVJU0EtdHlwZSBJRC4gVGhpcyB2YWx1ZSBt dXN0IG1hdGNoIHRoZQ0KPiArICAvLy8gY29ycmVzcG9uZGluZyBfSElEIGluIHRoZSBBQ1BJIG5h bWUgc3BhY2UuDQo+ICsgIC8vLw0KPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAg IEhJRDsNCj4gKyAgLy8vDQo+ICsgIC8vLyBVbmlxdWUgSUQgdGhhdCBpcyByZXF1aXJlZCBieSBB Q1BJIGlmIHR3byBkZXZpY2VzIGhhdmUgdGhlDQo+ICsgIC8vLyBzYW1lIF9ISUQuIFRoaXMgdmFs dWUgbXVzdCBhbHNvIG1hdGNoIHRoZSBjb3JyZXNwb25kaW5nDQo+ICsgIC8vLyBfVUlEL19ISUQg cGFpciBpbiB0aGUgQUNQSSBuYW1lIHNwYWNlLg0KPiArICAvLy8NCj4gKyAgVUlOVDMyICAgICAg ICAgICAgICAgICAgICAgICAgICBVSUQ7DQo+ICsgIC8vLw0KPiArICAvLy8gRGV2aWNlJ3MgY29t cGF0aWJsZSBQblAgaGFyZHdhcmUgSUQgc3RvcmVkIGluIGEgbnVtZXJpYw0KPiArICAvLy8gMzIt Yml0IGNvbXByZXNzZWQgRUlTQS10eXBlIElELiBUaGlzIHZhbHVlIG11c3QgbWF0Y2ggYXQNCj4g KyAgLy8vIGxlYXN0IG9uZSBvZiB0aGUgY29tcGF0aWJsZSBkZXZpY2UgSURzIHJldHVybmVkIGJ5 IHRoZQ0KPiArICAvLy8gY29ycmVzcG9uZGluZyBfQ0lEIGluIHRoZSBBQ1BJIG5hbWUgc3BhY2Uu DQo+ICsgIC8vLw0KPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgIENJRDsNCj4g KyAgLy8vDQo+ICsgIC8vLyBPcHRpb25hbCB2YXJpYWJsZSBsZW5ndGggX0hJRFNUUi4NCj4gKyAg Ly8vIE9wdGlvbmFsIHZhcmlhYmxlIGxlbmd0aCBfVUlEU1RSLg0KPiArICAvLy8gT3B0aW9uYWwg dmFyaWFibGUgbGVuZ3RoIF9DSURTVFIuDQo+ICsgIC8vLw0KPiArfSBBQ1BJX0VYVEVOREVEX0hJ RF9ERVZJQ0VfUEFUSDsNCj4gKw0KPiArLy8NCj4gKy8vICBFSVNBIElEIE1hY3JvDQo+ICsvLyAg RUlTQSBJRCBEZWZpbml0aW9uIDMyLWJpdHMNCj4gKy8vICAgYml0c1sxNTowXSAtIHRocmVlIGNo YXJhY3RlciBjb21wcmVzc2VkIEFTQ0lJIEVJU0EgSUQuDQo+ICsvLyAgIGJpdHNbMzE6MTZdIC0g YmluYXJ5IG51bWJlcg0KPiArLy8gICAgQ29tcHJlc3NlZCBBU0NJSSBpcyA1IGJpdHMgcGVyIGNo YXJhY3RlciAwYjAwMDAxID0gJ0EnIDBiMTEwMTAgPSAnWicNCj4gKy8vDQo+ICsjZGVmaW5lIFBO UF9FSVNBX0lEX0NPTlNUICAgICAgICAgMHg0MWQwDQo+ICsjZGVmaW5lIEVJU0FfSUQoX05hbWUs IF9OdW0pICAgICAgKChVSU5UMzIpKChfTmFtZSkgfCAoX051bSkgPDwgMTYpKQ0KPiArI2RlZmlu ZSBFSVNBX1BOUF9JRChfUE5QSWQpICAgICAgIChFSVNBX0lEKFBOUF9FSVNBX0lEX0NPTlNULCAo X1BOUElkKSkpDQo+ICsjZGVmaW5lIEVGSV9QTlBfSUQoX1BOUElkKSAgICAgICAgKEVJU0FfSUQo UE5QX0VJU0FfSURfQ09OU1QsIChfUE5QSWQpKSkNCj4gKw0KPiArI2RlZmluZSBQTlBfRUlTQV9J RF9NQVNLICAgICAgICAgIDB4ZmZmZg0KPiArI2RlZmluZSBFSVNBX0lEX1RPX05VTShfSWQpICAg ICAgICgoX0lkKSA+PiAxNikNCj4gKw0KPiArLy8vDQo+ICsvLy8gQUNQSSBfQURSIERldmljZSBQ YXRoIFN1YlR5cGUuDQo+ICsvLy8NCj4gKyNkZWZpbmUgQUNQSV9BRFJfRFAgICAgICAgICAgICAg ICAweDAzDQo+ICsNCj4gKy8vLw0KPiArLy8vIFRoZSBfQURSIGRldmljZSBwYXRoIGlzIHVzZWQg dG8gY29udGFpbiB2aWRlbyBvdXRwdXQgZGV2aWNlIGF0dHJpYnV0ZXMgdG8gc3VwcG9ydCB0aGUg R3JhcGhpY3MNCj4gKy8vLyBPdXRwdXQgUHJvdG9jb2wuIFRoZSBkZXZpY2UgcGF0aCBjYW4gY29u dGFpbiBtdWx0aXBsZSBfQURSIGVudHJpZXMgaWYgbXVsdGlwbGUgdmlkZW8gb3V0cHV0DQo+ICsv Ly8gZGV2aWNlcyBhcmUgZGlzcGxheWluZyB0aGUgc2FtZSBvdXRwdXQuDQo+ICsvLy8NCj4gK3R5 cGVkZWYgc3RydWN0IHsNCj4gKyAgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICAgICAgICBIZWFk ZXI7DQo+ICsgIC8vLw0KPiArICAvLy8gX0FEUiB2YWx1ZS4gRm9yIHZpZGVvIG91dHB1dCBkZXZp Y2VzIHRoZSB2YWx1ZSBvZiB0aGlzDQo+ICsgIC8vLyBmaWVsZCBjb21lcyBmcm9tIFRhYmxlIEIt MiBvZiB0aGUgQUNQSSAzLjAgc3BlY2lmaWNhdGlvbi4gQXQNCj4gKyAgLy8vIGxlYXN0IG9uZSBf QURSIHZhbHVlIGlzIHJlcXVpcmVkLg0KPiArICAvLy8NCj4gKyAgVUlOVDMyICAgICAgICAgICAg ICAgICAgICAgICAgICBBRFI7DQo+ICsgIC8vDQo+ICsgIC8vIFRoaXMgZGV2aWNlIHBhdGggbWF5 IG9wdGlvbmFsbHkgY29udGFpbiBtb3JlIHRoYW4gb25lIF9BRFIgZW50cnkuDQo+ICsgIC8vDQo+ ICt9IEFDUElfQURSX0RFVklDRV9QQVRIOw0KPiArDQo+ICsjZGVmaW5lIEFDUElfQURSX0RJU1BM QVlfVFlQRV9PVEhFUiAgICAgICAgICAgICAwDQo+ICsjZGVmaW5lIEFDUElfQURSX0RJU1BMQVlf VFlQRV9WR0EgICAgICAgICAgICAgICAxDQo+ICsjZGVmaW5lIEFDUElfQURSX0RJU1BMQVlfVFlQ RV9UViAgICAgICAgICAgICAgICAyDQo+ICsjZGVmaW5lIEFDUElfQURSX0RJU1BMQVlfVFlQRV9F WFRFUk5BTF9ESUdJVEFMICAzDQo+ICsjZGVmaW5lIEFDUElfQURSX0RJU1BMQVlfVFlQRV9JTlRF Uk5BTF9ESUdJVEFMICA0DQo+ICsNCj4gKyNkZWZpbmUgQUNQSV9ESVNQTEFZX0FEUihfRGV2aWNl SWRTY2hlbWUsIF9IZWFkSWQsIF9Ob25WZ2FPdXRwdXQsIF9CaW9zQ2FuRGV0ZWN0LCBfVmVuZG9y SW5mbywgX1R5cGUsIF9Qb3J0LCBfSW5kZXgpIFwNCj4gKyAgICAgICAgICAoKFVJTlQzMikoICAo KFVJTlQzMikoKF9EZXZpY2VJZFNjaGVtZSkgJiAweDEpIDw8IDMxKSB8ICBcDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgKCgoX0hlYWRJZCkgICAgICAgICAgICAgICAgICYgMHg3KSA8PCAxOCkg fCAgXA0KPiArICAgICAgICAgICAgICAgICAgICAgICgoKF9Ob25WZ2FPdXRwdXQpICAgICAgICAg ICAmIDB4MSkgPDwgMTcpIHwgIFwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAoKChfQmlvc0Nh bkRldGVjdCkgICAgICAgICAgJiAweDEpIDw8IDE2KSB8ICBcDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgKCgoX1ZlbmRvckluZm8pICAgICAgICAgICAgICYgMHhmKSA8PCAxMikgfCAgXA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICgoKF9UeXBlKSAgICAgICAgICAgICAgICAgICAmIDB4Zikg PDwgOCkgIHwgIFwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAoKChfUG9ydCkgICAgICAgICAg ICAgICAgICAgJiAweGYpIDw8IDQpICB8ICBcDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICgo X0luZGV4KSAgICAgICAgICAgICAgICAgICYgMHhmKSApKQ0KPiArDQo+ICsvLy8NCj4gKy8vLyBN ZXNzYWdpbmcgRGV2aWNlIFBhdGhzLg0KPiArLy8vIFRoaXMgRGV2aWNlIFBhdGggaXMgdXNlZCB0 byBkZXNjcmliZSB0aGUgY29ubmVjdGlvbiBvZiBkZXZpY2VzIG91dHNpZGUgdGhlIHJlc291cmNl IGRvbWFpbiBvZiB0aGUNCj4gKy8vLyBzeXN0ZW0uIFRoaXMgRGV2aWNlIFBhdGggY2FuIGRlc2Ny aWJlIHBoeXNpY2FsIG1lc3NhZ2luZyBpbmZvcm1hdGlvbiBsaWtlIFNDU0kgSUQsIG9yIGFic3Ry YWN0DQo+ICsvLy8gaW5mb3JtYXRpb24gbGlrZSBuZXR3b3JraW5nIHByb3RvY29sIElQIGFkZHJl c3Nlcy4NCj4gKy8vLw0KPiArI2RlZmluZSBNRVNTQUdJTkdfREVWSUNFX1BBVEggICAgIDB4MDMN Cj4gKw0KPiArLy8vDQo+ICsvLy8gQVRBUEkgRGV2aWNlIFBhdGggU3ViVHlwZQ0KPiArLy8vDQo+ ICsjZGVmaW5lIE1TR19BVEFQSV9EUCAgICAgICAgICAgICAgMHgwMQ0KPiArdHlwZWRlZiBzdHJ1 Y3Qgew0KPiArICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICAgICAgIEhlYWRlcjsNCj4gKyAg Ly8vDQo+ICsgIC8vLyBTZXQgdG8gemVybyBmb3IgcHJpbWFyeSwgb3Igb25lIGZvciBzZWNvbmRh cnkuDQo+ICsgIC8vLw0KPiArICBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW1h cnlTZWNvbmRhcnk7DQo+ICsgIC8vLw0KPiArICAvLy8gU2V0IHRvIHplcm8gZm9yIG1hc3Rlciwg b3Igb25lIGZvciBzbGF2ZSBtb2RlLg0KPiArICAvLy8NCj4gKyAgVUlOVDggICAgICAgICAgICAg ICAgICAgICAgICAgICBTbGF2ZU1hc3RlcjsNCj4gKyAgLy8vDQo+ICsgIC8vLyBMb2dpY2FsIFVu aXQgTnVtYmVyLg0KPiArICAvLy8NCj4gKyAgVUlOVDE2ICAgICAgICAgICAgICAgICAgICAgICAg ICBMdW47DQo+ICt9IEFUQVBJX0RFVklDRV9QQVRIOw0KPiArDQo+ICsvLy8NCj4gKy8vLyBTQ1NJ IERldmljZSBQYXRoIFN1YlR5cGUuDQo+ICsvLy8NCj4gKyNkZWZpbmUgTVNHX1NDU0lfRFAgICAg ICAgICAgICAgICAweDAyDQo+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ICsgIEVGSV9ERVZJQ0VfUEFU SF9QUk9UT0NPTCAgICAgICAgSGVhZGVyOw0KPiArICAvLy8NCj4gKyAgLy8vIFRhcmdldCBJRCBv biB0aGUgU0NTSSBidXMgKFBVTikuDQo+ICsgIC8vLw0KPiArICBVSU5UMTYgICAgICAgICAgICAg ICAgICAgICAgICAgIFB1bjsNCj4gKyAgLy8vDQo+ICsgIC8vLyBMb2dpY2FsIFVuaXQgTnVtYmVy IChMVU4pLg0KPiArICAvLy8NCj4gKyAgVUlOVDE2ICAgICAgICAgICAgICAgICAgICAgICAgICBM dW47DQo+ICt9IFNDU0lfREVWSUNFX1BBVEg7DQo+ICsNCj4gKy8vLw0KPiArLy8vIEZpYnJlIENo YW5uZWwgU3ViVHlwZS4NCj4gKy8vLw0KPiArI2RlZmluZSBNU0dfRklCUkVDSEFOTkVMX0RQICAg ICAgIDB4MDMNCj4gK3R5cGVkZWYgc3RydWN0IHsNCj4gKyAgRUZJX0RFVklDRV9QQVRIX1BST1RP Q09MICAgICAgICBIZWFkZXI7DQo+ICsgIC8vLw0KPiArICAvLy8gUmVzZXJ2ZWQgZm9yIHRoZSBm dXR1cmUuDQo+ICsgIC8vLw0KPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgIFJl c2VydmVkOw0KPiArICAvLy8NCj4gKyAgLy8vIEZpYnJlIENoYW5uZWwgV29ybGQgV2lkZSBOdW1i ZXIuDQo+ICsgIC8vLw0KPiArICBVSU5UNjQgICAgICAgICAgICAgICAgICAgICAgICAgIFdXTjsN Cj4gKyAgLy8vDQo+ICsgIC8vLyBGaWJyZSBDaGFubmVsIExvZ2ljYWwgVW5pdCBOdW1iZXIuDQo+ ICsgIC8vLw0KPiArICBVSU5UNjQgICAgICAgICAgICAgICAgICAgICAgICAgIEx1bjsNCj4gK30g RklCUkVDSEFOTkVMX0RFVklDRV9QQVRIOw0KPiArDQo+ICsvLy8NCj4gKy8vLyBGaWJyZSBDaGFu bmVsIEV4IFN1YlR5cGUuDQo+ICsvLy8NCj4gKyNkZWZpbmUgTVNHX0ZJQlJFQ0hBTk5FTEVYX0RQ ICAgICAweDE1DQo+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ICsgIEVGSV9ERVZJQ0VfUEFUSF9QUk9U T0NPTCAgICAgICAgSGVhZGVyOw0KPiArICAvLy8NCj4gKyAgLy8vIFJlc2VydmVkIGZvciB0aGUg ZnV0dXJlLg0KPiArICAvLy8NCj4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgICBS ZXNlcnZlZDsNCj4gKyAgLy8vDQo+ICsgIC8vLyA4IGJ5dGUgYXJyYXkgY29udGFpbmluZyBGaWJy ZSBDaGFubmVsIEVuZCBEZXZpY2UgUG9ydCBOYW1lLg0KPiArICAvLy8NCj4gKyAgVUlOVDggICAg ICAgICAgICAgICAgICAgICAgICAgICBXV05bOF07DQo+ICsgIC8vLw0KPiArICAvLy8gOCBieXRl IGFycmF5IGNvbnRhaW5pbmcgRmlicmUgQ2hhbm5lbCBMb2dpY2FsIFVuaXQgTnVtYmVyLg0KPiAr ICAvLy8NCj4gKyAgVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAgICBMdW5bOF07DQo+ICt9 IEZJQlJFQ0hBTk5FTEVYX0RFVklDRV9QQVRIOw0KPiArDQo+ICsvLy8NCj4gKy8vLyAxMzk0IERl dmljZSBQYXRoIFN1YlR5cGUNCj4gKy8vLw0KPiArI2RlZmluZSBNU0dfMTM5NF9EUCAgICAgICAg ICAgICAgIDB4MDQNCj4gK3R5cGVkZWYgc3RydWN0IHsNCj4gKyAgRUZJX0RFVklDRV9QQVRIX1BS T1RPQ09MICAgICAgICBIZWFkZXI7DQo+ICsgIC8vLw0KPiArICAvLy8gUmVzZXJ2ZWQgZm9yIHRo ZSBmdXR1cmUuDQo+ICsgIC8vLw0KPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAg IFJlc2VydmVkOw0KPiArICAvLy8NCj4gKyAgLy8vIDEzOTQgR2xvYmFsIFVuaXF1ZSBJRCAoR1VJ RCkuDQo+ICsgIC8vLw0KPiArICBVSU5UNjQgICAgICAgICAgICAgICAgICAgICAgICAgIEd1aWQ7 DQo+ICt9IEYxMzk0X0RFVklDRV9QQVRIOw0KPiArDQo+ICsvLy8NCj4gKy8vLyBVU0IgRGV2aWNl IFBhdGggU3ViVHlwZS4NCj4gKy8vLw0KPiArI2RlZmluZSBNU0dfVVNCX0RQICAgICAgICAgICAg ICAgIDB4MDUNCj4gK3R5cGVkZWYgc3RydWN0IHsNCj4gKyAgRUZJX0RFVklDRV9QQVRIX1BST1RP Q09MICAgICAgSGVhZGVyOw0KPiArICAvLy8NCj4gKyAgLy8vIFVTQiBQYXJlbnQgUG9ydCBOdW1i ZXIuDQo+ICsgIC8vLw0KPiArICBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICBQYXJlbnRQ b3J0TnVtYmVyOw0KPiArICAvLy8NCj4gKyAgLy8vIFVTQiBJbnRlcmZhY2UgTnVtYmVyLg0KPiAr ICAvLy8NCj4gKyAgVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAgSW50ZXJmYWNlTnVtYmVy Ow0KPiArfSBVU0JfREVWSUNFX1BBVEg7DQo+ICsNCj4gKy8vLw0KPiArLy8vIFVTQiBDbGFzcyBE ZXZpY2UgUGF0aCBTdWJUeXBlLg0KPiArLy8vDQo+ICsjZGVmaW5lIE1TR19VU0JfQ0xBU1NfRFAg ICAgICAgICAgMHgwZg0KPiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiArICBFRklfREVWSUNFX1BBVEhf UFJPVE9DT0wgICAgICBIZWFkZXI7DQo+ICsgIC8vLw0KPiArICAvLy8gVmVuZG9yIElEIGFzc2ln bmVkIGJ5IFVTQi1JRi4gQSB2YWx1ZSBvZiAweEZGRkYgd2lsbA0KPiArICAvLy8gbWF0Y2ggYW55 IFZlbmRvciBJRC4NCj4gKyAgLy8vDQo+ICsgIFVJTlQxNiAgICAgICAgICAgICAgICAgICAgICAg IFZlbmRvcklkOw0KPiArICAvLy8NCj4gKyAgLy8vIFByb2R1Y3QgSUQgYXNzaWduZWQgYnkgVVNC LUlGLiBBIHZhbHVlIG9mIDB4RkZGRiB3aWxsDQo+ICsgIC8vLyBtYXRjaCBhbnkgUHJvZHVjdCBJ RC4NCj4gKyAgLy8vDQo+ICsgIFVJTlQxNiAgICAgICAgICAgICAgICAgICAgICAgIFByb2R1Y3RJ ZDsNCj4gKyAgLy8vDQo+ICsgIC8vLyBUaGUgY2xhc3MgY29kZSBhc3NpZ25lZCBieSB0aGUgVVNC LUlGLiBBIHZhbHVlIG9mIDB4RkYNCj4gKyAgLy8vIHdpbGwgbWF0Y2ggYW55IGNsYXNzIGNvZGUu DQo+ICsgIC8vLw0KPiArICBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICBEZXZpY2VDbGFz czsNCj4gKyAgLy8vDQo+ICsgIC8vLyBUaGUgc3ViY2xhc3MgY29kZSBhc3NpZ25lZCBieSB0aGUg VVNCLUlGLiBBIHZhbHVlIG9mDQo+ICsgIC8vLyAweEZGIHdpbGwgbWF0Y2ggYW55IHN1YmNsYXNz IGNvZGUuDQo+ICsgIC8vLw0KPiArICBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICBEZXZp Y2VTdWJDbGFzczsNCj4gKyAgLy8vDQo+ICsgIC8vLyBUaGUgcHJvdG9jb2wgY29kZSBhc3NpZ25l ZCBieSB0aGUgVVNCLUlGLiBBIHZhbHVlIG9mDQo+ICsgIC8vLyAweEZGIHdpbGwgbWF0Y2ggYW55 IHByb3RvY29sIGNvZGUuDQo+ICsgIC8vLw0KPiArICBVSU5UOCAgICAgICAgICAgICAgICAgICAg ICAgICBEZXZpY2VQcm90b2NvbDsNCj4gK30gVVNCX0NMQVNTX0RFVklDRV9QQVRIOw0KPiArDQo+ ICsvLy8NCj4gKy8vLyBVU0IgV1dJRCBEZXZpY2UgUGF0aCBTdWJUeXBlLg0KPiArLy8vDQo+ICsj ZGVmaW5lIE1TR19VU0JfV1dJRF9EUCAgICAgICAgICAgMHgxMA0KPiArDQo+ICsvLy8NCj4gKy8v LyBUaGlzIGRldmljZSBwYXRoIGRlc2NyaWJlcyBhIFVTQiBkZXZpY2UgdXNpbmcgaXRzIHNlcmlh bCBudW1iZXIuDQo+ICsvLy8NCj4gK3R5cGVkZWYgc3RydWN0IHsNCj4gKyAgRUZJX0RFVklDRV9Q QVRIX1BST1RPQ09MICAgICAgSGVhZGVyOw0KPiArICAvLy8NCj4gKyAgLy8vIFVTQiBpbnRlcmZh Y2UgbnVtYmVyLg0KPiArICAvLy8NCj4gKyAgVUlOVDE2ICAgICAgICAgICAgICAgICAgICAgICAg SW50ZXJmYWNlTnVtYmVyOw0KPiArICAvLy8NCj4gKyAgLy8vIFVTQiB2ZW5kb3IgaWQgb2YgdGhl IGRldmljZS4NCj4gKyAgLy8vDQo+ICsgIFVJTlQxNiAgICAgICAgICAgICAgICAgICAgICAgIFZl bmRvcklkOw0KPiArICAvLy8NCj4gKyAgLy8vIFVTQiBwcm9kdWN0IGlkIG9mIHRoZSBkZXZpY2Uu DQo+ICsgIC8vLw0KPiArICBVSU5UMTYgICAgICAgICAgICAgICAgICAgICAgICBQcm9kdWN0SWQ7 DQo+ICsgIC8vLw0KPiArICAvLy8gTGFzdCA2NC1vci1mZXdlciBVVEYtMTYgY2hhcmFjdGVycyBv ZiB0aGUgVVNCDQo+ICsgIC8vLyBzZXJpYWwgbnVtYmVyLiBUaGUgbGVuZ3RoIG9mIHRoZSBzdHJp bmcgaXMNCj4gKyAgLy8vIGRldGVybWluZWQgYnkgdGhlIExlbmd0aCBmaWVsZCBsZXNzIHRoZSBv ZmZzZXQgb2YgdGhlDQo+ICsgIC8vLyBTZXJpYWwgTnVtYmVyIGZpZWxkICgxMCkNCj4gKyAgLy8v DQo+ICsgIC8vLyBDSEFSMTYgICAgICAgICAgICAgICAgICAgICBTZXJpYWxOdW1iZXJbLi4uXTsN Cj4gK30gVVNCX1dXSURfREVWSUNFX1BBVEg7DQo+ICsNCj4gKy8vLw0KPiArLy8vIERldmljZSBM b2dpY2FsIFVuaXQgU3ViVHlwZS4NCj4gKy8vLw0KPiArI2RlZmluZSBNU0dfREVWSUNFX0xPR0lD QUxfVU5JVF9EUCAgMHgxMQ0KPiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiArICBFRklfREVWSUNFX1BB VEhfUFJPVE9DT0wgICAgICBIZWFkZXI7DQo+ICsgIC8vLw0KPiArICAvLy8gTG9naWNhbCBVbml0 IE51bWJlciBmb3IgdGhlIGludGVyZmFjZS4NCj4gKyAgLy8vDQo+ICsgIFVJTlQ4ICAgICAgICAg ICAgICAgICAgICAgICAgIEx1bjsNCj4gK30gREVWSUNFX0xPR0lDQUxfVU5JVF9ERVZJQ0VfUEFU SDsNCj4gKw0KPiArLy8vDQo+ICsvLy8gU0FUQSBEZXZpY2UgUGF0aCBTdWJUeXBlLg0KPiArLy8v DQo+ICsjZGVmaW5lIE1TR19TQVRBX0RQICAgICAgICAgICAgICAgMHgxMg0KPiArdHlwZWRlZiBz dHJ1Y3Qgew0KPiArICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICAgICAgIEhlYWRlcjsNCj4g KyAgLy8vDQo+ICsgIC8vLyBUaGUgSEJBIHBvcnQgbnVtYmVyIHRoYXQgZmFjaWxpdGF0ZXMgdGhl IGNvbm5lY3Rpb24gdG8gdGhlDQo+ICsgIC8vLyBkZXZpY2Ugb3IgYSBwb3J0IG11bHRpcGxpZXIu IFRoZSB2YWx1ZSAweEZGRkYgaXMgcmVzZXJ2ZWQuDQo+ICsgIC8vLw0KPiArICBVSU5UMTYgICAg ICAgICAgICAgICAgICAgICAgICAgIEhCQVBvcnROdW1iZXI7DQo+ICsgIC8vLw0KPiArICAvLy8g VGhlIFBvcnQgbXVsdGlwbGllciBwb3J0IG51bWJlciB0aGF0IGZhY2lsaXRhdGVzIHRoZSBjb25u ZWN0aW9uDQo+ICsgIC8vLyB0byB0aGUgZGV2aWNlLiBNdXN0IGJlIHNldCB0byAweEZGRkYgaWYg dGhlIGRldmljZSBpcyBkaXJlY3RseQ0KPiArICAvLy8gY29ubmVjdGVkIHRvIHRoZSBIQkEuDQo+ ICsgIC8vLw0KPiArICBVSU5UMTYgICAgICAgICAgICAgICAgICAgICAgICAgIFBvcnRNdWx0aXBs aWVyUG9ydE51bWJlcjsNCj4gKyAgLy8vDQo+ICsgIC8vLyBMb2dpY2FsIFVuaXQgTnVtYmVyLg0K PiArICAvLy8NCj4gKyAgVUlOVDE2ICAgICAgICAgICAgICAgICAgICAgICAgICBMdW47DQo+ICt9 IFNBVEFfREVWSUNFX1BBVEg7DQo+ICsNCj4gKy8vLw0KPiArLy8vIEZsYWcgZm9yIGlmIHRoZSBk ZXZpY2UgaXMgZGlyZWN0bHkgY29ubmVjdGVkIHRvIHRoZSBIQkEuDQo+ICsvLy8NCj4gKyNkZWZp bmUgU0FUQV9IQkFfRElSRUNUX0NPTk5FQ1RfRkxBRyAweDgwMDANCj4gKw0KPiArLy8vDQo+ICsv Ly8gSTJPIERldmljZSBQYXRoIFN1YlR5cGUuDQo+ICsvLy8NCj4gKyNkZWZpbmUgTVNHX0kyT19E UCAgICAgICAgICAgICAgICAweDA2DQo+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ICsgIEVGSV9ERVZJ Q0VfUEFUSF9QUk9UT0NPTCAgICAgICAgSGVhZGVyOw0KPiArICAvLy8NCj4gKyAgLy8vIFRhcmdl dCBJRCAoVElEKSBmb3IgYSBkZXZpY2UuDQo+ICsgIC8vLw0KPiArICBVSU5UMzIgICAgICAgICAg ICAgICAgICAgICAgICAgIFRpZDsNCj4gK30gSTJPX0RFVklDRV9QQVRIOw0KPiArDQo+ICsvLy8N Cj4gKy8vLyBNQUMgQWRkcmVzcyBEZXZpY2UgUGF0aCBTdWJUeXBlLg0KPiArLy8vDQo+ICsjZGVm aW5lIE1TR19NQUNfQUREUl9EUCAgICAgICAgICAgMHgwYg0KPiArdHlwZWRlZiBzdHJ1Y3Qgew0K PiArICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICAgICAgIEhlYWRlcjsNCj4gKyAgLy8vDQo+ ICsgIC8vLyBUaGUgTUFDIGFkZHJlc3MgZm9yIGEgbmV0d29yayBpbnRlcmZhY2UgcGFkZGVkIHdp dGggMHMuDQo+ICsgIC8vLw0KPiArICBFRklfTUFDX0FERFJFU1MgICAgICAgICAgICAgICAgIE1h Y0FkZHJlc3M7DQo+ICsgIC8vLw0KPiArICAvLy8gTmV0d29yayBpbnRlcmZhY2UgdHlwZShpLmUu IDgwMi4zLCBGRERJKS4NCj4gKyAgLy8vDQo+ICsgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAg ICAgICAgSWZUeXBlOw0KPiArfSBNQUNfQUREUl9ERVZJQ0VfUEFUSDsNCj4gKw0KPiArLy8vDQo+ ICsvLy8gSVB2NCBEZXZpY2UgUGF0aCBTdWJUeXBlDQo+ICsvLy8NCj4gKyNkZWZpbmUgTVNHX0lQ djRfRFAgICAgICAgICAgICAgICAweDBjDQo+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ICsgIEVGSV9E RVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAgICAgSGVhZGVyOw0KPiArICAvLy8NCj4gKyAgLy8vIFRo ZSBsb2NhbCBJUHY0IGFkZHJlc3MuDQo+ICsgIC8vLw0KPiArICBFRklfSVB2NF9BRERSRVNTICAg ICAgICAgICAgICAgIExvY2FsSXBBZGRyZXNzOw0KPiArICAvLy8NCj4gKyAgLy8vIFRoZSByZW1v dGUgSVB2NCBhZGRyZXNzLg0KPiArICAvLy8NCj4gKyAgRUZJX0lQdjRfQUREUkVTUyAgICAgICAg ICAgICAgICBSZW1vdGVJcEFkZHJlc3M7DQo+ICsgIC8vLw0KPiArICAvLy8gVGhlIGxvY2FsIHBv cnQgbnVtYmVyLg0KPiArICAvLy8NCj4gKyAgVUlOVDE2ICAgICAgICAgICAgICAgICAgICAgICAg ICBMb2NhbFBvcnQ7DQo+ICsgIC8vLw0KPiArICAvLy8gVGhlIHJlbW90ZSBwb3J0IG51bWJlci4N Cj4gKyAgLy8vDQo+ICsgIFVJTlQxNiAgICAgICAgICAgICAgICAgICAgICAgICAgUmVtb3RlUG9y dDsNCj4gKyAgLy8vDQo+ICsgIC8vLyBUaGUgbmV0d29yayBwcm90b2NvbChpLmUuIFVEUCwgVENQ KS4NCj4gKyAgLy8vDQo+ICsgIFVJTlQxNiAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvdG9j b2w7DQo+ICsgIC8vLw0KPiArICAvLy8gMHgwMCAtIFRoZSBTb3VyY2UgSVAgQWRkcmVzcyB3YXMg YXNzaWduZWQgdGhvdWdoIERIQ1AuDQo+ICsgIC8vLyAweDAxIC0gVGhlIFNvdXJjZSBJUCBBZGRy ZXNzIGlzIHN0YXRpY2FsbHkgYm91bmQuDQo+ICsgIC8vLw0KPiArICBCT09MRUFOICAgICAgICAg ICAgICAgICAgICAgICAgIFN0YXRpY0lwQWRkcmVzczsNCj4gKyAgLy8vDQo+ICsgIC8vLyBUaGUg Z2F0ZXdheSBJUCBhZGRyZXNzDQo+ICsgIC8vLw0KPiArICBFRklfSVB2NF9BRERSRVNTICAgICAg ICAgICAgICAgIEdhdGV3YXlJcEFkZHJlc3M7DQo+ICsgIC8vLw0KPiArICAvLy8gVGhlIHN1Ym5l dCBtYXNrDQo+ICsgIC8vLw0KPiArICBFRklfSVB2NF9BRERSRVNTICAgICAgICAgICAgICAgIFN1 Ym5ldE1hc2s7DQo+ICt9IElQdjRfREVWSUNFX1BBVEg7DQo+ICsNCj4gKy8vLw0KPiArLy8vIElQ djYgRGV2aWNlIFBhdGggU3ViVHlwZS4NCj4gKy8vLw0KPiArI2RlZmluZSBNU0dfSVB2Nl9EUCAg ICAgICAgICAgICAgIDB4MGQNCj4gK3R5cGVkZWYgc3RydWN0IHsNCj4gKyAgRUZJX0RFVklDRV9Q QVRIX1BST1RPQ09MICAgICAgICBIZWFkZXI7DQo+ICsgIC8vLw0KPiArICAvLy8gVGhlIGxvY2Fs IElQdjYgYWRkcmVzcy4NCj4gKyAgLy8vDQo+ICsgIEVGSV9JUHY2X0FERFJFU1MgICAgICAgICAg ICAgICAgTG9jYWxJcEFkZHJlc3M7DQo+ICsgIC8vLw0KPiArICAvLy8gVGhlIHJlbW90ZSBJUHY2 IGFkZHJlc3MuDQo+ICsgIC8vLw0KPiArICBFRklfSVB2Nl9BRERSRVNTICAgICAgICAgICAgICAg IFJlbW90ZUlwQWRkcmVzczsNCj4gKyAgLy8vDQo+ICsgIC8vLyBUaGUgbG9jYWwgcG9ydCBudW1i ZXIuDQo+ICsgIC8vLw0KPiArICBVSU5UMTYgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2Fs UG9ydDsNCj4gKyAgLy8vDQo+ICsgIC8vLyBUaGUgcmVtb3RlIHBvcnQgbnVtYmVyLg0KPiArICAv Ly8NCj4gKyAgVUlOVDE2ICAgICAgICAgICAgICAgICAgICAgICAgICBSZW1vdGVQb3J0Ow0KPiAr ICAvLy8NCj4gKyAgLy8vIFRoZSBuZXR3b3JrIHByb3RvY29sKGkuZS4gVURQLCBUQ1ApLg0KPiAr ICAvLy8NCj4gKyAgVUlOVDE2ICAgICAgICAgICAgICAgICAgICAgICAgICBQcm90b2NvbDsNCj4g KyAgLy8vDQo+ICsgIC8vLyAweDAwIC0gVGhlIExvY2FsIElQIEFkZHJlc3Mgd2FzIG1hbnVhbGx5 IGNvbmZpZ3VyZWQuDQo+ICsgIC8vLyAweDAxIC0gVGhlIExvY2FsIElQIEFkZHJlc3MgaXMgYXNz aWduZWQgdGhyb3VnaCBJUHY2DQo+ICsgIC8vLyBzdGF0ZWxlc3MgYXV0by1jb25maWd1cmF0aW9u Lg0KPiArICAvLy8gMHgwMiAtIFRoZSBMb2NhbCBJUCBBZGRyZXNzIGlzIGFzc2lnbmVkIHRocm91 Z2ggSVB2Ng0KPiArICAvLy8gc3RhdGVmdWwgY29uZmlndXJhdGlvbi4NCj4gKyAgLy8vDQo+ICsg IFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgSXBBZGRyZXNzT3JpZ2luOw0KPiArICAv Ly8NCj4gKyAgLy8vIFRoZSBwcmVmaXggbGVuZ3RoDQo+ICsgIC8vLw0KPiArICBVSU5UOCAgICAg ICAgICAgICAgICAgICAgICAgICAgIFByZWZpeExlbmd0aDsNCj4gKyAgLy8vDQo+ICsgIC8vLyBU aGUgZ2F0ZXdheSBJUCBhZGRyZXNzDQo+ICsgIC8vLw0KPiArICBFRklfSVB2Nl9BRERSRVNTICAg ICAgICAgICAgICAgIEdhdGV3YXlJcEFkZHJlc3M7DQo+ICt9IElQdjZfREVWSUNFX1BBVEg7DQo+ ICsNCj4gKy8vLw0KPiArLy8vIEluZmluaUJhbmQgRGV2aWNlIFBhdGggU3ViVHlwZS4NCj4gKy8v Lw0KPiArI2RlZmluZSBNU0dfSU5GSU5JQkFORF9EUCAgICAgICAgIDB4MDkNCj4gK3R5cGVkZWYg c3RydWN0IHsNCj4gKyAgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICAgICAgICBIZWFkZXI7DQo+ ICsgIC8vLw0KPiArICAvLy8gRmxhZ3MgdG8gaGVscCBpZGVudGlmeS9tYW5hZ2UgSW5maW5pQmFu ZCBkZXZpY2UgcGF0aCBlbGVtZW50czoNCj4gKyAgLy8vIEJpdCAwIC0gSU9DL1NlcnZpY2UgKDBi ID0gSU9DLCAxYiA9IFNlcnZpY2UpLg0KPiArICAvLy8gQml0IDEgLSBFeHRlbmQgQm9vdCBFbnZp cm9ubWVudC4NCj4gKyAgLy8vIEJpdCAyIC0gQ29uc29sZSBQcm90b2NvbC4NCj4gKyAgLy8vIEJp dCAzIC0gU3RvcmFnZSBQcm90b2NvbC4NCj4gKyAgLy8vIEJpdCA0IC0gTmV0d29yayBQcm90b2Nv bC4NCj4gKyAgLy8vIEFsbCBvdGhlciBiaXRzIGFyZSByZXNlcnZlZC4NCj4gKyAgLy8vDQo+ICsg IFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VGbGFnczsNCj4gKyAgLy8v DQo+ICsgIC8vLyAxMjgtYml0IEdsb2JhbCBJZGVudGlmaWVyIGZvciByZW1vdGUgZmFicmljIHBv cnQuDQo+ICsgIC8vLw0KPiArICBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvcnRH aWRbMTZdOw0KPiArICAvLy8NCj4gKyAgLy8vIDY0LWJpdCB1bmlxdWUgaWRlbnRpZmllciB0byBy ZW1vdGUgSU9DIG9yIHNlcnZlciBwcm9jZXNzLg0KPiArICAvLy8gSW50ZXJwcmV0YXRpb24gb2Yg ZmllbGQgc3BlY2lmaWVkIGJ5IFJlc291cmNlIEZsYWdzIChiaXQgMCkuDQo+ICsgIC8vLw0KPiAr ICBVSU5UNjQgICAgICAgICAgICAgICAgICAgICAgICAgIFNlcnZpY2VJZDsNCj4gKyAgLy8vDQo+ ICsgIC8vLyA2NC1iaXQgcGVyc2lzdGVudCBJRCBvZiByZW1vdGUgSU9DIHBvcnQuDQo+ICsgIC8v Lw0KPiArICBVSU5UNjQgICAgICAgICAgICAgICAgICAgICAgICAgIFRhcmdldFBvcnRJZDsNCj4g KyAgLy8vDQo+ICsgIC8vLyA2NC1iaXQgcGVyc2lzdGVudCBJRCBvZiByZW1vdGUgZGV2aWNlLg0K PiArICAvLy8NCj4gKyAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICAgICAgICBEZXZpY2VJZDsN Cj4gK30gSU5GSU5JQkFORF9ERVZJQ0VfUEFUSDsNCj4gKw0KPiArI2RlZmluZSBJTkZJTklCQU5E X1JFU09VUkNFX0ZMQUdfSU9DX1NFUlZJQ0UgICAgICAgICAgICAgICAgMHgwMQ0KPiArI2RlZmlu ZSBJTkZJTklCQU5EX1JFU09VUkNFX0ZMQUdfRVhURU5ERURfQk9PVF9FTlZJUk9OTUVOVCAgMHgw Mg0KPiArI2RlZmluZSBJTkZJTklCQU5EX1JFU09VUkNFX0ZMQUdfQ09OU09MRV9QUk9UT0NPTCAg ICAgICAgICAgMHgwNA0KPiArI2RlZmluZSBJTkZJTklCQU5EX1JFU09VUkNFX0ZMQUdfU1RPUkFH RV9QUk9UT0NPTCAgICAgICAgICAgMHgwOA0KPiArI2RlZmluZSBJTkZJTklCQU5EX1JFU09VUkNF X0ZMQUdfTkVUV09SS19QUk9UT0NPTCAgICAgICAgICAgMHgxMA0KPiArDQo+ICsvLy8NCj4gKy8v LyBVQVJUIERldmljZSBQYXRoIFN1YlR5cGUuDQo+ICsvLy8NCj4gKyNkZWZpbmUgTVNHX1VBUlRf RFAgICAgICAgICAgICAgICAweDBlDQo+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ICsgIEVGSV9ERVZJ Q0VfUEFUSF9QUk9UT0NPTCAgICAgICAgSGVhZGVyOw0KPiArICAvLy8NCj4gKyAgLy8vIFJlc2Vy dmVkLg0KPiArICAvLy8NCj4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgICBSZXNl cnZlZDsNCj4gKyAgLy8vDQo+ICsgIC8vLyBUaGUgYmF1ZCByYXRlIHNldHRpbmcgZm9yIHRoZSBV QVJUIHN0eWxlIGRldmljZS4gQSB2YWx1ZSBvZiAwDQo+ICsgIC8vLyBtZWFucyB0aGF0IHRoZSBk ZXZpY2UncyBkZWZhdWx0IGJhdWQgcmF0ZSB3aWxsIGJlIHVzZWQuDQo+ICsgIC8vLw0KPiArICBV SU5UNjQgICAgICAgICAgICAgICAgICAgICAgICAgIEJhdWRSYXRlOw0KPiArICAvLy8NCj4gKyAg Ly8vIFRoZSBudW1iZXIgb2YgZGF0YSBiaXRzIGZvciB0aGUgVUFSVCBzdHlsZSBkZXZpY2UuIEEg dmFsdWUNCj4gKyAgLy8vIG9mIDAgbWVhbnMgdGhhdCB0aGUgZGV2aWNlJ3MgZGVmYXVsdCBudW1i ZXIgb2YgZGF0YSBiaXRzIHdpbGwgYmUgdXNlZC4NCj4gKyAgLy8vDQo+ICsgIFVJTlQ4ICAgICAg ICAgICAgICAgICAgICAgICAgICAgRGF0YUJpdHM7DQo+ICsgIC8vLw0KPiArICAvLy8gVGhlIHBh cml0eSBzZXR0aW5nIGZvciB0aGUgVUFSVCBzdHlsZSBkZXZpY2UuDQo+ICsgIC8vLyBQYXJpdHkg MHgwMCAtIERlZmF1bHQgUGFyaXR5Lg0KPiArICAvLy8gUGFyaXR5IDB4MDEgLSBObyBQYXJpdHku DQo+ICsgIC8vLyBQYXJpdHkgMHgwMiAtIEV2ZW4gUGFyaXR5Lg0KPiArICAvLy8gUGFyaXR5IDB4 MDMgLSBPZGQgUGFyaXR5Lg0KPiArICAvLy8gUGFyaXR5IDB4MDQgLSBNYXJrIFBhcml0eS4NCj4g KyAgLy8vIFBhcml0eSAweDA1IC0gU3BhY2UgUGFyaXR5Lg0KPiArICAvLy8NCj4gKyAgVUlOVDgg ICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJpdHk7DQo+ICsgIC8vLw0KPiArICAvLy8gVGhl IG51bWJlciBvZiBzdG9wIGJpdHMgZm9yIHRoZSBVQVJUIHN0eWxlIGRldmljZS4NCj4gKyAgLy8v IFN0b3AgQml0cyAweDAwIC0gRGVmYXVsdCBTdG9wIEJpdHMuDQo+ICsgIC8vLyBTdG9wIEJpdHMg MHgwMSAtIDEgU3RvcCBCaXQuDQo+ICsgIC8vLyBTdG9wIEJpdHMgMHgwMiAtIDEuNSBTdG9wIEJp dHMuDQo+ICsgIC8vLyBTdG9wIEJpdHMgMHgwMyAtIDIgU3RvcCBCaXRzLg0KPiArICAvLy8NCj4g KyAgVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAgICBTdG9wQml0czsNCj4gK30gVUFSVF9E RVZJQ0VfUEFUSDsNCj4gKw0KPiArLy8NCj4gKy8vIFVzZSBWRU5ET1JfREVWSUNFX1BBVEggc3Ry dWN0DQo+ICsvLw0KPiArI2RlZmluZSBNU0dfVkVORE9SX0RQICAgICAgICAgICAgIDB4MGENCj4g K3R5cGVkZWYgVkVORE9SX0RFVklDRV9QQVRIICAgICAgICBWRU5ET1JfREVGSU5FRF9ERVZJQ0Vf UEFUSDsNCj4gKw0KPiArI2RlZmluZSBERVZJQ0VfUEFUSF9NRVNTQUdJTkdfUENfQU5TSSAgICAg RUZJX1BDX0FOU0lfR1VJRA0KPiArI2RlZmluZSBERVZJQ0VfUEFUSF9NRVNTQUdJTkdfVlRfMTAw ICAgICAgRUZJX1ZUXzEwMF9HVUlEDQo+ICsjZGVmaW5lIERFVklDRV9QQVRIX01FU1NBR0lOR19W VF8xMDBfUExVUyBFRklfVlRfMTAwX1BMVVNfR1VJRA0KPiArI2RlZmluZSBERVZJQ0VfUEFUSF9N RVNTQUdJTkdfVlRfVVRGOCAgICAgRUZJX1ZUX1VURjhfR1VJRA0KPiArDQo+ICsvLy8NCj4gKy8v LyBBIG5ldyBkZXZpY2UgcGF0aCBub2RlIGlzIGRlZmluZWQgdG8gZGVjbGFyZSBmbG93IGNvbnRy b2wgY2hhcmFjdGVyaXN0aWNzLg0KPiArLy8vIFVBUlQgRmxvdyBDb250cm9sIE1lc3NhZ2luZyBE ZXZpY2UgUGF0aA0KPiArLy8vDQo+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ICsgIEVGSV9ERVZJQ0Vf UEFUSF9QUk9UT0NPTCAgICAgICAgSGVhZGVyOw0KPiArICAvLy8NCj4gKyAgLy8vIERFVklDRV9Q QVRIX01FU1NBR0lOR19VQVJUX0ZMT1dfQ09OVFJPTCBHVUlELg0KPiArICAvLy8NCj4gKyAgRUZJ X0dVSUQgICAgICAgICAgICAgICAgICAgICAgICBHdWlkOw0KPiArICAvLy8NCj4gKyAgLy8vIEJp dG1hcCBvZiBzdXBwb3J0ZWQgZmxvdyBjb250cm9sIHR5cGVzLg0KPiArICAvLy8gQml0IDAgc2V0 IGluZGljYXRlcyBoYXJkd2FyZSBmbG93IGNvbnRyb2wuDQo+ICsgIC8vLyBCaXQgMSBzZXQgaW5k aWNhdGVzIFhvbi9Yb2ZmIGZsb3cgY29udHJvbC4NCj4gKyAgLy8vIEFsbCBvdGhlciBiaXRzIGFy ZSByZXNlcnZlZCBhbmQgYXJlIGNsZWFyLg0KPiArICAvLy8NCj4gKyAgVUlOVDMyICAgICAgICAg ICAgICAgICAgICAgICAgICBGbG93Q29udHJvbE1hcDsNCj4gK30gVUFSVF9GTE9XX0NPTlRST0xf REVWSUNFX1BBVEg7DQo+ICsNCj4gKyNkZWZpbmUgVUFSVF9GTE9XX0NPTlRST0xfSEFSRFdBUkUg ICAgICAgICAweDAwMDAwMDAxDQo+ICsjZGVmaW5lIFVBUlRfRkxPV19DT05UUk9MX1hPTl9YT0ZG ICAgICAgICAgMHgwMDAwMDAxMA0KPiArDQo+ICsjZGVmaW5lIERFVklDRV9QQVRIX01FU1NBR0lO R19TQVMgICAgICAgICAgRUZJX1NBU19ERVZJQ0VfUEFUSF9HVUlEDQo+ICsvLy8NCj4gKy8vLyBT ZXJpYWwgQXR0YWNoZWQgU0NTSSAoU0FTKSBEZXZpY2UgUGF0aC4NCj4gKy8vLw0KPiArdHlwZWRl ZiBzdHJ1Y3Qgew0KPiArICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICAgICAgIEhlYWRlcjsN Cj4gKyAgLy8vDQo+ICsgIC8vLyBERVZJQ0VfUEFUSF9NRVNTQUdJTkdfU0FTIEdVSUQuDQo+ICsg IC8vLw0KPiArICBFRklfR1VJRCAgICAgICAgICAgICAgICAgICAgICAgIEd1aWQ7DQo+ICsgIC8v Lw0KPiArICAvLy8gUmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UuDQo+ICsgIC8vLw0KPiArICBVSU5U MzIgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc2VydmVkOw0KPiArICAvLy8NCj4gKyAgLy8v IFNBUyBBZGRyZXNzIGZvciBTZXJpYWwgQXR0YWNoZWQgU0NTSSBUYXJnZXQuDQo+ICsgIC8vLw0K PiArICBVSU5UNjQgICAgICAgICAgICAgICAgICAgICAgICAgIFNhc0FkZHJlc3M7DQo+ICsgIC8v Lw0KPiArICAvLy8gU0FTIExvZ2ljYWwgVW5pdCBOdW1iZXIuDQo+ICsgIC8vLw0KPiArICBVSU5U NjQgICAgICAgICAgICAgICAgICAgICAgICAgIEx1bjsNCj4gKyAgLy8vDQo+ICsgIC8vLyBNb3Jl IEluZm9ybWF0aW9uIGFib3V0IHRoZSBkZXZpY2UgYW5kIGl0cyBpbnRlcmNvbm5lY3QuDQo+ICsg IC8vLw0KPiArICBVSU5UMTYgICAgICAgICAgICAgICAgICAgICAgICAgIERldmljZVRvcG9sb2d5 Ow0KPiArICAvLy8NCj4gKyAgLy8vIFJlbGF0aXZlIFRhcmdldCBQb3J0IChSVFApLg0KPiArICAv Ly8NCj4gKyAgVUlOVDE2ICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxhdGl2ZVRhcmdldFBv cnQ7DQo+ICt9IFNBU19ERVZJQ0VfUEFUSDsNCj4gKw0KPiArLy8vDQo+ICsvLy8gU2VyaWFsIEF0 dGFjaGVkIFNDU0kgKFNBUykgRXggRGV2aWNlIFBhdGggU3ViVHlwZQ0KPiArLy8vDQo+ICsjZGVm aW5lIE1TR19TQVNFWF9EUCAgICAgICAgICAgICAgMHgxNg0KPiArdHlwZWRlZiBzdHJ1Y3Qgew0K PiArICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICAgICAgIEhlYWRlcjsNCj4gKyAgLy8vDQo+ ICsgIC8vLyA4LWJ5dGUgYXJyYXkgb2YgdGhlIFNBUyBBZGRyZXNzIGZvciBTZXJpYWwgQXR0YWNo ZWQgU0NTSSBUYXJnZXQgUG9ydC4NCj4gKyAgLy8vDQo+ICsgIFVJTlQ4ICAgICAgICAgICAgICAg ICAgICAgICAgICAgU2FzQWRkcmVzc1s4XTsNCj4gKyAgLy8vDQo+ICsgIC8vLyA4LWJ5dGUgYXJy YXkgb2YgdGhlIFNBUyBMb2dpY2FsIFVuaXQgTnVtYmVyLg0KPiArICAvLy8NCj4gKyAgVUlOVDgg ICAgICAgICAgICAgICAgICAgICAgICAgICBMdW5bOF07DQo+ICsgIC8vLw0KPiArICAvLy8gTW9y ZSBJbmZvcm1hdGlvbiBhYm91dCB0aGUgZGV2aWNlIGFuZCBpdHMgaW50ZXJjb25uZWN0Lg0KPiAr ICAvLy8NCj4gKyAgVUlOVDE2ICAgICAgICAgICAgICAgICAgICAgICAgICBEZXZpY2VUb3BvbG9n eTsNCj4gKyAgLy8vDQo+ICsgIC8vLyBSZWxhdGl2ZSBUYXJnZXQgUG9ydCAoUlRQKS4NCj4gKyAg Ly8vDQo+ICsgIFVJTlQxNiAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsYXRpdmVUYXJnZXRQ b3J0Ow0KPiArfSBTQVNFWF9ERVZJQ0VfUEFUSDsNCj4gKw0KPiArLy8vDQo+ICsvLy8gTnZtRXhw cmVzcyBOYW1lc3BhY2UgRGV2aWNlIFBhdGggU3ViVHlwZS4NCj4gKy8vLw0KPiArI2RlZmluZSBN U0dfTlZNRV9OQU1FU1BBQ0VfRFAgICAgIDB4MTcNCj4gK3R5cGVkZWYgc3RydWN0IHsNCj4gKyAg RUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICAgICAgICBIZWFkZXI7DQo+ICsgIFVJTlQzMiAgICAg ICAgICAgICAgICAgICAgICAgICAgTmFtZXNwYWNlSWQ7DQo+ICsgIFVJTlQ2NCAgICAgICAgICAg ICAgICAgICAgICAgICAgTmFtZXNwYWNlVXVpZDsNCj4gK30gTlZNRV9OQU1FU1BBQ0VfREVWSUNF X1BBVEg7DQo+ICsNCj4gKy8vLw0KPiArLy8vIEROUyBEZXZpY2UgUGF0aCBTdWJUeXBlDQo+ICsv Ly8NCj4gKyNkZWZpbmUgTVNHX0ROU19EUCAgICAgICAgICAgICAgICAweDFGDQo+ICt0eXBlZGVm IHN0cnVjdCB7DQo+ICsgIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAgICAgSGVhZGVyOw0K PiArICAvLy8NCj4gKyAgLy8vIEluZGljYXRlcyB0aGUgRE5TIHNlcnZlciBhZGRyZXNzIGlzIElQ djQgb3IgSVB2NiBhZGRyZXNzLg0KPiArICAvLy8NCj4gKyAgVUlOVDggICAgICAgICAgICAgICAg ICAgICAgICAgICBJc0lQdjY7DQo+ICsgIC8vLw0KPiArICAvLy8gSW5zdGFuY2Ugb2YgdGhlIERO UyBzZXJ2ZXIgYWRkcmVzcy4NCj4gKyAgLy8vDQo+ICsgIEVGSV9JUF9BRERSRVNTICAgICAgICAg ICAgICAgICAgRG5zU2VydmVySXBbMTAyNF07DQo+ICt9IEROU19ERVZJQ0VfUEFUSDsNCj4gKw0K PiArLy8vDQo+ICsvLy8gVW5pZm9ybSBSZXNvdXJjZSBJZGVudGlmaWVycyAoVVJJKSBEZXZpY2Ug UGF0aCBTdWJUeXBlDQo+ICsvLy8NCj4gKyNkZWZpbmUgTVNHX1VSSV9EUCAgICAgICAgICAgICAg ICAweDE4DQo+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ICsgIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NP TCAgICAgICAgSGVhZGVyOw0KPiArICAvLy8NCj4gKyAgLy8vIEluc3RhbmNlIG9mIHRoZSBVUkkg cHVyc3VhbnQgdG8gUkZDIDM5ODYuDQo+ICsgIC8vLw0KPiArICBDSEFSOCAgICAgICAgICAgICAg ICAgICAgICAgICAgIFVyaVsxMDI0XTsNCj4gK30gVVJJX0RFVklDRV9QQVRIOw0KPiArDQo+ICsv Ly8NCj4gKy8vLyBVbml2ZXJzYWwgRmxhc2ggU3RvcmFnZSAoVUZTKSBEZXZpY2UgUGF0aCBTdWJU eXBlLg0KPiArLy8vDQo+ICsjZGVmaW5lIE1TR19VRlNfRFAgICAgICAgICAgICAgICAgMHgxOQ0K PiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiArICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICAgICAg IEhlYWRlcjsNCj4gKyAgLy8vDQo+ICsgIC8vLyBUYXJnZXQgSUQgb24gdGhlIFVGUyBidXMgKFBV TikuDQo+ICsgIC8vLw0KPiArICBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1bjsN Cj4gKyAgLy8vDQo+ICsgIC8vLyBMb2dpY2FsIFVuaXQgTnVtYmVyIChMVU4pLg0KPiArICAvLy8N Cj4gKyAgVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAgICBMdW47DQo+ICt9IFVGU19ERVZJ Q0VfUEFUSDsNCj4gKw0KPiArLy8vDQo+ICsvLy8gU0QgKFNlY3VyZSBEaWdpdGFsKSBEZXZpY2Ug UGF0aCBTdWJUeXBlLg0KPiArLy8vDQo+ICsjZGVmaW5lIE1TR19TRF9EUCAgICAgICAgICAgICAg ICAgMHgxQQ0KPiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiArICBFRklfREVWSUNFX1BBVEhfUFJPVE9D T0wgICAgICAgIEhlYWRlcjsNCj4gKyAgVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAgICBT bG90TnVtYmVyOw0KPiArfSBTRF9ERVZJQ0VfUEFUSDsNCj4gKw0KPiArLy8vDQo+ICsvLy8gRU1N QyAoRW1iZWRkZWQgTU1DKSBEZXZpY2UgUGF0aCBTdWJUeXBlLg0KPiArLy8vDQo+ICsjZGVmaW5l IE1TR19FTU1DX0RQICAgICAgICAgICAgICAgICAweDFEDQo+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ ICsgIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAgICAgSGVhZGVyOw0KPiArICBVSU5UOCAg ICAgICAgICAgICAgICAgICAgICAgICAgIFNsb3ROdW1iZXI7DQo+ICt9IEVNTUNfREVWSUNFX1BB VEg7DQo+ICsNCj4gKy8vLw0KPiArLy8vIGlTQ1NJIERldmljZSBQYXRoIFN1YlR5cGUNCj4gKy8v Lw0KPiArI2RlZmluZSBNU0dfSVNDU0lfRFAgICAgICAgICAgICAgIDB4MTMNCj4gK3R5cGVkZWYg c3RydWN0IHsNCj4gKyAgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICAgICAgICBIZWFkZXI7DQo+ ICsgIC8vLw0KPiArICAvLy8gTmV0d29yayBQcm90b2NvbCAoMCA9IFRDUCwgMSsgPSByZXNlcnZl ZCkuDQo+ICsgIC8vLw0KPiArICBVSU5UMTYgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHdv cmtQcm90b2NvbDsNCj4gKyAgLy8vDQo+ICsgIC8vLyBpU0NTSSBMb2dpbiBPcHRpb25zLg0KPiAr ICAvLy8NCj4gKyAgVUlOVDE2ICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dpbk9wdGlvbjsN Cj4gKyAgLy8vDQo+ICsgIC8vLyBpU0NTSSBMb2dpY2FsIFVuaXQgTnVtYmVyLg0KPiArICAvLy8N Cj4gKyAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICAgICAgICBMdW47DQo+ICsgIC8vLw0KPiAr ICAvLy8gaVNDU0kgVGFyZ2V0IFBvcnRhbCBncm91cCB0YWcgdGhlIGluaXRpYXRvciBpbnRlbmRz DQo+ICsgIC8vLyB0byBlc3RhYmxpc2ggYSBzZXNzaW9uIHdpdGguDQo+ICsgIC8vLw0KPiArICBV SU5UMTYgICAgICAgICAgICAgICAgICAgICAgICAgIFRhcmdldFBvcnRhbEdyb3VwVGFnOw0KPiAr ICAvLy8NCj4gKyAgLy8vIGlTQ1NJIE5vZGVUYXJnZXQgTmFtZS4gVGhlIGxlbmd0aCBvZiB0aGUg bmFtZQ0KPiArICAvLy8gaXMgZGV0ZXJtaW5lZCBieSBzdWJ0cmFjdGluZyB0aGUgb2Zmc2V0IG9m IHRoaXMgZmllbGQgZnJvbSBMZW5ndGguDQo+ICsgIC8vLw0KPiArICAvLy8gQ0hBUjggICAgICAg ICAgICAgICAgICAgICAgICBpU0NTSSBUYXJnZXQgTmFtZS4NCj4gK30gSVNDU0lfREVWSUNFX1BB VEg7DQo+ICsNCj4gKyNkZWZpbmUgSVNDU0lfTE9HSU5fT1BUSU9OX05PX0hFQURFUl9ESUdFU1Qg ICAgICAgICAgICAgMHgwMDAwDQo+ICsjZGVmaW5lIElTQ1NJX0xPR0lOX09QVElPTl9IRUFERVJf RElHRVNUX1VTSU5HX0NSQzMyQyAgIDB4MDAwMg0KPiArI2RlZmluZSBJU0NTSV9MT0dJTl9PUFRJ T05fTk9fREFUQV9ESUdFU1QgICAgICAgICAgICAgICAweDAwMDANCj4gKyNkZWZpbmUgSVNDU0lf TE9HSU5fT1BUSU9OX0RBVEFfRElHRVNUX1VTSU5HX0NSQzMyQyAgICAgMHgwMDA4DQo+ICsjZGVm aW5lIElTQ1NJX0xPR0lOX09QVElPTl9BVVRITUVUSE9EX0NIQVAgICAgICAgICAgICAgIDB4MDAw MA0KPiArI2RlZmluZSBJU0NTSV9MT0dJTl9PUFRJT05fQVVUSE1FVEhPRF9OT04gICAgICAgICAg ICAgICAweDEwMDANCj4gKyNkZWZpbmUgSVNDU0lfTE9HSU5fT1BUSU9OX0NIQVBfQkkgICAgICAg ICAgICAgICAgICAgICAgMHgwMDAwDQo+ICsjZGVmaW5lIElTQ1NJX0xPR0lOX09QVElPTl9DSEFQ X1VOSSAgICAgICAgICAgICAgICAgICAgIDB4MjAwMA0KPiArDQo+ICsvLy8NCj4gKy8vLyBWTEFO IERldmljZSBQYXRoIFN1YlR5cGUuDQo+ICsvLy8NCj4gKyNkZWZpbmUgTVNHX1ZMQU5fRFAgICAg ICAgICAgICAgICAweDE0DQo+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ICsgIEVGSV9ERVZJQ0VfUEFU SF9QUk9UT0NPTCAgICAgICAgSGVhZGVyOw0KPiArICAvLy8NCj4gKyAgLy8vIFZMQU4gaWRlbnRp ZmllciAoMC00MDk0KS4NCj4gKyAgLy8vDQo+ICsgIFVJTlQxNiAgICAgICAgICAgICAgICAgICAg ICAgICAgVmxhbklkOw0KPiArfSBWTEFOX0RFVklDRV9QQVRIOw0KPiArDQo+ICsvLy8NCj4gKy8v LyBCbHVldG9vdGggRGV2aWNlIFBhdGggU3ViVHlwZS4NCj4gKy8vLw0KPiArI2RlZmluZSBNU0df QkxVRVRPT1RIX0RQICAgICAweDFiDQo+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ICsgIEVGSV9ERVZJ Q0VfUEFUSF9QUk9UT0NPTCAgICAgICAgSGVhZGVyOw0KPiArICAvLy8NCj4gKyAgLy8vIDQ4Yml0 IEJsdWV0b290aCBkZXZpY2UgYWRkcmVzcy4NCj4gKyAgLy8vDQo+ICsgIEJMVUVUT09USF9BRERS RVNTICAgICAgICAgICAgICAgQkRfQUREUjsNCj4gK30gQkxVRVRPT1RIX0RFVklDRV9QQVRIOw0K PiArDQo+ICsvLy8NCj4gKy8vLyBXaS1GaSBEZXZpY2UgUGF0aCBTdWJUeXBlLg0KPiArLy8vDQo+ ICsjZGVmaW5lIE1TR19XSUZJX0RQICAgICAgICAgICAgICAgMHgxQw0KPiArdHlwZWRlZiBzdHJ1 Y3Qgew0KPiArICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICAgICAgIEhlYWRlcjsNCj4gKyAg Ly8vDQo+ICsgIC8vLyBTZXJ2aWNlIHNldCBpZGVudGlmaWVyLiBBIDMyLWJ5dGUgb2N0ZXRzIHN0 cmluZy4NCj4gKyAgLy8vDQo+ICsgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgU1NJ ZFszMl07DQo+ICt9IFdJRklfREVWSUNFX1BBVEg7DQo+ICsNCj4gKy8vLw0KPiArLy8vIEJsdWV0 b290aCBMRSBEZXZpY2UgUGF0aCBTdWJUeXBlLg0KPiArLy8vDQo+ICsjZGVmaW5lIE1TR19CTFVF VE9PVEhfTEVfRFAgICAgICAgMHgxRQ0KPiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiArICBFRklfREVW SUNFX1BBVEhfUFJPVE9DT0wgICAgICAgIEhlYWRlcjsNCj4gKyAgQkxVRVRPT1RIX0xFX0FERFJF U1MgICAgICAgICAgICBBZGRyZXNzOw0KPiArfSBCTFVFVE9PVEhfTEVfREVWSUNFX1BBVEg7DQo+ ICsNCj4gKy8vDQo+ICsvLyBNZWRpYSBEZXZpY2UgUGF0aA0KPiArLy8NCj4gKyNkZWZpbmUgTUVE SUFfREVWSUNFX1BBVEggICAgICAgICAweDA0DQo+ICsNCj4gKy8vLw0KPiArLy8vIEhhcmQgRHJp dmUgTWVkaWEgRGV2aWNlIFBhdGggU3ViVHlwZS4NCj4gKy8vLw0KPiArI2RlZmluZSBNRURJQV9I QVJERFJJVkVfRFAgICAgICAgIDB4MDENCj4gKw0KPiArLy8vDQo+ICsvLy8gVGhlIEhhcmQgRHJp dmUgTWVkaWEgRGV2aWNlIFBhdGggaXMgdXNlZCB0byByZXByZXNlbnQgYSBwYXJ0aXRpb24gb24g YSBoYXJkIGRyaXZlLg0KPiArLy8vDQo+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ICsgIEVGSV9ERVZJ Q0VfUEFUSF9QUk9UT0NPTCAgICAgICAgSGVhZGVyOw0KPiArICAvLy8NCj4gKyAgLy8vIERlc2Ny aWJlcyB0aGUgZW50cnkgaW4gYSBwYXJ0aXRpb24gdGFibGUsIHN0YXJ0aW5nIHdpdGggZW50cnkg MS4NCj4gKyAgLy8vIFBhcnRpdGlvbiBudW1iZXIgemVybyByZXByZXNlbnRzIHRoZSBlbnRpcmUg ZGV2aWNlLiBWYWxpZA0KPiArICAvLy8gcGFydGl0aW9uIG51bWJlcnMgZm9yIGEgTUJSIHBhcnRp dGlvbiBhcmUgWzEsIDRdLiBWYWxpZA0KPiArICAvLy8gcGFydGl0aW9uIG51bWJlcnMgZm9yIGEg R1BUIHBhcnRpdGlvbiBhcmUgWzEsIE51bWJlck9mUGFydGl0aW9uRW50cmllc10uDQo+ICsgIC8v Lw0KPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgIFBhcnRpdGlvbk51bWJlcjsN Cj4gKyAgLy8vDQo+ICsgIC8vLyBTdGFydGluZyBMQkEgb2YgdGhlIHBhcnRpdGlvbiBvbiB0aGUg aGFyZCBkcml2ZS4NCj4gKyAgLy8vDQo+ICsgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgICAg ICAgUGFydGl0aW9uU3RhcnQ7DQo+ICsgIC8vLw0KPiArICAvLy8gU2l6ZSBvZiB0aGUgcGFydGl0 aW9uIGluIHVuaXRzIG9mIExvZ2ljYWwgQmxvY2tzLg0KPiArICAvLy8NCj4gKyAgVUlOVDY0ICAg ICAgICAgICAgICAgICAgICAgICAgICBQYXJ0aXRpb25TaXplOw0KPiArICAvLy8NCj4gKyAgLy8v IFNpZ25hdHVyZSB1bmlxdWUgdG8gdGhpcyBwYXJ0aXRpb246DQo+ICsgIC8vLyBJZiBTaWduYXR1 cmVUeXBlIGlzIDAsIHRoaXMgZmllbGQgaGFzIHRvIGJlIGluaXRpYWxpemVkIHdpdGggMTYgemVy b3MuDQo+ICsgIC8vLyBJZiBTaWduYXR1cmVUeXBlIGlzIDEsIHRoZSBNQlIgc2lnbmF0dXJlIGlz IHN0b3JlZCBpbiB0aGUgZmlyc3QgNCBieXRlcyBvZiB0aGlzIGZpZWxkLg0KPiArICAvLy8gVGhl IG90aGVyIDEyIGJ5dGVzIGFyZSBpbml0aWFsaXplZCB3aXRoIHplcm9zLg0KPiArICAvLy8gSWYg U2lnbmF0dXJlVHlwZSBpcyAyLCB0aGlzIGZpZWxkIGNvbnRhaW5zIGEgMTYgYnl0ZSBzaWduYXR1 cmUuDQo+ICsgIC8vLw0KPiArICBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpZ25h dHVyZVsxNl07DQo+ICsgIC8vLw0KPiArICAvLy8gUGFydGl0aW9uIEZvcm1hdDogKFVudXNlZCB2 YWx1ZXMgcmVzZXJ2ZWQpLg0KPiArICAvLy8gMHgwMSAtIFBDLUFUIGNvbXBhdGlibGUgbGVnYWN5 IE1CUi4NCj4gKyAgLy8vIDB4MDIgLSBHVUlEIFBhcnRpdGlvbiBUYWJsZS4NCj4gKyAgLy8vDQo+ ICsgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgTUJSVHlwZTsNCj4gKyAgLy8vDQo+ ICsgIC8vLyBUeXBlIG9mIERpc2sgU2lnbmF0dXJlOiAoVW51c2VkIHZhbHVlcyByZXNlcnZlZCku DQo+ICsgIC8vLyAweDAwIC0gTm8gRGlzayBTaWduYXR1cmUuDQo+ICsgIC8vLyAweDAxIC0gMzIt Yml0IHNpZ25hdHVyZSBmcm9tIGFkZHJlc3MgMHgxYjggb2YgdGhlIHR5cGUgMHgwMSBNQlIuDQo+ ICsgIC8vLyAweDAyIC0gR1VJRCBzaWduYXR1cmUuDQo+ICsgIC8vLw0KPiArICBVSU5UOCAgICAg ICAgICAgICAgICAgICAgICAgICAgIFNpZ25hdHVyZVR5cGU7DQo+ICt9IEhBUkREUklWRV9ERVZJ Q0VfUEFUSDsNCj4gKw0KPiArI2RlZmluZSBNQlJfVFlQRV9QQ0FUICAgICAgICAgICAgIDB4MDEN Cj4gKyNkZWZpbmUgTUJSX1RZUEVfRUZJX1BBUlRJVElPTl9UQUJMRV9IRUFERVIgMHgwMg0KPiAr DQo+ICsjZGVmaW5lIE5PX0RJU0tfU0lHTkFUVVJFICAgICAgICAgMHgwMA0KPiArI2RlZmluZSBT SUdOQVRVUkVfVFlQRV9NQlIgICAgICAgIDB4MDENCj4gKyNkZWZpbmUgU0lHTkFUVVJFX1RZUEVf R1VJRCAgICAgICAweDAyDQo+ICsNCj4gKy8vLw0KPiArLy8vIENELVJPTSBNZWRpYSBEZXZpY2Ug UGF0aCBTdWJUeXBlLg0KPiArLy8vDQo+ICsjZGVmaW5lIE1FRElBX0NEUk9NX0RQICAgICAgICAg ICAgMHgwMg0KPiArDQo+ICsvLy8NCj4gKy8vLyBUaGUgQ0QtUk9NIE1lZGlhIERldmljZSBQYXRo IGlzIHVzZWQgdG8gZGVmaW5lIGEgc3lzdGVtIHBhcnRpdGlvbiB0aGF0IGV4aXN0cyBvbiBhIENE LVJPTS4NCj4gKy8vLw0KPiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiArICBFRklfREVWSUNFX1BBVEhf UFJPVE9DT0wgICAgICAgIEhlYWRlcjsNCj4gKyAgLy8vDQo+ICsgIC8vLyBCb290IEVudHJ5IG51 bWJlciBmcm9tIHRoZSBCb290IENhdGFsb2cuIFRoZSBJbml0aWFsL0RlZmF1bHQgZW50cnkgaXMg ZGVmaW5lZCBhcyB6ZXJvLg0KPiArICAvLy8NCj4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAg ICAgICAgICBCb290RW50cnk7DQo+ICsgIC8vLw0KPiArICAvLy8gU3RhcnRpbmcgUkJBIG9mIHRo ZSBwYXJ0aXRpb24gb24gdGhlIG1lZGl1bS4gQ0QtUk9NcyB1c2UgUmVsYXRpdmUgbG9naWNhbCBC bG9jayBBZGRyZXNzaW5nLg0KPiArICAvLy8NCj4gKyAgVUlOVDY0ICAgICAgICAgICAgICAgICAg ICAgICAgICBQYXJ0aXRpb25TdGFydDsNCj4gKyAgLy8vDQo+ICsgIC8vLyBTaXplIG9mIHRoZSBw YXJ0aXRpb24gaW4gdW5pdHMgb2YgQmxvY2tzLCBhbHNvIGNhbGxlZCBTZWN0b3JzLg0KPiArICAv Ly8NCj4gKyAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJ0aXRpb25TaXplOw0K PiArfSBDRFJPTV9ERVZJQ0VfUEFUSDsNCj4gKw0KPiArLy8NCj4gKy8vIFVzZSBWRU5ET1JfREVW SUNFX1BBVEggc3RydWN0DQo+ICsvLw0KPiArI2RlZmluZSBNRURJQV9WRU5ET1JfRFAgICAgICAg ICAgIDB4MDMgIC8vLzwgTWVkaWEgdmVuZG9yIGRldmljZSBwYXRoIHN1YnR5cGUuDQo+ICsNCj4g Ky8vLw0KPiArLy8vIEZpbGUgUGF0aCBNZWRpYSBEZXZpY2UgUGF0aCBTdWJUeXBlDQo+ICsvLy8N Cj4gKyNkZWZpbmUgTUVESUFfRklMRVBBVEhfRFAgICAgICAgICAweDA0DQo+ICt0eXBlZGVmIHN0 cnVjdCB7DQo+ICsgIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAgICAgSGVhZGVyOw0KPiAr ICAvLy8NCj4gKyAgLy8vIEEgTlVMTC10ZXJtaW5hdGVkIFBhdGggc3RyaW5nIGluY2x1ZGluZyBk aXJlY3RvcnkgYW5kIGZpbGUgbmFtZXMuDQo+ICsgIC8vLw0KPiArICBDSEFSMTYgICAgICAgICAg ICAgICAgICAgICAgICAgIFBhdGhOYW1lWzFdOw0KPiArfSBGSUxFUEFUSF9ERVZJQ0VfUEFUSDsN Cj4gKw0KPiArI2RlZmluZSBTSVpFX09GX0ZJTEVQQVRIX0RFVklDRV9QQVRIICBPRkZTRVRfT0Yo RklMRVBBVEhfREVWSUNFX1BBVEgsUGF0aE5hbWUpDQo+ICsNCj4gKy8vLw0KPiArLy8vIE1lZGlh IFByb3RvY29sIERldmljZSBQYXRoIFN1YlR5cGUuDQo+ICsvLy8NCj4gKyNkZWZpbmUgTUVESUFf UFJPVE9DT0xfRFAgICAgICAgICAweDA1DQo+ICsNCj4gKy8vLw0KPiArLy8vIFRoZSBNZWRpYSBQ cm90b2NvbCBEZXZpY2UgUGF0aCBpcyB1c2VkIHRvIGRlbm90ZSB0aGUgcHJvdG9jb2wgdGhhdCBp cyBiZWluZw0KPiArLy8vIHVzZWQgaW4gYSBkZXZpY2UgcGF0aCBhdCB0aGUgbG9jYXRpb24gb2Yg dGhlIHBhdGggc3BlY2lmaWVkLg0KPiArLy8vIE1hbnkgcHJvdG9jb2xzIGFyZSBpbmhlcmVudCB0 byB0aGUgc3R5bGUgb2YgZGV2aWNlIHBhdGguDQo+ICsvLy8NCj4gK3R5cGVkZWYgc3RydWN0IHsN Cj4gKyAgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICAgICAgICBIZWFkZXI7DQo+ICsgIC8vLw0K PiArICAvLy8gVGhlIElEIG9mIHRoZSBwcm90b2NvbC4NCj4gKyAgLy8vDQo+ICsgIEVGSV9HVUlE ICAgICAgICAgICAgICAgICAgICAgICAgUHJvdG9jb2w7DQo+ICt9IE1FRElBX1BST1RPQ09MX0RF VklDRV9QQVRIOw0KPiArDQo+ICsvLy8NCj4gKy8vLyBQSVdHIEZpcm13YXJlIEZpbGUgU3ViVHlw ZS4NCj4gKy8vLw0KPiArI2RlZmluZSBNRURJQV9QSVdHX0ZXX0ZJTEVfRFAgICAgIDB4MDYNCj4g Kw0KPiArLy8vDQo+ICsvLy8gVGhpcyBkZXZpY2UgcGF0aCBpcyB1c2VkIGJ5IHN5c3RlbXMgaW1w bGVtZW50aW5nIHRoZSBVRUZJIFBJIFNwZWNpZmljYXRpb24gMS4wIHRvIGRlc2NyaWJlIGEgZmly bXdhcmUgZmlsZS4NCj4gKy8vLw0KPiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiArICBFRklfREVWSUNF X1BBVEhfUFJPVE9DT0wgICAgICAgIEhlYWRlcjsNCj4gKyAgLy8vDQo+ICsgIC8vLyBGaXJtd2Fy ZSBmaWxlIG5hbWUNCj4gKyAgLy8vDQo+ICsgIEVGSV9HVUlEICAgICAgICAgICAgICAgICAgICAg ICAgRnZGaWxlTmFtZTsNCj4gK30gTUVESUFfRldfVk9MX0ZJTEVQQVRIX0RFVklDRV9QQVRIOw0K PiArDQo+ICsvLy8NCj4gKy8vLyBQSVdHIEZpcm13YXJlIFZvbHVtZSBEZXZpY2UgUGF0aCBTdWJU eXBlLg0KPiArLy8vDQo+ICsjZGVmaW5lIE1FRElBX1BJV0dfRldfVk9MX0RQICAgICAgMHgwNw0K PiArDQo+ICsvLy8NCj4gKy8vLyBUaGlzIGRldmljZSBwYXRoIGlzIHVzZWQgYnkgc3lzdGVtcyBp bXBsZW1lbnRpbmcgdGhlIFVFRkkgUEkgU3BlY2lmaWNhdGlvbiAxLjAgdG8gZGVzY3JpYmUgYSBm aXJtd2FyZSB2b2x1bWUuDQo+ICsvLy8NCj4gK3R5cGVkZWYgc3RydWN0IHsNCj4gKyAgRUZJX0RF VklDRV9QQVRIX1BST1RPQ09MICAgICAgICBIZWFkZXI7DQo+ICsgIC8vLw0KPiArICAvLy8gRmly bXdhcmUgdm9sdW1lIG5hbWUuDQo+ICsgIC8vLw0KPiArICBFRklfR1VJRCAgICAgICAgICAgICAg ICAgICAgICAgIEZ2TmFtZTsNCj4gK30gTUVESUFfRldfVk9MX0RFVklDRV9QQVRIOw0KPiArDQo+ ICsvLy8NCj4gKy8vLyBNZWRpYSByZWxhdGl2ZSBvZmZzZXQgcmFuZ2UgZGV2aWNlIHBhdGguDQo+ ICsvLy8NCj4gKyNkZWZpbmUgTUVESUFfUkVMQVRJVkVfT0ZGU0VUX1JBTkdFX0RQIDB4MDgNCj4g Kw0KPiArLy8vDQo+ICsvLy8gVXNlZCB0byBkZXNjcmliZSB0aGUgb2Zmc2V0IHJhbmdlIG9mIG1l ZGlhIHJlbGF0aXZlLg0KPiArLy8vDQo+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ICsgIEVGSV9ERVZJ Q0VfUEFUSF9QUk9UT0NPTCAgSGVhZGVyOw0KPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAg IFJlc2VydmVkOw0KPiArICBVSU5UNjQgICAgICAgICAgICAgICAgICAgIFN0YXJ0aW5nT2Zmc2V0 Ow0KPiArICBVSU5UNjQgICAgICAgICAgICAgICAgICAgIEVuZGluZ09mZnNldDsNCj4gK30gTUVE SUFfUkVMQVRJVkVfT0ZGU0VUX1JBTkdFX0RFVklDRV9QQVRIOw0KPiArDQo+ICsvLy8NCj4gKy8v LyBUaGlzIEdVSUQgZGVmaW5lcyBhIFJBTSBEaXNrIHN1cHBvcnRpbmcgYSByYXcgZGlzayBmb3Jt YXQgaW4gdm9sYXRpbGUgbWVtb3J5Lg0KPiArLy8vDQo+ICsjZGVmaW5lIEVGSV9WSVJUVUFMX0RJ U0tfR1VJRCBcDQo+ICsgIHsgXA0KPiArICAgIDB4NzdBQjUzNUEsIDB4NDVGQywgMHg2MjRCLCB7 MHg1NSwgMHg2MCwgMHhGNywgMHhCMiwgMHg4MSwgMHhEMSwgMHhGOSwgMHg2RSB9IFwNCj4gKyAg fQ0KPiArDQo+ICtleHRlcm4gIEVGSV9HVUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdF ZmlWaXJ0dWFsRGlza0d1aWQ7DQo+ICsNCj4gKy8vLw0KPiArLy8vIFRoaXMgR1VJRCBkZWZpbmVz IGEgUkFNIERpc2sgc3VwcG9ydGluZyBhbiBJU08gaW1hZ2UgaW4gdm9sYXRpbGUgbWVtb3J5Lg0K PiArLy8vDQo+ICsjZGVmaW5lIEVGSV9WSVJUVUFMX0NEX0dVSUQgXA0KPiArICB7IFwNCj4gKyAg ICAweDNENUFCRDMwLCAweDQxNzUsIDB4ODdDRSwgezB4NkQsIDB4NjQsIDB4RDIsIDB4QUQsIDB4 RTUsIDB4MjMsIDB4QzQsIDB4QkIgfSBcDQo+ICsgIH0NCj4gK2V4dGVybiAgRUZJX0dVSUQgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZ0VmaVZpcnR1YWxDZEd1aWQ7DQo+ICsNCj4gKy8vLw0K PiArLy8vIFRoaXMgR1VJRCBkZWZpbmVzIGEgUkFNIERpc2sgc3VwcG9ydGluZyBhIHJhdyBkaXNr IGZvcm1hdCBpbiBwZXJzaXN0ZW50IG1lbW9yeS4NCj4gKy8vLw0KPiArI2RlZmluZSBFRklfUEVS U0lTVEVOVF9WSVJUVUFMX0RJU0tfR1VJRCBcDQo+ICsgIHsgXA0KPiArICAgIDB4NUNFQTAyQzks IDB4NEQwNywgMHg2OUQzLCB7MHgyNiwgMHg5RiAsMHg0NCwgMHg5NiwgMHhGQiwgMHhFMCwgMHg5 NiwgMHhGOSB9IFwNCj4gKyAgfQ0KPiArDQo+ICtleHRlcm4gIEVGSV9HVUlEICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGdFZmlQZXJzaXN0ZW50VmlydHVhbERpc2tHdWlkOw0KPiArDQo+ICsv Ly8NCj4gKy8vLyBUaGlzIEdVSUQgZGVmaW5lcyBhIFJBTSBEaXNrIHN1cHBvcnRpbmcgYW4gSVNP IGltYWdlIGluIHBlcnNpc3RlbnQgbWVtb3J5Lg0KPiArLy8vDQo+ICsjZGVmaW5lIEVGSV9QRVJT SVNURU5UX1ZJUlRVQUxfQ0RfR1VJRCBcDQo+ICsgIHsgXA0KPiArICAgIDB4MDgwMTgxODgsIDB4 NDJDRCwgMHhCQjQ4LCB7MHgxMCwgMHgwRiwgMHg1MywgMHg4NywgMHhENSwgMHgzRCwgMHhFRCwg MHgzRCB9IFwNCj4gKyAgfQ0KPiArDQo+ICtleHRlcm4gIEVGSV9HVUlEICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGdFZmlQZXJzaXN0ZW50VmlydHVhbENkR3VpZDsNCj4gKw0KPiArLy8vDQo+ ICsvLy8gTWVkaWEgcmFtIGRpc2sgZGV2aWNlIHBhdGguDQo+ICsvLy8NCj4gKyNkZWZpbmUgTUVE SUFfUkFNX0RJU0tfRFAgICAgICAgICAweDA5DQo+ICsNCj4gKy8vLw0KPiArLy8vIFVzZWQgdG8g ZGVzY3JpYmUgdGhlIHJhbSBkaXNrIGRldmljZSBwYXRoLg0KPiArLy8vDQo+ICt0eXBlZGVmIHN0 cnVjdCB7DQo+ICsgIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAgICAgSGVhZGVyOw0KPiAr ICAvLy8NCj4gKyAgLy8vIFN0YXJ0aW5nIE1lbW9yeSBBZGRyZXNzLg0KPiArICAvLy8NCj4gKyAg VUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgICBTdGFydGluZ0FkZHJbMl07DQo+ICsgIC8v Lw0KPiArICAvLy8gRW5kaW5nIE1lbW9yeSBBZGRyZXNzLg0KPiArICAvLy8NCj4gKyAgVUlOVDMy ICAgICAgICAgICAgICAgICAgICAgICAgICBFbmRpbmdBZGRyWzJdOw0KPiArICAvLy8NCj4gKyAg Ly8vIEdVSUQgdGhhdCBkZWZpbmVzIHRoZSB0eXBlIG9mIHRoZSBSQU0gRGlzay4NCj4gKyAgLy8v DQo+ICsgIEVGSV9HVUlEICAgICAgICAgICAgICAgICAgICAgICAgVHlwZUd1aWQ7DQo+ICsgIC8v Lw0KPiArICAvLy8gUkFNIERpc2tpbnN0YW5jZSBudW1iZXIsIGlmIHN1cHBvcnRlZC4gVGhlIGRl ZmF1bHQgdmFsdWUgaXMgemVyby4NCj4gKyAgLy8vDQo+ICsgIFVJTlQxNiAgICAgICAgICAgICAg ICAgICAgICAgICAgSW5zdGFuY2U7DQo+ICt9IE1FRElBX1JBTV9ESVNLX0RFVklDRV9QQVRIOw0K PiArDQo+ICsvLy8NCj4gKy8vLyBCSU9TIEJvb3QgU3BlY2lmaWNhdGlvbiBEZXZpY2UgUGF0aC4N Cj4gKy8vLw0KPiArI2RlZmluZSBCQlNfREVWSUNFX1BBVEggICAgICAgICAgIDB4MDUNCj4gKw0K PiArLy8vDQo+ICsvLy8gQklPUyBCb290IFNwZWNpZmljYXRpb24gRGV2aWNlIFBhdGggU3ViVHlw ZS4NCj4gKy8vLw0KPiArI2RlZmluZSBCQlNfQkJTX0RQICAgICAgICAgICAgICAgIDB4MDENCj4g Kw0KPiArLy8vDQo+ICsvLy8gVGhpcyBEZXZpY2UgUGF0aCBpcyB1c2VkIHRvIGRlc2NyaWJlIHRo ZSBib290aW5nIG9mIG5vbi1FRkktYXdhcmUgb3BlcmF0aW5nIHN5c3RlbXMuDQo+ICsvLy8NCj4g K3R5cGVkZWYgc3RydWN0IHsNCj4gKyAgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICAgICAgICBI ZWFkZXI7DQo+ICsgIC8vLw0KPiArICAvLy8gRGV2aWNlIFR5cGUgYXMgZGVmaW5lZCBieSB0aGUg QklPUyBCb290IFNwZWNpZmljYXRpb24uDQo+ICsgIC8vLw0KPiArICBVSU5UMTYgICAgICAgICAg ICAgICAgICAgICAgICAgIERldmljZVR5cGU7DQo+ICsgIC8vLw0KPiArICAvLy8gU3RhdHVzIEZs YWdzIGFzIGRlZmluZWQgYnkgdGhlIEJJT1MgQm9vdCBTcGVjaWZpY2F0aW9uLg0KPiArICAvLy8N Cj4gKyAgVUlOVDE2ICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXNGbGFnOw0KPiArICAv Ly8NCj4gKyAgLy8vIE51bGwtdGVybWluYXRlZCBBU0NJSSBzdHJpbmcgdGhhdCBkZXNjcmliZXMg dGhlIGJvb3QgZGV2aWNlIHRvIGEgdXNlci4NCj4gKyAgLy8vDQo+ICsgIENIQVI4ICAgICAgICAg ICAgICAgICAgICAgICAgICAgU3RyaW5nWzFdOw0KPiArfSBCQlNfQkJTX0RFVklDRV9QQVRIOw0K PiArDQo+ICsvLw0KPiArLy8gRGV2aWNlVHlwZSBkZWZpbml0aW9ucyAtIGZyb20gQkJTIHNwZWNp ZmljYXRpb24NCj4gKy8vDQo+ICsjZGVmaW5lIEJCU19UWVBFX0ZMT1BQWSAgICAgICAgICAgMHgw MQ0KPiArI2RlZmluZSBCQlNfVFlQRV9IQVJERFJJVkUgICAgICAgIDB4MDINCj4gKyNkZWZpbmUg QkJTX1RZUEVfQ0RST00gICAgICAgICAgICAweDAzDQo+ICsjZGVmaW5lIEJCU19UWVBFX1BDTUNJ QSAgICAgICAgICAgMHgwNA0KPiArI2RlZmluZSBCQlNfVFlQRV9VU0IgICAgICAgICAgICAgIDB4 MDUNCj4gKyNkZWZpbmUgQkJTX1RZUEVfRU1CRURERURfTkVUV09SSyAweDA2DQo+ICsjZGVmaW5l IEJCU19UWVBFX0JFViAgICAgICAgICAgICAgMHg4MA0KPiArI2RlZmluZSBCQlNfVFlQRV9VTktO T1dOICAgICAgICAgIDB4RkYNCj4gKw0KPiArDQo+ICsvLy8NCj4gKy8vLyBVbmlvbiBvZiBhbGwg cG9zc2libGUgRGV2aWNlIFBhdGhzIGFuZCBwb2ludGVycyB0byBEZXZpY2UgUGF0aHMuDQo+ICsv Ly8NCj4gK3R5cGVkZWYgdW5pb24gew0KPiArICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICAg ICAgICAgICAgICAgICAgRGV2UGF0aDsNCj4gKyAgUENJX0RFVklDRV9QQVRIICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFBjaTsNCj4gKyAgUENDQVJEX0RFVklDRV9QQVRIICAgICAgICAgICAg ICAgICAgICAgICAgIFBjQ2FyZDsNCj4gKyAgTUVNTUFQX0RFVklDRV9QQVRIICAgICAgICAgICAg ICAgICAgICAgICAgIE1lbU1hcDsNCj4gKyAgVkVORE9SX0RFVklDRV9QQVRIICAgICAgICAgICAg ICAgICAgICAgICAgIFZlbmRvcjsNCj4gKw0KPiArICBDT05UUk9MTEVSX0RFVklDRV9QQVRIICAg ICAgICAgICAgICAgICAgICAgQ29udHJvbGxlcjsNCj4gKyAgQk1DX0RFVklDRV9QQVRIICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEJtYzsNCj4gKyAgQUNQSV9ISURfREVWSUNFX1BBVEggICAg ICAgICAgICAgICAgICAgICAgIEFjcGk7DQo+ICsgIEFDUElfRVhURU5ERURfSElEX0RFVklDRV9Q QVRIICAgICAgICAgICAgICBFeHRlbmRlZEFjcGk7DQo+ICsgIEFDUElfQURSX0RFVklDRV9QQVRI ICAgICAgICAgICAgICAgICAgICAgICBBY3BpQWRyOw0KPiArDQo+ICsgIEFUQVBJX0RFVklDRV9Q QVRIICAgICAgICAgICAgICAgICAgICAgICAgICBBdGFwaTsNCj4gKyAgU0NTSV9ERVZJQ0VfUEFU SCAgICAgICAgICAgICAgICAgICAgICAgICAgIFNjc2k7DQo+ICsgIElTQ1NJX0RFVklDRV9QQVRI ICAgICAgICAgICAgICAgICAgICAgICAgICBJc2NzaTsNCj4gKyAgRklCUkVDSEFOTkVMX0RFVklD RV9QQVRIICAgICAgICAgICAgICAgICAgIEZpYnJlQ2hhbm5lbDsNCj4gKyAgRklCUkVDSEFOTkVM RVhfREVWSUNFX1BBVEggICAgICAgICAgICAgICAgIEZpYnJlQ2hhbm5lbEV4Ow0KPiArDQo+ICsg IEYxMzk0X0RFVklDRV9QQVRIICAgICAgICAgICAgICAgICAgICAgICAgICBGMTM5NDsNCj4gKyAg VVNCX0RFVklDRV9QQVRIICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzYjsNCj4gKyAgU0FU QV9ERVZJQ0VfUEFUSCAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhdGE7DQo+ICsgIFVTQl9D TEFTU19ERVZJQ0VfUEFUSCAgICAgICAgICAgICAgICAgICAgICBVc2JDbGFzczsNCj4gKyAgVVNC X1dXSURfREVWSUNFX1BBVEggICAgICAgICAgICAgICAgICAgICAgIFVzYld3aWQ7DQo+ICsgIERF VklDRV9MT0dJQ0FMX1VOSVRfREVWSUNFX1BBVEggICAgICAgICAgICBMb2dpY1VuaXQ7DQo+ICsg IEkyT19ERVZJQ0VfUEFUSCAgICAgICAgICAgICAgICAgICAgICAgICAgICBJMk87DQo+ICsgIE1B Q19BRERSX0RFVklDRV9QQVRIICAgICAgICAgICAgICAgICAgICAgICBNYWNBZGRyOw0KPiArICBJ UHY0X0RFVklDRV9QQVRIICAgICAgICAgICAgICAgICAgICAgICAgICAgSXB2NDsNCj4gKyAgSVB2 Nl9ERVZJQ0VfUEFUSCAgICAgICAgICAgICAgICAgICAgICAgICAgIElwdjY7DQo+ICsgIFZMQU5f REVWSUNFX1BBVEggICAgICAgICAgICAgICAgICAgICAgICAgICBWbGFuOw0KPiArICBJTkZJTklC QU5EX0RFVklDRV9QQVRIICAgICAgICAgICAgICAgICAgICAgSW5maW5pQmFuZDsNCj4gKyAgVUFS VF9ERVZJQ0VfUEFUSCAgICAgICAgICAgICAgICAgICAgICAgICAgIFVhcnQ7DQo+ICsgIFVBUlRf RkxPV19DT05UUk9MX0RFVklDRV9QQVRIICAgICAgICAgICAgICBVYXJ0Rmxvd0NvbnRyb2w7DQo+ ICsgIFNBU19ERVZJQ0VfUEFUSCAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYXM7DQo+ICsg IFNBU0VYX0RFVklDRV9QQVRIICAgICAgICAgICAgICAgICAgICAgICAgICBTYXNFeDsNCj4gKyAg TlZNRV9OQU1FU1BBQ0VfREVWSUNFX1BBVEggICAgICAgICAgICAgICAgIE52bWVOYW1lc3BhY2U7 DQo+ICsgIEROU19ERVZJQ0VfUEFUSCAgICAgICAgICAgICAgICAgICAgICAgICAgICBEbnM7DQo+ ICsgIFVSSV9ERVZJQ0VfUEFUSCAgICAgICAgICAgICAgICAgICAgICAgICAgICBVcmk7DQo+ICsg IEJMVUVUT09USF9ERVZJQ0VfUEFUSCAgICAgICAgICAgICAgICAgICAgICBCbHVldG9vdGg7DQo+ ICsgIFdJRklfREVWSUNFX1BBVEggICAgICAgICAgICAgICAgICAgICAgICAgICBXaUZpOw0KPiAr ICBVRlNfREVWSUNFX1BBVEggICAgICAgICAgICAgICAgICAgICAgICAgICAgVWZzOw0KPiArICBT RF9ERVZJQ0VfUEFUSCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Q7DQo+ICsgIEVNTUNf REVWSUNFX1BBVEggICAgICAgICAgICAgICAgICAgICAgICAgICBFbW1jOw0KPiArICBIQVJERFJJ VkVfREVWSUNFX1BBVEggICAgICAgICAgICAgICAgICAgICAgSGFyZERyaXZlOw0KPiArICBDRFJP TV9ERVZJQ0VfUEFUSCAgICAgICAgICAgICAgICAgICAgICAgICAgQ0Q7DQo+ICsNCj4gKyAgRklM RVBBVEhfREVWSUNFX1BBVEggICAgICAgICAgICAgICAgICAgICAgIEZpbGVQYXRoOw0KPiArICBN RURJQV9QUk9UT0NPTF9ERVZJQ0VfUEFUSCAgICAgICAgICAgICAgICAgTWVkaWFQcm90b2NvbDsN Cj4gKw0KPiArICBNRURJQV9GV19WT0xfREVWSUNFX1BBVEggICAgICAgICAgICAgICAgICAgRmly bXdhcmVWb2x1bWU7DQo+ICsgIE1FRElBX0ZXX1ZPTF9GSUxFUEFUSF9ERVZJQ0VfUEFUSCAgICAg ICAgICBGaXJtd2FyZUZpbGU7DQo+ICsgIE1FRElBX1JFTEFUSVZFX09GRlNFVF9SQU5HRV9ERVZJ Q0VfUEFUSCAgICBPZmZzZXQ7DQo+ICsgIE1FRElBX1JBTV9ESVNLX0RFVklDRV9QQVRIICAgICAg ICAgICAgICAgICBSYW1EaXNrOw0KPiArICBCQlNfQkJTX0RFVklDRV9QQVRIICAgICAgICAgICAg ICAgICAgICAgICAgQmJzOw0KPiArfSBFRklfREVWX1BBVEg7DQo+ICsNCj4gKw0KPiArDQo+ICt0 eXBlZGVmIHVuaW9uIHsNCj4gKyAgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICAgICAgICAgICAg ICAgICAgICpEZXZQYXRoOw0KPiArICBQQ0lfREVWSUNFX1BBVEggICAgICAgICAgICAgICAgICAg ICAgICAgICAgKlBjaTsNCj4gKyAgUENDQVJEX0RFVklDRV9QQVRIICAgICAgICAgICAgICAgICAg ICAgICAgICpQY0NhcmQ7DQo+ICsgIE1FTU1BUF9ERVZJQ0VfUEFUSCAgICAgICAgICAgICAgICAg ICAgICAgICAqTWVtTWFwOw0KPiArICBWRU5ET1JfREVWSUNFX1BBVEggICAgICAgICAgICAgICAg ICAgICAgICAgKlZlbmRvcjsNCj4gKw0KPiArICBDT05UUk9MTEVSX0RFVklDRV9QQVRIICAgICAg ICAgICAgICAgICAgICAgKkNvbnRyb2xsZXI7DQo+ICsgIEJNQ19ERVZJQ0VfUEFUSCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAqQm1jOw0KPiArICBBQ1BJX0hJRF9ERVZJQ0VfUEFUSCAgICAg ICAgICAgICAgICAgICAgICAgKkFjcGk7DQo+ICsgIEFDUElfRVhURU5ERURfSElEX0RFVklDRV9Q QVRIICAgICAgICAgICAgICAqRXh0ZW5kZWRBY3BpOw0KPiArICBBQ1BJX0FEUl9ERVZJQ0VfUEFU SCAgICAgICAgICAgICAgICAgICAgICAgKkFjcGlBZHI7DQo+ICsNCj4gKyAgQVRBUElfREVWSUNF X1BBVEggICAgICAgICAgICAgICAgICAgICAgICAgICpBdGFwaTsNCj4gKyAgU0NTSV9ERVZJQ0Vf UEFUSCAgICAgICAgICAgICAgICAgICAgICAgICAgICpTY3NpOw0KPiArICBJU0NTSV9ERVZJQ0Vf UEFUSCAgICAgICAgICAgICAgICAgICAgICAgICAgKklzY3NpOw0KPiArICBGSUJSRUNIQU5ORUxf REVWSUNFX1BBVEggICAgICAgICAgICAgICAgICAgKkZpYnJlQ2hhbm5lbDsNCj4gKyAgRklCUkVD SEFOTkVMRVhfREVWSUNFX1BBVEggICAgICAgICAgICAgICAgICpGaWJyZUNoYW5uZWxFeDsNCj4g Kw0KPiArICBGMTM5NF9ERVZJQ0VfUEFUSCAgICAgICAgICAgICAgICAgICAgICAgICAgKkYxMzk0 Ow0KPiArICBVU0JfREVWSUNFX1BBVEggICAgICAgICAgICAgICAgICAgICAgICAgICAgKlVzYjsN Cj4gKyAgU0FUQV9ERVZJQ0VfUEFUSCAgICAgICAgICAgICAgICAgICAgICAgICAgICpTYXRhOw0K PiArICBVU0JfQ0xBU1NfREVWSUNFX1BBVEggICAgICAgICAgICAgICAgICAgICAgKlVzYkNsYXNz Ow0KPiArICBVU0JfV1dJRF9ERVZJQ0VfUEFUSCAgICAgICAgICAgICAgICAgICAgICAgKlVzYld3 aWQ7DQo+ICsgIERFVklDRV9MT0dJQ0FMX1VOSVRfREVWSUNFX1BBVEggICAgICAgICAgICAqTG9n aWNVbml0Ow0KPiArICBJMk9fREVWSUNFX1BBVEggICAgICAgICAgICAgICAgICAgICAgICAgICAg KkkyTzsNCj4gKyAgTUFDX0FERFJfREVWSUNFX1BBVEggICAgICAgICAgICAgICAgICAgICAgICpN YWNBZGRyOw0KPiArICBJUHY0X0RFVklDRV9QQVRIICAgICAgICAgICAgICAgICAgICAgICAgICAg KklwdjQ7DQo+ICsgIElQdjZfREVWSUNFX1BBVEggICAgICAgICAgICAgICAgICAgICAgICAgICAq SXB2NjsNCj4gKyAgVkxBTl9ERVZJQ0VfUEFUSCAgICAgICAgICAgICAgICAgICAgICAgICAgICpW bGFuOw0KPiArICBJTkZJTklCQU5EX0RFVklDRV9QQVRIICAgICAgICAgICAgICAgICAgICAgKklu ZmluaUJhbmQ7DQo+ICsgIFVBUlRfREVWSUNFX1BBVEggICAgICAgICAgICAgICAgICAgICAgICAg ICAqVWFydDsNCj4gKyAgVUFSVF9GTE9XX0NPTlRST0xfREVWSUNFX1BBVEggICAgICAgICAgICAg ICpVYXJ0Rmxvd0NvbnRyb2w7DQo+ICsgIFNBU19ERVZJQ0VfUEFUSCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAqU2FzOw0KPiArICBTQVNFWF9ERVZJQ0VfUEFUSCAgICAgICAgICAgICAgICAg ICAgICAgICAgKlNhc0V4Ow0KPiArICBOVk1FX05BTUVTUEFDRV9ERVZJQ0VfUEFUSCAgICAgICAg ICAgICAgICAgKk52bWVOYW1lc3BhY2U7DQo+ICsgIEROU19ERVZJQ0VfUEFUSCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAqRG5zOw0KPiArICBVUklfREVWSUNFX1BBVEggICAgICAgICAgICAg ICAgICAgICAgICAgICAgKlVyaTsNCj4gKyAgQkxVRVRPT1RIX0RFVklDRV9QQVRIICAgICAgICAg ICAgICAgICAgICAgICpCbHVldG9vdGg7DQo+ICsgIFdJRklfREVWSUNFX1BBVEggICAgICAgICAg ICAgICAgICAgICAgICAgICAqV2lGaTsNCj4gKyAgVUZTX0RFVklDRV9QQVRIICAgICAgICAgICAg ICAgICAgICAgICAgICAgICpVZnM7DQo+ICsgIFNEX0RFVklDRV9QQVRIICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAqU2Q7DQo+ICsgIEVNTUNfREVWSUNFX1BBVEggICAgICAgICAgICAgICAg ICAgICAgICAgICAqRW1tYzsNCj4gKyAgSEFSRERSSVZFX0RFVklDRV9QQVRIICAgICAgICAgICAg ICAgICAgICAgICpIYXJkRHJpdmU7DQo+ICsgIENEUk9NX0RFVklDRV9QQVRIICAgICAgICAgICAg ICAgICAgICAgICAgICAqQ0Q7DQo+ICsNCj4gKyAgRklMRVBBVEhfREVWSUNFX1BBVEggICAgICAg ICAgICAgICAgICAgICAgICpGaWxlUGF0aDsNCj4gKyAgTUVESUFfUFJPVE9DT0xfREVWSUNFX1BB VEggICAgICAgICAgICAgICAgICpNZWRpYVByb3RvY29sOw0KPiArDQo+ICsgIE1FRElBX0ZXX1ZP TF9ERVZJQ0VfUEFUSCAgICAgICAgICAgICAgICAgICAqRmlybXdhcmVWb2x1bWU7DQo+ICsgIE1F RElBX0ZXX1ZPTF9GSUxFUEFUSF9ERVZJQ0VfUEFUSCAgICAgICAgICAqRmlybXdhcmVGaWxlOw0K PiArICBNRURJQV9SRUxBVElWRV9PRkZTRVRfUkFOR0VfREVWSUNFX1BBVEggICAgKk9mZnNldDsN Cj4gKyAgTUVESUFfUkFNX0RJU0tfREVWSUNFX1BBVEggICAgICAgICAgICAgICAgICpSYW1EaXNr Ow0KPiArICBCQlNfQkJTX0RFVklDRV9QQVRIICAgICAgICAgICAgICAgICAgICAgICAgKkJiczsN Cj4gKyAgVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpSYXc7DQo+ ICt9IEVGSV9ERVZfUEFUSF9QVFI7DQo+ICsNCj4gKyNkZWZpbmUgRUZJX0RFQlVHUE9SVF9QUk9U T0NPTF9HVUlEIFwNCj4gKyAgeyBcDQo+ICsgICAgMHhFQkE0RThEMiwgMHgzODU4LCAweDQxRUMs IHsweEEyLCAweDgxLCAweDI2LCAweDQ3LCAweEJBLCAweDk2LCAweDYwLCAweEQwIH0gXA0KPiAr ICB9DQo+ICsvLw0KPiArLy8gREVCVUdQT1JUIHZhcmlhYmxlIGRlZmluaXRpb25zLi4uDQo+ICsv Lw0KPiArI2RlZmluZSBFRklfREVCVUdQT1JUX1ZBUklBQkxFX05BTUUgTCJERUJVR1BPUlQiDQo+ ICsjZGVmaW5lIEVGSV9ERUJVR1BPUlRfVkFSSUFCTEVfR1VJRCBFRklfREVCVUdQT1JUX1BST1RP Q09MX0dVSUQNCj4gK2V4dGVybiBFRklfR1VJRCAgZ0VmaURlYnVnUG9ydFZhcmlhYmxlR3VpZDsN Cj4gKw0KPiArLy8NCj4gKy8vIERlYnVnUG9ydCBkZXZpY2UgcGF0aCBkZWZpbml0aW9ucy4uLg0K PiArLy8NCj4gKyNkZWZpbmUgREVWSUNFX1BBVEhfTUVTU0FHSU5HX0RFQlVHUE9SVCBFRklfREVC VUdQT1JUX1BST1RPQ09MX0dVSUQNCj4gK2V4dGVybiBFRklfR1VJRCAgZ0VmaURlYnVnUG9ydERl dmljZVBhdGhHdWlkOw0KPiArDQo+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ICsgIEVGSV9ERVZJQ0Vf UEFUSF9QUk9UT0NPTCAgSGVhZGVyOw0KPiArICBFRklfR1VJRCAgICAgICAgICAgICAgICAgIEd1 aWQ7DQo+ICt9IERFQlVHUE9SVF9ERVZJQ0VfUEFUSDsNCj4gKw0KPiArI3ByYWdtYSBwYWNrKCkN Cj4gKw0KPiArI2RlZmluZSBFTkRfREVWSUNFX1BBVEhfVFlQRSAgICAgICAgICAgICAgICAgMHg3 Zg0KPiArI2RlZmluZSBFTkRfRU5USVJFX0RFVklDRV9QQVRIX1NVQlRZUEUgICAgICAgMHhGRg0K PiArI2RlZmluZSBFTkRfSU5TVEFOQ0VfREVWSUNFX1BBVEhfU1VCVFlQRSAgICAgMHgwMQ0KPiAr DQo+ICtleHRlcm4gRUZJX0dVSUQgZ0VmaURldmljZVBhdGhQcm90b2NvbEd1aWQ7DQo+ICsNCj4g KyNlbmRpZg0KPiBkaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9DL0luY2x1ZGUvUHJvdG9j b2wvRGV2aWNlUGF0aFV0aWxpdGllcy5oIGIvQmFzZVRvb2xzL1NvdXJjZS9DL0luY2x1ZGUvUHJv dG9jb2wvRGV2aWNlUGF0aFV0aWxpdGllcy5oDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGlu ZGV4IDAwMDAwMDAuLmQwNDZjODYNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9CYXNlVG9vbHMv U291cmNlL0MvSW5jbHVkZS9Qcm90b2NvbC9EZXZpY2VQYXRoVXRpbGl0aWVzLmgNCj4gQEAgLTAs MCArMSwyOTQgQEANCj4gKy8qKiBAZmlsZQ0KPiArICBFRklfREVWSUNFX1BBVEhfVVRJTElUSUVT X1BST1RPQ09MIGFzIGRlZmluZWQgaW4gVUVGSSAyLjAuDQo+ICsgIFVzZSB0byBjcmVhdGUgYW5k IG1hbmlwdWxhdGUgZGV2aWNlIHBhdGhzIGFuZCBkZXZpY2Ugbm9kZXMuDQo+ICsNCj4gKyAgQ29w eXJpZ2h0IChjKSAyMDE3LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48 QlI+DQo+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4g KyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNv bmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlDQo+ICsgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMg ZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUgZm91bmQg YXQNCj4gKyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0K PiArDQo+ICsgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5T RSBPTiBBTiAiQVMgSVMiIEJBU0lTLA0KPiArICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVT RU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELg0KPiArDQo+ ICsqKi8NCj4gKw0KPiArI2lmbmRlZiBfX0RFVklDRV9QQVRIX1VUSUxJVElFU19IX18NCj4gKyNk ZWZpbmUgX19ERVZJQ0VfUEFUSF9VVElMSVRJRVNfSF9fDQo+ICsNCj4gKy8vLw0KPiArLy8vIERl dmljZSBQYXRoIFV0aWxpdGllcyBwcm90b2NvbA0KPiArLy8vDQo+ICsjZGVmaW5lIEVGSV9ERVZJ Q0VfUEFUSF9VVElMSVRJRVNfR1VJRCBcDQo+ICsgIHsgXA0KPiArICAgIDB4Mzc5YmU0ZSwgMHhk NzA2LCAweDQzN2QsIHsweGIwLCAweDM3LCAweGVkLCAweGI4LCAweDJmLCAweGI3LCAweDcyLCAw eGE0IH0gXA0KPiArICB9DQo+ICsNCj4gKy8qKg0KPiArICBSZXR1cm5zIHRoZSBzaXplIG9mIHRo ZSBkZXZpY2UgcGF0aCwgaW4gYnl0ZXMuDQo+ICsNCj4gKyAgQHBhcmFtICBEZXZpY2VQYXRoIFBv aW50cyB0byB0aGUgc3RhcnQgb2YgdGhlIEVGSSBkZXZpY2UgcGF0aC4NCj4gKw0KPiArICBAcmV0 dXJuIFNpemUgIFNpemUgb2YgdGhlIHNwZWNpZmllZCBkZXZpY2UgcGF0aCwgaW4gYnl0ZXMsIGlu Y2x1ZGluZyB0aGUgZW5kLW9mLXBhdGggdGFnLg0KPiArICBAcmV0dmFsIDAgICAgIERldmljZVBh dGggaXMgTlVMTA0KPiArDQo+ICsqKi8NCj4gK3R5cGVkZWYNCj4gK1VJTlRODQo+ICsoICpFRklf REVWSUNFX1BBVEhfVVRJTFNfR0VUX0RFVklDRV9QQVRIX1NJWkUpKA0KPiArICAgQ09OU1QgRUZJ X0RFVklDRV9QQVRIX1BST1RPQ09MICpEZXZpY2VQYXRoDQo+ICsgICk7DQo+ICsNCj4gKw0KPiAr LyoqDQo+ICsgIENyZWF0ZSBhIGR1cGxpY2F0ZSBvZiB0aGUgc3BlY2lmaWVkIHBhdGguDQo+ICsN Cj4gKyAgQHBhcmFtICBEZXZpY2VQYXRoIFBvaW50cyB0byB0aGUgc291cmNlIEVGSSBkZXZpY2Ug cGF0aC4NCj4gKw0KPiArICBAcmV0dmFsIFBvaW50ZXIgICAgQSBwb2ludGVyIHRvIHRoZSBkdXBs aWNhdGUgZGV2aWNlIHBhdGguDQo+ICsgIEByZXR2YWwgTlVMTCAgICAgICBpbnN1ZmZpY2llbnQg bWVtb3J5IG9yIERldmljZVBhdGggaXMgTlVMTA0KPiArDQo+ICsqKi8NCj4gK3R5cGVkZWYNCj4g K0VGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCoNCj4gKyggKkVGSV9ERVZJQ0VfUEFUSF9VVElMU19E VVBfREVWSUNFX1BBVEgpKA0KPiArICAgQ09OU1QgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICpE ZXZpY2VQYXRoDQo+ICsgICk7DQo+ICsNCj4gKy8qKg0KPiArICBDcmVhdGUgYSBuZXcgcGF0aCBi eSBhcHBlbmRpbmcgdGhlIHNlY29uZCBkZXZpY2UgcGF0aCB0byB0aGUgZmlyc3QuDQo+ICsgIElm IFNyYzEgaXMgTlVMTCBhbmQgU3JjMiBpcyBub24tTlVMTCwgdGhlbiBhIGR1cGxpY2F0ZSBvZiBT cmMyIGlzIHJldHVybmVkLg0KPiArICBJZiBTcmMxIGlzIG5vbi1OVUxMIGFuZCBTcmMyIGlzIE5V TEwsIHRoZW4gYSBkdXBsaWNhdGUgb2YgU3JjMSBpcyByZXR1cm5lZC4NCj4gKyAgSWYgU3JjMSBh bmQgU3JjMiBhcmUgYm90aCBOVUxMLCB0aGVuIGEgY29weSBvZiBhbiBlbmQtb2YtZGV2aWNlLXBh dGggaXMgcmV0dXJuZWQuDQo+ICsNCj4gKyAgQHBhcmFtICBTcmMxIFBvaW50cyB0byB0aGUgZmly c3QgZGV2aWNlIHBhdGguDQo+ICsgIEBwYXJhbSAgU3JjMiBQb2ludHMgdG8gdGhlIHNlY29uZCBk ZXZpY2UgcGF0aC4NCj4gKw0KPiArICBAcmV0dmFsIFBvaW50ZXIgIEEgcG9pbnRlciB0byB0aGUg bmV3bHkgY3JlYXRlZCBkZXZpY2UgcGF0aC4NCj4gKyAgQHJldHZhbCBOVUxMICAgICBNZW1vcnkg Y291bGQgbm90IGJlIGFsbG9jYXRlZA0KPiArDQo+ICsqKi8NCj4gK3R5cGVkZWYNCj4gK0VGSV9E RVZJQ0VfUEFUSF9QUk9UT0NPTCoNCj4gKyggKkVGSV9ERVZJQ0VfUEFUSF9VVElMU19BUFBFTkRf UEFUSCkoDQo+ICsgICBDT05TVCBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKlNyYzEsDQo+ICsg ICBDT05TVCBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKlNyYzINCj4gKyAgKTsNCj4gKw0KPiAr LyoqDQo+ICsgIENyZWF0ZXMgYSBuZXcgcGF0aCBieSBhcHBlbmRpbmcgdGhlIGRldmljZSBub2Rl IHRvIHRoZSBkZXZpY2UgcGF0aC4NCj4gKyAgSWYgRGV2aWNlTm9kZSBpcyBOVUxMIHRoZW4gYSBj b3B5IG9mIERldmljZVBhdGggaXMgcmV0dXJuZWQuDQo+ICsgIElmIERldmljZVBhdGggaXMgTlVM TCB0aGVuIGEgY29weSBvZiBEZXZpY2VOb2RlLCBmb2xsb3dlZCBieSBhbiBlbmQtb2YtZGV2aWNl IHBhdGggZGV2aWNlIG5vZGUgaXMgcmV0dXJuZWQuDQo+ICsgIElmIGJvdGggRGV2aWNlTm9kZSBh bmQgRGV2aWNlUGF0aCBhcmUgTlVMTCB0aGVuIGEgY29weSBvZiBhbiBlbmQtb2YtZGV2aWNlLXBh dGggZGV2aWNlIG5vZGUgaXMgcmV0dXJuZWQuDQo+ICsNCj4gKyAgQHBhcmFtICBEZXZpY2VQYXRo IFBvaW50cyB0byB0aGUgZGV2aWNlIHBhdGguDQo+ICsgIEBwYXJhbSAgRGV2aWNlTm9kZSBQb2lu dHMgdG8gdGhlIGRldmljZSBub2RlLg0KPiArDQo+ICsgIEByZXR2YWwgUG9pbnRlciAgICBBIHBv aW50ZXIgdG8gdGhlIGFsbG9jYXRlZCBkZXZpY2Ugbm9kZS4NCj4gKyAgQHJldHZhbCBOVUxMICAg ICAgIFRoZXJlIHdhcyBpbnN1ZmZpY2llbnQgbWVtb3J5Lg0KPiArDQo+ICsqKi8NCj4gK3R5cGVk ZWYNCj4gK0VGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCoNCj4gKyggKkVGSV9ERVZJQ0VfUEFUSF9V VElMU19BUFBFTkRfTk9ERSkoDQo+ICsgICBDT05TVCBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wg KkRldmljZVBhdGgsDQo+ICsgICBDT05TVCBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKkRldmlj ZU5vZGUNCj4gKyAgKTsNCj4gKw0KPiArLyoqDQo+ICsgIENyZWF0ZXMgYSBuZXcgcGF0aCBieSBh cHBlbmRpbmcgdGhlIHNwZWNpZmllZCBkZXZpY2UgcGF0aCBpbnN0YW5jZSB0byB0aGUgc3BlY2lm aWVkIGRldmljZSBwYXRoLg0KPiArDQo+ICsgIEBwYXJhbSAgRGV2aWNlUGF0aCAgICAgICAgIFBv aW50cyB0byB0aGUgZGV2aWNlIHBhdGguIElmIE5VTEwsIHRoZW4gaWdub3JlZC4NCj4gKyAgQHBh cmFtICBEZXZpY2VQYXRoSW5zdGFuY2UgUG9pbnRzIHRvIHRoZSBkZXZpY2UgcGF0aCBpbnN0YW5j ZS4NCj4gKw0KPiArICBAcmV0dmFsIFBvaW50ZXIgICAgICAgICAgICBBIHBvaW50ZXIgdG8gdGhl IG5ld2x5IGNyZWF0ZWQgZGV2aWNlIHBhdGgNCj4gKyAgQHJldHZhbCBOVUxMICAgICAgICAgICAg ICAgTWVtb3J5IGNvdWxkIG5vdCBiZSBhbGxvY2F0ZWQgb3IgRGV2aWNlUGF0aEluc3RhbmNlIGlz IE5VTEwuDQo+ICsNCj4gKyoqLw0KPiArdHlwZWRlZg0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RP Q09MKg0KPiArKCAqRUZJX0RFVklDRV9QQVRIX1VUSUxTX0FQUEVORF9JTlNUQU5DRSkoDQo+ICsg ICBDT05TVCBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKkRldmljZVBhdGgsDQo+ICsgICBDT05T VCBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKkRldmljZVBhdGhJbnN0YW5jZQ0KPiArICApOw0K PiArDQo+ICsvKioNCj4gKyAgQ3JlYXRlcyBhIGNvcHkgb2YgdGhlIGN1cnJlbnQgZGV2aWNlIHBh dGggaW5zdGFuY2UgYW5kIHJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBuZXh0IGRldmljZSBwYXRo DQo+ICsgIGluc3RhbmNlLg0KPiArDQo+ICsgIEBwYXJhbSAgRGV2aWNlUGF0aEluc3RhbmNlICAg ICBPbiBpbnB1dCwgdGhpcyBob2xkcyB0aGUgcG9pbnRlciB0byB0aGUgY3VycmVudCBkZXZpY2Ug cGF0aA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuIE9uIG91 dHB1dCwgdGhpcyBob2xkcyB0aGUgcG9pbnRlciB0byB0aGUgbmV4dA0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZGV2aWNlIHBhdGggaW5zdGFuY2Ugb3IgTlVMTCBpZiB0aGVy ZSBhcmUgbm8gbW9yZSBkZXZpY2UNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHBhdGggaW5zdGFuY2VzIGluIHRoZSBkZXZpY2UgcGF0aC4NCj4gKyAgQHBhcmFtICBEZXZpY2VQ YXRoSW5zdGFuY2VTaXplIE9uIG91dHB1dCwgdGhpcyBob2xkcyB0aGUgc2l6ZSBvZiB0aGUgZGV2 aWNlIHBhdGggaW5zdGFuY2UsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp biBieXRlcyBvciB6ZXJvLCBpZiBEZXZpY2VQYXRoSW5zdGFuY2UgaXMgTlVMTC4NCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIE5VTEwsIHRoZW4gdGhlIGluc3RhbmNlIHNp emUgaXMgbm90IG91dHB1dC4NCj4gKw0KPiArICBAcmV0dmFsIFBvaW50ZXIgICAgICAgICAgICAg ICAgQSBwb2ludGVyIHRvIHRoZSBjb3B5IG9mIHRoZSBjdXJyZW50IGRldmljZSBwYXRoIGluc3Rh bmNlLg0KPiArICBAcmV0dmFsIE5VTEwgICAgICAgICAgICAgICAgICAgRGV2aWNlUGF0aEluc3Rh Y2Ugd2FzIE5VTEwgb24gZW50cnkgb3IgdGhlcmUgd2FzIGluc3VmZmljaWVudCBtZW1vcnkuDQo+ ICsNCj4gKyoqLw0KPiArdHlwZWRlZg0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MKg0KPiAr KCAqRUZJX0RFVklDRV9QQVRIX1VUSUxTX0dFVF9ORVhUX0lOU1RBTkNFKSgNCj4gKyAgICAgRUZJ X0RFVklDRV9QQVRIX1BST1RPQ09MICAqKkRldmljZVBhdGhJbnN0YW5jZSwNCj4gKyAgIFVJTlRO ICAgICAgICAgICAgICAgICAgICAgICAgICpEZXZpY2VQYXRoSW5zdGFuY2VTaXplDQo+ICsgICk7 DQo+ICsNCj4gKy8qKg0KPiArICBDcmVhdGVzIGEgZGV2aWNlIG5vZGUNCj4gKw0KPiArICBAcGFy YW0gIE5vZGVUeXBlICAgIE5vZGVUeXBlIGlzIHRoZSBkZXZpY2Ugbm9kZSB0eXBlIChFRklfREVW SUNFX1BBVEguVHlwZSkgZm9yDQo+ICsgICAgICAgICAgICAgICAgICAgICAgdGhlIG5ldyBkZXZp Y2Ugbm9kZS4NCj4gKyAgQHBhcmFtICBOb2RlU3ViVHlwZSBOb2RlU3ViVHlwZSBpcyB0aGUgZGV2 aWNlIG5vZGUgc3ViLXR5cGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICBFRklfREVWSUNFX1BB VEguU3ViVHlwZSkgZm9yIHRoZSBuZXcgZGV2aWNlIG5vZGUuDQo+ICsgIEBwYXJhbSAgTm9kZUxl bmd0aCAgTm9kZUxlbmd0aCBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBkZXZpY2Ugbm9kZQ0KPiArICAg ICAgICAgICAgICAgICAgICAgIChFRklfREVWSUNFX1BBVEguTGVuZ3RoKSBmb3IgdGhlIG5ldyBk ZXZpY2Ugbm9kZS4NCj4gKw0KPiArICBAcmV0dmFsIFBvaW50ZXIgICAgIEEgcG9pbnRlciB0byB0 aGUgbmV3bHkgY3JlYXRlZCBkZXZpY2Ugbm9kZS4NCj4gKyAgQHJldHZhbCBOVUxMICAgICAgICBO b2RlTGVuZ3RoIGlzIGxlc3MgdGhhbg0KPiArICAgICAgICAgICAgICAgICAgICAgIHRoZSBzaXpl IG9mIHRoZSBoZWFkZXIgb3IgdGhlcmUgd2FzIGluc3VmZmljaWVudCBtZW1vcnkuDQo+ICsNCj4g KyoqLw0KPiArdHlwZWRlZg0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MKg0KPiArKCAqRUZJ X0RFVklDRV9QQVRIX1VUSUxTX0NSRUFURV9OT0RFKSgNCj4gKyAgIFVJTlQ4ICAgICAgICAgICAg ICAgICAgICAgICAgICBOb2RlVHlwZSwNCj4gKyAgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAg ICAgICBOb2RlU3ViVHlwZSwNCj4gKyAgIFVJTlQxNiAgICAgICAgICAgICAgICAgICAgICAgICBO b2RlTGVuZ3RoDQo+ICspOw0KPiArDQo+ICsvKioNCj4gKyAgUmV0dXJucyB3aGV0aGVyIGEgZGV2 aWNlIHBhdGggaXMgbXVsdGktaW5zdGFuY2UuDQo+ICsNCj4gKyAgQHBhcmFtICBEZXZpY2VQYXRo IFBvaW50cyB0byB0aGUgZGV2aWNlIHBhdGguIElmIE5VTEwsIHRoZW4gaWdub3JlZC4NCj4gKw0K PiArICBAcmV0dmFsIFRSVUUgICAgICAgVGhlIGRldmljZSBwYXRoIGhhcyBtb3JlIHRoYW4gb25l IGluc3RhbmNlDQo+ICsgIEByZXR2YWwgRkFMU0UgICAgICBUaGUgZGV2aWNlIHBhdGggaXMgZW1w dHkgb3IgY29udGFpbnMgb25seSBhIHNpbmdsZSBpbnN0YW5jZS4NCj4gKw0KPiArKiovDQo+ICt0 eXBlZGVmDQo+ICtCT09MRUFODQo+ICsoICpFRklfREVWSUNFX1BBVEhfVVRJTFNfSVNfTVVMVElf SU5TVEFOQ0UpKA0KPiArICAgQ09OU1QgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICAgICAgICAg KkRldmljZVBhdGgNCj4gKyAgKTsNCj4gKw0KPiArLy8vDQo+ICsvLy8gVGhpcyBwcm90b2NvbCBp cyB1c2VkIHRvIGNyZWF0ZXMgYW5kIG1hbmlwdWxhdGVzIGRldmljZSBwYXRocyBhbmQgZGV2aWNl IG5vZGVzLg0KPiArLy8vDQo+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ICsgIEVGSV9ERVZJQ0VfUEFU SF9VVElMU19HRVRfREVWSUNFX1BBVEhfU0laRSBHZXREZXZpY2VQYXRoU2l6ZTsNCj4gKyAgRUZJ X0RFVklDRV9QQVRIX1VUSUxTX0RVUF9ERVZJQ0VfUEFUSCAgICAgIER1cGxpY2F0ZURldmljZVBh dGg7DQo+ICsgIEVGSV9ERVZJQ0VfUEFUSF9VVElMU19BUFBFTkRfUEFUSCAgICAgICAgICBBcHBl bmREZXZpY2VQYXRoOw0KPiArICBFRklfREVWSUNFX1BBVEhfVVRJTFNfQVBQRU5EX05PREUgICAg ICAgICAgQXBwZW5kRGV2aWNlTm9kZTsNCj4gKyAgRUZJX0RFVklDRV9QQVRIX1VUSUxTX0FQUEVO RF9JTlNUQU5DRSAgICAgIEFwcGVuZERldmljZVBhdGhJbnN0YW5jZTsNCj4gKyAgRUZJX0RFVklD RV9QQVRIX1VUSUxTX0dFVF9ORVhUX0lOU1RBTkNFICAgIEdldE5leHREZXZpY2VQYXRoSW5zdGFu Y2U7DQo+ICsgIEVGSV9ERVZJQ0VfUEFUSF9VVElMU19JU19NVUxUSV9JTlNUQU5DRSAgICBJc0Rl dmljZVBhdGhNdWx0aUluc3RhbmNlOw0KPiArICBFRklfREVWSUNFX1BBVEhfVVRJTFNfQ1JFQVRF X05PREUgICAgICAgICAgQ3JlYXRlRGV2aWNlTm9kZTsNCj4gK30gRUZJX0RFVklDRV9QQVRIX1VU SUxJVElFU19QUk9UT0NPTDsNCj4gKw0KPiArZXh0ZXJuIEVGSV9HVUlEIGdFZmlEZXZpY2VQYXRo VXRpbGl0aWVzUHJvdG9jb2xHdWlkOw0KPiArDQo+ICtWT0lEDQo+ICtTZXREZXZpY2VQYXRoRW5k Tm9kZSAoDQo+ICsgICBWT0lEICAqTm9kZQ0KPiArICApOw0KPiArDQo+ICtCT09MRUFODQo+ICtJ c0RldmljZVBhdGhWYWxpZCAoDQo+ICsgICBDT05TVCBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wg KkRldmljZVBhdGgsDQo+ICsgICBVSU5UTiAgICAgICAgICAgICAgICAgICAgTWF4U2l6ZQ0KPiAr ICApOw0KPiArDQo+ICtVSU5UOA0KPiArRGV2aWNlUGF0aFR5cGUgKA0KPiArICAgQ09OU1QgVk9J RCAgKk5vZGUNCj4gKyAgKTsNCj4gKw0KPiArVUlOVDgNCj4gK0RldmljZVBhdGhTdWJUeXBlICgN Cj4gKyAgIENPTlNUIFZPSUQgICpOb2RlDQo+ICsgICk7DQo+ICsNCj4gK1VJTlRODQo+ICtEZXZp Y2VQYXRoTm9kZUxlbmd0aCAoDQo+ICsgICBDT05TVCBWT0lEICAqTm9kZQ0KPiArICApOw0KPiAr DQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0KPiArTmV4dERldmljZVBhdGhOb2RlICgN Cj4gKyAgIENPTlNUIFZPSUQgICpOb2RlDQo+ICsgICk7DQo+ICsNCj4gK0JPT0xFQU4NCj4gK0lz RGV2aWNlUGF0aEVuZFR5cGUgKA0KPiArICAgQ09OU1QgVk9JRCAgKk5vZGUNCj4gKyAgKTsNCj4g Kw0KPiArQk9PTEVBTg0KPiArSXNEZXZpY2VQYXRoRW5kICgNCj4gKyAgIENPTlNUIFZPSUQgICpO b2RlDQo+ICsgICk7DQo+ICtCT09MRUFODQo+ICtJc0RldmljZVBhdGhFbmRJbnN0YW5jZSAoDQo+ ICsgICBDT05TVCBWT0lEICAqTm9kZQ0KPiArICApOw0KPiArDQo+ICtVSU5UMTYNCj4gK1NldERl dmljZVBhdGhOb2RlTGVuZ3RoICgNCj4gKyAgICBWT0lEICAqTm9kZSwNCj4gKyAgIFVJTlROICAg ICBMZW5ndGgNCj4gKyAgKTsNCj4gKw0KPiArVk9JRA0KPiArU2V0RGV2aWNlUGF0aEVuZE5vZGUg KA0KPiArICAgVk9JRCAgKk5vZGUNCj4gKyAgKTsNCj4gKw0KPiArVUlOVE4NCj4gK1VlZmlEZXZp Y2VQYXRoTGliR2V0RGV2aWNlUGF0aFNpemUgKA0KPiArICAgQ09OU1QgRUZJX0RFVklDRV9QQVRI X1BST1RPQ09MICAqRGV2aWNlUGF0aA0KPiArICApOw0KPiArDQo+ICtFRklfREVWSUNFX1BBVEhf UFJPVE9DT0wgKg0KPiArVWVmaURldmljZVBhdGhMaWJEdXBsaWNhdGVEZXZpY2VQYXRoICgNCj4g KyAgIENPTlNUIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgKkRldmljZVBhdGgNCj4gKyAgKTsN Cj4gKw0KPiArRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoNCj4gK1VlZmlEZXZpY2VQYXRoTGli QXBwZW5kRGV2aWNlUGF0aCAoDQo+ICsgICBDT05TVCBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wg ICpGaXJzdERldmljZVBhdGgsDQo+ICsgICBDT05TVCBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wg ICpTZWNvbmREZXZpY2VQYXRoDQo+ICsgICk7DQo+ICsNCj4gK0VGSV9ERVZJQ0VfUEFUSF9QUk9U T0NPTCAqDQo+ICtVZWZpRGV2aWNlUGF0aExpYkFwcGVuZERldmljZVBhdGhOb2RlICgNCj4gKyAg IENPTlNUIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgKkRldmljZVBhdGgsDQo+ICsgICBDT05T VCBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICpEZXZpY2VQYXRoTm9kZQ0KPiArICApOw0KPiAr DQo+ICtFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgKg0KPiArVWVmaURldmljZVBhdGhMaWJBcHBl bmREZXZpY2VQYXRoSW5zdGFuY2UgKA0KPiArICAgQ09OU1QgRUZJX0RFVklDRV9QQVRIX1BST1RP Q09MICAqRGV2aWNlUGF0aCwNCj4gKyAgIENPTlNUIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAg KkRldmljZVBhdGhJbnN0YW5jZQ0KPiArICApOw0KPiArDQo+ICtFRklfREVWSUNFX1BBVEhfUFJP VE9DT0wgKg0KPiArVWVmaURldmljZVBhdGhMaWJHZXROZXh0RGV2aWNlUGF0aEluc3RhbmNlICgN Cj4gKyAgICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICAgKipEZXZpY2VQYXRoLA0KPiArICAg VUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICpTaXplDQo+ICsgICk7DQo+ICsNCj4gK0VG SV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqDQo+ICtVZWZpRGV2aWNlUGF0aExpYkNyZWF0ZURldmlj ZU5vZGUgKA0KPiArICAgVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAgICBOb2RlVHlwZSwN Cj4gKyAgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9kZVN1YlR5cGUsDQo+ICsg ICBVSU5UMTYgICAgICAgICAgICAgICAgICAgICAgICAgIE5vZGVMZW5ndGgNCj4gKyAgKTsNCj4g Kw0KPiArQk9PTEVBTg0KPiArVWVmaURldmljZVBhdGhMaWJJc0RldmljZVBhdGhNdWx0aUluc3Rh bmNlICgNCj4gKyAgIENPTlNUIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgKkRldmljZVBhdGgN Cj4gKyAgKTsNCj4gKw0KPiArI2VuZGlmDQo+IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291cmNl L0MvTWFrZWZpbGUgYi9CYXNlVG9vbHMvU291cmNlL0MvTWFrZWZpbGUNCj4gaW5kZXggNTBiZTc3 My4uNTQyODE4MCAxMDA2NDQNCj4gLS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9DL01ha2VmaWxlDQo+ ICsrKyBiL0Jhc2VUb29scy9Tb3VyY2UvQy9NYWtlZmlsZQ0KPiBAQCAtMSw5ICsxLDkgQEANCj4g ICMjIEBmaWxlDQo+ICAjIFdpbmRvd3MgbWFrZWZpbGUgZm9yIEMgdG9vbHMgYnVpbGQuDQo+ICAj DQo+IC0jIENvcHlyaWdodCAoYykgMjAwOSAtIDIwMTQsIEludGVsIENvcnBvcmF0aW9uLiBBbGwg cmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gKyMgQ29weXJpZ2h0IChjKSAyMDA5IC0gMjAxNywgSW50 ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiAgIyBUaGlzIHByb2dy YW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICAjIGFyZSBsaWNlbnNlZCBhbmQg bWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0Qg TGljZW5zZQ0KPiAgIyB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBm dWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlIGZvdW5kIGF0DQo+ICAjIGh0dHA6Ly9vcGVu c291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gICMNCj4gQEAgLTMwLDExICsz MCwxMiBAQCBBUFBMSUNBVElPTlMgPSBcDQo+ICAgIEdlblZ0ZiBcDQo+ICAgIEx6bWFDb21wcmVz cyBcDQo+ICAgIFNwbGl0IFwNCj4gICAgVGlhbm9Db21wcmVzcyBcDQo+ICAgIFZvbEluZm8gXA0K PiAtICBWZnJDb21waWxlDQo+ICsgIFZmckNvbXBpbGUgXA0KPiArICBEZXZpY2VQYXRoDQo+DQo+ ICBhbGw6IGxpYnMgYXBwcyBpbnN0YWxsDQo+DQo+ICBsaWJzOiAkKExJQlJBUklFUykNCj4gICAg ICAgICBAZWNoby4NCj4gZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL0NvbW1v bi9NaXNjLnB5IGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vQ29tbW9uL01pc2MucHkNCj4gaW5k ZXggNTlkMWJhMi4uMTVhZDllNCAxMDA2NDQNCj4gLS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRo b24vQ29tbW9uL01pc2MucHkNCj4gKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vQ29tbW9u L01pc2MucHkNCj4gQEAgLTM2LDExICszNiwxMSBAQCBmcm9tIENvbW1vbkRhdGFDbGFzcy5EYXRh Q2xhc3MgaW1wb3J0ICoNCj4gIGZyb20gUGFyc2luZyBpbXBvcnQgR2V0U3BsaXRWYWx1ZUxpc3QN Cj4gIGZyb20gQ29tbW9uLkxvbmdGaWxlUGF0aFN1cHBvcnQgaW1wb3J0IE9wZW5Mb25nRmlsZVBh dGggYXMgb3Blbg0KPiAgZnJvbSBDb21tb24uTXVsdGlwbGVXb3Jrc3BhY2UgaW1wb3J0IE11bHRp cGxlV29ya3NwYWNlIGFzIG13cw0KPiAgaW1wb3J0IHV1aWQNCj4gIGZyb20gQ29tbW9uRGF0YUNs YXNzLkV4Y2VwdGlvbnMgaW1wb3J0IEJhZEV4cHJlc3Npb24NCj4gLQ0KPiAraW1wb3J0IHN1YnBy b2Nlc3MNCj4gICMjIFJlZ3VsYXIgZXhwcmVzc2lvbiB1c2VkIHRvIGZpbmQgb3V0IHBsYWNlIGhv bGRlcnMgaW4gc3RyaW5nIHRlbXBsYXRlDQo+ICBnUGxhY2Vob2xkZXJQYXR0ZXJuID0gcmUuY29t cGlsZSgiXCRceyhbXiQoKVxzXSspXH0iLCByZS5NVUxUSUxJTkUgfCByZS5VTklDT0RFKQ0KPg0K PiAgIyMgRGljdGlvbmFyeSB1c2VkIHRvIHN0b3JlIGZpbGUgdGltZSBzdGFtcCBmb3IgcXVpY2sg cmUtYWNjZXNzDQo+ICBnRmlsZVRpbWVTdGFtcENhY2hlID0ge30gICAgIyB7ZmlsZSBwYXRoIDog ZmlsZSB0aW1lIHN0YW1wfQ0KPiBAQCAtMTQ3MiwxMSArMTQ3Miw0MSBAQCBkZWYgQW5hbHl6ZVBj ZEV4cHJlc3Npb24oU2V0dGluZyk6DQo+ICAgICAgICAgIFN0YXJ0UG9zID0gUG9zICsgMQ0KPg0K PiAgICAgIHJldHVybiBGaWVsZExpc3QNCj4NCj4gIGRlZiBQYXJzZURldlBhdGhWYWx1ZSAoVmFs dWUpOg0KPiAtICAgIHBhc3MNCj4gKyAgICBEZXZQYXRoTGlzdCA9IFsgIlBhdGgiLCJIYXJkd2Fy ZVBhdGgiLCJQY2kiLCJQY0NhcmQiLCJNZW1vcnlNYXBwZWQiLCJWZW5IdyIsIkN0cmwiLCJCTUMi LCJBY3BpUGF0aCIsIkFjcGkiLCJQY2lSb290IiwNCj4gKyAgICAgICAgICAgICAgICAgICAgIlBj aWVSb290IiwiRmxvcHB5IiwiS2V5Ym9hcmQiLCJTZXJpYWwiLCJQYXJhbGxlbFBvcnQiLCJBY3Bp RXgiLCJBY3BpRXhwIiwiQWNwaUFkciIsIk1zZyIsIkF0YSIsIlNjc2kiLA0KPiArICAgICAgICAg ICAgICAgICAgICAiRmlicmUiLCJGaWJyZUV4IiwiSTEzOTQiLCJVU0IiLCJJMk8iLCJJbmZpbmli YW5kIiwiVmVuTXNnIiwiVmVuUGNBbnNpIiwiVmVuVnQxMDAiLCJWZW5WdDEwMFBsdXMiLA0KPiAr ICAgICAgICAgICAgICAgICAgICAiVmVuVXRmOCIsIlVhcnRGbG93Q3RybCIsIlNBUyIsIlNhc0V4 IiwiTlZNZSIsIlVGUyIsIlNEIiwiZU1NQyIsIkRlYnVnUG9ydCIsIk1BQyIsIklQdjQiLCJJUHY2 IiwiVWFydCIsDQo+ICsgICAgICAgICAgICAgICAgICAgICJVc2JDbGFzcyIsIlVzYkF1ZGlvIiwi VXNiQ0RDQ29udHJvbCIsIlVzYkhJRCIsIlVzYkltYWdlIiwiVXNiUHJpbnRlciIsIlVzYk1hc3NT dG9yYWdlIiwiVXNiSHViIiwNCj4gKyAgICAgICAgICAgICAgICAgICAgIlVzYkNEQ0RhdGEiLCJV c2JTbWFydENhcmQiLCJVc2JWaWRlbyIsIlVzYkRpYWdub3N0aWMiLCJVc2JXaXJlbGVzcyIsIlVz YkRldmljZUZpcm13YXJlVXBkYXRlIiwNCj4gKyAgICAgICAgICAgICAgICAgICAgIlVzYklyZGFC cmlkZ2UiLCJVc2JUZXN0QW5kTWVhc3VyZW1lbnQiLCJVc2JXd2lkIiwiVW5pdCIsImlTQ1NJIiwi VmxhbiIsIlVyaSIsIkJsdWV0b290aCIsIldpLUZpIiwNCj4gKyAgICAgICAgICAgICAgICAgICAg Ik1lZGlhUGF0aCIsIkhEIiwiQ0RST00iLCJWZW5NZWRpYSIsIk1lZGlhIiwiRnYiLCJGdkZpbGUi LCJPZmZzZXQiLCJSYW1EaXNrIiwiVmlydHVhbERpc2siLCJWaXJ0dWFsQ0QiLA0KPiArICAgICAg ICAgICAgICAgICAgICAiUGVyc2lzdGVudFZpcnR1YWxEaXNrIiwiUGVyc2lzdGVudFZpcnR1YWxD RCIsIkJic1BhdGgiLCJCQlMiLCJTYXRhIiBdDQo+ICsgICAgaWYgJ1xcJyBpbiBWYWx1ZToNCj4g KyAgICAgICAgVmFsdWUucmVwbGFjZSgnXFwnLCAnLycpLnJlcGxhY2UoJyAnLCAnJykNCj4gKyAg ICBmb3IgSXRlbSBpbiBWYWx1ZS5zcGxpdCgnLycpOg0KPiArICAgICAgICBLZXkgPSBJdGVtLnN0 cmlwKCkuc3BsaXQoJygnKVswXQ0KPiArICAgICAgICBpZiBLZXkgbm90IGluIERldlBhdGhMaXN0 Og0KPiArICAgICAgICAgICAgcGFzcw0KPiArDQo+ICsgICAgQ21kID0gJ0RldmljZVBhdGggJyAr ICciJyArIFZhbHVlICsgJyInDQo+ICsgICAgdHJ5Og0KPiArICAgICAgICBwID0gc3VicHJvY2Vz cy5Qb3BlbihDbWQsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsIHN0ZGVycj1zdWJwcm9jZXNzLlBJ UEUsIHNoZWxsPVRydWUpDQo+ICsgICAgICAgIG91dCwgZXJyID0gcC5jb21tdW5pY2F0ZSgpDQo+ ICsgICAgZXhjZXB0IEV4Y2VwdGlvbiwgWDoNCj4gKyAgICAgICAgcmFpc2UgQmFkRXhwcmVzc2lv bigiRGV2aWNlUGF0aDogJXMiICUgKHN0cihYKSkgKQ0KPiArICAgIGZpbmFsbHk6DQo+ICsgICAg ICAgIHN1YnByb2Nlc3MuX2NsZWFudXAoKQ0KPiArICAgICAgICBwLnN0ZG91dC5jbG9zZSgpDQo+ ICsgICAgICAgIHAuc3RkZXJyLmNsb3NlKCkNCj4gKyAgICBpZiBlcnI6DQo+ICsgICAgICAgIHJh aXNlIEJhZEV4cHJlc3Npb24oIkRldmljZVBhdGg6ICVzIiAlIHN0cihlcnIpKQ0KPiArICAgIFNp emUgPSBsZW4ob3V0LnNwbGl0KCkpDQo+ICsgICAgb3V0ID0gJywnLmpvaW4ob3V0LnNwbGl0KCkp DQo+ICsgICAgcmV0dXJuICd7JyArIG91dCArICd9JywgU2l6ZQ0KPg0KPiAgZGVmIFBhcnNlRmll bGRWYWx1ZSAoVmFsdWUpOg0KPiAgICAgIGlmIHR5cGUoVmFsdWUpID09IHR5cGUoMCk6DQo+ICAg ICAgICAgIHJldHVybiBWYWx1ZSwgKFZhbHVlLmJpdF9sZW5ndGgoKSArIDcpIC8gOA0KPiAgICAg IGlmIHR5cGUoVmFsdWUpIDw+IHR5cGUoJycpOg0KPiAtLQ0KPiAyLjYuMS53aW5kb3dzLjENCj4N Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCj4gZWRr Mi1kZXZlbCBtYWlsaW5nIGxpc3QNCj4gZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmcNCj4gaHR0cHM6 Ly9saXN0cy4wMS5vcmcvbWFpbG1hbi9saXN0aW5mby9lZGsyLWRldmVsDQo=