From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id AB2467803DF for ; Fri, 5 Jan 2024 09:03:47 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=nOgWqdaKV7j1JITwj9HrlFXLzRx5oGwDfeOX3Z+BMoo=; c=relaxed/simple; d=groups.io; h=ARC-Seal:ARC-Message-Signature:ARC-Authentication-Results:From:To:CC:Subject:Thread-Topic:Thread-Index:Date:Message-ID:References:In-Reply-To:Accept-Language:msip_labels:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Language:Content-Type:Content-Transfer-Encoding; s=20140610; t=1704445426; v=1; b=wRPH9GLAwNZyDCgpGLHETyYpLYCUJ5lfD0whW0qcJ/SJ7iwhdpQcQqfeHFErdaGq+06YMGCo O/f22MSqJMp1Qm7Hlks+Pf3GehMWYHmqUavox9kRXUGWcz5ylQcDoGugCrVuz81JEAsSPcLV9mk HxNH1tAhkblIhcPqGBUWBv6M= X-Received: by 127.0.0.2 with SMTP id g9YvYY7687511xOZFfzag7c4; Fri, 05 Jan 2024 01:03:46 -0800 X-Received: from NAM04-DM6-obe.outbound.protection.outlook.com (NAM04-DM6-obe.outbound.protection.outlook.com [40.107.102.75]) by mx.groups.io with SMTP id smtpd.web10.19938.1704445425541174196 for ; Fri, 05 Jan 2024 01:03:45 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BXnwSzdP3omThhHAT6f0mNPHhKd03X00KySXmEEh3rgrmgLvEWXNLfMod6NAXcpmVCSrywNdDG2Q/4uw9ZqtX/L+niObGMjL/ltW/78SJhCObTrQnYkkXGNG7pFMcxteIuaWq23VIjco7e2+v7SY3yny5usMkFHkq2lcHU2hK9k+wJpDzdgNk/7VFb6AsvoZj0c8+5uaRc24rD0iWLhMvIdpVZGTb46g+Br40tl7opVR3Ebw+L3zulXlz7OOq6AsTiEFtvoz9DL4oNRjp2dCqCkHuJLQf8rBuNnqTXp7scfnww1RnCmEeIJrPwme2TdZXoIms/A5xouUcjqVcP886Q== 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=X+xhLse3cOVFy2KDt1VMxL4ZqLn8qAIpNPGdas77Kng=; b=nFJe1+M7NA32TV4t5Bxt68azmB6P8DIvZVNcIxSjViy9ZkS9GVJngaYsADCf3SnCCP/Obj9l/9CqnfK5YZ8VUNXCrODBvVXrFBeIIOod+HCsF0dGYvhIjJr0f3Nm9zZsIDT7XCJ91hJbR7VisCmgLOdNzNyN2q1oI9n7omZLhQ8GNv8/BatU9v2CYoP5jB6zfJ+T+97Yt/P+giULSqJcl4hZmoFwxbiK4hTvtS16dKS66JNakx3EEXtemc1nmPpIJZxHdir9XlJRMCAcnYSFs7G16T1SbTsgr4CanYAHa/b92AN7IBpGmc8lhX4ZmsHKXQzqrGfcxbBGuig5v5oSFA== 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 X-Received: from MN2PR12MB3966.namprd12.prod.outlook.com (2603:10b6:208:165::18) by MN0PR12MB5978.namprd12.prod.outlook.com (2603:10b6:208:37d::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7135.24; Fri, 5 Jan 2024 09:03:42 +0000 X-Received: from MN2PR12MB3966.namprd12.prod.outlook.com ([fe80::91d9:e679:32a3:dd05]) by MN2PR12MB3966.namprd12.prod.outlook.com ([fe80::91d9:e679:32a3:dd05%5]) with mapi id 15.20.7159.015; Fri, 5 Jan 2024 09:03:42 +0000 From: "Chang, Abner via groups.io" To: Mike Maslenkin , "devel@edk2.groups.io" CC: Nickle Wang , Igor Kulchytskyy Subject: Re: [edk2-devel] [edk2-redfish-client][PATCH V2] RedfishClientPkg: Add ETag PCD and revise Redfish ETag functions Thread-Topic: [edk2-devel] [edk2-redfish-client][PATCH V2] RedfishClientPkg: Add ETag PCD and revise Redfish ETag functions Thread-Index: AQHaP20JKgHx92s5A0CeKofJMY7m17DK5/IQ Date: Fri, 5 Jan 2024 09:03:41 +0000 Message-ID: References: <20240104085651.41-1-abner.chang@amd.com> In-Reply-To: Accept-Language: en-US, zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_ActionId=cbd1ff58-7116-4c5e-8790-fef05dcd9d19;MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_ContentBits=0;MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Enabled=true;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_SetDate=2024-01-05T08:44:31Z;MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_SiteId=3dd8961f-e488-4e60-8e11-a82d994e183d; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MN2PR12MB3966:EE_|MN0PR12MB5978:EE_ x-ms-office365-filtering-correlation-id: 83de14f5-1090-446d-592f-08dc0dcd36e9 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam-message-info: uKE/Ytc5+v1MC0c2mzevxkXf2ORn/M9HSqdWrz9rDxAD3NisK+7IFbH5XZaHxoX0VgyClad3xK+L6KYHg4ho8ZMP3MxaKYNDIDakTJ3A9uQjiipVWuu7pQjUC51DW5Fy9L7XLekWWapNXMxRU86vfpyBKCMl0xMcKj66EKcW3R9YbrV5x0eo4P3eWomW8+IRSroEM3X6YSGiB2tmj8hGq1eXjTZF9VH5PbJ6JZzEBty0567DpQx0/5bPu1hU4WRChMUNQcIRDXcUofeA810LT0rRALAWZL11dLAXhQC4cXKJFLdzjGxLdif+u9b5FQaYXN9RPUxPxcGjzO0a5/OaZmbUi1SZ6ZVijSJfBBZ0Dl4y/pdutYUzCr0khI6fu+7WRlULMyEC//EJHeZidaMJ1dAD82kzRlKSHmEVMou9FW9aDBRPvDkYbMpQaRCooEcKue3gBe1VbuAVT0hKhq7MAhf+RLvByFjgNvk4mqZJBbFIjiDP+LUAwRmElhs+sSGSBvA8L32Bf4W3NYAWFagR0A5gY+MTOntJ4bDgvXl0eZG69yEATswrk60wg5d4GSEeOTNVV/a0radPmMzCLgE7CHmjr/rWOnS4OPRJiyrg7COIByiKKnZ9jSH+7APFbO/sTYKopOnnh8bZe3IQEspddQ== x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?S2dBNTNRT1hiRUxQb0ladGFIb1FHVm9UNGJiWUFuZFp1OVc2bnFWNHJENU8v?= =?utf-8?B?T0h5SmVPRmZXUzI1SzVIOWJsRzZNT3RKY2hPR1UxVDF2Nm02eDhQWTFoSzdK?= =?utf-8?B?M3lLRmtjOHVzTTZPb2cyVC9tT2pmMGlYa3V1QlhVZXU3djljRzMvbm5CMGNH?= =?utf-8?B?bEdNV0MwNEk0eVV4eXVpV0x2TXJMNzF3NGhxWHBPMURjTjN1bWdTYVlZVXdM?= =?utf-8?B?Z05sMllTZ0lMVTI5UW53blhUendxNVE1dndFSVNNcFpOcTcya3U4SklBQ2s3?= =?utf-8?B?TXBmUVByZEVEZ3pwQUJnWTNnUDByZ3U2NWtNTjVjdmp3TWE4VU1kWk9VY3hr?= =?utf-8?B?dmZxQ3BZTGhBSVh3bExHQkR2YjlKOWhPQUxTcXpzaXJUTWhjSm96ZkNwb1pT?= =?utf-8?B?TW5sY1hvL0lZaWNSZWhJbU1DQTRwSlU3K1lPN0NTWjZWeWtjTm5xbTVua21Y?= =?utf-8?B?UVE2cDEzVEY1blJFTlo4emxJWitCM2l0aTJPdlhxWUlCejRzV21jOHc4MGJx?= =?utf-8?B?czFDcTZ6a0tieEY1aXhFWlZmWEkwU2w3Z3FQd1JzdG1BOWFVa211YUJSRjBQ?= =?utf-8?B?T3ZsUzNKV25zZ3hZcnExZktBQ0JSRzRuNVJ3ZG9HcDMrVUNLRnRmWTFkMURw?= =?utf-8?B?ZzE1Q2ErbXJ5RFZQSCswRWo2MUdnOVdnTldOZS9aU1N1Qmx3VEU4VkN1Q0xG?= =?utf-8?B?WEd6WUZlTVFXYTY4dVBjcFp6WGFNbzBEVTJ1cVBnSFNKT2svODhCUGVGZGdr?= =?utf-8?B?NWxuNzZ5VCtNbTRnczlwTWxRYmRmNjRBcmdsVXJ5WVZKdVpKeUZCZk5hM3dX?= =?utf-8?B?VXhRYkpjS0l6NTN5T0pBV0YzQnltVVNpZWcycmdIcjRmaDRCZWhpeStsQmJV?= =?utf-8?B?UHRERGRINW9lTmpMMXFydVhDVDNjQXBMWkVVRU53OFllMnNtUkgyQ1lTcVI3?= =?utf-8?B?czU3Wk81NzVpNnhnb3dFclA3SHVvbW1UOFIwMzB1N3hDU0phY1lGdG5PSUEr?= =?utf-8?B?VjJEK0R3eWw3TWI3MWdhSFZSQ0RBM1ljZjJrOXA3RklyOUM1UFQvYVU2V0Jh?= =?utf-8?B?MlV3NVZCcW0vYzFVMXE2UlFiUVRwUTZiNjJiMG4zQ1BOcU5yNWY3blZ5Z0Fi?= =?utf-8?B?TzNwOWV1OUx4S0dPa1F2c1ZPZTJudjlIWk9aVmZsN2RRSEtQNHY5Lzd6SDVJ?= =?utf-8?B?ODE3aGUrSHB4ck5ZY0RnWnN3b09XSnE5ODZ3cWNRQ0l6R1U0cDB3MmRvZlYw?= =?utf-8?B?ZnphdCtxdWg5Skh0OGNwaDBKZ1RxbG0vMnBybnpSeTZIUjRXWWJLUlFLRUpk?= =?utf-8?B?c2l6aS8rcUx3VmlXTVBPTkFZN0w4VGlqbGc4S0xHa1gzWW9LSmFmRlV1VmZw?= =?utf-8?B?b3NDVXRpck1IT3Y5b2pMQVl2MXJzV2Ixd0tmcVZhNmVXSXZoalBaQ2JScEtQ?= =?utf-8?B?M3V2K3hGTHdzMVRwc2lqVFQ0aTVzeCszWWR1d2xKVUpzdHRwdXl1Y2t0RDJM?= =?utf-8?B?YUY3Z2IzZ25sK290R3htcGh6T0o1aFhyeWFjd2JpeGNxTjdGQ08wU0dzQnpy?= =?utf-8?B?ckErZm9GbVFkZXBFaGZtaGxUMGNJVUM0RUxvcXh5RzBwUGR6Z3dseTk0NjZw?= =?utf-8?B?K1BVbjhNSkdEamtkOEl3TnM5cjIvZnJIWVNwMjJ6UFRlWmxMT3RJWGlJbUJT?= =?utf-8?B?eFFIdENTYkplSFo5eGxRRCtqOXdPSnhGbE9FeGswNjdSZDdadXpSSFgyT2FO?= =?utf-8?B?ODQzZ3lCSHVacnpqMFQzR0FHR2I3dEFpQVRHalkwUjhyNzNMQ3FOUnFuTkRL?= =?utf-8?B?bVFzWnZKcU50NkJjNUZ3RDJGZmQzMmhnSTJuUzlINXBGY1o1T2JIaW9ZdGhv?= =?utf-8?B?QXVXV29URis3S2JvOGZwdDdOYzNTTGVnV2VpVVhYZGpwd21iWEg3Snk1N0tk?= =?utf-8?B?cXpHZFNsRkFpMjY5bUY3cjgvd3ZaVlBITjc1b3RaUlo4RXNWM05VNm96Wjlj?= =?utf-8?B?bmYzQkd4dFFtS253T2poeUEwc1AxRG1pTHRFMzFwWU9JcGVqaWo2U01ZdjZz?= =?utf-8?B?ZVp0MTBpS2k2RnFPTDNYOFFHK2RXaWJjK1FxV254RkpUOFlXK01temNnbG1X?= =?utf-8?Q?NFqU=3D?= 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: 83de14f5-1090-446d-592f-08dc0dcd36e9 X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Jan 2024 09:03:42.0038 (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: 2jsGQ9iRvX747QgTQS7kQOXITmxu/gpefcE6boxvQ10Rg/4ETpdR6iJy4NjG+/JJulHHC/kWdUcaGzQQmL7CLA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR12MB5978 Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,abner.chang@amd.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: BkAwWUife0IaTnsfFy4K624Jx7686176AA= Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20140610 header.b=wRPH9GLA; arc=reject ("signature check failed: fail, {[1] = sig:microsoft.com:reject}"); dmarc=none; spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io W0FNRCBPZmZpY2lhbCBVc2UgT25seSAtIEdlbmVyYWxdDQoNCkhpIE1pa2UsDQpUaGlzIFBDRCBp cyBpbnRyb2R1Y2VkIGZvciB0aGUgcGxhdGZvcm0gdGhhdCBjb25uZWN0cyB0byB0aGUgUmVkZmlz aCBzZXJ2aWNlIHdoaWNoIGRvZXNuJ3Qgc3VwcG9ydCBFVGFnLg0KV2UgZGlzYWJsZSB0aGUgY2xp ZW50IGNvZGUgdGhhdCBoYW5kbGVzIEVUYWcgd2l0aCBzZXR0aW5nIHRoaXMgUENEIHRvIEZBTFNF LiBTbyBjbGllbnQgd2lsbCBqdXN0IGNvbnN1bWUgYW55IFJlZGZpc2ggcHJvcGVydHkgZnJvbSBz ZXJ2aWNlIGV2ZW4gdGhlcmUgaXMgbm90aGluZyBjaGFuZ2VkLiBUaGlzIGtub2IgZG9lc24ndCBj b250cm9sIFJlZGZpc2ggc2VydmljZSBiZWhhdmlvciBvbiBCTUMuDQpZZXMsIHRoZXJlIGlzIG5v IG1ldGhvZCB0byBkZXRlY3QgaWYgUmVkZmlzaCBzZXJ2aWNlIHN1cHBvcnRzIEVUYWcgb3Igbm90 LiBTbyB3ZSBpbnRyb2R1Y2UgYSBjbGllbnQgc2lkZSBrbm9iIHRvIGRpc2FibGUgRVRhZyBjaGVj a2luZyBhbHRob3VnaCBpdCBtZW50aW9ucyB0aGUgc2VydmljZSAic2hvdWxkIiBzdXBwb3J0IEVU YWcgaW4gUmVkZmlzaCBzcGVjLiBIb3dldmVyLCBhIHNpbXBsZSBSZWRmaXNoIHNlcnZpY2VzIG1h eSBub3QgaW1wbGVtZW50aW5nIEVUYWcgSFRUUCBoZWFkZXIuDQpEb2VzIGFib3ZlIGNsYXJpZnkg dGhlIHF1ZXN0aW9uPw0KDQpUaGFua3MNCkFibmVyDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdl LS0tLS0NCj4gRnJvbTogTWlrZSBNYXNsZW5raW4gPG1pa2UubWFzbGVua2luQGdtYWlsLmNvbT4N Cj4gU2VudDogRnJpZGF5LCBKYW51YXJ5IDUsIDIwMjQgODoyMCBBTQ0KPiBUbzogZGV2ZWxAZWRr Mi5ncm91cHMuaW87IENoYW5nLCBBYm5lciA8QWJuZXIuQ2hhbmdAYW1kLmNvbT4NCj4gQ2M6IE5p Y2tsZSBXYW5nIDxuaWNrbGV3QG52aWRpYS5jb20+OyBJZ29yIEt1bGNoeXRza3l5IDxpZ29ya0Bh bWkuY29tPg0KPiBTdWJqZWN0OiBSZTogW2VkazItZGV2ZWxdIFtlZGsyLXJlZGZpc2gtY2xpZW50 XVtQQVRDSCBWMl0gUmVkZmlzaENsaWVudFBrZzoNCj4gQWRkIEVUYWcgUENEIGFuZCByZXZpc2Ug UmVkZmlzaCBFVGFnIGZ1bmN0aW9ucw0KPg0KPiBDYXV0aW9uOiBUaGlzIG1lc3NhZ2Ugb3JpZ2lu YXRlZCBmcm9tIGFuIEV4dGVybmFsIFNvdXJjZS4gVXNlIHByb3BlciBjYXV0aW9uDQo+IHdoZW4g b3BlbmluZyBhdHRhY2htZW50cywgY2xpY2tpbmcgbGlua3MsIG9yIHJlc3BvbmRpbmcuDQo+DQo+ DQo+IExvb2tzIGdvb2QgdG8gbWUuDQo+DQo+IEJ1dCBjb3VsZCBpdCBiZSBwb3NzaWJsZSB0byBy ZXBocmFzZSAiRVRBRyBpcyBub3Qgc3VwcG9ydGVkIG9uIFJlZGZpc2gNCj4gc2VydmljZS4iID8N Cj4gTWF5IGJlIEkgbWlzdW5kZXJzdGFuZCwgYnV0IEkgYXNzdW1lICJSZWRmaXNoIHNlcnZpY2Ui IGlzIGEgc2VydmljZSBhdA0KPiBCTUMgc2lkZSwgd2hpbGUgd2UgYXJlIGRpc2FibGluZyBFVEFH IGZ1bmN0aW9uYWxpdHkgYXQgUmVkZmlzaCBjbGllbnQNCj4gc2lkZS4NCj4gUkVBRE1FLm1kIHNh eXMgIlJlZGZpc2ggc2VydmljZSBob3N0ZWQgYnkgQm9hcmQgTWFuYWdlbWVudCBDb250cm9sbGVy DQo+IChCTUMpIGluIHNlcnZlciIuDQo+IEN1cnJlbnRseSB0aGVyZSBpcyBubyBtZXRob2QgdG8g Z2V0IHNlcnZlciBmZWF0dXJlcyAoQUZBSVIpLCBzbyB3ZQ0KPiBkaXNhYmxlIGEgd29yayB3aXRo IHRob3NlIGV4cGxpY2l0bHkgb24gdGhlIGNsaWVudCBzaWRlLg0KPg0KPiBSZWdhcmRzLA0KPiBN aWtlLg0KPg0KPiBPbiBUaHUsIEphbiA0LCAyMDI0IGF0IDExOjU34oCvQU0gQ2hhbmcsIEFibmVy IHZpYSBncm91cHMuaW8NCj4gPGFibmVyLmNoYW5nPWFtZC5jb21AZ3JvdXBzLmlvPiB3cm90ZToN Cj4gPg0KPiA+IEZyb206IEFibmVyIENoYW5nIDxhYm5lci5jaGFuZ0BhbWQuY29tPg0KPiA+DQo+ ID4gQWRkIFBDRCB0byBkaXNhYmxlIEVUYWcgY2FwYWJpbGl0eSBmb3IgdGhlIGNhc2UgUmVkZmlz aA0KPiA+IHNlcnZpY2UgZG9lc24ndCBzdXBwb3J0IEVUYWcuDQo+ID4NCj4gPiBTaWduZWQtb2Zm LWJ5OiBBYm5lciBDaGFuZyA8YWJuZXIuY2hhbmdAYW1kLmNvbT4NCj4gPiBDYzogTmlja2xlIFdh bmcgPG5pY2tsZXdAbnZpZGlhLmNvbT4NCj4gPiBDYzogSWdvciBLdWxjaHl0c2t5eSA8aWdvcmtA YW1pLmNvbT4NCj4gPiBDYzogTWlrZSBNYXNsZW5raW4gPG1pa2UubWFzbGVua2luQGdtYWlsLmNv bT4NCj4gPiAtLS0NCj4gPiAgUmVkZmlzaENsaWVudFBrZy9SZWRmaXNoQ2xpZW50UGtnLmRlYyAg ICAgICAgIHwgICAyICsNCj4gPiAgLi4uL1JlZGZpc2hGZWF0dXJlVXRpbGl0eUxpYi5pbmYgICAg ICAgICAgICAgIHwgICAxICsNCj4gPiAgLi4uL0xpYnJhcnkvUmVkZmlzaEZlYXR1cmVVdGlsaXR5 TGliLmggICAgICAgIHwgIDQ2ICsrKy0NCj4gPiAgLi4uL0ZlYXR1cmVzL0Jpb3MvdjFfMF85L0R4 ZS9CaW9zRHhlLmMgICAgICAgIHwgIDE4ICstDQo+ID4gIC4uLi92MV8wXzQvQ29tbW9uL0Jvb3RP cHRpb25Db21tb24uYyAgICAgICAgICB8ICAgNCArLQ0KPiA+ICAuLi4vQm9vdE9wdGlvbi92MV8w XzQvRHhlL0Jvb3RPcHRpb25EeGUuYyAgICAgfCAgMTYgKy0NCj4gPiAgLi4uL3YxXzVfMC9EeGUv Q29tcHV0ZXJTeXN0ZW1EeGUuYyAgICAgICAgICAgIHwgIDE2ICstDQo+ID4gIC4uLi9GZWF0dXJl cy9NZW1vcnkvVjFfN18xL0R4ZS9NZW1vcnlEeGUuYyAgICB8ICAxNiArLQ0KPiA+ICAuLi4vUmVk ZmlzaEZlYXR1cmVVdGlsaXR5TGliLmMgICAgICAgICAgICAgICAgfCAyMDggKysrKysrKysrKysr LS0tLS0tDQo+ID4gIDkgZmlsZXMgY2hhbmdlZCwgMTk3IGluc2VydGlvbnMoKyksIDEzMCBkZWxl dGlvbnMoLSkNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9SZWRmaXNoQ2xpZW50UGtnL1JlZGZpc2hD bGllbnRQa2cuZGVjDQo+IGIvUmVkZmlzaENsaWVudFBrZy9SZWRmaXNoQ2xpZW50UGtnLmRlYw0K PiA+IGluZGV4IGIzNTBmYWNhZTAuLjhhZGVmMzI3ZmIgMTAwNjQ0DQo+ID4gLS0tIGEvUmVkZmlz aENsaWVudFBrZy9SZWRmaXNoQ2xpZW50UGtnLmRlYw0KPiA+ICsrKyBiL1JlZGZpc2hDbGllbnRQ a2cvUmVkZmlzaENsaWVudFBrZy5kZWMNCj4gPiBAQCAtNzYsNiArNzYsOCBAQA0KPiA+DQo+IGdF ZmlSZWRmaXNoQ2xpZW50UGtnVG9rZW5TcGFjZUd1aWQuUGNkRGVmYXVsdFJlZGZpc2hWZXJzaW9u fEwidjEifFZPSUQqDQo+IHwweDEwMDAwMDA0DQo+ID4gICAgIyMgVGhlIG51bWJlciBvZiBzZWNv bmRzIHRoYXQgdGhlIGZpcm13YXJlIHdpbGwgd2FpdCBiZWZvcmUgc3lzdGVtIHJlYm9vdA0KPiA+ DQo+IGdFZmlSZWRmaXNoQ2xpZW50UGtnVG9rZW5TcGFjZUd1aWQuUGNkUmVkZmlzaFN5c3RlbVJl Ym9vdFRpbWVvdXR8NXxVSQ0KPiBOVDE2fDB4MjAwMDAwMDINCj4gPiArICAjIyBEZWZhdWx0IGNh cGFiaWxpdHkgb2YgUmVkZmlzaCBzZXJ2aWNlIHNpZGUgRVRBRyBzdXBwb3J0DQo+ID4gKw0KPiBn RWZpUmVkZmlzaENsaWVudFBrZ1Rva2VuU3BhY2VHdWlkLlBjZFJlZGZpc2hTZXJ2aWNlRXRhZ1N1 cHBvcnRlZHxUUlVFfA0KPiBCT09MRUFOfDB4MTAwMDAwMDUNCj4gPg0KPiA+ICBbUGNkc0R5bmFt aWNFeF0NCj4gPiAgICAjIyBUaGUgZmxhZyB1c2VkIHRvIGluZGljYXRlIHRoYXQgc3lzdGVtIHJl Ym9vdCBpcyByZXF1aXJlZCBkdWUgdG8gc3lzdGVtDQo+IGNvbmZpZ3VyYXRpb24gY2hhbmdlDQo+ ID4gZGlmZiAtLWdpdA0KPiBhL1JlZGZpc2hDbGllbnRQa2cvTGlicmFyeS9SZWRmaXNoRmVhdHVy ZVV0aWxpdHlMaWIvUmVkZmlzaEZlYXR1cmVVdGlsaXR5TGliLmkNCj4gbmYNCj4gYi9SZWRmaXNo Q2xpZW50UGtnL0xpYnJhcnkvUmVkZmlzaEZlYXR1cmVVdGlsaXR5TGliL1JlZGZpc2hGZWF0dXJl VXRpbGl0eUxpYi5pDQo+IG5mDQo+ID4gaW5kZXggNzE4MjczYjI0OC4uZmRlNmExNzZkMCAxMDA2 NDQNCj4gPiAtLS0NCj4gYS9SZWRmaXNoQ2xpZW50UGtnL0xpYnJhcnkvUmVkZmlzaEZlYXR1cmVV dGlsaXR5TGliL1JlZGZpc2hGZWF0dXJlVXRpbGl0eUxpYi5pDQo+IG5mDQo+ID4gKysrDQo+IGIv UmVkZmlzaENsaWVudFBrZy9MaWJyYXJ5L1JlZGZpc2hGZWF0dXJlVXRpbGl0eUxpYi9SZWRmaXNo RmVhdHVyZVV0aWxpdHlMaWIuaQ0KPiBuZg0KPiA+IEBAIC01NCw2ICs1NCw3IEBADQo+ID4NCj4g PiAgW1BjZF0NCj4gPiAgICBnRWZpUmVkZmlzaENsaWVudFBrZ1Rva2VuU3BhY2VHdWlkLlBjZFJl ZGZpc2hTeXN0ZW1SZWJvb3RSZXF1aXJlZA0KPiA+ICsgIGdFZmlSZWRmaXNoQ2xpZW50UGtnVG9r ZW5TcGFjZUd1aWQuUGNkUmVkZmlzaFNlcnZpY2VFdGFnU3VwcG9ydGVkDQo+ID4NCj4gPiAgW0d1 aWRzXQ0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL1JlZGZpc2hDbGllbnRQa2cvSW5jbHVkZS9MaWJy YXJ5L1JlZGZpc2hGZWF0dXJlVXRpbGl0eUxpYi5oDQo+IGIvUmVkZmlzaENsaWVudFBrZy9JbmNs dWRlL0xpYnJhcnkvUmVkZmlzaEZlYXR1cmVVdGlsaXR5TGliLmgNCj4gPiBpbmRleCA5NTEzYTY1 NjE3Li44MzRlYTBmY2ZlIDEwMDY0NA0KPiA+IC0tLSBhL1JlZGZpc2hDbGllbnRQa2cvSW5jbHVk ZS9MaWJyYXJ5L1JlZGZpc2hGZWF0dXJlVXRpbGl0eUxpYi5oDQo+ID4gKysrIGIvUmVkZmlzaENs aWVudFBrZy9JbmNsdWRlL0xpYnJhcnkvUmVkZmlzaEZlYXR1cmVVdGlsaXR5TGliLmgNCj4gPiBA QCAtODEsNyArODEsNyBAQCBDb3B5Q29uZmlnbGFuZ3VhZ2VMaXN0ICgNCj4gPg0KPiA+ICAvKioN Cj4gPg0KPiA+IC0gIEdldCBudW1iZXIgb2Ygbm9kZSBmcm9tIHRoZSBzdHJpbmcuIE5vZGUgaXMg c2VwZXJhdGVkIGJ5ICcvJy4NCj4gPiArICBHZXQgbnVtYmVyIG9mIG5vZGUgZnJvbSB0aGUgc3Ry aW5nLiBOb2RlIGlzIHNlcGFyYXRlZCBieSAnLycuDQo+ID4NCj4gPiAgICBAcGFyYW1baW5dICBO b2RlU3RyaW5nICAgICAgICAgICAgIFRoZSBub2RlIHN0cmluZyB0byBwYXJzZS4NCj4gPg0KPiA+ IEBAIC01NTksNiArNTU5LDE5IEBAIEdldEV0YWdXaXRoVXJpICgNCj4gPiAgICBJTiAgRUZJX1NU UklORyAgVXJpDQo+ID4gICAgKTsNCj4gPg0KPiA+ICsvKioNCj4gPiArDQo+ID4gKyAgVGhpcyBm dW5jdGlvbiByZXR1cm5zIGEgYm9vbGVhbiBvZiBFVEFHIHN1cHBvcnQgb24gUmVkZmlzaCBzZXJ2 aWNlIHNpZGUuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgICAgIFRSVUUgICAgRVRBRyBpcyBzdXBw b3J0ZWQgb24gUmVkZmlzaCBzZXJ2aWNlLg0KPiA+ICsgIEByZXR2YWwgICAgIEZBTFNFICAgRVRB RyBpcyBub3Qgc3VwcG9ydGVkIG9uIFJlZGZpc2ggc2VydmljZS4NCj4gPiArDQo+ID4gKyoqLw0K PiA+ICtCT09MRUFODQo+ID4gK0NoZWNrSXNTZXJ2ZXJFdGFnU3VwcG9ydGVkICgNCj4gPiArICBW T0lEDQo+ID4gKyAgKTsNCj4gPiArDQo+ID4gIC8qKg0KPiA+DQo+ID4gICAgR2V0IEBvZGF0YS5p ZCBmcm9tIGdpdmUgSFRUUCBwYXlsb2FkLiBJdCdzIGNhbGwgcmVzcG9uc2liaWxpdHkgdG8gcmVs ZWFzZQ0KPiByZXR1cm5lZCBidWZmZXIuDQo+ID4gQEAgLTkzMSwyMiArOTQ0LDMzIEBAIENvbXBh cmVSZWRmaXNoUHJvcGVydHlWYWd1ZVZhbHVlcyAoDQo+ID4gICAgKTsNCj4gPg0KPiA+ICAvKioN Cj4gPiArICBGaW5kICJFVGFnIiBmcm9tIGVpdGhlciBIVFRQIGhlYWRlciBvciBSZWRmaXNoIHJl c3BvbnNlLg0KPiA+DQo+ID4gLSAgRmluZCAiRVRhZyIgYW5kICJMb2NhdGlvbiIgZnJvbSBlaXRo ZXIgSFRUUCBoZWFkZXIgb3IgUmVkZmlzaCByZXNwb25zZS4NCj4gPiArICBAcGFyYW1baW5dICBS ZXNwb25zZSAgICAgICAgSFRUUCByZXNwb25zZQ0KPiA+ICsgIEBwYXJhbVtvdXRdIEV0YWcgICAg ICAgICAgICBTdHJpbmcgYnVmZmVyIHRvIHJldHVybiBFVGFnDQo+ID4NCj4gPiAtICBAcGFyYW1b aW5dICBSZXNwb25zZSAgICBIVFRQIHJlc3BvbnNlDQo+ID4gLSAgQHBhcmFtW291dF0gRXRhZyAg ICAgICAgU3RyaW5nIGJ1ZmZlciB0byByZXR1cm4gRVRhZw0KPiA+IC0gIEBwYXJhbVtvdXRdIExv Y2F0aW9uICAgIFN0cmluZyBidWZmZXIgdG8gcmV0dXJuIExvY2F0aW9uDQo+ID4gKyAgQHJldHZh bCAgRUZJX1NVQ0NFU1MgICAgICAgICAgICBFVGFnIGlzIHJldHVybmVkIGluIEV0YWcNCj4gPiAr ICBAcmV0dmFsICBFRklfVU5TVVBQT1JURUQgICAgICAgIEVUYWcgaXMgdW5zdXBwb3J0ZWQNCj4g PiArICBAcmV0dmFsICBFRklfSU5WQUxJRF9QQVJBTUVURVIgIFJlc3BvbnNlLCBFdGFnIG9yIGJv dGggYXJlIE5VTEwuDQo+ID4NCj4gPiAtICBAcmV0dmFsICAgICBFRklfU1VDQ0VTUyAgICAgRGF0 YSBpcyBmb3VuZCBhbmQgcmV0dXJuZWQuDQo+ID4gLSAgQHJldHZhbCAgICAgT3RoZXJzICAgICAg ICAgIEVycm9ycyBvY2N1ci4NCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArR2V0SHR0 cFJlc3BvbnNlRXRhZyAoDQo+ID4gKyAgSU4gIFJFREZJU0hfUkVTUE9OU0UgICpSZXNwb25zZSwN Cj4gPiArICBPVVQgQ0hBUjggICAgICAgICAgICAgKipFdGFnDQo+ID4gKyAgKTsNCj4gPiArDQo+ ID4gKy8qKg0KPiA+ICsgIEZpbmQgIkxvY2F0aW9uIiBmcm9tIGVpdGhlciBIVFRQIGhlYWRlciBv ciBSZWRmaXNoIHJlc3BvbnNlLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dICBSZXNwb25zZSAg ICAgICAgSFRUUCByZXNwb25zZQ0KPiA+ICsgIEBwYXJhbVtvdXRdIExvY2F0aW9uICAgICAgICBT dHJpbmcgYnVmZmVyIHRvIHJldHVybiBMb2NhdGlvbg0KPiA+DQo+ID4gICoqLw0KPiA+ICBFRklf U1RBVFVTDQo+ID4gLUdldEV0YWdBbmRMb2NhdGlvbiAoDQo+ID4gLSAgSU4gIFJFREZJU0hfUkVT UE9OU0UgKlJlc3BvbnNlLA0KPiA+IC0gIE9VVCBDSEFSOCAqKkV0YWcsIE9QVElPTkFMDQo+ID4g LSAgT1VUIEVGSV9TVFJJTkcgICAgICAgICpMb2NhdGlvbiAgICBPUFRJT05BTA0KPiA+ICtHZXRI dHRwUmVzcG9uc2VMb2NhdGlvbiAoDQo+ID4gKyAgSU4gIFJFREZJU0hfUkVTUE9OU0UgICpSZXNw b25zZSwNCj4gPiArICBPVVQgRUZJX1NUUklORyAgICAgICAgKkxvY2F0aW9uDQo+ID4gICAgKTsN Cj4gPg0KPiA+ICAvKioNCj4gPiBkaWZmIC0tZ2l0IGEvUmVkZmlzaENsaWVudFBrZy9GZWF0dXJl cy9CaW9zL3YxXzBfOS9EeGUvQmlvc0R4ZS5jDQo+IGIvUmVkZmlzaENsaWVudFBrZy9GZWF0dXJl cy9CaW9zL3YxXzBfOS9EeGUvQmlvc0R4ZS5jDQo+ID4gaW5kZXggMmE0OWM1Y2QyMi4uMTRlODU0 Yzg2MSAxMDA2NDQNCj4gPiAtLS0gYS9SZWRmaXNoQ2xpZW50UGtnL0ZlYXR1cmVzL0Jpb3MvdjFf MF85L0R4ZS9CaW9zRHhlLmMNCj4gPiArKysgYi9SZWRmaXNoQ2xpZW50UGtnL0ZlYXR1cmVzL0Jp b3MvdjFfMF85L0R4ZS9CaW9zRHhlLmMNCj4gPiBAQCAtMTUzLDE0ICsxNTMsMTAgQEAgUmVkZmlz aFJlc291cmNlQ29uc3VtZVJlc291cmNlICgNCj4gPiAgICBBU1NFUlQgKFByaXZhdGUtPkpzb24g IT0gTlVMTCk7DQo+ID4NCj4gPiAgICAvLw0KPiA+IC0gIC8vIEZpbmQgZXRhZyBpbiBIVFRQIHJl c3BvbnNlIGhlYWRlcg0KPiA+ICsgIC8vIFNlYXJjaGluZyBmb3IgZXRhZyBpbiBIVFRQIHJlc3Bv bnNlIGhlYWRlcg0KPiA+ICAgIC8vDQo+ID4gLSAgRXRhZyAgID0gTlVMTDsNCj4gPiAtICBTdGF0 dXMgPSBHZXRFdGFnQW5kTG9jYXRpb24gKEV4cGVjdGVkUmVzcG9uc2UsICZFdGFnLCBOVUxMKTsN Cj4gPiAtICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gLSAgICBERUJVRyAoKERFQlVH X0VSUk9SLCAiJWEsIGZhaWxlZCB0byBnZXQgRVRhZyBmcm9tIEhUVFAgaGVhZGVyXG4iLA0KPiBf X2Z1bmNfXykpOw0KPiA+IC0gIH0NCj4gPiAtDQo+ID4gKyAgRXRhZyA9IE5VTEw7DQo+ID4gKyAg R2V0SHR0cFJlc3BvbnNlRXRhZyAoRXhwZWN0ZWRSZXNwb25zZSwgJkV0YWcpOw0KPiA+ICAgIFN0 YXR1cyA9IFJlZGZpc2hDb25zdW1lUmVzb3VyY2VDb21tb24gKFByaXZhdGUsIFByaXZhdGUtPkpz b24sIEV0YWcpOw0KPiA+ICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiAgICAgIGlm IChTdGF0dXMgIT0gRUZJX0FMUkVBRFlfU1RBUlRFRCkgew0KPiA+IEBAIC0zNjUsMTIgKzM2MSw4 IEBAIFJlZGZpc2hSZXNvdXJjZUNoZWNrICgNCj4gPiAgICAvLw0KPiA+ICAgIC8vIEZpbmQgZXRh ZyBpbiBIVFRQIHJlc3BvbnNlIGhlYWRlcg0KPiA+ICAgIC8vDQo+ID4gLSAgRXRhZyAgID0gTlVM TDsNCj4gPiAtICBTdGF0dXMgPSBHZXRFdGFnQW5kTG9jYXRpb24gKCZSZXNwb25zZSwgJkV0YWcs IE5VTEwpOw0KPiA+IC0gIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiAtICAgIERFQlVH ICgoREVCVUdfRVJST1IsICIlYTogZmFpbGVkIHRvIGdldCBFVGFnIGZyb20gSFRUUCBoZWFkZXJc biIsDQo+IF9fZnVuY19fKSk7DQo+ID4gLSAgfQ0KPiA+IC0NCj4gPiArICBFdGFnID0gTlVMTDsN Cj4gPiArICBHZXRIdHRwUmVzcG9uc2VFdGFnICgmUmVzcG9uc2UsICZFdGFnKTsNCj4gPiAgICBT dGF0dXMgPSBSZWRmaXNoQ2hlY2tSZXNvdXJjZUNvbW1vbiAoUHJpdmF0ZSwgUHJpdmF0ZS0+SnNv biwgRXRhZyk7DQo+ID4gICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICAgICAgREVC VUcgKChERUJVR19FUlJPUiwgIiVhLCBmYWlsZWQgdG8gY2hlY2sgcmVzb3VyY2UgZnJvbTogJXM6 ICVyXG4iLA0KPiBfX2Z1bmNfXywgVXJpLCBTdGF0dXMpKTsNCj4gPiBkaWZmIC0tZ2l0DQo+IGEv UmVkZmlzaENsaWVudFBrZy9GZWF0dXJlcy9Cb290T3B0aW9uL3YxXzBfNC9Db21tb24vQm9vdE9w dGlvbkNvbQ0KPiBtb24uYw0KPiBiL1JlZGZpc2hDbGllbnRQa2cvRmVhdHVyZXMvQm9vdE9wdGlv bi92MV8wXzQvQ29tbW9uL0Jvb3RPcHRpb25Db20NCj4gbW9uLmMNCj4gPiBpbmRleCAwZDRjMjE2 MmM2Li4wYjlhNzJhYmMzIDEwMDY0NA0KPiA+IC0tLQ0KPiBhL1JlZGZpc2hDbGllbnRQa2cvRmVh dHVyZXMvQm9vdE9wdGlvbi92MV8wXzQvQ29tbW9uL0Jvb3RPcHRpb25Db20NCj4gbW9uLmMNCj4g PiArKysNCj4gYi9SZWRmaXNoQ2xpZW50UGtnL0ZlYXR1cmVzL0Jvb3RPcHRpb24vdjFfMF80L0Nv bW1vbi9Cb290T3B0aW9uQ29tDQo+IG1vbi5jDQo+ID4gQEAgLTQ1NSw5ICs0NTUsOSBAQCBSZWRm aXNoUHJvdmlzaW9uaW5nUmVzb3VyY2VDb21tb24gKA0KPiA+ICAgIH0NCj4gPg0KPiA+ICAgIC8v DQo+ID4gLSAgLy8gcGVyIFJlZGZpc2ggc3BlYy4gdGhlIFVSTCBvZiBuZXcgcmVzb3VyY2Ugd2ls bCBiZSByZXR1cm5lZCBpbiAiTG9jYXRpb24iDQo+IGhlYWRlci4NCj4gPiArICAvLyBQZXIgUmVk ZmlzaCBzcGVjLiB0aGUgVVJMIG9mIG5ldyByZXNvdXJjZSB3aWxsIGJlIHJldHVybmVkIGluICJM b2NhdGlvbiINCj4gaGVhZGVyLg0KPiA+ICAgIC8vDQo+ID4gLSAgU3RhdHVzID0gR2V0RXRhZ0Fu ZExvY2F0aW9uICgmUmVzcG9uc2UsIE5VTEwsICZOZXdSZXNvdXJjZUxvY2F0aW9uKTsNCj4gPiAr ICBTdGF0dXMgPSBHZXRIdHRwUmVzcG9uc2VMb2NhdGlvbiAoJlJlc3BvbnNlLCAmTmV3UmVzb3Vy Y2VMb2NhdGlvbik7DQo+ID4gICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICAgICAg REVCVUcgKChERUJVR19FUlJPUiwgIiVhOiBjYW5ub3QgZmluZCBuZXcgbG9jYXRpb246ICVyXG4i LCBfX2Z1bmNfXywNCj4gU3RhdHVzKSk7DQo+ID4gICAgICBnb3RvIFJFTEVBU0VfUkVTT1VSQ0U7 DQo+ID4gZGlmZiAtLWdpdA0KPiBhL1JlZGZpc2hDbGllbnRQa2cvRmVhdHVyZXMvQm9vdE9wdGlv bi92MV8wXzQvRHhlL0Jvb3RPcHRpb25EeGUuYw0KPiBiL1JlZGZpc2hDbGllbnRQa2cvRmVhdHVy ZXMvQm9vdE9wdGlvbi92MV8wXzQvRHhlL0Jvb3RPcHRpb25EeGUuYw0KPiA+IGluZGV4IGJhMDkw YzUxZDMuLjIwNGM2YjA3NTcgMTAwNjQ0DQo+ID4gLS0tIGEvUmVkZmlzaENsaWVudFBrZy9GZWF0 dXJlcy9Cb290T3B0aW9uL3YxXzBfNC9EeGUvQm9vdE9wdGlvbkR4ZS5jDQo+ID4gKysrDQo+IGIv UmVkZmlzaENsaWVudFBrZy9GZWF0dXJlcy9Cb290T3B0aW9uL3YxXzBfNC9EeGUvQm9vdE9wdGlv bkR4ZS5jDQo+ID4gQEAgLTE1NCwxMiArMTU0LDggQEAgUmVkZmlzaFJlc291cmNlQ29uc3VtZVJl c291cmNlICgNCj4gPiAgICAvLw0KPiA+ICAgIC8vIEZpbmQgZXRhZyBpbiBIVFRQIHJlc3BvbnNl IGhlYWRlcg0KPiA+ICAgIC8vDQo+ID4gLSAgRXRhZyAgID0gTlVMTDsNCj4gPiAtICBTdGF0dXMg PSBHZXRFdGFnQW5kTG9jYXRpb24gKEV4cGVjdGVkUmVzcG9uc2UsICZFdGFnLCBOVUxMKTsNCj4g PiAtICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gLSAgICBERUJVRyAoKERFQlVHX0VS Uk9SLCAiJWE6IGZhaWxlZCB0byBnZXQgRVRhZyBmcm9tIEhUVFAgaGVhZGVyXG4iLA0KPiBfX2Z1 bmNfXykpOw0KPiA+IC0gIH0NCj4gPiAtDQo+ID4gKyAgRXRhZyA9IE5VTEw7DQo+ID4gKyAgR2V0 SHR0cFJlc3BvbnNlRXRhZyAoRXhwZWN0ZWRSZXNwb25zZSwgJkV0YWcpOw0KPiA+ICAgIFN0YXR1 cyA9IFJlZGZpc2hDb25zdW1lUmVzb3VyY2VDb21tb24gKFByaXZhdGUsIFByaXZhdGUtPkpzb24s IEV0YWcpOw0KPiA+ICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiAgICAgIERFQlVH ICgoREVCVUdfRVJST1IsICIlYTogZmFpbGVkIHRvIGNvbnN1bWUgcmVzb3VyY2UgZnJvbTogJXM6 DQo+ICVyXG4iLCBfX2Z1bmNfXywgUHJpdmF0ZS0+VXJpLCBTdGF0dXMpKTsNCj4gPiBAQCAtMzU4 LDEyICszNTQsOCBAQCBSZWRmaXNoUmVzb3VyY2VDaGVjayAoDQo+ID4gICAgLy8NCj4gPiAgICAv LyBGaW5kIGV0YWcgaW4gSFRUUCByZXNwb25zZSBoZWFkZXINCj4gPiAgICAvLw0KPiA+IC0gIEV0 YWcgICA9IE5VTEw7DQo+ID4gLSAgU3RhdHVzID0gR2V0RXRhZ0FuZExvY2F0aW9uICgmUmVzcG9u c2UsICZFdGFnLCBOVUxMKTsNCj4gPiAtICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4g LSAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiJWE6IGZhaWxlZCB0byBnZXQgRVRhZyBmcm9tIEhU VFAgaGVhZGVyXG4iLA0KPiBfX2Z1bmNfXykpOw0KPiA+IC0gIH0NCj4gPiAtDQo+ID4gKyAgRXRh ZyA9IE5VTEw7DQo+ID4gKyAgR2V0SHR0cFJlc3BvbnNlRXRhZyAoJlJlc3BvbnNlLCAmRXRhZyk7 DQo+ID4gICAgU3RhdHVzID0gUmVkZmlzaENoZWNrUmVzb3VyY2VDb21tb24gKFByaXZhdGUsIFBy aXZhdGUtPkpzb24sIEV0YWcpOw0KPiA+ICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4g PiAgICAgIERFQlVHICgoUkVERklTSF9CT09UX09QVElPTl9ERUJVR19UUkFDRSwgIiVhOiBmYWls ZWQgdG8gY2hlY2sNCj4gcmVzb3VyY2UgZnJvbTogJXM6ICVyXG4iLCBfX2Z1bmNfXywgVXJpLCBT dGF0dXMpKTsNCj4gPiBkaWZmIC0tZ2l0DQo+IGEvUmVkZmlzaENsaWVudFBrZy9GZWF0dXJlcy9D b21wdXRlclN5c3RlbS92MV81XzAvRHhlL0NvbXB1dGVyU3lzdGUNCj4gbUR4ZS5jDQo+IGIvUmVk ZmlzaENsaWVudFBrZy9GZWF0dXJlcy9Db21wdXRlclN5c3RlbS92MV81XzAvRHhlL0NvbXB1dGVy U3lzdGUNCj4gbUR4ZS5jDQo+ID4gaW5kZXggMGJiYWE5MmJmNC4uNzgwNWJjZjM2YiAxMDA2NDQN Cj4gPiAtLS0NCj4gYS9SZWRmaXNoQ2xpZW50UGtnL0ZlYXR1cmVzL0NvbXB1dGVyU3lzdGVtL3Yx XzVfMC9EeGUvQ29tcHV0ZXJTeXN0ZQ0KPiBtRHhlLmMNCj4gPiArKysNCj4gYi9SZWRmaXNoQ2xp ZW50UGtnL0ZlYXR1cmVzL0NvbXB1dGVyU3lzdGVtL3YxXzVfMC9EeGUvQ29tcHV0ZXJTeXN0ZQ0K PiBtRHhlLmMNCj4gPiBAQCAtMTQ5LDEyICsxNDksOCBAQCBSZWRmaXNoUmVzb3VyY2VDb25zdW1l UmVzb3VyY2UgKA0KPiA+ICAgIC8vDQo+ID4gICAgLy8gRmluZCBldGFnIGluIEhUVFAgcmVzcG9u c2UgaGVhZGVyDQo+ID4gICAgLy8NCj4gPiAtICBFdGFnICAgPSBOVUxMOw0KPiA+IC0gIFN0YXR1 cyA9IEdldEV0YWdBbmRMb2NhdGlvbiAoRXhwZWN0ZWRSZXNwb25zZSwgJkV0YWcsIE5VTEwpOw0K PiA+IC0gIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiAtICAgIERFQlVHICgoREVCVUdf RVJST1IsICIlYSwgZmFpbGVkIHRvIGdldCBFVGFnIGZyb20gSFRUUCBoZWFkZXJcbiIsDQo+IF9f ZnVuY19fKSk7DQo+ID4gLSAgfQ0KPiA+IC0NCj4gPiArICBFdGFnID0gTlVMTDsNCj4gPiArICBH ZXRIdHRwUmVzcG9uc2VFdGFnIChFeHBlY3RlZFJlc3BvbnNlLCAmRXRhZyk7DQo+ID4gICAgU3Rh dHVzID0gUmVkZmlzaENvbnN1bWVSZXNvdXJjZUNvbW1vbiAoUHJpdmF0ZSwgUHJpdmF0ZS0+SnNv biwgRXRhZyk7DQo+ID4gICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICAgICAgaWYg KFN0YXR1cyAhPSBFRklfQUxSRUFEWV9TVEFSVEVEKSB7DQo+ID4gQEAgLTM1OSwxMiArMzU1LDgg QEAgUmVkZmlzaFJlc291cmNlQ2hlY2sgKA0KPiA+ICAgIC8vDQo+ID4gICAgLy8gRmluZCBldGFn IGluIEhUVFAgcmVzcG9uc2UgaGVhZGVyDQo+ID4gICAgLy8NCj4gPiAtICBFdGFnICAgPSBOVUxM Ow0KPiA+IC0gIFN0YXR1cyA9IEdldEV0YWdBbmRMb2NhdGlvbiAoJlJlc3BvbnNlLCAmRXRhZywg TlVMTCk7DQo+ID4gLSAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+IC0gICAgREVCVUcg KChERUJVR19FUlJPUiwgIiVhOiBmYWlsZWQgdG8gZ2V0IEVUYWcgZnJvbSBIVFRQIGhlYWRlclxu IiwNCj4gX19mdW5jX18pKTsNCj4gPiAtICB9DQo+ID4gLQ0KPiA+ICsgIEV0YWcgPSBOVUxMOw0K PiA+ICsgIEdldEh0dHBSZXNwb25zZUV0YWcgKCZSZXNwb25zZSwgJkV0YWcpOw0KPiA+ICAgIFN0 YXR1cyA9IFJlZGZpc2hDaGVja1Jlc291cmNlQ29tbW9uIChQcml2YXRlLCBQcml2YXRlLT5Kc29u LCBFdGFnKTsNCj4gPiAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gICAgICBERUJV RyAoKERFQlVHX0VSUk9SLCAiJWEsIGZhaWxlZCB0byBjaGVjayByZXNvdXJjZSBmcm9tOiAlczog JXJcbiIsDQo+IF9fZnVuY19fLCBVcmksIFN0YXR1cykpOw0KPiA+IGRpZmYgLS1naXQgYS9SZWRm aXNoQ2xpZW50UGtnL0ZlYXR1cmVzL01lbW9yeS9WMV83XzEvRHhlL01lbW9yeUR4ZS5jDQo+IGIv UmVkZmlzaENsaWVudFBrZy9GZWF0dXJlcy9NZW1vcnkvVjFfN18xL0R4ZS9NZW1vcnlEeGUuYw0K PiA+IGluZGV4IDkyMzAwNzgwNTEuLmI4N2RhNzc1YjMgMTAwNjQ0DQo+ID4gLS0tIGEvUmVkZmlz aENsaWVudFBrZy9GZWF0dXJlcy9NZW1vcnkvVjFfN18xL0R4ZS9NZW1vcnlEeGUuYw0KPiA+ICsr KyBiL1JlZGZpc2hDbGllbnRQa2cvRmVhdHVyZXMvTWVtb3J5L1YxXzdfMS9EeGUvTWVtb3J5RHhl LmMNCj4gPiBAQCAtMTQ5LDEyICsxNDksOCBAQCBSZWRmaXNoUmVzb3VyY2VDb25zdW1lUmVzb3Vy Y2UgKA0KPiA+ICAgIC8vDQo+ID4gICAgLy8gRmluZCBldGFnIGluIEhUVFAgcmVzcG9uc2UgaGVh ZGVyDQo+ID4gICAgLy8NCj4gPiAtICBFdGFnICAgPSBOVUxMOw0KPiA+IC0gIFN0YXR1cyA9IEdl dEV0YWdBbmRMb2NhdGlvbiAoRXhwZWN0ZWRSZXNwb25zZSwgJkV0YWcsIE5VTEwpOw0KPiA+IC0g IGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiAtICAgIERFQlVHICgoREVCVUdfRVJST1Is ICIlYSwgZmFpbGVkIHRvIGdldCBFVGFnIGZyb20gSFRUUCBoZWFkZXJcbiIsDQo+IF9fZnVuY19f KSk7DQo+ID4gLSAgfQ0KPiA+IC0NCj4gPiArICBFdGFnID0gTlVMTDsNCj4gPiArICBHZXRIdHRw UmVzcG9uc2VFdGFnIChFeHBlY3RlZFJlc3BvbnNlLCAmRXRhZyk7DQo+ID4gICAgU3RhdHVzID0g UmVkZmlzaENvbnN1bWVSZXNvdXJjZUNvbW1vbiAoUHJpdmF0ZSwgUHJpdmF0ZS0+SnNvbiwgRXRh Zyk7DQo+ID4gICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICAgICAgaWYgKFN0YXR1 cyAhPSBFRklfQUxSRUFEWV9TVEFSVEVEKSB7DQo+ID4gQEAgLTM1OSwxMiArMzU1LDggQEAgUmVk ZmlzaFJlc291cmNlQ2hlY2sgKA0KPiA+ICAgIC8vDQo+ID4gICAgLy8gRmluZCBldGFnIGluIEhU VFAgcmVzcG9uc2UgaGVhZGVyDQo+ID4gICAgLy8NCj4gPiAtICBFdGFnICAgPSBOVUxMOw0KPiA+ IC0gIFN0YXR1cyA9IEdldEV0YWdBbmRMb2NhdGlvbiAoJlJlc3BvbnNlLCAmRXRhZywgTlVMTCk7 DQo+ID4gLSAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+IC0gICAgREVCVUcgKChERUJV R19FUlJPUiwgIiVhOiBmYWlsZWQgdG8gZ2V0IEVUYWcgZnJvbSBIVFRQIGhlYWRlclxuIiwNCj4g X19mdW5jX18pKTsNCj4gPiAtICB9DQo+ID4gLQ0KPiA+ICsgIEV0YWcgPSBOVUxMOw0KPiA+ICsg IEdldEh0dHBSZXNwb25zZUV0YWcgKCZSZXNwb25zZSwgJkV0YWcpOw0KPiA+ICAgIFN0YXR1cyA9 IFJlZGZpc2hDaGVja1Jlc291cmNlQ29tbW9uIChQcml2YXRlLCBQcml2YXRlLT5Kc29uLCBFdGFn KTsNCj4gPiAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gICAgICBERUJVRyAoKERF QlVHX0VSUk9SLCAiJWEsIGZhaWxlZCB0byBjaGVjayByZXNvdXJjZSBmcm9tOiAlczogJXJcbiIs DQo+IF9fZnVuY19fLCBVcmksIFN0YXR1cykpOw0KPiA+IGRpZmYgLS1naXQNCj4gYS9SZWRmaXNo Q2xpZW50UGtnL0xpYnJhcnkvUmVkZmlzaEZlYXR1cmVVdGlsaXR5TGliL1JlZGZpc2hGZWF0dXJl VXRpbGl0eUxpYi4NCj4gYw0KPiBiL1JlZGZpc2hDbGllbnRQa2cvTGlicmFyeS9SZWRmaXNoRmVh dHVyZVV0aWxpdHlMaWIvUmVkZmlzaEZlYXR1cmVVdGlsaXR5TGliLg0KPiBjDQo+ID4gaW5kZXgg MWMyZDQwZjYyMi4uNzcwOWE5ZDFhMiAxMDA2NDQNCj4gPiAtLS0NCj4gYS9SZWRmaXNoQ2xpZW50 UGtnL0xpYnJhcnkvUmVkZmlzaEZlYXR1cmVVdGlsaXR5TGliL1JlZGZpc2hGZWF0dXJlVXRpbGl0 eUxpYi4NCj4gYw0KPiA+ICsrKw0KPiBiL1JlZGZpc2hDbGllbnRQa2cvTGlicmFyeS9SZWRmaXNo RmVhdHVyZVV0aWxpdHlMaWIvUmVkZmlzaEZlYXR1cmVVdGlsaXR5TGliLg0KPiBjDQo+ID4gQEAg LTEzMyw2ICsxMzMsMTEgQEAgU2V0RXRhZ0Zyb21VcmkgKA0KPiA+ICAgIFJFREZJU0hfUkVTUE9O U0UgIFJlc3BvbnNlOw0KPiA+ICAgIEVGSV9TVFJJTkcgICAgICAgIFBlbmRpbmdTZXR0aW5nVXJp Ow0KPiA+DQo+ID4gKyAgaWYgKCFDaGVja0lzU2VydmVyRXRhZ1N1cHBvcnRlZCAoKSkgew0KPiA+ ICsgICAgREVCVUcgKChERUJVR19JTkZPLCAiJWE6IFdBUk5JTkcgLSBFVEFHIGlzIG5vdCBzdXBw b3J0ZWRcbiIsDQo+IF9fZnVuY19fKSk7DQo+ID4gKyAgICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ ID4gKyAgfQ0KPiA+ICsNCj4gPiAgICBpZiAoKFJlZGZpc2hTZXJ2aWNlID09IE5VTEwpIHx8IElT X0VNUFRZX1NUUklORyAoVXJpKSkgew0KPiA+ICAgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFN RVRFUjsNCj4gPiAgICB9DQo+ID4gQEAgLTE1Nyw5ICsxNjIsOSBAQCBTZXRFdGFnRnJvbVVyaSAo DQo+ID4gICAgLy8NCj4gPiAgICAvLyBGaW5kIGV0YWcgaW4gSFRUUCByZXNwb25zZSBoZWFkZXIN Cj4gPiAgICAvLw0KPiA+IC0gIFN0YXR1cyA9IEdldEV0YWdBbmRMb2NhdGlvbiAoJlJlc3BvbnNl LCAmRXRhZywgTlVMTCk7DQo+ID4gLSAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+IC0g ICAgREVCVUcgKChERUJVR19FUlJPUiwgIiVhOiBmYWlsZWQgdG8gZ2V0IEVUYWcgZnJvbSBIVFRQ IGhlYWRlclxuIiwNCj4gX19mdW5jX18pKTsNCj4gPiArICBTdGF0dXMgPSBHZXRIdHRwUmVzcG9u c2VFdGFnICgmUmVzcG9uc2UsICZFdGFnKTsNCj4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMp ICYmIChTdGF0dXMgIT0gRUZJX1VOU1VQUE9SVEVEKSkgew0KPiA+ICsgICAgREVCVUcgKChERUJV R19FUlJPUiwgIiVhOiBGYWlsZWQgdG8gZ2V0IEVUYWcgZnJvbSBIVFRQIGhlYWRlclxuIiwNCj4g X19mdW5jX18pKTsNCj4gPiAgICAgIFN0YXR1cyA9IEVGSV9OT1RfRk9VTkQ7DQo+ID4gICAgICBn b3RvIE9OX1JFTEVBU0U7DQo+ID4gICAgfQ0KPiA+IEBAIC0yNDEsNiArMjQ2LDExIEBAIFNldEV0 YWdXaXRoVXJpICgNCj4gPiAgICBFRklfU1RBVFVTICBTdGF0dXM7DQo+ID4gICAgQ0hBUjggICAg ICAgKkFzY2lpVXJpOw0KPiA+DQo+ID4gKyAgaWYgKCFDaGVja0lzU2VydmVyRXRhZ1N1cHBvcnRl ZCAoKSkgew0KPiA+ICsgICAgREVCVUcgKChERUJVR19JTkZPLCAiJWE6IFdBUk5JTkcgLSBFVEFH IGlzIG5vdCBzdXBwb3J0ZWRcbiIsDQo+IF9fZnVuY19fKSk7DQo+ID4gKyAgICByZXR1cm4gRUZJ X1NVQ0NFU1M7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiAgICBpZiAoSVNfRU1QVFlfU1RSSU5HIChF dGFnU3RyKSB8fCBJU19FTVBUWV9TVFJJTkcgKFVyaSkpIHsNCj4gPiAgICAgIHJldHVybiBFRklf SU5WQUxJRF9QQVJBTUVURVI7DQo+ID4gICAgfQ0KPiA+IEBAIC0yODYsNiArMjk2LDExIEBAIEdl dEV0YWdXaXRoVXJpICgNCj4gPiAgICAgIHJldHVybiBOVUxMOw0KPiA+ICAgIH0NCj4gPg0KPiA+ ICsgIGlmICghQ2hlY2tJc1NlcnZlckV0YWdTdXBwb3J0ZWQgKCkpIHsNCj4gPiArICAgIERFQlVH ICgoREVCVUdfSU5GTywgIiVhOiBXQVJOSU5HIC0gRVRBRyBpcyBub3Qgc3VwcG9ydGVkXG4iLA0K PiBfX2Z1bmNfXykpOw0KPiA+ICsgICAgcmV0dXJuIE5VTEw7DQo+ID4gKyAgfQ0KPiA+ICsNCj4g PiAgICBTdGF0dXMgPSBSZWRmaXNoTG9jYXRlUHJvdG9jb2wgKChWT0lEICoqKSZtRXRhZ1Byb3Rv Y29sLA0KPiAmZ0Vka0lJUmVkZmlzaEVUYWdQcm90b2NvbEd1aWQpOw0KPiA+ICAgIGlmIChFRklf RVJST1IgKFN0YXR1cykpIHsNCj4gPiAgICAgIERFQlVHICgoREVCVUdfRVJST1IsICIlYTogZmFp bCB0byBsb2NhdGUNCj4gZ0Vka0lJUmVkZmlzaEVUYWdQcm90b2NvbEd1aWQ6ICVyXG4iLCBfX2Z1 bmNfXywgU3RhdHVzKSk7DQo+ID4gQEAgLTE3MjYsNDQgKzE3NDEsMzkgQEANCj4gUmVkZmlzaEZl YXR1cmVHZXRVbmlmaWVkQXJyYXlUeXBlQ29uZmlndXJlTGFuZyAoDQo+ID4gIH0NCj4gPg0KPiA+ ICAvKioNCj4gPiArICBGaW5kICJFVGFnIiBmcm9tIGVpdGhlciBIVFRQIGhlYWRlciBvciBSZWRm aXNoIHJlc3BvbnNlLg0KPiA+DQo+ID4gLSAgRmluZCAiRVRhZyIgYW5kICJMb2NhdGlvbiIgZnJv bSBlaXRoZXIgSFRUUCBoZWFkZXIgb3IgUmVkZmlzaCByZXNwb25zZS4NCj4gPiArICBAcGFyYW1b aW5dICBSZXNwb25zZSAgICAgICAgSFRUUCByZXNwb25zZQ0KPiA+ICsgIEBwYXJhbVtvdXRdIEV0 YWcgICAgICAgICAgICBTdHJpbmcgYnVmZmVyIHRvIHJldHVybiBFVGFnDQo+ID4NCj4gPiAtICBA cGFyYW1baW5dICBSZXNwb25zZSAgICBIVFRQIHJlc3BvbnNlDQo+ID4gLSAgQHBhcmFtW291dF0g RXRhZyAgICAgICAgU3RyaW5nIGJ1ZmZlciB0byByZXR1cm4gRVRhZw0KPiA+IC0gIEBwYXJhbVtv dXRdIExvY2F0aW9uICAgIFN0cmluZyBidWZmZXIgdG8gcmV0dXJuIExvY2F0aW9uDQo+ID4gLQ0K PiA+IC0gIEByZXR2YWwgICAgIEVGSV9TVUNDRVNTICAgICBEYXRhIGlzIGZvdW5kIGFuZCByZXR1 cm5lZC4NCj4gPiAtICBAcmV0dmFsICAgICBPdGhlcnMgICAgICAgICAgRXJyb3JzIG9jY3VyLg0K PiA+ICsgIEByZXR2YWwgIEVGSV9TVUNDRVNTICAgICAgICAgICAgRVRhZyBpcyByZXR1cm5lZCBp biBFdGFnDQo+ID4gKyAgQHJldHZhbCAgRUZJX1VOU1VQUE9SVEVEICAgICAgICBFVGFnIGlzIHVu c3VwcG9ydGVkDQo+ID4gKyAgQHJldHZhbCAgRUZJX0lOVkFMSURfUEFSQU1FVEVSICBSZXNwb25z ZSwgRXRhZyBvciBib3RoIGFyZSBOVUxMLg0KPiA+DQo+ID4gICoqLw0KPiA+ICBFRklfU1RBVFVT DQo+ID4gLUdldEV0YWdBbmRMb2NhdGlvbiAoDQo+ID4gLSAgSU4gIFJFREZJU0hfUkVTUE9OU0Ug KlJlc3BvbnNlLA0KPiA+IC0gIE9VVCBDSEFSOCAqKkV0YWcsIE9QVElPTkFMDQo+ID4gLSAgT1VU IEVGSV9TVFJJTkcgICAgICAgICpMb2NhdGlvbiAgICBPUFRJT05BTA0KPiA+ICtHZXRIdHRwUmVz cG9uc2VFdGFnICgNCj4gPiArICBJTiAgUkVERklTSF9SRVNQT05TRSAgKlJlc3BvbnNlLA0KPiA+ ICsgIE9VVCBDSEFSOCAgICAgICAgICAgICAqKkV0YWcNCj4gPiAgICApDQo+ID4gIHsNCj4gPiAr ICBFRklfU1RBVFVTICAgICAgICBTdGF0dXM7DQo+ID4gICAgRURLSUlfSlNPTl9WQUxVRSAgSnNv blZhbHVlOw0KPiA+ICAgIEVES0lJX0pTT05fVkFMVUUgIE9kYXRhVmFsdWU7DQo+ID4gICAgQ0hB UjggICAgICAgICAgICAgKk9kYXRhU3RyaW5nOw0KPiA+IC0gIENIQVI4ICAgICAgICAgICAgICpB c2NpaUxvY2F0aW9uOw0KPiA+ICAgIEVGSV9IVFRQX0hFQURFUiAgICpIZWFkZXI7DQo+ID4gLSAg RUZJX1NUQVRVUyAgICAgICAgU3RhdHVzOw0KPiA+DQo+ID4gLSAgaWYgKFJlc3BvbnNlID09IE5V TEwpIHsNCj4gPiArICBpZiAoKFJlc3BvbnNlID09IE5VTEwpIHx8IChFdGFnID09IE5VTEwpKSB7 DQo+ID4gICAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiA+ICAgIH0NCj4gPg0K PiA+IC0gIGlmICgoRXRhZyA9PSBOVUxMKSAmJiAoTG9jYXRpb24gPT0gTlVMTCkpIHsNCj4gPiAt ICAgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gPiAtICB9DQo+ID4gLQ0KPiA+ICAgIFN0YXR1cyA9 IEVGSV9TVUNDRVNTOw0KPiA+IC0NCj4gPiAtICBpZiAoRXRhZyAhPSBOVUxMKSB7DQo+ID4gLSAg ICAqRXRhZyA9IE5VTEw7DQo+ID4gLQ0KPiA+ICsgICpFdGFnICA9IE5VTEw7DQo+ID4gKyAgaWYg KCFDaGVja0lzU2VydmVyRXRhZ1N1cHBvcnRlZCAoKSkgew0KPiA+ICsgICAgLy8gRG9uJ3QgbG9v ayBmb3IgRVRBRyBoZWFkZXIgb3IgcHJvcGVydHkgaW4gdGhpcyBjYXNlLg0KPiA+ICsgICAgREVC VUcgKChERUJVR19JTkZPLCAiJWE6IFdBUk5JTkcgLSBObyBFVGFnIHN1cHBvcnQgb24gUmVkZmlz aA0KPiBzZXJ2aWNlLlxuIiwgX19mdW5jX18pKTsNCj4gPiArICAgIHJldHVybiBFRklfVU5TVVBQ T1JURUQ7DQo+ID4gKyAgfSBlbHNlIHsNCj4gPiAgICAgIGlmICgqKFJlc3BvbnNlLT5TdGF0dXND b2RlKSA9PSBIVFRQX1NUQVRVU18yMDBfT0spIHsNCj4gPiAgICAgICAgSGVhZGVyID0gSHR0cEZp bmRIZWFkZXIgKFJlc3BvbnNlLT5IZWFkZXJDb3VudCwgUmVzcG9uc2UtDQo+ID5IZWFkZXJzLCBI VFRQX0hFQURFUl9FVEFHKTsNCj4gPiAgICAgICAgaWYgKEhlYWRlciAhPSBOVUxMKSB7DQo+ID4g QEAgLTE3OTMsNTEgKzE4MDMsOTQgQEAgR2V0RXRhZ0FuZExvY2F0aW9uICgNCj4gPg0KPiA+ICAg ICAgaWYgKCpFdGFnID09IE5VTEwpIHsNCj4gPiAgICAgICAgU3RhdHVzID0gRUZJX05PVF9GT1VO RDsNCj4gPiArICAgICAgREVCVUcgKChERUJVR19FUlJPUiwgIiVhOiBGYWlsZWQgdG8gcmV0cmll dmUgRVRhZyBmcm9tIEhUVFANCj4gcmVzcG9uc2UgcGF5bGFvZC5cbiIsIF9fZnVuY19fKSk7DQo+ ID4gICAgICB9DQo+ID4gICAgfQ0KPiA+DQo+ID4gLSAgaWYgKExvY2F0aW9uICE9IE5VTEwpIHsN Cj4gPiAtICAgICpMb2NhdGlvbiAgICAgPSBOVUxMOw0KPiA+IC0gICAgQXNjaWlMb2NhdGlvbiA9 IE5VTEw7DQo+ID4gKyAgcmV0dXJuIFN0YXR1czsNCj4gPiArfQ0KPiA+DQo+ID4gLSAgICBpZiAo KihSZXNwb25zZS0+U3RhdHVzQ29kZSkgPT0gSFRUUF9TVEFUVVNfMjAwX09LKSB7DQo+ID4gLSAg ICAgIEhlYWRlciA9IEh0dHBGaW5kSGVhZGVyIChSZXNwb25zZS0+SGVhZGVyQ291bnQsIFJlc3Bv bnNlLQ0KPiA+SGVhZGVycywgSFRUUF9IRUFERVJfTE9DQVRJT04pOw0KPiA+IC0gICAgICBpZiAo SGVhZGVyICE9IE5VTEwpIHsNCj4gPiAtICAgICAgICBBc2NpaUxvY2F0aW9uID0gQWxsb2NhdGVD b3B5UG9vbCAoQXNjaWlTdHJTaXplIChIZWFkZXItPkZpZWxkVmFsdWUpLA0KPiBIZWFkZXItPkZp ZWxkVmFsdWUpOw0KPiA+IC0gICAgICAgIEFTU0VSVCAoQXNjaWlMb2NhdGlvbiAhPSBOVUxMKTsN Cj4gPiAtICAgICAgfQ0KPiA+ICsvKioNCj4gPiArICBGaW5kICJMb2NhdGlvbiIgZnJvbSBlaXRo ZXIgSFRUUCBoZWFkZXIgb3IgUmVkZmlzaCByZXNwb25zZS4NCj4gPiArDQo+ID4gKyAgQHBhcmFt W2luXSAgUmVzcG9uc2UgICAgICAgIEhUVFAgcmVzcG9uc2UNCj4gPiArICBAcGFyYW1bb3V0XSBM b2NhdGlvbiAgICAgICAgU3RyaW5nIGJ1ZmZlciB0byByZXR1cm4gTG9jYXRpb24NCj4gPiArDQo+ ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0dldEh0dHBSZXNwb25zZUxvY2F0aW9uICgN Cj4gPiArICBJTiAgUkVERklTSF9SRVNQT05TRSAgKlJlc3BvbnNlLA0KPiA+ICsgIE9VVCBFRklf U1RSSU5HICAgICAgICAqTG9jYXRpb24NCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBFRklfU1RB VFVTICAgICAgICBTdGF0dXM7DQo+ID4gKyAgRURLSUlfSlNPTl9WQUxVRSAgSnNvblZhbHVlOw0K PiA+ICsgIEVES0lJX0pTT05fVkFMVUUgIE9kYXRhVmFsdWU7DQo+ID4gKyAgQ0hBUjggICAgICAg ICAgICAgKk9kYXRhU3RyaW5nOw0KPiA+ICsgIENIQVI4ICAgICAgICAgICAgICpBc2NpaUxvY2F0 aW9uOw0KPiA+ICsgIEVGSV9IVFRQX0hFQURFUiAgICpIZWFkZXI7DQo+ID4gKw0KPiA+ICsgIGlm ICgoUmVzcG9uc2UgPT0gTlVMTCkgfHwgKExvY2F0aW9uID09IE5VTEwpKSB7DQo+ID4gKyAgICBy ZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgU3Rh dHVzICAgICAgICA9IEVGSV9TVUNDRVNTOw0KPiA+ICsgICpMb2NhdGlvbiAgICAgPSBOVUxMOw0K PiA+ICsgIEFzY2lpTG9jYXRpb24gPSBOVUxMOw0KPiA+ICsgIGlmICgqKFJlc3BvbnNlLT5TdGF0 dXNDb2RlKSA9PSBIVFRQX1NUQVRVU18yMDBfT0spIHsNCj4gPiArICAgIEhlYWRlciA9IEh0dHBG aW5kSGVhZGVyIChSZXNwb25zZS0+SGVhZGVyQ291bnQsIFJlc3BvbnNlLT5IZWFkZXJzLA0KPiBI VFRQX0hFQURFUl9MT0NBVElPTik7DQo+ID4gKyAgICBpZiAoSGVhZGVyICE9IE5VTEwpIHsNCj4g PiArICAgICAgQXNjaWlMb2NhdGlvbiA9IEFsbG9jYXRlQ29weVBvb2wgKEFzY2lpU3RyU2l6ZSAo SGVhZGVyLT5GaWVsZFZhbHVlKSwNCj4gSGVhZGVyLT5GaWVsZFZhbHVlKTsNCj4gPiArICAgICAg QVNTRVJUIChBc2NpaUxvY2F0aW9uICE9IE5VTEwpOw0KPiA+ICAgICAgfQ0KPiA+ICsgIH0NCj4g Pg0KPiA+IC0gICAgLy8NCj4gPiAtICAgIC8vIE5vIGhlYWRlciBpcyByZXR1cm5lZC4gU2VhcmNo IHBheWxvYWQgZm9yIGxvY2F0aW9uLg0KPiA+IC0gICAgLy8NCj4gPiAtICAgIGlmICgoKkxvY2F0 aW9uID09IE5VTEwpICYmIChSZXNwb25zZS0+UGF5bG9hZCAhPSBOVUxMKSkgew0KPiA+IC0gICAg ICBKc29uVmFsdWUgPSBSZWRmaXNoSnNvbkluUGF5bG9hZCAoUmVzcG9uc2UtPlBheWxvYWQpOw0K PiA+IC0gICAgICBpZiAoSnNvblZhbHVlICE9IE5VTEwpIHsNCj4gPiAtICAgICAgICBPZGF0YVZh bHVlID0gSnNvbk9iamVjdEdldFZhbHVlIChKc29uVmFsdWVHZXRPYmplY3QgKEpzb25WYWx1ZSks DQo+ICJAb2RhdGEuaWQiKTsNCj4gPiAtICAgICAgICBpZiAoT2RhdGFWYWx1ZSAhPSBOVUxMKSB7 DQo+ID4gLSAgICAgICAgICBPZGF0YVN0cmluZyA9IChDSEFSOCAqKUpzb25WYWx1ZUdldEFzY2lp U3RyaW5nIChPZGF0YVZhbHVlKTsNCj4gPiAtICAgICAgICAgIGlmIChPZGF0YVN0cmluZyAhPSBO VUxMKSB7DQo+ID4gLSAgICAgICAgICAgIEFzY2lpTG9jYXRpb24gPSBBbGxvY2F0ZUNvcHlQb29s IChBc2NpaVN0clNpemUgKE9kYXRhU3RyaW5nKSwNCj4gT2RhdGFTdHJpbmcpOw0KPiA+IC0gICAg ICAgICAgICBBU1NFUlQgKEFzY2lpTG9jYXRpb24gIT0gTlVMTCk7DQo+ID4gLSAgICAgICAgICB9 DQo+ID4gKyAgLy8NCj4gPiArICAvLyBObyBoZWFkZXIgaXMgcmV0dXJuZWQuIFNlYXJjaCBwYXls b2FkIGZvciBsb2NhdGlvbi4NCj4gPiArICAvLw0KPiA+ICsgIGlmICgoKkxvY2F0aW9uID09IE5V TEwpICYmIChSZXNwb25zZS0+UGF5bG9hZCAhPSBOVUxMKSkgew0KPiA+ICsgICAgSnNvblZhbHVl ID0gUmVkZmlzaEpzb25JblBheWxvYWQgKFJlc3BvbnNlLT5QYXlsb2FkKTsNCj4gPiArICAgIGlm IChKc29uVmFsdWUgIT0gTlVMTCkgew0KPiA+ICsgICAgICBPZGF0YVZhbHVlID0gSnNvbk9iamVj dEdldFZhbHVlIChKc29uVmFsdWVHZXRPYmplY3QgKEpzb25WYWx1ZSksDQo+ICJAb2RhdGEuaWQi KTsNCj4gPiArICAgICAgaWYgKE9kYXRhVmFsdWUgIT0gTlVMTCkgew0KPiA+ICsgICAgICAgIE9k YXRhU3RyaW5nID0gKENIQVI4ICopSnNvblZhbHVlR2V0QXNjaWlTdHJpbmcgKE9kYXRhVmFsdWUp Ow0KPiA+ICsgICAgICAgIGlmIChPZGF0YVN0cmluZyAhPSBOVUxMKSB7DQo+ID4gKyAgICAgICAg ICBBc2NpaUxvY2F0aW9uID0gQWxsb2NhdGVDb3B5UG9vbCAoQXNjaWlTdHJTaXplIChPZGF0YVN0 cmluZyksDQo+IE9kYXRhU3RyaW5nKTsNCj4gPiArICAgICAgICAgIEFTU0VSVCAoQXNjaWlMb2Nh dGlvbiAhPSBOVUxMKTsNCj4gPiAgICAgICAgICB9DQo+ID4gLQ0KPiA+IC0gICAgICAgIEpzb25W YWx1ZUZyZWUgKEpzb25WYWx1ZSk7DQo+ID4gICAgICAgIH0NCj4gPiAtICAgIH0NCj4gPg0KPiA+ IC0gICAgaWYgKEFzY2lpTG9jYXRpb24gIT0gTlVMTCkgew0KPiA+IC0gICAgICAqTG9jYXRpb24g PSBTdHJBc2NpaVRvVW5pY29kZSAoQXNjaWlMb2NhdGlvbik7DQo+ID4gLSAgICAgIEZyZWVQb29s IChBc2NpaUxvY2F0aW9uKTsNCj4gPiAtICAgIH0gZWxzZSB7DQo+ID4gLSAgICAgIFN0YXR1cyA9 IEVGSV9OT1RfRk9VTkQ7DQo+ID4gKyAgICAgIEpzb25WYWx1ZUZyZWUgKEpzb25WYWx1ZSk7DQo+ ID4gICAgICB9DQo+ID4gICAgfQ0KPiA+DQo+ID4gKyAgaWYgKEFzY2lpTG9jYXRpb24gIT0gTlVM TCkgew0KPiA+ICsgICAgKkxvY2F0aW9uID0gU3RyQXNjaWlUb1VuaWNvZGUgKEFzY2lpTG9jYXRp b24pOw0KPiA+ICsgICAgRnJlZVBvb2wgKEFzY2lpTG9jYXRpb24pOw0KPiA+ICsgIH0gZWxzZSB7 DQo+ID4gKyAgICBTdGF0dXMgPSBFRklfTk9UX0ZPVU5EOw0KPiA+ICsgICAgREVCVUcgKChERUJV R19FUlJPUiwgIiVhOiBGYWlsZWQgdG8gcmV0cmlldmUgTG9jYXRpb24gZnJvbSBIVFRQDQo+IHJl c3BvbnNlIHBheWxhb2QuXG4iLCBfX2Z1bmNfXykpOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gICAg cmV0dXJuIFN0YXR1czsNCj4gPiAgfQ0KPiA+DQo+ID4gKy8qKg0KPiA+ICsNCj4gPiArICBUaGlz IGZ1bmN0aW9uIHJldHVybnMgYSBib29sZWFuIG9mIEVUQUcgc3VwcG9ydCBvbiBSZWRmaXNoIHNl cnZpY2Ugc2lkZS4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCAgICAgVFJVRSAgICBFVEFHIGlzIHN1 cHBvcnRlZCBvbiBSZWRmaXNoIHNlcnZpY2UuDQo+ID4gKyAgQHJldHZhbCAgICAgRkFMU0UgICBF VEFHIGlzIG5vdCBzdXBwb3J0ZWQgb24gUmVkZmlzaCBzZXJ2aWNlLg0KPiA+ICsNCj4gPiArKiov DQo+ID4gK0JPT0xFQU4NCj4gPiArQ2hlY2tJc1NlcnZlckV0YWdTdXBwb3J0ZWQgKA0KPiA+ICsg IFZPSUQNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICByZXR1cm4gRml4ZWRQY2RHZXRCb29sIChQ Y2RSZWRmaXNoU2VydmljZUV0YWdTdXBwb3J0ZWQpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICAvKioN Cj4gPg0KPiA+ICAgIENyZWF0ZSBIVFRQIHBheWxvYWQgYW5kIHNlbmQgdGhlbSB0byByZWRmaXNo IHNlcnZpY2Ugd2l0aCBQQVRDSCBtZXRob2QuDQo+ID4gQEAgLTE4NjEsNyArMTkxNCw3IEBAIENy ZWF0ZVBheWxvYWRUb1BhdGNoUmVzb3VyY2UgKA0KPiA+ICB7DQo+ID4gICAgUkVERklTSF9QQVlM T0FEICAgUGF5bG9hZDsNCj4gPiAgICBFREtJSV9KU09OX1ZBTFVFICBSZXNvdXJjZUpzb25WYWx1 ZTsNCj4gPiAtICBSRURGSVNIX1JFU1BPTlNFICBQb3N0UmVzcG9uc2U7DQo+ID4gKyAgUkVERklT SF9SRVNQT05TRSAgUGF0Y2hSZXNwb25zZTsNCj4gPiAgICBFRklfU1RBVFVTICAgICAgICBTdGF0 dXM7DQo+ID4NCj4gPiAgICBpZiAoKFNlcnZpY2UgPT0gTlVMTCkgfHwgKFRhcmdldFBheWxvYWQg PT0gTlVMTCkgfHwgSVNfRU1QVFlfU1RSSU5HDQo+IChKc29uKSkgew0KPiA+IEBAIC0xODc2LDgg KzE5MjksOCBAQCBDcmVhdGVQYXlsb2FkVG9QYXRjaFJlc291cmNlICgNCj4gPiAgICAgIGdvdG8g RVhJVF9GUkVFX0pTT05fVkFMVUU7DQo+ID4gICAgfQ0KPiA+DQo+ID4gLSAgWmVyb01lbSAoJlBv c3RSZXNwb25zZSwgc2l6ZW9mIChSRURGSVNIX1JFU1BPTlNFKSk7DQo+ID4gLSAgU3RhdHVzID0g UmVkZmlzaFBhdGNoVG9QYXlsb2FkIChUYXJnZXRQYXlsb2FkLCBQYXlsb2FkLCAmUG9zdFJlc3Bv bnNlKTsNCj4gPiArICBaZXJvTWVtICgmUGF0Y2hSZXNwb25zZSwgc2l6ZW9mIChSRURGSVNIX1JF U1BPTlNFKSk7DQo+ID4gKyAgU3RhdHVzID0gUmVkZmlzaFBhdGNoVG9QYXlsb2FkIChUYXJnZXRQ YXlsb2FkLCBQYXlsb2FkLA0KPiAmUGF0Y2hSZXNwb25zZSk7DQo+ID4gICAgaWYgKEVGSV9FUlJP UiAoU3RhdHVzKSkgew0KPiA+ICAgICAgREVCVUcgKChERUJVR19FUlJPUiwgIiVhOiVkIEZhaWxl ZCB0byBQQVRDSCBwYXlsb2FkIHRvIFJlZGZpc2gNCj4gc2VydmljZS5cbiIsIF9fZnVuY19fLCBf X0xJTkVfXykpOw0KPiA+DQo+ID4gQEAgLTE4ODUsNyArMTkzOCw3IEBAIENyZWF0ZVBheWxvYWRU b1BhdGNoUmVzb3VyY2UgKA0KPiA+ICAgICAgREVCVUcgKChERUJVR19FUlJPUiwgIiVhOiBSZXF1 ZXN0OlxuIiwgX19mdW5jX18pKTsNCj4gPiAgICAgIER1bXBSZWRmaXNoUGF5bG9hZCAoREVCVUdf RVJST1IsIFBheWxvYWQpOw0KPiA+ICAgICAgREVCVUcgKChERUJVR19FUlJPUiwgIiVhOiBSZXNw b25zZTpcbiIsIF9fZnVuY19fKSk7DQo+ID4gLSAgICBEdW1wUmVkZmlzaFJlc3BvbnNlIChfX2Z1 bmNfXywgREVCVUdfRVJST1IsICZQb3N0UmVzcG9uc2UpOw0KPiA+ICsgICAgRHVtcFJlZGZpc2hS ZXNwb25zZSAoX19mdW5jX18sIERFQlVHX0VSUk9SLCAmUGF0Y2hSZXNwb25zZSk7DQo+ID4gICAg ICBERUJVR19DT0RFX0VORCAoKTsNCj4gPiAgICAgIGdvdG8gRVhJVF9GUkVFX0pTT05fVkFMVUU7 DQo+ID4gICAgfQ0KPiA+IEBAIC0xODkzLDE2ICsxOTQ2LDIwIEBAIENyZWF0ZVBheWxvYWRUb1Bh dGNoUmVzb3VyY2UgKA0KPiA+ICAgIC8vDQo+ID4gICAgLy8gRmluZCBFVGFnDQo+ID4gICAgLy8N Cj4gPiAtICBTdGF0dXMgPSBHZXRFdGFnQW5kTG9jYXRpb24gKCZQb3N0UmVzcG9uc2UsIEV0YWcs IE5VTEwpOw0KPiA+IC0gIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiArICBTdGF0dXMg PSBHZXRIdHRwUmVzcG9uc2VFdGFnICgmUGF0Y2hSZXNwb25zZSwgRXRhZyk7DQo+ID4gKyAgaWYg KFN0YXR1cyA9PSBFRklfVU5TVVBQT1JURUQpIHsNCj4gPiArICAgIFN0YXR1cyA9IEVGSV9TVUND RVNTOw0KPiA+ICsgICAgREVCVUcgKChERUJVR19JTkZPLCAiJWE6IFdBUk5JTkcgLSBFVEFHIGlz IG5vdCBzdXBwb3J0ZWQgb24NCj4gUmVkZmlzaCBzZXJ2aWNlLlxuIiwgX19mdW5jX18pKTsNCj4g PiArICB9IGVsc2Ugew0KPiA+ICAgICAgU3RhdHVzID0gRUZJX0RFVklDRV9FUlJPUjsNCj4gPiAr ICAgIERFQlVHICgoREVCVUdfRVJST1IsICIlYTogRmFpbCB0byBnZXQgTG9jYXRpb24gaGVhZGVy IG5vciBwcm9lcnR5DQo+IGZyb20gSFRUUCByZXNwb25zZSBwYXlsb2FkLlxuIiwgX19mdW5jX18p KTsNCj4gPiAgICB9DQo+ID4NCj4gPiAgICBSZWRmaXNoRnJlZVJlc3BvbnNlICgNCj4gPiAtICAg IFBvc3RSZXNwb25zZS5TdGF0dXNDb2RlLA0KPiA+IC0gICAgUG9zdFJlc3BvbnNlLkhlYWRlckNv dW50LA0KPiA+IC0gICAgUG9zdFJlc3BvbnNlLkhlYWRlcnMsDQo+ID4gLSAgICBQb3N0UmVzcG9u c2UuUGF5bG9hZA0KPiA+ICsgICAgUGF0Y2hSZXNwb25zZS5TdGF0dXNDb2RlLA0KPiA+ICsgICAg UGF0Y2hSZXNwb25zZS5IZWFkZXJDb3VudCwNCj4gPiArICAgIFBhdGNoUmVzcG9uc2UuSGVhZGVy cywNCj4gPiArICAgIFBhdGNoUmVzcG9uc2UuUGF5bG9hZA0KPiA+ICAgICAgKTsNCj4gPg0KPiA+ ICBFWElUX0ZSRUVfSlNPTl9WQUxVRToNCj4gPiBAQCAtMTkzNSw3ICsxOTkyLDcgQEAgQ3JlYXRl UGF5bG9hZFRvUG9zdFJlc291cmNlICgNCj4gPiAgICBJTiAgUkVERklTSF9QQVlMT0FEICAqVGFy Z2V0UGF5bG9hZCwNCj4gPiAgICBJTiAgQ0hBUjggICAgICAgICAgICAqSnNvbiwNCj4gPiAgICBP VVQgRUZJX1NUUklORyAgICAgICAqTG9jYXRpb24sDQo+ID4gLSAgT1VUIENIQVI4ICAgICAgICAg ICAgKipFdGFnDQo+ID4gKyAgT1VUIENIQVI4ICAgICAgICAgICAgKipFdGFnIE9QVElPTkFMDQo+ ID4gICAgKQ0KPiA+ICB7DQo+ID4gICAgUkVERklTSF9QQVlMT0FEICAgUGF5bG9hZDsNCj4gPiBA QCAtMTk0Myw3ICsyMDAwLDcgQEAgQ3JlYXRlUGF5bG9hZFRvUG9zdFJlc291cmNlICgNCj4gPiAg ICBSRURGSVNIX1JFU1BPTlNFICBQb3N0UmVzcG9uc2U7DQo+ID4gICAgRUZJX1NUQVRVUyAgICAg ICAgU3RhdHVzOw0KPiA+DQo+ID4gLSAgaWYgKChTZXJ2aWNlID09IE5VTEwpIHx8IChUYXJnZXRQ YXlsb2FkID09IE5VTEwpIHx8IElTX0VNUFRZX1NUUklORw0KPiAoSnNvbikgfHwgKExvY2F0aW9u ID09IE5VTEwpIHx8IChFdGFnID09IE5VTEwpKSB7DQo+ID4gKyAgaWYgKChTZXJ2aWNlID09IE5V TEwpIHx8IChUYXJnZXRQYXlsb2FkID09IE5VTEwpIHx8IElTX0VNUFRZX1NUUklORw0KPiAoSnNv bikgfHwgKExvY2F0aW9uID09IE5VTEwpKSB7DQo+ID4gICAgICByZXR1cm4gRUZJX0lOVkFMSURf UEFSQU1FVEVSOw0KPiA+ICAgIH0NCj4gPg0KPiA+IEBAIC0xOTcwLDEyICsyMDI3LDIyIEBAIENy ZWF0ZVBheWxvYWRUb1Bvc3RSZXNvdXJjZSAoDQo+ID4gICAgICBnb3RvIEVYSVRfRlJFRV9KU09O X1ZBTFVFOw0KPiA+ICAgIH0NCj4gPg0KPiA+ICsgIFN0YXR1cyA9IEdldEh0dHBSZXNwb25zZUV0 YWcgKCZQb3N0UmVzcG9uc2UsIEV0YWcpOw0KPiA+ICsgIGlmIChTdGF0dXMgPT0gRUZJX1VOU1VQ UE9SVEVEKSB7DQo+ID4gKyAgICBTdGF0dXMgPSBFRklfU1VDQ0VTUzsNCj4gPiArICAgIERFQlVH ICgoREVCVUdfSU5GTywgIiVhOiBXQVJOSU5HIC0gRVRBRyBpcyBub3Qgc3VwcG9ydGVkIG9uDQo+ IFJlZGZpc2ggc2VydmljZS5cbiIsIF9fZnVuY19fKSk7DQo+ID4gKyAgfSBlbHNlIGlmIChFRklf RVJST1IgKFN0YXR1cykpIHsNCj4gPiArICAgIFN0YXR1cyA9IEVGSV9ERVZJQ0VfRVJST1I7DQo+ ID4gKyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiJWE6IEZhaWwgdG8gZ2V0IEVUQUcgaGVhZGVy IG5vciBFVEFHDQo+IHByb3BlcnR5ZnJvbSBIVFRQIHJlc3BvbnNlIHBheWxvYWQuXG4iLCBfX2Z1 bmNfXykpOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gICAgLy8NCj4gPiAgICAvLyBwZXIgUmVkZmlz aCBzcGVjLiB0aGUgVVJMIG9mIG5ldyByZXNvdXJjZSB3aWxsIGJlIHJldHVybmVkIGluICJMb2Nh dGlvbiINCj4gaGVhZGVyLg0KPiA+ICAgIC8vDQo+ID4gLSAgU3RhdHVzID0gR2V0RXRhZ0FuZExv Y2F0aW9uICgmUG9zdFJlc3BvbnNlLCBFdGFnLCBMb2NhdGlvbik7DQo+ID4gKyAgU3RhdHVzID0g R2V0SHR0cFJlc3BvbnNlTG9jYXRpb24gKCZQb3N0UmVzcG9uc2UsIExvY2F0aW9uKTsNCj4gPiAg ICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gICAgICBTdGF0dXMgPSBFRklfREVWSUNF X0VSUk9SOw0KPiA+ICsgICAgREVCVUcgKChERUJVR19FUlJPUiwgIiVhOiBGYWlsIHRvIGdldCBM b2NhdGlvbiBoZWFkZXIgbm9yIHByb2VydHkNCj4gZnJvbSBIVFRQIHJlc3BvbnNlIHBheWxvYWQu XG4iLCBfX2Z1bmNfXykpOw0KPiA+ICAgIH0NCj4gPg0KPiA+ICAgIFJlZGZpc2hGcmVlUmVzcG9u c2UgKA0KPiA+IEBAIC0zMTE3LDYgKzMxODQsMTEgQEAgQ2hlY2tFdGFnICgNCj4gPiAgew0KPiA+ ICAgIENIQVI4ICAqRXRhZ0luRGI7DQo+ID4NCj4gPiArICBpZiAoIUNoZWNrSXNTZXJ2ZXJFdGFn U3VwcG9ydGVkICgpKSB7DQo+ID4gKyAgICBERUJVRyAoKERFQlVHX0lORk8sICIlYTogV0FSTklO RyAtIEVUQUcgaXMgbm90IHN1cHBvcnRlZCwgYWx3YXlzDQo+IHJldHVybnMgRkFMU0UgdG8gY29u c3VtZSByZXNvdXJjZSAoUGVyZm9ybWFuY2Ugd291bGQgYmUgcmVkdWNlZCkuXG4iLA0KPiBfX2Z1 bmNfXykpOw0KPiA+ICsgICAgcmV0dXJuIEZBTFNFOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gICAg aWYgKElTX0VNUFRZX1NUUklORyAoVXJpKSkgew0KPiA+ICAgICAgcmV0dXJuIEZBTFNFOw0KPiA+ ICAgIH0NCj4gPiAtLQ0KPiA+IDIuMzcuMS53aW5kb3dzLjENCj4gPg0KPiA+DQo+ID4NCj4gPiAN Cj4gPg0KPiA+DQoNCgotPS09LT0tPS09LT0tPS09LT0tPS09LQpHcm91cHMuaW8gTGlua3M6IFlv dSByZWNlaXZlIGFsbCBtZXNzYWdlcyBzZW50IHRvIHRoaXMgZ3JvdXAuClZpZXcvUmVwbHkgT25s aW5lICgjMTEzMjMyKTogaHR0cHM6Ly9lZGsyLmdyb3Vwcy5pby9nL2RldmVsL21lc3NhZ2UvMTEz MjMyCk11dGUgVGhpcyBUb3BpYzogaHR0cHM6Ly9ncm91cHMuaW8vbXQvMTAzNTE5Mjg3Lzc2ODYx NzYKR3JvdXAgT3duZXI6IGRldmVsK293bmVyQGVkazIuZ3JvdXBzLmlvClVuc3Vic2NyaWJlOiBo dHRwczovL2VkazIuZ3JvdXBzLmlvL2cvZGV2ZWwvdW5zdWIgW3JlYmVjY2FAb3BlbmZ3LmlvXQot PS09LT0tPS09LT0tPS09LT0tPS09LQoKDQo=