From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Permerror (SPF Permanent Error: More than 10 MX records returned) identity=mailfrom; client-ip=134.134.136.31; helo=mga06.intel.com; envelope-from=jaben.carsey@intel.com; receiver=edk2-devel@lists.01.org Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) (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 C2D7C221A2B92 for ; Wed, 13 Dec 2017 09:15:35 -0800 (PST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga006.jf.intel.com ([10.7.209.51]) by orsmga104.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 13 Dec 2017 09:20:15 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.45,397,1508828400"; d="scan'208";a="2534601" Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by orsmga006.jf.intel.com with ESMTP; 13 Dec 2017 09:20:14 -0800 Received: from fmsmsx124.amr.corp.intel.com (10.18.125.39) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 13 Dec 2017 09:20:14 -0800 Received: from fmsmsx103.amr.corp.intel.com ([169.254.2.195]) by fmsmsx124.amr.corp.intel.com ([169.254.8.3]) with mapi id 14.03.0319.002; Wed, 13 Dec 2017 09:20:14 -0800 From: "Carsey, Jaben" To: "Ni, Ruiyu" , "edk2-devel@lists.01.org" CC: Daryl McDaniel Thread-Topic: [PATCH] PerformancePkg: Remove it Thread-Index: AQHTc/OOewpiXo6g9EavcF8nnC7nDqNBhVYw Date: Wed, 13 Dec 2017 17:20:13 +0000 Message-ID: References: <20171213091941.244868-1-ruiyu.ni@intel.com> In-Reply-To: <20171213091941.244868-1-ruiyu.ni@intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiZDgyNDVlNGMtMzg5OC00MWIyLWE3ODMtZDhlY2NhMDBiZmQ0IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX0lDIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE2LjUuOS4zIiwiVHJ1c3RlZExhYmVsSGFzaCI6IlVTZXNibExzT2xKK3dtbXlPXC9ZRE5DYXdvSWd6bVlEd2xrcm1XUFJGRmRrPSJ9 x-ctpclassification: CTP_IC x-originating-ip: [10.1.200.108] MIME-Version: 1.0 Subject: Re: [PATCH] PerformancePkg: Remove it X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 13 Dec 2017 17:15:35 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 UmV2aWV3ZWQtYnk6IEphYmVuIENhcnNleSA8amFiZW4uY2Fyc2V5QGludGVsLmNvbT4NCg0KPiAt LS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBOaSwgUnVpeXUNCj4gU2VudDogV2Vk bmVzZGF5LCBEZWNlbWJlciAxMywgMjAxNyAxOjIwIEFNDQo+IFRvOiBlZGsyLWRldmVsQGxpc3Rz LjAxLm9yZw0KPiBDYzogQ2Fyc2V5LCBKYWJlbiA8amFiZW4uY2Fyc2V5QGludGVsLmNvbT47IERh cnlsIE1jRGFuaWVsIDxlZGsyLQ0KPiBsaXN0c0BtYzJyZXNlYXJjaC5vcmc+DQo+IFN1YmplY3Q6 IFtQQVRDSF0gUGVyZm9ybWFuY2VQa2c6IFJlbW92ZSBpdA0KPiBJbXBvcnRhbmNlOiBIaWdoDQo+ IA0KPiBQZXJmb3JtYW5jZVBrZyBjb250YWlucyBmb2xsb3dpbmcgY29tcG9uZW50czoNCj4gMS4g VHNjVGltZXJMaWINCj4gMi4gRHBfQXBwDQo+IDMuIEhlYWRlciBmaWxlcy4NCj4gDQo+ICMxIGhh cyBhbHJlYWR5IGJlZW4gZGVwcmVjYXRlZC4NCj4gIzIgY2FuIGJlIHJlbW92ZWQgYmVjYXVzZSBE cEFwcCB3YXMgYWRkZWQgdG8gU2hlbGxQa2cuDQo+ICMzIEhlYWRlciBmaWxlcyBhcmUgbm90IHVz ZWQgYnkgRHBBcHAgYW5kDQo+ICAgIE1kZU1vZHVsZVBrZy9QZXJmb3JtYW5jZUxpYiBpbnN0YW5j ZXMuDQo+IA0KPiBJbiBzdW1tYXJ5LCB0aGlzIHBhY2thZ2UgaXMgbm8gbG9uZ2VyIHVzZWZ1bC4N Cj4gDQo+IEFsbCByZWxhdGVkIHBsYXRmb3JtcyBoYXZlIGJlZW4gdXBkYXRlZCB0byByZW1vdmUg dGhlIHJlZmVyZW5jZXMuDQo+IA0KPiBDb250cmlidXRlZC11bmRlcjogVGlhbm9Db3JlIENvbnRy aWJ1dGlvbiBBZ3JlZW1lbnQgMS4xDQo+IFNpZ25lZC1vZmYtYnk6IFJ1aXl1IE5pIDxydWl5dS5u aUBpbnRlbC5jb20+DQo+IENjOiBKYWJlbiBDYXJzZXkgPGphYmVuLmNhcnNleUBpbnRlbC5jb20+ DQo+IENjOiBEYXJ5bCBNY0RhbmllbCA8ZWRrMi1saXN0c0BtYzJyZXNlYXJjaC5vcmc+DQo+IC0t LQ0KPiAgUGVyZm9ybWFuY2VQa2cvRHBfQXBwL0RwLmMgICAgICAgICAgICAgICAgICAgICAgICAg fCA1NTkgLS0tLS0tLS0tLS0tLQ0KPiAgUGVyZm9ybWFuY2VQa2cvRHBfQXBwL0RwLmggICAgICAg ICAgICAgICAgICAgICAgICAgfCAxMDEgLS0tDQo+ICBQZXJmb3JtYW5jZVBrZy9EcF9BcHAvRHAu aW5mICAgICAgICAgICAgICAgICAgICAgICB8ICA4MCAtLQ0KPiAgUGVyZm9ybWFuY2VQa2cvRHBf QXBwL0RwSW50ZXJuYWwuaCAgICAgICAgICAgICAgICAgfCAzODMgLS0tLS0tLS0tDQo+ICBQZXJm b3JtYW5jZVBrZy9EcF9BcHAvRHBQcm9maWxlLmMgICAgICAgICAgICAgICAgICB8IDEwMiAtLS0N Cj4gIFBlcmZvcm1hbmNlUGtnL0RwX0FwcC9EcFN0cmluZ3MudW5pICAgICAgICAgICAgICAgIHwg MjgxIC0tLS0tLS0NCj4gIFBlcmZvcm1hbmNlUGtnL0RwX0FwcC9EcFRyYWNlLmMgICAgICAgICAg ICAgICAgICAgIHwgODc5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiAgUGVyZm9ybWFuY2VQa2cv RHBfQXBwL0RwVXRpbGl0aWVzLmMgICAgICAgICAgICAgICAgfCA0ODkgLS0tLS0tLS0tLS0tDQo+ ICBQZXJmb3JtYW5jZVBrZy9EcF9BcHAvTGl0ZXJhbHMuYyAgICAgICAgICAgICAgICAgICB8ICAy MiAtDQo+ICBQZXJmb3JtYW5jZVBrZy9EcF9BcHAvTGl0ZXJhbHMuaCAgICAgICAgICAgICAgICAg ICB8ICAyNiAtDQo+ICAuLi4vSW5jbHVkZS9HdWlkL1BlcmZvcm1hbmNlUGtnVG9rZW5TcGFjZS5o ICAgICAgICB8ICAyNSAtDQo+ICBQZXJmb3JtYW5jZVBrZy9JbmNsdWRlL0d1aWQvVHNjRnJlcXVl bmN5LmggICAgICAgICB8ICAyNSAtDQo+ICBQZXJmb3JtYW5jZVBrZy9JbmNsdWRlL0ljaC9HZW5l cmljSWNoLmggICAgICAgICAgICB8ICA1NSAtLQ0KPiAgUGVyZm9ybWFuY2VQa2cvSW5jbHVkZS9Q ZXJmb3JtYW5jZVRva2Vucy5oICAgICAgICAgfCAgMjggLQ0KPiAgLi4uL0xpYnJhcnkvVHNjVGlt ZXJMaWIvQmFzZVRzY1RpbWVyTGliLmMgICAgICAgICAgfCAgNDUgLS0NCj4gIC4uLi9MaWJyYXJ5 L1RzY1RpbWVyTGliL0Jhc2VUc2NUaW1lckxpYi5pbmYgICAgICAgIHwgIDU5IC0tDQo+ICAuLi4v TGlicmFyeS9Uc2NUaW1lckxpYi9EeGVUc2NUaW1lckxpYi5jICAgICAgICAgICB8IDEwMiAtLS0N Cj4gIC4uLi9MaWJyYXJ5L1RzY1RpbWVyTGliL0R4ZVRzY1RpbWVyTGliLmluZiAgICAgICAgIHwg IDY0IC0tDQo+ICAuLi4vTGlicmFyeS9Uc2NUaW1lckxpYi9QZWlUc2NUaW1lckxpYi5jICAgICAg ICAgICB8ICA3NiAtLQ0KPiAgLi4uL0xpYnJhcnkvVHNjVGltZXJMaWIvUGVpVHNjVGltZXJMaWIu aW5mICAgICAgICAgfCAgNjAgLS0NCj4gIC4uLi9MaWJyYXJ5L1RzY1RpbWVyTGliL1RzY1RpbWVy TGliSW50ZXJuYWwuaCAgICAgIHwgIDU1IC0tDQo+ICAuLi4vTGlicmFyeS9Uc2NUaW1lckxpYi9U c2NUaW1lckxpYlNoYXJlLmMgICAgICAgICB8IDI3NSAtLS0tLS0tDQo+ICBQZXJmb3JtYW5jZVBr Zy9QZXJmb3JtYW5jZVBrZy5kZWMgICAgICAgICAgICAgICAgICB8ICAzNyAtDQo+ICBQZXJmb3Jt YW5jZVBrZy9QZXJmb3JtYW5jZVBrZy5kc2MgICAgICAgICAgICAgICAgICB8ICA2OCAtLQ0KPiAg MjQgZmlsZXMgY2hhbmdlZCwgMzg5NiBkZWxldGlvbnMoLSkNCj4gIGRlbGV0ZSBtb2RlIDEwMDY0 NCBQZXJmb3JtYW5jZVBrZy9EcF9BcHAvRHAuYw0KPiAgZGVsZXRlIG1vZGUgMTAwNjQ0IFBlcmZv cm1hbmNlUGtnL0RwX0FwcC9EcC5oDQo+ICBkZWxldGUgbW9kZSAxMDA2NDQgUGVyZm9ybWFuY2VQ a2cvRHBfQXBwL0RwLmluZg0KPiAgZGVsZXRlIG1vZGUgMTAwNjQ0IFBlcmZvcm1hbmNlUGtnL0Rw X0FwcC9EcEludGVybmFsLmgNCj4gIGRlbGV0ZSBtb2RlIDEwMDY0NCBQZXJmb3JtYW5jZVBrZy9E cF9BcHAvRHBQcm9maWxlLmMNCj4gIGRlbGV0ZSBtb2RlIDEwMDY0NCBQZXJmb3JtYW5jZVBrZy9E cF9BcHAvRHBTdHJpbmdzLnVuaQ0KPiAgZGVsZXRlIG1vZGUgMTAwNjQ0IFBlcmZvcm1hbmNlUGtn L0RwX0FwcC9EcFRyYWNlLmMNCj4gIGRlbGV0ZSBtb2RlIDEwMDY0NCBQZXJmb3JtYW5jZVBrZy9E cF9BcHAvRHBVdGlsaXRpZXMuYw0KPiAgZGVsZXRlIG1vZGUgMTAwNjQ0IFBlcmZvcm1hbmNlUGtn L0RwX0FwcC9MaXRlcmFscy5jDQo+ICBkZWxldGUgbW9kZSAxMDA2NDQgUGVyZm9ybWFuY2VQa2cv RHBfQXBwL0xpdGVyYWxzLmgNCj4gIGRlbGV0ZSBtb2RlIDEwMDY0NA0KPiBQZXJmb3JtYW5jZVBr Zy9JbmNsdWRlL0d1aWQvUGVyZm9ybWFuY2VQa2dUb2tlblNwYWNlLmgNCj4gIGRlbGV0ZSBtb2Rl IDEwMDY0NCBQZXJmb3JtYW5jZVBrZy9JbmNsdWRlL0d1aWQvVHNjRnJlcXVlbmN5LmgNCj4gIGRl bGV0ZSBtb2RlIDEwMDY0NCBQZXJmb3JtYW5jZVBrZy9JbmNsdWRlL0ljaC9HZW5lcmljSWNoLmgN Cj4gIGRlbGV0ZSBtb2RlIDEwMDY0NCBQZXJmb3JtYW5jZVBrZy9JbmNsdWRlL1BlcmZvcm1hbmNl VG9rZW5zLmgNCj4gIGRlbGV0ZSBtb2RlIDEwMDY0NA0KPiBQZXJmb3JtYW5jZVBrZy9MaWJyYXJ5 L1RzY1RpbWVyTGliL0Jhc2VUc2NUaW1lckxpYi5jDQo+ICBkZWxldGUgbW9kZSAxMDA2NDQNCj4g UGVyZm9ybWFuY2VQa2cvTGlicmFyeS9Uc2NUaW1lckxpYi9CYXNlVHNjVGltZXJMaWIuaW5mDQo+ ICBkZWxldGUgbW9kZSAxMDA2NDQgUGVyZm9ybWFuY2VQa2cvTGlicmFyeS9Uc2NUaW1lckxpYi9E eGVUc2NUaW1lckxpYi5jDQo+ICBkZWxldGUgbW9kZSAxMDA2NDQNCj4gUGVyZm9ybWFuY2VQa2cv TGlicmFyeS9Uc2NUaW1lckxpYi9EeGVUc2NUaW1lckxpYi5pbmYNCj4gIGRlbGV0ZSBtb2RlIDEw MDY0NCBQZXJmb3JtYW5jZVBrZy9MaWJyYXJ5L1RzY1RpbWVyTGliL1BlaVRzY1RpbWVyTGliLmMN Cj4gIGRlbGV0ZSBtb2RlIDEwMDY0NA0KPiBQZXJmb3JtYW5jZVBrZy9MaWJyYXJ5L1RzY1RpbWVy TGliL1BlaVRzY1RpbWVyTGliLmluZg0KPiAgZGVsZXRlIG1vZGUgMTAwNjQ0DQo+IFBlcmZvcm1h bmNlUGtnL0xpYnJhcnkvVHNjVGltZXJMaWIvVHNjVGltZXJMaWJJbnRlcm5hbC5oDQo+ICBkZWxl dGUgbW9kZSAxMDA2NDQNCj4gUGVyZm9ybWFuY2VQa2cvTGlicmFyeS9Uc2NUaW1lckxpYi9Uc2NU aW1lckxpYlNoYXJlLmMNCj4gIGRlbGV0ZSBtb2RlIDEwMDY0NCBQZXJmb3JtYW5jZVBrZy9QZXJm b3JtYW5jZVBrZy5kZWMNCj4gIGRlbGV0ZSBtb2RlIDEwMDY0NCBQZXJmb3JtYW5jZVBrZy9QZXJm b3JtYW5jZVBrZy5kc2MNCj4gDQo+IGRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVBrZy9EcF9BcHAv RHAuYyBiL1BlcmZvcm1hbmNlUGtnL0RwX0FwcC9EcC5jDQo+IGRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NA0KPiBpbmRleCA0ODRlZjJkNTBiLi4wMDAwMDAwMDAwDQo+IC0tLSBhL1BlcmZvcm1hbmNl UGtnL0RwX0FwcC9EcC5jDQo+ICsrKyAvZGV2L251bGwNCj4gQEAgLTEsNTU5ICswLDAgQEANCj4g LS8qKiBAZmlsZQ0KPiAtICBTaGVsbCBhcHBsaWNhdGlvbiBmb3IgRGlzcGxheWluZyBQZXJmb3Jt YW5jZSBNZXRyaWNzLg0KPiAtDQo+IC0gIFRoZSBEcCBhcHBsaWNhdGlvbiByZWFkcyBwZXJmb3Jt YW5jZSBkYXRhIGFuZCBwcmVzZW50cyBpdCBpbiBzZXZlcmFsDQo+IC0gIGRpZmZlcmVudCBmb3Jt YXRzIGRlcGVuZGluZyB1cG9uIHRoZSBuZWVkcyBvZiB0aGUgdXNlci4gIEJvdGgNCj4gLSAgVHJh Y2UgYW5kIE1lYXN1cmVkIFByb2ZpbGluZyBpbmZvcm1hdGlvbiBpcyBwcm9jZXNzZWQgYW5kIHBy ZXNlbnRlZC4NCj4gLQ0KPiAtICBEcCB1c2VzIHRoZSAiUGVyZm9ybWFuY2VMaWIiIHRvIHJlYWQg dGhlIG1lYXN1cmVtZW50IHJlY29yZHMuDQo+IC0gIFRoZSAiVGltZXJMaWIiIHByb3ZpZGVzIGlu Zm9ybWF0aW9uIGFib3V0IHRoZSB0aW1lciwgc3VjaCBhcyBmcmVxdWVuY3ksDQo+IC0gIGJlZ2lu bmluZywgYW5kIGVuZGluZyBjb3VudGVyIHZhbHVlcy4NCj4gLSAgTWVhc3VyZW1lbnQgcmVjb3Jk cyBjb250YWluIGlkZW50aWZ5aW5nIGluZm9ybWF0aW9uIChIYW5kbGUsIFRva2VuLA0KPiBNb2R1 bGUpDQo+IC0gIGFuZCBzdGFydCBhbmQgZW5kIHRpbWUgdmFsdWVzLg0KPiAtICBEcCB1c2VzIHRo aXMgaW5mb3JtYXRpb24gdG8gZ3JvdXAgcmVjb3JkcyBpbiBkaWZmZXJlbnQgd2F5cy4gIEl0IGFs c28gdXNlcw0KPiAtICB0aW1lciBpbmZvcm1hdGlvbiB0byBjYWxjdWxhdGUgZWxhcHNlZCB0aW1l IGZvciBlYWNoIG1lYXN1cmVtZW50Lg0KPiAtDQo+IC0gIENvcHlyaWdodCAoYykgMjAwOSAtIDIw MTcsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gLSAgKEMp IENvcHlyaWdodCAyMDE1LTIwMTYgSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgRGV2ZWxvcG1l bnQgTFA8QlI+DQo+IC0gIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlh bHMNCj4gLSAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMg YW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRA0KPiBMaWNlbnNlDQo+IC0gIHdoaWNoIGFjY29tcGFu aWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkg YmUNCj4gZm91bmQgYXQNCj4gLSAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1s aWNlbnNlLnBocA0KPiAtDQo+IC0gIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRI RSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+IEJBU0lTLA0KPiAtICBXSVRIT1VUIFdBUlJB TlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gRVhQUkVTUyBP UiBJTVBMSUVELg0KPiAtKiovDQo+IC0NCj4gLSNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlBcHBsaWNh dGlvbkVudHJ5UG9pbnQuaD4NCj4gLSNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlCb290U2VydmljZXNU YWJsZUxpYi5oPg0KPiAtI2luY2x1ZGUgPExpYnJhcnkvU2hlbGxMaWIuaD4NCj4gLSNpbmNsdWRl IDxMaWJyYXJ5L0Jhc2VMaWIuaD4NCj4gLSNpbmNsdWRlIDxMaWJyYXJ5L01lbW9yeUFsbG9jYXRp b25MaWIuaD4NCj4gLSNpbmNsdWRlIDxMaWJyYXJ5L0RlYnVnTGliLmg+DQo+IC0jaW5jbHVkZSA8 TGlicmFyeS9VZWZpTGliLmg+DQo+IC0jaW5jbHVkZSA8TGlicmFyeS9VZWZpSGlpU2VydmljZXNM aWIuaD4NCj4gLSNpbmNsdWRlIDxMaWJyYXJ5L0hpaUxpYi5oPg0KPiAtI2luY2x1ZGUgPExpYnJh cnkvUGNkTGliLmg+DQo+IC0NCj4gLSNpbmNsdWRlIDxHdWlkL1BlcmZvcm1hbmNlLmg+DQo+IC0N Cj4gLSNpbmNsdWRlIDxQZXJmb3JtYW5jZVRva2Vucy5oPg0KPiAtI2luY2x1ZGUgIkRwLmgiDQo+ IC0jaW5jbHVkZSAiTGl0ZXJhbHMuaCINCj4gLSNpbmNsdWRlICJEcEludGVybmFsLmgiDQo+IC0N Cj4gLS8vDQo+IC0vLyBTdHJpbmcgdG9rZW4gSUQgb2YgaGVscCBtZXNzYWdlIHRleHQuDQo+IC0v LyBTaGVsbCBzdXBwb3J0cyB0byBmaW5kIGhlbHAgbWVzc2FnZSBpbiB0aGUgcmVzb3VyY2Ugc2Vj dGlvbiBvZiBhbg0KPiBhcHBsaWNhdGlvbiBpbWFnZSBpZg0KPiAtLy8gLk1BTiBmaWxlIGlzIG5v dCBmb3VuZC4gVGhpcyBnbG9iYWwgdmFyaWFibGUgaXMgYWRkZWQgdG8gbWFrZSBidWlsZCB0b29s DQo+IHJlY29nbml6ZXMNCj4gLS8vIHRoYXQgdGhlIGhlbHAgc3RyaW5nIGlzIGNvbnN1bWVkIGJ5 IHVzZXIgYW5kIHRoZW4gYnVpbGQgdG9vbCB3aWxsIGFkZCB0aGUNCj4gc3RyaW5nIGludG8NCj4g LS8vIHRoZSByZXNvdXJjZSBzZWN0aW9uLiBUaHVzIHRoZSBhcHBsaWNhdGlvbiBjYW4gdXNlICct Pycgb3B0aW9uIHRvIHNob3cgaGVscA0KPiBtZXNzYWdlIGluDQo+IC0vLyBTaGVsbC4NCj4gLS8v DQo+IC1HTE9CQUxfUkVNT1ZFX0lGX1VOUkVGRVJFTkNFRCBFRklfU1RSSU5HX0lEDQo+IG1EcFN0 ckVuZ0hlbHBUb2tlbklkID0gU1RSSU5HX1RPS0VOIChTVFJfRFBfSEVMUF9JTkZPUk1BVElPTik7 DQo+IC0NCj4gLS8vDQo+IC0vLy8gTW9kdWxlLUdsb2JhbCBWYXJpYWJsZXMNCj4gLS8vL0B7DQo+ IC1FRklfSElJX0hBTkRMRSAgIGdIaWlIYW5kbGU7DQo+IC1TSEVMTF9QQVJBTV9JVEVNICpEcFBh cmFtTGlzdCAgICAgICA9IE5VTEw7DQo+IC1DSEFSMTYgICAgICAgICAgICptUHJpbnRUb2tlbkJ1 ZmZlciA9IE5VTEw7DQo+IC1DSEFSMTYgICAgICAgICAgIG1HYXVnZVN0cmluZ1tEUF9HQVVHRV9T VFJJTkdfTEVOR1RIICsgMV07DQo+IC1DSEFSMTYgICAgICAgICAgIG1Vbmljb2RlVG9rZW5bRFhF X1BFUkZPUk1BTkNFX1NUUklOR19TSVpFXTsNCj4gLVVJTlQ2NCAgICAgICAgICAgbUludGVyZXN0 VGhyZXNob2xkOw0KPiAtQk9PTEVBTiAgICAgICAgICBtU2hvd0lkID0gRkFMU0U7DQo+IC0NCj4g LVBFUkZfU1VNTUFSWV9EQVRBIFN1bW1hcnlEYXRhID0geyAwIH07ICAgIC8vLzwgQ3JlYXRlIHRo ZQ0KPiBTdW1tYXJ5RGF0YSBzdHJ1Y3R1cmUgYW5kIGluaXQuIHRvIFpFUk8uDQo+IC0NCj4gLS8v LyBUaW1lciBTcGVjaWZpYyBJbmZvcm1hdGlvbi4NCj4gLVRJTUVSX0lORk8gVGltZXJJbmZvOw0K PiAtDQo+IC0vLy8gSXRlbXMgZm9yIHdoaWNoIHRvIGdhdGhlciBjdW11bGF0aXZlIHN0YXRpc3Rp Y3MuDQo+IC1QRVJGX0NVTV9EQVRBIEN1bURhdGFbXSA9IHsNCj4gLSAgUEVSRl9JTklUX0NVTV9E QVRBIChMT0FEX0lNQUdFX1RPSyksDQo+IC0gIFBFUkZfSU5JVF9DVU1fREFUQSAoU1RBUlRfSU1B R0VfVE9LKSwNCj4gLSAgUEVSRl9JTklUX0NVTV9EQVRBIChEUklWRVJCSU5ESU5HX1NUQVJUX1RP SyksDQo+IC0gIFBFUkZfSU5JVF9DVU1fREFUQSAoRFJJVkVSQklORElOR19TVVBQT1JUX1RPSykN Cj4gLX07DQo+IC0NCj4gLS8vLyBOdW1iZXIgb2YgaXRlbXMgZm9yIHdoaWNoIHdlIGFyZSBnYXRo ZXJpbmcgY3VtdWxhdGl2ZSBzdGF0aXN0aWNzLg0KPiAtVUlOVDMyIGNvbnN0ICAgICAgTnVtQ3Vt ID0gc2l6ZW9mKEN1bURhdGEpIC8gc2l6ZW9mKFBFUkZfQ1VNX0RBVEEpOw0KPiAtDQo+IC1QQVJB TV9JVEVNX0xJU1QgIFBhcmFtTGlzdFtdID0gew0KPiAtICB7U1RSSU5HX1RPS0VOIChTVFJfRFBf T1BUSU9OX1FIKSwgVHlwZUZsYWd9LCAgIC8vIC0/ICAgSGVscA0KPiAtICB7U1RSSU5HX1RPS0VO IChTVFJfRFBfT1BUSU9OX0xIKSwgVHlwZUZsYWd9LCAgIC8vIC1oICAgSGVscA0KPiAtICB7U1RS SU5HX1RPS0VOIChTVFJfRFBfT1BUSU9OX1VIKSwgVHlwZUZsYWd9LCAgIC8vIC1IICAgSGVscA0K PiAtICB7U1RSSU5HX1RPS0VOIChTVFJfRFBfT1BUSU9OX0xWKSwgVHlwZUZsYWd9LCAgIC8vIC12 ICAgVmVyYm9zZSBNb2RlDQo+IC0gIHtTVFJJTkdfVE9LRU4gKFNUUl9EUF9PUFRJT05fVUEpLCBU eXBlRmxhZ30sICAgLy8gLUEgICBBbGwsIENvb2tlZA0KPiAtICB7U1RSSU5HX1RPS0VOIChTVFJf RFBfT1BUSU9OX1VSKSwgVHlwZUZsYWd9LCAgIC8vIC1SICAgUkFXIEFsbA0KPiAtICB7U1RSSU5H X1RPS0VOIChTVFJfRFBfT1BUSU9OX0xTKSwgVHlwZUZsYWd9LCAgIC8vIC1zICAgU3VtbWFyeQ0K PiAtI2lmIFBST0ZJTElOR19JTVBMRU1FTlRFRA0KPiAtICB7U1RSSU5HX1RPS0VOIChTVFJfRFBf T1BUSU9OX1VQKSwgVHlwZUZsYWd9LCAgIC8vIC1QICAgRHVtcCBQcm9maWxlDQo+IERhdGENCj4g LSAge1NUUklOR19UT0tFTiAoU1RSX0RQX09QVElPTl9VVCksIFR5cGVGbGFnfSwgICAvLyAtVCAg IER1bXAgVHJhY2UNCj4gRGF0YQ0KPiAtI2VuZGlmDQo+IC0gIHtTVFJJTkdfVE9LRU4gKFNUUl9E UF9PUFRJT05fTFgpLCBUeXBlRmxhZ30sICAgLy8gLXggICBlWGNsdWRlDQo+IEN1bXVsYXRpdmUg SXRlbXMNCj4gLSAge1NUUklOR19UT0tFTiAoU1RSX0RQX09QVElPTl9MSSksIFR5cGVGbGFnfSwg ICAvLyAtaSAgIERpc3BsYXkgSWRlbnRpZmllcg0KPiAtICB7U1RSSU5HX1RPS0VOIChTVFJfRFBf T1BUSU9OX0xDKSwgVHlwZVZhbHVlfSwgIC8vIC1jICAgRGlzcGxheQ0KPiBjdW11bGF0aXZlIGRh dGEuDQo+IC0gIHtTVFJJTkdfVE9LRU4gKFNUUl9EUF9PUFRJT05fTE4pLCBUeXBlVmFsdWV9LCAg Ly8gLW4gIyBOdW1iZXIgb2YNCj4gcmVjb3JkcyB0byBkaXNwbGF5IGZvciBBIGFuZCBSDQo+IC0g IHtTVFJJTkdfVE9LRU4gKFNUUl9EUF9PUFRJT05fTFQpLCBUeXBlVmFsdWV9ICAgLy8gLXQgIyBU aHJlc2hvbGQgb2YNCj4gaW50ZXJlc3QNCj4gLSAgfTsNCj4gLQ0KPiAtLy8vQH0NCj4gLQ0KPiAt LyoqDQo+IC0gIFRyYW5zZmVyIHRoZSBwYXJhbSBsaXN0IHZhbHVlIGFuZCBnZXQgdGhlIGNvbW1h bmQgbGluZSBwYXJzZS4NCj4gLQ0KPiAtKiovDQo+IC1WT0lEDQo+IC1Jbml0aWFsU2hlbGxQYXJh bUxpc3QoIHZvaWQgKQ0KPiAtew0KPiAtICBVSU5UMzIgICAgICAgICAgICBMaXN0SW5kZXg7DQo+ IC0gIFVJTlQzMiAgICAgICAgICAgIExpc3RMZW5ndGg7DQo+IC0NCj4gLSAgLy8NCj4gLSAgLy8g QWxsb2NhdGUgb25lIG1vcmUgZm9yIHRoZSBlbmQgdGFnLg0KPiAtICAvLw0KPiAtICBMaXN0TGVu Z3RoID0gQVJSQVlfU0laRSAoUGFyYW1MaXN0KSArIDE7DQo+IC0gIERwUGFyYW1MaXN0ID0gQWxs b2NhdGVQb29sIChzaXplb2YgKFNIRUxMX1BBUkFNX0lURU0pICogTGlzdExlbmd0aCk7DQo+IC0g IEFTU0VSVCAoRHBQYXJhbUxpc3QgIT0gTlVMTCk7DQo+IC0NCj4gLSAgZm9yIChMaXN0SW5kZXgg PSAwOyBMaXN0SW5kZXggPCBMaXN0TGVuZ3RoIC0gMTsgTGlzdEluZGV4ICsrKQ0KPiAtICB7DQo+ IC0gICAgRHBQYXJhbUxpc3RbTGlzdEluZGV4XS5OYW1lID0gSGlpR2V0U3RyaW5nIChnSGlpSGFu ZGxlLA0KPiBQYXJhbUxpc3RbTGlzdEluZGV4XS5Ub2tlbiwgTlVMTCk7DQo+IC0gICAgRHBQYXJh bUxpc3RbTGlzdEluZGV4XS5UeXBlID0gUGFyYW1MaXN0W0xpc3RJbmRleF0uVHlwZTsNCj4gLSAg fQ0KPiAtICBEcFBhcmFtTGlzdFtMaXN0SW5kZXhdLk5hbWUgPSBOVUxMOw0KPiAtICBEcFBhcmFt TGlzdFtMaXN0SW5kZXhdLlR5cGUgPSBUeXBlTWF4Ow0KPiAtfQ0KPiAtDQo+IC0vKioNCj4gLSAg IERpc3BsYXkgVXNhZ2UgYW5kIEhlbHAgaW5mb3JtYXRpb24uDQo+IC0qKi8NCj4gLVZPSUQNCj4g LVNob3dIZWxwKCB2b2lkICkNCj4gLXsNCj4gLSAgUHJpbnRUb2tlbiAoU1RSSU5HX1RPS0VOIChT VFJfRFBfSEVMUF9IRUFEKSk7DQo+IC0jaWYgUFJPRklMSU5HX0lNUExFTUVOVEVEDQo+IC0gIFBy aW50VG9rZW4gKFNUUklOR19UT0tFTiAoU1RSX0RQX0hFTFBfRkxBR1MpKTsNCj4gLSNlbHNlDQo+ IC0gIFByaW50VG9rZW4gKFNUUklOR19UT0tFTiAoU1RSX0RQX0hFTFBfRkxBR1NfMikpOw0KPiAt I2VuZGlmIC8vIFBST0ZJTElOR19JTVBMRU1FTlRFRA0KPiAtICBQcmludFRva2VuIChTVFJJTkdf VE9LRU4gKFNUUl9EUF9IRUxQX1BBR0lOQVRFKSk7DQo+IC0gIFByaW50VG9rZW4gKFNUUklOR19U T0tFTiAoU1RSX0RQX0hFTFBfVkVSQk9TRSkpOw0KPiAtICBQcmludFRva2VuIChTVFJJTkdfVE9L RU4gKFNUUl9EUF9IRUxQX0VYQ0xVREUpKTsNCj4gLSAgUHJpbnRUb2tlbiAoU1RSSU5HX1RPS0VO IChTVFJfRFBfSEVMUF9TVEFUKSk7DQo+IC0gIFByaW50VG9rZW4gKFNUUklOR19UT0tFTiAoU1RS X0RQX0hFTFBfQUxMKSk7DQo+IC0gIFByaW50VG9rZW4gKFNUUklOR19UT0tFTiAoU1RSX0RQX0hF TFBfUkFXKSk7DQo+IC0jaWYgUFJPRklMSU5HX0lNUExFTUVOVEVEDQo+IC0gIFByaW50VG9rZW4g KFNUUklOR19UT0tFTiAoU1RSX0RQX0hFTFBfVFJBQ0UpKTsNCj4gLSAgUHJpbnRUb2tlbiAoU1RS SU5HX1RPS0VOIChTVFJfRFBfSEVMUF9QUk9GSUxFKSk7DQo+IC0jZW5kaWYgLy8gUFJPRklMSU5H X0lNUExFTUVOVEVEDQo+IC0gIFByaW50VG9rZW4gKFNUUklOR19UT0tFTiAoU1RSX0RQX0hFTFBf VEhSRVNIT0xEKSk7DQo+IC0gIFByaW50VG9rZW4gKFNUUklOR19UT0tFTiAoU1RSX0RQX0hFTFBf Q09VTlQpKTsNCj4gLSAgUHJpbnRUb2tlbiAoU1RSSU5HX1RPS0VOIChTVFJfRFBfSEVMUF9JRCkp Ow0KPiAtICBQcmludFRva2VuIChTVFJJTkdfVE9LRU4gKFNUUl9EUF9IRUxQX0NVTV9EQVRBKSk7 DQo+IC0gIFByaW50VG9rZW4gKFNUUklOR19UT0tFTiAoU1RSX0RQX0hFTFBfSEVMUCkpOw0KPiAt ICBQcmludChMIlxuIik7DQo+IC19DQo+IC0NCj4gLS8qKg0KPiAtICAgRGlzcGxheSB0aGUgdHJh aWxpbmcgVmVyYm9zZSBpbmZvcm1hdGlvbi4NCj4gLSoqLw0KPiAtVk9JRA0KPiAtRHVtcFN0YXRp c3RpY3MoIHZvaWQgKQ0KPiAtew0KPiAtICBFRklfU1RSSU5HICAgICAgICAgICAgICAgIFN0cmlu Z1B0cjsNCj4gLSAgRUZJX1NUUklORyAgICAgICAgICAgICAgICBTdHJpbmdQdHJVbmtub3duOw0K PiAtICBTdHJpbmdQdHIgICAgICAgID0gSGlpR2V0U3RyaW5nIChnSGlpSGFuZGxlLCBTVFJJTkdf VE9LRU4NCj4gKFNUUl9EUF9TRUNUSU9OX1NUQVRJU1RJQ1MpLCBOVUxMKTsNCj4gLSAgU3RyaW5n UHRyVW5rbm93biA9IEhpaUdldFN0cmluZyAoZ0hpaUhhbmRsZSwgU1RSSU5HX1RPS0VODQo+IChT VFJfQUxJVF9VTktOT1dOKSwgTlVMTCk7DQo+IC0gIFByaW50VG9rZW4oIFNUUklOR19UT0tFTiAo U1RSX0RQX1NFQ1RJT05fSEVBREVSKSwNCj4gLSAgICAgICAgICAgICAgKFN0cmluZ1B0ciA9PSBO VUxMKSA/IFN0cmluZ1B0clVua25vd24gOiBTdHJpbmdQdHIpOw0KPiAtDQo+IC0gIFByaW50VG9r ZW4oIFNUUklOR19UT0tFTiAoU1RSX0RQX1NUQVRTX05VTVRSQUNFKSwNCj4gU3VtbWFyeURhdGEu TnVtVHJhY2UpOw0KPiAtICBQcmludFRva2VuKCBTVFJJTkdfVE9LRU4gKFNUUl9EUF9TVEFUU19O VU1JTkNPTVBMRVRFKSwNCj4gU3VtbWFyeURhdGEuTnVtSW5jb21wbGV0ZSk7DQo+IC0gIFByaW50 VG9rZW4oIFNUUklOR19UT0tFTiAoU1RSX0RQX1NUQVRTX05VTVBIQVNFUyksDQo+IFN1bW1hcnlE YXRhLk51bVN1bW1hcnkpOw0KPiAtICBQcmludFRva2VuKCBTVFJJTkdfVE9LRU4gKFNUUl9EUF9T VEFUU19OVU1IQU5ETEVTKSwNCj4gU3VtbWFyeURhdGEuTnVtSGFuZGxlcywgU3VtbWFyeURhdGEu TnVtVHJhY2UgLQ0KPiBTdW1tYXJ5RGF0YS5OdW1IYW5kbGVzKTsNCj4gLSAgUHJpbnRUb2tlbigg U1RSSU5HX1RPS0VOIChTVFJfRFBfU1RBVFNfTlVNUEVJTVMpLA0KPiBTdW1tYXJ5RGF0YS5OdW1Q RUlNcyk7DQo+IC0gIFByaW50VG9rZW4oIFNUUklOR19UT0tFTiAoU1RSX0RQX1NUQVRTX05VTUdM T0JBTFMpLA0KPiBTdW1tYXJ5RGF0YS5OdW1HbG9iYWwpOw0KPiAtI2lmIFBST0ZJTElOR19JTVBM RU1FTlRFRA0KPiAtICBQcmludFRva2VuKCBTVFJJTkdfVE9LRU4gKFNUUl9EUF9TVEFUU19OVU1Q Uk9GSUxFKSwNCj4gU3VtbWFyeURhdGEuTnVtUHJvZmlsZSk7DQo+IC0jZW5kaWYgLy8gUFJPRklM SU5HX0lNUExFTUVOVEVEDQo+IC0gIEZyZWVQb29sIChTdHJpbmdQdHIpOw0KPiAtICBGcmVlUG9v bCAoU3RyaW5nUHRyVW5rbm93bik7DQo+IC19DQo+IC0NCj4gLS8qKg0KPiAtICBEdW1wIHBlcmZv cm1hbmNlIGRhdGEuDQo+IC0NCj4gLSAgQHBhcmFtW2luXSAgSW1hZ2VIYW5kbGUgICAgIFRoZSBp bWFnZSBoYW5kbGUuDQo+IC0gIEBwYXJhbVtpbl0gIFN5c3RlbVRhYmxlICAgICBUaGUgc3lzdGVt IHRhYmxlLg0KPiAtDQo+IC0gIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICBDb21tYW5k IGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuDQo+IC0gIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1F VEVSICBDb21tYW5kIHVzYWdlIGVycm9yLg0KPiAtICBAcmV0dmFsIEVGSV9BQk9SVEVEICAgICAg ICAgICAgVGhlIHVzZXIgYWJvcnRzIHRoZSBvcGVyYXRpb24uDQo+IC0gIEByZXR2YWwgdmFsdWUg ICAgICAgICAgICAgICAgICBVbmtub3duIGVycm9yLg0KPiAtKiovDQo+IC1FRklfU1RBVFVTDQo+ IC1FRklBUEkNCj4gLUluaXRpYWxpemVEcCAoDQo+IC0gIElOIEVGSV9IQU5ETEUgICAgICAgICAg ICAgICBJbWFnZUhhbmRsZSwNCj4gLSAgSU4gRUZJX1NZU1RFTV9UQUJMRSAgICAgICAgICpTeXN0 ZW1UYWJsZQ0KPiAtICApDQo+IC17DQo+IC0gIFBFUkZPUk1BTkNFX1BST1BFUlRZICAgICAgICAg ICpQZXJmb3JtYW5jZVByb3BlcnR5Ow0KPiAtICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAg ICBMaXN0SW5kZXg7DQo+IC0NCj4gLSAgTElTVF9FTlRSWSAgICAgICAgICAgICAgICAgICAgKlBh cmFtUGFja2FnZTsNCj4gLSAgQ09OU1QgQ0hBUjE2ICAgICAgICAgICAgICAgICAgKkNtZExpbmVB cmc7DQo+IC0gIEVGSV9TVFJJTkcgICAgICAgICAgICAgICAgICAgIFN0cmluZ1B0cjsNCj4gLSAg VUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgTnVtYmVyMkRpc3BsYXk7DQo+IC0NCj4gLSAg RUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiAtICBCT09MRUFOICAgICAg ICAgICAgICAgICAgICAgICBTdW1tYXJ5TW9kZTsNCj4gLSAgQk9PTEVBTiAgICAgICAgICAgICAg ICAgICAgICAgVmVyYm9zZU1vZGU7DQo+IC0gIEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICAg IEFsbE1vZGU7DQo+IC0gIEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgIFJhd01vZGU7DQo+ IC0gIEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgIFRyYWNlTW9kZTsNCj4gLSAgQk9PTEVB TiAgICAgICAgICAgICAgICAgICAgICAgUHJvZmlsZU1vZGU7DQo+IC0gIEJPT0xFQU4gICAgICAg ICAgICAgICAgICAgICAgIEV4Y2x1ZGVNb2RlOw0KPiAtICBCT09MRUFOICAgICAgICAgICAgICAg ICAgICAgICBDdW11bGF0aXZlTW9kZTsNCj4gLSAgQ09OU1QgQ0hBUjE2ICAgICAgICAgICAgICAg ICAgKkN1c3RvbUN1bXVsYXRpdmVUb2tlbjsNCj4gLSAgUEVSRl9DVU1fREFUQSAgICAgICAgICAg ICAgICAgKkN1c3RvbUN1bXVsYXRpdmVEYXRhOw0KPiAtICBVSU5UTiAgICAgICAgICAgICAgICAg ICAgICAgICBOYW1lU2l6ZTsNCj4gLSAgRUZJX0hJSV9QQUNLQUdFX0xJU1RfSEVBREVSICAgKlBh Y2thZ2VMaXN0Ow0KPiAtDQo+IC0gIEVGSV9TVFJJTkcgICAgICAgICAgICAgICAgU3RyaW5nRHBP cHRpb25RaDsNCj4gLSAgRUZJX1NUUklORyAgICAgICAgICAgICAgICBTdHJpbmdEcE9wdGlvbkxo Ow0KPiAtICBFRklfU1RSSU5HICAgICAgICAgICAgICAgIFN0cmluZ0RwT3B0aW9uVWg7DQo+IC0g IEVGSV9TVFJJTkcgICAgICAgICAgICAgICAgU3RyaW5nRHBPcHRpb25MdjsNCj4gLSAgRUZJX1NU UklORyAgICAgICAgICAgICAgICBTdHJpbmdEcE9wdGlvblVzOw0KPiAtICBFRklfU1RSSU5HICAg ICAgICAgICAgICAgIFN0cmluZ0RwT3B0aW9uTHM7DQo+IC0gIEVGSV9TVFJJTkcgICAgICAgICAg ICAgICAgU3RyaW5nRHBPcHRpb25VYTsNCj4gLSAgRUZJX1NUUklORyAgICAgICAgICAgICAgICBT dHJpbmdEcE9wdGlvblVyOw0KPiAtICBFRklfU1RSSU5HICAgICAgICAgICAgICAgIFN0cmluZ0Rw T3B0aW9uVXQ7DQo+IC0gIEVGSV9TVFJJTkcgICAgICAgICAgICAgICAgU3RyaW5nRHBPcHRpb25V cDsNCj4gLSAgRUZJX1NUUklORyAgICAgICAgICAgICAgICBTdHJpbmdEcE9wdGlvbkx4Ow0KPiAt ICBFRklfU1RSSU5HICAgICAgICAgICAgICAgIFN0cmluZ0RwT3B0aW9uTG47DQo+IC0gIEVGSV9T VFJJTkcgICAgICAgICAgICAgICAgU3RyaW5nRHBPcHRpb25MdDsNCj4gLSAgRUZJX1NUUklORyAg ICAgICAgICAgICAgICBTdHJpbmdEcE9wdGlvbkxpOw0KPiAtICBFRklfU1RSSU5HICAgICAgICAg ICAgICAgIFN0cmluZ0RwT3B0aW9uTGM7DQo+IC0NCj4gLSAgU3VtbWFyeU1vZGUgICAgID0gRkFM U0U7DQo+IC0gIFZlcmJvc2VNb2RlICAgICA9IEZBTFNFOw0KPiAtICBBbGxNb2RlICAgICAgICAg PSBGQUxTRTsNCj4gLSAgUmF3TW9kZSAgICAgICAgID0gRkFMU0U7DQo+IC0gIFRyYWNlTW9kZSAg ICAgICA9IEZBTFNFOw0KPiAtICBQcm9maWxlTW9kZSAgICAgPSBGQUxTRTsNCj4gLSAgRXhjbHVk ZU1vZGUgICAgID0gRkFMU0U7DQo+IC0gIEN1bXVsYXRpdmVNb2RlID0gRkFMU0U7DQo+IC0gIEN1 c3RvbUN1bXVsYXRpdmVEYXRhID0gTlVMTDsNCj4gLQ0KPiAtICBTdHJpbmdEcE9wdGlvblFoID0g TlVMTDsNCj4gLSAgU3RyaW5nRHBPcHRpb25MaCA9IE5VTEw7DQo+IC0gIFN0cmluZ0RwT3B0aW9u VWggPSBOVUxMOw0KPiAtICBTdHJpbmdEcE9wdGlvbkx2ID0gTlVMTDsNCj4gLSAgU3RyaW5nRHBP cHRpb25VcyA9IE5VTEw7DQo+IC0gIFN0cmluZ0RwT3B0aW9uTHMgPSBOVUxMOw0KPiAtICBTdHJp bmdEcE9wdGlvblVhID0gTlVMTDsNCj4gLSAgU3RyaW5nRHBPcHRpb25VciA9IE5VTEw7DQo+IC0g IFN0cmluZ0RwT3B0aW9uVXQgPSBOVUxMOw0KPiAtICBTdHJpbmdEcE9wdGlvblVwID0gTlVMTDsN Cj4gLSAgU3RyaW5nRHBPcHRpb25MeCA9IE5VTEw7DQo+IC0gIFN0cmluZ0RwT3B0aW9uTG4gPSBO VUxMOw0KPiAtICBTdHJpbmdEcE9wdGlvbkx0ID0gTlVMTDsNCj4gLSAgU3RyaW5nRHBPcHRpb25M aSA9IE5VTEw7DQo+IC0gIFN0cmluZ0RwT3B0aW9uTGMgPSBOVUxMOw0KPiAtICBTdHJpbmdQdHIg ICAgICAgID0gTlVMTDsNCj4gLQ0KPiAtICAvLw0KPiAtICAvLyBSZXRyaWV2ZSBISUkgcGFja2Fn ZSBsaXN0IGZyb20gSW1hZ2VIYW5kbGUNCj4gLSAgLy8NCj4gLSAgU3RhdHVzID0gZ0JTLT5PcGVu UHJvdG9jb2wgKA0KPiAtICAgICAgICAgICAgICAgICAgSW1hZ2VIYW5kbGUsDQo+IC0gICAgICAg ICAgICAgICAgICAmZ0VmaUhpaVBhY2thZ2VMaXN0UHJvdG9jb2xHdWlkLA0KPiAtICAgICAgICAg ICAgICAgICAgKFZPSUQgKiopICZQYWNrYWdlTGlzdCwNCj4gLSAgICAgICAgICAgICAgICAgIElt YWdlSGFuZGxlLA0KPiAtICAgICAgICAgICAgICAgICAgTlVMTCwNCj4gLSAgICAgICAgICAgICAg ICAgIEVGSV9PUEVOX1BST1RPQ09MX0dFVF9QUk9UT0NPTA0KPiAtICAgICAgICAgICAgICAgICAg KTsNCj4gLSAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiAtICAgIHJldHVybiBTdGF0dXM7 DQo+IC0gIH0NCj4gLQ0KPiAtICAvLw0KPiAtICAvLyBQdWJsaXNoIEhJSSBwYWNrYWdlIGxpc3Qg dG8gSElJIERhdGFiYXNlLg0KPiAtICAvLw0KPiAtICBTdGF0dXMgPSBnSGlpRGF0YWJhc2UtPk5l d1BhY2thZ2VMaXN0ICgNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgZ0hpaURhdGFiYXNl LA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICBQYWNrYWdlTGlzdCwNCj4gLSAgICAgICAg ICAgICAgICAgICAgICAgICAgTlVMTCwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmdI aWlIYW5kbGUNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCj4gLSAgaWYgKEVGSV9F UlJPUiAoU3RhdHVzKSkgew0KPiAtICAgIHJldHVybiBTdGF0dXM7DQo+IC0gIH0NCj4gLSAgQVNT RVJUIChnSGlpSGFuZGxlICE9IE5VTEwpOw0KPiAtDQo+IC0NCj4gLSAgLy8gSW5pdGlhbCB0aGUg Y29tbWFuZCBsaXN0DQo+IC0gIC8vDQo+IC0gIEluaXRpYWxTaGVsbFBhcmFtTGlzdCAoKTsNCj4g LQ0KPiAtDQo+IC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqDQo+ICoqKioqKioqKioqKioqKioqKg0KPiAtKioqKiAgICAgICAgICAgIFBy b2Nlc3MgQ29tbWFuZCBMaW5lIGFyZ3VtZW50cyAgICAgICAgICAgICAgICAgICAgICAgICAgICoq KioNCj4gLQ0KPiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqDQo+ICoqKioqKioqKioqKioqKioqKi8NCj4gLSAgU3RhdHVzID0gU2hlbGxD b21tYW5kTGluZVBhcnNlIChEcFBhcmFtTGlzdCwgJlBhcmFtUGFja2FnZSwgTlVMTCwNCj4gVFJV RSk7DQo+IC0NCj4gLSAgaWYgKEVGSV9FUlJPUihTdGF0dXMpKSB7DQo+IC0gICAgUHJpbnRUb2tl biAoU1RSSU5HX1RPS0VOIChTVFJfRFBfSU5WQUxJRF9BUkcpKTsNCj4gLSAgICBTaG93SGVscCgp Ow0KPiAtICB9DQo+IC0gIGVsc2Ugew0KPiAtICAgIFN0cmluZ0RwT3B0aW9uUWggPSBIaWlHZXRT dHJpbmcgKGdIaWlIYW5kbGUsIFNUUklOR19UT0tFTg0KPiAoU1RSX0RQX09QVElPTl9RSCksIE5V TEwpOw0KPiAtICAgIFN0cmluZ0RwT3B0aW9uTGggPSBIaWlHZXRTdHJpbmcgKGdIaWlIYW5kbGUs IFNUUklOR19UT0tFTg0KPiAoU1RSX0RQX09QVElPTl9MSCksIE5VTEwpOw0KPiAtICAgIFN0cmlu Z0RwT3B0aW9uVWggPSBIaWlHZXRTdHJpbmcgKGdIaWlIYW5kbGUsIFNUUklOR19UT0tFTg0KPiAo U1RSX0RQX09QVElPTl9VSCksIE5VTEwpOw0KPiAtDQo+IC0gICAgaWYgKFNoZWxsQ29tbWFuZExp bmVHZXRGbGFnIChQYXJhbVBhY2thZ2UsIFN0cmluZ0RwT3B0aW9uUWgpICB8fA0KPiAtICAgICAg ICBTaGVsbENvbW1hbmRMaW5lR2V0RmxhZyAoUGFyYW1QYWNrYWdlLCBTdHJpbmdEcE9wdGlvbkxo KSAgfHwNCj4gLSAgICAgICAgU2hlbGxDb21tYW5kTGluZUdldEZsYWcgKFBhcmFtUGFja2FnZSwg U3RyaW5nRHBPcHRpb25VaCkpDQo+IC0gICAgew0KPiAtICAgICAgU2hvd0hlbHAoKTsNCj4gLSAg ICB9DQo+IC0gICAgZWxzZSB7DQo+IC0gICAgICBTdHJpbmdEcE9wdGlvbkx2ID0gSGlpR2V0U3Ry aW5nIChnSGlpSGFuZGxlLCBTVFJJTkdfVE9LRU4NCj4gKFNUUl9EUF9PUFRJT05fTFYpLCBOVUxM KTsNCj4gLSAgICAgIFN0cmluZ0RwT3B0aW9uVXMgPSBIaWlHZXRTdHJpbmcgKGdIaWlIYW5kbGUs IFNUUklOR19UT0tFTg0KPiAoU1RSX0RQX09QVElPTl9VUyksIE5VTEwpOw0KPiAtICAgICAgU3Ry aW5nRHBPcHRpb25McyA9IEhpaUdldFN0cmluZyAoZ0hpaUhhbmRsZSwgU1RSSU5HX1RPS0VODQo+ IChTVFJfRFBfT1BUSU9OX0xTKSwgTlVMTCk7DQo+IC0gICAgICBTdHJpbmdEcE9wdGlvblVhID0g SGlpR2V0U3RyaW5nIChnSGlpSGFuZGxlLCBTVFJJTkdfVE9LRU4NCj4gKFNUUl9EUF9PUFRJT05f VUEpLCBOVUxMKTsNCj4gLSAgICAgIFN0cmluZ0RwT3B0aW9uVXIgPSBIaWlHZXRTdHJpbmcgKGdI aWlIYW5kbGUsIFNUUklOR19UT0tFTg0KPiAoU1RSX0RQX09QVElPTl9VUiksIE5VTEwpOw0KPiAt ICAgICAgU3RyaW5nRHBPcHRpb25VdCA9IEhpaUdldFN0cmluZyAoZ0hpaUhhbmRsZSwgU1RSSU5H X1RPS0VODQo+IChTVFJfRFBfT1BUSU9OX1VUKSwgTlVMTCk7DQo+IC0gICAgICBTdHJpbmdEcE9w dGlvblVwID0gSGlpR2V0U3RyaW5nIChnSGlpSGFuZGxlLCBTVFJJTkdfVE9LRU4NCj4gKFNUUl9E UF9PUFRJT05fVVApLCBOVUxMKTsNCj4gLSAgICAgIFN0cmluZ0RwT3B0aW9uTHggPSBIaWlHZXRT dHJpbmcgKGdIaWlIYW5kbGUsIFNUUklOR19UT0tFTg0KPiAoU1RSX0RQX09QVElPTl9MWCksIE5V TEwpOw0KPiAtICAgICAgU3RyaW5nRHBPcHRpb25MbiA9IEhpaUdldFN0cmluZyAoZ0hpaUhhbmRs ZSwgU1RSSU5HX1RPS0VODQo+IChTVFJfRFBfT1BUSU9OX0xOKSwgTlVMTCk7DQo+IC0gICAgICBT dHJpbmdEcE9wdGlvbkx0ID0gSGlpR2V0U3RyaW5nIChnSGlpSGFuZGxlLCBTVFJJTkdfVE9LRU4N Cj4gKFNUUl9EUF9PUFRJT05fTFQpLCBOVUxMKTsNCj4gLSAgICAgIFN0cmluZ0RwT3B0aW9uTGkg PSBIaWlHZXRTdHJpbmcgKGdIaWlIYW5kbGUsIFNUUklOR19UT0tFTg0KPiAoU1RSX0RQX09QVElP Tl9MSSksIE5VTEwpOw0KPiAtICAgICAgU3RyaW5nRHBPcHRpb25MYyA9IEhpaUdldFN0cmluZyAo Z0hpaUhhbmRsZSwgU1RSSU5HX1RPS0VODQo+IChTVFJfRFBfT1BUSU9OX0xDKSwgTlVMTCk7DQo+ IC0NCj4gLSAgICAgIC8vIEJvb2xlYW4gT3B0aW9ucw0KPiAtICAgICAgLy8NCj4gLSAgICAgIFZl cmJvc2VNb2RlID0gU2hlbGxDb21tYW5kTGluZUdldEZsYWcgKFBhcmFtUGFja2FnZSwNCj4gU3Ry aW5nRHBPcHRpb25Mdik7DQo+IC0gICAgICBTdW1tYXJ5TW9kZSA9IChCT09MRUFOKSAoU2hlbGxD b21tYW5kTGluZUdldEZsYWcNCj4gKFBhcmFtUGFja2FnZSwgU3RyaW5nRHBPcHRpb25VcykgfHwN Cj4gLSAgICAgICAgICAgICAgICAgICAgU2hlbGxDb21tYW5kTGluZUdldEZsYWcgKFBhcmFtUGFj a2FnZSwgU3RyaW5nRHBPcHRpb25McykpOw0KPiAtICAgICAgQWxsTW9kZSAgICAgPSBTaGVsbENv bW1hbmRMaW5lR2V0RmxhZyAoUGFyYW1QYWNrYWdlLA0KPiBTdHJpbmdEcE9wdGlvblVhKTsNCj4g LSAgICAgIFJhd01vZGUgICAgID0gU2hlbGxDb21tYW5kTGluZUdldEZsYWcgKFBhcmFtUGFja2Fn ZSwNCj4gU3RyaW5nRHBPcHRpb25Vcik7DQo+IC0jaWYgUFJPRklMSU5HX0lNUExFTUVOVEVEDQo+ IC0gICAgICBUcmFjZU1vZGUgICA9IFNoZWxsQ29tbWFuZExpbmVHZXRGbGFnIChQYXJhbVBhY2th Z2UsDQo+IFN0cmluZ0RwT3B0aW9uVXQpOw0KPiAtICAgICAgUHJvZmlsZU1vZGUgPSBTaGVsbENv bW1hbmRMaW5lR2V0RmxhZyAoUGFyYW1QYWNrYWdlLA0KPiBTdHJpbmdEcE9wdGlvblVwKTsNCj4g LSNlbmRpZiAgLy8gUFJPRklMSU5HX0lNUExFTUVOVEVEDQo+IC0gICAgICBFeGNsdWRlTW9kZSA9 IFNoZWxsQ29tbWFuZExpbmVHZXRGbGFnIChQYXJhbVBhY2thZ2UsDQo+IFN0cmluZ0RwT3B0aW9u THgpOw0KPiAtICAgICAgbVNob3dJZCAgICAgPSAgU2hlbGxDb21tYW5kTGluZUdldEZsYWcgKFBh cmFtUGFja2FnZSwNCj4gU3RyaW5nRHBPcHRpb25MaSk7DQo+IC0gICAgICBDdW11bGF0aXZlTW9k ZSA9IFNoZWxsQ29tbWFuZExpbmVHZXRGbGFnIChQYXJhbVBhY2thZ2UsDQo+IFN0cmluZ0RwT3B0 aW9uTGMpOw0KPiAtDQo+IC0gICAgICAvLyBPcHRpb25zIHdpdGggVmFsdWVzDQo+IC0gICAgICBD bWRMaW5lQXJnICA9IFNoZWxsQ29tbWFuZExpbmVHZXRWYWx1ZSAoUGFyYW1QYWNrYWdlLA0KPiBT dHJpbmdEcE9wdGlvbkxuKTsNCj4gLSAgICAgIGlmIChDbWRMaW5lQXJnID09IE5VTEwpIHsNCj4g LSAgICAgICAgTnVtYmVyMkRpc3BsYXkgPSBERUZBVUxUX0RJU1BMQVlDT1VOVDsNCj4gLSAgICAg IH0NCj4gLSAgICAgIGVsc2Ugew0KPiAtICAgICAgICBOdW1iZXIyRGlzcGxheSA9IFN0ckRlY2lt YWxUb1VpbnRuKENtZExpbmVBcmcpOw0KPiAtICAgICAgICBpZiAoTnVtYmVyMkRpc3BsYXkgPT0g MCkgew0KPiAtICAgICAgICAgIE51bWJlcjJEaXNwbGF5ID0gTUFYSU1VTV9ESVNQTEFZQ09VTlQ7 DQo+IC0gICAgICAgIH0NCj4gLSAgICAgIH0NCj4gLSAgICAgIENtZExpbmVBcmcgID0gU2hlbGxD b21tYW5kTGluZUdldFZhbHVlIChQYXJhbVBhY2thZ2UsDQo+IFN0cmluZ0RwT3B0aW9uTHQpOw0K PiAtICAgICAgaWYgKENtZExpbmVBcmcgPT0gTlVMTCkgew0KPiAtICAgICAgICBtSW50ZXJlc3RU aHJlc2hvbGQgPSBERUZBVUxUX1RIUkVTSE9MRDsgIC8vIDFtcyA6PSAxLDAwMCB1cw0KPiAtICAg ICAgfQ0KPiAtICAgICAgZWxzZSB7DQo+IC0gICAgICAgIG1JbnRlcmVzdFRocmVzaG9sZCA9IFN0 ckRlY2ltYWxUb1VpbnQ2NChDbWRMaW5lQXJnKTsNCj4gLSAgICAgIH0NCj4gLSAgICAgIC8vIEhh bmRsZSBGbGFnIGNvbWJpbmF0aW9ucyBhbmQgZGVmYXVsdCBiZWhhdmlvcnMNCj4gLSAgICAgIC8v IElmIGJvdGggVHJhY2VNb2RlIGFuZCBQcm9maWxlTW9kZSBhcmUgRkFMU0UsIHNldCB0aGVtIGJv dGggdG8gVFJVRQ0KPiAtICAgICAgaWYgKCghIFRyYWNlTW9kZSkgJiYgKCEgUHJvZmlsZU1vZGUp KSB7DQo+IC0gICAgICAgIFRyYWNlTW9kZSAgID0gVFJVRTsNCj4gLSNpZiBQUk9GSUxJTkdfSU1Q TEVNRU5URUQNCj4gLSAgICAgICAgUHJvZmlsZU1vZGUgPSBUUlVFOw0KPiAtI2VuZGlmICAvLyBQ Uk9GSUxJTkdfSU1QTEVNRU5URUQNCj4gLSAgICAgIH0NCj4gLQ0KPiAtICAvLw0KPiAtICAvLyBJ bml0IHRoZSBjdXN0b20gY3VtdWxhdGl2ZSBkYXRhLg0KPiAtICAvLw0KPiAtICBDdXN0b21DdW11 bGF0aXZlVG9rZW4gPSBTaGVsbENvbW1hbmRMaW5lR2V0VmFsdWUgKFBhcmFtUGFja2FnZSwNCj4g U3RyaW5nRHBPcHRpb25MYyk7DQo+IC0gIGlmIChDdXN0b21DdW11bGF0aXZlVG9rZW4gIT0gTlVM TCkgew0KPiAtICAgIEN1c3RvbUN1bXVsYXRpdmVEYXRhID0gQWxsb2NhdGVaZXJvUG9vbCAoc2l6 ZW9mIChQRVJGX0NVTV9EQVRBKSk7DQo+IC0gICAgQVNTRVJUIChDdXN0b21DdW11bGF0aXZlRGF0 YSAhPSBOVUxMKTsNCj4gLSAgICBDdXN0b21DdW11bGF0aXZlRGF0YS0+TWluRHVyID0gUEVSRl9N QVhEVVI7DQo+IC0gICAgQ3VzdG9tQ3VtdWxhdGl2ZURhdGEtPk1heER1ciA9IDA7DQo+IC0gICAg Q3VzdG9tQ3VtdWxhdGl2ZURhdGEtPkNvdW50ICA9IDA7DQo+IC0gICAgQ3VzdG9tQ3VtdWxhdGl2 ZURhdGEtPkR1cmF0aW9uID0gMDsNCj4gLSAgICBOYW1lU2l6ZSA9IFN0ckxlbiAoQ3VzdG9tQ3Vt dWxhdGl2ZVRva2VuKSArIDE7DQo+IC0gICAgQ3VzdG9tQ3VtdWxhdGl2ZURhdGEtPk5hbWUgICA9 IEFsbG9jYXRlWmVyb1Bvb2wgKE5hbWVTaXplKTsNCj4gLSAgICBVbmljb2RlU3RyVG9Bc2NpaVN0 clMgKEN1c3RvbUN1bXVsYXRpdmVUb2tlbiwgQ3VzdG9tQ3VtdWxhdGl2ZURhdGEtDQo+ID5OYW1l LCBOYW1lU2l6ZSk7DQo+IC0gIH0NCj4gLQ0KPiAtDQo+IC8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQo+ICoqKioqKioqKioqKioqKioq Kg0KPiAtKioqKiAgICAgICAgICAgIFRpbWVyIHNwZWNpZmljIHByb2Nlc3NpbmcgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICoqKioNCj4gLQ0KPiAqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQo+ICoqKioqKioqKioqKioqKioq Ki8NCj4gLSAgICAgIC8vIEdldCB0aGUgUGVyZm9ybWFuY2UgY291bnRlciBjaGFyYWN0ZXJpc3Rp Y3M6DQo+IC0gICAgICAvLyAgICAgICAgICBGcmVxID0gRnJlcXVlbmN5IGluIEh6DQo+IC0gICAg ICAvLyAgICBTdGFydENvdW50ID0gVmFsdWUgbG9hZGVkIGludG8gdGhlIGNvdW50ZXIgd2hlbiBp dCBzdGFydHMgY291bnRpbmcNCj4gLSAgICAgIC8vICAgICAgRW5kQ291bnQgPSBWYWx1ZSBjb3Vu dGVyIGNvdW50cyB0byBiZWZvcmUgaXQgbmVlZHMgdG8gYmUgcmVzZXQNCj4gLSAgICAgIC8vDQo+ IC0gICAgICBTdGF0dXMgPSBFZmlHZXRTeXN0ZW1Db25maWd1cmF0aW9uVGFibGUgKCZnUGVyZm9y bWFuY2VQcm90b2NvbEd1aWQsDQo+IChWT0lEICoqKSAmUGVyZm9ybWFuY2VQcm9wZXJ0eSk7DQo+ IC0gICAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpIHx8IChQZXJmb3JtYW5jZVByb3BlcnR5ID09 IE5VTEwpKSB7DQo+IC0gICAgICAgIFByaW50VG9rZW4gKFNUUklOR19UT0tFTiAoU1RSX1BFUkZf UFJPUEVSVFlfTk9UX0ZPVU5EKSk7DQo+IC0gICAgICAgIGdvdG8gRG9uZTsNCj4gLSAgICAgIH0N Cj4gLQ0KPiAtICAgICAgLy8gQ29udmVydCB0aGUgRnJlcXVlbmN5IGZyb20gSHogdG8gS0h6DQo+ IC0gICAgICBUaW1lckluZm8uRnJlcXVlbmN5ICA9IChVSU5UMzIpRGl2VTY0eDMyIChQZXJmb3Jt YW5jZVByb3BlcnR5LQ0KPiA+RnJlcXVlbmN5LCAxMDAwKTsNCj4gLSAgICAgIFRpbWVySW5mby5T dGFydENvdW50ID0gUGVyZm9ybWFuY2VQcm9wZXJ0eS0+VGltZXJTdGFydFZhbHVlOw0KPiAtICAg ICAgVGltZXJJbmZvLkVuZENvdW50ICAgPSBQZXJmb3JtYW5jZVByb3BlcnR5LT5UaW1lckVuZFZh bHVlOw0KPiAtDQo+IC0gICAgICAvLyBEZXRlcm1pbmUgaW4gd2hpY2ggZGlyZWN0aW9uIHRoZSBw ZXJmb3JtYW5jZSBjb3VudGVyIGNvdW50cy4NCj4gLSAgICAgIFRpbWVySW5mby5Db3VudFVwID0g KEJPT0xFQU4pIChUaW1lckluZm8uRW5kQ291bnQgPj0NCj4gVGltZXJJbmZvLlN0YXJ0Q291bnQp Ow0KPiAtDQo+IC0NCj4gLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioNCj4gKioqKioqKioqKioqKioqKioqDQo+IC0qKioqICAgICAgICAg ICAgUHJpbnQgaGVhZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKioqKg0KPiAtDQo+ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioNCj4gKioqKioqKioqKioqKioqKioqLw0KPiAtICAgICAgLy8gcHJp bnQgRFAncyBidWlsZCB2ZXJzaW9uDQo+IC0gICAgICBQcmludFRva2VuIChTVFJJTkdfVE9LRU4g KFNUUl9EUF9CVUlMRF9SRVZJU0lPTiksDQo+IERQX01BSk9SX1ZFUlNJT04sIERQX01JTk9SX1ZF UlNJT04pOw0KPiAtDQo+IC0gICAgICAvLyBwcmludCBwZXJmb3JtYW5jZSB0aW1lciBjaGFyYWN0 ZXJpc3RpY3MNCj4gLSAgICAgIFByaW50VG9rZW4gKFNUUklOR19UT0tFTiAoU1RSX0RQX0tIWiks IFRpbWVySW5mby5GcmVxdWVuY3kpOyAgICAgICAgIC8vDQo+IFByaW50IFRpbWVyIGZyZXF1ZW5j eSBpbiBLSHoNCj4gLQ0KPiAtICAgICAgaWYgKChWZXJib3NlTW9kZSkgICAmJg0KPiAtICAgICAg ICAgICghIFJhd01vZGUpDQo+IC0gICAgICAgICApIHsNCj4gLSAgICAgICAgU3RyaW5nUHRyID0g SGlpR2V0U3RyaW5nIChnSGlpSGFuZGxlLA0KPiAtICAgICAgICAgICAgICAgICAgICAgIChFRklf U1RSSU5HX0lEKSAoVGltZXJJbmZvLkNvdW50VXAgPyBTVFJJTkdfVE9LRU4NCj4gKFNUUl9EUF9V UCkgOiBTVFJJTkdfVE9LRU4gKFNUUl9EUF9ET1dOKSksDQo+IC0gICAgICAgICAgICAgICAgICAg ICAgTlVMTCk7DQo+IC0gICAgICAgIEFTU0VSVCAoU3RyaW5nUHRyICE9IE5VTEwpOw0KPiAtICAg ICAgICBQcmludFRva2VuIChTVFJJTkdfVE9LRU4gKFNUUl9EUF9USU1FUl9QUk9QRVJUSUVTKSwg ICAvLyBQcmludA0KPiBUaW1lciBjb3VudCByYW5nZSBhbmQgZGlyZWN0aW9uDQo+IC0gICAgICAg ICAgICAgICAgICAgIFN0cmluZ1B0ciwNCj4gLSAgICAgICAgICAgICAgICAgICAgVGltZXJJbmZv LlN0YXJ0Q291bnQsDQo+IC0gICAgICAgICAgICAgICAgICAgIFRpbWVySW5mby5FbmRDb3VudA0K PiAtICAgICAgICAgICAgICAgICAgICApOw0KPiAtICAgICAgICBQcmludFRva2VuIChTVFJJTkdf VE9LRU4gKFNUUl9EUF9WRVJCT1NFX1RIUkVTSE9MRCksDQo+IG1JbnRlcmVzdFRocmVzaG9sZCk7 DQo+IC0gICAgICB9DQo+IC0NCj4gLS8qDQo+ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCj4gKioqKioqKioqKioqKioqKg0KPiAtKioq KiAgICAgICAgICAgIFByaW50IFNlY3Rpb25zIGJhc2VkIG9uIGNvbW1hbmQgbGluZSBvcHRpb25z DQo+IC0qKioqDQo+IC0qKioqICBPcHRpb24gbW9kZXMgaGF2ZSB0aGUgZm9sbG93aW5nIHByaW9y aXR5Og0KPiAtKioqKiAgICB2IFZlcmJvc2UgICAgIC0tICBWYWxpZCBpbiBjb21iaW5hdGlvbiB3 aXRoIGFueSBvdGhlciBvcHRpb25zDQo+IC0qKioqICAgIHQgVGhyZXNob2xkICAgLS0gIE1vZGlm aWVzIEFsbCwgUmF3LCBhbmQgQ29va2VkIG91dHB1dA0KPiAtKioqKiAgICAgICAgICAgICAgICAg ICAgICBEZWZhdWx0IGlzIDAgZm9yIEFsbCBhbmQgUmF3IG1vZGUNCj4gLSoqKiogICAgICAgICAg ICAgICAgICAgICAgRGVmYXVsdCBpcyBERUZBVUxUX1RIUkVTSE9MRCBmb3IgIkNvb2tlZCIgbW9k ZQ0KPiAtKioqKiAgICBuIE51bWJlcjJEaXNwbGF5ICBVc2VkIGJ5IEFsbCBhbmQgUmF3IG1vZGUu ICBPdGhlcndpc2UgaWdub3JlZC4NCj4gLSoqKiogICAgQSBBbGwgICAgICAgICAtLSAgUiBhbmQg UyBvcHRpb25zIGFyZSBpZ25vcmVkDQo+IC0qKioqICAgIFIgUmF3ICAgICAgICAgLS0gIFMgb3B0 aW9uIGlzIGlnbm9yZWQNCj4gLSoqKiogICAgcyBTdW1tYXJ5ICAgICAtLSAgTW9kaWZpZXMgIkNv b2tlZCIgb3V0cHV0IG9ubHkNCj4gLSoqKiogICAgQ29va2VkIChEZWZhdWx0KQ0KPiAtKioqKg0K PiAtKioqKiAgVGhlIEFsbCwgUmF3LCBhbmQgQ29va2VkIG1vZGVzIGFyZSBtb2RpZmllZCBieSB0 aGUgVHJhY2UgYW5kIFByb2ZpbGUNCj4gLSoqKiogIG9wdGlvbnMuDQo+IC0qKioqICAgICFUICYm ICFQICA6PSAoMCkgRGVmYXVsdCwgQm90aCBhcmUgZGlzcGxheWVkDQo+IC0qKioqICAgICBUICYm ICFQICA6PSAoMSkgT25seSBUcmFjZSByZWNvcmRzIGFyZSBkaXNwbGF5ZWQNCj4gLSoqKiogICAg IVQgJiYgIFAgIDo9ICgyKSBPbmx5IFByb2ZpbGUgcmVjb3JkcyBhcmUgZGlzcGxheWVkDQo+IC0q KioqICAgICBUICYmICBQICA6PSAoMykgU2FtZSBhcyBEZWZhdWx0LCBib3RoIGFyZSBkaXNwbGF5 ZWQNCj4gLQ0KPiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqDQo+ICoqKioqKioqKioqKioqKioqKi8NCj4gLSAgICAgIEdhdGhlclN0YXRp c3RpY3MgKEN1c3RvbUN1bXVsYXRpdmVEYXRhKTsNCj4gLSAgICAgIGlmIChDdW11bGF0aXZlTW9k ZSkgew0KPiAtICAgICAgICBQcm9jZXNzQ3VtdWxhdGl2ZSAoQ3VzdG9tQ3VtdWxhdGl2ZURhdGEp Ow0KPiAtICAgICAgfSBlbHNlIGlmIChBbGxNb2RlKSB7DQo+IC0gICAgICAgIGlmIChUcmFjZU1v ZGUpIHsNCj4gLSAgICAgICAgICBTdGF0dXMgPSBEdW1wQWxsVHJhY2UoIE51bWJlcjJEaXNwbGF5 LCBFeGNsdWRlTW9kZSk7DQo+IC0gICAgICAgICAgaWYgKFN0YXR1cyA9PSBFRklfQUJPUlRFRCkg ew0KPiAtICAgICAgICAgICAgZ290byBEb25lOw0KPiAtICAgICAgICAgIH0NCj4gLSAgICAgICAg fQ0KPiAtICAgICAgICBpZiAoUHJvZmlsZU1vZGUpIHsNCj4gLSAgICAgICAgICBEdW1wQWxsUHJv ZmlsZSggTnVtYmVyMkRpc3BsYXksIEV4Y2x1ZGVNb2RlKTsNCj4gLSAgICAgICAgfQ0KPiAtICAg ICAgfQ0KPiAtICAgICAgZWxzZSBpZiAoUmF3TW9kZSkgew0KPiAtICAgICAgICBpZiAoVHJhY2VN b2RlKSB7DQo+IC0gICAgICAgICAgU3RhdHVzID0gRHVtcFJhd1RyYWNlKCBOdW1iZXIyRGlzcGxh eSwgRXhjbHVkZU1vZGUpOw0KPiAtICAgICAgICAgIGlmIChTdGF0dXMgPT0gRUZJX0FCT1JURUQp IHsNCj4gLSAgICAgICAgICAgIGdvdG8gRG9uZTsNCj4gLSAgICAgICAgICB9DQo+IC0gICAgICAg IH0NCj4gLSAgICAgICAgaWYgKFByb2ZpbGVNb2RlKSB7DQo+IC0gICAgICAgICAgRHVtcFJhd1By b2ZpbGUoIE51bWJlcjJEaXNwbGF5LCBFeGNsdWRlTW9kZSk7DQo+IC0gICAgICAgIH0NCj4gLSAg ICAgIH0NCj4gLSAgICAgIGVsc2Ugew0KPiAtICAgICAgICAvLy0tLS0tLS0tLS0tLS0gQmVnaW4g Q29va2VkIE1vZGUgUHJvY2Vzc2luZw0KPiAtICAgICAgICBpZiAoVHJhY2VNb2RlKSB7DQo+IC0g ICAgICAgICAgUHJvY2Vzc1BoYXNlcyAoKTsNCj4gLSAgICAgICAgICBpZiAoICEgU3VtbWFyeU1v ZGUpIHsNCj4gLSAgICAgICAgICAgIFN0YXR1cyA9IFByb2Nlc3NIYW5kbGVzICggRXhjbHVkZU1v ZGUpOw0KPiAtICAgICAgICAgICAgaWYgKFN0YXR1cyA9PSBFRklfQUJPUlRFRCkgew0KPiAtICAg ICAgICAgICAgICBnb3RvIERvbmU7DQo+IC0gICAgICAgICAgICB9DQo+IC0NCj4gLSAgICAgICAg ICAgIFN0YXR1cyA9IFByb2Nlc3NQZWltcyAoKTsNCj4gLSAgICAgICAgICAgIGlmIChTdGF0dXMg PT0gRUZJX0FCT1JURUQpIHsNCj4gLSAgICAgICAgICAgICAgZ290byBEb25lOw0KPiAtICAgICAg ICAgICAgfQ0KPiAtDQo+IC0gICAgICAgICAgICBTdGF0dXMgPSBQcm9jZXNzR2xvYmFsICgpOw0K PiAtICAgICAgICAgICAgaWYgKFN0YXR1cyA9PSBFRklfQUJPUlRFRCkgew0KPiAtICAgICAgICAg ICAgICBnb3RvIERvbmU7DQo+IC0gICAgICAgICAgICB9DQo+IC0NCj4gLSAgICAgICAgICAgIFBy b2Nlc3NDdW11bGF0aXZlIChOVUxMKTsNCj4gLSAgICAgICAgICB9DQo+IC0gICAgICAgIH0NCj4g LSAgICAgICAgaWYgKFByb2ZpbGVNb2RlKSB7DQo+IC0gICAgICAgICAgRHVtcEFsbFByb2ZpbGUo IE51bWJlcjJEaXNwbGF5LCBFeGNsdWRlTW9kZSk7DQo+IC0gICAgICAgIH0NCj4gLSAgICAgIH0g Ly8tLS0tLS0tLS0tLS0tIEVuZCBvZiBDb29rZWQgTW9kZSBQcm9jZXNzaW5nDQo+IC0gICAgICBp ZiAoIFZlcmJvc2VNb2RlIHx8IFN1bW1hcnlNb2RlKSB7DQo+IC0gICAgICAgIER1bXBTdGF0aXN0 aWNzKCk7DQo+IC0gICAgICB9DQo+IC0gICAgfQ0KPiAtICB9DQo+IC0NCj4gLURvbmU6DQo+IC0N Cj4gLSAgLy8NCj4gLSAgLy8gRnJlZSB0aGUgbWVtb3J5IGFsbG9jYXRlIGZyb20gSGlpR2V0U3Ry aW5nDQo+IC0gIC8vDQo+IC0gIExpc3RJbmRleCA9IDA7DQo+IC0gIHdoaWxlIChEcFBhcmFtTGlz dFtMaXN0SW5kZXhdLk5hbWUgIT0gTlVMTCkgew0KPiAtICAgIEZyZWVQb29sIChEcFBhcmFtTGlz dFtMaXN0SW5kZXhdLk5hbWUpOw0KPiAtICAgIExpc3RJbmRleCArKzsNCj4gLSAgfQ0KPiAtICBG cmVlUG9vbCAoRHBQYXJhbUxpc3QpOw0KPiAtDQo+IC0gIFNhZmVGcmVlUG9vbCAoU3RyaW5nRHBP cHRpb25RaCk7DQo+IC0gIFNhZmVGcmVlUG9vbCAoU3RyaW5nRHBPcHRpb25MaCk7DQo+IC0gIFNh ZmVGcmVlUG9vbCAoU3RyaW5nRHBPcHRpb25VaCk7DQo+IC0gIFNhZmVGcmVlUG9vbCAoU3RyaW5n RHBPcHRpb25Mdik7DQo+IC0gIFNhZmVGcmVlUG9vbCAoU3RyaW5nRHBPcHRpb25Vcyk7DQo+IC0g IFNhZmVGcmVlUG9vbCAoU3RyaW5nRHBPcHRpb25Mcyk7DQo+IC0gIFNhZmVGcmVlUG9vbCAoU3Ry aW5nRHBPcHRpb25VYSk7DQo+IC0gIFNhZmVGcmVlUG9vbCAoU3RyaW5nRHBPcHRpb25Vcik7DQo+ IC0gIFNhZmVGcmVlUG9vbCAoU3RyaW5nRHBPcHRpb25VdCk7DQo+IC0gIFNhZmVGcmVlUG9vbCAo U3RyaW5nRHBPcHRpb25VcCk7DQo+IC0gIFNhZmVGcmVlUG9vbCAoU3RyaW5nRHBPcHRpb25MeCk7 DQo+IC0gIFNhZmVGcmVlUG9vbCAoU3RyaW5nRHBPcHRpb25Mbik7DQo+IC0gIFNhZmVGcmVlUG9v bCAoU3RyaW5nRHBPcHRpb25MdCk7DQo+IC0gIFNhZmVGcmVlUG9vbCAoU3RyaW5nRHBPcHRpb25M aSk7DQo+IC0gIFNhZmVGcmVlUG9vbCAoU3RyaW5nRHBPcHRpb25MYyk7DQo+IC0gIFNhZmVGcmVl UG9vbCAoU3RyaW5nUHRyKTsNCj4gLSAgU2FmZUZyZWVQb29sIChtUHJpbnRUb2tlbkJ1ZmZlcik7 DQo+IC0NCj4gLSAgaWYgKFBhcmFtUGFja2FnZSAhPSBOVUxMKSB7DQo+IC0gICAgU2hlbGxDb21t YW5kTGluZUZyZWVWYXJMaXN0IChQYXJhbVBhY2thZ2UpOw0KPiAtICB9DQo+IC0gIGlmIChDdXN0 b21DdW11bGF0aXZlRGF0YSAhPSBOVUxMKSB7DQo+IC0gICAgU2FmZUZyZWVQb29sIChDdXN0b21D dW11bGF0aXZlRGF0YS0+TmFtZSk7DQo+IC0gIH0NCj4gLSAgU2FmZUZyZWVQb29sIChDdXN0b21D dW11bGF0aXZlRGF0YSk7DQo+IC0NCj4gLSAgSGlpUmVtb3ZlUGFja2FnZXMgKGdIaWlIYW5kbGUp Ow0KPiAtICByZXR1cm4gU3RhdHVzOw0KPiAtfQ0KPiBkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VQ a2cvRHBfQXBwL0RwLmggYi9QZXJmb3JtYW5jZVBrZy9EcF9BcHAvRHAuaA0KPiBkZWxldGVkIGZp bGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggNWZjMzMzNTI3OS4uMDAwMDAwMDAwMA0KPiAtLS0gYS9Q ZXJmb3JtYW5jZVBrZy9EcF9BcHAvRHAuaA0KPiArKysgL2Rldi9udWxsDQo+IEBAIC0xLDEwMSAr MCwwIEBADQo+IC0vKiogQGZpbGUNCj4gLSAgQ29tbW9uIGRlY2xhcmF0aW9ucyBmb3IgdGhlIERw IFBlcmZvcm1hbmNlIFJlcG9ydGluZyBVdGlsaXR5Lg0KPiAtDQo+IC0gIENvcHlyaWdodCAoYykg MjAwOSAtIDIwMTIsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4N Cj4gLSAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiAtICBh cmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0 aW9ucyBvZiB0aGUgQlNEDQo+IExpY2Vuc2UNCj4gLSAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBk aXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZQ0KPiBmb3Vu ZCBhdA0KPiAtICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhw DQo+IC0NCj4gLSAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNF TlNFIE9OIEFOICJBUyBJUyINCj4gQkFTSVMsDQo+IC0gIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBS RVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBFWFBSRVNTIE9SIElNUExJRUQu DQo+IC0qKi8NCj4gLQ0KPiAtI2lmbmRlZiBfRUZJX0FQUF9EUF9IXw0KPiAtI2RlZmluZSBfRUZJ X0FQUF9EUF9IXw0KPiAtDQo+IC0jaW5jbHVkZSA8TGlicmFyeS9TaGVsbExpYi5oPg0KPiAtDQo+ IC0jZGVmaW5lIERQX01BSk9SX1ZFUlNJT04gICAgICAgIDINCj4gLSNkZWZpbmUgRFBfTUlOT1Jf VkVSU0lPTiAgICAgICAgMw0KPiAtDQo+IC0vKioNCj4gLSAgKiBUaGUgdmFsdWUgYXNzaWduZWQg dG8gRFBfREVCVUcgY29udHJvbHMgd2hpY2ggZGVidWcgb3V0cHV0DQo+IC0gICogaXMgZ2VuZXJh dGVkLiAgU2V0IGl0IHRvIFpFUk8gdG8gZGlzYWJsZS4NCj4gLSoqLw0KPiAtI2RlZmluZSBEUF9E RUJVRyAgICAgICAgICAgICAgICAwDQo+IC0NCj4gLS8qKg0KPiAtICAqIFNldCB0byAxIG9uY2Ug UHJvZmlsaW5nIGhhcyBiZWVuIGltcGxlbWVudGVkIGluIG9yZGVyIHRvIGVuYWJsZQ0KPiAtICAq IHByb2ZpbGluZyByZWxhdGVkIG9wdGlvbnMgYW5kIHJlcG9ydCBvdXRwdXQuDQo+IC0qKi8NCj4g LSNkZWZpbmUgUFJPRklMSU5HX0lNUExFTUVOVEVEICAgMA0KPiAtDQo+IC0jZGVmaW5lIERFRkFV TFRfVEhSRVNIT0xEICAgICAgIDEwMDAgICAgLy8vPCBPbmUgbWlsbGlzZWNvbmQuDQo+IC0jZGVm aW5lIERFRkFVTFRfRElTUExBWUNPVU5UICAgIDUwDQo+IC0jZGVmaW5lIE1BWElNVU1fRElTUExB WUNPVU5UICAgIDk5OTk5OSAgLy8vPCBBcmJpdHJhcnkgbWF4aW11bQ0KPiByZWFzb25hYmxlIG51 bWJlci4NCj4gLQ0KPiAtI2RlZmluZSBQRVJGX01BWERVUiAgICAgICAgICAgICAweEZGRkZGRkZG RkZGRkZGRkZVTEwNCj4gLQ0KPiAtLy8vIERldGVybWluZSB3aGV0aGVyICAwIDw9IEMgPCBMLiAg SWYgTCA9PSAwLCByZXR1cm4gdHJ1ZSByZWdhcmRsZXNzIG9mIEMuDQo+IC0jZGVmaW5lIFdJVEhJ Tl9MSU1JVCggQywgTCkgICAoICgoTCkgPT0gMCkgfHwgKChDKSA8IChMKSkgKQ0KPiAtDQo+IC0v Ly8gU3RydWN0dXJlIGZvciBzdG9yaW5nIFRpbWVyIHNwZWNpZmljIGluZm9ybWF0aW9uLg0KPiAt dHlwZWRlZiBzdHJ1Y3Qgew0KPiAtICBVSU5UNjQgICAgU3RhcnRDb3VudDsgICAvLy88IFZhbHVl IHRpbWVyIGlzIGluaXRpYWxpemVkIHdpdGguDQo+IC0gIFVJTlQ2NCAgICBFbmRDb3VudDsgICAg IC8vLzwgVmFsdWUgdGltZXIgaGFzIGp1c3QgYmVmb3JlIGl0IHdyYXBzLg0KPiAtICBVSU5UMzIg ICAgRnJlcXVlbmN5OyAgICAvLy88IFRpbWVyIGNvdW50IGZyZXF1ZW5jeSBpbiBLSHouDQo+IC0g IEJPT0xFQU4gICBDb3VudFVwOyAgICAgIC8vLzwgVFJVRSBpZiB0aGUgY291bnRlciBjb3VudHMg dXAuDQo+IC19IFRJTUVSX0lORk87DQo+IC0NCj4gLS8qKiBJbml0aWFsaXplIG9uZSBQRVJGX0NV TV9EQVRBIHN0cnVjdHVyZSBpbnN0YW5jZSBmb3IgdG9rZW4gdC4NCj4gLSAgKg0KPiAtICAqIFRo aXMgcGFyYW1ldGVyaXplZCBtYWNybyB0YWtlcyBhIHNpbmdsZSBhcmd1bWVudCwgdCwgd2hpY2gg aXMgZXhwZWN0ZWQNCj4gLSAgKiB0byByZXNvbHZlIHRvIGEgcG9pbnRlciB0byBhbiBBU0NJSSBz dHJpbmcgbGl0ZXJhbC4gIFRoaXMgcGFyYW1ldGVyIG1heQ0KPiAtICAqIHRha2UgYW55IG9uZSBv ZiB0aGUgZm9sbG93aW5nIGZvcm1zOg0KPiAtICAqICAgLSBQRVJGX0lOSVRfQ1VNX0RBVEEoIlRv a2VuIikgICAgICAgICBBIHN0cmluZyBsaXRlcmFsDQo+IC0gICogICAtIFBFUkZfSU5JVF9DVU1f REFUQShwb2ludGVyKSAgICAgICAgIEEgcG9pbnRlciAtLSBDSEFSOCAqcG9pbnRlcjsNCj4gLSAg KiAgIC0gUEVSRl9JTklUX0NVTV9EQVRBKGFycmF5KSAgICAgICAgICAgQWRkcmVzcyBvZiBhbiBh cnJheSAtLSBDSEFSOA0KPiBhcnJheVtOXTsNCj4gLSoqLw0KPiAtI2RlZmluZSBQRVJGX0lOSVRf Q1VNX0RBVEEodCkgICB7IDBVTEwsIFBFUkZfTUFYRFVSLCAwVUxMLCAodCksIDBVIH0NCj4gLQ0K PiAtdHlwZWRlZiBzdHJ1Y3Qgew0KPiAtICBVSU5UNjQgIER1cmF0aW9uOyAgICAgLy8vPCBDdW11 bGF0aXZlIGR1cmF0aW9uIGZvciB0aGlzIGl0ZW0uDQo+IC0gIFVJTlQ2NCAgTWluRHVyOyAgICAg ICAvLy88IFNtYWxsZXN0IGR1cmF0aW9uIGVuY291bnRlcmVkLg0KPiAtICBVSU5UNjQgIE1heER1 cjsgICAgICAgLy8vPCBMYXJnZXN0IGR1cmF0aW9uIGVuY291bnRlcmVkLg0KPiAtICBDSEFSOCAg ICpOYW1lOyAgICAgICAgLy8vPCBBU0NJSSBuYW1lIG9mIHRoaXMgaXRlbS4NCj4gLSAgVUlOVDMy ICBDb3VudDsgICAgICAgIC8vLzwgVG90YWwgbnVtYmVyIG9mIG1lYXN1cmVtZW50cyBhY2N1bXVs YXRlZC4NCj4gLX0gUEVSRl9DVU1fREFUQTsNCj4gLQ0KPiAtdHlwZWRlZiBzdHJ1Y3Qgew0KPiAt ICBVSU5UMzIgICAgICAgICAgICAgICAgTnVtVHJhY2U7ICAgICAgICAgLy8vPCBOdW1iZXIgb2Yg cmVjb3JkZWQgVFJBQ0UNCj4gcGVyZm9ybWFuY2UgbWVhc3VyZW1lbnRzLg0KPiAtICBVSU5UMzIg ICAgICAgICAgICAgICAgTnVtUHJvZmlsZTsgICAgICAgLy8vPCBOdW1iZXIgb2YgcmVjb3JkZWQg UFJPRklMRQ0KPiBwZXJmb3JtYW5jZSBtZWFzdXJlbWVudHMuDQo+IC0gIFVJTlQzMiAgICAgICAg ICAgICAgICBOdW1JbmNvbXBsZXRlOyAgICAvLy88IE51bWJlciBvZiBtZWFzdXJlbWVudHMgd2l0 aCBubw0KPiBFTkQgdmFsdWUuDQo+IC0gIFVJTlQzMiAgICAgICAgICAgICAgICBOdW1TdW1tYXJ5 OyAgICAgICAvLy88IE51bWJlciBvZiBzdW1tYXJ5IHNlY3Rpb24NCj4gbWVhc3VyZW1lbnRzLg0K PiAtICBVSU5UMzIgICAgICAgICAgICAgICAgTnVtSGFuZGxlczsgICAgICAgLy8vPCBOdW1iZXIg b2YgbWVhc3VyZW1lbnRzIHdpdGgNCj4gaGFuZGxlcy4NCj4gLSAgVUlOVDMyICAgICAgICAgICAg ICAgIE51bVBFSU1zOyAgICAgICAgIC8vLzwgTnVtYmVyIG9mIG1lYXN1cmVtZW50cyBvZiBQRUlN cy4NCj4gLSAgVUlOVDMyICAgICAgICAgICAgICAgIE51bUdsb2JhbDsgICAgICAgIC8vLzwgTnVt YmVyIG9mIG1lYXN1cmVtZW50cyB3aXRoIEVORA0KPiB2YWx1ZSBhbmQgTlVMTCBoYW5kbGUuDQo+ IC19IFBFUkZfU1VNTUFSWV9EQVRBOw0KPiAtDQo+IC10eXBlZGVmIHN0cnVjdCB7DQo+IC0gIENP TlNUIFZPSUQgICAgICAgICAgICAqSGFuZGxlOw0KPiAtICBDT05TVCBDSEFSOCAgICAgICAgICAg KlRva2VuOyAgICAgICAgICAgLy8vPCBNZWFzdXJlZCB0b2tlbiBzdHJpbmcgbmFtZS4NCj4gLSAg Q09OU1QgQ0hBUjggICAgICAgICAgICpNb2R1bGU7ICAgICAgICAgIC8vLzwgTW9kdWxlIHN0cmlu ZyBuYW1lLg0KPiAtICBVSU5UNjQgICAgICAgICAgICAgICAgU3RhcnRUaW1lU3RhbXA7ICAgLy8v PCBTdGFydCB0aW1lIHBvaW50Lg0KPiAtICBVSU5UNjQgICAgICAgICAgICAgICAgRW5kVGltZVN0 YW1wOyAgICAgLy8vPCBFbmQgdGltZSBwb2ludC4NCj4gLSAgVUlOVDMyICAgICAgICAgICAgICAg IElkZW50aWZpZXI7ICAgICAgIC8vLzwgSWRlbnRpZmllci4NCj4gLX0gTUVBU1VSRU1FTlRfUkVD T1JEOw0KPiAtDQo+IC10eXBlZGVmIHN0cnVjdCB7DQo+IC0gIENIQVI4ICAgICAgICAgICAgICAg ICAqTmFtZTsgICAgICAgICAgICAvLy88IE1lYXN1cmVkIHRva2VuIHN0cmluZyBuYW1lLg0KPiAt ICBVSU5UNjQgICAgICAgICAgICAgICAgQ3VtdWxhdGl2ZVRpbWU7ICAgLy8vPCBBY2N1bXVsYXRl ZCBFbGFwc2VkIFRpbWUuDQo+IC0gIFVJTlQ2NCAgICAgICAgICAgICAgICBNaW5UaW1lOyAgICAg ICAgICAvLy88IE1pbmltdW0gRWxhcHNlZCBUaW1lLg0KPiAtICBVSU5UNjQgICAgICAgICAgICAg ICAgTWF4VGltZTsgICAgICAgICAgLy8vPCBNYXhpbXVtIEVsYXBzZWQgVGltZS4NCj4gLSAgVUlO VDMyICAgICAgICAgICAgICAgIENvdW50OyAgICAgICAgICAgIC8vLzwgTnVtYmVyIG9mIG1lYXN1 cmVtZW50cyBhY2N1bXVsYXRlZC4NCj4gLX0gUFJPRklMRV9SRUNPUkQ7DQo+IC0NCj4gLXR5cGVk ZWYgc3RydWN0IHsNCj4gLSAgVUlOVDE2ICAgICAgICAgICAgIFRva2VuOw0KPiAtICBTSEVMTF9Q QVJBTV9UWVBFICAgVHlwZTsNCj4gLX0gUEFSQU1fSVRFTV9MSVNUOw0KPiAtI2VuZGlmICAvLyBf RUZJX0FQUF9EUF9IXw0KPiBkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VQa2cvRHBfQXBwL0RwLmlu Zg0KPiBiL1BlcmZvcm1hbmNlUGtnL0RwX0FwcC9EcC5pbmYNCj4gZGVsZXRlZCBmaWxlIG1vZGUg MTAwNjQ0DQo+IGluZGV4IDEyMDRkOGVmNWIuLjAwMDAwMDAwMDANCj4gLS0tIGEvUGVyZm9ybWFu Y2VQa2cvRHBfQXBwL0RwLmluZg0KPiArKysgL2Rldi9udWxsDQo+IEBAIC0xLDgwICswLDAgQEAN Cj4gLSMjICBAZmlsZQ0KPiAtIyAgRGlzcGxheSBQZXJmb3JtYW5jZSBBcHBsaWNhdGlvbiwgTW9k dWxlIGluZm9ybWF0aW9uIGZpbGUuDQo+IC0jDQo+IC0jIENvcHlyaWdodCAoYykgMjAwOSAtIDIw MTcsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gLSMgVGhp cyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiAtIyBhcmUgbGljZW5z ZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0 aGUNCj4gQlNEIExpY2Vuc2UNCj4gLSMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRp b24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZQ0KPiBmb3VuZCBhdA0KPiAt IyBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+IC0jDQo+ IC0jIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBB TiAiQVMgSVMiDQo+IEJBU0lTLA0KPiAtIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5U QVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiAtIw0K PiAtIyMNCj4gLQ0KPiAtW0RlZmluZXNdDQo+IC0gIElORl9WRVJTSU9OICAgICAgICAgICAgICAg ICAgICA9IDB4MDAwMTAwMDYNCj4gLSAgQkFTRV9OQU1FICAgICAgICAgICAgICAgICAgICAgID0g RFANCj4gLSAgRklMRV9HVUlEICAgICAgICAgICAgICAgICAgICAgID0gN2Q1ZmYwZTMtMmZiNy00 ZTE5LTg0MTktNDQyNjZjYjYwMDAwDQo+IC0gIE1PRFVMRV9UWVBFICAgICAgICAgICAgICAgICAg ICA9IFVFRklfQVBQTElDQVRJT04NCj4gLSAgVkVSU0lPTl9TVFJJTkcgICAgICAgICAgICAgICAg ID0gMS4wDQo+IC0gIEVOVFJZX1BPSU5UICAgICAgICAgICAgICAgICAgICA9IEluaXRpYWxpemVE cA0KPiAtDQo+IC0jDQo+IC0jICBUaGlzIGZsYWcgc3BlY2lmaWVzIHdoZXRoZXIgSElJIHJlc291 cmNlIHNlY3Rpb24gaXMgZ2VuZXJhdGVkIGludG8gUEUNCj4gaW1hZ2UuDQo+IC0jDQo+IC0gIFVF RklfSElJX1JFU09VUkNFX1NFQ1RJT04gICAgICA9IFRSVUUNCj4gLQ0KPiAtIw0KPiAtIyBUaGUg Zm9sbG93aW5nIGluZm9ybWF0aW9uIGlzIGZvciByZWZlcmVuY2Ugb25seSBhbmQgbm90IHJlcXVp cmVkIGJ5IHRoZQ0KPiBidWlsZCB0b29scy4NCj4gLSMNCj4gLSMgIFZBTElEX0FSQ0hJVEVDVFVS RVMgICAgICAgICAgID0gSUEzMiBYNjQgSVBGIEVCQw0KPiAtIw0KPiAtDQo+IC1bU291cmNlc10N Cj4gLSAgRHBTdHJpbmdzLnVuaQ0KPiAtICBEcC5jDQo+IC0gIERwLmgNCj4gLSAgTGl0ZXJhbHMu aA0KPiAtICBMaXRlcmFscy5jDQo+IC0gIERwSW50ZXJuYWwuaA0KPiAtICBEcFV0aWxpdGllcy5j DQo+IC0gIERwVHJhY2UuYw0KPiAtICBEcFByb2ZpbGUuYw0KPiAtDQo+IC1bUGFja2FnZXNdDQo+ IC0gIE1kZVBrZy9NZGVQa2cuZGVjDQo+IC0gIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVj DQo+IC0gIFNoZWxsUGtnL1NoZWxsUGtnLmRlYw0KPiAtICBQZXJmb3JtYW5jZVBrZy9QZXJmb3Jt YW5jZVBrZy5kZWMNCj4gLQ0KPiAtW0xpYnJhcnlDbGFzc2VzXQ0KPiAtICBVZWZpQXBwbGljYXRp b25FbnRyeVBvaW50DQo+IC0gIFNoZWxsTGliDQo+IC0gIEJhc2VNZW1vcnlMaWINCj4gLSAgQmFz ZUxpYg0KPiAtICBNZW1vcnlBbGxvY2F0aW9uTGliDQo+IC0gIERlYnVnTGliDQo+IC0gIFVlZmlC b290U2VydmljZXNUYWJsZUxpYg0KPiAtICBQZUNvZmZHZXRFbnRyeVBvaW50TGliDQo+IC0gIFBl cmZvcm1hbmNlTGliDQo+IC0gIFByaW50TGliDQo+IC0gIFVlZmlMaWINCj4gLSAgSGlpTGliDQo+ IC0gIFVlZmlIaWlTZXJ2aWNlc0xpYg0KPiAtICBQY2RMaWINCj4gLSAgRGV2aWNlUGF0aExpYg0K PiAtICBEeGVTZXJ2aWNlc0xpYg0KPiAtDQo+IC1bR3VpZHNdDQo+IC0gIGdQZXJmb3JtYW5jZVBy b3RvY29sR3VpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyMgQ09OU1VNRVMgIyMg U3lzdGVtVGFibGUNCj4gLQ0KPiAtW1Byb3RvY29sc10NCj4gLSAgZ0VmaUxvYWRlZEltYWdlUHJv dG9jb2xHdWlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIyBDT05TVU1FUw0KPiAtICBn RWZpSGlpUGFja2FnZUxpc3RQcm90b2NvbEd1aWQgICAgICAgICAgICAgICAgICAgICAgICAgICMj IENPTlNVTUVTDQo+IC0gIGdFZmlEcml2ZXJCaW5kaW5nUHJvdG9jb2xHdWlkICAgICAgICAgICAg ICAgICAgICAgICAgICAgIyMgU09NRVRJTUVTX0NPTlNVTUVTDQo+IC0gIGdFZmlDb21wb25lbnRO YW1lMlByb3RvY29sR3VpZCAgICAgICAgICAgICAgICAgICAgICAgICAgIyMNCj4gU09NRVRJTUVT X0NPTlNVTUVTDQo+IC0gIGdFZmlMb2FkZWRJbWFnZURldmljZVBhdGhQcm90b2NvbEd1aWQgICAg ICAgICAgICAgICAgICAgIyMNCj4gU09NRVRJTUVTX0NPTlNVTUVTDQo+IC0NCj4gLVtQY2RdDQo+ IC0gIGdFZmlNZGVQa2dUb2tlblNwYWNlR3VpZC5QY2RVZWZpTGliTWF4UHJpbnRCdWZmZXJTaXpl ICAgIyMNCj4gQ09OU1VNRVMNCj4gZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlUGtnL0RwX0FwcC9E cEludGVybmFsLmgNCj4gYi9QZXJmb3JtYW5jZVBrZy9EcF9BcHAvRHBJbnRlcm5hbC5oDQo+IGRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAxYWIzNmJhN2VkLi4wMDAwMDAwMDAwDQo+ IC0tLSBhL1BlcmZvcm1hbmNlUGtnL0RwX0FwcC9EcEludGVybmFsLmgNCj4gKysrIC9kZXYvbnVs bA0KPiBAQCAtMSwzODMgKzAsMCBAQA0KPiAtLyoqIEBmaWxlDQo+IC0gIERlY2xhcmF0aW9ucyBv ZiBvYmplY3RzIGRlZmluZWQgaW50ZXJuYWxseSB0byB0aGUgRHAgQXBwbGljYXRpb24uDQo+IC0N Cj4gLSAgRGVjbGFyYXRpb25zIG9mIGRhdGEgYW5kIGZ1bmN0aW9ucyB3aGljaCBhcmUgcHJpdmF0 ZSB0byB0aGUgRHAgYXBwbGljYXRpb24uDQo+IC0gIFRoaXMgZmlsZSBzaG91bGQgbmV2ZXIgYmUg cmVmZXJlbmNlZCBieSBhbnl0aGluZyBvdGhlciB0aGFuIGNvbXBvbmVudHMgb2YNCj4gdGhlDQo+ IC0gIERwIGFwcGxpY2F0aW9uLiAgSW4gYWRkaXRpb24gdG8gZ2xvYmFsIGRhdGEsIGZ1bmN0aW9u IGRlY2xhcmF0aW9ucyBmb3INCj4gLSAgRHBVdGlsaXRpZXMuYywgRHBUcmFjZS5jLCBhbmQgRHBQ cm9maWxlLmMgYXJlIGluY2x1ZGVkIGhlcmUuDQo+IC0NCj4gLSAgQ29weXJpZ2h0IChjKSAyMDA5 IC0gMjAxNywgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiAt ICAoQykgQ29weXJpZ2h0IDIwMTUtMjAxNiBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSBEZXZl bG9wbWVudCBMUDxCUj4NCj4gLSAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1h dGVyaWFscw0KPiAtICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0 ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEDQo+IExpY2Vuc2UNCj4gLSAgd2hpY2ggYWNj b21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNl IG1heSBiZQ0KPiBmb3VuZCBhdA0KPiAtICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMv YnNkLWxpY2Vuc2UucGhwDQo+IC0NCj4gLSAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5E RVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyINCj4gQkFTSVMsDQo+IC0gIFdJVEhPVVQg V0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBFWFBS RVNTIE9SIElNUExJRUQuDQo+IC0qKi8NCj4gLSNpZm5kZWYgX0RQX0lOVEVMTkFMX0hfDQo+IC0j ZGVmaW5lIF9EUF9JTlRFTE5BTF9IXw0KPiAtDQo+IC0jZGVmaW5lIERQX0dBVUdFX1NUUklOR19M RU5HVEggICAzNg0KPiAtDQo+IC0vLw0KPiAtLy8vIE1vZHVsZS1HbG9iYWwgVmFyaWFibGVzDQo+ IC0vLy9Aew0KPiAtZXh0ZXJuIEVGSV9ISUlfSEFORExFICAgICBnSGlpSGFuZGxlOw0KPiAtZXh0 ZXJuIENIQVIxNiAgICAgICAgICAgICAqbVByaW50VG9rZW5CdWZmZXI7DQo+IC1leHRlcm4gQ0hB UjE2ICAgICAgICAgICAgIG1HYXVnZVN0cmluZ1tEUF9HQVVHRV9TVFJJTkdfTEVOR1RIICsgMV07 DQo+IC1leHRlcm4gQ0hBUjE2ICAgICAgICAgICAgIG1Vbmljb2RlVG9rZW5bRFhFX1BFUkZPUk1B TkNFX1NUUklOR19TSVpFXTsNCj4gLWV4dGVybiBVSU5UNjQgICAgICAgICAgICAgbUludGVyZXN0 VGhyZXNob2xkOw0KPiAtZXh0ZXJuIEJPT0xFQU4gICAgICAgICAgICBtU2hvd0lkOw0KPiAtDQo+ IC1leHRlcm4gUEVSRl9TVU1NQVJZX0RBVEEgIFN1bW1hcnlEYXRhOyAgICAvLy88IENyZWF0ZSB0 aGUNCj4gU3VtbWFyeURhdGEgc3RydWN0dXJlIGFuZCBpbml0LiB0byBaRVJPLg0KPiAtDQo+IC0v Ly8gVGltZXIgU3BlY2lmaWMgSW5mb3JtYXRpb24uDQo+IC1leHRlcm4gVElNRVJfSU5GTyAgICAg ICAgIFRpbWVySW5mbzsNCj4gLQ0KPiAtLy8vIEl0ZW1zIGZvciB3aGljaCB0byBnYXRoZXIgY3Vt dWxhdGl2ZSBzdGF0aXN0aWNzLg0KPiAtZXh0ZXJuIFBFUkZfQ1VNX0RBVEEgICAgICBDdW1EYXRh W107DQo+IC0NCj4gLS8vLyBOdW1iZXIgb2YgaXRlbXMgZm9yIHdoaWNoIHdlIGFyZSBnYXRoZXJp bmcgY3VtdWxhdGl2ZSBzdGF0aXN0aWNzLg0KPiAtZXh0ZXJuIFVJTlQzMiBjb25zdCAgICAgICBO dW1DdW07DQo+IC0NCj4gLS8vL0B9DQo+IC0NCj4gLS8qKg0KPiAtICBDYWxjdWxhdGUgYW4gZXZl bnQncyBkdXJhdGlvbiBpbiB0aW1lciB0aWNrcy4NCj4gLQ0KPiAtICBHaXZlbiB0aGUgY291bnQg ZGlyZWN0aW9uIGFuZCB0aGUgZXZlbnQncyBzdGFydCBhbmQgZW5kIHRpbWVyIHZhbHVlcywNCj4g LSAgY2FsY3VsYXRlIHRoZSBkdXJhdGlvbiBvZiB0aGUgZXZlbnQgaW4gdGltZXIgdGlja3MuICBJ bmZvcm1hdGlvbiBmb3INCj4gLSAgdGhlIGN1cnJlbnQgbWVhc3VyZW1lbnQgaXMgcG9pbnRlZCB0 byBieSB0aGUgcGFyYW1ldGVyLg0KPiAtDQo+IC0gIElmIHRoZSBtZWFzdXJlbWVudCdzIHN0YXJ0 IHRpbWUgaXMgMSwgaXQgaW5kaWNhdGVzIHRoYXQgdGhlIGRldmVsb3Blcg0KPiAtICBpcyBpbmRp Y2F0aW5nIHRoYXQgdGhlIG1lYXN1cmVtZW50IGJlZ2FuIGF0IHRoZSByZWxlYXNlIG9mIHJlc2V0 Lg0KPiAtICBUaGUgc3RhcnQgdGltZSBpcyBhZGp1c3RlZCB0byB0aGUgdGltZXIncyBzdGFydGlu ZyBjb3VudCBiZWZvcmUgcGVyZm9ybWluZw0KPiAtICB0aGUgZWxhcHNlZCB0aW1lIGNhbGN1bGF0 aW9uLg0KPiAtDQo+IC0gIFRoZSBjYWxjdWxhdGVkIGR1cmF0aW9uLCBpbiB0aWNrcywgaXMgdGhl IGFic29sdXRlIGRpZmZlcmVuY2UgYmV0d2Vlbg0KPiAtICB0aGUgbWVhc3VyZW1lbnQncyBlbmRp bmcgYW5kIHN0YXJ0aW5nIGNvdW50cy4NCj4gLQ0KPiAtICBAcGFyYW0gTWVhc3VyZW1lbnQgICBQ b2ludGVyIHRvIGEgTUVBU1VSRU1FTlRfUkVDT1JEIHN0cnVjdHVyZQ0KPiBjb250YWluaW5nDQo+ IC0gICAgICAgICAgICAgICAgICAgICAgIGRhdGEgZm9yIHRoZSBjdXJyZW50IG1lYXN1cmVtZW50 Lg0KPiAtDQo+IC0gIEByZXR1cm4gICAgICAgICAgICAgIFRoZSA2NC1iaXQgZHVyYXRpb24gb2Yg dGhlIGV2ZW50Lg0KPiAtKiovDQo+IC1VSU5UNjQNCj4gLUdldER1cmF0aW9uICgNCj4gLSAgSU4g T1VUIE1FQVNVUkVNRU5UX1JFQ09SRCAqTWVhc3VyZW1lbnQNCj4gLSAgKTsNCj4gLQ0KPiAtLyoq DQo+IC0gIERldGVybWluZSB3aGV0aGVyIHRoZSBNZWFzdXJlbWVudCByZWNvcmQgaXMgZm9yIGFu IEVGSSBQaGFzZS4NCj4gLQ0KPiAtICBUaGUgVG9rZW4gYW5kIE1vZHVsZSBtZW1iZXJzIG9mIHRo ZSBtZWFzdXJlbWVudCByZWNvcmQgYXJlIGNoZWNrZWQuDQo+IC0gIE1vZHVsZSBtdXN0IGJlIGVt cHR5IGFuZCBUb2tlbiBtdXN0IGJlIG9uZSBvZiBTRUMsIFBFSSwgRFhFLCBCRFMsIG9yDQo+IFNI RUxMLg0KPiAtDQo+IC0gIEBwYXJhbVtpbl0gIE1lYXN1cmVtZW50IEEgcG9pbnRlciB0byB0aGUg TWVhc3VyZW1lbnQgcmVjb3JkIHRvIHRlc3QuDQo+IC0NCj4gLSAgQHJldHZhbCAgICAgVFJVRSAg ICAgICAgVGhlIG1lYXN1cmVtZW50IHJlY29yZCBpcyBmb3IgYW4gRUZJIFBoYXNlLg0KPiAtICBA cmV0dmFsICAgICBGQUxTRSAgICAgICBUaGUgbWVhc3VyZW1lbnQgcmVjb3JkIGlzIE5PVCBmb3Ig YW4gRUZJIFBoYXNlLg0KPiAtKiovDQo+IC1CT09MRUFODQo+IC1Jc1BoYXNlKA0KPiAtICBJTiBN RUFTVVJFTUVOVF9SRUNPUkQgKk1lYXN1cmVtZW50DQo+IC0gICk7DQo+IC0NCj4gLS8qKg0KPiAt ICBHZXQgdGhlIGZpbGUgbmFtZSBwb3J0aW9uIG9mIHRoZSBQZGIgRmlsZSBOYW1lLg0KPiAtDQo+ IC0gIFRoZSBwb3J0aW9uIG9mIHRoZSBQZGIgRmlsZSBOYW1lIGJldHdlZW4gdGhlIGxhc3QgYmFj a3NsYXNoIGFuZA0KPiAtICBlaXRoZXIgYSBmb2xsb3dpbmcgcGVyaW9kIG9yIHRoZSBlbmQgb2Yg dGhlIHN0cmluZyBpcyBjb252ZXJ0ZWQNCj4gLSAgdG8gVW5pY29kZSBhbmQgY29waWVkIGludG8g VW5pY29kZUJ1ZmZlci4gIFRoZSBuYW1lIGlzIHRydW5jYXRlZCwNCj4gLSAgaWYgbmVjZXNzYXJ5 LCB0byBlbnN1cmUgdGhhdCBVbmljb2RlQnVmZmVyIGlzIG5vdCBvdmVycnVuLg0KPiAtDQo+IC0g IEBwYXJhbVtpbl0gIFBkYkZpbGVOYW1lICAgICBQZGIgZmlsZSBuYW1lLg0KPiAtICBAcGFyYW1b b3V0XSBVbmljb2RlQnVmZmVyICAgVGhlIHJlc3VsdGFudCBVbmljb2RlIEZpbGUgTmFtZS4NCj4g LQ0KPiAtKiovDQo+IC1WT0lEDQo+IC1HZXRTaG9ydFBkYkZpbGVOYW1lICgNCj4gLSAgSU4gIENI QVI4ICAgICAqUGRiRmlsZU5hbWUsDQo+IC0gIE9VVCBDSEFSMTYgICAgKlVuaWNvZGVCdWZmZXIN Cj4gLSAgKTsNCj4gLQ0KPiAtLyoqDQo+IC0gIEdldCBhIGh1bWFuIHJlYWRhYmxlIG5hbWUgZm9y IGFuIGltYWdlIGhhbmRsZS4NCj4gLSAgVGhlIGZvbGxvd2luZyBtZXRob2RzIHdpbGwgYmUgdHJp ZWQgb3JkZXJseToNCj4gLSAgICAxLiBJbWFnZSBQREINCj4gLSAgICAyLiBDb21wb25lbnROYW1l MiBwcm90b2NvbA0KPiAtICAgIDMuIEZGUyBVSSBzZWN0aW9uDQo+IC0gICAgNC4gSW1hZ2UgR1VJ RA0KPiAtICAgIDUuIEltYWdlIERldmljZVBhdGgNCj4gLSAgICA2LiBVbmtub3duIERyaXZlciBO YW1lDQo+IC0NCj4gLSAgQHBhcmFtW2luXSAgICBIYW5kbGUNCj4gLQ0KPiAtICBAcG9zdCAgIFRo ZSByZXN1bHRpbmcgVW5pY29kZSBuYW1lIHN0cmluZyBpcyBzdG9yZWQgaW4gdGhlDQo+IC0gICAg ICAgICAgbUdhdWdlU3RyaW5nIGdsb2JhbCBhcnJheS4NCj4gLQ0KPiAtKiovDQo+IC1WT0lEDQo+ IC1HZXROYW1lRnJvbUhhbmRsZSAoDQo+IC0gIElOIEVGSV9IQU5ETEUgSGFuZGxlDQo+IC0gICk7 DQo+IC0NCj4gLS8qKg0KPiAtICBDYWxjdWxhdGUgdGhlIER1cmF0aW9uIGluIG1pY3Jvc2Vjb25k cy4NCj4gLQ0KPiAtICBEdXJhdGlvbiBpcyBtdWx0aXBsaWVkIGJ5IDEwMDAsIGluc3RlYWQgb2Yg RnJlcXVlbmN5IGJlaW5nIGRpdmlkZWQgYnkgMTAwMA0KPiBvcg0KPiAtICBtdWx0aXBseWluZyB0 aGUgcmVzdWx0IGJ5IDEwMDAsIGluIG9yZGVyIHRvIG1haW50YWluIHByZWNpc2lvbi4gIFNpbmNl DQo+IER1cmF0aW9uIGlzDQo+IC0gIGEgNjQtYml0IHZhbHVlLCBtdWx0aXBseWluZyBpdCBieSAx MDAwIGlzIHVubGlrZWx5IHRvIHByb2R1Y2UgYW4gb3ZlcmZsb3cuDQo+IC0NCj4gLSAgVGhlIHRp bWUgaXMgY2FsY3VsYXRlZCBhcyAoRHVyYXRpb24gKiAxMDAwKSAvIFRpbWVyX0ZyZXF1ZW5jeS4N Cj4gLQ0KPiAtICBAcGFyYW1baW5dICBEdXJhdGlvbiAgIFRoZSBldmVudCBkdXJhdGlvbiBpbiB0 aW1lciB0aWNrcy4NCj4gLQ0KPiAtICBAcmV0dXJuICAgICBBIDY0LWJpdCB2YWx1ZSB3aGljaCBp cyB0aGUgRWxhcHNlZCB0aW1lIGluIG1pY3Jvc2Vjb25kcy4NCj4gLSoqLw0KPiAtVUlOVDY0DQo+ IC1EdXJhdGlvbkluTWljcm9TZWNvbmRzICgNCj4gLSAgSU4gVUlOVDY0IER1cmF0aW9uDQo+IC0g ICk7DQo+IC0NCj4gLS8qKg0KPiAtICBGb3JtYXR0ZWQgUHJpbnQgdXNpbmcgYSBIaWkgVG9rZW4g dG8gcmVmZXJlbmNlIHRoZSBsb2NhbGl6ZWQgZm9ybWF0IHN0cmluZy4NCj4gLQ0KPiAtICBAcGFy YW1baW5dICBUb2tlbiAgIEEgSElJIHRva2VuIGFzc29jaWF0ZWQgd2l0aCBhIGxvY2FsaXplZCBV bmljb2RlIHN0cmluZy4NCj4gLSAgQHBhcmFtW2luXSAgLi4uICAgICBUaGUgdmFyaWFibGUgYXJn dW1lbnQgbGlzdC4NCj4gLQ0KPiAtICBAcmV0dXJuICAgICAgICAgICAgIFRoZSBudW1iZXIgb2Yg Y2hhcmFjdGVycyBjb252ZXJ0ZWQgYnkgVW5pY29kZVZTUHJpbnQoKS4NCj4gLQ0KPiAtKiovDQo+ IC1VSU5UTg0KPiAtRUZJQVBJDQo+IC1QcmludFRva2VuICgNCj4gLSAgSU4gVUlOVDE2IFRva2Vu LA0KPiAtICAuLi4NCj4gLSAgKTsNCj4gLQ0KPiAtLyoqDQo+IC0gIEdldCBpbmRleCBvZiBNZWFz dXJlbWVudCBSZWNvcmQncyBtYXRjaCBpbiB0aGUgQ3VtRGF0YSBhcnJheS4NCj4gLQ0KPiAtICBJ ZiB0aGUgTWVhc3VyZW1lbnQncyBUb2tlbiB2YWx1ZSBtYXRjaGVzIGEgVG9rZW4gaW4gb25lIG9m IHRoZSBDdW1EYXRhDQo+IC0gIHJlY29yZHMsIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hpbmcgcmVj b3JkIGlzIHJldHVybmVkLiAgVGhlIHJldHVybmVkDQo+IC0gIGluZGV4IGlzIGEgc2lnbmVkIHZh bHVlIHNvIHRoYXQgbmVnYXRpdmUgdmFsdWVzIGNhbiBpbmRpY2F0ZSB0aGF0DQo+IC0gIHRoZSBN ZWFzdXJlbWVudCBkaWRuJ3QgbWF0Y2ggYW55IGVudHJ5IGluIHRoZSBDdW1EYXRhIGFycmF5Lg0K PiAtDQo+IC0gIEBwYXJhbVtpbl0gIE1lYXN1cmVtZW50IEEgcG9pbnRlciB0byBhIE1lYXN1cmVt ZW50IFJlY29yZCB0byBtYXRjaA0KPiBhZ2FpbnN0IHRoZSBDdW1EYXRhIGFycmF5Lg0KPiAtDQo+ IC0gIEByZXR2YWwgICAgIDwwICAgIFRva2VuIGlzIG5vdCBpbiB0aGUgQ3VtRGF0YSBhcnJheS4N Cj4gLSAgQHJldHZhbCAgICAgPj0wICAgUmV0dXJuIHZhbHVlIGlzIHRoZSBpbmRleCBpbnRvIEN1 bURhdGEgd2hlcmUgVG9rZW4gaXMNCj4gZm91bmQuDQo+IC0qKi8NCj4gLUlOVE4NCj4gLUdldEN1 bXVsYXRpdmVJdGVtKA0KPiAtICBJTiBNRUFTVVJFTUVOVF9SRUNPUkQgKk1lYXN1cmVtZW50DQo+ IC0gICk7DQo+IC0NCj4gLS8qKg0KPiAtICBDb2xsZWN0IHZlcmJvc2Ugc3RhdGlzdGljcyBhYm91 dCB0aGUgbG9nZ2VkIHBlcmZvcm1hbmNlIG1lYXN1cmVtZW50cy4NCj4gLQ0KPiAtICBHZW5lcmFs IFN1bW1hcnkgaW5mb3JtYXRpb24gZm9yIGFsbCBUcmFjZSBtZWFzdXJlbWVudHMgaXMgZ2F0aGVy ZWQgYW5kDQo+IC0gIHN0b3JlZCB3aXRoaW4gdGhlIFN1bW1hcnlEYXRhIHN0cnVjdHVyZS4gIFRo aXMgaW5mb3JtYXRpb24gaXMgYm90aA0KPiAtICB1c2VkIGludGVybmFsbHkgYnkgc3Vic2VxdWVu dCByZXBvcnRpbmcgZnVuY3Rpb25zLCBhbmQgZGlzcGxheWVkDQo+IC0gIGF0IHRoZSBlbmQgb2Yg dmVyYm9zZSByZXBvcnRzLg0KPiAtDQo+IC0gIEBwcmUgIFRoZSBTdW1tYXJ5RGF0YSBhbmQgQ3Vt RGF0YSBzdHJ1Y3R1cmVzIG11c3QgYmUgaW5pdGlhbGl6ZWQNCj4gLSAgICAgICAgcHJpb3IgdG8g Y2FsbGluZyB0aGlzIGZ1bmN0aW9uLg0KPiAtDQo+IC0gIEBwb3N0IFRoZSBTdW1tYXJ5RGF0YSBh bmQgQ3VtRGF0YSBzdHJ1Y3R1cmVzIGNvbnRhaW4gc3RhdGlzdGljcyBmb3IgdGhlDQo+IC0gICAg ICAgIGN1cnJlbnQgcGVyZm9ybWFuY2UgbG9ncy4NCj4gLQ0KPiAtICBAcGFyYW1baW4sIG91dF0g Q3VzdG9tQ3VtdWxhdGl2ZURhdGEgIFRoZSBwb2ludGVyIHRvIHRoZSBjdXN0b20NCj4gY3VtdWxh dGl2ZSBkYXRhLg0KPiAtDQo+IC0qKi8NCj4gLVZPSUQNCj4gLUdhdGhlclN0YXRpc3RpY3MoDQo+ IC0gIElOIE9VVCBQRVJGX0NVTV9EQVRBICAgICAgICAgICAgICAqQ3VzdG9tQ3VtdWxhdGl2ZURh dGEgT1BUSU9OQUwNCj4gLSAgKTsNCj4gLQ0KPiAtLyoqDQo+IC0gIEdhdGhlciBhbmQgcHJpbnQg QUxMIFRyYWNlIFJlY29yZHMuDQo+IC0NCj4gLSAgRGlzcGxheXMgYWxsICJpbnRlcmVzdGluZyIg VHJhY2UgbWVhc3VyZW1lbnRzIGluIG9yZGVyLjxCUj4NCj4gLSAgVGhlIG51bWJlciBvZiByZWNv cmRzIGRpc3BsYXllZCBpcyBjb250cm9sbGVkIGJ5Og0KPiAtICAgICAtIHJlY29yZHMgd2l0aCBh IGR1cmF0aW9uIGxlc3MgdGhhbiBtSW50ZXJlc3RUaHJlc2hvbGQgbWljcm9zZWNvbmRzIGFyZQ0K PiBub3QgZGlzcGxheWVkLg0KPiAtICAgICAtIE5vIG1vcmUgdGhhbiBMaW1pdCByZWNvcmRzIGFy ZSBkaXNwbGF5ZWQuICBBIExpbWl0IG9mIHplcm8gd2lsbCBub3QgbGltaXQNCj4gdGhlIG91dHB1 dC4NCj4gLSAgICAgLSBJZiB0aGUgRXhjbHVkZUZsYWcgaXMgVFJVRSwgcmVjb3JkcyBtYXRjaGlu ZyBlbnRyaWVzIGluIHRoZSBDdW1EYXRhDQo+IGFycmF5IGFyZSBub3QNCj4gLSAgICAgICBkaXNw bGF5ZWQuDQo+IC0NCj4gLSAgQHByZSAgICBUaGUgbUludGVyZXN0VGhyZXNob2xkIGdsb2JhbCB2 YXJpYWJsZSBpcyBzZXQgdG8gdGhlIHNob3J0ZXN0DQo+IGR1cmF0aW9uIHRvIGJlIHByaW50ZWQu DQo+IC0gICAgICAgICAgIFRoZSBtR2F1Z2VTdHJpbmcgYW5kIG1Vbmljb2RlVG9rZW4gZ2xvYmFs IGFycmF5cyBhcmUgdXNlZCBmb3INCj4gdGVtcG9yYXJ5IHN0cmluZyBzdG9yYWdlLg0KPiAtICAg ICAgICAgICBUaGV5IG11c3Qgbm90IGJlIGluIHVzZSBieSBhIGNhbGxpbmcgZnVuY3Rpb24uDQo+ IC0NCj4gLSAgQHBhcmFtW2luXSAgICBMaW1pdCAgICAgICBUaGUgbnVtYmVyIG9mIHJlY29yZHMg dG8gcHJpbnQuICBaZXJvIGlzIEFMTC4NCj4gLSAgQHBhcmFtW2luXSAgICBFeGNsdWRlRmxhZyBU UlVFIHRvIGV4Y2x1ZGUgaW5kaXZpZHVhbCBDdW11bGF0aXZlIGl0ZW1zDQo+IGZyb20gZGlzcGxh eS4NCj4gLQ0KPiAtICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgb3BlcmF0aW9u IHdhcyBzdWNjZXNzZnVsLg0KPiAtICBAcmV0dmFsIEVGSV9BQk9SVEVEICAgICAgICAgICBUaGUg dXNlciBhYm9ydHMgdGhlIG9wZXJhdGlvbi4NCj4gLSAgQHJldHVybiBPdGhlcnMgICAgICAgICAg ICAgICAgZnJvbSBhIGNhbGwgdG8gZ0JTLT5Mb2NhdGVIYW5kbGVCdWZmZXIoKS4NCj4gLSoqLw0K PiAtRUZJX1NUQVRVUw0KPiAtRHVtcEFsbFRyYWNlKA0KPiAtICBJTiBVSU5UTiAgICAgICAgICAg ICBMaW1pdCwNCj4gLSAgSU4gQk9PTEVBTiAgICAgICAgICAgRXhjbHVkZUZsYWcNCj4gLSAgKTsN Cj4gLQ0KPiAtLyoqDQo+IC0gIEdhdGhlciBhbmQgcHJpbnQgUmF3IFRyYWNlIFJlY29yZHMuDQo+ IC0NCj4gLSAgQWxsIFRyYWNlIG1lYXN1cmVtZW50cyB3aXRoIGEgZHVyYXRpb24gZ3JlYXRlciB0 aGFuIG9yIGVxdWFsIHRvDQo+IC0gIG1JbnRlcmVzdFRocmVzaG9sZCBhcmUgcHJpbnRlZCB3aXRo b3V0IGludGVycHJldGF0aW9uLg0KPiAtDQo+IC0gIFRoZSBudW1iZXIgb2YgcmVjb3JkcyBkaXNw bGF5ZWQgaXMgY29udHJvbGxlZCBieToNCj4gLSAgICAgLSByZWNvcmRzIHdpdGggYSBkdXJhdGlv biBsZXNzIHRoYW4gbUludGVyZXN0VGhyZXNob2xkIG1pY3Jvc2Vjb25kcyBhcmUNCj4gbm90IGRp c3BsYXllZC4NCj4gLSAgICAgLSBObyBtb3JlIHRoYW4gTGltaXQgcmVjb3JkcyBhcmUgZGlzcGxh eWVkLiAgQSBMaW1pdCBvZiB6ZXJvIHdpbGwgbm90IGxpbWl0DQo+IHRoZSBvdXRwdXQuDQo+IC0g ICAgIC0gSWYgdGhlIEV4Y2x1ZGVGbGFnIGlzIFRSVUUsIHJlY29yZHMgbWF0Y2hpbmcgZW50cmll cyBpbiB0aGUgQ3VtRGF0YQ0KPiBhcnJheSBhcmUgbm90DQo+IC0gICAgICAgZGlzcGxheWVkLg0K PiAtDQo+IC0gIEBwcmUgICAgVGhlIG1JbnRlcmVzdFRocmVzaG9sZCBnbG9iYWwgdmFyaWFibGUg aXMgc2V0IHRvIHRoZSBzaG9ydGVzdA0KPiBkdXJhdGlvbiB0byBiZSBwcmludGVkLg0KPiAtDQo+ IC0gIEBwYXJhbVtpbl0gICAgTGltaXQgICAgICAgVGhlIG51bWJlciBvZiByZWNvcmRzIHRvIHBy aW50LiAgWmVybyBpcyBBTEwuDQo+IC0gIEBwYXJhbVtpbl0gICAgRXhjbHVkZUZsYWcgVFJVRSB0 byBleGNsdWRlIGluZGl2aWR1YWwgQ3VtdWxhdGl2ZSBpdGVtcw0KPiBmcm9tIGRpc3BsYXkuDQo+ IC0NCj4gLSAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIG9wZXJhdGlvbiB3YXMg c3VjY2Vzc2Z1bC4NCj4gLSAgQHJldHZhbCBFRklfQUJPUlRFRCAgICAgICAgICAgVGhlIHVzZXIg YWJvcnRzIHRoZSBvcGVyYXRpb24uDQo+IC0qKi8NCj4gLUVGSV9TVEFUVVMNCj4gLUR1bXBSYXdU cmFjZSgNCj4gLSAgSU4gVUlOVE4gICAgICAgICAgTGltaXQsDQo+IC0gIElOIEJPT0xFQU4gICAg ICAgIEV4Y2x1ZGVGbGFnDQo+IC0gICk7DQo+IC0NCj4gLS8qKg0KPiAtICBHYXRoZXIgYW5kIHBy aW50IE1ham9yIFBoYXNlIG1ldHJpY3MuDQo+IC0NCj4gLSoqLw0KPiAtVk9JRA0KPiAtUHJvY2Vz c1BoYXNlcygNCj4gLSAgVk9JRA0KPiAtICApOw0KPiAtDQo+IC0NCj4gLS8qKg0KPiAtICBHYXRo ZXIgYW5kIHByaW50IEhhbmRsZSBkYXRhLg0KPiAtDQo+IC0gIEBwYXJhbVtpbl0gICAgRXhjbHVk ZUZsYWcgICBUUlVFIHRvIGV4Y2x1ZGUgaW5kaXZpZHVhbCBDdW11bGF0aXZlIGl0ZW1zDQo+IGZy b20gZGlzcGxheS4NCj4gLQ0KPiAtICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgIFRo ZSBvcGVyYXRpb24gd2FzIHN1Y2Nlc3NmdWwuDQo+IC0gIEByZXR2YWwgRUZJX0FCT1JURUQgICAg ICAgICAgICAgVGhlIHVzZXIgYWJvcnRzIHRoZSBvcGVyYXRpb24uDQo+IC0gIEByZXR1cm4gT3Ro ZXJzICAgICAgICAgICAgICAgICAgZnJvbSBhIGNhbGwgdG8gZ0JTLT5Mb2NhdGVIYW5kbGVCdWZm ZXIoKS4NCj4gLSoqLw0KPiAtRUZJX1NUQVRVUw0KPiAtUHJvY2Vzc0hhbmRsZXMoDQo+IC0gIElO IEJPT0xFQU4gRXhjbHVkZUZsYWcNCj4gLSAgKTsNCj4gLQ0KPiAtDQo+IC0vKioNCj4gLSAgR2F0 aGVyIGFuZCBwcmludCBQRUlNIGRhdGEuDQo+IC0NCj4gLSAgT25seSBwcmludHMgY29tcGxldGUg UEVJTSByZWNvcmRzDQo+IC0NCj4gLSAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhl IG9wZXJhdGlvbiB3YXMgc3VjY2Vzc2Z1bC4NCj4gLSAgQHJldHZhbCBFRklfQUJPUlRFRCAgICAg ICAgICAgVGhlIHVzZXIgYWJvcnRzIHRoZSBvcGVyYXRpb24uDQo+IC0qKi8NCj4gLUVGSV9TVEFU VVMNCj4gLVByb2Nlc3NQZWltcygNCj4gLSAgVk9JRA0KPiAtICApOw0KPiAtDQo+IC0vKioNCj4g LSAgR2F0aGVyIGFuZCBwcmludCBnbG9iYWwgZGF0YS4NCj4gLQ0KPiAtICBTdHJpcHMgb3V0IGlu Y29tcGxldGUgb3IgIkV4ZWN1dGlvbiBQaGFzZSIgcmVjb3Jkcw0KPiAtICBPbmx5IHByaW50cyBy ZWNvcmRzIHdoZXJlIEhhbmRsZSBpcyBOVUxMDQo+IC0gIEluY3JlbWVudCBUSW5kZXggZm9yIGV2 ZXJ5IHJlY29yZCwgZXZlbiBza2lwcGVkIG9uZXMsIHNvIHRoYXQgd2UgaGF2ZSBhbg0KPiAtICBp bmRpY2F0aW9uIG9mIGV2ZXJ5IG1lYXN1cmVtZW50IHJlY29yZCB0YWtlbi4NCj4gLQ0KPiAtICBA cmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgb3BlcmF0aW9uIHdhcyBzdWNjZXNzZnVs Lg0KPiAtICBAcmV0dmFsIEVGSV9BQk9SVEVEICAgICAgICAgICBUaGUgdXNlciBhYm9ydHMgdGhl IG9wZXJhdGlvbi4NCj4gLSoqLw0KPiAtRUZJX1NUQVRVUw0KPiAtUHJvY2Vzc0dsb2JhbCgNCj4g LSAgVk9JRA0KPiAtICApOw0KPiAtDQo+IC0vKioNCj4gLSAgR2F0aGVyIGFuZCBwcmludCBjdW11 bGF0aXZlIGRhdGEuDQo+IC0NCj4gLSAgVHJhdmVyc2UgdGhlIG1lYXN1cmVtZW50IHJlY29yZHMg YW5kOjxCUj4NCj4gLSAgRm9yIGVhY2ggcmVjb3JkIHdpdGggYSBUb2tlbiBsaXN0ZWQgaW4gdGhl IEN1bURhdGEgYXJyYXk6PEJSPg0KPiAtICAgICAtIFVwZGF0ZSB0aGUgaW5zdGFuY2UgY291bnQg YW5kIHRoZSB0b3RhbCwgbWluaW11bSwgYW5kIG1heGltdW0NCj4gZHVyYXRpb25zLg0KPiAtICBG aW5hbGx5LCBwcmludCB0aGUgZ2F0aGVyZWQgY3VtdWxhdGl2ZSBzdGF0aXN0aWNzLg0KPiAtDQo+ IC0gIEBwYXJhbVtpbl0gICAgQ3VzdG9tQ3VtdWxhdGl2ZURhdGEgIFRoZSBwb2ludGVyIHRvIHRo ZSBjdXN0b20NCj4gY3VtdWxhdGl2ZSBkYXRhLg0KPiAtDQo+IC0qKi8NCj4gLVZPSUQNCj4gLVBy b2Nlc3NDdW11bGF0aXZlKA0KPiAtICBJTiBQRVJGX0NVTV9EQVRBICAgICAgICAgICAgICAgICAg KkN1c3RvbUN1bXVsYXRpdmVEYXRhIE9QVElPTkFMDQo+IC0gICk7DQo+IC0NCj4gLS8qKg0KPiAt ICBHYXRoZXIgYW5kIHByaW50IEFMTCBQcm9maWxpbmcgUmVjb3Jkcy4NCj4gLQ0KPiAtICBEaXNw bGF5cyBhbGwgImludGVyZXN0aW5nIiBQcm9maWxlIG1lYXN1cmVtZW50cyBpbiBvcmRlci4NCj4g LSAgVGhlIG51bWJlciBvZiByZWNvcmRzIGRpc3BsYXllZCBpcyBjb250cm9sbGVkIGJ5Og0KPiAt ICAgICAtIHJlY29yZHMgd2l0aCBhIGR1cmF0aW9uIGxlc3MgdGhhbiBtSW50ZXJlc3RUaHJlc2hv bGQgbWljcm9zZWNvbmRzIGFyZQ0KPiBub3QgZGlzcGxheWVkLg0KPiAtICAgICAtIE5vIG1vcmUg dGhhbiBMaW1pdCByZWNvcmRzIGFyZSBkaXNwbGF5ZWQuICBBIExpbWl0IG9mIHplcm8gd2lsbCBu b3QgbGltaXQNCj4gdGhlIG91dHB1dC4NCj4gLSAgICAgLSBJZiB0aGUgRXhjbHVkZUZsYWcgaXMg VFJVRSwgcmVjb3JkcyBtYXRjaGluZyBlbnRyaWVzIGluIHRoZSBDdW1EYXRhDQo+IGFycmF5IGFy ZSBub3QNCj4gLSAgICAgICBkaXNwbGF5ZWQuDQo+IC0NCj4gLSAgQHByZSAgICBUaGUgbUludGVy ZXN0VGhyZXNob2xkIGdsb2JhbCB2YXJpYWJsZSBpcyBzZXQgdG8gdGhlIHNob3J0ZXN0DQo+IGR1 cmF0aW9uIHRvIGJlIHByaW50ZWQuDQo+IC0gICAgICAgICAgIFRoZSBtR2F1Z2VTdHJpbmcgYW5k IG1Vbmljb2RlVG9rZW4gZ2xvYmFsIGFycmF5cyBhcmUgdXNlZCBmb3INCj4gdGVtcG9yYXJ5IHN0 cmluZyBzdG9yYWdlLg0KPiAtICAgICAgICAgICBUaGV5IG11c3Qgbm90IGJlIGluIHVzZSBieSBh IGNhbGxpbmcgZnVuY3Rpb24uDQo+IC0NCj4gLSAgQHBhcmFtW2luXSAgICBMaW1pdCAgICAgICAg IFRoZSBudW1iZXIgb2YgcmVjb3JkcyB0byBwcmludC4gIFplcm8gaXMgQUxMLg0KPiAtICBAcGFy YW1baW5dICAgIEV4Y2x1ZGVGbGFnICAgVFJVRSB0byBleGNsdWRlIGluZGl2aWR1YWwgQ3VtdWxh dGl2ZSBpdGVtcw0KPiBmcm9tIGRpc3BsYXkuDQo+IC0NCj4gLSoqLw0KPiAtVk9JRA0KPiAtRHVt cEFsbFByb2ZpbGUoDQo+IC0gIElOIFVJTlROICAgICAgICAgIExpbWl0LA0KPiAtICBJTiBCT09M RUFOICAgICAgICBFeGNsdWRlRmxhZw0KPiAtICApOw0KPiAtDQo+IC0vKioNCj4gLSAgR2F0aGVy IGFuZCBwcmludCBSYXcgUHJvZmlsZSBSZWNvcmRzLg0KPiAtDQo+IC0gIEFsbCBQcm9maWxlIG1l YXN1cmVtZW50cyB3aXRoIGEgZHVyYXRpb24gZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvDQo+IC0g IG1JbnRlcmVzdFRocmVzaG9sZCBhcmUgcHJpbnRlZCB3aXRob3V0IGludGVycHJldGF0aW9uLg0K PiAtDQo+IC0gIFRoZSBudW1iZXIgb2YgcmVjb3JkcyBkaXNwbGF5ZWQgaXMgY29udHJvbGxlZCBi eToNCj4gLSAgICAgLSByZWNvcmRzIHdpdGggYSBkdXJhdGlvbiBsZXNzIHRoYW4gbUludGVyZXN0 VGhyZXNob2xkIG1pY3Jvc2Vjb25kcyBhcmUNCj4gbm90IGRpc3BsYXllZC4NCj4gLSAgICAgLSBO byBtb3JlIHRoYW4gTGltaXQgcmVjb3JkcyBhcmUgZGlzcGxheWVkLiAgQSBMaW1pdCBvZiB6ZXJv IHdpbGwgbm90IGxpbWl0DQo+IHRoZSBvdXRwdXQuDQo+IC0gICAgIC0gSWYgdGhlIEV4Y2x1ZGVG bGFnIGlzIFRSVUUsIHJlY29yZHMgbWF0Y2hpbmcgZW50cmllcyBpbiB0aGUgQ3VtRGF0YQ0KPiBh cnJheSBhcmUgbm90DQo+IC0gICAgICAgZGlzcGxheWVkLg0KPiAtDQo+IC0gIEBwcmUgICAgVGhl IG1JbnRlcmVzdFRocmVzaG9sZCBnbG9iYWwgdmFyaWFibGUgaXMgc2V0IHRvIHRoZSBzaG9ydGVz dA0KPiBkdXJhdGlvbiB0byBiZSBwcmludGVkLg0KPiAtDQo+IC0gIEBwYXJhbVtpbl0gICAgTGlt aXQgICAgICAgICBUaGUgbnVtYmVyIG9mIHJlY29yZHMgdG8gcHJpbnQuICBaZXJvIGlzIEFMTC4N Cj4gLSAgQHBhcmFtW2luXSAgICBFeGNsdWRlRmxhZyAgIFRSVUUgdG8gZXhjbHVkZSBpbmRpdmlk dWFsIEN1bXVsYXRpdmUgaXRlbXMNCj4gZnJvbSBkaXNwbGF5Lg0KPiAtDQo+IC0qKi8NCj4gLVZP SUQNCj4gLUR1bXBSYXdQcm9maWxlKA0KPiAtICBJTiBVSU5UTiAgICAgICAgICBMaW1pdCwNCj4g LSAgSU4gQk9PTEVBTiAgICAgICAgRXhjbHVkZUZsYWcNCj4gLSAgKTsNCj4gLQ0KPiAtLyoqDQo+ IC0gIFdyYXAgb3JpZ2luYWwgRnJlZVBvb2wgdG8gY2hlY2sgTlVMTCBwb2ludGVyIGZpcnN0Lg0K PiAtDQo+IC0gIEBwYXJhbVtpbl0gICAgQnVmZmVyICAgICAgVGhlIHBvaW50ZXIgdG8gdGhlIGJ1 ZmZlciB0byBmcmVlLg0KPiAtDQo+IC0qKi8NCj4gLVZPSUQNCj4gLVNhZmVGcmVlUG9vbCAoDQo+ IC0gIElOIFZPSUQgICAqQnVmZmVyDQo+IC0gICk7DQo+IC0NCj4gLSNlbmRpZg0KPiBkaWZmIC0t Z2l0IGEvUGVyZm9ybWFuY2VQa2cvRHBfQXBwL0RwUHJvZmlsZS5jDQo+IGIvUGVyZm9ybWFuY2VQ a2cvRHBfQXBwL0RwUHJvZmlsZS5jDQo+IGRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRl eCAxNWMyZWYxNGQ0Li4wMDAwMDAwMDAwDQo+IC0tLSBhL1BlcmZvcm1hbmNlUGtnL0RwX0FwcC9E cFByb2ZpbGUuYw0KPiArKysgL2Rldi9udWxsDQo+IEBAIC0xLDEwMiArMCwwIEBADQo+IC0vKiog QGZpbGUNCj4gLSAgTWVhc3VyZWQgUHJvZmlsaW5nIHJlcG9ydGluZyBmb3IgdGhlIERwIHV0aWxp dHkuDQo+IC0NCj4gLSAgQ29weXJpZ2h0IChjKSAyMDA5IC0gMjAxNywgSW50ZWwgQ29ycG9yYXRp b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiAtICBUaGlzIHByb2dyYW0gYW5kIHRoZSBh Y2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+IC0gIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFi bGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QNCj4gTGljZW5zZQ0K PiAtICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQg b2YgdGhlIGxpY2Vuc2UgbWF5IGJlDQo+IGZvdW5kIGF0DQo+IC0gIGh0dHA6Ly9vcGVuc291cmNl Lm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gLQ0KPiAtICBUSEUgUFJPR1JBTSBJUyBE SVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywN Cj4gLSAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwg RUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gLSoqLw0KPiAtDQo+IC0jaW5jbHVkZSA8 TGlicmFyeS9CYXNlTGliLmg+DQo+IC0jaW5jbHVkZSA8TGlicmFyeS9CYXNlTWVtb3J5TGliLmg+ DQo+IC0jaW5jbHVkZSA8TGlicmFyeS9NZW1vcnlBbGxvY2F0aW9uTGliLmg+DQo+IC0jaW5jbHVk ZSA8TGlicmFyeS9EZWJ1Z0xpYi5oPg0KPiAtI2luY2x1ZGUgPExpYnJhcnkvVWVmaUJvb3RTZXJ2 aWNlc1RhYmxlTGliLmg+DQo+IC0jaW5jbHVkZSA8TGlicmFyeS9QZUNvZmZHZXRFbnRyeVBvaW50 TGliLmg+DQo+IC0jaW5jbHVkZSA8TGlicmFyeS9QZXJmb3JtYW5jZUxpYi5oPg0KPiAtI2luY2x1 ZGUgPExpYnJhcnkvUHJpbnRMaWIuaD4NCj4gLSNpbmNsdWRlIDxMaWJyYXJ5L0hpaUxpYi5oPg0K PiAtI2luY2x1ZGUgPExpYnJhcnkvUGNkTGliLmg+DQo+IC0NCj4gLSNpbmNsdWRlIDxHdWlkL1Bl cmZvcm1hbmNlLmg+DQo+IC0NCj4gLSNpbmNsdWRlICJEcC5oIg0KPiAtI2luY2x1ZGUgIkxpdGVy YWxzLmgiDQo+IC0jaW5jbHVkZSAiRHBJbnRlcm5hbC5oIg0KPiAtDQo+IC0vKioNCj4gLSAgR2F0 aGVyIGFuZCBwcmludCBBTEwgUHJvZmlsaW5nIFJlY29yZHMuDQo+IC0NCj4gLSAgRGlzcGxheXMg YWxsICJpbnRlcmVzdGluZyIgUHJvZmlsZSBtZWFzdXJlbWVudHMgaW4gb3JkZXIuDQo+IC0gIFRo ZSBudW1iZXIgb2YgcmVjb3JkcyBkaXNwbGF5ZWQgaXMgY29udHJvbGxlZCBieToNCj4gLSAgICAg LSByZWNvcmRzIHdpdGggYSBkdXJhdGlvbiBsZXNzIHRoYW4gbUludGVyZXN0VGhyZXNob2xkIG1p Y3Jvc2Vjb25kcyBhcmUNCj4gbm90IGRpc3BsYXllZC4NCj4gLSAgICAgLSBObyBtb3JlIHRoYW4g TGltaXQgcmVjb3JkcyBhcmUgZGlzcGxheWVkLiAgQSBMaW1pdCBvZiB6ZXJvIHdpbGwgbm90IGxp bWl0DQo+IHRoZSBvdXRwdXQuDQo+IC0gICAgIC0gSWYgdGhlIEV4Y2x1ZGVGbGFnIGlzIFRSVUUs IHJlY29yZHMgbWF0Y2hpbmcgZW50cmllcyBpbiB0aGUgQ3VtRGF0YQ0KPiBhcnJheSBhcmUgbm90 DQo+IC0gICAgICAgZGlzcGxheWVkLg0KPiAtDQo+IC0gIEBwcmUgICAgVGhlIG1JbnRlcmVzdFRo cmVzaG9sZCBnbG9iYWwgdmFyaWFibGUgaXMgc2V0IHRvIHRoZSBzaG9ydGVzdA0KPiBkdXJhdGlv biB0byBiZSBwcmludGVkLg0KPiAtICAgICAgICAgICBUaGUgbUdhdWdlU3RyaW5nIGFuZCBtVW5p Y29kZVRva2VuIGdsb2JhbCBhcnJheXMgYXJlIHVzZWQgZm9yDQo+IHRlbXBvcmFyeSBzdHJpbmcg c3RvcmFnZS4NCj4gLSAgICAgICAgICAgVGhleSBtdXN0IG5vdCBiZSBpbiB1c2UgYnkgYSBjYWxs aW5nIGZ1bmN0aW9uLg0KPiAtDQo+IC0gIEBwYXJhbVtpbl0gICAgTGltaXQgICAgICAgICBUaGUg bnVtYmVyIG9mIHJlY29yZHMgdG8gcHJpbnQuICBaZXJvIGlzIEFMTC4NCj4gLSAgQHBhcmFtW2lu XSAgICBFeGNsdWRlRmxhZyAgIFRSVUUgdG8gZXhjbHVkZSBpbmRpdmlkdWFsIEN1bXVsYXRpdmUg aXRlbXMNCj4gZnJvbSBkaXNwbGF5Lg0KPiAtDQo+IC0qKi8NCj4gLVZPSUQNCj4gLUR1bXBBbGxQ cm9maWxlKA0KPiAtICBJTiBVSU5UTiAgICAgIExpbWl0LA0KPiAtICBJTiBCT09MRUFOICAgIEV4 Y2x1ZGVGbGFnDQo+IC0gICkNCj4gLXsNCj4gLSAgRUZJX1NUUklORyAgICBTdHJpbmdQdHI7DQo+ IC0gIEVGSV9TVFJJTkcgICAgU3RyaW5nUHRyVW5rbm93bjsNCj4gLQ0KPiAtICBTdHJpbmdQdHJV bmtub3duID0gSGlpR2V0U3RyaW5nIChnSGlpSGFuZGxlLCBTVFJJTkdfVE9LRU4NCj4gKFNUUl9B TElUX1VOS05PV04pLCBOVUxMKTsNCj4gLSAgU3RyaW5nUHRyID0gSGlpR2V0U3RyaW5nIChnSGlp SGFuZGxlLCBTVFJJTkdfVE9LRU4NCj4gKFNUUl9EUF9TRUNUSU9OX1BST0ZJTEUpLCBOVUxMKTsN Cj4gLQ0KPiAtICBQcmludFRva2VuKCBTVFJJTkdfVE9LRU4gKFNUUl9EUF9TRUNUSU9OX0hFQURF UiksDQo+IC0gICAgICAgICAgICAgIChTdHJpbmdQdHIgPT0gTlVMTCkgPyBTdHJpbmdQdHJVbmtu b3duOiBTdHJpbmdQdHIpOw0KPiAtICBGcmVlUG9vbCAoU3RyaW5nUHRyKTsNCj4gLSAgRnJlZVBv b2wgKFN0cmluZ1B0clVua25vd24pOw0KPiAtICByZXR1cm47DQo+IC19DQo+IC0NCj4gLS8qKg0K PiAtICBHYXRoZXIgYW5kIHByaW50IFJhdyBQcm9maWxlIFJlY29yZHMuDQo+IC0NCj4gLSAgQWxs IFByb2ZpbGUgbWVhc3VyZW1lbnRzIHdpdGggYSBkdXJhdGlvbiBncmVhdGVyIHRoYW4gb3IgZXF1 YWwgdG8NCj4gLSAgbUludGVyZXN0VGhyZXNob2xkIGFyZSBwcmludGVkIHdpdGhvdXQgaW50ZXJw cmV0YXRpb24uDQo+IC0NCj4gLSAgVGhlIG51bWJlciBvZiByZWNvcmRzIGRpc3BsYXllZCBpcyBj b250cm9sbGVkIGJ5Og0KPiAtICAgICAtIHJlY29yZHMgd2l0aCBhIGR1cmF0aW9uIGxlc3MgdGhh biBtSW50ZXJlc3RUaHJlc2hvbGQgbWljcm9zZWNvbmRzIGFyZQ0KPiBub3QgZGlzcGxheWVkLg0K PiAtICAgICAtIE5vIG1vcmUgdGhhbiBMaW1pdCByZWNvcmRzIGFyZSBkaXNwbGF5ZWQuICBBIExp bWl0IG9mIHplcm8gd2lsbCBub3QgbGltaXQNCj4gdGhlIG91dHB1dC4NCj4gLSAgICAgLSBJZiB0 aGUgRXhjbHVkZUZsYWcgaXMgVFJVRSwgcmVjb3JkcyBtYXRjaGluZyBlbnRyaWVzIGluIHRoZSBD dW1EYXRhDQo+IGFycmF5IGFyZSBub3QNCj4gLSAgICAgICBkaXNwbGF5ZWQuDQo+IC0NCj4gLSAg QHByZSAgICBUaGUgbUludGVyZXN0VGhyZXNob2xkIGdsb2JhbCB2YXJpYWJsZSBpcyBzZXQgdG8g dGhlIHNob3J0ZXN0DQo+IGR1cmF0aW9uIHRvIGJlIHByaW50ZWQuDQo+IC0NCj4gLSAgQHBhcmFt W2luXSAgICBMaW1pdCAgICAgICAgIFRoZSBudW1iZXIgb2YgcmVjb3JkcyB0byBwcmludC4gIFpl cm8gaXMgQUxMLg0KPiAtICBAcGFyYW1baW5dICAgIEV4Y2x1ZGVGbGFnICAgVFJVRSB0byBleGNs dWRlIGluZGl2aWR1YWwgQ3VtdWxhdGl2ZSBpdGVtcw0KPiBmcm9tIGRpc3BsYXkuDQo+IC0NCj4g LSoqLw0KPiAtVk9JRA0KPiAtRHVtcFJhd1Byb2ZpbGUoDQo+IC0gIElOIFVJTlROICAgICAgTGlt aXQsDQo+IC0gIElOIEJPT0xFQU4gICAgRXhjbHVkZUZsYWcNCj4gLSAgKQ0KPiAtew0KPiAtICBF RklfU1RSSU5HICAgIFN0cmluZ1B0cjsNCj4gLSAgRUZJX1NUUklORyAgICBTdHJpbmdQdHJVbmtu b3duOw0KPiAtDQo+IC0gIFN0cmluZ1B0clVua25vd24gPSBIaWlHZXRTdHJpbmcgKGdIaWlIYW5k bGUsIFNUUklOR19UT0tFTg0KPiAoU1RSX0FMSVRfVU5LTk9XTiksIE5VTEwpOw0KPiAtICBTdHJp bmdQdHIgPSBIaWlHZXRTdHJpbmcgKGdIaWlIYW5kbGUsIFNUUklOR19UT0tFTg0KPiAoU1RSX0RQ X1NFQ1RJT05fUkFXUFJPRklMRSksIE5VTEwpOw0KPiAtICBQcmludFRva2VuKCBTVFJJTkdfVE9L RU4gKFNUUl9EUF9TRUNUSU9OX0hFQURFUiksDQo+IC0gICAgICAgICAgICAgIChTdHJpbmdQdHIg PT0gTlVMTCkgPyBTdHJpbmdQdHJVbmtub3duOiBTdHJpbmdQdHIpOw0KPiAtICBGcmVlUG9vbCAo U3RyaW5nUHRyKTsNCj4gLSAgRnJlZVBvb2wgKFN0cmluZ1B0clVua25vd24pOw0KPiAtICByZXR1 cm47DQo+IC19DQo+IGRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVBrZy9EcF9BcHAvRHBTdHJpbmdz LnVuaQ0KPiBiL1BlcmZvcm1hbmNlUGtnL0RwX0FwcC9EcFN0cmluZ3MudW5pDQo+IGRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAxMzFkMTZiYjZkLi4wMDAwMDAwMDAwDQo+IC0tLSBh L1BlcmZvcm1hbmNlUGtnL0RwX0FwcC9EcFN0cmluZ3MudW5pDQo+ICsrKyAvZGV2L251bGwNCj4g QEAgLTEsMjgxICswLDAgQEANCj4gLS8vICorKw0KPiAtLy8NCj4gLS8vIENvcHlyaWdodCAoYykg MjAwOSAtIDIwMTcsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4N Cj4gLS8vIChDKSBDb3B5cmlnaHQgMjAxNSBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSBEZXZl bG9wbWVudCBMUDxCUj4NCj4gLS8vIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBt YXRlcmlhbHMNCj4gLS8vIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhl IHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZQ0KPiBCU0QgTGljZW5zZQ0KPiAtLy8gd2hpY2gg YWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNl bnNlIG1heSBiZQ0KPiBmb3VuZCBhdA0KPiAtLy8gaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vu c2VzL2JzZC1saWNlbnNlLnBocA0KPiAtLy8NCj4gLS8vIFRIRSBQUk9HUkFNIElTIERJU1RSSUJV VEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+IEJBU0lTLA0KPiAtLy8g V0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVS DQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gLS8vDQo+IC0vLw0KPiAtLy8gTW9kdWxlIE5hbWU6 DQo+IC0vLw0KPiAtLy8gICBEcFN0cmluZ3MudW5pDQo+IC0vLw0KPiAtLy8gQWJzdHJhY3Q6DQo+ IC0vLw0KPiAtLy8gICBTdHJpbmcgZGVmaW5pdGlvbnMgZm9yIHRoZSBTaGVsbCBkcCBjb21tYW5k DQo+IC0vLw0KPiAtLy8gUmV2aXNpb24gSGlzdG9yeToNCj4gLS8vDQo+IC0vLyAtLSovDQo+IC0N Cj4gLS89Iw0KPiAtDQo+IC0jbGFuZ2RlZiAgIGVuLVVTICJFbmdsaXNoIg0KPiAtI2xhbmdkZWYg ICBmci1GUiAiRnJhbsOnYWlzIg0KPiAtDQo+IC0jc3RyaW5nIFNUUl9EUF9IRUxQX0lORk9STUFU SU9OICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgICIiDQo+IC0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIuVEggRFAgMCAiRGlzcGxheSBQZXJm b3JtYW5jZSBtZXRyaWNzLiJcclxuIg0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiLlNIIE5BTUVcclxuIg0KPiAtICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGlzcGxheSBQZXJm b3JtYW5jZSBtZXRyaWNzLlxyXG4iDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICIuU0ggU1lOT1BTSVNcclxuIg0KPiAtICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIFxyXG4iDQo+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJJZiBQcm9maWxpbmcgaXMgaW1wbGVtZW50ZWQ6XHJcbiINCj4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRwIFstYl0gWy12XSBbLXhd IFstcyB8IC1BIHwgLVJdIFstVF0gWy1QXSBbLXQgdmFsdWVdDQo+IFstbiBjb3VudF0gWy1jIFt0 b2tlbl1dIFstaV0gWy0/XVxyXG4iDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJJZiBQcm9maWxpbmcgaXMgbm90IGltcGxlbWVudGVk OlxyXG4iDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJkcCBbLWJdIFstdl0gWy14XSBbLXMgfCAtQSB8IC1SXSBbLXQgdmFsdWVdIFst bg0KPiBjb3VudF0gWy1jIFt0b2tlbl1dIFstaV0gWy0/XVxyXG4iDQo+IC0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIuU0ggT1BUSU9OU1xy XG4iDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICIgXHJcbiINCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIiAgIC1iICBkaXNwbGF5IG9uIG11bHRpcGxlIHBhZ2VzXG5cclxu Ig0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiICAgLXYgIGRpc3BsYXkgYWRkaXRpb25hbCBpbmZvcm1hdGlvblxyXG4iDQo+IC0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAt eCAgcHJldmVudCBkaXNwbGF5IG9mIGluZGl2aWR1YWwNCj4gbWVhc3VyZW1lbnRzIGZvciBjdW11 bGF0aXZlIGl0ZW1zXHJcbiINCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIiAgIC1zICBkaXNwbGF5IHN1bW1hcnkgaW5mb3JtYXRpb24g b25seVxyXG4iDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICIgICAtQSAgZGlzcGxheSBhbGwgbWVhc3VyZW1lbnRzIGluIGEgbGlzdFxy XG4iDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICIgICAtUiAgZGlzcGxheSBhbGwgbWVhc3VyZW1lbnRzIGluIHJhdw0KPiBmb3JtYXRc clxuIg0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAiICAgLVQgIGRpc3BsYXkgVHJhY2UgbWVhc3VyZW1lbnRzIG9ubHkoVGhpcw0KPiBv cHRpb24gaXMgYXZhaWxhYmxlIHdoZW4gUHJvZmlsaW5nIGlzIGltcGxlbWVudGVkKVxyXG4iDQo+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICIgICAtUCAgZGlzcGxheSBQcm9maWxlIG1lYXN1cmVtZW50cyBvbmx5KFRoaXMNCj4gb3B0aW9u IGlzIGF2YWlsYWJsZSB3aGVuIFByb2ZpbGluZyBpcyBpbXBsZW1lbnRlZClcclxuIg0KPiAtICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAg LXQgVkFMVUUgIFNldCBkaXNwbGF5IHRocmVzaG9sZCB0byBWQUxVRQ0KPiBtaWNyb3NlY29uZHNc clxuIg0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAiICAgLW4gQ09VTlQgIExpbWl0IGRpc3BsYXkgdG8gQ09VTlQgbGluZXMgaW4gQWxs DQo+IGFuZCBSYXcgbW9kZXNcclxuIg0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgLWkgIGRpc3BsYXkgaWRlbnRpZmllclxyXG4i DQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICIgICAtYyBUT0tFTiAtIERpc3BsYXkgcHJlLWRlZmluZWQgYW5kIGN1c3RvbQ0KPiBjdW11 bGF0aXZlIGRhdGFcclxuIg0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAiICAgICAgICAgICAgICBQcmUtZGVmaW5lZCBjdW11bGF0aXZl IHRva2VuIGFyZTpcclxuIg0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAiICAgICAgICAgICAgICAxLiBMb2FkSW1hZ2U6XHJcbiINCj4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IiAgICAgICAgICAgICAgMi4gU3RhcnRJbWFnZTpcclxuIg0KPiAtICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICAgICAgICAzLiBE QjpTdGFydDpcclxuIg0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAiICAgICAgICAgICAgICA0LiBEQjpTdXBwb3J0OlxyXG4iDQo+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIg ICAtPyAgZGlzcGxheSBkcCBoZWxwIGluZm9ybWF0aW9uXHJcbiINCj4gLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxyXG4iDQo+IC0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZnItRlIgICIiDQo+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICIuVEggRFAgMCAiTW9udHJlciBsZXMgZG9ubsOpZXMNCj4gZCdleMOpY3V0aW9uIlxyXG4iDQo+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICIuU0ggTkFNRVxyXG4iDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICJNb250cmVyIGxlcyBkb25uw6llcyBkJ2V4w6ljdXRpb25cclxu Ig0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiLlNIIFNZTk9QU0lTXHJcbiINCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBcclxuIg0KPiAtICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSWYgUHJvZmlsaW5nIGlzIGlt cGxlbWVudGVkOlxyXG4iDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICJkcCBbLWJdIFstdl0gWy14XSBbLXMgfCAtQSB8IC1SXSBbLVRd IFstUF0gWy10IHZhbHVlXQ0KPiBbLW4gY291bnRdIFstYyBbdG9rZW5dXSBbLWldIFstP11cclxu Ig0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiSWYgUHJvZmlsaW5nIGlzIG5vdCBpbXBsZW1lbnRlZDpcclxuIg0KPiAtICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZHAgWy1iXSBb LXZdIFsteF0gWy1zIHwgLUEgfCAtUl0gWy10IHZhbHVlXSBbLW4NCj4gY291bnRdIFstYyBbdG9r ZW5dXSBbLWldIFstP11cclxuIg0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAiLlNIIE9QVElPTlNcclxuIg0KPiAtICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIFxyXG4iDQo+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIg ICAtYiAgbW9udHJlciBzdXIgbGVzIHBhZ2VzIG11bHRpcGxlc1xyXG4iDQo+IC0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAtdiAgZGlz cGxheSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uXHJcbiINCj4gLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgIC14ICBwcmV2ZW50IGRpc3Bs YXkgb2YgaW5kaXZpZHVhbA0KPiBtZWFzdXJlbWVudHMgZm9yIGN1bXVsYXRpdmUgaXRlbXNcclxu Ig0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiICAgLXMgIG1vbnRyZXIgbGVzIGRvbm7DqWVzIGRlIHN0YXRpc3RpcXVlDQo+IHNldWxl bWVudFxyXG4iDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICIgICAtQVxyXG4iDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAtUlxyXG4iDQo+IC0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAtVFxyXG4iDQo+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICIgICAtUFxyXG4iDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICIgICAtdCBWQUxVRVxyXG4iDQo+IC0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAtbiBDT1VOVFxyXG4iDQo+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICIgICAtaVxyXG4iDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICIgICAtY1xyXG4iDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAtPyAgbW9udHJlciBkcCBhaWRlciBs J2luZm9ybWF0aW9uXHJcbiINCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIlxyXG4iDQo+IC0NCj4gLSNzdHJpbmcgU1RSX0RQX0hFTFBf SEVBRCAgICAgICAgICAgICAgICNsYW5ndWFnZSBlbi1VUyAgIlxuRGlzcGxheQ0KPiBQZXJmb3Jt YW5jZSBtZXRyaWNzXG4iDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAjbGFuZ3VhZ2UgZnItRlIgICJcbk1vbnRyZXIgbGVzIGRvbm7DqWVzIGQnZXjDqWN1dGlvblxu Ig0KPiAtI3N0cmluZyBTVFJfRFBfSEVMUF9GTEFHUyAgICAgICAgICAgICAgI2xhbmd1YWdlIGVu LVVTICAiZHAgWy1iXSBbLXZdIFsteF0gWy1zIHwgLQ0KPiBBIHwgLVJdIFstVF0gWy1QXSBbLXQg dmFsdWVdIFstbiBjb3VudF0gWy1jIFt0b2tlbl1dIFstaV0gWy0/XVxuIg0KPiAtICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2xhbmd1YWdlIGZyLUZSICAiZHAgWy1iXSBb LXZdIFsteF0gWy1zIHwgLUEgfCAtUl0gWy1UXSBbLVBdIFstdA0KPiB2YWx1ZV0gWy1uIGNvdW50 XSBbLWMgW3Rva2VuXV0gWy1pXSBbLT9dXG4iDQo+IC0jc3RyaW5nIFNUUl9EUF9IRUxQX0ZMQUdT XzIgICAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgICJkcCBbLWJdIFstdl0gWy14XSBbLXMgfA0K PiAtQSB8IC1SXSBbLXQgdmFsdWVdIFstbiBjb3VudF0gWy1jIFt0b2tlbl1dIFstaV0gWy0/XVxu Ig0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2xhbmd1YWdlIGZy LUZSICAiZHAgWy1iXSBbLXZdIFsteF0gWy1zIHwgLUEgfCAtUl0gWy10IHZhbHVlXQ0KPiBbLW4g Y291bnRdIFstYyBbdG9rZW5dXSBbLWldIFstP11cbiINCj4gLSNzdHJpbmcgU1RSX0RQX0hFTFBf UEFHSU5BVEUgICAgICAgICAgICNsYW5ndWFnZSBlbi1VUyAgIiAgIC1iICBkaXNwbGF5IG9uDQo+ IG11bHRpcGxlIHBhZ2VzXG4iDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAjbGFuZ3VhZ2UgZnItRlIgICIgICAtYiAgbW9udHJlciBzdXIgbGVzIHBhZ2VzIG11bHRp cGxlc1xuIg0KPiAtI3N0cmluZyBTVFJfRFBfSEVMUF9WRVJCT1NFICAgICAgICAgICAgI2xhbmd1 YWdlIGVuLVVTICAiICAgLXYgIGRpc3BsYXkNCj4gYWRkaXRpb25hbCBpbmZvcm1hdGlvblxuIg0K PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2xhbmd1YWdlIGZyLUZS ICAiICAgLXYgIGRpc3BsYXkgYWRkaXRpb25hbCBpbmZvcm1hdGlvblxuIg0KPiAtI3N0cmluZyBT VFJfRFBfSEVMUF9FWENMVURFICAgICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICAiICAgLXggIHBy ZXZlbnQNCj4gZGlzcGxheSBvZiBpbmRpdmlkdWFsIG1lYXN1cmVtZW50cyBmb3IgY3VtdWxhdGl2 ZSBpdGVtcy5cbiINCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNs YW5ndWFnZSBmci1GUiAgIiAgIC14ICBwcmV2ZW50IGRpc3BsYXkgb2YgaW5kaXZpZHVhbA0KPiBt ZWFzdXJlbWVudHMgZm9yIGN1bXVsYXRpdmUgaXRlbXMuXG4iDQo+IC0jc3RyaW5nIFNUUl9EUF9I RUxQX1NUQVQgICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgICIgICAtcyAgZGlzcGxheSBz dW1tYXJ5DQo+IGluZm9ybWF0aW9uIG9ubHlcbiINCj4gLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICNsYW5ndWFnZSBmci1GUiAgIiAgIC1zICBtb250cmVyIGxlcyBkb25u w6llcyBkZSBzdGF0aXN0aXF1ZQ0KPiBzZXVsZW1lbnRcbiINCj4gLSNzdHJpbmcgU1RSX0RQX0hF TFBfQUxMICAgICAgICAgICAgICAgICNsYW5ndWFnZSBlbi1VUyAgIiAgIC1BICBkaXNwbGF5IGFs bA0KPiBtZWFzdXJlbWVudHMgaW4gYSBsaXN0XG4iDQo+IC0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZnItRlIgICIgICAtQVxuIg0KPiAtI3N0cmluZyBT VFJfRFBfSEVMUF9SQVcgICAgICAgICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICAiICAgLVIgIGRp c3BsYXkgYWxsDQo+IG1lYXN1cmVtZW50cyBpbiByYXcgZm9ybWF0XG4iDQo+IC0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZnItRlIgICIgICAtUlxuIg0K PiAtI3N0cmluZyBTVFJfRFBfSEVMUF9UUkFDRSAgICAgICAgICAgICAgI2xhbmd1YWdlIGVuLVVT ICAiICAgLVQgIGRpc3BsYXkgVHJhY2UNCj4gbWVhc3VyZW1lbnRzIG9ubHlcbiINCj4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNsYW5ndWFnZSBmci1GUiAgIiAgIC1U XG4iDQo+IC0jc3RyaW5nIFNUUl9EUF9IRUxQX1BST0ZJTEUgICAgICAgICAgICAjbGFuZ3VhZ2Ug ZW4tVVMgICIgICAtUCAgZGlzcGxheSBQcm9maWxlDQo+IG1lYXN1cmVtZW50cyBvbmx5XG4iDQo+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZnItRlIg ICIgICAtUFxuIg0KPiAtI3N0cmluZyBTVFJfRFBfSEVMUF9USFJFU0hPTEQgICAgICAgICAgI2xh bmd1YWdlIGVuLVVTICAiICAgLXQgVkFMVUUgIFNldA0KPiBkaXNwbGF5IHRocmVzaG9sZCB0byBW QUxVRSBtaWNyb3NlY29uZHNcbiINCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICNsYW5ndWFnZSBmci1GUiAgIiAgIC10IFZBTFVFXG4iDQo+IC0jc3RyaW5nIFNUUl9E UF9IRUxQX0NPVU5UICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgICIgICAtbiBDT1VOVCAg TGltaXQNCj4gZGlzcGxheSB0byBDT1VOVCBsaW5lcyBpbiBBbGwgYW5kIFJhdyBtb2Rlc1xuIg0K PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2xhbmd1YWdlIGZyLUZS ICAiICAgLW4gQ09VTlRcbiINCj4gLSNzdHJpbmcgU1RSX0RQX0hFTFBfSUQgICAgICAgICAgICAg ICAgICNsYW5ndWFnZSBlbi1VUyAgIiAgIC1pICBkaXNwbGF5IGlkZW50aWZpZXJcbiINCj4gLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNsYW5ndWFnZSBmci1GUiAgIiAg IC1pXG4iDQo+IC0jc3RyaW5nIFNUUl9EUF9IRUxQX0NVTV9EQVRBICAgICAgICAgICAjbGFuZ3Vh Z2UgZW4tVVMgICIgICAtYyBUT0tFTiAtDQo+IERpc3BsYXkgcHJlLWRlZmluZWQgYW5kIGN1c3Rv bSBjdW11bGF0aXZlIGRhdGFcclxuIg0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICAgICAgICBQcmUtZGVmaW5lZCBjdW11 bGF0aXZlIHRva2VuIGFyZTpcclxuIg0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICAgICAgICAxLiBMb2FkSW1hZ2U6XHJc biINCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIiAgICAgICAgICAgICAgMi4gU3RhcnRJbWFnZTpcclxuIg0KPiAtICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICAgICAg ICAzLiBEQjpTdGFydDpcclxuIg0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICAgICAgICA0LiBEQjpTdXBwb3J0OlxyXG4i DQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZnIt RlIgICIgICAtY1xuIg0KPiAtI3N0cmluZyBTVFJfRFBfSEVMUF9IRUxQICAgICAgICAgICAgICAg I2xhbmd1YWdlIGVuLVVTICAiICAgLT8gIGRpc3BsYXkgZHAgaGVscA0KPiBpbmZvcm1hdGlvblxu Ig0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2xhbmd1YWdlIGZy LUZSICAiICAgLT8gIG1vbnRyZXIgZHAgYWlkZXIgbCdpbmZvcm1hdGlvblxuIg0KPiAtI3N0cmlu ZyBTVFJfRFBfVVAgICAgICAgICAgICAgICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICAiVVAiDQo+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZnItRlIg ICJVUCINCj4gLSNzdHJpbmcgU1RSX0RQX0RPV04gICAgICAgICAgICAgICAgICAgICNsYW5ndWFn ZSBlbi1VUyAgIkRPV04iDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAjbGFuZ3VhZ2UgZnItRlIgICJET1dOIg0KPiAtI3N0cmluZyBTVFJfRFBfREFTSEVTICAgICAg ICAgICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0NCj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1c biINCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNsYW5ndWFnZSBm ci1GUiAgIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K PiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iDQo+IC0jc3RyaW5nIFNUUl9EUF9T RUNUSU9OX0hFQURFUiAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgICJcbj09WyAlcw0KPiBdPT09 PT09PT1cbiINCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNsYW5n dWFnZSBmci1GUiAgIlxuPT1bICVzIF09PT09PT09PVxuIg0KPiAtI3N0cmluZyBTVFJfRFBfSU5W QUxJRF9BUkcgICAgICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICAiSW52YWxpZA0KPiBhcmd1bWVu dChzKVxuIg0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2xhbmd1 YWdlIGZyLUZSICAiQXJndW1lbnQgZCdpbnZhbGlkZShzKVxuIg0KPiAtI3N0cmluZyBTVFJfRFBf SEFORExFU19FUlJPUiAgICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICAiTG9jYXRlIEFsbCBIYW5k bGVzDQo+IGVycm9yIC0gJXJcbiINCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICNsYW5ndWFnZSBmci1GUiAgIkxvY2FsaXNlciBUb3V0ZSBlcnJldXIgZGUgUG9pZ27D qWVzIC0NCj4gJXJcbiINCj4gLSNzdHJpbmcgU1RSX0RQX0VSUk9SX05BTUUgICAgICAgICAgICAg ICNsYW5ndWFnZSBlbi1VUyAgIlVua25vd24gRHJpdmVyDQo+IE5hbWUiDQo+IC0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZnItRlIgICJVbmtub3duIERy aXZlciBOYW1lIg0KPiAtI3N0cmluZyBTVFJfUEVSRl9QUk9QRVJUWV9OT1RfRk9VTkQgICAgI2xh bmd1YWdlIGVuLVVTDQo+ICJQZXJmb3JtYW5jZSBwcm9wZXJ0eSBub3QgZm91bmRcbiINCj4gLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNsYW5ndWFnZSBmci1GUiAgIlBl cmZvcm1hbmNlIHByb3BlcnR5IG5vdCBmb3VuZFxuIg0KPiAtI3N0cmluZyBTVFJfRFBfQlVJTERf UkVWSVNJT04gICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICAiXG5EUCBCdWlsZA0KPiBWZXJzaW9u OiAgICAgICAlZC4lZFxuIg0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgI2xhbmd1YWdlIGZyLUZSICAiXG5EUCBDb25zdHJ1aXQgbGEgVmVyc2lvbjoNCj4gJWQsJWRc biINCj4gLSNzdHJpbmcgU1RSX0RQX0tIWiAgICAgICAgICAgICAgICAgICAgICNsYW5ndWFnZSBl bi1VUyAgIlN5c3RlbSBQZXJmb3JtYW5jZQ0KPiBUaW1lciBGcmVxdWVuY3k6ICAgJSw4ZCAoS0h6 KVxuIg0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2xhbmd1YWdl IGZyLUZSICAiU3lzdGVtIFBlcmZvcm1hbmNlIFRpbWVyIEZyZXF1ZW5jeToNCj4gJSw4ZCAoS0h6 KVxuIg0KPiAtI3N0cmluZyBTVFJfRFBfVElNRVJfUFJPUEVSVElFUyAgICAgICAgI2xhbmd1YWdl IGVuLVVTICAiU3lzdGVtDQo+IFBlcmZvcm1hbmNlIFRpbWVyIGNvdW50cyAlcyBmcm9tIDB4JUx4 IHRvIDB4JUx4XG4iDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj bGFuZ3VhZ2UgZnItRlIgICJTeXN0ZW0gUGVyZm9ybWFuY2UgVGltZXIgY291bnRzICVzDQo+IGZy b20gMHglTHggdG8gMHglTHhcbiINCj4gLSNzdHJpbmcgU1RSX0RQX1ZFUkJPU0VfVEhSRVNIT0xE ICAgICAgICNsYW5ndWFnZSBlbi1VUw0KPiAiTWVhc3VyZW1lbnRzIGxlc3MgdGhhbiAlLExkIG1p Y3Jvc2Vjb25kcyBhcmUgbm90IGRpc3BsYXllZC5cbiINCj4gLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICNsYW5ndWFnZSBmci1GUiAgIk1lYXN1cmVtZW50cyBsZXNzIHRo YW4gJSxMZA0KPiBtaWNyb3NlY29uZHMgYXJlIG5vdCBkaXNwbGF5ZWQuXG4iDQo+IC0jc3RyaW5n IFNUUl9EUF9TRUNUSU9OX1BIQVNFUyAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgICJNYWpvciBQ aGFzZXMiDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjbGFuZ3Vh Z2UgZnItRlIgICJNYWpvciBQaGFzZXMiDQo+IC0jc3RyaW5nIFNUUl9EUF9TRUNfUEhBU0UgICAg ICAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgICIgIFNFQyBQaGFzZSBEdXJhdGlvbjoNCj4gJUw4 ZCAodXMpXG4iDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjbGFu Z3VhZ2UgZnItRlIgICIgIFNFQyBQaGFzZSBEdXJhdGlvbjogICAgICAlTDhkICh1cylcbiINCj4g LSNzdHJpbmcgU1RSX0RQX1BIQVNFX0JEU1RPICAgICAgICAgICAgICNsYW5ndWFnZSBlbi1VUyAg IiAgICAgICAgIEJEUyBUaW1lb3V0Og0KPiAlTDhkIChtcykgaW5jbHVkZWQgaW4gQkRTIER1cmF0 aW9uXG4iDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjbGFuZ3Vh Z2UgZnItRlIgICIgICAgICAgICBCRFMgVGltZW91dDogICAlTDhkIChtcykgaW5jbHVkZWQNCj4g aW4gQkRTIER1cmF0aW9uXG4iDQo+IC0jc3RyaW5nIFNUUl9EUF9QSEFTRV9EVVJBVElPTiAgICAg ICAgICAjbGFuZ3VhZ2UgZW4tVVMgICIlNWEgUGhhc2UNCj4gRHVyYXRpb246ICAgJUw4ZCAobXMp XG4iDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjbGFuZ3VhZ2Ug ZnItRlIgICIlNWEgUGhhc2UgRHVyYXRpb246ICAgJUw4ZCAobXMpXG4iDQo+IC0jc3RyaW5nIFNU Ul9EUF9UT1RBTF9EVVJBVElPTiAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgICJUb3RhbA0KPiBE dXJhdGlvbjogICAlTDhkIChtcylcbiINCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICNsYW5ndWFnZSBmci1GUiAgIlRvdGFsICAgICAgIER1cmF0aW9uOiAgICVMOGQg KG1zKVxuIg0KPiAtI3N0cmluZyBTVFJfRFBfU0VDVElPTl9EUklWRVJTICAgICAgICAgI2xhbmd1 YWdlIGVuLVVTICAiRHJpdmVycyBieQ0KPiBIYW5kbGUiDQo+IC0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZnItRlIgICJEcml2ZXJzIGJ5IEhhbmRsZSIN Cj4gLSNzdHJpbmcgU1RSX0RQX0hBTkRMRV9TRUNUSU9OICAgICAgICAgICNsYW5ndWFnZSBlbi1V UyAgIkluZGV4OiAgSGFuZGxlDQo+IERyaXZlciBOYW1lICAgICAgICAgICAgICAgRGVzY3JpcHRp b24gICAgVGltZSh1cylcbiINCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICNsYW5ndWFnZSBmci1GUiAgIkluZGV4OiAgUG9pZ27DqWUgICAgICAgICAgICAgICAgIE5v bShHVUlEKQ0KPiBEZXNjcmlwdGlvbiAgIFRlbXBzKHVzKVxuIg0KPiAtI3N0cmluZyBTVFJfRFBf SEFORExFX1ZBUlMgICAgICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICAiJTVkOiAgWyUzeF0gICAl MzZzDQo+ICUxMXMgICAgJUw4ZFxuIg0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgI2xhbmd1YWdlIGZyLUZSICAiJTVkOiAgWyUzeF0gICAlMzZzICAgICUxMXMgICAg JUw4ZFxuIg0KPiAtI3N0cmluZyBTVFJfRFBfSEFORExFX1NFQ1RJT04yICAgICAgICAgI2xhbmd1 YWdlIGVuLVVTICAiSW5kZXg6IEhhbmRsZQ0KPiBEcml2ZXIgTmFtZSAgICAgICAgICAgICBEZXNj cmlwdGlvbiAgVGltZSh1cykgICAgSURcbiINCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICNsYW5ndWFnZSBmci1GUiAgIkluZGV4OiBQb2lnbsOpZSAgICAgICAgICAg ICAgICBOb20oR1VJRCkNCj4gRGVzY3JpcHRpb24gVGVtcHModXMpICAgIElEXG4iDQo+IC0jc3Ry aW5nIFNUUl9EUF9IQU5ETEVfVkFSUzIgICAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgICIlNWQ6 IFslM3hdICAlMzZzDQo+ICUxMXMgICVMOGQgJTVkXG4iDQo+IC0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZnItRlIgICIlNWQ6IFslM3hdICAlMzZzICAl MTFzICAlTDhkICU1ZFxuIg0KPiAtI3N0cmluZyBTVFJfRFBfU0VDVElPTl9QRUlNUyAgICAgICAg ICAgI2xhbmd1YWdlIGVuLVVTICAiUEVJTXMiDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZnItRlIgICJQRUlNcyINCj4gLSNzdHJpbmcgU1RSX0RQ X1BFSU1fU0VDVElPTiAgICAgICAgICAgICNsYW5ndWFnZSBlbi1VUyAgIkluZGV4OiAgUG9pbnRl cg0KPiBWYWx1ZSAgICAgICAgICAgICAgSW5zdGFuY2UgR1VJRCAgICAgICAgICAgICAgVG9rZW4g ICAgVGltZSh1cylcbiINCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICNsYW5ndWFnZSBmci1GUiAgIkluZGV4OiAgUG9pbnRlciBWYWx1ZSAgICAgICAgICAgICAgSW5z dGFuY2UNCj4gR1VJRCAgICAgICAgICAgICAgVG9rZW4gICBUZW1wcyh1cylcbiINCj4gLSNzdHJp bmcgU1RSX0RQX1BFSU1fVkFSUyAgICAgICAgICAgICAgICNsYW5ndWFnZSBlbi1VUyAgIiU1ZDog IDB4JTExcCAgICVnDQo+IFBFSU0gICAgJUw4ZFxuIg0KPiAtICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgI2xhbmd1YWdlIGZyLUZSICAiJTVkOiAgMHglMTFwICAgJWcgICBQ RUlNICAgICVMOGRcbiINCj4gLSNzdHJpbmcgU1RSX0RQX1BFSU1fU0VDVElPTjIgICAgICAgICAg ICNsYW5ndWFnZSBlbi1VUyAgIkluZGV4OiBQb2ludGVyDQo+IFZhbHVlICAgICAgICAgICAgIElu c3RhbmNlIEdVSUQgICAgICAgICAgICBUb2tlbiAgVGltZSh1cykgICAgSURcbiINCj4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNsYW5ndWFnZSBmci1GUiAgIkluZGV4 OiBQb2ludGVyIFZhbHVlICAgICAgICAgICAgIEluc3RhbmNlDQo+IEdVSUQgICAgICAgICAgICBU b2tlbiBUZW1wcyh1cykgICAgSURcbiINCj4gLSNzdHJpbmcgU1RSX0RQX1BFSU1fVkFSUzIgICAg ICAgICAgICAgICNsYW5ndWFnZSBlbi1VUyAgIiU1ZDogMHglMTFwICAlZw0KPiBQRUlNICAlTDhk ICU1ZFxuIg0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2xhbmd1 YWdlIGZyLUZSICAiJTVkOiAweCUxMXAgICVnIFBFSU0gICVMOGQgJTVkXG4iDQo+IC0jc3RyaW5n IFNUUl9EUF9TRUNUSU9OX0dFTkVSQUwgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgICJHZW5lcmFs Ig0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2xhbmd1YWdlIGZy LUZSICAiR2VuZXJhbCINCj4gLSNzdHJpbmcgU1RSX0RQX0dMT0JBTF9TRUNUSU9OICAgICAgICAg ICNsYW5ndWFnZSBlbi1VUyAgIkluZGV4DQo+IE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAg RGVzY3JpcHRpb24gICAgVGltZSh1cylcbiINCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICNsYW5ndWFnZSBmci1GUiAgIkluZGV4ICAgICAgICAgICAgICAgICAgICAg ICBOb20NCj4gRGVzY3JpcHRpb24gICBUZW1wcyh1cylcbiINCj4gLSNzdHJpbmcgU1RSX0RQX0dM T0JBTF9WQVJTICAgICAgICAgICAgICNsYW5ndWFnZSBlbi1VUyAgIiU1ZDolMjVzICAgICAlMzFz DQo+ICVMOGRcbiINCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNs YW5ndWFnZSBmci1GUiAgIiU1ZDolMjVzICAgICAlMzFzICAgICVMOGRcbiINCj4gLSNzdHJpbmcg U1RSX0RQX0dMT0JBTF9TRUNUSU9OMiAgICAgICAgICNsYW5ndWFnZSBlbi1VUyAgIkluZGV4DQo+ IE5hbWUgICAgICAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbiAgVGltZSh1cykgICAgSURcbiIN Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNsYW5ndWFnZSBmci1G UiAgIkluZGV4ICAgICAgICAgICAgICAgICAgICAgICBOb20NCj4gRGVzY3JpcHRpb24gVGVtcHMo dXMpICAgIElEXG4iDQo+IC0jc3RyaW5nIFNUUl9EUF9HTE9CQUxfVkFSUzIgICAgICAgICAgICAj bGFuZ3VhZ2UgZW4tVVMgICIlNWQ6JTI1cyAlMzFzDQo+ICVMOGQgJTVkXG4iDQo+IC0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZnItRlIgICIlNWQ6JTI1 cyAlMzFzICAlTDhkICU1ZFxuIg0KPiAtI3N0cmluZyBTVFJfRFBfU0VDVElPTl9DVU1VTEFUSVZF ICAgICAgI2xhbmd1YWdlIGVuLVVTICAiQ3VtdWxhdGl2ZSINCj4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICNsYW5ndWFnZSBmci1GUiAgIkN1bXVsYXRpdmUiDQo+IC0j c3RyaW5nIFNUUl9EUF9DVU1VTEFUSVZFX1NFQ1RfMSAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgICIo VGltZXMgaW4NCj4gbWljcm9zZWMuKSAgICAgQ3VtdWxhdGl2ZSAgIEF2ZXJhZ2UgICAgIFNob3J0 ZXN0ICAgIExvbmdlc3RcbiINCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICNsYW5ndWFnZSBmci1GUiAgIihUaW1lcyBpbiBtaWNyb3NlYy4pICAgICBDdW11bGF0aXZl DQo+IEF2ZXJhZ2UgICAgIFNob3J0ZXN0ICAgIExvbmdlc3RcbiINCj4gLSNzdHJpbmcgU1RSX0RQ X0NVTVVMQVRJVkVfU0VDVF8yICAgICAgICNsYW5ndWFnZSBlbi1VUyAgIiAgIE5hbWUNCj4gQ291 bnQgICAgIER1cmF0aW9uICAgIER1cmF0aW9uICAgIER1cmF0aW9uICAgIER1cmF0aW9uXG4iDQo+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZnItRlIg ICIgICBOYW1lICAgICAgICAgQ291bnQgICAgIER1cmF0aW9uDQo+IER1cmF0aW9uICAgIER1cmF0 aW9uICAgIER1cmF0aW9uXG4iDQo+IC0jc3RyaW5nIFNUUl9EUF9DVU1VTEFUSVZFX1NUQVRTICAg ICAgICAjbGFuZ3VhZ2UgZW4tVVMgICIlMTFhICAgJThkDQo+ICVMMTBkICAlTDEwZCAgJUwxMGQg ICVMMTBkXG4iDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjbGFu Z3VhZ2UgZnItRlIgICIlMTFhICAgJThkICAlTDEwZCAgJUwxMGQgICVMMTBkDQo+ICVMMTBkXG4i DQo+IC0jc3RyaW5nIFNUUl9EUF9TRUNUSU9OX1NUQVRJU1RJQ1MgICAgICAjbGFuZ3VhZ2UgZW4t VVMgICJTdGF0aXN0aWNzIg0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgI2xhbmd1YWdlIGZyLUZSICAiU3RhdGlzdGljcyINCj4gLSNzdHJpbmcgU1RSX0RQX1NUQVRT X05VTVRSQUNFICAgICAgICAgICNsYW5ndWFnZSBlbi1VUyAgIlRoZXJlIHdlcmUgJWQNCj4gbWVh c3VyZW1lbnRzIHRha2VuLCBvZiB3aGljaDpcbiINCj4gLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICNsYW5ndWFnZSBmci1GUiAgIlRoZXJlIHdlcmUgJWQgbWVhc3VyZW1l bnRzIHRha2VuLA0KPiBvZiB3aGljaDpcbiINCj4gLSNzdHJpbmcgU1RSX0RQX1NUQVRTX05VTUlO Q09NUExFVEUgICAgICNsYW5ndWFnZSBlbi1VUyAgIiUsOGQgYXJlDQo+IGluY29tcGxldGUuXG4i DQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZnIt RlIgICIlLDhkIGFyZSBpbmNvbXBsZXRlLlxuIg0KPiAtI3N0cmluZyBTVFJfRFBfU1RBVFNfTlVN UEhBU0VTICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICAiJSw4ZCBhcmUgbWFqb3INCj4gZXhlY3V0 aW9uIHBoYXNlcy5cbiINCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICNsYW5ndWFnZSBmci1GUiAgIiUsOGQgYXJlIG1ham9yIGV4ZWN1dGlvbiBwaGFzZXMuXG4iDQo+ IC0jc3RyaW5nIFNUUl9EUF9TVEFUU19OVU1IQU5ETEVTICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMg ICIlLDhkIGhhdmUNCj4gbm9uLU5VTEwgaGFuZGxlcywgJWQgYXJlIE5VTEwuXG4iDQo+IC0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZnItRlIgICIlLDhk IGhhdmUgbm9uLU5VTEwgaGFuZGxlcywgJWQgYXJlDQo+IE5VTEwuXG4iDQo+IC0jc3RyaW5nIFNU Ul9EUF9TVEFUU19OVU1QRUlNUyAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgICIlLDhkIGFyZQ0K PiBQRUlNcy5cbiINCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNs YW5ndWFnZSBmci1GUiAgIiUsOGQgYXJlIFBFSU1zLlxuIg0KPiAtI3N0cmluZyBTVFJfRFBfU1RB VFNfTlVNR0xPQkFMUyAgICAgICAgI2xhbmd1YWdlIGVuLVVTICAiJSw4ZCBhcmUNCj4gZ2VuZXJh bCBtZWFzdXJlbWVudHMuXG4iDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAjbGFuZ3VhZ2UgZnItRlIgICIlLDhkIGFyZSBnZW5lcmFsIG1lYXN1cmVtZW50cy5cbiIN Cj4gLSNzdHJpbmcgU1RSX0RQX1NUQVRTX05VTVBST0ZJTEUgICAgICAgICNsYW5ndWFnZSBlbi1V UyAgIiUsOGQgYXJlDQo+IHByb2ZpbGluZyByZWNvcmRzLlxuIg0KPiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgI2xhbmd1YWdlIGZyLUZSICAiJSw4ZCBhcmUgcHJvZmls aW5nIHJlY29yZHMuXG4iDQo+IC0jc3RyaW5nIFNUUl9EUF9TRUNUSU9OX1BST0ZJTEUgICAgICAg ICAjbGFuZ3VhZ2UgZW4tVVMgICJTZXF1ZW50aWFsIFByb2ZpbGUNCj4gUmVjb3JkcyINCj4gLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNsYW5ndWFnZSBmci1GUiAgIlNl cXVlbnRpYWwgUHJvZmlsZSBSZWNvcmRzIg0KPiAtI3N0cmluZyBTVFJfRFBfU0VDVElPTl9BTEwg ICAgICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICAiU2VxdWVudGlhbCBUcmFjZQ0KPiBSZWNvcmRz Ig0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2xhbmd1YWdlIGZy LUZSICAiU2VxdWVudGlhbCBUcmFjZSBSZWNvcmRzIg0KPiAtI3N0cmluZyBTVFJfRFBfQUxMX0hF QURSICAgICAgICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICAiXG5JbmRleCAgICAgIEhhbmRsZQ0K PiBNb2R1bGUgICAgICAgICAgICAgICAgICAgICAgVG9rZW4gICAgVGltZSh1cylcbiINCj4gLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNsYW5ndWFnZSBmci1GUiAgIlxu SW5kZXggICAgICBIYW5kbGUgICAgICAgICAgICAgICAgIE1vZHVsZQ0KPiBUb2tlbiAgIFRlbXBz KHVzKVxuIg0KPiAtI3N0cmluZyBTVFJfRFBfQUxMX1ZBUlMgICAgICAgICAgICAgICAgI2xhbmd1 YWdlIGVuLVVTICAiJTVkOiUzczB4JTA4cCAlMzZzDQo+ICUxM3MgJUw4ZFxuIg0KPiAtICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2xhbmd1YWdlIGZyLUZSICAiJTVkOiUz czB4JTA4cCAlMzZzICUxM3MgJUw4ZFxuIg0KPiAtI3N0cmluZyBTVFJfRFBfQUxMX0RBU0hFUzIg ICAgICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K PiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS1cbiINCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNsYW5n dWFnZSBmci1GUiAgIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQ0KPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iDQo+IC0jc3Ry aW5nIFNUUl9EUF9BTExfSEVBRFIyICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgICJcbklu ZGV4ICAgICAgSGFuZGxlDQo+IE1vZHVsZSAgICAgICAgICAgICAgICAgICAgICBUb2tlbiAgICBU aW1lKHVzKSAgICBJRFxuIg0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgI2xhbmd1YWdlIGZyLUZSICAiXG5JbmRleCAgICAgIEhhbmRsZSAgICAgICAgICAgICAgICAg TW9kdWxlDQo+IFRva2VuICAgVGVtcHModXMpICAgIElEXG4iDQo+IC0jc3RyaW5nIFNUUl9EUF9B TExfVkFSUzIgICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgICIlNWQ6JTNzMHglMDhwICUz NnMNCj4gJTEzcyAlTDhkICU1ZFxuIg0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgI2xhbmd1YWdlIGZyLUZSICAiJTVkOiUzczB4JTA4cCAlMzZzICUxM3MgJUw4ZA0K PiAlNWRcbiINCj4gLSNzdHJpbmcgU1RSX0RQX1NFQ1RJT05fUkFXVFJBQ0UgICAgICAgICNsYW5n dWFnZSBlbi1VUyAgIlJBVyBUcmFjZSINCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICNsYW5ndWFnZSBmci1GUiAgIlJBVyBUcmFjZSINCj4gLSNzdHJpbmcgU1RSX0RQ X1NFQ1RJT05fUkFXUFJPRklMRSAgICAgICNsYW5ndWFnZSBlbi1VUyAgIlJBVyBQcm9maWxlIg0K PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2xhbmd1YWdlIGZyLUZS ICAiUkFXIFByb2ZpbGUiDQo+IC0jc3RyaW5nIFNUUl9EUF9SQVdfREFTSEVTICAgICAgICAgICAg ICAjbGFuZ3VhZ2UgZW4tVVMgICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiAtLS0tLVxuIg0KPiAtICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgI2xhbmd1YWdlIGZyLUZSICAiLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+IC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LVxuIg0KPiAtI3N0cmluZyBTVFJfRFBfUkFXX1ZBUlMgICAgICAgICAgICAgICAgI2xhbmd1YWdl IGVuLVVTICAiJTVkOiAlMTZMWCAlMTZMWA0KPiAlMTZMWCAgJTMxYSAgJTMxYVxuIg0KPiAtICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2xhbmd1YWdlIGZyLUZSICAiJTVk OiAlMTZMWCAlMTZMWCAlMTZMWCAgJTMxYQ0KPiAlMzFhXG4iDQo+IC0jc3RyaW5nIFNUUl9EUF9S QVdfSEVBRFIgICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgICJcbkluZGV4ICAgICAgIEhh bmRsZQ0KPiBTdGFydCBDb3VudCAgICAgICBFbmQgQ291bnQgICAgICAgICAgICAgICAgICBUb2tl biAgICAgICAgICAgICAgICAgICAgICAgICAgTW9kdWxlXG4iDQo+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZnItRlIgICJcbkluZGV4ICAgICAgIEhh bmRsZSAgICAgICAgU3RhcnQgQ291bnQNCj4gRW5kIENvdW50ICAgICAgICAgICAgICAgICAgVG9r ZW4gICAgICAgICAgICAgICAgICAgICAgICAgIE1vZHVsZVxuIg0KPiAtI3N0cmluZyBTVFJfRFBf UkFXX0RBU0hFUzIgICAgICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICAiLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0NCj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiAtLS0t LS0tLS0tLS1cbiINCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNs YW5ndWFnZSBmci1GUiAgIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQ0KPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiINCj4gLSNzdHJpbmcgU1RSX0RQ X1JBV19WQVJTMiAgICAgICAgICAgICAgICNsYW5ndWFnZSBlbi1VUyAgIiU1ZDogJTE2TFggJTE2 TFgNCj4gJTE2TFggICUzMWEgICUzMWEgJTVkXG4iDQo+IC0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZnItRlIgICIlNWQ6ICUxNkxYICUxNkxYICUxNkxY ICAlMzFhICAlMzFhDQo+ICU1ZFxuIg0KPiAtI3N0cmluZyBTVFJfRFBfUkFXX0hFQURSMiAgICAg ICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICAiXG5JbmRleCAgICAgICBIYW5kbGUNCj4gU3RhcnQg Q291bnQgICAgICAgRW5kIENvdW50ICAgICAgICAgICAgICAgICAgVG9rZW4gICAgICAgICAgICAg ICAgICAgICAgICAgIE1vZHVsZSAgICAgICAgICAgICAgICAgICBJRFxuIg0KPiAtICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2xhbmd1YWdlIGZyLUZSICAiXG5JbmRleCAg ICAgICBIYW5kbGUgICAgICAgIFN0YXJ0IENvdW50DQo+IEVuZCBDb3VudCAgICAgICAgICAgICAg ICAgIFRva2VuICAgICAgICAgICAgICAgICAgICAgICAgICBNb2R1bGUgICAgICAgICAgICAgICAg ICAgSURcbiINCj4gLSNzdHJpbmcgU1RSX0RQX09QVElPTl9VQSAgICAgICAgICAgICAgICNsYW5n dWFnZSBlbi1VUyAgIi1BIg0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgI2xhbmd1YWdlIGZyLUZSICAiLUEiDQo+IC0jc3RyaW5nIFNUUl9EUF9PUFRJT05fTEEgICAg ICAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgICItYSINCj4gLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICNsYW5ndWFnZSBmci1GUiAgIi1hIg0KPiAtI3N0cmluZyBTVFJf RFBfT1BUSU9OX0xOICAgICAgICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICAiLW4iDQo+IC0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZnItRlIgICItbiIN Cj4gLSNzdHJpbmcgU1RSX0RQX09QVElPTl9MVCAgICAgICAgICAgICAgICNsYW5ndWFnZSBlbi1V UyAgIi10Ig0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2xhbmd1 YWdlIGZyLUZSICAiLXQiDQo+IC0jc3RyaW5nIFNUUl9EUF9PUFRJT05fVVAgICAgICAgICAgICAg ICAjbGFuZ3VhZ2UgZW4tVVMgICItUCINCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICNsYW5ndWFnZSBmci1GUiAgIi1QIg0KPiAtI3N0cmluZyBTVFJfRFBfT1BUSU9O X1VSICAgICAgICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICAiLVIiDQo+IC0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZnItRlIgICItUiINCj4gLSNzdHJp bmcgU1RSX0RQX09QVElPTl9MUyAgICAgICAgICAgICAgICNsYW5ndWFnZSBlbi1VUyAgIi1zIg0K PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2xhbmd1YWdlIGZyLUZS ICAiLXMiDQo+IC0jc3RyaW5nIFNUUl9EUF9PUFRJT05fVVMgICAgICAgICAgICAgICAjbGFuZ3Vh Z2UgZW4tVVMgICItUyINCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICNsYW5ndWFnZSBmci1GUiAgIi1TIg0KPiAtI3N0cmluZyBTVFJfRFBfT1BUSU9OX1VUICAgICAg ICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICAiLVQiDQo+IC0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZnItRlIgICItVCINCj4gLSNzdHJpbmcgU1RSX0RQ X09QVElPTl9MViAgICAgICAgICAgICAgICNsYW5ndWFnZSBlbi1VUyAgIi12Ig0KPiAtICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2xhbmd1YWdlIGZyLUZSICAiLXYiDQo+ IC0jc3RyaW5nIFNUUl9EUF9PUFRJT05fUUggICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMg ICItPyINCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNsYW5ndWFn ZSBmci1GUiAgIi0/Ig0KPiAtI3N0cmluZyBTVFJfRFBfT1BUSU9OX0xIICAgICAgICAgICAgICAg I2xhbmd1YWdlIGVuLVVTICAiLWgiDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAjbGFuZ3VhZ2UgZnItRlIgICItaCINCj4gLSNzdHJpbmcgU1RSX0RQX09QVElPTl9V SCAgICAgICAgICAgICAgICNsYW5ndWFnZSBlbi1VUyAgIi1IIg0KPiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgI2xhbmd1YWdlIGZyLUZSICAiLUgiDQo+IC0jc3RyaW5n IFNUUl9EUF9PUFRJT05fTFggICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgICIteCINCj4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNsYW5ndWFnZSBmci1GUiAg Ii14Ig0KPiAtI3N0cmluZyBTVFJfRFBfT1BUSU9OX0xJICAgICAgICAgICAgICAgI2xhbmd1YWdl IGVuLVVTICAiLWkiDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj bGFuZ3VhZ2UgZnItRlIgICItaSINCj4gLSNzdHJpbmcgU1RSX0RQX09QVElPTl9MQyAgICAgICAg ICAgICAgICNsYW5ndWFnZSBlbi1VUyAgIi1jIg0KPiAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgI2xhbmd1YWdlIGZyLUZSICAiLWMiDQo+IC0jc3RyaW5nIFNUUl9EUF9J TkNPTVBMRVRFICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgICIgSSAiDQo+IC0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZnItRlIgICIgSSAiDQo+ IC0jc3RyaW5nIFNUUl9EUF9DT01QTEVURSAgICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMg ICIgICAiDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjbGFuZ3Vh Z2UgZnItRlIgICIgICAiDQo+IC0jc3RyaW5nIFNUUl9BTElUX1VOS05PV04gICAgICAgICAgICAg ICAjbGFuZ3VhZ2UgZW4tVVMgICJVbmtub3duIg0KPiAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgI2xhbmd1YWdlIGZyLUZSICAiVW5rbm93biINCj4gXCBObyBuZXdsaW5l IGF0IGVuZCBvZiBmaWxlDQo+IGRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVBrZy9EcF9BcHAvRHBU cmFjZS5jDQo+IGIvUGVyZm9ybWFuY2VQa2cvRHBfQXBwL0RwVHJhY2UuYw0KPiBkZWxldGVkIGZp bGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggOWI0ZTBlZDI4OS4uMDAwMDAwMDAwMA0KPiAtLS0gYS9Q ZXJmb3JtYW5jZVBrZy9EcF9BcHAvRHBUcmFjZS5jDQo+ICsrKyAvZGV2L251bGwNCj4gQEAgLTEs ODc5ICswLDAgQEANCj4gLS8qKiBAZmlsZQ0KPiAtICBUcmFjZSByZXBvcnRpbmcgZm9yIHRoZSBE cCB1dGlsaXR5Lg0KPiAtDQo+IC0gIENvcHlyaWdodCAoYykgMjAwOSAtIDIwMTcsIEludGVsIENv cnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gLSAgKEMpIENvcHlyaWdodCAy MDE1LTIwMTYgSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgRGV2ZWxvcG1lbnQgTFA8QlI+DQo+ IC0gIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gLSAgYXJl IGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlv bnMgb2YgdGhlIEJTRA0KPiBMaWNlbnNlDQo+IC0gIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlz dHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gZm91bmQg YXQNCj4gLSAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0K PiAtDQo+IC0gIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5T RSBPTiBBTiAiQVMgSVMiDQo+IEJBU0lTLA0KPiAtICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQ UkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0K PiAtKiovDQo+IC0NCj4gLSNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VMaWIuaD4NCj4gLSNpbmNsdWRl IDxMaWJyYXJ5L0Jhc2VNZW1vcnlMaWIuaD4NCj4gLSNpbmNsdWRlIDxMaWJyYXJ5L01lbW9yeUFs bG9jYXRpb25MaWIuaD4NCj4gLSNpbmNsdWRlIDxMaWJyYXJ5L0RlYnVnTGliLmg+DQo+IC0jaW5j bHVkZSA8TGlicmFyeS9VZWZpQm9vdFNlcnZpY2VzVGFibGVMaWIuaD4NCj4gLSNpbmNsdWRlIDxM aWJyYXJ5L1BlQ29mZkdldEVudHJ5UG9pbnRMaWIuaD4NCj4gLSNpbmNsdWRlIDxMaWJyYXJ5L1Bl cmZvcm1hbmNlTGliLmg+DQo+IC0jaW5jbHVkZSA8TGlicmFyeS9QcmludExpYi5oPg0KPiAtI2lu Y2x1ZGUgPExpYnJhcnkvSGlpTGliLmg+DQo+IC0jaW5jbHVkZSA8TGlicmFyeS9QY2RMaWIuaD4N Cj4gLQ0KPiAtI2luY2x1ZGUgPEd1aWQvUGVyZm9ybWFuY2UuaD4NCj4gLQ0KPiAtI2luY2x1ZGUg IkRwLmgiDQo+IC0jaW5jbHVkZSAiTGl0ZXJhbHMuaCINCj4gLSNpbmNsdWRlICJEcEludGVybmFs LmgiDQo+IC0NCj4gLS8qKg0KPiAtICBDb2xsZWN0IHZlcmJvc2Ugc3RhdGlzdGljcyBhYm91dCB0 aGUgbG9nZ2VkIHBlcmZvcm1hbmNlIG1lYXN1cmVtZW50cy4NCj4gLQ0KPiAtICBHZW5lcmFsIFN1 bW1hcnkgaW5mb3JtYXRpb24gZm9yIGFsbCBUcmFjZSBtZWFzdXJlbWVudHMgaXMgZ2F0aGVyZWQg YW5kDQo+IC0gIHN0b3JlZCB3aXRoaW4gdGhlIFN1bW1hcnlEYXRhIHN0cnVjdHVyZS4gIFRoaXMg aW5mb3JtYXRpb24gaXMgYm90aA0KPiAtICB1c2VkIGludGVybmFsbHkgYnkgc3Vic2VxdWVudCBy ZXBvcnRpbmcgZnVuY3Rpb25zLCBhbmQgZGlzcGxheWVkDQo+IC0gIGF0IHRoZSBlbmQgb2YgdmVy Ym9zZSByZXBvcnRzLg0KPiAtDQo+IC0gIEBwcmUgIFRoZSBTdW1tYXJ5RGF0YSBhbmQgQ3VtRGF0 YSBzdHJ1Y3R1cmVzIG11c3QgYmUgaW5pdGlhbGl6ZWQNCj4gLSAgICAgICAgcHJpb3IgdG8gY2Fs bGluZyB0aGlzIGZ1bmN0aW9uLg0KPiAtDQo+IC0gIEBwb3N0IFRoZSBTdW1tYXJ5RGF0YSBhbmQg Q3VtRGF0YSBzdHJ1Y3R1cmVzIGNvbnRhaW4gc3RhdGlzdGljcyBmb3IgdGhlDQo+IC0gICAgICAg IGN1cnJlbnQgcGVyZm9ybWFuY2UgbG9ncy4NCj4gLQ0KPiAtICBAcGFyYW1baW4sIG91dF0gQ3Vz dG9tQ3VtdWxhdGl2ZURhdGEgIEEgcG9pbnRlciB0byB0aGUgY3VtdG9tDQo+IGN1bXVsYXRpdmUg ZGF0YS4NCj4gLQ0KPiAtKiovDQo+IC1WT0lEDQo+IC1HYXRoZXJTdGF0aXN0aWNzKA0KPiAtICBJ TiBPVVQgUEVSRl9DVU1fREFUQSAgICAgICAgICAgICAgKkN1c3RvbUN1bXVsYXRpdmVEYXRhIE9Q VElPTkFMDQo+IC0gICkNCj4gLXsNCj4gLSAgTUVBU1VSRU1FTlRfUkVDT1JEICAgICAgICBNZWFz dXJlbWVudDsNCj4gLSAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICBEdXJhdGlvbjsNCj4gLSAg VUlOVE4gICAgICAgICAgICAgICAgICAgICBMb2dFbnRyeUtleTsNCj4gLSAgSU5UTiAgICAgICAg ICAgICAgICAgICAgICBUSW5kZXg7DQo+IC0NCj4gLSAgTG9nRW50cnlLZXkgPSAwOw0KPiAtICB3 aGlsZSAoKExvZ0VudHJ5S2V5ID0gR2V0UGVyZm9ybWFuY2VNZWFzdXJlbWVudEV4ICgNCj4gLSAg ICAgICAgICAgICAgICAgICAgICAgIExvZ0VudHJ5S2V5LA0KPiAtICAgICAgICAgICAgICAgICAg ICAgICAgJk1lYXN1cmVtZW50LkhhbmRsZSwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICZN ZWFzdXJlbWVudC5Ub2tlbiwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICZNZWFzdXJlbWVu dC5Nb2R1bGUsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAmTWVhc3VyZW1lbnQuU3RhcnRU aW1lU3RhbXAsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAmTWVhc3VyZW1lbnQuRW5kVGlt ZVN0YW1wLA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgJk1lYXN1cmVtZW50LklkZW50aWZp ZXIpKSAhPSAwKQ0KPiAtICB7DQo+IC0gICAgKytTdW1tYXJ5RGF0YS5OdW1UcmFjZTsgICAgICAg ICAgIC8vIENvdW50IHRoZSBudW1iZXIgb2YgVFJBQ0UNCj4gTWVhc3VyZW1lbnQgcmVjb3Jkcw0K PiAtICAgIGlmIChNZWFzdXJlbWVudC5FbmRUaW1lU3RhbXAgPT0gMCkgew0KPiAtICAgICAgKytT dW1tYXJ5RGF0YS5OdW1JbmNvbXBsZXRlOyAgICAvLyBDb3VudCB0aGUgaW5jb21wbGV0ZSByZWNv cmRzDQo+IC0gICAgICBjb250aW51ZTsNCj4gLSAgICB9DQo+IC0NCj4gLSAgICBpZiAoTWVhc3Vy ZW1lbnQuSGFuZGxlICE9IE5VTEwpIHsNCj4gLSAgICAgICsrU3VtbWFyeURhdGEuTnVtSGFuZGxl czsgICAgICAgLy8gQ291bnQgdGhlIG51bWJlciBvZg0KPiBtZWFzdXJlbWVudHMgd2l0aCBub24t TlVMTCBoYW5kbGVzDQo+IC0gICAgfQ0KPiAtDQo+IC0gICAgaWYgKElzUGhhc2UoICZNZWFzdXJl bWVudCkpIHsNCj4gLSAgICAgICsrU3VtbWFyeURhdGEuTnVtU3VtbWFyeTsgICAgICAgLy8gQ291 bnQgdGhlIG51bWJlciBvZiBtYWpvcg0KPiBwaGFzZXMNCj4gLSAgICB9DQo+IC0gICAgZWxzZSB7 ICAvLyAhSXNQaGFzZSguLi4NCj4gLSAgICAgIGlmKE1lYXN1cmVtZW50LkhhbmRsZSA9PSBOVUxM KSB7DQo+IC0gICAgICAgICsrU3VtbWFyeURhdGEuTnVtR2xvYmFsOw0KPiAtICAgICAgfQ0KPiAt ICAgIH0NCj4gLQ0KPiAtICAgIGlmIChBc2NpaVN0cm5DbXAgKE1lYXN1cmVtZW50LlRva2VuLCBB TGl0X1BFSU0sIFBFUkZfVE9LRU5fTEVOR1RIKQ0KPiA9PSAwKSB7DQo+IC0gICAgICArK1N1bW1h cnlEYXRhLk51bVBFSU1zOyAgICAgICAgIC8vIENvdW50IFBFSU0gbWVhc3VyZW1lbnRzDQo+IC0g ICAgfQ0KPiAtDQo+IC0gICAgRHVyYXRpb24gPSBHZXREdXJhdGlvbiAoJk1lYXN1cmVtZW50KTsN Cj4gLSAgICBUSW5kZXggPSBHZXRDdW11bGF0aXZlSXRlbSAoJk1lYXN1cmVtZW50KTsNCj4gLSAg ICBpZiAoVEluZGV4ID49IDApIHsNCj4gLSAgICAgIEN1bURhdGFbVEluZGV4XS5EdXJhdGlvbiAr PSBEdXJhdGlvbjsNCj4gLSAgICAgIEN1bURhdGFbVEluZGV4XS5Db3VudCsrOw0KPiAtICAgICAg aWYgKCBEdXJhdGlvbiA8IEN1bURhdGFbVEluZGV4XS5NaW5EdXIgKSB7DQo+IC0gICAgICAgIEN1 bURhdGFbVEluZGV4XS5NaW5EdXIgPSBEdXJhdGlvbjsNCj4gLSAgICAgIH0NCj4gLSAgICAgIGlm ICggRHVyYXRpb24gPiBDdW1EYXRhW1RJbmRleF0uTWF4RHVyICkgew0KPiAtICAgICAgICBDdW1E YXRhW1RJbmRleF0uTWF4RHVyID0gRHVyYXRpb247DQo+IC0gICAgICB9DQo+IC0gICAgfQ0KPiAt DQo+IC0gICAgLy8NCj4gLSAgICAvLyBDb2xsZWN0IHRoZSBkYXRhIGZvciBjdXN0b20gY3VtdWxh dGl2ZSBkYXRhLg0KPiAtICAgIC8vDQo+IC0gICAgaWYgKChDdXN0b21DdW11bGF0aXZlRGF0YSAh PSBOVUxMKSAmJiAoQXNjaWlTdHJDbXANCj4gKE1lYXN1cmVtZW50LlRva2VuLCBDdXN0b21DdW11 bGF0aXZlRGF0YS0+TmFtZSkgPT0gMCkpIHsNCj4gLSAgICAgIEN1c3RvbUN1bXVsYXRpdmVEYXRh LT5EdXJhdGlvbiArPSBEdXJhdGlvbjsNCj4gLSAgICAgIEN1c3RvbUN1bXVsYXRpdmVEYXRhLT5D b3VudCsrOw0KPiAtICAgICAgaWYgKER1cmF0aW9uIDwgQ3VzdG9tQ3VtdWxhdGl2ZURhdGEtPk1p bkR1cikgew0KPiAtICAgICAgICBDdXN0b21DdW11bGF0aXZlRGF0YS0+TWluRHVyID0gRHVyYXRp b247DQo+IC0gICAgICB9DQo+IC0gICAgICBpZiAoRHVyYXRpb24gPiBDdXN0b21DdW11bGF0aXZl RGF0YS0+TWF4RHVyKSB7DQo+IC0gICAgICAgIEN1c3RvbUN1bXVsYXRpdmVEYXRhLT5NYXhEdXIg PSBEdXJhdGlvbjsNCj4gLSAgICAgIH0NCj4gLSAgICB9DQo+IC0gIH0NCj4gLX0NCj4gLQ0KPiAt LyoqDQo+IC0gIEdhdGhlciBhbmQgcHJpbnQgQUxMIFRyYWNlIFJlY29yZHMuDQo+IC0NCj4gLSAg RGlzcGxheXMgYWxsICJpbnRlcmVzdGluZyIgVHJhY2UgbWVhc3VyZW1lbnRzIGluIG9yZGVyLjxC Uj4NCj4gLSAgVGhlIG51bWJlciBvZiByZWNvcmRzIGRpc3BsYXllZCBpcyBjb250cm9sbGVkIGJ5 Og0KPiAtICAgICAtIHJlY29yZHMgd2l0aCBhIGR1cmF0aW9uIGxlc3MgdGhhbiBtSW50ZXJlc3RU aHJlc2hvbGQgbWljcm9zZWNvbmRzIGFyZQ0KPiBub3QgZGlzcGxheWVkLg0KPiAtICAgICAtIE5v IG1vcmUgdGhhbiBMaW1pdCByZWNvcmRzIGFyZSBkaXNwbGF5ZWQuICBBIExpbWl0IG9mIHplcm8g d2lsbCBub3QgbGltaXQNCj4gdGhlIG91dHB1dC4NCj4gLSAgICAgLSBJZiB0aGUgRXhjbHVkZUZs YWcgaXMgVFJVRSwgcmVjb3JkcyBtYXRjaGluZyBlbnRyaWVzIGluIHRoZSBDdW1EYXRhDQo+IGFy cmF5IGFyZSBub3QNCj4gLSAgICAgICBkaXNwbGF5ZWQuDQo+IC0NCj4gLSAgQHByZSAgICBUaGUg bUludGVyZXN0VGhyZXNob2xkIGdsb2JhbCB2YXJpYWJsZSBpcyBzZXQgdG8gdGhlIHNob3J0ZXN0 DQo+IGR1cmF0aW9uIHRvIGJlIHByaW50ZWQuDQo+IC0gICAgICAgICAgIFRoZSBtR2F1Z2VTdHJp bmcgYW5kIG1Vbmljb2RlVG9rZW4gZ2xvYmFsIGFycmF5cyBhcmUgdXNlZCBmb3INCj4gdGVtcG9y YXJ5IHN0cmluZyBzdG9yYWdlLg0KPiAtICAgICAgICAgICBUaGV5IG11c3Qgbm90IGJlIGluIHVz ZSBieSBhIGNhbGxpbmcgZnVuY3Rpb24uDQo+IC0NCj4gLSAgQHBhcmFtW2luXSAgICBMaW1pdCAg ICAgICBUaGUgbnVtYmVyIG9mIHJlY29yZHMgdG8gcHJpbnQuICBaZXJvIGlzIEFMTC4NCj4gLSAg QHBhcmFtW2luXSAgICBFeGNsdWRlRmxhZyBUUlVFIHRvIGV4Y2x1ZGUgaW5kaXZpZHVhbCBDdW11 bGF0aXZlIGl0ZW1zDQo+IGZyb20gZGlzcGxheS4NCj4gLQ0KPiAtICBAcmV0dmFsIEVGSV9TVUND RVNTICAgICAgICAgICBUaGUgb3BlcmF0aW9uIHdhcyBzdWNjZXNzZnVsLg0KPiAtICBAcmV0dmFs IEVGSV9BQk9SVEVEICAgICAgICAgICBUaGUgdXNlciBhYm9ydHMgdGhlIG9wZXJhdGlvbi4NCj4g LSAgQHJldHVybiBPdGhlcnMgICAgICAgICAgICAgICAgZnJvbSBhIGNhbGwgdG8gZ0JTLT5Mb2Nh dGVIYW5kbGVCdWZmZXIoKS4NCj4gLSoqLw0KPiAtRUZJX1NUQVRVUw0KPiAtRHVtcEFsbFRyYWNl KA0KPiAtICBJTiBVSU5UTiAgICAgICAgICAgICBMaW1pdCwNCj4gLSAgSU4gQk9PTEVBTiAgICAg ICAgICAgRXhjbHVkZUZsYWcNCj4gLSAgKQ0KPiAtew0KPiAtICBNRUFTVVJFTUVOVF9SRUNPUkQg ICAgICAgIE1lYXN1cmVtZW50Ow0KPiAtICBVSU5UNjQgICAgICAgICAgICAgICAgICAgIEVsYXBz ZWRUaW1lOw0KPiAtICBVSU5UNjQgICAgICAgICAgICAgICAgICAgIER1cmF0aW9uOw0KPiAtICBj b25zdCBDSEFSMTYgICAgICAgICAgICAgICpJbmNGbGFnOw0KPiAtICBVSU5UTiAgICAgICAgICAg ICAgICAgICAgIExvZ0VudHJ5S2V5Ow0KPiAtICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIENv dW50Ow0KPiAtICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIEluZGV4Ow0KPiAtICBVSU5UTiAg ICAgICAgICAgICAgICAgICAgIFRJbmRleDsNCj4gLQ0KPiAtICBFRklfSEFORExFICAgICAgICAg ICAgICAgICpIYW5kbGVCdWZmZXI7DQo+IC0gIFVJTlROICAgICAgICAgICAgICAgICAgICAgSGFu ZGxlQ291bnQ7DQo+IC0gIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiAtICBF RklfU1RSSU5HICAgICAgICAgICAgICAgIFN0cmluZ1B0clVua25vd247DQo+IC0NCj4gLSAgU3Ry aW5nUHRyVW5rbm93biA9IEhpaUdldFN0cmluZyAoZ0hpaUhhbmRsZSwgU1RSSU5HX1RPS0VODQo+ IChTVFJfQUxJVF9VTktOT1dOKSwgTlVMTCk7DQo+IC0gIEluY0ZsYWcgPSBIaWlHZXRTdHJpbmcg KGdIaWlIYW5kbGUsIFNUUklOR19UT0tFTiAoU1RSX0RQX1NFQ1RJT05fQUxMKSwNCj4gTlVMTCk7 DQo+IC0gIFByaW50VG9rZW4oIFNUUklOR19UT0tFTiAoU1RSX0RQX1NFQ1RJT05fSEVBREVSKSwN Cj4gLSAgICAgICAgICAgICAgKEluY0ZsYWcgPT0gTlVMTCkgPyBTdHJpbmdQdHJVbmtub3duIDog SW5jRmxhZyk7DQo+IC0gIEZyZWVQb29sIChTdHJpbmdQdHJVbmtub3duKTsNCj4gLQ0KPiAtICAv LyBHZXQgSGFuZGxlIGluZm9ybWF0aW9uDQo+IC0gIC8vDQo+IC0gIFN0YXR1cyAgPSBnQlMtPkxv Y2F0ZUhhbmRsZUJ1ZmZlciAoQWxsSGFuZGxlcywgTlVMTCwgTlVMTCwNCj4gJkhhbmRsZUNvdW50 LCAmSGFuZGxlQnVmZmVyKTsNCj4gLSAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiAtICAg IFByaW50VG9rZW4gKFNUUklOR19UT0tFTiAoU1RSX0RQX0hBTkRMRVNfRVJST1IpLCBTdGF0dXMp Ow0KPiAtICB9DQo+IC0gIGVsc2Ugew0KPiAtICAgIC8vIFdlIGhhdmUgc3VjY2Vzc2Z1bGx5IHBv cHVsYXRlZCB0aGUgSGFuZGxlQnVmZmVyDQo+IC0gICAgLy8gRGlzcGxheSBBTEwgTWVhc3VyZW1l bnQgUmVjb3Jkcw0KPiAtICAgIC8vICAgIFVwIHRvIExpbWl0IGxpbmVzIGRpc3BsYXllZA0KPiAt ICAgIC8vICAgIERpc3BsYXkgb25seSByZWNvcmRzIHdpdGggRWxhcHNlZCB0aW1lcyA+PSBtSW50 ZXJlc3RUaHJlc2hvbGQNCj4gLSAgICAvLyAgICBEaXNwbGF5IGRyaXZlciBuYW1lcyBpbiBNb2R1 bGUgZmllbGQgZm9yIHJlY29yZHMgd2l0aCBIYW5kbGVzLg0KPiAtICAgIC8vDQo+IC0gICAgaWYg KG1TaG93SWQpIHsNCj4gLSAgICAgIFByaW50VG9rZW4gKFNUUklOR19UT0tFTiAoU1RSX0RQX0FM TF9IRUFEUjIpICk7DQo+IC0gICAgICBQcmludFRva2VuIChTVFJJTkdfVE9LRU4gKFNUUl9EUF9B TExfREFTSEVTMikgKTsNCj4gLSAgICB9IGVsc2Ugew0KPiAtICAgICAgUHJpbnRUb2tlbiAoU1RS SU5HX1RPS0VOIChTVFJfRFBfQUxMX0hFQURSKSApOw0KPiAtICAgICAgUHJpbnRUb2tlbiAoU1RS SU5HX1RPS0VOIChTVFJfRFBfREFTSEVTKSApOw0KPiAtICAgIH0NCj4gLQ0KPiAtICAgIExvZ0Vu dHJ5S2V5ID0gMDsNCj4gLSAgICBDb3VudCA9IDA7DQo+IC0gICAgSW5kZXggPSAwOw0KPiAtICAg IHdoaWxlICggV0lUSElOX0xJTUlUKENvdW50LCBMaW1pdCkgJiYNCj4gLSAgICAgICAgICAgICgo TG9nRW50cnlLZXkgPSBHZXRQZXJmb3JtYW5jZU1lYXN1cmVtZW50RXggKA0KPiAtICAgICAgICAg ICAgICAgICAgICAgICAgICAgIExvZ0VudHJ5S2V5LA0KPiAtICAgICAgICAgICAgICAgICAgICAg ICAgICAgICZNZWFzdXJlbWVudC5IYW5kbGUsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgJk1lYXN1cmVtZW50LlRva2VuLA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICZN ZWFzdXJlbWVudC5Nb2R1bGUsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJk1lYXN1 cmVtZW50LlN0YXJ0VGltZVN0YW1wLA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICZN ZWFzdXJlbWVudC5FbmRUaW1lU3RhbXAsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAg Jk1lYXN1cmVtZW50LklkZW50aWZpZXIpKSAhPSAwKQ0KPiAtICAgICAgICAgICkNCj4gLSAgICB7 DQo+IC0gICAgICArK0luZGV4OyAgICAvLyBDb3VudCBldmVyeSByZWNvcmQuICBGaXJzdCByZWNv cmQgaXMgMS4NCj4gLSAgICAgIEVsYXBzZWRUaW1lID0gMDsNCj4gLSAgICAgIFNhZmVGcmVlUG9v bCAoKFZPSUQgKikgSW5jRmxhZyk7DQo+IC0gICAgICBpZiAoTWVhc3VyZW1lbnQuRW5kVGltZVN0 YW1wICE9IDApIHsNCj4gLSAgICAgICAgRHVyYXRpb24gPSBHZXREdXJhdGlvbiAoJk1lYXN1cmVt ZW50KTsNCj4gLSAgICAgICAgRWxhcHNlZFRpbWUgPSBEdXJhdGlvbkluTWljcm9TZWNvbmRzICgg RHVyYXRpb24gKTsNCj4gLSAgICAgICAgSW5jRmxhZyA9IEhpaUdldFN0cmluZyAoZ0hpaUhhbmRs ZSwgU1RSSU5HX1RPS0VODQo+IChTVFJfRFBfQ09NUExFVEUpLCBOVUxMKTsNCj4gLSAgICAgIH0N Cj4gLSAgICAgIGVsc2Ugew0KPiAtICAgICAgICBJbmNGbGFnID0gSGlpR2V0U3RyaW5nIChnSGlp SGFuZGxlLCBTVFJJTkdfVE9LRU4NCj4gKFNUUl9EUF9JTkNPTVBMRVRFKSwgTlVMTCk7ICAvLyBN YXJrIGluY29tcGxldGUgcmVjb3Jkcw0KPiAtICAgICAgfQ0KPiAtICAgICAgaWYgKCgoTWVhc3Vy ZW1lbnQuRW5kVGltZVN0YW1wICE9IDApICYmIChFbGFwc2VkVGltZSA8DQo+IG1JbnRlcmVzdFRo cmVzaG9sZCkpIHx8DQo+IC0gICAgICAgICAgKChFeGNsdWRlRmxhZykgJiYgKEdldEN1bXVsYXRp dmVJdGVtKCZNZWFzdXJlbWVudCkgPj0gMCkpDQo+IC0gICAgICAgICApIHsgICAgICAvLyBJZ25v cmUgInVuaW50ZXJlc3RpbmciIG9yIGV4Y2x1ZGVkIHJlY29yZHMNCj4gLSAgICAgICAgY29udGlu dWU7DQo+IC0gICAgICB9DQo+IC0gICAgICArK0NvdW50OyAgICAvLyBDb3VudCB0aGUgbnVtYmVy IG9mIHJlY29yZHMgcHJpbnRlZA0KPiAtDQo+IC0gICAgICAvLyBJZiBIYW5kbGUgaXMgbm9uLXpl cm8sIHNlZSBpZiB3ZSBjYW4gZGV0ZXJtaW5lIGEgbmFtZSBmb3IgdGhlIGRyaXZlcg0KPiAtICAg ICAgQXNjaWlTdHJUb1VuaWNvZGVTdHJTIChNZWFzdXJlbWVudC5Nb2R1bGUsIG1HYXVnZVN0cmlu ZywNCj4gQVJSQVlfU0laRSAobUdhdWdlU3RyaW5nKSk7IC8vIFVzZSBNb2R1bGUgYnkgZGVmYXVs dA0KPiAtICAgICAgQXNjaWlTdHJUb1VuaWNvZGVTdHJTIChNZWFzdXJlbWVudC5Ub2tlbiwgbVVu aWNvZGVUb2tlbiwNCj4gQVJSQVlfU0laRSAobVVuaWNvZGVUb2tlbikpOw0KPiAtICAgICAgaWYg KE1lYXN1cmVtZW50LkhhbmRsZSAhPSBOVUxMKSB7DQo+IC0gICAgICAgIC8vIFNlZSBpZiB0aGUg SGFuZGxlIGlzIGluIHRoZSBIYW5kbGVCdWZmZXINCj4gLSAgICAgICAgZm9yIChUSW5kZXggPSAw OyBUSW5kZXggPCBIYW5kbGVDb3VudDsgVEluZGV4KyspIHsNCj4gLSAgICAgICAgICBpZiAoTWVh c3VyZW1lbnQuSGFuZGxlID09IEhhbmRsZUJ1ZmZlcltUSW5kZXhdKSB7DQo+IC0gICAgICAgICAg ICBHZXROYW1lRnJvbUhhbmRsZSAoSGFuZGxlQnVmZmVyW1RJbmRleF0pOw0KPiAtICAgICAgICAg ICAgYnJlYWs7DQo+IC0gICAgICAgICAgfQ0KPiAtICAgICAgICB9DQo+IC0gICAgICB9DQo+IC0N Cj4gLSAgICAgIGlmIChBc2NpaVN0cm5DbXAgKE1lYXN1cmVtZW50LlRva2VuLCBBTGl0X1BFSU0s DQo+IFBFUkZfVE9LRU5fTEVOR1RIKSA9PSAwKSB7DQo+IC0gICAgICAgIFVuaWNvZGVTUHJpbnQg KG1HYXVnZVN0cmluZywgc2l6ZW9mIChtR2F1Z2VTdHJpbmcpLCBMIiVnIiwNCj4gTWVhc3VyZW1l bnQuSGFuZGxlKTsNCj4gLSAgICAgIH0NCj4gLQ0KPiAtICAgICAgLy8gRW5zdXJlIHRoYXQgdGhl IGFyZ3VtZW50IHN0cmluZ3MgYXJlIG5vdCB0b28gbG9uZy4NCj4gLSAgICAgIG1HYXVnZVN0cmlu Z1tEUF9HQVVHRV9TVFJJTkdfTEVOR1RIXSA9IDA7DQo+IC0gICAgICBtVW5pY29kZVRva2VuWzEz XSA9IDA7DQo+IC0NCj4gLSAgICAgIGlmIChtU2hvd0lkKSB7DQo+IC0gICAgICAgIFByaW50VG9r ZW4oIFNUUklOR19UT0tFTiAoU1RSX0RQX0FMTF9WQVJTMiksDQo+IC0gICAgICAgICAgSW5kZXgs ICAgICAgLy8gMSBiYXNlZCwgV2hpY2ggbWVhc3VyZW1lbnQgcmVjb3JkIGlzIGJlaW5nIHByaW50 ZWQNCj4gLSAgICAgICAgICBJbmNGbGFnLA0KPiAtICAgICAgICAgIE1lYXN1cmVtZW50LkhhbmRs ZSwNCj4gLSAgICAgICAgICBtR2F1Z2VTdHJpbmcsDQo+IC0gICAgICAgICAgbVVuaWNvZGVUb2tl biwNCj4gLSAgICAgICAgICBFbGFwc2VkVGltZSwNCj4gLSAgICAgICAgICBNZWFzdXJlbWVudC5J ZGVudGlmaWVyDQo+IC0gICAgICAgICk7DQo+IC0gICAgICB9IGVsc2Ugew0KPiAtICAgICAgICBQ cmludFRva2VuKCBTVFJJTkdfVE9LRU4gKFNUUl9EUF9BTExfVkFSUyksDQo+IC0gICAgICAgICAg SW5kZXgsICAgICAgLy8gMSBiYXNlZCwgV2hpY2ggbWVhc3VyZW1lbnQgcmVjb3JkIGlzIGJlaW5n IHByaW50ZWQNCj4gLSAgICAgICAgICBJbmNGbGFnLA0KPiAtICAgICAgICAgIE1lYXN1cmVtZW50 LkhhbmRsZSwNCj4gLSAgICAgICAgICBtR2F1Z2VTdHJpbmcsDQo+IC0gICAgICAgICAgbVVuaWNv ZGVUb2tlbiwNCj4gLSAgICAgICAgICBFbGFwc2VkVGltZQ0KPiAtICAgICAgICApOw0KPiAtICAg ICAgfQ0KPiAtICAgICAgaWYgKFNoZWxsR2V0RXhlY3V0aW9uQnJlYWtGbGFnICgpKSB7DQo+IC0g ICAgICAgIFN0YXR1cyA9IEVGSV9BQk9SVEVEOw0KPiAtICAgICAgICBicmVhazsNCj4gLSAgICAg IH0NCj4gLSAgICB9DQo+IC0gIH0NCj4gLSAgaWYgKEhhbmRsZUJ1ZmZlciAhPSBOVUxMKSB7DQo+ IC0gICAgRnJlZVBvb2wgKEhhbmRsZUJ1ZmZlcik7DQo+IC0gIH0NCj4gLSAgU2FmZUZyZWVQb29s ICgoVk9JRCAqKSBJbmNGbGFnKTsNCj4gLSAgcmV0dXJuIFN0YXR1czsNCj4gLX0NCj4gLQ0KPiAt LyoqDQo+IC0gIEdhdGhlciBhbmQgcHJpbnQgUmF3IFRyYWNlIFJlY29yZHMuDQo+IC0NCj4gLSAg QWxsIFRyYWNlIG1lYXN1cmVtZW50cyB3aXRoIGEgZHVyYXRpb24gZ3JlYXRlciB0aGFuIG9yIGVx dWFsIHRvDQo+IC0gIG1JbnRlcmVzdFRocmVzaG9sZCBhcmUgcHJpbnRlZCB3aXRob3V0IGludGVy cHJldGF0aW9uLg0KPiAtDQo+IC0gIFRoZSBudW1iZXIgb2YgcmVjb3JkcyBkaXNwbGF5ZWQgaXMg Y29udHJvbGxlZCBieToNCj4gLSAgICAgLSByZWNvcmRzIHdpdGggYSBkdXJhdGlvbiBsZXNzIHRo YW4gbUludGVyZXN0VGhyZXNob2xkIG1pY3Jvc2Vjb25kcyBhcmUNCj4gbm90IGRpc3BsYXllZC4N Cj4gLSAgICAgLSBObyBtb3JlIHRoYW4gTGltaXQgcmVjb3JkcyBhcmUgZGlzcGxheWVkLiAgQSBM aW1pdCBvZiB6ZXJvIHdpbGwgbm90IGxpbWl0DQo+IHRoZSBvdXRwdXQuDQo+IC0gICAgIC0gSWYg dGhlIEV4Y2x1ZGVGbGFnIGlzIFRSVUUsIHJlY29yZHMgbWF0Y2hpbmcgZW50cmllcyBpbiB0aGUg Q3VtRGF0YQ0KPiBhcnJheSBhcmUgbm90DQo+IC0gICAgICAgZGlzcGxheWVkLg0KPiAtDQo+IC0g IEBwcmUgICAgVGhlIG1JbnRlcmVzdFRocmVzaG9sZCBnbG9iYWwgdmFyaWFibGUgaXMgc2V0IHRv IHRoZSBzaG9ydGVzdA0KPiBkdXJhdGlvbiB0byBiZSBwcmludGVkLg0KPiAtDQo+IC0gIEBwYXJh bVtpbl0gICAgTGltaXQgICAgICAgVGhlIG51bWJlciBvZiByZWNvcmRzIHRvIHByaW50LiAgWmVy byBpcyBBTEwuDQo+IC0gIEBwYXJhbVtpbl0gICAgRXhjbHVkZUZsYWcgVFJVRSB0byBleGNsdWRl IGluZGl2aWR1YWwgQ3VtdWxhdGl2ZSBpdGVtcw0KPiBmcm9tIGRpc3BsYXkuDQo+IC0NCj4gLSAg QHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIG9wZXJhdGlvbiB3YXMgc3VjY2Vzc2Z1 bC4NCj4gLSAgQHJldHZhbCBFRklfQUJPUlRFRCAgICAgICAgICAgVGhlIHVzZXIgYWJvcnRzIHRo ZSBvcGVyYXRpb24uDQo+IC0qKi8NCj4gLUVGSV9TVEFUVVMNCj4gLUR1bXBSYXdUcmFjZSgNCj4g LSAgSU4gVUlOVE4gICAgICAgICAgTGltaXQsDQo+IC0gIElOIEJPT0xFQU4gICAgICAgIEV4Y2x1 ZGVGbGFnDQo+IC0gICkNCj4gLXsNCj4gLSAgTUVBU1VSRU1FTlRfUkVDT1JEICAgICAgICBNZWFz dXJlbWVudDsNCj4gLSAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICBFbGFwc2VkVGltZTsNCj4g LSAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICBEdXJhdGlvbjsNCj4gLSAgVUlOVE4gICAgICAg ICAgICAgICAgICAgICBMb2dFbnRyeUtleTsNCj4gLSAgVUlOVE4gICAgICAgICAgICAgICAgICAg ICBDb3VudDsNCj4gLSAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBJbmRleDsNCj4gLQ0KPiAt ICBFRklfU1RSSU5HICAgIFN0cmluZ1B0cjsNCj4gLSAgRUZJX1NUUklORyAgICBTdHJpbmdQdHJV bmtub3duOw0KPiAtICBFRklfU1RBVFVTICAgIFN0YXR1czsNCj4gLQ0KPiAtICBTdGF0dXMgPSBF RklfU1VDQ0VTUzsNCj4gLQ0KPiAtICBTdHJpbmdQdHJVbmtub3duID0gSGlpR2V0U3RyaW5nIChn SGlpSGFuZGxlLCBTVFJJTkdfVE9LRU4NCj4gKFNUUl9BTElUX1VOS05PV04pLCBOVUxMKTsNCj4g LSAgU3RyaW5nUHRyID0gSGlpR2V0U3RyaW5nIChnSGlpSGFuZGxlLCBTVFJJTkdfVE9LRU4NCj4g KFNUUl9EUF9TRUNUSU9OX1JBV1RSQUNFKSwgTlVMTCk7DQo+IC0gIFByaW50VG9rZW4oIFNUUklO R19UT0tFTiAoU1RSX0RQX1NFQ1RJT05fSEVBREVSKSwNCj4gLSAgICAgICAgICAgICAgKFN0cmlu Z1B0ciA9PSBOVUxMKSA/IFN0cmluZ1B0clVua25vd24gOiBTdHJpbmdQdHIpOw0KPiAtICBGcmVl UG9vbCAoU3RyaW5nUHRyKTsNCj4gLSAgRnJlZVBvb2wgKFN0cmluZ1B0clVua25vd24pOw0KPiAt DQo+IC0gIGlmIChtU2hvd0lkKSB7DQo+IC0gICAgUHJpbnRUb2tlbiAoU1RSSU5HX1RPS0VOIChT VFJfRFBfUkFXX0hFQURSMikgKTsNCj4gLSAgICBQcmludFRva2VuIChTVFJJTkdfVE9LRU4gKFNU Ul9EUF9SQVdfREFTSEVTMikgKTsNCj4gLSAgfSBlbHNlIHsNCj4gLSAgICBQcmludFRva2VuIChT VFJJTkdfVE9LRU4gKFNUUl9EUF9SQVdfSEVBRFIpICk7DQo+IC0gICAgUHJpbnRUb2tlbiAoU1RS SU5HX1RPS0VOIChTVFJfRFBfUkFXX0RBU0hFUykgKTsNCj4gLSAgfQ0KPiAtDQo+IC0gIExvZ0Vu dHJ5S2V5ID0gMDsNCj4gLSAgQ291bnQgPSAwOw0KPiAtICBJbmRleCA9IDA7DQo+IC0gIHdoaWxl ICggV0lUSElOX0xJTUlUKENvdW50LCBMaW1pdCkgJiYNCj4gLSAgICAgICAgICAoKExvZ0VudHJ5 S2V5ID0gR2V0UGVyZm9ybWFuY2VNZWFzdXJlbWVudEV4ICgNCj4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgTG9nRW50cnlLZXksDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICZNZWFz dXJlbWVudC5IYW5kbGUsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICZNZWFzdXJlbWVu dC5Ub2tlbiwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgJk1lYXN1cmVtZW50Lk1vZHVs ZSwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgJk1lYXN1cmVtZW50LlN0YXJ0VGltZVN0 YW1wLA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAmTWVhc3VyZW1lbnQuRW5kVGltZVN0 YW1wLA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAmTWVhc3VyZW1lbnQuSWRlbnRpZmll cikpICE9IDApDQo+IC0gICAgICAgICkNCj4gLSAgew0KPiAtICAgICsrSW5kZXg7ICAgIC8vIENv dW50IGV2ZXJ5IHJlY29yZC4gIEZpcnN0IHJlY29yZCBpcyAxLg0KPiAtICAgIEVsYXBzZWRUaW1l ID0gMDsNCj4gLSAgICBpZiAoTWVhc3VyZW1lbnQuRW5kVGltZVN0YW1wICE9IDApIHsNCj4gLSAg ICAgIER1cmF0aW9uID0gR2V0RHVyYXRpb24gKCZNZWFzdXJlbWVudCk7DQo+IC0gICAgICBFbGFw c2VkVGltZSA9IER1cmF0aW9uSW5NaWNyb1NlY29uZHMgKCBEdXJhdGlvbiApOw0KPiAtICAgIH0N Cj4gLSAgICBpZiAoKEVsYXBzZWRUaW1lIDwgbUludGVyZXN0VGhyZXNob2xkKSAgICAgICAgICAg ICAgICAgfHwNCj4gLSAgICAgICAgKChFeGNsdWRlRmxhZykgJiYgKEdldEN1bXVsYXRpdmVJdGVt KCZNZWFzdXJlbWVudCkgPj0gMCkpDQo+IC0gICAgICAgICkgeyAvLyBJZ25vcmUgInVuaW50ZXJl c3RpbmciIG9yIEV4Y2x1ZGVkIHJlY29yZHMNCj4gLSAgICAgIGNvbnRpbnVlOw0KPiAtICAgIH0N Cj4gLSAgICArK0NvdW50OyAgICAvLyBDb3VudCB0aGUgbnVtYmVyIG9mIHJlY29yZHMgcHJpbnRl ZA0KPiAtDQo+IC0gICAgaWYgKG1TaG93SWQpIHsNCj4gLSAgICAgIFByaW50VG9rZW4gKFNUUklO R19UT0tFTiAoU1RSX0RQX1JBV19WQVJTMiksDQo+IC0gICAgICAgIEluZGV4LCAgICAgIC8vIDEg YmFzZWQsIFdoaWNoIG1lYXN1cmVtZW50IHJlY29yZCBpcyBiZWluZyBwcmludGVkDQo+IC0gICAg ICAgIE1lYXN1cmVtZW50LkhhbmRsZSwNCj4gLSAgICAgICAgTWVhc3VyZW1lbnQuU3RhcnRUaW1l U3RhbXAsDQo+IC0gICAgICAgIE1lYXN1cmVtZW50LkVuZFRpbWVTdGFtcCwNCj4gLSAgICAgICAg TWVhc3VyZW1lbnQuVG9rZW4sDQo+IC0gICAgICAgIE1lYXN1cmVtZW50Lk1vZHVsZSwNCj4gLSAg ICAgICAgTWVhc3VyZW1lbnQuSWRlbnRpZmllcg0KPiAtICAgICAgKTsNCj4gLSAgICB9IGVsc2Ug ew0KPiAtICAgICAgUHJpbnRUb2tlbiAoU1RSSU5HX1RPS0VOIChTVFJfRFBfUkFXX1ZBUlMpLA0K PiAtICAgICAgICBJbmRleCwgICAgICAvLyAxIGJhc2VkLCBXaGljaCBtZWFzdXJlbWVudCByZWNv cmQgaXMgYmVpbmcgcHJpbnRlZA0KPiAtICAgICAgICBNZWFzdXJlbWVudC5IYW5kbGUsDQo+IC0g ICAgICAgIE1lYXN1cmVtZW50LlN0YXJ0VGltZVN0YW1wLA0KPiAtICAgICAgICBNZWFzdXJlbWVu dC5FbmRUaW1lU3RhbXAsDQo+IC0gICAgICAgIE1lYXN1cmVtZW50LlRva2VuLA0KPiAtICAgICAg ICBNZWFzdXJlbWVudC5Nb2R1bGUNCj4gLSAgICAgICk7DQo+IC0gICAgfQ0KPiAtICAgIGlmIChT aGVsbEdldEV4ZWN1dGlvbkJyZWFrRmxhZyAoKSkgew0KPiAtICAgICAgU3RhdHVzID0gRUZJX0FC T1JURUQ7DQo+IC0gICAgICBicmVhazsNCj4gLSAgICB9DQo+IC0gIH0NCj4gLSAgcmV0dXJuIFN0 YXR1czsNCj4gLX0NCj4gLQ0KPiAtLyoqDQo+IC0gIEdhdGhlciBhbmQgcHJpbnQgTWFqb3IgUGhh c2UgbWV0cmljcy4NCj4gLQ0KPiAtKiovDQo+IC1WT0lEDQo+IC1Qcm9jZXNzUGhhc2VzKA0KPiAt ICBWT0lEDQo+IC0gICkNCj4gLXsNCj4gLSAgTUVBU1VSRU1FTlRfUkVDT1JEICAgICAgICBNZWFz dXJlbWVudDsNCj4gLSAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICBCZHNUaW1lb3V0VmFsdWU7 DQo+IC0gIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgU2VjVGltZTsNCj4gLSAgVUlOVDY0ICAg ICAgICAgICAgICAgICAgICBQZWlUaW1lOw0KPiAtICBVSU5UNjQgICAgICAgICAgICAgICAgICAg IER4ZVRpbWU7DQo+IC0gIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgQmRzVGltZTsNCj4gLSAg VUlOVDY0ICAgICAgICAgICAgICAgICAgICBFbGFwc2VkVGltZTsNCj4gLSAgVUlOVDY0ICAgICAg ICAgICAgICAgICAgICBEdXJhdGlvbjsNCj4gLSAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICBU b3RhbDsNCj4gLSAgRUZJX1NUUklORyAgICAgICAgICAgICAgICBTdHJpbmdQdHI7DQo+IC0gIFVJ TlROICAgICAgICAgICAgICAgICAgICAgTG9nRW50cnlLZXk7DQo+IC0gIEVGSV9TVFJJTkcgICAg ICAgICAgICAgICAgU3RyaW5nUHRyVW5rbm93bjsNCj4gLQ0KPiAtICBCZHNUaW1lb3V0VmFsdWUg PSAwOw0KPiAtICBTZWNUaW1lICAgICAgICAgPSAwOw0KPiAtICBQZWlUaW1lICAgICAgICAgPSAw Ow0KPiAtICBEeGVUaW1lICAgICAgICAgPSAwOw0KPiAtICBCZHNUaW1lICAgICAgICAgPSAwOw0K PiAtICAvLw0KPiAtICAvLyBHZXQgRXhlY3V0aW9uIFBoYXNlIFN0YXRpc3RpY3MNCj4gLSAgLy8N Cj4gLSAgU3RyaW5nUHRyVW5rbm93biA9IEhpaUdldFN0cmluZyAoZ0hpaUhhbmRsZSwgU1RSSU5H X1RPS0VODQo+IChTVFJfQUxJVF9VTktOT1dOKSwgTlVMTCk7DQo+IC0gIFN0cmluZ1B0ciA9IEhp aUdldFN0cmluZyAoZ0hpaUhhbmRsZSwgU1RSSU5HX1RPS0VODQo+IChTVFJfRFBfU0VDVElPTl9Q SEFTRVMpLCBOVUxMKTsNCj4gLSAgUHJpbnRUb2tlbiggU1RSSU5HX1RPS0VOIChTVFJfRFBfU0VD VElPTl9IRUFERVIpLA0KPiAtICAgICAgICAgICAgICAoU3RyaW5nUHRyID09IE5VTEwpID8gU3Ry aW5nUHRyVW5rbm93biA6IFN0cmluZ1B0cik7DQo+IC0gIEZyZWVQb29sIChTdHJpbmdQdHIpOw0K PiAtICBGcmVlUG9vbCAoU3RyaW5nUHRyVW5rbm93bik7DQo+IC0NCj4gLSAgTG9nRW50cnlLZXkg PSAwOw0KPiAtICB3aGlsZSAoKExvZ0VudHJ5S2V5ID0gR2V0UGVyZm9ybWFuY2VNZWFzdXJlbWVu dEV4ICgNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nRW50cnlLZXksDQo+IC0gICAg ICAgICAgICAgICAgICAgICAgICAgICZNZWFzdXJlbWVudC5IYW5kbGUsDQo+IC0gICAgICAgICAg ICAgICAgICAgICAgICAgICZNZWFzdXJlbWVudC5Ub2tlbiwNCj4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgJk1lYXN1cmVtZW50Lk1vZHVsZSwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAg ICAgJk1lYXN1cmVtZW50LlN0YXJ0VGltZVN0YW1wLA0KPiAtICAgICAgICAgICAgICAgICAgICAg ICAgICAmTWVhc3VyZW1lbnQuRW5kVGltZVN0YW1wLA0KPiAtICAgICAgICAgICAgICAgICAgICAg ICAgICAmTWVhc3VyZW1lbnQuSWRlbnRpZmllcikpICE9IDApDQo+IC0gIHsNCj4gLSAgICBpZiAo TWVhc3VyZW1lbnQuRW5kVGltZVN0YW1wID09IDApIHsgLy8gU2tpcCAiaW5jb21wbGV0ZSIgcmVj b3Jkcw0KPiAtICAgICAgY29udGludWU7DQo+IC0gICAgfQ0KPiAtICAgIER1cmF0aW9uID0gR2V0 RHVyYXRpb24gKCZNZWFzdXJlbWVudCk7DQo+IC0gICAgaWYgKCAgIE1lYXN1cmVtZW50LkhhbmRs ZSAhPSBOVUxMDQo+IC0gICAgICAgICYmIChBc2NpaVN0cm5DbXAgKE1lYXN1cmVtZW50LlRva2Vu LCBBTGl0X0Jkc1RPLA0KPiBQRVJGX1RPS0VOX0xFTkdUSCkgPT0gMCkNCj4gLSAgICAgICApDQo+ IC0gICAgew0KPiAtICAgICAgQmRzVGltZW91dFZhbHVlID0gRHVyYXRpb247DQo+IC0gICAgfSBl bHNlIGlmIChBc2NpaVN0cm5DbXAgKE1lYXN1cmVtZW50LlRva2VuLCBBTGl0X1NFQywNCj4gUEVS Rl9UT0tFTl9MRU5HVEgpID09IDApIHsNCj4gLSAgICAgIFNlY1RpbWUgICAgID0gRHVyYXRpb247 DQo+IC0gICAgfSBlbHNlIGlmIChBc2NpaVN0cm5DbXAgKE1lYXN1cmVtZW50LlRva2VuLCBBTGl0 X1BFSSwNCj4gUEVSRl9UT0tFTl9MRU5HVEgpID09IDApIHsNCj4gLSAgICAgIFBlaVRpbWUgICAg ID0gRHVyYXRpb247DQo+IC0gICAgfSBlbHNlIGlmIChBc2NpaVN0cm5DbXAgKE1lYXN1cmVtZW50 LlRva2VuLCBBTGl0X0RYRSwNCj4gUEVSRl9UT0tFTl9MRU5HVEgpID09IDApIHsNCj4gLSAgICAg IER4ZVRpbWUgICAgICA9IER1cmF0aW9uOw0KPiAtICAgIH0gZWxzZSBpZiAoQXNjaWlTdHJuQ21w IChNZWFzdXJlbWVudC5Ub2tlbiwgQUxpdF9CRFMsDQo+IFBFUkZfVE9LRU5fTEVOR1RIKSA9PSAw KSB7DQo+IC0gICAgICBCZHNUaW1lICAgICAgPSBEdXJhdGlvbjsNCj4gLSAgICB9DQo+IC0gIH0N Cj4gLQ0KPiAtICBUb3RhbCA9IDA7DQo+IC0NCj4gLSAgLy8gcHJpbnQgU0VDIHBoYXNlIGR1cmF0 aW9uIHRpbWUNCj4gLSAgLy8NCj4gLSAgaWYgKFNlY1RpbWUgPiAwKSB7DQo+IC0gICAgRWxhcHNl ZFRpbWUgPSBEdXJhdGlvbkluTWljcm9TZWNvbmRzICggU2VjVGltZSApOyAgICAgLy8gQ2FsY3Vs YXRlIGVsYXBzZWQNCj4gdGltZSBpbiBtaWNyb3NlY29uZHMNCj4gLSAgICBUb3RhbCArPSBEaXZV NjR4MzIgKEVsYXBzZWRUaW1lLCAxMDAwKTsgICAvLyBBY2N1bXVsYXRlIHRpbWUgaW4NCj4gbWls bGlzZWNvbmRzDQo+IC0gICAgUHJpbnRUb2tlbiAoU1RSSU5HX1RPS0VOIChTVFJfRFBfU0VDX1BI QVNFKSwgRWxhcHNlZFRpbWUpOw0KPiAtICB9DQo+IC0NCj4gLSAgLy8gcHJpbnQgUEVJIHBoYXNl IGR1cmF0aW9uIHRpbWUNCj4gLSAgLy8NCj4gLSAgaWYgKFBlaVRpbWUgPiAwKSB7DQo+IC0gICAg RWxhcHNlZFRpbWUgPSBEaXZVNjR4MzIgKA0KPiAtICAgICAgICAgICAgICAgICAgICBQZWlUaW1l LA0KPiAtICAgICAgICAgICAgICAgICAgICAoVUlOVDMyKVRpbWVySW5mby5GcmVxdWVuY3kNCj4g LSAgICAgICAgICAgICAgICAgICAgKTsNCj4gLSAgICBUb3RhbCArPSBFbGFwc2VkVGltZTsNCj4g LSAgICBQcmludFRva2VuIChTVFJJTkdfVE9LRU4gKFNUUl9EUF9QSEFTRV9EVVJBVElPTiksIEFM aXRfUEVJLA0KPiBFbGFwc2VkVGltZSk7DQo+IC0gIH0NCj4gLQ0KPiAtICAvLyBwcmludCBEWEUg cGhhc2UgZHVyYXRpb24gdGltZQ0KPiAtICAvLw0KPiAtICBpZiAoRHhlVGltZSA+IDApIHsNCj4g LSAgICBFbGFwc2VkVGltZSA9IERpdlU2NHgzMiAoDQo+IC0gICAgICAgICAgICAgICAgICAgIER4 ZVRpbWUsDQo+IC0gICAgICAgICAgICAgICAgICAgIChVSU5UMzIpVGltZXJJbmZvLkZyZXF1ZW5j eQ0KPiAtICAgICAgICAgICAgICAgICAgICApOw0KPiAtICAgIFRvdGFsICs9IEVsYXBzZWRUaW1l Ow0KPiAtICAgIFByaW50VG9rZW4gKFNUUklOR19UT0tFTiAoU1RSX0RQX1BIQVNFX0RVUkFUSU9O KSwgQUxpdF9EWEUsDQo+IEVsYXBzZWRUaW1lKTsNCj4gLSAgfQ0KPiAtDQo+IC0gIC8vIHByaW50 IEJEUyBwaGFzZSBkdXJhdGlvbiB0aW1lDQo+IC0gIC8vDQo+IC0gIGlmIChCZHNUaW1lID4gMCkg ew0KPiAtICAgIEVsYXBzZWRUaW1lID0gRGl2VTY0eDMyICgNCj4gLSAgICAgICAgICAgICAgICAg ICAgQmRzVGltZSwNCj4gLSAgICAgICAgICAgICAgICAgICAgKFVJTlQzMilUaW1lckluZm8uRnJl cXVlbmN5DQo+IC0gICAgICAgICAgICAgICAgICAgICk7DQo+IC0gICAgVG90YWwgKz0gRWxhcHNl ZFRpbWU7DQo+IC0gICAgUHJpbnRUb2tlbiAoU1RSSU5HX1RPS0VOIChTVFJfRFBfUEhBU0VfRFVS QVRJT04pLCBBTGl0X0JEUywNCj4gRWxhcHNlZFRpbWUpOw0KPiAtICB9DQo+IC0NCj4gLSAgaWYg KEJkc1RpbWVvdXRWYWx1ZSA+IDApIHsNCj4gLSAgICBFbGFwc2VkVGltZSA9IERpdlU2NHgzMiAo DQo+IC0gICAgICAgICAgICAgICAgICAgIEJkc1RpbWVvdXRWYWx1ZSwNCj4gLSAgICAgICAgICAg ICAgICAgICAgKFVJTlQzMilUaW1lckluZm8uRnJlcXVlbmN5DQo+IC0gICAgICAgICAgICAgICAg ICAgICk7DQo+IC0gICAgUHJpbnRUb2tlbiAoU1RSSU5HX1RPS0VOIChTVFJfRFBfUEhBU0VfQkRT VE8pLCBBTGl0X0Jkc1RPLA0KPiBFbGFwc2VkVGltZSk7DQo+IC0gIH0NCj4gLQ0KPiAtICBQcmlu dFRva2VuIChTVFJJTkdfVE9LRU4gKFNUUl9EUF9UT1RBTF9EVVJBVElPTiksIFRvdGFsKTsNCj4g LX0NCj4gLQ0KPiAtLyoqDQo+IC0gIEdhdGhlciBhbmQgcHJpbnQgSGFuZGxlIGRhdGEuDQo+IC0N Cj4gLSAgQHBhcmFtW2luXSAgICBFeGNsdWRlRmxhZyAgIFRSVUUgdG8gZXhjbHVkZSBpbmRpdmlk dWFsIEN1bXVsYXRpdmUgaXRlbXMNCj4gZnJvbSBkaXNwbGF5Lg0KPiAtDQo+IC0gIEByZXR2YWwg RUZJX1NVQ0NFU1MgICAgICAgICAgICAgVGhlIG9wZXJhdGlvbiB3YXMgc3VjY2Vzc2Z1bC4NCj4g LSAgQHJldHZhbCBFRklfQUJPUlRFRCAgICAgICAgICAgICBUaGUgdXNlciBhYm9ydHMgdGhlIG9w ZXJhdGlvbi4NCj4gLSAgQHJldHVybiBPdGhlcnMgICAgICAgICAgICAgICAgICBmcm9tIGEgY2Fs bCB0byBnQlMtPkxvY2F0ZUhhbmRsZUJ1ZmZlcigpLg0KPiAtKiovDQo+IC1FRklfU1RBVFVTDQo+ IC1Qcm9jZXNzSGFuZGxlcygNCj4gLSAgSU4gQk9PTEVBTiAgICAgIEV4Y2x1ZGVGbGFnDQo+IC0g ICkNCj4gLXsNCj4gLSAgTUVBU1VSRU1FTlRfUkVDT1JEICAgICAgICBNZWFzdXJlbWVudDsNCj4g LSAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICBFbGFwc2VkVGltZTsNCj4gLSAgVUlOVDY0ICAg ICAgICAgICAgICAgICAgICBEdXJhdGlvbjsNCj4gLSAgRUZJX0hBTkRMRSAgICAgICAgICAgICAg ICAqSGFuZGxlQnVmZmVyOw0KPiAtICBFRklfU1RSSU5HICAgICAgICAgICAgICAgIFN0cmluZ1B0 cjsNCj4gLSAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBJbmRleDsNCj4gLSAgVUlOVE4gICAg ICAgICAgICAgICAgICAgICBMb2dFbnRyeUtleTsNCj4gLSAgVUlOVE4gICAgICAgICAgICAgICAg ICAgICBDb3VudDsNCj4gLSAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBIYW5kbGVDb3VudDsN Cj4gLSAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICBTdGF0dXM7DQo+IC0gIEVGSV9TVFJJTkcg ICAgICAgICAgICAgICAgU3RyaW5nUHRyVW5rbm93bjsNCj4gLQ0KPiAtICBTdHJpbmdQdHJVbmtu b3duID0gSGlpR2V0U3RyaW5nIChnSGlpSGFuZGxlLCBTVFJJTkdfVE9LRU4NCj4gKFNUUl9BTElU X1VOS05PV04pLCBOVUxMKTsNCj4gLSAgU3RyaW5nUHRyID0gSGlpR2V0U3RyaW5nIChnSGlpSGFu ZGxlLCBTVFJJTkdfVE9LRU4NCj4gKFNUUl9EUF9TRUNUSU9OX0RSSVZFUlMpLCBOVUxMKTsNCj4g LSAgUHJpbnRUb2tlbiggU1RSSU5HX1RPS0VOIChTVFJfRFBfU0VDVElPTl9IRUFERVIpLA0KPiAt ICAgICAgICAgICAgICAoU3RyaW5nUHRyID09IE5VTEwpID8gU3RyaW5nUHRyVW5rbm93biA6IFN0 cmluZ1B0cik7DQo+IC0gIEZyZWVQb29sIChTdHJpbmdQdHIpOw0KPiAtICBGcmVlUG9vbCAoU3Ry aW5nUHRyVW5rbm93bik7DQo+IC0NCj4gLSAgU3RhdHVzID0gZ0JTLT5Mb2NhdGVIYW5kbGVCdWZm ZXIgKEFsbEhhbmRsZXMsIE5VTEwsIE5VTEwsDQo+ICZIYW5kbGVDb3VudCwgJkhhbmRsZUJ1ZmZl cik7DQo+IC0gIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gLSAgICBQcmludFRva2VuIChT VFJJTkdfVE9LRU4gKFNUUl9EUF9IQU5ETEVTX0VSUk9SKSwgU3RhdHVzKTsNCj4gLSAgfQ0KPiAt ICBlbHNlIHsNCj4gLSNpZiBEUF9ERUJVRyA9PSAyDQo+IC0gICAgUHJpbnQgKEwiVGhlcmUgYXJl ICUsZCBIYW5kbGVzIGRlZmluZWQuXG4iLCAoU2l6ZSAvDQo+IHNpemVvZihIYW5kbGVCdWZmZXJb MF0pKSk7DQo+IC0jZW5kaWYNCj4gLQ0KPiAtICAgIGlmIChtU2hvd0lkKSB7DQo+IC0gICAgICBQ cmludFRva2VuIChTVFJJTkdfVE9LRU4gKFNUUl9EUF9IQU5ETEVfU0VDVElPTjIpICk7DQo+IC0g ICAgfSBlbHNlIHsNCj4gLSAgICAgIFByaW50VG9rZW4gKFNUUklOR19UT0tFTiAoU1RSX0RQX0hB TkRMRV9TRUNUSU9OKSApOw0KPiAtICAgIH0NCj4gLSAgICBQcmludFRva2VuIChTVFJJTkdfVE9L RU4gKFNUUl9EUF9EQVNIRVMpICk7DQo+IC0NCj4gLSAgICBMb2dFbnRyeUtleSA9IDA7DQo+IC0g ICAgQ291bnQgICA9IDA7DQo+IC0gICAgd2hpbGUgKChMb2dFbnRyeUtleSA9IEdldFBlcmZvcm1h bmNlTWVhc3VyZW1lbnRFeCAoDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nRW50 cnlLZXksDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJk1lYXN1cmVtZW50LkhhbmRs ZSwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAmTWVhc3VyZW1lbnQuVG9rZW4sDQo+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJk1lYXN1cmVtZW50Lk1vZHVsZSwNCj4gLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAmTWVhc3VyZW1lbnQuU3RhcnRUaW1lU3RhbXAsDQo+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJk1lYXN1cmVtZW50LkVuZFRpbWVTdGFtcCwN Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAmTWVhc3VyZW1lbnQuSWRlbnRpZmllcikp ICE9IDApDQo+IC0gICAgew0KPiAtICAgICAgQ291bnQrKzsNCj4gLSAgICAgIER1cmF0aW9uID0g R2V0RHVyYXRpb24gKCZNZWFzdXJlbWVudCk7DQo+IC0gICAgICBFbGFwc2VkVGltZSA9IER1cmF0 aW9uSW5NaWNyb1NlY29uZHMgKCBEdXJhdGlvbiApOw0KPiAtICAgICAgaWYgKChFbGFwc2VkVGlt ZSA8IG1JbnRlcmVzdFRocmVzaG9sZCkgICAgICAgICAgICAgICAgIHx8DQo+IC0gICAgICAgICAg KE1lYXN1cmVtZW50LkVuZFRpbWVTdGFtcCA9PSAwKSAgICAgICAgICAgICAgICAgICAgfHwNCj4g LSAgICAgICAgICAoTWVhc3VyZW1lbnQuSGFuZGxlID09IE5VTEwpICAgICAgICAgICAgICAgICAg ICAgICB8fA0KPiAtICAgICAgICAgICgoRXhjbHVkZUZsYWcpICYmIChHZXRDdW11bGF0aXZlSXRl bSgmTWVhc3VyZW1lbnQpID49IDApKQ0KPiAtICAgICAgICAgKSB7IC8vIElnbm9yZSAidW5pbnRl cmVzdGluZyIgb3IgZXhjbHVkZWQgcmVjb3Jkcw0KPiAtICAgICAgICBjb250aW51ZTsNCj4gLSAg ICAgIH0NCj4gLSAgICAgIG1HYXVnZVN0cmluZ1swXSA9IDA7ICAgIC8vIEVtcHR5IGRyaXZlciBu YW1lIGJ5IGRlZmF1bHQNCj4gLSAgICAgIEFzY2lpU3RyVG9Vbmljb2RlU3RyUyAoTWVhc3VyZW1l bnQuVG9rZW4sIG1Vbmljb2RlVG9rZW4sDQo+IEFSUkFZX1NJWkUgKG1Vbmljb2RlVG9rZW4pKTsN Cj4gLSAgICAgIC8vIFNlZSBpZiB0aGUgSGFuZGxlIGlzIGluIHRoZSBIYW5kbGVCdWZmZXINCj4g LSAgICAgIGZvciAoSW5kZXggPSAwOyBJbmRleCA8IEhhbmRsZUNvdW50OyBJbmRleCsrKSB7DQo+ IC0gICAgICAgIGlmIChNZWFzdXJlbWVudC5IYW5kbGUgPT0gSGFuZGxlQnVmZmVyW0luZGV4XSkg ew0KPiAtICAgICAgICAgIEdldE5hbWVGcm9tSGFuZGxlIChIYW5kbGVCdWZmZXJbSW5kZXhdKTsg Ly8gTmFtZSBpcyBwdXQgaW50bw0KPiBtR2F1Z2VTdHJpbmcNCj4gLSAgICAgICAgICBicmVhazsN Cj4gLSAgICAgICAgfQ0KPiAtICAgICAgfQ0KPiAtICAgICAgLy8gRW5zdXJlIHRoYXQgdGhlIGFy Z3VtZW50IHN0cmluZ3MgYXJlIG5vdCB0b28gbG9uZy4NCj4gLSAgICAgIG1HYXVnZVN0cmluZ1tE UF9HQVVHRV9TVFJJTkdfTEVOR1RIXSA9IDA7DQo+IC0gICAgICBtVW5pY29kZVRva2VuWzExXSA9 IDA7DQo+IC0gICAgICBpZiAobUdhdWdlU3RyaW5nWzBdICE9IDApIHsNCj4gLSAgICAgICAgLy8g RGlzcGxheSB0aGUgcmVjb3JkIGlmIGl0IGhhcyBhIHZhbGlkIGhhbmRsZS4NCj4gLSAgICAgICAg aWYgKG1TaG93SWQpIHsNCj4gLSAgICAgICAgICBQcmludFRva2VuICgNCj4gLSAgICAgICAgICAg IFNUUklOR19UT0tFTiAoU1RSX0RQX0hBTkRMRV9WQVJTMiksDQo+IC0gICAgICAgICAgICBDb3Vu dCwgICAgICAvLyAxIGJhc2VkLCBXaGljaCBtZWFzdXJlbWVudCByZWNvcmQgaXMgYmVpbmcgcHJp bnRlZA0KPiAtICAgICAgICAgICAgSW5kZXggKyAxLCAgLy8gMSBiYXNlZCwgV2hpY2ggaGFuZGxl IGlzIGJlaW5nIHByaW50ZWQNCj4gLSAgICAgICAgICAgIG1HYXVnZVN0cmluZywNCj4gLSAgICAg ICAgICAgIG1Vbmljb2RlVG9rZW4sDQo+IC0gICAgICAgICAgICBFbGFwc2VkVGltZSwNCj4gLSAg ICAgICAgICAgIE1lYXN1cmVtZW50LklkZW50aWZpZXINCj4gLSAgICAgICAgICApOw0KPiAtICAg ICAgICB9IGVsc2Ugew0KPiAtICAgICAgICAgIFByaW50VG9rZW4gKA0KPiAtICAgICAgICAgICAg U1RSSU5HX1RPS0VOIChTVFJfRFBfSEFORExFX1ZBUlMpLA0KPiAtICAgICAgICAgICAgQ291bnQs ICAgICAgLy8gMSBiYXNlZCwgV2hpY2ggbWVhc3VyZW1lbnQgcmVjb3JkIGlzIGJlaW5nIHByaW50 ZWQNCj4gLSAgICAgICAgICAgIEluZGV4ICsgMSwgIC8vIDEgYmFzZWQsIFdoaWNoIGhhbmRsZSBp cyBiZWluZyBwcmludGVkDQo+IC0gICAgICAgICAgICBtR2F1Z2VTdHJpbmcsDQo+IC0gICAgICAg ICAgICBtVW5pY29kZVRva2VuLA0KPiAtICAgICAgICAgICAgRWxhcHNlZFRpbWUNCj4gLSAgICAg ICAgICApOw0KPiAtICAgICAgICB9DQo+IC0gICAgICB9DQo+IC0gICAgICBpZiAoU2hlbGxHZXRF eGVjdXRpb25CcmVha0ZsYWcgKCkpIHsNCj4gLSAgICAgICAgU3RhdHVzID0gRUZJX0FCT1JURUQ7 DQo+IC0gICAgICAgIGJyZWFrOw0KPiAtICAgICAgfQ0KPiAtICAgIH0NCj4gLSAgfQ0KPiAtICBp ZiAoSGFuZGxlQnVmZmVyICE9IE5VTEwpIHsNCj4gLSAgICBGcmVlUG9vbCAoSGFuZGxlQnVmZmVy KTsNCj4gLSAgfQ0KPiAtICByZXR1cm4gU3RhdHVzOw0KPiAtfQ0KPiAtDQo+IC0vKioNCj4gLSAg R2F0aGVyIGFuZCBwcmludCBQRUlNIGRhdGEuDQo+IC0NCj4gLSAgT25seSBwcmludHMgY29tcGxl dGUgUEVJTSByZWNvcmRzDQo+IC0NCj4gLSAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAg VGhlIG9wZXJhdGlvbiB3YXMgc3VjY2Vzc2Z1bC4NCj4gLSAgQHJldHZhbCBFRklfQUJPUlRFRCAg ICAgICAgICAgVGhlIHVzZXIgYWJvcnRzIHRoZSBvcGVyYXRpb24uDQo+IC0qKi8NCj4gLUVGSV9T VEFUVVMNCj4gLVByb2Nlc3NQZWltcygNCj4gLSAgVk9JRA0KPiAtKQ0KPiAtew0KPiAtICBNRUFT VVJFTUVOVF9SRUNPUkQgICAgICAgIE1lYXN1cmVtZW50Ow0KPiAtICBVSU5UNjQgICAgICAgICAg ICAgICAgICAgIER1cmF0aW9uOw0KPiAtICBVSU5UNjQgICAgICAgICAgICAgICAgICAgIEVsYXBz ZWRUaW1lOw0KPiAtICBFRklfU1RSSU5HICAgICAgICAgICAgICAgIFN0cmluZ1B0cjsNCj4gLSAg VUlOVE4gICAgICAgICAgICAgICAgICAgICBMb2dFbnRyeUtleTsNCj4gLSAgVUlOVE4gICAgICAg ICAgICAgICAgICAgICBUSW5kZXg7DQo+IC0gIEVGSV9TVFJJTkcgICAgICAgICAgICAgICAgU3Ry aW5nUHRyVW5rbm93bjsNCj4gLSAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ IC0NCj4gLSAgU3RhdHVzID0gRUZJX1NVQ0NFU1M7DQo+IC0NCj4gLSAgU3RyaW5nUHRyVW5rbm93 biA9IEhpaUdldFN0cmluZyAoZ0hpaUhhbmRsZSwgU1RSSU5HX1RPS0VODQo+IChTVFJfQUxJVF9V TktOT1dOKSwgTlVMTCk7DQo+IC0gIFN0cmluZ1B0ciA9IEhpaUdldFN0cmluZyAoZ0hpaUhhbmRs ZSwgU1RSSU5HX1RPS0VODQo+IChTVFJfRFBfU0VDVElPTl9QRUlNUyksIE5VTEwpOw0KPiAtICBQ cmludFRva2VuKCBTVFJJTkdfVE9LRU4gKFNUUl9EUF9TRUNUSU9OX0hFQURFUiksDQo+IC0gICAg ICAgICAgICAgIChTdHJpbmdQdHIgPT0gTlVMTCkgPyBTdHJpbmdQdHJVbmtub3duIDogU3RyaW5n UHRyKTsNCj4gLSAgRnJlZVBvb2wgKFN0cmluZ1B0cik7DQo+IC0gIEZyZWVQb29sIChTdHJpbmdQ dHJVbmtub3duKTsNCj4gLQ0KPiAtICBpZiAobVNob3dJZCkgew0KPiAtICAgIFByaW50VG9rZW4g KFNUUklOR19UT0tFTiAoU1RSX0RQX1BFSU1fU0VDVElPTjIpKTsNCj4gLSAgfSBlbHNlIHsNCj4g LSAgICBQcmludFRva2VuIChTVFJJTkdfVE9LRU4gKFNUUl9EUF9QRUlNX1NFQ1RJT04pKTsNCj4g LSAgfQ0KPiAtICBQcmludFRva2VuIChTVFJJTkdfVE9LRU4gKFNUUl9EUF9EQVNIRVMpKTsNCj4g LSAgVEluZGV4ICA9IDA7DQo+IC0gIExvZ0VudHJ5S2V5ID0gMDsNCj4gLSAgd2hpbGUgKChMb2dF bnRyeUtleSA9IEdldFBlcmZvcm1hbmNlTWVhc3VyZW1lbnRFeCAoDQo+IC0gICAgICAgICAgICAg ICAgICAgICAgICAgIExvZ0VudHJ5S2V5LA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAm TWVhc3VyZW1lbnQuSGFuZGxlLA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAmTWVhc3Vy ZW1lbnQuVG9rZW4sDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICZNZWFzdXJlbWVudC5N b2R1bGUsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICZNZWFzdXJlbWVudC5TdGFydFRp bWVTdGFtcCwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgJk1lYXN1cmVtZW50LkVuZFRp bWVTdGFtcCwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgJk1lYXN1cmVtZW50LklkZW50 aWZpZXIpKSAhPSAwKQ0KPiAtICB7DQo+IC0gICAgVEluZGV4Kys7DQo+IC0gICAgaWYgKChNZWFz dXJlbWVudC5FbmRUaW1lU3RhbXAgPT0gMCkgfHwNCj4gLSAgICAgICAgKEFzY2lpU3RybkNtcCAo TWVhc3VyZW1lbnQuVG9rZW4sIEFMaXRfUEVJTSwNCj4gUEVSRl9UT0tFTl9MRU5HVEgpICE9IDAp DQo+IC0gICAgICAgKSB7DQo+IC0gICAgICBjb250aW51ZTsNCj4gLSAgICB9DQo+IC0NCj4gLSAg ICBEdXJhdGlvbiA9IEdldER1cmF0aW9uICgmTWVhc3VyZW1lbnQpOw0KPiAtICAgIEVsYXBzZWRU aW1lID0gRHVyYXRpb25Jbk1pY3JvU2Vjb25kcyAoIER1cmF0aW9uICk7ICAvLyBDYWxjdWxhdGUg ZWxhcHNlZA0KPiB0aW1lIGluIG1pY3Jvc2Vjb25kcw0KPiAtICAgIGlmIChFbGFwc2VkVGltZSA+ PSBtSW50ZXJlc3RUaHJlc2hvbGQpIHsNCj4gLSAgICAgIC8vIFBFSU0gRklMRSBIYW5kbGUgaXMg dGhlIHN0YXJ0IGFkZHJlc3Mgb2YgaXRzIEZGUyBmaWxlIHRoYXQgY29udGFpbnMgaXRzIGZpbGUN Cj4gZ3VpZC4NCj4gLSAgICAgIGlmIChtU2hvd0lkKSB7DQo+IC0gICAgICAgIFByaW50VG9rZW4g KFNUUklOR19UT0tFTiAoU1RSX0RQX1BFSU1fVkFSUzIpLA0KPiAtICAgICAgICAgICAgICBUSW5k ZXgsICAgLy8gMSBiYXNlZCwgV2hpY2ggbWVhc3VyZW1lbnQgcmVjb3JkIGlzIGJlaW5nIHByaW50 ZWQNCj4gLSAgICAgICAgICAgICAgTWVhc3VyZW1lbnQuSGFuZGxlLCAgLy8gYmFzZSBhZGRyZXNz DQo+IC0gICAgICAgICAgICAgIE1lYXN1cmVtZW50LkhhbmRsZSwgIC8vIGZpbGUgZ3VpZA0KPiAt ICAgICAgICAgICAgICBFbGFwc2VkVGltZSwNCj4gLSAgICAgICAgICAgICAgTWVhc3VyZW1lbnQu SWRlbnRpZmllcg0KPiAtICAgICAgICApOw0KPiAtICAgICAgfSBlbHNlIHsNCj4gLSAgICAgICAg UHJpbnRUb2tlbiAoU1RSSU5HX1RPS0VOIChTVFJfRFBfUEVJTV9WQVJTKSwNCj4gLSAgICAgICAg ICAgICAgVEluZGV4LCAgIC8vIDEgYmFzZWQsIFdoaWNoIG1lYXN1cmVtZW50IHJlY29yZCBpcyBi ZWluZyBwcmludGVkDQo+IC0gICAgICAgICAgICAgIE1lYXN1cmVtZW50LkhhbmRsZSwgIC8vIGJh c2UgYWRkcmVzcw0KPiAtICAgICAgICAgICAgICBNZWFzdXJlbWVudC5IYW5kbGUsICAvLyBmaWxl IGd1aWQNCj4gLSAgICAgICAgICAgICAgRWxhcHNlZFRpbWUNCj4gLSAgICAgICAgKTsNCj4gLSAg ICAgIH0NCj4gLSAgICB9DQo+IC0gICAgaWYgKFNoZWxsR2V0RXhlY3V0aW9uQnJlYWtGbGFnICgp KSB7DQo+IC0gICAgICBTdGF0dXMgPSBFRklfQUJPUlRFRDsNCj4gLSAgICAgIGJyZWFrOw0KPiAt ICAgIH0NCj4gLSAgfQ0KPiAtICByZXR1cm4gU3RhdHVzOw0KPiAtfQ0KPiAtDQo+IC0vKioNCj4g LSAgR2F0aGVyIGFuZCBwcmludCBnbG9iYWwgZGF0YS4NCj4gLQ0KPiAtICBTdHJpcHMgb3V0IGlu Y29tcGxldGUgb3IgIkV4ZWN1dGlvbiBQaGFzZSIgcmVjb3Jkcw0KPiAtICBPbmx5IHByaW50cyBy ZWNvcmRzIHdoZXJlIEhhbmRsZSBpcyBOVUxMDQo+IC0gIEluY3JlbWVudCBUSW5kZXggZm9yIGV2 ZXJ5IHJlY29yZCwgZXZlbiBza2lwcGVkIG9uZXMsIHNvIHRoYXQgd2UgaGF2ZSBhbg0KPiAtICBp bmRpY2F0aW9uIG9mIGV2ZXJ5IG1lYXN1cmVtZW50IHJlY29yZCB0YWtlbi4NCj4gLQ0KPiAtICBA cmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgb3BlcmF0aW9uIHdhcyBzdWNjZXNzZnVs Lg0KPiAtICBAcmV0dmFsIEVGSV9BQk9SVEVEICAgICAgICAgICBUaGUgdXNlciBhYm9ydHMgdGhl IG9wZXJhdGlvbi4NCj4gLSoqLw0KPiAtRUZJX1NUQVRVUw0KPiAtUHJvY2Vzc0dsb2JhbCgNCj4g LSAgVk9JRA0KPiAtKQ0KPiAtew0KPiAtICBNRUFTVVJFTUVOVF9SRUNPUkQgICAgICAgIE1lYXN1 cmVtZW50Ow0KPiAtICBVSU5UNjQgICAgICAgICAgICAgICAgICAgIER1cmF0aW9uOw0KPiAtICBV SU5UNjQgICAgICAgICAgICAgICAgICAgIEVsYXBzZWRUaW1lOw0KPiAtICBFRklfU1RSSU5HICAg ICAgICAgICAgICAgIFN0cmluZ1B0cjsNCj4gLSAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBM b2dFbnRyeUtleTsNCj4gLSAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBJbmRleDsgICAgICAg IC8vIEluZGV4LCBvciBudW1iZXIsIG9mIHRoZSBtZWFzdXJlbWVudA0KPiByZWNvcmQgYmVpbmcg cHJvY2Vzc2VkDQo+IC0gIEVGSV9TVFJJTkcgICAgICAgICAgICAgICAgU3RyaW5nUHRyVW5rbm93 bjsNCj4gLSAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICBTdGF0dXM7DQo+IC0NCj4gLSAgU3Rh dHVzID0gRUZJX1NVQ0NFU1M7DQo+IC0NCj4gLSAgU3RyaW5nUHRyVW5rbm93biA9IEhpaUdldFN0 cmluZyAoZ0hpaUhhbmRsZSwgU1RSSU5HX1RPS0VODQo+IChTVFJfQUxJVF9VTktOT1dOKSwgTlVM TCk7DQo+IC0gIFN0cmluZ1B0ciA9IEhpaUdldFN0cmluZyAoZ0hpaUhhbmRsZSwgU1RSSU5HX1RP S0VODQo+IChTVFJfRFBfU0VDVElPTl9HRU5FUkFMKSwgTlVMTCk7DQo+IC0gIFByaW50VG9rZW4o IFNUUklOR19UT0tFTiAoU1RSX0RQX1NFQ1RJT05fSEVBREVSKSwNCj4gLSAgICAgICAgICAgICAg KFN0cmluZ1B0ciA9PSBOVUxMKSA/IFN0cmluZ1B0clVua25vd246IFN0cmluZ1B0cik7DQo+IC0g IEZyZWVQb29sIChTdHJpbmdQdHIpOw0KPiAtICBGcmVlUG9vbCAoU3RyaW5nUHRyVW5rbm93bik7 DQo+IC0NCj4gLSAgaWYgKG1TaG93SWQpIHsNCj4gLSAgICBQcmludFRva2VuIChTVFJJTkdfVE9L RU4gKFNUUl9EUF9HTE9CQUxfU0VDVElPTjIpKTsNCj4gLSAgfSBlbHNlIHsNCj4gLSAgICBQcmlu dFRva2VuIChTVFJJTkdfVE9LRU4gKFNUUl9EUF9HTE9CQUxfU0VDVElPTikpOw0KPiAtICB9DQo+ IC0gIFByaW50VG9rZW4gKFNUUklOR19UT0tFTiAoU1RSX0RQX0RBU0hFUykpOw0KPiAtDQo+IC0g IEluZGV4ID0gMTsNCj4gLSAgTG9nRW50cnlLZXkgPSAwOw0KPiAtDQo+IC0gIHdoaWxlICgoTG9n RW50cnlLZXkgPSBHZXRQZXJmb3JtYW5jZU1lYXN1cmVtZW50RXggKA0KPiAtICAgICAgICAgICAg ICAgICAgICAgICAgICBMb2dFbnRyeUtleSwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg Jk1lYXN1cmVtZW50LkhhbmRsZSwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgJk1lYXN1 cmVtZW50LlRva2VuLA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAmTWVhc3VyZW1lbnQu TW9kdWxlLA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAmTWVhc3VyZW1lbnQuU3RhcnRU aW1lU3RhbXAsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICZNZWFzdXJlbWVudC5FbmRU aW1lU3RhbXAsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICZNZWFzdXJlbWVudC5JZGVu dGlmaWVyKSkgIT0gMCkNCj4gLSAgew0KPiAtICAgIEFzY2lpU3RyVG9Vbmljb2RlU3RyUyAoTWVh c3VyZW1lbnQuTW9kdWxlLCBtR2F1Z2VTdHJpbmcsDQo+IEFSUkFZX1NJWkUgKG1HYXVnZVN0cmlu ZykpOw0KPiAtICAgIEFzY2lpU3RyVG9Vbmljb2RlU3RyUyAoTWVhc3VyZW1lbnQuVG9rZW4sIG1V bmljb2RlVG9rZW4sDQo+IEFSUkFZX1NJWkUgKG1Vbmljb2RlVG9rZW4pKTsNCj4gLSAgICBtR2F1 Z2VTdHJpbmdbMjVdID0gMDsNCj4gLSAgICBtVW5pY29kZVRva2VuWzMxXSA9IDA7DQo+IC0gICAg aWYgKCAhICggSXNQaGFzZSggJk1lYXN1cmVtZW50KSAgfHwNCj4gLSAgICAgICAgKE1lYXN1cmVt ZW50LkhhbmRsZSAhPSBOVUxMKSAgICAgIHx8DQo+IC0gICAgICAgIChNZWFzdXJlbWVudC5FbmRU aW1lU3RhbXAgPT0gMCkNCj4gLSAgICAgICAgKSkNCj4gLSAgICB7DQo+IC0gICAgICBEdXJhdGlv biA9IEdldER1cmF0aW9uICgmTWVhc3VyZW1lbnQpOw0KPiAtICAgICAgRWxhcHNlZFRpbWUgPSBE dXJhdGlvbkluTWljcm9TZWNvbmRzICggRHVyYXRpb24gKTsNCj4gLSAgICAgIGlmIChFbGFwc2Vk VGltZSA+PSBtSW50ZXJlc3RUaHJlc2hvbGQpIHsNCj4gLSAgICAgICAgaWYgKG1TaG93SWQpIHsN Cj4gLSAgICAgICAgICBQcmludFRva2VuICgNCj4gLSAgICAgICAgICAgIFNUUklOR19UT0tFTiAo U1RSX0RQX0dMT0JBTF9WQVJTMiksDQo+IC0gICAgICAgICAgICBJbmRleCwNCj4gLSAgICAgICAg ICAgIG1HYXVnZVN0cmluZywNCj4gLSAgICAgICAgICAgIG1Vbmljb2RlVG9rZW4sDQo+IC0gICAg ICAgICAgICBFbGFwc2VkVGltZSwNCj4gLSAgICAgICAgICAgIE1lYXN1cmVtZW50LklkZW50aWZp ZXINCj4gLSAgICAgICAgICAgICk7DQo+IC0gICAgICAgIH0gZWxzZSB7DQo+IC0gICAgICAgICAg IFByaW50VG9rZW4gKA0KPiAtICAgICAgICAgICAgU1RSSU5HX1RPS0VOIChTVFJfRFBfR0xPQkFM X1ZBUlMpLA0KPiAtICAgICAgICAgICAgSW5kZXgsDQo+IC0gICAgICAgICAgICBtR2F1Z2VTdHJp bmcsDQo+IC0gICAgICAgICAgICBtVW5pY29kZVRva2VuLA0KPiAtICAgICAgICAgICAgRWxhcHNl ZFRpbWUNCj4gLSAgICAgICAgICAgICk7DQo+IC0gICAgICAgIH0NCj4gLSAgICAgIH0NCj4gLSAg ICB9DQo+IC0gICAgaWYgKFNoZWxsR2V0RXhlY3V0aW9uQnJlYWtGbGFnICgpKSB7DQo+IC0gICAg ICBTdGF0dXMgPSBFRklfQUJPUlRFRDsNCj4gLSAgICAgIGJyZWFrOw0KPiAtICAgIH0NCj4gLSAg ICBJbmRleCsrOw0KPiAtICB9DQo+IC0gIHJldHVybiBTdGF0dXM7DQo+IC19DQo+IC0NCj4gLS8q Kg0KPiAtICBHYXRoZXIgYW5kIHByaW50IGN1bXVsYXRpdmUgZGF0YS4NCj4gLQ0KPiAtICBUcmF2 ZXJzZSB0aGUgbWVhc3VyZW1lbnQgcmVjb3JkcyBhbmQ6PEJSPg0KPiAtICBGb3IgZWFjaCByZWNv cmQgd2l0aCBhIFRva2VuIGxpc3RlZCBpbiB0aGUgQ3VtRGF0YSBhcnJheTo8QlI+DQo+IC0gICAg IC0gVXBkYXRlIHRoZSBpbnN0YW5jZSBjb3VudCBhbmQgdGhlIHRvdGFsLCBtaW5pbXVtLCBhbmQg bWF4aW11bQ0KPiBkdXJhdGlvbnMuDQo+IC0gIEZpbmFsbHksIHByaW50IHRoZSBnYXRoZXJlZCBj dW11bGF0aXZlIHN0YXRpc3RpY3MuDQo+IC0NCj4gLSAgQHBhcmFtW2luXSAgICBDdXN0b21DdW11 bGF0aXZlRGF0YSAgQSBwb2ludGVyIHRvIHRoZSBjdW10b20gY3VtdWxhdGl2ZQ0KPiBkYXRhLg0K PiAtDQo+IC0qKi8NCj4gLVZPSUQNCj4gLVByb2Nlc3NDdW11bGF0aXZlKA0KPiAtICBJTiBQRVJG X0NVTV9EQVRBICAgICAgICAgICAgICAgICAgKkN1c3RvbUN1bXVsYXRpdmVEYXRhIE9QVElPTkFM DQo+IC0gICkNCj4gLXsNCj4gLSAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICBBdmdEdXI7ICAg ICAgICAgLy8gdGhlIGNvbXB1dGVkIGF2ZXJhZ2UgZHVyYXRpb24NCj4gLSAgVUlOVDY0ICAgICAg ICAgICAgICAgICAgICBEdXI7DQo+IC0gIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgTWluRHVy Ow0KPiAtICBVSU5UNjQgICAgICAgICAgICAgICAgICAgIE1heER1cjsNCj4gLSAgRUZJX1NUUklO RyAgICAgICAgICAgICAgICBTdHJpbmdQdHI7DQo+IC0gIFVJTlROICAgICAgICAgICAgICAgICAg ICAgVEluZGV4Ow0KPiAtICBFRklfU1RSSU5HICAgICAgICAgICAgICAgIFN0cmluZ1B0clVua25v d247DQo+IC0NCj4gLSAgU3RyaW5nUHRyVW5rbm93biA9IEhpaUdldFN0cmluZyAoZ0hpaUhhbmRs ZSwgU1RSSU5HX1RPS0VODQo+IChTVFJfQUxJVF9VTktOT1dOKSwgTlVMTCk7DQo+IC0gIFN0cmlu Z1B0ciA9IEhpaUdldFN0cmluZyAoZ0hpaUhhbmRsZSwgU1RSSU5HX1RPS0VODQo+IChTVFJfRFBf U0VDVElPTl9DVU1VTEFUSVZFKSwgTlVMTCk7DQo+IC0gIFByaW50VG9rZW4oIFNUUklOR19UT0tF TiAoU1RSX0RQX1NFQ1RJT05fSEVBREVSKSwNCj4gLSAgICAgICAgICAgICAgKFN0cmluZ1B0ciA9 PSBOVUxMKSA/IFN0cmluZ1B0clVua25vd246IFN0cmluZ1B0cik7DQo+IC0gIEZyZWVQb29sIChT dHJpbmdQdHIpOw0KPiAtICBGcmVlUG9vbCAoU3RyaW5nUHRyVW5rbm93bik7DQo+IC0NCj4gLSAg UHJpbnRUb2tlbiAoU1RSSU5HX1RPS0VOIChTVFJfRFBfQ1VNVUxBVElWRV9TRUNUXzEpKTsNCj4g LSAgUHJpbnRUb2tlbiAoU1RSSU5HX1RPS0VOIChTVFJfRFBfQ1VNVUxBVElWRV9TRUNUXzIpKTsN Cj4gLSAgUHJpbnRUb2tlbiAoU1RSSU5HX1RPS0VOIChTVFJfRFBfREFTSEVTKSk7DQo+IC0NCj4g LSAgZm9yICggVEluZGV4ID0gMDsgVEluZGV4IDwgTnVtQ3VtOyArK1RJbmRleCkgew0KPiAtICAg IGlmIChDdW1EYXRhW1RJbmRleF0uQ291bnQgIT0gMCkgew0KPiAtICAgICAgQXZnRHVyID0gRGl2 VTY0eDMyIChDdW1EYXRhW1RJbmRleF0uRHVyYXRpb24sDQo+IEN1bURhdGFbVEluZGV4XS5Db3Vu dCk7DQo+IC0gICAgICBBdmdEdXIgPSBEdXJhdGlvbkluTWljcm9TZWNvbmRzKEF2Z0R1cik7DQo+ IC0gICAgICBEdXIgICAgPSBEdXJhdGlvbkluTWljcm9TZWNvbmRzKEN1bURhdGFbVEluZGV4XS5E dXJhdGlvbik7DQo+IC0gICAgICBNYXhEdXIgPSBEdXJhdGlvbkluTWljcm9TZWNvbmRzKEN1bURh dGFbVEluZGV4XS5NYXhEdXIpOw0KPiAtICAgICAgTWluRHVyID0gRHVyYXRpb25Jbk1pY3JvU2Vj b25kcyhDdW1EYXRhW1RJbmRleF0uTWluRHVyKTsNCj4gLQ0KPiAtICAgICAgUHJpbnRUb2tlbiAo U1RSSU5HX1RPS0VOIChTVFJfRFBfQ1VNVUxBVElWRV9TVEFUUyksDQo+IC0gICAgICAgICAgICAg ICAgICBDdW1EYXRhW1RJbmRleF0uTmFtZSwNCj4gLSAgICAgICAgICAgICAgICAgIEN1bURhdGFb VEluZGV4XS5Db3VudCwNCj4gLSAgICAgICAgICAgICAgICAgIER1ciwNCj4gLSAgICAgICAgICAg ICAgICAgIEF2Z0R1ciwNCj4gLSAgICAgICAgICAgICAgICAgIE1pbkR1ciwNCj4gLSAgICAgICAg ICAgICAgICAgIE1heER1cg0KPiAtICAgICAgICAgICAgICAgICApOw0KPiAtICAgIH0NCj4gLSAg fQ0KPiAtDQo+IC0gIC8vDQo+IC0gIC8vIFByaW50IHRoZSBjdXN0b20gY3VtdWxhdGl2ZSBkYXRh Lg0KPiAtICAvLw0KPiAtICBpZiAoQ3VzdG9tQ3VtdWxhdGl2ZURhdGEgIT0gTlVMTCkgew0KPiAt ICAgIGlmIChDdXN0b21DdW11bGF0aXZlRGF0YS0+Q291bnQgIT0gMCkgew0KPiAtICAgICAgQXZn RHVyID0gRGl2VTY0eDMyIChDdXN0b21DdW11bGF0aXZlRGF0YS0+RHVyYXRpb24sDQo+IEN1c3Rv bUN1bXVsYXRpdmVEYXRhLT5Db3VudCk7DQo+IC0gICAgICBBdmdEdXIgPSBEdXJhdGlvbkluTWlj cm9TZWNvbmRzIChBdmdEdXIpOw0KPiAtICAgICAgRHVyICAgID0gRHVyYXRpb25Jbk1pY3JvU2Vj b25kcyAoQ3VzdG9tQ3VtdWxhdGl2ZURhdGEtPkR1cmF0aW9uKTsNCj4gLSAgICAgIE1heER1ciA9 IER1cmF0aW9uSW5NaWNyb1NlY29uZHMgKEN1c3RvbUN1bXVsYXRpdmVEYXRhLT5NYXhEdXIpOw0K PiAtICAgICAgTWluRHVyID0gRHVyYXRpb25Jbk1pY3JvU2Vjb25kcyAoQ3VzdG9tQ3VtdWxhdGl2 ZURhdGEtPk1pbkR1cik7DQo+IC0gICAgfSBlbHNlIHsNCj4gLSAgICAgIEF2Z0R1ciA9IDA7DQo+ IC0gICAgICBEdXIgICAgPSAwOw0KPiAtICAgICAgTWF4RHVyID0gMDsNCj4gLSAgICAgIE1pbkR1 ciA9IDA7DQo+IC0gICAgfQ0KPiAtICAgIFByaW50VG9rZW4gKFNUUklOR19UT0tFTiAoU1RSX0RQ X0NVTVVMQVRJVkVfU1RBVFMpLA0KPiAtICAgICAgICAgICAgICAgIEN1c3RvbUN1bXVsYXRpdmVE YXRhLT5OYW1lLA0KPiAtICAgICAgICAgICAgICAgIEN1c3RvbUN1bXVsYXRpdmVEYXRhLT5Db3Vu dCwNCj4gLSAgICAgICAgICAgICAgICBEdXIsDQo+IC0gICAgICAgICAgICAgICAgQXZnRHVyLA0K PiAtICAgICAgICAgICAgICAgIE1pbkR1ciwNCj4gLSAgICAgICAgICAgICAgICBNYXhEdXINCj4g LSAgICAgICAgICAgICAgICApOw0KPiAtICB9DQo+IC19DQo+IGRpZmYgLS1naXQgYS9QZXJmb3Jt YW5jZVBrZy9EcF9BcHAvRHBVdGlsaXRpZXMuYw0KPiBiL1BlcmZvcm1hbmNlUGtnL0RwX0FwcC9E cFV0aWxpdGllcy5jDQo+IGRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCBkM2E5YjZl YWIzLi4wMDAwMDAwMDAwDQo+IC0tLSBhL1BlcmZvcm1hbmNlUGtnL0RwX0FwcC9EcFV0aWxpdGll cy5jDQo+ICsrKyAvZGV2L251bGwNCj4gQEAgLTEsNDg5ICswLDAgQEANCj4gLS8qKiBAZmlsZQ0K PiAtICBVdGlsaXR5IGZ1bmN0aW9ucyB1c2VkIGJ5IHRoZSBEcCBhcHBsaWNhdGlvbi4NCj4gLQ0K PiAtICBDb3B5cmlnaHQgKGMpIDIwMDkgLSAyMDE3LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJp Z2h0cyByZXNlcnZlZC48QlI+DQo+IC0gIChDKSBDb3B5cmlnaHQgMjAxNiBIZXdsZXR0IFBhY2th cmQgRW50ZXJwcmlzZSBEZXZlbG9wbWVudCBMUDxCUj4NCj4gLSAgVGhpcyBwcm9ncmFtIGFuZCB0 aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiAtICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZh aWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEDQo+IExpY2Vu c2UNCj4gLSAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0 ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZQ0KPiBmb3VuZCBhdA0KPiAtICBodHRwOi8vb3BlbnNv dXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+IC0NCj4gLSAgVEhFIFBST0dSQU0g SVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyINCj4gQkFT SVMsDQo+IC0gIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJ TkQsIEVJVEhFUg0KPiBFWFBSRVNTIE9SIElNUExJRUQuDQo+IC0qKi8NCj4gLQ0KPiAtI2luY2x1 ZGUgPExpYnJhcnkvQmFzZUxpYi5oPg0KPiAtI2luY2x1ZGUgPExpYnJhcnkvQmFzZU1lbW9yeUxp Yi5oPg0KPiAtI2luY2x1ZGUgPExpYnJhcnkvTWVtb3J5QWxsb2NhdGlvbkxpYi5oPg0KPiAtI2lu Y2x1ZGUgPExpYnJhcnkvRGVidWdMaWIuaD4NCj4gLSNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlCb290 U2VydmljZXNUYWJsZUxpYi5oPg0KPiAtI2luY2x1ZGUgPExpYnJhcnkvUGVDb2ZmR2V0RW50cnlQ b2ludExpYi5oPg0KPiAtI2luY2x1ZGUgPExpYnJhcnkvUHJpbnRMaWIuaD4NCj4gLSNpbmNsdWRl IDxMaWJyYXJ5L0hpaUxpYi5oPg0KPiAtI2luY2x1ZGUgPExpYnJhcnkvUGNkTGliLmg+DQo+IC0j aW5jbHVkZSA8TGlicmFyeS9VZWZpTGliLmg+DQo+IC0jaW5jbHVkZSA8TGlicmFyeS9EZXZpY2VQ YXRoTGliLmg+DQo+IC0NCj4gLSNpbmNsdWRlIDxQaS9QaUZpcm13YXJlRmlsZS5oPg0KPiAtI2lu Y2x1ZGUgPExpYnJhcnkvRHhlU2VydmljZXNMaWIuaD4NCj4gLQ0KPiAtI2luY2x1ZGUgPFByb3Rv Y29sL0xvYWRlZEltYWdlLmg+DQo+IC0jaW5jbHVkZSA8UHJvdG9jb2wvRHJpdmVyQmluZGluZy5o Pg0KPiAtI2luY2x1ZGUgPFByb3RvY29sL0NvbXBvbmVudE5hbWUyLmg+DQo+IC0jaW5jbHVkZSA8 UHJvdG9jb2wvRGV2aWNlUGF0aC5oPg0KPiAtDQo+IC0jaW5jbHVkZSA8R3VpZC9QZXJmb3JtYW5j ZS5oPg0KPiAtDQo+IC0jaW5jbHVkZSAiRHAuaCINCj4gLSNpbmNsdWRlICJMaXRlcmFscy5oIg0K PiAtI2luY2x1ZGUgIkRwSW50ZXJuYWwuaCINCj4gLQ0KPiAtLyoqDQo+IC0gIFdyYXAgb3JpZ2lu YWwgRnJlZVBvb2wgdG8gY2hlY2sgTlVMTCBwb2ludGVyIGZpcnN0Lg0KPiAtDQo+IC0gIEBwYXJh bVtpbl0gICAgQnVmZmVyICAgICAgVGhlIHBvaW50ZXIgdG8gdGhlIGJ1ZmZlciB0byBmcmVlLg0K PiAtDQo+IC0qKi8NCj4gLVZPSUQNCj4gLVNhZmVGcmVlUG9vbCAoDQo+IC0gIElOIFZPSUQgICAq QnVmZmVyDQo+IC0gICkNCj4gLXsNCj4gLSAgaWYgKEJ1ZmZlciAhPSBOVUxMKSB7DQo+IC0gICAg RnJlZVBvb2wgKEJ1ZmZlcik7DQo+IC0gIH0NCj4gLX0NCj4gLQ0KPiAtLyoqDQo+IC0gIENhbGN1 bGF0ZSBhbiBldmVudCdzIGR1cmF0aW9uIGluIHRpbWVyIHRpY2tzLg0KPiAtDQo+IC0gIEdpdmVu IHRoZSBjb3VudCBkaXJlY3Rpb24gYW5kIHRoZSBldmVudCdzIHN0YXJ0IGFuZCBlbmQgdGltZXIg dmFsdWVzLA0KPiAtICBjYWxjdWxhdGUgdGhlIGR1cmF0aW9uIG9mIHRoZSBldmVudCBpbiB0aW1l ciB0aWNrcy4gIEluZm9ybWF0aW9uIGZvcg0KPiAtICB0aGUgY3VycmVudCBtZWFzdXJlbWVudCBp cyBwb2ludGVkIHRvIGJ5IHRoZSBwYXJhbWV0ZXIuDQo+IC0NCj4gLSAgSWYgdGhlIG1lYXN1cmVt ZW50J3Mgc3RhcnQgdGltZSBpcyAxLCBpdCBpbmRpY2F0ZXMgdGhhdCB0aGUgZGV2ZWxvcGVyDQo+ IC0gIGlzIGluZGljYXRpbmcgdGhhdCB0aGUgbWVhc3VyZW1lbnQgYmVnYW4gYXQgdGhlIHJlbGVh c2Ugb2YgcmVzZXQuDQo+IC0gIFRoZSBzdGFydCB0aW1lIGlzIGFkanVzdGVkIHRvIHRoZSB0aW1l cidzIHN0YXJ0aW5nIGNvdW50IGJlZm9yZSBwZXJmb3JtaW5nDQo+IC0gIHRoZSBlbGFwc2VkIHRp bWUgY2FsY3VsYXRpb24uDQo+IC0NCj4gLSAgVGhlIGNhbGN1bGF0ZWQgZHVyYXRpb24sIGluIHRp Y2tzLCBpcyB0aGUgYWJzb2x1dGUgZGlmZmVyZW5jZSBiZXR3ZWVuDQo+IC0gIHRoZSBtZWFzdXJl bWVudCdzIGVuZGluZyBhbmQgc3RhcnRpbmcgY291bnRzLg0KPiAtDQo+IC0gIEBwYXJhbSBNZWFz dXJlbWVudCAgIFBvaW50ZXIgdG8gYSBNRUFTVVJFTUVOVF9SRUNPUkQgc3RydWN0dXJlDQo+IGNv bnRhaW5pbmcNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgZGF0YSBmb3IgdGhlIGN1cnJlbnQg bWVhc3VyZW1lbnQuDQo+IC0NCj4gLSAgQHJldHVybiAgICAgICAgICAgICAgVGhlIDY0LWJpdCBk dXJhdGlvbiBvZiB0aGUgZXZlbnQuDQo+IC0qKi8NCj4gLVVJTlQ2NA0KPiAtR2V0RHVyYXRpb24g KA0KPiAtICBJTiBPVVQgTUVBU1VSRU1FTlRfUkVDT1JEICAgKk1lYXN1cmVtZW50DQo+IC0gICkN Cj4gLXsNCj4gLSAgVUlOVDY0ICAgIER1cmF0aW9uOw0KPiAtICBCT09MRUFOICAgRXJyb3I7DQo+ IC0NCj4gLSAgaWYgKE1lYXN1cmVtZW50LT5FbmRUaW1lU3RhbXAgPT0gMCkgew0KPiAtICAgIHJl dHVybiAwOw0KPiAtICB9DQo+IC0NCj4gLSAgLy8gUEVSRl9TVEFSVCBtYWNyb3MgYXJlIGNhbGxl ZCB3aXRoIGEgdmFsdWUgb2YgMSB0byBpbmRpY2F0ZQ0KPiAtICAvLyB0aGUgYmVnaW5uaW5nIG9m IHRpbWUuICBTbywgYWRqdXN0IHRoZSBzdGFydCB0aWNrZXIgdmFsdWUNCj4gLSAgLy8gdG8gdGhl IHJlYWwgYmVnaW5uaW5nIG9mIHRpbWUuDQo+IC0gIC8vIEFzc3VtZXMgbm8gd3JhcGFyb3VuZC4g IEV2ZW4gdGhlbiwgdGhlcmUgaXMgYSB2ZXJ5IGxvdyBwcm9iYWJpbGl0eQ0KPiAtICAvLyBvZiBo YXZpbmcgYSB2YWxpZCBTdGFydFRpY2tlciB2YWx1ZSBvZiAxLg0KPiAtICBpZiAoTWVhc3VyZW1l bnQtPlN0YXJ0VGltZVN0YW1wID09IDEpIHsNCj4gLSAgICBNZWFzdXJlbWVudC0+U3RhcnRUaW1l U3RhbXAgPSBUaW1lckluZm8uU3RhcnRDb3VudDsNCj4gLSAgfQ0KPiAtICBpZiAoVGltZXJJbmZv LkNvdW50VXApIHsNCj4gLSAgICBEdXJhdGlvbiA9IE1lYXN1cmVtZW50LT5FbmRUaW1lU3RhbXAg LSBNZWFzdXJlbWVudC0NCj4gPlN0YXJ0VGltZVN0YW1wOw0KPiAtICAgIEVycm9yID0gKEJPT0xF QU4pKER1cmF0aW9uID4gTWVhc3VyZW1lbnQtPkVuZFRpbWVTdGFtcCk7DQo+IC0gIH0NCj4gLSAg ZWxzZSB7DQo+IC0gICAgRHVyYXRpb24gPSBNZWFzdXJlbWVudC0+U3RhcnRUaW1lU3RhbXAgLSBN ZWFzdXJlbWVudC0NCj4gPkVuZFRpbWVTdGFtcDsNCj4gLSAgICBFcnJvciA9IChCT09MRUFOKShE dXJhdGlvbiA+IE1lYXN1cmVtZW50LT5TdGFydFRpbWVTdGFtcCk7DQo+IC0gIH0NCj4gLQ0KPiAt ICBpZiAoRXJyb3IpIHsNCj4gLSAgICBERUJVRyAoKEVGSV9EX0VSUk9SLCBBTGl0X1RpbWVyTGli RXJyb3IpKTsNCj4gLSAgICBEdXJhdGlvbiA9IDA7DQo+IC0gIH0NCj4gLSAgcmV0dXJuIER1cmF0 aW9uOw0KPiAtfQ0KPiAtDQo+IC0vKioNCj4gLSAgRGV0ZXJtaW5lIHdoZXRoZXIgdGhlIE1lYXN1 cmVtZW50IHJlY29yZCBpcyBmb3IgYW4gRUZJIFBoYXNlLg0KPiAtDQo+IC0gIFRoZSBUb2tlbiBh bmQgTW9kdWxlIG1lbWJlcnMgb2YgdGhlIG1lYXN1cmVtZW50IHJlY29yZCBhcmUgY2hlY2tlZC4N Cj4gLSAgTW9kdWxlIG11c3QgYmUgZW1wdHkgYW5kIFRva2VuIG11c3QgYmUgb25lIG9mIFNFQywg UEVJLCBEWEUsIEJEUywgb3INCj4gU0hFTEwuDQo+IC0NCj4gLSAgQHBhcmFtW2luXSAgTWVhc3Vy ZW1lbnQgQSBwb2ludGVyIHRvIHRoZSBNZWFzdXJlbWVudCByZWNvcmQgdG8gdGVzdC4NCj4gLQ0K PiAtICBAcmV0dmFsICAgICBUUlVFICAgICAgICBUaGUgbWVhc3VyZW1lbnQgcmVjb3JkIGlzIGZv ciBhbiBFRkkgUGhhc2UuDQo+IC0gIEByZXR2YWwgICAgIEZBTFNFICAgICAgIFRoZSBtZWFzdXJl bWVudCByZWNvcmQgaXMgTk9UIGZvciBhbiBFRkkgUGhhc2UuDQo+IC0qKi8NCj4gLUJPT0xFQU4N Cj4gLUlzUGhhc2UoDQo+IC0gIElOIE1FQVNVUkVNRU5UX1JFQ09SRCAgICAgICAgKk1lYXN1cmVt ZW50DQo+IC0gICkNCj4gLXsNCj4gLSAgQk9PTEVBTiAgIFJldFZhbDsNCj4gLQ0KPiAtICBSZXRW YWwgPSAoQk9PTEVBTikoICggKk1lYXN1cmVtZW50LT5Nb2R1bGUgPT0gJ1wwJykgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJiYNCj4gLSAgICAgICAgICAgICgoQXNjaWlTdHJuQ21wIChN ZWFzdXJlbWVudC0+VG9rZW4sIEFMaXRfU0VDLA0KPiBQRVJGX1RPS0VOX0xFTkdUSCkgPT0gMCkg ICAgfHwNCj4gLSAgICAgICAgICAgICAoQXNjaWlTdHJuQ21wIChNZWFzdXJlbWVudC0+VG9rZW4s IEFMaXRfUEVJLA0KPiBQRVJGX1RPS0VOX0xFTkdUSCkgPT0gMCkgICAgfHwNCj4gLSAgICAgICAg ICAgICAoQXNjaWlTdHJuQ21wIChNZWFzdXJlbWVudC0+VG9rZW4sIEFMaXRfRFhFLA0KPiBQRVJG X1RPS0VOX0xFTkdUSCkgPT0gMCkgICAgfHwNCj4gLSAgICAgICAgICAgICAoQXNjaWlTdHJuQ21w IChNZWFzdXJlbWVudC0+VG9rZW4sIEFMaXRfQkRTLA0KPiBQRVJGX1RPS0VOX0xFTkdUSCkgPT0g MCkpDQo+IC0gICAgICAgICAgICApOw0KPiAtICByZXR1cm4gUmV0VmFsOw0KPiAtfQ0KPiAtDQo+ IC0vKioNCj4gLSAgR2V0IHRoZSBmaWxlIG5hbWUgcG9ydGlvbiBvZiB0aGUgUGRiIEZpbGUgTmFt ZS4NCj4gLQ0KPiAtICBUaGUgcG9ydGlvbiBvZiB0aGUgUGRiIEZpbGUgTmFtZSBiZXR3ZWVuIHRo ZSBsYXN0IGJhY2tzbGFzaCBhbmQNCj4gLSAgZWl0aGVyIGEgZm9sbG93aW5nIHBlcmlvZCBvciB0 aGUgZW5kIG9mIHRoZSBzdHJpbmcgaXMgY29udmVydGVkDQo+IC0gIHRvIFVuaWNvZGUgYW5kIGNv cGllZCBpbnRvIFVuaWNvZGVCdWZmZXIuICBUaGUgbmFtZSBpcyB0cnVuY2F0ZWQsDQo+IC0gIGlm IG5lY2Vzc2FyeSwgdG8gZW5zdXJlIHRoYXQgVW5pY29kZUJ1ZmZlciBpcyBub3Qgb3ZlcnJ1bi4N Cj4gLQ0KPiAtICBAcGFyYW1baW5dICBQZGJGaWxlTmFtZSAgICAgUGRiIGZpbGUgbmFtZS4NCj4g LSAgQHBhcmFtW291dF0gVW5pY29kZUJ1ZmZlciAgIFRoZSByZXN1bHRhbnQgVW5pY29kZSBGaWxl IE5hbWUuDQo+IC0NCj4gLSoqLw0KPiAtVk9JRA0KPiAtR2V0U2hvcnRQZGJGaWxlTmFtZSAoDQo+ IC0gIElOICBDSEFSOCAgICAgKlBkYkZpbGVOYW1lLA0KPiAtICBPVVQgQ0hBUjE2ICAgICpVbmlj b2RlQnVmZmVyDQo+IC0gICkNCj4gLXsNCj4gLSAgVUlOVE4gSW5kZXhBOyAgICAgLy8gQ3VycmVu dCB3b3JrIGxvY2F0aW9uIHdpdGhpbiBhbiBBU0NJSSBzdHJpbmcuDQo+IC0gIFVJTlROIEluZGV4 VTsgICAgIC8vIEN1cnJlbnQgd29yayBsb2NhdGlvbiB3aXRoaW4gYSBVbmljb2RlIHN0cmluZy4N Cj4gLSAgVUlOVE4gU3RhcnRJbmRleDsNCj4gLSAgVUlOVE4gRW5kSW5kZXg7DQo+IC0NCj4gLSAg WmVyb01lbSAoVW5pY29kZUJ1ZmZlciwgKERQX0dBVUdFX1NUUklOR19MRU5HVEggKyAxKSAqIHNp emVvZg0KPiAoQ0hBUjE2KSk7DQo+IC0NCj4gLSAgaWYgKFBkYkZpbGVOYW1lID09IE5VTEwpIHsN Cj4gLSAgICBTdHJDcHlTIChVbmljb2RlQnVmZmVyLCBEUF9HQVVHRV9TVFJJTkdfTEVOR1RIICsg MSwgTCIgIik7DQo+IC0gIH0gZWxzZSB7DQo+IC0gICAgU3RhcnRJbmRleCA9IDA7DQo+IC0gICAg Zm9yIChFbmRJbmRleCA9IDA7IFBkYkZpbGVOYW1lW0VuZEluZGV4XSAhPSAwOyBFbmRJbmRleCsr KQ0KPiAtICAgICAgOw0KPiAtICAgIGZvciAoSW5kZXhBID0gMDsgUGRiRmlsZU5hbWVbSW5kZXhB XSAhPSAwOyBJbmRleEErKykgew0KPiAtICAgICAgaWYgKChQZGJGaWxlTmFtZVtJbmRleEFdID09 ICdcXCcpIHx8IChQZGJGaWxlTmFtZVtJbmRleEFdID09ICcvJykpIHsNCj4gLSAgICAgICAgU3Rh cnRJbmRleCA9IEluZGV4QSArIDE7DQo+IC0gICAgICB9DQo+IC0NCj4gLSAgICAgIGlmIChQZGJG aWxlTmFtZVtJbmRleEFdID09ICcuJykgew0KPiAtICAgICAgICBFbmRJbmRleCA9IEluZGV4QTsN Cj4gLSAgICAgIH0NCj4gLSAgICB9DQo+IC0NCj4gLSAgICBJbmRleFUgPSAwOw0KPiAtICAgIGZv ciAoSW5kZXhBID0gU3RhcnRJbmRleDsgSW5kZXhBIDwgRW5kSW5kZXg7IEluZGV4QSsrKSB7DQo+ IC0gICAgICBVbmljb2RlQnVmZmVyW0luZGV4VV0gPSAoQ0hBUjE2KSBQZGJGaWxlTmFtZVtJbmRl eEFdOw0KPiAtICAgICAgSW5kZXhVKys7DQo+IC0gICAgICBpZiAoSW5kZXhVID49IERQX0dBVUdF X1NUUklOR19MRU5HVEgpIHsNCj4gLSAgICAgICAgVW5pY29kZUJ1ZmZlcltEUF9HQVVHRV9TVFJJ TkdfTEVOR1RIXSA9IDA7DQo+IC0gICAgICAgIGJyZWFrOw0KPiAtICAgICAgfQ0KPiAtICAgIH0N Cj4gLSAgfQ0KPiAtfQ0KPiAtDQo+IC0vKioNCj4gLSAgR2V0IGEgaHVtYW4gcmVhZGFibGUgbmFt ZSBmb3IgYW4gaW1hZ2UgaGFuZGxlLg0KPiAtICBUaGUgZm9sbG93aW5nIG1ldGhvZHMgd2lsbCBi ZSB0cmllZCBvcmRlcmx5Og0KPiAtICAgIDEuIEltYWdlIFBEQg0KPiAtICAgIDIuIENvbXBvbmVu dE5hbWUyIHByb3RvY29sDQo+IC0gICAgMy4gRkZTIFVJIHNlY3Rpb24NCj4gLSAgICA0LiBJbWFn ZSBHVUlEDQo+IC0gICAgNS4gSW1hZ2UgRGV2aWNlUGF0aA0KPiAtICAgIDYuIFVua25vd24gRHJp dmVyIE5hbWUNCj4gLQ0KPiAtICBAcGFyYW1baW5dICAgIEhhbmRsZQ0KPiAtDQo+IC0gIEBwb3N0 ICAgVGhlIHJlc3VsdGluZyBVbmljb2RlIG5hbWUgc3RyaW5nIGlzIHN0b3JlZCBpbiB0aGUNCj4g LSAgICAgICAgICBtR2F1Z2VTdHJpbmcgZ2xvYmFsIGFycmF5Lg0KPiAtDQo+IC0qKi8NCj4gLVZP SUQNCj4gLUdldE5hbWVGcm9tSGFuZGxlICgNCj4gLSAgSU4gRUZJX0hBTkRMRSAgIEhhbmRsZQ0K PiAtICApDQo+IC17DQo+IC0gIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ IC0gIEVGSV9MT0FERURfSU1BR0VfUFJPVE9DT0wgICAqSW1hZ2U7DQo+IC0gIENIQVI4ICAgICAg ICAgICAgICAgICAgICAgICAqUGRiRmlsZU5hbWU7DQo+IC0gIEVGSV9EUklWRVJfQklORElOR19Q Uk9UT0NPTCAqRHJpdmVyQmluZGluZzsNCj4gLSAgRUZJX1NUUklORyAgICAgICAgICAgICAgICAg IFN0cmluZ1B0cjsNCj4gLSAgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICAgICpMb2FkZWRJbWFn ZURldmljZVBhdGg7DQo+IC0gIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAqRGV2aWNlUGF0 aDsNCj4gLSAgRUZJX0dVSUQgICAgICAgICAgICAgICAgICAgICpOYW1lR3VpZDsNCj4gLSAgQ0hB UjE2ICAgICAgICAgICAgICAgICAgICAgICpOYW1lU3RyaW5nOw0KPiAtICBVSU5UTiAgICAgICAg ICAgICAgICAgICAgICAgU3RyaW5nU2l6ZTsNCj4gLSAgQ0hBUjggICAgICAgICAgICAgICAgICAg ICAgICpQbGF0Zm9ybUxhbmd1YWdlOw0KPiAtICBDSEFSOCAgICAgICAgICAgICAgICAgICAgICAg KkJlc3RMYW5ndWFnZTsNCj4gLSAgRUZJX0NPTVBPTkVOVF9OQU1FMl9QUk9UT0NPTCAgICAgICpD b21wb25lbnROYW1lMjsNCj4gLQ0KPiAtICBJbWFnZSA9IE5VTEw7DQo+IC0gIExvYWRlZEltYWdl RGV2aWNlUGF0aCA9IE5VTEw7DQo+IC0gIERldmljZVBhdGggPSBOVUxMOw0KPiAtICBCZXN0TGFu Z3VhZ2UgICAgID0gTlVMTDsNCj4gLSAgUGxhdGZvcm1MYW5ndWFnZSA9IE5VTEw7DQo+IC0NCj4g LSAgLy8NCj4gLSAgLy8gTWV0aG9kIDE6IEdldCB0aGUgbmFtZSBzdHJpbmcgZnJvbSBpbWFnZSBQ REINCj4gLSAgLy8NCj4gLSAgU3RhdHVzID0gZ0JTLT5IYW5kbGVQcm90b2NvbCAoDQo+IC0gICAg ICAgICAgICAgICAgICBIYW5kbGUsDQo+IC0gICAgICAgICAgICAgICAgICAmZ0VmaUxvYWRlZElt YWdlUHJvdG9jb2xHdWlkLA0KPiAtICAgICAgICAgICAgICAgICAgKFZPSUQgKiopICZJbWFnZQ0K PiAtICAgICAgICAgICAgICAgICAgKTsNCj4gLQ0KPiAtICBpZiAoRUZJX0VSUk9SIChTdGF0dXMp KSB7DQo+IC0gICAgU3RhdHVzID0gZ0JTLT5PcGVuUHJvdG9jb2wgKA0KPiAtICAgICAgICAgICAg ICAgICAgICBIYW5kbGUsDQo+IC0gICAgICAgICAgICAgICAgICAgICZnRWZpRHJpdmVyQmluZGlu Z1Byb3RvY29sR3VpZCwNCj4gLSAgICAgICAgICAgICAgICAgICAgKFZPSUQgKiopICZEcml2ZXJC aW5kaW5nLA0KPiAtICAgICAgICAgICAgICAgICAgICBOVUxMLA0KPiAtICAgICAgICAgICAgICAg ICAgICBOVUxMLA0KPiAtICAgICAgICAgICAgICAgICAgICBFRklfT1BFTl9QUk9UT0NPTF9HRVRf UFJPVE9DT0wNCj4gLSAgICAgICAgICAgICAgICAgICAgKTsNCj4gLSAgICBpZiAoIUVGSV9FUlJP UiAoU3RhdHVzKSkgew0KPiAtICAgICAgU3RhdHVzID0gZ0JTLT5IYW5kbGVQcm90b2NvbCAoDQo+ IC0gICAgICAgICAgICAgICAgICAgICAgRHJpdmVyQmluZGluZy0+SW1hZ2VIYW5kbGUsDQo+IC0g ICAgICAgICAgICAgICAgICAgICAgJmdFZmlMb2FkZWRJbWFnZVByb3RvY29sR3VpZCwNCj4gLSAg ICAgICAgICAgICAgICAgICAgICAoVk9JRCAqKikgJkltYWdlDQo+IC0gICAgICAgICAgICAgICAg ICAgICAgKTsNCj4gLSAgICB9DQo+IC0gIH0NCj4gLQ0KPiAtICBpZiAoIUVGSV9FUlJPUiAoU3Rh dHVzKSkgew0KPiAtICAgIFBkYkZpbGVOYW1lID0gUGVDb2ZmTG9hZGVyR2V0UGRiUG9pbnRlciAo SW1hZ2UtPkltYWdlQmFzZSk7DQo+IC0NCj4gLSAgICBpZiAoUGRiRmlsZU5hbWUgIT0gTlVMTCkg ew0KPiAtICAgICAgR2V0U2hvcnRQZGJGaWxlTmFtZSAoUGRiRmlsZU5hbWUsIG1HYXVnZVN0cmlu Zyk7DQo+IC0gICAgICByZXR1cm47DQo+IC0gICAgfQ0KPiAtICB9DQo+IC0NCj4gLSAgLy8NCj4g LSAgLy8gTWV0aG9kIDI6IEdldCB0aGUgbmFtZSBzdHJpbmcgZnJvbSBDb21wb25lbnROYW1lMiBw cm90b2NvbA0KPiAtICAvLw0KPiAtICBTdGF0dXMgPSBnQlMtPkhhbmRsZVByb3RvY29sICgNCj4g LSAgICAgICAgICAgICAgICAgIEhhbmRsZSwNCj4gLSAgICAgICAgICAgICAgICAgICZnRWZpQ29t cG9uZW50TmFtZTJQcm90b2NvbEd1aWQsDQo+IC0gICAgICAgICAgICAgICAgICAoVk9JRCAqKikg JkNvbXBvbmVudE5hbWUyDQo+IC0gICAgICAgICAgICAgICAgICApOw0KPiAtICBpZiAoIUVGSV9F UlJPUiAoU3RhdHVzKSkgew0KPiAtICAgIC8vDQo+IC0gICAgLy8gR2V0IHRoZSBjdXJyZW50IHBs YXRmb3JtIGxhbmd1YWdlIHNldHRpbmcNCj4gLSAgICAvLw0KPiAtICAgIEdldEVmaUdsb2JhbFZh cmlhYmxlMiAoTCJQbGF0Zm9ybUxhbmciLCAoVk9JRCoqKSZQbGF0Zm9ybUxhbmd1YWdlLA0KPiBO VUxMKTsNCj4gLQ0KPiAtICAgIEJlc3RMYW5ndWFnZSA9IEdldEJlc3RMYW5ndWFnZSgNCj4gLSAg ICAgICAgICAgICAgICAgICAgIENvbXBvbmVudE5hbWUyLT5TdXBwb3J0ZWRMYW5ndWFnZXMsDQo+ IC0gICAgICAgICAgICAgICAgICAgICBGQUxTRSwNCj4gLSAgICAgICAgICAgICAgICAgICAgIFBs YXRmb3JtTGFuZ3VhZ2UsDQo+IC0gICAgICAgICAgICAgICAgICAgICBDb21wb25lbnROYW1lMi0+ U3VwcG9ydGVkTGFuZ3VhZ2VzLA0KPiAtICAgICAgICAgICAgICAgICAgICAgTlVMTA0KPiAtICAg ICAgICAgICAgICAgICAgICAgKTsNCj4gLQ0KPiAtICAgIFNhZmVGcmVlUG9vbCAoUGxhdGZvcm1M YW5ndWFnZSk7DQo+IC0gICAgU3RhdHVzID0gQ29tcG9uZW50TmFtZTItPkdldERyaXZlck5hbWUg KA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbXBvbmVudE5hbWUyLA0KPiAt ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJlc3RMYW5ndWFnZSwNCj4gLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAmU3RyaW5nUHRyDQo+IC0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKTsNCj4gLSAgICBTYWZlRnJlZVBvb2wgKEJlc3RMYW5ndWFnZSk7DQo+IC0g ICAgaWYgKCFFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gLSAgICAgIFN0cm5DcHlTICgNCj4gLSAg ICAgICAgbUdhdWdlU3RyaW5nLA0KPiAtICAgICAgICBEUF9HQVVHRV9TVFJJTkdfTEVOR1RIICsg MSwNCj4gLSAgICAgICAgU3RyaW5nUHRyLA0KPiAtICAgICAgICBEUF9HQVVHRV9TVFJJTkdfTEVO R1RIDQo+IC0gICAgICAgICk7DQo+IC0gICAgICByZXR1cm47DQo+IC0gICAgfQ0KPiAtICB9DQo+ IC0NCj4gLSAgU3RhdHVzID0gZ0JTLT5IYW5kbGVQcm90b2NvbCAoDQo+IC0gICAgICAgICAgICAg ICAgICBIYW5kbGUsDQo+IC0gICAgICAgICAgICAgICAgICAmZ0VmaUxvYWRlZEltYWdlRGV2aWNl UGF0aFByb3RvY29sR3VpZCwNCj4gLSAgICAgICAgICAgICAgICAgIChWT0lEICoqKSAmTG9hZGVk SW1hZ2VEZXZpY2VQYXRoDQo+IC0gICAgICAgICAgICAgICAgICApOw0KPiAtICBpZiAoIUVGSV9F UlJPUiAoU3RhdHVzKSAmJiAoTG9hZGVkSW1hZ2VEZXZpY2VQYXRoICE9IE5VTEwpKSB7DQo+IC0g ICAgRGV2aWNlUGF0aCA9IExvYWRlZEltYWdlRGV2aWNlUGF0aDsNCj4gLSAgfSBlbHNlIGlmIChJ bWFnZSAhPSBOVUxMKSB7DQo+IC0gICAgRGV2aWNlUGF0aCA9IEltYWdlLT5GaWxlUGF0aDsNCj4g LSAgfQ0KPiAtDQo+IC0gIGlmIChEZXZpY2VQYXRoICE9IE5VTEwpIHsNCj4gLSAgICAvLw0KPiAt ICAgIC8vIFRyeSB0byBnZXQgaW1hZ2UgR1VJRCBmcm9tIGltYWdlIERldmljZVBhdGgNCj4gLSAg ICAvLw0KPiAtICAgIE5hbWVHdWlkID0gTlVMTDsNCj4gLSAgICB3aGlsZSAoIUlzRGV2aWNlUGF0 aEVuZFR5cGUgKERldmljZVBhdGgpKSB7DQo+IC0gICAgICBOYW1lR3VpZCA9IEVmaUdldE5hbWVH dWlkRnJvbUZ3Vm9sRGV2aWNlUGF0aE5vZGUNCj4gKChNRURJQV9GV19WT0xfRklMRVBBVEhfREVW SUNFX1BBVEggKikgRGV2aWNlUGF0aCk7DQo+IC0gICAgICBpZiAoTmFtZUd1aWQgIT0gTlVMTCkg ew0KPiAtICAgICAgICBicmVhazsNCj4gLSAgICAgIH0NCj4gLSAgICAgIERldmljZVBhdGggPSBO ZXh0RGV2aWNlUGF0aE5vZGUgKERldmljZVBhdGgpOw0KPiAtICAgIH0NCj4gLQ0KPiAtICAgIGlm IChOYW1lR3VpZCAhPSBOVUxMKSB7DQo+IC0gICAgICAvLw0KPiAtICAgICAgLy8gVHJ5IHRvIGdl dCB0aGUgaW1hZ2UncyBGRlMgVUkgc2VjdGlvbiBieSBpbWFnZSBHVUlEDQo+IC0gICAgICAvLw0K PiAtICAgICAgTmFtZVN0cmluZyA9IE5VTEw7DQo+IC0gICAgICBTdHJpbmdTaXplID0gMDsNCj4g LSAgICAgIFN0YXR1cyA9IEdldFNlY3Rpb25Gcm9tQW55RnYgKA0KPiAtICAgICAgICAgICAgICAg IE5hbWVHdWlkLA0KPiAtICAgICAgICAgICAgICAgIEVGSV9TRUNUSU9OX1VTRVJfSU5URVJGQUNF LA0KPiAtICAgICAgICAgICAgICAgIDAsDQo+IC0gICAgICAgICAgICAgICAgKFZPSUQgKiopICZO YW1lU3RyaW5nLA0KPiAtICAgICAgICAgICAgICAgICZTdHJpbmdTaXplDQo+IC0gICAgICAgICAg ICAgICAgKTsNCj4gLQ0KPiAtICAgICAgaWYgKCFFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gLSAg ICAgICAgLy8NCj4gLSAgICAgICAgLy8gTWV0aG9kIDMuIEdldCB0aGUgbmFtZSBzdHJpbmcgZnJv bSBGRlMgVUkgc2VjdGlvbg0KPiAtICAgICAgICAvLw0KPiAtICAgICAgICBTdHJuQ3B5UyAoDQo+ IC0gICAgICAgICAgbUdhdWdlU3RyaW5nLA0KPiAtICAgICAgICAgIERQX0dBVUdFX1NUUklOR19M RU5HVEggKyAxLA0KPiAtICAgICAgICAgIE5hbWVTdHJpbmcsDQo+IC0gICAgICAgICAgRFBfR0FV R0VfU1RSSU5HX0xFTkdUSA0KPiAtICAgICAgICAgICk7DQo+IC0gICAgICAgIEZyZWVQb29sIChO YW1lU3RyaW5nKTsNCj4gLSAgICAgIH0gZWxzZSB7DQo+IC0gICAgICAgIC8vDQo+IC0gICAgICAg IC8vIE1ldGhvZCA0OiBHZXQgdGhlIG5hbWUgc3RyaW5nIGZyb20gaW1hZ2UgR1VJRA0KPiAtICAg ICAgICAvLw0KPiAtICAgICAgICBVbmljb2RlU1ByaW50IChtR2F1Z2VTdHJpbmcsIHNpemVvZiAo bUdhdWdlU3RyaW5nKSwgTCIlZyIsDQo+IE5hbWVHdWlkKTsNCj4gLSAgICAgIH0NCj4gLSAgICAg IHJldHVybjsNCj4gLSAgICB9IGVsc2Ugew0KPiAtICAgICAgLy8NCj4gLSAgICAgIC8vIE1ldGhv ZCA1OiBHZXQgdGhlIG5hbWUgc3RyaW5nIGZyb20gaW1hZ2UgRGV2aWNlUGF0aA0KPiAtICAgICAg Ly8NCj4gLSAgICAgIE5hbWVTdHJpbmcgPSBDb252ZXJ0RGV2aWNlUGF0aFRvVGV4dCAoRGV2aWNl UGF0aCwgVFJVRSwgRkFMU0UpOw0KPiAtICAgICAgaWYgKE5hbWVTdHJpbmcgIT0gTlVMTCkgew0K PiAtICAgICAgICBTdHJuQ3B5UyAoDQo+IC0gICAgICAgICAgbUdhdWdlU3RyaW5nLA0KPiAtICAg ICAgICAgIERQX0dBVUdFX1NUUklOR19MRU5HVEggKyAxLA0KPiAtICAgICAgICAgIE5hbWVTdHJp bmcsDQo+IC0gICAgICAgICAgRFBfR0FVR0VfU1RSSU5HX0xFTkdUSA0KPiAtICAgICAgICAgICk7 DQo+IC0gICAgICAgIEZyZWVQb29sIChOYW1lU3RyaW5nKTsNCj4gLSAgICAgICAgcmV0dXJuOw0K PiAtICAgICAgfQ0KPiAtICAgIH0NCj4gLSAgfQ0KPiAtDQo+IC0gIC8vDQo+IC0gIC8vIE1ldGhv ZCA2OiBVbmtub3duIERyaXZlciBOYW1lDQo+IC0gIC8vDQo+IC0gIFN0cmluZ1B0ciA9IEhpaUdl dFN0cmluZyAoZ0hpaUhhbmRsZSwgU1RSSU5HX1RPS0VODQo+IChTVFJfRFBfRVJST1JfTkFNRSks IE5VTEwpOw0KPiAtICBBU1NFUlQgKFN0cmluZ1B0ciAhPSBOVUxMKTsNCj4gLSAgU3RyQ3B5UyAo bUdhdWdlU3RyaW5nLCBEUF9HQVVHRV9TVFJJTkdfTEVOR1RIICsgMSwgU3RyaW5nUHRyKTsNCj4g LSAgRnJlZVBvb2wgKFN0cmluZ1B0cik7DQo+IC0gIHJldHVybjsNCj4gLX0NCj4gLQ0KPiAtLyoq DQo+IC0gIENhbGN1bGF0ZSB0aGUgRHVyYXRpb24gaW4gbWljcm9zZWNvbmRzLg0KPiAtDQo+IC0g IER1cmF0aW9uIGlzIG11bHRpcGxpZWQgYnkgMTAwMCwgaW5zdGVhZCBvZiBGcmVxdWVuY3kgYmVp bmcgZGl2aWRlZCBieSAxMDAwDQo+IG9yDQo+IC0gIG11bHRpcGx5aW5nIHRoZSByZXN1bHQgYnkg MTAwMCwgaW4gb3JkZXIgdG8gbWFpbnRhaW4gcHJlY2lzaW9uLiAgU2luY2UNCj4gRHVyYXRpb24g aXMNCj4gLSAgYSA2NC1iaXQgdmFsdWUsIG11bHRpcGx5aW5nIGl0IGJ5IDEwMDAgaXMgdW5saWtl bHkgdG8gcHJvZHVjZSBhbiBvdmVyZmxvdy4NCj4gLQ0KPiAtICBUaGUgdGltZSBpcyBjYWxjdWxh dGVkIGFzIChEdXJhdGlvbiAqIDEwMDApIC8gVGltZXJfRnJlcXVlbmN5Lg0KPiAtDQo+IC0gIEBw YXJhbVtpbl0gIER1cmF0aW9uICAgVGhlIGV2ZW50IGR1cmF0aW9uIGluIHRpbWVyIHRpY2tzLg0K PiAtDQo+IC0gIEByZXR1cm4gICAgIEEgNjQtYml0IHZhbHVlIHdoaWNoIGlzIHRoZSBFbGFwc2Vk IHRpbWUgaW4gbWljcm9zZWNvbmRzLg0KPiAtKiovDQo+IC1VSU5UNjQNCj4gLUR1cmF0aW9uSW5N aWNyb1NlY29uZHMgKA0KPiAtICBJTiBVSU5UNjQgRHVyYXRpb24NCj4gLSAgKQ0KPiAtew0KPiAt ICBVSU5UNjQgVGVtcDsNCj4gLQ0KPiAtICBUZW1wID0gTXVsdFU2NHgzMiAoRHVyYXRpb24sIDEw MDApOw0KPiAtICByZXR1cm4gRGl2VTY0eDMyIChUZW1wLCBUaW1lckluZm8uRnJlcXVlbmN5KTsN Cj4gLX0NCj4gLQ0KPiAtLyoqDQo+IC0gIEZvcm1hdHRlZCBQcmludCB1c2luZyBhIEhpaSBUb2tl biB0byByZWZlcmVuY2UgdGhlIGxvY2FsaXplZCBmb3JtYXQgc3RyaW5nLg0KPiAtDQo+IC0gIEBw YXJhbVtpbl0gIFRva2VuICAgQSBISUkgdG9rZW4gYXNzb2NpYXRlZCB3aXRoIGEgbG9jYWxpemVk IFVuaWNvZGUgc3RyaW5nLg0KPiAtICBAcGFyYW1baW5dICAuLi4gICAgIFRoZSB2YXJpYWJsZSBh cmd1bWVudCBsaXN0Lg0KPiAtDQo+IC0gIEByZXR1cm4gICAgICAgICAgICAgVGhlIG51bWJlciBv ZiBjaGFyYWN0ZXJzIGNvbnZlcnRlZCBieSBVbmljb2RlVlNQcmludCgpLg0KPiAtDQo+IC0qKi8N Cj4gLVVJTlRODQo+IC1FRklBUEkNCj4gLVByaW50VG9rZW4gKA0KPiAtICBJTiBVSU5UMTYgICAg ICAgICAgIFRva2VuLA0KPiAtICAuLi4NCj4gLSAgKQ0KPiAtew0KPiAtICBWQV9MSVNUICAgICAg ICAgICBNYXJrZXI7DQo+IC0gIEVGSV9TVFJJTkcgICAgICAgIFN0cmluZ1B0cjsNCj4gLSAgVUlO VE4gICAgICAgICAgICAgUmV0dXJuOw0KPiAtICBVSU5UTiAgICAgICAgICAgICBCdWZmZXJTaXpl Ow0KPiAtDQo+IC0gIFN0cmluZ1B0ciA9IEhpaUdldFN0cmluZyAoZ0hpaUhhbmRsZSwgVG9rZW4s IE5VTEwpOw0KPiAtICBBU1NFUlQgKFN0cmluZ1B0ciAhPSBOVUxMKTsNCj4gLQ0KPiAtICBWQV9T VEFSVCAoTWFya2VyLCBUb2tlbik7DQo+IC0NCj4gLSAgQnVmZmVyU2l6ZSA9IChQY2RHZXQzMiAo UGNkVWVmaUxpYk1heFByaW50QnVmZmVyU2l6ZSkgKyAxKSAqIHNpemVvZg0KPiAoQ0hBUjE2KTsN Cj4gLQ0KPiAtICBpZiAobVByaW50VG9rZW5CdWZmZXIgPT0gTlVMTCkgew0KPiAtICAgIG1Qcmlu dFRva2VuQnVmZmVyID0gQWxsb2NhdGVQb29sIChCdWZmZXJTaXplKTsNCj4gLSAgICBBU1NFUlQg KG1QcmludFRva2VuQnVmZmVyICE9IE5VTEwpOw0KPiAtICB9DQo+IC0gIFNldE1lbSggbVByaW50 VG9rZW5CdWZmZXIsIEJ1ZmZlclNpemUsIDApOw0KPiAtDQo+IC0gIFJldHVybiA9IFVuaWNvZGVW U1ByaW50IChtUHJpbnRUb2tlbkJ1ZmZlciwgQnVmZmVyU2l6ZSwgU3RyaW5nUHRyLA0KPiBNYXJr ZXIpOw0KPiAtICBWQV9FTkQgKE1hcmtlcik7DQo+IC0NCj4gLSAgaWYgKFJldHVybiA+IDAgJiYg Z1NULT5Db25PdXQgIT0gTlVMTCkgew0KPiAtICAgIGdTVC0+Q29uT3V0LT5PdXRwdXRTdHJpbmcg KGdTVC0+Q29uT3V0LCBtUHJpbnRUb2tlbkJ1ZmZlcik7DQo+IC0gIH0NCj4gLSAgRnJlZVBvb2wg KFN0cmluZ1B0cik7DQo+IC0gIHJldHVybiBSZXR1cm47DQo+IC19DQo+IC0NCj4gLS8qKg0KPiAt ICBHZXQgaW5kZXggb2YgTWVhc3VyZW1lbnQgUmVjb3JkJ3MgbWF0Y2ggaW4gdGhlIEN1bURhdGEg YXJyYXkuDQo+IC0NCj4gLSAgSWYgdGhlIE1lYXN1cmVtZW50J3MgVG9rZW4gdmFsdWUgbWF0Y2hl cyBhIFRva2VuIGluIG9uZSBvZiB0aGUgQ3VtRGF0YQ0KPiAtICByZWNvcmRzLCB0aGUgaW5kZXgg b2YgdGhlIG1hdGNoaW5nIHJlY29yZCBpcyByZXR1cm5lZC4gIFRoZSByZXR1cm5lZA0KPiAtICBp bmRleCBpcyBhIHNpZ25lZCB2YWx1ZSBzbyB0aGF0IG5lZ2F0aXZlIHZhbHVlcyBjYW4gaW5kaWNh dGUgdGhhdA0KPiAtICB0aGUgTWVhc3VyZW1lbnQgZGlkbid0IG1hdGNoIGFueSBlbnRyeSBpbiB0 aGUgQ3VtRGF0YSBhcnJheS4NCj4gLQ0KPiAtICBAcGFyYW1baW5dICBNZWFzdXJlbWVudCBBIHBv aW50ZXIgdG8gYSBNZWFzdXJlbWVudCBSZWNvcmQgdG8gbWF0Y2gNCj4gYWdhaW5zdCB0aGUgQ3Vt RGF0YSBhcnJheS4NCj4gLQ0KPiAtICBAcmV0dmFsICAgICA8MCAgICBUb2tlbiBpcyBub3QgaW4g dGhlIEN1bURhdGEgYXJyYXkuDQo+IC0gIEByZXR2YWwgICAgID49MCAgIFJldHVybiB2YWx1ZSBp cyB0aGUgaW5kZXggaW50byBDdW1EYXRhIHdoZXJlIFRva2VuIGlzDQo+IGZvdW5kLg0KPiAtKiov DQo+IC1JTlRODQo+IC1HZXRDdW11bGF0aXZlSXRlbSgNCj4gLSAgSU4gTUVBU1VSRU1FTlRfUkVD T1JEICAgKk1lYXN1cmVtZW50DQo+IC0gICkNCj4gLXsNCj4gLSAgSU5UTiAgICBJbmRleDsNCj4g LQ0KPiAtICBmb3IoIEluZGV4ID0gMDsgSW5kZXggPCAoSU5UTilOdW1DdW07ICsrSW5kZXgpIHsN Cj4gLSAgICBpZiAoQXNjaWlTdHJuQ21wIChNZWFzdXJlbWVudC0+VG9rZW4sIEN1bURhdGFbSW5k ZXhdLk5hbWUsDQo+IFBFUkZfVE9LRU5fTEVOR1RIKSA9PSAwKSB7DQo+IC0gICAgICByZXR1cm4g SW5kZXg7ICAvLyBFeGl0LCB3ZSBmb3VuZCBhIG1hdGNoDQo+IC0gICAgfQ0KPiAtICB9DQo+IC0g IC8vIElmIHRoZSBmb3IgbG9vcCBleGl0cywgVG9rZW4gd2FzIG5vdCBmb3VuZC4NCj4gLSAgcmV0 dXJuIC0xOyAgIC8vIEluZGljYXRlIGZhaWx1cmUNCj4gLX0NCj4gZGlmZiAtLWdpdCBhL1BlcmZv cm1hbmNlUGtnL0RwX0FwcC9MaXRlcmFscy5jDQo+IGIvUGVyZm9ybWFuY2VQa2cvRHBfQXBwL0xp dGVyYWxzLmMNCj4gZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IGMxY2RkZmI5ZmYu LjAwMDAwMDAwMDANCj4gLS0tIGEvUGVyZm9ybWFuY2VQa2cvRHBfQXBwL0xpdGVyYWxzLmMNCj4g KysrIC9kZXYvbnVsbA0KPiBAQCAtMSwyMiArMCwwIEBADQo+IC0vKiogQGZpbGUNCj4gLSAgRGVm aW5pdGlvbnMgb2YgQVNDSUkgc3RyaW5nIGxpdGVyYWxzIHVzZWQgYnkgRFAuDQo+IC0NCj4gLSAg Q29weXJpZ2h0IChjKSAyMDA5IC0gMjAxNywgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMg cmVzZXJ2ZWQuPEJSPg0KPiAtICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0 ZXJpYWxzDQo+IC0gIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRl cm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QNCj4gTGljZW5zZQ0KPiAtICB3aGljaCBhY2Nv bXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2Ug bWF5IGJlDQo+IGZvdW5kIGF0DQo+IC0gIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9i c2QtbGljZW5zZS5waHANCj4gLQ0KPiAtICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRF UiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywNCj4gLSAgV0lUSE9VVCBX QVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+IEVYUFJF U1MgT1IgSU1QTElFRC4NCj4gLSoqLw0KPiAtI2luY2x1ZGUgPFBlcmZvcm1hbmNlVG9rZW5zLmg+ DQo+IC0NCj4gLS8vIEFTQ0lJIFN0cmluZyBsaXRlcmFscyB3aGljaCBwcm9iYWJseSBkb24ndCBu ZWVkIHRyYW5zbGF0aW9uDQo+IC1DSEFSOCBjb25zdCBBTGl0X1RpbWVyTGliRXJyb3JbXSA9ICJU aW1lciBsaWJyYXJ5IGluc3RhbmNlIGVycm9yIVxuIjsNCj4gLUNIQVI4IGNvbnN0IEFMaXRfU0VD W10gICAgPSBTRUNfVE9LOw0KPiAtQ0hBUjggY29uc3QgQUxpdF9EWEVbXSAgICA9IERYRV9UT0s7 DQo+IC1DSEFSOCBjb25zdCBBTGl0X1BFSVtdICAgID0gUEVJX1RPSzsNCj4gLUNIQVI4IGNvbnN0 IEFMaXRfQkRTW10gICAgPSBCRFNfVE9LOw0KPiAtQ0hBUjggY29uc3QgQUxpdF9CZHNUT1tdICA9 ICJCZHNUaW1lT3V0IjsNCj4gLUNIQVI4IGNvbnN0IEFMaXRfUEVJTVtdICAgPSAiUEVJTSI7DQo+ IGRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVBrZy9EcF9BcHAvTGl0ZXJhbHMuaA0KPiBiL1BlcmZv cm1hbmNlUGtnL0RwX0FwcC9MaXRlcmFscy5oDQo+IGRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NA0K PiBpbmRleCA4YWVjMDljMDI0Li4wMDAwMDAwMDAwDQo+IC0tLSBhL1BlcmZvcm1hbmNlUGtnL0Rw X0FwcC9MaXRlcmFscy5oDQo+ICsrKyAvZGV2L251bGwNCj4gQEAgLTEsMjYgKzAsMCBAQA0KPiAt LyoqIEBmaWxlDQo+IC0gIERlY2xhcmF0aW9ucyBvZiBBU0NJSSBzdHJpbmcgbGl0ZXJhbHMgdXNl ZCBieSBEUC4NCj4gLQ0KPiAtICBDb3B5cmlnaHQgKGMpIDIwMDkgLSAyMDEwLCBJbnRlbCBDb3Jw b3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+IC0gIFRoaXMgcHJvZ3JhbSBhbmQg dGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gLSAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2 YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRA0KPiBMaWNl bnNlDQo+IC0gIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwg dGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gZm91bmQgYXQNCj4gLSAgaHR0cDovL29wZW5z b3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiAtDQo+IC0gIFRIRSBQUk9HUkFN IElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+IEJB U0lTLA0KPiAtICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBL SU5ELCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiAtKiovDQo+IC0jaWZuZGVmIF9M SVRFUkFMU19IXw0KPiAtI2RlZmluZSBfTElURVJBTFNfSF8NCj4gLQ0KPiAtLy8gQVNDSUkgU3Ry aW5nIGxpdGVyYWxzIHdoaWNoIHByb2JhYmx5IGRvbid0IG5lZWQgdHJhbnNsYXRpb24NCj4gLWV4 dGVybiBDSEFSOCBjb25zdCBBTGl0X1RpbWVyTGliRXJyb3JbXTsNCj4gLWV4dGVybiBDSEFSOCBj b25zdCBBTGl0X1NFQ1tdOw0KPiAtZXh0ZXJuIENIQVI4IGNvbnN0IEFMaXRfRFhFW107DQo+IC1l eHRlcm4gQ0hBUjggY29uc3QgQUxpdF9TSEVMTFtdOw0KPiAtZXh0ZXJuIENIQVI4IGNvbnN0IEFM aXRfUEVJW107DQo+IC1leHRlcm4gQ0hBUjggY29uc3QgQUxpdF9CRFNbXTsNCj4gLWV4dGVybiBD SEFSOCBjb25zdCBBTGl0X0Jkc1RPW107DQo+IC1leHRlcm4gQ0hBUjggY29uc3QgQUxpdF9QRUlN W107DQo+IC0NCj4gLSNlbmRpZiAgLy8gX0xJVEVSQUxTX0hfDQo+IGRpZmYgLS1naXQgYS9QZXJm b3JtYW5jZVBrZy9JbmNsdWRlL0d1aWQvUGVyZm9ybWFuY2VQa2dUb2tlblNwYWNlLmgNCj4gYi9Q ZXJmb3JtYW5jZVBrZy9JbmNsdWRlL0d1aWQvUGVyZm9ybWFuY2VQa2dUb2tlblNwYWNlLmgNCj4g ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDg2ZGZlODdkODQuLjAwMDAwMDAwMDAN Cj4gLS0tIGEvUGVyZm9ybWFuY2VQa2cvSW5jbHVkZS9HdWlkL1BlcmZvcm1hbmNlUGtnVG9rZW5T cGFjZS5oDQo+ICsrKyAvZGV2L251bGwNCj4gQEAgLTEsMjUgKzAsMCBAQA0KPiAtLyoqIEBmaWxl DQo+IC0gIEdVSUQgZm9yIFBlcmZvcm1hbmNlUGtnIFBDRCBUb2tlbiBTcGFjZQ0KPiAtDQo+IC0g IENvcHlyaWdodCAoYykgMjAxMSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2 ZWQuPEJSPg0KPiAtICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxz DQo+IC0gIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFu ZCBjb25kaXRpb25zIG9mIHRoZSBCU0QNCj4gTGljZW5zZQ0KPiAtICB3aGljaCBhY2NvbXBhbmll cyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJl DQo+IGZvdW5kIGF0DQo+IC0gIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGlj ZW5zZS5waHANCj4gLQ0KPiAtICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUg QlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywNCj4gLSAgV0lUSE9VVCBXQVJSQU5U SUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+IEVYUFJFU1MgT1Ig SU1QTElFRC4NCj4gLQ0KPiAtKiovDQo+IC0NCj4gLSNpZm5kZWYgX1BFUkZPUk1BTkNFUEtHX1RP S0VOX1NQQUNFX0dVSURfSF8NCj4gLSNkZWZpbmUgX1BFUkZPUk1BTkNFUEtHX1RPS0VOX1NQQUNF X0dVSURfSF8NCj4gLQ0KPiAtI2RlZmluZSBQRVJGT1JNQU5DRVBLR19UT0tFTl9TUEFDRV9HVUlE IFwNCj4gLSAgeyBcDQo+IC0gICAgMHg2NjkzNDZlZiwgMHhGRGFkLCAweDRhZWIsIHsgMHgwOCwg MHhhNiwgMHgyMSwgMHg0NiwgMHgyZCwgMHgzZiwgMHhlZiwNCj4gMHg3ZCB9IFwNCj4gLSAgfQ0K PiAtDQo+IC1leHRlcm4gRUZJX0dVSUQgZ1BlcmZvcm1hbmNlUGtnVG9rZW5TcGFjZUd1aWQ7DQo+ IC0NCj4gLSNlbmRpZg0KPiBkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VQa2cvSW5jbHVkZS9HdWlk L1RzY0ZyZXF1ZW5jeS5oDQo+IGIvUGVyZm9ybWFuY2VQa2cvSW5jbHVkZS9HdWlkL1RzY0ZyZXF1 ZW5jeS5oDQo+IGRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCBmN2M0YTFjMzk0Li4w MDAwMDAwMDAwDQo+IC0tLSBhL1BlcmZvcm1hbmNlUGtnL0luY2x1ZGUvR3VpZC9Uc2NGcmVxdWVu Y3kuaA0KPiArKysgL2Rldi9udWxsDQo+IEBAIC0xLDI1ICswLDAgQEANCj4gLS8qKiBAZmlsZQ0K PiAtICBHVUlEIGZvciBUU0MgZnJlcXVlbmN5DQo+IC0NCj4gLSAgQ29weXJpZ2h0IChjKSAyMDEx LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+IC0gIFRoaXMg cHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gLSAgYXJlIGxpY2Vuc2Vk IGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhl IEJTRA0KPiBMaWNlbnNlDQo+IC0gIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9u LiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gZm91bmQgYXQNCj4gLSAg aHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiAtDQo+IC0g IFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAi QVMgSVMiDQo+IEJBU0lTLA0KPiAtICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJ T05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiAtDQo+IC0q Ki8NCj4gLQ0KPiAtI2lmbmRlZiBfVFNDX0ZSRVFVRU5DWV9HVUlEX0hfDQo+IC0jZGVmaW5lIF9U U0NfRlJFUVVFTkNZX0dVSURfSF8NCj4gLQ0KPiAtI2RlZmluZSBFRklfVFNDX0ZSRVFVRU5DWV9H VUlEIFwNCj4gLSAgeyBcDQo+IC0gICAgMHhkYmE2YTdlMywgMHhiYjU3LCAweDRiZTcsIHsgMHg4 YSwgMHhmOCwgMHhkNSwgMHg3OCwgMHhkYiwgMHg3ZSwgMHg1NiwNCj4gMHg4NyB9IFwNCj4gLSAg fQ0KPiAtDQo+IC1leHRlcm4gRUZJX0dVSUQgZ0VmaVRzY0ZyZXF1ZW5jeUd1aWQ7DQo+IC0NCj4g LSNlbmRpZg0KPiBkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VQa2cvSW5jbHVkZS9JY2gvR2VuZXJp Y0ljaC5oDQo+IGIvUGVyZm9ybWFuY2VQa2cvSW5jbHVkZS9JY2gvR2VuZXJpY0ljaC5oDQo+IGRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCA2OTdlYTA0OWVlLi4wMDAwMDAwMDAwDQo+ IC0tLSBhL1BlcmZvcm1hbmNlUGtnL0luY2x1ZGUvSWNoL0dlbmVyaWNJY2guaA0KPiArKysgL2Rl di9udWxsDQo+IEBAIC0xLDU1ICswLDAgQEANCj4gLS8qKiBAZmlsZQ0KPiAtICBHZW5lcmljIGRl ZmluaXRpb25zIGZvciByZWdpc3RlcnMgaW4gdGhlIEludGVsIEljaCBkZXZpY2VzLg0KPiAtDQo+ IC0gIFRoZXNlIGRlZmluaXRpb25zIHNob3VsZCB3b3JrIGZvciBhbnkgdmVyc2lvbiBvZiBJY2gu DQo+IC0NCj4gLSAgQ29weXJpZ2h0IChjKSAyMDA5IC0gMjAxMSwgSW50ZWwgQ29ycG9yYXRpb24u IEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiAtICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2Nv bXBhbnlpbmcgbWF0ZXJpYWxzDQo+IC0gIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUg dW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QNCj4gTGljZW5zZQ0KPiAt ICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2Yg dGhlIGxpY2Vuc2UgbWF5IGJlDQo+IGZvdW5kIGF0DQo+IC0gIGh0dHA6Ly9vcGVuc291cmNlLm9y Zy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gLQ0KPiAtICBUSEUgUFJPR1JBTSBJUyBESVNU UklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywNCj4g LSAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlU SEVSDQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gLQ0KPiAtKiovDQo+IC0NCj4gLSNpZm5kZWYg X0dFTkVSSUNfSUNIX0hfDQo+IC0jZGVmaW5lIF9HRU5FUklDX0lDSF9IXw0KPiAtDQo+IC0vKiog R2VuZXJpY0ljaERlZnMgIEdlbmVyaWMgSUNIIERlZmluaXRpb25zLg0KPiAtDQo+IC1EZWZpbml0 aW9ucyBiZWdpbm5pbmcgd2l0aCAiUl8iIGFyZSByZWdpc3RlcnMuDQo+IC1EZWZpbml0aW9ucyBi ZWdpbm5pbmcgd2l0aCAiQl8iIGFyZSBiaXRzIHdpdGhpbiByZWdpc3RlcnMuDQo+IC1EZWZpbml0 aW9ucyBiZWdpbm5pbmcgd2l0aCAiVl8iIGFyZSBtZWFuaW5nZnVsIHZhbHVlcyBvZiBiaXRzIHdp dGhpbiB0aGUNCj4gcmVnaXN0ZXJzLg0KPiAtKiovDQo+IC0vLy9Aew0KPiAtDQo+IC0vLy8gSWNo UGNpQWRkcmVzc2luZyAgUENJIEJ1cyBBZGRyZXNzIGZvciBJQ0guDQo+IC0vLy9Aew0KPiAtI2Rl ZmluZSBQQ0lfQlVTX05VTUJFUl9JQ0ggICAgICAgICAgICAgICAgMHgwMCAgLy8vPCBJQ0ggaXMg b24gUENJIEJ1cyAwLg0KPiAtI2RlZmluZSBQQ0lfREVWSUNFX05VTUJFUl9JQ0hfTFBDICAgICAg ICAgICAzMSAgLy8vPCBJQ0ggaXMgRGV2aWNlIDMxLg0KPiAtI2RlZmluZSBQQ0lfRlVOQ1RJT05f TlVNQkVSX0lDSF9MUEMgICAgICAgICAgMCAgLy8vPCBJQ0ggaXMgRnVuY3Rpb24gMC4NCj4gLS8v L0B9DQo+IC0NCj4gLS8vLyBJY2hBY3BpQ250ciAgIENvbnRyb2wgZm9yIHRoZSBJQ0gncyBBQ1BJ IENvdW50ZXIuDQo+IC0vLy9Aew0KPiAtI2RlZmluZSBSX0lDSF9MUENfQUNQSV9CQVNFICAgICAg ICAgICAgICAgICAgIDB4NDANCj4gLSNkZWZpbmUgICBCX0lDSF9MUENfQUNQSV9CQVNFX0JBUiAg ICAgICAgICAgICAgICAgMHgwMDAwRkY4MA0KPiAtI2RlZmluZSBSX0lDSF9MUENfQUNQSV9DTlQg ICAgICAgICAgICAgICAgICAgIDB4NDQNCj4gLSNkZWZpbmUgICBCX0lDSF9MUENfQUNQSV9DTlRf QUNQSV9FTiAgICAgICAgICAgICAgMHg4MA0KPiAtLy8vQH0NCj4gLQ0KPiAtLy8vIEljaEFjcGlU aW1lciAgVGhlIElDSCdzIEFDUEkgVGltZXIuDQo+IC0vLy9Aew0KPiAtI2RlZmluZSBSX0FDUElf UE0xX1RNUiAgICAgICAgICAgICAgICAgICAgICAgIDB4MDgNCj4gLSNkZWZpbmUgICBWX0FDUElf VE1SX0ZSRVFVRU5DWSAgICAgICAgICAgICAgICAgICAgMzU3OTU0NQ0KPiAtI2RlZmluZSAgIFZf QUNQSV9QTTFfVE1SX01BWF9WQUwgICAgICAgICAgICAgICAgICAweDEwMDAwMDAgLy8vPCBUaGUg dGltZXIgaXMNCj4gMjQgYml0IG92ZXJmbG93Lg0KPiAtLy8vQH0NCj4gLQ0KPiAtLy8vIE1hY3Jv IHRvIGdlbmVyYXRlIHRoZSBQQ0kgYWRkcmVzcyBvZiBhbnkgZ2l2ZW4gSUNIIFJlZ2lzdGVyLg0K PiAtI2RlZmluZSBQQ0lfSUNIX0xQQ19BRERSRVNTKFJlZ2lzdGVyKSBcDQo+IC0gICgoVUlOVE4p KFBDSV9MSUJfQUREUkVTUyAoUENJX0JVU19OVU1CRVJfSUNILA0KPiBQQ0lfREVWSUNFX05VTUJF Ul9JQ0hfTFBDLCBQQ0lfRlVOQ1RJT05fTlVNQkVSX0lDSF9MUEMsDQo+IFJlZ2lzdGVyKSkpDQo+ IC0NCj4gLS8vL0B9DQo+IC0jZW5kaWYgIC8vIF9HRU5FUklDX0lDSF9IXw0KPiBkaWZmIC0tZ2l0 IGEvUGVyZm9ybWFuY2VQa2cvSW5jbHVkZS9QZXJmb3JtYW5jZVRva2Vucy5oDQo+IGIvUGVyZm9y bWFuY2VQa2cvSW5jbHVkZS9QZXJmb3JtYW5jZVRva2Vucy5oDQo+IGRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NA0KPiBpbmRleCBiYmJjNDhkNzc2Li4wMDAwMDAwMDAwDQo+IC0tLSBhL1BlcmZvcm1h bmNlUGtnL0luY2x1ZGUvUGVyZm9ybWFuY2VUb2tlbnMuaA0KPiArKysgL2Rldi9udWxsDQo+IEBA IC0xLDI4ICswLDAgQEANCj4gLS8qKiBAZmlsZQ0KPiAtICBBU0NJSSBTdHJpbmcgTGl0ZXJhbHMg d2l0aCBzcGVjaWFsIG1lYW5pbmcgdG8gUGVyZm9ybWFuY2UgbWVhc3VyZW1lbnQNCj4gYW5kIHRo ZSBEcCB1dGlsaXR5Lg0KPiAtDQo+IC1Db3B5cmlnaHQgKGMpIDIwMDkgLSAyMDEwLCBJbnRlbCBD b3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+IC1UaGlzIHByb2dyYW0gYW5k IHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+IC1hcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZh aWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEDQo+IExpY2Vu c2UNCj4gLXdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4 dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gZm91bmQgYXQNCj4gLWh0dHA6Ly9vcGVuc291cmNl Lm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gLQ0KPiAtVEhFIFBST0dSQU0gSVMgRElT VFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ IC1XSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRI RVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiAtDQo+IC0qKi8NCj4gLQ0KPiAtI2lmbmRlZiBf X1BFUkZPUk1BTkNFX1RPS0VOU19IX18NCj4gLSNkZWZpbmUgX19QRVJGT1JNQU5DRV9UT0tFTlNf SF9fDQo+IC0NCj4gLSNkZWZpbmUgU0VDX1RPSyAgICAgICAgICAgICAgICAgICAgICAgICAiU0VD IiAgICAgICAgICAgICAvLy88IFNFQyBQaGFzZQ0KPiAtI2RlZmluZSBEWEVfVE9LICAgICAgICAg ICAgICAgICAgICAgICAgICJEWEUiICAgICAgICAgICAgIC8vLzwgREVDIFBoYXNlDQo+IC0jZGVm aW5lIFNIRUxMX1RPSyAgICAgICAgICAgICAgICAgICAgICAgIlNIRUxMIiAgICAgICAgICAgLy8v PCBTaGVsbCBQaGFzZQ0KPiAtI2RlZmluZSBQRUlfVE9LICAgICAgICAgICAgICAgICAgICAgICAg ICJQRUkiICAgICAgICAgICAgIC8vLzwgUEVJIFBoYXNlDQo+IC0jZGVmaW5lIEJEU19UT0sgICAg ICAgICAgICAgICAgICAgICAgICAgIkJEUyIgICAgICAgICAgICAgLy8vPCBCRFMgUGhhc2UNCj4g LSNkZWZpbmUgRFJJVkVSQklORElOR19TVEFSVF9UT0sgICAgICAgICAiREI6U3RhcnQ6IiAgICAg ICAvLy88IERyaXZlciBCaW5kaW5nDQo+IFN0YXJ0KCkgZnVuY3Rpb24gY2FsbA0KPiAtI2RlZmlu ZSBEUklWRVJCSU5ESU5HX1NVUFBPUlRfVE9LICAgICAgICJEQjpTdXBwb3J0OiIgICAgIC8vLzwg RHJpdmVyDQo+IEJpbmRpbmcgU3VwcG9ydCgpIGZ1bmN0aW9uIGNhbGwNCj4gLSNkZWZpbmUgTE9B RF9JTUFHRV9UT0sgICAgICAgICAgICAgICAgICAiTG9hZEltYWdlOiIgICAgICAvLy88IExvYWQg YSBkaXNwYXRjaGVkDQo+IG1vZHVsZQ0KPiAtI2RlZmluZSBTVEFSVF9JTUFHRV9UT0sgICAgICAg ICAgICAgICAgICJTdGFydEltYWdlOiIgICAgIC8vLzwgRGlzcGF0Y2hlZA0KPiBNb2R1bGVzIEVu dHJ5IFBvaW50IGV4ZWN1dGlvbg0KPiAtDQo+IC0jZW5kaWYgIC8vIF9fUEVSRk9STUFOQ0VfVE9L RU5TX0hfXw0KPiBkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VQa2cvTGlicmFyeS9Uc2NUaW1lckxp Yi9CYXNlVHNjVGltZXJMaWIuYw0KPiBiL1BlcmZvcm1hbmNlUGtnL0xpYnJhcnkvVHNjVGltZXJM aWIvQmFzZVRzY1RpbWVyTGliLmMNCj4gZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4 IGM0OWY3ODY2NDEuLjAwMDAwMDAwMDANCj4gLS0tIGEvUGVyZm9ybWFuY2VQa2cvTGlicmFyeS9U c2NUaW1lckxpYi9CYXNlVHNjVGltZXJMaWIuYw0KPiArKysgL2Rldi9udWxsDQo+IEBAIC0xLDQ1 ICswLDAgQEANCj4gLS8qKiBAZmlsZQ0KPiAtICBBIEJhc2UgVGltZXIgTGlicmFyeSBpbXBsZW1l bnRhdGlvbiB3aGljaCB1c2VzIHRoZSBUaW1lIFN0YW1wIENvdW50ZXINCj4gaW4gdGhlIHByb2Nl c3Nvci4NCj4gLQ0KPiAtICBGb3IgUGVudGl1bSA0IHByb2Nlc3NvcnMsIEludGVsIFhlb24gcHJv Y2Vzc29ycyAoZmFtaWx5IFswRkhdLCBtb2RlbHMgWzAzSA0KPiBhbmQgaGlnaGVyXSk7DQo+IC0g ICAgZm9yIEludGVsIENvcmUgU29sbyBhbmQgSW50ZWwgQ29yZSBEdW8gcHJvY2Vzc29ycyAoZmFt aWx5IFswNkhdLCBtb2RlbA0KPiBbMEVIXSk7DQo+IC0gICAgZm9yIHRoZSBJbnRlbCBYZW9uIHBy b2Nlc3NvciA1MTAwIHNlcmllcyBhbmQgSW50ZWwgQ29yZSAyIER1byBwcm9jZXNzb3JzDQo+IChm YW1pbHkgWzA2SF0sIG1vZGVsIFswRkhdKTsNCj4gLSAgICBmb3IgSW50ZWwgQ29yZSAyIGFuZCBJ bnRlbCBYZW9uIHByb2Nlc3NvcnMgKGZhbWlseSBbMDZIXSwgZGlzcGxheV9tb2RlbA0KPiBbMTdI XSk7DQo+IC0gICAgZm9yIEludGVsIEF0b20gcHJvY2Vzc29ycyAoZmFtaWx5IFswNkhdLCBkaXNw bGF5X21vZGVsIFsxQ0hdKToNCj4gLSAgdGhlIHRpbWUtc3RhbXAgY291bnRlciBpbmNyZW1lbnRz IGF0IGEgY29uc3RhbnQgcmF0ZS4NCj4gLSAgVGhhdCByYXRlIG1heSBiZSBzZXQgYnkgdGhlIG1h eGltdW0gY29yZS1jbG9jayB0byBidXMtY2xvY2sgcmF0aW8gb2YgdGhlDQo+IHByb2Nlc3NvciBv ciBtYXkgYmUgc2V0IGJ5DQo+IC0gIHRoZSBtYXhpbXVtIHJlc29sdmVkIGZyZXF1ZW5jeSBhdCB3 aGljaCB0aGUgcHJvY2Vzc29yIGlzIGJvb3RlZC4gVGhlDQo+IG1heGltdW0gcmVzb2x2ZWQgZnJl cXVlbmN5IG1heQ0KPiAtICBkaWZmZXIgZnJvbSB0aGUgbWF4aW11bSBxdWFsaWZpZWQgZnJlcXVl bmN5IG9mIHRoZSBwcm9jZXNzb3IuDQo+IC0NCj4gLSAgVGhlIHNwZWNpZmljIHByb2Nlc3NvciBj b25maWd1cmF0aW9uIGRldGVybWluZXMgdGhlIGJlaGF2aW9yLiBDb25zdGFudA0KPiBUU0MgYmVo YXZpb3IgZW5zdXJlcyB0aGF0IHRoZQ0KPiAtICBkdXJhdGlvbiBvZiBlYWNoIGNsb2NrIHRpY2sg aXMgdW5pZm9ybSBhbmQgc3VwcG9ydHMgdGhlIHVzZSBvZiB0aGUgVFNDIGFzIGENCj4gd2FsbCBj bG9jayB0aW1lciBldmVuIGlmDQo+IC0gIHRoZSBwcm9jZXNzb3IgY29yZSBjaGFuZ2VzIGZyZXF1 ZW5jeS4gVGhpcyBpcyB0aGUgYXJjaGl0ZWN0dXJhbCBiZWhhdmlvcg0KPiBtb3ZpbmcgZm9yd2Fy ZC4NCj4gLQ0KPiAtICBBIFByb2Nlc3NvcidzIHN1cHBvcnQgZm9yIGludmFyaWFudCBUU0MgaXMg aW5kaWNhdGVkIGJ5DQo+IENQVUlELjB4ODAwMDAwMDcuRURYWzhdLg0KPiAtDQo+IC0gIENvcHly aWdodCAoYykgMjAwOSAtIDIwMTEsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2Vy dmVkLjxCUj4NCj4gLSAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFs cw0KPiAtICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBh bmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEDQo+IExpY2Vuc2UNCj4gLSAgd2hpY2ggYWNjb21wYW5p ZXMgdGhpcyBkaXN0cmlidXRpb24uIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJl DQo+IGZvdW5kIGF0DQo+IC0gIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGlj ZW5zZS5waHANCj4gLQ0KPiAtICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUg QlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywNCj4gLSAgV0lUSE9VVCBXQVJSQU5U SUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+IEVYUFJFU1MgT1Ig SU1QTElFRC4NCj4gLQ0KPiAtKiovDQo+IC0NCj4gLSNpbmNsdWRlICJUc2NUaW1lckxpYkludGVy bmFsLmgiDQo+IC0NCj4gLS8qKiAgR2V0IFRTQyBmcmVxdWVuY3kuDQo+IC0NCj4gLSAgQHJldHVy biBUaGUgbnVtYmVyIG9mIFRTQyBjb3VudHMgcGVyIHNlY29uZC4NCj4gLQ0KPiAtKiovDQo+IC1V SU5UNjQNCj4gLUludGVybmFsR2V0VHNjRnJlcXVlbmN5ICgNCj4gLSAgVk9JRA0KPiAtICApDQo+ IC17DQo+IC0gIHJldHVybiBJbnRlcm5hbENhbGN1bGF0ZVRzY0ZyZXF1ZW5jeSAoKTsNCj4gLX0N Cj4gLQ0KPiBkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VQa2cvTGlicmFyeS9Uc2NUaW1lckxpYi9C YXNlVHNjVGltZXJMaWIuaW5mDQo+IGIvUGVyZm9ybWFuY2VQa2cvTGlicmFyeS9Uc2NUaW1lckxp Yi9CYXNlVHNjVGltZXJMaWIuaW5mDQo+IGRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRl eCA5ZDYyMjY4N2I1Li4wMDAwMDAwMDAwDQo+IC0tLSBhL1BlcmZvcm1hbmNlUGtnL0xpYnJhcnkv VHNjVGltZXJMaWIvQmFzZVRzY1RpbWVyTGliLmluZg0KPiArKysgL2Rldi9udWxsDQo+IEBAIC0x LDU5ICswLDAgQEANCj4gLSMjIEBmaWxlDQo+IC0jICBCYXNlIFRpbWVyIExpYnJhcnkgd2hpY2gg dXNlcyB0aGUgVGltZSBTdGFtcCBDb3VudGVyIGluIHRoZSBwcm9jZXNzb3IuDQo+IC0jDQo+IC0j ICBOb3RlOiBUaGVyZSB3aWxsIGJlIDFtcyBwZW5hbHR5IHRvIGdldCBUU0MgZnJlcXVlbmN5IGV2 ZXJ5IHRpbWUNCj4gLSMgICAgYnkgd2FpdGluZyBmb3IgMzU3OSBjbG9ja3Mgb2YgdGhlIEFDUEkg dGltZXIsIG9yIDFtcy4NCj4gLSMNCj4gLSMgIE5vdGU6IFRoaXMgbGlicmFyeSBpcyBhIHNhbXBs ZSBpbXBsZW1lbnRhdGlvbiB0aGF0IGRlcGVuZHMgb24gY2hpcHNldA0KPiBBQ1BJIHRpbWVyLg0K PiAtIyAgICBJdCBtYXkgbm90IHdvcmsgb24gbmV3IGdlbmVyYXRpb24gY2hpcHNldC4gUGNBdENo aXBzZXRQa2cNCj4gQWNwaVRpbWVyTGliIGlzDQo+IC0jICAgIHRoZSBnZW5lcmljIHRpbWVyIGxp YnJhcnkgdGhhdCBjYW4gcmVwbGFjZSB0aGlzIG9uZS4NCj4gLSMNCj4gLSMgIEEgdmVyc2lvbiBv ZiB0aGUgVGltZXIgTGlicmFyeSB1c2luZyB0aGUgcHJvY2Vzc29yJ3MgVFNDLg0KPiAtIyAgVGhl IHRpbWUgc3RhbXAgY291bnRlciBpbiBuZXdlciBwcm9jZXNzb3JzIG1heSBzdXBwb3J0IGFuDQo+ IGVuaGFuY2VtZW50LCByZWZlcnJlZCB0byBhcyBpbnZhcmlhbnQgVFNDLg0KPiAtIyAgVGhlIGlu dmFyaWFudCBUU0MgcnVucyBhdCBhIGNvbnN0YW50IHJhdGUgaW4gYWxsIEFDUEkgUC0sIEMtLiBh bmQgVC1zdGF0ZXMuDQo+IC0jICBUaGlzIGlzIHRoZSBhcmNoaXRlY3R1cmFsIGJlaGF2aW9yIG1v dmluZyBmb3J3YXJkLg0KPiAtIyAgVFNDIHJlYWRzIGFyZSBtdWNoIG1vcmUgZWZmaWNpZW50IGFu ZCBkbyBub3QgaW5jdXIgdGhlIG92ZXJoZWFkDQo+IGFzc29jaWF0ZWQgd2l0aCBhIHJpbmcgdHJh bnNpdGlvbiBvcg0KPiAtIyAgYWNjZXNzIHRvIGEgcGxhdGZvcm0gcmVzb3VyY2UuDQo+IC0jDQo+ IC0jICBDb3B5cmlnaHQgKGMpIDIwMDkgLSAyMDE1LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJp Z2h0cyByZXNlcnZlZC48QlI+DQo+IC0jICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlp bmcgbWF0ZXJpYWxzDQo+IC0jICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVy IHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUNCj4gQlNEIExpY2Vuc2UNCj4gLSMgIHdo aWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBs aWNlbnNlIG1heSBiZQ0KPiBmb3VuZCBhdA0KPiAtIyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xp Y2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiAtIyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQg VU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyINCj4gQkFTSVMsDQo+IC0jICBXSVRI T1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4g RVhQUkVTUyBPUiBJTVBMSUVELg0KPiAtIw0KPiAtIyMNCj4gLQ0KPiAtW0RlZmluZXNdDQo+IC0g IElORl9WRVJTSU9OICAgICAgICAgICAgICAgICAgICA9IDB4MDAwMTAwMDUNCj4gLSAgQkFTRV9O QU1FICAgICAgICAgICAgICAgICAgICAgID0gQmFzZVRzY1RpbWVyTGliDQo+IC0gIEZJTEVfR1VJ RCAgICAgICAgICAgICAgICAgICAgICA9IEQyOTMzOEI5LTUwRkUtNGU0Zi1CN0Q0LUExNTBBMkMx RjRGQg0KPiAtICBNT0RVTEVfVFlQRSAgICAgICAgICAgICAgICAgICAgPSBCQVNFDQo+IC0gIFZF UlNJT05fU1RSSU5HICAgICAgICAgICAgICAgICA9IDEuMA0KPiAtICBMSUJSQVJZX0NMQVNTICAg ICAgICAgICAgICAgICAgPSBUaW1lckxpYg0KPiAtDQo+IC0NCj4gLSMNCj4gLSMgIFZBTElEX0FS Q0hJVEVDVFVSRVMgICAgICAgICAgID0gSUEzMiBYNjQNCj4gLSMNCj4gLQ0KPiAtW1NvdXJjZXMu Y29tbW9uXQ0KPiAtICBUc2NUaW1lckxpYlNoYXJlLmMNCj4gLSAgQmFzZVRzY1RpbWVyTGliLmMN Cj4gLSAgVHNjVGltZXJMaWJJbnRlcm5hbC5oDQo+IC0NCj4gLQ0KPiAtW1BhY2thZ2VzXQ0KPiAt ICBNZGVQa2cvTWRlUGtnLmRlYw0KPiAtICBQZXJmb3JtYW5jZVBrZy9QZXJmb3JtYW5jZVBrZy5k ZWMNCj4gLQ0KPiAtDQo+IC1bTGlicmFyeUNsYXNzZXNdDQo+IC0gIFBjZExpYg0KPiAtICBQY2lM aWINCj4gLSAgSW9MaWINCj4gLSAgQmFzZUxpYg0KPiAtDQo+IC1bUGNkLmNvbW1vbl0NCj4gLSAg Z1BlcmZvcm1hbmNlUGtnVG9rZW5TcGFjZUd1aWQuUGNkUGVyZlBrZ0FjcGlJb1BvcnRCYXNlQWRk cmVzcw0KPiAjIyBTT01FVElNRVNfQ09OU1VNRVMNCj4gZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNl UGtnL0xpYnJhcnkvVHNjVGltZXJMaWIvRHhlVHNjVGltZXJMaWIuYw0KPiBiL1BlcmZvcm1hbmNl UGtnL0xpYnJhcnkvVHNjVGltZXJMaWIvRHhlVHNjVGltZXJMaWIuYw0KPiBkZWxldGVkIGZpbGUg bW9kZSAxMDA2NDQNCj4gaW5kZXggYzU0MGQ0MjBkYS4uMDAwMDAwMDAwMA0KPiAtLS0gYS9QZXJm b3JtYW5jZVBrZy9MaWJyYXJ5L1RzY1RpbWVyTGliL0R4ZVRzY1RpbWVyTGliLmMNCj4gKysrIC9k ZXYvbnVsbA0KPiBAQCAtMSwxMDIgKzAsMCBAQA0KPiAtLyoqIEBmaWxlDQo+IC0gIEEgRHhlIFRp bWVyIExpYnJhcnkgaW1wbGVtZW50YXRpb24gd2hpY2ggdXNlcyB0aGUgVGltZSBTdGFtcCBDb3Vu dGVyIGluDQo+IHRoZSBwcm9jZXNzb3IuDQo+IC0NCj4gLSAgRm9yIFBlbnRpdW0gNCBwcm9jZXNz b3JzLCBJbnRlbCBYZW9uIHByb2Nlc3NvcnMgKGZhbWlseSBbMEZIXSwgbW9kZWxzIFswM0gNCj4g YW5kIGhpZ2hlcl0pOw0KPiAtICAgIGZvciBJbnRlbCBDb3JlIFNvbG8gYW5kIEludGVsIENvcmUg RHVvIHByb2Nlc3NvcnMgKGZhbWlseSBbMDZIXSwgbW9kZWwNCj4gWzBFSF0pOw0KPiAtICAgIGZv ciB0aGUgSW50ZWwgWGVvbiBwcm9jZXNzb3IgNTEwMCBzZXJpZXMgYW5kIEludGVsIENvcmUgMiBE dW8gcHJvY2Vzc29ycw0KPiAoZmFtaWx5IFswNkhdLCBtb2RlbCBbMEZIXSk7DQo+IC0gICAgZm9y IEludGVsIENvcmUgMiBhbmQgSW50ZWwgWGVvbiBwcm9jZXNzb3JzIChmYW1pbHkgWzA2SF0sIGRp c3BsYXlfbW9kZWwNCj4gWzE3SF0pOw0KPiAtICAgIGZvciBJbnRlbCBBdG9tIHByb2Nlc3NvcnMg KGZhbWlseSBbMDZIXSwgZGlzcGxheV9tb2RlbCBbMUNIXSk6DQo+IC0gIHRoZSB0aW1lLXN0YW1w IGNvdW50ZXIgaW5jcmVtZW50cyBhdCBhIGNvbnN0YW50IHJhdGUuDQo+IC0gIFRoYXQgcmF0ZSBt YXkgYmUgc2V0IGJ5IHRoZSBtYXhpbXVtIGNvcmUtY2xvY2sgdG8gYnVzLWNsb2NrIHJhdGlvIG9m IHRoZQ0KPiBwcm9jZXNzb3Igb3IgbWF5IGJlIHNldCBieQ0KPiAtICB0aGUgbWF4aW11bSByZXNv bHZlZCBmcmVxdWVuY3kgYXQgd2hpY2ggdGhlIHByb2Nlc3NvciBpcyBib290ZWQuIFRoZQ0KPiBt YXhpbXVtIHJlc29sdmVkIGZyZXF1ZW5jeSBtYXkNCj4gLSAgZGlmZmVyIGZyb20gdGhlIG1heGlt dW0gcXVhbGlmaWVkIGZyZXF1ZW5jeSBvZiB0aGUgcHJvY2Vzc29yLg0KPiAtDQo+IC0gIFRoZSBz cGVjaWZpYyBwcm9jZXNzb3IgY29uZmlndXJhdGlvbiBkZXRlcm1pbmVzIHRoZSBiZWhhdmlvci4g Q29uc3RhbnQNCj4gVFNDIGJlaGF2aW9yIGVuc3VyZXMgdGhhdCB0aGUNCj4gLSAgZHVyYXRpb24g b2YgZWFjaCBjbG9jayB0aWNrIGlzIHVuaWZvcm0gYW5kIHN1cHBvcnRzIHRoZSB1c2Ugb2YgdGhl IFRTQyBhcyBhDQo+IHdhbGwgY2xvY2sgdGltZXIgZXZlbiBpZg0KPiAtICB0aGUgcHJvY2Vzc29y IGNvcmUgY2hhbmdlcyBmcmVxdWVuY3kuIFRoaXMgaXMgdGhlIGFyY2hpdGVjdHVyYWwgYmVoYXZp b3INCj4gbW92aW5nIGZvcndhcmQuDQo+IC0NCj4gLSAgQSBQcm9jZXNzb3IncyBzdXBwb3J0IGZv ciBpbnZhcmlhbnQgVFNDIGlzIGluZGljYXRlZCBieQ0KPiBDUFVJRC4weDgwMDAwMDA3LkVEWFs4 XS4NCj4gLQ0KPiAtICBDb3B5cmlnaHQgKGMpIDIwMDkgLSAyMDExLCBJbnRlbCBDb3Jwb3JhdGlv bi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+IC0gIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFj Y29tcGFueWluZyBtYXRlcmlhbHMNCj4gLSAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJs ZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRA0KPiBMaWNlbnNlDQo+ IC0gIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgZnVsbCB0ZXh0IG9m IHRoZSBsaWNlbnNlIG1heSBiZQ0KPiBmb3VuZCBhdA0KPiAtICBodHRwOi8vb3BlbnNvdXJjZS5v cmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+IC0NCj4gLSAgVEhFIFBST0dSQU0gSVMgRElT VFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ IC0gIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJ VEhFUg0KPiBFWFBSRVNTIE9SIElNUExJRUQuDQo+IC0NCj4gLSoqLw0KPiAtDQo+IC0jaW5jbHVk ZSA8UGlEeGUuaD4NCj4gLSNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlCb290U2VydmljZXNUYWJsZUxp Yi5oPg0KPiAtI2luY2x1ZGUgPExpYnJhcnkvVWVmaUxpYi5oPg0KPiAtI2luY2x1ZGUgPExpYnJh cnkvRGVidWdMaWIuaD4NCj4gLSNpbmNsdWRlIDxHdWlkL1RzY0ZyZXF1ZW5jeS5oPg0KPiAtI2lu Y2x1ZGUgIlRzY1RpbWVyTGliSW50ZXJuYWwuaCINCj4gLQ0KPiAtVUlOVDY0IG1Uc2NGcmVxdWVu Y3k7DQo+IC0NCj4gLS8qKiBUaGUgY29uc3RydWN0b3IgZnVuY3Rpb24gZGV0ZXJtaW5lcyB0aGUg YWN0dWFsIFRTQyBmcmVxdWVuY3kuDQo+IC0NCj4gLSAgRmlyc3QsIEdldCBUU0MgZnJlcXVlbmN5 IGZyb20gc3lzdGVtIGNvbmZpZ3VyYXRpb24gdGFibGUgd2l0aCBUU0MNCj4gZnJlcXVlbmN5IEdV SUQsDQo+IC0gIGlmIHRoZSB0YWJsZSBpcyBub3QgZm91bmQsIGluc3RhbGwgaXQuDQo+IC0gIFRo aXMgZnVuY3Rpb24gd2lsbCBhbHdheXMgcmV0dXJuIEVGSV9TVUNDRVNTLg0KPiAtDQo+IC0gIEBw YXJhbSAgSW1hZ2VIYW5kbGUgICAgICAgVGhlIGZpcm13YXJlIGFsbG9jYXRlZCBoYW5kbGUgZm9y IHRoZSBFRkkgaW1hZ2UuDQo+IC0gIEBwYXJhbSAgU3lzdGVtVGFibGUgICAgICAgQSBwb2ludGVy IHRvIHRoZSBFRkkgU3lzdGVtIFRhYmxlLg0KPiAtDQo+IC0gIEByZXR2YWwgRUZJX1NVQ0NFU1Mg ICBUaGUgY29uc3RydWN0b3IgYWx3YXlzIHJldHVybnMgRUZJX1NVQ0NFU1MuDQo+IC0NCj4gLSoq Lw0KPiAtRUZJX1NUQVRVUw0KPiAtRUZJQVBJDQo+IC1EeGVUc2NUaW1lckxpYkNvbnN0cnVjdG9y ICgNCj4gLSAgSU4gRUZJX0hBTkRMRSAgICAgICAgSW1hZ2VIYW5kbGUsDQo+IC0gIElOIEVGSV9T WVNURU1fVEFCTEUgICpTeXN0ZW1UYWJsZQ0KPiAtICApDQo+IC17DQo+IC0gIEVGSV9TVEFUVVMg IFN0YXR1czsNCj4gLSAgVUlOVDY0ICAgICAgKlRzY0ZyZXF1ZW5jeTsNCj4gLQ0KPiAtICBUc2NG cmVxdWVuY3kgPSBOVUxMOw0KPiAtICAvLw0KPiAtICAvLyBHZXQgVFNDIGZyZXF1ZW5jeSBmcm9t IHN5c3RlbSBjb25maWd1cmF0aW9uIHRhYmxlIHdpdGggVFNDIGZyZXF1ZW5jeQ0KPiBHVUlELg0K PiAtICAvLw0KPiAtICBTdGF0dXMgPSBFZmlHZXRTeXN0ZW1Db25maWd1cmF0aW9uVGFibGUgKCZn RWZpVHNjRnJlcXVlbmN5R3VpZCwgKFZPSUQNCj4gKiopICZUc2NGcmVxdWVuY3kpOw0KPiAtICBp ZiAoU3RhdHVzID09IEVGSV9TVUNDRVNTKSB7DQo+IC0gICAgQVNTRVJUIChUc2NGcmVxdWVuY3kg IT0gTlVMTCk7DQo+IC0gICAgbVRzY0ZyZXF1ZW5jeSA9ICpUc2NGcmVxdWVuY3k7DQo+IC0gICAg cmV0dXJuIEVGSV9TVUNDRVNTOw0KPiAtICB9DQo+IC0NCj4gLSAgLy8NCj4gLSAgLy8gVFNDIGZy ZXF1ZW5jeSBHVUlEIHN5c3RlbSBjb25maWd1cmF0aW9uIHRhYmxlIGlzIG5vdCBmb3VuZCwgaW5z dGFsbCBpdC4NCj4gLSAgLy8NCj4gLQ0KPiAtICBTdGF0dXMgPSBnQlMtPkFsbG9jYXRlUG9vbCAo RWZpQm9vdFNlcnZpY2VzRGF0YSwgc2l6ZW9mIChVSU5UNjQpLCAoVk9JRA0KPiAqKikgJlRzY0Zy ZXF1ZW5jeSk7DQo+IC0gIEFTU0VSVF9FRklfRVJST1IgKFN0YXR1cyk7DQo+IC0NCj4gLSAgKlRz Y0ZyZXF1ZW5jeSA9IEludGVybmFsQ2FsY3VsYXRlVHNjRnJlcXVlbmN5ICgpOw0KPiAtICAvLw0K PiAtICAvLyBUc2NGcmVxdWVuY3kgbm93IHBvaW50cyB0byB0aGUgbnVtYmVyIG9mIFRTQyBjb3Vu dHMgcGVyIHNlY29uZCwNCj4gaW5zdGFsbCBzeXN0ZW0gY29uZmlndXJhdGlvbiB0YWJsZSBmb3Ig aXQuDQo+IC0gIC8vDQo+IC0gIGdCUy0+SW5zdGFsbENvbmZpZ3VyYXRpb25UYWJsZSAoJmdFZmlU c2NGcmVxdWVuY3lHdWlkLCBUc2NGcmVxdWVuY3kpOw0KPiAtDQo+IC0gIG1Uc2NGcmVxdWVuY3kg PSAqVHNjRnJlcXVlbmN5Ow0KPiAtICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+IC19DQo+IC0NCj4g LS8qKiAgR2V0IFRTQyBmcmVxdWVuY3kuDQo+IC0NCj4gLSAgQHJldHVybiBUaGUgbnVtYmVyIG9m IFRTQyBjb3VudHMgcGVyIHNlY29uZC4NCj4gLQ0KPiAtKiovDQo+IC1VSU5UNjQNCj4gLUludGVy bmFsR2V0VHNjRnJlcXVlbmN5ICgNCj4gLSAgVk9JRA0KPiAtICApDQo+IC17DQo+IC0gIHJldHVy biBtVHNjRnJlcXVlbmN5Ow0KPiAtfQ0KPiAtDQo+IGRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVBr Zy9MaWJyYXJ5L1RzY1RpbWVyTGliL0R4ZVRzY1RpbWVyTGliLmluZg0KPiBiL1BlcmZvcm1hbmNl UGtnL0xpYnJhcnkvVHNjVGltZXJMaWIvRHhlVHNjVGltZXJMaWIuaW5mDQo+IGRlbGV0ZWQgZmls ZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAxNmRiNWY3M2VhLi4wMDAwMDAwMDAwDQo+IC0tLSBhL1Bl cmZvcm1hbmNlUGtnL0xpYnJhcnkvVHNjVGltZXJMaWIvRHhlVHNjVGltZXJMaWIuaW5mDQo+ICsr KyAvZGV2L251bGwNCj4gQEAgLTEsNjQgKzAsMCBAQA0KPiAtIyMgQGZpbGUNCj4gLSMgIER4ZSBU aW1lciBMaWJyYXJ5IHdoaWNoIHVzZXMgdGhlIFRpbWUgU3RhbXAgQ291bnRlciBpbiB0aGUgcHJv Y2Vzc29yLg0KPiAtIw0KPiAtIyAgTm90ZTogVGhpcyBsaWJyYXJ5IGlzIGEgc2FtcGxlIGltcGxl bWVudGF0aW9uIHRoYXQgZGVwZW5kcyBvbiBjaGlwc2V0DQo+IEFDUEkgdGltZXIuDQo+IC0jICAg IEl0IG1heSBub3Qgd29yayBvbiBuZXcgZ2VuZXJhdGlvbiBjaGlwc2V0LiBQY0F0Q2hpcHNldFBr Zw0KPiBBY3BpVGltZXJMaWIgaXMNCj4gLSMgICAgdGhlIGdlbmVyaWMgdGltZXIgbGlicmFyeSB0 aGF0IGNhbiByZXBsYWNlIHRoaXMgb25lLg0KPiAtIw0KPiAtIyAgQSB2ZXJzaW9uIG9mIHRoZSBU aW1lciBMaWJyYXJ5IHVzaW5nIHRoZSBwcm9jZXNzb3IncyBUU0MuDQo+IC0jICBUaGUgdGltZSBz dGFtcCBjb3VudGVyIGluIG5ld2VyIHByb2Nlc3NvcnMgbWF5IHN1cHBvcnQgYW4NCj4gZW5oYW5j ZW1lbnQsIHJlZmVycmVkIHRvIGFzIGludmFyaWFudCBUU0MuDQo+IC0jICBUaGUgaW52YXJpYW50 IFRTQyBydW5zIGF0IGEgY29uc3RhbnQgcmF0ZSBpbiBhbGwgQUNQSSBQLSwgQy0uIGFuZCBULXN0 YXRlcy4NCj4gLSMgIFRoaXMgaXMgdGhlIGFyY2hpdGVjdHVyYWwgYmVoYXZpb3IgbW92aW5nIGZv cndhcmQuDQo+IC0jICBUU0MgcmVhZHMgYXJlIG11Y2ggbW9yZSBlZmZpY2llbnQgYW5kIGRvIG5v dCBpbmN1ciB0aGUgb3ZlcmhlYWQNCj4gYXNzb2NpYXRlZCB3aXRoIGEgcmluZyB0cmFuc2l0aW9u IG9yDQo+IC0jICBhY2Nlc3MgdG8gYSBwbGF0Zm9ybSByZXNvdXJjZS4NCj4gLSMNCj4gLSMgIENv cHlyaWdodCAoYykgMjAwOSAtIDIwMTUsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJl c2VydmVkLjxCUj4NCj4gLSMgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRl cmlhbHMNCj4gLSMgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRl cm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZQ0KPiBCU0QgTGljZW5zZQ0KPiAtIyAgd2hpY2ggYWNj b21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2Ug bWF5IGJlDQo+IGZvdW5kIGF0DQo+IC0jICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMv YnNkLWxpY2Vuc2UucGhwDQo+IC0jICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBU SEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywNCj4gLSMgIFdJVEhPVVQgV0FS UkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBFWFBSRVNT IE9SIElNUExJRUQuDQo+IC0jDQo+IC0jIw0KPiAtDQo+IC1bRGVmaW5lc10NCj4gLSAgSU5GX1ZF UlNJT04gICAgICAgICAgICAgICAgICAgID0gMHgwMDAxMDAwNQ0KPiAtICBCQVNFX05BTUUgICAg ICAgICAgICAgICAgICAgICAgPSBEeGVUc2NUaW1lckxpYg0KPiAtICBGSUxFX0dVSUQgICAgICAg ICAgICAgICAgICAgICAgPSA5NWFiMDMwZi1iNGZkLTRlZTQtOTJhNS05ZTA0ZTg3NjM0ZDkNCj4g LSAgTU9EVUxFX1RZUEUgICAgICAgICAgICAgICAgICAgID0gRFhFX0RSSVZFUg0KPiAtICBWRVJT SU9OX1NUUklORyAgICAgICAgICAgICAgICAgPSAxLjANCj4gLSAgTElCUkFSWV9DTEFTUyAgICAg ICAgICAgICAgICAgID0gVGltZXJMaWJ8RFhFX0NPUkUgRFhFX0RSSVZFUg0KPiBEWEVfUlVOVElN RV9EUklWRVIgRFhFX1NNTV9EUklWRVIgVUVGSV9BUFBMSUNBVElPTg0KPiBVRUZJX0RSSVZFUiBT TU1fQ09SRQ0KPiAtDQo+IC0gIENPTlNUUlVDVE9SICAgICAgICAgICAgICAgICAgICA9IER4ZVRz Y1RpbWVyTGliQ29uc3RydWN0b3INCj4gLQ0KPiAtDQo+IC0jDQo+IC0jICBWQUxJRF9BUkNISVRF Q1RVUkVTICAgICAgICAgICA9IElBMzIgWDY0DQo+IC0jDQo+IC0NCj4gLVtTb3VyY2VzLmNvbW1v bl0NCj4gLSAgVHNjVGltZXJMaWJTaGFyZS5jDQo+IC0gIER4ZVRzY1RpbWVyTGliLmMNCj4gLSAg VHNjVGltZXJMaWJJbnRlcm5hbC5oDQo+IC0NCj4gLQ0KPiAtW1BhY2thZ2VzXQ0KPiAtICBNZGVQ a2cvTWRlUGtnLmRlYw0KPiAtICBQZXJmb3JtYW5jZVBrZy9QZXJmb3JtYW5jZVBrZy5kZWMNCj4g LQ0KPiAtDQo+IC1bTGlicmFyeUNsYXNzZXNdDQo+IC0gIFVlZmlCb290U2VydmljZXNUYWJsZUxp Yg0KPiAtICBQY2RMaWINCj4gLSAgUGNpTGliDQo+IC0gIElvTGliDQo+IC0gIEJhc2VMaWINCj4g LSAgVWVmaUxpYg0KPiAtICBEZWJ1Z0xpYg0KPiAtDQo+IC1bR3VpZHNdDQo+IC0gIGdFZmlUc2NG cmVxdWVuY3lHdWlkICAgICAgICAgICAgICAgICAgICAgICAgICAjIyBDT05TVU1FUyAjIyBTeXN0 ZW1UYWJsZQ0KPiAtDQo+IC1bUGNkLmNvbW1vbl0NCj4gLSAgZ1BlcmZvcm1hbmNlUGtnVG9rZW5T cGFjZUd1aWQuUGNkUGVyZlBrZ0FjcGlJb1BvcnRCYXNlQWRkcmVzcyAgICMjDQo+IFNPTUVUSU1F U19DT05TVU1FUw0KPiBkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VQa2cvTGlicmFyeS9Uc2NUaW1l ckxpYi9QZWlUc2NUaW1lckxpYi5jDQo+IGIvUGVyZm9ybWFuY2VQa2cvTGlicmFyeS9Uc2NUaW1l ckxpYi9QZWlUc2NUaW1lckxpYi5jDQo+IGRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRl eCBhZjM2MDBiMDA3Li4wMDAwMDAwMDAwDQo+IC0tLSBhL1BlcmZvcm1hbmNlUGtnL0xpYnJhcnkv VHNjVGltZXJMaWIvUGVpVHNjVGltZXJMaWIuYw0KPiArKysgL2Rldi9udWxsDQo+IEBAIC0xLDc2 ICswLDAgQEANCj4gLS8qKiBAZmlsZQ0KPiAtICBBIFBlaSBUaW1lciBMaWJyYXJ5IGltcGxlbWVu dGF0aW9uIHdoaWNoIHVzZXMgdGhlIFRpbWUgU3RhbXAgQ291bnRlciBpbg0KPiB0aGUgcHJvY2Vz c29yLg0KPiAtDQo+IC0gIEZvciBQZW50aXVtIDQgcHJvY2Vzc29ycywgSW50ZWwgWGVvbiBwcm9j ZXNzb3JzIChmYW1pbHkgWzBGSF0sIG1vZGVscyBbMDNIDQo+IGFuZCBoaWdoZXJdKTsNCj4gLSAg ICBmb3IgSW50ZWwgQ29yZSBTb2xvIGFuZCBJbnRlbCBDb3JlIER1byBwcm9jZXNzb3JzIChmYW1p bHkgWzA2SF0sIG1vZGVsDQo+IFswRUhdKTsNCj4gLSAgICBmb3IgdGhlIEludGVsIFhlb24gcHJv Y2Vzc29yIDUxMDAgc2VyaWVzIGFuZCBJbnRlbCBDb3JlIDIgRHVvIHByb2Nlc3NvcnMNCj4gKGZh bWlseSBbMDZIXSwgbW9kZWwgWzBGSF0pOw0KPiAtICAgIGZvciBJbnRlbCBDb3JlIDIgYW5kIElu dGVsIFhlb24gcHJvY2Vzc29ycyAoZmFtaWx5IFswNkhdLCBkaXNwbGF5X21vZGVsDQo+IFsxN0hd KTsNCj4gLSAgICBmb3IgSW50ZWwgQXRvbSBwcm9jZXNzb3JzIChmYW1pbHkgWzA2SF0sIGRpc3Bs YXlfbW9kZWwgWzFDSF0pOg0KPiAtICB0aGUgdGltZS1zdGFtcCBjb3VudGVyIGluY3JlbWVudHMg YXQgYSBjb25zdGFudCByYXRlLg0KPiAtICBUaGF0IHJhdGUgbWF5IGJlIHNldCBieSB0aGUgbWF4 aW11bSBjb3JlLWNsb2NrIHRvIGJ1cy1jbG9jayByYXRpbyBvZiB0aGUNCj4gcHJvY2Vzc29yIG9y IG1heSBiZSBzZXQgYnkNCj4gLSAgdGhlIG1heGltdW0gcmVzb2x2ZWQgZnJlcXVlbmN5IGF0IHdo aWNoIHRoZSBwcm9jZXNzb3IgaXMgYm9vdGVkLiBUaGUNCj4gbWF4aW11bSByZXNvbHZlZCBmcmVx dWVuY3kgbWF5DQo+IC0gIGRpZmZlciBmcm9tIHRoZSBtYXhpbXVtIHF1YWxpZmllZCBmcmVxdWVu Y3kgb2YgdGhlIHByb2Nlc3Nvci4NCj4gLQ0KPiAtICBUaGUgc3BlY2lmaWMgcHJvY2Vzc29yIGNv bmZpZ3VyYXRpb24gZGV0ZXJtaW5lcyB0aGUgYmVoYXZpb3IuIENvbnN0YW50DQo+IFRTQyBiZWhh dmlvciBlbnN1cmVzIHRoYXQgdGhlDQo+IC0gIGR1cmF0aW9uIG9mIGVhY2ggY2xvY2sgdGljayBp cyB1bmlmb3JtIGFuZCBzdXBwb3J0cyB0aGUgdXNlIG9mIHRoZSBUU0MgYXMgYQ0KPiB3YWxsIGNs b2NrIHRpbWVyIGV2ZW4gaWYNCj4gLSAgdGhlIHByb2Nlc3NvciBjb3JlIGNoYW5nZXMgZnJlcXVl bmN5LiBUaGlzIGlzIHRoZSBhcmNoaXRlY3R1cmFsIGJlaGF2aW9yDQo+IG1vdmluZyBmb3J3YXJk Lg0KPiAtDQo+IC0gIEEgUHJvY2Vzc29yJ3Mgc3VwcG9ydCBmb3IgaW52YXJpYW50IFRTQyBpcyBp bmRpY2F0ZWQgYnkNCj4gQ1BVSUQuMHg4MDAwMDAwNy5FRFhbOF0uDQo+IC0NCj4gLSAgQ29weXJp Z2h0IChjKSAyMDA5IC0gMjAxMSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2 ZWQuPEJSPg0KPiAtICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxz DQo+IC0gIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFu ZCBjb25kaXRpb25zIG9mIHRoZSBCU0QNCj4gTGljZW5zZQ0KPiAtICB3aGljaCBhY2NvbXBhbmll cyB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUN Cj4gZm91bmQgYXQNCj4gLSAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNl bnNlLnBocA0KPiAtDQo+IC0gIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBC U0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+IEJBU0lTLA0KPiAtICBXSVRIT1VUIFdBUlJBTlRJ RVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJ TVBMSUVELg0KPiAtDQo+IC0qKi8NCj4gLQ0KPiAtI2luY2x1ZGUgPFBpUGVpLmg+DQo+IC0jaW5j bHVkZSA8TGlicmFyeS9Ib2JMaWIuaD4NCj4gLSNpbmNsdWRlIDxHdWlkL1RzY0ZyZXF1ZW5jeS5o Pg0KPiAtI2luY2x1ZGUgIlRzY1RpbWVyTGliSW50ZXJuYWwuaCINCj4gLQ0KPiAtLyoqICBHZXQg VFNDIGZyZXF1ZW5jeSBmcm9tIFRTQyBmcmVxdWVuY3kgR1VJRCBIT0IsIGlmIHRoZSBIT0IgaXMg bm90DQo+IGZvdW5kLCBidWlsZCBpdC4NCj4gLQ0KPiAtICBAcmV0dXJuIFRoZSBudW1iZXIgb2Yg VFNDIGNvdW50cyBwZXIgc2Vjb25kLg0KPiAtDQo+IC0qKi8NCj4gLVVJTlQ2NA0KPiAtSW50ZXJu YWxHZXRUc2NGcmVxdWVuY3kgKA0KPiAtICBWT0lEDQo+IC0gICkNCj4gLXsNCj4gLSAgRUZJX0hP Ql9HVUlEX1RZUEUgICAgICAgKkd1aWRIb2I7DQo+IC0gIFZPSUQgICAgICAgICpEYXRhSW5Ib2I7 DQo+IC0gIFVJTlQ2NCAgICAgIFRzY0ZyZXF1ZW5jeTsNCj4gLQ0KPiAtICAvLw0KPiAtICAvLyBH ZXQgVFNDIGZyZXF1ZW5jeSBmcm9tIFRTQyBmcmVxdWVuY3kgR1VJRCBIT0IuDQo+IC0gIC8vDQo+ IC0gIEd1aWRIb2IgPSBHZXRGaXJzdEd1aWRIb2IgKCZnRWZpVHNjRnJlcXVlbmN5R3VpZCk7DQo+ IC0gIGlmIChHdWlkSG9iICE9IE5VTEwpIHsNCj4gLSAgICBEYXRhSW5Ib2IgPSBHRVRfR1VJRF9I T0JfREFUQSAoR3VpZEhvYik7DQo+IC0gICAgVHNjRnJlcXVlbmN5ID0gKiAoVUlOVDY0ICopIERh dGFJbkhvYjsNCj4gLSAgICByZXR1cm4gVHNjRnJlcXVlbmN5Ow0KPiAtICB9DQo+IC0NCj4gLSAg Ly8NCj4gLSAgLy8gVFNDIGZyZXF1ZW5jeSBHVUlEIEhPQiBpcyBub3QgZm91bmQsIGJ1aWxkIGl0 Lg0KPiAtICAvLw0KPiAtDQo+IC0gIFRzY0ZyZXF1ZW5jeSA9IEludGVybmFsQ2FsY3VsYXRlVHNj RnJlcXVlbmN5ICgpOw0KPiAtICAvLw0KPiAtICAvLyBUc2NGcmVxdWVuY3kgaXMgbm93IGVxdWFs IHRvIHRoZSBudW1iZXIgb2YgVFNDIGNvdW50cyBwZXIgc2Vjb25kLA0KPiBidWlsZCBHVUlEIEhP QiBmb3IgaXQuDQo+IC0gIC8vDQo+IC0gIEJ1aWxkR3VpZERhdGFIb2IgKA0KPiAtICAgICZnRWZp VHNjRnJlcXVlbmN5R3VpZCwNCj4gLSAgICAmVHNjRnJlcXVlbmN5LA0KPiAtICAgIHNpemVvZiAo VUlOVDY0KQ0KPiAtICAgICk7DQo+IC0NCj4gLSAgcmV0dXJuIFRzY0ZyZXF1ZW5jeTsNCj4gLX0N Cj4gLQ0KPiBkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VQa2cvTGlicmFyeS9Uc2NUaW1lckxpYi9Q ZWlUc2NUaW1lckxpYi5pbmYNCj4gYi9QZXJmb3JtYW5jZVBrZy9MaWJyYXJ5L1RzY1RpbWVyTGli L1BlaVRzY1RpbWVyTGliLmluZg0KPiBkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXgg NjhlMzRlMGVkZS4uMDAwMDAwMDAwMA0KPiAtLS0gYS9QZXJmb3JtYW5jZVBrZy9MaWJyYXJ5L1Rz Y1RpbWVyTGliL1BlaVRzY1RpbWVyTGliLmluZg0KPiArKysgL2Rldi9udWxsDQo+IEBAIC0xLDYw ICswLDAgQEANCj4gLSMjIEBmaWxlDQo+IC0jICBQZWkgVGltZXIgTGlicmFyeSB3aGljaCB1c2Vz IHRoZSBUaW1lIFN0YW1wIENvdW50ZXIgaW4gdGhlIHByb2Nlc3Nvci4NCj4gLSMNCj4gLSMgIE5v dGU6IFRoaXMgbGlicmFyeSBpcyBhIHNhbXBsZSBpbXBsZW1lbnRhdGlvbiB0aGF0IGRlcGVuZHMg b24gY2hpcHNldA0KPiBBQ1BJIHRpbWVyLg0KPiAtIyAgICBJdCBtYXkgbm90IHdvcmsgb24gbmV3 IGdlbmVyYXRpb24gY2hpcHNldC4gUGNBdENoaXBzZXRQa2cNCj4gQWNwaVRpbWVyTGliIGlzDQo+ IC0jICAgIHRoZSBnZW5lcmljIHRpbWVyIGxpYnJhcnkgdGhhdCBjYW4gcmVwbGFjZSB0aGlzIG9u ZS4NCj4gLSMNCj4gLSMgIEEgdmVyc2lvbiBvZiB0aGUgVGltZXIgTGlicmFyeSB1c2luZyB0aGUg cHJvY2Vzc29yJ3MgVFNDLg0KPiAtIyAgVGhlIHRpbWUgc3RhbXAgY291bnRlciBpbiBuZXdlciBw cm9jZXNzb3JzIG1heSBzdXBwb3J0IGFuDQo+IGVuaGFuY2VtZW50LCByZWZlcnJlZCB0byBhcyBp bnZhcmlhbnQgVFNDLg0KPiAtIyAgVGhlIGludmFyaWFudCBUU0MgcnVucyBhdCBhIGNvbnN0YW50 IHJhdGUgaW4gYWxsIEFDUEkgUC0sIEMtLiBhbmQgVC1zdGF0ZXMuDQo+IC0jICBUaGlzIGlzIHRo ZSBhcmNoaXRlY3R1cmFsIGJlaGF2aW9yIG1vdmluZyBmb3J3YXJkLg0KPiAtIyAgVFNDIHJlYWRz IGFyZSBtdWNoIG1vcmUgZWZmaWNpZW50IGFuZCBkbyBub3QgaW5jdXIgdGhlIG92ZXJoZWFkDQo+ IGFzc29jaWF0ZWQgd2l0aCBhIHJpbmcgdHJhbnNpdGlvbiBvcg0KPiAtIyAgYWNjZXNzIHRvIGEg cGxhdGZvcm0gcmVzb3VyY2UuDQo+IC0jDQo+IC0jICBDb3B5cmlnaHQgKGMpIDIwMDkgLSAyMDE1 LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+IC0jICBUaGlz IHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+IC0jICBhcmUgbGljZW5z ZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0 aGUNCj4gQlNEIExpY2Vuc2UNCj4gLSMgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0 aW9uLiBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZQ0KPiBmb3VuZCBhdA0KPiAt IyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiAtIyAg VEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJB UyBJUyINCj4gQkFTSVMsDQo+IC0jICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJ T05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiAtIw0KPiAt IyMNCj4gLQ0KPiAtW0RlZmluZXNdDQo+IC0gIElORl9WRVJTSU9OICAgICAgICAgICAgICAgICAg ICA9IDB4MDAwMTAwMDUNCj4gLSAgQkFTRV9OQU1FICAgICAgICAgICAgICAgICAgICAgID0gUGVp VHNjVGltZXJMaWINCj4gLSAgRklMRV9HVUlEICAgICAgICAgICAgICAgICAgICAgID0gMzQyQzM2 QzAtMTVERi00M2I0LTlFQzktRkJGNzQ4QkZCM0QxDQo+IC0gIE1PRFVMRV9UWVBFICAgICAgICAg ICAgICAgICAgICA9IFBFSU0NCj4gLSAgVkVSU0lPTl9TVFJJTkcgICAgICAgICAgICAgICAgID0g MS4wDQo+IC0gIExJQlJBUllfQ0xBU1MgICAgICAgICAgICAgICAgICA9IFRpbWVyTGlifFBFSU0g UEVJX0NPUkUNCj4gLQ0KPiAtDQo+IC0jDQo+IC0jICBWQUxJRF9BUkNISVRFQ1RVUkVTICAgICAg ICAgICA9IElBMzIgWDY0DQo+IC0jDQo+IC0NCj4gLVtTb3VyY2VzLmNvbW1vbl0NCj4gLSAgVHNj VGltZXJMaWJTaGFyZS5jDQo+IC0gIFBlaVRzY1RpbWVyTGliLmMNCj4gLSAgVHNjVGltZXJMaWJJ bnRlcm5hbC5oDQo+IC0NCj4gLQ0KPiAtW1BhY2thZ2VzXQ0KPiAtICBNZGVQa2cvTWRlUGtnLmRl Yw0KPiAtICBQZXJmb3JtYW5jZVBrZy9QZXJmb3JtYW5jZVBrZy5kZWMNCj4gLQ0KPiAtDQo+IC1b TGlicmFyeUNsYXNzZXNdDQo+IC0gIFBjZExpYg0KPiAtICBQY2lMaWINCj4gLSAgSW9MaWINCj4g LSAgQmFzZUxpYg0KPiAtICBIb2JMaWINCj4gLQ0KPiAtW0d1aWRzXQ0KPiAtICBnRWZpVHNjRnJl cXVlbmN5R3VpZCAgICAgICAgICAgICAgICAgICAgICAgICAgIyMgUFJPRFVDRVMgIyMgSE9CDQo+ IC0NCj4gLVtQY2QuY29tbW9uXQ0KPiAtICBnUGVyZm9ybWFuY2VQa2dUb2tlblNwYWNlR3VpZC5Q Y2RQZXJmUGtnQWNwaUlvUG9ydEJhc2VBZGRyZXNzDQo+ICMjIFNPTUVUSU1FU19DT05TVU1FUw0K PiBkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VQa2cvTGlicmFyeS9Uc2NUaW1lckxpYi9Uc2NUaW1l ckxpYkludGVybmFsLmgNCj4gYi9QZXJmb3JtYW5jZVBrZy9MaWJyYXJ5L1RzY1RpbWVyTGliL1Rz Y1RpbWVyTGliSW50ZXJuYWwuaA0KPiBkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXgg YTRlZDBlYmIzMS4uMDAwMDAwMDAwMA0KPiAtLS0gYS9QZXJmb3JtYW5jZVBrZy9MaWJyYXJ5L1Rz Y1RpbWVyTGliL1RzY1RpbWVyTGliSW50ZXJuYWwuaA0KPiArKysgL2Rldi9udWxsDQo+IEBAIC0x LDU1ICswLDAgQEANCj4gLS8qKiBAZmlsZQ0KPiAtICBJbnRlcm5hbCBoZWFkZXIgZmlsZSBmb3Ig VHNjVGltZXJMaWIgaW5zdGFuY2VzLg0KPiAtDQo+IC0gIENvcHlyaWdodCAoYykgMjAwOSAtIDIw MTEsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gLSAgVGhp cyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiAtICBhcmUgbGljZW5z ZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0 aGUgQlNEDQo+IExpY2Vuc2UNCj4gLSAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRp b24uIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlDQo+IGZvdW5kIGF0DQo+IC0g IGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gLQ0KPiAt ICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4g IkFTIElTIg0KPiBCQVNJUywNCj4gLSAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFU SU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gLQ0KPiAt KiovDQo+IC0NCj4gLSNpZm5kZWYgX1RTQ19USU1FUl9MSUJfSU5URVJOQUxfSF8NCj4gLSNkZWZp bmUgX1RTQ19USU1FUl9MSUJfSU5URVJOQUxfSF8NCj4gLQ0KPiAtI2luY2x1ZGUgPEljaC9HZW5l cmljSWNoLmg+DQo+IC0NCj4gLSNpbmNsdWRlIDxMaWJyYXJ5L1RpbWVyTGliLmg+DQo+IC0jaW5j bHVkZSA8TGlicmFyeS9CYXNlTGliLmg+DQo+IC0jaW5jbHVkZSA8TGlicmFyeS9Jb0xpYi5oPg0K PiAtI2luY2x1ZGUgPExpYnJhcnkvUGNpTGliLmg+DQo+IC0jaW5jbHVkZSA8TGlicmFyeS9QY2RM aWIuaD4NCj4gLQ0KPiAtLyoqICBHZXQgVFNDIGZyZXF1ZW5jeS4NCj4gLQ0KPiAtICBAcmV0dXJu IFRoZSBudW1iZXIgb2YgVFNDIGNvdW50cyBwZXIgc2Vjb25kLg0KPiAtDQo+IC0qKi8NCj4gLVVJ TlQ2NA0KPiAtSW50ZXJuYWxHZXRUc2NGcmVxdWVuY3kgKA0KPiAtICBWT0lEDQo+IC0gICk7DQo+ IC0NCj4gLS8qKiAgQ2FsY3VsYXRlIFRTQyBmcmVxdWVuY3kuDQo+IC0NCj4gLSAgVGhlIFRTQyBj b3VudGluZyBmcmVxdWVuY3kgaXMgZGV0ZXJtaW5lZCBieSBjb21wYXJpbmcgaG93IGZhciBpdCBj b3VudHMNCj4gLSAgZHVyaW5nIGEgMW1zIHBlcmlvZCBhcyBkZXRlcm1pbmVkIGJ5IHRoZSBBQ1BJ IHRpbWVyLiBUaGUgQUNQSSB0aW1lciBpcw0KPiAtICB1c2VkIGJlY2F1c2UgaXQgY291bnRzIGF0 IGEga25vd24gZnJlcXVlbmN5Lg0KPiAtICBJZiBBQ1BJIEkvTyBzcGFjZSBub3QgZW5hYmxlZCwg dGhpcyBmdW5jdGlvbiB3aWxsIGVuYWJsZSBpdC4gVGhlbiB0aGUNCj4gLSAgVFNDIGlzIHNhbXBs ZWQsIGZvbGxvd2VkIGJ5IHdhaXRpbmcgZm9yIDM1NzkgY2xvY2tzIG9mIHRoZSBBQ1BJIHRpbWVy LCBvcg0KPiAxbXMuDQo+IC0gIFRoZSBUU0MgaXMgdGhlbiBzYW1wbGVkIGFnYWluLiBUaGUgZGlm ZmVyZW5jZSBtdWx0aXBsaWVkIGJ5IDEwMDAgaXMgdGhlIFRTQw0KPiAtICBmcmVxdWVuY3kuIFRo ZXJlIHdpbGwgYmUgYSBzbWFsbCBlcnJvciBiZWNhdXNlIG9mIHRoZSBvdmVyaGVhZCBvZiByZWFk aW5nDQo+IC0gIHRoZSBBQ1BJIHRpbWVyLiBBbiBhdHRlbXB0IGlzIG1hZGUgdG8gZGV0ZXJtaW5l IGFuZCBjb21wZW5zYXRlIGZvciB0aGlzDQo+IGVycm9yLg0KPiAtDQo+IC0gIEByZXR1cm4gVGhl IG51bWJlciBvZiBUU0MgY291bnRzIHBlciBzZWNvbmQuDQo+IC0NCj4gLSoqLw0KPiAtVUlOVDY0 DQo+IC1JbnRlcm5hbENhbGN1bGF0ZVRzY0ZyZXF1ZW5jeSAoDQo+IC0gIFZPSUQNCj4gLSAgKTsN Cj4gLQ0KPiAtI2VuZGlmDQo+IGRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVBrZy9MaWJyYXJ5L1Rz Y1RpbWVyTGliL1RzY1RpbWVyTGliU2hhcmUuYw0KPiBiL1BlcmZvcm1hbmNlUGtnL0xpYnJhcnkv VHNjVGltZXJMaWIvVHNjVGltZXJMaWJTaGFyZS5jDQo+IGRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NA0KPiBpbmRleCAxNjFhZjAwMjM3Li4wMDAwMDAwMDAwDQo+IC0tLSBhL1BlcmZvcm1hbmNlUGtn L0xpYnJhcnkvVHNjVGltZXJMaWIvVHNjVGltZXJMaWJTaGFyZS5jDQo+ICsrKyAvZGV2L251bGwN Cj4gQEAgLTEsMjc1ICswLDAgQEANCj4gLS8qKiBAZmlsZQ0KPiAtICBUaGUgVGltZXIgTGlicmFy eSBpbXBsZW1lbnRhdGlvbiB3aGljaCB1c2VzIHRoZSBUaW1lIFN0YW1wIENvdW50ZXIgaW4NCj4g dGhlIHByb2Nlc3Nvci4NCj4gLQ0KPiAtICBGb3IgUGVudGl1bSA0IHByb2Nlc3NvcnMsIEludGVs IFhlb24gcHJvY2Vzc29ycyAoZmFtaWx5IFswRkhdLCBtb2RlbHMgWzAzSA0KPiBhbmQgaGlnaGVy XSk7DQo+IC0gICAgZm9yIEludGVsIENvcmUgU29sbyBhbmQgSW50ZWwgQ29yZSBEdW8gcHJvY2Vz c29ycyAoZmFtaWx5IFswNkhdLCBtb2RlbA0KPiBbMEVIXSk7DQo+IC0gICAgZm9yIHRoZSBJbnRl bCBYZW9uIHByb2Nlc3NvciA1MTAwIHNlcmllcyBhbmQgSW50ZWwgQ29yZSAyIER1byBwcm9jZXNz b3JzDQo+IChmYW1pbHkgWzA2SF0sIG1vZGVsIFswRkhdKTsNCj4gLSAgICBmb3IgSW50ZWwgQ29y ZSAyIGFuZCBJbnRlbCBYZW9uIHByb2Nlc3NvcnMgKGZhbWlseSBbMDZIXSwgZGlzcGxheV9tb2Rl bA0KPiBbMTdIXSk7DQo+IC0gICAgZm9yIEludGVsIEF0b20gcHJvY2Vzc29ycyAoZmFtaWx5IFsw NkhdLCBkaXNwbGF5X21vZGVsIFsxQ0hdKToNCj4gLSAgdGhlIHRpbWUtc3RhbXAgY291bnRlciBp bmNyZW1lbnRzIGF0IGEgY29uc3RhbnQgcmF0ZS4NCj4gLSAgVGhhdCByYXRlIG1heSBiZSBzZXQg YnkgdGhlIG1heGltdW0gY29yZS1jbG9jayB0byBidXMtY2xvY2sgcmF0aW8gb2YgdGhlDQo+IHBy b2Nlc3NvciBvciBtYXkgYmUgc2V0IGJ5DQo+IC0gIHRoZSBtYXhpbXVtIHJlc29sdmVkIGZyZXF1 ZW5jeSBhdCB3aGljaCB0aGUgcHJvY2Vzc29yIGlzIGJvb3RlZC4gVGhlDQo+IG1heGltdW0gcmVz b2x2ZWQgZnJlcXVlbmN5IG1heQ0KPiAtICBkaWZmZXIgZnJvbSB0aGUgbWF4aW11bSBxdWFsaWZp ZWQgZnJlcXVlbmN5IG9mIHRoZSBwcm9jZXNzb3IuDQo+IC0NCj4gLSAgVGhlIHNwZWNpZmljIHBy b2Nlc3NvciBjb25maWd1cmF0aW9uIGRldGVybWluZXMgdGhlIGJlaGF2aW9yLiBDb25zdGFudA0K PiBUU0MgYmVoYXZpb3IgZW5zdXJlcyB0aGF0IHRoZQ0KPiAtICBkdXJhdGlvbiBvZiBlYWNoIGNs b2NrIHRpY2sgaXMgdW5pZm9ybSBhbmQgc3VwcG9ydHMgdGhlIHVzZSBvZiB0aGUgVFNDIGFzIGEN Cj4gd2FsbCBjbG9jayB0aW1lciBldmVuIGlmDQo+IC0gIHRoZSBwcm9jZXNzb3IgY29yZSBjaGFu Z2VzIGZyZXF1ZW5jeS4gVGhpcyBpcyB0aGUgYXJjaGl0ZWN0dXJhbCBiZWhhdmlvcg0KPiBtb3Zp bmcgZm9yd2FyZC4NCj4gLQ0KPiAtICBBIFByb2Nlc3NvcidzIHN1cHBvcnQgZm9yIGludmFyaWFu dCBUU0MgaXMgaW5kaWNhdGVkIGJ5DQo+IENQVUlELjB4ODAwMDAwMDcuRURYWzhdLg0KPiAtDQo+ IC0gIENvcHlyaWdodCAoYykgMjAwOSAtIDIwMTEsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmln aHRzIHJlc2VydmVkLjxCUj4NCj4gLSAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5n IG1hdGVyaWFscw0KPiAtICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRo ZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEDQo+IExpY2Vuc2UNCj4gLSAgd2hpY2gg YWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vu c2UgbWF5IGJlDQo+IGZvdW5kIGF0DQo+IC0gIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNl cy9ic2QtbGljZW5zZS5waHANCj4gLQ0KPiAtICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBV TkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywNCj4gLSAgV0lUSE9V VCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+IEVY UFJFU1MgT1IgSU1QTElFRC4NCj4gLQ0KPiAtKiovDQo+IC0NCj4gLSNpbmNsdWRlICJUc2NUaW1l ckxpYkludGVybmFsLmgiDQo+IC0NCj4gLS8qKiAgQ2FsY3VsYXRlIFRTQyBmcmVxdWVuY3kuDQo+ IC0NCj4gLSAgVGhlIFRTQyBjb3VudGluZyBmcmVxdWVuY3kgaXMgZGV0ZXJtaW5lZCBieSBjb21w YXJpbmcgaG93IGZhciBpdCBjb3VudHMNCj4gLSAgZHVyaW5nIGEgMW1zIHBlcmlvZCBhcyBkZXRl cm1pbmVkIGJ5IHRoZSBBQ1BJIHRpbWVyLiBUaGUgQUNQSSB0aW1lciBpcw0KPiAtICB1c2VkIGJl Y2F1c2UgaXQgY291bnRzIGF0IGEga25vd24gZnJlcXVlbmN5Lg0KPiAtICBJZiBBQ1BJIEkvTyBz cGFjZSBub3QgZW5hYmxlZCwgdGhpcyBmdW5jdGlvbiB3aWxsIGVuYWJsZSBpdC4gVGhlbiB0aGUN Cj4gLSAgVFNDIGlzIHNhbXBsZWQsIGZvbGxvd2VkIGJ5IHdhaXRpbmcgZm9yIDM1NzkgY2xvY2tz IG9mIHRoZSBBQ1BJIHRpbWVyLCBvcg0KPiAxbXMuDQo+IC0gIFRoZSBUU0MgaXMgdGhlbiBzYW1w bGVkIGFnYWluLiBUaGUgZGlmZmVyZW5jZSBtdWx0aXBsaWVkIGJ5IDEwMDAgaXMgdGhlIFRTQw0K PiAtICBmcmVxdWVuY3kuIFRoZXJlIHdpbGwgYmUgYSBzbWFsbCBlcnJvciBiZWNhdXNlIG9mIHRo ZSBvdmVyaGVhZCBvZiByZWFkaW5nDQo+IC0gIHRoZSBBQ1BJIHRpbWVyLiBBbiBhdHRlbXB0IGlz IG1hZGUgdG8gZGV0ZXJtaW5lIGFuZCBjb21wZW5zYXRlIGZvciB0aGlzDQo+IGVycm9yLg0KPiAt DQo+IC0gIEByZXR1cm4gVGhlIG51bWJlciBvZiBUU0MgY291bnRzIHBlciBzZWNvbmQuDQo+IC0N Cj4gLSoqLw0KPiAtVUlOVDY0DQo+IC1JbnRlcm5hbENhbGN1bGF0ZVRzY0ZyZXF1ZW5jeSAoDQo+ IC0gIFZPSUQNCj4gLSAgKQ0KPiAtew0KPiAtICBVSU5UNjQgICAgICBTdGFydFRTQzsNCj4gLSAg VUlOVDY0ICAgICAgRW5kVFNDOw0KPiAtICBVSU5UMzIgICAgICBUaW1lckFkZHI7DQo+IC0gIFVJ TlQzMiAgICAgIFRpY2tzOw0KPiAtICBVSU5UNjQgICAgICBUc2NGcmVxdWVuY3k7DQo+IC0NCj4g LSAgLy8NCj4gLSAgLy8gSWYgQUNQSSBJL08gc3BhY2UgaXMgbm90IGVuYWJsZWQgeWV0LCBwcm9n cmFtIEFDUEkgSS9PIGJhc2UgYWRkcmVzcyBhbmQNCj4gZW5hYmxlIGl0Lg0KPiAtICAvLw0KPiAt ICBpZiAoKFBjaVJlYWQ4IChQQ0lfSUNIX0xQQ19BRERSRVNTIChSX0lDSF9MUENfQUNQSV9DTlQp KSAmDQo+IEJfSUNIX0xQQ19BQ1BJX0NOVF9BQ1BJX0VOKSA9PSAwKSB7DQo+IC0gICAgUGNpV3Jp dGUxNiAoUENJX0lDSF9MUENfQUREUkVTUyAoUl9JQ0hfTFBDX0FDUElfQkFTRSksIFBjZEdldDE2 DQo+IChQY2RQZXJmUGtnQWNwaUlvUG9ydEJhc2VBZGRyZXNzKSk7DQo+IC0gICAgUGNpT3I4IChQ Q0lfSUNIX0xQQ19BRERSRVNTIChSX0lDSF9MUENfQUNQSV9DTlQpLA0KPiBCX0lDSF9MUENfQUNQ SV9DTlRfQUNQSV9FTik7DQo+IC0gIH0NCj4gLQ0KPiAtICAvLw0KPiAtICAvLyBBQ1BJIEkvTyBz cGFjZSBzaG91bGQgYmUgZW5hYmxlZCBub3csIGxvY2F0ZSB0aGUgQUNQSSBUaW1lci4NCj4gLSAg Ly8gQUNQSSBJL08gYmFzZSBhZGRyZXNzIG1heWJlIGhhdmUgYmUgaW5pdGlhbGl6ZWQgYnkgb3Ro ZXIgZHJpdmVyIHdpdGgNCj4gZGlmZmVyZW50IHZhbHVlLA0KPiAtICAvLyBTbyBnZXQgaXQgZnJv bSBQQ0kgc3BhY2UgZGlyZWN0bHkuDQo+IC0gIC8vDQo+IC0gIFRpbWVyQWRkciA9ICgoUGNpUmVh ZDE2IChQQ0lfSUNIX0xQQ19BRERSRVNTDQo+IChSX0lDSF9MUENfQUNQSV9CQVNFKSkpICYgQl9J Q0hfTFBDX0FDUElfQkFTRV9CQVIpICsNCj4gUl9BQ1BJX1BNMV9UTVI7DQo+IC0gIFRpY2tzICAg ID0gSW9SZWFkMzIgKFRpbWVyQWRkcikgKyAoMzU3OSk7ICAgLy8gU2V0IFRpY2tzIHRvIDFtcyBp biB0aGUgZnV0dXJlDQo+IC0gIFN0YXJ0VFNDID0gQXNtUmVhZFRzYygpOyAgICAgICAgICAgICAg ICAgICAgLy8gR2V0IGJhc2UgdmFsdWUgZm9yIHRoZSBUU0MNCj4gLSAgLy8NCj4gLSAgLy8gV2Fp dCB1bnRpbCB0aGUgQUNQSSB0aW1lciBoYXMgY291bnRlZCAxbXMuDQo+IC0gIC8vIFRpbWVyIHdy YXAtYXJvdW5kcyBhcmUgaGFuZGxlZCBjb3JyZWN0bHkgYnkgdGhpcyBmdW5jdGlvbi4NCj4gLSAg Ly8gV2hlbiB0aGUgY3VycmVudCBBQ1BJIHRpbWVyIHZhbHVlIGlzIGdyZWF0ZXIgdGhhbiAnVGlj a3MnLCB0aGUgd2hpbGUgbG9vcA0KPiB3aWxsIGV4aXQuDQo+IC0gIC8vDQo+IC0gIHdoaWxlICgo KFRpY2tzIC0gSW9SZWFkMzIgKFRpbWVyQWRkcikpICYgQklUMjMpID09IDApIHsNCj4gLSAgICBD cHVQYXVzZSgpOw0KPiAtICB9DQo+IC0gIEVuZFRTQyA9IEFzbVJlYWRUc2MoKTsgICAgLy8gVFND IHZhbHVlIDFtcyBsYXRlcg0KPiAtDQo+IC0gIFRzY0ZyZXF1ZW5jeSA9ICAgTXVsdFU2NHgzMiAo DQo+IC0gICAgICAgICAgICAgICAgICAgICAgKEVuZFRTQyAtIFN0YXJ0VFNDKSwgICAgLy8gTnVt YmVyIG9mIFRTQyBjb3VudHMgaW4gMW1zDQo+IC0gICAgICAgICAgICAgICAgICAgICAgMTAwMCAg ICAgICAgICAgICAgICAgICAgLy8gTnVtYmVyIG9mIG1zIGluIGEgc2Vjb25kDQo+IC0gICAgICAg ICAgICAgICAgICAgICk7DQo+IC0NCj4gLSAgcmV0dXJuIFRzY0ZyZXF1ZW5jeTsNCj4gLX0NCj4g LQ0KPiAtLyoqICBTdGFsbHMgdGhlIENQVSBmb3IgYXQgbGVhc3QgdGhlIGdpdmVuIG51bWJlciBv ZiB0aWNrcy4NCj4gLQ0KPiAtICBTdGFsbHMgdGhlIENQVSBmb3IgYXQgbGVhc3QgdGhlIGdpdmVu IG51bWJlciBvZiB0aWNrcy4gSXQncyBpbnZva2VkIGJ5DQo+IC0gIE1pY3JvU2Vjb25kRGVsYXko KSBhbmQgTmFub1NlY29uZERlbGF5KCkuDQo+IC0NCj4gLSAgQHBhcmFtW2luXSAgRGVsYXkgICAg IEEgcGVyaW9kIG9mIHRpbWUgdG8gZGVsYXkgaW4gdGlja3MuDQo+IC0NCj4gLSoqLw0KPiAtVk9J RA0KPiAtSW50ZXJuYWxYODZEZWxheSAoDQo+IC0gIElOICAgICAgVUlOVDY0ICAgICAgICAgICAg ICAgICAgICBEZWxheQ0KPiAtICApDQo+IC17DQo+IC0gIFVJTlQ2NCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgVGlja3M7DQo+IC0NCj4gLSAgLy8NCj4gLSAgLy8gVGhlIHRhcmdldCB0aW1l ciBjb3VudCBpcyBjYWxjdWxhdGVkIGhlcmUNCj4gLSAgLy8NCj4gLSAgVGlja3MgPSBBc21SZWFk VHNjKCkgKyBEZWxheTsNCj4gLQ0KPiAtICAvLw0KPiAtICAvLyBXYWl0IHVudGlsIHRpbWUgb3V0 DQo+IC0gIC8vIFRpbWVyIHdyYXAtYXJvdW5kcyBhcmUgTk9UIGhhbmRsZWQgY29ycmVjdGx5IGJ5 IHRoaXMgZnVuY3Rpb24uDQo+IC0gIC8vIFRodXMsIHRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxs ZWQgd2l0aGluIDEwIHllYXJzIG9mIHJlc2V0IHNpbmNlDQo+IC0gIC8vIEludGVsIGd1YXJhbnRl ZXMgYSBtaW5pbXVtIG9mIDEwIHllYXJzIGJlZm9yZSB0aGUgVFNDIHdyYXBzLg0KPiAtICAvLw0K PiAtICB3aGlsZSAoQXNtUmVhZFRzYygpIDw9IFRpY2tzKSBDcHVQYXVzZSgpOw0KPiAtfQ0KPiAt DQo+IC0vKiogIFN0YWxscyB0aGUgQ1BVIGZvciBhdCBsZWFzdCB0aGUgc3BlY2lmaWVkIG51bWJl ciBvZiBNaWNyb1NlY29uZHMuDQo+IC0NCj4gLSAgQHBhcmFtW2luXSAgTWljcm9TZWNvbmRzICBU aGUgbWluaW11bSBudW1iZXIgb2YgbWljcm9zZWNvbmRzIHRvDQo+IGRlbGF5Lg0KPiAtDQo+IC0g IEByZXR1cm4gVGhlIHZhbHVlIG9mIE1pY3JvU2Vjb25kcyBpbnB1dC4NCj4gLQ0KPiAtKiovDQo+ IC1VSU5UTg0KPiAtRUZJQVBJDQo+IC1NaWNyb1NlY29uZERlbGF5ICgNCj4gLSAgSU4gICAgICBV SU5UTiAgICAgICAgICAgICAgICAgICAgIE1pY3JvU2Vjb25kcw0KPiAtICApDQo+IC17DQo+IC0g IEludGVybmFsWDg2RGVsYXkgKA0KPiAtICAgIERpdlU2NHgzMiAoDQo+IC0gICAgICBNdWx0VTY0 eDY0ICgNCj4gLSAgICAgICAgSW50ZXJuYWxHZXRUc2NGcmVxdWVuY3kgKCksDQo+IC0gICAgICAg IE1pY3JvU2Vjb25kcw0KPiAtICAgICAgKSwNCj4gLSAgICAgIDEwMDAwMDB1DQo+IC0gICAgKQ0K PiAtICApOw0KPiAtICByZXR1cm4gTWljcm9TZWNvbmRzOw0KPiAtfQ0KPiAtDQo+IC0vKiogIFN0 YWxscyB0aGUgQ1BVIGZvciBhdCBsZWFzdCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBOYW5vU2Vj b25kcy4NCj4gLQ0KPiAtICBAcGFyYW1baW5dICBOYW5vU2Vjb25kcyBUaGUgbWluaW11bSBudW1i ZXIgb2YgbmFub3NlY29uZHMgdG8gZGVsYXkuDQo+IC0NCj4gLSAgQHJldHVybiBUaGUgdmFsdWUg b2YgTmFub1NlY29uZHMgaW5wdXQuDQo+IC0NCj4gLSoqLw0KPiAtVUlOVE4NCj4gLUVGSUFQSQ0K PiAtTmFub1NlY29uZERlbGF5ICgNCj4gLSAgSU4gICAgICBVSU5UTiAgICAgICAgICAgICAgICAg ICAgIE5hbm9TZWNvbmRzDQo+IC0gICkNCj4gLXsNCj4gLSAgSW50ZXJuYWxYODZEZWxheSAoDQo+ IC0gICAgRGl2VTY0eDMyICgNCj4gLSAgICAgIE11bHRVNjR4MzIgKA0KPiAtICAgICAgICBJbnRl cm5hbEdldFRzY0ZyZXF1ZW5jeSAoKSwNCj4gLSAgICAgICAgKFVJTlQzMilOYW5vU2Vjb25kcw0K PiAtICAgICAgKSwNCj4gLSAgICAxMDAwMDAwMDAwdQ0KPiAtICAgICkNCj4gLSAgKTsNCj4gLSAg cmV0dXJuIE5hbm9TZWNvbmRzOw0KPiAtfQ0KPiAtDQo+IC0vKiogIFJldHJpZXZlcyB0aGUgY3Vy cmVudCB2YWx1ZSBvZiB0aGUgNjQtYml0IGZyZWUgcnVubmluZyBUaW1lLVN0YW1wDQo+IGNvdW50 ZXIuDQo+IC0NCj4gLSAgVGhlIHRpbWUtc3RhbXAgY291bnRlciAoYXMgaW1wbGVtZW50ZWQgaW4g dGhlIFA2IGZhbWlseSwgUGVudGl1bSwNCj4gUGVudGl1bSBNLA0KPiAtICBQZW50aXVtIDQsIElu dGVsIFhlb24sIEludGVsIENvcmUgU29sbyBhbmQgSW50ZWwgQ29yZSBEdW8gcHJvY2Vzc29ycyBh bmQNCj4gLSAgbGF0ZXIgcHJvY2Vzc29ycykgaXMgYSA2NC1iaXQgY291bnRlciB0aGF0IGlzIHNl dCB0byAwIGZvbGxvd2luZyBhIFJFU0VUIG9mDQo+IC0gIHRoZSBwcm9jZXNzb3IuICBGb2xsb3dp bmcgYSBSRVNFVCwgdGhlIGNvdW50ZXIgaW5jcmVtZW50cyBldmVuIHdoZW4gdGhlDQo+IC0gIHBy b2Nlc3NvciBpcyBoYWx0ZWQgYnkgdGhlIEhMVCBpbnN0cnVjdGlvbiBvciB0aGUgZXh0ZXJuYWwg U1RQQ0xLIyBwaW4uIE5vdGUNCj4gLSAgdGhhdCB0aGUgYXNzZXJ0aW9uIG9mIHRoZSBleHRlcm5h bCBEUFNMUCMgcGluIG1heSBjYXVzZSB0aGUgdGltZS1zdGFtcA0KPiAtICBjb3VudGVyIHRvIHN0 b3AuDQo+IC0NCj4gLSAgVGhlIHByb3BlcnRpZXMgb2YgdGhlIGNvdW50ZXIgY2FuIGJlIHJldHJp ZXZlZCBieSB0aGUNCj4gLSAgR2V0UGVyZm9ybWFuY2VDb3VudGVyUHJvcGVydGllcygpIGZ1bmN0 aW9uLg0KPiAtDQo+IC0gIEByZXR1cm4gVGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGZyZWUgcnVu bmluZyBwZXJmb3JtYW5jZSBjb3VudGVyLg0KPiAtDQo+IC0qKi8NCj4gLVVJTlQ2NA0KPiAtRUZJ QVBJDQo+IC1HZXRQZXJmb3JtYW5jZUNvdW50ZXIgKA0KPiAtICBWT0lEDQo+IC0gICkNCj4gLXsN Cj4gLSAgcmV0dXJuIEFzbVJlYWRUc2MoKTsNCj4gLX0NCj4gLQ0KPiAtLyoqICBSZXRyaWV2ZXMg dGhlIDY0LWJpdCBmcmVxdWVuY3kgaW4gSHogYW5kIHRoZSByYW5nZSBvZiBwZXJmb3JtYW5jZQ0K PiBjb3VudGVyDQo+IC0gIHZhbHVlcy4NCj4gLQ0KPiAtICBJZiBTdGFydFZhbHVlIGlzIG5vdCBO VUxMLCB0aGVuIHRoZSB2YWx1ZSB0aGF0IHRoZSBwZXJmb3JtYW5jZSBjb3VudGVyDQo+IHN0YXJ0 cw0KPiAtICB3aXRoLCAweDAsIGlzIHJldHVybmVkIGluIFN0YXJ0VmFsdWUuIElmIEVuZFZhbHVl IGlzIG5vdCBOVUxMLCB0aGVuIHRoZSB2YWx1ZQ0KPiAtICB0aGF0IHRoZSBwZXJmb3JtYW5jZSBj b3VudGVyIGVuZCB3aXRoLCAweEZGRkZGRkZGRkZGRkZGRkYsIGlzIHJldHVybmVkDQo+IGluDQo+ IC0gIEVuZFZhbHVlLg0KPiAtDQo+IC0gIFRoZSA2NC1iaXQgZnJlcXVlbmN5IG9mIHRoZSBwZXJm b3JtYW5jZSBjb3VudGVyLCBpbiBIeiwgaXMgYWx3YXlzIHJldHVybmVkLg0KPiAtICBUbyBkZXRl cm1pbmUgYXZlcmFnZSBwcm9jZXNzb3IgY2xvY2sgZnJlcXVlbmN5LCBJbnRlbCByZWNvbW1lbmRz IHRoZQ0KPiB1c2Ugb2YNCj4gLSAgRU1PTiBsb2dpYyB0byBjb3VudCBwcm9jZXNzb3IgY29yZSBj bG9ja3Mgb3ZlciB0aGUgcGVyaW9kIG9mIHRpbWUgZm9yDQo+IHdoaWNoDQo+IC0gIHRoZSBhdmVy YWdlIGlzIHJlcXVpcmVkLg0KPiAtDQo+IC0NCj4gLSAgQHBhcmFtW291dF0gICBTdGFydFZhbHVl ICBQb2ludGVyIHRvIHdoZXJlIHRoZSBwZXJmb3JtYW5jZSBjb3VudGVyJ3MNCj4gc3RhcnRpbmcg dmFsdWUgaXMgc2F2ZWQsIG9yIE5VTEwuDQo+IC0gIEBwYXJhbVtvdXRdICAgRW5kVmFsdWUgICAg UG9pbnRlciB0byB3aGVyZSB0aGUgcGVyZm9ybWFuY2UgY291bnRlcidzDQo+IGVuZGluZyB2YWx1 ZSBpcyBzYXZlZCwgb3IgTlVMTC4NCj4gLQ0KPiAtICBAcmV0dXJuIFRoZSBmcmVxdWVuY3kgaW4g SHouDQo+IC0NCj4gLSoqLw0KPiAtVUlOVDY0DQo+IC1FRklBUEkNCj4gLUdldFBlcmZvcm1hbmNl Q291bnRlclByb3BlcnRpZXMgKA0KPiAtICBPVVQgICAgICBVSU5UNjQgICAgICAgICAgICAgICAg ICAgICpTdGFydFZhbHVlLCAgT1BUSU9OQUwNCj4gLSAgT1VUICAgICAgVUlOVDY0ICAgICAgICAg ICAgICAgICAgICAqRW5kVmFsdWUgICAgIE9QVElPTkFMDQo+IC0gICkNCj4gLXsNCj4gLSAgaWYg KFN0YXJ0VmFsdWUgIT0gTlVMTCkgew0KPiAtICAgICpTdGFydFZhbHVlID0gMDsNCj4gLSAgfQ0K PiAtICBpZiAoRW5kVmFsdWUgIT0gTlVMTCkgew0KPiAtICAgICpFbmRWYWx1ZSA9IDB4RkZGRkZG RkZGRkZGRkZGRnVsbDsNCj4gLSAgfQ0KPiAtDQo+IC0gIHJldHVybiBJbnRlcm5hbEdldFRzY0Zy ZXF1ZW5jeSAoKTsNCj4gLX0NCj4gLQ0KPiAtLyoqDQo+IC0gIENvbnZlcnRzIGVsYXBzZWQgdGlj a3Mgb2YgcGVyZm9ybWFuY2UgY291bnRlciB0byB0aW1lIGluIG5hbm9zZWNvbmRzLg0KPiAtDQo+ IC0gIFRoaXMgZnVuY3Rpb24gY29udmVydHMgdGhlIGVsYXBzZWQgdGlja3Mgb2YgcnVubmluZyBw ZXJmb3JtYW5jZSBjb3VudGVyIHRvDQo+IC0gIHRpbWUgdmFsdWUgaW4gdW5pdCBvZiBuYW5vc2Vj b25kcy4NCj4gLQ0KPiAtICBAcGFyYW0gIFRpY2tzICAgICBUaGUgbnVtYmVyIG9mIGVsYXBzZWQg dGlja3Mgb2YgcnVubmluZyBwZXJmb3JtYW5jZQ0KPiBjb3VudGVyLg0KPiAtDQo+IC0gIEByZXR1 cm4gVGhlIGVsYXBzZWQgdGltZSBpbiBuYW5vc2Vjb25kcy4NCj4gLQ0KPiAtKiovDQo+IC1VSU5U NjQNCj4gLUVGSUFQSQ0KPiAtR2V0VGltZUluTmFub1NlY29uZCAoDQo+IC0gIElOICAgICAgVUlO VDY0ICAgICAgICAgICAgICAgICAgICAgVGlja3MNCj4gLSAgKQ0KPiAtew0KPiAtICBVSU5UNjQg IEZyZXF1ZW5jeTsNCj4gLSAgVUlOVDY0ICBOYW5vU2Vjb25kczsNCj4gLSAgVUlOVDY0ICBSZW1h aW5kZXI7DQo+IC0gIElOVE4gICAgU2hpZnQ7DQo+IC0NCj4gLSAgRnJlcXVlbmN5ID0gR2V0UGVy Zm9ybWFuY2VDb3VudGVyUHJvcGVydGllcyAoTlVMTCwgTlVMTCk7DQo+IC0NCj4gLSAgLy8NCj4g LSAgLy8gICAgICAgICAgVGlja3MNCj4gLSAgLy8gVGltZSA9IC0tLS0tLS0tLSB4IDEsMDAwLDAw MCwwMDANCj4gLSAgLy8gICAgICAgIEZyZXF1ZW5jeQ0KPiAtICAvLw0KPiAtICBOYW5vU2Vjb25k cyA9IE11bHRVNjR4MzIgKERpdlU2NHg2NFJlbWFpbmRlciAoVGlja3MsIEZyZXF1ZW5jeSwNCj4g JlJlbWFpbmRlciksIDEwMDAwMDAwMDB1KTsNCj4gLQ0KPiAtICAvLw0KPiAtICAvLyBFbnN1cmUg KFJlbWFpbmRlciAqIDEsMDAwLDAwMCwwMDApIHdpbGwgbm90IG92ZXJmbG93IDY0LWJpdC4NCj4g LSAgLy8gU2luY2UgMl4yOSA8IDEsMDAwLDAwMCwwMDAgPSAweDNCOUFDQTAwIDwgMl4zMCwgUmVt YWluZGVyIHNob3VsZCA8DQo+IDJeKDY0LTMwKSA9IDJeMzQsDQo+IC0gIC8vIGkuZS4gaGlnaGVz dCBiaXQgc2V0IGluIFJlbWFpbmRlciBzaG91bGQgPD0gMzMuDQo+IC0gIC8vDQo+IC0gIFNoaWZ0 ID0gTUFYICgwLCBIaWdoQml0U2V0NjQgKFJlbWFpbmRlcikgLSAzMyk7DQo+IC0gIFJlbWFpbmRl ciA9IFJTaGlmdFU2NCAoUmVtYWluZGVyLCAoVUlOVE4pIFNoaWZ0KTsNCj4gLSAgRnJlcXVlbmN5 ID0gUlNoaWZ0VTY0IChGcmVxdWVuY3ksIChVSU5UTikgU2hpZnQpOw0KPiAtICBOYW5vU2Vjb25k cyArPSBEaXZVNjR4NjRSZW1haW5kZXIgKE11bHRVNjR4MzIgKFJlbWFpbmRlciwNCj4gMTAwMDAw MDAwMHUpLCBGcmVxdWVuY3ksIE5VTEwpOw0KPiAtDQo+IC0gIHJldHVybiBOYW5vU2Vjb25kczsN Cj4gLX0NCj4gZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlUGtnL1BlcmZvcm1hbmNlUGtnLmRlYw0K PiBiL1BlcmZvcm1hbmNlUGtnL1BlcmZvcm1hbmNlUGtnLmRlYw0KPiBkZWxldGVkIGZpbGUgbW9k ZSAxMDA2NDQNCj4gaW5kZXggZjM5ZGMwYmM5NS4uMDAwMDAwMDAwMA0KPiAtLS0gYS9QZXJmb3Jt YW5jZVBrZy9QZXJmb3JtYW5jZVBrZy5kZWMNCj4gKysrIC9kZXYvbnVsbA0KPiBAQCAtMSwzNyAr MCwwIEBADQo+IC0jIyBAZmlsZQ0KPiAtIyBCdWlsZCBkZXNjcmlwdGlvbiBmaWxlIHRvIGdlbmVy YXRlIFNoZWxsIERQIGFwcGxpY2F0aW9uIGFuZA0KPiAtIyBQZXJmb3JtYW5jZSBMaWJyYXJpZXMu DQo+IC0jDQo+IC0jIENvcHlyaWdodCAoYykgMjAwOSAtIDIwMTEsIEludGVsIENvcnBvcmF0aW9u LiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gLSMgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNj b21wYW55aW5nIG1hdGVyaWFscw0KPiAtIyBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxl IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUNCj4gQlNEIExpY2Vuc2UNCj4g LSMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9m IHRoZSBsaWNlbnNlIG1heSBiZQ0KPiBmb3VuZCBhdA0KPiAtIyBodHRwOi8vb3BlbnNvdXJjZS5v cmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+IC0jDQo+IC0jIFRIRSBQUk9HUkFNIElTIERJ U1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+IEJBU0lTLA0K PiAtIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBF SVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiAtIw0KPiAtIyMNCj4gLQ0KPiAtW0RlZmlu ZXNdDQo+IC0gIFBBQ0tBR0VfTkFNRSAgICAgICAgICAgICAgICAgICA9IFBlcmZvcm1hbmNlUGtn DQo+IC0gIFBBQ0tBR0VfR1VJRCAgICAgICAgICAgICAgICAgICA9IGNlODk4Njk3LWI5NDUtNDZl Mi1hMjZlLTU3NTJhZjU2NTE4NQ0KPiAtICBQQUNLQUdFX1ZFUlNJT04gICAgICAgICAgICAgICAg PSAwLjINCj4gLSAgREVDX1NQRUNJRklDQVRJT04gICAgICAgICAgICAgID0gMHgwMDAxMDAwNQ0K PiAtDQo+IC1bSW5jbHVkZXNdDQo+IC0gIEluY2x1ZGUNCj4gLQ0KPiAtW0d1aWRzXQ0KPiAtICAj IyBQZXJmb3JtYW5jZSBQYWNrYWdlIHRva2VuIHNwYWNlIGd1aWQNCj4gLSAgIyBJbmNsdWRlL0d1 aWQvUGVyZm9ybWFuY2VQa2dUb2tlblNwYWNlLmgNCj4gLSAgIyA2NjkzNDZlZi1mZGFkLTRhZWIt YTYwOC03ZGVmM2YyZDQ2MjENCj4gLSAgZ1BlcmZvcm1hbmNlUGtnVG9rZW5TcGFjZUd1aWQgICAg ICAgPSB7IDB4NjY5MzQ2ZWYsIDB4RkRhZCwgMHg0YWViLCB7DQo+IDB4MDgsIDB4YTYsIDB4MjEs IDB4NDYsIDB4MmQsIDB4M2YsIDB4ZWYsIDB4N2QgfX0NCj4gLQ0KPiAtICAjIyBJbmNsdWRlL0d1 aWQvVHNjRnJlcXVlbmN5LmgNCj4gLSAgZ0VmaVRzY0ZyZXF1ZW5jeUd1aWQgICAgICAgICAgICAg ICAgPSB7IDB4ZGJhNmE3ZTMsIDB4YmI1NywgMHg0YmU3LCB7IDB4OGEsIDB4ZjgsDQo+IDB4ZDUs IDB4NzgsIDB4ZGIsIDB4N2UsIDB4NTYsIDB4ODcgfX0NCj4gLQ0KPiAtW1BjZHNGaXhlZEF0QnVp bGRdDQo+IC0gICMjICBUaGUgYmFzZSBhZGRyZXNzIG9mIHRoZSBBQ1BJIHJlZ2lzdGVycyB3aXRo aW4gdGhlIElDSCBQQ0kgc3BhY2UuDQo+IC0gICMgICBUaGlzIHNwYWNlIG11c3QgYmUgMTI4LWJ5 dGUgYWxpZ25lZC4NCj4gLQ0KPiBnUGVyZm9ybWFuY2VQa2dUb2tlblNwYWNlR3VpZC5QY2RQZXJm UGtnQWNwaUlvUG9ydEJhc2VBZGRyZXNzfDB4NDANCj4gMHxVSU5UMTZ8MQ0KPiBkaWZmIC0tZ2l0 IGEvUGVyZm9ybWFuY2VQa2cvUGVyZm9ybWFuY2VQa2cuZHNjDQo+IGIvUGVyZm9ybWFuY2VQa2cv UGVyZm9ybWFuY2VQa2cuZHNjDQo+IGRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCA5 NWNjOTA1Y2JiLi4wMDAwMDAwMDAwDQo+IC0tLSBhL1BlcmZvcm1hbmNlUGtnL1BlcmZvcm1hbmNl UGtnLmRzYw0KPiArKysgL2Rldi9udWxsDQo+IEBAIC0xLDY4ICswLDAgQEANCj4gLSMjIEBmaWxl DQo+IC0jIEJ1aWxkIGRlc2NyaXB0aW9uIGZpbGUgdG8gZ2VuZXJhdGUgU2hlbGwgRFAgYXBwbGlj YXRpb24uDQo+IC0jDQo+IC0jIENvcHlyaWdodCAoYykgMjAwOSAtIDIwMTcsIEludGVsIENvcnBv cmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gLSMgVGhpcyBwcm9ncmFtIGFuZCB0 aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiAtIyBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZh aWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUNCj4gQlNEIExpY2Vu c2UNCj4gLSMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0 ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZQ0KPiBmb3VuZCBhdA0KPiAtIyBodHRwOi8vb3BlbnNv dXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+IC0jDQo+IC0jIFRIRSBQUk9HUkFN IElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+IEJB U0lTLA0KPiAtIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBL SU5ELCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiAtIw0KPiAtIyMNCj4gLQ0KPiAt W0RlZmluZXNdDQo+IC0gIERTQ19TUEVDSUZJQ0FUSU9OICAgICAgICAgICAgICA9IDB4MDAwMTAw MDUNCj4gLSAgUExBVEZPUk1fTkFNRSAgICAgICAgICAgICAgICAgID0gUGVyZm9ybWFuY2VQa2cN Cj4gLSAgUExBVEZPUk1fR1VJRCAgICAgICAgICAgICAgICAgID0gOWZmZDdiZjItMjMxZS00NTI1 LTlhNDItNDgwNTQ1ZGFmZDE3DQo+IC0gIFBMQVRGT1JNX1ZFUlNJT04gICAgICAgICAgICAgICA9 IDAuMg0KPiAtICBPVVRQVVRfRElSRUNUT1JZICAgICAgICAgICAgICAgPSBCdWlsZC9QZXJmb3Jt YW5jZVBrZw0KPiAtICBTVVBQT1JURURfQVJDSElURUNUVVJFUyAgICAgICAgPSBJQTMyfElQRnxY NjR8RUJDDQo+IC0gIEJVSUxEX1RBUkdFVFMgICAgICAgICAgICAgICAgICA9IERFQlVHfFJFTEVB U0V8Tk9PUFQNCj4gLSAgU0tVSURfSURFTlRJRklFUiAgICAgICAgICAgICAgID0gREVGQVVMVA0K PiAtDQo+IC1bTGlicmFyeUNsYXNzZXNdDQo+IC0gICMNCj4gLSAgIyBFbnRyeSBQb2ludCBMaWJy YXJpZXMNCj4gLSAgIw0KPiAtDQo+IFVlZmlBcHBsaWNhdGlvbkVudHJ5UG9pbnR8TWRlUGtnL0xp YnJhcnkvVWVmaUFwcGxpY2F0aW9uRW50cnlQb2ludC9VZWZpQQ0KPiBwcGxpY2F0aW9uRW50cnlQ b2ludC5pbmYNCj4gLSAgIw0KPiAtICAjIENvbW1vbiBMaWJyYXJpZXMNCj4gLSAgIw0KPiAtICBC YXNlTGlifE1kZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvQmFzZUxpYi5pbmYNCj4gLSAgQmFzZU1lbW9y eUxpYnxNZGVQa2cvTGlicmFyeS9CYXNlTWVtb3J5TGliL0Jhc2VNZW1vcnlMaWIuaW5mDQo+IC0g IFVlZmlMaWJ8TWRlUGtnL0xpYnJhcnkvVWVmaUxpYi9VZWZpTGliLmluZg0KPiAtICBQcmludExp YnxNZGVQa2cvTGlicmFyeS9CYXNlUHJpbnRMaWIvQmFzZVByaW50TGliLmluZg0KPiAtICBQY2RM aWJ8TWRlUGtnL0xpYnJhcnkvQmFzZVBjZExpYk51bGwvQmFzZVBjZExpYk51bGwuaW5mDQo+IC0g IEhvYkxpYnxNZGVQa2cvTGlicmFyeS9EeGVIb2JMaWIvRHhlSG9iTGliLmluZg0KPiAtDQo+IE1l bW9yeUFsbG9jYXRpb25MaWJ8TWRlUGtnL0xpYnJhcnkvVWVmaU1lbW9yeUFsbG9jYXRpb25MaWIv VWVmaU1lbW8NCj4gcnlBbGxvY2F0aW9uTGliLmluZg0KPiAtDQo+IFVlZmlCb290U2VydmljZXNU YWJsZUxpYnxNZGVQa2cvTGlicmFyeS9VZWZpQm9vdFNlcnZpY2VzVGFibGVMaWIvVWVmaUJvDQo+ IG90U2VydmljZXNUYWJsZUxpYi5pbmYNCj4gLQ0KPiBVZWZpUnVudGltZVNlcnZpY2VzVGFibGVM aWJ8TWRlUGtnL0xpYnJhcnkvVWVmaVJ1bnRpbWVTZXJ2aWNlc1RhYmxlTGliDQo+IC9VZWZpUnVu dGltZVNlcnZpY2VzVGFibGVMaWIuaW5mDQo+IC0gIERlYnVnTGlifE1kZVBrZy9MaWJyYXJ5L0Jh c2VEZWJ1Z0xpYk51bGwvQmFzZURlYnVnTGliTnVsbC5pbmYNCj4gLQ0KPiBEZWJ1Z1ByaW50RXJy b3JMZXZlbExpYnxNZGVQa2cvTGlicmFyeS9CYXNlRGVidWdQcmludEVycm9yTGV2ZWxMaWIvQmFz DQo+IGVEZWJ1Z1ByaW50RXJyb3JMZXZlbExpYi5pbmYNCj4gLQ0KPiBEZXZpY2VQYXRoTGlifE1k ZVBrZy9MaWJyYXJ5L1VlZmlEZXZpY2VQYXRoTGliL1VlZmlEZXZpY2VQYXRoTGliT3B0aW9uDQo+ IGFsRGV2aWNlUGF0aFByb3RvY29sLmluZg0KPiAtDQo+IFBlQ29mZkdldEVudHJ5UG9pbnRMaWJ8 TWRlUGtnL0xpYnJhcnkvQmFzZVBlQ29mZkdldEVudHJ5UG9pbnRMaWIvQmFzZQ0KPiBQZUNvZmZH ZXRFbnRyeVBvaW50TGliLmluZg0KPiAtICBIaWlMaWJ8TWRlTW9kdWxlUGtnL0xpYnJhcnkvVWVm aUhpaUxpYi9VZWZpSGlpTGliLmluZg0KPiAtDQo+IFVlZmlIaWlTZXJ2aWNlc0xpYnxNZGVNb2R1 bGVQa2cvTGlicmFyeS9VZWZpSGlpU2VydmljZXNMaWIvVWVmaUhpaVNlcnZpY2UNCj4gc0xpYi5p bmYNCj4gLQ0KPiBQZXJmb3JtYW5jZUxpYnxNZGVNb2R1bGVQa2cvTGlicmFyeS9EeGVTbW1QZXJm b3JtYW5jZUxpYi9EeGVTbW0NCj4gUGVyZm9ybWFuY2VMaWIuaW5mDQo+IC0gIElvTGlifE1kZVBr Zy9MaWJyYXJ5L0Jhc2VJb0xpYkludHJpbnNpYy9CYXNlSW9MaWJJbnRyaW5zaWMuaW5mDQo+IC0g IEZpbGVIYW5kbGVMaWJ8TWRlUGtnL0xpYnJhcnkvVWVmaUZpbGVIYW5kbGVMaWIvVWVmaUZpbGVI YW5kbGVMaWIuaW5mDQo+IC0gIFNvcnRMaWJ8TWRlTW9kdWxlUGtnL0xpYnJhcnkvVWVmaVNvcnRM aWIvVWVmaVNvcnRMaWIuaW5mDQo+IC0NCj4gLSAgU2hlbGxMaWJ8U2hlbGxQa2cvTGlicmFyeS9V ZWZpU2hlbGxMaWIvVWVmaVNoZWxsTGliLmluZg0KPiAtDQo+IC0gIFBjaUxpYnxNZGVQa2cvTGli cmFyeS9CYXNlUGNpTGliQ2Y4L0Jhc2VQY2lMaWJDZjguaW5mDQo+IC0gIFBjaUNmOExpYnxNZGVQ a2cvTGlicmFyeS9CYXNlUGNpQ2Y4TGliL0Jhc2VQY2lDZjhMaWIuaW5mDQo+IC0gIER4ZVNlcnZp Y2VzTGlifE1kZVBrZy9MaWJyYXJ5L0R4ZVNlcnZpY2VzTGliL0R4ZVNlcnZpY2VzTGliLmluZg0K PiAtDQo+IC1bQ29tcG9uZW50cy5JQTMyLCBDb21wb25lbnRzLlg2NF0NCj4gLSAgUGVyZm9ybWFu Y2VQa2cvTGlicmFyeS9Uc2NUaW1lckxpYi9EeGVUc2NUaW1lckxpYi5pbmYNCj4gLSAgUGVyZm9y bWFuY2VQa2cvTGlicmFyeS9Uc2NUaW1lckxpYi9QZWlUc2NUaW1lckxpYi5pbmYNCj4gLSAgUGVy Zm9ybWFuY2VQa2cvTGlicmFyeS9Uc2NUaW1lckxpYi9CYXNlVHNjVGltZXJMaWIuaW5mDQo+IC0N Cj4gLVtDb21wb25lbnRzXQ0KPiAtICBQZXJmb3JtYW5jZVBrZy9EcF9BcHAvRHAuaW5mDQo+IC0N Cj4gLVtCdWlsZE9wdGlvbnNdDQo+IC0gICpfKl8qX0NDX0ZMQUdTID0gLUQgRElTQUJMRV9ORVdf REVQUkVDQVRFRF9JTlRFUkZBQ0VTDQo+IC0tDQo+IDIuMTUuMS53aW5kb3dzLjINCg0K