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 B593343C12; Thu, 29 Feb 2024 08:10:56 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 5A65040E0F; Thu, 29 Feb 2024 08:10:54 +0100 (CET) Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2047.outbound.protection.outlook.com [40.107.223.47]) by mails.dpdk.org (Postfix) with ESMTP id 0537C402AC for ; Thu, 29 Feb 2024 08:10:21 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=IBSzrQdaocTxDh/l61pYyTy3qOJ08L+7dZZIJ8mWBY7r+l0aSEDDiD4PrljmsY2xsrmnrEBf4M/qW+m96wjYt+/GCUkia/O+AU5Oc6ptxaySfwni1IV5bHDJgohq9qo0n4pwLYINYyhY8Jp1wKdacqRexOHQZ61WhNIBUhoRnRbx8z7cnEmSUL+l23HeX/wORzrQ4kpUWUxfTm8hdQwUc8d7528aANqM8DpENO+DIJnaeki6NILQzeemLsI/U5uhwwwie2pDg/DMEaf0yiVk6cN23Vx5hYhzL8/6DW3nWLuUcV85Qit2e/4x5FDdM2U6EOn3sEVMqTZy9CrREFrAFQ== 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=nUa4k3+hhYTntDMWbKqdZ5j2dOokUY9vG7/1TIrhbkY=; b=NF9UjZKbJjJjoVSJ8oL6dttLXsNkQxU4WClDGYEu3o7G5ScYuf60Ey0QNH8Go/Xz6cH8Cwxbj+UIjXCiutAmdeK4QSQJiU0osvRwPhZHpiO+tTyRHOfDupILwur761A48byX+mzvs7J418mF5/f7UDVif37fkXnRisqWlInfg/DFUmxoq12FeIqcQABTW6MR0mXD5AsFe1AOGMMgdPIS9Isl3Qne5Svc4BC2pB2maAW6gDG/fouPhKjn6pyGRSZ1MuB/6Ke8Zx96iNgWsVaAlhVvf85T6h2K8dXPi4kB+JdeDb2eF+P+O5teb/xHyVlI6rUkjwZ/tVJ6li+LF4irqw== 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=nUa4k3+hhYTntDMWbKqdZ5j2dOokUY9vG7/1TIrhbkY=; b=vfVfBAwR3+Fcrm5Trq/hx1XaZpUIBo8WP/6Izk/8FW6sAoJ65xmrXVBTFsseDkpHsTHu0b7isT/57kiErEjJrk8N2I8Qkghw66cZh1qlnuyxjPGeYd63S25rvjndf9aSs9RIDusNFLp+U/XzcO1YdYWkjlDiDYLArygzZaW+yuo= Received: from CH3PR12MB8233.namprd12.prod.outlook.com (2603:10b6:610:129::15) by DM6PR12MB4451.namprd12.prod.outlook.com (2603:10b6:5:2ab::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7316.41; Thu, 29 Feb 2024 07:10:19 +0000 Received: from CH3PR12MB8233.namprd12.prod.outlook.com ([fe80::56c9:d5f3:2cb3:d9f2]) by CH3PR12MB8233.namprd12.prod.outlook.com ([fe80::56c9:d5f3:2cb3:d9f2%4]) with mapi id 15.20.7316.039; Thu, 29 Feb 2024 07:10:18 +0000 From: "Tummala, Sivaprasad" To: "Yigit, Ferruh" , "david.hunt@intel.com" , "anatoly.burakov@intel.com" , "jerinj@marvell.com" , "radu.nicolau@intel.com" , "gakhil@marvell.com" , "cristian.dumitrescu@intel.com" , "konstantin.ananyev@huawei.com" CC: "dev@dpdk.org" Subject: RE: [RFC PATCH 1/2] power: refactor core power management library Thread-Topic: [RFC PATCH 1/2] power: refactor core power management library Thread-Index: AQHaZBI6NS+s5TJAT0O7RLCnpOLtXbEeaQeAgAKCslA= Date: Thu, 29 Feb 2024 07:10:18 +0000 Message-ID: References: <20240220153326.6236-1-sivaprasad.tummala@amd.com> <20240220153326.6236-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_4342314e-0df4-4b58-84bf-38bed6170a0f_ActionId=109e21f1-e403-408a-a6a4-b3584e7211d6; 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-02-29T06:38:41Z; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_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_|DM6PR12MB4451:EE_ x-ms-office365-filtering-correlation-id: efa5ec8f-a268-409b-a99b-08dc38f57c91 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: owFgvvX5Pd0ZQ7LvdIEJi67xVK9zO8k0snO+rKVV5x89eHYQVvITfrEg8h4euXRNJYKkvsOxuCXf+x7i2g0kcu6Rn6/dUN0gW7NsTCczqXbqCVHfFmdxrrEAqtCtVCZeHsGxW//snCpsNeGfZH0QANcX88DbW7yfXYqjIdhTI6jbQiIcn3nFEzvQWgYM1atg65hKgOnvvMan8rr4/Te4RTj87bYMD41PB79MhwKaQSFnXJWSbL22oH3NhUesC9c0Vjh8Qqgs1VopsH7sN4dGndQdm/ee2nyAmH80RLSY9/WDr56RtRxijJupDWLwSqazRBkjproZFYw9TNPCaoGJQC/KPP77prTWOdYLV1DZtDbZD0CbgjRfpdcyxZfVRfizeUGuTtLCPyG4WexkQhW/aMnTUwqNw66LSNC0L37odt54IKJ+5vwy+z/4DT9NUHqK1vQo4uNHJPVCU/Sbzfulr9r4sv62DLtMET/PwGXymWQsN2/ATaj/fl8GyIDs/mCP6ovj5o1Tat733he+yNVr00/mkwBNq04ATBy4/m0j5ggVaOHGwhJUTenpV8rVyLtirFvXQD+zzFbAkbLWwXnhqQ1niRsiHtbjKYn9pIpeztVk16lBujYuzQ/zWbJABJdahQbV3TdsSKhwWW4wHVmO4M0rgzIqidmiZsLbyigA8rdHCG3e1Aau9gFZx5KwouaaW0apoJeL2G1GS/oG8fp8g1eZ6WeCBvwPANZVGQ/oW/4= 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:(13230031)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?V2NpVGxhYzlxNTBybEkwK3NYbG1xRHBweExBTmFFeml6bC9EdVhWT0JpM3Z3?= =?utf-8?B?K0RvbENUTHNpYmEzOGlnYmVHWjFBUHJRUTFwWXlsOGV1cTJQdGtHRjJEVU1X?= =?utf-8?B?N3VHRnRIOVFxRm1icm80QytGYWZGL1pBWC92WEVUWSt4SGFZR2JPZXJ2V043?= =?utf-8?B?NHZIOFh0ckpoaGxzQnByYWVNWnU3S0MxN1JZVXpaQUpyUG9ieEVvUXdaRm1z?= =?utf-8?B?Y0VJR3A5VkJyYll3ZXdvK3hpSzhUQUxXQnlVOFI1cU1udkJqVXlKaU5kdGpp?= =?utf-8?B?R0ZEYzREMXB6eUNVaXB0VFJNWk0wUnZDMW94QWhpcGh6U0hMTkRnRmM1dlpQ?= =?utf-8?B?N21GWVl3RDdMUW1ZSkxqZG1jSTZydUYzY1NSYVhDZnY0NkE5QW9ZSlVydWJO?= =?utf-8?B?NFFXRytqVURkQ1hIWWZXdWJvYUxWR1hERmdoVmFUd3VwbGRrL3NHamRkTmdj?= =?utf-8?B?dUZRbVp3TS9wTERXakN5dW1RVkk0VUxFaDdES2w5U0hIUTNPa0x4Q2JHUVhh?= =?utf-8?B?S0JTQVRPaTNQMVFQc2NRRkVMbk1oNVBqOVBTTmxjQ2V0NmNwek9kV0xtSjhE?= =?utf-8?B?RjZFWEc4WUlpdTZuZnI1QjJqZVdBcFN4d1owMUJlaUpqbHFwSWlINnZNM28y?= =?utf-8?B?RER6aTBuMmQ4WEdUakswSWhDekhrMzFITWhKM0dKcThuYy9LUlV0cHhHTVlV?= =?utf-8?B?d1BOSEdyZUF0cW9mK1hURFM1eU5JUllYQ0NkT1M0YnJpbHF3ZlpoRHNrVGtv?= =?utf-8?B?NTNSVjJQSzF3T1oxSjJDM1FiMms3OUJRZVhsdG9iOVFBZU9XQ3pGU2luSi92?= =?utf-8?B?TnA5MHcwSlprM1padlJ4WjJieWtkc0pzRE8vUHNSdzZ0ekpjTmltY3dzSjV5?= =?utf-8?B?T01HSzB6M2xHYUgvSHc5RHUycUxURDZKb0FEeHBIc1QvK1lZSDdjYUthakkz?= =?utf-8?B?RENxQk91cVRyeVJYMzF3SThXc1VNWFVYSUZySGtxT0R6bi9lMENBeUhteEtO?= =?utf-8?B?YkZweTJVaFYzWlFncjBNUDluMmpXb282NzkxaUVzR24waHYzSmNrMHB5aXFH?= =?utf-8?B?eWd0SWl6STY0ZjhNeGFzaEo2cUdpcERkdXdIV0ZnUVlFeWNPa1dsSjJkWWJr?= =?utf-8?B?NzEyUTdmbmVYRnh0RGQxdXR4dFdPMHhObGFCTUNHUEUxV3ZjRVlNTHJiZXUw?= =?utf-8?B?RytvWnFBakJNc0ZSTGlQMzBDbDJYRjBGMXYwWVdkdUVUTFdBY0lMUEZqZ1BR?= =?utf-8?B?QUp6YXpzaHdzaXlVQzNBaDRlaVltekZPaVBCQ3Z3ektFbk5yVGlzaWNSS1BX?= =?utf-8?B?aHFDbW5kTEVoMS9iZzNsblB1anBnVDV0V1R2N3BTa1NvcUlQVUVndThHcDRh?= =?utf-8?B?cUdnOTVkeTlxOG5wNFN5cTZLTVJ6SXlEdjk3Qk5xdW5LSlg0eWpSVjNxcTFr?= =?utf-8?B?WHV4VklHZExYUjhtVmhwcDV5bk9JbGt5UFY5L2wyR2R4N1hRb2MvcVR6STVH?= =?utf-8?B?L2xGNzRObWh3SFFvUWdkbUYxK2F5VjIwQ0doU05KMmI0OXZYcTI5SGtHcmpl?= =?utf-8?B?ek1wdS82VXloSHpSd1o2cG9oMXJCQW42Uk9QcWdvdXA4WGxpY3JQUmJWNG1w?= =?utf-8?B?eEFlYzhtbENVcWdJdDN4YUp6eDlGaFdENnNQM0loZUFwcUNPQ1ZlZ2QzeFNN?= =?utf-8?B?UjNibWlscjlzQ2VKdjhFeXM1cmhGbnZLNVp3TWZDZVRMUERCNDl6dWZIeFZJ?= =?utf-8?B?V2t1NWpMeU5qRTgzZXBOc1huUDJ6ckdCTjdhZ1dla1JQbzdIUzV2YndqK0Vo?= =?utf-8?B?N3R3Q0ZZV29rMWhwM2NXM0hyRzNBRVNoaU5RN2NnNThUdHM0MHpOb1BzY3g3?= =?utf-8?B?ZjFKcVI0VHVxQmZqQ2VRVFJMYWZldmhQanYraXFMZEs5ZjVrYjRlRFQ0ZHVj?= =?utf-8?B?TU1ybGU4ZFlYL1ZMMHBRYUVNVjVYVk1TNjVGTnAxVzh5VHUxYmpQOHhkSm1p?= =?utf-8?B?emhCMlE4dlFjVnFzb2JrV1oyQ1ZodTZOL00vM011V3BjbDZ0bEx1YTc0aFcv?= =?utf-8?B?TTltTnRIZjcvUUlkVms1bjhXQUdFaUdneTR4YTBYY2w3S3d0anRxaWxYSEVK?= =?utf-8?Q?Dv4Q=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: efa5ec8f-a268-409b-a99b-08dc38f57c91 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Feb 2024 07:10:18.7418 (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: mwOc+bXL/HkMMNIbumul/rIzaF5N4EO3UVB0eD9J9PBV+T0cAyD5yGOfSRHXQHPxf45vUxUItE1ZgAEv2Dka3g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB4451 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 W0FNRCBPZmZpY2lhbCBVc2UgT25seSAtIEdlbmVyYWxdDQoNCkhpIEZlcnJ1aCwNCg0KPiAtLS0t LU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBZaWdpdCwgRmVycnVoIDxGZXJydWguWWln aXRAYW1kLmNvbT4NCj4gU2VudDogVHVlc2RheSwgRmVicnVhcnkgMjcsIDIwMjQgOTo0OCBQTQ0K PiBUbzogVHVtbWFsYSwgU2l2YXByYXNhZCA8U2l2YXByYXNhZC5UdW1tYWxhQGFtZC5jb20+Ow0K PiBkYXZpZC5odW50QGludGVsLmNvbTsgYW5hdG9seS5idXJha292QGludGVsLmNvbTsgamVyaW5q QG1hcnZlbGwuY29tOw0KPiByYWR1Lm5pY29sYXVAaW50ZWwuY29tOyBnYWtoaWxAbWFydmVsbC5j b207IGNyaXN0aWFuLmR1bWl0cmVzY3VAaW50ZWwuY29tOw0KPiBrb25zdGFudGluLmFuYW55ZXZA aHVhd2VpLmNvbQ0KPiBDYzogZGV2QGRwZGsub3JnDQo+IFN1YmplY3Q6IFJlOiBbUkZDIFBBVENI IDEvMl0gcG93ZXI6IHJlZmFjdG9yIGNvcmUgcG93ZXIgbWFuYWdlbWVudCBsaWJyYXJ5DQo+DQo+ IE9uIDIvMjAvMjAyNCAzOjMzIFBNLCBTaXZhcHJhc2FkIFR1bW1hbGEgd3JvdGU6DQo+ID4gVGhp cyBwYXRjaCBpbnRyb2R1Y2VzIGEgY29tcHJlaGVuc2l2ZSByZWZhY3RvciB0byB0aGUgY29yZSBw b3dlcg0KPiA+IG1hbmFnZW1lbnQgbGlicmFyeS4gVGhlIHByaW1hcnkgZm9jdXMgaXMgb24gaW1w cm92aW5nIG1vZHVsYXJpdHkgYW5kDQo+ID4gb3JnYW5pemF0aW9uIGJ5IHJlbG9jYXRpbmcgc3Bl Y2lmaWMgZHJpdmVyIGltcGxlbWVudGF0aW9ucyBmcm9tIHRoZQ0KPiA+ICdsaWIvcG93ZXInIGRp cmVjdG9yeSB0byBkZWRpY2F0ZWQgZGlyZWN0b3JpZXMgd2l0aGluDQo+ID4gJ2RyaXZlcnMvcG93 ZXIvY29yZS8qJy4gVGhlIGFkanVzdG1lbnQgb2YgbWVzb24uYnVpbGQgZmlsZXMgZW5hYmxlcw0K PiA+IHRoZSBzZWxlY3RpdmUgYWN0aXZhdGlvbiBvZiBpbmRpdmlkdWFsIGRyaXZlcnMuDQo+ID4N Cj4gPiBUaGVzZSBjaGFuZ2VzIGNvbnRyaWJ1dGUgdG8gYSBzaWduaWZpY2FudCBlbmhhbmNlbWVu dCBpbiBjb2RlDQo+ID4gb3JnYW5pemF0aW9uLCBwcm92aWRpbmcgYSBjbGVhcmVyIHN0cnVjdHVy ZSBmb3IgZHJpdmVyIGltcGxlbWVudGF0aW9ucy4NCj4gPiBUaGUgcmVmYWN0b3IgYWltcyB0byBp bXByb3ZlIG92ZXJhbGwgY29kZSBjbGFyaXR5IGFuZCBib29zdA0KPiA+IG1haW50YWluYWJpbGl0 eS4gQWRkaXRpb25hbGx5LCBpdCBlc3RhYmxpc2hlcyBhIGZvdW5kYXRpb24gZm9yIGZ1dHVyZQ0K PiA+IGRldmVsb3BtZW50LCBhbGxvd2luZyBmb3IgbW9yZSBmb2N1c2VkIHdvcmsgb24gaW5kaXZp ZHVhbCBkcml2ZXJzIGFuZA0KPiA+IHNlYW1sZXNzIGludGVncmF0aW9uIG9mIGZvcnRoY29taW5n IGVuaGFuY2VtZW50cy4NCj4gPg0KPiA+IFNpZ25lZC1vZmYtYnk6IFNpdmFwcmFzYWQgVHVtbWFs YSA8c2l2YXByYXNhZC50dW1tYWxhQGFtZC5jb20+DQo+ID4NCj4NCj4gKzEgdG8gcmVmYWN0b3Is IHRoYW5rcyBmb3IgdGhlIHdvcmsuDQo+DQo+IFRoZXJlIGFyZSBtdWx0aXBsZSBwb3dlciBpbXBs ZW1lbnRhdGlvbnMgYnV0IGFsbCBhcmUgbWFuYWdlZCB3aXRoaW5nIHRoZSBwb3dlcg0KPiBsaWJy YXJ5LCBpdCBpcyBnb29kIGlkZWEgdG8gZXh0cmFjdCBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb25z IGFzIGRyaXZlcnMuDQo+DQo+IDwuLi4+DQo+DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcG93 ZXIvY29yZS9hY3BpL21lc29uLmJ1aWxkDQo+ID4gYi9kcml2ZXJzL3Bvd2VyL2NvcmUvYWNwaS9t ZXNvbi5idWlsZA0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAw MC4uZDEwZWM4ZWU5NA0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9kcml2ZXJzL3Bvd2Vy L2NvcmUvYWNwaS9tZXNvbi5idWlsZA0KPiA+IEBAIC0wLDAgKzEsOCBAQA0KPiA+ICsjIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgIyBDb3B5cmlnaHQoYykgMjAyNCBBTUQN Cj4gPiArTGltaXRlZA0KPiA+DQo+DQo+IEl0IHNob3VsZCBiZSBhcyBmb2xsb3dpbmcsIHNhbWUg Zm9yIGFsbDoNCj4NCj4gQ29weXJpZ2h0IChDKSAyMDI0LCBBZHZhbmNlZCBNaWNybyBEZXZpY2Vz LCBJbmMuDQo+DQpBQ0sNCg0KPiA+ICsNCj4gPiArc291cmNlcyA9IGZpbGVzKCdwb3dlcl9hY3Bp X2NwdWZyZXEuYycpDQo+ID4gKw0KPiA+ICtoZWFkZXJzID0gZmlsZXMoJ3Bvd2VyX2FjcGlfY3B1 ZnJlcS5oJykNCj4gPg0KPg0KPiBJbiBtZXNvbiwgJ2hlYWRlcnMnIHZhcmlhYmxlIGlzIHVzZWQg dG8gaW5zdGFsbCB0aGUgaGVhZGVyLCB0aGlzIGlzIHJlcXVpcmVkIGZvciB0aGUNCj4gY2FzZSB1 c2VyIG5lZWRzIHRvIGluY2x1ZGUgdGhlIGhlYWRlciBidXQgSSBndWVzcyB0aGF0IGlzIG5vdCB0 aGUgY2FzZSBmb3IgcG93ZXINCj4gbGlicmFyaWVzLg0KPiBDYW4geW91IHBsZWFzZSBjaGVjayBp ZiB0aGUgJ2hlYWRlcicgdmFyaWFibGUgaW4gbWVzb24gaXMgcmVxdWlyZWQ/DQo+DQo+IDwuLi4+ DQo+DQo+ID4gQEAgLTU3NywzICs1NzcsMjIgQEAgaW50IHBvd2VyX2FjcGlfZ2V0X2NhcGFiaWxp dGllcyh1bnNpZ25lZCBpbnQNCj4gPiBsY29yZV9pZCwNCj4gPg0KPiA+ICAgICByZXR1cm4gMDsN Cj4gPiAgfQ0KPiA+ICsNCj4gPiArc3RhdGljIHN0cnVjdCBydGVfcG93ZXJfb3BzIGFjcGlfb3Bz ID0gew0KPiA+ICsgICAuaW5pdCA9IHBvd2VyX2FjcGlfY3B1ZnJlcV9pbml0LA0KPiA+ICsgICAu ZXhpdCA9IHBvd2VyX2FjcGlfY3B1ZnJlcV9leGl0LA0KPiA+ICsgICAuY2hlY2tfZW52X3N1cHBv cnQgPSBwb3dlcl9hY3BpX2NwdWZyZXFfY2hlY2tfc3VwcG9ydGVkLA0KPiA+ICsgICAuZ2V0X2F2 YWlsX2ZyZXFzID0gcG93ZXJfYWNwaV9jcHVmcmVxX2ZyZXFzLA0KPiA+ICsgICAuZ2V0X2ZyZXEg PSBwb3dlcl9hY3BpX2NwdWZyZXFfZ2V0X2ZyZXEsDQo+ID4gKyAgIC5zZXRfZnJlcSA9IHBvd2Vy X2FjcGlfY3B1ZnJlcV9zZXRfZnJlcSwNCj4gPiArICAgLmZyZXFfZG93biA9IHBvd2VyX2FjcGlf Y3B1ZnJlcV9mcmVxX2Rvd24sDQo+ID4gKyAgIC5mcmVxX3VwID0gcG93ZXJfYWNwaV9jcHVmcmVx X2ZyZXFfdXAsDQo+ID4gKyAgIC5mcmVxX21heCA9IHBvd2VyX2FjcGlfY3B1ZnJlcV9mcmVxX21h eCwNCj4gPiArICAgLmZyZXFfbWluID0gcG93ZXJfYWNwaV9jcHVmcmVxX2ZyZXFfbWluLA0KPiA+ ICsgICAudHVyYm9fc3RhdHVzID0gcG93ZXJfYWNwaV90dXJib19zdGF0dXMsDQo+ID4gKyAgIC5l bmFibGVfdHVyYm8gPSBwb3dlcl9hY3BpX2VuYWJsZV90dXJibywNCj4gPiArICAgLmRpc2FibGVf dHVyYm8gPSBwb3dlcl9hY3BpX2Rpc2FibGVfdHVyYm8sDQo+ID4gKyAgIC5nZXRfY2FwcyA9IHBv d2VyX2FjcGlfZ2V0X2NhcGFiaWxpdGllcyB9Ow0KPiA+ICsNCj4NCj4gV2l0aCBjdXJyZW50IHVz YWdlIG9mIHRoZSBvcHMgc3RydWN0LCBJIGd1ZXNzIGFsbCBjYW4gYmUgInN0YXRpYyBjb25zdCIu DQpBQ0sNCj4NCj4gPC4uLj4NCj4NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9wb3dlci9jb3Jl L2t2bS12bS9tZXNvbi5idWlsZA0KPiA+IGIvZHJpdmVycy9wb3dlci9jb3JlL2t2bS12bS9tZXNv bi5idWlsZA0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMC4u MzE1MGM2Njc0Yg0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9kcml2ZXJzL3Bvd2VyL2Nv cmUva3ZtLXZtL21lc29uLmJ1aWxkDQo+ID4gQEAgLTAsMCArMSwyMCBAQA0KPiA+ICsjIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgIyBDb3B5cmlnaHQoQykgMjAyNCBBTUQN Cj4gPiArTGltaXRlZC4NCj4gPiArIw0KPiA+ICsNCj4gPiAraWYgbm90IGlzX2xpbnV4DQo+ID4g KyAgICBidWlsZCA9IGZhbHNlDQo+ID4gKyAgICByZWFzb24gPSAnb25seSBzdXBwb3J0ZWQgb24g TGludXgnDQo+ID4gKyAgICBzdWJkaXJfZG9uZSgpDQo+ID4gK2VuZGlmDQo+ID4NCj4NCj4gQmVm b3JlIHJlZmFjdG9yaW5nLCBpbiBsaWIvcG93ZXIgd2FzIHN1cHBvcnRlZCBvbmx5IGZvciBMaW51 eCwgSSBhc3N1bWUgdGhpcyBtZWFucw0KPiBhbGwgZXhpc3RpbmcgcG93ZXIgbGlicmFyaWVzIHN1 cHBvcnRlZCBvbmx5IGZvciBMaW51eC4NCj4gSWYgc28gYWJvdmUgY2hlY2sgY2FuIGJlIGFkZGVk IHRvIGFsbCBkcml2ZXJzLg0KQUNLDQo+DQo+IDwuLi4+DQo+DQo+ID4gKy8qIHJlZ2lzdGVyIHRo ZSBvcHMgc3RydWN0IGluIHJ0ZV9wb3dlcl9vcHMsIHJldHVybiAwIG9uIHN1Y2Nlc3MuICovDQo+ ID4gK2ludCBydGVfcG93ZXJfcmVnaXN0ZXJfb3BzKGNvbnN0IHN0cnVjdCBydGVfcG93ZXJfb3Bz ICpvcCkgew0KPiA+ICsgICBzdHJ1Y3QgcnRlX3Bvd2VyX29wcyAqb3BzOw0KPiA+ICsNCj4gPiAr ICAgaWYgKG9wLT5lbnYgPj0gUE1fRU5WX01BWCkgew0KPiA+ICsgICAgICAgICAgIFBPV0VSX0xP RyhFUlIsICJVbnN1cHBvcnRlZCBwb3dlciBtYW5hZ2VtZW50DQo+IGVudmlyb25tZW50XG4iKTsN Cj4gPiArICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4gPiArICAgfQ0KPiA+ICsNCj4gPiAr ICAgaWYgKG9wLT5zdGF0dXMgIT0gMCkgew0KPiA+ICsgICAgICAgICAgIFBPV0VSX0xPRyhFUlIs ICJQb3dlciBtYW5hZ2VtZW50IGVudlslZF0gb3BzIHJlZ2lzdGVyZWQNCj4gYWxyZWFkeVxuIiwN Cj4gPiArICAgICAgICAgICAgICAgICAgIG9wLT5lbnYpOw0KPiA+ICsgICAgICAgICAgIHJldHVy biAtRUlOVkFMOw0KPiA+ICsgICB9DQo+ID4gKw0KPiA+ICsgICBpZiAoIW9wLT5pbml0IHx8ICFv cC0+ZXhpdCB8fCAhb3AtPmNoZWNrX2Vudl9zdXBwb3J0IHx8DQo+ID4gKyAgICAgICAgICAgIW9w LT5nZXRfYXZhaWxfZnJlcXMgfHwgIW9wLT5nZXRfZnJlcSB8fCAhb3AtPnNldF9mcmVxIHx8DQo+ ID4gKyAgICAgICAgICAgIW9wLT5mcmVxX3VwIHx8ICFvcC0+ZnJlcV9kb3duIHx8ICFvcC0+ZnJl cV9tYXggfHwNCj4gPiArICAgICAgICAgICAhb3AtPmZyZXFfbWluIHx8ICFvcC0+dHVyYm9fc3Rh dHVzIHx8ICFvcC0+ZW5hYmxlX3R1cmJvIHx8DQo+ID4gKyAgICAgICAgICAgIW9wLT5kaXNhYmxl X3R1cmJvIHx8ICFvcC0+Z2V0X2NhcHMpIHsNCj4gPiArICAgICAgICAgICBQT1dFUl9MT0coRVJS LCAiTWlzc2luZyBjYWxsYmFja3Mgd2hpbGUgcmVnaXN0ZXJpbmcgcG93ZXINCj4gb3BzXG4iKTsN Cj4gPiArICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4gPiArICAgfQ0KPiA+ICsNCj4gPiAr ICAgb3BzID0gJnJ0ZV9wb3dlcl9vcHNbb3AtPmVudl07DQo+ID4NCj4NCj4gSSBkb24ndCBzZWUg YWxsIGRyaXZlcnMgc2V0ICdvcC0+ZW52JywNCj4NCj4gVGhpcyAncnRlX3Bvd2VyX3JlZ2lzdGVy X29wcygpJyBmdW5jdGlvbiBjb3BpZXMgb3BzIGZyb20gZHJpdmVyIHByb3ZlZCBzdHJ1Y3QgdG8N Cj4gbGlicmFyeSBnbG9iYWwgJ3J0ZV9wb3dlcl9vcHNbXScgYXJyYXksDQo+DQo+IGl0IGNhbiBi ZSBwb3NzaWJsZSB0byBzdG9yZSBvcHMgcG9pbnRlciBwcm92aWRlZCBieSBkcml2ZXIsIGluc3Rl YWQgb2YgY29weWluZyBpdC4NCj4NCj4gQW5kIGl0IGNhbiBiZSBwb3NzaWJsZSB0byBsaW5rIHRo ZSBvcHMgaW4gdGhpcyBmdW5jdGlvbiwgaW5zdGVhZCBvZiBwdXR0aW5nIHRoZW0gdG8NCj4gc3Bl Y2lmaWMgaW5kZXgsIGFzIG9ubHkgb25lIG9wcyBjYW4gYmUgYWN0aXZlIGluIGEgZ2l2ZW4gdGlt ZSwgaXQgY2FuIGJlIHBvc3NpYmxlIHRvDQo+IHN0b3JlIGFjdGl2ZSBvcHMgcG9pbnRlciBpbiBh IGdsb2JhbCB2YXJpYWJsZSB3aGljaCByZW1vdmVzIHRoZSBuZWVkIHRvIGhhdmUgaW5kZXgNCj4g YWNjZXNzaWJsZSBhcnJheSBmb3Igb3BzLg0KQWdyZWVkLiBJIHdpbGwgcmV3b3JrIHRoaXMgdG8g YSBuZXcgc3RydWN0IHdoaWNoIGNhbiBob2xkIGEgcmVmZXJlbmNlIHRvIHRoZSByZXNwZWN0aXZl IG9wcyBzdHJ1Y3QuDQoNCj4NCj4gPC4uLj4NCj4NCj4gPiBAQCAtMTc3LDU5ICsxMzgsNzYgQEAg aW50DQo+ID4gIHJ0ZV9wb3dlcl9pbml0KHVuc2lnbmVkIGludCBsY29yZV9pZCkgIHsNCj4gPiAg ICAgaW50IHJldCA9IC0xOw0KPiA+ICsgICBzdHJ1Y3QgcnRlX3Bvd2VyX29wcyAqb3BzOw0KPiA+ DQo+ID4gLSAgIHN3aXRjaCAoZ2xvYmFsX2RlZmF1bHRfZW52KSB7DQo+ID4gLSAgIGNhc2UgUE1f RU5WX0FDUElfQ1BVRlJFUToNCj4gPiAtICAgICAgICAgICByZXR1cm4gcG93ZXJfYWNwaV9jcHVm cmVxX2luaXQobGNvcmVfaWQpOw0KPiA+IC0gICBjYXNlIFBNX0VOVl9LVk1fVk06DQo+ID4gLSAg ICAgICAgICAgcmV0dXJuIHBvd2VyX2t2bV92bV9pbml0KGxjb3JlX2lkKTsNCj4gPiAtICAgY2Fz ZSBQTV9FTlZfUFNUQVRFX0NQVUZSRVE6DQo+ID4gLSAgICAgICAgICAgcmV0dXJuIHBvd2VyX3Bz dGF0ZV9jcHVmcmVxX2luaXQobGNvcmVfaWQpOw0KPiA+IC0gICBjYXNlIFBNX0VOVl9DUFBDX0NQ VUZSRVE6DQo+ID4gLSAgICAgICAgICAgcmV0dXJuIHBvd2VyX2NwcGNfY3B1ZnJlcV9pbml0KGxj b3JlX2lkKTsNCj4gPiAtICAgY2FzZSBQTV9FTlZfQU1EX1BTVEFURV9DUFVGUkVROg0KPiA+IC0g ICAgICAgICAgIHJldHVybiBwb3dlcl9hbWRfcHN0YXRlX2NwdWZyZXFfaW5pdChsY29yZV9pZCk7 DQo+ID4gLSAgIGRlZmF1bHQ6DQo+ID4gLSAgICAgICAgICAgUE9XRVJfTE9HKElORk8sICJFbnYg aXNuJ3Qgc2V0IHlldCEiKTsNCj4gPiArICAgaWYgKGdsb2JhbF9kZWZhdWx0X2VudiAhPSBQTV9F TlZfTk9UX1NFVCkgew0KPiA+ICsgICAgICAgICAgIG9wcyA9ICZydGVfcG93ZXJfb3BzW2dsb2Jh bF9kZWZhdWx0X2Vudl07DQo+ID4gKyAgICAgICAgICAgaWYgKCFvcHMtPnN0YXR1cykgew0KPiA+ ICsgICAgICAgICAgICAgICAgICAgUE9XRVJfTE9HKEVSUiwgIlBvd2VyIG1hbmFnZW1lbnQgZW52 WyVkXSBub3QiDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICIgc3VwcG9ydGVkXG4i LCBnbG9iYWxfZGVmYXVsdF9lbnYpOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgZ290byBvdXQ7 DQo+ID4gKyAgICAgICAgICAgfQ0KPiA+ICsgICAgICAgICAgIHJldHVybiBvcHMtPmluaXQobGNv cmVfaWQpOw0KPiA+ICAgICB9DQo+ID4gKyAgIFBPV0VSX0xPRyhJTkZPLCBQT1dFUiwgIkVudiBp c24ndCBzZXQgeWV0IVxuIik7DQo+ID4NCj4gPiAgICAgLyogQXV0byBkZXRlY3QgRW52aXJvbm1l bnQgKi8NCj4gPiAtICAgUE9XRVJfTE9HKElORk8sICJBdHRlbXB0aW5nIHRvIGluaXRpYWxpc2Ug QUNQSSBjcHVmcmVxIHBvd2VyDQo+IG1hbmFnZW1lbnQuLi4iKTsNCj4gPiAtICAgcmV0ID0gcG93 ZXJfYWNwaV9jcHVmcmVxX2luaXQobGNvcmVfaWQpOw0KPiA+IC0gICBpZiAocmV0ID09IDApIHsN Cj4gPiAtICAgICAgICAgICBydGVfcG93ZXJfc2V0X2VudihQTV9FTlZfQUNQSV9DUFVGUkVRKTsN Cj4gPiAtICAgICAgICAgICBnb3RvIG91dDsNCj4gPiArICAgUE9XRVJfTE9HKElORk8sICJBdHRl bXB0aW5nIHRvIGluaXRpYWxpc2UgQUNQSSBjcHVmcmVxIg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgIiBwb3dlciBtYW5hZ2VtZW50Li4uXG4iKTsNCj4gPg0KPg0KPiBTaG91bGRuJ3QgYnJlYWsg dGhlIGxvZywgY2FuIGJyZWFrIHRoZSBsaW5lIGJ5IGtlZXBpbmcgbWVzc2FnZSB3aG9sZToNCj4g UE9XRVJfTE9HKElORk8sDQo+ICAgICAgICJBdHRlbXB0aW5nIHRvIGluaXRpYWxpc2UgQUNQSSBj cHVmcmVxIHBvd2VyIG1hbmFnZW1lbnQuLi4iKTsNCj4NCj4gPC4uLj4NCkFDSw0KDQo+DQo+ID4g QEAgLTIxLDcgKzIyLDcgQEAgZXh0ZXJuICJDIiB7DQo+ID4gIC8qIFBvd2VyIE1hbmFnZW1lbnQg RW52aXJvbm1lbnQgU3RhdGUgKi8gIGVudW0gcG93ZXJfbWFuYWdlbWVudF9lbnYNCj4gPiB7UE1f RU5WX05PVF9TRVQsIFBNX0VOVl9BQ1BJX0NQVUZSRVEsIFBNX0VOVl9LVk1fVk0sDQo+ID4gICAg ICAgICAgICAgUE1fRU5WX1BTVEFURV9DUFVGUkVRLCBQTV9FTlZfQ1BQQ19DUFVGUkVRLA0KPiA+ IC0gICAgICAgICAgIFBNX0VOVl9BTURfUFNUQVRFX0NQVUZSRVF9Ow0KPiA+ICsgICAgICAgICAg IFBNX0VOVl9BTURfUFNUQVRFX0NQVUZSRVEsIFBNX0VOVl9NQVh9Ow0KPiA+DQo+DQo+IFN5bnRh eC4gQ2FuIHdlIGhhdmUgZW51bSBpdGVtIHBlciBsaW5lPw0KQUNLDQoNCj4NCj4gPiAgLyoqDQo+ ID4gICAqIENoZWNrIGlmIGEgc3BlY2lmaWMgcG93ZXIgbWFuYWdlbWVudCBlbnZpcm9ubWVudCB0 eXBlIGlzIHN1cHBvcnRlZA0KPiA+IG9uIGEgQEAgLTY2LDYgKzY3LDk3IEBAIHZvaWQgcnRlX3Bv d2VyX3Vuc2V0X2Vudih2b2lkKTsNCj4gPiAgICovDQo+ID4gIGVudW0gcG93ZXJfbWFuYWdlbWVu dF9lbnYgcnRlX3Bvd2VyX2dldF9lbnYodm9pZCk7DQo+ID4NCj4gPiArdHlwZWRlZiBpbnQgKCpy dGVfcG93ZXJfY3B1ZnJlcV9pbml0X3QpKHVuc2lnbmVkIGludCBsY29yZV9pZCk7DQo+ID4gK3R5 cGVkZWYgaW50ICgqcnRlX3Bvd2VyX2NwdWZyZXFfZXhpdF90KSh1bnNpZ25lZCBpbnQgbGNvcmVf aWQpOw0KPiA+ICt0eXBlZGVmIGludCAoKnJ0ZV9wb3dlcl9jaGVja19lbnZfc3VwcG9ydF90KSh2 b2lkKTsNCj4gPiArDQo+ID4gK3R5cGVkZWYgdWludDMyX3QgKCpydGVfcG93ZXJfZnJlcXNfdCko dW5zaWduZWQgaW50IGxjb3JlX2lkLCB1aW50MzJfdCAqZnJlcXMsDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbnVtKTsNCj4gPiArdHlwZWRlZiB1aW50 MzJfdCAoKnJ0ZV9wb3dlcl9nZXRfZnJlcV90KSh1bnNpZ25lZCBpbnQgbGNvcmVfaWQpOw0KPiA+ ICt0eXBlZGVmIGludCAoKnJ0ZV9wb3dlcl9zZXRfZnJlcV90KSh1bnNpZ25lZCBpbnQgbGNvcmVf aWQsIHVpbnQzMl90DQo+ID4gK2luZGV4KTsgdHlwZWRlZiBpbnQgKCpydGVfcG93ZXJfZnJlcV9j aGFuZ2VfdCkodW5zaWduZWQgaW50DQo+ID4gK2xjb3JlX2lkKTsNCj4gPiArDQo+ID4NCj4NCj4g SSBndWVzcyBhYm92ZSBpcyBub3QgcmVxdWlyZWQgZm9yIHVzZXJzLCB3aGF0IGRvIHlvdSB0aGlu ayB0byBjcmVhdGUgYSBkcml2ZXIgaGVhZGVyDQo+IGZpbGUgYW5kIG1vdmUgdGhlc2UgdG8gZHJp dmVyIGhlYWRlciBmaWxlPw0KDQo+DQo+IDwuLi4+DQo+DQo+ID4gKw0KPiA+ICsvKioNCj4gPiAr ICogTWFjcm8gdG8gc3RhdGljYWxseSByZWdpc3RlciB0aGUgb3BzIG9mIGEgY3B1ZnJlcSBkcml2 ZXIuDQo+ID4gKyAqLw0KPiA+ICsjZGVmaW5lIFJURV9QT1dFUl9SRUdJU1RFUl9PUFMob3BzKSAg ICAgICAgICAgICAgICBcDQo+ID4gKyAgIChSVEVfSU5JVChwb3dlcl9oZGxyX2luaXRfIyNvcHMp ICAgICAgICBcDQo+ID4gKyAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcDQo+ID4gKyAgICAgICAgICAgcnRlX3Bvd2VyX3JlZ2lzdGVyX29wcygmb3BzKTsgICBcDQo+ ID4gKyAgIH0pDQo+ID4NCj4NCj4gaXMgKCkgcmVxdWlyZWQgYXJvdW5kIFJURV9JTklUKCkNClRo aXMgd2FzIGFkZGVkIHRvIGFkZHJlc3MgdGhlIGNoZWNrcGF0Y2ggZXJyb3JzLg0KPg0KPiA+ICsN Cj4gPiArLyoqDQo+ID4gKyAqIEBpbnRlcm5hbCBHZXQgdGhlIHBvd2VyIG9wcyBzdHJ1Y3QgZnJv bSBpdHMgaW5kZXguDQo+ID4gKyAqDQo+ID4gKyAqIEBwYXJhbSBvcHNfaW5kZXgNCj4gPiArICog ICBUaGUgaW5kZXggb2YgdGhlIG9wcyBzdHJ1Y3QgaW4gdGhlIG9wcyBzdHJ1Y3QgdGFibGUuDQo+ ID4gKyAqIEByZXR1cm4NCj4gPiArICogICBUaGUgcG9pbnRlciB0byB0aGUgb3BzIHN0cnVjdCBp biB0aGUgdGFibGUgaWYgcmVnaXN0ZXJlZC4NCj4gPiArICovDQo+ID4gK3N0cnVjdCBydGVfcG93 ZXJfb3BzICoNCj4gPiArcnRlX3Bvd2VyX2dldF9vcHMoaW50IG9wc19pbmRleCk7DQo+ID4gKw0K PiA+ICAvKioNCj4gPiAgICogSW5pdGlhbGl6ZSBwb3dlciBtYW5hZ2VtZW50IGZvciBhIHNwZWNp ZmljIGxjb3JlLiBJZiBydGVfcG93ZXJfc2V0X2VudigpIGhhcw0KPiA+ICAgKiBub3QgYmVlbiBj YWxsZWQgdGhlbiBhbiBhdXRvLWRldGVjdCBvZiB0aGUgZW52aXJvbm1lbnQgd2lsbCBzdGFydA0K PiA+IGFuZCBAQCAtMTA4LDEwICsyMDAsMTQgQEAgaW50IHJ0ZV9wb3dlcl9leGl0KHVuc2lnbmVk IGludCBsY29yZV9pZCk7DQo+ID4gICAqIEByZXR1cm4NCj4gPiAgICogIFRoZSBudW1iZXIgb2Yg YXZhaWxhYmxlIGZyZXF1ZW5jaWVzLg0KPiA+ICAgKi8NCj4gPiAtdHlwZWRlZiB1aW50MzJfdCAo KnJ0ZV9wb3dlcl9mcmVxc190KSh1bnNpZ25lZCBpbnQgbGNvcmVfaWQsIHVpbnQzMl90ICpmcmVx cywNCj4gPiAtICAgICAgICAgICB1aW50MzJfdCBudW0pOw0KPiA+ICtzdGF0aWMgaW5saW5lIHVp bnQzMl90DQo+ID4gK3J0ZV9wb3dlcl9mcmVxcyh1bnNpZ25lZCBpbnQgbGNvcmVfaWQsIHVpbnQz Ml90ICpmcmVxcywgdWludDMyX3Qgbikgew0KPiA+ICsgICBzdHJ1Y3QgcnRlX3Bvd2VyX29wcyAq b3BzOw0KPiA+DQo+ID4gLWV4dGVybiBydGVfcG93ZXJfZnJlcXNfdCBydGVfcG93ZXJfZnJlcXM7 DQo+ID4gKyAgIG9wcyA9IHJ0ZV9wb3dlcl9nZXRfb3BzKHJ0ZV9wb3dlcl9nZXRfZW52KCkpOw0K PiA+ICsgICByZXR1cm4gb3BzLT5nZXRfYXZhaWxfZnJlcXMobGNvcmVfaWQsIGZyZXFzLCBuKTsg fQ0KPiA+DQo+DQo+IFdoeSBub3QgcHJvcGVyIGZ1bmN0aW9ucyBidXQgInN0YXRpYyBpbmxpbmUg ZnVuY3Rpb25zIj8NClRoZXNlIGlubGluZSBmdW5jdGlvbnMgYXJlIGV4cGVjdGVkIHRvIGJlIGNh bGxlZCBmcm9tIGRhdGFwYXRoIGFuZCB0byBhdm9pZCBhZGRpdGlvbmFsIGN5Y2xlcyB3aXRoIHRo ZSByZWZhY3Rvci4NCg0KPg0KPiA+DQo+ID4gIC8qKg0KPiA+ICAgKiBSZXR1cm4gdGhlIGN1cnJl bnQgaW5kZXggb2YgYXZhaWxhYmxlIGZyZXF1ZW5jaWVzIG9mIGEgc3BlY2lmaWMgbGNvcmUuDQo+ ID4gQEAgLTEyNCw5ICsyMjAsMTQgQEAgZXh0ZXJuIHJ0ZV9wb3dlcl9mcmVxc190IHJ0ZV9wb3dl cl9mcmVxczsNCj4gPiAgICogQHJldHVybg0KPiA+ICAgKiAgVGhlIGN1cnJlbnQgaW5kZXggb2Yg YXZhaWxhYmxlIGZyZXF1ZW5jaWVzLg0KPiA+ICAgKi8NCj4gPiAtdHlwZWRlZiB1aW50MzJfdCAo KnJ0ZV9wb3dlcl9nZXRfZnJlcV90KSh1bnNpZ25lZCBpbnQgbGNvcmVfaWQpOw0KPiA+ICtzdGF0 aWMgaW5saW5lIHVpbnQzMl90DQo+ID4gK3J0ZV9wb3dlcl9nZXRfZnJlcSh1bnNpZ25lZCBpbnQg bGNvcmVfaWQpIHsNCj4gPiArICAgc3RydWN0IHJ0ZV9wb3dlcl9vcHMgKm9wczsNCj4gPg0KPiA+ IC1leHRlcm4gcnRlX3Bvd2VyX2dldF9mcmVxX3QgcnRlX3Bvd2VyX2dldF9mcmVxOw0KPiA+ICsg ICBvcHMgPSBydGVfcG93ZXJfZ2V0X29wcyhydGVfcG93ZXJfZ2V0X2VudigpKTsNCj4gPg0KPg0K PiBBcyAncnRlX3Bvd2VyX2dldF9lbnYoKScgYWxyZWFkeSByZXR1cm5zIGEgZ2xvYmFsIHZhcmlh YmxlLCB3aHkgbm90IHNldCBhIGdsb2JhbCBvcHMNCj4gcG9pbnRlciBhbmQgZGlyZWN0bHkgYWNj ZXNzIHRvIHRoZW0sIGlzIGFib3ZlIGFic3RyYWN0aW9uIHByb3ZpZGluZyBhbnkgYmVuZWZpdD8N CnJ0ZV9wb3dlcl9nZXRfb3BzKCkgaW50ZXJuYWxseSB3aWxsIGNoZWNrIGlmIHRoZSByZXNwZWN0 aXZlIG9wcyBzdHJ1Y3QgaXMgcmVnaXN0ZXJlZCBvciBub3QuDQpJIHdpbGwgcmV3b3JrIGl0IGFu ZCBrZWVwIGdsb2JhbCBvcHMgdG8gZ2V0IHBvcHVsYXRlZCBpbiBydGVfcG93ZXJfc2V0X2Vudigp Lg0KDQo+DQo+DQoNCg==