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.93, mailfrom: liming.gao@intel.com) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by groups.io with SMTP; Tue, 16 Jul 2019 07:56:10 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 16 Jul 2019 07:56:09 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.63,498,1557212400"; d="scan'208";a="172565092" Received: from fmsmsx105.amr.corp.intel.com ([10.18.124.203]) by orsmga006.jf.intel.com with ESMTP; 16 Jul 2019 07:56:09 -0700 Received: from fmsmsx120.amr.corp.intel.com (10.18.124.208) by FMSMSX105.amr.corp.intel.com (10.18.124.203) with Microsoft SMTP Server (TLS) id 14.3.439.0; Tue, 16 Jul 2019 07:56:08 -0700 Received: from shsmsx106.ccr.corp.intel.com (10.239.4.159) by fmsmsx120.amr.corp.intel.com (10.18.124.208) with Microsoft SMTP Server (TLS) id 14.3.439.0; Tue, 16 Jul 2019 07:56:08 -0700 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.110]) by SHSMSX106.ccr.corp.intel.com ([169.254.10.240]) with mapi id 14.03.0439.000; Tue, 16 Jul 2019 22:56:06 +0800 From: "Liming Gao" To: "devel@edk2.groups.io" , "lersek@redhat.com" , "Kinney, Michael D" CC: Marvin H?user , =?utf-8?B?UGhpbGlwcGUgTWF0aGlldS1EYXVkw6k=?= , "Gao, Zhichao" Subject: Re: [edk2-devel] [PATCH 1/3] MdePkg/BaseLib: re-specify Base64Decode(), and add temporary stub impl Thread-Topic: [edk2-devel] [PATCH 1/3] MdePkg/BaseLib: re-specify Base64Decode(), and add temporary stub impl Thread-Index: AQHVMMEFl+zk5EEch02arxKZXGfcD6bMoJ6AgADJWKA= Date: Tue, 16 Jul 2019 14:56:05 +0000 Message-ID: <4A89E2EF3DFEDB4C8BFDE51014F606A14E4A91BF@SHSMSX104.ccr.corp.intel.com> References: <20190702102836.27589-1-lersek@redhat.com> <20190702102836.27589-2-lersek@redhat.com> <7013183a-31b7-d2a4-4656-d226e166e9da@redhat.com> In-Reply-To: <7013183a-31b7-d2a4-4656-d226e166e9da@redhat.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ctpclassification: CTP_NT x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiMjYxMjZmMGItM2M0MC00Y2Q1LWE5NjItOGQ0ZWJmMWVlNjI0IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiZXJpaUVYWUFtajZqNk93ZGtaWWdMUStHMkZwXC9VejR1WVpyZjBcL29ySjJRZFFGT0dQRVVhOTNRU01iZW1PN0QyIn0= dlp-product: dlpe-windows dlp-version: 11.0.600.7 dlp-reaction: no-action x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Return-Path: liming.gao@intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 TGFzemxvOg0KICBZZXMuIFBhdGNoIDEgJiBQYXRjaCAyIGluIE1kZVBrZyBhcmUgYm90aCBnb29k IHRvIG1lLiBJIGhhdmUgbm8gb3RoZXIgY29tbWVudHMuIFJldmlld2VkLWJ5OiBMaW1pbmcgR2Fv IDxsaW1pbmcuZ2FvQGludGVsLmNvbT4NCg0KVGhhbmtzDQpMaW1pbmcNCj4gLS0tLS1PcmlnaW5h bCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogZGV2ZWxAZWRrMi5ncm91cHMuaW8gW21haWx0bzpkZXZl bEBlZGsyLmdyb3Vwcy5pb10gT24gQmVoYWxmIE9mIExhc3psbyBFcnNlaw0KPiBTZW50OiBUdWVz ZGF5LCBKdWx5IDE2LCAyMDE5IDY6NDkgUE0NCj4gVG86IEdhbywgTGltaW5nIDxsaW1pbmcuZ2Fv QGludGVsLmNvbT47IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNv bT4NCj4gQ2M6IGVkazItZGV2ZWwtZ3JvdXBzLWlvIDxkZXZlbEBlZGsyLmdyb3Vwcy5pbz47IE1h cnZpbiBIw6R1c2VyIDxtaGFldXNlckBvdXRsb29rLmRlPjsgUGhpbGlwcGUgTWF0aGlldS1EYXVk w6kNCj4gPHBoaWxtZEByZWRoYXQuY29tPjsgR2FvLCBaaGljaGFvIDx6aGljaGFvLmdhb0BpbnRl bC5jb20+DQo+IFN1YmplY3Q6IFJlOiBbZWRrMi1kZXZlbF0gW1BBVENIIDEvM10gTWRlUGtnL0Jh c2VMaWI6IHJlLXNwZWNpZnkgQmFzZTY0RGVjb2RlKCksIGFuZCBhZGQgdGVtcG9yYXJ5IHN0dWIg aW1wbA0KPiANCj4gc2VuZGluZyBhIHNlcGFyYXRlIHBpbmcgaGVyZSBhcyB3ZWxsLCBmb3IgY2xh cml0eSAtLSBMaW1pbmcsIE1pa2UsIGNhbg0KPiBvbmUgb2YgeW91IHBsZWFzZSBSLWIgb3IgQS1i IHRoaXMgc3BlY2lmaWMgcGF0Y2ggdG9vPw0KPiANCj4gVGhhbmtzIQ0KPiBMYXN6bG8NCj4gDQo+ IE9uIDA3LzAyLzE5IDEyOjI4LCBMYXN6bG8gRXJzZWsgd3JvdGU6DQo+ID4gUmV3cml0ZSBCYXNl NjREZWNvZGUoKSBmcm9tIHNjcmF0Y2gsIGR1ZSB0byByZWFzb25zIGxpc3RlZCBpbiB0aGUgc2Vj b25kDQo+ID4gcmVmZXJlbmNlIGJlbG93Lg0KPiA+DQo+ID4gQXMgZmlyc3Qgc3RlcCwgcmVkbyB0 aGUgaW50ZXJmYWNlIGNvbnRyYWN0LCBhbmQgcmVwbGFjZSB0aGUgY3VycmVudA0KPiA+IGltcGxl bWVudGF0aW9uIHdpdGggYSBzdHViIHRoYXQgYXNzZXJ0cyBGQUxTRSwgdGhlbiBmYWlscy4NCj4g Pg0KPiA+IENjOiBMaW1pbmcgR2FvIDxsaW1pbmcuZ2FvQGludGVsLmNvbT4NCj4gPiBDYzogTWFy dmluIEjDpHVzZXIgPG1oYWV1c2VyQG91dGxvb2suZGU+DQo+ID4gQ2M6IE1pY2hhZWwgRCBLaW5u ZXkgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KPiA+IENjOiBQaGlsaXBwZSBNYXRoaWV1 LURhdWTDqSA8cGhpbG1kQHJlZGhhdC5jb20+DQo+ID4gQ2M6IFpoaWNoYW8gR2FvIDx6aGljaGFv Lmdhb0BpbnRlbC5jb20+DQo+ID4gUmVmOiBodHRwczovL2J1Z3ppbGxhLnRpYW5vY29yZS5vcmcv c2hvd19idWcuY2dpP2lkPTE4OTENCj4gPiBSZWY6IGh0dHA6Ly9taWQubWFpbC1hcmNoaXZlLmNv bS9jNDk1YmQwYi1lYTRkLTcyMDYtOGE0Zi1hNzE0OTc2MGQxOWFAcmVkaGF0LmNvbQ0KPiA+IFNp Z25lZC1vZmYtYnk6IExhc3psbyBFcnNlayA8bGVyc2VrQHJlZGhhdC5jb20+DQo+ID4gLS0tDQo+ ID4gIE1kZVBrZy9JbmNsdWRlL0xpYnJhcnkvQmFzZUxpYi5oIHwgIDk5ICsrKysrLS0NCj4gPiAg TWRlUGtnL0xpYnJhcnkvQmFzZUxpYi9TdHJpbmcuYyAgfCAyODUgKysrKysrLS0tLS0tLS0tLS0t LS0NCj4gPiAgMiBmaWxlcyBjaGFuZ2VkLCAxNjggaW5zZXJ0aW9ucygrKSwgMjE2IGRlbGV0aW9u cygtKQ0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL01kZVBrZy9JbmNsdWRlL0xpYnJhcnkvQmFzZUxp Yi5oIGIvTWRlUGtnL0luY2x1ZGUvTGlicmFyeS9CYXNlTGliLmgNCj4gPiBpbmRleCBlYmQ3ZGQy NzRjZjQuLjVlZjAzZTI0ZWRiMSAxMDA2NDQNCj4gPiAtLS0gYS9NZGVQa2cvSW5jbHVkZS9MaWJy YXJ5L0Jhc2VMaWIuaA0KPiA+ICsrKyBiL01kZVBrZy9JbmNsdWRlL0xpYnJhcnkvQmFzZUxpYi5o DQo+ID4gQEAgLTI3ODUsMzEgKzI3ODUsOTQgQEAgQmFzZTY0RW5jb2RlICgNCj4gPiAgICApOw0K PiA+DQo+ID4gIC8qKg0KPiA+IC0gIENvbnZlcnQgQmFzZTY0IGFzY2lpIHN0cmluZyB0byBiaW5h cnkgZGF0YSBiYXNlZCBvbiBSRkM0NjQ4Lg0KPiA+ICsgIERlY29kZSBCYXNlNjQgQVNDSUkgZW5j b2RlZCBkYXRhIHRvIDgtYml0IGJpbmFyeSByZXByZXNlbnRhdGlvbiwgYmFzZWQgb24NCj4gPiAr ICBSRkM0NjQ4Lg0KPiA+DQo+ID4gLSAgUHJvZHVjZSBOdWxsLXRlcm1pbmF0ZWQgYmluYXJ5IGRh dGEgaW4gdGhlIG91dHB1dCBidWZmZXIgc3BlY2lmaWVkIGJ5IERlc3RpbmF0aW9uIGFuZCBEZXN0 aW5hdGlvblNpemUuDQo+ID4gLSAgVGhlIGJpbmFyeSBkYXRhIGlzIHByb2R1Y2VkIGJ5IGNvbnZl cnRpbmcgdGhlIEJhc2U2NCBhc2NpaSBzdHJpbmcgc3BlY2lmaWVkIGJ5IFNvdXJjZSBhbmQgU291 cmNlTGVuZ3RoLg0KPiA+ICsgIERlY29kaW5nIG9jY3VycyBhY2NvcmRpbmcgdG8gIlRhYmxlIDE6 IFRoZSBCYXNlIDY0IEFscGhhYmV0IiBpbiBSRkM0NjQ4Lg0KPiA+DQo+ID4gLSAgQHBhcmFtIFNv dXJjZSAgICAgICAgICBJbnB1dCBBU0NJSSBjaGFyYWN0ZXJzDQo+ID4gLSAgQHBhcmFtIFNvdXJj ZUxlbmd0aCAgICBOdW1iZXIgb2YgQVNDSUkgY2hhcmFjdGVycw0KPiA+IC0gIEBwYXJhbSBEZXN0 aW5hdGlvbiAgICAgUG9pbnRlciB0byBvdXRwdXQgYnVmZmVyDQo+ID4gLSAgQHBhcmFtIERlc3Rp bmF0aW9uU2l6ZSBDYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIHBhc3NpbmcgaW4gYnVmZmVyIG9m IGF0IGxlYXN0IERlc3RpbmF0aW9uU2l6ZS4NCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAg IFNldCAwIHRvIGdldCB0aGUgc2l6ZSBuZWVkZWQuIFNldCB0byBieXRlcyBzdG9yZWQgb24gcmV0 dXJuLg0KPiA+ICsgIFdoaXRlc3BhY2UgaXMgaWdub3JlZCBhdCBhbGwgcG9zaXRpb25zOg0KPiA+ ICsgIC0gMHgwOSAoJ1x0JykgaG9yaXpvbnRhbCB0YWINCj4gPiArICAtIDB4MEEgKCdcbicpIG5l dyBsaW5lDQo+ID4gKyAgLSAweDBCICgnXHYnKSB2ZXJ0aWNhbCB0YWINCj4gPiArICAtIDB4MEMg KCdcZicpIGZvcm0gZmVlZA0KPiA+ICsgIC0gMHgwRCAoJ1xyJykgY2FycmlhZ2UgcmV0dXJuDQo+ ID4gKyAgLSAweDIwICgnICcpICBzcGFjZQ0KPiA+DQo+ID4gLSAgQHJldHZhbCBSRVRVUk5fU1VD Q0VTUyAgICAgICAgICAgICBXaGVuIGJpbmFyeSBidWZmZXIgaXMgZmlsbGVkIGluLg0KPiA+IC0g IEByZXR2YWwgUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSICAgSWYgU291cmNlIGlzIE5VTEwgb3Ig RGVzdGluYXRpb25TaXplIGlzIE5VTEwuDQo+ID4gLSAgQHJldHZhbCBSRVRVUk5fSU5WQUxJRF9Q QVJBTUVURVIgICBJZiBTb3VyY2VMZW5ndGggb3IgRGVzdGluYXRpb25TaXplIGlzIGJpZ2dlciB0 aGFuIChNQVhfQUREUkVTUyAtKFVJTlROKURlc3RpbmF0aW9uICkuDQo+ID4gLSAgQHJldHZhbCBS RVRVUk5fSU5WQUxJRF9QQVJBTUVURVIgICBJZiB0aGVyZSBpcyBhbnkgaW52YWxpZCBjaGFyYWN0 ZXIgaW4gaW5wdXQgc3RyZWFtLg0KPiA+IC0gIEByZXR2YWwgUkVUVVJOX0JVRkZFUl9UT09fU01B TEwgICAgSWYgYnVmZmVyIGxlbmd0aCBpcyBzbWFsbGVyIHRoYW4gcmVxdWlyZWQgYnVmZmVyIHNp emUuDQo+ID4gKyAgVGhlIG1pbmltdW0gYW1vdW50IG9mIHJlcXVpcmVkIHBhZGRpbmcgKHdpdGgg QVNDSUkgMHgzRCwgJz0nKSBpcyB0b2xlcmF0ZWQNCj4gPiArICBhbmQgZW5mb3JjZWQgYXQgdGhl IGVuZCBvZiB0aGUgQmFzZTY0IEFTQ0lJIGVuY29kZWQgZGF0YSwgYW5kIG9ubHkgdGhlcmUuDQo+ ID4NCj4gPiAtICoqLw0KPiA+ICsgIE90aGVyIGNoYXJhY3RlcnMgb3V0c2lkZSBvZiB0aGUgZW5j b2RpbmcgYWxwaGFiZXQgY2F1c2UgdGhlIGZ1bmN0aW9uIHRvDQo+ID4gKyAgcmVqZWN0IHRoZSBC YXNlNjQgQVNDSUkgZW5jb2RlZCBkYXRhLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dIFNvdXJj ZSAgICAgICAgICAgICAgIEFycmF5IG9mIENIQVI4IGVsZW1lbnRzIGNvbnRhaW5pbmcgdGhlIEJh c2U2NA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNDSUkgZW5jb2Rp bmcuIE1heSBiZSBOVUxMIGlmIFNvdXJjZVNpemUgaXMNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHplcm8uDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gU291cmNlU2l6 ZSAgICAgICAgICAgTnVtYmVyIG9mIENIQVI4IGVsZW1lbnRzIGluIFNvdXJjZS4NCj4gPiArDQo+ ID4gKyAgQHBhcmFtW291dF0gRGVzdGluYXRpb24gICAgICAgICBBcnJheSBvZiBVSU5UOCBlbGVt ZW50cyByZWNlaXZpbmcgdGhlIGRlY29kZWQNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDgtYml0IGJpbmFyeSByZXByZXNlbnRhdGlvbi4gQWxsb2NhdGVkIGJ5IHRoZQ0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGVyLiBNYXkgYmUgTlVM TCBpZiBEZXN0aW5hdGlvblNpemUgaXMNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHplcm8gb24gaW5wdXQuIElmIE5VTEwsIGRlY29kaW5nIGlzDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJmb3JtZWQsIGJ1dCB0aGUgOC1iaXQgYmluYXJ5 DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXByZXNlbnRhdGlvbiBp cyBub3Qgc3RvcmVkLiBJZiBub24tTlVMTCBhbmQNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHRoZSBmdW5jdGlvbiByZXR1cm5zIGFuIGVycm9yLCB0aGUgY29udGVudHMN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIERlc3RpbmF0aW9uIGFy ZSBpbmRldGVybWluYXRlLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW4sb3V0XSBEZXN0aW5hdGlv blNpemUgIE9uIGlucHV0LCB0aGUgbnVtYmVyIG9mIFVJTlQ4IGVsZW1lbnRzIHRoYXQNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBjYWxsZXIgYWxsb2NhdGVkIGZv ciBEZXN0aW5hdGlvbi4gT24NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG91dHB1dCwgaWYgdGhlIGZ1bmN0aW9uIHJldHVybnMNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFJFVFVSTl9TVUNDRVNTIG9yIFJFVFVSTl9CVUZGRVJfVE9PX1NNQUxM LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIG51bWJlciBvZiBV SU5UOCBlbGVtZW50cyB0aGF0IGFyZQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcmVxdWlyZWQgZm9yIGRlY29kaW5nIHRoZSBCYXNlNjQgQVNDSUkNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHJlc2VudGF0aW9uLiBJZiB0aGUgZnVuY3Rp b24gcmV0dXJucyBhDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1 ZSBkaWZmZXJlbnQgZnJvbSBib3RoIFJFVFVSTl9TVUNDRVNTIGFuZA0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUkVUVVJOX0JVRkZFUl9UT09fU01BTEwsIHRoZW4gRGVz dGluYXRpb25TaXplDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBp bmRldGVybWluYXRlIG9uIG91dHB1dC4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBSRVRVUk5fU1VD Q0VTUyAgICAgICAgICAgIFNvdXJjZVNpemUgQ0hBUjggZWxlbWVudHMgYXQgU291cmNlIGhhdmUN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVlbiBkZWNvZGVkIHRv IG9uLW91dHB1dCBEZXN0aW5hdGlvblNpemUNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgVUlOVDggZWxlbWVudHMgYXQgRGVzdGluYXRpb24uIE5vdGUgdGhhdA0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRVRVUk5fU1VDQ0VTUyBjb3Zl cnMgdGhlIGNhc2Ugd2hlbg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBEZXN0aW5hdGlvblNpemUgaXMgemVybyBvbiBpbnB1dCwgYW5kDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZSBkZWNvZGVzIHRvIHplcm8gYnl0ZXMgKGR1 ZSB0bw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluaW5n IGF0IG1vc3QgaWdub3JlZCB3aGl0ZXNwYWNlKS4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBSRVRV Uk5fQlVGRkVSX1RPT19TTUFMTCAgIFRoZSBpbnB1dCB2YWx1ZSBvZiBEZXN0aW5hdGlvblNpemUg aXMgbm90DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhcmdlIGVu b3VnaCBmb3IgZGVjb2RpbmcgU291cmNlU2l6ZSBDSEFSOA0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBlbGVtZW50cyBhdCBTb3VyY2UuIFRoZSByZXF1aXJlZCBudW1i ZXIgb2YNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUlOVDggZWxl bWVudHMgaGFzIGJlZW4gc3RvcmVkIHRvDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIERlc3RpbmF0aW9uU2l6ZS4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBSRVRVUk5f SU5WQUxJRF9QQVJBTUVURVIgIERlc3RpbmF0aW9uU2l6ZSBpcyBOVUxMLg0KPiA+ICsNCj4gPiAr ICBAcmV0dmFsIFJFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiAgU291cmNlIGlzIE5VTEwsIGJ1dCBT b3VyY2VTaXplIGlzIG5vdCB6ZXJvLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIFJFVFVSTl9JTlZB TElEX1BBUkFNRVRFUiAgRGVzdGluYXRpb24gaXMgTlVMTCwgYnV0IERlc3RpbmF0aW9uU2l6ZSBp cw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3QgemVybyBvbiBp bnB1dC4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBSRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIgIFNv dXJjZSBpcyBub24tTlVMTCwgYW5kIChTb3VyY2UgKw0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBTb3VyY2VTaXplKSB3b3VsZCB3cmFwIGFyb3VuZCBNQVhfQUREUkVT Uy4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBSRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIgIERlc3Rp bmF0aW9uIGlzIG5vbi1OVUxMLCBhbmQgKERlc3RpbmF0aW9uICsNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgRGVzdGluYXRpb25TaXplKSB3b3VsZCB3cmFwIGFyb3Vu ZA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQVhfQUREUkVTUywg YXMgc3BlY2lmaWVkIG9uIGlucHV0Lg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIFJFVFVSTl9JTlZB TElEX1BBUkFNRVRFUiAgTm9uZSBvZiBTb3VyY2UgYW5kIERlc3RpbmF0aW9uIGFyZSBOVUxMLA0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgQ0hBUjhbU291cmNl U2l6ZV0gYXQgU291cmNlIG92ZXJsYXBzDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFVJTlQ4W0Rlc3RpbmF0aW9uU2l6ZV0gYXQgRGVzdGluYXRpb24sIGFzDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmllZCBvbiBpbnB1dC4N Cj4gPiArDQo+ID4gKyAgQHJldHZhbCBSRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIgIEludmFsaWQg Q0hBUjggZWxlbWVudCBlbmNvdW50ZXJlZCBpbg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBTb3VyY2UuDQo+ID4gKyoqLw0KPiA+ICBSRVRVUk5fU1RBVFVTDQo+ID4g IEVGSUFQSQ0KPiA+ICBCYXNlNjREZWNvZGUgKA0KPiA+IC0gIElOICBDT05TVCBDSEFSOCAgKlNv dXJjZSwNCj4gPiAtICBJTiAgICAgICAgVUlOVE4gICBTb3VyY2VMZW5ndGgsDQo+ID4gLSAgT1VU ICAgICAgIFVJTlQ4ICAqRGVzdGluYXRpb24gIE9QVElPTkFMLA0KPiA+IC0gIElOIE9VVCAgICBV SU5UTiAgKkRlc3RpbmF0aW9uU2l6ZQ0KPiA+ICsgIElOICAgICBDT05TVCBDSEFSOCAqU291cmNl ICAgICAgICAgIE9QVElPTkFMLA0KPiA+ICsgIElOICAgICBVSU5UTiAgICAgICBTb3VyY2VTaXpl LA0KPiA+ICsgIE9VVCAgICBVSU5UOCAgICAgICAqRGVzdGluYXRpb24gICAgIE9QVElPTkFMLA0K PiA+ICsgIElOIE9VVCBVSU5UTiAgICAgICAqRGVzdGluYXRpb25TaXplDQo+ID4gICAgKTsNCj4g Pg0KPiA+ICAvKioNCj4gPiBkaWZmIC0tZ2l0IGEvTWRlUGtnL0xpYnJhcnkvQmFzZUxpYi9TdHJp bmcuYyBiL01kZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvU3RyaW5nLmMNCj4gPiBpbmRleCAzMmUxODk3 OTFjYjguLmY4Mzk3MDM1YzMyYSAxMDA2NDQNCj4gPiAtLS0gYS9NZGVQa2cvTGlicmFyeS9CYXNl TGliL1N0cmluZy5jDQo+ID4gKysrIGIvTWRlUGtnL0xpYnJhcnkvQmFzZUxpYi9TdHJpbmcuYw0K PiA+IEBAIC0xNzU3LDQ1ICsxNzU3LDEwIEBAIEFzY2lpU3RyVG9Vbmljb2RlU3RyICgNCj4gPg0K PiA+ICAjZW5kaWYNCj4gPg0KPiA+IC0vLw0KPiA+IC0vLyBUaGUgYmFzaXMgZm9yIEJhc2U2NCBl bmNvZGluZyBpcyBSRkMgNDY4NiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNDY0OA0K PiA+IC0vLw0KPiA+IC0vLyBSRkMgNDY4NiBoYXMgYSBudW1iZXIgb2YgTUFZIGFuZCBTSE9VTEQg Y2FzZXMuICBUaGlzIGltcGxlbWVudGF0aW9uIGNob29zZXMNCj4gPiAtLy8gdGhlIG1vcmUgcmVz dHJpY3RpdmUgdmVyc2lvbnMgZm9yIHNlY3VyaXR5IGNvbmNlcm5zIChzZWUgUkZDIDQ2ODYgc2Vj dGlvbiAzLjMpLg0KPiA+IC0vLw0KPiA+IC0vLyBBIGludmFsaWQgY2hhcmFjdGVyLCBpZiBlbmNv dW50ZXJlZCBkdXJpbmcgdGhlIGRlY29kZSBvcGVyYXRpb24sIGNhdXNlcyB0aGUgZGF0YQ0KPiA+ IC0vLyB0byBiZSByZWplY3RlZC4gSW4gYWRkaXRpb24sIHRoZSAnPScgcGFkZGluZyBjaGFyYWN0 ZXIgaXMgb25seSBhbGxvd2VkIGF0IHRoZSBlbmQNCj4gPiAtLy8gb2YgdGhlIEJhc2U2NCBlbmNv ZGVkIHN0cmluZy4NCj4gPiAtLy8NCj4gPiAtI2RlZmluZSBCQURfViAgOTkNCj4gPiAtDQo+ID4g IFNUQVRJQyBDSEFSOCBFbmNvZGluZ1RhYmxlW10gPSAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldY WVoiDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFiY2RlZmdoaWprbG1u b3BxcnN0dXZ3eHl6Ig0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIwMTIz NDU2Nzg5Ky8iOw0KPiA+DQo+ID4gLVNUQVRJQyBVSU5UOCBEZWNvZGluZ1RhYmxlW10gPSB7DQo+ ID4gLSAgLy8NCj4gPiAtICAvLyBWYWxpZCBjaGFyYWN0ZXJzIEFCQ0RFRkdISUpLTE1OT1BRUlNU VVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8NCj4gPiAtICAvLyBB bHNvLCBzZXQgJz0nIGFzIGEgemVybyBmb3IgZGVjb2RpbmcNCj4gPiAtICAvLyAwICAsICAgICAg ICAgICAgMSwgICAgICAgICAgIDIsICAgICAgICAgICAzLCAgICAgICAgICAgIDQsICAgICAgICAg ICA1LCAgICAgICAgICAgIDYsICAgICAgICAgICA3LCAgICAgICAgICAgOCwNCj4gOSwgICAgICAg ICAgIGEsICAgICAgICAgICAgYiwgICAgICAgICAgICBjLCAgICAgICAgICAgZCwgICAgICAgICAg ICBlLCAgICAgICAgICAgIGYNCj4gPiAtICBCQURfViwgIEJBRF9WLCAgQkFEX1YsICBCQURfViwg IEJBRF9WLCAgQkFEX1YsICBCQURfViwgIEJBRF9WLCAgQkFEX1YsICBCQURfViwgIEJBRF9WLCAg QkFEX1YsICBCQURfViwgIEJBRF9WLA0KPiBCQURfViwgIEJBRF9WLCAgIC8vICAgMA0KPiA+IC0g IEJBRF9WLCAgQkFEX1YsICBCQURfViwgIEJBRF9WLCAgQkFEX1YsICBCQURfViwgIEJBRF9WLCAg QkFEX1YsICBCQURfViwgIEJBRF9WLCAgQkFEX1YsICBCQURfViwgIEJBRF9WLCAgQkFEX1YsDQo+ IEJBRF9WLCAgQkFEX1YsICAgLy8gIDEwDQo+ID4gLSAgQkFEX1YsICBCQURfViwgIEJBRF9WLCAg QkFEX1YsICBCQURfViwgIEJBRF9WLCAgQkFEX1YsICBCQURfViwgIEJBRF9WLCAgQkFEX1YsICBC QURfViwgICAgIDYyLCAgQkFEX1YsICBCQURfViwNCj4gQkFEX1YsICAgICA2MywgICAvLyAgMjAN Cj4gPiAtICAgICA1MiwgICAgIDUzLCAgICAgNTQsICAgICA1NSwgICAgIDU2LCAgICAgNTcsICAg ICA1OCwgICAgIDU5LCAgICAgNjAsICAgICA2MSwgIEJBRF9WLCAgQkFEX1YsICBCQURfViwgICAg ICAwLA0KPiBCQURfViwgIEJBRF9WLCAgIC8vICAzMA0KPiA+IC0gIEJBRF9WLCAgICAgIDAsICAg ICAgMSwgICAgICAyLCAgICAgIDMsICAgICAgNCwgICAgICA1LCAgICAgIDYsICAgICAgNywgICAg ICA4LCAgICAgIDksICAgICAxMCwgICAgIDExLCAgICAgMTIsICAgICAxMywNCj4gMTQsICAgLy8g IDQwDQo+ID4gLSAgICAgMTUsICAgICAxNiwgICAgIDE3LCAgICAgMTgsICAgICAxOSwgICAgIDIw LCAgICAgMjEsICAgICAyMiwgICAgIDIzLCAgICAgMjQsICAgICAyNSwgIEJBRF9WLCAgQkFEX1Ys ICBCQURfViwNCj4gQkFEX1YsICBCQURfViwgICAvLyAgNTANCj4gPiAtICBCQURfViwgICAgIDI2 LCAgICAgMjcsICAgICAyOCwgICAgIDI5LCAgICAgMzAsICAgICAzMSwgICAgIDMyLCAgICAgMzMs ICAgICAzNCwgICAgIDM1LCAgICAgMzYsICAgICAzNywgICAgIDM4LCAgICAgMzksDQo+IDQwLCAg IC8vICA2MA0KPiA+IC0gICAgIDQxLCAgICAgNDIsICAgICA0MywgICAgIDQ0LCAgICAgNDUsICAg ICA0NiwgICAgIDQ3LCAgICAgNDgsICAgICA0OSwgICAgIDUwLCAgICAgNTEsICBCQURfViwgIEJB RF9WLCAgQkFEX1YsDQo+IEJBRF9WLCAgQkFEX1YsICAgLy8gIDcwDQo+ID4gLSAgQkFEX1YsICBC QURfViwgIEJBRF9WLCAgQkFEX1YsICBCQURfViwgIEJBRF9WLCAgQkFEX1YsICBCQURfViwgIEJB RF9WLCAgQkFEX1YsICBCQURfViwgIEJBRF9WLCAgQkFEX1YsICBCQURfViwNCj4gQkFEX1YsICBC QURfViwgICAvLyAgODANCj4gPiAtICBCQURfViwgIEJBRF9WLCAgQkFEX1YsICBCQURfViwgIEJB RF9WLCAgQkFEX1YsICBCQURfViwgIEJBRF9WLCAgQkFEX1YsICBCQURfViwgIEJBRF9WLCAgQkFE X1YsICBCQURfViwgIEJBRF9WLA0KPiBCQURfViwgIEJBRF9WLCAgIC8vICA5MA0KPiA+IC0gIEJB RF9WLCAgQkFEX1YsICBCQURfViwgIEJBRF9WLCAgQkFEX1YsICBCQURfViwgIEJBRF9WLCAgQkFE X1YsICBCQURfViwgIEJBRF9WLCAgQkFEX1YsICBCQURfViwgIEJBRF9WLCAgQkFEX1YsDQo+IEJB RF9WLCAgQkFEX1YsICAgLy8gIGEwDQo+ID4gLSAgQkFEX1YsICBCQURfViwgIEJBRF9WLCAgQkFE X1YsICBCQURfViwgIEJBRF9WLCAgQkFEX1YsICBCQURfViwgIEJBRF9WLCAgQkFEX1YsICBCQURf ViwgIEJBRF9WLCAgQkFEX1YsICBCQURfViwNCj4gQkFEX1YsICBCQURfViwgICAvLyAgYjANCj4g PiAtICBCQURfViwgIEJBRF9WLCAgQkFEX1YsICBCQURfViwgIEJBRF9WLCAgQkFEX1YsICBCQURf ViwgIEJBRF9WLCAgQkFEX1YsICBCQURfViwgIEJBRF9WLCAgQkFEX1YsICBCQURfViwgIEJBRF9W LA0KPiBCQURfViwgIEJBRF9WLCAgIC8vICBjMA0KPiA+IC0gIEJBRF9WLCAgQkFEX1YsICBCQURf ViwgIEJBRF9WLCAgQkFEX1YsICBCQURfViwgIEJBRF9WLCAgQkFEX1YsICBCQURfViwgIEJBRF9W LCAgQkFEX1YsICBCQURfViwgIEJBRF9WLCAgQkFEX1YsDQo+IEJBRF9WLCAgQkFEX1YsICAgLy8g IGQwDQo+ID4gLSAgQkFEX1YsICBCQURfViwgIEJBRF9WLCAgQkFEX1YsICBCQURfViwgIEJBRF9W LCAgQkFEX1YsICBCQURfViwgIEJBRF9WLCAgQkFEX1YsICBCQURfViwgIEJBRF9WLCAgQkFEX1Ys ICBCQURfViwNCj4gQkFEX1YsICBCQURfViwgICAvLyAgZDANCj4gPiAtICBCQURfViwgIEJBRF9W LCAgQkFEX1YsICBCQURfViwgIEJBRF9WLCAgQkFEX1YsICBCQURfViwgIEJBRF9WLCAgQkFEX1Ys ICBCQURfViwgIEJBRF9WLCAgQkFEX1YsICBCQURfViwgIEJBRF9WLA0KPiBCQURfViwgIEJBRF9W ICAgIC8vICBmMA0KPiA+IC19Ow0KPiA+IC0NCj4gPiAgLyoqDQo+ID4gICAgQ29udmVydCBiaW5h cnkgZGF0YSB0byBhIEJhc2U2NCBlbmNvZGVkIGFzY2lpIHN0cmluZyBiYXNlZCBvbiBSRkM0NjQ4 Lg0KPiA+DQo+ID4gQEAgLTE5MTgsMTc0ICsxODgzLDk4IEBAIEJhc2U2NEVuY29kZSAoDQo+ID4g IH0NCj4gPg0KPiA+ICAvKioNCj4gPiAtICBDb252ZXJ0IEJhc2U2NCBhc2NpaSBzdHJpbmcgdG8g YmluYXJ5IGRhdGEgYmFzZWQgb24gUkZDNDY0OC4NCj4gPiAtDQo+ID4gLSAgUHJvZHVjZSBOdWxs LXRlcm1pbmF0ZWQgYmluYXJ5IGRhdGEgaW4gdGhlIG91dHB1dCBidWZmZXIgc3BlY2lmaWVkIGJ5 IERlc3RpbmF0aW9uIGFuZCBEZXN0aW5hdGlvblNpemUuDQo+ID4gLSAgVGhlIGJpbmFyeSBkYXRh IGlzIHByb2R1Y2VkIGJ5IGNvbnZlcnRpbmcgdGhlIEJhc2U2NCBhc2NpaSBzdHJpbmcgc3BlY2lm aWVkIGJ5IFNvdXJjZSBhbmQgU291cmNlTGVuZ3RoLg0KPiA+IC0NCj4gPiAtICBAcGFyYW0gU291 cmNlICAgICAgICAgICAgSW5wdXQgQVNDSUkgY2hhcmFjdGVycw0KPiA+IC0gIEBwYXJhbSBTb3Vy Y2VMZW5ndGggICAgICBOdW1iZXIgb2YgQVNDSUkgY2hhcmFjdGVycw0KPiA+IC0gIEBwYXJhbSBE ZXN0aW5hdGlvbiAgICAgICBQb2ludGVyIHRvIG91dHB1dCBidWZmZXINCj4gPiAtICBAcGFyYW0g RGVzdGluYXRpb25TaXplICAgQ2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBwYXNzaW5nIGluIGJ1 ZmZlciBvZiBhdCBsZWFzdCBEZXN0aW5hdGlvblNpemUuDQo+ID4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgIFNldCAwIHRvIGdldCB0aGUgc2l6ZSBuZWVkZWQuIFNldCB0byBieXRlcyBzdG9y ZWQgb24gcmV0dXJuLg0KPiA+IC0NCj4gPiAtICBAcmV0dmFsIFJFVFVSTl9TVUNDRVNTICAgICAg ICAgICAgIFdoZW4gYmluYXJ5IGJ1ZmZlciBpcyBmaWxsZWQgaW4uDQo+ID4gLSAgQHJldHZhbCBS RVRVUk5fSU5WQUxJRF9QQVJBTUVURVIgICBJZiBTb3VyY2UgaXMgTlVMTCBvciBEZXN0aW5hdGlv blNpemUgaXMgTlVMTC4NCj4gPiAtICBAcmV0dmFsIFJFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiAg IElmIFNvdXJjZUxlbmd0aCBvciBEZXN0aW5hdGlvblNpemUgaXMgYmlnZ2VyIHRoYW4gKE1BWF9B RERSRVNTIC0oVUlOVE4pRGVzdGluYXRpb24gKS4NCj4gPiAtICBAcmV0dmFsIFJFVFVSTl9JTlZB TElEX1BBUkFNRVRFUiAgIElmIHRoZXJlIGlzIGFueSBpbnZhbGlkIGNoYXJhY3RlciBpbiBpbnB1 dCBzdHJlYW0uDQo+ID4gLSAgQHJldHZhbCBSRVRVUk5fQlVGRkVSX1RPT19TTUFMTCAgICBJZiBi dWZmZXIgbGVuZ3RoIGlzIHNtYWxsZXIgdGhhbiByZXF1aXJlZCBidWZmZXIgc2l6ZS4NCj4gPiAt ICoqLw0KPiA+ICsgIERlY29kZSBCYXNlNjQgQVNDSUkgZW5jb2RlZCBkYXRhIHRvIDgtYml0IGJp bmFyeSByZXByZXNlbnRhdGlvbiwgYmFzZWQgb24NCj4gPiArICBSRkM0NjQ4Lg0KPiA+ICsNCj4g PiArICBEZWNvZGluZyBvY2N1cnMgYWNjb3JkaW5nIHRvICJUYWJsZSAxOiBUaGUgQmFzZSA2NCBB bHBoYWJldCIgaW4gUkZDNDY0OC4NCj4gPiArDQo+ID4gKyAgV2hpdGVzcGFjZSBpcyBpZ25vcmVk IGF0IGFsbCBwb3NpdGlvbnM6DQo+ID4gKyAgLSAweDA5ICgnXHQnKSBob3Jpem9udGFsIHRhYg0K PiA+ICsgIC0gMHgwQSAoJ1xuJykgbmV3IGxpbmUNCj4gPiArICAtIDB4MEIgKCdcdicpIHZlcnRp Y2FsIHRhYg0KPiA+ICsgIC0gMHgwQyAoJ1xmJykgZm9ybSBmZWVkDQo+ID4gKyAgLSAweDBEICgn XHInKSBjYXJyaWFnZSByZXR1cm4NCj4gPiArICAtIDB4MjAgKCcgJykgIHNwYWNlDQo+ID4gKw0K PiA+ICsgIFRoZSBtaW5pbXVtIGFtb3VudCBvZiByZXF1aXJlZCBwYWRkaW5nICh3aXRoIEFTQ0lJ IDB4M0QsICc9JykgaXMgdG9sZXJhdGVkDQo+ID4gKyAgYW5kIGVuZm9yY2VkIGF0IHRoZSBlbmQg b2YgdGhlIEJhc2U2NCBBU0NJSSBlbmNvZGVkIGRhdGEsIGFuZCBvbmx5IHRoZXJlLg0KPiA+ICsN Cj4gPiArICBPdGhlciBjaGFyYWN0ZXJzIG91dHNpZGUgb2YgdGhlIGVuY29kaW5nIGFscGhhYmV0 IGNhdXNlIHRoZSBmdW5jdGlvbiB0bw0KPiA+ICsgIHJlamVjdCB0aGUgQmFzZTY0IEFTQ0lJIGVu Y29kZWQgZGF0YS4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSBTb3VyY2UgICAgICAgICAgICAg ICBBcnJheSBvZiBDSEFSOCBlbGVtZW50cyBjb250YWluaW5nIHRoZSBCYXNlNjQNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTQ0lJIGVuY29kaW5nLiBNYXkgYmUgTlVM TCBpZiBTb3VyY2VTaXplIGlzDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB6ZXJvLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dIFNvdXJjZVNpemUgICAgICAgICAgIE51 bWJlciBvZiBDSEFSOCBlbGVtZW50cyBpbiBTb3VyY2UuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtv dXRdIERlc3RpbmF0aW9uICAgICAgICAgQXJyYXkgb2YgVUlOVDggZWxlbWVudHMgcmVjZWl2aW5n IHRoZSBkZWNvZGVkDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LWJp dCBiaW5hcnkgcmVwcmVzZW50YXRpb24uIEFsbG9jYXRlZCBieSB0aGUNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxlci4gTWF5IGJlIE5VTEwgaWYgRGVzdGluYXRp b25TaXplIGlzDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6ZXJvIG9u IGlucHV0LiBJZiBOVUxMLCBkZWNvZGluZyBpcw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcGVyZm9ybWVkLCBidXQgdGhlIDgtYml0IGJpbmFyeQ0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwcmVzZW50YXRpb24gaXMgbm90IHN0b3JlZC4g SWYgbm9uLU5VTEwgYW5kDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0 aGUgZnVuY3Rpb24gcmV0dXJucyBhbiBlcnJvciwgdGhlIGNvbnRlbnRzDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBEZXN0aW5hdGlvbiBhcmUgaW5kZXRlcm1pbmF0 ZS4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luLG91dF0gRGVzdGluYXRpb25TaXplICBPbiBpbnB1 dCwgdGhlIG51bWJlciBvZiBVSU5UOCBlbGVtZW50cyB0aGF0DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB0aGUgY2FsbGVyIGFsbG9jYXRlZCBmb3IgRGVzdGluYXRpb24u IE9uDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQsIGlmIHRo ZSBmdW5jdGlvbiByZXR1cm5zDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBSRVRVUk5fU1VDQ0VTUyBvciBSRVRVUk5fQlVGRkVSX1RPT19TTUFMTCwNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBudW1iZXIgb2YgVUlOVDggZWxlbWVudHMg dGhhdCBhcmUNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVk IGZvciBkZWNvZGluZyB0aGUgQmFzZTY0IEFTQ0lJDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICByZXByZXNlbnRhdGlvbi4gSWYgdGhlIGZ1bmN0aW9uIHJldHVybnMgYQ0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgZGlmZmVyZW50IGZy b20gYm90aCBSRVRVUk5fU1VDQ0VTUyBhbmQNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFJFVFVSTl9CVUZGRVJfVE9PX1NNQUxMLCB0aGVuIERlc3RpbmF0aW9uU2l6ZQ0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgaW5kZXRlcm1pbmF0ZSBv biBvdXRwdXQuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgUkVUVVJOX1NVQ0NFU1MgICAgICAgICAg ICBTb3VyY2VTaXplIENIQVI4IGVsZW1lbnRzIGF0IFNvdXJjZSBoYXZlDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZW4gZGVjb2RlZCB0byBvbi1vdXRwdXQgRGVz dGluYXRpb25TaXplDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJ TlQ4IGVsZW1lbnRzIGF0IERlc3RpbmF0aW9uLiBOb3RlIHRoYXQNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUkVUVVJOX1NVQ0NFU1MgY292ZXJzIHRoZSBjYXNlIHdo ZW4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVzdGluYXRpb25T aXplIGlzIHplcm8gb24gaW5wdXQsIGFuZA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBTb3VyY2UgZGVjb2RlcyB0byB6ZXJvIGJ5dGVzIChkdWUgdG8NCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmluZyBhdCBtb3N0IGlnbm9y ZWQgd2hpdGVzcGFjZSkuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgUkVUVVJOX0JVRkZFUl9UT09f U01BTEwgICBUaGUgaW5wdXQgdmFsdWUgb2YgRGVzdGluYXRpb25TaXplIGlzIG5vdA0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXJnZSBlbm91Z2ggZm9yIGRlY29k aW5nIFNvdXJjZVNpemUgQ0hBUjgNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZWxlbWVudHMgYXQgU291cmNlLiBUaGUgcmVxdWlyZWQgbnVtYmVyIG9mDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJTlQ4IGVsZW1lbnRzIGhhcyBiZWVu IHN0b3JlZCB0bw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXN0 aW5hdGlvblNpemUuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgUkVUVVJOX0lOVkFMSURfUEFSQU1F VEVSICBEZXN0aW5hdGlvblNpemUgaXMgTlVMTC4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBSRVRV Uk5fSU5WQUxJRF9QQVJBTUVURVIgIFNvdXJjZSBpcyBOVUxMLCBidXQgU291cmNlU2l6ZSBpcyBu b3QgemVyby4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBSRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIg IERlc3RpbmF0aW9uIGlzIE5VTEwsIGJ1dCBEZXN0aW5hdGlvblNpemUgaXMNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90IHplcm8gb24gaW5wdXQuDQo+ID4gKw0K PiA+ICsgIEByZXR2YWwgUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSICBTb3VyY2UgaXMgbm9uLU5V TEwsIGFuZCAoU291cmNlICsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgU291cmNlU2l6ZSkgd291bGQgd3JhcCBhcm91bmQgTUFYX0FERFJFU1MuDQo+ID4gKw0KPiA+ ICsgIEByZXR2YWwgUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSICBEZXN0aW5hdGlvbiBpcyBub24t TlVMTCwgYW5kIChEZXN0aW5hdGlvbiArDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIERlc3RpbmF0aW9uU2l6ZSkgd291bGQgd3JhcCBhcm91bmQNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUFYX0FERFJFU1MsIGFzIHNwZWNpZmllZCBv biBpbnB1dC4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBSRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIg IE5vbmUgb2YgU291cmNlIGFuZCBEZXN0aW5hdGlvbiBhcmUgTlVMTCwNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIENIQVI4W1NvdXJjZVNpemVdIGF0IFNvdXJj ZSBvdmVybGFwcw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSU5U OFtEZXN0aW5hdGlvblNpemVdIGF0IERlc3RpbmF0aW9uLCBhcw0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZWQgb24gaW5wdXQuDQo+ID4gKw0KPiA+ICsg IEByZXR2YWwgUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSICBJbnZhbGlkIENIQVI4IGVsZW1lbnQg ZW5jb3VudGVyZWQgaW4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg U291cmNlLg0KPiA+ICsqKi8NCj4gPiAgUkVUVVJOX1NUQVRVUw0KPiA+ICBFRklBUEkNCj4gPiAg QmFzZTY0RGVjb2RlICgNCj4gPiAtICBJTiAgQ09OU1QgQ0hBUjggICpTb3VyY2UsDQo+ID4gLSAg SU4gICAgICAgIFVJTlROICAgU291cmNlTGVuZ3RoLA0KPiA+IC0gIE9VVCAgICAgICBVSU5UOCAg KkRlc3RpbmF0aW9uICAgT1BUSU9OQUwsDQo+ID4gLSAgSU4gT1VUICAgIFVJTlROICAqRGVzdGlu YXRpb25TaXplDQo+ID4gKyAgSU4gICAgIENPTlNUIENIQVI4ICpTb3VyY2UgICAgICAgICAgT1BU SU9OQUwsDQo+ID4gKyAgSU4gICAgIFVJTlROICAgICAgIFNvdXJjZVNpemUsDQo+ID4gKyAgT1VU ICAgIFVJTlQ4ICAgICAgICpEZXN0aW5hdGlvbiAgICAgT1BUSU9OQUwsDQo+ID4gKyAgSU4gT1VU IFVJTlROICAgICAgICpEZXN0aW5hdGlvblNpemUNCj4gPiAgICApDQo+ID4gIHsNCj4gPiAtDQo+ ID4gLSAgVUlOVDMyICAgVmFsdWU7DQo+ID4gLSAgQ0hBUjggICAgQ2hyOw0KPiA+IC0gIElOVE4g ICAgIEJ1ZmZlclNpemU7DQo+ID4gLSAgVUlOVE4gICAgU291cmNlSW5kZXg7DQo+ID4gLSAgVUlO VE4gICAgRGVzdGluYXRpb25JbmRleDsNCj4gPiAtICBVSU5UTiAgICBJbmRleDsNCj4gPiAtICBV SU5UTiAgICBBY3R1YWxTb3VyY2VMZW5ndGg7DQo+ID4gLQ0KPiA+IC0gIC8vDQo+ID4gLSAgLy8g Q2hlY2sgcG9pbnRlcnMgYXJlIG5vdCBOVUxMDQo+ID4gLSAgLy8NCj4gPiAtICBpZiAoKFNvdXJj ZSA9PSBOVUxMKSB8fCAoRGVzdGluYXRpb25TaXplID09IE5VTEwpKSB7DQo+ID4gLSAgICByZXR1 cm4gUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSOw0KPiA+IC0gIH0NCj4gPiAtDQo+ID4gLSAgLy8N Cj4gPiAtICAvLyBDaGVjayBpZiBTb3VyY2VMZW5ndGggb3IgIERlc3RpbmF0aW9uU2l6ZSBpcyB2 YWxpZA0KPiA+IC0gIC8vDQo+ID4gLSAgaWYgKChTb3VyY2VMZW5ndGggPj0gKE1BWF9BRERSRVNT IC0gKFVJTlROKVNvdXJjZSkpIHx8ICgqRGVzdGluYXRpb25TaXplID49IChNQVhfQUREUkVTUyAt IChVSU5UTilEZXN0aW5hdGlvbikpKXsNCj4gPiAtICAgIHJldHVybiBSRVRVUk5fSU5WQUxJRF9Q QVJBTUVURVI7DQo+ID4gLSAgfQ0KPiA+IC0NCj4gPiAtICBBY3R1YWxTb3VyY2VMZW5ndGggPSAw Ow0KPiA+IC0gIEJ1ZmZlclNpemUgPSAwOw0KPiA+IC0NCj4gPiAtICAvLw0KPiA+IC0gIC8vIERl dGVybWluZSB0aGUgYWN0dWFsIG51bWJlciBvZiB2YWxpZCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJp bmcuDQo+ID4gLSAgLy8gQWxsIGludmFsaWQgY2hhcmFjdGVycyBleGNlcHQgc2VsZWN0ZWQgd2hp dGUgc3BhY2UgY2hhcmFjdGVycywNCj4gPiAtICAvLyB3aWxsIGNhdXNlIHRoZSBCYXNlNjQgc3Ry aW5nIHRvIGJlIHJlamVjdGVkLiBXaGl0ZSBzcGFjZSB0byBhbGxvdw0KPiA+IC0gIC8vIHByb3Bl cmx5IGZvcm1hdHRlZCBYTUwgd2lsbCBiZSBpZ25vcmVkLg0KPiA+IC0gIC8vDQo+ID4gLSAgLy8g U2VlIHNlY3Rpb24gMy4zIG9mIFJGQyA0NjQ4Lg0KPiA+IC0gIC8vDQo+ID4gLSAgZm9yIChTb3Vy Y2VJbmRleCA9IDA7IFNvdXJjZUluZGV4IDwgU291cmNlTGVuZ3RoOyBTb3VyY2VJbmRleCsrKSB7 DQo+ID4gLQ0KPiA+IC0gICAgLy8NCj4gPiAtICAgIC8vICc9JyBpcyBwYXJ0IG9mIHRoZSBxdWFu dHVtDQo+ID4gLSAgICAvLw0KPiA+IC0gICAgaWYgKFNvdXJjZVtTb3VyY2VJbmRleF0gPT0gJz0n KSB7DQo+ID4gLSAgICAgIEFjdHVhbFNvdXJjZUxlbmd0aCsrOw0KPiA+IC0gICAgICBCdWZmZXJT aXplLS07DQo+ID4gLQ0KPiA+IC0gICAgICAvLw0KPiA+IC0gICAgICAvLyBPbmx5IHR3byAnPScg Y2hhcmFjdGVycyBjYW4gYmUgdmFsaWQuDQo+ID4gLSAgICAgIC8vDQo+ID4gLSAgICAgIGlmIChC dWZmZXJTaXplIDwgLTIpIHsNCj4gPiAtICAgICAgICByZXR1cm4gUkVUVVJOX0lOVkFMSURfUEFS QU1FVEVSOw0KPiA+IC0gICAgICB9DQo+ID4gLSAgICB9DQo+ID4gLSAgICBlbHNlIHsNCj4gPiAt ICAgICAgQ2hyID0gU291cmNlW1NvdXJjZUluZGV4XTsNCj4gPiAtICAgICAgaWYgKEJBRF9WICE9 IERlY29kaW5nVGFibGVbKFVJTlQ4KSBDaHJdKSB7DQo+ID4gLQ0KPiA+IC0gICAgICAgIC8vDQo+ ID4gLSAgICAgICAgLy8gVGhlICc9JyBjaGFyYWN0ZXJzIGFyZSBvbmx5IHZhbGlkIGF0IHRoZSBl bmQsIHNvIGFueQ0KPiA+IC0gICAgICAgIC8vIHZhbGlkIGNoYXJhY3RlciBhZnRlciBhbiAnPScs IHdpbGwgYmUgZmxhZ2dlZCBhcyBhbiBlcnJvci4NCj4gPiAtICAgICAgICAvLw0KPiA+IC0gICAg ICAgIGlmIChCdWZmZXJTaXplIDwgMCkgew0KPiA+IC0gICAgICAgICAgcmV0dXJuIFJFVFVSTl9J TlZBTElEX1BBUkFNRVRFUjsNCj4gPiAtICAgICAgICB9DQo+ID4gLSAgICAgICAgICBBY3R1YWxT b3VyY2VMZW5ndGgrKzsNCj4gPiAtICAgICAgfQ0KPiA+IC0gICAgICAgIGVsc2Ugew0KPiA+IC0N Cj4gPiAtICAgICAgICAvLw0KPiA+IC0gICAgICAgIC8vIFRoZSByZXNldCBvZiB0aGUgZGVjb2Rl ciB3aWxsIGlnbm9yZSBhbGwgaW52YWxpZCBjaGFyYWN0ZXJzIGFsbG93ZWQgaGVyZS4NCj4gPiAt ICAgICAgICAvLyBJZ25vcmluZyBzZWxlY3RlZCB3aGl0ZSBzcGFjZSBpcyB1c2VmdWwuICBJbiB0 aGlzIGNhc2UsIHRoZSBkZWNvZGVyIHdpbGwNCj4gPiAtICAgICAgICAvLyBpZ25vcmUgJyAnLCAn XHQnLCAnXG4nLCBhbmQgJ1xyJy4NCj4gPiAtICAgICAgICAvLw0KPiA+IC0gICAgICAgIGlmICgo Q2hyICE9ICcgJykgJiYoQ2hyICE9ICdcdCcpICYmKENociAhPSAnXG4nKSAmJihDaHIgIT0gJ1xy JykpIHsNCj4gPiAtICAgICAgICAgIHJldHVybiBSRVRVUk5fSU5WQUxJRF9QQVJBTUVURVI7DQo+ ID4gLSAgICAgICAgfQ0KPiA+IC0gICAgICB9DQo+ID4gLSAgICB9DQo+ID4gLSAgfQ0KPiA+IC0N Cj4gPiAtICAvLw0KPiA+IC0gIC8vIFRoZSBCYXNlNjQgY2hhcmFjdGVyIHN0cmluZyBtdXN0IGJl IGEgbXVsdGlwbGUgb2YgNCBjaGFyYWN0ZXIgcXVhbnR1bXMuDQo+ID4gLSAgLy8NCj4gPiAtICBp ZiAoQWN0dWFsU291cmNlTGVuZ3RoICUgNCAhPSAwKSB7DQo+ID4gLSAgICByZXR1cm4gUkVUVVJO X0lOVkFMSURfUEFSQU1FVEVSOw0KPiA+IC0gIH0NCj4gPiAtDQo+ID4gLSAgQnVmZmVyU2l6ZSAr PSBBY3R1YWxTb3VyY2VMZW5ndGggLyA0ICogMzsNCj4gPiAtICAgIGlmIChCdWZmZXJTaXplIDwg MCkgew0KPiA+IC0gICAgICByZXR1cm4gUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSOw0KPiA+IC0g IH0NCj4gPiAtDQo+ID4gLSAgLy8NCj4gPiAtICAvLyBCdWZmZXJTaXplIGlzID49IDANCj4gPiAt ICAvLw0KPiA+IC0gIGlmICgoRGVzdGluYXRpb24gPT0gTlVMTCkgfHwgKCpEZXN0aW5hdGlvblNp emUgPCAoVUlOVE4pIEJ1ZmZlclNpemUpKSB7DQo+ID4gLSAgICAqRGVzdGluYXRpb25TaXplID0g QnVmZmVyU2l6ZTsNCj4gPiAtICAgIHJldHVybiBSRVRVUk5fQlVGRkVSX1RPT19TTUFMTDsNCj4g PiAtICB9DQo+ID4gLQ0KPiA+IC0gIC8vDQo+ID4gLSAgLy8gSWYgbm8gZGVjb2RhYmxlIGNoYXJh Y3RlcnMsIHJldHVybiBhIHNpemUgb2YgemVyby4gUkZDIDQ2ODYgdGVzdCB2ZWN0b3IgMS4NCj4g PiAtICAvLw0KPiA+IC0gIGlmIChBY3R1YWxTb3VyY2VMZW5ndGggPT0gMCkgew0KPiA+IC0gICAg KkRlc3RpbmF0aW9uU2l6ZSA9IDA7DQo+ID4gLSAgICByZXR1cm4gUkVUVVJOX1NVQ0NFU1M7DQo+ ID4gLSAgfQ0KPiA+IC0NCj4gPiAtICAvLw0KPiA+IC0gIC8vIElucHV0IGRhdGEgaXMgdmVyaWZp ZWQgdG8gYmUgYSBtdWx0aXBsZSBvZiA0IHZhbGlkIGNoYXJjdGVycy4gIFByb2Nlc3MgZm91cg0K PiA+IC0gIC8vIGNoYXJhY3RlcnMgYXQgYSB0aW1lLiBVbmNvdW50ZWQgKGllLiBpbnZhbGlkKSAg Y2hhcmFjdGVycyB3aWxsIGJlIGlnbm9yZWQuDQo+ID4gLSAgLy8NCj4gPiAtICBmb3IgKFNvdXJj ZUluZGV4ID0gMCwgRGVzdGluYXRpb25JbmRleCA9IDA7IChTb3VyY2VJbmRleCA8IFNvdXJjZUxl bmd0aCkgJiYgKERlc3RpbmF0aW9uSW5kZXggPCAqRGVzdGluYXRpb25TaXplKTsgKSB7DQo+ID4g LSAgICBWYWx1ZSA9IDA7DQo+ID4gLQ0KPiA+IC0gICAgLy8NCj4gPiAtICAgIC8vIEdldCAyNCBi aXRzIG9mIGRhdGEgZnJvbSA0IGlucHV0IGNoYXJhY3RlcnMsIGVhY2ggY2hhcmFjdGVyIHJlcHJl c2VudGluZyA2IGJpdHMNCj4gPiAtICAgIC8vDQo+ID4gLSAgICBmb3IgKEluZGV4ID0gMDsgSW5k ZXggPCA0OyBJbmRleCsrKSB7DQo+ID4gLSAgICAgIGRvIHsNCj4gPiAtICAgICAgQ2hyID0gRGVj b2RpbmdUYWJsZVsoVUlOVDgpIFNvdXJjZVtTb3VyY2VJbmRleCsrXV07DQo+ID4gLSAgICAgIH0g d2hpbGUgKENociA9PSBCQURfVik7DQo+ID4gLSAgICAgIFZhbHVlIDw8PSA2Ow0KPiA+IC0gICAg ICBWYWx1ZSB8PSAoVUlOVDMyKUNocjsNCj4gPiAtICAgIH0NCj4gPiAtDQo+ID4gLSAgICAvLw0K PiA+IC0gICAgLy8gU3RvcmUgMyBieXRlcyBvZiBiaW5hcnkgZGF0YSAoMjQgYml0cykNCj4gPiAt ICAgIC8vDQo+ID4gLSAgICAqRGVzdGluYXRpb24rKyA9IChVSU5UOCkgKFZhbHVlID4+IDE2KTsN Cj4gPiAtICAgIERlc3RpbmF0aW9uSW5kZXgrKzsNCj4gPiAtDQo+ID4gLSAgICAvLw0KPiA+IC0g ICAgLy8gRHVlIHRvIHRoZSAnPScgc3BlY2lhbCBjYXNlcyBmb3IgdGhlIHR3byBieXRlcyBhdCB0 aGUgZW5kLA0KPiA+IC0gICAgLy8gd2UgaGF2ZSB0byBjaGVjayB0aGUgbGVuZ3RoIGFuZCBub3Qg c3RvcmUgdGhlIHBhZGRpbmcgZGF0YQ0KPiA+IC0gICAgLy8NCj4gPiAtICAgIGlmIChEZXN0aW5h dGlvbkluZGV4KysgPCAqRGVzdGluYXRpb25TaXplKSB7DQo+ID4gLSAgICAgICpEZXN0aW5hdGlv bisrID0gKFVJTlQ4KSAoVmFsdWUgPj4gIDgpOw0KPiA+IC0gICAgfQ0KPiA+IC0gICAgaWYgKERl c3RpbmF0aW9uSW5kZXgrKyA8ICpEZXN0aW5hdGlvblNpemUpIHsNCj4gPiAtICAgICAgKkRlc3Rp bmF0aW9uKysgPSAoVUlOVDgpIFZhbHVlOw0KPiA+IC0gICAgfQ0KPiA+IC0gIH0NCj4gPiAtDQo+ ID4gLSAgcmV0dXJuIFJFVFVSTl9TVUNDRVNTOw0KPiA+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ ICsgIHJldHVybiBSRVRVUk5fSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4gIH0NCj4gPg0KPiA+ICAv KioNCj4gPg0KPiANCj4gDQo+IA0KDQo=