From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by mx.groups.io with SMTP id smtpd.web10.4965.1601427868890014066 for ; Tue, 29 Sep 2020 18:04:29 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=zWAzyWT2; spf=pass (domain: intel.com, ip: 192.55.52.136, mailfrom: zhichao.gao@intel.com) IronPort-SDR: njdPkdO4vho0DlsjEWFtN2howYbNHhtloYttnhQjOFaQO5Twq5k2xCi0r8s2Ul5Fmuh+f2lZQQ zxvpp6QF71nA== X-IronPort-AV: E=McAfee;i="6000,8403,9759"; a="141736342" X-IronPort-AV: E=Sophos;i="5.77,320,1596524400"; d="scan'208";a="141736342" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Sep 2020 18:04:21 -0700 IronPort-SDR: R60nPkl0dkJr3z8wz4nCBnup05CgsOapA0N7eKOIxVbyI1Azv+TewyAS1y3fXLdCeCwJzUdtmA 0c5I7BycY5cg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.77,320,1596524400"; d="scan'208";a="307978842" Received: from orsmsx606.amr.corp.intel.com ([10.22.229.19]) by orsmga003.jf.intel.com with ESMTP; 29 Sep 2020 18:04:20 -0700 Received: from orsmsx601.amr.corp.intel.com (10.22.229.14) by ORSMSX606.amr.corp.intel.com (10.22.229.19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Tue, 29 Sep 2020 18:04:20 -0700 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5 via Frontend Transport; Tue, 29 Sep 2020 18:04:20 -0700 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (104.47.55.108) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.1713.5; Tue, 29 Sep 2020 18:04:20 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QpbYsWDk5rWbb26AGUsjqsw9S/vUESoGGhwwET8biF0S2DyplwvOIjArhslx4W7HyrkBVpKUABAUEPivAJs31+OnePeCaucQalqY5BkhACHpbW3LTAZsKK0yo62L4m6zdpT0E84QEBHX4Quorjwvco22Tfzhqjrg1UvqZa3EAS95OyR9wX89rU3FgIig5q2SEKavU6gokbgFwoZn/w4tREJnP/aRlR0bkCcT0PFWnrAPh6lqTomKo9H/EK8KD2fO5KO2AzQVnW/B7FSIbfBRKn7kRXniRGXuntHs+Wg85q5+61z5GuSlLatjpLYj577PFsE0QPeYr+P/P6g78QDEug== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=e9H94PKye6DtopcVtso2wHXhB9doU210xDxia28n5HE=; b=dLGN+AdVZKpW8R04rQQhhroagLI+wHM69gPy5odbvkBeYMUKcLIvFtCtSD3Gyv9SK93VKhDFVKoekacHQvp2uBmNdu11jH2MnKP+MVlVHaHtJEFkbWeae+ttEhRL/cL5VtMRb7HbQYMFGBbDblynUugnBP+gMsdbImCpqavuY5h0C4LDYisRp2CrXp/pKCMixEWoWIihV5gWZpCGs69TXime4zGAPTiTXbg4OKxTwaQ16SvVG69LeaAap8WiqQsWDVY2jtPrejaXCMIUylnnW3UBFle2U3Qe8x76a3lQbdLAbWiw7mDsoR9JWR1yGET787TvvOzpc6jXEd2QipVWig== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=e9H94PKye6DtopcVtso2wHXhB9doU210xDxia28n5HE=; b=zWAzyWT26vGF5FcApNux/oVbzWBdYcWOlbr9AooGU6nxLnpD+6I7WZqckE26dRfQlPgci31pbMrUWU7kn4Q2Kz3MyzXdmNUVTnZfOe7zI+GjP0yB9eWktuxm2sNz0weTRPO8OltJKoDDL+9TqzfxO6H2pJirWm1kHZdLq52ReP0= Received: from DM6PR11MB4425.namprd11.prod.outlook.com (2603:10b6:5:1d9::31) by DM5PR11MB1497.namprd11.prod.outlook.com (2603:10b6:4:c::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3412.24; Wed, 30 Sep 2020 01:04:17 +0000 Received: from DM6PR11MB4425.namprd11.prod.outlook.com ([fe80::8dc1:7146:874:83f7]) by DM6PR11MB4425.namprd11.prod.outlook.com ([fe80::8dc1:7146:874:83f7%6]) with mapi id 15.20.3412.029; Wed, 30 Sep 2020 01:04:17 +0000 From: "Gao, Zhichao" To: Vladimir Olovyannikov , "devel@edk2.groups.io" CC: Samer El-Haj-Mahmoud , Laszlo Ersek , Maciej Rabeda , "Wu, Jiaxin" , "Fu, Siyuan" , "Ni, Ray" , Nd , "gaoliming@byosoft.com.cn" Subject: Re: [PATCH v13 1/1] ShellPkg/DynamicCommand: add HttpDynamicCommand Thread-Topic: [PATCH v13 1/1] ShellPkg/DynamicCommand: add HttpDynamicCommand Thread-Index: AdaWfqpnRYNW6TGVDU6P5ZPjjyVOdAARAraw Date: Wed, 30 Sep 2020 01:04:17 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.5.1.3 authentication-results: broadcom.com; dkim=none (message not signed) header.d=none;broadcom.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [192.55.46.36] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 6b3493f9-ba7c-4d52-c98e-08d864dcc1ab x-ms-traffictypediagnostic: DM5PR11MB1497: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:327; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: utI3L6qNUMnsNZV+ndt9myRYLI+xDH2Y79is2RBESn5kgoJ67zlXOw+4lwgsXTQcMMRDZCtA3SQkLC47jIwUNUgpk0e+dm5PVCwl6xvBeI33zatUSGa1X0sM9f5LcYqXivnvfs+/27NK5mAAso86hC2gpnaxM+tIXIQ4w+4dNnY9whY6gWtOTtfaSQ9KNvgmC0cCUSGEgXHWHSvDipAGki7A1Yu6jyW2rx9iDW2tWnslLXzIczDFG2O9TqKh81Uqu9gt/MniejOCbNCUn6xnAmsKz0jn4XITrX33jSSwIe8HXqjGY27ajmjKIeGBriiAt6IBIDAEfB71NVwPh+ql/Ye+9dDV28HOFawE1nlzOXM6wp5SpW9UPm+UoLhgUgkpSrocycfJzR0s25usKAFDXIud0PgQc5lpjvIijxuzsTcGCFYrklJFsOlNtaGGc1piCFDxzUXNex/g4da3rUmwi0OnNWCQso9L9mkoWXjJrwyUL8VCcTQP6C4G2fXwxb6sjpiB7sWcQ8TonAn+zAOgyA== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM6PR11MB4425.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(6019001)(4636009)(136003)(39860400002)(396003)(376002)(346002)(366004)(8936002)(66476007)(66556008)(64756008)(66446008)(76116006)(71200400001)(52536014)(186003)(110136005)(9686003)(83380400001)(316002)(54906003)(86362001)(5660300002)(19627235002)(30864003)(33656002)(966005)(83080400001)(66946007)(55016002)(2906002)(478600001)(8676002)(7696005)(53546011)(4326008)(6506007)(26005)(16940595002)(559001)(569008);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: +2hTtDBRsZktefk5eAe7WyTIsAZpDTZWna/2rl59vMvyoqmW/eByO8jth7TgD3SgPxYjU1bfMZROfw0nwa0tW+PwN4/+vHJCgoEA14WrAG2Oqe7QZg8nljQn/bAdv0Zkh4GjXNek4uwa7FdskFoPx5eVhK0/qV21R32+NyTV77ogP0w/QjcS8Fx16h2MKnsHpoWwcDyxbpYeW9aROH94CUhztNzOtENuO4VcPB/EaJ4etZgTVrq5XR4RwTi+I/WmeeD4IoEeJwHZqf4Htw8btQfjJSUp0XUkBHsvYcwkwqxAAY8JxOZ59sOKkyQGhIwho398Psi7aY2FWA8cQkHtYxXBUo3LXNu92Oufn9zySqBbRxrFzXFG/xn7yjWYo0PUVCcmcnEqzNXk9BX9Tp6miSnE2hfI+decs+qIwDN00a8m5yN9/iq93Jkei/CKn5u2Z65eau3eYou8HzQ1CX33Y3mi6FEPhT2zSwuOGsNXxeGVuaTX0pF9GnTAUkAOj6cTknsKR55fvFp/eQN9wEVeDm/ixolXbnG185TzsJFnpEfHUqox+AwU6TPpdmzkFMnKh6ezrFPig6dbqx0kUvhPVjoMtWByNN8w2wuUtz4DPZnVvyexiyXNqszx8WrwpV1IdHe9dQNpY0yPTzOJ9Hc0Ag== MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM6PR11MB4425.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6b3493f9-ba7c-4d52-c98e-08d864dcc1ab X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Sep 2020 01:04:17.5750 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: +XAWpT2QnT42E5KteAbFzyorhy3sCS5RZbua4+IZ95tFugpPP5jjaS1eDk1H8SLztO+mg5nW0yRr8hkleqZF5Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR11MB1497 Return-Path: zhichao.gao@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgVmxhZGltaXIsDQoNCkl0IGlzIGEgYnVnIGZpeCBmb3IgaHR0cC4gSXQgaXMgcGFydCBvZiBO ZXR3b3JrUGtnLiBJIHNlZSB5b3UgYWxyZWFkeSBhZGQgdGhlIG1haW50YWluZXIgYW5kIHJldmll d2VyIGluIHRoZSBDYyBsaXN0LiBTb21ldGltZXMsIHRoZSBtYWludGFpbmVycy9yZXZpZXdlcnMg bWF5IGJlIGJ1c3kgYXQgb3RoZXIgd29yayBhbmQgbWlzcyB0aGUgcGF0Y2guIFlvdSBjYW4gcmVt aW5kIGFuZCBwdXNoIHRoZW0gZm9yIHJldmlldy4gSWYgdGhlIG1haW50YWluZXJzL3Jldmlld2Vy cyBkb24ndCBoYXZlIHJlc3BvbnNlIGZvciBtb3JlIHRoYW4gdHdvIHdlZWtzLCB5b3UgY2FuIGFs d2F5cyBwdXNoIHRoZW0uDQoNClRoYW5rcywNClpoaWNoYW8NCg0KPiAtLS0tLU9yaWdpbmFsIE1l c3NhZ2UtLS0tLQ0KPiBGcm9tOiBWbGFkaW1pciBPbG92eWFubmlrb3YgPHZsYWRpbWlyLm9sb3Z5 YW5uaWtvdkBicm9hZGNvbS5jb20+DQo+IFNlbnQ6IFdlZG5lc2RheSwgU2VwdGVtYmVyIDMwLCAy MDIwIDEyOjQ0IEFNDQo+IFRvOiBHYW8sIFpoaWNoYW8gPHpoaWNoYW8uZ2FvQGludGVsLmNvbT47 IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+IENjOiBTYW1lciBFbC1IYWotTWFobW91ZCA8U2FtZXIu RWwtSGFqLU1haG1vdWRAYXJtLmNvbT47IExhc3psbyBFcnNlaw0KPiA8bGVyc2VrQHJlZGhhdC5j b20+OyBNYWNpZWogUmFiZWRhIDxtYWNpZWoucmFiZWRhQGxpbnV4LmludGVsLmNvbT47IFd1LA0K PiBKaWF4aW4gPGppYXhpbi53dUBpbnRlbC5jb20+OyBGdSwgU2l5dWFuIDxzaXl1YW4uZnVAaW50 ZWwuY29tPjsgTmksIFJheQ0KPiA8cmF5Lm5pQGludGVsLmNvbT47IE5kIDxuZEBhcm0uY29tPjsg Z2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuDQo+IFN1YmplY3Q6IFJFOiBbUEFUQ0ggdjEzIDEvMV0g U2hlbGxQa2cvRHluYW1pY0NvbW1hbmQ6IGFkZA0KPiBIdHRwRHluYW1pY0NvbW1hbmQNCj4gDQo+ IEhpIFpoaWNoYW8sDQo+IA0KPiBUaGFuayB5b3UgZm9yIHJldmlldy4NCj4gDQo+IFRoZXJlIGlz IGFub3RoZXIgY29tbWl0IHdhaXRpbmcgZm9yIHJldmlldywgd2hpY2ggaXMgcmVsYXRlZCB0byBI dHRwLCBidXQNCj4gaXQgaXMgbm90IHJlbGF0ZWQgdG8gU2hlbGxQa2c6DQo+IA0KPiBodHRwczov L2VkazIuZ3JvdXBzLmlvL2cvZGV2ZWwvbWVzc2FnZS82NDc2NQ0KPiANCj4gSWYgb25lIGhhcyBh IHNlcnZlciB3aGljaCByZXBsaWVzIHdpdGggQ29udGVudC10eXBlOiBIVE1MLCBidXQgZG9lcyBu b3QNCj4gc2VuZCB0aGUgQ29udGVudC1MZW5ndGggZmllbGQsDQo+IHRoaXMgY29uZnVzZXMgSHR0 cE1lc3NhZ2VQYXJzZXIgYXMgaXQgc2V0cyBDb250ZW50LUxlbmd0aCBoZWFkZXIgdG8gMCwgYW5k DQo+IGNhdXNlcyBpdCB0byBzcGluIGZvcmV2ZXIgbm90IGluY3JlbWVudGluZyB0aGUgYm9keSBz dGFydCBhZGRyZXNzLg0KPiBUaGUgcGF0Y2ggYWJvdmUgZml4ZXMgdGhlIGJ1Zy4NCj4gDQo+IEkg YW0gbm90IHN1cmUgd2hvIHRoaXMgc2hvdWxkIGJlIGFkZHJlc3NlZCB0by4gSSBoYXZlbid0IHNl ZW4gYSByZXNwb25zZQ0KPiBzaW5jZSBBdWcgMjh0aCB3aGVuIEkgc2VudCB0aGUgcGF0Y2guDQo+ IFRoZSBpc3N1ZSBpcyBpbiBEeGVIdHRwTGliLg0KPiANCj4gVGhhbmsgeW91LA0KPiBWbGFkaW1p cg0KPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gRnJvbTogR2FvLCBaaGljaGFv IDxtYWlsdG86emhpY2hhby5nYW9AaW50ZWwuY29tPg0KPiA+IFNlbnQ6IE1vbmRheSwgU2VwdGVt YmVyIDI4LCAyMDIwIDc6MjkgUE0NCj4gPiBUbzogVmxhZGltaXIgT2xvdnlhbm5pa292IDxtYWls dG86dmxhZGltaXIub2xvdnlhbm5pa292QGJyb2FkY29tLmNvbT47DQo+ID4gbWFpbHRvOmRldmVs QGVkazIuZ3JvdXBzLmlvDQo+ID4gQ2M6IFNhbWVyIEVsLUhhai1NYWhtb3VkIDxtYWlsdG86U2Ft ZXIuRWwtSGFqLU1haG1vdWRAYXJtLmNvbT47DQo+IExhc3psbw0KPiA+IEVyc2VrIDxtYWlsdG86 bGVyc2VrQHJlZGhhdC5jb20+OyBNYWNpZWogUmFiZWRhDQo+ID4gPG1haWx0bzptYWNpZWoucmFi ZWRhQGxpbnV4LmludGVsLmNvbT47IFd1LCBKaWF4aW4NCj4gPG1haWx0bzpqaWF4aW4ud3VAaW50 ZWwuY29tPjsgRnUsDQo+ID4gU2l5dWFuIDxtYWlsdG86c2l5dWFuLmZ1QGludGVsLmNvbT47IE5p LCBSYXkgPG1haWx0bzpyYXkubmlAaW50ZWwuY29tPjsNCj4gTGltaW5nIEdhbw0KPiA+IDxtYWls dG86bGltaW5nLmdhb0BpbnRlbC5jb20+OyBOZCA8bWFpbHRvOm5kQGFybS5jb20+DQo+ID4gU3Vi amVjdDogUkU6IFtQQVRDSCB2MTMgMS8xXSBTaGVsbFBrZy9EeW5hbWljQ29tbWFuZDogYWRkDQo+ ID4gSHR0cER5bmFtaWNDb21tYW5kDQo+ID4NCj4gPiBIaSwNCj4gPg0KPiA+IEkgaGF2ZSBjaGVj a2VkIGluIG9wZW5DSSBhbmQgaXQgaXMgcGFzc2VkLg0KPiA+DQo+ID4gUmV2aWV3ZWQtYnk6IFpo aWNoYW8gR2FvIDxtYWlsdG86emhpY2hhby5nYW9AaW50ZWwuY29tPg0KPiA+DQo+ID4gSGkgTGFz emxvLA0KPiA+DQo+ID4gRG8geW91IGhhdmUgYSBwbGFuIHRvIHRlc3QgdGhpcyBwYXRjaD8NCj4g Pg0KPiA+IFRoYW5rcywNCj4gPiBaaGljaGFvDQo+ID4NCj4gPiA+IC0tLS0tT3JpZ2luYWwgTWVz c2FnZS0tLS0tDQo+ID4gPiBGcm9tOiBWbGFkaW1pciBPbG92eWFubmlrb3YNCj4gPG1haWx0bzp2 bGFkaW1pci5vbG92eWFubmlrb3ZAYnJvYWRjb20uY29tPg0KPiA+ID4gU2VudDogRnJpZGF5LCBT ZXB0ZW1iZXIgMjUsIDIwMjAgNDo0MSBBTQ0KPiA+ID4gVG86IG1haWx0bzpkZXZlbEBlZGsyLmdy b3Vwcy5pbw0KPiA+ID4gQ2M6IFZsYWRpbWlyIE9sb3Z5YW5uaWtvdiA8bWFpbHRvOnZsYWRpbWly Lm9sb3Z5YW5uaWtvdkBicm9hZGNvbS5jb20+Ow0KPiA+IFNhbWVyIEVsLQ0KPiA+ID4gSGFqLU1h aG1vdWQgPG1haWx0bzpTYW1lci5FbC1IYWotTWFobW91ZEBhcm0uY29tPjsgTGFzemxvIEVyc2Vr DQo+ID4gPiA8bWFpbHRvOmxlcnNla0ByZWRoYXQuY29tPjsgR2FvLCBaaGljaGFvDQo+IDxtYWls dG86emhpY2hhby5nYW9AaW50ZWwuY29tPjsgTWFjaWVqDQo+ID4gUmFiZWRhDQo+ID4gPiA8bWFp bHRvOm1hY2llai5yYWJlZGFAbGludXguaW50ZWwuY29tPjsgV3UsIEppYXhpbg0KPiA8bWFpbHRv OmppYXhpbi53dUBpbnRlbC5jb20+OyBGdSwNCj4gPiBTaXl1YW4NCj4gPiA+IDxtYWlsdG86c2l5 dWFuLmZ1QGludGVsLmNvbT47IE5pLCBSYXkgPG1haWx0bzpyYXkubmlAaW50ZWwuY29tPjsNCj4g TGltaW5nIEdhbw0KPiA+ID4gPG1haWx0bzpsaW1pbmcuZ2FvQGludGVsLmNvbT47IE5kIDxtYWls dG86bmRAYXJtLmNvbT4NCj4gPiA+IFN1YmplY3Q6IFtQQVRDSCB2MTMgMS8xXSBTaGVsbFBrZy9E eW5hbWljQ29tbWFuZDogYWRkDQo+ID4gPiBIdHRwRHluYW1pY0NvbW1hbmQNCj4gPiA+DQo+ID4g PiBJbnRyb2R1Y2UgYW4gaHR0cCBjbGllbnQgdXRpbGl6aW5nIEVESzIgSFRUUCBwcm90b2NvbCwg dG8NCj4gPiA+IGFsbG93IGZhc3QgaW1hZ2UgZG93bmxvYWRpbmcgZnJvbSBodHRwL2h0dHBzIHNl cnZlcnMuDQo+ID4gPiBIVFRQIGRvd25sb2FkIHNwZWVkIGlzIHVzdWFsbHkgZmFzdGVyIHRoYW4g dGZ0cC4NCj4gPiA+IFRoZSBjbGllbnQgaXMgYmFzZWQgb24gdGhlIHNhbWUgYXBwcm9hY2ggYXMg dGZ0cCBkeW5hbWljIGNvbW1hbmQsIGFuZA0KPiA+ID4gdXNlcyB0aGUgc2FtZSBVRUZJIFNoZWxs IGNvbW1hbmQgbGluZSBwYXJhbWV0ZXJzLiBUaGlzIG1ha2VzIGl0IGVhc3kNCj4gPiA+IGludGVn cmF0aW5nIGh0dHAgaW50byBleGlzdGluZyBVRUZJIFNoZWxsIHNjcmlwdHMuDQo+ID4gPiBOb3Rl IHRoYXQgdG8gZW5hYmxlIEhUVFAgZG93bmxvYWQsIGZlYXR1cmUgUGNkDQo+ID4gPiBnRWZpTmV0 d29ya1BrZ1Rva2VuU3BhY2VHdWlkLlBjZEFsbG93SHR0cENvbm5lY3Rpb25zIG11c3QNCj4gPiA+ IGJlIHNldCB0byBUUlVFLg0KPiA+ID4gQlo6IGh0dHBzOi8vYnVnemlsbGEudGlhbm9jb3JlLm9y Zy9zaG93X2J1Zy5jZ2k/aWQ9Mjg2MA0KPiA+ID4NCj4gPiA+IFNpZ25lZC1vZmYtYnk6IFZsYWRp bWlyIE9sb3Z5YW5uaWtvdg0KPiA+IDxtYWlsdG86dmxhZGltaXIub2xvdnlhbm5pa292QGJyb2Fk Y29tLmNvbT4NCj4gPiA+IENjOiBTYW1lciBFbC1IYWotTWFobW91ZCA8bWFpbHRvOlNhbWVyLkVs LUhhai1NYWhtb3VkQGFybS5jb20+DQo+ID4gPiBDYzogTGFzemxvIEVyc2VrIDxtYWlsdG86bGVy c2VrQHJlZGhhdC5jb20+DQo+ID4gPiBDYzogWmhpY2hhbyBHYW8gPG1haWx0bzp6aGljaGFvLmdh b0BpbnRlbC5jb20+DQo+ID4gPiBDYzogTWFjaWVqIFJhYmVkYSA8bWFpbHRvOm1hY2llai5yYWJl ZGFAbGludXguaW50ZWwuY29tPg0KPiA+ID4gQ2M6IEppYXhpbiBXdSA8bWFpbHRvOmppYXhpbi53 dUBpbnRlbC5jb20+DQo+ID4gPiBDYzogU2l5dWFuIEZ1IDxtYWlsdG86c2l5dWFuLmZ1QGludGVs LmNvbT4NCj4gPiA+IENjOiBSYXkgTmkgPG1haWx0bzpyYXkubmlAaW50ZWwuY29tPg0KPiA+ID4g Q2M6IExpbWluZyBHYW8gPG1haWx0bzpsaW1pbmcuZ2FvQGludGVsLmNvbT4NCj4gPiA+IENjOiBO ZCA8bWFpbHRvOm5kQGFybS5jb20+DQo+ID4gPiAtLS0NCj4gPiA+ICBTaGVsbFBrZy9TaGVsbFBr Zy5kZWMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsNCj4gPiA+ICBTaGVsbFBrZy9T aGVsbFBrZy5kc2MgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA1ICsNCj4gPiA+ICAuLi4v SHR0cER5bmFtaWNDb21tYW5kL0h0dHBBcHAuaW5mICAgICAgICAgICAgfCAgIDU3ICsNCj4gPiA+ ICAuLi4vSHR0cER5bmFtaWNDb21tYW5kL0h0dHBEeW5hbWljQ29tbWFuZC5pbmYgfCAgIDYyICsN Cj4gPiA+ICAuLi4vRHluYW1pY0NvbW1hbmQvSHR0cER5bmFtaWNDb21tYW5kL0h0dHAuaCAgfCAg IDkyICsNCj4gPiA+ICBTaGVsbFBrZy9JbmNsdWRlL0d1aWQvU2hlbGxMaWJIaWlHdWlkLmggICAg ICAgfCAgICA1ICsNCj4gPiA+ICAuLi4vRHluYW1pY0NvbW1hbmQvSHR0cER5bmFtaWNDb21tYW5k L0h0dHAuYyAgfCAxOTA0DQo+ID4gPiArKysrKysrKysrKysrKysrKw0KPiA+ID4gIC4uLi9IdHRw RHluYW1pY0NvbW1hbmQvSHR0cEFwcC5jICAgICAgICAgICAgICB8ICAgNjEgKw0KPiA+ID4gIC4u Li9IdHRwRHluYW1pY0NvbW1hbmQvSHR0cER5bmFtaWNDb21tYW5kLmMgICB8ICAxMzcgKysNCj4g PiA+ICAuLi4vSHR0cER5bmFtaWNDb21tYW5kL0h0dHAudW5pICAgICAgICAgICAgICAgfCAgMTE3 ICsNCj4gPiA+ICAxMCBmaWxlcyBjaGFuZ2VkLCAyNDQxIGluc2VydGlvbnMoKykNCj4gPiA+ICBj cmVhdGUgbW9kZSAxMDA2NDQNCj4gPiA+IFNoZWxsUGtnL0R5bmFtaWNDb21tYW5kL0h0dHBEeW5h bWljQ29tbWFuZC9IdHRwQXBwLmluZg0KPiA+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiA+ID4N Cj4gPiBTaGVsbFBrZy9EeW5hbWljQ29tbWFuZC9IdHRwRHluYW1pY0NvbW1hbmQvSHR0cER5bmFt aWNDb21tYW5kDQo+ID4gLmluZg0KPiA+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiA+ID4gU2hl bGxQa2cvRHluYW1pY0NvbW1hbmQvSHR0cER5bmFtaWNDb21tYW5kL0h0dHAuaA0KPiA+ID4gIGNy ZWF0ZSBtb2RlIDEwMDY0NA0KPiA+IFNoZWxsUGtnL0R5bmFtaWNDb21tYW5kL0h0dHBEeW5hbWlj Q29tbWFuZC9IdHRwLmMNCj4gPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gPiA+IFNoZWxsUGtn L0R5bmFtaWNDb21tYW5kL0h0dHBEeW5hbWljQ29tbWFuZC9IdHRwQXBwLmMNCj4gPiA+ICBjcmVh dGUgbW9kZSAxMDA2NDQNCj4gPiA+DQo+ID4gU2hlbGxQa2cvRHluYW1pY0NvbW1hbmQvSHR0cER5 bmFtaWNDb21tYW5kL0h0dHBEeW5hbWljQ29tbWFuZA0KPiA+IC5jDQo+ID4gPiAgY3JlYXRlIG1v ZGUgMTAwNjQ0DQo+ID4gPiBTaGVsbFBrZy9EeW5hbWljQ29tbWFuZC9IdHRwRHluYW1pY0NvbW1h bmQvSHR0cC51bmkNCj4gPiA+DQo+ID4gPiBkaWZmIC0tZ2l0IGEvU2hlbGxQa2cvU2hlbGxQa2cu ZGVjIGIvU2hlbGxQa2cvU2hlbGxQa2cuZGVjDQo+ID4gPiBpbmRleCBkMDg0M2QzMzgxMjYuLjdi MmQxMjMwYmQyYyAxMDA2NDQNCj4gPiA+IC0tLSBhL1NoZWxsUGtnL1NoZWxsUGtnLmRlYw0KPiA+ ID4gKysrIGIvU2hlbGxQa2cvU2hlbGxQa2cuZGVjDQo+ID4gPiBAQCAtNTMsNiArNTMsNyBAQCBb R3VpZHNdDQo+ID4gPiAgICBnU2hlbGxOZXR3b3JrMUhpaUd1aWQgICAgICAgICAgID0gezB4ZjNk MzAxYmIsIDB4ZjRhNSwgMHg0NWE4LA0KPiB7MHhiMCwgMHhiNywNCj4gPiAweGZhLA0KPiA+ID4g MHg5OSwgMHg5YywgMHg2MiwgMHgzNywgMHhhZX19DQo+ID4gPiAgICBnU2hlbGxOZXR3b3JrMkhp aUd1aWQgICAgICAgICAgID0gezB4MTc0YjJiNSwgMHhmNTA1LCAweDRiMTIsDQo+IHsweGFhLCAw eDYwLA0KPiA+IDB4NTksDQo+ID4gPiAweGRmLCAweGY4LCAweGQ2LCAweGVhLCAweDM3fX0NCj4g PiA+ICAgIGdTaGVsbFRmdHBIaWlHdWlkICAgICAgICAgICAgICAgPSB7MHg3MzhhOTMxNCwgMHg4 MmMxLCAweDQ1OTIsDQo+IHsweDhmLCAweGY3LCAweGMxLA0KPiA+ID4gMHhiZCwgMHhmMSwgMHhi MiwgMHgwZSwgMHhkNH19DQo+ID4gPiArICBnU2hlbGxIdHRwSGlpR3VpZCAgICAgICAgICAgICAg ID0gezB4MzkwZjg0YjMsIDB4MjIxYywgMHg0ZDllLA0KPiB7MHhiNSwgMHgwNiwNCj4gPiAweDZk LA0KPiA+ID4gMHhiOSwgMHg0MiwgMHgzZSwgMHgwYSwgMHg3ZX19DQo+ID4gPiAgICBnU2hlbGxC Y2ZnSGlpR3VpZCAgICAgICAgICAgICAgID0gezB4NWY1ZjYwNWQsIDB4MTU4MywgMHg0YTJkLA0K PiB7MHhhNiwgMHhiMiwgMHhlYiwNCj4gPiA+IDB4MTIsIDB4ZGEsIDB4YjQsIDB4YTIsIDB4YjZ9 fQ0KPiA+ID4gICAgZ1NoZWxsQWNwaVZpZXdIaWlHdWlkICAgICAgICAgICA9IHsweGRhOGNjZGY0 LCAweGVkOGYsIDB4NGZmYywNCj4gezB4YjUsIDB4ZWYsDQo+ID4gMHgyZSwNCj4gPiA+IDB4ZjUs IDB4NWUsIDB4MjQsIDB4OTMsIDB4MmF9fQ0KPiA+ID4gICAgIyBGSUxFX0dVSUQgYXMgZGVmaW5l ZCBpbiBTaGVsbFBrZy9BcHBsaWNhdGlvbi9TaGVsbC9TaGVsbC5pbmYNCj4gPiA+IGRpZmYgLS1n aXQgYS9TaGVsbFBrZy9TaGVsbFBrZy5kc2MgYi9TaGVsbFBrZy9TaGVsbFBrZy5kc2MNCj4gPiA+ IGluZGV4IDg2ZTlmMWUwMDQwZC4uYzQyYmM5NDY0YTBmIDEwMDY0NA0KPiA+ID4gLS0tIGEvU2hl bGxQa2cvU2hlbGxQa2cuZHNjDQo+ID4gPiArKysgYi9TaGVsbFBrZy9TaGVsbFBrZy5kc2MNCj4g PiA+IEBAIC0xMzksNiArMTM5LDExIEBAIFtDb21wb25lbnRzXQ0KPiA+ID4gICAgICAgIGdFZmlT aGVsbFBrZ1Rva2VuU3BhY2VHdWlkLlBjZFNoZWxsTGliQXV0b0luaXRpYWxpemV8RkFMU0UNCj4g PiA+ICAgIH0NCj4gPiA+ICAgIFNoZWxsUGtnL0R5bmFtaWNDb21tYW5kL1RmdHBEeW5hbWljQ29t bWFuZC9UZnRwQXBwLmluZg0KPiA+ID4gKw0KPiA+ID4NCj4gPiBTaGVsbFBrZy9EeW5hbWljQ29t bWFuZC9IdHRwRHluYW1pY0NvbW1hbmQvSHR0cER5bmFtaWNDb21tYW5kDQo+ID4gLmluZiB7DQo+ ID4gPiArICAgIDxQY2RzRml4ZWRBdEJ1aWxkPg0KPiA+ID4gKyAgICAgIGdFZmlTaGVsbFBrZ1Rv a2VuU3BhY2VHdWlkLlBjZFNoZWxsTGliQXV0b0luaXRpYWxpemV8RkFMU0UNCj4gPiA+ICsgIH0N Cj4gPiA+ICsgIFNoZWxsUGtnL0R5bmFtaWNDb21tYW5kL0h0dHBEeW5hbWljQ29tbWFuZC9IdHRw QXBwLmluZg0KPiA+ID4NCj4gPiBTaGVsbFBrZy9EeW5hbWljQ29tbWFuZC9EcER5bmFtaWNDb21t YW5kL0RwRHluYW1pY0NvbW1hbmQuaW5mDQo+ID4gew0KPiA+ID4gICAgICA8UGNkc0ZpeGVkQXRC dWlsZD4NCj4gPiA+ICAgICAgICBnRWZpU2hlbGxQa2dUb2tlblNwYWNlR3VpZC5QY2RTaGVsbExp YkF1dG9Jbml0aWFsaXplfEZBTFNFDQo+ID4gPiBkaWZmIC0tZ2l0DQo+ID4gYS9TaGVsbFBrZy9E eW5hbWljQ29tbWFuZC9IdHRwRHluYW1pY0NvbW1hbmQvSHR0cEFwcC5pbmYNCj4gPiA+IGIvU2hl bGxQa2cvRHluYW1pY0NvbW1hbmQvSHR0cER5bmFtaWNDb21tYW5kL0h0dHBBcHAuaW5mDQo+ID4g PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi4yN2IyMDhi MjU0MzcNCj4gPiA+IC0tLSAvZGV2L251bGwNCj4gPiA+ICsrKyBiL1NoZWxsUGtnL0R5bmFtaWND b21tYW5kL0h0dHBEeW5hbWljQ29tbWFuZC9IdHRwQXBwLmluZg0KPiA+ID4gQEAgLTAsMCArMSw1 NyBAQA0KPiA+ID4gKyMjICBAZmlsZQ0KPiA+ID4gKyMgUHJvdmlkZXMgU2hlbGwgJ2h0dHAnIHN0 YW5kYWxvbmUgYXBwbGljYXRpb24uDQo+ID4gPiArIw0KPiA+ID4gKyMgQ29weXJpZ2h0IChjKSAy MDEwIC0gMjAxOSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+IDxC Uj4NCj4gPiA+ICsjIENvcHlyaWdodCAoYykgMjAxNSwgQVJNIEx0ZC4gQWxsIHJpZ2h0cyByZXNl cnZlZC48QlI+DQo+ID4gPiArIyBDb3B5cmlnaHQgKGMpIDIwMjAsIEJyb2FkY29tLiBBbGwgcmln aHRzIHJlc2VydmVkLjxCUj4NCj4gPiA+ICsjDQo+ID4gPiArIyAgU1BEWC1MaWNlbnNlLUlkZW50 aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPiA+ICsjDQo+ID4gPiArIw0KPiA+ID4gKyMj DQo+ID4gPiArDQo+ID4gPiArW0RlZmluZXNdDQo+ID4gPiArICBJTkZfVkVSU0lPTiAgICAgICAg ICAgICAgICAgICAgPSAweDAwMDEwMDA2DQo+ID4gPiArICBCQVNFX05BTUUgICAgICAgICAgICAg ICAgICAgICAgPSBodHRwDQo+ID4gPiArICBGSUxFX0dVSUQgICAgICAgICAgICAgICAgICAgICAg PQ0KPiA1NkIwMEZCNy05MUQyLTg2OUItQ0U1Qy0yNkNEMUE4OUM3M0MNCj4gPiA+ICsgIE1PRFVM RV9UWVBFICAgICAgICAgICAgICAgICAgICA9IFVFRklfQVBQTElDQVRJT04NCj4gPiA+ICsgIFZF UlNJT05fU1RSSU5HICAgICAgICAgICAgICAgICA9IDEuMA0KPiA+ID4gKyAgRU5UUllfUE9JTlQg ICAgICAgICAgICAgICAgICAgID0gSHR0cEFwcEluaXRpYWxpemUNCj4gPiA+ICsjDQo+ID4gPiAr IyAgVGhpcyBmbGFnIHNwZWNpZmllcyB3aGV0aGVyIEhJSSByZXNvdXJjZSBzZWN0aW9uIGlzIGdl bmVyYXRlZCBpbnRvDQo+IFBFDQo+ID4gaW1hZ2UuDQo+ID4gPiArIw0KPiA+ID4gKyAgVUVGSV9I SUlfUkVTT1VSQ0VfU0VDVElPTiAgICAgID0gVFJVRQ0KPiA+ID4gKw0KPiA+ID4gK1tTb3VyY2Vz LmNvbW1vbl0NCj4gPiA+ICsgIEh0dHAuYw0KPiA+ID4gKyAgSHR0cEFwcC5jDQo+ID4gPiArICBI dHRwLmgNCj4gPiA+ICsgIEh0dHAudW5pDQo+ID4gPiArDQo+ID4gPiArW1BhY2thZ2VzXQ0KPiA+ ID4gKyAgTWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMNCj4gPiA+ICsgIE1kZVBrZy9NZGVQ a2cuZGVjDQo+ID4gPiArICBOZXR3b3JrUGtnL05ldHdvcmtQa2cuZGVjDQo+ID4gPiArICBTaGVs bFBrZy9TaGVsbFBrZy5kZWMNCj4gPiA+ICsNCj4gPiA+ICtbTGlicmFyeUNsYXNzZXNdDQo+ID4g PiArICBCYXNlTGliDQo+ID4gPiArICBCYXNlTWVtb3J5TGliDQo+ID4gPiArICBEZWJ1Z0xpYg0K PiA+ID4gKyAgRmlsZUhhbmRsZUxpYg0KPiA+ID4gKyAgSGlpTGliDQo+ID4gPiArICBIdHRwTGli DQo+ID4gPiArICBNZW1vcnlBbGxvY2F0aW9uTGliDQo+ID4gPiArICBOZXRMaWINCj4gPiA+ICsg IFNoZWxsTGliDQo+ID4gPiArICBVZWZpQXBwbGljYXRpb25FbnRyeVBvaW50DQo+ID4gPiArICBV ZWZpQm9vdFNlcnZpY2VzVGFibGVMaWINCj4gPiA+ICsgIFVlZmlIaWlTZXJ2aWNlc0xpYg0KPiA+ ID4gKyAgVWVmaUxpYg0KPiA+ID4gKyAgVWVmaVJ1bnRpbWVTZXJ2aWNlc1RhYmxlTGliDQo+ID4g PiArDQo+ID4gPiArW1Byb3RvY29sc10NCj4gPiA+ICsgIGdFZmlIaWlQYWNrYWdlTGlzdFByb3Rv Y29sR3VpZCAgICAgICAgICAgICAgICAgIyMgQ09OU1VNRVMNCj4gPiA+ICsgIGdFZmlIdHRwUHJv dG9jb2xHdWlkICAgICAgICAgICAgICAgICAgICAgICAgICMjIENPTlNVTUVTDQo+ID4gPiArICBn RWZpSHR0cFNlcnZpY2VCaW5kaW5nUHJvdG9jb2xHdWlkICAgICAgICAgICAjIyBDT05TVU1FUw0K PiA+ID4gKyAgZ0VmaU1hbmFnZWROZXR3b3JrU2VydmljZUJpbmRpbmdQcm90b2NvbEd1aWQgICAj IyBDT05TVU1FUw0KPiA+ID4gZGlmZiAtLWdpdA0KPiA+ID4NCj4gPiBhL1NoZWxsUGtnL0R5bmFt aWNDb21tYW5kL0h0dHBEeW5hbWljQ29tbWFuZC9IdHRwRHluYW1pY0NvbW1hDQo+ID4gbmQuaW4N Cj4gPiA+IGYNCj4gPiA+DQo+ID4gYi9TaGVsbFBrZy9EeW5hbWljQ29tbWFuZC9IdHRwRHluYW1p Y0NvbW1hbmQvSHR0cER5bmFtaWNDb21tYQ0KPiA+IG5kLmluDQo+ID4gPiBmDQo+ID4gPiBuZXcg ZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi4xNTljYWUyMTRjY2MN Cj4gPiA+IC0tLSAvZGV2L251bGwNCj4gPiA+ICsrKw0KPiA+ID4NCj4gPiBiL1NoZWxsUGtnL0R5 bmFtaWNDb21tYW5kL0h0dHBEeW5hbWljQ29tbWFuZC9IdHRwRHluYW1pY0NvbW1hDQo+ID4gbmQu aW4NCj4gPiA+IGYNCj4gPiA+IEBAIC0wLDAgKzEsNjIgQEANCj4gPiA+ICsjIyAgQGZpbGUNCj4g PiA+ICsjIFByb3ZpZGVzIFNoZWxsICdodHRwJyBkeW5hbWljIGNvbW1hbmQuDQo+ID4gPiArIw0K PiA+ID4gKyMgQ29weXJpZ2h0IChjKSAyMDEwIC0gMjAxOSwgSW50ZWwgQ29ycG9yYXRpb24uIEFs bCByaWdodHMgcmVzZXJ2ZWQuDQo+IDxCUj4NCj4gPiA+ICsjIENvcHlyaWdodCAoYykgMjAxNSwg QVJNIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gPiArIyBDb3B5cmlnaHQgKGMp IDIwMjAsIEJyb2FkY29tLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiA+ICsjDQo+ID4g PiArIyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPiA+ ICsjDQo+ID4gPiArIw0KPiA+ID4gKyMjDQo+ID4gPiArDQo+ID4gPiArW0RlZmluZXNdDQo+ID4g PiArICBJTkZfVkVSU0lPTiAgICAgICAgICAgICAgICAgICAgPSAweDAwMDEwMDA2DQo+ID4gPiAr ICBCQVNFX05BTUUgICAgICAgICAgICAgICAgICAgICAgPSBodHRwRHluYW1pY0NvbW1hbmQNCj4g PiA+ICsgIEZJTEVfR1VJRCAgICAgICAgICAgICAgICAgICAgICA9DQo+IDE5NjE4QkNFLTU1QUUt MDlDNi0zN0U5LTRDRTA0MDg0QzdBMQ0KPiA+ID4gKyAgTU9EVUxFX1RZUEUgICAgICAgICAgICAg ICAgICAgID0gRFhFX0RSSVZFUg0KPiA+ID4gKyAgVkVSU0lPTl9TVFJJTkcgICAgICAgICAgICAg ICAgID0gMS4wDQo+ID4gPiArICBFTlRSWV9QT0lOVCAgICAgICAgICAgICAgICAgICAgPSBIdHRw Q29tbWFuZEluaXRpYWxpemUNCj4gPiA+ICsgIFVOTE9BRF9JTUFHRSAgICAgICAgICAgICAgICAg ICA9IEh0dHBVbmxvYWQNCj4gPiA+ICsjDQo+ID4gPiArIyAgVGhpcyBmbGFnIHNwZWNpZmllcyB3 aGV0aGVyIEhJSSByZXNvdXJjZSBzZWN0aW9uIGlzIGdlbmVyYXRlZCBpbnRvDQo+IFBFDQo+ID4g aW1hZ2UuDQo+ID4gPiArIw0KPiA+ID4gKyAgVUVGSV9ISUlfUkVTT1VSQ0VfU0VDVElPTiAgICAg ID0gVFJVRQ0KPiA+ID4gKw0KPiA+ID4gK1tTb3VyY2VzLmNvbW1vbl0NCj4gPiA+ICsgIEh0dHAu Yw0KPiA+ID4gKyAgSHR0cER5bmFtaWNDb21tYW5kLmMNCj4gPiA+ICsgIEh0dHAuaA0KPiA+ID4g KyAgSHR0cC51bmkNCj4gPiA+ICsNCj4gPiA+ICtbUGFja2FnZXNdDQo+ID4gPiArICBNZGVQa2cv TWRlUGtnLmRlYw0KPiA+ID4gKyAgTWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMNCj4gPiA+ ICsgIE5ldHdvcmtQa2cvTmV0d29ya1BrZy5kZWMNCj4gPiA+ICsgIFNoZWxsUGtnL1NoZWxsUGtn LmRlYw0KPiA+ID4gKw0KPiA+ID4gK1tMaWJyYXJ5Q2xhc3Nlc10NCj4gPiA+ICsgIEJhc2VMaWIN Cj4gPiA+ICsgIEJhc2VNZW1vcnlMaWINCj4gPiA+ICsgIERlYnVnTGliDQo+ID4gPiArICBGaWxl SGFuZGxlTGliDQo+ID4gPiArICBIaWlMaWINCj4gPiA+ICsgIEh0dHBMaWINCj4gPiA+ICsgIE1l bW9yeUFsbG9jYXRpb25MaWINCj4gPiA+ICsgIE5ldExpYg0KPiA+ID4gKyAgU2hlbGxMaWINCj4g PiA+ICsgIFVlZmlCb290U2VydmljZXNUYWJsZUxpYg0KPiA+ID4gKyAgVWVmaURyaXZlckVudHJ5 UG9pbnQNCj4gPiA+ICsgIFVlZmlIaWlTZXJ2aWNlc0xpYg0KPiA+ID4gKyAgVWVmaUxpYg0KPiA+ ID4gKyAgVWVmaVJ1bnRpbWVTZXJ2aWNlc1RhYmxlTGliDQo+ID4gPiArDQo+ID4gPiArW1Byb3Rv Y29sc10NCj4gPiA+ICsgIGdFZmlIaWlQYWNrYWdlTGlzdFByb3RvY29sR3VpZCAgICAgICAgICAg ICAgICAgIyMgQ09OU1VNRVMNCj4gPiA+ICsgIGdFZmlIdHRwUHJvdG9jb2xHdWlkICAgICAgICAg ICAgICAgICAgICAgICAgICMjIENPTlNVTUVTDQo+ID4gPiArICBnRWZpSHR0cFNlcnZpY2VCaW5k aW5nUHJvdG9jb2xHdWlkICAgICAgICAgICAjIyBDT05TVU1FUw0KPiA+ID4gKyAgZ0VmaU1hbmFn ZWROZXR3b3JrU2VydmljZUJpbmRpbmdQcm90b2NvbEd1aWQgICAjIyBDT05TVU1FUw0KPiA+ID4g KyAgZ0VmaVNoZWxsRHluYW1pY0NvbW1hbmRQcm90b2NvbEd1aWQgICAgICAgICAgICAjIyBQUk9E VUNFUw0KPiA+ID4gKw0KPiA+ID4gK1tERVBFWF0NCj4gPiA+ICsgIFRSVUUNCj4gPiA+IGRpZmYg LS1naXQgYS9TaGVsbFBrZy9EeW5hbWljQ29tbWFuZC9IdHRwRHluYW1pY0NvbW1hbmQvSHR0cC5o DQo+ID4gPiBiL1NoZWxsUGtnL0R5bmFtaWNDb21tYW5kL0h0dHBEeW5hbWljQ29tbWFuZC9IdHRw LmgNCj4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gPiBpbmRleCAwMDAwMDAwMDAwMDAu LmZhOGI2ZjVhYTRlNQ0KPiA+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ID4gKysrIGIvU2hlbGxQa2cv RHluYW1pY0NvbW1hbmQvSHR0cER5bmFtaWNDb21tYW5kL0h0dHAuaA0KPiA+ID4gQEAgLTAsMCAr MSw5MiBAQA0KPiA+ID4gKy8qKiBAZmlsZQ0KPiA+ID4gKyAgSGVhZGVyIGZpbGUgZm9yICdodHRw JyBjb21tYW5kIGZ1bmN0aW9ucy4NCj4gPiA+ICsNCj4gPiA+ICsgIENvcHlyaWdodCAoYykgMjAx MCAtIDIwMTcsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiA8QlI+ DQo+ID4gPiArICBDb3B5cmlnaHQgKGMpIDIwMTUsIEFSTSBMdGQuIEFsbCByaWdodHMgcmVzZXJ2 ZWQuPEJSPg0KPiA+ID4gKyAgQ29weXJpZ2h0IChjKSAyMDIwLCBCcm9hZGNvbS4gQWxsIHJpZ2h0 cyByZXNlcnZlZC48QlI+DQo+ID4gPiArDQo+ID4gPiArICBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gKw0KPiA+ ID4gKyNpZm5kZWYgX0hUVFBfSF8NCj4gPiA+ICsjZGVmaW5lIF9IVFRQX0hfDQo+ID4gPiArDQo+ ID4gPiArI2luY2x1ZGUgPFVlZmkuaD4NCj4gPiA+ICsNCj4gPiA+ICsjaW5jbHVkZSA8TGlicmFy eS9CYXNlTGliLmg+DQo+ID4gPiArI2luY2x1ZGUgPExpYnJhcnkvQmFzZU1lbW9yeUxpYi5oPg0K PiA+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L0RlYnVnTGliLmg+DQo+ID4gPiArI2luY2x1ZGUgPExp YnJhcnkvSGlpTGliLmg+DQo+ID4gPiArI2luY2x1ZGUgPExpYnJhcnkvSHR0cExpYi5oPg0KPiA+ ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L01lbW9yeUFsbG9jYXRpb25MaWIuaD4NCj4gPiA+ICsjaW5j bHVkZSA8TGlicmFyeS9OZXRMaWIuaD4NCj4gPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9QcmludExp Yi5oPg0KPiA+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L1NoZWxsTGliLmg+DQo+ID4gPiArI2luY2x1 ZGUgPExpYnJhcnkvVWVmaUJvb3RTZXJ2aWNlc1RhYmxlTGliLmg+DQo+ID4gPiArI2luY2x1ZGUg PExpYnJhcnkvVWVmaUhpaVNlcnZpY2VzTGliLmg+DQo+ID4gPiArI2luY2x1ZGUgPExpYnJhcnkv VWVmaUxpYi5oPg0KPiA+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlSdW50aW1lU2VydmljZXNU YWJsZUxpYi5oPg0KPiA+ID4gKw0KPiA+ID4gKyNpbmNsdWRlIDxQcm90b2NvbC9IaWlQYWNrYWdl TGlzdC5oPg0KPiA+ID4gKyNpbmNsdWRlIDxQcm90b2NvbC9IdHRwVXRpbGl0aWVzLmg+DQo+ID4g PiArI2luY2x1ZGUgPFByb3RvY29sL1NlcnZpY2VCaW5kaW5nLmg+DQo+ID4gPiArDQo+ID4gPiAr I2RlZmluZSBIVFRQX0FQUF9OQU1FIEwiaHR0cCINCj4gPiA+ICsNCj4gPiA+ICsjZGVmaW5lIFJF UV9PSyAgICAgICAgICAgMA0KPiA+ID4gKyNkZWZpbmUgUkVRX05FRURfUkVQRUFUICAxDQo+ID4g PiArDQo+ID4gPiArLy8NCj4gPiA+ICsvLyBEb3dubG9hZCBGbGFncy4NCj4gPiA+ICsvLw0KPiA+ ID4gKyNkZWZpbmUgRExfRkxBR19USU1FICAgICBCSVQwIC8vIFNob3cgZWxhcHNlZCB0aW1lLg0K PiA+ID4gKyNkZWZpbmUgRExfRkxBR19LRUVQX0JBRCBCSVQxIC8vIEtlZXAgZmlsZXMgZXZlbiBp ZiBkb3dubG9hZCBmYWlsZWQuDQo+ID4gPiArDQo+ID4gPiArZXh0ZXJuIEVGSV9ISUlfSEFORExF IG1IdHRwSGlpSGFuZGxlOw0KPiA+ID4gKw0KPiA+ID4gK3R5cGVkZWYgc3RydWN0IHsNCj4gPiA+ ICsgIFVJTlROICAgICAgICAgICAgICAgICBDb250ZW50RG93bmxvYWRlZDsNCj4gPiA+ICsgIFVJ TlROICAgICAgICAgICAgICAgICBDb250ZW50TGVuZ3RoOw0KPiA+ID4gKyAgVUlOVE4gICAgICAg ICAgICAgICAgIExhc3RSZXBvcnRlZE5iT2ZCeXRlczsNCj4gPiA+ICsgIFVJTlROICAgICAgICAg ICAgICAgICBCdWZmZXJTaXplOw0KPiA+ID4gKyAgVUlOVE4gICAgICAgICAgICAgICAgIFN0YXR1 czsNCj4gPiA+ICsgIFVJTlROICAgICAgICAgICAgICAgICBGbGFnczsNCj4gPiA+ICsgIFVJTlQ4 ICAgICAgICAgICAgICAgICAqQnVmZmVyOw0KPiA+ID4gKyAgQ0hBUjE2ICAgICAgICAgICAgICAg ICpTZXJ2ZXJBZGRyQW5kUHJvdG87DQo+ID4gPiArICBDSEFSMTYgICAgICAgICAgICAgICAgKlVy aTsNCj4gPiA+ICsgIEVGSV9IVFRQX1RPS0VOICAgICAgICBSZXNwb25zZVRva2VuOw0KPiA+ID4g KyAgRUZJX0hUVFBfVE9LRU4gICAgICAgIFJlcXVlc3RUb2tlbjsNCj4gPiA+ICsgIEVGSV9IVFRQ X1BST1RPQ09MICAgICAqSHR0cDsNCj4gPiA+ICsgIEVGSV9IVFRQX0NPTkZJR19EQVRBICBIdHRw Q29uZmlnRGF0YTsNCj4gPiA+ICt9IEhUVFBfRE9XTkxPQURfQ09OVEVYVDsNCj4gPiA+ICsNCj4g PiA+ICsvKioNCj4gPiA+ICsgIEZ1bmN0aW9uIGZvciAnaHR0cCcgY29tbWFuZC4NCj4gPiA+ICsN Cj4gPiA+ICsgIEBwYXJhbVtpbl0gIEltYWdlSGFuZGxlICAgICBUaGUgaW1hZ2UgaGFuZGxlLg0K PiA+ID4gKyAgQHBhcmFtW2luXSAgU3lzdGVtVGFibGUgICAgIFRoZSBzeXN0ZW0gdGFibGUuDQo+ ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIFNIRUxMX1NVQ0NFU1MgICAgICAgICAgICBDb21tYW5k IGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuDQo+ID4gPiArICBAcmV0dmFsIFNIRUxMX0lOVkFMSURf UEFSQU1FVEVSICBDb21tYW5kIHVzYWdlIGVycm9yLg0KPiA+ID4gKyAgQHJldHZhbCBTSEVMTF9B Qk9SVEVEICAgICAgICAgICAgVGhlIHVzZXIgYWJvcnRzIHRoZSBvcGVyYXRpb24uDQo+ID4gPiAr ICBAcmV0dmFsIHZhbHVlICAgICAgICAgICAgICAgICAgICBVbmtub3duIGVycm9yLg0KPiA+ID4g KyoqLw0KPiA+ID4gK1NIRUxMX1NUQVRVUw0KPiA+ID4gK1J1bkh0dHAgKA0KPiA+ID4gKyAgSU4g RUZJX0hBTkRMRSAgICAgICAgSW1hZ2VIYW5kbGUsDQo+ID4gPiArICBJTiBFRklfU1lTVEVNX1RB QkxFICAqU3lzdGVtVGFibGUNCj4gPiA+ICsgICk7DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4g PiArICBSZXRyaWV2ZSBISUkgcGFja2FnZSBsaXN0IGZyb20gSW1hZ2VIYW5kbGUgYW5kIHB1Ymxp c2ggdG8gSElJDQo+IGRhdGFiYXNlLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2luXSBJbWFn ZUhhbmRsZSAgICAgICAgICAgIFRoZSBpbWFnZSBoYW5kbGUgb2YgdGhlIHByb2Nlc3MuDQo+ID4g PiArDQo+ID4gPiArICBAcmV0dmFsIEhJSSBoYW5kbGUuDQo+ID4gPiArKiovDQo+ID4gPiArRUZJ X0hJSV9IQU5ETEUNCj4gPiA+ICtJbml0aWFsaXplSGlpUGFja2FnZSAoDQo+ID4gPiArICBJTiBF RklfSEFORExFICAgICAgICAgICAgICAgICAgSW1hZ2VIYW5kbGUNCj4gPiA+ICsgICk7DQo+ID4g PiArI2VuZGlmIC8vIF9IVFRQX0hfDQo+ID4gPiBkaWZmIC0tZ2l0IGEvU2hlbGxQa2cvSW5jbHVk ZS9HdWlkL1NoZWxsTGliSGlpR3VpZC5oDQo+ID4gPiBiL1NoZWxsUGtnL0luY2x1ZGUvR3VpZC9T aGVsbExpYkhpaUd1aWQuaA0KPiA+ID4gaW5kZXggNWRhOTEyODMzM2E0Li42ZTMyOGI0NjBkOGMg MTAwNjQ0DQo+ID4gPiAtLS0gYS9TaGVsbFBrZy9JbmNsdWRlL0d1aWQvU2hlbGxMaWJIaWlHdWlk LmgNCj4gPiA+ICsrKyBiL1NoZWxsUGtnL0luY2x1ZGUvR3VpZC9TaGVsbExpYkhpaUd1aWQuaA0K PiA+ID4gQEAgLTU5LDYgKzU5LDEwIEBADQo+ID4gPiAgICAgIDB4NzM4YTkzMTQsIDB4ODJjMSwg MHg0NTkyLCB7IDB4OGYsIDB4ZjcsIDB4YzEsIDB4YmQsIDB4ZjEsIDB4YjIsDQo+IDB4MGUsDQo+ ID4gMHhkNCB9DQo+ID4gPiBcDQo+ID4gPiAgICB9DQo+ID4gPg0KPiA+ID4gKyNkZWZpbmUgU0hF TExfSFRUUF9ISUlfR1VJRCBcDQo+ID4gPiArICB7IFwNCj4gPiA+ICsgICAgMHgzOTBmODRiMywg MHgyMjFjLCAweDRkOWUsIHsgMHhiNSwgMHgwNiwgMHg2ZCwgMHhiOSwgMHg0MiwgMHgzZSwNCj4g MHgwYSwNCj4gPiA+IDB4N2UgfSBcDQo+ID4gPiArICB9DQo+ID4gPg0KPiA+ID4gICNkZWZpbmUg U0hFTExfQkNGR19ISUlfR1VJRCBcDQo+ID4gPiAgICB7IFwNCj4gPiA+IEBAIC03NSw2ICs3OSw3 IEBAIGV4dGVybiBFRklfR1VJRCBnU2hlbGxMZXZlbDNIaWlHdWlkOw0KPiA+ID4gIGV4dGVybiBF RklfR1VJRCBnU2hlbGxOZXR3b3JrMUhpaUd1aWQ7DQo+ID4gPiAgZXh0ZXJuIEVGSV9HVUlEIGdT aGVsbE5ldHdvcmsySGlpR3VpZDsNCj4gPiA+ICBleHRlcm4gRUZJX0dVSUQgZ1NoZWxsVGZ0cEhp aUd1aWQ7DQo+ID4gPiArZXh0ZXJuIEVGSV9HVUlEIGdTaGVsbEh0dHBIaWlHdWlkOw0KPiA+ID4g IGV4dGVybiBFRklfR1VJRCBnU2hlbGxCY2ZnSGlpR3VpZDsNCj4gPiA+DQo+ID4gPiAgI2VuZGlm DQo+ID4gPiBkaWZmIC0tZ2l0IGEvU2hlbGxQa2cvRHluYW1pY0NvbW1hbmQvSHR0cER5bmFtaWND b21tYW5kL0h0dHAuYw0KPiA+ID4gYi9TaGVsbFBrZy9EeW5hbWljQ29tbWFuZC9IdHRwRHluYW1p Y0NvbW1hbmQvSHR0cC5jDQo+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4gaW5kZXgg MDAwMDAwMDAwMDAwLi4zNzM1YTRhN2U2NDUNCj4gPiA+IC0tLSAvZGV2L251bGwNCj4gPiA+ICsr KyBiL1NoZWxsUGtnL0R5bmFtaWNDb21tYW5kL0h0dHBEeW5hbWljQ29tbWFuZC9IdHRwLmMNCj4g PiA+IEBAIC0wLDAgKzEsMTkwNCBAQA0KPiA+ID4gKy8qKiBAZmlsZQ0KPiA+ID4gKyAgVGhlIGlt cGxlbWVudGF0aW9uIGZvciB0aGUgJ2h0dHAnIFNoZWxsIGNvbW1hbmQuDQo+ID4gPiArDQo+ID4g PiArICBDb3B5cmlnaHQgKGMpIDIwMTUsIEFSTSBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJS Pg0KPiA+ID4gKyAgQ29weXJpZ2h0IChjKSAyMDE1IC0gMjAxOCwgSW50ZWwgQ29ycG9yYXRpb24u IEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+IDxCUj4NCj4gPiA+ICsgIChDKSBDb3B5cmlnaHQgMjAx NSBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSBEZXZlbG9wbWVudCBMUDxCUj4NCj4gPiA+ICsg IENvcHlyaWdodCAoYykgMjAyMCwgQnJvYWRjb20uIEFsbCByaWdodHMgcmVzZXJ2ZWQuIDxCUj4N Cj4gPiA+ICsNCj4gPiA+ICsgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2Ut UGF0ZW50DQo+ID4gPiArKiovDQo+ID4gPiArDQo+ID4gPiArI2luY2x1ZGUgIkh0dHAuaCINCj4g PiA+ICsNCj4gPiA+ICsjZGVmaW5lIElQNF9DT05GSUcyX0lOVEVSRkFDRV9JTkZPX05BTUVfTEVO R1RIIDMyDQo+ID4gPiArDQo+ID4gPiArLy8NCj4gPiA+ICsvLyBDb25zdGFudCBzdHJpbmdzIGFu ZCBkZWZpbml0aW9ucyByZWxhdGVkIHRvIHRoZSBtZXNzYWdlDQo+ID4gPiArLy8gaW5kaWNhdGlu ZyB0aGUgYW1vdW50IG9mIHByb2dyZXNzIGluIHRoZSBkb3dsb2FkaW5nIG9mIGEgSFRUUA0KPiBm aWxlLg0KPiA+ID4gKy8vDQo+ID4gPiArDQo+ID4gPiArLy8NCj4gPiA+ICsvLyBOdW1iZXIgb2Yg c3RlcHMgaW4gdGhlIHByb2dyZXNzaW9uIHNsaWRlci4NCj4gPiA+ICsvLw0KPiA+ID4gKyNkZWZp bmUgSFRUUF9QUk9HUkVTU19TTElERVJfU1RFUFMgIFwNCj4gPiA+ICsgICgoc2l6ZW9mIChIVFRQ X1BST0dSX0ZSQU1FKSAvIHNpemVvZiAoQ0hBUjE2KSkgLSAzKQ0KPiA+ID4gKw0KPiA+ID4gKy8v DQo+ID4gPiArLy8gU2l6ZSBpbiBudW1iZXIgb2YgY2hhcmFjdGVycyBwbHVzIG9uZSAoZmluYWwg emVybykgb2YgdGhlIG1lc3NhZ2UNCj4gdG8NCj4gPiA+ICsvLyBpbmRpY2F0ZSB0aGUgcHJvZ3Jl c3Mgb2YgYW4gSFRUUCBkb3dubG9hZC4gVGhlIGZvcm1hdCBpcw0KPiAiWyhwcm9ncmVzcw0KPiA+ IHNsaWRlcjoNCj4gPiA+ICsvLyA0MCBjaGFyYWN0ZXJzKV0gKG5iIG9mIEtCeXRlcyBkb3dubG9h ZGVkIHNvIGZhcjogNyBjaGFyYWN0ZXJzKQ0KPiBLYiIuDQo+ID4gVGhlcmUNCj4gPiA+ICsvLyBh cmUgdGh1cyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gSFRUUF9QUk9HUl9GUkFNRVtdIHBs dXMgMTENCj4gPiA+IGNoYXJhY3RlcnMNCj4gPiA+ICsvLyAoMiAvLyBzcGFjZXMsICJLYiIgYW5k IHNldmVuIGNoYXJhY3RlcnMgZm9yIHRoZSBudW1iZXIgb2YgS0J5dGVzKS4NCj4gPiA+ICsvLw0K PiA+ID4gKyNkZWZpbmUgSFRUUF9QUk9HUkVTU19NRVNTQUdFX1NJWkUgIFwNCj4gPiA+ICsgICgo c2l6ZW9mIChIVFRQX1BST0dSX0ZSQU1FKSAvIHNpemVvZiAoQ0hBUjE2KSkgKyAxMikNCj4gPiA+ ICsNCj4gPiA+ICsvLw0KPiA+ID4gKy8vIEJ1ZmZlciBzaXplLiBOb3RlIHRoYXQgbGFyZ2VyIGJ1 ZmZlciBkb2VzIG5vdCBtZWFuIGJldHRlciBzcGVlZC4NCj4gPiA+ICsvLw0KPiA+ID4gKyNkZWZp bmUgREVGQVVMVF9CVUZfU0laRSAgICAgIFNJWkVfMzJLQg0KPiA+ID4gKyNkZWZpbmUgTUFYX0JV Rl9TSVpFICAgICAgICAgIFNJWkVfNE1CDQo+ID4gPiArDQo+ID4gPiArI2RlZmluZSBNSU5fUEFS QU1fQ09VTlQgICAgICAgMg0KPiA+ID4gKyNkZWZpbmUgTUFYX1BBUkFNX0NPVU5UICAgICAgIDQN Cj4gPiA+ICsjZGVmaW5lIE5FRURfUkVESVJFQ1RJT04oQ29kZSkgXA0KPiA+ID4gKyAgKCgoQ29k ZSA+PSBIVFRQX1NUQVRVU18zMDBfTVVMVElQTEVfQ0hPSUNFUykgXA0KPiA+ID4gKyAgJiYgKENv ZGUgPD0gSFRUUF9TVEFUVVNfMzA3X1RFTVBPUkFSWV9SRURJUkVDVCkpIFwNCj4gPiA+ICsgIHx8 IChDb2RlID09IEhUVFBfU1RBVFVTXzMwOF9QRVJNQU5FTlRfUkVESVJFQ1QpKQ0KPiA+ID4gKw0K PiA+ID4gKyNkZWZpbmUgQ0xPU0VfSFRUUF9IQU5ETEUoQ29udHJvbGxlckhhbmRsZSxIdHRwQ2hp bGRIYW5kbGUpIFwNCj4gPiA+ICsgIGRvIHsgXA0KPiA+ID4gKyAgICBpZiAoSHR0cENoaWxkSGFu ZGxlKSB7IFwNCj4gPiA+ICsgICAgICBDbG9zZVByb3RvY29sQW5kRGVzdHJveVNlcnZpY2VDaGls ZCAoIFwNCj4gPiA+ICsgICAgICAgIENvbnRyb2xsZXJIYW5kbGUsIFwNCj4gPiA+ICsgICAgICAg ICZnRWZpSHR0cFNlcnZpY2VCaW5kaW5nUHJvdG9jb2xHdWlkLCBcDQo+ID4gPiArICAgICAgICAm Z0VmaUh0dHBQcm90b2NvbEd1aWQsIFwNCj4gPiA+ICsgICAgICAgIEh0dHBDaGlsZEhhbmRsZSBc DQo+ID4gPiArICAgICAgICApOyBcDQo+ID4gPiArICAgICAgSHR0cENoaWxkSGFuZGxlID0gTlVM TDsgXA0KPiA+ID4gKyAgICB9IFwNCj4gPiA+ICsgIH0gd2hpbGUgKDApDQo+ID4gPiArDQo+ID4g PiArdHlwZWRlZiBlbnVtIHsNCj4gPiA+ICsgIEhkckhvc3QsDQo+ID4gPiArICBIZHJDb25uLA0K PiA+ID4gKyAgSGRyQWdlbnQsDQo+ID4gPiArICBIZHJNYXgNCj4gPiA+ICt9IEhEUl9UWVBFOw0K PiA+ID4gKw0KPiA+ID4gKyNkZWZpbmUgVVNFUl9BR0VOVF9IRFIgICJNb3ppbGxhLzUuMCAoRURL MjsgTGludXgpIEdlY2tvLzIwMTAwMTAxDQo+ID4gPiBGaXJlZm94Lzc5LjAiDQo+ID4gPiArDQo+ ID4gPiArI2RlZmluZSBUSU1FUl9NQVhfVElNRU9VVF9TICAgMTANCj4gPiA+ICsNCj4gPiA+ICsv Lw0KPiA+ID4gKy8vIEZpbGUgbmFtZSB0byB1c2Ugd2hlbiBVcmkgZW5kcyB3aXRoICIvIi4NCj4g PiA+ICsvLw0KPiA+ID4gKyNkZWZpbmUgREVGQVVMVF9IVE1MX0ZJTEUgICAgIEwiaW5kZXguaHRt bCINCj4gPiA+ICsjZGVmaW5lIERFRkFVTFRfSFRUUF9QUk9UTyAgICBMImh0dHAiDQo+ID4gPiAr DQo+ID4gPiArLy8NCj4gPiA+ICsvLyBTdHJpbmcgdG8gZGVsZXRlIHRoZSBIVFRQIHByb2dyZXNz IG1lc3NhZ2UgdG8gYmUgYWJsZSB0byB1cGRhdGUgaXQNCj4gOg0KPiA+ID4gKy8vIChIVFRQX1BS T0dSRVNTX01FU1NBR0VfU0laRS0xKSAnXGInLg0KPiA+ID4gKy8vDQo+ID4gPiArI2RlZmluZSBI VFRQX1BST0dSRVNTX0RFTCBcDQo+ID4gPiArDQo+ID4gTCJcYlxiXGJcYlxiXGJcYlxiXGJcYlxi XGJcYlxiXGJcYlxiXGJcYlxiXGJcYlxiXGJcYlxiXGJcYlxiXGJcYlxiXA0KPiA+IGJcYlxiXA0K PiA+ID4gK1xiXGJcYlxiXGJcYlxiXGJcYlxiXGJcYlxiXGJcYlxiXGJcYiINCj4gPiA+ICsNCj4g PiA+ICsjZGVmaW5lIEhUVFBfS0IgICAgICAgICAgICAgIEwiXGJcYlxiXGJcYlxiXGJcYlxiXGIi DQo+ID4gPiArLy8NCj4gPiA+ICsvLyBGcmFtZSBmb3IgdGhlIHByb2dyZXNzaW9uIHNsaWRlci4N Cj4gPiA+ICsvLw0KPiA+ID4gKyNkZWZpbmUgSFRUUF9QUk9HUl9GUkFNRSAgICAgTCJbDQo+IF0i DQo+ID4gPiArDQo+ID4gPiArLy8NCj4gPiA+ICsvLyBJbXByb3ZlIHJlYWRhYmlsaXR5IGJ5IHVz aW5nIHRoZXNlIG1hY3Jvcy4NCj4gPiA+ICsvLw0KPiA+ID4gKyNkZWZpbmUgUFJJTlRfSElJKHRv a2VuLC4uLikgXA0KPiA+ID4gKyAgU2hlbGxQcmludEhpaUV4IChcDQo+ID4gPiArICAgICAgLTEs IC0xLCBOVUxMLCB0b2tlbiwgbUh0dHBIaWlIYW5kbGUsIF9fVkFfQVJHU19fKQ0KPiA+ID4gKw0K PiA+ID4gKyNkZWZpbmUgUFJJTlRfSElJX0FQUCh0b2tlbix2YWx1ZSkgXA0KPiA+ID4gKyAgUFJJ TlRfSElJICh0b2tlbiwgSFRUUF9BUFBfTkFNRSwgdmFsdWUpDQo+ID4gPiArDQo+ID4gPiArLy8N Cj4gPiA+ICsvLyBUaW1lQmFzZUxpYi5oIGNvbnN0YW50cy4NCj4gPiA+ICsvLyBUaGVzZSB3aWxs IGJlIHJlbW92ZWQgb25jZSB0aGUgbGlicmFyeSBnZXRzIGZpeGVkLg0KPiA+ID4gKy8vDQo+ID4g PiArDQo+ID4gPiArLy8NCj4gPiA+ICsvLyBEZWZpbmUgRVBPQ0ggKDE5NzAtSkFOVUFSWS0wMSkg aW4gdGhlIEp1bGlhbiBEYXRlIHJlcHJlc2VudGF0aW9uLg0KPiA+ID4gKy8vDQo+ID4gPiArI2Rl ZmluZSBFUE9DSF9KVUxJQU5fREFURSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNDQw NTg4DQo+ID4gPiArDQo+ID4gPiArLy8NCj4gPiA+ICsvLyBTZWNvbmRzIHBlciB1bml0Lg0KPiA+ ID4gKy8vDQo+ID4gPiArI2RlZmluZSBTRUNfUEVSX01JTiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoKFVJTlROKQ0KPiA2MCkNCj4gPiA+ICsjZGVmaW5lIFNFQ19QRVJfSE9V UiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoVUlOVE4pDQo+IDM2MDApDQo+ ID4gPiArI2RlZmluZSBTRUNfUEVSX0RBWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoKFVJTlROKQ0KPiA4NjQwMCkNCj4gPiA+ICsNCj4gPiA+ICsvLw0KPiA+ID4gKy8vIFN0 cmluZyBkZXNjcmlwdGlvbnMgZm9yIHNlcnZlciBlcnJvcnMuDQo+ID4gPiArLy8NCj4gPiA+ICtT VEFUSUMgQ09OU1QgQ0hBUjE2ICpFcnJTdGF0dXNEZXNjW10gPQ0KPiA+ID4gK3sNCj4gPiA+ICsg IEwiNDAwIEJhZCBSZXF1ZXN0IiwNCj4gPiA+ICsgIEwiNDAxIFVuYXV0aG9yaXplZCIsDQo+ID4g PiArICBMIjQwMiBQYXltZW50IHJlcXVpcmVkIiwNCj4gPiA+ICsgIEwiNDAzIEZvcmJpZGRlbiIs DQo+ID4gPiArICBMIjQwNCBOb3QgRm91bmQiLA0KPiA+ID4gKyAgTCI0MDUgTWV0aG9kIG5vdCBh bGxvd2VkIiwNCj4gPiA+ICsgIEwiNDA2IE5vdCBhY2NlcHRhYmxlIiwNCj4gPiA+ICsgIEwiNDA3 IFByb3h5IGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVkIiwNCj4gPiA+ICsgIEwiNDA4IFJlcXVlc3Qg dGltZSBvdXQiLA0KPiA+ID4gKyAgTCI0MDkgQ29uZmxpY3QiLA0KPiA+ID4gKyAgTCI0MTAgR29u ZSIsDQo+ID4gPiArICBMIjQxMSBMZW5ndGggcmVxdWlyZWQiLA0KPiA+ID4gKyAgTCI0MTIgUHJl Y29uZGl0aW9uIGZhaWxlZCIsDQo+ID4gPiArICBMIjQxMyBSZXF1ZXN0IGVudGl0eSB0b28gbGFy Z2UiLA0KPiA+ID4gKyAgTCI0MTQgUmVxdWVzdCBVUkkgdG8gbGFyZ2UiLA0KPiA+ID4gKyAgTCI0 MTUgVW5zdXBwb3J0ZWQgbWVkaWEgdHlwZSIsDQo+ID4gPiArICBMIjQxNiBSZXF1ZXN0ZWQgcmFu Z2Ugbm90IHNhdGlzZmllZCIsDQo+ID4gPiArICBMIjQxNyBFeHBlY3RhdGlvbiBmYWlsZWQiLA0K PiA+ID4gKyAgTCI1MDAgSW50ZXJuYWwgc2VydmVyIGVycm9yIiwNCj4gPiA+ICsgIEwiNTAxIE5v dCBpbXBsZW1lbnRlZCIsDQo+ID4gPiArICBMIjUwMiBCYWQgZ2F0ZXdheSIsDQo+ID4gPiArICBM IjUwMyBTZXJ2aWNlIHVuYXZhaWxhYmxlIiwNCj4gPiA+ICsgIEwiNTA0IEdhdGV3YXkgdGltZW91 dCIsDQo+ID4gPiArICBMIjUwNSBIVFRQIHZlcnNpb24gbm90IHN1cHBvcnRlZCINCj4gPiA+ICt9 Ow0KPiA+ID4gKw0KPiA+ID4gK1NUQVRJQyBDT05TVCBTSEVMTF9QQVJBTV9JVEVNIFBhcmFtTGlz dFtdID0gew0KPiA+ID4gKyAge0wiLWkiLCBUeXBlVmFsdWV9LA0KPiA+ID4gKyAge0wiLWsiLCBU eXBlRmxhZ30sDQo+ID4gPiArICB7TCItbCIsIFR5cGVWYWx1ZX0sDQo+ID4gPiArICB7TCItbSIs IFR5cGVGbGFnfSwNCj4gPiA+ICsgIHtMIi1zIiwgVHlwZVZhbHVlfSwNCj4gPiA+ICsgIHtMIi10 IiwgVHlwZVZhbHVlfSwNCj4gPiA+ICsgIHtOVUxMICwgVHlwZU1heH0NCj4gPiA+ICt9Ow0KPiA+ ID4gKw0KPiA+ID4gKy8vDQo+ID4gPiArLy8gTG9jYWwgRmlsZSBIYW5kbGUuDQo+ID4gPiArLy8N Cj4gPiA+ICtTVEFUSUMgU0hFTExfRklMRV9IQU5ETEUgICBtRmlsZUhhbmRsZSA9IE5VTEw7DQo+ ID4gPiArDQo+ID4gPiArLy8NCj4gPiA+ICsvLyBQYXRoIG9mIHRoZSBsb2NhbCBmaWxlLCBVbmlj b2RlIGVuY29kZWQuDQo+ID4gPiArLy8NCj4gPiA+ICtTVEFUSUMgQ09OU1QgQ0hBUjE2ICAgICAg ICAqbUxvY2FsRmlsZVBhdGg7DQo+ID4gPiArDQo+ID4gPiArU1RBVElDIEJPT0xFQU4gICAgICAg ICAgICAgZ1JlcXVlc3RDYWxsYmFja0NvbXBsZXRlID0gRkFMU0U7DQo+ID4gPiArU1RBVElDIEJP T0xFQU4gICAgICAgICAgICAgZ1Jlc3BvbnNlQ2FsbGJhY2tDb21wbGV0ZSA9IEZBTFNFOw0KPiA+ ID4gKw0KPiA+ID4gK1NUQVRJQyBCT09MRUFOICAgICAgICAgICAgIGdIdHRwRXJyb3I7DQo+ID4g PiArDQo+ID4gPiArRUZJX0hJSV9IQU5ETEUgICAgICAgICAgICAgbUh0dHBIaWlIYW5kbGU7DQo+ ID4gPiArDQo+ID4gPiArLy8NCj4gPiA+ICsvLyBGdW5jdGlvbnMgZGVjbGFyYXRpb25zLg0KPiA+ ID4gKy8vDQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBDaGVjayBhbmQgY29udmVydCB0 aGUgVUlOVDE2IG9wdGlvbiB2YWx1ZXMgb2YgdGhlICdodHRwJyBjb21tYW5kLg0KPiA+ID4gKw0K PiA+ID4gKyAgQHBhcmFtW2luXSAgVmFsdWVTdHIgIFZhbHVlIGFzIGFuIFVuaWNvZGUgZW5jb2Rl ZCBzdHJpbmcuDQo+ID4gPiArICBAcGFyYW1bb3V0XSBWYWx1ZSAgICAgVUlOVDE2IHZhbHVlLg0K PiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCAgICAgVFJVRSAgICAgIFRoZSB2YWx1ZSB3YXMgcmV0 dXJuZWQuDQo+ID4gPiArICBAcmV0dmFsICAgICBGQUxTRSAgICAgQSBwYXJzaW5nIGVycm9yIG9j Y3VyZWQuDQo+ID4gPiArKiovDQo+ID4gPiArU1RBVElDDQo+ID4gPiArQk9PTEVBTg0KPiA+ID4g K1N0cmluZ1RvVWludDE2ICgNCj4gPiA+ICsgIElOICAgQ09OU1QgQ0hBUjE2ICAqVmFsdWVTdHIs DQo+ID4gPiArICBPVVQgIFVJTlQxNiAgICAgICAgKlZhbHVlDQo+ID4gPiArICApOw0KPiA+ID4g Kw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgR2V0IHRoZSBuYW1lIG9mIHRoZSBOSUMuDQo+ID4gPiAr DQo+ID4gPiArICBAcGFyYW1baW5dICAgQ29udHJvbGxlckhhbmRsZSAgVGhlIG5ldHdvcmsgcGh5 c2ljYWwgZGV2aWNlIGhhbmRsZS4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gICBOaWNOdW1iZXIgICAg ICAgICBUaGUgbmV0d29yayBwaHlzaWNhbCBkZXZpY2UgbnVtYmVyLg0KPiA+ID4gKyAgQHBhcmFt W291dF0gIE5pY05hbWUgICAgICAgICAgIEFkZHJlc3Mgd2hlcmUgdG8gc3RvcmUgdGhlIE5JQyBu YW1lLg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBtZW1vcnkg YXJlYSBoYXMgdG8gYmUgYXQgbGVhc3QNCj4gPiA+ICsNCj4gSVA0X0NPTkZJRzJfSU5URVJGQUNF X0lORk9fTkFNRV9MRU5HVEgNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkb3VibGUgYnl0ZSB3aWRlLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCAgRUZJX1NVQ0NF U1MgIFRoZSBuYW1lIG9mIHRoZSBOSUMgd2FzIHJldHVybmVkLg0KPiA+ID4gKyAgQHJldHZhbCAg T3RoZXJzICAgICAgIFRoZSBjcmVhdGlvbiBvZiB0aGUgY2hpbGQgZm9yIHRoZSBNYW5hZ2VkDQo+ ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgTmV0d29yayBTZXJ2aWNlIGZhaWxlZCBvciB0 aGUgb3BlbmluZyBvZg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBNYW5hZ2Vk IE5ldHdvcmsgUHJvdG9jb2wgZmFpbGVkIG9yDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgdGhlIG9wZXJhdGlvbmFsIHBhcmFtZXRlcnMgZm9yIHRoZQ0KPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgIE1hbmFnZWQgTmV0d29yayBQcm90b2NvbCBjb3VsZCBub3QgYmUNCj4gPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICByZWFkLg0KPiA+ID4gKyoqLw0KPiA+ID4gK1NUQVRJ Qw0KPiA+ID4gK0VGSV9TVEFUVVMNCj4gPiA+ICtHZXROaWNOYW1lICgNCj4gPiA+ICsgIElOICAg RUZJX0hBTkRMRSAgQ29udHJvbGxlckhhbmRsZSwNCj4gPiA+ICsgIElOICAgVUlOVE4gICAgICAg TmljTnVtYmVyLA0KPiA+ID4gKyAgT1VUICBDSEFSMTYgICAgICAqTmljTmFtZQ0KPiA+ID4gKyAg KTsNCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIENyZWF0ZSBhIGNoaWxkIGZvciB0aGUg c2VydmljZSBpZGVudGlmaWVkIGJ5IGl0cyBzZXJ2aWNlIGJpbmRpbmcNCj4gcHJvdG9jb2wNCj4g PiBHVUlEDQo+ID4gPiArICBhbmQgZ2V0IGZyb20gdGhlIGNoaWxkIHRoZSBpbnRlcmZhY2Ugb2Yg dGhlIHByb3RvY29sIGlkZW50aWZpZWQgYnkNCj4gaXRzDQo+ID4gR1VJRC4NCj4gPiA+ICsNCj4g PiA+ICsgIEBwYXJhbVtpbl0gICBDb250cm9sbGVySGFuZGxlICAgICAgICAgICAgQ29udHJvbGxl ciBoYW5kbGUuDQo+ID4gPiArICBAcGFyYW1baW5dICAgU2VydmljZUJpbmRpbmdQcm90b2NvbEd1 aWQgIFNlcnZpY2UgYmluZGluZyBwcm90b2NvbA0KPiBHVUlEDQo+ID4gb2YgdGhlDQo+ID4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2UgdG8gYmUg Y3JlYXRlZC4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gICBQcm90b2NvbEd1aWQgICAgICAgICAgICAg ICAgR1VJRCBvZiB0aGUgcHJvdG9jb2wgdG8gYmUNCj4gb3Blbi4NCj4gPiA+ICsgIEBwYXJhbVtv dXRdICBDaGlsZEhhbmRsZSAgICAgICAgICAgICAgICAgQWRkcmVzcyB3aGVyZSB0aGUgaGFuZGxl cg0KPiBvZiB0aGUNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY3JlYXRlZCBjaGlsZCBpcyByZXR1cm5lZC4NCj4gTlVMTCBpcw0KPiA+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5lZCBpbiBjYXNlIG9m IGVycm9yLg0KPiA+ID4gKyAgQHBhcmFtW291dF0gIEludGVyZmFjZSAgICAgICAgICAgICAgICAg ICBBZGRyZXNzIHdoZXJlIGEgcG9pbnRlciB0bw0KPiB0aGUNCj4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG9jb2wgaW50ZXJmYWNlIGlzDQo+IHJl dHVybmVkIGluDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNhc2Ugb2Ygc3VjY2Vzcy4NCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR2YWwgIEVGSV9TVUND RVNTICBUaGUgY2hpbGQgd2FzIGNyZWF0ZWQgYW5kIHRoZSBwcm90b2NvbA0KPiBvcGVuZWQuDQo+ ID4gPiArICBAcmV0dmFsICBPdGhlcnMgICAgICAgRWl0aGVyIHRoZSBjcmVhdGlvbiBvZiB0aGUg Y2hpbGQgb3IgdGhlDQo+IG9wZW5pbmcNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBv ZiB0aGUgcHJvdG9jb2wgZmFpbGVkLg0KPiA+ID4gKyoqLw0KPiA+ID4gK1NUQVRJQw0KPiA+ID4g K0VGSV9TVEFUVVMNCj4gPiA+ICtDcmVhdGVTZXJ2aWNlQ2hpbGRBbmRPcGVuUHJvdG9jb2wgKA0K PiA+ID4gKyAgSU4gICBFRklfSEFORExFICBDb250cm9sbGVySGFuZGxlLA0KPiA+ID4gKyAgSU4g ICBFRklfR1VJRCAgICAqU2VydmljZUJpbmRpbmdQcm90b2NvbEd1aWQsDQo+ID4gPiArICBJTiAg IEVGSV9HVUlEICAgICpQcm90b2NvbEd1aWQsDQo+ID4gPiArICBPVVQgIEVGSV9IQU5ETEUgICpD aGlsZEhhbmRsZSwNCj4gPiA+ICsgIE9VVCAgVk9JRCAgICAgICAgKipJbnRlcmZhY2UNCj4gPiA+ ICsgICk7DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBDbG9zZSB0aGUgcHJvdG9jb2wg aWRlbnRpZmllZCBieSBpdHMgR1VJRCBvbiB0aGUgY2hpbGQgaGFuZGxlIG9mDQo+IHRoZQ0KPiA+ IHNlcnZpY2UNCj4gPiA+ICsgIGlkZW50aWZpZWQgYnkgaXRzIHNlcnZpY2UgYmluZGluZyBwcm90 b2NvbCBHVUlELCB0aGVuIGRlc3Ryb3kgdGhlDQo+IGNoaWxkDQo+ID4gPiArICBoYW5kbGUuDQo+ ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dICBDb250cm9sbGVySGFuZGxlICAgICAgICAgICAg Q29udHJvbGxlciBoYW5kbGUuDQo+ID4gPiArICBAcGFyYW1baW5dICBTZXJ2aWNlQmluZGluZ1By b3RvY29sR3VpZCAgU2VydmljZSBiaW5kaW5nIHByb3RvY29sDQo+IEdVSUQNCj4gPiBvZiB0aGUN Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNl IHRvIGJlIGRlc3Ryb3llZC4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIFByb3RvY29sR3VpZCAgICAg ICAgICAgICAgICBHVUlEIG9mIHRoZSBwcm90b2NvbCB0byBiZQ0KPiBjbG9zZWQuDQo+ID4gPiAr ICBAcGFyYW1baW5dICBDaGlsZEhhbmRsZSAgICAgICAgICAgICAgICAgSGFuZGxlIG9mIHRoZSBj aGlsZCB0byBiZQ0KPiBkZXN0cm95ZWQuDQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArU1RB VElDDQo+ID4gPiArVk9JRA0KPiA+ID4gK0Nsb3NlUHJvdG9jb2xBbmREZXN0cm95U2VydmljZUNo aWxkICgNCj4gPiA+ICsgIElOICBFRklfSEFORExFICBDb250cm9sbGVySGFuZGxlLA0KPiA+ID4g KyAgSU4gIEVGSV9HVUlEICAgICpTZXJ2aWNlQmluZGluZ1Byb3RvY29sR3VpZCwNCj4gPiA+ICsg IElOICBFRklfR1VJRCAgICAqUHJvdG9jb2xHdWlkLA0KPiA+ID4gKyAgSU4gIEVGSV9IQU5ETEUg IENoaWxkSGFuZGxlDQo+ID4gPiArICApOw0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAg V29ya2VyIGZ1bmN0aW9uIHRoYXQgZG93bmxvYWQgdGhlIGRhdGEgb2YgYSBmaWxlIGZyb20gYW4g SFRUUA0KPiBzZXJ2ZXINCj4gPiBnaXZlbg0KPiA+ID4gKyAgdGhlIHBhdGggb2YgdGhlIGZpbGUg YW5kIGl0cyBzaXplLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2luXSAgIENvbnRleHQgICAg ICAgICAgIEEgcG9pbnRlciB0byB0aGUgZG93bmxvYWQgY29udGV4dC4NCj4gPiA+ICsNCj4gPiA+ ICsgIEByZXR2YWwgIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgZmlsZSB3YXMgZG93bmxvYWRl ZC4NCj4gPiA+ICsgIEByZXR2YWwgIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICBBIG1lbW9yeSBhbGxv Y2F0aW9uIGZhaWxlZC4NCj4gPiA+ICsgIEByZXR2YWwgIE90aGVycyAgICAgICAgICAgICAgICBU aGUgZG93bmxvYWRpbmcgb2YgdGhlIGZpbGUNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBmcm9tIHRoZSBzZXJ2ZXIgZmFpbGVkLg0KPiA+ID4gKyoqLw0KPiA+ID4gK1NU QVRJQw0KPiA+ID4gK0VGSV9TVEFUVVMNCj4gPiA+ICtEb3dubG9hZEZpbGUgKA0KPiA+ID4gKyAg SU4gICBIVFRQX0RPV05MT0FEX0NPTlRFWFQgICAqQ29udGV4dCwNCj4gPiA+ICsgIElOICAgRUZJ X0hBTkRMRSAgICAgICAgICAgICAgQ29udHJvbGxlckhhbmRsZSwNCj4gPiA+ICsgIElOICAgQ0hB UjE2ICAgICAgICAgICAgICAgICAgKk5pY05hbWUNCj4gPiA+ICsgICk7DQo+ID4gPiArDQo+ID4g PiArLyoqDQo+ID4gPiArICBDbGVhbnMgb2ZmIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHNwYWNlcyBh bmQgdGFicy4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gICAgICAgICAgICAgICAgICAg ICAgU3RyaW5nIHBvaW50ZXIgdG8gdGhlIHN0cmluZyB0bw0KPiB0cmltIHRoZW0gb2ZmLg0KPiA+ ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgICBObyBlcnJvcnMu DQo+ID4gPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgIFN0cmluZyBwb2ludGVy IGlzIE5VTEwuDQo+ID4gPiArKiovDQo+ID4gPiArU1RBVElDDQo+ID4gPiArRUZJX1NUQVRVUw0K PiA+ID4gK1RyaW1TcGFjZXMgKA0KPiA+ID4gKyAgSU4gQ0hBUjE2ICpTdHJpbmcNCj4gPiA+ICsg ICkNCj4gPiA+ICt7DQo+ID4gPiArICBDSEFSMTYgKlN0cjsNCj4gPiA+ICsgIFVJTlROICBMZW47 DQo+ID4gPiArDQo+ID4gPiArICBBU1NFUlQgKFN0cmluZyAhPSBOVUxMKTsNCj4gPiA+ICsNCj4g PiA+ICsgIGlmIChTdHJpbmcgPT0gTlVMTCkgew0KPiA+ID4gKyAgICByZXR1cm4gRUZJX0lOVkFM SURfUEFSQU1FVEVSOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgU3RyID0gU3RyaW5n Ow0KPiA+ID4gKw0KPiA+ID4gKyAgLy8NCj4gPiA+ICsgIC8vIFJlbW92ZSBhbnkgd2hpdGVzcGFj ZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBTdHIuDQo+ID4gPiArICAvLw0KPiA+ID4gKyAgd2hp bGUgKCpTdHIgPT0gTCcgJyB8fCAqU3RyID09IEwnXHQnKSB7DQo+ID4gPiArICAgIFN0cisrOw0K PiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgLy8NCj4gPiA+ICsgIC8vIFJlbW92ZSBhbnkg d2hpdGVzcGFjZSBhdCB0aGUgZW5kIG9mIHRoZSBTdHIuDQo+ID4gPiArICAvLw0KPiA+ID4gKyAg ZG8gew0KPiA+ID4gKyAgICBMZW4gPSBTdHJMZW4gKFN0cik7DQo+ID4gPiArICAgIGlmICghTGVu IHx8IChTdHJbTGVuIC0gMV0gIT0gTCcgJyAmJiBTdHJbTGVuIC0gMV0gIT0gJ1x0JykpIHsNCj4g PiA+ICsgICAgICBicmVhazsNCj4gPiA+ICsgICAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgICBTdHJb TGVuIC0gMV0gPSBDSEFSX05VTEw7DQo+ID4gPiArICB9IHdoaWxlIChMZW4pOw0KPiA+ID4gKw0K PiA+ID4gKyAgQ29weU1lbSAoU3RyaW5nLCBTdHIsIFN0clNpemUgKFN0cikpOw0KPiA+ID4gKw0K PiA+ID4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsv Lw0KPiA+ID4gKy8vIENhbGxiYWNrcyBmb3IgcmVxdWVzdCBhbmQgcmVzcG9uc2UuDQo+ID4gPiAr Ly8gV2UganVzdCBhY2tub3dsZWRnZSB0aGF0IG9wZXJhdGlvbiBoYXMgY29tcGxldGVkIGhlcmUu DQo+ID4gPiArLy8NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIENhbGxiYWNrIHRvIHNl dCB0aGUgcmVxdWVzdCBjb21wbGV0aW9uIGZsYWcuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1b aW5dIEV2ZW50OiAgIFRoZSBldmVudC4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gQ29udGV4dDogcG9p bnRlciB0byBOb3RpZmljYXRpb24gQ29udGV4dC4NCj4gPiA+ICsgKiovDQo+ID4gPiArU1RBVElD DQo+ID4gPiArVk9JRA0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK1JlcXVlc3RDYWxsYmFjayAoDQo+ ID4gPiArICBJTiBFRklfRVZFTlQgRXZlbnQsDQo+ID4gPiArICBJTiBWT0lEICAgICAgKkNvbnRl eHQNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBnUmVxdWVzdENhbGxiYWNrQ29tcGxl dGUgPSBUUlVFOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIENhbGxi YWNrIHRvIHNldCB0aGUgcmVzcG9uc2UgY29tcGxldGlvbiBmbGFnLg0KPiA+ID4gKyAgQHBhcmFt W2luXSBFdmVudDogICBUaGUgZXZlbnQuDQo+ID4gPiArICBAcGFyYW1baW5dIENvbnRleHQ6IHBv aW50ZXIgdG8gTm90aWZpY2F0aW9uIENvbnRleHQuDQo+ID4gPiArICoqLw0KPiA+ID4gK1NUQVRJ Qw0KPiA+ID4gK1ZPSUQNCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtSZXNwb25zZUNhbGxiYWNrICgN Cj4gPiA+ICsgIElOIEVGSV9FVkVOVCBFdmVudCwNCj4gPiA+ICsgIElOIFZPSUQgICAgICAqQ29u dGV4dA0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIGdSZXNwb25zZUNhbGxiYWNrQ29t cGxldGUgPSBUUlVFOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvLw0KPiA+ID4gKy8vIFNl dCBvZiBmdW5jdGlvbnMgZnJvbSBUaW1lQmFzZUxpYi4NCj4gPiA+ICsvLyBUaGlzIHdpbGwgYmUg cmVtb3ZlZCBvbmNlIFRpbWVCYXNlTGliIGlzIGVuYWJsZWQgZm9yIFNoZWxsUGtnLg0KPiA+ID4g Ky8vDQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBDYWxjdWxhdGUgRXBvY2ggZGF5cy4N Cj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gVGltZSAtIGEgcG9pbnRlciB0byB0aGUgRUZJ X1RJTUUgYWJzdHJhY3Rpb24uDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsICAgICAgICAgICBO dW1iZXIgb2YgZGF5cyBlbGFwc2VkIHNpbmNlIEVQT0NIX0pVTElBTl9EQVkuDQo+ID4gPiArICoq Lw0KPiA+ID4gK1NUQVRJQw0KPiA+ID4gK1VJTlRODQo+ID4gPiArRWZpR2V0RXBvY2hEYXlzICgN Cj4gPiA+ICsgIElOICBFRklfVElNRSAgKlRpbWUNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4g PiArICBVSU5UTiBhOw0KPiA+ID4gKyAgVUlOVE4geTsNCj4gPiA+ICsgIFVJTlROIG07DQo+ID4g PiArICAvLw0KPiA+ID4gKyAgLy8gQWJzb2x1dGUgSnVsaWFuIERhdGUgcmVwcmVzZW50YXRpb24g b2YgdGhlIHN1cHBsaWVkIFRpbWUuDQo+ID4gPiArICAvLw0KPiA+ID4gKyAgVUlOVE4gSnVsaWFu RGF0ZTsNCj4gPiA+ICsgIC8vDQo+ID4gPiArICAvLyBOdW1iZXIgb2YgZGF5cyBlbGFwc2VkIHNp bmNlIEVQT0NIX0pVTElBTl9EQVkuDQo+ID4gPiArICAvLw0KPiA+ID4gKyAgVUlOVE4gRXBvY2hE YXlzOw0KPiA+ID4gKw0KPiA+ID4gKyAgYSA9ICgxNCAtIFRpbWUtPk1vbnRoKSAvIDEyIDsNCj4g PiA+ICsgIHkgPSBUaW1lLT5ZZWFyICsgNDgwMCAtIGE7DQo+ID4gPiArICBtID0gVGltZS0+TW9u dGggKyAoMTIgKiBhKSAtIDM7DQo+ID4gPiArDQo+ID4gPiArICBKdWxpYW5EYXRlID0gVGltZS0+ RGF5ICsgKCgxNTMgKiBtICsgMikgLyA1KSArICgzNjUgKiB5KSArICh5IC8gNCkNCj4gLQ0KPiA+ ID4gKyAgICAgICAgICAgICAgICh5IC8gMTAwKSArICh5IC8gNDAwKSAtIDMyMDQ1Ow0KPiA+ID4g Kw0KPiA+ID4gKyAgQVNTRVJUIChKdWxpYW5EYXRlID49IEVQT0NIX0pVTElBTl9EQVRFKTsNCj4g PiA+ICsgIEVwb2NoRGF5cyA9IEp1bGlhbkRhdGUgLSBFUE9DSF9KVUxJQU5fREFURTsNCj4gPiA+ ICsNCj4gPiA+ICsgIHJldHVybiBFcG9jaERheXM7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4g Ky8qKg0KPiA+ID4gKyAgQ29udmVydHMgRUZJX1RJTUUgdG8gRXBvY2ggc2Vjb25kcw0KPiA+ID4g KyAgKGVsYXBzZWQgc2luY2UgMTk3MCBKQU5VQVJZIDAxLCAwMDowMDowMCBVVEMpLg0KPiA+ID4g Kw0KPiA+ID4gKyAgQHBhcmFtW2luXSBUaW1lOiBhIHBvaW50ZXIgdG8gRUZJX1RJTUUgYWJzdHJh Y3Rpb24uDQo+ID4gPiArICoqLw0KPiA+ID4gK1NUQVRJQw0KPiA+ID4gK1VJTlRODQo+ID4gPiAr RUZJQVBJDQo+ID4gPiArRWZpVGltZVRvRXBvY2ggKA0KPiA+ID4gKyAgSU4gIEVGSV9USU1FICAq VGltZQ0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIC8vDQo+ID4gPiArICAvLyBOdW1i ZXIgb2YgZGF5cyBlbGFwc2VkIHNpbmNlIEVQT0NIX0pVTElBTl9EQVkuDQo+ID4gPiArICAvLw0K PiA+ID4gKyAgVUlOVE4gRXBvY2hEYXlzOw0KPiA+ID4gKyAgVUlOVE4gRXBvY2hTZWNvbmRzOw0K PiA+ID4gKw0KPiA+ID4gKyAgRXBvY2hEYXlzID0gRWZpR2V0RXBvY2hEYXlzIChUaW1lKTsNCj4g PiA+ICsNCj4gPiA+ICsgIEVwb2NoU2Vjb25kcyA9IChFcG9jaERheXMgKiBTRUNfUEVSX0RBWSkg Kw0KPiA+ID4gKyAgICAgICAgICAgICAgICAgKChVSU5UTilUaW1lLT5Ib3VyICogU0VDX1BFUl9I T1VSKSArDQo+ID4gPiArICAgICAgICAgICAgICAgICAoVGltZS0+TWludXRlICogU0VDX1BFUl9N SU4pICsgVGltZS0+U2Vjb25kOw0KPiA+ID4gKw0KPiA+ID4gKyAgcmV0dXJuIEVwb2NoU2Vjb25k czsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBGdW5jdGlvbiBmb3Ig J2h0dHAnIGNvbW1hbmQuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dIEltYWdlSGFuZGxl ICBIYW5kbGUgdG8gdGhlIEltYWdlIChOVUxMIGlmIEludGVybmFsKS4NCj4gPiA+ICsgIEBwYXJh bVtpbl0gU3lzdGVtVGFibGUgIFBvaW50ZXIgdG8gdGhlIFN5c3RlbSBUYWJsZSAoTlVMTCBpZg0K PiBJbnRlcm5hbCkuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsICBTSEVMTF9TVUNDRVNTICAg ICAgICAgICAgVGhlICdodHRwJyBjb21tYW5kIGNvbXBsZXRlZA0KPiA+IHN1Y2Nlc3NmdWxseS4N Cj4gPiA+ICsgIEByZXR2YWwgIFNIRUxMX0FCT1JURUQgICAgICAgICAgICBUaGUgU2hlbGwgTGli cmFyeSBpbml0aWFsaXphdGlvbg0KPiBmYWlsZWQuDQo+ID4gPiArICBAcmV0dmFsICBTSEVMTF9J TlZBTElEX1BBUkFNRVRFUiAgQXQgbGVhc3Qgb25lIG9mIHRoZSBjb21tYW5kJ3MNCj4gPiA+IGFy Z3VtZW50cyBpcw0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5v dCB2YWxpZC4NCj4gPiA+ICsgIEByZXR2YWwgIFNIRUxMX09VVF9PRl9SRVNPVVJDRVMgICBBIG1l bW9yeSBhbGxvY2F0aW9uIGZhaWxlZC4NCj4gPiA+ICsgIEByZXR2YWwgIFNIRUxMX05PVF9GT1VO RCAgICAgICAgICBOZXR3b3JrIEludGVyZmFjZSBDYXJkIG5vdCBmb3VuZC4NCj4gPiA+ICsgIEBy ZXR2YWwgIFNIRUxMX1VOU1VQUE9SVEVEICAgICAgICBDb21tYW5kIHdhcyB2YWxpZCwgYnV0IHRo ZSBzZXJ2ZXINCj4gPiA+IHJldHVybmVkDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYSBzdGF0dXMgY29kZSBpbmRpY2F0aW5nIHNvbWUNCj4gZXJyb3IuDQo+ID4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhhbWluZSB0aGUgZmlsZSBy ZXF1ZXN0ZWQgZm9yDQo+IGVycm9yIGJvZHkuDQo+ID4gPiArKiovDQo+ID4gPiArU0hFTExfU1RB VFVTDQo+ID4gPiArUnVuSHR0cCAoDQo+ID4gPiArICBJTiBFRklfSEFORExFICAgICAgICBJbWFn ZUhhbmRsZSwNCj4gPiA+ICsgIElOIEVGSV9TWVNURU1fVEFCTEUgICpTeXN0ZW1UYWJsZQ0KPiA+ ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgIFN0YXR1 czsNCj4gPiA+ICsgIExJU1RfRU5UUlkgICAgICAgICAgICAgICpDaGVja1BhY2thZ2U7DQo+ID4g PiArICBVSU5UTiAgICAgICAgICAgICAgICAgICBQYXJhbUNvdW50Ow0KPiA+ID4gKyAgVUlOVE4g ICAgICAgICAgICAgICAgICAgSGFuZGxlQ291bnQ7DQo+ID4gPiArICBVSU5UTiAgICAgICAgICAg ICAgICAgICBOaWNOdW1iZXI7DQo+ID4gPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICBJbml0 aWFsU2l6ZTsNCj4gPiA+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgIFBhcmFtT2Zmc2V0Ow0K PiA+ID4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgU3RhcnRTaXplOw0KPiA+ID4gKyAgQ0hB UjE2ICAgICAgICAgICAgICAgICAgKlByb2JsZW1QYXJhbTsNCj4gPiA+ICsgIENIQVIxNg0KPiA+ IE5pY05hbWVbSVA0X0NPTkZJRzJfSU5URVJGQUNFX0lORk9fTkFNRV9MRU5HVEhdOw0KPiA+ID4g KyAgQ0hBUjE2ICAgICAgICAgICAgICAgICAgKldhbGtlcjE7DQo+ID4gPiArICBDSEFSMTYgICAg ICAgICAgICAgICAgICAqVlN0cjsNCj4gPiA+ICsgIENPTlNUIENIQVIxNiAgICAgICAgICAgICpV c2VyTmljTmFtZTsNCj4gPiA+ICsgIENPTlNUIENIQVIxNiAgICAgICAgICAgICpWYWx1ZVN0cjsN Cj4gPiA+ICsgIENPTlNUIENIQVIxNiAgICAgICAgICAgICpSZW1vdGVGaWxlUGF0aDsNCj4gPiA+ ICsgIENPTlNUIENIQVIxNiAgICAgICAgICAgICpXYWxrZXI7DQo+ID4gPiArICBFRklfSFRUUHY0 X0FDQ0VTU19QT0lOVCBJUHY0Tm9kZTsNCj4gPiA+ICsgIEVGSV9IQU5ETEUgICAgICAgICAgICAg ICpIYW5kbGVzOw0KPiA+ID4gKyAgRUZJX0hBTkRMRSAgICAgICAgICAgICAgQ29udHJvbGxlckhh bmRsZTsNCj4gPiA+ICsgIEhUVFBfRE9XTkxPQURfQ09OVEVYVCAgIENvbnRleHQ7DQo+ID4gPiAr ICBCT09MRUFOICAgICAgICAgICAgICAgICBOaWNGb3VuZDsNCj4gPiA+ICsNCj4gPiA+ICsgIFBy b2JsZW1QYXJhbSAgICAgICAgPSBOVUxMOw0KPiA+ID4gKyAgUmVtb3RlRmlsZVBhdGggICAgICA9 IE5VTEw7DQo+ID4gPiArICBOaWNGb3VuZCAgICAgICAgICAgID0gRkFMU0U7DQo+ID4gPiArICBI YW5kbGVzICAgICAgICAgICAgID0gTlVMTDsNCj4gPiA+ICsNCj4gPiA+ICsgIC8vDQo+ID4gPiAr ICAvLyBJbml0aWFsaXplIHRoZSBTaGVsbCBsaWJyYXJ5ICh3ZSBtdXN0IGJlIGluIG5vbi1hdXRv LWluaXQuLi4pLg0KPiA+ID4gKyAgLy8NCj4gPiA+ICsgIFBhcmFtT2Zmc2V0ID0gMDsNCj4gPiA+ ICsgIGdIdHRwRXJyb3IgID0gRkFMU0U7DQo+ID4gPiArDQo+ID4gPiArICBTdGF0dXMgPSBTaGVs bEluaXRpYWxpemUgKCk7DQo+ID4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4g PiArICAgIEFTU0VSVF9FRklfRVJST1IgKFN0YXR1cyk7DQo+ID4gPiArICAgIHJldHVybiBTSEVM TF9BQk9SVEVEOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgWmVyb01lbSAoJkNvbnRl eHQsIHNpemVvZiAoQ29udGV4dCkpOw0KPiA+ID4gKw0KPiA+ID4gKyAgLy8NCj4gPiA+ICsgIC8v IFBhcnNlIHRoZSBjb21tYW5kIGxpbmUuDQo+ID4gPiArICAvLw0KPiA+ID4gKyAgU3RhdHVzID0g U2hlbGxDb21tYW5kTGluZVBhcnNlICgNCj4gPiA+ICsgICAgICAgICAgICAgUGFyYW1MaXN0LA0K PiA+ID4gKyAgICAgICAgICAgICAmQ2hlY2tQYWNrYWdlLA0KPiA+ID4gKyAgICAgICAgICAgICAm UHJvYmxlbVBhcmFtLA0KPiA+ID4gKyAgICAgICAgICAgICBUUlVFDQo+ID4gPiArICAgICAgICAg ICAgICk7DQo+ID4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gPiArICAgIGlm ICgoU3RhdHVzID09IEVGSV9WT0xVTUVfQ09SUlVQVEVEKQ0KPiA+ID4gKyAgICAgJiYgKFByb2Js ZW1QYXJhbSAhPSBOVUxMKSkNCj4gPiA+ICsgICAgew0KPiA+ID4gKyAgICAgIFBSSU5UX0hJSV9B UFAgKFNUUklOR19UT0tFTiAoU1RSX0dFTl9QUk9CTEVNKSwNCj4gPiBQcm9ibGVtUGFyYW0pOw0K PiA+ID4gKyAgICAgIFNIRUxMX0ZSRUVfTk9OX05VTEwgKFByb2JsZW1QYXJhbSk7DQo+ID4gPiAr ICAgIH0gZWxzZSB7DQo+ID4gPiArICAgICAgQVNTRVJUIChGQUxTRSk7DQo+ID4gPiArICAgIH0N Cj4gPiA+ICsNCj4gPiA+ICsgICAgZ290byBFcnJvcjsNCj4gPiA+ICsgIH0NCj4gPiA+ICsNCj4g PiA+ICsgIC8vDQo+ID4gPiArICAvLyBDaGVjayB0aGUgbnVtYmVyIG9mIHBhcmFtZXRlcnMuDQo+ ID4gPiArICAvLw0KPiA+ID4gKyAgU3RhdHVzID0gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiA+ ID4gKw0KPiA+ID4gKyAgUGFyYW1Db3VudCA9IFNoZWxsQ29tbWFuZExpbmVHZXRDb3VudCAoQ2hl Y2tQYWNrYWdlKTsNCj4gPiA+ICsgIGlmIChQYXJhbUNvdW50ID4gTUFYX1BBUkFNX0NPVU5UKSB7 DQo+ID4gPiArICAgIFBSSU5UX0hJSV9BUFAgKFNUUklOR19UT0tFTiAoU1RSX0dFTl9UT09fTUFO WSksIE5VTEwpOw0KPiA+ID4gKyAgICBnb3RvIEVycm9yOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0K PiA+ID4gKyAgaWYgKFBhcmFtQ291bnQgPCBNSU5fUEFSQU1fQ09VTlQpIHsNCj4gPiA+ICsgICAg UFJJTlRfSElJX0FQUCAoU1RSSU5HX1RPS0VOIChTVFJfR0VOX1RPT19GRVcpLCBOVUxMKTsNCj4g PiA+ICsgICAgZ290byBFcnJvcjsNCj4gPiA+ICsgIH0NCj4gPiA+ICsNCj4gPiA+ICsgIFplcm9N ZW0gKCZDb250ZXh0Lkh0dHBDb25maWdEYXRhLCBzaXplb2YgKENvbnRleHQuSHR0cENvbmZpZ0Rh dGEpKTsNCj4gPiA+ICsgIFplcm9NZW0gKCZJUHY0Tm9kZSwgc2l6ZW9mIChJUHY0Tm9kZSkpOw0K PiA+ID4gKyAgSVB2NE5vZGUuVXNlRGVmYXVsdEFkZHJlc3MgPSBUUlVFOw0KPiA+ID4gKw0KPiA+ ID4gKyAgQ29udGV4dC5IdHRwQ29uZmlnRGF0YS5IdHRwVmVyc2lvbiA9IEh0dHBWZXJzaW9uMTE7 DQo+ID4gPiArICBDb250ZXh0Lkh0dHBDb25maWdEYXRhLkFjY2Vzc1BvaW50LklQdjROb2RlID0g JklQdjROb2RlOw0KPiA+ID4gKw0KPiA+ID4gKyAgLy8NCj4gPiA+ICsgIC8vIEdldCB0aGUgaG9z dCBhZGRyZXNzIChub3QgbmVjZXNzYXJpbHkgSVB2NCBmb3JtYXQpLg0KPiA+ID4gKyAgLy8NCj4g PiA+ICsgIFZhbHVlU3RyID0gU2hlbGxDb21tYW5kTGluZUdldFJhd1ZhbHVlIChDaGVja1BhY2th Z2UsIDEpOw0KPiA+ID4gKyAgaWYgKCFWYWx1ZVN0cikgew0KPiA+ID4gKyAgICBQUklOVF9ISUlf QVBQIChTVFJJTkdfVE9LRU4gKFNUUl9HRU5fUEFSQU1fSU5WKSwgVmFsdWVTdHIpOw0KPiA+ID4g KyAgICBnb3RvIEVycm9yOw0KPiA+ID4gKyAgfSBlbHNlIHsNCj4gPiA+ICsgICAgU3RhcnRTaXpl ID0gMDsNCj4gPiA+ICsgICAgVHJpbVNwYWNlcyAoKENIQVIxNiAqKVZhbHVlU3RyKTsNCj4gPiA+ ICsgICAgaWYgKCFTdHJTdHIgKFZhbHVlU3RyLCBMIjovLyIpKSB7DQo+ID4gPiArICAgICAgQ29u dGV4dC5TZXJ2ZXJBZGRyQW5kUHJvdG8gPSBTdHJuQ2F0R3JvdyAoDQo+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZDb250ZXh0LlNlcnZlckFkZHJBbmRQcm90bywN Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlN0YXJ0U2l6ZSwN Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREVGQVVMVF9IVFRQ X1BST1RPLA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJM ZW4gKERFRkFVTFRfSFRUUF9QUk9UTykNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKTsNCj4gPiA+ICsgICAgICBDb250ZXh0LlNlcnZlckFkZHJBbmRQcm90byA9 IFN0cm5DYXRHcm93ICgNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJkNvbnRleHQuU2VydmVyQWRkckFuZFByb3RvLA0KPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAmU3RhcnRTaXplLA0KPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBMIjovLyIsDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFN0ckxlbiAoTCI6Ly8iKQ0KPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICApOw0KPiA+ID4gKyAgICAgIFZTdHIgPSAoQ0hBUjE2ICopVmFs dWVTdHI7DQo+ID4gPiArICAgIH0gZWxzZSB7DQo+ID4gPiArICAgICAgVlN0ciA9IFN0clN0ciAo VmFsdWVTdHIsIEwiOi8vIikgKyBTdHJMZW4gKEwiOi8vIik7DQo+ID4gPiArICAgIH0NCj4gPiA+ ICsNCj4gPiA+ICsgICAgZm9yIChXYWxrZXIxID0gVlN0cjsgKldhbGtlcjE7IFdhbGtlcjErKykg ew0KPiA+ID4gKyAgICAgIGlmICgqV2Fsa2VyMSA9PSBMJy8nKSB7DQo+ID4gPiArICAgICAgICBi cmVhazsNCj4gPiA+ICsgICAgICB9DQo+ID4gPiArICAgIH0NCj4gPiA+ICsNCj4gPiA+ICsgICAg aWYgKCpXYWxrZXIxID09IEwnLycpIHsNCj4gPiA+ICsgICAgICBQYXJhbU9mZnNldCA9IDE7DQo+ ID4gPiArICAgICAgUmVtb3RlRmlsZVBhdGggPSBXYWxrZXIxOw0KPiA+ID4gKyAgICB9DQo+ID4g PiArDQo+ID4gPiArICAgIENvbnRleHQuU2VydmVyQWRkckFuZFByb3RvID0gU3RybkNhdEdyb3cg KA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkNvbnRleHQuU2Vy dmVyQWRkckFuZFByb3RvLA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJlN0YXJ0U2l6ZSwNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFZhbHVlU3RyLA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3Ry TGVuIChWYWx1ZVN0cikgLSBTdHJMZW4NCj4gKFdhbGtlcjEpDQo+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICApOw0KPiA+ID4gKyAgICBpZiAoIUNvbnRleHQuU2VydmVy QWRkckFuZFByb3RvKSB7DQo+ID4gPiArICAgICAgU3RhdHVzID0gRUZJX09VVF9PRl9SRVNPVVJD RVM7DQo+ID4gPiArICAgICAgZ290byBFcnJvcjsNCj4gPiA+ICsgICAgfQ0KPiA+ID4gKyAgfQ0K PiA+ID4gKw0KPiA+ID4gKyAgaWYgKCFSZW1vdGVGaWxlUGF0aCkgew0KPiA+ID4gKyAgICBSZW1v dGVGaWxlUGF0aCA9IFNoZWxsQ29tbWFuZExpbmVHZXRSYXdWYWx1ZSAoQ2hlY2tQYWNrYWdlLCAy KTsNCj4gPiA+ICsgICAgaWYgKCFSZW1vdGVGaWxlUGF0aCkgew0KPiA+ID4gKyAgICAgIC8vDQo+ ID4gPiArICAgICAgLy8gSWYgbm8gcGF0aCBnaXZlbiwgYXNzdW1lIGp1c3QgIi8iLg0KPiA+ID4g KyAgICAgIC8vDQo+ID4gPiArICAgICAgUmVtb3RlRmlsZVBhdGggPSBMIi8iOw0KPiA+ID4gKyAg ICB9DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ID4gPiArICBUcmltU3BhY2VzICgoQ0hBUjE2ICop UmVtb3RlRmlsZVBhdGgpOw0KPiA+ID4gKw0KPiA+ID4gKyAgaWYgKFBhcmFtQ291bnQgPT0gTUFY X1BBUkFNX0NPVU5UIC0gUGFyYW1PZmZzZXQpIHsNCj4gPiA+ICsgICAgbUxvY2FsRmlsZVBhdGgg PSBTaGVsbENvbW1hbmRMaW5lR2V0UmF3VmFsdWUgKA0KPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgQ2hlY2tQYWNrYWdlLA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgTUFYX1BB UkFNX0NPVU5UIC0gMSAtIFBhcmFtT2Zmc2V0DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAg ICApOw0KPiA+ID4gKyAgfSBlbHNlIHsNCj4gPiA+ICsgICAgV2Fsa2VyID0gUmVtb3RlRmlsZVBh dGggKyBTdHJMZW4gKFJlbW90ZUZpbGVQYXRoKTsNCj4gPiA+ICsgICAgd2hpbGUgKCgtLVdhbGtl cikgPj0gUmVtb3RlRmlsZVBhdGgpIHsNCj4gPiA+ICsgICAgICBpZiAoKCpXYWxrZXIgPT0gTCdc XCcpIHx8DQo+ID4gPiArICAgICAgICAgICgqV2Fsa2VyID09IEwnLycgKSAgICApIHsNCj4gPiA+ ICsgICAgICAgIGJyZWFrOw0KPiA+ID4gKyAgICAgIH0NCj4gPiA+ICsgICAgfQ0KPiA+ID4gKw0K PiA+ID4gKyAgICBtTG9jYWxGaWxlUGF0aCA9IFdhbGtlciArIDE7DQo+ID4gPiArICB9DQo+ID4g PiArDQo+ID4gPiArICBpZiAoIVN0ckxlbiAobUxvY2FsRmlsZVBhdGgpKSB7DQo+ID4gPiArICAg IG1Mb2NhbEZpbGVQYXRoID0gREVGQVVMVF9IVE1MX0ZJTEU7DQo+ID4gPiArICB9DQo+ID4gPiAr DQo+ID4gPiArICBJbml0aWFsU2l6ZSA9IDA7DQo+ID4gPiArICBDb250ZXh0LlVyaSA9IFN0cm5D YXRHcm93ICgNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAmQ29udGV4dC5VcmksDQo+ID4gPiAr ICAgICAgICAgICAgICAgICAgJkluaXRpYWxTaXplLA0KPiA+ID4gKyAgICAgICAgICAgICAgICAg IFJlbW90ZUZpbGVQYXRoLA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgIFN0ckxlbiAoUmVtb3Rl RmlsZVBhdGgpDQo+ID4gPiArICAgICAgICAgICAgICAgICAgKTsNCj4gPiA+ICsgIGlmICghQ29u dGV4dC5VcmkpIHsNCj4gPiA+ICsgICAgU3RhdHVzID0gRUZJX09VVF9PRl9SRVNPVVJDRVM7DQo+ ID4gPiArICAgIGdvdG8gRXJyb3I7DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ID4gPiArICAvLw0K PiA+ID4gKyAgLy8gR2V0IHRoZSBuYW1lIG9mIHRoZSBOZXR3b3JrIEludGVyZmFjZSBDYXJkIHRv IGJlIHVzZWQgaWYgYW55Lg0KPiA+ID4gKyAgLy8NCj4gPiA+ICsgIFVzZXJOaWNOYW1lID0gU2hl bGxDb21tYW5kTGluZUdldFZhbHVlIChDaGVja1BhY2thZ2UsIEwiLWkiKTsNCj4gPiA+ICsNCj4g PiA+ICsgIFZhbHVlU3RyID0gU2hlbGxDb21tYW5kTGluZUdldFZhbHVlIChDaGVja1BhY2thZ2Us IEwiLWwiKTsNCj4gPiA+ICsgIGlmICgoVmFsdWVTdHIgIT0gTlVMTCkNCj4gPiA+ICsgICAmJiAo IVN0cmluZ1RvVWludDE2ICgNCj4gPiA+ICsgICAgICAgICAgVmFsdWVTdHIsDQo+ID4gPiArICAg ICAgICAgICZDb250ZXh0Lkh0dHBDb25maWdEYXRhLkFjY2Vzc1BvaW50LklQdjROb2RlLT5Mb2Nh bFBvcnQNCj4gPiA+ICsgICAgICAgICAgKQ0KPiA+ID4gKyAgICAgICkpDQo+ID4gPiArICB7DQo+ ID4gPiArICAgIGdvdG8gRXJyb3I7DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ID4gPiArICBDb250 ZXh0LkJ1ZmZlclNpemUgPSBERUZBVUxUX0JVRl9TSVpFOw0KPiA+ID4gKw0KPiA+ID4gKyAgVmFs dWVTdHIgPSBTaGVsbENvbW1hbmRMaW5lR2V0VmFsdWUgKENoZWNrUGFja2FnZSwgTCItcyIpOw0K PiA+ID4gKyAgaWYgKFZhbHVlU3RyICE9IE5VTEwpIHsNCj4gPiA+ICsgICAgQ29udGV4dC5CdWZm ZXJTaXplID0gU2hlbGxTdHJUb1VpbnRuIChWYWx1ZVN0cik7DQo+ID4gPiArICAgIGlmICghQ29u dGV4dC5CdWZmZXJTaXplIHx8IENvbnRleHQuQnVmZmVyU2l6ZSA+IE1BWF9CVUZfU0laRSkgew0K PiA+ID4gKyAgICAgIFBSSU5UX0hJSV9BUFAgKFNUUklOR19UT0tFTiAoU1RSX0dFTl9QQVJBTV9J TlYpLCBWYWx1ZVN0cik7DQo+ID4gPiArICAgICAgZ290byBFcnJvcjsNCj4gPiA+ICsgICAgfQ0K PiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgVmFsdWVTdHIgPSBTaGVsbENvbW1hbmRMaW5l R2V0VmFsdWUgKENoZWNrUGFja2FnZSwgTCItdCIpOw0KPiA+ID4gKyAgaWYgKFZhbHVlU3RyICE9 IE5VTEwpIHsNCj4gPiA+ICsgICAgQ29udGV4dC5IdHRwQ29uZmlnRGF0YS5UaW1lT3V0TWlsbGlz ZWMgPSAoVUlOVDMyKVNoZWxsU3RyVG9VaW50bg0KPiA+ID4gKFZhbHVlU3RyKTsNCj4gPiA+ICsg IH0NCj4gPiA+ICsNCj4gPiA+ICsgIC8vDQo+ID4gPiArICAvLyBMb2NhdGUgYWxsIEhUVFAgU2Vy dmljZSBCaW5kaW5nIHByb3RvY29scy4NCj4gPiA+ICsgIC8vDQo+ID4gPiArICBTdGF0dXMgPSBn QlMtPkxvY2F0ZUhhbmRsZUJ1ZmZlciAoDQo+ID4gPiArICAgICAgICAgICAgICAgICAgQnlQcm90 b2NvbCwNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAmZ0VmaU1hbmFnZWROZXR3b3JrU2Vydmlj ZUJpbmRpbmdQcm90b2NvbEd1aWQsDQo+ID4gPiArICAgICAgICAgICAgICAgICAgTlVMTCwNCj4g PiA+ICsgICAgICAgICAgICAgICAgICAmSGFuZGxlQ291bnQsDQo+ID4gPiArICAgICAgICAgICAg ICAgICAgJkhhbmRsZXMNCj4gPiA+ICsgICAgICAgICAgICAgICAgICApOw0KPiA+ID4gKyAgaWYg KEVGSV9FUlJPUiAoU3RhdHVzKSB8fCAoSGFuZGxlQ291bnQgPT0gMCkpIHsNCj4gPiA+ICsgICAg UFJJTlRfSElJIChTVFJJTkdfVE9LRU4gKFNUUl9IVFRQX0VSUl9OT19OSUMpLCBOVUxMKTsNCj4g PiA+ICsgICAgaWYgKCFFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiA+ICsgICAgICBTdGF0dXMg PSBFRklfTk9UX0ZPVU5EOw0KPiA+ID4gKyAgICB9DQo+ID4gPiArDQo+ID4gPiArICAgIGdvdG8g RXJyb3I7DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ID4gPiArICBTdGF0dXMgPSBFRklfTk9UX0ZP VU5EOw0KPiA+ID4gKw0KPiA+ID4gKyAgQ29udGV4dC5GbGFncyA9IDA7DQo+ID4gPiArICBpZiAo U2hlbGxDb21tYW5kTGluZUdldEZsYWcgKENoZWNrUGFja2FnZSwgTCItbSIpKSB7DQo+ID4gPiAr ICAgIENvbnRleHQuRmxhZ3MgfD0gRExfRkxBR19USU1FOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0K PiA+ID4gKyAgaWYgKFNoZWxsQ29tbWFuZExpbmVHZXRGbGFnIChDaGVja1BhY2thZ2UsIEwiLWsi KSkgew0KPiA+ID4gKyAgICBDb250ZXh0LkZsYWdzIHw9IERMX0ZMQUdfS0VFUF9CQUQ7DQo+ID4g PiArICB9DQo+ID4gPiArDQo+ID4gPiArICBmb3IgKE5pY051bWJlciA9IDA7DQo+ID4gPiArICAg ICAgIChOaWNOdW1iZXIgPCBIYW5kbGVDb3VudCkgJiYgKFN0YXR1cyAhPSBFRklfU1VDQ0VTUyk7 DQo+ID4gPiArICAgICAgIE5pY051bWJlcisrKQ0KPiA+ID4gKyAgew0KPiA+ID4gKyAgICBDb250 cm9sbGVySGFuZGxlID0gSGFuZGxlc1tOaWNOdW1iZXJdOw0KPiA+ID4gKw0KPiA+ID4gKyAgICBT dGF0dXMgPSBHZXROaWNOYW1lIChDb250cm9sbGVySGFuZGxlLCBOaWNOdW1iZXIsIE5pY05hbWUp Ow0KPiA+ID4gKyAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gPiArICAgICAgUFJJ TlRfSElJIChTVFJJTkdfVE9LRU4gKFNUUl9IVFRQX0VSUl9OSUNfTkFNRSksIE5pY051bWJlciwN Cj4gPiA+IFN0YXR1cyk7DQo+ID4gPiArICAgICAgY29udGludWU7DQo+ID4gPiArICAgIH0NCj4g PiA+ICsNCj4gPiA+ICsgICAgaWYgKFVzZXJOaWNOYW1lICE9IE5VTEwpIHsNCj4gPiA+ICsgICAg ICBpZiAoU3RyQ21wIChOaWNOYW1lLCBVc2VyTmljTmFtZSkgIT0gMCkgew0KPiA+ID4gKyAgICAg ICAgU3RhdHVzID0gRUZJX05PVF9GT1VORDsNCj4gPiA+ICsgICAgICAgIGNvbnRpbnVlOw0KPiA+ ID4gKyAgICAgIH0NCj4gPiA+ICsNCj4gPiA+ICsgICAgICBOaWNGb3VuZCA9IFRSVUU7DQo+ID4g PiArICAgIH0NCj4gPiA+ICsNCj4gPiA+ICsgICAgU3RhdHVzID0gRG93bmxvYWRGaWxlICgmQ29u dGV4dCwgQ29udHJvbGxlckhhbmRsZSwgTmljTmFtZSk7DQo+ID4gPiArICAgIFBSSU5UX0hJSSAo U1RSSU5HX1RPS0VOIChTVFJfR0VOX0NSTEYpLCBOVUxMKTsNCj4gPiA+ICsNCj4gPiA+ICsgICAg aWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ID4gKyAgICAgIFBSSU5UX0hJSSAoDQo+ID4g PiArICAgICAgICBTVFJJTkdfVE9LRU4gKFNUUl9IVFRQX0VSUl9ET1dOTE9BRCksDQo+ID4gPiAr ICAgICAgICBSZW1vdGVGaWxlUGF0aCwNCj4gPiA+ICsgICAgICAgIE5pY05hbWUsDQo+ID4gPiAr ICAgICAgICBTdGF0dXMNCj4gPiA+ICsgICAgICAgICk7DQo+ID4gPiArICAgICAgLy8NCj4gPiA+ ICsgICAgICAvLyBJZiBhIHVzZXIgYWJvcnRlZCB0aGUgb3BlcmF0aW9uLA0KPiA+ID4gKyAgICAg IC8vIGRvIG5vdCB0cnkgYW5vdGhlciBjb250cm9sbGVyLg0KPiA+ID4gKyAgICAgIC8vDQo+ID4g PiArICAgICAgaWYgKFN0YXR1cyA9PSBFRklfQUJPUlRFRCkgew0KPiA+ID4gKyAgICAgICAgZ290 byBFcnJvcjsNCj4gPiA+ICsgICAgICB9DQo+ID4gPiArICAgIH0NCj4gPiA+ICsNCj4gPiA+ICsg ICAgaWYgKGdIdHRwRXJyb3IpIHsNCj4gPiA+ICsgICAgIC8vDQo+ID4gPiArICAgICAvLyBUaGlz IGlzIG5vdCByZWxhdGVkIHRvIGNvbm5lY3Rpb24sIHNvIG5vIG5lZWQgdG8gcmVwZWF0IHdpdGgN Cj4gPiA+ICsgICAgIC8vIGFub3RoZXIgaW50ZXJmYWNlLg0KPiA+ID4gKyAgICAgLy8NCj4gPiA+ ICsgICAgICBicmVhazsNCj4gPiA+ICsgICAgfQ0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4g KyAgaWYgKChVc2VyTmljTmFtZSAhPSBOVUxMKSAmJiAoIU5pY0ZvdW5kKSkgew0KPiA+ID4gKyAg ICBQUklOVF9ISUkgKFNUUklOR19UT0tFTiAoU1RSX0hUVFBfRVJSX05JQ19OT1RfRk9VTkQpLA0K PiA+ID4gVXNlck5pY05hbWUpOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gK0Vycm9yOg0K PiA+ID4gKyAgU2hlbGxDb21tYW5kTGluZUZyZWVWYXJMaXN0IChDaGVja1BhY2thZ2UpOw0KPiA+ ID4gKyAgU0hFTExfRlJFRV9OT05fTlVMTCAoSGFuZGxlcyk7DQo+ID4gPiArICBTSEVMTF9GUkVF X05PTl9OVUxMIChDb250ZXh0LlNlcnZlckFkZHJBbmRQcm90byk7DQo+ID4gPiArICBTSEVMTF9G UkVFX05PTl9OVUxMIChDb250ZXh0LlVyaSk7DQo+ID4gPiArDQo+ID4gPiArICByZXR1cm4gU3Rh dHVzICYgfk1BWF9CSVQ7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAg Q2hlY2sgYW5kIGNvbnZlcnQgdGhlIFVJTlQxNiBvcHRpb24gdmFsdWVzIG9mIHRoZSAnaHR0cCcg Y29tbWFuZA0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2luXSAgVmFsdWVTdHIgIFZhbHVlIGFz IGFuIFVuaWNvZGUgZW5jb2RlZCBzdHJpbmcNCj4gPiA+ICsgIEBwYXJhbVtvdXRdIFZhbHVlICAg ICBVSU5UMTYgdmFsdWUNCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR2YWwgICAgIFRSVUUgICAgICBU aGUgdmFsdWUgd2FzIHJldHVybmVkLg0KPiA+ID4gKyAgQHJldHZhbCAgICAgRkFMU0UgICAgIEEg cGFyc2luZyBlcnJvciBvY2N1cmVkLg0KPiA+ID4gKyoqLw0KPiA+ID4gK1NUQVRJQw0KPiA+ID4g K0JPT0xFQU4NCj4gPiA+ICtTdHJpbmdUb1VpbnQxNiAoDQo+ID4gPiArICBJTiAgIENPTlNUIENI QVIxNiAgKlZhbHVlU3RyLA0KPiA+ID4gKyAgT1VUICBVSU5UMTYgICAgICAgICpWYWx1ZQ0KPiA+ ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIFVJTlROICBWYWw7DQo+ID4gPiArDQo+ID4gPiAr ICBWYWwgPSBTaGVsbFN0clRvVWludG4gKFZhbHVlU3RyKTsNCj4gPiA+ICsgIGlmIChWYWwgPiBN QVhfVUlOVDE2KSB7DQo+ID4gPiArICAgIFBSSU5UX0hJSV9BUFAgKFNUUklOR19UT0tFTiAoU1RS X0dFTl9QQVJBTV9JTlYpLCBWYWx1ZVN0cik7DQo+ID4gPiArICAgIHJldHVybiBGQUxTRTsNCj4g PiA+ICsgIH0NCj4gPiA+ICsNCj4gPiA+ICsgICpWYWx1ZSA9IChVSU5UMTYpVmFsOw0KPiA+ID4g KyAgcmV0dXJuIFRSVUU7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAg R2V0IHRoZSBuYW1lIG9mIHRoZSBOSUMuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dICAg Q29udHJvbGxlckhhbmRsZSAgVGhlIG5ldHdvcmsgcGh5c2ljYWwgZGV2aWNlIGhhbmRsZS4NCj4g PiA+ICsgIEBwYXJhbVtpbl0gICBOaWNOdW1iZXIgICAgICAgICBUaGUgbmV0d29yayBwaHlzaWNh bCBkZXZpY2UgbnVtYmVyLg0KPiA+ID4gKyAgQHBhcmFtW291dF0gIE5pY05hbWUgICAgICAgICAg IEFkZHJlc3Mgd2hlcmUgdG8gc3RvcmUgdGhlIE5JQyBuYW1lLg0KPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFRoZSBtZW1vcnkgYXJlYSBoYXMgdG8gYmUgYXQgbGVhc3QN Cj4gPiA+ICsNCj4gSVA0X0NPTkZJRzJfSU5URVJGQUNFX0lORk9fTkFNRV9MRU5HVEgNCj4gPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgYnl0ZSB3aWRlLg0KPiA+ ID4gKw0KPiA+ID4gKyAgQHJldHZhbCAgRUZJX1NVQ0NFU1MgIFRoZSBuYW1lIG9mIHRoZSBOSUMg d2FzIHJldHVybmVkLg0KPiA+ID4gKyAgQHJldHZhbCAgT3RoZXJzICAgICAgIFRoZSBjcmVhdGlv biBvZiB0aGUgY2hpbGQgZm9yIHRoZSBNYW5hZ2VkDQo+ID4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgTmV0d29yayBTZXJ2aWNlIGZhaWxlZCBvciB0aGUgb3BlbmluZyBvZg0KPiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgIHRoZSBNYW5hZ2VkIE5ldHdvcmsgUHJvdG9jb2wgZmFpbGVk IG9yDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgdGhlIG9wZXJhdGlvbmFsIHBhcmFt ZXRlcnMgZm9yIHRoZQ0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIE1hbmFnZWQgTmV0 d29yayBQcm90b2NvbCBjb3VsZCBub3QgYmUNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICByZWFkLg0KPiA+ID4gKyoqLw0KPiA+ID4gK1NUQVRJQw0KPiA+ID4gK0VGSV9TVEFUVVMNCj4g PiA+ICtHZXROaWNOYW1lICgNCj4gPiA+ICsgIElOICAgRUZJX0hBTkRMRSAgQ29udHJvbGxlckhh bmRsZSwNCj4gPiA+ICsgIElOICAgVUlOVE4gICAgICAgTmljTnVtYmVyLA0KPiA+ID4gKyAgT1VU ICBDSEFSMTYgICAgICAqTmljTmFtZQ0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIEVG SV9TVEFUVVMgICAgICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gPiA+ICsgIEVGSV9IQU5ETEUg ICAgICAgICAgICAgICAgICAgIE1ucEhhbmRsZTsNCj4gPiA+ICsgIEVGSV9NQU5BR0VEX05FVFdP UktfUFJPVE9DT0wgICpNbnA7DQo+ID4gPiArICBFRklfU0lNUExFX05FVFdPUktfTU9ERSAgICAg ICBTbnBNb2RlOw0KPiA+ID4gKw0KPiA+ID4gKyAgU3RhdHVzID0gQ3JlYXRlU2VydmljZUNoaWxk QW5kT3BlblByb3RvY29sICgNCj4gPiA+ICsgICAgICAgICAgICAgQ29udHJvbGxlckhhbmRsZSwN Cj4gPiA+ICsgICAgICAgICAgICAgJmdFZmlNYW5hZ2VkTmV0d29ya1NlcnZpY2VCaW5kaW5nUHJv dG9jb2xHdWlkLA0KPiA+ID4gKyAgICAgICAgICAgICAmZ0VmaU1hbmFnZWROZXR3b3JrUHJvdG9j b2xHdWlkLA0KPiA+ID4gKyAgICAgICAgICAgICAmTW5wSGFuZGxlLA0KPiA+ID4gKyAgICAgICAg ICAgICAoVk9JRCoqKSZNbnANCj4gPiA+ICsgICAgICAgICAgICAgKTsNCj4gPiA+ICsgIGlmIChF RklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiA+ICsgICAgZ290byBFcnJvcjsNCj4gPiA+ICsgIH0N Cj4gPiA+ICsNCj4gPiA+ICsgIFN0YXR1cyA9IE1ucC0+R2V0TW9kZURhdGEgKE1ucCwgTlVMTCwg JlNucE1vZGUpOw0KPiA+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSAmJiAoU3RhdHVzICE9 IEVGSV9OT1RfU1RBUlRFRCkpIHsNCj4gPiA+ICsgICAgZ290byBFcnJvcjsNCj4gPiA+ICsgIH0N Cj4gPiA+ICsNCj4gPiA+ICsgIFVuaWNvZGVTUHJpbnQgKA0KPiA+ID4gKyAgICBOaWNOYW1lLA0K PiA+ID4gKyAgICBJUDRfQ09ORklHMl9JTlRFUkZBQ0VfSU5GT19OQU1FX0xFTkdUSCwNCj4gPiA+ ICsgICAgU25wTW9kZS5JZlR5cGUgPT0gTkVUX0lGVFlQRV9FVEhFUk5FVCA/IEwiZXRoJWQiIDog TCJ1bmslZCIsDQo+ID4gPiArICAgIE5pY051bWJlcg0KPiA+ID4gKyAgICApOw0KPiA+ID4gKw0K PiA+ID4gKyAgU3RhdHVzID0gRUZJX1NVQ0NFU1M7DQo+ID4gPiArDQo+ID4gPiArRXJyb3I6DQo+ ID4gPiArDQo+ID4gPiArICBpZiAoTW5wSGFuZGxlICE9IE5VTEwpIHsNCj4gPiA+ICsgICAgQ2xv c2VQcm90b2NvbEFuZERlc3Ryb3lTZXJ2aWNlQ2hpbGQgKA0KPiA+ID4gKyAgICAgIENvbnRyb2xs ZXJIYW5kbGUsDQo+ID4gPiArICAgICAgJmdFZmlNYW5hZ2VkTmV0d29ya1NlcnZpY2VCaW5kaW5n UHJvdG9jb2xHdWlkLA0KPiA+ID4gKyAgICAgICZnRWZpTWFuYWdlZE5ldHdvcmtQcm90b2NvbEd1 aWQsDQo+ID4gPiArICAgICAgTW5wSGFuZGxlDQo+ID4gPiArICAgICAgKTsNCj4gPiA+ICsgIH0N Cj4gPiA+ICsNCj4gPiA+ICsgIHJldHVybiBTdGF0dXM7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ ID4gKy8qKg0KPiA+ID4gKyAgQ3JlYXRlIGEgY2hpbGQgZm9yIHRoZSBzZXJ2aWNlIGlkZW50aWZp ZWQgYnkgaXRzIHNlcnZpY2UgYmluZGluZw0KPiBwcm90b2NvbA0KPiA+IEdVSUQNCj4gPiA+ICsg IGFuZCBnZXQgZnJvbSB0aGUgY2hpbGQgdGhlIGludGVyZmFjZSBvZiB0aGUgcHJvdG9jb2wgaWRl bnRpZmllZCBieQ0KPiBpdHMNCj4gPiBHVUlELg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2lu XSAgIENvbnRyb2xsZXJIYW5kbGUgICAgICAgICAgICBDb250cm9sbGVyIGhhbmRsZS4NCj4gPiA+ ICsgIEBwYXJhbVtpbl0gICBTZXJ2aWNlQmluZGluZ1Byb3RvY29sR3VpZCAgU2VydmljZSBiaW5k aW5nIHByb3RvY29sDQo+IEdVSUQNCj4gPiBvZiB0aGUNCj4gPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZSB0byBiZSBjcmVhdGVkLg0KPiA+ID4g KyAgQHBhcmFtW2luXSAgIFByb3RvY29sR3VpZCAgICAgICAgICAgICAgICBHVUlEIG9mIHRoZSBw cm90b2NvbCB0byBiZQ0KPiBvcGVuLg0KPiA+ID4gKyAgQHBhcmFtW291dF0gIENoaWxkSGFuZGxl ICAgICAgICAgICAgICAgICBBZGRyZXNzIHdoZXJlIHRoZSBoYW5kbGVyDQo+IG9mIHRoZQ0KPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVkIGNo aWxkIGlzIHJldHVybmVkLg0KPiBOVUxMIGlzDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJldHVybmVkIGluIGNhc2Ugb2YgZXJyb3IuDQo+ID4gPiAr ICBAcGFyYW1bb3V0XSAgSW50ZXJmYWNlICAgICAgICAgICAgICAgICAgIEFkZHJlc3Mgd2hlcmUg YSBwb2ludGVyIHRvDQo+IHRoZQ0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBwcm90b2NvbCBpbnRlcmZhY2UgaXMNCj4gcmV0dXJuZWQgaW4NCj4gPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBvZiBzdWNj ZXNzLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCAgRUZJX1NVQ0NFU1MgIFRoZSBjaGlsZCB3 YXMgY3JlYXRlZCBhbmQgdGhlIHByb3RvY29sDQo+IG9wZW5lZC4NCj4gPiA+ICsgIEByZXR2YWwg IE90aGVycyAgICAgICBFaXRoZXIgdGhlIGNyZWF0aW9uIG9mIHRoZSBjaGlsZCBvciB0aGUNCj4g b3BlbmluZw0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBwcm90b2NvbCBm YWlsZWQuDQo+ID4gPiArKiovDQo+ID4gPiArU1RBVElDDQo+ID4gPiArRUZJX1NUQVRVUw0KPiA+ ID4gK0NyZWF0ZVNlcnZpY2VDaGlsZEFuZE9wZW5Qcm90b2NvbCAoDQo+ID4gPiArICBJTiAgIEVG SV9IQU5ETEUgIENvbnRyb2xsZXJIYW5kbGUsDQo+ID4gPiArICBJTiAgIEVGSV9HVUlEICAgICpT ZXJ2aWNlQmluZGluZ1Byb3RvY29sR3VpZCwNCj4gPiA+ICsgIElOICAgRUZJX0dVSUQgICAgKlBy b3RvY29sR3VpZCwNCj4gPiA+ICsgIE9VVCAgRUZJX0hBTkRMRSAgKkNoaWxkSGFuZGxlLA0KPiA+ ID4gKyAgT1VUICBWT0lEICAgICAgICAqKkludGVyZmFjZQ0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sN Cj4gPiA+ICsgIEVGSV9TVEFUVVMgIFN0YXR1czsNCj4gPiA+ICsNCj4gPiA+ICsgICpDaGlsZEhh bmRsZSA9IE5VTEw7DQo+ID4gPiArICBTdGF0dXMgPSBOZXRMaWJDcmVhdGVTZXJ2aWNlQ2hpbGQg KA0KPiA+ID4gKyAgICAgICAgICAgICBDb250cm9sbGVySGFuZGxlLA0KPiA+ID4gKyAgICAgICAg ICAgICBnSW1hZ2VIYW5kbGUsDQo+ID4gPiArICAgICAgICAgICAgIFNlcnZpY2VCaW5kaW5nUHJv dG9jb2xHdWlkLA0KPiA+ID4gKyAgICAgICAgICAgICBDaGlsZEhhbmRsZQ0KPiA+ID4gKyAgICAg ICAgICAgICApOw0KPiA+ID4gKyAgaWYgKCFFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiA+ICsg ICAgU3RhdHVzID0gZ0JTLT5PcGVuUHJvdG9jb2wgKA0KPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgKkNoaWxkSGFuZGxlLA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgUHJvdG9jb2xHdWlk LA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgSW50ZXJmYWNlLA0KPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgZ0ltYWdlSGFuZGxlLA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgQ29u dHJvbGxlckhhbmRsZSwNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgIEVGSV9PUEVOX1BST1RP Q09MX0dFVF9QUk9UT0NPTA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgKTsNCj4gPiA+ICsg ICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ID4gKyAgICAgIE5ldExpYkRlc3Ryb3lT ZXJ2aWNlQ2hpbGQgKA0KPiA+ID4gKyAgICAgICAgQ29udHJvbGxlckhhbmRsZSwNCj4gPiA+ICsg ICAgICAgIGdJbWFnZUhhbmRsZSwNCj4gPiA+ICsgICAgICAgIFNlcnZpY2VCaW5kaW5nUHJvdG9j b2xHdWlkLA0KPiA+ID4gKyAgICAgICAgKkNoaWxkSGFuZGxlDQo+ID4gPiArICAgICAgICApOw0K PiA+ID4gKyAgICAgICpDaGlsZEhhbmRsZSA9IE5VTEw7DQo+ID4gPiArICAgIH0NCj4gPiA+ICsg IH0NCj4gPiA+ICsNCj4gPiA+ICsgIHJldHVybiBTdGF0dXM7DQo+ID4gPiArfQ0KPiA+ID4gKw0K PiA+ID4gKy8qKg0KPiA+ID4gKyAgQ2xvc2UgdGhlIHByb3RvY29sIGlkZW50aWZpZWQgYnkgaXRz IEdVSUQgb24gdGhlIGNoaWxkIGhhbmRsZSBvZg0KPiB0aGUNCj4gPiBzZXJ2aWNlDQo+ID4gPiAr ICBpZGVudGlmaWVkIGJ5IGl0cyBzZXJ2aWNlIGJpbmRpbmcgcHJvdG9jb2wgR1VJRCwgdGhlbiBk ZXN0cm95IHRoZQ0KPiBjaGlsZA0KPiA+ID4gKyAgaGFuZGxlLg0KPiA+ID4gKw0KPiA+ID4gKyAg QHBhcmFtW2luXSAgQ29udHJvbGxlckhhbmRsZSAgICAgICAgICAgIENvbnRyb2xsZXIgaGFuZGxl Lg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgU2VydmljZUJpbmRpbmdQcm90b2NvbEd1aWQgIFNlcnZp Y2UgYmluZGluZyBwcm90b2NvbA0KPiBHVUlEDQo+ID4gb2YgdGhlDQo+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZSB0byBiZSBkZXN0cm95ZWQu DQo+ID4gPiArICBAcGFyYW1baW5dICBQcm90b2NvbEd1aWQgICAgICAgICAgICAgICAgR1VJRCBv ZiB0aGUgcHJvdG9jb2wgdG8gYmUNCj4gY2xvc2VkLg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgQ2hp bGRIYW5kbGUgICAgICAgICAgICAgICAgIEhhbmRsZSBvZiB0aGUgY2hpbGQgdG8gYmUNCj4gZGVz dHJveWVkLg0KPiA+ID4gKyoqLw0KPiA+ID4gK1NUQVRJQw0KPiA+ID4gK1ZPSUQNCj4gPiA+ICtD bG9zZVByb3RvY29sQW5kRGVzdHJveVNlcnZpY2VDaGlsZCAoDQo+ID4gPiArICBJTiAgRUZJX0hB TkRMRSAgQ29udHJvbGxlckhhbmRsZSwNCj4gPiA+ICsgIElOICBFRklfR1VJRCAgICAqU2Vydmlj ZUJpbmRpbmdQcm90b2NvbEd1aWQsDQo+ID4gPiArICBJTiAgRUZJX0dVSUQgICAgKlByb3RvY29s R3VpZCwNCj4gPiA+ICsgIElOICBFRklfSEFORExFICBDaGlsZEhhbmRsZQ0KPiA+ID4gKyAgKQ0K PiA+ID4gK3sNCj4gPiA+ICsgIGdCUy0+Q2xvc2VQcm90b2NvbCAoDQo+ID4gPiArICAgICAgICAg Q2hpbGRIYW5kbGUsDQo+ID4gPiArICAgICAgICAgUHJvdG9jb2xHdWlkLA0KPiA+ID4gKyAgICAg ICAgIGdJbWFnZUhhbmRsZSwNCj4gPiA+ICsgICAgICAgICBDb250cm9sbGVySGFuZGxlDQo+ID4g PiArICAgICAgICAgKTsNCj4gPiA+ICsNCj4gPiA+ICsgIE5ldExpYkRlc3Ryb3lTZXJ2aWNlQ2hp bGQgKA0KPiA+ID4gKyAgICBDb250cm9sbGVySGFuZGxlLA0KPiA+ID4gKyAgICBnSW1hZ2VIYW5k bGUsDQo+ID4gPiArICAgIFNlcnZpY2VCaW5kaW5nUHJvdG9jb2xHdWlkLA0KPiA+ID4gKyAgICBD aGlsZEhhbmRsZQ0KPiA+ID4gKyAgICApOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioN Cj4gPiA+ICsgIFdhaXQgdW50aWwgb3BlcmF0aW9uIGNvbXBsZXRlcy4gQ29tcGxldGlvbiBpcyBp bmRpY2F0ZWQgYnkNCj4gPiA+ICsgIHNldHRpbmcgb2YgYW4gYXBwcm9wcmlhdGUgdmFyaWFibGUu DQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dICAgICAgQ29udGV4dCAgICAgICAgICAgICBB IHBvaW50ZXIgdG8gdGhlIEhUVFAgZG93bmxvYWQNCj4gY29udGV4dC4NCj4gPiA+ICsgIEBwYXJh bVtpbiwgb3V0XSAgQ2FsbEJhY2tDb21wbGV0ZSAgIEEgcG9pbnRlciB0byB0aGUgY2FsbGJhY2sN Cj4gY29tcGxldGlvbg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdmFyaWFibGUgc2V0IGJ5IHRoZSBjYWxsYmFjay4NCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR2 YWwgIEVGSV9TVUNDRVNTICAgICAgICAgICAgICAgIENhbGxiYWNrIHNpZ25hbGxlZCBjb21wbGV0 aW9uLg0KPiA+ID4gKyAgQHJldHZhbCAgRUZJX1RJTUVPVVQgICAgICAgICAgICAgICAgVGltZWQg b3V0IHdhaXRpbmcgZm9yDQo+IGNvbXBsZXRpb24uDQo+ID4gPiArICBAcmV0dmFsICBPdGhlcnMg ICAgICAgICAgICAgICAgICAgICBFcnJvciB3YWl0aW5nIGZvciBjb21wbGV0aW9uLg0KPiA+ID4g KyoqLw0KPiA+ID4gK1NUQVRJQw0KPiA+ID4gK0VGSV9TVEFUVVMNCj4gPiA+ICtXYWl0Rm9yQ29t cGxldGlvbiAoDQo+ID4gPiArICBJTiBIVFRQX0RPV05MT0FEX0NPTlRFWFQgICpDb250ZXh0LA0K PiA+ID4gKyAgSU4gT1VUIEJPT0xFQU4gICAgICAgICAgICAqQ2FsbEJhY2tDb21wbGV0ZQ0KPiA+ ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgU3Rh dHVzOw0KPiA+ID4gKyAgRUZJX0VWRU5UICAgICAgICAgICAgICAgICBXYWl0RXZ0Ow0KPiA+ID4g Kw0KPiA+ID4gKyAgU3RhdHVzID0gRUZJX1NVQ0NFU1M7DQo+ID4gPiArDQo+ID4gPiArICAvLw0K PiA+ID4gKyAgLy8gVXNlIGEgdGltZXIgdG8gbWVhc3VyZSB0aW1lb3V0LiBDYW5ub3QgdXNlIFN0 YWxsIGhlcmUhDQo+ID4gPiArICAvLw0KPiA+ID4gKyAgU3RhdHVzID0gZ0JTLT5DcmVhdGVFdmVu dCAoDQo+ID4gPiArICAgICAgICAgICAgICAgICAgRVZUX1RJTUVSLA0KPiA+ID4gKyAgICAgICAg ICAgICAgICAgIFRQTF9DQUxMQkFDSywNCj4gPiA+ICsgICAgICAgICAgICAgICAgICBOVUxMLA0K PiA+ID4gKyAgICAgICAgICAgICAgICAgIE5VTEwsDQo+ID4gPiArICAgICAgICAgICAgICAgICAg JldhaXRFdnQNCj4gPiA+ICsgICAgICAgICAgICAgICAgICApOw0KPiA+ID4gKyAgIEFTU0VSVF9F RklfRVJST1IgKFN0YXR1cyk7DQo+ID4gPiArDQo+ID4gPiArICAgaWYgKCFFRklfRVJST1IgKFN0 YXR1cykpIHsNCj4gPiA+ICsgICAgIFN0YXR1cyA9IGdCUy0+U2V0VGltZXIgKA0KPiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgIFdhaXRFdnQsDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAg VGltZXJSZWxhdGl2ZSwNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICBFRklfVElNRVJfUEVS SU9EX1NFQ09ORFMgKFRJTUVSX01BWF9USU1FT1VUX1MpDQo+ID4gPiArICAgICAgICAgICAgICAg ICAgICAgKTsNCj4gPiA+ICsNCj4gPiA+ICsgICAgIEFTU0VSVF9FRklfRVJST1IgKFN0YXR1cyk7 DQo+ID4gPiArICAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgd2hpbGUgKCEgKkNhbGxCYWNrQ29tcGxl dGUNCj4gPiA+ICsgICAgICAmJiAoIUVGSV9FUlJPUiAoU3RhdHVzKSkNCj4gPiA+ICsgICAgICAm JiBFRklfRVJST1IgKGdCUy0+Q2hlY2tFdmVudCAoV2FpdEV2dCkpKQ0KPiA+ID4gKyAgew0KPiA+ ID4gKyAgICBTdGF0dXMgPSBDb250ZXh0LT5IdHRwLT5Qb2xsIChDb250ZXh0LT5IdHRwKTsNCj4g PiA+ICsgICAgaWYgKCFDb250ZXh0LT5Db250ZW50RG93bmxvYWRlZA0KPiA+ID4gKyAgICAgJiYg Q2FsbEJhY2tDb21wbGV0ZSA9PSAmZ1Jlc3BvbnNlQ2FsbGJhY2tDb21wbGV0ZSkNCj4gPiA+ICsg ICAgew0KPiA+ID4gKyAgICAgIC8vDQo+ID4gPiArICAgICAgLy8gQW4gSFRUUCBzZXJ2ZXIgbWF5 IGp1c3Qgc2VuZCBhIHJlc3BvbnNlIHJlZGlyZWN0aW9uIGhlYWRlci4NCj4gPiA+ICsgICAgICAv LyBJbiB0aGlzIGNhc2UsIGRvbid0IHdhaXQgZm9yIHRoZSBldmVudCBhcw0KPiA+ID4gKyAgICAg IC8vIGl0IG1pZ2h0IG5ldmVyIGhhcHBlbiBhbmQgd2Ugd2FzdGUgMTBzIHdhaXRpbmcuDQo+ID4g PiArICAgICAgLy8gTm90ZSB0aGF0IGF0IHRoaXMgcG9pbnQgUmVzcG9uc2UgbWF5IG5vdCBoYXMg YmVlbiBwb3B1bGF0ZWQsDQo+ID4gPiArICAgICAgLy8gc28gaXQgbmVlZHMgdG8gYmUgY2hlY2tl ZCBmaXJzdC4NCj4gPiA+ICsgICAgICAvLw0KPiA+ID4gKyAgICAgIGlmIChDb250ZXh0LT5SZXNw b25zZVRva2VuLk1lc3NhZ2UNCj4gPiA+ICsgICAgICAgJiYgQ29udGV4dC0+UmVzcG9uc2VUb2tl bi5NZXNzYWdlLT5EYXRhLlJlc3BvbnNlDQo+ID4gPiArICAgICAgICYmIChORUVEX1JFRElSRUNU SU9OICgNCj4gPiA+ICsgICAgICAgICAgICBDb250ZXh0LT5SZXNwb25zZVRva2VuLk1lc3NhZ2Ut PkRhdGEuUmVzcG9uc2UtPlN0YXR1c0NvZGUNCj4gPiA+ICsgICAgICAgICAgICApDQo+ID4gPiAr ICAgICAgICAgKSkNCj4gPiA+ICsgICAgICB7DQo+ID4gPiArICAgICAgICBicmVhazsNCj4gPiA+ ICsgICAgICB9DQo+ID4gPiArICAgIH0NCj4gPiA+ICsgIH0NCj4gPiA+ICsNCj4gPiA+ICsgIGdC Uy0+U2V0VGltZXIgKFdhaXRFdnQsIFRpbWVyQ2FuY2VsLCAwKTsNCj4gPiA+ICsgIGdCUy0+Q2xv c2VFdmVudCAoV2FpdEV2dCk7DQo+ID4gPiArDQo+ID4gPiArICBpZiAoKkNhbGxCYWNrQ29tcGxl dGUpIHsNCj4gPiA+ICsgICAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+ID4gKyAgfQ0KPiA+ID4g Kw0KPiA+ID4gKyAgaWYgKCFFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiA+ICsgICAgU3RhdHVz ID0gRUZJX1RJTUVPVVQ7DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ID4gPiArICByZXR1cm4gU3Rh dHVzOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIEdlbmVyYXRlIGFu ZCBzZW5kIGEgcmVxdWVzdCB0byB0aGUgaHR0cCBzZXJ2ZXIuDQo+ID4gPiArDQo+ID4gPiArICBA cGFyYW1baW5dICAgQ29udGV4dCAgICAgICAgICAgSFRUUCBkb3dubG9hZCBjb250ZXh0Lg0KPiA+ ID4gKyAgQHBhcmFtW2luXSAgIERvd25sb2FkVXJsICAgICAgIEZ1bGx5IHF1YWxpZmllZCBVUkwg dG8gYmUNCj4gZG93bmxvYWRlZC4NCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NF U1MgICAgICAgICAgICBSZXF1ZXN0IGhhcyBiZWVuIHNlbnQgc3VjY2Vzc2Z1bGx5Lg0KPiA+ID4g KyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgIEludmFsaWQgVVJMLg0KPiA+ID4gKyAg QHJldHZhbCBFRklfT1VUX09GX1JFU09VUkNFUyAgIE91dCBvZiBtZW1vcnkuDQo+ID4gPiArICBA cmV0dmFsIEVGSV9ERVZJQ0VfRVJST1IgICAgICAgSWYgSFRUUFMgaXMgdXNlZCwgdGhpcyBwcm9i YWJseQ0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lYW5zIHRoYXQg VExTIHN1cHBvcnQgZWl0aGVyIHdhcw0KPiBub3QNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbnN0YWxsZWQgb3Igbm90IGNvbmZpZ3VyZWQuDQo+ID4gPiArICBAcmV0 dmFsIE90aGVycyAgICAgICAgICAgICAgICAgRXJyb3Igc2VuZGluZyB0aGUgcmVxdWVzdC4NCj4g PiA+ICsqKi8NCj4gPiA+ICtTVEFUSUMNCj4gPiA+ICtFRklfU1RBVFVTDQo+ID4gPiArU2VuZFJl cXVlc3QgKA0KPiA+ID4gKyAgSU4gSFRUUF9ET1dOTE9BRF9DT05URVhUICAqQ29udGV4dCwNCj4g PiA+ICsgIElOIENIQVIxNiAgICAgICAgICAgICAgICAgKkRvd25sb2FkVXJsDQo+ID4gPiArICAp DQo+ID4gPiArew0KPiA+ID4gKyAgRUZJX0hUVFBfUkVRVUVTVF9EQVRBICAgICAgIFJlcXVlc3RE YXRhOw0KPiA+ID4gKyAgRUZJX0hUVFBfSEVBREVSICAgICAgICAgICAgIFJlcXVlc3RIZWFkZXJb SGRyTWF4XTsNCj4gPiA+ICsgIEVGSV9IVFRQX01FU1NBR0UgICAgICAgICAgICBSZXF1ZXN0TWVz c2FnZTsNCj4gPiA+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ID4g PiArICBDSEFSMTYgICAgICAgICAgICAgICAgICAgICAgKkhvc3Q7DQo+ID4gPiArICBVSU5UTiAg ICAgICAgICAgICAgICAgICAgICAgU3RyaW5nU2l6ZTsNCj4gPiA+ICsNCj4gPiA+ICsgIFplcm9N ZW0gKCZSZXF1ZXN0RGF0YSwgc2l6ZW9mIChSZXF1ZXN0RGF0YSkpOw0KPiA+ID4gKyAgWmVyb01l bSAoJlJlcXVlc3RIZWFkZXIsIHNpemVvZiAoUmVxdWVzdEhlYWRlcikpOw0KPiA+ID4gKyAgWmVy b01lbSAoJlJlcXVlc3RNZXNzYWdlLCBzaXplb2YgKFJlcXVlc3RNZXNzYWdlKSk7DQo+ID4gPiAr ICBaZXJvTWVtICgmQ29udGV4dC0+UmVxdWVzdFRva2VuLCBzaXplb2YgKENvbnRleHQtDQo+ID4g PlJlcXVlc3RUb2tlbikpOw0KPiA+ID4gKw0KPiA+ID4gKyAgUmVxdWVzdEhlYWRlcltIZHJIb3N0 XS5GaWVsZE5hbWUgPSAiSG9zdCI7DQo+ID4gPiArICBSZXF1ZXN0SGVhZGVyW0hkckNvbm5dLkZp ZWxkTmFtZSA9ICJDb25uZWN0aW9uIjsNCj4gPiA+ICsgIFJlcXVlc3RIZWFkZXJbSGRyQWdlbnRd LkZpZWxkTmFtZSA9ICJVc2VyLUFnZW50IjsNCj4gPiA+ICsNCj4gPiA+ICsgIEhvc3QgPSAoQ0hB UjE2ICopQ29udGV4dC0+U2VydmVyQWRkckFuZFByb3RvOw0KPiA+ID4gKyAgd2hpbGUgKCpIb3N0 ICE9IENIQVJfTlVMTCAmJiAqSG9zdCAhPSBMJy8nKSB7DQo+ID4gPiArICAgIEhvc3QrKzsNCj4g PiA+ICsgIH0NCj4gPiA+ICsNCj4gPiA+ICsgIGlmICgqSG9zdCA9PSBDSEFSX05VTEwpIHsNCj4g PiA+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPiA+ICsgIH0NCj4gPiA+ ICsNCj4gPiA+ICsgIC8vDQo+ID4gPiArICAvLyBHZXQgdGhlIG5leHQgc2xhc2guDQo+ID4gPiAr ICAvLw0KPiA+ID4gKyAgSG9zdCsrOw0KPiA+ID4gKyAgLy8NCj4gPiA+ICsgIC8vIEFuZCBub3cg dGhlIGhvc3QgbmFtZS4NCj4gPiA+ICsgIC8vDQo+ID4gPiArICBIb3N0Kys7DQo+ID4gPiArDQo+ ID4gPiArICBTdHJpbmdTaXplID0gU3RyTGVuIChIb3N0KSArIDE7DQo+ID4gPiArICBSZXF1ZXN0 SGVhZGVyW0hkckhvc3RdLkZpZWxkVmFsdWUgPSBBbGxvY2F0ZVBvb2wgKFN0cmluZ1NpemUpOw0K PiA+ID4gKyAgaWYgKCFSZXF1ZXN0SGVhZGVyW0hkckhvc3RdLkZpZWxkVmFsdWUpIHsNCj4gPiA+ ICsgICAgcmV0dXJuIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0K PiA+ID4gKyAgVW5pY29kZVN0clRvQXNjaWlTdHJTICgNCj4gPiA+ICsgICAgSG9zdCwNCj4gPiA+ ICsgICAgUmVxdWVzdEhlYWRlcltIZHJIb3N0XS5GaWVsZFZhbHVlLA0KPiA+ID4gKyAgICBTdHJp bmdTaXplDQo+ID4gPiArICAgICk7DQo+ID4gPiArDQo+ID4gPiArICBSZXF1ZXN0SGVhZGVyW0hk ckNvbm5dLkZpZWxkVmFsdWUgPSAiY2xvc2UiOw0KPiA+ID4gKyAgUmVxdWVzdEhlYWRlcltIZHJB Z2VudF0uRmllbGRWYWx1ZSA9IFVTRVJfQUdFTlRfSERSOw0KPiA+ID4gKyAgUmVxdWVzdE1lc3Nh Z2UuSGVhZGVyQ291bnQgPSBIZHJNYXg7DQo+ID4gPiArDQo+ID4gPiArICBSZXF1ZXN0RGF0YS5N ZXRob2QgPSBIdHRwTWV0aG9kR2V0Ow0KPiA+ID4gKyAgUmVxdWVzdERhdGEuVXJsID0gRG93bmxv YWRVcmw7DQo+ID4gPiArDQo+ID4gPiArICBSZXF1ZXN0TWVzc2FnZS5EYXRhLlJlcXVlc3QgPSAm UmVxdWVzdERhdGE7DQo+ID4gPiArICBSZXF1ZXN0TWVzc2FnZS5IZWFkZXJzID0gUmVxdWVzdEhl YWRlcjsNCj4gPiA+ICsgIFJlcXVlc3RNZXNzYWdlLkJvZHlMZW5ndGggPSAwOw0KPiA+ID4gKyAg UmVxdWVzdE1lc3NhZ2UuQm9keSA9IE5VTEw7DQo+ID4gPiArICBDb250ZXh0LT5SZXF1ZXN0VG9r ZW4uRXZlbnQgPSBOVUxMOw0KPiA+ID4gKw0KPiA+ID4gKyAgLy8NCj4gPiA+ICsgIC8vIENvbXBs ZXRpb24gY2FsbGJhY2sgZXZlbnQgdG8gYmUgc2V0IHdoZW4gUmVxdWVzdCBjb21wbGV0ZXMuDQo+ ID4gPiArICAvLw0KPiA+ID4gKyAgU3RhdHVzID0gZ0JTLT5DcmVhdGVFdmVudCAoDQo+ID4gPiAr ICAgICAgICAgICAgICAgICAgRVZUX05PVElGWV9TSUdOQUwsDQo+ID4gPiArICAgICAgICAgICAg ICAgICAgVFBMX0NBTExCQUNLLA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgIFJlcXVlc3RDYWxs YmFjaywNCj4gPiA+ICsgICAgICAgICAgICAgICAgICBDb250ZXh0LA0KPiA+ID4gKyAgICAgICAg ICAgICAgICAgICZDb250ZXh0LT5SZXF1ZXN0VG9rZW4uRXZlbnQNCj4gPiA+ICsgICAgICAgICAg ICAgICAgICApOw0KPiA+ID4gKyAgQVNTRVJUX0VGSV9FUlJPUiAoU3RhdHVzKTsNCj4gPiA+ICsN Cj4gPiA+ICsgIENvbnRleHQtPlJlcXVlc3RUb2tlbi5TdGF0dXMgPSBFRklfU1VDQ0VTUzsNCj4g PiA+ICsgIENvbnRleHQtPlJlcXVlc3RUb2tlbi5NZXNzYWdlID0gJlJlcXVlc3RNZXNzYWdlOw0K PiA+ID4gKyAgZ1JlcXVlc3RDYWxsYmFja0NvbXBsZXRlID0gRkFMU0U7DQo+ID4gPiArICBTdGF0 dXMgPSBDb250ZXh0LT5IdHRwLT5SZXF1ZXN0IChDb250ZXh0LT5IdHRwLCAmQ29udGV4dC0NCj4g PiA+UmVxdWVzdFRva2VuKTsNCj4gPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4g PiA+ICsgICAgZ290byBFcnJvcjsNCj4gPiA+ICsgIH0NCj4gPiA+ICsNCj4gPiA+ICsgIFN0YXR1 cyA9IFdhaXRGb3JDb21wbGV0aW9uIChDb250ZXh0LCAmZ1JlcXVlc3RDYWxsYmFja0NvbXBsZXRl KTsNCj4gPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiA+ICsgICAgQ29udGV4 dC0+SHR0cC0+Q2FuY2VsIChDb250ZXh0LT5IdHRwLCAmQ29udGV4dC0+UmVxdWVzdFRva2VuKTsN Cj4gPiA+ICsgIH0NCj4gPiA+ICsNCj4gPiA+ICtFcnJvcjoNCj4gPiA+ICsgIFNIRUxMX0ZSRUVf Tk9OX05VTEwgKFJlcXVlc3RIZWFkZXJbSGRySG9zdF0uRmllbGRWYWx1ZSk7DQo+ID4gPiArICBp ZiAoQ29udGV4dC0+UmVxdWVzdFRva2VuLkV2ZW50KSB7DQo+ID4gPiArICAgIGdCUy0+Q2xvc2VF dmVudCAoQ29udGV4dC0+UmVxdWVzdFRva2VuLkV2ZW50KTsNCj4gPiA+ICsgICAgWmVyb01lbSAo JkNvbnRleHQtPlJlcXVlc3RUb2tlbiwgc2l6ZW9mIChDb250ZXh0LQ0KPiA+ID5SZXF1ZXN0VG9r ZW4pKTsNCj4gPiA+ICsgIH0NCj4gPiA+ICsNCj4gPiA+ICsgIHJldHVybiBTdGF0dXM7DQo+ID4g PiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgVXBkYXRlIHRoZSBwcm9ncmVzcyBv ZiBhIGZpbGUgZG93bmxvYWQNCj4gPiA+ICsgIFRoaXMgcHJvY2VkdXJlIGlzIGNhbGxlZCBlYWNo IHRpbWUgYSBuZXcgSFRUUCBib2R5IHBvcnRpb24gaXMNCj4gcmVjZWl2ZWQuDQo+ID4gPiArDQo+ ID4gPiArICBAcGFyYW1baW5dICBDb250ZXh0ICAgICAgSFRUUCBkb3dubG9hZCBjb250ZXh0Lg0K PiA+ID4gKyAgQHBhcmFtW2luXSAgRG93bmxvYWRMZW4gIFBvcnRpb24gc2l6ZSwgaW4gYnl0ZXMu DQo+ID4gPiArICBAcGFyYW1baW5dICBCdWZmZXIgICAgICAgVGhlIHBvaW50ZXIgdG8gdGhlIHBh cnNlZCBidWZmZXIuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsICBFRklfU1VDQ0VTUyAgICAg UG9ydGlvbiBzYXZlZC4NCj4gPiA+ICsgIEByZXR2YWwgIE90aGVyICAgICAgICAgICBFcnJvciBz YXZpbmcgdGhlIHBvcnRpb24uDQo+ID4gPiArKiovDQo+ID4gPiArU1RBVElDDQo+ID4gPiArRUZJ X1NUQVRVUw0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK1NhdmVQb3J0aW9uICgNCj4gPiA+ICsgIElO IEhUVFBfRE9XTkxPQURfQ09OVEVYVCAgKkNvbnRleHQsDQo+ID4gPiArICBJTiBVSU5UTiAgICAg ICAgICAgICAgICAgIERvd25sb2FkTGVuLA0KPiA+ID4gKyAgSU4gQ0hBUjggICAgICAgICAgICAg ICAgICAqQnVmZmVyDQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgQ0hBUjE2ICAgICAg ICAgICAgUHJvZ3Jlc3NbSFRUUF9QUk9HUkVTU19NRVNTQUdFX1NJWkVdOw0KPiA+ID4gKyAgVUlO VE4gICAgICAgICAgICAgTmJPZktiOw0KPiA+ID4gKyAgVUlOVE4gICAgICAgICAgICAgSW5kZXg7 DQo+ID4gPiArICBVSU5UTiAgICAgICAgICAgICBMYXN0U3RlcDsNCj4gPiA+ICsgIFVJTlROICAg ICAgICAgICAgIFN0ZXA7DQo+ID4gPiArICBFRklfU1RBVFVTICAgICAgICBTdGF0dXM7DQo+ID4g PiArDQo+ID4gPiArICBMYXN0U3RlcCA9IDA7DQo+ID4gPiArICBTdGVwID0gMDsNCj4gPiA+ICsN Cj4gPiA+ICsgIFNoZWxsU2V0RmlsZVBvc2l0aW9uIChtRmlsZUhhbmRsZSwgQ29udGV4dC0+TGFz dFJlcG9ydGVkTmJPZkJ5dGVzKTsNCj4gPiA+ICsgIFN0YXR1cyA9IFNoZWxsV3JpdGVGaWxlICht RmlsZUhhbmRsZSwgJkRvd25sb2FkTGVuLCBCdWZmZXIpOw0KPiA+ID4gKyAgaWYgKEVGSV9FUlJP UiAoU3RhdHVzKSkgew0KPiA+ID4gKyAgICBpZiAoQ29udGV4dC0+Q29udGVudERvd25sb2FkZWQg PiAwKSB7DQo+ID4gPiArICAgICAgUFJJTlRfSElJIChTVFJJTkdfVE9LRU4gKFNUUl9HRU5fQ1JM RiksIE5VTEwpOw0KPiA+ID4gKyAgICB9DQo+ID4gPiArDQo+ID4gPiArICAgIFBSSU5UX0hJSSAo U1RSSU5HX1RPS0VOIChTVFJfSFRUUF9FUlJfV1JJVEUpLCBtTG9jYWxGaWxlUGF0aCwNCj4gPiBT dGF0dXMpOw0KPiA+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0K PiA+ID4gKyAgaWYgKENvbnRleHQtPkNvbnRlbnREb3dubG9hZGVkID09IDApIHsNCj4gPiA+ICsg ICAgU2hlbGxQcmludEV4ICgtMSwgLTEsIEwiJXMgICAgICAgMCBLYiIsIEhUVFBfUFJPR1JfRlJB TUUpOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgQ29udGV4dC0+Q29udGVudERvd25s b2FkZWQgKz0gRG93bmxvYWRMZW47DQo+ID4gPiArICBOYk9mS2IgPSBDb250ZXh0LT5Db250ZW50 RG93bmxvYWRlZCA+PiAxMDsNCj4gPiA+ICsNCj4gPiA+ICsgIFByb2dyZXNzWzBdID0gTCdcMCc7 DQo+ID4gPiArICBpZiAoQ29udGV4dC0+Q29udGVudExlbmd0aCkgew0KPiA+ID4gKyAgICBMYXN0 U3RlcCAgPSAoQ29udGV4dC0+TGFzdFJlcG9ydGVkTmJPZkJ5dGVzICoNCj4gPiA+IEhUVFBfUFJP R1JFU1NfU0xJREVSX1NURVBTKSAvDQo+ID4gPiArICAgICAgICAgICAgICAgICBDb250ZXh0LT5D b250ZW50TGVuZ3RoOw0KPiA+ID4gKyAgICBTdGVwICAgICAgPSAoQ29udGV4dC0+Q29udGVudERv d25sb2FkZWQgKg0KPiA+IEhUVFBfUFJPR1JFU1NfU0xJREVSX1NURVBTKSAvDQo+ID4gPiArICAg ICAgICAgICAgICAgICBDb250ZXh0LT5Db250ZW50TGVuZ3RoOw0KPiA+ID4gKyAgfQ0KPiA+ID4g Kw0KPiA+ID4gKyAgQ29udGV4dC0+TGFzdFJlcG9ydGVkTmJPZkJ5dGVzID0gQ29udGV4dC0+Q29u dGVudERvd25sb2FkZWQ7DQo+ID4gPiArDQo+ID4gPiArICBpZiAoU3RlcCA8PSBMYXN0U3RlcCkg ew0KPiA+ID4gKyAgICBpZiAoIUNvbnRleHQtPkNvbnRlbnRMZW5ndGgpIHsNCj4gPiA+ICsgICAg ICAvLw0KPiA+ID4gKyAgICAgIC8vIFVwZGF0ZSBkb3dubG9hZGVkIHNpemUsIHRoZXJlIGlzIG5v IGxlbmd0aCBpbmZvIGF2YWlsYWJsZS4NCj4gPiA+ICsgICAgICAvLw0KPiA+ID4gKyAgICAgIFNo ZWxsUHJpbnRFeCAoLTEsIC0xLCBMIiVzIiwgSFRUUF9LQik7DQo+ID4gPiArICAgICAgU2hlbGxQ cmludEV4ICgtMSwgLTEsIEwiJTdkIEtiIiwgTmJPZktiKTsNCj4gPiA+ICsgICAgfQ0KPiA+ID4g Kw0KPiA+ID4gKyAgICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ ID4gPiArICBTaGVsbFByaW50RXggKC0xLCAtMSwgTCIlcyIsIEhUVFBfUFJPR1JFU1NfREVMKTsN Cj4gPiA+ICsNCj4gPiA+ICsgIFN0YXR1cyA9IFN0ckNweVMgKFByb2dyZXNzLCBIVFRQX1BST0dS RVNTX01FU1NBR0VfU0laRSwNCj4gPiA+IEhUVFBfUFJPR1JfRlJBTUUpOw0KPiA+ID4gKyAgaWYg KEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiA+ID4g KyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgZm9yIChJbmRleCA9IDE7IEluZGV4IDwgU3RlcDsgSW5k ZXgrKykgew0KPiA+ID4gKyAgICBQcm9ncmVzc1tJbmRleF0gPSBMJz0nOw0KPiA+ID4gKyAgfQ0K PiA+ID4gKw0KPiA+ID4gKyAgaWYgKFN0ZXApIHsNCj4gPiA+ICsgICAgUHJvZ3Jlc3NbU3RlcF0g PSBMJz4nOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgVW5pY29kZVNQcmludCAoDQo+ ID4gPiArICAgIFByb2dyZXNzICsgKHNpemVvZiAoSFRUUF9QUk9HUl9GUkFNRSkgLyBzaXplb2Yg KENIQVIxNikpIC0gMSwNCj4gPiA+ICsgICAgc2l6ZW9mIChQcm9ncmVzcykgLSBzaXplb2YgKEhU VFBfUFJPR1JfRlJBTUUpLA0KPiA+ID4gKyAgICBMIiAlN2QgS2IiLA0KPiA+ID4gKyAgICBOYk9m S2INCj4gPiA+ICsgICAgKTsNCj4gPiA+ICsNCj4gPiA+ICsNCj4gPiA+ICsgIFNoZWxsUHJpbnRF eCAoLTEsIC0xLCBMIiVzIiwgUHJvZ3Jlc3MpOw0KPiA+ID4gKw0KPiA+ID4gKyAgcmV0dXJuIEVG SV9TVUNDRVNTOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIFJlcGxh Y2UgdGhlIG9yaWdpbmFsIEhvc3QgYW5kIFVyaSB3aXRoIEhvc3QgYW5kIFVyaSByZXR1cm5lZCBi eSB0aGUNCj4gPiA+ICsgIEhUVFAgc2VydmVyIGluICdMb2NhdGlvbicgaGVhZGVyIChyZWRpcmVj dGlvbikuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dICAgTG9jYXRpb24gICAgICAgICAg IEEgcG9pbnRlciB0byB0aGUgJ0xvY2F0aW9uJyBzdHJpbmcNCj4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcHJvdmlkZWQgYnkgSFRUUCBzZXJ2ZXIuDQo+ID4gPiArICBA cGFyYW1baW5dICAgQ29udGV4dCAgICAgICAgICAgIEEgcG9pbnRlciB0byBIVFRQIGRvd25sb2Fk IGNvbnRleHQuDQo+ID4gPiArICBAcGFyYW1baW5dICAgRG93bmxvYWRVcmwgICAgICAgIEZ1bGx5 IHF1YWxpZmllZCBIVFRQIFVSTC4NCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR2YWwgIEVGSV9TVUND RVNTICAgICAgICAgICAgSG9zdCBhbmQgVXJpIHdlcmUgc3VjY2Vzc2Z1bGx5IHNldC4NCj4gPiA+ ICsgIEByZXR2YWwgIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICAgRXJyb3Igc2V0dGluZyBIb3N0IG9y IFVyaS4NCj4gPiA+ICsqKi8NCj4gPiA+ICtTVEFUSUMNCj4gPiA+ICtFRklfU1RBVFVTDQo+ID4g PiArU2V0SG9zdFVSSSAoDQo+ID4gPiArICBJTiBDSEFSOCAgICAgICAgICAgICAgICAgKkxvY2F0 aW9uLA0KPiA+ID4gKyAgSU4gSFRUUF9ET1dOTE9BRF9DT05URVhUICpDb250ZXh0LA0KPiA+ID4g KyAgSU4gQ0hBUjE2ICAgICAgICAgICAgICAgICpEb3dubG9hZFVybA0KPiA+ID4gKyAgKQ0KPiA+ ID4gK3sNCj4gPiA+ICsgIEVGSV9TVEFUVVMgICAgU3RhdHVzOw0KPiA+ID4gKyAgVUlOVE4gICAg ICAgICBTdHJpbmdTaXplOw0KPiA+ID4gKyAgVUlOVE4gICAgICAgICBGaXJzdFN0ZXA7DQo+ID4g PiArICBVSU5UTiAgICAgICAgIElkeDsNCj4gPiA+ICsgIFVJTlROICAgICAgICAgU3RlcDsNCj4g PiA+ICsgIENIQVI4ICAgICAgICAgKldhbGtlcjsNCj4gPiA+ICsgIENIQVIxNiAgICAgICAgKlRl bXA7DQo+ID4gPiArICBDSEFSOCAgICAgICAgICpUbXA7DQo+ID4gPiArICBDSEFSMTYgICAgICAg ICpVcmw7DQo+ID4gPiArICBCT09MRUFOICAgICAgIElzQWJFbXB0eVVybDsNCj4gPiA+ICsNCj4g PiA+ICsgIFRtcCA9IE5VTEw7DQo+ID4gPiArICBVcmwgPSBOVUxMOw0KPiA+ID4gKyAgSXNBYkVt cHR5VXJsID0gRkFMU0U7DQo+ID4gPiArICBGaXJzdFN0ZXAgPSAwOw0KPiA+ID4gKw0KPiA+ID4g KyAgU3RyaW5nU2l6ZSA9IChBc2NpaVN0clNpemUgKExvY2F0aW9uKSAqIHNpemVvZiAoQ0hBUjE2 KSk7DQo+ID4gPiArICBVcmwgPSBBbGxvY2F0ZVplcm9Qb29sIChTdHJpbmdTaXplKTsNCj4gPiA+ ICsgIGlmICghVXJsKSB7DQo+ID4gPiArICAgIHJldHVybiBFRklfT1VUX09GX1JFU09VUkNFUzsN Cj4gPiA+ICsgIH0NCj4gPiA+ICsNCj4gPiA+ICsgIFN0YXR1cyA9IEFzY2lpU3RyVG9Vbmljb2Rl U3RyUyAoDQo+ID4gPiArICAgICAgICAgICAgIChDT05TVCBDSEFSOCAqKUxvY2F0aW9uLA0KPiA+ ID4gKyAgICAgICAgICAgICBVcmwsDQo+ID4gPiArICAgICAgICAgICAgIFN0cmluZ1NpemUNCj4g PiA+ICsgICAgICAgICAgICAgKTsNCj4gPiA+ICsNCj4gPiA+ICsgIGlmIChFRklfRVJST1IgKFN0 YXR1cykpIHsNCj4gPiA+ICsgICAgICAgIGdvdG8gRXJyb3I7DQo+ID4gPiArICB9DQo+ID4gPiAr DQo+ID4gPiArICAvLw0KPiA+ID4gKyAgLy8gSWYgYW4gSFRUUCBzZXJ2ZXIgcmVkaXJlY3RzIHRv IHRoZSBzYW1lIGxvY2F0aW9uIG1vcmUgdGhhbiBvbmNlLA0KPiA+ID4gKyAgLy8gdGhlbiBzdG9w IGF0dGVtcHRzIGFuZCB0ZWxsIGl0IGlzIG5vdCByZWFjaGFibGUuDQo+ID4gPiArICAvLw0KPiA+ ID4gKyAgaWYgKCFTdHJDbXAgKFVybCwgRG93bmxvYWRVcmwpKSB7DQo+ID4gPiArICAgIFN0YXR1 cyA9IEVGSV9OT19NQVBQSU5HOw0KPiA+ID4gKyAgICBnb3RvIEVycm9yOw0KPiA+ID4gKyAgfQ0K PiA+ID4gKw0KPiA+ID4gKyAgaWYgKEFzY2lpU3RyTGVuIChMb2NhdGlvbikgPiAyKSB7DQo+ID4g PiArICAgIC8vDQo+ID4gPiArICAgIC8vIFNvbWUgc2VydmVycyByZXR1cm4gJ0xvY2F0aW9uOiAv L3NlcnZlci9yZXNvdXJjZScNCj4gPiA+ICsgICAgLy8NCj4gPiA+ICsgICAgSXNBYkVtcHR5VXJs ID0gKExvY2F0aW9uWzBdID09ICcvJykgJiYgKExvY2F0aW9uWzFdID09ICcvJyk7DQo+ID4gPiAr ICAgIGlmIChJc0FiRW1wdHlVcmwpIHsNCj4gPiA+ICsgICAgICAvLw0KPiA+ID4gKyAgICAgIC8v IFNraXAgZmlyc3QgIi8vIg0KPiA+ID4gKyAgICAgIC8vDQo+ID4gPiArICAgICAgTG9jYXRpb24g Kz0gMjsNCj4gPiA+ICsgICAgICBGaXJzdFN0ZXAgPSAxOw0KPiA+ID4gKyAgICB9DQo+ID4gPiAr ICB9DQo+ID4gPiArDQo+ID4gPiArICBpZiAoQXNjaWlTdHJTdHIgKExvY2F0aW9uLCAiOi8vIikg fHwgSXNBYkVtcHR5VXJsKSB7DQo+ID4gPiArICAgIElkeCA9IDA7DQo+ID4gPiArICAgIFdhbGtl ciA9IExvY2F0aW9uOw0KPiA+ID4gKw0KPiA+ID4gKyAgICBmb3IgKFN0ZXAgPSBGaXJzdFN0ZXA7 IFN0ZXAgPCAyOyBTdGVwKyspIHsNCj4gPiA+ICsgICAgICBmb3IgKDsgKldhbGtlciAhPSAnLycg JiYgKldhbGtlciAhPSAnXDAnOyBXYWxrZXIrKykgew0KPiA+ID4gKyAgICAgICAgSWR4Kys7DQo+ ID4gPiArICAgICAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgICAgIGlmICghU3RlcCkgew0KPiA+ID4g KyAgICAgICAgLy8NCj4gPiA+ICsgICAgICAgIC8vIFNraXAgIi8vIg0KPiA+ID4gKyAgICAgICAg Ly8NCj4gPiA+ICsgICAgICAgIElkeCArPSAyOw0KPiA+ID4gKyAgICAgICAgV2Fsa2VyICs9IDI7 DQo+ID4gPiArICAgICAgfQ0KPiA+ID4gKyAgICB9DQo+ID4gPiArDQo+ID4gPiArICAgIFRtcCA9 IEFsbG9jYXRlWmVyb1Bvb2wgKElkeCArIDEpOw0KPiA+ID4gKyAgICBpZiAoIVRtcCkgew0KPiA+ ID4gKyAgICAgIFN0YXR1cyA9IEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiA+ID4gKyAgICAgIGdv dG8gRXJyb3I7DQo+ID4gPiArICAgIH0NCj4gPiA+ICsNCj4gPiA+ICsgICAgQ29weU1lbSAoVG1w LCBMb2NhdGlvbiwgSWR4KTsNCj4gPiA+ICsNCj4gPiA+ICsgICAgLy8NCj4gPiA+ICsgICAgLy8g TG9jYXRpb24gbm93IHBvaW50cyB0byBVcmkNCj4gPiA+ICsgICAgLy8NCj4gPiA+ICsgICAgTG9j YXRpb24gKz0gSWR4Ow0KPiA+ID4gKyAgICBTdHJpbmdTaXplID0gKElkeCArIDEpICogc2l6ZW9m IChDSEFSMTYpOw0KPiA+ID4gKw0KPiA+ID4gKyAgICBTSEVMTF9GUkVFX05PTl9OVUxMIChDb250 ZXh0LT5TZXJ2ZXJBZGRyQW5kUHJvdG8pOw0KPiA+ID4gKw0KPiA+ID4gKyAgICBUZW1wID0gQWxs b2NhdGVaZXJvUG9vbCAoU3RyaW5nU2l6ZSk7DQo+ID4gPiArICAgIGlmICghVGVtcCkgew0KPiA+ ID4gKyAgICAgIFN0YXR1cyA9IEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiA+ID4gKyAgICAgIGdv dG8gRXJyb3I7DQo+ID4gPiArICAgIH0NCj4gPiA+ICsNCj4gPiA+ICsgICAgU3RhdHVzID0gQXNj aWlTdHJUb1VuaWNvZGVTdHJTICgNCj4gPiA+ICsgICAgICAgICAgICAgICAoQ09OU1QgQ0hBUjgg KilUbXAsDQo+ID4gPiArICAgICAgICAgICAgICAgVGVtcCwNCj4gPiA+ICsgICAgICAgICAgICAg ICBTdHJpbmdTaXplDQo+ID4gPiArICAgICAgICAgICAgICAgKTsNCj4gPiA+ICsgICAgaWYgKEVG SV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ID4gKyAgICAgIFNIRUxMX0ZSRUVfTk9OX05VTEwgKFRl bXApOw0KPiA+ID4gKyAgICAgIGdvdG8gRXJyb3I7DQo+ID4gPiArICAgIH0NCj4gPiA+ICsNCj4g PiA+ICsgICAgSWR4ID0gMDsNCj4gPiA+ICsgICAgaWYgKElzQWJFbXB0eVVybCkgew0KPiA+ID4g KyAgICAgIENvbnRleHQtPlNlcnZlckFkZHJBbmRQcm90byA9IFN0cm5DYXRHcm93ICgNCj4gPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZDb250ZXh0LT5TZXJ2ZXJB ZGRyQW5kUHJvdG8sDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAmSWR4LA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTCJo dHRwOi8vIiwNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0 ckxlbiAoTCJodHRwOi8vIikNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICk7DQo+ID4gPiArICAgIH0NCj4gPiA+ICsNCj4gPiA+ICsgICAgQ29udGV4dC0+U2Vy dmVyQWRkckFuZFByb3RvID0gU3RybkNhdEdyb3cgKA0KPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICZDb250ZXh0LT5TZXJ2ZXJBZGRyQW5kUHJvdG8sDQo+ID4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJklkeCwNCj4gPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZW1wLA0KPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFN0ckxlbiAoVGVtcCkNCj4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICApOw0KPiA+ID4gKyAgICBTSEVMTF9GUkVFX05PTl9OVUxM IChUZW1wKTsNCj4gPiA+ICsgICAgaWYgKCFDb250ZXh0LT5TZXJ2ZXJBZGRyQW5kUHJvdG8pIHsN Cj4gPiA+ICsgICAgICBTdGF0dXMgPSBFRklfT1VUX09GX1JFU09VUkNFUzsNCj4gPiA+ICsgICAg ICBnb3RvIEVycm9yOw0KPiA+ID4gKyAgICB9DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ID4gPiAr ICBTSEVMTF9GUkVFX05PTl9OVUxMIChDb250ZXh0LT5VcmkpOw0KPiA+ID4gKw0KPiA+ID4gKyAg U3RyaW5nU2l6ZSA9IEFzY2lpU3RyU2l6ZSAoTG9jYXRpb24pICogc2l6ZW9mIChDSEFSMTYpOw0K PiA+ID4gKyAgQ29udGV4dC0+VXJpID0gQWxsb2NhdGVaZXJvUG9vbCAoU3RyaW5nU2l6ZSk7DQo+ ID4gPiArICBpZiAoIUNvbnRleHQtPlVyaSkgew0KPiA+ID4gKyAgICBTdGF0dXMgPSBFRklfT1VU X09GX1JFU09VUkNFUzsNCj4gPiA+ICsgICAgZ290byBFcnJvcjsNCj4gPiA+ICsgIH0NCj4gPiA+ ICsNCj4gPiA+ICsgIC8vDQo+ID4gPiArICAvLyBOb3cgbWFrZSBjaGFuZ2VzIHRvIHRoZSBVcmkg cGFydC4NCj4gPiA+ICsgIC8vDQo+ID4gPiArICBTdGF0dXMgPSBBc2NpaVN0clRvVW5pY29kZVN0 clMgKA0KPiA+ID4gKyAgICAgICAgICAgICAoQ09OU1QgQ0hBUjggKilMb2NhdGlvbiwNCj4gPiA+ ICsgICAgICAgICAgICAgQ29udGV4dC0+VXJpLA0KPiA+ID4gKyAgICAgICAgICAgICBTdHJpbmdT aXplDQo+ID4gPiArICAgICAgICAgICAgICk7DQo+ID4gPiArRXJyb3I6DQo+ID4gPiArICBTSEVM TF9GUkVFX05PTl9OVUxMIChUbXApOw0KPiA+ID4gKyAgU0hFTExfRlJFRV9OT05fTlVMTCAoVXJs KTsNCj4gPiA+ICsNCj4gPiA+ICsgIHJldHVybiBTdGF0dXM7DQo+ID4gPiArfQ0KPiA+ID4gKw0K PiA+ID4gKy8qKg0KPiA+ID4gKyAgTWVzc2FnZSBwYXJzZXIgY2FsbGJhY2suDQo+ID4gPiArICBT YXZlIGEgcG9ydGlvbiBvZiBIVFRQIGJvZHkuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5d ICAgRXZlbnRUeXBlICAgICAgIFR5cGUgb2YgZXZlbnQuIENhbiBiZSBlaXRoZXINCj4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT25Db21wbGV0ZSBvciBPbkRhdGEuDQo+ID4g PiArICBAcGFyYW1baW5dICAgRGF0YSAgICAgICAgICAgIEEgcG9pbnRlciB0byB0aGUgYnVmZmVy IHdpdGggZGF0YS4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gICBMZW5ndGggICAgICAgICAgRGF0YSBs ZW5ndGggb2YgdGhpcyBwb3J0aW9uLg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgIENvbnRleHQgICAg ICAgICBBIHBvaW50ZXIgdG8gdGhlIEhUVFAgZG93bmxvYWQNCj4gY29udGV4dC4NCj4gPiA+ICsN Cj4gPiA+ICsgIEByZXR2YWwgICAgICBFRklfU1VDQ0VTUyAgICBUaGUgcG9ydGlvbiB3YXMgcHJv Y2Vzc2VkIHN1Y2Nlc3NmdWxseS4NCj4gPiA+ICsgIEByZXR2YWwgICAgICBPdGhlciAgICAgICAg ICBFcnJvciByZXR1cm5lZCBieSBTYXZlUG9ydGlvbi4NCj4gPiA+ICsqKi8NCj4gPiA+ICtTVEFU SUMNCj4gPiA+ICtFRklfU1RBVFVTDQo+ID4gPiArRUZJQVBJDQo+ID4gPiArUGFyc2VNc2cgKA0K PiA+ID4gKyAgSU4gSFRUUF9CT0RZX1BBUlNFX0VWRU5UICAgICAgRXZlbnRUeXBlLA0KPiA+ID4g KyAgSU4gQ0hBUjggICAgICAgICAgICAgICAgICAgICAgKkRhdGEsDQo+ID4gPiArICBJTiBVSU5U TiAgICAgICAgICAgICAgICAgICAgICBMZW5ndGgsDQo+ID4gPiArICBJTiBWT0lEICAgICAgICAg ICAgICAgICAgICAgICAqQ29udGV4dA0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIGlm ICgoRGF0YSA9PSBOVUxMKQ0KPiA+ID4gKyAgIHx8IChFdmVudFR5cGUgPT0gQm9keVBhcnNlRXZl bnRPbkNvbXBsZXRlKQ0KPiA+ID4gKyAgIHx8IChDb250ZXh0ID09IE5VTEwpKQ0KPiA+ID4gKyAg ew0KPiA+ID4gKyAgICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ ID4gPiArICByZXR1cm4gU2F2ZVBvcnRpb24gKENvbnRleHQsIExlbmd0aCwgRGF0YSk7DQo+ID4g PiArfQ0KPiA+ID4gKw0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgR2V0IEhUVFAgc2Vy dmVyIHJlc3BvbnNlIGFuZCBjb2xsZWN0IHRoZSB3aG9sZSBib2R5IGFzIGEgZmlsZS4NCj4gPiA+ ICsgIFNldCBhcHByb3ByaWF0ZSBzdGF0dXMgaW4gQ29udGV4dCAoUkVRX09LLCBSRVFfUkVQRUFU LCBSRVFfRVJST1IpLg0KPiA+ID4gKyAgTm90ZSB0aGF0IGV2ZW4gaWYgSFRUUCBzZXJ2ZXIgcmV0 dXJucyBhbiBlcnJvciBjb2RlLCBpdCBtaWdodCBzZW5kDQo+ID4gPiArICB0aGUgYm9keSBhcyB3 ZWxsLiBUaGlzIGJvZHkgd2lsbCBiZSBjb2xsZWN0ZWQgaW4gdGhlIHJlc3VsdGFudA0KPiBmaWxl Lg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2luXSAgIENvbnRleHQgICAgICAgICBBIHBvaW50 ZXIgdG8gdGhlIEhUVFAgZG93bmxvYWQNCj4gY29udGV4dC4NCj4gPiA+ICsgIEBwYXJhbVtpbl0g ICBEb3dubG9hZFVybCAgICAgQSBwb2ludGVyIHRvIHRoZSBmdWxseSBxdWFsaWZpZWQgVVJMDQo+ IHRvDQo+ID4gZG93bmxvYWQuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsICBFRklfU1VDQ0VT UyAgICAgICAgIFZhbGlkIGZpbGUuIEJvZHkgc3VjY2Vzc2Z1bGx5DQo+IGNvbGxlY3RlZC4NCj4g PiA+ICsgIEByZXR2YWwgIEVGSV9IVFRQX0VSUk9SICAgICAgUmVzcG9uc2UgaXMgYSB2YWxpZCBI VFRQIHJlc3BvbnNlLCBidXQNCj4gdGhlDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEhUVFAgc2VydmVyDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGluZGljYXRlZCBhbiBlcnJvciAoSFRUUCBjb2RlID49IDQwMCkuDQo+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFJlc3BvbnNlIGJvZHkgTUFZIGNvbnRhaW4gZnVsbA0KPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIVFRQIHNlcnZlciByZXNwb25zZS4N Cj4gPiA+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgICAgRXJyb3IgZ2V0dGluZyB0aGUg cmVwb25zZSBmcm9tIHRoZQ0KPiBIVFRQIHNlcnZlci4NCj4gPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUmVzcG9uc2UgYm9keSBpcyBub3QgY29sbGVjdGVkLg0KPiA+ID4gKyoq Lw0KPiA+ID4gK1NUQVRJQw0KPiA+ID4gK0VGSV9TVEFUVVMNCj4gPiA+ICtHZXRSZXNwb25zZSAo DQo+ID4gPiArICBJTiBIVFRQX0RPV05MT0FEX0NPTlRFWFQgICAgKkNvbnRleHQsDQo+ID4gPiAr ICBJTiBDSEFSMTYgICAgICAgICAgICAgICAgICAgKkRvd25sb2FkVXJsDQo+ID4gPiArICApDQo+ ID4gPiArew0KPiA+ID4gKyAgRUZJX0hUVFBfUkVTUE9OU0VfREFUQSAgICAgIFJlc3BvbnNlRGF0 YTsNCj4gPiA+ICsgIEVGSV9IVFRQX01FU1NBR0UgICAgICAgICAgICBSZXNwb25zZU1lc3NhZ2U7 DQo+ID4gPiArICBFRklfSFRUUF9IRUFERVIgICAgICAgICAgICAgKkhlYWRlcjsNCj4gPiA+ICsg IEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ID4gPiArICBWT0lEICAgICAg ICAgICAgICAgICAgICAgICAgKk1zZ1BhcnNlcjsNCj4gPiA+ICsgIEVGSV9USU1FICAgICAgICAg ICAgICAgICAgICBTdGFydFRpbWU7DQo+ID4gPiArICBFRklfVElNRSAgICAgICAgICAgICAgICAg ICAgRW5kVGltZTsNCj4gPiA+ICsgIENPTlNUIENIQVIxNiAgICAgICAgICAgICAgICAqRGVzYzsN Cj4gPiA+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICBFbGFwc2VkU2Vjb25kczsNCj4g PiA+ICsgIEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICBJc1RydW5rZWQ7DQo+ID4gPiArICBC T09MRUFOICAgICAgICAgICAgICAgICAgICAgQ2FuTWVhc3VyZVRpbWU7DQo+ID4gPiArDQo+ID4g PiArICBaZXJvTWVtICgmUmVzcG9uc2VEYXRhLCBzaXplb2YgKFJlc3BvbnNlRGF0YSkpOw0KPiA+ ID4gKyAgWmVyb01lbSAoJlJlc3BvbnNlTWVzc2FnZSwgc2l6ZW9mIChSZXNwb25zZU1lc3NhZ2Up KTsNCj4gPiA+ICsgIFplcm9NZW0gKCZDb250ZXh0LT5SZXNwb25zZVRva2VuLCBzaXplb2YgKENv bnRleHQtDQo+ID4gPlJlc3BvbnNlVG9rZW4pKTsNCj4gPiA+ICsgIElzVHJ1bmtlZCA9IEZBTFNF Ow0KPiA+ID4gKw0KPiA+ID4gKyAgUmVzcG9uc2VNZXNzYWdlLkJvZHkgPSBDb250ZXh0LT5CdWZm ZXI7DQo+ID4gPiArICBDb250ZXh0LT5SZXNwb25zZVRva2VuLlN0YXR1cyA9IEVGSV9TVUNDRVNT Ow0KPiA+ID4gKyAgQ29udGV4dC0+UmVzcG9uc2VUb2tlbi5NZXNzYWdlID0gJlJlc3BvbnNlTWVz c2FnZTsNCj4gPiA+ICsgIENvbnRleHQtPkNvbnRlbnRMZW5ndGggPSAwOw0KPiA+ID4gKyAgQ29u dGV4dC0+U3RhdHVzID0gUkVRX09LOw0KPiA+ID4gKyAgTXNnUGFyc2VyID0gTlVMTDsNCj4gPiA+ ICsgIFJlc3BvbnNlRGF0YS5TdGF0dXNDb2RlID0gSFRUUF9TVEFUVVNfVU5TVVBQT1JURURfU1RB VFVTOw0KPiA+ID4gKyAgUmVzcG9uc2VNZXNzYWdlLkRhdGEuUmVzcG9uc2UgPSAmUmVzcG9uc2VE YXRhOw0KPiA+ID4gKyAgQ29udGV4dC0+UmVzcG9uc2VUb2tlbi5FdmVudCA9IE5VTEw7DQo+ID4g PiArICBDYW5NZWFzdXJlVGltZSA9IEZBTFNFOw0KPiA+ID4gKyAgaWYgKENvbnRleHQtPkZsYWdz ICYgRExfRkxBR19USU1FKSB7DQo+ID4gPiArICAgIFplcm9NZW0gKCZTdGFydFRpbWUsIHNpemVv ZiAoU3RhcnRUaW1lKSk7DQo+ID4gPiArICAgIENhbk1lYXN1cmVUaW1lID0gIUVGSV9FUlJPUiAo Z1JULT5HZXRUaW1lICgmU3RhcnRUaW1lLCBOVUxMKSk7DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ ID4gPiArICBkbyB7DQo+ID4gPiArICAgIFNIRUxMX0ZSRUVfTk9OX05VTEwgKFJlc3BvbnNlTWVz c2FnZS5IZWFkZXJzKTsNCj4gPiA+ICsgICAgUmVzcG9uc2VNZXNzYWdlLkhlYWRlckNvdW50ID0g MDsNCj4gPiA+ICsgICAgZ1Jlc3BvbnNlQ2FsbGJhY2tDb21wbGV0ZSA9IEZBTFNFOw0KPiA+ID4g KyAgICBSZXNwb25zZU1lc3NhZ2UuQm9keUxlbmd0aCA9IENvbnRleHQtPkJ1ZmZlclNpemU7DQo+ ID4gPiArDQo+ID4gPiArICAgIGlmIChTaGVsbEdldEV4ZWN1dGlvbkJyZWFrRmxhZyAoKSkgew0K PiA+ID4gKyAgICAgIFN0YXR1cyA9IEVGSV9BQk9SVEVEOw0KPiA+ID4gKyAgICAgIGJyZWFrOw0K PiA+ID4gKyAgICB9DQo+ID4gPiArDQo+ID4gPiArICAgIGlmICghQ29udGV4dC0+Q29udGVudERv d25sb2FkZWQgJiYgIUNvbnRleHQtDQo+ID4gPlJlc3BvbnNlVG9rZW4uRXZlbnQpIHsNCj4gPiA+ ICsgICAgICBTdGF0dXMgPSBnQlMtPkNyZWF0ZUV2ZW50ICgNCj4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgRVZUX05PVElGWV9TSUdOQUwsDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAg IFRQTF9DQUxMQkFDSywNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgUmVzcG9uc2VDYWxs YmFjaywNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgQ29udGV4dCwNCj4gPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgJkNvbnRleHQtPlJlc3BvbnNlVG9rZW4uRXZlbnQNCj4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgKTsNCj4gPiA+ICsgICAgICBBU1NFUlRfRUZJX0VSUk9SIChT dGF0dXMpOw0KPiA+ID4gKyAgICB9IGVsc2Ugew0KPiA+ID4gKyAgICAgIFJlc3BvbnNlTWVzc2Fn ZS5EYXRhLlJlc3BvbnNlID0gTlVMTDsNCj4gPiA+ICsgICAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAg ICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gPiArICAgICAgYnJlYWs7DQo+ID4gPiAr ICAgIH0NCj4gPiA+ICsNCj4gPiA+ICsgICAgU3RhdHVzID0gQ29udGV4dC0+SHR0cC0+UmVzcG9u c2UgKENvbnRleHQtPkh0dHAsICZDb250ZXh0LQ0KPiA+ID4gPlJlc3BvbnNlVG9rZW4pOw0KPiA+ ID4gKyAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gPiArICAgICAgYnJlYWs7DQo+ ID4gPiArICAgIH0NCj4gPiA+ICsNCj4gPiA+ICsgICAgU3RhdHVzID0gV2FpdEZvckNvbXBsZXRp b24gKENvbnRleHQsICZnUmVzcG9uc2VDYWxsYmFja0NvbXBsZXRlKTsNCj4gPiA+ICsgICAgaWYg KEVGSV9FUlJPUiAoU3RhdHVzKSAmJiBSZXNwb25zZU1lc3NhZ2UuSGVhZGVyQ291bnQpIHsNCj4g PiA+ICsgICAgICBTdGF0dXMgPSBFRklfU1VDQ0VTUzsNCj4gPiA+ICsgICAgfQ0KPiA+ID4gKw0K PiA+ID4gKyAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gPiArICAgICAgQ29udGV4 dC0+SHR0cC0+Q2FuY2VsIChDb250ZXh0LT5IdHRwLCAmQ29udGV4dC0+UmVzcG9uc2VUb2tlbik7 DQo+ID4gPiArICAgICAgYnJlYWs7DQo+ID4gPiArICAgIH0NCj4gPiA+ICsNCj4gPiA+ICsgICAg aWYgKCFDb250ZXh0LT5Db250ZW50RG93bmxvYWRlZCkgew0KPiA+ID4gKyAgICAgIGlmIChORUVE X1JFRElSRUNUSU9OIChSZXNwb25zZURhdGEuU3RhdHVzQ29kZSkpIHsNCj4gPiA+ICsgICAgICAg IC8vDQo+ID4gPiArICAgICAgICAvLyBOZWVkIHRvIHJlcGVhdCB0aGUgcmVxdWVzdCB3aXRoIG5l dyBMb2NhdGlvbiAoc2VydmVyDQo+IHJlZGlyZWN0ZWQpLg0KPiA+ID4gKyAgICAgICAgLy8NCj4g PiA+ICsgICAgICAgIENvbnRleHQtPlN0YXR1cyA9IFJFUV9ORUVEX1JFUEVBVDsNCj4gPiA+ICsN Cj4gPiA+ICsgICAgICAgIEhlYWRlciA9IEh0dHBGaW5kSGVhZGVyICgNCj4gPiA+ICsgICAgICAg ICAgICAgICAgICAgUmVzcG9uc2VNZXNzYWdlLkhlYWRlckNvdW50LA0KPiA+ID4gKyAgICAgICAg ICAgICAgICAgICBSZXNwb25zZU1lc3NhZ2UuSGVhZGVycywNCj4gPiA+ICsgICAgICAgICAgICAg ICAgICAgIkxvY2F0aW9uIg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICApOw0KPiA+ID4gKyAg ICAgICAgaWYgKEhlYWRlcikgew0KPiA+ID4gKyAgICAgICAgICBTdGF0dXMgPSBTZXRIb3N0VVJJ IChIZWFkZXItPkZpZWxkVmFsdWUsIENvbnRleHQsDQo+IERvd25sb2FkVXJsKTsNCj4gPiA+ICsg ICAgICAgICAgaWYgKFN0YXR1cyA9PSBFRklfTk9fTUFQUElORykgew0KPiA+ID4gKyAgICAgICAg ICAgIFBSSU5UX0hJSSAoDQo+ID4gPiArICAgICAgICAgICAgICBTVFJJTkdfVE9LRU4gKFNUUl9I VFRQX0VSUl9TVEFUVVNDT0RFKSwNCj4gPiA+ICsgICAgICAgICAgICAgIENvbnRleHQtPlNlcnZl ckFkZHJBbmRQcm90bywNCj4gPiA+ICsgICAgICAgICAgICAgIEwiUmVjdXJzaXZlIEhUVFAgc2Vy dmVyIHJlbG9jYXRpb24iLA0KPiA+ID4gKyAgICAgICAgICAgICAgQ29udGV4dC0+VXJpDQo+ID4g PiArICAgICAgICAgICAgICApOw0KPiA+ID4gKyAgICAgICAgICB9DQo+ID4gPiArICAgICAgICB9 IGVsc2Ugew0KPiA+ID4gKyAgICAgICAgICAvLw0KPiA+ID4gKyAgICAgICAgICAvLyBCYWQgcmVw bHkgZnJvbSB0aGUgc2VydmVyLiBTZXJ2ZXIgbXVzdCBzcGVjaWZ5IHRoZQ0KPiBsb2NhdGlvbi4N Cj4gPiA+ICsgICAgICAgICAgLy8gSW5kaWNhdGUgdGhhdCByZXNvdXJjZSB3YXMgbm90IGZvdW5k LCBhbmQgbm8gYm9keQ0KPiBjb2xsZWN0ZWQuDQo+ID4gPiArICAgICAgICAgIC8vDQo+ID4gPiAr ICAgICAgICAgIFN0YXR1cyA9IEVGSV9OT1RfRk9VTkQ7DQo+ID4gPiArICAgICAgICB9DQo+ID4g PiArDQo+ID4gPiArICAgICAgICBDb250ZXh0LT5IdHRwLT5DYW5jZWwgKENvbnRleHQtPkh0dHAs DQo+ICZDb250ZXh0LT5SZXNwb25zZVRva2VuKTsNCj4gPiA+ICsgICAgICAgIGJyZWFrOw0KPiA+ ID4gKyAgICAgIH0NCj4gPiA+ICsNCj4gPiA+ICsgICAgICAvLw0KPiA+ID4gKyAgICAgIC8vIElu aXQgbWVzc2FnZS1ib2R5IHBhcnNlciBieSBoZWFkZXIgaW5mb3JtYXRpb24uDQo+ID4gPiArICAg ICAgLy8NCj4gPiA+ICsgICAgICBpZiAoIU1zZ1BhcnNlcikgew0KPiA+ID4gKyAgICAgICAgU3Rh dHVzID0gSHR0cEluaXRNc2dQYXJzZXIgKA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICBSZXNw b25zZU1lc3NhZ2UuRGF0YS5SZXF1ZXN0LT5NZXRob2QsDQo+ID4gPiArICAgICAgICAgICAgICAg ICAgIFJlc3BvbnNlRGF0YS5TdGF0dXNDb2RlLA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICBS ZXNwb25zZU1lc3NhZ2UuSGVhZGVyQ291bnQsDQo+ID4gPiArICAgICAgICAgICAgICAgICAgIFJl c3BvbnNlTWVzc2FnZS5IZWFkZXJzLA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICBQYXJzZU1z ZywNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgQ29udGV4dCwNCj4gPiA+ICsgICAgICAgICAg ICAgICAgICAgJk1zZ1BhcnNlcg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICApOw0KPiA+ID4g KyAgICAgICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ID4gKyAgICAgICAgICBicmVh azsNCj4gPiA+ICsgICAgICAgIH0NCj4gPiA+ICsgICAgICB9DQo+ID4gPiArDQo+ID4gPiArICAg ICAgLy8NCj4gPiA+ICsgICAgICAvLyBJZiBpdCBpcyBhIHRydW5rZWQgbWVzc2FnZSwgcmVseSBv biB0aGUgcGFyc2VyLg0KPiA+ID4gKyAgICAgIC8vDQo+ID4gPiArICAgICAgSGVhZGVyID0gSHR0 cEZpbmRIZWFkZXIgKA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgUmVzcG9uc2VNZXNzYWdlLkhl YWRlckNvdW50LA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgUmVzcG9uc2VNZXNzYWdlLkhlYWRl cnMsDQo+ID4gPiArICAgICAgICAgICAgICAgICAiVHJhbnNmZXItRW5jb2RpbmciDQo+ID4gPiAr ICAgICAgICAgICAgICAgICApOw0KPiA+ID4gKyAgICAgIElzVHJ1bmtlZCA9IChIZWFkZXIgJiYg IUFzY2lpU3RyQ21wIChIZWFkZXItPkZpZWxkVmFsdWUsDQo+ID4gImNodW5rZWQiKSk7DQo+ID4g PiArDQo+ID4gPiArICAgICAgSHR0cEdldEVudGl0eUxlbmd0aCAoTXNnUGFyc2VyLCAmQ29udGV4 dC0+Q29udGVudExlbmd0aCk7DQo+ID4gPiArDQo+ID4gPiArICAgICAgaWYgKFJlc3BvbnNlRGF0 YS5TdGF0dXNDb2RlID49IEhUVFBfU1RBVFVTXzQwMF9CQURfUkVRVUVTVA0KPiA+ID4gKyAgICAg ICAmJiAoUmVzcG9uc2VEYXRhLlN0YXR1c0NvZGUgIT0NCj4gPiA+IEhUVFBfU1RBVFVTXzMwOF9Q RVJNQU5FTlRfUkVESVJFQ1QpKQ0KPiA+ID4gKyAgICAgIHsNCj4gPiA+ICsgICAgICAgIC8vDQo+ ID4gPiArICAgICAgICAvLyBTZXJ2ZXIgcmVwb3J0ZWQgYW4gZXJyb3IgdmlhIFJlc3BvbnNlIGNv ZGUuDQo+ID4gPiArICAgICAgICAvLyBDb2xsZWN0IHRoZSBib2R5IGlmIGFueS4NCj4gPiA+ICsg ICAgICAgIC8vDQo+ID4gPiArICAgICAgICBpZiAoIWdIdHRwRXJyb3IpIHsNCj4gPiA+ICsgICAg ICAgICAgZ0h0dHBFcnJvciA9IFRSVUU7DQo+ID4gPiArDQo+ID4gPiArICAgICAgICAgIERlc2Mg PSBFcnJTdGF0dXNEZXNjW1Jlc3BvbnNlRGF0YS5TdGF0dXNDb2RlIC0NCj4gPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgSFRUUF9TVEFUVVNfNDAwX0JBRF9SRVFVRVNUXTsNCj4g PiA+ICsgICAgICAgICAgUFJJTlRfSElJICgNCj4gPiA+ICsgICAgICAgICAgICBTVFJJTkdfVE9L RU4gKFNUUl9IVFRQX0VSUl9TVEFUVVNDT0RFKSwNCj4gPiA+ICsgICAgICAgICAgICBDb250ZXh0 LT5TZXJ2ZXJBZGRyQW5kUHJvdG8sDQo+ID4gPiArICAgICAgICAgICAgRGVzYywNCj4gPiA+ICsg ICAgICAgICAgICBDb250ZXh0LT5VcmkNCj4gPiA+ICsgICAgICAgICAgICApOw0KPiA+ID4gKw0K PiA+ID4gKyAgICAgICAgICAvLw0KPiA+ID4gKyAgICAgICAgICAvLyBUaGlzIGdpdmVzIGFuIFJG QyBIVFRQIGVycm9yLg0KPiA+ID4gKyAgICAgICAgICAvLw0KPiA+ID4gKyAgICAgICAgICBDb250 ZXh0LT5TdGF0dXMgPSBTaGVsbFN0clRvVWludG4gKERlc2MpOw0KPiA+ID4gKyAgICAgICAgICBT dGF0dXMgPSBFTkNPREVfRVJST1IgKENvbnRleHQtPlN0YXR1cyk7DQo+ID4gPiArICAgICAgICB9 DQo+ID4gPiArICAgICAgfQ0KPiA+ID4gKyAgICB9DQo+ID4gPiArDQo+ID4gPiArICAgIC8vDQo+ ID4gPiArICAgIC8vIERvIE5PVCB0cnkgdG8gcGFyc2UgYW4gZW1wdHkgYm9keS4NCj4gPiA+ICsg ICAgLy8NCj4gPiA+ICsgICAgaWYgKFJlc3BvbnNlTWVzc2FnZS5Cb2R5TGVuZ3RoIHx8IElzVHJ1 bmtlZCkgew0KPiA+ID4gKyAgICAgIFN0YXR1cyA9IEh0dHBQYXJzZU1lc3NhZ2VCb2R5ICgNCj4g PiA+ICsgICAgICAgICAgICAgICAgIE1zZ1BhcnNlciwNCj4gPiA+ICsgICAgICAgICAgICAgICAg IFJlc3BvbnNlTWVzc2FnZS5Cb2R5TGVuZ3RoLA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgUmVz cG9uc2VNZXNzYWdlLkJvZHkNCj4gPiA+ICsgICAgICAgICAgICAgICAgICk7DQo+ID4gPiArICAg IH0NCj4gPiA+ICsgIH0gd2hpbGUgKCFIdHRwSXNNZXNzYWdlQ29tcGxldGUgKE1zZ1BhcnNlcikN Cj4gPiA+ICsgICAgICAgICYmICFFRklfRVJST1IgKFN0YXR1cykNCj4gPiA+ICsgICAgICAgICYm IFJlc3BvbnNlTWVzc2FnZS5Cb2R5TGVuZ3RoKTsNCj4gPiA+ICsNCj4gPiA+ICsgIGlmIChDb250 ZXh0LT5TdGF0dXMgIT0gUkVRX05FRURfUkVQRUFUDQo+ID4gPiArICAgJiYgU3RhdHVzID09IEVG SV9TVUNDRVNTDQo+ID4gPiArICAgJiYgQ2FuTWVhc3VyZVRpbWUpDQo+ID4gPiArICB7DQo+ID4g PiArICAgIGlmICghRUZJX0VSUk9SIChnUlQtPkdldFRpbWUgKCZFbmRUaW1lLCBOVUxMKSkpIHsN Cj4gPiA+ICsgICAgICBFbGFwc2VkU2Vjb25kcyA9IEVmaVRpbWVUb0Vwb2NoICgmRW5kVGltZSkg LSBFZmlUaW1lVG9FcG9jaA0KPiA+ID4gKCZTdGFydFRpbWUpOw0KPiA+ID4gKyAgICAgIFByaW50 ICgNCj4gPiA+ICsgICAgICAgIEwiLCVhJUx1c1xuIiwNCj4gPiA+ICsgICAgICAgIEVsYXBzZWRT ZWNvbmRzID8gIiAiIDogIiA8ICIsDQo+ID4gPiArICAgICAgICBFbGFwc2VkU2Vjb25kcyA+IDEg PyAoVUlOVDY0KUVsYXBzZWRTZWNvbmRzIDogMQ0KPiA+ID4gKyAgICAgICAgKTsNCj4gPiA+ICsg ICAgfQ0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgU0hFTExfRlJFRV9OT05fTlVMTCAo TXNnUGFyc2VyKTsNCj4gPiA+ICsgIGlmIChDb250ZXh0LT5SZXNwb25zZVRva2VuLkV2ZW50KSB7 DQo+ID4gPiArICAgIGdCUy0+Q2xvc2VFdmVudCAoQ29udGV4dC0+UmVzcG9uc2VUb2tlbi5FdmVu dCk7DQo+ID4gPiArICAgIFplcm9NZW0gKCZDb250ZXh0LT5SZXNwb25zZVRva2VuLCBzaXplb2Yg KENvbnRleHQtDQo+ID4gPlJlc3BvbnNlVG9rZW4pKTsNCj4gPiA+ICsgIH0NCj4gPiA+ICsNCj4g PiA+ICsgIHJldHVybiBTdGF0dXM7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ ID4gKyAgV29ya2VyIGZ1bmN0aW9uIHRoYXQgZG93bmxvYWRzIHRoZSBkYXRhIG9mIGEgZmlsZSBm cm9tIGFuIEhUVFANCj4gc2VydmVyDQo+ID4gZ2l2ZW4NCj4gPiA+ICsgIHRoZSBwYXRoIG9mIHRo ZSBmaWxlIGFuZCBpdHMgc2l6ZS4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gICBDb250 ZXh0ICAgICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIEhUVFAgZG93bmxvYWQNCj4gY29udGV4dC4N Cj4gPiA+ICsgIEBwYXJhbVtpbl0gICBDb250cm9sbGVySGFuZGxlICBUaGUgaGFuZGxlIG9mIHRo ZSBuZXR3b3JrIGludGVyZmFjZQ0KPiA+IGNvbnRyb2xsZXINCj4gPiA+ICsgIEBwYXJhbVtpbl0g ICBOaWNOYW1lICAgICAgICAgICBOSUMgbmFtZQ0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCAg RUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBmaWxlIHdhcyBkb3dubG9hZGVkLg0KPiA+ID4gKyAg QHJldHZhbCAgRUZJX09VVF9PRl9SRVNPVVJDRVMgIEEgbWVtb3J5IGFsbG9jYXRpb24gZmFpbGVk Lg0KPiA+ID4gKyAgI3JldHVybiAgRUZJX0hUVFBfRVJST1IgICAgICAgIFRoZSBzZXJ2ZXIgcmV0 dXJuZWQgYSB2YWxpZCBIVFRQDQo+IGVycm9yLg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEV4YW1pbmUgdGhlIG1Mb2NhbEZpbGVQYXRoIGZpbGUNCj4gPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBnZXQgZXJyb3IgYm9keS4NCj4gPiA+ICsg IEByZXR2YWwgIE90aGVycyAgICAgICAgICAgICAgICBUaGUgZG93bmxvYWRpbmcgb2YgdGhlIGZp bGUgZnJvbSB0aGUNCj4gc2VydmVyDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZmFpbGVkLg0KPiA+ID4gKyoqLw0KPiA+ID4gK1NUQVRJQw0KPiA+ID4gK0VGSV9TVEFU VVMNCj4gPiA+ICtEb3dubG9hZEZpbGUgKA0KPiA+ID4gKyAgSU4gSFRUUF9ET1dOTE9BRF9DT05U RVhUICAgKkNvbnRleHQsDQo+ID4gPiArICBJTiBFRklfSEFORExFICAgICAgICAgICAgICBDb250 cm9sbGVySGFuZGxlLA0KPiA+ID4gKyAgSU4gQ0hBUjE2ICAgICAgICAgICAgICAgICAgKk5pY05h bWUNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBFRklfU1RBVFVTICAgICAgICAgICAg ICAgICBTdGF0dXM7DQo+ID4gPiArICBDSEFSMTYgICAgICAgICAgICAgICAgICAgICAqRG93bmxv YWRVcmw7DQo+ID4gPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICBVcmxTaXplOw0KPiA+ ID4gKyAgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICAgSHR0cENoaWxkSGFuZGxlOw0KPiA+ID4g Kw0KPiA+ID4gKyAgQVNTRVJUIChDb250ZXh0KTsNCj4gPiA+ICsgIGlmIChDb250ZXh0ID09IE5V TEwpIHsNCj4gPiA+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPiA+ICsg IH0NCj4gPiA+ICsNCj4gPiA+ICsgIERvd25sb2FkVXJsID0gTlVMTDsNCj4gPiA+ICsgIEh0dHBD aGlsZEhhbmRsZSA9IE5VTEw7DQo+ID4gPiArDQo+ID4gPiArICBDb250ZXh0LT5CdWZmZXIgPSBB bGxvY2F0ZVBvb2wgKENvbnRleHQtPkJ1ZmZlclNpemUpOw0KPiA+ID4gKyAgaWYgKENvbnRleHQt PkJ1ZmZlciA9PSBOVUxMKSB7DQo+ID4gPiArICAgIFN0YXR1cyA9IEVGSV9PVVRfT0ZfUkVTT1VS Q0VTOw0KPiA+ID4gKyAgICBnb3RvIE9OX0VYSVQ7DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ID4g PiArICAvLw0KPiA+ID4gKyAgLy8gT3BlbiB0aGUgZmlsZS4NCj4gPiA+ICsgIC8vDQo+ID4gPiAr ICBpZiAoIUVGSV9FUlJPUiAoU2hlbGxGaWxlRXhpc3RzIChtTG9jYWxGaWxlUGF0aCkpKSB7DQo+ ID4gPiArICAgIFNoZWxsRGVsZXRlRmlsZUJ5TmFtZSAobUxvY2FsRmlsZVBhdGgpOw0KPiA+ID4g KyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgU3RhdHVzID0gU2hlbGxPcGVuRmlsZUJ5TmFtZSAoDQo+ ID4gPiArICAgICAgICAgICAgIG1Mb2NhbEZpbGVQYXRoLA0KPiA+ID4gKyAgICAgICAgICAgICAm bUZpbGVIYW5kbGUsDQo+ID4gPiArICAgICAgICAgICAgIEVGSV9GSUxFX01PREVfQ1JFQVRFIHwN Cj4gPiA+ICsgICAgICAgICAgICAgRUZJX0ZJTEVfTU9ERV9XUklURSAgfA0KPiA+ID4gKyAgICAg ICAgICAgICBFRklfRklMRV9NT0RFX1JFQUQsDQo+ID4gPiArICAgICAgICAgICAgIDANCj4gPiA+ ICsgICAgICAgICAgICAgKTsNCj4gPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4g PiA+ICsgICAgUFJJTlRfSElJX0FQUCAoU1RSSU5HX1RPS0VOIChTVFJfR0VOX0ZJTEVfT1BFTl9G QUlMKSwNCj4gPiA+IG1Mb2NhbEZpbGVQYXRoKTsNCj4gPiA+ICsgICAgZ290byBPTl9FWElUOw0K PiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgZG8gew0KPiA+ID4gKyAgICBTSEVMTF9GUkVF X05PTl9OVUxMIChEb3dubG9hZFVybCk7DQo+ID4gPiArDQo+ID4gPiArICAgIENMT1NFX0hUVFBf SEFORExFIChDb250cm9sbGVySGFuZGxlLCBIdHRwQ2hpbGRIYW5kbGUpOw0KPiA+ID4gKw0KPiA+ ID4gKyAgICBTdGF0dXMgPSBDcmVhdGVTZXJ2aWNlQ2hpbGRBbmRPcGVuUHJvdG9jb2wgKA0KPiA+ ID4gKyAgICAgICAgICAgICAgIENvbnRyb2xsZXJIYW5kbGUsDQo+ID4gPiArICAgICAgICAgICAg ICAgJmdFZmlIdHRwU2VydmljZUJpbmRpbmdQcm90b2NvbEd1aWQsDQo+ID4gPiArICAgICAgICAg ICAgICAgJmdFZmlIdHRwUHJvdG9jb2xHdWlkLA0KPiA+ID4gKyAgICAgICAgICAgICAgICZIdHRw Q2hpbGRIYW5kbGUsDQo+ID4gPiArICAgICAgICAgICAgICAgKFZPSUQqKikmQ29udGV4dC0+SHR0 cA0KPiA+ID4gKyAgICAgICAgICAgICAgICk7DQo+ID4gPiArDQo+ID4gPiArICAgIGlmIChFRklf RVJST1IgKFN0YXR1cykpIHsNCj4gPiA+ICsgICAgICBQUklOVF9ISUkgKFNUUklOR19UT0tFTiAo U1RSX0hUVFBfRVJSX09QRU5fUFJPVE9DT0wpLA0KPiA+IE5pY05hbWUsDQo+ID4gPiBTdGF0dXMp Ow0KPiA+ID4gKyAgICAgIGdvdG8gT05fRVhJVDsNCj4gPiA+ICsgICAgfQ0KPiA+ID4gKw0KPiA+ ID4gKyAgICBTdGF0dXMgPSBDb250ZXh0LT5IdHRwLT5Db25maWd1cmUgKENvbnRleHQtPkh0dHAs ICZDb250ZXh0LQ0KPiA+ID4gPkh0dHBDb25maWdEYXRhKTsNCj4gPiA+ICsgICAgaWYgKEVGSV9F UlJPUiAoU3RhdHVzKSkgew0KPiA+ID4gKyAgICAgIFBSSU5UX0hJSSAoU1RSSU5HX1RPS0VOIChT VFJfSFRUUF9FUlJfQ09ORklHVVJFKSwgTmljTmFtZSwNCj4gPiA+IFN0YXR1cyk7DQo+ID4gPiAr ICAgICAgZ290byBPTl9FWElUOw0KPiA+ID4gKyAgICB9DQo+ID4gPiArDQo+ID4gPiArICAgIFVy bFNpemUgPSAwOw0KPiA+ID4gKyAgICBEb3dubG9hZFVybCA9IFN0cm5DYXRHcm93ICgNCj4gPiA+ ICsgICAgICAgICAgICAgICAgICAgICZEb3dubG9hZFVybCwNCj4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICZVcmxTaXplLA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgQ29udGV4dC0+U2Vy dmVyQWRkckFuZFByb3RvLA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgU3RyTGVuIChDb250 ZXh0LT5TZXJ2ZXJBZGRyQW5kUHJvdG8pDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICApOw0K PiA+ID4gKyAgICBpZiAoQ29udGV4dC0+VXJpWzBdICE9IEwnLycpIHsNCj4gPiA+ICsgICAgICBE b3dubG9hZFVybCA9IFN0cm5DYXRHcm93ICgNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAg JkRvd25sb2FkVXJsLA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAmVXJsU2l6ZSwNCj4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAgTCIvIiwNCj4gPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgU3RyTGVuIChDb250ZXh0LT5TZXJ2ZXJBZGRyQW5kUHJvdG8pDQo+ID4gPiArICAgICAg ICAgICAgICAgICAgICAgICk7DQo+ID4gPiArICAgIH0NCj4gPiA+ICsNCj4gPiA+ICsgICAgRG93 bmxvYWRVcmwgPSBTdHJuQ2F0R3JvdyAoDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAmRG93 bmxvYWRVcmwsDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAmVXJsU2l6ZSwNCj4gPiA+ICsg ICAgICAgICAgICAgICAgICAgIENvbnRleHQtPlVyaSwNCj4gPiA+ICsgICAgICAgICAgICAgICAg ICAgIFN0ckxlbiAoQ29udGV4dC0+VXJpKSk7DQo+ID4gPiArDQo+ID4gPiArICAgIFBSSU5UX0hJ SSAoU1RSSU5HX1RPS0VOIChTVFJfSFRUUF9ET1dOTE9BRElORyksDQo+ID4gRG93bmxvYWRVcmwp Ow0KPiA+ID4gKw0KPiA+ID4gKyAgICBTdGF0dXMgPSBTZW5kUmVxdWVzdCAoQ29udGV4dCwgRG93 bmxvYWRVcmwpOw0KPiA+ID4gKyAgICBpZiAoU3RhdHVzKSB7DQo+ID4gPiArICAgICAgZ290byBP Tl9FWElUOw0KPiA+ID4gKyAgICB9DQo+ID4gPiArDQo+ID4gPiArICAgIFN0YXR1cyA9IEdldFJl c3BvbnNlIChDb250ZXh0LCBEb3dubG9hZFVybCk7DQo+ID4gPiArDQo+ID4gPiArICAgIGlmIChT dGF0dXMpIHsNCj4gPiA+ICsgICAgICBnb3RvIE9OX0VYSVQ7DQo+ID4gPiArICAgIH0NCj4gPiA+ ICsNCj4gPiA+ICsgIH0gd2hpbGUgKENvbnRleHQtPlN0YXR1cyA9PSBSRVFfTkVFRF9SRVBFQVQp Ow0KPiA+ID4gKw0KPiA+ID4gKyAgaWYgKENvbnRleHQtPlN0YXR1cykgew0KPiA+ID4gKyAgICBT dGF0dXMgPSBFTkNPREVfRVJST1IgKENvbnRleHQtPlN0YXR1cyk7DQo+ID4gPiArICB9DQo+ID4g PiArDQo+ID4gPiArT05fRVhJVDoNCj4gPiA+ICsgIC8vDQo+ID4gPiArICAvLyBDbG9zZSB0aGUg ZmlsZS4NCj4gPiA+ICsgIC8vDQo+ID4gPiArICBpZiAobUZpbGVIYW5kbGUgIT0gTlVMTCkgew0K PiA+ID4gKyAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpICYmICEoQ29udGV4dC0+RmxhZ3MgJiBE TF9GTEFHX0tFRVBfQkFEKSkgew0KPiA+ID4gKyAgICAgIFNoZWxsRGVsZXRlRmlsZSAoJm1GaWxl SGFuZGxlKTsNCj4gPiA+ICsgICAgfSBlbHNlIHsNCj4gPiA+ICsgICAgICBTaGVsbENsb3NlRmls ZSAoJm1GaWxlSGFuZGxlKTsNCj4gPiA+ICsgICAgfQ0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ ID4gKyAgU0hFTExfRlJFRV9OT05fTlVMTCAoRG93bmxvYWRVcmwpOw0KPiA+ID4gKyAgU0hFTExf RlJFRV9OT05fTlVMTCAoQ29udGV4dC0+QnVmZmVyKTsNCj4gPiA+ICsNCj4gPiA+ICsgIENMT1NF X0hUVFBfSEFORExFIChDb250cm9sbGVySGFuZGxlLCBIdHRwQ2hpbGRIYW5kbGUpOw0KPiA+ID4g Kw0KPiA+ID4gKyAgcmV0dXJuIFN0YXR1czsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoq DQo+ID4gPiArICBSZXRyaXZlIEhJSSBwYWNrYWdlIGxpc3QgZnJvbSBJbWFnZUhhbmRsZSBhbmQg cHVibGlzaCB0byBISUkNCj4gZGF0YWJhc2UuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5d IEltYWdlSGFuZGxlICAgICAgICAgICAgVGhlIGltYWdlIGhhbmRsZSBvZiB0aGUgcHJvY2Vzcy4N Cj4gPiA+ICsNCj4gPiA+ICsgIEByZXR2YWwgSElJIGhhbmRsZS4NCj4gPiA+ICsqKi8NCj4gPiA+ ICtFRklfSElJX0hBTkRMRQ0KPiA+ID4gK0luaXRpYWxpemVIaWlQYWNrYWdlICgNCj4gPiA+ICsg IElOIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgICBJbWFnZUhhbmRsZQ0KPiA+ID4gKyAgKQ0K PiA+ID4gK3sNCj4gPiA+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ ID4gPiArICBFRklfSElJX1BBQ0tBR0VfTElTVF9IRUFERVIgKlBhY2thZ2VMaXN0Ow0KPiA+ID4g KyAgRUZJX0hJSV9IQU5ETEUgICAgICAgICAgICAgIEhpaUhhbmRsZTsNCj4gPiA+ICsNCj4gPiA+ ICsgIC8vDQo+ID4gPiArICAvLyBSZXRyaWV2ZSBISUkgcGFja2FnZSBsaXN0IGZyb20gSW1hZ2VI YW5kbGUuDQo+ID4gPiArICAvLw0KPiA+ID4gKyAgU3RhdHVzID0gZ0JTLT5PcGVuUHJvdG9jb2wg KA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgIEltYWdlSGFuZGxlLA0KPiA+ID4gKyAgICAgICAg ICAgICAgICAgICZnRWZpSGlpUGFja2FnZUxpc3RQcm90b2NvbEd1aWQsDQo+ID4gPiArICAgICAg ICAgICAgICAgICAgKFZPSUQgKiopJlBhY2thZ2VMaXN0LA0KPiA+ID4gKyAgICAgICAgICAgICAg ICAgIEltYWdlSGFuZGxlLA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgIE5VTEwsDQo+ID4gPiAr ICAgICAgICAgICAgICAgICAgRUZJX09QRU5fUFJPVE9DT0xfR0VUX1BST1RPQ09MDQo+ID4gPiAr ICAgICAgICAgICAgICAgICAgKTsNCj4gPiA+ICsgIEFTU0VSVF9FRklfRVJST1IgKFN0YXR1cyk7 DQo+ID4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gPiArICAgIHJldHVybiBO VUxMOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgLy8NCj4gPiA+ICsgIC8vIFB1Ymxp c2ggSElJIHBhY2thZ2UgbGlzdCB0byBISUkgRGF0YWJhc2UuDQo+ID4gPiArICAvLw0KPiA+ID4g KyAgU3RhdHVzID0gZ0hpaURhdGFiYXNlLT5OZXdQYWNrYWdlTGlzdCAoDQo+ID4gPiArICAgICAg ICAgICAgIGdIaWlEYXRhYmFzZSwNCj4gPiA+ICsgICAgICAgICAgICAgUGFja2FnZUxpc3QsDQo+ ID4gPiArICAgICAgICAgICAgIE5VTEwsDQo+ID4gPiArICAgICAgICAgICAgICZIaWlIYW5kbGUN Cj4gPiA+ICsgICAgICAgICAgICAgKTsNCj4gPiA+ICsgIEFTU0VSVF9FRklfRVJST1IgKFN0YXR1 cyk7DQo+ID4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gPiArICAgIHJldHVy biBOVUxMOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgcmV0dXJuIEhpaUhhbmRsZTsN Cj4gPiA+ICt9DQo+ID4gPiBkaWZmIC0tZ2l0IGEvU2hlbGxQa2cvRHluYW1pY0NvbW1hbmQvSHR0 cER5bmFtaWNDb21tYW5kL0h0dHBBcHAuYw0KPiA+ID4gYi9TaGVsbFBrZy9EeW5hbWljQ29tbWFu ZC9IdHRwRHluYW1pY0NvbW1hbmQvSHR0cEFwcC5jDQo+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0 NA0KPiA+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi5hN2QyYzI3MTkxYTINCj4gPiA+IC0tLSAvZGV2 L251bGwNCj4gPiA+ICsrKyBiL1NoZWxsUGtnL0R5bmFtaWNDb21tYW5kL0h0dHBEeW5hbWljQ29t bWFuZC9IdHRwQXBwLmMNCj4gPiA+IEBAIC0wLDAgKzEsNjEgQEANCj4gPiA+ICsvKiogQGZpbGUN Cj4gPiA+ICsgIEVudHJ5cG9pbnQgb2YgImh0dHAiIHNoZWxsIHN0YW5kYWxvbmUgYXBwbGljYXRp b24uDQo+ID4gPiArDQo+ID4gPiArICBDb3B5cmlnaHQgKGMpIDIwMTAgLSAyMDE3LCBJbnRlbCBD b3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gPEJSPg0KPiA+ID4gKyAgQ29weXJp Z2h0IChjKSAyMDE1LCBBUk0gTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiA+ICsg IENvcHlyaWdodCAoYykgMjAyMCwgQnJvYWRjb20uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0K PiA+ID4gKw0KPiA+ID4gKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1Q YXRlbnQNCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICsjaW5jbHVkZSAiSHR0cC5oIg0KPiA+ ID4gKw0KPiA+ID4gKy8qDQo+ID4gPiArICogU3RyaW5nIHRva2VuIElEIG9mIGhlbHAgbWVzc2Fn ZSB0ZXh0Lg0KPiA+ID4gKyAqIFNoZWxsIHN1cHBvcnRzIHRvIGZpbmQgaGVscCBtZXNzYWdlIGlu IHRoZSByZXNvdXJjZSBzZWN0aW9uIG9mIGFuDQo+ID4gPiArICogYXBwbGljYXRpb24gaW1hZ2Ug aWYgKiAuTUFOIGZpbGUgaXMgbm90IGZvdW5kLg0KPiA+ID4gKyAqIFRoaXMgZ2xvYmFsIHZhcmlh YmxlIGlzIGFkZGVkIHRvIG1ha2UgYnVpbGQgdG9vbCByZWNvZ25pemVzDQo+ID4gPiArICogdGhh dCB0aGUgaGVscCBzdHJpbmcgaXMgY29uc3VtZWQgYnkgdXNlciBhbmQgdGhlbiBidWlsZCB0b29s IHdpbGwNCj4gPiA+ICsgKiBhZGQgdGhlIHN0cmluZyBpbnRvIHRoZSByZXNvdXJjZSBzZWN0aW9u Lg0KPiA+ID4gKyAqIFRodXMgdGhlIGFwcGxpY2F0aW9uIGNhbiB1c2UgJy0/JyBvcHRpb24gdG8g c2hvdyBoZWxwIG1lc3NhZ2UgaW4NCj4gU2hlbGwuDQo+ID4gPiArICovDQo+ID4gPiArR0xPQkFM X1JFTU9WRV9JRl9VTlJFRkVSRU5DRUQNCj4gPiA+ICtFRklfU1RSSU5HX0lEIG1TdHJpbmdIZWxw VG9rZW5JZCA9IFNUUklOR19UT0tFTg0KPiA+IChTVFJfR0VUX0hFTFBfSFRUUCk7DQo+ID4gPiAr DQo+ID4gPiArLyoqDQo+ID4gPiArICBFbnRyeSBwb2ludCBvZiBIdHRwIHN0YW5kYWxvbmUgYXBw bGljYXRpb24uDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW0gSW1hZ2VIYW5kbGUgICAgICAgICAg ICBUaGUgaW1hZ2UgaGFuZGxlIG9mIHRoZSBwcm9jZXNzLg0KPiA+ID4gKyAgQHBhcmFtIFN5c3Rl bVRhYmxlICAgICAgICAgICAgVGhlIEVGSSBTeXN0ZW0gVGFibGUgcG9pbnRlci4NCj4gPiA+ICsN Cj4gPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIEh0dHAgY29tbWFuZCBpcyBl eGVjdXRlZCBzdWNlc3NmdWxseS4NCj4gPiA+ICsgIEByZXR2YWwgRUZJX0FCT1JURUQgICAgICAg ICAgIEhJSSBwYWNrYWdlIHdhcyBmYWlsZWQgdG8gaW5pdGlhbGl6ZS4NCj4gPiA+ICsgIEByZXR2 YWwgb3RoZXJzICAgICAgICAgICAgICAgIE90aGVyIGVycm9ycyB3aGVuIGV4ZWN1dGluZyBodHRw DQo+IGNvbW1hbmQuDQo+ID4gPiArKiovDQo+ID4gPiArRUZJX1NUQVRVUw0KPiA+ID4gK0VGSUFQ SQ0KPiA+ID4gK0h0dHBBcHBJbml0aWFsaXplICgNCj4gPiA+ICsgIElOIEVGSV9IQU5ETEUgICAg ICAgICAgICAgICBJbWFnZUhhbmRsZSwNCj4gPiA+ICsgIElOIEVGSV9TWVNURU1fVEFCTEUgICAg ICAgICAqU3lzdGVtVGFibGUNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBFRklfU1RB VFVTICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+ID4gKyAgU0hFTExfU1RBVFVTICAgICAg ICAgICAgICAgIFNoZWxsU3RhdHVzOw0KPiA+ID4gKw0KPiA+ID4gKyAgbUh0dHBIaWlIYW5kbGUg PSBJbml0aWFsaXplSGlpUGFja2FnZSAoSW1hZ2VIYW5kbGUpOw0KPiA+ID4gKyAgaWYgKG1IdHRw SGlpSGFuZGxlID09IE5VTEwpIHsNCj4gPiA+ICsgICAgcmV0dXJuIEVGSV9BQk9SVEVEOw0KPiA+ ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgU3RhdHVzID0gRUZJX1NVQ0NFU1M7DQo+ID4gPiAr DQo+ID4gPiArICBTaGVsbFN0YXR1cyA9IFJ1bkh0dHAgKEltYWdlSGFuZGxlLCBTeXN0ZW1UYWJs ZSk7DQo+ID4gPiArDQo+ID4gPiArICBIaWlSZW1vdmVQYWNrYWdlcyAobUh0dHBIaWlIYW5kbGUp Ow0KPiA+ID4gKw0KPiA+ID4gKyAgaWYgKFN0YXR1cyAhPSBTSEVMTF9TVUNDRVNTKSB7DQo+ID4g PiArICAgIFN0YXR1cyA9IEVOQ09ERV9FUlJPUiAoU2hlbGxTdGF0dXMpOw0KPiA+ID4gKyAgfQ0K PiA+ID4gKw0KPiA+ID4gKyAgcmV0dXJuIFN0YXR1czsNCj4gPiA+ICt9DQo+ID4gPiBkaWZmIC0t Z2l0DQo+ID4gPg0KPiA+IGEvU2hlbGxQa2cvRHluYW1pY0NvbW1hbmQvSHR0cER5bmFtaWNDb21t YW5kL0h0dHBEeW5hbWljQ29tbWENCj4gPiBuZC5jDQo+ID4gPg0KPiA+IGIvU2hlbGxQa2cvRHlu YW1pY0NvbW1hbmQvSHR0cER5bmFtaWNDb21tYW5kL0h0dHBEeW5hbWljQ29tbWENCj4gPiBuZC5j DQo+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi43 ZjU5Y2M3NGQyYTcNCj4gPiA+IC0tLSAvZGV2L251bGwNCj4gPiA+ICsrKw0KPiA+ID4NCj4gPiBi L1NoZWxsUGtnL0R5bmFtaWNDb21tYW5kL0h0dHBEeW5hbWljQ29tbWFuZC9IdHRwRHluYW1pY0Nv bW1hDQo+ID4gbmQuYw0KPiA+ID4gQEAgLTAsMCArMSwxMzcgQEANCj4gPiA+ICsvKiogQGZpbGUN Cj4gPiA+ICsgIFByb2R1Y2UgImh0dHAiIHNoZWxsIGR5bmFtaWMgY29tbWFuZC4NCj4gPiA+ICsN Cj4gPiA+ICsgIENvcHlyaWdodCAoYykgMjAxMCAtIDIwMTcsIEludGVsIENvcnBvcmF0aW9uLiBB bGwgcmlnaHRzIHJlc2VydmVkLg0KPiA8QlI+DQo+ID4gPiArICBDb3B5cmlnaHQgKGMpIDIwMTUs IEFSTSBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ID4gKyAgQ29weXJpZ2h0IChj KSAyMDIwLCBCcm9hZGNvbS4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gPiArDQo+ID4g PiArICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ID4g Kw0KPiA+ID4gKyoqLw0KPiA+ID4gKyNpbmNsdWRlIDxQcm90b2NvbC9TaGVsbER5bmFtaWNDb21t YW5kLmg+DQo+ID4gPiArI2luY2x1ZGUgIkh0dHAuaCINCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4g PiA+ICsgIFRoaXMgaXMgdGhlIHNoZWxsIGNvbW1hbmQgaGFuZGxlciBmdW5jdGlvbiBwb2ludGVy IGNhbGxiYWNrIHR5cGUuDQo+IFRoaXMNCj4gPiA+ICsgIGZ1bmN0aW9uIGhhbmRsZXMgdGhlIGNv bW1hbmQgd2hlbiBpdCBpcyBpbnZva2VkIGluIHRoZSBzaGVsbC4NCj4gPiA+ICsNCj4gPiA+ICsg IEBwYXJhbVtpbl0gVGhpcyAgICAgICAgICAgICAgIFRoZSBpbnN0YW5jZSBvZiB0aGUNCj4gPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9TSEVMTF9EWU5BTUlDX0NPTU1B TkRfUFJPVE9DT0wuDQo+ID4gPiArICBAcGFyYW1baW5dIFN5c3RlbVRhYmxlICAgICAgICBUaGUg cG9pbnRlciB0byB0aGUgc3lzdGVtIHRhYmxlLg0KPiA+ID4gKyAgQHBhcmFtW2luXSBTaGVsbFBh cmFtZXRlcnMgICAgVGhlIHBhcmFtZXRlcnMgYXNzb2NpYXRlZCB3aXRoIHRoZQ0KPiA+IGNvbW1h bmQuDQo+ID4gPiArICBAcGFyYW1baW5dIFNoZWxsICAgICAgICAgICAgICBUaGUgaW5zdGFuY2Ug b2YgdGhlIHNoZWxsIHByb3RvY29sDQo+IHVzZWQgaW4NCj4gPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHRoZSBjb250ZXh0IG9mIHByb2Nlc3NpbmcgdGhpcw0KPiBjb21tYW5k Lg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHVybiBFRklfU1VDQ0VTUyAgICAgICAgICAgdGhlIG9w ZXJhdGlvbiB3YXMgc3VjZXNzZnVsDQo+ID4gPiArICBAcmV0dXJuIG90aGVyICAgICAgICAgICAg ICAgICB0aGUgb3BlcmF0aW9uIGZhaWxlZC4NCj4gPiA+ICsqKi8NCj4gPiA+ICtTSEVMTF9TVEFU VVMNCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtIdHRwQ29tbWFuZEhhbmRsZXIgKA0KPiA+ID4gKyAg SU4gRUZJX1NIRUxMX0RZTkFNSUNfQ09NTUFORF9QUk9UT0NPTCAgICAqVGhpcywNCj4gPiA+ICsg IElOIEVGSV9TWVNURU1fVEFCTEUgICAgICAgICAgICAgICAgICAgICAgKlN5c3RlbVRhYmxlLA0K PiA+ID4gKyAgSU4gRUZJX1NIRUxMX1BBUkFNRVRFUlNfUFJPVE9DT0wgICAgICAgICAqU2hlbGxQ YXJhbWV0ZXJzLA0KPiA+ID4gKyAgSU4gRUZJX1NIRUxMX1BST1RPQ09MICAgICAgICAgICAgICAg ICAgICAqU2hlbGwNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBnRWZpU2hlbGxQYXJh bWV0ZXJzUHJvdG9jb2wgPSBTaGVsbFBhcmFtZXRlcnM7DQo+ID4gPiArICBnRWZpU2hlbGxQcm90 b2NvbCAgICAgICAgICAgPSBTaGVsbDsNCj4gPiA+ICsNCj4gPiA+ICsgIHJldHVybiBSdW5IdHRw IChnSW1hZ2VIYW5kbGUsIFN5c3RlbVRhYmxlKTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiAr LyoqDQo+ID4gPiArICBUaGlzIGlzIHRoZSBjb21tYW5kIGhlbHAgaGFuZGxlciBmdW5jdGlvbiBw b2ludGVyIGNhbGxiYWNrIHR5cGUuDQo+IFRoaXMNCj4gPiA+ICsgIGZ1bmN0aW9uIGlzIHJlc3Bv bnNpYmxlIGZvciBkaXNwbGF5aW5nIGhlbHAgaW5mb3JtYXRpb24gZm9yIHRoZQ0KPiBhc3NvY2lh dGVkDQo+ID4gPiArICBjb21tYW5kLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2luXSBUaGlz ICAgICAgICBUaGUgaW5zdGFuY2Ugb2YgdGhlDQo+ID4gPiBFRklfU0hFTExfRFlOQU1JQ19DT01N QU5EX1BST1RPQ09MLg0KPiA+ID4gKyAgQHBhcmFtW2luXSBMYW5ndWFnZSAgICBUaGUgcG9pbnRl ciB0byB0aGUgbGFuZ3VhZ2Ugc3RyaW5nIHRvIHVzZS4NCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR1 cm4gc3RyaW5nICAgICAgICAgUG9vbCBhbGxvY2F0ZWQgaGVscCBzdHJpbmcsIG11c3QgYmUgZnJl ZWQgYnkNCj4gY2FsbGVyDQo+ID4gPiArKiovDQo+ID4gPiArQ0hBUjE2ICoNCj4gPiA+ICtFRklB UEkNCj4gPiA+ICtIdHRwQ29tbWFuZEdldEhlbHAgKA0KPiA+ID4gKyAgSU4gRUZJX1NIRUxMX0RZ TkFNSUNfQ09NTUFORF9QUk9UT0NPTCAgICAqVGhpcywNCj4gPiA+ICsgIElOIENPTlNUIENIQVI4 ICAgICAgICAgICAgICAgICAgICAgICAgICAgKkxhbmd1YWdlDQo+ID4gPiArICApDQo+ID4gPiAr ew0KPiA+ID4gKyAgcmV0dXJuIEhpaUdldFN0cmluZyAoDQo+ID4gPiArICAgICAgICAgICBtSHR0 cEhpaUhhbmRsZSwNCj4gPiA+ICsgICAgICAgICAgIFNUUklOR19UT0tFTiAoU1RSX0dFVF9IRUxQ X0hUVFApLA0KPiA+ID4gKyAgICAgICAgICAgTGFuZ3VhZ2UNCj4gPiA+ICsgICAgICAgICAgICk7 DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gK0VGSV9TSEVMTF9EWU5BTUlDX0NPTU1BTkRfUFJP VE9DT0wgbUh0dHBEeW5hbWljQ29tbWFuZA0KPiA+ID0gew0KPiA+ID4gKyAgSFRUUF9BUFBfTkFN RSwNCj4gPiA+ICsgIEh0dHBDb21tYW5kSGFuZGxlciwNCj4gPiA+ICsgIEh0dHBDb21tYW5kR2V0 SGVscA0KPiA+ID4gK307DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBFbnRyeSBwb2lu dCBvZiBIdHRwIER5bmFtaWMgQ29tbWFuZC4NCj4gPiA+ICsNCj4gPiA+ICsgIFByb2R1Y2UgdGhl IER5bmFtaWNDb21tYW5kIHByb3RvY29sIHRvIGhhbmRsZSAiaHR0cCIgY29tbWFuZC4NCj4gPiA+ ICsNCj4gPiA+ICsgIEBwYXJhbSBJbWFnZUhhbmRsZSAgICAgICAgICAgIFRoZSBpbWFnZSBoYW5k bGUgb2YgdGhlIHByb2Nlc3MuDQo+ID4gPiArICBAcGFyYW0gU3lzdGVtVGFibGUgICAgICAgICAg ICBUaGUgRUZJIFN5c3RlbSBUYWJsZSBwb2ludGVyLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZh bCBFRklfU1VDQ0VTUyAgICAgICAgICAgSHR0cCBjb21tYW5kIGlzIGV4ZWN1dGVkIHN1Y2Vzc2Z1 bGx5Lg0KPiA+ID4gKyAgQHJldHZhbCBFRklfQUJPUlRFRCAgICAgICAgICAgSElJIHBhY2thZ2Ug d2FzIGZhaWxlZCB0byBpbml0aWFsaXplLg0KPiA+ID4gKyAgQHJldHZhbCBvdGhlcnMgICAgICAg ICAgICAgICAgT3RoZXIgZXJyb3JzIHdoZW4gZXhlY3V0aW5nIGh0dHANCj4gY29tbWFuZC4NCj4g PiA+ICsqKi8NCj4gPiA+ICtFRklfU1RBVFVTDQo+ID4gPiArRUZJQVBJDQo+ID4gPiArSHR0cENv bW1hbmRJbml0aWFsaXplICgNCj4gPiA+ICsgIElOIEVGSV9IQU5ETEUgICAgICAgICAgICAgICBJ bWFnZUhhbmRsZSwNCj4gPiA+ICsgIElOIEVGSV9TWVNURU1fVEFCTEUgICAgICAgICAqU3lzdGVt VGFibGUNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBFRklfU1RBVFVTICAgICAgICAg ICAgICAgICAgU3RhdHVzOw0KPiA+ID4gKw0KPiA+ID4gKyAgbUh0dHBIaWlIYW5kbGUgPSBJbml0 aWFsaXplSGlpUGFja2FnZSAoSW1hZ2VIYW5kbGUpOw0KPiA+ID4gKyAgaWYgKG1IdHRwSGlpSGFu ZGxlID09IE5VTEwpIHsNCj4gPiA+ICsgICAgcmV0dXJuIEVGSV9BQk9SVEVEOw0KPiA+ID4gKyAg fQ0KPiA+ID4gKw0KPiA+ID4gKyAgU3RhdHVzID0gZ0JTLT5JbnN0YWxsUHJvdG9jb2xJbnRlcmZh Y2UgKA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICZJbWFnZUhhbmRsZSwNCj4gPiA+ICsgICAg ICAgICAgICAgICAgICAmZ0VmaVNoZWxsRHluYW1pY0NvbW1hbmRQcm90b2NvbEd1aWQsDQo+ID4g PiArICAgICAgICAgICAgICAgICAgRUZJX05BVElWRV9JTlRFUkZBQ0UsDQo+ID4gPiArICAgICAg ICAgICAgICAgICAgJm1IdHRwRHluYW1pY0NvbW1hbmQNCj4gPiA+ICsgICAgICAgICAgICAgICAg ICApOw0KPiA+ID4gKyAgQVNTRVJUX0VGSV9FUlJPUiAoU3RhdHVzKTsNCj4gPiA+ICsgIHJldHVy biBTdGF0dXM7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgSHR0cCBk cml2ZXIgdW5sb2FkIGhhbmRsZXIuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW0gSW1hZ2VIYW5k bGUgICAgICAgICAgICBUaGUgaW1hZ2UgaGFuZGxlIG9mIHRoZSBwcm9jZXNzLg0KPiA+ID4gKw0K PiA+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIGltYWdlIGlzIHVubG9h ZGVkLg0KPiA+ID4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICAgICAgRmFpbGVkIHRvIHVu bG9hZCB0aGUgaW1hZ2UuDQo+ID4gPiArKiovDQo+ID4gPiArRUZJX1NUQVRVUw0KPiA+ID4gK0VG SUFQSQ0KPiA+ID4gK0h0dHBVbmxvYWQgKA0KPiA+ID4gKyAgSU4gRUZJX0hBTkRMRSAgICAgICAg ICAgICAgIEltYWdlSGFuZGxlDQo+ID4gPiArKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIEVGSV9TVEFU VVMgICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ID4gPiArDQo+ID4gPiArICBTdGF0dXMgPSBn QlMtPlVuaW5zdGFsbFByb3RvY29sSW50ZXJmYWNlICgNCj4gPiA+ICsgICAgICAgICAgICAgICAg ICBJbWFnZUhhbmRsZSwNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAmZ0VmaVNoZWxsRHluYW1p Y0NvbW1hbmRQcm90b2NvbEd1aWQsDQo+ID4gPiArICAgICAgICAgICAgICAgICAgJm1IdHRwRHlu YW1pY0NvbW1hbmQNCj4gPiA+ICsgICAgICAgICAgICAgICAgICApOw0KPiA+ID4gKyAgaWYgKEVG SV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiA+ID4gKyAg fQ0KPiA+ID4gKw0KPiA+ID4gKyAgSGlpUmVtb3ZlUGFja2FnZXMgKG1IdHRwSGlpSGFuZGxlKTsN Cj4gPiA+ICsNCj4gPiA+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gPiA+ICt9DQo+ID4gPiBk aWZmIC0tZ2l0IGEvU2hlbGxQa2cvRHluYW1pY0NvbW1hbmQvSHR0cER5bmFtaWNDb21tYW5kL0h0 dHAudW5pDQo+ID4gPiBiL1NoZWxsUGtnL0R5bmFtaWNDb21tYW5kL0h0dHBEeW5hbWljQ29tbWFu ZC9IdHRwLnVuaQ0KPiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiA+IGluZGV4IDAwMDAw MDAwMDAwMC4uMDBjZjA1ZGVlYjVjDQo+ID4gPiAtLS0gL2Rldi9udWxsDQo+ID4gPiArKysgYi9T aGVsbFBrZy9EeW5hbWljQ29tbWFuZC9IdHRwRHluYW1pY0NvbW1hbmQvSHR0cC51bmkNCj4gPiA+ IEBAIC0wLDAgKzEsMTE3IEBADQo+ID4gPiArLy8gLyoqDQo+ID4gPiArLy8NCj4gPiA+ICsvLyAo QykgQ29weXJpZ2h0IDIwMTUtMjAxNiBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSBEZXZlbG9w bWVudA0KPiA+IExQPEJSPg0KPiA+ID4gKy8vIENvcHlyaWdodCAoYykgMjAxMCAtIDIwMTgsIElu dGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiA8QlI+DQo+ID4gPiArLy8g Q29weXJpZ2h0IChjKSAyMDIwLCBCcm9hZGNvbS4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ ID4gPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4g PiA+ICsvLw0KPiA+ID4gKy8vIE1vZHVsZSBOYW1lOg0KPiA+ID4gKy8vDQo+ID4gPiArLy8gSHR0 cC51bmkNCj4gPiA+ICsvLw0KPiA+ID4gKy8vIEFic3RyYWN0Og0KPiA+ID4gKy8vDQo+ID4gPiAr Ly8gU3RyaW5nIGRlZmluaXRpb25zIGZvciBVRUZJIFNoZWxsIEhUVFAgY29tbWFuZA0KPiA+ID4g Ky8vDQo+ID4gPiArLy8NCj4gPiA+ICsvLyAqKi8NCj4gPiA+ICsNCj4gPiA+ICsvPSMNCj4gPiA+ ICsNCj4gPiA+ICsjbGFuZ2RlZiAgIGVuLVVTICJlbmdsaXNoIg0KPiA+ID4gKw0KPiA+ID4gKyNz dHJpbmcgU1RSX0dFTl9UT09fTUFOWSAgICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICIlSCVzJU46 IFRvbw0KPiA+IG1hbnkNCj4gPiA+IGFyZ3VtZW50cy4gVHJ5IGhlbHAgaHR0cC5cclxuIg0KPiA+ ID4gKyNzdHJpbmcgU1RSX0dFTl9UT09fRkVXICAgICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICIl SCVzJU46IFRvbyBmZXcNCj4gPiA+IGFyZ3VtZW50cy4gVHJ5IGhlbHAgaHR0cC5cclxuIg0KPiA+ ID4gKyNzdHJpbmcgU1RSX0dFTl9QQVJBTV9JTlYgICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICIl SCVzJU46IEludmFsaWQNCj4gPiA+IGFyZ3VtZW50IC0gJyVIJXMlTicuIFRyeSBoZWxwIGh0dHAu XHJcbiINCj4gPiA+ICsjc3RyaW5nIFNUUl9HRU5fUFJPQkxFTSAgICAgICAgICAgICNsYW5ndWFn ZSBlbi1VUyAiJUglcyVOOiBVbmtub3duDQo+ID4gZmxhZyAtDQo+ID4gPiAnJUglcyVOJy4gVHJ5 IGhlbHAgaHR0cC5cclxuIg0KPiA+ID4gKyNzdHJpbmcgU1RSX0dFTl9GSUxFX09QRU5fRkFJTCAg ICAgI2xhbmd1YWdlIGVuLVVTICIlSCVzJU46IENhbm5vdA0KPiA+IG9wZW4NCj4gPiA+IGZpbGUg LSAnJUglcyVOJ1xyXG4iDQo+ID4gPiArI3N0cmluZyBTVFJfR0VOX0NSTEYgICAgICAgICAgICAg ICAjbGFuZ3VhZ2UgZW4tVVMgIlxyXG4iDQo+ID4gPiArDQo+ID4gPiArI3N0cmluZyBTVFJfSFRU UF9FUlJfTk9fTklDICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgIk5vIG5ldHdvcmsNCj4gPiBpbnRl cmZhY2UNCj4gPiA+IGNhcmQgZm91bmQuXHJcbiINCj4gPiA+ICsjc3RyaW5nIFNUUl9IVFRQX0VS Ul9OSUNfTkFNRSAgICAgICNsYW5ndWFnZSBlbi1VUyAiRmFpbGVkIHRvIGdldCB0aGUNCj4gPiBu YW1lDQo+ID4gPiBvZiB0aGUgbmV0d29yayBpbnRlcmZhY2UgY2FyZCBudW1iZXIgJWQgLSAlclxy XG4iDQo+ID4gPiArI3N0cmluZyBTVFJfSFRUUF9FUlJfT1BFTl9QUk9UT0NPTCAjbGFuZ3VhZ2Ug ZW4tVVMgIlVuYWJsZSB0bw0KPiA+IG9wZW4NCj4gPiA+IEhUVFAgcHJvdG9jb2wgb24gJyVIJXMl TicgLSAlclxyXG4iDQo+ID4gPiArI3N0cmluZyBTVFJfSFRUUF9FUlJfQ09ORklHVVJFICAgICAj bGFuZ3VhZ2UgZW4tVVMgIlVuYWJsZSB0bw0KPiA+IGNvbmZpZ3VyZQ0KPiA+ID4gSFRUUCBwcm90 b2NvbCBvbiAnJUglcyVOJyAtICVyXHJcbiINCj4gPiA+ICsjc3RyaW5nIFNUUl9IVFRQX0VSUl9E T1dOTE9BRCAgICAgICNsYW5ndWFnZSBlbi1VUyAiVW5hYmxlIHRvDQo+ID4gZG93bmxvYWQNCj4g PiA+IHRoZSBmaWxlICclSCVzJU4nIG9uICclSCVzJU4nIC0gJXJcclxuIg0KPiA+ID4gKyNzdHJp bmcgU1RSX0hUVFBfRVJSX1dSSVRFICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICJVbmFibGUgdG8g d3JpdGUNCj4gaW50bw0KPiA+IGZpbGUNCj4gPiA+ICclSCVzJU4nIC0gJXJcclxuIg0KPiA+ID4g KyNzdHJpbmcgU1RSX0hUVFBfRVJSX05JQ19OT1RfRk9VTkQgI2xhbmd1YWdlIGVuLVVTICJOZXR3 b3JrDQo+ID4gSW50ZXJmYWNlDQo+ID4gPiBDYXJkICclSCVzJU4nIG5vdCBmb3VuZC5cclxuIg0K PiA+ID4gKyNzdHJpbmcgU1RSX0hUVFBfRVJSX1NUQVRVU0NPREUgICAgI2xhbmd1YWdlIGVuLVVT ICJcciclSCVzJU4nDQo+ID4gcmVwb3J0cw0KPiA+ID4gJyVzJyBmb3IgJyVIJXMlTicgXHJcbiIN Cj4gPiA+ICsjc3RyaW5nIFNUUl9IVFRQX0RPV05MT0FESU5HICAgICAgICNsYW5ndWFnZSBlbi1V UyAiRG93bmxvYWRpbmcNCj4gPiA+ICclSCVzJU4nXHJcbiINCj4gPiA+ICsNCj4gPiA+ICsjc3Ry aW5nIFNUUl9HRVRfSEVMUF9IVFRQICAgICAgICAgICNsYW5ndWFnZSBlbi1VUyAiIg0KPiA+ID4g KyIuVEggaHR0cCAwICJEb3dubG9hZCBhIGZpbGUgZnJvbSBIVFRQIHNlcnZlci4iXHJcbiINCj4g PiA+ICsiLlNIIE5BTUVcclxuIg0KPiA+ID4gKyJEb3dubG9hZCBhIGZpbGUgZnJvbSBIVFRQIHNl cnZlci5cclxuIg0KPiA+ID4gKyIuU0ggU1lOT1BTSVNcclxuIg0KPiA+ID4gKyIgXHJcbiINCj4g PiA+ICsiSFRUUCBbLWkgaW50ZXJmYWNlXSBbLWwgcG9ydF0gWy10IHRpbWVvdXRdIFstcyBzaXpl XSBbLW1dIFsta11cclxuIg0KPiA+ID4gKyIgICAgICA8VVJMPiBbbG9jYWxmaWxlcGF0aF1cclxu Ig0KPiA+ID4gKyIuU0ggT1BUSU9OU1xyXG4iDQo+ID4gPiArIiBcclxuIg0KPiA+ID4gKyIgIC1p IGludGVyZmFjZSAgICAgLSBTcGVjaWZpZXMgYW4gYWRhcHRlciBuYW1lLCBpLmUuLCBldGgwLlxy XG4iDQo+ID4gPiArIiAgLWsgICAgICAgICAgICAgICAgIEtlZXAgdGhlIGRvd25sb2FkZWQgZmls ZSBldmVuIGlmIHRoZXJlIHdhcyBhbg0KPiBlcnJvci5cclxuIg0KPiA+ID4gKyIgICAgICAgICAg ICAgICAgICAgICBJZiB0aGlzIHBhcmFtZXRlciBpcyBub3QgdXNlZCwgdGhlIGZpbGUgd2lsbCBi ZQ0KPiBkZWxldGVkLlxyXG4iDQo+ID4gPiArIiAgLWwgcG9ydCAgICAgICAgICAtIFNwZWNpZmll cyB0aGUgbG9jYWwgcG9ydCBudW1iZXIuIERlZmF1bHQgdmFsdWUNCj4gaXMgMFxyXG4iDQo+ID4g PiArIiAgICAgICAgICAgICAgICAgICAgIGFuZCB0aGUgcG9ydCBudW1iZXIgaXMgYXV0b21hdGlj YWxseQ0KPiBhc3NpZ25lZC5cclxuIg0KPiA+ID4gKyIgIC1tICAgICAgICAgICAgICAgICBNZWFz dXJlIGFuZCByZXBvcnQgZG93bmxvYWQgdGltZSAoaW4gc2Vjb25kcykuDQo+IFxyXG4iDQo+ID4g PiArIiAgLXMgc2l6ZSAgICAgICAgICAgIFRoZSBzaXplIG9mIHRoZSBkb3dubG9hZCBidWZmZXIg Zm9yIGEgY2h1bmssIGluDQo+IGJ5dGVzLlxyXG4iDQo+ID4gPiArIiAgICAgICAgICAgICAgICAg ICAgIERlZmF1bHQgaXMgMzJLLiBOb3RlIHRoYXQgbGFyZ2VyIGJ1ZmZlciBkb2VzDQo+IG5vdCBp bXBseVxyXG4iDQo+ID4gPiArIiAgICAgICAgICAgICAgICAgICAgIGJldHRlciBzcGVlZC5cclxu Ig0KPiA+ID4gKyIgIC10IHRpbWVvdXQgICAgICAgLSBUaGUgbnVtYmVyIG9mIHNlY29uZHMgdG8g d2FpdCBmb3IgY29tcGxldGlvbg0KPiBvZlxyXG4iDQo+ID4gPiArIiAgICAgICAgICAgICAgICAg ICAgIHJlcXVlc3RzIGFuZCByZXNwb25zZXMuIERlZmF1bHQgaXMgMCB3aGljaCBpcw0KPiAnYXV0 b21hdGljJy5cclxuIg0KPiA+ID4gKyIgICVIVVJMJU5cclxuIg0KPiA+ID4gKyIgIFR3byB0eXBl cyBvZiBwcm92aWRpbmcgb2YgVVJMcyBhcmUgc3VwcG9ydGVkOlxyXG4iDQo+ID4gPiArIiAgICAx LiB0ZnRwLWxpa2UsIHdoZXJlIGhvc3QgYW5kIGh0dHBfdXJpIGFyZSBzZXBhcmF0ZQ0KPiBwYXJh bWV0ZXJzXHJcbiINCj4gPiA+ICsiICAgICAgIChleGFtcGxlOiBob3N0IC9ob3N0X3VyaSksIGFu ZFxyXG5cIg0KPiA+ID4gKyIgICAgMi4gd2dldC1saWtlLCB3aGVyZSBob3N0IGFuZCBob3N0X3Vy aSBpcyBvbmUgcGFyYW1ldGVyLlxyXG4iDQo+ID4gPiArIiAgICAgICAoZXhhbXBsZTogaG9zdC9o b3N0X3VyaSlcclxuIg0KPiA+ID4gKyJcclxuIg0KPiA+ID4gKyIgICAgaG9zdCAgICAgICAgICAg ICAtIFNwZWNpZmllcyBIVFRQIFNlcnZlciBhZGRyZXNzLlxyXG4NCj4gPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICBDYW4gYmUgZWl0aGVyIElQdjQgYWRkcmVzcyBvciAnaHR0cCAob3INCj4g aHR0cHMpOi8vYWRkcidcclxuDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgQ2FuIHVz ZSBhZGRyZXNzZXMgcmVzb2x2YWJsZSBieSBETlMgYXMgd2VsbC4NCj4gXHJcbg0KPiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgIFBvcnQgY2FuIGJlIHNwZWNpZmllZCBhZnRlciAnOicgaWYg bmVlZGVkLg0KPiBcclxuDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVs dCBwb3J0IDgwIGlzIHVzZWQuXHJcbiINCj4gPiA+ICsiICAgIGh0dHBfdXJpICAgICAgICAgLSBI VFRQIHNlcnZlciBVUkkgdG8gZG93bmxvYWQgdGhlIGZpbGUuXHJcbiINCj4gPiA+ICsiXHJcbiIN Cj4gPiA+ICsiICBsb2NhbGZpbGVwYXRoICAgIC0gTG9jYWwgZGVzdGluYXRpb24gZmlsZSBwYXRo LlxyXG4iDQo+ID4gPiArIi5TSCBERVNDUklQVElPTlxyXG4iDQo+ID4gPiArIiBcclxuIg0KPiA+ ID4gKyJOT1RFUzpcclxuIg0KPiA+ID4gKyIgIDEuIFRoZSBIVFRQIGNvbW1hbmQgYWxsb3dzIGdl dGluZyBvZiB0aGUgZmlsZSBzcGVjaWZpZWQgYnkgaXRzDQo+ID4gJ2h0dHBfdXJpJ1xyXG4iDQo+ ID4gPiArIiAgICAgcGF0aCBmcm9tIHRoZSBIVFRQIHNlcnZlciBzcGVjaWZpZWQgYnkgaXRzICdo b3N0JyBJUHY0IGFkZHJlc3MuDQo+IElmDQo+ID4gdGhlXHJcbiINCj4gPiA+ICsiICAgICBvcHRp b25hbCAnbG9jYWxmaWxlcGF0aCcgcGFyYW1ldGVyIGlzIHByb3ZpZGVkLCB0aGUgZG93bmxvYWRl ZA0KPiBmaWxlDQo+ID4gaXNcclxuIg0KPiA+ID4gKyIgICAgIHN0b3JlZCBsb2NhbGx5IHVzaW5n IHRoZSBwcm92aWRlZCBmaWxlIHBhdGguIElmIHRoZSBsb2NhbCBmaWxlDQo+IHBhdGggaXNcclxu Ig0KPiA+ID4gKyIgICAgIG5vdCBzcGVjaWZpZWQsIHRoZSBmaWxlIGlzIHN0b3JlZCBpbiB0aGUg Y3VycmVudCBkaXJlY3RvcnkNCj4gdXNpbmcgdGhlDQo+ID4gZmlsZVxyXG4iDQo+ID4gPiArIiAg ICAgc2VydmVyJ3MgbmFtZS5cclxuIg0KPiA+ID4gKyIgIDIuIEJlZm9yZSB1c2luZyB0aGUgSFRU UCBjb21tYW5kLCB0aGUgbmV0d29yayBpbnRlcmZhY2UgaW50ZW5kZWQNCj4gdG8NCj4gPiA+IGJl XHJcbiINCj4gPiA+ICsiICAgICB1c2VkIHRvIHJldHJpZXZlIHRoZSBmaWxlIG11c3QgYmUgY29u ZmlndXJlZC4gVGhpcw0KPiBjb25maWd1cmF0aW9uIG1heQ0KPiA+IGJlXHJcbiINCj4gPiA+ICsi ICAgICBkb25lIGJ5IG1lYW5zIG9mIHRoZSAnaWZjb25maWcnIGNvbW1hbmQuXHJcbiINCj4gPiA+ ICsiICAzLiBJZiBhIG5ldHdvcmsgaW50ZXJmYWNlIGlzIGRlZmluZWQgd2l0aCB0aGUgJy1pJyBv cHRpb24gdGhlbg0KPiBvbmx5DQo+ID4gdGhpc1xyXG4iDQo+ID4gPiArIiAgICAgaW50ZXJmYWNl IHdpbGwgYmUgdXNlZCB0byByZXRyaWV2ZSB0aGUgcmVtb3RlIGZpbGUuIE90aGVyd2lzZSwNCj4g YWxsDQo+ID4gPiBuZXR3b3JrXHJcbiINCj4gPiA+ICsiICAgICBpbnRlcmZhY2VzIGFyZSB0cmll ZCBpbiB0aGUgb3JkZXIgdGhleSBoYXZlIGJlZW4gZGlzY292ZXJlZA0KPiBkdXJpbmcNCj4gPiB0 aGVcclxuIg0KPiA+ID4gKyIgICAgIERYRSBwaGFzZS5cclxuIg0KPiA+ID4gKyIuU0ggRVhBTVBM RVNcclxuIg0KPiA+ID4gKyIgXHJcbiINCj4gPiA+ICsiRVhBTVBMRVM6XHJcbiINCj4gPiA+ICsi ICAqIFRvIGdldCB0aGUgZmlsZSAiZGlyMS9maWxlMS5kYXQiIGZyb20gdGhlIEhUVFAgc2VydmVy DQo+IDE5Mi4xNjguMS4xLCBwb3J0DQo+ID4gODA4MCwNCj4gPiA+IGFuZFxyXG4iDQo+ID4gPiAr IiAgICBzdG9yZSBpdCBhcyBmaWxlMi5kYXQgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5ICh1c2Ug dGZ0cC1saWtlDQo+IFVSTCBmb3JtYXQpDQo+ID4gOlxyXG4iDQo+ID4gPiArIiAgICBmczA6XD4g aHR0cCAxOTIuMTY4LjEuMTo4MDgwIGRpcjEvZmlsZTEuZGF0IGZpbGUyLmRhdFxyXG4iDQo+ID4g PiArIiAgKiBUbyBnZXQgdGhlIGZpbGUgL2ltYWdlLmJpbiB2aWEgSFRUUFMgZnJvbSBzZXJ2ZXIg MTkyLjE2OC4xLjEgYXQNCj4gcG9ydCA0NDMNCj4gPiA+IFxyXG4iDQo+ID4gPiArIiAgICAoZGVm YXVsdCBIVFRQUyBwb3J0KSwgYW5kIHN0b3JlIGl0IGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeToN Cj4gXHJcbiINCj4gPiA+ICsiICAgIGZzMDpcPiBodHRwIGh0dHBzOi8vMTkyLjE2OC4xLjEgaW1h Z2UuYmluXHJcbiINCj4gPiA+ICsiICAgIFRvIGdldCBhbiBpbmRleCBmaWxlIGZyb20gaHR0cDov L2dvb2dsZS5jb20gYW5kIHBsYWNlIGl0IGludG8NCj4gdGhlIFxyXG4iDQo+ID4gPiArIiAgICBj dXJyZW50IGRpcmVjdG9yeTpcclxuIg0KPiA+ID4gKyIgICAgZnMwOlw+IGh0dHAgZ29vZ2xlLmNv bSBpbmRleC5odG1sXHJcbiINCj4gPiA+ICsiLlNIIFJFVFVSTlZBTFVFU1xyXG4iDQo+ID4gPiAr IiBcclxuIg0KPiA+ID4gKyJSRVRVUk4gVkFMVUVTOlxyXG4iDQo+ID4gPiArIiAgU0hFTExfU1VD Q0VTUyAgICAgICAgICAgICBUaGUgYWN0aW9uIHdhcyBjb21wbGV0ZWQgYXMNCj4gcmVxdWVzdGVk LlxyXG4iDQo+ID4gPiArIiAgU0hFTExfSU5WQUxJRF9QQVJBTUVURVIgICBPbmUgb2YgdGhlIHBh c3NlZC1pbiBwYXJhbWV0ZXJzIHdhcw0KPiA+ID4gaW5jb3JyZWN0bHlcclxuIg0KPiA+ID4gKyIg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkIG9yIGl0cyB2YWx1ZSB3YXMgb3V0 IG9mDQo+IGJvdW5kcy5cclxuIg0KPiA+ID4gKyIgIEhUVFBfRVJST1IgICAgICAgICAgICAgICAg Tm8gRUZJIGVycm9ycywgYnV0IHRoZSBzZXJ2ZXIgcmVwb3J0ZWQgYQ0KPiBzdGF0dXMNCj4gPiA+ IGNvZGVcclxuIg0KPiA+ID4gKyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggc2hv dWxkIGJlIHRyZWF0ZWQgYXMgYW4gZXJyb3IuIElmDQo+IGFuIGVycm9yIGJvZHkNCj4gPiBzZW50 XHJcbiINCj4gPiA+ICsiICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5IHRoZSBzZXJ2ZXIs IGFuZCAtayBwYXJhbWV0ZXIgaXMgb24NCj4gY29tbWFuZCBsaW5lLA0KPiA+ID4gKyIgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdGhlIGZpbGUgd2lsIGJlIHNhdmVkIGVpdGhlciBhcw0KPiBs b2NhbGZpbGVwYXRoIGZpbGVuYW1lLFxyXG4iDQo+ID4gPiArIiAgICAgICAgICAgICAgICAgICAg ICAgICAgICBvciBhcyBhbiBVUkkgbmFtZSBpbiB0aGUgY3VycmVudA0KPiBkaXJlY3RvcnkuXHJc biINCj4gPiA+ICsiICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmICcvJyBpcyBhdCB0aGUg ZW5kIG9mIHRoZSBVUkwsIGFuZCBubw0KPiBsb2NhZmlsZXBhdGgNCj4gPiBmaWxlbmFtZVxyXG4i DQo+ID4gPiArIiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBnaXZlbiBvbiB0aGUgY29t bWFuZCBsaW5lLCB0aGUgZmlsZQ0KPiB3aWxsIGJlIHJldHJpZXZlZA0KPiA+IGFzXHJcbiINCj4g PiA+ICsiICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4Lmh0bWwuXHJcbiINCj4gPiA+ IC0tDQo+ID4gPiAyLjI4LjAuMzk0LmdlMTk3MTM2Mzg5DQo=