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 E872AA0543; Wed, 14 Dec 2022 14:54:55 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C7A05400D6; Wed, 14 Dec 2022 14:54:55 +0100 (CET) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by mails.dpdk.org (Postfix) with ESMTP id 3A28E4003F for ; Wed, 14 Dec 2022 14:54:54 +0100 (CET) Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 2BEDVYRP013274; Wed, 14 Dec 2022 05:52:28 -0800 Received: from nam11-co1-obe.outbound.protection.outlook.com (mail-co1nam11lp2171.outbound.protection.outlook.com [104.47.56.171]) by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 3mf6tq122f-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 14 Dec 2022 05:52:28 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=R9mTwbcUt/d4H718GtrWjifFLMepD9cWRd7whRKP/yrHlHzKlUAJpNkLqlZPniIFGsJFUJlmYTkA35pqdrJ3GkrtP0dSiS9GalvVRfiHZyCshx3UYymRHokDNUaYSVDxKBLmfnJMWLkSFfOAPqIPjWiqTALF2wXmh4yWMZspdn2iuRVaUT8Ei92lk5qVtXjDBzcI1wHbI7phf1EAMTRaikh9S/q4rJSevZ4hXI4hCM7ZCE65WBd+uGVfQ8iQpXR74h/L/JDd2guj6WsY2f1AQPu1ejPIIZ6wqjAzaO1CVkHTso7PyfokDcmw8jW7b+J2FrTORSozqh8cqTTWQ4dIwQ== 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=2tgLOtdpo52Z6TYLZqwRFWCvZcfmcFFXuQhFLM7lLn8=; b=D68F3vbS7wERfJmWzRYgnfknhrbz8UYSxdh0KtvwZkwZZ8loN15u8/yY2Rj5WBdJ3vY2fOKFyEyPVFPUbru9VpOzBweRkFrh7+lE9qWSEubcGO/riN9Td8DY7qoyXmHwRLajTrsHWbmphvD5IWm9/q8nrfeiu6eDxgdb9+0RKVBoede6uD14Vq0KAD5EsuFAq5rIGL9h7TD9Zq8x12L4BM4GDzyUxMtt3f7GY+S70fIRVgO5uMXvRjEndfRDtYeoJ+hnu61Rq9goU8FMGCrepI1YbqZJXdBh6SGMWWrc0WjDftclm0/EBTZsJRB0vqTwupYBlixcYPzq2+oudNEqhA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=marvell.com; dmarc=pass action=none header.from=marvell.com; dkim=pass header.d=marvell.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.onmicrosoft.com; s=selector1-marvell-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=2tgLOtdpo52Z6TYLZqwRFWCvZcfmcFFXuQhFLM7lLn8=; b=jDQVdfmoHfAwFujI/S/welCpy17wTbjLJV5wfzVMU2me4UT88P4eSQyJDAK9pBV1S1BbdX2b4gA1sq0gj5szcqvN/7nlh6EBmAdB/DCRH8tuJpZQVnL+TWmL/LEEGh2peURt4PUqcu6uw+HO3Z/XbalhneBsCbHwReTvntwmEyk= Received: from CO3PR18MB5005.namprd18.prod.outlook.com (2603:10b6:303:17e::22) by SA1PR18MB4552.namprd18.prod.outlook.com (2603:10b6:806:1e3::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5880.11; Wed, 14 Dec 2022 13:52:23 +0000 Received: from CO3PR18MB5005.namprd18.prod.outlook.com ([fe80::305c:f1fa:266a:4058]) by CO3PR18MB5005.namprd18.prod.outlook.com ([fe80::305c:f1fa:266a:4058%3]) with mapi id 15.20.5880.019; Wed, 14 Dec 2022 13:52:23 +0000 From: Ankur Dwivedi To: Ferruh Yigit , "dev@dpdk.org" CC: "thomas@monjalon.net" , "mdr@ashroe.eu" , "orika@nvidia.com" , "ferruh.yigit@xilinx.com" , "chas3@att.com" , "humin29@huawei.com" , "linville@tuxdriver.com" , "ciara.loftus@intel.com" , "qi.z.zhang@intel.com" , "mw@semihalf.com" , "mk@semihalf.com" , "shaibran@amazon.com" , "evgenys@amazon.com" , "igorch@amazon.com" , "chandu@amd.com" , Igor Russkikh , "shepard.siegel@atomicrules.com" , "ed.czeck@atomicrules.com" , "john.miller@atomicrules.com" , "ajit.khaparde@broadcom.com" , "somnath.kotur@broadcom.com" , Jerin Jacob Kollanukkaran , "Maciej Czekaj [C]" , Shijith Thotton , Srisivasubramanian Srinivasan , Harman Kalra , "rahul.lakkireddy@chelsio.com" , "johndale@cisco.com" , "hyonkim@cisco.com" , "liudongdong3@huawei.com" , "yisen.zhuang@huawei.com" , "xuanziyang2@huawei.com" , "cloud.wangxiaoyun@huawei.com" , "zhouguoyang@huawei.com" , "simei.su@intel.com" , "wenjun1.wu@intel.com" , "qiming.yang@intel.com" , "Yuying.Zhang@intel.com" , "beilei.xing@intel.com" , "xiao.w.wang@intel.com" , "jingjing.wu@intel.com" , "junfeng.guo@intel.com" , "rosen.xu@intel.com" , Nithin Kumar Dabilpuram , Kiran Kumar Kokkilagadda , Sunil Kumar Kori , Satha Koteswara Rao Kottidi , Liron Himi , "zr@semihalf.com" , Radha Chintakuntla , Veerasenareddy Burru , Sathesh B Edara , "matan@nvidia.com" , "viacheslavo@nvidia.com" , "sthemmin@microsoft.com" , "longli@microsoft.com" , "spinler@cesnet.cz" , "chaoyong.he@corigine.com" , "niklas.soderlund@corigine.com" , "hemant.agrawal@nxp.com" , "sachin.saxena@oss.nxp.com" , "g.singh@nxp.com" , "apeksha.gupta@nxp.com" , "sachin.saxena@nxp.com" , "aboyer@pensando.io" , Rasesh Mody , Shahed Shaikh , Devendra Singh Rawat , "andrew.rybchenko@oktetlabs.ru" , "jiawenwu@trustnetic.com" , "jianwang@trustnetic.com" , "jbehrens@vmware.com" , "maxime.coquelin@redhat.com" , "chenbo.xia@intel.com" , "steven.webster@windriver.com" , "matt.peters@windriver.com" , "bruce.richardson@intel.com" , "mtetsuyah@gmail.com" , "grive@u256.net" , "jasvinder.singh@intel.com" , "cristian.dumitrescu@intel.com" , "jgrajcia@cisco.com" Subject: RE: [EXT] Re: [PATCH v3 1/4] ethdev: add trace points Thread-Topic: [EXT] Re: [PATCH v3 1/4] ethdev: add trace points Thread-Index: AQHY2ZcZ4xpQ77e75UWiG74043kDUq5sqZyAgAEEvSA= Date: Wed, 14 Dec 2022 13:52:23 +0000 Message-ID: References: <20220929102936.5490-1-adwivedi@marvell.com> <20221006151844.23483-1-adwivedi@marvell.com> <20221006151844.23483-2-adwivedi@marvell.com> <9a458e46-f71c-22b6-63a2-5c425624275a@amd.com> In-Reply-To: <9a458e46-f71c-22b6-63a2-5c425624275a@amd.com> Accept-Language: en-IN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-dg-rorf: true x-dg-ref: =?utf-8?B?UEcxbGRHRStQR0YwSUc1dFBTSmliMlI1TG5SNGRDSWdjRDBpWXpwY2RYTmxj?= =?utf-8?B?bk5jWVdSM2FYWmxaR2xjWVhCd1pHRjBZVnh5YjJGdGFXNW5YREE1WkRnME9X?= =?utf-8?B?STJMVE15WkRNdE5HRTBNQzA0TldWbExUWmlPRFJpWVRJNVpUTTFZbHh0YzJk?= =?utf-8?B?elhHMXpaeTA0TUdSalpHVmtaaTAzWW1JMkxURXhaV1F0T1RSbVpDMDBPR0Uw?= =?utf-8?B?TnpJeFlqVmlORGRjWVcxbExYUmxjM1JjT0RCa1kyUmxaVEV0TjJKaU5pMHhN?= =?utf-8?B?V1ZrTFRrMFptUXRORGhoTkRjeU1XSTFZalEzWW05a2VTNTBlSFFpSUhONlBT?= =?utf-8?B?SXpORFUwT1NJZ2REMGlNVE16TVRVME9UazFNelF5TnpnNE5EYzRJaUJvUFNK?= =?utf-8?B?SWNqZHZUMnAzVkVOVFJFZzJPVGR5ZGsxMVJsZGFSVk5UWlRROUlpQnBaRDBp?= =?utf-8?B?SWlCaWJEMGlNQ0lnWW04OUlqRWlJR05wUFNKalFVRkJRVVZTU0ZVeFVsTlNW?= =?utf-8?B?VVpPUTJkVlFVRk9aMGhCUVVJcmVETnNSbmQzTDFwQlYxVXJkVXQzYmxCaFUw?= =?utf-8?B?eGFWRFkwY2tOak9YQkpjMDFCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVG?= =?utf-8?B?QlFVRkJTRUZCUVVGQ2IwSjNRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZC?= =?utf-8?B?UVVGQlJVRkJVVUZDUVVGQlFUTlVla1pCUVVGQlFVRkJRVUZCUVVGQlFVRkJR?= =?utf-8?B?VW8wUVVGQlFtaEJSMUZCV2tGQ2VVRkhWVUZqZDBKNlFVRkJRVUZCUVVGQlFV?= =?utf-8?B?RkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVG?= =?utf-8?B?QlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZC?= =?utf-8?B?UVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJR?= =?utf-8?B?VUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFV?= =?utf-8?B?RkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGRlFVRkJRVUZCUVVG?= =?utf-8?B?QlFXZEJRVUZCUVVGdVowRkJRVWROUVdSUlFucEJTRkZCWW5kQ2RFRkdPRUZq?= =?utf-8?B?UVVKc1FVaEpRV04zUW5aQlJ6UkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJR?= =?utf-8?B?VUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFV?= =?utf-8?B?RkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVG?= =?utf-8?B?QlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZC?= =?utf-8?B?UVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJV?= =?utf-8?B?VUZCUVVGQlFVRkJRVU5CUVVGQlFVRkRaVUZCUVVGWmQwSXhRVWhOUVdSQlFu?= =?utf-8?B?WkJSekJCV0hkQ2QwRkhaMEZpZDBKMVFVZFZRV0puUWpGQlJ6QkJXV2RDYkVG?= =?utf-8?B?SVNVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZC?= =?utf-8?B?UVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJR?= =?utf-8?B?VUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFV?= =?utf-8?B?RkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVG?= =?utf-8?B?QlFVRkJRVUZCUWtGQlFVRkJRVUZCUVVGSlFVRkJRVUZCU2pSQlFVRkNha0ZJ?= =?utf-8?B?VlVGamQwSXdRVWM0UVdKUlFtWkJTRTFCWTNkQ2RVRkdPRUZhUVVKb1FVaE5R?= =?utf-8?B?V0ZCUW1aQlNGbEJUVUZCZVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFV?= =?utf-8?Q?FBQUFB?= x-dg-refone: =?utf-8?B?UVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJR?= =?utf-8?B?VUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFV?= =?utf-8?B?RkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVG?= =?utf-8?B?QlFVRkJRVUZCUVVGQlFVVkJRVUZCUVVGQlFVRkJaMEZCUVVGQlFXNW5RVUZC?= =?utf-8?B?UjAxQlpGRkNla0ZJVVVGaWQwSjBRVVk0UVdOM1FucEJSelJCV0hkQ2NrRkhW?= =?utf-8?B?VUZsVVVJelFVYzRRV05uUW10QlNFMUJRVUZCUVVGQlFVRkJRVUZCUVVGQlFV?= =?utf-8?B?RkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVG?= =?utf-8?B?QlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZC?= =?utf-8?B?UVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJR?= =?utf-8?B?VUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZSUVVGQlFVRkJRVUZCUTBGQlFV?= =?utf-8?B?RkJRVU5sUVVGQlFWbDNRakZCU0UxQlpFRkNka0ZITUVGWWQwSjZRVWhOUVdK?= =?utf-8?B?blFtWkJSelJCWW5kQ2EwRkhWVUZpUVVKd1FVY3dRV0ZSUWpCQlIxVkJZMmRD?= =?utf-8?B?WmtGSVdVRk5RVUY1UVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJR?= =?utf-8?B?VUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFV?= =?utf-8?B?RkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVG?= =?utf-8?B?QlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQ1FVRkJRVUZC?= =?utf-8?B?UVVGQlFVbEJRVUZCUVVGS05FRkJRVUpxUVVoVlFXTjNRakJCUnpoQllsRkNa?= =?utf-8?B?a0ZJVFVGamQwSjFRVVk0UVdOM1FuZEJSMFZCV1hkQ2JFRkdPRUZrWjBGM1FV?= =?utf-8?B?UkpRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVG?= =?utf-8?B?QlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZC?= =?utf-8?B?UVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJR?= =?utf-8?B?VUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFV?= =?utf-8?B?RkJSVUZCUVVGQlFVRkJRVUZuUVVGQlFVRkJibWRCUVVGSFVVRmlRVUozUVVZ?= =?utf-8?B?NFFXTjNRbkpCU0d0QlkwRkNiRUZHT0VGWmQwSnZRVWRGUVdSQlFtWkJSekJC?= =?utf-8?B?V2xGQ2VrRklUVUZaVVVKdVFVZFZRVmgzUWpKQlJFRkJUV2RCUVVGQlFVRkJR?= =?utf-8?B?VUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFV?= =?utf-8?B?RkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVG?= =?utf-8?B?QlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZC?= =?utf-8?B?UVVGQlFVRkJRVUZCUVZGQlFVRkJRVUZCUVVGRFFVRkJRVUZCUTJWQlFVRkJX?= =?utf-8?B?a0ZDYzBGSVFVRllkMEo2UVVkM1FWbFJRbXBCUjNOQldIZENha0ZIWjBGWlVV?= =?utf-8?B?SXdRVVk0UVdKUlFteEJTRTFCWTNkQ2FFRkhZMEZhVVVGQlFVRkJRVUZCUVVG?= =?utf-8?B?QlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZC?= =?utf-8?B?UVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJR?= =?utf-8?B?VUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFV?= =?utf-8?Q?FBQUFB?= x-dg-reftwo: QUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBSUFBQUFBQUo0QUFBQmtBR3dBY0FCZkFIUUFaUUJoQUcwQWN3QmZBRzhBYmdCbEFHUUFjZ0JwQUhZQVpRQmZBR1lBYVFCc0FHVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQWdBQUFBQUFuZ0FBQUdVQWJRQmhBR2tBYkFCZkFHRUFaQUJrQUhJQVpRQnpBSE1BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUNBQUFBQUFDZUFBQUFiUUJoQUhJQWRnQmxBR3dBYkFCZkFIUUFaUUJ5QUcwQWFRQnVBSFVBY3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFJQUFBQUFBQT09Ii8+PC9tZXRhPg== x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CO3PR18MB5005:EE_|SA1PR18MB4552:EE_ x-ms-office365-filtering-correlation-id: 3f7c4f3b-9042-4606-765f-08daddda6d38 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: mf+UrtNTGK5Yi/heMftJy9EQ2BGag7ZVGEDkhKTSMVzUE1HpVIONCt5DantsawFUAJoZu1sW4ewqEOWgf959YUD0K+mbHieI/rxViwqtINj7XBXUyP+eO3UwM5V/hfslcMTCIPXd/1Cts/G7mrTbzSvLkSyLoPlyuE2Zof+cOD54Nyq16PxN6obzrsXhBOZLBLMivNxlOwaD6SPpyuEqfrTRGgTQM+Z4aIiTieZwnG/gy/NJRcsvVuYSbQ5hoznDzu9cCFFAT59me2w7QNlXl/8BpXRVR0pqWyHsW6EJQov5oKc2Z7pisjhydJP9ZPG2eLkf5SIbI1oACOttqJSTvfNFpjt+0q6oM1cEgYAIroAlQIxZ8VS6tBHMtbcjVKhxWKHCvm7fnsCJBEwbg05SuiKRcQHokfe2Tm6XYOi7LHb930PbX4IQEjRZ00jS+wglvgcX6OBoWYuM4F+19W3ViMQ+XS9KJlV7vT6yq/oyzJcrZ7eebsWBvTVO1YaqwsN6/prr3wwosTOk2Ly75/TK1QsG8MVXQn7UgAKbVzbnMjnugBNKczzbj9h+2aHUS/Oq59SgCR0IX5LZ0uU4B9RZWGXKFE6HuiERPxD/a1tTKZlY0ycF3JOTgPNGWes208E+4NfVrE7Dy5JAnTu1LFeHMR9mHt+2/tkqLE4l9dBmbu6+jCeUkypCeRnp1zShGKMG x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CO3PR18MB5005.namprd18.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230022)(4636009)(396003)(366004)(376002)(346002)(136003)(39850400004)(451199015)(83380400001)(86362001)(110136005)(54906003)(316002)(9686003)(38070700005)(33656002)(55016003)(122000001)(6506007)(26005)(38100700002)(7696005)(186003)(52536014)(8676002)(2906002)(7366002)(7416002)(478600001)(71200400001)(7406005)(30864003)(66446008)(5660300002)(66556008)(8936002)(66946007)(41300700001)(66476007)(4326008)(64756008)(76116006)(559001)(579004); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?WTRjbjlWTzkwM2xpRTV4VU1LYUEvZnl3andWczJHU2tUenNZWkRLWlRLVFFG?= =?utf-8?B?enlwb1V0MUdCMGloUmpRZFExL280djJ4QWdHNjJiVXNnVkhPYWRaRjRsOTZk?= =?utf-8?B?YzF6R3lGaTZITDQyaXRpQkNCNVB2bVNJdnhrY0QwMjlpRjRacWkwQzg2TlAz?= =?utf-8?B?T0tUOTM5R1plc2JwWXRHNnlmeUMycnNwb3c2a05oZ3J4Mko5andtVTNXTG9w?= =?utf-8?B?d3F4QzRyZytiUW8zYnYvOGJLTG5XeFpVZEdlb0N6WlhXcVUxdmxZMXNFL2ZT?= =?utf-8?B?SnNzVVRtQW9taVZGWUdVTk5QRmgyenlYY0hvU0RoUU9PU3VvVWZUam9NaFQ3?= =?utf-8?B?Y2tiTjlZakNYMTZHbjVSdHd6eFI2UllzdE4rclp2Q0lUZ3I5aVEzS2JqelRQ?= =?utf-8?B?bGZGNk9FaFp6SWpnRnZlcjJzMWdTRWlIYk9uNHo3WXZUL1YrL2l5OHFxSDkx?= =?utf-8?B?aTBpMm9WSVNQa21QSmdMbGUrVm5JRGpObU5Va1BHNmQ0N1hHM2cxNHdFTzVG?= =?utf-8?B?aG8vUWFGYUszL1ZYUmZJV0JpWUtOMklUSU03M1RxVThiMk53ak1OMWVwWXhN?= =?utf-8?B?NnBvRW1CVjUwdml4anRZb1Z3V3FYajFGZFEyZlhRY1ZXU2phNnhaaVdWT0JW?= =?utf-8?B?VExMMHZSWkw4NzhzbGVoTkc3dXoyKy96K1NZRVpRNEdFRUw0VkYrTkY4bVpn?= =?utf-8?B?djV0eTZsK3dWNVZlejA3OFRZVkpTQTkxay9leDRmUnlzUEFQdXA5NFJZamJm?= =?utf-8?B?dzN4QlMzTnJKTzNOd0p5K052cFMvL09HbExaWE11dFVaOUhEeElLdGt5L2JQ?= =?utf-8?B?TjRNNDhMSTU2emFkc0RwZVlxU0ZEYUxLa2lIS0xHSHpLc0t3NStnc1c2Zm5j?= =?utf-8?B?VkxOTW8zTjVuZkM5MFRlMTdBenRQTEhjNmR4YkxOV25uY2IzdTF1WG9jZ0RW?= =?utf-8?B?N2p1U0ZSM3hoQ2RsYlI0cm4xeXVvait5MzU2N1ZHSURTenc4dFJFL0kvTTB5?= =?utf-8?B?UUZ4VUt5Mkl2cUZvNktxTy9zNlF1cXR4bmFpMkF5QlB1OXdjQnMraDVjanp0?= =?utf-8?B?eXp4R1Q4anF6TXAvSUFLYlBZcjkyOUpRRVJnYmsybnR0TGVYbFJDZ2VNT09V?= =?utf-8?B?NjM5U2hZbzNzT1JPQ2Z4b0tpQnJHWVdYeUd0WUtDeXpoZVZaalJTaWNsTlNP?= =?utf-8?B?MFpvMGR3SHpNMjhvSHpFQmdLVzVXYXV5RTJJYXZoNnpJNUcxdHVGWHdseXRz?= =?utf-8?B?dWltb2dmNkE5SUpNNW9wVFBzQytvc0FPMldlWVEwK0F2YjdKUzR2aG9zVFhJ?= =?utf-8?B?WXJSR1BkbHJ2eXBzUm9OdzJ3clU5dGpGWlpQRVdBT1lQb1dmSlFaanRNelFl?= =?utf-8?B?ejkvZ2FQbU9XK24wWGhIMkxkZWRqZnpWYkc5WDU3U2NCR08xc24xN1p0bUls?= =?utf-8?B?OWgybTFVYnkxTFZLSHkzMGRtOXhTM2owWFN1MGoxbUs5a3p5VFNld2hJc1ZX?= =?utf-8?B?aVVzOEducVdJdUZHVUZyWUJYS1YzSnZ1Nms0K1N1SklqNzhDYnpuWkg0Q3ZG?= =?utf-8?B?MjFnTVZxU24vdExKa0UrazJ1QTlMV2owQnE0ZXhFM3FSejloMnJyOXEzQlF0?= =?utf-8?B?OStmdEh2ZjA5NTlMSUVmdUJPL0I1c3hGcFpKK1lZcVBSZjczNXNVOWxnWnVT?= =?utf-8?B?NUhsNC9qbjFuQU9uTmtpa01kUWxGb21xOG9SellZOHVhbHo3czArZjB2bUVD?= =?utf-8?B?RzE3M3d4SUVOYnQ0MTc4eVNiYmNIb2VhdHMxUUxhbWphWm9BRU1WUFFWQW9u?= =?utf-8?B?RmErVXF0WXBNaElMMXFHWStiV2N3L0ZkQ0k4b3pEdHBHSGN1alF2S3lOMDFl?= =?utf-8?B?VXlSeVZsdjNrWWhXTTNwNzQzSEdDVldTK1BPUjAvTlEvNElVR0w4TGJxeGdQ?= =?utf-8?B?LytmRHVPYTRFL2hMS2tDbEswdncwT09hek1nL2dOYjd5TXlUVVg0MUt0QVBB?= =?utf-8?B?TWE2SVpDa1A2aVdBYmJXWldXd2ZQK0wxdWhnSERBUzFRb01XM29NbGw5NnpD?= =?utf-8?B?aHFSZXVDVTNKMDQ0Z1VMUmR6ekRkMkJiQnl5VE9hc092VHdWdExzdE82UmR1?= =?utf-8?Q?QhFOejNchELabArsN9t6NrKM+?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: marvell.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CO3PR18MB5005.namprd18.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3f7c4f3b-9042-4606-765f-08daddda6d38 X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Dec 2022 13:52:23.0903 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 70e1fb47-1155-421d-87fc-2e58f638b6e0 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: KEXYMNaGzMR+M0lgYlDlpHnemAYeMVnUhpN1GaUyHFbHz1UXwNCxqPQaNgvxF4dq8tcxwRxVAf+n99lwsqSyog== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR18MB4552 X-Proofpoint-GUID: u1Wd5ZSj5W0Dc29vqE2Doo00dYhTXc7U X-Proofpoint-ORIG-GUID: u1Wd5ZSj5W0Dc29vqE2Doo00dYhTXc7U X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.923,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2022-12-14_06,2022-12-14_01,2022-06-22_01 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 SGkgRmVycnVoLA0KDQpUaGFua3MgYSBsb3QgZm9yIHJldmlld2luZyB0aGlzIHBhdGNoLiBUaGUg Z2VuZXJpYyBxdWVzdGlvbnMgaGF2ZSBiZWVuIGFuc3dlcmVkIGJ5IEplcmluIGluIGVhcmxpZXIg ZW1haWwuIEkgaGF2ZSByZXBsaWVkIGlubGluZSB0byB0aGUgcmVtYWluaW5nIGNvbW1lbnRzLg0K Pg0KPlRoZXJlIGFyZSBidW5jaCBvZiBzbWFsbCBjb21tZW50cyBpbmxpbmUsIHNvbWUgYXJlIHJl bGF0ZWQgdG8gYWJvdmUgaGlnaGxldmVsDQo+cXVlc3Rpb24uDQo+QnV0IEkgc3RvcHBlZCBhZnRl ciBzb21lIHBvaW50LCBzcGVjaWZpY2FsbHkgYWZ0ZXINCj4ncnRlX2V0aF90cmFjZV90aW1lc3lu Y19hZGp1c3RfdGltZSgpJyA6KSwgdGhpcyBpcyBhIGJpZyBmaWxlLCBzcGxpdHRpbmcgaXQgbWF5 IGhlbHANCj5yZXZpZXdlcnMuDQpJIHdpbGwgc3BsaXQgdGhpcyBwYXRjaCBpbnRvIHR3by4NCj4N Cj4+DQo+PiBBZGQgdHJhY2UgcG9pbnRzIGZvciBldGhkZXYgZnVuY3Rpb25zLg0KPj4NCj4+IFNp Z25lZC1vZmYtYnk6IEFua3VyIER3aXZlZGkgPGFkd2l2ZWRpQG1hcnZlbGwuY29tPg0KPg0KPjwu Li4+DQo+DQo+PiArUlRFX1RSQUNFX1BPSU5UX1JFR0lTVEVSKHJ0ZV9ldGhfdHJhY2VfcnhfYnVy c3RfbW9kZV9nZXQsDQo+PiArICAgICAgIGxpYi5ldGhkZXYucnhfYnVyc3RfbW9kZV9nZXQpDQo+ PiArDQo+DQo+VHggY291bnRlcnBhcnQgb2YgdGhpcyBBUEkgaXMgbWlzc2luZy4NClRoZSB0eCBB UEkgaXMgYWxzbyBhZGRlZC4NCitSVEVfVFJBQ0VfUE9JTlRfUkVHSVNURVIocnRlX2V0aF90cmFj ZV90eF9idXJzdF9tb2RlX2dldCwNCisJbGliLmV0aGRldi50eF9idXJzdF9tb2RlX2dldCkNCisN Cj4NCj4+ICtSVEVfVFJBQ0VfUE9JTlRfUkVHSVNURVIocnRlX2V0aF90cmFjZV9yeF9xdWV1ZV9p bmZvX2dldCwNCj4+ICsgICAgICAgbGliLmV0aGRldi5yeF9xdWV1ZV9pbmZvX2dldCkNCj4+ICsN Cj4+ICtSVEVfVFJBQ0VfUE9JTlRfUkVHSVNURVIocnRlX2V0aF90cmFjZV9yeF9xdWV1ZV9zZXR1 cCwNCj4+ICsgICAgICAgbGliLmV0aGRldi5yeF9xdWV1ZV9zZXR1cCkNCj4+ICsNCj4NCj4hIHJ0 ZV9ldGhfdHJhY2VfcnhfcXVldWVfc2V0dXAoKSBpcyBub3QgY2FsbGVkLg0KV2lsbCByZW1vdmUg dGhpcy4gVGhpcyBpcyBub3QgcmVxdWlyZWQgYXMgcnRlX2V0aGRldl90cmFjZV9yeHFfc2V0dXAg aXMgYWxyZWFkeSBhZGRlZC4NCg0KPg0KPkFuZCBUeCBjb3VudGVycGFydCBvZiB0aGlzIEFQSSBp cyBtaXNzaW5nLCB0aGVzZSBhcmUgaW1wb3J0YW50IEFQSXMsIHdlIHNob3VsZA0KPmhhdmUgdGhl bS4NCnJ0ZV9ldGhkZXZfdHJhY2VfdHhxX3NldHVwIGlzIGFscmVhZHkgYWRkZWQuDQo+DQo+PC4u Lj4NCj4NCj4+IEBAIC0zMzEsNiArMzM2LDcgQEAgcnRlX2V0aF9maW5kX25leHQodWludDE2X3Qg cG9ydF9pZCkNCj4+ICAgICAgICAgaWYgKHBvcnRfaWQgPj0gUlRFX01BWF9FVEhQT1JUUykNCj4+ ICAgICAgICAgICAgICAgICByZXR1cm4gUlRFX01BWF9FVEhQT1JUUzsNCj4+DQo+PiArICAgICAg IHJ0ZV9ldGhfdHJhY2VfZmluZF9uZXh0KHBvcnRfaWQpOw0KPg0KPg0KPkZvciB0aGUgb3V0cHV0 ICdwb3J0X2lkJywgdHJhY2UgZnVuY3Rpb24gaXMgYWZ0ZXIgInJldHVybiBSVEVfTUFYX0VUSFBP UlRTOyIsDQo+c28gInRoZXJlIGlzIG5vIG5leHQgcG9ydCIgY2FzZSBpcyBpZ25vcmVkLCBuZWVk IHRvIHVwZGF0ZSBmdW5jdGlvbiB0byBnZXQgdHJhY2UNCj5vbiBlYWNoIGNhbGwuDQpPay4gV2ls bCBhZGQgdHJhY2UgZm9yIHRoZSAidGhlcmUgaXMgbm8gbmV4dCBwb3J0IiBjYXNlLg0KPg0KPjwu Li4+DQo+DQo+PiBAQCAtNjM2LDYgKzY1Niw3IEBAIHJ0ZV9ldGhfZGV2X2dldF9wb3J0X2J5X25h bWUoY29uc3QgY2hhciAqbmFtZSwNCj51aW50MTZfdCAqcG9ydF9pZCkNCj4+ICAgICAgICAgUlRF X0VUSF9GT1JFQUNIX1ZBTElEX0RFVihwaWQpDQo+PiAgICAgICAgICAgICAgICAgaWYgKCFzdHJj bXAobmFtZSwgZXRoX2Rldl9zaGFyZWRfZGF0YS0+ZGF0YVtwaWRdLm5hbWUpKSB7DQo+PiAgICAg ICAgICAgICAgICAgICAgICAgICAqcG9ydF9pZCA9IHBpZDsNCj4+ICsgICAgICAgICAgICAgICAg ICAgICAgIHJ0ZV9ldGhkZXZfdHJhY2VfZ2V0X3BvcnRfYnlfbmFtZShuYW1lLA0KPj4gKyAqcG9y dF9pZCk7DQo+DQo+DQo+VGhpcyBjb21wbGV0ZWx5IGlnbm9yZXMgdGhlIHBhdGggdGhhdCBub3Qg YWJsZSB0byBmaW5kIHBvcnRfaWQgZnJvbSBuYW1lLg0KVGhlIHRyYWNlIHdhcyBhZGRlZCBmb3Ig dGhlIHN1Y2Nlc3MgY2FzZSBvbmx5LiBGb3IgdGhlIGZhaWx1cmUgY2FzZSB0aGVyZSBpcyBubyBw b3J0X2lkIHZhbHVlLg0KPg0KPldoYXQgYWJvdXQgY2hhbmdlIHRoZSBmdW5jdGlvbiBhcw0KPg0K PmBgYA0KPnJldCA9IC1FTk9ERVY7DQo+KnBvcnRfaWQgPSBSVEVfTUFYX0VUSFBPUlRTOw0KPg0K PlJURV9FVEhfRk9SRUFDSF9WQUxJRF9ERVYocGlkKQ0KPiAgaWYgKCFzdHJjbXAoKSkNCj4gICAg KnBvcnRfaWQgPSBwaWQ7DQo+ICAgIHJldCA9IDA7DQo+ICAgIGJyZWFrOw0KPg0KPnJ0ZV9ldGhk ZXZfdHJhY2VfZ2V0X3BvcnRfYnlfbmFtZShuYW1lLCAqcG9ydF9pZCwgcmV0KTsNCj4NCj5yZXR1 cm4gcmV0Ow0KPmBgYA0KPg0KPj4gICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7DQo+ PiAgICAgICAgICAgICAgICAgfQ0KPj4NCj4+IEBAIC03MzcsNiArNzU4LDcgQEAgcnRlX2V0aF9k ZXZfcnhfcXVldWVfc3RhcnQodWludDE2X3QgcG9ydF9pZCwNCj51aW50MTZfdCByeF9xdWV1ZV9p ZCkNCj4+ICAgICAgICAgICAgICAgICByZXR1cm4gMDsNCj4+ICAgICAgICAgfQ0KPj4NCj4+ICsg ICAgICAgcnRlX2V0aGRldl90cmFjZV9yeF9xdWV1ZV9zdGFydChwb3J0X2lkLCByeF9xdWV1ZV9p ZCk7DQo+DQo+UGxlYXNlIGluY2x1ZGUgcmV0dXJuIHZhbHVlLg0KV2lsbCBhZGQgcmV0dXJuIHZh bHVlLiBUaGUgZm9sbG93aW5nIGNoYW5nZXMgd2lsbCBiZSByZXF1aXJlZDoNCnJldCA9IGV0aF9l cnIocG9ydF9pZCwgZGV2LT5kZXZfb3BzLT5yeF9xdWV1ZV9zdGFydChkZXYsIHJ4X3F1ZXVlX2lk KSk7IA0KcnRlX2V0aGRldl90cmFjZV9yeF9xdWV1ZV9zdGFydChwb3J0X2lkLCByeF9xdWV1ZV9p ZCwgcmV0KTsNCnJldHVybiByZXQ7DQo+DQo+PiAgICAgICAgIHJldHVybiBldGhfZXJyKHBvcnRf aWQsIGRldi0+ZGV2X29wcy0+cnhfcXVldWVfc3RhcnQoZGV2LA0KPj4gcnhfcXVldWVfaWQpKTsg IH0NCj4+DQo+PiBAQCAtNzcwLDYgKzc5Miw3IEBAIHJ0ZV9ldGhfZGV2X3J4X3F1ZXVlX3N0b3Ao dWludDE2X3QgcG9ydF9pZCwNCj51aW50MTZfdCByeF9xdWV1ZV9pZCkNCj4+ICAgICAgICAgICAg ICAgICByZXR1cm4gMDsNCj4+ICAgICAgICAgfQ0KPj4NCj4+ICsgICAgICAgcnRlX2V0aGRldl90 cmFjZV9yeF9xdWV1ZV9zdG9wKHBvcnRfaWQsIHJ4X3F1ZXVlX2lkKTsNCj4NCj5QbGVhc2UgaW5j bHVkZSByZXR1cm4gdmFsdWUuDQpPay4NCj4NCj4+ICAgICAgICAgcmV0dXJuIGV0aF9lcnIocG9y dF9pZCwgZGV2LT5kZXZfb3BzLT5yeF9xdWV1ZV9zdG9wKGRldiwNCj4+IHJ4X3F1ZXVlX2lkKSk7 ICB9DQo+Pg0KPj4gQEAgLTgxMCw2ICs4MzMsNyBAQCBydGVfZXRoX2Rldl90eF9xdWV1ZV9zdGFy dCh1aW50MTZfdCBwb3J0X2lkLA0KPnVpbnQxNl90IHR4X3F1ZXVlX2lkKQ0KPj4gICAgICAgICAg ICAgICAgIHJldHVybiAwOw0KPj4gICAgICAgICB9DQo+Pg0KPj4gKyAgICAgICBydGVfZXRoZGV2 X3RyYWNlX3R4X3F1ZXVlX3N0YXJ0KHBvcnRfaWQsIHR4X3F1ZXVlX2lkKTsNCj4NCj5QbGVhc2Ug aW5jbHVkZSByZXR1cm4gdmFsdWUuDQpPay4NCj4NCj4+ICAgICAgICAgcmV0dXJuIGV0aF9lcnIo cG9ydF9pZCwgZGV2LT5kZXZfb3BzLT50eF9xdWV1ZV9zdGFydChkZXYsDQo+PiB0eF9xdWV1ZV9p ZCkpOyAgfQ0KPj4NCj4+IEBAIC04NDMsMTIgKzg2NywxNCBAQCBydGVfZXRoX2Rldl90eF9xdWV1 ZV9zdG9wKHVpbnQxNl90IHBvcnRfaWQsDQo+dWludDE2X3QgdHhfcXVldWVfaWQpDQo+PiAgICAg ICAgICAgICAgICAgcmV0dXJuIDA7DQo+PiAgICAgICAgIH0NCj4+DQo+PiArICAgICAgIHJ0ZV9l dGhkZXZfdHJhY2VfdHhfcXVldWVfc3RvcChwb3J0X2lkLCB0eF9xdWV1ZV9pZCk7DQo+DQo+UGxl YXNlIGluY2x1ZGUgcmV0dXJuIHZhbHVlLg0KT2suDQo+DQo+PiAgICAgICAgIHJldHVybiBldGhf ZXJyKHBvcnRfaWQsIGRldi0+ZGV2X29wcy0+dHhfcXVldWVfc3RvcChkZXYsDQo+PiB0eF9xdWV1 ZV9pZCkpOyAgfQ0KPj4NCj4+ICB1aW50MzJfdA0KPj4gIHJ0ZV9ldGhfc3BlZWRfYml0ZmxhZyh1 aW50MzJfdCBzcGVlZCwgaW50IGR1cGxleCkgIHsNCj4+ICsgICAgICAgcnRlX2V0aF90cmFjZV9z cGVlZF9iaXRmbGFnKHNwZWVkLCBkdXBsZXgpOw0KPg0KPkkgdGhpbmsgdGhpcyBzaG91bGQgaGF2 ZSByZXR1cm4gdmFsdWUsIGJ1dCBJIGNhbiBzZWUgdGhpcyByZXF1aXJlcyBjaGFuZ2UgaW4gdGhl DQo+ZnVuY3Rpb24uDQo+DQo+SSBhbSBmb3IgZWl0aGVyIGhhdmluZyByZXR1cm4gdmFsdWUgb3Ig ZHJvcCB0aGUgdHJhY2luZyBvZiB0aGlzIGZ1bmN0aW9uDQo+Y29tcGxldGVseS4NCldpbGwgZHJv cCB0aGUgdHJhY2luZyBmb3IgdGhpcyBmdW5jdGlvbi4NCj4NCj48Li4uPg0KPg0KPj4gQEAgLTE1 NTIsNiArMTU4MSw3IEBAIHJ0ZV9ldGhfZGV2X3NldF9saW5rX3VwKHVpbnQxNl90IHBvcnRfaWQp DQo+Pg0KPj4gICAgICAgICBpZiAoKmRldi0+ZGV2X29wcy0+ZGV2X3NldF9saW5rX3VwID09IE5V TEwpDQo+PiAgICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9UU1VQOw0KPj4gKyAgICAgICBydGVf ZXRoZGV2X3RyYWNlX3NldF9saW5rX3VwKHBvcnRfaWQpOw0KPg0KPlBsZWFzZSBpbmNsdWRlIHJl dHVybiB2YWx1ZS4NCk9rLg0KPg0KPj4gICAgICAgICByZXR1cm4gZXRoX2Vycihwb3J0X2lkLA0K Pj4gKCpkZXYtPmRldl9vcHMtPmRldl9zZXRfbGlua191cCkoZGV2KSk7DQo+PiAgfQ0KPj4NCj4+ IEBAIC0xNTY1LDYgKzE1OTUsNyBAQCBydGVfZXRoX2Rldl9zZXRfbGlua19kb3duKHVpbnQxNl90 IHBvcnRfaWQpDQo+Pg0KPj4gICAgICAgICBpZiAoKmRldi0+ZGV2X29wcy0+ZGV2X3NldF9saW5r X2Rvd24gPT0gTlVMTCkNCj4+ICAgICAgICAgICAgICAgICByZXR1cm4gLUVOT1RTVVA7DQo+PiAr ICAgICAgIHJ0ZV9ldGhkZXZfdHJhY2Vfc2V0X2xpbmtfZG93bihwb3J0X2lkKTsNCj4NCj5QbGVh c2UgaW5jbHVkZSByZXR1cm4gdmFsdWUuDQpPay4NCj4NCj48Li4uPg0KPg0KPj4gQEAgLTIzMjcs NiArMjM3MSw3IEBAIHJ0ZV9ldGhfcHJvbWlzY3VvdXNfZW5hYmxlKHVpbnQxNl90IHBvcnRfaWQp DQo+PiAgICAgICAgIGRpYWcgPSAoKmRldi0+ZGV2X29wcy0+cHJvbWlzY3VvdXNfZW5hYmxlKShk ZXYpOw0KPj4gICAgICAgICBkZXYtPmRhdGEtPnByb21pc2N1b3VzID0gKGRpYWcgPT0gMCkgPyAx IDogMDsNCj4+DQo+PiArICAgICAgIHJ0ZV9ldGhfdHJhY2VfcHJvbWlzY3VvdXNfZW5hYmxlKHBv cnRfaWQsDQo+PiArIGRldi0+ZGF0YS0+cHJvbWlzY3VvdXMpOw0KPg0KPkFib3ZlIGlzIGdvb2Qs IGJ1dCB0byBiZSBjb25zaXN0ZW50IHdoYXQgYWJvdXQgcmV0dXJuaW5nIHJldHVybiB2YWx1ZSBv ZiB0aGUNCj5BUEkgKGRpYWcgKHdpdGggcmVjb3JkIG5hbWUgJ3JldHVybicpKSwgd2hpY2ggaXMg cmVsYXZlbnQgd2l0aCAnZGV2LT5kYXRhLQ0KPj5wcm9taXNjdW91cycgdmFsdWUuDQpGb3IgdGhp cyB0aGUgZm9sbG93aW5nIGNoYW5nZXMgd2lsbCBjYXB0dXJlIHJldHVybiB2YWx1ZSBhbmQgZGlh ZzoNCiByZXQgPSBldGhfZXJyKHBvcnRfaWQsIGRpYWcpOw0KcnRlX2V0aF90cmFjZV9wcm9taXNj dW91c19lbmFibGUocG9ydF9pZCwgZGV2LT5kYXRhLT5wcm9taXNjdW91cywgZGlhZywgcmV0KTsN CnJldHVybiByZXQ7DQo+DQo+PiAgICAgICAgIHJldHVybiBldGhfZXJyKHBvcnRfaWQsIGRpYWcp OyAgfQ0KPj4NCj4+IEBAIC0yMzUwLDYgKzIzOTUsNyBAQCBydGVfZXRoX3Byb21pc2N1b3VzX2Rp c2FibGUodWludDE2X3QgcG9ydF9pZCkNCj4+ICAgICAgICAgaWYgKGRpYWcgIT0gMCkNCj4+ICAg ICAgICAgICAgICAgICBkZXYtPmRhdGEtPnByb21pc2N1b3VzID0gMTsNCj4+DQo+PiArICAgICAg IHJ0ZV9ldGhfdHJhY2VfcHJvbWlzY3VvdXNfZGlzYWJsZShwb3J0X2lkLA0KPj4gKyBkZXYtPmRh dGEtPnByb21pc2N1b3VzKTsNCj4NCj5BYm92ZSBpcyBnb29kLCBidXQgdG8gYmUgY29uc2lzdGVu dCB3aGF0IGFib3V0IHJldHVybmluZyByZXR1cm4gdmFsdWUgb2YgdGhlDQo+QVBJIChkaWFnICh3 aXRoIHJlY29yZCBuYW1lICdyZXR1cm4nKSksIHdoaWNoIGlzIHJlbGF2ZW50IHdpdGggJ2Rldi0+ ZGF0YS0NCj4+cHJvbWlzY3VvdXMnIHZhbHVlLg0KU2ltaWxhciBjaGFuZ2VzIGFzIHJ0ZV9ldGhf dHJhY2VfcHJvbWlzY3VvdXNfZW5hYmxlLg0KPg0KPjwuLi4+DQo+DQo+PiBAQCAtMjU2MSw2ICsy NjE2LDcgQEAgcnRlX2V0aF9zdGF0c19yZXNldCh1aW50MTZfdCBwb3J0X2lkKQ0KPj4NCj4+ICAg ICAgICAgZGV2LT5kYXRhLT5yeF9tYnVmX2FsbG9jX2ZhaWxlZCA9IDA7DQo+Pg0KPj4gKyAgICAg ICBydGVfZXRoX3RyYWNlX3N0YXRzX3Jlc2V0KHBvcnRfaWQpOw0KPg0KPlBsZWFzZSBpbmNsdWRl IHJldHVybiB2YWx1ZS4NCkhlcmUgdGhlIHJldHVybiB2YWx1ZSBpcyBub3QgcmVxdWlyZWQsIGJl Y2F1c2UgaWYgdGhlIGNvbnRyb2wgcmVhY2hlZCBoZXJlIHRoZSByZXR1cm4gaXMgMC4NCj4NCj48 Li4uPg0KPg0KPj4gQEAgLTM0ODMsNiArMzU2MSw3IEBAIHJ0ZV9ldGhfZGV2X3NldF92bGFuX3N0 cmlwX29uX3F1ZXVlKHVpbnQxNl90DQo+PiBwb3J0X2lkLCB1aW50MTZfdCByeF9xdWV1ZV9pZCwN Cj4+DQo+PiAgICAgICAgIGlmICgqZGV2LT5kZXZfb3BzLT52bGFuX3N0cmlwX3F1ZXVlX3NldCA9 PSBOVUxMKQ0KPj4gICAgICAgICAgICAgICAgIHJldHVybiAtRU5PVFNVUDsNCj4+ICsgICAgICAg cnRlX2V0aGRldl90cmFjZV9zZXRfdmxhbl9zdHJpcF9vbl9xdWV1ZShwb3J0X2lkLCByeF9xdWV1 ZV9pZCwNCj4+ICsgb24pOw0KPg0KPlBsZWFzZSBpbmNsdWRlIHJldHVybiB2YWx1ZS4NCj4NCj4+ ICAgICAgICAgKCpkZXYtPmRldl9vcHMtPnZsYW5fc3RyaXBfcXVldWVfc2V0KShkZXYsIHJ4X3F1 ZXVlX2lkLCBvbik7DQpJZiB0aGUgY29udHJvbCByZWFjaGVkIHRoaXMgcG9pbnQgdGhlIHJldHVy biBpcyAwLiBJIHRoaW5rIHRoZSByZXR1cm4gdmFsdWUgaXMgbm90IHJlcXVpcmVkIGhlcmUuDQo+ Pg0KPj4gICAgICAgICByZXR1cm4gMDsNCj4+IEBAIC0zNTAwLDYgKzM1NzksNyBAQCBydGVfZXRo X2Rldl9zZXRfdmxhbl9ldGhlcl90eXBlKHVpbnQxNl90DQo+PiBwb3J0X2lkLA0KPj4NCj4+ICAg ICAgICAgaWYgKCpkZXYtPmRldl9vcHMtPnZsYW5fdHBpZF9zZXQgPT0gTlVMTCkNCj4+ICAgICAg ICAgICAgICAgICByZXR1cm4gLUVOT1RTVVA7DQo+PiArICAgICAgIHJ0ZV9ldGhkZXZfdHJhY2Vf c2V0X3ZsYW5fZXRoZXJfdHlwZShwb3J0X2lkLCB2bGFuX3R5cGUsDQo+PiArIHRwaWQpOw0KPg0K PlBsZWFzZSBpbmNsdWRlIHJldHVybiB2YWx1ZS4NCk9rLg0KPg0KPjwuLi4+DQo+DQo+PiBAQCAt MzYzMiw2ICszNzE0LDcgQEAgcnRlX2V0aF9kZXZfc2V0X3ZsYW5fcHZpZCh1aW50MTZfdCBwb3J0 X2lkLA0KPj4gdWludDE2X3QgcHZpZCwgaW50IG9uKQ0KPj4NCj4+ICAgICAgICAgaWYgKCpkZXYt PmRldl9vcHMtPnZsYW5fcHZpZF9zZXQgPT0gTlVMTCkNCj4+ICAgICAgICAgICAgICAgICByZXR1 cm4gLUVOT1RTVVA7DQo+PiArICAgICAgIHJ0ZV9ldGhkZXZfdHJhY2Vfc2V0X3ZsYW5fcHZpZChw b3J0X2lkLCBwdmlkLCBvbik7DQo+DQo+UGxlYXNlIGluY2x1ZGUgcmV0dXJuIHZhbHVlLg0KT2su DQo+DQo+PC4uLj4NCj4NCj4+IEBAIC0zNzAyLDYgKzM3ODcsNyBAQCBydGVfZXRoX2Rldl9wcmlv cml0eV9mbG93X2N0cmxfc2V0KHVpbnQxNl90DQo+cG9ydF9pZCwNCj4+ICAgICAgICAgICAgICAg ICByZXR1cm4gLUVJTlZBTDsNCj4+ICAgICAgICAgfQ0KPj4NCj4+ICsgICAgICAgcnRlX2V0aGRl dl90cmFjZV9wcmlvcml0eV9mbG93X2N0cmxfc2V0KHBvcnRfaWQsIHBmY19jb25mKTsNCj4NCj5Q bGVhc2UgcHV0IHRoZSBjYWxsIHZlcnkgYm90dG9tIG9mIHRoZSBmdW5jdGlvbiBhbmQgaW5jbHVk ZSByZXR1cm4gdmFsdWUuDQpPay4NCj4NCj48Li4uPg0KPg0KPj4gQEAgLTQwNjMsNiArNDE1Niw3 IEBAIHJ0ZV9ldGhfZGV2X3VkcF90dW5uZWxfcG9ydF9hZGQodWludDE2X3QNCj4+IHBvcnRfaWQs DQo+Pg0KPj4gICAgICAgICBpZiAoKmRldi0+ZGV2X29wcy0+dWRwX3R1bm5lbF9wb3J0X2FkZCA9 PSBOVUxMKQ0KPj4gICAgICAgICAgICAgICAgIHJldHVybiAtRU5PVFNVUDsNCj4+ICsgICAgICAg cnRlX2V0aGRldl90cmFjZV91ZHBfdHVubmVsX3BvcnRfYWRkKHBvcnRfaWQsIHVkcF90dW5uZWwp Ow0KPg0KPlBsZWFzZSBpbmNsdWRlIHJldHVybiB2YWx1ZS4NCk9rLg0KPg0KPj4gICAgICAgICBy ZXR1cm4gZXRoX2Vycihwb3J0X2lkLCAoKmRldi0+ZGV2X29wcy0+dWRwX3R1bm5lbF9wb3J0X2Fk ZCkoZGV2LA0KPj4NCj4+IHVkcF90dW5uZWwpKTsgIH0gQEAgLTQwOTAsNiArNDE4NCw3IEBADQo+ PiBydGVfZXRoX2Rldl91ZHBfdHVubmVsX3BvcnRfZGVsZXRlKHVpbnQxNl90IHBvcnRfaWQsDQo+ Pg0KPj4gICAgICAgICBpZiAoKmRldi0+ZGV2X29wcy0+dWRwX3R1bm5lbF9wb3J0X2RlbCA9PSBO VUxMKQ0KPj4gICAgICAgICAgICAgICAgIHJldHVybiAtRU5PVFNVUDsNCj4+ICsgICAgICAgcnRl X2V0aGRldl90cmFjZV91ZHBfdHVubmVsX3BvcnRfZGVsZXRlKHBvcnRfaWQsIHVkcF90dW5uZWwp Ow0KPg0KPlBsZWFzZSBpbmNsdWRlIHJldHVybiB2YWx1ZS4NCk9rLg0KPg0KPj4gICAgICAgICBy ZXR1cm4gZXRoX2Vycihwb3J0X2lkLCAoKmRldi0+ZGV2X29wcy0+dWRwX3R1bm5lbF9wb3J0X2Rl bCkoZGV2LA0KPj4NCj4+IHVkcF90dW5uZWwpKTsgIH0gQEAgLTQxMDQsNiArNDE5OSw3IEBAIHJ0 ZV9ldGhfbGVkX29uKHVpbnQxNl90DQo+PiBwb3J0X2lkKQ0KPj4NCj4+ICAgICAgICAgaWYgKCpk ZXYtPmRldl9vcHMtPmRldl9sZWRfb24gPT0gTlVMTCkNCj4+ICAgICAgICAgICAgICAgICByZXR1 cm4gLUVOT1RTVVA7DQo+PiArICAgICAgIHJ0ZV9ldGhfdHJhY2VfbGVkX29uKHBvcnRfaWQpOw0K Pg0KPlBsZWFzZSBpbmNsdWRlIHJldHVybiB2YWx1ZS4NCk9rLg0KPg0KPj4gICAgICAgICByZXR1 cm4gZXRoX2Vycihwb3J0X2lkLCAoKmRldi0+ZGV2X29wcy0+ZGV2X2xlZF9vbikoZGV2KSk7DQo+ PiAgfQ0KPj4NCj4+IEBAIC00MTE3LDYgKzQyMTMsNyBAQCBydGVfZXRoX2xlZF9vZmYodWludDE2 X3QgcG9ydF9pZCkNCj4+DQo+PiAgICAgICAgIGlmICgqZGV2LT5kZXZfb3BzLT5kZXZfbGVkX29m ZiA9PSBOVUxMKQ0KPj4gICAgICAgICAgICAgICAgIHJldHVybiAtRU5PVFNVUDsNCj4+ICsgICAg ICAgcnRlX2V0aF90cmFjZV9sZWRfb2ZmKHBvcnRfaWQpOw0KPg0KPlBsZWFzZSBpbmNsdWRlIHJl dHVybiB2YWx1ZS4NCk9rLg0KPg0KPjwuLi4+DQo+DQo+PiBAQCAtNDI5NCw2ICs0Mzk1LDcgQEAg cnRlX2V0aF9kZXZfbWFjX2FkZHJfcmVtb3ZlKHVpbnQxNl90IHBvcnRfaWQsDQo+c3RydWN0IHJ0 ZV9ldGhlcl9hZGRyICphZGRyKQ0KPj4gICAgICAgICB9IGVsc2UgaWYgKGluZGV4IDwgMCkNCj4+ ICAgICAgICAgICAgICAgICByZXR1cm4gMDsgIC8qIERvIG5vdGhpbmcgaWYgYWRkcmVzcyB3YXNu J3QgZm91bmQgKi8NCj4+DQo+PiArICAgICAgIHJ0ZV9ldGhkZXZfdHJhY2VfbWFjX2FkZHJfcmVt b3ZlKHBvcnRfaWQsIGFkZHIpOw0KPg0KPmJldHRlciB0byBrZWVwIHRyYWNlIEFQSXMgYXJlIGxh c3QgdGhpbmcgaW4gdGhlIGZ1bmN0aW9uIGZvciBjb25zaXN0ZW5jeSwgYXMgbG9uZyBhcw0KPml0 IGlzIHBvc3NpYmxlLCBhbmQgZm9yIHRoaXMgY2FzZSBpdCBpcyBwb3NzaWJsZS4NCk9rLg0KPg0K PjwuLi4+DQo+DQo+PiBAQCAtNDQzOCw2ICs0NTQyLDcgQEAgcnRlX2V0aF9kZXZfdWNfYWxsX2hh c2hfdGFibGVfc2V0KHVpbnQxNl90DQo+PiBwb3J0X2lkLCB1aW50OF90IG9uKQ0KPj4NCj4+ICAg ICAgICAgaWYgKCpkZXYtPmRldl9vcHMtPnVjX2FsbF9oYXNoX3RhYmxlX3NldCA9PSBOVUxMKQ0K Pj4gICAgICAgICAgICAgICAgIHJldHVybiAtRU5PVFNVUDsNCj4+ICsgICAgICAgcnRlX2V0aGRl dl90cmFjZV91Y19hbGxfaGFzaF90YWJsZV9zZXQocG9ydF9pZCwgb24pOw0KPg0KPlBsZWFzZSBp bmNsdWRlIHJldHVybiB2YWx1ZS4NCk9rLg0KPg0KPj4gICAgICAgICByZXR1cm4gZXRoX2Vycihw b3J0X2lkLCAoKmRldi0+ZGV2X29wcy0+dWNfYWxsX2hhc2hfdGFibGVfc2V0KShkZXYsDQo+Pg0K Pj4gb24pKTsgIH0gQEAgLTQ0NzUsNiArNDU4MCw3IEBAIGludA0KPj4gcnRlX2V0aF9zZXRfcXVl dWVfcmF0ZV9saW1pdCh1aW50MTZfdCBwb3J0X2lkLCB1aW50MTZfdCBxdWV1ZV9pZHgsDQo+Pg0K Pj4gICAgICAgICBpZiAoKmRldi0+ZGV2X29wcy0+c2V0X3F1ZXVlX3JhdGVfbGltaXQgPT0gTlVM TCkNCj4+ICAgICAgICAgICAgICAgICByZXR1cm4gLUVOT1RTVVA7DQo+PiArICAgICAgIHJ0ZV9l dGhfdHJhY2Vfc2V0X3F1ZXVlX3JhdGVfbGltaXQocG9ydF9pZCwgcXVldWVfaWR4LA0KPj4gKyB0 eF9yYXRlKTsNCj4NCj5QbGVhc2UgaW5jbHVkZSByZXR1cm4gdmFsdWUuDQpPay4NCj4NCj48Li4u Pg0KPg0KPj4gQEAgLTQ1NzAsNiArNDY3OCw5IEBAIHJ0ZV9ldGhfZGV2X2NhbGxiYWNrX3JlZ2lz dGVyKHVpbnQxNl90IHBvcnRfaWQsDQo+PiAgICAgICAgICAgICAgICAgbmV4dF9wb3J0ID0gbGFz dF9wb3J0ID0gcG9ydF9pZDsNCj4+ICAgICAgICAgfQ0KPj4NCj4+ICsgICAgICAgcnRlX2V0aGRl dl90cmFjZV9jYWxsYmFja19yZWdpc3Rlcihwb3J0X2lkLCBldmVudCwgY2JfZm4sIGNiX2FyZywN Cj5uZXh0X3BvcnQsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbGFzdF9wb3J0KTsNCj4+ICsNCj4NCj5JIGFzc3VtZSB0aGlzIGFkZGVkIGludG8gbWlkZGxl IHRvIGJlIGFibGUgdG8gdXNlICduZXh0X3BvcnQnICYgJ2xhc3RfcG9ydCcsIGJ1dA0KPnRoZXkg YXJlIGdlbmVyYXRlZCBmcm9tIGdpdmVuICdwb3J0X2lkJywgc28gd2hhdCBkbyB5b3UgdGhpbmsg dG8gaGF2ZSBvbmx5DQo+J3BvcnRfaWQnLCBhbmQgbW92ZSBjYWxsIHRvIHRoZSBib3R0b20gb2Yg dGhlIGZ1bmN0aW9uLg0KSSB0aGluayBpdHMgZmluZSB0byBtb3ZlIHRoZSB0cmFjZSB0byB0aGUg Ym90dG9tLiBCdXQgSSB3YXMgdGhpbmtpbmcgb2YgY2FwdHVyaW5nIGFsbCB0aGUgaW5wdXQgYXJn dW1lbnRzIHRvIHRoZSBmdW5jdGlvbiBsaWtlIHBvcnRfaWQsIGV2ZW50LCBjYl9mbiwgY2JfYXJn IGFsc28uDQo+DQo+J3J0ZV9ldGhkZXZfdHJhY2VfY2FsbGJhY2tfdW5yZWdpc3RlcigpJyBoYXMg c2FtZSBsb2dpYywgYW5kIGl0IGhhcyBvbmx5DQo+J3BvcnRfaWQnIGFscmVhZHkuDQo+DQo+DQo+ DQo+QW5kIEkgdGhpbmsgYmV0dGVyIHRvIHN0YW5kYXJkaXNlIHRvIHJlY29yZCBBUEkgcmV0dXJu IHZhbHVlIG9yIG5vdCwgYmVjYXVzZQ0KPnNvbWUgaGFzIGl0LCBzb21lIGRvbid0Lg0KPldoYXQg ZG8geW91IHRoaW5rIHRvIHRyYWNlIGFsbCByZXR1cm4gdmFsdWVzLCBpcyB0aGVyZSBhbnkgZG93 bnNpZGUgb2YgdGhpcw0KPmFwcHJvYWNoPw0KSW5pdGlhbGx5IG15IHRob3VnaHQgd2FzIHRvIG5v dCBjaGFuZ2UgdGhlIGV4aXN0aW5nIGNvZGUgb2YgbGlicmFyeSBmdW5jdGlvbnMsIGFuZCBjYXB0 dXJlIHRoZSB0cmFjZSB3aXRoIGlucHV0IGFyZ3MgYW5kIGluIHNvbWUgY2FzZXMgY2FwdHVyZSBy ZXR1cm4gdmFsdWUgd2hlcmUgcG9zc2libGUuDQpCdXQgbm93IEkgdGhpbmsgc21hbGwgbW9kaWZp Y2F0aW9ucyBhcmUgZmluZSBpZiByZXR1cm4gdmFsdWVzIGNhbiBiZSBjYXB0dXJlZC4NCj4NCj5J ZiB3ZSBuZWVkIGZpbmUgZ3JhaW4gb24gcmVjb3JkaW5nIHJldHVybiB2YWx1ZXMsIHdoYXQgYWJv dXQgZm9sbG93aW5nOg0KPi0gQWxsIEFQSSB0aGF0IGNoYW5nZXMgZGV2aWNlIGNvbmZpZyByZXR1 cm4gdmFsdWVzIHNob3VsZCBiZSByZWNvcmRlZA0KPiAgKiBsaWtlLCByZWNvcmQgcmV0dXJuIGZv ciBzZXRfbXR1KCksIGJ1dCBpZ25vcmUgaXQgZm9yIGdldF9tdHUoKQ0KPi0gSWYgcmV0dXJuIHZh bHVlIGhhcyBub3QgQVBJIHN0YXR1cyBidXQgdXNlZnVsIGluZm9ybWF0aW9uLCByZWNvcmQgaXQN Cj4gICogbGlrZSBydGVfZXRoX2Rldl9pc192YWxpZF9wb3J0KCkgcmV0dXJuIHZhbHVlDQo+DQo+ DQo+PiAgICAgICAgIHJ0ZV9zcGlubG9ja19sb2NrKCZldGhfZGV2X2NiX2xvY2spOw0KPj4NCj4+ ICAgICAgICAgZG8gew0KPj4gQEAgLTQ2NjUsNiArNDc3Niw3IEBAIHJ0ZV9ldGhfZGV2X2NhbGxi YWNrX3VucmVnaXN0ZXIodWludDE2X3QgcG9ydF9pZCwNCj4+ICAgICAgICAgfSB3aGlsZSAoKytu ZXh0X3BvcnQgPD0gbGFzdF9wb3J0KTsNCj4+DQo+PiAgICAgICAgIHJ0ZV9zcGlubG9ja191bmxv Y2soJmV0aF9kZXZfY2JfbG9jayk7DQo+PiArICAgICAgIHJ0ZV9ldGhkZXZfdHJhY2VfY2FsbGJh Y2tfdW5yZWdpc3Rlcihwb3J0X2lkLCBldmVudCwgY2JfZm4sDQo+PiArIGNiX2FyZywgcmV0KTsN Cj4NCj5KdXN0IGEgc3ludGF4IGNvbW1lbnQsIHdoYXQgZG8geW91IHRoaW5rIHRvIGhhdmUgYW4g ZW1wdHkgbGluZSBvbmUgYmVmb3JlDQo+YW5kIGFmdGVyIHRoZSB0cmFjZSBjYWxsLCB0byBzZXBh cmF0ZSB0aGlzIHRyYWNlIGNhbGxzIGZyb20gcmVndWxhciBsb2dpYy4NCkp1c3QgdGhhdCBpdCBt YWtlcyB0aGUgZnVuY3Rpb24oYW5kIGFzIGEgcmVzdWx0IHRoZSBmaWxlKSBsb25nZXIuIEJ1dCBp IGFncmVlIGFkZGluZyB0aGUgZW1wdHkgbGluZXMgaW1wcm92ZSByZWFkYWJpbGl0eS4gDQo+DQo+ PiAgICAgICAgIHJldHVybiByZXQ7DQo+PiAgfQ0KPj4NCj4+IEBAIC00Njk0LDYgKzQ4MDYsNyBA QCBydGVfZXRoX2Rldl9yeF9pbnRyX2N0bCh1aW50MTZfdCBwb3J0X2lkLCBpbnQgZXBmZCwNCj5p bnQgb3AsIHZvaWQgKmRhdGEpDQo+PiAgICAgICAgIGZvciAocWlkID0gMDsgcWlkIDwgZGV2LT5k YXRhLT5uYl9yeF9xdWV1ZXM7IHFpZCsrKSB7DQo+PiAgICAgICAgICAgICAgICAgdmVjID0gcnRl X2ludHJfdmVjX2xpc3RfaW5kZXhfZ2V0KGludHJfaGFuZGxlLCBxaWQpOw0KPj4gICAgICAgICAg ICAgICAgIHJjID0gcnRlX2ludHJfcnhfY3RsKGludHJfaGFuZGxlLCBlcGZkLCBvcCwgdmVjLA0K Pj4gZGF0YSk7DQo+PiArICAgICAgICAgICAgICAgcnRlX2V0aGRldl90cmFjZV9yeF9pbnRyX2N0 bChwb3J0X2lkLCBlcGZkLCBvcCwgZGF0YSwNCj4+ICsgcmMpOw0KPg0KPldoeSB0aGlzIGlzIGlu IHRoZSBmb3IgbG9vcCwgQVBJIGlmIGZvciBwb3J0IGxldmVsLCB0aGlzIGxvb3AgaXRlcmF0ZXMg b24gcXVldWVzPw0KWWVzIHRoaXMgaXRlcmF0ZXMgb24gcXVldWVzIHJlY29yZHMgdGhlIHJldHVy biAocmMpIGZvciBxaWQgMCB0byBuYl9yeF9xdWV1ZXMuDQo+V2hhdCBhYm91dCBtb3ZpbmcgdGhp cyB0cmFjZSB0byB0aGUgYm90dG9tIG9mIHRoZSBmdW5jdGlvbiwgYW5kIHJlY29yZCByZXR1cm4N Cj52YWx1ZSBhcyByZXR1cm4gdmFsdWUgb2YgdGhlIEFQST8NCj4NCj4+ICAgICAgICAgICAgICAg ICBpZiAocmMgJiYgcmMgIT0gLUVFWElTVCkgew0KPj4gICAgICAgICAgICAgICAgICAgICAgICAg UlRFX0VUSERFVl9MT0coRVJSLA0KPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi cCAldSBxICV1IFJ4IGN0bCBlcnJvciBvcCAlZCBlcGZkICVkDQo+PiB2ZWMgJXVcbiIsIEBAIC00 NzM3LDYgKzQ4NTAsNyBAQA0KPnJ0ZV9ldGhfZGV2X3J4X2ludHJfY3RsX3FfZ2V0X2ZkKHVpbnQx Nl90IHBvcnRfaWQsIHVpbnQxNl90IHF1ZXVlX2lkKQ0KPj4gICAgICAgICAgICAgICAgICh2ZWMg LSBSVEVfSU5UUl9WRUNfUlhUWF9PRkZTRVQpIDogdmVjOw0KPj4gICAgICAgICBmZCA9IHJ0ZV9p bnRyX2VmZHNfaW5kZXhfZ2V0KGludHJfaGFuZGxlLCBlZmRfaWR4KTsNCj4+DQo+PiArICAgICAg IHJ0ZV9ldGhkZXZfdHJhY2VfcnhfaW50cl9jdGxfcV9nZXRfZmQocG9ydF9pZCwgcXVldWVfaWQs IGZkKTsNCj4+ICAgICAgICAgcmV0dXJuIGZkOw0KPj4gIH0NCj4+DQo+PiBAQCAtNDc3MCw2ICs0 ODg0LDcgQEAgcnRlX2V0aF9kZXZfcnhfaW50cl9jdGxfcSh1aW50MTZfdCBwb3J0X2lkLA0KPj4g dWludDE2X3QgcXVldWVfaWQsDQo+Pg0KPj4gICAgICAgICB2ZWMgPSBydGVfaW50cl92ZWNfbGlz dF9pbmRleF9nZXQoaW50cl9oYW5kbGUsIHF1ZXVlX2lkKTsNCj4+ICAgICAgICAgcmMgPSBydGVf aW50cl9yeF9jdGwoaW50cl9oYW5kbGUsIGVwZmQsIG9wLCB2ZWMsIGRhdGEpOw0KPj4gKyAgICAg ICBydGVfZXRoZGV2X3RyYWNlX3J4X2ludHJfY3RsX3EocG9ydF9pZCwgcXVldWVfaWQsIGVwZmQs IG9wLA0KPj4gKyBkYXRhLCByYyk7DQo+DQo+SW5zdGVhZCBvZiB0cmFjZSBBUEkgaGF2aW5nIGlu IHRoZSBtaWRkbGUsIHdoYXQgYWJvdXQgY2hhbmdpbmcgQVBJIGFzOg0KPg0KPmBgYA0KPnJjID0g Li4uDQo+DQo+aWYgKHJjICYmIHJjICE9IC1FRVhJU1QpIHsNCj4JLi4uDQo+fQ0KPg0KPnJ0ZV9l dGhkZXZfdHJhY2VfcnhfaW50cl9jdGxfcShwb3J0X2lkLCBxdWV1ZV9pZCwgZXBmZCwgb3AsIGRh dGEsIHJjKTsNCj4NCj5yZXR1cm4gcmM7DQo+YGBgDQpJbiB0aGlzIHRyYWNlIHRoZSByZXR1cm4g dmFsdWUgcmMgaXMgYmVpbmcgY2FwdHVyZWQsIHNvIEkgd2FzIHRoaW5raW5nIGNoYW5naW5nIHRo ZSBBUEkgaXMgbm90IHJlcXVpcmVkLg0KPg0KPj4gICAgICAgICBpZiAocmMgJiYgcmMgIT0gLUVF WElTVCkgew0KPj4gICAgICAgICAgICAgICAgIFJURV9FVEhERVZfTE9HKEVSUiwNCj4+ICAgICAg ICAgICAgICAgICAgICAgICAgICJwICV1IHEgJXUgUnggY3RsIGVycm9yIG9wICVkIGVwZmQgJWQg dmVjDQo+PiAldVxuIiwgQEAgLTQ3OTYsNiArNDkxMSw3IEBAIHJ0ZV9ldGhfZGV2X3J4X2ludHJf ZW5hYmxlKHVpbnQxNl90DQo+PiBwb3J0X2lkLA0KPj4NCj4+ICAgICAgICAgaWYgKCpkZXYtPmRl dl9vcHMtPnJ4X3F1ZXVlX2ludHJfZW5hYmxlID09IE5VTEwpDQo+PiAgICAgICAgICAgICAgICAg cmV0dXJuIC1FTk9UU1VQOw0KPj4gKyAgICAgICBydGVfZXRoZGV2X3RyYWNlX3J4X2ludHJfZW5h YmxlKHBvcnRfaWQsIHF1ZXVlX2lkKTsNCj4NCj5QbGVhc2UgaW5jbHVkZSByZXR1cm4gdmFsdWUu DQpPay4NCj4NCj4+ICAgICAgICAgcmV0dXJuIGV0aF9lcnIocG9ydF9pZCwNCj4+ICgqZGV2LT5k ZXZfb3BzLT5yeF9xdWV1ZV9pbnRyX2VuYWJsZSkoZGV2LCBxdWV1ZV9pZCkpOyAgfQ0KPj4NCj4+ IEBAIC00ODE1LDYgKzQ5MzEsNyBAQCBydGVfZXRoX2Rldl9yeF9pbnRyX2Rpc2FibGUodWludDE2 X3QgcG9ydF9pZCwNCj4+DQo+PiAgICAgICAgIGlmICgqZGV2LT5kZXZfb3BzLT5yeF9xdWV1ZV9p bnRyX2Rpc2FibGUgPT0gTlVMTCkNCj4+ICAgICAgICAgICAgICAgICByZXR1cm4gLUVOT1RTVVA7 DQo+PiArICAgICAgIHJ0ZV9ldGhkZXZfdHJhY2VfcnhfaW50cl9kaXNhYmxlKHBvcnRfaWQsIHF1 ZXVlX2lkKTsNCj4NCj5QbGVhc2UgaW5jbHVkZSByZXR1cm4gdmFsdWUuDQpPay4NCj4NCj48Li4u Pg0KPg0KPj4gQEAgLTU0NDcsNiArNTU4Niw3IEBAIHJ0ZV9ldGhfZGV2X3NldF9lZXByb20odWlu dDE2X3QgcG9ydF9pZCwgc3RydWN0DQo+PiBydGVfZGV2X2VlcHJvbV9pbmZvICppbmZvKQ0KPj4N Cj4+ICAgICAgICAgaWYgKCpkZXYtPmRldl9vcHMtPnNldF9lZXByb20gPT0gTlVMTCkNCj4+ICAg ICAgICAgICAgICAgICByZXR1cm4gLUVOT1RTVVA7DQo+PiArICAgICAgIHJ0ZV9ldGhkZXZfdHJh Y2Vfc2V0X2VlcHJvbShwb3J0X2lkLCBpbmZvKTsNCj4NCj5QbGVhc2UgaW5jbHVkZSByZXR1cm4g dmFsdWUuDQpPay4NCj4NCj48Li4uPg0KPg0KPj4gQEAgLTU1NjIsNiArNTcwNSw3IEBAIHJ0ZV9l dGhfZGV2X2FkanVzdF9uYl9yeF90eF9kZXNjKHVpbnQxNl90DQo+cG9ydF9pZCwNCj4+ICAgICAg ICAgaWYgKG5iX3R4X2Rlc2MgIT0gTlVMTCkNCj4+ICAgICAgICAgICAgICAgICBldGhfZGV2X2Fk anVzdF9uYl9kZXNjKG5iX3R4X2Rlc2MsDQo+PiAmZGV2X2luZm8udHhfZGVzY19saW0pOw0KPj4N Cj4+ICsgICAgICAgcnRlX2V0aGRldl90cmFjZV9hZGp1c3RfbmJfcnhfdHhfZGVzYyhwb3J0X2lk LCAqbmJfcnhfZGVzYywNCj4+ICsgKm5iX3J4X2Rlc2MpOw0KPg0KPg0KPiduYl9yeF9kZXNjJyBv ciAnbmJfcnhfZGVzYycgY2FuIGJlIE5VTEwsIHNvIHdlIGNhbid0IGRpcmVjdGx5IGFjY2VzcyB0 aGVtLg0KWWVzLiBXaWxsIHJlbW92ZSBuYl9yeF9kZXNjIGFuZCBuYl90eF9kZXNjLg0KPg0KPjwu Li4+DQo+DQo+PiBAQCAtNTYwNSw2ICs1NzUwLDcgQEAgcnRlX2V0aF9kZXZfcG9vbF9vcHNfc3Vw cG9ydGVkKHVpbnQxNl90DQo+cG9ydF9pZCwgY29uc3QgY2hhciAqcG9vbCkNCj4+ICAgICAgICAg aWYgKCpkZXYtPmRldl9vcHMtPnBvb2xfb3BzX3N1cHBvcnRlZCA9PSBOVUxMKQ0KPj4gICAgICAg ICAgICAgICAgIHJldHVybiAxOyAvKiBhbGwgcG9vbHMgYXJlIHN1cHBvcnRlZCAqLw0KPj4NCj4+ ICsgICAgICAgcnRlX2V0aGRldl90cmFjZV9wb29sX29wc19zdXBwb3J0ZWQocG9ydF9pZCwgcG9v bCk7DQo+DQo+UGxlYXNlIGluY2x1ZGUgcmV0dXJuIHZhbHVlLg0KT2suDQo+DQo+PC4uLj4NCj4N Cj4+ICtSVEVfVFJBQ0VfUE9JTlQoDQo+PiArICAgICAgIHJ0ZV9ldGhkZXZfdHJhY2VfZmxvd19j dHJsX2dldCwNCj4+ICsgICAgICAgUlRFX1RSQUNFX1BPSU5UX0FSR1ModWludDE2X3QgcG9ydF9p ZCwgc3RydWN0IHJ0ZV9ldGhfZmNfY29uZg0KPipmY19jb25mKSwNCj4+ICsgICAgICAgcnRlX3Ry YWNlX3BvaW50X2VtaXRfdTE2KHBvcnRfaWQpOw0KPj4gKyAgICAgICBydGVfdHJhY2VfcG9pbnRf ZW1pdF9wdHIoZmNfY29uZik7DQo+PiArKQ0KPg0KPidmY19jb25mJyBpcyBwb2ludGVyIGZvciB0 aGUgY29uZmlnIHN0cnVjdCwgaXRzIGFkZHJlc3MgaXMgbm90IG11Y2ggdXNlZnVsLCBjYW4geW91 DQo+ZXhwYW5kIGl0IHNpbWlsYXIgdG8gb25lcyBpbiAncnRlX2V0aGRldl90cmFjZV9mbG93X2N0 cmxfc2V0KCknIEFQST8NClRoZSB2YWx1ZSBvZiBmY19jb25mIGlzIHVwZGF0ZWQgYWZ0ZXIgdGhp cyBsaW5lLg0KcmV0dXJuIGV0aF9lcnIocG9ydF9pZCwgKCpkZXYtPmRldl9vcHMtPmZsb3dfY3Ry bF9nZXQpKGRldiwgZmNfY29uZikpOw0KDQpTbyB0byBjYXB0dXJlIGZjX2NvbmYgdmFsdWVzIHRo ZSByZXR1cm4gb2YgZXRoX2VyciBuZWVkcyB0byBiZSBzdG9yZWQgaW4gYSBsb2NhbCB2YXJpYWJs ZSBhbmQgYWxzbyB0aGUgcmV0dXJuIG5lZWRzIHRvIGJlIGNoZWNrZWQgZm9yIHN1Y2Nlc3MoaWYg Y29uZGl0aW9uKS4gVGhlbiBvbmx5IGZjX2NvbmYgd2lsbCBoYXZlIHZhbGlkIHZhbHVlcy4gSXMg dGhpcyBmaW5lPw0KDQo+DQo+PiArDQo+PiArUlRFX1RSQUNFX1BPSU5UKA0KPj4gKyAgICAgICBy dGVfZXRoZGV2X3RyYWNlX2Zsb3dfY3RybF9zZXQsDQo+PiArICAgICAgIFJURV9UUkFDRV9QT0lO VF9BUkdTKHVpbnQxNl90IHBvcnRfaWQsIHN0cnVjdCBydGVfZXRoX2ZjX2NvbmYNCj4qZmNfY29u ZiksDQo+PiArICAgICAgIHJ0ZV90cmFjZV9wb2ludF9lbWl0X3UxNihwb3J0X2lkKTsNCj4+ICsg ICAgICAgcnRlX3RyYWNlX3BvaW50X2VtaXRfdTMyKGZjX2NvbmYtPmhpZ2hfd2F0ZXIpOw0KPj4g KyAgICAgICBydGVfdHJhY2VfcG9pbnRfZW1pdF91MzIoZmNfY29uZi0+bG93X3dhdGVyKTsNCj4+ ICsgICAgICAgcnRlX3RyYWNlX3BvaW50X2VtaXRfdTE2KGZjX2NvbmYtPnBhdXNlX3RpbWUpOw0K Pj4gKyAgICAgICBydGVfdHJhY2VfcG9pbnRfZW1pdF91MTYoZmNfY29uZi0+c2VuZF94b24pOw0K Pj4gKyAgICAgICBydGVfdHJhY2VfcG9pbnRfZW1pdF9pbnQoZmNfY29uZi0+bW9kZSk7DQo+PiAr ICAgICAgIHJ0ZV90cmFjZV9wb2ludF9lbWl0X3U4KGZjX2NvbmYtPm1hY19jdHJsX2ZyYW1lX2Z3 ZCk7DQo+PiArICAgICAgIHJ0ZV90cmFjZV9wb2ludF9lbWl0X3U4KGZjX2NvbmYtPmF1dG9uZWcp Ow0KPj4gKykNCj4+ICsNCj4+ICtSVEVfVFJBQ0VfUE9JTlQoDQo+PiArICAgICAgIHJ0ZV9ldGhk ZXZfdHJhY2VfZndfdmVyc2lvbl9nZXQsDQo+PiArICAgICAgIFJURV9UUkFDRV9QT0lOVF9BUkdT KHVpbnQxNl90IHBvcnRfaWQsIGNoYXIgKmZ3X3ZlcnNpb24sIHNpemVfdA0KPmZ3X3NpemUpLA0K Pj4gKyAgICAgICBydGVfdHJhY2VfcG9pbnRfZW1pdF91MTYocG9ydF9pZCk7DQo+PiArICAgICAg IHJ0ZV90cmFjZV9wb2ludF9lbWl0X3B0cihmd192ZXJzaW9uKTsNCj4+ICsgICAgICAgcnRlX3Ry YWNlX3BvaW50X2VtaXRfc2l6ZV90KGZ3X3NpemUpOw0KPj4gKykNCj4NCj4nZndfdmVyc2lvbicg aXMgc3RyaW5nLCBpdCBoZWxwIHRvIGRpc3BsYXkgdGhlIHN0cmluZywgYnV0IG5vdCBzdXJlIGlm IHRoZSBwb2ludGVyDQo+dmFsdWUgaGFzIGEgdmFsdWUuDQo+SXMgdGhlcmUgYSB3YXkgdG8gZGlz cGxheSBzdHJpbmcgaW4gdGhlIHRyYWNlIHBvaW50Pw0KWWVzIHN0cmluZyBjYW4gYmUgZGlzcGxh eWVkIGluIHRyYWNlIGJ5IHJ0ZV90cmFjZV9wb2ludF9lbWl0X3N0cmluZygpIGZ1bmN0aW9uLiBC dXQgdGhlcmUgaXMgYSBtYXggc3RyaW5nIGxlbmd0aCBvZiAzMiB3aGljaCBjYW4gYmUgZGlzcGxh eWVkLiBXaWxsIGRpc3BsYXkgJ2Z3X3ZlcnNpb24nIGFzIHN0cmluZy4NCj5BbmQgJ2Z3X3NpemUn IGlzIG5vcm1hbGx5IGp1c3QgdXNlZCB0byBrbm93IHRoZSB2YWxpZCBkYXRhIGluIHRoZSAnZndf dmVyc2lvbicsDQo+d2hlbiAnZndfdmVyc2lvbicgc3RyaW5nIGlzIGRpc3BsYXllZCwgbm90IHN1 cmUgaWYgdGhlcmUgaXMgYSB2YWx1ZSB0byBoYXZlDQo+J2Z3X3NpemUnDQpJZiBmd19zaXplIGlz IGdyZWF0ZXIgdGhhbiAzMiwgZGlzcGxheWluZyBmd19zaXplIHdpbGwgcHJlc2VudCBzb21lIGFk ZGl0aW9uYWwgaW5mb3JtYXRpb24sIGFzIG9ubHkgMzIgYnl0ZXMgb2YgZndfdmVyc2lvbiB3aWxs IGJlIGRpc3BsYXllZC4NCj4NCj4+ICsNCj4+ICtSVEVfVFJBQ0VfUE9JTlQoDQo+PiArICAgICAg IHJ0ZV9ldGhkZXZfdHJhY2VfZ2V0X2RjYl9pbmZvLA0KPj4gKyAgICAgICBSVEVfVFJBQ0VfUE9J TlRfQVJHUyh1aW50MTZfdCBwb3J0X2lkLCBzdHJ1Y3QgcnRlX2V0aF9kY2JfaW5mbw0KPipkY2Jf aW5mbyksDQo+PiArICAgICAgIHJ0ZV90cmFjZV9wb2ludF9lbWl0X3UxNihwb3J0X2lkKTsNCj4+ ICsgICAgICAgcnRlX3RyYWNlX3BvaW50X2VtaXRfcHRyKGRjYl9pbmZvKTsNCj4+ICspDQo+DQo+ J2RjYl9pbmZvJyBpcyBwb2ludGVyIHRvIGEgaW5mbyBzdHJ1Y3QsIG5vdCB1c2VmdWwgYXMgcG9p bnRlciB2YWx1ZSwgd2Ugc2hvdWxkDQo+ZGlzcGxheSBjb250ZW50IG9mIHRoZSAnZGNiX2luZm8n IHN0cnVjdC4NCj5UaGVyZSBhcmUgYXJyYXlzIGluIHRoZSAnZGNiX2luZm8nLCBwZXJoYXBzIGl0 IGNhbiBiZSBwb3NzaWJsZSB0byB0cmFjZSAnZGNiX2luZm8tDQo+Pm5iX3RjcycsIGFsc28gJ2Rj Yl9pbmZvLT5wcmlvX3RjW10nICYgJ2RjYl9pbmZvLT50Y19id3NbXScNCj5zaW5jZSB0aGVpciBz aXplIGlzIHNtYWxsICg4KS4NClllcyB3aWxsIGNhcHR1cmUgdGhlIGFycmF5IGFsc28uIFNhbWUg Y2hhbmdlcyByZXF1aXJlZCBhcyBmY19jb25mIGFib3ZlLg0KPg0KPj4gKw0KPj4gK1JURV9UUkFD RV9QT0lOVCgNCj4+ICsgICAgICAgcnRlX2V0aGRldl90cmFjZV9nZXRfZWVwcm9tLA0KPj4gKyAg ICAgICBSVEVfVFJBQ0VfUE9JTlRfQVJHUyh1aW50MTZfdCBwb3J0X2lkLCBzdHJ1Y3QgcnRlX2Rl dl9lZXByb21faW5mbw0KPippbmZvKSwNCj4+ICsgICAgICAgcnRlX3RyYWNlX3BvaW50X2VtaXRf dTE2KHBvcnRfaWQpOw0KPj4gKyAgICAgICBydGVfdHJhY2VfcG9pbnRfZW1pdF9wdHIoaW5mbyk7 DQo+PiArKQ0KPj4gKw0KPg0KPlNpbWlsYXJseSwgY29udGVudCBvZiB0aGUgJ2luZm8nIHNob3Vs ZCBiZSBkaXNwbGF5ZWQsIGZvciAnKmRhdGEnIGl0IGNhbiBiZSBwb3NzaWJsZQ0KPnRvIGRpc3Bs YXkgYWRkcmVzcyBvZiBpdCwgYnV0IHZhbHVlcyBmb3IgcmVzdC4NCk9rLiBTYW1lIGNoYW5nZXMg cmVxdWlyZWQgYXMgZmNfY29uZiBhYm92ZS4NCj4NCj4+ICtSVEVfVFJBQ0VfUE9JTlQoDQo+PiAr ICAgICAgIHJ0ZV9ldGhkZXZfdHJhY2VfZ2V0X2VlcHJvbV9sZW5ndGgsDQo+PiArICAgICAgIFJU RV9UUkFDRV9QT0lOVF9BUkdTKHVpbnQxNl90IHBvcnRfaWQpLA0KPj4gKyAgICAgICBydGVfdHJh Y2VfcG9pbnRfZW1pdF91MTYocG9ydF9pZCk7DQo+PiArKQ0KPj4gKw0KPg0KPlRoaXMgc2hvdWxk IHJldHVybiB0aGUgc2l6ZSBvZiB0aGUgZWVwcm9tLCBleGlzdGluZw0KPidydGVfZXRoX2Rldl9n ZXRfZWVwcm9tX2xlbmd0aCgpJyBuZWVkcyB0byBiZSB1cGRhdGVkIGZvciBpdC4NCk9rLiBTYW1l IGFzIGZjX2NvbmYgYWJvdmUuDQo+DQo+PC4uLj4NCj4NCj4+ICtSVEVfVFJBQ0VfUE9JTlQoDQo+ PiArICAgICAgIHJ0ZV9ldGhkZXZfdHJhY2VfZ2V0X3JlZ19pbmZvLA0KPj4gKyAgICAgICBSVEVf VFJBQ0VfUE9JTlRfQVJHUyh1aW50MTZfdCBwb3J0X2lkLCBzdHJ1Y3QgcnRlX2Rldl9yZWdfaW5m bw0KPippbmZvKSwNCj4+ICsgICAgICAgcnRlX3RyYWNlX3BvaW50X2VtaXRfdTE2KHBvcnRfaWQp Ow0KPj4gKyAgICAgICBydGVfdHJhY2VfcG9pbnRfZW1pdF9wdHIoaW5mbyk7DQo+PiArKQ0KPg0K PldoYXQgZG8geW91IHRoaW5rIHRvIGRpc3BsYXkgY29udGVudCBvZiB0aGUgJ2luZm8nLCBpbnN0 ZWQgb2YgcG9pbnRlciB2YWx1ZSB3aGljaA0KPmlzIG5vdCB2ZXJ5IHVzZWZ1bC4NClllcyBpbmZv IGNhbiBiZSBkaXNwbGF5ZWQuIFRoZSBydGVfZXRoX2Rldl9nZXRfcmVnX2luZm8gbmVlZHMgdG8g YmUgY2hhbmdlZCBzdWNoIHRoYXQgdHJhY2UgaXMgY2FsbGVkIGFmdGVyIGV0aF9lcnIoKSBmdW5j dGlvbiBjYWxsLiBTYW1lIGFzIGZjX2NvbmYgYWJvdmUuDQo+DQo+PiArDQo+PiArUlRFX1RSQUNF X1BPSU5UKA0KPj4gKyAgICAgICBydGVfZXRoZGV2X3RyYWNlX2dldF9zZWNfY3R4LA0KPj4gKyAg ICAgICBSVEVfVFJBQ0VfUE9JTlRfQVJHUyh1aW50MTZfdCBwb3J0X2lkKSwNCj4+ICsgICAgICAg cnRlX3RyYWNlX3BvaW50X2VtaXRfdTE2KHBvcnRfaWQpOw0KPj4gKykNCj4NCj4nc2VjdXJpdHlf Y3R4JyBpcyAidm9pZCAqIiwgc28gY2FuJ3QgcmVjb3JkIGNvbnRlbnQsIGJ1dCB3aGF0IGRvIHlv dSB0aGluayB0bw0KPnJlY29yZCBwb2ludGVyIHZhbHVlIG9mIGl0Pw0KcnRlX2V0aF9kZXZfZ2V0 X3NlY19jdHgoKSBuZWVkcyB0byBiZSBjaGFuZ2VkLiBUaGUgcnRlX2V0aF9kZXZpY2VzW3BvcnRf aWRdLnNlY3VyaXR5X2N0eCBuZWVkcyB0byBiZSBzdG9yZWQgaW4gYSBsb2NhbCB2YXJpYWJsZS4N Cj4NCj4+ICsNCj4+ICtSVEVfVFJBQ0VfUE9JTlQoDQo+PiArICAgICAgIHJ0ZV9ldGhkZXZfdHJh Y2VfZ2V0X3N1cHBvcnRlZF9wdHlwZXMsDQo+PiArICAgICAgIFJURV9UUkFDRV9QT0lOVF9BUkdT KHVpbnQxNl90IHBvcnRfaWQsIHVpbnQzMl90IHB0eXBlX21hc2ssDQo+PiArICAgICAgICAgICAg ICAgdWludDMyX3QgKnB0eXBlcywgaW50IG51bSwgaW50IGopLA0KPj4gKyAgICAgICBydGVfdHJh Y2VfcG9pbnRfZW1pdF91MTYocG9ydF9pZCk7DQo+PiArICAgICAgIHJ0ZV90cmFjZV9wb2ludF9l bWl0X3UzMihwdHlwZV9tYXNrKTsNCj4+ICsgICAgICAgcnRlX3RyYWNlX3BvaW50X2VtaXRfcHRy KHB0eXBlcyk7DQo+PiArICAgICAgIHJ0ZV90cmFjZV9wb2ludF9lbWl0X2ludChudW0pOw0KPj4g KyAgICAgICBydGVfdHJhY2VfcG9pbnRfZW1pdF9pbnQoaik7DQo+PiArKQ0KPg0KPmJldHRlciB0 byB1c2UgJ3N1cHBvcnRlZF9udW0nIGluc3RlYWQgb2YgJ2onIHdoaWNoIGlzIG5vdCBjbGVhciB3 aGF0IGl0IGlzLg0KT2suDQo+DQo+VGhlIHJlYWwgaW5mb3JtYXRpb24gaXMgaW4gJ3B0eXBlcycg YnV0IHRoYXQgaXMgYW4gYXJyYXksIEkgZ3Vlc3Mgbm90IHBvc3NpYmxlIHRvDQo+cmVjb3JkIGFy cmF5IHZhbHVlcy4NCj4NCj4+ICsNCj4+ICtSVEVfVFJBQ0VfUE9JTlQoDQo+PiArICAgICAgIHJ0 ZV9ldGhkZXZfdHJhY2VfZ2V0X3ZsYW5fb2ZmbG9hZCwNCj4+ICsgICAgICAgUlRFX1RSQUNFX1BP SU5UX0FSR1ModWludDE2X3QgcG9ydF9pZCwgaW50IHJldCksDQo+PiArICAgICAgIHJ0ZV90cmFj ZV9wb2ludF9lbWl0X3UxNihwb3J0X2lkKTsNCj4+ICsgICAgICAgcnRlX3RyYWNlX3BvaW50X2Vt aXRfaW50KHJldCk7DQo+PiArKQ0KPj4gKw0KPj4gK1JURV9UUkFDRV9QT0lOVCgNCj4+ICsgICAg ICAgcnRlX2V0aGRldl90cmFjZV9pbmZvX2dldCwNCj4+ICsgICAgICAgUlRFX1RSQUNFX1BPSU5U X0FSR1ModWludDE2X3QgcG9ydF9pZCwNCj4+ICsgICAgICAgICAgICAgICBzdHJ1Y3QgcnRlX2V0 aF9kZXZfaW5mbyAqZGV2X2luZm8pLA0KPj4gKyAgICAgICBydGVfdHJhY2VfcG9pbnRfZW1pdF91 MTYocG9ydF9pZCk7DQo+PiArICAgICAgIHJ0ZV90cmFjZV9wb2ludF9lbWl0X3N0cmluZyhkZXZf aW5mby0+ZHJpdmVyX25hbWUpOw0KPj4gKyAgICAgICBydGVfdHJhY2VfcG9pbnRfZW1pdF91MzIo ZGV2X2luZm8tPmlmX2luZGV4KTsNCj4+ICsgICAgICAgcnRlX3RyYWNlX3BvaW50X2VtaXRfdTE2 KGRldl9pbmZvLT5taW5fbXR1KTsNCj4+ICsgICAgICAgcnRlX3RyYWNlX3BvaW50X2VtaXRfdTE2 KGRldl9pbmZvLT5tYXhfbXR1KTsNCj4+ICsgICAgICAgcnRlX3RyYWNlX3BvaW50X2VtaXRfdTMy KGRldl9pbmZvLT5taW5fcnhfYnVmc2l6ZSk7DQo+PiArICAgICAgIHJ0ZV90cmFjZV9wb2ludF9l bWl0X3UzMihkZXZfaW5mby0+bWF4X3J4X3BrdGxlbik7DQo+PiArICAgICAgIHJ0ZV90cmFjZV9w b2ludF9lbWl0X3U2NChkZXZfaW5mby0+cnhfb2ZmbG9hZF9jYXBhKTsNCj4+ICsgICAgICAgcnRl X3RyYWNlX3BvaW50X2VtaXRfdTY0KGRldl9pbmZvLT50eF9vZmZsb2FkX2NhcGEpOw0KPj4gKyAg ICAgICBydGVfdHJhY2VfcG9pbnRfZW1pdF91NjQoZGV2X2luZm8tPnJ4X3F1ZXVlX29mZmxvYWRf Y2FwYSk7DQo+PiArICAgICAgIHJ0ZV90cmFjZV9wb2ludF9lbWl0X3U2NChkZXZfaW5mby0+dHhf cXVldWVfb2ZmbG9hZF9jYXBhKTsNCj4+ICsgICAgICAgcnRlX3RyYWNlX3BvaW50X2VtaXRfdTE2 KGRldl9pbmZvLT5yZXRhX3NpemUpOw0KPj4gKyAgICAgICBydGVfdHJhY2VfcG9pbnRfZW1pdF91 OChkZXZfaW5mby0+aGFzaF9rZXlfc2l6ZSk7DQo+PiArICAgICAgIHJ0ZV90cmFjZV9wb2ludF9l bWl0X3UxNihkZXZfaW5mby0+bmJfcnhfcXVldWVzKTsNCj4+ICsgICAgICAgcnRlX3RyYWNlX3Bv aW50X2VtaXRfdTE2KGRldl9pbmZvLT5uYl90eF9xdWV1ZXMpOw0KPj4gKykNCj4+ICsNCj4NCj5J dCBpcyBhIGRlYmF0ZSB3aGF0IHRvIGRpc3BsYXksIGJ1dCBJIHdvdWxkIHJlbW92ZSAnaWZfaW5k ZXgnIGFuZCBhZGQNCj4nbWF4X3J4X3F1ZXVlcycsICdtYXhfdHhfcXVldWVzJywgJ21heF9tYWNf YWRkcnMnLCAnZmxvd190eXBlX3Jzc19vZmZsb2FkcycsDQo+J3J4X2Rlc2NfbGltJywgJ3R4X2Rl c2NfbGltJywgJ3NwZWVkX2NhcGEnLCAnZGV2X2NhcGEnLg0KT2suDQo+DQo+PiArUlRFX1RSQUNF X1BPSU5UKA0KPj4gKyAgICAgICBydGVfZXRoZGV2X3RyYWNlX2lzX3JlbW92ZWQsDQo+PiArICAg ICAgIFJURV9UUkFDRV9QT0lOVF9BUkdTKHVpbnQxNl90IHBvcnRfaWQsIGludCByZXQpLA0KPj4g KyAgICAgICBydGVfdHJhY2VfcG9pbnRfZW1pdF91MTYocG9ydF9pZCk7DQo+PiArICAgICAgIHJ0 ZV90cmFjZV9wb2ludF9lbWl0X2ludChyZXQpOw0KPj4gKykNCj4+ICsNCj4+ICtSVEVfVFJBQ0Vf UE9JTlQoDQo+PiArICAgICAgIHJ0ZV9ldGhkZXZfdHJhY2VfaXNfdmFsaWRfcG9ydCwNCj4+ICsg ICAgICAgUlRFX1RSQUNFX1BPSU5UX0FSR1ModWludDE2X3QgcG9ydF9pZCksDQo+PiArICAgICAg IHJ0ZV90cmFjZV9wb2ludF9lbWl0X3UxNihwb3J0X2lkKTsNCj4+ICspDQo+PiArDQo+DQo+U2hv dWxkIGhhdmUgcmV0dXJuIHZhbHVlLCBpZiB0aGUgcG9ydCBpcyB2YWxpZCBvZiBub3QuDQpTb21l IGNoYW5nZXMgbmVlZHMgdG8gYmUgbWFkZSBhcyB0aGUgcnRlX2V0aGRldl9pc192YWxpZF9wb3J0 IGZ1bmN0aW9uIHJldHVybiAwIG9yIDEuDQo+DQo+PiArUlRFX1RSQUNFX1BPSU5UKA0KPj4gKyAg ICAgICBydGVfZXRoZGV2X3RyYWNlX21hY19hZGRyX2FkZCwNCj4+ICsgICAgICAgUlRFX1RSQUNF X1BPSU5UX0FSR1ModWludDE2X3QgcG9ydF9pZCwgc3RydWN0IHJ0ZV9ldGhlcl9hZGRyICphZGRy LA0KPj4gKyAgICAgICAgICAgICAgIHVpbnQzMl90IHBvb2wpLA0KPj4gKyAgICAgICBydGVfdHJh Y2VfcG9pbnRfZW1pdF91MTYocG9ydF9pZCk7DQo+PiArICAgICAgIHJ0ZV90cmFjZV9wb2ludF9l bWl0X3B0cihhZGRyKTsNCj4+ICsgICAgICAgcnRlX3RyYWNlX3BvaW50X2VtaXRfdTMyKHBvb2wp Ow0KPj4gKykNCj4+ICsNCj4NCj5Jc24ndCBpdCBwb3NzaWJsZSB0byByZXR1cm4gJ2FkZHInIGFz IHN0cmluZz8gSSBhbSBub3Qgc3VyZSBhYm91dCBiZW5lZml0IHRvIHJlY29yZA0KPmFkZHIgcG9p bnRlciB2YWx1ZS4NCj5TaG91bGQgaGF2ZSByZXR1cm4gdmFsdWUuDQpSaWdodCBub3cgdGhlIGZ1 bmN0aW9uIHRvIGRpc3BsYXkgYXJyYXkgaXMgbm90IHRoZXJlIGluIHRyYWNlLiBJIGhhdmUgYWRk ZWQgYSBuZXcgZnVuY3Rpb24obm90IHlldCBzZW50IHVwc3RyZWFtKSB0byBkaXNwbGF5IG1hYyBh ZGRyZXNzZXMuDQo+DQo+PiArUlRFX1RSQUNFX1BPSU5UKA0KPj4gKyAgICAgICBydGVfZXRoZGV2 X3RyYWNlX21hY19hZGRyX3JlbW92ZSwNCj4+ICsgICAgICAgUlRFX1RSQUNFX1BPSU5UX0FSR1Mo dWludDE2X3QgcG9ydF9pZCwgc3RydWN0IHJ0ZV9ldGhlcl9hZGRyICphZGRyKSwNCj4+ICsgICAg ICAgcnRlX3RyYWNlX3BvaW50X2VtaXRfdTE2KHBvcnRfaWQpOw0KPj4gKyAgICAgICBydGVfdHJh Y2VfcG9pbnRfZW1pdF9wdHIoYWRkcik7DQo+PiArKQ0KPj4gKw0KPg0KPkFzIGFib3ZlLCBjYW4g Y29udGVudCBvZiAnYWRkcicgYmUgcmVjb3JkZWQsIGxpa2UgYXMgc3RyaW5nPw0KPg0KPj4gK1JU RV9UUkFDRV9QT0lOVCgNCj4+ICsgICAgICAgcnRlX2V0aGRldl90cmFjZV9wb29sX29wc19zdXBw b3J0ZWQsDQo+PiArICAgICAgIFJURV9UUkFDRV9QT0lOVF9BUkdTKHVpbnQxNl90IHBvcnRfaWQs IGNvbnN0IGNoYXIgKnBvb2wpLA0KPj4gKyAgICAgICBydGVfdHJhY2VfcG9pbnRfZW1pdF91MTYo cG9ydF9pZCk7DQo+PiArICAgICAgIHJ0ZV90cmFjZV9wb2ludF9lbWl0X3B0cihwb29sKTsNCj4+ ICspDQo+PiArDQo+DQo+J3Bvb2wnIHNob3VsZCBiZSBzdHJpbmcsIGluc3RlYWQgb2YgcG9pbnRl ci4NCk9rLg0KPg0KPj4gK1JURV9UUkFDRV9QT0lOVCgNCj4+ICsgICAgICAgcnRlX2V0aGRldl90 cmFjZV9wcmlvcml0eV9mbG93X2N0cmxfc2V0LA0KPj4gKyAgICAgICBSVEVfVFJBQ0VfUE9JTlRf QVJHUyh1aW50MTZfdCBwb3J0X2lkLCBzdHJ1Y3QgcnRlX2V0aF9wZmNfY29uZg0KPipwZmNfY29u ZiksDQo+PiArICAgICAgIHJ0ZV90cmFjZV9wb2ludF9lbWl0X3UxNihwb3J0X2lkKTsNCj4+ICsg ICAgICAgcnRlX3RyYWNlX3BvaW50X2VtaXRfdTMyKHBmY19jb25mLT5mYy5oaWdoX3dhdGVyKTsN Cj4+ICsgICAgICAgcnRlX3RyYWNlX3BvaW50X2VtaXRfdTMyKHBmY19jb25mLT5mYy5sb3dfd2F0 ZXIpOw0KPj4gKyAgICAgICBydGVfdHJhY2VfcG9pbnRfZW1pdF91MTYocGZjX2NvbmYtPmZjLnBh dXNlX3RpbWUpOw0KPj4gKyAgICAgICBydGVfdHJhY2VfcG9pbnRfZW1pdF91MTYocGZjX2NvbmYt PmZjLnNlbmRfeG9uKTsNCj4+ICsgICAgICAgcnRlX3RyYWNlX3BvaW50X2VtaXRfaW50KHBmY19j b25mLT5mYy5tb2RlKTsNCj4+ICsgICAgICAgcnRlX3RyYWNlX3BvaW50X2VtaXRfdTgocGZjX2Nv bmYtPmZjLm1hY19jdHJsX2ZyYW1lX2Z3ZCk7DQo+PiArICAgICAgIHJ0ZV90cmFjZV9wb2ludF9l bWl0X3U4KHBmY19jb25mLT5mYy5hdXRvbmVnKTsNCj4+ICsgICAgICAgcnRlX3RyYWNlX3BvaW50 X2VtaXRfdTgocGZjX2NvbmYtPnByaW9yaXR5KTsNCj4+ICspDQo+PiArDQo+PiArUlRFX1RSQUNF X1BPSU5UKA0KPj4gKyAgICAgICBydGVfZXRoZGV2X3RyYWNlX3Jlc2V0LA0KPj4gKyAgICAgICBS VEVfVFJBQ0VfUE9JTlRfQVJHUyh1aW50MTZfdCBwb3J0X2lkLCBpbnQgcmV0KSwNCj4+ICsgICAg ICAgcnRlX3RyYWNlX3BvaW50X2VtaXRfdTE2KHBvcnRfaWQpOw0KPj4gKyAgICAgICBydGVfdHJh Y2VfcG9pbnRfZW1pdF9pbnQocmV0KTsNCj4+ICspDQo+PiArDQo+PiArUlRFX1RSQUNFX1BPSU5U KA0KPj4gKyAgICAgICBydGVfZXRoZGV2X3RyYWNlX3Jzc19oYXNoX2NvbmZfZ2V0LA0KPj4gKyAg ICAgICBSVEVfVFJBQ0VfUE9JTlRfQVJHUyh1aW50MTZfdCBwb3J0X2lkLCBzdHJ1Y3QgcnRlX2V0 aF9yc3NfY29uZg0KPipyc3NfY29uZiksDQo+PiArICAgICAgIHJ0ZV90cmFjZV9wb2ludF9lbWl0 X3UxNihwb3J0X2lkKTsNCj4+ICsgICAgICAgcnRlX3RyYWNlX3BvaW50X2VtaXRfcHRyKHJzc19j b25mKTsNCj4+ICspDQo+PiArDQo+DQo+UGxlYXNlIHJlY29yZCBjb250ZW50IG9mIHRoZSAncnNz X2NvbmYnIGluc3RlYWQgb2YgcG9pbnRlciB2YWx1ZS4NCk9rLiBTYW1lIGFzIGZjX2NvbmYgYWJv dmUuDQo+DQo+PiArUlRFX1RSQUNFX1BPSU5UKA0KPj4gKyAgICAgICBydGVfZXRoZGV2X3RyYWNl X3Jzc19oYXNoX3VwZGF0ZSwNCj4+ICsgICAgICAgUlRFX1RSQUNFX1BPSU5UX0FSR1ModWludDE2 X3QgcG9ydF9pZCwgc3RydWN0IHJ0ZV9ldGhfcnNzX2NvbmYNCj4qcnNzX2NvbmYpLA0KPj4gKyAg ICAgICBydGVfdHJhY2VfcG9pbnRfZW1pdF91MTYocG9ydF9pZCk7DQo+PiArICAgICAgIHJ0ZV90 cmFjZV9wb2ludF9lbWl0X3B0cihyc3NfY29uZi0+cnNzX2tleSk7DQo+PiArICAgICAgIHJ0ZV90 cmFjZV9wb2ludF9lbWl0X3U4KHJzc19jb25mLT5yc3Nfa2V5X2xlbik7DQo+PiArICAgICAgIHJ0 ZV90cmFjZV9wb2ludF9lbWl0X3U2NChyc3NfY29uZi0+cnNzX2hmKTsNCj4+ICspDQo+PiArDQo+ DQo+UGxlYXNlIGFkZCByZXR1cm4gdmFsdWUuDQpPay4NCj4NCj4+ICtSVEVfVFJBQ0VfUE9JTlQo DQo+PiArICAgICAgIHJ0ZV9ldGhkZXZfdHJhY2VfcnNzX3JldGFfcXVlcnksDQo+PiArICAgICAg IFJURV9UUkFDRV9QT0lOVF9BUkdTKHVpbnQxNl90IHBvcnRfaWQsDQo+PiArICAgICAgICAgICAg ICAgc3RydWN0IHJ0ZV9ldGhfcnNzX3JldGFfZW50cnk2NCAqcmV0YV9jb25mLCB1aW50MTZfdCBy ZXRhX3NpemUpLA0KPj4gKyAgICAgICBydGVfdHJhY2VfcG9pbnRfZW1pdF91MTYocG9ydF9pZCk7 DQo+PiArICAgICAgIHJ0ZV90cmFjZV9wb2ludF9lbWl0X3B0cihyZXRhX2NvbmYpOw0KPj4gKyAg ICAgICBydGVfdHJhY2VfcG9pbnRfZW1pdF91MTYocmV0YV9zaXplKTsNCj4+ICspDQo+PiArDQo+ PiArUlRFX1RSQUNFX1BPSU5UKA0KPj4gKyAgICAgICBydGVfZXRoZGV2X3RyYWNlX3Jzc19yZXRh X3VwZGF0ZSwNCj4+ICsgICAgICAgUlRFX1RSQUNFX1BPSU5UX0FSR1ModWludDE2X3QgcG9ydF9p ZCwNCj4+ICsgICAgICAgICAgICAgICBzdHJ1Y3QgcnRlX2V0aF9yc3NfcmV0YV9lbnRyeTY0ICpy ZXRhX2NvbmYsIHVpbnQxNl90IHJldGFfc2l6ZSksDQo+PiArICAgICAgIHJ0ZV90cmFjZV9wb2lu dF9lbWl0X3UxNihwb3J0X2lkKTsNCj4+ICsgICAgICAgcnRlX3RyYWNlX3BvaW50X2VtaXRfdTY0 KHJldGFfY29uZi0+bWFzayk7DQo+PiArICAgICAgIHJ0ZV90cmFjZV9wb2ludF9lbWl0X3UxNihy ZXRhX3NpemUpOw0KPj4gKykNCj4NCj4ncmV0YV9jb25mLT5tYXNrJyBvbiBpdHMgb3duIGlzIG5v dCBtdWNoIHVzZWZ1bGwsIGFuZCAncmV0YV9jb25mLT5yZXRhJw0KPmlzIGFuIGFycmF5IGFuZCBo YXJkIHRvIHJlY29yZC4NCj5BcyBhYm92ZSAncnRlX2V0aGRldl90cmFjZV9yc3NfcmV0YV9xdWVy eScgdHJhY2UgcG9pbnQgb25seSByZWNvcmQgcmV0YV9jb25maWcNCj5wb2ludGVyLCB0aGlzIGNh biBkbyB0aGUgc2FtZS4NCkluIHJ0ZV9ldGhfZGV2X3Jzc19yZXRhX3F1ZXJ5LCBpZiByZXR1cm4g b2YgZXRoX2VyciBpcyBjYXB0dXJlZCBhbmQgc3VjY2VzcyB0aGVuIHJldGEgY29uZiBjYW4gYmUg ZGlzcGxheWVkLg0KPg0KPk92ZXJhbGwsIEkgdGhpbmsgYmV0dGVyIHRvIG1ha2UgZ2V0L3NldCBw YWlyIG9mIGFuIEFQSSByZWNvcmQgc2FtZSBzZXQgb2YgdmFsdWVzLg0KPg0KPjwuLi4+DQo+DQo+ PiArUlRFX1RSQUNFX1BPSU5UKA0KPj4gKyAgICAgICBydGVfZXRoZGV2X3RyYWNlX3NldF9tY19h ZGRyX2xpc3QsDQo+PiArICAgICAgIFJURV9UUkFDRV9QT0lOVF9BUkdTKHVpbnQxNl90IHBvcnRf aWQsDQo+PiArICAgICAgICAgICAgICAgc3RydWN0IHJ0ZV9ldGhlcl9hZGRyICptY19hZGRyX3Nl dCwNCj4+ICsgICAgICAgICAgICAgICB1aW50MzJfdCBuYl9tY19hZGRyKSwNCj4+ICsgICAgICAg cnRlX3RyYWNlX3BvaW50X2VtaXRfdTE2KHBvcnRfaWQpOw0KPj4gKyAgICAgICBydGVfdHJhY2Vf cG9pbnRfZW1pdF9wdHIobWNfYWRkcl9zZXQpOw0KPj4gKyAgICAgICBydGVfdHJhY2VfcG9pbnRf ZW1pdF91MzIobmJfbWNfYWRkcik7DQo+PiArKQ0KPj4gKw0KPg0KPkJldHRlciB0byByZWNvcmQg Y29udGVudCBvZiAnbWNfYWRkcl9zZXQnIGJ1dCBpdCBpcyBwb2ludGVyIGFycmF5IGZvciBtYWMg YWRkcmVzcywNCj5zbyBJIGd1ZXNzIHdlIGNhbid0IHJlY29yZCB0aGVzZSBtYWMgYWRkcmVzc2Vz Lg0KPg0KPj4gK1JURV9UUkFDRV9QT0lOVCgNCj4+ICsgICAgICAgcnRlX2V0aGRldl90cmFjZV9z ZXRfcHR5cGVzLA0KPj4gKyAgICAgICBSVEVfVFJBQ0VfUE9JTlRfQVJHUyh1aW50MTZfdCBwb3J0 X2lkLCB1aW50MzJfdCBwdHlwZV9tYXNrLA0KPj4gKyAgICAgICAgICAgICAgIHVpbnQzMl90ICpz ZXRfcHR5cGVzLCB1bnNpZ25lZCBpbnQgbnVtKSwNCj4+ICsgICAgICAgcnRlX3RyYWNlX3BvaW50 X2VtaXRfdTE2KHBvcnRfaWQpOw0KPj4gKyAgICAgICBydGVfdHJhY2VfcG9pbnRfZW1pdF91MzIo cHR5cGVfbWFzayk7DQo+PiArICAgICAgIHJ0ZV90cmFjZV9wb2ludF9lbWl0X3B0cihzZXRfcHR5 cGVzKTsNCj4+ICsgICAgICAgcnRlX3RyYWNlX3BvaW50X2VtaXRfdTMyKG51bSk7DQo+PiArKQ0K Pj4gKw0KPg0KPlNpbWlsYXJseSAnc2V0X3B0eXBlcycgaXMgYW4gYXJyYXkuDQo+DQo+SSB3b25k ZXIgaWYgdGhlcmUgc2hvdWxkIGJlIGFuIHJ0ZV90cmFjZV9wb2ludF9lbWl0XyBmdW5jdGlvbiBm b3IgYXJyYXlzPyBXaGF0DQo+ZG8geW91IHRoaW5rPw0KSW4gbXkgbmV3IHNlcmllcyhub3QgeWV0 IHNlbnQgdXBzdHJlYW0pLCBJIGhhdmUgYWRkZWQgYSBmdW5jdGlvbiB0byBkaXNwbGF5IHVpbnQ4 X3QgYXJyYXlzIGxpa2UgbWFjIGFkZHJlc3Nlcy4gV2lsbCBoYXZlIHRvIGNoZWNrIGhvdyBtdWNo IGNoYW5nZSBpcyByZXF1aXJlZCB0byBkaXNwbGF5IG90aGVyIGFycmF5IHR5cGUuDQo+DQo+PC4u Lj4NCj4NCj4+ICtSVEVfVFJBQ0VfUE9JTlQoDQo+PiArICAgICAgIHJ0ZV9ldGhkZXZfdHJhY2Vf c29ja2V0X2lkLA0KPj4gKyAgICAgICBSVEVfVFJBQ0VfUE9JTlRfQVJHUyh1aW50MTZfdCBwb3J0 X2lkKSwNCj4+ICsgICAgICAgcnRlX3RyYWNlX3BvaW50X2VtaXRfdTE2KHBvcnRfaWQpOw0KPj4g KykNCj4NCj5TaG91bGQgaW5jbHVkZSAnc29ja2V0X2lkJy4NCk9rLg0KPg0KPjwuLi4+DQo+DQo+ PiArUlRFX1RSQUNFX1BPSU5UKA0KPj4gKyAgICAgICBydGVfZXRoZGV2X3RyYWNlX3VjX2hhc2hf dGFibGVfc2V0LA0KPj4gKyAgICAgICBSVEVfVFJBQ0VfUE9JTlRfQVJHUyh1aW50MTZfdCBwb3J0 X2lkLCBzdHJ1Y3QgcnRlX2V0aGVyX2FkZHIgKmFkZHIsDQo+PiArICAgICAgICAgICAgICAgdWlu dDhfdCBvbiwgaW50IHJldCksDQo+PiArICAgICAgIHJ0ZV90cmFjZV9wb2ludF9lbWl0X3UxNihw b3J0X2lkKTsNCj4+ICsgICAgICAgcnRlX3RyYWNlX3BvaW50X2VtaXRfcHRyKGFkZHIpOw0KPj4g KyAgICAgICBydGVfdHJhY2VfcG9pbnRfZW1pdF91OChvbik7DQo+PiArICAgICAgIHJ0ZV90cmFj ZV9wb2ludF9lbWl0X2ludChyZXQpOw0KPj4gKykNCj4+ICsNCj4NCj5DYW4gaGF2ZSAnYWRkcicg YXMgc3RyaW5nPw0KbWFjX2FkZHIgY2FuIGJlIGRpc3BsYXllZCBhcyBhcnJheXMuDQo+RG8gd2Ug bmVlZCBhIHNwZWNpZmljIHJ0ZV90cmFjZV9wb2ludF9lbWl0XyBmdW5jdGlvbiBmb3IgbWFjIGFk ZHI/DQo+DQo+PC4uLj4NCj4NCj4+ICtSVEVfVFJBQ0VfUE9JTlQoDQo+PiArICAgICAgIHJ0ZV9l dGhfdHJhY2VfZmluZF9uZXh0LA0KPj4gKyAgICAgICBSVEVfVFJBQ0VfUE9JTlRfQVJHUyh1aW50 MTZfdCBwb3J0X2lkKSwNCj4+ICsgICAgICAgcnRlX3RyYWNlX3BvaW50X2VtaXRfdTE2KHBvcnRf aWQpOw0KPj4gKykNCj4+ICsNCj4NCj5ydGVfZXRoX3RyYWNlX2ZpbmRfbmV4dCogZnVuY3Rpb25z IGdldHMgJ3BvcnRfaWQnIGFzIGlucHV0IHBhcmFtZXRlciwgYW5kDQo+cmV0dXJucyBuZXh0ICdw b3J0X2lkJywgc28gYm90aCBpbnB1dCBhbmQgb3V0cHV0IGlzICdwb3J0X2lkJyBhbmQgYm90aCBz aG91bGQgYmUNCj5yZWNvcmRlZC4NCj4NCj5Gb3IgdGhpcyBuZWVkIHRvIHVwZGF0ZSB0aGVzZSBm dW5jdGlvbnMgdG8gY3JlYXRlIGFuIGludGVyaW0gdmFyaWFibGUgZm9yIGlucHV0DQo+J3BvcnRf aWQnLg0KPg0KPkFib3ZlIGNvbW1lbnRzIGFyZSBmb3IgYWxsICdydGVfZXRoX3RyYWNlX2ZpbmRf bmV4dCooKScgZnVuY3Rpb25zLg0KT2suDQo+DQo+PC4uLj4NCj4NCj4+ICtSVEVfVFJBQ0VfUE9J TlQoDQo+PiArICAgICAgIHJ0ZV9ldGhfdHJhY2VfbGlua19nZXQsDQo+PiArICAgICAgIFJURV9U UkFDRV9QT0lOVF9BUkdTKHVpbnQxNl90IHBvcnRfaWQsIHN0cnVjdCBydGVfZXRoX2xpbmsgKmxp bmspLA0KPj4gKyAgICAgICBydGVfdHJhY2VfcG9pbnRfZW1pdF91MTYocG9ydF9pZCk7DQo+PiAr ICAgICAgIHJ0ZV90cmFjZV9wb2ludF9lbWl0X3UzMihsaW5rLT5saW5rX3NwZWVkKTsNCj4+ICsp DQo+DQo+SSB0aGluayBiZXR0ZXIgdG8gcmVjb3JkIG90aGVyIGxpbmsgdmFsdWVzIHRvby4NCk9r Lg0KPg0KPj4gKw0KPj4gK1JURV9UUkFDRV9QT0lOVCgNCj4+ICsgICAgICAgcnRlX2V0aF90cmFj ZV9saW5rX2dldF9ub3dhaXQsDQo+PiArICAgICAgIFJURV9UUkFDRV9QT0lOVF9BUkdTKHVpbnQx Nl90IHBvcnRfaWQsIHN0cnVjdCBydGVfZXRoX2xpbmsgKmxpbmspLA0KPj4gKyAgICAgICBydGVf dHJhY2VfcG9pbnRfZW1pdF91MTYocG9ydF9pZCk7DQo+PiArICAgICAgIHJ0ZV90cmFjZV9wb2lu dF9lbWl0X3UzMihsaW5rLT5saW5rX3NwZWVkKTsNCj4+ICspDQo+PiArDQo+DQo+SSB0aGluayBi ZXR0ZXIgdG8gcmVjb3JkIG90aGVyIGxpbmsgdmFsdWVzIHRvby4NCj4NCj48Li4uPg0KPg0KPj4g K1JURV9UUkFDRV9QT0lOVCgNCj4+ICsgICAgICAgcnRlX2V0aF90cmFjZV9yeF9idXJzdF9tb2Rl X2dldCwNCj4+ICsgICAgICAgUlRFX1RSQUNFX1BPSU5UX0FSR1ModWludDE2X3QgcG9ydF9pZCwg dWludDE2X3QgcXVldWVfaWQsDQo+PiArICAgICAgICAgICAgICAgc3RydWN0IHJ0ZV9ldGhfYnVy c3RfbW9kZSAqbW9kZSksDQo+PiArICAgICAgIHJ0ZV90cmFjZV9wb2ludF9lbWl0X3UxNihwb3J0 X2lkKTsNCj4+ICsgICAgICAgcnRlX3RyYWNlX3BvaW50X2VtaXRfdTE2KHF1ZXVlX2lkKTsNCj4+ ICsgICAgICAgcnRlX3RyYWNlX3BvaW50X2VtaXRfcHRyKG1vZGUpOw0KPj4gKykNCj4+ICsNCj4N Cj5DYW4geW91IHBsZWFzZSByZWNvcmQgY29udGVudCBvZiAnbW9kZScgaW5zdA0KbW9kZS0+Zmxh Z3MgY2FuIGJlIGRpc3BsYXllZC4gTm90IHN1cmUgYWJvdXQgaW5mbyBhcnJheS4NCj4NCj4+ICtS VEVfVFJBQ0VfUE9JTlQoDQo+PiArICAgICAgIHJ0ZV9ldGhfdHJhY2VfcnhfcXVldWVfaW5mb19n ZXQsDQo+PiArICAgICAgIFJURV9UUkFDRV9QT0lOVF9BUkdTKHVpbnQxNl90IHBvcnRfaWQsIHVp bnQxNl90IHF1ZXVlX2lkLA0KPj4gKyAgICAgICAgICAgICAgIHN0cnVjdCBydGVfZXRoX3J4cV9p bmZvICpxaW5mbyksDQo+PiArICAgICAgIHJ0ZV90cmFjZV9wb2ludF9lbWl0X3UxNihwb3J0X2lk KTsNCj4+ICsgICAgICAgcnRlX3RyYWNlX3BvaW50X2VtaXRfdTE2KHF1ZXVlX2lkKTsNCj4+ICsg ICAgICAgcnRlX3RyYWNlX3BvaW50X2VtaXRfcHRyKHFpbmZvLT5tcCk7DQo+PiArICAgICAgIHJ0 ZV90cmFjZV9wb2ludF9lbWl0X3U4KHFpbmZvLT5zY2F0dGVyZWRfcngpOw0KPj4gKyAgICAgICBy dGVfdHJhY2VfcG9pbnRfZW1pdF91OChxaW5mby0+cXVldWVfc3RhdGUpOw0KPj4gKyAgICAgICBy dGVfdHJhY2VfcG9pbnRfZW1pdF91MTYocWluZm8tPm5iX2Rlc2MpOw0KPj4gKyAgICAgICBydGVf dHJhY2VfcG9pbnRfZW1pdF91MTYocWluZm8tPnJ4X2J1Zl9zaXplKTsNCj4+ICspDQo+PiArDQo+ DQo+Q2FuIHlvdSBwbGVhc2UgYWRkICdxaW5mby0+Y29uZi0+cnhfZHJvcF9lbicgJiAncWluZm8t PmNvbmYtPm9mZmxvYWRzJy4NCk9rLg0KPg0KPg0KPj4gK1JURV9UUkFDRV9QT0lOVCgNCj4+ICsg ICAgICAgcnRlX2V0aF90cmFjZV9yeF9xdWV1ZV9zZXR1cCwNCj4+ICsgICAgICAgUlRFX1RSQUNF X1BPSU5UX0FSR1ModWludDE2X3QgcG9ydF9pZCwgdWludDE2X3QgcnhfcXVldWVfaWQsDQo+PiAr ICAgICAgICAgICAgICAgdWludDE2X3QgbmJfcnhfZGVzYywgdW5zaWduZWQgaW50IHNvY2tldF9p ZCwNCj4+ICsgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgcnRlX2V0aF9yeGNvbmYgKnJ4X2Nv bmYsDQo+PiArICAgICAgICAgICAgICAgc3RydWN0IHJ0ZV9tZW1wb29sICptYl9wb29sKSwNCj4+ ICsgICAgICAgcnRlX3RyYWNlX3BvaW50X2VtaXRfdTE2KHBvcnRfaWQpOw0KPj4gKyAgICAgICBy dGVfdHJhY2VfcG9pbnRfZW1pdF91MTYocnhfcXVldWVfaWQpOw0KPj4gKyAgICAgICBydGVfdHJh Y2VfcG9pbnRfZW1pdF91MTYobmJfcnhfZGVzYyk7DQo+PiArICAgICAgIHJ0ZV90cmFjZV9wb2lu dF9lbWl0X3UzMihzb2NrZXRfaWQpOw0KPj4gKyAgICAgICBydGVfdHJhY2VfcG9pbnRfZW1pdF9w dHIocnhfY29uZik7DQo+PiArICAgICAgIHJ0ZV90cmFjZV9wb2ludF9lbWl0X3B0cihtYl9wb29s KTsNCj4+ICspDQo+PiArDQo+DQo+Q2FuIHlvdSBwbGVhc2UgYWRkICdyeF9jb25mLT5yeF9kcm9w X2VuJyAmICdyeF9jb25mLT5vZmZsb2FkcycuDQpPay4NCj4NCj4+ICtSVEVfVFJBQ0VfUE9JTlQo DQo+PiArICAgICAgIHJ0ZV9ldGhfdHJhY2Vfc2V0X3F1ZXVlX3JhdGVfbGltaXQsDQo+PiArICAg ICAgIFJURV9UUkFDRV9QT0lOVF9BUkdTKHVpbnQxNl90IHBvcnRfaWQsIHVpbnQxNl90IHF1ZXVl X2lkeCwNCj4+ICsgICAgICAgICAgICAgICB1aW50MTZfdCB0eF9yYXRlKSwNCj4+ICsgICAgICAg cnRlX3RyYWNlX3BvaW50X2VtaXRfdTE2KHBvcnRfaWQpOw0KPj4gKyAgICAgICBydGVfdHJhY2Vf cG9pbnRfZW1pdF91MTYocXVldWVfaWR4KTsNCj4+ICsgICAgICAgcnRlX3RyYWNlX3BvaW50X2Vt aXRfdTE2KHR4X3JhdGUpOw0KPj4gKykNCj4+ICsNCj4+ICtSVEVfVFJBQ0VfUE9JTlQoDQo+PiAr ICAgICAgIHJ0ZV9ldGhfdHJhY2Vfc3BlZWRfYml0ZmxhZywNCj4+ICsgICAgICAgUlRFX1RSQUNF X1BPSU5UX0FSR1ModWludDMyX3Qgc3BlZWQsIGludCBkdXBsZXgpLA0KPj4gKyAgICAgICBydGVf dHJhY2VfcG9pbnRfZW1pdF91MzIoc3BlZWQpOw0KPj4gKyAgICAgICBydGVfdHJhY2VfcG9pbnRf ZW1pdF9pbnQoZHVwbGV4KTsNCj4+ICspDQo+PiArDQo+PiArUlRFX1RSQUNFX1BPSU5UKA0KPj4g KyAgICAgICBydGVfZXRoX3RyYWNlX3N0YXRzX2dldCwNCj4+ICsgICAgICAgUlRFX1RSQUNFX1BP SU5UX0FSR1ModWludDE2X3QgcG9ydF9pZCwgc3RydWN0IHJ0ZV9ldGhfc3RhdHMgKnN0YXRzKSwN Cj4+ICsgICAgICAgcnRlX3RyYWNlX3BvaW50X2VtaXRfdTE2KHBvcnRfaWQpOw0KPj4gKyAgICAg ICBydGVfdHJhY2VfcG9pbnRfZW1pdF9wdHIoc3RhdHMpOw0KPj4gKyAgICAgICBydGVfdHJhY2Vf cG9pbnRfZW1pdF91NjQoc3RhdHMtPnJ4X25vbWJ1Zik7DQo+PiArKQ0KPj4gKw0KPg0KPk5vdCBz dXJlIHdoYXQgdG8gcmVjb3JkIGhlcmUsIEkgdGhpbmsgYWxsIGJhc2ljIHN0YXQgY291bnRlcnMg Y2FuIGJlIHJlY29yZGVkIGlmDQo+dGhlcmUgY29zdCBpcyBlZmZvcmRhYmxlLg0KT2suIFNhbWUg Y2hhbmdlcyByZXF1aXJlZCBhcyBmY19jb25mIGFib3ZlLg0KDQo=