From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id B05428E56 for ; Tue, 8 May 2018 14:34:50 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 08 May 2018 05:34:49 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.49,378,1520924400"; d="scan'208";a="38305192" Received: from kmsmsx151.gar.corp.intel.com ([172.21.73.86]) by fmsmga008.fm.intel.com with ESMTP; 08 May 2018 05:34:40 -0700 Received: from pgsmsx111.gar.corp.intel.com ([169.254.2.194]) by KMSMSX151.gar.corp.intel.com ([169.254.10.77]) with mapi id 14.03.0319.002; Tue, 8 May 2018 20:34:37 +0800 From: "Dai, Wei" To: Andrew Rybchenko , "Yigit, Ferruh" , "thomas@monjalon.net" , "Doherty, Declan" , "linville@tuxdriver.com" , "mw@semihalf.com" , "mk@semihalf.com" , "gtzalik@amazon.com" , "evgenys@amazon.com" , "ravi1.kumar@amd.com" , "shepard.siegel@atomicrules.com" , "ed.czeck@atomicrules.com" , "john.miller@atomicrules.com" , "ajit.khaparde@broadcom.com" , "somnath.kotur@broadcom.com" , "jerin.jacob@caviumnetworks.com" , "maciej.czekaj@caviumnetworks.com" , "shijith.thotton@cavium.com" , "ssrinivasan@cavium.com" , "santosh.shukla@caviumnetworks.com" , "rahul.lakkireddy@chelsio.com" , "ohndale@cisco.com" , "hyonkim@cisco.com" , "Lu, Wenzhuo" , "Ananyev, Konstantin" , "Xing, Beilei" , "Zhang, Qi Z" , "Wang, Xiao W" , "Wu, Jingjing" , "tdu@semihalf.com" , "dima@marvell.com" , "nsamsono@marvell.com" , "jianbo.liu@arm.com" , "adrien.mazarguil@6wind.com" , "nelio.laranjeiro@6wind.com" , "yskoh@mellanox.com" , "matan@mellanox.com" , "vido@cesnet.cz" , "alejandro.lucero@netronome.com" , "emant.agrawal@nxp.com" , "shreyansh.jain@nxp.com" , "hemant.agrawal@nxp.com" , "harish.patil@cavium.com" , "rasesh.mody@cavium.com" , "asesh.mody@cavium.com" , "shahed.shaikh@cavium.com" , "yongwang@vmware.com" , "maxime.coquelin@redhat.com" , "mtetsuyah@gmail.com" , "Bie, Tiwei" , "Legacy, Allain (Wind River)" , "Peters, Matt (Wind River)" , "pascal.mazon@6wind.com" , "Richardson, Bruce" , "gaetan.rivet@6wind.com" , "Singh, Jasvinder" , "Dumitrescu, Cristian" CC: "dev@dpdk.org" , Ivan Malov Thread-Topic: [PATCH v8] ethdev: check Rx/Tx offloads Thread-Index: AQHT5rbTkeIcWZY+wkmsdV6MzXhfJKQlLj4AgACO8JA= Date: Tue, 8 May 2018 12:34:36 +0000 Message-ID: <49759EB36A64CF4892C1AFEC9231E8D66CF7EF32@PGSMSX111.gar.corp.intel.com> References: <1525442529-12723-1-git-send-email-wei.dai@intel.com> <1525773917-62792-1-git-send-email-wei.dai@intel.com> <657fa573-d9b8-a898-89ea-3f631da6bdf5@solarflare.com> In-Reply-To: <657fa573-d9b8-a898-89ea-3f631da6bdf5@solarflare.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiNzNiN2Y0MTctMjc5Zi00NTM5LTkwZDktNTY3ODEyZmFhMmZiIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE2LjUuOS4zIiwiVHJ1c3RlZExhYmVsSGFzaCI6InJORDRZZmJSVUN5bW16RkxKU2E0RlNXMGZOMk5zOHRRSXZJK0M5R2hIejQ9In0= x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.0.200.100 dlp-reaction: no-action x-originating-ip: [172.30.20.205] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-Mailman-Approved-At: Wed, 09 May 2018 12:27:38 +0200 Subject: Re: [dpdk-dev] [PATCH v8] ethdev: check Rx/Tx offloads 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, 08 May 2018 12:34:51 -0000 SGksIEFuZHJldw0KU2VlIG15IGluLWxpbmUgY29tbWVudHMgYXMgYmVsb3cuDQoNCkZyb206IEFu ZHJldyBSeWJjaGVua28gW21haWx0bzphcnliY2hlbmtvQHNvbGFyZmxhcmUuY29tXSANClNlbnQ6 IFR1ZXNkYXksIE1heSA4LCAyMDE4IDc6MzcgUE0NClRvOiBEYWksIFdlaSA8d2VpLmRhaUBpbnRl bC5jb20+OyBZaWdpdCwgRmVycnVoIDxmZXJydWgueWlnaXRAaW50ZWwuY29tPjsgdGhvbWFzQG1v bmphbG9uLm5ldDsgRG9oZXJ0eSwgRGVjbGFuIDxkZWNsYW4uZG9oZXJ0eUBpbnRlbC5jb20+OyBs aW52aWxsZUB0dXhkcml2ZXIuY29tOyBtd0BzZW1paGFsZi5jb207IG1rQHNlbWloYWxmLmNvbTsg Z3R6YWxpa0BhbWF6b24uY29tOyBldmdlbnlzQGFtYXpvbi5jb207IHJhdmkxLmt1bWFyQGFtZC5j b207IHNoZXBhcmQuc2llZ2VsQGF0b21pY3J1bGVzLmNvbTsgZWQuY3plY2tAYXRvbWljcnVsZXMu Y29tOyBqb2huLm1pbGxlckBhdG9taWNydWxlcy5jb207IGFqaXQua2hhcGFyZGVAYnJvYWRjb20u Y29tOyBzb21uYXRoLmtvdHVyQGJyb2FkY29tLmNvbTsgamVyaW4uamFjb2JAY2F2aXVtbmV0d29y a3MuY29tOyBtYWNpZWouY3pla2FqQGNhdml1bW5ldHdvcmtzLmNvbTsgc2hpaml0aC50aG90dG9u QGNhdml1bS5jb207IHNzcmluaXZhc2FuQGNhdml1bS5jb207IHNhbnRvc2guc2h1a2xhQGNhdml1 bW5ldHdvcmtzLmNvbTsgcmFodWwubGFra2lyZWRkeUBjaGVsc2lvLmNvbTsgb2huZGFsZUBjaXNj by5jb207IGh5b25raW1AY2lzY28uY29tOyBMdSwgV2Vuemh1byA8d2Vuemh1by5sdUBpbnRlbC5j b20+OyBBbmFueWV2LCBLb25zdGFudGluIDxrb25zdGFudGluLmFuYW55ZXZAaW50ZWwuY29tPjsg WGluZywgQmVpbGVpIDxiZWlsZWkueGluZ0BpbnRlbC5jb20+OyBaaGFuZywgUWkgWiA8cWkuei56 aGFuZ0BpbnRlbC5jb20+OyBXYW5nLCBYaWFvIFcgPHhpYW8udy53YW5nQGludGVsLmNvbT47IFd1 LCBKaW5namluZyA8amluZ2ppbmcud3VAaW50ZWwuY29tPjsgdGR1QHNlbWloYWxmLmNvbTsgZGlt YUBtYXJ2ZWxsLmNvbTsgbnNhbXNvbm9AbWFydmVsbC5jb207IGppYW5iby5saXVAYXJtLmNvbTsg YWRyaWVuLm1hemFyZ3VpbEA2d2luZC5jb207IG5lbGlvLmxhcmFuamVpcm9ANndpbmQuY29tOyB5 c2tvaEBtZWxsYW5veC5jb207IG1hdGFuQG1lbGxhbm94LmNvbTsgdmlkb0BjZXNuZXQuY3o7IGFs ZWphbmRyby5sdWNlcm9AbmV0cm9ub21lLmNvbTsgZW1hbnQuYWdyYXdhbEBueHAuY29tOyBzaHJl eWFuc2guamFpbkBueHAuY29tOyBoZW1hbnQuYWdyYXdhbEBueHAuY29tOyBoYXJpc2gucGF0aWxA Y2F2aXVtLmNvbTsgcmFzZXNoLm1vZHlAY2F2aXVtLmNvbTsgYXNlc2gubW9keUBjYXZpdW0uY29t OyBzaGFoZWQuc2hhaWtoQGNhdml1bS5jb207IHlvbmd3YW5nQHZtd2FyZS5jb207IG1heGltZS5j b3F1ZWxpbkByZWRoYXQuY29tOyBtdGV0c3V5YWhAZ21haWwuY29tOyBCaWUsIFRpd2VpIDx0aXdl aS5iaWVAaW50ZWwuY29tPjsgTGVnYWN5LCBBbGxhaW4gKFdpbmQgUml2ZXIpIDxhbGxhaW4ubGVn YWN5QHdpbmRyaXZlci5jb20+OyBQZXRlcnMsIE1hdHQgKFdpbmQgUml2ZXIpIDxtYXR0LnBldGVy c0B3aW5kcml2ZXIuY29tPjsgcGFzY2FsLm1hem9uQDZ3aW5kLmNvbTsgUmljaGFyZHNvbiwgQnJ1 Y2UgPGJydWNlLnJpY2hhcmRzb25AaW50ZWwuY29tPjsgZ2FldGFuLnJpdmV0QDZ3aW5kLmNvbTsg U2luZ2gsIEphc3ZpbmRlciA8amFzdmluZGVyLnNpbmdoQGludGVsLmNvbT47IER1bWl0cmVzY3Us IENyaXN0aWFuIDxjcmlzdGlhbi5kdW1pdHJlc2N1QGludGVsLmNvbT4NCkNjOiBkZXZAZHBkay5v cmc7IEl2YW4gTWFsb3YgPEl2YW4uTWFsb3ZAb2t0ZXRsYWJzLnJ1Pg0KU3ViamVjdDogUmU6IFtQ QVRDSCB2OF0gZXRoZGV2OiBjaGVjayBSeC9UeCBvZmZsb2Fkcw0KDQpPbiAwNS8wOC8yMDE4IDAx OjA1IFBNLCBXZWkgRGFpIHdyb3RlOg0KVGhpcyBwYXRjaCBjaGVjayBpZiBhIGlucHV0IHJlcXVl c3RlZCBvZmZsb2FkaW5nIGlzIHZhbGlkIG9yIG5vdC4NCkFueSByZXVxZXN0ZWQgb2ZmbG9hZGlu ZyBtdXN0IGJlIHN1cHBvcnRlZCBpbiB0aGUgZGV2aWNlIGNhcGFiaWxpdGllcy4NCkFueSBvZmZs b2FkaW5nIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQgaWYgaXQgaXMgbm90IHNldCBpbiB0aGUgcGFy YW1ldGVyDQpkZXZfY29uZi0+W3J0XXhtb2RlLm9mZmxvYWRzIHRvIHJ0ZV9ldGhfZGV2X2NvbmZp Z3VyZSggKSBhbmQNCltydF14X2NvbmYtPm9mZmxvYWRzIHRvIHJ0ZV9ldGhfW3J0XXhfcXVldWVf c2V0dXAoICkuDQpJZiBhbnkgb2ZmbG9hZGluZyBpcyBlbmFibGVkIGluIHJ0ZV9ldGhfZGV2X2Nv bmZpZ3VyZSggKSBieSBhcHBsaWNhdGlvbiwNCml0IGlzIGVuYWJsZWQgb24gYWxsIHF1ZXVlcyBu byBtYXR0ZXIgd2hldGhlciBpdCBpcyBwZXItcXVldWUgb3INCnBlci1wb3J0IHR5cGUgYW5kIG5v IG1hdHRlciB3aGV0aGVyIGl0IGlzIHNldCBvciBjbGVhcmVkIGluDQpbcnRdeF9jb25mLT5vZmZs b2FkcyB0byBydGVfZXRoX1tydF14X3F1ZXVlX3NldHVwKCApLg0KSWYgYSBwZXItcXVldWUgb2Zm bG9hZGluZyBoYXNuJ3QgYmUgZW5hYmxlZCBpbiBydGVfZXRoX2Rldl9jb25maWd1cmUoICksDQpp dCBjYW4gYmUgZW5hYmxlZCBvciBkaXNhYmxlZCBmb3IgaW5kaXZpZHVhbCBxdWV1ZSBpbg0KcmV0 X2V0aF9bcnRdeF9xdWV1ZV9zZXR1cCggKS4NCkEgbmV3IGFkZGVkIG9mZmxvYWRpbmcgaXMgdGhl IG9uZSB3aGljaCBoYXNuJ3QgYmVlbiBlbmFibGVkIGluDQpydGVfZXRoX2Rldl9jb25maWd1cmUo ICkgYW5kIGlzIHJldXFlc3RlZCB0byBiZSBlbmFibGVkIGluDQpydGVfZXRoX1tydF14X3F1ZXVl X3NldHVwKCApLCBpdCBtdXN0IGJlIHBlci1xdWV1ZSB0eXBlLA0Kb3RoZXJ3aXNlIHJldHVybiBl cnJvci4NClRoZSB1bmRlcmx5aW5nIFBNRCBtdXN0IGJlIGF3YXJlIHRoYXQgdGhlIHJlcXVlc3Rl ZCBvZmZsb2FkaW5ncw0KdG8gUE1EIHNwZWNpZmljIHF1ZXVlX3NldHVwKCApIGZ1bmN0aW9uIG9u bHkgY2FycmllcyB0aG9zZQ0KbmV3IGFkZGVkIG9mZmxvYWRpbmdzIG9mIHBlci1xdWV1ZSB0eXBl Lg0KDQpUaGlzIHBhdGNoIGNhbiBtYWtlIGFib3ZlIHN1Y2ggY2hlY2tpbmcgaW4gYSBjb21tb24g d2F5IGluIHJ0ZV9ldGhkZXYNCmxheWVyIHRvIGF2b2lkIHNhbWUgY2hlY2tpbmcgaW4gdW5kZXJs eWluZyBQTUQuDQoNClRoaXMgcGF0Y2ggYXNzdW1lcyB0aGF0IGFsbCBQTURzIGluIDE4LjA1LXJj MiBoYXZlIGFscmVhZHkNCmNvbnZlcnRlZCB0byBvZmZsb2FkIEFQSSBkZWZpbmVkIGluIDE3LjEx IC4gSXQgYWxzbyBhc3N1bWVzDQp0aGF0IGFsbCBQTURzIGNhbiByZXR1cm4gY29ycmVjdCBvZmZs b2FkaW5nIGNhcGFiaWxpdGllcw0KaW4gcnRlX2V0aF9kZXZfaW5mb3NfZ2V0KCApLg0KDQpJbiB0 aGUgYmVnaW5uaW5nIG9mIFtydF14X3F1ZXVlX3NldHVwKCApIG9mIHVuZGVybHlpbmcgUE1ELA0K YWRkIG9mZmxvYWRzID0gW3J0XXhjb25mLT5vZmZsb2FkcyB8DQpkZXYtPmRhdGEtPmRldl9jb25m LltydF14bW9kZS5vZmZsb2FkczsgdG8ga2VlcCBzYW1lIGFzIG9mZmxvYWQgQVBJDQpkZWZpbmVk IGluIDE3LjExIHRvIGF2b2lkIHVwcGVyIGFwcGxpY2F0aW9uIGJyb2tlbiBkdWUgdG8gb2ZmbG9h ZA0KQVBJIGNoYW5nZS4NClBNRCBjYW4gdXNlIHRoZSBpbmZvIHRoYXQgaW5wdXQgW3J0XXhjb25m LT5vZmZsb2FkcyBvbmx5IGNhcnJ5DQp0aGUgbmV3IGFkZGVkIHBlci1xdWV1ZSBvZmZsb2FkcyB0 byBkbyBzb21lIG9wdGltaXphdGlvbiBvciBzb21lDQpjb2RlIGNoYW5nZSBvbiBiYXNlIG9mIHRo aXMgcGF0Y2guDQoNClNpZ25lZC1vZmYtYnk6IFdlaSBEYWkgPHdlaS5kYWlAaW50ZWwuY29tPg0K U2lnbmVkLW9mZi1ieTogRmVycnVoIFlpZ2l0IDxmZXJydWgueWlnaXRAaW50ZWwuY29tPg0KU2ln bmVkLW9mZi1ieTogUWkgWmhhbmcgPHFpLnouemhhbmdAaW50ZWwuY29tPg0KDQpbLi4uXQ0KDQoN CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9zZmMvc2ZjX2V0aGRldi5jIGIvZHJpdmVycy9uZXQv c2ZjL3NmY19ldGhkZXYuYw0KaW5kZXggZTQyZDU1My4uZmMyYjI1NCAxMDA2NDQNCi0tLSBhL2Ry aXZlcnMvbmV0L3NmYy9zZmNfZXRoZGV2LmMNCisrKyBiL2RyaXZlcnMvbmV0L3NmYy9zZmNfZXRo ZGV2LmMNCkBAIC00MTMsMTQgKzQxMywxNiBAQCBzZmNfcnhfcXVldWVfc2V0dXAoc3RydWN0IHJ0 ZV9ldGhfZGV2ICpkZXYsIHVpbnQxNl90IHJ4X3F1ZXVlX2lkLA0KIHsNCiAJc3RydWN0IHNmY19h ZGFwdGVyICpzYSA9IGRldi0+ZGF0YS0+ZGV2X3ByaXZhdGU7DQogCWludCByYzsNCisJdWludDY0 X3Qgb2ZmbG9hZHM7DQogDQogCXNmY19sb2dfaW5pdChzYSwgIlJ4UT0ldSBuYl9yeF9kZXNjPSV1 IHNvY2tldF9pZD0ldSIsDQogCQkgICAgIHJ4X3F1ZXVlX2lkLCBuYl9yeF9kZXNjLCBzb2NrZXRf aWQpOw0KIA0KIAlzZmNfYWRhcHRlcl9sb2NrKHNhKTsNCiANCisJb2ZmbG9hZHMgPSByeF9jb25m LT5vZmZsb2FkcyB8IGRldi0+ZGF0YS0+ZGV2X2NvbmYucnhtb2RlLm9mZmxvYWRzOw0KDQpJJ2Qg cHJlZmVyIHRvIHNlZSBpdCBpbnNpZGUgc2ZjX3J4X3Fpbml0KCkgZnVuY3Rpb24uIEl0IHdvdWxk IGFsbG93IHRvIGF2b2lkDQpzZmNfcnhfcWluaXQoKSBmdW5jdGlvbiBwcm90b3R5cGUgY2hhbmdl cy4NCltXZWk6IEFzIHJ4X2NvbmYgaXMgYSBjb25zdCBhcmd1bWVudCBpbiBzZmNfcnhfcXVldWVf c2V0dXAoICksIHJ4X2NvbmYtPm9mZmxvYWRzIGNhbid0IGJlIHVwZGF0ZWQuDQogIElmIHNmY19y eF9xaW5pdCggKSBmdW5jdGlvbiBwcm90b3R5cGUga2VlcCB1bmNoYW5nZWQsICB0aGUgZGV2LT5k YXRhIGNhbiBiZSBkZWR1Y2VkIGZyb20gdGhlDQogMXN0IGFyZ3VtZW50IHNhIC4gIEFuZHJldywg aWYgbXkgY29kZSB3b3JrcyB3ZWxsLCBjYW4gaXQgYmUga2VwdCBoZXJlLCAgeW91IGNhbiBjaGFu Z2UgaXQgbGF0ZXINCiBpbiB5b3VyIHNlcGFyYXRlIHBhdGNoLCBPSyA/IF0NCg0KIAlyYyA9IHNm Y19yeF9xaW5pdChzYSwgcnhfcXVldWVfaWQsIG5iX3J4X2Rlc2MsIHNvY2tldF9pZCwNCi0JCQkg IHJ4X2NvbmYsIG1iX3Bvb2wpOw0KKwkJCSAgcnhfY29uZiwgbWJfcG9vbCwgb2ZmbG9hZHMpOw0K IAlpZiAocmMgIT0gMCkNCiAJCWdvdG8gZmFpbF9yeF9xaW5pdDsNCiANCkBAIC00NjksMTMgKzQ3 MSwxNiBAQCBzZmNfdHhfcXVldWVfc2V0dXAoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIHVpbnQx Nl90IHR4X3F1ZXVlX2lkLA0KIHsNCiAJc3RydWN0IHNmY19hZGFwdGVyICpzYSA9IGRldi0+ZGF0 YS0+ZGV2X3ByaXZhdGU7DQogCWludCByYzsNCisJdWludDY0X3Qgb2ZmbG9hZHM7DQogDQogCXNm Y19sb2dfaW5pdChzYSwgIlR4USA9ICV1LCBuYl90eF9kZXNjID0gJXUsIHNvY2tldF9pZCA9ICV1 IiwNCiAJCSAgICAgdHhfcXVldWVfaWQsIG5iX3R4X2Rlc2MsIHNvY2tldF9pZCk7DQogDQogCXNm Y19hZGFwdGVyX2xvY2soc2EpOw0KIA0KLQlyYyA9IHNmY190eF9xaW5pdChzYSwgdHhfcXVldWVf aWQsIG5iX3R4X2Rlc2MsIHNvY2tldF9pZCwgdHhfY29uZik7DQorCW9mZmxvYWRzID0gdHhfY29u Zi0+b2ZmbG9hZHMgfCBkZXYtPmRhdGEtPmRldl9jb25mLnR4bW9kZS5vZmZsb2FkczsNCg0KU2Ft ZSBhcyBhYm92ZS4NCg0KDQorCXJjID0gc2ZjX3R4X3Fpbml0KHNhLCB0eF9xdWV1ZV9pZCwgbmJf dHhfZGVzYywgc29ja2V0X2lkLA0KKwkJCSAgdHhfY29uZiwgb2ZmbG9hZHMpOw0KIAlpZiAocmMg IT0gMCkNCiAJCWdvdG8gZmFpbF90eF9xaW5pdDsNCg0KWy4uLl0NCg0KSXQgbG9va3MgbGlrZSBk ZXZpY2UgbGV2ZWwgb2ZmbG9hZHMgYXJlIGNoZWNrZWQgb24gZXRoZGV2IGxheWVyIG5vdy4NClNv LCBJIHRoaW5rIGNoZWNrIGluIHNmY19yeF9jaGVja19tb2RlICgpIGFuZCBzZmNfdHhfY2hlY2tf bW9kZSgpDQptYXkgYmUgcmVtb3ZlZCBhcyB3ZWxsIChzZWUgb2ZmbG9hZHNfcmVqZWN0ZWQpLg0K SSB0aGluayBpdCB3aWxsIG1ha2UgZnVuY3Rpb25zIHNmY19yeF9sb2dfb2ZmbG9hZHMoKSBhbmQN CnNmY190eF9sb2dfb2ZmbG9hZHMoKSB1bnVzZWQgYW5kIHRoZXNlIGZ1bmN0aW9ucyBzaG91bGQg YmUgcmVtb3ZlZC4NCltXZWk6IHNvcnJ5LCBJIG1pc3MgdGhlIHNmX1tydF14X2NoZWNrX21vZGUo ICkuIFllcywgb2ZmbG9hZHNfcmVqZWN0ZWQgaW4gdGhpcyBmdW5jdGlvbiBjaGVja2luZyBjYW4g YmUgcmVtb3ZlZC4NCiBCdXQgYXMgdGhpcyBwYXRjaCBpcyBhIGJpZyBvbmUsIEknZCBsaWtlIGl0 IGtlZXAgYXMgaXQgaXMgaWYgaXQgd29ya3Mgd2VsbC4gQW5kIEknZCBsaWtlIHlvdSByZW1vdmUg c3VjaCBjaGVja2luZyBvciANCmRvIG90aGVyIGNoYW5nZXMgaW4geW91ciBvd24gcGF0Y2hdDQpb V2VpOiBieSB0aGUgd2F5LCB5b3VyIG1haWwgaXMgSFRNTCBmb3JtYXQsICBJIGFtIGFmcmFpZCBp dCBpcyBtaXNzZWQgZnJvbSBtYWlsIGFyY2hpdmVzLl0NCg==