From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id D1473A04B5; Thu, 1 Oct 2020 10:07:31 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 4060E1D722; Thu, 1 Oct 2020 10:07:30 +0200 (CEST) Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by dpdk.org (Postfix) with ESMTP id 564311D6EE for ; Thu, 1 Oct 2020 10:07:27 +0200 (CEST) IronPort-SDR: kRm3lZFXbff8JVumOF8OTrG4Llprll1sPF2owRk8Jy8R1amLy5L747GNNvkYzA/8oq2whuSQkn /0lsfjd2iVrQ== X-IronPort-AV: E=McAfee;i="6000,8403,9760"; a="150445746" X-IronPort-AV: E=Sophos;i="5.77,323,1596524400"; d="scan'208";a="150445746" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Oct 2020 01:07:23 -0700 IronPort-SDR: vbg0FVlehdzsy8mmkWqd2Q2OoWgVzCbnVmkDBtWGbZ9UDafXOV9UoOhEOPLPlzoPmg78cjYHTN qKq6UNa/NkfQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.77,323,1596524400"; d="scan'208";a="415975825" Received: from fmsmsx603.amr.corp.intel.com ([10.18.126.83]) by fmsmga001.fm.intel.com with ESMTP; 01 Oct 2020 01:07:23 -0700 Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Thu, 1 Oct 2020 01:07:23 -0700 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx611.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5 via Frontend Transport; Thu, 1 Oct 2020 01:07:23 -0700 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (104.47.55.176) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.1713.5; Thu, 1 Oct 2020 01:07:17 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Nzvzili88lND1DjYNgFeEsAue4Wf5g1gzn3O+e1wFO3tAvnACt+P680Zs7p/SscLZ4/EEZSWj/Dg9teryGvxYW2ano8HuufhnSNajS054B5riweUEqx77JGTgzzwaELKA+V5WLgAqkSYb4/1RboVuJYCk/0LMSCcYkQzFszovsOr0Vhc+IWtq4RkfLiiWvoZ08DoBTojL9B5cQf06ZcxkgK2bIhY2mfIxQ+nzSJ45KgFMyZTJZCbXODemEfqFaqwmEJjz3FSj1y2AdjfYwsU13Nr+wnK1UXTM3cQWEu9jRiqOp4O1azJAH22F4MuFpl7o6EqoS7El4NH9aPw+3w3Bg== 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-SenderADCheck; bh=Xmg2sBgjn/iGS7TW/VtAmK3t20w+KepW4P93CrLgnIk=; b=FVgBhGnd30O8QfJFMWALwM/NGU1K+g0v8WH4visr/ggjWTozGhPjnqnZcn2+SguHyGokCRdb3LKLitp8Q4LfQKxtuG/wkbwb//n2GHgl+U1V0PbeZ2vS0xoM+inXqnrZ7PeXGuL4QJnyH/BnPVlokkB7c/5tQDoph8ml9gTiXcbycAHhNR5H5DZi/8QAhzsZ8onzM5gxAwz9gXB6yuhaQSnSaAdw9UY0E9j66HaClK9LVU46VSKziCPmNB4qDGL6HWelsCTFSOnCBP9waKFzllsbUFoup/sswiHelsuqJYJtYk7UJn5JqQPt4R0Nn8RumqNTbq6/9p4ZUyfh2ZGuiQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Xmg2sBgjn/iGS7TW/VtAmK3t20w+KepW4P93CrLgnIk=; b=pONQkKGf4Eo3SwvWdvmvvLEu11duhIhRrMYn8Im80riPsQkWfLmQikb94+OMmgTdgggH4eWdwP0dhS7c4USqbuSoYz04P6GjhHtkguMJCC0e30CuLPKf2t8P/sDfd8w7jDQ9LYkffz1C1bXk9/XUWB8eYWGxqno5+mGIByl7lQY= Received: from BL0PR11MB3043.namprd11.prod.outlook.com (2603:10b6:208:33::19) by BL0PR11MB3123.namprd11.prod.outlook.com (2603:10b6:208:7b::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3433.32; Thu, 1 Oct 2020 08:07:12 +0000 Received: from BL0PR11MB3043.namprd11.prod.outlook.com ([fe80::11fa:a7fe:329d:9239]) by BL0PR11MB3043.namprd11.prod.outlook.com ([fe80::11fa:a7fe:329d:9239%5]) with mapi id 15.20.3433.032; Thu, 1 Oct 2020 08:07:12 +0000 From: "Zhang, Roy Fan" To: Maxime Coquelin , "Xia, Chenbo" , "Liu, Changpeng" , "dev@dpdk.org" CC: "matan@mellanox.com" , "Zawadzki, Tomasz" , "Yigit, Ferruh" Thread-Topic: [dpdk-dev] [PATCH] vhost: return ready when at least 1 vring is configured Thread-Index: AQHWlmojl+zDDeRl5UGA47Zp7KQYjKl/v1DQgAC8HoCAANbMAIAADRiQgAEESwCAAAIogA== Date: Thu, 1 Oct 2020 08:07:12 +0000 Message-ID: References: <1598944057-32690-1-git-send-email-changpeng.liu@intel.com> <8e0e8343-4e85-71f3-8c85-07eb1cff6079@redhat.com> <06542643-cc20-5e3e-26ae-7100005dc97d@redhat.com> <24b547af-2cda-36db-cb66-e5523d169556@redhat.com> <0f8b9daf-3ed7-0ede-8c0c-f2a1bcef9ca4@redhat.com> <42d0c319-314f-80ea-f3d7-21eaf567c2fa@redhat.com> <30e718ae-5b06-cd9a-63d5-34977f1df56c@redhat.com> In-Reply-To: <30e718ae-5b06-cd9a-63d5-34977f1df56c@redhat.com> Accept-Language: zh-Hans-HK, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-version: 11.5.1.3 dlp-reaction: no-action dlp-product: dlpe-windows authentication-results: redhat.com; dkim=none (message not signed) header.d=none;redhat.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [95.44.220.85] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 484af90c-2d28-4f1e-69a3-08d865e1007d x-ms-traffictypediagnostic: BL0PR11MB3123: x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: iZMcb0xSVyqw8SXevsOxAqdThdlyk5gaZHIwSXO/JkzcNj6UX+WSo5tnMqqrulPDtbVNsxl0cQ35aj1i4Lm8oUfPDBfOSEeSE6uI6u3UIphv7oX5HL+YD/Wsda2ZnzXaDiWovRvUUsLRXYxZ64nmAd75EjIYdtRtl8fDnpuv20DNo4R9/mgbe4egv54dSuOkUxjrdhTtT9mX5CR4drYC7AgJlt5NIfmkL0+UzI802QItaU1z2X1BzbGWLLRfzVMAokQMWjNvQ1vE2JGlc3cnmbJ0ah2IT0+xLzyPPxBiigYu4upa7p3i0RUZBH71iSYl3DOK5qOv4K69cAlGEIlpOQ== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BL0PR11MB3043.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(376002)(39860400002)(366004)(396003)(346002)(136003)(4326008)(9686003)(107886003)(8676002)(83380400001)(478600001)(110136005)(86362001)(55016002)(8936002)(7696005)(5660300002)(76116006)(54906003)(71200400001)(33656002)(186003)(2906002)(66946007)(52536014)(53546011)(6506007)(30864003)(316002)(64756008)(66556008)(66476007)(66446008)(26005); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata: zbNwdNQI5OfZvNsz/0V/Vxhp/LnDi1OLFy3rzTAjxGHXdMODdFeL27BFlGfD3EYAlcGvjW21lz1OUfxy9WOa7ft460cFTBSrpfc7s3HEeT7puxFFo7upuGvkMLjFnDUDf6f1it9Bc4IWIptRxqZqlZVljL137LHgGRodInHTIatNlaKBDOU13xcsPwyFURQYz5p06Wk/yozMjdHyrr051CoZWEQ+c3l9ISGfijS/hWS1WvDuGmR/V14EIBdGw0K76oc768nlvPZRSHnUPPhIWtyGOyp63SueP0PU/sNbFF1eoh797oWJZtoXN/TVbFN0ACiIcWdlvW9Y3Am1+S5a/w3t/JOOI6eQi7iTF4GDqK0yraSVktjLeDCGJ1R4AMyly+0yDj/qk6PYLORUATCFSYgEkvfVDiT58Eqfr++V27hb7G4ruKmHP2iJAczFtQ3WztdTBYEwq48ZD19jUNJKMdve6cUtnuwg9QEUduEx8XMFafTF3bGLr/12onQrDcLOpLxGbhqii9L3VPl+mjgNJV4eIsCkxPtw6X4OVGDEAZlGmsQUw0SfBrpN/yGodwTVyi4zXGa3UQaVXc8j5LqGSsmRFUIFCnlBxynCAOq8n2uZl70WuP7Lr6SrOzYt5i8mdcTFDkBitOzW/MkZHSGyjg== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BL0PR11MB3043.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 484af90c-2d28-4f1e-69a3-08d865e1007d X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Oct 2020 08:07:12.0692 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: DKieo46p0X8RC+AoBABWV4pXqTxhfIGBvad1dSdNqEAgUjTlM1WnZvbeKOnDmxe8wWnZ046j5FKH/FVI2KP3aw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL0PR11MB3123 X-OriginatorOrg: intel.com Subject: Re: [dpdk-dev] [PATCH] vhost: return ready when at least 1 vring is configured X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" SGkgTWF4aW1lLA0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IE1heGlt ZSBDb3F1ZWxpbiA8bWF4aW1lLmNvcXVlbGluQHJlZGhhdC5jb20+DQo+IFNlbnQ6IFRodXJzZGF5 LCBPY3RvYmVyIDEsIDIwMjAgODo1NSBBTQ0KPiBUbzogWmhhbmcsIFJveSBGYW4gPHJveS5mYW4u emhhbmdAaW50ZWwuY29tPjsgWGlhLCBDaGVuYm8NCj4gPGNoZW5iby54aWFAaW50ZWwuY29tPjsg TGl1LCBDaGFuZ3BlbmcgPGNoYW5ncGVuZy5saXVAaW50ZWwuY29tPjsNCj4gZGV2QGRwZGsub3Jn DQo+IENjOiBtYXRhbkBtZWxsYW5veC5jb207IFphd2FkemtpLCBUb21hc3ogPHRvbWFzei56YXdh ZHpraUBpbnRlbC5jb20+Ow0KPiBZaWdpdCwgRmVycnVoIDxmZXJydWgueWlnaXRAaW50ZWwuY29t Pg0KPiBTdWJqZWN0OiBSZTogW2RwZGstZGV2XSBbUEFUQ0hdIHZob3N0OiByZXR1cm4gcmVhZHkg d2hlbiBhdCBsZWFzdCAxIHZyaW5nIGlzDQo+IGNvbmZpZ3VyZWQNCj4gDQo+IA0KPiANCj4gT24g OS8zMC8yMCA2OjM3IFBNLCBaaGFuZywgUm95IEZhbiB3cm90ZToNCj4gPiBIaSBDaGVuYm8gYW5k IE1heGltZSwNCj4gPg0KPiA+IFRoYW5rcyBmb3IgcmVwbHlpbmcgdGhlIGVtYWlsLg0KPiA+DQo+ ID4NCj4gPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4gRnJvbTogTWF4aW1lIENv cXVlbGluIDxtYXhpbWUuY29xdWVsaW5AcmVkaGF0LmNvbT4NCj4gPj4gU2VudDogV2VkbmVzZGF5 LCBTZXB0ZW1iZXIgMzAsIDIwMjAgNDozNyBQTQ0KPiA+PiBUbzogWGlhLCBDaGVuYm8gPGNoZW5i by54aWFAaW50ZWwuY29tPjsgWmhhbmcsIFJveSBGYW4NCj4gPj4gPHJveS5mYW4uemhhbmdAaW50 ZWwuY29tPjsgTGl1LCBDaGFuZ3BlbmcgPGNoYW5ncGVuZy5saXVAaW50ZWwuY29tPjsNCj4gPj4g ZGV2QGRwZGsub3JnDQo+ID4+IENjOiBtYXRhbkBtZWxsYW5veC5jb207IFphd2FkemtpLCBUb21h c3oNCj4gPHRvbWFzei56YXdhZHpraUBpbnRlbC5jb20+Ow0KPiA+PiBZaWdpdCwgRmVycnVoIDxm ZXJydWgueWlnaXRAaW50ZWwuY29tPg0KPiA+PiBTdWJqZWN0OiBSZTogW2RwZGstZGV2XSBbUEFU Q0hdIHZob3N0OiByZXR1cm4gcmVhZHkgd2hlbiBhdCBsZWFzdCAxIHZyaW5nDQo+IGlzDQo+ID4+ IGNvbmZpZ3VyZWQNCj4gPj4NCj4gPj4gSGksDQo+ID4+DQo+ID4+IE9uIDkvMzAvMjAgNDo0OCBB TSwgWGlhLCBDaGVuYm8gd3JvdGU6DQo+ID4+PiBIaSBGYW4gJiBNYXhpbWUsDQo+ID4+Pg0KPiA+ Pj4gSSBhbSB0aGlua2luZyB0aGF0IHNob3VsZCB3ZSBtb3ZlIHNldF9mZWF0dXJlcyBvdXRzaWRl IG9mIG5ld19kZXZpY2UNCj4gPj4gY2FsbGJhY2sNCj4gPj4+IGZvciBjcnlwdG8gZGV2aWNlPyBJ IHNlZSB0aGF0IG5ldCBhbmQgYmxrIGRldmljZXMgYm90aCBzZXQgZmVhdHVyZXMNCj4gYmV0d2Vl bg0KPiA+PiByZWdpc3Rlcg0KPiA+Pj4gYW5kIHN0YXJ0LCBhbmQgcGVyc29uYWxseSBJIHRoaW5r IHRoaXMgbWFrZXMgc2Vuc2UgdGhhdCBkZXZpY2UgZmVhdHVyZXMNCj4gYXJlDQo+ID4+IHNldA0K PiA+Pj4gYmVmb3JlIGRldmljZSBzdGFydCBhbmQgcmVhZHkuIEhvdyBkbyB5b3UgdGhpbmsg8J+Y ij8NCj4gPg0KPiA+IFRoZSByZWFzb24gaXQgaXMgc2V0IGluc2lkZSBydGVfdmhvc3RfY3J5cHRv X2NyZWF0ZSgpIGlzIGxvZ2ljYWxseSBzcGVha2luZw0KPiA+IHRoZSB1c2VyIHNob3VsZG4ndCBl eHBlY3QgdG8gaGF2ZSB0byBzZXQgdGhlIGZlYXR1cmUgZmxhZ3MgZXZlbiBhZnRlciB0aGUNCj4g Y3JlYXRlDQo+ID4gZnVuY3Rpb24gaXMgY2FsbGVkIC0gYW5kIHdoYXQgSSBrbm93IGluIHRoZSBh cHBsaWNhdGlvbiB0aGUgb25seSB3YXkgdG8ga25vdw0KPiB0aGUNCj4gPiB2aWQgZm9yIHRoZSBm aXJzdCB0aW1lIGlzIHdoZW4gbmV3X2RldmljZSgpIGlzIGludm9rZWQuIFNvIGlmIHRoZXJlIGlz IGF3YXkgdG8NCj4ga25vdw0KPiA+IHRoZSB2aWQgYmVmb3JlIG5ld19kZXZpY2UoKSBpcyBpbnZv a2VkIEkgYW0gaGFwcHkgdG8gY2hhbmdlIHRoZSBzYW1wbGUNCj4gYXBwLg0KPiANCj4gSSB0aGlu ayB0aGUgVmhvc3QtY3J5cHRvIEFQSSBzaG91bGQgYmUgZml4ZWQuDQo+IFRoZSBnb29kIG5ld3Mg aXMgdGhhdCBpdCBpcyBzdGlsbCBleHBlcmltZW50YWwsIHNvIHdlIGNhbiBmaXggaXQgd2l0aG91 dA0KPiB3b3JyaWVzIChCVFcsIGV4Y2VwdCB0aGUgRFBESyBleGFtcGxlLCBhcmUgdGhlcmUgb3Ro ZXIgYXBwbGljYXRpb24gdXNpbmcNCj4gdGhlIFZob3N0LWNyeXB0byBBUEk/KS4NCj4gDQo+IFRo ZSAubmV3X2RldmljZSgpIGNhbGxiYWNrIGlzIGNhbGxlZCB3aGVuIHRoZSBWaXJ0aW8gZGV2aWNl IGlzIHJlYWR5LA0KPiBtZWFuaW5nIHdoZW4gdGhlIGJhY2tlbmQgY2FuIHN0YXJ0IHByb2Nlc3Np bmcgdGhlIHZpcnRxdWV1ZXMuIFNvIGZlYXR1cmUNCj4gbmVnb3RpYXRpb24gc2hvdWxkIGhhdmUg dGFrZW4gcGxhY2UgYmVmb3JlIHRoYXQuDQo+IA0KPiBJJ20gc3VycHJpc2VkIGl0IHdvcmtlZCBi ZWZvcmUsIGJlY2F1c2UgZG9lc24ndCB0aGUgZmVhdHVyZXMgbmVnb3RpYXRpb24NCj4gdGFrZXMg cGxhY2UgYmVmb3JlIHRoZSBtZW1vcnkgdGFibGUgYXJlIHNldD8gSWYgc28sIGhvdyBjYW4gdGhl IGZpcnN0DQo+IHZpcnRxdWV1ZSBjYW4gYmUgdGVzdGVkIGFzIHJlYWR5IGlmIHRoZSB2cmluZyBh ZGRyZXNzIGlzIG5vdCBzZXQ/DQo+IA0KPiBPbmUgb3RoZXIgaXNzdWUgaGVyZSwgd2hpY2ggaXMg dHJpZ2dlcmluZyB0aGUgaXNzdWUgaXMgdGhhdCBnaXZlbiBob3cNCj4gdGhlIHJlZ2lzdHJhdGlv biBpcyBkb25lLCBWSVJUSU9fREVWX0JVSUxUSU5fVklSVElPX05FVCBmbGFnIGlzIHNldCBmb3IN Cj4gVmhvc3QtY3J5cHRvLCB3aGljaCBzaG91bGRuJ3QgaGFwcGVuLiBFdmVuIGJlZm9yZSBsYXN0 IHJlbGVhc2UgcmV3b3JrLA0KPiB5b3Ugc2hvdWxkIGhhdmUgZmFjZWQgaXNzdWVzIHdoZW4gbW9y ZSB0aGFuIDIgcXVldWVzIHdoZXJlIGluIHVzZWQ6DQo+IA0KDQpWaG9zdC1jcnlwdG8gd2FzIG5v dCB3b3JraW5nIHNpbmNlIDIwLjA1LiBDaGFuZ3BlbmcncyBwYXRjaCB3aGljaCBzZXQgdGhlDQpO dW1iZXIgb2YgcXVldWVzIHRvIG9uZSBtYWRlIGl0IHdvcmtpbmcgYWdhaW4gc28gd2Ugd2FpdGVk IGl0IG1lcmdlZC4NCkhvd2V2ZXIgdGhlIHBhdGNoIHdhcyByZWplY3RlZCBieSB5b3UuDQoNCkkg c3VwcG9zZSB0aGVyZSBpcyBhbm90aGVyIHdheSAtIGFkZGluZyBhIG5ldyBBUEkgY2FsbGVkDQoi cnRlX3Zob3N0X2NyeXB0b19zZXRfZmVhdHVyZShjb25zdCBjaGFyICpzb2NrZXQpIiBzbyB3ZSBk b24ndCBoYXZlIHRvDQpyZWx5IG9uIHJ0ZV92aG9zdF9jcnlwdG9fY3JlYXRlKCkgdG8gc2V0IHRo ZSBmZWF0dXJlIGZsYWdzDQoNCndoYXQgZG8geW91IHRoaW5rPw0KDQpSZWdhcmRzLA0KRmFuDQoN Cj4gc3RhdGljIGludA0KPiB2aG9zdF91c2VyX3NldF9mZWF0dXJlcyhzdHJ1Y3QgdmlydGlvX25l dCAqKnBkZXYsIHN0cnVjdCBWaG9zdFVzZXJNc2cNCj4gKm1zZywNCj4gCQkJaW50IG1haW5fZmQg X19ydGVfdW51c2VkKQ0KPiB7DQo+IC4uLg0KPiAJaWYgKChkZXYtPmZsYWdzICYgVklSVElPX0RF Vl9CVUlMVElOX1ZJUlRJT19ORVQpICYmDQo+IAkgICAgIShkZXYtPmZlYXR1cmVzICYgKDFVTEwg PDwgVklSVElPX05FVF9GX01RKSkpIHsNCj4gCQkvKg0KPiAJCSAqIFJlbW92ZSBhbGwgYnV0IGZp cnN0IHF1ZXVlIHBhaXIgaWYgTVEgaGFzbid0IGJlZW4NCj4gCQkgKiBuZWdvdGlhdGVkLiBUaGlz IGlzIHNhZmUgYmVjYXVzZSB0aGUgZGV2aWNlIGlzIG5vdA0KPiAJCSAqIHJ1bm5pbmcgYXQgdGhp cyBzdGFnZS4NCj4gCQkgKi8NCj4gCQl3aGlsZSAoZGV2LT5ucl92cmluZyA+IDIpIHsNCj4gCQkJ c3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnE7DQo+IA0KPiAJCQl2cSA9IGRldi0+dmlydHF1ZXVl Wy0tZGV2LT5ucl92cmluZ107DQo+IAkJCWlmICghdnEpDQo+IAkJCQljb250aW51ZTsNCj4gDQo+ IAkJCWRldi0+dmlydHF1ZXVlW2Rldi0+bnJfdnJpbmddID0gTlVMTDsNCj4gCQkJY2xlYW51cF92 cSh2cSwgMSk7DQo+IAkJCWNsZWFudXBfdnFfaW5mbGlnaHQoZGV2LCB2cSk7DQo+IAkJCWZyZWVf dnEoZGV2LCB2cSk7DQo+IAkJfQ0KPiAJfQ0KPiANCj4gQXMgVklSVElPX05FVF9GX01RIGlzIG5l dmVyIG5lZ290aWF0ZWQgd2l0aCBjcnlwdG8gZGV2aWNlcywgaXQgbWVhbnMgeW91DQo+IGNhbiBu b3QgaGF2ZSBtb3JlIHRoYW4gdHdvIHF1ZXVlcy4NCj4gDQo+ID4+DQo+ID4+IEluZGVlZCwgd2Ug Y2Fubm90IGNvbnNpZGVyIHRoZSBkZXZpY2UgdG8gYmUgcmVhZHkgKGFuZCBzbyBjYWxsDQo+ID4+ IC5uZXdfZGV2aWNlIGNhbGxiYWNrKSBpZiBmZWF0dXJlcyBoYXZlbid0IGJlZW4gbmVnb3RpYXRl ZC4NCj4gPj4NCj4gPj4gSSBhZ3JlZSwgcnRlX3Zob3N0X2RyaXZlcl9zZXRfZmVhdHVyZXMoKSBo YXMgdG8gYmUgY2FsbGVkIGJlZm9yZQ0KPiA+PiAubmV3X2RldmljZSgpLCBhbmQgdGhhdCdzIHRo ZSByZWFzb24gd2h5IGl0IHRha2VzIHNvY2tldCdzIHBhdGggYW5kIG5vdA0KPiA+PiB2aWQgYXMg aW5wdXQuDQo+ID4NCj4gPiBEaWZmZXJlbnQgdGhhbiB2aG9zdF9ibGssIHZob3N0X2NyeXB0byBs aWVzIGluIHRoZSBsaWJyYXJ5IGFuZCBuZWVkcyB0byBiZQ0KPiA+IGFibGUgdG8gYmUgdHJlYXRl ZCBldmVubHkgYXMgdmlydGlvX25ldC4gV2l0aG91dCB0aGUgbmV3X2RldmljZSgpIGNhbGxpbmcN Cj4gPiBydGVfdmhvc3RfY3J5cHRvX2NyZWF0ZSgpIHRoZSBmZWF0dXJlIGZsYWcgY2Fubm90IGJl IHNldC4gV2l0aG91dCBzZXR0aW5nDQo+ID4gdGhlIGZlYXR1cmUgZmxhZyB0aGUgZGV2aWNlIGlz IGFsd2F5cyB0cmVhdGVkIGFzIHZpcnRpb19uZXQgZGV2aWNlLCBoZW5jZSBpdA0KPiA+IGNhbm5v dCBwYXNzIHRoZSB2aXJ0aW9faXNfcmVhZHkoKSBjaGVjayBhcyB0aGUgbnVtYmVyIG9mIHF1ZXVl cyB2aXJ0aW8NCj4gPiBjcnlwdCB1c2VzIGlzIG9ubHkgMSBpbnN0ZWFkIG9mIDIgKHJlcXVpcmVk IGJ5IHZpcnRpb19uZXQpLg0KPiANCj4gT0ssIHNvIHdlIGFyZSBhbGlnbmVkLCB3ZSBuZWVkIHRv IGZpbmQgYSBwcm9wZXIgc29sdXRpb24uIEkgdGhpbmsgeW91DQo+IG5lZWQgYSBzcGVjaWZpYyBk cml2ZXIgc3RhcnQgZnVuY3Rpb24gdGhhdCBkb2VzIG5vdCBzZXQNCj4gVklSVElPX0RFVl9CVUlM VElOX1ZJUlRJT19ORVQuDQo+IA0KPiBGaXJzdCB3ZSBjYW4gY2hhbmdlIHRoYXQgVklSVElPX0RF Vl9CVUlMVElOX1ZJUlRJT19ORVQgZmxhZyAgYnkgYSBuZXcNCj4gZmllbGQgaW4gdGhlIGRldmlj ZSB3aXRob3V0IGJyZWFraW5nIHRoZSBBUEk6DQo+IA0KPiBlbnVtIHZpcnRpb19iYWNrZW5kX3R5 cGUgew0KPiAJVklSVElPX0RFVl9VTktOT1dOID0gMCwgLyogTGlrZWx5IGV4dGVybmFsICovDQo+ ICAJVklSVElPX0RFVl9CVUlMVElOX05FVCwNCj4gCVZJUlRJT19ERVZfQlVJTFRJTl9DUllQVE8s DQo+IH07DQo+IA0KPiBzdHJ1Y3QgdmlydGlvX25ldCB7DQo+IC4uLg0KPiAJZW51bSB2aXJ0aW9f YmFja2VuZF90eXBlIHR5cGU7DQo+IH07DQo+IA0KPiANCj4gVGhlbiwgaW50cm9kdWNlIGEgbmV3 IEFQSSB0byBzdGFydCBjcnlwdG8gYmFja2VuZCB0aGF0IHdvdWxkIGJlIGNhbGxlZA0KPiBpbnN0 ZWFkIG9mIHJ0ZV92aG9zdF9kcml2ZXJfc3RhcnQoKToNCj4gDQo+IGludA0KPiBydGVfdmhvc3Rf Y3J5cHRvX2RyaXZlcl9zdGFydChjb25zdCBjaGFyICpwYXRoKQ0KPiB7DQo+IA0KPiAJcmV0dXJu IHZob3N0X2RyaXZlcl9zdGFydChwYXRoLCBWSVJUSU9fREVWX0JVSUxUSU5fQ1JZUFRPKTsNCj4g fQ0KPiANCj4gDQo+IGludA0KPiBydGVfdmhvc3RfZHJpdmVyX3N0YXJ0KGNvbnN0IGNoYXIgKnBh dGgpDQo+IHsNCj4gDQo+IAlyZXR1cm4gdmhvc3RfZHJpdmVyX3N0YXJ0KHBhdGgsIFZJUlRJT19E RVZfQlVJTFRJTl9ORVQpOw0KPiB9DQo+IA0KPiBBbmQgdGhlbiBwcm9wYWdhdGUgdGhlIGluZm8g ZG93biB0byB2aG9zdF9uZXdfZGV2aWNlKCkuDQo+IA0KPiBEb2VzIHRoYXQgbWFrZSBzZW5zZT8N Cj4gDQo+IE5vdGUgdGhhdCBpc3N1ZSBoYXMgYmVlbiByZXBvcnRlZCBkdXJpbmcgdjIwLjExIGN5 Y2xlIHdhcyBpdCB3YXMNCj4gaW50cm9kdWNlZCBpbiB2MjAuMDguIEl0IG1lYW5zIGl0IGhhcyBu b3QgYmVlbiB0ZXN0ZWQuIERvZXMgSW50ZWwgUUUgaGFzDQo+IHNvbWUgVmhvc3QgY3J5cHRvIHRl c3RzPw0KPiANCj4gVGhhbmtzLA0KPiBNYXhpbWUNCj4gDQo+ID4gUmVnYXJkcywNCj4gPiBGYW4N Cj4gPj4NCj4gPj4gVGhhbmtzLA0KPiA+PiBNYXhpbWUNCj4gPj4NCj4gPj4NCj4gPj4+IFRoYW5r cywNCj4gPj4+IENoZW5ibw0KPiA+Pj4NCj4gPj4+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0t LQ0KPiA+Pj4+IEZyb206IFpoYW5nLCBSb3kgRmFuIDxyb3kuZmFuLnpoYW5nQGludGVsLmNvbT4N Cj4gPj4+PiBTZW50OiBXZWRuZXNkYXksIFNlcHRlbWJlciAzMCwgMjAyMCAyOjE1IEFNDQo+ID4+ Pj4gVG86IE1heGltZSBDb3F1ZWxpbiA8bWF4aW1lLmNvcXVlbGluQHJlZGhhdC5jb20+OyBMaXUs DQo+IENoYW5ncGVuZw0KPiA+Pj4+IDxjaGFuZ3BlbmcubGl1QGludGVsLmNvbT47IGRldkBkcGRr Lm9yZw0KPiA+Pj4+IENjOiBtYXRhbkBtZWxsYW5veC5jb207IFhpYSwgQ2hlbmJvIDxjaGVuYm8u eGlhQGludGVsLmNvbT47DQo+ID4+IFphd2FkemtpLA0KPiA+Pj4+IFRvbWFzeiA8dG9tYXN6Lnph d2FkemtpQGludGVsLmNvbT47IFlpZ2l0LCBGZXJydWgNCj4gPj4gPGZlcnJ1aC55aWdpdEBpbnRl bC5jb20+DQo+ID4+Pj4gU3ViamVjdDogUkU6IFtkcGRrLWRldl0gW1BBVENIXSB2aG9zdDogcmV0 dXJuIHJlYWR5IHdoZW4gYXQgbGVhc3QgMQ0KPiB2cmluZw0KPiA+Pj4+IGlzIGNvbmZpZ3VyZWQN Cj4gPj4+Pg0KPiA+Pj4+IEhpIE1heGltZSwNCj4gPj4+Pg0KPiA+Pj4+IFRoYW5rcyBmb3IgdGVs bGluZyBtZSB0aGF0IGJ1dCB2aG9zdF9jcnlwdG8gaXMgc3RpbGwgYnJlYWtpbmcuDQo+ID4+Pj4N Cj4gPj4+PiBWaXJ0aW8tY3J5cHRvIChib3RoIExLQ0YgdmlydGlvLWNyeXB0IGRyaXZlciBhbmQg RFBESyB2aXJ0aW8tY3J5cHRvIFBNRCkNCj4gPj4+PiB3b24ndCBjcmVhdGUgZGV2aWNlIHF1ZXVl IHVudGlsIHRoZSBjcnlwdG8gc2Vzc2lvbiBpcyByZXF1aXJlZCB0byBiZQ0KPiA+Pj4+IGNyZWF0 ZWQuIFRodXMgdnFfaXNfcmVhZHkoKSB3aWxsIG5ldmVyIHJldHVybiB0cnVlIGR1cmluZyBpbml0 aWFsaXphdGlvbiAtDQo+ID4+Pj4gaGVuY2UgbmV3X2RldmljZSgpIGluIHZob3N0X2NyeXB0byBz YW1wbGUgYXBwIHdpbGwgbmV2ZXIgYmUNCj4gdHJpZ2dlcmVkLg0KPiA+Pj4+IEFsc28gc2luY2Ug cnRlX3Zob3N0X2RyaXZlcl9zZXRfZmVhdHVyZXMoKSBpcyBjYWxsZWQgaW5zaWRlDQo+ID4+Pj4g cnRlX3Zob3N0X2NyeXB0b19jcmVhdGUoKSwgd2hpY2ggaXMgdHJpZ2dlcmVkIGJ5IG5ld19kZXZp Y2UoKSBoYW5kbGVyLA0KPiA+PiB3ZQ0KPiA+Pj4+IGNhbm5vdCB1cGRhdGUgdGhlIGRldi0+Zmxh Z3MgdG8gYnlwYXNzIHRoZSAiaWYgKGRldi0+ZmxhZ3MgJg0KPiA+Pj4+IFZJUlRJT19ERVZfQlVJ TFRJTl9WSVJUSU9fTkVUKSIgY2hlY2sgYmVmb3JlIG5ld19kZXZpY2UoKSBpcw0KPiBjYWxsZWQu DQo+ID4+Pj4gd2hhdCB0aGUgbmV3IGxvZ2ljIHZpcnRpb19pc19yZWFkeSgpIHJlcXVpcmVtZW50 IHdpbGwgbmV2ZXIgbWVldCBmb3INCj4gPj4+PiB2aG9zdF9jcnlwdG8uDQo+ID4+Pj4NCj4gPj4+ PiBBIHdheSB0byBmaXggaXQgaXMgd2l0aCB0aGUgZm9sbG93aW5nIGNoYW5nZSAtDQo+ID4+Pj4N Cj4gPj4+PiBkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV92aG9zdC92aG9zdF91c2VyLmMNCj4gYi9s aWIvbGlicnRlX3Zob3N0L3Zob3N0X3VzZXIuYw0KPiA+Pj4+IGluZGV4IGIwMGUxZjkxZC4uZTUy NjNhMzYwIDEwMDY0NA0KPiA+Pj4+IC0tLSBhL2xpYi9saWJydGVfdmhvc3Qvdmhvc3RfdXNlci5j DQo+ID4+Pj4gKysrIGIvbGliL2xpYnJ0ZV92aG9zdC92aG9zdF91c2VyLmMNCj4gPj4+PiBAQCAt MTkzNyw2ICsxOTM3LDE0IEBAIHZob3N0X3VzZXJfc2V0X3ZyaW5nX2tpY2soc3RydWN0IHZpcnRp b19uZXQNCj4gPj4gKipwZGV2LA0KPiA+Pj4+IHN0cnVjdCBWaG9zdFVzZXJNc2cgKm1zZywNCj4g Pj4+PiAgICAgICAgICAgICAgICAgfQ0KPiA+Pj4+ICAgICAgICAgfQ0KPiA+Pj4+DQo+ID4+Pj4g KyAgICAgICAvKiB2aXJ0aW8tY3J5cHRvIHZxIGlzIG5vdCByZWFkeSB1bnRpbCBzZXNzaW9uIGlz IGNyZWF0ZWQuIENoZWNrDQo+ID4+Pj4gKyAgICAgICAgKiBoZXJlIGlmIHdlIG5lZWQgdG8gaW5p dGlhbGl6ZSBkZXZpY2UgYWdhaW4NCj4gPj4+PiArICAgICAgICAqLw0KPiA+Pj4+ICsgICAgICAg aWYgKCEoZGV2LT5mbGFncyAmIFZJUlRJT19ERVZfUlVOTklORykpIHsNCj4gPj4+PiArICAgICAg ICAgICAgICAgaWYgKGRldi0+bm90aWZ5X29wcy0+bmV3X2RldmljZShkZXYtPnZpZCkgPT0gMCkN Cj4gPj4+PiArICAgICAgICAgICAgICAgICAgICAgICBkZXYtPmZsYWdzIHw9IFZJUlRJT19ERVZf UlVOTklORzsNCj4gPj4+PiArICAgICAgIH0NCj4gPj4+PiArDQo+ID4+Pj4gICAgICAgICByZXR1 cm4gUlRFX1ZIT1NUX01TR19SRVNVTFRfT0s7DQo+ID4+Pj4gIH0NCj4gPj4+Pg0KPiA+Pj4+IGJ1 dCBJIGNhbm5vdCBhZGQgdmlydGlvX2lzX3JlYWR5KCkgaW5zaWRlIHRoZSAiIGlmICghKGRldi0+ ZmxhZ3MgJg0KPiA+Pj4+IFZJUlRJT19ERVZfUlVOTklORykpIiBjaGVjaywgc2luY2Ugd2UgbmVl ZCBuZXdfZGV2aWNlKCkgaXMgY2FsbGVkDQo+IHRvDQo+ID4+IHNldA0KPiA+Pj4+IHRoZSBmZWF0 dXJlIGZsYWdzIC0gaWYgdG8gc2V0IHRoZSBmZWF0dXJlIGZsYWdzIGluIHRoZSBleGFtcGxlIGlu c3RlYWQsDQo+ID4+Pj4gdGhlIGxvZ2ljIHdpbGwgbm90IHJpZ2h0LCBzaW5jZSB2aXJ0aW8tbmV0 IGRvZXMgbm90IHJlcXVpcmUgdGhlIHVzZXIgdG8NCj4gPj4+PiBzZXQgdGhlIGZsYWdzIHRoZW1z ZWx2ZXMgZWl0aGVyLg0KPiA+Pj4+DQo+ID4+Pj4gUmVnYXJkcywNCj4gPj4+PiBGYW4NCj4gPj4+ Pg0KPiA+Pj4+DQo+ID4+Pj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+Pj4+IEZy b206IE1heGltZSBDb3F1ZWxpbiA8bWF4aW1lLmNvcXVlbGluQHJlZGhhdC5jb20+DQo+ID4+Pj4+ IFNlbnQ6IFR1ZXNkYXksIFNlcHRlbWJlciAyOSwgMjAyMCAzOjA2IFBNDQo+ID4+Pj4+IFRvOiBa aGFuZywgUm95IEZhbiA8cm95LmZhbi56aGFuZ0BpbnRlbC5jb20+OyBMaXUsIENoYW5ncGVuZw0K PiA+Pj4+PiA8Y2hhbmdwZW5nLmxpdUBpbnRlbC5jb20+OyBkZXZAZHBkay5vcmcNCj4gPj4+Pj4g Q2M6IG1hdGFuQG1lbGxhbm94LmNvbTsgWGlhLCBDaGVuYm8gPGNoZW5iby54aWFAaW50ZWwuY29t PjsNCj4gPj4gWmF3YWR6a2ksDQo+ID4+Pj4+IFRvbWFzeiA8dG9tYXN6Lnphd2FkemtpQGludGVs LmNvbT4NCj4gPj4+Pj4gU3ViamVjdDogUmU6IFtkcGRrLWRldl0gW1BBVENIXSB2aG9zdDogcmV0 dXJuIHJlYWR5IHdoZW4gYXQgbGVhc3QgMQ0KPiA+Pj4+IHZyaW5nIGlzDQo+ID4+Pj4+IGNvbmZp Z3VyZWQNCj4gPj4+Pj4NCj4gPj4+Pj4gSGkgRmFuLA0KPiA+Pj4+Pg0KPiA+Pj4+PiBUaGUgcGF0 Y2ggaXMgYWxyZWFkeSBtZXJnZWQgaW4gbWFpbiBicmFuY2g6DQo+ID4+Pj4+DQo+ID4+Pj4+IGNv bW1pdCAwOTQyNGMzZjc0MzExNTU1YzMzZDNkNGNkYzJjYTM2NTRjZTEzYjFjDQo+ID4+Pj4+IEF1 dGhvcjogTWF4aW1lIENvcXVlbGluIDxtYXhpbWUuY29xdWVsaW5AcmVkaGF0LmNvbT4NCj4gPj4+ Pj4gRGF0ZTogICBXZWQgU2VwIDIzIDExOjQ5OjAyIDIwMjAgKzAyMDANCj4gPj4+Pj4NCj4gPj4+ Pj4gICAgIHZob3N0OiBmaXggZXh0ZXJuYWwgYmFja2VuZHMgcmVhZGluZXNzDQo+ID4+Pj4+DQo+ ID4+Pj4+ICAgICBDb21taXQgZDBmY2MzOGY1ZmE0ICgidmhvc3Q6IGltcHJvdmUgZGV2aWNlIHJl YWRpbmVzcw0KPiBub3RpZmljYXRpb25zIikNCj4gPj4+Pj4gICAgIG1ha2VzIHRoZSBhc3N1bXB0 aW9uIHRoYXQgZXZlcnkgVmlydGlvIGRldmljZXMgYXJlIGNvbnNpZGVyZWQNCj4gPj4+Pj4gICAg IHJlYWR5IGZvciBwcmVvY2Vzc2luZyBhcyBzb29uIGFzIGZpcnN0IHF1ZXVlIHBhaXIgaXMgY29u ZmlndXJlZA0KPiA+Pj4+PiAgICAgYW5kIGVuYWJsZWQuDQo+ID4+Pj4+DQo+ID4+Pj4+ICAgICBX aGlsZSB0aGlzIGlzIHRydWUgZm9yIFZpcnRpby1uZXQsIGl0IGlzbid0IGZvciBWaXJ0aW8tc2Nz aQ0KPiA+Pj4+PiAgICAgYW5kIFZpcnRpby1ibGsuDQo+ID4+Pj4+DQo+ID4+Pj4+ICAgICBUaGlz IHBhdGNoIGZpeGVzIHRoaXMgYnkgb25seSBtYWtpbmcgdGhpcyBhc3N1bXB0aW9uIGZvcg0KPiA+ Pj4+PiAgICAgdGhlIGJ1aWx0aW4gVmlydGlvLW5ldCBiYWNrZW5kLCBhbmQgcmVzdG9yZXMgYmFj ayB0byBwcmV2aW91cw0KPiA+Pj4+PiAgICAgYmVoYXZpb3VyIGZvciBvdGhlciBiYWNrZW5kcy4N Cj4gPj4+Pj4NCj4gPj4+Pj4gICAgIEZpeGVzOiBkMGZjYzM4ZjVmYTQgKCJ2aG9zdDogaW1wcm92 ZSBkZXZpY2UgcmVhZGluZXNzIG5vdGlmaWNhdGlvbnMiKQ0KPiA+Pj4+Pg0KPiA+Pj4+PiAgICAg UmVwb3J0ZWQtYnk6IENoYW5ncGVuZyBMaXUgPGNoYW5ncGVuZy5saXVAaW50ZWwuY29tPg0KPiA+ Pj4+PiAgICAgU2lnbmVkLW9mZi1ieTogTWF4aW1lIENvcXVlbGluIDxtYXhpbWUuY29xdWVsaW5A cmVkaGF0LmNvbT4NCj4gPj4+Pj4gICAgIFNpZ25lZC1vZmYtYnk6IENoYW5ncGVuZyBMaXUgPGNo YW5ncGVuZy5saXVAaW50ZWwuY29tPg0KPiA+Pj4+PiAgICAgUmV2aWV3ZWQtYnk6IENoZW5ibyBY aWEgPGNoZW5iby54aWFAaW50ZWwuY29tPg0KPiA+Pj4+Pg0KPiA+Pj4+Pg0KPiA+Pj4+PiBSZWdh cmRzLA0KPiA+Pj4+PiBNYXhpbWUNCj4gPj4+Pj4NCj4gPj4+Pj4gT24gOS8yOS8yMCAzOjU0IFBN LCBaaGFuZywgUm95IEZhbiB3cm90ZToNCj4gPj4+Pj4+IEhpIE1heGltZSwNCj4gPj4+Pj4+DQo+ ID4+Pj4+PiBWaG9zdC1jcnlwdG8gaGFzIGV4YWN0bHkgdGhlIHNhbWUgaXNzdWUuIENoYW5ncGVu ZydzIHBhdGNoIGZpeGVkIGl0Lg0KPiA+Pj4+Pj4gQ291bGQgeW91IGdpdmUgbWUgYSBzaG91dCB3 aGVuIHlvdXIgcGF0Y2ggaXMgb3V0LCBzbyBJIGNhbiBoYXZlIGENCj4gdGVzdD8NCj4gPj4+Pj4+ DQo+ID4+Pj4+PiBSZWdhcmRzLA0KPiA+Pj4+Pj4gRmFuDQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4+IC0t LS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+Pj4+Pj4gRnJvbTogZGV2IDxkZXYtYm91bmNl c0BkcGRrLm9yZz4gT24gQmVoYWxmIE9mIE1heGltZQ0KPiBDb3F1ZWxpbg0KPiA+Pj4+Pj4+IFNl bnQ6IFdlZG5lc2RheSwgU2VwdGVtYmVyIDIzLCAyMDIwIDk6MDUgQU0NCj4gPj4+Pj4+PiBUbzog TGl1LCBDaGFuZ3BlbmcgPGNoYW5ncGVuZy5saXVAaW50ZWwuY29tPjsgZGV2QGRwZGsub3JnDQo+ ID4+Pj4+Pj4gQ2M6IG1hdGFuQG1lbGxhbm94LmNvbTsgWGlhLCBDaGVuYm8gPGNoZW5iby54aWFA aW50ZWwuY29tPjsNCj4gPj4+Pj4gWmF3YWR6a2ksDQo+ID4+Pj4+Pj4gVG9tYXN6IDx0b21hc3ou emF3YWR6a2lAaW50ZWwuY29tPg0KPiA+Pj4+Pj4+IFN1YmplY3Q6IFJlOiBbZHBkay1kZXZdIFtQ QVRDSF0gdmhvc3Q6IHJldHVybiByZWFkeSB3aGVuIGF0IGxlYXN0DQo+IDENCj4gPj4+PiB2cmlu Zw0KPiA+Pj4+PiBpcw0KPiA+Pj4+Pj4+IGNvbmZpZ3VyZWQNCj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+ IEhpIENoYW5ncGVuZywNCj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+IE9uIDkvMjIvMjAgOToyMiBBTSwg TGl1LCBDaGFuZ3Blbmcgd3JvdGU6DQo+ID4+Pj4+Pj4+IEhpIE1heGltZSwNCj4gPj4+Pj4+Pj4N Cj4gPj4+Pj4+Pj4gVGhlIGNvZGUgeW91IHdyb3RlIHN0aWxsIG5lZWQgdG8gY2hlY2sgbnJfdnJp bmcgaXMgMCBvciBub3QsIHNlZSB0aGUNCj4gPj4+PiBleHRyYQ0KPiA+Pj4+PiAyDQo+ID4+Pj4+ Pj4gbGluZXMgYWRkZWQgYmVsb3csIHRoZW4gaXQgY2FuIHdvcmsgd2l0aCBteSB0ZXN0cyBmb3Ig bm93LCBjb3VsZA0KPiB5b3UNCj4gPj4+Pj4gc3VibWl0DQo+ID4+Pj4+Pj4gYSBwYXRjaCB0byBE UERLIHRvIGFwcGx5IHRoZSBwYXRjaD8gVGhhbmtzLg0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4gVGhh bmtzISBZb3UgYXJlIHJpZ2h0Lg0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4gSSdsbCBzZW5kIHRoZSBw YXRjaCBub3cgaW5jbHVkaW5nIHlvdXIgZml4Lg0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4+IEJUVywg ZHBkayB2aG9zdCBsaWJyYXJ5IHN0aWxsIGhhcyBhbiBpc3N1ZSwgaXQncyBub3QgcmVsYXRlZCB3 aXRoDQo+ID4+Pj4gY29tbWl0DQo+ID4+Pj4+Pj4gZDBmY2MzOGYsIHRoZSBHdWVzdCBkcml2ZXIg bWF5IG9ubHkga2ljayAxIHZyaW5nIGV2ZW4gaXQgc2VuZHMNCj4gPj4+Pj4gTlVNX1FVRVVFUw0K PiA+Pj4+Pj4+IHdpdGggYSBiaWdnZXIgdmFsdWUsDQo+ID4+Pj4+Pj4+IHRoaXMgaXMgcXVpdGUg Y29tbW9uIGluIHNlYWJpb3MsIGUuZzogdmlydGlvX2JsayB3aWxsIG9ubHkgdXNlIDENCj4gPj4+ PiB2cmluZyBpbg0KPiA+Pj4+Pj4+IHNlYWJpb3MsIHRoaXMgbWVhbnMgdGhlIGJhY2tlbmQgd2ls bCBuZXZlciBnZXQgc3RhcnRlZCBpbiBCSU9TLg0KPiA+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+DQo+ID4+ Pj4+Pj4gSWYgSSB1bmRlcnN0YW5kIGNvcnJlY3RseSwgdGhpcyBpcyBub3QgYSByZWdyZXNzaW9u IGJ1dCBoYXMgYWx3YXlzDQo+ID4+Pj4gYmVlbg0KPiA+Pj4+Pj4+IGhlcmU/DQo+ID4+Pj4+Pj4N Cj4gPj4+Pj4+PiBXZSBzaG91bGQgd29yayBvbiBmaXhpbmcgaXQgYW55d2F5LCBidXQgSSdtIG5v dCBzdXJlIHRvIGhhdmUgdGhlDQo+IHRpbWUNCj4gPj4+Pj4+PiBmb3IgdjIwLjExLjAuIEl0IHdv dWxkIGJlIGdyZWF0IGlmIHlvdSBjb3VsZCBwcm92aWRlIHN0ZXBzIHRvDQo+ID4+Pj4gcmVwcm9k dWNlDQo+ID4+Pj4+Pj4gaXQuIE1heWJlIGZpbGUgYSBidWcgaW4gRFBESyB0cmFja2VyPw0KPiA+ Pj4+Pj4+DQo+ID4+Pj4+Pj4gVGhhbmtzLA0KPiA+Pj4+Pj4+IE1heGltZQ0KPiA+Pj4+Pj4+DQo+ ID4+Pj4+Pj4+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+Pj4+Pj4+Pj4gRnJvbTog TWF4aW1lIENvcXVlbGluIDxtYXhpbWUuY29xdWVsaW5AcmVkaGF0LmNvbT4NCj4gPj4+Pj4+Pj4+ IFNlbnQ6IE1vbmRheSwgU2VwdGVtYmVyIDIxLCAyMDIwIDY6MjAgUE0NCj4gPj4+Pj4+Pj4+IFRv OiBMaXUsIENoYW5ncGVuZyA8Y2hhbmdwZW5nLmxpdUBpbnRlbC5jb20+OyBkZXZAZHBkay5vcmcN Cj4gPj4+Pj4+Pj4+IENjOiBtYXRhbkBtZWxsYW5veC5jb207IFhpYSwgQ2hlbmJvIDxjaGVuYm8u eGlhQGludGVsLmNvbT47DQo+ID4+Pj4+Pj4gWmF3YWR6a2ksDQo+ID4+Pj4+Pj4+PiBUb21hc3og PHRvbWFzei56YXdhZHpraUBpbnRlbC5jb20+DQo+ID4+Pj4+Pj4+PiBTdWJqZWN0OiBSZTogW1BB VENIXSB2aG9zdDogcmV0dXJuIHJlYWR5IHdoZW4gYXQgbGVhc3QgMSB2cmluZyBpcw0KPiA+Pj4+ Pj4+IGNvbmZpZ3VyZWQNCj4gPj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4NCj4g Pj4+Pj4+Pj4+IE9uIDkvMjEvMjAgNzowMyBBTSwgTGl1LCBDaGFuZ3Blbmcgd3JvdGU6DQo+ID4+ Pj4+Pj4+Pj4gSGkgTWF4aW1lLA0KPiA+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+IC0tLS0tT3Jp Z2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+Pj4+Pj4+Pj4+IEZyb206IE1heGltZSBDb3F1ZWxpbiA8 bWF4aW1lLmNvcXVlbGluQHJlZGhhdC5jb20+DQo+ID4+Pj4+Pj4+Pj4+IFNlbnQ6IEZyaWRheSwg U2VwdGVtYmVyIDE4LCAyMDIwIDU6NTQgUE0NCj4gPj4+Pj4+Pj4+Pj4gVG86IExpdSwgQ2hhbmdw ZW5nIDxjaGFuZ3BlbmcubGl1QGludGVsLmNvbT47DQo+IGRldkBkcGRrLm9yZw0KPiA+Pj4+Pj4+ Pj4+PiBDYzogbWF0YW5AbWVsbGFub3guY29tOyBYaWEsIENoZW5ibw0KPiA8Y2hlbmJvLnhpYUBp bnRlbC5jb20+Ow0KPiA+Pj4+Pj4+IFphd2FkemtpLA0KPiA+Pj4+Pj4+Pj4+PiBUb21hc3ogPHRv bWFzei56YXdhZHpraUBpbnRlbC5jb20+DQo+ID4+Pj4+Pj4+Pj4+IFN1YmplY3Q6IFJlOiBbUEFU Q0hdIHZob3N0OiByZXR1cm4gcmVhZHkgd2hlbiBhdCBsZWFzdCAxIHZyaW5nDQo+IGlzDQo+ID4+ Pj4+Pj4gY29uZmlndXJlZA0KPiA+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+PiBIaSBDaGFuZ3Bl bmcsDQo+ID4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+IE9uIDkvMS8yMCA5OjA3IEFNLCBDaGFu Z3BlbmcgTGl1IHdyb3RlOg0KPiA+Pj4+Pj4+Pj4+Pj4gQ29tbWl0IGQwZmNjMzhmICJ2aG9zdDog aW1wcm92ZSBkZXZpY2UgcmVhZGluZXNzDQo+ID4+IG5vdGlmaWNhdGlvbnMiDQo+ID4+Pj4+Pj4+ Pj4+PiBuZWVkcyBhdCBsZWFzdCAyIHZyaW5ncyBiZWZvcmUgY2hhbmdpbmcgdGhlIGRldmljZSBz dGF0ZSB0bw0KPiA+Pj4+Pj4+Pj4+Pj4gcmVhZHksIHRoaXMgaXMgZmluZSBmb3IgTkVUIGRldmlj ZSBidXQgbm90IGNvcnJlY3QgZm9yIEJMSw0KPiA+Pj4+Pj4+Pj4+Pj4gZGV2aWNlLg0KPiA+Pj4+ Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4+IFRoZSBudW1iZXIgb2YgdnJpbmcgcmVxdWlyZWQgc2hv dWxkIGJlIGJhc2VkIG9uIHRoZSBkZXZpY2UNCj4gPj4+Pj4+Pj4+Pj4+IHR5cGUsIGUuZy4gdmly dGlvX3Njc2kgZGV2aWNlIG5lZWRzIGF0IGxlYXN0IDMgdnJpbmdzLCBhbmQNCj4gPj4+Pj4+Pj4+ Pj4+IHZpcnRpb19uZXQgbmVlZHMgYXQgbGVhc3QgMiB2cmluZ3MsIHZpcnRpb19ibGsgbmVlZHMg YXQgbGVhc3QNCj4gPj4+Pj4+Pj4+Pj4+IDEgdnJpbmcuIFNvIGluc3RlYWQgb2YgZG9pbmcgaXQg aW4gdmhvc3QgbGlicmFyeSBpdCdzIGJldHRlcg0KPiA+Pj4+Pj4+Pj4+Pj4gdGhhdCB0aGUgYXBw bGljYXRpb24gd2hvIHVzZXMgdGhpcyBsaWJyYXJ5IGRvIHRoaXMgY2hlY2suDQo+ID4+Pj4+Pj4+ Pj4+Pg0KPiA+Pj4+Pj4+Pj4+Pj4gU2lnbmVkLW9mZi1ieTogQ2hhbmdwZW5nIExpdSA8Y2hhbmdw ZW5nLmxpdUBpbnRlbC5jb20+DQo+ID4+Pj4+Pj4+Pj4+PiAtLS0NCj4gPj4+Pj4+Pj4+Pj4+ICBs aWIvbGlicnRlX3Zob3N0L3Zob3N0X3VzZXIuYyB8IDIgKy0NCj4gPj4+Pj4+Pj4+Pj4+ICAxIGZp bGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkNCj4gPj4+Pj4+Pj4+Pj4+ DQo+ID4+Pj4+Pj4+Pj4+PiBkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV92aG9zdC92aG9zdF91c2Vy LmMNCj4gPj4+Pj4+PiBiL2xpYi9saWJydGVfdmhvc3Qvdmhvc3RfdXNlci5jDQo+ID4+Pj4+Pj4+ Pj4+PiBpbmRleCBjM2M5MjRmLi40ZDE4ODNjIDEwMDY0NA0KPiA+Pj4+Pj4+Pj4+Pj4gLS0tIGEv bGliL2xpYnJ0ZV92aG9zdC92aG9zdF91c2VyLmMNCj4gPj4+Pj4+Pj4+Pj4+ICsrKyBiL2xpYi9s aWJydGVfdmhvc3Qvdmhvc3RfdXNlci5jDQo+ID4+Pj4+Pj4+Pj4+PiBAQCAtMTM0Myw3ICsxMzQz LDcgQEANCj4gPj4+Pj4+Pj4+Pj4+ICAJICAgICAgIHZxLT5lbmFibGVkOw0KPiA+Pj4+Pj4+Pj4+ Pj4gIH0NCj4gPj4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+PiAtI2RlZmluZSBWSVJUSU9fREVW X05VTV9WUVNfVE9fQkVfUkVBRFkgMnUNCj4gPj4+Pj4+Pj4+Pj4+ICsjZGVmaW5lIFZJUlRJT19E RVZfTlVNX1ZRU19UT19CRV9SRUFEWSAxdQ0KPiA+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+PiBJ IHRoaW5rIGl0IHdvdWxkIGJlIGJldHRlciB0byByZWx5IG9uDQo+ID4+Pj4+IFZJUlRJT19ERVZf QlVJTFRJTl9WSVJUSU9fTkVUDQo+ID4+Pj4+Pj4gdG8NCj4gPj4+Pj4+Pj4+Pj4ga25vdyB3aGV0 aGVyIGl0IHNob3VsZCB3YWl0IGZvciAxIG9yIDIgcXVldWVzIHRvIGRldGVybWluZSBpZg0KPiA+ Pj4+IHJlYWR5Lg0KPiA+Pj4+Pj4+Pj4+IHZpcnRpb19zY3NpIG5lZWRzIGF0IGxlYXN0IDMgdnJp bmdzLCBzbyBib3RoIDEgYW5kIDIgY2FuJ3Qgd29yaw0KPiA+Pj4+IGZvcg0KPiA+Pj4+Pj4+IHZp cnRpb19zY3NpDQo+ID4+Pj4+Pj4+PiBkZXZpY2UuDQo+ID4+Pj4+Pj4+Pj4gQ2FuIHdlIGV4cG9z ZSBhbiBBUEkgdG8gbGV0IHRoZSBjYWxsZXIgdG8gc2V0IHRoZSBtaW5pbXVtDQo+ID4+IG51bWJl cg0KPiA+Pj4+IG9mDQo+ID4+Pj4+Pj4gdnJpbmdzDQo+ID4+Pj4+Pj4+PiByZXF1aXJlZCBieQ0K PiA+Pj4+Pj4+Pj4+IHZpcnRpbyBkZXZpY2U/DQo+ID4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4gT0ss IHRoYW5rcyBmb3IgcG9pbnRpbmcgdGhpcyBvdXQsIEkgbWlzc2VkIGl0Lg0KPiA+Pj4+Pj4+Pj4N Cj4gPj4+Pj4+Pj4+IEknbSBub3QgaW4gZmF2b3Igb2YgaW50cm9kdWNpbmcgYW4gbmV3IEFQSSBm b3IgdGhpcy4NCj4gPj4+Pj4+Pj4+IEkgcHJvcG9zZSB0byByZXN0cmljdCBjaGFuZ2UgaW50cm9k dWNlZCBpbiBjb21taXQgZDBmY2MzOGYgdG8gdGhlDQo+ID4+Pj4+Pj4+PiBidWlsdGluIG5ldCBi YWNrZW5kLiBDYW4geW91IGhhdmUgYSB0cnkgd2l0aCBiZWxvdyBwYXRjaD8NCj4gPj4+Pj4+Pj4+ DQo+ID4+Pj4+Pj4+PiBUaGFua3MgaW4gYWR2YW5jZSwNCj4gPj4+Pj4+Pj4+IE1heGltZQ0KPiA+ Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4+ICBz dGF0aWMgaW50DQo+ID4+Pj4+Pj4+Pj4+PiAgdmlydGlvX2lzX3JlYWR5KHN0cnVjdCB2aXJ0aW9f bmV0ICpkZXYpDQo+ID4+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pg0KPiA+ Pj4+Pj4+Pj4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfdmhvc3Qvdmhvc3RfdXNlci5jDQo+ID4+ Pj4+IGIvbGliL2xpYnJ0ZV92aG9zdC92aG9zdF91c2VyLmMNCj4gPj4+Pj4+Pj4+IGluZGV4IDUw MTIxOGUxOTIuLmY1NzFlZjkzZmMgMTAwNjQ0DQo+ID4+Pj4+Pj4+PiAtLS0gYS9saWIvbGlicnRl X3Zob3N0L3Zob3N0X3VzZXIuYw0KPiA+Pj4+Pj4+Pj4gKysrIGIvbGliL2xpYnJ0ZV92aG9zdC92 aG9zdF91c2VyLmMNCj4gPj4+Pj4+Pj4+IEBAIC0xMzQzLDIxICsxMzQzLDI1IEBAIHZxX2lzX3Jl YWR5KHN0cnVjdCB2aXJ0aW9fbmV0ICpkZXYsDQo+ID4+IHN0cnVjdA0KPiA+Pj4+Pj4+Pj4gdmhv c3RfdmlydHF1ZXVlICp2cSkNCj4gPj4+Pj4+Pj4+ICAgICAgICAgICAgICAgIHZxLT5lbmFibGVk Ow0KPiA+Pj4+Pj4+Pj4gIH0NCj4gPj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+PiAtI2RlZmluZSBWSVJU SU9fREVWX05VTV9WUVNfVE9fQkVfUkVBRFkgMnUNCj4gPj4+Pj4+Pj4+ICsjZGVmaW5lIFZJUlRJ T19CVUlMVElOX05VTV9WUVNfVE9fQkVfUkVBRFkgMnUNCj4gPj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+ PiAgc3RhdGljIGludA0KPiA+Pj4+Pj4+Pj4gIHZpcnRpb19pc19yZWFkeShzdHJ1Y3QgdmlydGlv X25ldCAqZGV2KQ0KPiA+Pj4+Pj4+Pj4gIHsNCj4gPj4+Pj4+Pj4+ICAgICAgICAgc3RydWN0IHZo b3N0X3ZpcnRxdWV1ZSAqdnE7DQo+ID4+Pj4+Pj4+PiAtICAgICAgIHVpbnQzMl90IGk7DQo+ID4+ Pj4+Pj4+PiArICAgICAgIHVpbnQzMl90IGksIG5yX3ZyaW5nID0gZGV2LT5ucl92cmluZzsNCj4g Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+PiAgICAgICAgIGlmIChkZXYtPmZsYWdzICYgVklSVElPX0RF Vl9SRUFEWSkNCj4gPj4+Pj4+Pj4+ICAgICAgICAgICAgICAgICByZXR1cm4gMTsNCj4gPj4+Pj4+ Pj4+DQo+ID4+Pj4+Pj4+PiAtICAgICAgIGlmIChkZXYtPm5yX3ZyaW5nIDwgVklSVElPX0RFVl9O VU1fVlFTX1RPX0JFX1JFQURZKQ0KPiA+Pj4+Pj4+Pj4gLSAgICAgICAgICAgICAgIHJldHVybiAw Ow0KPiA+Pj4+Pj4+Pj4gKyAgICAgICBpZiAoZGV2LT5mbGFncyAmIFZJUlRJT19ERVZfQlVJTFRJ Tl9WSVJUSU9fTkVUKSB7DQo+ID4+Pj4+Pj4+PiArICAgICAgICAgICAgICAgbnJfdnJpbmcgPSBW SVJUSU9fQlVJTFRJTl9OVU1fVlFTX1RPX0JFX1JFQURZOw0KPiA+Pj4+Pj4+Pj4gKw0KPiA+Pj4+ Pj4+Pj4gKyAgICAgICAgICAgICAgIGlmIChkZXYtPm5yX3ZyaW5nIDwgbnJfdnJpbmcpDQo+ID4+ Pj4+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsNCj4gPj4+Pj4+Pj4+ICsg ICAgICAgfQ0KPiA+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+PiAgICArICAgICAgICAgaWYoIW5yX3ZyaW5n KQ0KPiA+Pj4+Pj4+PiAgICArICAgICAgICAgICAgIHJldHVybiAwOw0KPiA+Pj4+Pj4+Pj4NCj4g Pj4+Pj4+Pj4+IC0gICAgICAgZm9yIChpID0gMDsgaSA8IFZJUlRJT19ERVZfTlVNX1ZRU19UT19C RV9SRUFEWTsgaSsrKSB7DQo+ID4+Pj4+Pj4+PiArICAgICAgIGZvciAoaSA9IDA7IGkgPCBucl92 cmluZzsgaSsrKSB7DQo+ID4+Pj4+Pj4+PiAgICAgICAgICAgICAgICAgdnEgPSBkZXYtPnZpcnRx dWV1ZVtpXTsNCj4gPj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+PiAgICAgICAgICAgICAgICAgaWYgKCF2 cV9pc19yZWFkeShkZXYsIHZxKSkNCj4gPj4+Pj4+Pj4NCj4gPj4+Pj4+DQo+ID4+Pg0KPiA+DQoN Cg==