From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by dpdk.org (Postfix) with ESMTP id 497692C2F for ; Tue, 30 Oct 2018 13:22:03 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 30 Oct 2018 05:22:02 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.54,444,1534834800"; d="scan'208,217";a="99973351" Received: from fmsmsx106.amr.corp.intel.com ([10.18.124.204]) by fmsmga002.fm.intel.com with ESMTP; 30 Oct 2018 05:22:02 -0700 Received: from fmsmsx157.amr.corp.intel.com (10.18.116.73) by FMSMSX106.amr.corp.intel.com (10.18.124.204) with Microsoft SMTP Server (TLS) id 14.3.408.0; Tue, 30 Oct 2018 05:22:02 -0700 Received: from shsmsx102.ccr.corp.intel.com (10.239.4.154) by FMSMSX157.amr.corp.intel.com (10.18.116.73) with Microsoft SMTP Server (TLS) id 14.3.408.0; Tue, 30 Oct 2018 05:22:01 -0700 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.117]) by shsmsx102.ccr.corp.intel.com ([169.254.2.84]) with mapi id 14.03.0415.000; Tue, 30 Oct 2018 20:21:59 +0800 From: "Lin, Xueqin" To: Alejandro Lucero CC: "Yao, Lei A" , Thomas Monjalon , dev , "Xu, Qian Q" , "Burakov, Anatoly" , "Yigit, Ferruh" , "Zhang, Qi Z" Thread-Topic: [dpdk-dev] [PATCH v3 0/6] use IOVAs check based on DMA mask Thread-Index: AQHUbwHVCqPw4mslyE66+0cqAeEf9aU14R4g//+BeYCAAJNOUP//fw2AgAAGWoCAAAFZAIAAF0MAgAACGoCAABM6AIAAi+4w//+ArgAALSJAoP//5lCA//9wTDCAAJ+3gP//ZyZQ Date: Tue, 30 Oct 2018 12:21:59 +0000 Message-ID: <0D300480287911409D9FF92C1FA2A3355B443098@SHSMSX104.ccr.corp.intel.com> References: <1538743527-8285-1-git-send-email-alejandro.lucero@netronome.com> <2737161.TvyDVilZt4@xps> <2DBBFF226F7CF64BAFCA79B681719D954502B94F@shsmsx102.ccr.corp.intel.com> <0D300480287911409D9FF92C1FA2A3355B442C48@SHSMSX104.ccr.corp.intel.com> <0D300480287911409D9FF92C1FA2A3355B443027@SHSMSX104.ccr.corp.intel.com> In-Reply-To: Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: Re: [dpdk-dev] [PATCH v3 0/6] use IOVAs check based on DMA mask 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: , X-List-Received-Date: Tue, 30 Oct 2018 12:22:10 -0000 U29tZSBmb3VuZCBvbiBzb21lIG91ciBzZXJ2ZXJzOg0KSWYgIG5vdCBhZGQg4oCdaW50ZWxfaW9t bXU9b24gaW9tbXU9cHTigJ0gaW4gL2Jvb3QvZ3J1YjIvZ3J1Yi5jZmcgZmlsZSwgdGhlbiByZWJv b3QgdG8gbWFrZSBpdCBlZmZlY3RpdmUuDQoxOC4xMSByYzE6IFN1Y2Nlc3MgdG8gc2V0dXAgdGVz dHBtZCAgYW5kIHNlY29uZGFyeSBwcm9jZXNzLg0KDQpJZiAgYWRkICDigJ1pbnRlbF9pb21tdT1v biBpb21tdT1wdOKAnSBpbiAvYm9vdC9ncnViMi9ncnViLmNmZyBmaWxlLCB0aGVuIHJlYm9vdCB0 byBtYWtlIGl0IGVmZmVjdGl2ZS4NCjE4LjExIHJjMTogIEZhaWwgdG8gc2V0dXAgdGVzdHBtZCAg YW5kIHNlY29uZGFyeSBwcm9jZXNzLg0KMTguMTEgcmMxKyBkbWFfbWFza19maXggcGF0Y2g6IHN1 Y2Nlc3MgdG8gc2V0dXAgdGVzdHBtZCwgYnV0IGZhaWwgdG8gc2V0dXAgc2Vjb25kYXJ5IHByb2Nl c3MuDQoNCk1heWJlIOKAnWludGVsX2lvbW11PW9uIGlvbW11PXB04oCdIGVuYWJsZSBvciBub3Qg cmVzdWx0IGluIG91ciB0ZXN0IGdhcC4NCk1vc3Qgb2Ygb3VyIHRlYW0gc2VydmVycyBzaG91bGQg ZW5hYmxlIHRoZSBJT01NVSBmb3IgVlQtZCBhbmQgdmZpbyB0ZXN0Lg0KDQpCZXN0IHJlZ2FyZHMs DQpYdWVxaW4NCg0KRnJvbTogQWxlamFuZHJvIEx1Y2VybyBbbWFpbHRvOmFsZWphbmRyby5sdWNl cm9AbmV0cm9ub21lLmNvbV0NClNlbnQ6IFR1ZXNkYXksIE9jdG9iZXIgMzAsIDIwMTggNjozOCBQ TQ0KVG86IExpbiwgWHVlcWluIDx4dWVxaW4ubGluQGludGVsLmNvbT4NCkNjOiBZYW8sIExlaSBB IDxsZWkuYS55YW9AaW50ZWwuY29tPjsgVGhvbWFzIE1vbmphbG9uIDx0aG9tYXNAbW9uamFsb24u bmV0PjsgZGV2IDxkZXZAZHBkay5vcmc+OyBYdSwgUWlhbiBRIDxxaWFuLnEueHVAaW50ZWwuY29t PjsgQnVyYWtvdiwgQW5hdG9seSA8YW5hdG9seS5idXJha292QGludGVsLmNvbT47IFlpZ2l0LCBG ZXJydWggPGZlcnJ1aC55aWdpdEBpbnRlbC5jb20+OyBaaGFuZywgUWkgWiA8cWkuei56aGFuZ0Bp bnRlbC5jb20+DQpTdWJqZWN0OiBSZTogW2RwZGstZGV2XSBbUEFUQ0ggdjMgMC82XSB1c2UgSU9W QXMgY2hlY2sgYmFzZWQgb24gRE1BIG1hc2sNCg0KDQpPbiBUdWUsIE9jdCAzMCwgMjAxOCBhdCAx MDozNCBBTSBMaW4sIFh1ZXFpbiA8eHVlcWluLmxpbkBpbnRlbC5jb208bWFpbHRvOnh1ZXFpbi5s aW5AaW50ZWwuY29tPj4gd3JvdGU6DQpIaSBMdWNlcm8sDQoNCk5vLCB3ZSBoYXZlIHJlcHJvZHVj ZWQgbXVsdGktcHJvY2VzcyBpc3N1ZXMoaW5jbHVkZSBzeW1tZXRyaWNfbXAsIHNpbXBsZV9tcCwg aG90cGx1Z19tcCwgbXVsdGktcHJvY2VzcyB1bml0IHRlc3TigKYgKW9uIG1vc3Qgb2Ygb3VyIHNl cnZlcnMuDQpJdCBpcyBhbHNvIHN0cmFuZ2UgdGhhdCAxfjIgc2VydmVycyBkb27igJl0IGhhdmUg dGhlIGlzc3VlLg0KDQoNClllcywgeW91IGFyZSByaWdodC4gSSBjb3VsZCBleGVjdXRlIGl0IGJ1 dCBpdCB3YXMgZHVlIHRvIGhvdyB0aGlzIHByb2JsZW0gdHJpZ2dlcnMuDQpJIHRoaW5rIEkgY2Fu IGZpeCB0aGlzIGFuZCBhdCB0aGUgc2FtZSB0aW1lIHNvbHZpbmcgcHJvcGVybHkgdGhlIGluaXRp YWwgaXNzdWUgd2l0aG91dCBhbnkgbGltaXRhdGlvbiBsaWtlIHRoYXQgcG90ZW50aWFsIHJhY2Ug Y29uZGl0aW9uIEkgbWVudGlvbmVkLg0KSSBjYW4gZ2l2ZSB5b3UgYSBwYXRjaCB0byB0cnkgaW4g YSBjb3VwbGUgb2YgaG91cnMuDQoNClRoYW5rcw0KDQpCaW5kIHR3byBOTlQgcG9ydHMgb3IgRlZM IHBvcnRzDQoNCi4vYnVpbGQvc3ltbWV0cmljX21wIC1jIDQgLS1wcm9jLXR5cGU9YXV0byAtLSAt cCAzIC0tbnVtLXByb2NzPTQgLS1wcm9jLWlkPTENCg0KRUFMOiBEZXRlY3RlZCA4OCBsY29yZShz KQ0KRUFMOiBEZXRlY3RlZCAyIE5VTUEgbm9kZXMNCkVBTDogQXV0by1kZXRlY3RlZCBwcm9jZXNz IHR5cGU6IFNFQ09OREFSWQ0KW05ldyBUaHJlYWQgMHg3ZmZmZjZlZGE3MDAgKExXUCA5MDEwMyld DQpFQUw6IE11bHRpLXByb2Nlc3Mgc29ja2V0IC92YXIvcnVuL2RwZGsvcnRlL21wX3NvY2tldF85 MDA5OV8yZjFiNTUzODgyYjYyDQpbTmV3IFRocmVhZCAweDdmZmZmNjZkOTcwMCAoTFdQIDkwMTA0 KV0NCg0KVGhyZWFkIDEgInN5bW1ldHJpY19tcCIgcmVjZWl2ZWQgc2lnbmFsIFNJR1NFR1YsIFNl Z21lbnRhdGlvbiBmYXVsdC4NCjB4MDAwMDAwMDAwMDU1NjZiNSBpbiBydGVfZmJhcnJheV9maW5k X25leHRfdXNlZCAoKQ0KKGdkYikgYnQNCiMwICAweDAwMDAwMDAwMDA1NTY2YjUgaW4gcnRlX2Zi YXJyYXlfZmluZF9uZXh0X3VzZWQgKCkNCiMxICAweDAwMDAwMDAwMDA1NGRhOWMgaW4gcnRlX2Vh bF9jaGVja19kbWFfbWFzayAoKQ0KIzIgIDB4MDAwMDAwMDAwMDU3MmFlNyBpbiBwY2lfb25lX2Rl dmljZV9pb21tdV9zdXBwb3J0X3ZhICgpDQojMyAgMHgwMDAwMDAwMDAwNTczOTg4IGluIHJ0ZV9w Y2lfZ2V0X2lvbW11X2NsYXNzICgpDQojNCAgMHgwMDAwMDAwMDAwNTRmNzQzIGluIHJ0ZV9idXNf Z2V0X2lvbW11X2NsYXNzICgpDQojNSAgMHgwMDAwMDAwMDAwNTNjMTIzIGluIHJ0ZV9lYWxfaW5p dCAoKQ0KIzYgIDB4MDAwMDAwMDAwMDQ2YmUyYiBpbiBtYWluICgpDQoNCkJlc3QgcmVnYXJkcywN Clh1ZXFpbg0KDQpGcm9tOiBBbGVqYW5kcm8gTHVjZXJvIFttYWlsdG86YWxlamFuZHJvLmx1Y2Vy b0BuZXRyb25vbWUuY29tPG1haWx0bzphbGVqYW5kcm8ubHVjZXJvQG5ldHJvbm9tZS5jb20+XQ0K U2VudDogVHVlc2RheSwgT2N0b2JlciAzMCwgMjAxOCA1OjQxIFBNDQpUbzogTGluLCBYdWVxaW4g PHh1ZXFpbi5saW5AaW50ZWwuY29tPG1haWx0bzp4dWVxaW4ubGluQGludGVsLmNvbT4+DQpDYzog WWFvLCBMZWkgQSA8bGVpLmEueWFvQGludGVsLmNvbTxtYWlsdG86bGVpLmEueWFvQGludGVsLmNv bT4+OyBUaG9tYXMgTW9uamFsb24gPHRob21hc0Btb25qYWxvbi5uZXQ8bWFpbHRvOnRob21hc0Bt b25qYWxvbi5uZXQ+PjsgZGV2IDxkZXZAZHBkay5vcmc8bWFpbHRvOmRldkBkcGRrLm9yZz4+OyBY dSwgUWlhbiBRIDxxaWFuLnEueHVAaW50ZWwuY29tPG1haWx0bzpxaWFuLnEueHVAaW50ZWwuY29t Pj47IEJ1cmFrb3YsIEFuYXRvbHkgPGFuYXRvbHkuYnVyYWtvdkBpbnRlbC5jb208bWFpbHRvOmFu YXRvbHkuYnVyYWtvdkBpbnRlbC5jb20+PjsgWWlnaXQsIEZlcnJ1aCA8ZmVycnVoLnlpZ2l0QGlu dGVsLmNvbTxtYWlsdG86ZmVycnVoLnlpZ2l0QGludGVsLmNvbT4+OyBaaGFuZywgUWkgWiA8cWku ei56aGFuZ0BpbnRlbC5jb208bWFpbHRvOnFpLnouemhhbmdAaW50ZWwuY29tPj4NClN1YmplY3Q6 IFJlOiBbZHBkay1kZXZdIFtQQVRDSCB2MyAwLzZdIHVzZSBJT1ZBcyBjaGVjayBiYXNlZCBvbiBE TUEgbWFzaw0KDQoNCk9uIFR1ZSwgT2N0IDMwLCAyMDE4IGF0IDM6MjAgQU0gTGluLCBYdWVxaW4g PHh1ZXFpbi5saW5AaW50ZWwuY29tPG1haWx0bzp4dWVxaW4ubGluQGludGVsLmNvbT4+IHdyb3Rl Og0KSGkgTHVjZXJvJlRob21hcywNCg0KRmluZCB0aGUgcGF0Y2ggY2Fu4oCZdCBmaXggbXVsdGkt cHJvY2VzcyBjYXNlcy4NCg0KSGksDQoNCkkgdGhpbmsgaXQgaXMgbm90IHNwZWNpZmljYWxseSBh Ym91dCBtdWx0aXByb2Nlc3MgYnV0IGFib3V0IGhvdHBsdWcgd2l0aCBtdWx0aXByb2Nlc3MgYmVj YXVzZSBJIGNhbiBleGVjdXRlIHRoZSBzeW1tZXRyaWNfbXAgc3VjY2Vzc2Z1bGx5IHdpdGggYSBz ZWNvbmRhcnkgcHJvY2Vzcy4NCg0KV29ya2luZyBvbiB0aGlzIGFzIGEgcHJpb3JpdHkuDQoNClRo YW5rcy4NCg0KU3RlcHM6DQoNCjEuICAgICAgIFNldHVwIHByaW1hcnkgcHJvY2VzcyBzdWNjZXNz ZnVsbHkNCg0KLi9ob3RwbHVnX21wIC0tcHJvYy10eXBlPWF1dG8NCg0KDQoNCjIuICAgICAgIEZh aWwgdG8gc2V0dXAgc2Vjb25kYXJ5IHByb2Nlc3MNCg0KLi9ob3RwbHVnX21wIC0tcHJvYy10eXBl PWF1dG8NCg0KRUFMOiBEZXRlY3RlZCA4OCBsY29yZShzKQ0KDQpFQUw6IERldGVjdGVkIDIgTlVN QSBub2Rlcw0KDQpFQUw6IEF1dG8tZGV0ZWN0ZWQgcHJvY2VzcyB0eXBlOiBTRUNPTkRBUlkNCg0K RUFMOiBNdWx0aS1wcm9jZXNzIHNvY2tldCAvdmFyL3J1bi9kcGRrL3J0ZS9tcF9zb2NrZXRfMTQ3 MjEyXzJiZmUwOGVlODhkMjMNCg0KU2VnbWVudGF0aW9uIGZhdWx0IChjb3JlIGR1bXBlZCkNCg0K DQpNb3JlIGluZm9ybWF0aW9uIGFzIGJlbG93Og0KDQpUaHJlYWQgMSAiaG90cGx1Z19tcCIgcmVj ZWl2ZWQgc2lnbmFsIFNJR1NFR1YsIFNlZ21lbnRhdGlvbiBmYXVsdC4NCg0KMHgwMDAwMDAwMDAw NTk3Y2ZiIGluIGZpbmRfbmV4dCAoYXJyPTB4N2ZmZmY3ZmYyMGE0LCBzdGFydD0wLCB1c2VkPXRy dWUpDQoNCiAgICBhdCAvcm9vdC9kcGRrL2xpYi9saWJydGVfZWFsL2NvbW1vbi9lYWxfY29tbW9u X2ZiYXJyYXkuYzoyNjQNCg0KMjY0ICAgICAgICAgICAgIGZvciAoaWR4ID0gZmlyc3Q7IGlkeCA8 IG1zay0+bl9tYXNrczsgaWR4KyspIHsNCg0KIzAgIDB4MDAwMDAwMDAwMDU5N2NmYiBpbiBmaW5k X25leHQgKGFycj0weDdmZmZmN2ZmMjBhNCwgc3RhcnQ9MCwgdXNlZD10cnVlKQ0KDQogICAgYXQg L3Jvb3QvZHBkay9saWIvbGlicnRlX2VhbC9jb21tb24vZWFsX2NvbW1vbl9mYmFycmF5LmM6MjY0 DQoNCiMxICAweDAwMDAwMDAwMDA1OTg1NzMgaW4gZmJhcnJheV9maW5kIChhcnI9MHg3ZmZmZjdm ZjIwYTQsIHN0YXJ0PTAsIG5leHQ9dHJ1ZSwNCg0KICAgIHVzZWQ9dHJ1ZSkgYXQgL3Jvb3QvZHBk ay9saWIvbGlicnRlX2VhbC9jb21tb24vZWFsX2NvbW1vbl9mYmFycmF5LmM6MTAwMQ0KDQojMiAg MHgwMDAwMDAwMDAwNTk5MjliIGluIHJ0ZV9mYmFycmF5X2ZpbmRfbmV4dF91c2VkIChhcnI9MHg3 ZmZmZjdmZjIwYTQsIHN0YXJ0PTApDQoNCiAgICBhdCAvcm9vdC9kcGRrL2xpYi9saWJydGVfZWFs L2NvbW1vbi9lYWxfY29tbW9uX2ZiYXJyYXkuYzoxMDE4DQoNCiMzICAweDAwMDAwMDAwMDA1OGM4 NzcgaW4gcnRlX21lbXNlZ193YWxrX3RocmVhZF91bnNhZmUgKGZ1bmM9MHg1OGM0MDEgPGNoZWNr X2lvdmE+LA0KDQogICAgYXJnPTB4N2ZmZmZmZmZjYzM4KSBhdCAvcm9vdC9kcGRrL2xpYi9saWJy dGVfZWFsL2NvbW1vbi9lYWxfY29tbW9uX21lbW9yeS5jOjU4OQ0KDQojNCAgMHgwMDAwMDAwMDAw NThjZTA4IGluIHJ0ZV9lYWxfY2hlY2tfZG1hX21hc2sgKG1hc2tiaXRzPTQ4ICcwJykNCg0KICAg IGF0IC9yb290L2RwZGsvbGliL2xpYnJ0ZV9lYWwvY29tbW9uL2VhbF9jb21tb25fbWVtb3J5LmM6 NDY1DQoNCiM1ICAweDAwMDAwMDAwMDA1Yjk2YzQgaW4gcGNpX29uZV9kZXZpY2VfaW9tbXVfc3Vw cG9ydF92YSAoZGV2PTB4MTFiM2Q5MCkNCg0KICAgIGF0IC9yb290L2RwZGsvZHJpdmVycy9idXMv cGNpL2xpbnV4L3BjaS5jOjU5Mw0KDQojNiAgMHgwMDAwMDAwMDAwNWI5NzM4IGluIHBjaV9kZXZp Y2VzX2lvbW11X3N1cHBvcnRfdmEgKCkNCg0KICAgIGF0IC9yb290L2RwZGsvZHJpdmVycy9idXMv cGNpL2xpbnV4L3BjaS5jOjYyNg0KDQojNyAgMHgwMDAwMDAwMDAwNWI5N2E3IGluIHJ0ZV9wY2lf Z2V0X2lvbW11X2NsYXNzICgpDQoNCiAgICBhdCAvcm9vdC9kcGRrL2RyaXZlcnMvYnVzL3BjaS9s aW51eC9wY2kuYzo2NTANCg0KIzggIDB4MDAwMDAwMDAwMDU4ZjFjZSBpbiBydGVfYnVzX2dldF9p b21tdV9jbGFzcyAoKQ0KDQogICAgYXQgL3Jvb3QvZHBkay9saWIvbGlicnRlX2VhbC9jb21tb24v ZWFsX2NvbW1vbl9idXMuYzoyMzcNCg0KIzkgIDB4MDAwMDAwMDAwMDU3N2M3YSBpbiBydGVfZWFs X2luaXQgKGFyZ2M9MiwgYXJndj0weDdmZmZmZmZmZGY5OCkNCg0KICAgIGF0IC9yb290L2RwZGsv bGliL2xpYnJ0ZV9lYWwvbGludXhhcHAvZWFsL2VhbC5jOjkxOQ0KDQojMTAgMHgwMDAwMDAwMDAw NDVkZDU2IGluIG1haW4gKGFyZ2M9MiwgYXJndj0weDdmZmZmZmZmZGY5OCkNCg0KICAgIGF0IC9y b290L2RwZGsvZXhhbXBsZXMvbXVsdGlfcHJvY2Vzcy9ob3RwbHVnX21wL21haW4uYzoyOA0KDQoN CkJlc3QgcmVnYXJkcywNClh1ZXFpbg0KDQpGcm9tOiBBbGVqYW5kcm8gTHVjZXJvIFttYWlsdG86 YWxlamFuZHJvLmx1Y2Vyb0BuZXRyb25vbWUuY29tPG1haWx0bzphbGVqYW5kcm8ubHVjZXJvQG5l dHJvbm9tZS5jb20+XQ0KU2VudDogTW9uZGF5LCBPY3RvYmVyIDI5LCAyMDE4IDk6NDEgUE0NClRv OiBZYW8sIExlaSBBIDxsZWkuYS55YW9AaW50ZWwuY29tPG1haWx0bzpsZWkuYS55YW9AaW50ZWwu Y29tPj4NCkNjOiBUaG9tYXMgTW9uamFsb24gPHRob21hc0Btb25qYWxvbi5uZXQ8bWFpbHRvOnRo b21hc0Btb25qYWxvbi5uZXQ+PjsgZGV2IDxkZXZAZHBkay5vcmc8bWFpbHRvOmRldkBkcGRrLm9y Zz4+OyBYdSwgUWlhbiBRIDxxaWFuLnEueHVAaW50ZWwuY29tPG1haWx0bzpxaWFuLnEueHVAaW50 ZWwuY29tPj47IExpbiwgWHVlcWluIDx4dWVxaW4ubGluQGludGVsLmNvbTxtYWlsdG86eHVlcWlu LmxpbkBpbnRlbC5jb20+PjsgQnVyYWtvdiwgQW5hdG9seSA8YW5hdG9seS5idXJha292QGludGVs LmNvbTxtYWlsdG86YW5hdG9seS5idXJha292QGludGVsLmNvbT4+OyBZaWdpdCwgRmVycnVoIDxm ZXJydWgueWlnaXRAaW50ZWwuY29tPG1haWx0bzpmZXJydWgueWlnaXRAaW50ZWwuY29tPj4NClN1 YmplY3Q6IFJlOiBbZHBkay1kZXZdIFtQQVRDSCB2MyAwLzZdIHVzZSBJT1ZBcyBjaGVjayBiYXNl ZCBvbiBETUEgbWFzaw0KDQoNCk9uIE1vbiwgT2N0IDI5LCAyMDE4IGF0IDE6MTggUE0gWWFvLCBM ZWkgQSA8bGVpLmEueWFvQGludGVsLmNvbTxtYWlsdG86bGVpLmEueWFvQGludGVsLmNvbT4+IHdy b3RlOg0KDQoNCkZyb206IEFsZWphbmRybyBMdWNlcm8gW21haWx0bzphbGVqYW5kcm8ubHVjZXJv QG5ldHJvbm9tZS5jb208bWFpbHRvOmFsZWphbmRyby5sdWNlcm9AbmV0cm9ub21lLmNvbT5dDQpT ZW50OiBNb25kYXksIE9jdG9iZXIgMjksIDIwMTggODo1NiBQTQ0KVG86IFRob21hcyBNb25qYWxv biA8dGhvbWFzQG1vbmphbG9uLm5ldDxtYWlsdG86dGhvbWFzQG1vbmphbG9uLm5ldD4+DQpDYzog WWFvLCBMZWkgQSA8bGVpLmEueWFvQGludGVsLmNvbTxtYWlsdG86bGVpLmEueWFvQGludGVsLmNv bT4+OyBkZXYgPGRldkBkcGRrLm9yZzxtYWlsdG86ZGV2QGRwZGsub3JnPj47IFh1LCBRaWFuIFEg PHFpYW4ucS54dUBpbnRlbC5jb208bWFpbHRvOnFpYW4ucS54dUBpbnRlbC5jb20+PjsgTGluLCBY dWVxaW4gPHh1ZXFpbi5saW5AaW50ZWwuY29tPG1haWx0bzp4dWVxaW4ubGluQGludGVsLmNvbT4+ OyBCdXJha292LCBBbmF0b2x5IDxhbmF0b2x5LmJ1cmFrb3ZAaW50ZWwuY29tPG1haWx0bzphbmF0 b2x5LmJ1cmFrb3ZAaW50ZWwuY29tPj47IFlpZ2l0LCBGZXJydWggPGZlcnJ1aC55aWdpdEBpbnRl bC5jb208bWFpbHRvOmZlcnJ1aC55aWdpdEBpbnRlbC5jb20+Pg0KU3ViamVjdDogUmU6IFtkcGRr LWRldl0gW1BBVENIIHYzIDAvNl0gdXNlIElPVkFzIGNoZWNrIGJhc2VkIG9uIERNQSBtYXNrDQoN Cg0KT24gTW9uLCBPY3QgMjksIDIwMTggYXQgMTE6NDYgQU0gVGhvbWFzIE1vbmphbG9uIDx0aG9t YXNAbW9uamFsb24ubmV0PG1haWx0bzp0aG9tYXNAbW9uamFsb24ubmV0Pj4gd3JvdGU6DQoyOS8x MC8yMDE4IDEyOjM5LCBBbGVqYW5kcm8gTHVjZXJvOg0KPiBJIGdvdCBhIHBhdGNoIHRoYXQgc29s dmVzIGEgYnVnIHdoZW4gY2FsbGluZyBydGVfZWFsX2RtYV9tYXNrIHVzaW5nIHRoZQ0KPiBtYXNr IGluc3RlYWQgb2YgdGhlIG1hc2tiaXRzLiBIb3dldmVyLCB0aGlzIGRvZXMgbm90IHNvbHZlcyB0 aGUgZGVhZGxvY2suDQoNClRoZSBkZWFkbG9jayBpcyBhIGJpZ2dlciBjb25jZXJuIEkgdGhpbmsu DQoNCkkgdGhpbmsgb25jZSB0aGUgY2FsbCB0byBydGVfZWFsX2NoZWNrX2RtYV9tYXNrIHVzZXMg dGhlIG1hc2tiaXRzIGluc3RlYWQgb2YgdGhlIG1hc2ssIGNhbGxpbmcgcnRlX21lbXNlZ193YWxr X3RocmVhZF91bnNhZmUgYXZvaWRzIHRoZSBkZWFkbG9jay4NCg0KWWFvLCBjYW4geW91IHRyeSB3 aXRoIHRoZSBhdHRhY2hlZCBwYXRjaD8NCg0KSGksIEx1Y2Vybw0KDQpUaGlzIHBhdGNoIGNhbiBm aXggdGhlIGlzc3VlIGF0IG15IHNpZGUuIFRoYW5rcyBhIGxvdA0KZm9yIHlvdSBxdWljayBhY3Rp b24uDQoNCg0KR3JlYXQhDQoNCkkgd2lsbCBzZW5kIGFuIG9mZmljaWFsIHBhdGNoIHdpdGggdGhl IGNoYW5nZXMuDQoNCkkgaGF2ZSB0byBzYXkgdGhhdCBJIHRlc3RlZCB0aGUgcGF0Y2hzZXQsIGJ1 dCBJIHRoaW5rIGl0IHdhcyB3aGVyZSBsZWdhY3lfbWVtIHdhcyBzdGlsbCB0aGVyZSBhbmQgdGhl cmVmb3JlIGR5bmFtaWMgbWVtb3J5IGFsbG9jYXRpb24gY29kZSBub3QgdXNlZCBkdXJpbmcgbWVt b3J5IGluaXRpYWxpemF0aW9uLg0KDQpUaGVyZSBpcyBzb21ldGhpbmcgdGhhdCBjb25jZXJucyBt ZSB0aG91Z2guIFVzaW5nIHJ0ZV9tZW1zZWdfd2Fsa190aHJlYWRfdW5zYWZlIGNvdWxkIGJlIGEg cHJvYmxlbSB1bmRlciBzb21lIHNpdHVhdGlvbnMgYWx0aG91Z2ggdGhvc2Ugc2l0dWF0aW9ucyBi ZWluZyB1bmxpa2VseS4NCg0KVXN1YWxseSwgY2FsbGluZyBydGVfZWFsX2NoZWNrX2RtYV9tYXNr IGhhcHBlbnMgZHVyaW5nIGluaXRpYWxpemF0aW9uLiBUaGVuIGl0IGlzIHNhZmUgdG8gdXNlIHRo ZSB1bnNhZmUgZnVuY3Rpb24gZm9yIHdhbGtpbmcgbWVtc2VncywgYnV0IHdpdGggZGV2aWNlIGhv dHBsdWcgYW5kIGR5bmFtaWMgbWVtb3J5IGFsbG9jYXRpb24sIHRoZXJlIGV4aXN0cyBhIHBvdGVu dGlhbCByYWNlIGNvbmRpdGlvbiB3aGVuIHRoZSBwcmltYXJ5IHByb2Nlc3MgaXMgYWxsb2NhdGlu ZyBtb3JlIG1lbW9yeSBhbmQgY29uY3VycmVudGx5IGEgZGV2aWNlIGlzIGhvdHBsdWdnZWQgYW5k IGEgc2Vjb25kYXJ5IHByb2Nlc3MgZG9lcyB0aGUgZGV2aWNlIGluaXRpYWxpemF0aW9uLiBCeSBu b3csIHRoaXMgaXMganVzdCBhIHByb2JsZW0gd2l0aCB0aGUgTkZQLCBhbmQgdGhlIHBvdGVudGlh bCByYWNlIGNvbmRpdGlvbiB3aW5kb3cgcmVhbGx5IHVubGlrZWx5LCBidXQgSSB3aWxsIHdvcmsg b24gdGhpcyBhc2FwLg0KDQpCUnMNCkxlaQ0KDQo+IEludGVyZXN0aW5nbHksIHRoZSBwcm9ibGVt IGxvb2tzIGxpa2UgYSBjb21waWxlciBvbmUuIENhbGxpbmcNCj4gcnRlX21lbXNlZ193YWxrIGRv ZXMgbm90IHJldHVybiB3aGVuIGNhbGxpbmcgaW5zaWRlIHJ0X2VhbF9kbWFfbWFzaywgYnV0IGlm DQo+IHlvdSBtb2RpZnkgdGhlIGNhbGwgbGlrZSB0aGlzOg0KPg0KPiAtICAgICAgIGlmIChydGVf bWVtc2VnX3dhbGsoY2hlY2tfaW92YSwgJm1hc2spKQ0KPiArICAgICAgIGlmICghcnRlX21lbXNl Z193YWxrKGNoZWNrX2lvdmEsICZtYXNrKSkNCj4NCj4gaXQgd29ya3MsIGFsdGhvdWdoIHRoZSB2 YWx1ZSByZXR1cm5lZCB0byB0aGUgaW52b2tlciBjaGFuZ2VzLCBvZiBjb3Vyc2UuDQo+IEJ1dCB0 aGUgcG9pbnQgaGVyZSBpcyBpdCBzaG91bGQgYmUgdGhlIHNhbWUgYmVoYXZpb3VyIHdoZW4gY2Fs bGluZw0KPiBydGVfbWVtc2VnX3dhbGsgdGhhbiBiZWZvcmUgYW5kIGl0IGlzIG5vdC4NCg0KQW55 d2F5LCB0aGUgY29kaW5nIHN0eWxlIHJlcXVpcmVzIHRvIHNhdmUgdGhlIHJldHVybiB2YWx1ZSBp biBhIHZhcmlhYmxlLA0KaW5zdGVhZCBvZiBuZXN0aW5nIHRoZSBjYWxsIGluIGFuICJpZiIgY29u ZGl0aW9uLg0KQW5kIHRoZSAiaWYiIGNoZWNrIHNob3VsZCBiZSBleHBsaWNpdGx5ICE9IDAgYmVj YXVzZSBpdCBpcyBub3QgYSByZWFsIGJvb2xlYW4uDQoNClBTOiBwbGVhc2UgZG8gbm90IHRvcCBw b3N0IGFuZCBhdm9pZCBIVE1MIGVtYWlscywgdGhhbmtzDQo=