From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0b-002e3701.pphosted.com (mx0b-002e3701.pphosted.com [148.163.143.35]) by mx.groups.io with SMTP id smtpd.web11.31945.1604326475520732751 for ; Mon, 02 Nov 2020 06:14:36 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@hpe.com header.s=pps0720 header.b=NAr/OYKg; spf=pass (domain: hpe.com, ip: 148.163.143.35, mailfrom: prvs=05756fe021=abner.chang@hpe.com) Received: from pps.filterd (m0134424.ppops.net [127.0.0.1]) by mx0b-002e3701.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 0A2E6d8a010080; Mon, 2 Nov 2020 14:14:34 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hpe.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=pps0720; bh=Reu8LGLwchCBi+hXUX+2DDGpxIbh7/ks/DPJXLO71P4=; b=NAr/OYKgLPqYMxLk6k9keLr0xH6kZaeX0e3b4a26RI5aePPHiZkzBu2V+JBM6rDVYnfc tpDfLzgDOebKEPjvZkGUR0ilmuwuZTN27FVeDE3XtotMfEy0e+rN0JT2RWIC2HaorNjH 85yGMF8pycrKZ2LNHd9NC6nkx5MQYw9nX/vHzhALgIDXb0vakwhfOo3fwbNJGyJb7+p0 RzX+HKz679eznsw7YkpaV/k1QXFmHELe/Z6klrvGbzBmABVjq2kzMmLjyjDQXYM0SvTS Iaoli0cNi1RITAO3ZwpHJMfmEnx5DYJvFpfFDjYFr55bvx0b3K5P/mjQtC7cOTmzC4m7 nA== Received: from g2t2354.austin.hpe.com (g2t2354.austin.hpe.com [15.233.44.27]) by mx0b-002e3701.pphosted.com with ESMTP id 34h07gxxqy-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 02 Nov 2020 14:14:34 +0000 Received: from G2W6311.americas.hpqcorp.net (g2w6311.austin.hp.com [16.197.64.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by g2t2354.austin.hpe.com (Postfix) with ESMTPS id 5E335AC; Mon, 2 Nov 2020 14:14:33 +0000 (UTC) Received: from G4W9332.americas.hpqcorp.net (16.208.32.118) by G2W6311.americas.hpqcorp.net (16.197.64.53) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Mon, 2 Nov 2020 14:14:33 +0000 Received: from G9W9210.americas.hpqcorp.net (2002:10dc:429b::10dc:429b) by G4W9332.americas.hpqcorp.net (2002:10d0:2076::10d0:2076) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Mon, 2 Nov 2020 14:14:32 +0000 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (15.241.52.13) by G9W9210.americas.hpqcorp.net (16.220.66.155) with Microsoft SMTP Server (TLS) id 15.0.1497.2 via Frontend Transport; Mon, 2 Nov 2020 14:14:32 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=b9hCTbMWwjKNHqaYgTDFS68N/W6nLOd3GWNBYOo3G4ZoE0e6SKMDY18UAsTJhtbo1QMnvXZ4DD/FO9/NYgYZkXPPuQYD5OcsjutP06zqYZHw2yLCshjoiUjJaak9iC0ekaY4E43m5HyKWCndhxvXaWqwPjVoEAE9gQIRN1w8RNeE+BSTWynnqjFL0L97eAcoe+UtlQJUYU7a5AUQOAU9qoZMLagtdZkBuOCkl9ajq5LCuuCrruGCPhFq+w6KFmxefOzsKngXihcKixG3Tr2WSIvOSmZTcu2hoW8if4l2HdU8YKrnQn9taOuEiZaV7L8IUmIGsy67Hw3hBhzTSBOWCg== 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=ujqaeSLz4G0AzgE3/goAYs7IU2K9oT3tEEQMV9DSw90=; b=L56Rscfqe5d5DDNrypijVxNP34uXK4ywfrkAhT6g7ksYbKGFkwn5lv9aQuw9hgRfnI6kJl1ZNM56KCMj3WkmUC3y/fHcJgLo4ovmMN2lvvrpNnLH14Rg4WfmsnAeALz6gqe4JsRiCOTHCrD2aqiwYUjirxwtjb3PmT1NxWiA39Jj+5gse9kWS+85FEPXwpadcR7pvkMUtb/ZNWhIhpkueCOPcVRCPile0e6YzpyveMZa6r/LY8kHdyM7I5YhqwWjnzyD89fsaIKrO2p02HLNHd4GIKkP41M+snWHLkYpTZjNJcqmEkIuC7pWC/ljnTUsqu5erwP2r6G9V9WJXaFRAQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=hpe.com; dmarc=pass action=none header.from=hpe.com; dkim=pass header.d=hpe.com; arc=none Received: from CS1PR8401MB1144.NAMPRD84.PROD.OUTLOOK.COM (2a01:111:e400:7508::16) by CS1PR8401MB1286.NAMPRD84.PROD.OUTLOOK.COM (2a01:111:e400:7514::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3499.27; Mon, 2 Nov 2020 14:14:29 +0000 Received: from CS1PR8401MB1144.NAMPRD84.PROD.OUTLOOK.COM ([fe80::f4a5:2722:be1c:7222]) by CS1PR8401MB1144.NAMPRD84.PROD.OUTLOOK.COM ([fe80::f4a5:2722:be1c:7222%6]) with mapi id 15.20.3499.030; Mon, 2 Nov 2020 14:14:29 +0000 From: "Abner Chang" To: "Rabeda, Maciej" , "devel@edk2.groups.io" CC: Jiaxin Wu , Siyuan Fu , "Wang, Nickle (HPS SW)" Subject: Re: [edk2-devel] [DxeHttpIoLib PATCH V2 1/3] NetworkPkg/Library: Implementation of Http IO Helper Library Thread-Topic: [edk2-devel] [DxeHttpIoLib PATCH V2 1/3] NetworkPkg/Library: Implementation of Http IO Helper Library Thread-Index: AQHWqVkEIIf+aozq3EiZb39ZTth0kqmpI2IggAQ57ICAAL9XAIAGvgQAgAARZrA= Date: Mon, 2 Nov 2020 14:14:29 +0000 Message-ID: References: <20201020023848.3015-1-abner.chang@hpe.com> <20201020023848.3015-2-abner.chang@hpe.com> <036e09c1-d1c8-8d8b-44fb-7f252ccf1bad@linux.intel.com> <909b9d7b-9018-fe0a-a9f7-f6477403f84d@linux.intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: linux.intel.com; dkim=none (message not signed) header.d=none;linux.intel.com; dmarc=none action=none header.from=hpe.com; x-originating-ip: [1.34.113.40] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 93bee84d-6074-40f5-2652-08d87f399cee x-ms-traffictypediagnostic: CS1PR8401MB1286: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:7219; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Q6bBn4Tsi62XyAiPi8Zf/lvzF/piSLDxAFRJNTCCm9Oh6cr0yJIIVIxPiy7IP/9c3dBryunU9VZffPIVWeJvBNCvFZ/8YD8C5PE3f9TzuoBEoAuQ8R/ff46NLgtpXObONh7Zrgun/v2/pKqwBMGfzYVrUJBpPkVEMUYqWAXe5FuUM6HAXthImhJnfUka1KUzt0wUDMKPvX4MMEtMONG9VWReGpYqO28zQWRRDe6Q4AAtwPOTUdLyQ/0o5gWkQONuxVBzxnnjnDiKOmnihlWCQZ5m6CEfy9UAqv7qRsVfQECzqu9glqsxeyJB8g8zeZ9jm5SuiutFmUwWsVC+P9nN8RiZgBWqdsGnmiWmbzF0D9PjP6PRuHFTXbRp2rTiwGn9o1pIDcLKLNKdOqtb4IBYGw== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CS1PR8401MB1144.NAMPRD84.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(6029001)(396003)(39860400002)(136003)(366004)(346002)(376002)(54906003)(9686003)(110136005)(33656002)(7696005)(55016002)(8676002)(71200400001)(966005)(8936002)(76116006)(316002)(186003)(64756008)(66446008)(66476007)(26005)(19627235002)(66556008)(478600001)(66946007)(5660300002)(2906002)(53546011)(4326008)(6506007)(30864003)(52536014)(83380400001)(86362001)(579004)(559001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: 3vRgGSWRnLcgjkjmmbhQkVO2CQCuH1kt/FLU5u7u5DYxVTljqt1ApNlU2f6DBUcmnpRoWfgxJwM7vSYbl7EwXgil7Jjr+4uaqodSi9UJeTB8TTFztCFaDUEJPEbswaAnYmlTfD7TXHpm87iQpWMXwbcL2lkNL9I3tmBaKDAsTtfe55gK296GF1i+UyFHn06fZ2ozCxHKhz8gwcUgWwmsIbw64Z1lKyhfSDiwkMi1PTeA3Oh0fU2P4M13k1DMxG8ZNmF2TDCPBjkcBVuYfY0foo8MkL/aWRV0Zl0xAvd6siY6if6H16Gtz8/CS3uOfqGCTSvP25OYN18j3b0P2W9R7o4/WdnGNQtPlgmQl7O9r/Ffkn/gVyKLtwjKDPlCLay7t3Dw29TPeqPXIZLCoRdCry9LtB5qNo17gP3DxRnoRWgcu6wjcgXvae68A4FADb8I76KB18BWW/EfvnftjgAMSuwxvU0Uz6GgKNBdMQHA+To3Oc0zAp838+5B9nhxl2EOIECW78O7GJpdGltQoiPlUqH3Qu4ZdlhwqINeCQxQrP1t9x2BdBsbJwLN8WAsvZsJiRrMKLYEC5pAVeoO+e4k5TKSw+6zNPHTdA9Ma6xV7trqJMM0tooJI99wULH2OPv13IVZlG/NXexvbQpGL+MuEg== X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CS1PR8401MB1144.NAMPRD84.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: 93bee84d-6074-40f5-2652-08d87f399cee X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Nov 2020 14:14:29.4102 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 105b2061-b669-4b31-92ac-24d304d195dc X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: uFlaM4MM2aTuIhnhFHqu/Sj1ZwngTpJKbhQThPxbiOiEaCr44+1k/W0nSUihfYD5uTuIU20pNAgVS+WzchM/cw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CS1PR8401MB1286 X-OriginatorOrg: hpe.com X-Proofpoint-UnRewURL: 0 URL was un-rewritten MIME-Version: 1.0 X-HPE-SCL: -1 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.312,18.0.737 definitions=2020-11-02_07:2020-11-02,2020-11-02 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 malwarescore=0 impostorscore=0 clxscore=1015 lowpriorityscore=0 phishscore=0 spamscore=0 priorityscore=1501 adultscore=0 mlxlogscore=999 mlxscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2009150000 definitions=main-2011020112 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogUmFiZWRhLCBNYWNpZWog W21haWx0bzptYWNpZWoucmFiZWRhQGxpbnV4LmludGVsLmNvbV0NCj4gU2VudDogTW9uZGF5LCBO b3ZlbWJlciAyLCAyMDIwIDg6NTAgUE0NCj4gVG86IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBDaGFu ZywgQWJuZXIgKEhQUyBTVy9GVyBUZWNobm9sb2dpc3QpDQo+IDxhYm5lci5jaGFuZ0BocGUuY29t Pg0KPiBDYzogSmlheGluIFd1IDxqaWF4aW4ud3VAaW50ZWwuY29tPjsgU2l5dWFuIEZ1IDxzaXl1 YW4uZnVAaW50ZWwuY29tPjsNCj4gV2FuZywgTmlja2xlIChIUFMgU1cpIDxuaWNrbGUud2FuZ0Bo cGUuY29tPg0KPiBTdWJqZWN0OiBSZTogW2VkazItZGV2ZWxdIFtEeGVIdHRwSW9MaWIgUEFUQ0gg VjIgMS8zXSBOZXR3b3JrUGtnL0xpYnJhcnk6DQo+IEltcGxlbWVudGF0aW9uIG9mIEh0dHAgSU8g SGVscGVyIExpYnJhcnkNCj4gDQo+IEhpIEFibmVyLA0KPiANCj4gQ29tbWVudHMgaW5saW5lLg0K PiANCj4gVGhhbmtzLA0KPiBNYWNpZWoNCj4gDQo+IE9uIDI5LU9jdC0yMCAwNzoxMSwgQWJuZXIg Q2hhbmcgd3JvdGU6DQo+ID4NCj4gPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4g RnJvbTogUmFiZWRhLCBNYWNpZWogW21haWx0bzptYWNpZWoucmFiZWRhQGxpbnV4LmludGVsLmNv bV0NCj4gPj4gU2VudDogVGh1cnNkYXksIE9jdG9iZXIgMjksIDIwMjAgMjoyOCBBTQ0KPiA+PiBU bzogZGV2ZWxAZWRrMi5ncm91cHMuaW87IENoYW5nLCBBYm5lciAoSFBTIFNXL0ZXIFRlY2hub2xv Z2lzdCkNCj4gPj4gPGFibmVyLmNoYW5nQGhwZS5jb20+DQo+ID4+IENjOiBKaWF4aW4gV3UgPGpp YXhpbi53dUBpbnRlbC5jb20+OyBTaXl1YW4gRnUgPHNpeXVhbi5mdUBpbnRlbC5jb20+Ow0KPiA+ PiBXYW5nLCBOaWNrbGUgKEhQUyBTVykgPG5pY2tsZS53YW5nQGhwZS5jb20+DQo+ID4+IFN1Ympl Y3Q6IFJlOiBbZWRrMi1kZXZlbF0gW0R4ZUh0dHBJb0xpYiBQQVRDSCBWMiAxLzNdDQo+IE5ldHdv cmtQa2cvTGlicmFyeToNCj4gPj4gSW1wbGVtZW50YXRpb24gb2YgSHR0cCBJTyBIZWxwZXIgTGli cmFyeQ0KPiA+Pg0KPiA+PiBUaGFua3MgZm9yIHBhdGNoaW5nIHNwZWxsaW5nIHByb2JsZW1zIGlu IE1kZVBrZyBoZWFkZXIuDQo+ID4+IEkgd2lsbCBzZW5kIG1vcmUgY29tbWVudHMgb24gdjMuIEFk ZGVkIG9uZSBoZXJlIHJlZ2FyZGluZyBjaHVuaw0KPiB0cmFuc2Zlcg0KPiA+PiBzZWN1cml0eS4N Cj4gPj4NCj4gPj4gVGhhbmtzLA0KPiA+PiBNYWNpZWoNCj4gPj4NCj4gPj4gT24gMjYtT2N0LTIw IDA3OjUzLCBBYm5lciBDaGFuZyB3cm90ZToNCj4gPj4+IFRoYW5rcyBmb3IgcmV2aWV3aW5nIHRo aXMgTWFjaWVqLg0KPiA+Pj4NCj4gPj4+IE1vc3Qgb2YgY29tbWVudHMgYXJlIGFkZHJlc3NlZC4g SSBhbHNvIHN1Ym1pdHRlZCBhIEJaIGZvciB0aGUgd3JvbmcNCj4gPj4gc3BlbGxpbmcgb2YgQ0hV TktfVFJOQVNGRVJfKiwgdGhlIHBhdGNoIGlzIGFscmVhZHkgc2VudC4NCj4gPj4+IFYzIG9mIHRo aXMgcGF0Y2ggc2V0IGlzIGFsc28gc2VudCB0byB0aGUgbWFpbGluZyBsaXN0Lg0KPiA+Pj4NCj4g Pj4+IE90aGVyIGZlZWRiYWNrcyAgYXJlIGluIGJlbG93LA0KPiA+Pj4NCj4gPj4+PiAtLS0tLU9y aWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+Pj4+IEZyb206IFJhYmVkYSwgTWFjaWVqIFttYWlsdG86 bWFjaWVqLnJhYmVkYUBsaW51eC5pbnRlbC5jb21dDQo+ID4+Pj4gU2VudDogU2F0dXJkYXksIE9j dG9iZXIgMjQsIDIwMjAgMTI6MjUgQU0NCj4gPj4+PiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW87 IENoYW5nLCBBYm5lciAoSFBTIFNXL0ZXIFRlY2hub2xvZ2lzdCkNCj4gPj4+PiA8YWJuZXIuY2hh bmdAaHBlLmNvbT4NCj4gPj4+PiBDYzogSmlheGluIFd1IDxqaWF4aW4ud3VAaW50ZWwuY29tPjsg U2l5dWFuIEZ1IDxzaXl1YW4uZnVAaW50ZWwuY29tPjsNCj4gPj4+PiBXYW5nLCBOaWNrbGUgKEhQ UyBTVykgPG5pY2tsZS53YW5nQGhwZS5jb20+DQo+ID4+Pj4gU3ViamVjdDogUmU6IFtlZGsyLWRl dmVsXSBbRHhlSHR0cElvTGliIFBBVENIIFYyIDEvM10NCj4gPj4gTmV0d29ya1BrZy9MaWJyYXJ5 Og0KPiA+Pj4+IEltcGxlbWVudGF0aW9uIG9mIEh0dHAgSU8gSGVscGVyIExpYnJhcnkNCj4gPj4+ Pg0KPiA+Pj4+IEhpIEFibmVyLA0KPiA+Pj4+DQo+ID4+Pj4gSSB1bmRlcnN0YW5kIHRoZSBjb25j ZXB0IG9mIG1vdmluZyBIVFRQIEkvTyBsYXllciBvdXRzaWRlDQo+IEh0dHBCb290RHhlDQo+ID4+ IGFuZA0KPiA+Pj4+IGludG8gYSBzZXBhcmF0ZSBsaWJyYXJ5IGFuZCBJIGFwcHJvdmUgaXQuDQo+ ID4+Pj4gSG93ZXZlciwgdGhlcmUgYXJlIHNvbWUgdGhpbmdzIHRoYXQgaGF2ZSB0bw0KPiBhZGRy ZXNzZWQvZml4ZWQvZXhwbGFpbmVkDQo+ID4+Pj4gaGVyZS4NCj4gPj4+PiBTZWUgY29tbWVudHMg d2l0aGluIHRoZSBwYXRjaC4NCj4gPj4+Pg0KPiA+Pj4+IE9uIDIwLU9jdC0yMCAwNDozOCwgQWJu ZXIgQ2hhbmcgd3JvdGU6DQo+ID4+Pj4+IEFkZCBIVFRQIElPIGhlbHBlciBsaWJyYXJ5IHdoaWNo IGNvdWxkIGJlIHN1ZWQgYnkgSFRUUCBhcHBsaWNhdGlvbnMNCj4gPj4+Pj4gc3VjaCBhcyBIVFRQ IEJvb3QsIFJlZGZpc2ggSFRUUCBSRVNUIEVYIGRyaXZlciBpbnN0YW5jZSBhbmQgZXRjLg0KPiA+ Pj4+Pg0KPiA+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBBYm5lciBDaGFuZyA8YWJuZXIuY2hhbmdAaHBl LmNvbT4NCj4gPj4+Pj4NCj4gPj4+Pj4gQ2M6IE1hY2llaiBSYWJlZGEgPG1hY2llai5yYWJlZGFA bGludXguaW50ZWwuY29tPg0KPiA+Pj4+PiBDYzogSmlheGluIFd1IDxqaWF4aW4ud3VAaW50ZWwu Y29tPg0KPiA+Pj4+PiBDYzogU2l5dWFuIEZ1IDxzaXl1YW4uZnVAaW50ZWwuY29tPg0KPiA+Pj4+ PiBDYzogTmlja2xlIFdhbmcgPG5pY2tsZS53YW5nQGhwZS5jb20+DQo+ID4+Pj4+IC0tLQ0KPiA+ Pj4+PiAgICAgTmV0d29ya1BrZy9JbmNsdWRlL0xpYnJhcnkvSHR0cElvTGliLmggICAgICAgIHwg MzI4ICsrKysrKysNCj4gPj4+Pj4gICAgIC4uLi9MaWJyYXJ5L0R4ZUh0dHBJb0xpYi9EeGVIdHRw SW9MaWIuYyAgICAgICB8IDgwOQ0KPiA+PiArKysrKysrKysrKysrKysrKysNCj4gPj4+Pj4gICAg IC4uLi9MaWJyYXJ5L0R4ZUh0dHBJb0xpYi9EeGVIdHRwSW9MaWIuaW5mICAgICB8ICA0MyArDQo+ ID4+Pj4+ICAgICAuLi4vTGlicmFyeS9EeGVIdHRwSW9MaWIvRHhlSHR0cElvTGliLnVuaSAgICAg fCAgMTMgKw0KPiA+Pj4+PiAgICAgNCBmaWxlcyBjaGFuZ2VkLCAxMTkzIGluc2VydGlvbnMoKykN Cj4gPj4+Pj4gICAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBOZXR3b3JrUGtnL0luY2x1ZGUvTGlicmFy eS9IdHRwSW9MaWIuaA0KPiA+Pj4+PiAgICAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+IE5ldHdvcmtQ a2cvTGlicmFyeS9EeGVIdHRwSW9MaWIvRHhlSHR0cElvTGliLmMNCj4gPj4+Pj4gICAgIGNyZWF0 ZSBtb2RlIDEwMDY0NA0KPiA+PiBOZXR3b3JrUGtnL0xpYnJhcnkvRHhlSHR0cElvTGliL0R4ZUh0 dHBJb0xpYi5pbmYNCj4gPj4+Pj4gICAgIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiA+PiBOZXR3b3Jr UGtnL0xpYnJhcnkvRHhlSHR0cElvTGliL0R4ZUh0dHBJb0xpYi51bmkNCj4gPj4+Pj4gZGlmZiAt LWdpdCBhL05ldHdvcmtQa2cvSW5jbHVkZS9MaWJyYXJ5L0h0dHBJb0xpYi5oDQo+ID4+Pj4+IGIv TmV0d29ya1BrZy9JbmNsdWRlL0xpYnJhcnkvSHR0cElvTGliLmgNCj4gPj4+Pj4gbmV3IGZpbGUg bW9kZSAxMDA2NDQNCj4gPj4+Pj4gaW5kZXggMDAwMDAwMDAwMC4uOGYzODA0Y2E0Mg0KPiA+Pj4+ PiAtLS0gL2Rldi9udWxsDQo+ID4+Pj4+ICsrKyBiL05ldHdvcmtQa2cvSW5jbHVkZS9MaWJyYXJ5 L0h0dHBJb0xpYi5oDQo+ID4+Pj4+IEBAIC0wLDAgKzEsMzI4IEBADQo+ID4+Pj4+ICsvKiogQGZp bGUNCj4gPj4+Pj4gKyAgSHR0cElvTGliLmguDQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyhDKSBDb3B5 cmlnaHQgMjAyMCBIZXdsZXR0LVBhY2thcmQgRGV2ZWxvcG1lbnQgQ29tcGFueSwNCj4gTC5QLjxC Uj4NCj4gPj4+Pj4gK1NQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50 DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyoqLw0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsjaWZuZGVmIEhU VFBfSU9fTElCX0hfDQo+ID4+Pj4+ICsjZGVmaW5lIEhUVFBfSU9fTElCX0hfDQo+ID4+Pj4+ICsN Cj4gPj4+Pj4gKyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJkL0h0dHAxMS5oPg0KPiA+Pj4+PiAr DQo+ID4+Pj4+ICsjaW5jbHVkZSA8TGlicmFyeS9EcGNMaWIuaD4NCj4gPj4+Pj4gKyNpbmNsdWRl IDxMaWJyYXJ5L0h0dHBMaWIuaD4NCj4gPj4+Pj4gKyNpbmNsdWRlIDxMaWJyYXJ5L05ldExpYi5o Pg0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsjZGVmaW5lIEhUVFBfSU9fTUFYX1NFTkRfUEFZTE9BRCAg ICAgICAgICAgICAgICAgICAgMTAyNA0KPiA+Pj4+PiArI2RlZmluZSBIVFRQX0lPX0NIVU5LX1NJ WkVfU1RSSU5HX0xFTiAgICAgICAgICAgICAgIDUwDQo+ID4+Pj4+ICsjZGVmaW5lIEhUVFBfSU9f Q0hVTktFRF9UUkFOU0ZFUl9DT0RJTkdfREFUQV9MRU5HVEgNCj4gMjU2DQo+ID4+Pj4+ICsNCj4g Pj4+Pj4gKy8vLw0KPiA+Pj4+PiArLy8vIEhUVFBfSU9fQ0FMTEJBQ0tfRVZFTlQNCj4gPj4+Pj4g Ky8vLw0KPiA+Pj4+PiArdHlwZWRlZiBlbnVtIHsNCj4gPj4+Pj4gKyAgSHR0cElvUmVxdWVzdCwN Cj4gPj4+Pj4gKyAgSHR0cElvUmVzcG9uc2UNCj4gPj4+Pj4gK30gSFRUUF9JT19DQUxMQkFDS19F VkVOVDsNCj4gPj4+Pj4gKw0KPiA+Pj4+PiArLyoqDQo+ID4+Pj4+ICsgIEh0dHBJbyBDYWxsYmFj ayBmdW5jdGlvbiB3aGljaCB3aWxsIGJlIGludm9rZWQgd2hlbiBzcGVjaWZpZWQNCj4gPj4+PiBI VFRQX0lPX0NBTExCQUNLX0VWRU5UIGhhcHBlbmVkLg0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgIEBw YXJhbVtpbl0gICAgRXZlbnRUeXBlICAgICAgSW5kaWNhdGUgdGhlIEV2ZW50IHR5cGUgdGhhdCBv Y2N1cnMgaW4NCj4gdGhlDQo+ID4+Pj4gY3VycmVudCBjYWxsYmFjay4NCj4gPj4+Pj4gKyAgQHBh cmFtW2luXSAgICBNZXNzYWdlICAgICAgICBIVFRQIG1lc3NhZ2Ugd2hpY2ggd2lsbCBiZSBzZW5k IHRvLCBvcg0KPiBqdXN0DQo+ID4+Pj4gcmVjZWl2ZWQgZnJvbSBIVFRQIHNlcnZlci4NCj4gPj4+ Pj4gKyAgQHBhcmFtW2luXSAgICBDb250ZXh0ICAgICAgICBUaGUgQ2FsbGJhY2sgQ29udGV4dCBw b2ludGVyLg0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAg ICAgVGVsbHMgdGhlIEh0dHBJbyB0byBjb250aW51ZSB0aGUgSFRUUA0KPiA+PiBwcm9jZXNzLg0K PiA+Pj4+PiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgICAgIFRlbGxzIHRoZSBIdHRwSW8g dG8gYWJvcnQgdGhlIGN1cnJlbnQgSFRUUA0KPiA+PiBwcm9jZXNzLg0KPiA+Pj4+PiArKiovDQo+ ID4+Pj4+ICt0eXBlZGVmDQo+ID4+Pj4+ICtFRklfU1RBVFVTDQo+ID4+Pj4+ICsoRUZJQVBJICog SFRUUF9JT19DQUxMQkFDSykgKA0KPiA+Pj4+PiArICBJTiAgSFRUUF9JT19DQUxMQkFDS19FVkVO VCAgICBFdmVudFR5cGUsDQo+ID4+Pj4+ICsgIElOICBFRklfSFRUUF9NRVNTQUdFICAgICAgICAg ICpNZXNzYWdlLA0KPiA+Pj4+PiArICBJTiAgVk9JRCAgICAgICAgICAgICAgICAgICAgICAqQ29u dGV4dA0KPiA+Pj4+PiArICApOw0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsvLy8NCj4gPj4+Pj4gKy8v LyBBIHdyYXBwZXIgc3RydWN0dXJlIHRvIGhvbGQgdGhlIHJlY2VpdmVkIEhUVFAgcmVzcG9uc2Ug ZGF0YS4NCj4gPj4+Pj4gKy8vLw0KPiA+Pj4+PiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiA+Pj4+PiAr ICBFRklfSFRUUF9SRVNQT05TRV9EQVRBICAgICAgUmVzcG9uc2U7DQo+ID4+Pj4+ICsgIFVJTlRO ICAgICAgICAgICAgICAgICAgICAgICBIZWFkZXJDb3VudDsNCj4gPj4+Pj4gKyAgRUZJX0hUVFBf SEVBREVSICAgICAgICAgICAgICpIZWFkZXJzOw0KPiA+Pj4+PiArICBVSU5UTiAgICAgICAgICAg ICAgICAgICAgICAgQm9keUxlbmd0aDsNCj4gPj4+Pj4gKyAgQ0hBUjggICAgICAgICAgICAgICAg ICAgICAgICpCb2R5Ow0KPiA+Pj4+PiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgU3Rh dHVzOw0KPiA+Pj4+PiArfSBIVFRQX0lPX1JFU1BPTlNFX0RBVEE7DQo+ID4+Pj4+ICsNCj4gPj4+ Pj4gKy8vLw0KPiA+Pj4+PiArLy8vIEhUVFBfSU8gY29uZmlndXJhdGlvbiBkYXRhIGZvciBJUHY0 IC8vLyB0eXBlZGVmIHN0cnVjdCB7DQo+ID4+Pj4+ICsgIEVGSV9IVFRQX1ZFUlNJT04gICAgICAg ICAgSHR0cFZlcnNpb247DQo+ID4+Pj4+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgUmVx dWVzdFRpbWVPdXQ7ICAvLy88IEluIG1pbGxpc2Vjb25kcy4NCj4gPj4+Pj4gKyAgVUlOVDMyICAg ICAgICAgICAgICAgICAgICBSZXNwb25zZVRpbWVPdXQ7IC8vLzwgSW4gbWlsbGlzZWNvbmRzLg0K PiA+Pj4+PiArICBCT09MRUFOICAgICAgICAgICAgICAgICAgIFVzZURlZmF1bHRBZGRyZXNzOw0K PiA+Pj4+PiArICBFRklfSVB2NF9BRERSRVNTICAgICAgICAgIExvY2FsSXA7DQo+ID4+Pj4+ICsg IEVGSV9JUHY0X0FERFJFU1MgICAgICAgICAgU3VibmV0TWFzazsNCj4gPj4+Pj4gKyAgVUlOVDE2 ICAgICAgICAgICAgICAgICAgICBMb2NhbFBvcnQ7DQo+ID4+Pj4+ICt9IEhUVFA0X0lPX0NPTkZJ R19EQVRBOw0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsvLy8NCj4gPj4+Pj4gKy8vLyBIVFRQX0lPIGNv bmZpZ3VyYXRpb24gZGF0YSBmb3IgSVB2NiAvLy8gdHlwZWRlZiBzdHJ1Y3Qgew0KPiA+Pj4+PiAr ICBFRklfSFRUUF9WRVJTSU9OICAgICAgICAgIEh0dHBWZXJzaW9uOw0KPiA+Pj4+PiArICBVSU5U MzIgICAgICAgICAgICAgICAgICAgIFJlcXVlc3RUaW1lT3V0OyAgLy8vPCBJbiBtaWxsaXNlY29u ZHMuDQo+ID4+Pj4+ICsgIEJPT0xFQU4gICAgICAgICAgICAgICAgICAgVXNlRGVmYXVsdEFkZHJl c3M7DQo+ID4+Pj4+ICsgIEVGSV9JUHY2X0FERFJFU1MgICAgICAgICAgTG9jYWxJcDsNCj4gPj4+ Pj4gKyAgVUlOVDE2ICAgICAgICAgICAgICAgICAgICBMb2NhbFBvcnQ7DQo+ID4+Pj4+ICt9IEhU VFA2X0lPX0NPTkZJR19EQVRBOw0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsvLy8NCj4gPj4+Pj4gKy8v LyBIVFRQX0lPIGNvbmZpZ3VyYXRpb24NCj4gPj4+Pj4gKy8vLw0KPiA+Pj4+PiArdHlwZWRlZiB1 bmlvbiB7DQo+ID4+Pj4+ICsgIEhUVFA0X0lPX0NPTkZJR19EQVRBICAgICAgIENvbmZpZzQ7DQo+ ID4+Pj4+ICsgIEhUVFA2X0lPX0NPTkZJR19EQVRBICAgICAgIENvbmZpZzY7DQo+ID4+Pj4+ICt9 IEhUVFBfSU9fQ09ORklHX0RBVEE7DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKy8vLw0KPiA+Pj4+PiAr Ly8vIEhUVFBfSU8gd3JhcHBlciBvZiB0aGUgRUZJIEhUVFAgc2VydmljZS4NCj4gPj4+Pj4gKy8v Lw0KPiA+Pj4+PiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiA+Pj4+PiArICBVSU5UOCAgICAgICAgICAg ICAgICAgICAgIElwVmVyc2lvbjsNCj4gPj4+Pj4gKyAgRUZJX0hBTkRMRSAgICAgICAgICAgICAg ICBJbWFnZTsNCj4gPj4+Pj4gKyAgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICBDb250cm9sbGVy Ow0KPiA+Pj4+PiArICBFRklfSEFORExFICAgICAgICAgICAgICAgIEhhbmRsZTsNCj4gPj4+Pj4g Kw0KPiA+Pj4+PiArICBFRklfSFRUUF9QUk9UT0NPTCAgICAgICAgICpIdHRwOw0KPiA+Pj4+PiAr DQo+ID4+Pj4+ICsgIEhUVFBfSU9fQ0FMTEJBQ0sgICAgICAgICAgQ2FsbGJhY2s7DQo+ID4+Pj4+ ICsgIFZPSUQgICAgICAgICAgICAgICAgICAgICAgKkNvbnRleHQ7DQo+ID4+Pj4+ICsNCj4gPj4+ Pj4gKyAgRUZJX0hUVFBfVE9LRU4gICAgICAgICAgICBSZXFUb2tlbjsNCj4gPj4+Pj4gKyAgRUZJ X0hUVFBfTUVTU0FHRSAgICAgICAgICBSZXFNZXNzYWdlOw0KPiA+Pj4+PiArICBFRklfSFRUUF9U T0tFTiAgICAgICAgICAgIFJzcFRva2VuOw0KPiA+Pj4+PiArICBFRklfSFRUUF9NRVNTQUdFICAg ICAgICAgIFJzcE1lc3NhZ2U7DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyAgQk9PTEVBTiAgICAgICAg ICAgICAgICAgICBJc1R4RG9uZTsNCj4gPj4+Pj4gKyAgQk9PTEVBTiAgICAgICAgICAgICAgICAg ICBJc1J4RG9uZTsNCj4gPj4+Pj4gKw0KPiA+Pj4+PiArICBFRklfRVZFTlQgICAgICAgICAgICAg ICAgIFRpbWVvdXRFdmVudDsNCj4gPj4+Pj4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICBU aW1lb3V0Ow0KPiA+Pj4+PiArfSBIVFRQX0lPOw0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsvLy8NCj4g Pj4+Pj4gKy8vLyBQcm9jZXNzIGNvZGUgb2YgSFRUUCBjaHVuayB0cmFuc2Zlci4NCj4gPj4+Pj4g Ky8vLw0KPiA+Pj4+PiArdHlwZWRlZiBlbnVtICB7DQo+ID4+Pj4+ICsgIEh0dHBJb1NlbmRDaHVu a05vbmUgPSAwLA0KPiA+Pj4+PiArICBIdHRwSW9TZW5kQ2h1bmtIZWFkZXJaZXJvQ29udGVudCwN Cj4gPj4+Pj4gKyAgSHR0cElvU2VuZENodW5rQ29udGVudCwNCj4gPj4+Pj4gKyAgSHR0cElvU2Vu ZENodW5rRW5kQ2h1bmssDQo+ID4+Pj4+ICsgIEh0dHBJb1NlbmRDaHVua0ZpbmlzaA0KPiA+Pj4+ PiArfSBIVFRQX0lPX1NFTkRfQ0hVTktfUFJPQ0VTUzsNCj4gPj4+Pj4gKw0KPiA+Pj4+PiArLy8v DQo+ID4+Pj4+ICsvLy8gUHJvY2VzcyBjb2RlIG9mIEhUVFAgbm9uIGNodW5rIHRyYW5zZmVyLg0K PiA+Pj4+PiArLy8vDQo+ID4+Pj4+ICt0eXBlZGVmIGVudW0gIHsNCj4gPj4+Pj4gKyAgSHR0cElv U2VuZE5vbkNodW5rTm9uZSA9IDAsDQo+ID4+Pj4+ICsgIEh0dHBJb1NlbmROb25DaHVua0hlYWRl clplcm9Db250ZW50LA0KPiA+Pj4+PiArICBIdHRwSW9TZW5kTm9uQ2h1bmtDb250ZW50LA0KPiA+ Pj4+PiArICBIdHRwSW9TZW5kTm9uQ2h1bmtGaW5pc2gNCj4gPj4+Pj4gK30gSFRUUF9JT19TRU5E X05PTl9DSFVOS19QUk9DRVNTOw0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsvLy8NCj4gPj4+Pj4gKy8v LyBDaHVuayBsaW5rcyBmb3IgSFRUUCBjaHVua2VkIHRyYW5zZmVyIGNvZGluZy4NCj4gPj4+Pj4g Ky8vLw0KPiA+Pj4+PiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiA+Pj4+PiArICBMSVNUX0VOVFJZICBO ZXh0Q2h1bms7DQo+ID4+Pj4+ICsgIFVJTlROICAgICAgIExlbmd0aDsNCj4gPj4+Pj4gKyAgQ0hB UjggICAgICAgKkRhdGE7DQo+ID4+Pj4+ICt9IEhUVFBfSU9fQ0hVTktTOw0KPiA+Pj4+PiArDQo+ ID4+Pj4+ICsvKioNCj4gPj4+Pj4gKyAgTm90aWZ5IHRoZSBjYWxsYmFjayBmdW5jdGlvbiB3aGVu IGFuIGV2ZW50IGlzIHRyaWdnZXJlZC4NCj4gPj4+Pj4gKw0KPiA+Pj4+PiArICBAcGFyYW1baW5d ICBDb250ZXh0ICAgICAgICAgVGhlIG9wYXF1ZSBwYXJhbWV0ZXIgdG8gdGhlIGZ1bmN0aW9uLg0K PiA+Pj4+PiArDQo+ID4+Pj4+ICsqKi8NCj4gPj4+Pj4gK1ZPSUQNCj4gPj4+Pj4gK0VGSUFQSQ0K PiA+Pj4+PiArSHR0cElvTm90aWZ5RHBjICgNCj4gPj4+Pj4gKyAgSU4gVk9JRCAgICAgICAgICAg ICAgICAqQ29udGV4dA0KPiA+Pj4+PiArICApOw0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsvKioNCj4g Pj4+Pj4gKyAgUmVxdWVzdCBIdHRwSW9Ob3RpZnlEcGMgYXMgYSBEUEMgYXQgVFBMX0NBTExCQUNL Lg0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgIEBwYXJhbVtpbl0gIEV2ZW50ICAgICAgICAgICAgICAg ICBUaGUgZXZlbnQgc2lnbmFsZWQuDQo+ID4+Pj4+ICsgIEBwYXJhbVtpbl0gIENvbnRleHQgICAg ICAgICAgICAgICBUaGUgb3BhcXVlIHBhcmFtZXRlciB0byB0aGUgZnVuY3Rpb24uDQo+ID4+Pj4+ ICsNCj4gPj4+Pj4gKyoqLw0KPiA+Pj4+PiArVk9JRA0KPiA+Pj4+PiArRUZJQVBJDQo+ID4+Pj4+ ICtIdHRwSW9Ob3RpZnkgKA0KPiA+Pj4+PiArICBJTiBFRklfRVZFTlQgICAgICAgICAgICAgIEV2 ZW50LA0KPiA+Pj4+PiArICBJTiBWT0lEICAgICAgICAgICAgICAgICAgICpDb250ZXh0DQo+ID4+ Pj4+ICsgICk7DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKy8qKg0KPiA+Pj4+PiArICBEZXN0cm95IHRo ZSBIVFRQX0lPIGFuZCByZWxlYXNlIHRoZSByZXNvdXJjZXMuDQo+ID4+Pj4+ICsNCj4gPj4+Pj4g KyAgQHBhcmFtW2luXSAgSHR0cElvICAgICAgICAgIFRoZSBIVFRQX0lPIHdoaWNoIHdyYXBzIHRo ZSBIVFRQIHNlcnZpY2UNCj4gdG8NCj4gPj4gYmUNCj4gPj4+PiBkZXN0cm95ZWQuDQo+ID4+Pj4+ ICsNCj4gPj4+Pj4gKyoqLw0KPiA+Pj4+PiArVk9JRA0KPiA+Pj4+PiArSHR0cElvRGVzdHJveUlv ICgNCj4gPj4+Pj4gKyAgSU4gSFRUUF9JTyAgICAgICAgICAgICAgICAqSHR0cElvDQo+ID4+Pj4+ ICsgICk7DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKy8qKg0KPiA+Pj4+PiArICBDcmVhdGUgYSBIVFRQ X0lPIHRvIGFjY2VzcyB0aGUgSFRUUCBzZXJ2aWNlLiBJdCB3aWxsIGNyZWF0ZSBhbmQNCj4gPj4+ Pj4gK2NvbmZpZ3VyZQ0KPiA+Pj4+PiArICBhIEhUVFAgY2hpbGQgaGFuZGxlLg0KPiA+Pj4+PiAr DQo+ID4+Pj4+ICsgIEBwYXJhbVtpbl0gIEltYWdlICAgICAgICAgIFRoZSBoYW5kbGUgb2YgdGhl IGRyaXZlciBpbWFnZS4NCj4gPj4+Pj4gKyAgQHBhcmFtW2luXSAgQ29udHJvbGxlciAgICAgVGhl IGhhbmRsZSBvZiB0aGUgY29udHJvbGxlci4NCj4gPj4+Pj4gKyAgQHBhcmFtW2luXSAgSXBWZXJz aW9uICAgICAgSVBfVkVSU0lPTl80IG9yIElQX1ZFUlNJT05fNi4NCj4gPj4+Pj4gKyAgQHBhcmFt W2luXSAgQ29uZmlnRGF0YSAgICAgVGhlIEhUVFBfSU8gY29uZmlndXJhdGlvbiBkYXRhLg0KPiA+ Pj4+PiArICBAcGFyYW1baW5dICBDYWxsYmFjayAgICAgICBDYWxsYmFjayBmdW5jdGlvbiB3aGlj aCB3aWxsIGJlIGludm9rZWQNCj4gd2hlbg0KPiA+Pj4+IHNwZWNpZmllZA0KPiA+Pj4+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBIVFRQX0lPX0NBTExCQUNLX0VWRU5UIGhhcHBlbmVk Lg0KPiA+Pj4+PiArICBAcGFyYW1baW5dICBDb250ZXh0ICAgICAgICBUaGUgQ29udGV4dCBkYXRh IHdoaWNoIHdpbGwgYmUgcGFzc2VkIHRvDQo+IHRoZQ0KPiA+Pj4+IENhbGxiYWNrIGZ1bmN0aW9u Lg0KPiA+Pj4+PiArICBAcGFyYW1bb3V0XSBIdHRwSW8gICAgICAgICBUaGUgSFRUUF9JTy4NCj4g Pj4+Pj4gKw0KPiA+Pj4+PiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgVGhlIEhU VFBfSU8gaXMgY3JlYXRlZCBhbmQgY29uZmlndXJlZC4NCj4gPj4+Pj4gKyAgQHJldHZhbCBFRklf SU5WQUxJRF9QQVJBTUVURVIgIE9uZSBvciBtb3JlIHBhcmFtZXRlcnMgYXJlDQo+ID4+IGludmFs aWQuDQo+ID4+Pj4+ICsgIEByZXR2YWwgRUZJX1VOU1VQUE9SVEVEICAgICAgICBPbmUgb3IgbW9y ZSBvZiB0aGUgY29udHJvbCBvcHRpb25zDQo+ID4+IGFyZQ0KPiA+Pj4+IG5vdA0KPiA+Pj4+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydGVkIGluIHRoZSBpbXBsZW1l bnRhdGlvbi4NCj4gPj4+Pj4gKyAgQHJldHZhbCBFRklfT1VUX09GX1JFU09VUkNFUyAgIEZhaWxl ZCB0byBhbGxvY2F0ZSBtZW1vcnkuDQo+ID4+Pj4+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAg ICAgICAgICBGYWlsZWQgdG8gY3JlYXRlIHRoZSBIVFRQX0lPIG9yIGNvbmZpZ3VyZSBpdC4NCj4g Pj4+Pj4gKw0KPiA+Pj4+PiArKiovDQo+ID4+Pj4+ICtFRklfU1RBVFVTDQo+ID4+Pj4+ICtIdHRw SW9DcmVhdGVJbyAoDQo+ID4+Pj4+ICsgIElOIEVGSV9IQU5ETEUgICAgICAgICAgICAgSW1hZ2Us DQo+ID4+Pj4+ICsgIElOIEVGSV9IQU5ETEUgICAgICAgICAgICAgQ29udHJvbGxlciwNCj4gPj4+ Pj4gKyAgSU4gVUlOVDggICAgICAgICAgICAgICAgICBJcFZlcnNpb24sDQo+ID4+Pj4+ICsgIElO IEhUVFBfSU9fQ09ORklHX0RBVEEgICAgKkNvbmZpZ0RhdGEsDQo+ID4+Pj4+ICsgIElOIEhUVFBf SU9fQ0FMTEJBQ0sgICAgICAgQ2FsbGJhY2ssDQo+ID4+Pj4+ICsgIElOIFZPSUQgICAgICAgICAg ICAgICAgICAgKkNvbnRleHQsDQo+ID4+Pj4+ICsgIE9VVCBIVFRQX0lPICAgICAgICAgICAgICAg Kkh0dHBJbw0KPiA+Pj4+PiArICApOw0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsvKioNCj4gPj4+Pj4g KyAgU3luY2hyb25vdXNseSBzZW5kIGEgSFRUUCBSRVFVRVNUIG1lc3NhZ2UgdG8gdGhlIHNlcnZl ci4NCj4gPj4+Pj4gKw0KPiA+Pj4+PiArICBAcGFyYW1baW5dICAgSHR0cElvICAgICAgICAgICBU aGUgSHR0cElvIHdyYXBwaW5nIHRoZSBIVFRQIHNlcnZpY2UuDQo+ID4+Pj4+ICsgIEBwYXJhbVtp bl0gICBSZXF1ZXN0ICAgICAgICAgIEEgcG9pbnRlciB0byBzdG9yYWdlIHN1Y2ggZGF0YSBhcyBV UkwNCj4gYW5kDQo+ID4+Pj4gSFRUUCBtZXRob2QuDQo+ID4+Pj4+ICsgIEBwYXJhbVtpbl0gICBI ZWFkZXJDb3VudCAgICAgIE51bWJlciBvZiBIVFRQIGhlYWRlciBzdHJ1Y3R1cmVzIGluDQo+ID4+ Pj4gSGVhZGVycyBsaXN0Lg0KPiA+Pj4+PiArICBAcGFyYW1baW5dICAgSGVhZGVycyAgICAgICAg ICBBcnJheSBjb250YWluaW5nIGxpc3Qgb2YgSFRUUCBoZWFkZXJzLg0KPiA+Pj4+PiArICBAcGFy YW1baW5dICAgQm9keUxlbmd0aCAgICAgICBMZW5ndGggaW4gYnl0ZXMgb2YgdGhlIEhUVFAgYm9k eS4NCj4gPj4+Pj4gKyAgQHBhcmFtW2luXSAgIEJvZHkgICAgICAgICAgICAgQm9keSBhc3NvY2lh dGVkIHdpdGggdGhlIEhUVFAgcmVxdWVzdC4NCj4gPj4+Pj4gKw0KPiA+Pj4+PiArICBAcmV0dmFs IEVGSV9TVUNDRVNTICAgICAgICAgICAgVGhlIEhUVFAgcmVxdWVzdCBpcyB0cmFuc21pdHRlZC4N Cj4gPj4+Pj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgIE9uZSBvciBtb3JlIHBh cmFtZXRlcnMgYXJlDQo+ID4+IGludmFsaWQuDQo+ID4+Pj4+ICsgIEByZXR2YWwgRUZJX09VVF9P Rl9SRVNPVVJDRVMgICBGYWlsZWQgdG8gYWxsb2NhdGUgbWVtb3J5Lg0KPiA+Pj4+PiArICBAcmV0 dmFsIEVGSV9ERVZJQ0VfRVJST1IgICAgICAgQW4gdW5leHBlY3RlZCBuZXR3b3JrIG9yIHN5c3Rl bQ0KPiA+PiBlcnJvcg0KPiA+Pj4+IG9jY3VycmVkLg0KPiA+Pj4+PiArICBAcmV0dmFsIE90aGVy cyAgICAgICAgICAgICAgICAgT3RoZXIgZXJyb3JzIGFzIGluZGljYXRlZC4NCj4gPj4+Pj4gKw0K PiA+Pj4+PiArKiovDQo+ID4+Pj4+ICtFRklfU1RBVFVTDQo+ID4+Pj4+ICtIdHRwSW9TZW5kUmVx dWVzdCAoDQo+ID4+Pj4+ICsgIElOICBIVFRQX0lPICAgICAgICAgICAgICAgICpIdHRwSW8sDQo+ ID4+Pj4+ICsgIElOICBFRklfSFRUUF9SRVFVRVNUX0RBVEEgICpSZXF1ZXN0LCAgICAgIE9QVElP TkFMDQo+ID4+Pj4+ICsgIElOICBVSU5UTiAgICAgICAgICAgICAgICAgIEhlYWRlckNvdW50LA0K PiA+Pj4+PiArICBJTiAgRUZJX0hUVFBfSEVBREVSICAgICAgICAqSGVhZGVycywgICAgICBPUFRJ T05BTA0KPiA+Pj4+PiArICBJTiAgVUlOVE4gICAgICAgICAgICAgICAgICBCb2R5TGVuZ3RoLA0K PiA+Pj4+PiArICBJTiAgVk9JRCAgICAgICAgICAgICAgICAgICAqQm9keSAgICAgICAgICBPUFRJ T05BTA0KPiA+Pj4+PiArICApOw0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsvKioNCj4gPj4+Pj4gKyAg U3luY2hyb25vdXNseSByZWNlaXZlIGEgSFRUUCBSRVNQT05TRSBtZXNzYWdlIGZyb20gdGhlIHNl cnZlci4NCj4gPj4+Pj4gKw0KPiA+Pj4+PiArICBAcGFyYW1baW5dICAgSHR0cElvICAgICAgICAg ICBUaGUgSHR0cElvIHdyYXBwaW5nIHRoZSBIVFRQIHNlcnZpY2UuDQo+ID4+Pj4+ICsgIEBwYXJh bVtpbl0gICBSZWN2TXNnSGVhZGVyICAgIFRSVUUgdG8gcmVjZWl2ZSBhIG5ldyBIVFRQDQo+IHJl c3BvbnNlDQo+ID4+Pj4gKGZyb20gbWVzc2FnZSBoZWFkZXIpLg0KPiA+Pj4+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSB0byBjb250aW51ZSByZWNlaXZlIHRoZSBwcmV2 aW91cyByZXNwb25zZQ0KPiA+PiBtZXNzYWdlLg0KPiA+Pj4+PiArICBAcGFyYW1bb3V0XSAgUmVz cG9uc2VEYXRhICAgICBQb2ludCB0byBhIHdyYXBwZXIgb2YgdGhlIHJlY2VpdmVkDQo+ID4+Pj4g cmVzcG9uc2UgZGF0YS4NCj4gPj4+Pj4gKw0KPiA+Pj4+PiArICBAcmV0dmFsIEVGSV9TVUNDRVNT ICAgICAgICAgICAgVGhlIEhUVFAgcmVzcG9uc2UgaXMgcmVjZWl2ZWQuDQo+ID4+Pj4+ICsgIEBy ZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSICBPbmUgb3IgbW9yZSBwYXJhbWV0ZXJzIGFyZQ0K PiA+PiBpbnZhbGlkLg0KPiA+Pj4+PiArICBAcmV0dmFsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICAg RmFpbGVkIHRvIGFsbG9jYXRlIG1lbW9yeS4NCj4gPj4+Pj4gKyAgQHJldHZhbCBFRklfREVWSUNF X0VSUk9SICAgICAgIEFuIHVuZXhwZWN0ZWQgbmV0d29yayBvciBzeXN0ZW0NCj4gPj4gZXJyb3IN Cj4gPj4+PiBvY2N1cnJlZC4NCj4gPj4+Pj4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICAg ICAgIE90aGVyIGVycm9ycyBhcyBpbmRpY2F0ZWQuDQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyoqLw0K PiA+Pj4+PiArRUZJX1NUQVRVUw0KPiA+Pj4+PiArSHR0cElvUmVjdlJlc3BvbnNlICgNCj4gPj4+ Pj4gKyAgSU4gICAgICBIVFRQX0lPICAgICAgICAgICAgICAgICAgKkh0dHBJbywNCj4gPj4+Pj4g KyAgSU4gICAgICBCT09MRUFOICAgICAgICAgICAgICAgICAgUmVjdk1zZ0hlYWRlciwNCj4gPj4+ Pj4gKyAgT1VUICAgICBIVFRQX0lPX1JFU1BPTlNFX0RBVEEgICAgKlJlc3BvbnNlRGF0YQ0KPiA+ Pj4+PiArICApOw0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsvKioNCj4gPj4+Pj4gKyAgR2V0IHRoZSB2 YWx1ZSBvZiB0aGUgY29udGVudCBsZW5ndGggaWYgdGhlcmUgaXMgYSAiQ29udGVudC1MZW5ndGgi DQo+ID4+IGhlYWRlci4NCj4gPj4+Pj4gKw0KPiA+Pj4+PiArICBAcGFyYW1baW5dICAgIEhlYWRl ckNvdW50ICAgICAgICBOdW1iZXIgb2YgSFRUUCBoZWFkZXIgc3RydWN0dXJlcw0KPiBpbg0KPiA+ Pj4+IEhlYWRlcnMuDQo+ID4+Pj4+ICsgIEBwYXJhbVtpbl0gICAgSGVhZGVycyAgICAgICAgICAg IEFycmF5IGNvbnRhaW5pbmcgbGlzdCBvZiBIVFRQIGhlYWRlcnMuDQo+ID4+Pj4+ICsgIEBwYXJh bVtvdXRdICAgQ29udGVudExlbmd0aCAgICAgIFBvaW50ZXIgdG8gc2F2ZSB0aGUgdmFsdWUgb2Yg dGhlDQo+ID4+IGNvbnRlbnQNCj4gPj4+PiBsZW5ndGguDQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyAg QHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgICAgU3VjY2Vzc2Z1bGx5IGdldCB0aGUgY29u dGVudCBsZW5ndGguDQo+ID4+Pj4+ICsgIEByZXR2YWwgRUZJX05PVF9GT1VORCAgICAgICAgICAg IE5vICJDb250ZW50LUxlbmd0aCIgaGVhZGVyIGluIHRoZQ0KPiA+Pj4+IEhlYWRlcnMuDQo+ID4+ Pj4+ICsNCj4gPj4+Pj4gKyoqLw0KPiA+Pj4+PiArRUZJX1NUQVRVUw0KPiA+Pj4+PiArSHR0cElv R2V0Q29udGVudExlbmd0aCAoDQo+ID4+Pj4+ICsgIElOICAgICBVSU5UTiAgICAgICAgICAgICAg ICBIZWFkZXJDb3VudCwNCj4gPj4+Pj4gKyAgSU4gICAgIEVGSV9IVFRQX0hFQURFUiAgICAgICpI ZWFkZXJzLA0KPiA+Pj4+PiArICBPVVQgICAgVUlOVE4gICAgICAgICAgICAgICAgKkNvbnRlbnRM ZW5ndGgNCj4gPj4+Pj4gKyAgKTsNCj4gPj4+Pj4gKw0KPiA+Pj4+PiArLyoqDQo+ID4+Pj4+ICsg IFN5bmNocm9ub3VzbHkgcmVjZWl2ZSBhIEhUVFAgUkVTUE9OU0UgbWVzc2FnZSBmcm9tIHRoZSBz ZXJ2ZXIuDQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyAgQHBhcmFtW2luXSAgIEh0dHBJbyAgICAgICAg ICAgVGhlIEh0dHBJbyB3cmFwcGluZyB0aGUgSFRUUCBzZXJ2aWNlLg0KPiA+Pj4+PiArICBAcGFy YW1baW5dICAgSGVhZGVyQ291bnQgICAgICBOdW1iZXIgb2YgaGVhZGVycyBpbiBIZWFkZXJzLg0K PiA+Pj4+PiArICBAcGFyYW1baW5dICAgSGVhZGVycyAgICAgICAgICBBcnJheSBjb250YWluaW5n IGxpc3Qgb2YgSFRUUCBoZWFkZXJzLg0KPiA+Pj4+PiArICBAcGFyYW1bb3V0XSAgQ2h1bmtMaXN0 SGVhZCAgICBBIHBvaW50ZXIgdG8gcmVjZWl2Y2UgbGlzdCBoZWFkIG9mDQo+ID4+IGNodW5rZWQN Cj4gPj4+PiBkYXRhLg0KPiA+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD YWxsZXIgaGFzIHRvIHJlbGVhc2UgbWVtb3J5IG9mIENodW5rTGlzdEhlYWQNCj4gPj4+Pj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGFsbCBsaXN0IGVudHJpZXMuDQo+ID4+ Pj4+ICsgIEBwYXJhbVtvdXRdICBDb250ZW50TGVuZ3RoICAgIFRvdGFsIGNvbnRlbnQgbGVuZ3Ro DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgIFRo ZSBIVFRQIGNodW5rZWQgdHJhbnNmZXIgaXMgcmVjZWl2ZWQuDQo+ID4+Pj4+ICsgIEByZXR2YWwg RUZJX05PVF9GT1VORCAgICAgICAgICBObyBjaHVua2VkIHRyYW5zZmVyIGNvZGluZyBoZWFkZXIN Cj4gPj4gZm91bmQuDQo+ID4+Pj4+ICsgIEByZXR2YWwgRUZJX09VVF9PRl9SRVNPVVJDRVMgICBG YWlsZWQgdG8gYWxsb2NhdGUgbWVtb3J5Lg0KPiA+Pj4+PiArICBAcmV0dmFsIEVGSV9JTlZBTElE X1BBUkFNRVRFUiAgSW1wcm9wZXIgcGFyYW1ldGVycy4NCj4gPj4+Pj4gKyAgQHJldHZhbCBPdGhl cnMgICAgICAgICAgICAgICAgIE90aGVyIGVycm9ycyBhcyBpbmRpY2F0ZWQuDQo+ID4+Pj4+ICsN Cj4gPj4+Pj4gKyoqLw0KPiA+Pj4+PiArRUZJX1NUQVRVUw0KPiA+Pj4+PiArSHR0cElvR2V0Q2h1 bmtlZFRyYW5zZmVyQ29udGVudCAoDQo+ID4+Pj4+ICsgIElOICAgICBIVFRQX0lPICAgICAgICAg ICAgICAqSHR0cElvLA0KPiA+Pj4+PiArICBJTiAgICAgVUlOVE4gICAgICAgICAgICAgICAgSGVh ZGVyQ291bnQsDQo+ID4+Pj4+ICsgIElOICAgICBFRklfSFRUUF9IRUFERVIgICAgICAqSGVhZGVy cywNCj4gPj4+Pj4gKyAgT1VUICAgIExJU1RfRU5UUlkgICAgICAgICAgICoqQ2h1bmtMaXN0SGVh ZCwNCj4gPj4+Pj4gKyAgT1VUICAgIFVJTlROICAgICAgICAgICAgICAgICpDb250ZW50TGVuZ3Ro DQo+ID4+Pj4+ICsgICk7DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKy8qKg0KPiA+Pj4+PiArICBTZW5k IEhUVFAgcmVxdWVzdCBpbiBjaHVua3MuDQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyAgQHBhcmFtW2lu XSAgIEh0dHBJbyAgICAgICAgICAgICBUaGUgSHR0cElvIHdyYXBwaW5nIHRoZSBIVFRQIHNlcnZp Y2UuDQo+ID4+Pj4+ICsgIEBwYXJhbVtpbl0gICBTZW5kQ2h1bmtQcm9jZXNzICAgUG9pbnRlciB0 byBjdXJyZW50IGNodW5rIHByb2Nlc3MNCj4gPj4+PiBzdGF0dXMuDQo+ID4+Pj4+ICsgIEBwYXJh bVtvdXRdICBSZXF1ZXN0TWVzc2FnZSAgICAgUmVxdWVzdCB0byBzZW5kLg0KPiA+Pj4+PiArDQo+ ID4+Pj4+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICAgU3VjY2Vzc2Z1bGx5IHRv IHNlbmQgY2h1bmsgZGF0YQ0KPiBhY2NvcmRpbmcNCj4gPj4gdG8NCj4gPj4+PiBTZW5kQ2h1bmtQ cm9jZXNzLg0KPiA+Pj4+PiArICBAcmV0dmFsIE90aGVyICAgICAgICAgICAgICAgICAgIE90aGVy IGVycm9ycy4NCj4gPj4+Pj4gKw0KPiA+Pj4+PiArKiovDQo+ID4+Pj4+ICtFRklfU1RBVFVTDQo+ ID4+Pj4+ICtIdHRwSW9TZW5kQ2h1bmtlZFRyYW5zZmVyICgNCj4gPj4+Pj4gKyAgSU4gIEhUVFBf SU8gICAgICAgICAgICAgICAgICAgICpIdHRwSW8sDQo+ID4+Pj4+ICsgIElOICBIVFRQX0lPX1NF TkRfQ0hVTktfUFJPQ0VTUyAqU2VuZENodW5rUHJvY2VzcywNCj4gPj4+Pj4gKyAgSU4gIEVGSV9I VFRQX01FU1NBR0UgICAgICAgICAgICpSZXF1ZXN0TWVzc2FnZQ0KPiA+Pj4+PiArKTsNCj4gPj4+ Pj4gKyNlbmRpZg0KPiA+Pj4+PiBkaWZmIC0tZ2l0IGEvTmV0d29ya1BrZy9MaWJyYXJ5L0R4ZUh0 dHBJb0xpYi9EeGVIdHRwSW9MaWIuYw0KPiA+Pj4+PiBiL05ldHdvcmtQa2cvTGlicmFyeS9EeGVI dHRwSW9MaWIvRHhlSHR0cElvTGliLmMNCj4gPj4+Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4g Pj4+Pj4gaW5kZXggMDAwMDAwMDAwMC4uZmJjZTg2ZWE1Yw0KPiA+Pj4+PiAtLS0gL2Rldi9udWxs DQo+ID4+Pj4+ICsrKyBiL05ldHdvcmtQa2cvTGlicmFyeS9EeGVIdHRwSW9MaWIvRHhlSHR0cElv TGliLmMNCj4gPj4+Pj4gQEAgLTAsMCArMSw4MDkgQEANCj4gPj4+Pj4gKy8qKiBAZmlsZQ0KPiA+ Pj4+PiArICBIdHRwIElPIEhlbHBlciBMaWJyYXJ5Lg0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgIChD KSBDb3B5cmlnaHQgMjAyMCBIZXdsZXR0LVBhY2thcmQgRGV2ZWxvcG1lbnQgQ29tcGFueSwNCj4g TC5QLjxCUj4NCj4gPj4+Pj4gKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVz ZS1QYXRlbnQgKiovDQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyNpbmNsdWRlIDxVZWZpLmg+DQo+ID4+ Pj4+ICsNCj4gPj4+Pj4gKyNpbmNsdWRlIDxQcm90b2NvbC9IdHRwLmg+DQo+ID4+Pj4+ICsNCj4g Pj4+Pj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VMaWIuaD4NCj4gPj4+Pj4gKyNpbmNsdWRlIDxM aWJyYXJ5L0Jhc2VNZW1vcnlMaWIuaD4NCj4gPj4+Pj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0RlYnVn TGliLmg+DQo+ID4+Pj4+ICsjaW5jbHVkZSA8TGlicmFyeS9IdHRwSW9MaWIuaD4NCj4gPj4+Pj4g KyNpbmNsdWRlIDxMaWJyYXJ5L01lbW9yeUFsbG9jYXRpb25MaWIuaD4gI2luY2x1ZGUNCj4gPj4+ Pj4gKzxMaWJyYXJ5L1ByaW50TGliLmg+ICNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlCb290U2Vydmlj ZXNUYWJsZUxpYi5oPg0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsvKioNCj4gPj4+Pj4gKyAgTm90aWZ5 IHRoZSBjYWxsYmFjayBmdW5jdGlvbiB3aGVuIGFuIGV2ZW50IGlzIHRyaWdnZXJlZC4NCj4gPj4+ Pj4gKw0KPiA+Pj4+PiArICBAcGFyYW1baW5dICBDb250ZXh0ICAgICAgICAgVGhlIG9wYXF1ZSBw YXJhbWV0ZXIgdG8gdGhlIGZ1bmN0aW9uLg0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsqKi8NCj4gPj4+ Pj4gK1ZPSUQNCj4gPj4+Pj4gK0VGSUFQSQ0KPiA+Pj4+PiArSHR0cElvTm90aWZ5RHBjICgNCj4g Pj4+Pj4gKyAgSU4gVk9JRCAgICAgICAgICAgICAgICAqQ29udGV4dA0KPiA+Pj4+PiArICApDQo+ ID4+Pj4+ICt7DQo+ID4+Pj4+ICsgICooKEJPT0xFQU4gKikgQ29udGV4dCkgPSBUUlVFOw0KPiA+ Pj4+PiArfQ0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsvKioNCj4gPj4+Pj4gKyAgUmVxdWVzdCBIdHRw SW9Ob3RpZnlEcGMgYXMgYSBEUEMgYXQgVFBMX0NBTExCQUNLLg0KPiA+Pj4+PiArDQo+ID4+Pj4+ ICsgIEBwYXJhbVtpbl0gIEV2ZW50ICAgICAgICAgICAgICAgICBUaGUgZXZlbnQgc2lnbmFsZWQu DQo+ID4+Pj4+ICsgIEBwYXJhbVtpbl0gIENvbnRleHQgICAgICAgICAgICAgICBUaGUgb3BhcXVl IHBhcmFtZXRlciB0byB0aGUgZnVuY3Rpb24uDQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyoqLw0KPiA+ Pj4+PiArVk9JRA0KPiA+Pj4+PiArRUZJQVBJDQo+ID4+Pj4+ICtIdHRwSW9Ob3RpZnkgKA0KPiA+ Pj4+PiArICBJTiBFRklfRVZFTlQgICAgICAgICAgICAgIEV2ZW50LA0KPiA+Pj4+PiArICBJTiBW T0lEICAgICAgICAgICAgICAgICAgICpDb250ZXh0DQo+ID4+Pj4+ICsgICkNCj4gPj4+Pj4gK3sN Cj4gPj4+Pj4gKyAgLy8NCj4gPj4+Pj4gKyAgLy8gUmVxdWVzdCBIdHRwSW9Ob3RpZnlEcGMgYXMg YSBEUEMgYXQgVFBMX0NBTExCQUNLDQo+ID4+Pj4+ICsgIC8vDQo+ID4+Pj4+ICsgIFF1ZXVlRHBj IChUUExfQ0FMTEJBQ0ssIEh0dHBJb05vdGlmeURwYywgQ29udGV4dCk7IH0NCj4gPj4+Pj4gKw0K PiA+Pj4+PiArLyoqDQo+ID4+Pj4+ICsgIERlc3Ryb3kgdGhlIEhUVFBfSU8gYW5kIHJlbGVhc2Ug dGhlIHJlc291cmNlcy4NCj4gPj4+Pj4gKw0KPiA+Pj4+PiArICBAcGFyYW1baW5dICBIdHRwSW8g ICAgICAgICAgVGhlIEhUVFBfSU8gd2hpY2ggd3JhcHMgdGhlIEhUVFAgc2VydmljZQ0KPiB0bw0K PiA+PiBiZQ0KPiA+Pj4+IGRlc3Ryb3llZC4NCj4gPj4+Pj4gKw0KPiA+Pj4+PiArKiovDQo+ID4+ Pj4+ICtWT0lEDQo+ID4+Pj4+ICtIdHRwSW9EZXN0cm95SW8gKA0KPiA+Pj4+PiArICBJTiBIVFRQ X0lPICAgICAgICAgICAgICAgICpIdHRwSW8NCj4gPj4+Pj4gKyAgKQ0KPiA+Pj4+PiArew0KPiA+ Pj4+PiArICBFRklfSFRUUF9QUk9UT0NPTCAgICAgICAgICpIdHRwOw0KPiA+Pj4+PiArICBFRklf RVZFTlQgICAgICAgICAgICAgICAgIEV2ZW50Ow0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgIGlmIChI dHRwSW8gPT0gTlVMTCkgew0KPiA+Pj4+PiArICAgIHJldHVybjsNCj4gPj4+Pj4gKyAgfQ0KPiA+ Pj4+PiArDQo+ID4+Pj4+ICsgIEV2ZW50ID0gSHR0cElvLT5SZXFUb2tlbi5FdmVudDsNCj4gPj4+ Pj4gKyAgaWYgKEV2ZW50ICE9IE5VTEwpIHsNCj4gPj4+Pj4gKyAgICBnQlMtPkNsb3NlRXZlbnQg KEV2ZW50KTsNCj4gPj4+Pj4gKyAgfQ0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgIEV2ZW50ID0gSHR0 cElvLT5Sc3BUb2tlbi5FdmVudDsNCj4gPj4+Pj4gKyAgaWYgKEV2ZW50ICE9IE5VTEwpIHsNCj4g Pj4+Pj4gKyAgICBnQlMtPkNsb3NlRXZlbnQgKEV2ZW50KTsNCj4gPj4+Pj4gKyAgfQ0KPiA+Pj4+ PiArDQo+ID4+Pj4+ICsgIEV2ZW50ID0gSHR0cElvLT5UaW1lb3V0RXZlbnQ7DQo+ID4+Pj4+ICsg IGlmIChFdmVudCAhPSBOVUxMKSB7DQo+ID4+Pj4+ICsgICAgZ0JTLT5DbG9zZUV2ZW50IChFdmVu dCk7DQo+ID4+Pj4+ICsgIH0NCj4gPj4+Pj4gKw0KPiA+Pj4+PiArICBIdHRwID0gSHR0cElvLT5I dHRwOw0KPiA+Pj4+PiArICBpZiAoSHR0cCAhPSBOVUxMKSB7DQo+ID4+Pj4+ICsgICAgSHR0cC0+ Q29uZmlndXJlIChIdHRwLCBOVUxMKTsNCj4gPj4+Pj4gKyAgICBnQlMtPkNsb3NlUHJvdG9jb2wg KA0KPiA+Pj4+PiArICAgICAgICAgICBIdHRwSW8tPkhhbmRsZSwNCj4gPj4+Pj4gKyAgICAgICAg ICAgJmdFZmlIdHRwUHJvdG9jb2xHdWlkLA0KPiA+Pj4+PiArICAgICAgICAgICBIdHRwSW8tPklt YWdlLA0KPiA+Pj4+PiArICAgICAgICAgICBIdHRwSW8tPkNvbnRyb2xsZXINCj4gPj4+Pj4gKyAg ICAgICAgICAgKTsNCj4gPj4+Pj4gKyAgfQ0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgIE5ldExpYkRl c3Ryb3lTZXJ2aWNlQ2hpbGQgKA0KPiA+Pj4+PiArICAgIEh0dHBJby0+Q29udHJvbGxlciwNCj4g Pj4+Pj4gKyAgICBIdHRwSW8tPkltYWdlLA0KPiA+Pj4+PiArICAgICZnRWZpSHR0cFNlcnZpY2VC aW5kaW5nUHJvdG9jb2xHdWlkLA0KPiA+Pj4+PiArICAgIEh0dHBJby0+SGFuZGxlDQo+ID4+Pj4+ ICsgICAgKTsNCj4gPj4+Pj4gK30NCj4gPj4+Pj4gKw0KPiA+Pj4+PiArLyoqDQo+ID4+Pj4+ICsg IENyZWF0ZSBhIEhUVFBfSU8gdG8gYWNjZXNzIHRoZSBIVFRQIHNlcnZpY2UuIEl0IHdpbGwgY3Jl YXRlIGFuZA0KPiA+Pj4+PiArY29uZmlndXJlDQo+ID4+Pj4+ICsgIGEgSFRUUCBjaGlsZCBoYW5k bGUuDQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyAgQHBhcmFtW2luXSAgSW1hZ2UgICAgICAgICAgVGhl IGhhbmRsZSBvZiB0aGUgZHJpdmVyIGltYWdlLg0KPiA+Pj4+PiArICBAcGFyYW1baW5dICBDb250 cm9sbGVyICAgICBUaGUgaGFuZGxlIG9mIHRoZSBjb250cm9sbGVyLg0KPiA+Pj4+PiArICBAcGFy YW1baW5dICBJcFZlcnNpb24gICAgICBJUF9WRVJTSU9OXzQgb3IgSVBfVkVSU0lPTl82Lg0KPiA+ Pj4+PiArICBAcGFyYW1baW5dICBDb25maWdEYXRhICAgICBUaGUgSFRUUF9JTyBjb25maWd1cmF0 aW9uIGRhdGEgLA0KPiA+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMIG1l YW5zIG5vdCB0byBjb25maWd1cmUgdGhlIEhUVFAgY2hpbGQuDQo+ID4+Pj4+ICsgIEBwYXJhbVtp bl0gIENhbGxiYWNrICAgICAgIENhbGxiYWNrIGZ1bmN0aW9uIHdoaWNoIHdpbGwgYmUgaW52b2tl ZA0KPiB3aGVuDQo+ID4+Pj4gc3BlY2lmaWVkDQo+ID4+Pj4+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEhUVFBfSU9fQ0FMTEJBQ0tfRVZFTlQgaGFwcGVuZWQuDQo+ID4+Pj4+ICsgIEBw YXJhbVtpbl0gIENvbnRleHQgICAgICAgIFRoZSBDb250ZXh0IGRhdGEgd2hpY2ggd2lsbCBiZSBw YXNzZWQgdG8NCj4gdGhlDQo+ID4+Pj4gQ2FsbGJhY2sgZnVuY3Rpb24uDQo+ID4+Pj4+ICsgIEBw YXJhbVtvdXRdIEh0dHBJbyAgICAgICAgIFRoZSBIVFRQX0lPLg0KPiA+Pj4+PiArDQo+ID4+Pj4+ ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICBUaGUgSFRUUF9JTyBpcyBjcmVhdGVk IGFuZCBjb25maWd1cmVkLg0KPiA+Pj4+PiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRF UiAgT25lIG9yIG1vcmUgcGFyYW1ldGVycyBhcmUNCj4gPj4gaW52YWxpZC4NCj4gPj4+Pj4gKyAg QHJldHZhbCBFRklfVU5TVVBQT1JURUQgICAgICAgIE9uZSBvciBtb3JlIG9mIHRoZSBjb250cm9s IG9wdGlvbnMNCj4gPj4gYXJlDQo+ID4+Pj4gbm90DQo+ID4+Pj4+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzdXBwb3J0ZWQgaW4gdGhlIGltcGxlbWVudGF0aW9uLg0KPiA+Pj4+ PiArICBAcmV0dmFsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICAgRmFpbGVkIHRvIGFsbG9jYXRlIG1l bW9yeS4NCj4gPj4+Pj4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICAgICAgIEZhaWxlZCB0 byBjcmVhdGUgdGhlIEhUVFBfSU8gb3IgY29uZmlndXJlIGl0Lg0KPiA+Pj4+PiArDQo+ID4+Pj4+ ICsqKi8NCj4gPj4+Pj4gK0VGSV9TVEFUVVMNCj4gPj4+Pj4gK0h0dHBJb0NyZWF0ZUlvICgNCj4g Pj4+Pj4gKyAgSU4gRUZJX0hBTkRMRSAgICAgICAgICAgICBJbWFnZSwNCj4gPj4+Pj4gKyAgSU4g RUZJX0hBTkRMRSAgICAgICAgICAgICBDb250cm9sbGVyLA0KPiA+Pj4+PiArICBJTiBVSU5UOCAg ICAgICAgICAgICAgICAgIElwVmVyc2lvbiwNCj4gPj4+Pj4gKyAgSU4gSFRUUF9JT19DT05GSUdf REFUQSAgICAqQ29uZmlnRGF0YSwgT1BUSU9OQUwNCj4gPj4+Pj4gKyAgSU4gSFRUUF9JT19DQUxM QkFDSyAgICAgICBDYWxsYmFjaywNCj4gPj4+Pj4gKyAgSU4gVk9JRCAgICAgICAgICAgICAgICAg ICAqQ29udGV4dCwNCj4gPj4+Pj4gKyAgT1VUIEhUVFBfSU8gICAgICAgICAgICAgICAqSHR0cElv DQo+ID4+Pj4+ICsgICkNCj4gPj4+Pj4gK3sNCj4gPj4+Pj4gKyAgRUZJX1NUQVRVUyAgICAgICAg ICAgICAgICBTdGF0dXM7DQo+ID4+Pj4+ICsgIEVGSV9IVFRQX0NPTkZJR19EQVRBICAgICAgSHR0 cENvbmZpZ0RhdGE7DQo+ID4+Pj4+ICsgIEVGSV9IVFRQdjRfQUNDRVNTX1BPSU5UICAgSHR0cDRB Y2Nlc3NQb2ludDsNCj4gPj4+Pj4gKyAgRUZJX0hUVFB2Nl9BQ0NFU1NfUE9JTlQgICBIdHRwNkFj Y2Vzc1BvaW50Ow0KPiA+Pj4+PiArICBFRklfSFRUUF9QUk9UT0NPTCAgICAgICAgICpIdHRwOw0K PiA+Pj4+PiArICBFRklfRVZFTlQgICAgICAgICAgICAgICAgIEV2ZW50Ow0KPiA+Pj4+PiArDQo+ ID4+Pj4+ICsgIGlmICgoSW1hZ2UgPT0gTlVMTCkgfHwgKENvbnRyb2xsZXIgPT0gTlVMTCkgfHwg KEh0dHBJbyA9PSBOVUxMKSkgew0KPiA+Pj4+PiArICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJB TUVURVI7DQo+ID4+Pj4+ICsgIH0NCj4gPj4+Pj4gKw0KPiA+Pj4+PiArICBpZiAoSXBWZXJzaW9u ICE9IElQX1ZFUlNJT05fNCAmJiBJcFZlcnNpb24gIT0gSVBfVkVSU0lPTl82KSB7DQo+ID4+Pj4+ ICsgICAgcmV0dXJuIEVGSV9VTlNVUFBPUlRFRDsNCj4gPj4+Pj4gKyAgfQ0KPiA+Pj4+PiArDQo+ ID4+Pj4+ICsgIFplcm9NZW0gKEh0dHBJbywgc2l6ZW9mIChIVFRQX0lPKSk7ICBaZXJvTWVtICgm SHR0cENvbmZpZ0RhdGEsDQo+ID4+Pj4+ICsgc2l6ZW9mIChFRklfSFRUUF9DT05GSUdfREFUQSkp Ow0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgIC8vDQo+ID4+Pj4+ICsgIC8vIENyZWF0ZSB0aGUgSFRU UCBjaGlsZCBpbnN0YW5jZSBhbmQgZ2V0IHRoZSBIVFRQIHByb3RvY29sLg0KPiA+Pj4+PiArICAv Lw0KPiA+Pj4+PiArICBTdGF0dXMgPSBOZXRMaWJDcmVhdGVTZXJ2aWNlQ2hpbGQgKA0KPiA+Pj4+ PiArICAgICAgICAgICAgIENvbnRyb2xsZXIsDQo+ID4+Pj4+ICsgICAgICAgICAgICAgSW1hZ2Us DQo+ID4+Pj4+ICsgICAgICAgICAgICAgJmdFZmlIdHRwU2VydmljZUJpbmRpbmdQcm90b2NvbEd1 aWQsDQo+ID4+Pj4+ICsgICAgICAgICAgICAgJkh0dHBJby0+SGFuZGxlDQo+ID4+Pj4+ICsgICAg ICAgICAgICAgKTsNCj4gPj4+Pj4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+Pj4+ PiArICAgIHJldHVybiBTdGF0dXM7DQo+ID4+Pj4+ICsgIH0NCj4gPj4+Pj4gKw0KPiA+Pj4+PiAr ICBTdGF0dXMgPSBnQlMtPk9wZW5Qcm90b2NvbCAoDQo+ID4+Pj4+ICsgICAgICAgICAgICAgICAg ICBIdHRwSW8tPkhhbmRsZSwNCj4gPj4+Pj4gKyAgICAgICAgICAgICAgICAgICZnRWZpSHR0cFBy b3RvY29sR3VpZCwNCj4gPj4+Pj4gKyAgICAgICAgICAgICAgICAgIChWT0lEICoqKSAmSHR0cCwN Cj4gPj4+Pj4gKyAgICAgICAgICAgICAgICAgIEltYWdlLA0KPiA+Pj4+PiArICAgICAgICAgICAg ICAgICAgQ29udHJvbGxlciwNCj4gPj4+Pj4gKyAgICAgICAgICAgICAgICAgIEVGSV9PUEVOX1BS T1RPQ09MX0JZX0RSSVZFUg0KPiA+Pj4+PiArICAgICAgICAgICAgICAgICAgKTsNCj4gPj4+Pj4g KyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSB8fCAoSHR0cCA9PSBOVUxMKSkgew0KPiA+Pj4+PiAr ICAgIGdvdG8gT05fRVJST1I7DQo+ID4+Pj4+ICsgIH0NCj4gPj4+Pj4gKw0KPiA+Pj4+PiArICAv Lw0KPiA+Pj4+PiArICAvLyBJbml0IHRoZSBjb25maWd1cmF0aW9uIGRhdGEgYW5kIGNvbmZpZ3Vy ZSB0aGUgSFRUUCBjaGlsZC4NCj4gPj4+Pj4gKyAgLy8NCj4gPj4+Pj4gKyAgSHR0cElvLT5JbWFn ZSAgICAgICA9IEltYWdlOw0KPiA+Pj4+PiArICBIdHRwSW8tPkNvbnRyb2xsZXIgID0gQ29udHJv bGxlcjsNCj4gPj4+Pj4gKyAgSHR0cElvLT5JcFZlcnNpb24gICA9IElwVmVyc2lvbjsNCj4gPj4+ Pj4gKyAgSHR0cElvLT5IdHRwICAgICAgICA9IEh0dHA7DQo+ID4+Pj4+ICsgIEh0dHBJby0+Q2Fs bGJhY2sgICAgPSBDYWxsYmFjazsNCj4gPj4+Pj4gKyAgSHR0cElvLT5Db250ZXh0ICAgICA9IENv bnRleHQ7DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyAgaWYgKENvbmZpZ0RhdGEgIT0gTlVMTCkgew0K PiA+Pj4+PiArICAgIGlmIChIdHRwSW8tPklwVmVyc2lvbiA9PSBJUF9WRVJTSU9OXzQpIHsNCj4g Pj4+Pj4gKyAgICAgIEh0dHBDb25maWdEYXRhLkxvY2FsQWRkcmVzc0lzSVB2NiAgPSBGQUxTRTsN Cj4gPj4+Pj4gKyAgICAgIEh0dHBDb25maWdEYXRhLkh0dHBWZXJzaW9uICAgICAgICAgPSBDb25m aWdEYXRhLQ0KPiA+Q29uZmlnNC5IdHRwVmVyc2lvbjsNCj4gPj4+Pj4gKyAgICAgIEh0dHBDb25m aWdEYXRhLlRpbWVPdXRNaWxsaXNlYyAgICAgPSBDb25maWdEYXRhLQ0KPiA+Pj4+PiBDb25maWc0 LlJlcXVlc3RUaW1lT3V0Ow0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgICAgICBIdHRwNEFjY2Vzc1Bv aW50LlVzZURlZmF1bHRBZGRyZXNzID0gQ29uZmlnRGF0YS0NCj4gPj4+Pj4gQ29uZmlnNC5Vc2VE ZWZhdWx0QWRkcmVzczsNCj4gPj4+Pj4gKyAgICAgIEh0dHA0QWNjZXNzUG9pbnQuTG9jYWxQb3J0 ICAgICAgICAgPSBDb25maWdEYXRhLT5Db25maWc0LkxvY2FsUG9ydDsNCj4gPj4+Pj4gKyAgICAg IElQNF9DT1BZX0FERFJFU1MgKCZIdHRwNEFjY2Vzc1BvaW50LkxvY2FsQWRkcmVzcywNCj4gPj4g JkNvbmZpZ0RhdGEtDQo+ID4+Pj4+IENvbmZpZzQuTG9jYWxJcCk7DQo+ID4+Pj4+ICsgICAgICBJ UDRfQ09QWV9BRERSRVNTICgmSHR0cDRBY2Nlc3NQb2ludC5Mb2NhbFN1Ym5ldCwNCj4gJkNvbmZp Z0RhdGEtDQo+ID4+Pj4+IENvbmZpZzQuU3VibmV0TWFzayk7DQo+ID4+Pj4+ICsgICAgICBIdHRw Q29uZmlnRGF0YS5BY2Nlc3NQb2ludC5JUHY0Tm9kZSA9ICZIdHRwNEFjY2Vzc1BvaW50Ow0KPiA+ Pj4+PiArICAgIH0gZWxzZSB7DQo+ID4+Pj4+ICsgICAgICBIdHRwQ29uZmlnRGF0YS5Mb2NhbEFk ZHJlc3NJc0lQdjYgPSBUUlVFOw0KPiA+Pj4+PiArICAgICAgSHR0cENvbmZpZ0RhdGEuSHR0cFZl cnNpb24gICAgICAgICA9IENvbmZpZ0RhdGEtDQo+ID5Db25maWc2Lkh0dHBWZXJzaW9uOw0KPiA+ Pj4+PiArICAgICAgSHR0cENvbmZpZ0RhdGEuVGltZU91dE1pbGxpc2VjICAgICA9IENvbmZpZ0Rh dGEtDQo+ID4+Pj4+IENvbmZpZzYuUmVxdWVzdFRpbWVPdXQ7DQo+ID4+Pj4+ICsNCj4gPj4+Pj4g KyAgICAgIEh0dHA2QWNjZXNzUG9pbnQuTG9jYWxQb3J0ICAgICAgICAgPSBDb25maWdEYXRhLT5D b25maWc2LkxvY2FsUG9ydDsNCj4gPj4+Pj4gKyAgICAgIElQNl9DT1BZX0FERFJFU1MgKCZIdHRw NkFjY2Vzc1BvaW50LkxvY2FsQWRkcmVzcywNCj4gPj4gJkNvbmZpZ0RhdGEtDQo+ID4+Pj4+IENv bmZpZzYuTG9jYWxJcCk7DQo+ID4+Pj4+ICsgICAgICBIdHRwQ29uZmlnRGF0YS5BY2Nlc3NQb2lu dC5JUHY2Tm9kZSA9ICZIdHRwNkFjY2Vzc1BvaW50Ow0KPiA+Pj4+PiArICAgIH0NCj4gPj4+Pj4g Kw0KPiA+Pj4+PiArICAgIFN0YXR1cyA9IEh0dHAtPkNvbmZpZ3VyZSAoSHR0cCwgJkh0dHBDb25m aWdEYXRhKTsNCj4gPj4+Pj4gKyAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4+Pj4+ ICsgICAgICBnb3RvIE9OX0VSUk9SOw0KPiA+Pj4+PiArICAgIH0NCj4gPj4+Pj4gKyAgfQ0KPiA+ Pj4+PiArDQo+ID4+Pj4+ICsgIC8vDQo+ID4+Pj4+ICsgIC8vIENyZWF0ZSBldmVudHMgZm9yIHZh cml1b3MgYXN5bmNocm9ub3VzIG9wZXJhdGlvbnMuDQo+ID4+Pj4+ICsgIC8vDQo+ID4+Pj4+ICsg IFN0YXR1cyA9IGdCUy0+Q3JlYXRlRXZlbnQgKA0KPiA+Pj4+PiArICAgICAgICAgICAgICAgICAg RVZUX05PVElGWV9TSUdOQUwsDQo+ID4+Pj4+ICsgICAgICAgICAgICAgICAgICBUUExfTk9USUZZ LA0KPiA+Pj4+PiArICAgICAgICAgICAgICAgICAgSHR0cElvTm90aWZ5LA0KPiA+Pj4+PiArICAg ICAgICAgICAgICAgICAgJkh0dHBJby0+SXNUeERvbmUsDQo+ID4+Pj4+ICsgICAgICAgICAgICAg ICAgICAmRXZlbnQNCj4gPj4+Pj4gKyAgICAgICAgICAgICAgICAgICk7DQo+ID4+Pj4+ICsgIGlm IChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPj4+Pj4gKyAgICBnb3RvIE9OX0VSUk9SOw0KPiA+ Pj4+PiArICB9DQo+ID4+Pj4+ICsgIEh0dHBJby0+UmVxVG9rZW4uRXZlbnQgPSBFdmVudDsNCj4g Pj4+Pj4gKyAgSHR0cElvLT5SZXFUb2tlbi5NZXNzYWdlID0gJkh0dHBJby0+UmVxTWVzc2FnZTsN Cj4gPj4+Pj4gKw0KPiA+Pj4+PiArICBTdGF0dXMgPSBnQlMtPkNyZWF0ZUV2ZW50ICgNCj4gPj4+ Pj4gKyAgICAgICAgICAgICAgICAgIEVWVF9OT1RJRllfU0lHTkFMLA0KPiA+Pj4+PiArICAgICAg ICAgICAgICAgICAgVFBMX05PVElGWSwNCj4gPj4+Pj4gKyAgICAgICAgICAgICAgICAgIEh0dHBJ b05vdGlmeSwNCj4gPj4+Pj4gKyAgICAgICAgICAgICAgICAgICZIdHRwSW8tPklzUnhEb25lLA0K PiA+Pj4+PiArICAgICAgICAgICAgICAgICAgJkV2ZW50DQo+ID4+Pj4+ICsgICAgICAgICAgICAg ICAgICApOw0KPiA+Pj4+PiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4+Pj4+ICsg ICAgZ290byBPTl9FUlJPUjsNCj4gPj4+Pj4gKyAgfQ0KPiA+Pj4+PiArICBIdHRwSW8tPlJzcFRv a2VuLkV2ZW50ID0gRXZlbnQ7DQo+ID4+Pj4+ICsgIEh0dHBJby0+UnNwVG9rZW4uTWVzc2FnZSA9 ICZIdHRwSW8tPlJzcE1lc3NhZ2U7DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyAgLy8NCj4gPj4+Pj4g KyAgLy8gQ3JlYXRlIFRpbWVvdXRFdmVudCBmb3IgcmVzcG9uc2UgIC8vICBTdGF0dXMgPSBnQlMt PkNyZWF0ZUV2ZW50DQo+ID4+Pj4+ICsgKA0KPiA+Pj4+PiArICAgICAgICAgICAgICAgICAgRVZU X1RJTUVSLA0KPiA+Pj4+PiArICAgICAgICAgICAgICAgICAgVFBMX0NBTExCQUNLLA0KPiA+Pj4+ PiArICAgICAgICAgICAgICAgICAgTlVMTCwNCj4gPj4+Pj4gKyAgICAgICAgICAgICAgICAgIE5V TEwsDQo+ID4+Pj4+ICsgICAgICAgICAgICAgICAgICAmRXZlbnQNCj4gPj4+Pj4gKyAgICAgICAg ICAgICAgICAgICk7DQo+ID4+Pj4+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPj4+ Pj4gKyAgICBnb3RvIE9OX0VSUk9SOw0KPiA+Pj4+PiArICB9DQo+ID4+Pj4+ICsgIEh0dHBJby0+ VGltZW91dEV2ZW50ID0gRXZlbnQ7DQo+ID4+Pj4+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4g Pj4+Pj4gKw0KPiA+Pj4+PiArT05fRVJST1I6DQo+ID4+Pj4+ICsgIEh0dHBJb0Rlc3Ryb3lJbyAo SHR0cElvKTsNCj4gPj4+Pj4gKw0KPiA+Pj4+PiArICByZXR1cm4gU3RhdHVzOw0KPiA+Pj4+PiAr fQ0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsvKioNCj4gPj4+Pj4gKyAgU3luY2hyb25vdXNseSBzZW5k IGEgSFRUUCBSRVFVRVNUIG1lc3NhZ2UgdG8gdGhlIHNlcnZlci4NCj4gPj4+Pj4gKw0KPiA+Pj4+ PiArICBAcGFyYW1baW5dICAgSHR0cElvICAgICAgICAgICBUaGUgSHR0cElvIHdyYXBwaW5nIHRo ZSBIVFRQIHNlcnZpY2UuDQo+ID4+Pj4+ICsgIEBwYXJhbVtpbl0gICBSZXF1ZXN0ICAgICAgICAg IEEgcG9pbnRlciB0byBzdG9yYWdlIHN1Y2ggZGF0YSBhcyBVUkwNCj4gYW5kDQo+ID4+Pj4gSFRU UCBtZXRob2QuDQo+ID4+Pj4+ICsgIEBwYXJhbVtpbl0gICBIZWFkZXJDb3VudCAgICAgIE51bWJl ciBvZiBIVFRQIGhlYWRlciBzdHJ1Y3R1cmVzIGluDQo+ID4+Pj4gSGVhZGVycyBsaXN0Lg0KPiA+ Pj4+PiArICBAcGFyYW1baW5dICAgSGVhZGVycyAgICAgICAgICBBcnJheSBjb250YWluaW5nIGxp c3Qgb2YgSFRUUCBoZWFkZXJzLg0KPiA+Pj4+PiArICBAcGFyYW1baW5dICAgQm9keUxlbmd0aCAg ICAgICBMZW5ndGggaW4gYnl0ZXMgb2YgdGhlIEhUVFAgYm9keS4NCj4gPj4+Pj4gKyAgQHBhcmFt W2luXSAgIEJvZHkgICAgICAgICAgICAgQm9keSBhc3NvY2lhdGVkIHdpdGggdGhlIEhUVFAgcmVx dWVzdC4NCj4gPj4+Pj4gKw0KPiA+Pj4+PiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAg ICAgVGhlIEhUVFAgcmVxdWVzdCBpcyB0cmFzbWl0dGVkLg0KPiA+Pj4+PiArICBAcmV0dmFsIEVG SV9JTlZBTElEX1BBUkFNRVRFUiAgT25lIG9yIG1vcmUgcGFyYW1ldGVycyBhcmUNCj4gPj4gaW52 YWxpZC4NCj4gPj4+Pj4gKyAgQHJldHZhbCBFRklfT1VUX09GX1JFU09VUkNFUyAgIEZhaWxlZCB0 byBhbGxvY2F0ZSBtZW1vcnkuDQo+ID4+Pj4+ICsgIEByZXR2YWwgRUZJX0RFVklDRV9FUlJPUiAg ICAgICBBbiB1bmV4cGVjdGVkIG5ldHdvcmsgb3Igc3lzdGVtDQo+ID4+IGVycm9yDQo+ID4+Pj4g b2NjdXJyZWQuDQo+ID4+Pj4+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgICAgICBPdGhl ciBlcnJvcnMgYXMgaW5kaWNhdGVkLg0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsqKi8NCj4gPj4+Pj4g K0VGSV9TVEFUVVMNCj4gPj4+Pj4gK0h0dHBJb1NlbmRSZXF1ZXN0ICgNCj4gPj4+Pj4gKyAgSU4g IEhUVFBfSU8gICAgICAgICAgICAgICAgKkh0dHBJbywNCj4gPj4+Pj4gKyAgSU4gIEVGSV9IVFRQ X1JFUVVFU1RfREFUQSAgKlJlcXVlc3QsDQo+ID4+Pj4+ICsgIElOICBVSU5UTiAgICAgICAgICAg ICAgICAgIEhlYWRlckNvdW50LA0KPiA+Pj4+PiArICBJTiAgRUZJX0hUVFBfSEVBREVSICAgICAg ICAqSGVhZGVycywNCj4gPj4+Pj4gKyAgSU4gIFVJTlROICAgICAgICAgICAgICAgICAgQm9keUxl bmd0aCwNCj4gPj4+Pj4gKyAgSU4gIFZPSUQgICAgICAgICAgICAgICAgICAgKkJvZHkNCj4gPj4+ Pj4gKyAgKQ0KPiA+Pj4+PiArew0KPiA+Pj4+PiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAg ICBTdGF0dXM7DQo+ID4+Pj4+ICsgIEVGSV9IVFRQX1BST1RPQ09MICAgICAgICAgICpIdHRwOw0K PiA+Pj4+PiArDQo+ID4+Pj4+ICsgIGlmIChIdHRwSW8gPT0gTlVMTCB8fCBIdHRwSW8tPkh0dHAg PT0gTlVMTCkgew0KPiA+Pj4+PiArICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ ID4+Pj4+ICsgIH0NCj4gPj4+Pj4gKw0KPiA+Pj4+PiArICBIdHRwSW8tPlJlcVRva2VuLlN0YXR1 cyAgPSBFRklfTk9UX1JFQURZOw0KPiA+Pj4+PiArIEh0dHBJby0+UmVxVG9rZW4uTWVzc2FnZS0+ RGF0YS5SZXF1ZXN0ID0gUmVxdWVzdDsNCj4gPj4+Pj4gKyBIdHRwSW8tPlJlcVRva2VuLk1lc3Nh Z2UtPkhlYWRlckNvdW50ICA9IEhlYWRlckNvdW50Ow0KPiA+Pj4+PiArICBIdHRwSW8tPlJlcVRv a2VuLk1lc3NhZ2UtPkhlYWRlcnMgICAgICA9IEhlYWRlcnM7DQo+ID4+Pj4+ICsgIEh0dHBJby0+ UmVxVG9rZW4uTWVzc2FnZS0+Qm9keUxlbmd0aCAgID0gQm9keUxlbmd0aDsNCj4gPj4+Pj4gKyAg SHR0cElvLT5SZXFUb2tlbi5NZXNzYWdlLT5Cb2R5ICAgICAgICAgPSBCb2R5Ow0KPiA+Pj4+PiAr DQo+ID4+Pj4+ICsgIGlmIChIdHRwSW8tPkNhbGxiYWNrICE9IE5VTEwpIHsNCj4gPj4+Pj4gKyAg ICBTdGF0dXMgPSBIdHRwSW8tPkNhbGxiYWNrICgNCj4gPj4+Pj4gKyAgICAgICAgICAgICAgIEh0 dHBJb1JlcXVlc3QsDQo+ID4+Pj4+ICsgICAgICAgICAgICAgICBIdHRwSW8tPlJlcVRva2VuLk1l c3NhZ2UsDQo+ID4+Pj4+ICsgICAgICAgICAgICAgICBIdHRwSW8tPkNvbnRleHQNCj4gPj4+Pj4g KyAgICAgICAgICAgICAgICk7DQo+ID4+Pj4+ICsgICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkg ew0KPiA+Pj4+PiArICAgICAgcmV0dXJuIFN0YXR1czsNCj4gPj4+Pj4gKyAgICB9DQo+ID4+Pj4+ ICsgIH0NCj4gPj4+Pj4gKw0KPiA+Pj4+PiArICAvLw0KPiA+Pj4+PiArICAvLyBRdWV1ZSB0aGUg cmVxdWVzdCB0b2tlbiB0byBIVFRQIGluc3RhbmNlcy4NCj4gPj4+Pj4gKyAgLy8NCj4gPj4+Pj4g KyAgSHR0cCA9IEh0dHBJby0+SHR0cDsNCj4gPj4+Pj4gKyAgSHR0cElvLT5Jc1R4RG9uZSA9IEZB TFNFOw0KPiA+Pj4+PiArICBTdGF0dXMgPSBIdHRwLT5SZXF1ZXN0ICgNCj4gPj4+Pj4gKyAgICAg ICAgICAgICAgICAgICBIdHRwLA0KPiA+Pj4+PiArICAgICAgICAgICAgICAgICAgICZIdHRwSW8t PlJlcVRva2VuDQo+ID4+Pj4+ICsgICAgICAgICAgICAgICAgICAgKTsNCj4gPj4+Pj4gKyAgaWYg KEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+Pj4+PiArICAgIHJldHVybiBTdGF0dXM7DQo+ID4+ Pj4+ICsgIH0NCj4gPj4+Pj4gKw0KPiA+Pj4+PiArICAvLw0KPiA+Pj4+PiArICAvLyBQb2xsIHRo ZSBuZXR3b3JrIHVudGlsIHRyYW5zbWl0IGZpbmlzaC4NCj4gPj4+Pj4gKyAgLy8NCj4gPj4+Pj4g KyAgd2hpbGUgKCFIdHRwSW8tPklzVHhEb25lKSB7DQo+ID4+Pj4+ICsgICAgSHR0cC0+UG9sbCAo SHR0cCk7DQo+ID4+Pj4+ICsgIH0NCj4gPj4+Pj4gKw0KPiA+Pj4+PiArICByZXR1cm4gSHR0cElv LT5SZXFUb2tlbi5TdGF0dXM7DQo+ID4+Pj4+ICt9DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKy8qKg0K PiA+Pj4+PiArICBTeW5jaHJvbm91c2x5IHJlY2VpdmUgYSBIVFRQIFJFU1BPTlNFIG1lc3NhZ2Ug ZnJvbSB0aGUgc2VydmVyLg0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgIEBwYXJhbVtpbl0gICBIdHRw SW8gICAgICAgICAgIFRoZSBIdHRwSW8gd3JhcHBpbmcgdGhlIEhUVFAgc2VydmljZS4NCj4gPj4+ Pj4gKyAgQHBhcmFtW2luXSAgIFJlY3ZNc2dIZWFkZXIgICAgVFJVRSB0byByZWNlaXZlIGEgbmV3 IEhUVFANCj4gcmVzcG9uc2UNCj4gPj4+PiAoZnJvbSBtZXNzYWdlIGhlYWRlcikuDQo+ID4+Pj4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFIHRvIGNvbnRpbnVlIHJlY2Vp dmUgdGhlIHByZXZpb3VzIHJlc3BvbnNlDQo+ID4+IG1lc3NhZ2UuDQo+ID4+Pj4+ICsgIEBwYXJh bVtvdXRdICBSZXNwb25zZURhdGEgICAgIFBvaW50IHRvIGEgd3JhcHBlciBvZiB0aGUgcmVjZWl2 ZWQNCj4gPj4+PiByZXNwb25zZSBkYXRhLg0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgIEByZXR2YWwg RUZJX1NVQ0NFU1MgICAgICAgICAgICBUaGUgSFRUUCByZXNwb25zZSBpcyByZWNlaXZlZC4NCj4g Pj4+Pj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgIE9uZSBvciBtb3JlIHBhcmFt ZXRlcnMgYXJlDQo+ID4+IGludmFsaWQuDQo+ID4+Pj4+ICsgIEByZXR2YWwgRUZJX09VVF9PRl9S RVNPVVJDRVMgICBGYWlsZWQgdG8gYWxsb2NhdGUgbWVtb3J5Lg0KPiA+Pj4+PiArICBAcmV0dmFs IEVGSV9ERVZJQ0VfRVJST1IgICAgICAgQW4gdW5leHBlY3RlZCBuZXR3b3JrIG9yIHN5c3RlbQ0K PiA+PiBlcnJvcg0KPiA+Pj4+IG9jY3VycmVkLg0KPiA+Pj4+PiArICBAcmV0dmFsIE90aGVycyAg ICAgICAgICAgICAgICAgT3RoZXIgZXJyb3JzIGFzIGluZGljYXRlZC4NCj4gPj4+Pj4gKw0KPiA+ Pj4+PiArKiovDQo+ID4+Pj4+ICtFRklfU1RBVFVTDQo+ID4+Pj4+ICtIdHRwSW9SZWN2UmVzcG9u c2UgKA0KPiA+Pj4+PiArICBJTiAgICAgIEhUVFBfSU8gICAgICAgICAgICAgICAgICAqSHR0cElv LA0KPiA+Pj4+PiArICBJTiAgICAgIEJPT0xFQU4gICAgICAgICAgICAgICAgICBSZWN2TXNnSGVh ZGVyLA0KPiA+Pj4+PiArICBPVVQgICAgIEhUVFBfSU9fUkVTUE9OU0VfREFUQSAgICAqUmVzcG9u c2VEYXRhDQo+ID4+Pj4+ICsgICkNCj4gPj4+Pj4gK3sNCj4gPj4+Pj4gKyAgRUZJX1NUQVRVUyAg ICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+Pj4+PiArICBFRklfSFRUUF9QUk9UT0NPTCAgICAg ICAgICAqSHR0cDsNCj4gPj4+Pj4gKw0KPiA+Pj4+PiArICBpZiAoSHR0cElvID09IE5VTEwgfHwg SHR0cElvLT5IdHRwID09IE5VTEwgfHwgUmVzcG9uc2VEYXRhID09DQo+IE5VTEwpDQo+ID4+IHsN Cj4gPj4+Pj4gKyAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiA+Pj4+PiArICB9 DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyAgLy8NCj4gPj4+Pj4gKyAgLy8gQ3JlYXRlIG5ldyBUaW1l b3V0RXZlbnQgZm9yIHJlc3BvbnNlICAvLyAgaWYNCj4gPj4+Pj4gKyAoSHR0cElvLT5UaW1lb3V0 RXZlbnQgIT0gTlVMTCkgew0KPiA+Pj4+PiArICAgIGdCUy0+Q2xvc2VFdmVudCAoSHR0cElvLT5U aW1lb3V0RXZlbnQpOw0KPiA+Pj4+PiArICAgIEh0dHBJby0+VGltZW91dEV2ZW50ID0gTlVMTDsN Cj4gPj4+Pj4gKyAgfQ0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgIFN0YXR1cyA9IGdCUy0+Q3JlYXRl RXZlbnQgKA0KPiA+Pj4+PiArICAgICAgICAgICAgICAgICAgRVZUX1RJTUVSLA0KPiA+Pj4+PiAr ICAgICAgICAgICAgICAgICAgVFBMX0NBTExCQUNLLA0KPiA+Pj4+PiArICAgICAgICAgICAgICAg ICAgTlVMTCwNCj4gPj4+Pj4gKyAgICAgICAgICAgICAgICAgIE5VTEwsDQo+ID4+Pj4+ICsgICAg ICAgICAgICAgICAgICAmSHR0cElvLT5UaW1lb3V0RXZlbnQNCj4gPj4+Pj4gKyAgICAgICAgICAg ICAgICAgICk7DQo+ID4+Pj4+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPj4+Pj4g KyAgICByZXR1cm4gU3RhdHVzOw0KPiA+Pj4+PiArICB9DQo+ID4+Pj4gSXMgaXQgbmVjZXNzYXJ5 IHRvIHJlY3JlYXRlIHRoZSBldmVudD8gV291bGRuJ3QgdGhpcyBiZSBlbm91Z2ggdG8gcmVzZXQN Cj4gaXQ/DQo+ID4+PiBObywgd2UgZG9u4oCZdCBoYXZlIHRvIHJlY3JlYXRlIHRoaXMgZXZlbnQu DQo+ID4+Pj4gZ0JTLT5TZXRUaW1lciAoSHR0cElvLT5UaW1lb3V0RXZlbnQsIFRpbWVyQ2FuY2Vs LCAwKTsNCj4gPj4+IEkgbWFkZSBzb21lIGNoYW5nZXMgaW4gdGhpcyBmdW5jdGlvbi4NCj4gPj4+ Pj4gKw0KPiA+Pj4+PiArICAvLw0KPiA+Pj4+PiArICAvLyBTdGFydCB0aGUgdGltZXIsIGFuZCB3 YWl0IFRpbWVvdXQgc2Vjb25kcyB0byByZWNlaXZlIHRoZSBoZWFkZXINCj4gPj4+PiBwYWNrZXQu DQo+ID4+Pj4+ICsgIC8vDQo+ID4+Pj4+ICsgIFN0YXR1cyA9IGdCUy0+U2V0VGltZXIgKEh0dHBJ by0+VGltZW91dEV2ZW50LCBUaW1lclJlbGF0aXZlLA0KPiA+Pj4+PiArIEh0dHBJby0+VGltZW91 dCAqIFRJQ0tTX1BFUl9NUyk7ICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4+Pj4+ICsg ICAgcmV0dXJuIFN0YXR1czsNCj4gPj4+Pj4gKyAgfQ0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgIC8v DQo+ID4+Pj4+ICsgIC8vIFF1ZXVlIHRoZSByZXNwb25zZSB0b2tlbiB0byBIVFRQIGluc3RhbmNl cy4NCj4gPj4+Pj4gKyAgLy8NCj4gPj4+Pj4gKyAgSHR0cElvLT5Sc3BUb2tlbi5TdGF0dXMgID0g RUZJX05PVF9SRUFEWTsgIGlmIChSZWN2TXNnSGVhZGVyKSB7DQo+ID4+Pj4+ICsgICAgSHR0cElv LT5Sc3BUb2tlbi5NZXNzYWdlLT5EYXRhLlJlc3BvbnNlID0NCj4gPj4+Pj4gKyAmUmVzcG9uc2VE YXRhLT5SZXNwb25zZTsgIH0gZWxzZSB7DQo+ID4+Pj4+ICsgICAgSHR0cElvLT5Sc3BUb2tlbi5N ZXNzYWdlLT5EYXRhLlJlc3BvbnNlID0gTlVMTDsgIH0NCj4gPj4+Pj4gKyAgSHR0cElvLT5Sc3BU b2tlbi5NZXNzYWdlLT5IZWFkZXJDb3VudCAgID0gMDsNCj4gPj4+Pj4gKyAgSHR0cElvLT5Sc3BU b2tlbi5NZXNzYWdlLT5IZWFkZXJzICAgICAgID0gTlVMTDsNCj4gPj4+Pj4gKyAgSHR0cElvLT5S c3BUb2tlbi5NZXNzYWdlLT5Cb2R5TGVuZ3RoICAgID0gUmVzcG9uc2VEYXRhLQ0KPiA+Pj4+PiBC b2R5TGVuZ3RoOw0KPiA+Pj4+PiArICBIdHRwSW8tPlJzcFRva2VuLk1lc3NhZ2UtPkJvZHkgICAg ICAgICAgPSBSZXNwb25zZURhdGEtPkJvZHk7DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyAgSHR0cCA9 IEh0dHBJby0+SHR0cDsNCj4gPj4+Pj4gKyAgSHR0cElvLT5Jc1J4RG9uZSA9IEZBTFNFOw0KPiA+ Pj4+PiArICBTdGF0dXMgPSBIdHRwLT5SZXNwb25zZSAoDQo+ID4+Pj4+ICsgICAgICAgICAgICAg ICAgICAgSHR0cCwNCj4gPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAmSHR0cElvLT5Sc3BUb2tl bg0KPiA+Pj4+PiArICAgICAgICAgICAgICAgICAgICk7DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyAg aWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+Pj4+PiArICAgIGdCUy0+U2V0VGltZXIgKEh0 dHBJby0+VGltZW91dEV2ZW50LCBUaW1lckNhbmNlbCwgMCk7DQo+ID4+Pj4+ICsgICAgcmV0dXJu IFN0YXR1czsNCj4gPj4+Pj4gKyAgfQ0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgIC8vDQo+ID4+Pj4+ ICsgIC8vIFBvbGwgdGhlIG5ldHdvcmsgdW50aWwgcmVjZWl2ZSBmaW5pc2guDQo+ID4+Pj4+ICsg IC8vDQo+ID4+Pj4+ICsgIHdoaWxlICghSHR0cElvLT5Jc1J4RG9uZSAmJiAoKEh0dHBJby0+VGlt ZW91dEV2ZW50ID09IE5VTEwpIHx8DQo+ID4+Pj4gRUZJX0VSUk9SIChnQlMtPkNoZWNrRXZlbnQg KEh0dHBJby0+VGltZW91dEV2ZW50KSkpKSB7DQo+ID4+Pj4+ICsgICAgSHR0cC0+UG9sbCAoSHR0 cCk7DQo+ID4+Pj4+ICsgIH0NCj4gPj4+Pj4gKw0KPiA+Pj4+PiArICBnQlMtPlNldFRpbWVyIChI dHRwSW8tPlRpbWVvdXRFdmVudCwgVGltZXJDYW5jZWwsIDApOw0KPiA+Pj4+PiArDQo+ID4+Pj4+ ICsgIGlmICghSHR0cElvLT5Jc1J4RG9uZSkgew0KPiA+Pj4+PiArICAgIC8vDQo+ID4+Pj4+ICsg ICAgLy8gVGltZW91dCBvY2N1cnMsIGNhbmNlbCB0aGUgcmVzcG9uc2UgdG9rZW4uDQo+ID4+Pj4+ ICsgICAgLy8NCj4gPj4+Pj4gKyAgICBIdHRwLT5DYW5jZWwgKEh0dHAsICZIdHRwSW8tPlJzcFRv a2VuKTsNCj4gPj4+Pj4gKw0KPiA+Pj4+PiArICAgIFN0YXR1cyA9IEVGSV9USU1FT1VUOw0KPiA+ Pj4+PiArDQo+ID4+Pj4+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gPj4+Pj4gKyAgfSBlbHNlIHsN Cj4gPj4+Pj4gKyAgICBIdHRwSW8tPklzUnhEb25lID0gRkFMU0U7DQo+ID4+Pj4+ICsgIH0NCj4g Pj4+Pj4gKw0KPiA+Pj4+PiArICBpZiAoKEh0dHBJby0+Q2FsbGJhY2sgIT0gTlVMTCkgJiYNCj4g Pj4+Pj4gKyAgICAgIChIdHRwSW8tPlJzcFRva2VuLlN0YXR1cyA9PSBFRklfU1VDQ0VTUyB8fCBI dHRwSW8tDQo+ID4+Pj4+IFJzcFRva2VuLlN0YXR1cyA9PSBFRklfSFRUUF9FUlJPUikpIHsNCj4g Pj4+Pj4gKyAgICBTdGF0dXMgPSBIdHRwSW8tPkNhbGxiYWNrICgNCj4gPj4+Pj4gKyAgICAgICAg ICAgICAgIEh0dHBJb1Jlc3BvbnNlLA0KPiA+Pj4+PiArICAgICAgICAgICAgICAgSHR0cElvLT5S c3BUb2tlbi5NZXNzYWdlLA0KPiA+Pj4+PiArICAgICAgICAgICAgICAgSHR0cElvLT5Db250ZXh0 DQo+ID4+Pj4+ICsgICAgICAgICAgICAgICApOw0KPiA+Pj4+PiArICAgIGlmIChFRklfRVJST1Ig KFN0YXR1cykpIHsNCj4gPj4+Pj4gKyAgICAgIHJldHVybiBTdGF0dXM7DQo+ID4+Pj4+ICsgICAg fQ0KPiA+Pj4+PiArICB9DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyAgLy8NCj4gPj4+Pj4gKyAgLy8g U3RvcmUgdGhlIHJlY2VpdmVkIGRhdGEgaW50byB0aGUgd3JhcHBlci4NCj4gPj4+Pj4gKyAgLy8N Cj4gPj4+Pj4gKyAgUmVzcG9uc2VEYXRhLT5TdGF0dXMgPSBIdHRwSW8tPlJzcFRva2VuLlN0YXR1 czsNCj4gPj4+Pj4gKyBSZXNwb25zZURhdGEtPkhlYWRlckNvdW50ID0gSHR0cElvLT5Sc3BUb2tl bi5NZXNzYWdlLQ0KPiA+Pj4+PiBIZWFkZXJDb3VudDsNCj4gPj4+Pj4gKyAgUmVzcG9uc2VEYXRh LT5IZWFkZXJzICAgICA9IEh0dHBJby0+UnNwVG9rZW4uTWVzc2FnZS0+SGVhZGVyczsNCj4gPj4+ Pj4gKyAgUmVzcG9uc2VEYXRhLT5Cb2R5TGVuZ3RoICA9IEh0dHBJby0+UnNwVG9rZW4uTWVzc2Fn ZS0NCj4gPj4+Pj4gQm9keUxlbmd0aDsNCj4gPj4+Pj4gKw0KPiA+Pj4+PiArICByZXR1cm4gU3Rh dHVzOw0KPiA+Pj4+PiArfQ0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsvKioNCj4gPj4+Pj4gKyAgR2V0 IHRoZSB2YWx1ZSBvZiB0aGUgY29udGVudCBsZW5ndGggaWYgdGhlcmUgaXMgYSAiQ29udGVudC1M ZW5ndGgiDQo+ID4+IGhlYWRlci4NCj4gPj4+Pj4gKw0KPiA+Pj4+PiArICBAcGFyYW1baW5dICAg IEhlYWRlckNvdW50ICAgICAgICBOdW1iZXIgb2YgSFRUUCBoZWFkZXIgc3RydWN0dXJlcw0KPiBp bg0KPiA+Pj4+IEhlYWRlcnMuDQo+ID4+Pj4+ICsgIEBwYXJhbVtpbl0gICAgSGVhZGVycyAgICAg ICAgICAgIEFycmF5IGNvbnRhaW5pbmcgbGlzdCBvZiBIVFRQIGhlYWRlcnMuDQo+ID4+Pj4+ICsg IEBwYXJhbVtvdXRdICAgQ29udGVudExlbmd0aCAgICAgIFBvaW50ZXIgdG8gc2F2ZSB0aGUgdmFs dWUgb2YgdGhlDQo+ID4+IGNvbnRlbnQNCj4gPj4+PiBsZW5ndGguDQo+ID4+Pj4+ICsNCj4gPj4+ Pj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgICAgU3VjY2Vzc2Z1bGx5IGdldCB0 aGUgY29udGVudCBsZW5ndGguDQo+ID4+Pj4+ICsgIEByZXR2YWwgRUZJX05PVF9GT1VORCAgICAg ICAgICAgIE5vICJDb250ZW50LUxlbmd0aCIgaGVhZGVyIGluIHRoZQ0KPiA+Pj4+IEhlYWRlcnMu DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyoqLw0KPiA+Pj4+PiArRUZJX1NUQVRVUw0KPiA+Pj4+PiAr SHR0cElvR2V0Q29udGVudExlbmd0aCAoDQo+ID4+Pj4+ICsgIElOICAgICBVSU5UTiAgICAgICAg ICAgICAgICBIZWFkZXJDb3VudCwNCj4gPj4+Pj4gKyAgSU4gICAgIEVGSV9IVFRQX0hFQURFUiAg ICAgICpIZWFkZXJzLA0KPiA+Pj4+PiArICBPVVQgICAgVUlOVE4gICAgICAgICAgICAgICAgKkNv bnRlbnRMZW5ndGgNCj4gPj4+Pj4gKyAgKQ0KPiA+Pj4+PiArew0KPiA+Pj4+PiArICBFRklfSFRU UF9IRUFERVIgICAgICAgKkhlYWRlcjsNCj4gPj4+Pj4gKw0KPiA+Pj4+PiArICBIZWFkZXIgPSBI dHRwRmluZEhlYWRlciAoSGVhZGVyQ291bnQsIEhlYWRlcnMsDQo+ID4+Pj4+ICsgSFRUUF9IRUFE RVJfQ09OVEVOVF9MRU5HVEgpOyAgaWYgKEhlYWRlciA9PSBOVUxMKSB7DQo+ID4+Pj4+ICsgICAg cmV0dXJuIEVGSV9OT1RfRk9VTkQ7DQo+ID4+Pj4+ICsgIH0NCj4gPj4+Pj4gKw0KPiA+Pj4+PiAr ICByZXR1cm4gQXNjaWlTdHJEZWNpbWFsVG9VaW50blMgKEhlYWRlci0+RmllbGRWYWx1ZSwgKENI QVI4ICoqKQ0KPiA+Pj4+PiArTlVMTCwgQ29udGVudExlbmd0aCk7IH0NCj4gPj4+Pj4gKy8qKg0K PiA+Pj4+PiArICBTZW5kIEhUVFAgcmVxdWVzdCBpbiBjaHVua3MuDQo+ID4+Pj4+ICsNCj4gPj4+ Pj4gKyAgQHBhcmFtW2luXSAgIEh0dHBJbyAgICAgICAgICAgICBUaGUgSHR0cElvIHdyYXBwaW5n IHRoZSBIVFRQIHNlcnZpY2UuDQo+ID4+Pj4+ICsgIEBwYXJhbVtpbl0gICBTZW5kQ2h1bmtQcm9j ZXNzICAgUG9pbnRlciB0byBjdXJyZW50IGNodW5rIHByb2Nlc3MNCj4gPj4+PiBzdGF0dXMuDQo+ ID4+Pj4+ICsgIEBwYXJhbVtpbl0gICBSZXF1ZXN0TWVzc2FnZSAgICAgUmVxdWVzdCB0byBzZW5k Lg0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICAg U3VjY2Vzc2Z1bGx5IHRvIHNlbmQgY2h1bmsgZGF0YQ0KPiBhY2NvcmRpbmcNCj4gPj4gdG8NCj4g Pj4+PiBTZW5kQ2h1bmtQcm9jZXNzLg0KPiA+Pj4+PiArICBAcmV0dmFsIE90aGVyICAgICAgICAg ICAgICAgICAgIE90aGVyIGVycm9ycy4NCj4gPj4+Pj4gKw0KPiA+Pj4+PiArKiovDQo+ID4+Pj4+ ICtFRklfU1RBVFVTDQo+ID4+Pj4+ICtIdHRwSW9TZW5kQ2h1bmtlZFRyYW5zZmVyICgNCj4gPj4+ Pj4gKyAgSU4gIEhUVFBfSU8gICAgICAgICAgICAgICAgICAgICpIdHRwSW8sDQo+ID4+Pj4+ICsg IElOICBIVFRQX0lPX1NFTkRfQ0hVTktfUFJPQ0VTUyAqU2VuZENodW5rUHJvY2VzcywNCj4gPj4+ Pj4gKyAgSU4gIEVGSV9IVFRQX01FU1NBR0UgICAgICAgICAgICpSZXF1ZXN0TWVzc2FnZQ0KPiA+ Pj4+PiArKQ0KPiA+Pj4+PiArew0KPiA+Pj4+PiArICBFRklfU1RBVFVTIFN0YXR1czsNCj4gPj4+ Pj4gKyAgRUZJX0hUVFBfSEVBREVSICpOZXdIZWFkZXJzOw0KPiA+Pj4+PiArICBFRklfSFRUUF9I RUFERVIgKkNvbnRlbnRMZW5ndGhIZWFkZXI7DQo+ID4+Pj4+ICsgIFVJTlROIEFkZE5ld0hlYWRl cjsNCj4gPj4+Pj4gKyAgVUlOVE4gSGVhZGVyQ291bnQ7DQo+ID4+Pj4+ICsgIENIQVI4ICpNZXNz YWdlQm9keTsNCj4gPj4+Pj4gKyAgVUlOVE4gTWVzc2FnZUJvZHlMZW5ndGg7DQo+ID4+Pj4+ICsg IENIQVI4IENodW5rTGVuZ3RoU3RyIFtIVFRQX0lPX0NIVU5LX1NJWkVfU1RSSU5HX0xFTl07DQo+ ID4+Pj4+ICsgIEVGSV9IVFRQX1JFUVVFU1RfREFUQSAqU2VudFJlcXVlc3REYXRhOw0KPiA+Pj4+ IFRoaXMgaXMgYSBuZXcgZnVuY3Rpb24gYW5kIEkgYWxyZWFkeSBzZWUgYSBkaWZmZXJlbmNlIGlu IHRoZSBjb2RpbmcNCj4gc3RhbmRhcmQuDQo+ID4+Pj4gUGxlYXNlIGFsaWduIHZhcmlhYmxlIG5h bWVzIGxpa2UgaW4gcHJldmlvdXMgZnVuY3Rpb25zLg0KPiA+Pj4gRG9uZQ0KPiA+Pj4NCj4gPj4+ Pj4gKw0KPiA+Pj4+PiArICBBZGROZXdIZWFkZXIgPSAwOw0KPiA+Pj4+PiArICBOZXdIZWFkZXJz ID0gTlVMTDsNCj4gPj4+Pj4gKyAgTWVzc2FnZUJvZHkgPSBOVUxMOw0KPiA+Pj4+PiArICBDb250 ZW50TGVuZ3RoSGVhZGVyID0gTlVMTDsNCj4gPj4+Pj4gKyAgTWVzc2FnZUJvZHlMZW5ndGggPSAw Ow0KPiA+Pj4+IEFsaWdubWVudCBvZiBhc3NpZ25tZW50cy4NCj4gPj4+IERvbmUNCj4gPj4+DQo+ ID4+Pj4+ICsNCj4gPj4+Pj4gKyAgc3dpdGNoICgqU2VuZENodW5rUHJvY2Vzcykgew0KPiA+Pj4+ PiArICBjYXNlIEh0dHBJb1NlbmRDaHVua0hlYWRlclplcm9Db250ZW50Og0KPiA+Pj4+IENhc2Ug c3BhY2luZzogMiBzcGFjZXMuIEFwcGxpZXMgdGhyb3VnaG91dCBuZXcgY29kZS4NCj4gPj4+Pj4g KyAgICAgIENvbnRlbnRMZW5ndGhIZWFkZXIgPQ0KPiA+Pj4+PiArIEh0dHBGaW5kSGVhZGVyKFJl cXVlc3RNZXNzYWdlLT5IZWFkZXJDb3VudCwNCj4gUmVxdWVzdE1lc3NhZ2UtDQo+ID4+Pj4+IEhl YWRlcnMsDQo+ID4+Pj4+ICsgSFRUUF9IRUFERVJfQ09OVEVOVF9MRU5HVEgpOw0KPiA+Pj4+IFNw YWNpbmcgYWZ0ZXIgZnVuY3Rpb24gY2FsbCBuYW1lLiBUaGlzIGFwcGxpZXMgZnJvbSB0aGlzIHBv aW50IHVudGlsIHRoZQ0KPiBlbmQNCj4gPj4gb2YNCj4gPj4+PiBwYXRjaC4NCj4gPj4+IERvbmUN Cj4gPj4+Pj4gKyAgICAgIGlmIChDb250ZW50TGVuZ3RoSGVhZGVyID09IE5VTEwpIHsNCj4gPj4+ Pj4gKyAgICAgICAgQWRkTmV3SGVhZGVyID0gMTsNCj4gPj4+Pj4gKyAgICAgIH0NCj4gPj4+Pj4g Kw0KPiA+Pj4+PiArICAgICAgTmV3SGVhZGVycyA9IEFsbG9jYXRlWmVyb1Bvb2woKFJlcXVlc3RN ZXNzYWdlLQ0KPiA+SGVhZGVyQ291bnQNCj4gPj4gKw0KPiA+Pj4+PiArIEFkZE5ld0hlYWRlcikg KiBzaXplb2YoRUZJX0hUVFBfSEVBREVSKSk7DQo+ID4+Pj4gTGFjayBvZiBOVUxMIHBvaW50ZXIg dGVzdCBmb3IgTmV3SGVhZGVycyAob3V0IG9mIG1lbW9yeSBjYXNlKS4NCj4gPj4+Pj4gKyAgICAg IENvcHlNZW0gKChWT0lEKilOZXdIZWFkZXJzLCAoVk9JRCAqKVJlcXVlc3RNZXNzYWdlLQ0KPiA+ Pj4gSGVhZGVycywNCj4gPj4+PiBSZXF1ZXN0TWVzc2FnZS0+SGVhZGVyQ291bnQgKiBzaXplb2Yg KEVGSV9IVFRQX0hFQURFUikpOw0KPiA+Pj4+PiArICAgICAgaWYgKEFkZE5ld0hlYWRlciA9PSAw KSB7DQo+ID4+Pj4+ICsgICAgICAgIC8vDQo+ID4+Pj4+ICsgICAgICAgIC8vIE92ZXJyaWRlIGNv bnRlbnQtbGVuZ3RoIHRvIFRyYW5zZmVyLUVuY29kaW5nLg0KPiA+Pj4+PiArICAgICAgICAvLw0K PiA+Pj4+PiArICAgICAgICBDb250ZW50TGVuZ3RoSGVhZGVyID0gSHR0cEZpbmRIZWFkZXIgKFJl cXVlc3RNZXNzYWdlLQ0KPiA+Pj4+PiBIZWFkZXJDb3VudCwgTmV3SGVhZGVycywgSFRUUF9IRUFE RVJfQ09OVEVOVF9MRU5HVEgpOw0KPiA+Pj4+PiArICAgICAgICBDb250ZW50TGVuZ3RoSGVhZGVy LT5GaWVsZE5hbWUgPSBOVUxMOw0KPiA+Pj4+PiArICAgICAgICBDb250ZW50TGVuZ3RoSGVhZGVy LT5GaWVsZFZhbHVlID0gTlVMTDsNCj4gPj4+Pj4gKyAgICAgIH0gZWxzZSB7DQo+ID4+Pj4+ICsg ICAgICAgIENvbnRlbnRMZW5ndGhIZWFkZXIgPSBOZXdIZWFkZXJzICsgUmVxdWVzdE1lc3NhZ2Ut DQo+ID4+Pj4+IEhlYWRlckNvdW50Ow0KPiA+Pj4+PiArICAgICAgfQ0KPiA+Pj4+PiArICAgICAg SHR0cFNldEZpZWxkTmFtZUFuZFZhbHVlKENvbnRlbnRMZW5ndGhIZWFkZXIsDQo+ID4+Pj4gSFRU UF9IRUFERVJfVFJBTlNGRVJfRU5DT0RJTkcsDQo+ID4+Pj4gSFRUUF9IRUFERVJfVFJBTlNGRVJf RU5DT0RJTkdfQ0hVTktFRCk7DQo+ID4+Pj4+ICsgICAgICBIZWFkZXJDb3VudCA9IFJlcXVlc3RN ZXNzYWdlLT5IZWFkZXJDb3VudCArDQo+IEFkZE5ld0hlYWRlcjsNCj4gPj4+PiBNb3ZlIEhlYWRl ckNvdW50IGFzc2lnbm1lbnQgYmVmb3JlIE5ld0hlYWRlcnMgYWxsb2NhdGlvbi4gVXNlDQo+ID4+ Pj4gSGVhZGVyQ291bnQgYXMgYXJndW1lbnQgZm9yIE5ld0hlYWRlcnMgYWxsb2NhdGlvbi4NCj4g Pj4+Pj4gKyAgICAgIE1lc3NhZ2VCb2R5TGVuZ3RoID0gMDsNCj4gPj4+Pj4gKyAgICAgIE1lc3Nh Z2VCb2R5ID0gTlVMTDsNCj4gPj4+Pj4gKyAgICAgIFNlbnRSZXF1ZXN0RGF0YSA9IFJlcXVlc3RN ZXNzYWdlLT5EYXRhLlJlcXVlc3Q7DQo+ID4+Pj4+ICsgICAgICBicmVhazsNCj4gPj4+Pj4gKw0K PiA+Pj4+PiArICBjYXNlIEh0dHBJb1NlbmRDaHVua0NvbnRlbnQ6DQo+ID4+Pj4+ICsgICAgICBI ZWFkZXJDb3VudCA9IDA7DQo+ID4+Pj4+ICsgICAgICBOZXdIZWFkZXJzID0gTlVMTDsNCj4gPj4+ Pj4gKyAgICAgIFNlbnRSZXF1ZXN0RGF0YSA9IE5VTEw7DQo+ID4+Pj4+ICsgICAgICBpZiAoUmVx dWVzdE1lc3NhZ2UtPkJvZHlMZW5ndGggPg0KPiA+PiBIVFRQX0lPX01BWF9TRU5EX1BBWUxPQUQp IHsNCj4gPj4+Pj4gKyAgICAgICAgTWVzc2FnZUJvZHlMZW5ndGggPSBIVFRQX0lPX01BWF9TRU5E X1BBWUxPQUQ7DQo+ID4+Pj4+ICsgICAgICB9IGVsc2Ugew0KPiA+Pj4+PiArICAgICAgICBNZXNz YWdlQm9keUxlbmd0aCA9IFJlcXVlc3RNZXNzYWdlLT5Cb2R5TGVuZ3RoOw0KPiA+Pj4+PiArICAg ICAgfQ0KPiA+Pj4+PiArICAgICAgQXNjaWlTUHJpbnQgKENodW5rTGVuZ3RoU3RyLCBIVFRQX0lP X0NIVU5LX1NJWkVfU1RSSU5HX0xFTiwNCj4gPj4+Pj4gKyAiJXglYyVjIiwgTWVzc2FnZUJvZHlM ZW5ndGgsDQo+IENIVU5LRURfVFJOQVNGRVJfQ09ESU5HX0NSLA0KPiA+Pj4+PiArIENIVU5LRURf VFJOQVNGRVJfQ09ESU5HX0xGKTsNCj4gPj4+PiBMaW5lIHRvbyBsb25nLCBicmVhayBkb3duIGlu IGFjY29yZGFuY2UgdG8gY29kaW5nIHN0YW5kYXJkLg0KPiA+Pj4gRG9uZQ0KPiA+Pj4NCj4gPj4+ Pj4gKyAgICAgIE1lc3NhZ2VCb2R5ID0gQWxsb2NhdGVQb29sIChBc2NpaVN0ckxlbiAoQ2h1bmtM ZW5ndGhTdHIpICsNCj4gPj4+PiBNZXNzYWdlQm9keUxlbmd0aCArIDIpOw0KPiA+Pj4+PiArICAg ICAgaWYgKE1lc3NhZ2VCb2R5ID09IE5VTEwpIHsNCj4gPj4+Pj4gKyAgICAgICAgREVCVUcoKERF QlVHX0VSUk9SLCAiTm90IGVub3VnaCBtZW1vcnkgZm9yIGNodW5rDQo+ID4+Pj4gdHJhbnNmZXJc biIpKTsNCj4gPj4+Pj4gKyAgICAgICAgcmV0dXJuIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiA+ Pj4+PiArICAgICAgfQ0KPiA+Pj4+PiArICAgICAgQ29weU1lbSAoTWVzc2FnZUJvZHksIENodW5r TGVuZ3RoU3RyLCBBc2NpaVN0ckxlbg0KPiA+Pj4+IChDaHVua0xlbmd0aFN0cikpOw0KPiA+Pj4+ PiArICAgICAgQ29weU1lbSAoTWVzc2FnZUJvZHkgKyBBc2NpaVN0ckxlbiAoQ2h1bmtMZW5ndGhT dHIpLA0KPiA+Pj4+IFJlcXVlc3RNZXNzYWdlLT5Cb2R5LCBNZXNzYWdlQm9keUxlbmd0aCk7DQo+ ID4+Pj4+ICsgICAgICAqKE1lc3NhZ2VCb2R5ICsgQXNjaWlTdHJMZW4gKENodW5rTGVuZ3RoU3Ry KSArDQo+ID4+IE1lc3NhZ2VCb2R5TGVuZ3RoKQ0KPiA+Pj4+ID0gQ0hVTktFRF9UUk5BU0ZFUl9D T0RJTkdfQ1I7DQo+ID4+Pj4+ICsgICAgICAqKE1lc3NhZ2VCb2R5ICsgQXNjaWlTdHJMZW4gKENo dW5rTGVuZ3RoU3RyKSArDQo+ID4+IE1lc3NhZ2VCb2R5TGVuZ3RoDQo+ID4+Pj4gKyAxKSA9IENI VU5LRURfVFJOQVNGRVJfQ09ESU5HX0xGOw0KPiA+Pj4+PiArICAgICAgUmVxdWVzdE1lc3NhZ2Ut PkJvZHlMZW5ndGggLT0gTWVzc2FnZUJvZHlMZW5ndGg7DQo+ID4+Pj4+ICsgICAgICBSZXF1ZXN0 TWVzc2FnZS0+Qm9keSA9IChWT0lEICopKChDSEFSOCAqKVJlcXVlc3RNZXNzYWdlLQ0KPiA+Pj4+ PiBCb2R5ICsgTWVzc2FnZUJvZHlMZW5ndGgpOw0KPiA+Pj4+PiArICAgICAgTWVzc2FnZUJvZHlM ZW5ndGggKz0gKEFzY2lpU3RyTGVuIChDaHVua0xlbmd0aFN0cikgKyAyKTsNCj4gPj4+PiBUaGlz IGJsb2NrIGNvdWxkIHVzZSBzb21lIHNwYWNpbmcgYW5kIGNvbW1lbnRzIHRvIGltcHJvdmUNCj4g cmVhZGFiaWxpdHkuDQo+ID4+PiBEb25lDQo+ID4+Pg0KPiA+Pj4+PiArICAgICAgaWYgKFJlcXVl c3RNZXNzYWdlLT5Cb2R5TGVuZ3RoID09IDApIHsNCj4gPj4+Pj4gKyAgICAgICAgKlNlbmRDaHVu a1Byb2Nlc3MgPSBIdHRwSW9TZW5kQ2h1bmtFbmRDaHVuazsNCj4gPj4+Pj4gKyAgICAgIH0NCj4g Pj4+Pj4gKyAgICAgIGJyZWFrOw0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgIGNhc2UgSHR0cElvU2Vu ZENodW5rRW5kQ2h1bms6DQo+ID4+Pj4+ICsgICAgICBIZWFkZXJDb3VudCA9IDA7DQo+ID4+Pj4+ ICsgICAgICBOZXdIZWFkZXJzID0gTlVMTDsNCj4gPj4+Pj4gKyAgICAgIFNlbnRSZXF1ZXN0RGF0 YSA9IE5VTEw7DQo+ID4+Pj4+ICsgICAgICBBc2NpaVNQcmludCAoQ2h1bmtMZW5ndGhTdHIsIEhU VFBfSU9fQ0hVTktfU0laRV9TVFJJTkdfTEVOLA0KPiA+Pj4+ICIwJWMlYyVjJWMiLA0KPiA+Pj4+ PiArICAgICAgICAgICAgICAgICAgICAgIENIVU5LRURfVFJOQVNGRVJfQ09ESU5HX0NSLA0KPiA+ Pj4+IENIVU5LRURfVFJOQVNGRVJfQ09ESU5HX0xGLA0KPiA+Pj4+PiArICAgICAgICAgICAgICAg ICAgICAgIENIVU5LRURfVFJOQVNGRVJfQ09ESU5HX0NSLA0KPiA+Pj4+IENIVU5LRURfVFJOQVNG RVJfQ09ESU5HX0xGDQo+ID4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgKTsNCj4gPj4+PiBQ bGVhc2UgYnJlYWsgZnVuY3Rpb24gY2FsbHMgaW4gYWNjb3JkYW5jZSB3aXRoIGNvZGluZyBzdGFu ZGFyZC4NCj4gPj4+IERvbmUNCj4gPj4+Pj4gKyAgICAgIE1lc3NhZ2VCb2R5ID0gQWxsb2NhdGVQ b29sIChBc2NpaVN0ckxlbihDaHVua0xlbmd0aFN0cikpOw0KPiA+Pj4+PiArICAgICAgaWYgKE1l c3NhZ2VCb2R5ID09IE5VTEwpIHsNCj4gPj4+Pj4gKyAgICAgICAgREVCVUcoKERFQlVHX0VSUk9S LCAiTm90IGVub3VnaCBtZW1vcnkgZm9yIHRoZSBlbmQNCj4gY2h1bmsNCj4gPj4+PiB0cmFuc2Zl clxuIikpOw0KPiA+Pj4+PiArICAgICAgICByZXR1cm4gRUZJX09VVF9PRl9SRVNPVVJDRVM7DQo+ ID4+Pj4+ICsgICAgICB9DQo+ID4+Pj4+ICsgICAgICBDb3B5TWVtIChNZXNzYWdlQm9keSwgQ2h1 bmtMZW5ndGhTdHIsIEFzY2lpU3RyTGVuDQo+ID4+Pj4gKENodW5rTGVuZ3RoU3RyKSk7DQo+ID4+ Pj4+ICsgICAgICBNZXNzYWdlQm9keUxlbmd0aCA9IEFzY2lpU3RyTGVuKENodW5rTGVuZ3RoU3Ry KTsNCj4gPj4+Pj4gKyAgICAgICpTZW5kQ2h1bmtQcm9jZXNzID0gSHR0cElvU2VuZENodW5rRmlu aXNoOw0KPiA+Pj4+PiArICAgICAgYnJlYWs7DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyAgZGVmYXVs dDoNCj4gPj4+Pj4gKyAgICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4+Pj4+ ICsgIH0NCj4gPj4+Pj4gKw0KPiA+Pj4+PiArICBTdGF0dXMgPSBIdHRwSW9TZW5kUmVxdWVzdCgN Cj4gPj4+Pj4gKyAgICAgICAgICAgICAgIEh0dHBJbywNCj4gPj4+Pj4gKyAgICAgICAgICAgICAg IFNlbnRSZXF1ZXN0RGF0YSwNCj4gPj4+Pj4gKyAgICAgICAgICAgICAgIEhlYWRlckNvdW50LA0K PiA+Pj4+PiArICAgICAgICAgICAgICAgTmV3SGVhZGVycywNCj4gPj4+Pj4gKyAgICAgICAgICAg ICAgIE1lc3NhZ2VCb2R5TGVuZ3RoLA0KPiA+Pj4+PiArICAgICAgICAgICAgICAgTWVzc2FnZUJv ZHkNCj4gPj4+Pj4gKyAgICAgICAgICAgICAgICk7DQo+ID4+Pj4+ICsgIGlmIChDb250ZW50TGVu Z3RoSGVhZGVyICE9IE5VTEwpIHsNCj4gPj4+Pj4gKyAgICBpZiAoQ29udGVudExlbmd0aEhlYWRl ci0+RmllbGROYW1lICE9IE5VTEwpIHsNCj4gPj4+Pj4gKyAgICAgIEZyZWVQb29sKENvbnRlbnRM ZW5ndGhIZWFkZXItPkZpZWxkTmFtZSk7DQo+ID4+Pj4+ICsgICAgfQ0KPiA+Pj4+PiArICAgIGlm IChDb250ZW50TGVuZ3RoSGVhZGVyLT5GaWVsZFZhbHVlICE9IE5VTEwpIHsNCj4gPj4+Pj4gKyAg ICAgIEZyZWVQb29sKENvbnRlbnRMZW5ndGhIZWFkZXItPkZpZWxkVmFsdWUpOw0KPiA+Pj4+PiAr ICAgIH0NCj4gPj4+Pj4gKyAgICBDb250ZW50TGVuZ3RoSGVhZGVyID0gTlVMTDsNCj4gPj4+PiBO VUxMIGFzc2lnbm1lbnRzIGFyZSBub3QgbmVjZXNzYXJ5IGhlcmUgYXMgd2UgYXJlIGV4aXRpbmcg dGhlDQo+IGZ1bmN0aW9uDQo+ID4+IGFuZA0KPiA+Pj4+IHRob3NlIHZhcmlhYmxlcyB3aWxsIG5v dCBiZSB1c2VkLg0KPiA+Pj4gUmlnaHQsIGZpeGVkLg0KPiA+Pj4+PiArICB9DQo+ID4+Pj4+ICsg IGlmIChOZXdIZWFkZXJzICE9IE5VTEwpIHsNCj4gPj4+Pj4gKyAgICBGcmVlUG9vbChOZXdIZWFk ZXJzKTsNCj4gPj4+Pj4gKyAgICBOZXdIZWFkZXJzID0gTlVMTDsNCj4gPj4+Pj4gKyAgfQ0KPiA+ Pj4+PiArICBpZiAoTWVzc2FnZUJvZHkgIT0gTlVMTCkgew0KPiA+Pj4+PiArICAgIEZyZWVQb29s KE1lc3NhZ2VCb2R5KTsNCj4gPj4+Pj4gKyAgICBNZXNzYWdlQm9keSA9IE5VTEw7DQo+ID4+Pj4+ ICsgIH0NCj4gPj4+Pj4gKyAgcmV0dXJuIFN0YXR1czsNCj4gPj4+Pj4gK30NCj4gPj4+Pj4gKw0K PiA+Pj4+PiArLyoqDQo+ID4+Pj4+ICsgIFN5bmNocm9ub3VzbHkgcmVjZWl2ZSBhIEhUVFAgUkVT UE9OU0UgbWVzc2FnZSBmcm9tIHRoZSBzZXJ2ZXIuDQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyAgQHBh cmFtW2luXSAgIEh0dHBJbyAgICAgICAgICAgVGhlIEh0dHBJbyB3cmFwcGluZyB0aGUgSFRUUCBz ZXJ2aWNlLg0KPiA+Pj4+PiArICBAcGFyYW1baW5dICAgSGVhZGVyQ291bnQgICAgICBOdW1iZXIg b2YgaGVhZGVycyBpbiBIZWFkZXJzLg0KPiA+Pj4+PiArICBAcGFyYW1baW5dICAgSGVhZGVycyAg ICAgICAgICBBcnJheSBjb250YWluaW5nIGxpc3Qgb2YgSFRUUCBoZWFkZXJzLg0KPiA+Pj4+PiAr ICBAcGFyYW1bb3V0XSAgQ2h1bmtMaXN0SGVhZCAgICBBIHBvaW50ZXIgdG8gcmVjZWl2Y2UgbGlz dCBoZWFkIG9mDQo+ID4+IGNodW5rZWQNCj4gPj4+PiBkYXRhLg0KPiA+Pj4+IFNwZWxsaW5nOiBy ZWNlaXZlLg0KPiA+Pj4gRml4ZWQuDQo+ID4+Pg0KPiA+Pj4+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBDYWxsZXIgaGFzIHRvIHJlbGVhc2UgbWVtb3J5IG9mIENodW5rTGlzdEhl YWQNCj4gPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGFsbCBsaXN0 IGVudHJpZXMuDQo+ID4+Pj4+ICsgIEBwYXJhbVtvdXRdICBDb250ZW50TGVuZ3RoICAgIFRvdGFs IGNvbnRlbnQgbGVuZ3RoDQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyAgQHJldHZhbCBFRklfU1VDQ0VT UyAgICAgICAgICAgIFRoZSBIVFRQIGNodW5rZWQgdHJhbnNmZXIgaXMgcmVjZWl2ZWQuDQo+ID4+ Pj4+ICsgIEByZXR2YWwgRUZJX05PVF9GT1VORCAgICAgICAgICBObyBjaHVua2VkIHRyYW5zZmVy IGNvZGluZyBoZWFkZXINCj4gPj4gZm91bmQuDQo+ID4+Pj4+ICsgIEByZXR2YWwgRUZJX09VVF9P Rl9SRVNPVVJDRVMgICBGYWlsZWQgdG8gYWxsb2NhdGUgbWVtb3J5Lg0KPiA+Pj4+PiArICBAcmV0 dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgSW1wcm9wZXIgcGFyYW1ldGVycy4NCj4gPj4+Pj4g KyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICAgICAgIE90aGVyIGVycm9ycyBhcyBpbmRpY2F0 ZWQuDQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyoqLw0KPiA+Pj4+PiArRUZJX1NUQVRVUw0KPiA+Pj4+ PiArSHR0cElvR2V0Q2h1bmtlZFRyYW5zZmVyQ29udGVudCAoDQo+ID4+Pj4+ICsgIElOICAgICBI VFRQX0lPICAgICAgICAgICAgICAqSHR0cElvLA0KPiA+Pj4+PiArICBJTiAgICAgVUlOVE4gICAg ICAgICAgICAgICAgSGVhZGVyQ291bnQsDQo+ID4+Pj4+ICsgIElOICAgICBFRklfSFRUUF9IRUFE RVIgICAgICAqSGVhZGVycywNCj4gPj4+Pj4gKyAgT1VUICAgIExJU1RfRU5UUlkgICAgICAgICAg ICoqQ2h1bmtMaXN0SGVhZCwNCj4gPj4+Pj4gKyAgT1VUICAgIFVJTlROICAgICAgICAgICAgICAg ICpDb250ZW50TGVuZ3RoDQo+ID4+Pj4+ICsgICkNCj4gPj4+Pj4gK3sNCj4gPj4+Pj4gKyAgRUZJ X0hUVFBfSEVBREVSICAgICAgICpIZWFkZXI7DQo+ID4+Pj4+ICsgIENIQVI4ICAgICAgICAgICAg ICAgICBDaHVua1NpemVBc2NpaVsyNTZdOw0KPiA+Pj4+PiArICBFRklfU1RBVFVTICAgICAgICAg ICAgU3RhdHVzOw0KPiA+Pj4+PiArICBVSU5UTiAgICAgICAgICAgICAgICAgSW5kZXg7DQo+ID4+ Pj4+ICsgIEhUVFBfSU9fUkVTUE9OU0VfREFUQSBSZXNwb25zZURhdGE7DQo+ID4+Pj4+ICsgIFVJ TlROICAgICAgICAgICAgICAgICBUb3RhbExlbmd0aDsNCj4gPj4+Pj4gKyAgTElTVF9FTlRSWSAg ICAgICAgICAgICpIdHRwQ2h1bmtzOw0KPiA+Pj4+PiArICBIVFRQX0lPX0NIVU5LUyAgICAgICAq VGhpc0NodW5rOw0KPiA+Pj4+IFZhcmlhYmxlIGFsaWdubWVudC4NCj4gPj4+Pj4gKyAgTElTVF9F TlRSWSAgICAgICAgICAgICpUaGlzTGlzdEVudHJ5Ow0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgIGlm IChDaHVua0xpc3RIZWFkID09IE5VTEwgfHwgQ29udGVudExlbmd0aCA9PSBOVUxMKSB7DQo+ID4+ Pj4+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPj4+Pj4gKyAgfQ0KPiA+ Pj4+PiArDQo+ID4+Pj4+ICsgICpDb250ZW50TGVuZ3RoID0gMDsNCj4gPj4+Pj4gKyAgSGVhZGVy ID0gSHR0cEZpbmRIZWFkZXIgKEhlYWRlckNvdW50LCBIZWFkZXJzLA0KPiA+Pj4+PiArIEhUVFBf SEVBREVSX1RSQU5TRkVSX0VOQ09ESU5HKTsgIGlmIChIZWFkZXIgPT0gTlVMTCkgew0KPiA+Pj4+ PiArICAgIHJldHVybiBFRklfTk9UX0ZPVU5EOw0KPiA+Pj4+PiArICB9DQo+ID4+Pj4+ICsgIGlm IChBc2NpaVN0ckNtcCAoSGVhZGVyLT5GaWVsZFZhbHVlLA0KPiA+Pj4+PiArIEhUVFBfSEVBREVS X1RSQU5TRkVSX0VOQ09ESU5HX0NIVU5LRUQpID09IDApIHsNCj4gPj4+PiBQbGVhc2UgZG8gYSBu ZWdhdGlvbiBjb21wYXJpc29uIGluc3RlYWQgYW5kIHJldHVybi4gSXQgcmVkdWNlcyBvbmUNCj4g bGV2ZWwNCj4gPj4gb2YNCj4gPj4+PiBpbmRlbnRhdGlvbi4NCj4gPj4+IERvbmUNCj4gPj4+Pj4g KyAgICAvLw0KPiA+Pj4+PiArICAgIC8vIExvb3AgdG8gZ2V0IGFsbCBjaHVua3MuDQo+ID4+Pj4+ ICsgICAgLy8NCj4gPj4+PiBQbGVhc2UgYXZvaWQgZW1wdHkgc2luZ2xlLWxpbmUgY29tbWVudHMg d2hlbiBzdGFydGluZyBhbmQgZW5kaW5nDQo+ID4+Pj4gY29tbWVudCBibG9jay4NCj4gPj4+Pj4g KyAgICBUb3RhbExlbmd0aCA9IDA7DQo+ID4+Pj4+ICsgICAgSHR0cENodW5rcyA9IChMSVNUX0VO VFJZICopQWxsb2NhdGVaZXJvUG9vbCAoc2l6ZW9mDQo+IChMSVNUX0VOVFJZKSk7DQo+ID4+Pj4+ ICsgICAgaWYgKEh0dHBDaHVua3MgPT0gTlVMTCkgew0KPiA+Pj4+PiArICAgICAgU3RhdHVzID0g RUZJX09VVF9PRl9SRVNPVVJDRVM7DQo+ID4+Pj4+ICsgICAgICBnb3RvIERlbGV0ZXJDaHVua3M7 DQo+ID4+Pj4+ICsgICAgfQ0KPiA+Pj4+PiArICAgIEluaXRpYWxpemVMaXN0SGVhZCAoSHR0cENo dW5rcyk7DQo+ID4+Pj4gQWRkIGEgYml0IG9mIHNwYWNpbmcgYWJvdmUgdG8gaW1wcm92ZSByZWFk YWJpbGl0eS4NCj4gPj4+IEZpeGVkDQo+ID4+Pj4+ICsgICAgREVCVUcgKChERUJVR19JTkZPLCAi ICAgICBDaHVua2VkIHRyYW5zZmVyXG4iKSk7DQo+ID4+Pj4+ICsgICAgd2hpbGUgKFRSVUUpIHsN Cj4gPj4+Pj4gKyAgICAgIFplcm9NZW0oKFZPSUQgKikmUmVzcG9uc2VEYXRhLA0KPiA+Pj4+IHNp emVvZihIVFRQX0lPX1JFU1BPTlNFX0RBVEEpKTsNCj4gPj4+Pj4gKyAgICAgIFJlc3BvbnNlRGF0 YS5Cb2R5TGVuZ3RoID0NCj4gPj4+PiBIVFRQX0lPX0NIVU5LRURfVFJBTlNGRVJfQ09ESU5HX0RB VEFfTEVOR1RIOw0KPiA+Pj4+PiArICAgICAgUmVzcG9uc2VEYXRhLkJvZHkgPSBDaHVua1NpemVB c2NpaTsNCj4gPj4+Pj4gKyAgICAgIFN0YXR1cyA9IEh0dHBJb1JlY3ZSZXNwb25zZSAoDQo+ID4+ Pj4+ICsgICAgICAgICAgICAgICAgIEh0dHBJbywNCj4gPj4+Pj4gKyAgICAgICAgICAgICAgICAg RkFMU0UsDQo+ID4+Pj4+ICsgICAgICAgICAgICAgICAgICZSZXNwb25zZURhdGENCj4gPj4+Pj4g KyAgICAgICAgICAgICAgICAgKTsNCj4gPj4+Pj4gKyAgICAgIGlmIChFRklfRVJST1IgKFN0YXR1 cykpIHsNCj4gPj4+Pj4gKyAgICAgICAgcmV0dXJuIFN0YXR1czsNCj4gPj4+Pj4gKyAgICAgIH0N Cj4gPj4+PiBSZXR1cm5pbmcgaGVyZSBjcmVhdGVzIG1lbW9yeSBsZWFrIHJpc2sgLSBjaHVua3Mg cHJldmlvdXNseSByZWNlaXZlZA0KPiB3aWxsDQo+ID4+IG5vdA0KPiA+Pj4+IGJlIGZyZWVkLg0K PiA+Pj4gRml4ZWQNCj4gPj4+Pj4gKyAgICAgIC8vDQo+ID4+Pj4+ICsgICAgICAvLyBEZWNvZGlu ZyBDaHVua2VkIFRyYW5zZmVyIENvZGluZy4NCj4gPj4+Pj4gKyAgICAgIC8vIE9ubHkgZGVjb2Rl IGNodW5rLXNpemUgYW5kIGxhc3QgY2h1bmsuDQo+ID4+Pj4+ICsgICAgICAvLw0KPiA+Pj4+PiAr ICAgICAgREVCVUcgKChERUJVR19JTkZPLCAiICAgICBDaHVuayBIVFRQIFJlc3BvbnNlIFN0YXR1 c0NvZGUgLQ0KPiA+PiAlZFxuIiwNCj4gPj4+PiBSZXNwb25zZURhdGEuUmVzcG9uc2UuU3RhdHVz Q29kZSkpOw0KPiA+Pj4+PiArICAgICAgLy8NCj4gPj4+Pj4gKyAgICAgIC8vIEJyZWFrIGlmIHRo aXMgaXMgbGFzdCBjaHVuay4NCj4gPj4+Pj4gKyAgICAgIC8vDQo+ID4+Pj4+ICsgICAgICBpZiAo Q2h1bmtTaXplQXNjaWkgWzBdID09DQo+ID4+IENIVU5LRURfVFJOQVNGRVJfQ09ESU5HX0xBU1Rf Q0hVTkspDQo+ID4+Pj4gew0KPiA+Pj4+PiArICAgICAgICBTdGF0dXMgPSBFRklfU1VDQ0VTUzsN Cj4gPj4+Pj4gKyAgICAgICAgREVCVUcgKChERUJVR19JTkZPLCAiICAgICBMYXN0IGNodW5rXG4i KSk7DQo+ID4+Pj4+ICsgICAgICAgIFRoaXNDaHVuayA9IChIVFRQX0lPX0NIVU5LUyAqKUFsbG9j YXRlWmVyb1Bvb2wgKHNpemVvZg0KPiA+Pj4+IChIVFRQX0lPX0NIVU5LUykpOw0KPiA+Pj4+PiAr ICAgICAgICBpZiAoVGhpc0NodW5rID09IE5VTEwpIHsNCj4gPj4+Pj4gKyAgICAgICAgICBTdGF0 dXMgPSBFRklfT1VUX09GX1JFU09VUkNFUzsNCj4gPj4+Pj4gKyAgICAgICAgICBnb3RvIERlbGV0 ZXJDaHVua3M7DQo+ID4+Pj4+ICsgICAgICAgIH0NCj4gPj4+Pj4gKyAgICAgICAgSW5pdGlhbGl6 ZUxpc3RIZWFkICgmVGhpc0NodW5rLT5OZXh0Q2h1bmspOw0KPiA+Pj4+PiArICAgICAgICBUaGlz Q2h1bmstPkxlbmd0aCA9IFJlc3BvbnNlRGF0YS5Cb2R5TGVuZ3RoIC0gMSAtIDI7IC8vIE1pbnVz DQo+ID4+Pj4gc2l6ZW9mICcwJyBhbmQgQ1JMRi4NCj4gPj4+Pj4gKyAgICAgICAgVGhpc0NodW5r LT5EYXRhID0gKENIQVI4ICopQWxsb2NhdGVQb29sIChUaGlzQ2h1bmstPkxlbmd0aCk7DQo+ID4+ Pj4+ICsgICAgICAgIGlmIChUaGlzQ2h1bmstPkRhdGEgPT0gTlVMTCkgew0KPiA+Pj4+PiArICAg ICAgICAgIEZyZWVQb29sICgoVUlOVDggKilUaGlzQ2h1bmspOw0KPiA+Pj4+PiArICAgICAgICAg IFN0YXR1cyA9IEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiA+Pj4+PiArICAgICAgICAgIGdvdG8g RGVsZXRlckNodW5rczsNCj4gPj4+Pj4gKyAgICAgICAgfQ0KPiA+Pj4+PiArICAgICAgICBDb3B5 TWVtICgoVUlOVDggKilUaGlzQ2h1bmstPkRhdGEsIChVSU5UOA0KPiA+PiAqKVJlc3BvbnNlRGF0 YS5Cb2R5DQo+ID4+Pj4gKyAxLCBUaGlzQ2h1bmstPkxlbmd0aCk7DQo+ID4+Pj4+ICsgICAgICAg IFRvdGFsTGVuZ3RoICs9IFRoaXNDaHVuay0+TGVuZ3RoOw0KPiA+Pj4+PiArICAgICAgICBJbnNl cnRUYWlsTGlzdCAoSHR0cENodW5rcywgJlRoaXNDaHVuay0+TmV4dENodW5rKTsNCj4gPj4+Pj4g KyAgICAgICAgYnJlYWs7DQo+ID4+Pj4+ICsgICAgICB9DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyAg ICAgIC8vDQo+ID4+Pj4+ICsgICAgICAvLyBHZXQgdGhlIGNodW5rIGxlbmd0aA0KPiA+Pj4+PiAr ICAgICAgLy8NCj4gPj4+Pj4gKyAgICAgIEluZGV4ID0gMDsNCj4gPj4+Pj4gKyAgICAgIHdoaWxl ICgoQ2h1bmtTaXplQXNjaWkgW0luZGV4XSAhPQ0KPiA+Pj4+IENIVU5LRURfVFJOQVNGRVJfQ09E SU5HX0VYVEVOU0lPTl9TQVBFUkFUT1IpICYmDQo+ID4+Pj4+ICsgICAgICAgICAgICAgKENodW5r U2l6ZUFzY2lpIFtJbmRleF0gIT0NCj4gPj4+Pj4gKyAoQ0hBUjgpQ0hVTktFRF9UUk5BU0ZFUl9D T0RJTkdfQ1IpICYmDQo+ID4+Pj4gU3BlbGxpbmcgZXJyb3JzIGluIG1hY3JvcyBhYm92ZS4NCj4g Pj4+IE9vcHMuIEJaIGlzIHN1Ym1pdHRlZCBmb3IgdGhpcyB0eXBvIGluIGh0dHAxMS5oLg0KPiA+ Pj4gSU5WQUxJRCBVUkkgUkVNT1ZFRA0KPiA+PiAzQV9fYnVnemlsbGEudGlhbm9jb3JlLm9yZ19z aG93LTVGYnVnLmNnaS0zRmlkLQ0KPiA+Pg0KPiAzRDMwMTkmZD1Ed0lEYVEmYz1DNWI4elJRTzFt aUdtQmVWWjJMRldnJnI9X1NONkZaQk40VmdpNFVsa3MNCj4gPj4NCj4ga3o2cVUzTllSTzAzbkhw OVA3WjVxNTlBM0UmbT1mNnpzX21yendDQ1l3UVNsM3A0TmJ1aWI3TG40Z1ZjTw0KPiA+PiBLUzc0 by1YYzUyNCZzPWcxV0hMQ2w4VXptOFlLTFlrbk0yWTdUMGQ0Z1Q3ZnZfNThxaGM0UWVqajAmZT0N Cj4gPj4+IFBhdGNoIGlzIHNldCB0byB0aGUgbWFpbGluZyBsaXN0IGZvciByZXZpZXcuDQo+ID4+ Pg0KPiA+Pj4NCj4gPj4+Pj4gKyAgICAgICAgICAgICAoSW5kZXggIT0NCj4gPj4+PiBIVFRQX0lP X0NIVU5LRURfVFJBTlNGRVJfQ09ESU5HX0RBVEFfTEVOR1RIKSkgew0KPiA+Pj4+PiArICAgICAg ICBJbmRleCArKzsNCj4gPj4+Pj4gKyAgICAgIH07DQo+ID4+Pj4+ICsgICAgICBpZiAoSW5kZXgg PT0NCj4gPj4gSFRUUF9JT19DSFVOS0VEX1RSQU5TRkVSX0NPRElOR19EQVRBX0xFTkdUSCkNCj4g Pj4+PiB7DQo+ID4+Pj4+ICsgICAgICAgIHJldHVybiBFRklfTk9UX0ZPVU5EOw0KPiA+Pj4+PiAr ICAgICAgfQ0KPiA+Pj4+IEFnYWluIC0gbWVtb3J5IGxlYWsuDQo+ID4+PiBGaXhlZA0KPiA+Pj4N Cj4gPj4+Pj4gKyAgICAgIENodW5rU2l6ZUFzY2lpW0luZGV4XSA9IDA7DQo+ID4+Pj4+ICsgICAg ICBBc2NpaVN0ckhleFRvVWludG5TIChDaHVua1NpemVBc2NpaSwgTlVMTCwgQ29udGVudExlbmd0 aCk7DQo+ID4+Pj4+ICsgICAgICBERUJVRyAoKERFQlVHX0lORk8sICIgICAgIExlbmd0aCBvZiB0 aGlzIGNodW5rICVkXG4iLA0KPiA+Pj4+ICpDb250ZW50TGVuZ3RoKSk7DQo+ID4+Pj4+ICsgICAg ICAvLw0KPiA+Pj4+PiArICAgICAgLy8gUmVjZWl2ZSB0aGUgZGF0YTsNCj4gPj4+Pj4gKyAgICAg IC8vDQo+ID4+Pj4+ICsgICAgICBUaGlzQ2h1bmsgPSAoSFRUUF9JT19DSFVOS1MgKilBbGxvY2F0 ZVplcm9Qb29sIChzaXplb2YNCj4gPj4+PiAoSFRUUF9JT19DSFVOS1MpKTsNCj4gPj4+Pj4gKyAg ICAgIGlmIChUaGlzQ2h1bmsgPT0gTlVMTCkgew0KPiA+Pj4+PiArICAgICAgICBTdGF0dXMgPSBF RklfT1VUX09GX1JFU09VUkNFUzsNCj4gPj4+Pj4gKyAgICAgICAgZ290byBEZWxldGVyQ2h1bmtz Ow0KPiA+Pj4+PiArICAgICAgfQ0KPiA+Pj4+PiArICAgICAgUmVzcG9uc2VEYXRhLkJvZHlMZW5n dGggPSAqQ29udGVudExlbmd0aDsNCj4gPj4+Pj4gKyAgICAgIFJlc3BvbnNlRGF0YS5Cb2R5ID0g KENIQVI4ICopQWxsb2NhdGVQb29sICgqQ29udGVudExlbmd0aCk7DQo+ID4+Pj4+ICsgICAgICBp ZiAoUmVzcG9uc2VEYXRhLkJvZHkgPT0gTlVMTCkgew0KPiA+Pj4+PiArICAgICAgICBGcmVlUG9v bCAoVGhpc0NodW5rKTsNCj4gPj4+Pj4gKyAgICAgICAgU3RhdHVzID0gRUZJX09VVF9PRl9SRVNP VVJDRVM7DQo+ID4+Pj4+ICsgICAgICAgIGdvdG8gRGVsZXRlckNodW5rczsNCj4gPj4+Pj4gKyAg ICAgIH0NCj4gPj4+Pj4gKyAgICAgIEluaXRpYWxpemVMaXN0SGVhZCAoJlRoaXNDaHVuay0+TmV4 dENodW5rKTsNCj4gPj4+Pj4gKyAgICAgIFRoaXNDaHVuay0+TGVuZ3RoID0gKkNvbnRlbnRMZW5n dGg7DQo+ID4+Pj4+ICsgICAgICBUaGlzQ2h1bmstPkRhdGEgPSBSZXNwb25zZURhdGEuQm9keTsN Cj4gPj4+Pj4gKyAgICAgIEluc2VydFRhaWxMaXN0IChIdHRwQ2h1bmtzLCAmVGhpc0NodW5rLT5O ZXh0Q2h1bmspOw0KPiA+Pj4+PiArICAgICAgU3RhdHVzID0gSHR0cElvUmVjdlJlc3BvbnNlICgN Cj4gPj4+Pj4gKyAgICAgICAgICAgICAgICAgSHR0cElvLA0KPiA+Pj4+PiArICAgICAgICAgICAg ICAgICBGQUxTRSwNCj4gPj4+Pj4gKyAgICAgICAgICAgICAgICAgJlJlc3BvbnNlRGF0YQ0KPiA+ Pj4+PiArICAgICAgICAgICAgICAgICApOw0KPiA+Pj4+PiArICAgICAgaWYgKEVGSV9FUlJPUiAo U3RhdHVzKSkgew0KPiA+Pj4+PiArICAgICAgICBnb3RvIERlbGV0ZXJDaHVua3M7DQo+ID4+Pj4+ ICsgICAgICB9DQo+ID4+Pj4+ICsgICAgICAvLw0KPiA+Pj4+PiArICAgICAgLy8gUmVhZCBDUkxG DQo+ID4+Pj4+ICsgICAgICAvLw0KPiA+Pj4+PiArICAgICAgWmVyb01lbSgoVk9JRCAqKSZSZXNw b25zZURhdGEsDQo+ID4+Pj4gc2l6ZW9mKEhUVFBfSU9fUkVTUE9OU0VfREFUQSkpOw0KPiA+Pj4+ PiArICAgICAgUmVzcG9uc2VEYXRhLkJvZHlMZW5ndGggPSAyOw0KPiA+Pj4+PiArICAgICAgUmVz cG9uc2VEYXRhLkJvZHkgPSBDaHVua1NpemVBc2NpaTsNCj4gPj4+Pj4gKyAgICAgIFN0YXR1cyA9 IEh0dHBJb1JlY3ZSZXNwb25zZSAoDQo+ID4+Pj4+ICsgICAgICAgICAgICAgICAgIEh0dHBJbywN Cj4gPj4+Pj4gKyAgICAgICAgICAgICAgICAgRkFMU0UsDQo+ID4+Pj4+ICsgICAgICAgICAgICAg ICAgICZSZXNwb25zZURhdGENCj4gPj4+Pj4gKyAgICAgICAgICAgICAgICAgKTsNCj4gPj4+Pj4g KyAgICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPj4+Pj4gKyAgICAgICAgZ290byBE ZWxldGVyQ2h1bmtzOw0KPiA+Pj4+PiArICAgICAgfQ0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgICAg ICBUb3RhbExlbmd0aCArPSAqQ29udGVudExlbmd0aDsNCj4gPj4+PiBUaGUgZm9sbG93aW5nIGNv ZGUgcmVxdWlyZXMgc29tZSBraW5kIG9mIHByb3RlY3Rpb24gYWdhaW5zdCByZWNlaXZpbmcNCj4g YW4NCj4gPj4+PiBpbmZpbml0ZSBudW1iZXIgb2YgY2h1bmtzLg0KPiA+Pj4+IEN1cnJlbnRseSBJ IGNvdWxkIGp1c3Qgbm90IHNlbmQgYSBsYXN0IGNodW5rIGFuZCB3YWl0IGZvciB0aGUgcGxhdGZv cm0gdG8NCj4gPj4gY3Jhc2gNCj4gPj4+PiBvci9hbmQgcnVuIG91dCBvZiBtZW1vcnkgOikNCj4g Pj4+Pg0KPiA+Pj4gR29vZCBwb2ludCEgSG93ZXZlciwgSSBjYW4ndCB0aGluayBvZiBhbnkgZ29v ZCB3YXkgdG8gcHJldmVudCBmcm9tIHRoaXMNCj4gPj4gaGFwcGVucy4gVGhpcyBkZXBlbmRzIG9u IHRoZSByZWxpYWJpbGl0eSBvZiBjb250ZW50IHByb3ZpZGVyIGFuZCBob3cgdGhlDQo+ID4+IHdl YiBzZXJ2aWNlIGhhbmRsZXMgY2h1bmsgdHJhbnNmZXIsIHJpZ2h0Pw0KPiA+Pj4gICBGcm9tIHN5 c3RlbSBmaXJtd2FyZSB2aWV3cG9pbnQsIHdlIHdvdWxkIGNvbm5lY3QgdG8gYSB0cnVzdGVkDQo+ IGNvbnRlbnQNCj4gPj4gc291cmNlIGZvciBlaXRoZXIgSFRUUCBib290IGltYWdlIGFuZCBSZWRm aXNoIHNlcnZpY2UgcmVzb3VyY2UuDQo+ID4+PiBEbyB5b3UgdGhpbmsgdGhpcyBjb25jZXJuIGlz IHZhbGlkIGZvciB0aGUgcmVhbCBwcmFjdGljZT8NCj4gPj4+DQo+ID4+PiBPciBnaXZlIGl0IGEg bGltaXRlZCBzaXplIG9mIHBheWxvYWQ/IExpa2UgdGhlIHNpemUgbGFyZ2VyIHRoYW4gMUcgY291 bGQgYmUNCj4gPj4gY29uc2lkZXJlZCBhcyBhbiBpbGwgY29udGVudD8NCj4gPj4gV2hhdCB3b3Vs ZCBiZSB0aGUgbGFyZ2VzdCBwYXlsb2FkIHRoYXQgeW91IHdvdWxkIGxpa2UgdG8gdXNlDQo+ID4+ IGNodW5rLXRyYW5zZmVyIGZvcj8NCj4gPiBGb3IgdGhlIEhUVFAgcmVzcG9uc2UsIHdoZXRoZXIg dG8gdXNlIGNodW5rIHRyYW5zZmVyIGlzIGF0IHRoZSAgZGlzY3JldGlvbg0KPiBvZiBSZWRmaXNo IHNlcnZpY2UuIFdlIGN1cnJlbnRseSBjYW4gb25seSB0ZWxsIGlmIHRoZSByZXNwb25zZSBwYXls b2FkIGlzIGluDQo+IGNodW5rIHRyYW5zZmVyIG9yIG5vdCB1c2luZyBUcmFuc2Zlci1FbmNvZGlu ZyBIVFRQIHJlc3BvbnNlIGhlYWRlciBidXQgbm90DQo+IGFibGUgdG8gcHJlZGljdCB0aGUgc2l6 ZSBvZiBwYXlsb2FkIHVubGVzcyB3ZSBnZXQgdGhlIGZpcnN0IGNodW5rLg0KPiA+IEluIHRoZSBy ZWFsIHByYWN0aWNlLCBJIHNlZSBhIGxhcmdlIHBheWxvYWQgbGlrZSBBdHRyaWJ1dGVSZWdpc3Ry eSBpcw0KPiB0cmFuc2ZlcnJlZCBiYWNrIGluIGNodW5rLCBob3dldmVyLCBJIGFsc28gc2VlIHNv bWUgc21hbGwgc2l6ZSBwYXlsb2FkIGlzDQo+IHRyYW5zZmVycmVkIGJhY2sgaW4gY2h1bmsgdHJh bnNmZXIgYXMgd2VsbC4NCj4gPj4gSSBzZWUgdGhhdCB0aGUgY2h1bmtlZCB0cmFuc2ZlciBpcyBu b3QgYmVpbmcgY3VycmVudGx5IHVzZWQgaW4gSFRUUA0KPiA+PiBCb290LCBzbyB3ZSBzaG91bGQg c3RpY2sgdG8gY3VycmVudCB1c2UgY2FzZSAtwqAgUmVkZmlzaC4NCj4gPiBZZXMsIGN1cnJlbnRs eSBvbmx5IFJlZGZpc2hQa2cgdXNlIEhUVFAgY2h1bmsgdHJhbnNmZXIgQVBJcyBkZWZpbmVkIGlu DQo+IER4ZUh0dHBJb0xpYi4gIEJ1dCB3aGF0IGRvIHlvdSBtZWFuIHRvIHN0aWNrIHRoZSB1c2Ug Y2FzZSB0byBSZWRmaXNoIG9ubHk/DQo+IFRob3NlIGNodW5rIHRyYW5zZmVyIHJlbGF0ZWQgQVBJ cyBjb3VsZCBiZSBjb21tb25seSB1c2VkIGJ5IGFueSBlZGsyDQo+IEhUVFAgY2xpZW50cyBuZWVk IGNodW5rIHRyYW5zZmVyIGFsdGhvdWdoIHdlIG9ubHkgaGF2ZSB0d28gdXNlIGNhc2VzIChhbmQN Cj4gb25seSBSZWRmaXNoIHVzZXMgaXQgc28gZmFyKS4NCj4gSSBvbmx5IG1lYW50IHRoYXQgaXQg d291bGQgYmUgcmVhc29uYWJsZSB0byBjb21lIHVwIHdpdGggYQ0KPiBjaHVuay10cmFuc2ZlciBs aW1pdCB0aGF0IGlzIGRpY3RhdGVkIHNvbGVseSBieSBSZWRmaXNoIHVzZSBjYXNlLCBzaW5jZQ0K PiBpdCBpcyBjdXJyZW50bHkgdGhlIG9ubHkgb25lIGFyb3VuZC4NCj4gSW4gY2FzZSBvdGhlciBT VyBwaWVjZXMgd291bGQgbGlrZSB0byBjb25zdW1lIEhUVFAgSS9PIGxpYnJhcnkgZm9yDQo+IGNo dW5rLXRyYW5zZmVyIGFuZCBzZWUgdGhhdCB0aGUgbGltaXQgaXMgdG9vIHNtYWxsLCB0aGV5IGNv dWxkIHByb3Bvc2UgYQ0KPiBwYXRjaCB0byBleHRlbmQgaXQuDQpZZXMsIHdlIGNhbiBkbyBpdC4N Cj4gVGhlIG90aGVyIGFwcHJvYWNoIHdvdWxkIGJlIHRvIHNvbWVob3cgZHluYW1pY2FsbHkgYXNz ZXNzIHRoZSBsaW1pdCBieQ0KPiBsb29raW5nIGF0IGhvdyBtdWNoIGZyZWUgbWVtb3J5IGlzIGF2 YWlsYWJsZSBvbiB0aGUgcGxhdGZvcm0uDQo+IENhbiB3ZSBlc3RpbWF0ZSB3aGF0IHdvdWxkIGJl IHRoZSBsYXJnZXN0IHBheWxvYWQgUmVkZmlzaCB3b3VsZCBsaWtlIHRvDQo+IHB1c2ggdGhyb3Vn aD8NCg0KVGhlIGJpZ2dlc3QgcGF5bG9hZCBvZiBSZWRmaXNoIHJlc291cmNlIHdoaWNoIHNlbnQg YmFjayB0byBjbGllbnQgY291bGQgYmUgQXR0YWlidXRlUmVnaXN0cnkuIE9uZSBleGFtcGxlIGhl cmUgaXMgdGhlIHJhdyB0ZXh0IEpTT04gZmlsZSBvZiBBdHRhaWJ1dGVSZWdpc3RyeSBpcyAxLjJN QiwgaG93ZXZlciBpdCBpcyByZWR1Y2VkIHRvIH42NUsgdXNpbmcgZ3ppcC4gSG93IGJpZyB0aGUg QXR0YWlidXRlUmVnaXN0cnkgcGF5bG9hZCBkZXBlbmRzIG9uIHRoZSBwbGF0Zm9ybSBhbmQgYWxz byBkZXBlbmRzIG9uIGlmIFJlZGZpc2ggc2VydmljZSBzZW5kcyBiYWNrIHRoZSBwYXlsb2FkIHVz aW5nIGd6aXAuDQpXZSBjYW4ganVzdCBsaW1pdCBpdCB0byAxME1CIGZvciBub3csIHRoYXQgc2F5 cyB3ZSBicmVhayB0aGUgY2h1bmsgdHJhbnNmZXIgaWYgVG90YWxMZW5ndGggPiAxME1CLiBXZSBj YW4gYWRqdXN0IGl0IGxhdGVyIGlmIGFueSB1c2VzIGNhc2UgcmVxdWVzdCBpdC4gSG93IGRvIHlv dSB0aGluaz8NCg0KPiA+Pj4NCj4gPj4+Pj4gKyAgICB9Ow0KPiA+Pj4+PiArICAgICpDb250ZW50 TGVuZ3RoID0gVG90YWxMZW5ndGg7DQo+ID4+Pj4+ICsgICAgKkNodW5rTGlzdEhlYWQgPSBIdHRw Q2h1bmtzOw0KPiA+Pj4+PiArICAgIERFQlVHICgoREVCVUdfSU5GTywgIiAgICAgVG90YWwgb2Yg bGVuZ2ggb2YgY2h1bmtzIDolZFxuIiwNCj4gPj4+PiBUb3RhbExlbmd0aCkpOw0KPiA+Pj4+PiAr ICAgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gPj4+Pj4gKyAgfSBlbHNlIHsNCj4gPj4+Pj4gKyAg ICByZXR1cm4gRUZJX05PVF9GT1VORDsNCj4gPj4+Pj4gKyAgfQ0KPiA+Pj4+PiArRGVsZXRlckNo dW5rczo7DQo+ID4+Pj4gTmFtZSB0aGlzIGxhYmVsIEV4aXREZWxldGVDaHVua3MgYW5kIHJlbW92 ZSB0aGUgY29tbWEuDQo+ID4+Pj4+ICsgIHdoaWxlICghSXNMaXN0RW1wdHkgKEh0dHBDaHVua3Mp KSB7DQo+ID4+Pj4+ICsgICAgVGhpc0xpc3RFbnRyeSA9IEdldEZpcnN0Tm9kZSAoSHR0cENodW5r cyk7DQo+ID4+Pj4+ICsgICAgUmVtb3ZlRW50cnlMaXN0IChUaGlzTGlzdEVudHJ5KTsNCj4gPj4+ Pj4gKyAgfTsNCj4gPj4+Pj4gKyAgcmV0dXJuIFN0YXR1czsNCj4gPj4+Pj4gK30NCj4gPj4+Pj4g ZGlmZiAtLWdpdCBhL05ldHdvcmtQa2cvTGlicmFyeS9EeGVIdHRwSW9MaWIvRHhlSHR0cElvTGli LmluZg0KPiA+Pj4+PiBiL05ldHdvcmtQa2cvTGlicmFyeS9EeGVIdHRwSW9MaWIvRHhlSHR0cElv TGliLmluZg0KPiA+Pj4+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+Pj4+PiBpbmRleCAwMDAw MDAwMDAwLi5hMDJiNDA5NTQ3DQo+ID4+Pj4+IC0tLSAvZGV2L251bGwNCj4gPj4+Pj4gKysrIGIv TmV0d29ya1BrZy9MaWJyYXJ5L0R4ZUh0dHBJb0xpYi9EeGVIdHRwSW9MaWIuaW5mDQo+ID4+Pj4+ IEBAIC0wLDAgKzEsNDMgQEANCj4gPj4+Pj4gKyMjIEBmaWxlDQo+ID4+Pj4+ICsjICBUaGlzIGxp YnJhcnkgaW5zdGFuY2UgcHJvdmlkZXMgSFRUUCBJTyBoZWxwZXIgZnVuY3Rpb25zLg0KPiA+Pj4+ PiArIw0KPiA+Pj4+PiArIyAgKEMpIENvcHlyaWdodCAyMDIwIEhld2xldHQgUGFja2FyZCBFbnRl cnByaXNlIERldmVsb3BtZW50DQo+IExQPEJSPg0KPiA+PiAjDQo+ID4+Pj4+ICtTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudCAjICMjDQo+ID4+Pj4+ICsNCj4gPj4+ Pj4gK1tEZWZpbmVzXQ0KPiA+Pj4+PiArICBJTkZfVkVSU0lPTiAgICAgICAgICAgICAgICAgICAg PSAweDAwMDEwMDFiDQo+ID4+Pj4+ICsgIEJBU0VfTkFNRSAgICAgICAgICAgICAgICAgICAgICA9 IER4ZUh0dHBJb0xpYg0KPiA+Pj4+PiArICBNT0RVTEVfVU5JX0ZJTEUgICAgICAgICAgICAgICAg PSBEeGVIdHRwSW9MaWIudW5pDQo+ID4+Pj4+ICsgIEZJTEVfR1VJRCAgICAgICAgICAgICAgICAg ICAgICA9IDUwQjE5OEY4LTc5ODYtNEY1MS1BODU3LUNGRTQ2NDNENTlGMw0KPiA+Pj4+PiArICBN T0RVTEVfVFlQRSAgICAgICAgICAgICAgICAgICAgPSBEWEVfRFJJVkVSDQo+ID4+Pj4+ICsgIFZF UlNJT05fU1RSSU5HICAgICAgICAgICAgICAgICA9IDEuMA0KPiA+Pj4+PiArICBMSUJSQVJZX0NM QVNTICAgICAgICAgICAgICAgICAgPSBIdHRwSW9MaWJ8IERYRV9DT1JFIERYRV9EUklWRVINCj4g Pj4+PiBEWEVfUlVOVElNRV9EUklWRVIgRFhFX1NNTV9EUklWRVIgVUVGSV9BUFBMSUNBVElPTg0K PiA+Pj4+IFVFRklfRFJJVkVSDQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyMNCj4gPj4+Pj4gKyMgVGhl IGZvbGxvd2luZyBpbmZvcm1hdGlvbiBpcyBmb3IgcmVmZXJlbmNlIG9ubHkgYW5kIG5vdCByZXF1 aXJlZCBieQ0KPiA+PiB0aGUNCj4gPj4+PiBidWlsZCB0b29scy4NCj4gPj4+Pj4gKyMNCj4gPj4+ Pj4gKyMgIFZBTElEX0FSQ0hJVEVDVFVSRVMgICAgICAgICAgID0gSUEzMiBYNjQgRUJDIEFSTSBB QVJNNjQNCj4gUklTQ1Y2NA0KPiA+Pj4+PiArIw0KPiA+Pj4+PiArDQo+ID4+Pj4+ICtbU291cmNl c10NCj4gPj4+Pj4gKyAgRHhlSHR0cElvTGliLmMNCj4gPj4+Pj4gKw0KPiA+Pj4+PiArW1BhY2th Z2VzXQ0KPiA+Pj4+PiArICBNZGVQa2cvTWRlUGtnLmRlYw0KPiA+Pj4+PiArICBOZXR3b3JrUGtn L05ldHdvcmtQa2cuZGVjDQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKw0KPiA+Pj4+PiArW0xpYnJhcnlD bGFzc2VzXQ0KPiA+Pj4+PiArICBCYXNlTGliDQo+ID4+Pj4+ICsgIEJhc2VNZW1vcnlMaWINCj4g Pj4+Pj4gKyAgRGVidWdMaWINCj4gPj4+Pj4gKyAgRHBjTGliDQo+ID4+Pj4+ICsgIE1lbW9yeUFs bG9jYXRpb25MaWINCj4gPj4+Pj4gKyAgUHJpbnRMaWINCj4gPj4+Pj4gKyAgVWVmaUJvb3RTZXJ2 aWNlc1RhYmxlTGliDQo+ID4+Pj4+ICsNCj4gPj4+Pj4gK1tQcm90b2NvbHNdDQo+ID4+Pj4+ICsg IGdFZmlIdHRwUHJvdG9jb2xHdWlkICAgICAgICAgICAgICMjIFNPTUVUSU1FU19DT05TVU1FUw0K PiA+Pj4+PiArDQo+ID4+Pj4+IGRpZmYgLS1naXQgYS9OZXR3b3JrUGtnL0xpYnJhcnkvRHhlSHR0 cElvTGliL0R4ZUh0dHBJb0xpYi51bmkNCj4gPj4+Pj4gYi9OZXR3b3JrUGtnL0xpYnJhcnkvRHhl SHR0cElvTGliL0R4ZUh0dHBJb0xpYi51bmkNCj4gPj4+Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQN Cj4gPj4+Pj4gaW5kZXggMDAwMDAwMDAwMC4uZDQxOWIxYTQ5ZA0KPiA+Pj4+PiAtLS0gL2Rldi9u dWxsDQo+ID4+Pj4+ICsrKyBiL05ldHdvcmtQa2cvTGlicmFyeS9EeGVIdHRwSW9MaWIvRHhlSHR0 cElvTGliLnVuaQ0KPiA+Pj4+PiBAQCAtMCwwICsxLDEzIEBADQo+ID4+Pj4+ICsvLyAvKiogQGZp bGUNCj4gPj4+Pj4gKy8vIFRoZSBsaWJyYXJ5IGluc3RhbmNlIHByb3ZpZGVzIEhUVFAgSU8gaGVs cGVyIGZ1bmN0aW9ucy4NCj4gPj4+Pj4gKy8vDQo+ID4+Pj4+ICsvLyAoQykgQ29weXJpZ2h0IDIw MjAgSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgRGV2ZWxvcG1lbnQNCj4gTFA8QlI+DQo+ID4+ Pj4+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudCAvLyAv LyAqKi8NCj4gPj4+Pj4gKw0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsjc3RyaW5nIFNUUl9NT0RVTEVf QUJTVFJBQ1QgICAgICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICJIVFRQIElPDQo+ID4+IEhlbHBl cg0KPiA+Pj4+IExpYnJhcnkiDQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyNzdHJpbmcgU1RSX01PRFVM RV9ERVNDUklQVElPTiAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgIlRoZQ0KPiBsaWJyYXJ5DQo+ ID4+Pj4gaW5zdGFuY2UgcHJvdmlkZXMgSFRUUCBJTyBoZWxwZXIgZnVuY3Rpb25zLiINCj4gPj4+ Pj4gKw0KPiA+Pj4NCj4gPj4+DQo+ID4+Pg0KPiA+Pj4NCj4gPg0KPiA+DQo+ID4gDQo+ID4NCj4g Pg0KDQo=