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 308B8A0350; Thu, 27 Jan 2022 09:48:19 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 8968142771; Thu, 27 Jan 2022 09:48:18 +0100 (CET) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2043.outbound.protection.outlook.com [40.107.244.43]) by mails.dpdk.org (Postfix) with ESMTP id 5E8764067C for ; Thu, 27 Jan 2022 09:48:16 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=f6+kAZ9A0dMTlU4hUddwyfVNM71wP75VGIgif0ApC9kwIrhefOyZvKZurIgH9Xp3UP9LCsuHGu7JARCR70ZGSdJXZcg4bEcFYWIueOb1oLm5Mk+4BB2AegME/EOMPOYVIWqEdHy1ri2nXMInJQHjwRjNNpFZWVQcJXfCQab5YqWOq8gZdRe43P08E1WJid29JiTXHGatUueDidxRYfMdrcWV35BsUyGE7q68uMFJNJ/dZjJ51WQ64ZqqdD3UJhkOhUeI9F8YaLDcu6xlj38qzfkN/UMzoaoKZ0xJKqRjT9OuktkMakQI+H0XaS/HTvnOeJxg41YkaC/Iu5pi7QbfrQ== 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=pdSkO6MkDD0KqfWsn7UQAQmwS9fi+h+yJOH4qUUSy60=; b=cIjBECDQZtpEQwlt2UOvVwOmnoLcZ9mBgeni8D5NREXxG3uIFftido7DoTN+msRjU8AnQRPQLmYRbeFfcobBN/gmiK2e/HPY0WNxK3Q2WGQpemxznh8gMJ1FNZhXciypgc8jWpgO80k4ZdQ2bPFMK+EV24Mh/KntCywWee4Q151Js/A6b4sJWqRfJ6g3N1GbBdoAuN2J6TWh5BCv6xjoZEyShZzXbjbXJEY1qgI8DMo9on7Je4BQbfHxoq97rbA+K680GQ61dmOZhYAbOfsjrVzVpl4EGxXUqpRLX88KtRQh0BirVSrYbrcsKaWRPQJP1oYMweUxJcUVMYqYL0q51w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=pdSkO6MkDD0KqfWsn7UQAQmwS9fi+h+yJOH4qUUSy60=; b=TjWho4lwiIrrAc2zpP4EWWyK23/7WwMz7rNrnb4ylSK077g3yE9ykdsgcCeWTSMFK7j5gSLnOXaqdMmLvqwltqAJr45mlRI3zOFBINbHRGZmQF/nhT9j0kp4ed8OibCntjepxnec3eHuGqGrb8qHnVnPpKayxyVCGmwekr8uK5a8vTIj01YGLWFhFO3aMXzeLROtYi95xMJ5sthbU80CGG9KRrX5L2Q/61fq31ayzWL2qe2ESWvhQVzmEKieYqPkyAjuXYrQQsQhtcJ2ar+QBduhYO/y3iZpWJV6xNpFcNSBuqW3SPCNLWQKEREPPq1yGYjPcG74Oj0Ddz/7e0shqQ== Received: from BN9PR12MB5366.namprd12.prod.outlook.com (2603:10b6:408:103::20) by DM6PR12MB3354.namprd12.prod.outlook.com (2603:10b6:5:11f::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4909.13; Thu, 27 Jan 2022 08:48:14 +0000 Received: from BN9PR12MB5366.namprd12.prod.outlook.com ([fe80::8820:e00a:5ff3:4da2]) by BN9PR12MB5366.namprd12.prod.outlook.com ([fe80::8820:e00a:5ff3:4da2%9]) with mapi id 15.20.4888.020; Thu, 27 Jan 2022 08:48:14 +0000 From: "Xueming(Steven) Li" To: "chenbo.xia@intel.com" , "maxime.coquelin@redhat.com" , "dev@dpdk.org" Subject: Re: [PATCH] vhost: add vDPA resource cleanup callback Thread-Topic: [PATCH] vhost: add vDPA resource cleanup callback Thread-Index: AQHXxN4gU2J6wOCiM0eB5jWsNOhBN6vdXOKAgAAJuwCAFCy+AIAAAYGAgABTbYCAAAFXAICDxISAgAF9WwA= Date: Thu, 27 Jan 2022 08:48:13 +0000 Message-ID: References: <20211019113956.2254537-1-xuemingl@nvidia.com> <2bfda127-f6de-d3fa-0903-566b8ec69be4@redhat.com> <04f60f8da1819b8a0196cfca20127107bd0b835c.camel@nvidia.com> <9a34fcad-bd05-bcf2-c7e3-5246a51ef400@redhat.com> <92c39a9d-00f7-fa53-13e4-12fc903b7bf8@redhat.com> <93e501e6-9f92-91a1-3875-7d4ec3a70366@redhat.com> In-Reply-To: <93e501e6-9f92-91a1-3875-7d4ec3a70366@redhat.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.42.2 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 6ea0bd44-bc8d-43c5-65e4-08d9e171c159 x-ms-traffictypediagnostic: DM6PR12MB3354:EE_ x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8273; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 1QTglYapDmRbpRU0EmyT8aGoU3hl0wU7FRBYLQwWXbAla8HLtv7o4EQxjOHuMJ13OYBnpUcPVjERcNoKVaOkn6LFPRRjHs2Fl2OTHGdO0Zx4CTNkr9xTQjeCRemM2FkCaJJNXcZtuMZhiIIpOVmtfQkzmOIH8SkeU1gUZZ+4RrUJ9PB35M1qJS5Rv5anvoEifOhuuUixdI1o8aeEvuOnTwo5PpnCj1KUVFNJkPrvijLii0HXuecyv14FS2zkQtim5s8M1yJ+LVMJGJ8NsBQZWR2y4S7W1CbVmwsFQ3F0CE/y3UbKV72UNhkbNCxcCf/50VPQCjOEHeQof6/ITaOdy7CxN+6yXY9iARcqKT2Hxq7n3Ldcmfbvo1u5MCQN1BaO24K0BmsWNk7wvOjuo5hgkcBrFIkVlVF7LM7oxgoMIeVqGzj6FGECcMkaUV0GvwunXaxDS68uQYkMuun/dJrL/QES+60sWjt1U1Cfq6OqiE+VVzJ8G9UNsMeluD8IpnhKDskCNVQnoyWhQ4Vw7rWHmpNr/bY4zodfnW/pbCDrvVyeRAWxqsAisvWixTGBcPsSIcs9Bl7+ZL2t7ZjAf5G8HbAFT9sjgrWZdHvE1Wm3o3yuznmaFOsduhqT1QSBh8z8PEaR/nddg1ovwQV4VNPM8Bq/32viutcpV5D7AA4qkdRTALBbnt1Eq4vJ5AY0VZaT5fR+1kAJhZBiKAiz35QbkA== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BN9PR12MB5366.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(316002)(2906002)(66946007)(64756008)(36756003)(66446008)(4001150100001)(2616005)(76116006)(83380400001)(508600001)(86362001)(38070700005)(71200400001)(91956017)(53546011)(8676002)(6486002)(8936002)(110136005)(186003)(5660300002)(6506007)(38100700002)(122000001)(66476007)(66556008)(6512007); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Y3RXMjRJbEprc2llRG5GdDdCZ0lsOG9zNDUwV3FXT21uSDlEZklQd0ptY3dj?= =?utf-8?B?TE55NGszRlZWV0RMVnBmcXJOdkVWVEFHNmFYdGRFWlVMMW1sS1FWTWxrally?= =?utf-8?B?UUZsVW1uWDJyeXowNlN5QURhVnFlTm9OVjFsMnh5WEVWdUIyWUZOc2pHZDlp?= =?utf-8?B?RWtkK2ZVcC9hZ0pSeWdlZk93bnptcmI0OGNCM2JkSkdzZnRJenF6S25XcTFH?= =?utf-8?B?RlhFOEs4ZS91NjB3dlJ4d1pHU1ZmS2kwYnMyS21MM2pNQ2hmWGRzSFQ2Zldj?= =?utf-8?B?SWthd0MwOWJxRjV2dGZPMUZhdjVFd0kxbndTR1YrVUdPZSt0aWoyc29UZ1ds?= =?utf-8?B?bWxMVVlORHV3RU9aNlZVbUZaUlBoQzZWVGlYWHBXY25NS0RjdFRYRCtDMWxr?= =?utf-8?B?VEVDUWR4Ym5pTm1vSXppQzQ3WGtTNTFydUNLNHdMaU5QYUJJbElvNWQxMDJS?= =?utf-8?B?R3llS2E3YUlrYmYzN2t2dWI1US9RQ0ZralZLbEV1bTRsTVhJTFA4S21JV1JN?= =?utf-8?B?Q2JEay9qZ290bXZKMU52VzEwa2lNRkJITGROaTJhMmEwRjI0MStMOFhRY3Bu?= =?utf-8?B?UmY2ak4zZ2d0Vi9vVkhmbG5aU0VQdkdXaCsrWFhFNGo1MUpXdmFWMVNzUGpF?= =?utf-8?B?bkg4SnpkNlIzV3hBbGt4MzNJV282Q0o5elBOeGl4RHJjYWRiTWMrdExHV3Zp?= =?utf-8?B?ZnJ3TStqSWRNWFRzN2wzRE1YM2tlaFVMSnZESjJVL2R0azRUUXB5SVJYclBR?= =?utf-8?B?SGFOdkMxZjgrMDhXbWlBK0tBKzlFNlJSdWZYRm1LZ01GZGNiM0JTSWphNUdo?= =?utf-8?B?Ymd4Z09DbWlWZk91M1RaTTlvMlVnTGRpdUF1bVk4UUNEOVhRbzhLbERKVmpM?= =?utf-8?B?L3p4Y3VyWllhc05XRGFSa2hSeDJDbStWVlAxMWRhaHBLYkE0ckVPRzI4anRX?= =?utf-8?B?NW9pNWF0bnhoZlJCRUdGN1FaUndXekljYUhjayt1eW9LQ0VLU3d6dHdZc01T?= =?utf-8?B?U1o3U3NBa1ZJSk5wQTdLTXdYTzFoUkhNQUVhaUpiSFJiWkFudHAxcTMyK3hv?= =?utf-8?B?NEpWR1hLeGRFeDg0UjBaUlBxNU9xUlRmRFNDRGVtT2RlK0JJajFCQXlmWjJh?= =?utf-8?B?ckRRS3ZJbU52a0p1Q0Z3L01zaW51RytXYmprUzRWZmszTWtvclprMklkWTNO?= =?utf-8?B?Y0VRU2xaYnFuTVpBYjZzcnhaUkdMWG82bzVlQVdMYlRZWFU4ZmZBeDk4SEhX?= =?utf-8?B?R2p6U1ZUeEpIL3I1M3ZxQ052RHd3bnQ4S1FOVjRuVUpSNGpGSlkwS2lWRkNx?= =?utf-8?B?M0czZmwzNjE5ZU1HdEpsa0I2THNqc1NOTXdhamIxV1J2S0l4S2RaQzd6Q2Rz?= =?utf-8?B?WmhzOXVpTmVMMjZjZ0dhWGFSUW9IZWNINy9EeWFTV0JVcG8wbE51S0s0bnFW?= =?utf-8?B?Q25QWDBQZXhOL0VWYThCM1BLZU5pWjlISFF1SnpRNWJ5NHNtTm9iZUlTL3VD?= =?utf-8?B?blRicEhmRlVmOHZtM0pzOFBCeE05aitCU1dOUjBwVTFOcFU0MzZ6eXZvQlBH?= =?utf-8?B?ckVsbzVGbHVIbEpBRTd6RStJaEw4MDZYQjJSMFlnVTRrTW5QZnpSZGUwVUlQ?= =?utf-8?B?ckVPU2RNRVlubnk0NmlwSjBMNCt1RkdvVUhiZ1VmN2hveXV0dWhIbFhSREJs?= =?utf-8?B?L2d2OE5ESjFUNTdyQS9iZkEwSmo2U3BJZ2hydHhmY1JMNVk1YnZFaFVKM2xy?= =?utf-8?B?ZWdNTTdmd1VkQkJaK05zTDdvZGhDZWFaRGlsZXU3cXVyQ3I4c3FBS0N4ZC9L?= =?utf-8?B?TURsYUl6VitubkZ3ZjgySVNYSDVDbkdwLzBuNGtJUy9aSVRzRHBhNHdzOXBX?= =?utf-8?B?OUVIRjc2T2NRN25rMURQa0NYeHd0b1RWUy9CK21SYUswMUMwRUNualJ1dVBB?= =?utf-8?B?bFRkclBVSG1lcWU2NHVDRWRvM3hyNlE2Tk5uTWY1Qk1aSWZRYnpHS0tJTk0w?= =?utf-8?B?RHZ5S3J0ajM1LzVFS05oWGEvRjhXMGVvZGF6V2NDTWNyaDUxV3ZDbXZqcU8x?= =?utf-8?B?aHFtWHRQdWYzSjI2cXVSYXQwUWNpMlUwbzhxclRPVjN4WWx2Ukllcjhrb3ZK?= =?utf-8?B?S005Q0lBeEZKM1NucWhRZUo0aEoxMXU1ZE96RURvNkI4NWRWL2xjRGYzUDh5?= =?utf-8?B?bXJtUjVKc28zQXI3YnlTVmY5RC8zSVBORk1PRVVMZFU4QytOejhYanpTUGJu?= =?utf-8?Q?I+Ijb6um1IS7O/Orn4cgQFSPTyBSACY/vsoAEW7Rts=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BN9PR12MB5366.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6ea0bd44-bc8d-43c5-65e4-08d9e171c159 X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Jan 2022 08:48:14.0114 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: cLraF3ZFZFN78W+NpHFRomB0VLZ5cfSNiyEKoAQwc2zW78ZOCVolGxYe8w6CttgV97T1D2xLyCOUl6ZsVktqWg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB3354 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 T24gV2VkLCAyMDIyLTAxLTI2IGF0IDExOjAzICswMTAwLCBNYXhpbWUgQ29xdWVsaW4gd3JvdGU6 DQo+IEhpIFh1ZW1pbmcsDQo+IA0KPiBPbiAxMS8zLzIxIDE0OjQ5LCBNYXhpbWUgQ29xdWVsaW4g d3JvdGU6DQo+ID4gDQo+ID4gDQo+ID4gT24gMTEvMy8yMSAxNDo0NSwgWHVlbWluZyhTdGV2ZW4p IExpIHdyb3RlOg0KPiA+ID4gT24gV2VkLCAyMDIxLTExLTAzIGF0IDA5OjQ2ICswMTAwLCBNYXhp bWUgQ29xdWVsaW4gd3JvdGU6DQo+ID4gPiA+IA0KPiA+ID4gPiBPbiAxMS8zLzIxIDA5OjQxLCBY aWEsIENoZW5ibyB3cm90ZToNCj4gPiA+ID4gPiBIaSBYdWVtaW5nLA0KPiA+ID4gPiA+IA0KPiA+ ID4gPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+ID4gPiA+IEZyb206IFh1 ZW1pbmcoU3RldmVuKSBMaSA8eHVlbWluZ2xAbnZpZGlhLmNvbT4NCj4gPiA+ID4gPiA+IFNlbnQ6 IFRodXJzZGF5LCBPY3RvYmVyIDIxLCAyMDIxIDg6MzYgUE0NCj4gPiA+ID4gPiA+IFRvOiBtYXhp bWUuY29xdWVsaW5AcmVkaGF0LmNvbTsgZGV2QGRwZGsub3JnDQo+ID4gPiA+ID4gPiBDYzogWGlh LCBDaGVuYm8gPGNoZW5iby54aWFAaW50ZWwuY29tPg0KPiA+ID4gPiA+ID4gU3ViamVjdDogUmU6 IFtQQVRDSF0gdmhvc3Q6IGFkZCB2RFBBIHJlc291cmNlIGNsZWFudXAgY2FsbGJhY2sNCj4gPiA+ ID4gPiA+IA0KPiA+ID4gPiA+ID4gT24gVGh1LCAyMDIxLTEwLTIxIGF0IDE0OjAwICswMjAwLCBN YXhpbWUgQ29xdWVsaW4gd3JvdGU6DQo+ID4gPiA+ID4gPiA+IEhpIFh1ZW1pbmcsDQo+ID4gPiA+ ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiBPbiAxMC8xOS8yMSAxMzozOSwgWHVlbWluZyBMaSB3cm90 ZToNCj4gPiA+ID4gPiA+ID4gPiBUaGlzIHBhdGNoIGFkZHMgdkRQQSBkZXZpY2UgY2xlYW51cCBj YWxsYmFjayB0byByZWxlYXNlIHJlc291cmNlcyBvbg0KPiA+ID4gPiA+ID4gPiA+IHZob3N0IHVz ZXIgY29ubmVjdGlvbiBjbG9zZS4NCj4gPiA+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gPiBT aWduZWQtb2ZmLWJ5OiBYdWVtaW5nIExpIDx4dWVtaW5nbEBudmlkaWEuY29tPg0KPiA+ID4gPiA+ ID4gPiA+IC0tLQ0KPiA+ID4gPiA+ID4gPiA+IMKgwqDCoCBsaWIvdmhvc3QvcnRlX3ZkcGFfZGV2 LmggfCAzICsrKw0KPiA+ID4gPiA+ID4gPiA+IMKgwqDCoCBsaWIvdmhvc3Qvdmhvc3RfdXNlci5j wqDCoCB8IDYgKysrKysrDQo+ID4gPiA+ID4gPiA+ID4gwqDCoMKgIDIgZmlsZXMgY2hhbmdlZCwg OSBpbnNlcnRpb25zKCspDQo+ID4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+ID4gZGlmZiAt LWdpdCBhL2xpYi92aG9zdC9ydGVfdmRwYV9kZXYuaCBiL2xpYi92aG9zdC9ydGVfdmRwYV9kZXYu aA0KPiA+ID4gPiA+ID4gPiA+IGluZGV4IGIwZjQ5NDgxNWZhLi4yNzExMDA0ZmUwNSAxMDA2NDQN Cj4gPiA+ID4gPiA+ID4gPiAtLS0gYS9saWIvdmhvc3QvcnRlX3ZkcGFfZGV2LmgNCj4gPiA+ID4g PiA+ID4gPiArKysgYi9saWIvdmhvc3QvcnRlX3ZkcGFfZGV2LmgNCj4gPiA+ID4gPiA+ID4gPiBA QCAtMzIsNiArMzIsOSBAQCBzdHJ1Y3QgcnRlX3ZkcGFfZGV2X29wcyB7DQo+ID4gPiA+ID4gPiA+ ID4gwqDCoMKgwqDCoMKgwqAgLyoqIERyaXZlciBjbG9zZSB0aGUgZGV2aWNlIChNYW5kYXRvcnkp ICovDQo+ID4gPiA+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqAgaW50ICgqZGV2X2Nsb3NlKShpbnQg dmlkKTsNCj4gPiA+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgIC8qKiBDb25u ZWN0aW9uIGNsb3NlZCwgY2xlYW4gdXAgcmVzb3VyY2VzICovDQo+ID4gPiA+ID4gPiA+ID4gK8Kg wqDCoCBpbnQgKCpkZXZfY2xlYW51cCkoaW50IHZpZCk7DQo+ID4gPiA+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgIC8qKiBFbmFibGUvZGlzYWJsZSB0aGlzIHZyaW5n IChNYW5kYXRvcnkpICovDQo+ID4gPiA+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqAgaW50ICgqc2V0 X3ZyaW5nX3N0YXRlKShpbnQgdmlkLCBpbnQgdnJpbmcsIGludCBzdGF0ZSk7DQo+ID4gPiA+ID4g PiA+ID4gDQo+ID4gPiA+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2xpYi92aG9zdC92aG9zdF91c2Vy LmMgYi9saWIvdmhvc3Qvdmhvc3RfdXNlci5jDQo+ID4gPiA+ID4gPiA+ID4gaW5kZXggNWE4OTRj YTBjYzcuLjAzMmI2MjFjODZjIDEwMDY0NA0KPiA+ID4gPiA+ID4gPiA+IC0tLSBhL2xpYi92aG9z dC92aG9zdF91c2VyLmMNCj4gPiA+ID4gPiA+ID4gPiArKysgYi9saWIvdmhvc3Qvdmhvc3RfdXNl ci5jDQo+ID4gPiA+ID4gPiA+ID4gQEAgLTE2Miw2ICsxNjIsMTIgQEAgZnJlZV9tZW1fcmVnaW9u KHN0cnVjdCB2aXJ0aW9fbmV0ICpkZXYpDQo+ID4gPiA+ID4gPiA+ID4gwqDCoMKgIHZvaWQNCj4g PiA+ID4gPiA+ID4gPiDCoMKgwqAgdmhvc3RfYmFja2VuZF9jbGVhbnVwKHN0cnVjdCB2aXJ0aW9f bmV0ICpkZXYpDQo+ID4gPiA+ID4gPiA+ID4gwqDCoMKgIHsNCj4gPiA+ID4gPiA+ID4gPiArwqDC oMKgIHN0cnVjdCBydGVfdmRwYV9kZXZpY2UgKnZkcGFfZGV2Ow0KPiA+ID4gPiA+ID4gPiA+ICsN Cj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgIHZkcGFfZGV2ID0gZGV2LT52ZHBhX2RldjsNCj4gPiA+ ID4gPiA+ID4gPiArwqDCoMKgIGlmICh2ZHBhX2RldiAmJiB2ZHBhX2Rldi0+b3BzLT5kZXZfY2xl YW51cCAhPSBOVUxMKQ0KPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoCB2ZHBhX2Rldi0+ b3BzLT5kZXZfY2xlYW51cChkZXYtPnZpZCk7DQo+ID4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ ID4gPiA+IMKgwqDCoMKgwqDCoMKgIGlmIChkZXYtPm1lbSkgew0KPiA+ID4gPiA+ID4gPiA+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgZnJlZV9tZW1fcmVnaW9uKGRldik7DQo+ID4gPiA+ID4gPiA+ ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBydGVfZnJlZShkZXYtPm1lbSk7DQo+ID4gPiA+ID4g PiA+ID4gDQo+ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiBXaGF0IHdpbGwgYmUgZG9uZSB0 aGVyZSB0aGF0IGNhbm5vdCBiZSBkb25lIGluIC5kZXZfY2xvc2UoKT8NCj4gPiA+ID4gPiA+IA0K PiA+ID4gPiA+ID4gLmRldl9jbG9zZSgpIG1haW5seSBoYW5kbGVzIFZNIHN1c3BlbmQgYW5kIGRy aXZlciByZXNldC4gSWYgcmVsZWFzZQ0KPiA+ID4gPiA+ID4gZXZlcnl0aGluZyBpbnNpZGUgZGV2 X2Nsb3NlKCksIHRoZSBzdXNwZW5kIGFuZCByZXN1bWUgdGFrZXMgbG9uZ2VyIA0KPiA+ID4gPiA+ ID4gdGltZQ0KPiA+ID4gPiA+ID4gaWYgbnVtYmVyIG9mIFZRcyBhcmUgaHVnZS4gQ3VzdG9tZXIg d2FudCB0byB1cGdyYWRlIFZNIGNvbmZpZ3VyYXRpb24NCj4gPiA+ID4gPiA+IHVzaW5nIHN1c3Bl bmQgYW5kIHJlc3VtZSwgcGF1c2UgY3VzdG9tZXIgVk0gdG9vIGxvbmcgY2FuJ3QgYmUgDQo+ID4g PiA+ID4gPiBhY2NlcHRlZC4NCj4gPiA+ID4gPiANCj4gPiA+ID4gPiBCeSBzYXlpbmcgJ3VwZ3Jh ZGUgVk0gY29uZmlndXJhdGlvbicsIGRvIHlvdSBtZWFuIFZNIG1lbW9yeSBob3RwbHVnPyANCj4g PiA+ID4gPiBPciBzb21ldGhpbmcNCj4gPiA+ID4gPiBtb3JlPw0KPiA+ID4gPiA+IA0KPiA+ID4g PiA+IElzIHRoaXMgcGF0Y2ggYSBuZXh0LXN0ZXAgaW1wcm92ZW1lbnQgb2YgdGhpcyBjb21taXQ/ DQo+ID4gPiA+ID4gDQo+ID4gPiA+ID4gY29tbWl0IDEyN2Y5YzZmN2I3OGE0N2I3M2IzZTFjMzll MDIxY2M4MWEzMGI0YzkNCj4gPiA+ID4gPiBBdXRob3I6IE1hdGFuIEF6cmFkIDxtYXRhbkBtZWxs YW5veC5jb20+DQo+ID4gPiA+ID4gRGF0ZTrCoMKgIE1vbiBKdW4gMjkgMTQ6MDg6MTkgMjAyMCAr MDAwMA0KPiA+ID4gPiA+IA0KPiA+ID4gPiA+IMKgwqDCoMKgwqAgdmhvc3Q6IGhhbmRsZSBtZW1v cnkgaG90cGx1ZyB3aXRoIHZEUEEgZGV2aWNlcw0KPiA+ID4gPiA+IA0KPiA+ID4gPiA+IMKgwqDC oMKgwqAgU29tZSB2RFBBIGRyaXZlcnMnIGJhc2ljIGNvbmZpZ3VyYXRpb25zIHNob3VsZCBiZSB1 cGRhdGVkIHdoZW4gDQo+ID4gPiA+ID4gdGhlDQo+ID4gPiA+ID4gwqDCoMKgwqDCoCBndWVzdCBt ZW1vcnkgaXMgaG90cGx1Z2dlZC4NCj4gPiA+ID4gPiANCj4gPiA+ID4gPiDCoMKgwqDCoMKgIENs b3NlIHZEUEEgZGV2aWNlIGJlZm9yZSBob3RwbHVnIG9wZXJhdGlvbiBhbmQgcmVjcmVhdGUgaXQg DQo+ID4gPiA+ID4gYWZ0ZXIgdGhlDQo+ID4gPiA+ID4gwqDCoMKgwqDCoCBob3RwbHVnIG9wZXJh dGlvbiBpcyBkb25lLg0KPiA+ID4gPiA+IA0KPiA+ID4gPiA+IMKgwqDCoMKgwqAgU2lnbmVkLW9m Zi1ieTogTWF0YW4gQXpyYWQgPG1hdGFuQG1lbGxhbm94LmNvbT4NCj4gPiA+ID4gPiDCoMKgwqDC oMKgIFJldmlld2VkLWJ5OiBNYXhpbWUgQ29xdWVsaW4gPG1heGltZS5jb3F1ZWxpbkByZWRoYXQu Y29tPg0KPiA+ID4gPiA+IMKgwqDCoMKgwqAgUmV2aWV3ZWQtYnk6IENoZW5ibyBYaWEgPGNoZW5i by54aWFAaW50ZWwuY29tPg0KPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gU28gdGhlIGlkZWEgaXMg dG8gY2FjaGUgYW5kIHJldXNlIHJlc291cmNlIGJldHdlZW4gZGV2X2Nsb3NlKCkgYW5kDQo+ID4g PiA+ID4gPiBkZXZfY29uZigpLiBBY3R1YWxseSwgdGhlIHR3byBmdW5jdGlvbnMgbG9va3MgbW9y ZSBsaWtlIGRldl9zdG9wKCkgYW5kDQo+ID4gPiA+ID4gPiBkZXZfc3RhcnQoKS4NCj4gPiA+ID4g PiA+IA0KPiA+ID4gPiA+ID4gZGV2X2NsZWFudXAgaG9va3MgdG8gdmhvc3QgYmFja2VuZCBjbGVh bnVwIHdoaWNoIGNhbGxlZCB3aGVuIHNvY2tldA0KPiA+ID4gPiA+ID4gY2xvc2VkIGZvciBib3Ro IGNsaWVudCBhbmQgc2VydmVyIG1vZGUsIGEgc2FmZSBwb2ludCB0byBjbGVhbnVwIGFsbA0KPiA+ ID4gPiA+ID4gY2FjaGVkIHJlc291cmNlcy4NCj4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiBI YXZpbmcgdGhlIG1seDUgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBjYWxsYmFjayBhbG9uZ3NpZGUg dGhpcyANCj4gPiA+ID4gPiA+ID4gcGF0Y2ggbWF5DQo+ID4gPiA+ID4gPiA+IGhlbHAgdG8gdW5k ZXJzdGFuZC4NCj4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gVGhlIG1seDUgaW1wbGVtZW50YXRp b24gc3RpbGwgYSBwcm90b3R5cGUsIHBlbmRpbmcgb24gaW50ZXJuYWwgcmV2aWV3Lg0KPiA+ID4g PiA+ID4gU28gSSBqdXN0IHBvc3QgdGhlIHZob3N0IHBhcnQgdG8gZ2V0IHN1Z2dlc3Rpb24vY29t bWVudC4gTGV0IG1lIA0KPiA+ID4gPiA+ID4ga25vdyBpZg0KPiA+ID4gPiA+ID4gdGhlIHVnbHkg Y29kZSBkb2VzIGhlbHAgOikNCj4gPiA+ID4gPiANCj4gPiA+ID4gPiBJIHdvdWxkIHByZWZlciB0 byBzZWUgdGhlIG1seCBpbXBsZW1lbnRhdGlvbiB3aXRoIHRoaXMgcGF0Y2ggaW4gdGhlIA0KPiA+ ID4gPiA+IHNhbWUNCj4gPiA+ID4gPiBwYXRjaHNldCB0byB1bmRlcnN0YW5kIHRoZSBwcm9ibGVt LiBBIG5ldyBjYWxsYmFjayBpcyBmaW5lIGlmIHRoZSANCj4gPiA+ID4gPiBwcm9ibGVtDQo+ID4g PiA+ID4gaXRzZWxmIG1ha2VzIHNlbnNlIDopDQo+ID4gPiA+IA0KPiA+ID4gPiBGWUksIEknbSBh Ym91dCB0byBhcHBseSBhIHBhdGNoIHRoYXQgbWFya3MgdGhlIHZEUEEgZHJpdmVyIEFQSSBhcw0K PiA+ID4gPiBpbnRlcm5hbCwgd2hlbiB5b3Ugd2lsbCBzdWJtaXQgYSBuZXcgdmVyc2lvbiBwbGVh c2UgYXBwbHkgb24gdG9wIG9mIGl0Lg0KPiA+ID4gDQo+ID4gPiBIYXZlbid0IGNoZWNrIHlvdXIg cGF0Y2ggeWV0LCBidXQgc291bmRzIGdvb2QgZm9ybSBzdWJqZWN0IDopDQo+ID4gDQo+ID4gVGhl IGJyYW5jaCBpcyBub3cgcmVhZHksIHlvdSBjYW4gcmViYXNlIHlvdXIgcGF0Y2ggb24gdG9wIG9m IGl0Og0KPiA+IGdpdDovL2RwZGsub3JnL25leHQvZHBkay1uZXh0LXZpcnRpbyBtYWluDQo+IA0K PiBDb3VsZCB5b3UgcGxlYXNlIHJlYmFzZSB5b3VyIHBhdGNoIGlmIHlvdSB3YW50IGl0IGluIHYy Mi4wMz8NCg0KVGhhbmtzIGZvciByZW1pbmRpbmcsIG5ldyB2ZXJzaW9uIHNlbnQuDQpNbHg1IFBN RCBzdGlsbCBXSVAuDQoNCj4gDQo+IFRoYW5rcyENCj4gTWF4aW1lDQo+IA0KPiA+IE1heGltZQ0K PiA+IA0KPiA+ID4gPiANCj4gPiA+ID4gVGhhbmtzLA0KPiA+ID4gPiBNYXhpbWUNCj4gPiA+ID4g DQo+ID4gPiA+ID4gVGhhbmtzLA0KPiA+ID4gPiA+IENoZW5ibw0KPiA+ID4gPiA+IA0KPiA+ID4g PiA+ID4gDQo+ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiBUaGFua3MsDQo+ID4gPiA+ID4g PiA+IE1heGltZQ0KPiA+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiANCj4gPiA+ID4gDQo+ID4gPiAN Cj4gDQoNCg==