From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 192.55.52.115, mailfrom: nathaniel.l.desimone@intel.com) Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by groups.io with SMTP; Thu, 15 Aug 2019 11:35:20 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 15 Aug 2019 11:35:20 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,389,1559545200"; d="scan'208";a="376467226" Received: from orsmsx106.amr.corp.intel.com ([10.22.225.133]) by fmsmga005.fm.intel.com with ESMTP; 15 Aug 2019 11:35:19 -0700 Received: from orsmsx157.amr.corp.intel.com (10.22.240.23) by ORSMSX106.amr.corp.intel.com (10.22.225.133) with Microsoft SMTP Server (TLS) id 14.3.439.0; Thu, 15 Aug 2019 11:35:19 -0700 Received: from orsmsx114.amr.corp.intel.com ([169.254.8.96]) by ORSMSX157.amr.corp.intel.com ([169.254.9.22]) with mapi id 14.03.0439.000; Thu, 15 Aug 2019 11:35:18 -0700 From: "Nate DeSimone" To: "Wei, David Y" , "devel@edk2.groups.io" CC: "Wu, Hao A" , "Gao, Liming" , "Sinha, Ankit" , "Agyeman, Prince" , "Kubacki, Michael A" , "Kinney, Michael D" Subject: Re: [edk2-platform patch 3/7] SimicsOpenBoardPkg: Add SimicsOpenBoardPkg and its modules Thread-Topic: [edk2-platform patch 3/7] SimicsOpenBoardPkg: Add SimicsOpenBoardPkg and its modules Thread-Index: AQHVTwRbajRk9ObSUkmm2MAhSiyvNab8iDLg Date: Thu, 15 Aug 2019 18:35:18 +0000 Message-ID: <02A34F284D1DA44BB705E61F7180EF0AAEE0C175@ORSMSX114.amr.corp.intel.com> References: <28fad95137c6aecfbf593a14191bdb4d0819951e.1565389186.git.david.y.wei@intel.com> In-Reply-To: <28fad95137c6aecfbf593a14191bdb4d0819951e.1565389186.git.david.y.wei@intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.2.0.6 dlp-reaction: no-action x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiNWVmYmZkMDgtMTMxOC00MzhiLWI0ODUtNGFjN2Y1ZTRmOWQ1IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiZ3RMZ3YybElXODdUd1BnS2Q5Sk5OQXhiNDFQcGJUM0RwUmtndUZVRW9wck9sdUNJcWNVYlo5YkNLMnVnVVVyMyJ9 x-ctpclassification: CTP_NT x-originating-ip: [10.22.254.140] MIME-Version: 1.0 Return-Path: nathaniel.l.desimone@intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgRGF2aWQsDQoNCkhlcmUgYXJlIG15IGNvbW1lbnRzOg0KDQoxLiBBbGwgb2YgdGhlIGNvcHly aWdodCB5ZWFycyBuZWVkIHRvIGJlIHVwZGF0ZWQgdG8gMjAxOS4NCjIuIFBsZWFzZSByZW1vdmUg IiBDb250cmlidXRlZC11bmRlcjogVGlhbm9Db3JlIENvbnRyaWJ1dGlvbiBBZ3JlZW1lbnQgMS4w IiBmcm9tIHlvdXIgY29tbWl0IG1lc3NhZ2UgYXMgaXQgaXMgbm8gbG9uZ2VyIG5lZWRlZC4NCjMu IFBsZWFzZSByZW1vdmUgaW50ZXJzcGVyc2VkIHRyYWlsaW5nIHdoaXRlLXNwYWNlIGZyb20gdGhl IGZvbGxvd2luZyBmaWxlczoNCg0KICAqIFBsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBr Zy9BY3BpVGFibGVzL0RzZHQuYXNsDQogICogUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJk UGtnL0FjcGlUYWJsZXMvUGxhdGZvcm0uaA0KICAqIFBsYXRmb3JtL0ludGVsL1NpbWljc09wZW5C b2FyZFBrZy9JbmNsdWRlL1JlZ2lzdGVyL1g1OFNtcmFtU2F2ZVN0YXRlTWFwLmgNCiAgKiBQbGF0 Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1QZWkvUGxhdGZvcm0uYw0KICAq IFBsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9TaW1pY3NPcGVuQm9hcmRQa2cuZGVj DQoNCjQuIFBsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9QbGF0Zm9ybUR4ZS9QbGF0 Zm9ybS5jIC0gTGluZSAyIC0gIiBUaGlzIGRyaXZlciBlZmZlY3R1YXRlcyBPVk1GJ3MgcGxhdGZv cm0uLi4iIC0gVGhpcyBpcyBub3QgT1ZNRiwgdGhpcyBpcyBTaW1pY3MsIHBsZWFzZSB1cGRhdGUu DQo1LiBQbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvU21iaW9zUGxhdGZvcm1EeGUv U21iaW9zUGxhdGZvcm1EeGUuaW5mIC0gTGluZSAyIC0gIiBUaGlzIGRyaXZlciBpbnN0YWxscyBT TUJJT1MgaW5mb3JtYXRpb24gZm9yIE9WTUYiIC0gVGhpcyBpcyBub3QgT1ZNRiwgdGhpcyBpcyBT aW1pY3MsIHBsZWFzZSB1cGRhdGUuDQoNCk90aGVyIHRoYW4gdGhhdCwgbG9va3MgZ29vZCEgUGxl YXNlIHNlbmQgYW4gdXBkYXRlZCBwYXRjaC4NCg0KVGhhbmtzLA0KTmF0ZQ0KDQotLS0tLU9yaWdp bmFsIE1lc3NhZ2UtLS0tLQ0KRnJvbTogV2VpLCBEYXZpZCBZIA0KU2VudDogRnJpZGF5LCBBdWd1 c3QgOSwgMjAxOSAzOjQ3IFBNDQpUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW8NCkNjOiBXdSwgSGFv IEEgPGhhby5hLnd1QGludGVsLmNvbT47IEdhbywgTGltaW5nIDxsaW1pbmcuZ2FvQGludGVsLmNv bT47IFNpbmhhLCBBbmtpdCA8YW5raXQuc2luaGFAaW50ZWwuY29tPjsgQWd5ZW1hbiwgUHJpbmNl IDxwcmluY2UuYWd5ZW1hbkBpbnRlbC5jb20+OyBLdWJhY2tpLCBNaWNoYWVsIEEgPG1pY2hhZWwu YS5rdWJhY2tpQGludGVsLmNvbT47IERlc2ltb25lLCBOYXRoYW5pZWwgTCA8bmF0aGFuaWVsLmwu ZGVzaW1vbmVAaW50ZWwuY29tPjsgS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlA aW50ZWwuY29tPg0KU3ViamVjdDogW2VkazItcGxhdGZvcm0gcGF0Y2ggMy83XSBTaW1pY3NPcGVu Qm9hcmRQa2c6IEFkZCBTaW1pY3NPcGVuQm9hcmRQa2cgYW5kIGl0cyBtb2R1bGVzDQoNCkFkZCBt b2R1bGVzIEFjcGlUYWJsZXMsIEluY2x1ZGUsIExpYnJhcnksIFBsYXRmb3JtRHhlLCBQbGF0Zm9y bVBlaSwgUG9saWN5LCBTbWJpb3NQbGF0Zm9ybUR4ZQ0KZm9yIFNpbWljcyBRU1AgcGxhdGZvcm0g c3VwcG9ydA0KDQpDYzogSGFvIFd1IDxoYW8uYS53dUBpbnRlbC5jb20+DQpDYzogTGltaW5nIEdh byA8bGltaW5nLmdhb0BpbnRlbC5jb20+DQpDYzogQW5raXQgU2luaGEgPGFua2l0LnNpbmhhQGlu dGVsLmNvbT4NCkNjOiBBZ3llbWFuIFByaW5jZSA8cHJpbmNlLmFneWVtYW5AaW50ZWwuY29tPg0K Q2M6IEt1YmFja2kgTWljaGFlbCBBIDxtaWNoYWVsLmEua3ViYWNraUBpbnRlbC5jb20+DQpDYzog TmF0ZSBEZVNpbW9uZSA8bmF0aGFuaWVsLmwuZGVzaW1vbmVAaW50ZWwuY29tPg0KQ2M6IE1pY2hh ZWwgRCBLaW5uZXkgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KQ29udHJpYnV0ZWQtdW5k ZXI6IFRpYW5vQ29yZSBDb250cmlidXRpb24gQWdyZWVtZW50IDEuMA0KDQpTaWduZWQtb2ZmLWJ5 OiBEYXZpZCBXZWkgPGRhdmlkLnkud2VpQGludGVsLmNvbT4NCi0tLQ0KIC4uLi9MaWJyYXJ5L0xv YWRMaW51eExpYi9MaW51eC5jICAgICAgICAgICAgICAgICAgIHwgNjYyICsrKysrKysrKysrKysr KysNCiAuLi4vTGlicmFyeS9Mb2FkTGludXhMaWIvTGludXhHZHQuYyAgICAgICAgICAgICAgICB8 IDE3NSArKysrKw0KIC4uLi9MaWJyYXJ5L052VmFyc0ZpbGVMaWIvRnNBY2Nlc3MuYyAgICAgICAg ICAgICAgIHwgNTA3ICsrKysrKysrKysrKw0KIC4uLi9MaWJyYXJ5L052VmFyc0ZpbGVMaWIvTnZW YXJzRmlsZUxpYi5jICAgICAgICAgIHwgIDc3ICsrDQogLi4uL1NlcmlhbGl6ZVZhcmlhYmxlc0xp Yi9TZXJpYWxpemVWYXJpYWJsZXNMaWIuYyAgfCA4NjkgKysrKysrKysrKysrKysrKysrKysrDQog Li4uL1NpbWljc09wZW5Cb2FyZFBrZy9QbGF0Zm9ybUR4ZS9QbGF0Zm9ybS5jICAgICAgfCA4NjUg KysrKysrKysrKysrKysrKysrKysNCiAuLi4vUGxhdGZvcm1EeGUvUGxhdGZvcm1Db25maWcuYyAg ICAgICAgICAgICAgICAgICB8IDEyMyArKysNCiAuLi4vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtn L1BsYXRmb3JtUGVpL0Ntb3MuYyAgICB8ICA1NyArKw0KIC4uLi9QbGF0Zm9ybVBlaS9GZWF0dXJl Q29udHJvbC5jICAgICAgICAgICAgICAgICAgIHwgMTE0ICsrKw0KIFBsYXRmb3JtL0ludGVsL1Np bWljc09wZW5Cb2FyZFBrZy9QbGF0Zm9ybVBlaS9Gdi5jIHwgMTAwICsrKw0KIC4uLi9TaW1pY3NP cGVuQm9hcmRQa2cvUGxhdGZvcm1QZWkvTWVtRGV0ZWN0LmMgICAgIHwgNTY4ICsrKysrKysrKysr KysrDQogLi4uL1NpbWljc09wZW5Cb2FyZFBrZy9QbGF0Zm9ybVBlaS9QbGF0Zm9ybS5jICAgICAg fCA2MzEgKysrKysrKysrKysrKysrDQogLi4uL1NpbGljb25Qb2xpY3lJbml0TGliL1NpbGljb25Q b2xpY3lJbml0TGliLmMgICAgfCAxMDggKysrDQogLi4uL1NpbGljb25Qb2xpY3lVcGRhdGVMaWIu YyAgICAgICAgICAgICAgICAgICAgICAgfCAgNzAgKysNCiAuLi4vU21iaW9zUGxhdGZvcm1EeGUv U21iaW9zUGxhdGZvcm1EeGUuYyAgICAgICAgICB8IDE0OCArKysrDQogLi4uL1NpbWljc09wZW5C b2FyZFBrZy9BY3BpVGFibGVzL0FjcGlUYWJsZXMuaW5mICAgfCAgMzEgKw0KIC4uLi9JbnRlbC9T aW1pY3NPcGVuQm9hcmRQa2cvQWNwaVRhYmxlcy9Ec2R0LmFzbCAgIHwgODIxICsrKysrKysrKysr KysrKysrKysNCiAuLi4vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0FjcGlUYWJsZXMvUGxhdGZv cm0uaCB8ICA3NSArKw0KIC4uLi9JbmNsdWRlL0d1aWQvU2ltaWNzWDU4UGxhdGZvcm1Db25maWcu aCAgICAgICAgIHwgIDE3ICsNCiAuLi4vSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL1g1OEljaDEw LmggICAgICAgICAgICB8IDEwNiArKysNCiAuLi4vU2ltaWNzT3BlbkJvYXJkUGtnL0luY2x1ZGUv UHJvdG9jb2wvSXNhQWNwaS5oICB8IDI5OCArKysrKysrDQogLi4uL1NpbWljc09wZW5Cb2FyZFBr Zy9JbmNsdWRlL1Byb3RvY29sL0lzYUlvLmggICAgfCAzNTYgKysrKysrKysrDQogLi4uL0luY2x1 ZGUvUHJvdG9jb2wvTGVnYWN5ODI1OS5oICAgICAgICAgICAgICAgICAgfCAyOTEgKysrKysrKw0K IC4uLi9JbmNsdWRlL1JlZ2lzdGVyL1g1OFNtcmFtU2F2ZVN0YXRlTWFwLmggICAgICAgIHwgMTc4 ICsrKysrDQogLi4uL1NpbWljc09wZW5Cb2FyZFBrZy9JbmNsdWRlL1NpbWljc1BsYXRmb3Jtcy5o ICAgfCAgNTQgKysNCiAuLi4vTGlicmFyeS9Mb2FkTGludXhMaWIvSWEzMi9KdW1wVG9LZXJuZWwu bmFzbSAgICB8ICA0MSArDQogLi4uL0xpYnJhcnkvTG9hZExpbnV4TGliL0xvYWRMaW51eExpYi5o ICAgICAgICAgICAgfCAgNTIgKysNCiAuLi4vTGlicmFyeS9Mb2FkTGludXhMaWIvTG9hZExpbnV4 TGliLmluZiAgICAgICAgICB8ICA0MiArDQogLi4uL0xpYnJhcnkvTG9hZExpbnV4TGliL1g2NC9K dW1wVG9LZXJuZWwubmFzbSAgICAgfCAgODUgKysNCiAuLi4vTGlicmFyeS9OdlZhcnNGaWxlTGli L052VmFyc0ZpbGVMaWIuaCAgICAgICAgICB8ICA1NSArKw0KIC4uLi9MaWJyYXJ5L052VmFyc0Zp bGVMaWIvTnZWYXJzRmlsZUxpYi5pbmYgICAgICAgIHwgIDUzICsrDQogLi4uL1NlcmlhbGl6ZVZh cmlhYmxlc0xpYi9TZXJpYWxpemVWYXJpYWJsZXNMaWIuaCAgfCAgMzMgKw0KIC4uLi9TZXJpYWxp emVWYXJpYWJsZXNMaWIuaW5mICAgICAgICAgICAgICAgICAgICAgIHwgIDM2ICsNCiAuLi4vU2lt aWNzT3BlbkJvYXJkUGtnL1BsYXRmb3JtRHhlL1BsYXRmb3JtLmggICAgICB8ICAzNyArDQogLi4u L1NpbWljc09wZW5Cb2FyZFBrZy9QbGF0Zm9ybUR4ZS9QbGF0Zm9ybS5pbmYgICAgfCAgNjUgKysN CiAuLi4vU2ltaWNzT3BlbkJvYXJkUGtnL1BsYXRmb3JtRHhlL1BsYXRmb3JtLnVuaSAgICB8ICAz MSArDQogLi4uL1BsYXRmb3JtRHhlL1BsYXRmb3JtQ29uZmlnLmggICAgICAgICAgICAgICAgICAg fCAgNTEgKysNCiAuLi4vUGxhdGZvcm1EeGUvUGxhdGZvcm1Gb3Jtcy52ZnIgICAgICAgICAgICAg ICAgICB8ICA2NyArKw0KIC4uLi9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1QZWkv Q21vcy5oICAgIHwgIDUwICsrDQogLi4uL1NpbWljc09wZW5Cb2FyZFBrZy9QbGF0Zm9ybVBlaS9Q bGF0Zm9ybS5oICAgICAgfCAgOTMgKysrDQogLi4uL1NpbWljc09wZW5Cb2FyZFBrZy9QbGF0Zm9y bVBlaS9QbGF0Zm9ybVBlaS5pbmYgfCAxMDkgKysrDQogLi4uL1NpbGljb25Qb2xpY3lJbml0TGli L1NpbGljb25Qb2xpY3lJbml0TGliLmluZiAgfCAgMzggKw0KIC4uLi9TaWxpY29uUG9saWN5VXBk YXRlTGliLmluZiAgICAgICAgICAgICAgICAgICAgIHwgIDM1ICsNCiAuLi4vU2ltaWNzT3BlbkJv YXJkUGtnL1NpbWljc09wZW5Cb2FyZFBrZy5kZWMgICAgICB8IDE2OCArKysrDQogLi4uL1NtYmlv c1BsYXRmb3JtRHhlL1NtYmlvc1BsYXRmb3JtRHhlLmggICAgICAgICAgfCAgMzggKw0KIC4uLi9T bWJpb3NQbGF0Zm9ybUR4ZS9TbWJpb3NQbGF0Zm9ybUR4ZS5pbmYgICAgICAgIHwgIDUxICsrDQog NDYgZmlsZXMgY2hhbmdlZCwgODUzMSBpbnNlcnRpb25zKCspDQogY3JlYXRlIG1vZGUgMTAwNjQ0 IFBsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9MaWJyYXJ5L0xvYWRMaW51eExpYi9M aW51eC5jDQogY3JlYXRlIG1vZGUgMTAwNjQ0IFBsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2Fy ZFBrZy9MaWJyYXJ5L0xvYWRMaW51eExpYi9MaW51eEdkdC5jDQogY3JlYXRlIG1vZGUgMTAwNjQ0 IFBsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9MaWJyYXJ5L052VmFyc0ZpbGVMaWIv RnNBY2Nlc3MuYw0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBQbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVu Qm9hcmRQa2cvTGlicmFyeS9OdlZhcnNGaWxlTGliL052VmFyc0ZpbGVMaWIuYw0KIGNyZWF0ZSBt b2RlIDEwMDY0NCBQbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvTGlicmFyeS9TZXJp YWxpemVWYXJpYWJsZXNMaWIvU2VyaWFsaXplVmFyaWFibGVzTGliLmMNCiBjcmVhdGUgbW9kZSAx MDA2NDQgUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1BsYXRmb3JtRHhlL1BsYXRm b3JtLmMNCiBjcmVhdGUgbW9kZSAxMDA2NDQgUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJk UGtnL1BsYXRmb3JtRHhlL1BsYXRmb3JtQ29uZmlnLmMNCiBjcmVhdGUgbW9kZSAxMDA2NDQgUGxh dGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1BsYXRmb3JtUGVpL0Ntb3MuYw0KIGNyZWF0 ZSBtb2RlIDEwMDY0NCBQbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1Q ZWkvRmVhdHVyZUNvbnRyb2wuYw0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBQbGF0Zm9ybS9JbnRlbC9T aW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1QZWkvRnYuYw0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBQ bGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1QZWkvTWVtRGV0ZWN0LmMN CiBjcmVhdGUgbW9kZSAxMDA2NDQgUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1Bs YXRmb3JtUGVpL1BsYXRmb3JtLmMNCiBjcmVhdGUgbW9kZSAxMDA2NDQgUGxhdGZvcm0vSW50ZWwv U2ltaWNzT3BlbkJvYXJkUGtnL1BvbGljeS9MaWJyYXJ5L1NpbGljb25Qb2xpY3lJbml0TGliL1Np bGljb25Qb2xpY3lJbml0TGliLmMNCiBjcmVhdGUgbW9kZSAxMDA2NDQgUGxhdGZvcm0vSW50ZWwv U2ltaWNzT3BlbkJvYXJkUGtnL1BvbGljeS9MaWJyYXJ5L1NpbGljb25Qb2xpY3lVcGRhdGVMaWIv U2lsaWNvblBvbGljeVVwZGF0ZUxpYi5jDQogY3JlYXRlIG1vZGUgMTAwNjQ0IFBsYXRmb3JtL0lu dGVsL1NpbWljc09wZW5Cb2FyZFBrZy9TbWJpb3NQbGF0Zm9ybUR4ZS9TbWJpb3NQbGF0Zm9ybUR4 ZS5jDQogY3JlYXRlIG1vZGUgMTAwNjQ0IFBsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBr Zy9BY3BpVGFibGVzL0FjcGlUYWJsZXMuaW5mDQogY3JlYXRlIG1vZGUgMTAwNjQ0IFBsYXRmb3Jt L0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9BY3BpVGFibGVzL0RzZHQuYXNsDQogY3JlYXRlIG1v ZGUgMTAwNjQ0IFBsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9BY3BpVGFibGVzL1Bs YXRmb3JtLmgNCiBjcmVhdGUgbW9kZSAxMDA2NDQgUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJv YXJkUGtnL0luY2x1ZGUvR3VpZC9TaW1pY3NYNThQbGF0Zm9ybUNvbmZpZy5oDQogY3JlYXRlIG1v ZGUgMTAwNjQ0IFBsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9JbmNsdWRlL0luZHVz dHJ5U3RhbmRhcmQvWDU4SWNoMTAuaA0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBQbGF0Zm9ybS9JbnRl bC9TaW1pY3NPcGVuQm9hcmRQa2cvSW5jbHVkZS9Qcm90b2NvbC9Jc2FBY3BpLmgNCiBjcmVhdGUg bW9kZSAxMDA2NDQgUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0luY2x1ZGUvUHJv dG9jb2wvSXNhSW8uaA0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBQbGF0Zm9ybS9JbnRlbC9TaW1pY3NP cGVuQm9hcmRQa2cvSW5jbHVkZS9Qcm90b2NvbC9MZWdhY3k4MjU5LmgNCiBjcmVhdGUgbW9kZSAx MDA2NDQgUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0luY2x1ZGUvUmVnaXN0ZXIv WDU4U21yYW1TYXZlU3RhdGVNYXAuaA0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBQbGF0Zm9ybS9JbnRl bC9TaW1pY3NPcGVuQm9hcmRQa2cvSW5jbHVkZS9TaW1pY3NQbGF0Zm9ybXMuaA0KIGNyZWF0ZSBt b2RlIDEwMDY0NCBQbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvTGlicmFyeS9Mb2Fk TGludXhMaWIvSWEzMi9KdW1wVG9LZXJuZWwubmFzbQ0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBQbGF0 Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvTGlicmFyeS9Mb2FkTGludXhMaWIvTG9hZExp bnV4TGliLmgNCiBjcmVhdGUgbW9kZSAxMDA2NDQgUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJv YXJkUGtnL0xpYnJhcnkvTG9hZExpbnV4TGliL0xvYWRMaW51eExpYi5pbmYNCiBjcmVhdGUgbW9k ZSAxMDA2NDQgUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0xpYnJhcnkvTG9hZExp bnV4TGliL1g2NC9KdW1wVG9LZXJuZWwubmFzbQ0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBQbGF0Zm9y bS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvTGlicmFyeS9OdlZhcnNGaWxlTGliL052VmFyc0Zp bGVMaWIuaA0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBQbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9h cmRQa2cvTGlicmFyeS9OdlZhcnNGaWxlTGliL052VmFyc0ZpbGVMaWIuaW5mDQogY3JlYXRlIG1v ZGUgMTAwNjQ0IFBsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9MaWJyYXJ5L1Nlcmlh bGl6ZVZhcmlhYmxlc0xpYi9TZXJpYWxpemVWYXJpYWJsZXNMaWIuaA0KIGNyZWF0ZSBtb2RlIDEw MDY0NCBQbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvTGlicmFyeS9TZXJpYWxpemVW YXJpYWJsZXNMaWIvU2VyaWFsaXplVmFyaWFibGVzTGliLmluZg0KIGNyZWF0ZSBtb2RlIDEwMDY0 NCBQbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1EeGUvUGxhdGZvcm0u aA0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBQbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cv UGxhdGZvcm1EeGUvUGxhdGZvcm0uaW5mDQogY3JlYXRlIG1vZGUgMTAwNjQ0IFBsYXRmb3JtL0lu dGVsL1NpbWljc09wZW5Cb2FyZFBrZy9QbGF0Zm9ybUR4ZS9QbGF0Zm9ybS51bmkNCiBjcmVhdGUg bW9kZSAxMDA2NDQgUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1BsYXRmb3JtRHhl L1BsYXRmb3JtQ29uZmlnLmgNCiBjcmVhdGUgbW9kZSAxMDA2NDQgUGxhdGZvcm0vSW50ZWwvU2lt aWNzT3BlbkJvYXJkUGtnL1BsYXRmb3JtRHhlL1BsYXRmb3JtRm9ybXMudmZyDQogY3JlYXRlIG1v ZGUgMTAwNjQ0IFBsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9QbGF0Zm9ybVBlaS9D bW9zLmgNCiBjcmVhdGUgbW9kZSAxMDA2NDQgUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJk UGtnL1BsYXRmb3JtUGVpL1BsYXRmb3JtLmgNCiBjcmVhdGUgbW9kZSAxMDA2NDQgUGxhdGZvcm0v SW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1BsYXRmb3JtUGVpL1BsYXRmb3JtUGVpLmluZg0KIGNy ZWF0ZSBtb2RlIDEwMDY0NCBQbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUG9saWN5 L0xpYnJhcnkvU2lsaWNvblBvbGljeUluaXRMaWIvU2lsaWNvblBvbGljeUluaXRMaWIuaW5mDQog Y3JlYXRlIG1vZGUgMTAwNjQ0IFBsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9Qb2xp Y3kvTGlicmFyeS9TaWxpY29uUG9saWN5VXBkYXRlTGliL1NpbGljb25Qb2xpY3lVcGRhdGVMaWIu aW5mDQogY3JlYXRlIG1vZGUgMTAwNjQ0IFBsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBr Zy9TaW1pY3NPcGVuQm9hcmRQa2cuZGVjDQogY3JlYXRlIG1vZGUgMTAwNjQ0IFBsYXRmb3JtL0lu dGVsL1NpbWljc09wZW5Cb2FyZFBrZy9TbWJpb3NQbGF0Zm9ybUR4ZS9TbWJpb3NQbGF0Zm9ybUR4 ZS5oDQogY3JlYXRlIG1vZGUgMTAwNjQ0IFBsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBr Zy9TbWJpb3NQbGF0Zm9ybUR4ZS9TbWJpb3NQbGF0Zm9ybUR4ZS5pbmYNCg0KZGlmZiAtLWdpdCBh L1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9MaWJyYXJ5L0xvYWRMaW51eExpYi9M aW51eC5jIGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0xpYnJhcnkvTG9hZExp bnV4TGliL0xpbnV4LmMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwLi40 M2EyZGVlOWY2DQotLS0gL2Rldi9udWxsDQorKysgYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVu Qm9hcmRQa2cvTGlicmFyeS9Mb2FkTGludXhMaWIvTGludXguYw0KQEAgLTAsMCArMSw2NjIgQEAN CisvKiogQGZpbGUNCisgIENvcHlyaWdodCAoYykgMjAxMSAtIDIwMTQgSW50ZWwgQ29ycG9yYXRp b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuIDxCUj4NCisNCisgIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQorKiovDQorDQorI2luY2x1ZGUgIkxvYWRMaW51eExp Yi5oIg0KKw0KKw0KKy8qKg0KKyAgQSBzaW1wbGUgY2hlY2sgb2YgdGhlIGtlcm5lbCBzZXR1cCBp bWFnZQ0KKw0KKyAgQW4gYXNzdW1wdGlvbiBpcyBtYWRlIHRoYXQgdGhlIHNpemUgb2YgdGhlIGRh dGEgaXMgYXQgbGVhc3QgdGhlDQorICBzaXplIG9mIHN0cnVjdCBib290X3BhcmFtcy4NCisNCisg IEBwYXJhbVtpbl0gICAgS2VybmVsU2V0dXAgLSBUaGUga2VybmVsIHNldHVwIGltYWdlDQorDQor ICBAcmV0dmFsICAgIEVGSV9TVUNDRVNTIC0gVGhlIGtlcm5lbCBzZXR1cCBsb29rcyB2YWxpZCBh bmQgc3VwcG9ydGVkDQorICBAcmV0dmFsICAgIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAtIEtlcm5l bFNldHVwIHdhcyBOVUxMDQorICBAcmV0dmFsICAgIEVGSV9VTlNVUFBPUlRFRCAtIFRoZSBrZXJu ZWwgc2V0dXAgaXMgbm90IHZhbGlkIG9yIHN1cHBvcnRlZA0KKw0KKyoqLw0KK1NUQVRJQw0KK0VG SV9TVEFUVVMNCitFRklBUEkNCitCYXNpY0tlcm5lbFNldHVwQ2hlY2sgKA0KKyAgSU4gVk9JRCAg ICAgICAgKktlcm5lbFNldHVwDQorICApDQorew0KKyAgcmV0dXJuIExvYWRMaW51eENoZWNrS2Vy bmVsU2V0dXAoS2VybmVsU2V0dXAsIHNpemVvZiAoc3RydWN0IGJvb3RfcGFyYW1zKSk7DQorfQ0K Kw0KKw0KK0VGSV9TVEFUVVMNCitFRklBUEkNCitMb2FkTGludXhDaGVja0tlcm5lbFNldHVwICgN CisgIElOIFZPSUQgICAgICAgICpLZXJuZWxTZXR1cCwNCisgIElOIFVJTlROICAgICAgIEtlcm5l bFNldHVwU2l6ZQ0KKyAgKQ0KK3sNCisgIHN0cnVjdCBib290X3BhcmFtcyAgICAgICAgKkJwOw0K Kw0KKyAgaWYgKEtlcm5lbFNldHVwID09IE5VTEwpIHsNCisgICAgcmV0dXJuIEVGSV9JTlZBTElE X1BBUkFNRVRFUjsNCisgIH0NCisNCisgIGlmIChLZXJuZWxTZXR1cFNpemUgPCBzaXplb2YgKCpC cCkpIHsNCisgICAgcmV0dXJuIEVGSV9VTlNVUFBPUlRFRDsNCisgIH0NCisNCisgIEJwID0gKHN0 cnVjdCBib290X3BhcmFtcyopIEtlcm5lbFNldHVwOw0KKw0KKyAgaWYgKChCcC0+aGRyLnNpZ25h dHVyZSAhPSAweEFBNTUpIHx8IC8vIENoZWNrIGJvb3Qgc2VjdG9yIHNpZ25hdHVyZQ0KKyAgICAg IChCcC0+aGRyLmhlYWRlciAhPSBTRVRVUF9IRFIpIHx8DQorICAgICAgKEJwLT5oZHIudmVyc2lv biA8IDB4MjA1KSB8fCAvLyBXZSBvbmx5IHN1cHBvcnQgcmVsb2NhdGFibGUga2VybmVscw0KKyAg ICAgICghQnAtPmhkci5yZWxvY2F0YWJsZV9rZXJuZWwpDQorICAgICApIHsNCisgICAgcmV0dXJu IEVGSV9VTlNVUFBPUlRFRDsNCisgIH0gZWxzZSB7DQorICAgIHJldHVybiBFRklfU1VDQ0VTUzsN CisgIH0NCit9DQorDQorDQorVUlOVE4NCitFRklBUEkNCitMb2FkTGludXhHZXRLZXJuZWxTaXpl ICgNCisgIElOIFZPSUQgICAgICAgICpLZXJuZWxTZXR1cCwNCisgIElOIFVJTlROICAgICAgIEtl cm5lbFNpemUNCisgICkNCit7DQorICBzdHJ1Y3QgYm9vdF9wYXJhbXMgICAgICAgICpCcDsNCisN CisgIGlmIChFRklfRVJST1IgKEJhc2ljS2VybmVsU2V0dXBDaGVjayAoS2VybmVsU2V0dXApKSkg ew0KKyAgICByZXR1cm4gMDsNCisgIH0NCisNCisgIEJwID0gKHN0cnVjdCBib290X3BhcmFtcyop IEtlcm5lbFNldHVwOw0KKw0KKyAgaWYgKEJwLT5oZHIudmVyc2lvbiA+IDB4MjBhKSB7DQorICAg IHJldHVybiBCcC0+aGRyLmluaXRfc2l6ZTsNCisgIH0gZWxzZSB7DQorICAgIC8vDQorICAgIC8v IEFkZCBleHRyYSBzaXplIGZvciBrZXJuZWwgZGVjb21wcmVzc2lvbg0KKyAgICAvLw0KKyAgICBy ZXR1cm4gMyAqIEtlcm5lbFNpemU7DQorICB9DQorfQ0KKw0KKw0KK1ZPSUQqDQorRUZJQVBJDQor TG9hZExpbnV4QWxsb2NhdGVLZXJuZWxTZXR1cFBhZ2VzICgNCisgIElOIFVJTlROICAgICAgICAg ICAgICAgICAgUGFnZXMNCisgICkNCit7DQorICBFRklfU1RBVFVTICAgICAgICAgICAgICAgIFN0 YXR1czsNCisgIEVGSV9QSFlTSUNBTF9BRERSRVNTICAgICAgQWRkcmVzczsNCisNCisgIEFkZHJl c3MgPSBCQVNFXzFHQjsNCisgIFN0YXR1cyA9IGdCUy0+QWxsb2NhdGVQYWdlcyAoDQorICAgICAg ICAgICAgICAgICAgQWxsb2NhdGVNYXhBZGRyZXNzLA0KKyAgICAgICAgICAgICAgICAgIEVmaUxv YWRlckRhdGEsDQorICAgICAgICAgICAgICAgICAgUGFnZXMsDQorICAgICAgICAgICAgICAgICAg JkFkZHJlc3MNCisgICAgICAgICAgICAgICAgICApOw0KKyAgaWYgKCFFRklfRVJST1IgKFN0YXR1 cykpIHsNCisgICAgcmV0dXJuIChWT0lEKikoVUlOVE4pIEFkZHJlc3M7DQorICB9IGVsc2Ugew0K KyAgICByZXR1cm4gTlVMTDsNCisgIH0NCit9DQorDQorRUZJX1NUQVRVUw0KK0VGSUFQSQ0KK0xv YWRMaW51eEluaXRpYWxpemVLZXJuZWxTZXR1cCAoDQorICBJTiBWT0lEICAgICAgICAqS2VybmVs U2V0dXANCisgICkNCit7DQorICBFRklfU1RBVFVTICAgICAgICAgICAgICAgIFN0YXR1czsNCisg IFVJTlROICAgICAgICAgICAgICAgICAgICAgU2V0dXBFbmQ7DQorICBzdHJ1Y3QgYm9vdF9wYXJh bXMgICAgICAgICpCcDsNCisNCisgIFN0YXR1cyA9IEJhc2ljS2VybmVsU2V0dXBDaGVjayAoS2Vy bmVsU2V0dXApOw0KKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KKyAgICByZXR1cm4gU3Rh dHVzOw0KKyAgfQ0KKw0KKyAgQnAgPSAoc3RydWN0IGJvb3RfcGFyYW1zKikgS2VybmVsU2V0dXA7 DQorDQorICBTZXR1cEVuZCA9IDB4MjAyICsgKEJwLT5oZHIuanVtcCAmIDB4ZmYpOw0KKw0KKyAg Ly8NCisgIC8vIENsZWFyIGFsbCBidXQgdGhlIHNldHVwX2hlYWRlcg0KKyAgLy8NCisgIFplcm9N ZW0gKEtlcm5lbFNldHVwLCAweDFmMSk7DQorICBaZXJvTWVtICgoKFVJTlQ4ICopS2VybmVsU2V0 dXApICsgU2V0dXBFbmQsIDQwOTYgLSBTZXR1cEVuZCk7DQorICBERUJVRyAoKEVGSV9EX0lORk8s ICJDbGVhcmVkIGtlcm5lbCBzZXR1cCAwLTB4MWYxLCAweCVMeC0weDEwMDBcbiIsDQorICAgIChV SU5UNjQpU2V0dXBFbmQpKTsNCisNCisgIHJldHVybiBFRklfU1VDQ0VTUzsNCit9DQorDQorVk9J RCoNCitFRklBUEkNCitMb2FkTGludXhBbGxvY2F0ZUtlcm5lbFBhZ2VzICgNCisgIElOIFZPSUQg ICAgICAgICAgICAgICAgICAgKktlcm5lbFNldHVwLA0KKyAgSU4gVUlOVE4gICAgICAgICAgICAg ICAgICBQYWdlcw0KKyAgKQ0KK3sNCisgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgU3RhdHVz Ow0KKyAgRUZJX1BIWVNJQ0FMX0FERFJFU1MgICAgICBLZXJuZWxBZGRyZXNzOw0KKyAgVUlOVDMy ICAgICAgICAgICAgICAgICAgICBMb29wOw0KKyAgc3RydWN0IGJvb3RfcGFyYW1zICAgICAgICAq QnA7DQorDQorICBpZiAoRUZJX0VSUk9SIChCYXNpY0tlcm5lbFNldHVwQ2hlY2sgKEtlcm5lbFNl dHVwKSkpIHsNCisgICAgcmV0dXJuIE5VTEw7DQorICB9DQorDQorICBCcCA9IChzdHJ1Y3QgYm9v dF9wYXJhbXMqKSBLZXJuZWxTZXR1cDsNCisNCisgIGZvciAoTG9vcCA9IDE7IExvb3AgPCA1MTI7 IExvb3ArKykgew0KKyAgICBLZXJuZWxBZGRyZXNzID0gTXVsdFU2NHgzMiAoDQorICAgICAgICAg ICAgICAgICAgICAgIDIgKiBCcC0+aGRyLmtlcm5lbF9hbGlnbm1lbnQsDQorICAgICAgICAgICAg ICAgICAgICAgIExvb3ANCisgICAgICAgICAgICAgICAgICAgICAgKTsNCisgICAgU3RhdHVzID0g Z0JTLT5BbGxvY2F0ZVBhZ2VzICgNCisgICAgICAgICAgICAgICAgICAgIEFsbG9jYXRlQWRkcmVz cywNCisgICAgICAgICAgICAgICAgICAgIEVmaUxvYWRlckRhdGEsDQorICAgICAgICAgICAgICAg ICAgICBQYWdlcywNCisgICAgICAgICAgICAgICAgICAgICZLZXJuZWxBZGRyZXNzDQorICAgICAg ICAgICAgICAgICAgICApOw0KKyAgICBpZiAoIUVGSV9FUlJPUiAoU3RhdHVzKSkgew0KKyAgICAg IHJldHVybiAoVk9JRCopKFVJTlROKSBLZXJuZWxBZGRyZXNzOw0KKyAgICB9DQorICB9DQorDQor ICByZXR1cm4gTlVMTDsNCit9DQorDQorDQorVk9JRCoNCitFRklBUEkNCitMb2FkTGludXhBbGxv Y2F0ZUNvbW1hbmRMaW5lUGFnZXMgKA0KKyAgSU4gVUlOVE4gICAgICAgICAgICAgICAgICBQYWdl cw0KKyAgKQ0KK3sNCisgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgU3RhdHVzOw0KKyAgRUZJ X1BIWVNJQ0FMX0FERFJFU1MgICAgICBBZGRyZXNzOw0KKw0KKyAgQWRkcmVzcyA9IDB4YTAwMDA7 DQorICBTdGF0dXMgPSBnQlMtPkFsbG9jYXRlUGFnZXMgKA0KKyAgICAgICAgICAgICAgICAgIEFs bG9jYXRlTWF4QWRkcmVzcywNCisgICAgICAgICAgICAgICAgICBFZmlMb2FkZXJEYXRhLA0KKyAg ICAgICAgICAgICAgICAgIFBhZ2VzLA0KKyAgICAgICAgICAgICAgICAgICZBZGRyZXNzDQorICAg ICAgICAgICAgICAgICAgKTsNCisgIGlmICghRUZJX0VSUk9SIChTdGF0dXMpKSB7DQorICAgIHJl dHVybiAoVk9JRCopKFVJTlROKSBBZGRyZXNzOw0KKyAgfSBlbHNlIHsNCisgICAgcmV0dXJuIE5V TEw7DQorICB9DQorfQ0KKw0KKw0KK1ZPSUQqDQorRUZJQVBJDQorTG9hZExpbnV4QWxsb2NhdGVJ bml0cmRQYWdlcyAoDQorICBJTiBWT0lEICAgICAgICAgICAgICAgICAgICpLZXJuZWxTZXR1cCwN CisgIElOIFVJTlROICAgICAgICAgICAgICAgICAgUGFnZXMNCisgICkNCit7DQorICBFRklfU1RB VFVTICAgICAgICAgICAgICAgIFN0YXR1czsNCisgIEVGSV9QSFlTSUNBTF9BRERSRVNTICAgICAg QWRkcmVzczsNCisNCisgIHN0cnVjdCBib290X3BhcmFtcyAgICAgICAgKkJwOw0KKw0KKyAgaWYg KEVGSV9FUlJPUiAoQmFzaWNLZXJuZWxTZXR1cENoZWNrIChLZXJuZWxTZXR1cCkpKSB7DQorICAg IHJldHVybiBOVUxMOw0KKyAgfQ0KKw0KKyAgQnAgPSAoc3RydWN0IGJvb3RfcGFyYW1zKikgS2Vy bmVsU2V0dXA7DQorDQorICBBZGRyZXNzID0gKEVGSV9QSFlTSUNBTF9BRERSRVNTKShVSU5UTikg QnAtPmhkci5yYW1kaXNrX21heDsNCisgIFN0YXR1cyA9IGdCUy0+QWxsb2NhdGVQYWdlcyAoDQor ICAgICAgICAgICAgICAgICAgQWxsb2NhdGVNYXhBZGRyZXNzLA0KKyAgICAgICAgICAgICAgICAg IEVmaUxvYWRlckRhdGEsDQorICAgICAgICAgICAgICAgICAgUGFnZXMsDQorICAgICAgICAgICAg ICAgICAgJkFkZHJlc3MNCisgICAgICAgICAgICAgICAgICApOw0KKyAgaWYgKCFFRklfRVJST1Ig KFN0YXR1cykpIHsNCisgICAgcmV0dXJuIChWT0lEKikoVUlOVE4pIEFkZHJlc3M7DQorICB9IGVs c2Ugew0KKyAgICByZXR1cm4gTlVMTDsNCisgIH0NCit9DQorDQorDQorU1RBVElDDQorVk9JRA0K K1NldHVwTGludXhNZW1tYXAgKA0KKyAgSU4gT1VUIHN0cnVjdCBib290X3BhcmFtcyAgICAgICAg KkJwDQorICApDQorew0KKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0 YXR1czsNCisgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUbXBNZW1vcnlN YXBbMV07DQorICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFwS2V5Ow0K KyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlc2NyaXB0b3JTaXplOw0K KyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlc2NyaXB0b3JWZXJzaW9u Ow0KKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lbW9yeU1hcFNpemU7 DQorICBFRklfTUVNT1JZX0RFU0NSSVBUT1IgICAgICAgICAgICAgICAgKk1lbW9yeU1hcDsNCisg IEVGSV9NRU1PUllfREVTQ1JJUFRPUiAgICAgICAgICAgICAgICAqTWVtb3J5TWFwUHRyOw0KKyAg VUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4Ow0KKyAgc3RydWN0IGVm aV9pbmZvICAgICAgICAgICAgICAgICAgICAgICpFZmk7DQorICBzdHJ1Y3QgZTgyMF9lbnRyeSAg ICAgICAgICAgICAgICAgICAgKkxhc3RFODIwOw0KKyAgc3RydWN0IGU4MjBfZW50cnkgICAgICAg ICAgICAgICAgICAgICpFODIwOw0KKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEU4MjBFbnRyeUNvdW50Ow0KKyAgRUZJX1BIWVNJQ0FMX0FERFJFU1MgICAgICAgICAgICAg ICAgIExhc3RFbmRBZGRyOw0KKw0KKyAgLy8NCisgIC8vIEdldCBTeXN0ZW0gTWVtb3J5TWFwU2l6 ZQ0KKyAgLy8NCisgIE1lbW9yeU1hcFNpemUgPSBzaXplb2YgKFRtcE1lbW9yeU1hcCk7DQorICBT dGF0dXMgPSBnQlMtPkdldE1lbW9yeU1hcCAoDQorICAgICAgICAgICAgICAgICAgJk1lbW9yeU1h cFNpemUsDQorICAgICAgICAgICAgICAgICAgKEVGSV9NRU1PUllfREVTQ1JJUFRPUiAqKVRtcE1l bW9yeU1hcCwNCisgICAgICAgICAgICAgICAgICAmTWFwS2V5LA0KKyAgICAgICAgICAgICAgICAg ICZEZXNjcmlwdG9yU2l6ZSwNCisgICAgICAgICAgICAgICAgICAmRGVzY3JpcHRvclZlcnNpb24N CisgICAgICAgICAgICAgICAgICApOw0KKyAgQVNTRVJUIChTdGF0dXMgPT0gRUZJX0JVRkZFUl9U T09fU01BTEwpOw0KKyAgLy8NCisgIC8vIEVubGFyZ2Ugc3BhY2UgaGVyZSwgYmVjYXVzZSB3ZSB3 aWxsIGFsbG9jYXRlIHBvb2wgbm93Lg0KKyAgLy8NCisgIE1lbW9yeU1hcFNpemUgKz0gRUZJX1BB R0VfU0laRTsNCisgIFN0YXR1cyA9IGdCUy0+QWxsb2NhdGVQb29sICgNCisgICAgICAgICAgICAg ICAgICBFZmlMb2FkZXJEYXRhLA0KKyAgICAgICAgICAgICAgICAgIE1lbW9yeU1hcFNpemUsDQor ICAgICAgICAgICAgICAgICAgKFZPSUQgKiopICZNZW1vcnlNYXANCisgICAgICAgICAgICAgICAg ICApOw0KKyAgQVNTRVJUX0VGSV9FUlJPUiAoU3RhdHVzKTsNCisNCisgIC8vDQorICAvLyBHZXQg U3lzdGVtIE1lbW9yeU1hcA0KKyAgLy8NCisgIFN0YXR1cyA9IGdCUy0+R2V0TWVtb3J5TWFwICgN CisgICAgICAgICAgICAgICAgICAmTWVtb3J5TWFwU2l6ZSwNCisgICAgICAgICAgICAgICAgICBN ZW1vcnlNYXAsDQorICAgICAgICAgICAgICAgICAgJk1hcEtleSwNCisgICAgICAgICAgICAgICAg ICAmRGVzY3JpcHRvclNpemUsDQorICAgICAgICAgICAgICAgICAgJkRlc2NyaXB0b3JWZXJzaW9u DQorICAgICAgICAgICAgICAgICAgKTsNCisgIEFTU0VSVF9FRklfRVJST1IgKFN0YXR1cyk7DQor DQorICBMYXN0RTgyMCA9IE5VTEw7DQorICBFODIwID0gJkJwLT5lODIwX21hcFswXTsNCisgIEU4 MjBFbnRyeUNvdW50ID0gMDsNCisgIExhc3RFbmRBZGRyID0gMDsNCisgIE1lbW9yeU1hcFB0ciA9 IE1lbW9yeU1hcDsNCisgIGZvciAoSW5kZXggPSAwOyBJbmRleCA8IChNZW1vcnlNYXBTaXplIC8g RGVzY3JpcHRvclNpemUpOyBJbmRleCsrKSB7DQorICAgIFVJTlROIEU4MjBUeXBlID0gMDsNCisN CisgICAgaWYgKE1lbW9yeU1hcC0+TnVtYmVyT2ZQYWdlcyA9PSAwKSB7DQorICAgICAgY29udGlu dWU7DQorICAgIH0NCisNCisgICAgc3dpdGNoKE1lbW9yeU1hcC0+VHlwZSkgew0KKyAgICBjYXNl IEVmaVJlc2VydmVkTWVtb3J5VHlwZToNCisgICAgY2FzZSBFZmlSdW50aW1lU2VydmljZXNDb2Rl Og0KKyAgICBjYXNlIEVmaVJ1bnRpbWVTZXJ2aWNlc0RhdGE6DQorICAgIGNhc2UgRWZpTWVtb3J5 TWFwcGVkSU86DQorICAgIGNhc2UgRWZpTWVtb3J5TWFwcGVkSU9Qb3J0U3BhY2U6DQorICAgIGNh c2UgRWZpUGFsQ29kZToNCisgICAgICBFODIwVHlwZSA9IEU4MjBfUkVTRVJWRUQ7DQorICAgICAg YnJlYWs7DQorDQorICAgIGNhc2UgRWZpVW51c2FibGVNZW1vcnk6DQorICAgICAgRTgyMFR5cGUg PSBFODIwX1VOVVNBQkxFOw0KKyAgICAgIGJyZWFrOw0KKw0KKyAgICBjYXNlIEVmaUFDUElSZWNs YWltTWVtb3J5Og0KKyAgICAgIEU4MjBUeXBlID0gRTgyMF9BQ1BJOw0KKyAgICAgIGJyZWFrOw0K Kw0KKyAgICBjYXNlIEVmaUxvYWRlckNvZGU6DQorICAgIGNhc2UgRWZpTG9hZGVyRGF0YToNCisg ICAgY2FzZSBFZmlCb290U2VydmljZXNDb2RlOg0KKyAgICBjYXNlIEVmaUJvb3RTZXJ2aWNlc0Rh dGE6DQorICAgIGNhc2UgRWZpQ29udmVudGlvbmFsTWVtb3J5Og0KKyAgICAgIEU4MjBUeXBlID0g RTgyMF9SQU07DQorICAgICAgYnJlYWs7DQorDQorICAgIGNhc2UgRWZpQUNQSU1lbW9yeU5WUzoN CisgICAgICBFODIwVHlwZSA9IEU4MjBfTlZTOw0KKyAgICAgIGJyZWFrOw0KKw0KKyAgICBkZWZh dWx0Og0KKyAgICAgIERFQlVHICgoDQorICAgICAgICBFRklfRF9FUlJPUiwNCisgICAgICAgICJJ bnZhbGlkIEVGSSBtZW1vcnkgZGVzY3JpcHRvciB0eXBlICgweCV4KSFcbiIsDQorICAgICAgICBN ZW1vcnlNYXAtPlR5cGUNCisgICAgICAgICkpOw0KKyAgICAgIGNvbnRpbnVlOw0KKyAgICB9DQor DQorICAgIGlmICgoTGFzdEU4MjAgIT0gTlVMTCkgJiYNCisgICAgICAgIChMYXN0RTgyMC0+dHlw ZSA9PSAoVUlOVDMyKSBFODIwVHlwZSkgJiYNCisgICAgICAgIChNZW1vcnlNYXAtPlBoeXNpY2Fs U3RhcnQgPT0gTGFzdEVuZEFkZHIpKSB7DQorICAgICAgTGFzdEU4MjAtPnNpemUgKz0gRUZJX1BB R0VTX1RPX1NJWkUgKChVSU5UTikgTWVtb3J5TWFwLT5OdW1iZXJPZlBhZ2VzKTsNCisgICAgICBM YXN0RW5kQWRkciArPSBFRklfUEFHRVNfVE9fU0laRSAoKFVJTlROKSBNZW1vcnlNYXAtPk51bWJl ck9mUGFnZXMpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgIGlmIChFODIwRW50cnlDb3VudCA+PSAo c2l6ZW9mIChCcC0+ZTgyMF9tYXApIC8gc2l6ZW9mIChCcC0+ZTgyMF9tYXBbMF0pKSkgew0KKyAg ICAgICAgYnJlYWs7DQorICAgICAgfQ0KKyAgICAgIEU4MjAtPnR5cGUgPSAoVUlOVDMyKSBFODIw VHlwZTsNCisgICAgICBFODIwLT5hZGRyID0gTWVtb3J5TWFwLT5QaHlzaWNhbFN0YXJ0Ow0KKyAg ICAgIEU4MjAtPnNpemUgPSBFRklfUEFHRVNfVE9fU0laRSAoKFVJTlROKSBNZW1vcnlNYXAtPk51 bWJlck9mUGFnZXMpOw0KKyAgICAgIExhc3RFODIwID0gRTgyMDsNCisgICAgICBMYXN0RW5kQWRk ciA9IEU4MjAtPmFkZHIgKyBFODIwLT5zaXplOw0KKyAgICAgIEU4MjArKzsNCisgICAgICBFODIw RW50cnlDb3VudCsrOw0KKyAgICB9DQorDQorICAgIC8vDQorICAgIC8vIEdldCBuZXh0IGl0ZW0N CisgICAgLy8NCisgICAgTWVtb3J5TWFwID0gKEVGSV9NRU1PUllfREVTQ1JJUFRPUiAqKSgoVUlO VE4pTWVtb3J5TWFwICsgRGVzY3JpcHRvclNpemUpOw0KKyAgfQ0KKyAgQnAtPmU4MjBfZW50cmll cyA9IChVSU5UOCkgRTgyMEVudHJ5Q291bnQ7DQorDQorICBFZmkgPSAmQnAtPmVmaV9pbmZvOw0K KyAgRWZpLT5lZmlfc3lzdGFiID0gKFVJTlQzMikoVUlOVE4pIGdTVDsNCisgIEVmaS0+ZWZpX21l bWRlc2Nfc2l6ZSA9IChVSU5UMzIpIERlc2NyaXB0b3JTaXplOw0KKyAgRWZpLT5lZmlfbWVtZGVz Y192ZXJzaW9uID0gRGVzY3JpcHRvclZlcnNpb247DQorICBFZmktPmVmaV9tZW1tYXAgPSAoVUlO VDMyKShVSU5UTikgTWVtb3J5TWFwUHRyOw0KKyAgRWZpLT5lZmlfbWVtbWFwX3NpemUgPSAoVUlO VDMyKSBNZW1vcnlNYXBTaXplOw0KKyNpZmRlZiBNREVfQ1BVX0lBMzINCisgIEVmaS0+ZWZpX2xv YWRlcl9zaWduYXR1cmUgPSBTSUdOQVRVUkVfMzIgKCdFJywgJ0wnLCAnMycsICcyJyk7DQorI2Vs c2UNCisgIEVmaS0+ZWZpX3N5c3RhYl9oaSA9IChVSU5UMzIpICgoKFVJTlQ2NCkoVUlOVE4pIGdT VCkgPj4gMzIpOw0KKyAgRWZpLT5lZmlfbWVtbWFwX2hpID0gKFVJTlQzMikgKCgoVUlOVDY0KShV SU5UTikgTWVtb3J5TWFwUHRyKSA+PiAzMik7DQorICBFZmktPmVmaV9sb2FkZXJfc2lnbmF0dXJl ID0gU0lHTkFUVVJFXzMyICgnRScsICdMJywgJzYnLCAnNCcpOw0KKyNlbmRpZg0KKw0KKyAgZ0JT LT5FeGl0Qm9vdFNlcnZpY2VzIChnSW1hZ2VIYW5kbGUsIE1hcEtleSk7DQorfQ0KKw0KKw0KK0VG SV9TVEFUVVMNCitFRklBUEkNCitMb2FkTGludXhTZXRDb21tYW5kTGluZSAoDQorICBJTiBPVVQg Vk9JRCAgICAqS2VybmVsU2V0dXAsDQorICBJTiBDSEFSOCAgICAgICAqQ29tbWFuZExpbmUNCisg ICkNCit7DQorICBFRklfU1RBVFVTICAgICAgICAgICAgIFN0YXR1czsNCisgIHN0cnVjdCBib290 X3BhcmFtcyAgICAgKkJwOw0KKw0KKyAgU3RhdHVzID0gQmFzaWNLZXJuZWxTZXR1cENoZWNrIChL ZXJuZWxTZXR1cCk7DQorICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQorICAgIHJldHVybiBT dGF0dXM7DQorICB9DQorDQorICBCcCA9IChzdHJ1Y3QgYm9vdF9wYXJhbXMqKSBLZXJuZWxTZXR1 cDsNCisNCisgIEJwLT5oZHIuY21kX2xpbmVfcHRyID0gKFVJTlQzMikoVUlOVE4pIENvbW1hbmRM aW5lOw0KKw0KKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KK30NCisNCisNCitFRklfU1RBVFVTDQor RUZJQVBJDQorTG9hZExpbnV4U2V0SW5pdHJkICgNCisgIElOIE9VVCBWT0lEICAgICpLZXJuZWxT ZXR1cCwNCisgIElOIFZPSUQgICAgICAgICpJbml0cmQsDQorICBJTiBVSU5UTiAgICAgICBJbml0 cmRTaXplDQorICApDQorew0KKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICBTdGF0dXM7DQorICBz dHJ1Y3QgYm9vdF9wYXJhbXMgICAgICpCcDsNCisNCisgIFN0YXR1cyA9IEJhc2ljS2VybmVsU2V0 dXBDaGVjayAoS2VybmVsU2V0dXApOw0KKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KKyAg ICByZXR1cm4gU3RhdHVzOw0KKyAgfQ0KKw0KKyAgQnAgPSAoc3RydWN0IGJvb3RfcGFyYW1zKikg S2VybmVsU2V0dXA7DQorDQorICBCcC0+aGRyLnJhbWRpc2tfc3RhcnQgPSAoVUlOVDMyKShVSU5U TikgSW5pdHJkOw0KKyAgQnAtPmhkci5yYW1kaXNrX2xlbiA9IChVSU5UMzIpIEluaXRyZFNpemU7 DQorDQorICByZXR1cm4gRUZJX1NVQ0NFU1M7DQorfQ0KKw0KKw0KK1NUQVRJQyBWT0lEDQorRmlu ZEJpdHMgKA0KKyAgdW5zaWduZWQgbG9uZyBNYXNrLA0KKyAgVUlOVDggKlBvcywNCisgIFVJTlQ4 ICpTaXplDQorICApDQorew0KKyAgVUlOVDggRmlyc3QsIExlbjsNCisNCisgIEZpcnN0ID0gMDsN CisgIExlbiA9IDA7DQorDQorICBpZiAoTWFzaykgew0KKyAgICB3aGlsZSAoIShNYXNrICYgMHgx KSkgew0KKyAgICAgIE1hc2sgPSBNYXNrID4+IDE7DQorICAgICAgRmlyc3QrKzsNCisgICAgfQ0K Kw0KKyAgICB3aGlsZSAoTWFzayAmIDB4MSkgew0KKyAgICAgIE1hc2sgPSBNYXNrID4+IDE7DQor ICAgICAgTGVuKys7DQorICAgIH0NCisgIH0NCisgICpQb3MgPSBGaXJzdDsNCisgICpTaXplID0g TGVuOw0KK30NCisNCisNCitTVEFUSUMNCitFRklfU1RBVFVTDQorU2V0dXBHcmFwaGljc0Zyb21H b3AgKA0KKyAgc3RydWN0IHNjcmVlbl9pbmZvICAgICAgICAgICAqU2ksDQorICBFRklfR1JBUEhJ Q1NfT1VUUFVUX1BST1RPQ09MICpHb3ANCisgICkNCit7DQorICBFRklfR1JBUEhJQ1NfT1VUUFVU X01PREVfSU5GT1JNQVRJT04gKkluZm87DQorICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAg ICAgICAgICAgU3RhdHVzOw0KKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFNpemU7DQorDQorICBTdGF0dXMgPSBHb3AtPlF1ZXJ5TW9kZShHb3AsIEdvcC0+TW9kZS0+TW9k ZSwgJlNpemUsICZJbmZvKTsNCisgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCisgICAgcmV0 dXJuIFN0YXR1czsNCisgIH0NCisNCisgIC8qIFdlIGZvdW5kIGEgR09QICovDQorDQorICAvKiBF RkkgZnJhbWVidWZmZXIgKi8NCisgIFNpLT5vcmlnX3ZpZGVvX2lzVkdBID0gMHg3MDsNCisNCisg IFNpLT5vcmlnX3ggPSAwOw0KKyAgU2ktPm9yaWdfeSA9IDA7DQorICBTaS0+b3JpZ192aWRlb19w YWdlID0gMDsNCisgIFNpLT5vcmlnX3ZpZGVvX21vZGUgPSAwOw0KKyAgU2ktPm9yaWdfdmlkZW9f Y29scyA9IDA7DQorICBTaS0+b3JpZ192aWRlb19saW5lcyA9IDA7DQorICBTaS0+b3JpZ192aWRl b19lZ2FfYnggPSAwOw0KKyAgU2ktPm9yaWdfdmlkZW9fcG9pbnRzID0gMDsNCisNCisgIFNpLT5s ZmJfYmFzZSA9IChVSU5UMzIpIEdvcC0+TW9kZS0+RnJhbWVCdWZmZXJCYXNlOw0KKyAgU2ktPmxm Yl9zaXplID0gKFVJTlQzMikgR29wLT5Nb2RlLT5GcmFtZUJ1ZmZlclNpemU7DQorICBTaS0+bGZi X3dpZHRoID0gKFVJTlQxNikgSW5mby0+SG9yaXpvbnRhbFJlc29sdXRpb247DQorICBTaS0+bGZi X2hlaWdodCA9IChVSU5UMTYpIEluZm8tPlZlcnRpY2FsUmVzb2x1dGlvbjsNCisgIFNpLT5wYWdl cyA9IDE7DQorICBTaS0+dmVzYXBtX3NlZyA9IDA7DQorICBTaS0+dmVzYXBtX29mZiA9IDA7DQor DQorICBpZiAoSW5mby0+UGl4ZWxGb3JtYXQgPT0gUGl4ZWxSZWRHcmVlbkJsdWVSZXNlcnZlZDhC aXRQZXJDb2xvcikgew0KKyAgICBTaS0+bGZiX2RlcHRoID0gMzI7DQorICAgIFNpLT5yZWRfc2l6 ZSA9IDg7DQorICAgIFNpLT5yZWRfcG9zID0gMDsNCisgICAgU2ktPmdyZWVuX3NpemUgPSA4Ow0K KyAgICBTaS0+Z3JlZW5fcG9zID0gODsNCisgICAgU2ktPmJsdWVfc2l6ZSA9IDg7DQorICAgIFNp LT5ibHVlX3BvcyA9IDE2Ow0KKyAgICBTaS0+cnN2ZF9zaXplID0gODsNCisgICAgU2ktPnJzdmRf cG9zID0gMjQ7DQorICAgIFNpLT5sZmJfbGluZWxlbmd0aCA9IChVSU5UMTYpIChJbmZvLT5QaXhl bHNQZXJTY2FuTGluZSAqIDQpOw0KKw0KKyAgfSBlbHNlIGlmIChJbmZvLT5QaXhlbEZvcm1hdCA9 PSBQaXhlbEJsdWVHcmVlblJlZFJlc2VydmVkOEJpdFBlckNvbG9yKSB7DQorICAgIFNpLT5sZmJf ZGVwdGggPSAzMjsNCisgICAgU2ktPnJlZF9zaXplID0gODsNCisgICAgU2ktPnJlZF9wb3MgPSAx NjsNCisgICAgU2ktPmdyZWVuX3NpemUgPSA4Ow0KKyAgICBTaS0+Z3JlZW5fcG9zID0gODsNCisg ICAgU2ktPmJsdWVfc2l6ZSA9IDg7DQorICAgIFNpLT5ibHVlX3BvcyA9IDA7DQorICAgIFNpLT5y c3ZkX3NpemUgPSA4Ow0KKyAgICBTaS0+cnN2ZF9wb3MgPSAyNDsNCisgICAgU2ktPmxmYl9saW5l bGVuZ3RoID0gKFVJTlQxNikgKEluZm8tPlBpeGVsc1BlclNjYW5MaW5lICogNCk7DQorICB9IGVs c2UgaWYgKEluZm8tPlBpeGVsRm9ybWF0ID09IFBpeGVsQml0TWFzaykgew0KKyAgICBGaW5kQml0 cyhJbmZvLT5QaXhlbEluZm9ybWF0aW9uLlJlZE1hc2ssDQorICAgICAgICAmU2ktPnJlZF9wb3Ms ICZTaS0+cmVkX3NpemUpOw0KKyAgICBGaW5kQml0cyhJbmZvLT5QaXhlbEluZm9ybWF0aW9uLkdy ZWVuTWFzaywNCisgICAgICAgICZTaS0+Z3JlZW5fcG9zLCAmU2ktPmdyZWVuX3NpemUpOw0KKyAg ICBGaW5kQml0cyhJbmZvLT5QaXhlbEluZm9ybWF0aW9uLkJsdWVNYXNrLA0KKyAgICAgICAgJlNp LT5ibHVlX3BvcywgJlNpLT5ibHVlX3NpemUpOw0KKyAgICBGaW5kQml0cyhJbmZvLT5QaXhlbElu Zm9ybWF0aW9uLlJlc2VydmVkTWFzaywNCisgICAgICAgICZTaS0+cnN2ZF9wb3MsICZTaS0+cnN2 ZF9zaXplKTsNCisgICAgU2ktPmxmYl9kZXB0aCA9IFNpLT5yZWRfc2l6ZSArIFNpLT5ncmVlbl9z aXplICsNCisgICAgICBTaS0+Ymx1ZV9zaXplICsgU2ktPnJzdmRfc2l6ZTsNCisgICAgU2ktPmxm Yl9saW5lbGVuZ3RoID0gKFVJTlQxNikgKChJbmZvLT5QaXhlbHNQZXJTY2FuTGluZSAqIFNpLT5s ZmJfZGVwdGgpIC8gOCk7DQorICB9IGVsc2Ugew0KKyAgICBTaS0+bGZiX2RlcHRoID0gNDsNCisg ICAgU2ktPnJlZF9zaXplID0gMDsNCisgICAgU2ktPnJlZF9wb3MgPSAwOw0KKyAgICBTaS0+Z3Jl ZW5fc2l6ZSA9IDA7DQorICAgIFNpLT5ncmVlbl9wb3MgPSAwOw0KKyAgICBTaS0+Ymx1ZV9zaXpl ID0gMDsNCisgICAgU2ktPmJsdWVfcG9zID0gMDsNCisgICAgU2ktPnJzdmRfc2l6ZSA9IDA7DQor ICAgIFNpLT5yc3ZkX3BvcyA9IDA7DQorICAgIFNpLT5sZmJfbGluZWxlbmd0aCA9IFNpLT5sZmJf d2lkdGggLyAyOw0KKyAgfQ0KKw0KKyAgcmV0dXJuIFN0YXR1czsNCit9DQorDQorDQorU1RBVElD DQorRUZJX1NUQVRVUw0KK1NldHVwR3JhcGhpY3MgKA0KKyAgSU4gT1VUIHN0cnVjdCBib290X3Bh cmFtcyAqQnANCisgICkNCit7DQorICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgICAgIFN0 YXR1czsNCisgIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgICAgICAgKkhhbmRsZUJ1ZmZlcjsN CisgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgSGFuZGxlQ291bnQ7DQorICBVSU5U TiAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4Ow0KKyAgRUZJX0dSQVBISUNTX09VVFBV VF9QUk9UT0NPTCAgICAqR29wOw0KKw0KKyAgWmVyb01lbSAoKFZPSUQqKSZCcC0+c2NyZWVuX2lu Zm8sIHNpemVvZihCcC0+c2NyZWVuX2luZm8pKTsNCisNCisgIFN0YXR1cyA9IGdCUy0+TG9jYXRl SGFuZGxlQnVmZmVyICgNCisgICAgICAgICAgICAgICAgICBCeVByb3RvY29sLA0KKyAgICAgICAg ICAgICAgICAgICZnRWZpR3JhcGhpY3NPdXRwdXRQcm90b2NvbEd1aWQsDQorICAgICAgICAgICAg ICAgICAgTlVMTCwNCisgICAgICAgICAgICAgICAgICAmSGFuZGxlQ291bnQsDQorICAgICAgICAg ICAgICAgICAgJkhhbmRsZUJ1ZmZlcg0KKyAgICAgICAgICAgICAgICAgICk7DQorICBpZiAoIUVG SV9FUlJPUiAoU3RhdHVzKSkgew0KKyAgICBmb3IgKEluZGV4ID0gMDsgSW5kZXggPCBIYW5kbGVD b3VudDsgSW5kZXgrKykgew0KKyAgICAgIFN0YXR1cyA9IGdCUy0+SGFuZGxlUHJvdG9jb2wgKA0K KyAgICAgICAgICAgICAgICAgICAgICBIYW5kbGVCdWZmZXJbSW5kZXhdLA0KKyAgICAgICAgICAg ICAgICAgICAgICAmZ0VmaUdyYXBoaWNzT3V0cHV0UHJvdG9jb2xHdWlkLA0KKyAgICAgICAgICAg ICAgICAgICAgICAoVk9JRCopICZHb3ANCisgICAgICAgICAgICAgICAgICAgICAgKTsNCisgICAg ICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQorICAgICAgICBjb250aW51ZTsNCisgICAgICB9 DQorDQorICAgICAgU3RhdHVzID0gU2V0dXBHcmFwaGljc0Zyb21Hb3AgKCZCcC0+c2NyZWVuX2lu Zm8sIEdvcCk7DQorICAgICAgaWYgKCFFRklfRVJST1IgKFN0YXR1cykpIHsNCisgICAgICAgIEZy ZWVQb29sIChIYW5kbGVCdWZmZXIpOw0KKyAgICAgICAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KKyAg ICAgIH0NCisgICAgfQ0KKw0KKyAgICBGcmVlUG9vbCAoSGFuZGxlQnVmZmVyKTsNCisgIH0NCisN CisgIHJldHVybiBFRklfTk9UX0ZPVU5EOw0KK30NCisNCisNCitTVEFUSUMNCitFRklfU1RBVFVT DQorU2V0dXBMaW51eEJvb3RQYXJhbXMgKA0KKyAgSU4gT1VUIHN0cnVjdCBib290X3BhcmFtcyAq QnANCisgICkNCit7DQorICBTZXR1cEdyYXBoaWNzIChCcCk7DQorDQorICBTZXR1cExpbnV4TWVt bWFwIChCcCk7DQorDQorICByZXR1cm4gRUZJX1NVQ0NFU1M7DQorfQ0KKw0KKw0KK0VGSV9TVEFU VVMNCitFRklBUEkNCitMb2FkTGludXggKA0KKyAgSU4gVk9JRCAgICAgICpLZXJuZWwsDQorICBJ TiBPVVQgVk9JRCAgKktlcm5lbFNldHVwDQorICApDQorew0KKyAgRUZJX1NUQVRVUyAgICAgICAg ICAgICBTdGF0dXM7DQorICBzdHJ1Y3QgYm9vdF9wYXJhbXMgICpCcDsNCisNCisgIFN0YXR1cyA9 IEJhc2ljS2VybmVsU2V0dXBDaGVjayAoS2VybmVsU2V0dXApOw0KKyAgaWYgKEVGSV9FUlJPUiAo U3RhdHVzKSkgew0KKyAgICByZXR1cm4gU3RhdHVzOw0KKyAgfQ0KKw0KKyAgQnAgPSAoc3RydWN0 IGJvb3RfcGFyYW1zICopIEtlcm5lbFNldHVwOw0KKw0KKyAgaWYgKEJwLT5oZHIudmVyc2lvbiA8 IDB4MjA1IHx8ICFCcC0+aGRyLnJlbG9jYXRhYmxlX2tlcm5lbCkgew0KKyAgICAvLw0KKyAgICAv LyBXZSBvbmx5IHN1cHBvcnQgcmVsb2NhdGFibGUga2VybmVscw0KKyAgICAvLw0KKyAgICByZXR1 cm4gRUZJX1VOU1VQUE9SVEVEOw0KKyAgfQ0KKw0KKyAgSW5pdExpbnV4RGVzY3JpcHRvclRhYmxl cyAoKTsNCisNCisgIEJwLT5oZHIuY29kZTMyX3N0YXJ0ID0gKFVJTlQzMikoVUlOVE4pIEtlcm5l bDsNCisgIGlmIChCcC0+aGRyLnZlcnNpb24gPj0gMHgyMGMgJiYgQnAtPmhkci5oYW5kb3Zlcl9v ZmZzZXQgJiYNCisgICAgICAoQnAtPmhkci54bG9hZGZsYWdzICYgKHNpemVvZiAoVUlOVE4pID09 IDQgPyBCSVQyIDogQklUMykpKSB7DQorICAgIERFQlVHICgoRUZJX0RfSU5GTywgIkp1bXBpbmcg dG8ga2VybmVsIEVGSSBoYW5kb3ZlciBwb2ludCBhdCBvZnMgJXhcbiIsIEJwLT5oZHIuaGFuZG92 ZXJfb2Zmc2V0KSk7DQorDQorICAgIERpc2FibGVJbnRlcnJ1cHRzICgpOw0KKyAgICBKdW1wVG9V ZWZpS2VybmVsICgoVk9JRCopIGdJbWFnZUhhbmRsZSwgKFZPSUQqKSBnU1QsIEtlcm5lbFNldHVw LCBLZXJuZWwpOw0KKyAgfQ0KKw0KKyAgLy8NCisgIC8vIE9sZCBrZXJuZWxzIHdpdGhvdXQgRUZJ IGhhbmRvdmVyIHByb3RvY29sDQorICAvLw0KKyAgU2V0dXBMaW51eEJvb3RQYXJhbXMgKEtlcm5l bFNldHVwKTsNCisNCisgIERFQlVHICgoRUZJX0RfSU5GTywgIkp1bXBpbmcgdG8ga2VybmVsXG4i KSk7DQorICBEaXNhYmxlSW50ZXJydXB0cyAoKTsNCisgIFNldExpbnV4RGVzY3JpcHRvclRhYmxl cyAoKTsNCisgIEp1bXBUb0tlcm5lbCAoS2VybmVsLCAoVk9JRCopIEtlcm5lbFNldHVwKTsNCisN CisgIHJldHVybiBFRklfU1VDQ0VTUzsNCit9DQorDQpkaWZmIC0tZ2l0IGEvUGxhdGZvcm0vSW50 ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0xpYnJhcnkvTG9hZExpbnV4TGliL0xpbnV4R2R0LmMgYi9Q bGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvTGlicmFyeS9Mb2FkTGludXhMaWIvTGlu dXhHZHQuYw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAuLjYyNGZiYzM3 Y2INCi0tLSAvZGV2L251bGwNCisrKyBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBr Zy9MaWJyYXJ5L0xvYWRMaW51eExpYi9MaW51eEdkdC5jDQpAQCAtMCwwICsxLDE3NSBAQA0KKy8q KiBAZmlsZQ0KKyAgSW5pdGlhbGl6ZSBHRFQgZm9yIExpbnV4Lg0KKw0KKyAgQ29weXJpZ2h0IChj KSAyMDA2IC0gMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gPEJS Pg0KKw0KKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCisq Ki8NCisNCisjaW5jbHVkZSAiTG9hZExpbnV4TGliLmgiDQorDQorDQorLy8NCisvLyBMb2NhbCBz dHJ1Y3R1cmUgZGVmaW5pdGlvbnMNCisvLw0KKw0KKyNwcmFnbWEgcGFjayAoMSkNCisNCisvLw0K Ky8vIEdsb2JhbCBEZXNjcmlwdG9yIEVudHJ5IHN0cnVjdHVyZXMNCisvLw0KKw0KK3R5cGVkZWYg c3RydWN0IF9HRFRfRU5UUlkgew0KKyAgVUlOVDE2IExpbWl0MTVfMDsNCisgIFVJTlQxNiBCYXNl MTVfMDsNCisgIFVJTlQ4ICBCYXNlMjNfMTY7DQorICBVSU5UOCAgVHlwZTsNCisgIFVJTlQ4ICBM aW1pdDE5XzE2X2FuZF9mbGFnczsNCisgIFVJTlQ4ICBCYXNlMzFfMjQ7DQorfSBHRFRfRU5UUlk7 DQorDQordHlwZWRlZg0KK3N0cnVjdCBfR0RUX0VOVFJJRVMgew0KKyAgR0RUX0VOVFJZIE51bGw7 DQorICBHRFRfRU5UUlkgTnVsbDI7DQorICBHRFRfRU5UUlkgTGluZWFyOw0KKyAgR0RUX0VOVFJZ IExpbmVhckNvZGU7DQorICBHRFRfRU5UUlkgVGFza1NlZ21lbnQ7DQorICBHRFRfRU5UUlkgU3Bh cmU0Ow0KKyAgR0RUX0VOVFJZIFNwYXJlNTsNCit9IEdEVF9FTlRSSUVTOw0KKw0KKyNwcmFnbWEg cGFjayAoKQ0KKw0KK1NUQVRJQyBHRFRfRU5UUklFUyAqbUdkdCA9IE5VTEw7DQorDQorLy8NCisv LyBHbG9iYWwgZGVzY3JpcHRvciB0YWJsZSAoR0RUKSBUZW1wbGF0ZQ0KKy8vDQorU1RBVElDIEdE VF9FTlRSSUVTIEdkdFRlbXBsYXRlID0gew0KKyAgLy8NCisgIC8vIE51bGwNCisgIC8vDQorICB7 DQorICAgIDB4MCwgICAgICAgICAgICAvLyBsaW1pdCAxNTowDQorICAgIDB4MCwgICAgICAgICAg ICAvLyBiYXNlIDE1OjANCisgICAgMHgwLCAgICAgICAgICAgIC8vIGJhc2UgMjM6MTYNCisgICAg MHgwLCAgICAgICAgICAgIC8vIHR5cGUNCisgICAgMHgwLCAgICAgICAgICAgIC8vIGxpbWl0IDE5 OjE2LCBmbGFncw0KKyAgICAweDAsICAgICAgICAgICAgLy8gYmFzZSAzMToyNA0KKyAgfSwNCisg IC8vDQorICAvLyBOdWxsMg0KKyAgLy8NCisgIHsNCisgICAgMHgwLCAgICAgICAgICAgIC8vIGxp bWl0IDE1OjANCisgICAgMHgwLCAgICAgICAgICAgIC8vIGJhc2UgMTU6MA0KKyAgICAweDAsICAg ICAgICAgICAgLy8gYmFzZSAyMzoxNg0KKyAgICAweDAsICAgICAgICAgICAgLy8gdHlwZQ0KKyAg ICAweDAsICAgICAgICAgICAgLy8gbGltaXQgMTk6MTYsIGZsYWdzDQorICAgIDB4MCwgICAgICAg ICAgICAvLyBiYXNlIDMxOjI0DQorICB9LA0KKyAgLy8NCisgIC8vIExpbmVhcg0KKyAgLy8NCisg IHsNCisgICAgMHgwRkZGRiwgICAgICAgIC8vIGxpbWl0IDB4RkZGRkYNCisgICAgMHgwLCAgICAg ICAgICAgIC8vIGJhc2UgMA0KKyAgICAweDAsDQorICAgIDB4MDlBLCAgICAgICAgICAvLyBwcmVz ZW50LCByaW5nIDAsIGRhdGEsIGV4cGFuZC11cCwgd3JpdGFibGUNCisgICAgMHgwQ0YsICAgICAg ICAgIC8vIHBhZ2UtZ3JhbnVsYXIsIDMyLWJpdA0KKyAgICAweDAsDQorICB9LA0KKyAgLy8NCisg IC8vIExpbmVhckNvZGUNCisgIC8vDQorICB7DQorICAgIDB4MEZGRkYsICAgICAgICAvLyBsaW1p dCAweEZGRkZGDQorICAgIDB4MCwgICAgICAgICAgICAvLyBiYXNlIDANCisgICAgMHgwLA0KKyAg ICAweDA5MiwgICAgICAgICAgLy8gcHJlc2VudCwgcmluZyAwLCBkYXRhLCBleHBhbmQtdXAsIHdy aXRhYmxlDQorICAgIDB4MENGLCAgICAgICAgICAvLyBwYWdlLWdyYW51bGFyLCAzMi1iaXQNCisg ICAgMHgwLA0KKyAgfSwNCisgIC8vDQorICAvLyBUYXNrU2VnbWVudA0KKyAgLy8NCisgIHsNCisg ICAgMHgwLCAgICAgICAgICAgIC8vIGxpbWl0IDANCisgICAgMHgwLCAgICAgICAgICAgIC8vIGJh c2UgMA0KKyAgICAweDAsDQorICAgIDB4MDg5LCAgICAgICAgICAvLyA/DQorICAgIDB4MDgwLCAg ICAgICAgICAvLyA/DQorICAgIDB4MCwNCisgIH0sDQorICAvLw0KKyAgLy8gU3BhcmU0DQorICAv Lw0KKyAgew0KKyAgICAweDAsICAgICAgICAgICAgLy8gbGltaXQgMA0KKyAgICAweDAsICAgICAg ICAgICAgLy8gYmFzZSAwDQorICAgIDB4MCwNCisgICAgMHgwLCAgICAgICAgICAgIC8vIHByZXNl bnQsIHJpbmcgMCwgZGF0YSwgZXhwYW5kLXVwLCB3cml0YWJsZQ0KKyAgICAweDAsICAgICAgICAg ICAgLy8gcGFnZS1ncmFudWxhciwgMzItYml0DQorICAgIDB4MCwNCisgIH0sDQorICAvLw0KKyAg Ly8gU3BhcmU1DQorICAvLw0KKyAgew0KKyAgICAweDAsICAgICAgICAgICAgLy8gbGltaXQgMA0K KyAgICAweDAsICAgICAgICAgICAgLy8gYmFzZSAwDQorICAgIDB4MCwNCisgICAgMHgwLCAgICAg ICAgICAgIC8vIHByZXNlbnQsIHJpbmcgMCwgZGF0YSwgZXhwYW5kLXVwLCB3cml0YWJsZQ0KKyAg ICAweDAsICAgICAgICAgICAgLy8gcGFnZS1ncmFudWxhciwgMzItYml0DQorICAgIDB4MCwNCisg IH0sDQorfTsNCisNCisvKioNCisgIEluaXRpYWxpemUgR2xvYmFsIERlc2NyaXB0b3IgVGFibGUu DQorDQorKiovDQorVk9JRA0KK0luaXRMaW51eERlc2NyaXB0b3JUYWJsZXMgKA0KKyAgVk9JRA0K KyAgKQ0KK3sNCisgIC8vDQorICAvLyBBbGxvY2F0ZSBSdW50aW1lIERhdGEgZm9yIHRoZSBHRFQN CisgIC8vDQorICBtR2R0ID0gQWxsb2NhdGVSdW50aW1lUG9vbCAoc2l6ZW9mIChHZHRUZW1wbGF0 ZSkgKyA4KTsNCisgIEFTU0VSVCAobUdkdCAhPSBOVUxMKTsNCisgIG1HZHQgPSBBTElHTl9QT0lO VEVSIChtR2R0LCA4KTsNCisNCisgIC8vDQorICAvLyBJbml0aWFsaXplIGFsbCBHRFQgZW50cmll cw0KKyAgLy8NCisgIENvcHlNZW0gKG1HZHQsICZHZHRUZW1wbGF0ZSwgc2l6ZW9mIChHZHRUZW1w bGF0ZSkpOw0KKw0KK30NCisNCisvKioNCisgIEluaXRpYWxpemUgR2xvYmFsIERlc2NyaXB0b3Ig VGFibGUuDQorDQorKiovDQorVk9JRA0KK1NldExpbnV4RGVzY3JpcHRvclRhYmxlcyAoDQorICBW T0lEDQorICApDQorew0KKyAgSUEzMl9ERVNDUklQVE9SIEdkdFB0cjsNCisgIElBMzJfREVTQ1JJ UFRPUiBJZHRQdHI7DQorDQorICAvLw0KKyAgLy8gV3JpdGUgR0RUIHJlZ2lzdGVyDQorICAvLw0K KyAgR2R0UHRyLkJhc2UgPSAoVUlOVDMyKShVSU5UTikoVk9JRCopIG1HZHQ7DQorICBHZHRQdHIu TGltaXQgPSAoVUlOVDE2KSAoc2l6ZW9mIChHZHRUZW1wbGF0ZSkgLSAxKTsNCisgIEFzbVdyaXRl R2R0ciAoJkdkdFB0cik7DQorDQorICBJZHRQdHIuQmFzZSA9IChVSU5UMzIpIDA7DQorICBJZHRQ dHIuTGltaXQgPSAoVUlOVDE2KSAwOw0KKyAgQXNtV3JpdGVJZHRyICgmSWR0UHRyKTsNCit9DQor DQpkaWZmIC0tZ2l0IGEvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0xpYnJhcnkv TnZWYXJzRmlsZUxpYi9Gc0FjY2Vzcy5jIGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJk UGtnL0xpYnJhcnkvTnZWYXJzRmlsZUxpYi9Gc0FjY2Vzcy5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0 NA0KaW5kZXggMDAwMDAwMDAwMC4uNmJhODc4NGNmMw0KLS0tIC9kZXYvbnVsbA0KKysrIGIvUGxh dGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0xpYnJhcnkvTnZWYXJzRmlsZUxpYi9Gc0Fj Y2Vzcy5jDQpAQCAtMCwwICsxLDUwNyBAQA0KKy8qKiBAZmlsZQ0KKyAgRmlsZSBTeXN0ZW0gQWNj ZXNzIGZvciBOdlZhcnNGaWxlTGliDQorDQorICBDb3B5cmlnaHQgKGMpIDIwMDQgLSAyMDE0IElu dGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLiA8QlI+DQorDQorICBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KKyoqLw0KKw0KKyNpbmNsdWRl ICJOdlZhcnNGaWxlTGliLmgiDQorDQorI2luY2x1ZGUgPExpYnJhcnkvQmFzZU1lbW9yeUxpYi5o Pg0KKyNpbmNsdWRlIDxMaWJyYXJ5L0RlYnVnTGliLmg+DQorI2luY2x1ZGUgPExpYnJhcnkvTWVt b3J5QWxsb2NhdGlvbkxpYi5oPg0KKw0KKw0KKy8qKg0KKyAgT3BlbiB0aGUgTnZWYXJzIGZpbGUg Zm9yIHJlYWRpbmcgb3Igd3JpdGluZw0KKw0KKyAgQHBhcmFtW2luXSAgRnNIYW5kbGUgLSBIYW5k bGUgZm9yIGEgZ0VmaVNpbXBsZUZpbGVTeXN0ZW1Qcm90b2NvbEd1aWQgaW5zdGFuY2UNCisgIEBw YXJhbVtpbl0gIFJlYWRpbmdGaWxlIC0gVFJVRTogb3BlbiB0aGUgZmlsZSBmb3IgcmVhZGluZy4g IEZBTFNFOiB3cml0aW5nDQorICBAcGFyYW1bb3V0XSBOdlZhcnNGaWxlIC0gSWYgRUZJX1NVQ0NF U1MgaXMgcmV0dXJuZWQsIHRoZW4gdGhpcyBpcyB1cGRhdGVkDQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgd2l0aCB0aGUgb3BlbmVkIE52VmFycyBmaWxlLg0KKw0KKyAgQHJldHVybiAgICAg RUZJX1NVQ0NFU1MgaWYgdGhlIGZpbGUgd2FzIG9wZW5lZA0KKw0KKyoqLw0KK0VGSV9TVEFUVVMN CitHZXROdlZhcnNGaWxlICgNCisgIElOICBFRklfSEFORExFICAgICAgICAgICAgRnNIYW5kbGUs DQorICBJTiAgQk9PTEVBTiAgICAgICAgICAgICAgIFJlYWRpbmdGaWxlLA0KKyAgT1VUIEVGSV9G SUxFX0hBTkRMRSAgICAgICAqTnZWYXJzRmlsZQ0KKyAgKQ0KK3sNCisgIEVGSV9TVEFUVVMgICAg ICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KKyAgRUZJX1NJTVBMRV9GSUxFX1NZU1RF TV9QUk9UT0NPTCAgICAgICAqRnM7DQorICBFRklfRklMRV9IQU5ETEUgICAgICAgICAgICAgICAg ICAgICAgIFJvb3Q7DQorDQorICAvLw0KKyAgLy8gR2V0IHRoZSBGaWxlU3lzdGVtIHByb3RvY29s IG9uIHRoYXQgaGFuZGxlDQorICAvLw0KKyAgU3RhdHVzID0gZ0JTLT5IYW5kbGVQcm90b2NvbCAo DQorICAgICAgICAgICAgICAgICAgRnNIYW5kbGUsDQorICAgICAgICAgICAgICAgICAgJmdFZmlT aW1wbGVGaWxlU3lzdGVtUHJvdG9jb2xHdWlkLA0KKyAgICAgICAgICAgICAgICAgIChWT0lEICoq KSZGcw0KKyAgICAgICAgICAgICAgICAgICk7DQorICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7 DQorICAgIHJldHVybiBTdGF0dXM7DQorICB9DQorDQorICAvLw0KKyAgLy8gR2V0IHRoZSB2b2x1 bWUgKHRoZSByb290IGRpcmVjdG9yeSkNCisgIC8vDQorICBTdGF0dXMgPSBGcy0+T3BlblZvbHVt ZSAoRnMsICZSb290KTsNCisgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCisgICAgcmV0dXJu IFN0YXR1czsNCisgIH0NCisNCisgIC8vDQorICAvLyBBdHRlbXB0IHRvIG9wZW4gdGhlIE52VmFy cyBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeQ0KKyAgLy8NCisgIFN0YXR1cyA9IFJvb3QtPk9w ZW4gKA0KKyAgICAgICAgICAgICAgICAgICBSb290LA0KKyAgICAgICAgICAgICAgICAgICBOdlZh cnNGaWxlLA0KKyAgICAgICAgICAgICAgICAgICBMIk52VmFycyIsDQorICAgICAgICAgICAgICAg ICAgIFJlYWRpbmdGaWxlID8NCisgICAgICAgICAgICAgICAgICAgICBFRklfRklMRV9NT0RFX1JF QUQgOg0KKyAgICAgICAgICAgICAgICAgICAgICgNCisgICAgICAgICAgICAgICAgICAgICAgIEVG SV9GSUxFX01PREVfQ1JFQVRFIHwNCisgICAgICAgICAgICAgICAgICAgICAgIEVGSV9GSUxFX01P REVfUkVBRCB8DQorICAgICAgICAgICAgICAgICAgICAgICBFRklfRklMRV9NT0RFX1dSSVRFDQor ICAgICAgICAgICAgICAgICAgICAgKSwNCisgICAgICAgICAgICAgICAgICAgMA0KKyAgICAgICAg ICAgICAgICAgICApOw0KKw0KKyAgcmV0dXJuIFN0YXR1czsNCit9DQorDQorDQorLyoqDQorICBP cGVuIHRoZSBOdlZhcnMgZmlsZSBmb3IgcmVhZGluZyBvciB3cml0aW5nDQorDQorICBAcGFyYW1b aW5dICBGaWxlIC0gVGhlIGZpbGUgdG8gaW5zcGVjdA0KKyAgQHBhcmFtW291dF0gRXhpc3RzIC0g UmV0dXJucyB3aGV0aGVyIHRoZSBmaWxlIGV4aXN0cw0KKyAgQHBhcmFtW291dF0gU2l6ZSAtIFJl dHVybnMgdGhlIHNpemUgb2YgdGhlIGZpbGUNCisgICAgICAgICAgICAgICAgICAgICAoMCBpZiB0 aGUgZmlsZSBkb2VzIG5vdCBleGlzdCkNCisNCisqKi8NCitWT0lEDQorTnZWYXJzRmlsZVJlYWRD aGVja3VwICgNCisgIElOICBFRklfRklMRV9IQU5ETEUgICAgICAgIEZpbGUsDQorICBPVVQgQk9P TEVBTiAgICAgICAgICAgICAgICAqRXhpc3RzLA0KKyAgT1VUIFVJTlROICAgICAgICAgICAgICAg ICAgKlNpemUNCisgICkNCit7DQorICBFRklfRklMRV9JTkZPICAgICAgICAgICAgICAgKkZpbGVJ bmZvOw0KKw0KKyAgKkV4aXN0cyA9IEZBTFNFOw0KKyAgKlNpemUgPSAwOw0KKw0KKyAgRmlsZUlu Zm8gPSBGaWxlSGFuZGxlR2V0SW5mbyAoRmlsZSk7DQorICBpZiAoRmlsZUluZm8gPT0gTlVMTCkg ew0KKyAgICByZXR1cm47DQorICB9DQorDQorICBpZiAoKEZpbGVJbmZvLT5BdHRyaWJ1dGUgJiBF RklfRklMRV9ESVJFQ1RPUlkpICE9IDApIHsNCisgICAgRnJlZVBvb2wgKEZpbGVJbmZvKTsNCisg ICAgcmV0dXJuOw0KKyAgfQ0KKw0KKyAgKkV4aXN0cyA9IFRSVUU7DQorICAqU2l6ZSA9IChVSU5U TikgRmlsZUluZm8tPkZpbGVTaXplOw0KKw0KKyAgRnJlZVBvb2wgKEZpbGVJbmZvKTsNCit9DQor DQorDQorLyoqDQorICBPcGVuIHRoZSBOdlZhcnMgZmlsZSBmb3IgcmVhZGluZyBvciB3cml0aW5n DQorDQorICBAcGFyYW1baW5dICBGaWxlIC0gVGhlIGZpbGUgdG8gaW5zcGVjdA0KKyAgQHBhcmFt W291dF0gRXhpc3RzIC0gUmV0dXJucyB3aGV0aGVyIHRoZSBmaWxlIGV4aXN0cw0KKyAgQHBhcmFt W291dF0gU2l6ZSAtIFJldHVybnMgdGhlIHNpemUgb2YgdGhlIGZpbGUNCisgICAgICAgICAgICAg ICAgICAgICAoMCBpZiB0aGUgZmlsZSBkb2VzIG5vdCBleGlzdCkNCisNCisqKi8NCitFRklfU1RB VFVTDQorRmlsZUhhbmRsZUVtcHR5ICgNCisgIElOICBFRklfRklMRV9IQU5ETEUgICAgICAgIEZp bGUNCisgICkNCit7DQorICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KKyAg RUZJX0ZJTEVfSU5GTyAgICAgICAgICAgICAgICpGaWxlSW5mbzsNCisNCisgIC8vDQorICAvLyBS ZXRyaWV2ZSB0aGUgRmlsZUluZm8gc3RydWN0dXJlDQorICAvLw0KKyAgRmlsZUluZm8gPSBGaWxl SGFuZGxlR2V0SW5mbyAoRmlsZSk7DQorICBpZiAoRmlsZUluZm8gPT0gTlVMTCkgew0KKyAgICBy ZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KKyAgfQ0KKw0KKyAgLy8NCisgIC8vIElmIHRo ZSBwYXRoIGlzIGEgZGlyZWN0b3J5LCB0aGVuIHJldHVybiBhbiBlcnJvcg0KKyAgLy8NCisgIGlm ICgoRmlsZUluZm8tPkF0dHJpYnV0ZSAmIEVGSV9GSUxFX0RJUkVDVE9SWSkgIT0gMCkgew0KKyAg ICBGcmVlUG9vbCAoRmlsZUluZm8pOw0KKyAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVS Ow0KKyAgfQ0KKw0KKyAgLy8NCisgIC8vIElmIHRoZSBmaWxlIHNpemUgaXMgYWxyZWFkeSAwLCB0 aGVuIGl0IGlzIGVtcHR5LCBzbw0KKyAgLy8gd2UgY2FuIHJldHVybiBzdWNjZXNzLg0KKyAgLy8N CisgIGlmIChGaWxlSW5mby0+RmlsZVNpemUgPT0gMCkgew0KKyAgICBGcmVlUG9vbCAoRmlsZUlu Zm8pOw0KKyAgICByZXR1cm4gRUZJX1NVQ0NFU1M7DQorICB9DQorDQorICAvLw0KKyAgLy8gU2V0 IHRoZSBmaWxlIHNpemUgdG8gMC4NCisgIC8vDQorICBGaWxlSW5mby0+RmlsZVNpemUgPSAwOw0K KyAgU3RhdHVzID0gRmlsZUhhbmRsZVNldEluZm8gKEZpbGUsIEZpbGVJbmZvKTsNCisNCisgIEZy ZWVQb29sIChGaWxlSW5mbyk7DQorDQorICByZXR1cm4gU3RhdHVzOw0KK30NCisNCisNCisvKioN CisgIFJlYWRzIGEgZmlsZSB0byBhIG5ld2x5IGFsbG9jYXRlZCBidWZmZXINCisNCisgIEBwYXJh bVtpbl0gIEZpbGUgLSBUaGUgZmlsZSB0byByZWFkDQorICBAcGFyYW1baW5dICBSZWFkU2l6ZSAt IFRoZSBzaXplIG9mIGRhdGEgdG8gcmVhZCBmcm9tIHRoZSBmaWxlDQorDQorICBAcmV0dXJuICAg ICBQb2ludGVyIHRvIGJ1ZmZlciBhbGxvY2F0ZWQgdG8gaG9sZCB0aGUgZmlsZQ0KKyAgICAgICAg ICAgICAgY29udGVudHMuICBOVUxMIGlmIGFuIGVycm9yIG9jY3VycmVkLg0KKw0KKyoqLw0KK1ZP SUQqDQorRmlsZUhhbmRsZVJlYWRUb05ld0J1ZmZlciAoDQorICBJTiBFRklfRklMRV9IQU5ETEUg ICAgICAgICAgICBGaWxlSGFuZGxlLA0KKyAgSU4gVUlOVE4gICAgICAgICAgICAgICAgICAgICAg UmVhZFNpemUNCisgICkNCit7DQorICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgU3RhdHVz Ow0KKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgIEFjdHVhbFJlYWRTaXplOw0KKyAgVk9J RCAgICAgICAgICAgICAgICAgICAgICAgICpGaWxlQ29udGVudHM7DQorDQorICBBY3R1YWxSZWFk U2l6ZSA9IFJlYWRTaXplOw0KKyAgRmlsZUNvbnRlbnRzID0gQWxsb2NhdGVQb29sIChSZWFkU2l6 ZSk7DQorICBpZiAoRmlsZUNvbnRlbnRzICE9IE5VTEwpIHsNCisgICAgU3RhdHVzID0gRmlsZUhh bmRsZVJlYWQgKA0KKyAgICAgICAgICAgICAgIEZpbGVIYW5kbGUsDQorICAgICAgICAgICAgICAg JlJlYWRTaXplLA0KKyAgICAgICAgICAgICAgIEZpbGVDb250ZW50cw0KKyAgICAgICAgICAgICAg ICk7DQorICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykgfHwgKEFjdHVhbFJlYWRTaXplICE9IFJl YWRTaXplKSkgew0KKyAgICAgIEZyZWVQb29sIChGaWxlQ29udGVudHMpOw0KKyAgICAgIHJldHVy biBOVUxMOw0KKyAgICB9DQorICB9DQorDQorICByZXR1cm4gRmlsZUNvbnRlbnRzOw0KK30NCisN CisNCisvKioNCisgIFJlYWRzIHRoZSBjb250ZW50cyBvZiB0aGUgTnZWYXJzIGZpbGUgb24gdGhl IGZpbGUgc3lzdGVtDQorDQorICBAcGFyYW1baW5dICBGc0hhbmRsZSAtIEhhbmRsZSBmb3IgYSBn RWZpU2ltcGxlRmlsZVN5c3RlbVByb3RvY29sR3VpZCBpbnN0YW5jZQ0KKw0KKyAgQHJldHVybiAg ICAgRUZJX1NUQVRVUyBiYXNlZCBvbiB0aGUgc3VjY2VzcyBvciBmYWlsdXJlIG9mIHRoZSBmaWxl IHJlYWQNCisNCisqKi8NCitFRklfU1RBVFVTDQorUmVhZE52VmFyc0ZpbGUgKA0KKyAgSU4gIEVG SV9IQU5ETEUgICAgICAgICAgICBGc0hhbmRsZQ0KKyAgKQ0KK3sNCisgIEVGSV9TVEFUVVMgICAg ICAgICAgICAgICAgICBTdGF0dXM7DQorICBFRklfRklMRV9IQU5ETEUgICAgICAgICAgICAgRmls ZTsNCisgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICBGaWxlU2l6ZTsNCisgIEJPT0xFQU4g ICAgICAgICAgICAgICAgICAgICBGaWxlRXhpc3RzOw0KKyAgVk9JRCAgICAgICAgICAgICAgICAg ICAgICAgICpGaWxlQ29udGVudHM7DQorICBFRklfSEFORExFICAgICAgICAgICAgICAgICAgU2Vy aWFsaXplZFZhcmlhYmxlczsNCisNCisgIFN0YXR1cyA9IEdldE52VmFyc0ZpbGUgKEZzSGFuZGxl LCBUUlVFLCAmRmlsZSk7DQorICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQorICAgIERFQlVH ICgoRUZJX0RfSU5GTywgIkZzQWNjZXNzLmM6IENvdWxkIG5vdCBvcGVuIE5WIFZhcmlhYmxlcyBm aWxlIG9uIHRoaXMgZmlsZSBzeXN0ZW1cbiIpKTsNCisgICAgcmV0dXJuIFN0YXR1czsNCisgIH0N CisNCisgIE52VmFyc0ZpbGVSZWFkQ2hlY2t1cCAoRmlsZSwgJkZpbGVFeGlzdHMsICZGaWxlU2l6 ZSk7DQorICBpZiAoRmlsZVNpemUgPT0gMCkgew0KKyAgICBGaWxlSGFuZGxlQ2xvc2UgKEZpbGUp Ow0KKyAgICByZXR1cm4gRUZJX1VOU1VQUE9SVEVEOw0KKyAgfQ0KKw0KKyAgRmlsZUNvbnRlbnRz ID0gRmlsZUhhbmRsZVJlYWRUb05ld0J1ZmZlciAoRmlsZSwgRmlsZVNpemUpOw0KKyAgaWYgKEZp bGVDb250ZW50cyA9PSBOVUxMKSB7DQorICAgIEZpbGVIYW5kbGVDbG9zZSAoRmlsZSk7DQorICAg IHJldHVybiBFRklfVU5TVVBQT1JURUQ7DQorICB9DQorDQorICBERUJVRyAoKA0KKyAgICBFRklf RF9JTkZPLA0KKyAgICAiRnNBY2Nlc3MuYzogUmVhZCAlTHUgYnl0ZXMgZnJvbSBOViBWYXJpYWJs ZXMgZmlsZVxuIiwNCisgICAgKFVJTlQ2NClGaWxlU2l6ZQ0KKyAgICApKTsNCisNCisgIFN0YXR1 cyA9IFNlcmlhbGl6ZVZhcmlhYmxlc05ld0luc3RhbmNlRnJvbUJ1ZmZlciAoDQorICAgICAgICAg ICAgICZTZXJpYWxpemVkVmFyaWFibGVzLA0KKyAgICAgICAgICAgICBGaWxlQ29udGVudHMsDQor ICAgICAgICAgICAgIEZpbGVTaXplDQorICAgICAgICAgICAgICk7DQorICBpZiAoIVJFVFVSTl9F UlJPUiAoU3RhdHVzKSkgew0KKyAgICBTdGF0dXMgPSBTZXJpYWxpemVWYXJpYWJsZXNTZXRTZXJp YWxpemVkVmFyaWFibGVzIChTZXJpYWxpemVkVmFyaWFibGVzKTsNCisgIH0NCisNCisgIEZyZWVQ b29sIChGaWxlQ29udGVudHMpOw0KKyAgRmlsZUhhbmRsZUNsb3NlIChGaWxlKTsNCisNCisgIHJl dHVybiBTdGF0dXM7DQorfQ0KKw0KKw0KKy8qKg0KKyAgV3JpdGVzIGEgdmFyaWFibGUgdG8gaW5k aWNhdGUgdGhhdCB0aGUgTlYgdmFyaWFibGVzDQorICBoYXZlIGJlZW4gbG9hZGVkIGZyb20gdGhl IGZpbGUgc3lzdGVtLg0KKw0KKyoqLw0KK1NUQVRJQw0KK1ZPSUQNCitTZXROdlZhcnNWYXJpYWJs ZSAoDQorICBWT0lEDQorICApDQorew0KKyAgQk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAg IFZhckRhdGE7DQorICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgU2l6ZTsNCisNCisg IC8vDQorICAvLyBXcml0ZSBhIHZhcmlhYmxlIHRvIGluZGljYXRlIHdlJ3ZlIGFscmVhZHkgbG9h ZGVkIHRoZQ0KKyAgLy8gdmFyaWFibGUgZGF0YS4gIElmIGl0IGlzIGZvdW5kLCB3ZSBza2lwIHRo ZSBsb2FkaW5nIG9uDQorICAvLyBzdWJzZXF1ZW50IGF0dGVtcHRzLg0KKyAgLy8NCisgIFNpemUg PSBzaXplb2YgKFZhckRhdGEpOw0KKyAgVmFyRGF0YSA9IFRSVUU7DQorICBnUlQtPlNldFZhcmlh YmxlICgNCisgICAgICAgICBMIk52VmFycyIsDQorICAgICAgICAgJmdFZmlTaW1wbGVGaWxlU3lz dGVtUHJvdG9jb2xHdWlkLA0KKyAgICAgICAgIEVGSV9WQVJJQUJMRV9OT05fVk9MQVRJTEUgfA0K KyAgICAgICAgICAgRUZJX1ZBUklBQkxFX0JPT1RTRVJWSUNFX0FDQ0VTUyB8DQorICAgICAgICAg ICBFRklfVkFSSUFCTEVfUlVOVElNRV9BQ0NFU1MsDQorICAgICAgICAgU2l6ZSwNCisgICAgICAg ICAoVk9JRCopICZWYXJEYXRhDQorICAgICAgICAgKTsNCit9DQorDQorDQorLyoqDQorICBMb2Fk cyB0aGUgbm9uLXZvbGF0aWxlIHZhcmlhYmxlcyBmcm9tIHRoZSBOdlZhcnMgZmlsZSBvbiB0aGUN CisgIGdpdmVuIGZpbGUgc3lzdGVtLg0KKw0KKyAgQHBhcmFtW2luXSAgRnNIYW5kbGUgLSBIYW5k bGUgZm9yIGEgZ0VmaVNpbXBsZUZpbGVTeXN0ZW1Qcm90b2NvbEd1aWQgaW5zdGFuY2UNCisNCisg IEByZXR1cm4gICAgIEVGSV9TVEFUVVMgYmFzZWQgb24gdGhlIHN1Y2Nlc3Mgb3IgZmFpbHVyZSBv ZiBsb2FkIG9wZXJhdGlvbg0KKw0KKyoqLw0KK0VGSV9TVEFUVVMNCitMb2FkTnZWYXJzRnJvbUZz ICgNCisgIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnNIYW5kbGUNCisg ICkNCit7DQorICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KKyAgQk9P TEVBTiAgICAgICAgICAgICAgICAgICAgICAgIFZhckRhdGE7DQorICBVSU5UTiAgICAgICAgICAg ICAgICAgICAgICAgICAgU2l6ZTsNCisNCisgIERFQlVHICgoRUZJX0RfSU5GTywgIkZzQWNjZXNz LmM6IExvYWROdlZhcnNGcm9tRnNcbiIpKTsNCisNCisgIC8vDQorICAvLyBXZSB3cml0ZSBhIHZh cmlhYmxlIHRvIGluZGljYXRlIHdlJ3ZlIGFscmVhZHkgbG9hZGVkIHRoZQ0KKyAgLy8gdmFyaWFi bGUgZGF0YS4gIElmIGl0IGlzIGZvdW5kLCB3ZSBza2lwIHRoZSBsb2FkaW5nLg0KKyAgLy8NCisg IC8vIFRoaXMgaXMgcmVsZXZhbnQgaWYgdGhlIG5vbi12b2xhdGlsZSB2YXJpYWJsZSBoYXZlIGJl ZW4NCisgIC8vIGFibGUgdG8gc3Vydml2ZSBhIHJlYm9vdCBvcGVyYXRpb24uICBJbiB0aGF0IGNh c2UsIHdlIGRvbid0DQorICAvLyB3YW50IHRvIHJlLWxvYWQgdGhlIGZpbGUgYXMgaXQgd291bGQg b3ZlcndyaXRlIG5ld2VyIGNoYW5nZXMNCisgIC8vIG1hZGUgdG8gdGhlIHZhcmlhYmxlcy4NCisg IC8vDQorICBTaXplID0gc2l6ZW9mIChWYXJEYXRhKTsNCisgIFZhckRhdGEgPSBUUlVFOw0KKyAg U3RhdHVzID0gZ1JULT5HZXRWYXJpYWJsZSAoDQorICAgICAgICAgICAgICAgICAgTCJOdlZhcnMi LA0KKyAgICAgICAgICAgICAgICAgICZnRWZpU2ltcGxlRmlsZVN5c3RlbVByb3RvY29sR3VpZCwN CisgICAgICAgICAgICAgICAgICBOVUxMLA0KKyAgICAgICAgICAgICAgICAgICZTaXplLA0KKyAg ICAgICAgICAgICAgICAgIChWT0lEKikgJlZhckRhdGENCisgICAgICAgICAgICAgICAgICApOw0K KyAgaWYgKFN0YXR1cyA9PSBFRklfU1VDQ0VTUykgew0KKyAgICBERUJVRyAoKEVGSV9EX0lORk8s ICJOViBWYXJpYWJsZXMgd2VyZSBhbHJlYWR5IGxvYWRlZFxuIikpOw0KKyAgICByZXR1cm4gRUZJ X0FMUkVBRFlfU1RBUlRFRDsNCisgIH0NCisNCisgIC8vDQorICAvLyBBdHRlbXB0IHRvIHJlc3Rv cmUgdGhlIHZhcmlhYmxlcyBmcm9tIHRoZSBOdlZhcnMgZmlsZS4NCisgIC8vDQorICBTdGF0dXMg PSBSZWFkTnZWYXJzRmlsZSAoRnNIYW5kbGUpOw0KKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkg ew0KKyAgICBERUJVRyAoKEVGSV9EX0lORk8sICJFcnJvciB3aGlsZSByZXN0b3JpbmcgTlYgdmFy aWFibGUgZGF0YVxuIikpOw0KKyAgICByZXR1cm4gU3RhdHVzOw0KKyAgfQ0KKw0KKyAgLy8NCisg IC8vIFdyaXRlIGEgdmFyaWFibGUgdG8gaW5kaWNhdGUgd2UndmUgYWxyZWFkeSBsb2FkZWQgdGhl DQorICAvLyB2YXJpYWJsZSBkYXRhLiAgSWYgaXQgaXMgZm91bmQsIHdlIHNraXAgdGhlIGxvYWRp bmcgb24NCisgIC8vIHN1YnNlcXVlbnQgYXR0ZW1wdHMuDQorICAvLw0KKyAgU2V0TnZWYXJzVmFy aWFibGUoKTsNCisNCisgIERFQlVHICgoDQorICAgIEVGSV9EX0lORk8sDQorICAgICJGc0FjY2Vz cy5jOiBSZWFkIE5WIFZhcmlhYmxlcyBmaWxlIChzaXplPSVMdSlcbiIsDQorICAgIChVSU5UNjQp U2l6ZQ0KKyAgICApKTsNCisNCisgIHJldHVybiBTdGF0dXM7DQorfQ0KKw0KKw0KK1NUQVRJQw0K K1JFVFVSTl9TVEFUVVMNCitFRklBUEkNCitJdGVyYXRlVmFyaWFibGVzQ2FsbGJhY2tBZGRBbGxO dlZhcmlhYmxlcyAoDQorICBJTiAgVk9JRCAgICAgICAgICAgICAgICAgICAgICAgICAqQ29udGV4 dCwNCisgIElOICBDSEFSMTYgICAgICAgICAgICAgICAgICAgICAgICpWYXJpYWJsZU5hbWUsDQor ICBJTiAgRUZJX0dVSUQgICAgICAgICAgICAgICAgICAgICAqVmVuZG9yR3VpZCwNCisgIElOICBV SU5UMzIgICAgICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZXMsDQorICBJTiAgVUlOVE4gICAg ICAgICAgICAgICAgICAgICAgICBEYXRhU2l6ZSwNCisgIElOICBWT0lEICAgICAgICAgICAgICAg ICAgICAgICAgICpEYXRhDQorICApDQorew0KKyAgRUZJX0hBTkRMRSAgSW5zdGFuY2U7DQorDQor ICBJbnN0YW5jZSA9IChFRklfSEFORExFKSBDb250ZXh0Ow0KKw0KKyAgLy8NCisgIC8vIE9ubHkg c2F2ZSBub24tdm9sYXRpbGUgdmFyaWFibGVzDQorICAvLw0KKyAgaWYgKChBdHRyaWJ1dGVzICYg RUZJX1ZBUklBQkxFX05PTl9WT0xBVElMRSkgPT0gMCkgew0KKyAgICByZXR1cm4gUkVUVVJOX1NV Q0NFU1M7DQorICB9DQorDQorICByZXR1cm4gU2VyaWFsaXplVmFyaWFibGVzQWRkVmFyaWFibGUg KA0KKyAgICAgICAgICAgSW5zdGFuY2UsDQorICAgICAgICAgICBWYXJpYWJsZU5hbWUsDQorICAg ICAgICAgICBWZW5kb3JHdWlkLA0KKyAgICAgICAgICAgQXR0cmlidXRlcywNCisgICAgICAgICAg IERhdGFTaXplLA0KKyAgICAgICAgICAgRGF0YQ0KKyAgICAgICAgICAgKTsNCit9DQorDQorDQor LyoqDQorICBTYXZlcyB0aGUgbm9uLXZvbGF0aWxlIHZhcmlhYmxlcyBpbnRvIHRoZSBOdlZhcnMg ZmlsZSBvbiB0aGUNCisgIGdpdmVuIGZpbGUgc3lzdGVtLg0KKw0KKyAgQHBhcmFtW2luXSAgRnNI YW5kbGUgLSBIYW5kbGUgZm9yIGEgZ0VmaVNpbXBsZUZpbGVTeXN0ZW1Qcm90b2NvbEd1aWQgaW5z dGFuY2UNCisNCisgIEByZXR1cm4gICAgIEVGSV9TVEFUVVMgYmFzZWQgb24gdGhlIHN1Y2Nlc3Mg b3IgZmFpbHVyZSBvZiBsb2FkIG9wZXJhdGlvbg0KKw0KKyoqLw0KK0VGSV9TVEFUVVMNCitTYXZl TnZWYXJzVG9GcyAoDQorICBFRklfSEFORExFICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZz SGFuZGxlDQorICApDQorew0KKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgIFN0YXR1czsN CisgIEVGSV9GSUxFX0hBTkRMRSAgICAgICAgICAgICBGaWxlOw0KKyAgVUlOVE4gICAgICAgICAg ICAgICAgICAgICAgIFdyaXRlU2l6ZTsNCisgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICBW YXJpYWJsZURhdGFTaXplOw0KKyAgVk9JRCAgICAgICAgICAgICAgICAgICAgICAgICpWYXJpYWJs ZURhdGE7DQorICBFRklfSEFORExFICAgICAgICAgICAgICAgICAgU2VyaWFsaXplZFZhcmlhYmxl czsNCisNCisgIFNlcmlhbGl6ZWRWYXJpYWJsZXMgPSBOVUxMOw0KKw0KKyAgU3RhdHVzID0gU2Vy aWFsaXplVmFyaWFibGVzTmV3SW5zdGFuY2UgKCZTZXJpYWxpemVkVmFyaWFibGVzKTsNCisgIGlm IChFRklfRVJST1IgKFN0YXR1cykpIHsNCisgICAgcmV0dXJuIFN0YXR1czsNCisgIH0NCisNCisg IFN0YXR1cyA9IFNlcmlhbGl6ZVZhcmlhYmxlc0l0ZXJhdGVTeXN0ZW1WYXJpYWJsZXMgKA0KKyAg ICAgICAgICAgICBJdGVyYXRlVmFyaWFibGVzQ2FsbGJhY2tBZGRBbGxOdlZhcmlhYmxlcywNCisg ICAgICAgICAgICAgKFZPSUQqKSBTZXJpYWxpemVkVmFyaWFibGVzDQorICAgICAgICAgICAgICk7 DQorICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQorICAgIHJldHVybiBTdGF0dXM7DQorICB9 DQorDQorICBWYXJpYWJsZURhdGEgPSBOVUxMOw0KKyAgVmFyaWFibGVEYXRhU2l6ZSA9IDA7DQor ICBTdGF0dXMgPSBTZXJpYWxpemVWYXJpYWJsZXNUb0J1ZmZlciAoDQorICAgICAgICAgICAgIFNl cmlhbGl6ZWRWYXJpYWJsZXMsDQorICAgICAgICAgICAgIE5VTEwsDQorICAgICAgICAgICAgICZW YXJpYWJsZURhdGFTaXplDQorICAgICAgICAgICAgICk7DQorICBpZiAoU3RhdHVzID09IFJFVFVS Tl9CVUZGRVJfVE9PX1NNQUxMKSB7DQorICAgIFZhcmlhYmxlRGF0YSA9IEFsbG9jYXRlUG9vbCAo VmFyaWFibGVEYXRhU2l6ZSk7DQorICAgIGlmIChWYXJpYWJsZURhdGEgPT0gTlVMTCkgew0KKyAg ICAgIFN0YXR1cyA9IEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KKyAgICB9IGVsc2Ugew0KKyAgICAg IFN0YXR1cyA9IFNlcmlhbGl6ZVZhcmlhYmxlc1RvQnVmZmVyICgNCisgICAgICAgICAgICAgICAg IFNlcmlhbGl6ZWRWYXJpYWJsZXMsDQorICAgICAgICAgICAgICAgICBWYXJpYWJsZURhdGEsDQor ICAgICAgICAgICAgICAgICAmVmFyaWFibGVEYXRhU2l6ZQ0KKyAgICAgICAgICAgICAgICAgKTsN CisgICAgfQ0KKyAgfQ0KKw0KKyAgU2VyaWFsaXplVmFyaWFibGVzRnJlZUluc3RhbmNlIChTZXJp YWxpemVkVmFyaWFibGVzKTsNCisNCisgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCisgICAg cmV0dXJuIFN0YXR1czsNCisgIH0NCisNCisgIC8vDQorICAvLyBPcGVuIHRoZSBOdlZhcnMgZmls ZSBmb3Igd3JpdGluZy4NCisgIC8vDQorICBTdGF0dXMgPSBHZXROdlZhcnNGaWxlIChGc0hhbmRs ZSwgRkFMU0UsICZGaWxlKTsNCisgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCisgICAgREVC VUcgKChFRklfRF9JTkZPLCAiRnNBY2Nlc3MuYzogVW5hYmxlIHRvIG9wZW4gZmlsZSB0byBzYXZl ZCBOViBWYXJpYWJsZXNcbiIpKTsNCisgICAgcmV0dXJuIFN0YXR1czsNCisgIH0NCisNCisgIC8v DQorICAvLyBFbXB0eSB0aGUgc3RhcnRpbmcgZmlsZSBjb250ZW50cy4NCisgIC8vDQorICBTdGF0 dXMgPSBGaWxlSGFuZGxlRW1wdHkgKEZpbGUpOw0KKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkg ew0KKyAgICBGaWxlSGFuZGxlQ2xvc2UgKEZpbGUpOw0KKyAgICByZXR1cm4gU3RhdHVzOw0KKyAg fQ0KKw0KKyAgV3JpdGVTaXplID0gVmFyaWFibGVEYXRhU2l6ZTsNCisgIFN0YXR1cyA9IEZpbGVI YW5kbGVXcml0ZSAoRmlsZSwgJldyaXRlU2l6ZSwgVmFyaWFibGVEYXRhKTsNCisgIGlmIChFRklf RVJST1IgKFN0YXR1cykpIHsNCisgICAgcmV0dXJuIFN0YXR1czsNCisgIH0NCisNCisgIEZpbGVI YW5kbGVDbG9zZSAoRmlsZSk7DQorDQorICBpZiAoIUVGSV9FUlJPUiAoU3RhdHVzKSkgew0KKyAg ICAvLw0KKyAgICAvLyBXcml0ZSBhIHZhcmlhYmxlIHRvIGluZGljYXRlIHdlJ3ZlIGFscmVhZHkg bG9hZGVkIHRoZQ0KKyAgICAvLyB2YXJpYWJsZSBkYXRhLiAgSWYgaXQgaXMgZm91bmQsIHdlIHNr aXAgdGhlIGxvYWRpbmcgb24NCisgICAgLy8gc3Vic2VxdWVudCBhdHRlbXB0cy4NCisgICAgLy8N CisgICAgU2V0TnZWYXJzVmFyaWFibGUoKTsNCisNCisJREVCVUcgKChFRklfRF9JTkZPLCAiU2F2 ZWQgTlYgVmFyaWFibGVzIHRvIE52VmFycyBmaWxlXG4iKSk7DQorICB9DQorDQorICByZXR1cm4g U3RhdHVzOw0KK30NCisNCisNCmRpZmYgLS1naXQgYS9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVu Qm9hcmRQa2cvTGlicmFyeS9OdlZhcnNGaWxlTGliL052VmFyc0ZpbGVMaWIuYyBiL1BsYXRmb3Jt L0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9MaWJyYXJ5L052VmFyc0ZpbGVMaWIvTnZWYXJzRmls ZUxpYi5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMC4uZjYwZmJjNjEx Mg0KLS0tIC9kZXYvbnVsbA0KKysrIGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtn L0xpYnJhcnkvTnZWYXJzRmlsZUxpYi9OdlZhcnNGaWxlTGliLmMNCkBAIC0wLDAgKzEsNzcgQEAN CisvKiogQGZpbGUNCisgIFNhdmUgTm9uLVZvbGF0aWxlIFZhcmlhYmxlcyB0byBhIGZpbGUgc3lz dGVtLg0KKw0KKyAgQ29weXJpZ2h0IChjKSAyMDA5IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmln aHRzIHJlc2VydmVkLiA8QlI+DQorDQorICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTIt Q2xhdXNlLVBhdGVudA0KKyoqLw0KKw0KKyNpbmNsdWRlICJOdlZhcnNGaWxlTGliLmgiDQorI2lu Y2x1ZGUgPExpYnJhcnkvRGVidWdMaWIuaD4NCisjaW5jbHVkZSA8TGlicmFyeS9OdlZhcnNGaWxl TGliLmg+DQorDQorRUZJX0hBTkRMRSAgICBtTnZWYXJzRmlsZUxpYkZzSGFuZGxlID0gTlVMTDsN CisNCisNCisvKioNCisgIEF0dGVtcHRzIHRvIGNvbm5lY3QgdGhlIE52VmFyc0ZpbGVMaWIgdG8g dGhlIHNwZWNpZmllZCBmaWxlIHN5c3RlbS4NCisNCisgIEBwYXJhbVtpbl0gIEZzSGFuZGxlIC0g SGFuZGxlIGZvciBhIGdFZmlTaW1wbGVGaWxlU3lzdGVtUHJvdG9jb2xHdWlkIGluc3RhbmNlDQor DQorICBAcmV0dXJuICAgICBUaGUgRUZJX1NUQVRVUyB3aGlsZSBhdHRlbXB0aW5nIHRvIGNvbm5l Y3QgdGhlIE52VmFyc0ZpbGVMaWINCisgICAgICAgICAgICAgIHRvIHRoZSBmaWxlIHN5c3RlbSBp bnN0YW5jZS4NCisgIEByZXR2YWwgICAgIEVGSV9TVUNDRVNTIC0gVGhlIGdpdmVuIGZpbGUgc3lz dGVtIHdhcyBjb25uZWN0ZWQgc3VjY2Vzc2Z1bGx5DQorDQorKiovDQorRUZJX1NUQVRVUw0KK0VG SUFQSQ0KK0Nvbm5lY3ROdlZhcnNUb0ZpbGVTeXN0ZW0gKA0KKyAgSU4gRUZJX0hBTkRMRSAgICBG c0hhbmRsZQ0KKyAgKQ0KK3sNCisgIEVGSV9TVEFUVVMgU3RhdHVzOw0KKw0KKyAgLy8NCisgIC8v IFdlIG1pZ2h0IGZhaWwgdG8gbG9hZCB0aGUgdmFyaWFibGUsIHNpbmNlIHRoZSBmaWxlIHN5c3Rl bSBpbml0aWFsbHkNCisgIC8vIHdpbGwgbm90IGhhdmUgdGhlIE52VmFycyBmaWxlLg0KKyAgLy8N CisgIExvYWROdlZhcnNGcm9tRnMgKEZzSGFuZGxlKTsNCisNCisgIC8vDQorICAvLyBXZSBtdXN0 IGJlIGFibGUgdG8gc2F2ZSB0aGUgdmFyaWFibGVzIHN1Y2Nlc3NmdWxseSB0byB0aGUgZmlsZSBz eXN0ZW0NCisgIC8vIHRvIGhhdmUgY29ubmVjdGVkIHN1Y2Nlc3NmdWxseS4NCisgIC8vDQorICBT dGF0dXMgPSBTYXZlTnZWYXJzVG9GcyAoRnNIYW5kbGUpOw0KKyAgaWYgKCFFRklfRVJST1IgKFN0 YXR1cykpIHsNCisgICAgbU52VmFyc0ZpbGVMaWJGc0hhbmRsZSA9IEZzSGFuZGxlOw0KKyAgfQ0K Kw0KKyAgcmV0dXJuIFN0YXR1czsNCit9DQorDQorDQorLyoqDQorICBVcGRhdGUgbm9uLXZvbGF0 aWxlIHZhcmlhYmxlcyBzdG9yZWQgb24gdGhlIGZpbGUgc3lzdGVtLg0KKw0KKyAgQHJldHVybiAg ICAgVGhlIEVGSV9TVEFUVVMgd2hpbGUgYXR0ZW1wdGluZyB0byB1cGRhdGUgdGhlIHZhcmlhYmxl IG9uDQorICAgICAgICAgICAgICB0aGUgY29ubmVjdGVkIGZpbGUgc3lzdGVtLg0KKyAgQHJldHZh bCAgICAgRUZJX1NVQ0NFU1MgLSBUaGUgbm9uLXZvbGF0aWxlIHZhcmlhYmxlcyB3ZXJlIHNhdmVk IHRvIHRoZSBkaXNrDQorICBAcmV0dmFsICAgICBFRklfTk9UX1NUQVJURUQgLSBBIGZpbGUgc3lz dGVtIGhhcyBub3QgYmVlbiBjb25uZWN0ZWQNCisNCisqKi8NCitFRklfU1RBVFVTDQorRUZJQVBJ DQorVXBkYXRlTnZWYXJzT25GaWxlU3lzdGVtICgNCisgICkNCit7DQorICBpZiAobU52VmFyc0Zp bGVMaWJGc0hhbmRsZSA9PSBOVUxMKSB7DQorICAgIC8vDQorICAgIC8vIEEgZmlsZSBzeXN0ZW0g aGFkIG5vdCBiZWVuIGNvbm5lY3RlZCB0byB0aGUgbGlicmFyeS4NCisgICAgLy8NCisgICAgcmV0 dXJuIEVGSV9OT1RfU1RBUlRFRDsNCisgIH0gZWxzZSB7DQorICAgIHJldHVybiBTYXZlTnZWYXJz VG9GcyAobU52VmFyc0ZpbGVMaWJGc0hhbmRsZSk7DQorICB9DQorfQ0KKw0KKw0KZGlmZiAtLWdp dCBhL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9MaWJyYXJ5L1NlcmlhbGl6ZVZh cmlhYmxlc0xpYi9TZXJpYWxpemVWYXJpYWJsZXNMaWIuYyBiL1BsYXRmb3JtL0ludGVsL1NpbWlj c09wZW5Cb2FyZFBrZy9MaWJyYXJ5L1NlcmlhbGl6ZVZhcmlhYmxlc0xpYi9TZXJpYWxpemVWYXJp YWJsZXNMaWIuYw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAuLmMzMmE5 Nzg1NTANCi0tLSAvZGV2L251bGwNCisrKyBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2Fy ZFBrZy9MaWJyYXJ5L1NlcmlhbGl6ZVZhcmlhYmxlc0xpYi9TZXJpYWxpemVWYXJpYWJsZXNMaWIu Yw0KQEAgLTAsMCArMSw4NjkgQEANCisvKiogQGZpbGUNCisgIFNlcmlhbGl6ZSBWYXJpYWJsZXMg TGlicmFyeSBpbXBsZW1lbnRhdGlvbg0KKw0KKyAgQ29weXJpZ2h0IChjKSAyMDA0IC0gMjAxMSBJ bnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gPEJSPg0KKw0KKyAgU1BEWC1M aWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCisqKi8NCisNCisjaW5jbHVk ZSAiU2VyaWFsaXplVmFyaWFibGVzTGliLmgiDQorDQorLyoqDQorICBTZXJpYWxpemF0aW9uIGZv cm1hdDoNCisNCisgIFRoZSBTZXJpYWxpemVWYXJpYWJsZXNMaWIgaW50ZXJmYWNlIGRvZXMgbm90 IHNwZWNpZnkgYSBmb3JtYXQNCisgIGZvciB0aGUgc2VyaWFsaXphdGlvbiBvZiB0aGUgdmFyaWFi bGUgZGF0YS4gIFRoaXMgbGlicmFyeSB1c2VzDQorICBhIHBhY2tlZCBhcnJheSBvZiBhIG5vbi11 bmlmb3JtbHkgc2l6ZWQgZGF0YSBzdHJ1Y3R1cmUgZWxlbWVudHMuDQorDQorICBFYWNoIHZhcmlh YmxlIGlzIHN0b3JlZCAocGFja2VkKSBhczoNCisgICAgVUlOVDMyICAgVmVuZG9yTmFtZVNpemU7 ICAvLyBOYW1lIHNpemUgaW4gYnl0ZXMNCisgICAgQ0hBUjE2ICAgVmVuZG9yTmFtZVs/XTsgICAv LyBUaGUgdmFyaWFibGUgdW5pY29kZSBuYW1lIGluY2x1ZGluZyB0aGUNCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAvLyBudWxsIHRlcm1pbmF0aW5nIGNoYXJhY3Rlci4NCisgICAgRUZJ X0dVSUQgVmVuZG9yR3VpZDsgICAgICAvLyBUaGUgdmFyaWFibGUgR1VJRA0KKyAgICBVSU5UMzIg ICBEYXRhU2l6ZTsgICAgICAgIC8vIFRoZSBzaXplIG9mIHZhcmlhYmxlIGRhdGEgaW4gYnl0ZXMN CisgICAgVUlOVDggICAgRGF0YVs/XTsgICAgICAgICAvLyBUaGUgdmFyaWFibGUgZGF0YQ0KKw0K KyoqLw0KKw0KKw0KKy8qKg0KKyAgVW5wYWNrcyB0aGUgbmV4dCB2YXJpYWJsZSBmcm9tIHRoZSBi dWZmZXINCisNCisgIEBwYXJhbVtpbl0gIEJ1ZmZlciAtIEJ1ZmZlciBwb2ludGluZyB0byB0aGUg bmV4dCB2YXJpYWJsZSBpbnN0YW5jZQ0KKyAgICAgICAgICAgICAgICBPbiBzdWJzZXF1ZW50IGNh bGxzLCB0aGUgcG9pbnRlciBzaG91bGQgYmUgaW5jcmVtZW50ZWQNCisgICAgICAgICAgICAgICAg YnkgdGhlIHJldHVybmVkIFNpemVVc2VkIHZhbHVlLg0KKyAgQHBhcmFtW2luXSAgTWF4U2l6ZSAt IE1heCBhbGxvd2FibGUgc2l6ZSBmb3IgdGhlIHZhcmlhYmxlIGRhdGENCisgICAgICAgICAgICAg ICAgT24gc3Vic2VxdWVudCBjYWxscywgdGhpcyBzaG91bGQgYmUgZGVjcmVtZW50ZWQNCisgICAg ICAgICAgICAgICAgYnkgdGhlIHJldHVybmVkIFNpemVVc2VkIHZhbHVlLg0KKyAgQHBhcmFtW291 dF0gTmFtZSAtIFZhcmlhYmxlIG5hbWUgc3RyaW5nIChhZGRyZXNzIGluIEJ1ZmZlcikNCisgIEBw YXJhbVtvdXRdIE5hbWVTaXplIC0gU2l6ZSBvZiBOYW1lIGluIGJ5dGVzDQorICBAcGFyYW1bb3V0 XSBHdWlkIC0gR1VJRCBvZiB2YXJpYWJsZSAoYWRkcmVzcyBpbiBCdWZmZXIpDQorICBAcGFyYW1b b3V0XSBBdHRyaWJ1dGVzIC0gQXR0cmlidXRlcyBvZiB2YXJpYWJsZQ0KKyAgQHBhcmFtW291dF0g RGF0YSAtIEJ1ZmZlciBjb250YWluaW5nIERhdGEgZm9yIHZhcmlhYmxlIChhZGRyZXNzIGluIEJ1 ZmZlcikNCisgIEBwYXJhbVtvdXRdIERhdGFTaXplIC0gU2l6ZSBvZiBEYXRhIGluIGJ5dGVzDQor ICBAcGFyYW1bb3V0XSBTaXplVXNlZCAtIFRvdGFsIHNpemUgdXNlZCBmb3IgdGhpcyB2YXJpYWJs ZSBpbnN0YW5jZSBpbiBCdWZmZXINCisNCisgIEByZXR1cm4gICAgIEVGSV9TVEFUVVMgYmFzZWQg b24gdGhlIHN1Y2Nlc3Mgb3IgZmFpbHVyZSBvZiB0aGUgb3BlcmF0aW9uDQorDQorKiovDQorU1RB VElDDQorRUZJX1NUQVRVUw0KK1VucGFja1ZhcmlhYmxlRnJvbUJ1ZmZlciAoDQorICBJTiAgVk9J RCAgICAgKkJ1ZmZlciwNCisgIElOICBVSU5UTiAgICBNYXhTaXplLA0KKyAgT1VUIENIQVIxNiAg ICoqTmFtZSwNCisgIE9VVCBVSU5UMzIgICAqTmFtZVNpemUsDQorICBPVVQgRUZJX0dVSUQgKipH dWlkLA0KKyAgT1VUIFVJTlQzMiAgICpBdHRyaWJ1dGVzLA0KKyAgT1VUIFVJTlQzMiAgICpEYXRh U2l6ZSwNCisgIE9VVCBWT0lEICAgICAqKkRhdGEsDQorICBPVVQgVUlOVE4gICAgKlNpemVVc2Vk DQorICApDQorew0KKyAgVUlOVDggICpCeXRlUHRyOw0KKyAgVUlOVE4gIE9mZnNldDsNCisNCisg IEJ5dGVQdHIgPSAoVUlOVDgqKUJ1ZmZlcjsNCisgIE9mZnNldCA9IDA7DQorDQorICAqTmFtZVNp emUgPSAqKFVJTlQzMiopIChCeXRlUHRyICsgT2Zmc2V0KTsNCisgIE9mZnNldCA9IE9mZnNldCAr IHNpemVvZiAoVUlOVDMyKTsNCisNCisgIGlmIChPZmZzZXQgPiBNYXhTaXplKSB7DQorICAgIHJl dHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQorICB9DQorDQorICAqTmFtZSA9IChDSEFSMTYq KSAoQnl0ZVB0ciArIE9mZnNldCk7DQorICBPZmZzZXQgPSBPZmZzZXQgKyAqKFVJTlQzMiopQnl0 ZVB0cjsNCisgIGlmIChPZmZzZXQgPiBNYXhTaXplKSB7DQorICAgIHJldHVybiBFRklfSU5WQUxJ RF9QQVJBTUVURVI7DQorICB9DQorDQorICAqR3VpZCA9IChFRklfR1VJRCopIChCeXRlUHRyICsg T2Zmc2V0KTsNCisgIE9mZnNldCA9IE9mZnNldCArIHNpemVvZiAoRUZJX0dVSUQpOw0KKyAgaWYg KE9mZnNldCA+IE1heFNpemUpIHsNCisgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsN CisgIH0NCisNCisgICpBdHRyaWJ1dGVzID0gKihVSU5UMzIqKSAoQnl0ZVB0ciArIE9mZnNldCk7 DQorICBPZmZzZXQgPSBPZmZzZXQgKyBzaXplb2YgKFVJTlQzMik7DQorICBpZiAoT2Zmc2V0ID4g TWF4U2l6ZSkgew0KKyAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KKyAgfQ0KKw0K KyAgKkRhdGFTaXplID0gKihVSU5UMzIqKSAoQnl0ZVB0ciArIE9mZnNldCk7DQorICBPZmZzZXQg PSBPZmZzZXQgKyBzaXplb2YgKFVJTlQzMik7DQorICBpZiAoT2Zmc2V0ID4gTWF4U2l6ZSkgew0K KyAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KKyAgfQ0KKw0KKyAgKkRhdGEgPSAo Vk9JRCopIChCeXRlUHRyICsgT2Zmc2V0KTsNCisgIE9mZnNldCA9IE9mZnNldCArICpEYXRhU2l6 ZTsNCisgIGlmIChPZmZzZXQgPiBNYXhTaXplKSB7DQorICAgIHJldHVybiBFRklfSU5WQUxJRF9Q QVJBTUVURVI7DQorICB9DQorDQorICAqU2l6ZVVzZWQgPSBPZmZzZXQ7DQorDQorICByZXR1cm4g RUZJX1NVQ0NFU1M7DQorfQ0KKw0KKw0KKy8qKg0KKyAgSXRlcmF0ZXMgdGhyb3VnaCB0aGUgdmFy aWFibGVzIGluIHRoZSBidWZmZXIsIGFuZCBjYWxscyBhIGNhbGxiYWNrDQorICBmdW5jdGlvbiBm b3IgZWFjaCB2YXJpYWJsZSBmb3VuZC4NCisNCisgIEBwYXJhbVtpbl0gIENhbGxiYWNrRnVuY3Rp b24gLSBGdW5jdGlvbiBjYWxsZWQgZm9yIGVhY2ggdmFyaWFibGUgaW5zdGFuY2UNCisgIEBwYXJh bVtpbl0gIENvbnRleHQgLSBQYXNzZWQgdG8gZWFjaCBjYWxsIG9mIENhbGxiYWNrRnVuY3Rpb24N CisgIEBwYXJhbVtpbl0gIEJ1ZmZlciAtIEJ1ZmZlciBjb250YWluaW5nIHNlcmlhbGl6ZWQgdmFy aWFibGVzDQorICBAcGFyYW1baW5dICBNYXhTaXplIC0gU2l6ZSBvZiBCdWZmZXIgaW4gYnl0ZXMN CisNCisgIEByZXR1cm4gICAgIEVGSV9TVEFUVVMgYmFzZWQgb24gdGhlIHN1Y2Nlc3Mgb3IgZmFp bHVyZSBvZiB0aGUgb3BlcmF0aW9uDQorDQorKiovDQorU1RBVElDDQorRUZJX1NUQVRVUw0KK0l0 ZXJhdGVWYXJpYWJsZXNJbkJ1ZmZlciAoDQorICBJTiBWQVJJQUJMRV9TRVJJQUxJWkFUSU9OX0lU RVJBVElPTl9DQUxMQkFDSyAgQ2FsbGJhY2tGdW5jdGlvbiwNCisgIElOIFZPSUQgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqQ2FsbGJhY2tDb250ZXh0LA0KKyAgSU4gVk9J RCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpCdWZmZXIsDQorICBJTiBV SU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF4U2l6ZQ0KKyAgKQ0K K3sNCisgIFJFVFVSTl9TVEFUVVMgU3RhdHVzOw0KKyAgVUlOVE4gICAgICAgICBUb3RhbFNpemVV c2VkOw0KKyAgVUlOVE4gICAgICAgICBTaXplVXNlZDsNCisNCisgIENIQVIxNiAgICAgICAgKk5h bWU7DQorICBVSU5UMzIgICAgICAgIE5hbWVTaXplOw0KKyAgQ0hBUjE2ICAgICAgICAqQWxpZ25l ZE5hbWU7DQorICBVSU5UMzIgICAgICAgIEFsaWduZWROYW1lTWF4U2l6ZTsNCisgIEVGSV9HVUlE ICAgICAgKkd1aWQ7DQorICBVSU5UMzIgICAgICAgIEF0dHJpYnV0ZXM7DQorICBVSU5UMzIgICAg ICAgIERhdGFTaXplOw0KKyAgVk9JRCAgICAgICAgICAqRGF0YTsNCisNCisgIFNpemVVc2VkID0g MDsNCisgIEFsaWduZWROYW1lID0gTlVMTDsNCisgIEFsaWduZWROYW1lTWF4U2l6ZSA9IDA7DQor ICBOYW1lID0gTlVMTDsNCisgIEd1aWQgPSBOVUxMOw0KKyAgQXR0cmlidXRlcyA9IDA7DQorICBE YXRhU2l6ZSA9IDA7DQorICBEYXRhID0gTlVMTDsNCisNCisgIGZvciAoDQorICAgIFN0YXR1cyA9 IEVGSV9TVUNDRVNTLCBUb3RhbFNpemVVc2VkID0gMDsNCisgICAgIUVGSV9FUlJPUiAoU3RhdHVz KSAmJiAoVG90YWxTaXplVXNlZCA8IE1heFNpemUpOw0KKyAgICApIHsNCisgICAgU3RhdHVzID0g VW5wYWNrVmFyaWFibGVGcm9tQnVmZmVyICgNCisgICAgICAgICAgICAgICAoVk9JRCopICgoVUlO VDgqKSBCdWZmZXIgKyBUb3RhbFNpemVVc2VkKSwNCisgICAgICAgICAgICAgICAoTWF4U2l6ZSAt IFRvdGFsU2l6ZVVzZWQpLA0KKyAgICAgICAgICAgICAgICZOYW1lLA0KKyAgICAgICAgICAgICAg ICZOYW1lU2l6ZSwNCisgICAgICAgICAgICAgICAmR3VpZCwNCisgICAgICAgICAgICAgICAmQXR0 cmlidXRlcywNCisgICAgICAgICAgICAgICAmRGF0YVNpemUsDQorICAgICAgICAgICAgICAgJkRh dGEsDQorICAgICAgICAgICAgICAgJlNpemVVc2VkDQorICAgICAgICAgICAgICAgKTsNCisgICAg aWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KKyAgICAgIHJldHVybiBTdGF0dXM7DQorICAgIH0N CisNCisgICAgLy8NCisgICAgLy8gV2UgY29weSB0aGUgbmFtZSB0byBhIHNlcGFyYXRlbHkgYWxs b2NhdGVkIGJ1ZmZlciwNCisgICAgLy8gdG8gYmUgc3VyZSBpdCBpcyAxNi1iaXQgYWxpZ25lZC4N CisgICAgLy8NCisgICAgaWYgKE5hbWVTaXplID4gQWxpZ25lZE5hbWVNYXhTaXplKSB7DQorICAg ICAgaWYgKEFsaWduZWROYW1lICE9IE5VTEwpIHsNCisgICAgICAgIEZyZWVQb29sIChBbGlnbmVk TmFtZSk7DQorICAgICAgfQ0KKyAgICAgIEFsaWduZWROYW1lID0gQWxsb2NhdGVQb29sIChOYW1l U2l6ZSk7DQorICAgIH0NCisgICAgaWYgKEFsaWduZWROYW1lID09IE5VTEwpIHsNCisgICAgICBy ZXR1cm4gRUZJX09VVF9PRl9SRVNPVVJDRVM7DQorICAgIH0NCisgICAgQ29weU1lbSAoQWxpZ25l ZE5hbWUsIE5hbWUsIE5hbWVTaXplKTsNCisNCisgICAgVG90YWxTaXplVXNlZCA9IFRvdGFsU2l6 ZVVzZWQgKyBTaXplVXNlZDsNCisNCisgICAgLy8NCisgICAgLy8gUnVuIHRoZSBjYWxsYmFjayBm dW5jdGlvbg0KKyAgICAvLw0KKyAgICBTdGF0dXMgPSAoKkNhbGxiYWNrRnVuY3Rpb24pICgNCisg ICAgICAgICAgICAgICBDYWxsYmFja0NvbnRleHQsDQorICAgICAgICAgICAgICAgQWxpZ25lZE5h bWUsDQorICAgICAgICAgICAgICAgR3VpZCwNCisgICAgICAgICAgICAgICBBdHRyaWJ1dGVzLA0K KyAgICAgICAgICAgICAgIERhdGFTaXplLA0KKyAgICAgICAgICAgICAgIERhdGENCisgICAgICAg ICAgICAgICApOw0KKw0KKyAgfQ0KKw0KKyAgaWYgKEFsaWduZWROYW1lICE9IE5VTEwpIHsNCisg ICAgRnJlZVBvb2wgKEFsaWduZWROYW1lKTsNCisgIH0NCisNCisgIC8vDQorICAvLyBNYWtlIHN1 cmUgdGhlIGVudGlyZSBidWZmZXIgd2FzIHVzZWQsIG9yIGVsc2UgcmV0dXJuIGFuIGVycm9yDQor ICAvLw0KKyAgaWYgKFRvdGFsU2l6ZVVzZWQgIT0gTWF4U2l6ZSkgew0KKyAgICBERUJVRyAoKA0K KyAgICAgIEVGSV9EX0VSUk9SLA0KKyAgICAgICJEZXNlcmlhbGl6ZSB2YXJpYWJsZXMgZXJyb3I6 IFRvdGFsU2l6ZVVzZWQoJUx1KSAhPSBNYXhTaXplKCVMdSlcbiIsDQorICAgICAgKFVJTlQ2NClU b3RhbFNpemVVc2VkLA0KKyAgICAgIChVSU5UNjQpTWF4U2l6ZQ0KKyAgICAgICkpOw0KKyAgICBy ZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KKyAgfQ0KKw0KKyAgcmV0dXJuIEVGSV9TVUND RVNTOw0KK30NCisNCisNCitTVEFUSUMNCitSRVRVUk5fU1RBVFVTDQorRUZJQVBJDQorSXRlcmF0 ZVZhcmlhYmxlc0NhbGxiYWNrTm9wICgNCisgIElOICBWT0lEICAgICAgICAgICAgICAgICAgICAg ICAgICpDb250ZXh0LA0KKyAgSU4gIENIQVIxNiAgICAgICAgICAgICAgICAgICAgICAgKlZhcmlh YmxlTmFtZSwNCisgIElOICBFRklfR1VJRCAgICAgICAgICAgICAgICAgICAgICpWZW5kb3JHdWlk LA0KKyAgSU4gIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlcywNCisgIElO ICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgIERhdGFTaXplLA0KKyAgSU4gIFZPSUQgICAg ICAgICAgICAgICAgICAgICAgICAgKkRhdGENCisgICkNCit7DQorICByZXR1cm4gUkVUVVJOX1NV Q0NFU1M7DQorfQ0KKw0KKw0KK1NUQVRJQw0KK1JFVFVSTl9TVEFUVVMNCitFRklBUEkNCitJdGVy YXRlVmFyaWFibGVzQ2FsbGJhY2tTZXRJbkluc3RhbmNlICgNCisgIElOICBWT0lEICAgICAgICAg ICAgICAgICAgICAgICAgICpDb250ZXh0LA0KKyAgSU4gIENIQVIxNiAgICAgICAgICAgICAgICAg ICAgICAgKlZhcmlhYmxlTmFtZSwNCisgIElOICBFRklfR1VJRCAgICAgICAgICAgICAgICAgICAg ICpWZW5kb3JHdWlkLA0KKyAgSU4gIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgQXR0cmli dXRlcywNCisgIElOICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgIERhdGFTaXplLA0KKyAg SU4gIFZPSUQgICAgICAgICAgICAgICAgICAgICAgICAgKkRhdGENCisgICkNCit7DQorICBFRklf SEFORExFICBJbnN0YW5jZTsNCisNCisgIEluc3RhbmNlID0gKEVGSV9IQU5ETEUpIENvbnRleHQ7 DQorDQorICByZXR1cm4gU2VyaWFsaXplVmFyaWFibGVzQWRkVmFyaWFibGUgKA0KKyAgICAgICAg ICAgSW5zdGFuY2UsDQorICAgICAgICAgICBWYXJpYWJsZU5hbWUsDQorICAgICAgICAgICBWZW5k b3JHdWlkLA0KKyAgICAgICAgICAgQXR0cmlidXRlcywNCisgICAgICAgICAgIERhdGFTaXplLA0K KyAgICAgICAgICAgRGF0YQ0KKyAgICAgICAgICAgKTsNCit9DQorDQorDQorU1RBVElDDQorUkVU VVJOX1NUQVRVUw0KK0VGSUFQSQ0KK0l0ZXJhdGVWYXJpYWJsZXNDYWxsYmFja1NldFN5c3RlbVZh cmlhYmxlICgNCisgIElOICBWT0lEICAgICAgICAgICAgICAgICAgICAgICAgICpDb250ZXh0LA0K KyAgSU4gIENIQVIxNiAgICAgICAgICAgICAgICAgICAgICAgKlZhcmlhYmxlTmFtZSwNCisgIElO ICBFRklfR1VJRCAgICAgICAgICAgICAgICAgICAgICpWZW5kb3JHdWlkLA0KKyAgSU4gIFVJTlQz MiAgICAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlcywNCisgIElOICBVSU5UTiAgICAgICAg ICAgICAgICAgICAgICAgIERhdGFTaXplLA0KKyAgSU4gIFZPSUQgICAgICAgICAgICAgICAgICAg ICAgICAgKkRhdGENCisgICkNCit7DQorICBFRklfU1RBVFVTICAgICAgICAgIFN0YXR1czsNCisg IFNUQVRJQyBDT05TVCBVSU5UMzIgQXV0aE1hc2sgPQ0KKyAgICAgICAgICAgICAgICAgICAgICAg IEVGSV9WQVJJQUJMRV9BVVRIRU5USUNBVEVEX1dSSVRFX0FDQ0VTUyB8DQorICAgICAgICAgICAg ICAgICAgICAgICAgRUZJX1ZBUklBQkxFX1RJTUVfQkFTRURfQVVUSEVOVElDQVRFRF9XUklURV9B Q0NFU1M7DQorDQorICBTdGF0dXMgPSBnUlQtPlNldFZhcmlhYmxlICgNCisgICAgICAgICAgICAg VmFyaWFibGVOYW1lLA0KKyAgICAgICAgICAgICBWZW5kb3JHdWlkLA0KKyAgICAgICAgICAgICBB dHRyaWJ1dGVzLA0KKyAgICAgICAgICAgICBEYXRhU2l6ZSwNCisgICAgICAgICAgICAgRGF0YQ0K KyAgICAgICAgICAgICApOw0KKw0KKyAgaWYgKFN0YXR1cyA9PSBFRklfU0VDVVJJVFlfVklPTEFU SU9OICYmIChBdHRyaWJ1dGVzICYgQXV0aE1hc2spICE9IDApIHsNCisgICAgREVCVUcgKChERUJV R19XQVJOLCAiJWE6IHNldHRpbmcgYXV0aGVudGljYXRlZCB2YXJpYWJsZSBcIiVzXCIgIg0KKyAg ICAgICAgICAgICJmYWlsZWQgd2l0aCBFRklfU0VDVVJJVFlfVklPTEFUSU9OLCBpZ25vcmluZ1xu IiwgX19GVU5DVElPTl9fLA0KKyAgICAgICAgICAgIFZhcmlhYmxlTmFtZSkpOw0KKyAgICBTdGF0 dXMgPSBFRklfU1VDQ0VTUzsNCisgIH0gZWxzZSBpZiAoU3RhdHVzID09IEVGSV9XUklURV9QUk9U RUNURUQpIHsNCisgICAgREVCVUcgKChERUJVR19XQVJOLCAiJWE6IHNldHRpbmcgUmVhZE9ubHkg dmFyaWFibGUgXCIlc1wiICINCisgICAgICAgICAgICAiZmFpbGVkIHdpdGggRUZJX1dSSVRFX1BS T1RFQ1RFRCwgaWdub3JpbmdcbiIsIF9fRlVOQ1RJT05fXywNCisgICAgICAgICAgICBWYXJpYWJs ZU5hbWUpKTsNCisgICAgU3RhdHVzID0gRUZJX1NVQ0NFU1M7DQorICB9DQorICByZXR1cm4gU3Rh dHVzOw0KK30NCisNCisNCitTVEFUSUMNCitSRVRVUk5fU1RBVFVTDQorRW5zdXJlRXh0cmFCdWZm ZXJTcGFjZSAoDQorICBJTiAgU1ZfSU5TVEFOQ0UgICpJbnN0YW5jZSwNCisgIElOICBVSU5UTiAg ICAgICAgU2l6ZQ0KKyAgKQ0KK3sNCisgIFZPSUQgKk5ld0J1ZmZlcjsNCisgIFVJTlROIE5ld1Np emU7DQorDQorICBOZXdTaXplID0gSW5zdGFuY2UtPkRhdGFTaXplICsgU2l6ZTsNCisgIGlmIChO ZXdTaXplIDw9IEluc3RhbmNlLT5CdWZmZXJTaXplKSB7DQorICAgIHJldHVybiBSRVRVUk5fU1VD Q0VTUzsNCisgIH0NCisNCisgIC8vDQorICAvLyBEb3VibGUgdGhlIHJlcXVpcmVkIHNpemUgdG8g bGVzc2VuIHRoZSBuZWVkIHRvIHJlLWFsbG9jYXRlIGluIHRoZSBmdXR1cmUNCisgIC8vDQorICBO ZXdTaXplID0gMiAqIE5ld1NpemU7DQorDQorICBOZXdCdWZmZXIgPSBBbGxvY2F0ZVBvb2wgKE5l d1NpemUpOw0KKyAgaWYgKE5ld0J1ZmZlciA9PSBOVUxMKSB7DQorICAgIHJldHVybiBSRVRVUk5f T1VUX09GX1JFU09VUkNFUzsNCisgIH0NCisNCisgIGlmIChJbnN0YW5jZS0+QnVmZmVyUHRyICE9 IE5VTEwpIHsNCisgICAgQ29weU1lbSAoTmV3QnVmZmVyLCBJbnN0YW5jZS0+QnVmZmVyUHRyLCBJ bnN0YW5jZS0+RGF0YVNpemUpOw0KKyAgICBGcmVlUG9vbCAoSW5zdGFuY2UtPkJ1ZmZlclB0cik7 DQorICB9DQorDQorICBJbnN0YW5jZS0+QnVmZmVyUHRyID0gTmV3QnVmZmVyOw0KKyAgSW5zdGFu Y2UtPkJ1ZmZlclNpemUgPSBOZXdTaXplOw0KKw0KKyAgcmV0dXJuIFJFVFVSTl9TVUNDRVNTOw0K K30NCisNCisNCitTVEFUSUMNCitWT0lEDQorQXBwZW5kVG9CdWZmZXIgKA0KKyAgSU4gIFNWX0lO U1RBTkNFICAqSW5zdGFuY2UsDQorICBJTiAgVk9JRCAgICAgICAgICpEYXRhLA0KKyAgSU4gIFVJ TlROICAgICAgICBTaXplDQorICApDQorew0KKyAgVUlOVE4gTmV3U2l6ZTsNCisNCisgIEFTU0VS VCAoSW5zdGFuY2UgIT0gTlVMTCk7DQorICBBU1NFUlQgKERhdGEgIT0gTlVMTCk7DQorDQorICBO ZXdTaXplID0gSW5zdGFuY2UtPkRhdGFTaXplICsgU2l6ZTsNCisgIEFTU0VSVCAoKEluc3RhbmNl LT5EYXRhU2l6ZSArIFNpemUpIDw9IEluc3RhbmNlLT5CdWZmZXJTaXplKTsNCisNCisgIENvcHlN ZW0gKA0KKyAgICAoVk9JRCopICgoKFVJTlQ4KikgKEluc3RhbmNlLT5CdWZmZXJQdHIpKSArIElu c3RhbmNlLT5EYXRhU2l6ZSksDQorICAgIERhdGEsDQorICAgIFNpemUNCisgICAgKTsNCisNCisg IEluc3RhbmNlLT5EYXRhU2l6ZSA9IE5ld1NpemU7DQorfQ0KKw0KKw0KKy8qKg0KKyAgQ3JlYXRl cyBhIG5ldyB2YXJpYWJsZSBzZXJpYWxpemF0aW9uIGluc3RhbmNlDQorDQorICBAcGFyYW1bb3V0 XSAgSGFuZGxlIC0gSGFuZGxlIGZvciBhIHZhcmlhYmxlIHNlcmlhbGl6YXRpb24gaW5zdGFuY2UN CisNCisgIEByZXR2YWwgICAgICBSRVRVUk5fU1VDQ0VTUyAtIFRoZSB2YXJpYWJsZSBzZXJpYWxp emF0aW9uIGluc3RhbmNlIHdhcw0KKyAgICAgICAgICAgICAgICAgc3VjY2Vzc2Z1bGx5IGNyZWF0 ZWQuDQorICBAcmV0dmFsICAgICAgUkVUVVJOX09VVF9PRl9SRVNPVVJDRVMgLSBUaGVyZSB3ZSBu b3QgZW5vdWdoIHJlc291cmNlcyB0bw0KKyAgICAgICAgICAgICAgICAgY3JlYXRlIHRoZSB2YXJp YWJsZSBzZXJpYWxpemF0aW9uIGluc3RhbmNlLg0KKw0KKyoqLw0KK1JFVFVSTl9TVEFUVVMNCitF RklBUEkNCitTZXJpYWxpemVWYXJpYWJsZXNOZXdJbnN0YW5jZSAoDQorICBPVVQgRUZJX0hBTkRM RSAgICAgICAgICAgICAgICAgICAgICAqSGFuZGxlDQorICApDQorew0KKyAgU1ZfSU5TVEFOQ0Ug ICpOZXc7DQorDQorICBOZXcgPSBBbGxvY2F0ZVplcm9Qb29sIChzaXplb2YgKCpOZXcpKTsNCisg IGlmIChOZXcgPT0gTlVMTCkgew0KKyAgICByZXR1cm4gUkVUVVJOX09VVF9PRl9SRVNPVVJDRVM7 DQorICB9DQorDQorICBOZXctPlNpZ25hdHVyZSA9IFNWX1NJR05BVFVSRTsNCisNCisgICpIYW5k bGUgPSAoRUZJX0hBTkRMRSkgTmV3Ow0KKyAgcmV0dXJuIFJFVFVSTl9TVUNDRVNTOw0KK30NCisN CisNCisvKioNCisgIEZyZWUgbWVtb3J5IGFzc29jaWF0ZWQgd2l0aCBhIHZhcmlhYmxlIHNlcmlh bGl6YXRpb24gaW5zdGFuY2UNCisNCisgIEBwYXJhbVtpbl0gIEhhbmRsZSAtIEhhbmRsZSBmb3Ig YSB2YXJpYWJsZSBzZXJpYWxpemF0aW9uIGluc3RhbmNlDQorDQorICBAcmV0dmFsICAgICAgUkVU VVJOX1NVQ0NFU1MgLSBUaGUgdmFyaWFibGUgc2VyaWFsaXphdGlvbiBpbnN0YW5jZSB3YXMNCisg ICAgICAgICAgICAgICAgIHN1Y2Nlc3NmdWxseSBmcmVlZC4NCisgIEByZXR2YWwgICAgICBSRVRV Uk5fSU5WQUxJRF9QQVJBTUVURVIgLSBIYW5kbGUgd2FzIG5vdCBhIHZhbGlkDQorICAgICAgICAg ICAgICAgICB2YXJpYWJsZSBzZXJpYWxpemF0aW9uIGluc3RhbmNlLg0KKw0KKyoqLw0KK1JFVFVS Tl9TVEFUVVMNCitFRklBUEkNCitTZXJpYWxpemVWYXJpYWJsZXNGcmVlSW5zdGFuY2UgKA0KKyAg SU4gRUZJX0hBTkRMRSBIYW5kbGUNCisgICkNCit7DQorICBTVl9JTlNUQU5DRSAgICAqSW5zdGFu Y2U7DQorDQorICBJbnN0YW5jZSA9IFNWX0ZST01fSEFORExFIChIYW5kbGUpOw0KKw0KKyAgaWYg KEluc3RhbmNlLT5TaWduYXR1cmUgIT0gU1ZfU0lHTkFUVVJFKSB7DQorICAgIHJldHVybiBSRVRV Uk5fSU5WQUxJRF9QQVJBTUVURVI7DQorICB9DQorDQorICBJbnN0YW5jZS0+U2lnbmF0dXJlID0g MDsNCisNCisgIGlmIChJbnN0YW5jZS0+QnVmZmVyUHRyICE9IE5VTEwpIHsNCisgICAgRnJlZVBv b2wgKEluc3RhbmNlLT5CdWZmZXJQdHIpOw0KKyAgfQ0KKw0KKyAgRnJlZVBvb2wgKEluc3RhbmNl KTsNCisNCisgIHJldHVybiBSRVRVUk5fU1VDQ0VTUzsNCit9DQorDQorDQorLyoqDQorICBDcmVh dGVzIGEgbmV3IHZhcmlhYmxlIHNlcmlhbGl6YXRpb24gaW5zdGFuY2UgdXNpbmcgdGhlIGdpdmVu DQorICBiaW5hcnkgcmVwcmVzZW50YXRpb24gb2YgdGhlIHZhcmlhYmxlcyB0byBmaWxsIHRoZSBu ZXcgaW5zdGFuY2UNCisNCisgIEBwYXJhbVtvdXRdIEhhbmRsZSAtIEhhbmRsZSBmb3IgYSB2YXJp YWJsZSBzZXJpYWxpemF0aW9uIGluc3RhbmNlDQorICBAcGFyYW1baW5dICBCdWZmZXIgLSBBIGJ1 ZmZlciB3aXRoIHRoZSBzZXJpYWxpemVkIHJlcHJlc2VudGF0aW9uDQorICAgICAgICAgICAgICAg IG9mIHRoZSB2YXJpYWJsZXMuICBNdXN0IGJlIHRoZSBzYW1lIGZvcm1hdCBhcyBwcm9kdWNlZA0K KyAgICAgICAgICAgICAgICBieSBTZXJpYWxpemVWYXJpYWJsZXNUb0J1ZmZlci4NCisgIEBwYXJh bVtpbl0gIFNpemUgLSBUaGlzIGlzIHRoZSBzaXplIG9mIHRoZSBiaW5hcnkgcmVwcmVzZW50YXRp b24NCisgICAgICAgICAgICAgICAgb2YgdGhlIHZhcmlhYmxlcy4NCisNCisgIEByZXR2YWwgICAg ICBSRVRVUk5fU1VDQ0VTUyAtIFRoZSBiaW5hcnkgcmVwcmVzZW50YXRpb24gd2FzIHN1Y2Nlc3Nm dWxseQ0KKyAgICAgICAgICAgICAgICAgaW1wb3J0ZWQgaW50byBhIG5ldyB2YXJpYWJsZSBzZXJp YWxpemF0aW9uIGluc3RhbmNlDQorICBAcmV0dmFsICAgICAgUkVUVVJOX09VVF9PRl9SRVNPVVJD RVMgLSBUaGVyZSB3ZSBub3QgZW5vdWdoIHJlc291cmNlcyB0bw0KKyAgICAgICAgICAgICAgICAg Y3JlYXRlIHRoZSBuZXcgdmFyaWFibGUgc2VyaWFsaXphdGlvbiBpbnN0YW5jZQ0KKw0KKyoqLw0K K1JFVFVSTl9TVEFUVVMNCitFRklBUEkNCitTZXJpYWxpemVWYXJpYWJsZXNOZXdJbnN0YW5jZUZy b21CdWZmZXIgKA0KKyAgT1VUIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgICAgICAgICAgICpI YW5kbGUsDQorICBJTiAgVk9JRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKkJ1ZmZl ciwNCisgIElOICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaXplDQorICAp DQorew0KKyAgUkVUVVJOX1NUQVRVUyBTdGF0dXM7DQorDQorICBTdGF0dXMgPSBTZXJpYWxpemVW YXJpYWJsZXNOZXdJbnN0YW5jZSAoSGFuZGxlKTsNCisgIGlmIChSRVRVUk5fRVJST1IgKFN0YXR1 cykpIHsNCisgICAgcmV0dXJuIFN0YXR1czsNCisgIH0NCisNCisgIFN0YXR1cyA9IEl0ZXJhdGVW YXJpYWJsZXNJbkJ1ZmZlciAoDQorICAgICAgICAgICAgIEl0ZXJhdGVWYXJpYWJsZXNDYWxsYmFj a05vcCwNCisgICAgICAgICAgICAgTlVMTCwNCisgICAgICAgICAgICAgQnVmZmVyLA0KKyAgICAg ICAgICAgICBTaXplDQorICAgICAgICAgICAgICk7DQorICBpZiAoUkVUVVJOX0VSUk9SIChTdGF0 dXMpKSB7DQorICAgIFNlcmlhbGl6ZVZhcmlhYmxlc0ZyZWVJbnN0YW5jZSAoKkhhbmRsZSk7DQor ICAgIHJldHVybiBTdGF0dXM7DQorICB9DQorDQorICBTdGF0dXMgPSBJdGVyYXRlVmFyaWFibGVz SW5CdWZmZXIgKA0KKyAgICAgICAgICAgICBJdGVyYXRlVmFyaWFibGVzQ2FsbGJhY2tTZXRJbklu c3RhbmNlLA0KKyAgICAgICAgICAgICAoVk9JRCopICpIYW5kbGUsDQorICAgICAgICAgICAgIEJ1 ZmZlciwNCisgICAgICAgICAgICAgU2l6ZQ0KKyAgICAgICAgICAgICApOw0KKyAgaWYgKFJFVFVS Tl9FUlJPUiAoU3RhdHVzKSkgew0KKyAgICBTZXJpYWxpemVWYXJpYWJsZXNGcmVlSW5zdGFuY2Ug KCpIYW5kbGUpOw0KKyAgICByZXR1cm4gU3RhdHVzOw0KKyAgfQ0KKw0KKyAgcmV0dXJuIFN0YXR1 czsNCit9DQorDQorDQorLyoqDQorICBJdGVyYXRlcyBhbGwgdmFyaWFibGVzIGZvdW5kIHdpdGgg UnVudGltZVNlcnZpY2VzIEdldE5leHRWYXJpYWJsZU5hbWUNCisNCisgIEBwYXJhbVtpbl0gICBD YWxsYmFja0Z1bmN0aW9uIC0gRnVuY3Rpb24gY2FsbGVkIGZvciBlYWNoIHZhcmlhYmxlIGluc3Rh bmNlDQorICBAcGFyYW1baW5dICAgQ29udGV4dCAtIFBhc3NlZCB0byBlYWNoIGNhbGwgb2YgQ2Fs bGJhY2tGdW5jdGlvbg0KKw0KKyAgQHJldHZhbCAgICAgIFJFVFVSTl9TVUNDRVNTIC0gQWxsIHZh cmlhYmxlcyB3ZXJlIGl0ZXJhdGVkIHdpdGhvdXQgdGhlDQorICAgICAgICAgICAgICAgICBDYWxs YmFja0Z1bmN0aW9uIHJldHVybmluZyBhbiBlcnJvcg0KKyAgQHJldHZhbCAgICAgIFJFVFVSTl9P VVRfT0ZfUkVTT1VSQ0VTIC0gVGhlcmUgd2Ugbm90IGVub3VnaCByZXNvdXJjZXMgdG8NCisgICAg ICAgICAgICAgICAgIGl0ZXJhdGUgdGhyb3VnaCB0aGUgdmFyaWFibGVzDQorICBAcmV0dXJuICAg ICAgQW55IG9mIFJFVFVSTl9FUlJPUiBpbmRpY2F0ZXMgYW4gZXJyb3IgcmVhZGluZyB0aGUgdmFy aWFibGUNCisgICAgICAgICAgICAgICAgIG9yIGFuIGVycm9yIHdhcyByZXR1cm5lZCBmcm9tIENh bGxiYWNrRnVuY3Rpb24NCisNCisqKi8NCitSRVRVUk5fU1RBVFVTDQorRUZJQVBJDQorU2VyaWFs aXplVmFyaWFibGVzSXRlcmF0ZVN5c3RlbVZhcmlhYmxlcyAoDQorICBJTiBWQVJJQUJMRV9TRVJJ QUxJWkFUSU9OX0lURVJBVElPTl9DQUxMQkFDSyBDYWxsYmFja0Z1bmN0aW9uLA0KKyAgSU4gVk9J RCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKkNvbnRleHQNCisgICkNCit7 DQorICBSRVRVUk5fU1RBVFVTICAgICAgICAgICAgICAgU3RhdHVzOw0KKyAgVUlOVE4gICAgICAg ICAgICAgICAgICAgICAgIFZhcmlhYmxlTmFtZUJ1ZmZlclNpemU7DQorICBVSU5UTiAgICAgICAg ICAgICAgICAgICAgICAgVmFyaWFibGVOYW1lU2l6ZTsNCisgIENIQVIxNiAgICAgICAgICAgICAg ICAgICAgICAqVmFyaWFibGVOYW1lOw0KKyAgRUZJX0dVSUQgICAgICAgICAgICAgICAgICAgIFZl bmRvckd1aWQ7DQorICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVEYXRhQnVm ZmVyU2l6ZTsNCisgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICBWYXJpYWJsZURhdGFTaXpl Ow0KKyAgVk9JRCAgICAgICAgICAgICAgICAgICAgICAgICpWYXJpYWJsZURhdGE7DQorICBVSU5U MzIgICAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVBdHRyaWJ1dGVzOw0KKyAgVk9JRCAgICAg ICAgICAgICAgICAgICAgICAgICpOZXdCdWZmZXI7DQorDQorICAvLw0KKyAgLy8gSW5pdGlhbGl6 ZSB0aGUgdmFyaWFibGUgbmFtZSBhbmQgZGF0YSBidWZmZXIgdmFyaWFibGVzLg0KKyAgLy8NCisg IFZhcmlhYmxlTmFtZUJ1ZmZlclNpemUgPSBzaXplb2YgKENIQVIxNik7DQorICBWYXJpYWJsZU5h bWUgPSBBbGxvY2F0ZVplcm9Qb29sIChWYXJpYWJsZU5hbWVCdWZmZXJTaXplKTsNCisNCisgIFZh cmlhYmxlRGF0YUJ1ZmZlclNpemUgPSAwOw0KKyAgVmFyaWFibGVEYXRhID0gTlVMTDsNCisNCisg IGZvciAoOzspIHsNCisgICAgLy8NCisgICAgLy8gR2V0IHRoZSBuZXh0IHZhcmlhYmxlIG5hbWUg YW5kIGd1aWQNCisgICAgLy8NCisgICAgVmFyaWFibGVOYW1lU2l6ZSA9IFZhcmlhYmxlTmFtZUJ1 ZmZlclNpemU7DQorICAgIFN0YXR1cyA9IGdSVC0+R2V0TmV4dFZhcmlhYmxlTmFtZSAoDQorICAg ICAgICAgICAgICAgICAgICAmVmFyaWFibGVOYW1lU2l6ZSwNCisgICAgICAgICAgICAgICAgICAg IFZhcmlhYmxlTmFtZSwNCisgICAgICAgICAgICAgICAgICAgICZWZW5kb3JHdWlkDQorICAgICAg ICAgICAgICAgICAgICApOw0KKyAgICBpZiAoU3RhdHVzID09IEVGSV9CVUZGRVJfVE9PX1NNQUxM KSB7DQorICAgICAgLy8NCisgICAgICAvLyBUaGUgY3VycmVudGx5IGFsbG9jYXRlZCBWYXJpYWJs ZU5hbWUgYnVmZmVyIGlzIHRvbyBzbWFsbCwNCisgICAgICAvLyBzbyB3ZSBhbGxvY2F0ZSBhIGxh cmdlciBidWZmZXIsIGFuZCBjb3B5IHRoZSBvbGQgYnVmZmVyDQorICAgICAgLy8gdG8gaXQuDQor ICAgICAgLy8NCisgICAgICBOZXdCdWZmZXIgPSBBbGxvY2F0ZVBvb2wgKFZhcmlhYmxlTmFtZVNp emUpOw0KKyAgICAgIGlmIChOZXdCdWZmZXIgPT0gTlVMTCkgew0KKyAgICAgICAgU3RhdHVzID0g RUZJX09VVF9PRl9SRVNPVVJDRVM7DQorICAgICAgICBicmVhazsNCisgICAgICB9DQorICAgICAg Q29weU1lbSAoTmV3QnVmZmVyLCBWYXJpYWJsZU5hbWUsIFZhcmlhYmxlTmFtZUJ1ZmZlclNpemUp Ow0KKyAgICAgIGlmIChWYXJpYWJsZU5hbWUgIT0gTlVMTCkgew0KKyAgICAgICAgRnJlZVBvb2wg KFZhcmlhYmxlTmFtZSk7DQorICAgICAgfQ0KKyAgICAgIFZhcmlhYmxlTmFtZSA9IE5ld0J1ZmZl cjsNCisgICAgICBWYXJpYWJsZU5hbWVCdWZmZXJTaXplID0gVmFyaWFibGVOYW1lU2l6ZTsNCisN CisgICAgICAvLw0KKyAgICAgIC8vIFRyeSB0byBnZXQgdGhlIG5leHQgdmFyaWFibGUgbmFtZSBh Z2FpbiB3aXRoIHRoZSBsYXJnZXIgYnVmZmVyLg0KKyAgICAgIC8vDQorICAgICAgU3RhdHVzID0g Z1JULT5HZXROZXh0VmFyaWFibGVOYW1lICgNCisgICAgICAgICAgICAgICAgICAgICAgJlZhcmlh YmxlTmFtZVNpemUsDQorICAgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlTmFtZSwNCisgICAg ICAgICAgICAgICAgICAgICAgJlZlbmRvckd1aWQNCisgICAgICAgICAgICAgICAgICAgICAgKTsN CisgICAgfQ0KKw0KKyAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQorICAgICAgaWYgKFN0 YXR1cyA9PSBFRklfTk9UX0ZPVU5EKSB7DQorICAgICAgICBTdGF0dXMgPSBFRklfU1VDQ0VTUzsN CisgICAgICB9DQorICAgICAgYnJlYWs7DQorICAgIH0NCisNCisgICAgLy8NCisgICAgLy8gR2V0 IHRoZSB2YXJpYWJsZSBkYXRhIGFuZCBhdHRyaWJ1dGVzDQorICAgIC8vDQorICAgIFZhcmlhYmxl RGF0YVNpemUgPSBWYXJpYWJsZURhdGFCdWZmZXJTaXplOw0KKyAgICBTdGF0dXMgPSBnUlQtPkdl dFZhcmlhYmxlICgNCisgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlTmFtZSwNCisgICAgICAg ICAgICAgICAgICAgICZWZW5kb3JHdWlkLA0KKyAgICAgICAgICAgICAgICAgICAgJlZhcmlhYmxl QXR0cmlidXRlcywNCisgICAgICAgICAgICAgICAgICAgICZWYXJpYWJsZURhdGFTaXplLA0KKyAg ICAgICAgICAgICAgICAgICAgVmFyaWFibGVEYXRhDQorICAgICAgICAgICAgICAgICAgICApOw0K KyAgICBpZiAoU3RhdHVzID09IEVGSV9CVUZGRVJfVE9PX1NNQUxMKSB7DQorICAgICAgLy8NCisg ICAgICAvLyBUaGUgY3VycmVudGx5IGFsbG9jYXRlZCBWYXJpYWJsZURhdGEgYnVmZmVyIGlzIHRv byBzbWFsbCwNCisgICAgICAvLyBzbyB3ZSBhbGxvY2F0ZSBhIGxhcmdlciBidWZmZXIuDQorICAg ICAgLy8NCisgICAgICBpZiAoVmFyaWFibGVEYXRhQnVmZmVyU2l6ZSAhPSAwKSB7DQorICAgICAg ICBGcmVlUG9vbCAoVmFyaWFibGVEYXRhKTsNCisgICAgICAgIFZhcmlhYmxlRGF0YSA9IE5VTEw7 DQorICAgICAgICBWYXJpYWJsZURhdGFCdWZmZXJTaXplID0gMDsNCisgICAgICB9DQorICAgICAg VmFyaWFibGVEYXRhID0gQWxsb2NhdGVQb29sIChWYXJpYWJsZURhdGFTaXplKTsNCisgICAgICBp ZiAoVmFyaWFibGVEYXRhID09IE5VTEwpIHsNCisgICAgICAgIFN0YXR1cyA9IEVGSV9PVVRfT0Zf UkVTT1VSQ0VTOw0KKyAgICAgICAgYnJlYWs7DQorICAgICAgfQ0KKyAgICAgIFZhcmlhYmxlRGF0 YUJ1ZmZlclNpemUgPSBWYXJpYWJsZURhdGFTaXplOw0KKw0KKyAgICAgIC8vDQorICAgICAgLy8g VHJ5IHRvIHJlYWQgdGhlIHZhcmlhYmxlIGFnYWluIHdpdGggdGhlIGxhcmdlciBidWZmZXIuDQor ICAgICAgLy8NCisgICAgICBTdGF0dXMgPSBnUlQtPkdldFZhcmlhYmxlICgNCisgICAgICAgICAg ICAgICAgICAgICAgVmFyaWFibGVOYW1lLA0KKyAgICAgICAgICAgICAgICAgICAgICAmVmVuZG9y R3VpZCwNCisgICAgICAgICAgICAgICAgICAgICAgJlZhcmlhYmxlQXR0cmlidXRlcywNCisgICAg ICAgICAgICAgICAgICAgICAgJlZhcmlhYmxlRGF0YVNpemUsDQorICAgICAgICAgICAgICAgICAg ICAgIFZhcmlhYmxlRGF0YQ0KKyAgICAgICAgICAgICAgICAgICAgICApOw0KKyAgICB9DQorICAg IGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCisgICAgICBicmVhazsNCisgICAgfQ0KKw0KKyAg ICAvLw0KKyAgICAvLyBSdW4gdGhlIGNhbGxiYWNrIGZ1bmN0aW9uDQorICAgIC8vDQorICAgIFN0 YXR1cyA9ICgqQ2FsbGJhY2tGdW5jdGlvbikgKA0KKyAgICAgICAgICAgICAgIENvbnRleHQsDQor ICAgICAgICAgICAgICAgVmFyaWFibGVOYW1lLA0KKyAgICAgICAgICAgICAgICZWZW5kb3JHdWlk LA0KKyAgICAgICAgICAgICAgIFZhcmlhYmxlQXR0cmlidXRlcywNCisgICAgICAgICAgICAgICBW YXJpYWJsZURhdGFTaXplLA0KKyAgICAgICAgICAgICAgIFZhcmlhYmxlRGF0YQ0KKyAgICAgICAg ICAgICAgICk7DQorICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCisgICAgICBicmVhazsN CisgICAgfQ0KKw0KKyAgfQ0KKw0KKyAgaWYgKFZhcmlhYmxlTmFtZSAhPSBOVUxMKSB7DQorICAg IEZyZWVQb29sIChWYXJpYWJsZU5hbWUpOw0KKyAgfQ0KKw0KKyAgaWYgKFZhcmlhYmxlRGF0YSAh PSBOVUxMKSB7DQorICAgIEZyZWVQb29sIChWYXJpYWJsZURhdGEpOw0KKyAgfQ0KKw0KKyAgcmV0 dXJuIFN0YXR1czsNCit9DQorDQorDQorLyoqDQorICBJdGVyYXRlcyBhbGwgdmFyaWFibGVzIGZv dW5kIGluIHRoZSB2YXJpYWJsZSBzZXJpYWxpemF0aW9uIGluc3RhbmNlDQorDQorICBAcGFyYW1b aW5dICAgSGFuZGxlIC0gSGFuZGxlIGZvciBhIHZhcmlhYmxlIHNlcmlhbGl6YXRpb24gaW5zdGFu Y2UNCisgIEBwYXJhbVtpbl0gICBDYWxsYmFja0Z1bmN0aW9uIC0gRnVuY3Rpb24gY2FsbGVkIGZv ciBlYWNoIHZhcmlhYmxlIGluc3RhbmNlDQorICBAcGFyYW1baW5dICAgQ29udGV4dCAtIFBhc3Nl ZCB0byBlYWNoIGNhbGwgb2YgQ2FsbGJhY2tGdW5jdGlvbg0KKw0KKyAgQHJldHZhbCAgICAgIFJF VFVSTl9TVUNDRVNTIC0gQWxsIHZhcmlhYmxlcyB3ZXJlIGl0ZXJhdGVkIHdpdGhvdXQgdGhlDQor ICAgICAgICAgICAgICAgICBDYWxsYmFja0Z1bmN0aW9uIHJldHVybmluZyBhbiBlcnJvcg0KKyAg QHJldHZhbCAgICAgIFJFVFVSTl9PVVRfT0ZfUkVTT1VSQ0VTIC0gVGhlcmUgd2Ugbm90IGVub3Vn aCByZXNvdXJjZXMgdG8NCisgICAgICAgICAgICAgICAgIGl0ZXJhdGUgdGhyb3VnaCB0aGUgdmFy aWFibGVzDQorICBAcmV0dXJuICAgICAgQW55IG9mIFJFVFVSTl9FUlJPUiBpbmRpY2F0ZXMgYW4g ZXJyb3IgcmVhZGluZyB0aGUgdmFyaWFibGUNCisgICAgICAgICAgICAgICAgIG9yIGFuIGVycm9y IHdhcyByZXR1cm5lZCBmcm9tIENhbGxiYWNrRnVuY3Rpb24NCisNCisqKi8NCitSRVRVUk5fU1RB VFVTDQorRUZJQVBJDQorU2VyaWFsaXplVmFyaWFibGVzSXRlcmF0ZUluc3RhbmNlVmFyaWFibGVz ICgNCisgIElOIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhhbmRs ZSwNCisgIElOIFZBUklBQkxFX1NFUklBTElaQVRJT05fSVRFUkFUSU9OX0NBTExCQUNLIENhbGxi YWNrRnVuY3Rpb24sDQorICBJTiBWT0lEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAqQ29udGV4dA0KKyAgKQ0KK3sNCisgIFNWX0lOU1RBTkNFICAgICpJbnN0YW5jZTsNCisN CisgIEluc3RhbmNlID0gU1ZfRlJPTV9IQU5ETEUgKEhhbmRsZSk7DQorDQorICBpZiAoKEluc3Rh bmNlLT5CdWZmZXJQdHIgIT0gTlVMTCkgJiYgKEluc3RhbmNlLT5EYXRhU2l6ZSAhPSAwKSkgew0K KyAgICByZXR1cm4gSXRlcmF0ZVZhcmlhYmxlc0luQnVmZmVyICgNCisgICAgICAgICAgICAgQ2Fs bGJhY2tGdW5jdGlvbiwNCisgICAgICAgICAgICAgQ29udGV4dCwNCisgICAgICAgICAgICAgSW5z dGFuY2UtPkJ1ZmZlclB0ciwNCisgICAgICAgICAgICAgSW5zdGFuY2UtPkRhdGFTaXplDQorICAg ICAgICAgICAgICk7DQorICB9IGVsc2Ugew0KKyAgICByZXR1cm4gUkVUVVJOX1NVQ0NFU1M7DQor ICB9DQorfQ0KKw0KKw0KKy8qKg0KKyAgU2V0cyBhbGwgdmFyaWFibGVzIGZvdW5kIGluIHRoZSB2 YXJpYWJsZSBzZXJpYWxpemF0aW9uIGluc3RhbmNlDQorDQorICBAcGFyYW1baW5dICAgSGFuZGxl IC0gSGFuZGxlIGZvciBhIHZhcmlhYmxlIHNlcmlhbGl6YXRpb24gaW5zdGFuY2UNCisNCisgIEBy ZXR2YWwgICAgICBSRVRVUk5fU1VDQ0VTUyAtIEFsbCB2YXJpYWJsZXMgd2VyZSBzZXQgc3VjY2Vz c2Z1bGx5DQorICBAcmV0dmFsICAgICAgUkVUVVJOX09VVF9PRl9SRVNPVVJDRVMgLSBUaGVyZSB3 ZSBub3QgZW5vdWdoIHJlc291cmNlcyB0bw0KKyAgICAgICAgICAgICAgICAgc2V0IGFsbCB0aGUg dmFyaWFibGVzDQorICBAcmV0dXJuICAgICAgQW55IG9mIFJFVFVSTl9FUlJPUiBpbmRpY2F0ZXMg YW4gZXJyb3IgcmVhZGluZyB0aGUgdmFyaWFibGVzDQorICAgICAgICAgICAgICAgICBvciBpbiBh dHRlbXB0aW5nIHRvIHNldCBhIHZhcmlhYmxlDQorDQorKiovDQorUkVUVVJOX1NUQVRVUw0KK0VG SUFQSQ0KK1NlcmlhbGl6ZVZhcmlhYmxlc1NldFNlcmlhbGl6ZWRWYXJpYWJsZXMgKA0KKyAgSU4g RUZJX0hBTkRMRSAgICAgICAgICAgICAgICAgICAgICAgSGFuZGxlDQorICApDQorew0KKyAgcmV0 dXJuIFNlcmlhbGl6ZVZhcmlhYmxlc0l0ZXJhdGVJbnN0YW5jZVZhcmlhYmxlcyAoDQorICAgICAg ICAgICBIYW5kbGUsDQorICAgICAgICAgICBJdGVyYXRlVmFyaWFibGVzQ2FsbGJhY2tTZXRTeXN0 ZW1WYXJpYWJsZSwNCisgICAgICAgICAgIE5VTEwNCisgICAgICAgICAgICk7DQorfQ0KKw0KKw0K Ky8qKg0KKyAgQWRkcyBhIHZhcmlhYmxlIHRvIHRoZSB2YXJpYWJsZSBzZXJpYWxpemF0aW9uIGlu c3RhbmNlDQorDQorICBAcGFyYW1baW5dIEhhbmRsZSAtIEhhbmRsZSBmb3IgYSB2YXJpYWJsZSBz ZXJpYWxpemF0aW9uIGluc3RhbmNlDQorICBAcGFyYW1baW5dIFZhcmlhYmxlTmFtZSAtIFJlZmVy IHRvIFJ1bnRpbWVTZXJ2aWNlcyBHZXRWYXJpYWJsZQ0KKyAgQHBhcmFtW2luXSBWZW5kb3JHdWlk IC0gUmVmZXIgdG8gUnVudGltZVNlcnZpY2VzIEdldFZhcmlhYmxlDQorICBAcGFyYW1baW5dIEF0 dHJpYnV0ZXMgLSBSZWZlciB0byBSdW50aW1lU2VydmljZXMgR2V0VmFyaWFibGUNCisgIEBwYXJh bVtpbl0gRGF0YVNpemUgLSBSZWZlciB0byBSdW50aW1lU2VydmljZXMgR2V0VmFyaWFibGUNCisg IEBwYXJhbVtpbl0gRGF0YSAtIFJlZmVyIHRvIFJ1bnRpbWVTZXJ2aWNlcyBHZXRWYXJpYWJsZQ0K Kw0KKyAgQHJldHZhbCAgICAgIFJFVFVSTl9TVUNDRVNTIC0gQWxsIHZhcmlhYmxlcyB3ZXJlIHNl dCBzdWNjZXNzZnVsbHkNCisgIEByZXR2YWwgICAgICBSRVRVUk5fT1VUX09GX1JFU09VUkNFUyAt IFRoZXJlIHdlIG5vdCBlbm91Z2ggcmVzb3VyY2VzIHRvDQorICAgICAgICAgICAgICAgICBhZGQg dGhlIHZhcmlhYmxlDQorICBAcmV0dmFsICAgICAgUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSIC0g SGFuZGxlIHdhcyBub3QgYSB2YWxpZA0KKyAgICAgICAgICAgICAgICAgdmFyaWFibGUgc2VyaWFs aXphdGlvbiBpbnN0YW5jZSBvcg0KKyAgICAgICAgICAgICAgICAgVmFyaWFibGVOYW1lLCBWYXJp YWJsZUd1aWQgb3IgRGF0YSBhcmUgTlVMTC4NCisNCisqKi8NCitSRVRVUk5fU1RBVFVTDQorRUZJ QVBJDQorU2VyaWFsaXplVmFyaWFibGVzQWRkVmFyaWFibGUgKA0KKyAgSU4gRUZJX0hBTkRMRSAg ICAgICAgICAgICAgICAgICBIYW5kbGUsDQorICBJTiBDSEFSMTYgICAgICAgICAgICAgICAgICAg ICAgICpWYXJpYWJsZU5hbWUsDQorICBJTiBFRklfR1VJRCAgICAgICAgICAgICAgICAgICAgICpW ZW5kb3JHdWlkLA0KKyAgSU4gVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVz LA0KKyAgSU4gVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICBEYXRhU2l6ZSwNCisgIElOIFZP SUQgICAgICAgICAgICAgICAgICAgICAgICAgKkRhdGENCisgICkNCit7DQorICBSRVRVUk5fU1RB VFVTICBTdGF0dXM7DQorICBTVl9JTlNUQU5DRSAgICAqSW5zdGFuY2U7DQorICBVSU5UMzIgICAg ICAgICBTZXJpYWxpemVkTmFtZVNpemU7DQorICBVSU5UMzIgICAgICAgICBTZXJpYWxpemVkRGF0 YVNpemU7DQorICBVSU5UTiAgICAgICAgICBTZXJpYWxpemVkU2l6ZTsNCisNCisgIEluc3RhbmNl ID0gU1ZfRlJPTV9IQU5ETEUgKEhhbmRsZSk7DQorDQorICBpZiAoKEluc3RhbmNlLT5TaWduYXR1 cmUgIT0gU1ZfU0lHTkFUVVJFKSB8fA0KKyAgICAgIChWYXJpYWJsZU5hbWUgPT0gTlVMTCkgfHwg KFZlbmRvckd1aWQgPT0gTlVMTCkgfHwgKERhdGEgPT0gTlVMTCkpIHsNCisgIH0NCisNCisgIFNl cmlhbGl6ZWROYW1lU2l6ZSA9IChVSU5UMzIpIFN0clNpemUgKFZhcmlhYmxlTmFtZSk7DQorDQor ICBTZXJpYWxpemVkU2l6ZSA9DQorICAgIHNpemVvZiAoU2VyaWFsaXplZE5hbWVTaXplKSArDQor ICAgIFNlcmlhbGl6ZWROYW1lU2l6ZSArDQorICAgIHNpemVvZiAoKlZlbmRvckd1aWQpICsNCisg ICAgc2l6ZW9mIChBdHRyaWJ1dGVzKSArDQorICAgIHNpemVvZiAoU2VyaWFsaXplZERhdGFTaXpl KSArDQorICAgIERhdGFTaXplOw0KKw0KKyAgU3RhdHVzID0gRW5zdXJlRXh0cmFCdWZmZXJTcGFj ZSAoDQorICAgICAgICAgICAgIEluc3RhbmNlLA0KKyAgICAgICAgICAgICBTZXJpYWxpemVkU2l6 ZQ0KKyAgICAgICAgICAgICApOw0KKyAgaWYgKFJFVFVSTl9FUlJPUiAoU3RhdHVzKSkgew0KKyAg ICByZXR1cm4gU3RhdHVzOw0KKyAgfQ0KKw0KKyAgLy8NCisgIC8vIEFkZCBuYW1lIHNpemUgKFVJ TlQzMikNCisgIC8vDQorICBBcHBlbmRUb0J1ZmZlciAoSW5zdGFuY2UsIChWT0lEKikgJlNlcmlh bGl6ZWROYW1lU2l6ZSwgc2l6ZW9mIChTZXJpYWxpemVkTmFtZVNpemUpKTsNCisNCisgIC8vDQor ICAvLyBBZGQgdmFyaWFibGUgdW5pY29kZSBuYW1lIHN0cmluZw0KKyAgLy8NCisgIEFwcGVuZFRv QnVmZmVyIChJbnN0YW5jZSwgKFZPSUQqKSBWYXJpYWJsZU5hbWUsIFNlcmlhbGl6ZWROYW1lU2l6 ZSk7DQorDQorICAvLw0KKyAgLy8gQWRkIHZhcmlhYmxlIEdVSUQNCisgIC8vDQorICBBcHBlbmRU b0J1ZmZlciAoSW5zdGFuY2UsIChWT0lEKikgVmVuZG9yR3VpZCwgc2l6ZW9mICgqVmVuZG9yR3Vp ZCkpOw0KKw0KKyAgLy8NCisgIC8vIEFkZCB2YXJpYWJsZSBhdHRyaWJ1dGVzDQorICAvLw0KKyAg QXBwZW5kVG9CdWZmZXIgKEluc3RhbmNlLCAoVk9JRCopICZBdHRyaWJ1dGVzLCBzaXplb2YgKEF0 dHJpYnV0ZXMpKTsNCisNCisgIC8vDQorICAvLyBBZGQgdmFyaWFibGUgZGF0YSBzaXplIChVSU5U MzIpDQorICAvLw0KKyAgU2VyaWFsaXplZERhdGFTaXplID0gKFVJTlQzMikgRGF0YVNpemU7DQor ICBBcHBlbmRUb0J1ZmZlciAoSW5zdGFuY2UsIChWT0lEKikgJlNlcmlhbGl6ZWREYXRhU2l6ZSwg c2l6ZW9mIChTZXJpYWxpemVkRGF0YVNpemUpKTsNCisNCisgIC8vDQorICAvLyBBZGQgdmFyaWFi bGUgZGF0YQ0KKyAgLy8NCisgIEFwcGVuZFRvQnVmZmVyIChJbnN0YW5jZSwgRGF0YSwgRGF0YVNp emUpOw0KKw0KKyAgcmV0dXJuIFJFVFVSTl9TVUNDRVNTOw0KK30NCisNCisNCisvKioNCisgIFNl cmlhbGl6ZXMgdGhlIHZhcmlhYmxlcyBrbm93biB0byB0aGlzIGluc3RhbmNlIGludG8gdGhlDQor ICBwcm92aWRlZCBidWZmZXIuDQorDQorICBAcGFyYW1baW5dICAgICBIYW5kbGUgLSBIYW5kbGUg Zm9yIGEgdmFyaWFibGUgc2VyaWFsaXphdGlvbiBpbnN0YW5jZQ0KKyAgQHBhcmFtW291dF0gICAg QnVmZmVyIC0gQSBidWZmZXIgdG8gc3RvcmUgdGhlIGJpbmFyeSByZXByZXNlbnRhdGlvbg0KKyAg ICAgICAgICAgICAgICAgICBvZiB0aGUgdmFyaWFibGVzLg0KKyAgQHBhcmFtW2luLG91dF0gU2l6 ZSAtIE9uIGlucHV0IHRoaXMgaXMgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlci4NCisgICAgICAgICAg ICAgICAgICAgT24gb3V0cHV0IHRoaXMgaXMgdGhlIHNpemUgb2YgdGhlIGJpbmFyeSByZXByZXNl bnRhdGlvbg0KKyAgICAgICAgICAgICAgICAgICBvZiB0aGUgdmFyaWFibGVzLg0KKw0KKyAgQHJl dHZhbCAgICAgIFJFVFVSTl9TVUNDRVNTIC0gVGhlIGJpbmFyeSByZXByZXNlbnRhdGlvbiB3YXMg c3VjY2Vzc2Z1bGx5DQorICAgICAgICAgICAgICAgICBjb21wbGV0ZWQgYW5kIHJldHVybmVkIGlu IHRoZSBidWZmZXIuDQorICBAcmV0dmFsICAgICAgUkVUVVJOX09VVF9PRl9SRVNPVVJDRVMgLSBU aGVyZSB3ZSBub3QgZW5vdWdoIHJlc291cmNlcyB0bw0KKyAgICAgICAgICAgICAgICAgc2F2ZSB0 aGUgdmFyaWFibGVzIHRvIHRoZSBidWZmZXIuDQorICBAcmV0dmFsICAgICAgUkVUVVJOX0lOVkFM SURfUEFSQU1FVEVSIC0gSGFuZGxlIHdhcyBub3QgYSB2YWxpZA0KKyAgICAgICAgICAgICAgICAg dmFyaWFibGUgc2VyaWFsaXphdGlvbiBpbnN0YW5jZSBvcg0KKyAgICAgICAgICAgICAgICAgU2l6 ZSBvciBCdWZmZXIgd2VyZSBOVUxMLg0KKyAgQHJldHZhbCAgICAgIFJFVFVSTl9CVUZGRVJfVE9P X1NNQUxMIC0gVGhlIEJ1ZmZlciBzaXplIGFzIGluZGljYXRlZCBieQ0KKyAgICAgICAgICAgICAg ICAgdGhlIFNpemUgcGFyYW1ldGVyIHdhcyB0b28gc21hbGwgZm9yIHRoZSBzZXJpYWxpemVkDQor ICAgICAgICAgICAgICAgICB2YXJpYWJsZSBkYXRhLiAgU2l6ZSBpcyByZXR1cm5lZCB3aXRoIHRo ZSByZXF1aXJlZCBzaXplLg0KKw0KKyoqLw0KK1JFVFVSTl9TVEFUVVMNCitFRklBUEkNCitTZXJp YWxpemVWYXJpYWJsZXNUb0J1ZmZlciAoDQorICBJTiAgICAgRUZJX0hBTkRMRSAgICAgICAgICAg ICAgICAgICAgICAgSGFuZGxlLA0KKyAgT1VUICAgIFZPSUQgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICpCdWZmZXIsDQorICBJTiBPVVQgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgKlNpemUNCisgICkNCit7DQorICBTVl9JTlNUQU5DRSAgICAqSW5zdGFuY2U7DQorDQorICBJ bnN0YW5jZSA9IFNWX0ZST01fSEFORExFIChIYW5kbGUpOw0KKw0KKyAgaWYgKFNpemUgPT0gTlVM TCkgew0KKyAgICByZXR1cm4gUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSOw0KKyAgfQ0KKw0KKyAg aWYgKCpTaXplIDwgSW5zdGFuY2UtPkRhdGFTaXplKSB7DQorICAgICpTaXplID0gSW5zdGFuY2Ut PkRhdGFTaXplOw0KKyAgICByZXR1cm4gUkVUVVJOX0JVRkZFUl9UT09fU01BTEw7DQorICB9DQor DQorICBpZiAoQnVmZmVyID09IE5VTEwpIHsNCisgICAgcmV0dXJuIFJFVFVSTl9JTlZBTElEX1BB UkFNRVRFUjsNCisgIH0NCisNCisgICpTaXplID0gSW5zdGFuY2UtPkRhdGFTaXplOw0KKyAgQ29w eU1lbSAoQnVmZmVyLCBJbnN0YW5jZS0+QnVmZmVyUHRyLCBJbnN0YW5jZS0+RGF0YVNpemUpOw0K Kw0KKyAgcmV0dXJuIFJFVFVSTl9TVUNDRVNTOw0KK30NCisNCmRpZmYgLS1naXQgYS9QbGF0Zm9y bS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1EeGUvUGxhdGZvcm0uYyBiL1BsYXRm b3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9QbGF0Zm9ybUR4ZS9QbGF0Zm9ybS5jDQpuZXcg ZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMC4uN2JlZGUxNDk2ZA0KLS0tIC9kZXYv bnVsbA0KKysrIGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1BsYXRmb3JtRHhl L1BsYXRmb3JtLmMNCkBAIC0wLDAgKzEsODY1IEBADQorLyoqIEBmaWxlDQorICBUaGlzIGRyaXZl ciBlZmZlY3R1YXRlcyBPVk1GJ3MgcGxhdGZvcm0gY29uZmlndXJhdGlvbiBzZXR0aW5ncyBhbmQg ZXhwb3Nlcw0KKyAgdGhlbSB2aWEgSElJLg0KKw0KKyAgQ29weXJpZ2h0IChDKSAyMDE0LCBSZWQg SGF0LCBJbmMuDQorICBDb3B5cmlnaHQgKGMpIDIwMDkgLSAyMDE0LCBJbnRlbCBDb3Jwb3JhdGlv bi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQorDQorICBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogQlNELTItQ2xhdXNlLVBhdGVudA0KKyoqLw0KKw0KKyNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VM aWIuaD4NCisjaW5jbHVkZSA8TGlicmFyeS9CYXNlTWVtb3J5TGliLmg+DQorI2luY2x1ZGUgPExp YnJhcnkvRGVidWdMaWIuaD4NCisjaW5jbHVkZSA8TGlicmFyeS9EZXZpY2VQYXRoTGliLmg+DQor I2luY2x1ZGUgPExpYnJhcnkvSGlpTGliLmg+DQorI2luY2x1ZGUgPExpYnJhcnkvTWVtb3J5QWxs b2NhdGlvbkxpYi5oPg0KKyNpbmNsdWRlIDxMaWJyYXJ5L1ByaW50TGliLmg+DQorI2luY2x1ZGUg PExpYnJhcnkvVWVmaUJvb3RTZXJ2aWNlc1RhYmxlTGliLmg+DQorI2luY2x1ZGUgPExpYnJhcnkv VWVmaUhpaVNlcnZpY2VzTGliLmg+DQorI2luY2x1ZGUgPFByb3RvY29sL0RldmljZVBhdGguaD4N CisjaW5jbHVkZSA8UHJvdG9jb2wvR3JhcGhpY3NPdXRwdXQuaD4NCisjaW5jbHVkZSA8UHJvdG9j b2wvSGlpQ29uZmlnQWNjZXNzLmg+DQorI2luY2x1ZGUgPEd1aWQvTWRlTW9kdWxlSGlpLmg+DQor I2luY2x1ZGUgPEd1aWQvU2ltaWNzWDU4UGxhdGZvcm1Db25maWcuaD4NCisNCisjaW5jbHVkZSAi UGxhdGZvcm0uaCINCisjaW5jbHVkZSAiUGxhdGZvcm1Db25maWcuaCINCisjaW5jbHVkZSA8TGli cmFyeS9EeGVTZXJ2aWNlc1RhYmxlTGliLmg+DQorLy8NCisvLyBUaGUgSGlpQWRkUGFja2FnZXMo KSBsaWJyYXJ5IGZ1bmN0aW9uIHJlcXVpcmVzIHRoYXQgYW55IGNvbnRyb2xsZXIgKG9yDQorLy8g aW1hZ2UpIGhhbmRsZSwgdG8gYmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBISUkgcGFja2FnZXMgdW5k ZXIgaW5zdGFsbGF0aW9uLCBiZQ0KKy8vICJkZWNvcmF0ZWQiIHdpdGggYSBkZXZpY2UgcGF0aC4g VGhlIHRyYWRpdGlvbiBzZWVtcyB0byBiZSBhIHZlbmRvciBkZXZpY2UNCisvLyBwYXRoLg0KKy8v DQorLy8gV2UnZCBsaWtlIHRvIGFzc29jaWF0ZSBvdXIgSElJIHBhY2thZ2VzIHdpdGggdGhlIGRy aXZlcidzIGltYWdlIGhhbmRsZS4gVGhlDQorLy8gZmlyc3QgaWRlYSBpcyB0byB1c2UgdGhlIGRy aXZlciBpbWFnZSdzIGRldmljZSBwYXRoLiBVbmZvcnR1bmF0ZWx5LCBsb2FkZWQNCisvLyBpbWFn ZXMgb25seSBjb21lIHdpdGggYW4gRUZJX0xPQURFRF9JTUFHRV9ERVZJQ0VfUEFUSF9QUk9UT0NP TCAobm90IHRoZQ0KKy8vIHVzdWFsIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCksIGllLiBhIGRp ZmZlcmVudCBHVUlELiBJbiBhZGRpdGlvbiwgZXZlbiB0aGUNCisvLyBFRklfTE9BREVEX0lNQUdF X0RFVklDRV9QQVRIX1BST1RPQ09MIGludGVyZmFjZSBtYXkgYmUgTlVMTCwgaWYgdGhlIGltYWdl DQorLy8gaGFzIGJlZW4gbG9hZGVkIGZyb20gYW4gInVubmFtZWQiIG1lbW9yeSBzb3VyY2UgYnVm ZmVyLg0KKy8vDQorLy8gSGVuY2UgbGV0J3MganVzdCBzdGljayB3aXRoIHRoZSB0cmFkaXRpb24g LS0gdXNlIGEgZGVkaWNhdGVkIHZlbmRvciBkZXZpY2UNCisvLyBwYXRoLCB3aXRoIHRoZSBkcml2 ZXIncyBGSUxFX0dVSUQuDQorLy8NCisjcHJhZ21hIHBhY2soMSkNCit0eXBlZGVmIHN0cnVjdCB7 DQorICBWRU5ET1JfREVWSUNFX1BBVEggICAgICAgVmVuZG9yRGV2aWNlUGF0aDsNCisgIEVGSV9E RVZJQ0VfUEFUSF9QUk9UT0NPTCBFbmQ7DQorfSBQS0dfREVWSUNFX1BBVEg7DQorI3ByYWdtYSBw YWNrKCkNCisNCitTVEFUSUMgUEtHX0RFVklDRV9QQVRIIG1Qa2dEZXZpY2VQYXRoID0gew0KKyAg ew0KKyAgICB7DQorICAgICAgSEFSRFdBUkVfREVWSUNFX1BBVEgsDQorICAgICAgSFdfVkVORE9S X0RQLA0KKyAgICAgIHsNCisgICAgICAgIChVSU5UOCkgKHNpemVvZiAoVkVORE9SX0RFVklDRV9Q QVRIKSAgICAgKSwNCisgICAgICAgIChVSU5UOCkgKHNpemVvZiAoVkVORE9SX0RFVklDRV9QQVRI KSA+PiA4KQ0KKyAgICAgIH0NCisgICAgfSwNCisgICAgRUZJX0NBTExFUl9JRF9HVUlEDQorICB9 LA0KKyAgew0KKyAgICBFTkRfREVWSUNFX1BBVEhfVFlQRSwNCisgICAgRU5EX0VOVElSRV9ERVZJ Q0VfUEFUSF9TVUJUWVBFLA0KKyAgICB7DQorICAgICAgKFVJTlQ4KSAoRU5EX0RFVklDRV9QQVRI X0xFTkdUSCAgICAgKSwNCisgICAgICAoVUlOVDgpIChFTkRfREVWSUNFX1BBVEhfTEVOR1RIID4+ IDgpDQorICAgIH0NCisgIH0NCit9Ow0KKw0KKy8vDQorLy8gVGhlIGNvbmZpZ3VyYXRpb24gaW50 ZXJmYWNlIGJldHdlZW4gdGhlIEhJSSBlbmdpbmUgKGZvcm0gZGlzcGxheSBldGMpIGFuZA0KKy8v IHRoaXMgZHJpdmVyLg0KKy8vDQorU1RBVElDIEVGSV9ISUlfQ09ORklHX0FDQ0VTU19QUk9UT0NP TCBtQ29uZmlnQWNjZXNzOw0KKw0KKy8vDQorLy8gVGhlIGhhbmRsZSByZXByZXNlbnRpbmcgb3Vy IGxpc3Qgb2YgcGFja2FnZXMgYWZ0ZXIgaW5zdGFsbGF0aW9uLg0KKy8vDQorU1RBVElDIEVGSV9I SUlfSEFORExFIG1JbnN0YWxsZWRQYWNrYWdlczsNCisNCisvLw0KKy8vIFRoZSBhcnJheXMgYmVs b3cgY29uc3RpdHV0ZSBvdXIgSElJIHBhY2thZ2UgbGlzdC4gVGhleSBhcmUgYXV0by1nZW5lcmF0 ZWQgYnkNCisvLyB0aGUgVkZSIGNvbXBpbGVyIGFuZCBsaW5rZWQgaW50byB0aGUgZHJpdmVyIGlt YWdlIGR1cmluZyB0aGUgYnVpbGQuDQorLy8NCisvLyAtIFRoZSBzdHJpbmdzIHBhY2thZ2UgcmVj ZWl2ZXMgaXRzIEMgaWRlbnRpZmllciBmcm9tIHRoZSBkcml2ZXIncyBCQVNFX05BTUUsDQorLy8g ICBwbHVzICJTdHJpbmdzIi4NCisvLw0KKy8vIC0gVGhlIGZvcm1zIHBhY2thZ2UgcmVjZWl2ZXMg aXRzIEMgaWRlbnRpZmllciBmcm9tIHRoZSBWRlIgZmlsZSdzIGJhc2VuYW1lLA0KKy8vICAgcGx1 cyAiQmluIi4NCisvLw0KKy8vDQorZXh0ZXJuIFVJTlQ4IFBsYXRmb3JtRHhlU3RyaW5nc1tdOw0K K2V4dGVybiBVSU5UOCBQbGF0Zm9ybUZvcm1zQmluW107DQorDQorLy8NCisvLyBXZSB3YW50IHRv IGJlIG5vdGlmaWVkIGFib3V0IEdPUCBpbnN0YWxsYXRpb25zIHVudGlsIHdlIGZpbmQgb25lIEdP UA0KKy8vIGludGVyZmFjZSB0aGF0IGxldHMgdXMgcG9wdWxhdGUgdGhlIGZvcm0uDQorLy8NCitT VEFUSUMgRUZJX0VWRU5UIG1Hb3BFdmVudDsNCisNCisvLw0KKy8vIFRoZSByZWdpc3RyYXRpb24g cmVjb3JkIHVuZGVybmVhdGggdGhpcyBwb2ludGVyIGFsbG93cyB1cyB0byBpdGVyYXRlIHRocm91 Z2gNCisvLyB0aGUgR09QIGluc3RhbmNlcyBvbmUgYnkgb25lLg0KKy8vDQorU1RBVElDIFZPSUQg Km1Hb3BUcmFja2VyOw0KKw0KKy8vDQorLy8gQ2FjaGUgdGhlIHJlc29sdXRpb25zIHdlIGdldCBm cm9tIHRoZSBHT1AuDQorLy8NCit0eXBlZGVmIHN0cnVjdCB7DQorICBVSU5UMzIgWDsNCisgIFVJ TlQzMiBZOw0KK30gR09QX01PREU7DQorDQorU1RBVElDIFVJTlROICAgIG1OdW1Hb3BNb2RlczsN CitTVEFUSUMgR09QX01PREUgKm1Hb3BNb2RlczsNCisNCisNCisvKioNCisgIExvYWQgdGhlIHBl cnNpc3RlbnQgcGxhdGZvcm0gY29uZmlndXJhdGlvbiBhbmQgdHJhbnNsYXRlIGl0IHRvIGJpbmFy eSBmb3JtDQorICBzdGF0ZS4NCisNCisgIElmIHRoZSBwbGF0Zm9ybSBjb25maWd1cmF0aW9uIGlz IG1pc3NpbmcsIHRoZW4gdGhlIGZ1bmN0aW9uIGZpbGxzIGluIGENCisgIGRlZmF1bHQgc3RhdGUu DQorDQorICBAcGFyYW1bb3V0XSBNYWluRm9ybVN0YXRlICBCaW5hcnkgZm9ybS93aWRnZXQgc3Rh dGUgYWZ0ZXIgdHJhbnNsYXRpb24uDQorDQorICBAcmV0dmFsIEVGSV9TVUNDRVNTICBGb3JtL3dp ZGdldCBzdGF0ZSByZWFkeS4NCisgIEByZXR1cm4gICAgICAgICAgICAgIEVycm9yIGNvZGVzIGZy b20gdW5kZXJseWluZyBmdW5jdGlvbnMuDQorKiovDQorU1RBVElDDQorRUZJX1NUQVRVUw0KK0VG SUFQSQ0KK1BsYXRmb3JtQ29uZmlnVG9Gb3JtU3RhdGUgKA0KKyAgT1VUIE1BSU5fRk9STV9TVEFU RSAqTWFpbkZvcm1TdGF0ZQ0KKyAgKQ0KK3sNCisgIEVGSV9TVEFUVVMgICAgICBTdGF0dXM7DQor ICBQTEFURk9STV9DT05GSUcgUGxhdGZvcm1Db25maWc7DQorICBVSU5UNjQgICAgICAgICAgT3B0 aW9uYWxFbGVtZW50czsNCisgIFVJTlROICAgICAgICAgICBNb2RlTnVtYmVyOw0KKw0KKyAgWmVy b01lbSAoTWFpbkZvcm1TdGF0ZSwgc2l6ZW9mICpNYWluRm9ybVN0YXRlKTsNCisNCisgIFN0YXR1 cyA9IFBsYXRmb3JtQ29uZmlnTG9hZCAoJlBsYXRmb3JtQ29uZmlnLCAmT3B0aW9uYWxFbGVtZW50 cyk7DQorICBzd2l0Y2ggKFN0YXR1cykgew0KKyAgY2FzZSBFRklfU1VDQ0VTUzoNCisgICAgaWYg KE9wdGlvbmFsRWxlbWVudHMgJiBQTEFURk9STV9DT05GSUdfRl9HUkFQSElDU19SRVNPTFVUSU9O KSB7DQorICAgICAgLy8NCisgICAgICAvLyBGb3JtYXQgdGhlIHByZWZlcnJlZCByZXNvbHV0aW9u IGFzIHRleHQuDQorICAgICAgLy8NCisgICAgICBVbmljb2RlU1ByaW50QXNjaWlGb3JtYXQgKA0K KyAgICAgICAgKENIQVIxNiAqKSBNYWluRm9ybVN0YXRlLT5DdXJyZW50UHJlZmVycmVkUmVzb2x1 dGlvbiwNCisgICAgICAgIHNpemVvZiBNYWluRm9ybVN0YXRlLT5DdXJyZW50UHJlZmVycmVkUmVz b2x1dGlvbiwNCisgICAgICAgICIlTGR4JUxkIiwNCisgICAgICAgIChJTlQ2NCkgUGxhdGZvcm1D b25maWcuSG9yaXpvbnRhbFJlc29sdXRpb24sDQorICAgICAgICAoSU5UNjQpIFBsYXRmb3JtQ29u ZmlnLlZlcnRpY2FsUmVzb2x1dGlvbik7DQorDQorICAgICAgLy8NCisgICAgICAvLyBUcnkgdG8g bG9jYXRlIGl0IGluIHRoZSBkcm9wLWRvd24gbGlzdCB0b28uIFRoaXMgbWF5IG5vdCBzdWNjZWVk LCBidXQNCisgICAgICAvLyB0aGF0J3MgZmluZS4NCisgICAgICAvLw0KKyAgICAgIGZvciAoTW9k ZU51bWJlciA9IDA7IE1vZGVOdW1iZXIgPCBtTnVtR29wTW9kZXM7ICsrTW9kZU51bWJlcikgew0K KyAgICAgICAgaWYgKG1Hb3BNb2Rlc1tNb2RlTnVtYmVyXS5YID09IFBsYXRmb3JtQ29uZmlnLkhv cml6b250YWxSZXNvbHV0aW9uICYmDQorICAgICAgICAgICAgbUdvcE1vZGVzW01vZGVOdW1iZXJd LlkgPT0gUGxhdGZvcm1Db25maWcuVmVydGljYWxSZXNvbHV0aW9uKSB7DQorICAgICAgICAgIE1h aW5Gb3JtU3RhdGUtPk5leHRQcmVmZXJyZWRSZXNvbHV0aW9uID0gKFVJTlQzMikgTW9kZU51bWJl cjsNCisgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgICAgfQ0KKw0KKyAgICAgIGJy ZWFrOw0KKyAgICB9DQorICAgIC8vDQorICAgIC8vIGZhbGwgdGhyb3VnaCBvdGhlcndpc2UNCisg ICAgLy8NCisNCisgIGNhc2UgRUZJX05PVF9GT1VORDoNCisgICAgVW5pY29kZVNQcmludEFzY2lp Rm9ybWF0ICgNCisgICAgICAoQ0hBUjE2ICopIE1haW5Gb3JtU3RhdGUtPkN1cnJlbnRQcmVmZXJy ZWRSZXNvbHV0aW9uLA0KKyAgICAgIHNpemVvZiBNYWluRm9ybVN0YXRlLT5DdXJyZW50UHJlZmVy cmVkUmVzb2x1dGlvbiwNCisgICAgICAiVW5zZXQiKTsNCisgICAgYnJlYWs7DQorDQorICBkZWZh dWx0Og0KKyAgICByZXR1cm4gU3RhdHVzOw0KKyAgfQ0KKw0KKyAgcmV0dXJuIEVGSV9TVUNDRVNT Ow0KK30NCisNCisNCisvKioNCisgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHRoZSBISUkg bWFjaGluZXJ5IHdoZW4gaXQgZmV0Y2hlcyB0aGUgZm9ybSBzdGF0ZS4NCisNCisgIFNlZSB0aGUg cHJlY2lzZSBkb2N1bWVudGF0aW9uIGluIHRoZSBVRUZJIHNwZWMuDQorDQorICBAcGFyYW1baW5d ICBUaGlzICAgICAgVGhlIENvbmZpZyBBY2Nlc3MgUHJvdG9jb2wgaW5zdGFuY2UuDQorDQorICBA cGFyYW1baW5dICBSZXF1ZXN0ICAgQSA8Q29uZmlnUmVxdWVzdD4gZm9ybWF0IFVDUy0yIHN0cmlu ZyBkZXNjcmliaW5nIHRoZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5Lg0KKw0KKyAg QHBhcmFtW291dF0gUHJvZ3Jlc3MgIEEgcG9pbnRlciBpbnRvIFJlcXVlc3Qgb24gb3V0cHV0LCBp ZGVudGlmeWluZyB0aGUgcXVlcnkNCisgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50IHdo ZXJlIHByb2Nlc3NpbmcgZmFpbGVkLg0KKw0KKyAgQHBhcmFtW291dF0gUmVzdWx0cyAgIEEgPE11 bHRpQ29uZmlnQWx0UmVzcD4gZm9ybWF0IFVDUy0yIHN0cmluZyB0aGF0IGhhcw0KKyAgICAgICAg ICAgICAgICAgICAgICAgIGFsbCB2YWx1ZXMgZmlsbGVkIGluIGZvciB0aGUgbmFtZXMgaW4gdGhl IFJlcXVlc3QNCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcuDQorDQorICBAcmV0dmFs IEVGSV9TVUNDRVNTICBFeHRyYWN0aW9uIG9mIGZvcm0gc3RhdGUgaW4gPE11bHRpQ29uZmlnQWx0 UmVzcD4NCisgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nIHN1Y2Nlc3NmdWwuDQorICBA cmV0dXJuICAgICAgICAgICAgICBTdGF0dXMgY29kZXMgZnJvbSB1bmRlcmx5aW5nIGZ1bmN0aW9u cy4NCisNCisqKi8NCitTVEFUSUMNCitFRklfU1RBVFVTDQorRUZJQVBJDQorRXh0cmFjdENvbmZp ZyAoDQorICBJTiBDT05TVCAgRUZJX0hJSV9DT05GSUdfQUNDRVNTX1BST1RPQ09MICAqVGhpcywN CisgIElOIENPTlNUICBFRklfU1RSSU5HICAgICAgICAgICAgICAgICAgICAgIFJlcXVlc3QsDQor ICBPVVQgICAgICAgRUZJX1NUUklORyAgICAgICAgICAgICAgICAgICAgICAqUHJvZ3Jlc3MsDQor ICBPVVQgICAgICAgRUZJX1NUUklORyAgICAgICAgICAgICAgICAgICAgICAqUmVzdWx0cw0KKykN Cit7DQorICBNQUlOX0ZPUk1fU1RBVEUgTWFpbkZvcm1TdGF0ZTsNCisgIEVGSV9TVEFUVVMgICAg ICBTdGF0dXM7DQorDQorICBERUJVRyAoKEVGSV9EX1ZFUkJPU0UsICIlYTogUmVxdWVzdD1cIiVz XCJcbiIsIF9fRlVOQ1RJT05fXywgUmVxdWVzdCkpOw0KKw0KKyAgU3RhdHVzID0gUGxhdGZvcm1D b25maWdUb0Zvcm1TdGF0ZSAoJk1haW5Gb3JtU3RhdGUpOw0KKyAgaWYgKEVGSV9FUlJPUiAoU3Rh dHVzKSkgew0KKyAgICAqUHJvZ3Jlc3MgPSBSZXF1ZXN0Ow0KKyAgICByZXR1cm4gU3RhdHVzOw0K KyAgfQ0KKw0KKyAgLy8NCisgIC8vIEFuc3dlciB0aGUgdGV4dHVhbCByZXF1ZXN0IGtleWluZyBv ZmYgdGhlIGJpbmFyeSBmb3JtIHN0YXRlLg0KKyAgLy8NCisgIFN0YXR1cyA9IGdIaWlDb25maWdS b3V0aW5nLT5CbG9ja1RvQ29uZmlnIChnSGlpQ29uZmlnUm91dGluZywgUmVxdWVzdCwNCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChWT0lEICopICZNYWluRm9ybVN0YXRlLCBzaXpl b2YgTWFpbkZvcm1TdGF0ZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3Vs dHMsIFByb2dyZXNzKTsNCisgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCisgICAgREVCVUcg KChFRklfRF9FUlJPUiwgIiVhOiBCbG9ja1RvQ29uZmlnKCk6ICVyLCBQcm9ncmVzcz1cIiVzXCJc biIsDQorICAgICAgX19GVU5DVElPTl9fLCBTdGF0dXMsIChTdGF0dXMgPT0gRUZJX0RFVklDRV9F UlJPUikgPyBOVUxMIDogKlByb2dyZXNzKSk7DQorICB9IGVsc2Ugew0KKyAgICBERUJVRyAoKEVG SV9EX1ZFUkJPU0UsICIlYTogUmVzdWx0cz1cIiVzXCJcbiIsIF9fRlVOQ1RJT05fXywgKlJlc3Vs dHMpKTsNCisgIH0NCisgIHJldHVybiBTdGF0dXM7DQorfQ0KKw0KKw0KKy8qKg0KKyAgSW50ZXJw cmV0IHRoZSBiaW5hcnkgZm9ybSBzdGF0ZSBhbmQgc2F2ZSBpdCBhcyBwZXJzaXN0ZW50IHBsYXRm b3JtDQorICBjb25maWd1cmF0aW9uLg0KKw0KKyAgQHBhcmFtW2luXSBNYWluRm9ybVN0YXRlICBC aW5hcnkgZm9ybS93aWRnZXQgc3RhdGUgdG8gdmVyaWZ5IGFuZCBzYXZlLg0KKw0KKyAgQHJldHZh bCBFRklfU1VDQ0VTUyAgUGxhdGZvcm0gY29uZmlndXJhdGlvbiBzYXZlZC4NCisgIEByZXR1cm4g ICAgICAgICAgICAgIEVycm9yIGNvZGVzIGZyb20gdW5kZXJseWluZyBmdW5jdGlvbnMuDQorKiov DQorU1RBVElDDQorRUZJX1NUQVRVUw0KK0VGSUFQSQ0KK0Zvcm1TdGF0ZVRvUGxhdGZvcm1Db25m aWcgKA0KKyAgSU4gQ09OU1QgTUFJTl9GT1JNX1NUQVRFICpNYWluRm9ybVN0YXRlDQorICApDQor ew0KKyAgRUZJX1NUQVRVUyAgICAgIFN0YXR1czsNCisgIFBMQVRGT1JNX0NPTkZJRyBQbGF0Zm9y bUNvbmZpZzsNCisgIENPTlNUIEdPUF9NT0RFICAqR29wTW9kZTsNCisNCisgIC8vDQorICAvLyBU aGVyZSdzIG5vdGhpbmcgdG8gZG8gd2l0aCB0aGUgdGV4dHVhbCBDdXJyZW50UHJlZmVycmVkUmVz b2x1dGlvbiBmaWVsZC4NCisgIC8vIFdlIHZlcmlmeSBhbmQgdHJhbnNsYXRlIHRoZSBzZWxlY3Rp b24gaW4gdGhlIGRyb3AtZG93biBsaXN0Lg0KKyAgLy8NCisgIGlmIChNYWluRm9ybVN0YXRlLT5O ZXh0UHJlZmVycmVkUmVzb2x1dGlvbiA+PSBtTnVtR29wTW9kZXMpIHsNCisgICAgcmV0dXJuIEVG SV9JTlZBTElEX1BBUkFNRVRFUjsNCisgIH0NCisgIEdvcE1vZGUgPSBtR29wTW9kZXMgKyBNYWlu Rm9ybVN0YXRlLT5OZXh0UHJlZmVycmVkUmVzb2x1dGlvbjsNCisNCisgIFplcm9NZW0gKCZQbGF0 Zm9ybUNvbmZpZywgc2l6ZW9mIFBsYXRmb3JtQ29uZmlnKTsNCisgIFBsYXRmb3JtQ29uZmlnLkhv cml6b250YWxSZXNvbHV0aW9uID0gR29wTW9kZS0+WDsNCisgIFBsYXRmb3JtQ29uZmlnLlZlcnRp Y2FsUmVzb2x1dGlvbiAgID0gR29wTW9kZS0+WTsNCisNCisgIFN0YXR1cyA9IFBsYXRmb3JtQ29u ZmlnU2F2ZSAoJlBsYXRmb3JtQ29uZmlnKTsNCisgIHJldHVybiBTdGF0dXM7DQorfQ0KKw0KKw0K Ky8qKg0KKyAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgdGhlIEhJSSBtYWNoaW5lcnkgd2hl biBpdCB3YW50cyB0aGUgZHJpdmVyIHRvDQorICBpbnRlcnByZXQgYW5kIHBlcnNpc3QgdGhlIGZv cm0gc3RhdGUuDQorDQorICBTZWUgdGhlIHByZWNpc2UgZG9jdW1lbnRhdGlvbiBpbiB0aGUgVUVG SSBzcGVjLg0KKw0KKyAgQHBhcmFtW2luXSAgVGhpcyAgICAgICAgICAgVGhlIENvbmZpZyBBY2Nl c3MgUHJvdG9jb2wgaW5zdGFuY2UuDQorDQorICBAcGFyYW1baW5dICBDb25maWd1cmF0aW9uICBB IDxDb25maWdSZXNwPiBmb3JtYXQgVUNTLTIgc3RyaW5nIGRlc2NyaWJpbmcgdGhlDQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBmb3JtIHN0YXRlLg0KKw0KKyAgQHBhcmFtW291dF0gUHJv Z3Jlc3MgICAgICAgQSBwb2ludGVyIGludG8gQ29uZmlndXJhdGlvbiBvbiBvdXRwdXQsDQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpZGVudGlmeWluZyB0aGUgZWxlbWVudCB3aGVyZSBw cm9jZXNzaW5nIGZhaWxlZC4NCisNCisgIEByZXR2YWwgRUZJX1NVQ0NFU1MgIENvbmZpZ3VyYXRp b24gdmVyaWZpZWQsIHN0YXRlIHBlcm1hbmVudC4NCisNCisgIEByZXR1cm4gICAgICAgICAgICAg IFN0YXR1cyBjb2RlcyBmcm9tIHVuZGVybHlpbmcgZnVuY3Rpb25zLg0KKyoqLw0KK1NUQVRJQw0K K0VGSV9TVEFUVVMNCitFRklBUEkNCitSb3V0ZUNvbmZpZyAoDQorICBJTiBDT05TVCAgRUZJX0hJ SV9DT05GSUdfQUNDRVNTX1BST1RPQ09MICAqVGhpcywNCisgIElOIENPTlNUICBFRklfU1RSSU5H ICAgICAgICAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb24sDQorICBPVVQgICAgICAgRUZJX1NU UklORyAgICAgICAgICAgICAgICAgICAgICAqUHJvZ3Jlc3MNCispDQorew0KKyAgTUFJTl9GT1JN X1NUQVRFIE1haW5Gb3JtU3RhdGU7DQorICBVSU5UTiAgICAgICAgICAgQmxvY2tTaXplOw0KKyAg RUZJX1NUQVRVUyAgICAgIFN0YXR1czsNCisNCisgIERFQlVHICgoRUZJX0RfVkVSQk9TRSwgIiVh OiBDb25maWd1cmF0aW9uPVwiJXNcIlxuIiwgX19GVU5DVElPTl9fLA0KKyAgICBDb25maWd1cmF0 aW9uKSk7DQorDQorICAvLw0KKyAgLy8gdGhlICJyZWFkIiBzdGVwIGluIFJNVw0KKyAgLy8NCisg IFN0YXR1cyA9IFBsYXRmb3JtQ29uZmlnVG9Gb3JtU3RhdGUgKCZNYWluRm9ybVN0YXRlKTsNCisg IGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCisgICAgKlByb2dyZXNzID0gQ29uZmlndXJhdGlv bjsNCisgICAgcmV0dXJuIFN0YXR1czsNCisgIH0NCisNCisgIC8vDQorICAvLyB0aGUgIm1vZGlm eSIgc3RlcCBpbiBSTVcNCisgIC8vDQorICAvLyAoVXBkYXRlIHRoZSBiaW5hcnkgZm9ybSBzdGF0 ZS4gVGhpcyB1cGRhdGUgbWF5IGJlIHBhcnRpYWwsIHdoaWNoIGlzIHdoeSBpbg0KKyAgLy8gZ2Vu ZXJhbCB3ZSBtdXN0IHByZS1sb2FkIHRoZSBmb3JtIHN0YXRlIGZyb20gdGhlIHBsYXRmb3JtIGNv bmZpZy4pDQorICAvLw0KKyAgQmxvY2tTaXplID0gc2l6ZW9mIE1haW5Gb3JtU3RhdGU7DQorICBT dGF0dXMgPSBnSGlpQ29uZmlnUm91dGluZy0+Q29uZmlnVG9CbG9jayAoZ0hpaUNvbmZpZ1JvdXRp bmcsIENvbmZpZ3VyYXRpb24sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVk9J RCAqKSAmTWFpbkZvcm1TdGF0ZSwgJkJsb2NrU2l6ZSwgUHJvZ3Jlc3MpOw0KKyAgaWYgKEVGSV9F UlJPUiAoU3RhdHVzKSkgew0KKyAgICBERUJVRyAoKEVGSV9EX0VSUk9SLCAiJWE6IENvbmZpZ1Rv QmxvY2soKTogJXIsIFByb2dyZXNzPVwiJXNcIlxuIiwNCisgICAgICBfX0ZVTkNUSU9OX18sIFN0 YXR1cywNCisgICAgICAoU3RhdHVzID09IEVGSV9CVUZGRVJfVE9PX1NNQUxMKSA/IE5VTEwgOiAq UHJvZ3Jlc3MpKTsNCisgICAgcmV0dXJuIFN0YXR1czsNCisgIH0NCisNCisgIC8vDQorICAvLyB0 aGUgIndyaXRlIiBzdGVwIGluIFJNVw0KKyAgLy8NCisgIFN0YXR1cyA9IEZvcm1TdGF0ZVRvUGxh dGZvcm1Db25maWcgKCZNYWluRm9ybVN0YXRlKTsNCisgIGlmIChFRklfRVJST1IgKFN0YXR1cykp IHsNCisgICAgKlByb2dyZXNzID0gQ29uZmlndXJhdGlvbjsNCisgIH0NCisgIHJldHVybiBTdGF0 dXM7DQorfQ0KKw0KKw0KK1NUQVRJQw0KK0VGSV9TVEFUVVMNCitFRklBUEkNCitDYWxsYmFjayAo DQorICBJTiAgICAgQ09OU1QgRUZJX0hJSV9DT05GSUdfQUNDRVNTX1BST1RPQ09MICAgKlRoaXMs DQorICBJTiAgICAgRUZJX0JST1dTRVJfQUNUSU9OICAgICAgICAgICAgICAgICAgICAgQWN0aW9u LA0KKyAgSU4gICAgIEVGSV9RVUVTVElPTl9JRCAgICAgICAgICAgICAgICAgICAgICAgIFF1ZXN0 aW9uSWQsDQorICBJTiAgICAgVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg VHlwZSwNCisgIElOIE9VVCBFRklfSUZSX1RZUEVfVkFMVUUgICAgICAgICAgICAgICAgICAgICAq VmFsdWUsDQorICBPVVQgICAgRUZJX0JST1dTRVJfQUNUSU9OX1JFUVVFU1QgICAgICAgICAgICAg KkFjdGlvblJlcXVlc3QNCisgICkNCit7DQorICBERUJVRyAoKEVGSV9EX1ZFUkJPU0UsICIlYTog QWN0aW9uPTB4JUx4IFF1ZXN0aW9uSWQ9JWQgVHlwZT0lZFxuIiwNCisgICAgX19GVU5DVElPTl9f LCAoVUlOVDY0KSBBY3Rpb24sIFF1ZXN0aW9uSWQsIFR5cGUpKTsNCisNCisgIGlmIChBY3Rpb24g IT0gRUZJX0JST1dTRVJfQUNUSU9OX0NIQU5HRUQpIHsNCisgICAgcmV0dXJuIEVGSV9VTlNVUFBP UlRFRDsNCisgIH0NCisNCisgIHN3aXRjaCAoUXVlc3Rpb25JZCkgew0KKyAgY2FzZSBRVUVTVElP Tl9TQVZFX0VYSVQ6DQorICAgICpBY3Rpb25SZXF1ZXN0ID0gRUZJX0JST1dTRVJfQUNUSU9OX1JF UVVFU1RfRk9STV9TVUJNSVRfRVhJVDsNCisgICAgYnJlYWs7DQorDQorICBjYXNlIFFVRVNUSU9O X0RJU0NBUkRfRVhJVDoNCisgICAgKkFjdGlvblJlcXVlc3QgPSBFRklfQlJPV1NFUl9BQ1RJT05f UkVRVUVTVF9GT1JNX0RJU0NBUkRfRVhJVDsNCisgICAgYnJlYWs7DQorDQorICBkZWZhdWx0Og0K KyAgICBicmVhazsNCisgIH0NCisNCisgIHJldHVybiBFRklfU1VDQ0VTUzsNCit9DQorDQorDQor LyoqDQorICBRdWVyeSBhbmQgc2F2ZSBhbGwgcmVzb2x1dGlvbnMgc3VwcG9ydGVkIGJ5IHRoZSBH T1AuDQorDQorICBAcGFyYW1baW5dICBHb3AgICAgICAgICAgVGhlIEdyYXBoaWNzIE91dHB1dCBQ cm90b2NvbCBpbnN0YW5jZSB0byBxdWVyeS4NCisNCisgIEBwYXJhbVtvdXRdIE51bUdvcE1vZGVz ICBUaGUgbnVtYmVyIG9mIG1vZGVzIHN1cHBvcnRlZCBieSB0aGUgR09QLiBPbiBvdXRwdXQsDQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyBwYXJhbWV0ZXIgd2lsbCBiZSBwb3NpdGl2 ZS4NCisNCisgIEBwYXJhbVtvdXRdIEdvcE1vZGVzICAgICBPbiBvdXRwdXQsIGEgZHluYW1pY2Fs bHkgYWxsb2NhdGVkIGFycmF5IGNvbnRhaW5pbmcNCisgICAgICAgICAgICAgICAgICAgICAgICAg ICB0aGUgcmVzb2x1dGlvbnMgcmV0dXJuZWQgYnkgdGhlIEdPUC4gVGhlIGNhbGxlciBpcw0KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmxlIGZvciBmcmVlaW5nIHRoZSBhcnJh eSBhZnRlciB1c2UuDQorDQorICBAcmV0dmFsIEVGSV9VTlNVUFBPUlRFRCAgICAgICBObyBtb2Rl cyBmb3VuZC4NCisgIEByZXR2YWwgRUZJX09VVF9PRl9SRVNPVVJDRVMgIEZhaWxlZCB0byBhbGxv Y2F0ZSBHb3BNb2Rlcy4NCisgIEByZXR1cm4gICAgICAgICAgICAgICAgICAgICAgIEVycm9yIGNv ZGVzIGZyb20gR29wLT5RdWVyeU1vZGUoKS4NCisNCisqKi8NCitTVEFUSUMNCitFRklfU1RBVFVT DQorRUZJQVBJDQorUXVlcnlHb3BNb2RlcyAoDQorICBJTiAgRUZJX0dSQVBISUNTX09VVFBVVF9Q Uk9UT0NPTCAqR29wLA0KKyAgT1VUIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgKk51bUdv cE1vZGVzLA0KKyAgT1VUIEdPUF9NT0RFICAgICAgICAgICAgICAgICAgICAgKipHb3BNb2Rlcw0K KyAgKQ0KK3sNCisgIEVGSV9TVEFUVVMgU3RhdHVzOw0KKyAgVUlOVDMyICAgICBNb2RlTnVtYmVy Ow0KKw0KKyAgaWYgKEdvcC0+TW9kZS0+TWF4TW9kZSA9PSAwKSB7DQorICAgIHJldHVybiBFRklf VU5TVVBQT1JURUQ7DQorICB9DQorICAqTnVtR29wTW9kZXMgPSBHb3AtPk1vZGUtPk1heE1vZGU7 DQorDQorICAqR29wTW9kZXMgPSBBbGxvY2F0ZVBvb2wgKEdvcC0+TW9kZS0+TWF4TW9kZSAqIHNp emVvZiAqKkdvcE1vZGVzKTsNCisgIGlmICgqR29wTW9kZXMgPT0gTlVMTCkgew0KKyAgICByZXR1 cm4gRUZJX09VVF9PRl9SRVNPVVJDRVM7DQorICB9DQorDQorICBmb3IgKE1vZGVOdW1iZXIgPSAw OyBNb2RlTnVtYmVyIDwgR29wLT5Nb2RlLT5NYXhNb2RlOyArK01vZGVOdW1iZXIpIHsNCisgICAg RUZJX0dSQVBISUNTX09VVFBVVF9NT0RFX0lORk9STUFUSU9OICpJbmZvOw0KKyAgICBVSU5UTiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2l6ZU9mSW5mbzsNCisNCisgICAgU3RhdHVz ID0gR29wLT5RdWVyeU1vZGUgKEdvcCwgTW9kZU51bWJlciwgJlNpemVPZkluZm8sICZJbmZvKTsN CisgICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KKyAgICAgIGdvdG8gRnJlZUdvcE1vZGVz Ow0KKyAgICB9DQorDQorICAgICgqR29wTW9kZXMpW01vZGVOdW1iZXJdLlggPSBJbmZvLT5Ib3Jp em9udGFsUmVzb2x1dGlvbjsNCisgICAgKCpHb3BNb2RlcylbTW9kZU51bWJlcl0uWSA9IEluZm8t PlZlcnRpY2FsUmVzb2x1dGlvbjsNCisgICAgRnJlZVBvb2wgKEluZm8pOw0KKyAgfQ0KKw0KKyAg cmV0dXJuIEVGSV9TVUNDRVNTOw0KKw0KK0ZyZWVHb3BNb2RlczoNCisgIEZyZWVQb29sICgqR29w TW9kZXMpOw0KKw0KKyAgcmV0dXJuIFN0YXR1czsNCit9DQorDQorDQorLyoqDQorICBDcmVhdGUg YSBzZXQgb2YgIm9uZS1vZi1tYW55IiAoaWUuICJkcm9wIGRvd24gbGlzdCIpIG9wdGlvbiBJRlIg b3Bjb2RlcywNCisgIGJhc2VkIG9uIGF2YWlsYWJsZSBHT1AgcmVzb2x1dGlvbnMsIHRvIGJlIHBs YWNlZCB1bmRlciBhICJvbmUtb2YtbWFueSIgKGllLg0KKyAgImRyb3AgZG93biBsaXN0Iikgb3Bj b2RlLg0KKw0KKyAgQHBhcmFtW2luXSAgUGFja2FnZUxpc3QgICBUaGUgcGFja2FnZSBsaXN0IHdp dGggdGhlIGZvcm1zZXQgYW5kIGZvcm0gZm9yDQorICAgICAgICAgICAgICAgICAgICAgICAgICAg IHdoaWNoIHRoZSBkcm9wIGRvd24gb3B0aW9ucyBhcmUgcHJvZHVjZWQuIE9wdGlvbg0KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBuYW1lcyBhcmUgYWRkZWQgYXMgbmV3IHN0cmluZ3MgdG8g UGFja2FnZUxpc3QuDQorDQorICBAcGFyYW1bb3V0XSBPcENvZGVCdWZmZXIgIE9uIG91dHB1dCwg YSBkeW5hbWljYWxseSBhbGxvY2F0ZWQgb3Bjb2RlIGJ1ZmZlcg0KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICB3aXRoIGRyb3AgZG93biBsaXN0IG9wdGlvbnMgY29ycmVzcG9uZGluZyB0byBH T1ANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x1dGlvbnMuIFRoZSBjYWxsZXIg aXMgcmVzcG9uc2libGUgZm9yIGZyZWVpbmcNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg T3BDb2RlQnVmZmVyIHdpdGggSGlpRnJlZU9wQ29kZUhhbmRsZSgpIGFmdGVyIHVzZS4NCisNCisg IEBwYXJhbVtpbl0gIE51bUdvcE1vZGVzICAgTnVtYmVyIG9mIGVudHJpZXMgaW4gR29wTW9kZXMu DQorDQorICBAcGFyYW1baW5dICBHb3BNb2RlcyAgICAgIEFycmF5IG9mIHJlc29sdXRpb25zIHJl dHJpZXZlZCBmcm9tIHRoZSBHT1AuDQorDQorICBAcmV0dmFsIEVGSV9TVUNFU1MgIE9wY29kZXMg aGF2ZSBiZWVuIHN1Y2Nlc3NmdWxseSBwcm9kdWNlZC4NCisNCisgIEByZXR1cm4gICAgICAgICAg ICAgU3RhdHVzIGNvZGVzIGZyb20gdW5kZXJseWluZyBmdW5jdGlvbnMuIFBhY2thZ2VMaXN0IG1h eQ0KKyAgICAgICAgICAgICAgICAgICAgICBoYXZlIGJlZW4gZXh0ZW5kZWQgd2l0aCBuZXcgc3Ry aW5ncy4gT3BDb2RlQnVmZmVyIGlzDQorICAgICAgICAgICAgICAgICAgICAgIHVuY2hhbmdlZC4N CisqKi8NCitTVEFUSUMNCitFRklfU1RBVFVTDQorRUZJQVBJDQorQ3JlYXRlUmVzb2x1dGlvbk9w dGlvbnMgKA0KKyAgSU4gIEVGSV9ISUlfSEFORExFICAqUGFja2FnZUxpc3QsDQorICBPVVQgVk9J RCAgICAgICAgICAgICoqT3BDb2RlQnVmZmVyLA0KKyAgSU4gIFVJTlROICAgICAgICAgICBOdW1H b3BNb2RlcywNCisgIElOICBHT1BfTU9ERSAgICAgICAgKkdvcE1vZGVzDQorICApDQorew0KKyAg RUZJX1NUQVRVUyBTdGF0dXM7DQorICBWT0lEICAgICAgICpPdXRwdXRCdWZmZXI7DQorICBVSU5U TiAgICAgIE1vZGVOdW1iZXI7DQorDQorICBPdXRwdXRCdWZmZXIgPSBIaWlBbGxvY2F0ZU9wQ29k ZUhhbmRsZSAoKTsNCisgIGlmIChPdXRwdXRCdWZmZXIgPT0gTlVMTCkgew0KKyAgICByZXR1cm4g RUZJX09VVF9PRl9SRVNPVVJDRVM7DQorICB9DQorDQorICBmb3IgKE1vZGVOdW1iZXIgPSAwOyBN b2RlTnVtYmVyIDwgTnVtR29wTW9kZXM7ICsrTW9kZU51bWJlcikgew0KKyAgICBDSEFSMTYgICAg ICAgIERlc2NbTUFYU0laRV9SRVNfQ1VSXTsNCisgICAgRUZJX1NUUklOR19JRCBOZXdTdHJpbmc7 DQorICAgIFZPSUQgICAgICAgICAgKk9wQ29kZTsNCisNCisgICAgVW5pY29kZVNQcmludEFzY2lp Rm9ybWF0IChEZXNjLCBzaXplb2YgRGVzYywgIiVMZHglTGQiLA0KKyAgICAgIChJTlQ2NCkgR29w TW9kZXNbTW9kZU51bWJlcl0uWCwgKElOVDY0KSBHb3BNb2Rlc1tNb2RlTnVtYmVyXS5ZKTsNCisg ICAgTmV3U3RyaW5nID0gSGlpU2V0U3RyaW5nIChQYWNrYWdlTGlzdCwgMCAvKiBuZXcgc3RyaW5n ICovLCBEZXNjLA0KKyAgICAgICAgICAgICAgICAgIE5VTEwgLyogZm9yIGFsbCBsYW5ndWFnZXMg Ki8pOw0KKyAgICBpZiAoTmV3U3RyaW5nID09IDApIHsNCisgICAgICBTdGF0dXMgPSBFRklfT1VU X09GX1JFU09VUkNFUzsNCisgICAgICBnb3RvIEZyZWVPdXRwdXRCdWZmZXI7DQorICAgIH0NCisg ICAgT3BDb2RlID0gSGlpQ3JlYXRlT25lT2ZPcHRpb25PcENvZGUgKE91dHB1dEJ1ZmZlciwgTmV3 U3RyaW5nLA0KKyAgICAgICAgICAgICAgIDAgLyogRmxhZ3MgKi8sIEVGSV9JRlJfTlVNRVJJQ19T SVpFXzQsIE1vZGVOdW1iZXIpOw0KKyAgICBpZiAoT3BDb2RlID09IE5VTEwpIHsNCisgICAgICBT dGF0dXMgPSBFRklfT1VUX09GX1JFU09VUkNFUzsNCisgICAgICBnb3RvIEZyZWVPdXRwdXRCdWZm ZXI7DQorICAgIH0NCisgIH0NCisNCisgICpPcENvZGVCdWZmZXIgPSBPdXRwdXRCdWZmZXI7DQor ICByZXR1cm4gRUZJX1NVQ0NFU1M7DQorDQorRnJlZU91dHB1dEJ1ZmZlcjoNCisgIEhpaUZyZWVP cENvZGVIYW5kbGUgKE91dHB1dEJ1ZmZlcik7DQorDQorICByZXR1cm4gU3RhdHVzOw0KK30NCisN CisNCisvKioNCisgIFBvcHVsYXRlIHRoZSBmb3JtIGlkZW50aWZpZWQgYnkgdGhlIChQYWNrYWdl TGlzdCwgRm9ybVNldEd1aWQsIEZvcm1JZCkNCisgIHRyaXBsZXQuDQorDQorICBUaGUgZHJvcCBk b3duIGxpc3Qgb2YgdmlkZW8gcmVzb2x1dGlvbnMgaXMgZ2VuZXJhdGVkIGZyb20gKE51bUdvcE1v ZGVzLA0KKyAgR29wTW9kZXMpLg0KKw0KKyAgQHJldHZhbCBFRklfU1VDRVNTICBGb3JtIHN1Y2Nl c3NmdWxseSB1cGRhdGVkLg0KKyAgQHJldHVybiAgICAgICAgICAgICBTdGF0dXMgY29kZXMgZnJv bSB1bmRlcmx5aW5nIGZ1bmN0aW9ucy4NCisNCisqKi8NCitTVEFUSUMNCitFRklfU1RBVFVTDQor RUZJQVBJDQorUG9wdWxhdGVGb3JtICgNCisgIElOICBFRklfSElJX0hBTkRMRSAgKlBhY2thZ2VM aXN0LA0KKyAgSU4gIEVGSV9HVUlEICAgICAgICAqRm9ybVNldEd1aWQsDQorICBJTiAgRUZJX0ZP Uk1fSUQgICAgIEZvcm1JZCwNCisgIElOICBVSU5UTiAgICAgICAgICAgTnVtR29wTW9kZXMsDQor ICBJTiAgR09QX01PREUgICAgICAgICpHb3BNb2Rlcw0KKyAgKQ0KK3sNCisgIEVGSV9TVEFUVVMg ICAgICAgICBTdGF0dXM7DQorICBWT0lEICAgICAgICAgICAgICAgKk9wQ29kZUJ1ZmZlcjsNCisg IFZPSUQgICAgICAgICAgICAgICAqT3BDb2RlOw0KKyAgRUZJX0lGUl9HVUlEX0xBQkVMICpBbmNo b3I7DQorICBWT0lEICAgICAgICAgICAgICAgKk9wQ29kZUJ1ZmZlcjI7DQorDQorICBPcENvZGVC dWZmZXIyID0gTlVMTDsNCisNCisgIC8vDQorICAvLyAxLiBBbGxvY2F0ZSBhbiBlbXB0eSBvcGNv ZGUgYnVmZmVyLg0KKyAgLy8NCisgIE9wQ29kZUJ1ZmZlciA9IEhpaUFsbG9jYXRlT3BDb2RlSGFu ZGxlICgpOw0KKyAgaWYgKE9wQ29kZUJ1ZmZlciA9PSBOVUxMKSB7DQorICAgIHJldHVybiBFRklf T1VUX09GX1JFU09VUkNFUzsNCisgIH0NCisNCisgIC8vDQorICAvLyAyLiBDcmVhdGUgYSBsYWJl bCBvcGNvZGUgKHdoaWNoIGlzIGEgVGlhbm8gZXh0ZW5zaW9uKSBpbnNpZGUgdGhlIGJ1ZmZlci4N CisgIC8vIFRoZSBsYWJlbCdzIG51bWJlciBtdXN0IG1hdGNoIHRoZSAiYW5jaG9yIiBsYWJlbCBp biB0aGUgZm9ybS4NCisgIC8vDQorICBPcENvZGUgPSBIaWlDcmVhdGVHdWlkT3BDb2RlIChPcENv ZGVCdWZmZXIsICZnRWZpSWZyVGlhbm9HdWlkLA0KKyAgICAgICAgICAgICBOVUxMIC8qIG9wdGlv bmFsIGNvcHkgb3JpZ2luICovLCBzaXplb2YgKkFuY2hvcik7DQorICBpZiAoT3BDb2RlID09IE5V TEwpIHsNCisgICAgU3RhdHVzID0gRUZJX09VVF9PRl9SRVNPVVJDRVM7DQorICAgIGdvdG8gRnJl ZU9wQ29kZUJ1ZmZlcjsNCisgIH0NCisgIEFuY2hvciAgICAgICAgICAgICAgID0gT3BDb2RlOw0K KyAgQW5jaG9yLT5FeHRlbmRPcENvZGUgPSBFRklfSUZSX0VYVEVORF9PUF9MQUJFTDsNCisgIEFu Y2hvci0+TnVtYmVyICAgICAgID0gTEFCRUxfUkVTX05FWFQ7DQorDQorICAvLw0KKyAgLy8gMy4g Q3JlYXRlIHRoZSBvcGNvZGVzIGluc2lkZSB0aGUgYnVmZmVyIHRoYXQgYXJlIHRvIGJlIGluc2Vy dGVkIGludG8gdGhlDQorICAvLyBmb3JtLg0KKyAgLy8NCisgIC8vIDMuMS4gR2V0IGEgbGlzdCBv ZiByZXNvbHV0aW9ucy4NCisgIC8vDQorICBTdGF0dXMgPSBDcmVhdGVSZXNvbHV0aW9uT3B0aW9u cyAoUGFja2FnZUxpc3QsICZPcENvZGVCdWZmZXIyLA0KKyAgICAgICAgICAgICBOdW1Hb3BNb2Rl cywgR29wTW9kZXMpOw0KKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KKyAgICBnb3RvIEZy ZWVPcENvZGVCdWZmZXI7DQorICB9DQorDQorICAvLw0KKyAgLy8gMy4yLiBDcmVhdGUgYSBvbmUt b2YtbWFueSBxdWVzdGlvbiB3aXRoIHRoZSBhYm92ZSBvcHRpb25zLg0KKyAgLy8NCisgIE9wQ29k ZSA9IEhpaUNyZWF0ZU9uZU9mT3BDb2RlICgNCisgICAgICAgICAgICAgT3BDb2RlQnVmZmVyLCAg ICAgICAgICAgICAgICAgICAgICAgIC8vIGNyZWF0ZSBvcGNvZGUgaW5zaWRlIHRoaXMNCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgb3Bjb2Rl IGJ1ZmZlciwNCisgICAgICAgICAgICAgUVVFU1RJT05fUkVTX05FWFQsICAgICAgICAgICAgICAg ICAgIC8vIElEIG9mIHF1ZXN0aW9uLA0KKyAgICAgICAgICAgICBGT1JNU1RBVEVJRF9NQUlOX0ZP Uk0sICAgICAgICAgICAgICAgLy8gaWRlbnRpZmllcyBmb3JtIHN0YXRlDQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIHN0b3JhZ2UsDQorICAg ICAgICAgICAgIChVSU5UMTYpIE9GRlNFVF9PRiAoTUFJTl9GT1JNX1NUQVRFLCAvLyB2YWx1ZSBv ZiBxdWVzdGlvbiBzdG9yZWQNCisgICAgICAgICAgICAgICAgICAgICAgICBOZXh0UHJlZmVycmVk UmVzb2x1dGlvbiksIC8vICAgYXQgdGhpcyBvZmZzZXQsDQorICAgICAgICAgICAgIFNUUklOR19U T0tFTiAoU1RSX1JFU19ORVhUKSwgICAgICAgICAvLyBQcm9tcHQsDQorICAgICAgICAgICAgIFNU UklOR19UT0tFTiAoU1RSX1JFU19ORVhUX0hFTFApLCAgICAvLyBIZWxwLA0KKyAgICAgICAgICAg ICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUXVlc3Rpb25GbGFncywN CisgICAgICAgICAgICAgRUZJX0lGUl9OVU1FUklDX1NJWkVfNCwgICAgICAgICAgICAgIC8vIHNl ZSBzaXplb2YNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC8vICAgTmV4dFByZWZlcnJlZFJlc29sdXRpb24sDQorICAgICAgICAgICAgIE9wQ29kZUJ1 ZmZlcjIsICAgICAgICAgICAgICAgICAgICAgICAvLyBidWZmZXIgd2l0aCBwb3NzaWJsZQ0KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBjaG9p Y2VzLA0KKyAgICAgICAgICAgICBOVUxMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Ly8gREVGQVVMVCBvcGNvZGVzDQorICAgICAgICAgICAgICk7DQorICBpZiAoT3BDb2RlID09IE5V TEwpIHsNCisgICAgU3RhdHVzID0gRUZJX09VVF9PRl9SRVNPVVJDRVM7DQorICAgIGdvdG8gRnJl ZU9wQ29kZUJ1ZmZlcjI7DQorICB9DQorDQorICAvLw0KKyAgLy8gNC4gVXBkYXRlIHRoZSBmb3Jt IHdpdGggdGhlIG9wY29kZSBidWZmZXIuDQorICAvLw0KKyAgU3RhdHVzID0gSGlpVXBkYXRlRm9y bSAoUGFja2FnZUxpc3QsIEZvcm1TZXRHdWlkLCBGb3JtSWQsDQorICAgICAgICAgICAgIE9wQ29k ZUJ1ZmZlciwgLy8gYnVmZmVyIHdpdGggaGVhZCBhbmNob3IsIGFuZCBuZXcgY29udGVudHMgdG8g YmUNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnNlcnRlZCBhdCBpdA0KKyAgICAg ICAgICAgICBOVUxMICAgICAgICAgIC8vIGJ1ZmZlciB3aXRoIHRhaWwgYW5jaG9yLCBmb3IgZGVs ZXRpbmcgb2xkDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29udGVudHMgdXAgdG8g aXQNCisgICAgICAgICAgICAgKTsNCisNCitGcmVlT3BDb2RlQnVmZmVyMjoNCisgIEhpaUZyZWVP cENvZGVIYW5kbGUgKE9wQ29kZUJ1ZmZlcjIpOw0KKw0KK0ZyZWVPcENvZGVCdWZmZXI6DQorICBI aWlGcmVlT3BDb2RlSGFuZGxlIChPcENvZGVCdWZmZXIpOw0KKw0KKyAgcmV0dXJuIFN0YXR1czsN Cit9DQorDQorDQorLyoqDQorICBMb2FkIGFuZCBleGVjdXRlIHRoZSBwbGF0Zm9ybSBjb25maWd1 cmF0aW9uLg0KKw0KKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgIENvbmZpZ3VyYXRp b24gbG9hZGVkIGFuZCBleGVjdXRlZC4NCisgIEByZXR1cm4gICAgICAgICAgICAgICAgICAgICAg ICBTdGF0dXMgY29kZXMgZnJvbSBQbGF0Zm9ybUNvbmZpZ0xvYWQoKS4NCisqKi8NCitTVEFUSUMN CitFRklfU1RBVFVTDQorRUZJQVBJDQorRXhlY3V0ZVBsYXRmb3JtQ29uZmlnICgNCisgIFZPSUQN CisgICkNCit7DQorICBFRklfU1RBVFVTICAgICAgU3RhdHVzOw0KKyAgUExBVEZPUk1fQ09ORklH IFBsYXRmb3JtQ29uZmlnOw0KKyAgVUlOVDY0ICAgICAgICAgIE9wdGlvbmFsRWxlbWVudHM7DQor DQorICBTdGF0dXMgPSBQbGF0Zm9ybUNvbmZpZ0xvYWQgKCZQbGF0Zm9ybUNvbmZpZywgJk9wdGlv bmFsRWxlbWVudHMpOw0KKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KKyAgICBERUJVRyAo KChTdGF0dXMgPT0gRUZJX05PVF9GT1VORCkgPyBFRklfRF9WRVJCT1NFIDogRUZJX0RfRVJST1Is DQorICAgICAgIiVhOiBmYWlsZWQgdG8gbG9hZCBwbGF0Zm9ybSBjb25maWc6ICVyXG4iLCBfX0ZV TkNUSU9OX18sIFN0YXR1cykpOw0KKyAgICByZXR1cm4gU3RhdHVzOw0KKyAgfQ0KKw0KKyAgaWYg KE9wdGlvbmFsRWxlbWVudHMgJiBQTEFURk9STV9DT05GSUdfRl9HUkFQSElDU19SRVNPTFVUSU9O KSB7DQorICAgIC8vDQorICAgIC8vIFBhc3MgdGhlIHByZWZlcnJlZCByZXNvbHV0aW9uIHRvIEdy YXBoaWNzQ29uc29sZUR4ZSB2aWEgZHluYW1pYyBQQ0RzLg0KKyAgICAvLw0KKyAgICBQY2RTZXQz MiAoUGNkVmlkZW9Ib3Jpem9udGFsUmVzb2x1dGlvbiwNCisgICAgICBQbGF0Zm9ybUNvbmZpZy5I b3Jpem9udGFsUmVzb2x1dGlvbik7DQorICAgIFBjZFNldDMyIChQY2RWaWRlb1ZlcnRpY2FsUmVz b2x1dGlvbiwNCisgICAgICBQbGF0Zm9ybUNvbmZpZy5WZXJ0aWNhbFJlc29sdXRpb24pOw0KKyAg fQ0KKw0KKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KK30NCisNCisNCisvKioNCisgIE5vdGlmaWNh dGlvbiBjYWxsYmFjayBmb3IgR09QIGludGVyZmFjZSBpbnN0YWxsYXRpb24uDQorDQorICBAcGFy YW1baW5dIEV2ZW50ICAgIEV2ZW50IHdob3NlIG5vdGlmaWNhdGlvbiBmdW5jdGlvbiBpcyBiZWlu ZyBpbnZva2VkLg0KKw0KKyAgQHBhcmFtW2luXSBDb250ZXh0ICBUaGUgcG9pbnRlciB0byB0aGUg bm90aWZpY2F0aW9uIGZ1bmN0aW9uJ3MgY29udGV4dCwgd2hpY2gNCisgICAgICAgICAgICAgICAg ICAgICAgaXMgaW1wbGVtZW50YXRpb24tZGVwZW5kZW50Lg0KKyoqLw0KK1NUQVRJQw0KK1ZPSUQN CitFRklBUEkNCitHb3BJbnN0YWxsZWQgKA0KKyAgSU4gRUZJX0VWRU5UIEV2ZW50LA0KKyAgSU4g Vk9JRCAgICAgICpDb250ZXh0DQorICApDQorew0KKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAg ICAgICBTdGF0dXM7DQorICBFRklfR1JBUEhJQ1NfT1VUUFVUX1BST1RPQ09MICpHb3A7DQorDQor ICBBU1NFUlQgKEV2ZW50ID09IG1Hb3BFdmVudCk7DQorDQorICAvLw0KKyAgLy8gQ2hlY2sgZnVy dGhlciBHT1BzLg0KKyAgLy8NCisgIGZvciAoOzspIHsNCisgICAgbU51bUdvcE1vZGVzID0gMDsN CisgICAgbUdvcE1vZGVzID0gTlVMTDsNCisNCisgICAgU3RhdHVzID0gZ0JTLT5Mb2NhdGVQcm90 b2NvbCAoJmdFZmlHcmFwaGljc091dHB1dFByb3RvY29sR3VpZCwgbUdvcFRyYWNrZXIsDQorICAg ICAgICAgICAgICAgICAgICAoVk9JRCAqKikgJkdvcCk7DQorICAgIGlmIChFRklfRVJST1IgKFN0 YXR1cykpIHsNCisgICAgICByZXR1cm47DQorICAgIH0NCisNCisgICAgU3RhdHVzID0gUXVlcnlH b3BNb2RlcyAoR29wLCAmbU51bUdvcE1vZGVzLCAmbUdvcE1vZGVzKTsNCisgICAgaWYgKEVGSV9F UlJPUiAoU3RhdHVzKSkgew0KKyAgICAgIGNvbnRpbnVlOw0KKyAgICB9DQorDQorICAgIFN0YXR1 cyA9IFBvcHVsYXRlRm9ybSAobUluc3RhbGxlZFBhY2thZ2VzLCAmZ1NpbWljc1g1OFBsYXRmb3Jt Q29uZmlnR3VpZCwNCisgICAgICAgICAgICAgICBGT1JNSURfTUFJTl9GT1JNLCBtTnVtR29wTW9k ZXMsIG1Hb3BNb2Rlcyk7DQorICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCisgICAgICBG cmVlUG9vbCAobUdvcE1vZGVzKTsNCisgICAgICBjb250aW51ZTsNCisgICAgfQ0KKw0KKyAgICBi cmVhazsNCisgIH0NCisNCisgIC8vDQorICAvLyBTdWNjZXNzIC0tIHNvIHVuaW5zdGFsbCB0aGlz IGNhbGxiYWNrLiBDbG9zaW5nIHRoZSBldmVudCByZW1vdmVzIGFsbA0KKyAgLy8gcGVuZGluZyBu b3RpZmljYXRpb25zIGFuZCBhbGwgcHJvdG9jb2wgcmVnaXN0cmF0aW9ucy4NCisgIC8vDQorICBT dGF0dXMgPSBnQlMtPkNsb3NlRXZlbnQgKG1Hb3BFdmVudCk7DQorICBBU1NFUlRfRUZJX0VSUk9S IChTdGF0dXMpOw0KKyAgbUdvcEV2ZW50ID0gTlVMTDsNCisgIG1Hb3BUcmFja2VyID0gTlVMTDsN Cit9DQorDQorDQorLyoqDQorICBFbnRyeSBwb2ludCBmb3IgdGhpcyBkcml2ZXIuDQorDQorICBA cGFyYW1baW5dIEltYWdlSGFuZGxlICBJbWFnZSBoYW5kbGUgb2YgdGhpcyBkcml2ZXIuDQorICBA cGFyYW1baW5dIFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIFN5c3RlbVRhYmxlLg0KKw0KKyAgQHJl dHZhbCBFRklfU1VDRVNTICAgICAgICAgICAgRHJpdmVyIGhhcyBsb2FkZWQgc3VjY2Vzc2Z1bGx5 Lg0KKyAgQHJldHZhbCBFRklfT1VUX09GX1JFU09VUkNFUyAgRmFpbGVkIHRvIGluc3RhbGwgSElJ IHBhY2thZ2VzLg0KKyAgQHJldHVybiAgICAgICAgICAgICAgICAgICAgICAgRXJyb3IgY29kZXMg ZnJvbSBsb3dlciBsZXZlbCBmdW5jdGlvbnMuDQorDQorKiovDQorRUZJX1NUQVRVUw0KK0VGSUFQ SQ0KK1BsYXRmb3JtSW5pdCAoDQorICBJTiAgRUZJX0hBTkRMRSAgICAgICAgSW1hZ2VIYW5kbGUs DQorICBJTiAgRUZJX1NZU1RFTV9UQUJMRSAgKlN5c3RlbVRhYmxlDQorICApDQorew0KKyAgRUZJ X1NUQVRVUyBTdGF0dXM7DQorDQorICBFeGVjdXRlUGxhdGZvcm1Db25maWcgKCk7DQorDQorICBt Q29uZmlnQWNjZXNzLkV4dHJhY3RDb25maWcgPSAmRXh0cmFjdENvbmZpZzsNCisgIG1Db25maWdB Y2Nlc3MuUm91dGVDb25maWcgICA9ICZSb3V0ZUNvbmZpZzsNCisgIG1Db25maWdBY2Nlc3MuQ2Fs bGJhY2sgICAgICA9ICZDYWxsYmFjazsNCisNCisgIC8vDQorICAvLyBEZWNsYXJlIG91cnNlbHZl cyBzdWl0YWJsZSBmb3IgSElJIGNvbW11bmljYXRpb24uDQorICAvLw0KKyAgU3RhdHVzID0gZ0JT LT5JbnN0YWxsTXVsdGlwbGVQcm90b2NvbEludGVyZmFjZXMgKCZJbWFnZUhhbmRsZSwNCisgICAg ICAgICAgICAgICAgICAmZ0VmaURldmljZVBhdGhQcm90b2NvbEd1aWQsICAgICAgJm1Qa2dEZXZp Y2VQYXRoLA0KKyAgICAgICAgICAgICAgICAgICZnRWZpSGlpQ29uZmlnQWNjZXNzUHJvdG9jb2xH dWlkLCAmbUNvbmZpZ0FjY2VzcywNCisgICAgICAgICAgICAgICAgICBOVUxMKTsNCisgIGlmIChF RklfRVJST1IgKFN0YXR1cykpIHsNCisgICAgcmV0dXJuIFN0YXR1czsNCisgIH0NCisNCisgIC8v DQorICAvLyBQdWJsaXNoIHRoZSBISUkgcGFja2FnZSBsaXN0IHRvIEhJSSBEYXRhYmFzZS4NCisg IC8vDQorICBtSW5zdGFsbGVkUGFja2FnZXMgPSBIaWlBZGRQYWNrYWdlcyAoDQorICAgICAgICAg ICAgICAgICAgICAgICAgICZnRWZpQ2FsbGVySWRHdWlkLCAgLy8gUGFja2FnZUxpc3RHdWlkDQor ICAgICAgICAgICAgICAgICAgICAgICAgIEltYWdlSGFuZGxlLCAgICAgICAgLy8gYXNzb2NpYXRl ZCBEZXZpY2VIYW5kbGUNCisgICAgICAgICAgICAgICAgICAgICAgICAgUGxhdGZvcm1EeGVTdHJp bmdzLCAvLyAxc3QgcGFja2FnZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICBQbGF0Zm9ybUZv cm1zQmluLCAgIC8vIDJuZCBwYWNrYWdlDQorICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwg ICAgICAgICAgICAgICAgLy8gdGVybWluYXRvcg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAp Ow0KKyAgaWYgKG1JbnN0YWxsZWRQYWNrYWdlcyA9PSBOVUxMKSB7DQorICAgIFN0YXR1cyA9IEVG SV9PVVRfT0ZfUkVTT1VSQ0VTOw0KKyAgICBnb3RvIFVuaW5zdGFsbFByb3RvY29sczsNCisgIH0N CisNCisgIFN0YXR1cyA9IGdCUy0+Q3JlYXRlRXZlbnQgKEVWVF9OT1RJRllfU0lHTkFMLCBUUExf Q0FMTEJBQ0ssICZHb3BJbnN0YWxsZWQsDQorICAgICAgICAgICAgICAgICAgTlVMTCAvKiBDb250 ZXh0ICovLCAmbUdvcEV2ZW50KTsNCisgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCisgICAg Z290byBSZW1vdmVQYWNrYWdlczsNCisgIH0NCisNCisgIFN0YXR1cyA9IGdCUy0+UmVnaXN0ZXJQ cm90b2NvbE5vdGlmeSAoJmdFZmlHcmFwaGljc091dHB1dFByb3RvY29sR3VpZCwNCisgICAgICAg ICAgICAgICAgICBtR29wRXZlbnQsICZtR29wVHJhY2tlcik7DQorICBpZiAoRUZJX0VSUk9SIChT dGF0dXMpKSB7DQorICAgIGdvdG8gQ2xvc2VHb3BFdmVudDsNCisgIH0NCisNCisgIC8vDQorICAv LyBDaGVjayBhbHJlYWR5IGluc3RhbGxlZCBHT1BzLg0KKyAgLy8NCisgIFN0YXR1cyA9IGdCUy0+ U2lnbmFsRXZlbnQgKG1Hb3BFdmVudCk7DQorICBBU1NFUlRfRUZJX0VSUk9SIChTdGF0dXMpOw0K Kw0KKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KKw0KK0Nsb3NlR29wRXZlbnQ6DQorICBnQlMtPkNs b3NlRXZlbnQgKG1Hb3BFdmVudCk7DQorDQorUmVtb3ZlUGFja2FnZXM6DQorICBIaWlSZW1vdmVQ YWNrYWdlcyAobUluc3RhbGxlZFBhY2thZ2VzKTsNCisNCitVbmluc3RhbGxQcm90b2NvbHM6DQor ICBnQlMtPlVuaW5zdGFsbE11bHRpcGxlUHJvdG9jb2xJbnRlcmZhY2VzIChJbWFnZUhhbmRsZSwN CisgICAgICAgICAmZ0VmaURldmljZVBhdGhQcm90b2NvbEd1aWQsICAgICAgJm1Qa2dEZXZpY2VQ YXRoLA0KKyAgICAgICAgICZnRWZpSGlpQ29uZmlnQWNjZXNzUHJvdG9jb2xHdWlkLCAmbUNvbmZp Z0FjY2VzcywNCisgICAgICAgICBOVUxMKTsNCisgIHJldHVybiBTdGF0dXM7DQorfQ0KKw0KKy8q Kg0KKyAgVW5sb2FkIHRoZSBkcml2ZXIuDQorDQorICBAcGFyYW1baW5dICBJbWFnZUhhbmRsZSAg SGFuZGxlIHRoYXQgaWRlbnRpZmllcyB0aGUgaW1hZ2UgdG8gZXZpY3QuDQorDQorICBAcmV0dmFs IEVGSV9TVUNDRVNTICBUaGUgaW1hZ2UgaGFzIGJlZW4gdW5sb2FkZWQuDQorKiovDQorRUZJX1NU QVRVUw0KK0VGSUFQSQ0KK1BsYXRmb3JtVW5sb2FkICgNCisgIElOICBFRklfSEFORExFICBJbWFn ZUhhbmRsZQ0KKyAgKQ0KK3sNCisgIGlmIChtR29wRXZlbnQgPT0gTlVMTCkgew0KKyAgICAvLw0K KyAgICAvLyBUaGUgR09QIGNhbGxiYWNrIHJhbiBzdWNjZXNzZnVsbHkgYW5kIHVucmVnaXN0ZXJl ZCBpdHNlbGYuIFJlbGVhc2UgdGhlDQorICAgIC8vIHJlc291cmNlcyBhbGxvY2F0ZWQgdGhlcmUu DQorICAgIC8vDQorICAgIEFTU0VSVCAobUdvcE1vZGVzICE9IE5VTEwpOw0KKyAgICBGcmVlUG9v bCAobUdvcE1vZGVzKTsNCisgIH0gZWxzZSB7DQorICAgIC8vDQorICAgIC8vIE90aGVyd2lzZSB3 ZSBuZWVkIHRvIHVucmVnaXN0ZXIgdGhlIGNhbGxiYWNrLg0KKyAgICAvLw0KKyAgICBBU1NFUlQg KG1Hb3BNb2RlcyA9PSBOVUxMKTsNCisgICAgZ0JTLT5DbG9zZUV2ZW50IChtR29wRXZlbnQpOw0K KyAgfQ0KKw0KKyAgLy8NCisgIC8vIFJlbGVhc2UgcmVzb3VyY2VzIGFsbG9jYXRlZCBieSB0aGUg ZW50cnkgcG9pbnQuDQorICAvLw0KKyAgSGlpUmVtb3ZlUGFja2FnZXMgKG1JbnN0YWxsZWRQYWNr YWdlcyk7DQorICBnQlMtPlVuaW5zdGFsbE11bHRpcGxlUHJvdG9jb2xJbnRlcmZhY2VzIChJbWFn ZUhhbmRsZSwNCisgICAgICAgICAmZ0VmaURldmljZVBhdGhQcm90b2NvbEd1aWQsICAgICAgJm1Q a2dEZXZpY2VQYXRoLA0KKyAgICAgICAgICZnRWZpSGlpQ29uZmlnQWNjZXNzUHJvdG9jb2xHdWlk LCAmbUNvbmZpZ0FjY2VzcywNCisgICAgICAgICBOVUxMKTsNCisgIHJldHVybiBFRklfU1VDQ0VT UzsNCit9DQpkaWZmIC0tZ2l0IGEvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1Bs YXRmb3JtRHhlL1BsYXRmb3JtQ29uZmlnLmMgYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9h cmRQa2cvUGxhdGZvcm1EeGUvUGxhdGZvcm1Db25maWcuYw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQN CmluZGV4IDAwMDAwMDAwMDAuLmIzYjJiMzQwNjQNCi0tLSAvZGV2L251bGwNCisrKyBiL1BsYXRm b3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9QbGF0Zm9ybUR4ZS9QbGF0Zm9ybUNvbmZpZy5j DQpAQCAtMCwwICsxLDEyMyBAQA0KKy8qKiBAZmlsZQ0KKyAgVXRpbGl0eSBmdW5jdGlvbnMgZm9y IHNlcmlhbGl6aW5nIChwZXJzaXN0ZW50bHkgc3RvcmluZykgYW5kIGRlc2VyaWFsaXppbmcNCisg IE9WTUYncyBwbGF0Zm9ybSBjb25maWd1cmF0aW9uLg0KKw0KKyAgQ29weXJpZ2h0IChDKSAyMDE0 LCBSZWQgSGF0LCBJbmMuDQorDQorICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xh dXNlLVBhdGVudA0KKyoqLw0KKw0KKyNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VNZW1vcnlMaWIuaD4N CisjaW5jbHVkZSA8TGlicmFyeS9EZWJ1Z0xpYi5oPg0KKyNpbmNsdWRlIDxMaWJyYXJ5L01lbW9y eUFsbG9jYXRpb25MaWIuaD4NCisjaW5jbHVkZSA8TGlicmFyeS9VZWZpTGliLmg+DQorI2luY2x1 ZGUgPExpYnJhcnkvVWVmaVJ1bnRpbWVTZXJ2aWNlc1RhYmxlTGliLmg+DQorI2luY2x1ZGUgPEd1 aWQvU2ltaWNzWDU4UGxhdGZvcm1Db25maWcuaD4NCisNCisjaW5jbHVkZSAiUGxhdGZvcm1Db25m aWcuaCINCisNCisvLw0KKy8vIE5hbWUgb2YgdGhlIFVFRkkgdmFyaWFibGUgdGhhdCB3ZSB1c2Ug Zm9yIHBlcnNpc3RlbnQgc3RvcmFnZS4NCisvLw0KK1NUQVRJQyBDSEFSMTYgbVZhcmlhYmxlTmFt ZVtdID0gTCJQbGF0Zm9ybUNvbmZpZyI7DQorDQorDQorLyoqDQorICBTZXJpYWxpemUgYW5kIHBl cnNpc3RlbnRseSBzYXZlIHBsYXRmb3JtIGNvbmZpZ3VyYXRpb24uDQorDQorICBAcGFyYW1baW5d IFBsYXRmb3JtQ29uZmlnICBUaGUgcGxhdGZvcm0gY29uZmlndXJhdGlvbiB0byBzZXJpYWxpemUg YW5kIHNhdmUuDQorDQorICBAcmV0dXJuICBTdGF0dXMgY29kZXMgcmV0dXJuZWQgYnkgZ1JULT5T ZXRWYXJpYWJsZSgpLg0KKyoqLw0KK0VGSV9TVEFUVVMNCitFRklBUEkNCitQbGF0Zm9ybUNvbmZp Z1NhdmUgKA0KKyAgSU4gUExBVEZPUk1fQ09ORklHICpQbGF0Zm9ybUNvbmZpZw0KKyAgKQ0KK3sN CisgIEVGSV9TVEFUVVMgU3RhdHVzOw0KKw0KKyAgLy8NCisgIC8vIFdlIGNvdWxkIGltcGxlbWVu dCBhbnkga2luZCBvZiB0cmFuc2xhdGlvbiBoZXJlLCBhcyBwYXJ0IG9mIHNlcmlhbGl6YXRpb24u DQorICAvLyBGb3IgZXhhbXBsZSwgd2UgY291bGQgZXhwb3NlIHRoZSBwbGF0Zm9ybSBjb25maWd1 cmF0aW9uIGluIHNlcGFyYXRlDQorICAvLyB2YXJpYWJsZXMgd2l0aCBodW1hbi1yZWFkYWJsZSBj b250ZW50cywgYWxsb3dpbmcgb3RoZXIgdG9vbHMgdG8gYWNjZXNzDQorICAvLyB0aGVtIG1vcmUg ZWFzaWx5LiBGb3Igbm93LCBqdXN0IHNhdmUgYSBiaW5hcnkgZHVtcC4NCisgIC8vDQorICBTdGF0 dXMgPSBnUlQtPlNldFZhcmlhYmxlIChtVmFyaWFibGVOYW1lLCAmZ1NpbWljc1g1OFBsYXRmb3Jt Q29uZmlnR3VpZCwNCisgICAgICAgICAgICAgICAgICBFRklfVkFSSUFCTEVfTk9OX1ZPTEFUSUxF IHwgRUZJX1ZBUklBQkxFX0JPT1RTRVJWSUNFX0FDQ0VTUyB8DQorICAgICAgICAgICAgICAgICAg ICBFRklfVkFSSUFCTEVfUlVOVElNRV9BQ0NFU1MsDQorICAgICAgICAgICAgICAgICAgc2l6ZW9m ICpQbGF0Zm9ybUNvbmZpZywgUGxhdGZvcm1Db25maWcpOw0KKyAgcmV0dXJuIFN0YXR1czsNCit9 DQorDQorDQorLyoqDQorICBMb2FkIGFuZCBkZXNlcmlhbGl6ZSBwbGF0Zm9ybSBjb25maWd1cmF0 aW9uLg0KKw0KKyAgV2hlbiB0aGUgZnVuY3Rpb24gZmFpbHMsIG91dHB1dCBwYXJhbWV0ZXJzIGFy ZSBpbmRldGVybWluYXRlLg0KKw0KKyAgQHBhcmFtW291dF0gUGxhdGZvcm1Db25maWcgICAgVGhl IHBsYXRmb3JtIGNvbmZpZ3VyYXRpb24gdG8gcmVjZWl2ZSB0aGUNCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGxvYWRlZCBkYXRhLg0KKw0KKyAgQHBhcmFtW291dF0gT3B0aW9uYWxF bGVtZW50cyAgVGhpcyBiaXRtYXAgZGVzY3JpYmVzIHRoZSBwcmVzZW5jZSBvZiBvcHRpb25hbA0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBlbGVtZW50cyB0 aGF0IGhhdmUgYmVlbiBsb2FkZWQuDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ TEFURk9STV9DT05GSUdfRl9ET1dOR1JBREUgbWVhbnMgdGhhdCBzb21lDQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1bmtub3duIGVsZW1lbnRzLCBwcmVzZW50IGluIHRoZSB3aXJl IGZvcm1hdCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhdmUgYmVlbiBpZ25v cmVkLg0KKw0KKyAgQHJldHZhbCAgRUZJX1NVQ0NFU1MgICAgICAgICBMb2FkaW5nICYgZGVzZXJp YWxpemF0aW9uIHN1Y2Nlc3NmdWwuDQorICBAcmV0dXJuICAgICAgICAgICAgICAgICAgICAgIEVy cm9yIGNvZGVzIHJldHVybmVkIGJ5IEdldFZhcmlhYmxlMigpLg0KKyoqLw0KK0VGSV9TVEFUVVMN CitFRklBUEkNCitQbGF0Zm9ybUNvbmZpZ0xvYWQgKA0KKyAgT1VUIFBMQVRGT1JNX0NPTkZJRyAq UGxhdGZvcm1Db25maWcsDQorICBPVVQgVUlOVDY0ICAgICAgICAgICpPcHRpb25hbEVsZW1lbnRz DQorICApDQorew0KKyAgVk9JRCAgICAgICAqRGF0YTsNCisgIFVJTlROICAgICAgRGF0YVNpemU7 DQorICBFRklfU1RBVFVTIFN0YXR1czsNCisNCisgIC8vDQorICAvLyBBbnkgdHJhbnNsYXRpb24g ZG9uZSBpbiBQbGF0Zm9ybUNvbmZpZ1NhdmUoKSB3b3VsZCBoYXZlIHRvIGJlIG1pcnJvcmVkDQor ICAvLyBoZXJlLiBGb3Igbm93LCBqdXN0IGxvYWQgdGhlIGJpbmFyeSBkdW1wLg0KKyAgLy8NCisg IC8vIFZlcnNpb25pbmcgb2YgdGhlIGJpbmFyeSB3aXJlIGZvcm1hdCBpcyBpbXBsZW1lbnRlZCBi YXNlZCBvbiBzaXplDQorICAvLyAob25seSBpbmNyZW1lbnRhbCBjaGFuZ2VzLCBpZS4gbmV3IGZp ZWxkcyksIGFuZCBvbiBHVUlELg0KKyAgLy8gKEluY29tcGF0aWJsZSBjaGFuZ2VzIHJlcXVpcmUg YSBHVUlEIGNoYW5nZS4pDQorICAvLw0KKyAgU3RhdHVzID0gR2V0VmFyaWFibGUyIChtVmFyaWFi bGVOYW1lLCAmZ1NpbWljc1g1OFBsYXRmb3JtQ29uZmlnR3VpZCwgJkRhdGEsDQorICAgICAgICAg ICAgICZEYXRhU2l6ZSk7DQorICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQorICAgIHJldHVy biBTdGF0dXM7DQorICB9DQorDQorICAqT3B0aW9uYWxFbGVtZW50cyA9IDA7DQorICBpZiAoRGF0 YVNpemUgPiBzaXplb2YgKlBsYXRmb3JtQ29uZmlnKSB7DQorICAgIC8vDQorICAgIC8vIEhhbmRs ZSBmaXJtd2FyZSBkb3duZ3JhZGUgLS0ga2VlcCBvbmx5IGxlYWRpbmcgcGFydC4NCisgICAgLy8N CisgICAgQ29weU1lbSAoUGxhdGZvcm1Db25maWcsIERhdGEsIHNpemVvZiAqUGxhdGZvcm1Db25m aWcpOw0KKyAgICAqT3B0aW9uYWxFbGVtZW50cyB8PSBQTEFURk9STV9DT05GSUdfRl9ET1dOR1JB REU7DQorICB9IGVsc2Ugew0KKyAgICBDb3B5TWVtIChQbGF0Zm9ybUNvbmZpZywgRGF0YSwgRGF0 YVNpemUpOw0KKw0KKyAgICAvLw0KKyAgICAvLyBIYW5kbGUgZmlybXdhcmUgdXBncmFkZSAtLSB6 ZXJvIG91dCBtaXNzaW5nIGZpZWxkcy4NCisgICAgLy8NCisgICAgWmVyb01lbSAoKFVJTlQ4ICop UGxhdGZvcm1Db25maWcgKyBEYXRhU2l6ZSwNCisgICAgICBzaXplb2YgKlBsYXRmb3JtQ29uZmln IC0gRGF0YVNpemUpOw0KKyAgfQ0KKw0KKyAgLy8NCisgIC8vIEJhc2VkIG9uIERhdGFTaXplLCBy ZXBvcnQgdGhlIG9wdGlvbmFsIGZlYXR1cmVzIHRoYXQgd2UgcmVjb2duaXplLg0KKyAgLy8NCisg IGlmIChEYXRhU2l6ZSA+PSAoT0ZGU0VUX09GIChQTEFURk9STV9DT05GSUcsIFZlcnRpY2FsUmVz b2x1dGlvbikgKw0KKyAgICAgICAgICAgICAgICAgICBzaXplb2YgUGxhdGZvcm1Db25maWctPlZl cnRpY2FsUmVzb2x1dGlvbikpIHsNCisgICAgKk9wdGlvbmFsRWxlbWVudHMgfD0gUExBVEZPUk1f Q09ORklHX0ZfR1JBUEhJQ1NfUkVTT0xVVElPTjsNCisgIH0NCisNCisgIEZyZWVQb29sIChEYXRh KTsNCisgIHJldHVybiBFRklfU1VDQ0VTUzsNCit9DQpkaWZmIC0tZ2l0IGEvUGxhdGZvcm0vSW50 ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1BsYXRmb3JtUGVpL0Ntb3MuYyBiL1BsYXRmb3JtL0ludGVs L1NpbWljc09wZW5Cb2FyZFBrZy9QbGF0Zm9ybVBlaS9DbW9zLmMNCm5ldyBmaWxlIG1vZGUgMTAw NjQ0DQppbmRleCAwMDAwMDAwMDAwLi5mYTJjMjIxMTZjDQotLS0gL2Rldi9udWxsDQorKysgYi9Q bGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1QZWkvQ21vcy5jDQpAQCAt MCwwICsxLDU3IEBADQorLyoqIEBmaWxlDQorICBQQy9BVCBDTU9TIGFjY2VzcyByb3V0aW5lcw0K Kw0KKyAgQ29weXJpZ2h0IChjKSAyMDA2IC0gMjAwOSBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJp Z2h0cyByZXNlcnZlZC4gPEJSPg0KKw0KKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0y LUNsYXVzZS1QYXRlbnQNCisqKi8NCisNCisjaW5jbHVkZSAiQ21vcy5oIg0KKyNpbmNsdWRlICJM aWJyYXJ5L0lvTGliLmgiDQorDQorLyoqDQorICBSZWFkcyA4LWJpdHMgb2YgQ01PUyBkYXRhLg0K Kw0KKyAgUmVhZHMgdGhlIDgtYml0cyBvZiBDTU9TIGRhdGEgYXQgdGhlIGxvY2F0aW9uIHNwZWNp ZmllZCBieSBJbmRleC4NCisgIFRoZSA4LWJpdCByZWFkIHZhbHVlIGlzIHJldHVybmVkLg0KKw0K KyAgQHBhcmFtICBJbmRleCAgVGhlIENNT1MgbG9jYXRpb24gdG8gcmVhZC4NCisNCisgIEByZXR1 cm4gVGhlIHZhbHVlIHJlYWQuDQorDQorKiovDQorVUlOVDgNCitFRklBUEkNCitDbW9zUmVhZDgg KA0KKyAgSU4gICAgICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIEluZGV4DQorICApDQorew0K KyAgSW9Xcml0ZTggKDB4NzAsIChVSU5UOCkgSW5kZXgpOw0KKyAgcmV0dXJuIElvUmVhZDggKDB4 NzEpOw0KK30NCisNCisNCisvKioNCisgIFdyaXRlcyA4LWJpdHMgb2YgQ01PUyBkYXRhLg0KKw0K KyAgV3JpdGVzIDgtYml0cyBvZiBDTU9TIGRhdGEgdG8gdGhlIGxvY2F0aW9uIHNwZWNpZmllZCBi eSBJbmRleA0KKyAgd2l0aCB0aGUgdmFsdWUgc3BlY2lmaWVkIGJ5IFZhbHVlIGFuZCByZXR1cm5z IFZhbHVlLg0KKw0KKyAgQHBhcmFtICBJbmRleCAgVGhlIENNT1MgbG9jYXRpb24gdG8gd3JpdGUu DQorICBAcGFyYW0gIFZhbHVlICBUaGUgdmFsdWUgdG8gd3JpdGUgdG8gQ01PUy4NCisNCisgIEBy ZXR1cm4gVGhlIHZhbHVlIHdyaXR0ZW4gdG8gQ01PUy4NCisNCisqKi8NCitVSU5UOA0KK0VGSUFQ SQ0KK0Ntb3NXcml0ZTggKA0KKyAgSU4gICAgICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIElu ZGV4LA0KKyAgSU4gICAgICBVSU5UOCAgICAgICAgICAgICAgICAgICAgIFZhbHVlDQorICApDQor ew0KKyAgSW9Xcml0ZTggKDB4NzAsIChVSU5UOCkgSW5kZXgpOw0KKyAgSW9Xcml0ZTggKDB4NzEs IFZhbHVlKTsNCisgIHJldHVybiBWYWx1ZTsNCit9DQorDQpkaWZmIC0tZ2l0IGEvUGxhdGZvcm0v SW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1BsYXRmb3JtUGVpL0ZlYXR1cmVDb250cm9sLmMgYi9Q bGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1QZWkvRmVhdHVyZUNvbnRy b2wuYw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAuLjY5MjQwNWU0MTcN Ci0tLSAvZGV2L251bGwNCisrKyBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9Q bGF0Zm9ybVBlaS9GZWF0dXJlQ29udHJvbC5jDQpAQCAtMCwwICsxLDExNCBAQA0KKy8qKiBAZmls ZQ0KKyAgSW5zdGFsbCBhIGNhbGxiYWNrIHdoZW4gbmVjZXNzYXJ5IGZvciBzZXR0aW5nIHRoZSBG ZWF0dXJlIENvbnRyb2wgTVNSIG9uIGFsbA0KKyAgcHJvY2Vzc29ycy4NCisNCisgIENvcHlyaWdo dCAoQykgMjAxNiwgUmVkIEhhdCwgSW5jLg0KKw0KKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6 IEJTRC0yLUNsYXVzZS1QYXRlbnQNCisqKi8NCisNCisjaW5jbHVkZSA8TGlicmFyeS9EZWJ1Z0xp Yi5oPg0KKyNpbmNsdWRlIDxMaWJyYXJ5L1BlaVNlcnZpY2VzTGliLmg+DQorI2luY2x1ZGUgPFBw aS9NcFNlcnZpY2VzLmg+DQorI2luY2x1ZGUgPFJlZ2lzdGVyL0ludGVsL01zci9Db3JlMk1zci5o Pg0KKw0KKyNpbmNsdWRlICJQbGF0Zm9ybS5oIg0KKw0KKy8vDQorLy8gVGhlIHZhbHVlIHRvIGJl IHdyaXR0ZW4gdG8gdGhlIEZlYXR1cmUgQ29udHJvbCBNU1IsIHJldHJpZXZlZCBmcm9tIGZ3X2Nm Zy4NCisvLw0KK1NUQVRJQyBVSU5UNjQgbUZlYXR1cmVDb250cm9sVmFsdWUgPSAweDAwMDAwMDA1 Ow0KKw0KKy8qKg0KKyAgV3JpdGUgdGhlIEZlYXR1cmUgQ29udHJvbCBNU1Igb24gYW4gQXBwbGlj YXRpb24gUHJvY2Vzc29yIG9yIHRoZSBCb290DQorICBQcm9jZXNzb3IuDQorDQorICBBbGwgQVBz IGV4ZWN1dGUgdGhpcyBmdW5jdGlvbiBpbiBwYXJhbGxlbC4gVGhlIEJTUCBleGVjdXRlcyB0aGUg ZnVuY3Rpb24NCisgIHNlcGFyYXRlbHkuDQorDQorICBAcGFyYW1baW4sb3V0XSBXb3JrU3BhY2Ug IFBvaW50ZXIgdG8gdGhlIGlucHV0L291dHB1dCBhcmd1bWVudCB3b3Jrc3BhY2UNCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2hhcmVkIGJ5IGFsbCBwcm9jZXNzb3JzLg0KKyoqLw0KK1NU QVRJQw0KK1ZPSUQNCitFRklBUEkNCitXcml0ZUZlYXR1cmVDb250cm9sICgNCisgIElOIE9VVCBW T0lEICpXb3JrU3BhY2UNCisgICkNCit7DQorICBBc21Xcml0ZU1zcjY0IChNU1JfQ09SRTJfRkVB VFVSRV9DT05UUk9MLCBtRmVhdHVyZUNvbnRyb2xWYWx1ZSk7DQorfQ0KKw0KKy8qKg0KKyAgTm90 aWZpY2F0aW9uIGZ1bmN0aW9uIGNhbGxlZCB3aGVuIEVGSV9QRUlfTVBfU0VSVklDRVNfUFBJIGJl Y29tZXMgYXZhaWxhYmxlLg0KKw0KKyAgQHBhcmFtW2luXSBQZWlTZXJ2aWNlcyAgICAgIEluZGly ZWN0IHJlZmVyZW5jZSB0byB0aGUgUEVJIFNlcnZpY2VzIFRhYmxlLg0KKyAgQHBhcmFtW2luXSBO b3RpZnlEZXNjcmlwdG9yIEFkZHJlc3Mgb2YgdGhlIG5vdGlmaWNhdGlvbiBkZXNjcmlwdG9yIGRh dGENCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUuDQorICBAcGFyYW1b aW5dIFBwaSAgICAgICAgICAgICAgQWRkcmVzcyBvZiB0aGUgUFBJIHRoYXQgd2FzIGluc3RhbGxl ZC4NCisNCisgIEByZXR1cm4gIFN0YXR1cyBvZiB0aGUgbm90aWZpY2F0aW9uLiBUaGUgc3RhdHVz IGNvZGUgcmV0dXJuZWQgZnJvbSB0aGlzDQorICAgICAgICAgICBmdW5jdGlvbiBpcyBpZ25vcmVk Lg0KKyoqLw0KK1NUQVRJQw0KK0VGSV9TVEFUVVMNCitFRklBUEkNCitPbk1wU2VydmljZXNBdmFp bGFibGUgKA0KKyAgSU4gRUZJX1BFSV9TRVJWSUNFUyAgICAgICAgICAgKipQZWlTZXJ2aWNlcywN CisgIElOIEVGSV9QRUlfTk9USUZZX0RFU0NSSVBUT1IgICpOb3RpZnlEZXNjcmlwdG9yLA0KKyAg SU4gVk9JRCAgICAgICAgICAgICAgICAgICAgICAgKlBwaQ0KKyAgKQ0KK3sNCisgIEVGSV9QRUlf TVBfU0VSVklDRVNfUFBJICpNcFNlcnZpY2VzOw0KKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAg U3RhdHVzOw0KKw0KKyAgREVCVUcgKChFRklfRF9WRVJCT1NFLCAiJWE6ICVhXG4iLCBnRWZpQ2Fs bGVyQmFzZU5hbWUsIF9fRlVOQ1RJT05fXykpOw0KKyAgLy8NCisgIC8vIFdyaXRlIHRoZSBNU1Ig b24gYWxsIHRoZSBBUHMgaW4gcGFyYWxsZWwuDQorICAvLw0KKyAgTXBTZXJ2aWNlcyA9IFBwaTsN CisgIFN0YXR1cyA9IE1wU2VydmljZXMtPlN0YXJ0dXBBbGxBUHMgKA0KKyAgICAgICAgICAgICAg ICAgICAgICAgICAoQ09OU1QgRUZJX1BFSV9TRVJWSUNFUyAqKilQZWlTZXJ2aWNlcywNCisgICAg ICAgICAgICAgICAgICAgICAgICAgTXBTZXJ2aWNlcywNCisgICAgICAgICAgICAgICAgICAgICAg ICAgV3JpdGVGZWF0dXJlQ29udHJvbCwgLy8gUHJvY2VkdXJlDQorICAgICAgICAgICAgICAgICAg ICAgICAgIEZBTFNFLCAgICAgICAgICAgICAgIC8vIFNpbmdsZVRocmVhZA0KKyAgICAgICAgICAg ICAgICAgICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAvLyBUaW1lb3V0SW5NaWNyb1NlY29u ZHM6IGluZi4NCisgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCAgICAgICAgICAgICAgICAg Ly8gUHJvY2VkdXJlQXJndW1lbnQNCisgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCisgIGlm IChFRklfRVJST1IgKFN0YXR1cykgJiYgU3RhdHVzICE9IEVGSV9OT1RfU1RBUlRFRCkgew0KKyAg ICBERUJVRyAoKEVGSV9EX0VSUk9SLCAiJWE6IFN0YXJ0dXBBbGxBcHMoKTogJXJcbiIsIF9fRlVO Q1RJT05fXywgU3RhdHVzKSk7DQorICAgIHJldHVybiBTdGF0dXM7DQorICB9DQorDQorICAvLw0K KyAgLy8gTm93IHdyaXRlIHRoZSBNU1Igb24gdGhlIEJTUCB0b28uDQorICAvLw0KKyAgV3JpdGVG ZWF0dXJlQ29udHJvbCAoTlVMTCk7DQorDQorICByZXR1cm4gRUZJX1NVQ0NFU1M7DQorfQ0KKw0K Ky8vDQorLy8gTm90aWZpY2F0aW9uIG9iamVjdCBmb3IgcmVnaXN0ZXJpbmcgdGhlIGNhbGxiYWNr LCBmb3Igd2hlbg0KKy8vIEVGSV9QRUlfTVBfU0VSVklDRVNfUFBJIGJlY29tZXMgYXZhaWxhYmxl Lg0KKy8vDQorU1RBVElDIENPTlNUIEVGSV9QRUlfTk9USUZZX0RFU0NSSVBUT1IgbU1wU2Vydmlj ZXNOb3RpZnkgPSB7DQorICBFRklfUEVJX1BQSV9ERVNDUklQVE9SX05PVElGWV9DQUxMQkFDSyB8 IC8vIEZsYWdzDQorICBFRklfUEVJX1BQSV9ERVNDUklQVE9SX1RFUk1JTkFURV9MSVNULA0KKyAg JmdFZmlQZWlNcFNlcnZpY2VzUHBpR3VpZCwgICAgICAgICAgICAgICAvLyBHdWlkDQorICBPbk1w U2VydmljZXNBdmFpbGFibGUgICAgICAgICAgICAgICAgICAgIC8vIE5vdGlmeQ0KK307DQorDQor Vk9JRA0KK0luc3RhbGxGZWF0dXJlQ29udHJvbENhbGxiYWNrICgNCisgIFZPSUQNCisgICkNCit7 DQorICBFRklfU1RBVFVTICAgICAgICAgICBTdGF0dXM7DQorDQorICBTdGF0dXMgPSBQZWlTZXJ2 aWNlc05vdGlmeVBwaSAoJm1NcFNlcnZpY2VzTm90aWZ5KTsNCisgIGlmIChFRklfRVJST1IgKFN0 YXR1cykpIHsNCisgICAgREVCVUcgKChFRklfRF9FUlJPUiwgIiVhOiBmYWlsZWQgdG8gc2V0IHVw IE1QIFNlcnZpY2VzIGNhbGxiYWNrOiAlclxuIiwNCisgICAgICBfX0ZVTkNUSU9OX18sIFN0YXR1 cykpOw0KKyAgfQ0KK30NCmRpZmYgLS1naXQgYS9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9h cmRQa2cvUGxhdGZvcm1QZWkvRnYuYyBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBr Zy9QbGF0Zm9ybVBlaS9Gdi5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAw MC4uODE4ZDEzNWM5NQ0KLS0tIC9kZXYvbnVsbA0KKysrIGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNz T3BlbkJvYXJkUGtnL1BsYXRmb3JtUGVpL0Z2LmMNCkBAIC0wLDAgKzEsMTAwIEBADQorLyoqIEBm aWxlDQorICBCdWlsZCBGViByZWxhdGVkIGhvYnMgZm9yIHBsYXRmb3JtLg0KKw0KKyAgQ29weXJp Z2h0IChjKSAyMDA2IC0gMjAxMyBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZl ZC4gPEJSPg0KKw0KKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRl bnQNCisqKi8NCisNCisjaW5jbHVkZSAiUGlQZWkuaCINCisjaW5jbHVkZSAiUGxhdGZvcm0uaCIN CisjaW5jbHVkZSA8TGlicmFyeS9EZWJ1Z0xpYi5oPg0KKyNpbmNsdWRlIDxMaWJyYXJ5L0hvYkxp Yi5oPg0KKyNpbmNsdWRlIDxMaWJyYXJ5L1BlaVNlcnZpY2VzTGliLmg+DQorI2luY2x1ZGUgPExp YnJhcnkvUGNkTGliLmg+DQorDQorDQorLyoqDQorICBQdWJsaXNoIFBFSSAmIERYRSAoRGVjb21w cmVzc2VkKSBNZW1vcnkgYmFzZWQgRlZzIHRvIGxldCBQRUkNCisgIGFuZCBEWEUga25vdyBhYm91 dCB0aGVtLg0KKw0KKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgIFBsYXRmb3JtIFBFSSBGVnMgd2Vy ZSBpbml0aWFsaXplZCBzdWNjZXNzZnVsbHkuDQorDQorKiovDQorRUZJX1NUQVRVUw0KK1BlaUZ2 SW5pdGlhbGl6YXRpb24gKA0KKyAgVk9JRA0KKyAgKQ0KK3sNCisgIEJPT0xFQU4gU2VjdXJlUzNO ZWVkZWQ7DQorDQorICBERUJVRyAoKEVGSV9EX0lORk8sICJQbGF0Zm9ybSBQRUkgRmlybXdhcmUg Vm9sdW1lIEluaXRpYWxpemF0aW9uXG4iKSk7DQorDQorICBERUJVRyAoDQorICAgIChFRklfRF9F UlJPUiwgIkZpcm13YXJlIFZvbHVtZSBIT0I6IDB4JXggMHgleFxuIiwNCisgICAgICBQY2RHZXQz MiAoUGNkU2ltaWNzUGVpTWVtRnZCYXNlKSwNCisgICAgICBQY2RHZXQzMiAoUGNkU2ltaWNzUGVp TWVtRnZTaXplKQ0KKyAgICAgICkNCisgICAgKTsNCisgIC8vDQorICAvLyBDcmVhdGUgYSBtZW1v cnkgYWxsb2NhdGlvbiBIT0IgZm9yIHRoZSBQRUkgRlYuDQorICAvLw0KKyAgLy8gQWxsb2NhdGUg YXMgQUNQSSBOVlMgaXMgUzMgaXMgc3VwcG9ydGVkDQorICAvLw0KKyAgQnVpbGRNZW1vcnlBbGxv Y2F0aW9uSG9iICgNCisgICAgUGNkR2V0MzIgKFBjZFNpbWljc1BlaU1lbUZ2QmFzZSksDQorICAg IFBjZEdldDMyIChQY2RTaW1pY3NQZWlNZW1GdlNpemUpLA0KKyAgICBtUzNTdXBwb3J0ZWQgPyBF ZmlBQ1BJTWVtb3J5TlZTIDogRWZpQm9vdFNlcnZpY2VzRGF0YQ0KKyAgICApOw0KKw0KKyAgLy8N CisgIC8vIExldCBEWEUga25vdyBhYm91dCB0aGUgRFhFIEZWDQorICAvLw0KKyAgQnVpbGRGdkhv YiAoUGNkR2V0MzIgKFBjZFNpbWljc0R4ZU1lbUZ2QmFzZSksIFBjZEdldDMyIChQY2RTaW1pY3NE eGVNZW1GdlNpemUpKTsNCisNCisgIFNlY3VyZVMzTmVlZGVkID0gbVMzU3VwcG9ydGVkICYmIEZl YXR1cmVQY2RHZXQgKFBjZFNtbVNtcmFtUmVxdWlyZSk7DQorDQorICAvLw0KKyAgLy8gQ3JlYXRl IGEgbWVtb3J5IGFsbG9jYXRpb24gSE9CIGZvciB0aGUgRFhFIEZWLg0KKyAgLy8NCisgIC8vIElm ICJzZWN1cmUiIFMzIGlzIG5lZWRlZCwgdGhlbiBTRUMgd2lsbCBkZWNvbXByZXNzIGJvdGggUEVJ IGFuZCBEWEUNCisgIC8vIGZpcm13YXJlIHZvbHVtZXMgYXQgUzMgcmVzdW1lIHRvbywgaGVuY2Ug d2UgbmVlZCB0byBrZWVwIGF3YXkgdGhlIE9TIGZyb20NCisgIC8vIERYRUZWIGFzIHdlbGwuIE90 aGVyd2lzZSB3ZSBvbmx5IG5lZWQgdG8ga2VlcCBhd2F5IERYRSBpdHNlbGYgZnJvbSB0aGUNCisg IC8vIERYRUZWIGFyZWEuDQorICAvLw0KKyAgQnVpbGRNZW1vcnlBbGxvY2F0aW9uSG9iICgNCisg ICAgUGNkR2V0MzIgKFBjZFNpbWljc0R4ZU1lbUZ2QmFzZSksDQorICAgIFBjZEdldDMyIChQY2RT aW1pY3NEeGVNZW1GdlNpemUpLA0KKyAgICBTZWN1cmVTM05lZWRlZCA/IEVmaUFDUElNZW1vcnlO VlMgOiBFZmlCb290U2VydmljZXNEYXRhDQorICAgICk7DQorDQorICAvLw0KKyAgLy8gQWRkaXRp b25hbGx5LCBzYWlkIGRlY29tcHJlc3Npb24gd2lsbCB1c2UgdGVtcG9yYXJ5IG1lbW9yeSBhYm92 ZSB0aGUgZW5kDQorICAvLyBvZiBEWEVGViwgc28gbGV0J3Mga2VlcCBhd2F5IHRoZSBPUyBmcm9t IHRoZXJlIHRvby4NCisgIC8vDQorICBpZiAoU2VjdXJlUzNOZWVkZWQpIHsNCisgICAgVUlOVDMy IER4ZU1lbUZ2RW5kOw0KKw0KKyAgICBEeGVNZW1GdkVuZCA9IFBjZEdldDMyIChQY2RTaW1pY3NE eGVNZW1GdkJhc2UpICsNCisgICAgICAgICAgICAgICAgICBQY2RHZXQzMiAoUGNkU2ltaWNzRHhl TWVtRnZTaXplKTsNCisgICAgQnVpbGRNZW1vcnlBbGxvY2F0aW9uSG9iICgNCisgICAgICBEeGVN ZW1GdkVuZCwNCisgICAgICBQY2RHZXQzMiAoUGNkU2ltaWNzRGVjb21wcmVzc2lvblNjcmF0Y2hF bmQpIC0gRHhlTWVtRnZFbmQsDQorICAgICAgRWZpQUNQSU1lbW9yeU5WUw0KKyAgICAgICk7DQor ICB9DQorDQorICAvLw0KKyAgLy8gTGV0IFBFSSBrbm93IGFib3V0IHRoZSBEWEUgRlYgc28gaXQg Y2FuIGZpbmQgdGhlIERYRSBDb3JlDQorICAvLw0KKyAgUGVpU2VydmljZXNJbnN0YWxsRnZJbmZv UHBpICgNCisgICAgTlVMTCwNCisgICAgKFZPSUQgKikoVUlOVE4pIFBjZEdldDMyIChQY2RTaW1p Y3NEeGVNZW1GdkJhc2UpLA0KKyAgICBQY2RHZXQzMiAoUGNkU2ltaWNzRHhlTWVtRnZTaXplKSwN CisgICAgTlVMTCwNCisgICAgTlVMTA0KKyAgICApOw0KKw0KKyAgcmV0dXJuIEVGSV9TVUNDRVNT Ow0KK30NCisNCmRpZmYgLS1naXQgYS9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cv UGxhdGZvcm1QZWkvTWVtRGV0ZWN0LmMgYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQ a2cvUGxhdGZvcm1QZWkvTWVtRGV0ZWN0LmMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAw MDAwMDAwMDAwLi40YzUyN2JhZWYyDQotLS0gL2Rldi9udWxsDQorKysgYi9QbGF0Zm9ybS9JbnRl bC9TaW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1QZWkvTWVtRGV0ZWN0LmMNCkBAIC0wLDAgKzEs NTY4IEBADQorLyoqIEBmaWxlDQorICBNZW1vcnkgRGV0ZWN0aW9uIGZvciBWaXJ0dWFsIE1hY2hp bmVzLg0KKw0KKyAgQ29weXJpZ2h0IChjKSAyMDA2IC0gMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbi4g QWxsIHJpZ2h0cyByZXNlcnZlZC4gPEJSPg0KKw0KKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6 IEJTRC0yLUNsYXVzZS1QYXRlbnQNCisqKi8NCisNCisvLw0KKy8vIFRoZSBwYWNrYWdlIGxldmVs IGhlYWRlciBmaWxlcyB0aGlzIG1vZHVsZSB1c2VzDQorLy8NCisjaW5jbHVkZSA8UGlQZWkuaD4N CisNCisvLw0KKy8vIFRoZSBMaWJyYXJ5IGNsYXNzZXMgdGhpcyBtb2R1bGUgY29uc3VtZXMNCisv Lw0KKyNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VNZW1vcnlMaWIuaD4NCisjaW5jbHVkZSA8TGlicmFy eS9EZWJ1Z0xpYi5oPg0KKyNpbmNsdWRlIDxMaWJyYXJ5L0hvYkxpYi5oPg0KKyNpbmNsdWRlIDxM aWJyYXJ5L0lvTGliLmg+DQorI2luY2x1ZGUgPExpYnJhcnkvUGNkTGliLmg+DQorI2luY2x1ZGUg PExpYnJhcnkvUGVpbUVudHJ5UG9pbnQuaD4NCisjaW5jbHVkZSA8TGlicmFyeS9SZXNvdXJjZVB1 YmxpY2F0aW9uTGliLmg+DQorI2luY2x1ZGUgPExpYnJhcnkvTXRyckxpYi5oPg0KKyNpbmNsdWRl IDxTaW1pY3NQbGF0Zm9ybXMuaD4NCisjaW5jbHVkZSA8R3VpZC9TbXJhbU1lbW9yeVJlc2VydmUu aD4NCisNCisjaW5jbHVkZSAiUGxhdGZvcm0uaCINCisjaW5jbHVkZSAiQ21vcy5oIg0KKw0KK1VJ TlQ4IG1QaHlzTWVtQWRkcmVzc1dpZHRoOw0KKw0KK1NUQVRJQyBVSU5UMzIgbVMzQWNwaVJlc2Vy dmVkTWVtb3J5QmFzZTsNCitTVEFUSUMgVUlOVDMyIG1TM0FjcGlSZXNlcnZlZE1lbW9yeVNpemU7 DQorDQorU1RBVElDIFVJTlQxNiBtWDU4VHNlZ01ieXRlczsNCisNCitWT0lEDQorWDU4VHNlZ01i eXRlc0luaXRpYWxpemF0aW9uKA0KKyAgVk9JRA0KKykNCit7DQorDQorICBpZiAobUhvc3RCcmlk Z2VEZXZJZCAhPSBJTlRFTF9JQ0gxMF9ERVZJQ0VfSUQpIHsNCisgICAgREVCVUcgKCgNCisgICAg ICBERUJVR19FUlJPUiwNCisgICAgICAiJWE6IG5vIFRTRUcgKFNNUkFNKSBvbiBob3N0IGJyaWRn ZSBESUQ9MHglMDR4OyAiDQorICAgICAgIm9ubHkgRElEPTB4JTA0eCAoWDU4KSBpcyBzdXBwb3J0 ZWRcbiIsDQorICAgICAgX19GVU5DVElPTl9fLA0KKyAgICAgIG1Ib3N0QnJpZGdlRGV2SWQsDQor ICAgICAgSU5URUxfSUNIMTBfREVWSUNFX0lEDQorICAgICAgKSk7DQorICAgIEFTU0VSVCAoRkFM U0UpOw0KKyAgICBDcHVEZWFkTG9vcCAoKTsNCisgIH0NCisNCisgIC8vDQorICAvLyBDaGVjayBp ZiBRRU1VIG9mZmVycyBhbiBleHRlbmRlZCBUU0VHLg0KKyAgLy8NCisgIC8vIFRoaXMgY2FuIGJl IHNlZW4gZnJvbSB3cml0aW5nIE1DSF9FWFRfVFNFR19NQl9RVUVSWSB0byB0aGUgTUNIX0VYVF9U U0VHX01CDQorICAvLyByZWdpc3RlciwgYW5kIHJlYWRpbmcgYmFjayB0aGUgcmVnaXN0ZXIuDQor ICAvLw0KKyAgLy8gT24gYSBRRU1VIG1hY2hpbmUgdHlwZSB0aGF0IGRvZXMgbm90IG9mZmVyIGFu IGV4dGVuZGVkIFRTRUcsIHRoZSBpbml0aWFsDQorICAvLyB3cml0ZSBvdmVyd3JpdGVzIHdoYXRl dmVyIHZhbHVlIGEgbWFsaWNpb3VzIGd1ZXN0IE9TIG1heSBoYXZlIHBsYWNlZCBpbg0KKyAgLy8g dGhlICh1bmltcGxlbWVudGVkKSByZWdpc3RlciwgYmVmb3JlIGVudGVyaW5nIFMzIG9yIHJlYm9v dGluZy4NCisgIC8vIFN1YnNlcXVlbnRseSwgdGhlIHJlYWQgcmV0dXJucyBNQ0hfRVhUX1RTRUdf TUJfUVVFUlkgdW5jaGFuZ2VkLg0KKyAgLy8NCisgIC8vIE9uIGEgUUVNVSBtYWNoaW5lIHR5cGUg dGhhdCBvZmZlcnMgYW4gZXh0ZW5kZWQgVFNFRywgdGhlIGluaXRpYWwgd3JpdGUNCisgIC8vIHRy aWdnZXJzIGFuIHVwZGF0ZSB0byB0aGUgcmVnaXN0ZXIuIFN1YnNlcXVlbnRseSwgdGhlIHZhbHVl IHJlYWQgYmFjaw0KKyAgLy8gKHdoaWNoIGlzIGd1YXJhbnRlZWQgdG8gZGlmZmVyIGZyb20gTUNI X0VYVF9UU0VHX01CX1FVRVJZKSB0ZWxscyB1cyB0aGUNCisgIC8vIG51bWJlciBvZiBtZWdhYnl0 ZXMuDQorICAvLw0KKyAgbVg1OFRzZWdNYnl0ZXMgPSBGaXhlZFBjZEdldDgoUGNkWDU4VHNlZ01i eXRlcyk7DQorICByZXR1cm47DQorfQ0KKw0KKw0KK1VJTlQzMg0KK0dldFN5c3RlbU1lbW9yeVNp emVCZWxvdzRnYiAoDQorICBWT0lEDQorICApDQorew0KKyAgVUlOVDggQ21vczB4MzQ7DQorICBV SU5UOCBDbW9zMHgzNTsNCisNCisgIC8vDQorICAvLyBDTU9TIDB4MzQvMHgzNSBzcGVjaWZpZXMg dGhlIHN5c3RlbSBtZW1vcnkgYWJvdmUgMTYgTUIuDQorICAvLyAqIENNT1MoMHgzNSkgaXMgdGhl IGhpZ2ggYnl0ZQ0KKyAgLy8gKiBDTU9TKDB4MzQpIGlzIHRoZSBsb3cgYnl0ZQ0KKyAgLy8gKiBU aGUgc2l6ZSBpcyBzcGVjaWZpZWQgaW4gNjRrYiBjaHVua3MNCisgIC8vICogU2luY2UgdGhpcyBp cyBtZW1vcnkgYWJvdmUgMTZNQiwgdGhlIDE2TUIgbXVzdCBiZSBhZGRlZA0KKyAgLy8gICBpbnRv IHRoZSBjYWxjdWxhdGlvbiB0byBnZXQgdGhlIHRvdGFsIG1lbW9yeSBzaXplLg0KKyAgLy8NCisN CisgIENtb3MweDM0ID0gKFVJTlQ4KSBDbW9zUmVhZDggKDB4MzQpOw0KKyAgQ21vczB4MzUgPSAo VUlOVDgpIENtb3NSZWFkOCAoMHgzNSk7DQorDQorICByZXR1cm4gKFVJTlQzMikgKCgoVUlOVE4p KChDbW9zMHgzNSA8PCA4KSArIENtb3MweDM0KSA8PCAxNikgKyBTSVpFXzE2TUIpOw0KK30NCisN CisNCitTVEFUSUMNCitVSU5UNjQNCitHZXRTeXN0ZW1NZW1vcnlTaXplQWJvdmU0Z2IgKA0KKyAg KQ0KK3sNCisgIFVJTlQzMiBTaXplOw0KKyAgVUlOVE4gIENtb3NJbmRleDsNCisNCisgIC8vDQor ICAvLyBDTU9TIDB4NWItMHg1ZCBzcGVjaWZpZXMgdGhlIHN5c3RlbSBtZW1vcnkgYWJvdmUgNEdC IE1CLg0KKyAgLy8gKiBDTU9TKDB4NWQpIGlzIHRoZSBtb3N0IHNpZ25pZmljYW50IHNpemUgYnl0 ZQ0KKyAgLy8gKiBDTU9TKDB4NWMpIGlzIHRoZSBtaWRkbGUgc2l6ZSBieXRlDQorICAvLyAqIENN T1MoMHg1YikgaXMgdGhlIGxlYXN0IHNpZ25pZmljYW50IHNpemUgYnl0ZQ0KKyAgLy8gKiBUaGUg c2l6ZSBpcyBzcGVjaWZpZWQgaW4gNjRrYiBjaHVua3MNCisgIC8vDQorDQorICBTaXplID0gMDsN CisgIGZvciAoQ21vc0luZGV4ID0gMHg1ZDsgQ21vc0luZGV4ID49IDB4NWI7IENtb3NJbmRleC0t KSB7DQorICAgIFNpemUgPSAoVUlOVDMyKSAoU2l6ZSA8PCA4KSArIChVSU5UMzIpIENtb3NSZWFk OCAoQ21vc0luZGV4KTsNCisgIH0NCisNCisgIHJldHVybiBMU2hpZnRVNjQgKFNpemUsIDE2KTsN Cit9DQorDQorDQorLyoqDQorICBSZXR1cm4gdGhlIGhpZ2hlc3QgYWRkcmVzcyB0aGF0IERYRSBj b3VsZCBwb3NzaWJseSB1c2UsIHBsdXMgb25lLg0KKyoqLw0KK1NUQVRJQw0KK1VJTlQ2NA0KK0dl dEZpcnN0Tm9uQWRkcmVzcyAoDQorICBWT0lEDQorICApDQorew0KKyAgVUlOVDY0ICAgICAgICAg ICAgICAgRmlyc3ROb25BZGRyZXNzOw0KKyAgVUlOVDY0ICAgICAgICAgICAgICAgUGNpNjRCYXNl LCBQY2k2NFNpemU7DQorDQorICBGaXJzdE5vbkFkZHJlc3MgPSBCQVNFXzRHQiArIEdldFN5c3Rl bU1lbW9yeVNpemVBYm92ZTRnYiAoKTsNCisNCisgIC8vDQorICAvLyBJZiBEWEUgaXMgMzItYml0 LCB0aGVuIHdlJ3JlIGRvbmU7IFBjaUJ1c0R4ZSB3aWxsIGRlZ3JhZGUgNjQtYml0IE1NSU8NCisg IC8vIHJlc291cmNlcyB0byAzMi1iaXQgYW55d2F5LiBTZWUgRGVncmFkZVJlc291cmNlKCkgaW4N CisgIC8vICJQY2lSZXNvdXJjZVN1cHBvcnQuYyIuDQorICAvLw0KKyNpZmRlZiBNREVfQ1BVX0lB MzINCisgIGlmICghRmVhdHVyZVBjZEdldCAoUGNkRHhlSXBsU3dpdGNoVG9Mb25nTW9kZSkpIHsN CisgICAgcmV0dXJuIEZpcnN0Tm9uQWRkcmVzczsNCisgIH0NCisjZW5kaWYNCisNCisgIC8vDQor ICAvLyBPdGhlcndpc2UsIGluIG9yZGVyIHRvIGNhbGN1bGF0ZSB0aGUgaGlnaGVzdCBhZGRyZXNz IHBsdXMgb25lLCB3ZSBtdXN0DQorICAvLyBjb25zaWRlciB0aGUgNjQtYml0IFBDSSBob3N0IGFw ZXJ0dXJlIHRvby4gRmV0Y2ggdGhlIGRlZmF1bHQgc2l6ZS4NCisgIC8vDQorICBQY2k2NFNpemUg PSBQY2RHZXQ2NCAoUGNkUGNpTW1pbzY0U2l6ZSk7DQorDQorICBpZiAoUGNpNjRTaXplID09IDAp IHsNCisgICAgaWYgKG1Cb290TW9kZSAhPSBCT09UX09OX1MzX1JFU1VNRSkgew0KKyAgICAgIERF QlVHICgoRUZJX0RfSU5GTywgIiVhOiBkaXNhYmxpbmcgNjQtYml0IFBDSSBob3N0IGFwZXJ0dXJl XG4iLA0KKyAgICAgICAgX19GVU5DVElPTl9fKSk7DQorICAgICAgUGNkU2V0NjQgKFBjZFBjaU1t aW82NFNpemUsIDApOw0KKyAgICB9DQorDQorICAgIC8vDQorICAgIC8vIFRoZXJlJ3Mgbm90aGlu ZyBtb3JlIHRvIGRvOyB0aGUgYW1vdW50IG9mIG1lbW9yeSBhYm92ZSA0R0IgZnVsbHkNCisgICAg Ly8gZGV0ZXJtaW5lcyB0aGUgaGlnaGVzdCBhZGRyZXNzIHBsdXMgb25lLiBUaGUgbWVtb3J5IGhv dHBsdWcgYXJlYSAoc2VlDQorICAgIC8vIGJlbG93KSBwbGF5cyBubyByb2xlIGZvciB0aGUgZmly bXdhcmUgaW4gdGhpcyBjYXNlLg0KKyAgICAvLw0KKyAgICByZXR1cm4gRmlyc3ROb25BZGRyZXNz Ow0KKyAgfQ0KKw0KKyAgLy8NCisgIC8vIFNlYUJJT1MgYWxpZ25zIGJvdGggYm91bmRhcmllcyBv ZiB0aGUgNjQtYml0IFBDSSBob3N0IGFwZXJ0dXJlIHRvIDFHQiwgc28NCisgIC8vIHRoYXQgdGhl IGhvc3QgY2FuIG1hcCBpdCB3aXRoIDFHQiBodWdlcGFnZXMuIEZvbGxvdyBzdWl0Lg0KKyAgLy8N CisgIFBjaTY0QmFzZSA9IEFMSUdOX1ZBTFVFIChGaXJzdE5vbkFkZHJlc3MsIChVSU5UNjQpU0la RV8xR0IpOw0KKyAgUGNpNjRTaXplID0gQUxJR05fVkFMVUUgKFBjaTY0U2l6ZSwgKFVJTlQ2NClT SVpFXzFHQik7DQorDQorICAvLw0KKyAgLy8gVGhlIDY0LWJpdCBQQ0kgaG9zdCBhcGVydHVyZSBz aG91bGQgYWxzbyBiZSAibmF0dXJhbGx5IiBhbGlnbmVkLiBUaGUNCisgIC8vIGFsaWdubWVudCBp cyBkZXRlcm1pbmVkIGJ5IHJvdW5kaW5nIHRoZSBzaXplIG9mIHRoZSBhcGVydHVyZSBkb3duIHRv IHRoZQ0KKyAgLy8gbmV4dCBzbWFsbGVyIG9yIGVxdWFsIHBvd2VyIG9mIHR3by4gVGhhdCBpcywg YWxpZ24gdGhlIGFwZXJ0dXJlIGJ5IHRoZQ0KKyAgLy8gbGFyZ2VzdCBCQVIgc2l6ZSB0aGF0IGNh biBmaXQgaW50byBpdC4NCisgIC8vDQorICBQY2k2NEJhc2UgPSBBTElHTl9WQUxVRSAoUGNpNjRC YXNlLCBHZXRQb3dlck9mVHdvNjQgKFBjaTY0U2l6ZSkpOw0KKw0KKyAgaWYgKG1Cb290TW9kZSAh PSBCT09UX09OX1MzX1JFU1VNRSkgew0KKyAgICAvLw0KKyAgICAvLyBUaGUgY29yZSBQY2lIb3N0 QnJpZGdlRHhlIGRyaXZlciB3aWxsIGF1dG9tYXRpY2FsbHkgYWRkIHRoaXMgcmFuZ2UgdG8NCisg ICAgLy8gdGhlIEdDRCBtZW1vcnkgc3BhY2UgbWFwIHRocm91Z2ggb3VyIFBjaUhvc3RCcmlkZ2VM aWIgaW5zdGFuY2U7IGhlcmUgd2UNCisgICAgLy8gb25seSBuZWVkIHRvIHNldCB0aGUgUENEcy4N CisgICAgLy8NCisgICAgUGNkU2V0NjQgKFBjZFBjaU1taW82NEJhc2UsIFBjaTY0QmFzZSk7DQor ICAgIFBjZFNldDY0IChQY2RQY2lNbWlvNjRTaXplLCBQY2k2NFNpemUpOw0KKyAgICBERUJVRyAo KEVGSV9EX0lORk8sICIlYTogUGNpNjRCYXNlPTB4JUx4IFBjaTY0U2l6ZT0weCVMeFxuIiwNCisg ICAgICBfX0ZVTkNUSU9OX18sIFBjaTY0QmFzZSwgUGNpNjRTaXplKSk7DQorICB9DQorDQorICAv Lw0KKyAgLy8gVGhlIHVzZWZ1bCBhZGRyZXNzIHNwYWNlIGVuZHMgd2l0aCB0aGUgNjQtYml0IFBD SSBob3N0IGFwZXJ0dXJlLg0KKyAgLy8NCisgIEZpcnN0Tm9uQWRkcmVzcyA9IFBjaTY0QmFzZSAr IFBjaTY0U2l6ZTsNCisgIHJldHVybiBGaXJzdE5vbkFkZHJlc3M7DQorfQ0KKw0KKw0KKy8qKg0K KyAgSW5pdGlhbGl6ZSB0aGUgbVBoeXNNZW1BZGRyZXNzV2lkdGggdmFyaWFibGUsIGJhc2VkIG9u IGd1ZXN0IFJBTSBzaXplLg0KKyoqLw0KK1ZPSUQNCitBZGRyZXNzV2lkdGhJbml0aWFsaXphdGlv biAoDQorICBWT0lEDQorICApDQorew0KKyAgVUlOVDY0IEZpcnN0Tm9uQWRkcmVzczsNCisNCisg IC8vDQorICAvLyBBcyBndWVzdC1waHlzaWNhbCBtZW1vcnkgc2l6ZSBncm93cywgdGhlIHBlcm1h bmVudCBQRUkgUkFNIHJlcXVpcmVtZW50cw0KKyAgLy8gYXJlIGRvbWluYXRlZCBieSB0aGUgaWRl bnRpdHktbWFwcGluZyBwYWdlIHRhYmxlcyBidWlsdCBieSB0aGUgRFhFIElQTC4NCisgIC8vIFRo ZSBEWEwgSVBMIGtleXMgb2ZmIG9mIHRoZSBwaHlzaWNhbCBhZGRyZXNzIGJpdHMgYWR2ZXJ0aXpl ZCBpbiB0aGUgQ1BVDQorICAvLyBIT0IuIFRvIGNvbnNlcnZlIG1lbW9yeSwgd2UgY2FsY3VsYXRl IHRoZSBtaW5pbXVtIGFkZHJlc3Mgd2lkdGggaGVyZS4NCisgIC8vDQorICBGaXJzdE5vbkFkZHJl c3MgICAgICA9IEdldEZpcnN0Tm9uQWRkcmVzcyAoKTsNCisgIG1QaHlzTWVtQWRkcmVzc1dpZHRo ID0gKFVJTlQ4KUhpZ2hCaXRTZXQ2NCAoRmlyc3ROb25BZGRyZXNzKTsNCisNCisgIC8vDQorICAv LyBJZiBGaXJzdE5vbkFkZHJlc3MgaXMgbm90IGFuIGludGVncmFsIHBvd2VyIG9mIHR3bywgdGhl biB3ZSBuZWVkIGFuDQorICAvLyBhZGRpdGlvbmFsIGJpdC4NCisgIC8vDQorICBpZiAoKEZpcnN0 Tm9uQWRkcmVzcyAmIChGaXJzdE5vbkFkZHJlc3MgLSAxKSkgIT0gMCkgew0KKyAgICArK21QaHlz TWVtQWRkcmVzc1dpZHRoOw0KKyAgfQ0KKw0KKyAgLy8NCisgIC8vIFRoZSBtaW5pbXVtIGFkZHJl c3Mgd2lkdGggaXMgMzYgKGNvdmVycyB1cCB0byBhbmQgZXhjbHVkaW5nIDY0IEdCLCB3aGljaA0K KyAgLy8gaXMgdGhlIG1heGltdW0gZm9yIElhMzIgKyBQQUUpLiBUaGUgdGhlb3JldGljYWwgYXJj aGl0ZWN0dXJlIG1heGltdW0gZm9yDQorICAvLyBYNjQgbG9uZyBtb2RlIGlzIDUyIGJpdHMsIGJ1 dCB0aGUgRFhFIElQTCBjbGFtcHMgdGhhdCBkb3duIHRvIDQ4IGJpdHMuIFdlDQorICAvLyBjYW4g c2ltcGx5IGFzc2VydCB0aGF0IGhlcmUsIHNpbmNlIDQ4IGJpdHMgYXJlIGdvb2QgZW5vdWdoIGZv ciAyNTYgVEIuDQorICAvLw0KKyAgaWYgKG1QaHlzTWVtQWRkcmVzc1dpZHRoIDw9IDM2KSB7DQor ICAgIG1QaHlzTWVtQWRkcmVzc1dpZHRoID0gMzY7DQorICB9DQorICBBU1NFUlQgKG1QaHlzTWVt QWRkcmVzc1dpZHRoIDw9IDQ4KTsNCit9DQorDQorDQorLyoqDQorICBDYWxjdWxhdGUgdGhlIGNh cCBmb3IgdGhlIHBlcm1hbmVudCBQRUkgbWVtb3J5Lg0KKyoqLw0KK1NUQVRJQw0KK1VJTlQzMg0K K0dldFBlaU1lbW9yeUNhcCAoDQorICBWT0lEDQorICApDQorew0KKyAgQk9PTEVBTiBQYWdlMUdT dXBwb3J0Ow0KKyAgVUlOVDMyICBSZWdFYXg7DQorICBVSU5UMzIgIFJlZ0VkeDsNCisgIFVJTlQz MiAgUG1sNEVudHJpZXM7DQorICBVSU5UMzIgIFBkcEVudHJpZXM7DQorICBVSU5UTiAgIFRvdGFs UGFnZXM7DQorDQorICAvLw0KKyAgLy8gSWYgRFhFIGlzIDMyLWJpdCwgdGhlbiBqdXN0IHJldHVy biB0aGUgdHJhZGl0aW9uYWwgNjQgTUIgY2FwLg0KKyAgLy8NCisjaWZkZWYgTURFX0NQVV9JQTMy DQorICBpZiAoIUZlYXR1cmVQY2RHZXQgKFBjZER4ZUlwbFN3aXRjaFRvTG9uZ01vZGUpKSB7DQor ICAgIHJldHVybiBTSVpFXzY0TUI7DQorICB9DQorI2VuZGlmDQorDQorICAvLw0KKyAgLy8gRGVw ZW5kZW50IG9uIHBoeXNpY2FsIGFkZHJlc3Mgd2lkdGgsIFBFSSBtZW1vcnkgYWxsb2NhdGlvbnMg Y2FuIGJlDQorICAvLyBkb21pbmF0ZWQgYnkgdGhlIHBhZ2UgdGFibGVzIGJ1aWx0IGZvciA2NC1i aXQgRFhFLiBTbyB3ZSBrZXkgdGhlIGNhcCBvZmYNCisgIC8vIG9mIHRob3NlLiBUaGUgY29kZSBi ZWxvdyBpcyBiYXNlZCBvbiBDcmVhdGVJZGVudGl0eU1hcHBpbmdQYWdlVGFibGVzKCkgaW4NCisg IC8vICJNZGVNb2R1bGVQa2cvQ29yZS9EeGVJcGxQZWltL1g2NC9WaXJ0dWFsTWVtb3J5LmMiLg0K KyAgLy8NCisgIFBhZ2UxR1N1cHBvcnQgPSBGQUxTRTsNCisgIGlmIChQY2RHZXRCb29sIChQY2RV c2UxR1BhZ2VUYWJsZSkpIHsNCisgICAgQXNtQ3B1aWQgKDB4ODAwMDAwMDAsICZSZWdFYXgsIE5V TEwsIE5VTEwsIE5VTEwpOw0KKyAgICBpZiAoUmVnRWF4ID49IDB4ODAwMDAwMDEpIHsNCisgICAg ICBBc21DcHVpZCAoMHg4MDAwMDAwMSwgTlVMTCwgTlVMTCwgTlVMTCwgJlJlZ0VkeCk7DQorICAg ICAgaWYgKChSZWdFZHggJiBCSVQyNikgIT0gMCkgew0KKyAgICAgICAgUGFnZTFHU3VwcG9ydCA9 IFRSVUU7DQorICAgICAgfQ0KKyAgICB9DQorICB9DQorDQorICBpZiAobVBoeXNNZW1BZGRyZXNz V2lkdGggPD0gMzkpIHsNCisgICAgUG1sNEVudHJpZXMgPSAxOw0KKyAgICBQZHBFbnRyaWVzID0g MSA8PCAobVBoeXNNZW1BZGRyZXNzV2lkdGggLSAzMCk7DQorICAgIEFTU0VSVCAoUGRwRW50cmll cyA8PSAweDIwMCk7DQorICB9IGVsc2Ugew0KKyAgICBQbWw0RW50cmllcyA9IDEgPDwgKG1QaHlz TWVtQWRkcmVzc1dpZHRoIC0gMzkpOw0KKyAgICBBU1NFUlQgKFBtbDRFbnRyaWVzIDw9IDB4MjAw KTsNCisgICAgUGRwRW50cmllcyA9IDUxMjsNCisgIH0NCisNCisgIFRvdGFsUGFnZXMgPSBQYWdl MUdTdXBwb3J0ID8gUG1sNEVudHJpZXMgKyAxIDoNCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKFBkcEVudHJpZXMgKyAxKSAqIFBtbDRFbnRyaWVzICsgMTsNCisgIEFTU0VSVCAoVG90 YWxQYWdlcyA8PSAweDQwMjAxKTsNCisNCisgIC8vDQorICAvLyBBZGQgNjQgTUIgZm9yIG1pc2Nl bGxhbmVvdXMgYWxsb2NhdGlvbnMuIE5vdGUgdGhhdCBmb3INCisgIC8vIG1QaHlzTWVtQWRkcmVz c1dpZHRoIHZhbHVlcyBjbG9zZSB0byAzNiwgdGhlIGNhcCB3aWxsIGFjdHVhbGx5IGJlDQorICAv LyBkb21pbmF0ZWQgYnkgdGhpcyBpbmNyZW1lbnQuDQorICAvLw0KKyAgcmV0dXJuIChVSU5UMzIp KEVGSV9QQUdFU19UT19TSVpFIChUb3RhbFBhZ2VzKSArIFNJWkVfNjRNQik7DQorfQ0KKw0KKw0K Ky8qKg0KKyAgUHVibGlzaCBQRUkgY29yZSBtZW1vcnkNCisNCisgIEByZXR1cm4gRUZJX1NVQ0NF U1MgICAgIFRoZSBQRUlNIGluaXRpYWxpemVkIHN1Y2Nlc3NmdWxseS4NCisNCisqKi8NCitFRklf U1RBVFVTDQorUHVibGlzaFBlaU1lbW9yeSAoDQorICBWT0lEDQorICApDQorew0KKyAgRUZJX1NU QVRVUyAgICAgICAgICAgICAgICAgIFN0YXR1czsNCisgIEVGSV9QSFlTSUNBTF9BRERSRVNTICAg ICAgICBNZW1vcnlCYXNlOw0KKyAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICAgIE1lbW9yeVNp emU7DQorICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgTG93ZXJNZW1vcnlTaXplOw0KKyAg VUlOVDMyICAgICAgICAgICAgICAgICAgICAgIFBlaU1lbW9yeUNhcDsNCisNCisgIExvd2VyTWVt b3J5U2l6ZSA9IEdldFN5c3RlbU1lbW9yeVNpemVCZWxvdzRnYiAoKTsNCisgIGlmIChGZWF0dXJl UGNkR2V0IChQY2RTbW1TbXJhbVJlcXVpcmUpKSB7DQorICAgIC8vDQorICAgIC8vIFRTRUcgaXMg Y2hpcHBlZCBmcm9tIHRoZSBlbmQgb2YgbG93IFJBTQ0KKyAgICAvLw0KKyAgICBMb3dlck1lbW9y eVNpemUgLT0gbVg1OFRzZWdNYnl0ZXMgKiBTSVpFXzFNQjsNCisgIH0NCisNCisgIC8vDQorICAv LyBJZiBTMyBpcyBzdXBwb3J0ZWQsIHRoZW4gdGhlIFMzIHBlcm1hbmVudCBQRUkgbWVtb3J5IGlz IHBsYWNlZCBuZXh0LA0KKyAgLy8gZG93bndhcmRzLiBJdHMgc2l6ZSBpcyBwcmltYXJpbHkgZGlj dGF0ZWQgYnkgQ3B1TXBQZWkuIFRoZSBmb3JtdWxhIGJlbG93DQorICAvLyBpcyBhbiBhcHByb3hp bWF0aW9uLg0KKyAgLy8NCisgIGlmIChtUzNTdXBwb3J0ZWQpIHsNCisgICAgbVMzQWNwaVJlc2Vy dmVkTWVtb3J5U2l6ZSA9IFNJWkVfNTEyS0IgKw0KKyAgICAgIG1NYXhDcHVDb3VudCAqDQorICAg ICAgUGNkR2V0MzIgKFBjZENwdUFwU3RhY2tTaXplKTsNCisgICAgbVMzQWNwaVJlc2VydmVkTWVt b3J5QmFzZSA9IExvd2VyTWVtb3J5U2l6ZSAtIG1TM0FjcGlSZXNlcnZlZE1lbW9yeVNpemU7DQor ICAgIExvd2VyTWVtb3J5U2l6ZSA9IG1TM0FjcGlSZXNlcnZlZE1lbW9yeUJhc2U7DQorICB9DQor DQorICBpZiAobUJvb3RNb2RlID09IEJPT1RfT05fUzNfUkVTVU1FKSB7DQorICAgIE1lbW9yeUJh c2UgPSBtUzNBY3BpUmVzZXJ2ZWRNZW1vcnlCYXNlOw0KKyAgICBNZW1vcnlTaXplID0gbVMzQWNw aVJlc2VydmVkTWVtb3J5U2l6ZTsNCisgIH0gZWxzZSB7DQorICAgIFBlaU1lbW9yeUNhcCA9IEdl dFBlaU1lbW9yeUNhcCAoKTsNCisgICAgREVCVUcgKChFRklfRF9JTkZPLCAiJWE6IG1QaHlzTWVt QWRkcmVzc1dpZHRoPSVkIFBlaU1lbW9yeUNhcD0ldSBLQlxuIiwNCisgICAgICBfX0ZVTkNUSU9O X18sIG1QaHlzTWVtQWRkcmVzc1dpZHRoLCBQZWlNZW1vcnlDYXAgPj4gMTApKTsNCisNCisgICAg Ly8NCisgICAgLy8gRGV0ZXJtaW5lIHRoZSByYW5nZSBvZiBtZW1vcnkgdG8gdXNlIGR1cmluZyBQ RUkNCisgICAgLy8NCisgICAgLy8gVGVjaG5pY2FsbHkgd2UgY291bGQgbGF5IHRoZSBwZXJtYW5l bnQgUEVJIFJBTSBvdmVyIFNFQydzIHRlbXBvcmFyeQ0KKyAgICAvLyBkZWNvbXByZXNzaW9uIGFu ZCBzY3JhdGNoIGJ1ZmZlciBldmVuIGlmICJzZWN1cmUgUzMiIGlzIG5lZWRlZCwgc2luY2UNCisg ICAgLy8gdGhlaXIgbGlmZXRpbWVzIGRvbid0IG92ZXJsYXAuIEhvd2V2ZXIsIFBlaUZ2SW5pdGlh bGl6YXRpb24oKSB3aWxsIGNvdmVyDQorICAgIC8vIFJBTSB1cCB0byBQY2RPdm1mRGVjb21wcmVz c2lvblNjcmF0Y2hFbmQgd2l0aCBhbiBFZmlBQ1BJTWVtb3J5TlZTIG1lbW9yeQ0KKyAgICAvLyBh bGxvY2F0aW9uIEhPQiwgYW5kIG90aGVyIGFsbG9jYXRpb25zIHNlcnZlZCBmcm9tIHRoZSBwZXJt YW5lbnQgUEVJIFJBTQ0KKyAgICAvLyBzaG91bGRuJ3Qgb3ZlcmxhcCB3aXRoIHRoYXQgSE9CLg0K KyAgICAvLw0KKyAgICBNZW1vcnlCYXNlID0gbVMzU3VwcG9ydGVkICYmIEZlYXR1cmVQY2RHZXQg KFBjZFNtbVNtcmFtUmVxdWlyZSkgPw0KKyAgICAgIFBjZEdldDMyIChQY2RTaW1pY3NEZWNvbXBy ZXNzaW9uU2NyYXRjaEVuZCkgOg0KKyAgICAgIFBjZEdldDMyIChQY2RTaW1pY3NEeGVNZW1GdkJh c2UpICsgUGNkR2V0MzIgKFBjZFNpbWljc0R4ZU1lbUZ2U2l6ZSk7DQorICAgIE1lbW9yeVNpemUg PSBMb3dlck1lbW9yeVNpemUgLSBNZW1vcnlCYXNlOw0KKyAgfQ0KKyAgREVCVUcoKEVGSV9EX0lO Rk8sICJNZW1vcnlCYXNlPTB4JWx4IE1lbW9yeVNpemU9MHglbHhcbiIsIE1lbW9yeUJhc2UsIE1l bW9yeVNpemUpKTsNCisgIC8vDQorICAvLyBQdWJsaXNoIHRoaXMgbWVtb3J5IHRvIHRoZSBQRUkg Q29yZQ0KKyAgLy8NCisgIFN0YXR1cyA9IFB1Ymxpc2hTeXN0ZW1NZW1vcnkoTWVtb3J5QmFzZSwg TWVtb3J5U2l6ZSk7DQorICBBU1NFUlRfRUZJX0VSUk9SIChTdGF0dXMpOw0KKw0KKyAgcmV0dXJu IFN0YXR1czsNCit9DQorDQorDQorLyoqDQorICBQZWZvcm0gTWVtb3J5IERldGVjdGlvbiBmb3Ig UUVNVSAvIEtWTQ0KKw0KKyoqLw0KK1NUQVRJQw0KK1ZPSUQNCitRZW11SW5pdGlhbGl6ZVJhbSAo DQorICBWT0lEDQorICApDQorew0KKyAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIExvd2VyTWVtb3J5U2l6ZTsNCisgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBVcHBlck1lbW9yeVNpemU7DQorICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEJ1ZmZlclNpemU7DQorICBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFNtcmFtSW5kZXg7DQorICBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFNtcmFtUmFuZ2VzOw0KKyAgRUZJX1BFSV9IT0JfUE9JTlRFUlMgICAgICAgICAgICAgICAgICBI b2I7DQorICBFRklfU01SQU1fSE9CX0RFU0NSSVBUT1JfQkxPQ0sgICAgICAgICpTbXJhbUhvYkRl c2NyaXB0b3JCbG9jazsNCisgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg SW5kZXg7DQorDQorICBERUJVRyAoKEVGSV9EX0lORk8sICIlYSBjYWxsZWRcbiIsIF9fRlVOQ1RJ T05fXykpOw0KKw0KKyAgLy8NCisgIC8vIERldGVybWluZSB0b3RhbCBtZW1vcnkgc2l6ZSBhdmFp bGFibGUNCisgIC8vDQorICBMb3dlck1lbW9yeVNpemUgPSBHZXRTeXN0ZW1NZW1vcnlTaXplQmVs b3c0Z2IgKCk7DQorICBVcHBlck1lbW9yeVNpemUgPSBHZXRTeXN0ZW1NZW1vcnlTaXplQWJvdmU0 Z2IgKCk7DQorDQorICBpZiAobUJvb3RNb2RlID09IEJPT1RfT05fUzNfUkVTVU1FKSB7DQorICAg IC8vDQorICAgIC8vIENyZWF0ZSB0aGUgZm9sbG93aW5nIG1lbW9yeSBIT0IgYXMgYW4gZXhjZXB0 aW9uIG9uIHRoZSBTMyBib290IHBhdGguDQorICAgIC8vDQorICAgIC8vIE5vcm1hbGx5IHdlJ2Qg Y3JlYXRlIG1lbW9yeSBIT0JzIG9ubHkgb24gdGhlIG5vcm1hbCBib290IHBhdGguIEhvd2V2ZXIs DQorICAgIC8vIENwdU1wUGVpIHNwZWNpZmljYWxseSBuZWVkcyBzdWNoIGEgbG93LW1lbW9yeSBI T0Igb24gdGhlIFMzIHBhdGggYXMNCisgICAgLy8gd2VsbCwgZm9yICJib3Jyb3dpbmciIGEgc3Vi c2V0IG9mIGl0IHRlbXBvcmFyaWx5LCBmb3IgdGhlIEFQIHN0YXJ0dXANCisgICAgLy8gdmVjdG9y Lg0KKyAgICAvLw0KKyAgICAvLyBDcHVNcFBlaSBzYXZlcyB0aGUgb3JpZ2luYWwgY29udGVudHMg b2YgdGhlIGJvcnJvd2VkIGFyZWEgaW4gcGVybWFuZW50DQorICAgIC8vIFBFSSBSQU0sIGluIGEg YmFja3VwIGJ1ZmZlciBhbGxvY2F0ZWQgd2l0aCB0aGUgbm9ybWFsIFBFSSBzZXJ2aWNlcy4NCisg ICAgLy8gQ3B1TXBQZWkgcmVzdG9yZXMgdGhlIG9yaWdpbmFsIGNvbnRlbnRzICgicmV0dXJucyIg dGhlIGJvcnJvd2VkIGFyZWEpIGF0DQorICAgIC8vIEVuZC1vZi1QRUkuIEVuZC1vZi1QRUkgaW4g dHVybiBpcyBlbWl0dGVkIGJ5IFMzUmVzdW1lMlBlaSBiZWZvcmUNCisgICAgLy8gdHJhbnNmZXJy aW5nIGNvbnRyb2wgdG8gdGhlIE9TJ3Mgd2FrZXVwIHZlY3RvciBpbiB0aGUgRkFDUy4NCisgICAg Ly8NCisgICAgLy8gV2UgZXhwZWN0IGFueSBvdGhlciBQRUlNcyB0aGF0ICJib3Jyb3ciIG1lbW9y eSBzaW1pbGFybHkgdG8gQ3B1TXBQZWkgdG8NCisgICAgLy8gcmVzdG9yZSB0aGUgb3JpZ2luYWwg Y29udGVudHMuIEZ1cnRoZXJtb3JlLCB3ZSBleHBlY3QgYWxsIHN1Y2ggUEVJTXMNCisgICAgLy8g KENwdU1wUGVpIGluY2x1ZGVkKSB0byBjbGFpbSB0aGUgYm9ycm93ZWQgYXJlYXMgYnkgcHJvZHVj aW5nIG1lbW9yeQ0KKyAgICAvLyBhbGxvY2F0aW9uIEhPQnMsIGFuZCB0byBob25vciBwcmVleGlz dGVudCBtZW1vcnkgYWxsb2NhdGlvbiBIT0JzIHdoZW4NCisgICAgLy8gbG9va2luZyBmb3IgYW4g YXJlYSB0byBib3Jyb3cuDQorICAgIC8vDQorICAgIEFkZE1lbW9yeVJhbmdlSG9iICgwLCBCQVNF XzUxMktCICsgQkFTRV8xMjhLQik7DQorICB9IGVsc2Ugew0KKyAgICAvLw0KKyAgICAvLyBDcmVh dGUgbWVtb3J5IEhPQnMNCisgICAgLy8NCisgICAgQWRkTWVtb3J5UmFuZ2VIb2IgKDAsIEJBU0Vf NTEyS0IgKyBCQVNFXzEyOEtCKTsNCisNCisgICAgaWYgKEZlYXR1cmVQY2RHZXQgKFBjZFNtbVNt cmFtUmVxdWlyZSkpIHsNCisgICAgICBVSU5UMzIgVHNlZ1NpemU7DQorDQorICAgICAgVHNlZ1Np emUgPSBtWDU4VHNlZ01ieXRlcyAqIFNJWkVfMU1COw0KKyAgICAgIEFkZE1lbW9yeVJhbmdlSG9i IChCQVNFXzFNQiwgTG93ZXJNZW1vcnlTaXplIC0gVHNlZ1NpemUpOw0KKyAgICAgIEFkZFJlc2Vy dmVkTWVtb3J5QmFzZVNpemVIb2IgKExvd2VyTWVtb3J5U2l6ZSAtIFRzZWdTaXplLCBUc2VnU2l6 ZSwNCisgICAgICAgIFRSVUUpOw0KKw0KKwkgIEJ1ZmZlclNpemUgPSBzaXplb2YoRUZJX1NNUkFN X0hPQl9ERVNDUklQVE9SX0JMT0NLKTsNCisJICBTbXJhbVJhbmdlcyA9IDE7DQorDQorICAgICAg SG9iLlJhdyA9IEJ1aWxkR3VpZEhvYigNCisgICAgICAgICAgJmdFZmlTbW1QZWlTbXJhbU1lbW9y eVJlc2VydmVHdWlkLA0KKyAgICAgICAgICBCdWZmZXJTaXplDQorICAgICAgKTsNCisgICAgICBB U1NFUlQoSG9iLlJhdyk7DQorDQorICAgICAgU21yYW1Ib2JEZXNjcmlwdG9yQmxvY2sgPSAoRUZJ X1NNUkFNX0hPQl9ERVNDUklQVE9SX0JMT0NLICopKEhvYi5SYXcpOw0KKyAgICAgIFNtcmFtSG9i RGVzY3JpcHRvckJsb2NrLT5OdW1iZXJPZlNtbVJlc2VydmVkUmVnaW9ucyA9IFNtcmFtUmFuZ2Vz Ow0KKw0KKyAgICAgIFNtcmFtSW5kZXggPSAwOw0KKyAgICAgIGZvciAoSW5kZXggPSAwOyBJbmRl eCA8IFNtcmFtUmFuZ2VzOyBJbmRleCsrKSB7DQorICAgICAgICAvLw0KKyAgICAgICAgLy8gVGhp cyBpcyBhbiBTTVJBTSByYW5nZSwgY3JlYXRlIGFuIFNNUkFNIGRlc2NyaXB0b3INCisgICAgICAg IC8vDQorICAgICAgICBTbXJhbUhvYkRlc2NyaXB0b3JCbG9jay0+RGVzY3JpcHRvcltTbXJhbUlu ZGV4XS5QaHlzaWNhbFN0YXJ0ID0gTG93ZXJNZW1vcnlTaXplIC0gVHNlZ1NpemU7DQorICAgICAg ICBTbXJhbUhvYkRlc2NyaXB0b3JCbG9jay0+RGVzY3JpcHRvcltTbXJhbUluZGV4XS5DcHVTdGFy dCA9IExvd2VyTWVtb3J5U2l6ZSAtIFRzZWdTaXplOw0KKyAgICAgICAgU21yYW1Ib2JEZXNjcmlw dG9yQmxvY2stPkRlc2NyaXB0b3JbU21yYW1JbmRleF0uUGh5c2ljYWxTaXplID0gVHNlZ1NpemU7 DQorICAgICAgICBTbXJhbUhvYkRlc2NyaXB0b3JCbG9jay0+RGVzY3JpcHRvcltTbXJhbUluZGV4 XS5SZWdpb25TdGF0ZSA9IEVGSV9TTVJBTV9DTE9TRUQgfCBFRklfQ0FDSEVBQkxFOw0KKyAgICAg ICAgU21yYW1JbmRleCsrOw0KKyAgICAgIH0NCisNCisgICAgfSBlbHNlIHsNCisgICAgICBBZGRN ZW1vcnlSYW5nZUhvYiAoQkFTRV8xTUIsIExvd2VyTWVtb3J5U2l6ZSk7DQorICAgIH0NCisNCisg ICAgLy8NCisgICAgLy8gSWYgUUVNVSBwcmVzZW50cyBhbiBFODIwIG1hcCwgdGhlbiBjcmVhdGUg bWVtb3J5IEhPQnMgZm9yIHRoZSA+PTRHQiBSQU0NCisgICAgLy8gZW50cmllcy4gT3RoZXJ3aXNl LCBjcmVhdGUgYSBzaW5nbGUgbWVtb3J5IEhPQiB3aXRoIHRoZSBmbGF0ID49NEdCDQorICAgIC8v IG1lbW9yeSBzaXplIHJlYWQgZnJvbSB0aGUgQ01PUy4NCisgICAgLy8NCisgICAgaWYgKFVwcGVy TWVtb3J5U2l6ZSAhPSAwKSB7DQorICAgICAgQWRkTWVtb3J5QmFzZVNpemVIb2IgKEJBU0VfNEdC LCBVcHBlck1lbW9yeVNpemUpOw0KKyAgICB9DQorICB9DQorfQ0KKw0KKy8qKg0KKyAgUHVibGlz aCBzeXN0ZW0gUkFNIGFuZCByZXNlcnZlIG1lbW9yeSByZWdpb25zDQorDQorKiovDQorVk9JRA0K K0luaXRpYWxpemVSYW1SZWdpb25zICgNCisgIFZPSUQNCisgICkNCit7DQorICBRZW11SW5pdGlh bGl6ZVJhbSAoKTsNCisNCisgIGlmIChtUzNTdXBwb3J0ZWQgJiYgbUJvb3RNb2RlICE9IEJPT1Rf T05fUzNfUkVTVU1FKSB7DQorICAgIC8vDQorICAgIC8vIFRoaXMgaXMgdGhlIG1lbW9yeSByYW5n ZSB0aGF0IHdpbGwgYmUgdXNlZCBmb3IgUEVJIG9uIFMzIHJlc3VtZQ0KKyAgICAvLw0KKyAgICBC dWlsZE1lbW9yeUFsbG9jYXRpb25Ib2IgKA0KKyAgICAgIG1TM0FjcGlSZXNlcnZlZE1lbW9yeUJh c2UsDQorICAgICAgbVMzQWNwaVJlc2VydmVkTWVtb3J5U2l6ZSwNCisgICAgICBFZmlBQ1BJTWVt b3J5TlZTDQorICAgICAgKTsNCisNCisgICAgLy8NCisgICAgLy8gQ292ZXIgdGhlIGluaXRpYWwg UkFNIGFyZWEgdXNlZCBhcyBzdGFjayBhbmQgdGVtcG9yYXJ5IFBFSSBoZWFwLg0KKyAgICAvLw0K KyAgICAvLyBUaGlzIGlzIHJlc2VydmVkIGFzIEFDUEkgTlZTIHNvIGl0IGNhbiBiZSB1c2VkIG9u IFMzIHJlc3VtZS4NCisgICAgLy8NCisgICAgQnVpbGRNZW1vcnlBbGxvY2F0aW9uSG9iICgNCisg ICAgICBQY2RHZXQzMiAoUGNkU2ltaWNzU2VjUGVpVGVtcFJhbUJhc2UpLA0KKyAgICAgIFBjZEdl dDMyIChQY2RTaW1pY3NTZWNQZWlUZW1wUmFtU2l6ZSksDQorICAgICAgRWZpQUNQSU1lbW9yeU5W Uw0KKyAgICAgICk7DQorDQorICAgIC8vDQorICAgIC8vIFNFQyBzdG9yZXMgaXRzIHRhYmxlIG9m IEdVSURlZCBzZWN0aW9uIGhhbmRsZXJzIGhlcmUuDQorICAgIC8vDQorICAgIEJ1aWxkTWVtb3J5 QWxsb2NhdGlvbkhvYiAoDQorICAgICAgUGNkR2V0NjQgKFBjZEd1aWRlZEV4dHJhY3RIYW5kbGVy VGFibGVBZGRyZXNzKSwNCisgICAgICBQY2RHZXQzMiAoUGNkR3VpZGVkRXh0cmFjdEhhbmRsZXJU YWJsZVNpemUpLA0KKyAgICAgIEVmaUFDUElNZW1vcnlOVlMNCisgICAgICApOw0KKw0KKyAgfQ0K Kw0KKyAgaWYgKG1Cb290TW9kZSAhPSBCT09UX09OX1MzX1JFU1VNRSkgew0KKyAgICBpZiAoIUZl YXR1cmVQY2RHZXQgKFBjZFNtbVNtcmFtUmVxdWlyZSkpIHsNCisgICAgICAvLw0KKyAgICAgIC8v IFJlc2VydmUgdGhlIGxvY2sgYm94IHN0b3JhZ2UgYXJlYQ0KKyAgICAgIC8vDQorICAgICAgLy8g U2luY2UgdGhpcyBtZW1vcnkgcmFuZ2Ugd2lsbCBiZSB1c2VkIG9uIFMzIHJlc3VtZSwgaXQgbXVz dCBiZQ0KKyAgICAgIC8vIHJlc2VydmVkIGFzIEFDUEkgTlZTLg0KKyAgICAgIC8vDQorICAgICAg Ly8gSWYgUzMgaXMgdW5zdXBwb3J0ZWQsIHRoZW4gdmFyaW91cyBkcml2ZXJzIG1pZ2h0IHN0aWxs IHdyaXRlIHRvIHRoZQ0KKyAgICAgIC8vIExvY2tCb3ggYXJlYS4gV2Ugb3VnaHQgdG8gcHJldmVu dCBEWEUgZnJvbSBzZXJ2aW5nIGFsbG9jYXRpb24gcmVxdWVzdHMNCisgICAgICAvLyBzdWNoIHRo YXQgdGhleSB3b3VsZCBvdmVybGFwIHRoZSBMb2NrQm94IHN0b3JhZ2UuDQorICAgICAgLy8NCisg ICAgICBaZXJvTWVtICgNCisgICAgICAgIChWT0lEKikoVUlOVE4pIFBjZEdldDMyIChQY2RTaW1p Y3NMb2NrQm94U3RvcmFnZUJhc2UpLA0KKyAgICAgICAgKFVJTlROKSBQY2RHZXQzMiAoUGNkU2lt aWNzTG9ja0JveFN0b3JhZ2VTaXplKQ0KKyAgICAgICAgKTsNCisgICAgICBCdWlsZE1lbW9yeUFs bG9jYXRpb25Ib2IgKA0KKyAgICAgICAgKEVGSV9QSFlTSUNBTF9BRERSRVNTKShVSU5UTikgUGNk R2V0MzIgKFBjZFNpbWljc0xvY2tCb3hTdG9yYWdlQmFzZSksDQorICAgICAgICAoVUlOVDY0KShV SU5UTikgUGNkR2V0MzIgKFBjZFNpbWljc0xvY2tCb3hTdG9yYWdlU2l6ZSksDQorICAgICAgICBt UzNTdXBwb3J0ZWQgPyBFZmlBQ1BJTWVtb3J5TlZTIDogRWZpQm9vdFNlcnZpY2VzRGF0YQ0KKyAg ICAgICAgKTsNCisgICAgfQ0KKw0KKyAgICBpZiAoRmVhdHVyZVBjZEdldCAoUGNkU21tU21yYW1S ZXF1aXJlKSkgew0KKyAgICAgIFVJTlQzMiBUc2VnU2l6ZTsNCisNCisgICAgICAvLw0KKyAgICAg IC8vIE1ha2Ugc3VyZSB0aGUgVFNFRyBhcmVhIHRoYXQgd2UgcmVwb3J0ZWQgYXMgYSByZXNlcnZl ZCBtZW1vcnkgcmVzb3VyY2UNCisgICAgICAvLyBjYW5ub3QgYmUgdXNlZCBmb3IgcmVzZXJ2ZWQg bWVtb3J5IGFsbG9jYXRpb25zLg0KKyAgICAgIC8vDQorICAgICAgVHNlZ1NpemUgPSBtWDU4VHNl Z01ieXRlcyAqIFNJWkVfMU1COw0KKyAgICAgIEJ1aWxkTWVtb3J5QWxsb2NhdGlvbkhvYiAoDQor ICAgICAgICBHZXRTeXN0ZW1NZW1vcnlTaXplQmVsb3c0Z2IoKSAtIFRzZWdTaXplLA0KKyAgICAg ICAgVHNlZ1NpemUsDQorICAgICAgICBFZmlSZXNlcnZlZE1lbW9yeVR5cGUNCisgICAgICAgICk7 DQorICAgIH0NCisgIH0NCit9DQpkaWZmIC0tZ2l0IGEvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3Bl bkJvYXJkUGtnL1BsYXRmb3JtUGVpL1BsYXRmb3JtLmMgYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NP cGVuQm9hcmRQa2cvUGxhdGZvcm1QZWkvUGxhdGZvcm0uYw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQN CmluZGV4IDAwMDAwMDAwMDAuLmU2NGJkYzdjNTYNCi0tLSAvZGV2L251bGwNCisrKyBiL1BsYXRm b3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9QbGF0Zm9ybVBlaS9QbGF0Zm9ybS5jDQpAQCAt MCwwICsxLDYzMSBAQA0KKy8qKiBAZmlsZQ0KKyAgQ29weXJpZ2h0IChjKSAyMDA2IC0gMjAxNiwg SW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KKyAgQ29weXJpZ2h0 IChjKSAyMDExLCBBbmRyZWkgV2Fya2VudGluIDxhbmRyZWl3QG1vdG9yb2xhLmNvbT4NCisNCisg IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQorKiovDQorDQor Ly8NCisvLyBUaGUgcGFja2FnZSBsZXZlbCBoZWFkZXIgZmlsZXMgdGhpcyBtb2R1bGUgdXNlcw0K Ky8vDQorI2luY2x1ZGUgPFBpUGVpLmg+DQorDQorLy8NCisvLyBUaGUgTGlicmFyeSBjbGFzc2Vz IHRoaXMgbW9kdWxlIGNvbnN1bWVzDQorLy8NCisjaW5jbHVkZSA8TGlicmFyeS9EZWJ1Z0xpYi5o Pg0KKyNpbmNsdWRlIDxMaWJyYXJ5L0hvYkxpYi5oPg0KKyNpbmNsdWRlIDxMaWJyYXJ5L0lvTGli Lmg+DQorI2luY2x1ZGUgPExpYnJhcnkvTWVtb3J5QWxsb2NhdGlvbkxpYi5oPg0KKyNpbmNsdWRl IDxMaWJyYXJ5L1BjZExpYi5oPg0KKyNpbmNsdWRlIDxMaWJyYXJ5L1BjaUxpYi5oPg0KKyNpbmNs dWRlIDxMaWJyYXJ5L1BlaW1FbnRyeVBvaW50Lmg+DQorI2luY2x1ZGUgPExpYnJhcnkvUGVpU2Vy dmljZXNMaWIuaD4NCisjaW5jbHVkZSA8TGlicmFyeS9SZXNvdXJjZVB1YmxpY2F0aW9uTGliLmg+ DQorI2luY2x1ZGUgPEd1aWQvTWVtb3J5VHlwZUluZm9ybWF0aW9uLmg+DQorI2luY2x1ZGUgPFBw aS9NYXN0ZXJCb290TW9kZS5oPg0KKyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJkL1BjaTIyLmg+ DQorI2luY2x1ZGUgPFNpbWljc1BsYXRmb3Jtcy5oPg0KKw0KKyNpbmNsdWRlICJQbGF0Zm9ybS5o Ig0KKyNpbmNsdWRlICJDbW9zLmgiDQorDQorRUZJX01FTU9SWV9UWVBFX0lORk9STUFUSU9OIG1E ZWZhdWx0TWVtb3J5VHlwZUluZm9ybWF0aW9uW10gPSB7DQorICB7IEVmaUFDUElNZW1vcnlOVlMs ICAgICAgIDB4MDA0IH0sDQorICB7IEVmaUFDUElSZWNsYWltTWVtb3J5LCAgIDB4MDA4IH0sDQor ICB7IEVmaVJlc2VydmVkTWVtb3J5VHlwZSwgIDB4MDA0IH0sDQorICB7IEVmaVJ1bnRpbWVTZXJ2 aWNlc0RhdGEsIDB4MDI0IH0sDQorICB7IEVmaVJ1bnRpbWVTZXJ2aWNlc0NvZGUsIDB4MDMwIH0s DQorICB7IEVmaUJvb3RTZXJ2aWNlc0NvZGUsICAgIDB4MTgwIH0sDQorICB7IEVmaUJvb3RTZXJ2 aWNlc0RhdGEsICAgIDB4RjAwIH0sDQorICB7IEVmaU1heE1lbW9yeVR5cGUsICAgICAgIDB4MDAw IH0NCit9Ow0KKw0KKw0KK0VGSV9QRUlfUFBJX0RFU0NSSVBUT1IgICBtUHBpQm9vdE1vZGVbXSA9 IHsNCisgIHsNCisgICAgRUZJX1BFSV9QUElfREVTQ1JJUFRPUl9QUEkgfCBFRklfUEVJX1BQSV9E RVNDUklQVE9SX1RFUk1JTkFURV9MSVNULA0KKyAgICAmZ0VmaVBlaU1hc3RlckJvb3RNb2RlUHBp R3VpZCwNCisgICAgTlVMTA0KKyAgfQ0KK307DQorDQorDQorVUlOVDE2IG1Ib3N0QnJpZGdlRGV2 SWQ7DQorDQorRUZJX0JPT1RfTU9ERSBtQm9vdE1vZGUgPSBCT09UX1dJVEhfRlVMTF9DT05GSUdV UkFUSU9OOw0KKw0KK0JPT0xFQU4gbVMzU3VwcG9ydGVkID0gRkFMU0U7DQorDQorVUlOVDMyIG1N YXhDcHVDb3VudDsNCisNCitWT0lEDQorQWRkSW9NZW1vcnlCYXNlU2l6ZUhvYiAoDQorICBFRklf UEhZU0lDQUxfQUREUkVTUyAgICAgICAgTWVtb3J5QmFzZSwNCisgIFVJTlQ2NCAgICAgICAgICAg ICAgICAgICAgICBNZW1vcnlTaXplDQorICApDQorew0KKyAgQnVpbGRSZXNvdXJjZURlc2NyaXB0 b3JIb2IgKA0KKyAgICBFRklfUkVTT1VSQ0VfTUVNT1JZX01BUFBFRF9JTywNCisgICAgICBFRklf UkVTT1VSQ0VfQVRUUklCVVRFX1BSRVNFTlQgICAgIHwNCisgICAgICBFRklfUkVTT1VSQ0VfQVRU UklCVVRFX0lOSVRJQUxJWkVEIHwNCisgICAgICBFRklfUkVTT1VSQ0VfQVRUUklCVVRFX1VOQ0FD SEVBQkxFIHwNCisgICAgICBFRklfUkVTT1VSQ0VfQVRUUklCVVRFX1RFU1RFRCwNCisgICAgTWVt b3J5QmFzZSwNCisgICAgTWVtb3J5U2l6ZQ0KKyAgICApOw0KK30NCisNCitWT0lEDQorQWRkUmVz ZXJ2ZWRNZW1vcnlCYXNlU2l6ZUhvYiAoDQorICBFRklfUEhZU0lDQUxfQUREUkVTUyAgICAgICAg TWVtb3J5QmFzZSwNCisgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgICBNZW1vcnlTaXplLA0K KyAgQk9PTEVBTiAgICAgICAgICAgICAgICAgICAgIENhY2hlYWJsZQ0KKyAgKQ0KK3sNCisgIEJ1 aWxkUmVzb3VyY2VEZXNjcmlwdG9ySG9iICgNCisgICAgRUZJX1JFU09VUkNFX01FTU9SWV9SRVNF UlZFRCwNCisgICAgICBFRklfUkVTT1VSQ0VfQVRUUklCVVRFX1BSRVNFTlQgICAgIHwNCisgICAg ICBFRklfUkVTT1VSQ0VfQVRUUklCVVRFX0lOSVRJQUxJWkVEIHwNCisgICAgICBFRklfUkVTT1VS Q0VfQVRUUklCVVRFX1VOQ0FDSEVBQkxFIHwNCisgICAgICAoQ2FjaGVhYmxlID8NCisgICAgICAg RUZJX1JFU09VUkNFX0FUVFJJQlVURV9XUklURV9DT01CSU5FQUJMRSB8DQorICAgICAgIEVGSV9S RVNPVVJDRV9BVFRSSUJVVEVfV1JJVEVfVEhST1VHSF9DQUNIRUFCTEUgfA0KKyAgICAgICBFRklf UkVTT1VSQ0VfQVRUUklCVVRFX1dSSVRFX0JBQ0tfQ0FDSEVBQkxFIDoNCisgICAgICAgMA0KKyAg ICAgICApIHwNCisgICAgICBFRklfUkVTT1VSQ0VfQVRUUklCVVRFX1RFU1RFRCwNCisgICAgTWVt b3J5QmFzZSwNCisgICAgTWVtb3J5U2l6ZQ0KKyAgICApOw0KK30NCisNCitWT0lEDQorQWRkSW9N ZW1vcnlSYW5nZUhvYiAoDQorICBFRklfUEhZU0lDQUxfQUREUkVTUyAgICAgICAgTWVtb3J5QmFz ZSwNCisgIEVGSV9QSFlTSUNBTF9BRERSRVNTICAgICAgICBNZW1vcnlMaW1pdA0KKyAgKQ0KK3sN CisgIEFkZElvTWVtb3J5QmFzZVNpemVIb2IgKE1lbW9yeUJhc2UsIChVSU5UNjQpKE1lbW9yeUxp bWl0IC0gTWVtb3J5QmFzZSkpOw0KK30NCisNCisNCitWT0lEDQorQWRkTWVtb3J5QmFzZVNpemVI b2IgKA0KKyAgRUZJX1BIWVNJQ0FMX0FERFJFU1MgICAgICAgIE1lbW9yeUJhc2UsDQorICBVSU5U NjQgICAgICAgICAgICAgICAgICAgICAgTWVtb3J5U2l6ZQ0KKyAgKQ0KK3sNCisgIEJ1aWxkUmVz b3VyY2VEZXNjcmlwdG9ySG9iICgNCisgICAgRUZJX1JFU09VUkNFX1NZU1RFTV9NRU1PUlksDQor ICAgICAgRUZJX1JFU09VUkNFX0FUVFJJQlVURV9QUkVTRU5UIHwNCisgICAgICBFRklfUkVTT1VS Q0VfQVRUUklCVVRFX0lOSVRJQUxJWkVEIHwNCisgICAgICBFRklfUkVTT1VSQ0VfQVRUUklCVVRF X1VOQ0FDSEVBQkxFIHwNCisgICAgICBFRklfUkVTT1VSQ0VfQVRUUklCVVRFX1dSSVRFX0NPTUJJ TkVBQkxFIHwNCisgICAgICBFRklfUkVTT1VSQ0VfQVRUUklCVVRFX1dSSVRFX1RIUk9VR0hfQ0FD SEVBQkxFIHwNCisgICAgICBFRklfUkVTT1VSQ0VfQVRUUklCVVRFX1dSSVRFX0JBQ0tfQ0FDSEVB QkxFIHwNCisgICAgICBFRklfUkVTT1VSQ0VfQVRUUklCVVRFX1RFU1RFRCwNCisgICAgTWVtb3J5 QmFzZSwNCisgICAgTWVtb3J5U2l6ZQ0KKyAgICApOw0KK30NCisNCisNCitWT0lEDQorQWRkTWVt b3J5UmFuZ2VIb2IgKA0KKyAgRUZJX1BIWVNJQ0FMX0FERFJFU1MgICAgICAgIE1lbW9yeUJhc2Us DQorICBFRklfUEhZU0lDQUxfQUREUkVTUyAgICAgICAgTWVtb3J5TGltaXQNCisgICkNCit7DQor ICBBZGRNZW1vcnlCYXNlU2l6ZUhvYiAoTWVtb3J5QmFzZSwgKFVJTlQ2NCkoTWVtb3J5TGltaXQg LSBNZW1vcnlCYXNlKSk7DQorfQ0KKw0KKw0KK1ZPSUQNCitBZGRVbnRlc3RlZE1lbW9yeUJhc2VT aXplSG9iICgNCisgIEVGSV9QSFlTSUNBTF9BRERSRVNTICAgICAgICBNZW1vcnlCYXNlLA0KKyAg VUlOVDY0ICAgICAgICAgICAgICAgICAgICAgIE1lbW9yeVNpemUNCisgICkNCit7DQorICBCdWls ZFJlc291cmNlRGVzY3JpcHRvckhvYiAoDQorICAgIEVGSV9SRVNPVVJDRV9TWVNURU1fTUVNT1JZ LA0KKyAgICAgIEVGSV9SRVNPVVJDRV9BVFRSSUJVVEVfUFJFU0VOVCB8DQorICAgICAgRUZJX1JF U09VUkNFX0FUVFJJQlVURV9JTklUSUFMSVpFRCB8DQorICAgICAgRUZJX1JFU09VUkNFX0FUVFJJ QlVURV9VTkNBQ0hFQUJMRSB8DQorICAgICAgRUZJX1JFU09VUkNFX0FUVFJJQlVURV9XUklURV9D T01CSU5FQUJMRSB8DQorICAgICAgRUZJX1JFU09VUkNFX0FUVFJJQlVURV9XUklURV9USFJPVUdI X0NBQ0hFQUJMRSB8DQorICAgICAgRUZJX1JFU09VUkNFX0FUVFJJQlVURV9XUklURV9CQUNLX0NB Q0hFQUJMRSwNCisgICAgTWVtb3J5QmFzZSwNCisgICAgTWVtb3J5U2l6ZQ0KKyAgICApOw0KK30N CisNCisNCitWT0lEDQorQWRkVW50ZXN0ZWRNZW1vcnlSYW5nZUhvYiAoDQorICBFRklfUEhZU0lD QUxfQUREUkVTUyAgICAgICAgTWVtb3J5QmFzZSwNCisgIEVGSV9QSFlTSUNBTF9BRERSRVNTICAg ICAgICBNZW1vcnlMaW1pdA0KKyAgKQ0KK3sNCisgIEFkZFVudGVzdGVkTWVtb3J5QmFzZVNpemVI b2IgKE1lbW9yeUJhc2UsIChVSU5UNjQpKE1lbW9yeUxpbWl0IC0gTWVtb3J5QmFzZSkpOw0KK30N CisNCitWT0lEDQorQWRkRmxhc2hEZXZpY2VSYW5nZSAoDQorICBFRklfUEhZU0lDQUxfQUREUkVT UyAgICAgICAgTWVtb3J5QmFzZSwNCisgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgICBNZW1v cnlTaXplDQorICApDQorew0KKyAgQnVpbGRSZXNvdXJjZURlc2NyaXB0b3JIb2IgKA0KKyAgICBF RklfUkVTT1VSQ0VfRklSTVdBUkVfREVWSUNFLA0KKyAgICAoRUZJX1JFU09VUkNFX0FUVFJJQlVU RV9QUkVTRU5UICAgIHwNCisgICAgICBFRklfUkVTT1VSQ0VfQVRUUklCVVRFX0lOSVRJQUxJWkVE IHwNCisgICAgICBFRklfUkVTT1VSQ0VfQVRUUklCVVRFX1VOQ0FDSEVBQkxFKSwNCisgICAgTWVt b3J5QmFzZSwNCisgICAgTWVtb3J5U2l6ZQ0KKyAgICApOw0KKw0KKyAgQnVpbGRNZW1vcnlBbGxv Y2F0aW9uSG9iICgNCisgICAgTWVtb3J5QmFzZSwNCisgICAgTWVtb3J5U2l6ZSwNCisgICAgRWZp TWVtb3J5TWFwcGVkSU8NCisgICAgKTsNCit9DQorDQorVk9JRA0KK01lbU1hcEluaXRpYWxpemF0 aW9uICgNCisgIFZPSUQNCisgICkNCit7DQorICBVSU5UNjQgUGNpSW9CYXNlOw0KKyAgVUlOVDY0 IFBjaUlvU2l6ZTsNCisNCisgIFVJTlQzMiAgVG9wT2ZMb3dSYW07DQorICBVSU5UNjQgIFBjaUV4 QmFyQmFzZTsNCisgIFVJTlQzMiAgUGNpQmFzZTsNCisgIFVJTlQzMiAgUGNpU2l6ZTsNCisNCisg IFBjaUlvQmFzZSA9IDB4QzAwMDsNCisgIFBjaUlvU2l6ZSA9IDB4NDAwMDsNCisNCisgIC8vDQor ICAvLyBDcmVhdGUgTWVtb3J5IFR5cGUgSW5mb3JtYXRpb24gSE9CDQorICAvLw0KKyAgQnVpbGRH dWlkRGF0YUhvYiAoDQorICAgICZnRWZpTWVtb3J5VHlwZUluZm9ybWF0aW9uR3VpZCwNCisgICAg bURlZmF1bHRNZW1vcnlUeXBlSW5mb3JtYXRpb24sDQorICAgIHNpemVvZihtRGVmYXVsdE1lbW9y eVR5cGVJbmZvcm1hdGlvbikNCisgICAgKTsNCisNCisgIC8vDQorICAvLyBWaWRlbyBtZW1vcnkg KyBMZWdhY3kgQklPUyByZWdpb24NCisgIC8vDQorICBBZGRJb01lbW9yeVJhbmdlSG9iICgweDBB MDAwMCwgQkFTRV8xTUIpOw0KKw0KKyAgVG9wT2ZMb3dSYW0gPSBHZXRTeXN0ZW1NZW1vcnlTaXpl QmVsb3c0Z2IgKCk7DQorICBQY2lFeEJhckJhc2UgPSAwOw0KKyAgaWYgKG1Ib3N0QnJpZGdlRGV2 SWQgPT0gSU5URUxfSUNIMTBfREVWSUNFX0lEKSB7DQorICAgIC8vDQorICAgIC8vIFRoZSBNTUNP TkZJRyBhcmVhIGlzIGV4cGVjdGVkIHRvIGZhbGwgYmV0d2VlbiB0aGUgdG9wIG9mIGxvdyBSQU0g YW5kDQorICAgIC8vIHRoZSBiYXNlIG9mIHRoZSAzMi1iaXQgUENJIGhvc3QgYXBlcnR1cmUuDQor ICAgIC8vDQorICAgIFBjaUV4QmFyQmFzZSA9IEZpeGVkUGNkR2V0NjQgKFBjZFBjaUV4cHJlc3NC YXNlQWRkcmVzcyk7DQorICAgIEFTU0VSVCAoVG9wT2ZMb3dSYW0gPD0gUGNpRXhCYXJCYXNlKTsN CisgICAgQVNTRVJUIChQY2lFeEJhckJhc2UgPD0gTUFYX1VJTlQzMiAtIFNJWkVfMjU2TUIpOw0K KyAgICBQY2lCYXNlID0gKFVJTlQzMikoUGNpRXhCYXJCYXNlICsgU0laRV8yNTZNQik7DQorICB9 IGVsc2Ugew0KKyAgICBQY2lCYXNlID0gKFRvcE9mTG93UmFtIDwgQkFTRV8yR0IpID8gQkFTRV8y R0IgOiBUb3BPZkxvd1JhbTsNCisgIH0NCisNCisgIC8vDQorICAvLyBhZGRyZXNzICAgICAgIHB1 cnBvc2UgICBzaXplDQorICAvLyAtLS0tLS0tLS0tLS0gIC0tLS0tLS0tICAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tDQorICAvLyAweDAwMDAwMDAwICAgIFRvcE9mTG93UmFtICAgMHhERjAwMDAw MA0KKyAgLy8gMHhERjAwMDAwMCAgICBUc2VnK1VNQSAgICAgIDB4MDEwMDAwMDANCisgIC8vIDB4 RTAwMDAwMDAgICAgUGNpRXhCYXJCYXNlICAweDEwMDAwMDAwDQorICAvLyAweEYwMDAwMDAwICAg IFBjaUJhc2UgICAgICAgMHgwQzAwMDAwMA0KKyAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyAgLy8gbWF4KHRvcCwgMmcpICBQQ0kgTU1JTyAg MHhGQzAwMDAwMCAtIG1heCh0b3AsIDJnKQ0KKyAgLy8gMHhGQzAwMDAwMCAgICBnYXAgICAgICAg ICAgICAgICAgICAgICAgICAgICA0NCBNQg0KKyAgLy8gMHhGRUMwMDAwMCAgICBJTy1BUElDICAg ICAgICAgICAgICAgICAgICAgICAgNCBLQg0KKyAgLy8gMHhGRUMwMTAwMCAgICBnYXAgICAgICAg ICAgICAgICAgICAgICAgICAgMTAyMCBLQg0KKyAgLy8gMHhGRUQwMDAwMCAgICBIUEVUICAgICAg ICAgICAgICAgICAgICAgICAgICAgMSBLQg0KKyAgLy8gMHhGRUQwMDQwMCAgICBnYXAgICAgICAg ICAgICAgICAgICAgICAgICAgIDExMSBLQg0KKyAgLy8gMHhGRUQxQzAwMCAgICBnYXAgKFBJSVg0 KSAvIFJDUkIgKElDSDkpICAgICAxNiBLQg0KKyAgLy8gMHhGRUQyMDAwMCAgICBnYXAgICAgICAg ICAgICAgICAgICAgICAgICAgIDg5NiBLQg0KKyAgLy8gMHhGRUUwMDAwMCAgICBMQVBJQyAgICAg ICAgICAgICAgICAgICAgICAgICAgMSBNQg0KKyAgLy8NCisgIFBjaVNpemUgPSAweEZDMDAwMDAw IC0gUGNpQmFzZTsNCisgIEFkZElvTWVtb3J5QmFzZVNpemVIb2IgKFBjaUJhc2UsIFBjaVNpemUp Ow0KKyAgUGNkU2V0NjQgKFBjZFBjaU1taW8zMkJhc2UsIFBjaUJhc2UpOw0KKyAgUGNkU2V0NjQg KFBjZFBjaU1taW8zMlNpemUsIFBjaVNpemUpOw0KKyAgQWRkSW9NZW1vcnlCYXNlU2l6ZUhvYiAo MHhGRUMwMDAwMCwgU0laRV80S0IpOw0KKyAgQWRkSW9NZW1vcnlCYXNlU2l6ZUhvYiAoMHhGRUQw MDAwMCwgU0laRV8xS0IpOw0KKyAgaWYgKG1Ib3N0QnJpZGdlRGV2SWQgPT0gSU5URUxfSUNIMTBf REVWSUNFX0lEKSB7DQorICAgIEFkZElvTWVtb3J5QmFzZVNpemVIb2IgKElDSDEwX1JPT1RfQ09N UExFWF9CQVNFLCBTSVpFXzE2S0IpOw0KKyAgICAvLw0KKyAgICAvLyBOb3RlOiB0aGVyZSBzaG91 bGQgYmUgYW4NCisgICAgLy8NCisgICAgLy8gICBBZGRJb01lbW9yeUJhc2VTaXplSG9iIChQY2lF eEJhckJhc2UsIFNJWkVfMjU2TUIpOw0KKyAgICAvLyAgIEJ1aWxkTWVtb3J5QWxsb2NhdGlvbkhv YiAoUGNpRXhCYXJCYXNlLCBTSVpFXzI1Nk1CLCBFZmlNZW1vcnlNYXBwZWRJTyk7DQorICAgIC8v DQorICAgIC8vIGNhbGwgYmVsb3csIGp1c3QgbGlrZSB0aGUgb25lIGFib3ZlIGZvciBSQ0JBLiBI b3dldmVyLCBMaW51eCBpbnNpc3RzDQorICAgIC8vIHRoYXQgdGhlIE1NQ09ORklHIGFyZWEgYmUg bWFya2VkIGluIHRoZSBFODIwIG9yIFVFRkkgbWVtb3J5IG1hcCBhcw0KKyAgICAvLyAicmVzZXJ2 ZWQgbWVtb3J5IiAtLSBMaW51eCBkb2VzIG5vdCBjb250ZW50IGl0c2VsZiB3aXRoIGEgc2ltcGxl IGdhcA0KKyAgICAvLyBpbiB0aGUgbWVtb3J5IG1hcCB3aGVyZXZlciB0aGUgTUNGRyBBQ1BJIHRh YmxlIHBvaW50cyB0by4NCisgICAgLy8NCisgICAgLy8gVGhpcyBhcHBlYXJzIHRvIGJlIGEgc2Fm ZXR5IG1lYXN1cmUuIFRoZSBQQ0kgRmlybXdhcmUgU3BlY2lmaWNhdGlvbg0KKyAgICAvLyAocmV2 IDMuMSkgc2F5cyBpbiA0LjEuMi4gIk1DRkcgVGFibGUgRGVzY3JpcHRpb24iOiAiVGhlIHJlc291 cmNlcyBjYW4NCisgICAgLy8gKm9wdGlvbmFsbHkqIGJlIHJldHVybmVkIGluIFsuLi5dIEVGSUdl dE1lbW9yeU1hcCBhcyByZXNlcnZlZCBtZW1vcnkNCisgICAgLy8gWy4uLl0iLiAoRW1waGFzaXMg YWRkZWQgaGVyZS4pDQorICAgIC8vDQorICAgIC8vIE5vcm1hbGx5IHdlIGFkZCBtZW1vcnkgcmVz b3VyY2UgZGVzY3JpcHRvciBIT0JzIGluDQorICAgIC8vIFFlbXVJbml0aWFsaXplUmFtKCksIGFu ZCBwcmUtYWxsb2NhdGUgZnJvbSB0aG9zZSB3aXRoIG1lbW9yeQ0KKyAgICAvLyBhbGxvY2F0aW9u IEhPQnMgaW4gSW5pdGlhbGl6ZVJhbVJlZ2lvbnMoKS4gSG93ZXZlciwgdGhlIE1NQ09ORklHIGFy ZWENCisgICAgLy8gaXMgbW9zdCBkZWZpbml0ZWx5IG5vdCBSQU07IHNvLCBhcyBhbiBleGNlcHRp b24sIGNvdmVyIGl0IHdpdGgNCisgICAgLy8gdW5jYWNoZWFibGUgcmVzZXJ2ZWQgbWVtb3J5IHJp Z2h0IGhlcmUuDQorICAgIC8vDQorICAgICAgQWRkUmVzZXJ2ZWRNZW1vcnlCYXNlU2l6ZUhvYiAo UGNpRXhCYXJCYXNlLCBTSVpFXzI1Nk1CLCBGQUxTRSk7DQorICAgICAgQnVpbGRNZW1vcnlBbGxv Y2F0aW9uSG9iIChQY2lFeEJhckJhc2UsIFNJWkVfMjU2TUIsDQorICAgICAgICBFZmlSZXNlcnZl ZE1lbW9yeVR5cGUpOw0KKyAgfQ0KKyAgQWRkSW9NZW1vcnlCYXNlU2l6ZUhvYiAoUGNkR2V0MzIo UGNkQ3B1TG9jYWxBcGljQmFzZUFkZHJlc3MpLCBTSVpFXzFNQik7DQorDQorICAvLyBBZGQgUENJ IElPIFBvcnQgc3BhY2UgYXZhaWxhYmxlIGZvciBQQ0kgcmVzb3VyY2UgYWxsb2NhdGlvbnMuDQor ICAvLw0KKyAgQnVpbGRSZXNvdXJjZURlc2NyaXB0b3JIb2IgKA0KKyAgICBFRklfUkVTT1VSQ0Vf SU8sDQorICAgIEVGSV9SRVNPVVJDRV9BVFRSSUJVVEVfUFJFU0VOVCAgICAgfA0KKyAgICBFRklf UkVTT1VSQ0VfQVRUUklCVVRFX0lOSVRJQUxJWkVELA0KKyAgICBQY2lJb0Jhc2UsDQorICAgIFBj aUlvU2l6ZQ0KKyAgICApOw0KKyAgUGNkU2V0NjQgKFBjZFBjaUlvQmFzZSwgUGNpSW9CYXNlKTsN CisgIFBjZFNldDY0IChQY2RQY2lJb1NpemUsIFBjaUlvU2l6ZSk7DQorIA0KKyAgLy8NCisgIC8v IEFkZCBmbGFzaCByYW5nZS4NCisgIC8vDQorICBBZGRGbGFzaERldmljZVJhbmdlIChQY2RHZXQz MihQY2RGbGFzaEFyZWFCYXNlQWRkcmVzcyksIFBjZEdldDMyKFBjZEZsYXNoQXJlYVNpemUpKTsN CisgIC8vDQorICAvLyBWaWRlbyBtZW1vcnkgLyBBQlNFRw0KKyAgLy8NCisgIEFkZElvTWVtb3J5 QmFzZVNpemVIb2IgKDB4MEEwMDAwLCAweDIwMDAwKTsNCisgIC8vDQorICAvLyBMZWdhY3kgQklP UyByZWdpb24uDQorICAvLw0KKyAgQWRkUmVzZXJ2ZWRNZW1vcnlCYXNlU2l6ZUhvYiAoMHhDMDAw MCwgMHg0MDAwMCwgVFJVRSk7DQorfQ0KKw0KK1ZPSUQNCitNaXNjSW5pdGlhbGl6YXRpb24gKA0K KyAgVk9JRA0KKyAgKQ0KK3sNCisgIFVJTlROICAgICAgICAgUG1DbWQ7DQorICBVSU5UTiAgICAg ICAgIFBtYmE7DQorICBVSU5UMzIgICAgICAgIFBtYmFBbmRWYWw7DQorICBVSU5UMzIgICAgICAg IFBtYmFPclZhbDsNCisgIFVJTlROICAgICAgICAgQWNwaUN0bFJlZzsNCisgIFVJTlQ4ICAgICAg ICAgQWNwaUVuQml0Ow0KKw0KKyAgLy8NCisgIC8vIERpc2FibGUgQTIwIE1hc2sNCisgIC8vDQor ICBJb09yOCAoMHg5MiwgQklUMSk7DQorDQorICAvLw0KKyAgLy8gQnVpbGQgdGhlIENQVSBIT0Ig d2l0aCBndWVzdCBSQU0gc2l6ZSBkZXBlbmRlbnQgYWRkcmVzcyB3aWR0aCBhbmQgMTYtYml0cw0K KyAgLy8gb2YgSU8gc3BhY2UuIChTaWRlIG5vdGU6IHVubGlrZSBvdGhlciBIT0JzLCB0aGUgQ1BV IEhPQiBpcyBuZWVkZWQgZHVyaW5nDQorICAvLyBTMyByZXN1bWUgYXMgd2VsbCwgc28gd2UgYnVp bGQgaXQgdW5jb25kaXRpb25hbGx5LikNCisgIC8vDQorICBCdWlsZENwdUhvYiAobVBoeXNNZW1B ZGRyZXNzV2lkdGgsIDE2KTsNCisNCisgIC8vDQorICAvLyBEZXRlcm1pbmUgcGxhdGZvcm0gdHlw ZSBhbmQgc2F2ZSBIb3N0IEJyaWRnZSBESUQgdG8gUENEDQorICAvLw0KKyAgc3dpdGNoIChtSG9z dEJyaWRnZURldklkKSB7DQorICAgIGNhc2UgSU5URUxfODI0NDFfREVWSUNFX0lEOg0KKyAgICAg IFBtQ21kICAgICAgPSBQT1dFUl9NR01UX1JFR0lTVEVSX1BJSVg0IChQQ0lfQ09NTUFORF9PRkZT RVQpOw0KKyAgICAgIFBtYmEgICAgICAgPSBQT1dFUl9NR01UX1JFR0lTVEVSX1BJSVg0IChQSUlY NF9QTUJBKTsNCisgICAgICBQbWJhQW5kVmFsID0gfihVSU5UMzIpUElJWDRfUE1CQV9NQVNLOw0K KyAgICAgIFBtYmFPclZhbCAgPSBQSUlYNF9QTUJBX1ZBTFVFOw0KKyAgICAgIEFjcGlDdGxSZWcg PSBQT1dFUl9NR01UX1JFR0lTVEVSX1BJSVg0IChQSUlYNF9QTVJFR01JU0MpOw0KKyAgICAgIEFj cGlFbkJpdCAgPSBQSUlYNF9QTVJFR01JU0NfUE1JT1NFOw0KKyAgICAgIGJyZWFrOw0KKyAgICBj YXNlIElOVEVMX0lDSDEwX0RFVklDRV9JRDoNCisgICAgICBQbUNtZCAgICAgID0gUE9XRVJfTUdN VF9SRUdJU1RFUl9JQ0gxMCAoUENJX0NPTU1BTkRfT0ZGU0VUKTsNCisgICAgICBQbWJhICAgICAg ID0gUE9XRVJfTUdNVF9SRUdJU1RFUl9JQ0gxMCAoSUNIMTBfUE1CQVNFKTsNCisgICAgICBQbWJh QW5kVmFsID0gfihVSU5UMzIpSUNIMTBfUE1CQVNFX01BU0s7DQorICAgICAgUG1iYU9yVmFsICA9 IElDSDEwX1BNQkFTRV9WQUxVRTsNCisgICAgICBBY3BpQ3RsUmVnID0gUE9XRVJfTUdNVF9SRUdJ U1RFUl9JQ0gxMCAoSUNIMTBfQUNQSV9DTlRMKTsNCisgICAgICBBY3BpRW5CaXQgID0gSUNIMTBf QUNQSV9DTlRMX0FDUElfRU47DQorICAgICAgYnJlYWs7DQorICAgIGRlZmF1bHQ6DQorICAgICAg REVCVUcgKChFRklfRF9FUlJPUiwgIiVhOiBVbmtub3duIEhvc3QgQnJpZGdlIERldmljZSBJRDog MHglMDR4XG4iLA0KKyAgICAgICAgX19GVU5DVElPTl9fLCBtSG9zdEJyaWRnZURldklkKSk7DQor ICAgICAgQVNTRVJUIChGQUxTRSk7DQorICAgICAgcmV0dXJuOw0KKyAgfQ0KKyAgUGNkU2V0MTYg KFBjZFNpbWljc1g1OEhvc3RCcmlkZ2VQY2lEZXZJZCwgbUhvc3RCcmlkZ2VEZXZJZCk7DQorDQor ICAvLw0KKyAgLy8gSWYgdGhlIGFwcHJvcHJpYXRlIElPc3BhY2UgZW5hYmxlIGJpdCBpcyBzZXQs IGFzc3VtZSB0aGUgQUNQSSBQTUJBDQorICAvLyBoYXMgYmVlbiBjb25maWd1cmVkIGFuZCBza2lw IHRoZSBzZXR1cCBoZXJlLg0KKyAgLy8gVGhpcyBtYXRjaGVzIHRoZSBsb2dpYyBpbiBBY3BpVGlt ZXJMaWJDb25zdHJ1Y3RvciAoKS4NCisgIC8vDQorICBpZiAoKFBjaVJlYWQ4IChBY3BpQ3RsUmVn KSAmIEFjcGlFbkJpdCkgPT0gMCkgew0KKyAgICAvLw0KKyAgICAvLyBUaGUgUEVJIHBoYXNlIHNo b3VsZCBiZSBleGl0ZWQgd2l0aCBmdWxseSBhY2Nlc3NpYmUgQUNQSSBQTSBJTyBzcGFjZToNCisg ICAgLy8gMS4gc2V0IFBNQkENCisgICAgLy8NCisgICAgUGNpQW5kVGhlbk9yMzIgKFBtYmEsIFBt YmFBbmRWYWwsIFBtYmFPclZhbCk7DQorDQorICAgIC8vDQorICAgIC8vIDIuIHNldCBQQ0lDTUQv SU9TRQ0KKyAgICAvLw0KKyAgICBQY2lPcjggKFBtQ21kLCBFRklfUENJX0NPTU1BTkRfSU9fU1BB Q0UpOw0KKw0KKyAgICAvLw0KKyAgICAvLyAzLiBzZXQgQUNQSSBQTSBJTyBlbmFibGUgYml0IChQ TVJFR01JU0M6UE1JT1NFIG9yIEFDUElfQ05UTDpBQ1BJX0VOKQ0KKyAgICAvLw0KKyAgICBQY2lP cjggKEFjcGlDdGxSZWcsIEFjcGlFbkJpdCk7DQorICB9DQorDQorICBpZiAobUhvc3RCcmlkZ2VE ZXZJZCA9PSBJTlRFTF9JQ0gxMF9ERVZJQ0VfSUQpIHsNCisgICAgLy8NCisgICAgLy8gU2V0IFJv b3QgQ29tcGxleCBSZWdpc3RlciBCbG9jayBCQVINCisgICAgLy8NCisgICAgUGNpV3JpdGUzMiAo DQorICAgICAgUE9XRVJfTUdNVF9SRUdJU1RFUl9JQ0gxMCAoSUNIMTBfUkNCQSksDQorICAgICAg SUNIMTBfUk9PVF9DT01QTEVYX0JBU0UgfCBJQ0gxMF9SQ0JBX0VODQorICAgICAgKTsNCisNCisg IH0NCisgIC8vDQorICAvLyBTZXQgdGhlIFBNIEkvTyBiYXNlIGFkZHJlc3MgdG8gMHg0MDANCisg IC8vDQorICBQY2lBbmRUaGVuT3IzMiAoDQorICAgIFBDSV9MSUJfQUREUkVTUyAoDQorICAgICAg MCwNCisgICAgICAzMSwNCisgICAgICAwLA0KKyAgICAgIDB4NDANCisgICAgICApLA0KKyAgICAo VUlOVDMyKSB+MHhmYzAsIElDSDEwX1BNQkFTRV9WQUxVRQ0KKyAgICApOw0KKyAgLy8NCisgIC8v IEVuYWJsZSBBSENJIGFuZCBhbGwgcG9ydHMgb24gdGhlIFNBVEEgY29udHJvbGxlci4NCisgIC8v DQorICAvLyBBZGRyZXNzIE1BUCBSZWcsIHNldHRpbmcgQUhDSSBtb2RlDQorICAvLw0KKyAgUGNp T3IxNiAoUENJX0xJQl9BRERSRVNTICgwLCAzMSwgMiwgMHg5MCksIDB4MDA2MCk7DQorICAvLw0K KyAgLy9FbmFibGluZyBQb3J0cyAwLTUNCisgIC8vDQorICBQY2lPcjE2IChQQ0lfTElCX0FERFJF U1MgKDAsIDMxLCAyLCAweDkyKSwgMHgwMDNGKTsNCisgIC8vDQorICAvL0Rpc2FibGluZyBTYXRh IENvbnRyb2xsZXIgMiwgYml0IDI1ID0gMSwgYml0IDAgPSAxDQorICAvLw0KKyAgTW1pb1dyaXRl MzIoMHhGRUQxRjQxOCwgMHgwMjAwMDAwMSk7DQorICAvLw0KKyAgLy9FbmFibGUgSFBFVCBhdCBG RUQwXzAwMDBoIOKAkyBGRUQwXzAzRkZoDQorICAvLw0KKyAgTW1pb1dyaXRlOChJQ0gxMF9ST09U X0NPTVBMRVhfQkFTRSArIDB4MzQwNCwgMHg4MCk7DQorICAvLw0KKyAgLy9Db25maWcgYW5kIGVu YWJsZSBBUElDDQorICAvLw0KKyAgTW1pb1dyaXRlMzIoMHhGRUMwMDAwMCArIDBYMCwgMCk7DQor ICBNbWlvV3JpdGUzMigweEZFQzAwMDAwICsgMFgxMCwgUGNkR2V0OChQY2RJb0FwaWNJZCk8PDI0 KTsNCisgIE1taW9Xcml0ZTgoSUNIMTBfUk9PVF9DT01QTEVYX0JBU0UgKyAweDMxRkYsIDB4MDEp Ow0KK30NCisNCisNCitWT0lEDQorQm9vdE1vZGVJbml0aWFsaXphdGlvbiAoDQorICBWT0lEDQor ICApDQorew0KKyAgRUZJX1NUQVRVUyAgICBTdGF0dXM7DQorDQorIERFQlVHKChFRklfRF9JTkZP LCAibW9kZVZhbHVlID0gJXhcbiIsIElvQml0RmllbGRSZWFkMTYoSUNIMTBfUE1CQVNFX0lPICsg NCwgMTAsIDEyKSkpOw0KKyAgaWYgKElvQml0RmllbGRSZWFkMTYoSUNIMTBfUE1CQVNFX0lPICsg NCwgMTAsIDEyKSA9PSAweDUpIHsNCisgICAgbUJvb3RNb2RlID0gQk9PVF9PTl9TM19SRVNVTUU7 DQorICB9DQorDQorICBTdGF0dXMgPSBQZWlTZXJ2aWNlc1NldEJvb3RNb2RlIChtQm9vdE1vZGUp Ow0KKyAgQVNTRVJUX0VGSV9FUlJPUiAoU3RhdHVzKTsNCisNCisgIFN0YXR1cyA9IFBlaVNlcnZp Y2VzSW5zdGFsbFBwaSAobVBwaUJvb3RNb2RlKTsNCisgIEFTU0VSVF9FRklfRVJST1IgKFN0YXR1 cyk7DQorfQ0KKw0KKw0KK1ZPSUQNCitSZXNlcnZlRW11VmFyaWFibGVOdlN0b3JlICgNCisgICkN Cit7DQorICBFRklfUEhZU0lDQUxfQUREUkVTUyBWYXJpYWJsZVN0b3JlOw0KKw0KKyAgLy8NCisg IC8vIEFsbG9jYXRlIHN0b3JhZ2UgZm9yIE5WIHZhcmlhYmxlcyBlYXJseSBvbiBzbyBpdCB3aWxs IGJlDQorICAvLyBhdCBhIGNvbnNpc3RlbnQgYWRkcmVzcy4gIFNpbmNlIFZNIG1lbW9yeSBpcyBw cmVzZXJ2ZWQNCisgIC8vIGFjcm9zcyByZWJvb3RzLCB0aGlzIGFsbG93cyB0aGUgTlYgdmFyaWFi bGUgc3RvcmFnZSB0byBzdXJ2aXZlDQorICAvLyBhIFZNIHJlYm9vdC4NCisgIC8vDQorICBWYXJp YWJsZVN0b3JlID0NCisgICAgKEVGSV9QSFlTSUNBTF9BRERSRVNTKShVSU5UTikNCisgICAgICBB bGxvY2F0ZVJ1bnRpbWVQYWdlcyAoDQorICAgICAgICBFRklfU0laRV9UT19QQUdFUyAoMiAqIFBj ZEdldDMyIChQY2RGbGFzaE52U3RvcmFnZUZ0d1NwYXJlU2l6ZSkpDQorICAgICAgICApOw0KKyAg REVCVUcgKChFRklfRF9JTkZPLA0KKyAgICAgICAgICAiUmVzZXJ2ZWQgdmFyaWFibGUgc3RvcmUg bWVtb3J5OiAweCVsWDsgc2l6ZTogJWRrYlxuIiwNCisgICAgICAgICAgVmFyaWFibGVTdG9yZSwN CisgICAgICAgICAgKDIgKiBQY2RHZXQzMiAoUGNkRmxhc2hOdlN0b3JhZ2VGdHdTcGFyZVNpemUp KSAvIDEwMjQNCisgICAgICAgICkpOw0KKyAgUGNkU2V0NjQgKFBjZEVtdVZhcmlhYmxlTnZTdG9y ZVJlc2VydmVkLCBWYXJpYWJsZVN0b3JlKTsNCit9DQorDQorDQorVk9JRA0KK1NpbWljc1ZlcnNp b25DaGVjaygNCisgIFZPSUQNCisgICkNCit7DQorDQorICBVSU5UTiAgICAgICAgICAgUGNpQWRk clB0cjsNCisgIFVJTlQ4ICAgICAgICAgICBDYXBPZmZzZXQ7DQorICBTVEFUSUMgQ0hBUjggICAg U2ltaWNzU3RyWzB4MTAwXTsNCisgIFVJTlROICAgICAgICAgICBpOw0KKyAgVUlOVDMyICAgICAg ICAgIE1ham9yVmVyc2lvbjsNCisgIFVJTlQzMiAgICAgICAgICBNaW5vclZlcnNpb247DQorICBV SU5UMzIgICAgICAgICAgTW9kZWxOdW1iZXI7DQorDQorICBQY2lBZGRyUHRyID0gUENJX0xJQl9B RERSRVNTKDAsIFNJTUlDU19TSURFQkFORFBDSV9ERVYsIFNJTUlDU19TSURFQkFORFBDSV9GVU5D LCAwKTsNCisgIENhcE9mZnNldCA9IFBjaVJlYWQ4KFBjaUFkZHJQdHIgKyBQQ0lfQ0FQQklMSVRZ X1BPSU5URVJfT0ZGU0VUKTsNCisgIGlmIChDYXBPZmZzZXQgIT0gMHhGRikgew0KKyAgICBNb2Rl bE51bWJlciA9IFBjaVJlYWQzMihQY2lBZGRyUHRyICsgQ2FwT2Zmc2V0ICsgNCk7DQorICAgIE1h am9yVmVyc2lvbiA9IFBjaVJlYWQzMihQY2lBZGRyUHRyICsgQ2FwT2Zmc2V0ICsgOCk7DQorICAg IE1pbm9yVmVyc2lvbiA9IFBjaVJlYWQzMihQY2lBZGRyUHRyICsgQ2FwT2Zmc2V0ICsgMHhjKTsN CisgICAgZm9yIChpID0gMDsgaSA8IDB4ODA7IGkrKykgew0KKyAgICAgIFNpbWljc1N0cltpXSA9 IFBjaVJlYWQ4KFBjaUFkZHJQdHIgKyBDYXBPZmZzZXQgKyAweDEwICsgaSk7DQorICAgIH0NCisg ICAgREVCVUcoKEVGSV9EX0lORk8sICI9PT09PT09PT09PT09U0lNSUNTIFZlcnNpb24gaW5mbz09 PT09PT09PT09PT1cbiIpKTsNCisgICAgREVCVUcoKEVGSV9EX0lORk8sICJNb2RlbCBudW1iZXIg PSAlZFxuIiwgTW9kZWxOdW1iZXIpKTsNCisgICAgREVCVUcoKEVGSV9EX0lORk8sICJNYWpvciB2 ZXJzaW9uID0gJWRcbiIsIE1ham9yVmVyc2lvbikpOw0KKyAgICBERUJVRygoRUZJX0RfSU5GTywg Ik1pbm9yIHZlcnNpb24gPSAlZFxuIiwgTWlub3JWZXJzaW9uKSk7DQorICAgIERFQlVHKChFRklf RF9JTkZPLCAiJWFcbiIsIFNpbWljc1N0cikpOw0KKyAgICBERUJVRygoRUZJX0RfSU5GTywgIj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuIikpOw0KKyAgfQ0K K30NCisNCitWT0lEDQorRGVidWdEdW1wQ21vcyAoDQorICBWT0lEDQorICApDQorew0KKyAgVUlO VDMyIExvb3A7DQorDQorICBERUJVRyAoKEVGSV9EX0lORk8sICJDTU9TOlxuIikpOw0KKw0KKyAg Zm9yIChMb29wID0gMDsgTG9vcCA8IDB4ODA7IExvb3ArKykgew0KKyAgICBpZiAoKExvb3AgJSAw eDEwKSA9PSAwKSB7DQorICAgICAgREVCVUcgKChFRklfRF9JTkZPLCAiJTAyeDoiLCBMb29wKSk7 DQorICAgIH0NCisgICAgREVCVUcgKChFRklfRF9JTkZPLCAiICUwMngiLCBDbW9zUmVhZDggKExv b3ApKSk7DQorICAgIGlmICgoTG9vcCAlIDB4MTApID09IDB4Zikgew0KKyAgICAgIERFQlVHICgo RUZJX0RfSU5GTywgIlxuIikpOw0KKyAgICB9DQorICB9DQorfQ0KKw0KKw0KKy8qKg0KKyAgRmV0 Y2ggdGhlIG51bWJlciBvZiBib290IENQVXMgZnJvbSBRRU1VIGFuZCBleHBvc2UgaXQgdG8gVWVm aUNwdVBrZyBtb2R1bGVzLg0KKyAgU2V0IHRoZSBtTWF4Q3B1Q291bnQgdmFyaWFibGUuDQorKiov DQorVk9JRA0KK01heENwdUNvdW50SW5pdGlhbGl6YXRpb24gKA0KKyAgVk9JRA0KKyAgKQ0KK3sN CisgIG1NYXhDcHVDb3VudCA9IFBjZEdldDMyIChQY2RDcHVNYXhMb2dpY2FsUHJvY2Vzc29yTnVt YmVyKTsNCisgIHJldHVybjsNCit9DQorDQorLyoqDQorICBEZXRlcm1pbmUgaWYgUzMgc3VwcG9y dCBpcyBleHBsaWNpdGx5IGVuYWJsZWQuDQorDQorICBAcmV0dmFsICBUUlVFICAgSWYgUzMgc3Vw cG9ydCBpcyBleHBsaWNpdGx5IGVuYWJsZWQuIE90aGVyIGZ1bmN0aW9ucyBpbiB0aGlzDQorICBs aWJyYXJ5IG1heSBiZSBjYWxsZWQgKHN1YmplY3QgdG8gdGhlaXIgaW5kaXZpZHVhbA0KKyAgcmVz dHJpY3Rpb25zKS4NCisNCisgIEZBTFNFICBPdGhlcndpc2UuIFRoaXMgaW5jbHVkZXMgdW5hdmFp bGFiaWxpdHkgb2YgdGhlIGZpcm13YXJlDQorICBjb25maWd1cmF0aW9uIGludGVyZmFjZS4gTm8g b3RoZXIgZnVuY3Rpb24gaW4gdGhpcyBsaWJyYXJ5DQorICBtdXN0IGJlIGNhbGxlZC4NCisqKi8N CitCT09MRUFODQorRUZJQVBJDQorUWVtdUZ3Q2ZnUzNFbmFibGVkKA0KKyAgVk9JRA0KKykNCit7 DQorICAvL1RPIERPIElGIE5FRURFRA0KKyAgcmV0dXJuIFRSVUU7DQorfQ0KKw0KKy8qKg0KKyAg UGVyZm9ybSBQbGF0Zm9ybSBQRUkgaW5pdGlhbGl6YXRpb24uDQorDQorICBAcGFyYW0gIEZpbGVI YW5kbGUgICAgICBIYW5kbGUgb2YgdGhlIGZpbGUgYmVpbmcgaW52b2tlZC4NCisgIEBwYXJhbSAg UGVpU2VydmljZXMgICAgIERlc2NyaWJlcyB0aGUgbGlzdCBvZiBwb3NzaWJsZSBQRUkgU2Vydmlj ZXMuDQorDQorICBAcmV0dXJuIEVGSV9TVUNDRVNTICAgICBUaGUgUEVJTSBpbml0aWFsaXplZCBz dWNjZXNzZnVsbHkuDQorDQorKiovDQorRUZJX1NUQVRVUw0KK0VGSUFQSQ0KK0luaXRpYWxpemVQ bGF0Zm9ybSAoDQorICBJTiAgICAgICBFRklfUEVJX0ZJTEVfSEFORExFICBGaWxlSGFuZGxlLA0K KyAgSU4gQ09OU1QgRUZJX1BFSV9TRVJWSUNFUyAgICAgKipQZWlTZXJ2aWNlcw0KKyAgKQ0KK3sN CisgIEVGSV9TVEFUVVMgICAgU3RhdHVzOw0KKw0KKyAgREVCVUcgKChFRklfRF9FUlJPUiwgIlBs YXRmb3JtIFBFSU0gTG9hZGVkXG4iKSk7DQorDQorICBTaW1pY3NWZXJzaW9uQ2hlY2sgKCk7DQor ICBEZWJ1Z0R1bXBDbW9zICgpOw0KKw0KKyAgaWYgKFFlbXVGd0NmZ1MzRW5hYmxlZCAoKSkgew0K KyAgICBERUJVRyAoKEVGSV9EX0lORk8sICJTMyBzdXBwb3J0IHdhcyBkZXRlY3RlZCBvbiBTSU1J Q1NcbiIpKTsNCisgICAgbVMzU3VwcG9ydGVkID0gVFJVRTsNCisgICAgU3RhdHVzID0gUGNkU2V0 Qm9vbFMgKFBjZEFjcGlTM0VuYWJsZSwgVFJVRSk7DQorICAgIEFTU0VSVF9FRklfRVJST1IgKFN0 YXR1cyk7DQorICB9DQorICBBZGRyZXNzV2lkdGhJbml0aWFsaXphdGlvbiAoKTsNCisgIE1heENw dUNvdW50SW5pdGlhbGl6YXRpb24gKCk7DQorDQorICBtSG9zdEJyaWRnZURldklkID0gUGNpUmVh ZDE2KFNJTUlDU19IT1NUQlJJREdFX0RJRCk7DQorDQorICBpZiAoRmVhdHVyZVBjZEdldCAoUGNk U21tU21yYW1SZXF1aXJlKSkgew0KKyAgICBYNThUc2VnTWJ5dGVzSW5pdGlhbGl6YXRpb24gKCk7 DQorICB9DQorDQorICBQdWJsaXNoUGVpTWVtb3J5ICgpOw0KKw0KKyAgSW5pdGlhbGl6ZVJhbVJl Z2lvbnMgKCk7DQorDQorICBpZiAobUJvb3RNb2RlICE9IEJPT1RfT05fUzNfUkVTVU1FKSB7DQor ICAgIGlmICghRmVhdHVyZVBjZEdldCAoUGNkU21tU21yYW1SZXF1aXJlKSkgew0KKyAgICAgIFJl c2VydmVFbXVWYXJpYWJsZU52U3RvcmUgKCk7DQorICAgIH0NCisgICAgUGVpRnZJbml0aWFsaXph dGlvbiAoKTsNCisgICAgTWVtTWFwSW5pdGlhbGl6YXRpb24gKCk7DQorICB9DQorDQorICBNaXNj SW5pdGlhbGl6YXRpb24gKCk7DQorICBJbnN0YWxsRmVhdHVyZUNvbnRyb2xDYWxsYmFjayAoKTsN CisNCisgIHJldHVybiBFRklfU1VDQ0VTUzsNCit9DQpkaWZmIC0tZ2l0IGEvUGxhdGZvcm0vSW50 ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1BvbGljeS9MaWJyYXJ5L1NpbGljb25Qb2xpY3lJbml0TGli L1NpbGljb25Qb2xpY3lJbml0TGliLmMgYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQ a2cvUG9saWN5L0xpYnJhcnkvU2lsaWNvblBvbGljeUluaXRMaWIvU2lsaWNvblBvbGljeUluaXRM aWIuYw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAuLjAxYTllZDQwZDUN Ci0tLSAvZGV2L251bGwNCisrKyBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9Q b2xpY3kvTGlicmFyeS9TaWxpY29uUG9saWN5SW5pdExpYi9TaWxpY29uUG9saWN5SW5pdExpYi5j DQpAQCAtMCwwICsxLDEwOCBAQA0KKy8qKiBAZmlsZQ0KKyAgQ29weXJpZ2h0IChjKSAyMDE4IElu dGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLiA8QlI+DQorDQorICBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KKyoqLw0KKw0KKyNpbmNsdWRl IDxMaWJyYXJ5L0RlYnVnTGliLmg+DQorI2luY2x1ZGUgPExpYnJhcnkvSW9MaWIuaD4NCisjaW5j bHVkZSA8TGlicmFyeS9QZWlTZXJ2aWNlc0xpYi5oPg0KKyNpbmNsdWRlIDxMaWJyYXJ5L01lbW9y eUFsbG9jYXRpb25MaWIuaD4NCisNCisvKioNCisgIFBlcmZvcm1zIHNpbGljb24gcHJlLW1lbSBw b2xpY3kgaW5pdGlhbGl6YXRpb24uDQorDQorICBUaGUgbWVhbmluZyBvZiBQb2xpY3kgaXMgZGVm aW5lZCBieSBzaWxpY29uIGNvZGUuDQorICBJdCBjb3VsZCBiZSB0aGUgcmF3IGRhdGEsIGEgaGFu ZGxlLCBhIFBQSSwgZXRjLg0KKw0KKyAgVGhlIHJldHVybmVkIGRhdGEgbXVzdCBiZSB1c2VkIGFz IGlucHV0IGRhdGEgZm9yIFNpbGljb25Qb2xpY3lEb25lUHJlTWVtKCksDQorICBhbmQgU2lsaWNv blBvbGljeVVwZGF0ZUxpYi5TaWxpY29uUG9saWN5VXBkYXRlUHJlTWVtKCkuDQorDQorICAxKSBJ biBGU1AgcGF0aCwgdGhlIGlucHV0IFBvbGljeSBzaG91bGQgYmUgRnNwbVVwZC4NCisgIFZhbHVl IG9mIEZzcG1VcGQgaGFzIGJlZW4gaW5pdGlhbGl6ZWQgYnkgRlNQIGJpbmFyeSBkZWZhdWx0IHZh bHVlLg0KKyAgT25seSBhIHN1YnNldCBvZiBGc3BtVXBkIG5lZWRzIHRvIGJlIHVwZGF0ZWQgZm9y IGRpZmZlcmVudCBzaWxpY29uIHNrdS4NCisgIFRoZSByZXR1cm4gZGF0YSBpcyBzYW1lIEZzcG1V cGQuDQorDQorICAyKSBJbiBub24tRlNQIHBhdGgsIHRoZSBpbnB1dCBwb2xpY3kgY291bGQgYmUg TlVMTC4NCisgIFRoZSByZXR1cm4gZGF0YSBpcyB0aGUgaW5pdGlhbGl6ZWQgcG9saWN5Lg0KKw0K KyAgQHBhcmFtW2luLCBvdXRdIFBvbGljeSAgICAgICBQb2ludGVyIHRvIHBvbGljeS4NCisNCisg IEByZXR1cm4gdGhlIGluaXRpYWxpemVkIHBvbGljeS4NCisqKi8NCitWT0lEICoNCitFRklBUEkN CitTaWxpY29uUG9saWN5SW5pdFByZU1lbSAoDQorICBJTiBPVVQgVk9JRCAqUG9saWN5IE9QVElP TkFMDQorICApDQorew0KKyAgcmV0dXJuIFBvbGljeTsNCit9DQorDQorLyoNCisgIFRoZSBzaWxp Y29uIHByZS1tZW0gcG9saWN5IGlzIGZpbmFsaXplZC4NCisgIFNpbGljb24gY29kZSBjYW4gZG8g aW5pdGlhbGl6YXRpb24gYmFzZWQgdXBvbiB0aGUgcG9saWN5IGRhdGEuDQorDQorICBUaGUgaW5w dXQgUG9saWN5IG11c3QgYmUgcmV0dXJuZWQgYnkgU2lsaWNvblBvbGljeUluaXRQcmVNZW0oKS4N CisNCisgIEBwYXJhbVtpbl0gUG9saWN5ICAgICAgIFBvaW50ZXIgdG8gcG9saWN5Lg0KKw0KKyAg QHJldHZhbCBSRVRVUk5fU1VDQ0VTUyBUaGUgcG9saWN5IGlzIGhhbmRsZWQgY29uc3VtZWQgYnkg c2lsaWNvbiBjb2RlLg0KKyovDQorUkVUVVJOX1NUQVRVUw0KK0VGSUFQSQ0KK1NpbGljb25Qb2xp Y3lEb25lUHJlTWVtICgNCisgIElOIFZPSUQgKlBvbGljeQ0KKyAgKQ0KK3sNCisgIHJldHVybiBS RVRVUk5fU1VDQ0VTUzsNCit9DQorDQorLyoqDQorICBQZXJmb3JtcyBzaWxpY29uIHBvc3QtbWVt IHBvbGljeSBpbml0aWFsaXphdGlvbi4NCisNCisgIFRoZSBtZWFuaW5nIG9mIFBvbGljeSBpcyBk ZWZpbmVkIGJ5IHNpbGljb24gY29kZS4NCisgIEl0IGNvdWxkIGJlIHRoZSByYXcgZGF0YSwgYSBo YW5kbGUsIGEgUFBJLCBldGMuDQorDQorICBUaGUgcmV0dXJuZWQgZGF0YSBtdXN0IGJlIHVzZWQg YXMgaW5wdXQgZGF0YSBmb3IgU2lsaWNvblBvbGljeURvbmVQb3N0TWVtKCksDQorICBhbmQgU2ls aWNvblBvbGljeVVwZGF0ZUxpYi5TaWxpY29uUG9saWN5VXBkYXRlUG9zdE1lbSgpLg0KKw0KKyAg MSkgSW4gRlNQIHBhdGgsIHRoZSBpbnB1dCBQb2xpY3kgc2hvdWxkIGJlIEZzcHNVcGQuDQorICBW YWx1ZSBvZiBGc3BzVXBkIGhhcyBiZWVuIGluaXRpYWxpemVkIGJ5IEZTUCBiaW5hcnkgZGVmYXVs dCB2YWx1ZS4NCisgIE9ubHkgYSBzdWJzZXQgb2YgRnNwc1VwZCBuZWVkcyB0byBiZSB1cGRhdGVk IGZvciBkaWZmZXJlbnQgc2lsaWNvbiBza3UuDQorICBUaGUgcmV0dXJuIGRhdGEgaXMgc2FtZSBG c3BzVXBkLg0KKw0KKyAgMikgSW4gbm9uLUZTUCBwYXRoLCB0aGUgaW5wdXQgcG9saWN5IGNvdWxk IGJlIE5VTEwuDQorICBUaGUgcmV0dXJuIGRhdGEgaXMgdGhlIGluaXRpYWxpemVkIHBvbGljeS4N CisNCisgIEBwYXJhbVtpbiwgb3V0XSBQb2xpY3kgICAgICAgUG9pbnRlciB0byBwb2xpY3kuDQor DQorICBAcmV0dXJuIHRoZSBpbml0aWFsaXplZCBwb2xpY3kuDQorKiovDQorVk9JRCAqDQorRUZJ QVBJDQorU2lsaWNvblBvbGljeUluaXRQb3N0TWVtICgNCisgIElOIE9VVCBWT0lEICpQb2xpY3kg T1BUSU9OQUwNCisgICkNCit7DQorICByZXR1cm4gUG9saWN5Ow0KK30NCisNCisvKg0KKyAgVGhl IHNpbGljb24gcG9zdC1tZW0gcG9saWN5IGlzIGZpbmFsaXplZC4NCisgIFNpbGljb24gY29kZSBj YW4gZG8gaW5pdGlhbGl6YXRpb24gYmFzZWQgdXBvbiB0aGUgcG9saWN5IGRhdGEuDQorDQorICBU aGUgaW5wdXQgUG9saWN5IG11c3QgYmUgcmV0dXJuZWQgYnkgU2lsaWNvblBvbGljeUluaXRQb3N0 TWVtKCkuDQorDQorICBAcGFyYW1baW5dIFBvbGljeSAgICAgICBQb2ludGVyIHRvIHBvbGljeS4N CisNCisgIEByZXR2YWwgUkVUVVJOX1NVQ0NFU1MgVGhlIHBvbGljeSBpcyBoYW5kbGVkIGNvbnN1 bWVkIGJ5IHNpbGljb24gY29kZS4NCisqLw0KK1JFVFVSTl9TVEFUVVMNCitFRklBUEkNCitTaWxp Y29uUG9saWN5RG9uZVBvc3RNZW0gKA0KKyAgSU4gVk9JRCAqUG9saWN5DQorICApDQorew0KKyAg cmV0dXJuIFJFVFVSTl9TVUNDRVNTOw0KK30NCmRpZmYgLS1naXQgYS9QbGF0Zm9ybS9JbnRlbC9T aW1pY3NPcGVuQm9hcmRQa2cvUG9saWN5L0xpYnJhcnkvU2lsaWNvblBvbGljeVVwZGF0ZUxpYi9T aWxpY29uUG9saWN5VXBkYXRlTGliLmMgYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQ a2cvUG9saWN5L0xpYnJhcnkvU2lsaWNvblBvbGljeVVwZGF0ZUxpYi9TaWxpY29uUG9saWN5VXBk YXRlTGliLmMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwLi42ZDlkYTY3 OTc1DQotLS0gL2Rldi9udWxsDQorKysgYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQ a2cvUG9saWN5L0xpYnJhcnkvU2lsaWNvblBvbGljeVVwZGF0ZUxpYi9TaWxpY29uUG9saWN5VXBk YXRlTGliLmMNCkBAIC0wLDAgKzEsNzAgQEANCisvKiogQGZpbGUNCisgIENvcHlyaWdodCAoYykg MjAxOCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gPEJSPg0KKw0KKyAg U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCisqKi8NCisNCisj aW5jbHVkZSA8UGlQZWkuaD4NCisNCisjaW5jbHVkZSA8TGlicmFyeS9EZWJ1Z0xpYi5oPg0KKyNp bmNsdWRlIDxMaWJyYXJ5L0lvTGliLmg+DQorI2luY2x1ZGUgPFBwaS9SZWFkT25seVZhcmlhYmxl Mi5oPg0KKyNpbmNsdWRlIDxMaWJyYXJ5L1BlaVNlcnZpY2VzTGliLmg+DQorDQorLyoqDQorICBQ ZXJmb3JtcyBzaWxpY29uIHByZS1tZW0gcG9saWN5IHVwZGF0ZS4NCisNCisgIFRoZSBtZWFuaW5n IG9mIFBvbGljeSBpcyBkZWZpbmVkIGJ5IHNpbGljb24gY29kZS4NCisgIEl0IGNvdWxkIGJlIHRo ZSByYXcgZGF0YSwgYSBoYW5kbGUsIGEgUFBJLCBldGMuDQorDQorICBUaGUgaW5wdXQgUG9saWN5 IG11c3QgYmUgcmV0dXJuZWQgYnkgU2lsaWNvblBvbGljeURvbmVQcmVNZW0oKS4NCisNCisgIDEp IEluIEZTUCBwYXRoLCB0aGUgaW5wdXQgUG9saWN5IHNob3VsZCBiZSBGc3BtVXBkLg0KKyAgQSBw bGF0Zm9ybSBtYXkgdXNlIHRoaXMgQVBJIHRvIHVwZGF0ZSB0aGUgRlNQTSBVUEQgcG9saWN5IGlu aXRpYWxpemVkDQorICBieSB0aGUgc2lsaWNvbiBtb2R1bGUgb3IgdGhlIGRlZmF1bHQgVVBEIGRh dGEuDQorICBUaGUgb3V0cHV0IG9mIEZTUE0gVVBEIGRhdGEgZnJvbSB0aGlzIEFQSSBpcyB0aGUg ZmluYWwgVVBEIGRhdGEuDQorDQorICAyKSBJbiBub24tRlNQIHBhdGgsIHRoZSBib2FyZCBtYXkg dXNlIGFkZGl0aW9uYWwgd2F5IHRvIGdldA0KKyAgdGhlIHNpbGljb24gcG9saWN5IGRhdGEgZmll bGQgYmFzZWQgdXBvbiB0aGUgaW5wdXQgUG9saWN5Lg0KKw0KKyAgQHBhcmFtW2luLCBvdXRdIFBv bGljeSAgICAgICBQb2ludGVyIHRvIHBvbGljeS4NCisNCisgIEByZXR1cm4gdGhlIHVwZGF0ZWQg cG9saWN5Lg0KKyoqLw0KK1ZPSUQgKg0KK0VGSUFQSQ0KK1NpbGljb25Qb2xpY3lVcGRhdGVQcmVN ZW0gKA0KKyAgSU4gT1VUIFZPSUQgKlBvbGljeQ0KKyAgKQ0KK3sNCisgIHJldHVybiBQb2xpY3k7 DQorfQ0KKw0KKy8qKg0KKyAgUGVyZm9ybXMgc2lsaWNvbiBwb3N0LW1lbSBwb2xpY3kgdXBkYXRl Lg0KKw0KKyAgVGhlIG1lYW5pbmcgb2YgUG9saWN5IGlzIGRlZmluZWQgYnkgc2lsaWNvbiBjb2Rl Lg0KKyAgSXQgY291bGQgYmUgdGhlIHJhdyBkYXRhLCBhIGhhbmRsZSwgYSBQUEksIGV0Yy4NCisN CisgIFRoZSBpbnB1dCBQb2xpY3kgbXVzdCBiZSByZXR1cm5lZCBieSBTaWxpY29uUG9saWN5RG9u ZVBvc3RNZW0oKS4NCisNCisgIDEpIEluIEZTUCBwYXRoLCB0aGUgaW5wdXQgUG9saWN5IHNob3Vs ZCBiZSBGc3BzVXBkLg0KKyAgQSBwbGF0Zm9ybSBtYXkgdXNlIHRoaXMgQVBJIHRvIHVwZGF0ZSB0 aGUgRlNQUyBVUEQgcG9saWN5IGluaXRpYWxpemVkDQorICBieSB0aGUgc2lsaWNvbiBtb2R1bGUg b3IgdGhlIGRlZmF1bHQgVVBEIGRhdGEuDQorICBUaGUgb3V0cHV0IG9mIEZTUFMgVVBEIGRhdGEg ZnJvbSB0aGlzIEFQSSBpcyB0aGUgZmluYWwgVVBEIGRhdGEuDQorDQorICAyKSBJbiBub24tRlNQ IHBhdGgsIHRoZSBib2FyZCBtYXkgdXNlIGFkZGl0aW9uYWwgd2F5IHRvIGdldA0KKyAgdGhlIHNp bGljb24gcG9saWN5IGRhdGEgZmllbGQgYmFzZWQgdXBvbiB0aGUgaW5wdXQgUG9saWN5Lg0KKw0K KyAgQHBhcmFtW2luLCBvdXRdIFBvbGljeSAgICAgICBQb2ludGVyIHRvIHBvbGljeS4NCisNCisg IEByZXR1cm4gdGhlIHVwZGF0ZWQgcG9saWN5Lg0KKyoqLw0KK1ZPSUQgKg0KK0VGSUFQSQ0KK1Np bGljb25Qb2xpY3lVcGRhdGVQb3N0TWVtICgNCisgIElOIE9VVCBWT0lEICpQb2xpY3kNCisgICkN Cit7DQorICByZXR1cm4gUG9saWN5Ow0KK30NCmRpZmYgLS1naXQgYS9QbGF0Zm9ybS9JbnRlbC9T aW1pY3NPcGVuQm9hcmRQa2cvU21iaW9zUGxhdGZvcm1EeGUvU21iaW9zUGxhdGZvcm1EeGUuYyBi L1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9TbWJpb3NQbGF0Zm9ybUR4ZS9TbWJp b3NQbGF0Zm9ybUR4ZS5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMC4u ODJhMmQ2MDk1OQ0KLS0tIC9kZXYvbnVsbA0KKysrIGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3Bl bkJvYXJkUGtnL1NtYmlvc1BsYXRmb3JtRHhlL1NtYmlvc1BsYXRmb3JtRHhlLmMNCkBAIC0wLDAg KzEsMTQ4IEBADQorLyoqIEBmaWxlDQorICBUaGlzIGRyaXZlciBpbnN0YWxscyBTTUJJT1MgaW5m b3JtYXRpb24gZm9yIE9WTUYNCisNCisgIENvcHlyaWdodCAoYykgMjAxMSwgQmVpIEd1YW4gPGdi dGp1ODVAZ21haWwuY29tPg0KKyAgQ29weXJpZ2h0IChjKSAyMDExIC0gMjAxNSwgSW50ZWwgQ29y cG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KKw0KKyAgU1BEWC1MaWNlbnNlLUlk ZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCisqKi8NCisNCisjaW5jbHVkZSAiU21iaW9z UGxhdGZvcm1EeGUuaCINCisNCisNCisvKioNCitSZWFkcyA4LWJpdHMgb2YgQ01PUyBkYXRhLg0K Kw0KK1JlYWRzIHRoZSA4LWJpdHMgb2YgQ01PUyBkYXRhIGF0IHRoZSBsb2NhdGlvbiBzcGVjaWZp ZWQgYnkgSW5kZXguDQorVGhlIDgtYml0IHJlYWQgdmFsdWUgaXMgcmV0dXJuZWQuDQorDQorQHBh cmFtICBJbmRleCAgVGhlIENNT1MgbG9jYXRpb24gdG8gcmVhZC4NCisNCitAcmV0dXJuIFRoZSB2 YWx1ZSByZWFkLg0KKw0KKyoqLw0KK1VJTlQ4DQorRUZJQVBJDQorQ21vc1JlYWQ4KA0KKyAgSU4g ICAgICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIEluZGV4DQorICApDQorew0KKyAgSW9Xcml0 ZTgoMHg3MCwgKFVJTlQ4KUluZGV4KTsNCisgIHJldHVybiBJb1JlYWQ4KDB4NzEpOw0KK30NCisN CitVSU5UMzINCitHZXRTeXN0ZW1NZW1vcnlTaXplQmVsb3c0Z2IoDQorICBWT0lEDQorICApDQor ew0KKyAgVUlOVDggQ21vczB4MzQ7DQorICBVSU5UOCBDbW9zMHgzNTsNCisNCisgIC8vDQorICAv LyBDTU9TIDB4MzQvMHgzNSBzcGVjaWZpZXMgdGhlIHN5c3RlbSBtZW1vcnkgYWJvdmUgMTYgTUIu DQorICAvLyAqIENNT1MoMHgzNSkgaXMgdGhlIGhpZ2ggYnl0ZQ0KKyAgLy8gKiBDTU9TKDB4MzQp IGlzIHRoZSBsb3cgYnl0ZQ0KKyAgLy8gKiBUaGUgc2l6ZSBpcyBzcGVjaWZpZWQgaW4gNjRrYiBj aHVua3MNCisgIC8vICogU2luY2UgdGhpcyBpcyBtZW1vcnkgYWJvdmUgMTZNQiwgdGhlIDE2TUIg bXVzdCBiZSBhZGRlZA0KKyAgLy8gICBpbnRvIHRoZSBjYWxjdWxhdGlvbiB0byBnZXQgdGhlIHRv dGFsIG1lbW9yeSBzaXplLg0KKyAgLy8NCisNCisgIENtb3MweDM0ID0gKFVJTlQ4KUNtb3NSZWFk OCgweDM0KTsNCisgIENtb3MweDM1ID0gKFVJTlQ4KUNtb3NSZWFkOCgweDM1KTsNCisNCisgIHJl dHVybiAoVUlOVDMyKSgoKFVJTlROKSgoQ21vczB4MzUgPDwgOCkgKyBDbW9zMHgzNCkgPDwgMTYp ICsgU0laRV8xNk1CKTsNCit9DQorDQorU1RBVElDDQorVUlOVDY0DQorR2V0U3lzdGVtTWVtb3J5 U2l6ZUFib3ZlNGdiKA0KKyAgVk9JRA0KKykNCit7DQorICBVSU5UMzIgU2l6ZTsNCisgIFVJTlRO ICBDbW9zSW5kZXg7DQorDQorICAvLw0KKyAgLy8gQ01PUyAweDViLTB4NWQgc3BlY2lmaWVzIHRo ZSBzeXN0ZW0gbWVtb3J5IGFib3ZlIDRHQiBNQi4NCisgIC8vICogQ01PUygweDVkKSBpcyB0aGUg bW9zdCBzaWduaWZpY2FudCBzaXplIGJ5dGUNCisgIC8vICogQ01PUygweDVjKSBpcyB0aGUgbWlk ZGxlIHNpemUgYnl0ZQ0KKyAgLy8gKiBDTU9TKDB4NWIpIGlzIHRoZSBsZWFzdCBzaWduaWZpY2Fu dCBzaXplIGJ5dGUNCisgIC8vICogVGhlIHNpemUgaXMgc3BlY2lmaWVkIGluIDY0a2IgY2h1bmtz DQorICAvLw0KKw0KKyAgU2l6ZSA9IDA7DQorICBmb3IgKENtb3NJbmRleCA9IDB4NWQ7IENtb3NJ bmRleCA+PSAweDViOyBDbW9zSW5kZXgtLSkgew0KKyAgICBTaXplID0gKFVJTlQzMikoU2l6ZSA8 PCA4KSArIChVSU5UMzIpQ21vc1JlYWQ4KENtb3NJbmRleCk7DQorICB9DQorDQorICByZXR1cm4g TFNoaWZ0VTY0KFNpemUsIDE2KTsNCit9DQorDQorLyoqDQorICBJbnN0YWxscyBTTUJJT1MgaW5m b3JtYXRpb24gZm9yIE9WTUYNCisNCisgIEBwYXJhbSBJbWFnZUhhbmRsZSAgICAgTW9kdWxlJ3Mg aW1hZ2UgaGFuZGxlDQorICBAcGFyYW0gU3lzdGVtVGFibGUgICAgIFBvaW50ZXIgb2YgRUZJX1NZ U1RFTV9UQUJMRQ0KKw0KKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICBTbWJpb3MgZGF0YSBzdWNj ZXNzZnVsbHkgaW5zdGFsbGVkDQorICBAcmV0dmFsIE90aGVyICAgICAgICAgIFNtYmlvcyBkYXRh IHdhcyBub3QgaW5zdGFsbGVkDQorDQorKiovDQorRUZJX1NUQVRVUw0KK0VGSUFQSQ0KK1NtYmlv c1RhYmxlUHVibGlzaEVudHJ5ICgNCisgIElOIEVGSV9IQU5ETEUgICAgICAgICAgIEltYWdlSGFu ZGxlLA0KKyAgSU4gRUZJX1NZU1RFTV9UQUJMRSAgICAgKlN5c3RlbVRhYmxlDQorICApDQorew0K KyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICBTdGF0dXM7DQorICBFRklfU01CSU9TX1BST1RP Q09MICAgICAgICpTbWJpb3M7DQorICBTTUJJT1NfVEFCTEVfVFlQRTE5ICAgICAgICpUeXBlMTlS ZWNvcmQ7DQorICBFRklfU01CSU9TX0hBTkRMRSAgICAgICAgIE1lbUFycmF5TWFwcGVkQWRkclNt Ymlvc0hhbmRsZTsNCisgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgTnVtU2xvdHM7DQorICBV SU5UNjQgICAgICAgICAgICAgICAgICAgIFRvdGFsTWVtb3J5U2l6ZTsNCisNCisgIC8vDQorICAv LyBGaW5kIHRoZSBTTUJJT1MgcHJvdG9jb2wNCisgIC8vDQorICBTdGF0dXMgPSBnQlMtPkxvY2F0 ZVByb3RvY29sICgNCisgICAgICAgICAgICAgICAgICAmZ0VmaVNtYmlvc1Byb3RvY29sR3VpZCwN CisgICAgICAgICAgICAgICAgICBOVUxMLA0KKyAgICAgICAgICAgICAgICAgIChWT0lEKiopJlNt Ymlvcw0KKyAgICAgICAgICAgICAgICAgICk7DQorICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7 DQorICAgIHJldHVybiBTdGF0dXM7DQorICB9DQorICAvLw0KKyAgLy8gR2VuZXJhdGUgTWVtb3J5 IEFycmF5IE1hcHBlZCBBZGRyZXNzIGluZm8NCisgIC8vDQorICBOdW1TbG90cyA9IDI7DQorICBU b3RhbE1lbW9yeVNpemUgPSAwOw0KKyAgVG90YWxNZW1vcnlTaXplID0gR2V0U3lzdGVtTWVtb3J5 U2l6ZUJlbG93NGdiKCk7DQorICBUeXBlMTlSZWNvcmQgPSBBbGxvY2F0ZVBvb2woc2l6ZW9mKFNN QklPU19UQUJMRV9UWVBFMTkpKTsNCisgIFplcm9NZW0oVHlwZTE5UmVjb3JkLCBzaXplb2YoU01C SU9TX1RBQkxFX1RZUEUxOSkpOw0KKyAgVHlwZTE5UmVjb3JkLT5IZHIuVHlwZSA9IEVGSV9TTUJJ T1NfVFlQRV9NRU1PUllfQVJSQVlfTUFQUEVEX0FERFJFU1M7DQorICBUeXBlMTlSZWNvcmQtPkhk ci5MZW5ndGggPSBzaXplb2YoU01CSU9TX1RBQkxFX1RZUEUxOSk7DQorICBUeXBlMTlSZWNvcmQt Pkhkci5IYW5kbGUgPSAwOw0KKyAgVHlwZTE5UmVjb3JkLT5TdGFydGluZ0FkZHJlc3MgPSAwOw0K KyAgVHlwZTE5UmVjb3JkLT5FbmRpbmdBZGRyZXNzID0gKFVJTlQzMilSU2hpZnRVNjQoVG90YWxN ZW1vcnlTaXplLCAxMCkgLSAxOw0KKyAgVHlwZTE5UmVjb3JkLT5NZW1vcnlBcnJheUhhbmRsZSA9 IFNNQklPU19IQU5ETEVfUElfUkVTRVJWRUQ7DQorICBUeXBlMTlSZWNvcmQtPlBhcnRpdGlvbldp ZHRoID0gKFVJTlQ4KShOdW1TbG90cyk7DQorDQorICBNZW1BcnJheU1hcHBlZEFkZHJTbWJpb3NI YW5kbGUgPSBTTUJJT1NfSEFORExFX1BJX1JFU0VSVkVEOw0KKyAgU3RhdHVzID0gU21iaW9zLT5B ZGQoU21iaW9zLCBOVUxMLCAmTWVtQXJyYXlNYXBwZWRBZGRyU21iaW9zSGFuZGxlLCAoRUZJX1NN QklPU19UQUJMRV9IRUFERVIqKVR5cGUxOVJlY29yZCk7DQorICBBU1NFUlRfRUZJX0VSUk9SKFN0 YXR1cyk7DQorDQorICBUb3RhbE1lbW9yeVNpemUgPSBHZXRTeXN0ZW1NZW1vcnlTaXplQWJvdmU0 Z2IoKTsNCisgIFR5cGUxOVJlY29yZC0+U3RhcnRpbmdBZGRyZXNzID0gMHhGRkZGRkZGRjsNCisg IFR5cGUxOVJlY29yZC0+RXh0ZW5kZWRTdGFydGluZ0FkZHJlc3MgPSAweEZGRkZGRkZGOw0KKyAg VHlwZTE5UmVjb3JkLT5FeHRlbmRlZEVuZGluZ0FkZHJlc3MgPSBUb3RhbE1lbW9yeVNpemUgKyAw eEZGRkZGRkZGIC0gMTsNCisNCisgIE1lbUFycmF5TWFwcGVkQWRkclNtYmlvc0hhbmRsZSA9IFNN QklPU19IQU5ETEVfUElfUkVTRVJWRUQ7DQorICBTdGF0dXMgPSBTbWJpb3MtPkFkZChTbWJpb3Ms IE5VTEwsICZNZW1BcnJheU1hcHBlZEFkZHJTbWJpb3NIYW5kbGUsIChFRklfU01CSU9TX1RBQkxF X0hFQURFUiopVHlwZTE5UmVjb3JkKTsNCisgIEZyZWVQb29sKFR5cGUxOVJlY29yZCk7DQorICBB U1NFUlRfRUZJX0VSUk9SKFN0YXR1cyk7DQorDQorICByZXR1cm4gU3RhdHVzOw0KK30NCmRpZmYg LS1naXQgYS9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvQWNwaVRhYmxlcy9BY3Bp VGFibGVzLmluZiBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9BY3BpVGFibGVz L0FjcGlUYWJsZXMuaW5mDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMC4u ODM5NjI2ZWI4Ng0KLS0tIC9kZXYvbnVsbA0KKysrIGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3Bl bkJvYXJkUGtnL0FjcGlUYWJsZXMvQWNwaVRhYmxlcy5pbmYNCkBAIC0wLDAgKzEsMzEgQEANCisj IyBAZmlsZQ0KKyMgIENvbXBvbmVudCBkZXNjcmlwdGlvbiBmaWxlIGZvciBQbGF0Zm9ybUFjcGlU YWJsZXMgbW9kdWxlLg0KKyMNCisjICBBQ1BJIHRhYmxlIGRhdGEgYW5kIEFTTCBzb3VyY2VzIHJl cXVpcmVkIHRvIGJvb3QgdGhlIHBsYXRmb3JtLg0KKyMNCisjIENvcHlyaWdodCAoYykgMjAwOCAt IDIwMTggSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuIDxCUj4NCisjDQor IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KKyMNCisjIw0K Kw0KK1tEZWZpbmVzXQ0KKyAgSU5GX1ZFUlNJT04gICAgICAgICAgICAgICAgICAgID0gMHgwMDAx MDAwNQ0KKyAgQkFTRV9OQU1FICAgICAgICAgICAgICAgICAgICAgID0gUGxhdGZvcm1BY3BpVGFi bGVzDQorICBGSUxFX0dVSUQgICAgICAgICAgICAgICAgICAgICAgPSA3RTM3NEUyNS04RTAxLTRG RUUtODdGMi0zOTBDMjNDNjA2Q0QNCisgIE1PRFVMRV9UWVBFICAgICAgICAgICAgICAgICAgICA9 IFVTRVJfREVGSU5FRA0KKyAgVkVSU0lPTl9TVFJJTkcgICAgICAgICAgICAgICAgID0gMS4wDQor DQorIw0KKyMgVGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiBpcyBmb3IgcmVmZXJlbmNlIG9ubHkg YW5kIG5vdCByZXF1aXJlZCBieSB0aGUgYnVpbGQgdG9vbHMuDQorIw0KKyMgIFZBTElEX0FSQ0hJ VEVDVFVSRVMgICAgICAgICAgID0gSUEzMiBYNjQgRUJDDQorIw0KKw0KK1tTb3VyY2VzXQ0KKyAg UGxhdGZvcm0uaA0KKyAgRHNkdC5hc2wNCisNCitbUGFja2FnZXNdDQorICBNZGVQa2cvTWRlUGtn LmRlYw0KKw0KZGlmZiAtLWdpdCBhL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9B Y3BpVGFibGVzL0RzZHQuYXNsIGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0Fj cGlUYWJsZXMvRHNkdC5hc2wNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAw Li43NmE4ZmJjMDgxDQotLS0gL2Rldi9udWxsDQorKysgYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NP cGVuQm9hcmRQa2cvQWNwaVRhYmxlcy9Ec2R0LmFzbA0KQEAgLTAsMCArMSw4MjEgQEANCisvKiog QGZpbGUNCisgIENvbnRhaW5zIHJvb3QgbGV2ZWwgbmFtZSBzcGFjZSBvYmplY3RzIGZvciB0aGUg cGxhdGZvcm0NCisNCisgIENvcHlyaWdodCAoYykgMjAwOCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxs IHJpZ2h0cyByZXNlcnZlZC4gPEJSPg0KKw0KKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJT RC0yLUNsYXVzZS1QYXRlbnQNCisqKi8NCisNCitEZWZpbml0aW9uQmxvY2sgKCJEc2R0LmFtbCIs ICJEU0RUIiwgMSwgIklOVEVMICIsICJPVk1GICAgICIsIDQpIHsNCisgIC8vDQorICAvLyBTeXN0 ZW0gU2xlZXAgU3RhdGVzDQorICAvLw0KKyAgTmFtZSAoXF9TMywgUGFja2FnZSAoKSB7NSwgNSwg MCwgMH0pDQorICBOYW1lIChcX1M0LCBQYWNrYWdlICgpIHs2LCA2LCAwLCAwfSkNCisgIE5hbWUg KFxfUzUsIFBhY2thZ2UgKCkgezcsIDcsIDAsIDB9KQ0KKw0KKyAgTmFtZSAoR1BJQywgWmVybykN CisgIE1ldGhvZCAoX1BJQywgMSwgTm90U2VyaWFsaXplZCkgIC8vIF9QSUM6IEludGVycnVwdCBN b2RlbA0KKyAgew0KKyAgICAgIEdQSUMgPSBBcmcwDQorICB9DQorICAvLw0KKyAgLy8gIFN5c3Rl bSBCdXMNCisgIC8vDQorICBTY29wZSAoXF9TQikgew0KKyAgICAvLw0KKyAgICAvLyBQQ0kgUm9v dCBCcmlkZ2UNCisgICAgLy8NCisgICAgRGV2aWNlIChQQ0kwKSB7DQorICAgICAgTmFtZSAoX0hJ RCwgRUlTQUlEICgiUE5QMEEwMyIpKQ0KKyAgICAgIE5hbWUgKF9BRFIsIDB4MDAwMDAwMDApDQor ICAgICAgTmFtZSAoX0JCTiwgMHgwMCkNCisgICAgICBOYW1lIChfVUlELCAweDAwKQ0KKw0KKw0K KyAgICAgIC8vIEN1cnJlbnQgcmVzb3VyY2Ugc2V0dGluZ3MNCisgICAgICBOYW1lIChfQ1JTLCBS ZXNvdXJjZVRlbXBsYXRlICgpIHsNCisgICAgICAgIFdPUkRCdXNOdW1iZXIgKCAgICAgICAgICAv LyBCdXMgbnVtYmVyIHJlc291cmNlICgwKTsgdGhlIGJyaWRnZSBwcm9kdWNlcyBidXMgbnVtYmVy cyBmb3IgaXRzIHN1YnNlcXVlbnQgYnVzZXMNCisgICAgICAgICAgUmVzb3VyY2VQcm9kdWNlciwg ICAgICAvLyBiaXQgMCBvZiBnZW5lcmFsIGZsYWdzIGlzIDENCisgICAgICAgICAgTWluRml4ZWQs ICAgICAgICAgICAgICAvLyBSYW5nZSBpcyBmaXhlZA0KKyAgICAgICAgICBNYXhGaXhlZCwgICAg ICAgICAgICAgIC8vIFJhbmdlIGlzIGZpeGVkDQorICAgICAgICAgIFBvc0RlY29kZSwgICAgICAg ICAgICAgLy8gUG9zRGVjb2RlDQorICAgICAgICAgIDB4MDAwMCwgICAgICAgICAgICAgICAgLy8g R3JhbnVsYXJpdHkNCisgICAgICAgICAgMHgwMDAwLCAgICAgICAgICAgICAgICAvLyBNaW4NCisg ICAgICAgICAgMHgwMEZGLCAgICAgICAgICAgICAgICAvLyBNYXgNCisgICAgICAgICAgMHgwMDAw LCAgICAgICAgICAgICAgICAvLyBUcmFuc2xhdGlvbg0KKyAgICAgICAgICAweDAxMDAgICAgICAg ICAgICAgICAgIC8vIFJhbmdlIExlbmd0aCA9IE1heC1NaW4rMQ0KKyAgICAgICAgICApDQorDQor ICAgICAgICBJTyAoRGVjb2RlMTYsIDB4Q0Y4LCAweENGOCwgMHgwMSwgMHgwOCkgICAgICAgLy9D b25zdW1lZCByZXNvdXJjZSAoMHhDRjgtMHhDRkYpDQorDQorICAgICAgICBXT1JESU8gKCAgICAg ICAgICAgICAgICAgLy8gQ29uc3VtZWQtYW5kLXByb2R1Y2VkIHJlc291cmNlIChhbGwgSS9PIGJl bG93IENGOCkNCisgICAgICAgICAgUmVzb3VyY2VQcm9kdWNlciwgICAgICAvLyBiaXQgMCBvZiBn ZW5lcmFsIGZsYWdzIGlzIDANCisgICAgICAgICAgTWluRml4ZWQsICAgICAgICAgICAgICAvLyBS YW5nZSBpcyBmaXhlZA0KKyAgICAgICAgICBNYXhGaXhlZCwgICAgICAgICAgICAgIC8vIFJhbmdl IGlzIGZpeGVkDQorICAgICAgICAgIFBvc0RlY29kZSwNCisgICAgICAgICAgRW50aXJlUmFuZ2Us DQorICAgICAgICAgIDB4MDAwMCwgICAgICAgICAgICAgICAgLy8gR3JhbnVsYXJpdHkNCisgICAg ICAgICAgMHgwMDAwLCAgICAgICAgICAgICAgICAvLyBNaW4NCisgICAgICAgICAgMHgwQ0Y3LCAg ICAgICAgICAgICAgICAvLyBNYXgNCisgICAgICAgICAgMHgwMDAwLCAgICAgICAgICAgICAgICAv LyBUcmFuc2xhdGlvbg0KKyAgICAgICAgICAweDBDRjggICAgICAgICAgICAgICAgIC8vIFJhbmdl IExlbmd0aA0KKyAgICAgICAgICApDQorDQorICAgICAgICBXT1JESU8gKCAgICAgICAgICAgICAg ICAgLy8gQ29uc3VtZWQtYW5kLXByb2R1Y2VkIHJlc291cmNlIChhbGwgSS9PIGFib3ZlIENGRikN CisgICAgICAgICAgUmVzb3VyY2VQcm9kdWNlciwgICAgICAvLyBiaXQgMCBvZiBnZW5lcmFsIGZs YWdzIGlzIDANCisgICAgICAgICAgTWluRml4ZWQsICAgICAgICAgICAgICAvLyBSYW5nZSBpcyBm aXhlZA0KKyAgICAgICAgICBNYXhGaXhlZCwgICAgICAgICAgICAgIC8vIFJhbmdlIGlzIGZpeGVk DQorICAgICAgICAgIFBvc0RlY29kZSwNCisgICAgICAgICAgRW50aXJlUmFuZ2UsDQorICAgICAg ICAgIDB4MDAwMCwgICAgICAgICAgICAgICAgLy8gR3JhbnVsYXJpdHkNCisgICAgICAgICAgMHgw RDAwLCAgICAgICAgICAgICAgICAvLyBNaW4NCisgICAgICAgICAgMHhGRkZGLCAgICAgICAgICAg ICAgICAvLyBNYXgNCisgICAgICAgICAgMHgwMDAwLCAgICAgICAgICAgICAgICAvLyBUcmFuc2xh dGlvbg0KKyAgICAgICAgICAweEYzMDAgICAgICAgICAgICAgICAgIC8vIFJhbmdlIExlbmd0aA0K KyAgICAgICAgICApDQorDQorICAgICAgICBEV09SRE1FTU9SWSAoICAgICAgICAgICAgLy8gRGVz Y3JpcHRvciBmb3IgbGVnYWN5IFZHQSB2aWRlbyBSQU0NCisgICAgICAgICAgUmVzb3VyY2VQcm9k dWNlciwgICAgICAvLyBiaXQgMCBvZiBnZW5lcmFsIGZsYWdzIGlzIDANCisgICAgICAgICAgUG9z RGVjb2RlLA0KKyAgICAgICAgICBNaW5GaXhlZCwgICAgICAgICAgICAgIC8vIFJhbmdlIGlzIGZp eGVkDQorICAgICAgICAgIE1heEZpeGVkLCAgICAgICAgICAgICAgLy8gUmFuZ2UgaXMgRml4ZWQN CisgICAgICAgICAgQ2FjaGVhYmxlLA0KKyAgICAgICAgICBSZWFkV3JpdGUsDQorICAgICAgICAg IDB4MDAwMDAwMDAsICAgICAgICAgICAgLy8gR3JhbnVsYXJpdHkNCisgICAgICAgICAgMHgwMDBB MDAwMCwgICAgICAgICAgICAvLyBNaW4NCisgICAgICAgICAgMHgwMDBCRkZGRiwgICAgICAgICAg ICAvLyBNYXgNCisgICAgICAgICAgMHgwMDAwMDAwMCwgICAgICAgICAgICAvLyBUcmFuc2xhdGlv bg0KKyAgICAgICAgICAweDAwMDIwMDAwICAgICAgICAgICAgIC8vIFJhbmdlIExlbmd0aA0KKyAg ICAgICAgICApDQorDQorICAgICAgICBEV09SRE1FTU9SWSAoICAgICAgICAgICAgLy8gRGVzY3Jp cHRvciBmb3IgMzItYml0IE1NSU8NCisgICAgICAgICAgUmVzb3VyY2VQcm9kdWNlciwgICAgICAv LyBiaXQgMCBvZiBnZW5lcmFsIGZsYWdzIGlzIDANCisgICAgICAgICAgUG9zRGVjb2RlLA0KKyAg ICAgICAgICBNaW5GaXhlZCwgICAgICAgICAgICAgIC8vIFJhbmdlIGlzIGZpeGVkDQorICAgICAg ICAgIE1heEZpeGVkLCAgICAgICAgICAgICAgLy8gUmFuZ2UgaXMgRml4ZWQNCisgICAgICAgICAg Tm9uQ2FjaGVhYmxlLA0KKyAgICAgICAgICBSZWFkV3JpdGUsDQorICAgICAgICAgIDB4MDAwMDAw MDAsICAgICAgICAgICAgLy8gR3JhbnVsYXJpdHkNCisgICAgICAgICAgMHhGMDAwMDAwMCwgICAg ICAgICAgICAvLyBNaW4NCisgICAgICAgICAgMHhGQkZGRkZGRiwgICAgICAgICAgICAvLyBNYXgN CisgICAgICAgICAgMHgwMDAwMDAwMCwgICAgICAgICAgICAvLyBUcmFuc2xhdGlvbg0KKyAgICAg ICAgICAweDBDMDAwMDAwLCAgICAgICAgICAgIC8vIFJhbmdlIExlbmd0aA0KKyAgICAgICAgICAs ICAgICAgICAgICAgICAgICAgICAgIC8vIFJlc291cmNlU291cmNlSW5kZXgNCisgICAgICAgICAg LCAgICAgICAgICAgICAgICAgICAgICAvLyBSZXNvdXJjZVNvdXJjZQ0KKyAgICAgICAgICBQVzMy ICAgICAgICAgICAgICAgICAgIC8vIERlc2NyaXB0b3JOYW1lDQorICAgICAgICAgICkNCisgICAg ICB9KQ0KKw0KKwkvLw0KKyAgICAgIC8vIFBDSSBJbnRlcnJ1cHQgUm91dGluZyBUYWJsZSAtIFBJ QyBNb2RlIE9ubHkNCisgICAgICAvLw0KKyAgICAgIC8vIElmIHlvdSBjaGFuZ2UgdGhlIElSUSBt YXBwaW5nIGhlcmUgeW91IGFsc28gbmVlZA0KKyAgICAgIC8vIHRvIGNoYW5nZSB0aGUgbWFwcGlu ZyBpbiB0aGUgc291dGggYnJpZGdlDQorICAgICAgLy8gKHBjaS1jb25mLnB5KSBhbmQgaW4gdGhl IEJJT1MuDQorICAgICAgLy8gSU5UQSAtPiAweGEgKDEwKQ0KKyAgICAgIC8vIElOVEIgLT4gMHhi ICgxMSkNCisgICAgICAvLyBJTlRDIC0+IDB4YSAoMTApDQorICAgICAgLy8gSU5URCAtPiAweGIg KDExKQ0KKw0KKyAgICAgICBNZXRob2QgKF9QUlQsIDAsIE5vdFNlcmlhbGl6ZWQpIHsNCisgICAg ICAgICAgIElmIChHUElDKSB7DQorICAgICAgICAgICAgIFJldHVybiAoQVIwMCkgLy8gQVBJQyBN b2RlDQorICAgICAgICAgICB9DQorICAgICAgICAgICBSZXR1cm4gKFBSMDApIC8vIFBJQyBNb2Rl DQorICAgICAgfQ0KKw0KKyAgICAgIE5hbWUgKFBSMDAsIFBhY2thZ2UoKXsNCisJICAgIFBhY2th Z2UgKCkgezB4MDAwRkZGRiwgMHgwMCwgXF9TQi5QQ0kwLkxQQy5MTktBLCAweDAwfSwNCisgICAg ICAgICAgICBQYWNrYWdlICgpIHsweDAwMEZGRkYsIDB4MDEsIFxfU0IuUENJMC5MUEMuTE5LQiwg MHgwMH0sDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDBGRkZGLCAweDAyLCBcX1NCLlBD STAuTFBDLkxOS0MsIDB4MDB9LA0KKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwRkZGRiwg MHgwMywgXF9TQi5QQ0kwLkxQQy5MTktELCAweDAwfSwNCisNCisgICAgICAgICAgICAvLw0KKyAg ICAgICAgICAgIC8vIEJ1cyAwLCBEZXZpY2UgMQ0KKyAgICAgICAgICAgIC8vDQorICAgICAgICAg ICAgUGFja2FnZSAoKSB7MHgwMDAxRkZGRiwgMHgwMCwgXF9TQi5QQ0kwLkxQQy5MTktBLCAweDAw fSwNCisgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDFGRkZGLCAweDAxLCBcX1NCLlBDSTAu TFBDLkxOS0IsIDB4MDB9LA0KKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMUZGRkYsIDB4 MDIsIFxfU0IuUENJMC5MUEMuTE5LQywgMHgwMH0sDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7 MHgwMDAxRkZGRiwgMHgwMywgXF9TQi5QQ0kwLkxQQy5MTktELCAweDAwfSwNCisNCisJICAgIFBh Y2thZ2UgKCkgezB4MDAwMkZGRkYsIDB4MDAsIFxfU0IuUENJMC5MUEMuTE5LQSwgMHgwMH0sDQor ICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAyRkZGRiwgMHgwMSwgXF9TQi5QQ0kwLkxQQy5M TktCLCAweDAwfSwNCisgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDJGRkZGLCAweDAyLCBc X1NCLlBDSTAuTFBDLkxOS0MsIDB4MDB9LA0KKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAw MkZGRkYsIDB4MDMsIFxfU0IuUENJMC5MUEMuTE5LRCwgMHgwMH0sDQorICAgICAgICAgICAgLy8N CisgICAgICAgICAgICAvLyBCdXMgMCwgRGV2aWNlIDMNCisgICAgICAgICAgICAvLw0KKyAgICAg ICAgICAgIFBhY2thZ2UgKCkgezB4MDAwM0ZGRkYsIDB4MDAsIFxfU0IuUENJMC5MUEMuTE5LQSwg MHgwMH0sDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAzRkZGRiwgMHgwMSwgXF9TQi5Q Q0kwLkxQQy5MTktCLCAweDAwfSwNCisgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDNGRkZG LCAweDAyLCBcX1NCLlBDSTAuTFBDLkxOS0MsIDB4MDB9LA0KKyAgICAgICAgICAgIFBhY2thZ2Ug KCkgezB4MDAwM0ZGRkYsIDB4MDMsIFxfU0IuUENJMC5MUEMuTE5LRCwgMHgwMH0sDQorDQorICAg ICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDA0RkZGRiwgMHgwMCwgXF9TQi5QQ0kwLkxQQy5MTktB LCAweDAwfSwNCisgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDRGRkZGLCAweDAxLCBcX1NC LlBDSTAuTFBDLkxOS0IsIDB4MDB9LA0KKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwNEZG RkYsIDB4MDIsIFxfU0IuUENJMC5MUEMuTE5LQywgMHgwMH0sDQorICAgICAgICAgICAgUGFja2Fn ZSAoKSB7MHgwMDA0RkZGRiwgMHgwMywgXF9TQi5QQ0kwLkxQQy5MTktELCAweDAwfSwNCisNCisg ICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDVGRkZGLCAweDAwLCBcX1NCLlBDSTAuTFBDLkxO S0EsIDB4MDB9LA0KKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwNUZGRkYsIDB4MDEsIFxf U0IuUENJMC5MUEMuTE5LQiwgMHgwMH0sDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDA1 RkZGRiwgMHgwMiwgXF9TQi5QQ0kwLkxQQy5MTktDLCAweDAwfSwNCisgICAgICAgICAgICBQYWNr YWdlICgpIHsweDAwMDVGRkZGLCAweDAzLCBcX1NCLlBDSTAuTFBDLkxOS0QsIDB4MDB9LA0KKw0K KyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwNkZGRkYsIDB4MDAsIFxfU0IuUENJMC5MUEMu TE5LQSwgMHgwMH0sDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDA2RkZGRiwgMHgwMSwg XF9TQi5QQ0kwLkxQQy5MTktCLCAweDAwfSwNCisgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAw MDZGRkZGLCAweDAyLCBcX1NCLlBDSTAuTFBDLkxOS0MsIDB4MDB9LA0KKyAgICAgICAgICAgIFBh Y2thZ2UgKCkgezB4MDAwNkZGRkYsIDB4MDMsIFxfU0IuUENJMC5MUEMuTE5LRCwgMHgwMH0sDQor DQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDA3RkZGRiwgMHgwMCwgXF9TQi5QQ0kwLkxQ Qy5MTktBLCAweDAwfSwNCisgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDdGRkZGLCAweDAx LCBcX1NCLlBDSTAuTFBDLkxOS0IsIDB4MDB9LA0KKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4 MDAwN0ZGRkYsIDB4MDIsIFxfU0IuUENJMC5MUEMuTE5LQywgMHgwMH0sDQorICAgICAgICAgICAg UGFja2FnZSAoKSB7MHgwMDA3RkZGRiwgMHgwMywgXF9TQi5QQ0kwLkxQQy5MTktELCAweDAwfSwN CisNCisgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDhGRkZGLCAweDAwLCBcX1NCLlBDSTAu TFBDLkxOS0EsIDB4MDB9LA0KKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwOEZGRkYsIDB4 MDEsIFxfU0IuUENJMC5MUEMuTE5LQiwgMHgwMH0sDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7 MHgwMDA4RkZGRiwgMHgwMiwgXF9TQi5QQ0kwLkxQQy5MTktDLCAweDAwfSwNCisgICAgICAgICAg ICBQYWNrYWdlICgpIHsweDAwMDhGRkZGLCAweDAzLCBcX1NCLlBDSTAuTFBDLkxOS0QsIDB4MDB9 LA0KKw0KKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwOUZGRkYsIDB4MDAsIFxfU0IuUENJ MC5MUEMuTE5LQSwgMHgwMH0sDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDA5RkZGRiwg MHgwMSwgXF9TQi5QQ0kwLkxQQy5MTktCLCAweDAwfSwNCisgICAgICAgICAgICBQYWNrYWdlICgp IHsweDAwMDlGRkZGLCAweDAyLCBcX1NCLlBDSTAuTFBDLkxOS0MsIDB4MDB9LA0KKyAgICAgICAg ICAgIFBhY2thZ2UgKCkgezB4MDAwOUZGRkYsIDB4MDMsIFxfU0IuUENJMC5MUEMuTE5LRCwgMHgw MH0sDQorDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDBBRkZGRiwgMHgwMCwgXF9TQi5Q Q0kwLkxQQy5MTktBLCAweDAwfSwNCisgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMEFGRkZG LCAweDAxLCBcX1NCLlBDSTAuTFBDLkxOS0IsIDB4MDB9LA0KKyAgICAgICAgICAgIFBhY2thZ2Ug KCkgezB4MDAwQUZGRkYsIDB4MDIsIFxfU0IuUENJMC5MUEMuTE5LQywgMHgwMH0sDQorICAgICAg ICAgICAgUGFja2FnZSAoKSB7MHgwMDBBRkZGRiwgMHgwMywgXF9TQi5QQ0kwLkxQQy5MTktELCAw eDAwfSwNCisNCisgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMEJGRkZGLCAweDAwLCBcX1NC LlBDSTAuTFBDLkxOS0EsIDB4MDB9LA0KKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwQkZG RkYsIDB4MDEsIFxfU0IuUENJMC5MUEMuTE5LQiwgMHgwMH0sDQorICAgICAgICAgICAgUGFja2Fn ZSAoKSB7MHgwMDBCRkZGRiwgMHgwMiwgXF9TQi5QQ0kwLkxQQy5MTktDLCAweDAwfSwNCisgICAg ICAgICAgICBQYWNrYWdlICgpIHsweDAwMEJGRkZGLCAweDAzLCBcX1NCLlBDSTAuTFBDLkxOS0Qs IDB4MDB9LA0KKw0KKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwQ0ZGRkYsIDB4MDAsIFxf U0IuUENJMC5MUEMuTE5LQSwgMHgwMH0sDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDBD RkZGRiwgMHgwMSwgXF9TQi5QQ0kwLkxQQy5MTktCLCAweDAwfSwNCisgICAgICAgICAgICBQYWNr YWdlICgpIHsweDAwMENGRkZGLCAweDAyLCBcX1NCLlBDSTAuTFBDLkxOS0MsIDB4MDB9LA0KKyAg ICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwQ0ZGRkYsIDB4MDMsIFxfU0IuUENJMC5MUEMuTE5L RCwgMHgwMH0sDQorDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDBERkZGRiwgMHgwMCwg XF9TQi5QQ0kwLkxQQy5MTktBLCAweDAwfSwNCisgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAw MERGRkZGLCAweDAxLCBcX1NCLlBDSTAuTFBDLkxOS0IsIDB4MDB9LA0KKyAgICAgICAgICAgIFBh Y2thZ2UgKCkgezB4MDAwREZGRkYsIDB4MDIsIFxfU0IuUENJMC5MUEMuTE5LQywgMHgwMH0sDQor ICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDBERkZGRiwgMHgwMywgXF9TQi5QQ0kwLkxQQy5M TktELCAweDAwfSwNCisNCisgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMEVGRkZGLCAweDAw LCBcX1NCLlBDSTAuTFBDLkxOS0EsIDB4MDB9LA0KKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4 MDAwRUZGRkYsIDB4MDEsIFxfU0IuUENJMC5MUEMuTE5LQiwgMHgwMH0sDQorICAgICAgICAgICAg UGFja2FnZSAoKSB7MHgwMDBFRkZGRiwgMHgwMiwgXF9TQi5QQ0kwLkxQQy5MTktDLCAweDAwfSwN CisgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMEVGRkZGLCAweDAzLCBcX1NCLlBDSTAuTFBD LkxOS0QsIDB4MDB9LA0KKw0KKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwRkZGRkYsIDB4 MDAsIFxfU0IuUENJMC5MUEMuTE5LQSwgMHgwMH0sDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7 MHgwMDBGRkZGRiwgMHgwMSwgXF9TQi5QQ0kwLkxQQy5MTktCLCAweDAwfSwNCisgICAgICAgICAg ICBQYWNrYWdlICgpIHsweDAwMEZGRkZGLCAweDAyLCBcX1NCLlBDSTAuTFBDLkxOS0MsIDB4MDB9 LA0KKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwRkZGRkYsIDB4MDMsIFxfU0IuUENJMC5M UEMuTE5LRCwgMHgwMH0sDQorDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxMEZGRkYs IDB4MDAsIFxfU0IuUENJMC5MUEMuTE5LQSwgMHgwMH0sDQorICAgICAgICAgICAgUGFja2FnZSAo KSB7MHgwMDAxMEZGRkYsIDB4MDEsIFxfU0IuUENJMC5MUEMuTE5LQiwgMHgwMH0sDQorICAgICAg ICAgICAgUGFja2FnZSAoKSB7MHgwMDAxMEZGRkYsIDB4MDIsIFxfU0IuUENJMC5MUEMuTE5LQywg MHgwMH0sDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxMEZGRkYsIDB4MDMsIFxfU0Iu UENJMC5MUEMuTE5LRCwgMHgwMH0sDQorDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAx MUZGRkYsIDB4MDAsIFxfU0IuUENJMC5MUEMuTE5LQSwgMHgwMH0sDQorICAgICAgICAgICAgUGFj a2FnZSAoKSB7MHgwMDAxMUZGRkYsIDB4MDEsIFxfU0IuUENJMC5MUEMuTE5LQiwgMHgwMH0sDQor ICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxMUZGRkYsIDB4MDIsIFxfU0IuUENJMC5MUEMu TE5LQywgMHgwMH0sDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxMUZGRkYsIDB4MDMs IFxfU0IuUENJMC5MUEMuTE5LRCwgMHgwMH0sDQorDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7 MHgwMDAxMkZGRkYsIDB4MDAsIFxfU0IuUENJMC5MUEMuTE5LQSwgMHgwMH0sDQorICAgICAgICAg ICAgUGFja2FnZSAoKSB7MHgwMDAxMkZGRkYsIDB4MDEsIFxfU0IuUENJMC5MUEMuTE5LQiwgMHgw MH0sDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxMkZGRkYsIDB4MDIsIFxfU0IuUENJ MC5MUEMuTE5LQywgMHgwMH0sDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxMkZGRkYs IDB4MDMsIFxfU0IuUENJMC5MUEMuTE5LRCwgMHgwMH0sDQorDQorICAgICAgICAgICAgUGFja2Fn ZSAoKSB7MHgwMDAxM0ZGRkYsIDB4MDAsIFxfU0IuUENJMC5MUEMuTE5LQSwgMHgwMH0sDQorICAg ICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxM0ZGRkYsIDB4MDEsIFxfU0IuUENJMC5MUEMuTE5L QiwgMHgwMH0sDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxM0ZGRkYsIDB4MDIsIFxf U0IuUENJMC5MUEMuTE5LQywgMHgwMH0sDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAx M0ZGRkYsIDB4MDMsIFxfU0IuUENJMC5MUEMuTE5LRCwgMHgwMH0sDQorDQorICAgICAgICAgICAg UGFja2FnZSAoKSB7MHgwMDAxNEZGRkYsIDB4MDAsIFxfU0IuUENJMC5MUEMuTE5LQSwgMHgwMH0s DQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxNEZGRkYsIDB4MDEsIFxfU0IuUENJMC5M UEMuTE5LQiwgMHgwMH0sDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxNEZGRkYsIDB4 MDIsIFxfU0IuUENJMC5MUEMuTE5LQywgMHgwMH0sDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7 MHgwMDAxNEZGRkYsIDB4MDMsIFxfU0IuUENJMC5MUEMuTE5LRCwgMHgwMH0sDQorDQorICAgICAg ICAgICAgUGFja2FnZSAoKSB7MHgwMDAxNUZGRkYsIDB4MDAsIFxfU0IuUENJMC5MUEMuTE5LQSwg MHgwMH0sDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxNUZGRkYsIDB4MDEsIFxfU0Iu UENJMC5MUEMuTE5LQiwgMHgwMH0sDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxNUZG RkYsIDB4MDIsIFxfU0IuUENJMC5MUEMuTE5LQywgMHgwMH0sDQorICAgICAgICAgICAgUGFja2Fn ZSAoKSB7MHgwMDAxNUZGRkYsIDB4MDMsIFxfU0IuUENJMC5MUEMuTE5LRCwgMHgwMH0sDQorDQor ICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxNkZGRkYsIDB4MDAsIFxfU0IuUENJMC5MUEMu TE5LQSwgMHgwMH0sDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxNkZGRkYsIDB4MDEs IFxfU0IuUENJMC5MUEMuTE5LQiwgMHgwMH0sDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgw MDAxNkZGRkYsIDB4MDIsIFxfU0IuUENJMC5MUEMuTE5LQywgMHgwMH0sDQorICAgICAgICAgICAg UGFja2FnZSAoKSB7MHgwMDAxNkZGRkYsIDB4MDMsIFxfU0IuUENJMC5MUEMuTE5LRCwgMHgwMH0s DQorDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxN0ZGRkYsIDB4MDAsIFxfU0IuUENJ MC5MUEMuTE5LQSwgMHgwMH0sDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxN0ZGRkYs IDB4MDEsIFxfU0IuUENJMC5MUEMuTE5LQiwgMHgwMH0sDQorICAgICAgICAgICAgUGFja2FnZSAo KSB7MHgwMDAxN0ZGRkYsIDB4MDIsIFxfU0IuUENJMC5MUEMuTE5LQywgMHgwMH0sDQorICAgICAg ICAgICAgUGFja2FnZSAoKSB7MHgwMDAxN0ZGRkYsIDB4MDMsIFxfU0IuUENJMC5MUEMuTE5LRCwg MHgwMH0sDQorDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxOEZGRkYsIDB4MDAsIFxf U0IuUENJMC5MUEMuTE5LQSwgMHgwMH0sDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAx OEZGRkYsIDB4MDEsIFxfU0IuUENJMC5MUEMuTE5LQiwgMHgwMH0sDQorICAgICAgICAgICAgUGFj a2FnZSAoKSB7MHgwMDAxOEZGRkYsIDB4MDIsIFxfU0IuUENJMC5MUEMuTE5LQywgMHgwMH0sDQor ICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxOEZGRkYsIDB4MDMsIFxfU0IuUENJMC5MUEMu TE5LRCwgMHgwMH0sDQorDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxRUZGRkYsIDB4 MDAsIFxfU0IuUENJMC5MUEMuTE5LQSwgMHgwMH0sDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7 MHgwMDAxRUZGRkYsIDB4MDEsIFxfU0IuUENJMC5MUEMuTE5LQiwgMHgwMH0sDQorICAgICAgICAg ICAgUGFja2FnZSAoKSB7MHgwMDAxRUZGRkYsIDB4MDIsIFxfU0IuUENJMC5MUEMuTE5LQywgMHgw MH0sDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxRUZGRkYsIDB4MDMsIFxfU0IuUENJ MC5MUEMuTE5LRCwgMHgwMH0sDQorDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxOUZG RkYsIDB4MDAsIFxfU0IuUENJMC5MUEMuTE5LQSwgMHgwMH0sDQorICAgICAgICAgICAgUGFja2Fn ZSAoKSB7MHgwMDAxOUZGRkYsIDB4MDEsIFxfU0IuUENJMC5MUEMuTE5LQiwgMHgwMH0sDQorICAg ICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxOUZGRkYsIDB4MDIsIFxfU0IuUENJMC5MUEMuTE5L QywgMHgwMH0sDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxOUZGRkYsIDB4MDMsIFxf U0IuUENJMC5MUEMuTE5LRCwgMHgwMH0sDQorDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgw MDAxQUZGRkYsIDB4MDAsIFxfU0IuUENJMC5MUEMuTE5LQSwgMHgwMH0sDQorICAgICAgICAgICAg UGFja2FnZSAoKSB7MHgwMDAxQUZGRkYsIDB4MDEsIFxfU0IuUENJMC5MUEMuTE5LQiwgMHgwMH0s DQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxQUZGRkYsIDB4MDIsIFxfU0IuUENJMC5M UEMuTE5LQywgMHgwMH0sDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxQUZGRkYsIDB4 MDMsIFxfU0IuUENJMC5MUEMuTE5LRCwgMHgwMH0sDQorDQorICAgICAgICAgICAgUGFja2FnZSAo KSB7MHgwMDAxQkZGRkYsIDB4MDAsIFxfU0IuUENJMC5MUEMuTE5LQSwgMHgwMH0sDQorICAgICAg ICAgICAgUGFja2FnZSAoKSB7MHgwMDAxQkZGRkYsIDB4MDEsIFxfU0IuUENJMC5MUEMuTE5LQiwg MHgwMH0sDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxQkZGRkYsIDB4MDIsIFxfU0Iu UENJMC5MUEMuTE5LQywgMHgwMH0sDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxQkZG RkYsIDB4MDMsIFxfU0IuUENJMC5MUEMuTE5LRCwgMHgwMH0sDQorDQorICAgICAgICAgICAgUGFj a2FnZSAoKSB7MHgwMDAxQ0ZGRkYsIDB4MDAsIFxfU0IuUENJMC5MUEMuTE5LQSwgMHgwMH0sDQor ICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxQ0ZGRkYsIDB4MDEsIFxfU0IuUENJMC5MUEMu TE5LQiwgMHgwMH0sDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxQ0ZGRkYsIDB4MDIs IFxfU0IuUENJMC5MUEMuTE5LQywgMHgwMH0sDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgw MDAxQ0ZGRkYsIDB4MDMsIFxfU0IuUENJMC5MUEMuTE5LRCwgMHgwMH0sDQorDQorICAgICAgICAg ICAgUGFja2FnZSAoKSB7MHgwMDAxREZGRkYsIDB4MDAsIFxfU0IuUENJMC5MUEMuTE5LQSwgMHgw MH0sDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxREZGRkYsIDB4MDEsIFxfU0IuUENJ MC5MUEMuTE5LQiwgMHgwMH0sDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxREZGRkYs IDB4MDIsIFxfU0IuUENJMC5MUEMuTE5LQywgMHgwMH0sDQorICAgICAgICAgICAgUGFja2FnZSAo KSB7MHgwMDAxREZGRkYsIDB4MDMsIFxfU0IuUENJMC5MUEMuTE5LRCwgMHgwMH0sDQorDQorICAg ICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxRkZGRkYsIDB4MDAsIFxfU0IuUENJMC5MUEMuTE5L QSwgMHgwMH0sDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxRkZGRkYsIDB4MDEsIFxf U0IuUENJMC5MUEMuTE5LQiwgMHgwMH0sDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAx RkZGRkYsIDB4MDIsIFxfU0IuUENJMC5MUEMuTE5LQywgMHgwMH0sDQorICAgICAgICAgICAgUGFj a2FnZSAoKSB7MHgwMDAxRkZGRkYsIDB4MDMsIFxfU0IuUENJMC5MUEMuTE5LRCwgMHgwMH0sDQor ICAgICAgICAgIH0NCisgICAgICAgICkNCisNCisgICAgICBOYW1lKEFSMDAsIFBhY2thZ2UoKXsN CisNCisJICAgIFBhY2thZ2UgKCkgezB4MDAwRkZGRiwgMHgwMCwgMCwgMTZ9LA0KKyAgICAgICAg ICAgIFBhY2thZ2UgKCkgezB4MDAwRkZGRiwgMHgwMSwgMCwgMTd9LA0KKyAgICAgICAgICAgIFBh Y2thZ2UgKCkgezB4MDAwRkZGRiwgMHgwMiwgMCwgMTh9LA0KKyAgICAgICAgICAgIFBhY2thZ2Ug KCkgezB4MDAwRkZGRiwgMHgwMywgMCwgMTl9LA0KKw0KKyAgICAgICAgICAgIC8vDQorICAgICAg ICAgICAgLy8gQnVzIDAsIERldmljZSAxDQorICAgICAgICAgICAgLy8NCisgICAgICAgICAgICBQ YWNrYWdlICgpIHsweDAwMDFGRkZGLCAweDAwLCAwLCAxNn0sDQorICAgICAgICAgICAgUGFja2Fn ZSAoKSB7MHgwMDAxRkZGRiwgMHgwMSwgMCwgMTd9LA0KKyAgICAgICAgICAgIFBhY2thZ2UgKCkg ezB4MDAwMUZGRkYsIDB4MDIsIDAsIDE4fSwNCisgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAw MDFGRkZGLCAweDAzLCAwLCAxOX0sDQorDQorCSAgICBQYWNrYWdlICgpIHsweDAwMDJGRkZGLCAw eDAwLCAwLCAxNn0sDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAyRkZGRiwgMHgwMSwg MCwgMTd9LA0KKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMkZGRkYsIDB4MDIsIDAsIDE4 fSwNCisgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDJGRkZGLCAweDAzLCAwLCAxOX0sDQor ICAgICAgICAgICAgLy8NCisgICAgICAgICAgICAvLyBCdXMgMCwgRGV2aWNlIDMNCisgICAgICAg ICAgICAvLw0KKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwM0ZGRkYsIDB4MDAsIDAsIDE2 fSwNCisgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDNGRkZGLCAweDAxLCAwLCAxN30sDQor ICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAzRkZGRiwgMHgwMiwgMCwgMTh9LA0KKyAgICAg ICAgICAgIFBhY2thZ2UgKCkgezB4MDAwM0ZGRkYsIDB4MDMsIDAsIDE5fSwNCisNCisgICAgICAg ICAgICBQYWNrYWdlICgpIHsweDAwMDRGRkZGLCAweDAwLCAwLCAxNn0sDQorICAgICAgICAgICAg UGFja2FnZSAoKSB7MHgwMDA0RkZGRiwgMHgwMSwgMCwgMTd9LA0KKyAgICAgICAgICAgIFBhY2th Z2UgKCkgezB4MDAwNEZGRkYsIDB4MDIsIDAsIDE4fSwNCisgICAgICAgICAgICBQYWNrYWdlICgp IHsweDAwMDRGRkZGLCAweDAzLCAwLCAxOX0sDQorDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7 MHgwMDA1RkZGRiwgMHgwMCwgMCwgMTZ9LA0KKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAw NUZGRkYsIDB4MDEsIDAsIDE3fSwNCisgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDVGRkZG LCAweDAyLCAwLCAxOH0sDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDA1RkZGRiwgMHgw MywgMCwgMTl9LA0KKw0KKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwNkZGRkYsIDB4MDAs IDAsIDE2fSwNCisgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDZGRkZGLCAweDAxLCAwLCAx N30sDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDA2RkZGRiwgMHgwMiwgMCwgMTh9LA0K KyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwNkZGRkYsIDB4MDMsIDAsIDE5fSwNCisNCisg ICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDdGRkZGLCAweDAwLCAwLCAxNn0sDQorICAgICAg ICAgICAgUGFja2FnZSAoKSB7MHgwMDA3RkZGRiwgMHgwMSwgMCwgMTd9LA0KKyAgICAgICAgICAg IFBhY2thZ2UgKCkgezB4MDAwN0ZGRkYsIDB4MDIsIDAsIDE4fSwNCisgICAgICAgICAgICBQYWNr YWdlICgpIHsweDAwMDdGRkZGLCAweDAzLCAwLCAxOX0sDQorDQorICAgICAgICAgICAgUGFja2Fn ZSAoKSB7MHgwMDA4RkZGRiwgMHgwMCwgMCwgMTZ9LA0KKyAgICAgICAgICAgIFBhY2thZ2UgKCkg ezB4MDAwOEZGRkYsIDB4MDEsIDAsIDE3fSwNCisgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAw MDhGRkZGLCAweDAyLCAwLCAxOH0sDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDA4RkZG RiwgMHgwMywgMCwgMTl9LA0KKw0KKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwOUZGRkYs IDB4MDAsIDAsIDE2fSwNCisgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDlGRkZGLCAweDAx LCAwLCAxN30sDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDA5RkZGRiwgMHgwMiwgMCwg MTh9LA0KKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwOUZGRkYsIDB4MDMsIDAsIDE5fSwN CisNCisgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMEFGRkZGLCAweDAwLCAwLCAxNn0sDQor ICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDBBRkZGRiwgMHgwMSwgMCwgMTd9LA0KKyAgICAg ICAgICAgIFBhY2thZ2UgKCkgezB4MDAwQUZGRkYsIDB4MDIsIDAsIDE4fSwNCisgICAgICAgICAg ICBQYWNrYWdlICgpIHsweDAwMEFGRkZGLCAweDAzLCAwLCAxOX0sDQorDQorICAgICAgICAgICAg UGFja2FnZSAoKSB7MHgwMDBCRkZGRiwgMHgwMCwgMCwgMTZ9LA0KKyAgICAgICAgICAgIFBhY2th Z2UgKCkgezB4MDAwQkZGRkYsIDB4MDEsIDAsIDE3fSwNCisgICAgICAgICAgICBQYWNrYWdlICgp IHsweDAwMEJGRkZGLCAweDAyLCAwLCAxOH0sDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgw MDBCRkZGRiwgMHgwMywgMCwgMTl9LA0KKw0KKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAw Q0ZGRkYsIDB4MDAsIDAsIDE2fSwNCisgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMENGRkZG LCAweDAxLCAwLCAxN30sDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDBDRkZGRiwgMHgw MiwgMCwgMTh9LA0KKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwQ0ZGRkYsIDB4MDMsIDAs IDE5fSwNCisNCisgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMERGRkZGLCAweDAwLCAwLCAx Nn0sDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDBERkZGRiwgMHgwMSwgMCwgMTd9LA0K KyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwREZGRkYsIDB4MDIsIDAsIDE4fSwNCisgICAg ICAgICAgICBQYWNrYWdlICgpIHsweDAwMERGRkZGLCAweDAzLCAwLCAxOX0sDQorDQorICAgICAg ICAgICAgUGFja2FnZSAoKSB7MHgwMDBFRkZGRiwgMHgwMCwgMCwgMTZ9LA0KKyAgICAgICAgICAg IFBhY2thZ2UgKCkgezB4MDAwRUZGRkYsIDB4MDEsIDAsIDE3fSwNCisgICAgICAgICAgICBQYWNr YWdlICgpIHsweDAwMEVGRkZGLCAweDAyLCAwQywgMTh9LA0KKyAgICAgICAgICAgIFBhY2thZ2Ug KCkgezB4MDAwRUZGRkYsIDB4MDMsIDAsIDE5fSwNCisNCisgICAgICAgICAgICBQYWNrYWdlICgp IHsweDAwMEZGRkZGLCAweDAwLCAwLCAxNn0sDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgw MDBGRkZGRiwgMHgwMSwgMCwgMTd9LA0KKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwRkZG RkYsIDB4MDIsIDAsIDE4fSwNCisgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMEZGRkZGLCAw eDAzLCAwLCAxOX0sDQorDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxMEZGRkYsIDB4 MDAsIDAsIDE2fSwNCisgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDEwRkZGRiwgMHgwMSwg MCwgMTd9LA0KKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMTBGRkZGLCAweDAyLCAwLCAx OH0sDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxMEZGRkYsIDB4MDMsIDAsIDE5fSwN CisNCisgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDExRkZGRiwgMHgwMCwgMCwgMTZ9LA0K KyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMTFGRkZGLCAweDAxLCAwLCAxN30sDQorICAg ICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxMUZGRkYsIDB4MDIsIDAsIDE4fSwNCisgICAgICAg ICAgICBQYWNrYWdlICgpIHsweDAwMDExRkZGRiwgMHgwMywgMCwgMTl9LA0KKw0KKyAgICAgICAg ICAgIFBhY2thZ2UgKCkgezB4MDAwMTJGRkZGLCAweDAwLCAwLCAxNn0sDQorICAgICAgICAgICAg UGFja2FnZSAoKSB7MHgwMDAxMkZGRkYsIDB4MDEsIDAsIDE3fSwNCisgICAgICAgICAgICBQYWNr YWdlICgpIHsweDAwMDEyRkZGRiwgMHgwMiwgMCwgMTh9LA0KKyAgICAgICAgICAgIFBhY2thZ2Ug KCkgezB4MDAwMTJGRkZGLCAweDAzLCAwLCAxOX0sDQorDQorICAgICAgICAgICAgUGFja2FnZSAo KSB7MHgwMDAxM0ZGRkYsIDB4MDAsIDAsIDE2fSwNCisgICAgICAgICAgICBQYWNrYWdlICgpIHsw eDAwMDEzRkZGRiwgMHgwMSwgMCwgMTd9LA0KKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAw MTNGRkZGLCAweDAyLCAwLCAxOH0sDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxM0ZG RkYsIDB4MDMsIDAsIDE5fSwNCisNCisgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDE0RkZG RiwgMHgwMCwgMCwgMTZ9LA0KKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMTRGRkZGLCAw eDAxLCAwLCAxN30sDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxNEZGRkYsIDB4MDIs IDAsIDE4fSwNCisgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDE0RkZGRiwgMHgwMywgMCwg MTl9LA0KKw0KKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMTVGRkZGLCAweDAwLCAwLCAx Nn0sDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxNUZGRkYsIDB4MDEsIDAsIDE3fSwN CisgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDE1RkZGRiwgMHgwMiwgMCwgMTh9LA0KKyAg ICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMTVGRkZGLCAweDAzLCAwLCAxOX0sDQorDQorICAg ICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxNkZGRkYsIDB4MDAsIDAsIDE2fSwNCisgICAgICAg ICAgICBQYWNrYWdlICgpIHsweDAwMDE2RkZGRiwgMHgwMSwgMCwgMTd9LA0KKyAgICAgICAgICAg IFBhY2thZ2UgKCkgezB4MDAwMTZGRkZGLCAweDAyLCAwLCAxOH0sDQorICAgICAgICAgICAgUGFj a2FnZSAoKSB7MHgwMDAxNkZGRkYsIDB4MDMsIDAsIDE5fSwNCisNCisgICAgICAgICAgICBQYWNr YWdlICgpIHsweDAwMDE3RkZGRiwgMHgwMCwgMCwgMTZ9LA0KKyAgICAgICAgICAgIFBhY2thZ2Ug KCkgezB4MDAwMTdGRkZGLCAweDAxLCAwLCAxN30sDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7 MHgwMDAxN0ZGRkYsIDB4MDIsIDAsIDE4fSwNCisgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAw MDE3RkZGRiwgMHgwMywgMCwgMTl9LA0KKw0KKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAw MThGRkZGLCAweDAwLCAwLCAxNn0sDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxOEZG RkYsIDB4MDEsIDAsIDE3fSwNCisgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDE4RkZGRiwg MHgwMiwgMCwgMTh9LA0KKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMThGRkZGLCAweDAz LCAwLCAxOX0sDQorDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxRUZGRkYsIDB4MDAs IDAsIDE2fSwNCisgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDFFRkZGRiwgMHgwMSwgMCwg MTd9LA0KKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMUVGRkZGLCAweDAyLCAwLCAxOH0s DQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxRUZGRkYsIDB4MDMsIDAsIDE5fSwNCisN CisgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDE5RkZGRiwgMHgwMCwgMCwgMTZ9LA0KKyAg ICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMTlGRkZGLCAweDAxLCAwLCAxN30sDQorICAgICAg ICAgICAgUGFja2FnZSAoKSB7MHgwMDAxOUZGRkYsIDB4MDIsIDAsIDE4fSwNCisgICAgICAgICAg ICBQYWNrYWdlICgpIHsweDAwMDE5RkZGRiwgMHgwMywgMCwgMTl9LA0KKw0KKyAgICAgICAgICAg IFBhY2thZ2UgKCkgezB4MDAwMUFGRkZGLCAweDAwLCAwLCAxNn0sDQorICAgICAgICAgICAgUGFj a2FnZSAoKSB7MHgwMDAxQUZGRkYsIDB4MDEsIDAsIDE3fSwNCisgICAgICAgICAgICBQYWNrYWdl ICgpIHsweDAwMDFBRkZGRiwgMHgwMiwgMCwgMTh9LA0KKyAgICAgICAgICAgIFBhY2thZ2UgKCkg ezB4MDAwMUFGRkZGLCAweDAzLCAwLCAxOX0sDQorDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7 MHgwMDAxQkZGRkYsIDB4MDAsIDAsIDE2fSwNCisgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAw MDFCRkZGRiwgMHgwMSwgMCwgMTd9LA0KKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMUJG RkZGLCAweDAyLCAwLCAxOH0sDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxQkZGRkYs IDB4MDMsIDAsIDE5fSwNCisNCisgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDFDRkZGRiwg MHgwMCwgMCwgMTZ9LA0KKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMUNGRkZGLCAweDAx LCAwLCAxN30sDQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxQ0ZGRkYsIDB4MDIsIDAs IDE4fSwNCisgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDFDRkZGRiwgMHgwMywgMCwgMTl9 LA0KKw0KKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMURGRkZGLCAweDAwLCAwLCAxNn0s DQorICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxREZGRkYsIDB4MDEsIDAsIDE3fSwNCisg ICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDFERkZGRiwgMHgwMiwgMCwgMTh9LA0KKyAgICAg ICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMURGRkZGLCAweDAzLCAwLCAxOX0sDQorDQorICAgICAg ICAgICAgUGFja2FnZSAoKSB7MHgwMDAxRkZGRkYsIDB4MDAsIDAsIDE2fSwNCisgICAgICAgICAg ICBQYWNrYWdlICgpIHsweDAwMDFGRkZGRiwgMHgwMSwgMCwgMTd9LA0KKyAgICAgICAgICAgIFBh Y2thZ2UgKCkgezB4MDAwMUZGRkZGLCAweDAyLCAwLCAxOH0sDQorICAgICAgICAgICAgUGFja2Fn ZSAoKSB7MHgwMDAxRkZGRkYsIDB4MDMsIDAsIDE5fSwNCisgICAgICAgICAgfQ0KKyAgICAgICAg KQ0KKw0KKyAgICAgIC8vDQorICAgICAgLy8gUENJIHRvIElTQSBCcmlkZ2UgKEJ1cyAwLCBEZXZp Y2UgNywgRnVuY3Rpb24gMCkNCisgICAgICAvLw0KKyAgICAgIERldmljZSAoTFBDKSB7DQorICAg ICAgICBOYW1lIChfQURSLCAweDAwMUYwMDAwKQ0KKw0KKyAgICAgICAgLy8NCisgICAgICAgIC8v IFBDSSBJbnRlcnJ1cHQgUm91dGluZyBDb25maWd1cmF0aW9uIFJlZ2lzdGVycw0KKyAgICAgICAg Ly8NCisgICAgICAgIE9wZXJhdGlvblJlZ2lvbiAoUFJSMCwgUENJX0NvbmZpZywgMHg2MCwgMHgw QykNCisgICAgICAgIEZpZWxkIChQUlIwLCBBTllBQ0MsIE5PTE9DSywgUFJFU0VSVkUpIHsNCisg ICAgICAgICAgUElSQSwgOCwNCisgICAgICAgICAgUElSQiwgOCwNCisgICAgICAgICAgUElSQywg OCwNCisgICAgICAgICAgUElSRCwgOCwNCisgICAgICAgICAgT2Zmc2V0ICgweDA0KSwNCisgICAg ICAgICAgUElSRSwgOCwNCisgICAgICAgICAgUElSRiwgOCwNCisgICAgICAgICAgUElSRywgOCwN CisgICAgICAgICAgUElSSCwgOA0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAgLy8NCisgICAgICAg IC8vIF9TVEEgbWV0aG9kIGZvciBMTktBLCBMTktCLCBMTktDLCBMTktELCBMTktFLCBMTktGLCBM TktHLCBMTktIDQorICAgICAgICAvLw0KKyAgICAgICAgTWV0aG9kIChQU1RBLCAxLCBOb3RTZXJp YWxpemVkKSB7DQorICAgICAgICAgIElmIChBbmQgKEFyZzAsIDB4ODApKSB7DQorICAgICAgICAg ICAgUmV0dXJuICgweDkpDQorICAgICAgICAgIH0gRWxzZSB7DQorICAgICAgICAgICAgUmV0dXJu ICgweEIpDQorICAgICAgICAgIH0NCisgICAgICAgIH0NCisNCisgICAgICAgIC8vDQorICAgICAg ICAvLyBfRElTIG1ldGhvZCBmb3IgTE5LQSwgTE5LQiwgTE5LQywgTE5LRCwgTE5LRSwgTE5LRiwg TE5LRywgTE5LSA0KKyAgICAgICAgLy8NCisgICAgICAgIE1ldGhvZCAoUERJUywgMSwgTm90U2Vy aWFsaXplZCkgew0KKyAgICAgICAgICBPciAoQXJnMCwgMHg4MCwgQXJnMCkNCisgICAgICAgIH0N CisNCisgICAgICAgIC8vDQorICAgICAgICAvLyBfQ1JTIG1ldGhvZCBmb3IgTE5LQSwgTE5LQiwg TE5LQywgTE5LRCwgTE5LRSwgTE5LRiwgTE5LRywgTE5LSA0KKyAgICAgICAgLy8NCisgICAgICAg IE1ldGhvZCAoUENSUywgMSwgTm90U2VyaWFsaXplZCkgew0KKyAgICAgICAgICBOYW1lIChCVUYw LCBSZXNvdXJjZVRlbXBsYXRlICgpIHtJUlEgKExldmVsLCBBY3RpdmVMb3csIFNoYXJlZCl7MH19 KQ0KKyAgICAgICAgICAvLw0KKyAgICAgICAgICAvLyBEZWZpbmUgcmVmZXJlbmNlcyB0byBidWZm ZXIgZWxlbWVudHMNCisgICAgICAgICAgLy8NCisgICAgICAgICAgQ3JlYXRlV29yZEZpZWxkIChC VUYwLCAweDAxLCBJUlFXKSAgLy8gSVJRIGxvdw0KKyAgICAgICAgICAvLw0KKyAgICAgICAgICAv LyBXcml0ZSBjdXJyZW50IHNldHRpbmdzIGludG8gSVJRIGRlc2NyaXB0b3INCisgICAgICAgICAg Ly8NCisgICAgICAgICAgSWYgKEFuZCAoQXJnMCwgMHg4MCkpIHsNCisgICAgICAgICAgICBTdG9y ZSAoWmVybywgTG9jYWwwKQ0KKyAgICAgICAgICB9IEVsc2Ugew0KKyAgICAgICAgICAgIFN0b3Jl IChPbmUsIExvY2FsMCkNCisgICAgICAgICAgfQ0KKyAgICAgICAgICAvLw0KKyAgICAgICAgICAv LyBTaGlmdCAxIGJ5IHZhbHVlIGluIHJlZ2lzdGVyIDcwDQorICAgICAgICAgIC8vDQorICAgICAg ICAgIFNoaWZ0TGVmdCAoTG9jYWwwLCBBbmQgKEFyZzAsIDB4MEYpLCBJUlFXKSAgIC8vIFNhdmUg aW4gYnVmZmVyDQorICAgICAgICAgIFJldHVybiAoQlVGMCkgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC8vIFJldHVybiBCdWYwIA0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAgLy8NCisg ICAgICAgIC8vIF9QUlMgcmVzb3VyY2UgZm9yIExOS0EsIExOS0IsIExOS0MsIExOS0QsIExOS0Us IExOS0YsIExOS0csIExOS0gNCisgICAgICAgIC8vDQorICAgICAgICBOYW1lIChQUFJTLCBSZXNv dXJjZVRlbXBsYXRlICgpIHsNCisgICAgICAgICAgSVJRIChMZXZlbCwgQWN0aXZlTG93LCBTaGFy ZWQpIHszLCA0LCA1LCA3LCA5LCAxMCwgMTEsIDEyLCAxNCwgMTV9DQorICAgICAgICB9KQ0KKw0K KyAgICAgICAgLy8NCisgICAgICAgIC8vIF9TUlMgbWV0aG9kIGZvciBMTktBLCBMTktCLCBMTktD LCBMTktELCBMTktFLCBMTktGLCBMTktHLCBMTktIDQorICAgICAgICAvLw0KKyAgICAgICAgTWV0 aG9kIChQU1JTLCAyLCBOb3RTZXJpYWxpemVkKSB7DQorICAgICAgICAgIENyZWF0ZVdvcmRGaWVs ZCAoQXJnMSwgMHgwMSwgSVJRVykgICAgICAvLyBJUlEgbG93DQorICAgICAgICAgIEZpbmRTZXRS aWdodEJpdCAoSVJRVywgTG9jYWwwKSAgICAgICAgICAvLyBTZXQgSVJRDQorICAgICAgICAgIElm IChMTm90RXF1YWwgKElSUVcsIFplcm8pKSB7DQorICAgICAgICAgICAgQW5kIChMb2NhbDAsIDB4 N0YsIExvY2FsMCkNCisgICAgICAgICAgICBEZWNyZW1lbnQgKExvY2FsMCkNCisgICAgICAgICAg fSBFbHNlIHsNCisgICAgICAgICAgICBPciAoTG9jYWwwLCAweDgwLCBMb2NhbDApDQorICAgICAg ICAgIH0NCisgICAgICAgICAgU3RvcmUgKExvY2FsMCwgQXJnMCkNCisgICAgICAgIH0NCisNCisg ICAgICAgIC8vDQorICAgICAgICAvLyBQQ0kgSVJRIExpbmsgQQ0KKyAgICAgICAgLy8NCisgICAg ICAgIERldmljZSAoTE5LQSkgew0KKyAgICAgICAgICBOYW1lIChfSElELCBFSVNBSUQoIlBOUDBD MEYiKSkNCisgICAgICAgICAgTmFtZSAoX1VJRCwgMSkNCisNCisgICAgICAgICAgTWV0aG9kIChf U1RBLCAwLCBOb3RTZXJpYWxpemVkKSB7IFJldHVybiAoUFNUQSAoUElSQSkpIH0NCisgICAgICAg ICAgTWV0aG9kIChfRElTLCAwLCBOb3RTZXJpYWxpemVkKSB7IFBESVMgKFBJUkEpICB9DQorICAg ICAgICAgIE1ldGhvZCAoX0NSUywgMCwgTm90U2VyaWFsaXplZCkgeyBSZXR1cm4gKFBDUlMgKFBJ UkEpKSB9DQorICAgICAgICAgIE1ldGhvZCAoX1BSUywgMCwgTm90U2VyaWFsaXplZCkgeyBSZXR1 cm4gKFBQUlMpIH0NCisgICAgICAgICAgTWV0aG9kIChfU1JTLCAxLCBOb3RTZXJpYWxpemVkKSB7 IFBTUlMgKFBJUkEsIEFyZzApIH0gDQorICAgICAgICB9DQorDQorICAgICAgICAvLw0KKyAgICAg ICAgLy8gUENJIElSUSBMaW5rIEINCisgICAgICAgIC8vDQorICAgICAgICBEZXZpY2UgKExOS0Ip IHsNCisgICAgICAgICAgTmFtZSAoX0hJRCwgRUlTQUlEKCJQTlAwQzBGIikpDQorICAgICAgICAg IE5hbWUgKF9VSUQsIDIpDQorDQorICAgICAgICAgIE1ldGhvZCAoX1NUQSwgMCwgTm90U2VyaWFs aXplZCkgeyBSZXR1cm4gKFBTVEEgKFBJUkIpKSB9DQorICAgICAgICAgIE1ldGhvZCAoX0RJUywg MCwgTm90U2VyaWFsaXplZCkgeyBQRElTIChQSVJCKSB9DQorICAgICAgICAgIE1ldGhvZCAoX0NS UywgMCwgTm90U2VyaWFsaXplZCkgeyBSZXR1cm4gKFBDUlMgKFBJUkIpKSB9DQorICAgICAgICAg IE1ldGhvZCAoX1BSUywgMCwgTm90U2VyaWFsaXplZCkgeyBSZXR1cm4gKFBQUlMpIH0NCisgICAg ICAgICAgTWV0aG9kIChfU1JTLCAxLCBOb3RTZXJpYWxpemVkKSB7IFBTUlMgKFBJUkIsIEFyZzAp IH0gDQorICAgICAgICB9DQorDQorICAgICAgICAvLw0KKyAgICAgICAgLy8gUENJIElSUSBMaW5r IEMNCisgICAgICAgIC8vDQorICAgICAgICBEZXZpY2UgKExOS0MpIHsNCisgICAgICAgICAgTmFt ZSAoX0hJRCwgRUlTQUlEKCJQTlAwQzBGIikpDQorICAgICAgICAgIE5hbWUgKF9VSUQsIDMpDQor DQorICAgICAgICAgIE1ldGhvZCAoX1NUQSwgMCwgTm90U2VyaWFsaXplZCkgeyBSZXR1cm4gKFBT VEEgKFBJUkMpKSB9DQorICAgICAgICAgIE1ldGhvZCAoX0RJUywgMCwgTm90U2VyaWFsaXplZCkg eyBQRElTIChQSVJDKSB9DQorICAgICAgICAgIE1ldGhvZCAoX0NSUywgMCwgTm90U2VyaWFsaXpl ZCkgeyBSZXR1cm4gKFBDUlMgKFBJUkMpKSB9DQorICAgICAgICAgIE1ldGhvZCAoX1BSUywgMCwg Tm90U2VyaWFsaXplZCkgeyBSZXR1cm4gKFBQUlMpIH0NCisgICAgICAgICAgTWV0aG9kIChfU1JT LCAxLCBOb3RTZXJpYWxpemVkKSB7IFBTUlMgKFBJUkMsIEFyZzApIH0gDQorICAgICAgICB9DQor DQorICAgICAgICAvLw0KKyAgICAgICAgLy8gUENJIElSUSBMaW5rIEQNCisgICAgICAgIC8vDQor ICAgICAgICBEZXZpY2UgKExOS0QpIHsNCisgICAgICAgICAgTmFtZSAoX0hJRCwgRUlTQUlEKCJQ TlAwQzBGIikpDQorICAgICAgICAgIE5hbWUgKF9VSUQsIDQpDQorDQorICAgICAgICAgIE1ldGhv ZCAoX1NUQSwgMCwgTm90U2VyaWFsaXplZCkgeyBSZXR1cm4gKFBTVEEgKFBJUkQpKSB9DQorICAg ICAgICAgIE1ldGhvZCAoX0RJUywgMCwgTm90U2VyaWFsaXplZCkgeyBQRElTIChQSVJEKSB9DQor ICAgICAgICAgIE1ldGhvZCAoX0NSUywgMCwgTm90U2VyaWFsaXplZCkgeyBSZXR1cm4gKFBDUlMg KFBJUkQpKSB9DQorICAgICAgICAgIE1ldGhvZCAoX1BSUywgMCwgTm90U2VyaWFsaXplZCkgeyBS ZXR1cm4gKFBQUlMpIH0NCisgICAgICAgICAgTWV0aG9kIChfU1JTLCAxLCBOb3RTZXJpYWxpemVk KSB7IFBTUlMgKFBJUkQsIEFyZzApIH0gDQorICAgICAgICB9DQorCQkNCisgICAgICAgIC8vDQor ICAgICAgICAvLyBQQ0kgSVJRIExpbmsgRQ0KKyAgICAgICAgLy8NCisgICAgICAgIERldmljZSAo TE5LRSkgew0KKyAgICAgICAgICBOYW1lIChfSElELCBFSVNBSUQoIlBOUDBDMEYiKSkNCisgICAg ICAgICAgTmFtZSAoX1VJRCwgNSkNCisNCisgICAgICAgICAgTWV0aG9kIChfU1RBLCAwLCBOb3RT ZXJpYWxpemVkKSB7IFJldHVybiAoUFNUQSAoUElSRSkpIH0NCisgICAgICAgICAgTWV0aG9kIChf RElTLCAwLCBOb3RTZXJpYWxpemVkKSB7IFBESVMgKFBJUkUpIH0NCisgICAgICAgICAgTWV0aG9k IChfQ1JTLCAwLCBOb3RTZXJpYWxpemVkKSB7IFJldHVybiAoUENSUyAoUElSRSkpIH0NCisgICAg ICAgICAgTWV0aG9kIChfUFJTLCAwLCBOb3RTZXJpYWxpemVkKSB7IFJldHVybiAoUFBSUykgfQ0K KyAgICAgICAgICBNZXRob2QgKF9TUlMsIDEsIE5vdFNlcmlhbGl6ZWQpIHsgUFNSUyAoUElSRSwg QXJnMCkgfSANCisgICAgICAgIH0NCisJCQ0KKyAgICAgICAgLy8NCisgICAgICAgIC8vIFBDSSBJ UlEgTGluayBGDQorICAgICAgICAvLw0KKyAgICAgICAgRGV2aWNlIChMTktGKSB7DQorICAgICAg ICAgIE5hbWUgKF9ISUQsIEVJU0FJRCgiUE5QMEMwRiIpKQ0KKyAgICAgICAgICBOYW1lIChfVUlE LCA2KQ0KKw0KKyAgICAgICAgICBNZXRob2QgKF9TVEEsIDAsIE5vdFNlcmlhbGl6ZWQpIHsgUmV0 dXJuIChQU1RBIChQSVJGKSkgfQ0KKyAgICAgICAgICBNZXRob2QgKF9ESVMsIDAsIE5vdFNlcmlh bGl6ZWQpIHsgUERJUyAoUElSRikgfQ0KKyAgICAgICAgICBNZXRob2QgKF9DUlMsIDAsIE5vdFNl cmlhbGl6ZWQpIHsgUmV0dXJuIChQQ1JTIChQSVJGKSkgfQ0KKyAgICAgICAgICBNZXRob2QgKF9Q UlMsIDAsIE5vdFNlcmlhbGl6ZWQpIHsgUmV0dXJuIChQUFJTKSB9DQorICAgICAgICAgIE1ldGhv ZCAoX1NSUywgMSwgTm90U2VyaWFsaXplZCkgeyBQU1JTIChQSVJGLCBBcmcwKSB9IA0KKyAgICAg ICAgfQ0KKwkJDQorICAgICAgICAvLw0KKyAgICAgICAgLy8gUENJIElSUSBMaW5rIEcNCisgICAg ICAgIC8vDQorICAgICAgICBEZXZpY2UgKExOS0cpIHsNCisgICAgICAgICAgTmFtZSAoX0hJRCwg RUlTQUlEKCJQTlAwQzBGIikpDQorICAgICAgICAgIE5hbWUgKF9VSUQsIDcpDQorDQorICAgICAg ICAgIE1ldGhvZCAoX1NUQSwgMCwgTm90U2VyaWFsaXplZCkgeyBSZXR1cm4gKFBTVEEgKFBJUkcp KSB9DQorICAgICAgICAgIE1ldGhvZCAoX0RJUywgMCwgTm90U2VyaWFsaXplZCkgeyBQRElTIChQ SVJHKSB9DQorICAgICAgICAgIE1ldGhvZCAoX0NSUywgMCwgTm90U2VyaWFsaXplZCkgeyBSZXR1 cm4gKFBDUlMgKFBJUkcpKSB9DQorICAgICAgICAgIE1ldGhvZCAoX1BSUywgMCwgTm90U2VyaWFs aXplZCkgeyBSZXR1cm4gKFBQUlMpIH0NCisgICAgICAgICAgTWV0aG9kIChfU1JTLCAxLCBOb3RT ZXJpYWxpemVkKSB7IFBTUlMgKFBJUkcsIEFyZzApIH0gDQorICAgICAgICB9DQorCQkNCisgICAg ICAgIC8vDQorICAgICAgICAvLyBQQ0kgSVJRIExpbmsgSA0KKyAgICAgICAgLy8NCisgICAgICAg IERldmljZSAoTE5LSCkgew0KKyAgICAgICAgICBOYW1lIChfSElELCBFSVNBSUQoIlBOUDBDMEYi KSkNCisgICAgICAgICAgTmFtZSAoX1VJRCwgOCkNCisNCisgICAgICAgICAgTWV0aG9kIChfU1RB LCAwLCBOb3RTZXJpYWxpemVkKSB7IFJldHVybiAoUFNUQSAoUElSSCkpIH0NCisgICAgICAgICAg TWV0aG9kIChfRElTLCAwLCBOb3RTZXJpYWxpemVkKSB7IFBESVMgKFBJUkgpIH0NCisgICAgICAg ICAgTWV0aG9kIChfQ1JTLCAwLCBOb3RTZXJpYWxpemVkKSB7IFJldHVybiAoUENSUyAoUElSSCkp IH0NCisgICAgICAgICAgTWV0aG9kIChfUFJTLCAwLCBOb3RTZXJpYWxpemVkKSB7IFJldHVybiAo UFBSUykgfQ0KKyAgICAgICAgICBNZXRob2QgKF9TUlMsIDEsIE5vdFNlcmlhbGl6ZWQpIHsgUFNS UyAoUElSSCwgQXJnMCkgfSANCisgICAgICAgIH0NCisgICAgICAgIA0KKyAgICAgICAgLy8NCisg ICAgICAgIC8vIFByb2dyYW1tYWJsZSBJbnRlcnJ1cHQgQ29udHJvbGxlciAoUElDKQ0KKyAgICAg ICAgLy8NCisgICAgICAgIERldmljZShQSUMpIHsNCisgICAgICAgICAgTmFtZSAoX0hJRCwgRUlT QUlEICgiUE5QMDAwMCIpKQ0KKyAgICAgICAgICBOYW1lIChfQ1JTLCBSZXNvdXJjZVRlbXBsYXRl ICgpIHsNCisgICAgICAgICAgICBJTyAoRGVjb2RlMTYsIDB4MDIwLCAweDAyMCwgMHgwMCwgMHgw MikNCisgICAgICAgICAgICBJTyAoRGVjb2RlMTYsIDB4MEEwLCAweDBBMCwgMHgwMCwgMHgwMikN CisgICAgICAgICAgICBJTyAoRGVjb2RlMTYsIDB4NEQwLCAweDREMCwgMHgwMCwgMHgwMikNCisg ICAgICAgICAgICBJUlFOb0ZsYWdzICgpIHsyfQ0KKyAgICAgICAgICB9KQ0KKyAgICAgICAgfQ0K Kw0KKyAgICAgICAgLy8NCisgICAgICAgIC8vIElTQSBETUENCisgICAgICAgIC8vDQorICAgICAg ICBEZXZpY2UgKERNQUMpIHsNCisgICAgICAgICAgTmFtZSAoX0hJRCwgRUlTQUlEICgiUE5QMDIw MCIpKQ0KKyAgICAgICAgICBOYW1lIChfQ1JTLCBSZXNvdXJjZVRlbXBsYXRlICgpIHsNCisgICAg ICAgICAgICBJTyAoRGVjb2RlMTYsIDB4MDAsIDB4MDAsIDAsIDB4MTApDQorICAgICAgICAgICAg SU8gKERlY29kZTE2LCAweDgxLCAweDgxLCAwLCAweDAzKQ0KKyAgICAgICAgICAgIElPIChEZWNv ZGUxNiwgMHg4NywgMHg4NywgMCwgMHgwMSkNCisgICAgICAgICAgICBJTyAoRGVjb2RlMTYsIDB4 ODksIDB4ODksIDAsIDB4MDMpDQorICAgICAgICAgICAgSU8gKERlY29kZTE2LCAweDhmLCAweDhm LCAwLCAweDAxKQ0KKyAgICAgICAgICAgIElPIChEZWNvZGUxNiwgMHhjMCwgMHhjMCwgMCwgMHgy MCkNCisgICAgICAgICAgICBETUEgKENvbXBhdGliaWxpdHksIE5vdEJ1c01hc3RlciwgVHJhbnNm ZXI4KSB7NH0NCisgICAgICAgICAgfSkNCisgICAgICAgIH0NCisNCisgICAgICAgIC8vDQorICAg ICAgICAvLyA4MjU0IFRpbWVyDQorICAgICAgICAvLw0KKyAgICAgICAgRGV2aWNlKFRNUikgew0K KyAgICAgICAgICBOYW1lKF9ISUQsRUlTQUlEKCJQTlAwMTAwIikpDQorICAgICAgICAgIE5hbWUo X0NSUywgUmVzb3VyY2VUZW1wbGF0ZSAoKSB7DQorICAgICAgICAgICAgSU8gKERlY29kZTE2LCAw eDQwLCAweDQwLCAweDAwLCAweDA0KQ0KKyAgICAgICAgICAgIElSUU5vRmxhZ3MgKCkgezB9DQor ICAgICAgICAgIH0pDQorICAgICAgICB9DQorDQorICAgICAgICAvLw0KKyAgICAgICAgLy8gUmVh bCBUaW1lIENsb2NrDQorICAgICAgICAvLw0KKyAgICAgICAgRGV2aWNlIChSVEMpIHsNCisgICAg ICAgICAgTmFtZSAoX0hJRCwgRUlTQUlEICgiUE5QMEIwMCIpKQ0KKyAgICAgICAgICBOYW1lIChf Q1JTLCBSZXNvdXJjZVRlbXBsYXRlICgpIHsNCisgICAgICAgICAgICBJTyAoRGVjb2RlMTYsIDB4 NzAsIDB4NzAsIDB4MDAsIDB4MDIpDQorICAgICAgICAgICAgSVJRTm9GbGFncyAoKSB7OH0NCisg ICAgICAgICAgfSkNCisgICAgICAgIH0NCisNCisgICAgICAgIC8vDQorICAgICAgICAvLyBQQ0FU IFNwZWFrZXINCisgICAgICAgIC8vDQorICAgICAgICBEZXZpY2UoU1BLUikgew0KKyAgICAgICAg ICBOYW1lIChfSElELCBFSVNBSUQoIlBOUDA4MDAiKSkNCisgICAgICAgICAgTmFtZSAoX0NSUywg UmVzb3VyY2VUZW1wbGF0ZSAoKSB7DQorICAgICAgICAgICAgSU8gKERlY29kZTE2LCAweDYxLCAw eDYxLCAweDAxLCAweDAxKQ0KKyAgICAgICAgICB9KQ0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAg Ly8NCisgICAgICAgIC8vIEZsb2F0aW5nIFBvaW50IENvcHJvY2Vzc29yDQorICAgICAgICAvLw0K KyAgICAgICAgRGV2aWNlKEZQVSkgew0KKyAgICAgICAgICBOYW1lIChfSElELCBFSVNBSUQoIlBO UDBDMDQiKSkNCisgICAgICAgICAgTmFtZSAoX0NSUywgUmVzb3VyY2VUZW1wbGF0ZSAoKSB7DQor ICAgICAgICAgICAgSU8gKERlY29kZTE2LCAweEYwLCAweEYwLCAweDAwLCAweDEwKQ0KKyAgICAg ICAgICAgIElSUU5vRmxhZ3MgKCkgezEzfQ0KKyAgICAgICAgICB9KQ0KKyAgICAgICAgfQ0KKw0K KyAgICAgICAgLy8NCisgICAgICAgIC8vIEdlbmVyaWMgbW90aGVyYm9hcmQgZGV2aWNlcyBhbmQg cGllY2VzIHRoYXQgZG9uJ3QgZml0IGFueXdoZXJlIGVsc2UNCisgICAgICAgIC8vDQorICAgICAg ICBEZXZpY2UoWFRSQSkgew0KKyAgICAgICAgICBOYW1lIChfSElELCBFSVNBSUQgKCJQTlAwQzAy IikpDQorICAgICAgICAgIE5hbWUgKF9VSUQsIDB4MDEpDQorICAgICAgICAgIE5hbWUgKF9DUlMs IFJlc291cmNlVGVtcGxhdGUgKCkgew0KKyAgICAgICAgICAgIElPIChEZWNvZGUxNiwgMHgwMTAs IDB4MDEwLCAweDAwLCAweDEwKQ0KKyAgICAgICAgICAgIElPIChEZWNvZGUxNiwgMHgwMjIsIDB4 MDIyLCAweDAwLCAweDFFKQ0KKyAgICAgICAgICAgIElPIChEZWNvZGUxNiwgMHgwNDQsIDB4MDQ0 LCAweDAwLCAweDFDKQ0KKyAgICAgICAgICAgIElPIChEZWNvZGUxNiwgMHgwNjIsIDB4MDYyLCAw eDAwLCAweDAyKQ0KKyAgICAgICAgICAgIElPIChEZWNvZGUxNiwgMHgwNjUsIDB4MDY1LCAweDAw LCAweDBCKQ0KKyAgICAgICAgICAgIElPIChEZWNvZGUxNiwgMHgwNzIsIDB4MDcyLCAweDAwLCAw eDBFKQ0KKyAgICAgICAgICAgIElPIChEZWNvZGUxNiwgMHgwODAsIDB4MDgwLCAweDAwLCAweDAx KQ0KKyAgICAgICAgICAgIElPIChEZWNvZGUxNiwgMHgwODQsIDB4MDg0LCAweDAwLCAweDAzKQ0K KyAgICAgICAgICAgIElPIChEZWNvZGUxNiwgMHgwODgsIDB4MDg4LCAweDAwLCAweDAxKQ0KKyAg ICAgICAgICAgIElPIChEZWNvZGUxNiwgMHgwOGMsIDB4MDhjLCAweDAwLCAweDAzKQ0KKyAgICAg ICAgICAgIElPIChEZWNvZGUxNiwgMHgwOTAsIDB4MDkwLCAweDAwLCAweDEwKQ0KKyAgICAgICAg ICAgIElPIChEZWNvZGUxNiwgMHgwQTIsIDB4MEEyLCAweDAwLCAweDFFKQ0KKyAgICAgICAgICAg IElPIChEZWNvZGUxNiwgMHgwRTAsIDB4MEUwLCAweDAwLCAweDEwKQ0KKyAgICAgICAgICAgIElP IChEZWNvZGUxNiwgMHgxRTAsIDB4MUUwLCAweDAwLCAweDEwKQ0KKyAgICAgICAgICAgIElPIChE ZWNvZGUxNiwgMHgxNjAsIDB4MTYwLCAweDAwLCAweDEwKQ0KKyAgICAgICAgICAgIElPIChEZWNv ZGUxNiwgMHgyNzgsIDB4Mjc4LCAweDAwLCAweDA4KQ0KKyAgICAgICAgICAgIElPIChEZWNvZGUx NiwgMHgzNzAsIDB4MzcwLCAweDAwLCAweDAyKQ0KKyAgICAgICAgICAgIElPIChEZWNvZGUxNiwg MHgzNzgsIDB4Mzc4LCAweDAwLCAweDA4KQ0KKyAgICAgICAgICAgIElPIChEZWNvZGUxNiwgMHg0 MDAsIDB4NDAwLCAweDAwLCAweDQwKSAgICAgICAvLyBQTUJMSzENCisgICAgICAgICAgICBJTyAo RGVjb2RlMTYsIDB4NDQwLCAweDQ0MCwgMHgwMCwgMHgxMCkNCisgICAgICAgICAgICBJTyAoRGVj b2RlMTYsIDB4Njc4LCAweDY3OCwgMHgwMCwgMHgwOCkNCisgICAgICAgICAgICBJTyAoRGVjb2Rl MTYsIDB4Nzc4LCAweDc3OCwgMHgwMCwgMHgwOCkNCisgICAgICAgICAgICBNZW1vcnkzMkZpeGVk IChSZWFkT25seSwgMHhGRUMwMDAwMCwgMHgxMDAwKSAgLy8gSU8gQVBJQw0KKyAgICAgICAgICAg IE1lbW9yeTMyRml4ZWQgKFJlYWRPbmx5LCAweEZFRTAwMDAwLCAweDEwMDAwMCkgLy8gTEFQSUMN CisgICAgICAgICAgfSkNCisgICAgICAgIH0NCisNCisgICAgICAgIC8vDQorICAgICAgICAvLyBQ Uy8yIEtleWJvYXJkIGFuZCBQQy9BVCBFbmhhbmNlZCBLZXlib2FyZCAxMDEvMTAyDQorICAgICAg ICAvLw0KKyAgICAgICAgRGV2aWNlIChQUzJLKSB7DQorICAgICAgICAgIE5hbWUgKF9ISUQsIEVJ U0FJRCAoIlBOUDAzMDMiKSkNCisgICAgICAgICAgTmFtZSAoX0NJRCwgRUlTQUlEICgiUE5QMDMw QiIpKQ0KKyAgICAgICAgICBOYW1lKF9DUlMsUmVzb3VyY2VUZW1wbGF0ZSgpIHsNCisgICAgICAg ICAgICBJTyAoRGVjb2RlMTYsIDB4NjAsIDB4NjAsIDB4MDAsIDB4MDEpDQorICAgICAgICAgICAg SU8gKERlY29kZTE2LCAweDY0LCAweDY0LCAweDAwLCAweDAxKQ0KKyAgICAgICAgICAgIElSUU5v RmxhZ3MgKCkgezF9DQorICAgICAgICAgIH0pDQorICAgICAgICB9DQorDQorICAgICAgICAvLw0K KyAgICAgICAgLy8gUFMvMiBNb3VzZSBhbmQgTWljcm9zb2Z0IE1vdXNlDQorICAgICAgICAvLw0K KyAgICAgICAgRGV2aWNlIChQUzJNKSB7ICAvLyBQUy8yIHN0eXBlIG1vdXNlIHBvcnQNCisgICAg ICAgICAgTmFtZSAoX0hJRCwgRUlTQUlEICgiUE5QMEYwMyIpKQ0KKyAgICAgICAgICBOYW1lIChf Q0lELCBFSVNBSUQgKCJQTlAwRjEzIikpDQorICAgICAgICAgIE5hbWUgKF9DUlMsIFJlc291cmNl VGVtcGxhdGUoKSB7DQorICAgICAgICAgICAgSVJRTm9GbGFncyAoKSB7MTJ9DQorICAgICAgICAg IH0pDQorICAgICAgICB9DQorDQorICAgICAgICAvLw0KKyAgICAgICAgLy8gVUFSVCBTZXJpYWwg UG9ydCAtIENPTTENCisgICAgICAgIC8vDQorICAgICAgICBEZXZpY2UgKFVBUjEpIHsNCisgICAg ICAgICAgTmFtZSAoX0hJRCwgRUlTQUlEICgiUE5QMDUwMSIpKQ0KKyAgICAgICAgICBOYW1lIChf REROLCAiQ09NMSIpDQorICAgICAgICAgIE5hbWUgKF9VSUQsIDB4MDEpDQorICAgICAgICAgIE5h bWUoX0NSUyxSZXNvdXJjZVRlbXBsYXRlKCkgew0KKyAgICAgICAgICAgIElPIChEZWNvZGUxNiwg MHgzRjgsIDB4M0Y4LCAweDAwLCAweDA4KQ0KKyAgICAgICAgICAgIElSUSAoRWRnZSwgQWN0aXZl SGlnaCwgRXhjbHVzaXZlLCApIHs0fQ0KKyAgICAgICAgICB9KQ0KKyAgICAgICAgfQ0KKw0KKyAg ICAgICAgLy8NCisgICAgICAgIC8vIFVBUlQgU2VyaWFsIFBvcnQgLSBDT00yDQorICAgICAgICAv Lw0KKyAgICAgICAgRGV2aWNlIChVQVIyKSB7DQorICAgICAgICAgIE5hbWUgKF9ISUQsIEVJU0FJ RCAoIlBOUDA1MDEiKSkNCisgICAgICAgICAgTmFtZSAoX0RETiwgIkNPTTIiKQ0KKyAgICAgICAg ICBOYW1lIChfVUlELCAweDAyKQ0KKyAgICAgICAgICBOYW1lKF9DUlMsUmVzb3VyY2VUZW1wbGF0 ZSgpIHsNCisgICAgICAgICAgICBJTyAoRGVjb2RlMTYsIDB4MkY4LCAweDJGOCwgMHgwMCwgMHgw OCkNCisgICAgICAgICAgICBJUlEgKEVkZ2UsIEFjdGl2ZUhpZ2gsIEV4Y2x1c2l2ZSwgKSB7M30N CisgICAgICAgICAgfSkNCisgICAgICAgIH0NCisgICAgICB9DQorCX0NCisgIH0NCit9DQpkaWZm IC0tZ2l0IGEvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0FjcGlUYWJsZXMvUGxh dGZvcm0uaCBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9BY3BpVGFibGVzL1Bs YXRmb3JtLmgNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwLi42Mzk1ZWMx MWUyDQotLS0gL2Rldi9udWxsDQorKysgYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQ a2cvQWNwaVRhYmxlcy9QbGF0Zm9ybS5oDQpAQCAtMCwwICsxLDc1IEBADQorLyoqIEBmaWxlDQor ICBQbGF0Zm9ybSBzcGVjaWZpYyBkZWZpbmVzIGZvciBjb25zdHJ1Y3RpbmcgQUNQSSB0YWJsZXMN CisNCisgIENvcHlyaWdodCAoYykgMjAxMyAtIDIwMDggSW50ZWwgQ29ycG9yYXRpb24uIEFsbCBy aWdodHMgcmVzZXJ2ZWQuIDxCUj4NCisNCisgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0Qt Mi1DbGF1c2UtUGF0ZW50DQorKiovDQorDQorI2lmbmRlZiBfUGxhdGZvcm1faF9JTkNMVURFRF8N CisjZGVmaW5lIF9QbGF0Zm9ybV9oX0lOQ0xVREVEXw0KKw0KKyNpbmNsdWRlIDxQaUR4ZS5oPg0K KyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJkL0FjcGkuaD4NCisNCisvLw0KKy8vIEFDUEkgdGFi bGUgaW5mb3JtYXRpb24gdXNlZCB0byBpbml0aWFsaXplIHRhYmxlcy4NCisvLw0KKyNkZWZpbmUg RUZJX0FDUElfT0VNX0lEICAgICAgICAgICAnTycsJ1YnLCdNJywnRicsJyAnLCcgJyAgIC8vIE9F TUlEIDYgYnl0ZXMgbG9uZw0KKyNkZWZpbmUgRUZJX0FDUElfT0VNX1RBQkxFX0lEICAgICBTSUdO QVRVUkVfNjQoJ08nLCdWJywnTScsJ0YnLCdFJywnRCcsJ0snLCcyJykgLy8gT0VNIHRhYmxlIGlk IDggYnl0ZXMgbG9uZw0KKyNkZWZpbmUgRUZJX0FDUElfT0VNX1JFVklTSU9OICAgICAweDAyMDAw ODIwDQorI2RlZmluZSBFRklfQUNQSV9DUkVBVE9SX0lEICAgICAgIFNJR05BVFVSRV8zMignTycs J1YnLCdNJywnRicpDQorI2RlZmluZSBFRklfQUNQSV9DUkVBVE9SX1JFVklTSU9OIDB4MDAwMDAw OTcNCisNCisjZGVmaW5lIElOVF9NT0RFTCAgICAgICAweDAxDQorI2RlZmluZSBTQ0lfSU5UX1ZF Q1RPUiAgMHgwMDA5IA0KKyNkZWZpbmUgU01JX0NNRF9JT19QT1JUIDB4QjINCisjZGVmaW5lIEFD UElfRU5BQkxFICAgICAweDBFMQ0KKyNkZWZpbmUgQUNQSV9ESVNBQkxFICAgIDB4MDFFDQorI2Rl ZmluZSBTNEJJT1NfUkVRICAgICAgMHgwMA0KKyNkZWZpbmUgUE0xYV9FVlRfQkxLICAgIDB4MDAw MDA0MDANCisjZGVmaW5lIFBNMWJfRVZUX0JMSyAgICAweDAwMDAwMDAwDQorI2RlZmluZSBQTTFh X0NOVF9CTEsgICAgMHgwMDAwMDQwNA0KKyNkZWZpbmUgUE0xYl9DTlRfQkxLICAgIDB4MDAwMDAw MDANCisjZGVmaW5lIFBNMl9DTlRfQkxLICAgICAweDAwMDAwNDUwDQorI2RlZmluZSBQTV9UTVJf QkxLICAgICAgMHgwMDAwMDQwOA0KKyNkZWZpbmUgR1BFMF9CTEsgICAgICAgIDB4MDAwMDA0MjAN CisjZGVmaW5lIEdQRTFfQkxLICAgICAgICAweDAwMDAwMDAwDQorI2RlZmluZSBQTTFfRVZUX0xF TiAgICAgMHgwNA0KKyNkZWZpbmUgUE0xX0NOVF9MRU4gICAgIDB4MDQNCisjZGVmaW5lIFBNMl9D TlRfTEVOICAgICAweDAxDQorI2RlZmluZSBQTV9UTV9MRU4gICAgICAgMHgwNA0KKyNkZWZpbmUg R1BFMF9CTEtfTEVOICAgIDB4MTANCisjZGVmaW5lIEdQRTFfQkxLX0xFTiAgICAweDAwDQorI2Rl ZmluZSBHUEUxX0JBU0UgICAgICAgMHgwMA0KKyNkZWZpbmUgUkVTRVJWRUQgICAgICAgIDB4MDAN CisjZGVmaW5lIFBfTFZMMl9MQVQgICAgICAweDAwNjUNCisjZGVmaW5lIFBfTFZMM19MQVQgICAg ICAweDAzRTkNCisjZGVmaW5lIEZMVVNIX1NJWkUgICAgICAweDA0MDANCisjZGVmaW5lIEZMVVNI X1NUUklERSAgICAweDAwMTANCisjZGVmaW5lIERVVFlfT0ZGU0VUICAgICAweDAwDQorI2RlZmlu ZSBEVVRZX1dJRFRIICAgICAgMHgwMA0KKyNkZWZpbmUgREFZX0FMUk0gICAgICAgIDB4MEQNCisj ZGVmaW5lIE1PTl9BTFJNICAgICAgICAweDAwDQorI2RlZmluZSBDRU5UVVJZICAgICAgICAgMHgw MA0KKyNkZWZpbmUgRkxBRyAgICAgICAgICAgIChFRklfQUNQSV8yXzBfV0JJTlZEIHwgXA0KKyAg ICAgICAgICAgICAgICAgICAgICAgICBFRklfQUNQSV8yXzBfUFJPQ19DMSB8IFwNCisgICAgICAg ICAgICAgICAgICAgICAgICAgRUZJX0FDUElfMl8wX1NMUF9CVVRUT04gfCBcDQorICAgICAgICAg ICAgICAgICAgICAgICAgIEVGSV9BQ1BJXzJfMF9SVENfUzQgfCBcDQorICAgICAgICAgICAgICAg ICAgICAgICAgIEVGSV9BQ1BJXzJfMF9SRVNFVF9SRUdfU1VQKQ0KKyNkZWZpbmUgUkVTRVRfUkVH ICAgICAgIDB4Q0Y5DQorI2RlZmluZSBSRVNFVF9WQUxVRSAgICAgKEJJVDIgfCBCSVQxKSAvLyBQ SUlYMyBSZXNldCBDUFUgKyBTeXN0ZW0gUmVzZXQNCisNCisvLw0KKy8vIEJ5dGUtYWxpZ25lZCBJ TyBwb3J0IHJlZ2lzdGVyIGJsb2NrIGluaXRpYWxpemVyIGZvcg0KKy8vIEVGSV9BQ1BJXzJfMF9H RU5FUklDX0FERFJFU1NfU1RSVUNUVVJFDQorLy8NCisjZGVmaW5lIEdBUzJfSU8oQmFzZSwgU2l6 ZSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KKyAgICAgICAgICBFRklfQUNQSV8y XzBfU1lTVEVNX0lPLCAvKiBBZGRyZXNzU3BhY2VJZCAgICAqLyBcDQorICAgICAgICAgIChTaXpl KSAqIDgsICAgICAgICAgICAgIC8qIFJlZ2lzdGVyQml0V2lkdGggICovIFwNCisgICAgICAgICAg MCwgICAgICAgICAgICAgICAgICAgICAgLyogUmVnaXN0ZXJCaXRPZmZzZXQgKi8gXA0KKyAgICAg ICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKiBSZXNlcnZlZCAgICAgICAgICAqLyBcDQor ICAgICAgICAgIChCYXNlKSAgICAgICAgICAgICAgICAgIC8qIEFkZHJlc3MgICAgICAgICAgICov IFwNCisgICAgICAgICAgfQ0KKw0KKyNlbmRpZg0KZGlmZiAtLWdpdCBhL1BsYXRmb3JtL0ludGVs L1NpbWljc09wZW5Cb2FyZFBrZy9JbmNsdWRlL0d1aWQvU2ltaWNzWDU4UGxhdGZvcm1Db25maWcu aCBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9JbmNsdWRlL0d1aWQvU2ltaWNz WDU4UGxhdGZvcm1Db25maWcuaA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAw MDAuLmY2NWY2MWQ3NGQNCi0tLSAvZGV2L251bGwNCisrKyBiL1BsYXRmb3JtL0ludGVsL1NpbWlj c09wZW5Cb2FyZFBrZy9JbmNsdWRlL0d1aWQvU2ltaWNzWDU4UGxhdGZvcm1Db25maWcuaA0KQEAg LTAsMCArMSwxNyBAQA0KKy8qKiBAZmlsZQ0KKyAgR1VJRCBmb3IgVUVGSSB2YXJpYWJsZXMgdGhh dCBhcmUgc3BlY2lmaWMgdG8gT1ZNRiBjb25maWd1cmF0aW9uLg0KKw0KKyAgQ29weXJpZ2h0IChD KSAyMDE0LCBSZWQgSGF0LCBJbmMuDQorDQorICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNE LTItQ2xhdXNlLVBhdGVudA0KKyoqLw0KKw0KKyNpZm5kZWYgX19TSU1JQ1NYNThfUExBVEZPUk1f Q09ORklHX0hfXw0KKyNkZWZpbmUgX19TSU1JQ1NYNThfUExBVEZPUk1fQ09ORklHX0hfXw0KKw0K KyNkZWZpbmUgU0lNSUNTWDU4X1BMQVRGT1JNX0NPTkZJR19HVUlEIFwNCit7MHhlZWQzNWY1Nywg MHg0ZmYyLCAweDQyNDQsIHsweGI4LCAweDNhLCAweGVhLCAweDcxLCAweDVmLCAweGQzLCAweDU5 LCAweGE1fX0NCisNCitleHRlcm4gRUZJX0dVSUQgZ1NpbWljc1g1OFBsYXRmb3JtQ29uZmlnR3Vp ZDsNCisNCisjZW5kaWYNCmRpZmYgLS1naXQgYS9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9h cmRQa2cvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL1g1OEljaDEwLmggYi9QbGF0Zm9ybS9JbnRl bC9TaW1pY3NPcGVuQm9hcmRQa2cvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL1g1OEljaDEwLmgN Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwLi4zNmMwODE3NmQxDQotLS0g L2Rldi9udWxsDQorKysgYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvSW5jbHVk ZS9JbmR1c3RyeVN0YW5kYXJkL1g1OEljaDEwLmgNCkBAIC0wLDAgKzEsMTA2IEBADQorLyoqIEBm aWxlDQorICBWYXJpb3VzIHJlZ2lzdGVyIG51bWJlcnMgYW5kIHZhbHVlIGJpdHMgYmFzZWQgb24g dGhlIGZvbGxvd2luZyBwdWJsaWNhdGlvbnM6DQorICAtIEludGVsKFIpIGRhdGFzaGVldCAzMTk5 NzMtMDAzDQorICAtIEludGVsKFIpIGRhdGFzaGVldCAzMTk5NzQtMDE3VVMNCisNCisgIENvcHly aWdodCAoQykgMjAxNSwgUmVkIEhhdCwgSW5jLg0KKyAgQ29weXJpZ2h0IChjKSAyMDE0LCBHYWJy aWVsIEwuIFNvbWxvIDxzb21sb0BjbXUuZWR1Pg0KKw0KKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCisqKi8NCisNCisjaWZuZGVmIF9fWDU4X0lDSDEwX0hf Xw0KKyNkZWZpbmUgX19YNThfSUNIMTBfSF9fDQorDQorI2luY2x1ZGUgPExpYnJhcnkvUGNpTGli Lmg+DQorDQorLy8NCisvLyBIb3N0IEJyaWRnZSBEZXZpY2UgSUQgKERJRCkgdmFsdWUgZm9yIElD SDEwDQorLy8NCisjZGVmaW5lIElOVEVMX0lDSDEwX0RFVklDRV9JRCAweDM0MDANCisNCisvLw0K Ky8vIEIvRC9GL1R5cGU6IDAvMC8wL1BDSQ0KKy8vDQorI2RlZmluZSBEUkFNQ19SRUdJU1RFUl9R MzUoT2Zmc2V0KSBQQ0lfTElCX0FERFJFU1MgKDAsIDAsIDAsIChPZmZzZXQpKQ0KKyNkZWZpbmUg RFJBTUNfUkVHSVNURVJfWDU4KE9mZnNldCkgUENJX0xJQl9BRERSRVNTICgwLCAyMCwgMCwgKE9m ZnNldCkpDQorI2RlZmluZSBNQ0hfR0dDICAgICAgICAgICAgICAgICAweDUyDQorI2RlZmluZSBN Q0hfR0dDX0lWRCAgICAgICAgICAgICBCSVQxDQorDQorI2RlZmluZSBNQ0hfUENJRVhCQVJfTE9X ICAgICAgICAweDEwQw0KKyNkZWZpbmUgTUNIX1BDSUVYQkFSX0xJRCAgICAgICAgMHgxMEUNCisj ZGVmaW5lIE1DSF9QQ0lFWEJBUl9TSElGVCAgICAgIDE2DQorI2RlZmluZSBNQ0hfUENJRVhCQVJf TE9XTUFTSyAgICAweDBGRkZGRkZGDQorI2RlZmluZSBNQ0hfUENJRVhCQVJfQlVTX0ZGICAgICAw DQorI2RlZmluZSBNQ0hfUENJRVhCQVJfRU4gICAgICAgICBCSVQwDQorDQorI2RlZmluZSBNQ0hf UENJRVhCQVJfSElHSCAgICAgICAweDY0DQorI2RlZmluZSBNQ0hfUENJRVhCQVJfSElHSE1BU0sg ICAweEZGRkZGRkYwDQorDQorI2RlZmluZSBNQ0hfU01SQU0gICAgICAgICAgICAgMHg5RA0KKyNk ZWZpbmUgTUNIX1NNUkFNX0RfTENLICAgICAgICAgQklUNA0KKyNkZWZpbmUgTUNIX1NNUkFNX0df U01SQU1FICAgICAgQklUMw0KKw0KKyNkZWZpbmUgTUNIX0VTTVJBTUMgICAgICAgICAgIDB4OUUN CisjZGVmaW5lIE1DSF9FU01SQU1DX0hfU01SQU1FICAgIEJJVDcNCisjZGVmaW5lIE1DSF9FU01S QU1DX0VfU01FUlIgICAgIEJJVDYNCisjZGVmaW5lIE1DSF9FU01SQU1DX1NNX0NBQ0hFICAgIEJJ VDUNCisjZGVmaW5lIE1DSF9FU01SQU1DX1NNX0wxICAgICAgIEJJVDQNCisjZGVmaW5lIE1DSF9F U01SQU1DX1NNX0wyICAgICAgIEJJVDMNCisjZGVmaW5lIE1DSF9FU01SQU1DX1RTRUdfOE1CICAg IEJJVDMNCisjZGVmaW5lIE1DSF9FU01SQU1DX1RTRUdfMk1CICAgIEJJVDINCisjZGVmaW5lIE1D SF9FU01SQU1DX1RTRUdfMU1CICAgIEJJVDENCisjZGVmaW5lIE1DSF9FU01SQU1DX1RTRUdfTUFT SyAgIChCSVQzIHwgQklUMiB8IEJJVDEpDQorI2RlZmluZSBNQ0hfRVNNUkFNQ19UX0VOICAgICAg ICBCSVQwDQorDQorI2RlZmluZSBNQ0hfR0JTTSAgICAgICAgICAgICAgMHhBNA0KKyNkZWZpbmUg TUNIX0dCU01fTUJfU0hJRlQgICAgICAgMjANCisNCisjZGVmaW5lIE1DSF9CR1NNICAgICAgICAg ICAgICAweEE4DQorI2RlZmluZSBNQ0hfQkdTTV9NQl9TSElGVCAgICAgICAyMA0KKw0KKyNkZWZp bmUgTUNIX1RTRUdNQiAgICAgICAgICAgIDB4QTgNCisjZGVmaW5lIE1DSF9UU0VHTUJfTUJfU0hJ RlQgICAgIDIwDQorDQorI2RlZmluZSBNQ0hfVE9MVUQgICAgICAgICAgICAgMHhEMA0KKw0KKy8v DQorLy8gQi9EL0YvVHlwZTogMC8weDFmLzAvUENJDQorLy8NCisjZGVmaW5lIFBPV0VSX01HTVRf UkVHSVNURVJfSUNIMTAoT2Zmc2V0KSBcDQorICBQQ0lfTElCX0FERFJFU1MgKDAsIDB4MWYsIDAs IChPZmZzZXQpKQ0KKw0KKyNkZWZpbmUgSUNIMTBfUE1CQVNFICAgICAgICAgICAgICAgMHg0MA0K KyNkZWZpbmUgSUNIMTBfUE1CQVNFX01BU0sgICAgICAgICAgICAoQklUMTUgfCBCSVQxNCB8IEJJ VDEzIHwgQklUMTIgfCBCSVQxMSB8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgQklUMTAgfCBCSVQ5ICB8IEJJVDggIHwgQklUNykNCisNCisjZGVmaW5lIElDSDEwX0FD UElfQ05UTCAgICAgICAgICAgIDB4NDQNCisjZGVmaW5lIElDSDEwX0FDUElfQ05UTF9BQ1BJX0VO ICAgICAgQklUNw0KKw0KKyNkZWZpbmUgSUNIMTBfR0VOX1BNQ09OXzEgICAgICAgICAgMHhBMA0K KyNkZWZpbmUgSUNIMTBfR0VOX1BNQ09OXzFfU01JX0xPQ0sgICBCSVQ0DQorDQorI2RlZmluZSBJ Q0gxMF9SQ0JBICAgICAgICAgICAgICAgICAweEYwDQorI2RlZmluZSBJQ0gxMF9SQ0JBX0VOICAg ICAgICAgICAgICAgIEJJVDANCisNCisjZGVmaW5lIElDSDEwX1BNQkFTRV9JTyAgICAgICAgICAg IDB4NDAwDQorLy8NCisvLyBJTyBwb3J0cw0KKy8vDQorI2RlZmluZSBJQ0gxMF9BUE1fQ05UIDB4 QjINCisjZGVmaW5lIElDSDEwX0FQTV9TVFMgMHhCMw0KKw0KKy8vDQorLy8gSU8gcG9ydHMgcmVs YXRpdmUgdG8gUE1CQVNFDQorLy8NCisjZGVmaW5lIElDSDEwX1BNQkFTRV9PRlNfU01JX0VOICAg MHgzMA0KKyNkZWZpbmUgSUNIMTBfU01JX0VOX0FQTUNfRU4gICAgICBCSVQ1DQorI2RlZmluZSBJ Q0gxMF9TTUlfRU5fR0JMX1NNSV9FTiAgIEJJVDANCisjZGVmaW5lIElDSDEwX1NNSV9FTl9FT1Mg ICAgICAgICAgQklUMSAgLy8gRW5kIG9mIFNNSQ0KKw0KKyNkZWZpbmUgSUNIMTBfUE1CQVNFX09G U19TTUlfU1RTICAweDM0DQorI2RlZmluZSBJQ0gxMF9TTUlfU1RTX0FQTSAgICAgICAgIEJJVDUg IC8vIEFQTSBTdGF0dXMNCisNCisjZGVmaW5lIElDSDEwX1JPT1RfQ09NUExFWF9CQVNFIDB4RkVE MUMwMDANCisNCisjZW5kaWYNCmRpZmYgLS1naXQgYS9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVu Qm9hcmRQa2cvSW5jbHVkZS9Qcm90b2NvbC9Jc2FBY3BpLmggYi9QbGF0Zm9ybS9JbnRlbC9TaW1p Y3NPcGVuQm9hcmRQa2cvSW5jbHVkZS9Qcm90b2NvbC9Jc2FBY3BpLmgNCm5ldyBmaWxlIG1vZGUg MTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwLi4xMmFlYjEyMjdjDQotLS0gL2Rldi9udWxsDQorKysg Yi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvSW5jbHVkZS9Qcm90b2NvbC9Jc2FB Y3BpLmgNCkBAIC0wLDAgKzEsMjk4IEBADQorLyoqIEBmaWxlDQorICBFRkkgSVNBIEFDUEkgUHJv dG9jb2wgaXMgdXNlZCB0byBlbnVtZXJhdGUgYW5kIG1hbmFnZSBhbGwgdGhlIElTQSBjb250cm9s bGVycyBvbg0KKyAgdGhlIHBsYXRmb3JtJ3MgSVNBIEJ1cy4NCisNCitDb3B5cmlnaHQgKGMpIDIw MDYgLSAyMDE4LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQor U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCisNCisqKi8NCisN CisjaWZuZGVmIF9fSVNBX0FDUElfSF8NCisjZGVmaW5lIF9fSVNBX0FDUElfSF8NCisNCisvLy8N CisvLy8gR2xvYmFsIElEIGZvciB0aGUgRUZJIElTQSBBQ1BJIFByb3RvY29sLg0KKy8vLw0KKyNk ZWZpbmUgRUZJX0lTQV9BQ1BJX1BST1RPQ09MX0dVSUQgXA0KKyAgeyBcDQorICAgIDB4NjRhODky ZGMsIDB4NTU2MSwgMHg0NTM2LCB7IDB4OTIsIDB4YzcsIDB4NzksIDB4OWIsIDB4ZmMsIDB4MTgs IDB4MzMsIDB4NTUgfSBcDQorICB9DQorDQorLy8vDQorLy8vIEZvcndhcmQgZGVjbGFyYXRpb24g Zm8gdGhlIEVGSSBJU0EgQUNQSSBQcm90b2NvbA0KKy8vLw0KK3R5cGVkZWYgc3RydWN0IF9FRklf SVNBX0FDUElfUFJPVE9DT0wgRUZJX0lTQV9BQ1BJX1BST1RPQ09MOw0KKw0KKy8vLw0KKy8vLyBJ U0EgQUNQSSBQcm90b2NvbCBpbnRlcnJ1cHQgcmVzb3VyY2UgYXR0cmlidXRlcy4NCisvLy8NCisj ZGVmaW5lIEVGSV9JU0FfQUNQSV9JUlFfVFlQRV9ISUdIX1RSVUVfRURHRV9TRU5TSVRJVkUgICAw eDAxICAgLy8vPCBFZGdlIHRyaWdnZXJlZCBpbnRlcnJ1cHQgb24gYSByaXNpbmcgZWRnZS4NCisj ZGVmaW5lIEVGSV9JU0FfQUNQSV9JUlFfVFlQRV9MT1dfVFJVRV9FREdFX1NFTlNJVElWRSAgICAw eDAyICAgLy8vPCBFZGdlIHRyaWdnZXJlZCBpbnRlcnJ1cHQgb24gYSBmYWxsaW5nIGVkZ2UuDQor I2RlZmluZSBFRklfSVNBX0FDUElfSVJRX1RZUEVfSElHSF9UUlVFX0xFVkVMX1NFTlNJVElWRSAg MHgwNCAgIC8vLzwgTGV2ZWwgc2Vuc2l0aXZlIGludGVycnVwdCBhY3RpdmUgaGlnaC4NCisjZGVm aW5lIEVGSV9JU0FfQUNQSV9JUlFfVFlQRV9MT1dfVFJVRV9MRVZFTF9TRU5TSVRJVkUgICAweDA4 ICAgLy8vPCBMZXZlbCBzZW5zaXRpdmUgaW50ZXJydXB0IGFjdGl2ZSBsb3cuDQorDQorLy8vDQor Ly8vIElTQSBBQ1BJIFByb3RvY29sIERNQSByZXNvdXJjZSBhdHRyaWJ1dGVzLg0KKy8vLw0KKyNk ZWZpbmUgRUZJX0lTQV9BQ1BJX0RNQV9TUEVFRF9UWVBFX01BU0sgICAgICAgICAgICAgICAgIDB4 MDMgICAvLy88IEJpdCBtYXNrIG9mIHN1cHBvcnRlZCBETUEgc3BlZWQgYXR0cmlidXRlcy4NCisj ZGVmaW5lIEVGSV9JU0FfQUNQSV9ETUFfU1BFRURfVFlQRV9DT01QQVRJQklMSVRZICAgICAgICAw eDAwICAgLy8vPCBJU0EgY29udHJvbGxlciBzdXBwb3J0cyBjb21wYXRpYmlsaXR5IG1vZGUgRE1B IHRyYW5zZmVycy4NCisjZGVmaW5lIEVGSV9JU0FfQUNQSV9ETUFfU1BFRURfVFlQRV9BICAgICAg ICAgICAgICAgICAgICAweDAxICAgLy8vPCBJU0EgY29udHJvbGxlciBzdXBwb3J0cyB0eXBlIEEg RE1BIHRyYW5zZmVycy4NCisjZGVmaW5lIEVGSV9JU0FfQUNQSV9ETUFfU1BFRURfVFlQRV9CICAg ICAgICAgICAgICAgICAgICAweDAyICAgLy8vPCBJU0EgY29udHJvbGxlciBzdXBwb3J0cyB0eXBl IEIgRE1BIHRyYW5zZmVycy4NCisjZGVmaW5lIEVGSV9JU0FfQUNQSV9ETUFfU1BFRURfVFlQRV9G ICAgICAgICAgICAgICAgICAgICAweDAzICAgLy8vPCBJU0EgY29udHJvbGxlciBzdXBwb3J0cyB0 eXBlIEYgRE1BIHRyYW5zZmVycy4NCisjZGVmaW5lIEVGSV9JU0FfQUNQSV9ETUFfQ09VTlRfQllf QllURSAgICAgICAgICAgICAgICAgICAweDA0ICAgLy8vPCBJU0EgY29udHJvbGxlciBpbmNyZW1l bnRzIERNQSBhZGRyZXNzIGJ5IGJ5dGVzICg4LWJpdCkuDQorI2RlZmluZSBFRklfSVNBX0FDUElf RE1BX0NPVU5UX0JZX1dPUkQgICAgICAgICAgICAgICAgICAgMHgwOCAgIC8vLzwgSVNBIGNvbnRy b2xsZXIgaW5jcmVtZW50cyBETUEgYWRkcmVzcyBieSB3b3JkcyAoMTYtYml0KS4NCisjZGVmaW5l IEVGSV9JU0FfQUNQSV9ETUFfQlVTX01BU1RFUiAgICAgICAgICAgICAgICAgICAgICAweDEwICAg Ly8vPCBJU0EgY29udHJvbGxlciBpcyBhIERNQSBidXMgbWFzdGVyLg0KKyNkZWZpbmUgRUZJX0lT QV9BQ1BJX0RNQV9UUkFOU0ZFUl9UWVBFXzhfQklUICAgICAgICAgICAgIDB4MjAgICAvLy88IElT QSBjb250cm9sbGVyIG9ubHkgc3VwcG9ydHMgOC1iaXQgRE1BIHRyYW5zZmVycy4NCisjZGVmaW5l IEVGSV9JU0FfQUNQSV9ETUFfVFJBTlNGRVJfVFlQRV84X0JJVF9BTkRfMTZfQklUICAweDQwICAg Ly8vPCBJU0EgY29udHJvbGxlciBib3RoIDgtYml0IGFuZCAxNi1iaXQgRE1BIHRyYW5zZmVycy4N CisjZGVmaW5lIEVGSV9JU0FfQUNQSV9ETUFfVFJBTlNGRVJfVFlQRV8xNl9CSVQgICAgICAgICAg ICAweDgwICAgLy8vPCBJU0EgY29udHJvbGxlciBvbmx5IHN1cHBvcnRzIDE2LWJpdCBETUEgdHJh bnNmZXJzLg0KKw0KKy8vLw0KKy8vLyBJU0EgQUNQSSBQcm90b2NvbCBNTUlPIHJlc291cmNlIGF0 dHJpYnV0ZXMNCisvLy8NCisjZGVmaW5lIEVGSV9JU0FfQUNQSV9NRU1PUllfV0lEVEhfTUFTSyAg ICAgICAgICAgICAgICAgICAweDAzICAgLy8vPCBCaXQgbWFzayBvZiBzdXBwb3J0ZWQgSVNBIG1l bW9yeSB3aWR0aCBhdHRyaWJ1dGVzLg0KKyNkZWZpbmUgRUZJX0lTQV9BQ1BJX01FTU9SWV9XSURU SF84X0JJVCAgICAgICAgICAgICAgICAgIDB4MDAgICAvLy88IElTQSBNTUlPIHJlZ2lvbiBvbmx5 IHN1cHBvcnRzIDgtYml0IGFjY2Vzcy4NCisjZGVmaW5lIEVGSV9JU0FfQUNQSV9NRU1PUllfV0lE VEhfMTZfQklUICAgICAgICAgICAgICAgICAweDAxICAgLy8vPCBJU0EgTU1JTyByZWdpb24gb25s eSBzdXBwb3J0cyAxNi1iaXQgYWNjZXNzLg0KKyNkZWZpbmUgRUZJX0lTQV9BQ1BJX01FTU9SWV9X SURUSF84X0JJVF9BTkRfMTZfQklUICAgICAgIDB4MDIgICAvLy88IElTQSBNTUlPIHJlZ2lvbiBz dXBwb3J0cyBib3RoIDgtYml0IGFuZCAxNi1iaXQgYWNjZXNzLg0KKyNkZWZpbmUgRUZJX0lTQV9B Q1BJX01FTU9SWV9XUklURUFCTEUgICAgICAgICAgICAgICAgICAgIDB4MDQgICAvLy88IElTQSBN TUlPIHJlZ2lvbiBzdXBwb3J0cyB3cml0ZSB0cmFuc2FjdGlvbnMuDQorI2RlZmluZSBFRklfSVNB X0FDUElfTUVNT1JZX0NBQ0hFQUJMRSAgICAgICAgICAgICAgICAgICAgMHgwOCAgIC8vLzwgSVNB IE1NSU8gcmVnaW9uIHN1cHBvcnRzIGJlaW5nIGNhY2hlZC4NCisjZGVmaW5lIEVGSV9JU0FfQUNQ SV9NRU1PUllfU0hBRE9XQUJMRSAgICAgICAgICAgICAgICAgICAweDEwICAgLy8vPCBJU0EgTU1J TyByZWdpb24gbWF5IGJlIHNoYWRvd2VkLg0KKyNkZWZpbmUgRUZJX0lTQV9BQ1BJX01FTU9SWV9F WFBBTlNJT05fUk9NICAgICAgICAgICAgICAgIDB4MjAgICAvLy88IElTQSBNTUlPIHJlZ2lvbiBp cyBhbiBleHBhbnNpb24gUk9NLg0KKw0KKy8vLw0KKy8vLyBJU0EgQUNQSSBQcm90b2NvbCBJL08g cmVzb3VyY2UgYXR0cmlidXRlcw0KKy8vLw0KKyNkZWZpbmUgRUZJX0lTQV9BQ1BJX0lPX0RFQ09E RV8xMF9CSVRTICAgICAgICAgICAgICAgICAgIDB4MDEgICAgLy8vPCBJU0EgY29udHJvbGxlcnMg dXNlcyBhIDEwLWJpdCBhZGRyZXNzIGRlY29kZXIgZm9yIEkvTyBjeWNsZXMuDQorI2RlZmluZSBF RklfSVNBX0FDUElfSU9fREVDT0RFXzE2X0JJVFMgICAgICAgICAgICAgICAgICAgMHgwMiAgICAv Ly88IElTQSBjb250cm9sbGVycyB1c2VzIGEgMTYtYml0IGFkZHJlc3MgZGVjb2RlciBmb3IgSS9P IGN5Y2xlcy4NCisNCisvLy8NCisvLy8gRUZJIElTQSBBQ1BJIHJlc291cmNlIHR5cGUNCisvLy8N Cit0eXBlZGVmIGVudW0gew0KKyAgRWZpSXNhQWNwaVJlc291cmNlRW5kT2ZMaXN0LCAgICAvLy88 IE1hcmtzIHRoZSBlbmQgaWYgYSByZXNvdXJjZSBsaXN0Lg0KKyAgRWZpSXNhQWNwaVJlc291cmNl SW8sICAgICAgICAgICAvLy88IElTQSBJL08gcG9ydCByZXNvdXJjZSByYW5nZS4NCisgIEVmaUlz YUFjcGlSZXNvdXJjZU1lbW9yeSwgICAgICAgLy8vPCBJU0EgTU1JTyByZXNvdXJjZSByYW5nZS4N CisgIEVmaUlzYUFjcGlSZXNvdXJjZURtYSwgICAgICAgICAgLy8vPCBJU0EgRE1BIHJlc291cmNl Lg0KKyAgRWZpSXNhQWNwaVJlc291cmNlSW50ZXJydXB0ICAgICAvLy88IElTQSBpbnRlcnJ1cHQg cmVzb3VyY2UuDQorfSBFRklfSVNBX0FDUElfUkVTT1VSQ0VfVFlQRTsNCisNCisvLy8NCisvLy8g RUZJIElTQSBBQ1BJIGdlbmVyaWMgcmVzb3VyY2Ugc3RydWN0dXJlDQorLy8vDQordHlwZWRlZiBz dHJ1Y3Qgew0KKyAgRUZJX0lTQV9BQ1BJX1JFU09VUkNFX1RZUEUgIFR5cGU7ICAgICAgICAgLy8v PCBUaGUgdHlwZSBvZiByZXNvdXJjZSAoSS9PLCBNTUlPLCBETUEsIEludGVycnVwdCkuDQorICBV SU5UMzIgICAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlOyAgICAvLy88IEJpdCBtYXNrIG9m IGF0dHJpYnV0ZXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcmVzb3VyY2UuICBTZWUgRUZJX0lTQV9B Q1BJX3h4eCBtYWNyb3MgZm9yIHZhbGlkIGNvbWJpbmF0aW9ucy4NCisgIFVJTlQzMiAgICAgICAg ICAgICAgICAgICAgICBTdGFydFJhbmdlOyAgIC8vLzwgVGhlIHN0YXJ0IG9mIHRoZSByZXNvdXJj ZSByYW5nZS4NCisgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICBFbmRSYW5nZTsgICAgIC8v LzwgVGhlIGVuZCBvZiB0aGUgcmVzb3VyY2UgcmFuZ2UuDQorfSBFRklfSVNBX0FDUElfUkVTT1VS Q0U7DQorDQorLy8vDQorLy8vIEVGSSBJU0EgQUNQSSByZXNvdXJjZSBkZXZpY2UgaWRlbnRpZmll cg0KKy8vLw0KK3R5cGVkZWYgc3RydWN0IHsNCisgIFVJTlQzMiAgSElEOyAgIC8vLzwgVGhlIEFD UEkgSGFyZHdhcmUgSWRlbnRpZmllciB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggYW4gSVNBIGNvbnRy b2xsZXIuICBNYXRjaHMgQUNQSSBEU0RUIGNvbnRlbnRzLg0KKyAgVUlOVDMyICBVSUQ7ICAgLy8v PCBUaGUgQUNQSSBVbmlxdWUgSWRlbnRpZmllciB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggYW4gSVNB IGNvbnRyb2xsZXIuICBNYXRjaGVzIEFDUEkgRFNEVCBjb250ZW50cy4NCit9IEVGSV9JU0FfQUNQ SV9ERVZJQ0VfSUQ7DQorDQorLy8vDQorLy8vIEVGSSBJU0EgQUNQSSByZXNvdXJjZSBsaXN0DQor Ly8vDQordHlwZWRlZiBzdHJ1Y3Qgew0KKyAgRUZJX0lTQV9BQ1BJX0RFVklDRV9JRCAgRGV2aWNl OyAgICAgICAgICAvLy88IFRoZSBBQ1BJIEhJRC9VSUQgYXNzb2NpYXRlZCB3aXRoIGFuIElTQSBj b250cm9sbGVyLg0KKyAgRUZJX0lTQV9BQ1BJX1JFU09VUkNFICAgKlJlc291cmNlSXRlbTsgICAv Ly88IEEgcG9pbnRlciB0byB0aGUgbGlzdCBvZiByZXNvdXJjZXMgYXNzb2NpYXRlZCB3aXRoIGFu IElTQSBjb250cm9sbGVyLg0KK30gRUZJX0lTQV9BQ1BJX1JFU09VUkNFX0xJU1Q7DQorDQorLyoq DQorICBFbnVtZXJhdGVzIHRoZSBJU0EgY29udHJvbGxlcnMgb24gYW4gSVNBIGJ1cy4NCisNCisg IFRoaXMgc2VydmljZSBhbGxvd3MgYWxsIHRoZSBJU0EgY29udHJvbGxlcnMgb24gYW4gSVNBIGJ1 cyB0byBiZSBlbnVtZXJhdGVkLiAgSWYNCisgIERldmljZSBpcyBhIHBvaW50ZXIgdG8gYSBOVUxM IHZhbHVlLCB0aGVuIHRoZSBmaXJzdCBJU0EgY29udHJvbGxlciBvbiB0aGUgSVNBDQorICBidXMg aXMgcmV0dXJuZWQgaW4gRGV2aWNlIGFuZCBFRklfU1VDQ0VTUyBpcyByZXR1cm5lZC4gIElmIERl dmljZSBpcyBhIHBvaW50ZXINCisgIHRvIGEgdmFsdWUgdGhhdCB3YXMgcmV0dXJuZWQgb24gYSBw cmlvciBjYWxsIHRvIERldmljZUVudW1lcmF0ZSgpLCB0aGVuIHRoZSBuZXh0DQorICBJU0EgY29u dHJvbGxlciBvbiB0aGUgSVNBIGJ1cyBpcyByZXR1cm5lZCBpbiBEZXZpY2UgYW5kIEVGSV9TVUND RVNTIGlzIHJldHVybmVkLg0KKyAgSWYgRGV2aWNlIGlzIGEgcG9pbnRlciB0byB0aGUgbGFzdCBJ U0EgY29udHJvbGxlciBvbiB0aGUgSVNBIGJ1cywgdGhlbg0KKyAgRUZJX05PVF9GT1VORCBpcyBy ZXR1cm5lZC4NCisNCisgIEBwYXJhbVtpbl0gIFRoaXMgICAgIFRoZSBwb2ludGVyIHRvIHRoZSBF RklfSVNBX0FDUElfUFJPVE9DT0wgaW5zdGFuY2UuDQorICBAcGFyYW1bb3V0XSBEZXZpY2UgICBU aGUgcG9pbnRlciB0byBhbiBJU0EgY29udHJvbGxlciBuYW1lZCBieSBBQ1BJIEhJRC9VSUQuDQor DQorICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgIFRoZSBuZXh0IElTQSBjb250cm9sbGVyIG9uIHRo ZSBJU0EgYnVzIHdhcyByZXR1cm5lZC4NCisgIEByZXR2YWwgRUZJX05PVF9GT1VORCAgTm8gZGV2 aWNlIGZvdW5kLg0KKw0KKyoqLw0KK3R5cGVkZWYNCitFRklfU1RBVFVTDQorKEVGSUFQSSAqRUZJ X0lTQV9BQ1BJX0RFVklDRV9FTlVNRVJBVEUpKA0KKyAgSU4gIEVGSV9JU0FfQUNQSV9QUk9UT0NP TCAgICpUaGlzLA0KKyAgT1VUIEVGSV9JU0FfQUNQSV9ERVZJQ0VfSUQgICoqRGV2aWNlDQorICAp Ow0KKw0KKy8qKg0KKyAgU2V0cyB0aGUgcG93ZXIgc3RhdGUgb2YgYW4gSVNBIGNvbnRyb2xsZXIu DQorDQorICBUaGlzIHNlcnZpY2VzIHNldHMgdGhlIHBvd2VyIHN0YXRlIG9mIHRoZSBJU0EgY29u dHJvbGxlciBzcGVjaWZpZWQgYnkgRGV2aWNlIHRvDQorICB0aGUgcG93ZXIgc3RhdGUgc3BlY2lm aWVkIGJ5IE9uT2ZmLiAgVFJVRSBkZW5vdGVzIG9uLCBGQUxTRSBkZW5vdGVzIG9mZi4NCisgIElm IHRoZSBwb3dlciBzdGF0ZSBpcyBzdWNlc3NmdWxseSBzZXQgb24gdGhlIElTQSBDb250cm9sbGVy LCB0aGVuDQorICBFRklfU1VDQ0VTUyBpcyByZXR1cm5lZC4NCisNCisgIEBwYXJhbVtpbl0gVGhp cyAgICAgVGhlIHBvaW50ZXIgdG8gdGhlIEVGSV9JU0FfQUNQSV9QUk9UT0NPTCBpbnN0YW5jZS4N CisgIEBwYXJhbVtpbl0gRGV2aWNlICAgVGhlIHBvaW50ZXIgdG8gYW4gSVNBIGNvbnRyb2xsZXIg bmFtZWQgYnkgQUNQSSBISUQvVUlELg0KKyAgQHBhcmFtW2luXSBPbk9mZiAgICBUUlVFIGRlbm90 ZXMgb24sIEZBTFNFIGRlbm90ZXMgb2ZmLg0KKw0KKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgIFN1 Y2Nlc3NmdWxseSBzZXQgdGhlIHBvd2VyIHN0YXRlIG9mIHRoZSBJU0EgY29udHJvbGxlci4NCisg IEByZXR2YWwgT3RoZXIgICAgICAgICBUaGUgSVNBIGNvbnRyb2xsZXIgY291bGQgbm90IGJlIHBs YWNlZCBpbiB0aGUgcmVxdWVzdGVkIHBvd2VyIHN0YXRlLg0KKw0KKyoqLw0KK3R5cGVkZWYNCitF RklfU1RBVFVTDQorKEVGSUFQSSAqRUZJX0lTQV9BQ1BJX1NFVF9ERVZJQ0VfUE9XRVIpKA0KKyAg SU4gRUZJX0lTQV9BQ1BJX1BST1RPQ09MICAgKlRoaXMsDQorICBJTiBFRklfSVNBX0FDUElfREVW SUNFX0lEICAqRGV2aWNlLA0KKyAgSU4gQk9PTEVBTiAgICAgICAgICAgICAgICAgT25PZmYNCisg ICk7DQorDQorLyoqDQorICBSZXRyaWV2ZXMgdGhlIGN1cnJlbnQgc2V0IG9mIHJlc291cmNlcyBh c3NvY2lhdGVkIHdpdGggYW4gSVNBIGNvbnRyb2xsZXIuDQorDQorICBSZXRyaWV2ZXMgdGhlIHNl dCBvZiBJL08sIE1NSU8sIERNQSwgYW5kIGludGVycnVwdCByZXNvdXJjZXMgY3VycmVudGx5DQor ICBhc3NpZ25lZCB0byB0aGUgSVNBIGNvbnRyb2xsZXIgc3BlY2lmaWVkIGJ5IERldmljZS4gIFRo ZXNlIHJlc291cmNlcw0KKyAgYXJlIHJldHVybmVkIGluIFJlc291cmNlTGlzdC4NCisNCisgIEBw YXJhbVtpbl0gIFRoaXMgICAgICAgICAgVGhlIHBvaW50ZXIgdG8gdGhlIEVGSV9JU0FfQUNQSV9Q Uk9UT0NPTCBpbnN0YW5jZS4NCisgIEBwYXJhbVtpbl0gIERldmljZSAgICAgICAgVGhlIHBvaW50 ZXIgdG8gYW4gSVNBIGNvbnRyb2xsZXIgbmFtZWQgYnkgQUNQSSBISUQvVUlELg0KKyAgQHBhcmFt W291dF0gUmVzb3VyY2VMaXN0ICBUaGUgcG9pbnRlciB0byB0aGUgY3VycmVudCByZXNvdXJjZSBs aXN0IGZvciBEZXZpY2UuDQorDQorICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgIFN1Y2Nlc3NmdWxs eSByZXRyaWV2ZWQgdGhlIGN1cnJlbnQgcmVzb3VyY2UgbGlzdC4NCisgIEByZXR2YWwgRUZJX05P VF9GT1VORCAgVGhlIHJlc291cmNlIGxpc3QgY291bGQgbm90IGJlIHJldHJpZXZlZC4NCisNCisq Ki8NCit0eXBlZGVmDQorRUZJX1NUQVRVUw0KKyhFRklBUEkgKkVGSV9JU0FfQUNQSV9HRVRfQ1VS X1JFU09VUkNFKSgNCisgIElOICBFRklfSVNBX0FDUElfUFJPVE9DT0wgICAgICAgKlRoaXMsDQor ICBJTiAgRUZJX0lTQV9BQ1BJX0RFVklDRV9JRCAgICAgICpEZXZpY2UsDQorICBPVVQgRUZJX0lT QV9BQ1BJX1JFU09VUkNFX0xJU1QgICoqUmVzb3VyY2VMaXN0DQorICApOw0KKw0KKy8qKg0KKyAg UmV0cmlldmVzIHRoZSBzZXQgb2YgcG9zc2libGUgcmVzb3VyY2VzIHRoYXQgbWF5IGJlIGFzc2ln bmVkIHRvIGFuIElTQSBjb250cm9sbGVyDQorICB3aXRoIFNldFJlc291cmNlKCkuDQorDQorICBS ZXRyaWV2ZXMgdGhlIHBvc3NpYmxlIHNldHMgb2YgSS9PLCBNTUlPLCBETUEsIGFuZCBpbnRlcnJ1 cHQgcmVzb3VyY2VzIGZvciB0aGUNCisgIElTQSBjb250cm9sbGVyIHNwZWNpZmllZCBieSBEZXZp Y2UuICBUaGUgc2V0cyBhcmUgcmV0dXJuZWQgaW4gUmVzb3VyY2VMaXN0Lg0KKw0KKyAgQHBhcmFt W2luXSAgVGhpcyAgICAgICAgICAgVGhlIHBvaW50ZXIgdG8gdGhlIEVGSV9JU0FfQUNQSV9QUk9U T0NPTCBpbnN0YW5jZS4NCisgIEBwYXJhbVtpbl0gIERldmljZSAgICAgICAgIFRoZSBwb2ludGVy IHRvIGFuIElTQSBjb250cm9sbGVyIG5hbWVkIGJ5IEFDUEkgSElEL1VJRC4NCisgIEBwYXJhbVtv dXRdIFJlc291cmNlTGlzdCAgIFRoZSBwb2ludGVyIHRvIHRoZSByZXR1cm5lZCBsaXN0IG9mIHJl c291cmNlIGxpc3RzLg0KKw0KKyAgQHJldHZhbCBFRklfVU5TVVBQT1JURUQgIFRoaXMgc2Vydmlj ZSBpcyBub3Qgc3VwcG9ydGVkLg0KKw0KKyoqLw0KK3R5cGVkZWYNCitFRklfU1RBVFVTDQorKEVG SUFQSSAqRUZJX0lTQV9BQ1BJX0dFVF9QT1NfUkVTT1VSQ0UpKA0KKyAgSU4gRUZJX0lTQV9BQ1BJ X1BST1RPQ09MICAgICAgICAqVGhpcywNCisgIElOIEVGSV9JU0FfQUNQSV9ERVZJQ0VfSUQgICAg ICAgKkRldmljZSwNCisgIE9VVCBFRklfSVNBX0FDUElfUkVTT1VSQ0VfTElTVCAgKipSZXNvdXJj ZUxpc3QNCisgICk7DQorDQorLyoqDQorICBBc3NpZ25zIHJlc291cmNlcyB0byBhbiBJU0EgY29u dHJvbGxlci4NCisNCisgIEFzc2lnbnMgdGhlIEkvTywgTU1JTywgRE1BLCBhbmQgaW50ZXJydXB0 IHJlc291cmNlcyBzcGVjaWZpZWQgYnkgUmVzb3VyY2VMaXN0DQorICB0byB0aGUgSVNBIGNvbnRy b2xsZXIgc3BlY2lmaWVkIGJ5IERldmljZS4gIFJlc291cmNlTGlzdCBtdXN0IG1hdGNoIGEgcmVz b3VyY2UgbGlzdCByZXR1cm5lZCBieSBHZXRQb3NSZXNvdXJjZSgpIGZvciB0aGUgc2FtZSBJU0Eg Y29udHJvbGxlci4NCisNCisgIEBwYXJhbVtpbl0gVGhpcyAgICAgICAgICAgVGhlIHBvaW50ZXIg dG8gdGhlIEVGSV9JU0FfQUNQSV9QUk9UT0NPTCBpbnN0YW5jZS4NCisgIEBwYXJhbVtpbl0gRGV2 aWNlICAgICAgICAgVGhlIHBvaW50ZXIgdG8gYW4gSVNBIGNvbnRyb2xsZXIgbmFtZWQgYnkgQUNQ SSBISUQvVUlELg0KKyAgQHBhcmFtW2luXSBSZXNvdXJjZUxpc3QgICBUaGUgcG9pbnRlciB0byBh IHJlc291cmNlcyBsaXN0IHRoYXQgbXVzdCBiZSBvbmUgb2YgdGhlDQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJlc291cmNlIGxpc3RzIHJldHVybmVkIGJ5IEdldFBvc1Jlc291cmNlKCkg Zm9yIHRoZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJU0EgY29udHJvbGxlciBzcGVj aWZpZWQgYnkgRGV2aWNlLg0KKw0KKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgU3VjY2Vzc2Z1bGx5 IHNldCByZXNvdXJjZXMgb24gdGhlIElTQSBjb250cm9sbGVyLg0KKyAgQHJldHZhbCBPdGhlciAg ICAgICAgVGhlIHJlc291cmNlcyBjb3VsZCBub3QgYmUgc2V0IGZvciB0aGUgSVNBIGNvbnRyb2xs ZXIuDQorDQorKiovDQordHlwZWRlZg0KK0VGSV9TVEFUVVMNCisoRUZJQVBJICpFRklfSVNBX0FD UElfU0VUX1JFU09VUkNFKSgNCisgIElOIEVGSV9JU0FfQUNQSV9QUk9UT0NPTCAgICAgICAqVGhp cywNCisgIElOIEVGSV9JU0FfQUNQSV9ERVZJQ0VfSUQgICAgICAqRGV2aWNlLA0KKyAgSU4gRUZJ X0lTQV9BQ1BJX1JFU09VUkNFX0xJU1QgICpSZXNvdXJjZUxpc3QNCisgICk7DQorDQorLyoqDQor ICBFbmFibGVzIG9yIGRpc2FibGVzIGFuIElTQSBjb250cm9sbGVyLg0KKw0KKyAgQHBhcmFtW2lu XSBUaGlzICAgICBUaGUgcG9pbnRlciB0byB0aGUgRUZJX0lTQV9BQ1BJX1BST1RPQ09MIGluc3Rh bmNlLg0KKyAgQHBhcmFtW2luXSBEZXZpY2UgICBUaGUgcG9pbnRlciB0byB0aGUgSVNBIGNvbnRy b2xsZXIgdG8gZW5hYmxlL2Rpc2FibGUuDQorICBAcGFyYW1baW5dIEVuYWJsZSAgIFRSVUUgdG8g ZW5hYmxlIHRoZSBJU0EgY29udHJvbGxlci4gIEZBTFNFIHRvIGRpc2FibGUgdGhlDQorICAgICAg ICAgICAgICAgICAgICAgIElTQSBjb250cm9sbGVyLg0KKw0KKyAgQHJldHZhbCBFRklfU1VDQ0VT UyAgIFN1Y2Nlc3NmdWxseSBlbmFibGVkL2Rpc2FibGVkIHRoZSBJU0EgY29udHJvbGxlci4NCisg IEByZXR2YWwgT3RoZXIgICAgICAgICBUaGUgSVNBIGNvbnRyb2xsZXIgY291bGQgbm90IGJlIHBs YWNlZCBpbiB0aGUgcmVxdWVzdGVkIHN0YXRlLg0KKw0KKyoqLw0KK3R5cGVkZWYNCitFRklfU1RB VFVTDQorKEVGSUFQSSAqRUZJX0lTQV9BQ1BJX0VOQUJMRV9ERVZJQ0UpKA0KKyAgSU4gRUZJX0lT QV9BQ1BJX1BST1RPQ09MICAgKlRoaXMsDQorICBJTiBFRklfSVNBX0FDUElfREVWSUNFX0lEICAq RGV2aWNlLA0KKyAgSU4gQk9PTEVBTiAgICAgICAgICAgICAgICAgRW5hYmxlDQorICApOw0KKw0K Ky8qKg0KKyAgSW5pdGlhbGl6ZXMgYW4gSVNBIGNvbnRyb2xsZXIsIHNvIHRoYXQgaXQgY2FuIGJl IHVzZWQuICBUaGlzIHNlcnZpY2UgbXVzdCBiZSBjYWxsZWQNCisgIGJlZm9yZSBTZXRSZXNvdXJj ZSgpLCBFbmFibGVEZXZpY2UoKSwgb3IgU2V0UG93ZXIoKSB3aWxsIGJlaGF2ZSBhcyBleHBlY3Rl ZC4NCisNCisgIEBwYXJhbVtpbl0gVGhpcyAgICAgVGhlIHBvaW50ZXIgdG8gdGhlIEVGSV9JU0Ff QUNQSV9QUk9UT0NPTCBpbnN0YW5jZS4NCisgIEBwYXJhbVtpbl0gRGV2aWNlICAgVGhlIHBvaW50 ZXIgdG8gYW4gSVNBIGNvbnRyb2xsZXIgbmFtZWQgYnkgQUNQSSBISUQvVUlELg0KKw0KKyAgQHJl dHZhbCBFRklfU1VDQ0VTUyAgIFN1Y2Nlc3NmdWxseSBpbml0aWFsaXplZCBhbiBJU0EgY29udHJv bGxlci4NCisgIEByZXR2YWwgT3RoZXIgICAgICAgICBUaGUgSVNBIGNvbnRyb2xsZXIgY291bGQg bm90IGJlIGluaXRpYWxpemVkLg0KKw0KKyoqLw0KK3R5cGVkZWYNCitFRklfU1RBVFVTDQorKEVG SUFQSSAqRUZJX0lTQV9BQ1BJX0lOSVRfREVWSUNFKSgNCisgIElOIEVGSV9JU0FfQUNQSV9QUk9U T0NPTCAgICpUaGlzLA0KKyAgSU4gRUZJX0lTQV9BQ1BJX0RFVklDRV9JRCAgKkRldmljZQ0KKyAg KTsNCisNCisvKioNCisgIEluaXRpYWxpemVzIGFsbCB0aGUgSFcgc3RhdGVzIHJlcXVpcmVkIGZv ciB0aGUgSVNBIGNvbnRyb2xsZXJzIG9uIHRoZSBJU0EgYnVzDQorICB0byBiZSBlbnVtZXJhdGVk IGFuZCBtYW5hZ2VkIGJ5IHRoZSByZXN0IG9mIHRoZSBzZXJ2aWNlcyBpbiB0aGlzIHByb3JvdG9s Lg0KKyAgVGhpcyBzZXJ2aWNlIG11c3QgYmUgY2FsbGVkIGJlZm9yZSBhbnkgb2YgdGhlIG90aGVy IHNlcnZpY2VzIGluIHRoaXMNCisgIHByb3RvY29sIHdpbGwgZnVuY3Rpb24gYXMgZXhwZWN0ZWQu DQorDQorICBAcGFyYW1baW5dIFRoaXMgIFRoZSBwb2ludGVyIHRvIHRoZSBFRklfSVNBX0FDUElf UFJPVE9DT0wgaW5zdGFuY2UuDQorDQorICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgU3VjY2Vzc2Z1 bGx5IGluaXRpYWxpemVkIGFsbCByZXF1aXJlZCBoYXJkd2FyZSBzdGF0ZXMuDQorICBAcmV0dmFs IE90aGVyICAgICAgICAgVGhlIElTQSBpbnRlcmZhY2UgY291bGQgbm90IGJlIGluaXRpYWxpemVk Lg0KKw0KKyoqLw0KK3R5cGVkZWYNCitFRklfU1RBVFVTDQorKEVGSUFQSSAqRUZJX0lTQV9BQ1BJ X0lOVEVSRkFDRV9JTklUKSgNCisgIElOIEVGSV9JU0FfQUNQSV9QUk9UT0NPTCAgKlRoaXMNCisg ICk7DQorDQorLy8vDQorLy8vIFRoZSBFRklfSVNBX0FDUElfUFJPVE9DT0wgcHJvdmlkZXMgdGhl IHNlcnZpY2VzIHRvIGVudW1lcmF0ZSBhbmQgbWFuYWdlDQorLy8vIElTQSBjb250cm9sbGVycyBv biBhbiBJU0EgYnVzLiAgVGhlc2Ugc2VydmljZXMgaW5jbHVkZSB0aGUgYWJpbGl0eSB0byBpbml0 aWFsaXplLA0KKy8vLyBlbmFibGUsIGRpc2FibGUsIGFuZCBtYW5hZ2UgdGhlIHBvd2VyIHN0YXRl IG9mIElTQSBjb250cm9sbGVycy4gIEl0IGFsc28NCisvLy8gaW5jbHVkZXMgc2VydmljZXMgdG8g cXVlcnkgY3VycmVudCByZXNvdXJjZXMsIHF1ZXJ5IHBvc3NpYmxlIHJlc291cmNlcywNCisvLy8g YW5kIGFzc2lnbiByZXNvdXJjZXMgdG8gYW4gSVNBIGNvbnRyb2xsZXIuDQorLy8vDQorc3RydWN0 IF9FRklfSVNBX0FDUElfUFJPVE9DT0wgew0KKyAgRUZJX0lTQV9BQ1BJX0RFVklDRV9FTlVNRVJB VEUgIERldmljZUVudW1lcmF0ZTsNCisgIEVGSV9JU0FfQUNQSV9TRVRfREVWSUNFX1BPV0VSICBT ZXRQb3dlcjsNCisgIEVGSV9JU0FfQUNQSV9HRVRfQ1VSX1JFU09VUkNFICBHZXRDdXJSZXNvdXJj ZTsNCisgIEVGSV9JU0FfQUNQSV9HRVRfUE9TX1JFU09VUkNFICBHZXRQb3NSZXNvdXJjZTsNCisg IEVGSV9JU0FfQUNQSV9TRVRfUkVTT1VSQ0UgICAgICBTZXRSZXNvdXJjZTsNCisgIEVGSV9JU0Ff QUNQSV9FTkFCTEVfREVWSUNFICAgICBFbmFibGVEZXZpY2U7DQorICBFRklfSVNBX0FDUElfSU5J VF9ERVZJQ0UgICAgICAgSW5pdERldmljZTsNCisgIEVGSV9JU0FfQUNQSV9JTlRFUkZBQ0VfSU5J VCAgICBJbnRlcmZhY2VJbml0Ow0KK307DQorDQorZXh0ZXJuIEVGSV9HVUlEIGdFZmlJc2FBY3Bp UHJvdG9jb2xHdWlkOw0KKw0KKyNlbmRpZg0KZGlmZiAtLWdpdCBhL1BsYXRmb3JtL0ludGVsL1Np bWljc09wZW5Cb2FyZFBrZy9JbmNsdWRlL1Byb3RvY29sL0lzYUlvLmggYi9QbGF0Zm9ybS9JbnRl bC9TaW1pY3NPcGVuQm9hcmRQa2cvSW5jbHVkZS9Qcm90b2NvbC9Jc2FJby5oDQpuZXcgZmlsZSBt b2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMC4uMzAwMDAzMDVmYg0KLS0tIC9kZXYvbnVsbA0K KysrIGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0luY2x1ZGUvUHJvdG9jb2wv SXNhSW8uaA0KQEAgLTAsMCArMSwzNTYgQEANCisvKiogQGZpbGUNCisgIElTQSBJL08gUHJvdG9j b2wgaXMgdXNlZCBieSBJU0EgZGV2aWNlIGRyaXZlcnMgdG8gcGVyZm9ybSBJL08sIE1NSU8gYW5k IERNQQ0KKyAgb3BlcmF0aW9ucyBvbiB0aGUgSVNBIGNvbnRyb2xsZXJzIHRoZXkgbWFuYWdlLg0K Kw0KK0NvcHlyaWdodCAoYykgMjAwNiAtIDIwMTgsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmln aHRzIHJlc2VydmVkLjxCUj4NCitTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNl LVBhdGVudA0KKw0KKyoqLw0KKw0KKyNpZm5kZWYgX0VGSV9JU0FfSU9fSF8NCisjZGVmaW5lIF9F RklfSVNBX0lPX0hfDQorDQorI2luY2x1ZGUgPFByb3RvY29sL0lzYUFjcGkuaD4NCisNCisvLy8N CisvLy8gR2xvYmFsIElEIGZvciB0aGUgRUZJX0lTQV9JT19QUk9UT0NPTA0KKy8vLw0KKyNkZWZp bmUgRUZJX0lTQV9JT19QUk9UT0NPTF9HVUlEIFwNCisgIHsgXA0KKyAgICAweDdlZTJiZDQ0LCAw eDNkYTAsIDB4MTFkNCwgeyAweDlhLCAweDM4LCAweDAsIDB4OTAsIDB4MjcsIDB4M2YsIDB4YzEs IDB4NGQgfSBcDQorICB9DQorDQorLy8vDQorLy8vIEZvcndhcmQgZGVjbGFyYXRpb24gZm9yIHRo ZSBFRklfSVNBX0lPX1BST1RPQ09MLg0KKy8vLw0KK3R5cGVkZWYgc3RydWN0IF9FRklfSVNBX0lP X1BST1RPQ09MIEVGSV9JU0FfSU9fUFJPVE9DT0w7DQorDQorLy8vDQorLy8vIFdpZHRoIG9mIEVG SV9JU0FfSU9fUFJPVE9DT0wgSS9PIFBvcnQgYW5kIE1NSU8gb3BlcmF0aW9ucy4NCisvLy8NCit0 eXBlZGVmIGVudW0gew0KKyAgRWZpSXNhSW9XaWR0aFVpbnQ4ID0gMCwgICAgICAvLy88IDgtYml0 IG9wZXJhdGlvbi4NCisgIEVmaUlzYUlvV2lkdGhVaW50MTYsICAgICAgICAgLy8vPCAxNi1iaXQg b3BlcmF0aW9uLg0KKyAgRWZpSXNhSW9XaWR0aFVpbnQzMiwgICAgICAgICAvLy88IDMyLWJpdCBv cGVyYXRpb24NCisgIEVmaUlzYUlvV2lkdGhSZXNlcnZlZCwNCisgIEVmaUlzYUlvV2lkdGhGaWZv VWludDgsICAgICAgLy8vPCA4LWJpdCBGSUZPIG9wZXJhdGlvbi4NCisgIEVmaUlzYUlvV2lkdGhG aWZvVWludDE2LCAgICAgLy8vPCAxNi1iaXQgRklGTyBvcGVyYXRpb24uDQorICBFZmlJc2FJb1dp ZHRoRmlmb1VpbnQzMiwgICAgIC8vLzwgMzItYml0IEZJRk8gb3BlcmF0aW9uLg0KKyAgRWZpSXNh SW9XaWR0aEZpZm9SZXNlcnZlZCwNCisgIEVmaUlzYUlvV2lkdGhGaWxsVWludDgsICAgICAgLy8v PCA4LWJpdCBGaWxsIG9wZXJhdGlvbi4NCisgIEVmaUlzYUlvV2lkdGhGaWxsVWludDE2LCAgICAg Ly8vPCAxNi1iaXQgRmlsbCBvcGVyYXRpb24uDQorICBFZmlJc2FJb1dpZHRoRmlsbFVpbnQzMiwg ICAgIC8vLzwgMzItYml0IEZpbGwgb3BlcmF0aW9uLg0KKyAgRWZpSXNhSW9XaWR0aEZpbGxSZXNl cnZlZCwNCisgIEVmaUlzYUlvV2lkdGhNYXhpbXVtDQorfSBFRklfSVNBX0lPX1BST1RPQ09MX1dJ RFRIOw0KKw0KKy8vLw0KKy8vLyBBdHRyaWJ1dGVzIGZvciB0aGUgRUZJX0lTQV9JT19QUk9UT0NP TCBjb21tb24gRE1BIGJ1ZmZlciBhbGxvY2F0aW9ucy4NCisvLy8NCisjZGVmaW5lIEVGSV9JU0Ff SU9fQVRUUklCVVRFX01FTU9SWV9XUklURV9DT01CSU5FICAweDA4MCAgICAvLy88IE1hcCBhIG1l bW9yeSByYW5nZSBzbyB3cml0ZSBhcmUgY29tYmluZWQuDQorI2RlZmluZSBFRklfSVNBX0lPX0FU VFJJQlVURV9NRU1PUllfQ0FDSEVEICAgICAgICAgMHg4MDAgICAgLy8vPCBNYXAgYSBtZW1vcnkg cmFuZ2Ugc28gYWxsIHJlYWQgYW5kIHdyaXRlIGFjY2Vzc2VzIGFyZSBjYWNoZWQuDQorI2RlZmlu ZSBFRklfSVNBX0lPX0FUVFJJQlVURV9NRU1PUllfRElTQUJMRSAgICAgICAgMHgxMDAwICAgLy8v PCBEaXNhYmxlIGEgbWVtb3J5IHJhbmdlLg0KKw0KKy8vLw0KKy8vLyBDaGFubmVsIGF0dHJpYnV0 ZSBmb3IgRUZJX0lTQV9JT19QUk9UT0NPTCBzbGF2ZSBETUEgcmVxdWVzdHMNCisvLy8NCisjZGVm aW5lIEVGSV9JU0FfSU9fU0xBVkVfRE1BX0FUVFJJQlVURV9TUEVFRF9DT01QQVRJQkxFICAweDAw MSAgIC8vLzwgU2V0IHRoZSBzcGVlZCBvZiB0aGUgRE1BIHRyYW5zZmVyIGluIGNvbXBhdGlibGUg bW9kZS4NCisjZGVmaW5lIEVGSV9JU0FfSU9fU0xBVkVfRE1BX0FUVFJJQlVURV9TUEVFRF9BICAg ICAgICAgICAweDAwMiAgIC8vLzwgTm90IHN1cHBvcnRlZC4NCisjZGVmaW5lIEVGSV9JU0FfSU9f U0xBVkVfRE1BX0FUVFJJQlVURV9TUEVFRF9CICAgICAgICAgICAweDAwNCAgIC8vLzwgTm90IHN1 cHBvcnRlZC4NCisjZGVmaW5lIEVGSV9JU0FfSU9fU0xBVkVfRE1BX0FUVFJJQlVURV9TUEVFRF9D ICAgICAgICAgICAweDAwOCAgIC8vLzwgTm90IHN1cHBvcnRlZC4NCisjZGVmaW5lIEVGSV9JU0Ff SU9fU0xBVkVfRE1BX0FUVFJJQlVURV9XSURUSF84ICAgICAgICAgICAweDAxMCAgIC8vLzwgUmVx dWVzdCA4LWJpdCBETUEgdHJhbnNmZXJzLiAgT25seSBhdmFpbGFibGUgb24gY2hhbm5lbHMgMC4u My4NCisjZGVmaW5lIEVGSV9JU0FfSU9fU0xBVkVfRE1BX0FUVFJJQlVURV9XSURUSF8xNiAgICAg ICAgICAweDAyMCAgIC8vLzwgUmVxdWVzdCAxNi1iaXQgRE1BIHRyYW5zZmVycy4gIE9ubHkgYXZh aWxhYmxlIG9uIGNoYW5uZWxzIDQuLjcuDQorI2RlZmluZSBFRklfSVNBX0lPX1NMQVZFX0RNQV9B VFRSSUJVVEVfU0lOR0xFX01PREUgICAgICAgMHgwNDAgICAvLy88IFJlcXVlc3QgYSBzaW5nbGUg RE1BIHRyYW5zZmVyLg0KKyNkZWZpbmUgRUZJX0lTQV9JT19TTEFWRV9ETUFfQVRUUklCVVRFX0RF TUFORF9NT0RFICAgICAgIDB4MDgwICAgLy8vPCBSZXF1ZXN0IG11bHRpcGxlIERNQSB0cmFuc2Zl cnMgdW50aWwgVEMgKFRlcm1pbmFsIENvdW50KSBvciBFT1AgKEVuZCBvZiBQcm9jZXNzKS4NCisj ZGVmaW5lIEVGSV9JU0FfSU9fU0xBVkVfRE1BX0FUVFJJQlVURV9BVVRPX0lOSVRJQUxJWkUgICAw eDEwMCAgIC8vLzwgQXV0b21hdGljYWxseSByZWxvYWQgYmFzZSBhbmQgY291bnQgYXQgdGhlIGVu ZCBvZiB0aGUgRE1BIHRyYW5zZmVyLg0KKw0KKy8vLw0KKy8vLyBUaGUgRE1BIG9wcmVyYXRpb24g dHlwZSBmb3IgRUZJX0lTQV9JT19QUk9UT0NPTCBETUEgcmVxdWVzdHMuDQorLy8vDQordHlwZWRl ZiBlbnVtIHsNCisgIC8vLw0KKyAgLy8vIEEgcmVhZCBvcGVyYXRpb24gZnJvbSBzeXN0ZW0gbWVt b3J5IGJ5IGEgYnVzIG1hc3Rlci4NCisgIC8vLw0KKyAgRWZpSXNhSW9PcGVyYXRpb25CdXNNYXN0 ZXJSZWFkLA0KKyAgLy8vDQorICAvLy8gQSB3cml0ZSBvcGVyYXRpb24gdG8gc3lzdGVtIG1lbW9y eSBieSBhIGJ1cyBtYXN0ZXIuDQorICAvLy8NCisgIEVmaUlzYUlvT3BlcmF0aW9uQnVzTWFzdGVy V3JpdGUsDQorICAvLy8NCisgIC8vLyBQcm92aWRlcyBib3RoIHJlYWQgYW5kIHdyaXRlIGFjY2Vz cyB0byBzeXN0ZW0gbWVtb3J5IGJ5IGJvdGggdGhlIHByb2Nlc3Nvcg0KKyAgLy8vIGFuZCBhIGJ1 cyBtYXN0ZXIuIFRoZSBidWZmZXIgaXMgY29oZXJlbnQgZnJvbSBib3RoIHRoZSBwcm9jZXNzb3In cyBhbmQgdGhlDQorICAvLy8gYnVzIG1hc3RlcidzIHBvaW50IG9mIHZpZXcuDQorICAvLy8NCisg IEVmaUlzYUlvT3BlcmF0aW9uQnVzTWFzdGVyQ29tbW9uQnVmZmVyLA0KKyAgLy8vDQorICAvLy8g QSByZWFkIG9wZXJhdGlvbiBmcm9tIHN5c3RlbSBtZW1vcnkgYnkgYSBzbGF2ZSBkZXZpY2UuDQor ICAvLy8NCisgIEVmaUlzYUlvT3BlcmF0aW9uU2xhdmVSZWFkLA0KKyAgLy8vDQorICAvLy8gQSB3 cml0ZSBvcGVyYXRpb24gdG8gc3lzdGVtIG1lbW9yeSBieSBhIHNsYXZlIG1hc3Rlci4NCisgIC8v Lw0KKyAgRWZpSXNhSW9PcGVyYXRpb25TbGF2ZVdyaXRlLA0KKyAgRWZpSXNhSW9PcGVyYXRpb25N YXhpbXVtDQorfSBFRklfSVNBX0lPX1BST1RPQ09MX09QRVJBVElPTjsNCisNCisvKioNCisgIFBl cmZvcm1zIElTQSBJL08gYW5kIE1NSU8gUmVhZC9Xcml0ZSBDeWNsZXMNCisNCisgIEBwYXJhbVtp bl0gICAgICBUaGlzICAgICBBIHBvaW50ZXIgdG8gdGhlIEVGSV9JU0FfSU9fUFJPVE9DT0wgaW5z dGFuY2UuDQorICBAcGFyYW1baW5dICAgICAgV2lkdGggICAgU3BlY2lmaWVzIHRoZSB3aWR0aCBv ZiB0aGUgSS9PIG9yIE1NSU8gb3BlcmF0aW9uLg0KKyAgQHBhcmFtW2luXSAgICAgIE9mZnNldCAg IFRoZSBvZmZzZXQgaW50byB0aGUgSVNBIEkvTyBvciBNTUlPIHNwYWNlIHRvIHN0YXJ0IHRoZQ0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbi4NCisgIEBwYXJhbVtpbl0gICAg ICBDb3VudCAgICBUaGUgbnVtYmVyIG9mIEkvTyBvciBNTUlPIG9wZXJhdGlvbnMgdG8gcGVyZm9y bS4NCisgIEBwYXJhbVtpbiwgb3V0XSBCdWZmZXIgICBGb3IgcmVhZCBvcGVyYXRpb25zLCB0aGUg ZGVzdGluYXRpb24gYnVmZmVyIHRvIHN0b3JlDQorICAgICAgICAgICAgICAgICAgICAgICAgICAg dGhlIHJlc3VsdHMuIEZvciB3cml0ZSBvcGVyYXRpb25zLCB0aGUgc291cmNlIGJ1ZmZlciB0bw0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlIGRhdGEgZnJvbS4NCisNCisgIEByZXR2 YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICAgVGhlIGRhdGEgd2FzIHN1Y2Nlc3NmdWxseSByZWFk IGZyb20gb3Igd3JpdHRlbiB0byB0aGUgZGV2aWNlLg0KKyAgQHJldHZhbCBFRklfVU5TVVBQT1JU RUQgICAgICAgICBUaGUgT2Zmc2V0IGlzIG5vdCB2YWxpZCBmb3IgdGhpcyBkZXZpY2UuDQorICBA cmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgIFdpZHRoIG9yIENvdW50LCBvciBib3RoLCB3 ZXJlIGludmFsaWQuDQorICBAcmV0dmFsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICAgIFRoZSByZXF1 ZXN0IGNvdWxkIG5vdCBiZSBjb21wbGV0ZWQgZHVlIHRvIGEgbGFjayBvZiByZXNvdXJjZXMuDQor DQorKiovDQordHlwZWRlZg0KK0VGSV9TVEFUVVMNCisoRUZJQVBJICpFRklfSVNBX0lPX1BST1RP Q09MX0lPX01FTSkoDQorICBJTiAgICAgRUZJX0lTQV9JT19QUk9UT0NPTCAgICAgICAgKlRoaXMs DQorICBJTiAgICAgRUZJX0lTQV9JT19QUk9UT0NPTF9XSURUSCAgV2lkdGgsDQorICBJTiAgICAg VUlOVDMyICAgICAgICAgICAgICAgICAgICAgT2Zmc2V0LA0KKyAgSU4gICAgIFVJTlROICAgICAg ICAgICAgICAgICAgICAgIENvdW50LA0KKyAgSU4gT1VUIFZPSUQgICAgICAgICAgICAgICAgICAg ICAgICpCdWZmZXINCisgICk7DQorDQorLy8vDQorLy8vIFN0cnVjdHVyZSBvZiBmdW5jdGlvbnMg Zm9yIGFjY2Vzc2luZyBJU0EgSS9PIGFuZCBNTUlPIHNwYWNlLg0KKy8vLw0KK3R5cGVkZWYgc3Ry dWN0IHsNCisgIC8vLw0KKyAgLy8vIFJlYWQgZnJvbSBJU0EgSS9PIG9yIE1NSU8gc3BhY2UuDQor ICAvLy8NCisgIEVGSV9JU0FfSU9fUFJPVE9DT0xfSU9fTUVNICBSZWFkOw0KKyAgLy8vDQorICAv Ly8gV3JpdGUgdG8gSVNBIEkvTyBvciBNTUlPIHNwYWNlLg0KKyAgLy8vDQorICBFRklfSVNBX0lP X1BST1RPQ09MX0lPX01FTSAgV3JpdGU7DQorfSBFRklfSVNBX0lPX1BST1RPQ09MX0FDQ0VTUzsN CisNCisvKioNCisgIENvcGllcyBkYXRhIGZyb20gb25lIHJlZ2lvbiBvZiBJU0EgTU1JTyBzcGFj ZSB0byBhbm90aGVyIHJlZ2lvbiBvZiBJU0ENCisgIE1NSU8gc3BhY2UuDQorDQorICBAcGFyYW1b aW5dIFRoaXMgICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIEVGSV9JU0FfSU9fUFJPVE9DT0wgaW5z dGFuY2UuDQorICBAcGFyYW1baW5dIFdpZHRoICAgICAgICBTcGVjaWZpZXMgdGhlIHdpZHRoIG9m IHRoZSBNTUlPIGNvcHkgb3BlcmF0aW9uLg0KKyAgQHBhcmFtW2luXSBEZXN0T2Zmc2V0ICAgVGhl IG9mZnNldCBvZiB0aGUgZGVzdGluYXRpb24gaW4gSVNBIE1NSU8gc3BhY2UuDQorICBAcGFyYW1b aW5dIFNyY09mZnNldCAgICBUaGUgb2Zmc2V0IG9mIHRoZSBzb3VyY2UgaW4gSVNBIE1NSU8gc3Bh Y2UuDQorICBAcGFyYW1baW5dIENvdW50ICAgICAgICBUaGUgbnVtYmVyIHRyYW5mZXJzIHRvIHBl cmZvcm0gZm9yIHRoaXMgY29weSBvcGVyYXRpb24uDQorDQorICBAcmV0dmFsIEVGSV9TVUNDRVNT ICAgICAgICAgICAgIFRoZSBkYXRhIHdhcyBjb3BpZWQgc3VjZXNzZnVsbHkuDQorICBAcmV0dmFs IEVGSV9VTlNVUFBPUlRFRCAgICAgICAgIFRoZSBEZXN0T2Zmc2V0IG9yIFNyY09mZnNldCBpcyBu b3QgdmFsaWQgZm9yIHRoaXMgZGV2aWNlLg0KKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVU RVIgICBXaWR0aCBvciBDb3VudCwgb3IgYm90aCwgd2VyZSBpbnZhbGlkLg0KKyAgQHJldHZhbCBF RklfT1VUX09GX1JFU09VUkNFUyAgICBUaGUgcmVxdWVzdCBjb3VsZCBub3QgYmUgY29tcGxldGVk IGR1ZSB0byBhIGxhY2sgb2YgcmVzb3VyY2VzLg0KKw0KKyoqLw0KK3R5cGVkZWYNCitFRklfU1RB VFVTDQorKEVGSUFQSSAqRUZJX0lTQV9JT19QUk9UT0NPTF9DT1BZX01FTSkoDQorICBJTiBFRklf SVNBX0lPX1BST1RPQ09MICAgICAgICAgKlRoaXMsDQorICBJTiBFRklfSVNBX0lPX1BST1RPQ09M X1dJRFRIICAgV2lkdGgsDQorICBJTiBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgRGVzdE9m ZnNldCwNCisgIElOIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICBTcmNPZmZzZXQsDQorICBJ TiBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgQ291bnQNCisgICk7DQorDQorLyoqDQorICBN YXBzIGEgbWVtb3J5IHJlZ2lvbiBmb3IgRE1BLg0KKw0KKyAgVGhpcyBmdW5jdGlvbiByZXR1cm5z IHRoZSBkZXZpY2Utc3BlY2lmaWMgYWRkcmVzc2VzIHJlcXVpcmVkIHRvIGFjY2VzcyBzeXN0ZW0g bWVtb3J5Lg0KKyAgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIG1hcCBzeXN0ZW0gbWVtb3J5IGZv ciBJU0EgRE1BIG9wZXJhdGlvbnMuICBBbGwgSVNBIERNQQ0KKyAgb3BlcmF0aW9ucyBtdXN0IGJl IHBlcmZvcm1lZCB0aHJvdWdoIHRoZWlyIG1hcHBlZCBhZGRyZXNzZXMsIGFuZCBzdWNoIG1hcHBp bmdzIG11c3QNCisgIGJlIGZyZWVkIHdpdGggRUZJX0lTQV9JT19QUk9UT0NPTC5Vbm1hcCgpIGFm dGVyIHRoZSBETUEgb3BlcmF0aW9uIGlzIGNvbXBsZXRlZC4NCisNCisgIElmIHRoZSBETUEgb3Bl cmF0aW9uIGlzIGEgc2luZ2xlIHJlYWQgb3Igd3JpdGUgZGF0YSB0cmFuc2ZlciB0aHJvdWdoIGFu IElTQSBidXMNCisgIG1hc3RlciwgdGhlbiBFZmlJc2FJb09wZXJhdGlvbkJ1c01hc3RlclJlYWQg b3IgRWZpSXNhSW9PcGVyYXRpb25CdXNNYXN0ZXJXcml0ZQ0KKyAgaXMgdXNlZCBhbmQgdGhlIHJh bmdlIGlzIHVubWFwcGVkIHRvIGNvbXBsZXRlIHRoZSBvcGVyYXRpb24uIElmIHRoZSBETUEgb3Bl cmF0aW9uDQorICBpcyBhIHNpbmdsZSByZWFkIG9yIHdyaXRlIGRhdGEgdHJhbnNmZXIgdGhyb3Vn aCBhbiBJU0Egc2xhdmUgY29udHJvbGxlciwgdGhlbg0KKyAgRWZpSXNhSW9PcGVyYXRpb25TbGF2 ZVJlYWQgb3IgRWZpSXNhSW9PcGVyYXRpb25TbGF2ZVdyaXRlIGlzIHVzZWQgYW5kIHRoZSByYW5n ZQ0KKyAgaXMgdW5tYXBwZWQgdG8gY29tcGxldGUgdGhlIG9wZXJhdGlvbi4NCisNCisgIElmIHBl cmZvcm1pbmcgYSBETUEgcmVhZCBvcGVyYXRpb24sIGFsbCB0aGUgZGF0YSBtdXN0IGJlIHByZXNl bnQgaW4gc3lzdGVtIG1lbW9yeSBiZWZvcmUgdGhlIE1hcCgpIGlzIHBlcmZvcm1lZC4gIFNpbWls YXJseSwNCisgIGlmIHBlcmZvcm1pbmcgYSBETUEgd3JpdGUgb3BlcmF0aW9uLCB0aGUgZGF0YSBt dXN0IG5vdCBiZSBhY2Nlc3NlZCBpbiBzeXN0ZW0NCisgIG1lbW9yeSB1bnRpbCBFRklfSVNBX0lP X1BST1RPQ09MLlVubWFwKCkgaXMgcGVyZm9ybWVkLiAgQnVzIG1hc3RlciBvcGVyYXRpb25zIHRo YXQNCisgIHJlcXVpcmUgYm90aCByZWFkIGFuZCB3cml0ZSBhY2Nlc3Mgb3IgcmVxdWlyZSBtdWx0 aXBsZSBob3N0IGRldmljZSBpbnRlcmFjdGlvbnMNCisgIHdpdGhpbiB0aGUgc2FtZSBtYXBwZWQg cmVnaW9uIG11c3QgdXNlIEVmaUlzYUlvT3BlcmF0aW9uQnVzTWFzdGVyQ29tbW9uQnVmZmVyLg0K KyAgSG93ZXZlciwgb25seSBtZW1vcnkgYWxsb2NhdGVkIHZpYSB0aGUgRUZJX0lTQV9JT19QUk9U T0NPTC5BbGxvY2F0ZUJ1ZmZlcigpIGludGVyZmFjZQ0KKyAgaXMgZ3VhcmFudGVlZCB0byBiZSBh YmxlIHRvIGJlIG1hcHBlZCBmb3IgdGhpcyBvcGVyYXRpb24gdHlwZS4gIEluIGFsbCBtYXBwaW5n DQorICByZXF1ZXN0cyB0aGUgTnVtYmVyT2ZCeXRlcyByZXR1cm5lZCBtYXkgYmUgbGVzcyB0aGFu IG9yaWdpbmFsbHkgcmVxdWVzdGVkLiAgSXQgaXMNCisgIHRoZSBjYWxsZXIncyByZXNwb25zaWJp bGl0eSB0byBtYWtlIGFkZGl0aW9uYWwgcmVxdWVzdHMgdG8gY29tcGxldGUgdGhlIGVudGlyZQ0K KyAgdHJhbnNmZXIuDQorDQorICBAcGFyYW1baW5dICAgICAgVGhpcyAgICAgICAgICAgICAgICBB IHBvaW50ZXIgdG8gdGhlIEVGSV9JU0FfSU9fUFJPVE9DT0wgaW5zdGFuY2UuDQorICBAcGFyYW1b aW5dICAgICAgT3BlcmF0aW9uICAgICAgICAgICBJbmRpY2F0ZXMgdGhlIHR5cGUgb2YgRE1BIChz bGF2ZSBvciBidXMgbWFzdGVyKSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGFuZCBpZiB0aGUgRE1BIG9wZXJhdGlvbiBpcyBnb2luZyB0byByZWFkIG9yDQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZSB0byBzeXN0ZW0gbWVtb3J5Lg0K KyAgQHBhcmFtW2luXSAgICAgIENoYW5uZWxOdW1iZXIgICAgICAgVGhlIHNsYXZlIGNoYW5uZWwg bnVtYmVyIHRvIHVzZSBmb3IgdGhpcyBETUENCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG9wZXJhdGlvbi4gIElmIE9wZXJhdGlvbiBhbmQgQ2hhbm5lbEF0dHJpYnV0ZXMN CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dzIHRoYXQgdGhpcyBk ZXZpY2UgcGVyZm9ybXMgYnVzIG1hc3RlcmluZw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgRE1BLCB0aGVuIHRoaXMgZmllbGQgaXMgaWdub3JlZC4gIFRoZSBsZWdhbA0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2UgZm9yIHRoaXMgZmll bGQgaXMgMC4uNy4NCisgIEBwYXJhbVtpbl0gICAgICBDaGFubmVsQXR0cmlidXRlcyAgIEEgYml0 bWFzayBvZiB0aGUgYXR0cmlidXRlcyB1c2VkIHRvIGNvbmZpZ3VyZQ0KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHNsYXZlIERNQSBjaGFubmVsIGZvciB0aGlzIERN QSBvcGVyYXRpb24uDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWUg RUZJX0lTQV9JT19TTEFWRV9ETUFfQVRUUklCVVRFXyogZm9yIHRoZQ0KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbGVnYWwgYml0IGNvbWJpbmF0aW9ucy4NCisgIEBwYXJh bVtpbl0gICAgICBIb3N0QWRkcmVzcyAgICAgICAgIFRoZSBzeXN0ZW0gbWVtb3J5IGFkZHJlc3Mg dG8gbWFwIHRvIHRoZSBkZXZpY2UuDQorICBAcGFyYW1baW4sIG91dF0gTnVtYmVyT2ZCeXRlcyAg ICAgICBPbiBpbnB1dCB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIG1hcC4gIE9uDQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQgdGhlIG51bWJlciBvZiBieXRlcyB0 aGF0IHdlcmUgbWFwcGVkLg0KKyAgQHBhcmFtW291dF0gICAgIERldmljZUFkZHJlc3MgICAgICAg VGhlIHJlc3VsdGluZyBtYXAgYWRkcmVzcyBmb3IgdGhlIGJ1cyBtYXN0ZXINCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZSB0byB1c2UgdG8gYWNjZXNzIHRoZSBo b3N0cyBIb3N0QWRkcmVzcy4NCisgIEBwYXJhbVtvdXRdICAgICBNYXBwaW5nICAgICAgICAgICAg IEEgcmV0dXJuZWQgdmFsdWUgdGhhdCBtdXN0IGJlIHBhc3NlZCB0byBpbnRvDQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfSVNBX0lPX1BST1RPQ09MLlVubWFwKCkg dG8gZnJlZSBhbGwgdGhlIHRoZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcmVzb3VyY2VzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIG1hcCByZXF1ZXN0Lg0KKw0KKyAgQHJl dHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgICBUaGUgcmFuZ2Ugd2FzIG1hcHBlZCBmb3IgdGhl IHJldHVybmVkIE51bWJlck9mQnl0ZXMuDQorICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRF UiAgIFRoZSBPcGVyYXRpb24gaXMgdW5kZWZpbmVkLg0KKyAgQHJldHZhbCBFRklfSU5WQUxJRF9Q QVJBTUVURVIgICBUaGUgSG9zdEFkZHJlc3MgaXMgdW5kZWZpbmVkLg0KKyAgQHJldHZhbCBFRklf VU5TVVBQT1JURUQgICAgICAgICBUaGUgSG9zdEFkZHJlc3MgY2FuIG5vdCBiZSBtYXBwZWQgYXMg YSBjb21tb24gYnVmZmVyLg0KKyAgQHJldHZhbCBFRklfREVWSUNFX0VSUk9SICAgICAgICBUaGUg c3lzdGVtIGhhcmR3YXJlIGNvdWxkIG5vdCBtYXAgdGhlIHJlcXVlc3RlZCBhZGRyZXNzLg0KKyAg QHJldHZhbCBFRklfT1VUX09GX1JFU09VUkNFUyAgICBUaGUgbWVtb3J5IHBhZ2VzIGNvdWxkIG5v dCBiZSBhbGxvY2F0ZWQuDQorDQorKiovDQordHlwZWRlZg0KK0VGSV9TVEFUVVMNCisoRUZJQVBJ ICpFRklfSVNBX0lPX1BST1RPQ09MX01BUCkoDQorICBJTiAgICAgRUZJX0lTQV9JT19QUk9UT0NP TCAgICAgICAgICAgICpUaGlzLA0KKyAgSU4gICAgIEVGSV9JU0FfSU9fUFJPVE9DT0xfT1BFUkFU SU9OICBPcGVyYXRpb24sDQorICBJTiAgICAgVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAg IENoYW5uZWxOdW1iZXIgICAgICBPUFRJT05BTCwNCisgIElOICAgICBVSU5UMzIgICAgICAgICAg ICAgICAgICAgICAgICAgQ2hhbm5lbEF0dHJpYnV0ZXMsDQorICBJTiAgICAgVk9JRCAgICAgICAg ICAgICAgICAgICAgICAgICAgICpIb3N0QWRkcmVzcywNCisgIElOIE9VVCBVSU5UTiAgICAgICAg ICAgICAgICAgICAgICAgICAgKk51bWJlck9mQnl0ZXMsDQorICBPVVQgICAgRUZJX1BIWVNJQ0FM X0FERFJFU1MgICAgICAgICAgICpEZXZpY2VBZGRyZXNzLA0KKyAgT1VUICAgIFZPSUQgICAgICAg ICAgICAgICAgICAgICAgICAgICAqKk1hcHBpbmcNCisgICk7DQorDQorLyoqDQorICBVbm1hcHMg YSBtZW1vcnkgcmVnaW9uIHRoYXQgd2FzIHByZXZpb3VzbHkgbWFwcGVkIHdpdGggRUZJX0lTQV9J T19QUk9UT0NPTC5NYXAoKS4NCisNCisgIFRoZSBFRklfSVNBX0lPX1BST1RPQ09MLk1hcCgpIG9w ZXJhdGlvbiBpcyBjb21wbGV0ZWQgYW5kIGFueSBjb3JyZXNwb25kaW5nDQorICByZXNvdXJjZXMg YXJlIHJlbGVhc2VkLiAgSWYgdGhlIG9wZXJhdGlvbiB3YXMgRWZpSXNhSW9PcGVyYXRpb25TbGF2 ZVdyaXRlDQorICBvciBFZmlJc2FJb09wZXJhdGlvbkJ1c01hc3RlcldyaXRlLCB0aGUgZGF0YSBp cyBjb21taXR0ZWQgdG8gc3lzdGVtIG1lbW9yeS4NCisgIEFueSByZXNvdXJjZXMgdXNlZCBmb3Ig dGhlIG1hcHBpbmcgYXJlIGZyZWVkLg0KKw0KKyAgQHBhcmFtW2luXSBUaGlzICAgICAgICAgICBB IHBvaW50ZXIgdG8gdGhlIEVGSV9JU0FfSU9fUFJPVE9DT0wgaW5zdGFuY2UuDQorICBAcGFyYW1b aW5dIE1hcHBpbmcgICAgICAgIFRoZSBtYXBwaW5nIHZhbHVlIHJldHVybmVkIGZyb20gRUZJX0lT QV9JT19QUk9UT0NPTC5NYXAoKS4NCisNCisgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhl IG1lbW9yeSByZWdpb24gd2FzIHVubWFwcGVkLg0KKyAgQHJldHZhbCBFRklfREVWSUNFX0VSUk9S ICBUaGUgZGF0YSB3YXMgbm90IGNvbW1pdHRlZCB0byB0aGUgdGFyZ2V0IHN5c3RlbSBtZW1vcnku DQorKiovDQordHlwZWRlZg0KK0VGSV9TVEFUVVMNCisoRUZJQVBJICpFRklfSVNBX0lPX1BST1RP Q09MX1VOTUFQKSgNCisgIElOICBFRklfSVNBX0lPX1BST1RPQ09MICAqVGhpcywNCisgIElOICBW T0lEICAgICAgICAgICAgICAgICAqTWFwcGluZw0KKyAgKTsNCisNCisvKioNCisgIEFsbG9jYXRl cyBwYWdlcyB0aGF0IGFyZSBzdWl0YWJsZSBmb3IgYW4gRWZpSXNhSW9PcGVyYXRpb25CdXNNYXN0 ZXJDb21tb25CdWZmZXINCisgIG1hcHBpbmcuDQorDQorICBAcGFyYW1baW5dICBUaGlzICAgICAg ICAgIEEgcG9pbnRlciB0byB0aGUgRUZJX0lTQV9JT19QUk9UT0NPTCBpbnN0YW5jZS4NCisgIEBw YXJhbVtpbl0gIFR5cGUgICAgICAgICAgVGhlIHR5cGUgYWxsb2NhdGlvbiB0byBwZXJmb3JtLg0K KyAgQHBhcmFtW2luXSAgTWVtb3J5VHlwZSAgICBUaGUgdHlwZSBvZiBtZW1vcnkgdG8gYWxsb2Nh dGUuDQorICBAcGFyYW1baW5dICBQYWdlcyAgICAgICAgIFRoZSBudW1iZXIgb2YgcGFnZXMgdG8g YWxsb2NhdGUuDQorICBAcGFyYW1bb3V0XSBIb3N0QWRkcmVzcyAgIEEgcG9pbnRlciB0byBzdG9y ZSB0aGUgYmFzZSBhZGRyZXNzIG9mIHRoZSBhbGxvY2F0ZWQgcmFuZ2UuDQorICBAcGFyYW1baW5d ICBBdHRyaWJ1dGVzICAgIFRoZSByZXF1ZXN0ZWQgYml0IG1hc2sgb2YgYXR0cmlidXRlcyBmb3Ig dGhlIGFsbG9jYXRlZCByYW5nZS4NCisNCisgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAg ICAgVGhlIHJlcXVlc3RlZCBtZW1vcnkgcGFnZXMgd2VyZSBhbGxvY2F0ZWQuDQorICBAcmV0dmFs IEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgIFR5cGUgaXMgaW52YWxpZC4NCisgIEByZXR2YWwgRUZJ X0lOVkFMSURfUEFSQU1FVEVSICAgTWVtb3J5VHlwZSBpcyBpbnZhbGlkLg0KKyAgQHJldHZhbCBF RklfSU5WQUxJRF9QQVJBTUVURVIgICBIb3N0QWRkcmVzcyBpcyBOVUxMLg0KKyAgQHJldHZhbCBF RklfVU5TVVBQT1JURUQgICAgICAgICBBdHRyaWJ1dGVzIGlzIHVuc3VwcG9ydGVkLg0KKyAgQHJl dHZhbCBFRklfVU5TVVBQT1JURUQgICAgICAgICBUaGUgbWVtb3J5IHJhbmdlIHNwZWNpZmllZCBi eSBIb3N0QWRkcmVzcywgUGFnZXMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGFuZCBUeXBlIGlzIG5vdCBhdmFpbGFibGUgZm9yIGNvbW1vbiBidWZmZXIgdXNlLg0KKyAgQHJl dHZhbCBFRklfT1VUX09GX1JFU09VUkNFUyAgICBUaGUgbWVtb3J5IHBhZ2VzIGNvdWxkIG5vdCBi ZSBhbGxvY2F0ZWQuDQorDQorKiovDQordHlwZWRlZg0KK0VGSV9TVEFUVVMNCisoRUZJQVBJICpF RklfSVNBX0lPX1BST1RPQ09MX0FMTE9DQVRFX0JVRkZFUikoDQorICBJTiAgRUZJX0lTQV9JT19Q Uk9UT0NPTCAgKlRoaXMsDQorICBJTiAgRUZJX0FMTE9DQVRFX1RZUEUgICAgVHlwZSwNCisgIElO ICBFRklfTUVNT1JZX1RZUEUgICAgICBNZW1vcnlUeXBlLA0KKyAgSU4gIFVJTlROICAgICAgICAg ICAgICAgIFBhZ2VzLA0KKyAgT1VUIFZPSUQgICAgICAgICAgICAgICAgICoqSG9zdEFkZHJlc3Ms DQorICBJTiAgVUlOVDY0ICAgICAgICAgICAgICAgQXR0cmlidXRlcw0KKyAgKTsNCisNCisvKioN CisgIEZyZWVzIGEgY29tbW9uIGJ1ZmZlciB0aGF0IHdhcyBhbGxvY2F0ZWQgd2l0aCBFRklfSVNB X0lPX1BST1RPQ09MLkFsbG9jYXRlQnVmZmVyKCkuDQorDQorICBAcGFyYW1baW5dIFRoaXMgICAg ICAgICAgQSBwb2ludGVyIHRvIHRoZSBFRklfSVNBX0lPX1BST1RPQ09MIGluc3RhbmNlLg0KKyAg QHBhcmFtW2luXSBQYWdlcyAgICAgICAgIFRoZSBudW1iZXIgb2YgcGFnZXMgdG8gZnJlZSBmcm9t IHRoZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBjb21tb24gYnVmZmVyLg0KKyAgQHBhcmFtW2luXSBI b3N0QWRkcmVzcyAgIFRoZSBiYXNlIGFkZHJlc3Mgb2YgdGhlIHByZXZpb3VzbHkgYWxsb2NhdGVk IGNvbW1vbiBidWZmZXIuDQorDQorDQorICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAg IFRoZSByZXF1ZXN0ZWQgbWVtb3J5IHBhZ2VzIHdlcmUgZnJlZWQuDQorICBAcmV0dmFsIEVGSV9J TlZBTElEX1BBUkFNRVRFUiAgIFRoZSBtZW1vcnkgd2FzIG5vdCBhbGxvY2F0ZWQgd2l0aCBFRklf SVNBX0lPLkFsbG9jYXRlQnVmZXIoKS4NCisNCisqKi8NCit0eXBlZGVmDQorRUZJX1NUQVRVUw0K KyhFRklBUEkgKkVGSV9JU0FfSU9fUFJPVE9DT0xfRlJFRV9CVUZGRVIpKA0KKyAgSU4gIEVGSV9J U0FfSU9fUFJPVE9DT0wgICpUaGlzLA0KKyAgSU4gIFVJTlROICAgICAgICAgICAgICAgIFBhZ2Vz LA0KKyAgSU4gIFZPSUQgICAgICAgICAgICAgICAgICpIb3N0QWRkcmVzcw0KKyAgKTsNCisNCisv KioNCisgIEZsdXNoZXMgYSBETUEgYnVmZmVyLCB3aGljaCBmb3JjZXMgYWxsIERNQSBwb3N0ZWQg d3JpdGUgdHJhbnNhY3Rpb25zIHRvIGNvbXBsZXRlLg0KKw0KKyAgQHBhcmFtW2luXSBUaGlzICAg QSBwb2ludGVyIHRvIHRoZSBFRklfSVNBX0lPX1BST1RPQ09MIGluc3RhbmNlLg0KKw0KKyAgQHJl dHZhbCAgRUZJX1NVQ0NFU1MgICAgICAgIFRoZSBETUEgYnVmZmVycyB3ZXJlIGZsdXNoZWQuDQor ICBAcmV0dmFsICBFRklfREVWSUNFX0VSUk9SICAgVGhlIGJ1ZmZlcnMgd2VyZSBub3QgZmx1c2hl ZCBkdWUgdG8gYSBoYXJkd2FyZSBlcnJvci4NCisNCisqKi8NCit0eXBlZGVmDQorRUZJX1NUQVRV Uw0KKyhFRklBUEkgKkVGSV9JU0FfSU9fUFJPVE9DT0xfRkxVU0gpKA0KKyAgSU4gRUZJX0lTQV9J T19QUk9UT0NPTCAgKlRoaXMNCisgICk7DQorDQorLy8vDQorLy8vIFRoZSBFRklfSVNBX0lPX1BS T1RPQ09MIHByb3ZpZGVzIHRoZSBiYXNpYyBNZW1vcnksIEkvTywgYW5kIERNQSBpbnRlcmZhY2Vz DQorLy8vIHVzZWQgdG8gYWJzdHJhY3QgYWNjZXNzZXMgdG8gSVNBIGNvbnRyb2xsZXJzLiAgVGhl cmUgaXMgb25lIEVGSV9JU0FfSU9fUFJPVE9DT0wNCisvLy8gaW5zdGFuY2UgZm9yIGVhY2ggSVNB IGNvbnRyb2xsZXIgb24gYSBJU0EgYnVzLiBBIGRldmljZSBkcml2ZXIgdGhhdCB3aXNoZXMNCisv Ly8gdG8gbWFuYWdlIGFuIElTQSBjb250cm9sbGVyIGluIGEgc3lzdGVtIHdpbGwgaGF2ZSB0byBy ZXRyaWV2ZSB0aGUNCisvLy8gSVNBX1BDSV9JT19QUk9UT0NPTCBpbnN0YW5jZSBhc3NvY2lhdGVk IHdpdGggdGhlIElTQSBjb250cm9sbGVyLg0KKy8vLw0KK3N0cnVjdCBfRUZJX0lTQV9JT19QUk9U T0NPTCB7DQorICBFRklfSVNBX0lPX1BST1RPQ09MX0FDQ0VTUyAgICAgICAgICAgTWVtOw0KKyAg RUZJX0lTQV9JT19QUk9UT0NPTF9BQ0NFU1MgICAgICAgICAgIElvOw0KKyAgRUZJX0lTQV9JT19Q Uk9UT0NPTF9DT1BZX01FTSAgICAgICAgIENvcHlNZW07DQorICBFRklfSVNBX0lPX1BST1RPQ09M X01BUCAgICAgICAgICAgICAgTWFwOw0KKyAgRUZJX0lTQV9JT19QUk9UT0NPTF9VTk1BUCAgICAg ICAgICAgIFVubWFwOw0KKyAgRUZJX0lTQV9JT19QUk9UT0NPTF9BTExPQ0FURV9CVUZGRVIgIEFs bG9jYXRlQnVmZmVyOw0KKyAgRUZJX0lTQV9JT19QUk9UT0NPTF9GUkVFX0JVRkZFUiAgICAgIEZy ZWVCdWZmZXI7DQorICBFRklfSVNBX0lPX1BST1RPQ09MX0ZMVVNIICAgICAgICAgICAgRmx1c2g7 DQorICAvLy8NCisgIC8vLyBUaGUgbGlzdCBvZiBJL08gLCBNTUlPLCBETUEsIGFuZCBJbnRlcnJ1 cHQgcmVzb3VyY2VzIGFzc29jaWF0ZWQgd2l0aCB0aGUNCisgIC8vLyBJU0EgY29udHJvbGxlciBh YnN0cmFjdGVkIGJ5IHRoaXMgaW5zdGFuY2Ugb2YgdGhlIEVGSV9JU0FfSU9fUFJPVE9DT0wuDQor ICAvLy8NCisgIEVGSV9JU0FfQUNQSV9SRVNPVVJDRV9MSVNUICAgICAgICAgICAqUmVzb3VyY2VM aXN0Ow0KKyAgLy8vDQorICAvLy8gVGhlIHNpemUsIGluIGJ5dGVzLCBvZiB0aGUgUk9NIGltYWdl Lg0KKyAgLy8vDQorICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9tU2l6 ZTsNCisgIC8vLw0KKyAgLy8vIEEgcG9pbnRlciB0byB0aGUgaW4gbWVtb3J5IGNvcHkgb2YgdGhl IFJPTSBpbWFnZS4gVGhlIElTQSBCdXMgRHJpdmVyIGlzIHJlc3BvbnNpYmxlDQorICAvLy8gZm9y IGFsbG9jYXRpbmcgbWVtb3J5IGZvciB0aGUgUk9NIGltYWdlLCBhbmQgY29weWluZyB0aGUgY29u dGVudHMgb2YgdGhlIFJPTSB0byBtZW1vcnkNCisgIC8vLyBkdXJpbmcgSVNBIEJ1cyBpbml0aWFs aXphdGlvbi4NCisgIC8vLw0KKyAgVk9JRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICpSb21JbWFnZTsNCit9Ow0KKw0KK2V4dGVybiBFRklfR1VJRCBnRWZpSXNhSW9Qcm90b2NvbEd1 aWQ7DQorDQorI2VuZGlmDQpkaWZmIC0tZ2l0IGEvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJv YXJkUGtnL0luY2x1ZGUvUHJvdG9jb2wvTGVnYWN5ODI1OS5oIGIvUGxhdGZvcm0vSW50ZWwvU2lt aWNzT3BlbkJvYXJkUGtnL0luY2x1ZGUvUHJvdG9jb2wvTGVnYWN5ODI1OS5oDQpuZXcgZmlsZSBt b2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMC4uYzM4ZjJmZWJhNw0KLS0tIC9kZXYvbnVsbA0K KysrIGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0luY2x1ZGUvUHJvdG9jb2wv TGVnYWN5ODI1OS5oDQpAQCAtMCwwICsxLDI5MSBAQA0KKy8qKiBAZmlsZQ0KKyAgVGhpcyBwcm90 b2NvbCBhYnN0cmFjdHMgdGhlIDgyNTkgaW50ZXJydXB0IGNvbnRyb2xsZXIuIFRoaXMgaW5jbHVk ZXMNCisgIFBDSSBJUlEgcm91dGluZyBuZWVkZWQgdG8gcHJvZ3JhbSB0aGUgUENJIEludGVycnVw dCBMaW5lIHJlZ2lzdGVyLg0KKw0KKyAgQ29weXJpZ2h0IChjKSAyMDA3IC0gMjAxOCwgSW50ZWwg Q29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KKyAgU1BEWC1MaWNlbnNlLUlk ZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCisNCisgIEBwYXIgUmV2aXNpb24gUmVmZXJl bmNlOg0KKyAgVGhpcyBwcm90b2NvbCBpcyBkZWZpbmVkIGluIEZyYW1ld29yayBmb3IgRUZJIENv bXBhdGliaWxpdHkgU3VwcG9ydCBNb2R1bGUgc3BlYw0KKyAgVmVyc2lvbiAwLjk3Lg0KKw0KKyoq Lw0KKw0KKyNpZm5kZWYgX0VGSV9MRUdBQ1lfODI1OV9IXw0KKyNkZWZpbmUgX0VGSV9MRUdBQ1lf ODI1OV9IXw0KKw0KKw0KKyNkZWZpbmUgRUZJX0xFR0FDWV84MjU5X1BST1RPQ09MX0dVSUQgXA0K KyAgeyBcDQorICAgIDB4MzgzMjFkYmEsIDB4NGZlMCwgMHg0ZTE3LCB7MHg4YSwgMHhlYywgMHg0 MSwgMHgzMCwgMHg1NSwgMHhlYSwgMHhlZCwgMHhjMSB9IFwNCisgIH0NCisNCit0eXBlZGVmIHN0 cnVjdCBfRUZJX0xFR0FDWV84MjU5X1BST1RPQ09MIEVGSV9MRUdBQ1lfODI1OV9QUk9UT0NPTDsN CisNCit0eXBlZGVmIGVudW0gew0KKyAgRWZpODI1OUlycTAsDQorICBFZmk4MjU5SXJxMSwNCisg IEVmaTgyNTlJcnEyLA0KKyAgRWZpODI1OUlycTMsDQorICBFZmk4MjU5SXJxNCwNCisgIEVmaTgy NTlJcnE1LA0KKyAgRWZpODI1OUlycTYsDQorICBFZmk4MjU5SXJxNywNCisgIEVmaTgyNTlJcnE4 LA0KKyAgRWZpODI1OUlycTksDQorICBFZmk4MjU5SXJxMTAsDQorICBFZmk4MjU5SXJxMTEsDQor ICBFZmk4MjU5SXJxMTIsDQorICBFZmk4MjU5SXJxMTMsDQorICBFZmk4MjU5SXJxMTQsDQorICBF Zmk4MjU5SXJxMTUsDQorICBFZmk4MjU5SXJxTWF4DQorfSBFRklfODI1OV9JUlE7DQorDQordHlw ZWRlZiBlbnVtIHsNCisgIEVmaTgyNTlMZWdhY3lNb2RlLA0KKyAgRWZpODI1OVByb3RlY3RlZE1v ZGUsDQorICBFZmk4MjU5TWF4TW9kZQ0KK30gRUZJXzgyNTlfTU9ERTsNCisNCisvKioNCisgIEdl dCB0aGUgODI1OSBpbnRlcnJ1cHQgbWFza3MgZm9yIElycTAgLSBJcnExNS4gQSBkaWZmZXJlbnQg bWFzayBleGlzdHMgZm9yDQorICB0aGUgbGVnYWN5IG1vZGUgbWFzayBhbmQgdGhlIHByb3RlY3Rl ZCBtb2RlIG1hc2suIFRoZSBiYXNlIGFkZHJlc3MgZm9yIHRoZSA4MjU5DQorICBpcyBkaWZmZXJl bnQgZm9yIGxlZ2FjeSBhbmQgcHJvdGVjdGVkIG1vZGUsIHNvIHR3byBtYXNrcyBhcmUgcmVxdWly ZWQuDQorDQorICBAcGFyYW0gIFRoaXMgICAgICAgICAgICAgICAgICBUaGUgcHJvdG9jb2wgaW5z dGFuY2UgcG9pbnRlci4NCisgIEBwYXJhbSAgTWFzdGVyQmFzZSAgICAgICAgICAgIFRoZSBiYXNl IHZlY3RvciBmb3IgdGhlIE1hc3RlciBQSUMgaW4gdGhlIDgyNTkgY29udHJvbGxlci4NCisgIEBw YXJhbSAgU2xhdmVCYXNlICAgICAgICAgICAgIFRoZSBiYXNlIHZlY3RvciBmb3IgdGhlIFNsYXZl IFBJQyBpbiB0aGUgODI1OSBjb250cm9sbGVyLg0KKw0KKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAg ICAgICAgICAgVGhlIG5ldyBiYXNlcyB3ZXJlIHByb2dyYW1tZWQuDQorICBAcmV0dmFsIEVGSV9E RVZJQ0VfRVJST1IgICAgICBBIGRldmljZSBlcnJvciBvY2N1cmVkIHByb2dyYW1taW5nIHRoZSB2 ZWN0b3IgYmFzZXMuDQorDQorKiovDQordHlwZWRlZg0KK0VGSV9TVEFUVVMNCisoRUZJQVBJICpF RklfTEVHQUNZXzgyNTlfU0VUX1ZFQ1RPUl9CQVNFKSgNCisgIElOIEVGSV9MRUdBQ1lfODI1OV9Q Uk9UT0NPTCAgICAgICAgICAgKlRoaXMsDQorICBJTiAgVUlOVDggICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE1hc3RlckJhc2UsDQorICBJTiAgVUlOVDggICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFNsYXZlQmFzZQ0KKyAgKTsNCisNCisvKioNCisgIEdldCB0aGUgODI1OSBpbnRlcnJ1 cHQgbWFza3MgZm9yIElycTAgLSBJcnExNS4gQSBkaWZmZXJlbnQgbWFzayBleGlzdHMgZm9yDQor ICB0aGUgbGVnYWN5IG1vZGUgbWFzayBhbmQgdGhlIHByb3RlY3RlZCBtb2RlIG1hc2suIFRoZSBi YXNlIGFkZHJlc3MgZm9yIHRoZSA4MjU5DQorICBpcyBkaWZmZXJlbnQgZm9yIGxlZ2FjeSBhbmQg cHJvdGVjdGVkIG1vZGUsIHNvIHR3byBtYXNrcyBhcmUgcmVxdWlyZWQuDQorDQorICBAcGFyYW0g IFRoaXMgICAgICAgICAgICAgICAgICBUaGUgcHJvdG9jb2wgaW5zdGFuY2UgcG9pbnRlci4NCisg IEBwYXJhbSAgTGVnYWN5TWFzayAgICAgICAgICAgIEJpdCAwIGlzIElycTAgLSBCaXQgMTUgaXMg SXJxMTUuDQorICBAcGFyYW0gIExlZ2FjeUVkZ2VMZXZlbCAgICAgICBCaXQgMCBpcyBJcnEwIC0g Qml0IDE1IGlzIElycTE1Lg0KKyAgQHBhcmFtICBQcm90ZWN0ZWRNYXNrICAgICAgICAgQml0IDAg aXMgSXJxMCAtIEJpdCAxNSBpcyBJcnExNS4NCisgIEBwYXJhbSAgUHJvdGVjdGVkRWRnZUxldmVs ICAgIEJpdCAwIGlzIElycTAgLSBCaXQgMTUgaXMgSXJxMTUuDQorDQorICBAcmV0dmFsIEVGSV9T VUNDRVNTICAgICAgICAgICA4MjU5IHN0YXR1cyByZXR1cm5lZC4NCisgIEByZXR2YWwgRUZJX0RF VklDRV9FUlJPUiAgICAgIEVycm9yIHJlYWRpbmcgODI1OS4NCisNCisqKi8NCit0eXBlZGVmDQor RUZJX1NUQVRVUw0KKyhFRklBUEkgKkVGSV9MRUdBQ1lfODI1OV9HRVRfTUFTSykoDQorICBJTiBF RklfTEVHQUNZXzgyNTlfUFJPVE9DT0wgICAgICAgICAgICpUaGlzLA0KKyAgT1VUIFVJTlQxNiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAqTGVnYWN5TWFzaywgT1BUSU9OQUwNCisgIE9VVCBV SU5UMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgKkxlZ2FjeUVkZ2VMZXZlbCwgT1BUSU9O QUwNCisgIE9VVCBVSU5UMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlByb3RlY3RlZE1h c2ssIE9QVElPTkFMDQorICBPVVQgVUlOVDE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICpQ cm90ZWN0ZWRFZGdlTGV2ZWwgT1BUSU9OQUwNCisgICk7DQorDQorLyoqDQorICBTZXQgdGhlIDgy NTkgaW50ZXJydXB0IG1hc2tzIGZvciBJcnEwIC0gSXJxMTUuIEEgZGlmZmVyZW50IG1hc2sgZXhp c3RzIGZvcg0KKyAgdGhlIGxlZ2FjeSBtb2RlIG1hc2sgYW5kIHRoZSBwcm90ZWN0ZWQgbW9kZSBt YXNrLiBUaGUgYmFzZSBhZGRyZXNzIGZvciB0aGUgODI1OQ0KKyAgaXMgZGlmZmVyZW50IGZvciBs ZWdhY3kgYW5kIHByb3RlY3RlZCBtb2RlLCBzbyB0d28gbWFza3MgYXJlIHJlcXVpcmVkLg0KKyAg QWxzbyBzZXQgdGhlIGVkZ2UvbGV2ZWwgbWFza3MuDQorDQorICBAcGFyYW0gIFRoaXMgICAgICAg ICAgICAgICAgICBUaGUgcHJvdG9jb2wgaW5zdGFuY2UgcG9pbnRlci4NCisgIEBwYXJhbSAgTGVn YWN5TWFzayAgICAgICAgICAgIEJpdCAwIGlzIElycTAgLSBCaXQgMTUgaXMgSXJxMTUuDQorICBA cGFyYW0gIExlZ2FjeUVkZ2VMZXZlbCAgICAgICBCaXQgMCBpcyBJcnEwIC0gQml0IDE1IGlzIEly cTE1Lg0KKyAgQHBhcmFtICBQcm90ZWN0ZWRNYXNrICAgICAgICAgQml0IDAgaXMgSXJxMCAtIEJp dCAxNSBpcyBJcnExNS4NCisgIEBwYXJhbSAgUHJvdGVjdGVkRWRnZUxldmVsICAgIEJpdCAwIGlz IElycTAgLSBCaXQgMTUgaXMgSXJxMTUuDQorDQorICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAg ICAgICA4MjU5IHN0YXR1cyByZXR1cm5lZC4NCisgIEByZXR2YWwgRUZJX0RFVklDRV9FUlJPUiAg ICAgIEVycm9yIHdyaXRpbmcgODI1OS4NCisNCisqKi8NCit0eXBlZGVmDQorRUZJX1NUQVRVUw0K KyhFRklBUEkgKkVGSV9MRUdBQ1lfODI1OV9TRVRfTUFTSykoDQorICBJTiBFRklfTEVHQUNZXzgy NTlfUFJPVE9DT0wgICAgICAgICAgICpUaGlzLA0KKyAgSU4gIFVJTlQxNiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAqTGVnYWN5TWFzaywgT1BUSU9OQUwNCisgIElOICBVSU5UMTYgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKkxlZ2FjeUVkZ2VMZXZlbCwgT1BUSU9OQUwNCisgIElOICBV SU5UMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlByb3RlY3RlZE1hc2ssIE9QVElPTkFM DQorICBJTiAgVUlOVDE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICpQcm90ZWN0ZWRFZGdl TGV2ZWwgT1BUSU9OQUwNCisgICk7DQorDQorLyoqDQorICBTZXQgdGhlIDgyNTkgbW9kZSBvZiBv cGVyYXRpb24uIFRoZSBiYXNlIGFkZHJlc3MgZm9yIHRoZSA4MjU5IGlzIGRpZmZlcmVudCBmb3IN CisgIGxlZ2FjeSBhbmQgcHJvdGVjdGVkIG1vZGUuIFRoZSBsZWdhY3kgbW9kZSByZXF1aXJlcyB0 aGUgbWFzdGVyIDgyNTkgdG8gaGF2ZSBhDQorICBtYXN0ZXIgYmFzZSBvZiAweDA4IGFuZCB0aGUg c2xhdmUgYmFzZSBvZiAweDcwLiBUaGUgcHJvdGVjdGVkIG1vZGUgYmFzZSBsb2NhdGlvbnMNCisg IGFyZSBub3QgZGVmaW5lZC4gSW50ZXJydXB0cyBtdXN0IGJlIG1hc2tlZCBieSB0aGUgY2FsbGVy IGJlZm9yZSB0aGlzIGZ1bmN0aW9uDQorICBpcyBjYWxsZWQuIFRoZSBpbnRlcnJ1cHQgbWFzayBm cm9tIHRoZSBjdXJyZW50IG1vZGUgaXMgc2F2ZWQuIFRoZSBpbnRlcnJ1cHQNCisgIG1hc2sgZm9y IHRoZSBuZXcgbW9kZSBpcyBNYXNrLCBvciBpZiBNYXNrIGRvZXMgbm90IGV4aXN0IHRoZSBwcmV2 aW91c2x5IHNhdmVkDQorICBtYXNrIGlzIHVzZWQuDQorDQorICBAcGFyYW0gIFRoaXMgICAgICAg ICAgICAgICAgICBUaGUgcHJvdG9jb2wgaW5zdGFuY2UgcG9pbnRlci4NCisgIEBwYXJhbSAgTW9k ZSAgICAgICAgICAgICAgICAgIFRoZSBtb2RlIG9mIG9wZXJhdGlvbi4gaS5lLiB0aGUgcmVhbCBt b2RlIG9yIHByb3RlY3RlZCBtb2RlLg0KKyAgQHBhcmFtICBNYXNrICAgICAgICAgICAgICAgICAg T3B0aW9uYWwgaW50ZXJ1cHQgbWFzayBmb3IgdGhlIG5ldyBtb2RlLg0KKyAgQHBhcmFtICBFZGdl TGV2ZWwgICAgICAgICAgICAgT3B0aW9uYWwgdHJpZ2dlciBtYXNrIGZvciB0aGUgbmV3IG1vZGUu DQorDQorICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICA4MjU5IHByb2dyYW1tZWQuDQor ICBAcmV0dmFsIEVGSV9ERVZJQ0VfRVJST1IgICAgICBFcnJvciB3cml0aW5nIHRvIDgyNTkuDQor DQorKiovDQordHlwZWRlZg0KK0VGSV9TVEFUVVMNCisoRUZJQVBJICpFRklfTEVHQUNZXzgyNTlf U0VUX01PREUpKA0KKyAgSU4gRUZJX0xFR0FDWV84MjU5X1BST1RPQ09MICAgICAgICAgKlRoaXMs DQorICBJTiAgRUZJXzgyNTlfTU9ERSAgICAgICAgICAgICAgICAgICBNb2RlLA0KKyAgSU4gIFVJ TlQxNiAgICAgICAgICAgICAgICAgICAgICAgICAgKk1hc2ssIE9QVElPTkFMDQorICBJTiAgVUlO VDE2ICAgICAgICAgICAgICAgICAgICAgICAgICAqRWRnZUxldmVsIE9QVElPTkFMDQorICApOw0K Kw0KKy8qKg0KKyAgQ29udmVydCBmcm9tIElSUSB0byBwcm9jZXNzb3IgaW50ZXJydXB0IHZlY3Rv ciBudW1iZXIuDQorDQorICBAcGFyYW0gIFRoaXMgICAgICAgICAgICAgICAgICBUaGUgcHJvdG9j b2wgaW5zdGFuY2UgcG9pbnRlci4NCisgIEBwYXJhbSAgSXJxICAgICAgICAgICAgICAgICAgIDgy NTkgSVJRMCAtIElSUTE1Lg0KKyAgQHBhcmFtICBWZWN0b3IgICAgICAgICAgICAgICAgVGhlIHBy b2Nlc3NvciB2ZWN0b3IgbnVtYmVyIHRoYXQgbWF0Y2hlcyBhbiBJcnEuDQorDQorICBAcmV0dmFs IEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgVmVjdG9yIG1hdGNoaW5nIElycSBpcyByZXR1cm5l ZC4NCisgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIFRoZSBJcnEgbm90IHZhbGlkLg0K Kw0KKyoqLw0KK3R5cGVkZWYNCitFRklfU1RBVFVTDQorKEVGSUFQSSAqRUZJX0xFR0FDWV84MjU5 X0dFVF9WRUNUT1IpKA0KKyAgSU4gRUZJX0xFR0FDWV84MjU5X1BST1RPQ09MICAgICAgICAgICAq VGhpcywNCisgIElOICBFRklfODI1OV9JUlEgICAgICAgICAgICAgICAgICAgICAgSXJxLA0KKyAg T1VUIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqVmVjdG9yDQorICApOw0KKw0K Ky8qKg0KKyAgRW5hYmxlIElycSBieSB1bm1hc2tpbmcgaW50ZXJydXB0IGluIDgyNTkNCisNCisg IEBwYXJhbSAgVGhpcyAgICAgICAgICAgICAgICAgIFRoZSBwcm90b2NvbCBpbnN0YW5jZSBwb2lu dGVyLg0KKyAgQHBhcmFtICBJcnEgICAgICAgICAgICAgICAgICAgODI1OSBJUlEwIC0gSVJRMTUu DQorICBAcGFyYW0gIExldmVsVHJpZ2dlcmVkICAgICAgICBUUlVFIGlmIGxldmVsIHRyaWdnZXJl ZC4gRkFMU0UgaWYgZWRnZSB0cmlnZ2VyZWQuDQorDQorICBAcmV0dmFsIEVGSV9TVUNDRVNTICAg ICAgICAgICBUaGUgSXJxIHdhcyBlbmFibGVkIG9uIDgyNTkuDQorICBAcmV0dmFsIEVGSV9JTlZB TElEX1BBUkFNRVRFUiBUaGUgSXJxIGlzIG5vdCB2YWxpZC4NCisNCisqKi8NCit0eXBlZGVmDQor RUZJX1NUQVRVUw0KKyhFRklBUEkgKkVGSV9MRUdBQ1lfODI1OV9FTkFCTEVfSVJRKSgNCisgIElO IEVGSV9MRUdBQ1lfODI1OV9QUk9UT0NPTCAgICAgICAgICAgKlRoaXMsDQorICBJTiAgRUZJXzgy NTlfSVJRICAgICAgICAgICAgICAgICAgICAgIElycSwNCisgIElOICBCT09MRUFOICAgICAgICAg ICAgICAgICAgICAgICAgICAgTGV2ZWxUcmlnZ2VyZWQNCisgICk7DQorDQorLyoqDQorICBEaXNh YmxlIElycSBieSBtYXNraW5nIGludGVycnVwdCBpbiA4MjU5DQorDQorICBAcGFyYW0gIFRoaXMg ICAgICAgICAgICAgICAgICBUaGUgcHJvdG9jb2wgaW5zdGFuY2UgcG9pbnRlci4NCisgIEBwYXJh bSAgSXJxICAgICAgICAgICAgICAgICAgIDgyNTkgSVJRMCAtIElSUTE1Lg0KKw0KKyAgQHJldHZh bCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIElycSB3YXMgZGlzYWJsZWQgb24gODI1OS4NCisg IEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIFRoZSBJcnEgaXMgbm90IHZhbGlkLg0KKw0K KyoqLw0KK3R5cGVkZWYNCitFRklfU1RBVFVTDQorKEVGSUFQSSAqRUZJX0xFR0FDWV84MjU5X0RJ U0FCTEVfSVJRKSgNCisgIElOIEVGSV9MRUdBQ1lfODI1OV9QUk9UT0NPTCAgICAgICAgICAgKlRo aXMsDQorICBJTiAgRUZJXzgyNTlfSVJRICAgICAgICAgICAgICAgICAgICAgIElycQ0KKyAgKTsN CisNCisvKioNCisgIFBjaUhhbmRsZSByZXByZXNlbnRzIGEgUENJIGNvbmZpZyBzcGFjZSBvZiBh IFBDSSBmdW5jdGlvbi4gVmVjdG9yDQorICByZXByZXNlbnRzIEludGVycnVwdCBQaW4gKGZyb20g UENJIGNvbmZpZyBzcGFjZSkgYW5kIGl0IGlzIHRoZSBkYXRhDQorICB0aGF0IGlzIHByb2dyYW1t ZWQgaW50byB0aGUgSW50ZXJydXB0IExpbmUgKGZyb20gdGhlIFBDSSBjb25maWcgc3BhY2UpDQor ICByZWdpc3Rlci4NCisNCisgIEBwYXJhbSAgVGhpcyAgICAgICAgICAgICAgICAgIFRoZSBwcm90 b2NvbCBpbnN0YW5jZSBwb2ludGVyLg0KKyAgQHBhcmFtICBQY2lIYW5kbGUgICAgICAgICAgICAg VGhlIFBDSSBmdW5jdGlvbiB0byByZXR1cm4gdGhlIHZlY3RvciBmb3IuDQorICBAcGFyYW0gIFZl Y3RvciAgICAgICAgICAgICAgICBUaGUgdmVjdG9yIGZvciB0aGUgZnVuY3Rpb24gaXQgbWF0Y2hl cy4NCisNCisgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIEEgdmFsaWQgVmVjdG9yIHdh cyByZXR1cm5lZC4NCisgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIFBjaUhhbmRsZSBu b3QgdmFsaWQuDQorDQorKiovDQordHlwZWRlZg0KK0VGSV9TVEFUVVMNCisoRUZJQVBJICpFRklf TEVHQUNZXzgyNTlfR0VUX0lOVEVSUlVQVF9MSU5FKSgNCisgIElOIEVGSV9MRUdBQ1lfODI1OV9Q Uk9UT0NPTCAgICAgICAgICAgKlRoaXMsDQorICBJTiAgRUZJX0hBTkRMRSAgICAgICAgICAgICAg ICAgICAgICAgIFBjaUhhbmRsZSwNCisgIE9VVCBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKlZlY3Rvcg0KKyAgKTsNCisNCisvKioNCisgIFNlbmQgYW4gRU9JIHRvIDgyNTkNCisN CisgIEBwYXJhbSAgVGhpcyAgICAgICAgICAgICAgICAgIFRoZSBwcm90b2NvbCBpbnN0YW5jZSBw b2ludGVyLg0KKyAgQHBhcmFtICBJcnEgICAgICAgICAgICAgICAgICAgODI1OSBJUlEwIC0gSVJR MTUuDQorDQorICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBFT0kgd2FzIHN1Y2Nlc3Nm dWxseSBzZW50IHRvIDgyNTkuDQorICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBUaGUg SXJxIGlzbm90IHZhbGlkLg0KKw0KKyoqLw0KK3R5cGVkZWYNCitFRklfU1RBVFVTDQorKEVGSUFQ SSAqRUZJX0xFR0FDWV84MjU5X0VORF9PRl9JTlRFUlJVUFQpKA0KKyAgSU4gRUZJX0xFR0FDWV84 MjU5X1BST1RPQ09MICAgICAgICAgICAqVGhpcywNCisgIElOICBFRklfODI1OV9JUlEgICAgICAg ICAgICAgICAgICAgICAgSXJxDQorICApOw0KKw0KKy8qKg0KKyAgQHBhciBQcm90b2NvbCBEZXNj cmlwdGlvbjoNCisgIEFic3RyYWN0cyB0aGUgODI1OSBhbmQgQVBJQyBoYXJkd2FyZSBjb250cm9s IGJldHdlZW4gRUZJIHVzYWdlIGFuZA0KKyAgQ29tcGF0aWJpbGl0eTE2IHVzYWdlLg0KKw0KKyAg QHBhcmFtIFNldFZlY3RvckJhc2UNCisgIFNldHMgdGhlIHZlY3RvciBiYXNlcyBmb3IgbWFzdGVy IGFuZCBzbGF2ZSBQSUNzLg0KKw0KKyAgQHBhcmFtIEdldE1hc2sNCisgIEdldHMgSVJRIGFuZCBl ZGdlL2xldmVsIG1hc2tzIGZvciAxNi1iaXQgcmVhbCBtb2RlIGFuZCAzMi1iaXQgcHJvdGVjdGVk IG1vZGUuDQorDQorICBAcGFyYW0gU2V0TWFzaw0KKyAgU2V0cyB0aGUgSVJRIGFuZCBlZGdlXGxl dmVsIG1hc2tzIGZvciAxNi1iaXQgcmVhbCBtb2RlIGFuZCAzMi1iaXQgcHJvdGVjdGVkIG1vZGUu DQorDQorICBAcGFyYW0gU2V0TW9kZQ0KKyAgU2V0cyBQSUMgbW9kZSB0byAxNi1iaXQgcmVhbCBt b2RlIG9yIDMyLWJpdCBwcm90ZWN0ZWQgbW9kZS4NCisNCisgIEBwYXJhbSBHZXRWZWN0b3INCisg IEdldHMgdGhlIGJhc2UgdmVjdG9yIGFzc2lnbmVkIHRvIGFuIElSUS4NCisNCisgIEBwYXJhbSBF bmFibGVJcnENCisgIEVuYWJsZXMgYW4gSVJRLg0KKw0KKyAgQHBhcmFtIERpc2FibGVJcnENCisg IERpc2FibGVzIGFuIElSUS4NCisNCisgIEBwYXJhbSBHZXRJbnRlcnJ1cHRMaW5lDQorICBHZXRz IGFuIElSUSB0aGF0IGlzIGFzc2lnbmVkIHRvIGEgUENJIGRldmljZS4NCisNCisgIEBwYXJhbSBF bmRPZkludGVycnVwdA0KKyAgSXNzdWVzIHRoZSBlbmQgb2YgaW50ZXJydXB0IGNvbW1hbmQuDQor DQorKiovDQorc3RydWN0IF9FRklfTEVHQUNZXzgyNTlfUFJPVE9DT0wgew0KKyAgRUZJX0xFR0FD WV84MjU5X1NFVF9WRUNUT1JfQkFTRSAgICAgU2V0VmVjdG9yQmFzZTsNCisgIEVGSV9MRUdBQ1lf ODI1OV9HRVRfTUFTSyAgICAgICAgICAgIEdldE1hc2s7DQorICBFRklfTEVHQUNZXzgyNTlfU0VU X01BU0sgICAgICAgICAgICBTZXRNYXNrOw0KKyAgRUZJX0xFR0FDWV84MjU5X1NFVF9NT0RFICAg ICAgICAgICAgU2V0TW9kZTsNCisgIEVGSV9MRUdBQ1lfODI1OV9HRVRfVkVDVE9SICAgICAgICAg IEdldFZlY3RvcjsNCisgIEVGSV9MRUdBQ1lfODI1OV9FTkFCTEVfSVJRICAgICAgICAgIEVuYWJs ZUlycTsNCisgIEVGSV9MRUdBQ1lfODI1OV9ESVNBQkxFX0lSUSAgICAgICAgIERpc2FibGVJcnE7 DQorICBFRklfTEVHQUNZXzgyNTlfR0VUX0lOVEVSUlVQVF9MSU5FICBHZXRJbnRlcnJ1cHRMaW5l Ow0KKyAgRUZJX0xFR0FDWV84MjU5X0VORF9PRl9JTlRFUlJVUFQgICAgRW5kT2ZJbnRlcnJ1cHQ7 DQorfTsNCisNCitleHRlcm4gRUZJX0dVSUQgZ0VmaUxlZ2FjeTgyNTlQcm90b2NvbEd1aWQ7DQor DQorI2VuZGlmDQpkaWZmIC0tZ2l0IGEvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtn L0luY2x1ZGUvUmVnaXN0ZXIvWDU4U21yYW1TYXZlU3RhdGVNYXAuaCBiL1BsYXRmb3JtL0ludGVs L1NpbWljc09wZW5Cb2FyZFBrZy9JbmNsdWRlL1JlZ2lzdGVyL1g1OFNtcmFtU2F2ZVN0YXRlTWFw LmgNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwLi42NDBhYzQ5NDNkDQot LS0gL2Rldi9udWxsDQorKysgYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvSW5j bHVkZS9SZWdpc3Rlci9YNThTbXJhbVNhdmVTdGF0ZU1hcC5oDQpAQCAtMCwwICsxLDE3OCBAQA0K Ky8qKiBAZmlsZQ0KK1NNUkFNIFNhdmUgU3RhdGUgTWFwIERlZmluaXRpb25zLg0KKw0KK1NNUkFN IFNhdmUgU3RhdGUgTWFwIGRlZmluaXRpb25zIGJhc2VkIG9uIGNvbnRlbnRzIG9mIHRoZSANCitJ bnRlbChSKSA2NCBhbmQgSUEtMzIgQXJjaGl0ZWN0dXJlcyBTb2Z0d2FyZSBEZXZlbG9wZXIncyBN YW51YWwNCisgIFZvbHVtZSAzQywgU2VjdGlvbiAzNC40IFNNUkFNDQorICBWb2x1bWUgM0MsIFNl Y3Rpb24gMzQuNSBTTUkgSGFuZGxlciBFeGVjdXRpb24gRW52aXJvbm1lbnQNCisgIFZvbHVtZSAz QywgU2VjdGlvbiAzNC43IE1hbmFnaW5nIFN5bmNocm9ub3VzIGFuZCBBc3luY2hyb25vdXMgU01J cw0KKw0KK2FuZCB0aGUgQU1ENjQgQXJjaGl0ZWN0dXJlIFByb2dyYW1tZXIncyBNYW51YWwNCisg IFZvbHVtZSAyLCBTZWN0aW9uIDEwLjIgU01NIFJlc291cmNlcw0KKw0KK0NvcHlyaWdodCAoYykg MjAxNSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KK0NvcHly aWdodCAoYykgMjAxNSwgUmVkIEhhdCwgSW5jLjxCUj4NCisNCisgIFNQRFgtTGljZW5zZS1JZGVu dGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQorKiovDQorDQorI2lmbmRlZiBfX1g1OF9TTVJB TV9TQVZFX1NUQVRFX01BUF9IX18NCisjZGVmaW5lIF9fWDU4X1NNUkFNX1NBVkVfU1RBVEVfTUFQ X0hfXw0KKw0KKyNwcmFnbWEgcGFjayAoMSkNCisNCisvLy8NCisvLy8gMzItYml0IFNNUkFNIFNh dmUgU3RhdGUgTWFwDQorLy8vDQordHlwZWRlZiBzdHJ1Y3Qgew0KKyAgVUlOVDggICBSZXNlcnZl ZDBbMHgyMDBdOyAvLyA3YzAwaA0KKyAgVUlOVDggICBSZXNlcnZlZDFbMHhmOF07ICAvLyA3ZTAw aA0KKyAgVUlOVDMyICBTTUJBU0U7ICAgICAgICAgICAvLyA3ZWY4aA0KKyAgVUlOVDMyICBTTU1S ZXZJZDsgICAgICAgICAvLyA3ZWZjaA0KKyAgVUlOVDE2ICBJT1Jlc3RhcnQ7ICAgICAgICAvLyA3 ZjAwaA0KKyAgVUlOVDE2ICBBdXRvSEFMVFJlc3RhcnQ7ICAvLyA3ZjAyaA0KKyAgVUlOVDggICBS ZXNlcnZlZDJbMHg5Q107ICAvLyA3ZjA4aA0KKyAgVUlOVDMyICBJT01lbUFkZHI7ICAgICAgICAv LyA3ZmEwaA0KKyAgVUlOVDMyICBJT01pc2M7ICAgICAgICAgICAvLyA3ZmE0aA0KKyAgVUlOVDMy ICBfRVM7ICAgICAgICAgICAgICAvLyA3ZmE4aA0KKyAgVUlOVDMyICBfQ1M7ICAgICAgICAgICAg ICAvLyA3ZmFjaA0KKyAgVUlOVDMyICBfU1M7ICAgICAgICAgICAgICAvLyA3ZmIwaA0KKyAgVUlO VDMyICBfRFM7ICAgICAgICAgICAgICAvLyA3ZmI0aA0KKyAgVUlOVDMyICBfRlM7ICAgICAgICAg ICAgICAvLyA3ZmI4aA0KKyAgVUlOVDMyICBfR1M7ICAgICAgICAgICAgICAvLyA3ZmJjaA0KKyAg VUlOVDMyICBSZXNlcnZlZDM7ICAgICAgICAvLyA3ZmMwaA0KKyAgVUlOVDMyICBfVFI7ICAgICAg ICAgICAgICAvLyA3ZmM0aA0KKyAgVUlOVDMyICBfRFI3OyAgICAgICAgICAgICAvLyA3ZmM4aA0K KyAgVUlOVDMyICBfRFI2OyAgICAgICAgICAgICAvLyA3ZmNjaA0KKyAgVUlOVDMyICBfRUFYOyAg ICAgICAgICAgICAvLyA3ZmQwaA0KKyAgVUlOVDMyICBfRUNYOyAgICAgICAgICAgICAvLyA3ZmQ0 aA0KKyAgVUlOVDMyICBfRURYOyAgICAgICAgICAgICAvLyA3ZmQ4aA0KKyAgVUlOVDMyICBfRUJY OyAgICAgICAgICAgICAvLyA3ZmRjaA0KKyAgVUlOVDMyICBfRVNQOyAgICAgICAgICAgICAvLyA3 ZmUwaA0KKyAgVUlOVDMyICBfRUJQOyAgICAgICAgICAgICAvLyA3ZmU0aA0KKyAgVUlOVDMyICBf RVNJOyAgICAgICAgICAgICAvLyA3ZmU4aA0KKyAgVUlOVDMyICBfRURJOyAgICAgICAgICAgICAv LyA3ZmVjaA0KKyAgVUlOVDMyICBfRUlQOyAgICAgICAgICAgICAvLyA3ZmYwaA0KKyAgVUlOVDMy ICBfRUZMQUdTOyAgICAgICAgICAvLyA3ZmY0aA0KKyAgVUlOVDMyICBfQ1IzOyAgICAgICAgICAg ICAvLyA3ZmY4aA0KKyAgVUlOVDMyICBfQ1IwOyAgICAgICAgICAgICAvLyA3ZmZjaA0KK30gWDU4 X1NNUkFNX1NBVkVfU1RBVEVfTUFQMzI7DQorDQorLy8vDQorLy8vIDY0LWJpdCBTTVJBTSBTYXZl IFN0YXRlIE1hcA0KKy8vLw0KK3R5cGVkZWYgc3RydWN0IHsNCisgIFVJTlQ4ICAgUmVzZXJ2ZWQw WzB4MjAwXTsgIC8vIDdjMDBoDQorDQorICBVSU5UMTYgIF9FUzsgICAgICAgICAgICAgICAvLyA3 ZTAwaA0KKyAgVUlOVDE2ICBfRVNBY2Nlc3NSaWdodHM7ICAgLy8gN2UwMmgNCisgIFVJTlQzMiAg X0VTTGltaXQ7ICAgICAgICAgIC8vIDdlMDRoDQorICBVSU5UNjQgIF9FU0Jhc2U7ICAgICAgICAg ICAvLyA3ZTA4aA0KKw0KKyAgVUlOVDE2ICBfQ1M7ICAgICAgICAgICAgICAgLy8gN2UxMGgNCisg IFVJTlQxNiAgX0NTQWNjZXNzUmlnaHRzOyAgIC8vIDdlMTJoDQorICBVSU5UMzIgIF9DU0xpbWl0 OyAgICAgICAgICAvLyA3ZTE0aA0KKyAgVUlOVDY0ICBfQ1NCYXNlOyAgICAgICAgICAgLy8gN2Ux OGgNCisNCisgIFVJTlQxNiAgX1NTOyAgICAgICAgICAgICAgIC8vIDdlMjBoDQorICBVSU5UMTYg IF9TU0FjY2Vzc1JpZ2h0czsgICAvLyA3ZTIyaA0KKyAgVUlOVDMyICBfU1NMaW1pdDsgICAgICAg ICAgLy8gN2UyNGgNCisgIFVJTlQ2NCAgX1NTQmFzZTsgICAgICAgICAgIC8vIDdlMjhoDQorDQor ICBVSU5UMTYgIF9EUzsgICAgICAgICAgICAgICAvLyA3ZTMwaA0KKyAgVUlOVDE2ICBfRFNBY2Nl c3NSaWdodHM7ICAgLy8gN2UzMmgNCisgIFVJTlQzMiAgX0RTTGltaXQ7ICAgICAgICAgIC8vIDdl MzRoDQorICBVSU5UNjQgIF9EU0Jhc2U7ICAgICAgICAgICAvLyA3ZTM4aA0KKw0KKyAgVUlOVDE2 ICBfRlM7ICAgICAgICAgICAgICAgLy8gN2U0MGgNCisgIFVJTlQxNiAgX0ZTQWNjZXNzUmlnaHRz OyAgIC8vIDdlNDJoDQorICBVSU5UMzIgIF9GU0xpbWl0OyAgICAgICAgICAvLyA3ZTQ0aA0KKyAg VUlOVDY0ICBfRlNCYXNlOyAgICAgICAgICAgLy8gN2U0OGgNCisNCisgIFVJTlQxNiAgX0dTOyAg ICAgICAgICAgICAgIC8vIDdlNTBoDQorICBVSU5UMTYgIF9HU0FjY2Vzc1JpZ2h0czsgICAvLyA3 ZTUyaA0KKyAgVUlOVDMyICBfR1NMaW1pdDsgICAgICAgICAgLy8gN2U1NGgNCisgIFVJTlQ2NCAg X0dTQmFzZTsgICAgICAgICAgIC8vIDdlNThoDQorDQorICBVSU5UMzIgIF9HRFRSUmVzZXJ2ZWQx OyAgICAvLyA3ZTYwaA0KKyAgVUlOVDE2ICBfR0RUUkxpbWl0OyAgICAgICAgLy8gN2U2NGgNCisg IFVJTlQxNiAgX0dEVFJSZXNlcnZlZDI7ICAgIC8vIDdlNjZoDQorICBVSU5UNjQgIF9HRFRSQmFz ZTsgICAgICAgICAvLyA3ZTY4aA0KKw0KKyAgVUlOVDE2ICBfTERUUjsgICAgICAgICAgICAgLy8g N2U3MGgNCisgIFVJTlQxNiAgX0xEVFJBY2Nlc3NSaWdodHM7IC8vIDdlNzJoDQorICBVSU5UMzIg IF9MRFRSTGltaXQ7ICAgICAgICAvLyA3ZTc0aA0KKyAgVUlOVDY0ICBfTERUUkJhc2U7ICAgICAg ICAgLy8gN2U3OGgNCisNCisgIFVJTlQzMiAgX0lEVFJSZXNlcnZlZDE7ICAgIC8vIDdlODBoDQor ICBVSU5UMTYgIF9JRFRSTGltaXQ7ICAgICAgICAvLyA3ZTg0aA0KKyAgVUlOVDE2ICBfSURUUlJl c2VydmVkMjsgICAgLy8gN2U4NmgNCisgIFVJTlQ2NCAgX0lEVFJCYXNlOyAgICAgICAgIC8vIDdl ODhoDQorDQorICBVSU5UMTYgIF9UUjsgICAgICAgICAgICAgICAvLyA3ZTkwaA0KKyAgVUlOVDE2 ICBfVFJBY2Nlc3NSaWdodHM7ICAgLy8gN2U5MmgNCisgIFVJTlQzMiAgX1RSTGltaXQ7ICAgICAg ICAgIC8vIDdlOTRoDQorICBVSU5UNjQgIF9UUkJhc2U7ICAgICAgICAgICAvLyA3ZTk4aA0KKw0K KyAgVUlOVDY0ICBJT19SSVA7ICAgICAgICAgICAgLy8gN2VhMGgNCisgIFVJTlQ2NCAgSU9fUkNY OyAgICAgICAgICAgIC8vIDdlYThoDQorICBVSU5UNjQgIElPX1JTSTsgICAgICAgICAgICAvLyA3 ZWIwaA0KKyAgVUlOVDY0ICBJT19SREk7ICAgICAgICAgICAgLy8gN2ViOGgNCisgIFVJTlQzMiAg SU9fRFdvcmQ7ICAgICAgICAgIC8vIDdlYzBoDQorICBVSU5UOCAgIFJlc2VydmVkMVsweDA0XTsg ICAvLyA3ZWM0aA0KKyAgVUlOVDggICBJT1Jlc3RhcnQ7ICAgICAgICAgLy8gN2VjOGgNCisgIFVJ TlQ4ICAgQXV0b0hBTFRSZXN0YXJ0OyAgIC8vIDdlYzloDQorICBVSU5UOCAgIFJlc2VydmVkMlsw eDA2XTsgICAvLyA3ZWNhaA0KKw0KKyAgVUlOVDY0ICBJQTMyX0VGRVI7ICAgICAgICAgLy8gN2Vk MGgNCisgIFVJTlQ2NCAgU1ZNX0d1ZXN0OyAgICAgICAgIC8vIDdlZDhoDQorICBVSU5UNjQgIFNW TV9HdWVzdFZNQ0I7ICAgICAvLyA3ZWUwaA0KKyAgVUlOVDY0ICBTVk1fR3Vlc3RWSW50cjsgICAg Ly8gN2VlOGgNCisgIFVJTlQ4ICAgUmVzZXJ2ZWQzWzB4MGNdOyAgIC8vIDdlZjBoDQorDQorICBV SU5UMzIgIFNNTVJldklkOyAgICAgICAgICAvLyA3ZWZjaA0KKyAgVUlOVDMyICBTTUJBU0U7ICAg ICAgICAgICAgLy8gN2YwMGgNCisNCisgIFVJTlQ4ICAgUmVzZXJ2ZWQ0WzB4MWNdOyAgIC8vIDdm MDRoDQorICBVSU5UNjQgIFNWTV9HdWVzdFBBVDsgICAgICAvLyA3ZjIwaA0KKyAgVUlOVDY0ICBT Vk1fSG9zdElBMzJfRUZFUjsgLy8gN2YyOGgNCisgIFVJTlQ2NCAgU1ZNX0hvc3RDUjQ7ICAgICAg IC8vIDdmMzBoDQorICBVSU5UNjQgIFNWTV9Ib3N0Q1IzOyAgICAgICAvLyA3ZjM4aA0KKyAgVUlO VDY0ICBTVk1fSG9zdENSMDsgICAgICAgLy8gN2Y0MGgNCisNCisgIFVJTlQ2NCAgX0NSNDsgICAg ICAgICAgICAgIC8vIDdmNDhoDQorICBVSU5UNjQgIF9DUjM7ICAgICAgICAgICAgICAvLyA3ZjUw aA0KKyAgVUlOVDY0ICBfQ1IwOyAgICAgICAgICAgICAgLy8gN2Y1OGgNCisgIFVJTlQ2NCAgX0RS NzsgICAgICAgICAgICAgIC8vIDdmNjBoDQorICBVSU5UNjQgIF9EUjY7ICAgICAgICAgICAgICAv LyA3ZjY4aA0KKyAgVUlOVDY0ICBfUkZMQUdTOyAgICAgICAgICAgLy8gN2Y3MGgNCisgIFVJTlQ2 NCAgX1JJUDsgICAgICAgICAgICAgIC8vIDdmNzhoDQorICBVSU5UNjQgIF9SMTU7ICAgICAgICAg ICAgICAvLyA3ZjgwaA0KKyAgVUlOVDY0ICBfUjE0OyAgICAgICAgICAgICAgLy8gN2Y4OGgNCisg IFVJTlQ2NCAgX1IxMzsgICAgICAgICAgICAgIC8vIDdmOTBoDQorICBVSU5UNjQgIF9SMTI7ICAg ICAgICAgICAgICAvLyA3Zjk4aA0KKyAgVUlOVDY0ICBfUjExOyAgICAgICAgICAgICAgLy8gN2Zh MGgNCisgIFVJTlQ2NCAgX1IxMDsgICAgICAgICAgICAgIC8vIDdmYThoDQorICBVSU5UNjQgIF9S OTsgICAgICAgICAgICAgICAvLyA3ZmIwaA0KKyAgVUlOVDY0ICBfUjg7ICAgICAgICAgICAgICAg Ly8gN2ZiOGgNCisgIFVJTlQ2NCAgX1JESTsgICAgICAgICAgICAgIC8vIDdmYzBoDQorICBVSU5U NjQgIF9SU0k7ICAgICAgICAgICAgICAvLyA3ZmM4aA0KKyAgVUlOVDY0ICBfUkJQOyAgICAgICAg ICAgICAgLy8gN2ZkMGgNCisgIFVJTlQ2NCAgX1JTUDsgICAgICAgICAgICAgIC8vIDdmZDhoDQor ICBVSU5UNjQgIF9SQlg7ICAgICAgICAgICAgICAvLyA3ZmUwaA0KKyAgVUlOVDY0ICBfUkRYOyAg ICAgICAgICAgICAgLy8gN2ZlOGgNCisgIFVJTlQ2NCAgX1JDWDsgICAgICAgICAgICAgIC8vIDdm ZjBoDQorICBVSU5UNjQgIF9SQVg7ICAgICAgICAgICAgICAvLyA3ZmY4aA0KK30gWDU4X1NNUkFN X1NBVkVfU1RBVEVfTUFQNjQ7DQorDQorLy8vDQorLy8vIFVuaW9uIG9mIDMyLWJpdCBhbmQgNjQt Yml0IFNNUkFNIFNhdmUgU3RhdGUgTWFwcw0KKy8vLw0KK3R5cGVkZWYgdW5pb24gIHsNCisgIFg1 OF9TTVJBTV9TQVZFX1NUQVRFX01BUDMyICB4ODY7DQorICBYNThfU01SQU1fU0FWRV9TVEFURV9N QVA2NCAgeDY0Ow0KK30gWDU4X1NNUkFNX1NBVkVfU1RBVEVfTUFQOw0KKw0KKyNwcmFnbWEgcGFj ayAoKQ0KKw0KKyNlbmRpZg0KZGlmZiAtLWdpdCBhL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5C b2FyZFBrZy9JbmNsdWRlL1NpbWljc1BsYXRmb3Jtcy5oIGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNz T3BlbkJvYXJkUGtnL0luY2x1ZGUvU2ltaWNzUGxhdGZvcm1zLmgNCm5ldyBmaWxlIG1vZGUgMTAw NjQ0DQppbmRleCAwMDAwMDAwMDAwLi5jNzkxMTFkODExDQotLS0gL2Rldi9udWxsDQorKysgYi9Q bGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvSW5jbHVkZS9TaW1pY3NQbGF0Zm9ybXMu aA0KQEAgLTAsMCArMSw1NCBAQA0KKy8qKiBAZmlsZQ0KKyAgT1ZNRiBQbGF0Zm9ybSBkZWZpbml0 aW9ucw0KKw0KKyAgQ29weXJpZ2h0IChDKSAyMDE1LCBSZWQgSGF0LCBJbmMuDQorICBDb3B5cmln aHQgKGMpIDIwMTQsIEdhYnJpZWwgTC4gU29tbG8gPHNvbWxvQGNtdS5lZHU+DQorDQorICBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KKyoqLw0KKw0KKyNpZm5k ZWYgX19PVk1GX1BMQVRGT1JNU19IX18NCisjZGVmaW5lIF9fT1ZNRl9QTEFURk9STVNfSF9fDQor DQorI2luY2x1ZGUgPExpYnJhcnkvUGNpTGliLmg+DQorI2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRh cmQvUGNpMjIuaD4NCisjaW5jbHVkZSA8SW5kdXN0cnlTdGFuZGFyZC9YNThJY2gxMC5oPg0KKyNp bmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJkL0k0NDBGeFBpaXg0Lmg+IC8vIFRPRE86IHJlbW92ZQ0K Kw0KKy8vDQorLy8gU2ltaWNzIEhvc3QgQnJpZGdlIERJRCBBZGRyZXNzDQorLy8NCisjZGVmaW5l IFNJTUlDU19IT1NUQlJJREdFX0RJRCBcDQorICBQQ0lfTElCX0FERFJFU1MgKDAsIDAsIDAsIFBD SV9ERVZJQ0VfSURfT0ZGU0VUKQ0KKw0KKy8vDQorLy8gU2ltaWNzIFNpZGVCYW5kIFBDSSBkZXZp Y2UgcmVnaXN0ZXJzDQorLy8NCisjZGVmaW5lIFNJTUlDU19TSURFQkFORFBDSV9ERVYgIDANCisj ZGVmaW5lIFNJTUlDU19TSURFQkFORFBDSV9GVU5DIDcNCisjZGVmaW5lIFNJTUlDU19TSURFQkFO RFBDSV9TVklEIFwNCisgIFBDSV9MSUJfQUREUkVTUyAoMCwgMCwgNywgUENJX1NWSURfT0ZGU0VU KQ0KKyNkZWZpbmUgU0lNSUNTX1NJREVCQU5EUENJX1NESUQgXA0KKyAgUENJX0xJQl9BRERSRVNT ICgwLCAwLCA3LCBQQ0lfU0lEX09GRlNFVCkNCisjZGVmaW5lIFNJTUlDU19TSURFQkFORFBDSV9D QVAgXA0KKyAgUENJX0xJQl9BRERSRVNTICgwLCAwLCA3LCBQQ0lfQ0FQQklMSVRZX1BPSU5URVJf T0ZGU0VUKQ0KKyNkZWZpbmUgU0lNSUNTX1NJREVCQU5EUENJX0NBUF9PZmZzZXQgMHg0MA0KKyNk ZWZpbmUgU0lNSUNTX1NJREVCQU5EUENJX0NBUF9JRCAgICAgMHhGRg0KKw0KKy8vDQorLy8gVmFs dWVzIHdlIHByb2dyYW0gaW50byB0aGUgUE0gYmFzZSBhZGRyZXNzIHJlZ2lzdGVycw0KKy8vDQor I2RlZmluZSBQSUlYNF9QTUJBX1ZBTFVFICAweEIwMDANCisjZGVmaW5lIElDSDEwX1BNQkFTRV9W QUxVRSAweDA0MDANCisNCisvLw0KKy8vIENvbW1vbiBiaXRzIGluIHNhbWUtcHVycG9zZSByZWdp c3RlcnMNCisvLw0KKyNkZWZpbmUgUE1CQV9SVEUgQklUMA0KKw0KKy8vDQorLy8gQ29tbW9uIElP IHBvcnRzIHJlbGF0aXZlIHRvIHRoZSBQb3dlciBNYW5hZ2VtZW50IEJhc2UgQWRkcmVzcw0KKy8v DQorI2RlZmluZSBBQ1BJX1RJTUVSX09GRlNFVCAweDgNCisNCisjZW5kaWYNCmRpZmYgLS1naXQg YS9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvTGlicmFyeS9Mb2FkTGludXhMaWIv SWEzMi9KdW1wVG9LZXJuZWwubmFzbSBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBr Zy9MaWJyYXJ5L0xvYWRMaW51eExpYi9JYTMyL0p1bXBUb0tlcm5lbC5uYXNtDQpuZXcgZmlsZSBt b2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMC4uM2YzY2QzM2M4YQ0KLS0tIC9kZXYvbnVsbA0K KysrIGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0xpYnJhcnkvTG9hZExpbnV4 TGliL0lhMzIvSnVtcFRvS2VybmVsLm5hc20NCkBAIC0wLDAgKzEsNDEgQEANCis7IEBmaWxlDQor OyBDb3B5cmlnaHQgKGMpIDIwMDYgLSAyMDEzIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRz IHJlc2VydmVkLiA8QlI+DQorOw0KKzsgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNs YXVzZS1QYXRlbnQNCis7DQorDQorICBTRUNUSU9OIC50ZXh0DQorDQorOy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQ0KKzsgVk9JRA0KKzsgRUZJQVBJDQorOyBKdW1wVG9LZXJuZWwgKA0KKzsgICBWT0lE ICpLZXJuZWxTdGFydCwNCis7ICAgVk9JRCAqS2VybmVsQm9vdFBhcmFtcw0KKzsgICApOw0KKzst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0NCitnbG9iYWwgQVNNX1BGWChKdW1wVG9LZXJuZWwpDQorQVNN X1BGWChKdW1wVG9LZXJuZWwpOg0KKw0KKyAgICBtb3YgICAgIGVzaSwgW2VzcCArIDhdDQorICAg IGNhbGwgICAgRFdPUkQgW2VzcCArIDRdDQorICAgIHJldA0KKw0KKzstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0NCis7IFZPSUQNCis7IEVGSUFQSQ0KKzsgSnVtcFRvVWVmaUtlcm5lbCAoDQorOyAgIEVG SV9IQU5ETEUgSW1hZ2VIYW5kbGUsDQorOyAgIEVGSV9TWVNURU1fVEFCTEUgKlN5c3RlbVRhYmxl LA0KKzsgICBWT0lEICpLZXJuZWxCb290UGFyYW1zLA0KKzsgICBWT0lEICpLZXJuZWxTdGFydA0K KzsgICApOw0KKzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitnbG9iYWwgQVNNX1BGWChKdW1wVG9V ZWZpS2VybmVsKQ0KK0FTTV9QRlgoSnVtcFRvVWVmaUtlcm5lbCk6DQorDQorICAgIG1vdiAgICAg ZWF4LCBbZXNwICsgMTJdDQorICAgIG1vdiAgICAgZWF4LCBbZWF4ICsgMHgyNjRdDQorICAgIGFk ZCAgICAgZWF4LCBbZXNwICsgMTZdDQorICAgIGptcCAgICAgZWF4DQorDQpkaWZmIC0tZ2l0IGEv UGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0xpYnJhcnkvTG9hZExpbnV4TGliL0xv YWRMaW51eExpYi5oIGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0xpYnJhcnkv TG9hZExpbnV4TGliL0xvYWRMaW51eExpYi5oDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXgg MDAwMDAwMDAwMC4uYzRjYzRkZDhlNw0KLS0tIC9kZXYvbnVsbA0KKysrIGIvUGxhdGZvcm0vSW50 ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0xpYnJhcnkvTG9hZExpbnV4TGliL0xvYWRMaW51eExpYi5o DQpAQCAtMCwwICsxLDUyIEBADQorLyoqIEBmaWxlDQorICBCb290IFVFRkkgTGludXguDQorDQor ICBDb3B5cmlnaHQgKGMpIDIwMDggLSAyMDEzIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRz IHJlc2VydmVkLiA8QlI+DQorDQorICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xh dXNlLVBhdGVudA0KKyoqLw0KKw0KKyNpZm5kZWYgX0xPQURfTElOVVhfTElCX0lOQ0xVREVEXw0K KyNkZWZpbmUgX0xPQURfTElOVVhfTElCX0lOQ0xVREVEXw0KKw0KKyNpbmNsdWRlIDxVZWZpLmg+ DQorI2luY2x1ZGUgPExpYnJhcnkvTG9hZExpbnV4TGliLmg+DQorI2luY2x1ZGUgPExpYnJhcnkv QmFzZUxpYi5oPg0KKyNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VNZW1vcnlMaWIuaD4NCisjaW5jbHVk ZSA8TGlicmFyeS9EZWJ1Z0xpYi5oPg0KKyNpbmNsdWRlIDxMaWJyYXJ5L01lbW9yeUFsbG9jYXRp b25MaWIuaD4NCisjaW5jbHVkZSA8TGlicmFyeS9VZWZpQm9vdFNlcnZpY2VzVGFibGVMaWIuaD4N CisjaW5jbHVkZSA8TGlicmFyeS9VZWZpUnVudGltZVNlcnZpY2VzVGFibGVMaWIuaD4NCisNCisj aW5jbHVkZSA8SW5kdXN0cnlTdGFuZGFyZC9MaW51eEJ6aW1hZ2UuaD4NCisNCisjaW5jbHVkZSA8 UHJvdG9jb2wvR3JhcGhpY3NPdXRwdXQuaD4NCisNCitWT0lEDQorRUZJQVBJDQorSnVtcFRvS2Vy bmVsICgNCisgIFZPSUQgKktlcm5lbFN0YXJ0LA0KKyAgVk9JRCAqS2VybmVsQm9vdFBhcmFtcw0K KyAgKTsNCisNCitWT0lEDQorRUZJQVBJDQorSnVtcFRvVWVmaUtlcm5lbCAoDQorICBFRklfSEFO RExFIEltYWdlSGFuZGxlLA0KKyAgRUZJX1NZU1RFTV9UQUJMRSAqU3lzdGVtVGFibGUsDQorICBW T0lEICpLZXJuZWxCb290UGFyYW1zLA0KKyAgVk9JRCAqS2VybmVsU3RhcnQNCisgICk7DQorDQor Vk9JRA0KK0luaXRMaW51eERlc2NyaXB0b3JUYWJsZXMgKA0KKyAgVk9JRA0KKyAgKTsNCisNCitW T0lEDQorU2V0TGludXhEZXNjcmlwdG9yVGFibGVzICgNCisgIFZPSUQNCisgICk7DQorDQorI2Vu ZGlmDQorDQpkaWZmIC0tZ2l0IGEvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0xp YnJhcnkvTG9hZExpbnV4TGliL0xvYWRMaW51eExpYi5pbmYgYi9QbGF0Zm9ybS9JbnRlbC9TaW1p Y3NPcGVuQm9hcmRQa2cvTGlicmFyeS9Mb2FkTGludXhMaWIvTG9hZExpbnV4TGliLmluZg0KbmV3 IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAuLjg5NjY0ZjRlNDINCi0tLSAvZGV2 L251bGwNCisrKyBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9MaWJyYXJ5L0xv YWRMaW51eExpYi9Mb2FkTGludXhMaWIuaW5mDQpAQCAtMCwwICsxLDQyIEBADQorIyMgQGZpbGUN CisjDQorIyBDb3B5cmlnaHQgKGMpIDIwMDggLSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwg cmlnaHRzIHJlc2VydmVkLiA8QlI+DQorIw0KKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJT RC0yLUNsYXVzZS1QYXRlbnQNCisjDQorIyMNCisNCitbRGVmaW5lc10NCisgIElORl9WRVJTSU9O ICAgICAgICAgICAgICAgICAgICA9IDB4MDAwMTAwMDUNCisgIEJBU0VfTkFNRSAgICAgICAgICAg ICAgICAgICAgICA9IExvYWRMaW51eExpYg0KKyAgRklMRV9HVUlEICAgICAgICAgICAgICAgICAg ICAgID0gNjNDQzg0OTctQzlEMC00NkE4LUFDMDgtNDlERjkyQTJGRjYyDQorICBNT0RVTEVfVFlQ RSAgICAgICAgICAgICAgICAgICAgPSBCQVNFDQorICBWRVJTSU9OX1NUUklORyAgICAgICAgICAg ICAgICAgPSAxLjANCisgIExJQlJBUllfQ0xBU1MgICAgICAgICAgICAgICAgICA9IExvYWRMaW51 eExpYg0KKw0KKyMNCisjIFRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gaXMgZm9yIHJlZmVyZW5j ZSBvbmx5IGFuZCBub3QgcmVxdWlyZWQgYnkgdGhlIGJ1aWxkIHRvb2xzLg0KKyMNCisjICBWQUxJ RF9BUkNISVRFQ1RVUkVTICAgICAgICAgICA9IElBMzIgWDY0DQorIw0KKw0KK1tTb3VyY2VzLmNv bW1vbl0NCisgIExpbnV4LmMNCisgIExpbnV4R2R0LmMNCisNCitbU291cmNlcy5JQTMyXQ0KKyAg SWEzMi9KdW1wVG9LZXJuZWwubmFzbQ0KKw0KK1tTb3VyY2VzLlg2NF0NCisgIFg2NC9KdW1wVG9L ZXJuZWwubmFzbQ0KKw0KK1tQYWNrYWdlc10NCisgIE1kZVBrZy9NZGVQa2cuZGVjDQorICBPdm1m UGtnL092bWZQa2cuZGVjDQorDQorW0xpYnJhcnlDbGFzc2VzXQ0KKyAgQmFzZUxpYg0KKyAgRGVi dWdMaWINCisgIE1lbW9yeUFsbG9jYXRpb25MaWINCisgIEJhc2VNZW1vcnlMaWINCisNCmRpZmYg LS1naXQgYS9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvTGlicmFyeS9Mb2FkTGlu dXhMaWIvWDY0L0p1bXBUb0tlcm5lbC5uYXNtIGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJv YXJkUGtnL0xpYnJhcnkvTG9hZExpbnV4TGliL1g2NC9KdW1wVG9LZXJuZWwubmFzbQ0KbmV3IGZp bGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAuLjc5ZTZiOGU3YmENCi0tLSAvZGV2L251 bGwNCisrKyBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9MaWJyYXJ5L0xvYWRM aW51eExpYi9YNjQvSnVtcFRvS2VybmVsLm5hc20NCkBAIC0wLDAgKzEsODUgQEANCis7IEBmaWxl DQorOyBDb3B5cmlnaHQgKGMpIDIwMDYgLSAyMDEzIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmln aHRzIHJlc2VydmVkLiA8QlI+DQorOw0KKzsgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0y LUNsYXVzZS1QYXRlbnQNCis7DQorDQorICBERUZBVUxUIFJFTA0KKyAgU0VDVElPTiAudGV4dA0K Kw0KKzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCis7IFZPSUQNCis7IEVGSUFQSQ0KKzsgSnVtcFRv S2VybmVsICgNCis7ICAgVk9JRCAqS2VybmVsU3RhcnQsICAgICAgICAgLy8gcmN4DQorOyAgIFZP SUQgKktlcm5lbEJvb3RQYXJhbXMgICAgIC8vIHJkeA0KKzsgICApOw0KKzstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0NCitnbG9iYWwgQVNNX1BGWChKdW1wVG9LZXJuZWwpDQorQVNNX1BGWChKdW1wVG9L ZXJuZWwpOg0KKw0KKyAgICA7IFNldCB1cCBmb3IgZXhlY3V0aW5nIGtlcm5lbC4gQlAgaW4gJWVz aSwgZW50cnkgcG9pbnQgb24gdGhlIHN0YWNrDQorICAgIDsgKDY0LWJpdCB3aGVuIHRoZSAncmV0 JyB3aWxsIHVzZSBpdCBhcyAzMi1iaXQsIGJ1dCB3ZSdyZSBsaXR0bGUtZW5kaWFuKQ0KKyAgICBt b3YgICAgcnNpLCByZHgNCisgICAgcHVzaCAgIHJjeA0KKw0KKyAgICA7IEp1bXAgaW50byB0aGUg Y29tcGF0aWJpbGl0eSBtb2RlIENTDQorICAgIHB1c2ggICAgMHgxMA0KKyAgICBsZWEgICAgIHJh eCwgWy4wXQ0KKyAgICBwdXNoICAgIHJheA0KKyAgICBEQiAweDQ4LCAweGNiICAgICAgICAgICAg ICAgICAgICAgIDsgcmV0ZnENCisNCisuMDoNCisgICAgOyBOb3cgaW4gY29tcGF0aWJpbGl0eSBt b2RlLg0KKw0KKyAgICBEQiAweGI4LCAweDE4LCAweDAsIDB4MCwgMHgwICAgIDsgbW92bCAgICAk MHgxOCwgJWVheA0KKyAgICBEQiAweDhlLCAweGQ4ICAgICAgICAgICAgICAgICAgICAgIDsgbW92 bCAgICAlZWF4LCAlZHMNCisgICAgREIgMHg4ZSwgMHhjMCAgICAgICAgICAgICAgICAgICAgICA7 IG1vdmwgICAgJWVheCwgJWVzDQorICAgIERCIDB4OGUsIDB4ZTAgICAgICAgICAgICAgICAgICAg ICAgOyBtb3ZsICAgICVlYXgsICVmcw0KKyAgICBEQiAweDhlLCAweGU4ICAgICAgICAgICAgICAg ICAgICAgIDsgbW92bCAgICAlZWF4LCAlZ3MNCisgICAgREIgMHg4ZSwgMHhkMCAgICAgICAgICAg ICAgICAgICAgICA7IG1vdmwgICAgJWVheCwgJXNzDQorDQorICAgIDsgRGlzYWJsZSBwYWdpbmcN CisgICAgREIgMHhmLCAweDIwLCAweGMwICAgICAgICAgICAgICAgIDsgbW92bCAgICAlY3IwLCAl ZWF4DQorICAgIERCIDB4ZiwgMHhiYSwgMHhmOCwgMHgxZiAgICAgICAgICA7IGJ0Y2wgICAgJDMx LCAlZWF4DQorICAgIERCIDB4ZiwgMHgyMiwgMHhjMCAgICAgICAgICAgICAgICA7IG1vdmwgICAg JWVheCwgJWNyMA0KKw0KKyAgICA7IERpc2FibGUgbG9uZyBtb2RlIGluIEVGRVINCisgICAgREIg MHhiOSwgMHg4MCwgMHgwLCAweDAsIDB4YzAgICAgOyBtb3ZsICAgICQweDBjMDAwMDA4MCwgJWVj eA0KKyAgICBEQiAweGYsIDB4MzIgICAgICAgICAgICAgICAgICAgICAgOyByZG1zcg0KKyAgICBE QiAweGYsIDB4YmEsIDB4ZjgsIDB4OCAgICAgICAgICA7IGJ0Y2wgICAgJDgsICVlYXgNCisgICAg REIgMHhmLCAweDMwICAgICAgICAgICAgICAgICAgICAgIDsgd3Jtc3INCisNCisgICAgOyBEaXNh YmxlIFBBRQ0KKyAgICBEQiAweGYsIDB4MjAsIDB4ZTAgICAgICAgICAgICAgICAgOyBtb3ZsICAg ICVjcjQsICVlYXgNCisgICAgREIgMHhmLCAweGJhLCAweGY4LCAweDUgICAgICAgICAgOyBidGNs ICAgICQ1LCAlZWF4DQorICAgIERCIDB4ZiwgMHgyMiwgMHhlMCAgICAgICAgICAgICAgICA7IG1v dmwgICAgJWVheCwgJWNyNA0KKw0KKyAgICBEQiAweDMxLCAweGVkICAgICAgICAgICAgICAgICAg ICAgIDsgeG9yICAgICAlZWJwLCAlZWJwDQorICAgIERCIDB4MzEsIDB4ZmYgICAgICAgICAgICAg ICAgICAgICAgOyB4b3IgICAgICVlZGksICVlZGkNCisgICAgREIgMHgzMSwgMHhkYiAgICAgICAg ICAgICAgICAgICAgICA7IHhvciAgICAgJWVieCwgJWVieA0KKyAgICBEQiAweGMzICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDsgcmV0DQorDQorOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKzsg Vk9JRA0KKzsgRUZJQVBJDQorOyBKdW1wVG9VZWZpS2VybmVsICgNCis7ICAgRUZJX0hBTkRMRSBJ bWFnZUhhbmRsZSwgICAgICAgIC8vIHJjeA0KKzsgICBFRklfU1lTVEVNX1RBQkxFICpTeXN0ZW1U YWJsZSwgLy8gcmR4DQorOyAgIFZPSUQgKktlcm5lbEJvb3RQYXJhbXMgICAgICAgICAvLyByOA0K KzsgICBWT0lEICpLZXJuZWxTdGFydCwgICAgICAgICAgICAgLy8gcjkNCis7ICAgKTsNCis7LS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tDQorZ2xvYmFsIEFTTV9QRlgoSnVtcFRvVWVmaUtlcm5lbCkNCitB U01fUEZYKEp1bXBUb1VlZmlLZXJuZWwpOg0KKw0KKyAgICBtb3YgICAgIHJkaSwgcmN4DQorICAg IG1vdiAgICAgcnNpLCByZHgNCisgICAgbW92ICAgICByZHgsIHI4DQorICAgIHhvciAgICAgcmF4 LCByYXgNCisgICAgbW92ICAgICBlYXgsIFtyOCArIDB4MjY0XQ0KKyAgICBhZGQgICAgIHI5LCBy YXgNCisgICAgYWRkICAgICByOSwgMHgyMDANCisgICAgY2FsbCAgICByOQ0KKyAgICByZXQNCisN CmRpZmYgLS1naXQgYS9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvTGlicmFyeS9O dlZhcnNGaWxlTGliL052VmFyc0ZpbGVMaWIuaCBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5C b2FyZFBrZy9MaWJyYXJ5L052VmFyc0ZpbGVMaWIvTnZWYXJzRmlsZUxpYi5oDQpuZXcgZmlsZSBt b2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMC4uOTJhYTAzOGNkZA0KLS0tIC9kZXYvbnVsbA0K KysrIGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0xpYnJhcnkvTnZWYXJzRmls ZUxpYi9OdlZhcnNGaWxlTGliLmgNCkBAIC0wLDAgKzEsNTUgQEANCisvKiogQGZpbGUNCisgIFNh dmUgTm9uLVZvbGF0aWxlIFZhcmlhYmxlcyB0byBhIGZpbGUgc3lzdGVtLg0KKw0KKyAgQ29weXJp Z2h0IChjKSAyMDA5IC0gMjAxMSBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZl ZC4gPEJSPg0KKw0KKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRl bnQNCisqKi8NCisNCisjaWZuZGVmIF9fTlZfVkFSU19GSUxFX0xJQl9JTlNUQU5DRV9fDQorI2Rl ZmluZSBfX05WX1ZBUlNfRklMRV9MSUJfSU5TVEFOQ0VfXw0KKw0KKyNpbmNsdWRlIDxVZWZpLmg+ DQorDQorI2luY2x1ZGUgPEd1aWQvRmlsZUluZm8uaD4NCisNCisjaW5jbHVkZSA8UHJvdG9jb2wv U2ltcGxlRmlsZVN5c3RlbS5oPg0KKw0KKyNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VMaWIuaD4NCisj aW5jbHVkZSA8TGlicmFyeS9GaWxlSGFuZGxlTGliLmg+DQorI2luY2x1ZGUgPExpYnJhcnkvU2Vy aWFsaXplVmFyaWFibGVzTGliLmg+DQorI2luY2x1ZGUgPExpYnJhcnkvVWVmaUJvb3RTZXJ2aWNl c1RhYmxlTGliLmg+DQorI2luY2x1ZGUgPExpYnJhcnkvVWVmaVJ1bnRpbWVTZXJ2aWNlc1RhYmxl TGliLmg+DQorI2luY2x1ZGUgPExpYnJhcnkvVWVmaUxpYi5oPg0KKw0KKy8qKg0KKyAgTG9hZHMg dGhlIG5vbi12b2xhdGlsZSB2YXJpYWJsZXMgZnJvbSB0aGUgTnZWYXJzIGZpbGUgb24gdGhlDQor ICBnaXZlbiBmaWxlIHN5c3RlbS4NCisNCisgIEBwYXJhbVtpbl0gIEZzSGFuZGxlIC0gSGFuZGxl IGZvciBhIGdFZmlTaW1wbGVGaWxlU3lzdGVtUHJvdG9jb2xHdWlkIGluc3RhbmNlDQorDQorICBA cmV0dXJuICAgICBFRklfU1RBVFVTIGJhc2VkIG9uIHRoZSBzdWNjZXNzIG9yIGZhaWx1cmUgb2Yg bG9hZCBvcGVyYXRpb24NCisNCisqKi8NCitFRklfU1RBVFVTDQorTG9hZE52VmFyc0Zyb21GcyAo DQorICBFRklfSEFORExFICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZzSGFuZGxlDQorICAp Ow0KKw0KKw0KKy8qKg0KKyAgU2F2ZXMgdGhlIG5vbi12b2xhdGlsZSB2YXJpYWJsZXMgaW50byB0 aGUgTnZWYXJzIGZpbGUgb24gdGhlDQorICBnaXZlbiBmaWxlIHN5c3RlbS4NCisNCisgIEBwYXJh bVtpbl0gIEZzSGFuZGxlIC0gSGFuZGxlIGZvciBhIGdFZmlTaW1wbGVGaWxlU3lzdGVtUHJvdG9j b2xHdWlkIGluc3RhbmNlDQorDQorICBAcmV0dXJuICAgICBFRklfU1RBVFVTIGJhc2VkIG9uIHRo ZSBzdWNjZXNzIG9yIGZhaWx1cmUgb2YgbG9hZCBvcGVyYXRpb24NCisNCisqKi8NCitFRklfU1RB VFVTDQorU2F2ZU52VmFyc1RvRnMgKA0KKyAgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICAgICAg ICAgICAgICBGc0hhbmRsZQ0KKyAgKTsNCisNCisjZW5kaWYNCisNCmRpZmYgLS1naXQgYS9QbGF0 Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvTGlicmFyeS9OdlZhcnNGaWxlTGliL052VmFy c0ZpbGVMaWIuaW5mIGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0xpYnJhcnkv TnZWYXJzRmlsZUxpYi9OdlZhcnNGaWxlTGliLmluZg0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmlu ZGV4IDAwMDAwMDAwMDAuLmU0YzNiN2NjZmYNCi0tLSAvZGV2L251bGwNCisrKyBiL1BsYXRmb3Jt L0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9MaWJyYXJ5L052VmFyc0ZpbGVMaWIvTnZWYXJzRmls ZUxpYi5pbmYNCkBAIC0wLDAgKzEsNTMgQEANCisjIyBAZmlsZQ0KKyMgIE52VmFyc0ZpbGVMaWIN CisjDQorIyAgVGhpcyBsaWJyYXJ5IHNhdmVzIGFuZCByZXN0b3JlcyBub24tdm9sYXRpbGUgdmFy aWFibGVzIGluIGENCisjICBmaWxlIHdpdGhpbiBhIGZpbGUgc3lzdGVtLg0KKyMNCisjIENvcHly aWdodCAoYykgMjAwNiAtIDIwMTggSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2 ZWQuIDxCUj4NCisjDQorIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBh dGVudA0KKyMNCisjIw0KKw0KK1tEZWZpbmVzXQ0KKyAgSU5GX1ZFUlNJT04gICAgICAgICAgICAg ICAgICAgID0gMHgwMDAxMDAwNQ0KKyAgQkFTRV9OQU1FICAgICAgICAgICAgICAgICAgICAgID0g TnZWYXJzRmlsZUxpYg0KKyAgRklMRV9HVUlEICAgICAgICAgICAgICAgICAgICAgID0gOEVDRDRD QzAtMTc3Mi00NTgzLThBNzQtODM2MzNBMTVGQUEwDQorICBNT0RVTEVfVFlQRSAgICAgICAgICAg ICAgICAgICAgPSBVRUZJX0RSSVZFUg0KKyAgVkVSU0lPTl9TVFJJTkcgICAgICAgICAgICAgICAg ID0gMS4wDQorICBMSUJSQVJZX0NMQVNTICAgICAgICAgICAgICAgICAgPSBOdlZhcnNGaWxlTGli fERYRV9EUklWRVIgRFhFX1JVTlRJTUVfRFJJVkVSIFVFRklfRFJJVkVSDQorDQorIw0KKyMgVGhl IGZvbGxvd2luZyBpbmZvcm1hdGlvbiBpcyBmb3IgcmVmZXJlbmNlIG9ubHkgYW5kIG5vdCByZXF1 aXJlZCBieSB0aGUgYnVpbGQgdG9vbHMuDQorIw0KKyMgIFZBTElEX0FSQ0hJVEVDVFVSRVMgICAg ICAgICAgID0gSUEzMiBYNjQgRUJDDQorIw0KKw0KK1tTb3VyY2VzXQ0KKyAgRnNBY2Nlc3MuYw0K KyAgTnZWYXJzRmlsZUxpYi5jDQorDQorW1BhY2thZ2VzXQ0KKyAgTWRlUGtnL01kZVBrZy5kZWMN CisgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQorICBTaGVsbFBrZy9TaGVsbFBrZy5k ZWMNCisgIE92bWZQa2cvT3ZtZlBrZy5kZWMNCisNCitbTGlicmFyeUNsYXNzZXNdDQorICBCYXNl TGliDQorICBCYXNlTWVtb3J5TGliDQorICBEZWJ1Z0xpYg0KKyAgRmlsZUhhbmRsZUxpYg0KKyAg TWVtb3J5QWxsb2NhdGlvbkxpYg0KKyAgU2VyaWFsaXplVmFyaWFibGVzTGliDQorDQorW1Byb3Rv Y29sc10NCisgIGdFZmlTaW1wbGVGaWxlU3lzdGVtUHJvdG9jb2xHdWlkICAgICAgICAgICAgICAj IyBDT05TVU1FUw0KKw0KK1tHdWlkc10NCisgIGdFZmlGaWxlSW5mb0d1aWQNCisNCitbRGVwZXhd DQorICBnRWZpVmFyaWFibGVXcml0ZUFyY2hQcm90b2NvbEd1aWQNCisNCmRpZmYgLS1naXQgYS9Q bGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvTGlicmFyeS9TZXJpYWxpemVWYXJpYWJs ZXNMaWIvU2VyaWFsaXplVmFyaWFibGVzTGliLmggYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVu Qm9hcmRQa2cvTGlicmFyeS9TZXJpYWxpemVWYXJpYWJsZXNMaWIvU2VyaWFsaXplVmFyaWFibGVz TGliLmgNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwLi43ZTc4Y2Q0YjIx DQotLS0gL2Rldi9udWxsDQorKysgYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cv TGlicmFyeS9TZXJpYWxpemVWYXJpYWJsZXNMaWIvU2VyaWFsaXplVmFyaWFibGVzTGliLmgNCkBA IC0wLDAgKzEsMzMgQEANCisvKiogQGZpbGUNCisgIFNlcmlhbGl6ZSBWYXJpYWJsZXMgTGlicmFy eSBpbXBsZW1lbnRhdGlvbg0KKw0KKyAgQ29weXJpZ2h0IChjKSAyMDA5IC0gMjAxMSBJbnRlbCBD b3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gPEJSPg0KKw0KKyAgU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCisqKi8NCisNCisjaWZuZGVmIF9fU0VS SUFMSVpFX1ZBUklBQkxFU19MSUJfSU5TVEFOQ0VfXw0KKyNkZWZpbmUgX19TRVJJQUxJWkVfVkFS SUFCTEVTX0xJQl9JTlNUQU5DRV9fDQorDQorI2luY2x1ZGUgPFVlZmkuaD4NCisNCisjaW5jbHVk ZSA8TGlicmFyeS9CYXNlTGliLmg+DQorI2luY2x1ZGUgPExpYnJhcnkvQmFzZU1lbW9yeUxpYi5o Pg0KKyNpbmNsdWRlIDxMaWJyYXJ5L0RlYnVnTGliLmg+DQorI2luY2x1ZGUgPExpYnJhcnkvTWVt b3J5QWxsb2NhdGlvbkxpYi5oPg0KKyNpbmNsdWRlIDxMaWJyYXJ5L1NlcmlhbGl6ZVZhcmlhYmxl c0xpYi5oPg0KKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlCb290U2VydmljZXNUYWJsZUxpYi5oPg0K KyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlSdW50aW1lU2VydmljZXNUYWJsZUxpYi5oPg0KKw0KKyNk ZWZpbmUgU1ZfRlJPTV9IQU5ETEUoYSkgICAgICAgQ1IgKGEsIFNWX0lOU1RBTkNFLCBTaWduYXR1 cmUsIFNWX1NJR05BVFVSRSkNCisjZGVmaW5lIFNWX1NJR05BVFVSRSAgICAgICAgICAgIFNJR05B VFVSRV8zMiAoJ1MnLCAnVicsICdBJywgJ1InKQ0KKw0KK3R5cGVkZWYgc3RydWN0IHsNCisgIFVJ TlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpZ25hdHVyZTsNCisgIFZPSUQgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICpCdWZmZXJQdHI7DQorICBVSU5UTiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXJTaXplOw0KKyAgVUlOVE4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgRGF0YVNpemU7DQorfSBTVl9JTlNUQU5DRTsNCisNCisjZW5kaWYN CisNCmRpZmYgLS1naXQgYS9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvTGlicmFy eS9TZXJpYWxpemVWYXJpYWJsZXNMaWIvU2VyaWFsaXplVmFyaWFibGVzTGliLmluZiBiL1BsYXRm b3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9MaWJyYXJ5L1NlcmlhbGl6ZVZhcmlhYmxlc0xp Yi9TZXJpYWxpemVWYXJpYWJsZXNMaWIuaW5mDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXgg MDAwMDAwMDAwMC4uMjU5MDExOTJiMg0KLS0tIC9kZXYvbnVsbA0KKysrIGIvUGxhdGZvcm0vSW50 ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0xpYnJhcnkvU2VyaWFsaXplVmFyaWFibGVzTGliL1Nlcmlh bGl6ZVZhcmlhYmxlc0xpYi5pbmYNCkBAIC0wLDAgKzEsMzYgQEANCisjIyBAZmlsZQ0KKyMgIFNl cmlhbGl6ZSBWYXJpYWJsZXMgTGlicmFyeSBpbXBsZW1lbnRhdGlvbg0KKyMNCisjICBUaGlzIGxp YnJhcnkgc2VyaWFsaXplcyBhbmQgZGVzZXJpYWxpemVzIFVFRkkgdmFyaWFibGVzDQorIw0KKyMg Q29weXJpZ2h0IChjKSAyMDA2IC0gMjAxOCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyBy ZXNlcnZlZC4gPEJSPg0KKyMNCisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1 c2UtUGF0ZW50DQorIw0KKyMjDQorDQorW0RlZmluZXNdDQorICBJTkZfVkVSU0lPTiAgICAgICAg ICAgICAgICAgICAgPSAweDAwMDEwMDA1DQorICBCQVNFX05BTUUgICAgICAgICAgICAgICAgICAg ICAgPSBEeGVTZXJpYWxpemVWYXJpYWJsZXNMaWINCisgIEZJTEVfR1VJRCAgICAgICAgICAgICAg ICAgICAgICA9IDI2NkExNDM0LTZCMjItNDQxRi1BOEQyLUQ1NEFBOEZERjk1Qw0KKyAgTU9EVUxF X1RZUEUgICAgICAgICAgICAgICAgICAgID0gVUVGSV9EUklWRVINCisgIFZFUlNJT05fU1RSSU5H ICAgICAgICAgICAgICAgICA9IDEuMA0KKyAgTElCUkFSWV9DTEFTUyAgICAgICAgICAgICAgICAg ID0gU2VyaWFsaXplVmFyaWFibGVzTGlifERYRV9EUklWRVIgRFhFX1JVTlRJTUVfRFJJVkVSIFVF RklfRFJJVkVSDQorDQorW1NvdXJjZXNdDQorICBTZXJpYWxpemVWYXJpYWJsZXNMaWIuYw0KKw0K K1tQYWNrYWdlc10NCisgIE1kZVBrZy9NZGVQa2cuZGVjDQorICBNZGVNb2R1bGVQa2cvTWRlTW9k dWxlUGtnLmRlYw0KKyAgU2hlbGxQa2cvU2hlbGxQa2cuZGVjDQorICBPdm1mUGtnL092bWZQa2cu ZGVjDQorDQorW0xpYnJhcnlDbGFzc2VzXQ0KKyAgQmFzZUxpYg0KKyAgQmFzZU1lbW9yeUxpYg0K KyAgRGVidWdMaWINCisgIE1lbW9yeUFsbG9jYXRpb25MaWINCisgIFVlZmlCb290U2VydmljZXNU YWJsZUxpYg0KKyAgVWVmaVJ1bnRpbWVTZXJ2aWNlc1RhYmxlTGliDQorDQpkaWZmIC0tZ2l0IGEv UGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1BsYXRmb3JtRHhlL1BsYXRmb3JtLmgg Yi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1EeGUvUGxhdGZvcm0u aA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAuLjYzYjVlNTI1NzUNCi0t LSAvZGV2L251bGwNCisrKyBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9QbGF0 Zm9ybUR4ZS9QbGF0Zm9ybS5oDQpAQCAtMCwwICsxLDM3IEBADQorLyoqIEBmaWxlDQorICBUaGlz IGRyaXZlciBlZmZlY3R1YXRlcyBPVk1GJ3MgcGxhdGZvcm0gY29uZmlndXJhdGlvbiBzZXR0aW5n cyBhbmQgZXhwb3Nlcw0KKyAgdGhlbSB2aWEgSElJLg0KKw0KKyAgQ29weXJpZ2h0IChDKSAyMDE0 LCBSZWQgSGF0LCBJbmMuDQorDQorICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xh dXNlLVBhdGVudA0KKyoqLw0KKw0KKyNpZm5kZWYgX1BMQVRGT1JNX0hfDQorI2RlZmluZSBfUExB VEZPUk1fSF8NCisNCisvLw0KKy8vIE1hY3JvIGFuZCB0eXBlIGRlZmluaXRpb25zIHRoYXQgY29u bmVjdCB0aGUgZm9ybSB3aXRoIHRoZSBISUkgZHJpdmVyIGNvZGUuDQorLy8NCisjZGVmaW5lIEZP Uk1TVEFURUlEX01BSU5fRk9STSAgMQ0KKyNkZWZpbmUgRk9STUlEX01BSU5fRk9STSAgICAgICAx DQorDQorI2RlZmluZSBRVUVTVElPTl9SRVNfQ1VSICAgICAgIDENCisjZGVmaW5lIE1BWFNJWkVf UkVTX0NVUiAgICAgICAxNg0KKw0KKyNkZWZpbmUgTEFCRUxfUkVTX05FWFQgICAgICAgICAxDQor I2RlZmluZSBRVUVTVElPTl9SRVNfTkVYVCAgICAgIDINCisNCisjZGVmaW5lIFFVRVNUSU9OX1NB VkVfRVhJVCAgICAgMw0KKyNkZWZpbmUgUVVFU1RJT05fRElTQ0FSRF9FWElUICA0DQorDQorLy8N CisvLyBUaGlzIHN0cnVjdHVyZSBkZXNjcmliZXMgdGhlIGZvcm0gc3RhdGUuIEl0cyBmaWVsZHMg cmVsYXRlIHN0cmljdGx5IHRvIHRoZQ0KKy8vIHZpc3VhbCB3aWRnZXRzIG9uIHRoZSBmb3JtLg0K Ky8vDQordHlwZWRlZiBzdHJ1Y3Qgew0KKyAgVUlOVDE2IEN1cnJlbnRQcmVmZXJyZWRSZXNvbHV0 aW9uW01BWFNJWkVfUkVTX0NVUl07DQorICBVSU5UMzIgTmV4dFByZWZlcnJlZFJlc29sdXRpb247 DQorfSBNQUlOX0ZPUk1fU1RBVEU7DQorDQorI2VuZGlmIC8vIF9QTEFURk9STV9IXw0KZGlmZiAt LWdpdCBhL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9QbGF0Zm9ybUR4ZS9QbGF0 Zm9ybS5pbmYgYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1EeGUv UGxhdGZvcm0uaW5mDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMC4uODA0 YWI1OTYxMA0KLS0tIC9kZXYvbnVsbA0KKysrIGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJv YXJkUGtnL1BsYXRmb3JtRHhlL1BsYXRmb3JtLmluZg0KQEAgLTAsMCArMSw2NSBAQA0KKyMjIEBm aWxlDQorIyAgVGhpcyBkcml2ZXIgZWZmZWN0dWF0ZXMgU2ltaWNzIFg1OCBwbGF0Zm9ybSBjb25m aWd1cmF0aW9uIHNldHRpbmdzIGFuZCBleHBvc2VzDQorIyAgdGhlbSB2aWEgSElJLg0KKyMNCisj ICBDb3B5cmlnaHQgKEMpIDIwMTQsIFJlZCBIYXQsIEluYy4NCisjICBDb3B5cmlnaHQgKGMpIDIw MDkgLSAyMDEwLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQor Iw0KKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCisjDQor IyMNCisNCitbRGVmaW5lc10NCisgIElORl9WRVJTSU9OICAgICAgICAgICAgICAgICAgICA9IDB4 MDAwMTAwMDUNCisgIEJBU0VfTkFNRSAgICAgICAgICAgICAgICAgICAgICA9IFBsYXRmb3JtRHhl DQorICBGSUxFX0dVSUQgICAgICAgICAgICAgICAgICAgICAgPSA3NEI2NERDMS1CMEI2LTQ4NTMt QTZCRC1DNjQyNjA1OUFCMUUNCisgIE1PRFVMRV9UWVBFICAgICAgICAgICAgICAgICAgICA9IERY RV9EUklWRVINCisgIFZFUlNJT05fU1RSSU5HICAgICAgICAgICAgICAgICA9IDEuMA0KKyAgRU5U UllfUE9JTlQgICAgICAgICAgICAgICAgICAgID0gUGxhdGZvcm1Jbml0DQorICBVTkxPQURfSU1B R0UgICAgICAgICAgICAgICAgICAgPSBQbGF0Zm9ybVVubG9hZA0KKw0KK1tTb3VyY2VzXQ0KKyAg UGxhdGZvcm0uYw0KKyAgUGxhdGZvcm0udW5pDQorICBQbGF0Zm9ybUNvbmZpZy5jDQorICBQbGF0 Zm9ybUZvcm1zLnZmcg0KKw0KK1tQYWNrYWdlc10NCisgIE1kZVBrZy9NZGVQa2cuZGVjDQorICBN ZGVNb2R1bGVQa2cvTWRlTW9kdWxlUGtnLmRlYw0KKyAgU2ltaWNzT3BlbkJvYXJkUGtnL1NpbWlj c09wZW5Cb2FyZFBrZy5kZWMNCisgIE1pblBsYXRmb3JtUGtnL01pblBsYXRmb3JtUGtnLmRlYw0K Kw0KK1tMaWJyYXJ5Q2xhc3Nlc10NCisgIEJhc2VMaWINCisgIEJhc2VNZW1vcnlMaWINCisgIERl YnVnTGliDQorICBEZXZpY2VQYXRoTGliDQorICBIaWlMaWINCisgIE1lbW9yeUFsbG9jYXRpb25M aWINCisgIFByaW50TGliDQorICBVZWZpQm9vdFNlcnZpY2VzVGFibGVMaWINCisgIFVlZmlIaWlT ZXJ2aWNlc0xpYg0KKyAgVWVmaUxpYg0KKyAgVWVmaVJ1bnRpbWVTZXJ2aWNlc1RhYmxlTGliDQor ICBVZWZpRHJpdmVyRW50cnlQb2ludA0KKyAgRHhlU2VydmljZXNUYWJsZUxpYg0KKw0KK1tQY2Rd DQorICBnRWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFjZUd1aWQuUGNkVmlkZW9Ib3Jpem9udGFsUmVz b2x1dGlvbg0KKyAgZ0VmaU1kZU1vZHVsZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZFZpZGVvVmVydGlj YWxSZXNvbHV0aW9uDQorDQorW1Byb3RvY29sc10NCisgIGdFZmlEZXZpY2VQYXRoUHJvdG9jb2xH dWlkICAgICAgIyMgUFJPRFVDRVMNCisgIGdFZmlHcmFwaGljc091dHB1dFByb3RvY29sR3VpZCAg IyMgQ09OU1VNRVMNCisgIGdFZmlIaWlDb25maWdBY2Nlc3NQcm90b2NvbEd1aWQgIyMgUFJPRFVD RVMNCisNCitbR3VpZHNdDQorICBnRWZpSWZyVGlhbm9HdWlkDQorICBnU2ltaWNzWDU4UGxhdGZv cm1Db25maWdHdWlkDQorDQorW0RlcGV4XQ0KKyAgZ0VmaUhpaUNvbmZpZ1JvdXRpbmdQcm90b2Nv bEd1aWQgIEFORA0KKyAgZ0VmaUhpaURhdGFiYXNlUHJvdG9jb2xHdWlkICAgICAgIEFORA0KKyAg Z0VmaVZhcmlhYmxlQXJjaFByb3RvY29sR3VpZCAgICAgIEFORA0KKyAgZ0VmaVZhcmlhYmxlV3Jp dGVBcmNoUHJvdG9jb2xHdWlkDQpkaWZmIC0tZ2l0IGEvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3Bl bkJvYXJkUGtnL1BsYXRmb3JtRHhlL1BsYXRmb3JtLnVuaSBiL1BsYXRmb3JtL0ludGVsL1NpbWlj c09wZW5Cb2FyZFBrZy9QbGF0Zm9ybUR4ZS9QbGF0Zm9ybS51bmkNCm5ldyBmaWxlIG1vZGUgMTAw NjQ0DQppbmRleCAwMDAwMDAwMDAwLi42ZDY4Y2JlYjRmDQotLS0gL2Rldi9udWxsDQorKysgYi9Q bGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1EeGUvUGxhdGZvcm0udW5p DQpAQCAtMCwwICsxLDMxIEBADQorLy8gKisrDQorLy8NCisvLyBDb3B5cmlnaHQgKEMpIDIwMTQs IFJlZCBIYXQsIEluYy4NCisvLyBDb3B5cmlnaHQgKGMpIDIwMDksIEludGVsIENvcnBvcmF0aW9u LiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCisvLw0KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQorLy8NCisvLyBNb2R1bGUgTmFtZToNCisvLw0KKy8v ICAgUGxhdGZvcm0udW5pDQorLy8NCisvLyBBYnN0cmFjdDoNCisvLw0KKy8vICAgU3RyaW5nIGRl ZmluaXRpb25zIGZvciBQbGF0Zm9ybUZvcm1zLnZmcg0KKy8vDQorLy8gLS0qLw0KKw0KKy89Iw0K Kw0KKyNsYW5nZGVmIGVuLVVTICJFbmdsaXNoIg0KKw0KKyNzdHJpbmcgU1RSX0ZPUk1TRVRfVElU TEUgICAgICAgICNsYW5ndWFnZSBlbi1VUyAiUVNQIFBsYXRmb3JtIENvbmZpZ3VyYXRpb24iDQor I3N0cmluZyBTVFJfRk9STVNFVF9IRUxQICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICJDaGFuZ2Ug dmFyaW91cyBRU1AgcGxhdGZvcm0gc2V0dGluZ3MuIg0KKyNzdHJpbmcgU1RSX01BSU5fRk9STV9U SVRMRSAgICAgICNsYW5ndWFnZSBlbi1VUyAiUVNQIFNldHRpbmdzIg0KKyNzdHJpbmcgU1RSX1JF U19DVVIgICAgICAgICAgICAgICNsYW5ndWFnZSBlbi1VUyAiUHJlZmVycmVkIFJlc29sdXRpb24g YXQgTmV4dCBCb290Ig0KKyNzdHJpbmcgU1RSX1JFU19DVVJfSEVMUCAgICAgICAgICNsYW5ndWFn ZSBlbi1VUyAiVGhlIHByZWZlcnJlZCByZXNvbHV0aW9uIG9mIHRoZSBHcmFwaGljcyBDb25zb2xl IGF0IG5leHQgYm9vdC4gSXQgbWlnaHQgYmUgdW5zZXQsIG9yIGV2ZW4gaW52YWxpZCAoaGVuY2Ug aWdub3JlZCkgd3J0LiB0aGUgdmlkZW8gUkFNIHNpemUuIg0KKyNzdHJpbmcgU1RSX1JFU19ORVhU ICAgICAgICAgICAgICNsYW5ndWFnZSBlbi1VUyAiQ2hhbmdlIFByZWZlcnJlZCBSZXNvbHV0aW9u IGZvciBOZXh0IEJvb3QiDQorI3N0cmluZyBTVFJfUkVTX05FWFRfSEVMUCAgICAgICAgI2xhbmd1 YWdlIGVuLVVTICJZb3UgY2FuIHNwZWNpZnkgYSBuZXcgcHJlZmVyZW5jZSBmb3IgdGhlIEdyYXBo aWNzIENvbnNvbGUgaGVyZS4gVGhlIGxpc3QgaXMgZmlsdGVyZWQgYWdhaW5zdCB0aGUgdmlkZW8g UkFNIHNpemUuIg0KKyNzdHJpbmcgU1RSX1NBVkVfRVhJVCAgICAgICAgICAgICNsYW5ndWFnZSBl bi1VUyAiQ29tbWl0IENoYW5nZXMgYW5kIEV4aXQiDQorI3N0cmluZyBTVFJfRElTQ0FSRF9FWElU ICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICJEaXNjYXJkIENoYW5nZXMgYW5kIEV4aXQiDQorDQpk aWZmIC0tZ2l0IGEvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1BsYXRmb3JtRHhl L1BsYXRmb3JtQ29uZmlnLmggYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUGxh dGZvcm1EeGUvUGxhdGZvcm1Db25maWcuaA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAw MDAwMDAwMDAuLmQzZjA0MWRkZWENCi0tLSAvZGV2L251bGwNCisrKyBiL1BsYXRmb3JtL0ludGVs L1NpbWljc09wZW5Cb2FyZFBrZy9QbGF0Zm9ybUR4ZS9QbGF0Zm9ybUNvbmZpZy5oDQpAQCAtMCww ICsxLDUxIEBADQorLyoqIEBmaWxlDQorICBVdGlsaXR5IGZ1bmN0aW9ucyBmb3Igc2VyaWFsaXpp bmcgKHBlcnNpc3RlbnRseSBzdG9yaW5nKSBhbmQgZGVzZXJpYWxpemluZw0KKyAgT1ZNRidzIHBs YXRmb3JtIGNvbmZpZ3VyYXRpb24uDQorDQorICBDb3B5cmlnaHQgKEMpIDIwMTQsIFJlZCBIYXQs IEluYy4NCisNCisgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50 DQorKiovDQorDQorI2lmbmRlZiBfUExBVEZPUk1fQ09ORklHX0hfDQorI2RlZmluZSBfUExBVEZP Uk1fQ09ORklHX0hfDQorDQorI2luY2x1ZGUgPEJhc2UuaD4NCisNCisvLw0KKy8vIFRoaXMgc3Ry dWN0dXJlIHBhcnRpY2lwYXRlcyBpbiBkcml2ZXIgY29uZmlndXJhdGlvbi4gSXQgZG9lcyBub3QN CisvLyAobmVjZXNzYXJpbHkpIHJlZmxlY3QgdGhlIHdpcmUgZm9ybWF0IGluIHRoZSBwZXJzaXN0 ZW50IHN0b3JlLg0KKy8vDQorI3ByYWdtYSBwYWNrKDEpDQordHlwZWRlZiBzdHJ1Y3Qgew0KKyAg Ly8NCisgIC8vIHByZWZlcnJlZCBncmFwaGljcyBjb25zb2xlIHJlc29sdXRpb24gd2hlbiBib290 aW5nDQorICAvLw0KKyAgVUlOVDMyIEhvcml6b250YWxSZXNvbHV0aW9uOw0KKyAgVUlOVDMyIFZl cnRpY2FsUmVzb2x1dGlvbjsNCit9IFBMQVRGT1JNX0NPTkZJRzsNCisjcHJhZ21hIHBhY2soKQ0K Kw0KKy8vDQorLy8gUGxlYXNlIHNlZSB0aGUgQVBJIGRvY3VtZW50YXRpb24gbmVhciB0aGUgZnVu Y3Rpb24gZGVmaW5pdGlvbnMuDQorLy8NCitFRklfU1RBVFVTDQorRUZJQVBJDQorUGxhdGZvcm1D b25maWdTYXZlICgNCisgIElOIFBMQVRGT1JNX0NPTkZJRyAqUGxhdGZvcm1Db25maWcNCisgICk7 DQorDQorRUZJX1NUQVRVUw0KK0VGSUFQSQ0KK1BsYXRmb3JtQ29uZmlnTG9hZCAoDQorICBPVVQg UExBVEZPUk1fQ09ORklHICpQbGF0Zm9ybUNvbmZpZywNCisgIE9VVCBVSU5UNjQgICAgICAgICAg Kk9wdGlvbmFsRWxlbWVudHMNCisgICk7DQorDQorLy8NCisvLyBGZWF0dXJlIGZsYWdzIGZvciBP cHRpb25hbEVsZW1lbnRzLg0KKy8vDQorI2RlZmluZSBQTEFURk9STV9DT05GSUdfRl9HUkFQSElD U19SRVNPTFVUSU9OIEJJVDANCisjZGVmaW5lIFBMQVRGT1JNX0NPTkZJR19GX0RPV05HUkFERSAg ICAgICAgICAgQklUNjMNCisNCisjZW5kaWYgLy8gX1BMQVRGT1JNX0NPTkZJR19IXw0KZGlmZiAt LWdpdCBhL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9QbGF0Zm9ybUR4ZS9QbGF0 Zm9ybUZvcm1zLnZmciBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9QbGF0Zm9y bUR4ZS9QbGF0Zm9ybUZvcm1zLnZmcg0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAw MDAwMDAuLjFjMDI1NjVlYmINCi0tLSAvZGV2L251bGwNCisrKyBiL1BsYXRmb3JtL0ludGVsL1Np bWljc09wZW5Cb2FyZFBrZy9QbGF0Zm9ybUR4ZS9QbGF0Zm9ybUZvcm1zLnZmcg0KQEAgLTAsMCAr MSw2NyBAQA0KKy8vICorKw0KKy8vDQorLy8gQ29weXJpZ2h0IChDKSAyMDE0LCBSZWQgSGF0LCBJ bmMuDQorLy8gQ29weXJpZ2h0IChjKSAyMDA5IC0gMjAxMSwgSW50ZWwgQ29ycG9yYXRpb24uIEFs bCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KKy8vDQorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6 IEJTRC0yLUNsYXVzZS1QYXRlbnQNCisvLw0KKy8vIE1vZHVsZSBOYW1lOg0KKy8vDQorLy8gICBQ bGF0Zm9ybUZvcm1zLnZmcg0KKy8vDQorLy8gQWJzdHJhY3Q6DQorLy8NCisvLyAgIEZvcm0gZGVm aW5pdGlvbnMgZm9yIGV4cG9zaW5nIHNvbWUgb2YgT1ZNRidzIHBsYXRmb3JtIGtub2JzIHZpYSBI SUkuDQorLy8NCisvLyAtLSovDQorDQorI2luY2x1ZGUgPEd1aWQvU2ltaWNzWDU4UGxhdGZvcm1D b25maWcuaD4NCisjaW5jbHVkZSAiUGxhdGZvcm0uaCINCisNCitmb3Jtc2V0DQorICBndWlkICA9 IFNJTUlDU1g1OF9QTEFURk9STV9DT05GSUdfR1VJRCwNCisgIHRpdGxlID0gU1RSSU5HX1RPS0VO KFNUUl9GT1JNU0VUX1RJVExFKSwNCisgIGhlbHAgID0gU1RSSU5HX1RPS0VOKFNUUl9GT1JNU0VU X0hFTFApLA0KKw0KKyAgdmFyc3RvcmUgTUFJTl9GT1JNX1NUQVRFLA0KKyAgICB2YXJpZCA9IEZP Uk1TVEFURUlEX01BSU5fRk9STSwNCisgICAgbmFtZSAgPSBNYWluRm9ybVN0YXRlLA0KKyAgICBn dWlkICA9IFNJTUlDU1g1OF9QTEFURk9STV9DT05GSUdfR1VJRDsNCisNCisgIGZvcm0NCisgICAg Zm9ybWlkID0gRk9STUlEX01BSU5fRk9STSwNCisgICAgdGl0bGUgID0gU1RSSU5HX1RPS0VOKFNU Ul9NQUlOX0ZPUk1fVElUTEUpOw0KKw0KKyAgICAvLw0KKyAgICAvLyBEaXNwbGF5IHRoZSBjdXJy ZW50IHByZWZlcmVuY2UgaW4gYSByZWFkLW9ubHkgc3RyaW5nIGZpZWxkLg0KKyAgICAvLw0KKyAg ICBzdHJpbmcNCisgICAgICB2YXJpZCAgICAgID0gTWFpbkZvcm1TdGF0ZS5DdXJyZW50UHJlZmVy cmVkUmVzb2x1dGlvbiwNCisgICAgICBxdWVzdGlvbmlkID0gUVVFU1RJT05fUkVTX0NVUiwNCisg ICAgICBwcm9tcHQgICAgID0gU1RSSU5HX1RPS0VOKFNUUl9SRVNfQ1VSKSwNCisgICAgICBoZWxw ICAgICAgID0gU1RSSU5HX1RPS0VOKFNUUl9SRVNfQ1VSX0hFTFApLA0KKyAgICAgIGZsYWdzICAg ICAgPSBSRUFEX09OTFksDQorICAgICAgbWluc2l6ZSAgICA9IDAsDQorICAgICAgbWF4c2l6ZSAg ICA9IE1BWFNJWkVfUkVTX0NVUiwNCisgICAgZW5kc3RyaW5nOw0KKw0KKyAgICAvLw0KKyAgICAv LyBXZSdsbCBkeW5hbWljYWxseSBnZW5lcmF0ZSBhIG9uZS1vZi1tYW55IHNlbGVjdGlvbiBhdCB0 aGlzIGxhYmVsLg0KKyAgICAvLw0KKyAgICBsYWJlbCBMQUJFTF9SRVNfTkVYVDsNCisNCisgICAg dGV4dA0KKyAgICAgIGhlbHAgID0gU1RSSU5HX1RPS0VOKFNUUl9TQVZFX0VYSVQpLA0KKyAgICAg IHRleHQgID0gU1RSSU5HX1RPS0VOKFNUUl9TQVZFX0VYSVQpLA0KKyAgICAgIGZsYWdzID0gSU5U RVJBQ1RJVkUsDQorICAgICAga2V5ICAgPSBRVUVTVElPTl9TQVZFX0VYSVQ7DQorDQorICAgIHRl eHQNCisgICAgICBoZWxwICA9IFNUUklOR19UT0tFTihTVFJfRElTQ0FSRF9FWElUKSwNCisgICAg ICB0ZXh0ICA9IFNUUklOR19UT0tFTihTVFJfRElTQ0FSRF9FWElUKSwNCisgICAgICBmbGFncyA9 IElOVEVSQUNUSVZFLA0KKyAgICAgIGtleSAgID0gUVVFU1RJT05fRElTQ0FSRF9FWElUOw0KKw0K KyAgZW5kZm9ybTsNCisNCitlbmRmb3Jtc2V0Ow0KZGlmZiAtLWdpdCBhL1BsYXRmb3JtL0ludGVs L1NpbWljc09wZW5Cb2FyZFBrZy9QbGF0Zm9ybVBlaS9DbW9zLmggYi9QbGF0Zm9ybS9JbnRlbC9T aW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1QZWkvQ21vcy5oDQpuZXcgZmlsZSBtb2RlIDEwMDY0 NA0KaW5kZXggMDAwMDAwMDAwMC4uNjE2ZDJkNzRjYg0KLS0tIC9kZXYvbnVsbA0KKysrIGIvUGxh dGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1BsYXRmb3JtUGVpL0Ntb3MuaA0KQEAgLTAs MCArMSw1MCBAQA0KKy8qKiBAZmlsZQ0KKyAgUEMvQVQgQ01PUyBhY2Nlc3Mgcm91dGluZXMNCisN CisgIENvcHlyaWdodCAoYykgMjAwNiAtIDIwMDkgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdo dHMgcmVzZXJ2ZWQuIDxCUj4NCisNCisgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1D bGF1c2UtUGF0ZW50DQorKiovDQorDQorI2lmbmRlZiBfX0NNT1NfSF9fDQorI2RlZmluZSBfX0NN T1NfSF9fDQorDQorLyoqDQorICBSZWFkcyA4LWJpdHMgb2YgQ01PUyBkYXRhLg0KKw0KKyAgUmVh ZHMgdGhlIDgtYml0cyBvZiBDTU9TIGRhdGEgYXQgdGhlIGxvY2F0aW9uIHNwZWNpZmllZCBieSBJ bmRleC4NCisgIFRoZSA4LWJpdCByZWFkIHZhbHVlIGlzIHJldHVybmVkLg0KKw0KKyAgQHBhcmFt ICBJbmRleCAgVGhlIENNT1MgbG9jYXRpb24gdG8gcmVhZC4NCisNCisgIEByZXR1cm4gVGhlIHZh bHVlIHJlYWQuDQorDQorKiovDQorVUlOVDgNCitFRklBUEkNCitDbW9zUmVhZDggKA0KKyAgSU4g ICAgICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIEluZGV4DQorICApOw0KKw0KKy8qKg0KKyAg V3JpdGVzIDgtYml0cyBvZiBDTU9TIGRhdGEuDQorDQorICBXcml0ZXMgOC1iaXRzIG9mIENNT1Mg ZGF0YSB0byB0aGUgbG9jYXRpb24gc3BlY2lmaWVkIGJ5IEluZGV4DQorICB3aXRoIHRoZSB2YWx1 ZSBzcGVjaWZpZWQgYnkgVmFsdWUgYW5kIHJldHVybnMgVmFsdWUuDQorDQorICBAcGFyYW0gIElu ZGV4ICBUaGUgQ01PUyBsb2NhdGlvbiB0byB3cml0ZS4NCisgIEBwYXJhbSAgVmFsdWUgIFRoZSB2 YWx1ZSB0byB3cml0ZSB0byBDTU9TLg0KKw0KKyAgQHJldHVybiBUaGUgdmFsdWUgd3JpdHRlbiB0 byBDTU9TLg0KKw0KKyoqLw0KK1VJTlQ4DQorRUZJQVBJDQorQ21vc1dyaXRlOCAoDQorICBJTiAg ICAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgSW5kZXgsDQorICBJTiAgICAgIFVJTlQ4ICAg ICAgICAgICAgICAgICAgICAgVmFsdWUNCisgICk7DQorDQorDQorI2VuZGlmDQorDQpkaWZmIC0t Z2l0IGEvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1BsYXRmb3JtUGVpL1BsYXRm b3JtLmggYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1QZWkvUGxh dGZvcm0uaA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAuLjViMWE5YjVm NTcNCi0tLSAvZGV2L251bGwNCisrKyBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBr Zy9QbGF0Zm9ybVBlaS9QbGF0Zm9ybS5oDQpAQCAtMCwwICsxLDkzIEBADQorLyoqIEBmaWxlDQor ICBQbGF0Zm9ybSBQRUkgbW9kdWxlIGluY2x1ZGUgZmlsZS4NCisNCisgIENvcHlyaWdodCAoYykg MjAwNiAtIDIwMTYgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuIDxCUj4N CisNCisgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQorKiov DQorDQorI2lmbmRlZiBfUExBVEZPUk1fUEVJX0hfSU5DTFVERURfDQorI2RlZmluZSBfUExBVEZP Uk1fUEVJX0hfSU5DTFVERURfDQorDQorVk9JRA0KK0FkZElvTWVtb3J5QmFzZVNpemVIb2IgKA0K KyAgRUZJX1BIWVNJQ0FMX0FERFJFU1MgICAgICAgIE1lbW9yeUJhc2UsDQorICBVSU5UNjQgICAg ICAgICAgICAgICAgICAgICAgTWVtb3J5U2l6ZQ0KKyAgKTsNCisNCitWT0lEDQorQWRkSW9NZW1v cnlSYW5nZUhvYiAoDQorICBFRklfUEhZU0lDQUxfQUREUkVTUyAgICAgICAgTWVtb3J5QmFzZSwN CisgIEVGSV9QSFlTSUNBTF9BRERSRVNTICAgICAgICBNZW1vcnlMaW1pdA0KKyAgKTsNCisNCitW T0lEDQorQWRkTWVtb3J5QmFzZVNpemVIb2IgKA0KKyAgRUZJX1BIWVNJQ0FMX0FERFJFU1MgICAg ICAgIE1lbW9yeUJhc2UsDQorICBVSU5UNjQgICAgICAgICAgICAgICAgICAgICAgTWVtb3J5U2l6 ZQ0KKyAgKTsNCisNCitWT0lEDQorQWRkTWVtb3J5UmFuZ2VIb2IgKA0KKyAgRUZJX1BIWVNJQ0FM X0FERFJFU1MgICAgICAgIE1lbW9yeUJhc2UsDQorICBFRklfUEhZU0lDQUxfQUREUkVTUyAgICAg ICAgTWVtb3J5TGltaXQNCisgICk7DQorDQorVk9JRA0KK0FkZFVudGVzdGVkTWVtb3J5QmFzZVNp emVIb2IgKA0KKyAgRUZJX1BIWVNJQ0FMX0FERFJFU1MgICAgICAgIE1lbW9yeUJhc2UsDQorICBV SU5UNjQgICAgICAgICAgICAgICAgICAgICAgTWVtb3J5U2l6ZQ0KKyAgKTsNCisNCitWT0lEDQor QWRkUmVzZXJ2ZWRNZW1vcnlCYXNlU2l6ZUhvYiAoDQorICBFRklfUEhZU0lDQUxfQUREUkVTUyAg ICAgICAgTWVtb3J5QmFzZSwNCisgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgICBNZW1vcnlT aXplLA0KKyAgQk9PTEVBTiAgICAgICAgICAgICAgICAgICAgIENhY2hlYWJsZQ0KKyAgKTsNCisN CitWT0lEDQorQWRkcmVzc1dpZHRoSW5pdGlhbGl6YXRpb24gKA0KKyAgVk9JRA0KKyAgKTsNCisN CitWT0lEDQorWDU4VHNlZ01ieXRlc0luaXRpYWxpemF0aW9uICgNCisgIFZPSUQNCisgICk7DQor DQorRUZJX1NUQVRVUw0KK1B1Ymxpc2hQZWlNZW1vcnkgKA0KKyAgVk9JRA0KKyAgKTsNCisNCitV SU5UMzINCitHZXRTeXN0ZW1NZW1vcnlTaXplQmVsb3c0Z2IgKA0KKyAgVk9JRA0KKyAgKTsNCisN CitWT0lEDQorSW5pdGlhbGl6ZVJhbVJlZ2lvbnMgKA0KKyAgVk9JRA0KKyAgKTsNCisNCitFRklf U1RBVFVTDQorUGVpRnZJbml0aWFsaXphdGlvbiAoDQorICBWT0lEDQorICApOw0KKw0KK1ZPSUQN CitJbnN0YWxsRmVhdHVyZUNvbnRyb2xDYWxsYmFjayAoDQorICBWT0lEDQorICApOw0KKw0KK2V4 dGVybiBFRklfQk9PVF9NT0RFIG1Cb290TW9kZTsNCisNCitleHRlcm4gQk9PTEVBTiBtUzNTdXBw b3J0ZWQ7DQorDQorZXh0ZXJuIFVJTlQ4IG1QaHlzTWVtQWRkcmVzc1dpZHRoOw0KKw0KK2V4dGVy biBVSU5UMzIgbU1heENwdUNvdW50Ow0KKw0KK2V4dGVybiBVSU5UMTYgbUhvc3RCcmlkZ2VEZXZJ ZDsNCisjZW5kaWYgLy8gX1BMQVRGT1JNX1BFSV9IX0lOQ0xVREVEXw0KZGlmZiAtLWdpdCBhL1Bs YXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9QbGF0Zm9ybVBlaS9QbGF0Zm9ybVBlaS5p bmYgYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1QZWkvUGxhdGZv cm1QZWkuaW5mDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMC4uZWI4MDQ4 YzY1NQ0KLS0tIC9kZXYvbnVsbA0KKysrIGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJk UGtnL1BsYXRmb3JtUGVpL1BsYXRmb3JtUGVpLmluZg0KQEAgLTAsMCArMSwxMDkgQEANCisjIyBA ZmlsZQ0KKyMgIFBsYXRmb3JtIFBFSSBkcml2ZXINCisjDQorIyAgVGhpcyBtb2R1bGUgcHJvdmlk ZXMgcGxhdGZvcm0gc3BlY2lmaWMgZnVuY3Rpb24gdG8gZGV0ZWN0IGJvb3QgbW9kZS4NCisjIENv cHlyaWdodCAoYykgMjAwNiAtIDIwMTggSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVz ZXJ2ZWQuIDxCUj4NCisjDQorIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNl LVBhdGVudA0KKyMNCisjIw0KKw0KK1tEZWZpbmVzXQ0KKyAgSU5GX1ZFUlNJT04gICAgICAgICAg ICAgICAgICAgID0gMHgwMDAxMDAwNQ0KKyAgQkFTRV9OQU1FICAgICAgICAgICAgICAgICAgICAg ID0gUGxhdGZvcm1QZWkNCisgIEZJTEVfR1VJRCAgICAgICAgICAgICAgICAgICAgICA9IDA1MTE2 MjE4LWY5ZjEtNDFmOC04ZDE3LWMyMjA3MDA2ZmZmZg0KKyAgTU9EVUxFX1RZUEUgICAgICAgICAg ICAgICAgICAgID0gUEVJTQ0KKyAgVkVSU0lPTl9TVFJJTkcgICAgICAgICAgICAgICAgID0gMS4w DQorICBFTlRSWV9QT0lOVCAgICAgICAgICAgICAgICAgICAgPSBJbml0aWFsaXplUGxhdGZvcm0N CisNCisjDQorIyBUaGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIGlzIGZvciByZWZlcmVuY2Ugb25s eSBhbmQgbm90IHJlcXVpcmVkIGJ5IHRoZSBidWlsZCB0b29scy4NCisjDQorIyAgVkFMSURfQVJD SElURUNUVVJFUyAgICAgICAgICAgPSBJQTMyIFg2NCBFQkMNCisjDQorDQorW1NvdXJjZXNdDQor ICBDbW9zLmMNCisgIEZlYXR1cmVDb250cm9sLmMNCisgIEZ2LmMNCisgIE1lbURldGVjdC5jDQor ICBQbGF0Zm9ybS5jDQorDQorW1BhY2thZ2VzXQ0KKyAgTWRlUGtnL01kZVBrZy5kZWMNCisgIE1k ZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQorICBVZWZpQ3B1UGtnL1VlZmlDcHVQa2cuZGVj DQorICBTaW1pY3NPcGVuQm9hcmRQa2cvU2ltaWNzT3BlbkJvYXJkUGtnLmRlYw0KKyAgTWluUGxh dGZvcm1Qa2cvTWluUGxhdGZvcm1Qa2cuZGVjDQorICBPdm1mUGtnL092bWZQa2cuZGVjDQorDQor W0d1aWRzXQ0KKyAgZ0VmaU1lbW9yeVR5cGVJbmZvcm1hdGlvbkd1aWQNCisgIGdFZmlTbW1QZWlT bXJhbU1lbW9yeVJlc2VydmVHdWlkICAgICAgICAgICAgICAjIyBDT05TVU1FUw0KKw0KK1tMaWJy YXJ5Q2xhc3Nlc10NCisgIEJhc2VMaWINCisgIERlYnVnTGliDQorICBIb2JMaWINCisgIElvTGli DQorICBQY2lMaWINCisgIFBlaVJlc291cmNlUHVibGljYXRpb25MaWINCisgIFBlaVNlcnZpY2Vz TGliDQorICBQZWlTZXJ2aWNlc1RhYmxlUG9pbnRlckxpYg0KKyAgUGVpbUVudHJ5UG9pbnQNCisg IE10cnJMaWINCisgIFBjZExpYg0KKw0KK1tQY2RdDQorICBnU2ltaWNzWDU4UGtnVG9rZW5TcGFj ZUd1aWQuUGNkU2ltaWNzUGVpTWVtRnZCYXNlDQorICBnU2ltaWNzWDU4UGtnVG9rZW5TcGFjZUd1 aWQuUGNkU2ltaWNzUGVpTWVtRnZTaXplDQorICBnU2ltaWNzWDU4UGtnVG9rZW5TcGFjZUd1aWQu UGNkU2ltaWNzRHhlTWVtRnZCYXNlDQorICBnU2ltaWNzWDU4UGtnVG9rZW5TcGFjZUd1aWQuUGNk U2ltaWNzRHhlTWVtRnZTaXplDQorICBnU2ltaWNzWDU4UGtnVG9rZW5TcGFjZUd1aWQuUGNkU2lt aWNzTG9ja0JveFN0b3JhZ2VCYXNlDQorICBnU2ltaWNzWDU4UGtnVG9rZW5TcGFjZUd1aWQuUGNk U2ltaWNzTG9ja0JveFN0b3JhZ2VTaXplDQorICBnU2ltaWNzWDU4UGtnVG9rZW5TcGFjZUd1aWQu UGNkU2ltaWNzUGVpTWVtRnZCYXNlDQorICBnU2ltaWNzWDU4UGtnVG9rZW5TcGFjZUd1aWQuUGNk U2ltaWNzUGVpTWVtRnZTaXplDQorICBnU2ltaWNzWDU4UGtnVG9rZW5TcGFjZUd1aWQuUGNkU2lt aWNzRHhlTWVtRnZCYXNlDQorICBnU2ltaWNzWDU4UGtnVG9rZW5TcGFjZUd1aWQuUGNkU2ltaWNz RHhlTWVtRnZTaXplDQorICBnU2ltaWNzWDU4UGtnVG9rZW5TcGFjZUd1aWQuUGNkU2ltaWNzU2Vj UGFnZVRhYmxlc0Jhc2UNCisgIGdTaW1pY3NYNThQa2dUb2tlblNwYWNlR3VpZC5QY2RTaW1pY3NT ZWNQZWlUZW1wUmFtQmFzZQ0KKyAgZ1NpbWljc1g1OFBrZ1Rva2VuU3BhY2VHdWlkLlBjZFNpbWlj c1NlY1BlaVRlbXBSYW1TaXplDQorICBnRWZpTWRlUGtnVG9rZW5TcGFjZUd1aWQuUGNkR3VpZGVk RXh0cmFjdEhhbmRsZXJUYWJsZUFkZHJlc3MNCisgIGdTaW1pY3NYNThQa2dUb2tlblNwYWNlR3Vp ZC5QY2RHdWlkZWRFeHRyYWN0SGFuZGxlclRhYmxlU2l6ZQ0KKyAgZ1NpbWljc1g1OFBrZ1Rva2Vu U3BhY2VHdWlkLlBjZFNpbWljc0RlY29tcHJlc3Npb25TY3JhdGNoRW5kDQorICBnU2ltaWNzWDU4 UGtnVG9rZW5TcGFjZUd1aWQuUGNkU2ltaWNzWDU4SG9zdEJyaWRnZVBjaURldklkDQorICBnU2lt aWNzWDU4UGtnVG9rZW5TcGFjZUd1aWQuUGNkUGNpSW9CYXNlDQorICBnU2ltaWNzWDU4UGtnVG9r ZW5TcGFjZUd1aWQuUGNkUGNpSW9TaXplDQorICBnU2ltaWNzWDU4UGtnVG9rZW5TcGFjZUd1aWQu UGNkUGNpTW1pbzMyQmFzZQ0KKyAgZ1NpbWljc1g1OFBrZ1Rva2VuU3BhY2VHdWlkLlBjZFBjaU1t aW8zMlNpemUNCisgIGdTaW1pY3NYNThQa2dUb2tlblNwYWNlR3VpZC5QY2RQY2lNbWlvNjRCYXNl DQorICBnU2ltaWNzWDU4UGtnVG9rZW5TcGFjZUd1aWQuUGNkUGNpTW1pbzY0U2l6ZQ0KKyAgZ1Np bWljc1g1OFBrZ1Rva2VuU3BhY2VHdWlkLlBjZFNpbWljc0RlY29tcHJlc3Npb25TY3JhdGNoRW5k DQorICBnU2ltaWNzWDU4UGtnVG9rZW5TcGFjZUd1aWQuUGNkWDU4VHNlZ01ieXRlcw0KKyAgZ1Np bWljc1g1OFBrZ1Rva2VuU3BhY2VHdWlkLlBjZFNtbVNtcmFtUmVxdWlyZQ0KKyAgZ0VmaU1kZU1v ZHVsZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZFZhcmlhYmxlU3RvcmVTaXplDQorICBnRWZpTWRlTW9k dWxlUGtnVG9rZW5TcGFjZUd1aWQuUGNkRmxhc2hOdlN0b3JhZ2VGdHdTcGFyZVNpemUNCisgIGdF ZmlNZGVNb2R1bGVQa2dUb2tlblNwYWNlR3VpZC5QY2RGbGFzaE52U3RvcmFnZVZhcmlhYmxlU2l6 ZQ0KKyAgZ0VmaU1kZU1vZHVsZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZEVtdVZhcmlhYmxlTnZTdG9y ZVJlc2VydmVkDQorICBnRWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFjZUd1aWQuUGNkRHhlSXBsU3dp dGNoVG9Mb25nTW9kZQ0KKyAgZ0VmaU1kZU1vZHVsZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZFVzZTFH UGFnZVRhYmxlDQorICBnRWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFjZUd1aWQuUGNkQWNwaVMzRW5h YmxlDQorICBnVWVmaUNwdVBrZ1Rva2VuU3BhY2VHdWlkLlBjZENwdUxvY2FsQXBpY0Jhc2VBZGRy ZXNzDQorICBnVWVmaUNwdVBrZ1Rva2VuU3BhY2VHdWlkLlBjZENwdU1heExvZ2ljYWxQcm9jZXNz b3JOdW1iZXINCisgIGdVZWZpQ3B1UGtnVG9rZW5TcGFjZUd1aWQuUGNkQ3B1QXBJbml0VGltZU91 dEluTWljcm9TZWNvbmRzDQorICBnVWVmaUNwdVBrZ1Rva2VuU3BhY2VHdWlkLlBjZENwdUFwU3Rh Y2tTaXplDQorICBnTWluUGxhdGZvcm1Qa2dUb2tlblNwYWNlR3VpZC5QY2RGbGFzaEFyZWFCYXNl QWRkcmVzcyAgIyMgQ09OU1VNRVMNCisgIGdNaW5QbGF0Zm9ybVBrZ1Rva2VuU3BhY2VHdWlkLlBj ZEZsYXNoQXJlYVNpemUgICAgICAgICAjIyBDT05TVU1FUw0KKyAgZ01pblBsYXRmb3JtUGtnVG9r ZW5TcGFjZUd1aWQuUGNkSW9BcGljSWQNCisNCitbRml4ZWRQY2RdDQorICBnRWZpTWRlUGtnVG9r ZW5TcGFjZUd1aWQuUGNkUGNpRXhwcmVzc0Jhc2VBZGRyZXNzDQorDQorDQorW1BwaXNdDQorICBn RWZpUGVpTWFzdGVyQm9vdE1vZGVQcGlHdWlkDQorICBnRWZpUGVpTXBTZXJ2aWNlc1BwaUd1aWQN CisNCitbRGVwZXhdDQorICBUUlVFDQorDQpkaWZmIC0tZ2l0IGEvUGxhdGZvcm0vSW50ZWwvU2lt aWNzT3BlbkJvYXJkUGtnL1BvbGljeS9MaWJyYXJ5L1NpbGljb25Qb2xpY3lJbml0TGliL1NpbGlj b25Qb2xpY3lJbml0TGliLmluZiBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9Q b2xpY3kvTGlicmFyeS9TaWxpY29uUG9saWN5SW5pdExpYi9TaWxpY29uUG9saWN5SW5pdExpYi5p bmYNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwLi5iOWJjYjVkMmJkDQot LS0gL2Rldi9udWxsDQorKysgYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUG9s aWN5L0xpYnJhcnkvU2lsaWNvblBvbGljeUluaXRMaWIvU2lsaWNvblBvbGljeUluaXRMaWIuaW5m DQpAQCAtMCwwICsxLDM4IEBADQorIyMgQGZpbGUNCisjDQorIyBDb3B5cmlnaHQgKGMpIDIwMTgg SW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuIDxCUj4NCisjDQorIyBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KKyMNCisjIw0KKw0KK1tE ZWZpbmVzXQ0KKyAgSU5GX1ZFUlNJT04gICAgICAgICAgPSAweDAwMDEwMDA1DQorICBCQVNFX05B TUUgICAgICAgICAgICA9IFNpbGljb25Qb2xpY3lJbml0TGliDQorICBGSUxFX0dVSUQgICAgICAg ICAgICA9IEI0OTRERjM5LUE1RjgtNDhBMS1CMkQwLUVGNTIzQUQ5MUM1NQ0KKyAgTU9EVUxFX1RZ UEUgICAgICAgICAgPSBQRUlNDQorICBWRVJTSU9OX1NUUklORyAgICAgICA9IDEuMA0KKyAgTElC UkFSWV9DTEFTUyAgICAgICAgPSBTaWxpY29uUG9saWN5SW5pdExpYg0KKw0KK1tTb3VyY2VzXQ0K KyAgU2lsaWNvblBvbGljeUluaXRMaWIuYw0KKw0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQor Iw0KKyMgUGFja2FnZSBEZXBlbmRlbmN5IFNlY3Rpb24gLSBsaXN0IG9mIFBhY2thZ2UgZmlsZXMg dGhhdCBhcmUgcmVxdWlyZWQgZm9yDQorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRo aXMgbW9kdWxlLg0KKyMNCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KK1tQYWNrYWdlc10NCisg IE1kZVBrZy9NZGVQa2cuZGVjDQorDQorW0xpYnJhcnlDbGFzc2VzXQ0KKyAgQmFzZU1lbW9yeUxp Yg0KKyAgQmFzZUxpYg0KKyAgRGVidWdMaWINCisgIERlYnVnUHJpbnRFcnJvckxldmVsTGliDQor ICBIb2JMaWINCisgIElvTGliDQorICBNZW1vcnlBbGxvY2F0aW9uTGliDQorICBQZWlTZXJ2aWNl c0xpYg0KKw0KZGlmZiAtLWdpdCBhL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9Q b2xpY3kvTGlicmFyeS9TaWxpY29uUG9saWN5VXBkYXRlTGliL1NpbGljb25Qb2xpY3lVcGRhdGVM aWIuaW5mIGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1BvbGljeS9MaWJyYXJ5 L1NpbGljb25Qb2xpY3lVcGRhdGVMaWIvU2lsaWNvblBvbGljeVVwZGF0ZUxpYi5pbmYNCm5ldyBm aWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwLi5kYTE2NWFjOTQ3DQotLS0gL2Rldi9u dWxsDQorKysgYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUG9saWN5L0xpYnJh cnkvU2lsaWNvblBvbGljeVVwZGF0ZUxpYi9TaWxpY29uUG9saWN5VXBkYXRlTGliLmluZg0KQEAg LTAsMCArMSwzNSBAQA0KKyMjIEBmaWxlDQorIw0KKyMgQ29weXJpZ2h0IChjKSAyMDE4IEludGVs IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLiA8QlI+DQorIw0KKyMgU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCisjDQorIyMNCisNCitbRGVmaW5l c10NCisgIElORl9WRVJTSU9OICAgICAgICAgICAgICAgICAgICA9IDB4MDAwMTAwMDUNCisgIEJB U0VfTkFNRSAgICAgICAgICAgICAgICAgICAgICA9IFNpbGljb25Qb2xpY3lVcGRhdGVMaWINCisg IEZJTEVfR1VJRCAgICAgICAgICAgICAgICAgICAgICA9IDZFQTk1ODVDLTNDMTUtNDdkYS05RkZD LTI1RTlFNEVBNEQwQw0KKyAgTU9EVUxFX1RZUEUgICAgICAgICAgICAgICAgICAgID0gUEVJTQ0K KyAgVkVSU0lPTl9TVFJJTkcgICAgICAgICAgICAgICAgID0gMS4wDQorICBMSUJSQVJZX0NMQVNT ICAgICAgICAgICAgICAgICAgPSBTaWxpY29uUG9saWN5VXBkYXRlTGliDQorDQorW1NvdXJjZXNd DQorICBTaWxpY29uUG9saWN5VXBkYXRlTGliLmMNCisNCitbUGFja2FnZXNdDQorICBNZGVQa2cv TWRlUGtnLmRlYw0KKyAgTWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMNCisNCitbTGlicmFy eUNsYXNzZXNdDQorICBIb2JMaWINCisgIElvTGliDQorICBQY2RMaWINCisNCitbUGNkXQ0KKw0K K1tGaXhlZFBjZF0NCisNCitbUHBpc10NCisNCitbR3VpZHNdDQpkaWZmIC0tZ2l0IGEvUGxhdGZv cm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1NpbWljc09wZW5Cb2FyZFBrZy5kZWMgYi9QbGF0 Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvU2ltaWNzT3BlbkJvYXJkUGtnLmRlYw0KbmV3 IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAuLjE3Yzg3YWNhOGMNCi0tLSAvZGV2 L251bGwNCisrKyBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9TaW1pY3NPcGVu Qm9hcmRQa2cuZGVjDQpAQCAtMCwwICsxLDE2OCBAQA0KKyMjIEBmaWxlDQorIyAgRUZJL0ZyYW1l d29yayBTaW1pY3MgWDU4IHBsYXRmb3JtDQorIw0KKyMgQ29weXJpZ2h0IChjKSAyMDE4IEludGVs IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLiA8QlI+DQorIw0KKyMgU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCisjDQorIyMNCisNCitbRGVmaW5l c10NCisgIERFQ19TUEVDSUZJQ0FUSU9OICAgICAgICAgICAgICA9IDB4MDAwMTAwMDUNCisgIFBB Q0tBR0VfTkFNRSAgICAgICAgICAgICAgICAgICA9IFNpbWljc1g1OFBrZw0KKyAgUEFDS0FHRV9H VUlEICAgICAgICAgICAgICAgICAgID0gRTZBMDNFMEQtNTk0NC00ZGM2LTkyOTItMDkwRDYwOUVE RDNBDQorICBQQUNLQUdFX1ZFUlNJT04gICAgICAgICAgICAgICAgPSAwLjENCisNCitbSW5jbHVk ZXNdDQorICBJbmNsdWRlDQorICANCitbR3VpZHNdDQorICBnU2ltaWNzWDU4UGtnVG9rZW5TcGFj ZUd1aWQgICA9IHsweDViMjc2ZDIwLCAweDM3ZDAsIDB4NGFmMCwgezB4OGQsIDB4MDQsIDB4NDcs IDB4OTEsIDB4MmIsIDB4N2MsIDB4MWQsIDB4NDR9fQ0KKyAgZ1NpbWljc1g1OFBsYXRmb3JtQ29u ZmlnR3VpZCAgPSB7MHhlZWQzNWY1NywgMHg0ZmYyLCAweDQyNDQsIHsweGI4LCAweDNhLCAweGVh LCAweDcxLCAweDVmLCAweGQzLCAweDU5LCAweGE1fX0NCisNCitbUHJvdG9jb2xzXQ0KKyAgZ0Vm aUxlZ2FjeTgyNTlQcm90b2NvbEd1aWQgICAgICAgICAgPSB7MHgzODMyMWRiYSwgMHg0ZmUwLCAw eDRlMTcsIHsweDhhLCAweGVjLCAweDQxLCAweDMwLCAweDU1LCAweGVhLCAweGVkLCAweGMxfX0N CisgIGdFZmlJc2FBY3BpUHJvdG9jb2xHdWlkICAgICAgICAgICAgID0gezB4NjRhODkyZGMsIDB4 NTU2MSwgMHg0NTM2LCB7MHg5MiwgMHhjNywgMHg3OSwgMHg5YiwgMHhmYywgMHgxOCwgMHgzMywg MHg1NX19DQorICBnRWZpSXNhSW9Qcm90b2NvbEd1aWQgICAgICAgICAgICAgICA9IHsweDdlZTJi ZDQ0LCAweDNkYTAsIDB4MTFkNCwgezB4OWEsIDB4MzgsIDB4MCwgMHg5MCwgMHgyNywgMHgzZiwg MHhjMSwgMHg0ZH19DQorDQorW1BjZHNGaXhlZEF0QnVpbGRdDQorICBnU2ltaWNzWDU4UGtnVG9r ZW5TcGFjZUd1aWQuUGNkU2ltaWNzUGVpTWVtRnZCYXNlfDB4MHxVSU5UMzJ8MA0KKyAgZ1NpbWlj c1g1OFBrZ1Rva2VuU3BhY2VHdWlkLlBjZFNpbWljc1BlaU1lbUZ2U2l6ZXwweDB8VUlOVDMyfDEN CisgIGdTaW1pY3NYNThQa2dUb2tlblNwYWNlR3VpZC5QY2RTaW1pY3NEeGVNZW1GdkJhc2V8MHgw fFVJTlQzMnwweDE1DQorICBnU2ltaWNzWDU4UGtnVG9rZW5TcGFjZUd1aWQuUGNkU2ltaWNzRHhl TWVtRnZTaXplfDB4MHxVSU5UMzJ8MHgxNg0KKyAgDQorICAjVE9ETzogUmVtb3ZlIHRoZXNlIHR3 byB3aGVuIHdlIGludGVncmF0ZSBuZXcgUGxhdGZvcm1QZWkNCisgIGdTaW1pY3NYNThQa2dUb2tl blNwYWNlR3VpZC5QY2RTaW1pY3NNZW1GdkJhc2V8MHgwMDgwMDAwMHxVSU5UMzJ8Mg0KKyAgZ1Np bWljc1g1OFBrZ1Rva2VuU3BhY2VHdWlkLlBjZFNpbWljc01lbUZ2U2l6ZXwweDAwNTAwMDAwfFVJ TlQzMnwzDQorDQorICAjIyBUaGUgZm9sbG93aW5nIHNldHRpbmcgY29udHJvbHMgaG93IG1hbnkg bWVnYWJ5dGVzIHdlIGNvbmZpZ3VyZSBhcyBUU0VHIG9uDQorICAjICBYNTgsIGZvciBTTVJBTSBw dXJwb3Nlcy4gUGVybWl0dGVkIHZhbHVlcyBhcmU6IDEsIDIsIDguIE90aGVyIHZhbHVlcyBjYXVz ZQ0KKyAgIyAgdW5kZWZpbmVkIGJlaGF2aW9yLg0KKyAgIw0KKyAgIyAgVGhpcyBQQ0QgaXMgb25s eSBjb25zdWx0ZWQgaWYgUGNkU21tU21yYW1SZXF1aXJlIGlzIFRSVUUgKHNlZSBiZWxvdykuDQor ICBnU2ltaWNzWDU4UGtnVG9rZW5TcGFjZUd1aWQuUGNkWDU4VHNlZ01ieXRlc3w4fFVJTlQ4fDB4 MjANCisNCisgIGdTaW1pY3NYNThQa2dUb2tlblNwYWNlR3VpZC5QY2RTaW1pY3NGbGFzaE52U3Rv cmFnZUV2ZW50TG9nQmFzZXwweDB8VUlOVDMyfDB4OA0KKyAgZ1NpbWljc1g1OFBrZ1Rva2VuU3Bh Y2VHdWlkLlBjZFNpbWljc0ZsYXNoTnZTdG9yYWdlRXZlbnRMb2dTaXplfDB4MHxVSU5UMzJ8MHg5 DQorICBnU2ltaWNzWDU4UGtnVG9rZW5TcGFjZUd1aWQuUGNkU2ltaWNzRmlybXdhcmVGZFNpemV8 MHgwfFVJTlQzMnwweGENCisgIGdTaW1pY3NYNThQa2dUb2tlblNwYWNlR3VpZC5QY2RTaW1pY3NG aXJtd2FyZUJsb2NrU2l6ZXwwfFVJTlQzMnwweGINCisgIGdTaW1pY3NYNThQa2dUb2tlblNwYWNl R3VpZC5QY2RTaW1pY3NGbGFzaE52U3RvcmFnZVZhcmlhYmxlQmFzZXwweDB8VUlOVDMyfDB4Yw0K KyAgZ1NpbWljc1g1OFBrZ1Rva2VuU3BhY2VHdWlkLlBjZFNpbWljc0ZsYXNoTnZTdG9yYWdlRnR3 U3BhcmVCYXNlfDB4MHxVSU5UMzJ8MHhkDQorICBnU2ltaWNzWDU4UGtnVG9rZW5TcGFjZUd1aWQu UGNkU2ltaWNzRmxhc2hOdlN0b3JhZ2VGdHdXb3JraW5nQmFzZXwweDB8VUlOVDMyfDB4ZQ0KKyAg Z1NpbWljc1g1OFBrZ1Rva2VuU3BhY2VHdWlkLlBjZFNpbWljc0ZkQmFzZUFkZHJlc3N8MHgwfFVJ TlQzMnwweGYNCisgIGdTaW1pY3NYNThQa2dUb2tlblNwYWNlR3VpZC5QY2RTaW1pY3NTZWNQYWdl VGFibGVzQmFzZXwweDB8VUlOVDMyfDB4MTENCisgIGdTaW1pY3NYNThQa2dUb2tlblNwYWNlR3Vp ZC5QY2RTaW1pY3NTZWNQYWdlVGFibGVzU2l6ZXwweDB8VUlOVDMyfDB4MTINCisgIGdTaW1pY3NY NThQa2dUb2tlblNwYWNlR3VpZC5QY2RTaW1pY3NTZWNQZWlUZW1wUmFtQmFzZXwweDB8VUlOVDMy fDB4MTMNCisgIGdTaW1pY3NYNThQa2dUb2tlblNwYWNlR3VpZC5QY2RTaW1pY3NTZWNQZWlUZW1w UmFtU2l6ZXwweDB8VUlOVDMyfDB4MTQNCisgIGdTaW1pY3NYNThQa2dUb2tlblNwYWNlR3VpZC5Q Y2RTaW1pY3NMb2NrQm94U3RvcmFnZUJhc2V8MHgwfFVJTlQzMnwweDE4DQorICBnU2ltaWNzWDU4 UGtnVG9rZW5TcGFjZUd1aWQuUGNkU2ltaWNzTG9ja0JveFN0b3JhZ2VTaXplfDB4MHxVSU5UMzJ8 MHgxOQ0KKyAgZ1NpbWljc1g1OFBrZ1Rva2VuU3BhY2VHdWlkLlBjZEd1aWRlZEV4dHJhY3RIYW5k bGVyVGFibGVTaXplfDB4MHxVSU5UMzJ8MHgxYQ0KKyAgZ1NpbWljc1g1OFBrZ1Rva2VuU3BhY2VH dWlkLlBjZFNpbWljc0RlY29tcHJlc3Npb25TY3JhdGNoRW5kfDB4MHxVSU5UMzJ8MHgxZg0KKw0K K1tQY2RzRHluYW1pYywgUGNkc0R5bmFtaWNFeF0NCisNCisgICMgVE9ETzogaW52ZXN0aWdhdGUg d2hldGhlciBuZXh0IHR3byBQY2RzIGFyZSBuZWVkZWQNCisgIGdTaW1pY3NYNThQa2dUb2tlblNw YWNlR3VpZC5QY2RFbXVWYXJpYWJsZUV2ZW50fDB8VUlOVDY0fDB4MjgNCisgIGdTaW1pY3NYNThQ a2dUb2tlblNwYWNlR3VpZC5QY2RPdm1mRmxhc2hWYXJpYWJsZXNFbmFibGV8RkFMU0V8Qk9PTEVB TnwweDEwDQorICBnU2ltaWNzWDU4UGtnVG9rZW5TcGFjZUd1aWQuUGNkU2ltaWNzWDU4SG9zdEJy aWRnZVBjaURldklkfDB8VUlOVDE2fDB4MWINCisgIA0KKyAgIyMgVGhlIElPIHBvcnQgYXBlcnR1 cmUgc2hhcmVkIGJ5IGFsbCBQQ0kgcm9vdCBicmlkZ2VzLg0KKyAgIw0KKyAgZ1NpbWljc1g1OFBr Z1Rva2VuU3BhY2VHdWlkLlBjZFBjaUlvQmFzZXwweDB8VUlOVDY0fDB4MjINCisgIGdTaW1pY3NY NThQa2dUb2tlblNwYWNlR3VpZC5QY2RQY2lJb1NpemV8MHgwfFVJTlQ2NHwweDIzDQorICANCisg ICMjIFRoZSAzMi1iaXQgTU1JTyBhcGVydHVyZSBzaGFyZWQgYnkgYWxsIFBDSSByb290IGJyaWRn ZXMuDQorICAjDQorICBnU2ltaWNzWDU4UGtnVG9rZW5TcGFjZUd1aWQuUGNkUGNpTW1pbzMyQmFz ZXwweDB8VUlOVDY0fDB4MjQNCisgIGdTaW1pY3NYNThQa2dUb2tlblNwYWNlR3VpZC5QY2RQY2lN bWlvMzJTaXplfDB4MHxVSU5UNjR8MHgyNQ0KKw0KKyAgIyMgVGhlIDY0LWJpdCBNTUlPIGFwZXJ0 dXJlIHNoYXJlZCBieSBhbGwgUENJIHJvb3QgYnJpZGdlcy4NCisgICMNCisgIGdTaW1pY3NYNThQ a2dUb2tlblNwYWNlR3VpZC5QY2RQY2lNbWlvNjRCYXNlfDB4MHxVSU5UNjR8MHgyNg0KKyAgZ1Np bWljc1g1OFBrZ1Rva2VuU3BhY2VHdWlkLlBjZFBjaU1taW82NFNpemV8MHgwfFVJTlQ2NHwweDI3 DQorDQorW1BjZHNGZWF0dXJlRmxhZ10NCisgICMjIFRoaXMgZmVhdHVyZSBmbGFnIGVuYWJsZXMg U01NL1NNUkFNIHN1cHBvcnQuIE5vdGUgdGhhdCBpdCBhbHNvIHJlcXVpcmVzDQorICAjICBzdWNo IHN1cHBvcnQgZnJvbSB0aGUgdW5kZXJseWluZyBRRU1VIGluc3RhbmNlOyBpZiB0aGF0IHN1cHBv cnQgaXMgbm90DQorICAjICBwcmVzZW50LCB0aGUgZmlybXdhcmUgd2lsbCByZWplY3QgY29udGlu dWluZyBhZnRlciBhIGNlcnRhaW4gcG9pbnQuDQorICAjDQorICAjICBUaGUgZmxhZyBhbHNvIGFj dHMgYXMgYSBnZW5lcmFsICJzZWN1cml0eSBzd2l0Y2giOyB3aGVuIFRSVUUsIG1hbnkNCisgICMg IGNvbXBvbmVudHMgd2lsbCBjaGFuZ2UgYmVoYXZpb3IsIHdpdGggdGhlIGdvYWwgb2YgcHJldmVu dGluZyBhIG1hbGljaW91cw0KKyAgIyAgcnVudGltZSBPUyBmcm9tIHRhbXBlcmluZyB3aXRoIGZp cm13YXJlIHN0cnVjdHVyZXMgKHNwZWNpYWwgbWVtb3J5IHJhbmdlcw0KKyAgIyAgdXNlZCBieSBP Vk1GLCB0aGUgdmFyc3RvcmUgcGZsYXNoIGNoaXAsIExvY2tCb3ggZXRjKS4NCisgIGdTaW1pY3NY NThQa2dUb2tlblNwYWNlR3VpZC5QY2RTbW1TbXJhbVJlcXVpcmV8RkFMU0V8Qk9PTEVBTnwweDFl DQorDQorDQorW1BjZHNGaXhlZEF0QnVpbGQsIFBjZHNEeW5hbWljLCBQY2RzRHluYW1pY0V4LCBQ Y2RzUGF0Y2hhYmxlSW5Nb2R1bGVdDQorICAjIyBQY2Q4MjU5TGVnYWN5TW9kZU1hc2sgZGVmaW5l cyB0aGUgZGVmYXVsdCBtYXNrIHZhbHVlIGZvciBwbGF0Zm9ybS4gVGhpcyB2YWx1ZSBpcyBkZXRl cm1pbmVkPEJSPjxCUj4NCisgICMgIDEpIElmIHBsYXRmb3JtIG9ubHkgc3VwcG9ydCBwdXJlIFVF RkksIHZhbHVlIHNob3VsZCBiZSBzZXQgdG8gMHhGRkZGIG9yIDB4RkZGRTsNCisgICMgICAgIEJl Y2F1c2Ugb25seSBjbG9jayBpbnRlcnJ1cHQgaXMgYWxsb3dlZCBpbiBsZWdhY3kgbW9kZSBpbiBw dXJlIFVFRkkgcGxhdGZvcm0uPEJSPg0KKyAgIyAgMikgSWYgcGxhdGZvcm0gaW5zdGFsbCBDU00g YW5kIHVzZSB0aHVuayBtb2R1bGU6PEJSPg0KKyAgIyAgICAgYSkgSWYgdGh1bmsgY2FsbCBwcm92 aWRlZCBieSBDU00gYmluYXJ5IHJlcXVpcmVzIHNvbWUgbGVnYWN5IGludGVycnVwdCBzdXBwb3J0 LCB0aGUgY29ycmVzcG9uZGluZyBiaXQNCisgICMgICAgICAgIHNob3VsZCBiZSBvcGVuZWQgYXMg MC48QlI+DQorICAjICAgICAgICBGb3IgZXhhbXBsZSwgaWYga2V5Ym9hcmQgaW50ZXJmYWNlcyBw cm92aWRlZCBDU00gYmluYXJ5IHVzZSBsZWdhY3kga2V5Ym9hcmQgaW50ZXJydXB0IGluIDgyNTkg Yml0IDEsIHRoZW4NCisgICMgICAgICAgIHRoZSB2YWx1ZSBzaG91bGQgYmUgc2V0IHRvIDB4RkZG Qy48QlI+DQorICAjICAgICBiKSBJZiBhbGwgdGh1bmsgY2FsbCBwcm92aWVkIGJ5IENTTSBiaW5h cnkgZG8gbm90IHJlcXVpcmUgbGVnYWN5IGludGVycnVwdCBzdXBwb3J0LCB2YWx1ZSBzaG91bGQg YmUgc2V0DQorICAjICAgICAgICB0byAweEZGRkYgb3IgMHhGRkZFLjxCUj4NCisgICMNCisgICMg IFRoZSBkZWZhdWx0IHZhbHVlIG9mIGxlZ2FjeSBtb2RlIG1hc2sgY291bGQgYmUgY2hhbmdlZCBi eSBFRklfTEVHQUNZXzgyNTlfUFJPVE9DT0wtPlNldE1hc2soKS4gQnV0IGl0IGlzIHJhcmVseQ0K KyAgIyAgbmVlZCBjaGFuZ2UgaXQgZXhjZXB0IHNvbWUgc3BlY2lhbCBjYXNlcyBzdWNoIGFzIHdo ZW4gaW5pdGlhbGl6aW5nIHRoZSBDU00gYmluYXJ5LCBpdCBzaG91bGQgYmUgc2V0IHRvIDB4RkZG RiB0bw0KKyAgIyAgbWFzayBhbGwgbGVnYWN5IGludGVycnVwdC4gUGxlYXNlIHJlc3RvcmUgdGhl IG9yaWdpbmFsIGxlZ2FjeSBtYXNrIHZhbHVlIGlmIGNoYW5naW5nIGlzIG1hZGUgZm9yIHRoZXNl IHNwZWNpYWwgY2FzZS48QlI+DQorICAjIEBQcm9tcHQgODI1OSBMZWdhY3kgTW9kZSBtYXNrLg0K KyAgZ1BjQXRDaGlwc2V0UGtnVG9rZW5TcGFjZUd1aWQuUGNkODI1OUxlZ2FjeU1vZGVNYXNrfDB4 RkZGRnxVSU5UMTZ8MHgwMDAwMDAwMQ0KKw0KKyAgIyMgUGNkODI1OUxlZ2FjeU1vZGVFZGdlTGV2 ZWwgZGVmaW5lcyB0aGUgZGVmYXVsdCBlZGdlIGxldmVsIGZvciBsZWdhY3kgbW9kZSdzIGludGVy cnJ1cHQgY29udHJvbGxlci4NCisgICMgIEZvciB0aGUgY29ycmVzcG9uZGluZyBiaXRzLCAwID0g RWRnZSB0cmlnZ2VyZWQgYW5kIDEgPSBMZXZlbCB0cmlnZ2VyZWQuDQorICAjIEBQcm9tcHQgODI1 OSBMZWdhY3kgTW9kZSBlZGdlIGxldmVsLg0KKyAgZ1BjQXRDaGlwc2V0UGtnVG9rZW5TcGFjZUd1 aWQuUGNkODI1OUxlZ2FjeU1vZGVFZGdlTGV2ZWx8MHgwMDAwfFVJTlQxNnwweDAwMDAwMDAyDQor DQorICAjIyBJbmRpY2F0ZXMgaWYgd2UgbmVlZCBlbmFibGUgSXNhQWNwaUNvbTEgZGV2aWNlLjxC Uj48QlI+DQorICAjICAgVFJVRSAgLSBFbmFibGVzIElzYUFjcGlDb20xIGRldmljZS48QlI+DQor ICAjICAgRkFMU0UgLSBEb2Vzbid0IGVuYWJsZSBJc2FBY3BpQ29tMSBkZXZpY2UuPEJSPg0KKyAg IyBAUHJvbXB0IEVuYWJsZSBJc2FBY3BpQ29tMSBkZXZpY2UuDQorICBnUGNBdENoaXBzZXRQa2dU b2tlblNwYWNlR3VpZC5QY2RJc2FBY3BpQ29tMUVuYWJsZXxUUlVFfEJPT0xFQU58MHgwMDAwMDAw Mw0KKw0KKyAgIyMgSW5kaWNhdGVzIGlmIHdlIG5lZWQgZW5hYmxlIElzYUFjcGlDb20yIGRldmlj ZS48QlI+PEJSPg0KKyAgIyAgIFRSVUUgIC0gRW5hYmxlcyBJc2FBY3BpQ29tMiBkZXZpY2UuPEJS Pg0KKyAgIyAgIEZBTFNFIC0gRG9lc24ndCBlbmFibGUgSXNhQWNwaUNvbTIgZGV2aWNlLjxCUj4N CisgICMgQFByb21wdCBFbmFibGUgSXNhQWNwaUNvbTEyIGRldmljZS4NCisgIGdQY0F0Q2hpcHNl dFBrZ1Rva2VuU3BhY2VHdWlkLlBjZElzYUFjcGlDb20yRW5hYmxlfFRSVUV8Qk9PTEVBTnwweDAw MDAwMDA0DQorDQorICAjIyBJbmRpY2F0ZXMgaWYgd2UgbmVlZCBlbmFibGUgSXNhQWNwaVBzMktl eWJvYXJkIGRldmljZS48QlI+PEJSPg0KKyAgIyAgIFRSVUUgIC0gRW5hYmxlcyBJc2FBY3BpUHMy S2V5Ym9hcmQgZGV2aWNlLjxCUj4NCisgICMgICBGQUxTRSAtIERvZXNuJ3QgZW5hYmxlIElzYUFj cGlQczJLZXlib2FyZCBkZXZpY2UuPEJSPg0KKyAgIyBAUHJvbXB0IEVuYWJsZSBJc2FBY3BpUHMy S2V5Ym9hcmQgZGV2aWNlLg0KKyAgZ1BjQXRDaGlwc2V0UGtnVG9rZW5TcGFjZUd1aWQuUGNkSXNh QWNwaVBzMktleWJvYXJkRW5hYmxlfFRSVUV8Qk9PTEVBTnwweDAwMDAwMDA1DQorDQorICAjIyBJ bmRpY2F0ZXMgaWYgd2UgbmVlZCBlbmFibGUgSXNhQWNwaVBzMk1vdXNlIGRldmljZS48QlI+PEJS Pg0KKyAgIyAgIFRSVUUgIC0gRW5hYmxlcyBJc2FBY3BpUHMyTW91c2UgZGV2aWNlLjxCUj4NCisg ICMgICBGQUxTRSAtIERvZXNuJ3QgZW5hYmxlIElzYUFjcGlQczJNb3VzZSBkZXZpY2UuPEJSPg0K KyAgIyBAUHJvbXB0IEVuYWJsZSBJc2FBY3BpUHMyTW91c2UgZGV2aWNlLg0KKyAgZ1BjQXRDaGlw c2V0UGtnVG9rZW5TcGFjZUd1aWQuUGNkSXNhQWNwaVBzMk1vdXNlRW5hYmxlfFRSVUV8Qk9PTEVB TnwweDAwMDAwMDA2DQorDQorICAjIyBJbmRpY2F0ZXMgaWYgd2UgbmVlZCBlbmFibGUgSXNhQWNw aUZsb3BweUEgZGV2aWNlLjxCUj48QlI+DQorICAjICAgVFJVRSAgLSBFbmFibGVzIElzYUFjcGlG bG9wcHlBIGRldmljZS48QlI+DQorICAjICAgRkFMU0UgLSBEb2Vzbid0IGVuYWJsZSBJc2FBY3Bp RmxvcHB5QSBkZXZpY2UuPEJSPg0KKyAgIyBAUHJvbXB0IEVuYWJsZSBJc2FBY3BpRmxvcHB5QSBk ZXZpY2UuDQorICBnUGNBdENoaXBzZXRQa2dUb2tlblNwYWNlR3VpZC5QY2RJc2FBY3BpRmxvcHB5 QUVuYWJsZXxUUlVFfEJPT0xFQU58MHgwMDAwMDAwNw0KKw0KKyAgIyMgSW5kaWNhdGVzIGlmIHdl IG5lZWQgZW5hYmxlIElzYUFjcGlGbG9wcHlCIGRldmljZS48QlI+PEJSPg0KKyAgIyAgIFRSVUUg IC0gRW5hYmxlcyBJc2FBY3BpRmxvcHB5QiBkZXZpY2UuPEJSPg0KKyAgIyAgIEZBTFNFIC0gRG9l c24ndCBlbmFibGUgSXNhQWNwaUZsb3BweUIgZGV2aWNlLjxCUj4NCisgICMgQFByb21wdCBFbmFi bGUgSXNhQWNwaUZsb3BweUIgZGV2aWNlLg0KKyAgZ1BjQXRDaGlwc2V0UGtnVG9rZW5TcGFjZUd1 aWQuUGNkSXNhQWNwaUZsb3BweUJFbmFibGV8VFJVRXxCT09MRUFOfDB4MDAwMDAwMDgNCisNCitb UGNkc0ZpeGVkQXRCdWlsZCwgUGNkc1BhdGNoYWJsZUluTW9kdWxlXQ0KKyAgIyMgRkZTIGZpbGVu YW1lIHRvIGZpbmQgdGhlIHNoZWxsIGFwcGxpY2F0aW9uLg0KKyAgIyBAUHJvbXB0IEZGUyBOYW1l IG9mIFNoZWxsIEFwcGxpY2F0aW9uDQorICBnU2ltaWNzWDU4UGtnVG9rZW5TcGFjZUd1aWQuUGNk U2hlbGxGaWxlfHsgMHg4MywgMHhBNSwgMHgwNCwgMHg3QywgMHgzRSwgMHg5RSwgMHgxQywgMHg0 RiwgMHhBRCwgMHg2NSwgMHhFMCwgMHg1MiwgMHg2OCwgMHhEMCwgMHhCNCwgMHhEMSB9fFZPSUQq fDB4NDAwMDAwMDQNCisNCisgICMjIElTQSBCdXMgZmVhdHVyZXMgdG8gc3VwcG9ydCBETUEsIFNs YXZlRE1BIGFuZCBJU0EgTWVtb3J5LiA8QlI+PEJSPg0KKyAgIyAgQklUMCBpbmRpY2F0ZXMgaWYg RE1BIGlzIHN1cHBvcnRlZDxCUj4NCisgICMgIEJJVDEgaW5kaWNhdGVzIGlmIG9ubHkgc2xhdmUg RE1BIGlzIHN1cHBvcnRlZDxCUj4NCisgICMgIEJJVDIgaW5kaWNhdGVzIGlmIElTQSBtZW1vcnkg aXMgc3VwcG9ydGVkPEJSPg0KKyAgIyAgT3RoZXIgQklUcyBhcmUgcmVzZXZlZCBhbmQgbXVzdCBi ZSB6ZXJvLg0KKyAgIyAgSWYgbW9yZSB0aGFuIG9uZSBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkLCB0 aGUgZGlmZmVyZW50IEJJVCB3aWxsIGJlIGVuYWJsZWQgYXQgdGhlIHNhbWUgdGltZS4NCisgICMg QFByb21wdCBJU0EgQnVzIEZlYXR1cmVzDQorICAjIEBFeHByZXNzaW9uIDB4ODAwMDAwMDIgfCAo Z1NpbWljc1g1OFBrZ1Rva2VuU3BhY2VHdWlkLlBjZElzYUJ1c1N1cHBvcnRlZEZlYXR1cmVzICYg MHhGOCkgPT0gMA0KKyAgZ1NpbWljc1g1OFBrZ1Rva2VuU3BhY2VHdWlkLlBjZElzYUJ1c1N1cHBv cnRlZEZlYXR1cmVzfDB4MDV8VUlOVDh8MHgwMDAxMDA0MA0KXCBObyBuZXdsaW5lIGF0IGVuZCBv ZiBmaWxlDQpkaWZmIC0tZ2l0IGEvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1Nt Ymlvc1BsYXRmb3JtRHhlL1NtYmlvc1BsYXRmb3JtRHhlLmggYi9QbGF0Zm9ybS9JbnRlbC9TaW1p Y3NPcGVuQm9hcmRQa2cvU21iaW9zUGxhdGZvcm1EeGUvU21iaW9zUGxhdGZvcm1EeGUuaA0KbmV3 IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAuLjM4YTcxYTM1MjcNCi0tLSAvZGV2 L251bGwNCisrKyBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9TbWJpb3NQbGF0 Zm9ybUR4ZS9TbWJpb3NQbGF0Zm9ybUR4ZS5oDQpAQCAtMCwwICsxLDM4IEBADQorLyoqIEBmaWxl DQorICBUaGlzIGRyaXZlciBpbnN0YWxscyBTTUJJT1MgaW5mb3JtYXRpb24gZm9yIE9WTUYNCisN CisgIENvcHlyaWdodCAoYykgMjAxMSwgQmVpIEd1YW4gPGdidGp1ODVAZ21haWwuY29tPg0KKyAg Q29weXJpZ2h0IChjKSAyMDExLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZl ZC48QlI+DQorDQorICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVu dA0KKyoqLw0KKw0KKyNpZm5kZWYgX1NNQklPU19QTEFURk9STV9EWEVfSF8NCisjZGVmaW5lIF9T TUJJT1NfUExBVEZPUk1fRFhFX0hfDQorDQorI2luY2x1ZGUgPFBpRHhlLmg+DQorDQorI2luY2x1 ZGUgPFByb3RvY29sL1NtYmlvcy5oPg0KKyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJkL1NtQmlv cy5oPg0KKyNpbmNsdWRlIDxMaWJyYXJ5L0RlYnVnTGliLmg+DQorI2luY2x1ZGUgPExpYnJhcnkv QmFzZUxpYi5oPg0KKyNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VNZW1vcnlMaWIuaD4NCisjaW5jbHVk ZSA8TGlicmFyeS9VZWZpQm9vdFNlcnZpY2VzVGFibGVMaWIuaD4NCisjaW5jbHVkZSA8TGlicmFy eS9NZW1vcnlBbGxvY2F0aW9uTGliLmg+DQorI2luY2x1ZGUgPExpYnJhcnkvSW9MaWIuaD4NCisN CisvKioNCisgIFZhbGlkYXRlcyB0aGUgU01CSU9TIGVudHJ5IHBvaW50IHN0cnVjdHVyZQ0KKw0K KyAgQHBhcmFtICBFbnRyeVBvaW50U3RydWN0dXJlICBTTUJJT1MgZW50cnkgcG9pbnQgc3RydWN0 dXJlDQorDQorICBAcmV0dmFsIFRSVUUgICBUaGUgZW50cnkgcG9pbnQgc3RydWN0dXJlIGlzIHZh bGlkDQorICBAcmV0dmFsIEZBTFNFICBUaGUgZW50cnkgcG9pbnQgc3RydWN0dXJlIGlzIG5vdCB2 YWxpZA0KKw0KKyoqLw0KK0JPT0xFQU4NCitJc0VudHJ5UG9pbnRTdHJ1Y3R1cmVWYWxpZCAoDQor ICBJTiBTTUJJT1NfVEFCTEVfRU5UUllfUE9JTlQgICpFbnRyeVBvaW50U3RydWN0dXJlDQorICAp Ow0KKw0KKyNlbmRpZg0KZGlmZiAtLWdpdCBhL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2Fy ZFBrZy9TbWJpb3NQbGF0Zm9ybUR4ZS9TbWJpb3NQbGF0Zm9ybUR4ZS5pbmYgYi9QbGF0Zm9ybS9J bnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvU21iaW9zUGxhdGZvcm1EeGUvU21iaW9zUGxhdGZvcm1E eGUuaW5mDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMC4uNmFkYWYwYmVi Nw0KLS0tIC9kZXYvbnVsbA0KKysrIGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtn L1NtYmlvc1BsYXRmb3JtRHhlL1NtYmlvc1BsYXRmb3JtRHhlLmluZg0KQEAgLTAsMCArMSw1MSBA QA0KKyMjIEBmaWxlDQorIyAgVGhpcyBkcml2ZXIgaW5zdGFsbHMgU01CSU9TIGluZm9ybWF0aW9u IGZvciBPVk1GDQorIw0KKyMgIENvcHlyaWdodCAoYykgMjAxMSwgQmVpIEd1YW4gPGdidGp1ODVA Z21haWwuY29tPg0KKyMgIENvcHlyaWdodCAoYykgMjAxMSAtIDIwMTgsIEludGVsIENvcnBvcmF0 aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCisjDQorIyBTUERYLUxpY2Vuc2UtSWRlbnRp ZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KKyMNCisjIw0KKw0KK1tEZWZpbmVzXQ0KKyAgSU5G X1ZFUlNJT04gICAgICAgICAgICAgICAgICAgID0gMHgwMDAxMDAwNQ0KKyAgQkFTRV9OQU1FICAg ICAgICAgICAgICAgICAgICAgID0gU21iaW9zUGxhdGZvcm1EeGUNCisgIEZJTEVfR1VJRCAgICAg ICAgICAgICAgICAgICAgICA9IDRiMTgzMjNkLTJkNDItNGFmYS1iOWU1LTkxNTE2YTZmZTUwNQ0K KyAgTU9EVUxFX1RZUEUgICAgICAgICAgICAgICAgICAgID0gRFhFX0RSSVZFUg0KKyAgVkVSU0lP Tl9TVFJJTkcgICAgICAgICAgICAgICAgID0gMS4wDQorDQorICBFTlRSWV9QT0lOVCAgICAgICAg ICAgICAgICAgICAgPSBTbWJpb3NUYWJsZVB1Ymxpc2hFbnRyeQ0KKw0KKyMNCisjIFRoZSBmb2xs b3dpbmcgaW5mb3JtYXRpb24gaXMgZm9yIHJlZmVyZW5jZSBvbmx5IGFuZCBub3QgcmVxdWlyZWQg YnkgdGhlIGJ1aWxkIHRvb2xzLg0KKyMNCisjICBWQUxJRF9BUkNISVRFQ1RVUkVTICAgICAgICAg ICA9IElBMzIgWDY0IEVCQyBBUk0gQUFSQ0g2NA0KKyMNCisNCitbU291cmNlc10NCisgIFNtYmlv c1BsYXRmb3JtRHhlLmgNCisgIFNtYmlvc1BsYXRmb3JtRHhlLmMNCisNCitbUGFja2FnZXNdDQor ICBNZGVQa2cvTWRlUGtnLmRlYw0KKyAgTWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMNCisg IFNpbWljc09wZW5Cb2FyZFBrZy9TaW1pY3NPcGVuQm9hcmRQa2cuZGVjDQorICBBZHZhbmNlZEZl YXR1cmVQa2cvQWR2YW5jZWRGZWF0dXJlUGtnLmRlYw0KKw0KK1tMaWJyYXJ5Q2xhc3Nlc10NCisg IFVlZmlCb290U2VydmljZXNUYWJsZUxpYg0KKyAgQmFzZU1lbW9yeUxpYg0KKyAgQmFzZUxpYg0K KyAgVWVmaURyaXZlckVudHJ5UG9pbnQNCisgIERlYnVnTGliDQorICBIb2JMaWINCisgIE1lbW9y eUFsbG9jYXRpb25MaWINCisgIElvTGliDQorDQorW1Byb3RvY29sc10NCisgIGdFZmlTbWJpb3NQ cm90b2NvbEd1aWQgICAgICAgICAgICAgICAgICAgICAgIyBQUk9UT0NPTCBBTFdBWVNfQ09OU1VN RUQNCisNCitbRGVwZXhdDQorICBnRWZpU21iaW9zUHJvdG9jb2xHdWlkDQorDQotLSANCjIuMTYu Mi53aW5kb3dzLjENCg0K