From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=134.134.136.24; helo=mga09.intel.com; envelope-from=jaben.carsey@intel.com; receiver=edk2-devel@lists.01.org Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 4A1BD21D2BEFA for ; Fri, 12 Jan 2018 07:34:27 -0800 (PST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 12 Jan 2018 07:39:40 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.46,349,1511856000"; d="scan'208";a="18713855" Received: from fmsmsx107.amr.corp.intel.com ([10.18.124.205]) by FMSMGA003.fm.intel.com with ESMTP; 12 Jan 2018 07:39:40 -0800 Received: from fmsmsx113.amr.corp.intel.com (10.18.116.7) by fmsmsx107.amr.corp.intel.com (10.18.124.205) with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 12 Jan 2018 07:39:39 -0800 Received: from fmsmsx103.amr.corp.intel.com ([169.254.2.195]) by FMSMSX113.amr.corp.intel.com ([169.254.13.139]) with mapi id 14.03.0319.002; Fri, 12 Jan 2018 07:39:39 -0800 From: "Carsey, Jaben" To: Evan Lloyd , "Ni, Ruiyu" , "Yao, Jiewen" , "edk2-devel (edk2-devel@lists.01.org)" CC: nd , "leif.lindholm@linaro.org" Thread-Topic: [edk2] FW: [PATCH] ShellPkg: Add acpiview tool to dump ACPI tables Thread-Index: AQHTi6Gvm0+CVcr130mCyq7e3Zmjs6NwW3jg Date: Fri, 12 Jan 2018 15:39:38 +0000 Message-ID: References: <20171215192837.19552-1-evan.lloyd@arm.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiZTg4NjA2ZGEtNDBkNi00Y2Q0LWI5OWItMjhiYjRkNTE0YTFkIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE2LjUuOS4zIiwiVHJ1c3RlZExhYmVsSGFzaCI6ImJTSThzRTJNZENYVHQzYnlCdFdrcnZ4Z0prUFVkOTZ6c2RcL2tZTGFXbko4PSJ9 x-ctpclassification: CTP_NT x-originating-ip: [10.1.200.107] MIME-Version: 1.0 Subject: Re: FW: [PATCH] ShellPkg: Add acpiview tool to dump ACPI tables X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 12 Jan 2018 15:34:27 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 T2suICBTbyB0aGlzIGlzIGEgbG90IG9mIGNvZGUgc28gSSBtYWtlIG5vIGNvbW1pdG1lbnQgdGhh dCBJIGRpZG7igJl0IG1pc3Mgc29tZXRoaW5nLiAgSSByZWFsbHkgbGlrZSB0aGUgaWRlYSBvZiBo YXZpbmcgYSB2aWV3ZXIgZm9yIEFDUEkgdGFibGVzLg0KDQoxKSBDYW4gdGhlIGluZGl2aWR1YWwg ImNoaWxkIiBsaWJyYXJpZXMgYmUgcGxhY2VkIGludG8gc3ViZGlyZWN0b3JpZXMgdW5kZXIgVWVm aVNoZWxsQWNwaVZpZXdDb21tYW5kTGliIGRpcmVjdG9yeSBmb3IgY2xlYXIgc2VwYXJhdGlvbj8N Cg0KMikgSW4gVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliLGMgd2hhdCdzIHRoZSBtb3RpdmF0 aW9uIGZvciBhbGwgdGhlIHdyYXBwZXJzIGFyb3VuZCBwcmludD8gSSBzZWUgdGhhdCBzb21lIGFy ZSBmb3IgbWVtb3J5IGFjY2VzcyByZXN0cmljdGlvbnMsIGJ1dCB0aGUgcmVzdD8gIFByaW50R3Vp ZCwgbG9va3MgdGhlIHNhbWUgYXMgdXNpbmcgJWcgd2l0aCBQcmludCgpLi4uDQoNCjMpIERvIHdl IHdhbnQgdG8gY2hhbmdlIHRoZSBtYWluIGVudHJ5cG9pbnQgdG8gYSBEeW5hbWljQ29tbWFuZCBz aW5jZSB0aGlzIGNvbW1hbmQgaXMgbm90IGluIHRoZSBzaGVsbCBzcGVjPyBJZiB5ZXMsIGRvIHdl IHdhbnQgdG8gZG8gdGhhdCBmaXJzdCBvciBhZnRlcj8NCg0KLUphYmVuDQoNCj4gLS0tLS1Pcmln aW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogZWRrMi1kZXZlbCBbbWFpbHRvOmVkazItZGV2ZWwt Ym91bmNlc0BsaXN0cy4wMS5vcmddIE9uIEJlaGFsZiBPZg0KPiBFdmFuIExsb3lkDQo+IFNlbnQ6 IEZyaWRheSwgSmFudWFyeSAxMiwgMjAxOCA0OjM0IEFNDQo+IFRvOiBOaSwgUnVpeXUgPHJ1aXl1 Lm5pQGludGVsLmNvbT47IENhcnNleSwgSmFiZW4NCj4gPGphYmVuLmNhcnNleUBpbnRlbC5jb20+ OyBZYW8sIEppZXdlbiA8amlld2VuLnlhb0BpbnRlbC5jb20+OyBlZGsyLQ0KPiBkZXZlbCAoZWRr Mi1kZXZlbEBsaXN0cy4wMS5vcmcpIDxlZGsyLWRldmVsQGxpc3RzLjAxLm9yZz4NCj4gQ2M6IG5k IDxuZEBhcm0uY29tPjsgbGVpZi5saW5kaG9sbUBsaW5hcm8ub3JnDQo+IFN1YmplY3Q6IFtlZGsy XSBGVzogW1BBVENIXSBTaGVsbFBrZzogQWRkIGFjcGl2aWV3IHRvb2wgdG8gZHVtcCBBQ1BJIHRh Ymxlcw0KPiBJbXBvcnRhbmNlOiBIaWdoDQo+IA0KPiBJIHN1Ym1pdHRlZCB0aGlzIHBhdGNoIGZy b20gU2FtaSBsYXN0IG1vbnRoLCBidXQgdGhlIGUtbWFpbCBhZGRyZXNzZXMgZ290DQo+IG1lc3Nl ZCB1cC4NCj4gSXQgaXMgYSBuZXcgdmVyc2lvbiBvZiBoaXMgIkFjcGlWaWV3IiB1cGRhdGVkIGlu IHJlc3BvbnNlIHRvIGNvbW1lbnRzLCBhbmQNCj4gdG8gbWF0Y2ggQUNQSSA2LjIuDQo+IEl0IGFs c28gbm93IG1hdGNoZXMgRUNSIDE3ODQgKGZvciBjb21tYW5kIGxpbmUgb3B0aW9ucykuDQo+IFRo ZSBjb2RlIGNhbiBiZSBzZWVuIGF0DQo+IGh0dHBzOi8vZ2l0aHViLmNvbS9FdmFuTGxveWQvdGlh bm9jb3JlL3RyZWUvMTg4X2FjcGl2aWV3X3YyDQo+IEZyb20gaHR0cHM6Ly9idWd6aWxsYS50aWFu b2NvcmUub3JnL3Nob3dfYnVnLmNnaT9pZD04MDUsIGl0IGNhbiBub3cgYmUNCj4gYWRkZWQgdG8g ZWRrMiAobm90IGp1c3Qgc3RhZ2luZykuDQo+IA0KPiBSZWdhcmRzLA0KPiBFdmFuDQo+IA0KPiAt LS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBlZGsyLWRldmVsIFttYWlsdG86ZWRr Mi1kZXZlbC1ib3VuY2VzQGxpc3RzLjAxLm9yZ10gT24gQmVoYWxmIE9mDQo+IGV2YW4ubGxveWRA YXJtLmNvbQ0KPiBTZW50OiAxNSBEZWNlbWJlciAyMDE3IDE5OjI5DQo+IFRvOiBlZGsyLWRldmVs QGxpc3RzLjAxLm9yZw0KPiBDYzogInJ1aXl1Lm5pQGludGVsLmNvbSJAYXJtLmNvbTsgIk1hdHRl by5DYXJsaW5pQGFybS5jb20iQGFybS5jb207DQo+ICJuZEBhcm0uY29tIkBhcm0uY29tOyAiYXJk LmJpZXNoZXV2ZWxAbGluYXJvLm9yZyJAYXJtLmNvbTsNCj4gInNhbWkubXVqYXdhckBhcm0uY29t IkBhcm0uY29tOyAiamlld2VuLnlhb0BpbnRlbC5jb20gIkBhcm0uY29tOw0KPiAibGVpZi5saW5k aG9sbUBsaW5hcm8ub3JnIkBhcm0uY29tDQo+IFN1YmplY3Q6IFtlZGsyXSBbUEFUQ0hdIFNoZWxs UGtnOiBBZGQgYWNwaXZpZXcgdG9vbCB0byBkdW1wIEFDUEkgdGFibGVzDQo+IA0KPiBGcm9tOiBT YW1pIE11amF3YXIgPHNhbWkubXVqYXdhckBhcm0uY29tPg0KPiANCj4gVGhpcyBwcm9ncmFtIGlz IHByb3ZpZGVkIHRvIGFsbG93IGV4YW1pbmF0aW9uIG9mIEFDUEkgdGFibGUgY29udGVudHMNCj4g ZnJvbSB0aGUgVUVGSSBTaGVsbC4gIFRoaXMgY2FuIGhlbHAgd2l0aCBpbnZlc3RpZ2F0aW9ucywg ZXNwZWNpYWxseSBhdA0KPiB0aGF0IHN0YWdlIHdoZXJlIHRoZSB0YWJsZXMgYXJlIG5vdCBlbmFi bGluZyBhbiBPUyB0byBib290Lg0KPiBUaGUgcHJvZ3JhbSBpcyBub3QgZXhoYXVzdGl2ZSwgYW5k IG9ubHkgZW5jYXBzdWxhdGVzIGRldGFpbGVkIGtub3dsZWRnZQ0KPiBvZiBhIGxpbWl0ZWQgbnVt YmVyIG9mIHRhYmxlIHR5cGVzLg0KPiANCj4gRGVmYXVsdCBiZWhhdmlvdXIgaXMgdG8gZGlzcGxh eSB0aGUgY29udGVudCBvZiBhbGwgdGFibGVzIGluc3RhbGxlZC4NCj4gJ0tub3duJyB0YWJsZSB0 eXBlcyB3aWxsIGJlIHBhcnNlZCBhbmQgZGlzcGxheWVkIHdpdGggZGVzY3JpcHRpb25zIGFuZA0K PiBmaWVsZCB2YWx1ZXMuICBXaGVyZSBhcHByb3ByaWF0ZSBhIGRlZ3JlZSBvZiBjb25zaXN0ZW5j eSBjaGVja2luZyBpcw0KPiBkb25lIGFuZCBlcnJvcnMgbWF5IGJlIHJlcG9ydGVkIGluIHRoZSBv dXRwdXQuDQo+IE90aGVyIHRhYmxlIHR5cGVzIHdpbGwgYmUgZGlzcGxheWVkIGFzIGFuIGFycmF5 IG9mIEhleGFkZWNpbWFsIGJ5dGVzLg0KPiANCj4gVG8gZmFjaWxpdGF0ZSBkZWJ1Z2dpbmcsIHRo ZSAtdCBhbmQgLWIgb3B0aW9ucyBjYW4gYmUgdXNlZCB0byBnZW5lcmF0ZSBhDQo+IGJpbmFyeSBm aWxlIGltYWdlIG9mIGEgdGFibGUgdGhhdCBjYW4gYmUgY29waWVkIGVsc2V3aGVyZSBmb3INCj4g aW52ZXN0aWdhdGlvbiB1c2luZyB0b29scyBzdWNoIGFzIHRob3NlIHByb3ZpZGVkIGJ5IGFjcGlj YS5vcmcuICBUaGlzIGlzDQo+IGVzcGVjaWFsbHkgcmVsZXZhbnQgZm9yIEFNTCB0eXBlIHRhYmxl cyBsaWtlIERTRFQgYW5kIFNTRFQuDQo+IA0KPiBUaGUgaW5zcGlyYXRpb24gZm9yIHRoaXMgaXMg dGhlIGV4aXN0aW5nIHNtYmlvc3ZpZXcgRGVidWcxIFNoZWxsDQo+IGNvbW1hbmQuDQo+IA0KPiBN YW55IHRhYmxlcyBhcmUgbm90IGV4cGxpY2l0bHkgaGFuZGxlZCwgaW4gcGFydCBiZWNhdXNlIG5v IGV4YW1wbGVzIGFyZQ0KPiBhdmFpbGFibGUgZm9yIG91ciB0ZXN0aW5nLg0KPiANCj4gVGhlIHBy b2dyYW0gaXMgZGVzaWduZWQgdG8gYmUgZXh0ZW5kZWQgdG8gbmV3IHRhYmxlcyB3aXRoIG1pbmlt YWwNCj4gZWZmb3J0LCBhbmQgY29udHJpYnV0aW9ucyBhcmUgaW52aXRlZC4NCj4gDQo+IENvbnRy aWJ1dGVkLXVuZGVyOiBUaWFub0NvcmUgQ29udHJpYnV0aW9uIEFncmVlbWVudCAxLjENCj4gU2ln bmVkLW9mZi1ieTogU2FtaSBNdWphd2FyIDxzYW1pLm11amF3YXJAYXJtLmNvbT4NCj4gU2lnbmVk LW9mZi1ieTogRXZhbiBMbG95ZCA8ZXZhbi5sbG95ZEBhcm0uY29tPg0KPiAtLS0NCj4gIFNoZWxs UGtnL1NoZWxsUGtnLmRlYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgIDMgKy0NCj4gIFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNw aVZpZXdDb21tYW5kTGliL0JncnRQYXJzZXJMaWIuaW5mICAgICAgICAgICAgICAgfA0KPiA1NSAr Kw0KPiAgU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvRGJnMlBh cnNlckxpYi5pbmYgICAgICAgICAgICAgICB8DQo+IDU2ICsrDQo+ICBTaGVsbFBrZy9MaWJyYXJ5 L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9GYWR0UGFyc2VyTGliLmluZiAgICAgICAgICAg ICAgIHwNCj4gNTYgKysNCj4gIFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21t YW5kTGliL0d0ZHRQYXJzZXJMaWIuaW5mICAgICAgICAgICAgICAgfA0KPiA1NiArKw0KPiAgU2hl bGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvSW9ydFBhcnNlckxpYi5p bmYgICAgICAgICAgICAgICB8DQo+IDU2ICsrDQo+ICBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVs bEFjcGlWaWV3Q29tbWFuZExpYi9NYWR0UGFyc2VyTGliLmluZiAgICAgICAgICAgICAgIHwNCj4g NTYgKysNCj4gIFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL01j ZmdQYXJzZXJMaWIuaW5mICAgICAgICAgICAgICAgfA0KPiA1NiArKw0KPiAgU2hlbGxQa2cvTGli cmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvU2xpdFBhcnNlckxpYi5pbmYgICAgICAg ICAgICAgICB8DQo+IDU2ICsrDQo+ICBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3 Q29tbWFuZExpYi9TcGNyUGFyc2VyTGliLmluZiAgICAgICAgICAgICAgIHwNCj4gNTYgKysNCj4g IFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1NyYXRQYXJzZXJM aWIuaW5mICAgICAgICAgICAgICAgfA0KPiA1NiArKw0KPiAgU2hlbGxQa2cvTGlicmFyeS9VZWZp U2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvU3NkdFBhcnNlckxpYi5pbmYgICAgICAgICAgICAgICB8 DQo+IDU2ICsrDQo+IA0KPiBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFu ZExpYi9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbg0KPiBkTGliLmluZiB8ICA2MCArKw0KPiAgU2hl bGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvWHNkdFBhcnNlckxpYi5p bmYgICAgICAgICAgICAgICB8DQo+IDU0ICsrDQo+ICBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVs bEFjcGlWaWV3Q29tbWFuZExpYi9BY3BpUGFyc2VyLmggICAgICAgICAgICAgICAgICAgIHwNCj4g NDIzICsrKysrKysrKysrKw0KPiAgU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0Nv bW1hbmRMaWIvQWNwaVRhYmxlUGFyc2VyLmggICAgICAgICAgICAgICB8DQo+IDEyOCArKysrDQo+ ICBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9BY3BpVmlldy5o ICAgICAgICAgICAgICAgICAgICAgIHwgIDg3DQo+ICsrKw0KPiANCj4gU2hlbGxQa2cvTGlicmFy eS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW4NCj4g ZExpYi5oICAgfCAgMzIgKw0KPiAgU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0Nv bW1hbmRMaWIvQWNwaVBhcnNlci5jICAgICAgICAgICAgICAgICAgICB8DQo+IDYxNCArKysrKysr KysrKysrKysrDQo+ICBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExp Yi9BY3BpVGFibGVQYXJzZXIuYyAgICAgICAgICAgICAgIHwNCj4gMjEyICsrKysrKw0KPiAgU2hl bGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvQWNwaVZpZXcuYyAgICAg ICAgICAgICAgICAgICAgICB8IDU5Nw0KPiArKysrKysrKysrKysrKysrDQo+ICBTaGVsbFBrZy9M aWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9CZ3J0UGFyc2VyLmMgICAgICAgICAg ICAgICAgICAgIHwgMTE1DQo+ICsrKw0KPiAgU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3Bp Vmlld0NvbW1hbmRMaWIvRGJnMlBhcnNlci5jICAgICAgICAgICAgICAgICAgICB8DQo+IDI4MSAr KysrKysrKw0KPiAgU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIv RHNkdFBhcnNlci5jICAgICAgICAgICAgICAgICAgICB8ICA5MQ0KPiArKysNCj4gIFNoZWxsUGtn L0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL0ZhZHRQYXJzZXIuYyAgICAgICAg ICAgICAgICAgICAgfA0KPiAzMDQgKysrKysrKysNCj4gIFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNo ZWxsQWNwaVZpZXdDb21tYW5kTGliL0d0ZHRQYXJzZXIuYyAgICAgICAgICAgICAgICAgICAgfA0K PiAzMzQgKysrKysrKysrDQo+ICBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29t bWFuZExpYi9Jb3J0UGFyc2VyLmMgICAgICAgICAgICAgICAgICAgIHwgNzMwDQo+ICsrKysrKysr KysrKysrKysrKysrDQo+ICBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFu ZExpYi9NYWR0UGFyc2VyLmMgICAgICAgICAgICAgICAgICAgIHwNCj4gMzU0ICsrKysrKysrKysN Cj4gIFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL01jZmdQYXJz ZXIuYyAgICAgICAgICAgICAgICAgICAgfA0KPiAxMzcgKysrKw0KPiAgU2hlbGxQa2cvTGlicmFy eS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUnNkcFBhcnNlci5jICAgICAgICAgICAgICAg ICAgICB8DQo+IDE4MiArKysrKw0KPiAgU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmll d0NvbW1hbmRMaWIvU2xpdFBhcnNlci5jICAgICAgICAgICAgICAgICAgICB8IDE4NQ0KPiArKysr Kw0KPiAgU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvU3BjclBh cnNlci5jICAgICAgICAgICAgICAgICAgICB8DQo+IDIwNSArKysrKysNCj4gIFNoZWxsUGtnL0xp YnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1NyYXRQYXJzZXIuYyAgICAgICAgICAg ICAgICAgICAgfCAzNzENCj4gKysrKysrKysrKw0KPiAgU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hl bGxBY3BpVmlld0NvbW1hbmRMaWIvU3NkdFBhcnNlci5jICAgICAgICAgICAgICAgICAgICB8ICA5 MA0KPiArKysNCj4gDQo+IFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5k TGliL1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuDQo+IGRMaWIuYyAgIHwgMTA2ICsrKw0KPiAgU2hl bGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvWHNkdFBhcnNlci5jICAg ICAgICAgICAgICAgICAgICB8DQo+IDE5NSArKysrKysNCj4gDQo+IFNoZWxsUGtnL0xpYnJhcnkv VWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuDQo+IGRM aWIudW5pIHwgMTI3ICsrKysNCj4gIDM3IGZpbGVzIGNoYW5nZWQsIDY2MzEgaW5zZXJ0aW9ucygr KSwgMSBkZWxldGlvbigtKQ0KPiANCj4gZGlmZiAtLWdpdCBhL1NoZWxsUGtnL1NoZWxsUGtnLmRl YyBiL1NoZWxsUGtnL1NoZWxsUGtnLmRlYw0KPiBpbmRleA0KPiA0OGQ1MGI4N2IzMDcwNjhhMDUx OTJjZDVlOGFjMTNhZjRmMjhjMjJhLi42ZjRiNzIxODA5MDU1M2U0NmYxZjE4ODM1MA0KPiAwMDY2 MTllYjcxZmUwMiAxMDA2NDQNCj4gLS0tIGEvU2hlbGxQa2cvU2hlbGxQa2cuZGVjDQo+ICsrKyBi L1NoZWxsUGtnL1NoZWxsUGtnLmRlYw0KPiBAQCAtMyw2ICszLDcgQEANCj4gICMNCj4gICMgKEMp IENvcHlyaWdodCAyMDEzLTIwMTQgSGV3bGV0dC1QYWNrYXJkIERldmVsb3BtZW50IENvbXBhbnks DQo+IEwuUC48QlI+DQo+ICAjIENvcHlyaWdodCAoYykgMjAwOSAtIDIwMTcsIEludGVsIENvcnBv cmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gKyMgQ29weXJpZ2h0IChjKSAyMDE2 LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ICAjDQo+ICAjIFRoaXMg cHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIGxpY2Vuc2VkIGFuZCBt YWRlDQo+IGF2YWlsYWJsZSB1bmRlcg0KPiAgIyB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2Yg dGhlIEJTRCBMaWNlbnNlIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMNCj4gZGlzdHJpYnV0aW9uLg0K PiBAQCAtNTYsNyArNTcsNyBAQCBbR3VpZHNdDQo+ICAgIGdTaGVsbE5ldHdvcmsySGlpR3VpZCAg ICAgICAgICAgPSB7MHgxNzRiMmI1LCAweGY1MDUsIDB4NGIxMiwgezB4YWEsIDB4NjAsDQo+IDB4 NTksIDB4ZGYsIDB4ZjgsIDB4ZDYsIDB4ZWEsIDB4Mzd9fQ0KPiAgICBnU2hlbGxUZnRwSGlpR3Vp ZCAgICAgICAgICAgICAgID0gezB4NzM4YTkzMTQsIDB4ODJjMSwgMHg0NTkyLCB7MHg4ZiwgMHhm NywgMHhjMSwNCj4gMHhiZCwgMHhmMSwgMHhiMiwgMHgwZSwgMHhkNH19DQo+ICAgIGdTaGVsbEJj ZmdIaWlHdWlkICAgICAgICAgICAgICAgPSB7MHg1ZjVmNjA1ZCwgMHgxNTgzLCAweDRhMmQsIHsw eGE2LCAweGIyLCAweGViLA0KPiAweDEyLCAweGRhLCAweGI0LCAweGEyLCAweGI2fX0NCj4gLQ0K PiArICBnU2hlbGxBY3BpVmlld0hpaUd1aWQgICAgICAgICAgID0gezB4ZGE4Y2NkZjQsIDB4ZWQ4 ZiwgMHg0ZmZjLCB7MHhiNSwgMHhlZiwNCj4gMHgyZSwgMHhmNSwgMHg1ZSwgMHgyNCwgMHg5Mywg MHgyYX19DQo+ICAgICMgRklMRV9HVUlEIGFzIGRlZmluZWQgaW4gU2hlbGxQa2cvQXBwbGljYXRp b24vU2hlbGwvU2hlbGwuaW5mDQo+ICAgIGdVZWZpU2hlbGxGaWxlR3VpZCAgICAgICAgICAgICAg PSB7MHg3YzA0YTU4MywgMHg5ZTNlLCAweDRmMWMsIHsweGFkLCAweDY1LCAweGUwLA0KPiAweDUy LCAweDY4LCAweGQwLCAweGI0LCAweGQxfX0NCj4gDQo+IGRpZmYgLS1naXQgYS9TaGVsbFBrZy9M aWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9CZ3J0UGFyc2VyTGliLmluZg0KPiBi L1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL0JncnRQYXJzZXJM aWIuaW5mDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4DQo+IDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1Y2RiNDU1YTI3Yzg4ZGRlYTMxYTgwODMNCj4g OGU4NTU0ZDc3MGRlMzRmDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvU2hlbGxQa2cvTGlicmFy eS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvQmdydFBhcnNlckxpYi5pbmYNCj4gQEAgLTAs MCArMSw1NSBAQA0KPiArIyMgQGZpbGUNCj4gKyMNCj4gKyMgIENvcHlyaWdodCAoYykgMjAxNywg QVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsjDQo+ICsjICBUaGlzIHByb2dy YW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICsjICBhcmUgbGljZW5zZWQgYW5k IG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUNCj4g QlNEIExpY2Vuc2UNCj4gKyMgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAg VGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gZm91bmQgYXQNCj4gKyMgIGh0 dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gKyMNCj4gKyMg IFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAi QVMgSVMiDQo+IEJBU0lTLA0KPiArIyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFU SU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gKyMjDQo+ ICsNCj4gK1tEZWZpbmVzXQ0KPiArICBJTkZfVkVSU0lPTiAgICA9IDB4MDAwMTAwMTkNCj4gKyAg QkFTRV9OQU1FICAgICAgPSBCZ3J0UGFyc2VyTGliDQo+ICsgIEZJTEVfR1VJRCAgICAgID0gQzRD Q0Q5QjYtRjYyRi00QjA2LUEyNUQtRjgxNTUwN0I0OUUwDQo+ICsgIFZFUlNJT05fU1RSSU5HID0g MS4wDQo+ICsgIE1PRFVMRV9UWVBFICAgID0gRFhFX0RSSVZFUg0KPiArICBMSUJSQVJZX0NMQVNT ICA9IE5VTEx8RFhFX0RSSVZFUg0KPiArICBDT05TVFJVQ1RPUiAgICA9IEJncnRQYXJzZXJMaWJD b25zdHJ1Y3Rvcg0KPiArICBERVNUUlVDVE9SICAgICA9IEJncnRQYXJzZXJMaWJEZXN0cnVjdG9y DQo+ICsNCj4gK1tTb3VyY2VzXQ0KPiArICBCZ3J0UGFyc2VyLmMNCj4gKw0KPiArW1BhY2thZ2Vz XQ0KPiArICBNZGVQa2cvTWRlUGtnLmRlYw0KPiArICBTaGVsbFBrZy9TaGVsbFBrZy5kZWMNCj4g KyAgTWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMNCj4gKw0KPiArW0xpYnJhcnlDbGFzc2Vz XQ0KPiArICBNZW1vcnlBbGxvY2F0aW9uTGliDQo+ICsgIEJhc2VMaWINCj4gKyAgQmFzZU1lbW9y eUxpYg0KPiArICBEZWJ1Z0xpYg0KPiArICBTaGVsbENvbW1hbmRMaWINCj4gKyAgU2hlbGxMaWIN Cj4gKyAgVWVmaUxpYg0KPiArICBVZWZpUnVudGltZVNlcnZpY2VzVGFibGVMaWINCj4gKyAgVWVm aUJvb3RTZXJ2aWNlc1RhYmxlTGliDQo+ICsgIFBjZExpYg0KPiArICBIaWlMaWINCj4gKyAgUHJp bnRMaWINCj4gKyAgRmlsZUhhbmRsZUxpYg0KPiArICBVZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRM aWINCj4gKw0KPiArW0ZpeGVkUGNkXQ0KPiArDQo+ICtbUHJvdG9jb2xzXQ0KPiArDQo+ICtbR3Vp ZHNdDQo+ICsNCj4gKw0KPiArDQo+IGRpZmYgLS1naXQNCj4gYS9TaGVsbFBrZy9MaWJyYXJ5L1Vl ZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9EYmcyUGFyc2VyTGliLmluZg0KPiBiL1NoZWxsUGtn L0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL0RiZzJQYXJzZXJMaWIuaW5mDQo+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAuLjYzNDZkMWJlYzY4OWMxYTE3YzY2NDQ1ZDUNCj4gNTUzNTljNmU0 YWU3YWM4DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hl bGxBY3BpVmlld0NvbW1hbmRMaWIvRGJnMlBhcnNlckxpYi5pbmYNCj4gQEAgLTAsMCArMSw1NiBA QA0KPiArIyMgQGZpbGUNCj4gKyMNCj4gKyMgIENvcHlyaWdodCAoYykgMjAxNywgQVJNIExpbWl0 ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsjDQo+ICsjICBUaGlzIHByb2dyYW0gYW5kIHRo ZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICsjICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZh aWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUNCj4gQlNEIExpY2Vu c2UNCj4gKyMgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwg dGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gZm91bmQgYXQNCj4gKyMgIGh0dHA6Ly9vcGVu c291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gKyMNCj4gKyMgIFRIRSBQUk9H UkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+ IEJBU0lTLA0KPiArIyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBB TlkgS0lORCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gKyMjDQo+ICsNCj4gK1tE ZWZpbmVzXQ0KPiArICBJTkZfVkVSU0lPTiAgICA9IDB4MDAwMTAwMTkNCj4gKyAgQkFTRV9OQU1F ICAgICAgPSBEYmcyUGFyc2VyTGliDQo+ICsgIEZJTEVfR1VJRCAgICAgID0gRkIxRjExQUEtRjJG MC00RDU4LThEMDYtMzY1RENCNjNBNjE0DQo+ICsgIFZFUlNJT05fU1RSSU5HID0gMS4wDQo+ICsg IE1PRFVMRV9UWVBFICAgID0gRFhFX0RSSVZFUg0KPiArICBMSUJSQVJZX0NMQVNTICA9IE5VTEx8 RFhFX0RSSVZFUg0KPiArICBDT05TVFJVQ1RPUiAgICA9IERiZzJQYXJzZXJMaWJDb25zdHJ1Y3Rv cg0KPiArICBERVNUUlVDVE9SICAgICA9IERiZzJQYXJzZXJMaWJEZXN0cnVjdG9yDQo+ICsNCj4g K1tTb3VyY2VzXQ0KPiArICBEYmcyUGFyc2VyLmMNCj4gKw0KPiArW1BhY2thZ2VzXQ0KPiArICBN ZGVQa2cvTWRlUGtnLmRlYw0KPiArICBTaGVsbFBrZy9TaGVsbFBrZy5kZWMNCj4gKyAgTWRlTW9k dWxlUGtnL01kZU1vZHVsZVBrZy5kZWMNCj4gKw0KPiArW0xpYnJhcnlDbGFzc2VzXQ0KPiArICBN ZW1vcnlBbGxvY2F0aW9uTGliDQo+ICsgIEJhc2VMaWINCj4gKyAgQmFzZU1lbW9yeUxpYg0KPiAr ICBEZWJ1Z0xpYg0KPiArICBTaGVsbENvbW1hbmRMaWINCj4gKyAgU2hlbGxMaWINCj4gKyAgVWVm aUxpYg0KPiArICBVZWZpUnVudGltZVNlcnZpY2VzVGFibGVMaWINCj4gKyAgVWVmaUJvb3RTZXJ2 aWNlc1RhYmxlTGliDQo+ICsgIFBjZExpYg0KPiArICBIaWlMaWINCj4gKyAgUHJpbnRMaWINCj4g KyAgRmlsZUhhbmRsZUxpYg0KPiArICBVZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWINCj4gKw0K PiArW0ZpeGVkUGNkXQ0KPiArDQo+ICtbUHJvdG9jb2xzXQ0KPiArDQo+ICtbR3VpZHNdDQo+ICsN Cj4gKw0KPiArDQo+ICsNCj4gZGlmZiAtLWdpdCBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxs QWNwaVZpZXdDb21tYW5kTGliL0ZhZHRQYXJzZXJMaWIuaW5mDQo+IGIvU2hlbGxQa2cvTGlicmFy eS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvRmFkdFBhcnNlckxpYi5pbmYNCj4gbmV3IGZp bGUgbW9kZSAxMDA2NDQNCj4gaW5kZXgNCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMC4uNzkxNTNjODdkMmRkNThjMjE0NTU4ODg2ZA0KPiBjYWM0N2FhZWNlOGY2NjcN Cj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlW aWV3Q29tbWFuZExpYi9GYWR0UGFyc2VyTGliLmluZg0KPiBAQCAtMCwwICsxLDU2IEBADQo+ICsj IyBAZmlsZQ0KPiArIw0KPiArIyAgQ29weXJpZ2h0IChjKSAyMDE3LCBBUk0gTGltaXRlZC4gQWxs IHJpZ2h0cyByZXNlcnZlZC4NCj4gKyMNCj4gKyMgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29t cGFueWluZyBtYXRlcmlhbHMNCj4gKyMgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUg dW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZQ0KPiBCU0QgTGljZW5zZQ0KPiAr IyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9m IHRoZSBsaWNlbnNlIG1heSBiZQ0KPiBmb3VuZCBhdA0KPiArIyAgaHR0cDovL29wZW5zb3VyY2Uu b3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiArIw0KPiArIyAgVEhFIFBST0dSQU0gSVMg RElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyINCj4gQkFTSVMs DQo+ICsjICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5E LCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiArIyMNCj4gKw0KPiArW0RlZmluZXNd DQo+ICsgIElORl9WRVJTSU9OICAgID0gMHgwMDAxMDAxOQ0KPiArICBCQVNFX05BTUUgICAgICA9 IEZhZHRQYXJzZXJMaWINCj4gKyAgRklMRV9HVUlEICAgICAgPSAxNTA3RUM4QS0yQkQ0LTQ2MEIt OTgzMC1ENzhEMEJEN0UwRTYNCj4gKyAgVkVSU0lPTl9TVFJJTkcgPSAxLjANCj4gKyAgTU9EVUxF X1RZUEUgICAgPSBEWEVfRFJJVkVSDQo+ICsgIExJQlJBUllfQ0xBU1MgID0gTlVMTHxEWEVfRFJJ VkVSDQo+ICsgIENPTlNUUlVDVE9SICAgID0gRmFkdFBhcnNlckxpYkNvbnN0cnVjdG9yDQo+ICsg IERFU1RSVUNUT1IgICAgID0gRmFkdFBhcnNlckxpYkRlc3RydWN0b3INCj4gKw0KPiArW1NvdXJj ZXNdDQo+ICsgIEZhZHRQYXJzZXIuYw0KPiArDQo+ICtbUGFja2FnZXNdDQo+ICsgIE1kZVBrZy9N ZGVQa2cuZGVjDQo+ICsgIFNoZWxsUGtnL1NoZWxsUGtnLmRlYw0KPiArICBNZGVNb2R1bGVQa2cv TWRlTW9kdWxlUGtnLmRlYw0KPiArDQo+ICtbTGlicmFyeUNsYXNzZXNdDQo+ICsgIE1lbW9yeUFs bG9jYXRpb25MaWINCj4gKyAgQmFzZUxpYg0KPiArICBCYXNlTWVtb3J5TGliDQo+ICsgIERlYnVn TGliDQo+ICsgIFNoZWxsQ29tbWFuZExpYg0KPiArICBTaGVsbExpYg0KPiArICBVZWZpTGliDQo+ ICsgIFVlZmlSdW50aW1lU2VydmljZXNUYWJsZUxpYg0KPiArICBVZWZpQm9vdFNlcnZpY2VzVGFi bGVMaWINCj4gKyAgUGNkTGliDQo+ICsgIEhpaUxpYg0KPiArICBQcmludExpYg0KPiArICBGaWxl SGFuZGxlTGliDQo+ICsgIFVlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYg0KPiArDQo+ICtbRml4 ZWRQY2RdDQo+ICsNCj4gK1tQcm90b2NvbHNdDQo+ICsNCj4gK1tHdWlkc10NCj4gKw0KPiArDQo+ ICsNCj4gKw0KPiBkaWZmIC0tZ2l0DQo+IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3Bp Vmlld0NvbW1hbmRMaWIvR3RkdFBhcnNlckxpYi5pbmYNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1Vl ZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9HdGR0UGFyc2VyTGliLmluZg0KPiBuZXcgZmlsZSBt b2RlIDEwMDY0NA0KPiBpbmRleA0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwLi42OTE4ODhiNDNjYzM1NGM3ZDUxYjdiN2MwOA0KPiA4MjdkZmI3YWU5ODRjNQ0KPiAt LS0gL2Rldi9udWxsDQo+ICsrKyBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdD b21tYW5kTGliL0d0ZHRQYXJzZXJMaWIuaW5mDQo+IEBAIC0wLDAgKzEsNTYgQEANCj4gKyMjIEBm aWxlDQo+ICsjDQo+ICsjICBDb3B5cmlnaHQgKGMpIDIwMTcsIEFSTSBMaW1pdGVkLiBBbGwgcmln aHRzIHJlc2VydmVkLg0KPiArIw0KPiArIyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55 aW5nIG1hdGVyaWFscw0KPiArIyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRl ciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlDQo+IEJTRCBMaWNlbnNlDQo+ICsjICB3 aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhl IGxpY2Vuc2UgbWF5IGJlDQo+IGZvdW5kIGF0DQo+ICsjICBodHRwOi8vb3BlbnNvdXJjZS5vcmcv bGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ICsjDQo+ICsjICBUSEUgUFJPR1JBTSBJUyBESVNU UklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywNCj4g KyMgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJ VEhFUg0KPiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ICsjIw0KPiArDQo+ICtbRGVmaW5lc10NCj4g KyAgSU5GX1ZFUlNJT04gICAgPSAweDAwMDEwMDE5DQo+ICsgIEJBU0VfTkFNRSAgICAgID0gR3Rk dFBhcnNlckxpYg0KPiArICBGSUxFX0dVSUQgICAgICA9IDQ2MzhBNTcyLTU5QzAtNEFBRi1COTkw LUI5NUZBNjdEOTY1Ng0KPiArICBWRVJTSU9OX1NUUklORyA9IDEuMA0KPiArICBNT0RVTEVfVFlQ RSAgICA9IERYRV9EUklWRVINCj4gKyAgTElCUkFSWV9DTEFTUyAgPSBOVUxMfERYRV9EUklWRVIN Cj4gKyAgQ09OU1RSVUNUT1IgICAgPSBHdGR0UGFyc2VyTGliQ29uc3RydWN0b3INCj4gKyAgREVT VFJVQ1RPUiAgICAgPSBHdGR0UGFyc2VyTGliRGVzdHJ1Y3Rvcg0KPiArDQo+ICtbU291cmNlc10N Cj4gKyAgR3RkdFBhcnNlci5jDQo+ICsNCj4gK1tQYWNrYWdlc10NCj4gKyAgTWRlUGtnL01kZVBr Zy5kZWMNCj4gKyAgU2hlbGxQa2cvU2hlbGxQa2cuZGVjDQo+ICsgIE1kZU1vZHVsZVBrZy9NZGVN b2R1bGVQa2cuZGVjDQo+ICsNCj4gK1tMaWJyYXJ5Q2xhc3Nlc10NCj4gKyAgTWVtb3J5QWxsb2Nh dGlvbkxpYg0KPiArICBCYXNlTGliDQo+ICsgIEJhc2VNZW1vcnlMaWINCj4gKyAgRGVidWdMaWIN Cj4gKyAgU2hlbGxDb21tYW5kTGliDQo+ICsgIFNoZWxsTGliDQo+ICsgIFVlZmlMaWINCj4gKyAg VWVmaVJ1bnRpbWVTZXJ2aWNlc1RhYmxlTGliDQo+ICsgIFVlZmlCb290U2VydmljZXNUYWJsZUxp Yg0KPiArICBQY2RMaWINCj4gKyAgSGlpTGliDQo+ICsgIFByaW50TGliDQo+ICsgIEZpbGVIYW5k bGVMaWINCj4gKyAgVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliDQo+ICsNCj4gK1tGaXhlZFBj ZF0NCj4gKw0KPiArW1Byb3RvY29sc10NCj4gKw0KPiArW0d1aWRzXQ0KPiArDQo+ICsNCj4gKw0K PiArDQo+IGRpZmYgLS1naXQgYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29t bWFuZExpYi9Jb3J0UGFyc2VyTGliLmluZg0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxs QWNwaVZpZXdDb21tYW5kTGliL0lvcnRQYXJzZXJMaWIuaW5mDQo+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0DQo+IGluZGV4DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu LjFhNjY0ZGU3M2QzNTExNjVjNTM5ZWEwOGZmDQo+IDNkYWI5YjljNjc1M2I1DQo+IC0tLSAvZGV2 L251bGwNCj4gKysrIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRM aWIvSW9ydFBhcnNlckxpYi5pbmYNCj4gQEAgLTAsMCArMSw1NiBAQA0KPiArIyMgQGZpbGUNCj4g KyMNCj4gKyMgIENvcHlyaWdodCAoYykgMjAxNywgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVz ZXJ2ZWQuDQo+ICsjDQo+ICsjICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0 ZXJpYWxzDQo+ICsjICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0 ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUNCj4gQlNEIExpY2Vuc2UNCj4gKyMgIHdoaWNoIGFj Y29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5z ZSBtYXkgYmUNCj4gZm91bmQgYXQNCj4gKyMgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNl cy9ic2QtbGljZW5zZS5waHANCj4gKyMNCj4gKyMgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVE IFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+IEJBU0lTLA0KPiArIyAgV0lU SE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+ IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gKyMjDQo+ICsNCj4gK1tEZWZpbmVzXQ0KPiArICBJTkZf VkVSU0lPTiAgICA9IDB4MDAwMTAwMTkNCj4gKyAgQkFTRV9OQU1FICAgICAgPSBJb3J0UGFyc2Vy TGliDQo+ICsgIEZJTEVfR1VJRCAgICAgID0gMzFDRjlBNTAtMEIyQS00RjMzLUJEMkMtMzYwNkUz NUFBOUVGDQo+ICsgIFZFUlNJT05fU1RSSU5HID0gMS4wDQo+ICsgIE1PRFVMRV9UWVBFICAgID0g RFhFX0RSSVZFUg0KPiArICBMSUJSQVJZX0NMQVNTICA9IE5VTEx8RFhFX0RSSVZFUg0KPiArICBD T05TVFJVQ1RPUiAgICA9IElvcnRQYXJzZXJMaWJDb25zdHJ1Y3Rvcg0KPiArICBERVNUUlVDVE9S ICAgICA9IElvcnRQYXJzZXJMaWJEZXN0cnVjdG9yDQo+ICsNCj4gK1tTb3VyY2VzXQ0KPiArICBJ b3J0UGFyc2VyLmMNCj4gKw0KPiArW1BhY2thZ2VzXQ0KPiArICBNZGVQa2cvTWRlUGtnLmRlYw0K PiArICBTaGVsbFBrZy9TaGVsbFBrZy5kZWMNCj4gKyAgTWRlTW9kdWxlUGtnL01kZU1vZHVsZVBr Zy5kZWMNCj4gKw0KPiArW0xpYnJhcnlDbGFzc2VzXQ0KPiArICBNZW1vcnlBbGxvY2F0aW9uTGli DQo+ICsgIEJhc2VMaWINCj4gKyAgQmFzZU1lbW9yeUxpYg0KPiArICBEZWJ1Z0xpYg0KPiArICBT aGVsbENvbW1hbmRMaWINCj4gKyAgU2hlbGxMaWINCj4gKyAgVWVmaUxpYg0KPiArICBVZWZpUnVu dGltZVNlcnZpY2VzVGFibGVMaWINCj4gKyAgVWVmaUJvb3RTZXJ2aWNlc1RhYmxlTGliDQo+ICsg IFBjZExpYg0KPiArICBIaWlMaWINCj4gKyAgUHJpbnRMaWINCj4gKyAgRmlsZUhhbmRsZUxpYg0K PiArICBVZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWINCj4gKw0KPiArW0ZpeGVkUGNkXQ0KPiAr DQo+ICtbUHJvdG9jb2xzXQ0KPiArDQo+ICtbR3VpZHNdDQo+ICsNCj4gKw0KPiArDQo+ICsNCj4g ZGlmZiAtLWdpdA0KPiBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5k TGliL01hZHRQYXJzZXJMaWIuaW5mDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3Bp Vmlld0NvbW1hbmRMaWIvTWFkdFBhcnNlckxpYi5pbmYNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQN Cj4gaW5kZXgNCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWIw ZmRkYTI1NjI5ODIzMTYzZGEzMzA1ZA0KPiA2NjlmZDc1YzUzNDM5NGUNCj4gLS0tIC9kZXYvbnVs bA0KPiArKysgYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9N YWR0UGFyc2VyTGliLmluZg0KPiBAQCAtMCwwICsxLDU2IEBADQo+ICsjIyBAZmlsZQ0KPiArIw0K PiArIyAgQ29weXJpZ2h0IChjKSAyMDE3LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZl ZC4NCj4gKyMNCj4gKyMgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlh bHMNCj4gKyMgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1z IGFuZCBjb25kaXRpb25zIG9mIHRoZQ0KPiBCU0QgTGljZW5zZQ0KPiArIyAgd2hpY2ggYWNjb21w YW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1h eSBiZQ0KPiBmb3VuZCBhdA0KPiArIyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2Jz ZC1saWNlbnNlLnBocA0KPiArIw0KPiArIyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5E RVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ICsjICBXSVRIT1VU IFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gRVhQ UkVTUyBPUiBJTVBMSUVELg0KPiArIyMNCj4gKw0KPiArW0RlZmluZXNdDQo+ICsgIElORl9WRVJT SU9OICAgID0gMHgwMDAxMDAxOQ0KPiArICBCQVNFX05BTUUgICAgICA9IE1hZHRQYXJzZXJMaWIN Cj4gKyAgRklMRV9HVUlEICAgICAgPSBDQTBBNkFFMS0xMUExLTQ4QzgtQTU2MS1EMkNGQTkxNzk2 MkENCj4gKyAgVkVSU0lPTl9TVFJJTkcgPSAxLjANCj4gKyAgTU9EVUxFX1RZUEUgICAgPSBEWEVf RFJJVkVSDQo+ICsgIExJQlJBUllfQ0xBU1MgID0gTlVMTHxEWEVfRFJJVkVSDQo+ICsgIENPTlNU UlVDVE9SICAgID0gTWFkdFBhcnNlckxpYkNvbnN0cnVjdG9yDQo+ICsgIERFU1RSVUNUT1IgICAg ID0gTWFkdFBhcnNlckxpYkRlc3RydWN0b3INCj4gKw0KPiArW1NvdXJjZXNdDQo+ICsgIE1hZHRQ YXJzZXIuYw0KPiArDQo+ICtbUGFja2FnZXNdDQo+ICsgIE1kZVBrZy9NZGVQa2cuZGVjDQo+ICsg IFNoZWxsUGtnL1NoZWxsUGtnLmRlYw0KPiArICBNZGVNb2R1bGVQa2cvTWRlTW9kdWxlUGtnLmRl Yw0KPiArDQo+ICtbTGlicmFyeUNsYXNzZXNdDQo+ICsgIE1lbW9yeUFsbG9jYXRpb25MaWINCj4g KyAgQmFzZUxpYg0KPiArICBCYXNlTWVtb3J5TGliDQo+ICsgIERlYnVnTGliDQo+ICsgIFNoZWxs Q29tbWFuZExpYg0KPiArICBTaGVsbExpYg0KPiArICBVZWZpTGliDQo+ICsgIFVlZmlSdW50aW1l U2VydmljZXNUYWJsZUxpYg0KPiArICBVZWZpQm9vdFNlcnZpY2VzVGFibGVMaWINCj4gKyAgUGNk TGliDQo+ICsgIEhpaUxpYg0KPiArICBQcmludExpYg0KPiArICBGaWxlSGFuZGxlTGliDQo+ICsg IFVlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYg0KPiArDQo+ICtbRml4ZWRQY2RdDQo+ICsNCj4g K1tQcm90b2NvbHNdDQo+ICsNCj4gK1tHdWlkc10NCj4gKw0KPiArDQo+ICsNCj4gKw0KPiBkaWZm IC0tZ2l0DQo+IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIv TWNmZ1BhcnNlckxpYi5pbmYNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3 Q29tbWFuZExpYi9NY2ZnUGFyc2VyTGliLmluZg0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBp bmRleA0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NDQ3NjQ0 M2UwOTNkY2QxNTI3NGE0Y2IwDQo+IDM1NTUzNjlmYmE1MDk3Nw0KPiAtLS0gL2Rldi9udWxsDQo+ ICsrKyBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL01jZmdQ YXJzZXJMaWIuaW5mDQo+IEBAIC0wLDAgKzEsNTYgQEANCj4gKyMjIEBmaWxlDQo+ICsjDQo+ICsj ICBDb3B5cmlnaHQgKGMpIDIwMTcsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0K PiArIw0KPiArIyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0K PiArIyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5k IGNvbmRpdGlvbnMgb2YgdGhlDQo+IEJTRCBMaWNlbnNlDQo+ICsjICB3aGljaCBhY2NvbXBhbmll cyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJl DQo+IGZvdW5kIGF0DQo+ICsjICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxp Y2Vuc2UucGhwDQo+ICsjDQo+ICsjICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBU SEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywNCj4gKyMgIFdJVEhPVVQgV0FS UkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBFWFBSRVNT IE9SIElNUExJRUQuDQo+ICsjIw0KPiArDQo+ICtbRGVmaW5lc10NCj4gKyAgSU5GX1ZFUlNJT04g ICAgPSAweDAwMDEwMDE5DQo+ICsgIEJBU0VfTkFNRSAgICAgID0gTWNmZ1BhcnNlckxpYg0KPiAr ICBGSUxFX0dVSUQgICAgICA9IDQ3RThDMTBELTZDRTAtNDU1Qy1BN0JDLTgzQTdCMDg5NUM5Rg0K PiArICBWRVJTSU9OX1NUUklORyA9IDEuMA0KPiArICBNT0RVTEVfVFlQRSAgICA9IERYRV9EUklW RVINCj4gKyAgTElCUkFSWV9DTEFTUyAgPSBOVUxMfERYRV9EUklWRVINCj4gKyAgQ09OU1RSVUNU T1IgICAgPSBNY2ZnUGFyc2VyTGliQ29uc3RydWN0b3INCj4gKyAgREVTVFJVQ1RPUiAgICAgPSBN Y2ZnUGFyc2VyTGliRGVzdHJ1Y3Rvcg0KPiArDQo+ICtbU291cmNlc10NCj4gKyAgTWNmZ1BhcnNl ci5jDQo+ICsNCj4gK1tQYWNrYWdlc10NCj4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gKyAgU2hl bGxQa2cvU2hlbGxQa2cuZGVjDQo+ICsgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ ICsNCj4gK1tMaWJyYXJ5Q2xhc3Nlc10NCj4gKyAgTWVtb3J5QWxsb2NhdGlvbkxpYg0KPiArICBC YXNlTGliDQo+ICsgIEJhc2VNZW1vcnlMaWINCj4gKyAgRGVidWdMaWINCj4gKyAgU2hlbGxDb21t YW5kTGliDQo+ICsgIFNoZWxsTGliDQo+ICsgIFVlZmlMaWINCj4gKyAgVWVmaVJ1bnRpbWVTZXJ2 aWNlc1RhYmxlTGliDQo+ICsgIFVlZmlCb290U2VydmljZXNUYWJsZUxpYg0KPiArICBQY2RMaWIN Cj4gKyAgSGlpTGliDQo+ICsgIFByaW50TGliDQo+ICsgIEZpbGVIYW5kbGVMaWINCj4gKyAgVWVm aVNoZWxsQWNwaVZpZXdDb21tYW5kTGliDQo+ICsNCj4gK1tGaXhlZFBjZF0NCj4gKw0KPiArW1By b3RvY29sc10NCj4gKw0KPiArW0d1aWRzXQ0KPiArDQo+ICsNCj4gKw0KPiArDQo+IGRpZmYgLS1n aXQgYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9TbGl0UGFy c2VyTGliLmluZg0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5k TGliL1NsaXRQYXJzZXJMaWIuaW5mDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4DQo+ IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI3YmUyZGVlZjQ5YWZk MjliZGU1ZDM5ZjkNCj4gODM0ZDRkMjM4NjVhMzZkDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIv U2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvU2xpdFBhcnNlckxp Yi5pbmYNCj4gQEAgLTAsMCArMSw1NiBAQA0KPiArIyMgQGZpbGUNCj4gKyMNCj4gKyMgIENvcHly aWdodCAoYykgMjAxNywgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsjDQo+ ICsjICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICsjICBh cmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0 aW9ucyBvZiB0aGUNCj4gQlNEIExpY2Vuc2UNCj4gKyMgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMg ZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gZm91 bmQgYXQNCj4gKyMgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5w aHANCj4gKyMNCj4gKyMgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0Qg TElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+IEJBU0lTLA0KPiArIyAgV0lUSE9VVCBXQVJSQU5USUVT IE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1Q TElFRC4NCj4gKyMjDQo+ICsNCj4gK1tEZWZpbmVzXQ0KPiArICBJTkZfVkVSU0lPTiAgICA9IDB4 MDAwMTAwMTkNCj4gKyAgQkFTRV9OQU1FICAgICAgPSBTbGl0UGFyc2VyTGliDQo+ICsgIEZJTEVf R1VJRCAgICAgID0gM0RDRjczMzMtMzY3Qi00RDQwLTg1NkEtRkYwRjczRkI2QjQ5DQo+ICsgIFZF UlNJT05fU1RSSU5HID0gMS4wDQo+ICsgIE1PRFVMRV9UWVBFICAgID0gRFhFX0RSSVZFUg0KPiAr ICBMSUJSQVJZX0NMQVNTICA9IE5VTEx8RFhFX0RSSVZFUg0KPiArICBDT05TVFJVQ1RPUiAgICA9 IFNsaXRQYXJzZXJMaWJDb25zdHJ1Y3Rvcg0KPiArICBERVNUUlVDVE9SICAgICA9IFNsaXRQYXJz ZXJMaWJEZXN0cnVjdG9yDQo+ICsNCj4gK1tTb3VyY2VzXQ0KPiArICBTbGl0UGFyc2VyLmMNCj4g Kw0KPiArW1BhY2thZ2VzXQ0KPiArICBNZGVQa2cvTWRlUGtnLmRlYw0KPiArICBTaGVsbFBrZy9T aGVsbFBrZy5kZWMNCj4gKyAgTWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMNCj4gKw0KPiAr W0xpYnJhcnlDbGFzc2VzXQ0KPiArICBNZW1vcnlBbGxvY2F0aW9uTGliDQo+ICsgIEJhc2VMaWIN Cj4gKyAgQmFzZU1lbW9yeUxpYg0KPiArICBEZWJ1Z0xpYg0KPiArICBTaGVsbENvbW1hbmRMaWIN Cj4gKyAgU2hlbGxMaWINCj4gKyAgVWVmaUxpYg0KPiArICBVZWZpUnVudGltZVNlcnZpY2VzVGFi bGVMaWINCj4gKyAgVWVmaUJvb3RTZXJ2aWNlc1RhYmxlTGliDQo+ICsgIFBjZExpYg0KPiArICBI aWlMaWINCj4gKyAgUHJpbnRMaWINCj4gKyAgRmlsZUhhbmRsZUxpYg0KPiArICBVZWZpU2hlbGxB Y3BpVmlld0NvbW1hbmRMaWINCj4gKw0KPiArW0ZpeGVkUGNkXQ0KPiArDQo+ICtbUHJvdG9jb2xz XQ0KPiArDQo+ICtbR3VpZHNdDQo+ICsNCj4gKw0KPiArDQo+ICsNCj4gZGlmZiAtLWdpdCBhL1No ZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1NwY3JQYXJzZXJMaWIu aW5mDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvU3Bj clBhcnNlckxpYi5pbmYNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXgNCj4gMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjAwNjYwM2M5YWVmYTA4Mjc2OTRj MDVlY2YNCj4gMWM0MGM0NmViMjZkYjINCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9TaGVsbFBr Zy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9TcGNyUGFyc2VyTGliLmluZg0K PiBAQCAtMCwwICsxLDU2IEBADQo+ICsjIyBAZmlsZQ0KPiArIw0KPiArIyAgQ29weXJpZ2h0IChj KSAyMDE3LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyMNCj4gKyMgIFRo aXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gKyMgIGFyZSBsaWNl bnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9m IHRoZQ0KPiBCU0QgTGljZW5zZQ0KPiArIyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmli dXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZQ0KPiBmb3VuZCBhdA0K PiArIyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiAr Iw0KPiArIyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNF IE9OIEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ICsjICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQ UkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0K PiArIyMNCj4gKw0KPiArW0RlZmluZXNdDQo+ICsgIElORl9WRVJTSU9OICAgID0gMHgwMDAxMDAx OQ0KPiArICBCQVNFX05BTUUgICAgICA9IFNwY3JQYXJzZXJMaWINCj4gKyAgRklMRV9HVUlEICAg ICAgPSAwOEMxN0M0Qy1FNjJELTRBRTQtOTVDNS1ERUY0MkEyNEE1NkMNCj4gKyAgVkVSU0lPTl9T VFJJTkcgPSAxLjANCj4gKyAgTU9EVUxFX1RZUEUgICAgPSBEWEVfRFJJVkVSDQo+ICsgIExJQlJB UllfQ0xBU1MgID0gTlVMTHxEWEVfRFJJVkVSDQo+ICsgIENPTlNUUlVDVE9SICAgID0gU3BjclBh cnNlckxpYkNvbnN0cnVjdG9yDQo+ICsgIERFU1RSVUNUT1IgICAgID0gU3BjclBhcnNlckxpYkRl c3RydWN0b3INCj4gKw0KPiArW1NvdXJjZXNdDQo+ICsgIFNwY3JQYXJzZXIuYw0KPiArDQo+ICtb UGFja2FnZXNdDQo+ICsgIE1kZVBrZy9NZGVQa2cuZGVjDQo+ICsgIFNoZWxsUGtnL1NoZWxsUGtn LmRlYw0KPiArICBNZGVNb2R1bGVQa2cvTWRlTW9kdWxlUGtnLmRlYw0KPiArDQo+ICtbTGlicmFy eUNsYXNzZXNdDQo+ICsgIE1lbW9yeUFsbG9jYXRpb25MaWINCj4gKyAgQmFzZUxpYg0KPiArICBC YXNlTWVtb3J5TGliDQo+ICsgIERlYnVnTGliDQo+ICsgIFNoZWxsQ29tbWFuZExpYg0KPiArICBT aGVsbExpYg0KPiArICBVZWZpTGliDQo+ICsgIFVlZmlSdW50aW1lU2VydmljZXNUYWJsZUxpYg0K PiArICBVZWZpQm9vdFNlcnZpY2VzVGFibGVMaWINCj4gKyAgUGNkTGliDQo+ICsgIEhpaUxpYg0K PiArICBQcmludExpYg0KPiArICBGaWxlSGFuZGxlTGliDQo+ICsgIFVlZmlTaGVsbEFjcGlWaWV3 Q29tbWFuZExpYg0KPiArDQo+ICtbRml4ZWRQY2RdDQo+ICsNCj4gK1tQcm90b2NvbHNdDQo+ICsN Cj4gK1tHdWlkc10NCj4gKw0KPiArDQo+ICsNCj4gKw0KPiBkaWZmIC0tZ2l0IGEvU2hlbGxQa2cv TGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvU3JhdFBhcnNlckxpYi5pbmYNCj4g Yi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9TcmF0UGFyc2Vy TGliLmluZg0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleA0KPiAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNzEzZGQwNTdlOGIxMDdjYzdhNDBkM2JlDQo+ IDA1MjUyOTM0Nzg2MDBhNw0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL1NoZWxsUGtnL0xpYnJh cnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1NyYXRQYXJzZXJMaWIuaW5mDQo+IEBAIC0w LDAgKzEsNTYgQEANCj4gKyMjIEBmaWxlDQo+ICsjDQo+ICsjICBDb3B5cmlnaHQgKGMpIDIwMTcs IEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArIw0KPiArIyAgVGhpcyBwcm9n cmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiArIyAgYXJlIGxpY2Vuc2VkIGFu ZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlDQo+ IEJTRCBMaWNlbnNlDQo+ICsjICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4g IFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlDQo+IGZvdW5kIGF0DQo+ICsjICBo dHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ICsjDQo+ICsj ICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4g IkFTIElTIg0KPiBCQVNJUywNCj4gKyMgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRB VElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ICsjIw0K PiArDQo+ICtbRGVmaW5lc10NCj4gKyAgSU5GX1ZFUlNJT04gICAgPSAweDAwMDEwMDE5DQo+ICsg IEJBU0VfTkFNRSAgICAgID0gU3JhdFBhcnNlckxpYg0KPiArICBGSUxFX0dVSUQgICAgICA9IDEw NkIyMkNDLTE0OTktNDZENC1CNkZCLTM0MUJCODc4RkJDNQ0KPiArICBWRVJTSU9OX1NUUklORyA9 IDEuMA0KPiArICBNT0RVTEVfVFlQRSAgICA9IERYRV9EUklWRVINCj4gKyAgTElCUkFSWV9DTEFT UyAgPSBOVUxMfERYRV9EUklWRVINCj4gKyAgQ09OU1RSVUNUT1IgICAgPSBTcmF0UGFyc2VyTGli Q29uc3RydWN0b3INCj4gKyAgREVTVFJVQ1RPUiAgICAgPSBTcmF0UGFyc2VyTGliRGVzdHJ1Y3Rv cg0KPiArDQo+ICtbU291cmNlc10NCj4gKyAgU3JhdFBhcnNlci5jDQo+ICsNCj4gK1tQYWNrYWdl c10NCj4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gKyAgU2hlbGxQa2cvU2hlbGxQa2cuZGVjDQo+ ICsgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ICsNCj4gK1tMaWJyYXJ5Q2xhc3Nl c10NCj4gKyAgTWVtb3J5QWxsb2NhdGlvbkxpYg0KPiArICBCYXNlTGliDQo+ICsgIEJhc2VNZW1v cnlMaWINCj4gKyAgRGVidWdMaWINCj4gKyAgU2hlbGxDb21tYW5kTGliDQo+ICsgIFNoZWxsTGli DQo+ICsgIFVlZmlMaWINCj4gKyAgVWVmaVJ1bnRpbWVTZXJ2aWNlc1RhYmxlTGliDQo+ICsgIFVl ZmlCb290U2VydmljZXNUYWJsZUxpYg0KPiArICBQY2RMaWINCj4gKyAgSGlpTGliDQo+ICsgIFBy aW50TGliDQo+ICsgIEZpbGVIYW5kbGVMaWINCj4gKyAgVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5k TGliDQo+ICsNCj4gK1tGaXhlZFBjZF0NCj4gKw0KPiArW1Byb3RvY29sc10NCj4gKw0KPiArW0d1 aWRzXQ0KPiArDQo+ICsNCj4gKw0KPiArDQo+IGRpZmYgLS1naXQgYS9TaGVsbFBrZy9MaWJyYXJ5 L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9Tc2R0UGFyc2VyTGliLmluZg0KPiBiL1NoZWxs UGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1NzZHRQYXJzZXJMaWIuaW5m DQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNkZThlMmZhZTU1NGQwMTcwNTMyZmE0NTANCj4gYWY4NzZh M2QzMzAxZjNmDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZp U2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvU3NkdFBhcnNlckxpYi5pbmYNCj4gQEAgLTAsMCArMSw1 NiBAQA0KPiArIyMgQGZpbGUNCj4gKyMNCj4gKyMgIENvcHlyaWdodCAoYykgMjAxNywgQVJNIExp bWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsjDQo+ICsjICBUaGlzIHByb2dyYW0gYW5k IHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICsjICBhcmUgbGljZW5zZWQgYW5kIG1hZGUg YXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUNCj4gQlNEIExp Y2Vuc2UNCj4gKyMgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1 bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gZm91bmQgYXQNCj4gKyMgIGh0dHA6Ly9v cGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gKyMNCj4gKyMgIFRIRSBQ Uk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMi DQo+IEJBU0lTLA0KPiArIyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBP RiBBTlkgS0lORCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gKyMjDQo+ICsNCj4g K1tEZWZpbmVzXQ0KPiArICBJTkZfVkVSU0lPTiAgICA9IDB4MDAwMTAwMTkNCj4gKyAgQkFTRV9O QU1FICAgICAgPSBTc2R0UGFyc2VyTGliDQo+ICsgIEZJTEVfR1VJRCAgICAgID0gQkMyRkY1Mzgt OEZFQi00OEUzLTkyRDEtRUNBMDFCMjc3QjJDDQo+ICsgIFZFUlNJT05fU1RSSU5HID0gMS4wDQo+ ICsgIE1PRFVMRV9UWVBFICAgID0gRFhFX0RSSVZFUg0KPiArICBMSUJSQVJZX0NMQVNTICA9IE5V TEx8RFhFX0RSSVZFUg0KPiArICBDT05TVFJVQ1RPUiAgICA9IFNzZHRQYXJzZXJMaWJDb25zdHJ1 Y3Rvcg0KPiArICBERVNUUlVDVE9SICAgICA9IFNzZHRQYXJzZXJMaWJEZXN0cnVjdG9yDQo+ICsN Cj4gK1tTb3VyY2VzXQ0KPiArICBTc2R0UGFyc2VyLmMNCj4gKw0KPiArW1BhY2thZ2VzXQ0KPiAr ICBNZGVQa2cvTWRlUGtnLmRlYw0KPiArICBTaGVsbFBrZy9TaGVsbFBrZy5kZWMNCj4gKyAgTWRl TW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMNCj4gKw0KPiArW0xpYnJhcnlDbGFzc2VzXQ0KPiAr ICBNZW1vcnlBbGxvY2F0aW9uTGliDQo+ICsgIEJhc2VMaWINCj4gKyAgQmFzZU1lbW9yeUxpYg0K PiArICBEZWJ1Z0xpYg0KPiArICBTaGVsbENvbW1hbmRMaWINCj4gKyAgU2hlbGxMaWINCj4gKyAg VWVmaUxpYg0KPiArICBVZWZpUnVudGltZVNlcnZpY2VzVGFibGVMaWINCj4gKyAgVWVmaUJvb3RT ZXJ2aWNlc1RhYmxlTGliDQo+ICsgIFBjZExpYg0KPiArICBIaWlMaWINCj4gKyAgUHJpbnRMaWIN Cj4gKyAgRmlsZUhhbmRsZUxpYg0KPiArICBVZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWINCj4g Kw0KPiArW0ZpeGVkUGNkXQ0KPiArDQo+ICtbUHJvdG9jb2xzXQ0KPiArDQo+ICtbR3VpZHNdDQo+ ICsNCj4gKw0KPiArDQo+ICsNCj4gZGlmZiAtLWdpdA0KPiBhL1NoZWxsUGtnL0xpYnJhcnkvVWVm aVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1VlZmlTaGVsbEFjcGlWaWV3Q29tbQ0KPiBhbmRMaWIu aW5mDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvVWVm aVNoZWxsQWNwaVZpZXdDb21tDQo+IGFuZExpYi5pbmYNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQN Cj4gaW5kZXgNCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODVi Njk3MDg3Yzc3YWViZmM0YTQzYTVjZGMNCj4gZDk3ZTE3MDdlYzBkZWMNCj4gLS0tIC9kZXYvbnVs bA0KPiArKysNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExp Yi9VZWZpU2hlbGxBY3BpVmlld0NvbW0NCj4gYW5kTGliLmluZg0KPiBAQCAtMCwwICsxLDYwIEBA DQo+ICsjIyAgQGZpbGUNCj4gKyMgUHJvdmlkZXMgU2hlbGwgJ2FjcGl2aWV3JyBjb21tYW5kIGZ1 bmN0aW9ucw0KPiArIw0KPiArIyBDb3B5cmlnaHQgKGMpIDIwMTYgLSAyMDE3LCBBUk0gTGltaXRl ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ICsjDQo+ICsjICBUaGlzIHByb2dyYW0gYW5k IHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICsjICBhcmUgbGljZW5zZWQgYW5kIG1hZGUg YXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUNCj4gQlNEIExp Y2Vuc2UNCj4gKyMgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgZnVs bCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZQ0KPiBmb3VuZCBhdA0KPiArIyAgaHR0cDovL29w ZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiArIyAgVEhFIFBST0dSQU0g SVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyINCj4gQkFT SVMsDQo+ICsjICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBL SU5ELCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiArIw0KPiArIw0KPiArIyMNCj4g Kw0KPiArW0RlZmluZXNdDQo+ICsgIElORl9WRVJTSU9OICAgICAgICAgICAgICAgICAgICA9IDB4 MDAwMTAwMDYNCj4gKyAgQkFTRV9OQU1FICAgICAgICAgICAgICAgICAgICAgID0gVWVmaVNoZWxs QWNwaVZpZXdDb21tYW5kTGliDQo+ICsgIEZJTEVfR1VJRCAgICAgICAgICAgICAgICAgICAgICA9 IEZCNUIzMDVFLTg0RjUtNDYxRi05NDBELTgyRDM0NTc1N0FGQQ0KPiArICBNT0RVTEVfVFlQRSAg ICAgICAgICAgICAgICAgICAgPSBVRUZJX0FQUExJQ0FUSU9ODQo+ICsgIFZFUlNJT05fU1RSSU5H ICAgICAgICAgICAgICAgICA9IDEuMA0KPiArICBMSUJSQVJZX0NMQVNTICAgICAgICAgICAgICAg ICAgPSBOVUxMfFVFRklfQVBQTElDQVRJT04gVUVGSV9EUklWRVINCj4gKyAgQ09OU1RSVUNUT1Ig ICAgICAgICAgICAgICAgICAgID0gU2hlbGxBY3BpVmlld0NvbW1hbmRMaWJDb25zdHJ1Y3Rvcg0K PiArICBERVNUUlVDVE9SICAgICAgICAgICAgICAgICAgICAgPSBTaGVsbEFjcGlWaWV3Q29tbWFu ZExpYkRlc3RydWN0b3INCj4gKw0KPiArW1NvdXJjZXMuY29tbW9uXQ0KPiArICBVZWZpU2hlbGxB Y3BpVmlld0NvbW1hbmRMaWIudW5pDQo+ICsgIFVlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi5j DQo+ICsgIFVlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi5oDQo+ICsgIEFjcGlWaWV3LmMNCj4g KyAgQWNwaVBhcnNlci5jDQo+ICsgIEFjcGlUYWJsZVBhcnNlci5jDQo+ICsgIFJzZHBQYXJzZXIu Yw0KPiArDQo+ICtbUGFja2FnZXNdDQo+ICsgIE1kZVBrZy9NZGVQa2cuZGVjDQo+ICsgIFNoZWxs UGtnL1NoZWxsUGtnLmRlYw0KPiArICBNZGVNb2R1bGVQa2cvTWRlTW9kdWxlUGtnLmRlYw0KPiAr DQo+ICtbTGlicmFyeUNsYXNzZXNdDQo+ICsgIE1lbW9yeUFsbG9jYXRpb25MaWINCj4gKyAgQmFz ZUxpYg0KPiArICBCYXNlTWVtb3J5TGliDQo+ICsgIERlYnVnTGliDQo+ICsgIFNoZWxsQ29tbWFu ZExpYg0KPiArICBTaGVsbExpYg0KPiArICBVZWZpTGliDQo+ICsgIFVlZmlSdW50aW1lU2Vydmlj ZXNUYWJsZUxpYg0KPiArICBVZWZpQm9vdFNlcnZpY2VzVGFibGVMaWINCj4gKyAgUGNkTGliDQo+ ICsgIEhpaUxpYg0KPiArICBQcmludExpYg0KPiArICBGaWxlSGFuZGxlTGliDQo+ICsNCj4gK1tG aXhlZFBjZF0NCj4gKyAgZ0VmaVNoZWxsUGtnVG9rZW5TcGFjZUd1aWQuUGNkU2hlbGxQcm9maWxl TWFzayAjIyBDT05TVU1FUw0KPiArDQo+ICtbR3VpZHNdDQo+ICsgIGdTaGVsbEFjcGlWaWV3SGlp R3VpZCAgICAgICAgICAgIyMgQ09OU1VNRVMgIyMgSElJDQo+ICsgIGdFZmlBY3BpVGFibGVHdWlk ICAgICAgICAgICAgICAgIyMgU09NRVRJTUVTX0NPTlNVTUVTICMjIFN5c3RlbVRhYmxlDQo+IGRp ZmYgLS1naXQgYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9Y c2R0UGFyc2VyTGliLmluZg0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdD b21tYW5kTGliL1hzZHRQYXJzZXJMaWIuaW5mDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGlu ZGV4DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYwZThkYzBl MTRiMjRhYzI5ODI5ZjgxOWMzDQo+IDg0NjRhZDE0OWM3N2MxDQo+IC0tLSAvZGV2L251bGwNCj4g KysrIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvWHNkdFBh cnNlckxpYi5pbmYNCj4gQEAgLTAsMCArMSw1NCBAQA0KPiArIyMgQGZpbGUNCj4gKyMNCj4gKyMg IENvcHlyaWdodCAoYykgMjAxNywgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ ICsjDQo+ICsjICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ ICsjICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQg Y29uZGl0aW9ucyBvZiB0aGUNCj4gQlNEIExpY2Vuc2UNCj4gKyMgIHdoaWNoIGFjY29tcGFuaWVz IHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUN Cj4gZm91bmQgYXQNCj4gKyMgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGlj ZW5zZS5waHANCj4gKyMNCj4gKyMgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRI RSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+IEJBU0lTLA0KPiArIyAgV0lUSE9VVCBXQVJS QU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+IEVYUFJFU1Mg T1IgSU1QTElFRC4NCj4gKyMjDQo+ICsNCj4gK1tEZWZpbmVzXQ0KPiArICBJTkZfVkVSU0lPTiAg ICA9IDB4MDAwMTAwMTkNCj4gKyAgQkFTRV9OQU1FICAgICAgPSBYc2R0UGFyc2VyTGliDQo+ICsg IEZJTEVfR1VJRCAgICAgID0gQTU3RUQ3QTItNENENi00MjM5LTlBNEQtRjdGMERCRENGQ0ZBDQo+ ICsgIFZFUlNJT05fU1RSSU5HID0gMS4wDQo+ICsgIE1PRFVMRV9UWVBFICAgID0gRFhFX0RSSVZF Ug0KPiArICBMSUJSQVJZX0NMQVNTICA9IE5VTEx8RFhFX0RSSVZFUg0KPiArICBDT05TVFJVQ1RP UiAgICA9IFhzZHRQYXJzZXJMaWJDb25zdHJ1Y3Rvcg0KPiArICBERVNUUlVDVE9SICAgICA9IFhz ZHRQYXJzZXJMaWJEZXN0cnVjdG9yDQo+ICsNCj4gK1tTb3VyY2VzXQ0KPiArICBYc2R0UGFyc2Vy LmMNCj4gKw0KPiArW1BhY2thZ2VzXQ0KPiArICBNZGVQa2cvTWRlUGtnLmRlYw0KPiArICBTaGVs bFBrZy9TaGVsbFBrZy5kZWMNCj4gKyAgTWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMNCj4g Kw0KPiArW0xpYnJhcnlDbGFzc2VzXQ0KPiArICBNZW1vcnlBbGxvY2F0aW9uTGliDQo+ICsgIEJh c2VMaWINCj4gKyAgQmFzZU1lbW9yeUxpYg0KPiArICBEZWJ1Z0xpYg0KPiArICBTaGVsbENvbW1h bmRMaWINCj4gKyAgU2hlbGxMaWINCj4gKyAgVWVmaUxpYg0KPiArICBVZWZpUnVudGltZVNlcnZp Y2VzVGFibGVMaWINCj4gKyAgVWVmaUJvb3RTZXJ2aWNlc1RhYmxlTGliDQo+ICsgIFBjZExpYg0K PiArICBIaWlMaWINCj4gKyAgUHJpbnRMaWINCj4gKyAgRmlsZUhhbmRsZUxpYg0KPiArICBVZWZp U2hlbGxBY3BpVmlld0NvbW1hbmRMaWINCj4gKw0KPiArW0ZpeGVkUGNkXQ0KPiArDQo+ICtbUHJv dG9jb2xzXQ0KPiArDQo+ICtbR3VpZHNdDQo+ICsNCj4gKw0KPiBkaWZmIC0tZ2l0IGEvU2hlbGxQ a2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvQWNwaVBhcnNlci5oDQo+IGIv U2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvQWNwaVBhcnNlci5o DQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQyMDRmZDVjYjVjYTkyZmViYzUxNDg0OWU4DQo+IGMzMWZm Y2ZmMjVlZGQ2DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZp U2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvQWNwaVBhcnNlci5oDQo+IEBAIC0wLDAgKzEsNDIzIEBA DQo+ICsvKioNCj4gKyAgSGVhZGVyIGZpbGUgZm9yIEFDUEkgcGFyc2VyDQo+ICsNCj4gKyAgQ29w eXJpZ2h0IChjKSAyMDE2IC0gMjAxNywgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQu DQo+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gKyAg YXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRp dGlvbnMgb2YgdGhlIEJTRA0KPiBMaWNlbnNlDQo+ICsgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMg ZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gZm91 bmQgYXQNCj4gKyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBo cA0KPiArDQo+ICsgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElD RU5TRSBPTiBBTiAiQVMgSVMiDQo+IEJBU0lTLA0KPiArICBXSVRIT1VUIFdBUlJBTlRJRVMgT1Ig UkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVE Lg0KPiArKiovDQo+ICsNCj4gKyNpZm5kZWYgQUNQSVBBUlNFUl9IXw0KPiArI2RlZmluZSBBQ1BJ UEFSU0VSX0hfDQo+ICsNCj4gKyNkZWZpbmUgT1VUUFVUX0ZJRUxEX0NPTFVNTl9XSURUSCAgMzYN Cj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcHJpbnRzIGEgR1VJRCB0byBTVERPVVQuDQo+ICsN Cj4gKyAgQHBhcmFtIFtpbl0gR3VpZCAgICBQb2ludGVyIHRvIGEgR1VJRCB0byBwcmludC4NCj4g Kw0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgIFRoZSBHVUlEIHdhcyBwcmlu dGVkLg0KPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgIFRoZSBpbnB1dCB3YXMg TlVMTC4NCj4gKyovDQo+ICtFRklfU1RBVFVTDQo+ICtQcmludEd1aWQgKA0KPiArICBJTiBFRklf R1VJRCogR3VpZA0KPiArICApOw0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiB2ZXJpZmllcyB0 aGUgQUNQSSB0YWJsZSBjaGVja3N1bS4NCj4gKw0KPiArICBUaGlzIGZ1bmN0aW9uIHZlcmlmaWVz IHRoZSBjaGVja3N1bSBmb3IgdGhlIEFDUEkgdGFibGUgYW5kIG9wdGlvbmFsbHkNCj4gKyAgcHJp bnRzIHRoZSBzdGF0dXMuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gTG9nICAgICBJZiBUUlVFIGxv ZyB0aGUgc3RhdHVzIG9mIHRoZSBjaGVja3N1bS4NCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQ b2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgdGFibGUgYnVmZmVyLg0KPiArICBAcGFyYW0gW2lu XSBMZW5ndGggIFRoZSBsZW5ndGggb2YgdGhlIGJ1ZmZlci4NCj4gKw0KPiArICBAcmV0dmFsIFRS VUUgICAgICAgICBUaGUgY2hlY2tzdW0gaXMgT0suDQo+ICsgIEByZXR2YWwgRkFMU0UgICAgICAg IFRoZSBjaGVja3N1bSBmYWlsZWQuDQo+ICsqLw0KPiArQk9PTEVBTg0KPiArVmVyaWZ5Q2hlY2tz dW0gKA0KPiArICBJTiBCT09MRUFOIExvZywNCj4gKyAgSU4gVUlOVDgqICBQdHIsDQo+ICsgIElO IFVJTlQzMiAgTGVuZ3RoDQo+ICsgICk7DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBlcmZv cm1zIGEgcmF3IGRhdGEgZHVtcCBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gKw0KPiArICBAcGFyYW0g W2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSB0YWJsZSBidWZmZXIuDQo+ ICsgIEBwYXJhbSBbaW5dIExlbmd0aCAgVGhlIGxlbmd0aCBvZiB0aGUgYnVmZmVyLg0KPiArKi8N Cj4gK1ZPSUQNCj4gK0R1bXBSYXcgKA0KPiArICBJTiBVSU5UOCogUHRyLA0KPiArICBJTiBVSU5U MzIgTGVuZ3RoDQo+ICsgICk7DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHRyYWNlcyAxIGJ5 dGUgb2YgZGF0dW0gYXMgc3BlY2lmaWVkIGluIHRoZQ0KPiArICAgIGZvcm1hdCBzdHJpbmcuDQo+ ICsNCj4gKyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBUaGUgZm9ybWF0IHN0cmluZyBmb3IgdHJhY2lu ZyB0aGUgZGF0YS4NCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFy dCBvZiB0aGUgYnVmZmVyLg0KPiArKi8NCj4gK1ZPSUQNCj4gK0R1bXBVaW50OCAoDQo+ICsgIElO IENPTlNUIENIQVIxNiogRm9ybWF0LA0KPiArICBJTiBVSU5UOCogICAgICAgIFB0cg0KPiArICAp Ow0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiB0cmFjZXMgMiBieXRlcyBvZiBkYXRhIGFzIHNw ZWNpZmllZCBpbiB0aGUNCj4gKyAgICBmb3JtYXQgc3RyaW5nLg0KPiArDQo+ICsgIEBwYXJhbSBb aW5dIEZvcm1hdCAgVGhlIGZvcm1hdCBzdHJpbmcgZm9yIHRyYWNpbmcgdGhlIGRhdGEuDQo+ICsg IEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4N Cj4gKyovDQo+ICtWT0lEDQo+ICtEdW1wVWludDE2ICgNCj4gKyAgSU4gQ09OU1QgQ0hBUjE2KiBG b3JtYXQsDQo+ICsgIElOIFVJTlQ4KiAgICAgICAgUHRyDQo+ICsgICk7DQo+ICsNCj4gKy8qKiBU aGlzIGZ1bmN0aW9uIHRyYWNlcyA0IGJ5dGVzIG9mIGRhdGEgYXMgc3BlY2lmaWVkIGluIHRoZQ0K PiArICAgIGZvcm1hdCBzdHJpbmcuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBUaGUg Zm9ybWF0IHN0cmluZyBmb3IgdHJhY2luZyB0aGUgZGF0YS4NCj4gKyAgQHBhcmFtIFtpbl0gUHRy ICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArKi8NCj4gK1ZPSUQN Cj4gK0R1bXBVaW50MzIgKA0KPiArICBJTiBDT05TVCBDSEFSMTYqIEZvcm1hdCwNCj4gKyAgSU4g VUlOVDgqICAgICAgICBQdHINCj4gKyAgKTsNCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gdHJh Y2VzIDggYnl0ZXMgb2YgZGF0YSBhcyBzcGVjaWZpZWQgYnkgdGhlDQo+ICsgICAgZm9ybWF0IHN0 cmluZy4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBGb3JtYXQgIFRoZSBmb3JtYXQgc3RyaW5nIGZv ciB0cmFjaW5nIHRoZSBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8g dGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsqLw0KPiArVk9JRA0KPiArRHVtcFVpbnQ2NCAo DQo+ICsgIElOIENPTlNUIENIQVIxNiogRm9ybWF0LA0KPiArICBJTiBVSU5UOCogICAgICAgIFB0 cg0KPiArICApOw0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiB0cmFjZXMgMyBjaGFyYWN0ZXJz IHdoaWNoIGNhbiBiZSBvcHRpb25hbGx5DQo+ICsgICBmb3JtYXRlZCB1c2luZyB0aGUgZm9ybWF0 IHN0cmluZyBpZiBzcGVjaWZpZWQuDQo+ICsNCj4gKyAgSWYgbm8gZm9ybWF0IHN0cmluZyBpcyBz cGVjaWZpZWQgdGhlIEZvcm1hdCBtdXN0IGJlIE5VTEwuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0g Rm9ybWF0ICBPcHRpb25hbCBmb3JtYXQgc3RyaW5nIGZvciB0cmFjaW5nIHRoZSBkYXRhLg0KPiAr ICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIu DQo+ICsqLw0KPiArVk9JRA0KPiArRHVtcDNDaGFycyAoDQo+ICsgIElOIENPTlNUIENIQVIxNiog Rm9ybWF0IE9QVElPTkFMLA0KPiArICBJTiBVSU5UOCogICAgICAgIFB0cg0KPiArICApOw0KPiAr DQo+ICsvKiogVGhpcyBmdW5jdGlvbiB0cmFjZXMgNCBjaGFyYWN0ZXJzIHdoaWNoIGNhbiBiZSBv cHRpb25hbGx5DQo+ICsgICBmb3JtYXRlZCB1c2luZyB0aGUgZm9ybWF0IHN0cmluZyBpZiBzcGVj aWZpZWQuDQo+ICsNCj4gKyAgSWYgbm8gZm9ybWF0IHN0cmluZyBpcyBzcGVjaWZpZWQgdGhlIEZv cm1hdCBtdXN0IGJlIE5VTEwuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBPcHRpb25h bCBmb3JtYXQgc3RyaW5nIGZvciB0cmFjaW5nIHRoZSBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBQ dHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsqLw0KPiArVk9J RA0KPiArRHVtcDRDaGFycyAoDQo+ICsgIElOIENPTlNUIENIQVIxNiogRm9ybWF0IE9QVElPTkFM LA0KPiArICBJTiBVSU5UOCogICAgICAgIFB0cg0KPiArICApOw0KPiArDQo+ICsvKiogVGhpcyBm dW5jdGlvbiB0cmFjZXMgNiBjaGFyYWN0ZXJzIHdoaWNoIGNhbiBiZSBvcHRpb25hbGx5DQo+ICsg ICBmb3JtYXRlZCB1c2luZyB0aGUgZm9ybWF0IHN0cmluZyBpZiBzcGVjaWZpZWQuDQo+ICsNCj4g KyAgSWYgbm8gZm9ybWF0IHN0cmluZyBpcyBzcGVjaWZpZWQgdGhlIEZvcm1hdCBtdXN0IGJlIE5V TEwuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBPcHRpb25hbCBmb3JtYXQgc3RyaW5n IGZvciB0cmFjaW5nIHRoZSBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIg dG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsqLw0KPiArVk9JRA0KPiArRHVtcDZDaGFy cyAoDQo+ICsgIElOIENPTlNUIENIQVIxNiogRm9ybWF0IE9QVElPTkFMLA0KPiArICBJTiBVSU5U OCogICAgICAgIFB0cg0KPiArICApOw0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiB0cmFjZXMg OCBjaGFyYWN0ZXJzIHdoaWNoIGNhbiBiZSBvcHRpb25hbGx5DQo+ICsgICBmb3JtYXRlZCB1c2lu ZyB0aGUgZm9ybWF0IHN0cmluZyBpZiBzcGVjaWZpZWQuDQo+ICsNCj4gKyAgSWYgbm8gZm9ybWF0 IHN0cmluZyBpcyBzcGVjaWZpZWQgdGhlIEZvcm1hdCBtdXN0IGJlIE5VTEwuDQo+ICsNCj4gKyAg QHBhcmFtIFtpbl0gRm9ybWF0ICBPcHRpb25hbCBmb3JtYXQgc3RyaW5nIGZvciB0cmFjaW5nIHRo ZSBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9m IHRoZSBidWZmZXIuDQo+ICsqLw0KPiArVk9JRA0KPiArRHVtcDhDaGFycyAoDQo+ICsgIElOIENP TlNUIENIQVIxNiogRm9ybWF0IE9QVElPTkFMLA0KPiArICBJTiBVSU5UOCogICAgICAgIFB0cg0K PiArICApOw0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBpbmRlbnRzIGFuZCBwcmludHMgdGhl IEFDUEkgdGFibGUgRmllbGQgTmFtZS4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBJbmRlbnQgICAg ICBOdW1iZXIgb2Ygc3BhY2VzIHRvIGFkZCB0byB0aGUgZ2xvYmFsIHRhYmxlDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgIGluZGVudC4gVGhlIGdsb2JhbCB0YWJsZSBpbmRlbnQgaXMgMCBi eSBkZWZhdWx0Ow0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICBob3dldmVyIHRoaXMgdmFs dWUgaXMgdXBkYXRlZCBvbiBlbnRyeSB0byB0aGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgUGFyc2VBY3BpKCkgYnkgYWRkaW5nIHRoZSBpbmRlbnQgdmFsdWUgcHJvdmlkZWQgdG8NCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyc2VBY3BpKCkgYW5kIHJlc3RvcmVkIGJhY2sg b24gZXhpdC4gVGhlcmVmb3JlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSB0b3Rh bCBpbmRlbnQgaW4gdGhlIG91dHB1dCBpcyBkZXBlbmRlbnQgb24gZnJvbQ0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZC4NCj4gKyAgQHBh cmFtIFtpbl0gRmllbGROYW1lICAgUG9pbnRlciB0byB0aGUgRmllbGQgTmFtZS4NCj4gKyovDQo+ ICtWT0lEDQo+ICtQcmludEZpZWxkTmFtZSAoDQo+ICsgIElOIFVJTlQzMiAgICAgICAgIEluZGVu dCwNCj4gKyAgSU4gQ09OU1QgQ0hBUjE2KiAgRmllbGROYW1lDQo+ICspOw0KPiArDQo+ICsvKiog VGhpcyBmdW5jdGlvbiBwb2ludGVyIGlzIHRoZSB0ZW1wbGF0ZSBmb3IgY3VzdG9taXppbmcgdGhl IHRyYWNlIG91dHB1dA0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIEZvcm1hdCAgRm9ybWF0IHN0cmlu ZyBmb3IgdHJhY2luZyB0aGUgZGF0YSBhcyBzcGVjaWZpZWQgYnkNCj4gKyAgICAgICAgICAgICAg ICAgICAgICB0aGUgJ0Zvcm1hdCcgbWVtYmVyIG9mIEFDUElfUEFSU0VSLg0KPiArICBAcGFyYW0g W2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsqLw0K PiArdHlwZWRlZiBWT0lEICgqRk5QVFJfUFJJTlRfRk9STUFUVEVSKShDT05TVCBDSEFSMTYqIEZv cm1hdCwNCj4gVUlOVDgqIFB0cik7DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBvaW50ZXIg aXMgdGhlIHRlbXBsYXRlIGZvciB2YWxpZGF0aW5nIGFuIEFDUEkgdGFibGUgZmllbGQuDQo+ICsN Cj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgZmll bGQgZGF0YS4NCj4gKyAgQHBhcmFtIFtpbl0gQ29udGV4dCBQb2ludGVyIHRvIGNvbnRleHQgc3Bl Y2lmaWMgaW5mb3JtYXRpb24gYXMgc3BlY2lmaWVkDQo+IGJ5DQo+ICsgICAgICAgICAgICAgICAg ICAgICAgdGhlICdDb250ZXh0JyBtZW1iZXIgb2YgdGhlIEFDUElfUEFSU0VSLg0KPiArICAgICAg ICAgICAgICAgICAgICAgIGUuZy4gdGhpcyBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFDUEkg dGFibGUgaGVhZGVyLg0KPiArKi8NCj4gK3R5cGVkZWYgVk9JRCAoKkZOUFRSX0ZJRUxEX1ZBTElE QVRPUikoVUlOVDgqIFB0ciwgVk9JRCogQ29udGV4dCk7DQo+ICsNCj4gKy8qKiBUaGUgQUNQSV9Q QVJTRVIgc3RydWN0dXJlIGRlc2NyaWJlcyB0aGUgZmllbGRzIG9mIGFuIEFDUEkgdGFibGUgYW5k DQo+ICsgICAgcHJvdmlkZXMgbWVhbnMgZm9yIHRoZSBwYXJzZXIgdG8gaW50ZXJwcmV0IGFuZCB0 cmFjZSBhcHByb3ByaWF0ZWx5Lg0KPiArDQo+ICsgIFRoZSBmaXJzdCB0aHJlZSBtZW1iZXJzIGFy ZSBwb3B1bGF0ZWQgYmFzZWQgb24gaW5mb3JtYXRpb24gcHJlc2VudCBpbg0KPiArICBpbiB0aGUg QUNQSSB0YWJsZSBzcGVjaWZpY2F0aW9ucy4gVGhlIHJlbWFpbmluZyBtZW1iZXJzIGRlc2NyaWJl IGhvdw0KPiArICB0aGUgcGFyc2VyIHNob3VsZCByZXBvcnQgdGhlIGZpZWxkIGluZm9ybWF0aW9u LCB2YWxpZGF0ZSB0aGUgZmllbGQgZGF0YQ0KPiArICBhbmQvb3IgdXBkYXRlIGFuIGV4dGVybmFs IHBvaW50ZXIgdG8gdGhlIGZpZWxkIChJdGVtUHRyKS4NCj4gKw0KPiArICBQYXJzZUFjcGkoKSB1 c2VzIHRoZSBmb3JtYXQgc3RyaW5nIHNwZWNpZmllZCBieSAnRm9ybWF0JyBmb3IgdHJhY2luZw0K PiArICB0aGUgZmllbGQgZGF0YS4gSWYgdGhlIGZpZWxkIGlzIG1vcmUgY29tcGxleCBhbmQgcmVx dWlyZXMgYWRkaXRpb25hbA0KPiArICBwcm9jZXNzaW5nIGZvciBmb3JtYXR0aW5nIGFuZCByZXBy ZXNlbnRhdGlvbiBhIHByaW50IGZvcm1hdHRlciBmdW5jdGlvbg0KPiArICBjYW4gYmUgc3BlY2lm aWVkIGluICdQcmludEZvcm1hdHRlcicuDQo+ICsgIFRoZSBQcmludEZvcm1hdHRlciBmdW5jdGlv biBtYXkgY2hvb3NlIHRvIHVzZSB0aGUgZm9ybWF0IHN0cmluZw0KPiArICBzcGVjaWZpZWQgYnkg J0Zvcm1hdCcgb3IgdXNlIGl0cyBvd24gaW50ZXJuYWwgZm9ybWF0IHN0cmluZy4NCj4gKw0KPiAr ICBUaGUgJ0Zvcm1hdCcgYW5kICdQcmludEZvcm1hdHRlcicgbWVtYmVycyBhbGxvdyBmbGV4aWJp bGl0eSBmb3INCj4gKyAgcmVwcmVzZW50aW5nIHRoZSBmaWVsZCBkYXRhLg0KPiArKi8NCj4gK3R5 cGVkZWYgc3RydWN0IEFjcGlQYXJzZXIgew0KPiArDQo+ICsgIC8vLyBTdHJpbmcgZGVzY3JpYmlu ZyB0aGUgQUNQSSB0YWJsZSBmaWVsZA0KPiArICAvLy8gKEZpZWxkIGNvbHVtbiBmcm9tIEFDUEkg dGFibGUgc3BlYykNCj4gKyAgQ09OU1QgQ0hBUjE2KiAgICAgICAgIE5hbWVTdHI7DQo+ICsNCj4g KyAgLy8vIFRoZSBsZW5ndGggb2YgdGhlIGZpZWxkLg0KPiArICAvLy8gKEJ5dGUgTGVuZ3RoIGNv bHVtbiBmcm9tIEFDUEkgdGFibGUgc3BlYykNCj4gKyAgVUlOVDMyICAgICAgICAgICAgICAgIExl bmd0aDsNCj4gKw0KPiArICAvLy8gVGhlIG9mZnNldCBvZiB0aGUgZmllbGQgZnJvbSB0aGUgc3Rh cnQgb2YgdGhlIHRhYmxlLg0KPiArICAvLy8gKEJ5dGUgT2Zmc2V0IGNvbHVtbiBmcm9tIEFDUEkg dGFibGUgc3BlYykNCj4gKyAgVUlOVDMyICAgICAgICAgICAgICAgIE9mZnNldDsNCj4gKw0KPiAr ICAvLy8gT3B0aW9uYWwgUHJpbnQoKSBzdHlsZSBmb3JtYXQgc3RyaW5nIGZvciB0cmFjaW5nIHRo ZSBkYXRhLiBJZiBub3QNCj4gKyAgLy8vIHVzZWQgdGhpcyBtdXN0IGJlIHNldCB0byBOVUxMLg0K PiArICBDT05TVCBDSEFSMTYqICAgICAgICAgRm9ybWF0Ow0KPiArDQo+ICsgIC8vLyBPcHRpb25h bCBwb2ludGVyIHRvIGEgcHJpbnQgZm9ybWF0dGVyIGZ1bmN0aW9uIHdoaWNoDQo+ICsgIC8vLyBp cyB0eXBpY2FsbHkgdXNlZCB0byB0cmFjZSBjb21wbGV4IGZpZWxkIGluZm9ybWF0aW9uLg0KPiAr ICAvLy8gSWYgbm90IHVzZWQgdGhpcyBtdXN0IGJlIHNldCB0byBOVUxMLg0KPiArICAvLy8gVGhl IEZvcm1hdCBzdHJpbmcgaXMgcGFzc2VkIHRvIHRoZSBQcmludEZvcm1hdHRlciBmdW5jdGlvbg0K PiArICAvLy8gYnV0IG1heSBiZSBpZ25vcmVkIGJ5IHRoZSBpbXBsZW1lbnRhdGlvbiBjb2RlLg0K PiArICBGTlBUUl9QUklOVF9GT1JNQVRURVIgUHJpbnRGb3JtYXR0ZXI7DQo+ICsNCj4gKyAgLy8v IE9wdGlvbmFsIHBvaW50ZXIgd2hpY2ggbWF5IGJlIHNldCB0byByZXF1ZXN0IHRoZSBwYXJzZXIg dG8gdXBkYXRlDQo+ICsgIC8vLyBhIHBvaW50ZXIgdG8gdGhlIGZpZWxkIGRhdGEuIElmIHVudXNl ZCB0aGlzIG11c3QgYmUgc2V0IHRvIE5VTEwuDQo+ICsgIFZPSUQqKiAgICAgICAgICAgICAgICBJ dGVtUHRyOw0KPiArDQo+ICsgIC8vLyBPcHRpb25hbCBwb2ludGVyIHRvIGEgZmllbGQgdmFsaWRh dG9yIGZ1bmN0aW9uLg0KPiArICAvLy8gVGhlIGZ1bmN0aW9uIHNob3VsZCBkaXJlY3RseSByZXBv cnQgYW55IGFwcHJvcHJpYXRlIGVycm9yIG9yIHdhcm5pbmcNCj4gKyAgLy8vIGFuZCBpbnZva2Ug dGhlIGFwcHJvcHJpYXRlIGNvdW50ZXIgdXBkYXRlIGZ1bmN0aW9uLg0KPiArICAvLy8gSWYgbm90 IHVzZWQgdGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBzZXQgdG8gTlVMTC4NCj4gKyAgRk5QVFJfRklF TERfVkFMSURBVE9SIEZpZWxkVmFsaWRhdG9yOw0KPiArDQo+ICsgIC8vLyBPcHRpb25hbCBwb2lu dGVyIHRvIGNvbnRleHQgc3BlY2lmaWMgaW5mb3JtYXRpb24sDQo+ICsgIC8vLyB3aGljaCB0aGUg RmllbGQgVmFsaWRhdG9yIGZ1bmN0aW9uIGNhbiB1c2UgdG8gZGV0ZXJtaW5lDQo+ICsgIC8vLyBh ZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBBQ1BJIHRhYmxlIGFuZCBtYWtlDQo+ICsg IC8vLyBkZWNpc2lvbnMgYWJvdXQgdGhlIGZpZWxkIGJlaW5nIHZhbGlkYXRlZC4NCj4gKyAgLy8v IGUuZy4gdGhpcyBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUgaGVhZGVyDQo+ ICsgIFZPSUQqICAgICAgICAgICAgICAgICBDb250ZXh0Ow0KPiArfSBBQ1BJX1BBUlNFUjsNCj4g Kw0KPiArLyoqIEEgc3RydWN0dXJlIHVzZWQgdG8gc3RvcmUgdGhlIHBvaW50ZXJzIHRvIHRoZSBt ZW1iZXJzIG9mIHRoZQ0KPiArICAgIEFDUEkgZGVzY3JpcHRpb24gaGVhZGVyIHN0cnVjdHVyZSB0 aGF0IHdhcyBwYXJzZWQuDQo+ICsqLw0KPiArdHlwZWRlZiBzdHJ1Y3QgQWNwaURlc2NyaXB0aW9u SGVhZGVySW5mbyB7DQo+ICsgIC8vLyBBQ1BJIHRhYmxlIHNpZ25hdHVyZQ0KPiArICBVSU5UMzIq IFNpZ25hdHVyZTsNCj4gKyAgLy8vIExlbmd0aCBvZiB0aGUgQUNQSSB0YWJsZQ0KPiArICBVSU5U MzIqIExlbmd0aDsNCj4gKyAgLy8vIFJldmlzaW9uDQo+ICsgIFVJTlQ4KiAgUmV2aXNpb247DQo+ ICsgIC8vLyBDaGVja3N1bQ0KPiArICBVSU5UOCogIENoZWNrc3VtOw0KPiArICAvLy8gT0VNIElk IC0gbGVuZ3RoIGlzIDYgYnl0ZXMNCj4gKyAgVUlOVDgqICBPZW1JZDsNCj4gKyAgLy8vIE9FTSB0 YWJsZSBJZA0KPiArICBVSU5UNjQqIE9lbVRhYmxlSWQ7DQo+ICsgIC8vLyBPRU0gcmV2aXNpb24g SWQNCj4gKyAgVUlOVDMyKiBPZW1SZXZpc2lvbjsNCj4gKyAgLy8vIENyZWF0b3IgSWQNCj4gKyAg VUlOVDMyKiBDcmVhdG9ySWQ7DQo+ICsgIC8vLyBDcmVhdG9yIHJldmlzaW9uDQo+ICsgIFVJTlQz MiogQ3JlYXRvclJldmlzaW9uOw0KPiArfSBBQ1BJX0RFU0NSSVBUSU9OX0hFQURFUl9JTkZPOw0K PiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHBhcnNlIGFuIEFDUEkgdGFibGUg YnVmZmVyLg0KPiArDQo+ICsgIFRoZSBBQ1BJIHRhYmxlIGJ1ZmZlciBpcyBwYXJzZWQgdXNpbmcg dGhlIEFDUEkgdGFibGUgcGFyc2VyIGluZm9ybWF0aW9uDQo+ICsgIHNwZWNpZmllZCBieSBhIHBv aW50ZXIgdG8gYW4gYXJyYXkgb2YgQUNQSV9QQVJTRVIgZWxlbWVudHMuIFRoaXMgcGFyc2VyDQo+ ICsgIGZ1bmN0aW9uIGl0ZXJhdGVzIHRocm91Z2ggZWFjaCBpdGVtIG9uIHRoZSBBQ1BJX1BBUlNF UiBhcnJheSBhbmQgbG9ncw0KPiB0aGUNCj4gKyAgQUNQSSB0YWJsZSBmaWVsZHMuDQo+ICsNCj4g KyAgVGhpcyBmdW5jdGlvbiBjYW4gb3B0aW9uYWxseSBiZSB1c2VkIHRvIHBhcnNlIEFDUEkgdGFi bGVzIGFuZCBmZXRjaCBzcGVjaWZpYw0KPiArICBmaWVsZCB2YWx1ZXMuIFRoZSBJdGVtUHRyIG1l bWJlciBvZiB0aGUgQUNQSV9QQVJTRVIgc3RydWN0dXJlICh3aGVyZQ0KPiB1c2VkKQ0KPiArICBp cyB1cGRhdGVkIGJ5IHRoaXMgcGFyc2VyIGZ1bmN0aW9uIHRvIHBvaW50IHRvIHRoZSBzZWxlY3Rl ZCBmaWVsZCBkYXRhDQo+ICsgIChlLmcuIHVzZWZ1bCBmb3IgdmFyaWFibGUgbGVuZ3RoIG5lc3Rl ZCBmaWVsZHMpLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFRyYWNlICAgICAgICBUcmFjZSB0aGUg QUNQSSBmaWVsZHMgVFJVRSBlbHNlIG9ubHkgcGFyc2UgdGhlDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICB0YWJsZS4NCj4gKyAgQHBhcmFtIFtpbl0gSW5kZW50ICAgICAgIE51bWJlciBv ZiBzcGFjZXMgdG8gaW5kZW50IHRoZSBvdXRwdXQuDQo+ICsgIEBwYXJhbSBbaW5dIEFzY2lpTmFt ZSAgICBPcHRpb25hbCBwb2ludGVyIHRvIGFuIEFTQ0lJIHN0cmluZyB0aGF0IGRlc2NyaWJlcw0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHRhYmxlIGJlaW5nIHBhcnNlZC4NCj4g KyAgQHBhcmFtIFtpbl0gUHRyICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBi dWZmZXIuDQo+ICsgIEBwYXJhbSBbaW5dIExlbmd0aCAgICAgICBMZW5ndGggb2YgdGhlIGJ1ZmZl ciBwb2ludGVkIGJ5IFB0ci4NCj4gKyAgQHBhcmFtIFtpbl0gUGFyc2VyICAgICAgIFBvaW50ZXIg dG8gYW4gYXJyYXkgb2YgQUNQSV9QQVJTRVIgc3RydWN0dXJlIHRoYXQNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIGRlc2NyaWJlcyB0aGUgdGFibGUgYmVpbmcgcGFyc2VkLg0KPiArICBA cGFyYW0gW2luXSBQYXJzZXJJdGVtcyAgTnVtYmVyIG9mIGl0ZW1zIGluIHRoZSBBQ1BJX1BBUlNF UiBhcnJheS4NCj4gKw0KPiArICBAcmV0dmFsIE51bWJlciBvZiBieXRlcyBwYXJzZWQuDQo+ICsq Lw0KPiArVUlOVDMyDQo+ICtQYXJzZUFjcGkgKA0KPiArICBJTiBCT09MRUFOICAgICAgICAgICAg VHJhY2UsDQo+ICsgIElOIFVJTlQzMiAgICAgICAgICAgICBJbmRlbnQsDQo+ICsgIElOIENPTlNU IENIQVI4KiAgICAgICBBc2NpaU5hbWUgT1BUSU9OQUwsDQo+ICsgIElOIFVJTlQ4KiAgICAgICAg ICAgICBQdHIsDQo+ICsgIElOIFVJTlQzMiAgICAgICAgICAgICBMZW5ndGgsDQo+ICsgIElOIENP TlNUIEFDUElfUEFSU0VSKiBQYXJzZXIsDQo+ICsgIElOIFVJTlQzMiAgICAgICAgICAgICBQYXJz ZXJJdGVtcw0KPiArKTsNCj4gKw0KPiArLyoqIFRoaXMgaXMgYSBoZWxwZXIgbWFjcm8gdG8gcGFz cyBwYXJhbWV0ZXJzIHRvIHRoZSBQYXJzZXIgZnVuY3Rpb25zLg0KPiArDQo+ICsgIEBwYXJhbSBb aW5dIFBhcnNlciBUaGUgbmFtZSBvZiB0aGUgQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0 aGUNCj4gKyAgICAgICAgICAgICAgQUNQSSB0YWJsZSBmaWVsZHMuDQo+ICsqLw0KPiArI2RlZmlu ZSBQQVJTRVJfUEFSQU1TKFBhcnNlcikgUGFyc2VyLCBzaXplb2YgKFBhcnNlcikgLyBzaXplb2YN Cj4gKFBhcnNlclswXSkNCj4gKw0KPiArLyoqIFRoaXMgaXMgYSBoZWxwZXIgbWFjcm8gZm9yIGRl c2NyaWJpbmcgdGhlIEFDUEkgaGVhZGVyIGZpZWxkcy4NCj4gKw0KPiArICBAcGFyYW0gW291dF0g SW5mbyAgUG9pbnRlciB0byByZXRyaWV2ZSB0aGUgQUNQSSB0YWJsZSBoZWFkZXIgaW5mb3JtYXRp b24uDQo+ICsqLw0KPiArI2RlZmluZSBQQVJTRV9BQ1BJX0hFQURFUihJbmZvKSAgICAgICAgICAg ICAgICAgICBcDQo+ICsgIHsgTCJTaWduYXR1cmUiLCA0LCAwLCBOVUxMLCBEdW1wNENoYXJzLCAg ICAgICAgIFwNCj4gKyAgICAoVk9JRCoqKSYoSW5mbyktPlNpZ25hdHVyZSAsIE5VTEwsIE5VTEwg fSwgICAgXA0KPiArICB7IEwiTGVuZ3RoIiwgNCwgNCwgTCIlZCIsIE5VTEwsICAgICAgICAgICAg ICAgICBcDQo+ICsgICAgKFZPSUQqKikmKEluZm8pLT5MZW5ndGgsIE5VTEwsIE5VTEwgfSwgICAg ICAgIFwNCj4gKyAgeyBMIlJldmlzaW9uIiwgMSwgOCwgTCIlZCIsIE5VTEwsICAgICAgICAgICAg ICAgXA0KPiArICAgIChWT0lEKiopJihJbmZvKS0+UmV2aXNpb24sIE5VTEwsIE5VTEwgfSwgICAg ICBcDQo+ICsgIHsgTCJDaGVja3N1bSIsIDEsIDksIEwiMHglWCIsIE5VTEwsICAgICAgICAgICAg IFwNCj4gKyAgICAoVk9JRCoqKSYoSW5mbyktPkNoZWNrc3VtLCBOVUxMLCBOVUxMIH0sICAgICAg XA0KPiArICB7IEwiT2VtIElEIiwgNiwgMTAsIE5VTEwsIER1bXA2Q2hhcnMsICAgICAgICAgICBc DQo+ICsgICAgKFZPSUQqKikmKEluZm8pLT5PZW1JZCwgTlVMTCwgTlVMTCB9LCAgICAgICAgIFwN Cj4gKyAgeyBMIk9lbSBUYWJsZSBJRCIsIDgsIDE2LCBOVUxMLCBEdW1wOENoYXJzLCAgICAgXA0K PiArICAgIChWT0lEKiopJihJbmZvKS0+T2VtVGFibGVJZCwgTlVMTCwgTlVMTCB9LCAgICBcDQo+ ICsgIHsgTCJPZW0gUmV2aXNpb24iLCA0LCAyNCwgTCIweCVYIiwgTlVMTCwgICAgICAgIFwNCj4g KyAgICAoVk9JRCoqKSYoSW5mbyktPk9lbVJldmlzaW9uLCBOVUxMLCBOVUxMIH0sICAgXA0KPiAr ICB7IEwiQ3JlYXRvciBJRCIsIDQsIDI4LCBOVUxMLCBEdW1wNENoYXJzLCAgICAgICBcDQo+ICsg ICAgKFZPSUQqKikmKEluZm8pLT5DcmVhdG9ySWQsIE5VTEwsIE5VTEwgfSwgICAgIFwNCj4gKyAg eyBMIkNyZWF0b3IgUmV2aXNpb24iLCA0LCAzMiwgTCIweCVYIiwgTlVMTCwgICAgXA0KPiArICAg IChWT0lEKiopJihJbmZvKS0+Q3JlYXRvclJldmlzaW9uLCBOVUxMLCBOVUxMIH0NCj4gKw0KPiAr LyoqIExlbmd0aCBvZiB0aGUgQUNQSSBHQVMgc3RydWN0dXJlLg0KPiArDQo+ICsgIE5PVEU6IFRo aXMgbWlnaHQgbm9ybWFsbHkgYmUgZGVmaW5lZCBhcw0KPiArICAgICAgICBzaXplb2YgKEVGSV9B Q1BJXzZfMl9HRU5FUklDX0FERFJFU1NfU1RSVUNUVVJFKS4NCj4gKyAgICAgICAgSG93ZXZlciwg d2UgZGVsaWJlcmF0ZWx5IG1pbmltaXNlIGFueSByZWZlcmVuY2UgdG8gdGhlIEVESzIgQUNQSQ0K PiArICAgICAgICBoZWFkZXJzIGluIGFuIGF0dGVtcHQgdG8gcHJvdmlkZSBjcm9zcyBjaGVja2lu Zy4NCj4gKyovDQo+ICsjZGVmaW5lIEdBU19MRU5HVEggICAgICAgICAgICAgICAgICAgICAxMg0K PiArDQo+ICsvKiogTGVuZ3RoIG9mIHRoZSBBQ1BJIEhlYWRlciBzdHJ1Y3R1cmUuDQo+ICsNCj4g KyAgTk9URTogVGhpcyBtaWdodCBub3JtYWxseSBiZSBkZWZpbmVkIGFzDQo+ICsgICAgICAgIHNp emVvZiAoRUZJX0FDUElfREVTQ1JJUFRJT05fSEVBREVSKS4NCj4gKyAgICAgICAgSG93ZXZlciwg d2UgZGVsaWJlcmF0ZWx5IG1pbmltaXNlIGFueSByZWZlcmVuY2UgdG8gdGhlIEVESzIgQUNQSQ0K PiArICAgICAgICBoZWFkZXJzIGluIGFuIGF0dGVtcHQgdG8gcHJvdmlkZSBjcm9zcyBjaGVja2lu Zy4NCj4gKyovDQo+ICsjZGVmaW5lIEFDUElfREVTQ1JJUFRJT05fSEVBREVSX0xFTkdUSCAgMzYN Cj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gaW5kZW50cyBhbmQgdHJhY2VzIHRoZSBHQVMgc3Ry dWN0dXJlIGFzIGRlc2NyaWJlZA0KPiArICAgIGJ5IHRoZSBHYXNQYXJzZXIuDQo+ICsNCj4gKyAg QHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0K PiArICBAcGFyYW0gW2luXSBJbmRlbnQgIE51bWJlciBvZiBzcGFjZXMgdG8gaW5kZW50IHRoZSBv dXRwdXQuDQo+ICsqLw0KPiArVk9JRA0KPiArRHVtcEdhc1N0cnVjdCAoDQo+ICsgIElOIFVJTlQ4 KiAgICAgICAgUHRyLA0KPiArICBJTiBVSU5UMzIgICAgICAgIEluZGVudA0KPiArICApOw0KPiAr DQo+ICsvKiogVGhpcyBmdW5jdGlvbiB0cmFjZXMgdGhlIEdBUyBzdHJ1Y3R1cmUgYXMgZGVzY3Jp YmVkIGJ5IHRoZSBHYXNQYXJzZXIuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBPcHRp b25hbCBmb3JtYXQgc3RyaW5nIGZvciB0cmFjaW5nIHRoZSBkYXRhLg0KPiArICBAcGFyYW0gW2lu XSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsqLw0KPiAr Vk9JRA0KPiArRHVtcEdhcyAoDQo+ICsgIElOIENPTlNUIENIQVIxNiogRm9ybWF0IE9QVElPTkFM LA0KPiArICBJTiBVSU5UOCogICAgICAgIFB0cg0KPiArICApOw0KPiArDQo+ICsvKiogVGhpcyBm dW5jdGlvbiB0cmFjZXMgdGhlIEFDUEkgaGVhZGVyIGFzIGRlc2NyaWJlZCBieSB0aGUNCj4gQWNw aUhlYWRlclBhcnNlci4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgUG9pbnRl ciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gKw0KPiArICBAcmV0dmFsIE51bWJlciBv ZiBieXRlcyBwYXJzZWQuDQo+ICsqLw0KPiArVUlOVDMyDQo+ICtEdW1wQWNwaUhlYWRlciAoDQo+ ICsgIElOIFVJTlQ4KiBQdHINCj4gKyAgKTsNCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcGFy c2VzIHRoZSBBQ1BJIGhlYWRlciBhcyBkZXNjcmliZWQgYnkgdGhlDQo+IEFjcGlIZWFkZXJQYXJz ZXIuDQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBvcHRpb25hbGx5IHJldHVybnMgdGhlIFNpZ25h dHVyZSwgTGVuZ3RoIGFuZCByZXZpc2lvbiBvZiB0aGUNCj4gKyAgQUNQSSB0YWJsZS4NCj4gKw0K PiArICBAcGFyYW0gW2luXSAgUHRyICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUg YnVmZmVyLg0KPiArICBAcGFyYW0gW291dF0gU2lnbmF0dXJlICBHZXRzIGxvY2F0aW9uIG9mIHRo ZSBBQ1BJIHRhYmxlIHNpZ25hdHVyZS4NCj4gKyAgQHBhcmFtIFtvdXRdIExlbmd0aCAgICAgR2V0 cyBsb2NhdGlvbiBvZiB0aGUgbGVuZ3RoIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiArICBAcGFyYW0g W291dF0gUmV2aXNpb24gICBHZXRzIGxvY2F0aW9uIG9mIHRoZSByZXZpc2lvbiBvZiB0aGUgQUNQ SSB0YWJsZS4NCj4gKw0KPiArICBAcmV0dmFsIE51bWJlciBvZiBieXRlcyBwYXJzZWQuDQo+ICsq Lw0KPiArVUlOVDMyDQo+ICtQYXJzZUFjcGlIZWFkZXIgKA0KPiArICBJTiAgVUlOVDgqICAgICAg ICAgUHRyLA0KPiArICBPVVQgQ09OU1QgVUlOVDMyKiogU2lnbmF0dXJlLA0KPiArICBPVVQgQ09O U1QgVUlOVDMyKiogTGVuZ3RoLA0KPiArICBPVVQgQ09OU1QgVUlOVDgqKiAgUmV2aXNpb24NCj4g KyAgKTsNCj4gKw0KPiArI2VuZGlmIC8vIEFDUElQQVJTRVJfSF8NCj4gZGlmZiAtLWdpdA0KPiBh L1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL0FjcGlUYWJsZVBh cnNlci5oDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIv QWNwaVRhYmxlUGFyc2VyLmgNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXgNCj4gMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODRjNzU4ZmFlYWJhZmQ2ZWRl YThmMWNiMjINCj4gMjM3YmIwOWQ4M2Q1ZWINCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9TaGVs bFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9BY3BpVGFibGVQYXJzZXIu aA0KPiBAQCAtMCwwICsxLDEyOCBAQA0KPiArLyoqDQo+ICsgIEhlYWRlciBmaWxlIGZvciBBQ1BJ IHRhYmxlIHBhcnNlcg0KPiArDQo+ICsgIENvcHlyaWdodCAoYykgMjAxNiAtIDIwMTcsIEFSTSBM aW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArICBUaGlzIHByb2dyYW0gYW5kIHRoZSBh Y2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICsgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFi bGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QNCj4gTGljZW5zZQ0K PiArICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQg b2YgdGhlIGxpY2Vuc2UgbWF5IGJlDQo+IGZvdW5kIGF0DQo+ICsgIGh0dHA6Ly9vcGVuc291cmNl Lm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gKw0KPiArICBUSEUgUFJPR1JBTSBJUyBE SVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywN Cj4gKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwg RUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gKyoqLw0KPiArDQo+ICsjaWZuZGVmIEFD UElUQUJMRVBBUlNFUl9IXw0KPiArI2RlZmluZSBBQ1BJVEFCTEVQQVJTRVJfSF8NCj4gKw0KPiAr LyoqIFRoZSBtYXhpbXVtIG51bWJlciBvZiBBQ1BJIHRhYmxlIHBhcnNlcnMuDQo+ICsqLw0KPiAr I2RlZmluZSBNQVhfQUNQSV9UQUJMRV9QQVJTRVJTICAgICAgICAgIDE2DQo+ICsNCj4gKy8qKiBB biBpbnZhbGlkL05VTEwgc2lnbmF0dXJlIHZhbHVlLg0KPiArKi8NCj4gKyNkZWZpbmUgQUNQSV9Q QVJTRVJfU0lHTkFUVVJFX05VTEwgICAgICAwDQo+ICsNCj4gKy8qKiBBIGZ1bmN0aW9uIHRoYXQg cGFyc2VzIHRoZSBBQ1BJIHRhYmxlLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFRyYWNlICAgICAg ICAgICAgICBJZiBUUlVFLCB0cmFjZSB0aGUgQUNQSSBmaWVsZHMuDQo+ICsgIEBwYXJhbSBbaW5d IFB0ciAgICAgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0K PiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVMZW5ndGggICAgTGVuZ3RoIG9mIHRoZSBBQ1BJIHRh YmxlLg0KPiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVSZXZpc2lvbiAgUmV2aXNpb24gb2YgdGhl IEFDUEkgdGFibGUuDQo+ICsqLw0KPiArdHlwZWRlZg0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICso RUZJQVBJICogUEFSU0VfQUNQSV9UQUJMRV9QUk9DKSAoDQo+ICsgIElOIEJPT0xFQU4gVHJhY2Us DQo+ICsgIElOIFVJTlQ4KiAgUHRyLA0KPiArICBJTiBVSU5UMzIgIEFjcGlUYWJsZUxlbmd0aCwN Cj4gKyAgSU4gVUlOVDggICBBY3BpVGFibGVSZXZpc2lvbg0KPiArICApOw0KPiArDQo+ICsvKiog VGhlIEFDUEkgdGFibGUgcGFyc2VyIGluZm9ybWF0aW9uDQo+ICsqLw0KPiArdHlwZWRlZiBzdHJ1 Y3QgQWNwaVRhYmxlUGFyc2VyIHsNCj4gKyAgLy8vIEFDUEkgdGFibGUgc2lnbmF0dXJlDQo+ICsg IFVJTlQzMiAgICAgICAgICAgICAgICAgIFNpZ25hdHVyZTsNCj4gKw0KPiArICAvLy8gVGhlIEFD UEkgdGFibGUgcGFyc2VyIGZ1bmN0aW9uLg0KPiArICBQQVJTRV9BQ1BJX1RBQkxFX1BST0MgICBQ YXJzZXI7DQo+ICt9IEFDUElfVEFCTEVfUEFSU0VSOw0KPiArDQo+ICsvKiogUmVnaXN0ZXIgdGhl IEFDUEkgdGFibGUgUGFyc2VyDQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiByZWdpc3RlcnMgdGhl IEFDUEkgdGFibGUgcGFyc2VyLi4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBTaWduYXR1cmUgICBU aGUgQUNQSSB0YWJsZSBTaWduYXR1cmUuDQo+ICsgIEBwYXJhbSBbaW5dIFBhcnNlclByb2MgIFRo ZSBBQ1BJIHRhYmxlIHBhcnNlci4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAg ICAgICBUaGUgcGFyc2VyIGlzIHJlZ2lzdGVyZWQuDQo+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURf UEFSQU1FVEVSIEEgcGFyYW1ldGVyIGlzIGludmFsaWQuDQo+ICsgIEByZXR2YWwgRUZJX0FMUkVB RFlfU1RBUlRFRCAgIFRoZSBwYXJzZXIgZm9yIHRoZSBUYWJsZQ0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQuDQo+ICsgIEByZXR2YWwgRUZJ X09VVF9PRl9SRVNPVVJDRVMgIE5vIHNwYWNlIHRvIHJlZ2lzdGVyIHRoZQ0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXIuDQo+ICsqLw0KPiArRUZJX1NUQVRVUw0KPiAr RUZJQVBJDQo+ICtSZWdpc3RlclBhcnNlciAoDQo+ICsgIElOICBVSU5UMzIgICAgICAgICAgICAg ICAgICBTaWduYXR1cmUsDQo+ICsgIElOICBQQVJTRV9BQ1BJX1RBQkxFX1BST0MgICBQYXJzZXJQ cm9jDQo+ICspOw0KPiArDQo+ICsvKiogRGVyZWdpc3RlciB0aGUgQUNQSSB0YWJsZSBQYXJzZXIN Cj4gKw0KPiArICBUaGlzIGZ1bmN0aW9uIGRlcmVnaXN0ZXJzIHRoZSBBQ1BJIHRhYmxlIHBhcnNl ci4uDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gU2lnbmF0dXJlICAgVGhlIEFDUEkgdGFibGUgU2ln bmF0dXJlLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJz ZXIgd2FzIGRlcmVnaXN0ZXJlZC4NCj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIg QSBwYXJhbWV0ZXIgaXMgaW52YWxpZC4NCj4gKyAgQHJldHZhbCBFRklfTk9UX0ZPVU5EICAgICAg ICAgQSByZWdpc3RlcmVkIHBhcnNlciB3YXMgbm90IGZvdW5kLg0KPiArKi8NCj4gK0VGSV9TVEFU VVMNCj4gK0VGSUFQSQ0KPiArRGVyZWdpc3RlclBhcnNlciAoDQo+ICsgIElOICBVSU5UMzIgICAg ICAgICAgICAgICAgICBTaWduYXR1cmUNCj4gKyk7DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9u IHByb2Nlc3NlcyB0aGUgQUNQSSB0YWJsZXMuDQo+ICsgIFRoaXMgZnVuY3Rpb24gY2FsbHMgUHJv Y2Vzc1RhYmxlUmVwb3J0T3B0aW9ucygpIHRvIGxpc3QgdGhlIEFDUEkNCj4gKyAgdGFibGVzLCBw ZXJmb3JtIGJpbmFyeSBkdW1wIG9mIHRoZSB0YWJsZXMgYW5kIGRldGVybWluZSBpZiB0aGUNCj4g KyAgQUNQSSBmaWVsZHMgc2hvdWxkIGJlIHRyYWNlZC4NCj4gKw0KPiArICBUaGlzIGZ1bmN0aW9u IGFsc28gaW52b2tlcyB0aGUgcGFyc2VyIGZvciB0aGUgQUNQSSB0YWJsZXMuDQo+ICsNCj4gKyAg VGhpcyBmdW5jdGlvbiBhbHNvIHBlcmZvcm1zIGEgUkFXIGR1bXAgb2YgdGhlIEFDUEkgdGFibGUg aW5jbHVkaW5nDQo+ICsgIHRoZSB1bmtub3duL3VucGFyc2VkIEFDUEkgdGFibGVzIGFuZCB2YWxp ZGF0ZXMgdGhlIGNoZWNrc3VtLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAg ICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgQUNQSQ0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdGFibGUgZGF0YSBidWZmZXIuDQo+ICsqLw0KPiArVk9JRA0KPiAr UHJvY2Vzc0FjcGlUYWJsZSAoDQo+ICsgIElOIFVJTlQ4KiBQdHINCj4gKyAgKTsNCj4gKw0KPiAr LyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBBQ1BJIFJTRFAgdGFibGUuDQo+ICsgIFRoaXMg ZnVuY3Rpb24gcGFyc2VzIHRoZSBSU0RQIHRhYmxlIGFuZCBvcHRpb25hbGx5IHRyYWNlcyB0aGUg QUNQSQ0KPiArICB0YWJsZSBmaWVsZHMuIFByb2Nlc3NUYWJsZVJlcG9ydE9wdGlvbnMoKSBpcyBj YWxsZWQgdG8gZGV0ZXJtaW5lIGlmDQo+ICsgIHRoZSBBQ1BJIGZpZWxkcyBzaG91bGQgYmUgdHJh Y2VkLg0KPiArDQo+ICsgIFRoaXMgZnVuY3Rpb24gaW52b2tlcyB0aGUgcGFyc2VyIGZvciB0aGUg WFNEVCB0YWJsZS4NCj4gKyAgKiBOb3RlIC0gVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBzdXBwb3J0 IHBhcnNpbmcgb2YgUlNEVCB0YWJsZS4NCj4gKw0KPiArICBUaGlzIGZ1bmN0aW9uIGFsc28gcGVy Zm9ybXMgYSBSQVcgZHVtcCBvZiB0aGUgQUNQSSB0YWJsZSBhbmQNCj4gKyAgdmFsaWRhdGVzIHRo ZSBjaGVja3N1bS4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICAgICAgUG9p bnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9T VUNDRVNTICAgICAgICAgICAgU3VjY2Vzcy4NCj4gKyAgQHJldHZhbCBFRklfTk9UX0ZPVU5EICAg ICAgICAgIFZhbGlkIFhTRFQgcG9pbnRlciBub3QgZm91bmQuDQo+ICsqLw0KPiArRUZJX1NUQVRV Uw0KPiArUGFyc2VSc2RwICgNCj4gKyAgSU4gVUlOVDgqIFB0cg0KPiArICApOw0KPiArDQo+ICsj ZW5kaWYgLy8gQUNQSVRBQkxFUEFSU0VSX0hfDQo+IGRpZmYgLS1naXQgYS9TaGVsbFBrZy9MaWJy YXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9BY3BpVmlldy5oDQo+IGIvU2hlbGxQa2cv TGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvQWNwaVZpZXcuaA0KPiBuZXcgZmls ZSBtb2RlIDEwMDY0NA0KPiBpbmRleA0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwLi5kZmFhMWVmYmI5YTE1Y2FjYWFmM2MwZTU2OQ0KPiA4ZDMzNzc4YjUxYmFmMg0K PiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZp ZXdDb21tYW5kTGliL0FjcGlWaWV3LmgNCj4gQEAgLTAsMCArMSw4NyBAQA0KPiArLyoqDQo+ICsg IEhlYWRlciBmaWxlIGZvciBBY3BpVmlldw0KPiArDQo+ICsgIENvcHlyaWdodCAoYykgMjAxNiAt IDIwMTcsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArICBUaGlzIHByb2dy YW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICsgIGFyZSBsaWNlbnNlZCBhbmQg bWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QN Cj4gTGljZW5zZQ0KPiArICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRo ZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlDQo+IGZvdW5kIGF0DQo+ICsgIGh0dHA6 Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gKw0KPiArICBUSEUg UFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElT Ig0KPiBCQVNJUywNCj4gKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBP RiBBTlkgS0lORCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gKyoqLw0KPiArDQo+ ICsjaWZuZGVmIEFDUElWSUVXX0hfDQo+ICsjZGVmaW5lIEFDUElWSUVXX0hfDQo+ICsNCj4gKy8q KiBBIG1hY3JvIHRvIGRlZmluZSB0aGUgbWF4IGZpbGUgbmFtZSBsZW5ndGgNCj4gKyovDQo+ICsj ZGVmaW5lIE1BWF9GSUxFX05BTUVfTEVOICAgIDEyOA0KPiArDQo+ICsvKiogVGhlIEVSRVBPUlRf T1BUSU9OIGVudW0gZGVzY3JpYmVzIEFDUEkgdGFibGUgUmVwb3J0aW5nIG9wdGlvbnMuDQo+ICsq Lw0KPiArdHlwZWRlZiBlbnVtIFJlcG9ydE9wdGlvbiB7DQo+ICsgIEVSRVBPUlRfQUxMLCAgICAg ICAgICAgIC8vLzwgUmVwb3J0IEFsbCB0YWJsZXMuDQo+ICsgIEVSRVBPUlRfU0VMRUNURUQsICAg ICAgIC8vLzwgUmVwb3J0IFNlbGVjdGVkIHRhYmxlLg0KPiArICBFUkVQT1JUX1RBQkxFX0xJU1Qs ICAgICAvLy88IFJlcG9ydCBMaXN0IG9mIHRhYmxlcy4NCj4gKyAgRVJFUE9SVF9EVU1QX0JJTl9G SUxFLCAgLy8vPCBEdW1wIHNlbGVjdGVkIHRhYmxlIHRvIGEgZmlsZS4NCj4gKyAgRVJFUE9SVF9N QVgNCj4gK30gRVJFUE9SVF9PUFRJT047DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIGluY3Jl bWVudHMgdGhlIEFDUEkgdGFibGUgZXJyb3IgY291bnRlci4NCj4gKyovDQo+ICtWT0lEDQo+ICtJ bmNyZW1lbnRFcnJvckNvdW50ICgNCj4gKyAgVk9JRA0KPiArICApOw0KPiArDQo+ICsvKiogVGhp cyBmdW5jdGlvbiByZXR1cm5zIHRoZSBBQ1BJIHRhYmxlIGVycm9yIGNvdW50Lg0KPiArDQo+ICsg IEByZXR2YWwgUmV0dXJucyB0aGUgY291bnQgb2YgZXJyb3JzIGRldGVjdGVkIGluIHRoZSBBQ1BJ IHRhYmxlcy4NCj4gKyovDQo+ICtVSU5UMzINCj4gK0dldEVycm9yQ291bnQgKA0KPiArICBWT0lE DQo+ICsgICk7DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIGluY3JlbWVudHMgdGhlIEFDUEkg dGFibGUgd2FybmluZyBjb3VudGVyLg0KPiArKi8NCj4gK1ZPSUQNCj4gK0luY3JlbWVudFdhcm5p bmdDb3VudCAoDQo+ICsgIFZPSUQNCj4gKyAgKTsNCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24g cmV0dXJucyB0aGUgQUNQSSB0YWJsZSB3YXJuaW5nIGNvdW50Lg0KPiArDQo+ICsgIEByZXR2YWwg UmV0dXJucyB0aGUgY291bnQgb2Ygd2FybmluZyBkZXRlY3RlZCBpbiB0aGUgQUNQSSB0YWJsZXMu DQo+ICsqLw0KPiArVUlOVDMyDQo+ICtHZXRXYXJuaW5nQ291bnQgKA0KPiArICBWT0lEDQo+ICsg ICk7DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIGNvbG91ciBoaWdobGln aHRpbmcgc3RhdHVzLg0KPiArDQo+ICsgIEByZXR2YWwgVFJVRSBpZiBjb2xvdXIgaGlnaGxpZ2h0 aW5nIGlzIGVuYWJsZWQuDQo+ICsqLw0KPiArQk9PTEVBTg0KPiArR2V0Q29sb3VySGlnaGxpZ2h0 aW5nICgNCj4gKyAgVk9JRA0KPiArICApOw0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBwcm9j ZXNzZXMgdGhlIHRhYmxlIHJlcG9ydGluZyBvcHRpb25zIGZvciB0aGUgQUNQSSB0YWJsZS4NCj4g Kw0KPiArICBAcGFyYW0gW2luXSBTaWduYXR1cmUgVGhlIEFDUEkgdGFibGUgU2lnbmF0dXJlLg0K PiArICBAcGFyYW0gW2luXSBUYWJsZVB0ciAgUG9pbnRlciB0byB0aGUgQUNQSSB0YWJsZSBkYXRh Lg0KPiArICBAcGFyYW0gW2luXSBMZW5ndGggICAgVGhlIGxlbmd0aCBmbyB0aGUgQUNQSSB0YWJs ZS4NCj4gKw0KPiArICBAcmV0dmFsIFJldHVybnMgVFJVRSBpZiB0aGUgQUNQSSB0YWJsZSBzaG91 bGQgYmUgdHJhY2VkLg0KPiArKi8NCj4gK0JPT0xFQU4NCj4gK1Byb2Nlc3NUYWJsZVJlcG9ydE9w dGlvbnMgKA0KPiArICBJTiBDT05TVCBVSU5UMzIgIFNpZ25hdHVyZSwNCj4gKyAgSU4gQ09OU1Qg VUlOVDgqICBUYWJsZVB0ciwNCj4gKyAgSU4gQ09OU1QgVUlOVDMyICBMZW5ndGgNCj4gKyAgKTsN Cj4gKw0KPiArI2VuZGlmIC8vIEFDUElWSUVXX0hfDQo+IGRpZmYgLS1naXQNCj4gYS9TaGVsbFBr Zy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9VZWZpU2hlbGxBY3BpVmlld0Nv bW0NCj4gYW5kTGliLmgNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29t bWFuZExpYi9VZWZpU2hlbGxBY3BpVmlld0NvbW0NCj4gYW5kTGliLmgNCj4gbmV3IGZpbGUgbW9k ZSAxMDA2NDQNCj4gaW5kZXgNCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMC4uNTljOGUyMTU0NGQ2ODI5YWM4NzI5NThmNmINCj4gODQzNThlMWY5MWIwMmYNCj4gLS0t IC9kZXYvbnVsbA0KPiArKysNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3 Q29tbWFuZExpYi9VZWZpU2hlbGxBY3BpVmlld0NvbW0NCj4gYW5kTGliLmgNCj4gQEAgLTAsMCAr MSwzMiBAQA0KPiArLyoqDQo+ICsgIEhlYWRlciBmaWxlIGZvciAnYWNwaXZpZXcnIFNoZWxsIGNv bW1hbmQgZnVuY3Rpb25zLg0KPiArDQo+ICsgIENvcHlyaWdodCAoYykgMjAxNiAtIDIwMTcsIEFS TSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gKyAgVGhpcyBwcm9ncmFtIGFu ZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiArICBhcmUgbGljZW5zZWQgYW5kIG1hZGUg YXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEDQo+IExp Y2Vuc2UNCj4gKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVs bCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZQ0KPiBmb3VuZCBhdA0KPiArICBodHRwOi8vb3Bl bnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ICsNCj4gKyAgVEhFIFBST0dS QU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyINCj4g QkFTSVMsDQo+ICsgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5Z IEtJTkQsIEVJVEhFUg0KPiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ICsqKi8NCj4gKw0KPiArI2lm bmRlZiBVRUZJX1NIRUxMX0FDUElWSUVXX0NPTU1BTkRfTElCX0hfDQo+ICsjZGVmaW5lIFVFRklf U0hFTExfQUNQSVZJRVdfQ09NTUFORF9MSUJfSF8NCj4gKw0KPiArZXh0ZXJuIEVGSV9ISUlfSEFO RExFIGdTaGVsbEFjcGlWaWV3SGlpSGFuZGxlOw0KPiArDQo+ICsvKioNCj4gKyAgRnVuY3Rpb24g Zm9yICdhY3BpdmlldycgY29tbWFuZC4NCj4gKw0KPiArICBAcGFyYW1baW5dIEltYWdlSGFuZGxl ICBIYW5kbGUgdG8gdGhlIEltYWdlIChOVUxMIGlmIEludGVybmFsKS4NCj4gKyAgQHBhcmFtW2lu XSBTeXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxlIChOVUxMIGlmIEludGVy bmFsKS4NCj4gKyovDQo+ICtTSEVMTF9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArU2hlbGxDb21tYW5k UnVuQWNwaVZpZXcgKA0KPiArICBJTiBFRklfSEFORExFICAgICAgICBJbWFnZUhhbmRsZSwNCj4g KyAgSU4gRUZJX1NZU1RFTV9UQUJMRSAgKlN5c3RlbVRhYmxlDQo+ICsgICk7DQo+ICsNCj4gKyNl bmRpZiAvLyBVRUZJX1NIRUxMX0FDUElWSUVXX0NPTU1BTkRfTElCX0hfDQo+IGRpZmYgLS1naXQg YS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9BY3BpUGFyc2Vy LmMNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9BY3Bp UGFyc2VyLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXgNCj4gMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDMxNmUwNDRkYWU3ZmZkNTljNWFhMzM1MWEN Cj4gNTQyYzY0NWU3YTRmNzMNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9TaGVsbFBrZy9MaWJy YXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9BY3BpUGFyc2VyLmMNCj4gQEAgLTAsMCAr MSw2MTQgQEANCj4gKy8qKg0KPiArICBBQ1BJIHBhcnNlcg0KPiArDQo+ICsgIENvcHlyaWdodCAo YykgMjAxNiAtIDIwMTcsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArICBU aGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICsgIGFyZSBsaWNl bnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9m IHRoZSBCU0QNCj4gTGljZW5zZQ0KPiArICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1 dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlDQo+IGZvdW5kIGF0DQo+ ICsgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gKw0K PiArICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04g QU4gIkFTIElTIg0KPiBCQVNJUywNCj4gKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VO VEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gKyoq Lw0KPiArDQo+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpTGliLmg+DQo+ICsjaW5jbHVkZSA8TGli cmFyeS9VZWZpQm9vdFNlcnZpY2VzVGFibGVMaWIuaD4NCj4gKyNpbmNsdWRlICJBY3BpUGFyc2Vy LmgiDQo+ICsjaW5jbHVkZSAiQWNwaVZpZXcuaCINCj4gKw0KPiArU1RBVElDIFVJTlQzMiBnSW5k ZW50ID0gMDsNCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcHJpbnRzIGEgR1VJRCB0byBTVERP VVQuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gR3VpZCAgICBQb2ludGVyIHRvIGEgR1VJRCB0byBw cmludC4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgIFRoZSBHVUlE IHdhcyBwcmludGVkLg0KPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgIFRoZSBp bnB1dCB3YXMgTlVMTC4NCj4gKyovDQo+ICtFRklfU1RBVFVTDQo+ICtQcmludEd1aWQgKA0KPiAr ICBJTiBFRklfR1VJRCogR3VpZA0KPiArICApDQo+ICt7DQo+ICsgIGlmIChHdWlkID09IE5VTEwp IHsNCj4gKyAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiArICB9DQo+ICsNCj4g KyAgUHJpbnQgKA0KPiArICAgIEwiJTA4WC0lMDRYLSUwNFgtJTAyWCUwMlgtJTAyWCUwMlglMDJY JTAyWCUwMlglMDJYXG4iLA0KPiArICAgIEd1aWQtPkRhdGExLA0KPiArICAgIEd1aWQtPkRhdGEy LA0KPiArICAgIEd1aWQtPkRhdGEzLA0KPiArICAgIEd1aWQtPkRhdGE0WzBdLA0KPiArICAgIEd1 aWQtPkRhdGE0WzFdLA0KPiArICAgIEd1aWQtPkRhdGE0WzJdLA0KPiArICAgIEd1aWQtPkRhdGE0 WzNdLA0KPiArICAgIEd1aWQtPkRhdGE0WzRdLA0KPiArICAgIEd1aWQtPkRhdGE0WzVdLA0KPiAr ICAgIEd1aWQtPkRhdGE0WzZdLA0KPiArICAgIEd1aWQtPkRhdGE0WzddDQo+ICsgICAgKTsNCj4g KyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiB2 ZXJpZmllcyB0aGUgQUNQSSB0YWJsZSBjaGVja3N1bS4NCj4gKw0KPiArICBUaGlzIGZ1bmN0aW9u IHZlcmlmaWVzIHRoZSBjaGVja3N1bSBmb3IgdGhlIEFDUEkgdGFibGUgYW5kIG9wdGlvbmFsbHkN Cj4gKyAgcHJpbnRzIHRoZSBzdGF0dXMuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gTG9nICAgICBJ ZiBUUlVFIGxvZyB0aGUgc3RhdHVzIG9mIHRoZSBjaGVja3N1bS4NCj4gKyAgQHBhcmFtIFtpbl0g UHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgdGFibGUgYnVmZmVyLg0KPiArICBA cGFyYW0gW2luXSBMZW5ndGggIFRoZSBsZW5ndGggb2YgdGhlIGJ1ZmZlci4NCj4gKw0KPiArICBA cmV0dmFsIFRSVUUgICAgICAgIFRoZSBjaGVja3N1bSBpcyBPSy4NCj4gKyAgQHJldHZhbCBGQUxT RSAgICAgICBUaGUgY2hlY2tzdW0gZmFpbGVkLg0KPiArKi8NCj4gK0JPT0xFQU4NCj4gK1Zlcmlm eUNoZWNrc3VtICgNCj4gKyAgSU4gQk9PTEVBTiBMb2csDQo+ICsgIElOIFVJTlQ4KiAgUHRyLA0K PiArICBJTiBVSU5UMzIgIExlbmd0aA0KPiArICApDQo+ICt7DQo+ICsgIFVJTlROIEJ5dGVDb3Vu dDsNCj4gKyAgVUlOVDggQ2hlY2tzdW07DQo+ICsgIFVJTlROIE9yaWdpbmFsQXR0cmlidXRlOw0K PiArDQo+ICsgIEJ5dGVDb3VudCA9IDA7DQo+ICsgIENoZWNrc3VtID0gMDsNCj4gKw0KPiArICB3 aGlsZSAoQnl0ZUNvdW50IDwgTGVuZ3RoKSB7DQo+ICsgICAgQ2hlY2tzdW0gKz0gKihQdHIrKyk7 DQo+ICsgICAgQnl0ZUNvdW50Kys7DQo+ICsgIH0NCj4gKw0KPiArICBpZiAoTG9nKSB7DQo+ICsg ICAgT3JpZ2luYWxBdHRyaWJ1dGUgPSBnU1QtPkNvbk91dC0+TW9kZS0+QXR0cmlidXRlOw0KPiAr ICAgIGlmIChDaGVja3N1bSA9PSAwKSB7DQo+ICsgICAgICBpZiAoR2V0Q29sb3VySGlnaGxpZ2h0 aW5nICgpKSB7DQo+ICsgICAgICAgIGdTVC0+Q29uT3V0LT5TZXRBdHRyaWJ1dGUgKA0KPiArICAg ICAgICAgICAgICAgICAgICAgICBnU1QtPkNvbk91dCwNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgRUZJX1RFWFRfQVRUUiAoRUZJX0dSRUVOLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICgoT3JpZ2luYWxBdHRyaWJ1dGUmKEJJVDR8QklUNXxCSVQ2KSk+PjQpKQ0KPiArICAgICAgICAg ICAgICAgICAgICAgICApOw0KPiArICAgICAgfQ0KPiArICAgICAgUHJpbnQgKEwiXG5cblRhYmxl IENoZWNrc3VtIDogT0tcblxuIik7DQo+ICsgICAgfSBlbHNlIHsNCj4gKyAgICAgIEluY3JlbWVu dEVycm9yQ291bnQgKCk7DQo+ICsgICAgICBpZiAoR2V0Q29sb3VySGlnaGxpZ2h0aW5nICgpKSB7 DQo+ICsgICAgICAgIGdTVC0+Q29uT3V0LT5TZXRBdHRyaWJ1dGUgKA0KPiArICAgICAgICAgICAg ICAgICAgICAgICBnU1QtPkNvbk91dCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgRUZJX1RF WFRfQVRUUiAoRUZJX1JFRCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAoKE9yaWdpbmFs QXR0cmlidXRlJihCSVQ0fEJJVDV8QklUNikpPj40KSkNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgKTsNCj4gKyAgICAgIH0NCj4gKyAgICAgIFByaW50IChMIlxuXG5UYWJsZSBDaGVja3N1bSA6 IEZBSUxFRCAoMHglWClcblxuIiwgQ2hlY2tzdW0pOw0KPiArICAgIH0NCj4gKyAgICBpZiAoR2V0 Q29sb3VySGlnaGxpZ2h0aW5nICgpKSB7DQo+ICsgICAgICBnU1QtPkNvbk91dC0+U2V0QXR0cmli dXRlIChnU1QtPkNvbk91dCwgT3JpZ2luYWxBdHRyaWJ1dGUpOw0KPiArICAgIH0NCj4gKyAgfQ0K PiArDQo+ICsgIHJldHVybiAoQ2hlY2tzdW0gPT0gMCk7DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlz IGZ1bmN0aW9uIHBlcmZvcm1zIGEgcmF3IGRhdGEgZHVtcCBvZiB0aGUgQUNQSSB0YWJsZS4NCj4g Kw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSB0 YWJsZSBidWZmZXIuDQo+ICsgIEBwYXJhbSBbaW5dIExlbmd0aCAgVGhlIGxlbmd0aCBvZiB0aGUg YnVmZmVyLg0KPiArKi8NCj4gK1ZPSUQNCj4gK0R1bXBSYXcgKA0KPiArICBJTiBVSU5UOCogUHRy LA0KPiArICBJTiBVSU5UMzIgTGVuZ3RoDQo+ICsgICkNCj4gK3sNCj4gKyAgVUlOVE4gQnl0ZUNv dW50ID0gMDsNCj4gKyAgVUlOVE4gUGFydExpbmVDaGFyczsNCj4gKyAgVUlOVE4gQXNjaWlCdWZm ZXJJbmRleCA9IDA7DQo+ICsgIENIQVI4IEFzY2lpQnVmZmVyWzE3XTsNCj4gKw0KPiArICBQcmlu dCAoTCJBZGRyZXNzICA6IDB4JXBcbiIsIFB0cik7DQo+ICsgIFByaW50IChMIkxlbmd0aCAgIDog JWRcbiIsIExlbmd0aCk7DQo+ICsNCj4gKyAgd2hpbGUgKEJ5dGVDb3VudCA8IExlbmd0aCkgew0K PiArICAgIGlmICgoQnl0ZUNvdW50ICYgMHgwRikgPT0gMCkgew0KPiArICAgICAgQXNjaWlCdWZm ZXJbQXNjaWlCdWZmZXJJbmRleF0gPSAnXDAnOw0KPiArICAgICAgUHJpbnQgKEwiICAlYVxuJTA4 WCA6ICIsIEFzY2lpQnVmZmVyLCBCeXRlQ291bnQpOw0KPiArICAgICAgQXNjaWlCdWZmZXJJbmRl eCA9IDA7DQo+ICsgICAgfSBlbHNlIGlmICgoQnl0ZUNvdW50ICYgMHgwNykgPT0gMCkgew0KPiAr ICAgICAgUHJpbnQgKEwiLSAiKTsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICBpZiAoKCpQdHIgPj0g JyAnKSAmJiAoKlB0ciA8IDB4N0YpKSB7DQo+ICsgICAgICBBc2NpaUJ1ZmZlcltBc2NpaUJ1ZmZl ckluZGV4KytdID0gKlB0cjsNCj4gKyAgICB9IGVsc2Ugew0KPiArICAgICAgQXNjaWlCdWZmZXJb QXNjaWlCdWZmZXJJbmRleCsrXSA9ICcuJzsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICBQcmludCAo TCIlMDJYICIsICpQdHIrKyk7DQo+ICsNCj4gKyAgICBCeXRlQ291bnQrKzsNCj4gKyAgfQ0KPiAr DQo+ICsgIC8vIEp1c3RpZnkgdGhlIGZpbmFsIGxpbmUgdXNpbmcgc3BhY2VzIGJlZm9yZSBwcmlu dGluZw0KPiArICAvLyB0aGUgQVNDSUkgZGF0YS4NCj4gKyAgUGFydExpbmVDaGFycyA9IChMZW5n dGggJiAweDBGKTsNCj4gKyAgaWYgKFBhcnRMaW5lQ2hhcnMgIT0gMCkgew0KPiArICAgIFBhcnRM aW5lQ2hhcnMgPSA0OCAtIChQYXJ0TGluZUNoYXJzICogMyk7DQo+ICsgICAgaWYgKChMZW5ndGgg JiAweDBGKSA8PSA4KSB7DQo+ICsgICAgICBQYXJ0TGluZUNoYXJzICs9IDI7DQo+ICsgICAgfQ0K PiArICAgIHdoaWxlIChQYXJ0TGluZUNoYXJzID4gMCkgew0KPiArICAgICAgUHJpbnQgKEwiICIp Ow0KPiArICAgICAgUGFydExpbmVDaGFycy0tOw0KPiArICAgIH0NCj4gKyAgfQ0KPiArDQo+ICsg IC8vIFByaW50IEFTQ0lJIGRhdGEgZm9yIHRoZSBmaW5hbCBsaW5lLg0KPiArICBBc2NpaUJ1ZmZl cltBc2NpaUJ1ZmZlckluZGV4XSA9ICdcMCc7DQo+ICsgIFByaW50IChMIiAgJWEiLCBBc2NpaUJ1 ZmZlcik7DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHRyYWNlcyAxIGJ5dGUgb2Yg ZGF0dW0gYXMgc3BlY2lmaWVkIGluIHRoZQ0KPiArICAgIGZvcm1hdCBzdHJpbmcuDQo+ICsNCj4g KyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBUaGUgZm9ybWF0IHN0cmluZyBmb3IgdHJhY2luZyB0aGUg ZGF0YS4NCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0 aGUgYnVmZmVyLg0KPiArKi8NCj4gK1ZPSUQNCj4gK0R1bXBVaW50OCAoDQo+ICsgIElOIENPTlNU IENIQVIxNiogRm9ybWF0LA0KPiArICBJTiBVSU5UOCogICAgICAgIFB0cg0KPiArICApDQo+ICt7 DQo+ICsgIFByaW50IChGb3JtYXQsICpQdHIpOw0KPiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5j dGlvbiB0cmFjZXMgMiBieXRlcyBvZiBkYXRhIGFzIHNwZWNpZmllZCBpbiB0aGUNCj4gKyAgICBm b3JtYXQgc3RyaW5nLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIEZvcm1hdCAgVGhlIGZvcm1hdCBz dHJpbmcgZm9yIHRyYWNpbmcgdGhlIGRhdGEuDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9p bnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gKyovDQo+ICtWT0lEDQo+ICtEdW1w VWludDE2ICgNCj4gKyAgSU4gQ09OU1QgQ0hBUjE2KiBGb3JtYXQsDQo+ICsgIElOIFVJTlQ4KiAg ICAgICAgUHRyDQo+ICsgICkNCj4gK3sNCj4gKyAgUHJpbnQgKEZvcm1hdCwgKihVSU5UMTYqKVB0 cik7DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHRyYWNlcyA0IGJ5dGVzIG9mIGRh dGEgYXMgc3BlY2lmaWVkIGluIHRoZQ0KPiArICAgIGZvcm1hdCBzdHJpbmcuDQo+ICsNCj4gKyAg QHBhcmFtIFtpbl0gRm9ybWF0ICBUaGUgZm9ybWF0IHN0cmluZyBmb3IgdHJhY2luZyB0aGUgZGF0 YS4NCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUg YnVmZmVyLg0KPiArKi8NCj4gK1ZPSUQNCj4gK0R1bXBVaW50MzIgKA0KPiArICBJTiBDT05TVCBD SEFSMTYqIEZvcm1hdCwNCj4gKyAgSU4gVUlOVDgqICAgICAgICBQdHINCj4gKyAgKQ0KPiArew0K PiArICBQcmludCAoRm9ybWF0LCAqKFVJTlQzMiopUHRyKTsNCj4gK30NCj4gKw0KPiArLyoqIFRo aXMgZnVuY3Rpb24gdHJhY2VzIDggYnl0ZXMgb2YgZGF0YSBhcyBzcGVjaWZpZWQgYnkgdGhlDQo+ ICsgICAgZm9ybWF0IHN0cmluZy4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBGb3JtYXQgIFRoZSBm b3JtYXQgc3RyaW5nIGZvciB0cmFjaW5nIHRoZSBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBQdHIg ICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsqLw0KPiArVk9JRA0K PiArRHVtcFVpbnQ2NCAoDQo+ICsgIElOIENPTlNUIENIQVIxNiogRm9ybWF0LA0KPiArICBJTiBV SU5UOCogICAgICAgIFB0cg0KPiArICApDQo+ICt7DQo+ICsgIFVJTlQ2NCBWYWw7DQo+ICsgIC8v IFNvbWUgZmllbGRzIGFyZSBub3QgYWxpZ25lZCBhbmQgdGhpcyBjYXVzZXMgYWxpZ25tZW50IGZh dWx0cw0KPiArICAvLyBvbiBBUk0gcGxhdGZvcm1zIGlmIHRoZSBjb21waWxlciBnZW5lcmF0ZXMg TERSRCBpbnN0cnVjdGlvbnMuDQo+ICsgIC8vIFBlcmZvcm0gd29yZCBhY2Nlc3Mgc28gdGhhdCBM RFJEIGluc3RydWN0aW9ucyBhcmUgbm90IGdlbmVyYXRlZC4NCj4gKyAgVmFsID0gKihVSU5UMzIq KShQdHIgKyBzaXplb2YgKFVJTlQzMikpOw0KPiArICBWYWwgPDw9IDMyOw0KPiArICBWYWwgfD0g KihVSU5UMzIqKVB0cjsNCj4gKw0KPiArICBQcmludCAoRm9ybWF0LCBWYWwpOw0KPiArfQ0KPiAr DQo+ICsvKiogVGhpcyBmdW5jdGlvbiB0cmFjZXMgMyBjaGFyYWN0ZXJzIHdoaWNoIGNhbiBiZSBv cHRpb25hbGx5DQo+ICsgICBmb3JtYXRlZCB1c2luZyB0aGUgZm9ybWF0IHN0cmluZyBpZiBzcGVj aWZpZWQuDQo+ICsNCj4gKyAgSWYgbm8gZm9ybWF0IHN0cmluZyBpcyBzcGVjaWZpZWQgdGhlIEZv cm1hdCBtdXN0IGJlIE5VTEwuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBPcHRpb25h bCBmb3JtYXQgc3RyaW5nIGZvciB0cmFjaW5nIHRoZSBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBQ dHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsqLw0KPiArVk9J RA0KPiArRHVtcDNDaGFycyAoDQo+ICsgIElOIENPTlNUIENIQVIxNiogRm9ybWF0IE9QVElPTkFM LA0KPiArICBJTiBVSU5UOCogICAgICAgIFB0cg0KPiArICApDQo+ICt7DQo+ICsgIFByaW50ICgN Cj4gKyAgICAoRm9ybWF0ICE9IE5VTEwpID8gRm9ybWF0IDogTCIlYyVjJWMiLA0KPiArICAgIFB0 clswXSwNCj4gKyAgICBQdHJbMV0sDQo+ICsgICAgUHRyWzJdDQo+ICsgICAgKTsNCj4gK30NCj4g Kw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gdHJhY2VzIDQgY2hhcmFjdGVycyB3aGljaCBjYW4gYmUg b3B0aW9uYWxseQ0KPiArICAgZm9ybWF0ZWQgdXNpbmcgdGhlIGZvcm1hdCBzdHJpbmcgaWYgc3Bl Y2lmaWVkLg0KPiArDQo+ICsgIElmIG5vIGZvcm1hdCBzdHJpbmcgaXMgc3BlY2lmaWVkIHRoZSBG b3JtYXQgbXVzdCBiZSBOVUxMLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIEZvcm1hdCAgT3B0aW9u YWwgZm9ybWF0IHN0cmluZyBmb3IgdHJhY2luZyB0aGUgZGF0YS4NCj4gKyAgQHBhcmFtIFtpbl0g UHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArKi8NCj4gK1ZP SUQNCj4gK0R1bXA0Q2hhcnMgKA0KPiArICBJTiBDT05TVCBDSEFSMTYqIEZvcm1hdCBPUFRJT05B TCwNCj4gKyAgSU4gVUlOVDgqICAgICAgICBQdHINCj4gKyAgKQ0KPiArew0KPiArICBQcmludCAo DQo+ICsgICAgKEZvcm1hdCAhPSBOVUxMKSA/IEZvcm1hdCA6IEwiJWMlYyVjJWMiLA0KPiArICAg IFB0clswXSwNCj4gKyAgICBQdHJbMV0sDQo+ICsgICAgUHRyWzJdLA0KPiArICAgIFB0clszXQ0K PiArICAgICk7DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHRyYWNlcyA2IGNoYXJh Y3RlcnMgd2hpY2ggY2FuIGJlIG9wdGlvbmFsbHkNCj4gKyAgIGZvcm1hdGVkIHVzaW5nIHRoZSBm b3JtYXQgc3RyaW5nIGlmIHNwZWNpZmllZC4NCj4gKw0KPiArICBJZiBubyBmb3JtYXQgc3RyaW5n IGlzIHNwZWNpZmllZCB0aGUgRm9ybWF0IG11c3QgYmUgTlVMTC4NCj4gKw0KPiArICBAcGFyYW0g W2luXSBGb3JtYXQgIE9wdGlvbmFsIGZvcm1hdCBzdHJpbmcgZm9yIHRyYWNpbmcgdGhlIGRhdGEu DQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1 ZmZlci4NCj4gKyovDQo+ICtWT0lEDQo+ICtEdW1wNkNoYXJzICgNCj4gKyAgSU4gQ09OU1QgQ0hB UjE2KiBGb3JtYXQgT1BUSU9OQUwsDQo+ICsgIElOIFVJTlQ4KiAgICAgICAgUHRyDQo+ICsgICkN Cj4gK3sNCj4gKyAgUHJpbnQgKA0KPiArICAgIChGb3JtYXQgIT0gTlVMTCkgPyBGb3JtYXQgOiBM IiVjJWMlYyVjJWMlYyIsDQo+ICsgICAgUHRyWzBdLA0KPiArICAgIFB0clsxXSwNCj4gKyAgICBQ dHJbMl0sDQo+ICsgICAgUHRyWzNdLA0KPiArICAgIFB0cls0XSwNCj4gKyAgICBQdHJbNV0NCj4g KyAgICApOw0KPiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiB0cmFjZXMgOCBjaGFyYWN0 ZXJzIHdoaWNoIGNhbiBiZSBvcHRpb25hbGx5DQo+ICsgICBmb3JtYXRlZCB1c2luZyB0aGUgZm9y bWF0IHN0cmluZyBpZiBzcGVjaWZpZWQuDQo+ICsNCj4gKyAgSWYgbm8gZm9ybWF0IHN0cmluZyBp cyBzcGVjaWZpZWQgdGhlIEZvcm1hdCBtdXN0IGJlIE5VTEwuDQo+ICsNCj4gKyAgQHBhcmFtIFtp bl0gRm9ybWF0ICBPcHRpb25hbCBmb3JtYXQgc3RyaW5nIGZvciB0cmFjaW5nIHRoZSBkYXRhLg0K PiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZm ZXIuDQo+ICsqLw0KPiArVk9JRA0KPiArRHVtcDhDaGFycyAoDQo+ICsgIElOIENPTlNUIENIQVIx NiogRm9ybWF0IE9QVElPTkFMLA0KPiArICBJTiBVSU5UOCogICAgICAgIFB0cg0KPiArICApDQo+ ICt7DQo+ICsgIFByaW50ICgNCj4gKyAgICAoRm9ybWF0ICE9IE5VTEwpID8gRm9ybWF0IDogTCIl YyVjJWMlYyVjJWMlYyVjIiwNCj4gKyAgICBQdHJbMF0sDQo+ICsgICAgUHRyWzFdLA0KPiArICAg IFB0clsyXSwNCj4gKyAgICBQdHJbM10sDQo+ICsgICAgUHRyWzRdLA0KPiArICAgIFB0cls1XSwN Cj4gKyAgICBQdHJbNl0sDQo+ICsgICAgUHRyWzddDQo+ICsgICAgKTsNCj4gK30NCj4gKw0KPiAr LyoqIFRoaXMgZnVuY3Rpb24gaW5kZW50cyBhbmQgcHJpbnRzIHRoZSBBQ1BJIHRhYmxlIEZpZWxk IE5hbWUuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gSW5kZW50ICAgICAgTnVtYmVyIG9mIHNwYWNl cyB0byBhZGQgdG8gdGhlIGdsb2JhbCB0YWJsZSBpbmRlbnQuDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgIFRoZSBnbG9iYWwgdGFibGUgaW5kZW50IGlzIDAgYnkgZGVmYXV0bDsgaG93ZXZl cg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzIHZhbHVlIGlzIHVwZGF0ZWQgb24g ZW50cnkgdG8gdGhlIFBhcnNlQWNwaSgpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5 IGFkZGluZyB0aGUgaW5kZW50IHZhbHVlIHByb3ZpZGVkIHRvIFBhcnNlQWNwaSgpDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgIGFuZCByZXN0b3JlZCBiYWNrIG9uIGV4aXQuDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgIFRoZXJlZm9yZSB0aGUgdG90YWwgaW5kZW50IGluIHRoZSBv dXRwdXQgaXMNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW50IG9uIGZyb20g d2hlcmUgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQuDQo+ICsgIEBwYXJhbSBbaW5dIEZpZWxkTmFt ZSAgIFBvaW50ZXIgdG8gdGhlIEZpZWxkIE5hbWUuDQo+ICsqLw0KPiArVk9JRA0KPiArUHJpbnRG aWVsZE5hbWUgKA0KPiArICBJTiBVSU5UMzIgICAgICAgICBJbmRlbnQsDQo+ICsgIElOIENPTlNU IENIQVIxNiogIEZpZWxkTmFtZQ0KPiArKQ0KPiArew0KPiArICBQcmludCAoDQo+ICsgICAgTCIl KmElLSpzIDogIiwNCj4gKyAgICBnSW5kZW50ICsgSW5kZW50LA0KPiArICAgICIiLA0KPiArICAg IChPVVRQVVRfRklFTERfQ09MVU1OX1dJRFRIIC0gZ0luZGVudCAtIEluZGVudCksDQo+ICsgICAg RmllbGROYW1lDQo+ICsgICAgKTsNCj4gK30NCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gaXMg dXNlZCB0byBwYXJzZSBhbiBBQ1BJIHRhYmxlIGJ1ZmZlci4NCj4gKw0KPiArICBUaGUgQUNQSSB0 YWJsZSBidWZmZXIgaXMgcGFyc2VkIHVzaW5nIHRoZSBBQ1BJIHRhYmxlIHBhcnNlciBpbmZvcm1h dGlvbg0KPiArICBzcGVjaWZpZWQgYnkgYSBwb2ludGVyIHRvIGFuIGFycmF5IG9mIEFDUElfUEFS U0VSIGVsZW1lbnRzLiBUaGlzIHBhcnNlcg0KPiArICBmdW5jdGlvbiBpdGVyYXRlcyB0aHJvdWdo IGVhY2ggaXRlbSBvbiB0aGUgQUNQSV9QQVJTRVIgYXJyYXkgYW5kIGxvZ3MNCj4gdGhlDQo+ICsg IEFDUEkgdGFibGUgZmllbGRzLg0KPiArDQo+ICsgIFRoaXMgZnVuY3Rpb24gY2FuIG9wdGlvbmFs bHkgYmUgdXNlZCB0byBwYXJzZSBBQ1BJIHRhYmxlcyBhbmQgZmV0Y2ggc3BlY2lmaWMNCj4gKyAg ZmllbGQgdmFsdWVzLiBUaGUgSXRlbVB0ciBtZW1iZXIgb2YgdGhlIEFDUElfUEFSU0VSIHN0cnVj dHVyZSAod2hlcmUNCj4gdXNlZCkNCj4gKyAgaXMgdXBkYXRlZCBieSB0aGlzIHBhcnNlciBmdW5j dGlvbiB0byBwb2ludCB0byB0aGUgc2VsZWN0ZWQgZmllbGQgZGF0YQ0KPiArICAoZS5nLiB1c2Vm dWwgZm9yIHZhcmlhYmxlIGxlbmd0aCBuZXN0ZWQgZmllbGRzKS4NCj4gKw0KPiArICBAcGFyYW0g W2luXSBUcmFjZSAgICAgICAgVHJhY2UgdGhlIEFDUEkgZmllbGRzIFRSVUUgZWxzZSBvbmx5IHBh cnNlIHRoZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGUuDQo+ICsgIEBwYXJh bSBbaW5dIEluZGVudCAgICAgICBOdW1iZXIgb2Ygc3BhY2VzIHRvIGluZGVudCB0aGUgb3V0cHV0 Lg0KPiArICBAcGFyYW0gW2luXSBBc2NpaU5hbWUgICAgT3B0aW9uYWwgcG9pbnRlciB0byBhbiBB U0NJSSBzdHJpbmcgdGhhdCBkZXNjcmliZXMNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg IHRoZSB0YWJsZSBiZWluZyBwYXJzZWQuDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICBQ b2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArICBAcGFyYW0gW2luXSBMZW5n dGggICAgICAgTGVuZ3RoIG9mIHRoZSBidWZmZXIgcG9pbnRlZCBieSBQdHIuDQo+ICsgIEBwYXJh bSBbaW5dIFBhcnNlciAgICAgICBQb2ludGVyIHRvIGFuIGFycmF5IG9mIEFDUElfUEFSU0VSIHN0 cnVjdHVyZSB0aGF0DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmliZXMgdGhl IHRhYmxlIGJlaW5nIHBhcnNlZC4NCj4gKyAgQHBhcmFtIFtpbl0gUGFyc2VySXRlbXMgIE51bWJl ciBvZiBpdGVtcyBpbiB0aGUgQUNQSV9QQVJTRVIgYXJyYXkuDQo+ICsNCj4gKyAgQHJldHZhbCBO dW1iZXIgb2YgYnl0ZXMgcGFyc2VkLg0KPiArKi8NCj4gK1VJTlQzMg0KPiArUGFyc2VBY3BpICgN Cj4gKyAgSU4gQk9PTEVBTiAgICAgICAgICAgIFRyYWNlLA0KPiArICBJTiBVSU5UMzIgICAgICAg ICAgICAgSW5kZW50LA0KPiArICBJTiBDT05TVCBDSEFSOCogICAgICAgQXNjaWlOYW1lIE9QVElP TkFMLA0KPiArICBJTiBVSU5UOCogICAgICAgICAgICAgUHRyLA0KPiArICBJTiBVSU5UMzIgICAg ICAgICAgICAgTGVuZ3RoLA0KPiArICBJTiBDT05TVCBBQ1BJX1BBUlNFUiogUGFyc2VyLA0KPiAr ICBJTiBVSU5UMzIgICAgICAgICAgICAgUGFyc2VySXRlbXMNCj4gKykNCj4gK3sNCj4gKyAgVUlO VDMyICBJbmRleDsNCj4gKyAgVUlOVDMyICBPZmZzZXQgPSAwOw0KPiArDQo+ICsgIC8vIEluY3Jl bWVudCB0aGUgSW5kZW50DQo+ICsgIGdJbmRlbnQgKz0gSW5kZW50Ow0KPiArDQo+ICsgIGlmICgo VHJhY2UpICYmIChBc2NpaU5hbWUgIT0gTlVMTCkpew0KPiArICAgIEJPT0xFQU4gSGlnaExpZ2h0 ID0gR2V0Q29sb3VySGlnaGxpZ2h0aW5nICgpOw0KPiArICAgIFVJTlROICAgT3JpZ2luYWxBdHRy aWJ1dGU7DQo+ICsNCj4gKyAgICBpZiAoSGlnaExpZ2h0KSB7DQo+ICsgICAgICBPcmlnaW5hbEF0 dHJpYnV0ZSA9IGdTVC0+Q29uT3V0LT5Nb2RlLT5BdHRyaWJ1dGU7DQo+ICsgICAgICBnU1QtPkNv bk91dC0+U2V0QXR0cmlidXRlICgNCj4gKyAgICAgICAgICAgICAgICAgICAgIGdTVC0+Q29uT3V0 LA0KPiArICAgICAgICAgICAgICAgICAgICAgRUZJX1RFWFRfQVRUUihFRklfWUVMTE9XLA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAoKE9yaWdpbmFsQXR0cmlidXRlJihCSVQ0fEJJVDV8QklU NikpPj40KSkNCj4gKyAgICAgICAgICAgICAgICAgICAgICk7DQo+ICsgICAgfQ0KPiArICAgIFBy aW50ICgNCj4gKyAgICAgIEwiJSphJS0qYSA6XG4iLA0KPiArICAgICAgZ0luZGVudCwNCj4gKyAg ICAgICIiLA0KPiArICAgICAgKE9VVFBVVF9GSUVMRF9DT0xVTU5fV0lEVEggLSBnSW5kZW50KSwN Cj4gKyAgICAgIEFzY2lpTmFtZQ0KPiArICAgICAgKTsNCj4gKyAgICBpZiAoSGlnaExpZ2h0KSB7 DQo+ICsgICAgICBnU1QtPkNvbk91dC0+U2V0QXR0cmlidXRlIChnU1QtPkNvbk91dCwgT3JpZ2lu YWxBdHRyaWJ1dGUpOw0KPiArICAgIH0NCj4gKyAgfQ0KPiArDQo+ICsgIGZvciAoSW5kZXggPSAw OyBJbmRleCA8IFBhcnNlckl0ZW1zOyBJbmRleCsrKSB7DQo+ICsgICAgaWYgKChPZmZzZXQgKyBQ YXJzZXJbSW5kZXhdLkxlbmd0aCkgPiBMZW5ndGgpIHsNCj4gKyAgICAgIC8vIFdlIGRvbid0IHBh cnNlIHBhc3QgdGhlIGVuZCBvZiB0aGUgbWF4IGxlbmd0aCBzcGVjaWZpZWQNCj4gKyAgICAgIGJy ZWFrOw0KPiArICAgIH0NCj4gKw0KPiArICAgIGlmIChPZmZzZXQgIT0gUGFyc2VyW0luZGV4XS5P ZmZzZXQpIHsNCj4gKyAgICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7DQo+ICsgICAgICBQcmlu dCAoDQo+ICsgICAgICAgIEwiXG5FUlJPUjogJWE6IE9mZnNldCBNaXNtYXRjaCBmb3IgJXNcbiIN Cj4gKyAgICAgICAgICAiQ3VycmVudE9mZnNldCA9ICVkIEZpZWxkT2Zmc2V0ID0gJWRcbiIsDQo+ ICsgICAgICAgIEFzY2lpTmFtZSwNCj4gKyAgICAgICAgUGFyc2VyW0luZGV4XS5OYW1lU3RyLA0K PiArICAgICAgICBPZmZzZXQsDQo+ICsgICAgICAgIFBhcnNlcltJbmRleF0uT2Zmc2V0DQo+ICsg ICAgICAgICk7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgaWYgKFRyYWNlKSB7DQo+ICsgICAgICAv LyBpZiB0aGVyZSBpcyBhIEZvcm1hdHRlciBmdW5jdGlvbiBsZXQgdGhlIGZ1bmN0aW9uIGhhbmRs ZQ0KPiArICAgICAgLy8gdGhlIHByaW50aW5nIGVsc2UgaWYgYSBGb3JtYXQgaXMgc3BlY2lmaWVk IGluIHRoZSB0YWJsZSB1c2UNCj4gKyAgICAgIC8vIHRoZSBGb3JtYXQgZm9yIHByaW50aW5nDQo+ ICsgICAgICBQcmludEZpZWxkTmFtZSAoMiwgUGFyc2VyW0luZGV4XS5OYW1lU3RyKTsNCj4gKyAg ICAgIGlmIChQYXJzZXJbSW5kZXhdLlByaW50Rm9ybWF0dGVyICE9IE5VTEwpIHsNCj4gKyAgICAg ICAgUGFyc2VyW0luZGV4XS5QcmludEZvcm1hdHRlciAoUGFyc2VyW0luZGV4XS5Gb3JtYXQsIFB0 cik7DQo+ICsgICAgICB9IGVsc2UgaWYgKFBhcnNlcltJbmRleF0uRm9ybWF0ICE9IE5VTEwpIHsN Cj4gKyAgICAgICAgc3dpdGNoIChQYXJzZXJbSW5kZXhdLkxlbmd0aCkgew0KPiArICAgICAgICAg IGNhc2UgMToNCj4gKyAgICAgICAgICAgIER1bXBVaW50OCAoUGFyc2VyW0luZGV4XS5Gb3JtYXQs IFB0cik7DQo+ICsgICAgICAgICAgICBicmVhazsNCj4gKyAgICAgICAgICBjYXNlIDI6DQo+ICsg ICAgICAgICAgICBEdW1wVWludDE2IChQYXJzZXJbSW5kZXhdLkZvcm1hdCwgUHRyKTsNCj4gKyAg ICAgICAgICAgIGJyZWFrOw0KPiArICAgICAgICAgIGNhc2UgNDoNCj4gKyAgICAgICAgICAgIER1 bXBVaW50MzIgKFBhcnNlcltJbmRleF0uRm9ybWF0LCBQdHIpOw0KPiArICAgICAgICAgICAgYnJl YWs7DQo+ICsgICAgICAgICAgY2FzZSA4Og0KPiArICAgICAgICAgICAgRHVtcFVpbnQ2NCAoUGFy c2VyW0luZGV4XS5Gb3JtYXQsIFB0cik7DQo+ICsgICAgICAgICAgICBicmVhazsNCj4gKyAgICAg ICAgICBkZWZhdWx0Og0KPiArICAgICAgICAgICAgUHJpbnQgKA0KPiArICAgICAgICAgICAgICBM IlxuRVJST1I6ICVhOiBDQU5OT1QgUEFSU0UgVEhJUyBGSUVMRCwgRmllbGQgTGVuZ3RoID0gJWRc biIsDQo+ICsgICAgICAgICAgICAgIEFzY2lpTmFtZSwNCj4gKyAgICAgICAgICAgICAgUGFyc2Vy W0luZGV4XS5MZW5ndGgNCj4gKyAgICAgICAgICAgICAgKTsNCj4gKyAgICAgICAgfSAvLyBzd2l0 Y2gNCj4gKw0KPiArICAgICAgICAvLyBWYWxpZGF0aW5nIG9ubHkgbWFrZXMgc2Vuc2UgaWYgd2Ug YXJlIFRyYWNpbmcNCj4gKyAgICAgICAgLy8gdGhlIHBhcnNlZCB0YWJsZSBlbnRyaWVzLCB0byBy ZXBvcnQgYnkgdGFibGUgbmFtZS4NCj4gKyAgICAgICAgaWYgKFBhcnNlcltJbmRleF0uRmllbGRW YWxpZGF0b3IgIT0gTlVMTCkgew0KPiArICAgICAgICAgIFBhcnNlcltJbmRleF0uRmllbGRWYWxp ZGF0b3IgKFB0ciwgUGFyc2VyW0luZGV4XS5Db250ZXh0KTsNCj4gKyAgICAgICAgfQ0KPiArICAg ICAgfQ0KPiArICAgICAgUHJpbnQgKEwiXG4iKTsNCj4gKyAgICB9IC8vIGlmIChUcmFjZSkNCj4g Kw0KPiArICAgIGlmIChQYXJzZXJbSW5kZXhdLkl0ZW1QdHIgIT0gTlVMTCkgew0KPiArICAgICAg KlBhcnNlcltJbmRleF0uSXRlbVB0ciA9IChWT0lEKilQdHI7DQo+ICsgICAgfQ0KPiArDQo+ICsg ICAgUHRyICs9IFBhcnNlcltJbmRleF0uTGVuZ3RoOw0KPiArICAgIE9mZnNldCArPSBQYXJzZXJb SW5kZXhdLkxlbmd0aDsNCj4gKyAgfSAvLyBmb3INCj4gKw0KPiArICAvLyBEZWNyZW1lbnQgdGhl IEluZGVudA0KPiArICBnSW5kZW50IC09IEluZGVudDsNCj4gKyAgcmV0dXJuIE9mZnNldDsNCj4g K30NCj4gKw0KPiArLyoqIEFuIGFycmF5IGRlc2NyaWJpbmcgdGhlIEFDUEkgR2VuZXJpYyBBZGRy ZXNzIFN0cnVjdHVyZS4NCj4gKyAgVGhlIEdhc1BhcnNlciBhcnJheSBpcyB1c2VkIGJ5IHRoZSBQ YXJzZUFjcGkgZnVuY3Rpb24gdG8gcGFyc2UgYW5kL29yDQo+IHRyYWNlDQo+ICsgIHRoZSBHQVMg c3RydWN0dXJlLg0KPiArKi8NCj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBHYXNQYXJzZXJb XSA9IHsNCj4gKyAge0wiQWRkcmVzcyBTcGFjZSBJRCIsIDEsIDAsIEwiMHgleCIsIE5VTEwsIE5V TEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJSZWdpc3RlciBCaXQgV2lkdGgiLCAxLCAxLCBMIjB4 JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUmVnaXN0ZXIgQml0IE9mZnNl dCIsIDEsIDIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJBZGRy ZXNzIFNpemUiLCAxLCAzLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAg e0wiQWRkcmVzcyIsIDgsIDQsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfQ0KPiAr fTsNCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gaW5kZW50cyBhbmQgdHJhY2VzIHRoZSBHQVMg c3RydWN0dXJlIGFzIGRlc2NyaWJlZA0KPiArICAgIGJ5IHRoZSBHYXNQYXJzZXIuDQo+ICsNCj4g KyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVy Lg0KPiArICBAcGFyYW0gW2luXSBJbmRlbnQgIE51bWJlciBvZiBzcGFjZXMgdG8gaW5kZW50IHRo ZSBvdXRwdXQuDQo+ICsqLw0KPiArVk9JRA0KPiArRHVtcEdhc1N0cnVjdCAoDQo+ICsgIElOIFVJ TlQ4KiAgICAgICAgUHRyLA0KPiArICBJTiBVSU5UMzIgICAgICAgIEluZGVudA0KPiArICApDQo+ ICt7DQo+ICsgIFByaW50IChMIlxuIik7DQo+ICsgIFBhcnNlQWNwaSAoDQo+ICsgICAgVFJVRSwN Cj4gKyAgICBJbmRlbnQsDQo+ICsgICAgTlVMTCwNCj4gKyAgICBQdHIsDQo+ICsgICAgR0FTX0xF TkdUSCwNCj4gKyAgICBQQVJTRVJfUEFSQU1TIChHYXNQYXJzZXIpDQo+ICsgICAgKTsNCj4gK30N Cj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gdHJhY2VzIHRoZSBHQVMgc3RydWN0dXJlIGFzIGRl c2NyaWJlZCBieSB0aGUgR2FzUGFyc2VyLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIEZvcm1hdCAg T3B0aW9uYWwgZm9ybWF0IHN0cmluZyBmb3IgdHJhY2luZyB0aGUgZGF0YS4NCj4gKyAgQHBhcmFt IFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArKi8N Cj4gK1ZPSUQNCj4gK0R1bXBHYXMgKA0KPiArICBJTiBDT05TVCBDSEFSMTYqIEZvcm1hdCBPUFRJ T05BTCwNCj4gKyAgSU4gVUlOVDgqICAgICAgICBQdHINCj4gKyAgKQ0KPiArew0KPiArICBEdW1w R2FzU3RydWN0IChQdHIsIDIpOw0KPiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiB0cmFj ZXMgdGhlIEFDUEkgaGVhZGVyIGFzIGRlc2NyaWJlZCBieSB0aGUNCj4gQWNwaUhlYWRlclBhcnNl ci4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3Rh cnQgb2YgdGhlIGJ1ZmZlci4NCj4gKw0KPiArICBAcmV0dmFsIE51bWJlciBvZiBieXRlcyBwYXJz ZWQuDQo+ICsqLw0KPiArVUlOVDMyDQo+ICtEdW1wQWNwaUhlYWRlciAoDQo+ICsgIElOIFVJTlQ4 KiBQdHINCj4gKyAgKQ0KPiArew0KPiArICBBQ1BJX0RFU0NSSVBUSU9OX0hFQURFUl9JTkZPIEFj cGlIZHJJbmZvOw0KPiArICBBQ1BJX1BBUlNFUiBBY3BpSGVhZGVyUGFyc2VyW10gPSB7DQo+ICsg ICAgUEFSU0VfQUNQSV9IRUFERVIgKCZBY3BpSGRySW5mbykNCj4gKyAgfTsNCj4gKw0KPiArICBy ZXR1cm4gUGFyc2VBY3BpICgNCj4gKyAgICAgICAgICAgVFJVRSwNCj4gKyAgICAgICAgICAgMCwN Cj4gKyAgICAgICAgICAgIkFDUEkgVGFibGUgSGVhZGVyIiwNCj4gKyAgICAgICAgICAgUHRyLA0K PiArICAgICAgICAgICBBQ1BJX0RFU0NSSVBUSU9OX0hFQURFUl9MRU5HVEgsDQo+ICsgICAgICAg ICAgIFBBUlNFUl9QQVJBTVMgKEFjcGlIZWFkZXJQYXJzZXIpDQo+ICsgICAgICAgICAgICk7DQo+ ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgQUNQSSBoZWFkZXIgYXMg ZGVzY3JpYmVkIGJ5IHRoZQ0KPiBBY3BpSGVhZGVyUGFyc2VyLg0KPiArDQo+ICsgIFRoaXMgZnVu Y3Rpb24gb3B0aW9uYWxseSByZXR1cm5zIHRoZSBTaWduYXR1cmUsIExlbmd0aCBhbmQgcmV2aXNp b24gb2YgdGhlDQo+ICsgIEFDUEkgdGFibGUuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gIFB0ciAg ICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gKyAgQHBhcmFtIFtv dXRdIFNpZ25hdHVyZSAgR2V0cyBsb2NhdGlvbiBvZiB0aGUgQUNQSSB0YWJsZSBzaWduYXR1cmUu DQo+ICsgIEBwYXJhbSBbb3V0XSBMZW5ndGggICAgIEdldHMgbG9jYXRpb24gb2YgdGhlIGxlbmd0 aCBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gKyAgQHBhcmFtIFtvdXRdIFJldmlzaW9uICAgR2V0cyBs b2NhdGlvbiBvZiB0aGUgcmV2aXNpb24gb2YgdGhlIEFDUEkgdGFibGUuDQo+ICsNCj4gKyAgQHJl dHZhbCBOdW1iZXIgb2YgYnl0ZXMgcGFyc2VkLg0KPiArKi8NCj4gK1VJTlQzMg0KPiArUGFyc2VB Y3BpSGVhZGVyICgNCj4gKyAgSU4gIFVJTlQ4KiAgICAgICAgIFB0ciwNCj4gKyAgT1VUIENPTlNU IFVJTlQzMioqIFNpZ25hdHVyZSwNCj4gKyAgT1VUIENPTlNUIFVJTlQzMioqIExlbmd0aCwNCj4g KyAgT1VUIENPTlNUIFVJTlQ4KiogIFJldmlzaW9uDQo+ICsgICkNCj4gK3sNCj4gKyAgVUlOVDMy ICAgICAgICAgICAgICAgICAgICAgICAgQnl0ZXNQYXJzZWQ7DQo+ICsgIEFDUElfREVTQ1JJUFRJ T05fSEVBREVSX0lORk8gIEFjcGlIZHJJbmZvOw0KPiArICBBQ1BJX1BBUlNFUiBBY3BpSGVhZGVy UGFyc2VyW10gPSB7DQo+ICsgICAgUEFSU0VfQUNQSV9IRUFERVIgKCZBY3BpSGRySW5mbykNCj4g KyAgfTsNCj4gKw0KPiArICBCeXRlc1BhcnNlZCA9IFBhcnNlQWNwaSAoDQo+ICsgICAgICAgICAg ICAgICAgICBGQUxTRSwNCj4gKyAgICAgICAgICAgICAgICAgIDAsDQo+ICsgICAgICAgICAgICAg ICAgICBOVUxMLA0KPiArICAgICAgICAgICAgICAgICAgUHRyLA0KPiArICAgICAgICAgICAgICAg ICAgQUNQSV9ERVNDUklQVElPTl9IRUFERVJfTEVOR1RILA0KPiArICAgICAgICAgICAgICAgICAg UEFSU0VSX1BBUkFNUyAoQWNwaUhlYWRlclBhcnNlcikNCj4gKyAgICAgICAgICAgICAgICAgICk7 DQo+ICsNCj4gKyAgKlNpZ25hdHVyZSA9IEFjcGlIZHJJbmZvLlNpZ25hdHVyZTsNCj4gKyAgKkxl bmd0aCA9IEFjcGlIZHJJbmZvLkxlbmd0aDsNCj4gKyAgKlJldmlzaW9uID0gQWNwaUhkckluZm8u UmV2aXNpb247DQo+ICsNCj4gKyAgcmV0dXJuIEJ5dGVzUGFyc2VkOw0KPiArfQ0KPiBkaWZmIC0t Z2l0DQo+IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvQWNw aVRhYmxlUGFyc2VyLmMNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29t bWFuZExpYi9BY3BpVGFibGVQYXJzZXIuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRl eA0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YzI4Mjg0YmFj ODMxYjM0MDZjMDQzOTk1NA0KPiBiYjdmMDczYWUyMTI2OQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsr KyBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL0FjcGlUYWJs ZVBhcnNlci5jDQo+IEBAIC0wLDAgKzEsMjEyIEBADQo+ICsvKioNCj4gKyAgQUNQSSB0YWJsZSBw YXJzZXINCj4gKw0KPiArICBDb3B5cmlnaHQgKGMpIDIwMTYgLSAyMDE3LCBBUk0gTGltaXRlZC4g QWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55 aW5nIG1hdGVyaWFscw0KPiArICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVy IHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEDQo+IExpY2Vuc2UNCj4gKyAgd2hp Y2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBs aWNlbnNlIG1heSBiZQ0KPiBmb3VuZCBhdA0KPiArICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGlj ZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ICsNCj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVU RUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ICsgIFdJ VEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0K PiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ICsqKi8NCj4gKw0KPiArI2luY2x1ZGUgPEluZHVzdHJ5 U3RhbmRhcmQvQWNwaS5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaUxpYi5oPg0KPiArI2lu Y2x1ZGUgIkFjcGlQYXJzZXIuaCINCj4gKyNpbmNsdWRlICJBY3BpVmlldy5oIg0KPiArI2luY2x1 ZGUgIkFjcGlUYWJsZVBhcnNlci5oIg0KPiArDQo+ICsvKiogQSBsaXN0IG9mIHJlZ2lzdGVyZWQg QUNQSSB0YWJsZSBwYXJzZXJzLg0KPiArKi8NCj4gK1NUQVRJQyBBQ1BJX1RBQkxFX1BBUlNFUg0K PiBtVGFibGVQYXJzZXJMaXN0W01BWF9BQ1BJX1RBQkxFX1BBUlNFUlNdOw0KPiArDQo+ICsvKiog UmVnaXN0ZXIgdGhlIEFDUEkgdGFibGUgUGFyc2VyDQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBy ZWdpc3RlcnMgdGhlIEFDUEkgdGFibGUgcGFyc2VyLi4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBT aWduYXR1cmUgICBUaGUgQUNQSSB0YWJsZSBTaWduYXR1cmUuDQo+ICsgIEBwYXJhbSBbaW5dIFBh cnNlclByb2MgIFRoZSBBQ1BJIHRhYmxlIHBhcnNlci4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9T VUNDRVNTICAgICAgICAgICBUaGUgcGFyc2VyIGlzIHJlZ2lzdGVyZWQuDQo+ICsgIEByZXR2YWwg RUZJX0lOVkFMSURfUEFSQU1FVEVSIEEgcGFyYW1ldGVyIGlzIGludmFsaWQuDQo+ICsgIEByZXR2 YWwgRUZJX0FMUkVBRFlfU1RBUlRFRCAgIFRoZSBwYXJzZXIgZm9yIHRoZSBUYWJsZQ0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQuDQo+ICsg IEByZXR2YWwgRUZJX09VVF9PRl9SRVNPVVJDRVMgIE5vIHNwYWNlIHRvIHJlZ2lzdGVyIHRoZQ0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXIuDQo+ICsqLw0KPiArRUZJ X1NUQVRVUw0KPiArRUZJQVBJDQo+ICtSZWdpc3RlclBhcnNlciAoDQo+ICsgIElOICBVSU5UMzIg ICAgICAgICAgICAgICAgICBTaWduYXR1cmUsDQo+ICsgIElOICBQQVJTRV9BQ1BJX1RBQkxFX1BS T0MgICBQYXJzZXJQcm9jDQo+ICsgICkNCj4gK3sNCj4gKyAgVUlOVDMyIGluZGV4Ow0KPiArDQo+ ICsgIGlmICgoUGFyc2VyUHJvYyA9PSBOVUxMKSB8fCAoU2lnbmF0dXJlID09DQo+IEFDUElfUEFS U0VSX1NJR05BVFVSRV9OVUxMKSkgew0KPiArICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVU RVI7DQo+ICsgIH0NCj4gKw0KPiArICAvLyBTZWFyY2ggaWYgYSBwYXJzZXIgaXMgYWxyZWFkeSBp bnN0YWxsZWQNCj4gKyAgZm9yIChpbmRleCA9IDA7DQo+ICsgICAgICAgaW5kZXggPCAoc2l6ZW9m IChtVGFibGVQYXJzZXJMaXN0KSAvIHNpemVvZiAobVRhYmxlUGFyc2VyTGlzdFswXSkpOw0KPiAr ICAgICAgIGluZGV4KyspDQo+ICsgIHsNCj4gKyAgICBpZiAoU2lnbmF0dXJlID09IG1UYWJsZVBh cnNlckxpc3RbaW5kZXhdLlNpZ25hdHVyZSkgew0KPiArICAgICAgaWYgKG1UYWJsZVBhcnNlckxp c3RbaW5kZXhdLlBhcnNlciAhPSBOVUxMKSB7DQo+ICsgICAgICAgIHJldHVybiBFRklfQUxSRUFE WV9TVEFSVEVEOw0KPiArICAgICAgfQ0KPiArICAgIH0NCj4gKyAgfQ0KPiArDQo+ICsgIC8vIEZp bmQgdGhlIGZpcnN0IGZyZWUgc2xvdCBhbmQgcmVnaXN0ZXIgdGhlIHBhcnNlcg0KPiArICBmb3Ig KGluZGV4ID0gMDsNCj4gKyAgICAgIGluZGV4IDwgKHNpemVvZiAobVRhYmxlUGFyc2VyTGlzdCkg LyBzaXplb2YgKG1UYWJsZVBhcnNlckxpc3RbMF0pKTsNCj4gKyAgICAgIGluZGV4KyspDQo+ICsg IHsNCj4gKyAgICBpZiAobVRhYmxlUGFyc2VyTGlzdFtpbmRleF0uU2lnbmF0dXJlID09DQo+IEFD UElfUEFSU0VSX1NJR05BVFVSRV9OVUxMKSB7DQo+ICsgICAgICBtVGFibGVQYXJzZXJMaXN0W2lu ZGV4XS5TaWduYXR1cmUgPSBTaWduYXR1cmU7DQo+ICsgICAgICBtVGFibGVQYXJzZXJMaXN0W2lu ZGV4XS5QYXJzZXIgPSBQYXJzZXJQcm9jOw0KPiArICAgICAgcmV0dXJuIEVGSV9TVUNDRVNTOw0K PiArICAgIH0NCj4gKyAgfQ0KPiArDQo+ICsgIC8vIE5vIGZyZWUgc2xvdCBmb3VuZA0KPiArICBy ZXR1cm4gRUZJX09VVF9PRl9SRVNPVVJDRVM7DQo+ICt9DQo+ICsNCj4gKy8qKiBEZXJlZ2lzdGVy IHRoZSBBQ1BJIHRhYmxlIFBhcnNlcg0KPiArDQo+ICsgIFRoaXMgZnVuY3Rpb24gZGVyZWdpc3Rl cnMgdGhlIEFDUEkgdGFibGUgcGFyc2VyLi4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBTaWduYXR1 cmUgICBUaGUgQUNQSSB0YWJsZSBTaWduYXR1cmUuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VD Q0VTUyAgICAgICAgICAgVGhlIHBhcnNlciB3YXMgZGVyZWdpc3RlcmVkLg0KPiArICBAcmV0dmFs IEVGSV9JTlZBTElEX1BBUkFNRVRFUiBBIHBhcmFtZXRlciBpcyBpbnZhbGlkLg0KPiArICBAcmV0 dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICBBIHJlZ2lzdGVyZWQgcGFyc2VyIHdhcyBub3QgZm91 bmQuDQo+ICsqLw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtEZXJlZ2lzdGVyUGFyc2Vy ICgNCj4gKyAgSU4gIFVJTlQzMiAgICAgICAgICAgICAgICAgIFNpZ25hdHVyZQ0KPiArICApDQo+ ICt7DQo+ICsgIFVJTlQzMiBpbmRleDsNCj4gKw0KPiArICBpZiAoU2lnbmF0dXJlID09IEFDUElf UEFSU0VSX1NJR05BVFVSRV9OVUxMKSB7DQo+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFN RVRFUjsNCj4gKyAgfQ0KPiArDQo+ICsgIGZvciAoaW5kZXggPSAwOw0KPiArICAgICAgIGluZGV4 IDwgKHNpemVvZiAobVRhYmxlUGFyc2VyTGlzdCkgLyBzaXplb2YgKG1UYWJsZVBhcnNlckxpc3Rb MF0pKTsNCj4gKyAgICAgICBpbmRleCsrKQ0KPiArICB7DQo+ICsgICAgaWYgKFNpZ25hdHVyZSA9 PSBtVGFibGVQYXJzZXJMaXN0W2luZGV4XS5TaWduYXR1cmUpIHsNCj4gKyAgICAgIG1UYWJsZVBh cnNlckxpc3RbaW5kZXhdLlNpZ25hdHVyZSA9IEFDUElfUEFSU0VSX1NJR05BVFVSRV9OVUxMOw0K PiArICAgICAgbVRhYmxlUGFyc2VyTGlzdFtpbmRleF0uUGFyc2VyID0gTlVMTDsNCj4gKyAgICAg IHJldHVybiBFRklfU1VDQ0VTUzsNCj4gKyAgICB9DQo+ICsgIH0NCj4gKw0KPiArICAvLyBObyBt YXRjaGluZyByZWdpc3RlcmVkIHBhcnNlciBmb3VuZC4NCj4gKyAgcmV0dXJuIEVGSV9OT1RfRk9V TkQ7DQo+ICt9DQo+ICsNCj4gKy8qKiBHZXQgdGhlIEFDUEkgdGFibGUgUGFyc2VyDQo+ICsNCj4g KyAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBBQ1BJIHRhYmxlIHBhcnNlci4NCj4gKw0KPiAr ICBAcGFyYW0gW2luXSAgU2lnbmF0dXJlICAgVGhlIEFDUEkgdGFibGUgU2lnbmF0dXJlLg0KPiAr ICBAcGFyYW0gW291dF0gUGFyc2VyUHJvYyAgUG9pbnRlciB0byBhIEFDUEkgdGFibGUgcGFyc2Vy IHByb2MuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNl ciB3YXMgcmV0dXJuZWQgc3VjY2Vzc2Z1bGx5Lg0KPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BB UkFNRVRFUiBBIHBhcmFtZXRlciBpcyBpbnZhbGlkLg0KPiArICBAcmV0dmFsIEVGSV9OT1RfRk9V TkQgICAgICAgICBBIHJlZ2lzdGVyZWQgcGFyc2VyIHdhcyBub3QgZm91bmQuDQo+ICsqLw0KPiAr RUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtHZXRQYXJzZXIgKA0KPiArICBJTiAgVUlOVDMyICAg ICAgICAgICAgICAgICAgIFNpZ25hdHVyZSwNCj4gKyAgT1VUIFBBUlNFX0FDUElfVEFCTEVfUFJP QyAqICBQYXJzZXJQcm9jDQo+ICsgICkNCj4gK3sNCj4gKyAgVUlOVDMyIGluZGV4Ow0KPiArDQo+ ICsgIGlmICgoUGFyc2VyUHJvYyA9PSBOVUxMKSB8fCAoU2lnbmF0dXJlID09DQo+IEFDUElfUEFS U0VSX1NJR05BVFVSRV9OVUxMKSkgew0KPiArICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVU RVI7DQo+ICsgIH0NCj4gKw0KPiArICBmb3IgKGluZGV4ID0gMDsNCj4gKyAgICAgICBpbmRleCA8 IChzaXplb2YgKG1UYWJsZVBhcnNlckxpc3QpIC8gc2l6ZW9mIChtVGFibGVQYXJzZXJMaXN0WzBd KSk7DQo+ICsgICAgICAgaW5kZXgrKykNCj4gKyAgew0KPiArICAgIGlmIChTaWduYXR1cmUgPT0g bVRhYmxlUGFyc2VyTGlzdFtpbmRleF0uU2lnbmF0dXJlKSB7DQo+ICsgICAgICAqUGFyc2VyUHJv YyA9IG1UYWJsZVBhcnNlckxpc3RbaW5kZXhdLlBhcnNlcjsNCj4gKyAgICAgIHJldHVybiBFRklf U1VDQ0VTUzsNCj4gKyAgICB9DQo+ICsgIH0NCj4gKw0KPiArICAvLyBObyBtYXRjaGluZyByZWdp c3RlcmVkIHBhcnNlciBmb3VuZC4NCj4gKyAgcmV0dXJuIEVGSV9OT1RfRk9VTkQ7DQo+ICt9DQo+ ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHByb2Nlc3NlcyB0aGUgQUNQSSB0YWJsZXMuDQo+ICsg IFRoaXMgZnVuY3Rpb24gY2FsbHMgUHJvY2Vzc1RhYmxlUmVwb3J0T3B0aW9ucygpIHRvIGxpc3Qg dGhlIEFDUEkNCj4gKyAgdGFibGVzLCBwZXJmb3JtIGJpbmFyeSBkdW1wIG9mIHRoZSB0YWJsZXMg YW5kIGRldGVybWluZSBpZiB0aGUNCj4gKyAgQUNQSSBmaWVsZHMgc2hvdWxkIGJlIHRyYWNlZC4N Cj4gKw0KPiArICBUaGlzIGZ1bmN0aW9uIGFsc28gaW52b2tlcyB0aGUgcGFyc2VyIGZvciB0aGUg QUNQSSB0YWJsZXMuDQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBhbHNvIHBlcmZvcm1zIGEgUkFX IGR1bXAgb2YgdGhlIEFDUEkgdGFibGUgaW5jbHVkaW5nDQo+ICsgIHRoZSB1bmtub3duL3VucGFy c2VkIEFDUEkgdGFibGVzIGFuZCB2YWxpZGF0ZXMgdGhlIGNoZWNrc3VtLg0KPiArDQo+ICsgIEBw YXJhbSBbaW5dIFB0ciAgICAgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUg QUNQSQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGUgZGF0YSBidWZm ZXIuDQo+ICsqLw0KPiArVk9JRA0KPiArUHJvY2Vzc0FjcGlUYWJsZSAoDQo+ICsgIElOIFVJTlQ4 KiBQdHINCj4gKyAgKQ0KPiArew0KPiArICBFRklfU1RBVFVTICAgIFN0YXR1czsNCj4gKyAgQk9P TEVBTiAgICAgICBUcmFjZTsNCj4gKyAgQ09OU1QgVUlOVDMyKiBBY3BpVGFibGVTaWduYXR1cmU7 DQo+ICsgIENPTlNUIFVJTlQzMiogQWNwaVRhYmxlTGVuZ3RoOw0KPiArICBDT05TVCBVSU5UOCog IEFjcGlUYWJsZVJldmlzaW9uOw0KPiArICBQQVJTRV9BQ1BJX1RBQkxFX1BST0MgUGFyc2VyUHJv YzsNCj4gKw0KPiArICBQYXJzZUFjcGlIZWFkZXIgKA0KPiArICAgIFB0ciwNCj4gKyAgICAmQWNw aVRhYmxlU2lnbmF0dXJlLA0KPiArICAgICZBY3BpVGFibGVMZW5ndGgsDQo+ICsgICAgJkFjcGlU YWJsZVJldmlzaW9uDQo+ICsgICAgKTsNCj4gKw0KPiArICBUcmFjZSA9IFByb2Nlc3NUYWJsZVJl cG9ydE9wdGlvbnMgKA0KPiArICAgICAgICAgICAgKkFjcGlUYWJsZVNpZ25hdHVyZSwNCj4gKyAg ICAgICAgICAgIFB0ciwNCj4gKyAgICAgICAgICAgICpBY3BpVGFibGVMZW5ndGgNCj4gKyAgICAg ICAgICAgICk7DQo+ICsNCj4gKyAgaWYgKFRyYWNlKSB7DQo+ICsgICAgRHVtcFJhdyAoUHRyLCAq QWNwaVRhYmxlTGVuZ3RoKTsNCj4gKyAgICBWZXJpZnlDaGVja3N1bSAoVFJVRSwgUHRyLCAqQWNw aVRhYmxlTGVuZ3RoKTsNCj4gKyAgfQ0KPiArDQo+ICsgIFN0YXR1cyA9IEdldFBhcnNlciAoKkFj cGlUYWJsZVNpZ25hdHVyZSwgJlBhcnNlclByb2MpOw0KPiArICBpZiAoRUZJX0VSUk9SIChTdGF0 dXMpKSB7DQo+ICsgICAgLy8gTm8gcmVnaXN0ZXJlZCBwYXJzZXIgZm91bmQsIGRvIGRlZmF1bHQg aGFuZGxpbmcuDQo+ICsgICAgaWYgKFRyYWNlKSB7DQo+ICsgICAgICBEdW1wQWNwaUhlYWRlciAo UHRyKTsNCj4gKyAgICB9DQo+ICsgICAgcmV0dXJuOw0KPiArICB9DQo+ICsNCj4gKyAgUGFyc2Vy UHJvYyAoDQo+ICsgICAgVHJhY2UsDQo+ICsgICAgUHRyLA0KPiArICAgICpBY3BpVGFibGVMZW5n dGgsDQo+ICsgICAgKkFjcGlUYWJsZVJldmlzaW9uDQo+ICsgICAgKTsNCj4gK30NCj4gZGlmZiAt LWdpdCBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL0FjcGlW aWV3LmMNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9B Y3BpVmlldy5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4DQo+IDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlYjY1ZWVkM2M0YzkzM2I4YjA3ZDkyYzEN Cj4gYmJhMGVmYmZlMzg3YTVlDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvU2hlbGxQa2cvTGli cmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvQWNwaVZpZXcuYw0KPiBAQCAtMCwwICsx LDU5NyBAQA0KPiArLyoqDQo+ICsNCj4gKyAgQ29weXJpZ2h0IChjKSAyMDE2IC0gMjAxNywgQVJN IExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhl IGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gKyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWls YWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRA0KPiBMaWNlbnNl DQo+ICsgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4 dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gZm91bmQgYXQNCj4gKyAgaHR0cDovL29wZW5zb3Vy Y2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiArDQo+ICsgIFRIRSBQUk9HUkFNIElT IERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+IEJBU0lT LA0KPiArICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5E LCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiArKiovDQo+ICsNCj4gKyNpbmNsdWRl IDxMaWJyYXJ5L1ByaW50TGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpTGliLmg+DQo+ ICsjaW5jbHVkZSA8TGlicmFyeS9TaGVsbExpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvVWVm aUJvb3RTZXJ2aWNlc1RhYmxlTGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9CYXNlTWVtb3J5 TGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9EZWJ1Z0xpYi5oPg0KPiArI2luY2x1ZGUgPExp YnJhcnkvTWVtb3J5QWxsb2NhdGlvbkxpYi5oPg0KPiArI2luY2x1ZGUgIlVlZmlTaGVsbEFjcGlW aWV3Q29tbWFuZExpYi5oIg0KPiArI2luY2x1ZGUgIkFjcGlQYXJzZXIuaCINCj4gKyNpbmNsdWRl ICJBY3BpVmlldy5oIg0KPiArI2luY2x1ZGUgIkFjcGlUYWJsZVBhcnNlci5oIg0KPiArDQo+ICtF RklfSElJX0hBTkRMRSBnU2hlbGxBY3BpVmlld0hpaUhhbmRsZSA9IE5VTEw7DQo+ICsNCj4gKy8v IFJlcG9ydCB2YXJpYWJsZXMNCj4gK1NUQVRJQyBVSU5UMzIgICAgICAgICAgICAgbVNlbGVjdGVk QWNwaVRhYmxlOw0KPiArU1RBVElDIENPTlNUIENIQVIxNiogICAgICBtU2VsZWN0ZWRBY3BpVGFi bGVOYW1lOw0KPiArU1RBVElDIEJPT0xFQU4gICAgICAgICAgICBtU2VsZWN0ZWRBY3BpVGFibGVG b3VuZDsNCj4gK1NUQVRJQyBFUkVQT1JUX09QVElPTiAgICAgbVJlcG9ydFR5cGU7DQo+ICtTVEFU SUMgVUlOVDMyICAgICAgICAgICAgIG1UYWJsZUNvdW50Ow0KPiArU1RBVElDIFVJTlQzMiAgICAg ICAgICAgICBtQmluVGFibGVDb3VudDsNCj4gK1NUQVRJQyBVSU5UMzIgICAgICAgICAgICAgbVRh YmxlRXJyb3JDb3VudDsNCj4gK1NUQVRJQyBVSU5UMzIgICAgICAgICAgICAgbVRhYmxlV2Fybmlu Z0NvdW50Ow0KPiArU1RBVElDIEJPT0xFQU4gICAgICAgICAgICBtQ29sb3VySGlnaGxpZ2h0aW5n Ow0KPiArU1RBVElDIEJPT0xFQU4gICAgICAgICAgICBtVmVyYm9zZTsNCj4gK1NUQVRJQyBCT09M RUFOICAgICAgICAgICAgbUNvbnNpc3RlbmN5Q2hlY2s7DQo+ICsNCj4gKy8qKiBBbiBhcnJheSBv ZiBhY3BpdmlldyBjb21tYW5kIGxpbmUgcGFyYW1ldGVycy4NCj4gKyovDQo+ICtTVEFUSUMgQ09O U1QgU0hFTExfUEFSQU1fSVRFTSBQYXJhbUxpc3RbXSA9IHsNCj4gKyAge0wiLz8iLCBUeXBlRmxh Z30sDQo+ICsgIHtMIi1jIiwgVHlwZUZsYWd9LA0KPiArICB7TCItZCIsIFR5cGVGbGFnfSwNCj4g KyAge0wiLWgiLCBUeXBlVmFsdWV9LA0KPiArICB7TCItbCIsIFR5cGVGbGFnfSwNCj4gKyAge0wi LXMiLCBUeXBlVmFsdWV9LA0KPiArICB7TCItdiIsIFR5cGVGbGFnfSwNCj4gKyAge05VTEwsIFR5 cGVNYXh9DQo+ICt9Ow0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBpbmNyZW1lbnRzIHRoZSBB Q1BJIHRhYmxlIGVycm9yIGNvdW50ZXIuDQo+ICsqLw0KPiArVk9JRA0KPiArSW5jcmVtZW50RXJy b3JDb3VudCAoDQo+ICsgIFZPSUQNCj4gKyAgKQ0KPiArew0KPiArICBtVGFibGVFcnJvckNvdW50 Kys7DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIEFDUEkgdGFi bGUgZXJyb3IgY291bnQuDQo+ICsNCj4gKyAgQHJldHZhbCBSZXR1cm5zIHRoZSBjb3VudCBvZiBl cnJvcnMgZGV0ZWN0ZWQgaW4gdGhlIEFDUEkgdGFibGVzLg0KPiArKi8NCj4gK1VJTlQzMg0KPiAr R2V0RXJyb3JDb3VudCAoDQo+ICsgIFZPSUQNCj4gKyAgKQ0KPiArew0KPiArICByZXR1cm4gbVRh YmxlRXJyb3JDb3VudDsNCj4gK30NCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gaW5jcmVtZW50 cyB0aGUgQUNQSSB0YWJsZSB3YXJuaW5nIGNvdW50ZXIuDQo+ICsqLw0KPiArVk9JRA0KPiArSW5j cmVtZW50V2FybmluZ0NvdW50ICgNCj4gKyAgVk9JRA0KPiArICApDQo+ICt7DQo+ICsgIG1UYWJs ZVdhcm5pbmdDb3VudCsrOw0KPiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiByZXR1cm5z IHRoZSBBQ1BJIHRhYmxlIHdhcm5pbmcgY291bnQuDQo+ICsNCj4gKyAgQHJldHZhbCBSZXR1cm5z IHRoZSBjb3VudCBvZiB3YXJuaW5nIGRldGVjdGVkIGluIHRoZSBBQ1BJIHRhYmxlcy4NCj4gKyov DQo+ICtVSU5UMzINCj4gK0dldFdhcm5pbmdDb3VudCAoDQo+ICsgIFZPSUQNCj4gKyAgKQ0KPiAr ew0KPiArICByZXR1cm4gbVRhYmxlV2FybmluZ0NvdW50Ow0KPiArfQ0KPiArDQo+ICsvKiogVGhp cyBmdW5jdGlvbiByZXR1cm5zIHRoZSBjb2xvdXIgaGlnaGxpZ2h0aW5nIHN0YXR1cy4NCj4gKw0K PiArICBAcmV0dmFsIFRSVUUgaWYgY29sb3VyIGhpZ2hsaWdodGluZyBpcyBlbmFibGVkLg0KPiAr Ki8NCj4gK0JPT0xFQU4NCj4gK0dldENvbG91ckhpZ2hsaWdodGluZyAoDQo+ICsgIFZPSUQNCj4g KyAgKQ0KPiArew0KPiArICByZXR1cm4gbUNvbG91ckhpZ2hsaWdodGluZzsNCj4gK30NCj4gKw0K PiArLyoqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgcmVwb3J0IG9wdGlvbnMuDQo+ICsNCj4g KyAgQHJldHZhbCBSZXR1cm5zIHRoZSByZXBvcnQgb3B0aW9uLg0KPiArKi8NCj4gK1NUQVRJQw0K PiArRVJFUE9SVF9PUFRJT04NCj4gK0dldFJlcG9ydE9wdGlvbiAoDQo+ICsgIFZPSUQNCj4gKyAg KQ0KPiArew0KPiArICByZXR1cm4gbVJlcG9ydFR5cGU7DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlz IGZ1bmN0aW9uIHJldHVybnMgdGhlIHNlbGVjdGVkIEFDUEkgdGFibGUuDQo+ICsNCj4gKyAgQHJl dHZhbCBSZXR1cm5zIHRoZSBzZWxlY3RlZCBBQ1BJIHRhYmxlLg0KPiArKi8NCj4gK1NUQVRJQw0K PiArVUlOVDMyDQo+ICtHZXRTZWxlY3RlZEFjcGlUYWJsZSAoDQo+ICsgIFZPSUQNCj4gKyAgKQ0K PiArew0KPiArICByZXR1cm4gbVNlbGVjdGVkQWNwaVRhYmxlOw0KPiArfQ0KPiArDQo+ICsvKiog VGhpcyBmdW5jdGlvbiBkdW1wcyB0aGUgQUNQSSB0YWJsZSB0byBhIGZpbGUuDQo+ICsgIEBwYXJh bSBbaW5dIFB0ciAgICAgICBQb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGRhdGEuDQo+ICsgIEBw YXJhbSBbaW5dIExlbmd0aCAgICBUaGUgbGVuZ3RoIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiArDQo+ ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICBTdWNjZXNzLg0KPiArKi8NCj4gK1NUQVRJQw0KPiAr Qk9PTEVBTg0KPiArRHVtcEFjcGlUYWJsZVRvRmlsZSAoDQo+ICsgIElOIENPTlNUIFVJTlQ4KiAg UHRyLA0KPiArICBJTiBDT05TVCBVSU5UTiAgIExlbmd0aA0KPiArICApDQo+ICt7DQo+ICsgIEVG SV9TVEFUVVMgICAgICAgICBTdGF0dXM7DQo+ICsgIENIQVIxNiAgICAgICAgICAgICBGaWxlTmFt ZUJ1ZmZlcltNQVhfRklMRV9OQU1FX0xFTl07DQo+ICsgIFNIRUxMX0ZJTEVfSEFORExFICBEdW1w RmlsZUhhbmRsZSA9IE5VTEw7DQo+ICsgIFVJTlROICAgICAgICAgICAgICBUcmFuc2ZlckJ5dGVz ID0gTGVuZ3RoOw0KPiArDQo+ICsgIFVuaWNvZGVTUHJpbnQgKA0KPiArICAgIEZpbGVOYW1lQnVm ZmVyLA0KPiArICAgIHNpemVvZiAoRmlsZU5hbWVCdWZmZXIpLA0KPiArICAgIEwiLlxcJXMlMDRk LmJpbiIsDQo+ICsgICAgbVNlbGVjdGVkQWNwaVRhYmxlTmFtZSwNCj4gKyAgICBtQmluVGFibGVD b3VudCsrDQo+ICsgICAgKTsNCj4gKw0KPiArICBTdGF0dXMgPSBTaGVsbE9wZW5GaWxlQnlOYW1l ICgNCj4gKyAgICAgICAgICAgICBGaWxlTmFtZUJ1ZmZlciwNCj4gKyAgICAgICAgICAgICAmRHVt cEZpbGVIYW5kbGUsDQo+ICsgICAgICAgICAgICAgRUZJX0ZJTEVfTU9ERV9SRUFEIHwgRUZJX0ZJ TEVfTU9ERV9XUklURSB8DQo+IEVGSV9GSUxFX01PREVfQ1JFQVRFLA0KPiArICAgICAgICAgICAg IDANCj4gKyAgICAgICAgICAgICApOw0KPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ ICsgICAgU2hlbGxQcmludEhpaUV4ICgNCj4gKyAgICAgIC0xLA0KPiArICAgICAgLTEsDQo+ICsg ICAgICBOVUxMLA0KPiArICAgICAgU1RSSU5HX1RPS0VOIChTVFJfR0VOX1JFQURPTkxZX01FRElB KSwNCj4gKyAgICAgIGdTaGVsbEFjcGlWaWV3SGlpSGFuZGxlLA0KPiArICAgICAgTCJhY3Bpdmll dyINCj4gKyAgICAgICk7DQo+ICsgICAgcmV0dXJuIEZBTFNFOw0KPiArICB9DQo+ICsNCj4gKyAg UHJpbnQgKEwiRHVtcGluZyBBQ1BJIHRhYmxlIHRvIDogJXMgLi4uICIsIEZpbGVOYW1lQnVmZmVy KTsNCj4gKw0KPiArICBTdGF0dXMgPSBTaGVsbFdyaXRlRmlsZSAoDQo+ICsgICAgICAgICAgICAg RHVtcEZpbGVIYW5kbGUsDQo+ICsgICAgICAgICAgICAgJlRyYW5zZmVyQnl0ZXMsDQo+ICsgICAg ICAgICAgICAgKFZPSUQqKVB0cg0KPiArICAgICAgICAgICAgICk7DQo+ICsgIGlmIChFRklfRVJS T1IgKFN0YXR1cykpIHsNCj4gKyAgICBQcmludCAoTCJFUlJPUjogRmFpbGVkIHRvIGR1bXAgdGFi bGUgdG8gYmluYXJ5IGZpbGUuXG4iKTsNCj4gKyAgfQ0KPiArDQo+ICsgIFNoZWxsQ2xvc2VGaWxl ICgmRHVtcEZpbGVIYW5kbGUpOw0KPiArICBQcmludCAoTCJET05FLlxuIik7DQo+ICsNCj4gKyAg cmV0dXJuIChMZW5ndGggPT0gVHJhbnNmZXJCeXRlcyk7DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlz IGZ1bmN0aW9uIHByb2Nlc3NlcyB0aGUgdGFibGUgcmVwb3J0aW5nIG9wdGlvbnMgZm9yIHRoZSBB Q1BJIHRhYmxlLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFNpZ25hdHVyZSBUaGUgQUNQSSB0YWJs ZSBTaWduYXR1cmUuDQo+ICsgIEBwYXJhbSBbaW5dIFRhYmxlUHRyICBQb2ludGVyIHRvIHRoZSBB Q1BJIHRhYmxlIGRhdGEuDQo+ICsgIEBwYXJhbSBbaW5dIExlbmd0aCAgICBUaGUgbGVuZ3RoIGZv IHRoZSBBQ1BJIHRhYmxlLg0KPiArDQo+ICsgIEByZXR2YWwgUmV0dXJucyBUUlVFIGlmIHRoZSBB Q1BJIHRhYmxlIHNob3VsZCBiZSB0cmFjZWQuDQo+ICsqLw0KPiArQk9PTEVBTg0KPiArUHJvY2Vz c1RhYmxlUmVwb3J0T3B0aW9ucyAoDQo+ICsgIElOIENPTlNUIFVJTlQzMiAgU2lnbmF0dXJlLA0K PiArICBJTiBDT05TVCBVSU5UOCogIFRhYmxlUHRyLA0KPiArICBJTiBDT05TVCBVSU5UMzIgIExl bmd0aA0KPiArICApDQo+ICt7DQo+ICsgIFVJTlROICAgT3JpZ2luYWxBdHRyaWJ1dGU7DQo+ICsg IFVJTlQ4KiAgU2lnbmF0dXJlUHRyID0gKFVJTlQ4KikoVUlOVE4pJlNpZ25hdHVyZTsNCj4gKyAg Qk9PTEVBTiBMb2cgPSBGQUxTRTsNCj4gKyAgQk9PTEVBTiBIaWdoTGlnaHQgPSBHZXRDb2xvdXJI aWdobGlnaHRpbmcgKCk7DQo+ICsgIHN3aXRjaCAoR2V0UmVwb3J0T3B0aW9uICgpKSB7DQo+ICsg ICAgY2FzZSBFUkVQT1JUX0FMTDoNCj4gKyAgICAgIExvZyA9IFRSVUU7DQo+ICsgICAgICBicmVh azsNCj4gKyAgICBjYXNlIEVSRVBPUlRfU0VMRUNURUQ6DQo+ICsgICAgICBpZiAoU2lnbmF0dXJl ID09IEdldFNlbGVjdGVkQWNwaVRhYmxlICgpKSB7DQo+ICsgICAgICAgIExvZyA9IFRSVUU7DQo+ ICsgICAgICAgIG1TZWxlY3RlZEFjcGlUYWJsZUZvdW5kID0gVFJVRTsNCj4gKyAgICAgIH0NCj4g KyAgICAgIGJyZWFrOw0KPiArICAgIGNhc2UgRVJFUE9SVF9UQUJMRV9MSVNUOg0KPiArICAgICAg aWYgKG1UYWJsZUNvdW50ID09IDApIHsNCj4gKyAgICAgICAgaWYgKEhpZ2hMaWdodCkgew0KPiAr ICAgICAgICAgIE9yaWdpbmFsQXR0cmlidXRlID0gZ1NULT5Db25PdXQtPk1vZGUtPkF0dHJpYnV0 ZTsNCj4gKyAgICAgICAgICBnU1QtPkNvbk91dC0+U2V0QXR0cmlidXRlICgNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICBnU1QtPkNvbk91dCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICBFRklfVEVYVF9BVFRSKEVGSV9DWUFOLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg KChPcmlnaW5hbEF0dHJpYnV0ZSYoQklUNHxCSVQ1fEJJVDYpKT4+NCkpDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgKTsNCj4gKyAgICAgICAgfQ0KPiArICAgICAgICBQcmludCAoTCJcbklu c3RhbGxlZCBUYWJsZShzKTpcbiIpOw0KPiArICAgICAgICBpZiAoSGlnaExpZ2h0KSB7DQo+ICsg ICAgICAgICAgZ1NULT5Db25PdXQtPlNldEF0dHJpYnV0ZSAoZ1NULT5Db25PdXQsIE9yaWdpbmFs QXR0cmlidXRlKTsNCj4gKyAgICAgICAgfQ0KPiArICAgICAgfQ0KPiArICAgICAgUHJpbnQgKA0K PiArICAgICAgICBMIlx0JTRkLiAlYyVjJWMlY1xuIiwNCj4gKyAgICAgICAgKyttVGFibGVDb3Vu dCwNCj4gKyAgICAgICAgU2lnbmF0dXJlUHRyWzBdLA0KPiArICAgICAgICBTaWduYXR1cmVQdHJb MV0sDQo+ICsgICAgICAgIFNpZ25hdHVyZVB0clsyXSwNCj4gKyAgICAgICAgU2lnbmF0dXJlUHRy WzNdDQo+ICsgICAgICAgICk7DQo+ICsgICAgICBicmVhazsNCj4gKyAgICBjYXNlIEVSRVBPUlRf RFVNUF9CSU5fRklMRToNCj4gKyAgICAgIGlmIChTaWduYXR1cmUgPT0gR2V0U2VsZWN0ZWRBY3Bp VGFibGUgKCkpIHsNCj4gKyAgICAgICAgbVNlbGVjdGVkQWNwaVRhYmxlRm91bmQgPSBUUlVFOw0K PiArICAgICAgICBEdW1wQWNwaVRhYmxlVG9GaWxlIChUYWJsZVB0ciwgTGVuZ3RoKTsNCj4gKyAg ICAgIH0NCj4gKyAgICAgIGJyZWFrOw0KPiArICAgIGNhc2UgRVJFUE9SVF9NQVg6DQo+ICsgICAg ICAvLyBXZSBzaG91bGQgbmV2ZXIgYmUgaGVyZS4NCj4gKyAgICAgIC8vIFRoaXMgY2FzZSBpcyBv bmx5IHByZXNlbnQgdG8gcHJldmVudCBjb21waWxlciB3YXJuaW5nLg0KPiArICAgICAgYnJlYWs7 DQo+ICsgIH0gLy8gc3dpdGNoDQo+ICsNCj4gKyAgaWYgKExvZykgew0KPiArICAgIGlmIChIaWdo TGlnaHQpIHsNCj4gKyAgICAgIE9yaWdpbmFsQXR0cmlidXRlID0gZ1NULT5Db25PdXQtPk1vZGUt PkF0dHJpYnV0ZTsNCj4gKyAgICAgIGdTVC0+Q29uT3V0LT5TZXRBdHRyaWJ1dGUgKA0KPiArICAg ICAgICAgICAgICAgICAgICAgZ1NULT5Db25PdXQsDQo+ICsgICAgICAgICAgICAgICAgICAgICBF RklfVEVYVF9BVFRSKEVGSV9MSUdIVEJMVUUsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICgo T3JpZ2luYWxBdHRyaWJ1dGUmKEJJVDR8QklUNXxCSVQ2KSk+PjQpKQ0KPiArICAgICAgICAgICAg ICAgICAgICAgKTsNCj4gKyAgICB9DQo+ICsgICAgUHJpbnQgKA0KPiArICAgICAgTCJcblxuIC0t LS0tLS0tLS0tLS0tLSAlYyVjJWMlYyBUYWJsZSAtLS0tLS0tLS0tLS0tLS0gXG5cbiIsDQo+ICsg ICAgICBTaWduYXR1cmVQdHJbMF0sDQo+ICsgICAgICBTaWduYXR1cmVQdHJbMV0sDQo+ICsgICAg ICBTaWduYXR1cmVQdHJbMl0sDQo+ICsgICAgICBTaWduYXR1cmVQdHJbM10NCj4gKyAgICAgICk7 DQo+ICsgICAgaWYgKEhpZ2hMaWdodCkgew0KPiArICAgICAgZ1NULT5Db25PdXQtPlNldEF0dHJp YnV0ZSAoZ1NULT5Db25PdXQsIE9yaWdpbmFsQXR0cmlidXRlKTsNCj4gKyAgICB9DQo+ICsgIH0N Cj4gKw0KPiArICByZXR1cm4gTG9nOw0KPiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBj b252ZXJ0cyBhIHN0cmluZyB0byBBQ1BJIHRhYmxlIHNpZ25hdHVyZS4NCj4gKw0KPiArICBAcGFy YW0gW2luXSBTdHIgICBQb2ludGVyIHRvIHRoZSBzdHJpbmcgdG8gYmUgY29udmVydGVkIHRvIHRo ZQ0KPiArICAgICAgICAgICAgICAgICAgICBBQ1BJIHRhYmxlIHNpZ25hdHVyZS4NCj4gKw0KPiAr ICBAcmV0dmFsIFRoZSBBQ1BJIHRhYmxlIHNpZ25hdHVyZS4NCj4gKyovDQo+ICtTVEFUSUMNCj4g K1VJTlQzMg0KPiArQ29udmVydFN0clRvQWNwaVNpZ25hdHVyZSAoDQo+ICsgIElOICBDT05TVCBD SEFSMTYqIFN0cg0KPiArICApDQo+ICt7DQo+ICsgIFVJTlQ4IEluZGV4Ow0KPiArICBDSEFSOCBQ dHJbNF07DQo+ICsNCj4gKyAgSW5kZXggPSAwOw0KPiArICAvLyBDb252ZXJ0IHRvIFVwcGVyIGNh c2UgYW5kIGNvbnZlcnQgdG8gQVNDSUkNCj4gKyAgd2hpbGUgKChJbmRleCA8IDQpICYmIChTdHJb SW5kZXhdICE9IDApKSB7DQo+ICsgICAgaWYgKFN0cltJbmRleF0gPj0gTCdhJyAmJiBTdHJbSW5k ZXhdIDw9IEwneicpIHsNCj4gKyAgICAgIFB0cltJbmRleF0gPSAoQ0hBUjgpKFN0cltJbmRleF0g LSAoTCdhJyAtIEwnQScpKTsNCj4gKyAgICB9IGVsc2Ugew0KPiArICAgICAgUHRyW0luZGV4XSA9 IChDSEFSOClTdHJbSW5kZXhdOw0KPiArICAgIH0NCj4gKyAgICBJbmRleCsrOw0KPiArICB9DQo+ ICsgIHJldHVybiAoKihVSU5UMzIqKVB0cik7DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0 aW9uIGl0ZXJhdGVzIHRoZSBjb25maWd1cmF0aW9uIHRhYmxlIGVudHJpZXMgaW4gdGhlDQo+ICsg ICAgc3lzdGVtIHRhYmxlLCByZXRyaWV2ZXMgdGhlIFJTRFAgcG9pbnRlciBhbmQgc3RhcnRzIHBh cnNpbmcNCj4gKyAgICB0aGUgQUNQSSB0YWJsZXMuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gU3lz dGVtVGFibGUgUG9pbnRlciB0byB0aGUgRUZJIHN5c3RlbSB0YWJsZS4NCj4gKw0KPiArICBAcmV0 dmFsIFJldHVybnMgRUZJX05PVF9GT1VORCBpZiB0aGUgUlNEUCBwb2ludGVyIGlzIG5vdCBmb3Vu ZC4NCj4gKyAgICAgICAgICBSZXR1cm5zIEVGSV9TVUNDRVNTIGlmIHN1Y2Nlc3NmdWwuDQo+ICsq Lw0KPiArU1RBVElDDQo+ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK0FjcGlWaWV3ICgNCj4g KyAgSU4gRUZJX1NZU1RFTV9UQUJMRSogU3lzdGVtVGFibGUNCj4gKyAgKQ0KPiArew0KPiArICBF RklfU1RBVFVTICAgICAgICAgICAgICAgU3RhdHVzOw0KPiArICBVSU5UTiAgICAgICAgICAgICAg ICAgICAgSW5kZXg7DQo+ICsgIEVGSV9DT05GSUdVUkFUSU9OX1RBQkxFKiBFZmlDb25maWd1cmF0 aW9uVGFibGU7DQo+ICsgIEJPT0xFQU4gICAgICAgICAgICAgICAgICBGb3VuZEFjcGlUYWJsZTsN Cj4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgIE9yaWdpbmFsQXR0cmlidXRlOw0KPiArICBV SU5UTiAgICAgICAgICAgICAgICAgICAgUHJpbnRBdHRyaWJ1dGU7DQo+ICsgIEVSRVBPUlRfT1BU SU9OICAgICAgICAgICBSZXBvcnRPcHRpb247DQo+ICsNCj4gKyAgLy8gU2VhcmNoIHRoZSB0YWJs ZSBmb3IgYW4gZW50cnkgdGhhdCBtYXRjaGVzIHRoZSBBQ1BJIFRhYmxlIEd1aWQNCj4gKyAgRm91 bmRBY3BpVGFibGUgPSBGQUxTRTsNCj4gKyAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwgU3lzdGVt VGFibGUtPk51bWJlck9mVGFibGVFbnRyaWVzOyBJbmRleCsrKSB7DQo+ICsgICAgaWYgKENvbXBh cmVHdWlkICgmZ0VmaUFjcGlUYWJsZUd1aWQsDQo+ICsgICAgICAgICAgJihTeXN0ZW1UYWJsZS0+ Q29uZmlndXJhdGlvblRhYmxlW0luZGV4XS5WZW5kb3JHdWlkKSkpIHsNCj4gKyAgICAgIEVmaUNv bmZpZ3VyYXRpb25UYWJsZSA9ICZTeXN0ZW1UYWJsZS0+Q29uZmlndXJhdGlvblRhYmxlW0luZGV4 XTsNCj4gKyAgICAgIEZvdW5kQWNwaVRhYmxlID0gVFJVRTsNCj4gKyAgICAgIGJyZWFrOw0KPiAr ICAgIH0NCj4gKyAgfQ0KPiArDQo+ICsgIGlmIChGb3VuZEFjcGlUYWJsZSkgew0KPiArICAgIFN0 YXR1cyA9IFBhcnNlUnNkcCAoKFVJTlQ4KilFZmlDb25maWd1cmF0aW9uVGFibGUtPlZlbmRvclRh YmxlKTsNCj4gKyAgfSBlbHNlIHsNCj4gKyAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiAr ICAgIFByaW50ICgNCj4gKyAgICAgIEwiRVJST1I6IEZhaWxlZCB0byBmaW5kIEFDUEkgVGFibGUg R3VpZCBpbiBTeXN0ZW0gQ29uZmlndXJhdGlvbg0KPiBUYWJsZS5cbiINCj4gKyAgICAgICk7DQo+ ICsgICAgU3RhdHVzID0gRUZJX05PVF9GT1VORDsNCj4gKyAgfQ0KPiArDQo+ICsgIFJlcG9ydE9w dGlvbiA9IEdldFJlcG9ydE9wdGlvbiAoKTsNCj4gKyAgaWYgKEVSRVBPUlRfVEFCTEVfTElTVCAh PSBSZXBvcnRPcHRpb24pIHsNCj4gKyAgICBpZiAoKChFUkVQT1JUX1NFTEVDVEVEID09IFJlcG9y dE9wdGlvbikgIHx8DQo+ICsgICAgICAgICAoRVJFUE9SVF9EVU1QX0JJTl9GSUxFID09IFJlcG9y dE9wdGlvbikpICYmDQo+ICsgICAgICAgICghbVNlbGVjdGVkQWNwaVRhYmxlRm91bmQpKSB7DQo+ ICsgICAgICBQcmludCAoTCJcblJlcXVlc3RlZCBBQ1BJIFRhYmxlIG5vdCBmb3VuZC5cbiIpOw0K PiArICAgIH0gZWxzZSBpZiAoRVJFUE9SVF9EVU1QX0JJTl9GSUxFICE9IFJlcG9ydE9wdGlvbikg ew0KPiArICAgICAgT3JpZ2luYWxBdHRyaWJ1dGUgPSBnU1QtPkNvbk91dC0+TW9kZS0+QXR0cmli dXRlOw0KPiArDQo+ICsgICAgICBQcmludCAoTCJcblRhYmxlIFN0YXRpc3RpY3M6XG4iKTsNCj4g Kw0KPiArICAgICAgaWYgKEdldENvbG91ckhpZ2hsaWdodGluZyAoKSkgew0KPiArICAgICAgICBQ cmludEF0dHJpYnV0ZSA9IChHZXRFcnJvckNvdW50ICgpID4gMCkgPw0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEVGSV9URVhUX0FUVFIgKA0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgRUZJX1JFRCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoT3Jp Z2luYWxBdHRyaWJ1dGUmKEJJVDR8QklUNXxCSVQ2KSk+PjQpDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICApIDoNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmlnaW5h bEF0dHJpYnV0ZTsNCj4gKyAgICAgICAgZ1NULT5Db25PdXQtPlNldEF0dHJpYnV0ZSAoZ1NULT5D b25PdXQsIFByaW50QXR0cmlidXRlKTsNCj4gKyAgICAgIH0NCj4gKyAgICAgIFByaW50IChMIlx0 JWQgRXJyb3IocylcbiIsIEdldEVycm9yQ291bnQgKCkpOw0KPiArDQo+ICsgICAgICBpZiAoR2V0 Q29sb3VySGlnaGxpZ2h0aW5nICgpKSB7DQo+ICsgICAgICAgIFByaW50QXR0cmlidXRlID0gKEdl dFdhcm5pbmdDb3VudCAoKSA+IDApID8NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBF RklfVEVYVF9BVFRSICgNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9SRUQs DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE9yaWdpbmFsQXR0cmlidXRlJihC SVQ0fEJJVDV8QklUNikpPj40KQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6 DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JpZ2luYWxBdHRyaWJ1dGU7DQo+ICsN Cj4gKyAgICAgICAgZ1NULT5Db25PdXQtPlNldEF0dHJpYnV0ZSAoZ1NULT5Db25PdXQsIFByaW50 QXR0cmlidXRlKTsNCj4gKyAgICAgIH0NCj4gKyAgICAgIFByaW50IChMIlx0JWQgV2FybmluZyhz KVxuIiwgR2V0V2FybmluZ0NvdW50ICgpKTsNCj4gKw0KPiArICAgICAgaWYgKEdldENvbG91ckhp Z2hsaWdodGluZyAoKSkgew0KPiArICAgICAgICBnU1QtPkNvbk91dC0+U2V0QXR0cmlidXRlIChn U1QtPkNvbk91dCwgT3JpZ2luYWxBdHRyaWJ1dGUpOw0KPiArICAgICAgfQ0KPiArICAgIH0NCj4g KyAgfQ0KPiArICByZXR1cm4gU3RhdHVzOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgRnVuY3Rp b24gZm9yICdhY3BpdmlldycgY29tbWFuZC4NCj4gKw0KPiArICBAcGFyYW1baW5dIEltYWdlSGFu ZGxlICBIYW5kbGUgdG8gdGhlIEltYWdlIChOVUxMIGlmIEludGVybmFsKS4NCj4gKyAgQHBhcmFt W2luXSBTeXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxlIChOVUxMIGlmIElu dGVybmFsKS4NCj4gKyovDQo+ICtTSEVMTF9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArU2hlbGxDb21t YW5kUnVuQWNwaVZpZXcgKA0KPiArICBJTiBFRklfSEFORExFICAgICAgICBJbWFnZUhhbmRsZSwN Cj4gKyAgSU4gRUZJX1NZU1RFTV9UQUJMRSogU3lzdGVtVGFibGUNCj4gKyAgKQ0KPiArew0KPiAr ICBFRklfU1RBVFVTICAgICAgICAgU3RhdHVzOw0KPiArICBTSEVMTF9TVEFUVVMgICAgICAgU2hl bGxTdGF0dXMgPSBTSEVMTF9TVUNDRVNTOw0KPiArICBMSVNUX0VOVFJZKiAgICAgICAgUGFja2Fn ZSA9IE5VTEw7DQo+ICsgIENIQVIxNiogICAgICAgICAgICBQcm9ibGVtUGFyYW07DQo+ICsgIENP TlNUIENIQVIxNiogICAgICBUZW1wOw0KPiArICBDSEFSOCAgICAgICAgICAgICAgQ29sb3VyT3B0 aW9uWzhdOw0KPiArICBTSEVMTF9GSUxFX0hBTkRMRSAgVG1wRHVtcEZpbGVIYW5kbGUgPSBOVUxM Ow0KPiArDQo+ICsgIC8vIFNldCBEZWZhdWx0cw0KPiArICBtUmVwb3J0VHlwZSA9IEVSRVBPUlRf QUxMOw0KPiArICBtVGFibGVDb3VudCA9IDA7DQo+ICsgIG1CaW5UYWJsZUNvdW50ID0gMDsNCj4g KyAgbVNlbGVjdGVkQWNwaVRhYmxlID0gMDsNCj4gKyAgbVNlbGVjdGVkQWNwaVRhYmxlTmFtZSA9 IE5VTEw7DQo+ICsgIG1UYWJsZUVycm9yQ291bnQgPSAwOw0KPiArICBtVGFibGVXYXJuaW5nQ291 bnQgPSAwOw0KPiArICBtU2VsZWN0ZWRBY3BpVGFibGVGb3VuZCA9IEZBTFNFOw0KPiArICBtVmVy Ym9zZSA9IFRSVUU7DQo+ICsgIG1Db25zaXN0ZW5jeUNoZWNrID0gVFJVRTsNCj4gKw0KPiArICBT dGF0dXMgPSBTaGVsbENvbW1hbmRMaW5lUGFyc2UgKFBhcmFtTGlzdCwgJlBhY2thZ2UsICZQcm9i bGVtUGFyYW0sDQo+IFRSVUUpOw0KPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsg ICAgaWYgKFN0YXR1cyA9PSBFRklfVk9MVU1FX0NPUlJVUFRFRCAmJiBQcm9ibGVtUGFyYW0gIT0g TlVMTCkgew0KPiArICAgICAgU2hlbGxQcmludEhpaUV4ICgNCj4gKyAgICAgICAgLTEsDQo+ICsg ICAgICAgIC0xLA0KPiArICAgICAgICBOVUxMLA0KPiArICAgICAgICBTVFJJTkdfVE9LRU4gKFNU Ul9HRU5fUFJPQkxFTSksDQo+ICsgICAgICAgIGdTaGVsbEFjcGlWaWV3SGlpSGFuZGxlLA0KPiAr ICAgICAgICBMImFjcGl2aWV3IiwNCj4gKyAgICAgICAgUHJvYmxlbVBhcmFtDQo+ICsgICAgICAg ICk7DQo+ICsgICAgICBGcmVlUG9vbCAoUHJvYmxlbVBhcmFtKTsNCj4gKyAgICAgIFNoZWxsU3Rh dHVzID0gU0hFTExfSU5WQUxJRF9QQVJBTUVURVI7DQo+ICsgICAgfSBlbHNlIHsNCj4gKyAgICAg IEFTU0VSVCAoRkFMU0UpOw0KPiArICAgIH0NCj4gKyAgfSBlbHNlIHsNCj4gKyAgICBpZiAoU2hl bGxDb21tYW5kTGluZUdldENvdW50IChQYWNrYWdlKSA+IDEpIHsNCj4gKyAgICAgIFNoZWxsUHJp bnRIaWlFeCAoDQo+ICsgICAgICAgIC0xLA0KPiArICAgICAgICAtMSwNCj4gKyAgICAgICAgTlVM TCwNCj4gKyAgICAgICAgU1RSSU5HX1RPS0VOIChTVFJfR0VOX1RPT19NQU5ZKSwNCj4gKyAgICAg ICAgZ1NoZWxsQWNwaVZpZXdIaWlIYW5kbGUsDQo+ICsgICAgICAgIEwiYWNwaXZpZXciDQo+ICsg ICAgICAgICk7DQo+ICsgICAgICBTaGVsbFN0YXR1cyA9IFNIRUxMX0lOVkFMSURfUEFSQU1FVEVS Ow0KPiArICAgIH0gZWxzZSBpZiAoU2hlbGxDb21tYW5kTGluZUdldEZsYWcgKFBhY2thZ2UsIEwi LT8iKSkgew0KPiArICAgICAgU2hlbGxQcmludEhpaUV4ICgNCj4gKyAgICAgICAgLTEsDQo+ICsg ICAgICAgIC0xLA0KPiArICAgICAgICBOVUxMLA0KPiArICAgICAgICBTVFJJTkdfVE9LRU4gKFNU Ul9HRVRfSEVMUF9BQ1BJVklFVyksDQo+ICsgICAgICAgIGdTaGVsbEFjcGlWaWV3SGlpSGFuZGxl LA0KPiArICAgICAgICBMImFjcGl2aWV3Ig0KPiArICAgICAgICApOw0KPiArICAgIH0gZWxzZSBp ZiAoU2hlbGxDb21tYW5kTGluZUdldEZsYWcgKFBhY2thZ2UsIEwiLXMiKSAmJg0KPiArICAgICAg ICAgICAgICAgU2hlbGxDb21tYW5kTGluZUdldFZhbHVlIChQYWNrYWdlLCBMIi1zIikgPT0gTlVM TCkgew0KPiArICAgICAgU2hlbGxQcmludEhpaUV4ICgNCj4gKyAgICAgICAgLTEsDQo+ICsgICAg ICAgIC0xLA0KPiArICAgICAgICBOVUxMLA0KPiArICAgICAgICBTVFJJTkdfVE9LRU4gKFNUUl9H RU5fTk9fVkFMVUUpLA0KPiArICAgICAgICBnU2hlbGxBY3BpVmlld0hpaUhhbmRsZSwNCj4gKyAg ICAgICAgTCJhY3BpdmlldyIsDQo+ICsgICAgICAgIEwiLXMiDQo+ICsgICAgICAgICk7DQo+ICsg ICAgICBTaGVsbFN0YXR1cyA9IFNIRUxMX0lOVkFMSURfUEFSQU1FVEVSOw0KPiArICAgIH0gZWxz ZSBpZiAoKFNoZWxsQ29tbWFuZExpbmVHZXRGbGFnIChQYWNrYWdlLCBMIi1zIikgJiYNCj4gKyAg ICAgICAgICAgICAgICBTaGVsbENvbW1hbmRMaW5lR2V0RmxhZyAoUGFja2FnZSwgTCItbCIpKSkg ew0KPiArICAgICAgU2hlbGxQcmludEhpaUV4ICgNCj4gKyAgICAgICAgLTEsDQo+ICsgICAgICAg IC0xLA0KPiArICAgICAgICBOVUxMLA0KPiArICAgICAgICBTVFJJTkdfVE9LRU4gKFNUUl9HRU5f VE9PX01BTlkpLA0KPiArICAgICAgICBnU2hlbGxBY3BpVmlld0hpaUhhbmRsZSwNCj4gKyAgICAg ICAgTCJhY3BpdmlldyINCj4gKyAgICAgICAgKTsNCj4gKyAgICAgIFNoZWxsU3RhdHVzID0gU0hF TExfSU5WQUxJRF9QQVJBTUVURVI7DQo+ICsgICAgfSBlbHNlIGlmIChTaGVsbENvbW1hbmRMaW5l R2V0RmxhZyAoUGFja2FnZSwgTCItaCIpICYmDQo+ICsgICAgICAgICAgICAgICBTaGVsbENvbW1h bmRMaW5lR2V0VmFsdWUgKFBhY2thZ2UsIEwiLWgiKSA9PSBOVUxMKSB7DQo+ICsgICAgICAgIFNo ZWxsUHJpbnRIaWlFeCAoDQo+ICsgICAgICAgICAgLTEsDQo+ICsgICAgICAgICAgLTEsDQo+ICsg ICAgICAgICAgTlVMTCwNCj4gKyAgICAgICAgICBTVFJJTkdfVE9LRU4gKFNUUl9HRU5fTk9fVkFM VUUpLA0KPiArICAgICAgICAgIGdTaGVsbEFjcGlWaWV3SGlpSGFuZGxlLA0KPiArICAgICAgICAg IEwiYWNwaXZpZXciLA0KPiArICAgICAgICAgIEwiLWgiDQo+ICsgICAgICAgICAgKTsNCj4gKyAg ICAgICAgU2hlbGxTdGF0dXMgPSBTSEVMTF9JTlZBTElEX1BBUkFNRVRFUjsNCj4gKyAgICB9IGVs c2UgaWYgKFNoZWxsQ29tbWFuZExpbmVHZXRGbGFnIChQYWNrYWdlLCBMIi1kIikgJiYNCj4gKyAg ICAgICAgICAgICAgICFTaGVsbENvbW1hbmRMaW5lR2V0RmxhZyAoUGFja2FnZSwgTCItcyIpKSB7 DQo+ICsgICAgICAgIFNoZWxsUHJpbnRIaWlFeCAoDQo+ICsgICAgICAgICAgLTEsDQo+ICsgICAg ICAgICAgLTEsDQo+ICsgICAgICAgICAgTlVMTCwNCj4gKyAgICAgICAgICBTVFJJTkdfVE9LRU4g KFNUUl9HRU5fTUlTU0lOR19PUFRJT04pLA0KPiArICAgICAgICAgIGdTaGVsbEFjcGlWaWV3SGlp SGFuZGxlLA0KPiArICAgICAgICAgIEwiYWNwaXZpZXciLA0KPiArICAgICAgICAgIEwiLXMiLA0K PiArICAgICAgICAgIEwiLWQiDQo+ICsgICAgICAgICAgKTsNCj4gKyAgICAgICAgU2hlbGxTdGF0 dXMgPSBTSEVMTF9JTlZBTElEX1BBUkFNRVRFUjsNCj4gKyAgICB9IGVsc2Ugew0KPiArICAgICAg Ly8gQ2hlY2sgaWYgdGhlIGNvbG91ciBvcHRpb24gaXMgc2V0DQo+ICsgICAgICBUZW1wID0gU2hl bGxDb21tYW5kTGluZUdldFZhbHVlIChQYWNrYWdlLCBMIi1oIik7DQo+ICsgICAgICBpZiAoVGVt cCAhPSBOVUxMKSB7DQo+ICsgICAgICAgIFVuaWNvZGVTdHJUb0FzY2lpU3RyUyAoVGVtcCwgQ29s b3VyT3B0aW9uLCBzaXplb2YgKENvbG91ck9wdGlvbikpOw0KPiArICAgICAgICBpZiAoKEFzY2lp U3RyaUNtcCAoQ29sb3VyT3B0aW9uLCAiT04iKSA9PSAwKSB8fA0KPiArICAgICAgICAgICAgKEFz Y2lpU3RyaUNtcCAoQ29sb3VyT3B0aW9uLCAiVFJVRSIpID09IDApKSB7DQo+ICsgICAgICAgICAg bUNvbG91ckhpZ2hsaWdodGluZyA9IFRSVUU7DQo+ICsgICAgICAgIH0gZWxzZSBpZiAoKEFzY2lp U3RyaUNtcCAoQ29sb3VyT3B0aW9uLCAiT0ZGIikgPT0gMCkgfHwNCj4gKyAgICAgICAgICAgICAg ICAgICAoQXNjaWlTdHJpQ21wIChDb2xvdXJPcHRpb24sICJGQUxTRSIpID09IDApKSB7DQo+ICsg ICAgICAgICAgbUNvbG91ckhpZ2hsaWdodGluZyA9IEZBTFNFOw0KPiArICAgICAgICB9DQo+ICsg ICAgICB9DQo+ICsNCj4gKyAgICAgIGlmIChTaGVsbENvbW1hbmRMaW5lR2V0RmxhZyAoUGFja2Fn ZSwgTCItbCIpKSB7DQo+ICsgICAgICAgIG1SZXBvcnRUeXBlID0gRVJFUE9SVF9UQUJMRV9MSVNU Ow0KPiArICAgICAgfSBlbHNlIHsNCj4gKyAgICAgICAgbVNlbGVjdGVkQWNwaVRhYmxlTmFtZSA9 IFNoZWxsQ29tbWFuZExpbmVHZXRWYWx1ZSAoUGFja2FnZSwgTCItDQo+IHMiKTsNCj4gKyAgICAg ICAgaWYgKG1TZWxlY3RlZEFjcGlUYWJsZU5hbWUgIT0gTlVMTCkgew0KPiArICAgICAgICAgIG1T ZWxlY3RlZEFjcGlUYWJsZSA9IChVSU5UMzIpQ29udmVydFN0clRvQWNwaVNpZ25hdHVyZSAoDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1TZWxlY3RlZEFjcGlU YWJsZU5hbWUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsN Cj4gKyAgICAgICAgICBtUmVwb3J0VHlwZSA9IEVSRVBPUlRfU0VMRUNURUQ7DQo+ICsNCj4gKyAg ICAgICAgICBpZiAoU2hlbGxDb21tYW5kTGluZUdldEZsYWcgKFBhY2thZ2UsIEwiLWQiKSkgIHsN Cj4gKyAgICAgICAgICAgIC8vIENyZWF0ZSBhIHRlbXBvcmFyeSBmaWxlIHRvIGNoZWNrIGlmIHRo ZSBtZWRpYSBpcyB3cml0YWJsZS4NCj4gKyAgICAgICAgICAgIENIQVIxNiBGaWxlTmFtZUJ1ZmZl cltNQVhfRklMRV9OQU1FX0xFTl07DQo+ICsgICAgICAgICAgICBtUmVwb3J0VHlwZSA9IEVSRVBP UlRfRFVNUF9CSU5fRklMRTsNCj4gKw0KPiArICAgICAgICAgICAgVW5pY29kZVNQcmludCAoDQo+ ICsgICAgICAgICAgICAgIEZpbGVOYW1lQnVmZmVyLA0KPiArICAgICAgICAgICAgICBzaXplb2Yg KEZpbGVOYW1lQnVmZmVyKSwNCj4gKyAgICAgICAgICAgICAgTCIuXFwlcyUwNGQudG1wIiwNCj4g KyAgICAgICAgICAgICAgbVNlbGVjdGVkQWNwaVRhYmxlTmFtZSwNCj4gKyAgICAgICAgICAgICAg bUJpblRhYmxlQ291bnQNCj4gKyAgICAgICAgICAgICAgKTsNCj4gKw0KPiArICAgICAgICAgICAg U3RhdHVzID0gU2hlbGxPcGVuRmlsZUJ5TmFtZSAoDQo+ICsgICAgICAgICAgICAgICAgICAgICAg IEZpbGVOYW1lQnVmZmVyLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAmVG1wRHVtcEZpbGVI YW5kbGUsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIEVGSV9GSUxFX01PREVfUkVBRCB8IEVG SV9GSUxFX01PREVfV1JJVEUgfA0KPiArICAgICAgICAgICAgICAgICAgICAgICBFRklfRklMRV9N T0RFX0NSRUFURSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgMA0KPiArICAgICAgICAgICAg ICAgICAgICAgICApOw0KPiArDQo+ICsgICAgICAgICAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMp KSB7DQo+ICsgICAgICAgICAgICAgIFNoZWxsU3RhdHVzID0gU0hFTExfSU5WQUxJRF9QQVJBTUVU RVI7DQo+ICsgICAgICAgICAgICAgIFRtcER1bXBGaWxlSGFuZGxlID0gTlVMTDsNCj4gKyAgICAg ICAgICAgICAgU2hlbGxQcmludEhpaUV4ICgNCj4gKyAgICAgICAgICAgICAgICAtMSwNCj4gKyAg ICAgICAgICAgICAgICAtMSwNCj4gKyAgICAgICAgICAgICAgICBOVUxMLA0KPiArICAgICAgICAg ICAgICAgIFNUUklOR19UT0tFTiAoU1RSX0dFTl9SRUFET05MWV9NRURJQSksDQo+ICsgICAgICAg ICAgICAgICAgZ1NoZWxsQWNwaVZpZXdIaWlIYW5kbGUsDQo+ICsgICAgICAgICAgICAgICAgTCJh Y3BpdmlldyINCj4gKyAgICAgICAgICAgICAgICApOw0KPiArICAgICAgICAgICAgICBnb3RvIERv bmU7DQo+ICsgICAgICAgICAgICB9DQo+ICsgICAgICAgICAgICAvLyBEZWxldGUgVGVtcG9yYXJ5 IGZpbGUuDQo+ICsgICAgICAgICAgICBTaGVsbERlbGV0ZUZpbGUgKCZUbXBEdW1wRmlsZUhhbmRs ZSk7DQo+ICsgICAgICAgICAgfSAvLyAtZA0KPiArICAgICAgICB9IC8vIC1zDQo+ICsgICAgICB9 DQo+ICsNCj4gKyAgICAgIC8vIFBhcnNlIEFDUEkgVGFibGUgaW5mb3JtYXRpb24NCj4gKyAgICAg IFN0YXR1cyA9IEFjcGlWaWV3IChTeXN0ZW1UYWJsZSk7DQo+ICsgICAgICBpZiAoRUZJX0VSUk9S IChTdGF0dXMpKSB7DQo+ICsgICAgICAgIFNoZWxsU3RhdHVzID0gU0hFTExfTk9UX0ZPVU5EOw0K PiArICAgICAgICBnb3RvIERvbmU7DQo+ICsgICAgICB9DQo+ICsgICAgfQ0KPiArICB9DQo+ICsN Cj4gK0RvbmU6DQo+ICsgIGlmIChQYWNrYWdlICE9IE5VTEwpIHsNCj4gKyAgICBTaGVsbENvbW1h bmRMaW5lRnJlZVZhckxpc3QgKFBhY2thZ2UpOw0KPiArICB9DQo+ICsgIHJldHVybiBTaGVsbFN0 YXR1czsNCj4gK30NCj4gZGlmZiAtLWdpdCBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNw aVZpZXdDb21tYW5kTGliL0JncnRQYXJzZXIuYw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNo ZWxsQWNwaVZpZXdDb21tYW5kTGliL0JncnRQYXJzZXIuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0 NA0KPiBpbmRleA0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l NzEyMWJkMmJlZWJlMGFmMzVmNjgxOGRjDQo+IGUwZmNlYzkxOWZiNWVjMg0KPiAtLS0gL2Rldi9u dWxsDQo+ICsrKyBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGli L0JncnRQYXJzZXIuYw0KPiBAQCAtMCwwICsxLDExNSBAQA0KPiArLyoqDQo+ICsgIEJHUlQgdGFi bGUgcGFyc2VyDQo+ICsNCj4gKyAgQ29weXJpZ2h0IChjKSAyMDE3LCBBUk0gTGltaXRlZC4gQWxs IHJpZ2h0cyByZXNlcnZlZC4NCj4gKyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5n IG1hdGVyaWFscw0KPiArICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRo ZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEDQo+IExpY2Vuc2UNCj4gKyAgd2hpY2gg YWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNl bnNlIG1heSBiZQ0KPiBmb3VuZCBhdA0KPiArICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5z ZXMvYnNkLWxpY2Vuc2UucGhwDQo+ICsNCj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQg VU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ICsgIFdJVEhP VVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBF WFBSRVNTIE9SIElNUExJRUQuDQo+ICsNCj4gKyAgQHBhciBSZWZlcmVuY2Uocyk6DQo+ICsgICAg LSBBQ1BJIDYuMiBTcGVjaWZpY2F0aW9uIC0gRXJyYXRhIEEsIFNlcHRlbWJlciAyMDE3DQo+ICsq Ki8NCj4gKw0KPiArI2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQvQWNwaS5oPg0KPiArI2luY2x1 ZGUgPExpYnJhcnkvVWVmaUxpYi5oPg0KPiArI2luY2x1ZGUgIkFjcGlQYXJzZXIuaCINCj4gKyNp bmNsdWRlICJBY3BpVmlldy5oIg0KPiArI2luY2x1ZGUgIkFjcGlUYWJsZVBhcnNlci5oIg0KPiAr DQo+ICsvLyBMb2NhbCB2YXJpYWJsZXMNCj4gK1NUQVRJQyBBQ1BJX0RFU0NSSVBUSU9OX0hFQURF Ul9JTkZPIEFjcGlIZHJJbmZvOw0KPiArDQo+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVz Y3JpYmluZyB0aGUgQUNQSSBCRFJUIFRhYmxlLg0KPiArKi8NCj4gK1NUQVRJQyBDT05TVCBBQ1BJ X1BBUlNFUiBCZ3J0UGFyc2VyW10gPSB7DQo+ICsgIFBBUlNFX0FDUElfSEVBREVSICgmQWNwaUhk ckluZm8pLA0KPiArICB7TCJWZXJzaW9uIiwgMiwgMzYsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5V TEwsIE5VTEx9LA0KPiArICB7TCJTdGF0dXMiLCAxLCAzOCwgTCIweCV4IiwgTlVMTCwgIE5VTEws IE5VTEwsIE5VTEx9LA0KPiArICB7TCJJbWFnZSBUeXBlIiwgMSwgMzksIEwiMHgleCIsIE5VTEws IE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJJbWFnZSBBZGRyZXNzIiwgOCwgNDAsIEwiMHgl bHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiSW1hZ2UgT2Zmc2V0IFgiLCA0 LCA0OCwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJJbWFnZSBPZmZz ZXQgWSIsIDQsIDUyLCBMIiVkIiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0NCj4gK307DQo+ICsN Cj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgQUNQSSBCR1JUIHRhYmxlLg0KPiArICBX aGVuIHRyYWNlIGlzIGVuYWJsZWQgdGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIEJHUlQgdGFibGUg YW5kDQo+ICsgIHRyYWNlcyB0aGUgQUNQSSB0YWJsZSBmaWVsZHMuDQo+ICsNCj4gKyAgVGhpcyBm dW5jdGlvbiBhbHNvIHBhcnNlcyB0aGUgQUNQSSBoZWFkZXIgZm9yIHRoZSBEU0RUIHRhYmxlIGFu ZA0KPiArICBpbnZva2VzIHRoZSBwYXJzZXIgZm9yIHRoZSBBQ1BJIERTRFQgdGFibGUuDQo+ICsN Cj4gKyAgVGhpcyBmdW5jdGlvbiBhbHNvIHBlcmZvcm1zIHZhbGlkYXRpb24gb2YgdGhlIEFDUEkg dGFibGUgZmllbGRzLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFRyYWNlICAgICAgICAgICAgICBJ ZiBUUlVFLCB0cmFjZSB0aGUgQUNQSSBmaWVsZHMuDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAg ICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArICBAcGFy YW0gW2luXSBBY3BpVGFibGVMZW5ndGggICAgTGVuZ3RoIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiAr ICBAcGFyYW0gW2luXSBBY3BpVGFibGVSZXZpc2lvbiAgUmV2aXNpb24gb2YgdGhlIEFDUEkgdGFi bGUuDQo+ICsqLw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtQYXJzZUFjcGlCZ3J0ICgNCj4gKyAg SU4gQk9PTEVBTiBUcmFjZSwNCj4gKyAgSU4gVUlOVDgqICBQdHIsDQo+ICsgIElOIFVJTlQzMiAg QWNwaVRhYmxlTGVuZ3RoLA0KPiArICBJTiBVSU5UOCAgIEFjcGlUYWJsZVJldmlzaW9uDQo+ICsg ICkNCj4gK3sNCj4gKyAgaWYgKCFUcmFjZSkgew0KPiArICAgIHJldHVybjsNCj4gKyAgfQ0KPiAr DQo+ICsgIFBhcnNlQWNwaSAoDQo+ICsgICAgVHJhY2UsDQo+ICsgICAgMCwNCj4gKyAgICAiQkdS VCIsDQo+ICsgICAgUHRyLA0KPiArICAgIEFjcGlUYWJsZUxlbmd0aCwNCj4gKyAgICBQQVJTRVJf UEFSQU1TIChCZ3J0UGFyc2VyKQ0KPiArICAgICk7DQo+ICt9DQo+ICsNCj4gKy8qKiBSZWdpc3Rl ciB0aGUgcGFyc2VyLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dICBJbWFnZUhhbmRsZSAgVGhlIGhh bmRsZSB0byB0aGUgaW1hZ2UuDQo+ICsgIEBwYXJhbSBbaW5dICBTeXN0ZW1UYWJsZSAgUG9pbnRl ciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAg ICAgICAgIFRoZSBwYXJzZXIgaXMgcmVnaXN0ZXJlZC4NCj4gKyAgQHJldHZhbCBFRklfQUxSRUFE WV9TVEFSVEVEICAgVGhlIHBhcnNlciBmb3IgdGhlIEFDUEkgVGFibGUNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaXMgYWxyZWFkeSByZWdpc3RlcmVkLg0KPiArKi8NCj4gK0VG SV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArQmdydFBhcnNlckxpYkNvbnN0cnVjdG9yICgNCj4gKyAg SU4gQ09OU1QgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwNCj4gKyAgSU4g ICAgICAgRUZJX1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0KPiArICApDQo+ICt7 DQo+ICsgIHJldHVybiBSZWdpc3RlclBhcnNlciAoDQo+ICsgICAgICAgICAgIEVGSV9BQ1BJXzZf Ml9CT09UX0dSQVBISUNTX1JFU09VUkNFX1RBQkxFX1NJR05BVFVSRSwNCj4gKyAgICAgICAgICAg UGFyc2VBY3BpQmdydA0KPiArICAgICAgICAgICApOw0KPiArfQ0KPiArDQo+ICsvKiogRGVyZWdp c3RlciB0aGUgcGFyc2VyLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dICBJbWFnZUhhbmRsZSAgVGhl IGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ICsgIEBwYXJhbSBbaW5dICBTeXN0ZW1UYWJsZSAgUG9p bnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1Mg ICAgICAgICAgIFRoZSBwYXJzZXIgaXMgZGVyZWdpc3RlcmVkLg0KPiArICBAcmV0dmFsIEVGSV9O T1RfRk9VTkQgICAgICAgICBUaGUgcGFyc2VyIHdhcyBub3QgcmVnaXN0ZXJlZC4NCj4gKyovDQo+ ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK0JncnRQYXJzZXJMaWJEZXN0cnVjdG9yICgNCj4g KyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwNCj4gKyAg SU4gICAgICAgRUZJX1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0KPiArICApDQo+ ICt7DQo+ICsgIHJldHVybiBEZXJlZ2lzdGVyUGFyc2VyICgNCj4gKyAgICAgICAgICAgRUZJX0FD UElfNl8yX0JPT1RfR1JBUEhJQ1NfUkVTT1VSQ0VfVEFCTEVfU0lHTkFUVVJFDQo+ICsgICAgICAg ICAgICk7DQo+ICt9DQo+IGRpZmYgLS1naXQgYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFj cGlWaWV3Q29tbWFuZExpYi9EYmcyUGFyc2VyLmMNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlT aGVsbEFjcGlWaWV3Q29tbWFuZExpYi9EYmcyUGFyc2VyLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQNCj4gaW5kZXgNCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u ZTg0MmQ0YjlkNWY5NjkxZWUyNzExMjU2NQ0KPiA5ODY0MjFmN2EwNzM0Y2YNCj4gLS0tIC9kZXYv bnVsbA0KPiArKysgYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExp Yi9EYmcyUGFyc2VyLmMNCj4gQEAgLTAsMCArMSwyODEgQEANCj4gKy8qKg0KPiArICBEQkcyIHRh YmxlIHBhcnNlcg0KPiArDQo+ICsgIENvcHlyaWdodCAoYykgMjAxNiAtIDIwMTcsIEFSTSBMaW1p dGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2Nv bXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICsgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUg dW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QNCj4gTGljZW5zZQ0KPiAr ICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2Yg dGhlIGxpY2Vuc2UgbWF5IGJlDQo+IGZvdW5kIGF0DQo+ICsgIGh0dHA6Ly9vcGVuc291cmNlLm9y Zy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gKw0KPiArICBUSEUgUFJPR1JBTSBJUyBESVNU UklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywNCj4g KyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlU SEVSDQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gKw0KPiArICBAcGFyIFJlZmVyZW5jZShzKToN Cj4gKyAgICAtIE1pY3Jvc29mdCBEZWJ1ZyBQb3J0IFRhYmxlIDIgKERCRzIpIFNwZWNpZmljYXRp b24gLSBEZWNlbWJlciAxMCwgMjAxNS4NCj4gKyoqLw0KPiArDQo+ICsjaW5jbHVkZSA8SW5kdXN0 cnlTdGFuZGFyZC9EZWJ1Z1BvcnQyVGFibGUuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlM aWIuaD4NCj4gKyNpbmNsdWRlICJBY3BpUGFyc2VyLmgiDQo+ICsjaW5jbHVkZSAiQWNwaVZpZXcu aCINCj4gKyNpbmNsdWRlICJBY3BpVGFibGVQYXJzZXIuaCINCj4gKw0KPiArLy8gTG9jYWwgdmFy aWFibGVzIHBvaW50aW5nIHRvIHRoZSB0YWJsZSBmaWVsZHMNCj4gK1NUQVRJQyBDT05TVCBVSU5U MzIqIE9mZnNldERiZ0RldmljZUluZm87DQo+ICtTVEFUSUMgQ09OU1QgVUlOVDMyKiBOdW1iZXJE YmdEZXZpY2VJbmZvOw0KPiArU1RBVElDIENPTlNUIFVJTlQxNiogRGJnRGV2SW5mb0xlbjsNCj4g K1NUQVRJQyBDT05TVCBVSU5UOCogIEdhc0NvdW50Ow0KPiArU1RBVElDIENPTlNUIFVJTlQxNiog TmFtZVNwYWNlU3RyaW5nTGVuZ3RoOw0KPiArU1RBVElDIENPTlNUIFVJTlQxNiogTmFtZVNwYWNl U3RyaW5nT2Zmc2V0Ow0KPiArU1RBVElDIENPTlNUIFVJTlQxNiogT0VNRGF0YUxlbmd0aDsNCj4g K1NUQVRJQyBDT05TVCBVSU5UMTYqIE9FTURhdGFPZmZzZXQ7DQo+ICtTVEFUSUMgQ09OU1QgVUlO VDE2KiBCYXNlQWRkclJlZ09mZnNldDsNCj4gK1NUQVRJQyBDT05TVCBVSU5UMTYqIEFkZHJTaXpl T2Zmc2V0Ow0KPiArU1RBVElDIEFDUElfREVTQ1JJUFRJT05fSEVBREVSX0lORk8gQWNwaUhkcklu Zm87DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIFZhbGlkYXRlcyB0aGUgTmFtZVNwYWNlIHN0 cmluZyBsZW5ndGguDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRo ZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArICBAcGFyYW0gW2luXSBDb250ZXh0IFBvaW50ZXIg dG8gY29udGV4dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcuIHRoaXMNCj4gKyAgICAgICAgICAg ICAgICAgICAgICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUgaGVhZGVyLg0K PiArKi8NCj4gK1NUQVRJQw0KPiArVk9JRA0KPiArVmFsaWRhdGVOYW1lU3BhY2VTdHJMZW4gKA0K PiArICBJTiAgVUlOVDgqIFB0ciwNCj4gKyAgSU4gIFZPSUQqICBDb250ZXh0DQo+ICsgICk7DQo+ ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgZGVidWcgZGV2aWNlIGluZm9ybWF0 aW9uIHN0cnVjdHVyZS4NCj4gKw0KPiArICBAcGFyYW0gW2luXSAgUHRyICAgICBQb2ludGVyIHRv IHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArICBAcGFyYW0gW291dF0gTGVuZ3RoICBQb2lu dGVyIGluIHdoaWNoIHRoZSBsZW5ndGggb2YgdGhlIGRlYnVnDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgIGRldmljZSBpbmZvcm1hdGlvbiBpcyByZXR1cm5lZC4NCj4gKyovDQo+ICtTVEFUSUMN Cj4gK1ZPSUQNCj4gK0R1bXBEYmdEZXZpY2VJbmZvICgNCj4gKyAgSU4gIFVJTlQ4KiAgUHRyLA0K PiArICBPVVQgVUlOVDMyKiBMZW5ndGgNCj4gKyAgKTsNCj4gKw0KPiArLy8vIEFuIEFDUElfUEFS U0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIEFDUEkgREJHMiB0YWJsZS4NCj4gK1NUQVRJQyBDT05T VCBBQ1BJX1BBUlNFUiBEYmcyUGFyc2VyW10gPSB7DQo+ICsgIFBBUlNFX0FDUElfSEVBREVSICgm QWNwaUhkckluZm8pLA0KPiArICB7TCJPZmZzZXREYmdEZXZpY2VJbmZvIiwgNCwgMzYsIEwiMHgl eCIsIE5VTEwsDQo+ICsgICAoVk9JRCoqKSZPZmZzZXREYmdEZXZpY2VJbmZvLCBOVUxMLCBOVUxM fSwNCj4gKyAge0wiTnVtYmVyRGJnRGV2aWNlSW5mbyIsIDQsIDQwLCBMIiVkIiwgTlVMTCwNCj4g KyAgIChWT0lEKiopJk51bWJlckRiZ0RldmljZUluZm8sIE5VTEwsIE5VTEx9DQo+ICt9Ow0KPiAr DQo+ICsvLy8gQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgZGVidWcgZGV2aWNl IGluZm9ybWF0aW9uLg0KPiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIERiZ0RldkluZm9QYXJz ZXJbXSA9IHsNCj4gKyAge0wiUmV2aXNpb24iLCAxLCAwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBO VUxMLCBOVUxMfSwNCj4gKyAge0wiTGVuZ3RoIiwgMiwgMSwgTCIlZCIsIE5VTEwsIChWT0lEKiop JkRiZ0RldkluZm9MZW4sIE5VTEwsIE5VTEx9LA0KPiArDQo+ICsgIHtMIkdlbmVyaWMgQWRkcmVz cyBSZWdpc3RlcnMgQ291bnQiLCAxLCAzLCBMIjB4JXgiLCBOVUxMLA0KPiArICAgKFZPSUQqKikm R2FzQ291bnQsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJOYW1lU3BhY2UgU3RyaW5nIExlbmd0aCIs IDIsIDQsIEwiJWQiLCBOVUxMLA0KPiArICAgKFZPSUQqKikmTmFtZVNwYWNlU3RyaW5nTGVuZ3Ro LCBWYWxpZGF0ZU5hbWVTcGFjZVN0ckxlbiwgTlVMTH0sDQo+ICsgIHtMIk5hbWVTcGFjZSBTdHJp bmcgT2Zmc2V0IiwgMiwgNiwgTCIweCV4IiwgTlVMTCwNCj4gKyAgIChWT0lEKiopJk5hbWVTcGFj ZVN0cmluZ09mZnNldCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIk9FTSBEYXRhIExlbmd0aCIsIDIs IDgsIEwiJWQiLCBOVUxMLCAoVk9JRCoqKSZPRU1EYXRhTGVuZ3RoLA0KPiArICAgTlVMTCwgTlVM TH0sDQo+ICsgIHtMIk9FTSBEYXRhIE9mZnNldCIsIDIsIDEwLCBMIjB4JXgiLCBOVUxMLCAoVk9J RCoqKSZPRU1EYXRhT2Zmc2V0LA0KPiArICAgTlVMTCwgTlVMTH0sDQo+ICsNCj4gKyAge0wiUG9y dCBUeXBlIiwgMiwgMTIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7 TCJQb3J0IFN1YlR5cGUiLCAyLCAxNCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0s DQo+ICsgIHtMIlJlc2VydmVkIiwgMiwgMTYsIEwiJXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM fSwNCj4gKw0KPiArICB7TCJCYXNlIEFkZHJlc3MgUmVnaXN0ZXIgT2Zmc2V0IiwgMiwgMTgsIEwi MHgleCIsIE5VTEwsDQo+ICsgICAoVk9JRCoqKSZCYXNlQWRkclJlZ09mZnNldCwgTlVMTCwgTlVM TH0sDQo+ICsgIHtMIkFkZHJlc3MgU2l6ZSBPZmZzZXQiLCAyLCAyMCwgTCIweCV4IiwgTlVMTCwN Cj4gKyAgIChWT0lEKiopJkFkZHJTaXplT2Zmc2V0LCBOVUxMLCBOVUxMfQ0KPiArfTsNCj4gKw0K PiArLyoqIFRoaXMgZnVuY3Rpb24gdmFsaWRhdGVzIHRoZSBOYW1lU3BhY2Ugc3RyaW5nIGxlbmd0 aC4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9m IHRoZSBidWZmZXIuDQo+ICsgIEBwYXJhbSBbaW5dIENvbnRleHQgUG9pbnRlciB0byBjb250ZXh0 IHNwZWNpZmljIGluZm9ybWF0aW9uIGUuZy4gdGhpcw0KPiArICAgICAgICAgICAgICAgICAgICAg IGNvdWxkIGJlIGEgcG9pbnRlciB0byB0aGUgQUNQSSB0YWJsZSBoZWFkZXIuDQo+ICsqLw0KPiAr U1RBVElDDQo+ICtWT0lEDQo+ICtWYWxpZGF0ZU5hbWVTcGFjZVN0ckxlbiAoDQo+ICsgIElOIFVJ TlQ4KiBQdHIsDQo+ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ICsgICkNCj4gK3sNCj4gKyAgVUlO VDE2IE5hbWVTcGFjZVN0ckxlbiA9ICooVUlOVDE2KilQdHI7DQo+ICsgIGlmIChOYW1lU3BhY2VT dHJMZW4gPCAyKSB7DQo+ICsgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gKyAgICBQcmlu dCAoDQo+ICsgICAgICBMIlxuRVJST1I6IE5hbWVzcGFjZVN0cmluZyBMZW5ndGggPSAlZC4gSWYg bm8gTmFtZXNwYWNlIGRldmljZQ0KPiBleGlzdHMsXG4iDQo+ICsgICAgICAgIiAgICB0aGVuIE5h bWVzcGFjZVN0cmluZ1tdIG11c3QgY29udGFpbiBhIHBlcmlvZCAnLiciLA0KPiArICAgICAgTmFt ZVNwYWNlU3RyTGVuDQo+ICsgICAgICApOw0KPiArICB9DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlz IGZ1bmN0aW9uIHBhcnNlcyB0aGUgZGVidWcgZGV2aWNlIGluZm9ybWF0aW9uIHN0cnVjdHVyZS4N Cj4gKw0KPiArICBAcGFyYW0gW2luXSAgUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0 aGUgYnVmZmVyLg0KPiArICBAcGFyYW0gW291dF0gUHRyICAgICBQb2ludGVyIGluIHdoaWNoIHRo ZSBsZW5ndGggb2YgdGhlIGRlYnVnDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGRldmljZSBp bmZvcm1hdGlvbiBpcyByZXR1cm5lZC4NCj4gKyovDQo+ICtTVEFUSUMNCj4gK1ZPSUQNCj4gK0R1 bXBEYmdEZXZpY2VJbmZvICgNCj4gKyAgSU4gIFVJTlQ4KiAgUHRyLA0KPiArICBPVVQgVUlOVDMy KiBMZW5ndGgNCj4gKyAgKQ0KPiArew0KPiArICBVSU5UMTYgIEluZGV4Ow0KPiArICBVSU5UOCog IERhdGFQdHI7DQo+ICsgIFVJTlQzMiogQWRkclNpemU7DQo+ICsNCj4gKyAgLy8gUGFyc2UgdGhl IGRlYnVnIGRldmljZSBpbmZvIHRvIGdldCB0aGUgTGVuZ3RoDQo+ICsgIFBhcnNlQWNwaSAoDQo+ ICsgICAgRkFMU0UsDQo+ICsgICAgMCwNCj4gKyAgICAiRGVidWcgRGV2aWNlIEluZm8iLA0KPiAr ICAgIFB0ciwNCj4gKyAgICAzLCAgLy8gTGVuZ3RoIGlzIDIgYnl0ZXMgc3RhcnRpbmcgYXQgb2Zm c2V0IDENCj4gKyAgICBQQVJTRVJfUEFSQU1TIChEYmdEZXZJbmZvUGFyc2VyKQ0KPiArICAgICk7 DQo+ICsNCj4gKyAgUGFyc2VBY3BpICgNCj4gKyAgICBUUlVFLA0KPiArICAgIDIsDQo+ICsgICAg IkRlYnVnIERldmljZSBJbmZvIiwNCj4gKyAgICBQdHIsDQo+ICsgICAgKkRiZ0RldkluZm9MZW4s DQo+ICsgICAgUEFSU0VSX1BBUkFNUyAoRGJnRGV2SW5mb1BhcnNlcikNCj4gKyAgICApOw0KPiAr DQo+ICsgIC8vIEdBUyBhbmQgQWRkcmVzcyBTaXplDQo+ICsgIEluZGV4ID0gMDsNCj4gKyAgRGF0 YVB0ciA9IFB0ciArICgqQmFzZUFkZHJSZWdPZmZzZXQpOw0KPiArICBBZGRyU2l6ZSA9IChVSU5U MzIqKShQdHIgKyAoKkFkZHJTaXplT2Zmc2V0KSk7DQo+ICsgIHdoaWxlIChJbmRleCA8ICgqR2Fz Q291bnQpKSB7DQo+ICsgICAgUHJpbnRGaWVsZE5hbWUgKDQsIEwiQmFzZUFkZHJlc3NSZWdpc3Rl ciIpOw0KPiArICAgIER1bXBHYXNTdHJ1Y3QgKERhdGFQdHIsIDQpOw0KPiArICAgIFByaW50Rmll bGROYW1lICg0LCBMIkFkZHJlc3MgU2l6ZSIpOw0KPiArICAgIFByaW50IChMIjB4JXhcbiIsIEFk ZHJTaXplW0luZGV4XSk7DQo+ICsgICAgRGF0YVB0ciArPSBHQVNfTEVOR1RIOw0KPiArICAgIElu ZGV4Kys7DQo+ICsgIH0NCj4gKw0KPiArICAvLyBOYW1lU3BhY2UgU3RyaW5nDQo+ICsgIEluZGV4 ID0gMDsNCj4gKyAgRGF0YVB0ciA9IFB0ciArICgqTmFtZVNwYWNlU3RyaW5nT2Zmc2V0KTsNCj4g KyAgUHJpbnRGaWVsZE5hbWUgKDQsIEwiTmFtZVNwYWNlIFN0cmluZyIpOw0KPiArICB3aGlsZSAo SW5kZXggPCAoKk5hbWVTcGFjZVN0cmluZ0xlbmd0aCkpIHsNCj4gKyAgICBQcmludCAoTCIlYyIs IERhdGFQdHJbSW5kZXgrK10pOw0KPiArICB9DQo+ICsgIFByaW50IChMIlxuIik7DQo+ICsNCj4g KyAgLy8gT0VNIERhdGENCj4gKyAgSW5kZXggPSAwOw0KPiArICBEYXRhUHRyID0gUHRyICsgKCpP RU1EYXRhT2Zmc2V0KTsNCj4gKyAgUHJpbnRGaWVsZE5hbWUgKDQsIEwiT0VNIERhdGEiKTsNCj4g KyAgd2hpbGUgKEluZGV4IDwgKCpPRU1EYXRhTGVuZ3RoKSkgew0KPiArICAgIFByaW50IChMIiV4 ICIsIERhdGFQdHJbSW5kZXgrK10pOw0KPiArICAgIGlmICgoSW5kZXggJiA3KSA9PSAwKSB7DQo+ ICsgICAgICBQcmludCAoTCJcbiUtKnMgICAiLCBPVVRQVVRfRklFTERfQ09MVU1OX1dJRFRILCBM IiIpOw0KPiArICAgIH0NCj4gKyAgfQ0KPiArDQo+ICsgICpMZW5ndGggPSAqRGJnRGV2SW5mb0xl bjsNCj4gK30NCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBBQ1BJIERCRzIg dGFibGUuDQo+ICsgIFdoZW4gdHJhY2UgaXMgZW5hYmxlZCB0aGlzIGZ1bmN0aW9uIHBhcnNlcyB0 aGUgREJHMiB0YWJsZSBhbmQNCj4gKyAgdHJhY2VzIHRoZSBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4g Kw0KPiArICBUaGlzIGZ1bmN0aW9uIGFsc28gcGVyZm9ybXMgdmFsaWRhdGlvbiBvZiB0aGUgQUNQ SSB0YWJsZSBmaWVsZHMuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gVHJhY2UgICAgICAgICAgICAg IElmIFRSVUUsIHRyYWNlIHRoZSBBQ1BJIGZpZWxkcy4NCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAg ICAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsgIEBw YXJhbSBbaW5dIEFjcGlUYWJsZUxlbmd0aCAgICBMZW5ndGggb2YgdGhlIEFDUEkgdGFibGUuDQo+ ICsgIEBwYXJhbSBbaW5dIEFjcGlUYWJsZVJldmlzaW9uICBSZXZpc2lvbiBvZiB0aGUgQUNQSSB0 YWJsZS4NCj4gKyovDQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gK1BhcnNlQWNwaURiZzIgKA0KPiAr ICBJTiBCT09MRUFOIFRyYWNlLA0KPiArICBJTiBVSU5UOCogIFB0ciwNCj4gKyAgSU4gVUlOVDMy ICBBY3BpVGFibGVMZW5ndGgsDQo+ICsgIElOIFVJTlQ4ICAgQWNwaVRhYmxlUmV2aXNpb24NCj4g KyAgKQ0KPiArew0KPiArICBVSU5UMzIgT2Zmc2V0Ow0KPiArICBVSU5UMzIgRGJnRGV2aWNlSW5m b0xlbmd0aDsNCj4gKyAgVUlOVDgqIERldkluZm9QdHI7DQo+ICsNCj4gKyAgaWYgKCFUcmFjZSkg ew0KPiArICAgIHJldHVybjsNCj4gKyAgfQ0KPiArDQo+ICsgIE9mZnNldCA9IFBhcnNlQWNwaSAo DQo+ICsgICAgICAgICAgICAgVFJVRSwNCj4gKyAgICAgICAgICAgICAwLA0KPiArICAgICAgICAg ICAgICJEQkcyIiwNCj4gKyAgICAgICAgICAgICBQdHIsDQo+ICsgICAgICAgICAgICAgQWNwaVRh YmxlTGVuZ3RoLA0KPiArICAgICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKERiZzJQYXJzZXIpDQo+ ICsgICAgICAgICAgICAgKTsNCj4gKyAgRGV2SW5mb1B0ciA9IFB0ciArIE9mZnNldDsNCj4gKw0K PiArICB3aGlsZSAoT2Zmc2V0IDwgQWNwaVRhYmxlTGVuZ3RoKSB7DQo+ICsgICAgRHVtcERiZ0Rl dmljZUluZm8gKA0KPiArICAgICAgRGV2SW5mb1B0ciwNCj4gKyAgICAgICZEYmdEZXZpY2VJbmZv TGVuZ3RoDQo+ICsgICAgICApOw0KPiArICAgIE9mZnNldCArPSBEYmdEZXZpY2VJbmZvTGVuZ3Ro Ow0KPiArICAgIERldkluZm9QdHIgKz0gRGJnRGV2aWNlSW5mb0xlbmd0aDsNCj4gKyAgfQ0KPiAr fQ0KPiArDQo+ICsvKiogUmVnaXN0ZXIgdGhlIHBhcnNlci4NCj4gKw0KPiArICBAcGFyYW0gW2lu XSAgSW1hZ2VIYW5kbGUgIFRoZSBoYW5kbGUgdG8gdGhlIGltYWdlLg0KPiArICBAcGFyYW0gW2lu XSAgU3lzdGVtVGFibGUgIFBvaW50ZXIgdG8gdGhlIFN5c3RlbSBUYWJsZS4NCj4gKw0KPiArICBA cmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgcGFyc2VyIGlzIHJlZ2lzdGVyZWQuDQo+ ICsgIEByZXR2YWwgRUZJX0FMUkVBRFlfU1RBUlRFRCAgIFRoZSBwYXJzZXIgZm9yIHRoZSBBQ1BJ IFRhYmxlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGFscmVhZHkgcmVn aXN0ZXJlZC4NCj4gKyovDQo+ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK0RiZzJQYXJzZXJM aWJDb25zdHJ1Y3RvciAoDQo+ICsgIElOIENPTlNUIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAg SW1hZ2VIYW5kbGUsDQo+ICsgIElOICAgICAgIEVGSV9TWVNURU1fVEFCTEUgICogQ09OU1QgU3lz dGVtVGFibGUNCj4gKyAgKQ0KPiArew0KPiArICByZXR1cm4gUmVnaXN0ZXJQYXJzZXIgKA0KPiAr ICAgICAgICAgICBFRklfQUNQSV82XzJfREVCVUdfUE9SVF8yX1RBQkxFX1NJR05BVFVSRSwNCj4g KyAgICAgICAgICAgUGFyc2VBY3BpRGJnMg0KPiArICAgICAgICAgICApOw0KPiArfQ0KPiArDQo+ ICsvKiogRGVyZWdpc3RlciB0aGUgcGFyc2VyLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dICBJbWFn ZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ICsgIEBwYXJhbSBbaW5dICBTeXN0 ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KPiArDQo+ICsgIEByZXR2YWwg RUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgZGVyZWdpc3RlcmVkLg0KPiArICBA cmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICBUaGUgcGFyc2VyIHdhcyBub3QgcmVnaXN0ZXJl ZC4NCj4gKyovDQo+ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK0RiZzJQYXJzZXJMaWJEZXN0 cnVjdG9yICgNCj4gKyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICBJbWFnZUhh bmRsZSwNCj4gKyAgSU4gICAgICAgRUZJX1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJs ZQ0KPiArICApDQo+ICt7DQo+ICsgIHJldHVybiBEZXJlZ2lzdGVyUGFyc2VyICgNCj4gKyAgICAg ICAgICAgRUZJX0FDUElfNl8yX0RFQlVHX1BPUlRfMl9UQUJMRV9TSUdOQVRVUkUNCj4gKyAgICAg ICAgICAgKTsNCj4gK30NCj4gZGlmZiAtLWdpdCBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxs QWNwaVZpZXdDb21tYW5kTGliL0RzZHRQYXJzZXIuYw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVm aVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL0RzZHRQYXJzZXIuYw0KPiBuZXcgZmlsZSBtb2RlIDEw MDY0NA0KPiBpbmRleA0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw Li4zYTFhNTNkODc1MjI3NDI3ZTAyYjMwMDkyDQo+IDc0NmE3ODA3ZTAwOWE2NQ0KPiAtLS0gL2Rl di9udWxsDQo+ICsrKyBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5k TGliL0RzZHRQYXJzZXIuYw0KPiBAQCAtMCwwICsxLDkxIEBADQo+ICsvKioNCj4gKyAgRFNEVCB0 YWJsZSBwYXJzZXINCj4gKw0KPiArICBDb3B5cmlnaHQgKGMpIDIwMTYgLSAyMDE3LCBBUk0gTGlt aXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNj b21wYW55aW5nIG1hdGVyaWFscw0KPiArICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxl IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEDQo+IExpY2Vuc2UNCj4g KyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9m IHRoZSBsaWNlbnNlIG1heSBiZQ0KPiBmb3VuZCBhdA0KPiArICBodHRwOi8vb3BlbnNvdXJjZS5v cmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ICsNCj4gKyAgVEhFIFBST0dSQU0gSVMgRElT VFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ ICsgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJ VEhFUg0KPiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ICsNCj4gKyAgQHBhciBSZWZlcmVuY2Uocyk6 DQo+ICsgICAgLSBBQ1BJIDYuMiBTcGVjaWZpY2F0aW9uIC0gRXJyYXRhIEEsIFNlcHRlbWJlciAy MDE3DQo+ICsqKi8NCj4gKw0KPiArI2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQvQWNwaS5oPg0K PiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaUxpYi5oPg0KPiArI2luY2x1ZGUgIkFjcGlQYXJzZXIu aCINCj4gKyNpbmNsdWRlICJBY3BpVmlldy5oIg0KPiArI2luY2x1ZGUgIkFjcGlUYWJsZVBhcnNl ci5oIg0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIEFDUEkgRFNEVCB0YWJs ZS4NCj4gKyAgV2hlbiB0cmFjZSBpcyBlbmFibGVkIHRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBE U0RUIHRhYmxlIGFuZA0KPiArICB0cmFjZXMgdGhlIEFDUEkgdGFibGUgZmllbGRzLg0KPiArICBG b3IgdGhlIERTRFQgdGFibGUgb25seSB0aGUgQUNQSSBoZWFkZXIgZmllbGRzIGFyZSBwYXJzZWQg YW5kDQo+ICsgIHRyYWNlZC4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBUcmFjZSAgICAgICAgICAg ICAgSWYgVFJVRSwgdHJhY2UgdGhlIEFDUEkgZmllbGRzLg0KPiArICBAcGFyYW0gW2luXSBQdHIg ICAgICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gKyAg QHBhcmFtIFtpbl0gQWNwaVRhYmxlTGVuZ3RoICAgIExlbmd0aCBvZiB0aGUgQUNQSSB0YWJsZS4N Cj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlUmV2aXNpb24gIFJldmlzaW9uIG9mIHRoZSBBQ1BJ IHRhYmxlLg0KPiArKi8NCj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArUGFyc2VBY3BpRHNkdCAoDQo+ ICsgIElOIEJPT0xFQU4gVHJhY2UsDQo+ICsgIElOIFVJTlQ4KiAgUHRyLA0KPiArICBJTiBVSU5U MzIgIEFjcGlUYWJsZUxlbmd0aCwNCj4gKyAgSU4gVUlOVDggICBBY3BpVGFibGVSZXZpc2lvbg0K PiArICApDQo+ICt7DQo+ICsNCj4gKyAgaWYgKCFUcmFjZSkgew0KPiArICAgIHJldHVybjsNCj4g KyAgfQ0KPiArDQo+ICsgIER1bXBBY3BpSGVhZGVyIChQdHIpOw0KPiArfQ0KPiArDQo+ICsvKiog UmVnaXN0ZXIgdGhlIHBhcnNlci4NCj4gKw0KPiArICBAcGFyYW0gW2luXSAgSW1hZ2VIYW5kbGUg IFRoZSBoYW5kbGUgdG8gdGhlIGltYWdlLg0KPiArICBAcGFyYW0gW2luXSAgU3lzdGVtVGFibGUg IFBvaW50ZXIgdG8gdGhlIFN5c3RlbSBUYWJsZS4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUND RVNTICAgICAgICAgICBUaGUgcGFyc2VyIGlzIHJlZ2lzdGVyZWQuDQo+ICsgIEByZXR2YWwgRUZJ X0FMUkVBRFlfU1RBUlRFRCAgIFRoZSBwYXJzZXIgZm9yIHRoZSBBQ1BJIFRhYmxlDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGFscmVhZHkgcmVnaXN0ZXJlZC4NCj4gKyov DQo+ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK0RzZHRQYXJzZXJMaWJDb25zdHJ1Y3RvciAo DQo+ICsgIElOIENPTlNUIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgSW1hZ2VIYW5kbGUsDQo+ ICsgIElOICAgICAgIEVGSV9TWVNURU1fVEFCTEUgICogQ09OU1QgU3lzdGVtVGFibGUNCj4gKyAg KQ0KPiArew0KPiArICByZXR1cm4gUmVnaXN0ZXJQYXJzZXIgKA0KPiArDQo+IEVGSV9BQ1BJXzZf Ml9ESUZGRVJFTlRJQVRFRF9TWVNURU1fREVTQ1JJUFRJT05fVEFCTEVfU0lHTkFUVVJFLA0KPiAr ICAgICAgICAgICBQYXJzZUFjcGlEc2R0DQo+ICsgICAgICAgICAgICk7DQo+ICt9DQo+ICsNCj4g Ky8qKiBEZXJlZ2lzdGVyIHRoZSBwYXJzZXIuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gIEltYWdl SGFuZGxlICBUaGUgaGFuZGxlIHRvIHRoZSBpbWFnZS4NCj4gKyAgQHBhcmFtIFtpbl0gIFN5c3Rl bVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUuDQo+ICsNCj4gKyAgQHJldHZhbCBF RklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNlciBpcyBkZXJlZ2lzdGVyZWQuDQo+ICsgIEBy ZXR2YWwgRUZJX05PVF9GT1VORCAgICAgICAgIFRoZSBwYXJzZXIgd2FzIG5vdCByZWdpc3RlcmVk Lg0KPiArKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArRHNkdFBhcnNlckxpYkRlc3Ry dWN0b3IgKA0KPiArICBJTiBDT05TVCBFRklfSEFORExFICAgICAgICAgICAgICAgIEltYWdlSGFu ZGxlLA0KPiArICBJTiAgICAgICBFRklfU1lTVEVNX1RBQkxFICAqIENPTlNUIFN5c3RlbVRhYmxl DQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIERlcmVnaXN0ZXJQYXJzZXIgKA0KPiArDQo+IEVG SV9BQ1BJXzZfMl9ESUZGRVJFTlRJQVRFRF9TWVNURU1fREVTQ1JJUFRJT05fVEFCTEVfU0lHTkFU VVJFDQo+ICsgICAgICAgICAgICk7DQo+ICt9DQo+IGRpZmYgLS1naXQgYS9TaGVsbFBrZy9MaWJy YXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9GYWR0UGFyc2VyLmMNCj4gYi9TaGVsbFBr Zy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9GYWR0UGFyc2VyLmMNCj4gbmV3 IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXgNCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMC4uZDMxMzgyNTVlZmQ4YWNkMThlMTZhMTA0Nw0KPiBlNTU4YzBmMGI4NDU5 MWUNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFj cGlWaWV3Q29tbWFuZExpYi9GYWR0UGFyc2VyLmMNCj4gQEAgLTAsMCArMSwzMDQgQEANCj4gKy8q Kg0KPiArICBGQURUIHRhYmxlIHBhcnNlcg0KPiArDQo+ICsgIENvcHlyaWdodCAoYykgMjAxNiAt IDIwMTcsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArICBUaGlzIHByb2dy YW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICsgIGFyZSBsaWNlbnNlZCBhbmQg bWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QN Cj4gTGljZW5zZQ0KPiArICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRo ZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlDQo+IGZvdW5kIGF0DQo+ICsgIGh0dHA6 Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gKw0KPiArICBUSEUg UFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElT Ig0KPiBCQVNJUywNCj4gKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBP RiBBTlkgS0lORCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gKw0KPiArICBAcGFy IFJlZmVyZW5jZShzKToNCj4gKyAgICAtIEFDUEkgNi4yIFNwZWNpZmljYXRpb24gLSBFcnJhdGEg QSwgU2VwdGVtYmVyIDIwMTcNCj4gKyoqLw0KPiArDQo+ICsjaW5jbHVkZSA8SW5kdXN0cnlTdGFu ZGFyZC9BY3BpLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpTGliLmg+DQo+ICsjaW5jbHVk ZSAiQWNwaVBhcnNlci5oIg0KPiArI2luY2x1ZGUgIkFjcGlWaWV3LmgiDQo+ICsjaW5jbHVkZSAi QWNwaVRhYmxlUGFyc2VyLmgiDQo+ICsNCj4gKy8vIExvY2FsIHZhcmlhYmxlcw0KPiArU1RBVElD IENPTlNUIFVJTlQzMiogRHNkdEFkZHJlc3M7DQo+ICtTVEFUSUMgQ09OU1QgVUlOVDY0KiBYX0Rz ZHRBZGRyZXNzOw0KPiArU1RBVElDIENPTlNUIFVJTlQ4KiAgRmFkdE1pbm9yUmV2aXNpb247DQo+ ICtTVEFUSUMgQUNQSV9ERVNDUklQVElPTl9IRUFERVJfSU5GTyBBY3BpSGRySW5mbzsNCj4gKw0K PiArLyoqIEEgbWFjcm8gZGVmaW5pbmcgdGhlIEhhcmR3YXJlIHJlZHVjZWQgQUNQSSBmbGFnDQo+ ICsqLw0KPiArI2RlZmluZSBIV19SRURVQ0VEX0FDUEkgICBCSVQyMA0KPiArDQo+ICsvLyBGb3J3 YXJkIGRlY2xhcmF0aW9ucw0KPiArQ09OU1QgQUNQSV9ERVNDUklQVElPTl9IRUFERVJfSU5GTyog Q09OU1QNCj4gK0dldEFjcGlYc2R0SGVhZGVySW5mbyAoDQo+ICsgIFZPSUQNCj4gKyk7DQo+ICsN Cj4gK1NUQVRJQw0KPiArVk9JRA0KPiArVmFsaWRhdGVGaXJtd2FyZUN0cmwgKA0KPiArICBJTiBV SU5UOCogUHRyLA0KPiArICBJTiBWT0lEKiAgQ29udGV4dA0KPiArKTsNCj4gKw0KPiArU1RBVElD DQo+ICtWT0lEDQo+ICtWYWxpZGF0ZVhGaXJtd2FyZUN0cmwgKA0KPiArICBJTiBVSU5UOCogUHRy LA0KPiArICBJTiBWT0lEKiAgQ29udGV4dA0KPiArKTsNCj4gKw0KPiArU1RBVElDDQo+ICtWT0lE DQo+ICtWYWxpZGF0ZUZsYWdzICgNCj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gKyAgSU4gVk9JRCog IENvbnRleHQNCj4gKyk7DQo+ICsNCj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmli aW5nIHRoZSBBQ1BJIEZBRFQgVGFibGUuDQo+ICsqLw0KPiArU1RBVElDIENPTlNUIEFDUElfUEFS U0VSIEZhZHRQYXJzZXJbXSA9IHsNCj4gKyAgUEFSU0VfQUNQSV9IRUFERVIgKCZBY3BpSGRySW5m byksDQo+ICsgIHtMIkZJUk1XQVJFX0NUUkwiLCA0LCAzNiwgTCIweCV4IiwgTlVMTCwgTlVMTCwg VmFsaWRhdGVGaXJtd2FyZUN0cmwsDQo+IE5VTEx9LA0KPiArICB7TCJEU0RUIiwgNCwgNDAsIEwi MHgleCIsIE5VTEwsIChWT0lEKiopJkRzZHRBZGRyZXNzLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wi UmVzZXJ2ZWQiLCAxLCA0NCwgTCIleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7 TCJQcmVmZXJyZWRfUE1fUHJvZmlsZSIsIDEsIDQ1LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxM LCBOVUxMfSwNCj4gKyAge0wiU0NJX0lOVCIsIDIsIDQ2LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBO VUxMLCBOVUxMfSwNCj4gKyAge0wiU01JX0NNRCIsIDQsIDQ4LCBMIjB4JXgiLCBOVUxMLCBOVUxM LCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiQUNQSV9FTkFCTEUiLCAxLCA1MiwgTCIweCV4IiwgTlVM TCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkFDUElfRElTQUJMRSIsIDEsIDUzLCBMIjB4 JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUzRCSU9TX1JFUSIsIDEsIDU0 LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUFNUQVRFX0NOVCIs IDEsIDU1LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUE0xYV9F VlRfQkxLIiwgNCwgNTYsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7 TCJQTTFiX0VWVF9CTEsiLCA0LCA2MCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0s DQo+ICsgIHtMIlBNMWFfQ05UX0JMSyIsIDQsIDY0LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxM LCBOVUxMfSwNCj4gKyAge0wiUE0xYl9DTlRfQkxLIiwgNCwgNjgsIEwiMHgleCIsIE5VTEwsIE5V TEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJQTTJfQ05UX0JMSyIsIDQsIDcyLCBMIjB4JXgiLCBO VUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUE1fVE1SX0JMSyIsIDQsIDc2LCBMIjB4 JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiR1BFMF9CTEsiLCA0LCA4MCwg TCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkdQRTFfQkxLIiwgNCwg ODQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJQTTFfRVZUX0xF TiIsIDEsIDg4LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUE0x X0NOVF9MRU4iLCAxLCA4OSwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsg IHtMIlBNMl9DTlRfTEVOIiwgMSwgOTAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9 LA0KPiArICB7TCJQTV9UTVJfTEVOIiwgMSwgOTEsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEws IE5VTEx9LA0KPiArICB7TCJHUEUwX0JMS19MRU4iLCAxLCA5MiwgTCIweCV4IiwgTlVMTCwgTlVM TCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkdQRTFfQkxLX0xFTiIsIDEsIDkzLCBMIjB4JXgiLCBO VUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiR1BFMV9CQVNFIiwgMSwgOTQsIEwiMHgl eCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJDU1RfQ05UIiwgMSwgOTUsIEwi MHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJQX0xWTDJfTEFUIiwgMiwg OTYsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJQX0xWTDNfTEFU IiwgMiwgOTgsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJGTFVT SF9TSVpFIiwgMiwgMTAwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAg e0wiRkxVU0hfU1RSSURFIiwgMiwgMTAyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM fSwNCj4gKyAge0wiRFVUWV9PRkZTRVQiLCAxLCAxMDQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5V TEwsIE5VTEx9LA0KPiArICB7TCJEVVRZX1dJRFRIIiwgMSwgMTA1LCBMIjB4JXgiLCBOVUxMLCBO VUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiREFZX0FMUk0iLCAxLCAxMDYsIEwiMHgleCIsIE5V TEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJNT05fQUxSTSIsIDEsIDEwNywgTCIweCV4 IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkNFTlRVUlkiLCAxLCAxMDgsIEwi MHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJJQVBDX0JPT1RfQVJDSCIs IDIsIDEwOSwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlJlc2Vy dmVkIiwgMSwgMTExLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wi RmxhZ3MiLCA0LCAxMTIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIFZhbGlkYXRlRmxhZ3MsIE5VTEx9 LA0KPiArICB7TCJSRVNFVF9SRUciLCAxMiwgMTE2LCBOVUxMLCBEdW1wR2FzLCBOVUxMLCBOVUxM LCBOVUxMfSwNCj4gKyAge0wiUkVTRVRfVkFMVUUiLCAxLCAxMjgsIEwiMHgleCIsIE5VTEwsIE5V TEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJBUk1fQk9PVF9BUkNIIiwgMiwgMTI5LCBMIjB4JXgi LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiRkFEVCBNaW5vciBWZXJzaW9uIiwg MSwgMTMxLCBMIjB4JXgiLCBOVUxMLA0KPiAoVk9JRCoqKSZGYWR0TWlub3JSZXZpc2lvbiwNCj4g KyAgICBOVUxMLCBOVUxMfSwNCj4gKyAge0wiWF9GSVJNV0FSRV9DVFJMIiwgOCwgMTMyLCBMIjB4 JWx4IiwgTlVMTCwgTlVMTCwNCj4gKyAgICBWYWxpZGF0ZVhGaXJtd2FyZUN0cmwsIE5VTEx9LA0K PiArICB7TCJYX0RTRFQiLCA4LCAxNDAsIEwiMHglbHgiLCBOVUxMLCAoVk9JRCoqKSZYX0RzZHRB ZGRyZXNzLCBOVUxMLA0KPiBOVUxMfSwNCj4gKyAge0wiWF9QTTFhX0VWVF9CTEsiLCAxMiwgMTQ4 LCBOVUxMLCBEdW1wR2FzLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiWF9QTTFiX0VWVF9C TEsiLCAxMiwgMTYwLCBOVUxMLCBEdW1wR2FzLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wi WF9QTTFhX0NOVF9CTEsiLCAxMiwgMTcyLCBOVUxMLCBEdW1wR2FzLCBOVUxMLCBOVUxMLCBOVUxM fSwNCj4gKyAge0wiWF9QTTFiX0NOVF9CTEsiLCAxMiwgMTg0LCBOVUxMLCBEdW1wR2FzLCBOVUxM LCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiWF9QTTJfQ05UX0JMSyIsIDEyLCAxOTYsIE5VTEwsIER1 bXBHYXMsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJYX1BNX1RNUl9CTEsiLCAxMiwgMjA4 LCBOVUxMLCBEdW1wR2FzLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiWF9HUEUwX0JMSyIs IDEyLCAyMjAsIE5VTEwsIER1bXBHYXMsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJYX0dQ RTFfQkxLIiwgMTIsIDIzMiwgTlVMTCwgRHVtcEdhcywgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsg IHtMIlNMRUVQX0NPTlRST0xfUkVHIiwgMTIsIDI0NCwgTlVMTCwgRHVtcEdhcywgTlVMTCwgTlVM TCwgTlVMTH0sDQo+ICsgIHtMIlNMRUVQX1NUQVRVU19SRUciLCAxMiwgMjU2LCBOVUxMLCBEdW1w R2FzLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiSHlwZXJ2aXNvciBWZW5kb3JJZGVudGl0 eSIsIDgsIDI2OCwgTCIlbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfQ0KPiArfTsNCj4gKw0K PiArLyoqIFRoaXMgZnVuY3Rpb24gdmFsaWRhdGVzIHRoZSBGaXJtd2FyZSBDb250cm9sIEZpZWxk Lg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2Yg dGhlIGZpZWxkIGRhdGEuDQo+ICsgIEBwYXJhbSBbaW5dIENvbnRleHQgUG9pbnRlciB0byBjb250 ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9uIGUuZy4gdGhpcw0KPiArICAgICAgICAgICAgICAgICAg ICAgIGNvdWxkIGJlIGEgcG9pbnRlciB0byB0aGUgQUNQSSB0YWJsZSBoZWFkZXIuDQo+ICsqLw0K PiArU1RBVElDDQo+ICtWT0lEDQo+ICtWYWxpZGF0ZUZpcm13YXJlQ3RybCAoDQo+ICsgIElOIFVJ TlQ4KiBQdHIsDQo+ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ICspDQo+ICt7DQo+ICsjaWYgZGVm aW5lZCAoTURFX0NQVV9BUk0pIHx8IGRlZmluZWQgKE1ERV9DUFVfQUFSQ0g2NCkNCj4gKyAgaWYg KCooVUlOVDMyKilQdHIgIT0gMCkgew0KPiArICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7DQo+ ICsgICAgUHJpbnQgKA0KPiArICAgICAgTCJcbkVSUk9SOiBGaXJtd2FyZSBDb250cm9sIG11c3Qg YmUgemVybyBmb3IgQVJNIHBsYXRmb3Jtcy4iDQo+ICsgICAgKTsNCj4gKyAgfQ0KPiArI2VuZGlm DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHZhbGlkYXRlcyB0aGUgWF9GaXJtd2Fy ZSBDb250cm9sIEZpZWxkLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0 byB0aGUgc3RhcnQgb2YgdGhlIGZpZWxkIGRhdGEuDQo+ICsgIEBwYXJhbSBbaW5dIENvbnRleHQg UG9pbnRlciB0byBjb250ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9uIGUuZy4gdGhpcw0KPiArICAg ICAgICAgICAgICAgICAgICAgIGNvdWxkIGJlIGEgcG9pbnRlciB0byB0aGUgQUNQSSB0YWJsZSBo ZWFkZXIuDQo+ICsqLw0KPiArU1RBVElDDQo+ICtWT0lEDQo+ICtWYWxpZGF0ZVhGaXJtd2FyZUN0 cmwgKA0KPiArICBJTiBVSU5UOCogUHRyLA0KPiArICBJTiBWT0lEKiAgQ29udGV4dA0KPiArKQ0K PiArew0KPiArI2lmIGRlZmluZWQgKE1ERV9DUFVfQVJNKSB8fCBkZWZpbmVkIChNREVfQ1BVX0FB UkNINjQpDQo+ICsgIGlmICgqKFVJTlQ2NCopUHRyICE9IDApIHsNCj4gKyAgICBJbmNyZW1lbnRF cnJvckNvdW50ICgpOw0KPiArICAgIFByaW50ICgNCj4gKyAgICAgIEwiXG5FUlJPUjogWCBGaXJt d2FyZSBDb250cm9sIG11c3QgYmUgemVybyBmb3IgQVJNIHBsYXRmb3Jtcy4iDQo+ICsgICAgKTsN Cj4gKyAgfQ0KPiArI2VuZGlmDQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHZhbGlk YXRlcyB0aGUgZmxhZ3MuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRv IHRoZSBzdGFydCBvZiB0aGUgZmllbGQgZGF0YS4NCj4gKyAgQHBhcmFtIFtpbl0gQ29udGV4dCBQ b2ludGVyIHRvIGNvbnRleHQgc3BlY2lmaWMgaW5mb3JtYXRpb24gZS5nLiB0aGlzDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgY291bGQgYmUgYSBwb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhl YWRlci4NCj4gKyovDQo+ICtTVEFUSUMNCj4gK1ZPSUQNCj4gK1ZhbGlkYXRlRmxhZ3MgKA0KPiAr ICBJTiBVSU5UOCogUHRyLA0KPiArICBJTiBWT0lEKiAgQ29udGV4dA0KPiArKQ0KPiArew0KPiAr I2lmIGRlZmluZWQgKE1ERV9DUFVfQVJNKSB8fCBkZWZpbmVkIChNREVfQ1BVX0FBUkNINjQpDQo+ ICsgIGlmICgoKCooVUlOVDMyKilQdHIpICYgSFdfUkVEVUNFRF9BQ1BJKSA9PSAwKSB7DQo+ICsg ICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gKyAgICBQcmludCAoDQo+ICsgICAgICBMIlxu RVJST1I6IEhXX1JFRFVDRURfQUNQSSBmbGFnIG11c3QgYmUgc2V0IGZvciBBUk0gcGxhdGZvcm1z LiINCj4gKyAgICApOw0KPiArICB9DQo+ICsjZW5kaWYNCj4gK30NCj4gKw0KPiArLyoqIFRoaXMg ZnVuY3Rpb24gcGFyc2VzIHRoZSBBQ1BJIEZBRFQgdGFibGUuDQo+ICsgIFRoaXMgZnVuY3Rpb24g cGFyc2VzIHRoZSBGQURUIHRhYmxlIGFuZCBvcHRpb25hbGx5IHRyYWNlcyB0aGUgQUNQSQ0KPiAr ICB0YWJsZSBmaWVsZHMuDQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBhbHNvIHBhcnNlcyB0aGUg QUNQSSBoZWFkZXIgZm9yIHRoZSBEU0RUIHRhYmxlIGFuZA0KPiArICBpbnZva2VzIHRoZSBwYXJz ZXIgZm9yIHRoZSBBQ1BJIERTRFQgdGFibGUuDQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBhbHNv IHBlcmZvcm1zIHZhbGlkYXRpb24gb2YgdGhlIEFDUEkgdGFibGUgZmllbGRzLg0KPiArDQo+ICsg IEBwYXJhbSBbaW5dIFRyYWNlICAgICAgICAgICAgICBJZiBUUlVFLCB0cmFjZSB0aGUgQUNQSSBm aWVsZHMuDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgICAgICBQb2ludGVyIHRvIHRo ZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVMZW5ndGgg ICAgTGVuZ3RoIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVS ZXZpc2lvbiAgUmV2aXNpb24gb2YgdGhlIEFDUEkgdGFibGUuDQo+ICsqLw0KPiArVk9JRA0KPiAr RUZJQVBJDQo+ICtQYXJzZUFjcGlGYWR0ICgNCj4gKyAgSU4gQk9PTEVBTiBUcmFjZSwNCj4gKyAg SU4gVUlOVDgqICBQdHIsDQo+ICsgIElOIFVJTlQzMiAgQWNwaVRhYmxlTGVuZ3RoLA0KPiArICBJ TiBVSU5UOCAgIEFjcGlUYWJsZVJldmlzaW9uDQo+ICsgICkNCj4gK3sNCj4gKyAgVUlOVDgqICBE c2R0UHRyID0gTlVMTDsNCj4gKw0KPiArICBQYXJzZUFjcGkgKA0KPiArICAgIFRyYWNlLA0KPiAr ICAgIDAsDQo+ICsgICAgIkZBRFQiLA0KPiArICAgIFB0ciwNCj4gKyAgICBBY3BpVGFibGVMZW5n dGgsDQo+ICsgICAgUEFSU0VSX1BBUkFNUyAoRmFkdFBhcnNlcikNCj4gKyAgICApOw0KPiArDQo+ ICsgIGlmIChUcmFjZSkgew0KPiArICAgIFByaW50IChMIlxuU3VtbWFyeTpcbiIpOw0KPiArICAg IFByaW50RmllbGROYW1lICgyLCBMIkZBRFQgVmVyc2lvbiIpOw0KPiArICAgIFByaW50IChMIiVk LiVkXG4iLCAgKkFjcGlIZHJJbmZvLlJldmlzaW9uLCAqRmFkdE1pbm9yUmV2aXNpb24pOw0KPiAr DQo+ICsgICAgaWYgKCpHZXRBY3BpWHNkdEhlYWRlckluZm8gKCktPk9lbVRhYmxlSWQgIT0NCj4g KkFjcGlIZHJJbmZvLk9lbVRhYmxlSWQpIHsNCj4gKyAgICAgIEluY3JlbWVudEVycm9yQ291bnQg KCk7DQo+ICsgICAgICBQcmludCAoTCJFUlJPUjogT0VNIFRhYmxlIElkIGRvZXMgbm90IG1hdGNo IHdpdGggUlNEVC9YU0RULlxuIik7DQo+ICsgICAgfQ0KPiArICB9DQo+ICsNCj4gKyAgLy8gSWYg cGh5c2ljYWwgYWRkcmVzcyBvZiBEU0RUIGlzIHByb3ZpZGVkIHVzZSB0aGUgRFNEVC4NCj4gKyAg aWYgKCpEc2R0QWRkcmVzcyAhPSAwKSB7DQo+ICsgICAgRHNkdFB0ciA9IChVSU5UOCopKFVJTlRO KSgqRHNkdEFkZHJlc3MpOw0KPiArICB9DQo+ICsNCj4gKyAgLy8gSWYgWF9EU0RUIGlzIG5vdCB6 ZXJvIHRoZW4gdXNlIFhfRFNEVCBhbmQgaWdub3JlIERTRFQuDQo+ICsgIGlmICgqWF9Ec2R0QWRk cmVzcyAhPSAwKSB7DQo+ICsgICAgRHNkdFB0ciA9IChVSU5UOCopKFVJTlROKSgqWF9Ec2R0QWRk cmVzcyk7DQo+ICsgIH0NCj4gKw0KPiArICAvLyBCb3RoIERTRFQgYW5kIFhfRFNEVCBjYW5ub3Qg YmUgemVyby4NCj4gKyAgaWYgKERzZHRQdHIgPT0gTlVMTCkgew0KPiArI2lmIGRlZmluZWQgKE1E RV9DUFVfQVJNKSB8fCBkZWZpbmVkIChNREVfQ1BVX0FBUkNINjQpDQo+ICsgICAgaWYgKFRyYWNl KSB7DQo+ICsgICAgICAvLyBUaGUgRFNEVCBUYWJsZSBpcyBtYW5kYXRvcnkgZm9yIEFSTSBzeXN0 ZW1zDQo+ICsgICAgICAvLyBhcyB0aGUgQ1BVIGluZm9ybWF0aW9uIE1VU1QgYmUgcHJlc2VudGVk IGluDQo+ICsgICAgICAvLyB0aGUgRFNEVC4NCj4gKyAgICAgIEluY3JlbWVudEVycm9yQ291bnQg KCk7DQo+ICsgICAgICBQcmludCAoTCJFUlJPUjogQm90aCBYX0RTRFQgYW5kIERTRFQgYXJlIE5V TEwuXG4iKTsNCj4gKyAgICB9DQo+ICsjZW5kaWYNCj4gKyAgICByZXR1cm47DQo+ICsgIH0NCj4g Kw0KPiArICBQcm9jZXNzQWNwaVRhYmxlIChEc2R0UHRyKTsNCj4gK30NCj4gKw0KPiArLyoqIFJl Z2lzdGVyIHRoZSBwYXJzZXIuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gIEltYWdlSGFuZGxlICBU aGUgaGFuZGxlIHRvIHRoZSBpbWFnZS4NCj4gKyAgQHBhcmFtIFtpbl0gIFN5c3RlbVRhYmxlICBQ b2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VT UyAgICAgICAgICAgVGhlIHBhcnNlciBpcyByZWdpc3RlcmVkLg0KPiArICBAcmV0dmFsIEVGSV9B TFJFQURZX1NUQVJURUQgICBUaGUgcGFyc2VyIGZvciB0aGUgQUNQSSBUYWJsZQ0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQuDQo+ICsqLw0K PiArRUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtGYWR0UGFyc2VyTGliQ29uc3RydWN0b3IgKA0K PiArICBJTiBDT05TVCBFRklfSEFORExFICAgICAgICAgICAgICAgIEltYWdlSGFuZGxlLA0KPiAr ICBJTiAgICAgICBFRklfU1lTVEVNX1RBQkxFICAqIENPTlNUIFN5c3RlbVRhYmxlDQo+ICsgICkN Cj4gK3sNCj4gKyAgcmV0dXJuIFJlZ2lzdGVyUGFyc2VyICgNCj4gKyAgICAgICAgICAgRUZJX0FD UElfNl8yX0ZJWEVEX0FDUElfREVTQ1JJUFRJT05fVEFCTEVfU0lHTkFUVVJFLA0KPiArICAgICAg ICAgICBQYXJzZUFjcGlGYWR0DQo+ICsgICAgICAgICAgICk7DQo+ICt9DQo+ICsNCj4gKy8qKiBE ZXJlZ2lzdGVyIHRoZSBwYXJzZXIuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gIEltYWdlSGFuZGxl ICBUaGUgaGFuZGxlIHRvIHRoZSBpbWFnZS4NCj4gKyAgQHBhcmFtIFtpbl0gIFN5c3RlbVRhYmxl ICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VD Q0VTUyAgICAgICAgICAgVGhlIHBhcnNlciBpcyBkZXJlZ2lzdGVyZWQuDQo+ICsgIEByZXR2YWwg RUZJX05PVF9GT1VORCAgICAgICAgIFRoZSBwYXJzZXIgd2FzIG5vdCByZWdpc3RlcmVkLg0KPiAr Ki8NCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArRmFkdFBhcnNlckxpYkRlc3RydWN0b3Ig KA0KPiArICBJTiBDT05TVCBFRklfSEFORExFICAgICAgICAgICAgICAgIEltYWdlSGFuZGxlLA0K PiArICBJTiAgICAgICBFRklfU1lTVEVNX1RBQkxFICAqIENPTlNUIFN5c3RlbVRhYmxlDQo+ICsg ICkNCj4gK3sNCj4gKyAgcmV0dXJuIERlcmVnaXN0ZXJQYXJzZXIgKA0KPiArICAgICAgICAgICBF RklfQUNQSV82XzJfRklYRURfQUNQSV9ERVNDUklQVElPTl9UQUJMRV9TSUdOQVRVUkUNCj4gKyAg ICAgICAgICAgKTsNCj4gK30NCj4gZGlmZiAtLWdpdCBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNo ZWxsQWNwaVZpZXdDb21tYW5kTGliL0d0ZHRQYXJzZXIuYw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkv VWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL0d0ZHRQYXJzZXIuYw0KPiBuZXcgZmlsZSBtb2Rl IDEwMDY0NA0KPiBpbmRleA0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwLi5lNmNkMDI3MDcxM2M5YTFkZjZmOWQyZjM5ZA0KPiBmYTM4MzA4NzA2ZmQyMA0KPiAtLS0g L2Rldi9udWxsDQo+ICsrKyBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21t YW5kTGliL0d0ZHRQYXJzZXIuYw0KPiBAQCAtMCwwICsxLDMzNCBAQA0KPiArLyoqDQo+ICsgIEdU RFQgdGFibGUgcGFyc2VyDQo+ICsNCj4gKyAgQ29weXJpZ2h0IChjKSAyMDE2IC0gMjAxNywgQVJN IExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhl IGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gKyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWls YWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRA0KPiBMaWNlbnNl DQo+ICsgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4 dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gZm91bmQgYXQNCj4gKyAgaHR0cDovL29wZW5zb3Vy Y2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiArDQo+ICsgIFRIRSBQUk9HUkFNIElT IERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+IEJBU0lT LA0KPiArICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5E LCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiArDQo+ICsgIEBwYXIgUmVmZXJlbmNl KHMpOg0KPiArICAgIC0gQUNQSSA2LjIgU3BlY2lmaWNhdGlvbiAtIEVycmF0YSBBLCBTZXB0ZW1i ZXIgMjAxNw0KPiArICAqKi8NCj4gKw0KPiArI2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQvQWNw aS5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaUxpYi5oPg0KPiArI2luY2x1ZGUgIkFjcGlQ YXJzZXIuaCINCj4gKyNpbmNsdWRlICJBY3BpVmlldy5oIg0KPiArI2luY2x1ZGUgIkFjcGlUYWJs ZVBhcnNlci5oIg0KPiArDQo+ICsvLyBMb2NhbCB2YXJpYWJsZXMNCj4gK1NUQVRJQyBDT05TVCBV SU5UMzIqIEd0ZHRQbGF0Zm9ybVRpbWVyQ291bnQ7DQo+ICtTVEFUSUMgQ09OU1QgVUlOVDMyKiBH dGR0UGxhdGZvcm1UaW1lck9mZnNldDsNCj4gK1NUQVRJQyBDT05TVCBVSU5UOCogIFBsYXRmb3Jt VGltZXJUeXBlOw0KPiArU1RBVElDIENPTlNUIFVJTlQxNiogUGxhdGZvcm1UaW1lckxlbmd0aDsN Cj4gK1NUQVRJQyBDT05TVCBVSU5UMzIqIEd0QmxvY2tUaW1lckNvdW50Ow0KPiArU1RBVElDIENP TlNUIFVJTlQzMiogR3RCbG9ja1RpbWVyT2Zmc2V0Ow0KPiArU1RBVElDIENPTlNUIFVJTlQxNiog R3RCbG9ja0xlbmd0aDsNCj4gK1NUQVRJQyBBQ1BJX0RFU0NSSVBUSU9OX0hFQURFUl9JTkZPIEFj cGlIZHJJbmZvOw0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiB2YWxpZGF0ZXMgdGhlIEdUIEJs b2NrIHRpbWVyIGNvdW50Lg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0 byB0aGUgc3RhcnQgb2YgdGhlIGZpZWxkIGRhdGEuDQo+ICsgIEBwYXJhbSBbaW5dIENvbnRleHQg UG9pbnRlciB0byBjb250ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9uIGUuZy4gdGhpcw0KPiArICAg ICAgICAgICAgICAgICAgICAgIGNvdWxkIGJlIGEgcG9pbnRlciB0byB0aGUgQUNQSSB0YWJsZSBo ZWFkZXIuDQo+ICsqLw0KPiArU1RBVElDDQo+ICtWT0lEDQo+ICtWYWxpZGF0ZUd0QmxvY2tUaW1l ckNvdW50ICgNCj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gKyAgSU4gVk9JRCogIENvbnRleHQNCj4g KyAgKTsNCj4gKw0KPiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIEFD UEkgR1REVCBUYWJsZS4NCj4gKyovDQo+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgR3RkdFBh cnNlcltdID0gew0KPiArICBQQVJTRV9BQ1BJX0hFQURFUiAoJkFjcGlIZHJJbmZvKSwNCj4gKyAg e0wiQ250Q29udHJvbEJhc2UgUGh5c2ljYWwgQWRkcmVzcyIsIDgsIDM2LCBMIjB4JWx4IiwgTlVM TCwgTlVMTCwNCj4gKyAgIE5VTEwsIE5VTEx9LA0KPiArICB7TCJSZXNlcnZlZCIsIDQsIDQ0LCBM IjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiU2VjdXJlIEVMMSB0aW1l ciBHU0lWIiwgNCwgNDgsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7 TCJTZWN1cmUgRUwxIHRpbWVyIEZMQUdTIiwgNCwgNTIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5V TEwsIE5VTEx9LA0KPiArDQo+ICsgIHtMIk5vbi1TZWN1cmUgRUwxIHRpbWVyIEdTSVYiLCA0LCA1 NiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIk5vbi1TZWN1cmUg RUwxIHRpbWVyIEZMQUdTIiwgNCwgNjAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9 LA0KPiArDQo+ICsgIHtMIlZpcnR1YWwgdGltZXIgR1NJViIsIDQsIDY0LCBMIjB4JXgiLCBOVUxM LCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiVmlydHVhbCB0aW1lciBGTEFHUyIsIDQsIDY4 LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKw0KPiArICB7TCJOb24tU2Vj dXJlIEVMMiB0aW1lciBHU0lWIiwgNCwgNzIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5V TEx9LA0KPiArICB7TCJOb24tU2VjdXJlIEVMMiB0aW1lciBGTEFHUyIsIDQsIDc2LCBMIjB4JXgi LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKw0KPiArICB7TCJDbnRSZWFkQmFzZSBQaHlz aWNhbCBhZGRyZXNzIiwgOCwgODAsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLA0KPiBOVUxM fSwNCj4gKyAge0wiUGxhdGZvcm0gVGltZXIgQ291bnQiLCA0LCA4OCwgTCIlZCIsIE5VTEwsDQo+ ICsgICAoVk9JRCoqKSZHdGR0UGxhdGZvcm1UaW1lckNvdW50LCBOVUxMLCBOVUxMfSwNCj4gKyAg e0wiUGxhdGZvcm0gVGltZXIgT2Zmc2V0IiwgNCwgOTIsIEwiMHgleCIsIE5VTEwsDQo+ICsgICAo Vk9JRCoqKSZHdGR0UGxhdGZvcm1UaW1lck9mZnNldCwgTlVMTCwgTlVMTH0NCj4gK307DQo+ICsN Cj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBQbGF0Zm9ybSB0aW1l ciBoZWFkZXIuDQo+ICsqLw0KPiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIEd0UGxhdGZvcm1U aW1lckhlYWRlclBhcnNlcltdID0gew0KPiArICB7TCJUeXBlIiwgMSwgMCwgTlVMTCwgTlVMTCwg KFZPSUQqKikmUGxhdGZvcm1UaW1lclR5cGUsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJMZW5ndGgi LCAyLCAxLCBOVUxMLCBOVUxMLCAoVk9JRCoqKSZQbGF0Zm9ybVRpbWVyTGVuZ3RoLCBOVUxMLA0K PiBOVUxMfSwNCj4gKyAge0wiUmVzZXJ2ZWQiLCAxLCAzLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM LCBOVUxMfQ0KPiArfTsNCj4gKw0KPiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJp bmcgdGhlIFBsYXRmb3JtIEdUIEJsb2NrLg0KPiArKi8NCj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BB UlNFUiBHdEJsb2NrUGFyc2VyW10gPSB7DQo+ICsgIHtMIlR5cGUiLCAxLCAwLCBMIiVkIiwgTlVM TCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkxlbmd0aCIsIDIsIDEsIEwiJWQiLCBOVUxM LCAoVk9JRCoqKSZHdEJsb2NrTGVuZ3RoLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUmVzZXJ2ZWQi LCAxLCAzLCBMIiV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlBoeXNpY2Fs IGFkZHJlc3MgKENudEN0bEJhc2UpIiwgOCwgNCwgTCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEws IE5VTEx9LA0KPiArICB7TCJUaW1lciBDb3VudCIsIDQsIDEyLCBMIiVkIiwgTlVMTCwgKFZPSUQq KikmR3RCbG9ja1RpbWVyQ291bnQsDQo+ICsgICBWYWxpZGF0ZUd0QmxvY2tUaW1lckNvdW50LCBO VUxMfSwNCj4gKyAge0wiVGltZXIgT2Zmc2V0IiwgNCwgMTYsIEwiJWQiLCBOVUxMLCAoVk9JRCoq KSZHdEJsb2NrVGltZXJPZmZzZXQsDQo+IE5VTEwsDQo+ICsgICAgTlVMTH0NCj4gK307DQo+ICsN Cj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBHVCBCbG9jayB0aW1l ci4NCj4gKyovDQo+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgR3RCbG9ja1RpbWVyUGFyc2Vy W10gPSB7DQo+ICsgIHtMIkZyYW1lIE51bWJlciIsIDEsIDAsIEwiJWQiLCBOVUxMLCBOVUxMLCBO VUxMLCBOVUxMfSwNCj4gKyAge0wiUmVzZXJ2ZWQiLCAzLCAxLCBMIiV4ICV4ICV4IiwgRHVtcDND aGFycywgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlBoeXNpY2FsIGFkZHJlc3MgKENudEJh c2VYKSIsIDgsIDQsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wi UGh5c2ljYWwgYWRkcmVzcyAoQ250RUwwQmFzZVgpIiwgOCwgMTIsIEwiMHglbHgiLCBOVUxMLCBO VUxMLCBOVUxMLA0KPiArICAgIE5VTEx9LA0KPiArICB7TCJQaHlzaWNhbCBUaW1lciBHU0lWIiwg NCwgMjAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJQaHlzaWNh bCBUaW1lciBGbGFncyIsIDQsIDI0LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwN Cj4gKyAge0wiVmlydHVhbCBUaW1lciBHU0lWIiwgNCwgMjgsIEwiMHgleCIsIE5VTEwsIE5VTEws IE5VTEwsIE5VTEx9LA0KPiArICB7TCJWaXJ0dWFsIFRpbWVyIEZsYWdzIiwgNCwgMzIsIEwiMHgl eCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJDb21tb24gRmxhZ3MiLCA0LCAz NiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0NCj4gK307DQo+ICsNCj4gKy8qKiBB biBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBQbGF0Zm9ybSBXYXRjaGRvZy4NCj4g KyovDQo+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgU0JTQUdlbmVyaWNXYXRjaGRvZ1BhcnNl cltdID0gew0KPiArICB7TCJUeXBlIiwgMSwgMCwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5V TEx9LA0KPiArICB7TCJMZW5ndGgiLCAyLCAxLCBMIiVkIiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TH0sDQo+ICsgIHtMIlJlc2VydmVkIiwgMSwgMywgTCIleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5V TEx9LA0KPiArICB7TCJSZWZyZXNoRnJhbWUgUGh5c2ljYWwgYWRkcmVzcyIsIDgsIDQsIEwiMHgl bHgiLCBOVUxMLCBOVUxMLCBOVUxMLA0KPiBOVUxMfSwNCj4gKyAge0wiQ29udHJvbEZyYW1lIFBo eXNpY2FsIGFkZHJlc3MiLCA4LCAxMiwgTCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEwsDQo+IE5V TEx9LA0KPiArICB7TCJXYXRjaGRvZyBUaW1lciBHU0lWIiwgNCwgMjAsIEwiMHgleCIsIE5VTEws IE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJXYXRjaGRvZyBUaW1lciBGbGFncyIsIDQsIDI0 LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfQ0KPiArfTsNCj4gKw0KPiArLyoqIFRo aXMgZnVuY3Rpb24gdmFsaWRhdGVzIHRoZSBHVCBCbG9jayB0aW1lciBjb3VudC4NCj4gKw0KPiAr ICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBmaWVsZCBk YXRhLg0KPiArICBAcGFyYW0gW2luXSBDb250ZXh0IFBvaW50ZXIgdG8gY29udGV4dCBzcGVjaWZp YyBpbmZvcm1hdGlvbiBlLmcuIHRoaXMNCj4gKyAgICAgICAgICAgICAgICAgICAgICBjb3VsZCBi ZSBhIHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUgaGVhZGVyLg0KPiArKi8NCj4gK1NUQVRJQw0K PiArVk9JRA0KPiArVmFsaWRhdGVHdEJsb2NrVGltZXJDb3VudCAoDQo+ICsgIElOIFVJTlQ4KiBQ dHIsDQo+ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ICsgICkNCj4gK3sNCj4gKyAgVUlOVDMyIEJs b2NrVGltZXJDb3VudCA9ICooVUlOVDMyKilQdHI7DQo+ICsgIGlmIChCbG9ja1RpbWVyQ291bnQg PiA4KSB7DQo+ICsgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gKyAgICBQcmludCAoDQo+ ICsgICAgICBMIlxuRVJST1I6IFRpbWVyIENvdW50ID0gJWQuIE1heCBUaW1lciBDb3VudCBpcyA4 LiIsDQo+ICsgICAgICBCbG9ja1RpbWVyQ291bnQNCj4gKyAgICAgICk7DQo+ICsgIH0NCj4gK30N Cj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBQbGF0Zm9ybSBHVCBCbG9jay4N Cj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRo ZSBHVCBCbG9jayBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBMZW5ndGggIExlbmd0aCBvZiB0aGUg R1QgQmxvY2sgc3RydWN0dXJlLg0KPiArKi8NCj4gK1NUQVRJQw0KPiArVk9JRA0KPiArRHVtcEdU QmxvY2sgKA0KPiArICBJTiBVSU5UOCogUHRyLA0KPiArICBJTiBVSU5UMTYgTGVuZ3RoDQo+ICsg ICkNCj4gK3sNCj4gKyAgVUlOVDMyIEluZGV4Ow0KPiArICBVSU5UMzIgT2Zmc2V0Ow0KPiArICBV SU5UMTYgR1RCbG9ja1RpbWVyTGVuZ3RoOw0KPiArDQo+ICsgIE9mZnNldCA9IFBhcnNlQWNwaSAo DQo+ICsgICAgICAgICAgICAgVFJVRSwNCj4gKyAgICAgICAgICAgICAyLA0KPiArICAgICAgICAg ICAgICJHVCBCbG9jayIsDQo+ICsgICAgICAgICAgICAgUHRyLA0KPiArICAgICAgICAgICAgIExl bmd0aCwNCj4gKyAgICAgICAgICAgICBQQVJTRVJfUEFSQU1TIChHdEJsb2NrUGFyc2VyKQ0KPiAr ICAgICAgICAgICAgICk7DQo+ICsgIEdUQmxvY2tUaW1lckxlbmd0aCA9ICgqR3RCbG9ja0xlbmd0 aCAtIE9mZnNldCkgLyAoKkd0QmxvY2tUaW1lckNvdW50KTsNCj4gKyAgTGVuZ3RoIC09IE9mZnNl dDsNCj4gKw0KPiArICBpZiAoKkd0QmxvY2tUaW1lckNvdW50ICE9IDApIHsNCj4gKyAgICBQdHIg Kz0gKCpHdEJsb2NrVGltZXJPZmZzZXQpOw0KPiArICAgIEluZGV4ID0gMDsNCj4gKyAgICB3aGls ZSAoKEluZGV4IDwgKCpHdEJsb2NrVGltZXJDb3VudCkpICYmIChMZW5ndGggPj0NCj4gR1RCbG9j a1RpbWVyTGVuZ3RoKSkgew0KPiArICAgICAgT2Zmc2V0ID0gUGFyc2VBY3BpICgNCj4gKyAgICAg ICAgICAgICAgICAgVFJVRSwNCj4gKyAgICAgICAgICAgICAgICAgMiwNCj4gKyAgICAgICAgICAg ICAgICAgIkdUIEJsb2NrIFRpbWVyIiwNCj4gKyAgICAgICAgICAgICAgICAgUHRyLA0KPiArICAg ICAgICAgICAgICAgICBHVEJsb2NrVGltZXJMZW5ndGgsDQo+ICsgICAgICAgICAgICAgICAgIFBB UlNFUl9QQVJBTVMgKEd0QmxvY2tUaW1lclBhcnNlcikNCj4gKyAgICAgICAgICAgICAgICAgKTsN Cj4gKyAgICAgIC8vIEluY3JlbWVudCBieSBHVCBCbG9jayBUaW1lciBzdHJ1Y3R1cmUgc2l6ZQ0K PiArICAgICAgUHRyICs9IE9mZnNldDsNCj4gKyAgICAgIExlbmd0aCAtPSBPZmZzZXQ7DQo+ICsg ICAgICBJbmRleCsrOw0KPiArICAgIH0NCj4gKw0KPiArICAgIGlmIChMZW5ndGggIT0gMCkgew0K PiArICAgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gKyAgICAgIFByaW50ICgNCj4gKyAg ICAgICAgTCJFUlJPUjpHVCBCbG9jayBUaW1lciBsZW5ndGggbWlzbWF0Y2guIFVucGFyc2VkICVk IGJ5dGVzLlxuIiwNCj4gKyAgICAgICAgTGVuZ3RoDQo+ICsgICAgICAgICk7DQo+ICsgICAgfQ0K PiArICB9DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgUGxhdGZv cm0gV2F0Y2hkb2cgdGltZXIuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVy IHRvIHRoZSBzdGFydCBvZiB0aGUgd2F0Y2hkb2cgdGltZXIgZGF0YS4NCj4gKyAgQHBhcmFtIFtp bl0gTGVuZ3RoICBMZW5ndGggb2YgdGhlIHdhdGNoZG9nIHRpbWVyIHN0cnVjdHVyZS4NCj4gKyov DQo+ICtTVEFUSUMNCj4gK1ZPSUQNCj4gK0R1bXBXYXRjaGRvZ1RpbWVyICgNCj4gKyAgSU4gVUlO VDgqIFB0ciwNCj4gKyAgSU4gVUlOVDE2IExlbmd0aA0KPiArICApDQo+ICt7DQo+ICsgIFBhcnNl QWNwaSAoDQo+ICsgICAgVFJVRSwNCj4gKyAgICAyLA0KPiArICAgICJTQlNBIEdlbmVyaWMgV2F0 Y2hkb2ciLA0KPiArICAgIFB0ciwNCj4gKyAgICBMZW5ndGgsDQo+ICsgICAgUEFSU0VSX1BBUkFN UyAoU0JTQUdlbmVyaWNXYXRjaGRvZ1BhcnNlcikNCj4gKyAgICApOw0KPiArfQ0KPiArDQo+ICsv KiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIEFDUEkgR1REVCB0YWJsZS4NCj4gKyAgV2hlbiB0 cmFjZSBpcyBlbmFibGVkIHRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBHVERUIHRhYmxlIGFuZA0K PiArICB0cmFjZXMgdGhlIEFDUEkgdGFibGUgZmllbGRzLg0KPiArDQo+ICsgIFRoaXMgZnVuY3Rp b24gYWxzbyBwYXJzZXMgdGhlIGZvbGxvd2luZyBwbGF0Zm9ybSB0aW1lciBzdHJ1Y3R1cmVzOg0K PiArICAgIC0gR1QgQmxvY2sgdGltZXINCj4gKyAgICAtIFdhdGNoZG9nIHRpbWVyDQo+ICsNCj4g KyAgVGhpcyBmdW5jdGlvbiBhbHNvIHBlcmZvcm1zIHZhbGlkYXRpb24gb2YgdGhlIEFDUEkgdGFi bGUgZmllbGRzLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFRyYWNlICAgICAgICAgICAgICBJZiBU UlVFLCB0cmFjZSB0aGUgQUNQSSBmaWVsZHMuDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAg ICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArICBAcGFyYW0g W2luXSBBY3BpVGFibGVMZW5ndGggICAgTGVuZ3RoIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiArICBA cGFyYW0gW2luXSBBY3BpVGFibGVSZXZpc2lvbiAgUmV2aXNpb24gb2YgdGhlIEFDUEkgdGFibGUu DQo+ICsqLw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtQYXJzZUFjcGlHdGR0ICgNCj4gKyAgSU4g Qk9PTEVBTiBUcmFjZSwNCj4gKyAgSU4gVUlOVDgqICBQdHIsDQo+ICsgIElOIFVJTlQzMiAgQWNw aVRhYmxlTGVuZ3RoLA0KPiArICBJTiBVSU5UOCAgIEFjcGlUYWJsZVJldmlzaW9uDQo+ICsgICkN Cj4gK3sNCj4gKyAgVUlOVDMyIEluZGV4Ow0KPiArICBVSU5UOCogVGltZXJQdHI7DQo+ICsNCj4g KyAgaWYgKCFUcmFjZSkgew0KPiArICAgIHJldHVybjsNCj4gKyAgfQ0KPiArDQo+ICsgIFBhcnNl QWNwaSAoDQo+ICsgICAgVFJVRSwNCj4gKyAgICAwLA0KPiArICAgICJHVERUIiwNCj4gKyAgICBQ dHIsDQo+ICsgICAgQWNwaVRhYmxlTGVuZ3RoLA0KPiArICAgIFBBUlNFUl9QQVJBTVMgKEd0ZHRQ YXJzZXIpDQo+ICsgICAgKTsNCj4gKw0KPiArICBpZiAoKkd0ZHRQbGF0Zm9ybVRpbWVyQ291bnQg IT0gMCkgew0KPiArICAgIFRpbWVyUHRyID0gUHRyICsgKCpHdGR0UGxhdGZvcm1UaW1lck9mZnNl dCk7DQo+ICsgICAgSW5kZXggPSAwOw0KPiArICAgIGRvIHsNCj4gKyAgICAgIC8vIFBhcnNlIHRo ZSBQbGF0Zm9ybSBUaW1lciBIZWFkZXINCj4gKyAgICAgIFBhcnNlQWNwaSAoDQo+ICsgICAgICAg IEZBTFNFLA0KPiArICAgICAgICAwLA0KPiArICAgICAgICBOVUxMLA0KPiArICAgICAgICBUaW1l clB0ciwNCj4gKyAgICAgICAgNCwgIC8vIEdUIFBsYXRmb3JtIFRpbWVyIHN0cnVjdHVyZSBoZWFk ZXIgbGVuZ3RoLg0KPiArICAgICAgICBQQVJTRVJfUEFSQU1TIChHdFBsYXRmb3JtVGltZXJIZWFk ZXJQYXJzZXIpDQo+ICsgICAgICAgICk7DQo+ICsgICAgICBzd2l0Y2ggKCpQbGF0Zm9ybVRpbWVy VHlwZSkgew0KPiArICAgICAgICBjYXNlIEVGSV9BQ1BJXzZfMl9HVERUX0dUX0JMT0NLOg0KPiAr ICAgICAgICAgIER1bXBHVEJsb2NrIChUaW1lclB0ciwgKlBsYXRmb3JtVGltZXJMZW5ndGgpOw0K PiArICAgICAgICAgIGJyZWFrOw0KPiArICAgICAgICBjYXNlIEVGSV9BQ1BJXzZfMl9HVERUX1NC U0FfR0VORVJJQ19XQVRDSERPRzoNCj4gKyAgICAgICAgICBEdW1wV2F0Y2hkb2dUaW1lciAoVGlt ZXJQdHIsICpQbGF0Zm9ybVRpbWVyTGVuZ3RoKTsNCj4gKyAgICAgICAgICBicmVhazsNCj4gKyAg ICAgICAgZGVmYXVsdDoNCj4gKyAgICAgICAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiAr ICAgICAgICAgIFByaW50ICgNCj4gKyAgICAgICAgICAgIEwiRVJST1I6IElOVkFMSUQgUGxhdGZv cm0gVGltZXIgVHlwZSA9ICVkXG4iLA0KPiArICAgICAgICAgICAgKlBsYXRmb3JtVGltZXJUeXBl DQo+ICsgICAgICAgICAgICApOw0KPiArICAgICAgICAgIGJyZWFrOw0KPiArICAgICAgfSAvLyBz d2l0Y2gNCj4gKyAgICAgIFRpbWVyUHRyICs9ICgqUGxhdGZvcm1UaW1lckxlbmd0aCk7DQo+ICsg ICAgICBJbmRleCsrOw0KPiArICAgIH0gd2hpbGUgKEluZGV4IDwgKkd0ZHRQbGF0Zm9ybVRpbWVy Q291bnQpOw0KPiArICB9DQo+ICt9DQo+ICsNCj4gKy8qKiBSZWdpc3RlciB0aGUgcGFyc2VyLg0K PiArDQo+ICsgIEBwYXJhbSBbaW5dICBJbWFnZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1h Z2UuDQo+ICsgIEBwYXJhbSBbaW5dICBTeXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUgU3lzdGVt IFRhYmxlLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJz ZXIgaXMgcmVnaXN0ZXJlZC4NCj4gKyAgQHJldHZhbCBFRklfQUxSRUFEWV9TVEFSVEVEICAgVGhl IHBhcnNlciBmb3IgdGhlIEFDUEkgVGFibGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaXMgYWxyZWFkeSByZWdpc3RlcmVkLg0KPiArKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0VG SUFQSQ0KPiArR3RkdFBhcnNlckxpYkNvbnN0cnVjdG9yICgNCj4gKyAgSU4gQ09OU1QgRUZJX0hB TkRMRSAgICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwNCj4gKyAgSU4gICAgICAgRUZJX1NZU1RF TV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0KPiArICApDQo+ICt7DQo+ICsgIHJldHVybiBS ZWdpc3RlclBhcnNlciAoDQo+ICsgICAgICAgICAgIEVGSV9BQ1BJXzZfMl9HRU5FUklDX1RJTUVS X0RFU0NSSVBUSU9OX1RBQkxFX1NJR05BVFVSRSwNCj4gKyAgICAgICAgICAgUGFyc2VBY3BpR3Rk dA0KPiArICAgICAgICAgICApOw0KPiArfQ0KPiArDQo+ICsvKiogRGVyZWdpc3RlciB0aGUgcGFy c2VyLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dICBJbWFnZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0 aGUgaW1hZ2UuDQo+ICsgIEBwYXJhbSBbaW5dICBTeXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUg U3lzdGVtIFRhYmxlLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRo ZSBwYXJzZXIgaXMgZGVyZWdpc3RlcmVkLg0KPiArICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQgICAg ICAgICBUaGUgcGFyc2VyIHdhcyBub3QgcmVnaXN0ZXJlZC4NCj4gKyovDQo+ICtFRklfU1RBVFVT DQo+ICtFRklBUEkNCj4gK0d0ZHRQYXJzZXJMaWJEZXN0cnVjdG9yICgNCj4gKyAgSU4gQ09OU1Qg RUZJX0hBTkRMRSAgICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwNCj4gKyAgSU4gICAgICAgRUZJ X1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0KPiArICApDQo+ICt7DQo+ICsgIHJl dHVybiBEZXJlZ2lzdGVyUGFyc2VyICgNCj4gKyAgICAgICAgICAgRUZJX0FDUElfNl8yX0dFTkVS SUNfVElNRVJfREVTQ1JJUFRJT05fVEFCTEVfU0lHTkFUVVJFDQo+ICsgICAgICAgICAgICk7DQo+ ICt9DQo+IGRpZmYgLS1naXQgYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29t bWFuZExpYi9Jb3J0UGFyc2VyLmMNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlW aWV3Q29tbWFuZExpYi9Jb3J0UGFyc2VyLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5k ZXgNCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDJlNzZiMjFh YzAxNGYyMGEwZTU5ODcxMg0KPiA5YzYyYzk2NGIxMzRlODANCj4gLS0tIC9kZXYvbnVsbA0KPiAr KysgYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9Jb3J0UGFy c2VyLmMNCj4gQEAgLTAsMCArMSw3MzAgQEANCj4gKy8qKg0KPiArICBJT1JUIHRhYmxlIHBhcnNl cg0KPiArDQo+ICsgIENvcHlyaWdodCAoYykgMjAxNiAtIDIwMTcsIEFSTSBMaW1pdGVkLiBBbGwg cmlnaHRzIHJlc2VydmVkLg0KPiArICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcg bWF0ZXJpYWxzDQo+ICsgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhl IHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QNCj4gTGljZW5zZQ0KPiArICB3aGljaCBh Y2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vu c2UgbWF5IGJlDQo+IGZvdW5kIGF0DQo+ICsgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNl cy9ic2QtbGljZW5zZS5waHANCj4gKw0KPiArICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBV TkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywNCj4gKyAgV0lUSE9V VCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+IEVY UFJFU1MgT1IgSU1QTElFRC4NCj4gKw0KPiArICBAcGFyIFJlZmVyZW5jZShzKToNCj4gKyAgICAt IElPIFJlbWFwcGluZyBUYWJsZSwgUGxhdGZvcm0gRGVzaWduIERvY3VtZW50LCBSZXZpc2lvbiBD LCAxNSBNYXkNCj4gMjAxNw0KPiArKiovDQo+ICsNCj4gKyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5k YXJkL0lvUmVtYXBwaW5nVGFibGUuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1ByaW50TGliLmg+ DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpTGliLmg+DQo+ICsjaW5jbHVkZSAiQWNwaVBhcnNl ci5oIg0KPiArI2luY2x1ZGUgIkFjcGlWaWV3LmgiDQo+ICsjaW5jbHVkZSAiQWNwaVRhYmxlUGFy c2VyLmgiDQo+ICsNCj4gKy8vIExvY2FsIHZhcmlhYmxlcw0KPiArU1RBVElDIEFDUElfREVTQ1JJ UFRJT05fSEVBREVSX0lORk8gQWNwaUhkckluZm87DQo+ICsNCj4gKy8qKiBUaGUgRUlPUlRfTk9E RSBlbnVtIGRlc2NyaWJlcyB0aGUgSU9SVCBOb2RlIHR5cGVzLg0KPiArKi8NCj4gK3R5cGVkZWYg ZW51bSBJb3J0Tm9kZSB7DQo+ICsgIEVJT1JUX05PREVfSVRTX0dST1VQLCAgICAgICAgLy8vPCBJ VFMgR3JvdXAgbm9kZQ0KPiArICBFSU9SVF9OT0RFX05BTUVEX0NPTVBPTkVOVCwgIC8vLzwgTmFt ZWQgQ29tcG9uZW50IG5vZGUNCj4gKyAgRUlPUlRfTk9ERV9ST09UX0NPTVBMRVgsICAgICAvLy88 IFJvb3QgQ29tcGxleCBub2RlDQo+ICsgIEVJT1JUX05PREVfU01NVVYxX1YyLCAgICAgICAgLy8v PCBTTU1VIHYxL3YyIG5vZGUNCj4gKyAgRUlPUlRfTk9ERV9TTU1VVjMsICAgICAgICAgICAvLy88 IFNNTVUgdjMgbm9kZQ0KPiArICBFSU9SVF9OT0RFX1BNQ0csICAgICAgICAgICAgIC8vLzwgUE1D IGdyb3VwIG5vZGUNCj4gKyAgRUlPUlRfTk9ERV9NQVgNCj4gK30gRUlPUlRfTk9ERTsNCj4gKw0K PiArLy8gTG9jYWwgVmFyaWFibGVzDQo+ICtTVEFUSUMgQ09OU1QgVUlOVDMyKiBJb3J0Tm9kZUNv dW50Ow0KPiArU1RBVElDIENPTlNUIFVJTlQzMiogSW9ydE5vZGVPZmZzZXQ7DQo+ICsNCj4gK1NU QVRJQyBDT05TVCBVSU5UOCogSW9ydE5vZGVUeXBlOw0KPiArU1RBVElDIENPTlNUIFVJTlQxNiog SW9ydE5vZGVMZW5ndGg7DQo+ICtTVEFUSUMgQ09OU1QgVUlOVDMyKiBJb3J0SWRNYXBwaW5nQ291 bnQ7DQo+ICtTVEFUSUMgQ09OU1QgVUlOVDMyKiBJb3J0SWRNYXBwaW5nT2Zmc2V0Ow0KPiArDQo+ ICtTVEFUSUMgQ09OU1QgVUlOVDMyKiBJbnRlcnJ1cHRDb250ZXh0Q291bnQ7DQo+ICtTVEFUSUMg Q09OU1QgVUlOVDMyKiBJbnRlcnJ1cHRDb250ZXh0T2Zmc2V0Ow0KPiArU1RBVElDIENPTlNUIFVJ TlQzMiogUG11SW50ZXJydXB0Q291bnQ7DQo+ICtTVEFUSUMgQ09OU1QgVUlOVDMyKiBQbXVJbnRl cnJ1cHRPZmZzZXQ7DQo+ICsNCj4gK1NUQVRJQyBDT05TVCBVSU5UMzIqIEl0c0NvdW50Ow0KPiAr DQo+ICsvKiogVGhpcyBmdW5jdGlvbiB2YWxpZGF0ZXMgdGhlIElEIE1hcHBpbmcgYXJyYXkgY291 bnQgZm9yIHRoZSBJVFMgbm9kZS4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50 ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBmaWVsZCBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBDb250 ZXh0IFBvaW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcuIHRoaXMNCj4g KyAgICAgICAgICAgICAgICAgICAgICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFi bGUgaGVhZGVyLg0KPiArKi8NCj4gK1NUQVRJQw0KPiArVk9JRA0KPiArVmFsaWRhdGVJdHNJZE1h cHBpbmdDb3VudCAoDQo+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ICsgIElOIFZPSUQqICBDb250ZXh0 DQo+ICsgICk7DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHZhbGlkYXRlcyB0aGUgSUQgTWFw cGluZyBhcnJheSBvZmZzZXQgZm9yIHRoZSBJVFMgbm9kZS4NCj4gKw0KPiArICBAcGFyYW0gW2lu XSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBmaWVsZCBkYXRhLg0KPiArICBA cGFyYW0gW2luXSBDb250ZXh0IFBvaW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBpbmZvcm1hdGlv biBlLmcuIHRoaXMNCj4gKyAgICAgICAgICAgICAgICAgICAgICBjb3VsZCBiZSBhIHBvaW50ZXIg dG8gdGhlIEFDUEkgdGFibGUgaGVhZGVyLg0KPiArKi8NCj4gK1NUQVRJQw0KPiArVk9JRA0KPiAr VmFsaWRhdGVJdHNJZEFycmF5UmVmZXJlbmNlICgNCj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gKyAg SU4gVk9JRCogIENvbnRleHQNCj4gKyAgKTsNCj4gKw0KPiArLyoqIEhlbHBlciBNYWNybyBmb3Ig cG9wdWxhdGluZyB0aGUgSU9SVCBOb2RlIGhlYWRlciBpbiB0aGUgQUNQSV9QQVJTRVINCj4gKyAg ICBhcnJheS4NCj4gKw0KPiArICBAcGFyYW0gW291dF0gVmFsaWRhdGVJZE1hcHBpbmdDb3VudCAg ICBPcHRpb25hbCBwb2ludGVyIHRvIGEgZnVuY3Rpb24gZm9yDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpbmcgdGhlIElEIE1hcHBpbmcgY291bnQu DQo+ICsgIEBwYXJhbSBbb3V0XSBWYWxpZGF0ZUlkQXJyYXlSZWZlcmVuY2UgIE9wdGlvbmFsIHBv aW50ZXIgdG8gYSBmdW5jdGlvbiBmb3INCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdmFsaWRhdGluZyB0aGUgSUQgQXJyYXkgcmVmZXJlbmNlLg0KPiArKi8NCj4g KyNkZWZpbmUgUEFSU0VfSU9SVF9OT0RFX0hFQURFUihWYWxpZGF0ZUlkTWFwcGluZ0NvdW50LCAg ICAgICAgICAgICAgICAgICBcDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFs aWRhdGVJZEFycmF5UmVmZXJlbmNlKSAgICAgICAgICAgICAgICAgXA0KPiArICB7IEwiVHlwZSIs IDEsIDAsIEwiJWQiLCBOVUxMLCAoVk9JRCoqKSZJb3J0Tm9kZVR5cGUsIE5VTEwsIE5VTEwgfSwg ICAgIFwNCj4gKyAgeyBMIkxlbmd0aCIsIDIsIDEsIEwiJWQiLCBOVUxMLCAoVk9JRCoqKSZJb3J0 Tm9kZUxlbmd0aCwgTlVMTCwgTlVMTCB9LCBcDQo+ICsgIHsgTCJSZXZpc2lvbiIsIDEsIDMsIEwi JWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMIH0sICAgICAgICAgICAgICAgICAgXA0KPiArICB7 IEwiUmVzZXJ2ZWQiLCA0LCA0LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMIH0sICAg ICAgICAgICAgICAgIFwNCj4gKyAgeyBMIk51bWJlciBvZiBJRCBtYXBwaW5ncyIsIDQsIDgsIEwi JWQiLCBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgKFZPSUQqKikmSW9y dElkTWFwcGluZ0NvdW50LCBWYWxpZGF0ZUlkTWFwcGluZ0NvdW50LCBOVUxMIH0sICAgICAgICAg XA0KPiArICB7IEwiUmVmZXJlbmNlIHRvIElEIEFycmF5IiwgNCwgMTIsIEwiMHgleCIsIE5VTEws ICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICAoVk9JRCoqKSZJb3J0SWRNYXBwaW5nT2Zm c2V0LCBWYWxpZGF0ZUlkQXJyYXlSZWZlcmVuY2UsIE5VTEwgfQ0KPiArDQo+ICsvKiogQW4gQUNQ SV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgQUNQSSBJT1JUIFRhYmxlDQo+ICsqLw0KPiAr U1RBVElDIENPTlNUIEFDUElfUEFSU0VSIElvcnRQYXJzZXJbXSA9IHsNCj4gKyAgUEFSU0VfQUNQ SV9IRUFERVIgKCZBY3BpSGRySW5mbyksDQo+ICsgIHtMIk51bWJlciBvZiBJT1JUIE5vZGVzIiwg NCwgMzYsIEwiJWQiLCBOVUxMLA0KPiArICAgKFZPSUQqKikmSW9ydE5vZGVDb3VudCwgTlVMTCwg TlVMTH0sDQo+ICsgIHtMIk9mZnNldCB0byBBcnJheSBvZiBJT1JUIE5vZGVzIiwgNCwgNDAsIEwi MHgleCIsIE5VTEwsDQo+ICsgICAoVk9JRCoqKSZJb3J0Tm9kZU9mZnNldCwgTlVMTCwgTlVMTH0s DQo+ICsgIHtMIlJlc2VydmVkIiwgNCwgNDQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5V TEx9DQo+ICt9Ow0KPiArDQo+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0 aGUgSU9SVCBub2RlIGhlYWRlciBzdHJ1Y3R1cmUuDQo+ICsqLw0KPiArU1RBVElDIENPTlNUIEFD UElfUEFSU0VSIElvcnROb2RlSGVhZGVyUGFyc2VyW10gPSB7DQo+ICsgIFBBUlNFX0lPUlRfTk9E RV9IRUFERVIgKE5VTEwsIE5VTEwpDQo+ICt9Ow0KPiArDQo+ICsvKiogQW4gQUNQSV9QQVJTRVIg YXJyYXkgZGVzY3JpYmluZyB0aGUgSU9SVCBTTU1VdjEvMiBub2RlLg0KPiArKi8NCj4gK1NUQVRJ QyBDT05TVCBBQ1BJX1BBUlNFUiBJb3J0Tm9kZVNtbXVWMVYyUGFyc2VyW10gPSB7DQo+ICsgIFBB UlNFX0lPUlRfTk9ERV9IRUFERVIgKE5VTEwsIE5VTEwpLA0KPiArICB7TCJCYXNlIEFkZHJlc3Mi LCA4LCAxNiwgTCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJTcGFu IiwgOCwgMjQsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiTW9k ZWwiLCA0LCAzMiwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJGbGFn cyIsIDQsIDM2LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUmVm ZXJlbmNlIHRvIEdsb2JhbCBJbnRlcnJ1cHQgQXJyYXkiLCA0LCA0MCwgTCIweCV4IiwgTlVMTCwg TlVMTCwgTlVMTCwNCj4gKyAgIE5VTEx9LA0KPiArICB7TCJOdW1iZXIgb2YgY29udGV4dCBpbnRl cnJ1cHRzIiwgNCwgNDQsIEwiJWQiLCBOVUxMLA0KPiArICAgKFZPSUQqKikmSW50ZXJydXB0Q29u dGV4dENvdW50LCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUmVmZXJlbmNlIHRvIENvbnRleHQgSW50 ZXJydXB0IEFycmF5IiwgNCwgNDgsIEwiMHgleCIsIE5VTEwsDQo+ICsgICAoVk9JRCoqKSZJbnRl cnJ1cHRDb250ZXh0T2Zmc2V0LCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiTnVtYmVyIG9mIFBNVSBJ bnRlcnJ1cHRzIiwgNCwgNTIsIEwiJWQiLCBOVUxMLA0KPiArICAgKFZPSUQqKikmUG11SW50ZXJy dXB0Q291bnQsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJSZWZlcmVuY2UgdG8gUE1VIEludGVycnVw dCBBcnJheSIsIDQsIDU2LCBMIjB4JXgiLCBOVUxMLA0KPiArICAgKFZPSUQqKikmUG11SW50ZXJy dXB0T2Zmc2V0LCBOVUxMLCBOVUxMfSwNCj4gKw0KPiArICAvLyBJbnRlcnJ1cHQgQXJyYXkNCj4g KyAge0wiU01NVV9OU2dJcnB0IiwgNCwgNjAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5V TEx9LA0KPiArICB7TCJTTU1VX05TZ0lycHQgaW50ZXJydXB0IGZsYWdzIiwgNCwgNjQsIEwiMHgl eCIsIE5VTEwsIE5VTEwsIE5VTEwsDQo+IE5VTEx9LA0KPiArICB7TCJTTU1VX05TZ0NmZ0lycHQi LCA0LCA2OCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlNNTVVf TlNnQ2ZnSXJwdCBpbnRlcnJ1cHQgZmxhZ3MiLCA0LCA3MiwgTCIweCV4IiwgTlVMTCwgTlVMTCwg TlVMTCwNCj4gTlVMTH0NCj4gK307DQo+ICsNCj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBk ZXNjcmliaW5nIHRoZSBTTU1VdjEvMiBOb2RlIEludGVycnVwdCBBcnJheS4NCj4gKyovDQo+ICtT VEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgSW50ZXJydXB0QXJyYXlQYXJzZXJbXSA9IHsNCj4gKyAg e0wiICBJbnRlcnJ1cHQgR1NJViIsIDQsIDAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5V TEx9LA0KPiArICB7TCIgIEZsYWdzIiwgNCwgNCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwg TlVMTH0NCj4gK307DQo+ICsNCj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5n IHRoZSBJT1JUIElEIE1hcHBpbmcuDQo+ICsqLw0KPiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VS IElvcnROb2RlSWRNYXBwaW5nUGFyc2VyW10gPSB7DQo+ICsgIHtMIiAgSW5wdXQgYmFzZSIsIDQs IDAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCIgIE51bWJlciBv ZiBJRHMiLCA0LCA0LCBMIiVkIiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIiAg T3V0cHV0IGJhc2UiLCA0LCA4LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4g KyAge0wiICBPdXRwdXQgcmVmZXJlbmNlIiwgNCwgMTIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5V TEwsIE5VTEx9LA0KPiArICB7TCIgIEZsYWdzIiwgNCwgMTYsIEwiMHgleCIsIE5VTEwsIE5VTEws IE5VTEwsIE5VTEx9DQo+ICt9Ow0KPiArDQo+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVz Y3JpYmluZyB0aGUgSU9SVCBTTU1VdjMgbm9kZS4NCj4gKyovDQo+ICtTVEFUSUMgQ09OU1QgQUNQ SV9QQVJTRVIgSW9ydE5vZGVTbW11VjNQYXJzZXJbXSA9IHsNCj4gKyAgUEFSU0VfSU9SVF9OT0RF X0hFQURFUiAoTlVMTCwgTlVMTCksDQo+ICsgIHtMIkJhc2UgQWRkcmVzcyIsIDgsIDE2LCBMIjB4 JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkZsYWdzIiwgNCwgMjQsIEwi MHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJSZXNlcnZlZCIsIDQsIDI4 LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiVkFUT1MgQWRkcmVz cyIsIDgsIDMyLCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIk1v ZGVsIiwgNCwgNDAsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiRXZl bnQiLCA0LCA0NCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlBS SSIsIDQsIDQ4LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiR0VS UiIsIDQsIDUyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiU3lu YyIsIDQsIDU2LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfQ0KPiArfTsNCj4gKw0K PiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIElPUlQgSVRTIG5vZGUu DQo+ICsqLw0KPiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIElvcnROb2RlSXRzUGFyc2VyW10g PSB7DQo+ICsgIFBBUlNFX0lPUlRfTk9ERV9IRUFERVIgKA0KPiArICAgIFZhbGlkYXRlSXRzSWRN YXBwaW5nQ291bnQsDQo+ICsgICAgVmFsaWRhdGVJdHNJZEFycmF5UmVmZXJlbmNlDQo+ICsgICAg KSwNCj4gKyAge0wiICBOdW1iZXIgb2YgSVRTcyIsIDQsIDE2LCBMIiVkIiwgTlVMTCwgKFZPSUQq KikmSXRzQ291bnQsIE5VTEx9DQo+ICt9Ow0KPiArDQo+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJy YXkgZGVzY3JpYmluZyB0aGUgSVRTIElELg0KPiArKi8NCj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BB UlNFUiBJdHNJZFBhcnNlcltdID0gew0KPiArICB7IEwiICBHSUMgSVRTIElkZW50aWZpZXIiLCA0 LCAwLCBMIiVkIiwgTlVMTCwgTlVMTCwgTlVMTCB9DQo+ICt9Ow0KPiArDQo+ICsvKiogQW4gQUNQ SV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgSU9SVCBOYW1lcyBDb21wb25lbnQgbm9kZS4N Cj4gKyovDQo+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgSW9ydE5vZGVOYW1lZENvbXBvbmVu dFBhcnNlcltdID0gew0KPiArICBQQVJTRV9JT1JUX05PREVfSEVBREVSIChOVUxMLCBOVUxMKSwN Cj4gKyAge0wiTm9kZSBGbGFncyIsIDQsIDE2LCBMIiVkIiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TH0sDQo+ICsgIHtMIk1lbW9yeSBhY2Nlc3MgcHJvcGVydGllcyIsIDgsIDIwLCBMIjB4JWx4Iiwg TlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkRldmljZSBtZW1vcnkgYWRkcmVzcyBz aXplIGxpbWl0IiwgMSwgMjgsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMLA0KPiBOVUxMfQ0KPiAr fTsNCj4gKw0KPiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIElPUlQg Um9vdCBDb21wbGV4IG5vZGUuDQo+ICsqLw0KPiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIElv cnROb2RlUm9vdENvbXBsZXhQYXJzZXJbXSA9IHsNCj4gKyAgUEFSU0VfSU9SVF9OT0RFX0hFQURF UiAoTlVMTCwgTlVMTCksDQo+ICsgIHtMIk1lbW9yeSBhY2Nlc3MgcHJvcGVydGllcyIsIDgsIDE2 LCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkFUUyBBdHRyaWJ1 dGUiLCA0LCAyNCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlBD SSBTZWdtZW50IG51bWJlciIsIDQsIDI4LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM fQ0KPiArfTsNCj4gKw0KPiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhl IElPUlQgUE1DRyBub2RlLg0KPiArKi8NCj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBJb3J0 Tm9kZVBtY2dQYXJzZXJbXSA9IHsNCj4gKyAgUEFSU0VfSU9SVF9OT0RFX0hFQURFUiAoTlVMTCwg TlVMTCksDQo+ICsgIHtMIkJhc2UgQWRkcmVzcyIsIDgsIDE2LCBMIjB4JWx4IiwgTlVMTCwgTlVM TCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIk92ZXJmbG93IGludGVycnVwdCBHU0lWIiwgNCwgMjQs IEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJOb2RlIHJlZmVyZW5j ZSIsIDQsIDI4LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gK307DQo+ICsN Cj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHZhbGlkYXRlcyB0aGUgSUQgTWFwcGluZyBhcnJheSBjb3Vu dCBmb3IgdGhlIElUUyBub2RlLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRl ciB0byB0aGUgc3RhcnQgb2YgdGhlIGZpZWxkIGRhdGEuDQo+ICsgIEBwYXJhbSBbaW5dIENvbnRl eHQgUG9pbnRlciB0byBjb250ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9uIGUuZy4gdGhpcw0KPiAr ICAgICAgICAgICAgICAgICAgICAgIGNvdWxkIGJlIGEgcG9pbnRlciB0byB0aGUgQUNQSSB0YWJs ZSBoZWFkZXIuDQo+ICsqLw0KPiArU1RBVElDDQo+ICtWT0lEDQo+ICtWYWxpZGF0ZUl0c0lkTWFw cGluZ0NvdW50ICgNCj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gKyAgVk9JRCogICAgIENvbnRleHQN Cj4gKyAgKQ0KPiArew0KPiArICBpZiAoKihVSU5UMzIqKVB0ciAhPSAwKSB7DQo+ICsgICAgSW5j cmVtZW50RXJyb3JDb3VudCAoKTsNCj4gKyAgICBQcmludCAoTCJcbkVSUk9SOiBJT1JUIElEIE1h cHBpbmcgY291bnQgbXVzdCBiZSB6ZXJvLiIpOw0KPiArICB9DQo+ICt9DQo+ICsNCj4gKy8qKiBU aGlzIGZ1bmN0aW9uIHZhbGlkYXRlcyB0aGUgSUQgTWFwcGluZyBhcnJheSBvZmZzZXQgZm9yIHRo ZSBJVFMgbm9kZS4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhl IHN0YXJ0IG9mIHRoZSBmaWVsZCBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBDb250ZXh0IFBvaW50 ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcuIHRoaXMNCj4gKyAgICAgICAg ICAgICAgICAgICAgICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUgaGVhZGVy Lg0KPiArKi8NCj4gK1NUQVRJQw0KPiArVk9JRA0KPiArVmFsaWRhdGVJdHNJZEFycmF5UmVmZXJl bmNlICgNCj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gKyAgSU4gVk9JRCogIENvbnRleHQNCj4gKyAg KQ0KPiArew0KPiArICBpZiAoKihVSU5UMzIqKVB0ciAhPSAwKSB7DQo+ICsgICAgSW5jcmVtZW50 RXJyb3JDb3VudCAoKTsNCj4gKyAgICBQcmludCAoTCJcbkVSUk9SOiBJT1JUIElEIE1hcHBpbmcg b2Zmc2V0IG11c3QgYmUgemVyby4iKTsNCj4gKyAgfQ0KPiArfQ0KPiArDQo+ICsvKiogVGhpcyBm dW5jdGlvbiBwYXJzZXMgdGhlIElPUlQgTm9kZSBJZCBNYXBwaW5nIGFycmF5Lg0KPiArDQo+ICsg IEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBJ T1JUIFRhYmxlLg0KPiArICBAcGFyYW0gW2luXSBNYXBwaW5nQ291bnQgICBUaGUgSUQgTWFwcGlu ZyBjb3VudC4NCj4gKyAgQHBhcmFtIFtpbl0gTWFwcGluZ09mZnNldCAgVGhlIG9mZnNldCBvZiB0 aGUgSUQgTWFwcGluZyBhcnJheQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9t IHRoZSBzdGFydCBvZiB0aGUgSU9SVCB0YWJsZS4NCj4gKyovDQo+ICtTVEFUSUMNCj4gK1ZPSUQN Cj4gK0R1bXBJb3J0Tm9kZUlkTWFwcGluZ3MgKA0KPiArICBJTiBVSU5UOCogUHRyLA0KPiArICBJ TiBVSU5UMzIgTWFwcGluZ0NvdW50LA0KPiArICBJTiBVSU5UMzIgTWFwcGluZ09mZnNldA0KPiAr ICApDQo+ICt7DQo+ICsgIFVJTlQ4KiBJZE1hcHBpbmdQdHI7DQo+ICsgIFVJTlQzMiBJbmRleDsN Cj4gKyAgVUlOVDMyIE9mZnNldDsNCj4gKyAgQ0hBUjggIEJ1ZmZlcls0MF07ICAvLyBVc2VkIGZv ciBBc2NpaU5hbWUgcGFyYW0gb2YgUGFyc2VBY3BpDQo+ICsNCj4gKyAgSWRNYXBwaW5nUHRyID0g UHRyICsgTWFwcGluZ09mZnNldDsNCj4gKyAgSW5kZXggPSAwOw0KPiArICB3aGlsZSAoSW5kZXgg PCBNYXBwaW5nQ291bnQpIHsNCj4gKyAgICBBc2NpaVNQcmludCAoDQo+ICsgICAgICBCdWZmZXIs DQo+ICsgICAgICBzaXplb2YgKEJ1ZmZlciksDQo+ICsgICAgICAiSUQgTWFwcGluZyBbJWRdIiwN Cj4gKyAgICAgIEluZGV4DQo+ICsgICAgICApOw0KPiArICAgIE9mZnNldCA9IFBhcnNlQWNwaSAo DQo+ICsgICAgICAgICAgICAgICBUUlVFLA0KPiArICAgICAgICAgICAgICAgNCwNCj4gKyAgICAg ICAgICAgICAgIEJ1ZmZlciwNCj4gKyAgICAgICAgICAgICAgIElkTWFwcGluZ1B0ciwNCj4gKyAg ICAgICAgICAgICAgIDIwLA0KPiArICAgICAgICAgICAgICAgUEFSU0VSX1BBUkFNUyAoSW9ydE5v ZGVJZE1hcHBpbmdQYXJzZXIpDQo+ICsgICAgICAgICAgICAgICApOw0KPiArICAgIElkTWFwcGlu Z1B0ciArPSBPZmZzZXQ7DQo+ICsgICAgSW5kZXgrKzsNCj4gKyAgfQ0KPiArfQ0KPiArDQo+ICsv KiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIElPUlQgU01NVXYxLzIgbm9kZS4NCj4gKw0KPiAr ICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUg YnVmZmVyLg0KPiArICBAcGFyYW0gW2luXSBMZW5ndGggICAgICAgICBMZW5ndGggb2YgdGhlIGJ1 ZmZlci4NCj4gKyAgQHBhcmFtIFtpbl0gTWFwcGluZ0NvdW50ICAgVGhlIElEIE1hcHBpbmcgY291 bnQuDQo+ICsgIEBwYXJhbSBbaW5dIE1hcHBpbmdPZmZzZXQgIFRoZSBvZmZzZXQgb2YgdGhlIElE IE1hcHBpbmcgYXJyYXkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB0aGUg c3RhcnQgb2YgdGhlIElPUlQgdGFibGUuDQo+ICsqLw0KPiArU1RBVElDDQo+ICtWT0lEDQo+ICtE dW1wSW9ydE5vZGVTbW11VjFWMiAoDQo+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ICsgIElOIFVJTlQx NiBMZW5ndGgsDQo+ICsgIElOIFVJTlQzMiBNYXBwaW5nQ291bnQsDQo+ICsgIElOIFVJTlQzMiBN YXBwaW5nT2Zmc2V0DQo+ICsgICkNCj4gK3sNCj4gKyAgVUlOVDMyIEluZGV4Ow0KPiArICBVSU5U MzIgT2Zmc2V0Ow0KPiArICBDSEFSOCAgQnVmZmVyWzUwXTsgIC8vIFVzZWQgZm9yIEFzY2lpTmFt ZSBwYXJhbSBvZiBQYXJzZUFjcGkNCj4gKw0KPiArICBVSU5UOCogQXJyYXlQdHI7DQo+ICsNCj4g KyAgUGFyc2VBY3BpICgNCj4gKyAgICBUUlVFLA0KPiArICAgIDIsDQo+ICsgICAgIlNNTVV2MSBv ciBTTU1VdjIgTm9kZSIsDQo+ICsgICAgUHRyLA0KPiArICAgIExlbmd0aCwNCj4gKyAgICBQQVJT RVJfUEFSQU1TIChJb3J0Tm9kZVNtbXVWMVYyUGFyc2VyKQ0KPiArICAgICk7DQo+ICsNCj4gKyAg QXJyYXlQdHIgPSBQdHIgKyAqSW50ZXJydXB0Q29udGV4dE9mZnNldDsNCj4gKyAgSW5kZXggPSAw Ow0KPiArICB3aGlsZSAoSW5kZXggPCAqSW50ZXJydXB0Q29udGV4dENvdW50KSB7DQo+ICsgICAg QXNjaWlTUHJpbnQgKA0KPiArICAgICAgQnVmZmVyLA0KPiArICAgICAgc2l6ZW9mIChCdWZmZXIp LA0KPiArICAgICAgIkNvbnRleHQgSW50ZXJydXB0cyBBcnJheSBbJWRdIiwNCj4gKyAgICAgIElu ZGV4DQo+ICsgICAgICApOw0KPiArICAgIE9mZnNldCA9IFBhcnNlQWNwaSAoDQo+ICsgICAgICAg ICAgICAgICBUUlVFLA0KPiArICAgICAgICAgICAgICAgNCwNCj4gKyAgICAgICAgICAgICAgIEJ1 ZmZlciwNCj4gKyAgICAgICAgICAgICAgIEFycmF5UHRyLA0KPiArICAgICAgICAgICAgICAgOCwN Cj4gKyAgICAgICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKEludGVycnVwdEFycmF5UGFyc2VyKQ0K PiArICAgICAgICAgICAgICAgKTsNCj4gKyAgICBBcnJheVB0ciArPSBPZmZzZXQ7DQo+ICsgICAg SW5kZXgrKzsNCj4gKyAgfQ0KPiArDQo+ICsgIEFycmF5UHRyID0gUHRyICsgKlBtdUludGVycnVw dE9mZnNldDsNCj4gKyAgSW5kZXggPSAwOw0KPiArICB3aGlsZSAoSW5kZXggPCAqUG11SW50ZXJy dXB0Q291bnQpIHsNCj4gKyAgICBBc2NpaVNQcmludCAoDQo+ICsgICAgICBCdWZmZXIsDQo+ICsg ICAgICBzaXplb2YgKEJ1ZmZlciksDQo+ICsgICAgICAiUE1VIEludGVycnVwdHMgQXJyYXkgWyVk XSIsDQo+ICsgICAgICBJbmRleA0KPiArICAgICAgKTsNCj4gKyAgICBPZmZzZXQgPSBQYXJzZUFj cGkgKA0KPiArICAgICAgICAgICAgICAgVFJVRSwNCj4gKyAgICAgICAgICAgICAgIDQsDQo+ICsg ICAgICAgICAgICAgICBCdWZmZXIsDQo+ICsgICAgICAgICAgICAgICBBcnJheVB0ciwNCj4gKyAg ICAgICAgICAgICAgIDgsDQo+ICsgICAgICAgICAgICAgICBQQVJTRVJfUEFSQU1TIChJbnRlcnJ1 cHRBcnJheVBhcnNlcikNCj4gKyAgICAgICAgICAgICAgICk7DQo+ICsgICAgQXJyYXlQdHIgKz0g T2Zmc2V0Ow0KPiArICAgIEluZGV4Kys7DQo+ICsgIH0NCj4gKw0KPiArICBpZiAoKklvcnRJZE1h cHBpbmdDb3VudCAhPSAwKSB7DQo+ICsgICAgRHVtcElvcnROb2RlSWRNYXBwaW5ncyAoUHRyLCBN YXBwaW5nQ291bnQsIE1hcHBpbmdPZmZzZXQpOw0KPiArICB9DQo+ICt9DQo+ICsNCj4gKy8qKiBU aGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgSU9SVCBTTU1VdjMgbm9kZS4NCj4gKw0KPiArICBAcGFy YW0gW2luXSBQdHIgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVy Lg0KPiArICBAcGFyYW0gW2luXSBMZW5ndGggICAgICAgICBMZW5ndGggb2YgdGhlIGJ1ZmZlci4N Cj4gKyAgQHBhcmFtIFtpbl0gTWFwcGluZ0NvdW50ICAgVGhlIElEIE1hcHBpbmcgY291bnQuDQo+ ICsgIEBwYXJhbSBbaW5dIE1hcHBpbmdPZmZzZXQgIFRoZSBvZmZzZXQgb2YgdGhlIElEIE1hcHBp bmcgYXJyYXkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB0aGUgc3RhcnQg b2YgdGhlIElPUlQgdGFibGUuDQo+ICsqLw0KPiArU1RBVElDDQo+ICtWT0lEDQo+ICtEdW1wSW9y dE5vZGVTbW11VjMgKA0KPiArICBJTiBVSU5UOCogUHRyLA0KPiArICBJTiBVSU5UMTYgTGVuZ3Ro LA0KPiArICBJTiBVSU5UMzIgTWFwcGluZ0NvdW50LA0KPiArICBJTiBVSU5UMzIgTWFwcGluZ09m ZnNldA0KPiArICApDQo+ICt7DQo+ICsgIFBhcnNlQWNwaSAoDQo+ICsgICAgVFJVRSwNCj4gKyAg ICAyLA0KPiArICAgICJTTU1VVjMgTm9kZSIsDQo+ICsgICAgUHRyLA0KPiArICAgIExlbmd0aCwN Cj4gKyAgICBQQVJTRVJfUEFSQU1TIChJb3J0Tm9kZVNtbXVWM1BhcnNlcikNCj4gKyAgICApOw0K PiArDQo+ICsgIGlmICgqSW9ydElkTWFwcGluZ0NvdW50ICE9IDApIHsNCj4gKyAgICBEdW1wSW9y dE5vZGVJZE1hcHBpbmdzIChQdHIsIE1hcHBpbmdDb3VudCwgTWFwcGluZ09mZnNldCk7DQo+ICsg IH0NCj4gK30NCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBJT1JUIElUUyBu b2RlLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhl IHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsgIEBwYXJhbSBbaW5dIExlbmd0aCAgICAgICAgIExl bmd0aCBvZiB0aGUgYnVmZmVyLg0KPiArKi8NCj4gK1NUQVRJQw0KPiArVk9JRA0KPiArRHVtcElv cnROb2RlSXRzICgNCj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gKyAgSU4gVUlOVDE2IExlbmd0aA0K PiArICApDQo+ICt7DQo+ICsgIFVJTlQzMiBPZmZzZXQ7DQo+ICsgIFVJTlQzMiBJbmRleDsNCj4g KyAgVUlOVDgqIEl0c0lkUHRyOw0KPiArICBDSEFSOCAgQnVmZmVyWzgwXTsgIC8vIFVzZWQgZm9y IEFzY2lpTmFtZSBwYXJhbSBvZiBQYXJzZUFjcGkNCj4gKw0KPiArICBPZmZzZXQgPSBQYXJzZUFj cGkgKA0KPiArICAgICAgICAgICAgIFRSVUUsDQo+ICsgICAgICAgICAgICAgMiwNCj4gKyAgICAg ICAgICAgICAiSVRTIE5vZGUiLA0KPiArICAgICAgICAgICAgIFB0ciwNCj4gKyAgICAgICAgICAg ICBMZW5ndGgsDQo+ICsgICAgICAgICAgICAgUEFSU0VSX1BBUkFNUyAoSW9ydE5vZGVJdHNQYXJz ZXIpDQo+ICsgICAgICAgICAgICAgKTsNCj4gKw0KPiArICBJdHNJZFB0ciA9IFB0ciArIE9mZnNl dDsNCj4gKyAgSW5kZXggPSAwOw0KPiArICB3aGlsZSAoSW5kZXggPCAqSXRzQ291bnQpIHsNCj4g KyAgICBBc2NpaVNQcmludCAoDQo+ICsgICAgICBCdWZmZXIsDQo+ICsgICAgICBzaXplb2YgKEJ1 ZmZlciksDQo+ICsgICAgICAiR0lDIElUUyBJZGVudGlmaWVyIEFycmF5IFslZF0iLA0KPiArICAg ICAgSW5kZXgNCj4gKyAgICAgICk7DQo+ICsgICAgT2Zmc2V0ID0gUGFyc2VBY3BpICgNCj4gKyAg ICAgICAgICAgICAgIFRSVUUsDQo+ICsgICAgICAgICAgICAgICA0LA0KPiArICAgICAgICAgICAg ICAgQnVmZmVyLA0KPiArICAgICAgICAgICAgICAgSXRzSWRQdHIsDQo+ICsgICAgICAgICAgICAg ICA0LA0KPiArICAgICAgICAgICAgICAgUEFSU0VSX1BBUkFNUyAoSXRzSWRQYXJzZXIpDQo+ICsg ICAgICAgICAgICAgICApOw0KPiArICAgIEl0c0lkUHRyICs9IE9mZnNldDsNCj4gKyAgICBJbmRl eCsrOw0KPiArICB9DQo+ICsNCj4gKyAgLy8gTm90ZTogSVRTIGRvZXMgbm90IGhhdmUgdGhlIElE IE1hcHBpbmdzIEFycmF5DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0 aGUgSU9SVCBOYW1lZCBDb21wb25lbnQgbm9kZS4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIg ICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArICBAcGFy YW0gW2luXSBMZW5ndGggICAgICAgICBMZW5ndGggb2YgdGhlIGJ1ZmZlci4NCj4gKyAgQHBhcmFt IFtpbl0gTWFwcGluZ0NvdW50ICAgVGhlIElEIE1hcHBpbmcgY291bnQuDQo+ICsgIEBwYXJhbSBb aW5dIE1hcHBpbmdPZmZzZXQgIFRoZSBvZmZzZXQgb2YgdGhlIElEIE1hcHBpbmcgYXJyYXkNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIElPUlQg dGFibGUuDQo+ICsqLw0KPiArU1RBVElDDQo+ICtWT0lEDQo+ICtEdW1wSW9ydE5vZGVOYW1lZENv bXBvbmVudCAoDQo+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ICsgIElOIFVJTlQxNiBMZW5ndGgsDQo+ ICsgIElOIFVJTlQzMiBNYXBwaW5nQ291bnQsDQo+ICsgIElOIFVJTlQzMiBNYXBwaW5nT2Zmc2V0 DQo+ICsgICkNCj4gK3sNCj4gKyAgVUlOVDMyIE9mZnNldDsNCj4gKyAgVUlOVDMyIEluZGV4Ow0K PiArICBVSU5UOCogRGV2aWNlTmFtZVB0cjsNCj4gKyAgVUlOVDMyIERldmljZU5hbWVMZW5ndGg7 DQo+ICsNCj4gKyAgT2Zmc2V0ID0gUGFyc2VBY3BpICgNCj4gKyAgICAgICAgICAgICBUUlVFLA0K PiArICAgICAgICAgICAgIDIsDQo+ICsgICAgICAgICAgICAgIk5hbWVkIENvbXBvbmVudCBOb2Rl IiwNCj4gKyAgICAgICAgICAgICBQdHIsDQo+ICsgICAgICAgICAgICAgTGVuZ3RoLA0KPiArICAg ICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKElvcnROb2RlTmFtZWRDb21wb25lbnRQYXJzZXIpDQo+ ICsgICAgICAgICAgICAgKTsNCj4gKw0KPiArICBEZXZpY2VOYW1lUHRyID0gUHRyICsgT2Zmc2V0 Ow0KPiArICAvLyBFc3RpbWF0ZSB0aGUgRGV2aWNlIE5hbWUgbGVuZ3RoDQo+ICsgIERldmljZU5h bWVMZW5ndGggPSBMZW5ndGggLSBPZmZzZXQgLSAoTWFwcGluZ0NvdW50ICogMjApOw0KPiArICBQ cmludEZpZWxkTmFtZSAoMiwgTCJEZXZpY2UgT2JqZWN0IE5hbWUiKTsNCj4gKyAgSW5kZXggPSAw Ow0KPiArICB3aGlsZSAoKEluZGV4IDwgRGV2aWNlTmFtZUxlbmd0aCkgJiYgKERldmljZU5hbWVQ dHJbSW5kZXhdICE9IDApKSB7DQo+ICsgICAgUHJpbnQgKEwiJWMiLCBEZXZpY2VOYW1lUHRyW0lu ZGV4KytdKTsNCj4gKyAgfQ0KPiArICBQcmludCAoTCJcbiIpOw0KPiArDQo+ICsgIGlmICgqSW9y dElkTWFwcGluZ0NvdW50ICE9IDApIHsNCj4gKyAgICBEdW1wSW9ydE5vZGVJZE1hcHBpbmdzIChQ dHIsIE1hcHBpbmdDb3VudCwgTWFwcGluZ09mZnNldCk7DQo+ICsgIH0NCj4gK30NCj4gKw0KPiAr LyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBJT1JUIFJvb3QgQ29tcGxleCBub2RlLg0KPiAr DQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9m IHRoZSBidWZmZXIuDQo+ICsgIEBwYXJhbSBbaW5dIExlbmd0aCAgICAgICAgIExlbmd0aCBvZiB0 aGUgYnVmZmVyLg0KPiArICBAcGFyYW0gW2luXSBNYXBwaW5nQ291bnQgICBUaGUgSUQgTWFwcGlu ZyBjb3VudC4NCj4gKyAgQHBhcmFtIFtpbl0gTWFwcGluZ09mZnNldCAgVGhlIG9mZnNldCBvZiB0 aGUgSUQgTWFwcGluZyBhcnJheQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9t IHRoZSBzdGFydCBvZiB0aGUgSU9SVCB0YWJsZS4NCj4gKyovDQo+ICtTVEFUSUMNCj4gK1ZPSUQN Cj4gK0R1bXBJb3J0Tm9kZVJvb3RDb21wbGV4ICgNCj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gKyAg SU4gVUlOVDE2IExlbmd0aCwNCj4gKyAgSU4gVUlOVDMyIE1hcHBpbmdDb3VudCwNCj4gKyAgSU4g VUlOVDMyIE1hcHBpbmdPZmZzZXQNCj4gKyAgKQ0KPiArew0KPiArICBQYXJzZUFjcGkgKA0KPiAr ICAgIFRSVUUsDQo+ICsgICAgMiwNCj4gKyAgICAiUm9vdCBDb21wbGV4IE5vZGUiLA0KPiArICAg IFB0ciwNCj4gKyAgICBMZW5ndGgsDQo+ICsgICAgUEFSU0VSX1BBUkFNUyAoSW9ydE5vZGVSb290 Q29tcGxleFBhcnNlcikNCj4gKyAgICApOw0KPiArDQo+ICsgIGlmICgqSW9ydElkTWFwcGluZ0Nv dW50ICE9IDApIHsNCj4gKyAgICBEdW1wSW9ydE5vZGVJZE1hcHBpbmdzIChQdHIsIE1hcHBpbmdD b3VudCwgTWFwcGluZ09mZnNldCk7DQo+ICsgIH0NCj4gK30NCj4gKw0KPiArLyoqIFRoaXMgZnVu Y3Rpb24gcGFyc2VzIHRoZSBJT1JUIFBNQ0cgbm9kZS4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBQ dHIgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArICBA cGFyYW0gW2luXSBMZW5ndGggICAgICAgICBMZW5ndGggb2YgdGhlIGJ1ZmZlci4NCj4gKyAgQHBh cmFtIFtpbl0gTWFwcGluZ0NvdW50ICAgVGhlIElEIE1hcHBpbmcgY291bnQuDQo+ICsgIEBwYXJh bSBbaW5dIE1hcHBpbmdPZmZzZXQgIFRoZSBvZmZzZXQgb2YgdGhlIElEIE1hcHBpbmcgYXJyYXkN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIElP UlQgdGFibGUuDQo+ICsqLw0KPiArU1RBVElDDQo+ICtWT0lEDQo+ICtEdW1wSW9ydE5vZGVQbWNn ICgNCj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gKyAgSU4gVUlOVDE2IExlbmd0aCwNCj4gKyAgSU4g VUlOVDMyIE1hcHBpbmdDb3VudCwNCj4gKyAgSU4gVUlOVDMyIE1hcHBpbmdPZmZzZXQNCj4gKykN Cj4gK3sNCj4gKyAgUGFyc2VBY3BpICgNCj4gKyAgICBUUlVFLA0KPiArICAgIDIsDQo+ICsgICAg IlBNQ0cgTm9kZSIsDQo+ICsgICAgUHRyLA0KPiArICAgIExlbmd0aCwNCj4gKyAgICBQQVJTRVJf UEFSQU1TIChJb3J0Tm9kZVBtY2dQYXJzZXIpDQo+ICsgICk7DQo+ICsNCj4gKyAgaWYgKCpJb3J0 SWRNYXBwaW5nQ291bnQgIT0gMCkgew0KPiArICAgIER1bXBJb3J0Tm9kZUlkTWFwcGluZ3MgKFB0 ciwgTWFwcGluZ0NvdW50LCBNYXBwaW5nT2Zmc2V0KTsNCj4gKyAgfQ0KPiArDQo+ICsgIGlmICgq SW9ydElkTWFwcGluZ0NvdW50ID4gMSkgew0KPiArICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7 DQo+ICsgICAgUHJpbnQgKA0KPiArICAgICAgTCJFUlJPUjogSUQgbWFwcGluZyBtdXN0IG5vdCBi ZSBncmVhdGVyIHRoYW4gMS4gSWQgTWFwcGluZyBDb3VudA0KPiA9JWRcbiIsDQo+ICsgICAgICAq SW9ydElkTWFwcGluZ0NvdW50DQo+ICsgICAgICApOw0KPiArICB9DQo+ICt9DQo+ICsNCj4gKy8q KiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgQUNQSSBJT1JUIHRhYmxlLg0KPiArICBXaGVuIHRy YWNlIGlzIGVuYWJsZWQgdGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIElPUlQgdGFibGUgYW5kDQo+ ICsgIHRyYWNlcyB0aGUgQUNQSSBmaWVsZHMuDQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBhbHNv IHBhcnNlcyB0aGUgZm9sbG93aW5nIG5vZGVzOg0KPiArICAgIC0gSVRTIEdyb3VwDQo+ICsgICAg LSBOYW1lZCBDb21wb25lbnQNCj4gKyAgICAtIFJvb3QgQ29tcGxleA0KPiArICAgIC0gU01NVXYx LzINCj4gKyAgICAtIFNNTVV2Mw0KPiArICAgIC0gUE1DRw0KPiArDQo+ICsgIFRoaXMgZnVuY3Rp b24gYWxzbyBwZXJmb3JtcyB2YWxpZGF0aW9uIG9mIHRoZSBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4g Kw0KPiArICBAcGFyYW0gW2luXSBUcmFjZSAgICAgICAgICAgICAgSWYgVFJVRSwgdHJhY2UgdGhl IEFDUEkgZmllbGRzLg0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICAgICAgUG9pbnRl ciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxl TGVuZ3RoICAgIExlbmd0aCBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gKyAgQHBhcmFtIFtpbl0gQWNw aVRhYmxlUmV2aXNpb24gIFJldmlzaW9uIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiArKi8NCj4gK1ZP SUQNCj4gK0VGSUFQSQ0KPiArUGFyc2VBY3BpSW9ydCAoDQo+ICsgIElOIEJPT0xFQU4gVHJhY2Us DQo+ICsgIElOIFVJTlQ4KiAgUHRyLA0KPiArICBJTiBVSU5UMzIgIEFjcGlUYWJsZUxlbmd0aCwN Cj4gKyAgSU4gVUlOVDggICBBY3BpVGFibGVSZXZpc2lvbg0KPiArICApDQo+ICt7DQo+ICsgIFVJ TlQzMiBPZmZzZXQ7DQo+ICsgIFVJTlQzMiBJbmRleDsNCj4gKyAgVUlOVDgqIE5vZGVQdHI7DQo+ ICsNCj4gKyAgaWYgKCFUcmFjZSkgew0KPiArICAgIHJldHVybjsNCj4gKyAgfQ0KPiArDQo+ICsg IFBhcnNlQWNwaSAoDQo+ICsgICAgVFJVRSwNCj4gKyAgICAwLA0KPiArICAgICJJT1JUIiwNCj4g KyAgICBQdHIsDQo+ICsgICAgQWNwaVRhYmxlTGVuZ3RoLA0KPiArICAgIFBBUlNFUl9QQVJBTVMg KElvcnRQYXJzZXIpDQo+ICsgICAgKTsNCj4gKyAgT2Zmc2V0ID0gKklvcnROb2RlT2Zmc2V0Ow0K PiArICBOb2RlUHRyID0gUHRyICsgT2Zmc2V0Ow0KPiArICBJbmRleCA9IDA7DQo+ICsNCj4gKyAg d2hpbGUgKChJbmRleCA8ICpJb3J0Tm9kZUNvdW50KSAmJiAoT2Zmc2V0IDwgQWNwaVRhYmxlTGVu Z3RoKSkgew0KPiArICAgIC8vIFBhcnNlIHRoZSBJT1JUIE5vZGUgSGVhZGVyDQo+ICsgICAgUGFy c2VBY3BpICgNCj4gKyAgICAgIEZBTFNFLA0KPiArICAgICAgMCwNCj4gKyAgICAgICJJT1JUIE5v ZGUgSGVhZGVyIiwNCj4gKyAgICAgIE5vZGVQdHIsDQo+ICsgICAgICAxNiwNCj4gKyAgICAgIFBB UlNFUl9QQVJBTVMgKElvcnROb2RlSGVhZGVyUGFyc2VyKQ0KPiArICAgICAgKTsNCj4gKyAgICBz d2l0Y2ggKCpJb3J0Tm9kZVR5cGUpIHsNCj4gKyAgICAgIGNhc2UgRUlPUlRfTk9ERV9JVFNfR1JP VVA6DQo+ICsgICAgICAgIER1bXBJb3J0Tm9kZUl0cyAoDQo+ICsgICAgICAgICAgTm9kZVB0ciwN Cj4gKyAgICAgICAgICAqSW9ydE5vZGVMZW5ndGgNCj4gKyAgICAgICAgICApOw0KPiArICAgICAg ICBicmVhazsNCj4gKyAgICAgIGNhc2UgRUlPUlRfTk9ERV9OQU1FRF9DT01QT05FTlQ6DQo+ICsg ICAgICAgIER1bXBJb3J0Tm9kZU5hbWVkQ29tcG9uZW50ICgNCj4gKyAgICAgICAgICBOb2RlUHRy LA0KPiArICAgICAgICAgICpJb3J0Tm9kZUxlbmd0aCwNCj4gKyAgICAgICAgICAqSW9ydElkTWFw cGluZ0NvdW50LA0KPiArICAgICAgICAgICpJb3J0SWRNYXBwaW5nT2Zmc2V0DQo+ICsgICAgICAg ICAgKTsNCj4gKyAgICAgICAgYnJlYWs7DQo+ICsgICAgICBjYXNlIEVJT1JUX05PREVfUk9PVF9D T01QTEVYOg0KPiArICAgICAgICBEdW1wSW9ydE5vZGVSb290Q29tcGxleCAoDQo+ICsgICAgICAg ICAgTm9kZVB0ciwNCj4gKyAgICAgICAgICAqSW9ydE5vZGVMZW5ndGgsDQo+ICsgICAgICAgICAg KklvcnRJZE1hcHBpbmdDb3VudCwNCj4gKyAgICAgICAgICAqSW9ydElkTWFwcGluZ09mZnNldA0K PiArICAgICAgICAgICk7DQo+ICsgICAgICAgIGJyZWFrOw0KPiArICAgICAgY2FzZSBFSU9SVF9O T0RFX1NNTVVWMV9WMjoNCj4gKyAgICAgICAgRHVtcElvcnROb2RlU21tdVYxVjIgKA0KPiArICAg ICAgICAgIE5vZGVQdHIsDQo+ICsgICAgICAgICAgKklvcnROb2RlTGVuZ3RoLA0KPiArICAgICAg ICAgICpJb3J0SWRNYXBwaW5nQ291bnQsDQo+ICsgICAgICAgICAgKklvcnRJZE1hcHBpbmdPZmZz ZXQNCj4gKyAgICAgICAgICApOw0KPiArICAgICAgICBicmVhazsNCj4gKyAgICAgIGNhc2UgRUlP UlRfTk9ERV9TTU1VVjM6DQo+ICsgICAgICAgIER1bXBJb3J0Tm9kZVNtbXVWMyAoDQo+ICsgICAg ICAgICAgTm9kZVB0ciwNCj4gKyAgICAgICAgICAqSW9ydE5vZGVMZW5ndGgsDQo+ICsgICAgICAg ICAgKklvcnRJZE1hcHBpbmdDb3VudCwNCj4gKyAgICAgICAgICAqSW9ydElkTWFwcGluZ09mZnNl dA0KPiArICAgICAgICAgICk7DQo+ICsgICAgICAgIGJyZWFrOw0KPiArICAgICAgY2FzZSBFSU9S VF9OT0RFX1BNQ0c6DQo+ICsgICAgICAgIER1bXBJb3J0Tm9kZVBtY2cgKA0KPiArICAgICAgICAg IE5vZGVQdHIsDQo+ICsgICAgICAgICAgKklvcnROb2RlTGVuZ3RoLA0KPiArICAgICAgICAgICpJ b3J0SWRNYXBwaW5nQ291bnQsDQo+ICsgICAgICAgICAgKklvcnRJZE1hcHBpbmdPZmZzZXQNCj4g KyAgICAgICAgKTsNCj4gKyAgICAgICAgYnJlYWs7DQo+ICsNCj4gKyAgICAgIGRlZmF1bHQ6DQo+ ICsgICAgICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7DQo+ICsgICAgICAgIFByaW50IChMIkVS Uk9SOiBVbnN1cHBvcnRlZCBJT1JUIE5vZGUgdHlwZSA9ICVkXG4iLA0KPiAqSW9ydE5vZGVUeXBl KTsNCj4gKyAgICB9IC8vIHN3aXRjaA0KPiArDQo+ICsgICAgTm9kZVB0ciArPSAoKklvcnROb2Rl TGVuZ3RoKTsNCj4gKyAgICBPZmZzZXQgKz0gKCpJb3J0Tm9kZUxlbmd0aCk7DQo+ICsgIH0gLy8g d2hpbGUNCj4gK30NCj4gKw0KPiArLyoqIFJlZ2lzdGVyIHRoZSBwYXJzZXIuDQo+ICsNCj4gKyAg QHBhcmFtIFtpbl0gIEltYWdlSGFuZGxlICBUaGUgaGFuZGxlIHRvIHRoZSBpbWFnZS4NCj4gKyAg QHBhcmFtIFtpbl0gIFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUuDQo+ ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNlciBpcyByZWdp c3RlcmVkLg0KPiArICBAcmV0dmFsIEVGSV9BTFJFQURZX1NUQVJURUQgICBUaGUgcGFyc2VyIGZv ciB0aGUgQUNQSSBUYWJsZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBh bHJlYWR5IHJlZ2lzdGVyZWQuDQo+ICsqLw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtJ b3J0UGFyc2VyTGliQ29uc3RydWN0b3IgKA0KPiArICBJTiBDT05TVCBFRklfSEFORExFICAgICAg ICAgICAgICAgIEltYWdlSGFuZGxlLA0KPiArICBJTiAgICAgICBFRklfU1lTVEVNX1RBQkxFICAq IENPTlNUIFN5c3RlbVRhYmxlDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIFJlZ2lzdGVyUGFy c2VyICgNCj4gKyAgICAgICAgICAgRUZJX0FDUElfNl8yX0lPX1JFTUFQUElOR19UQUJMRV9TSUdO QVRVUkUsDQo+ICsgICAgICAgICAgIFBhcnNlQWNwaUlvcnQNCj4gKyAgICAgICAgICAgKTsNCj4g K30NCj4gKw0KPiArLyoqIERlcmVnaXN0ZXIgdGhlIHBhcnNlci4NCj4gKw0KPiArICBAcGFyYW0g W2luXSAgSW1hZ2VIYW5kbGUgIFRoZSBoYW5kbGUgdG8gdGhlIGltYWdlLg0KPiArICBAcGFyYW0g W2luXSAgU3lzdGVtVGFibGUgIFBvaW50ZXIgdG8gdGhlIFN5c3RlbSBUYWJsZS4NCj4gKw0KPiAr ICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgcGFyc2VyIGlzIGRlcmVnaXN0ZXJl ZC4NCj4gKyAgQHJldHZhbCBFRklfTk9UX0ZPVU5EICAgICAgICAgVGhlIHBhcnNlciB3YXMgbm90 IHJlZ2lzdGVyZWQuDQo+ICsqLw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtJb3J0UGFy c2VyTGliRGVzdHJ1Y3RvciAoDQo+ICsgIElOIENPTlNUIEVGSV9IQU5ETEUgICAgICAgICAgICAg ICAgSW1hZ2VIYW5kbGUsDQo+ICsgIElOICAgICAgIEVGSV9TWVNURU1fVEFCTEUgICogQ09OU1Qg U3lzdGVtVGFibGUNCj4gKyAgKQ0KPiArew0KPiArICByZXR1cm4gRGVyZWdpc3RlclBhcnNlciAo DQo+ICsgICAgICAgICAgIEVGSV9BQ1BJXzZfMl9JT19SRU1BUFBJTkdfVEFCTEVfU0lHTkFUVVJF DQo+ICsgICAgICAgICAgICk7DQo+ICt9DQo+IGRpZmYgLS1naXQgYS9TaGVsbFBrZy9MaWJyYXJ5 L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9NYWR0UGFyc2VyLmMNCj4gYi9TaGVsbFBrZy9M aWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9NYWR0UGFyc2VyLmMNCj4gbmV3IGZp bGUgbW9kZSAxMDA2NDQNCj4gaW5kZXgNCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMC4uOTlhNjA1NjlhNTJiNTg4M2MzMjNlMTVkMw0KPiAzMzlhMjBlMjdlYzIwZTcN Cj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlW aWV3Q29tbWFuZExpYi9NYWR0UGFyc2VyLmMNCj4gQEAgLTAsMCArMSwzNTQgQEANCj4gKy8qKg0K PiArICBNQURUIHRhYmxlIHBhcnNlcg0KPiArDQo+ICsgIENvcHlyaWdodCAoYykgMjAxNiAtIDIw MTcsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArICBUaGlzIHByb2dyYW0g YW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICsgIGFyZSBsaWNlbnNlZCBhbmQgbWFk ZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QNCj4g TGljZW5zZQ0KPiArICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBm dWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlDQo+IGZvdW5kIGF0DQo+ICsgIGh0dHA6Ly9v cGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gKw0KPiArICBUSEUgUFJP R1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIg0K PiBCQVNJUywNCj4gKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBB TlkgS0lORCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gKw0KPiArICBAcGFyIFJl ZmVyZW5jZShzKToNCj4gKyAgICAtIEFDUEkgNi4yIFNwZWNpZmljYXRpb24gLSBFcnJhdGEgQSwg U2VwdGVtYmVyIDIwMTcNCj4gKyoqLw0KPiArDQo+ICsjaW5jbHVkZSA8SW5kdXN0cnlTdGFuZGFy ZC9BY3BpLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpTGliLmg+DQo+ICsjaW5jbHVkZSAi QWNwaVBhcnNlci5oIg0KPiArI2luY2x1ZGUgIkFjcGlWaWV3LmgiDQo+ICsjaW5jbHVkZSAiQWNw aVRhYmxlUGFyc2VyLmgiDQo+ICsNCj4gKy8vIExvY2FsIFZhcmlhYmxlcw0KPiArU1RBVElDIENP TlNUIFVJTlQ4KiBNYWR0SW50ZXJydXB0Q29udHJvbGxlclR5cGU7DQo+ICtTVEFUSUMgQ09OU1Qg VUlOVDgqIE1hZHRJbnRlcnJ1cHRDb250cm9sbGVyTGVuZ3RoOw0KPiArU1RBVElDIEFDUElfREVT Q1JJUFRJT05fSEVBREVSX0lORk8gQWNwaUhkckluZm87DQo+ICsNCj4gKy8vIEZvcndhcmQgZGVj bGFyYXRpb25zDQo+ICtTVEFUSUMNCj4gK1ZPSUQNCj4gK1ZhbGlkYXRlR0lDRFN5c3RlbVZlY3Rv ckJhc2UgKA0KPiArICBJTiBVSU5UOCogUHRyLA0KPiArICBJTiBWT0lEKiAgQ29udGV4dA0KPiAr KTsNCj4gKw0KPiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIEdJQ0Mg SW50ZXJydXB0DQo+ICsgICAgQ29udHJvbGxlciBTdHJ1Y3R1cmUuDQo+ICsqLw0KPiArU1RBVElD IENPTlNUIEFDUElfUEFSU0VSIEdpY0NQYXJzZXJbXSA9IHsNCj4gKyAge0wiVHlwZSIsIDEsIDAs IEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJMZW5ndGgiLCAxLCAx LCBMIiVkIiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlJlc2VydmVkIiwgMiwg MiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsNCj4gKyAge0wiQ1BVIElu dGVyZmFjZSBOdW1iZXIiLCA0LCA0LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwN Cj4gKyAge0wiQUNQSSBQcm9jZXNzb3IgVUlEIiwgNCwgOCwgTCIweCV4IiwgTlVMTCwgTlVMTCwg TlVMTCwgTlVMTH0sDQo+ICsgIHtMIkZsYWdzIiwgNCwgMTIsIEwiMHgleCIsIE5VTEwsIE5VTEws IE5VTEwsIE5VTEx9LA0KPiArICB7TCJQYXJraW5nIFByb3RvY29sIFZlcnNpb24iLCA0LCAxNiwg TCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsNCj4gKyAge0wiUGVyZm9ybWFu Y2UgSW50ZXJydXB0IEdTSVYiLCA0LCAyMCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TH0sDQo+ICsgIHtMIlBhcmtlZCBBZGRyZXNzIiwgOCwgMjQsIEwiMHglbHgiLCBOVUxMLCBOVUxM LCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUGh5c2ljYWwgQmFzZSBBZGRyZXNzIiwgOCwgMzIsIEwi MHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiR0lDViIsIDgsIDQwLCBM IjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkdJQ0giLCA4LCA0OCwg TCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJWR0lDIE1haW50ZW5h bmNlIGludGVycnVwdCIsIDQsIDU2LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwN Cj4gKyAge0wiR0lDUiBCYXNlIEFkZHJlc3MiLCA4LCA2MCwgTCIweCVseCIsIE5VTEwsIE5VTEws IE5VTEwsIE5VTEx9LA0KPiArICB7TCJNUElEUiIsIDgsIDY4LCBMIjB4JWx4IiwgTlVMTCwgTlVM TCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlByb2Nlc3NvciBQb3dlciBFZmZpY2llbmN5IENsYXNz IiwgMSwgNzYsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsDQo+ICsgICBOVUxMfSwNCj4gKyAg e0wiUmVzZXJ2ZWQiLCAzLCA3NywgTCIleCAleCAleCIsIER1bXAzQ2hhcnMsIE5VTEwsIE5VTEws IE5VTEx9DQo+ICt9Ow0KPiArDQo+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmlu ZyB0aGUgR0lDRCBJbnRlcnJ1cHQNCj4gKyAgICBDb250cm9sbGVyIFN0cnVjdHVyZS4NCj4gKyov DQo+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgR2ljRFBhcnNlcltdID0gew0KPiArICB7TCJU eXBlIiwgMSwgMCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkxl bmd0aCIsIDEsIDEsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUmVz ZXJ2ZWQiLCAyLCAyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKw0KPiAr ICB7TCJHSUMgSUQiLCA0LCA0LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4g KyAge0wiUGh5c2ljYWwgQmFzZSBBZGRyZXNzIiwgOCwgOCwgTCIweCVseCIsIE5VTEwsIE5VTEws IE5VTEwsIE5VTEx9LA0KPiArICB7TCJTeXN0ZW0gVmVjdG9yIEJhc2UiLCA0LCAxNiwgTCIweCV4 IiwgTlVMTCwgTlVMTCwNCj4gKyAgICBWYWxpZGF0ZUdJQ0RTeXN0ZW1WZWN0b3JCYXNlLCBOVUxM fSwNCj4gKyAge0wiR0lDIFZlcnNpb24iLCAxLCAyMCwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEws IE5VTEx9LA0KPiArICB7TCJSZXNlcnZlZCIsIDMsIDIxLCBMIiV4ICV4ICV4IiwgRHVtcDNDaGFy cywgTlVMTCwgTlVMTCwgTlVMTH0NCj4gK307DQo+ICsNCj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBh cnJheSBkZXNjcmliaW5nIHRoZSBNU0kgRnJhbWUgSW50ZXJydXB0DQo+ICsgICAgQ29udHJvbGxl ciBTdHJ1Y3R1cmUuDQo+ICsqLw0KPiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIEdpY01TSUZy YW1lUGFyc2VyW10gPSB7DQo+ICsgIHtMIlR5cGUiLCAxLCAwLCBMIjB4JXgiLCBOVUxMLCBOVUxM LCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiTGVuZ3RoIiwgMSwgMSwgTCIlZCIsIE5VTEwsIE5VTEws IE5VTEwsIE5VTEx9LA0KPiArICB7TCJSZXNlcnZlZCIsIDIsIDIsIEwiMHgleCIsIE5VTEwsIE5V TEwsIE5VTEwsIE5VTEx9LA0KPiArDQo+ICsgIHtMIk1TSSBGcmFtZSBJRCIsIDQsIDQsIEwiMHgl eCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJQaHlzaWNhbCBCYXNlIEFkZHJl c3MiLCA4LCA4LCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkZs YWdzIiwgNCwgMTYsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArDQo+ICsg IHtMIlNQSSBDb3VudCIsIDIsIDIwLCBMIiVkIiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ ICsgIHtMIlNQSSBCYXNlIiwgMiwgMjIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9 DQo+ICt9Ow0KPiArDQo+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUg R0lDUiBJbnRlcnJ1cHQNCj4gKyAgICBDb250cm9sbGVyIFN0cnVjdHVyZS4NCj4gKyovDQo+ICtT VEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgR2ljUlBhcnNlcltdID0gew0KPiArICB7TCJUeXBlIiwg MSwgMCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkxlbmd0aCIs IDEsIDEsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUmVzZXJ2ZWQi LCAyLCAyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKw0KPiArICB7TCJE aXNjb3ZlcnkgUmFuZ2UgQmFzZSBBZGRyZXNzIiwgOCwgNCwgTCIweCVseCIsIE5VTEwsIE5VTEws IE5VTEwsDQo+ICsgICBOVUxMfSwNCj4gKyAge0wiRGlzY292ZXJ5IFJhbmdlIExlbmd0aCIsIDQs IDEyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfQ0KPiArfTsNCj4gKw0KPiArLyoq IEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIEdJQyBJVFMgSW50ZXJydXB0DQo+ ICsgICAgQ29udHJvbGxlciBTdHJ1Y3R1cmUuDQo+ICsqLw0KPiArU1RBVElDIENPTlNUIEFDUElf UEFSU0VSIEdpY0lUU1BhcnNlcltdID0gew0KPiArICB7TCJUeXBlIiwgMSwgMCwgTCIweCV4Iiwg TlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkxlbmd0aCIsIDEsIDEsIEwiJWQiLCBO VUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUmVzZXJ2ZWQiLCAyLCAyLCBMIjB4JXgi LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKw0KPiArICB7TCJHSUMgSVRTIElEIiwgNCwg NCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlBoeXNpY2FsIEJh c2UgQWRkcmVzcyIsIDgsIDgsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4g KyAge0wiUmVzZXJ2ZWQiLCA0LCAxNiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0N Cj4gK307DQo+ICsNCj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBB Q1BJIE1BRFQgVGFibGUuDQo+ICsqLw0KPiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIE1hZHRQ YXJzZXJbXSA9IHsNCj4gKyAgUEFSU0VfQUNQSV9IRUFERVIgKCZBY3BpSGRySW5mbyksDQo+ICsg IHtMIkxvY2FsIEludGVycnVwdCBDb250cm9sbGVyIEFkZHJlc3MiLCA0LCAzNiwgTCIweCV4Iiwg TlVMTCwgTlVMTCwgTlVMTCwNCj4gKyAgIE5VTEx9LA0KPiArICB7TCJGbGFncyIsIDQsIDQwLCBM IjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfQ0KPiArfTsNCj4gKw0KPiArLyoqIEFuIEFD UElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIE1BRFQgSW50ZXJydXB0DQo+ICsgICAgQ29u dHJvbGxlciBTdHJ1Y3R1cmUgSGVhZGVyIFN0cnVjdHVyZS4NCj4gKyovDQo+ICtTVEFUSUMgQ09O U1QgQUNQSV9QQVJTRVIgTWFkdEludGVycnVwdENvbnRyb2xsZXJIZWFkZXJQYXJzZXJbXSA9IHsN Cj4gKyAge05VTEwsIDEsIDAsIE5VTEwsIE5VTEwsIChWT0lEKiopJk1hZHRJbnRlcnJ1cHRDb250 cm9sbGVyVHlwZSwgTlVMTCwNCj4gTlVMTH0sDQo+ICsgIHtMIkxlbmd0aCIsIDEsIDEsIE5VTEws IE5VTEwsIChWT0lEKiopJk1hZHRJbnRlcnJ1cHRDb250cm9sbGVyTGVuZ3RoLA0KPiBOVUxMLA0K PiArICAgTlVMTH0sDQo+ICsgIHtMIlJlc2VydmVkIiwgMiwgMiwgTlVMTCwgTlVMTCwgTlVMTCwg TlVMTCwgTlVMTH0NCj4gK307DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHZhbGlkYXRlcyB0 aGUgU3lzdGVtIFZlY3RvciBCYXNlIGluIHRoZSBHSUNELg0KPiArDQo+ICsgIEBwYXJhbSBbaW5d IFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGZpZWxkIGRhdGEuDQo+ICsgIEBw YXJhbSBbaW5dIENvbnRleHQgUG9pbnRlciB0byBjb250ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9u IGUuZy4gdGhpcw0KPiArICAgICAgICAgICAgICAgICAgICAgIGNvdWxkIGJlIGEgcG9pbnRlciB0 byB0aGUgQUNQSSB0YWJsZSBoZWFkZXIuDQo+ICsqLw0KPiArU1RBVElDDQo+ICtWT0lEDQo+ICtW YWxpZGF0ZUdJQ0RTeXN0ZW1WZWN0b3JCYXNlICgNCj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gKyAg SU4gVk9JRCogIENvbnRleHQNCj4gKykNCj4gK3sNCj4gKyAgaWYgKCooVUlOVDMyKilQdHIgIT0g MCkgew0KPiArICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7DQo+ICsgICAgUHJpbnQgKA0KPiAr ICAgICAgTCJcbkVSUk9SOiBTeXN0ZW0gVmVjdG9yIEJhc2UgbXVzdCBiZSB6ZXJvLiINCj4gKyAg ICApOw0KPiArICB9DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUg QUNQSSBNQURUIHRhYmxlLg0KPiArICBXaGVuIHRyYWNlIGlzIGVuYWJsZWQgdGhpcyBmdW5jdGlv biBwYXJzZXMgdGhlIE1BRFQgdGFibGUgYW5kDQo+ICsgIHRyYWNlcyB0aGUgQUNQSSB0YWJsZSBm aWVsZHMuDQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBjdXJyZW50bHkgcGFyc2VzIHRoZSBmb2xs b3dpbmcgSW50ZXJydXB0IENvbnRyb2xsZXINCj4gKyAgU3RydWN0dXJlczoNCj4gKyAgICAtIEdJ Q0MNCj4gKyAgICAtIEdJQ0QNCj4gKyAgICAtIEdJQyBNU0kgRnJhbWUNCj4gKyAgICAtIEdJQ1IN Cj4gKyAgICAtIEdJQyBJVFMNCj4gKw0KPiArICBUaGlzIGZ1bmN0aW9uIGFsc28gcGVyZm9ybXMg dmFsaWRhdGlvbiBvZiB0aGUgQUNQSSB0YWJsZSBmaWVsZHMuDQo+ICsNCj4gKyAgQHBhcmFtIFtp bl0gVHJhY2UgICAgICAgICAgICAgIElmIFRSVUUsIHRyYWNlIHRoZSBBQ1BJIGZpZWxkcy4NCj4g KyAgQHBhcmFtIFtpbl0gUHRyICAgICAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9m IHRoZSBidWZmZXIuDQo+ICsgIEBwYXJhbSBbaW5dIEFjcGlUYWJsZUxlbmd0aCAgICBMZW5ndGgg b2YgdGhlIEFDUEkgdGFibGUuDQo+ICsgIEBwYXJhbSBbaW5dIEFjcGlUYWJsZVJldmlzaW9uICBS ZXZpc2lvbiBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gKyovDQo+ICtWT0lEDQo+ICtFRklBUEkNCj4g K1BhcnNlQWNwaU1hZHQgKA0KPiArICBJTiBCT09MRUFOIFRyYWNlLA0KPiArICBJTiBVSU5UOCog IFB0ciwNCj4gKyAgSU4gVUlOVDMyICBBY3BpVGFibGVMZW5ndGgsDQo+ICsgIElOIFVJTlQ4ICAg QWNwaVRhYmxlUmV2aXNpb24NCj4gKyAgKQ0KPiArew0KPiArICBVSU5UMzIgT2Zmc2V0Ow0KPiAr ICBVSU5UOCogSW50ZXJydXB0Q29udG9sbGVyUHRyOw0KPiArICBVSU5UMzIgR0lDRENvdW50ID0g MDsNCj4gKw0KPiArICBpZiAoIVRyYWNlKSB7DQo+ICsgICAgcmV0dXJuOw0KPiArICB9DQo+ICsN Cj4gKyAgT2Zmc2V0ID0gUGFyc2VBY3BpICgNCj4gKyAgICAgICAgICAgICBUUlVFLA0KPiArICAg ICAgICAgICAgIDAsDQo+ICsgICAgICAgICAgICAgIk1BRFQiLA0KPiArICAgICAgICAgICAgIFB0 ciwNCj4gKyAgICAgICAgICAgICBBY3BpVGFibGVMZW5ndGgsDQo+ICsgICAgICAgICAgICAgUEFS U0VSX1BBUkFNUyAoTWFkdFBhcnNlcikNCj4gKyAgICAgICAgICAgICApOw0KPiArICBJbnRlcnJ1 cHRDb250b2xsZXJQdHIgPSBQdHIgKyBPZmZzZXQ7DQo+ICsNCj4gKyAgd2hpbGUgKE9mZnNldCA8 IEFjcGlUYWJsZUxlbmd0aCkgew0KPiArICAgIC8vIFBhcnNlIEludGVycnVwdCBDb250cm9sbGVy IFN0cnVjdHVyZSB0byBvYnRhaW4gTGVuZ3RoLg0KPiArICAgIFBhcnNlQWNwaSAoDQo+ICsgICAg ICBGQUxTRSwNCj4gKyAgICAgIDAsDQo+ICsgICAgICBOVUxMLA0KPiArICAgICAgSW50ZXJydXB0 Q29udG9sbGVyUHRyLA0KPiArICAgICAgMiwgIC8vICBMZW5ndGggaXMgMSBieXRlIGF0IG9mZnNl dCAxDQo+ICsgICAgICBQQVJTRVJfUEFSQU1TIChNYWR0SW50ZXJydXB0Q29udHJvbGxlckhlYWRl clBhcnNlcikNCj4gKyAgICAgICk7DQo+ICsNCj4gKyAgICBpZiAoKChPZmZzZXQgKyAoKk1hZHRJ bnRlcnJ1cHRDb250cm9sbGVyTGVuZ3RoKSkgPiBBY3BpVGFibGVMZW5ndGgpIHx8DQo+ICsgICAg ICAgICgqTWFkdEludGVycnVwdENvbnRyb2xsZXJMZW5ndGggPCA0KSkgew0KPiArICAgICAgSW5j cmVtZW50RXJyb3JDb3VudCAoKTsNCj4gKyAgICAgIFByaW50ICgNCj4gKyAgICAgICAgIEwiRVJS T1I6IEludmFsaWQgSW50ZXJydXB0IENvbnRyb2xsZXIgTGVuZ3RoLCINCj4gKyAgICAgICAgICAi IFR5cGUgPSAlZCwgTGVuZ3RoID0gJWRcbiIsDQo+ICsgICAgICAgICAqTWFkdEludGVycnVwdENv bnRyb2xsZXJUeXBlLA0KPiArICAgICAgICAgKk1hZHRJbnRlcnJ1cHRDb250cm9sbGVyTGVuZ3Ro DQo+ICsgICAgICAgICApOw0KPiArICAgICAgYnJlYWs7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAg c3dpdGNoICgqTWFkdEludGVycnVwdENvbnRyb2xsZXJUeXBlKSB7DQo+ICsgICAgICBjYXNlIEVG SV9BQ1BJXzZfMl9HSUM6IHsNCj4gKyAgICAgICAgUGFyc2VBY3BpICgNCj4gKyAgICAgICAgICBU UlVFLA0KPiArICAgICAgICAgIDIsDQo+ICsgICAgICAgICAgIkdJQ0MiLA0KPiArICAgICAgICAg IEludGVycnVwdENvbnRvbGxlclB0ciwNCj4gKyAgICAgICAgICAqTWFkdEludGVycnVwdENvbnRy b2xsZXJMZW5ndGgsDQo+ICsgICAgICAgICAgUEFSU0VSX1BBUkFNUyAoR2ljQ1BhcnNlcikNCj4g KyAgICAgICAgICApOw0KPiArICAgICAgICBicmVhazsNCj4gKyAgICAgIH0NCj4gKw0KPiArICAg ICAgY2FzZSBFRklfQUNQSV82XzJfR0lDRDogew0KPiArICAgICAgICBpZiAoKytHSUNEQ291bnQg PiAxKSB7DQo+ICsgICAgICAgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gKyAgICAgICAg ICBQcmludCAoDQo+ICsgICAgICAgICAgICBMIkVSUk9SOiBPbmx5IG9uZSBHSUNEIG11c3QgYmUg cHJlc2VudCwiDQo+ICsgICAgICAgICAgICAgICIgR0lDRENvdW50ID0gJWRcbiIsDQo+ICsgICAg ICAgICAgICBHSUNEQ291bnQNCj4gKyAgICAgICAgICAgICk7DQo+ICsgICAgICAgIH0NCj4gKyAg ICAgICAgUGFyc2VBY3BpICgNCj4gKyAgICAgICAgICBUUlVFLA0KPiArICAgICAgICAgIDIsDQo+ ICsgICAgICAgICAgIkdJQ0QiLA0KPiArICAgICAgICAgIEludGVycnVwdENvbnRvbGxlclB0ciwN Cj4gKyAgICAgICAgICAqTWFkdEludGVycnVwdENvbnRyb2xsZXJMZW5ndGgsDQo+ICsgICAgICAg ICAgUEFSU0VSX1BBUkFNUyAoR2ljRFBhcnNlcikNCj4gKyAgICAgICAgICApOw0KPiArICAgICAg ICBicmVhazsNCj4gKyAgICAgIH0NCj4gKw0KPiArICAgICAgY2FzZSBFRklfQUNQSV82XzJfR0lD X01TSV9GUkFNRTogew0KPiArICAgICAgICBQYXJzZUFjcGkgKA0KPiArICAgICAgICAgIFRSVUUs DQo+ICsgICAgICAgICAgMiwNCj4gKyAgICAgICAgICAiR0lDIE1TSSBGcmFtZSIsDQo+ICsgICAg ICAgICAgSW50ZXJydXB0Q29udG9sbGVyUHRyLA0KPiArICAgICAgICAgICpNYWR0SW50ZXJydXB0 Q29udHJvbGxlckxlbmd0aCwNCj4gKyAgICAgICAgICBQQVJTRVJfUEFSQU1TIChHaWNNU0lGcmFt ZVBhcnNlcikNCj4gKyAgICAgICAgICApOw0KPiArICAgICAgICBicmVhazsNCj4gKyAgICAgIH0N Cj4gKw0KPiArICAgICAgY2FzZSBFRklfQUNQSV82XzJfR0lDUjogew0KPiArICAgICAgICBQYXJz ZUFjcGkgKA0KPiArICAgICAgICAgIFRSVUUsDQo+ICsgICAgICAgICAgMiwNCj4gKyAgICAgICAg ICAiR0lDUiIsDQo+ICsgICAgICAgICAgSW50ZXJydXB0Q29udG9sbGVyUHRyLA0KPiArICAgICAg ICAgICpNYWR0SW50ZXJydXB0Q29udHJvbGxlckxlbmd0aCwNCj4gKyAgICAgICAgICBQQVJTRVJf UEFSQU1TIChHaWNSUGFyc2VyKQ0KPiArICAgICAgICAgICk7DQo+ICsgICAgICAgIGJyZWFrOw0K PiArICAgICAgfQ0KPiArDQo+ICsgICAgICBjYXNlIEVGSV9BQ1BJXzZfMl9HSUNfSVRTOiB7DQo+ ICsgICAgICAgIFBhcnNlQWNwaSAoDQo+ICsgICAgICAgICAgVFJVRSwNCj4gKyAgICAgICAgICAy LA0KPiArICAgICAgICAgICJHSUMgSVRTIiwNCj4gKyAgICAgICAgICBJbnRlcnJ1cHRDb250b2xs ZXJQdHIsDQo+ICsgICAgICAgICAgKk1hZHRJbnRlcnJ1cHRDb250cm9sbGVyTGVuZ3RoLA0KPiAr ICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKEdpY0lUU1BhcnNlcikNCj4gKyAgICAgICAgICApOw0K PiArICAgICAgICBicmVhazsNCj4gKyAgICAgIH0NCj4gKw0KPiArICAgICAgZGVmYXVsdDogew0K PiArICAgICAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiArICAgICAgICBQcmludCAoDQo+ ICsgICAgICAgICAgTCJFUlJPUjogVW5rbm93biBJbnRlcnJ1cHQgQ29udHJvbGxlciBTdHJ1Y3R1 cmUsIg0KPiArICAgICAgICAgICAgIiBUeXBlID0gJWQsIExlbmd0aCA9ICVkXG4iLA0KPiArICAg ICAgICAgICpNYWR0SW50ZXJydXB0Q29udHJvbGxlclR5cGUsDQo+ICsgICAgICAgICAgKk1hZHRJ bnRlcnJ1cHRDb250cm9sbGVyTGVuZ3RoDQo+ICsgICAgICAgICAgKTsNCj4gKyAgICAgIH0NCj4g KyAgICB9IC8vIHN3aXRjaA0KPiArDQo+ICsgICAgSW50ZXJydXB0Q29udG9sbGVyUHRyICs9ICpN YWR0SW50ZXJydXB0Q29udHJvbGxlckxlbmd0aDsNCj4gKyAgICBPZmZzZXQgKz0gKk1hZHRJbnRl cnJ1cHRDb250cm9sbGVyTGVuZ3RoOw0KPiArICB9IC8vIHdoaWxlDQo+ICt9DQo+ICsNCj4gKy8q KiBSZWdpc3RlciB0aGUgcGFyc2VyLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dICBJbWFnZUhhbmRs ZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ICsgIEBwYXJhbSBbaW5dICBTeXN0ZW1UYWJs ZSAgUG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NV Q0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgcmVnaXN0ZXJlZC4NCj4gKyAgQHJldHZhbCBF RklfQUxSRUFEWV9TVEFSVEVEICAgVGhlIHBhcnNlciBmb3IgdGhlIEFDUEkgVGFibGUNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgYWxyZWFkeSByZWdpc3RlcmVkLg0KPiAr Ki8NCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArTWFkdFBhcnNlckxpYkNvbnN0cnVjdG9y ICgNCj4gKyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwN Cj4gKyAgSU4gICAgICAgRUZJX1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0KPiAr ICApDQo+ICt7DQo+ICsgIHJldHVybiBSZWdpc3RlclBhcnNlciAoDQo+ICsgICAgICAgICAgIEVG SV9BQ1BJXzZfMl9NVUxUSVBMRV9BUElDX0RFU0NSSVBUSU9OX1RBQkxFX1NJR05BVFVSRSwNCj4g KyAgICAgICAgICAgUGFyc2VBY3BpTWFkdA0KPiArICAgICAgICAgICApOw0KPiArfQ0KPiArDQo+ ICsvKiogRGVyZWdpc3RlciB0aGUgcGFyc2VyLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dICBJbWFn ZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ICsgIEBwYXJhbSBbaW5dICBTeXN0 ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KPiArDQo+ICsgIEByZXR2YWwg RUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgZGVyZWdpc3RlcmVkLg0KPiArICBA cmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICBUaGUgcGFyc2VyIHdhcyBub3QgcmVnaXN0ZXJl ZC4NCj4gKyovDQo+ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK01hZHRQYXJzZXJMaWJEZXN0 cnVjdG9yICgNCj4gKyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICBJbWFnZUhh bmRsZSwNCj4gKyAgSU4gICAgICAgRUZJX1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJs ZQ0KPiArICApDQo+ICt7DQo+ICsgIHJldHVybiBEZXJlZ2lzdGVyUGFyc2VyICgNCj4gKyAgICAg ICAgICAgRUZJX0FDUElfNl8yX01VTFRJUExFX0FQSUNfREVTQ1JJUFRJT05fVEFCTEVfU0lHTkFU VVJFDQo+ICsgICAgICAgICAgICk7DQo+ICt9DQo+IGRpZmYgLS1naXQgYS9TaGVsbFBrZy9MaWJy YXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9NY2ZnUGFyc2VyLmMNCj4gYi9TaGVsbFBr Zy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9NY2ZnUGFyc2VyLmMNCj4gbmV3 IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXgNCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMC4uM2I0NTU5MWMzZDU2YWUwZWZhNzcyZDZiZg0KPiA1ZGMzYjNjNGYyMjg3 ZWMNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFj cGlWaWV3Q29tbWFuZExpYi9NY2ZnUGFyc2VyLmMNCj4gQEAgLTAsMCArMSwxMzcgQEANCj4gKy8q Kg0KPiArICBNQ0ZHIHRhYmxlIHBhcnNlcg0KPiArDQo+ICsgIENvcHlyaWdodCAoYykgMjAxNiAt IDIwMTcsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArICBUaGlzIHByb2dy YW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICsgIGFyZSBsaWNlbnNlZCBhbmQg bWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QN Cj4gTGljZW5zZQ0KPiArICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRo ZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlDQo+IGZvdW5kIGF0DQo+ICsgIGh0dHA6 Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gKw0KPiArICBUSEUg UFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElT Ig0KPiBCQVNJUywNCj4gKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBP RiBBTlkgS0lORCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gKw0KPiArICBAcGFy IFJlZmVyZW5jZShzKToNCj4gKyAgICAtIFBDSSBGaXJtd2FyZSBTcGVjaWZpY2F0aW9uIC0gUmV2 aXNpb24gMy4yLCBKYW51YXJ5IDI2LCAyMDE1Lg0KPiArKiovDQo+ICsNCj4gKyNpbmNsdWRlIDxJ bmR1c3RyeVN0YW5kYXJkL0FjcGkuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlMaWIuaD4N Cj4gKyNpbmNsdWRlICJBY3BpUGFyc2VyLmgiDQo+ICsjaW5jbHVkZSAiQWNwaVZpZXcuaCINCj4g KyNpbmNsdWRlICJBY3BpVGFibGVQYXJzZXIuaCINCj4gKw0KPiArLy8gTG9jYWwgdmFyaWFibGVz DQo+ICtTVEFUSUMgQUNQSV9ERVNDUklQVElPTl9IRUFERVJfSU5GTyBBY3BpSGRySW5mbzsNCj4g Kw0KPiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIEFDUEkgTUNGRyBU YWJsZS4NCj4gKyovDQo+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgTWNmZ1BhcnNlcltdID0g ew0KPiArICBQQVJTRV9BQ1BJX0hFQURFUiAoJkFjcGlIZHJJbmZvKSwNCj4gKyAge0wiUmVzZXJ2 ZWQiLCA4LCAzNiwgTCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArfTsNCj4g Kw0KPiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIFBDSSBjb25maWd1 cmF0aW9uIFNwYWNlDQo+ICsgICAgQmFzZSBBZGRyZXNzIHN0cnVjdHVyZS4NCj4gKyovDQo+ICtT VEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgUGNpQ2ZnU3BhY2VCYXNlQWRkclBhcnNlcltdID0gew0K PiArICB7TCJCYXNlIEFkZHJlc3MiLCA4LCAwLCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwg TlVMTH0sDQo+ICsgIHtMIlBDSSBTZWdtZW50IEdyb3VwIE5vLiIsIDIsIDgsIEwiMHgleCIsIE5V TEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJTdGFydCBCdXMgTm8uIiwgMSwgMTAsIEwi MHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJFbmQgQnVzIE5vLiIsIDEs IDExLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUmVzZXJ2ZWQi LCA0LCAxMiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0NCj4gK307DQo+ICsNCj4g Ky8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgQUNQSSBNQ0ZHIHRhYmxlLg0KPiArICBXaGVu IHRyYWNlIGlzIGVuYWJsZWQgdGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIE1DRkcgdGFibGUgYW5k DQo+ICsgIHRyYWNlcyB0aGUgQUNQSSB0YWJsZSBmaWVsZHMuDQo+ICsNCj4gKyAgVGhpcyBmdW5j dGlvbiBhbHNvIHBlcmZvcm1zIHZhbGlkYXRpb24gb2YgdGhlIEFDUEkgdGFibGUgZmllbGRzLg0K PiArDQo+ICsgIEBwYXJhbSBbaW5dIFRyYWNlICAgICAgICAgICAgICBJZiBUUlVFLCB0cmFjZSB0 aGUgQUNQSSBmaWVsZHMuDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgICAgICBQb2lu dGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArICBAcGFyYW0gW2luXSBBY3BpVGFi bGVMZW5ndGggICAgTGVuZ3RoIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiArICBAcGFyYW0gW2luXSBB Y3BpVGFibGVSZXZpc2lvbiAgUmV2aXNpb24gb2YgdGhlIEFDUEkgdGFibGUuDQo+ICsqLw0KPiAr Vk9JRA0KPiArRUZJQVBJDQo+ICtQYXJzZUFjcGlNY2ZnICgNCj4gKyAgSU4gQk9PTEVBTiBUcmFj ZSwNCj4gKyAgSU4gVUlOVDgqICBQdHIsDQo+ICsgIElOIFVJTlQzMiAgQWNwaVRhYmxlTGVuZ3Ro LA0KPiArICBJTiBVSU5UOCAgIEFjcGlUYWJsZVJldmlzaW9uDQo+ICsgICkNCj4gK3sNCj4gKyAg VUlOVDMyIE9mZnNldDsNCj4gKyAgVUlOVDMyIFBjaUNmZ09mZnNldDsNCj4gKyAgVUlOVDgqIFBj aUNmZ1NwYWNlUHRyOw0KPiArDQo+ICsgIGlmICghVHJhY2UpIHsNCj4gKyAgICByZXR1cm47DQo+ ICsgIH0NCj4gKw0KPiArICBPZmZzZXQgPSBQYXJzZUFjcGkgKA0KPiArICAgICAgICAgICAgIFRS VUUsDQo+ICsgICAgICAgICAgICAgMCwNCj4gKyAgICAgICAgICAgICAiTUNGRyIsDQo+ICsgICAg ICAgICAgICAgUHRyLA0KPiArICAgICAgICAgICAgIEFjcGlUYWJsZUxlbmd0aCwNCj4gKyAgICAg ICAgICAgICBQQVJTRVJfUEFSQU1TIChNY2ZnUGFyc2VyKQ0KPiArICAgICAgICAgICAgICk7DQo+ ICsNCj4gKyAgUGNpQ2ZnU3BhY2VQdHIgPSBQdHIgKyBPZmZzZXQ7DQo+ICsNCj4gKyAgd2hpbGUg KE9mZnNldCA8IEFjcGlUYWJsZUxlbmd0aCkgew0KPiArICAgIFBjaUNmZ09mZnNldCA9IFBhcnNl QWNwaSAoDQo+ICsgICAgICAgICAgICAgICAgICAgICBUUlVFLA0KPiArICAgICAgICAgICAgICAg ICAgICAgMiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICJQQ0kgQ29uZmlndXJhdGlvbiBTcGFj ZSIsDQo+ICsgICAgICAgICAgICAgICAgICAgICBQY2lDZmdTcGFjZVB0ciwNCj4gKyAgICAgICAg ICAgICAgICAgICAgIChBY3BpVGFibGVMZW5ndGggLSBPZmZzZXQpLA0KPiArICAgICAgICAgICAg ICAgICAgICAgUEFSU0VSX1BBUkFNUyAoUGNpQ2ZnU3BhY2VCYXNlQWRkclBhcnNlcikNCj4gKyAg ICAgICAgICAgICAgICAgICAgICk7DQo+ICsgICAgUGNpQ2ZnU3BhY2VQdHIgKz0gUGNpQ2ZnT2Zm c2V0Ow0KPiArICAgIE9mZnNldCArPSBQY2lDZmdPZmZzZXQ7DQo+ICsgIH0NCj4gK30NCj4gKw0K PiArLyoqIFJlZ2lzdGVyIHRoZSBwYXJzZXIuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gIEltYWdl SGFuZGxlICBUaGUgaGFuZGxlIHRvIHRoZSBpbWFnZS4NCj4gKyAgQHBhcmFtIFtpbl0gIFN5c3Rl bVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUuDQo+ICsNCj4gKyAgQHJldHZhbCBF RklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNlciBpcyByZWdpc3RlcmVkLg0KPiArICBAcmV0 dmFsIEVGSV9BTFJFQURZX1NUQVJURUQgICBUaGUgcGFyc2VyIGZvciB0aGUgQUNQSSBUYWJsZQ0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQu DQo+ICsqLw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtNY2ZnUGFyc2VyTGliQ29uc3Ry dWN0b3IgKA0KPiArICBJTiBDT05TVCBFRklfSEFORExFICAgICAgICAgICAgICAgIEltYWdlSGFu ZGxlLA0KPiArICBJTiAgICAgICBFRklfU1lTVEVNX1RBQkxFICAqIENPTlNUIFN5c3RlbVRhYmxl DQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIFJlZ2lzdGVyUGFyc2VyICgNCj4gKw0KPiBFRklf QUNQSV82XzJfUENJX0VYUFJFU1NfTUVNT1JZX01BUFBFRF9DT05GSUdVUkFUSU9OX1NQQUNFDQo+ IF9CQVNFX0FERFJFU1NfREVTQ1JJUFRJT05fVEFCTEVfU0lHTkFUVVJFLA0KPiArICAgICAgICAg ICBQYXJzZUFjcGlNY2ZnDQo+ICsgICAgICAgICAgICk7DQo+ICt9DQo+ICsNCj4gKy8qKiBEZXJl Z2lzdGVyIHRoZSBwYXJzZXIuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gIEltYWdlSGFuZGxlICBU aGUgaGFuZGxlIHRvIHRoZSBpbWFnZS4NCj4gKyAgQHBhcmFtIFtpbl0gIFN5c3RlbVRhYmxlICBQ b2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VT UyAgICAgICAgICAgVGhlIHBhcnNlciBpcyBkZXJlZ2lzdGVyZWQuDQo+ICsgIEByZXR2YWwgRUZJ X05PVF9GT1VORCAgICAgICAgIFRoZSBwYXJzZXIgd2FzIG5vdCByZWdpc3RlcmVkLg0KPiArKi8N Cj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArTWNmZ1BhcnNlckxpYkRlc3RydWN0b3IgKA0K PiArICBJTiBDT05TVCBFRklfSEFORExFICAgICAgICAgICAgICAgIEltYWdlSGFuZGxlLA0KPiAr ICBJTiAgICAgICBFRklfU1lTVEVNX1RBQkxFICAqIENPTlNUIFN5c3RlbVRhYmxlDQo+ICsgICkN Cj4gK3sNCj4gKyAgcmV0dXJuIERlcmVnaXN0ZXJQYXJzZXIgKA0KPiArDQo+IEVGSV9BQ1BJXzZf Ml9QQ0lfRVhQUkVTU19NRU1PUllfTUFQUEVEX0NPTkZJR1VSQVRJT05fU1BBQ0UNCj4gX0JBU0Vf QUREUkVTU19ERVNDUklQVElPTl9UQUJMRV9TSUdOQVRVUkUNCj4gKyAgICAgICAgICAgKTsNCj4g K30NCj4gZGlmZiAtLWdpdCBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21t YW5kTGliL1JzZHBQYXJzZXIuYw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZp ZXdDb21tYW5kTGliL1JzZHBQYXJzZXIuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRl eA0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42OTIxOTg5M2Vh YTIyMTU4OTNiNWJjY2NiDQo+IDNjZDVjZGQ2YTBmZGZmZQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsr KyBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1JzZHBQYXJz ZXIuYw0KPiBAQCAtMCwwICsxLDE4MiBAQA0KPiArLyoqDQo+ICsgIFJTRFAgdGFibGUgcGFyc2Vy DQo+ICsNCj4gKyAgQ29weXJpZ2h0IChjKSAyMDE2IC0gMjAxNywgQVJNIExpbWl0ZWQuIEFsbCBy aWdodHMgcmVzZXJ2ZWQuDQo+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBt YXRlcmlhbHMNCj4gKyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUg dGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRA0KPiBMaWNlbnNlDQo+ICsgIHdoaWNoIGFj Y29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5z ZSBtYXkgYmUNCj4gZm91bmQgYXQNCj4gKyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2Vz L2JzZC1saWNlbnNlLnBocA0KPiArDQo+ICsgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVO REVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+IEJBU0lTLA0KPiArICBXSVRIT1VU IFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gRVhQ UkVTUyBPUiBJTVBMSUVELg0KPiArDQo+ICsgIEBwYXIgUmVmZXJlbmNlKHMpOg0KPiArICAgIC0g QUNQSSA2LjIgU3BlY2lmaWNhdGlvbiAtIEVycmF0YSBBLCBTZXB0ZW1iZXIgMjAxNw0KPiArKiov DQo+ICsNCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlMaWIuaD4NCj4gKyNpbmNsdWRlICJBY3Bp UGFyc2VyLmgiDQo+ICsjaW5jbHVkZSAiQWNwaVZpZXcuaCINCj4gKyNpbmNsdWRlICJBY3BpVGFi bGVQYXJzZXIuaCINCj4gKw0KPiArLy8vIFRoZSBSU0RQIHRhYmxlIHNpZ25hdHVyZSBpcyAiUlNE IFBUUiAiICg4IGJ5dGVzKQ0KPiArLy8vIEhvd2V2ZXIgVGhlIHNpZ25hdHVyZSBmb3IgQUNQSSB0 YWJsZXMgaXMgNCBieXRlcy4NCj4gKy8vLyBUbyB3b3JrIGFyb3VuZCB0aGlzIG9kZGl0eSBkZWZp bmUgYSBzaWduYXR1cmUgdHlwZQ0KPiArLy8vIHRoYXQgYWxsb3dzIHVzIHRvIHByb2Nlc3MgdGhl IGxvZyBvcHRpb25zLg0KPiArI2RlZmluZSBSU0RQX1RBQkxFX0lORk8gIFNJR05BVFVSRV8zMign UicsICdTJywgJ0QnLCAnUCcpDQo+ICsNCj4gKy8vIExvY2FsIFZhcmlhYmxlcw0KPiArU1RBVElD IENPTlNUIFVJTlQ2NCogWHNkdEFkZHJlc3M7DQo+ICtTVEFUSUMgQ09OU1QgVUlOVDMyKiBSc2Rw TGVuZ3RoOw0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiB2YWxpZGF0ZXMgdGhlIFJTRFQgQWRk cmVzcy4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0 IG9mIHRoZSBmaWVsZCBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBDb250ZXh0IFBvaW50ZXIgdG8g Y29udGV4dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcuIHRoaXMNCj4gKyAgICAgICAgICAgICAg ICAgICAgICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUgaGVhZGVyLg0KPiAr Ki8NCj4gK1NUQVRJQw0KPiArVk9JRA0KPiArVmFsaWRhdGVSc2R0QWRkcmVzcyAoDQo+ICsgIElO IFVJTlQ4KiBQdHIsDQo+ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ICsgICk7DQo+ICsNCj4gKy8q KiBUaGlzIGZ1bmN0aW9uIHZhbGlkYXRlcyB0aGUgWFNEVCBBZGRyZXNzLg0KPiArDQo+ICsgIEBw YXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGZpZWxkIGRhdGEu DQo+ICsgIEBwYXJhbSBbaW5dIENvbnRleHQgUG9pbnRlciB0byBjb250ZXh0IHNwZWNpZmljIGlu Zm9ybWF0aW9uIGUuZy4gdGhpcw0KPiArICAgICAgICAgICAgICAgICAgICAgIGNvdWxkIGJlIGEg cG9pbnRlciB0byB0aGUgQUNQSSB0YWJsZSBoZWFkZXIuDQo+ICsqLw0KPiArU1RBVElDDQo+ICtW T0lEDQo+ICtWYWxpZGF0ZVhzZHRBZGRyZXNzICgNCj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gKyAg SU4gVk9JRCogIENvbnRleHQNCj4gKyAgKTsNCj4gKw0KPiArLyoqIEFuIGFycmF5IGRlc2NyaWJp bmcgdGhlIEFDUEkgUlNEUCBUYWJsZS4NCj4gKyovDQo+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJT RVIgUnNkcFBhcnNlcltdID0gew0KPiArICB7TCJTaWduYXR1cmUiLCA4LCAwLCBOVUxMLCBEdW1w OENoYXJzLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiQ2hlY2tzdW0iLCAxLCA4LCBMIjB4 JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiT2VtIElEIiwgNiwgOSwgTlVM TCwgRHVtcDZDaGFycywgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlJldmlzaW9uIiwgMSwg MTUsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUlNEVCBBZGRyZXNz IiwgNCwgMTYsIEwiMHgleCIsIE5VTEwsIE5VTEwsIFZhbGlkYXRlUnNkdEFkZHJlc3MsDQo+IE5V TEx9LA0KPiArICB7TCJMZW5ndGgiLCA0LCAyMCwgTCIlZCIsIE5VTEwsIChWT0lEKiopJlJzZHBM ZW5ndGgsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJYU0RUIEFkZHJlc3MiLCA4LCAyNCwgTCIweCVs eCIsIE5VTEwsIChWT0lEKiopJlhzZHRBZGRyZXNzLA0KPiArICAgVmFsaWRhdGVYc2R0QWRkcmVz cywgTlVMTH0sDQo+ICsgIHtMIkV4dGVuZGVkIENoZWNrc3VtIiwgMSwgMzIsIEwiMHgleCIsIE5V TEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJSZXNlcnZlZCIsIDMsIDMzLCBMIiV4ICV4 ICV4IiwgRHVtcDNDaGFycywgTlVMTCwgTlVMTCwgTlVMTH0NCj4gK307DQo+ICsNCj4gKy8qKiBU aGlzIGZ1bmN0aW9uIHZhbGlkYXRlcyB0aGUgUlNEVCBBZGRyZXNzLg0KPiArDQo+ICsgIEBwYXJh bSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGZpZWxkIGRhdGEuDQo+ ICsgIEBwYXJhbSBbaW5dIENvbnRleHQgUG9pbnRlciB0byBjb250ZXh0IHNwZWNpZmljIGluZm9y bWF0aW9uIGUuZy4gdGhpcw0KPiArICAgICAgICAgICAgICAgICAgICAgIGNvdWxkIGJlIGEgcG9p bnRlciB0byB0aGUgQUNQSSB0YWJsZSBoZWFkZXIuDQo+ICsqLw0KPiArU1RBVElDDQo+ICtWT0lE DQo+ICtWYWxpZGF0ZVJzZHRBZGRyZXNzICgNCj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gKyAgSU4g Vk9JRCogIENvbnRleHQNCj4gKyAgKQ0KPiArew0KPiArI2lmIGRlZmluZWQoTURFX0NQVV9BUk0p IHx8IGRlZmluZWQgKE1ERV9DUFVfQUFSQ0g2NCkNCj4gKyAgLy8gUmVmZXJlbmNlOiBTZXJ2ZXIg QmFzZSBCb290IFJlcXVpcmVtZW50cyBTeXN0ZW0gU29mdHdhcmUgb24gQVJNDQo+IFBsYXRmb3Jt cw0KPiArICAvLyBTZWN0aW9uOiA0LjIuMS4xIFJTRFANCj4gKyAgLy8gUm9vdCBTeXN0ZW0gRGVz Y3JpcHRpb24gUG9pbnRlciAoUlNEUCksIEFDUEkg77+9IDUuMi41Lg0KPiArICAvLyAgIC0gV2l0 aGluIHRoZSBSU0RQLCB0aGUgUnNkdEFkZHJlc3MgZmllbGQgbXVzdCBiZSBudWxsICh6ZXJvKSBh bmQgdGhlDQo+ICsgIC8vICAgICBYc2R0QWRkcmVzc3MgTVVTVCBiZSBhIHZhbGlkLCBub24tbnVs bCwgNjQtYml0IHZhbHVlLg0KPiArICBVSU5UMzIgUnNkdEFkZHI7DQo+ICsgIFJzZHRBZGRyID0g KihVSU5UMzIqKVB0cjsNCj4gKyAgaWYgKFJzZHRBZGRyICE9IDApIHsNCj4gKyAgICBJbmNyZW1l bnRFcnJvckNvdW50ICgpOw0KPiArICAgIFByaW50ICgNCj4gKyAgICAgIEwiXG5FUlJPUjogUnNk dCBBZGRyZXNzID0gMHglcC4gVGhpcyBtdXN0IGJlIE5VTEwgb24gQVJNDQo+IFBsYXRmb3Jtcy4i LA0KPiArICAgICAgUnNkdEFkZHINCj4gKyAgICAgICk7DQo+ICsgIH0NCj4gKyNlbmRpZg0KPiAr fQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiB2YWxpZGF0ZXMgdGhlIFhTRFQgQWRkcmVzcy4N Cj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRo ZSBmaWVsZCBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBDb250ZXh0IFBvaW50ZXIgdG8gY29udGV4 dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcuIHRoaXMNCj4gKyAgICAgICAgICAgICAgICAgICAg ICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUgaGVhZGVyLg0KPiArKi8NCj4g K1NUQVRJQw0KPiArVk9JRA0KPiArVmFsaWRhdGVYc2R0QWRkcmVzcyAoDQo+ICsgIElOIFVJTlQ4 KiBQdHIsDQo+ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ICsgICkNCj4gK3sNCj4gKyNpZiBkZWZp bmVkKE1ERV9DUFVfQVJNKSB8fCBkZWZpbmVkIChNREVfQ1BVX0FBUkNINjQpDQo+ICsgIC8vIFJl ZmVyZW5jZTogU2VydmVyIEJhc2UgQm9vdCBSZXF1aXJlbWVudHMgU3lzdGVtIFNvZnR3YXJlIG9u IEFSTQ0KPiBQbGF0Zm9ybXMNCj4gKyAgLy8gU2VjdGlvbjogNC4yLjEuMSBSU0RQDQo+ICsgIC8v IFJvb3QgU3lzdGVtIERlc2NyaXB0aW9uIFBvaW50ZXIgKFJTRFApLCBBQ1BJIO+/vSA1LjIuNS4N Cj4gKyAgLy8gICAtIFdpdGhpbiB0aGUgUlNEUCwgdGhlIFJzZHRBZGRyZXNzIGZpZWxkIG11c3Qg YmUgbnVsbCAoemVybykgYW5kIHRoZQ0KPiArICAvLyAgICAgWHNkdEFkZHJlc3NzIE1VU1QgYmUg YSB2YWxpZCwgbm9uLW51bGwsIDY0LWJpdCB2YWx1ZS4NCj4gKyAgVUlOVDY0IFhzZHRBZGRyOw0K PiArICBYc2R0QWRkciA9ICooVUlOVDY0KilQdHI7DQo+ICsgIGlmIChYc2R0QWRkciA9PSAwKSB7 DQo+ICsgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gKyAgICBQcmludCAoDQo+ICsgICAg ICBMIlxuRVJST1I6IFhzZHQgQWRkcmVzcyA9IDB4JXAuIFRoaXMgbXVzdCBub3QgYmUgTlVMTCBv biBBUk0NCj4gUGxhdGZvcm1zLiIsDQo+ICsgICAgICBYc2R0QWRkcg0KPiArICAgICAgKTsNCj4g KyAgfQ0KPiArI2VuZGlmDQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0 aGUgQUNQSSBSU0RQIHRhYmxlLg0KPiArICBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgUlNEUCB0 YWJsZSBhbmQgb3B0aW9uYWxseSB0cmFjZXMgdGhlIEFDUEkNCj4gKyAgdGFibGUgZmllbGRzLiBQ cm9jZXNzVGFibGVSZXBvcnRPcHRpb25zKCkgaXMgY2FsbGVkIHRvIGRldGVybWluZSBpZg0KPiAr ICB0aGUgQUNQSSBmaWVsZHMgc2hvdWxkIGJlIHRyYWNlZC4NCj4gKw0KPiArICBUaGlzIGZ1bmN0 aW9uIGludm9rZXMgdGhlIHBhcnNlciBmb3IgdGhlIFhTRFQgdGFibGUuDQo+ICsgICogTm90ZSAt IFRoaXMgZnVuY3Rpb24gZG9lcyBub3Qgc3VwcG9ydCBwYXJzaW5nIG9mIFJTRFQgdGFibGUuDQo+ ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBhbHNvIHBlcmZvcm1zIGEgUkFXIGR1bXAgb2YgdGhlIEFD UEkgdGFibGUgYW5kDQo+ICsgIHZhbGlkYXRlcyB0aGUgY2hlY2tzdW0uDQo+ICsNCj4gKyAgQHBh cmFtIFtpbl0gUHRyICAgICAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBi dWZmZXIuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgIFN1Y2Nlc3Mu DQo+ICsgIEByZXR2YWwgRUZJX05PVF9GT1VORCAgICAgICAgICBWYWxpZCBYU0RUIHBvaW50ZXIg bm90IGZvdW5kLg0KPiArKi8NCj4gK0VGSV9TVEFUVVMNCj4gK1BhcnNlUnNkcCAoDQo+ICsgIElO IFVJTlQ4KiBQdHINCj4gKyAgKQ0KPiArew0KPiArICBCT09MRUFOICBUcmFjZTsNCj4gKw0KPiAr ICAvLyBUaGUgbGVuZ3RoIGlzIDQgYnl0ZXMgc3RhcnRpbmcgYXQgb2Zmc2V0IDIwDQo+ICsgIFBh cnNlQWNwaSAoRkFMU0UsIDAsICJSU0RQIiwgUHRyLCAyNCwgUEFSU0VSX1BBUkFNUyAoUnNkcFBh cnNlcikpOw0KPiArDQo+ICsgIFRyYWNlID0gUHJvY2Vzc1RhYmxlUmVwb3J0T3B0aW9ucyAoUlNE UF9UQUJMRV9JTkZPLCBQdHIsDQo+ICpSc2RwTGVuZ3RoKTsNCj4gKw0KPiArICBpZiAoVHJhY2Up IHsNCj4gKyAgICBEdW1wUmF3IChQdHIsICpSc2RwTGVuZ3RoKTsNCj4gKyAgICBWZXJpZnlDaGVj a3N1bSAoVFJVRSwgUHRyLCAqUnNkcExlbmd0aCk7DQo+ICsgIH0NCj4gKw0KPiArICBQYXJzZUFj cGkgKFRyYWNlLCAwLCAiUlNEUCIsIFB0ciwgKlJzZHBMZW5ndGgsIFBBUlNFUl9QQVJBTVMNCj4g KFJzZHBQYXJzZXIpKTsNCj4gKw0KPiArICAvLyBUaGlzIGNvZGUgY3VycmVudGx5IHN1cHBvcnRz IHBhcnNpbmcgb2YgWFNEVCB0YWJsZSBvbmx5DQo+ICsgIC8vIGFuZCBkb2VzIG5vdCBwYXJzZSB0 aGUgUlNEVCB0YWJsZS4gUGxhdGZvcm1zIHByb3ZpZGUgdGhlDQo+ICsgIC8vIFJTRFQgdG8gZW5h YmxlIGNvbXBhdGliaWxpdHkgd2l0aCBBQ1BJIDEuMCBvcGVyYXRpbmcgc3lzdGVtcy4NCj4gKyAg Ly8gVGhlcmVmb3JlIHRoZSBSU0RUIHNob3VsZCBub3QgYmUgdXNlZCBvbiBBUk0gcGxhdGZvcm1z Lg0KPiArICBpZiAoKCpYc2R0QWRkcmVzcykgPT0gMCkgew0KPiArICAgIEluY3JlbWVudEVycm9y Q291bnQgKCk7DQo+ICsgICAgUHJpbnQgKEwiRVJST1I6IFhTRFQgUG9pbnRlciBpcyBub3Qgc2V0 LlxuIik7DQo+ICsgICAgcmV0dXJuIEVGSV9OT1RfRk9VTkQ7DQo+ICsgIH0NCj4gKw0KPiArICBQ cm9jZXNzQWNwaVRhYmxlICgoVUlOVDgqKShVSU5UTikoKlhzZHRBZGRyZXNzKSk7DQo+ICsgIHJl dHVybiBFRklfU1VDQ0VTUzsNCj4gK30NCj4gZGlmZiAtLWdpdCBhL1NoZWxsUGtnL0xpYnJhcnkv VWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1NsaXRQYXJzZXIuYw0KPiBiL1NoZWxsUGtnL0xp YnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1NsaXRQYXJzZXIuYw0KPiBuZXcgZmls ZSBtb2RlIDEwMDY0NA0KPiBpbmRleA0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwLi40MGZjMzY2Y2UzMGE3ZjE1N2M3ZTBiMzE2ZQ0KPiBjYmY4NTU5OTBmMzBjNA0K PiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZp ZXdDb21tYW5kTGliL1NsaXRQYXJzZXIuYw0KPiBAQCAtMCwwICsxLDE4NSBAQA0KPiArLyoqDQo+ ICsgIFNMSVQgdGFibGUgcGFyc2VyDQo+ICsNCj4gKyAgQ29weXJpZ2h0IChjKSAyMDE2IC0gMjAx NywgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsgIFRoaXMgcHJvZ3JhbSBh bmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gKyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRl IGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRA0KPiBM aWNlbnNlDQo+ICsgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1 bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gZm91bmQgYXQNCj4gKyAgaHR0cDovL29w ZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiArDQo+ICsgIFRIRSBQUk9H UkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+ IEJBU0lTLA0KPiArICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFO WSBLSU5ELCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiArDQo+ICsgIEBwYXIgUmVm ZXJlbmNlKHMpOg0KPiArICAgIC0gQUNQSSA2LjIgU3BlY2lmaWNhdGlvbiAtIEVycmF0YSBBLCBT ZXB0ZW1iZXIgMjAxNw0KPiArKiovDQo+ICsNCj4gKyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJk L0FjcGkuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1ByaW50TGliLmg+DQo+ICsjaW5jbHVkZSA8 TGlicmFyeS9VZWZpTGliLmg+DQo+ICsjaW5jbHVkZSAiQWNwaVBhcnNlci5oIg0KPiArI2luY2x1 ZGUgIkFjcGlWaWV3LmgiDQo+ICsjaW5jbHVkZSAiQWNwaVRhYmxlUGFyc2VyLmgiDQo+ICsNCj4g Ky8vIExvY2FsIFZhcmlhYmxlcw0KPiArU1RBVElDIENPTlNUIFVJTlQ2NCogU2xpdFN5c3RlbUxv Y2FsaXR5Q291bnQ7DQo+ICtTVEFUSUMgQUNQSV9ERVNDUklQVElPTl9IRUFERVJfSU5GTyBBY3Bp SGRySW5mbzsNCj4gKw0KPiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhl IEFDUEkgU0xJVCB0YWJsZS4NCj4gKyovDQo+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgU2xp dFBhcnNlcltdID0gew0KPiArICBQQVJTRV9BQ1BJX0hFQURFUiAoJkFjcGlIZHJJbmZvKSwNCj4g KyAge0wiTnVtYmVyIG9mIFN5c3RlbSBMb2NhbGl0aWVzIiwgOCwgMzYsIEwiMHglbHgiLCBOVUxM LA0KPiArICAgKFZPSUQqKikmU2xpdFN5c3RlbUxvY2FsaXR5Q291bnQsIE5VTEwsIE5VTEx9DQo+ ICt9Ow0KPiArDQo+ICsvKiogTWFjcm8gdG8gZ2V0IHRoZSB2YWx1ZSBvZiBhIFN5c3RlbSBMb2Nh bGl0eQ0KPiArKi8NCj4gKyNkZWZpbmUgU0xJVF9FTEVNRU5UKFB0ciwgaSwgaikgKihQdHIgKyAo aSAqIExvY2FsaXR5Q291bnQpICsgaikNCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2Vz IHRoZSBBQ1BJIFNMSVQgdGFibGUuDQo+ICsgIFdoZW4gdHJhY2UgaXMgZW5hYmxlZCB0aGlzIGZ1 bmN0aW9uIHBhcnNlcyB0aGUgU0xJVCB0YWJsZSBhbmQNCj4gKyAgdHJhY2VzIHRoZSBBQ1BJIHRh YmxlIGZpZWxkcy4NCj4gKw0KPiArICBUaGlzIGZ1bmN0aW9uIGFsc28gdmFsaWRhdGVzIFN5c3Rl bSBMb2NhbGl0aWVzIGZvciB0aGUgZm9sbG93aW5nOg0KPiArICAgIC0gRGlhZ29uYWwgZWxlbWVu dHMgaGF2ZSBhIG5vcm1hbGl6ZWQgdmFsdWUgb2YgMTANCj4gKyAgICAtIFJlbGF0aXZlIGRpc3Rh bmNlIGZyb20gU3lzdGVtIExvY2FsaXR5IGF0IGkqTitqIGlzIHNhbWUgYXMNCj4gKyAgICAgIGoq TitpDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gVHJhY2UgICAgICAgICAgICAgIElmIFRSVUUsIHRy YWNlIHRoZSBBQ1BJIGZpZWxkcy4NCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICAgICAgICAgICAg IFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsgIEBwYXJhbSBbaW5dIEFj cGlUYWJsZUxlbmd0aCAgICBMZW5ndGggb2YgdGhlIEFDUEkgdGFibGUuDQo+ICsgIEBwYXJhbSBb aW5dIEFjcGlUYWJsZVJldmlzaW9uICBSZXZpc2lvbiBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gKyov DQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gK1BhcnNlQWNwaVNsaXQgKA0KPiArICBJTiBCT09MRUFO IFRyYWNlLA0KPiArICBJTiBVSU5UOCogIFB0ciwNCj4gKyAgSU4gVUlOVDMyICBBY3BpVGFibGVM ZW5ndGgsDQo+ICsgIElOIFVJTlQ4ICAgQWNwaVRhYmxlUmV2aXNpb24NCj4gKyAgKQ0KPiArew0K PiArICBVSU5UMzIgT2Zmc2V0Ow0KPiArICBVSU5UNjQgaTsNCj4gKyAgVUlOVDY0IGo7DQo+ICsg IFVJTlQ2NCBMb2NhbGl0eUNvdW50Ow0KPiArICBVSU5UOCogTG9jYWxpdHlQdHI7DQo+ICsgIENI QVIxNiBCdWZmZXJbODBdOyAgLy8gVXNlZCBmb3IgQXNjaWlOYW1lIHBhcmFtIG9mIFBhcnNlQWNw aQ0KPiArDQo+ICsgIGlmICghVHJhY2UpIHsNCj4gKyAgICByZXR1cm47DQo+ICsgIH0NCj4gKw0K PiArICBPZmZzZXQgPSBQYXJzZUFjcGkgKA0KPiArICAgICAgICAgICAgIFRSVUUsDQo+ICsgICAg ICAgICAgICAgMCwNCj4gKyAgICAgICAgICAgICAiU0xJVCIsDQo+ICsgICAgICAgICAgICAgUHRy LA0KPiArICAgICAgICAgICAgIEFjcGlUYWJsZUxlbmd0aCwNCj4gKyAgICAgICAgICAgICBQQVJT RVJfUEFSQU1TIChTbGl0UGFyc2VyKQ0KPiArICAgICAgICAgICAgICk7DQo+ICsgIExvY2FsaXR5 UHRyID0gUHRyICsgT2Zmc2V0Ow0KPiArDQo+ICsgIExvY2FsaXR5Q291bnQgPSAqU2xpdFN5c3Rl bUxvY2FsaXR5Q291bnQ7DQo+ICsgIC8vIFdlIG9ubHkgcHJpbnQgdGhlIExvY2FsaXRpZXMgaWYg dGhlIGNvdW50IGlzIGxlc3MgdGhhbiAxNg0KPiArICAvLyBJZiB0aGUgbG9jYWxpdHkgY291bnQg aXMgbW9yZSB0aGFuIDE2IHRoZW4gcmVmZXIgdG8gdGhlDQo+ICsgIC8vIHJhdyBkYXRhIGR1bXAu DQo+ICsgIGlmIChMb2NhbGl0eUNvdW50IDwgMTYpIHsNCj4gKyAgICBVbmljb2RlU1ByaW50ICgN Cj4gKyAgICAgIEJ1ZmZlciwNCj4gKyAgICAgIHNpemVvZiAoQnVmZmVyKSwNCj4gKyAgICAgIEwi RW50cnlbMHglbHhdWzB4JWx4XSIsDQo+ICsgICAgICBMb2NhbGl0eUNvdW50LA0KPiArICAgICAg TG9jYWxpdHlDb3VudA0KPiArICAgICAgKTsNCj4gKyAgICBQcmludEZpZWxkTmFtZSAoMCwgQnVm ZmVyKTsNCj4gKyAgICBQcmludCAoTCJcbiIpOw0KPiArICAgIFByaW50IChMIiAgICAgICAiKTsN Cj4gKyAgICBmb3IgKGogPSAwOyBqIDwgTG9jYWxpdHlDb3VudDsgaisrKSB7DQo+ICsgICAgICBQ cmludCAoTCIgKCUzZCkgIiwgaik7DQo+ICsgICAgfQ0KPiArICAgIFByaW50IChMIlxuIik7DQo+ ICsgICAgZm9yIChpID0gMDsgaSA8IExvY2FsaXR5Q291bnQ7IGkrKykgew0KPiArICAgICAgUHJp bnQgKEwiICglM2QpICIsIGkpOw0KPiArICAgICAgZm9yIChqID0gMDsgaiA8IExvY2FsaXR5Q291 bnQ7IGorKykgew0KPiArICAgICAgICBQcmludCAoTCIgICUzZCAgIiwgU0xJVF9FTEVNRU5UIChM b2NhbGl0eVB0ciwgaSwgaikpOw0KPiArICAgICAgfQ0KPiArICAgICAgUHJpbnQgKEwiXG4iKTsN Cj4gKyAgICB9DQo+ICsgIH0NCj4gKw0KPiArICAvLyBWYWxpZGF0ZQ0KPiArICBmb3IgKGkgPSAw OyBpIDwgTG9jYWxpdHlDb3VudDsgaSsrKSB7DQo+ICsgICAgZm9yIChqID0gMDsgaiA8IExvY2Fs aXR5Q291bnQ7IGorKykgew0KPiArICAgICAgLy8gRWxlbWVudFt4XVt4XSBtdXN0IGJlIGVxdWFs IHRvIDEwDQo+ICsgICAgICBpZiAoKGkgPT0gaikgJiYgKFNMSVRfRUxFTUVOVCAoTG9jYWxpdHlQ dHIsIGksIGopICE9IDEwKSkgew0KPiArICAgICAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0K PiArICAgICAgICBQcmludCAoDQo+ICsgICAgICAgICAgTCJFUlJPUjogRGlhZ29uYWwgRWxlbWVu dFsweCVseF1bMHglbHhdICglM2QpLiINCj4gKyAgICAgICAgICAgICIgTm9ybWFsaXplZCBWYWx1 ZSBpcyBub3QgMTBcbiIsDQo+ICsgICAgICAgICAgaSwNCj4gKyAgICAgICAgICBqLA0KPiArICAg ICAgICAgIFNMSVRfRUxFTUVOVCAoTG9jYWxpdHlQdHIsIGksIGopDQo+ICsgICAgICAgICAgKTsN Cj4gKyAgICAgIH0NCj4gKyAgICAgIC8vIEVsZW1lbnRbaV1bal0gbXVzdCBiZSBlcXVhbCB0byBF bGVtZW50W2pdW2ldDQo+ICsgICAgICBpZiAoU0xJVF9FTEVNRU5UIChMb2NhbGl0eVB0ciwgaSwg aikgIT0NCj4gKyAgICAgICAgICBTTElUX0VMRU1FTlQgKExvY2FsaXR5UHRyLCBqLCBpKSkgew0K PiArICAgICAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiArICAgICAgICBQcmludCAoDQo+ ICsgICAgICAgICAgTCJFUlJPUjogUmVsYXRpdmUgZGlzdGFuY2VzIGZvciBFbGVtZW50WzB4JWx4 XVsweCVseF0gKCUzZCkgYW5kIFxuIg0KPiArICAgICAgICAgICAiRWxlbWVudFsweCVseF1bMHgl bHhdICglM2QpIGRvIG5vdCBtYXRjaC5cbiIsDQo+ICsgICAgICAgICAgaSwNCj4gKyAgICAgICAg ICBqLA0KPiArICAgICAgICAgIFNMSVRfRUxFTUVOVCAoTG9jYWxpdHlQdHIsIGksIGopLA0KPiAr ICAgICAgICAgIGosDQo+ICsgICAgICAgICAgaSwNCj4gKyAgICAgICAgICBTTElUX0VMRU1FTlQg KExvY2FsaXR5UHRyLCBqLCBpKQ0KPiArICAgICAgICAgICk7DQo+ICsgICAgICB9DQo+ICsgICAg fQ0KPiArICB9DQo+ICt9DQo+ICsNCj4gKy8qKiBSZWdpc3RlciB0aGUgcGFyc2VyLg0KPiArDQo+ ICsgIEBwYXJhbSBbaW5dICBJbWFnZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ ICsgIEBwYXJhbSBbaW5dICBTeXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxl Lg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMg cmVnaXN0ZXJlZC4NCj4gKyAgQHJldHZhbCBFRklfQUxSRUFEWV9TVEFSVEVEICAgVGhlIHBhcnNl ciBmb3IgdGhlIEFDUEkgVGFibGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aXMgYWxyZWFkeSByZWdpc3RlcmVkLg0KPiArKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0K PiArU2xpdFBhcnNlckxpYkNvbnN0cnVjdG9yICgNCj4gKyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAg ICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwNCj4gKyAgSU4gICAgICAgRUZJX1NZU1RFTV9UQUJM RSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0KPiArICApDQo+ICt7DQo+ICsgIHJldHVybiBSZWdpc3Rl clBhcnNlciAoDQo+ICsNCj4gRUZJX0FDUElfNl8yX1NZU1RFTV9MT0NBTElUWV9JTkZPUk1BVElP Tl9UQUJMRV9TSUdOQVRVUkUsDQo+ICsgICAgICAgICAgIFBhcnNlQWNwaVNsaXQNCj4gKyAgICAg ICAgICAgKTsNCj4gK30NCj4gKw0KPiArLyoqIERlcmVnaXN0ZXIgdGhlIHBhcnNlci4NCj4gKw0K PiArICBAcGFyYW0gW2luXSAgSW1hZ2VIYW5kbGUgIFRoZSBoYW5kbGUgdG8gdGhlIGltYWdlLg0K PiArICBAcGFyYW0gW2luXSAgU3lzdGVtVGFibGUgIFBvaW50ZXIgdG8gdGhlIFN5c3RlbSBUYWJs ZS4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgcGFyc2VyIGlz IGRlcmVnaXN0ZXJlZC4NCj4gKyAgQHJldHZhbCBFRklfTk9UX0ZPVU5EICAgICAgICAgVGhlIHBh cnNlciB3YXMgbm90IHJlZ2lzdGVyZWQuDQo+ICsqLw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJ DQo+ICtTbGl0UGFyc2VyTGliRGVzdHJ1Y3RvciAoDQo+ICsgIElOIENPTlNUIEVGSV9IQU5ETEUg ICAgICAgICAgICAgICAgSW1hZ2VIYW5kbGUsDQo+ICsgIElOICAgICAgIEVGSV9TWVNURU1fVEFC TEUgICogQ09OU1QgU3lzdGVtVGFibGUNCj4gKyAgKQ0KPiArew0KPiArICByZXR1cm4gRGVyZWdp c3RlclBhcnNlciAoDQo+ICsNCj4gRUZJX0FDUElfNl8yX1NZU1RFTV9MT0NBTElUWV9JTkZPUk1B VElPTl9UQUJMRV9TSUdOQVRVUkUNCj4gKyAgICAgICAgICAgKTsNCj4gK30NCj4gZGlmZiAtLWdp dCBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1NwY3JQYXJz ZXIuYw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1Nw Y3JQYXJzZXIuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleA0KPiAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZWY3OWNlYzllY2M1ZDQyNDhhNjRhNDc0 MQ0KPiAwOWRjYzhmYWQ1MTY4MA0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL1NoZWxsUGtnL0xp YnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1NwY3JQYXJzZXIuYw0KPiBAQCAtMCww ICsxLDIwNSBAQA0KPiArLyoqDQo+ICsgIFNQQ1IgdGFibGUgcGFyc2VyDQo+ICsNCj4gKyAgQ29w eXJpZ2h0IChjKSAyMDE2IC0gMjAxNywgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQu DQo+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gKyAg YXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRp dGlvbnMgb2YgdGhlIEJTRA0KPiBMaWNlbnNlDQo+ICsgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMg ZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gZm91 bmQgYXQNCj4gKyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBo cA0KPiArDQo+ICsgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElD RU5TRSBPTiBBTiAiQVMgSVMiDQo+IEJBU0lTLA0KPiArICBXSVRIT1VUIFdBUlJBTlRJRVMgT1Ig UkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVE Lg0KPiArDQo+ICsgIEBwYXIgUmVmZXJlbmNlKHMpOg0KPiArICAgIC0gTWljcm9zb2Z0IFNlcmlh bCBQb3J0IENvbnNvbGUgUmVkaXJlY3Rpb24gVGFibGUNCj4gKyAgICAgIFNwZWNpZmljYXRpb24g LSBWZXJzaW9uIDEuMDMgLSBBdWd1c3QgMTAsIDIwMTUuDQo+ICsqKi8NCj4gKw0KPiArI2luY2x1 ZGUgPEluZHVzdHJ5U3RhbmRhcmQvQWNwaS5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaUxp Yi5oPg0KPiArI2luY2x1ZGUgIkFjcGlQYXJzZXIuaCINCj4gKyNpbmNsdWRlICJBY3BpVmlldy5o Ig0KPiArI2luY2x1ZGUgIkFjcGlUYWJsZVBhcnNlci5oIg0KPiArDQo+ICsvLyBMb2NhbCB2YXJp YWJsZXMNCj4gK1NUQVRJQyBBQ1BJX0RFU0NSSVBUSU9OX0hFQURFUl9JTkZPIEFjcGlIZHJJbmZv Ow0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiB2YWxpZGF0ZXMgdGhlIEludGVycnVwdCBUeXBl Lg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2Yg dGhlIGZpZWxkIGRhdGEuDQo+ICsgIEBwYXJhbSBbaW5dIENvbnRleHQgUG9pbnRlciB0byBjb250 ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9uIGUuZy4gdGhpcw0KPiArICAgICAgICAgICAgICAgICAg ICAgIGNvdWxkIGJlIGEgcG9pbnRlciB0byB0aGUgQUNQSSB0YWJsZSBoZWFkZXIuDQo+ICsqLw0K PiArU1RBVElDDQo+ICtWT0lEDQo+ICtWYWxpZGF0ZUludGVycnVwdFR5cGUgKA0KPiArICBJTiBV SU5UOCogUHRyLA0KPiArICBJTiBWT0lEKiAgQ29udGV4dA0KPiArICApOw0KPiArDQo+ICsvKiog VGhpcyBmdW5jdGlvbiB2YWxpZGF0ZXMgdGhlIElycS4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBQ dHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBmaWVsZCBkYXRhLg0KPiArICBAcGFy YW0gW2luXSBDb250ZXh0IFBvaW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBl LmcuIHRoaXMNCj4gKyAgICAgICAgICAgICAgICAgICAgICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8g dGhlIEFDUEkgdGFibGUgaGVhZGVyLg0KPiArKi8NCj4gK1NUQVRJQw0KPiArVk9JRA0KPiArVmFs aWRhdGVJcnEgKA0KPiArICBJTiBVSU5UOCogUHRyLA0KPiArICBJTiBWT0lEKiAgQ29udGV4dA0K PiArICApOw0KPiArDQo+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUg QUNQSSBTUENSIFRhYmxlLg0KPiArKi8NCj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBTcGNy UGFyc2VyW10gPSB7DQo+ICsgIFBBUlNFX0FDUElfSEVBREVSICgmQWNwaUhkckluZm8pLA0KPiAr ICB7TCJJbnRlcmZhY2UgVHlwZSIsIDEsIDM2LCBMIiVkIiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TH0sDQo+ICsgIHtMIlJlc2VydmVkIiwgMywgMzcsIEwiJXggJXggJXgiLCBEdW1wM0NoYXJzLCBO VUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiQmFzZSBBZGRyZXNzIiwgMTIsIDQwLCBOVUxMLCBE dW1wR2FzLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiSW50ZXJydXB0IFR5cGUiLCAxLCA1 MiwgTCIlZCIsIE5VTEwsIE5VTEwsIFZhbGlkYXRlSW50ZXJydXB0VHlwZSwNCj4gTlVMTH0sDQo+ ICsgIHtMIklSUSIsIDEsIDUzLCBMIiVkIiwgTlVMTCwgTlVMTCwgVmFsaWRhdGVJcnEsIE5VTEx9 LA0KPiArICB7TCJHbG9iYWwgU3lzdGVtIEludGVycnVwdCIsIDQsIDU0LCBMIjB4JXgiLCBOVUxM LCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiQmF1ZCBSYXRlIiwgMSwgNTgsIEwiJWQiLCBO VUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUGFyaXR5IiwgMSwgNTksIEwiJWQiLCBO VUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiU3RvcCBCaXRzIiwgMSwgNjAsIEwiJWQi LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiRmxvdyBDb250cm9sIiwgMSwgNjEs IEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJUZXJtaW5hbCBUeXBl IiwgMSwgNjIsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUmVzZXJ2 ZWQiLCAxLCA2MywgTCIleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArDQo+ICsgIHtM IlBDSSBEZXZpY2UgSUQiLCAyLCA2NCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0s DQo+ICsgIHtMIlBDSSBWZW5kb3IgSUQiLCAyLCA2NiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVM TCwgTlVMTH0sDQo+ICsgIHtMIlBDSSBCdXMgTnVtYmVyIiwgMSwgNjgsIEwiMHgleCIsIE5VTEws IE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJQQ0kgRGV2aWNlIE51bWJlciIsIDEsIDY5LCBM IjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUENJIEZ1bmN0aW9uIE51 bWJlciIsIDEsIDcwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wi UENJIEZsYWdzIiwgNCwgNzEsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiAr ICB7TCJQQ0kgU2VnbWVudCIsIDEsIDc1LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM fSwNCj4gKyAge0wiUmVzZXJ2ZWQiLCA0LCA3NiwgTCIleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5V TEx9DQo+ICt9Ow0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiB2YWxpZGF0ZXMgdGhlIEludGVy cnVwdCBUeXBlLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUg c3RhcnQgb2YgdGhlIGZpZWxkIGRhdGEuDQo+ICsgIEBwYXJhbSBbaW5dIENvbnRleHQgUG9pbnRl ciB0byBjb250ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9uIGUuZy4gdGhpcw0KPiArICAgICAgICAg ICAgICAgICAgICAgIGNvdWxkIGJlIGEgcG9pbnRlciB0byB0aGUgQUNQSSB0YWJsZSBoZWFkZXIu DQo+ICsqLw0KPiArU1RBVElDDQo+ICtWT0lEDQo+ICtWYWxpZGF0ZUludGVycnVwdFR5cGUgKA0K PiArICBJTiBVSU5UOCogUHRyLA0KPiArICBJTiBWT0lEKiAgQ29udGV4dA0KPiArICApDQo+ICt7 DQo+ICsjaWYgZGVmaW5lZCAoTURFX0NQVV9BUk0pIHx8IGRlZmluZWQgKE1ERV9DUFVfQUFSQ0g2 NCkNCj4gKyAgVUlOVDggSW50ZXJydXB0VHlwZSA9ICpQdHI7DQo+ICsgIGlmICg4ICE9IEludGVy cnVwdFR5cGUpIHsNCj4gKyAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiArICAgIFByaW50 ICgNCj4gKyAgICAgIEwiXG5FUlJPUjogSW50ZXJydXB0VHlwZSA9ICVkLiBUaGlzIG11c3QgYmUg OCBvbiBBUk0gUGxhdGZvcm1zIiwNCj4gKyAgICAgIEludGVycnVwdFR5cGUNCj4gKyAgICAgICk7 DQo+ICsgIH0NCj4gKyNlbmRpZg0KPiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiB2YWxp ZGF0ZXMgdGhlIElycS4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8g dGhlIHN0YXJ0IG9mIHRoZSBmaWVsZCBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBDb250ZXh0IFBv aW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcuIHRoaXMNCj4gKyAgICAg ICAgICAgICAgICAgICAgICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUgaGVh ZGVyLg0KPiArKi8NCj4gK1NUQVRJQw0KPiArVk9JRA0KPiArVmFsaWRhdGVJcnEgKA0KPiArICBJ TiBVSU5UOCogUHRyLA0KPiArICBJTiBWT0lEKiAgQ29udGV4dA0KPiArICApDQo+ICt7DQo+ICsj aWYgZGVmaW5lZCAoTURFX0NQVV9BUk0pIHx8IGRlZmluZWQgKE1ERV9DUFVfQUFSQ0g2NCkNCj4g KyAgVUlOVDggSXJxID0gKlB0cjsNCj4gKyAgaWYgKElycSAhPSAwKSB7DQo+ICsgICAgSW5jcmVt ZW50RXJyb3JDb3VudCAoKTsNCj4gKyAgICBQcmludCAoDQo+ICsgICAgICBMIlxuRVJST1I6IEly cSA9ICVkLiBUaGlzIG11c3QgYmUgemVybyBvbiBBUk0gUGxhdGZvcm1zXG4iLA0KPiArICAgICAg SXJxDQo+ICsgICAgICApOw0KPiArICB9DQo+ICsjZW5kaWYNCj4gK30NCj4gKw0KPiArLyoqIFRo aXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBBQ1BJIFNQQ1IgdGFibGUuDQo+ICsgIFdoZW4gdHJhY2Ug aXMgZW5hYmxlZCB0aGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgU1BDUiB0YWJsZSBhbmQNCj4gKyAg dHJhY2VzIHRoZSBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4gKw0KPiArICBUaGlzIGZ1bmN0aW9uIGFs c28gcGVyZm9ybXMgdmFsaWRhdGlvbnMgb2YgdGhlIEFDUEkgdGFibGUgZmllbGRzLg0KPiArDQo+ ICsgIEBwYXJhbSBbaW5dIFRyYWNlICAgICAgICAgICAgICBJZiBUUlVFLCB0cmFjZSB0aGUgQUNQ SSBmaWVsZHMuDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgICAgICBQb2ludGVyIHRv IHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVMZW5n dGggICAgTGVuZ3RoIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiArICBAcGFyYW0gW2luXSBBY3BpVGFi bGVSZXZpc2lvbiAgUmV2aXNpb24gb2YgdGhlIEFDUEkgdGFibGUuDQo+ICsqLw0KPiArVk9JRA0K PiArRUZJQVBJDQo+ICtQYXJzZUFjcGlTcGNyICgNCj4gKyAgSU4gQk9PTEVBTiBUcmFjZSwNCj4g KyAgSU4gVUlOVDgqICBQdHIsDQo+ICsgIElOIFVJTlQzMiAgQWNwaVRhYmxlTGVuZ3RoLA0KPiAr ICBJTiBVSU5UOCAgIEFjcGlUYWJsZVJldmlzaW9uDQo+ICsgICkNCj4gK3sNCj4gKyAgaWYgKCFU cmFjZSkgew0KPiArICAgIHJldHVybjsNCj4gKyAgfQ0KPiArDQo+ICsgIC8vIER1bXAgdGhlIFNQ Q1INCj4gKyAgUGFyc2VBY3BpICgNCj4gKyAgICBUUlVFLA0KPiArICAgIDAsDQo+ICsgICAgIlNQ Q1IiLA0KPiArICAgIFB0ciwNCj4gKyAgICBBY3BpVGFibGVMZW5ndGgsDQo+ICsgICAgUEFSU0VS X1BBUkFNUyAoU3BjclBhcnNlcikNCj4gKyAgICApOw0KPiArfQ0KPiArDQo+ICsvKiogUmVnaXN0 ZXIgdGhlIHBhcnNlci4NCj4gKw0KPiArICBAcGFyYW0gW2luXSAgSW1hZ2VIYW5kbGUgIFRoZSBo YW5kbGUgdG8gdGhlIGltYWdlLg0KPiArICBAcGFyYW0gW2luXSAgU3lzdGVtVGFibGUgIFBvaW50 ZXIgdG8gdGhlIFN5c3RlbSBUYWJsZS4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAg ICAgICAgICBUaGUgcGFyc2VyIGlzIHJlZ2lzdGVyZWQuDQo+ICsgIEByZXR2YWwgRUZJX0FMUkVB RFlfU1RBUlRFRCAgIFRoZSBwYXJzZXIgZm9yIHRoZSBBQ1BJIFRhYmxlDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGlzIGFscmVhZHkgcmVnaXN0ZXJlZC4NCj4gKyovDQo+ICtF RklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK1NwY3JQYXJzZXJMaWJDb25zdHJ1Y3RvciAoDQo+ICsg IElOIENPTlNUIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgSW1hZ2VIYW5kbGUsDQo+ICsgIElO ICAgICAgIEVGSV9TWVNURU1fVEFCTEUgICogQ09OU1QgU3lzdGVtVGFibGUNCj4gKyAgKQ0KPiAr ew0KPiArICByZXR1cm4gUmVnaXN0ZXJQYXJzZXIgKA0KPiArDQo+IEVGSV9BQ1BJXzZfMl9TRVJJ QUxfUE9SVF9DT05TT0xFX1JFRElSRUNUSU9OX1RBQkxFX1NJR05BVFVSRSwNCj4gKyAgICAgICAg ICAgUGFyc2VBY3BpU3Bjcg0KPiArICAgICAgICAgICApOw0KPiArfQ0KPiArDQo+ICsvKiogRGVy ZWdpc3RlciB0aGUgcGFyc2VyLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dICBJbWFnZUhhbmRsZSAg VGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ICsgIEBwYXJhbSBbaW5dICBTeXN0ZW1UYWJsZSAg UG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NF U1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgZGVyZWdpc3RlcmVkLg0KPiArICBAcmV0dmFsIEVG SV9OT1RfRk9VTkQgICAgICAgICBUaGUgcGFyc2VyIHdhcyBub3QgcmVnaXN0ZXJlZC4NCj4gKyov DQo+ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK1NwY3JQYXJzZXJMaWJEZXN0cnVjdG9yICgN Cj4gKyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwNCj4g KyAgSU4gICAgICAgRUZJX1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0KPiArICAp DQo+ICt7DQo+ICsgIHJldHVybiBEZXJlZ2lzdGVyUGFyc2VyICgNCj4gKw0KPiBFRklfQUNQSV82 XzJfU0VSSUFMX1BPUlRfQ09OU09MRV9SRURJUkVDVElPTl9UQUJMRV9TSUdOQVRVUkUNCj4gKyAg ICAgICAgICAgKTsNCj4gK30NCj4gZGlmZiAtLWdpdCBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNo ZWxsQWNwaVZpZXdDb21tYW5kTGliL1NyYXRQYXJzZXIuYw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkv VWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1NyYXRQYXJzZXIuYw0KPiBuZXcgZmlsZSBtb2Rl IDEwMDY0NA0KPiBpbmRleA0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwLi41MWE0OGUzMDM1NDFiNzlhMzNkZTczNjViDQo+IDgyZGE2YTM3YzRkNGRjNg0KPiAtLS0g L2Rldi9udWxsDQo+ICsrKyBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21t YW5kTGliL1NyYXRQYXJzZXIuYw0KPiBAQCAtMCwwICsxLDM3MSBAQA0KPiArLyoqDQo+ICsgIFNS QVQgdGFibGUgcGFyc2VyDQo+ICsNCj4gKyAgQ29weXJpZ2h0IChjKSAyMDE2IC0gMjAxNywgQVJN IExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhl IGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gKyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWls YWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRA0KPiBMaWNlbnNl DQo+ICsgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4 dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gZm91bmQgYXQNCj4gKyAgaHR0cDovL29wZW5zb3Vy Y2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiArDQo+ICsgIFRIRSBQUk9HUkFNIElT IERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+IEJBU0lT LA0KPiArICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5E LCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiArDQo+ICsgIEBwYXIgUmVmZXJlbmNl KHMpOg0KPiArICAgIC0gQUNQSSA2LjIgU3BlY2lmaWNhdGlvbiAtIEVycmF0YSBBLCBTZXB0ZW1i ZXIgMjAxNw0KPiArKiovDQo+ICsNCj4gKyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJkL0FjcGku aD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1ByaW50TGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFy eS9VZWZpTGliLmg+DQo+ICsjaW5jbHVkZSAiQWNwaVBhcnNlci5oIg0KPiArI2luY2x1ZGUgIkFj cGlWaWV3LmgiDQo+ICsjaW5jbHVkZSAiQWNwaVRhYmxlUGFyc2VyLmgiDQo+ICsNCj4gKy8vIExv Y2FsIFZhcmlhYmxlcw0KPiArU1RBVElDIENPTlNUIFVJTlQ4KiBTcmF0UkFUeXBlOw0KPiArU1RB VElDIENPTlNUIFVJTlQ4KiBTcmF0UkFMZW5ndGg7DQo+ICtTVEFUSUMgQUNQSV9ERVNDUklQVElP Tl9IRUFERVJfSU5GTyBBY3BpSGRySW5mbzsNCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gdmFs aWRhdGVzIHRoZSBSZXNlcnZlZCBmaWVsZCBpbiB0aGUgU1JBVCB0YWJsZSBoZWFkZXIuDQo+ICsN Cj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgZmll bGQgZGF0YS4NCj4gKyAgQHBhcmFtIFtpbl0gQ29udGV4dCBQb2ludGVyIHRvIGNvbnRleHQgc3Bl Y2lmaWMgaW5mb3JtYXRpb24gZS5nLiB0aGlzDQo+ICsgICAgICAgICAgICAgICAgICAgICAgY291 bGQgYmUgYSBwb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhlYWRlci4NCj4gKyovDQo+ICtTVEFU SUMNCj4gK1ZPSUQNCj4gK1ZhbGlkYXRlU3JhdFJlc2VydmVkICgNCj4gKyAgSU4gVUlOVDgqIFB0 ciwNCj4gKyAgSU4gVk9JRCogIENvbnRleHQNCj4gKyAgKTsNCj4gKw0KPiArLyoqIFRoaXMgZnVu Y3Rpb24gdHJhY2VzIHRoZSBBUElDIFByb3hpbWl0eSBEb21haW4gZmllbGQuDQo+ICsNCj4gKyAg QHBhcmFtIFtpbl0gRm9ybWF0ICBGb3JtYXQgc3RyaW5nIGZvciB0cmFjaW5nIHRoZSBkYXRhLg0K PiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZm ZXIuDQo+ICsqLw0KPiArU1RBVElDDQo+ICtWT0lEDQo+ICtEdW1wU3JhdEFwaWNQcm94aW1pdHkg KA0KPiArICBJTiAgQ09OU1QgQ0hBUjE2KiAgRm9ybWF0LA0KPiArICBJTiAgVUlOVDgqICAgICAg ICAgUHRyDQo+ICsgICk7DQo+ICsNCj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmli aW5nIHRoZSBTUkFUIFRhYmxlLg0KPiArKi8NCj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBT cmF0UGFyc2VyW10gPSB7DQo+ICsgIFBBUlNFX0FDUElfSEVBREVSICgmQWNwaUhkckluZm8pLA0K PiArICB7TCJSZXNlcnZlZCIsIDQsIDM2LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBWYWxpZGF0ZVNy YXRSZXNlcnZlZCwgTlVMTH0sDQo+ICsgIHtMIlJlc2VydmVkIiwgOCwgNDAsIEwiMHglbHgiLCBO VUxMLCBOVUxMLCBOVUxMLCBOVUxMfQ0KPiArfTsNCj4gKw0KPiArLyoqIEFuIEFDUElfUEFSU0VS IGFycmF5IGRlc2NyaWJpbmcgdGhlIFJlc291cmNlIEFsbG9jYXRpb24NCj4gKyAgICBzdHJ1Y3R1 cmUgaGVhZGVyLg0KPiArKi8NCj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBTcmF0UmVzb3Vy Y2VBbGxvY2F0aW9uUGFyc2VyW10gPSB7DQo+ICsgIHtMIlR5cGUiLCAxLCAwLCBOVUxMLCBOVUxM LCAoVk9JRCoqKSZTcmF0UkFUeXBlLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiTGVuZ3RoIiwgMSwg MSwgTlVMTCwgTlVMTCwgKFZPSUQqKikmU3JhdFJBTGVuZ3RoLCBOVUxMLCBOVUxMfQ0KPiArfTsN Cj4gKw0KPiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIEdJQ0MgQWZm aW5pdHkgc3RydWN0dXJlLg0KPiArKi8NCj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBTcmF0 R2ljQ0FmZmluaXR5UGFyc2VyW10gPSB7DQo+ICsgIHtMIlR5cGUiLCAxLCAwLCBMIjB4JXgiLCBO VUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiTGVuZ3RoIiwgMSwgMSwgTCIweCV4Iiwg TlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsNCj4gKyAge0wiUHJveGltaXR5IERvbWFpbiIs IDQsIDIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJBQ1BJIFBy b2Nlc3NvciBVSUQiLCA0LCA2LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4g KyAge0wiRmxhZ3MiLCA0LCAxMCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ ICsgIHtMIkNsb2NrIERvbWFpbiIsIDQsIDE0LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBO VUxMfQ0KPiArfTsNCj4gKw0KPiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcg dGhlIEdJQyBJVFMgQWZmaW5pdHkgc3RydWN0dXJlLg0KPiArKi8NCj4gK1NUQVRJQyBDT05TVCBB Q1BJX1BBUlNFUiBTcmF0R2ljSVRTQWZmaW5pdHlQYXJzZXJbXSA9IHsNCj4gKyAge0wiVHlwZSIs IDEsIDAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJMZW5ndGgi LCAxLCAxLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKw0KPiArICB7TCJQ cm94aW1pdHkgRG9tYWluIiwgNCwgMiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0s DQo+ICsgIHtMIlJlc2VydmVkIiwgMiwgNiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TH0sDQo+ICsgIHtMIklUUyBJZCIsIDQsIDgsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5V TEx9LA0KPiArfTsNCj4gKw0KPiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcg dGhlIE1lbW9yeSBBZmZpbml0eSBzdHJ1Y3R1cmUuDQo+ICsqLw0KPiArU1RBVElDIENPTlNUIEFD UElfUEFSU0VSIFNyYXRNZW1BZmZpbml0eVBhcnNlcltdID0gew0KPiArICB7TCJUeXBlIiwgMSwg MCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkxlbmd0aCIsIDEs IDEsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArDQo+ICsgIHtMIlByb3hp bWl0eSBEb21haW4iLCA0LCAyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4g KyAge0wiUmVzZXJ2ZWQiLCAyLCA2LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwN Cj4gKyAge0wiQmFzZSBBZGRyZXNzIExvdyIsIDQsIDgsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5V TEwsIE5VTEx9LA0KPiArICB7TCJCYXNlIEFkZHJlc3MgSGlnaCIsIDQsIDEyLCBMIjB4JXgiLCBO VUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiTGVuZ3RoIExvdyIsIDQsIDE2LCBMIjB4 JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiTGVuZ3RoIEhpZ2giLCA0LCAy MCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlJlc2VydmVkIiwg NCwgMjQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJGbGFncyIs IDQsIDI4LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUmVzZXJ2 ZWQiLCA4LCAzMiwgTCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9DQo+ICt9Ow0KPiAr DQo+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgQVBJQy9TQVBJQyBB ZmZpbml0eSBzdHJ1Y3R1cmUuDQo+ICsqLw0KPiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIFNy YXRBcGNpU2FwaWNBZmZpbml0eVBhcnNlcltdID0gew0KPiArICB7TCJUeXBlIiwgMSwgMCwgTCIw eCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkxlbmd0aCIsIDEsIDEsIEwi MHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArDQo+ICsgIHtMIlByb3hpbWl0eSBE b21haW4gWzc6MF0iLCAxLCAyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4g KyAge0wiQVBJQyBJRCIsIDEsIDMsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0K PiArICB7TCJGbGFncyIsIDQsIDQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0K PiArICB7TCJMb2NhbCBTQVBJQyBFSUQiLCAxLCA4LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxM LCBOVUxMfSwNCj4gKyAge0wiUHJveGltaXR5IERvbWFpbiBbMzE6OF0iLCAzLCA5LCBMIjB4JXgi LCBEdW1wU3JhdEFwaWNQcm94aW1pdHksDQo+ICsgICBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAg e0wiQ2xvY2sgRG9tYWluIiwgNCwgMTIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9 DQo+ICt9Ow0KPiArDQo+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUg UHJvY2Vzc29yIExvY2FsIHgyQVBJQw0KPiArICAgIEFmZmluaXR5IHN0cnVjdHVyZS4NCj4gKyov DQo+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgU3JhdFgyQXBjaUFmZmluaXR5UGFyc2VyW10g PSB7DQo+ICsgIHtMIlR5cGUiLCAxLCAwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM fSwNCj4gKyAge0wiTGVuZ3RoIiwgMSwgMSwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TH0sDQo+ICsNCj4gKyAge0wiUmVzZXJ2ZWQiLCAyLCAyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBO VUxMLCBOVUxMfSwNCj4gKyAge0wiUHJveGltaXR5IERvbWFpbiIsIDQsIDQsIEwiMHgleCIsIE5V TEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJYMkFQSUMgSUQiLCA0LCA4LCBMIjB4JXgi LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiRmxhZ3MiLCA0LCAxMiwgTCIweCV4 IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkNsb2NrIERvbWFpbiIsIDQsIDE2 LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUmVzZXJ2ZWQiLCA0 LCAyMCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0NCj4gK307DQo+ICsNCj4gKy8q KiBUaGlzIGZ1bmN0aW9uIHZhbGlkYXRlcyB0aGUgUmVzZXJ2ZWQgZmllbGQgaW4gdGhlIFNSQVQg dGFibGUgaGVhZGVyLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0 aGUgc3RhcnQgb2YgdGhlIGZpZWxkIGRhdGEuDQo+ICsgIEBwYXJhbSBbaW5dIENvbnRleHQgUG9p bnRlciB0byBjb250ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9uIGUuZy4gdGhpcw0KPiArICAgICAg ICAgICAgICAgICAgICAgIGNvdWxkIGJlIGEgcG9pbnRlciB0byB0aGUgQUNQSSB0YWJsZSBoZWFk ZXIuDQo+ICsqLw0KPiArU1RBVElDDQo+ICtWT0lEDQo+ICtWYWxpZGF0ZVNyYXRSZXNlcnZlZCAo DQo+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ICsgICkNCj4g K3sNCj4gKyAgaWYgKDEgIT0gKihVSU5UMzIqKVB0cikgew0KPiArICAgIEluY3JlbWVudEVycm9y Q291bnQgKCk7DQo+ICsgICAgUHJpbnQgKEwiXG5FUlJPUjogUmVzZXJ2ZWQgc2hvdWxkIGJlIDEg Zm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuXG4iKTsNCj4gKyAgfQ0KPiArfQ0KPiArDQo+ICsv KiogVGhpcyBmdW5jdGlvbiB0cmFjZXMgdGhlIEFQSUMgUHJveGltaXR5IERvbWFpbiBmaWVsZC4N Cj4gKw0KPiArICBAcGFyYW0gW2luXSBGb3JtYXQgIEZvcm1hdCBzdHJpbmcgZm9yIHRyYWNpbmcg dGhlIGRhdGEuDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQg b2YgdGhlIGJ1ZmZlci4NCj4gKyovDQo+ICtTVEFUSUMNCj4gK1ZPSUQNCj4gK0R1bXBTcmF0QXBp Y1Byb3hpbWl0eSAoDQo+ICsgSU4gQ09OU1QgQ0hBUjE2KiBGb3JtYXQsDQo+ICsgSU4gVUlOVDgq ICAgICAgICBQdHINCj4gKyApDQo+ICt7DQo+ICsgIFVJTlQzMiBQcm94aW1pdHlEb21haW4gPSBQ dHJbMF0gfCAoUHRyWzFdIDw8IDgpIHwgKFB0clsyXSA8PCAxNik7DQo+ICsgIFByaW50IChGb3Jt YXQsIFByb3hpbWl0eURvbWFpbik7DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBh cnNlcyB0aGUgQUNQSSBTUkFUIHRhYmxlLg0KPiArICBXaGVuIHRyYWNlIGlzIGVuYWJsZWQgdGhp cyBmdW5jdGlvbiBwYXJzZXMgdGhlIFNSQVQgdGFibGUgYW5kDQo+ICsgIHRyYWNlcyB0aGUgQUNQ SSB0YWJsZSBmaWVsZHMuDQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIGZvbGxv d2luZyBSZXNvdXJjZSBBbGxvY2F0aW9uIFN0cnVjdHVyZXM6DQo+ICsgICAgLSBQcm9jZXNzb3Ig TG9jYWwgQVBJQy9TQVBJQyBBZmZpbml0eSBTdHJ1Y3R1cmUNCj4gKyAgICAtIE1lbW9yeSBBZmZp bml0eSBTdHJ1Y3R1cmUNCj4gKyAgICAtIFByb2Nlc3NvciBMb2NhbCB4MkFQSUMgQWZmaW5pdHkg U3RydWN0dXJlDQo+ICsgICAgLSBHSUNDIEFmZmluaXR5IFN0cnVjdHVyZQ0KPiArDQo+ICsgIFRo aXMgZnVuY3Rpb24gYWxzbyBwZXJmb3JtcyB2YWxpZGF0aW9uIG9mIHRoZSBBQ1BJIHRhYmxlIGZp ZWxkcy4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBUcmFjZSAgICAgICAgICAgICAgSWYgVFJVRSwg dHJhY2UgdGhlIEFDUEkgZmllbGRzLg0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICAg ICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gKyAgQHBhcmFtIFtpbl0g QWNwaVRhYmxlTGVuZ3RoICAgIExlbmd0aCBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gKyAgQHBhcmFt IFtpbl0gQWNwaVRhYmxlUmV2aXNpb24gIFJldmlzaW9uIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiAr Ki8NCj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArUGFyc2VBY3BpU3JhdCAoDQo+ICsgIElOIEJPT0xF QU4gVHJhY2UsDQo+ICsgIElOIFVJTlQ4KiAgUHRyLA0KPiArICBJTiBVSU5UMzIgIEFjcGlUYWJs ZUxlbmd0aCwNCj4gKyAgSU4gVUlOVDggICBBY3BpVGFibGVSZXZpc2lvbg0KPiArICApDQo+ICt7 DQo+ICsgIFVJTlQzMiBPZmZzZXQ7DQo+ICsgIFVJTlQ4KiBSZXNvdXJjZVB0cjsNCj4gKyAgVUlO VDMyIEdpY0NBZmZpbml0eUluZGV4ID0gMDsNCj4gKyAgVUlOVDMyIEdpY0lUU0FmZmluaXR5SW5k ZXggPSAwOw0KPiArICBVSU5UMzIgTWVtb3J5QWZmaW5pdHlJbmRleCA9IDA7DQo+ICsgIFVJTlQz MiBBcGljU2FwaWNBZmZpbml0eUluZGV4ID0gMDsNCj4gKyAgVUlOVDMyIFgyQXBpY0FmZmluaXR5 SW5kZXggPSAwOw0KPiArICBDSEFSOCAgQnVmZmVyWzgwXTsgIC8vIFVzZWQgZm9yIEFzY2lpTmFt ZSBwYXJhbSBvZiBQYXJzZUFjcGkNCj4gKw0KPiArICBpZiAoIVRyYWNlKSB7DQo+ICsgICAgcmV0 dXJuOw0KPiArICB9DQo+ICsNCj4gKyAgT2Zmc2V0ID0gUGFyc2VBY3BpICgNCj4gKyAgICAgICAg ICAgICBUUlVFLA0KPiArICAgICAgICAgICAgIDAsDQo+ICsgICAgICAgICAgICAgIlNSQVQiLA0K PiArICAgICAgICAgICAgIFB0ciwNCj4gKyAgICAgICAgICAgICBBY3BpVGFibGVMZW5ndGgsDQo+ ICsgICAgICAgICAgICAgUEFSU0VSX1BBUkFNUyAoU3JhdFBhcnNlcikNCj4gKyAgICAgICAgICAg ICApOw0KPiArICBSZXNvdXJjZVB0ciA9IFB0ciArIE9mZnNldDsNCj4gKw0KPiArICB3aGlsZSAo T2Zmc2V0IDwgQWNwaVRhYmxlTGVuZ3RoKSB7DQo+ICsgICAgUGFyc2VBY3BpICgNCj4gKyAgICAg IEZBTFNFLA0KPiArICAgICAgMCwNCj4gKyAgICAgIE5VTEwsDQo+ICsgICAgICBSZXNvdXJjZVB0 ciwNCj4gKyAgICAgIDIsICAvLyBUaGUgbGVuZ3RoIGlzIDEgYnl0ZSBhdCBvZmZzZXQgMQ0KPiAr ICAgICAgUEFSU0VSX1BBUkFNUyAoU3JhdFJlc291cmNlQWxsb2NhdGlvblBhcnNlcikNCj4gKyAg ICAgICk7DQo+ICsNCj4gKyAgICBzd2l0Y2ggKCpTcmF0UkFUeXBlKSB7DQo+ICsgICAgICBjYXNl IEVGSV9BQ1BJXzZfMl9HSUNDX0FGRklOSVRZOg0KPiArICAgICAgICBBc2NpaVNQcmludCAoDQo+ ICsgICAgICAgICAgQnVmZmVyLA0KPiArICAgICAgICAgIHNpemVvZiAoQnVmZmVyKSwNCj4gKyAg ICAgICAgICAiR0lDQyBBZmZpbml0eSBTdHJ1Y3R1cmUgWyVkXSIsDQo+ICsgICAgICAgICAgR2lj Q0FmZmluaXR5SW5kZXgrKw0KPiArICAgICAgICAgICk7DQo+ICsgICAgICAgIFBhcnNlQWNwaSAo DQo+ICsgICAgICAgICAgVFJVRSwNCj4gKyAgICAgICAgICAyLA0KPiArICAgICAgICAgIEJ1ZmZl ciwNCj4gKyAgICAgICAgICBSZXNvdXJjZVB0ciwNCj4gKyAgICAgICAgICAqU3JhdFJBTGVuZ3Ro LA0KPiArICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKFNyYXRHaWNDQWZmaW5pdHlQYXJzZXIpDQo+ ICsgICAgICAgICAgKTsNCj4gKyAgICAgICAgYnJlYWs7DQo+ICsNCj4gKyAgICAgIGNhc2UgRUZJ X0FDUElfNl8yX0dJQ19JVFNfQUZGSU5JVFk6DQo+ICsgICAgICAgIEFzY2lpU1ByaW50ICgNCj4g KyAgICAgICAgICBCdWZmZXIsDQo+ICsgICAgICAgICAgc2l6ZW9mIChCdWZmZXIpLA0KPiArICAg ICAgICAgICJHSUMgSVRTIEFmZmluaXR5IFN0cnVjdHVyZSBbJWRdIiwNCj4gKyAgICAgICAgICBH aWNJVFNBZmZpbml0eUluZGV4KysNCj4gKyAgICAgICAgKTsNCj4gKyAgICAgICAgUGFyc2VBY3Bp ICgNCj4gKyAgICAgICAgICBUUlVFLA0KPiArICAgICAgICAgIDIsDQo+ICsgICAgICAgICAgQnVm ZmVyLA0KPiArICAgICAgICAgIFJlc291cmNlUHRyLA0KPiArICAgICAgICAgICpTcmF0UkFMZW5n dGgsDQo+ICsgICAgICAgICAgUEFSU0VSX1BBUkFNUyAoU3JhdEdpY0lUU0FmZmluaXR5UGFyc2Vy KQ0KPiArICAgICAgICApOw0KPiArICAgICAgICBicmVhazsNCj4gKw0KPiArICAgICAgY2FzZSBF RklfQUNQSV82XzJfTUVNT1JZX0FGRklOSVRZOg0KPiArICAgICAgICBBc2NpaVNQcmludCAoDQo+ ICsgICAgICAgICAgQnVmZmVyLA0KPiArICAgICAgICAgIHNpemVvZiAoQnVmZmVyKSwNCj4gKyAg ICAgICAgICAiTWVtb3J5IEFmZmluaXR5IFN0cnVjdHVyZSBbJWRdIiwNCj4gKyAgICAgICAgICBN ZW1vcnlBZmZpbml0eUluZGV4KysNCj4gKyAgICAgICAgICApOw0KPiArICAgICAgICBQYXJzZUFj cGkgKA0KPiArICAgICAgICAgIFRSVUUsDQo+ICsgICAgICAgICAgMiwNCj4gKyAgICAgICAgICBC dWZmZXIsDQo+ICsgICAgICAgICAgUmVzb3VyY2VQdHIsDQo+ICsgICAgICAgICAgKlNyYXRSQUxl bmd0aCwNCj4gKyAgICAgICAgICBQQVJTRVJfUEFSQU1TIChTcmF0TWVtQWZmaW5pdHlQYXJzZXIp DQo+ICsgICAgICAgICAgKTsNCj4gKyAgICAgICAgYnJlYWs7DQo+ICsNCj4gKyAgICAgIGNhc2Ug RUZJX0FDUElfNl8yX1BST0NFU1NPUl9MT0NBTF9BUElDX1NBUElDX0FGRklOSVRZOg0KPiArICAg ICAgICBBc2NpaVNQcmludCAoDQo+ICsgICAgICAgICAgQnVmZmVyLA0KPiArICAgICAgICAgIHNp emVvZiAoQnVmZmVyKSwNCj4gKyAgICAgICAgICAiQVBJQy9TQVBJQyBBZmZpbml0eSBTdHJ1Y3R1 cmUgWyVkXSIsDQo+ICsgICAgICAgICAgQXBpY1NhcGljQWZmaW5pdHlJbmRleCsrDQo+ICsgICAg ICAgICAgKTsNCj4gKyAgICAgICAgUGFyc2VBY3BpICgNCj4gKyAgICAgICAgICBUUlVFLA0KPiAr ICAgICAgICAgIDIsDQo+ICsgICAgICAgICAgQnVmZmVyLA0KPiArICAgICAgICAgIFJlc291cmNl UHRyLA0KPiArICAgICAgICAgICpTcmF0UkFMZW5ndGgsDQo+ICsgICAgICAgICAgUEFSU0VSX1BB UkFNUyAoU3JhdEFwY2lTYXBpY0FmZmluaXR5UGFyc2VyKQ0KPiArICAgICAgICAgICk7DQo+ICsg ICAgICAgIGJyZWFrOw0KPiArDQo+ICsgICAgICBjYXNlIEVGSV9BQ1BJXzZfMl9QUk9DRVNTT1Jf TE9DQUxfWDJBUElDX0FGRklOSVRZOg0KPiArICAgICAgICBBc2NpaVNQcmludCAoDQo+ICsgICAg ICAgICAgQnVmZmVyLA0KPiArICAgICAgICAgIHNpemVvZiAoQnVmZmVyKSwNCj4gKyAgICAgICAg ICAiWDJBUElDIEFmZmluaXR5IFN0cnVjdHVyZSBbJWRdIiwNCj4gKyAgICAgICAgICBYMkFwaWNB ZmZpbml0eUluZGV4KysNCj4gKyAgICAgICAgICApOw0KPiArICAgICAgICBQYXJzZUFjcGkgKA0K PiArICAgICAgICAgIFRSVUUsDQo+ICsgICAgICAgICAgMiwNCj4gKyAgICAgICAgICBCdWZmZXIs DQo+ICsgICAgICAgICAgUmVzb3VyY2VQdHIsDQo+ICsgICAgICAgICAgKlNyYXRSQUxlbmd0aCwN Cj4gKyAgICAgICAgICBQQVJTRVJfUEFSQU1TIChTcmF0WDJBcGNpQWZmaW5pdHlQYXJzZXIpDQo+ ICsgICAgICAgICAgKTsNCj4gKyAgICAgICAgYnJlYWs7DQo+ICsNCj4gKyAgICAgIGRlZmF1bHQ6 DQo+ICsgICAgICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7DQo+ICsgICAgICAgIFByaW50IChM IkVSUk9SOiBVbmtub3duIFNSQVQgQWZmaW5pdHkgdHlwZVxuIik7DQo+ICsgICAgICAgIGJyZWFr Ow0KPiArICAgIH0NCj4gKw0KPiArICAgIFJlc291cmNlUHRyICs9ICgqU3JhdFJBTGVuZ3RoKTsN Cj4gKyAgICBPZmZzZXQgKz0gKCpTcmF0UkFMZW5ndGgpOw0KPiArICB9DQo+ICt9DQo+ICsNCj4g Ky8qKiBSZWdpc3RlciB0aGUgcGFyc2VyLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dICBJbWFnZUhh bmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ICsgIEBwYXJhbSBbaW5dICBTeXN0ZW1U YWJsZSAgUG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJ X1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgcmVnaXN0ZXJlZC4NCj4gKyAgQHJldHZh bCBFRklfQUxSRUFEWV9TVEFSVEVEICAgVGhlIHBhcnNlciBmb3IgdGhlIEFDUEkgVGFibGUNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgYWxyZWFkeSByZWdpc3RlcmVkLg0K PiArKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArU3JhdFBhcnNlckxpYkNvbnN0cnVj dG9yICgNCj4gKyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICBJbWFnZUhhbmRs ZSwNCj4gKyAgSU4gICAgICAgRUZJX1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0K PiArICApDQo+ICt7DQo+ICsgIHJldHVybiBSZWdpc3RlclBhcnNlciAoDQo+ICsgICAgICAgICAg IEVGSV9BQ1BJXzZfMl9TWVNURU1fUkVTT1VSQ0VfQUZGSU5JVFlfVEFCTEVfU0lHTkFUVVJFLA0K PiArICAgICAgICAgICBQYXJzZUFjcGlTcmF0DQo+ICsgICAgICAgICAgICk7DQo+ICt9DQo+ICsN Cj4gKy8qKiBEZXJlZ2lzdGVyIHRoZSBwYXJzZXIuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gIElt YWdlSGFuZGxlICBUaGUgaGFuZGxlIHRvIHRoZSBpbWFnZS4NCj4gKyAgQHBhcmFtIFtpbl0gIFN5 c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUuDQo+ICsNCj4gKyAgQHJldHZh bCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNlciBpcyBkZXJlZ2lzdGVyZWQuDQo+ICsg IEByZXR2YWwgRUZJX05PVF9GT1VORCAgICAgICAgIFRoZSBwYXJzZXIgd2FzIG5vdCByZWdpc3Rl cmVkLg0KPiArKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArU3JhdFBhcnNlckxpYkRl c3RydWN0b3IgKA0KPiArICBJTiBDT05TVCBFRklfSEFORExFICAgICAgICAgICAgICAgIEltYWdl SGFuZGxlLA0KPiArICBJTiAgICAgICBFRklfU1lTVEVNX1RBQkxFICAqIENPTlNUIFN5c3RlbVRh YmxlDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIERlcmVnaXN0ZXJQYXJzZXIgKA0KPiArICAg ICAgICAgICBFRklfQUNQSV82XzJfU1lTVEVNX1JFU09VUkNFX0FGRklOSVRZX1RBQkxFX1NJR05B VFVSRQ0KPiArICAgICAgICAgICApOw0KPiArfQ0KPiBkaWZmIC0tZ2l0IGEvU2hlbGxQa2cvTGli cmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvU3NkdFBhcnNlci5jDQo+IGIvU2hlbGxQ a2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvU3NkdFBhcnNlci5jDQo+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAuLmQzNGQ4NzYyMDFlMWIxNzFkNjliNzZlMGMNCj4gMjk5MWEzOGQ0MTUy MjQ4DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxB Y3BpVmlld0NvbW1hbmRMaWIvU3NkdFBhcnNlci5jDQo+IEBAIC0wLDAgKzEsOTAgQEANCj4gKy8q Kg0KPiArICBTU0RUIHRhYmxlIHBhcnNlcg0KPiArDQo+ICsgIENvcHlyaWdodCAoYykgMjAxNiAt IDIwMTcsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArICBUaGlzIHByb2dy YW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICsgIGFyZSBsaWNlbnNlZCBhbmQg bWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QN Cj4gTGljZW5zZQ0KPiArICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRo ZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlDQo+IGZvdW5kIGF0DQo+ICsgIGh0dHA6 Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gKw0KPiArICBUSEUg UFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElT Ig0KPiBCQVNJUywNCj4gKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBP RiBBTlkgS0lORCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gKw0KPiArICBAcGFy IFJlZmVyZW5jZShzKToNCj4gKyAgICAtIEFDUEkgNi4yIFNwZWNpZmljYXRpb24gLSBFcnJhdGEg QSwgU2VwdGVtYmVyIDIwMTcNCj4gKyoqLw0KPiArDQo+ICsjaW5jbHVkZSA8SW5kdXN0cnlTdGFu ZGFyZC9BY3BpLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpTGliLmg+DQo+ICsjaW5jbHVk ZSAiQWNwaVBhcnNlci5oIg0KPiArI2luY2x1ZGUgIkFjcGlWaWV3LmgiDQo+ICsjaW5jbHVkZSAi QWNwaVRhYmxlUGFyc2VyLmgiDQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUg QUNQSSBTU0RUIHRhYmxlLg0KPiArICBXaGVuIHRyYWNlIGlzIGVuYWJsZWQgdGhpcyBmdW5jdGlv biBwYXJzZXMgdGhlIFNTRFQgdGFibGUgYW5kDQo+ICsgIHRyYWNlcyB0aGUgQUNQSSB0YWJsZSBm aWVsZHMuDQo+ICsgIEZvciB0aGUgU1NEVCB0YWJsZSBvbmx5IHRoZSBBQ1BJIGhlYWRlciBmaWVs ZHMgYXJlDQo+ICsgIHBhcnNlZCBhbmQgdHJhY2VkLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFRy YWNlICAgICAgICAgICAgICBJZiBUUlVFLCB0cmFjZSB0aGUgQUNQSSBmaWVsZHMuDQo+ICsgIEBw YXJhbSBbaW5dIFB0ciAgICAgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUg YnVmZmVyLg0KPiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVMZW5ndGggICAgTGVuZ3RoIG9mIHRo ZSBBQ1BJIHRhYmxlLg0KPiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVSZXZpc2lvbiAgUmV2aXNp b24gb2YgdGhlIEFDUEkgdGFibGUuDQo+ICsqLw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtQYXJz ZUFjcGlTc2R0ICgNCj4gKyAgSU4gQk9PTEVBTiBUcmFjZSwNCj4gKyAgSU4gVUlOVDgqICBQdHIs DQo+ICsgIElOIFVJTlQzMiAgQWNwaVRhYmxlTGVuZ3RoLA0KPiArICBJTiBVSU5UOCAgIEFjcGlU YWJsZVJldmlzaW9uDQo+ICsgICkNCj4gK3sNCj4gKyAgaWYgKCFUcmFjZSkgew0KPiArICAgIHJl dHVybjsNCj4gKyAgfQ0KPiArDQo+ICsgIER1bXBBY3BpSGVhZGVyIChQdHIpOw0KPiArfQ0KPiAr DQo+ICsvKiogUmVnaXN0ZXIgdGhlIHBhcnNlci4NCj4gKw0KPiArICBAcGFyYW0gW2luXSAgSW1h Z2VIYW5kbGUgIFRoZSBoYW5kbGUgdG8gdGhlIGltYWdlLg0KPiArICBAcGFyYW0gW2luXSAgU3lz dGVtVGFibGUgIFBvaW50ZXIgdG8gdGhlIFN5c3RlbSBUYWJsZS4NCj4gKw0KPiArICBAcmV0dmFs IEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgcGFyc2VyIGlzIHJlZ2lzdGVyZWQuDQo+ICsgIEBy ZXR2YWwgRUZJX0FMUkVBRFlfU1RBUlRFRCAgIFRoZSBwYXJzZXIgZm9yIHRoZSBBQ1BJIFRhYmxl DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGFscmVhZHkgcmVnaXN0ZXJl ZC4NCj4gKyovDQo+ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK1NzZHRQYXJzZXJMaWJDb25z dHJ1Y3RvciAoDQo+ICsgIElOIENPTlNUIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgSW1hZ2VI YW5kbGUsDQo+ICsgIElOICAgICAgIEVGSV9TWVNURU1fVEFCTEUgICogQ09OU1QgU3lzdGVtVGFi bGUNCj4gKyAgKQ0KPiArew0KPiArICByZXR1cm4gUmVnaXN0ZXJQYXJzZXIgKA0KPiArDQo+IEVG SV9BQ1BJXzZfMl9TRUNPTkRBUllfU1lTVEVNX0RFU0NSSVBUSU9OX1RBQkxFX1NJR05BVFVSRSwN Cj4gKyAgICAgICAgICAgUGFyc2VBY3BpU3NkdA0KPiArICAgICAgICAgICApOw0KPiArfQ0KPiAr DQo+ICsvKiogRGVyZWdpc3RlciB0aGUgcGFyc2VyLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dICBJ bWFnZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ICsgIEBwYXJhbSBbaW5dICBT eXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KPiArDQo+ICsgIEByZXR2 YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgZGVyZWdpc3RlcmVkLg0KPiAr ICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICBUaGUgcGFyc2VyIHdhcyBub3QgcmVnaXN0 ZXJlZC4NCj4gKyovDQo+ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK1NzZHRQYXJzZXJMaWJE ZXN0cnVjdG9yICgNCj4gKyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICBJbWFn ZUhhbmRsZSwNCj4gKyAgSU4gICAgICAgRUZJX1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1U YWJsZQ0KPiArICApDQo+ICt7DQo+ICsgIHJldHVybiBEZXJlZ2lzdGVyUGFyc2VyICgNCj4gKw0K PiBFRklfQUNQSV82XzJfU0VDT05EQVJZX1NZU1RFTV9ERVNDUklQVElPTl9UQUJMRV9TSUdOQVRV UkUNCj4gKyAgICAgICAgICAgKTsNCj4gK30NCj4gZGlmZiAtLWdpdA0KPiBhL1NoZWxsUGtnL0xp YnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1VlZmlTaGVsbEFjcGlWaWV3Q29tbQ0K PiBhbmRMaWIuYw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5k TGliL1VlZmlTaGVsbEFjcGlWaWV3Q29tbQ0KPiBhbmRMaWIuYw0KPiBuZXcgZmlsZSBtb2RlIDEw MDY0NA0KPiBpbmRleA0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw Li5jNzM2Mjc0OWVkMjRmYjA2Y2RhOTZiNzYzDQo+IDc4NGQwOWNlMWJhODViOA0KPiAtLS0gL2Rl di9udWxsDQo+ICsrKw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21t YW5kTGliL1VlZmlTaGVsbEFjcGlWaWV3Q29tbQ0KPiBhbmRMaWIuYw0KPiBAQCAtMCwwICsxLDEw NiBAQA0KPiArLyoqDQo+ICsgIE1haW4gZmlsZSBmb3IgJ2FjcGl2aWV3JyBTaGVsbCBjb21tYW5k IGZ1bmN0aW9uLg0KPiArDQo+ICsgIENvcHlyaWdodCAoYykgMjAxNiAtIDIwMTcsIEFSTSBMaW1p dGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gKyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUg YWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiArICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxh YmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEDQo+IExpY2Vuc2UN Cj4gKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0 IG9mIHRoZSBsaWNlbnNlIG1heSBiZQ0KPiBmb3VuZCBhdA0KPiArICBodHRwOi8vb3BlbnNvdXJj ZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ICsNCj4gKyAgVEhFIFBST0dSQU0gSVMg RElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyINCj4gQkFTSVMs DQo+ICsgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQs IEVJVEhFUg0KPiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ICsqKi8NCj4gKw0KPiArI2luY2x1ZGUg PEd1aWQvU2hlbGxMaWJIaWlHdWlkLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9IaWlMaWIuaD4N Cj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1NoZWxsQ29tbWFuZExpYi5oPg0KPiArI2luY2x1ZGUgPExp YnJhcnkvVWVmaUxpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaUJvb3RTZXJ2aWNlc1Rh YmxlTGliLmg+DQo+ICsjaW5jbHVkZSA8VWVmaS5oPg0KPiArI2luY2x1ZGUgIlVlZmlTaGVsbEFj cGlWaWV3Q29tbWFuZExpYi5oIg0KPiArI2luY2x1ZGUgIkFjcGlWaWV3LmgiDQo+ICsNCj4gK0NP TlNUIENIQVIxNiBnU2hlbGxBY3BpVmlld0ZpbGVOYW1lW10gPSBMIlNoZWxsQ29tbWFuZCI7DQo+ ICsNCj4gKy8qKg0KPiArICBSZXR1cm4gdGhlIGZpbGUgbmFtZSBvZiB0aGUgaGVscCB0ZXh0IGZp bGUgaWYgbm90IHVzaW5nIEhJSS4NCj4gKw0KPiArICBAcmV0dXJuIFRoZSBzdHJpbmcgcG9pbnRl ciB0byB0aGUgZmlsZSBuYW1lLg0KPiArKi8NCj4gK0NPTlNUIENIQVIxNioNCj4gK0VGSUFQSQ0K PiArU2hlbGxDb21tYW5kR2V0TWFuRmlsZU5hbWVBY3BpVmlldyAoDQo+ICsgIFZPSUQNCj4gKyAg KQ0KPiArew0KPiArICByZXR1cm4gZ1NoZWxsQWNwaVZpZXdGaWxlTmFtZTsNCj4gK30NCj4gKw0K PiArLyoqDQo+ICsgIENvbnN0cnVjdG9yIGZvciB0aGUgU2hlbGwgQWNwaVZpZXcgQ29tbWFuZCBs aWJyYXJ5Lg0KPiArDQo+ICsgIEluc3RhbGwgdGhlIGhhbmRsZXJzIGZvciBhY3BpdmlldyBVRUZJ IFNoZWxsIGNvbW1hbmQuDQo+ICsNCj4gKyAgQHBhcmFtIEltYWdlSGFuZGxlICAgICAgICAgICAg VGhlIGltYWdlIGhhbmRsZSBvZiB0aGUgcHJvY2Vzcy4NCj4gKyAgQHBhcmFtIFN5c3RlbVRhYmxl ICAgICAgICAgICAgVGhlIEVGSSBTeXN0ZW0gVGFibGUgcG9pbnRlci4NCj4gKw0KPiArICBAcmV0 dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgU2hlbGwgY29tbWFuZCBoYW5kbGVycyB3ZXJl IGluc3RhbGxlZA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzZnVs bHkuDQo+ICsgIEByZXR2YWwgRUZJX0RFVklDRV9FUlJPUiAgICAgIEhpaSBwYWNrYWdlIGZhaWxl ZCB0byBpbnN0YWxsLg0KPiArKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArU2hlbGxB Y3BpVmlld0NvbW1hbmRMaWJDb25zdHJ1Y3RvciAoDQo+ICsgIElOIEVGSV9IQU5ETEUgICAgICAg IEltYWdlSGFuZGxlLA0KPiArICBJTiBFRklfU1lTVEVNX1RBQkxFICAqU3lzdGVtVGFibGUNCj4g KyAgKQ0KPiArew0KPiArICBnU2hlbGxBY3BpVmlld0hpaUhhbmRsZSA9IE5VTEw7DQo+ICsNCj4g KyAgLy8gQ2hlY2sgU2hlbGwgUHJvZmlsZSBEZWJ1ZzEgYml0IG9mIHRoZSBwcm9maWxlcyBtYXNr DQo+ICsgIGlmICgoRml4ZWRQY2RHZXQ4IChQY2RTaGVsbFByb2ZpbGVNYXNrKSAmIEJJVDEpID09 IDApIHsNCj4gKyAgICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ICsgIH0NCj4gKw0KPiArICBnU2hl bGxBY3BpVmlld0hpaUhhbmRsZSA9IEhpaUFkZFBhY2thZ2VzICgNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICZnU2hlbGxBY3BpVmlld0hpaUd1aWQsDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBnSW1hZ2VIYW5kbGUsDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBVZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWJTdHJpbmdzLA0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgTlVMTA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKTsNCj4gKyAgaWYgKGdTaGVsbEFjcGlWaWV3SGlpSGFuZGxlID09IE5VTEwpIHsNCj4gKyAg ICByZXR1cm4gRUZJX0RFVklDRV9FUlJPUjsNCj4gKyAgfQ0KPiArICAvLyBJbnN0YWxsIG91ciBT aGVsbCBjb21tYW5kIGhhbmRsZXINCj4gKyAgU2hlbGxDb21tYW5kUmVnaXN0ZXJDb21tYW5kTmFt ZSAoDQo+ICsgICAgTCJhY3BpdmlldyIsDQo+ICsgICAgU2hlbGxDb21tYW5kUnVuQWNwaVZpZXcs DQo+ICsgICAgU2hlbGxDb21tYW5kR2V0TWFuRmlsZU5hbWVBY3BpVmlldywNCj4gKyAgICAwLA0K PiArICAgIEwiYWNwaXZpZXciLA0KPiArICAgIFRSVUUsDQo+ICsgICAgZ1NoZWxsQWNwaVZpZXdI aWlIYW5kbGUsDQo+ICsgICAgU1RSSU5HX1RPS0VOIChTVFJfR0VUX0hFTFBfQUNQSVZJRVcpDQo+ ICsgICAgKTsNCj4gKw0KPiArICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ICt9DQo+ICsNCj4gKy8q Kg0KPiArICBEZXN0cnVjdG9yIGZvciB0aGUgbGlicmFyeS4gZnJlZSBhbnkgcmVzb3VyY2VzLg0K PiArDQo+ICsgIEBwYXJhbSBJbWFnZUhhbmRsZSAgICAgICAgICAgIFRoZSBpbWFnZSBoYW5kbGUg b2YgdGhlIHByb2Nlc3MuDQo+ICsgIEBwYXJhbSBTeXN0ZW1UYWJsZSAgICAgICAgICAgIFRoZSBF RkkgU3lzdGVtIFRhYmxlIHBvaW50ZXIuDQo+ICsqLw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJ DQo+ICtTaGVsbEFjcGlWaWV3Q29tbWFuZExpYkRlc3RydWN0b3IgKA0KPiArICBJTiBFRklfSEFO RExFICAgICAgICBJbWFnZUhhbmRsZSwNCj4gKyAgSU4gRUZJX1NZU1RFTV9UQUJMRSAgKlN5c3Rl bVRhYmxlDQo+ICsgICkNCj4gK3sNCj4gKyAgaWYgKGdTaGVsbEFjcGlWaWV3SGlpSGFuZGxlICE9 IE5VTEwpIHsNCj4gKyAgICBIaWlSZW1vdmVQYWNrYWdlcyAoZ1NoZWxsQWNwaVZpZXdIaWlIYW5k bGUpOw0KPiArICB9DQo+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gK30NCj4gZGlmZiAtLWdp dCBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1hzZHRQYXJz ZXIuYw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1hz ZHRQYXJzZXIuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleA0KPiAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZDlhZjVkMjcxZTM3NjVjZjMzNjI0N2Vh OA0KPiA4OWJlZjRhZDVhNTZjNA0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL1NoZWxsUGtnL0xp YnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1hzZHRQYXJzZXIuYw0KPiBAQCAtMCww ICsxLDE5NSBAQA0KPiArLyoqDQo+ICsgIFhTRFQgdGFibGUgcGFyc2VyDQo+ICsNCj4gKyAgQ29w eXJpZ2h0IChjKSAyMDE2IC0gMjAxNywgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQu DQo+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gKyAg YXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRp dGlvbnMgb2YgdGhlIEJTRA0KPiBMaWNlbnNlDQo+ICsgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMg ZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gZm91 bmQgYXQNCj4gKyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBo cA0KPiArDQo+ICsgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElD RU5TRSBPTiBBTiAiQVMgSVMiDQo+IEJBU0lTLA0KPiArICBXSVRIT1VUIFdBUlJBTlRJRVMgT1Ig UkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVE Lg0KPiArDQo+ICsgIEBwYXIgUmVmZXJlbmNlKHMpOg0KPiArICAgIC0gQUNQSSA2LjIgU3BlY2lm aWNhdGlvbiAtIEVycmF0YSBBLCBTZXB0ZW1iZXIgMjAxNw0KPiArKiovDQo+ICsNCj4gKyNpbmNs dWRlIDxJbmR1c3RyeVN0YW5kYXJkL0FjcGkuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlM aWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1ByaW50TGliLmg+DQo+ICsjaW5jbHVkZSAiQWNw aVBhcnNlci5oIg0KPiArI2luY2x1ZGUgIkFjcGlWaWV3LmgiDQo+ICsjaW5jbHVkZSAiQWNwaVRh YmxlUGFyc2VyLmgiDQo+ICsNCj4gKy8vIExvY2FsIHZhcmlhYmxlcw0KPiArU1RBVElDIEFDUElf REVTQ1JJUFRJT05fSEVBREVSX0lORk8gQWNwaUhkckluZm87DQo+ICsNCj4gKy8qKiBBbiBBQ1BJ X1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBBQ1BJIFhTRFQgdGFibGUuDQo+ICsqLw0KPiAr U1RBVElDIENPTlNUIEFDUElfUEFSU0VSIFhzZHRQYXJzZXJbXSA9IHsNCj4gKyAgUEFSU0VfQUNQ SV9IRUFERVIgKCZBY3BpSGRySW5mbykNCj4gK307DQo+ICsNCj4gK0NPTlNUIEFDUElfREVTQ1JJ UFRJT05fSEVBREVSX0lORk8qIENPTlNUDQo+ICtHZXRBY3BpWHNkdEhlYWRlckluZm8gKA0KPiAr ICBWT0lEDQo+ICspDQo+ICt7DQo+ICsgIHJldHVybiAmQWNwaUhkckluZm87DQo+ICt9DQo+ICsN Cj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgQUNQSSBYU0RUIHRhYmxlDQo+ICsgIGFu ZCBvcHRpb25hbGx5IHRyYWNlcyB0aGUgQUNQSSB0YWJsZSBmaWVsZHMuDQo+ICsNCj4gKyAgVGhp cyBmdW5jdGlvbiBhbHNvIHBlcmZvcm1zIHZhbGlkYXRpb24gb2YgdGhlIFhTRFQgdGFibGUuDQo+ ICsNCj4gKyAgQHBhcmFtIFtpbl0gVHJhY2UgICAgICAgICAgICAgIElmIFRSVUUsIHRyYWNlIHRo ZSBBQ1BJIGZpZWxkcy4NCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICAgICAgICAgICAgIFBvaW50 ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsgIEBwYXJhbSBbaW5dIEFjcGlUYWJs ZUxlbmd0aCAgICBMZW5ndGggb2YgdGhlIEFDUEkgdGFibGUuDQo+ICsgIEBwYXJhbSBbaW5dIEFj cGlUYWJsZVJldmlzaW9uICBSZXZpc2lvbiBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gKyovDQo+ICtW T0lEDQo+ICtFRklBUEkNCj4gK1BhcnNlQWNwaVhzZHQgKA0KPiArICBJTiBCT09MRUFOIFRyYWNl LA0KPiArICBJTiBVSU5UOCogIFB0ciwNCj4gKyAgSU4gVUlOVDMyICBBY3BpVGFibGVMZW5ndGgs DQo+ICsgIElOIFVJTlQ4ICAgQWNwaVRhYmxlUmV2aXNpb24NCj4gKyAgKQ0KPiArew0KPiArICBV SU5UMzIgICAgICAgIE9mZnNldDsNCj4gKyAgVUlOVDMyICAgICAgICBUYWJsZU9mZnNldDsNCj4g KyAgVUlOVDY0KiAgICAgICBUYWJsZVBvaW50ZXI7DQo+ICsgIFVJTlROICAgICAgICAgRW50cnlJ bmRleDsNCj4gKyAgQ0hBUjE2ICAgICAgICBCdWZmZXJbMzJdOw0KPiArDQo+ICsgIC8vIFBhcnNl IHRoZSBBQ1BJIGhlYWRlciB0byBnZXQgdGhlIGxlbmd0aA0KPiArICBQYXJzZUFjcGkgKA0KPiAr ICAgIEZBTFNFLA0KPiArICAgIDAsDQo+ICsgICAgIlhTRFQiLA0KPiArICAgIFB0ciwNCj4gKyAg ICBBQ1BJX0RFU0NSSVBUSU9OX0hFQURFUl9MRU5HVEgsDQo+ICsgICAgUEFSU0VSX1BBUkFNUyAo WHNkdFBhcnNlcikNCj4gKyAgICApOw0KPiArDQo+ICsgIE9mZnNldCA9IFBhcnNlQWNwaSAoDQo+ ICsgICAgICAgICAgICAgVHJhY2UsDQo+ICsgICAgICAgICAgICAgMCwNCj4gKyAgICAgICAgICAg ICAiWFNEVCIsDQo+ICsgICAgICAgICAgICAgUHRyLA0KPiArICAgICAgICAgICAgICpBY3BpSGRy SW5mby5MZW5ndGgsDQo+ICsgICAgICAgICAgICAgUEFSU0VSX1BBUkFNUyAoWHNkdFBhcnNlcikN Cj4gKyAgICAgICAgICAgICApOw0KPiArDQo+ICsgIFRhYmxlT2Zmc2V0ID0gT2Zmc2V0Ow0KPiAr DQo+ICsgIGlmIChUcmFjZSkgew0KPiArICAgIEVudHJ5SW5kZXggPTA7DQo+ICsgICAgVGFibGVQ b2ludGVyID0gKFVJTlQ2NCopKFB0ciArIFRhYmxlT2Zmc2V0KTsNCj4gKyAgICB3aGlsZSAoT2Zm c2V0IDwgKCpBY3BpSGRySW5mby5MZW5ndGgpKSB7DQo+ICsgICAgICBDT05TVCBVSU5UMzIqIFNp Z25hdHVyZTsNCj4gKyAgICAgIENPTlNUIFVJTlQzMiogTGVuZ3RoOw0KPiArICAgICAgQ09OU1Qg VUlOVDgqICBSZXZpc2lvbjsNCj4gKw0KPiArICAgICAgaWYgKChVSU5UNjQqKShVSU5UTikoKlRh YmxlUG9pbnRlcikgIT0gTlVMTCkgew0KPiArICAgICAgICBVSU5UOCogICAgICBQdHI7DQo+ICsN Cj4gKyAgICAgICAgUGFyc2VBY3BpSGVhZGVyICgNCj4gKyAgICAgICAgICAoVUlOVDgqKShVSU5U TikoKlRhYmxlUG9pbnRlciksDQo+ICsgICAgICAgICAgJlNpZ25hdHVyZSwNCj4gKyAgICAgICAg ICAmTGVuZ3RoLA0KPiArICAgICAgICAgICZSZXZpc2lvbg0KPiArICAgICAgICAgICk7DQo+ICsN Cj4gKyAgICAgICAgUHRyID0gKFVJTlQ4KilTaWduYXR1cmU7DQo+ICsNCj4gKyAgICAgICAgVW5p Y29kZVNQcmludCAoDQo+ICsgICAgICAgICAgQnVmZmVyLA0KPiArICAgICAgICAgIHNpemVvZiAo QnVmZmVyKSwNCj4gKyAgICAgICAgICBMIkVudHJ5WyVkXSAtICVjJWMlYyVjIiwNCj4gKyAgICAg ICAgICBFbnRyeUluZGV4KyssDQo+ICsgICAgICAgICAgUHRyWzBdLA0KPiArICAgICAgICAgIFB0 clsxXSwNCj4gKyAgICAgICAgICBQdHJbMl0sDQo+ICsgICAgICAgICAgUHRyWzNdDQo+ICsgICAg ICAgICAgKTsNCj4gKyAgICAgIH0gZWxzZSB7DQo+ICsgICAgICAgIFVuaWNvZGVTUHJpbnQgKA0K PiArICAgICAgICAgIEJ1ZmZlciwNCj4gKyAgICAgICAgICBzaXplb2YgKEJ1ZmZlciksDQo+ICsg ICAgICAgICAgTCJFbnRyeVslZF0iLA0KPiArICAgICAgICAgIEVudHJ5SW5kZXgrKw0KPiArICAg ICAgICAgICk7DQo+ICsgICAgICB9DQo+ICsNCj4gKyAgICAgIFByaW50RmllbGROYW1lICgyLCBC dWZmZXIpOw0KPiArICAgICAgUHJpbnQgKEwiMHglbHhcbiIsICpUYWJsZVBvaW50ZXIpOw0KPiAr DQo+ICsgICAgICAvLyBWYWxpZGF0ZSB0aGUgdGFibGUgcG9pbnRlcnMgYXJlIG5vdCBOVUxMDQo+ ICsgICAgICBpZiAoKFVJTlQ2NCopKFVJTlROKSgqVGFibGVQb2ludGVyKSA9PSBOVUxMKSB7DQo+ ICsgICAgICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7DQo+ICsgICAgICAgIFByaW50ICgNCj4g KyAgICAgICAgICBMIkVSUk9SOiBJbnZhbGlkIHRhYmxlIGVudHJ5IGF0IDB4JWx4LCB0YWJsZSBh ZGRyZXNzIGlzIDB4JWx4XG4iLA0KPiArICAgICAgICAgIFRhYmxlUG9pbnRlciwNCj4gKyAgICAg ICAgICAqVGFibGVQb2ludGVyDQo+ICsgICAgICAgICAgKTsNCj4gKyAgICAgIH0NCj4gKyAgICAg IE9mZnNldCArPSBzaXplb2YgKFVJTlQ2NCk7DQo+ICsgICAgICBUYWJsZVBvaW50ZXIrKzsNCj4g KyAgICB9IC8vIHdoaWxlDQo+ICsgIH0NCj4gKw0KPiArICAvLyBQcm9jZXNzIHRoZSB0YWJsZXMN Cj4gKyAgT2Zmc2V0ID0gVGFibGVPZmZzZXQ7DQo+ICsgIFRhYmxlUG9pbnRlciA9IChVSU5UNjQq KShQdHIgKyBUYWJsZU9mZnNldCk7DQo+ICsgIHdoaWxlIChPZmZzZXQgPCAoKkFjcGlIZHJJbmZv Lkxlbmd0aCkpIHsNCj4gKyAgICBpZiAoKFVJTlQ2NCopKFVJTlROKSgqVGFibGVQb2ludGVyKSAh PSBOVUxMKSB7DQo+ICsgICAgICBQcm9jZXNzQWNwaVRhYmxlICgoVUlOVDgqKShVSU5UTikoKlRh YmxlUG9pbnRlcikpOw0KPiArICAgIH0NCj4gKyAgICBPZmZzZXQgKz0gc2l6ZW9mIChVSU5UNjQp Ow0KPiArICAgIFRhYmxlUG9pbnRlcisrOw0KPiArICB9IC8vIHdoaWxlDQo+ICt9DQo+ICsNCj4g Ky8qKiBSZWdpc3RlciB0aGUgcGFyc2VyLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dICBJbWFnZUhh bmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ICsgIEBwYXJhbSBbaW5dICBTeXN0ZW1U YWJsZSAgUG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJ X1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgcmVnaXN0ZXJlZC4NCj4gKyAgQHJldHZh bCBFRklfQUxSRUFEWV9TVEFSVEVEICAgVGhlIHBhcnNlciBmb3IgdGhlIEFDUEkgVGFibGUNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgYWxyZWFkeSByZWdpc3RlcmVkLg0K PiArKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArWHNkdFBhcnNlckxpYkNvbnN0cnVj dG9yICgNCj4gKyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICBJbWFnZUhhbmRs ZSwNCj4gKyAgSU4gICAgICAgRUZJX1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0K PiArICApDQo+ICt7DQo+ICsgIHJldHVybiBSZWdpc3RlclBhcnNlciAoDQo+ICsNCj4gRUZJX0FD UElfNl8yX0VYVEVOREVEX1NZU1RFTV9ERVNDUklQVElPTl9UQUJMRV9TSUdOQVRVUkUsDQo+ICsg ICAgICAgICAgIFBhcnNlQWNwaVhzZHQNCj4gKyAgICAgICAgICAgKTsNCj4gK30NCj4gKw0KPiAr LyoqIERlcmVnaXN0ZXIgdGhlIHBhcnNlci4NCj4gKw0KPiArICBAcGFyYW0gW2luXSAgSW1hZ2VI YW5kbGUgIFRoZSBoYW5kbGUgdG8gdGhlIGltYWdlLg0KPiArICBAcGFyYW0gW2luXSAgU3lzdGVt VGFibGUgIFBvaW50ZXIgdG8gdGhlIFN5c3RlbSBUYWJsZS4NCj4gKw0KPiArICBAcmV0dmFsIEVG SV9TVUNDRVNTICAgICAgICAgICBUaGUgcGFyc2VyIGlzIGRlcmVnaXN0ZXJlZC4NCj4gKyAgQHJl dHZhbCBFRklfTk9UX0ZPVU5EICAgICAgICAgVGhlIHBhcnNlciB3YXMgbm90IHJlZ2lzdGVyZWQu DQo+ICsqLw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtYc2R0UGFyc2VyTGliRGVzdHJ1 Y3RvciAoDQo+ICsgIElOIENPTlNUIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgSW1hZ2VIYW5k bGUsDQo+ICsgIElOICAgICAgIEVGSV9TWVNURU1fVEFCTEUgICogQ09OU1QgU3lzdGVtVGFibGUN Cj4gKyAgKQ0KPiArew0KPiArICByZXR1cm4gRGVyZWdpc3RlclBhcnNlciAoDQo+ICsgICAgICAg ICAgIEVGSV9BQ1BJXzZfMl9FWFRFTkRFRF9TWVNURU1fREVTQ1JJUFRJT05fVEFCTEVfU0lHTkFU VVJFDQo+ICsgICAgICAgICAgICk7DQo+ICt9DQo+IGRpZmYgLS1naXQNCj4gYS9TaGVsbFBrZy9M aWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9VZWZpU2hlbGxBY3BpVmlld0NvbW0N Cj4gYW5kTGliLnVuaQ0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21t YW5kTGliL1VlZmlTaGVsbEFjcGlWaWV3Q29tbQ0KPiBhbmRMaWIudW5pDQo+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0DQo+IGluZGV4DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAuLjFjNGQ2NmUxZmY1MDcwNTRkNGFhNDJiZDQ3DQo+IGJmYWU4ODI0YzIxOGU2DQo+IC0t LSAvZGV2L251bGwNCj4gKysrDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmll d0NvbW1hbmRMaWIvVWVmaVNoZWxsQWNwaVZpZXdDb21tDQo+IGFuZExpYi51bmkNCj4gQEAgLTAs MCArMSwxMjcgQEANCj4gKy8vIC8qKg0KPiArLy8NCj4gKy8vIENvcHlyaWdodCAoYykgMjAxNiAt IDIwMTcsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gKy8vIFRoaXMg cHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gKy8vIGFyZSBsaWNlbnNl ZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRo ZQ0KPiBCU0QgTGljZW5zZQ0KPiArLy8gd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRp b24uIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlDQo+IGZvdW5kIGF0DQo+ICsv LyBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ICsvLw0K PiArLy8gVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9O IEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ICsvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVT RU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiAr Ly8NCj4gKy8vIE1vZHVsZSBOYW1lOg0KPiArLy8NCj4gKy8vIFVlZmlTaGVsbEFjcGlWaWV3Q29t bWFuZExpYi51bmkNCj4gKy8vDQo+ICsvLyBBYnN0cmFjdDoNCj4gKy8vDQo+ICsvLyBTdHJpbmcg ZGVmaW5pdGlvbnMgZm9yIFVFRkkgU2hlbGwgYWNwaXZpZXcgY29tbWFuZA0KPiArLy8NCj4gKy8v DQo+ICsvLyAqLw0KPiArDQo+ICsvPSMNCj4gKw0KPiArI2xhbmdkZWYgICBlbi1VUyAiZW5nbGlz aCINCj4gKw0KPiArI3N0cmluZyBTVFJfR0VOX1BST0JMRU0gICAgICAgICAgICNsYW5ndWFnZSBl bi1VUyAiJUglcyVOOiBVbmtub3duDQo+IGZsYWcgLSAnJUglcyVOJ1xyXG4iDQo+ICsjc3RyaW5n IFNUUl9HRU5fTk9fVkFMVUUgICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICIlSCVzJU46IE1pc3Np bmcNCj4gYXJndW1lbnQgZm9yIGZsYWcgLSAnJUglcyVOJ1xyXG4iDQo+ICsjc3RyaW5nIFNUUl9H RU5fVE9PX01BTlkgICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICIlSCVzJU46IFRvbyBtYW55DQo+ IGFyZ3VtZW50cy5cclxuIg0KPiArI3N0cmluZyBTVFJfR0VOX01JU1NJTkdfT1BUSU9OICAgICNs YW5ndWFnZSBlbi1VUyAiJUglcyVOOiBNaXNzaW5nDQo+IG9wdGlvbiAnJUglcyVOJyByZXF1aXJl ZCBieSBmbGFnIC0gJyVIJXMlTidcclxuIg0KPiArI3N0cmluZyBTVFJfR0VOX1JFQURPTkxZX01F RElBICAgICNsYW5ndWFnZSBlbi1VUyAiJUglcyVOOiBVbmFibGUNCj4gdG8gd3JpdGUgdG8gdGhl IGN1cnJlbnQgZGlyZWN0b3J5LCBjaGVjayBpZiBtZWRpYSBpcyB3cml0YWJsZS5cclxuIg0KPiAr DQo+ICsjc3RyaW5nIFNUUl9HRVRfSEVMUF9BQ1BJVklFVyAgICNsYW5ndWFnZSBlbi1VUyAiIg0K PiArIi5USCBhY3BpdmlldyAwICJEaXNwbGF5IEFDUEkgaW5mb3JtYXRpb24uIlxyXG4iDQo+ICsi LlNIIE5BTUVcclxuIg0KPiArIkRpc3BsYXkgQUNQSSBUYWJsZSBpbmZvcm1hdGlvbi5cclxuIg0K PiArIi5TSCBTWU5PUFNJU1xyXG4iDQo+ICsiIFxyXG4iDQo+ICsiQUNQSVZJRVcgW1stP10gfCBb Wy1sXSB8IFstcyBBY3BpVGFibGUgWy1kXV1dIFstY10gWy12XSBbLWggSGlnaGxpZ2h0XV1cclxu Ig0KPiArIiBcclxuIg0KPiArIi5TSCBPUFRJT05TXHJcbiINCj4gKyIgXHJcbiINCj4gKyIgIC1s IC0gRGlzcGxheSBsaXN0IG9mIGluc3RhbGxlZCBBQ1BJIFRhYmxlcy5cclxuIg0KPiArIiAgLXMg LSBEaXNwbGF5IG9ubHkgdGhlIHNwZWNpZmllZCBBY3BpVGFibGUgdHlwZS5cclxuIg0KPiArIiAg ICAgICAgIEFjcGlUYWJsZSAgICA6IFRoZSByZXF1aXJlZCBBQ1BJIFRhYmxlIHR5cGUuXHJcbiIN Cj4gKyIgIC1kIC0gR2VuZXJhdGUgYSBiaW5hcnkgZmlsZSBkdW1wIG9mIHRoZSBzcGVjaWZpZWQg QWNwaVRhYmxlLlxyXG4iDQo+ICsiICAtYyAtIENvbnNpc3RlbmN5IGNoZWNraW5nIChlbmFibGVk IGJ5IGRlZmF1bHQpLlxyXG4iDQo+ICsiICAtdiAtIERpc3BsYXkgdmVyYm9zZSBkYXRhIChlbmFi bGVkIGJ5IGRlZmF1bHQpLlxyXG4iDQo+ICsiICAtaCAtIEVuYWJsZS9EaXNhYmxlIENvbG91ciBI aWdobGlnaHRpbmcuXHJcbiINCj4gKyIgICAgICAgICBIaWdobGlnaHQgICAgOiBUUlVFL09OIGVu YWJsZXMgaGlnaGxpZ2h0aW5nO1xyXG4iDQo+ICsiICAgICAgICAgICAgICAgICAgICAgICAgRkFM U0UvT0ZGIChkZWZhdWx0KSBkaXNhYmxlcyBoaWdobGlnaHRpbmcuXHJcbiINCj4gKyIgIC0/IC0g U2hvdyBoZWxwLlxyXG4iDQo+ICsiIFxyXG4iDQo+ICsiLlNIIERFU0NSSVBUSU9OXHJcbiINCj4g KyIgXHJcbiINCj4gKyIgIFRoaXMgcHJvZ3JhbSBpcyBwcm92aWRlZCB0byBhbGxvdyBleGFtaW5h dGlvbiBvZiBBQ1BJIHRhYmxlIHZhbHVlcyBmcm9tDQo+IHRoZVxyXG4iDQo+ICsiICBVRUZJIFNo ZWxsLiAgVGhpcyBjYW4gaGVscCB3aXRoIGludmVzdGlnYXRpb25zLCBlc3BlY2lhbGx5IGF0IHRo YXQgc3RhZ2UNCj4gd2hlcmVcclxuIg0KPiArIiAgdGhlIHRhYmxlcyBhcmUgbm90IGVuYWJsaW5n IGFuIE9TIHRvIGJvb3QuXHJcbiINCj4gKyIgIFRoZSBwcm9ncmFtIGlzIG5vdCBleGhhdXN0aXZl LCBhbmQgb25seSBlbmNhcHN1bGF0ZXMgZGV0YWlsZWQga25vd2xlZGdlDQo+IG9mIGFcclxuIg0K PiArIiAgbGltaXRlZCBudW1iZXIgb2YgdGFibGUgdHlwZXMuXHJcbiINCj4gKyIgXHJcbiINCj4g KyIgIERlZmF1bHQgYmVoYXZpb3VyIGlzIHRvIGRpc3BsYXkgdGhlIGNvbnRlbnQgb2YgYWxsIHRh YmxlcyBpbnN0YWxsZWQuXHJcbiINCj4gKyIgICdLbm93bicgdGFibGUgdHlwZXMgKGxpc3RlZCBp biBOT1RFUyBiZWxvdykgd2lsbCBiZSBwYXJzZWQgYW5kDQo+IGRpc3BsYXllZFxyXG4iDQo+ICsi ICB3aXRoIGRlc2NyaXB0aW9ucyBhbmQgZmllbGQgdmFsdWVzLiAgV2hlcmUgYXBwcm9wcmlhdGUg YSBkZWdyZWUgb2YNCj4gY29uc2lzdGVuY3lcclxuIg0KPiArIiAgY2hlY2tpbmcgaXMgZG9uZSBh bmQgZXJyb3JzIG1heSBiZSByZXBvcnRlZCBpbiB0aGUgb3V0cHV0LlxyXG4iDQo+ICsiICBPdGhl ciB0YWJsZSB0eXBlcyB3aWxsIGJlIGRpc3BsYXllZCBhcyBhbiBhcnJheSBvZiBIZXhhZGVjaW1h bCBieXRlcy5cclxuIg0KPiArIiBcclxuIg0KPiArIiAgVG8gZmFjaWxpdGF0ZSBkZWJ1Z2dpbmcs IHRoZSAtcyBhbmQgLWQgb3B0aW9ucyBjYW4gYmUgdXNlZCB0byBnZW5lcmF0ZQ0KPiBhXHJcbiIN Cj4gKyIgIGJpbmFyeSBmaWxlIGltYWdlIG9mIGEgdGFibGUgdGhhdCBjYW4gYmUgY29waWVkIGVs c2V3aGVyZSBmb3INCj4gaW52ZXN0aWdhdGlvblxyXG4iDQo+ICsiICB1c2luZyB0b29scyBzdWNo IGFzIHRob3NlIHByb3ZpZGVkIGJ5IGFjcGljYS5vcmcuICBUaGlzIGlzIGVzcGVjaWFsbHkNCj4g cmVsZXZhbnRcclxuIg0KPiArIiAgZm9yIEFNTCB0eXBlIHRhYmxlcyBsaWtlIERTRFQgYW5kIFNT RFQuXHJcbiINCj4gKyIgXHJcbiINCj4gKyJOT1RFUzpcclxuIg0KPiArIiAgMS4gVGhlIEFjcGlU YWJsZSBwYXJhbWV0ZXIgY2FuIG1hdGNoIGFueSBpbnN0YWxsZWQgdGFibGUgdHlwZS5cclxuIg0K PiArIiAgICAgVGFibGVzIHdpdGhvdXQgc3BlY2lmaWMgaGFuZGxpbmcgd2lsbCBiZSBkaXNwbGF5 ZWQgYXMgYSByYXcgaGV4IGR1bXANCj4gKG9yXHJcbiINCj4gKyIgICAgIGR1bXBlZCB0byBhIGZp bGUgaWYgLWQgaXMgdXNlZCkuXHJcbiINCj4gKyIgIDIuIEZvcm1hdHRlZCBkaXNwbGF5IGFuZCBj aGVja2luZyBpcyBwcm92aWRlZCBmb3IgdGhlc2Ugc2lnbmF0dXJlDQo+IHR5cGVzOlxyXG4iDQo+ ICsiICAgICAgIEFQSUMgIC0gTXVsdGlwbGUgQVBJQyBEZXNjcmlwdGlvbiBUYWJsZSAoTUFEVClc clxuIg0KPiArIiAgICAgICBCR1JUICAtIEJvb3QgR3JhcGhpY3MgUmVzb3VyY2UgVGFibGVcclxu Ig0KPiArIiAgICAgICBEQkcyICAtIERlYnVnIFBvcnQgVGFibGUgMlxyXG4iDQo+ICsiICAgICAg IEZBQ1AgIC0gRml4ZWQgQUNQSSBEZXNjcmlwdGlvbiBUYWJsZSAoRkFEVClcclxuIg0KPiArIiAg ICAgICBHVERUICAtIEdlbmVyaWMgVGltZXIgRGVzY3JpcHRpb24gVGFibGVcclxuIg0KPiArIiAg ICAgICBJT1JUICAtIElPIFJlbWFwcGluZyBUYWJsZVxyXG4iDQo+ICsiICAgICAgIE1DRkcgIC0g TWVtb3J5IE1hcHBlZCBDb25maWcgU3BhY2UgQmFzZSBBZGRyZXNzIERlc2NyaXB0aW9uDQo+IFRh YmxlXHJcbiINCj4gKyIgICAgICAgUlNEUCAgLSBSb290IFN5c3RlbSBEZXNjcmlwdGlvbiBQb2lu dGVyXHJcbiINCj4gKyIgICAgICAgU0xJVCAgLSBTeXN0ZW0gTG9jYWxpdHkgSW5mb3JtYXRpb24g VGFibGVcclxuIg0KPiArIiAgICAgICBTUENSICAtIFNlcmlhbCBQb3J0IENvbnNvbGUgUmVkaXJl Y3Rpb24gVGFibGVcclxuIg0KPiArIiAgICAgICBTUkFUICAtIFN5c3RlbSBSZXNvdXJjZSBBZmZp bml0eSBUYWJsZVxyXG4iDQo+ICsiICAgICAgIFhTRFQgIC0gRXh0ZW5kZWQgU3lzdGVtIERlc2Ny aXB0aW9uIFRhYmxlXHJcbiINCj4gKyIgXHJcbiINCj4gKyIuU0ggU1RBTkRBUkRTXHJcbiINCj4g KyIgXHJcbiINCj4gKyIgIFRhYmxlIGRldGFpbHMgY29ycmVzcG9uZCB0byB0aG9zZSBpbiAnQWR2 YW5jZWQgQ29uZmlndXJhdGlvbiBhbmQNCj4gUG93ZXJcclxuIg0KPiArIiAgSW50ZXJmYWNlIFNw ZWNpZmljYXRpb24nIFZlcnNpb24gNi4yIEVycmF0YSBBLCBbU2VwdGVtYmVyIDIwMTddXHJcbiIN Cj4gKyINCj4gKGh0dHA6Ly93d3cudWVmaS5vcmcvc2l0ZXMvZGVmYXVsdC9maWxlcy9yZXNvdXJj ZXMvQUNQSSUyMDZfMl9BX1NlcHQyOS4NCj4gcGRmKVxyXG4iDQo+ICsiIFxyXG4iDQo+ICsiICBO T1RFOiBUaGUgbmF0dXJlIG9mIHRoZSBBQ1BJIHN0YW5kYXJkIG1lYW5zIHRoYXQgYWxtb3N0IGFs bCB0YWJsZXMgaW4gNi4xDQo+IHdpbGxcclxuIg0KPiArIiAgICAgICAgYmUgJ2JhY2t3YXJkcyBj b21wYXRpYmxlJyB3aXRoIHByaW9yIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24NCj4gaW5c clxuIg0KPiArIiAgICAgICAgdGVybXMgb2Ygc3RydWN0dXJlLCBzbyBmb3JtYXR0ZWQgb3V0cHV0 IHNob3VsZCBiZSBjb3JyZWN0LiAgVGhlDQo+IG1haW5cclxuIg0KPiArIiAgICAgICAgZXhjZXB0 aW9uIHdpbGwgYmUgdGhhdCBwcmV2aW91c2x5ICdyZXNlcnZlZCcgZmllbGRzIHdpbGwgYmUgcmVw b3J0ZWRcclxuIg0KPiArIiAgICAgICAgd2l0aCBuZXcgbmFtZXMsIHdoZXJlIHRoZXkgaGF2ZSBi ZWVuIGFkZGVkIGluIGxhdGVyIHZlcnNpb25zIG9mDQo+IHRoZVxyXG4iDQo+ICsiICAgICAgICBz cGVjaWZpY2F0aW9uLlxyXG4iDQo+ICsiIFxyXG4iDQo+ICsiLlNIIEVYQU1QTEVTXHJcbiINCj4g KyIgXHJcbiINCj4gKyIgXHJcbiINCj4gKyJFWEFNUExFUzpcclxuIg0KPiArIiAgKiBUbyBkaXNw bGF5IGEgbGlzdCBvZiB0aGUgaW5zdGFsbGVkIHRhYmxlIHR5cGVzOlxyXG4iDQo+ICsiICAgIGZz MDpcPiBhY3BpdmlldyAtbFxyXG4iDQo+ICsiIFxyXG4iDQo+ICsiICAqIFRvIHBhcnNlIGFuZCBk aXNwbGF5IGEgc3BlY2lmaWMgdGFibGUgdHlwZTpcclxuIg0KPiArIiAgICBmczA6XD4gYWNwaXZp ZXcgLXMgR1REVFxyXG4iDQo+ICsiIFxyXG4iDQo+ICsiICAqIFRvIHNhdmUgYSBiaW5hcnkgZHVt cCBvZiB0aGUgY29udGVudHMgb2YgYSB0YWJsZSB0byBhIGZpbGVcclxuIg0KPiArIiAgICBpbiB0 aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeTpcclxuIg0KPiArIiAgICBmczA6XD4gYWNwaXZp ZXcgLXMgRFNEVCAtZFxyXG4iDQo+ICsiIFxyXG4iDQo+ICsiICAqIFRvIGRpc3BsYXkgY29udGVu dHMgb2YgYWxsIEFDUEkgdGFibGVzOlxyXG4iDQo+ICsiICAgIGZzMDpcPiBhY3Bpdmlld1xyXG4i DQo+ICsiIFxyXG4iDQo+ICsiLlNIIFJFVFVSTlZBTFVFU1xyXG4iDQo+ICsiIFxyXG4iDQo+ICsi UkVUVVJOIFZBTFVFUzpcclxuIg0KPiArIiAgU0hFTExfU1VDQ0VTUyAgICAgICAgICAgICBEYXRh IHdhcyBkaXNwbGF5ZWQgYXMgcmVxdWVzdGVkLlxyXG4iDQo+ICsiICBTSEVMTF9JTlZBTElEX1BB UkFNRVRFUiAgIEFDUEkgVGFibGUgcGFyc2luZyBmYWlsZWQuXHJcbiINCj4gKyIgXHJcbiINCj4g Kw0KPiAtLQ0KPiBHdWlkKCJDRTE2NTY2OS0zRUYzLTQ5M0YtQjg1RC02MTkwRUU1Qjk3NTkiKQ0K DQo=