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 9011FA04B5; Wed, 23 Sep 2020 04:28:06 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 6CB8A1DC7A; Wed, 23 Sep 2020 04:28:06 +0200 (CEST) Received: from m13144.mail.163.com (m13144.mail.163.com [220.181.13.144]) by dpdk.org (Postfix) with ESMTP id AEFBD1DBF2 for ; Wed, 23 Sep 2020 04:28:03 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com; s=s110527; h=Date:From:Subject:MIME-Version:Message-ID; bh=sZe6c 8Au4laExQoOyOc9gNlhnRrDOyd75AkStC4hgHo=; b=fzzT+/KKynycv7GNojk1V /WwQpW7w0rd0cEk2oTyEGaSv5NtsG2WY4fxqluFSJ+j7mqVzpIhNc8OA5krLzfhK lTZ1O7HWHsFaOV1Ny7F/qc7NP1E0FnU9agp/I+Aj76plYCuMsO8QJpDLSfgBWPkS xXGQ0wqwnqTODZHau7GHZo= Received: from yang_y_yi$163.com ( [111.207.123.58] ) by ajax-webmail-wmsvr144 (Coremail) ; Wed, 23 Sep 2020 10:28:00 +0800 (CST) X-Originating-IP: [111.207.123.58] Date: Wed, 23 Sep 2020 10:28:00 +0800 (CST) From: yang_y_yi To: "Jiayu Hu" Cc: dev@dpdk.org, thomas@monjalon.net, yangyi01@inspur.com X-Priority: 1 X-Mailer: Coremail Webmail Server Version XT5.0.10 build 20190724(ac680a23) Copyright (c) 2002-2020 www.mailtech.cn 163com In-Reply-To: <20200923021511.GA83995@NPG_DPDK_VIRTIO_jiayuhu_15.sh.intel.com> References: <20200917034959.194372-1-yang_y_yi@163.com> <20200917034959.194372-3-yang_y_yi@163.com> <37c12b46.f2a.174b36e34c1.Coremail.yang_y_yi@163.com> <1f01947d.122e.174b37b5d58.Coremail.yang_y_yi@163.com> <75421977.3967.174b47b6259.Coremail.yang_y_yi@163.com> <20200922065546.GA56452@NPG_DPDK_VIRTIO_jiayuhu_15.sh.intel.com> <7b4fc638.486f.174b4bfe6c7.Coremail.yang_y_yi@163.com> <20200923021511.GA83995@NPG_DPDK_VIRTIO_jiayuhu_15.sh.intel.com> X-CM-CTRLDATA: 67iaeGZvb3Rlcl9odG09OTAxNDo1Ng== MIME-Version: 1.0 Message-ID: <56bb5989.20af.174b8ca00c3.Coremail.yang_y_yi@163.com> X-Coremail-Locale: zh_CN X-CM-TRANSID: kMGowAAX7kywsmpfz559AA--.25742W X-CM-SenderInfo: 51dqwsp1b1xqqrwthudrp/1tbiqAWoi1c7R686PwABsO X-Coremail-Antispam: 1U5529EdanIXcx71UUUUU7vcSsGvfC2KfnxnUU== Content-Type: text/plain; charset=GBK Content-Transfer-Encoding: base64 X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: Re: [dpdk-dev] [PATCH v6 2/3] gro: add VXLAN UDP/IPv4 GRO support 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" VGhhbmtzIEppYXl1LCBkbyB5b3UgbWVhbiBub3QgY29tcGFyaW5nIHRpbWVzdGFtcCBhbmQgZmx1 c2ggYWxsIHRoZSBwYWNrZXRzIGluIGEgZmxvdyBhcyBJIHNob3dlZCBjb2RlLCByaWdodD8gSWYg c28sIHdlIHNob3VsZG4ndCBwcm92aWRlIGFyZ3VtZW50IGZsdXNoX3RpbWVzdGFtcC4gQnV0IHRo aXMgd2lsbCByZXN1bHQgaW4gdmVyeSBiYWQgaXNzdWVzLCBydGVfZ3JvX3RpbWVvdXRfZmx1c2gg d2lsbCBiZSBjYWxsZWQgYWZ0ZXIgcnRlX2dyb19yZWFzc2VtYmxlIGV2ZXJ5IHRpbWUsIHNvIHRo ZSByZXN1bHQgbWF5IGJlIHlvdSBjYW4ndCByZWFzc2VtYmxlIG91dCBhbnkgb3JpZ2luYWwgVURQ IHBhY2tldCBiZWNhdXNlIGV2ZXJ5IFVEUCBmcmFnbWVudHMgd2lsbCBiZSBmbHVzaGVkIHZlcnkg c29vbiwgbm8gY2hhbmNlIHRvIHJlYXNzZW1ibGUuCgpBdCAyMDIwLTA5LTIzIDEwOjE1OjEyLCAi SmlheXUgSHUiIDxqaWF5dS5odUBpbnRlbC5jb20+IHdyb3RlOgo+T24gVHVlLCBTZXAgMjIsIDIw MjAgYXQgMDM6Mzg6MjlQTSArMDgwMCwgeWFuZ195X3lpIHdyb3RlOgo+PiBUaGUgcHJvYmxlbSBp cyB0aW1lc3RhbXAgb2Ygd2hpY2ggb25lIGl0ZW0gaW4gYSBmbG93IHdlIHNob3VsZCB1c2UgYXMg dGltZXN0YW1wCj4+IHJlZmVyZW5jZSBiYXNlIGZvciB0aGlzIGZsb3csIGZvciBtZXJnZSAocmVh c3NlbWJsZSksIG9ubHkgdGhlIGZpcnN0IHBhY2tldCBjYW4KPj4gdHJpZ2dlciBtZXJnZSBvZiBh bGwgdGhlIHBhY2tldHMsIG1lcmdlIGlzIGZvcndhcmQgbm90IGJhY2t3YXJkLCBpZiB5b3UKPj4g dHJhdmVyc2UgdGhlIHdob2xlIGxpbmtlZCBsaXN0IGluIHRoaXMgZmxvdyB0byBnZXQgdGhlIG9s ZGVzdCB0aW1lc3RhbXAgYW5kCj4+IGNvbXBhcmUgaXQgd2l0aCBmbHVzaHRpbWUsIHRoYXQgd2ls bCBiZSBub3Qgd29ydGh5LCBpbiB0aGUgd29yc3QgY2FzZSAoc2F5IEkKPj4gc2VuZCBhIDY0SyBV RFAgcGFja2V0IGFuZCBNVFUgaXMgMTQ1MCksIHlvdSB3aWxsIGhhdmUgNDYgaXRlbXMgdG8gY2hl Y2sgdG8gZ2V0Cj4+IHRoZSBvbGRlc3QgdGltZXN0YW1wIGJ5IGxpbmtlZCBsaXN0Lgo+Cj5PSywg SSBnb3QgdGhlIHBvaW50LiBJIGFncmVlIHRvIGZsdXNoIHBhY2tldHMgd2l0aG91dCBzdHJpY3Rs eQo+b2JleWluZyB0aW1lc3RhbXAuIEJ1dCB5b3UgbmVlZCB0byBjaGFuZ2UgdGhlIGNvbW1lbnQg aW4gdGhlCj5jb2RlIGFuZCBjbGFyaWZ5IHRoZSBkZXNpZ24gZm9yIGJvdGggVURQIGFuZCBWeExB TiBHUk8gcGF0Y2guCj5DdXJyZW50IGNvbW1lbnQgIlRoZSBsZWZ0IHBhY2tldHMgaW4gLi4uIiBp cyBub3QgYXBwcm9wcmlhdGUKPmZvciB5b3VyIGRlc2lnbi4KPgo+PiAKPj4gCj4+IEknbSBub3Qg c3VyZSB3aGF0IGluY29uc2lzdGVudGN5IHlvdSdyZSBzYXlpbmcgbWVhbi4KPj4gCj4+IEF0IDIw MjAtMDktMjIgMTQ6NTU6NDYsICJKaWF5dSBIdSIgPGppYXl1Lmh1QGludGVsLmNvbT4gd3JvdGU6 Cj4+ID5PbiBUdWUsIFNlcCAyMiwgMjAyMCBhdCAwMjoyMzozOVBNICswODAwLCB5YW5nX3lfeWkg d3JvdGU6Cj4+ID4+IE5vdCBhIHF1ZXN0aW9uLCBpbiBuZXh0IGZsdXNoLCB0aGV5IHdpbGwgYmUg Zmx1c2hlZCwgd2UgaGF2ZSB0byBjaGVjayB0aW1lc3RhbXAKPj4gPj4gaW4gdGhlIGZpcnN0IHRp bWUgdW5sZXNzIHdlIGRvbid0IHN0cmljdGx5IGZvbGxvdyB0aGlzIHRpbWUgbGltaXRhdGlvbi4K Pj4gPgo+PiA+d2hvIHdpbGwgY2hlY2sgdGhlIHRpbWVzdGFtcD8gSSBkaWQndCBnZXQgdGhlIHBv aW50Lgo+PiA+Cj4+ID5JTU8sIHRoaXMgd2lsbCBjYXVzZSBpbmNvbnNpc3RlbmN5IG9mIHRoZSBy dGVfZ3JvX3RpbWVvdXRfZmx1c2goKS4KPj4gPkJUVywgd2hhdCBzdG9wcyB5b3UgdG8gdHJhdmVy c2UgYWxsIGl0ZW1zIGFuZCBjaGVjayB0aW1lc3RhbXAKPj4gPmJlZm9yZSBmbHVzaCB0aGVtIG91 dD8KPj4gPgo+PiA+Pgo+PiA+PiBBdCAyMDIwLTA5LTIyIDE0OjE0OjAwLCAiSHUsIEppYXl1IiA8 amlheXUuaHVAaW50ZWwuY29tPiB3cm90ZToKPj4gPj4KPj4gPj4gICAgIEZyYWdtZW50cyBvZiBh IGZsb3cgYXJlIHNvcnRlZCBieSBmcmFnX29mdCwgYnV0IHRoZXkgbWF5IGhhdmUgZGlmZmVyZW50 Cj4+ID4+Cj4+ID4+ICAgICB0aW1lc3RhbXAuIEZvciBleGFtcGxlLCB0aGVyZSBhcmUgdGhyZWUg ZnJhZ21lbnRzLCB3aG9zZSBmcmFnX29mdCBpczoKPj4gPj4KPj4gPj4gICAgIGZyYWdbMF0uZnJh Z19vZnQ9MCwgZnJhZ1sxXS5mcmFnX29mdD00LCBmcmFnWzJdLmZyYWdfb2Z0PTY7IGFuZCB0aGV5 IGFyZQo+PiA+Pgo+PiA+PiAgICAgZnJhZ21lbnRzIG9mIG9uZSBVRFAgcGFja2V0IGJ1dCBhcmUg bm90IG5laWdoYm9ycy4gSW4gdGhlIGZpcnN0IFJYIGJ1cnN0LAo+PiA+Pgo+PiA+PiAgICAgaG9z dCByZWNlaXZlcyBmcmFnWzFdIGFuZCBjYWxscyBydGVfZ3JvX3JlYXNzZW1ibGUoKSwgYW5kIHdl IGFzc3VtZSB0aGUKPj4gPj4KPj4gPj4gICAgIHRpbWVzdGFtcCBvZiBmcmFnWzFdIGlzIDEwOyBp biB0aGUgc2Vjb25kIFJYIGJ1cnN0LCBob3N0IHJlY2VpdmVzIGZyYWdbMF0KPj4gPj4KPj4gPj4g ICAgIGFuZCBhbHNvIGNhbGwgcnRlX2dyb19yZWFzc2VtYmxlKCksIGFuZCB0aW1lc3RhbXAgb2Yg ZnJhZ1swXSBpcyAxMTsgdGhlCj4+ID4+Cj4+ID4+ICAgICB0aGlyZCB0aW1lLCBob3N0IHJlY2Vp dmVzIGZyYWdbMl0gYW5kIHRpbWVzdGFtcCBvZiBmcmFnWzJdIGlzIDEyLiBUaGUgdGhyZWUKPj4g Pj4KPj4gPj4gICAgIGZyYWdtZW50cyBhcmUgc3RvcmVkIGluIHRocmVlIGl0ZW1zIG9mIGEgVURQ IEdSTyB0YWJsZToKPj4gPj4KPj4gPj4gICAgIGl0ZW1zWzBdOiBmcmFnWzBdLCB0aW1lc3RhbXAg aXMgMTEKPj4gPj4KPj4gPj4gICAgIGl0ZW1zWzFdOiBmcmFnWzFdLCB0aW1lc3RhbXAgaXMgMTAK Pj4gPj4KPj4gPj4gICAgIGl0ZW1zWzJdOiBmcmFnWzJdLCB0aW1lc3RhbXAgaXMgMTIKPj4gPj4K Pj4gPj4gICAgIE5vdyB3ZSB3YW50IHRvIGZsdXNoIHBhY2tldHMgd2hvc2UgdGltZXN0YW1wIGlz IGxlc3MgdGhhbiBvciBlcXVhbCB0bwo+PiA+Pgo+PiA+PiAgICAgMTAuIGZyYWdbMV0gc2hvdWxk IGJlIHJldHVybmVkLCBidXQgaW4geW91ciBjb2RlLCBubyBwYWNrZXRzIHdpbGwgYmUKPj4gPj4g ICAgIGZsdXNoZWQuCj4+ID4+Cj4+ID4+ICAgICBCZWNhdXNlIHRoZSB0aW1lc3RhbXAgb2YgaXRl bXNbMF0gaXMgZ3JlYXRlciB0aGFuIDEwLCB0aGUgbGVmdCB0d28KPj4gPj4gICAgIGZyYWdtZW50 cwo+PiA+Pgo+PiA+PiAgICAgd2lsbCBub3QgYmUgY2hlY2tlZC4gVGhpcyBpcyB3aGF0IEkgd2Fu dCB0byBzYXkuCj4+ID4+Cj4+ID4+Cj4+ID4+Cj4+ID4+ICAgICBGcm9tOiB5YW5nX3lfeWkgPHlh bmdfeV95aUAxNjMuY29tPgo+PiA+PiAgICAgU2VudDogVHVlc2RheSwgU2VwdGVtYmVyIDIyLCAy MDIwIDk6NDQgQU0KPj4gPj4gICAgIFRvOiBIdSwgSmlheXUgPGppYXl1Lmh1QGludGVsLmNvbT4K Pj4gPj4gICAgIENjOiBkZXZAZHBkay5vcmc7IHRob21hc0Btb25qYWxvbi5uZXQ7IHlhbmd5aTAx QGluc3B1ci5jb20KPj4gPj4gICAgIFN1YmplY3Q6IFJlOlJlOiBbZHBkay1kZXZdIFtQQVRDSCB2 NiAyLzNdIGdybzogYWRkIFZYTEFOIFVEUC9JUHY0IEdSTwo+PiA+PiAgICAgc3VwcG9ydAo+PiA+ PiAgICAgSW1wb3J0YW5jZTogSGlnaAo+PiA+Pgo+PiA+Pgo+PiA+Pgo+PiA+PiAgICAgQlRXLCBz dGFydF90aW1lIGlzIGNoZWNrZWQgZm9yIHRoZSBmaXJzdCBwYWNrZXQgaW4gYSBmbG93LAo+PiA+ PiAgICAgZ3JvX3VkcDRfbWVyZ2VfaXRlbXModGJsLCBqKSB3aWxsIG1lcmdlIGFsbCB0aGUgcGFj a2V0cyBpbiB0aGlzIGZsb3cgb25jZQo+PiA+PiAgICAgaWYgdGhleSBjYW4gYmUgcmVhc3NlbWJs ZWQsIGdyb191ZHA0X21lcmdlX2l0ZW1zKHRibCwgaikgZG9lc24ndCBjaGVjawo+PiA+PiAgICAg c3RhcnRfdGltZSwgc28gdGhpcyBzdGlsbCBjYW4gbGV0IHNvbWUgbmV3IGl0ZW1zIGluIHRoaXMg ZmxvdyBoYXZlIGNoYW5jZQo+PiA+PiAgICAgdG8gYmUgbWVyZ2VkLgo+PiA+Pgo+PiA+PiAgICAg QXQgMjAyMC0wOS0yMiAwOToyOTozOCwgInlhbmdfeV95aSIgPHlhbmdfeV95aUAxNjMuY29tPiB3 cm90ZToKPj4gPj4KPj4gPj4gICAgID5UaGFua3MgSmlheXUsIEkgaGF2ZSBmaXhlZCBvdGhlciBj b21tZW50cyBleGNlcHQgdGhpcyBvbmU6Cj4+ID4+Cj4+ID4+ICAgICA+Cj4+ID4+Cj4+ID4+ICAg ICA+Cj4+ID4+Cj4+ID4+ICAgICA+Cj4+ID4+Cj4+ID4+ICAgICA+PlRoZSBpdGVtcyBvZiBhIGZs b3cgYXJlIG9yZGVyZWQgYnkgZnJhZ19vZnQsIGFuZCBzdGFydF90aW1lCj4+ID4+Cj4+ID4+ICAg ICA+Pm9mIHRoZXNlIGl0ZW1zIGlzIG5vdCBhbHdheXMgaW4gYXNjZW5kaW5nIG9yZGVyLiBUaGVy ZWZvcmUsCj4+ID4+Cj4+ID4+ICAgICA+PnlvdSBjYW5ub3Qgc2tpcCBjaGVja2luZyB0aGUgaXRl bXMgYWZ0ZXIgdGhlIGl0ZW0gd2hvc2UKPj4gPj4KPj4gPj4gICAgID4+c3RhcnRfdGltZSBpcyBn cmVhdGVyIHRoYW4gZmx1c2hfdGltZXN0YW1wLiBUaGlzIGlzc3VlIGFsc28KPj4gPj4KPj4gPj4g ICAgID4+ZXhpc3RzIGluIFVEUC9JUHY0IEdSTywgYW5kIG5lZWQgdG8gY29ycmVjdCB0aGVtIGJv dGguCj4+ID4+Cj4+ID4+ICAgICA+Cj4+ID4+Cj4+ID4+ICAgICA+Cj4+ID4+Cj4+ID4+ICAgICA+ SSB0aGluayB0aGUgaXNzdWUgaGVyZSBpcyBpZiB3ZSBzaG91bGQgc3RyaWN0bHkgZm9sbG93IGZs dXNoX3RpbWVzdGFtcCwgaXQgaXMgcG9zc2libGUgdGhlcmUgYXJlIG5ldyBpdGVtcyBpbiBpdGVt cyBjaGFpbi4gd2UgaGF2ZSBjaGFuY2UgdG8gbWVyZ2UgbW9yZSBwYWNrZXRzIGlmIHdlIGRvbid0 IGZvbGxvdyBmbHVzaF90aW1lc3RhbXAuIFNvIGFuIGlkZWFsIGNoYW5nZSBjYW4gYmUgdGhpcy4g QnV0IGlzIGl0IGFjY2VwdGlibGUgaWYgd2UgZG9uJ3QgdXNlIGZsdXNoX3RpbWVzdGFtcD8gSXQg Y2FuIGZsdXNoIHNvbWUgcGFja2V0cyBpbiBhZHZhbmNlIHRoZXJlZm9yZSBtaXNzIG5leHQgbWVy Z2Ugd2luZG93LiBNYXliZSBjdXJyZW50IHdheSBpcyBtb3N0IHJlc29uYWJsZSBhbmQgYSB0cmFk ZW9mZiBiZXR3ZWVuIHR3byBleHRlcmVtIGNhc2VzLgo+PiA+Pgo+PiA+PiAgICAgPgo+PiA+Pgo+ PiA+PiAgICAgPgo+PiA+Pgo+PiA+PiAgICAgPgo+PiA+Pgo+PiA+PiAgICAgPgo+PiA+Pgo+PiA+ PiAgICAgPgo+PiA+Pgo+PiA+PiAgICAgPmRpZmYgLS1naXQgYS9saWIvbGlicnRlX2dyby9ncm9f dWRwNC5jIGIvbGliL2xpYnJ0ZV9ncm8vZ3JvX3VkcDQuYwo+PiA+Pgo+PiA+PiAgICAgPmluZGV4 IDA2MWU3YjAuLmZmYTM1YTIgMTAwNjQ0Cj4+ID4+Cj4+ID4+ICAgICA+LS0tIGEvbGliL2xpYnJ0 ZV9ncm8vZ3JvX3VkcDQuYwo+PiA+Pgo+PiA+PiAgICAgPisrKyBiL2xpYi9saWJydGVfZ3JvL2dy b191ZHA0LmMKPj4gPj4KPj4gPj4gICAgID5AQCAtMzkxLDcgKzM5MSw2IEBACj4+ID4+Cj4+ID4+ ICAgICA+Cj4+ID4+Cj4+ID4+ICAgICA+ICAgICAgICAgICAgICAgIGogPSB0YmwtPmZsb3dzW2ld LnN0YXJ0X2luZGV4Owo+PiA+Pgo+PiA+PiAgICAgPiAgICAgICAgICAgICAgICB3aGlsZSAoaiAh PSBJTlZBTElEX0FSUkFZX0lOREVYKSB7Cj4+ID4+Cj4+ID4+ICAgICA+LSAgICAgICAgICAgICAg ICAgICAgICAgaWYgKHRibC0+aXRlbXNbal0uc3RhcnRfdGltZSA8PSBmbHVzaF90aW1lc3RhbXAp IHsKPj4gPj4KPj4gPj4gICAgID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb191 ZHA0X21lcmdlX2l0ZW1zKHRibCwgaik7Cj4+ID4+Cj4+ID4+ICAgICA+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBvdXRbaysrXSA9IHRibC0+aXRlbXNbal0uZmlyc3RzZWc7Cj4+ID4+ Cj4+ID4+ICAgICA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGJsLT5pdGVt c1tqXS5uYl9tZXJnZWQgPiAxKQo+PiA+Pgo+PiA+PiAgICAgPkBAIC00MDcsMTIgKzQwNiw2IEBA Cj4+ID4+Cj4+ID4+ICAgICA+Cj4+ID4+Cj4+ID4+ICAgICA+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpZiAodW5saWtlbHkoayA9PSBuYl9vdXQpKQo+PiA+Pgo+PiA+PiAgICAgPiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gazsKPj4gPj4KPj4g Pj4gICAgID4tICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UKPj4gPj4KPj4gPj4gICAgID4t ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qCj4+ID4+Cj4+ID4+ICAgICA+LSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBUaGUgbGVmdCBwYWNrZXRzIGluIHRoaXMgZmxv dyB3b24ndCBiZQo+PiA+Pgo+PiA+PiAgICAgPi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICogdGltZW91dC4gR28gdG8gY2hlY2sgb3RoZXIgZmxvd3MuCj4+ID4+Cj4+ID4+ICAgICA+ LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KPj4gPj4KPj4gPj4gICAgID4tICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+PiA+Pgo+PiA+PiAgICAgPiAgICAg ICAgICAgICAgICB9Cj4+ID4+Cj4+ID4+ICAgICA+ICAgICAgICB9Cj4+ID4+Cj4+ID4+ICAgICA+ ICAgICAgICByZXR1cm4gazsKPj4gPj4KPj4gPj4gICAgID4KPj4gPj4KPj4gPj4KPj4gPj4KPj4g Pj4KPj4gPj4KPj4gPj4KPj4gPj4KPj4gCj4+IAo+PiAKPj4gIAo+PiAK