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 0F8DCA04FF; Wed, 23 Mar 2022 10:31:38 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id F1219427F6; Wed, 23 Mar 2022 10:31:37 +0100 (CET) Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by mails.dpdk.org (Postfix) with ESMTP id E5A4B41140 for ; Wed, 23 Mar 2022 10:31:36 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1648027897; x=1679563897; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=kZf0hHVreWjTAlu8G4zO/yVMfSsJY54BqSwSGVCO0hQ=; b=fR7BLr6gBYRLsgGVbmty4M0iYxzlWkzkBhC5XS1gCdMLWwsOXpOyvlS8 HyEOyvQ2eS0NdUwGHvgNt3VZCXGXOS5oXAXEIaHjOc02/i5FYn3WohOLu JrKfzesbErGOFBFHIA2ezz+hNULAwgvz2W65Ti1XCQNzLDzoYkHa+0wDF SVyZQeBLHO/O1CU9eapTg3VzwmwJxzZ7FqXXe2Q/oRB9O8AJvUOVoUtid VPf/Wm3t9a2VOwyHm/xaZWzSbUf+X5V29EfdVwcDPI3a7i6TCxBCzmOvj 6Ns0bXe2HRaywbaTzEPu09oqg5b7nJQiJLNepQjbOLDfd26a0fD9cy1nu Q==; X-IronPort-AV: E=McAfee;i="6200,9189,10294"; a="321264444" X-IronPort-AV: E=Sophos;i="5.90,203,1643702400"; d="scan'208";a="321264444" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Mar 2022 02:31:35 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.90,203,1643702400"; d="scan'208";a="544117508" Received: from fmsmsx606.amr.corp.intel.com ([10.18.126.86]) by orsmga007.jf.intel.com with ESMTP; 23 Mar 2022 02:31:35 -0700 Received: from shsmsx605.ccr.corp.intel.com (10.109.6.215) by fmsmsx606.amr.corp.intel.com (10.18.126.86) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Wed, 23 Mar 2022 02:31:34 -0700 Received: from shsmsx601.ccr.corp.intel.com (10.109.6.141) by SHSMSX605.ccr.corp.intel.com (10.109.6.215) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.21; Wed, 23 Mar 2022 17:31:27 +0800 Received: from shsmsx601.ccr.corp.intel.com ([10.109.6.141]) by SHSMSX601.ccr.corp.intel.com ([10.109.6.141]) with mapi id 15.01.2308.021; Wed, 23 Mar 2022 17:31:27 +0800 From: "Pei, Andy" To: Maxime Coquelin , "dev@dpdk.org" CC: "Xia, Chenbo" , "Cao, Gang" , "Liu, Changpeng" Subject: RE: [PATCH v3 06/15] example/vdpa:add vdpa blk support in example Thread-Topic: [PATCH v3 06/15] example/vdpa:add vdpa blk support in example Thread-Index: AQHYPeAuLlbaJsht1ECMJMDIJmjM2qzMtXQw Date: Wed, 23 Mar 2022 09:31:27 +0000 Message-ID: References: <1643093258-47258-2-git-send-email-andy.pei@intel.com> <1643425417-215270-1-git-send-email-andy.pei@intel.com> <1643425417-215270-7-git-send-email-andy.pei@intel.com> <4924bf97-80da-0ff6-0870-a129b0744225@redhat.com> In-Reply-To: <4924bf97-80da-0ff6-0870-a129b0744225@redhat.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.6.401.20 dlp-reaction: no-action x-originating-ip: [10.239.127.36] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 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 SGkgTWF4aW1lLA0KDQpJIHNlZW1zIGEgbG90IG9mIHByb2JsZW0gd2l0aCB0aGUgZXhhbXBsZS4N CkkgdGhpbmsgSSB3aWxsIHJlLXdvcmsgdGhlIGV4YW1wbGUgYWNjb3JkaW5nIHRvIHlvdXIgY29t bWVudHMuDQpUaGFua3MgZm9yIHlvdXIgY29tbWVudHMuDQoNCi0tLS0tT3JpZ2luYWwgTWVzc2Fn ZS0tLS0tDQpGcm9tOiBNYXhpbWUgQ29xdWVsaW4gPG1heGltZS5jb3F1ZWxpbkByZWRoYXQuY29t PiANClNlbnQ6IFR1ZXNkYXksIE1hcmNoIDIyLCAyMDIyIDc6MzAgUE0NClRvOiBQZWksIEFuZHkg PGFuZHkucGVpQGludGVsLmNvbT47IGRldkBkcGRrLm9yZw0KQ2M6IFhpYSwgQ2hlbmJvIDxjaGVu Ym8ueGlhQGludGVsLmNvbT47IENhbywgR2FuZyA8Z2FuZy5jYW9AaW50ZWwuY29tPjsgTGl1LCBD aGFuZ3BlbmcgPGNoYW5ncGVuZy5saXVAaW50ZWwuY29tPg0KU3ViamVjdDogUmU6IFtQQVRDSCB2 MyAwNi8xNV0gZXhhbXBsZS92ZHBhOmFkZCB2ZHBhIGJsayBzdXBwb3J0IGluIGV4YW1wbGUNCg0K DQoNCk9uIDEvMjkvMjIgMDQ6MDMsIEFuZHkgUGVpIHdyb3RlOg0KPiBBZGQgdmlydGlvIGJsayBk ZXZpY2Ugc3VwcG9ydCB0byB2ZHBhIGV4YW1wbGUuDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBBbmR5 IFBlaSA8YW5keS5wZWlAaW50ZWwuY29tPg0KPiAtLS0NCj4gICBleGFtcGxlcy92ZHBhL01ha2Vm aWxlICAgICAgICAgICB8ICAgMiArLQ0KPiAgIGV4YW1wbGVzL3ZkcGEvbWFpbi5jICAgICAgICAg ICAgIHwgICA4ICsrDQo+ICAgZXhhbXBsZXMvdmRwYS9tZXNvbi5idWlsZCAgICAgICAgfCAgIDEg Kw0KPiAgIGV4YW1wbGVzL3ZkcGEvdmRwYV9ibGtfY29tcGFjdC5jIHwgMTUwICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysNCj4gICBleGFtcGxlcy92ZHBhL3ZkcGFfYmxrX2NvbXBhY3Qu aCB8IDExNyArKysrKysrKysrKysrKysrKysrKysrKysNCj4gICBleGFtcGxlcy92ZHBhL3Zob3N0 X3VzZXIuaCAgICAgICB8IDE4OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysNCj4gICA2IGZpbGVzIGNoYW5nZWQsIDQ2NiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0p DQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGV4YW1wbGVzL3ZkcGEvdmRwYV9ibGtfY29tcGFjdC5j DQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGV4YW1wbGVzL3ZkcGEvdmRwYV9ibGtfY29tcGFjdC5o DQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGV4YW1wbGVzL3ZkcGEvdmhvc3RfdXNlci5oDQo+IA0K PiBkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvdmRwYS9NYWtlZmlsZSBiL2V4YW1wbGVzL3ZkcGEvTWFr ZWZpbGUgaW5kZXggDQo+IGQ5NzRkYjQuLjlkMDQ3OWIgMTAwNjQ0DQo+IC0tLSBhL2V4YW1wbGVz L3ZkcGEvTWFrZWZpbGUNCj4gKysrIGIvZXhhbXBsZXMvdmRwYS9NYWtlZmlsZQ0KPiBAQCAtNSw3 ICs1LDcgQEANCj4gICBBUFAgPSB2ZHBhDQo+ICAgDQo+ICAgIyBhbGwgc291cmNlIGFyZSBzdG9y ZWQgaW4gU1JDUy15DQo+IC1TUkNTLXkgOj0gbWFpbi5jDQo+ICtTUkNTLXkgOj0gbWFpbi5jIHZk cGFfYmxrX2NvbXBhY3QuYw0KPiAgIENGTEFHUyArPSAtREFMTE9XX0VYUEVSSU1FTlRBTF9BUEkN Cj4gICANCj4gICBQS0dDT05GID89IHBrZy1jb25maWcNCj4gZGlmZiAtLWdpdCBhL2V4YW1wbGVz L3ZkcGEvbWFpbi5jIGIvZXhhbXBsZXMvdmRwYS9tYWluLmMgaW5kZXggDQo+IDVhYjA3NjUuLjky NGFkN2IgMTAwNjQ0DQo+IC0tLSBhL2V4YW1wbGVzL3ZkcGEvbWFpbi5jDQo+ICsrKyBiL2V4YW1w bGVzL3ZkcGEvbWFpbi5jDQo+IEBAIC0yMCw2ICsyMCw3IEBADQo+ICAgI2luY2x1ZGUgPGNtZGxp bmVfcGFyc2Vfc3RyaW5nLmg+DQo+ICAgI2luY2x1ZGUgPGNtZGxpbmVfcGFyc2VfbnVtLmg+DQo+ ICAgI2luY2x1ZGUgPGNtZGxpbmUuaD4NCj4gKyNpbmNsdWRlICJ2ZHBhX2Jsa19jb21wYWN0Lmgi DQo+ICAgDQo+ICAgI2RlZmluZSBNQVhfUEFUSF9MRU4gMTI4DQo+ICAgI2RlZmluZSBNQVhfVkRQ QV9TQU1QTEVfUE9SVFMgMTAyNA0KPiBAQCAtMTU2LDYgKzE1Nyw3IEBAIHN0cnVjdCB2ZHBhX3Bv cnQgew0KPiAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRlX3Zob3N0X2RldmljZV9vcHMgdmRwYV9z YW1wbGVfZGV2b3BzID0gew0KPiAgIAkubmV3X2RldmljZSA9IG5ld19kZXZpY2UsDQo+ICAgCS5k ZXN0cm95X2RldmljZSA9IGRlc3Ryb3lfZGV2aWNlLA0KPiArCS5uZXdfY29ubmVjdGlvbiA9IHJ0 ZV92aG9zdF9ibGtfc2Vzc2lvbl9pbnN0YWxsX3J0ZV9jb21wYXRfaG9va3MsDQo+ICAgfTsNCj4g ICANCj4gICBzdGF0aWMgaW50DQo+IEBAIC0xOTIsNiArMTk0LDEyIEBAIHN0cnVjdCB2ZHBhX3Bv cnQgew0KPiAgIAkJCSJhdHRhY2ggdmRwYSBkZXZpY2UgZmFpbGVkOiAlc1xuIiwNCj4gICAJCQlz b2NrZXRfcGF0aCk7DQo+ICAgDQo+ICsJaWYgKHZkcGFfYmxrX2RldmljZV9zZXRfZmVhdHVyZXNf YW5kX3Byb3RvY29sKHNvY2tldF9wYXRoLCB2cG9ydC0+ZGV2KQ0KPiArCQk8IDApDQo+ICsJCXJ0 ZV9leGl0KEVYSVRfRkFJTFVSRSwNCj4gKwkJCSJzZXQgdmhvc3QgYmxrIGRyaXZlciBmZWF0dXJl cyBhbmQgcHJvdG9jb2wgZmVhdHVyZXMgZmFpbGVkOiAlc1xuIiwNCj4gKwkJCXNvY2tldF9wYXRo KTsNCj4gKw0KDQpUaGF0IGRvZXMgbm90IGxvb2sgcmlnaHQsIGJsayBkZXZpY2VzIHNwZWNpdGlj IGZ1bmN0aW9ucyBzaHVvbGQgYmUgY2FsbGVkIG9ubHkgZm9yIGJsb2NrIGRldmljZXMuDQoNCj4g ICAJaWYgKHJ0ZV92aG9zdF9kcml2ZXJfc3RhcnQoc29ja2V0X3BhdGgpIDwgMCkNCj4gICAJCXJ0 ZV9leGl0KEVYSVRfRkFJTFVSRSwNCj4gICAJCQkic3RhcnQgdmhvc3QgZHJpdmVyIGZhaWxlZDog JXNcbiIsIGRpZmYgLS1naXQgDQo+IGEvZXhhbXBsZXMvdmRwYS9tZXNvbi5idWlsZCBiL2V4YW1w bGVzL3ZkcGEvbWVzb24uYnVpbGQgaW5kZXggDQo+IGJkMDg2MDUuLmYwZDExMWMgMTAwNjQ0DQo+ IC0tLSBhL2V4YW1wbGVzL3ZkcGEvbWVzb24uYnVpbGQNCj4gKysrIGIvZXhhbXBsZXMvdmRwYS9t ZXNvbi5idWlsZA0KPiBAQCAtMTUsNCArMTUsNSBAQCBkZXBzICs9ICd2aG9zdCcNCj4gICBhbGxv d19leHBlcmltZW50YWxfYXBpcyA9IHRydWUNCj4gICBzb3VyY2VzID0gZmlsZXMoDQo+ICAgICAg ICAgICAnbWFpbi5jJywNCj4gKwkndmRwYV9ibGtfY29tcGFjdC5jJywNCj4gICApDQo+IGRpZmYg LS1naXQgYS9leGFtcGxlcy92ZHBhL3ZkcGFfYmxrX2NvbXBhY3QuYyANCj4gYi9leGFtcGxlcy92 ZHBhL3ZkcGFfYmxrX2NvbXBhY3QuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAw MDAwMDAwLi4wYzRkM2VlDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvZXhhbXBsZXMvdmRwYS92 ZHBhX2Jsa19jb21wYWN0LmMNCj4gQEAgLTAsMCArMSwxNTAgQEANCj4gKy8qICAgIElOVEVMIENP TkZJREVOVElBTA0KPiArICoNCj4gKyAqICAgIENvcHlyaWdodCAoYykgSW50ZWwgQ29ycG9yYXRp b24uDQo+ICsgKiAgICBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArICoNCj4gKyAqICAgIFRoZSBz b3VyY2UgY29kZSBjb250YWluZWQgb3IgZGVzY3JpYmVkIGhlcmVpbiBhbmQgYWxsIGRvY3VtZW50 cyByZWxhdGVkDQo+ICsgKiAgICB0byB0aGUgc291cmNlIGNvZGUgKCJNYXRlcmlhbCIpIGFyZSBv d25lZCBieSBJbnRlbCBDb3Jwb3JhdGlvbiBvciBpdHMNCj4gKyAqICAgIHN1cHBsaWVycyBvciBs aWNlbnNvcnMuICBUaXRsZSB0byB0aGUgTWF0ZXJpYWwgcmVtYWlucyB3aXRoIEludGVsDQo+ICsg KiAgICBDb3Jwb3JhdGlvbiBvciBpdHMgc3VwcGxpZXJzIGFuZCBsaWNlbnNvcnMuICBUaGUgTWF0 ZXJpYWwgY29udGFpbnMgdHJhZGUNCj4gKyAqICAgIHNlY3JldHMgYW5kIHByb3ByaWV0YXJ5IGFu ZCBjb25maWRlbnRpYWwgaW5mb3JtYXRpb24gb2YgSW50ZWwgb3IgaXRzDQo+ICsgKiAgICBzdXBw bGllcnMgYW5kIGxpY2Vuc29ycy4gIFRoZSBNYXRlcmlhbCBpcyBwcm90ZWN0ZWQgYnkgd29ybGR3 aWRlDQo+ICsgKiAgICBjb3B5cmlnaHQgYW5kIHRyYWRlIHNlY3JldCBsYXdzIGFuZCB0cmVhdHkg cHJvdmlzaW9ucy4gIE5vIHBhcnQgb2YgdGhlDQo+ICsgKiAgICBNYXRlcmlhbCBtYXkgYmUgdXNl ZCwgY29waWVkLCByZXByb2R1Y2VkLCBtb2RpZmllZCwgcHVibGlzaGVkLCB1cGxvYWRlZCwNCj4g KyAqICAgIHBvc3RlZCwgdHJhbnNtaXR0ZWQsIGRpc3RyaWJ1dGVkLCBvciBkaXNjbG9zZWQgaW4g YW55IHdheSB3aXRob3V0IEludGVsJ3MNCj4gKyAqICAgIHByaW9yIGV4cHJlc3Mgd3JpdHRlbiBw ZXJtaXNzaW9uLg0KPiArICoNCj4gKyAqICAgIE5vIGxpY2Vuc2UgdW5kZXIgYW55IHBhdGVudCwg Y29weXJpZ2h0LCB0cmFkZSBzZWNyZXQgb3Igb3RoZXINCj4gKyAqICAgIGludGVsbGVjdHVhbCBw cm9wZXJ0eSByaWdodCBpcyBncmFudGVkIHRvIG9yIGNvbmZlcnJlZCB1cG9uIHlvdSBieQ0KPiAr ICogICAgZGlzY2xvc3VyZSBvciBkZWxpdmVyeSBvZiB0aGUgTWF0ZXJpYWxzLCBlaXRoZXIgZXhw cmVzc2x5LCBieQ0KPiArICogICAgaW1wbGljYXRpb24sIGluZHVjZW1lbnQsIGVzdG9wcGVsIG9y IG90aGVyd2lzZS4gIEFueSBsaWNlbnNlIHVuZGVyIHN1Y2gNCj4gKyAqICAgIGludGVsbGVjdHVh bCBwcm9wZXJ0eSByaWdodHMgbXVzdCBiZSBleHByZXNzIGFuZCBhcHByb3ZlZCBieSBJbnRlbCBp bg0KPiArICogICAgd3JpdGluZy4NCj4gKyAqLw0KPiArDQo+ICsvKiBAZmlsZQ0KPiArICoNCj4g KyAqIEJsb2NrIGRldmljZSBzcGVjaWZpYyB2aG9zdCBsaWINCj4gKyAqLw0KPiArDQo+ICsjaW5j bHVkZSA8c3RkYm9vbC5oPg0KPiArDQo+ICsjaW5jbHVkZSA8cnRlX21hbGxvYy5oPg0KPiArI2lu Y2x1ZGUgPHZkcGFfZHJpdmVyLmg+DQoNClRoYXQncyB3cm9uZywgdGhlIGFwcGxpY2F0aW9uIGlz IG5vdCBzdXBwb3NlZCB0byBpbmNsdWRlIHRoZSBkcml2ZXIgQVBJcy4NCg0KPiArI2luY2x1ZGUg PHJ0ZV92aG9zdC5oPg0KPiArI2luY2x1ZGUgInZkcGFfYmxrX2NvbXBhY3QuaCINCj4gKyNpbmNs dWRlICJ2aG9zdF91c2VyLmgiDQo+ICsNCj4gKyNkZWZpbmUgVkhPU1RfVVNFUl9HRVRfQ09ORklH CTI0DQo+ICsjZGVmaW5lIFZIT1NUX1VTRVJfU0VUX0NPTkZJRwkyNQ0KPiArDQo+ICsjaWZuZGVm IFZIT1NUX1VTRVJfUFJPVE9DT0xfRl9DT05GSUcNCj4gKyNkZWZpbmUgVkhPU1RfVVNFUl9QUk9U T0NPTF9GX0NPTkZJRyAgIDkNCj4gKyNlbmRpZg0KPiArDQo+ICsvKg0KPiArICogRnVuY3Rpb24g dG8gaGFuZGxlIHZob3N0IHVzZXIgYmxrIG1lc3NhZ2UgICovIHN0YXRpYyBlbnVtIA0KPiArcnRl X3Zob3N0X21zZ19yZXN1bHQgcnRlX3Zob3N0X2Jsa19leHRlcm5fdmhvc3RfcHJlX21zZ19oYW5k bGVyKGludCANCj4gK3ZpZCwgdm9pZCAqX21zZykgew0KPiArCXN0cnVjdCBWaG9zdFVzZXJNc2cg Km1zZyA9IF9tc2c7DQo+ICsJc3RydWN0IHJ0ZV92ZHBhX2RldmljZSAqdmRldiA9IE5VTEw7DQo+ ICsNCj4gKwl2ZGV2ID0gcnRlX3Zob3N0X2dldF92ZHBhX2RldmljZSh2aWQpOw0KPiArCWlmICh2 ZGV2ID09IE5VTEwpDQo+ICsJCXJldHVybiBSVEVfVkhPU1RfTVNHX1JFU1VMVF9FUlI7DQo+ICsN Cj4gKwlmcHJpbnRmKHN0ZGVyciwgIm1zZyBpcyAlZFxuIiwgbXNnLT5yZXF1ZXN0Lm1hc3Rlcik7 DQo+ICsJc3dpdGNoIChtc2ctPnJlcXVlc3QubWFzdGVyKSB7DQo+ICsJY2FzZSBWSE9TVF9VU0VS X0dFVF9DT05GSUc6IHsNCj4gKwkJaW50IHJjID0gMDsNCj4gKw0KPiArCQlmcHJpbnRmKHN0ZG91 dCwgInJlYWQgbWVzc2FnZSBWSE9TVF9VU0VSX0dFVF9DT05GSUdcbiIpOw0KPiArDQo+ICsJCWlm ICh2ZGV2LT5vcHMtPmdldF9jb25maWcpIHsNCj4gKwkJCWZwcmludGYoc3Rkb3V0LCAiZ2V0X2Nv bmZpZygpIGZ1bmN0aW9uIGlzIHZhbGlkIVxuIik7DQo+ICsJCQlyYyA9IHZkZXYtPm9wcy0+Z2V0 X2NvbmZpZyh2aWQsDQo+ICsJCQkJCQkgICBtc2ctPnBheWxvYWQuY2ZnLnJlZ2lvbiwNCj4gKwkJ CQkJCSAgIG1zZy0+cGF5bG9hZC5jZmcuc2l6ZSk7DQo+ICsJCQlpZiAocmMgIT0gMCkgew0KPiAr CQkJCW1zZy0+c2l6ZSA9IDA7DQo+ICsJCQkJZnByaW50ZihzdGRvdXQsICJnZXRfY29uZmlnKCkg cmV0dXJuIGVycm9yIVxuIik7DQo+ICsJCQl9DQo+ICsJCX0gZWxzZSB7DQo+ICsJCQlmcHJpbnRm KHN0ZG91dCwgImdldF9jb25maWcoKSBmdW5jdGlvbiBpcyBpbnZhbGlkIVxuIik7DQo+ICsJCX0N Cj4gKw0KPiArCQlyZXR1cm4gUlRFX1ZIT1NUX01TR19SRVNVTFRfUkVQTFk7DQo+ICsJfQ0KPiAr CWNhc2UgVkhPU1RfVVNFUl9TRVRfQ09ORklHOiB7DQo+ICsJCWludCByYyA9IDA7DQo+ICsNCj4g KwkJZnByaW50ZihzdGRvdXQsDQo+ICsJCQkicmVhZCBtZXNzYWdlIFZIT1NUX1VTRVJfU0VUX0NP TkZJR1xuIik7DQo+ICsNCj4gKwkJaWYgKHZkZXYtPm9wcy0+c2V0X2NvbmZpZykgew0KPiArCQkJ cmMgPSB2ZGV2LT5vcHMtPnNldF9jb25maWcodmlkLA0KPiArCQkJCW1zZy0+cGF5bG9hZC5jZmcu cmVnaW9uLA0KPiArCQkJCW1zZy0+cGF5bG9hZC5jZmcub2Zmc2V0LA0KPiArCQkJCW1zZy0+cGF5 bG9hZC5jZmcuc2l6ZSwNCj4gKwkJCQltc2ctPnBheWxvYWQuY2ZnLmZsYWdzKTsNCj4gKwkJfQ0K PiArDQo+ICsJCXJldHVybiByYyA9PSAwID8gUlRFX1ZIT1NUX01TR19SRVNVTFRfT0sgOiBSVEVf VkhPU1RfTVNHX1JFU1VMVF9FUlI7DQo+ICsJfQ0KPiArCWRlZmF1bHQ6DQo+ICsJCWJyZWFrOw0K PiArCX0NCj4gKw0KPiArCXJldHVybiBSVEVfVkhPU1RfTVNHX1JFU1VMVF9OT1RfSEFORExFRDsg fQ0KDQpJIHRoaW5rIGFib3ZlIG1lc3NhZ2UgaGFuZGxpbmcgc2hvdWxkIGJlIGRvbmUgaW4gdGhl IFZob3N0IGxpYnJhcnkgZGlyZWN0bHkuIFZIT1NUX1VTRVJfU0VUX0NPTkZJRyBhbmQgVkhPU1Rf VVNFUl9HRVRfQ09ORklHIGFyZSBub3Qgc3BlY2lmaWMgdG8gYmxrIGJhY2tlbmRzLCB0aGVzZSBh cmUgZ2VuZXJpYyBtZXNzYWdlcy4NCg0KPiArDQo+ICtzdHJ1Y3QgcnRlX3Zob3N0X3VzZXJfZXh0 ZXJuX29wcyBnX2Jsa19leHRlcm5fdmhvc3Rfb3BzID0gew0KPiArCS5wcmVfbXNnX2hhbmRsZSA9 IHJ0ZV92aG9zdF9ibGtfZXh0ZXJuX3Zob3N0X3ByZV9tc2dfaGFuZGxlciwNCj4gKwkucG9zdF9t c2dfaGFuZGxlID0gTlVMTCwNCj4gK307DQo+ICsNCj4gK2ludA0KPiArcnRlX3Zob3N0X2Jsa19z ZXNzaW9uX2luc3RhbGxfcnRlX2NvbXBhdF9ob29rcyhpbnQgdmlkKSB7DQo+ICsJaW50IHJjOw0K PiArDQo+ICsJcmMgPSBydGVfdmhvc3RfZXh0ZXJuX2NhbGxiYWNrX3JlZ2lzdGVyKHZpZCwNCj4g KwkJCQkJCSZnX2Jsa19leHRlcm5fdmhvc3Rfb3BzLA0KPiArCQkJCQkJTlVMTCk7DQo+ICsJaWYg KHJjICE9IDApIHsNCj4gKwkJZnByaW50ZihzdGRlcnIsICIlcygpIGZhaWxlZCBmb3IgdmlkID0g JWRcbiIsICBfX2Z1bmNfXywgdmlkKTsNCj4gKwkJcmV0dXJuIC0xOw0KPiArCX0NCj4gKwlmcHJp bnRmKHN0ZG91dCwgInJlZ2lzdGVyIGV4dGVybiB2aG9zdCBvcHMgb24gdmlkID0gJWRcbiIsIHZp ZCk7DQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gKw0KPiAraW50DQo+ICt2ZHBhX2Jsa19k ZXZpY2Vfc2V0X2ZlYXR1cmVzX2FuZF9wcm90b2NvbChjb25zdCBjaGFyICpwYXRoLA0KPiArCXN0 cnVjdCBydGVfdmRwYV9kZXZpY2UgKnZkZXYpDQo+ICt7DQo+ICsJdWludDY0X3QgcHJvdG9jb2xf ZmVhdHVyZXMgPSAwOw0KPiArDQo+ICsJaWYgKCF2ZGV2KSB7DQo+ICsJCWZwcmludGYoc3Rkb3V0 LCAidmRldiBpcyBOVUxMLlxuIik7DQo+ICsJCXJldHVybiAtRUlOVkFMOw0KPiArCX0NCj4gKw0K PiArCS8qIHZkcGEgbmV0IGRvZXMgbm90IGhhdmUgdGhlIGdldF9jb25maWcgKi8NCj4gKwlpZiAo IXZkZXYtPm9wcy0+Z2V0X2NvbmZpZykNCj4gKwkJcmV0dXJuIDA7DQoNClRoYXQncyBub3QgZ29v ZCwgYXMgSSBzYWlkIGVhcmxpZXIsIHRoZSBkcml2ZXJzIGNhbGxiYWNrIHNob3VsZCBub3QgYmUg dmlzaWJsZSB0byB0aGUgYXBwbGljYXRpb24uIE1heWJlIHRoZSBWRFBBIEFQSSBzaG91bGQgYmUg ZXh0ZW5kZWQgdG8gcmV0dXJuIHRoZSBkZXZpY2UgdHlwZSwgSSdtIG5vdCBzdXJlLCBidXQgYWNj ZXNzaW5nIHRoZSBkcml2ZXJzIG9wcyBpcyBwcm9oaWJpdGVkLg0KDQo+ICsJcnRlX3Zob3N0X2Ry aXZlcl9zZXRfZmVhdHVyZXMocGF0aCwgU1BES19WSE9TVF9CTEtfRkVBVFVSRVNfQkFTRSk7DQo+ ICsJcnRlX3Zob3N0X2RyaXZlcl9kaXNhYmxlX2ZlYXR1cmVzKHBhdGgsDQo+ICsJCVNQREtfVkhP U1RfQkxLX0RJU0FCTEVEX0ZFQVRVUkVTKTsNCj4gKw0KPiArCXJ0ZV92aG9zdF9kcml2ZXJfZ2V0 X3Byb3RvY29sX2ZlYXR1cmVzKHBhdGgsICZwcm90b2NvbF9mZWF0dXJlcyk7DQo+ICsJcHJvdG9j b2xfZmVhdHVyZXMgfD0gKDFVTEwgPDwgVkhPU1RfVVNFUl9QUk9UT0NPTF9GX0NPTkZJRyk7DQo+ ICsJcHJvdG9jb2xfZmVhdHVyZXMgfD0gKDFVTEwgPDwgVkhPU1RfVVNFUl9QUk9UT0NPTF9GX0xP R19TSE1GRCk7DQo+ICsJcnRlX3Zob3N0X2RyaXZlcl9zZXRfcHJvdG9jb2xfZmVhdHVyZXMocGF0 aCwgcHJvdG9jb2xfZmVhdHVyZXMpOw0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+IGRpZmYg LS1naXQgYS9leGFtcGxlcy92ZHBhL3ZkcGFfYmxrX2NvbXBhY3QuaCANCj4gYi9leGFtcGxlcy92 ZHBhL3ZkcGFfYmxrX2NvbXBhY3QuaA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAw MDAwMDAwLi40MjBkNDhlDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvZXhhbXBsZXMvdmRwYS92 ZHBhX2Jsa19jb21wYWN0LmgNCj4gQEAgLTAsMCArMSwxMTcgQEANCj4gKy8qICAgIElOVEVMIENP TkZJREVOVElBTA0KDQpJIGhvcGUgaXQgd2FzIG5vdCBzdXBwb3NlZCB0byBiZSBjb25maWRlbnRp YWwgOikNCg0KPiArICoNCj4gKyAqICAgIENvcHlyaWdodCAoYykgSW50ZWwgQ29ycG9yYXRpb24u DQo+ICsgKiAgICBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArICoNCj4gKyAqICAgIFRoZSBzb3Vy Y2UgY29kZSBjb250YWluZWQgb3IgZGVzY3JpYmVkIGhlcmVpbiBhbmQgYWxsIGRvY3VtZW50cyBy ZWxhdGVkDQo+ICsgKiAgICB0byB0aGUgc291cmNlIGNvZGUgKCJNYXRlcmlhbCIpIGFyZSBvd25l ZCBieSBJbnRlbCBDb3Jwb3JhdGlvbiBvciBpdHMNCj4gKyAqICAgIHN1cHBsaWVycyBvciBsaWNl bnNvcnMuICBUaXRsZSB0byB0aGUgTWF0ZXJpYWwgcmVtYWlucyB3aXRoIEludGVsDQo+ICsgKiAg ICBDb3Jwb3JhdGlvbiBvciBpdHMgc3VwcGxpZXJzIGFuZCBsaWNlbnNvcnMuICBUaGUgTWF0ZXJp YWwgY29udGFpbnMgdHJhZGUNCj4gKyAqICAgIHNlY3JldHMgYW5kIHByb3ByaWV0YXJ5IGFuZCBj b25maWRlbnRpYWwgaW5mb3JtYXRpb24gb2YgSW50ZWwgb3IgaXRzDQo+ICsgKiAgICBzdXBwbGll cnMgYW5kIGxpY2Vuc29ycy4gIFRoZSBNYXRlcmlhbCBpcyBwcm90ZWN0ZWQgYnkgd29ybGR3aWRl DQo+ICsgKiAgICBjb3B5cmlnaHQgYW5kIHRyYWRlIHNlY3JldCBsYXdzIGFuZCB0cmVhdHkgcHJv dmlzaW9ucy4gIE5vIHBhcnQgb2YgdGhlDQo+ICsgKiAgICBNYXRlcmlhbCBtYXkgYmUgdXNlZCwg Y29waWVkLCByZXByb2R1Y2VkLCBtb2RpZmllZCwgcHVibGlzaGVkLCB1cGxvYWRlZCwNCj4gKyAq ICAgIHBvc3RlZCwgdHJhbnNtaXR0ZWQsIGRpc3RyaWJ1dGVkLCBvciBkaXNjbG9zZWQgaW4gYW55 IHdheSB3aXRob3V0IEludGVsJ3MNCj4gKyAqICAgIHByaW9yIGV4cHJlc3Mgd3JpdHRlbiBwZXJt aXNzaW9uLg0KPiArICoNCj4gKyAqICAgIE5vIGxpY2Vuc2UgdW5kZXIgYW55IHBhdGVudCwgY29w eXJpZ2h0LCB0cmFkZSBzZWNyZXQgb3Igb3RoZXINCj4gKyAqICAgIGludGVsbGVjdHVhbCBwcm9w ZXJ0eSByaWdodCBpcyBncmFudGVkIHRvIG9yIGNvbmZlcnJlZCB1cG9uIHlvdSBieQ0KPiArICog ICAgZGlzY2xvc3VyZSBvciBkZWxpdmVyeSBvZiB0aGUgTWF0ZXJpYWxzLCBlaXRoZXIgZXhwcmVz c2x5LCBieQ0KPiArICogICAgaW1wbGljYXRpb24sIGluZHVjZW1lbnQsIGVzdG9wcGVsIG9yIG90 aGVyd2lzZS4gIEFueSBsaWNlbnNlIHVuZGVyIHN1Y2gNCj4gKyAqICAgIGludGVsbGVjdHVhbCBw cm9wZXJ0eSByaWdodHMgbXVzdCBiZSBleHByZXNzIGFuZCBhcHByb3ZlZCBieSBJbnRlbCBpbg0K PiArICogICAgd3JpdGluZy4NCj4gKyAqLw0KPiArDQo+ICsjaWZuZGVmIF9WRFBBX0JMS19DT01Q QUNUX0hfDQo+ICsjZGVmaW5lIF9WRFBBX0JMS19DT01QQUNUX0hfDQo+ICsNCj4gKy8qKg0KPiAr ICogQGZpbGUNCj4gKyAqDQo+ICsgKiBEZXZpY2Ugc3BlY2lmaWMgdmhvc3QgbGliDQo+ICsgKi8N Cj4gKy92ZHBhDQo+ICsjaW5jbHVkZSA8c3RkYm9vbC5oPg0KPiArDQo+ICsjaW5jbHVkZSA8cnRl X3BjaS5oPg0KPiArI2luY2x1ZGUgPHJ0ZV92aG9zdC5oPg0KPiArDQo+ICsvKiBGZWF0dXJlIGJp dHMgKi8NCj4gKyNkZWZpbmUgVklSVElPX0JMS19GX1NJWkVfTUFYICAgICAxICAgIC8qIEluZGlj YXRlcyBtYXhpbXVtIHNlZ21lbnQgc2l6ZSAqLw0KPiArI2RlZmluZSBWSVJUSU9fQkxLX0ZfU0VH X01BWCAgICAgIDIgICAgLyogSW5kaWNhdGVzIG1heGltdW0gIyBvZiBzZWdtZW50cyAqLw0KPiAr I2RlZmluZSBWSVJUSU9fQkxLX0ZfR0VPTUVUUlkgICAgIDQgICAgLyogTGVnYWN5IGdlb21ldHJ5 IGF2YWlsYWJsZSAgKi8NCj4gKyNkZWZpbmUgVklSVElPX0JMS19GX1JPICAgICAgICAgICA1ICAg IC8qIERpc2sgaXMgcmVhZC1vbmx5ICovDQo+ICsjZGVmaW5lIFZJUlRJT19CTEtfRl9CTEtfU0la RSAgICAgNiAgICAvKiBCbG9jayBzaXplIG9mIGRpc2sgaXMgYXZhaWxhYmxlICovDQo+ICsjZGVm aW5lIFZJUlRJT19CTEtfRl9UT1BPTE9HWSAgICAgMTAgICAvKiBUb3BvbG9neSBpbmZvcm1hdGlv biBpcyBhdmFpbGFibGUgKi8NCj4gKyNkZWZpbmUgVklSVElPX0JMS19GX01RICAgICAgICAgICAx MiAgIC8qIHN1cHBvcnQgbW9yZSB0aGFuIG9uZSB2cSAqLw0KPiArI2RlZmluZSBWSVJUSU9fQkxL X0ZfRElTQ0FSRCAgICAgIDEzICAgLyogRElTQ0FSRCBpcyBzdXBwb3J0ZWQgKi8NCj4gKyNkZWZp bmUgVklSVElPX0JMS19GX1dSSVRFX1pFUk9FUyAxNCAgIC8qIFdSSVRFIFpFUk9FUyBpcyBzdXBw b3J0ZWQgKi8NCj4gKw0KPiArLyogTGVnYWN5IGZlYXR1cmUgYml0cyAqLw0KPiArI2lmbmRlZiBW SVJUSU9fQkxLX05PX0xFR0FDWQ0KPiArI2RlZmluZSBWSVJUSU9fQkxLX0ZfQkFSUklFUiAgICAg IDAgICAgLyogRG9lcyBob3N0IHN1cHBvcnQgYmFycmllcnM/ICovDQo+ICsjZGVmaW5lIFZJUlRJ T19CTEtfRl9TQ1NJICAgICAgICAgNyAgICAvKiBTdXBwb3J0cyBzY3NpIGNvbW1hbmQgcGFzc3Ro cnUgKi8NCj4gKyNkZWZpbmUgVklSVElPX0JMS19GX0ZMVVNIICAgICAgICA5ICAgIC8qIEZsdXNo IGNvbW1hbmQgc3VwcG9ydGVkICovDQo+ICsjZGVmaW5lIFZJUlRJT19CTEtfRl9DT05GSUdfV0NF ICAgMTEgICAvKiBXcml0ZWJhY2sgbW9kZSBhdmFpbGFibGUgaW4gY29uZmlnICovDQo+ICsNCj4g Ky8qIE9sZCAoZGVwcmVjYXRlZCkgbmFtZSBmb3IgVklSVElPX0JMS19GX0ZMVVNILiAqLyAjZGVm aW5lIA0KPiArVklSVElPX0JMS19GX1dDRSBWSVJUSU9fQkxLX0ZfRkxVU0ggI2VuZGlmIC8qICFW SVJUSU9fQkxLX05PX0xFR0FDWSANCj4gKyovDQo+ICsNCj4gKyNpZm5kZWYgVkhPU1RfVVNFUl9G X1BST1RPQ09MX0ZFQVRVUkVTICNkZWZpbmUgDQo+ICtWSE9TVF9VU0VSX0ZfUFJPVE9DT0xfRkVB VFVSRVMgMzAgI2VuZGlmDQo+ICsNCj4gKyNkZWZpbmUgU1BES19WSE9TVF9GRUFUVVJFUyAoKDFV TEwgPDwgVkhPU1RfRl9MT0dfQUxMKSB8IFwNCg0KV2h5IHRoZXNlIHJlZmVyZW5jZXMgdG8gU1BE Sz8NCg0KPiArCSgxVUxMIDw8IFZIT1NUX1VTRVJfRl9QUk9UT0NPTF9GRUFUVVJFUykgfCBcDQo+ ICsJKDFVTEwgPDwgVklSVElPX0ZfVkVSU0lPTl8xKSB8IFwNCj4gKwkoMVVMTCA8PCBWSVJUSU9f Rl9OT1RJRllfT05fRU1QVFkpIHwgXA0KPiArCSgxVUxMIDw8IFZJUlRJT19SSU5HX0ZfRVZFTlRf SURYKSB8IFwNCj4gKwkoMVVMTCA8PCBWSVJUSU9fUklOR19GX0lORElSRUNUX0RFU0MpKQ0KPiAr DQo+ICsjZGVmaW5lIFNQREtfVkhPU1RfRElTQUJMRURfRkVBVFVSRVMgKCgxVUxMIDw8IFZJUlRJ T19SSU5HX0ZfRVZFTlRfSURYKSB8IFwNCj4gKwkoMVVMTCA8PCBWSVJUSU9fRl9OT1RJRllfT05f RU1QVFkpKQ0KPiArDQo+ICsjZGVmaW5lIFNQREtfVkhPU1RfQkxLX0ZFQVRVUkVTX0JBU0UgKFNQ REtfVkhPU1RfRkVBVFVSRVMgfCBcDQo+ICsJKDFVTEwgPDwgVklSVElPX0JMS19GX1NJWkVfTUFY KSB8ICgxVUxMIDw8IFZJUlRJT19CTEtfRl9TRUdfTUFYKSB8IFwNCj4gKwkoMVVMTCA8PCBWSVJU SU9fQkxLX0ZfR0VPTUVUUlkpIHwgKDFVTEwgPDwgVklSVElPX0JMS19GX0JMS19TSVpFKSB8IFwN Cj4gKwkoMVVMTCA8PCBWSVJUSU9fQkxLX0ZfVE9QT0xPR1kpIHwgKDFVTEwgPDwgVklSVElPX0JM S19GX0JBUlJJRVIpICB8IFwNCj4gKwkoMVVMTCA8PCBWSVJUSU9fQkxLX0ZfU0NTSSkgICAgIHwg KDFVTEwgPDwgVklSVElPX0JMS19GX0NPTkZJR19XQ0UpIHwgXA0KPiArCSgxVUxMIDw8IFZJUlRJ T19CTEtfRl9NUSkpDQo+ICsNCj4gKy8qIE5vdCBzdXBwb3J0ZWQgZmVhdHVyZXMgKi8NCj4gKyNk ZWZpbmUgU1BES19WSE9TVF9CTEtfRElTQUJMRURfRkVBVFVSRVMgKFNQREtfVkhPU1RfRElTQUJM RURfRkVBVFVSRVMgfCBcDQo+ICsJKDFVTEwgPDwgVklSVElPX0JMS19GX0dFT01FVFJZKSB8ICgx VUxMIDw8IFZJUlRJT19CTEtfRl9DT05GSUdfV0NFKSB8IFwNCj4gKwkoMVVMTCA8PCBWSVJUSU9f QkxLX0ZfQkFSUklFUikgIHwgKDFVTEwgPDwgVklSVElPX0JMS19GX1NDU0kpKQ0KPiArDQo+ICsv KiBWaG9zdC1ibGsgc3VwcG9ydCBwcm90b2NvbCBmZWF0dXJlcyAqLyAjZGVmaW5lIA0KPiArU1BE S19WSE9TVF9CTEtfUFJPVE9DT0xfRkVBVFVSRVMgXA0KPiArCSgoMVVMTCA8PCBWSE9TVF9VU0VS X1BST1RPQ09MX0ZfQ09ORklHKSB8IFwNCj4gKwkoMVVMTCA8PCBWSE9TVF9VU0VSX1BST1RPQ09M X0ZfSU5GTElHSFRfU0hNRkQpKQ0KPiArDQo+ICsvKioNCj4gKyAqIEB3YXJuaW5nDQo+ICsgKiBA YiBFWFBFUklNRU5UQUw6IHRoaXMgQVBJIG1heSBjaGFuZ2Ugd2l0aG91dCBwcmlvciBub3RpY2UN Cj4gKyAqDQo+ICsgKiBUaGlzIGZ1bmN0aW9uIHdpbGwgc2V0IHZob3N0IHVzZXIgYmxvY2sNCj4g KyAqDQo+ICsgKiBAcGFyYW0gcGF0aA0KPiArICogIHNvY2tldCBwYXRoDQo+ICsgKi8NCj4gK2lu dA0KPiArdmRwYV9ibGtfZGV2aWNlX3NldF9mZWF0dXJlc19hbmRfcHJvdG9jb2woY29uc3QgY2hh ciAqcGF0aCwNCj4gKwlzdHJ1Y3QgcnRlX3ZkcGFfZGV2aWNlICp2ZGV2KTsNCj4gKw0KPiArLyoq DQo+ICsgKiBAd2FybmluZw0KPiArICogQGIgRVhQRVJJTUVOVEFMOiB0aGlzIEFQSSBtYXkgY2hh bmdlIHdpdGhvdXQgcHJpb3Igbm90aWNlDQo+ICsgKg0KPiArICogSW5zdGFsbCBleHRlcm5hbCBo b29rIHRvIGhhbmRsZSB2aG9zdCB1c2VyIGJsb2NrIG1lc3NhZ2UNCj4gKyAqDQo+ICsgKiBAcGFy YW0gdmlkDQo+ICsgKiAgdmhvc3QgZGV2aWNlIGlkDQo+ICsgKi8NCj4gK2ludA0KPiArcnRlX3Zo b3N0X2Jsa19zZXNzaW9uX2luc3RhbGxfcnRlX2NvbXBhdF9ob29rcyhpbnQgdmlkKTsNCj4gKw0K PiArI2VuZGlmIC8qIF9WRFBBX0JMS19DT01QQUNUX0hfICovDQo+IGRpZmYgLS1naXQgYS9leGFt cGxlcy92ZHBhL3Zob3N0X3VzZXIuaCBiL2V4YW1wbGVzL3ZkcGEvdmhvc3RfdXNlci5oIA0KPiBu ZXcgZmlsZSBtb2RlIDEwMDY0NCBpbmRleCAwMDAwMDAwLi44Yjc0N2QwDQo+IC0tLSAvZGV2L251 bGwNCj4gKysrIGIvZXhhbXBsZXMvdmRwYS92aG9zdF91c2VyLmgNCj4gQEAgLTAsMCArMSwxODkg QEANCj4gKy8qICAgIElOVEVMIENPTkZJREVOVElBTA0KPiArICoNCj4gKyAqICAgIENvcHlyaWdo dCAoYykgSW50ZWwgQ29ycG9yYXRpb24uDQo+ICsgKiAgICBBbGwgcmlnaHRzIHJlc2VydmVkLg0K PiArICoNCj4gKyAqICAgIFRoZSBzb3VyY2UgY29kZSBjb250YWluZWQgb3IgZGVzY3JpYmVkIGhl cmVpbiBhbmQgYWxsIGRvY3VtZW50cyByZWxhdGVkDQo+ICsgKiAgICB0byB0aGUgc291cmNlIGNv ZGUgKCJNYXRlcmlhbCIpIGFyZSBvd25lZCBieSBJbnRlbCBDb3Jwb3JhdGlvbiBvciBpdHMNCj4g KyAqICAgIHN1cHBsaWVycyBvciBsaWNlbnNvcnMuICBUaXRsZSB0byB0aGUgTWF0ZXJpYWwgcmVt YWlucyB3aXRoIEludGVsDQo+ICsgKiAgICBDb3Jwb3JhdGlvbiBvciBpdHMgc3VwcGxpZXJzIGFu ZCBsaWNlbnNvcnMuICBUaGUgTWF0ZXJpYWwgY29udGFpbnMgdHJhZGUNCj4gKyAqICAgIHNlY3Jl dHMgYW5kIHByb3ByaWV0YXJ5IGFuZCBjb25maWRlbnRpYWwgaW5mb3JtYXRpb24gb2YgSW50ZWwg b3IgaXRzDQo+ICsgKiAgICBzdXBwbGllcnMgYW5kIGxpY2Vuc29ycy4gIFRoZSBNYXRlcmlhbCBp cyBwcm90ZWN0ZWQgYnkgd29ybGR3aWRlDQo+ICsgKiAgICBjb3B5cmlnaHQgYW5kIHRyYWRlIHNl Y3JldCBsYXdzIGFuZCB0cmVhdHkgcHJvdmlzaW9ucy4gIE5vIHBhcnQgb2YgdGhlDQo+ICsgKiAg ICBNYXRlcmlhbCBtYXkgYmUgdXNlZCwgY29waWVkLCByZXByb2R1Y2VkLCBtb2RpZmllZCwgcHVi bGlzaGVkLCB1cGxvYWRlZCwNCj4gKyAqICAgIHBvc3RlZCwgdHJhbnNtaXR0ZWQsIGRpc3RyaWJ1 dGVkLCBvciBkaXNjbG9zZWQgaW4gYW55IHdheSB3aXRob3V0IEludGVsJ3MNCj4gKyAqICAgIHBy aW9yIGV4cHJlc3Mgd3JpdHRlbiBwZXJtaXNzaW9uLg0KPiArICoNCj4gKyAqICAgIE5vIGxpY2Vu c2UgdW5kZXIgYW55IHBhdGVudCwgY29weXJpZ2h0LCB0cmFkZSBzZWNyZXQgb3Igb3RoZXINCj4g KyAqICAgIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodCBpcyBncmFudGVkIHRvIG9yIGNvbmZl cnJlZCB1cG9uIHlvdSBieQ0KPiArICogICAgZGlzY2xvc3VyZSBvciBkZWxpdmVyeSBvZiB0aGUg TWF0ZXJpYWxzLCBlaXRoZXIgZXhwcmVzc2x5LCBieQ0KPiArICogICAgaW1wbGljYXRpb24sIGlu ZHVjZW1lbnQsIGVzdG9wcGVsIG9yIG90aGVyd2lzZS4gIEFueSBsaWNlbnNlIHVuZGVyIHN1Y2gN Cj4gKyAqICAgIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgbXVzdCBiZSBleHByZXNzIGFu ZCBhcHByb3ZlZCBieSBJbnRlbCBpbg0KPiArICogICAgd3JpdGluZy4NCj4gKyAqLw0KPiArDQo+ ICsjaWZuZGVmIF9WSE9TVF9ORVRfVVNFUl9IDQo+ICsjZGVmaW5lIF9WSE9TVF9ORVRfVVNFUl9I DQo+ICsNCj4gKyNpbmNsdWRlIDxzdGRpbnQuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC92aG9zdC5o Pg0KPiArDQo+ICsjaW5jbHVkZSAicnRlX3Zob3N0LmgiDQo+ICsNCj4gKy8qIHJlZmVyIHRvIGh3 L3ZpcnRpby92aG9zdC11c2VyLmMgKi8NCj4gKw0KPiArI2RlZmluZSBWSE9TVF9NRU1PUllfTUFY X05SRUdJT05TIDgNCj4gKw0KPiArI2lmbmRlZiBWSE9TVF9VU0VSX01BWF9DT05GSUdfU0laRQ0K PiArI2RlZmluZSBWSE9TVF9VU0VSX01BWF9DT05GSUdfU0laRQkJMjU2DQo+ICsjZW5kaWYNCj4g Kw0KPiArI2RlZmluZSBWSE9TVF9VU0VSX1BST1RPQ09MX0ZFQVRVUkVTCSgoMVVMTCA8PCBWSE9T VF9VU0VSX1BST1RPQ09MX0ZfTVEpIHwgXA0KPiArCQkJKDFVTEwgPDwgVkhPU1RfVVNFUl9QUk9U T0NPTF9GX0xPR19TSE1GRCkgfFwNCj4gKwkJCSgxVUxMIDw8IFZIT1NUX1VTRVJfUFJPVE9DT0xf Rl9SQVJQKSB8IFwNCj4gKwkJCSgxVUxMIDw8IFZIT1NUX1VTRVJfUFJPVE9DT0xfRl9SRVBMWV9B Q0spIHwgXA0KPiArCQkJKDFVTEwgPDwgVkhPU1RfVVNFUl9QUk9UT0NPTF9GX05FVF9NVFUpIHwg XA0KPiArCQkJKDFVTEwgPDwgVkhPU1RfVVNFUl9QUk9UT0NPTF9GX1NMQVZFX1JFUSkgfCBcDQo+ ICsJCQkoMVVMTCA8PCBWSE9TVF9VU0VSX1BST1RPQ09MX0ZfQ1JZUFRPX1NFU1NJT04pIHwgXA0K PiArCQkJKDFVTEwgPDwgVkhPU1RfVVNFUl9QUk9UT0NPTF9GX1NMQVZFX1NFTkRfRkQpIHwgXA0K PiArCQkJKDFVTEwgPDwgVkhPU1RfVVNFUl9QUk9UT0NPTF9GX0hPU1RfTk9USUZJRVIpIHwgXA0K PiArCQkJKDFVTEwgPDwgVkhPU1RfVVNFUl9QUk9UT0NPTF9GX1BBR0VGQVVMVCkpDQo+ICsNCj4g K3R5cGVkZWYgZW51bSBWaG9zdFVzZXJSZXF1ZXN0IHsNCj4gKwlWSE9TVF9VU0VSX05PTkUgPSAw LA0KPiArCVZIT1NUX1VTRVJfR0VUX0ZFQVRVUkVTID0gMSwNCj4gKwlWSE9TVF9VU0VSX1NFVF9G RUFUVVJFUyA9IDIsDQo+ICsJVkhPU1RfVVNFUl9TRVRfT1dORVIgPSAzLA0KPiArCVZIT1NUX1VT RVJfUkVTRVRfT1dORVIgPSA0LA0KPiArCVZIT1NUX1VTRVJfU0VUX01FTV9UQUJMRSA9IDUsDQo+ ICsJVkhPU1RfVVNFUl9TRVRfTE9HX0JBU0UgPSA2LA0KPiArCVZIT1NUX1VTRVJfU0VUX0xPR19G RCA9IDcsDQo+ICsJVkhPU1RfVVNFUl9TRVRfVlJJTkdfTlVNID0gOCwNCj4gKwlWSE9TVF9VU0VS X1NFVF9WUklOR19BRERSID0gOSwNCj4gKwlWSE9TVF9VU0VSX1NFVF9WUklOR19CQVNFID0gMTAs DQo+ICsJVkhPU1RfVVNFUl9HRVRfVlJJTkdfQkFTRSA9IDExLA0KPiArCVZIT1NUX1VTRVJfU0VU X1ZSSU5HX0tJQ0sgPSAxMiwNCj4gKwlWSE9TVF9VU0VSX1NFVF9WUklOR19DQUxMID0gMTMsDQo+ ICsJVkhPU1RfVVNFUl9TRVRfVlJJTkdfRVJSID0gMTQsDQo+ICsJVkhPU1RfVVNFUl9HRVRfUFJP VE9DT0xfRkVBVFVSRVMgPSAxNSwNCj4gKwlWSE9TVF9VU0VSX1NFVF9QUk9UT0NPTF9GRUFUVVJF UyA9IDE2LA0KPiArCVZIT1NUX1VTRVJfR0VUX1FVRVVFX05VTSA9IDE3LA0KPiArCVZIT1NUX1VT RVJfU0VUX1ZSSU5HX0VOQUJMRSA9IDE4LA0KPiArCVZIT1NUX1VTRVJfU0VORF9SQVJQID0gMTks DQo+ICsJVkhPU1RfVVNFUl9ORVRfU0VUX01UVSA9IDIwLA0KPiArCVZIT1NUX1VTRVJfU0VUX1NM QVZFX1JFUV9GRCA9IDIxLA0KPiArCVZIT1NUX1VTRVJfSU9UTEJfTVNHID0gMjIsDQo+ICsJVkhP U1RfVVNFUl9DUllQVE9fQ1JFQVRFX1NFU1MgPSAyNiwNCj4gKwlWSE9TVF9VU0VSX0NSWVBUT19D TE9TRV9TRVNTID0gMjcsDQo+ICsJVkhPU1RfVVNFUl9QT1NUQ09QWV9BRFZJU0UgPSAyOCwNCj4g KwlWSE9TVF9VU0VSX1BPU1RDT1BZX0xJU1RFTiA9IDI5LA0KPiArCVZIT1NUX1VTRVJfUE9TVENP UFlfRU5EID0gMzAsDQo+ICsJVkhPU1RfVVNFUl9HRVRfSU5GTElHSFRfRkQgPSAzMSwNCj4gKwlW SE9TVF9VU0VSX1NFVF9JTkZMSUdIVF9GRCA9IDMyLA0KPiArCVZIT1NUX1VTRVJfTUFYID0gMzMN Cj4gK30gVmhvc3RVc2VyUmVxdWVzdDsNCj4gKw0KPiArdHlwZWRlZiBlbnVtIFZob3N0VXNlclNs YXZlUmVxdWVzdCB7DQo+ICsJVkhPU1RfVVNFUl9TTEFWRV9OT05FID0gMCwNCj4gKwlWSE9TVF9V U0VSX1NMQVZFX0lPVExCX01TRyA9IDEsDQo+ICsJVkhPU1RfVVNFUl9TTEFWRV9WUklOR19IT1NU X05PVElGSUVSX01TRyA9IDMsDQo+ICsJVkhPU1RfVVNFUl9TTEFWRV9NQVgNCj4gK30gVmhvc3RV c2VyU2xhdmVSZXF1ZXN0Ow0KPiArDQo+ICt0eXBlZGVmIHN0cnVjdCBWaG9zdFVzZXJNZW1vcnlS ZWdpb24gew0KPiArCXVpbnQ2NF90IGd1ZXN0X3BoeXNfYWRkcjsNCj4gKwl1aW50NjRfdCBtZW1v cnlfc2l6ZTsNCj4gKwl1aW50NjRfdCB1c2Vyc3BhY2VfYWRkcjsNCj4gKwl1aW50NjRfdCBtbWFw X29mZnNldDsNCj4gK30gVmhvc3RVc2VyTWVtb3J5UmVnaW9uOw0KPiArDQo+ICt0eXBlZGVmIHN0 cnVjdCBWaG9zdFVzZXJNZW1vcnkgew0KPiArCXVpbnQzMl90IG5yZWdpb25zOw0KPiArCXVpbnQz Ml90IHBhZGRpbmc7DQo+ICsJVmhvc3RVc2VyTWVtb3J5UmVnaW9uIHJlZ2lvbnNbVkhPU1RfTUVN T1JZX01BWF9OUkVHSU9OU107DQo+ICt9IFZob3N0VXNlck1lbW9yeTsNCj4gKw0KPiArdHlwZWRl ZiBzdHJ1Y3QgVmhvc3RVc2VyTG9nIHsNCj4gKwl1aW50NjRfdCBtbWFwX3NpemU7DQo+ICsJdWlu dDY0X3QgbW1hcF9vZmZzZXQ7DQo+ICt9IFZob3N0VXNlckxvZzsNCj4gKw0KPiArLyogQ29tcGx5 IHdpdGggQ3J5cHRvZGV2LUxpbnV4ICovDQo+ICsjZGVmaW5lIFZIT1NUX1VTRVJfQ1JZUFRPX01B WF9ITUFDX0tFWV9MRU5HVEgJNTEyDQo+ICsjZGVmaW5lIFZIT1NUX1VTRVJfQ1JZUFRPX01BWF9D SVBIRVJfS0VZX0xFTkdUSAk2NA0KPiArDQo+ICsvKiBTYW1lIHN0cnVjdHVyZSBhcyB2aG9zdC11 c2VyIGJhY2tlbmQgc2Vzc2lvbiBpbmZvICovIHR5cGVkZWYgDQo+ICtzdHJ1Y3QgVmhvc3RVc2Vy Q3J5cHRvU2Vzc2lvblBhcmFtIHsNCj4gKwlpbnQ2NF90IHNlc3Npb25faWQ7DQo+ICsJdWludDMy X3Qgb3BfY29kZTsNCj4gKwl1aW50MzJfdCBjaXBoZXJfYWxnbzsNCj4gKwl1aW50MzJfdCBjaXBo ZXJfa2V5X2xlbjsNCj4gKwl1aW50MzJfdCBoYXNoX2FsZ287DQo+ICsJdWludDMyX3QgZGlnZXN0 X2xlbjsNCj4gKwl1aW50MzJfdCBhdXRoX2tleV9sZW47DQo+ICsJdWludDMyX3QgYWFkX2xlbjsN Cj4gKwl1aW50OF90IG9wX3R5cGU7DQo+ICsJdWludDhfdCBkaXI7DQo+ICsJdWludDhfdCBoYXNo X21vZGU7DQo+ICsJdWludDhfdCBjaGFpbmluZ19kaXI7DQo+ICsJdWludDhfdCAqY2lwaGVfa2V5 Ow0KPiArCXVpbnQ4X3QgKmF1dGhfa2V5Ow0KPiArCXVpbnQ4X3QgY2lwaGVyX2tleV9idWZbVkhP U1RfVVNFUl9DUllQVE9fTUFYX0NJUEhFUl9LRVlfTEVOR1RIXTsNCj4gKwl1aW50OF90IGF1dGhf a2V5X2J1ZltWSE9TVF9VU0VSX0NSWVBUT19NQVhfSE1BQ19LRVlfTEVOR1RIXTsNCj4gK30gVmhv c3RVc2VyQ3J5cHRvU2Vzc2lvblBhcmFtOw0KPiArDQo+ICt0eXBlZGVmIHN0cnVjdCBWaG9zdFVz ZXJWcmluZ0FyZWEgew0KPiArCXVpbnQ2NF90IHU2NDsNCj4gKwl1aW50NjRfdCBzaXplOw0KPiAr CXVpbnQ2NF90IG9mZnNldDsNCj4gK30gVmhvc3RVc2VyVnJpbmdBcmVhOw0KPiArDQo+ICt0eXBl ZGVmIHN0cnVjdCBWaG9zdFVzZXJJbmZsaWdodCB7DQo+ICsJdWludDY0X3QgbW1hcF9zaXplOw0K PiArCXVpbnQ2NF90IG1tYXBfb2Zmc2V0Ow0KPiArCXVpbnQxNl90IG51bV9xdWV1ZXM7DQo+ICsJ dWludDE2X3QgcXVldWVfc2l6ZTsNCj4gK30gVmhvc3RVc2VySW5mbGlnaHQ7DQo+ICsNCj4gKy8q KiBHZXQvc2V0IGNvbmZpZyBtc2cgcGF5bG9hZCAqLw0KPiArc3RydWN0IHZob3N0X3VzZXJfY29u ZmlnIHsNCj4gKwl1aW50MzJfdCBvZmZzZXQ7DQo+ICsJdWludDMyX3Qgc2l6ZTsNCj4gKwl1aW50 MzJfdCBmbGFnczsNCj4gKwl1aW50OF90IHJlZ2lvbltWSE9TVF9VU0VSX01BWF9DT05GSUdfU0la RV07DQo+ICt9Ow0KPiArDQo+ICt0eXBlZGVmIHN0cnVjdCBWaG9zdFVzZXJNc2cgew0KPiArCXVu aW9uIHsNCj4gKwkJdWludDMyX3QgbWFzdGVyOyAvKiBhIFZob3N0VXNlclJlcXVlc3QgdmFsdWUg Ki8NCj4gKwkJdWludDMyX3Qgc2xhdmU7ICAvKiBhIFZob3N0VXNlclNsYXZlUmVxdWVzdCB2YWx1 ZSovDQo+ICsJfSByZXF1ZXN0Ow0KPiArDQo+ICsjZGVmaW5lIFZIT1NUX1VTRVJfVkVSU0lPTl9N QVNLICAgICAweDMNCj4gKyNkZWZpbmUgVkhPU1RfVVNFUl9SRVBMWV9NQVNLICAgICAgICgweDEg PDwgMikNCj4gKyNkZWZpbmUgVkhPU1RfVVNFUl9ORUVEX1JFUExZCQkoMHgxIDw8IDMpDQo+ICsJ dWludDMyX3QgZmxhZ3M7DQo+ICsJdWludDMyX3Qgc2l6ZTsgLyogdGhlIGZvbGxvd2luZyBwYXls b2FkIHNpemUgKi8NCj4gKwl1bmlvbiB7DQo+ICsjZGVmaW5lIFZIT1NUX1VTRVJfVlJJTkdfSURY X01BU0sgICAweGZmDQo+ICsjZGVmaW5lIFZIT1NUX1VTRVJfVlJJTkdfTk9GRF9NQVNLICAoMHgx PDw4KQ0KPiArCQl1aW50NjRfdCB1NjQ7DQo+ICsJCXN0cnVjdCB2aG9zdF92cmluZ19zdGF0ZSBz dGF0ZTsNCj4gKwkJc3RydWN0IHZob3N0X3ZyaW5nX2FkZHIgYWRkcjsNCj4gKwkJVmhvc3RVc2Vy TWVtb3J5IG1lbW9yeTsNCj4gKwkJVmhvc3RVc2VyTG9nICAgIGxvZzsNCj4gKwkJc3RydWN0IHZo b3N0X2lvdGxiX21zZyBpb3RsYjsNCj4gKwkJVmhvc3RVc2VyQ3J5cHRvU2Vzc2lvblBhcmFtIGNy eXB0b19zZXNzaW9uOw0KPiArCQlWaG9zdFVzZXJWcmluZ0FyZWEgYXJlYTsNCj4gKwkJVmhvc3RV c2VySW5mbGlnaHQgaW5mbGlnaHQ7DQo+ICsJCXN0cnVjdCB2aG9zdF91c2VyX2NvbmZpZyBjZmc7 DQo+ICsJfSBwYXlsb2FkOw0KPiArCWludCBmZHNbVkhPU1RfTUVNT1JZX01BWF9OUkVHSU9OU107 DQo+ICsJaW50IGZkX251bTsNCj4gK30gX19hdHRyaWJ1dGUoKHBhY2tlZCkpIFZob3N0VXNlck1z ZzsNCj4gKw0KPiArI2RlZmluZSBWSE9TVF9VU0VSX0hEUl9TSVpFIG9mZnNldG9mKFZob3N0VXNl ck1zZywgcGF5bG9hZC51NjQpDQo+ICsNCj4gKy8qIFRoZSB2ZXJzaW9uIG9mIHRoZSBwcm90b2Nv bCB3ZSBzdXBwb3J0ICovDQo+ICsjZGVmaW5lIFZIT1NUX1VTRVJfVkVSU0lPTiAgICAweDENCj4g KyNlbmRpZg0KDQo=