From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id A6C1245ADF; Tue, 8 Oct 2024 08:19:42 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 4FD43402D4; Tue, 8 Oct 2024 08:19:42 +0200 (CEST) Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2052.outbound.protection.outlook.com [40.107.223.52]) by mails.dpdk.org (Postfix) with ESMTP id EFB214025D for ; Tue, 8 Oct 2024 08:19:40 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=H9v+eb4GQbtSMnaScPCZCg2C5MGM9iE0LBCHfZljj2RMm5yuaEz8xiYGHAVbo7yBEY5K2slRmYiblUduNo60LJRqbNQkaUd80p5Ei0ptB8ZyyXMfdR8W3ybQzMy5urL5ui3mhI4vqTEKudybPLr14txx3aTaIqB3ZZGKYTOcHExM9Y6RVFjbJ26teJJ50RzvNYV1wliyOs+jYZCMXPxq6jkT5X0Sdhe25M+kqc3sPtJZ/hZfKPC4XDtEbXMEvQ4JLToC6uJQSyhuhm665yTJ2zi2LJYB/cli1mBE3UT9CalLskB64yJH9Ze+Ft5n9J8r/Iax12mHS0A2yGXKIbxUxA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=E5Ymk/hzyTI+YVTLyy+gNK4ET4dJ0WlUwoTr8WMOyQU=; b=RvBhnS2m1YJPFBwHzyH9+NZN+yYAVa2qkJiA2esfdWzUCLJ8p6+IQn3vv0eNOKaRae9/OzxPzlfIElqUPc16sv9wyzglrTLQo8LjMYYDyvLi998ilHar5kw+Sz+uY9qZr8d6zIObgEIZdEz+blW6e0DQeiRCHpv3gS08fLri4bwHWDuR3c6wT0q/frVlwyYDPWAsULuf/9vfcXwDnaHwyBHrN/M95AOtjKVQAo95EIjy0J2PspJHWPifSLFND6BSCGIpwc9Up8p+//PmgpJC+ic+TjKleqoSfjPh4U9/ptiaipkwRWPO0QXkbM/6dgOzZobxmORoKe9kkn+fbDlBQQ== 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=E5Ymk/hzyTI+YVTLyy+gNK4ET4dJ0WlUwoTr8WMOyQU=; b=pvPNWKq/ThKY32cC0RWMwdRyMfdYrnNqpl8GQLrv7h4CbW/nV4vJd10sQeme5JgMPRQBumVR07CVa3hfsj+Ts7423Bu4VRHqlwyvoWJRcgi4gknZ4d9I7BKWWYKdfo6tVSwHXyn96n/wxlyecFRuJQoAwnjeHHaqJPOxur7kQJQ= Received: from CH3PR12MB8233.namprd12.prod.outlook.com (2603:10b6:610:129::15) by LV2PR12MB5847.namprd12.prod.outlook.com (2603:10b6:408:174::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.22; Tue, 8 Oct 2024 06:19:38 +0000 Received: from CH3PR12MB8233.namprd12.prod.outlook.com ([fe80::278f:5cc5:549c:3515]) by CH3PR12MB8233.namprd12.prod.outlook.com ([fe80::278f:5cc5:549c:3515%5]) with mapi id 15.20.8026.020; Tue, 8 Oct 2024 06:19:38 +0000 From: "Tummala, Sivaprasad" To: "lihuisong (C)" CC: "dev@dpdk.org" , "david.hunt@intel.com" , "anatoly.burakov@intel.com" , "radu.nicolau@intel.com" , "jerinj@marvell.com" , "cristian.dumitrescu@intel.com" , "konstantin.ananyev@huawei.com" , "Yigit, Ferruh" , "gakhil@marvell.com" Subject: RE: [PATCH v2 2/4] power: refactor uncore power management library Thread-Topic: [PATCH v2 2/4] power: refactor uncore power management library Thread-Index: AQHa97jzYq7SA5JfT0Cg5UYuKgd3rbI7E1YAgEEq8TA= Date: Tue, 8 Oct 2024 06:19:38 +0000 Message-ID: References: <20240720165030.246294-1-sivaprasad.tummala@amd.com> <20240826130650.320130-1-sivaprasad.tummala@amd.com> <20240826130650.320130-3-sivaprasad.tummala@amd.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: MSIP_Label_dce362fe-1558-4fb5-9f64-8a6240d76441_ActionId=d8b42570-c581-4019-ad5b-c5d37df7f703; MSIP_Label_dce362fe-1558-4fb5-9f64-8a6240d76441_ContentBits=0; MSIP_Label_dce362fe-1558-4fb5-9f64-8a6240d76441_Enabled=true; MSIP_Label_dce362fe-1558-4fb5-9f64-8a6240d76441_Method=Standard; MSIP_Label_dce362fe-1558-4fb5-9f64-8a6240d76441_Name=AMD Internal Distribution Only; MSIP_Label_dce362fe-1558-4fb5-9f64-8a6240d76441_SetDate=2024-10-08T00:13:12Z; MSIP_Label_dce362fe-1558-4fb5-9f64-8a6240d76441_SiteId=3dd8961f-e488-4e60-8e11-a82d994e183d; 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: CH3PR12MB8233:EE_|LV2PR12MB5847:EE_ x-ms-office365-filtering-correlation-id: 3fac625e-806e-4013-c1bc-08dce761301e x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|1800799024|366016|376014|38070700018; x-microsoft-antispam-message-info: =?utf-8?B?ZXE3RVNGcDVSQTFZbEZ3Z3I3VU1FSnlvUk5IZGhlZUgzN2dZSy93dlZCUW5B?= =?utf-8?B?N2JXQkVyZnc2WnJaY1gvUkZGOFhkTzBpd1M0TFRZQXJmbFJWRmk2R0U1QVk0?= =?utf-8?B?RUh1UURqeFYvRGR0ZXhhRkhhU2IwMWY0dkFWeE4xdHlpeGUzQmwrdCtoQmNT?= =?utf-8?B?eWZJdnZSVEZYOUhhVHVGQXMyczJxMzJxTGRMS3hxV2lXWmttU0xnbm05RDFF?= =?utf-8?B?NGhqMTBqVHM2cTN0KzNGVVM1eVdTSXUveEpCenBOWXRGMHkvWWJEZG9hMk1R?= =?utf-8?B?Y2w1SnBhblFNZFYrd1ZhZXBJNTJnMUg5N09VK0IzSXFMK2RJRWN4L0F2Q2Vv?= =?utf-8?B?RXlCQUxVWHVsTk4vUXBualdPOG1ZZ0IwMXFRUml1cERra0l2Z24xd3QwT0NB?= =?utf-8?B?ekk3ZDBSeHZZajhtOHpQTzRXeVAwUlVaOU5zeG1YaHMzT28wWndvTGY5ZVFT?= =?utf-8?B?VSs5VEFGdUNING1kNzQ0SEwzNWx5ZUxWK3U1WXZPeHliemZHYis5dUx3T3RZ?= =?utf-8?B?QUxxSU9qaVNwbXFFdDhENHd4ZTB0dUhmdHpvMGRENzB4UkxVbmF5a2htTDhs?= =?utf-8?B?MDFJeG5VVmNDdTFnbmQ4SDd2SmxhRDRPbEYwTHdiRnFlaEpzeFdpOUxOT25m?= =?utf-8?B?dzR6djZtaHlpVWNzTkN4Qm16eUpVdEFEMkxMajNWZUJjSzAzelhOUStCVGdi?= =?utf-8?B?cXZRc3lSRmtCNW5sWHlWMmliQ1Q2MmdoK0svNGJ1T2YzUzJkN1U4OXNOcHpT?= =?utf-8?B?dkhsOGVjdGkrWFhpblNETUpNVEVEMnk4UXJqeU1nelQyUnFzeFlxU01zc1BH?= =?utf-8?B?elZob01xU0tnMVBFYWNoT2o3QTJETGFWTVZNVURWbFpVNWh6SkxLamk0dW5Q?= =?utf-8?B?UUUxS1pHZ1Q4ay9iU2xjTEYydjQ3aFc5ZGZzN1FGZUdqSkp3NWI4b0RDOWJ0?= =?utf-8?B?Q1kwQ1d2bDcvR2FMbEgycm0xWEo1anBKZUdoeEprbDF2UGxwUmxLTmZ4VW5t?= =?utf-8?B?YzQ0bUdkNUczTXhFYlF5U3ZhVU0rUUN2Z3hPeWlLQ2JsOU96SXVoMDJqRUND?= =?utf-8?B?MW4vaVZGYlBrTXFQS2JiSzRNOXBzNmxhaFJ1U2REL2Fxd1VXRDMrbmlKejZD?= =?utf-8?B?MHZ3UVY1bENHSjhheWJ1czJGMFYrSXdaU0dhL3VlK0dDeGx2S0RwTE5zQUtI?= =?utf-8?B?UHVIV2lkaGtLL0pGaTBTZEVFQVkxemRneG9lSnN2dGQ3cVdoRmlpakx3MWRN?= =?utf-8?B?eVZqVDU3NVBmNTVEZUpKbjBUUkNXSmhEM1VFRnBDUW5sNzVnbTlkelgwNWVk?= =?utf-8?B?TmJZbEtESHlFc1ZaUW54Ulpxc0pTakFEaUd2UE51RnNUYXlLV0htOWFtUndT?= =?utf-8?B?ZGlUVDlBS1pUYU81eksvRGpGY2FyRDJqc3RRL01MbysvWkFhei9SZ0V2WFAr?= =?utf-8?B?d1ptWmdVMzNMYXdRNTFQemtOOFNWUFY1WG5LdVQ0VjdqZUtINGl6ckRmbmIv?= =?utf-8?B?N0habmI0TG5JWGJIYysxUnpTdWJxdWh0ejB6dkZhSmFnTm9sQUYwMzlUUGtL?= =?utf-8?B?eU1zbEc2emgrb0pjcXE4SHZLeXVVcnVybHZRcEVtSmJOZFVMNkh0cUo1aVZ1?= =?utf-8?B?Vk1CaXhMdGpwaStHSytVUXczUmtkTklGb0lKbWdwUlBmRVJaMXRqZkc2VkRC?= =?utf-8?B?Y3Y2Y2FYK1BobHNkUmdLTDR0RnJXVkFZTnVDSXpHS2dRZ1F6MG1HRGhmUlYv?= =?utf-8?B?cTdZSjR1R1dyajdZeXNZb09hNmZDcDhHazVYTmxjaXVrMC94NjlFMTZ4N2dX?= =?utf-8?B?ZG40UkEzelM5aUhLd1pVdz09?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CH3PR12MB8233.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(366016)(376014)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Z2tzZHFQcGpBMWZISFNZMTVlN25vZndwcG9ONnJEVHVlTXdhKzEyL0dTc0dJ?= =?utf-8?B?VklkZlpQRjArNjdsMXJRbWg4bmloaXhKVTRUcG1ZZVcyZW5nWGlUWW1Eb3NV?= =?utf-8?B?MElJSTRnUC9DVFdEL0wxdU5waCtneXZGQXArK25MMDhhK0hlU2dpMlloMk01?= =?utf-8?B?RnBIZW9LVndRL00rVDFFNWlYQkNNUCt2WExiM2JyZFpkckhnZDd1Z3hvK21N?= =?utf-8?B?cmVCUERTdzYwSUZZVmpZVFBHNzQ0M2o5d3A4bGRJQzlWQmI1NjdMcEY5RU8x?= =?utf-8?B?NUdBbCtONThPMXpNVUY2YVBycXg1SkNBOEVuQVQxMzZEWm5wd042b1lzTUtq?= =?utf-8?B?elVSMU9kYnlmOUYrV0gvMXptazB0VVdCdGJ6RFlVa0QrR3A0akp4clRjN1Vq?= =?utf-8?B?cjJqdWl2bkJMaFY4dFNBZVNEYkZEYkFmQnBzU0Rhcy9uRWw3b2FqRTB1N2pF?= =?utf-8?B?NHJXa2w5cHA3NUlXa0c4SmZhb1U2WUtSTW5neHU3UmFCcU9LNG9YeDlOSzJo?= =?utf-8?B?NlNWNkN2bXpRQUZwSnNwdU5uNTBPR3RZZWt6SnBKUWxDU2dqYUFJTVVyOUs4?= =?utf-8?B?WDFaTkpCREt5QzN0MnZEc1VEcXZMMnN6NHJPVWppYzJId2pqeExuY1ZPRm1y?= =?utf-8?B?aXp6K0hqVEljZmhXRVBEeTQ3WXpHY2FKTWtJaTRvZVJFSEQxdjd1Mi9sM1h0?= =?utf-8?B?QklzNjBzK1NSNjF4c3lYdlE4SmVPbUFJZGxUWjdodExjakIvQzNuWllSU2dI?= =?utf-8?B?NGJscjZNSWdtTmVTZUV3VC9yRUFvb0pScFo1aEgwY0JQcEVPajRWbVZzT2Q4?= =?utf-8?B?RW93MXAwc0dyOGwwSXdtMGM5ZUhSc29DSzBvN1dMNGt0TEszVVFiZXF3OHc4?= =?utf-8?B?T3htblJKd242bWZxLzErNWZLYlFSV3JJNlBmTTYrM0pVdGxlQVdGRHpYZU5j?= =?utf-8?B?aWpWVE5nZTUxM3lGVk04ejIwVlVKRWRmV21SanJKK2NlRi94dk03OWVCWW16?= =?utf-8?B?aGUrZnZXRzRxQVQ4a1p0TjFna3ZIODI1TnNzYWxTeURyOTU0SmZwVm1xcTB6?= =?utf-8?B?K1g0S1Q2ZUxtV1lpM3lxSWFWT1ZTeGF5ays4bUp3Y0NDTy92RzhOWWpNa0FD?= =?utf-8?B?VXNucm01cnhUNVdjWGpQUE1oMjJZenUyREo3cDBwOVVkazhVYjFEdmh1WnR2?= =?utf-8?B?UERLd2dibUZ5c1hxSThoOUN1NWxIT1FseXNiQjlNcVRNbFRPLzluMTZXbXp6?= =?utf-8?B?UFN3ODNZZ1hzYStnTFZ5UE0rZkJBdWFYcFVZckFnbG9MY040RU1aTmplWXph?= =?utf-8?B?bGVWU3Y2b2FBem40UDdhZzZ3MTBYdElha2ErQ1VXYjVZSG1UNy85a2dRNSsv?= =?utf-8?B?RGFLYVRvT24vbmVoazNYYXpYQ3ZXZDRXbERZSENvRWNOTWdOdHc3UDVqTlZQ?= =?utf-8?B?RGNLRTFsckJuT1RBa0JWd2wvWUFWUTkvUmpXUVl4Z3l3WkNma1d2ODJqNkRt?= =?utf-8?B?K2tlVmZEVVBEam9nUnRHbUg3c015cmJQZG5HTE5CMXUzZ2pWalNFL2xRNkkx?= =?utf-8?B?ME9NZFdMbURjUngvS2UvSC9SbFB5UVRBZkovQ3ZDY3ZuTTZmTlFSQ3FGMjNN?= =?utf-8?B?cWdFTjBPMmNoQ3ByaWNrbU44OU9hdGRQYnFlRHQyUFU1ckR2OERCcUsraGJR?= =?utf-8?B?QjZid0FEdVZiL2QxWVp6WlBwVnNkS1orOVRsZzJXM2FmY3Zpbnl2cUFxcFZv?= =?utf-8?B?T1pnTVVhaWhZVWtPZi9PSVlCSitDd0FzVmtPMkVFNEtFNGx0R0ZaZVowdW8r?= =?utf-8?B?dnlXaWh6Z2FtbDJHWk5rWThLSUs3NTloOUFlUElWc21qL1pDbm5oM0ZsRC9E?= =?utf-8?B?STZtSGFWaG1KRkNaYm10Q0M3V2todlhDcVlZZXp4VEZKR1FVUzJ6S2g0Vkk2?= =?utf-8?B?c2NMUkN0SnNORklSMmtueW50WVVOT0ZBbXMzZkg0b0lEQTVGQkpBVS9ZbWl2?= =?utf-8?B?MmhjMXcrK2lETUxaTk8ySHNSN21xZjBCNUxWR0FxbnZtSUduQ0MwakgzZDh2?= =?utf-8?B?aUtBZFhtZ2s2Y2FGRG9JZGJIZ08zOC9SclZYejRwbVFZbXNQbnd3ZnVMK3li?= =?utf-8?Q?C364=3D?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CH3PR12MB8233.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3fac625e-806e-4013-c1bc-08dce761301e X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Oct 2024 06:19:38.4313 (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: fqsCtnVWOaTCi5CEbtATpxpw2sNhO0hi3uBOc1Sne+5twVTk+7zZN2bdu7CmROxaIvS9mu2cKz7ezcstw75UIg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV2PR12MB5847 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org W0FNRCBPZmZpY2lhbCBVc2UgT25seSAtIEFNRCBJbnRlcm5hbCBEaXN0cmlidXRpb24gT25seV0N Cg0KSGkgTGlodWlzb25nLA0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206 IGxpaHVpc29uZyAoQykgPGxpaHVpc29uZ0BodWF3ZWkuY29tPg0KPiBTZW50OiBUdWVzZGF5LCBB dWd1c3QgMjcsIDIwMjQgNjozMyBQTQ0KPiBUbzogVHVtbWFsYSwgU2l2YXByYXNhZCA8U2l2YXBy YXNhZC5UdW1tYWxhQGFtZC5jb20+DQo+IENjOiBkZXZAZHBkay5vcmc7IGRhdmlkLmh1bnRAaW50 ZWwuY29tOyBhbmF0b2x5LmJ1cmFrb3ZAaW50ZWwuY29tOw0KPiByYWR1Lm5pY29sYXVAaW50ZWwu Y29tOyBqZXJpbmpAbWFydmVsbC5jb207IGNyaXN0aWFuLmR1bWl0cmVzY3VAaW50ZWwuY29tOw0K PiBrb25zdGFudGluLmFuYW55ZXZAaHVhd2VpLmNvbTsgWWlnaXQsIEZlcnJ1aCA8RmVycnVoLllp Z2l0QGFtZC5jb20+Ow0KPiBnYWtoaWxAbWFydmVsbC5jb20NCj4gU3ViamVjdDogUmU6IFtQQVRD SCB2MiAyLzRdIHBvd2VyOiByZWZhY3RvciB1bmNvcmUgcG93ZXIgbWFuYWdlbWVudCBsaWJyYXJ5 DQo+DQo+IENhdXRpb246IFRoaXMgbWVzc2FnZSBvcmlnaW5hdGVkIGZyb20gYW4gRXh0ZXJuYWwg U291cmNlLiBVc2UgcHJvcGVyIGNhdXRpb24NCj4gd2hlbiBvcGVuaW5nIGF0dGFjaG1lbnRzLCBj bGlja2luZyBsaW5rcywgb3IgcmVzcG9uZGluZy4NCj4NCj4NCj4gSGkgU2l2YXByYXNhZCwNCj4N Cj4gU3VnZ2VzdCB0byBzcGxpdCB0aGlzIHBhdGNoIGludG8gdHdvIHBhdGNoZXMgZm9yIGVhc2ls ZXIgdG8gcmV2aWV3Og0KPiBwYXRjaC0xOiBhYnN0cmFjdCBhIGZpbGUgZm9yIHVuY29yZSBkdmZz IGNvcmUgbGV2ZWwsIG5hbWVseSwgdGhlDQo+IHJ0ZV9wb3dlcl91bmNvcmVfb3BzLmMgeW91IGRp ZC4NCj4gcGF0Y2gtMjogbW92ZSBhbmQgcmVuYW1lLCBsaWIvcG93ZXIvcG93ZXJfaW50ZWxfdW5j b3JlLmMgPT4NCj4gZHJpdmVycy9wb3dlci9pbnRlbF91bmNvcmUvaW50ZWxfdW5jb3JlLmMNCj4N Cj4gcGF0Y2hbMS80XSBpcyBhbHNvIHRvbyBiaWcgYW5kIG5vdCBnb29kIHRvIHJldmlldy4NCj4N Cj4gSW4gYWRkaXRpb24sIEkgaGF2ZSBzb21lIHF1ZXN0aW9uIGFuZCBhbSBub3Qgc3VyZSBpZiB3 ZSBjYW4gYWRqdXN0IHVuY29yZSBpbml0DQo+IHByb2Nlc3MuDQo+DQo+IC9IdWlzb25nDQo+DQo+ DQo+IOWcqCAyMDI0LzgvMjYgMjE6MDYsIFNpdmFwcmFzYWQgVHVtbWFsYSDlhpnpgZM6DQo+ID4g VGhpcyBwYXRjaCByZWZhY3RvcnMgdGhlIHBvd2VyIG1hbmFnZW1lbnQgbGlicmFyeSwgYWRkcmVz c2luZyB1bmNvcmUNCj4gPiBwb3dlciBtYW5hZ2VtZW50LiBUaGUgcHJpbWFyeSBjaGFuZ2VzIGlu dm9sdmUgdGhlIGNyZWF0aW9uIG9mDQo+ID4gZGVkaWNhdGVkIGRpcmVjdG9yaWVzIGZvciBlYWNo IGRyaXZlciB3aXRoaW4gJ2RyaXZlcnMvcG93ZXIvdW5jb3JlLyonLg0KPiA+IFRoZSBhZGp1c3Rt ZW50IG9mIG1lc29uLmJ1aWxkIGZpbGVzIGVuYWJsZXMgdGhlIHNlbGVjdGl2ZSBhY3RpdmF0aW9u DQo+ID4gb2YgaW5kaXZpZHVhbCBkcml2ZXJzLg0KPiA+DQo+ID4gVGhpcyByZWZhY3RvciBzaWdu aWZpY2FudGx5IGltcHJvdmVzIGNvZGUgb3JnYW5pemF0aW9uLCBlbmhhbmNlcw0KPiA+IGNsYXJp dHkgYW5kIGJvb3N0cyBtYWludGFpbmFiaWxpdHkuIEl0IGxheXMgdGhlIGZvdW5kYXRpb24gZm9y IG1vcmUNCj4gPiBmb2N1c2VkIGRldmVsb3BtZW50IG9uIGluZGl2aWR1YWwgZHJpdmVycyBhbmQg ZmFjaWxpdGF0ZXMgc2VhbWxlc3MNCj4gPiBpbnRlZ3JhdGlvbiBvZiBmdXR1cmUgZW5oYW5jZW1l bnRzLCBwYXJ0aWN1bGFybHkgdGhlIEFNRCB1bmNvcmUgZHJpdmVyLg0KPiA+DQo+ID4gU2lnbmVk LW9mZi1ieTogU2l2YXByYXNhZCBUdW1tYWxhIDxzaXZhcHJhc2FkLnR1bW1hbGFAYW1kLmNvbT4N Cj4gPiAtLS0NCj4gPiAgIC4uLi9wb3dlci9pbnRlbF91bmNvcmUvaW50ZWxfdW5jb3JlLmMgICAg ICAgICB8ICAxOCArLQ0KPiA+ICAgLi4uL3Bvd2VyL2ludGVsX3VuY29yZS9pbnRlbF91bmNvcmUu aCAgICAgICAgIHwgICA4ICstDQo+ID4gICBkcml2ZXJzL3Bvd2VyL2ludGVsX3VuY29yZS9tZXNv bi5idWlsZCAgICAgICAgfCAgIDYgKw0KPiA+ICAgZHJpdmVycy9wb3dlci9tZXNvbi5idWlsZCAg ICAgICAgICAgICAgICAgICAgIHwgICAzICstDQo+ID4gICBsaWIvcG93ZXIvbWVzb24uYnVpbGQg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0NCj4gPiAgIGxpYi9wb3dlci9ydGVfcG93 ZXJfdW5jb3JlLmMgICAgICAgICAgICAgICAgICB8IDIwNSArKysrKystLS0tLS0tLS0NCj4gPiAg IGxpYi9wb3dlci9ydGVfcG93ZXJfdW5jb3JlLmggICAgICAgICAgICAgICAgICB8ICA4NyArKysr LS0tDQo+ID4gICBsaWIvcG93ZXIvcnRlX3Bvd2VyX3VuY29yZV9vcHMuaCAgICAgICAgICAgICAg fCAyMzkgKysrKysrKysrKysrKysrKysrDQo+ID4gICBsaWIvcG93ZXIvdmVyc2lvbi5tYXAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKw0KPiA+ICAgOSBmaWxlcyBjaGFuZ2VkLCA0MDUg aW5zZXJ0aW9ucygrKSwgMTY0IGRlbGV0aW9ucygtKQ0KPiA+ICAgcmVuYW1lIGxpYi9wb3dlci9w b3dlcl9pbnRlbF91bmNvcmUuYyA9Pg0KPiBkcml2ZXJzL3Bvd2VyL2ludGVsX3VuY29yZS9pbnRl bF91bmNvcmUuYyAoOTUlKQ0KPiA+ICAgcmVuYW1lIGxpYi9wb3dlci9wb3dlcl9pbnRlbF91bmNv cmUuaCA9Pg0KPiBkcml2ZXJzL3Bvd2VyL2ludGVsX3VuY29yZS9pbnRlbF91bmNvcmUuaCAoOTcl KQ0KPiA+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvcG93ZXIvaW50ZWxfdW5jb3JlL21l c29uLmJ1aWxkDQo+ID4gICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3Bvd2VyL3J0ZV9wb3dlcl91 bmNvcmVfb3BzLmgNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9saWIvcG93ZXIvcG93ZXJfaW50ZWxf dW5jb3JlLmMNCj4gPiBiL2RyaXZlcnMvcG93ZXIvaW50ZWxfdW5jb3JlL2ludGVsX3VuY29yZS5j DQo+ID4gc2ltaWxhcml0eSBpbmRleCA5NSUNCj4gPiByZW5hbWUgZnJvbSBsaWIvcG93ZXIvcG93 ZXJfaW50ZWxfdW5jb3JlLmMgcmVuYW1lIHRvDQo+ID4gZHJpdmVycy9wb3dlci9pbnRlbF91bmNv cmUvaW50ZWxfdW5jb3JlLmMNCj4gPiBpbmRleCA0ZWI5YzU5MDBhLi44MDRhZDVkNzU1IDEwMDY0 NA0KPiA+IC0tLSBhL2xpYi9wb3dlci9wb3dlcl9pbnRlbF91bmNvcmUuYw0KPiA+ICsrKyBiL2Ry aXZlcnMvcG93ZXIvaW50ZWxfdW5jb3JlL2ludGVsX3VuY29yZS5jDQo+ID4gQEAgLTgsNyArOCw3 IEBADQo+ID4NCj4gPiAgICNpbmNsdWRlIDxydGVfbWVtY3B5Lmg+DQo+ID4NCj4gPiAtI2luY2x1 ZGUgInBvd2VyX2ludGVsX3VuY29yZS5oIg0KPiA+ICsjaW5jbHVkZSAiaW50ZWxfdW5jb3JlLmgi DQo+ID4gICAjaW5jbHVkZSAicG93ZXJfY29tbW9uLmgiDQo+ID4NCj4gPiAgICNkZWZpbmUgTUFY X05VTUFfRElFIDgNCj4gPiBAQCAtNDc1LDMgKzQ3NSwxOSBAQCBwb3dlcl9pbnRlbF91bmNvcmVf Z2V0X251bV9kaWVzKHVuc2lnbmVkIGludCBwa2cpDQo+ID4NCj4gPiAgICAgICByZXR1cm4gY291 bnQ7DQo+ID4gICB9DQo+IDwuLi4+DQo+ID4NCj4gPiAtI2VuZGlmIC8qIFBPV0VSX0lOVEVMX1VO Q09SRV9IICovDQo+ID4gKyNlbmRpZiAvKiBJTlRFTF9VTkNPUkVfSCAqLw0KPiA+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL3Bvd2VyL2ludGVsX3VuY29yZS9tZXNvbi5idWlsZA0KPiA+IGIvZHJpdmVy cy9wb3dlci9pbnRlbF91bmNvcmUvbWVzb24uYnVpbGQNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0 NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAuLjg3NmRmOGFkMTQNCj4gPiAtLS0gL2Rldi9udWxsDQo+ ID4gKysrIGIvZHJpdmVycy9wb3dlci9pbnRlbF91bmNvcmUvbWVzb24uYnVpbGQNCj4gPiBAQCAt MCwwICsxLDYgQEANCj4gPiArIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNl ICMgQ29weXJpZ2h0KGMpIDIwMTcgSW50ZWwNCj4gPiArQ29ycG9yYXRpb24gIyBDb3B5cmlnaHQo YykgMjAyNCBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuDQo+ID4gKw0KPiA+ICtzb3VyY2Vz ID0gZmlsZXMoJ2ludGVsX3VuY29yZS5jJykNCj4gPiArZGVwcyArPSBbJ3Bvd2VyJ10NCj4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9wb3dlci9tZXNvbi5idWlsZCBiL2RyaXZlcnMvcG93ZXIvbWVz b24uYnVpbGQNCj4gPiBpbmRleCA4YzcyMTVjNjM5Li5jODMwNDdhZjk0IDEwMDY0NA0KPiA+IC0t LSBhL2RyaXZlcnMvcG93ZXIvbWVzb24uYnVpbGQNCj4gPiArKysgYi9kcml2ZXJzL3Bvd2VyL21l c29uLmJ1aWxkDQo+ID4gQEAgLTYsNyArNiw4IEBAIGRyaXZlcnMgPSBbDQo+ID4gICAgICAgICAg ICdhbWRfcHN0YXRlJywNCj4gPiAgICAgICAgICAgJ2NwcGMnLA0KPiA+ICAgICAgICAgICAna3Zt X3ZtJywNCj4gPiAtICAgICAgICAncHN0YXRlJw0KPiA+ICsgICAgICAgICdwc3RhdGUnLA0KPiA+ ICsgICAgICAgICdpbnRlbF91bmNvcmUnDQo+IFRoZSBjcHBjLCBhbWRfcHN0YXRlIGFuZCBzbyBv biBiZWxvbmcgdG8gY3B1ZnJlcSBzY29wZS4NCj4gQW5kIGludGVsX3VuY29yZSBiZWxvbmdzIHRv IHVuY29yZSBkdmZzIHNjb3BlLg0KPiBUaGV5IGFyZSBub3QgdGhlIHNhbWUgbGV2ZWwuIFNvIEkg cHJvcG9zZXMgdGhhdCB3ZSBuZWVkIHRvIGNyZWF0ZSBvbmUgZGlyZWN0b3J5DQo+IGNhbGxlZCBs aWtlIGNwdWZyZXEgb3IgY29yZS4NCj4gVGhpcyAnaW50ZWxfdW5jb3JlJyBuYW1lIGRvbid0IHNl ZW1zIGFwcHJvcHJpYXRlLiB3aGF0IGRvIHlvdSB0aGluayB0aGUgZm9sbG93aW5nDQo+IGRpcmVj dG9yeSBzdHJ1Y3R1cmU6DQo+IGRyaXZlcnMvcG93ZXIvdW5jb3JlL2ludGVsX3VuY29yZS5jDQo+ IGRyaXZlcnMvcG93ZXIvdW5jb3JlL2FtZF91bmNvcmUuYyAoYWNjb3JkaW5nIHRvIHRoZSBwYXRj aFs0LzRdKS4NCkF0IHByZXNlbnQsIE1lc29uIGRvZXMgbm90IHN1cHBvcnQgZGV0ZWN0aW5nIGFu IGFkZGl0aW9uYWwgbGV2ZWwgb2Ygc3ViZGlyZWN0b3JpZXMgd2l0aGluIGRyaXZlcnMvKi4NCkFs bCB0aGUgZHJpdmVycyBtYWludGFpbiBhIGNvbnNpc3RlbnQgc3ViZGlyZWN0b3J5IHN0cnVjdHVy ZS4NCj4gPiAgIF0NCj4gPiAgIHN0ZF9kZXBzID0gWydwb3dlciddDQo+ID4gZGlmZiAtLWdpdCBh L2xpYi9wb3dlci9tZXNvbi5idWlsZCBiL2xpYi9wb3dlci9tZXNvbi5idWlsZCBpbmRleA0KPiA+ IGYzZTM0NTFjZGMuLjliMTNkOTg4MTAgMTAwNjQ0DQo+ID4gLS0tIGEvbGliL3Bvd2VyL21lc29u LmJ1aWxkDQo+ID4gKysrIGIvbGliL3Bvd2VyL21lc29uLmJ1aWxkDQo+ID4gQEAgLTEzLDcgKzEz LDYgQEAgaWYgbm90IGlzX2xpbnV4DQo+ID4gICBlbmRpZg0KPiA+ICAgc291cmNlcyA9IGZpbGVz KA0KPiA+ICAgICAgICAgICAncG93ZXJfY29tbW9uLmMnLA0KPiA+IC0gICAgICAgICdwb3dlcl9p bnRlbF91bmNvcmUuYycsDQo+ID4gICAgICAgICAgICdydGVfcG93ZXIuYycsDQo+ID4gICAgICAg ICAgICdydGVfcG93ZXJfdW5jb3JlLmMnLA0KPiA+ICAgICAgICAgICAncnRlX3Bvd2VyX3BtZF9t Z210LmMnLA0KPiA+IEBAIC0yNCw2ICsyMyw3IEBAIGhlYWRlcnMgPSBmaWxlcygNCj4gPiAgICAg ICAgICAgJ3J0ZV9wb3dlcl9ndWVzdF9jaGFubmVsLmgnLA0KPiA+ICAgICAgICAgICAncnRlX3Bv d2VyX3BtZF9tZ210LmgnLA0KPiA+ICAgICAgICAgICAncnRlX3Bvd2VyX3VuY29yZS5oJywNCj4g PiArICAgICAgICAncnRlX3Bvd2VyX3VuY29yZV9vcHMuaCcsDQo+ID4gICApDQo+ID4gICBpZiBj Yy5oYXNfYXJndW1lbnQoJy1Xbm8tY2FzdC1xdWFsJykNCj4gPiAgICAgICBjZmxhZ3MgKz0gJy1X bm8tY2FzdC1xdWFsJw0KPiA+IGRpZmYgLS1naXQgYS9saWIvcG93ZXIvcnRlX3Bvd2VyX3VuY29y ZS5jDQo+ID4gYi9saWIvcG93ZXIvcnRlX3Bvd2VyX3VuY29yZS5jIGluZGV4IDQ4Yzc1YTVkYTAu LjlmODc3MTIyNGYgMTAwNjQ0DQo+ID4gLS0tIGEvbGliL3Bvd2VyL3J0ZV9wb3dlcl91bmNvcmUu Yw0KPiA+ICsrKyBiL2xpYi9wb3dlci9ydGVfcG93ZXJfdW5jb3JlLmMNCj4gPiBAQCAtMSw2ICsx LDcgQEANCj4gPiAgIC8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UNCj4g PiAgICAqIENvcHlyaWdodChjKSAyMDEwLTIwMTQgSW50ZWwgQ29ycG9yYXRpb24NCj4gPiAgICAq IENvcHlyaWdodChjKSAyMDIzIEFNRCBDb3Jwb3JhdGlvbg0KPiA+ICsgKiBDb3B5cmlnaHQoYykg MjAyNCBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuDQo+ID4gICAgKi8NCj4gPg0KPiA+ICAg I2luY2x1ZGUgPGVycm5vLmg+DQo+ID4gQEAgLTEyLDk4ICsxMyw1MCBAQA0KPiA+ICAgI2luY2x1 ZGUgInJ0ZV9wb3dlcl91bmNvcmUuaCINCj4gPiAgICNpbmNsdWRlICJwb3dlcl9pbnRlbF91bmNv cmUuaCINCj4gPg0KPiA+IC1lbnVtIHJ0ZV91bmNvcmVfcG93ZXJfbWdtdF9lbnYgZGVmYXVsdF91 bmNvcmVfZW52ID0NCj4gPiBSVEVfVU5DT1JFX1BNX0VOVl9OT1RfU0VUOw0KPiA+ICtzdGF0aWMg ZW51bSBydGVfdW5jb3JlX3Bvd2VyX21nbXRfZW52IGdsb2JhbF91bmNvcmVfZW52ID0NCj4gPiAr UlRFX1VOQ09SRV9QTV9FTlZfTk9UX1NFVDsgc3RhdGljIHN0cnVjdCBydGVfcG93ZXJfdW5jb3Jl X29wcw0KPiA+ICsqZ2xvYmFsX3VuY29yZV9vcHM7DQo+ID4NCj4gPiAgIHN0YXRpYyBydGVfc3Bp bmxvY2tfdCBnbG9iYWxfZW52X2NmZ19sb2NrID0NCj4gPiBSVEVfU1BJTkxPQ0tfSU5JVElBTEla RVI7DQo+ID4gK3N0YXRpYyBSVEVfVEFJTFFfSEVBRCgsIHJ0ZV9wb3dlcl91bmNvcmVfb3BzKSB1 bmNvcmVfb3BzX2xpc3QgPQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBUQUlMUV9IRUFEX0lO SVRJQUxJWkVSKHVuY29yZV9vcHNfbGlzdCk7DQo+ID4NCj4gPiAtc3RhdGljIHVpbnQzMl90DQo+ ID4gLXBvd2VyX2dldF9kdW1teV91bmNvcmVfZnJlcSh1bnNpZ25lZCBpbnQgcGtnIF9fcnRlX3Vu dXNlZCwNCj4gPiAtICAgICAgICAgICAgdW5zaWduZWQgaW50IGRpZSBfX3J0ZV91bnVzZWQpDQo+ ID4gLXsNCj4gPiAtICAgICByZXR1cm4gMDsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAtc3RhdGljIGlu dA0KPiA+IC1wb3dlcl9zZXRfZHVtbXlfdW5jb3JlX2ZyZXEodW5zaWduZWQgaW50IHBrZyBfX3J0 ZV91bnVzZWQsDQo+ID4gLSAgICAgICAgICAgIHVuc2lnbmVkIGludCBkaWUgX19ydGVfdW51c2Vk LCB1aW50MzJfdCBpbmRleCBfX3J0ZV91bnVzZWQpDQo+ID4gLXsNCj4gPiAtICAgICByZXR1cm4g MDsNCj4gPiAtfQ0KPiA+ICtjb25zdCBjaGFyICp1bmNvcmVfZW52X3N0cltdID0gew0KPiA+ICsg ICAgICJub3Qgc2V0IiwNCj4gPiArICAgICAiYXV0by1kZXRlY3QiLA0KPiA+ICsgICAgICJpbnRl bC11bmNvcmUiLA0KPiA+ICsgICAgICJhbWQtaHNtcCINCj4gPiArfTsNCj4gV2h5IG9wZW4gdGhl ICJhdXRvLWRldGVjdCIgbW9kZSB0byB1c2VyPw0KPiBXaHkgbm90IHNldCB0aGlzIGF1dG9tYXRp Y2FsbHkgYXQgZnJhbWV3b3JrIGluaXRpYWxpemF0aW9uPw0KPiBBZnRlciBhbGwsIHRoZSB1bmNv cmUgZHJpdmVyIGlzIGZpeGVkIGZvciBvbmUgcGxhdGZvcm0uDQpUaGUgYXV0by1kZXRlY3Rpb24g ZmVhdHVyZSBoYXMgYmVlbiBpbXBsZW1lbnRlZCB0byBlbmFibGUgc2VhbWxlc3MgbWlncmF0aW9u IGFjcm9zcyBwbGF0Zm9ybXMNCndpdGhvdXQgcmVxdWlyaW5nIGFueSBjaGFuZ2VzIHRvIHRoZSBh cHBsaWNhdGlvbg0KPiA+DQo+ID4gLXN0YXRpYyBpbnQNCj4gPiAtcG93ZXJfZHVtbXlfdW5jb3Jl X2ZyZXFfbWF4KHVuc2lnbmVkIGludCBwa2cgX19ydGVfdW51c2VkLA0KPiA+IC0gICAgICAgICAg ICB1bnNpZ25lZCBpbnQgZGllIF9fcnRlX3VudXNlZCkNCj4gPiAtew0KPiA+IC0gICAgIHJldHVy biAwOw0KPiA+IC19DQo+ID4gLQ0KPiA8Li4uPg0KPiA+IC1zdGF0aWMgaW50DQo+ID4gLXBvd2Vy X2R1bW15X3VuY29yZV9nZXRfbnVtX2ZyZXFzKHVuc2lnbmVkIGludCBwa2cgX19ydGVfdW51c2Vk LA0KPiA+IC0gICAgICAgICAgICB1bnNpZ25lZCBpbnQgZGllIF9fcnRlX3VudXNlZCkNCj4gPiAr LyogcmVnaXN0ZXIgdGhlIG9wcyBzdHJ1Y3QgaW4gcnRlX3Bvd2VyX3VuY29yZV9vcHMsIHJldHVy biAwIG9uDQo+ID4gK3N1Y2Nlc3MuICovIGludCBydGVfcG93ZXJfcmVnaXN0ZXJfdW5jb3JlX29w cyhzdHJ1Y3QNCj4gPiArcnRlX3Bvd2VyX3VuY29yZV9vcHMgKmRyaXZlcl9vcHMpDQo+ID4gICB7 DQo+ID4gLSAgICAgcmV0dXJuIDA7DQo+ID4gLX0NCj4gPiArICAgICBpZiAoIWRyaXZlcl9vcHMt PmluaXQgfHwgIWRyaXZlcl9vcHMtPmV4aXQgfHwgIWRyaXZlcl9vcHMtPmdldF9udW1fcGtncyB8 fA0KPiA+ICsgICAgICAgICAgICAgIWRyaXZlcl9vcHMtPmdldF9udW1fZGllcyB8fCAhZHJpdmVy X29wcy0+Z2V0X251bV9mcmVxcyB8fA0KPiA+ICsgICAgICAgICAgICAgIWRyaXZlcl9vcHMtPmdl dF9hdmFpbF9mcmVxcyB8fCAhZHJpdmVyX29wcy0+Z2V0X2ZyZXEgfHwNCj4gPiArICAgICAgICAg ICAgICFkcml2ZXJfb3BzLT5zZXRfZnJlcSB8fCAhZHJpdmVyX29wcy0+ZnJlcV9tYXggfHwNCj4g PiArICAgICAgICAgICAgICFkcml2ZXJfb3BzLT5mcmVxX21pbikgew0KPiA+ICsgICAgICAgICAg ICAgUE9XRVJfTE9HKEVSUiwgIk1pc3NpbmcgY2FsbGJhY2tzIHdoaWxlIHJlZ2lzdGVyaW5nIHBv d2VyIG9wcyIpOw0KPiA+ICsgICAgICAgICAgICAgcmV0dXJuIC0xOw0KPiA+ICsgICAgIH0NCj4g PiArICAgICBpZiAoZHJpdmVyX29wcy0+Y2IpDQo+ID4gKyAgICAgICAgICAgICBkcml2ZXJfb3Bz LT5jYigpOw0KPiA+DQo+ID4gLXN0YXRpYyB1bnNpZ25lZCBpbnQNCj4gPiAtcG93ZXJfZHVtbXlf dW5jb3JlX2dldF9udW1fcGtncyh2b2lkKQ0KPiA+IC17DQo+ID4gLSAgICAgcmV0dXJuIDA7DQo+ ID4gLX0NCj4gPiArICAgICBUQUlMUV9JTlNFUlRfVEFJTCgmdW5jb3JlX29wc19saXN0LCBkcml2 ZXJfb3BzLCBuZXh0KTsNCj4gPg0KPiA+IC1zdGF0aWMgdW5zaWduZWQgaW50DQo+ID4gLXBvd2Vy X2R1bW15X3VuY29yZV9nZXRfbnVtX2RpZXModW5zaWduZWQgaW50IHBrZyBfX3J0ZV91bnVzZWQp IC17DQo+ID4gICAgICAgcmV0dXJuIDA7DQo+ID4gICB9DQo+ID4gLQ0KPiA+IC0vKiBmdW5jdGlv biBwb2ludGVycyAqLw0KPiA+IC1ydGVfcG93ZXJfZ2V0X3VuY29yZV9mcmVxX3QgcnRlX3Bvd2Vy X2dldF91bmNvcmVfZnJlcSA9DQo+ID4gcG93ZXJfZ2V0X2R1bW15X3VuY29yZV9mcmVxOyAtcnRl X3Bvd2VyX3NldF91bmNvcmVfZnJlcV90DQo+ID4gcnRlX3Bvd2VyX3NldF91bmNvcmVfZnJlcSA9 IHBvd2VyX3NldF9kdW1teV91bmNvcmVfZnJlcTsNCj4gPiAtcnRlX3Bvd2VyX3VuY29yZV9mcmVx X2NoYW5nZV90IHJ0ZV9wb3dlcl91bmNvcmVfZnJlcV9tYXggPQ0KPiA+IHBvd2VyX2R1bW15X3Vu Y29yZV9mcmVxX21heDsgLXJ0ZV9wb3dlcl91bmNvcmVfZnJlcV9jaGFuZ2VfdA0KPiA+IHJ0ZV9w b3dlcl91bmNvcmVfZnJlcV9taW4gPSBwb3dlcl9kdW1teV91bmNvcmVfZnJlcV9taW47DQo+ID4g LXJ0ZV9wb3dlcl91bmNvcmVfZnJlcXNfdCBydGVfcG93ZXJfdW5jb3JlX2ZyZXFzID0NCj4gPiBw b3dlcl9kdW1teV91bmNvcmVfZnJlcXM7IC1ydGVfcG93ZXJfdW5jb3JlX2dldF9udW1fZnJlcXNf dA0KPiA+IHJ0ZV9wb3dlcl91bmNvcmVfZ2V0X251bV9mcmVxcyA9IHBvd2VyX2R1bW15X3VuY29y ZV9nZXRfbnVtX2ZyZXFzOw0KPiA+IC1ydGVfcG93ZXJfdW5jb3JlX2dldF9udW1fcGtnc190IHJ0 ZV9wb3dlcl91bmNvcmVfZ2V0X251bV9wa2dzID0NCj4gPiBwb3dlcl9kdW1teV91bmNvcmVfZ2V0 X251bV9wa2dzOyAtcnRlX3Bvd2VyX3VuY29yZV9nZXRfbnVtX2RpZXNfdA0KPiA+IHJ0ZV9wb3dl cl91bmNvcmVfZ2V0X251bV9kaWVzID0gcG93ZXJfZHVtbXlfdW5jb3JlX2dldF9udW1fZGllczsN Cj4gPiAtDQo+ID4gLXN0YXRpYyB2b2lkDQo+ID4gLXJlc2V0X3Bvd2VyX3VuY29yZV9mdW5jdGlv bl9wdHJzKHZvaWQpDQo+ID4gLXsNCj4gPiAtICAgICBydGVfcG93ZXJfZ2V0X3VuY29yZV9mcmVx ID0gcG93ZXJfZ2V0X2R1bW15X3VuY29yZV9mcmVxOw0KPiA+IC0gICAgIHJ0ZV9wb3dlcl9zZXRf dW5jb3JlX2ZyZXEgPSBwb3dlcl9zZXRfZHVtbXlfdW5jb3JlX2ZyZXE7DQo+ID4gLSAgICAgcnRl X3Bvd2VyX3VuY29yZV9mcmVxX21heCA9IHBvd2VyX2R1bW15X3VuY29yZV9mcmVxX21heDsNCj4g PiAtICAgICBydGVfcG93ZXJfdW5jb3JlX2ZyZXFfbWluID0gcG93ZXJfZHVtbXlfdW5jb3JlX2Zy ZXFfbWluOw0KPiA+IC0gICAgIHJ0ZV9wb3dlcl91bmNvcmVfZnJlcXMgID0gcG93ZXJfZHVtbXlf dW5jb3JlX2ZyZXFzOw0KPiA+IC0gICAgIHJ0ZV9wb3dlcl91bmNvcmVfZ2V0X251bV9mcmVxcyA9 IHBvd2VyX2R1bW15X3VuY29yZV9nZXRfbnVtX2ZyZXFzOw0KPiA+IC0gICAgIHJ0ZV9wb3dlcl91 bmNvcmVfZ2V0X251bV9wa2dzID0gcG93ZXJfZHVtbXlfdW5jb3JlX2dldF9udW1fcGtnczsNCj4g PiAtICAgICBydGVfcG93ZXJfdW5jb3JlX2dldF9udW1fZGllcyA9IHBvd2VyX2R1bW15X3VuY29y ZV9nZXRfbnVtX2RpZXM7DQo+ID4gLX0NCj4gPiAtDQo+ID4gICBpbnQNCj4gPiAgIHJ0ZV9wb3dl cl9zZXRfdW5jb3JlX2VudihlbnVtIHJ0ZV91bmNvcmVfcG93ZXJfbWdtdF9lbnYgZW52KQ0KPiA+ ICAgew0KPiA+IC0gICAgIGludCByZXQ7DQo+ID4gKyAgICAgaW50IHJldCA9IC0xOw0KPiA+ICsg ICAgIHN0cnVjdCBydGVfcG93ZXJfdW5jb3JlX29wcyAqb3BzOw0KPiA+DQo+ID4gICAgICAgcnRl X3NwaW5sb2NrX2xvY2soJmdsb2JhbF9lbnZfY2ZnX2xvY2spOw0KPiA+DQo+ID4gLSAgICAgaWYg KGRlZmF1bHRfdW5jb3JlX2VudiAhPSBSVEVfVU5DT1JFX1BNX0VOVl9OT1RfU0VUKSB7DQo+ID4g KyAgICAgaWYgKGdsb2JhbF91bmNvcmVfZW52ICE9IFJURV9VTkNPUkVfUE1fRU5WX05PVF9TRVQp IHsNCj4gPiAgICAgICAgICAgICAgIFBPV0VSX0xPRyhFUlIsICJVbmNvcmUgUG93ZXIgTWFuYWdl bWVudCBFbnYgYWxyZWFkeSBzZXQuIik7DQo+ID4gLSAgICAgICAgICAgICBydGVfc3BpbmxvY2tf dW5sb2NrKCZnbG9iYWxfZW52X2NmZ19sb2NrKTsNCj4gPiAtICAgICAgICAgICAgIHJldHVybiAt MTsNCj4gPiArICAgICAgICAgICAgIGdvdG8gb3V0Ow0KPiA+ICAgICAgIH0NCj4gPg0KPiA8Li4u Pg0KPiA+ICsgICAgIGlmIChlbnYgPD0gUlRFX0RJTSh1bmNvcmVfZW52X3N0cikpIHsNCj4gPiAr ICAgICAgICAgICAgIFJURV9UQUlMUV9GT1JFQUNIKG9wcywgJnVuY29yZV9vcHNfbGlzdCwgbmV4 dCkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgaWYgKHN0cm5jbXAob3BzLT5uYW1lLCB1bmNv cmVfZW52X3N0cltlbnZdLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJURV9Q T1dFUl9VTkNPUkVfRFJJVkVSX05BTUVTWikgPT0gMCkgew0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGdsb2JhbF91bmNvcmVfZW52ID0gZW52Ow0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGdsb2JhbF91bmNvcmVfb3BzID0gb3BzOw0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHJldCA9IDA7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZ290byBvdXQ7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIH0NCj4gPiArICAgICAg ICAgICAgIFBPV0VSX0xPRyhFUlIsICJQb3dlciBNYW5hZ2VtZW50ICglcykgbm90IHN1cHBvcnRl ZCIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5jb3JlX2Vudl9zdHJbZW52 XSk7DQo+ID4gKyAgICAgfSBlbHNlDQo+ID4gKyAgICAgICAgICAgICBQT1dFUl9MT0coRVJSLCAi SW52YWxpZCBQb3dlciBNYW5hZ2VtZW50IEVudmlyb25tZW50Iik7DQo+ID4NCj4gPiAtICAgICBk ZWZhdWx0X3VuY29yZV9lbnYgPSBlbnY7DQo+ID4gICBvdXQ6DQo+ID4gICAgICAgcnRlX3NwaW5s b2NrX3VubG9jaygmZ2xvYmFsX2Vudl9jZmdfbG9jayk7DQo+ID4gICAgICAgcmV0dXJuIHJldDsN Cj4gPiBAQCAtMTM5LDE1ICs4OSwyMiBAQCB2b2lkDQo+ID4gICBydGVfcG93ZXJfdW5zZXRfdW5j b3JlX2Vudih2b2lkKQ0KPiA+ICAgew0KPiA+ICAgICAgIHJ0ZV9zcGlubG9ja19sb2NrKCZnbG9i YWxfZW52X2NmZ19sb2NrKTsNCj4gPiAtICAgICBkZWZhdWx0X3VuY29yZV9lbnYgPSBSVEVfVU5D T1JFX1BNX0VOVl9OT1RfU0VUOw0KPiA+IC0gICAgIHJlc2V0X3Bvd2VyX3VuY29yZV9mdW5jdGlv bl9wdHJzKCk7DQo+ID4gKyAgICAgZ2xvYmFsX3VuY29yZV9lbnYgPSBSVEVfVU5DT1JFX1BNX0VO Vl9OT1RfU0VUOw0KPiA+ICAgICAgIHJ0ZV9zcGlubG9ja191bmxvY2soJmdsb2JhbF9lbnZfY2Zn X2xvY2spOw0KPiA+ICAgfQ0KPiA+DQo+DQo+IEhvdyBhYm91dCBhYnN0cmFjdCBhbiBBQkkgaW50 ZXJmYWNlIHRvIGludGlhbGl6ZSBvciBzZXQgdGhlIHVuY29yZSBkcml2ZXIgb24gcGxhdGZvcm0N Cj4gYnkgYXV0b21hdGljYWwuDQo+DQo+IEFuZCBsYXRlciBkbyBwb3dlcl9pbnRlbF91bmNvcmVf aW5pdF9vbl9kaWUoKSBmb3IgZWFjaCBkaWUgb24gZGlmZmVyZW50IHBhY2thZ2UuDQoNCj4NCj4g PiAgIGVudW0gcnRlX3VuY29yZV9wb3dlcl9tZ210X2Vudg0KPiA+ICAgcnRlX3Bvd2VyX2dldF91 bmNvcmVfZW52KHZvaWQpDQo+ID4gICB7DQo+ID4gLSAgICAgcmV0dXJuIGRlZmF1bHRfdW5jb3Jl X2VudjsNCj4gPiArICAgICByZXR1cm4gZ2xvYmFsX3VuY29yZV9lbnY7DQo+ID4gK30NCj4gPiAr DQo+ID4gK3N0cnVjdCBydGVfcG93ZXJfdW5jb3JlX29wcyAqDQo+ID4gK3J0ZV9wb3dlcl9nZXRf dW5jb3JlX29wcyh2b2lkKQ0KPiA+ICt7DQo+ID4gKyAgICAgUlRFX0FTU0VSVChnbG9iYWxfdW5j b3JlX29wcyAhPSBOVUxMKTsNCj4gPiArDQo+ID4gKyAgICAgcmV0dXJuIGdsb2JhbF91bmNvcmVf b3BzOw0KPiA+ICAgfQ0KPiA+DQo+ID4gICBpbnQNCj4gPiBAQCAtMTU1LDI3ICsxMTIsMjkgQEAg cnRlX3Bvd2VyX3VuY29yZV9pbml0KHVuc2lnbmVkIGludCBwa2csIHVuc2lnbmVkDQo+ID4gaW50 IGRpZSkNCj4gVGhpcyBwa2cgbWVhbnMgdGhlIHNvY2tldCBpZCBvbiB0aGUgcGxhdGZvcm0sIHJp Z2h0Pw0KPiBJZiBzbywgSSBhbSBub3Qgc3VyZSB0aGF0IHRoZQ0KPiB1bmNvcmVfaW5mb1tSVEVf TUFYX05VTUFfTk9ERVNdW01BWF9OVU1BX0RJRV0gdXNlZCBpbiB1bmNvcmUgbGliIGlzDQo+IHVu aXZlcnNhbCBmb3IgYWxsIHVuY29yZSBkcml2ZXIuDQo+IEZvciBleGFtcGxlLCB1bmNvcmUgZHJp dmVyIGp1c3Qgc3VwcG9ydCBkbyB1bmNvcmUgZHZmcyBiYXNlZCBvbiB0aGUgc29ja2V0IHVuaXQu DQo+IFdoYXQgc2hvdWQgd2UgZG8gZm9yIHRoaXM/IHdlIG1heSBuZWVkIHRvIHRoaW5rIHR3aWNl Lg0KWWVzLCBwa2cgcmVwcmVzZW50cyBhIHNvY2tldCBpZC4gSW4gcGxhdGZvcm1zIHdpdGggYSBz aW5nbGUgdW5jb3JlIGNvbnRyb2xsZXIgcGVyIHNvY2tldCwNCnRoZSBkaWUgSUQgc2hvdWxkIGJl IHNldCB0byAnMCcgZm9yIHRoZSBjb3JyZXNwb25kaW5nIHNvY2tldCBJRCAocGtnKS4NCi4NCj4g PiAgIHsNCj4gPiAgICAgICBpbnQgcmV0ID0gLTE7DQo+ID4NCj4gPC4uLj4NCg==