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 4965BA0C49; Thu, 8 Jul 2021 03:07:49 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id F123A4069C; Thu, 8 Jul 2021 03:07:48 +0200 (CEST) Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by mails.dpdk.org (Postfix) with ESMTP id A770240687 for ; Thu, 8 Jul 2021 03:07:46 +0200 (CEST) X-IronPort-AV: E=McAfee;i="6200,9189,10038"; a="209240345" X-IronPort-AV: E=Sophos;i="5.84,222,1620716400"; d="scan'208";a="209240345" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Jul 2021 18:07:41 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.84,222,1620716400"; d="scan'208";a="648153301" Received: from fmsmsx605.amr.corp.intel.com ([10.18.126.85]) by fmsmga005.fm.intel.com with ESMTP; 07 Jul 2021 18:07:41 -0700 Received: from shsmsx605.ccr.corp.intel.com (10.109.6.215) by fmsmsx605.amr.corp.intel.com (10.18.126.85) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.4; Wed, 7 Jul 2021 18:07:41 -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.2242.10; Thu, 8 Jul 2021 09:07:38 +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.2242.010; Thu, 8 Jul 2021 09:07:37 +0800 From: "Zhang, Qi Z" To: Andrew Rybchenko , "Zhang, AlvinX" , "ajit.khaparde@broadcom.com" CC: "dev@dpdk.org" Thread-Topic: [PATCH v3] ethdev: add IPv4 and L4 checksum RSS offload types Thread-Index: AQHXYb9B0jFrJ5ItrECYkE1u/DmBbqstwIsAgAdglICAAIgzsP//iEaAgAHElmD//+rjgIAAsskw//+FmAAAKI/ScA== Date: Thu, 8 Jul 2021 01:07:37 +0000 Message-ID: <83f658dea5de4ab9a94c6078460edff7@intel.com> References: <20210603080352.10924-1-alvinx.zhang@intel.com> <20210615081956.23656-1-alvinx.zhang@intel.com> <7930ac91-7f55-6b42-f086-701d952fc151@oktetlabs.ru> <774225cd-b2f9-30e2-31c3-651329dfa25e@oktetlabs.ru> <238ebfd3-e869-433b-9249-311900ded588@oktetlabs.ru> <01b6e32291824df1beceed707eb343b2@intel.com> <8d05b4a9-7bf0-8ffd-27f2-cb5ce106773d@oktetlabs.ru> In-Reply-To: <8d05b4a9-7bf0-8ffd-27f2-cb5ce106773d@oktetlabs.ru> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-reaction: no-action dlp-version: 11.5.1.3 dlp-product: dlpe-windows x-originating-ip: [10.239.127.36] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH v3] ethdev: add IPv4 and L4 checksum RSS offload types 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 Sender: "dev" DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogQW5kcmV3IFJ5YmNoZW5r byA8YW5kcmV3LnJ5YmNoZW5rb0Bva3RldGxhYnMucnU+DQo+IFNlbnQ6IFdlZG5lc2RheSwgSnVs eSA3LCAyMDIxIDk6MTEgUE0NCj4gVG86IFpoYW5nLCBRaSBaIDxxaS56LnpoYW5nQGludGVsLmNv bT47IFpoYW5nLCBBbHZpblgNCj4gPGFsdmlueC56aGFuZ0BpbnRlbC5jb20+OyBhaml0LmtoYXBh cmRlQGJyb2FkY29tLmNvbQ0KPiBDYzogZGV2QGRwZGsub3JnDQo+IFN1YmplY3Q6IFJlOiBbUEFU Q0ggdjNdIGV0aGRldjogYWRkIElQdjQgYW5kIEw0IGNoZWNrc3VtIFJTUyBvZmZsb2FkIHR5cGVz DQo+IA0KPiBPbiA3LzcvMjEgNDowMCBQTSwgWmhhbmcsIFFpIFogd3JvdGU6DQo+ID4NCj4gPg0K PiA+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+PiBGcm9tOiBBbmRyZXcgUnliY2hl bmtvIDxhbmRyZXcucnliY2hlbmtvQG9rdGV0bGFicy5ydT4NCj4gPj4gU2VudDogV2VkbmVzZGF5 LCBKdWx5IDcsIDIwMjEgNTo0OSBQTQ0KPiA+PiBUbzogWmhhbmcsIFFpIFogPHFpLnouemhhbmdA aW50ZWwuY29tPjsgWmhhbmcsIEFsdmluWA0KPiA+PiA8YWx2aW54LnpoYW5nQGludGVsLmNvbT47 IGFqaXQua2hhcGFyZGVAYnJvYWRjb20uY29tDQo+ID4+IENjOiBkZXZAZHBkay5vcmcNCj4gPj4g U3ViamVjdDogUmU6IFtQQVRDSCB2M10gZXRoZGV2OiBhZGQgSVB2NCBhbmQgTDQgY2hlY2tzdW0g UlNTIG9mZmxvYWQNCj4gPj4gdHlwZXMNCj4gPj4NCj4gPj4gT24gNy83LzIxIDY6MjMgQU0sIFpo YW5nLCBRaSBaIHdyb3RlOg0KPiA+Pj4NCj4gPj4+DQo+ID4+Pj4gLS0tLS1PcmlnaW5hbCBNZXNz YWdlLS0tLS0NCj4gPj4+PiBGcm9tOiBBbmRyZXcgUnliY2hlbmtvIDxhbmRyZXcucnliY2hlbmtv QG9rdGV0bGFicy5ydT4NCj4gPj4+PiBTZW50OiBUdWVzZGF5LCBKdWx5IDYsIDIwMjEgNDowNSBQ TQ0KPiA+Pj4+IFRvOiBaaGFuZywgUWkgWiA8cWkuei56aGFuZ0BpbnRlbC5jb20+OyBaaGFuZywg QWx2aW5YDQo+ID4+Pj4gPGFsdmlueC56aGFuZ0BpbnRlbC5jb20+OyBhaml0LmtoYXBhcmRlQGJy b2FkY29tLmNvbQ0KPiA+Pj4+IENjOiBkZXZAZHBkay5vcmcNCj4gPj4+PiBTdWJqZWN0OiBSZTog W1BBVENIIHYzXSBldGhkZXY6IGFkZCBJUHY0IGFuZCBMNCBjaGVja3N1bSBSU1MNCj4gPj4+PiBv ZmZsb2FkIHR5cGVzDQo+ID4+Pj4NCj4gPj4+PiBPbiA3LzYvMjEgMTA6MTggQU0sIFpoYW5nLCBR aSBaIHdyb3RlOg0KPiA+Pj4+Pg0KPiA+Pj4+Pg0KPiA+Pj4+Pj4gLS0tLS1PcmlnaW5hbCBNZXNz YWdlLS0tLS0NCj4gPj4+Pj4+IEZyb206IFpoYW5nLCBBbHZpblggPGFsdmlueC56aGFuZ0BpbnRl bC5jb20+DQo+ID4+Pj4+PiBTZW50OiBUdWVzZGF5LCBKdWx5IDYsIDIwMjEgMzowNiBQTQ0KPiA+ Pj4+Pj4gVG86IEFuZHJldyBSeWJjaGVua28gPGFuZHJldy5yeWJjaGVua29Ab2t0ZXRsYWJzLnJ1 PjsgWmhhbmcsIFFpIFoNCj4gPj4+Pj4+IDxxaS56LnpoYW5nQGludGVsLmNvbT47IGFqaXQua2hh cGFyZGVAYnJvYWRjb20uY29tDQo+ID4+Pj4+PiBDYzogZGV2QGRwZGsub3JnDQo+ID4+Pj4+PiBT dWJqZWN0OiBSRTogW1BBVENIIHYzXSBldGhkZXY6IGFkZCBJUHY0IGFuZCBMNCBjaGVja3N1bSBS U1MNCj4gPj4+Pj4+IG9mZmxvYWQgdHlwZXMNCj4gPj4+Pj4+DQo+ID4+Pj4+Pj4+IEBAIC01Mzcs NiArNTM3LDggQEAgc3RydWN0IHJ0ZV9ldGhfcnNzX2NvbmYgew0KPiA+Pj4+Pj4+PiAgI2RlZmlu ZSBFVEhfUlNTX1BQUE9FCQkgICAoMVVMTCA8PCAzMSkNCj4gPj4+Pj4+Pj4gICNkZWZpbmUgRVRI X1JTU19FQ1BSSQkJICAgKDFVTEwgPDwgMzIpDQo+ID4+Pj4+Pj4+ICAjZGVmaW5lIEVUSF9SU1Nf TVBMUwkJICAgKDFVTEwgPDwgMzMpDQo+ID4+Pj4+Pj4+ICsjZGVmaW5lIEVUSF9SU1NfSVBWNF9D SEtTVU0JICAgKDFVTEwgPDwgMzQpDQo+ID4+Pj4+Pj4+ICsjZGVmaW5lIEVUSF9SU1NfTDRfQ0hL U1VNCSAgICgxVUxMIDw8IDM1KQ0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4gV2hhdCBkb2VzIGVmaW5l IHdoaWNoIEw0IHByb3RvY29scyBhcmUgc3VwcG9ydGVkPyBIb3cgdXNlciB3aWxsDQo+IGtub3c/ DQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gSSB0aGluayBpZiB3ZSB3YW50IHRvIHN1cHBvcnQgTDQgY2hl Y2tzdW0gUlNTIGJ5IHVzaW5nIGJlbG93DQo+ID4+Pj4+PiBjb21tYW5kIHBvcnQgY29uZmlnIGFs bCByc3MgKGFsbHxkZWZhdWx0fGV0aHx2bGFufC4uLikNCj4gPj4+Pj4+DQo+ID4+Pj4+PiBXZSBt dXN0IGRlZmluZSBUQ1AvVURQL1NDVFAgY2hlY2tzdW0gUlNTIHNlcGFyYXRlbHk6DQo+ID4+Pj4+ PiAjZGVmaW5lIEVUSF9SU1NfVENQX0NIS1NVTQkoMVVMTCA8PCAzNSkNCj4gPj4+Pj4+ICNkZWZp bmUgRVRIX1JTU19VRFBfQ0hLU1VNCSgxVUxMIDw8IDM2KQ0KPiA+Pj4+Pj4gI2RlaWZuZSBFVEhf UlNTX1NDVFBfQ0hLU1VNCSgxVUxMIDw8IDM3KQ0KPiA+Pj4+Pj4NCj4gPj4+Pj4+IEhlcmUgMyBi aXRzIGFyZSBvY2N1cGllZCwgdGhpcyBpcyBub3QgZ29vZCBmb3IgdGhlcmUgYXJlIG5vdCBtYW55 DQo+ID4+Pj4+PiBiaXRzDQo+ID4+Pj4gYXZhaWxhYmxlLg0KPiA+Pj4+Pj4NCj4gPj4+Pj4+IElm IHdlIG9ubHkgd2FudCB0byB1c2luZyBpdCBpbiBmbG93cywgd2Ugb25seSBuZWVkIHRvIGRlZmlu ZQ0KPiA+Pj4+Pj4gRVRIX1JTU19MNF9DSEtTVU0sIGJlY2F1c2UgdGhlIGZsb3cgcGF0dGVybiBw b2ludGVkIG91dCB0aGUgTDQNCj4gPj4+Pj4+IHByb3RvY29sIHR5cGUuDQo+ID4+Pj4+PiBmbG93 IGNyZWF0ZSAwIGluZ3Jlc3MgcGF0dGVybiBldGggLyBpcHY0IC8gdGNwIC8gZW5kIGFjdGlvbnMg cnNzDQo+ID4+Pj4+PiB0eXBlcyBsNC1jaGtzdW0gZW5kIHF1ZXVlcyBlbmQgLyBlbmQNCj4gPj4+ Pj4NCj4gPj4+Pj4gKzEsIHRoZSBwYXR0ZXJuIGFscmVhZHkgZ2l2ZSB0aGUgaGludCB0byBhdm9p ZCB0aGUgYW1iaWd1aXR5IGFuZCBJDQo+ID4+Pj4+ICt0aGluayB3ZQ0KPiA+Pj4+IGFscmVhZHkg aGF2ZSBFVEhfUlNTX0xFVkVMIHRvIGZpZ3VyZSBvdXQgaW5uZXIgb3Igb3V0ZXIuDQo+ID4+Pj4N Cj4gPj4+PiBUaGUgcHJvYmxlbSB0aGF0IGl0IG1heSBiZSB1c2VkIGluIGdlbmVyaWMgUlNTIGZs YWdzIHdoaWNoIGhhcyBubw0KPiA+Pj4+IHRoZQ0KPiA+PiBjb250ZXh0Lg0KPiA+Pj4+IEFsc28g ZXZlbiBpbiB0aGUgY2FzZSBvZiBmbG93IEFQSSBjb250ZXh0IGNvdWxkIGhhdmUgbm8gTDQgcHJv dG9jb2wgYXQgYWxsLg0KPiA+Pj4NCj4gPj4+IEZvciBnZW5lcmljIGNhc2UsIGl0IGNhbiBzaW1w bHkgYXNzdW1lIGl0IGNvdmVyIGFsbCBMNCBjaGVja3N1bQ0KPiA+Pj4gY2FzZXMgYW5kIEknbQ0K PiA+PiBub3Qgc3VyZSBpZiBhbnkgdXNlciBpbnRlbmQgdG8gdXNlIGl0IGFzIGdlbmVyaWMgUlNT LCBwbWQgY2FuIHNpbXBseQ0KPiA+PiByZWplY3QgaXQgaWYgaXQncyBub3QgbmVjZXNzYXJ5IHRv IHN1cHBvcnQuDQo+ID4+DQo+ID4+IFRyeSB0byBsb29rIGF0IGl0IGZyb20gYW4gYXBwbGljYXRp b24gcG9pbnQgb2YgdmlldyB3aGljaCBkb2VzIG5vdA0KPiA+PiBrbm93IGFueSBzcGVjaWZpY3Mg b2YgdGhlIGRyaXZlci4NCj4gPj4NCj4gPj4gICogR2V0IGRldl9pbmZvIGFuZCBzZWUgRVRIX1JT U19MNF9DSEtTVU0sIGdvb2QhLCB3b3VsZCBsaWtlIHRvDQo+ID4+ICAgIHVzZSBpdC4NCj4gPg0K PiA+DQo+ID4gVGhlIFBNRCBzaG91bGQgbm90IGV4cG9zZSBpdCBpZiBpdCBkb24ndCB3YW50IHRv IChvciBub3QgYWJsZSB0bykNCj4gPiBzdXBwb3J0IGFsbCBsNCBjaGVja3N1bSBmcm9tIGdlbmVy aWMgUlNTIGNvbmZpZ3VyZQ0KPiANCj4gRG9jdW1lbnQgd2hhdCBpcyAiYWxsIEw0Ii4NCj4gDQo+ ID4NCj4gPiBBbmQgd2Ugc2hvdWxkIGFzc3VtZSB0aGlzIGlzIG9ubHkgYXBwbHkgZm9yIGdlbmVy aWMgUlNTIGNvbmZpZ3VyZSBidXQgbm90IGZvcg0KPiBmbG93IEFQSS4NCj4gDQo+IEkgZG9uJ3Qg dGhpbmsgc28uIElNSE8sIGl0IHNob3VsZCByZXBvcnQgYWxsIFJTUyBjYXBhYmlsaXRpZXMgcmVn YXJkbGVzcyBnZW5lcmljIHZzDQo+IGZsb3cgQVBJIFJTUyBhY3Rpb24uDQoNCg0KVGhlIFJTUyBh Y3Rpb24gaW4gZmxvdyBBUEkgY291bGQgY292ZXIgbG90cyBvZiBwb3NzaWJpbGl0eS4NCmZvciBl eGFtcGxlIGFuIEVUSF9SU1NfSVBWNCBjYW4gYmUgYXBwbGllZCBvbiBhIEdUUFUgZmxvdyBmb3Ig aW5uZXIgYnV0IG1heSBub3Qgd29yayBmb3IgYSBWeExhbiBmbG93J3MgaW5uZXIgbDMgYXQgdGhl IHNhbWUgdGltZS4NCml0J3MgZGlmZmljdWx0IHRvIGFjY3VyYXRlbHkgZGVzY3JpYmUgYWxsIG9m IHRoZXNlIGJ5IGEgNjQgYml0cyBjYXBhYmlsaXR5LCBpdCdzIG1vcmUgcHJhY3RpY2UgdG8ganVz dCByZWx5IG9uIHJ0ZV9mbG93X3ZhbGlkYXRpb24uDQpPdGhlcndpc2UgaXQgd2lsbCBhbHdheXMg bGVhZGluZyB0aGUgY29uZnVzaW5nIHlvdSBtZW50aW9uZWQgaW4gcHJldmlvdXMgbWFpbC4NCg0K SXQgaXMgbW9yZSByZWFzb25hYmxlIGZvciBtZSwgdGhlIGRyaXZlciBqdXN0IGV4cG9zZSBzb21l IGJhc2ljIFJTUyBiaXQgdGhhdCBldmVyeWJvZHkgY2FuIGVhc2llbHkgdW5kZXJzdGFuZCwoZS5n LjogNSB0dXBsZS4pLCBhbmQgbGVmdCBhbGwgdGhlIGNvbXBsZXhpdHkgY2FwYWJpbGl0eSBwcm9i ZSB0byBmbG93IEFQSS4NCg0KPiANCj4gSXQgaXMganVzdCBSU1MgY2FwYWJpbGl0aWVzIHJlcG9y dGluZyB3L28gYW55IGNvbnRleHQuDQoNCg0KDQoNCj4gDQo+ID4NCj4gPiBCZWNhdXNlIHRoZSBy dGVfZmxvd192YWxpZGF0ZSBpcyB0aGUgcmVjb21tZW5kZWQgbWV0aG9kIHRvIGNoZWNrIGlmIGEg UlNTDQo+IGFjdGlvbiBpcyBzdXBwb3J0ZWQgaW4gZmxvdyBBUEkgb3Igbm90Lg0KPiANCj4gSXQg Y291bGQgcmVzdHJpY3QgdGhlIHN1YnNldC4gQnV0IHN1cGVyc2V0IHNob3VsZCBiZSByZXBvcnRl ZCBpbiBjYXBzLg0KPiANCj4gPg0KPiA+Pg0KPiA+PiAgKiBJZiBJIHRyeSB0byB1c2UgaXQgaW4g ZGVmYXVsdCBSU1MgY29uZmlnLCBidXQgdGhlIHJlcXVlc3QNCj4gPj4gICAgZmFpbCwgaXQgY291 bGQgYmUgdmVyeSBjb25mdXNpbmcuDQo+ID4+DQo+ID4+ICAqIFdpbGwgaXQgZGlzdHJpYnV0ZSBU Q1AgcGFja2V0cz8gVURQIHBhY2tldHM/IFNDVFAgcGFja2V0cz8NCj4gPj4gICAgT3Igc2hvdWxk IEkgY2FyZSBhYm91dCBSU1MgZm9yIHNvbWUgb2YgdGhlbSBiYXNlZCBvbiBvdGhlcg0KPiA+PiAg ICBzdXBwb3J0ZWQgZmllbGRzPyBFLmcuIGlmIFNDVFAgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUg TklDLA0KPiA+PiAgICBJIG5lZWQgdG8gaW5zdGFsbCBSU1MgZmxvdyBydWxlIGZvciB0aGUgSVAg cHJvdG9jb2wgdG8gZG8NCj4gPj4gICAgUlNTIGJhc2VkIG9uIElQdjQvSVB2NiBhZGRyZXNzZXMu IEJ1dCBpZiBTQ1RQIGlzIHN1cHBvcnRlZCwNCj4gPj4gICAgSSdtIGhhcHB5IHRvIHVzZSBFVEhf UlNTX0w0X0NIS1NVTSBmb3IgaXQgYXMgd2VsbC4NCj4gPj4NCj4gPj4+IEluIGZsb3cgQVBJLCBp ZiBubyBsNCBwcm90b2NvbCBpbiBwYXR0ZXJuICwgdGhlIFBNRCBzaG91bGQgcmV0dXJuDQo+ID4+ PiBmYWlsdXJlIChvciBtYXliZSBzb21lIGRlZmF1bHQgYmVoYXZpb3IpLCBhbmQgSSB0aGluayB0 aGlzIGlzIG5vdCBhDQo+ID4+PiBuZXcgcXVlc3Rpb24gYXMgaXQgaGFwcGVucyBhbGwgdGhlIGNh c2VzDQo+ID4+PiBlLmcuOg0KPiA+Pj4gcGF0dGVybiBldGggLyB2bGFuIC8gZW5kIGFjdGlvbiBy c3MgdHlwZSBpcHY0IC4NCj4gPj4NCj4gPj4gSU1ITywgaXQgd291bGQgYmUgcHJldHR5IGxvZ2lj YWwgdG8gYXBwbHkgUlNTIHRvIElQdjQgcGFja2V0cyBvbmx5DQo+ID4+IGFuZCBzZW5kIGV2ZXJ5 dGhpbmcgZWxzZSB0byBkZWZhdWx0IHF1ZXVlLg0KPiA+DQo+ID4gWWVzLCB0aGlzIGFsc28gbWFr ZSBzZW5zZSB0byBtZSwgYnV0IEkgdGhpbmsgUE1EJ3MgZmxvdyBwYXJzZXIgc3RpbGwgY2FuIGhh dmUNCj4gbW9yZSBzdHJpY3QgY2hlY2ssIGFzIGl0IGRvZXMgbm90IGRyb3AgYW55IGZlYXR1cmUg dGhhdCB0aGUgTklDIGNhbiBzdXBwb3J0Lg0KPiA+DQo+ID4+DQo+ID4+Pj4NCj4gPj4+PiBJcyBV RFAgY2hlY2tzdW0gMCB0cmVhdGVkIGFzIG5vIGNoZWNrc3VtIGFuZCBnbyB0byBkZWZhdWx0IHF1 ZXVlIG9yDQo+ID4+Pj4gdHJlYXRlZCBhcyBhIHJlZ3VsYXIgY2hlY2tzdW0gd2l0aCB2YWx1ZSBl cXVhbCB0byAwPw0KPiA+Pj4NCj4gPj4+IEkgdGhpbmsgd2UgY2FuIHRyZWF0IGl0IGFzIHZhbHVl IDAsIGFzIGxlYXN0IG91ciBoYXJkd2FyZSBiZWhhdmlvcg0KPiA+Pj4gbGlrZSB0aGlzLCBpcw0K PiA+PiB0aGlzIGFueSBpc3N1ZT8NCj4gPj4NCj4gPj4gT0ssIG5vIHByb2JsZW0uIEp1c3QgZG9j dW1lbnQgaXQuDQo+ID4+DQo+ID4+Pj4NCj4gPj4+PiBJIHRlbmQgdG8gYWdyZWUgdGhhdCAzIGZs YWdzIGlzIHRvbyBtdWNoIGZvciB0aGUgZmVhdHVyZSwgYnV0IG9uZQ0KPiA+Pj4+IGZsYWcgd2l0 aG91dCBwcm9wZXJseSBkZWZpbmVkIG1lYW5pbmcgaXMgbm90IGdvb2QgYXMgd2VsbC4NCj4gPj4+ Pg0KPiA+Pj4+IEkganVzdCB3YW50IHJ1bGVzIHRvIGJlIGRlZmluZWQgYW5kIGRvY3VtZW50ZWQu Jw0KPiA+Pj4NCj4gPj4+IEFncmVlLCB3ZSBuZWVkIG1vcmUgZG9jdW1lbnQgZm9yIHRoaXMuIGlm IHlvdSBhZ3JlZSBhYm92ZSBwcm9wb3NhbC4NCj4gPj4+DQo+ID4NCg0K