From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (NAM11-CO1-obe.outbound.protection.outlook.com [40.107.220.44]) by mx.groups.io with SMTP id smtpd.web11.6088.1682060996985529970 for ; Fri, 21 Apr 2023 00:09:57 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@amd.com header.s=selector1 header.b=QW/oPVBk; spf=permerror, err=parse error for token &{10 18 %{i}._ip.%{h}._ehlo.%{d}._spf.vali.email}: invalid domain name (domain: amd.com, ip: 40.107.220.44, mailfrom: abner.chang@amd.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=URjoQyEfAL+lcvdo8ugExend6xKp5uV4q07V/pLccaBd2FKTzn+NMMEgUd24ZkRhplb+y3xdtZKCOlP8OQeWVnoNH8THHKUWSebSDEaFXQhbWnR1D9xkB5bySprB5zQJc2CffFcdnWO8VTts8Pn/k5VxeTm4H7bK4IKOA5hZ2n4imOKPgZdpZR0ZaUDXxwpjKJu07FDakqHEoWckVDOhbLVKd1tGclFawoaHvTZKD614+s6iPsSDZGGcD8DvEWI+GF2vtQa1Ye3y5VgrGGoNByk0+0uqKakr2HrHjqJOMlYFu83Wr7xBgT7vCKy0t6xY+1dKSMLnMeAqUvN9WzZatg== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=3BX/1X+qoBJGAMCOC2mbm0t4eTt8Ws3xUj6dxGheGwo=; b=RF8WaMh99whpySP+isKNUIFAcAvIO7EYyApY7KE6j3CjjtP4LwW9Ai9/0dzeWtQ4PmgeiLwy+QdKE/JROb78+n9/sz4WEVTtomjvuGLDoKc4sczwMkXPvCJj4D68MRUTbQm/pRKkRuuPib5NHSq4pfeFDDk6lqAk73cAAuJ3NxY6MG7fKygoO/0kDkdsa9Ylvr+DsPPawS3+hka+CFTlmGKrX0P9UaThbT8/Vjp3dOARKGjEGQC25Pa9ktS9hPRTU/hwdb216cRsUylw10uGx7DUbKQZHJuviz5boDxshV4Ld4zIiMrgyGW6b/GjilJaYrir8LPnNVmRzRN89X3pOw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=3BX/1X+qoBJGAMCOC2mbm0t4eTt8Ws3xUj6dxGheGwo=; b=QW/oPVBk+AoMSNDgnTcF5JfSGEdG3ansfCMrGxWnKvsxUCduEVKHMTXgUUSng5mYpVFEWt5yCfhYO0nKKb2ceU3DWuf8DBuIaH4f0Kqb4fG1kzAucyFk8sGDGbYAdcFuTfkrbNNF0Q/dsWJYPsDbqKhUzmPfAhqOrosNItaNIas= Received: from MN2PR12MB3966.namprd12.prod.outlook.com (2603:10b6:208:165::18) by DS0PR12MB6534.namprd12.prod.outlook.com (2603:10b6:8:c1::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6319.22; Fri, 21 Apr 2023 07:09:53 +0000 Received: from MN2PR12MB3966.namprd12.prod.outlook.com ([fe80::46f1:bdce:a4bc:29e3]) by MN2PR12MB3966.namprd12.prod.outlook.com ([fe80::46f1:bdce:a4bc:29e3%3]) with mapi id 15.20.6319.022; Fri, 21 Apr 2023 07:09:53 +0000 From: "Chang, Abner" To: Tinh Nguyen , "devel@edk2.groups.io" CC: Isaac Oram , "Attar, AbdulLateef (Abdul Lateef)" , Nickle Wang , Igor Kulchytskyy Subject: Re: [edk2-devel] [edk2-platforms][PATCH V2 02/14] ManageabilityPkg: Support Maximum Transfer Unit Thread-Topic: [edk2-devel] [edk2-platforms][PATCH V2 02/14] ManageabilityPkg: Support Maximum Transfer Unit Thread-Index: AQHZc058z58Z/Ae3j0ydySQvWX5LFK806bRAgABtUYCAAAG90A== Date: Fri, 21 Apr 2023 07:09:53 +0000 Message-ID: References: <20230418071543.1951-1-abner.chang@amd.com> <20230418071543.1951-3-abner.chang@amd.com> <0e8628de-5da9-849d-db7d-ae0b6be126b1@amperemail.onmicrosoft.com> <84e90c10-4d5a-0eaf-1aa1-09dd3428af00@amperemail.onmicrosoft.com> In-Reply-To: <84e90c10-4d5a-0eaf-1aa1-09dd3428af00@amperemail.onmicrosoft.com> Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Enabled=true; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_SetDate=2023-04-21T07:09:49Z; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Method=Standard; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Name=General; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_SiteId=3dd8961f-e488-4e60-8e11-a82d994e183d; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_ActionId=0a0caf5a-3b6d-4bb5-a990-4dd8c5f19baf; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_ContentBits=1 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amd.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MN2PR12MB3966:EE_|DS0PR12MB6534:EE_ x-ms-office365-filtering-correlation-id: 4dea4ed8-56c9-4b3f-748b-08db4237679c x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: UjR4MXf314ajeXTxLA5vB9jA3gSBcfXIPz/LyJV9oQeW+OeHFmugqRyGdp5v1QZNb+1KtSaGKiCkBvLdszNuiI5+wJ/4FopO8yGQ3gtZQl0OCo5U5wDuHsb+hkKWavTddOHScC5OU1jxgF9nyz+RsRqq9QAKsvnZzsDo+0vd3W1yE+SsqW98v6Wo9B3afK4ChFr7WdIWz3mb6mrH4Rhbur44xJzsWFwykAFTE2PYnBHfk3Gcsbs2LBA9TcZm6g+w9zlL+jQzGXTRAWS/JqU3mUW6il5S/nVUmT1TnkDBlDcWCHTPtltoGDh0IHLfZyJVzBuGkrUYekd2cee+2hK7UpZCfoxEVJNGb3ufNjsvbLkeQ/MdGOT+CkLFpKLI06RlH6Ooht/VBOHzD4gAOLKRFqZXosAo48pfDpZD2N5qNAbbDOQxbWShsd6i7KC67cJYm3/qGQyHsNH92WsIev+7a9+cmZ7929CETJG74W1Ne9cj9QmG89uBoqit7dJtPrvAZt9KUj8Ry0obmwc6oOVj2RO26/V9sOIeoBtuFBk+W1Qy0ub2DYhspguWOqeOoSECFxLA4RBdHyFqg4tJt+SrtLwayTHMKJhpsLdg1ek22HONlGPSkI5Zjysr8PeT/G2XJCxitYoHCH1HJYH/Lmzi3A== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MN2PR12MB3966.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(4636009)(346002)(396003)(136003)(376002)(366004)(39860400002)(451199021)(38070700005)(8936002)(2906002)(30864003)(38100700002)(8676002)(52536014)(5660300002)(33656002)(86362001)(9686003)(6506007)(7696005)(55016003)(71200400001)(26005)(110136005)(54906003)(478600001)(83380400001)(4326008)(53546011)(186003)(316002)(296002)(66556008)(64756008)(66446008)(19627235002)(76116006)(66476007)(66946007)(122000001)(41300700001)(559001)(579004)(44824005);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?d1J3Nis4MmswSFZKVmM0MGROYzI3MHlDMEVCWmE1Ri80eGNYcHQxb044Vjcy?= =?utf-8?B?NjNOalQwdjVJKzN5aUpXMUJTbkgwMVZXUHg3WnQ3alBpZEVKTGp3bTZUaTRH?= =?utf-8?B?dmE0MkpZbHllRllXdFJMVzI5MEZZR1I5OVRZOE1ROWM0TGhBR0tVQ0xndEgx?= =?utf-8?B?Y1N0WFBIMWpYTy9NeTFScmFJcnZWZks2aWVJRWhwOWhCZUZITVRLU0YvY1dC?= =?utf-8?B?WUFNTG5IYWJkK0E2NzhqaERPalErWkdIK3ZMSTQ1aTMxM2x0R1BTZU83NFpL?= =?utf-8?B?eFpUaXBMQ3MzRDNyM05oV3BjY0ZROFVuMno5WWVRL2Zsa2dRaHpWWjgyZitR?= =?utf-8?B?bW5raDl4dEtZNWxoZHRVVE91ak5sNEpHc09tRnZscHhCZW5ZMDNiUjF3VjFk?= =?utf-8?B?alNGekMya1lsQW82QzBVL0VzS2dNY3FNU0RKeXNWZnQwcUp5N0RMOTBxS05G?= =?utf-8?B?WHpJaWdaYmZMK2twSFNoRi95Q3NnMW5SVEtGMitKYks1aHdNLzhnK1lCYU1Z?= =?utf-8?B?bWJ4cUNUZ0RqOE14NDV2ZnNSOFlVQy82ZjYwK1oxVk9YRElSYkcxYW9ZTXdw?= =?utf-8?B?WTlrdkFzRFphN05EWXdxZ1h3ZC9pMWZWUTJxTjEwUTJYK2dsUUFWVzBkczc3?= =?utf-8?B?UzRuODZ6aUl1eDFhZWJhVDBFb29ZaFJGWU43UnVyVHFMVnUvclcvNTNieWsx?= =?utf-8?B?U1Q0K0FXOGxnaWJvMVVheGc5TUpqWk05ak0ySVFSalMxM1ZQM2hnS0daaERl?= =?utf-8?B?N1dua3gwYzZDTkVnR0huZzk4NE1tVDFRVyt3OUY3TXRBQTFuUkhza2lRS2hi?= =?utf-8?B?SVBCOXRlTUlSSXpHSVA2Uksxamd2cC9rMUZPaWlFaTVRcTY2VDd2L25HYTJh?= =?utf-8?B?QlRnMTBnVm1GOVAzRU84VnVhcVE3M2RFMHpaUk8xNzlybkQvK1cwUmNSU29N?= =?utf-8?B?TnFabkVUY1BsbFNGeEkzSm1yV2JmdExIZ2lDd0trU20zRXlsTEU1OGxaeVRj?= =?utf-8?B?Mm1lK1kxY0xGOFJUUnFFOFB3NXNaM3crSlQxUG5ZdHZQUHFHb2RFVHc1TmlF?= =?utf-8?B?dFd1azJNWnpoZE5rUXRMYlFVQ1hDVE1SL0dJK1VrRzB4bkpOT2hnVDQwNzZs?= =?utf-8?B?QTF6VGJUWXEzdlNjV1M4V2JxV0loelMvN3ovQTduNlVjbjRUVjlRdk5OT0tk?= =?utf-8?B?N1BWUUQwcTRwQVByeVpxQXovS0xwZ0pzZ2JVcDFUMnhERGVlSnE1VjUrSUVR?= =?utf-8?B?WUxuNWh2R2lFZEdzWG1uOUJxaFFqUHF1ODN6SGd5TXRxcFYvMXNpMUMrREVT?= =?utf-8?B?OEsvdFNIcFRYTzZtaDlPbEp1Q0hiQldRODBJWm5OR2ZKS3pXSnpQcDkrU1Az?= =?utf-8?B?SVVKNjY1d1VFd1dzbnBGalMrUVA1REVyaHZBYmt0Z2IyRzQwZktYVXJLNFVw?= =?utf-8?B?Y0NySkY3bWlFKzAzeXdQUjY2Ym9FTFFrTFpreVRPbm41dGVDNjczeTlWOWc2?= =?utf-8?B?azQ0c3BVb0s2ZEwwajYzbDJQSmpIREFXVkdTalI3SE9jMHIyWlhlYTB2a3Vs?= =?utf-8?B?WE5TTEVNSkFMQ2Q0ME50ZzVLZWM2eUJ5YXJIT0phNXlDWVJWVFBVd3c4a05V?= =?utf-8?B?Sktic2U2OThpWk1mUDRhNTE2ckJ6RDVxdmY4Y0R4bWx6TURzY2hxYzh1RGo2?= =?utf-8?B?eUM1eHpZbldBNTlkTGFXRVl5TGVFNEpQYWNFSm11bjJZUHlrMVZrMGpqMjNa?= =?utf-8?B?cDhFRmJLOVB0WWdVbXRaNnNLUGMwSUYwTFlJTG5HWW5Lb3RlMVFrU3Flc0dy?= =?utf-8?B?c2dyUWdGQUZ2Rm9tWW9RaHdNNEoyQWI3YklQVTBqVkJlYTZCYXJPb2kzeFpW?= =?utf-8?B?OTdHUzNXYUtla2E1eXFnMnNHejJ1bmVhajB3ak41NHRVVW52REFod2xDdjYw?= =?utf-8?B?Tnp0bTROdzZicmxuQ1V5WW5jR0QydW5BUFNwUGM1c2lOclJQaFVrZkZrUkFo?= =?utf-8?B?SWdQN2VHbXVvWkxXdzlaWUI3cWJoWE81VE94dm1NZnVOV2ZqVXo0U2htNysx?= =?utf-8?B?OWdkVlBJSHR1dkVTbk9YR281R1lPZ1hRZnNwb1R3S25GN2FQdVdJTmlKSC8z?= =?utf-8?Q?qSbeYvRYk+3mctxsX1bIQWxSy?= MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN2PR12MB3966.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4dea4ed8-56c9-4b3f-748b-08db4237679c X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Apr 2023 07:09:53.1758 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: bL0SD87zfiCQcOdwKxx3h1eY3X8stiiWEejrpN+YQKpff18tNNAPJpJJqT/C8wLkozqbvOUG95MKvtMC8ZEBkg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB6534 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 W0FNRCBPZmZpY2lhbCBVc2UgT25seSAtIEdlbmVyYWxdDQoNCg0KDQo+IC0tLS0tT3JpZ2luYWwg TWVzc2FnZS0tLS0tDQo+IEZyb206IFRpbmggTmd1eWVuIDx0aW5obmd1eWVuQGFtcGVyZW1haWwu b25taWNyb3NvZnQuY29tPg0KPiBTZW50OiBGcmlkYXksIEFwcmlsIDIxLCAyMDIzIDI6NTkgUE0N Cj4gVG86IENoYW5nLCBBYm5lciA8QWJuZXIuQ2hhbmdAYW1kLmNvbT47IGRldmVsQGVkazIuZ3Jv dXBzLmlvDQo+IENjOiBJc2FhYyBPcmFtIDxpc2FhYy53Lm9yYW1AaW50ZWwuY29tPjsgQXR0YXIs IEFiZHVsTGF0ZWVmIChBYmR1bCBMYXRlZWYpDQo+IDxBYmR1bExhdGVlZi5BdHRhckBhbWQuY29t PjsgTmlja2xlIFdhbmcgPG5pY2tsZXdAbnZpZGlhLmNvbT47IElnb3INCj4gS3VsY2h5dHNreXkg PGlnb3JrQGFtaS5jb20+DQo+IFN1YmplY3Q6IFJlOiBbZWRrMi1kZXZlbF0gW2VkazItcGxhdGZv cm1zXVtQQVRDSCBWMiAwMi8xNF0NCj4gTWFuYWdlYWJpbGl0eVBrZzogU3VwcG9ydCBNYXhpbXVt IFRyYW5zZmVyIFVuaXQNCj4gDQo+IENhdXRpb246IFRoaXMgbWVzc2FnZSBvcmlnaW5hdGVkIGZy b20gYW4gRXh0ZXJuYWwgU291cmNlLiBVc2UgcHJvcGVyDQo+IGNhdXRpb24gd2hlbiBvcGVuaW5n IGF0dGFjaG1lbnRzLCBjbGlja2luZyBsaW5rcywgb3IgcmVzcG9uZGluZy4NCj4gDQo+IA0KPiBP biA0LzIxLzIwMjMgNzo1MSBBTSwgQ2hhbmcsIEFibmVyIHdyb3RlOg0KPiA+IFtFWFRFUk5BTCBF TUFJTCBOT1RJQ0U6IFRoaXMgZW1haWwgb3JpZ2luYXRlZCBmcm9tIGFuIGV4dGVybmFsIHNlbmRl ci4NCj4gPiBQbGVhc2UgYmUgbWluZGZ1bCBvZiBzYWZlIGVtYWlsIGhhbmRsaW5nIGFuZCBwcm9w cmlldGFyeSBpbmZvcm1hdGlvbg0KPiA+IHByb3RlY3Rpb24gcHJhY3RpY2VzLl0NCj4gPg0KPiA+ DQo+ID4gW0FNRCBPZmZpY2lhbCBVc2UgT25seSAtIEdlbmVyYWxdDQo+ID4NCj4gPg0KPiA+DQo+ ID4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+IEZyb206IFRpbmggTmd1eWVuIDx0 aW5obmd1eWVuQGFtcGVyZW1haWwub25taWNyb3NvZnQuY29tPg0KPiA+PiBTZW50OiBUaHVyc2Rh eSwgQXByaWwgMjAsIDIwMjMgMjowOCBQTQ0KPiA+PiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW87 IENoYW5nLCBBYm5lciA8QWJuZXIuQ2hhbmdAYW1kLmNvbT4NCj4gPj4gQ2M6IElzYWFjIE9yYW0g PGlzYWFjLncub3JhbUBpbnRlbC5jb20+OyBBdHRhciwgQWJkdWxMYXRlZWYgKEFiZHVsDQo+ID4+ IExhdGVlZikgPEFiZHVsTGF0ZWVmLkF0dGFyQGFtZC5jb20+OyBOaWNrbGUgV2FuZw0KPiA+PiA8 bmlja2xld0BudmlkaWEuY29tPjsgSWdvciBLdWxjaHl0c2t5eSA8aWdvcmtAYW1pLmNvbT4NCj4g Pj4gU3ViamVjdDogUmU6IFtlZGsyLWRldmVsXSBbZWRrMi1wbGF0Zm9ybXNdW1BBVENIIFYyIDAy LzE0XQ0KPiA+PiBNYW5hZ2VhYmlsaXR5UGtnOiBTdXBwb3J0IE1heGltdW0gVHJhbnNmZXIgVW5p dA0KPiA+Pg0KPiA+PiBDYXV0aW9uOiBUaGlzIG1lc3NhZ2Ugb3JpZ2luYXRlZCBmcm9tIGFuIEV4 dGVybmFsIFNvdXJjZS4gVXNlIHByb3Blcg0KPiA+PiBjYXV0aW9uIHdoZW4gb3BlbmluZyBhdHRh Y2htZW50cywgY2xpY2tpbmcgbGlua3MsIG9yIHJlc3BvbmRpbmcuDQo+ID4+DQo+ID4+DQo+ID4+ IEhpIEFibmVyLA0KPiA+Pg0KPiA+PiBJIGhhdmUgc29tZSBpbmxpbmUgY29tbWVudHMgYmVsb3cN Cj4gPj4NCj4gPj4gT24gMTgvMDQvMjAyMyAxNDoxNSwgQ2hhbmcsIEFibmVyIHZpYSBncm91cHMu aW8gd3JvdGU6DQo+ID4+PiBGcm9tOiBBYm5lciBDaGFuZyA8YWJuZXIuY2hhbmdAYW1kLmNvbT4N Cj4gPj4+DQo+ID4+PiBVcGRhdGUgR2V0VHJhbnNwb3J0Q2FwYWJpbGl0eSB0byBzdXBwb3J0IE1h eGltdW0gVHJhbnNmZXIgVW5pdCAoTVRVKQ0KPiA+Pj4gb2YgdHJhbnNwb3J0IGludGVyZmFjZS4N Cj4gPj4+DQo+ID4+PiBTaWduZWQtb2ZmLWJ5OiBBYm5lciBDaGFuZyA8YWJuZXIuY2hhbmdAYW1k LmNvbT4NCj4gPj4+IENjOiBJc2FhYyBPcmFtIDxpc2FhYy53Lm9yYW1AaW50ZWwuY29tPg0KPiA+ Pj4gQ2M6IEFiZHVsIExhdGVlZiBBdHRhciA8YWJkYXR0YXJAYW1kLmNvbT4NCj4gPj4+IENjOiBO aWNrbGUgV2FuZyA8bmlja2xld0BudmlkaWEuY29tPg0KPiA+Pj4gQ2M6IElnb3IgS3VsY2h5dHNr eXkgPGlnb3JrQGFtaS5jb20+DQo+ID4+PiAtLS0NCj4gPj4+ICAgIC4uLi9MaWJyYXJ5L01hbmFn ZWFiaWxpdHlUcmFuc3BvcnRMaWIuaCAgICAgICB8IDMzICsrKysrKysrLS0tDQo+ID4+PiAgICAu Li4vQ29tbW9uL01hbmFnZWFiaWxpdHlUcmFuc3BvcnRLY3MuaCAgICAgICAgfCAgMiArDQo+ID4+ PiAgICAuLi4vSXBtaVByb3RvY29sL1BlaS9JcG1pUHBpSW50ZXJuYWwuaCAgICAgICAgfCAgOCAr Ky0NCj4gPj4+ICAgIC4uLi9CYXNlTWFuYWdlYWJpbGl0eVRyYW5zcG9ydE51bGwuYyAgICAgICAg ICB8IDE4ICsrKystLQ0KPiA+Pj4gICAgLi4uL0R4ZS9NYW5hZ2VhYmlsaXR5VHJhbnNwb3J0S2Nz LmMgICAgICAgICAgIHwgNTcgKysrKysrKysrKystLS0tLS0tLQ0KPiA+Pj4gICAgLi4uL1VuaXZl cnNhbC9JcG1pUHJvdG9jb2wvRHhlL0lwbWlQcm90b2NvbC5jIHwgMjQgKysrKysrLS0NCj4gPj4+ ICAgIC4uLi9Vbml2ZXJzYWwvSXBtaVByb3RvY29sL1BlaS9JcG1pUHBpLmMgICAgICB8IDUxICsr KysrKysrKystLS0tLS0tDQo+ID4+PiAgICAuLi4vVW5pdmVyc2FsL0lwbWlQcm90b2NvbC9TbW0v SXBtaVByb3RvY29sLmMgfCAyNCArKysrKystLQ0KPiA+Pj4gICAgOCBmaWxlcyBjaGFuZ2VkLCAx NDUgaW5zZXJ0aW9ucygrKSwgNzIgZGVsZXRpb25zKC0pDQo+ID4+Pg0KPiA+Pj4gZGlmZiAtLWdp dA0KPiA+Pj4NCj4gYS9GZWF0dXJlcy9NYW5hZ2VhYmlsaXR5UGtnL0luY2x1ZGUvTGlicmFyeS9N YW5hZ2VhYmlsaXR5VHJhbnNwb3J0TGliLg0KPiA+Pj4gaA0KPiA+Pj4NCj4gYi9GZWF0dXJlcy9N YW5hZ2VhYmlsaXR5UGtnL0luY2x1ZGUvTGlicmFyeS9NYW5hZ2VhYmlsaXR5VHJhbnNwb3J0TGli Lg0KPiA+Pj4gaA0KPiA+Pj4gaW5kZXggYzAyMmI0YWM1Yy4uZDg2ZDBkODdkNSAxMDA2NDQNCj4g Pj4+IC0tLQ0KPiA+Pj4NCj4gYS9GZWF0dXJlcy9NYW5hZ2VhYmlsaXR5UGtnL0luY2x1ZGUvTGli cmFyeS9NYW5hZ2VhYmlsaXR5VHJhbnNwb3J0TGliLg0KPiA+Pj4gaA0KPiA+Pj4gKysrDQo+IGIv RmVhdHVyZXMvTWFuYWdlYWJpbGl0eVBrZy9JbmNsdWRlL0xpYnJhcnkvTWFuYWdlYWJpbGl0eVRy YW5zcG8NCj4gPj4+ICsrKyBydA0KPiA+Pj4gKysrIExpYi5oDQo+ID4+PiBAQCAtMTQsNiArMTQs OSBAQA0KPiA+Pj4gICAgI2RlZmluZSBNQU5BR0VBQklMSVRZX1RSQU5TUE9SVF9UT0tFTl9WRVJT SU9ODQo+ID4+ICgoTUFOQUdFQUJJTElUWV9UUkFOU1BPUlRfVE9LRU5fVkVSU0lPTl9NQUpPUiA8 PCA4KSB8XA0KPiA+Pj4gTUFOQUdFQUJJTElUWV9UUkFOU1BPUlRfVE9LRU5fVkVSU0lPTl9NSU5P UikNCj4gPj4+DQo+ID4+PiArI2RlZmluZQ0KPiA+PiBNQU5BR0VBQklMSVRZX1RSQU5TUE9SVF9Q QVlMT0FEX1NJWkVfRlJPTV9DQVBBQklMSVRZKGEpICAoMQ0KPiA8PCAoKGEgJg0KPiA+Pg0KPiBN QU5BR0VBQklMSVRZX1RSQU5TUE9SVF9DQVBBQklMSVRZX01BWElNVU1fUEFZTE9BRF9NQVNLKQ0K PiA+Pj4+IFwNCj4gPj4+ICsNCj4gPj4+DQo+ID4+DQo+ICtNQU5BR0VBQklMSVRZX1RSQU5TUE9S VF9DQVBBQklMSVRZX01BWElNVU1fUEFZTE9BRF9CSVRfUE8NCj4gPj4gU0lUSU9OKSkNCj4gPj4+ ICsNCj4gPj4+ICAgIHR5cGVkZWYgc3RydWN0ICBfTUFOQUdFQUJJTElUWV9UUkFOU1BPUlRfRlVO Q1RJT05fVjFfMA0KPiA+PiBNQU5BR0VBQklMSVRZX1RSQU5TUE9SVF9GVU5DVElPTl9WMV8wOw0K PiA+Pj4gICAgdHlwZWRlZiBzdHJ1Y3QgIF9NQU5BR0VBQklMSVRZX1RSQU5TUE9SVA0KPiA+PiBN QU5BR0VBQklMSVRZX1RSQU5TUE9SVDsNCj4gPj4+ICAgIHR5cGVkZWYgc3RydWN0ICBfTUFOQUdF QUJJTElUWV9UUkFOU1BPUlRfVE9LRU4NCj4gPj4gTUFOQUdFQUJJTElUWV9UUkFOU1BPUlRfVE9L RU47DQo+ID4+PiBAQCAtNjgsOCArNzEsMTcgQEAgdHlwZWRlZiBVSU5UMzINCj4gPj4gTUFOQUdF QUJJTElUWV9UUkFOU1BPUlRfQURESVRJT05BTF9TVEFUVVM7DQo+ID4+PiAgICAvLy8gQWRkaXRp b25hbCB0cmFuc3BvcnQgaW50ZXJmYWNlIGZlYXR1cmVzLg0KPiA+Pj4gICAgLy8vDQo+ID4+PiAg ICB0eXBlZGVmIFVJTlQzMiBNQU5BR0VBQklMSVRZX1RSQU5TUE9SVF9DQVBBQklMSVRZOw0KPiA+ Pj4gKy8vLyBCaXQgMA0KPiA+Pj4gICAgI2RlZmluZQ0KPiA+Pg0KPiBNQU5BR0VBQklMSVRZX1RS QU5TUE9SVF9DQVBBQklMSVRZX01VTFRJUExFX1RSQU5TRkVSX1RPS0VOUw0KPiA+PiAweDAwMDAw MDAxDQo+ID4+PiAtI2RlZmluZQ0KPiA+PiBNQU5BR0VBQklMSVRZX1RSQU5TUE9SVF9DQVBBQklM SVRZX0FTWU5DSFJPTk9VU19UUkFOU0ZFUg0KPiA+PiAweDAwMDAwMDAyDQo+ID4+PiArLy8vIEJp dCAxDQo+ID4+PiArI2RlZmluZQ0KPiA+PiBNQU5BR0VBQklMSVRZX1RSQU5TUE9SVF9DQVBBQklM SVRZX0FTWU5DSFJPTk9VU19UUkFOU0ZFUg0KPiA+PiAweDAwMDAwMDAyDQo+ID4+PiArLy8vIEJp dCAyICAgLSBSZXNlcnZlZA0KPiA+Pj4gKy8vLyBCaXQgNzozIC0gVHJhbnNwb3J0IGludGVyZmFj ZSBtYXhpbXVtIHBheWxvYWQgc2l6ZSwgd2hpY2ggaXMgKDINCj4gPj4+ICteIGJpdFs3OjNdDQo+ ID4+IC0gMSkNCj4gPj4+ICsvLy8gICAgICAgICAgIGJpdFs3OjNdIG1lYW5zIG5vIG1heGltdW0g cGF5bG9hZC4NCj4gPj4gSSBhbSBjb25mdXNlZCB3aXRoIHlvdXIgZGVmaW5pdGlvbiBoZXJlLg0K PiA+Pg0KPiA+PiBXaHkgZG9lcyBpdCBoYXZlIHRvIGJlIGEgcG93ZXIgb2YgMj8NCj4gPiBVc3Vh bGx5IHRoZSBtYXhpbXVtL21pbmltdW0gaXMgaW4gIHBvd2VyIG9mIDIgYW5kIHVzZSBwb3dlciBv ZiAyIGhhcw0KPiBsZXNzIGJpdHMgb2NjdXBpZWQgZnJvbSBNQU5BR0VBQklMSVRZX1RSQU5TUE9S VF9DQVBBQklMSVRZLg0KPiANCj4geWVzLCB0aGF0IGlzIHVzdWFsbHksICBidXQgc3BlY2lmaWNh dGlvbiBkb2VzIG5vdCByZXF1aXJlIGl0LiBJIGNvbmNlcm4gdGhhdA0KPiBzb21lb25lIHdpbGwg aW1wbGVtZW50IGFub3RoZXIgc2l6ZSBvZiBwYXlsb2FkDQpNeSB0aG91Z2h0IGlzIGV2ZW4gdGhl IE1UVSBpcyBub3QgaW4gcG93ZXIgb2YgMiwgdHJhbnNwb3J0IGNhbiBzdGlsbCByZXBvcnQgYSBz bWFsbGVyIE1UVSB3aGljaCBpcyBpbiBwb3dlciBvZiAyLg0KZS5nLCBpZiB0aGUgTVRVIGlzIDEy MzQgYnl0ZXMsIHRoZW4gTWFuYWdlYWJpbGl0eSB0cmFuc3BvcnQgaW50ZXJmYWNlIGNhbiByZXR1 cm4gOCBpbiB0aGlzIGZpZWxkLCB3aXRoIHRoaXMgdGhlIE1UVSBpcyAyXjEwIC0gMS4NCg0KDQo+ IA0KPiANCj4gPg0KPiA+PiBBbmQgd2Ugc2hvdWxkIHNlcGFyYXRlIHJlcXVlc3QgcGF5bG9hZCBz aXplIGFuZCByZXNwb25zZSBwYXlsb2FkIHNpemUNCj4gPj4NCj4gPj4gQ2FuIHlvdSBjbGFyaWZ5 IG1vcmUgYWJvdXQgdGhhdD8NCj4gPiBEbyB3ZSByZWFsbHkgbmVlZCB0aGUgbWF4aW11bSBzaXpl IGZvciByZXNwb25zZT8gUmVzcG9uc2UgaXMgaW5pdGlhdGVkIGJ5DQo+IHRhcmdldCBlbmRwb2lu dCBhbmQgc3VwcG9zZSB0aGUgcGF5bG9hZCBoZWFkZXIgc2hvdWxkIGhhdmUgc29tZSBmaWVsZHMN Cj4gdGhhdCBpbmRpY2F0ZSB0aGUgcmV0dXJuIHBheWxvYWQgaXMgb25seSBwYXJ0IG9mIHJlc3Bv bnNlLg0KPiBBZ3JlZSwgSSBhbHNvIGp1c3QgdXNlIGl0IGZvciB2YWxpZGF0aW9uLg0KPiA+ICAg VGhlIHNpemUgb2YgcGF5bG9hZCByZXR1cm5lZCBpcyBhY3R1YWxseSBtYXhpbXVtIHRyYW5zZmVy IHNpemUgdGhhdCB0YXJnZXQNCj4gZW5kcG9pbnQgY2FuIGhhbmRsZS4NCj4gPiBEbyB5b3Uga25v dyBhbnkgY2FzZSB0aGF0IHJlY2VpdmVyIGhhcyBubyBpZGVhIGFib3V0IGlmIHRoZSBwYXlsb2Fk IHNlbnQNCj4gYmFjayBmcm9tIHRhcmdldCBlbmRwb2ludCBpcyBhIHBhcnRpYWwgb2YgcmVzcG9u c2Ugb3Igbm90PyAgV2Ugc2hvdWxkIGhhdmUNCj4gTVRVIHJlc3BvbnNlIGlmIGl0IGlzIHJlcXVp cmVkIGZvciB0aGUgdHJhbnNwb3J0IGludGVyZmFjZS4NCj4gPg0KPiA+PiBBbm90aGVyIHF1ZXN0 aW9uLCBvbmx5IFBFSV9JUE1JX1BQSV9JTlRFUk5BTCBjb250YWlucw0KPiBNYXhQYXlsb2FkU2l6 ZSwNCj4gPiBQUEkgaGFzIE1heFBheWxvYWRTaXplIGluIHN0cnVjdHVyZSBpcyBiZWNhdXNlIHdl IGNhbid0IGRlZmluZSBhIGdsb2JhbA0KPiB2YXJpYWJsZSBmb3IgUEVJIG1vZHVsZSBhcyBtb2R1 bGUgaXMgZXhlY3V0ZWQgaW4gcGxhY2UuDQo+ID4NCj4gPj4gaG93IGRvIElQTUkvTUNUUC9QTERN IHByb3RvY29sIHByb3ZpZGUgTWF4cGF5bG9hZHNpemUNCj4gPiBGb3IgRFhFIGRyaXZlcnMsIHRo ZSBNYXhwYXlsb2Fkc2l6ZSBpcyBkZWZpbmVkIGFzIGdsb2JhbCB2YXJpYWJsZS4NCj4gSSB0aGlu ayB3ZSBzaG91bGQgdGFrZSBub3RlIHNvbWV3aGVyZQ0KT2ssIEkgd2lsbCBoYXZlIGNvbW1lbnQg Zm9yIFBQSS9EWEUvU01NLg0KDQoNCj4gPg0KPiA+PiB0byBjYWxsZXI/DQo+ID4+DQo+ID4+PiAr I2RlZmluZQ0KPiA+Pg0KPiBNQU5BR0VBQklMSVRZX1RSQU5TUE9SVF9DQVBBQklMSVRZX01BWElN VU1fUEFZTE9BRF9NQVNLDQo+ID4+IDB4MDAwMDAwZjgNCj4gPj4+ICsjZGVmaW5lDQo+ID4+DQo+ IE1BTkFHRUFCSUxJVFlfVFJBTlNQT1JUX0NBUEFCSUxJVFlfTUFYSU1VTV9QQVlMT0FEX0JJVF9Q T1MNCj4gPj4gSVRJT04gICAzDQo+ID4+PiArI2RlZmluZQ0KPiA+Pj4NCj4gPj4NCj4gK01BTkFH RUFCSUxJVFlfVFJBTlNQT1JUX0NBUEFCSUxJVFlfTUFYSU1VTV9QQVlMT0FEX05PVF9BDQo+ID4+ IFZBSUxBQkxFDQo+ID4+PiArMHgwMCAvLy8gQml0IDg6MzEgLSBSZXNlcnZlZA0KPiA+Pj4NCj4g Pj4+ICAgIC8vLw0KPiA+Pj4gICAgLy8vIERlZmluaXRpb25zIG9mIE1hbmFnZWFiaWxpdHkgdHJh bnNwb3J0IGludGVyZmFjZSBmdW5jdGlvbnMuDQo+ID4+PiBAQCAtMTg3LDE1ICsxOTksMjAgQEAg QWNxdWlyZVRyYW5zcG9ydFNlc3Npb24gKA0KPiA+Pj4gICAgICApOw0KPiA+Pj4NCj4gPj4+ICAg IC8qKg0KPiA+Pj4gLSAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSB0cmFuc3BvcnQgY2FwYWJp bGl0aWVzLg0KPiA+Pj4gLQ0KPiA+Pj4gLSAgQHBhcmFtIFtvdXRdICBUcmFuc3BvcnRGZWF0dXJl ICAgICAgICBQb2ludGVyIHRvIHJlY2VpdmUgdHJhbnNwb3J0DQo+ID4+IGNhcGFiaWxpdGllcy4N Cj4gPj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSBk ZWZpbml0aW9ucyBvZg0KPiA+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBNQU5BR0VBQklMSVRZX1RSQU5TUE9SVF9DQVBBQklMSVRZLg0KPiA+Pj4gLQ0KPiA+Pj4g KyAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSB0cmFuc3BvcnQgY2FwYWJpbGl0aWVzIGFjY29y ZGluZyB0bw0KPiA+Pj4gKyB0aGUgbWFuYWdlYWJpbGl0eSBwcm90b2NvbC4NCj4gPj4+ICsNCj4g Pj4+ICsgIEBwYXJhbSBbaW5dICAgVHJhbnNwb3J0VG9rZW4gICAgICAgICAgICAgVHJhbnNwb3J0 IHRva2VuIGFjcXVpcmVkIGZyb20NCj4gPj4gbWFuYWdlYWJpbGl0eQ0KPiA+Pj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3BvcnQgbGlicmFyeS4NCj4g Pj4+ICsgIEBwYXJhbSBbb3V0XSAgVHJhbnNwb3J0RmVhdHVyZSAgICAgICAgICAgUG9pbnRlciB0 byByZWNlaXZlIHRyYW5zcG9ydA0KPiA+PiBjYXBhYmlsaXRpZXMuDQo+ID4+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUgZGVmaW5pdGlvbnMgb2YN Cj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUFOQUdF QUJJTElUWV9UUkFOU1BPUlRfQ0FQQUJJTElUWS4NCj4gPj4+ICsgIEByZXR2YWwgICAgICAgRUZJ X1NVQ0NFU1MgICAgICAgICAgICAgICAgVHJhbnNwb3J0Q2FwYWJpbGl0eSBpcyByZXR1cm5lZA0K PiA+PiBzdWNjZXNzZnVsbHkuDQo+ID4+PiArICBAcmV0dmFsICAgICAgIEVGSV9JTlZBTElEX1BB UkFNRVRFUiAgICAgIFRyYW5zcG9ydFRva2VuIGlzIG5vdCBhIHZhbGlkDQo+ID4+IHRva2VuLg0K PiA+Pj4gICAgKiovDQo+ID4+PiAtVk9JRA0KPiA+Pj4gK0VGSV9TVEFUVVMNCj4gPj4+ICAgIEdl dFRyYW5zcG9ydENhcGFiaWxpdHkgKA0KPiA+Pj4gKyAgSU4gTUFOQUdFQUJJTElUWV9UUkFOU1BP UlRfVE9LRU4gICAgICAgICpUcmFuc3BvcnRUb2tlbiwNCj4gPj4+ICAgICAgT1VUIE1BTkFHRUFC SUxJVFlfVFJBTlNQT1JUX0NBUEFCSUxJVFkgICpUcmFuc3BvcnRDYXBhYmlsaXR5DQo+ID4+PiAg ICAgICk7DQo+ID4+Pg0KPiA+Pj4gZGlmZiAtLWdpdA0KPiA+Pj4NCj4gPj4NCj4gYS9GZWF0dXJl cy9NYW5hZ2VhYmlsaXR5UGtnL0xpYnJhcnkvTWFuYWdlYWJpbGl0eVRyYW5zcG9ydEtjc0xpYi9D b21tDQo+ID4+IG8NCj4gPj4+IG4vTWFuYWdlYWJpbGl0eVRyYW5zcG9ydEtjcy5oDQo+ID4+Pg0K PiA+Pg0KPiBiL0ZlYXR1cmVzL01hbmFnZWFiaWxpdHlQa2cvTGlicmFyeS9NYW5hZ2VhYmlsaXR5 VHJhbnNwb3J0S2NzTGliL0NvbW0NCj4gPj4gbw0KPiA+Pj4gbi9NYW5hZ2VhYmlsaXR5VHJhbnNw b3J0S2NzLmgNCj4gPj4+IGluZGV4IGYxNzU4ZmZkOGYuLjJjZGY2MGJhN2UgMTAwNjQ0DQo+ID4+ PiAtLS0NCj4gPj4+DQo+ID4+DQo+IGEvRmVhdHVyZXMvTWFuYWdlYWJpbGl0eVBrZy9MaWJyYXJ5 L01hbmFnZWFiaWxpdHlUcmFuc3BvcnRLY3NMaWIvQ29tbQ0KPiA+PiBvDQo+ID4+PiBuL01hbmFn ZWFiaWxpdHlUcmFuc3BvcnRLY3MuaA0KPiA+Pj4gKysrDQo+IGIvRmVhdHVyZXMvTWFuYWdlYWJp bGl0eVBrZy9MaWJyYXJ5L01hbmFnZWFiaWxpdHlUcmFuc3BvcnRLY3NMaWINCj4gPj4+ICsrKyAv QyBvbW1vbi9NYW5hZ2VhYmlsaXR5VHJhbnNwb3J0S2NzLmgNCj4gPj4+IEBAIC0zMiw2ICszMiw4 IEBAIHR5cGVkZWYgc3RydWN0IHsNCj4gPj4+ICAgICNkZWZpbmUgSVBNSV9LQ1NfR0VUX1NUQVRF KHMpICAocyA+PiA2KQ0KPiA+Pj4gICAgI2RlZmluZSBJUE1JX0tDU19TRVRfU1RBVEUocykgIChz IDw8IDYpDQo+ID4+Pg0KPiA+Pj4gKyNkZWZpbmUgTUNUUF9LQ1NfTVRVX0lOX1BPV0VSX09GXzIg IDgNCj4gPj4+ICsNCj4gPj4+ICAgIC8vLyA1IHNlYywgYWNjb3JkaW5nIHRvIElQTUkgc3BlYw0K PiA+Pj4gICAgI2RlZmluZSBJUE1JX0tDU19USU1FT1VUXzVfU0VDICA1MDAwKjEwMDANCj4gPj4+ ICAgICNkZWZpbmUgSVBNSV9LQ1NfVElNRU9VVF8xTVMgICAgMTAwMA0KPiA+Pj4gZGlmZiAtLWdp dA0KPiA+Pj4gYS9GZWF0dXJlcy9NYW5hZ2VhYmlsaXR5UGtnL1VuaXZlcnNhbC9JcG1pUHJvdG9j b2wvUGVpL0lwbWlQcGlJbnRlcm4NCj4gPj4+IGFsDQo+ID4+PiAuaA0KPiA+Pj4NCj4gYi9GZWF0 dXJlcy9NYW5hZ2VhYmlsaXR5UGtnL1VuaXZlcnNhbC9JcG1pUHJvdG9jb2wvUGVpL0lwbWlQcGlJ bnRlcm4NCj4gPj4+IGFsDQo+ID4+PiAuaA0KPiA+Pj4gaW5kZXggYmJlMGM4YzVjYi4uNGI2YmRj OTdhOSAxMDA2NDQNCj4gPj4+IC0tLQ0KPiA+Pj4gYS9GZWF0dXJlcy9NYW5hZ2VhYmlsaXR5UGtn L1VuaXZlcnNhbC9JcG1pUHJvdG9jb2wvUGVpL0lwbWlQcGlJbnRlcm4NCj4gPj4+IGFsDQo+ID4+ PiAuaA0KPiA+Pj4gKysrDQo+IGIvRmVhdHVyZXMvTWFuYWdlYWJpbGl0eVBrZy9Vbml2ZXJzYWwv SXBtaVByb3RvY29sL1BlaS9JcG1pUHBpSW4NCj4gPj4+ICsrKyB0ZQ0KPiA+Pj4gKysrIHJuYWwu aA0KPiA+Pj4gQEAgLTE3LDkgKzE3LDExIEBADQo+ID4+PiAgICAjZGVmaW5lIE1BTkFHRUFCSUxJ VFlfSVBNSV9QUElfSU5URVJOQUxfRlJPTV9MSU5LKGEpICBDUiAoYSwNCj4gPj4+IFBFSV9JUE1J X1BQSV9JTlRFUk5BTCwgUGVpSXBtaVBwaSwNCj4gPj4+IE1BTkFHRUFCSUxJVFlfSVBNSV9QUElf SU5URVJOQUxfU0lHTkFUVVJFKQ0KPiA+Pj4NCj4gPj4+ICAgIHR5cGVkZWYgc3RydWN0IHsNCj4g Pj4+IC0gIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICBTaWduYXR1cmU7DQo+ID4+PiAt ICBNQU5BR0VBQklMSVRZX1RSQU5TUE9SVF9UT0tFTiAgKlRyYW5zcG9ydFRva2VuOw0KPiA+Pj4g LSAgUEVJX0lQTUlfUFBJICAgICAgICAgICAgICAgICAgIFBlaUlwbWlQcGk7DQo+ID4+PiArICBV SU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpZ25hdHVyZTsNCj4gPj4+ICsg IE1BTkFHRUFCSUxJVFlfVFJBTlNQT1JUX1RPS0VOICAgICAgICAgKlRyYW5zcG9ydFRva2VuOw0K PiA+Pj4gKyAgTUFOQUdFQUJJTElUWV9UUkFOU1BPUlRfQ0FQQUJJTElUWSAgICBUcmFuc3BvcnRD YXBhYmlsaXR5Ow0KPiA+Pj4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBUcmFuc3BvcnRNYXhpbXVtUGF5bG9hZDsNCj4gPj4+ICsgIFBFSV9JUE1JX1BQSSAgICAgICAg ICAgICAgICAgICAgICAgICAgUGVpSXBtaVBwaTsNCj4gPj4+ICAgIH0gUEVJX0lQTUlfUFBJX0lO VEVSTkFMOw0KPiA+Pj4NCj4gPj4+ICAgICNlbmRpZiAvLyBNQU5BR0VBQklMSVRZX0lQTUlfUFBJ X0lOVEVSTkFMX0hfDQo+ID4+PiBkaWZmIC0tZ2l0DQo+ID4+PiBhL0ZlYXR1cmVzL01hbmFnZWFi aWxpdHlQa2cvTGlicmFyeS9CYXNlTWFuYWdlYWJpbGl0eVRyYW5zcG9ydE51bGxMaQ0KPiA+Pj4g Yi8NCj4gPj4+IEJhc2VNYW5hZ2VhYmlsaXR5VHJhbnNwb3J0TnVsbC5jDQo+ID4+PiBiL0ZlYXR1 cmVzL01hbmFnZWFiaWxpdHlQa2cvTGlicmFyeS9CYXNlTWFuYWdlYWJpbGl0eVRyYW5zcG9ydE51 bGxMaQ0KPiA+Pj4gYi8NCj4gPj4+IEJhc2VNYW5hZ2VhYmlsaXR5VHJhbnNwb3J0TnVsbC5jDQo+ ID4+PiBpbmRleCA0OWZjOGMwZjcxLi4zYWE2ODU3OGE2IDEwMDY0NA0KPiA+Pj4gLS0tDQo+ID4+ PiBhL0ZlYXR1cmVzL01hbmFnZWFiaWxpdHlQa2cvTGlicmFyeS9CYXNlTWFuYWdlYWJpbGl0eVRy YW5zcG9ydE51bGxMaQ0KPiA+Pj4gYi8NCj4gPj4+IEJhc2VNYW5hZ2VhYmlsaXR5VHJhbnNwb3J0 TnVsbC5jDQo+ID4+PiArKysNCj4gPj4gYi9GZWF0dXJlcy9NYW5hZ2VhYmlsaXR5UGtnL0xpYnJh cnkvQmFzZU1hbmFnZWFiaWxpdHlUcmFuc3BvcnROdWxsDQo+ID4+PiArKysgTGliL0Jhc2VNYW5h Z2VhYmlsaXR5VHJhbnNwb3J0TnVsbC5jDQo+ID4+PiBAQCAtMzEsMTkgKzMxLDI1IEBAIEFjcXVp cmVUcmFuc3BvcnRTZXNzaW9uICgNCj4gPj4+ICAgIH0NCj4gPj4+DQo+ID4+PiAgICAvKioNCj4g Pj4+IC0gIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgdHJhbnNwb3J0IGNhcGFiaWxpdGllcy4N Cj4gPj4+IC0NCj4gPj4+IC0gIEBwYXJhbSBbb3V0XSAgVHJhbnNwb3J0RmVhdHVyZSAgICAgICAg UG9pbnRlciB0byByZWNlaXZlIHRyYW5zcG9ydA0KPiA+PiBjYXBhYmlsaXRpZXMuDQo+ID4+PiAt ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUgZGVmaW5pdGlv bnMgb2YNCj4gPj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUFO QUdFQUJJTElUWV9UUkFOU1BPUlRfQ0FQQUJJTElUWS4NCj4gPj4+ICsgIFRoaXMgZnVuY3Rpb24g cmV0dXJucyB0aGUgdHJhbnNwb3J0IGNhcGFiaWxpdGllcyBhY2NvcmRpbmcgdG8NCj4gPj4+ICsg dGhlIG1hbmFnZWFiaWxpdHkgcHJvdG9jb2wuDQo+ID4+Pg0KPiA+Pj4gKyAgQHBhcmFtIFtpbl0g ICBUcmFuc3BvcnRUb2tlbiAgICAgICAgICAgICBUcmFuc3BvcnQgdG9rZW4gYWNxdWlyZWQgZnJv bQ0KPiA+PiBtYW5hZ2VhYmlsaXR5DQo+ID4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHRyYW5zcG9ydCBsaWJyYXJ5Lg0KPiA+Pj4gKyAgQHBhcmFtIFtvdXRd ICBUcmFuc3BvcnRGZWF0dXJlICAgICAgICAgICBQb2ludGVyIHRvIHJlY2VpdmUgdHJhbnNwb3J0 DQo+ID4+IGNhcGFiaWxpdGllcy4NCj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgU2VlIHRoZSBkZWZpbml0aW9ucyBvZg0KPiA+Pj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQU5BR0VBQklMSVRZX1RSQU5TUE9SVF9D QVBBQklMSVRZLg0KPiA+Pj4gKyAgQHJldHZhbCAgICAgICBFRklfU1VDQ0VTUyAgICAgICAgICAg ICAgICBUcmFuc3BvcnRDYXBhYmlsaXR5IGlzIHJldHVybmVkDQo+ID4+IHN1Y2Nlc3NmdWxseS4N Cj4gPj4+ICsgIEByZXR2YWwgICAgICAgRUZJX0lOVkFMSURfUEFSQU1FVEVSICAgICAgVHJhbnNw b3J0VG9rZW4gaXMgbm90IGEgdmFsaWQNCj4gPj4gdG9rZW4uDQo+ID4+PiAgICAqKi8NCj4gPj4+ IC1WT0lEDQo+ID4+PiArRUZJX1NUQVRVUw0KPiA+Pj4gICAgR2V0VHJhbnNwb3J0Q2FwYWJpbGl0 eSAoDQo+ID4+PiArICBJTiBNQU5BR0VBQklMSVRZX1RSQU5TUE9SVF9UT0tFTiAgICAgICAgKlRy YW5zcG9ydFRva2VuLA0KPiA+Pj4gICAgICBPVVQgTUFOQUdFQUJJTElUWV9UUkFOU1BPUlRfQ0FQ QUJJTElUWSAgKlRyYW5zcG9ydENhcGFiaWxpdHkNCj4gPj4+ICAgICAgKQ0KPiA+Pj4gICAgew0K PiA+Pj4gICAgICAqVHJhbnNwb3J0Q2FwYWJpbGl0eSA9IDA7DQo+ID4+PiArICByZXR1cm4gRUZJ X1NVQ0NFU1M7DQo+ID4+PiAgICB9DQo+ID4+Pg0KPiA+Pj4gICAgLyoqDQo+ID4+PiBkaWZmIC0t Z2l0DQo+ID4+Pg0KPiA+Pg0KPiBhL0ZlYXR1cmVzL01hbmFnZWFiaWxpdHlQa2cvTGlicmFyeS9N YW5hZ2VhYmlsaXR5VHJhbnNwb3J0S2NzTGliL0R4ZS8NCj4gPj4gTQ0KPiA+Pj4gYW5hZ2VhYmls aXR5VHJhbnNwb3J0S2NzLmMNCj4gPj4+DQo+ID4+DQo+IGIvRmVhdHVyZXMvTWFuYWdlYWJpbGl0 eVBrZy9MaWJyYXJ5L01hbmFnZWFiaWxpdHlUcmFuc3BvcnRLY3NMaWIvRHhlLw0KPiA+PiBNDQo+ ID4+PiBhbmFnZWFiaWxpdHlUcmFuc3BvcnRLY3MuYw0KPiA+Pj4gaW5kZXggYWI0MTZlNTQ0OS4u N2Q4NTM3OGZjMSAxMDA2NDQNCj4gPj4+IC0tLQ0KPiA+Pj4NCj4gPj4NCj4gYS9GZWF0dXJlcy9N YW5hZ2VhYmlsaXR5UGtnL0xpYnJhcnkvTWFuYWdlYWJpbGl0eVRyYW5zcG9ydEtjc0xpYi9EeGUv DQo+ID4+IE0NCj4gPj4+IGFuYWdlYWJpbGl0eVRyYW5zcG9ydEtjcy5jDQo+ID4+PiArKysNCj4g Yi9GZWF0dXJlcy9NYW5hZ2VhYmlsaXR5UGtnL0xpYnJhcnkvTWFuYWdlYWJpbGl0eVRyYW5zcG9y dEtjc0xpYg0KPiA+Pj4gKysrIC9EDQo+ID4+PiArKysgeGUvTWFuYWdlYWJpbGl0eVRyYW5zcG9y dEtjcy5jDQo+ID4+PiBAQCAtNjIsNyArNjIsNyBAQCBLY3NUcmFuc3BvcnRJbml0ICgNCj4gPj4+ ICAgICAgfQ0KPiA+Pj4NCj4gPj4+ICAgICAgaWYgKEhhcmR3YXJlSW5mby5LY3MgPT0gTlVMTCkg ew0KPiA+Pj4gLSAgICBERUJVRyAoKERFQlVHX0lORk8sICIlYTogSGFyZHdhcmUgaW5mb3JtYXRp b24gaXMgbm90IHByb3ZpZGVkLA0KPiB1c2UNCj4gPj4gZGZhdWx0IHNldHRpbmdzLlxuIiwgX19G VU5DVElPTl9fKSk7DQo+ID4+PiArICAgIERFQlVHICgoREVCVUdfTUFOQUdFQUJJTElUWV9JTkZP LCAiJWE6IEhhcmR3YXJlDQo+IGluZm9ybWF0aW9uIGlzDQo+ID4+PiArIG5vdCBwcm92aWRlZCwg dXNlIGRmYXVsdCBzZXR0aW5ncy5cbiIsIF9fRlVOQ1RJT05fXykpOw0KPiA+Pj4gICAgICAgIG1L Y3NIYXJkd2FyZUluZm8uTWVtb3J5TWFwICAgICAgICAgICAgICAgICAgICA9DQo+ID4+IE1BTkFH RUFCSUxJVFlfVFJBTlNQT1JUX0tDU19JT19NQVBfSU87DQo+ID4+PiAgICAgICAgbUtjc0hhcmR3 YXJlSW5mby5Jb0Jhc2VBZGRyZXNzLklvQWRkcmVzczE2ICAgID0gUGNkR2V0MTYNCj4gPj4gKFBj ZElwbWlLY3NJb0Jhc2VBZGRyZXNzKTsNCj4gPj4+ICAgICAgICBtS2NzSGFyZHdhcmVJbmZvLklv RGF0YUluQWRkcmVzcy5Jb0FkZHJlc3MxNiAgPQ0KPiA+Pj4gbUtjc0hhcmR3YXJlSW5mby5Jb0Jh c2VBZGRyZXNzLklvQWRkcmVzczE2ICsNCj4gPj4gSVBNSV9LQ1NfREFUQV9JTl9SRUdJU1RFUl9P RkZTRVQ7IEBAIC04MSwyMSArODEsMjEgQEANCj4gPj4gS2NzVHJhbnNwb3J0SW5pdCAoDQo+ID4+ PiAgICAgIC8vIEdldCBwcm90b2NvbCBzcGVjaWZpY2F0aW9uIG5hbWUuDQo+ID4+PiAgICAgIE1h bmFnZWFiaWxpdHlQcm90b2NvbE5hbWUgPSBIZWxwZXJNYW5hZ2VhYmlsaXR5U3BlY05hbWUNCj4g Pj4+IChUcmFuc3BvcnRUb2tlbi0+TWFuYWdlYWJpbGl0eVByb3RvY29sU3BlY2lmaWNhdGlvbik7 DQo+ID4+Pg0KPiA+Pj4gLSAgREVCVUcgKChERUJVR19JTkZPLCAiJWE6IEtDUyB0cmFuc3BvcnQg aGFyZHdhcmUgZm9yICVzIGlzOlxuIiwNCj4gPj4+IF9fRlVOQ1RJT05fXywgTWFuYWdlYWJpbGl0 eVByb3RvY29sTmFtZSkpOw0KPiA+Pj4gKyAgREVCVUcgKChERUJVR19NQU5BR0VBQklMSVRZX0lO Rk8sICIlYTogS0NTIHRyYW5zcG9ydA0KPiBoYXJkd2FyZQ0KPiA+PiBmb3INCj4gPj4+ICsgJXMg aXM6XG4iLCBfX0ZVTkNUSU9OX18sIE1hbmFnZWFiaWxpdHlQcm90b2NvbE5hbWUpKTsNCj4gPj4+ ICAgICAgaWYgKG1LY3NIYXJkd2FyZUluZm8uTWVtb3J5TWFwKSB7DQo+ID4+PiAtICAgIERFQlVH ICgoREVCVUdfSU5GTywgIk1lbW9yeSBNYXAgSS9PXG4iLCBfX0ZVTkNUSU9OX18pKTsNCj4gPj4+ IC0gICAgREVCVUcgKChERUJVR19JTkZPLCAiQmFzZSBNZW1vcnkgQWRkcmVzcyA6IDB4JTA4eFxu IiwNCj4gPj4gbUtjc0hhcmR3YXJlSW5mby5Jb0Jhc2VBZGRyZXNzLklvQWRkcmVzczMyKSk7DQo+ ID4+PiAtICAgIERFQlVHICgoREVCVUdfSU5GTywgIkRhdGEgaW4gQWRkcmVzcyAgICAgOiAweCUw OHhcbiIsDQo+ID4+IG1LY3NIYXJkd2FyZUluZm8uSW9EYXRhSW5BZGRyZXNzLklvQWRkcmVzczMy KSk7DQo+ID4+PiAtICAgIERFQlVHICgoREVCVUdfSU5GTywgIkRhdGEgb3V0IEFkZHJlc3MgICAg OiAweCUwOHhcbiIsDQo+ID4+IG1LY3NIYXJkd2FyZUluZm8uSW9EYXRhT3V0QWRkcmVzcy5Jb0Fk ZHJlc3MzMikpOw0KPiA+Pj4gLSAgICBERUJVRyAoKERFQlVHX0lORk8sICJDb21tYW5kIEFkZHJl c3MgICAgIDogMHglMDh4XG4iLA0KPiA+PiBtS2NzSGFyZHdhcmVJbmZvLklvQ29tbWFuZEFkZHJl c3MuSW9BZGRyZXNzMzIpKTsNCj4gPj4+IC0gICAgREVCVUcgKChERUJVR19JTkZPLCAiU3RhdHVz IEFkZHJlc3MgICAgICA6IDB4JTA4eFxuIiwNCj4gPj4gbUtjc0hhcmR3YXJlSW5mby5Jb1N0YXR1 c0FkZHJlc3MuSW9BZGRyZXNzMzIpKTsNCj4gPj4+ICsgICAgREVCVUcgKChERUJVR19NQU5BR0VB QklMSVRZX0lORk8sICJNZW1vcnkgTWFwIEkvT1xuIiwNCj4gPj4gX19GVU5DVElPTl9fKSk7DQo+ ID4+PiArICAgIERFQlVHICgoREVCVUdfTUFOQUdFQUJJTElUWV9JTkZPLCAiQmFzZSBNZW1vcnkg QWRkcmVzcyA6DQo+ID4+IDB4JTA4eFxuIiwgbUtjc0hhcmR3YXJlSW5mby5Jb0Jhc2VBZGRyZXNz LklvQWRkcmVzczMyKSk7DQo+ID4+PiArICAgIERFQlVHICgoREVCVUdfTUFOQUdFQUJJTElUWV9J TkZPLCAiRGF0YSBpbiBBZGRyZXNzICAgICA6DQo+ID4+IDB4JTA4eFxuIiwgbUtjc0hhcmR3YXJl SW5mby5Jb0RhdGFJbkFkZHJlc3MuSW9BZGRyZXNzMzIpKTsNCj4gPj4+ICsgICAgREVCVUcgKChE RUJVR19NQU5BR0VBQklMSVRZX0lORk8sICJEYXRhIG91dCBBZGRyZXNzICAgIDoNCj4gPj4gMHgl MDh4XG4iLCBtS2NzSGFyZHdhcmVJbmZvLklvRGF0YU91dEFkZHJlc3MuSW9BZGRyZXNzMzIpKTsN Cj4gPj4+ICsgICAgREVCVUcgKChERUJVR19NQU5BR0VBQklMSVRZX0lORk8sICJDb21tYW5kIEFk ZHJlc3MgICAgIDoNCj4gPj4gMHglMDh4XG4iLCBtS2NzSGFyZHdhcmVJbmZvLklvQ29tbWFuZEFk ZHJlc3MuSW9BZGRyZXNzMzIpKTsNCj4gPj4+ICsgICAgREVCVUcgKChERUJVR19NQU5BR0VBQklM SVRZX0lORk8sICJTdGF0dXMgQWRkcmVzcyAgICAgIDoNCj4gPj4gMHglMDh4XG4iLCBtS2NzSGFy ZHdhcmVJbmZvLklvU3RhdHVzQWRkcmVzcy5Jb0FkZHJlc3MzMikpOw0KPiA+Pj4gICAgICB9IGVs c2Ugew0KPiA+Pj4gLSAgICBERUJVRyAoKERFQlVHX0lORk8sICJJL08gTWFwIEkvT1xuIikpOw0K PiA+Pj4gLSAgICBERUJVRyAoKERFQlVHX0lORk8sICJCYXNlIEkvTyBwb3J0ICAgIDogMHglMDR4 XG4iLA0KPiA+PiBtS2NzSGFyZHdhcmVJbmZvLklvQmFzZUFkZHJlc3MuSW9BZGRyZXNzMTYpKTsN Cj4gPj4+IC0gICAgREVCVUcgKChERUJVR19JTkZPLCAiRGF0YSBpbiBJL08gcG9ydCA6IDB4JTA0 eFxuIiwNCj4gPj4gbUtjc0hhcmR3YXJlSW5mby5Jb0RhdGFJbkFkZHJlc3MuSW9BZGRyZXNzMTYp KTsNCj4gPj4+IC0gICAgREVCVUcgKChERUJVR19JTkZPLCAiRGF0YSBvdXQgSS9PIHBvcnQ6IDB4 JTA0eFxuIiwNCj4gPj4gbUtjc0hhcmR3YXJlSW5mby5Jb0RhdGFPdXRBZGRyZXNzLklvQWRkcmVz czE2KSk7DQo+ID4+PiAtICAgIERFQlVHICgoREVCVUdfSU5GTywgIkNvbW1hbmQgSS9PIHBvcnQg OiAweCUwNHhcbiIsDQo+ID4+IG1LY3NIYXJkd2FyZUluZm8uSW9Db21tYW5kQWRkcmVzcy5Jb0Fk ZHJlc3MxNikpOw0KPiA+Pj4gLSAgICBERUJVRyAoKERFQlVHX0lORk8sICJTdGF0dXMgSS9PIHBv cnQgIDogMHglMDR4XG4iLA0KPiA+PiBtS2NzSGFyZHdhcmVJbmZvLklvU3RhdHVzQWRkcmVzcy5J b0FkZHJlc3MxNikpOw0KPiA+Pj4gKyAgICBERUJVRyAoKERFQlVHX01BTkFHRUFCSUxJVFlfSU5G TywgIkkvTyBNYXAgSS9PXG4iKSk7DQo+ID4+PiArICAgIERFQlVHICgoREVCVUdfTUFOQUdFQUJJ TElUWV9JTkZPLCAiQmFzZSBJL08gcG9ydCAgICA6DQo+IDB4JTA0eFxuIiwNCj4gPj4gbUtjc0hh cmR3YXJlSW5mby5Jb0Jhc2VBZGRyZXNzLklvQWRkcmVzczE2KSk7DQo+ID4+PiArICAgIERFQlVH ICgoREVCVUdfTUFOQUdFQUJJTElUWV9JTkZPLCAiRGF0YSBpbiBJL08gcG9ydCA6DQo+ID4+PiAr IDB4JTA0eFxuIiwNCj4gPj4gbUtjc0hhcmR3YXJlSW5mby5Jb0RhdGFJbkFkZHJlc3MuSW9BZGRy ZXNzMTYpKTsNCj4gPj4+ICsgICAgREVCVUcgKChERUJVR19NQU5BR0VBQklMSVRZX0lORk8sICJE YXRhIG91dCBJL08gcG9ydDoNCj4gPj4gMHglMDR4XG4iLCBtS2NzSGFyZHdhcmVJbmZvLklvRGF0 YU91dEFkZHJlc3MuSW9BZGRyZXNzMTYpKTsNCj4gPj4+ICsgICAgREVCVUcgKChERUJVR19NQU5B R0VBQklMSVRZX0lORk8sICJDb21tYW5kIEkvTyBwb3J0IDoNCj4gPj4gMHglMDR4XG4iLCBtS2Nz SGFyZHdhcmVJbmZvLklvQ29tbWFuZEFkZHJlc3MuSW9BZGRyZXNzMTYpKTsNCj4gPj4+ICsgICAg REVCVUcgKChERUJVR19NQU5BR0VBQklMSVRZX0lORk8sICJTdGF0dXMgSS9PIHBvcnQgIDoNCj4g Pj4+ICsgMHglMDR4XG4iLCBtS2NzSGFyZHdhcmVJbmZvLklvU3RhdHVzQWRkcmVzcy5Jb0FkZHJl c3MxNikpOw0KPiA+Pj4gICAgICB9DQo+ID4+IGlmIHRob3NlIGNvZGUgaXMganVzdCBmb3IgZGVi dWdnaW5nLCB5b3Ugc2hvdWxkIHB1dCB0aGVtIGludG8NCj4gPj4gREVCVUdfQ09ERV9CRUdJTigp IGFuZCBERUJVR19DT0RFX0VORCgpDQo+ID4gREVCVUdfTUFOQUdFQUJJTElUWSBpcyBnb3QgYXBw cm92YWwgYW5kIHdlIGNhbiB1c2UgdGhhdCB0byBlbmFibGUgdGhlDQo+IHByaW50IGVycm9yIGxl dmVsIGZvciBNYW5hZ2VhYmlsaXR5IHN0dWZmLiBVc2UgREVCVUdfQ09ERV9CRUdJTiByZXF1aXJl cw0KPiB1c2VyIHRvIGVuYWJsZSBERUJVR19QUk9QRVJUWV9ERUJVR19DT0RFX0VOQUJMRUQgYWRk aXRpb25hbGx5LCBpdA0KPiBzYXZlcyBST00gc2l6ZSB0aG91Z2guDQo+ID4gSG93IGRvIHlvdSB0 aGluaz8gV2hpY2ggd2F5IGlzIGNvbnZlbmllbnQgdG8gdXNlcnMgYW5kIGFsc28gaGF2ZSBhIGdv b2QNCj4gY29kZSBzdHJ1Y3R1cmU/DQo+IEkgZG8gbm90IGJlbGlldmUgUk9NIHNpemUgaXMgYW4g aXNzdWUgb2YgdGhlIHN5c3RlbSB3aGljaCBjYW4gc3VwcG9ydCB0aG9zZQ0KPiBmZWF0dXJlcywg c28gbGV0J3Mga2VlcCB0aGVtDQpPaywgZ290IGl0Lg0KDQpUaGFua3MNCkFibmVyDQoNCg0KDQo+ ID4gVGhhbmtzDQo+ID4gQWJuZXINCj4gPg0KPiA+Pj4gICAgICByZXR1cm4gRUZJX1NVQ0NFU1M7 DQo+ID4+PiBAQCAtMjIxLDcgKzIyMSw3IEBAIEtjc1RyYW5zcG9ydFRyYW5zbWl0UmVjZWl2ZSAo DQo+ID4+PiAgICAgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7 DQo+ID4+PiAgICAgIE1BTkFHRUFCSUxJVFlfSVBNSV9UUkFOU1BPUlRfSEVBREVSICAqVHJhbnNt aXRIZWFkZXI7DQo+ID4+Pg0KPiA+Pj4gLSAgaWYgKFRyYW5zcG9ydFRva2VuID09IE5VTEwgfHwg VHJhbnNmZXJUb2tlbiA9PSBOVUxMKSB7DQo+ID4+PiArICBpZiAoKFRyYW5zcG9ydFRva2VuID09 IE5VTEwpIHx8IChUcmFuc2ZlclRva2VuID09IE5VTEwpKSB7DQo+ID4+PiAgICAgICAgREVCVUcg KChERUJVR19FUlJPUiwgIiVhOiBJbnZhbGlkIHRyYW5zcG9ydCB0b2tlbiBvciB0cmFuc2Zlcg0K PiA+PiB0b2tlbi5cbiIsIF9fRlVOQ1RJT05fXykpOw0KPiA+Pj4gICAgICAgIHJldHVybjsNCj4g Pj4+ICAgICAgfQ0KPiA+Pj4gQEAgLTI5OCw2ICsyOTgsNyBAQCBBY3F1aXJlVHJhbnNwb3J0U2Vz c2lvbiAoDQo+ID4+PiAgICAgICAgREVCVUcgKChERUJVR19FUlJPUiwgIiVhOiBGYWlsIHRvIGFs bG9jYXRlIG1lbW9yeSBmb3INCj4gPj4gTUFOQUdFQUJJTElUWV9UUkFOU1BPUlRfS0NTXG4iLCBf X0ZVTkNUSU9OX18pKTsNCj4gPj4+ICAgICAgICByZXR1cm4gRUZJX09VVF9PRl9SRVNPVVJDRVM7 DQo+ID4+PiAgICAgIH0NCj4gPj4+ICsNCj4gPj4+ICAgICAgS2NzVHJhbnNwb3J0VG9rZW4tPlRv a2VuLlRyYW5zcG9ydCA9IEFsbG9jYXRlWmVyb1Bvb2wgKHNpemVvZg0KPiA+PiAoTUFOQUdFQUJJ TElUWV9UUkFOU1BPUlQpKTsNCj4gPj4+ICAgICAgaWYgKEtjc1RyYW5zcG9ydFRva2VuLT5Ub2tl bi5UcmFuc3BvcnQgPT0gTlVMTCkgew0KPiA+Pj4gICAgICAgIEZyZWVQb29sIChLY3NUcmFuc3Bv cnRUb2tlbik7IEBAIC0zMjksMjEgKzMzMCwyOSBAQA0KPiA+Pj4gQWNxdWlyZVRyYW5zcG9ydFNl c3Npb24gKA0KPiA+Pj4gICAgfQ0KPiA+Pj4NCj4gPj4+ICAgIC8qKg0KPiA+Pj4gLSAgVGhpcyBm dW5jdGlvbiByZXR1cm5zIHRoZSB0cmFuc3BvcnQgY2FwYWJpbGl0aWVzLg0KPiA+Pj4gLQ0KPiA+ Pj4gLSAgQHBhcmFtIFtvdXRdICBUcmFuc3BvcnRGZWF0dXJlICAgICAgICBQb2ludGVyIHRvIHJl Y2VpdmUgdHJhbnNwb3J0DQo+ID4+IGNhcGFiaWxpdGllcy4NCj4gPj4+IC0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSBkZWZpbml0aW9ucyBvZg0KPiA+Pj4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQU5BR0VBQklMSVRZX1RS QU5TUE9SVF9DQVBBQklMSVRZLg0KPiA+Pj4gLQ0KPiA+Pj4gKyAgVGhpcyBmdW5jdGlvbiByZXR1 cm5zIHRoZSB0cmFuc3BvcnQgY2FwYWJpbGl0aWVzIGFjY29yZGluZyB0bw0KPiA+Pj4gKyB0aGUg bWFuYWdlYWJpbGl0eSBwcm90b2NvbC4NCj4gPj4+ICsNCj4gPj4+ICsgIEBwYXJhbSBbaW5dICAg VHJhbnNwb3J0VG9rZW4gICAgICAgICAgICAgVHJhbnNwb3J0IHRva2VuIGFjcXVpcmVkIGZyb20N Cj4gPj4gbWFuYWdlYWJpbGl0eQ0KPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB0cmFuc3BvcnQgbGlicmFyeS4NCj4gPj4+ICsgIEBwYXJhbSBbb3V0XSAg VHJhbnNwb3J0RmVhdHVyZSAgICAgICAgICAgUG9pbnRlciB0byByZWNlaXZlIHRyYW5zcG9ydA0K PiA+PiBjYXBhYmlsaXRpZXMuDQo+ID4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFNlZSB0aGUgZGVmaW5pdGlvbnMgb2YNCj4gPj4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUFOQUdFQUJJTElUWV9UUkFOU1BPUlRfQ0FQ QUJJTElUWS4NCj4gPj4+ICsgIEByZXR2YWwgICAgICAgRUZJX1NVQ0NFU1MgICAgICAgICAgICAg ICAgVHJhbnNwb3J0Q2FwYWJpbGl0eSBpcyByZXR1cm5lZA0KPiA+PiBzdWNjZXNzZnVsbHkuDQo+ ID4+PiArICBAcmV0dmFsICAgICAgIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgICAgIFRyYW5zcG9y dFRva2VuIGlzIG5vdCBhIHZhbGlkDQo+ID4+IHRva2VuLg0KPiA+Pj4gICAgKiovDQo+ID4+PiAt Vk9JRA0KPiA+Pj4gK0VGSV9TVEFUVVMNCj4gPj4+ICAgIEdldFRyYW5zcG9ydENhcGFiaWxpdHkg KA0KPiA+Pj4gKyAgSU4gTUFOQUdFQUJJTElUWV9UUkFOU1BPUlRfVE9LRU4gICAgICAgICpUcmFu c3BvcnRUb2tlbiwNCj4gPj4+ICAgICAgT1VUIE1BTkFHRUFCSUxJVFlfVFJBTlNQT1JUX0NBUEFC SUxJVFkgICpUcmFuc3BvcnRDYXBhYmlsaXR5DQo+ID4+PiAgICAgICkNCj4gPj4+ICAgIHsNCj4g Pj4+IC0gIGlmIChUcmFuc3BvcnRDYXBhYmlsaXR5ICE9IE5VTEwpIHsNCj4gPj4+IC0gICAgKlRy YW5zcG9ydENhcGFiaWxpdHkgPSAwOw0KPiA+Pj4gKyAgaWYgKChUcmFuc3BvcnRUb2tlbiA9PSBO VUxMKSB8fCAoVHJhbnNwb3J0Q2FwYWJpbGl0eSA9PSBOVUxMKSkgew0KPiA+Pj4gKyAgICByZXR1 cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiA+Pj4gICAgICB9DQo+ID4+PiArDQo+ID4+PiAr ICAqVHJhbnNwb3J0Q2FwYWJpbGl0eSA9IDA7DQo+ID4+PiArICByZXR1cm4gRUZJX1NVQ0NFU1M7 DQo+ID4+PiAgICB9DQo+ID4+Pg0KPiA+Pj4gICAgLyoqDQo+ID4+PiBkaWZmIC0tZ2l0DQo+ID4+ PiBhL0ZlYXR1cmVzL01hbmFnZWFiaWxpdHlQa2cvVW5pdmVyc2FsL0lwbWlQcm90b2NvbC9EeGUv SXBtaVByb3RvY29sLg0KPiA+Pj4gYw0KPiA+Pj4gYi9GZWF0dXJlcy9NYW5hZ2VhYmlsaXR5UGtn L1VuaXZlcnNhbC9JcG1pUHJvdG9jb2wvRHhlL0lwbWlQcm90b2NvbC4NCj4gPj4+IGMNCj4gPj4+ IGluZGV4IDA1MTc1ZWU0NDguLjUxZDVjN2YwYmEgMTAwNjQ0DQo+ID4+PiAtLS0NCj4gPj4+IGEv RmVhdHVyZXMvTWFuYWdlYWJpbGl0eVBrZy9Vbml2ZXJzYWwvSXBtaVByb3RvY29sL0R4ZS9JcG1p UHJvdG9jb2wuDQo+ID4+PiBjDQo+ID4+PiArKysNCj4gPj4gYi9GZWF0dXJlcy9NYW5hZ2VhYmls aXR5UGtnL1VuaXZlcnNhbC9JcG1pUHJvdG9jb2wvRHhlL0lwbWlQcm90b2NvDQo+ID4+PiArKysg bC5jDQo+ID4+PiBAQCAtMTcsOSArMTcsOSBAQA0KPiA+Pj4NCj4gPj4+ICAgICNpbmNsdWRlICJJ cG1pUHJvdG9jb2xDb21tb24uaCINCj4gPj4+DQo+ID4+PiAtTUFOQUdFQUJJTElUWV9UUkFOU1BP UlRfVE9LRU4gICptVHJhbnNwb3J0VG9rZW4gPSBOVUxMOw0KPiA+Pj4gLUNIQVIxNiAgICAgICAg ICAgICAgICAgICAgICAgICAqbVRyYW5zcG9ydE5hbWU7DQo+ID4+PiAtDQo+ID4+PiArTUFOQUdF QUJJTElUWV9UUkFOU1BPUlRfVE9LRU4gICAgICAgICAgICAgICAgICptVHJhbnNwb3J0VG9rZW4g PQ0KPiBOVUxMOw0KPiA+Pj4gK0NIQVIxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAqbVRyYW5zcG9ydE5hbWU7DQo+ID4+PiArVUlOVDMyICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFRyYW5zcG9ydE1heGltdW1QYXlsb2FkOw0KPiA+Pj4gICAg TUFOQUdFQUJJTElUWV9UUkFOU1BPUlRfSEFSRFdBUkVfSU5GT1JNQVRJT04NCj4gPj4gbUhhcmR3 YXJlSW5mb3JtYXRpb247DQo+ID4+PiAgICAvKioNCj4gPj4+IEBAIC05Miw4ICs5Miw2IEBAIER4 ZUlwbWlFbnRyeSAoDQo+ID4+PiAgICAgIE1BTkFHRUFCSUxJVFlfVFJBTlNQT1JUX0NBUEFCSUxJ VFkgICAgICAgICBUcmFuc3BvcnRDYXBhYmlsaXR5Ow0KPiA+Pj4gICAgICBNQU5BR0VBQklMSVRZ X1RSQU5TUE9SVF9BRERJVElPTkFMX1NUQVRVUw0KPiA+Pj4gVHJhbnNwb3J0QWRkaXRpb25hbFN0 YXR1czsNCj4gPj4+DQo+ID4+PiAtICBHZXRUcmFuc3BvcnRDYXBhYmlsaXR5ICgmVHJhbnNwb3J0 Q2FwYWJpbGl0eSk7DQo+ID4+PiAtDQo+ID4+PiAgICAgIFN0YXR1cyA9IEhlbHBlckFjcXVpcmVN YW5hZ2VhYmlsaXR5VHJhbnNwb3J0ICgNCj4gPj4+ICAgICAgICAgICAgICAgICAmZ01hbmFnZWFi aWxpdHlQcm90b2NvbElwbWlHdWlkLA0KPiA+Pj4gICAgICAgICAgICAgICAgICZtVHJhbnNwb3J0 VG9rZW4NCj4gPj4+IEBAIC0xMDMsOCArMTAxLDIyIEBAIER4ZUlwbWlFbnRyeSAoDQo+ID4+PiAg ICAgICAgcmV0dXJuIFN0YXR1czsNCj4gPj4+ICAgICAgfQ0KPiA+Pj4NCj4gPj4+ICsgIFN0YXR1 cyA9IEdldFRyYW5zcG9ydENhcGFiaWxpdHkgKG1UcmFuc3BvcnRUb2tlbiwNCj4gPj4+ICsgJlRy YW5zcG9ydENhcGFiaWxpdHkpOyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+Pj4gKyAg ICBERUJVRyAoKERFQlVHX0VSUk9SLCAiJWE6IEZhaWxlZCB0bw0KPiA+Pj4gKyBHZXRUcmFuc3Bv cnRDYXBhYmlsaXR5KCkuXG4iLA0KPiA+PiBfX0ZVTkNUSU9OX18pKTsNCj4gPj4+ICsgICAgcmV0 dXJuIFN0YXR1czsNCj4gPj4+ICsgIH0NCj4gPj4+ICsNCj4gPj4+ICsgIFRyYW5zcG9ydE1heGlt dW1QYXlsb2FkID0NCj4gPj4+ICsgTUFOQUdFQUJJTElUWV9UUkFOU1BPUlRfUEFZTE9BRF9TSVpF X0ZST01fQ0FQQUJJTElUWQ0KPiA+PiAoVHJhbnNwb3J0Q2FwYWJpbGl0eSk7ICBpZiAoVHJhbnNw b3J0TWF4aW11bVBheWxvYWQgPT0gKDEgPDwNCj4gPj4NCj4gTUFOQUdFQUJJTElUWV9UUkFOU1BP UlRfQ0FQQUJJTElUWV9NQVhJTVVNX1BBWUxPQURfTk9UX0FWDQo+ID4+IEFJTEFCTEUpKSB7DQo+ ID4+PiArICAgIERFQlVHICgoREVCVUdfTUFOQUdFQUJJTElUWV9JTkZPLCAiJWE6IFRyYW5zcG9y dCBpbnRlcmZhY2UNCj4gPj4+ICsgbWF4aW11bSBwYXlsb2FkIGlzIHVuZGVmaW5lZC5cbiIsIF9f RlVOQ1RJT05fXykpOyAgfSBlbHNlIHsNCj4gPj4+ICsgICAgVHJhbnNwb3J0TWF4aW11bVBheWxv YWQgLT0gMTsNCj4gPj4+ICsgICAgREVCVUcgKChERUJVR19NQU5BR0VBQklMSVRZX0lORk8sICIl YTogVHJhbnNwb3J0IGludGVyZmFjZQ0KPiBmb3INCj4gPj4+ICsgSVBNSSBwcm90b2NvbCBoYXMg bWF4aW11bSBwYXlsb2FkICV4LlxuIiwgX19GVU5DVElPTl9fLA0KPiA+Pj4gKyBUcmFuc3BvcnRN YXhpbXVtUGF5bG9hZCkpOyAgfQ0KPiA+Pj4gKw0KPiA+Pj4gICAgICBtVHJhbnNwb3J0TmFtZSA9 IEhlbHBlck1hbmFnZWFiaWxpdHlTcGVjTmFtZQ0KPiA+Pj4gKG1UcmFuc3BvcnRUb2tlbi0+VHJh bnNwb3J0LT5NYW5hZ2VhYmlsaXR5VHJhbnNwb3J0U3BlY2lmaWNhdGlvbik7DQo+ID4+PiAtICBE RUJVRyAoKERFQlVHX0lORk8sICIlYTogSVBNSSBwcm90b2NvbCBvdmVyICVzLlxuIiwNCj4gX19G VU5DVElPTl9fLA0KPiA+Pj4gbVRyYW5zcG9ydE5hbWUpKTsNCj4gPj4+ICsgIERFQlVHICgoREVC VUdfTUFOQUdFQUJJTElUWV9JTkZPLCAiJWE6IElQTUkgcHJvdG9jb2wgb3Zlcg0KPiA+PiAlcy5c biIsDQo+ID4+PiArIF9fRlVOQ1RJT05fXywgbVRyYW5zcG9ydE5hbWUpKTsNCj4gPj4+DQo+ID4+ PiAgICAgIC8vDQo+ID4+PiAgICAgIC8vIFNldHVwIGhhcmR3YXJlIGluZm9ybWF0aW9uIGFjY29y ZGluZyB0byB0aGUgdHJhbnNwb3J0IGludGVyZmFjZS4NCj4gPj4+IGRpZmYgLS1naXQNCj4gPj4+ IGEvRmVhdHVyZXMvTWFuYWdlYWJpbGl0eVBrZy9Vbml2ZXJzYWwvSXBtaVByb3RvY29sL1BlaS9J cG1pUHBpLmMNCj4gPj4+IGIvRmVhdHVyZXMvTWFuYWdlYWJpbGl0eVBrZy9Vbml2ZXJzYWwvSXBt aVByb3RvY29sL1BlaS9JcG1pUHBpLmMNCj4gPj4+IGluZGV4IGY4MzljZDczODcuLjhiZjFlNzk0 ZjAgMTAwNjQ0DQo+ID4+PiAtLS0gYS9GZWF0dXJlcy9NYW5hZ2VhYmlsaXR5UGtnL1VuaXZlcnNh bC9JcG1pUHJvdG9jb2wvUGVpL0lwbWlQcGkuYw0KPiA+Pj4gKysrIGIvRmVhdHVyZXMvTWFuYWdl YWJpbGl0eVBrZy9Vbml2ZXJzYWwvSXBtaVByb3RvY29sL1BlaS9JcG1pUHBpLmMNCj4gPj4+IEBA IC01MSwxOSArNTEsMTkgQEAgUGVpSXBtaVN1Ym1pdENvbW1hbmQgKA0KPiA+Pj4gICAgICBJTiBP VVQgVUlOVDMyICAgICAgICAqUmVzcG9uc2VEYXRhU2l6ZQ0KPiA+Pj4gICAgICApDQo+ID4+PiAg ICB7DQo+ID4+PiAtICBFRklfU1RBVFVTICAgICAgICAgICAgU3RhdHVzOw0KPiA+Pj4gLSAgUEVJ X0lQTUlfUFBJX0lOVEVSTkFMICpQZWlJcG1pUHBpaW50ZXJuYWw7DQo+ID4+PiAtDQo+ID4+PiAt ICBQZWlJcG1pUHBpaW50ZXJuYWwgPQ0KPiA+Pj4gTUFOQUdFQUJJTElUWV9JUE1JX1BQSV9JTlRF Uk5BTF9GUk9NX0xJTksoVGhpcyk7DQo+ID4+PiAtICBTdGF0dXMgPSBDb21tb25JcG1pU3VibWl0 Q29tbWFuZCAoDQo+ID4+PiAtICAgICAgICAgICAgIFBlaUlwbWlQcGlpbnRlcm5hbC0+VHJhbnNw b3J0VG9rZW4sDQo+ID4+PiAtICAgICAgICAgICAgIE5ldEZ1bmN0aW9uLA0KPiA+Pj4gLSAgICAg ICAgICAgICBDb21tYW5kLA0KPiA+Pj4gLSAgICAgICAgICAgICBSZXF1ZXN0RGF0YSwNCj4gPj4+ IC0gICAgICAgICAgICAgUmVxdWVzdERhdGFTaXplLA0KPiA+Pj4gLSAgICAgICAgICAgICBSZXNw b25zZURhdGEsDQo+ID4+PiAtICAgICAgICAgICAgIFJlc3BvbnNlRGF0YVNpemUNCj4gPj4+IC0g ICAgICAgICAgICAgKTsNCj4gPj4+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgU3RhdHVzOw0K PiA+Pj4gKyAgUEVJX0lQTUlfUFBJX0lOVEVSTkFMICAqUGVpSXBtaVBwaWludGVybmFsOw0KPiA+ Pj4gKw0KPiA+Pj4gKyAgUGVpSXBtaVBwaWludGVybmFsID0NCj4gTUFOQUdFQUJJTElUWV9JUE1J X1BQSV9JTlRFUk5BTF9GUk9NX0xJTksNCj4gPj4gKFRoaXMpOw0KPiA+Pj4gKyAgU3RhdHVzICAg ICAgICAgICAgID0gQ29tbW9uSXBtaVN1Ym1pdENvbW1hbmQgKA0KPiA+Pj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICBQZWlJcG1pUHBpaW50ZXJuYWwtPlRyYW5zcG9ydFRva2VuLA0KPiA+Pj4g KyAgICAgICAgICAgICAgICAgICAgICAgICBOZXRGdW5jdGlvbiwNCj4gPj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgQ29tbWFuZCwNCj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg UmVxdWVzdERhdGEsDQo+ID4+PiArICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVlc3REYXRh U2l6ZSwNCj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgUmVzcG9uc2VEYXRhLA0KPiA+ Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICBSZXNwb25zZURhdGFTaXplDQo+ID4+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICk7DQo+ID4+PiAgICAgIHJldHVybiBTdGF0dXM7DQo+ID4+ PiAgICB9DQo+ID4+Pg0KPiA+Pj4gQEAgLTg3LDI5ICs4NywyOCBAQCBQZWlJcG1pRW50cnkgKA0K PiA+Pj4gICAgICBDSEFSMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KlRyYW5zcG9ydE5hbWU7DQo+ID4+PiAgICAgIFBFSV9JUE1JX1BQSV9JTlRFUk5BTCAgICAgICAg ICAgICAgICAgICAgICAgICAqUGVpSXBtaVBwaWludGVybmFsOw0KPiA+Pj4gICAgICBFRklfUEVJ X1BQSV9ERVNDUklQVE9SICAgICAgICAgICAgICAgICAgICAgICAgKlBwaURlc2NyaXB0b3I7DQo+ ID4+PiAtICBNQU5BR0VBQklMSVRZX1RSQU5TUE9SVF9DQVBBQklMSVRZICAgICAgICAgICAgVHJh bnNwb3J0Q2FwYWJpbGl0eTsNCj4gPj4+ICAgICAgTUFOQUdFQUJJTElUWV9UUkFOU1BPUlRfQURE SVRJT05BTF9TVEFUVVMNCj4gPj4gVHJhbnNwb3J0QWRkaXRpb25hbFN0YXR1czsNCj4gPj4+ICAg ICAgTUFOQUdFQUJJTElUWV9UUkFOU1BPUlRfSEFSRFdBUkVfSU5GT1JNQVRJT04NCj4gPj4gSGFy ZHdhcmVJbmZvcm1hdGlvbjsNCj4gPj4+IC0gIFBlaUlwbWlQcGlpbnRlcm5hbCA9IChQRUlfSVBN SV9QUElfSU5URVJOQUwgKilBbGxvY2F0ZVplcm9Qb29sDQo+ID4+PiAoc2l6ZW9mKFBFSV9JUE1J X1BQSV9JTlRFUk5BTCkpOw0KPiA+Pj4gKyAgUGVpSXBtaVBwaWludGVybmFsID0gKFBFSV9JUE1J X1BQSV9JTlRFUk5BTCAqKUFsbG9jYXRlWmVyb1Bvb2wNCj4gPj4+ICsgKHNpemVvZiAoUEVJX0lQ TUlfUFBJX0lOVEVSTkFMKSk7DQo+ID4+PiAgICAgIGlmIChQZWlJcG1pUHBpaW50ZXJuYWwgPT0g TlVMTCkgew0KPiA+Pj4gICAgICAgIERFQlVHICgoREVCVUdfRVJST1IsICIlYTogTm90IGVub3Vn aCBtZW1vcnkgZm9yDQo+ID4+IFBFSV9JUE1JX1BQSV9JTlRFUk5BTC5cbiIsIF9fRlVOQ1RJT05f XykpOw0KPiA+Pj4gICAgICAgIHJldHVybiBFRklfT1VUX09GX1JFU09VUkNFUzsNCj4gPj4+ICAg ICAgfQ0KPiA+Pj4gLSAgUHBpRGVzY3JpcHRvciA9IChFRklfUEVJX1BQSV9ERVNDUklQVE9SICop QWxsb2NhdGVaZXJvUG9vbA0KPiA+Pj4gKHNpemVvZihFRklfUEVJX1BQSV9ERVNDUklQVE9SKSk7 DQo+ID4+PiArDQo+ID4+PiArICBQcGlEZXNjcmlwdG9yID0gKEVGSV9QRUlfUFBJX0RFU0NSSVBU T1IgKilBbGxvY2F0ZVplcm9Qb29sDQo+ID4+PiArIChzaXplb2YgKEVGSV9QRUlfUFBJX0RFU0NS SVBUT1IpKTsNCj4gPj4+ICAgICAgaWYgKFBwaURlc2NyaXB0b3IgPT0gTlVMTCkgew0KPiA+Pj4g ICAgICAgIERFQlVHICgoREVCVUdfRVJST1IsICIlYTogTm90IGVub3VnaCBtZW1vcnkgZm9yDQo+ ID4+IEVGSV9QRUlfUFBJX0RFU0NSSVBUT1IuXG4iLCBfX0ZVTkNUSU9OX18pKTsNCj4gPj4+ICAg ICAgICByZXR1cm4gRUZJX09VVF9PRl9SRVNPVVJDRVM7DQo+ID4+PiAgICAgIH0NCj4gPj4+DQo+ ID4+PiAtICBQZWlJcG1pUHBpaW50ZXJuYWwtPlNpZ25hdHVyZSA9DQo+ID4+PiBNQU5BR0VBQklM SVRZX0lQTUlfUFBJX0lOVEVSTkFMX1NJR05BVFVSRTsNCj4gPj4+ICsgIFBlaUlwbWlQcGlpbnRl cm5hbC0+U2lnbmF0dXJlICAgICAgICAgICAgICAgICAgICA9DQo+ID4+IE1BTkFHRUFCSUxJVFlf SVBNSV9QUElfSU5URVJOQUxfU0lHTkFUVVJFOw0KPiA+Pj4gICAgICBQZWlJcG1pUHBpaW50ZXJu YWwtPlBlaUlwbWlQcGkuSXBtaVN1Ym1pdENvbW1hbmQgPQ0KPiA+Pj4gUGVpSXBtaVN1Ym1pdENv bW1hbmQ7DQo+ID4+Pg0KPiA+Pj4gICAgICBQcGlEZXNjcmlwdG9yLT5GbGFncyA9IEVGSV9QRUlf UFBJX0RFU0NSSVBUT1JfUFBJIHwNCj4gPj4gRUZJX1BFSV9QUElfREVTQ1JJUFRPUl9URVJNSU5B VEVfTElTVDsNCj4gPj4+ICAgICAgUHBpRGVzY3JpcHRvci0+R3VpZCAgPSAmZ1BlaUlwbWlQcGlH dWlkOw0KPiA+Pj4gICAgICBQcGlEZXNjcmlwdG9yLT5QcGkgICA9ICZQZWlJcG1pUHBpaW50ZXJu YWwtPlBlaUlwbWlQcGk7DQo+ID4+Pg0KPiA+Pj4gLSAgR2V0VHJhbnNwb3J0Q2FwYWJpbGl0eSAo JlRyYW5zcG9ydENhcGFiaWxpdHkpOw0KPiA+Pj4gICAgICBTdGF0dXMgPSBIZWxwZXJBY3F1aXJl TWFuYWdlYWJpbGl0eVRyYW5zcG9ydCAoDQo+ID4+PiAgICAgICAgICAgICAgICAgJmdNYW5hZ2Vh YmlsaXR5UHJvdG9jb2xJcG1pR3VpZCwNCj4gPj4+ICAgICAgICAgICAgICAgICAmUGVpSXBtaVBw aWludGVybmFsLT5UcmFuc3BvcnRUb2tlbg0KPiA+Pj4gQEAgLTExOSw4ICsxMTgsMjIgQEAgUGVp SXBtaUVudHJ5ICgNCj4gPj4+ICAgICAgICByZXR1cm4gU3RhdHVzOw0KPiA+Pj4gICAgICB9DQo+ ID4+Pg0KPiA+Pj4gKyAgU3RhdHVzID0gR2V0VHJhbnNwb3J0Q2FwYWJpbGl0eQ0KPiA+Pj4gKyAo UGVpSXBtaVBwaWludGVybmFsLT5UcmFuc3BvcnRUb2tlbiwNCj4gPj4+ICsgJlBlaUlwbWlQcGlp bnRlcm5hbC0+VHJhbnNwb3J0Q2FwYWJpbGl0eSk7DQo+ID4+PiArICBpZiAoRUZJX0VSUk9SIChT dGF0dXMpKSB7DQo+ID4+PiArICAgIERFQlVHICgoREVCVUdfRVJST1IsICIlYTogRmFpbGVkIHRv DQo+ID4+PiArIEdldFRyYW5zcG9ydENhcGFiaWxpdHkoKS5cbiIsDQo+ID4+IF9fRlVOQ1RJT05f XykpOw0KPiA+Pj4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiA+Pj4gKyAgfQ0KPiA+Pj4gKw0KPiA+ Pj4gKyAgUGVpSXBtaVBwaWludGVybmFsLT5UcmFuc3BvcnRNYXhpbXVtUGF5bG9hZCA9DQo+ID4+ PiArIE1BTkFHRUFCSUxJVFlfVFJBTlNQT1JUX1BBWUxPQURfU0laRV9GUk9NX0NBUEFCSUxJVFkN Cj4gPj4+ICsgKFBlaUlwbWlQcGlpbnRlcm5hbC0+VHJhbnNwb3J0Q2FwYWJpbGl0eSk7DQo+ID4+ PiArICBpZiAoUGVpSXBtaVBwaWludGVybmFsLT5UcmFuc3BvcnRNYXhpbXVtUGF5bG9hZCAgPT0g KDEgPDwNCj4gPj4NCj4gTUFOQUdFQUJJTElUWV9UUkFOU1BPUlRfQ0FQQUJJTElUWV9NQVhJTVVN X1BBWUxPQURfTk9UX0FWDQo+ID4+IEFJTEFCTEUpKSB7DQo+ID4+PiArICAgIERFQlVHICgoREVC VUdfTUFOQUdFQUJJTElUWV9JTkZPLCAiJWE6IFRyYW5zcG9ydCBpbnRlcmZhY2UNCj4gPj4+ICsg bWF4aW11bSBwYXlsb2FkIGlzIHVuZGVmaW5lZC5cbiIsIF9fRlVOQ1RJT05fXykpOyAgfSBlbHNl IHsNCj4gPj4+ICsgICAgUGVpSXBtaVBwaWludGVybmFsLT5UcmFuc3BvcnRNYXhpbXVtUGF5bG9h ZCAtPSAxOw0KPiA+Pj4gKyAgICBERUJVRyAoKERFQlVHX01BTkFHRUFCSUxJVFlfSU5GTywgIiVh OiBUcmFuc3BvcnQgaW50ZXJmYWNlDQo+IGZvcg0KPiA+Pj4gKyBJUE1JIHByb3RvY29sIGhhcyBt YXhpbXVtIHBheWxvYWQgMHgleC5cbiIsIF9fRlVOQ1RJT05fXywNCj4gPj4+ICsgUGVpSXBtaVBw aWludGVybmFsLT5UcmFuc3BvcnRNYXhpbXVtUGF5bG9hZCkpOw0KPiA+Pj4gKyAgfQ0KPiA+Pj4g Kw0KPiA+Pj4gICAgICBUcmFuc3BvcnROYW1lID0gSGVscGVyTWFuYWdlYWJpbGl0eVNwZWNOYW1l DQo+ID4+PiAoUGVpSXBtaVBwaWludGVybmFsLT5UcmFuc3BvcnRUb2tlbi0+VHJhbnNwb3J0LQ0K PiA+TWFuYWdlYWJpbGl0eVRyYW5zcG8NCj4gPj4+IHJ0DQo+ID4+PiBTcGVjaWZpY2F0aW9uKTsN Cj4gPj4+IC0gIERFQlVHICgoREVCVUdfSU5GTywgIiVhOiBJUE1JIHByb3RvY29sIG92ZXIgJXMu XG4iLA0KPiBfX0ZVTkNUSU9OX18sDQo+ID4+PiBUcmFuc3BvcnROYW1lKSk7DQo+ID4+PiArICBE RUJVRyAoKERFQlVHX01BTkFHRUFCSUxJVFlfSU5GTywgIiVhOiBJUE1JIHByb3RvY29sIG92ZXIN Cj4gPj4gJXMuXG4iLA0KPiA+Pj4gKyBfX0ZVTkNUSU9OX18sIFRyYW5zcG9ydE5hbWUpKTsNCj4g Pj4+DQo+ID4+PiAgICAgIC8vDQo+ID4+PiAgICAgIC8vIFNldHVwIGhhcmR3YXJlIGluZm9ybWF0 aW9uIGFjY29yZGluZyB0byB0aGUgdHJhbnNwb3J0IGludGVyZmFjZS4NCj4gPj4+IGRpZmYgLS1n aXQNCj4gPj4+DQo+IGEvRmVhdHVyZXMvTWFuYWdlYWJpbGl0eVBrZy9Vbml2ZXJzYWwvSXBtaVBy b3RvY29sL1NtbS9JcG1pUHJvdG9jb2wuDQo+ID4+PiBjDQo+ID4+Pg0KPiA+Pg0KPiBiL0ZlYXR1 cmVzL01hbmFnZWFiaWxpdHlQa2cvVW5pdmVyc2FsL0lwbWlQcm90b2NvbC9TbW0vSXBtaVByb3Rv Y29sLmMNCj4gPj4+IGluZGV4IDg3YTU0MzZiZGYuLmU0Y2QxNjZiN2EgMTAwNjQ0DQo+ID4+PiAt LS0NCj4gPj4+DQo+IGEvRmVhdHVyZXMvTWFuYWdlYWJpbGl0eVBrZy9Vbml2ZXJzYWwvSXBtaVBy b3RvY29sL1NtbS9JcG1pUHJvdG9jb2wuDQo+ID4+PiBjDQo+ID4+PiArKysNCj4gPj4gYi9GZWF0 dXJlcy9NYW5hZ2VhYmlsaXR5UGtnL1VuaXZlcnNhbC9JcG1pUHJvdG9jb2wvU21tL0lwbWlQcm90 b2NvDQo+ID4+PiArKysgbC5jDQo+ID4+PiBAQCAtMTgsOSArMTgsOSBAQA0KPiA+Pj4NCj4gPj4+ ICAgICNpbmNsdWRlICJJcG1pUHJvdG9jb2xDb21tb24uaCINCj4gPj4+DQo+ID4+PiAtTUFOQUdF QUJJTElUWV9UUkFOU1BPUlRfVE9LRU4gICptVHJhbnNwb3J0VG9rZW4gPSBOVUxMOw0KPiA+Pj4g LUNIQVIxNiAgICAgICAgICAgICAgICAgICAgICAgICAqbVRyYW5zcG9ydE5hbWU7DQo+ID4+PiAt DQo+ID4+PiArTUFOQUdFQUJJTElUWV9UUkFOU1BPUlRfVE9LRU4gICAgICAgICAgICAgICAgICpt VHJhbnNwb3J0VG9rZW4gPQ0KPiBOVUxMOw0KPiA+Pj4gK0NIQVIxNiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAqbVRyYW5zcG9ydE5hbWU7DQo+ID4+PiArVUlOVDMyICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zcG9ydE1heGltdW1QYXls b2FkOw0KPiA+Pj4gICAgTUFOQUdFQUJJTElUWV9UUkFOU1BPUlRfSEFSRFdBUkVfSU5GT1JNQVRJ T04NCj4gPj4gbUhhcmR3YXJlSW5mb3JtYXRpb247DQo+ID4+PiAgICAvKioNCj4gPj4+IEBAIC05 Myw4ICs5Myw2IEBAIFNtbUlwbWlFbnRyeSAoDQo+ID4+PiAgICAgIE1BTkFHRUFCSUxJVFlfVFJB TlNQT1JUX0NBUEFCSUxJVFkgICAgICAgICBUcmFuc3BvcnRDYXBhYmlsaXR5Ow0KPiA+Pj4gICAg ICBNQU5BR0VBQklMSVRZX1RSQU5TUE9SVF9BRERJVElPTkFMX1NUQVRVUw0KPiA+Pj4gVHJhbnNw b3J0QWRkaXRpb25hbFN0YXR1czsNCj4gPj4+DQo+ID4+PiAtICBHZXRUcmFuc3BvcnRDYXBhYmls aXR5ICgmVHJhbnNwb3J0Q2FwYWJpbGl0eSk7DQo+ID4+PiAtDQo+ID4+PiAgICAgIFN0YXR1cyA9 IEhlbHBlckFjcXVpcmVNYW5hZ2VhYmlsaXR5VHJhbnNwb3J0ICgNCj4gPj4+ICAgICAgICAgICAg ICAgICAmZ01hbmFnZWFiaWxpdHlQcm90b2NvbElwbWlHdWlkLA0KPiA+Pj4gICAgICAgICAgICAg ICAgICZtVHJhbnNwb3J0VG9rZW4NCj4gPj4+IEBAIC0xMDQsOCArMTAyLDIyIEBAIFNtbUlwbWlF bnRyeSAoDQo+ID4+PiAgICAgICAgcmV0dXJuIFN0YXR1czsNCj4gPj4+ICAgICAgfQ0KPiA+Pj4N Cj4gPj4+ICsgIFN0YXR1cyA9IEdldFRyYW5zcG9ydENhcGFiaWxpdHkgKG1UcmFuc3BvcnRUb2tl biwNCj4gPj4+ICsgJlRyYW5zcG9ydENhcGFiaWxpdHkpOyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVz KSkgew0KPiA+Pj4gKyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiJWE6IEZhaWxlZCB0bw0KPiA+ Pj4gKyBHZXRUcmFuc3BvcnRDYXBhYmlsaXR5KCkuXG4iLA0KPiA+PiBfX0ZVTkNUSU9OX18pKTsN Cj4gPj4+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gPj4+ICsgIH0NCj4gPj4+ICsNCj4gPj4+ICsg IFRyYW5zcG9ydE1heGltdW1QYXlsb2FkID0NCj4gPj4+ICsgTUFOQUdFQUJJTElUWV9UUkFOU1BP UlRfUEFZTE9BRF9TSVpFX0ZST01fQ0FQQUJJTElUWQ0KPiA+PiAoVHJhbnNwb3J0Q2FwYWJpbGl0 eSk7ICBpZiAoVHJhbnNwb3J0TWF4aW11bVBheWxvYWQgPT0gKDEgPDwNCj4gPj4NCj4gTUFOQUdF QUJJTElUWV9UUkFOU1BPUlRfQ0FQQUJJTElUWV9NQVhJTVVNX1BBWUxPQURfTk9UX0FWDQo+ID4+ IEFJTEFCTEUpKSB7DQo+ID4+PiArICAgIERFQlVHICgoREVCVUdfTUFOQUdFQUJJTElUWV9JTkZP LCAiJWE6IFRyYW5zcG9ydCBpbnRlcmZhY2UNCj4gPj4+ICsgbWF4aW11bSBwYXlsb2FkIGlzIHVu ZGVmaW5lZC5cbiIsIF9fRlVOQ1RJT05fXykpOyAgfSBlbHNlIHsNCj4gPj4+ICsgICAgVHJhbnNw b3J0TWF4aW11bVBheWxvYWQgLT0gMTsNCj4gPj4+ICsgICAgREVCVUcgKChERUJVR19NQU5BR0VB QklMSVRZX0lORk8sICIlYTogVHJhbnNwb3J0IGludGVyZmFjZQ0KPiBmb3INCj4gPj4+ICsgSVBN SSBwcm90b2NvbCBoYXMgbWF4aW11bSBwYXlsb2FkIDB4JXguXG4iLCBfX0ZVTkNUSU9OX18sDQo+ ID4+PiArIFRyYW5zcG9ydE1heGltdW1QYXlsb2FkKSk7ICB9DQo+ID4+PiArDQo+ID4+PiAgICAg IG1UcmFuc3BvcnROYW1lID0gSGVscGVyTWFuYWdlYWJpbGl0eVNwZWNOYW1lDQo+ID4+PiAobVRy YW5zcG9ydFRva2VuLT5UcmFuc3BvcnQtPk1hbmFnZWFiaWxpdHlUcmFuc3BvcnRTcGVjaWZpY2F0 aW9uKTsNCj4gPj4+IC0gIERFQlVHICgoREVCVUdfSU5GTywgIiVhOiBJUE1JIHByb3RvY29sIG92 ZXIgJXMuXG4iLA0KPiBfX0ZVTkNUSU9OX18sDQo+ID4+PiBtVHJhbnNwb3J0TmFtZSkpOw0KPiA+ Pj4gKyAgREVCVUcgKChERUJVR19NQU5BR0VBQklMSVRZX0lORk8sICIlYTogSVBNSSBwcm90b2Nv bCBvdmVyDQo+ID4+ICVzLlxuIiwNCj4gPj4+ICsgX19GVU5DVElPTl9fLCBtVHJhbnNwb3J0TmFt ZSkpOw0KPiA+Pj4NCj4gPj4+ICAgICAgLy8NCj4gPj4+ICAgICAgLy8gU2V0dXAgaGFyZHdhcmUg aW5mb3JtYXRpb24gYWNjb3JkaW5nIHRvIHRoZSB0cmFuc3BvcnQgaW50ZXJmYWNlLg0K