From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <keith.wiles@intel.com>
Received: from mga05.intel.com (mga05.intel.com [192.55.52.43])
 by dpdk.org (Postfix) with ESMTP id 284A7D28C
 for <dev@dpdk.org>; Fri, 24 Mar 2017 15:37:06 +0100 (CET)
Received: from fmsmga004.fm.intel.com ([10.253.24.48])
 by fmsmga105.fm.intel.com with ESMTP; 24 Mar 2017 07:37:06 -0700
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="5.36,215,1486454400"; d="scan'208";a="239946119"
Received: from fmsmsx108.amr.corp.intel.com ([10.18.124.206])
 by fmsmga004.fm.intel.com with ESMTP; 24 Mar 2017 07:37:06 -0700
Received: from fmsmsx113.amr.corp.intel.com ([169.254.13.235]) by
 FMSMSX108.amr.corp.intel.com ([169.254.9.101]) with mapi id 14.03.0319.002;
 Fri, 24 Mar 2017 07:37:05 -0700
From: "Wiles, Keith" <keith.wiles@intel.com>
To: "Ananyev, Konstantin" <konstantin.ananyev@intel.com>
CC: "Hu, Jiayu" <jiayu.hu@intel.com>, Yuanhan Liu
 <yuanhan.liu@linux.intel.com>, "Richardson, Bruce"
 <bruce.richardson@intel.com>, Stephen Hemminger <stephen@networkplumber.org>, 
 "Yigit, Ferruh" <ferruh.yigit@intel.com>, "dev@dpdk.org" <dev@dpdk.org>,
 "Liang, Cunming" <cunming.liang@intel.com>, Thomas Monjalon
 <thomas.monjalon@6wind.com>
Thread-Topic: [dpdk-dev] [PATCH 0/2] lib: add TCP IPv4 GRO support
Thread-Index: AQHSou9HGbI2XQXRT0SMpTSJ0l69vaGhXiuAgADH34CAADY2gIAAD3+AgAAqRwCAABfzgIAAL+AAgADcygCAAEHVgIAAEc0AgAAMT4CAADypAIAAMHAA
Date: Fri, 24 Mar 2017 14:37:04 +0000
Message-ID: <0C56AF3E-C8AB-4903-AD34-F39C6D74C889@intel.com>
References: <1B893F1B-4DA8-4F88-9583-8C0BAA570832@intel.com>
 <20170323021502.GA114662@localhost.localdomain>
 <C830A6FC-F440-4E68-AB4E-2FD502722E3F@intel.com>
 <20170323062433.GA120139@localhost.localdomain>
 <59AF69C657FD0841A61C55336867B5B066729E3F@IRSMSX103.ger.corp.intel.com>
 <20170323102135.GA124301@localhost.localdomain>
 <2601191342CEEE43887BDE71AB9772583FAD410A@IRSMSX109.ger.corp.intel.com>
 <20170324022310.GA129105@localhost.localdomain>
 <32FED22E-7116-4B6A-894E-C81CBF7B4BBE@intel.com>
 <20170324072230.GU18844@yliu-dev.sh.intel.com>
 <20170324080633.GA2865@localhost.localdomain>
 <2601191342CEEE43887BDE71AB9772583FAD80A6@IRSMSX109.ger.corp.intel.com>
In-Reply-To: <2601191342CEEE43887BDE71AB9772583FAD80A6@IRSMSX109.ger.corp.intel.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [10.255.84.105]
Content-Type: text/plain; charset="utf-8"
Content-ID: <F8EC44FE90E0E642AB185A9CD2EC782D@intel.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
Subject: Re: [dpdk-dev] [PATCH 0/2] lib: add TCP IPv4 GRO support
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <http://dpdk.org/ml/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://dpdk.org/ml/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <http://dpdk.org/ml/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
X-List-Received-Date: Fri, 24 Mar 2017 14:37:07 -0000

DQo+IE9uIE1hciAyNCwgMjAxNywgYXQgNjo0MyBBTSwgQW5hbnlldiwgS29uc3RhbnRpbiA8a29u
c3RhbnRpbi5hbmFueWV2QGludGVsLmNvbT4gd3JvdGU6DQo+IA0KPiANCj4gDQo+PiAtLS0tLU9y
aWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPj4gRnJvbTogSHUsIEppYXl1DQo+PiBTZW50OiBGcmlkYXks
IE1hcmNoIDI0LCAyMDE3IDg6MDcgQU0NCj4+IFRvOiBZdWFuaGFuIExpdSA8eXVhbmhhbi5saXVA
bGludXguaW50ZWwuY29tPg0KPj4gQ2M6IFdpbGVzLCBLZWl0aCA8a2VpdGgud2lsZXNAaW50ZWwu
Y29tPjsgQW5hbnlldiwgS29uc3RhbnRpbiA8a29uc3RhbnRpbi5hbmFueWV2QGludGVsLmNvbT47
IFJpY2hhcmRzb24sIEJydWNlDQo+PiA8YnJ1Y2UucmljaGFyZHNvbkBpbnRlbC5jb20+OyBTdGVw
aGVuIEhlbW1pbmdlciA8c3RlcGhlbkBuZXR3b3JrcGx1bWJlci5vcmc+OyBZaWdpdCwgRmVycnVo
IDxmZXJydWgueWlnaXRAaW50ZWwuY29tPjsNCj4+IGRldkBkcGRrLm9yZzsgTGlhbmcsIEN1bm1p
bmcgPGN1bm1pbmcubGlhbmdAaW50ZWwuY29tPjsgVGhvbWFzIE1vbmphbG9uIDx0aG9tYXMubW9u
amFsb25ANndpbmQuY29tPg0KPj4gU3ViamVjdDogUmU6IFtkcGRrLWRldl0gW1BBVENIIDAvMl0g
bGliOiBhZGQgVENQIElQdjQgR1JPIHN1cHBvcnQNCj4+IA0KPj4gT24gRnJpLCBNYXIgMjQsIDIw
MTcgYXQgMDM6MjI6MzBQTSArMDgwMCwgWXVhbmhhbiBMaXUgd3JvdGU6DQo+Pj4gT24gRnJpLCBN
YXIgMjQsIDIwMTcgYXQgMDY6MTg6NDhBTSArMDAwMCwgV2lsZXMsIEtlaXRoIHdyb3RlOg0KPj4+
Pj4+IEkgdGhpbmsgdGhhdCBoYXZpbmcgYSBzZXBhcmF0ZSBsaWJyYXJ5IGZvciBHUk8gaXMgYSBz
dGVwIGluIGEgcmlnaHQgZGlyZWN0aW9uLg0KPj4+Pj4+PiBGcm9tIG15IHBlcnNwZWN0aXZlIC0g
aXQgcHJvdmlkZXMgYSBjbGVhbiBhbmQgZmxleGlibGUgd2F5IHRvIHVzZSB0aGF0IGZlYXR1cmUu
DQo+Pj4+Pj4gSWYgbGF0ZXIgc29tZW9uZSB3b3VsZCBsaWtlIHRvIHB1dCBHUk8gaW50byBldGhk
ZXYgbGF5ZXIgKG9yIHBhcnRpY3VsYXIgUE1EKSwNCj4+Pj4+PiBoZSBjYW4gdXNlIGV4aXN0aW5n
IGxpYnJ0ZV9ncm8gZm9yIHRoYXQuDQo+Pj4+PiANCj4+Pj4+IEFncmVlLiBJIHRoaW5rIGludHJv
ZHVjaW5nIG1vcmUgZmxleGliaWxpdHkgaXMgYW4gaW1wb3J0YW50IHRoaW5nIGZvciBhcHBsaWNh
dGlvbnMuDQo+Pj4+IA0KPj4+PiBDcmVhdGluZyBhIG5ldyBsaWJyYXJ5IGp1c3QgZm9yIEdSTyBp
cyBub3QgYSByZWFzb25hYmxlIHNvbHV0aW9uLCBidXQgYWRkaW5nIHRoYXQgc3VwcG9ydCB0byBh
biBleGlzdGluZyBsaWJyYXJ5IGxpa2UgbGlicnRlX25ldCB3b3VsZA0KPj4gYmUgY2xlYW5lciBh
bmQgbm90IGNyZWF0ZSB5ZXQgYW5vdGhlciBsaWJyYXJ5Lg0KPj4+IA0KPj4+IExpYnJ0ZV9uZXQg
c2VlbXMgbGlrZSBhIGdvb2Qgc3VnZ2VzdGlvbiB0byBtZSwgZXNwZWNpYWxseSB3aGVuIHdlIGFy
ZQ0KPj4+IGNvbnNpZGVyaW5nIHRvIGFkZCBHU08gaW4gZnV0dXJlLiBUaGUgb25seSBjb25jZXJu
IHRvIG1lIGlzICJuZXQiIG1heQ0KPj4+IGJlIHRvbyBnZW5lcmljLiBJdCBtYXliZSBraW5kIG9m
IGhhcmQgdG8gZGVjaWRlIHdoaWNoIHNob3VsZCBiZSBpbg0KPj4+IGxpYnJ0ZV9uZXQsIGFuZCB3
aGljaCBzaG91bGQgYmUgYWRkZWQgYXMgYSBzdGFuZGFsb25lIGxpYi4gRm9yIGV4YW1wbGUsDQo+
Pj4gc2hvdWxkbid0ICdscG0nIGFuZCAnaXBfZnJhZycgYWxzbyBiZWxvbmcgdG8gbGlicnRlX25l
dD8NCj4gDQo+IEFib3V0IGxpYnJ0ZV9ncm8gdnMgbGlicnRlX25ldDoNCj4gDQo+IFJpZ2h0IG5v
dyBsaWJydGVfbmV0IGlzIHF1aXRlIGxpZ2h0d2VpZ2h0IG9uZSAtIGl0IG1vc3RseSBjb250YWlu
cyBhIG5ldCBwcm90b2NvbHMgZGVmaW5pdGlvbnMNCj4gcGx1cyBzb21lIGV4dHJhIGhlbHBlciBm
dW5jdGlvbnM6IHRvIHBhcnNlIHRoZSBsMi9sMyBoZWFkZXJzIHRvIGRldGVybWluZSBwdHlwZSwg
dG8gY2FsY3VsYXRlIGNrc3VtLCBldGMuDQo+IEdSTyBjb2RlIGlzIHF1aXRlIGRpZmZlcmVudCAt
IGl0IGhhcyB0byBhbGxvY2F0ZSBhbmQgbWFuYWdlIGhhc2ggdGFibGUocyksIGV0Yy4NCj4gQWdh
aW4gbXkgdW5kZXJzdGFuZGluZyBpdCB3b3VsZCBrZWVwIGdyb3dpbmcgKHdpdGggbmV3IHByb3Rv
IHN1cHBvcnQpLg0KPiBBZ2FpbiBhcyBtZW50aW9uZWQgYWJvdmUgaWYgR1JPIHNob3VsZCBnbyBp
bnRvIGxpYnJ0ZV9uZXQsIHRoZW4gbGlicnRlX2lwZnJhZyBhbmQgZnV0dXJlIEdTTyBzaG91bGQg
YWxzbyBiZSBoZXJlLg0KPiBXaGljaCB3b3VsZCBjcmVhdGUgcXVpdGUgYSBtb25zdHJvdXMgbGli
cmFyeS4gIA0KPiBTbyBJIHRoaW5rIGl0IGlzIGJldHRlciB0byBrZWVwIGxpYnJ0ZV9uZXQgc21h
bGwgYW5kIHRpZHkgYW5kIHB1dCBHUk8gZnVuY3Rpb25hbGl0eSBpbnRvIHRoZSBuZXcgbGlicmFy
eS4NCg0KVGhlIHNpemUgb2YgYSBsaWJyYXJ5IGlzIG5vdCBhIGNvbmNlcm4gd2UgaGF2ZSBzb21l
IHByZXR0eSBiaWcgb25lcyBhbHJlYWR5Lg0KDQotcnctcnctci0tIDIgcmt3aWxlcyBya3dpbGVz
IDEuMk0gTWFyIDIxIDE1OjIyIGxpYnJ0ZV9hY2wuYQ0KLXJ3LXJ3LXItLSAxIHJrd2lsZXMgcmt3
aWxlcyAgMzlLIE1hciAyMSAxNToyMiBsaWJydGVfY2ZnZmlsZS5hDQotcnctcnctci0tIDEgcmt3
aWxlcyBya3dpbGVzIDI5MksgTWFyIDIxIDE1OjIyIGxpYnJ0ZV9jbWRsaW5lLmENCi1ydy1ydy1y
LS0gMSBya3dpbGVzIHJrd2lsZXMgMjExSyBNYXIgMjEgMTU6MjMgbGlicnRlX2NyeXB0b2Rldi5h
DQotcnctcnctci0tIDEgcmt3aWxlcyBya3dpbGVzICA3NUsgTWFyIDIxIDE1OjIyIGxpYnJ0ZV9k
aXN0cmlidXRvci5hDQotcnctcnctci0tIDEgcmt3aWxlcyBya3dpbGVzIDEuNE0gTWFyIDIxIDE1
OjIyIGxpYnJ0ZV9lYWwuYQ0KLXJ3LXJ3LXItLSAxIHJrd2lsZXMgcmt3aWxlcyAzMjNLIE1hciAy
MSAxNToyMyBsaWJydGVfZWZkLmENCi1ydy1ydy1yLS0gMSBya3dpbGVzIHJrd2lsZXMgMzc0SyBN
YXIgMjIgMDk6MzEgbGlicnRlX2V0aGRldi5hDQotcnctcnctci0tIDEgcmt3aWxlcyBya3dpbGVz
IDY3NUsgTWFyIDIxIDE1OjIyIGxpYnJ0ZV9oYXNoLmENCi1ydy1ydy1yLS0gMSBya3dpbGVzIHJr
d2lsZXMgMzY2SyBNYXIgMjEgMTU6MjMgbGlicnRlX2lwX2ZyYWcuYQ0KLXJ3LXJ3LXItLSAxIHJr
d2lsZXMgcmt3aWxlcyAgMjlLIE1hciAyMSAxNToyMiBsaWJydGVfam9ic3RhdHMuYQ0KLXJ3LXJ3
LXItLSAxIHJrd2lsZXMgcmt3aWxlcyAxNjdLIE1hciAyMSAxNToyMyBsaWJydGVfa25pLmENCi1y
dy1ydy1yLS0gMSBya3dpbGVzIHJrd2lsZXMgIDE5SyBNYXIgMjEgMTU6MjIgbGlicnRlX2t2YXJn
cy5hDQotcnctcnctci0tIDEgcmt3aWxlcyBya3dpbGVzIDMwOUsgTWFyIDIxIDE1OjIyIGxpYnJ0
ZV9scG0uYQ0KLXJ3LXJ3LXItLSAxIHJrd2lsZXMgcmt3aWxlcyAgOTNLIE1hciAyMSAxNToyMiBs
aWJydGVfbWJ1Zi5hDQotcnctcnctci0tIDEgcmt3aWxlcyBya3dpbGVzIDI3MEsgTWFyIDIxIDE1
OjIyIGxpYnJ0ZV9tZW1wb29sLmENCi1ydy1ydy1yLS0gMSBya3dpbGVzIHJrd2lsZXMgIDE3SyBN
YXIgMjEgMTU6MjIgbGlicnRlX21ldGVyLmENCi1ydy1ydy1yLS0gMSBya3dpbGVzIHJrd2lsZXMg
IDcxSyBNYXIgMjEgMTU6MjIgbGlicnRlX25ldC5hDQotcnctcnctci0tIDEgcmt3aWxlcyBya3dp
bGVzIDIxMUsgTWFyIDIxIDE1OjIzIGxpYnJ0ZV9wZHVtcC5hDQotcnctcnctci0tIDEgcmt3aWxl
cyBya3dpbGVzIDE0MEsgTWFyIDIxIDE1OjIzIGxpYnJ0ZV9waXBlbGluZS5hDQotcnctcnctci0t
IDEgcmt3aWxlcyBya3dpbGVzIDEuNE0gTWFyIDIxIDE1OjIzIGxpYnJ0ZV9wb3J0LmENCi1ydy1y
dy1yLS0gMSBya3dpbGVzIHJrd2lsZXMgMTIySyBNYXIgMjEgMTU6MjIgbGlicnRlX3Bvd2VyLmEN
Ci1ydy1ydy1yLS0gMSBya3dpbGVzIHJrd2lsZXMgMTU0SyBNYXIgMjEgMTU6MjIgbGlicnRlX3Jl
b3JkZXIuYQ0KLXJ3LXJ3LXItLSAxIHJrd2lsZXMgcmt3aWxlcyAgNjNLIE1hciAyMSAxNToyMiBs
aWJydGVfcmluZy5hDQotcnctcnctci0tIDEgcmt3aWxlcyBya3dpbGVzIDM3N0sgTWFyIDIxIDE1
OjIzIGxpYnJ0ZV9zY2hlZC5hDQotcnctcnctci0tIDEgcmt3aWxlcyBya3dpbGVzIDEuNE0gTWFy
IDIxIDE1OjIzIGxpYnJ0ZV90YWJsZS5hDQotcnctcnctci0tIDEgcmt3aWxlcyBya3dpbGVzICA1
M0sgTWFyIDIxIDE1OjIyIGxpYnJ0ZV90aW1lci5hDQotcnctcnctci0tIDEgcmt3aWxlcyBya3dp
bGVzIDYwOUsgTWFyIDIxIDE1OjIzIGxpYnJ0ZV92aG9zdC5hDQoNClJlbW92ZWQgdGhlIFBNRCBh
cmNoaXZlcyBhbmQgbHMgaXMgbm90IGEgZ3JlYXQgd2F5IHRvIGdldCB0aGUgdHJ1ZSBzaXplIGNv
bXBhcmVkIHRvIHVzaW5nIOKAmHNpemXigJkuDQoNCklmIHlvdSBsb29rIGF0IHRoZSBzaXplIHZh
bHVlcywgdGhlIOKAmHNpemUgKi5h4oCZIGlzIGludGVyZXN0aW5nIHRvby4NCg0KVGhlIHNpemUg
b2YgbGlicnRlX25ldCBpcyA3MUsgKyBpcF9mcmFnIDM2NksgaXMgcHJldHR5IHNtYWxsIGNvbXBh
cmVkIHRvIGEgZmV3IG90aGVycy4gSSB3b3VsZCBhc3N1bWUgR1JPIGlzIHByZXR0eSBzbWFsbCB0
b28sIHNvIGFkZGluZyBHUk8gaW50byBsaWJydGVfbmV0IGlzIHZlcnkgcmVhc29uYWJsZS4gV2Ug
Y291bGQgbGVhdmUgaXBfZnJhZyBvdXQgYXMgY3VycmVudGx5IGl0IGlzIGEgc3RhbmRhbG9uZSBs
aWIsIGJ1dCBjb250aW51ZSB0byBhZGQgR1NPIHRvIGxpYnJ0ZV9uZXQuIEkgd291bGQgbm90IGFz
c3VtZSB0aGUgc2l6ZSB3b3VsZCB0aGF0IGxhcmdlIGFuZCBpdCBzZWVtcyBsaWtlIHRoZSBiZXN0
IHBsYWNlIHRvIHB1dCB0aGUgY29kZS4NCg0KSWYgeW91IHN0aWxsIHdhbnQgdG8gY3JlYXRlIGEg
Z3NvIGxpYiB0aGVuIEkgZ3Vlc3MgeW91IGNhbiwganVzdCBzZWVtcyB1bnJlYXNvbmFibGUgdG8g
bWUuDQoNCj4gDQo+Pj4gDQo+Pj4+IENyZWF0aW5nIG1vcmUgZmxleGliaWxpdHkgaXMgbm90IHRo
ZSBiZXN0IGdvYWwgYXMgd2UgcmVhbGx5IHdhbnQgdG8gbWFrZSBHUk8gZWFzeSBhbmQgc2ltcGxl
IGZvciB0aGUgZGV2ZWxvcGVyIHRvIHVzZSBmb3IgYW55DQo+PiBkZXZpY2Ugd2l0aG91dCBoYXZp
bmcgdG8gY2hhbmdlIGhpcyBhcHBsaWNhdGlvbnMgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIGZl
YXR1cmUuIFNvbWUgdGltZXMgcHJvdmlkaW5nIG1vcmUgZmxleGliaWxpdHkganVzdCBtZWFucw0K
Pj4gbWFraW5nIGl0IG1vcmUgY29tcGxleGVkIGFuZCBtb3JlIEFQSXMgdGhlIGRldmVsb3BlciBu
ZWVkcyB0byB1bmRlcnN0YW5kLiBQcm92aWRpbmcgR1JPIGFzIGEgb2ZmbG9hZCBmZWF0dXJlIGlz
IHRoZSBiZXR0ZXINCj4+IGRpcmVjdGlvbiBhcyBpdCBtYWtlcyBpdCBzaW1wbGUgZm9yIGFuIGFw
cGxpY2F0aW9uIHRvIHVzZS4NCj4+Pj4gDQo+Pj4+IElmIHdlIHByb3ZpZGUgR1JPIGFzIGEgc3Rh
bmRhcmQgb2ZmbG9hZCBzaW1pbGFyIHRvIHRoZSBvdGhlciBvZmZsb2FkcyB3ZSBjdXJyZW50bHkg
aGF2ZSBtYWtlcyBpdCBlYXN5IGZvciB0aGUgZGV2ZWxvcGVyLiBUaGUgYmVzdA0KPj4gZ29hbCBm
b3IgYSBmZWF0dXJlIGlzIHRoZSBiZXN0IHBlcmZvcm1hbmNlIGZvciB0aGUgYXBwbGljYXRpb24g
d2l0aG91dCBoYXZpbmcgdGhlIGFwcGxpY2F0aW9uIG1ha2UgZXZlbiBtb3JlIEFQSXMgY2FsbHMg
YWxvbmcgd2l0aA0KPj4gc2ltcGxlIGFuZCBlYXN5IHRvIHVzZS4NCj4+PiANCj4+PiBJbiBnZW5l
cmFsLCBJJ2QgYWdyZWUgd2l0aCB5b3UsIGlmIG5vIG9uZSBpcyBvYmplY3QgdG8gYWRkIGEgc2hv
cnQgcGllY2UNCj4+PiBvZiBjb2RlIGF0IHRoZSBlbmQgb2YgcnRlX2V0aF9yeF9idXJzdDoNCj4+
PiANCj4+PiAgICAgKyAgICAgICBpZiAoZXRoX2dyb19pc19lbmFibGVkKGRldikpDQo+Pj4gICAg
ICsgICAgICAgICAgICAgICBuYl9yeCA9IHJ0ZV9uZXRfZ3JvKC4uLik7DQo+Pj4gICAgICsNCj4+
PiAgICAgICAgICAgICByZXR1cm4gbmJfcng7DQo+Pj4gICAgICB9DQo+Pj4gDQo+Pj4gT2JqZWN0
aW9ucz8NCg0KV2h5IGRvIHdlIG5lZWQgdG8gbW9kaWZ5IGV2ZXJ5IGRyaXZlciwgd2h5IG5vdCB1
c2UgdGhlIFJYIGNhbGxiYWNrIGZlYXR1cmUgdGhlbiBubyBkcml2ZXJzIHdlcmUgaGFybWVkIGlu
IHRoaXMgcGF0Y2ggOi0pDQoNCj4gDQo+IEknZCBiZXR0ZXIgbm90IHRvIG9wZW4gdGhhdCBkb29y
Lg0KPiBJZiB3ZSdsbCBhbGxvdyB0aGF0IGZvciBHUk8gLSB3ZSdsbCBoYXZlIHRvIGFsbG93IHRo
YXQgZm9yIGV2ZXJ5IG90aGVyIHN0dWZmOg0KPiAtIGlwIHJlYXNzZW1ibHkNCj4gLSBsMy9sNCBj
a3N1bSBjYWxjdWxhdGlvbiBpZiB1bmRlcmx5aW5nIEhXIGRvZXNuJ3Qgc3VwcG9ydCBpdA0KPiAt
IFNXIHB0eXBlIHJlY29nbml0aW9uDQo+IC0gZXRjLg0KPiANCj4gQWRkaW5nIGFsbCB0aGVzZSB0
aGluZ3MgaW50byByeF9idXJzdCgpIHdvdWxkIG1vc3QgbGlrZWx5IHNsb3cgdGhpbmdzIGRvd24N
Cj4gKHJlbWVtYmVyIGl0IGlzIGEgZGF0YS1wYXRoKSBhbmQgcHJldHR5IHNvb24gd291bGQgYnJp
bmcgcnhfYnVyc3QoKSBpbnRvDQo+IG1lc3N5IG1vbnN0ZXIgdGhhdCB3b3VsZCBiZSBoYXJkIHRv
IG1haW50YWluIGFuZCBkZWJ1Zy4gICAgDQo+IA0KPiBNeSBwcmVmZXJlbmNlIHdvdWxkIGJlIHRv
IGtlZXAgcnRlX2V0aGRldiBkYXRhLXBhdGggYXMgc21hbGwgYW5kIHRpZHkgYXMgcG9zc2libGUu
DQo+IElmIGluIGZ1dHVyZSB3ZSdkIHJlYWxseSBsaWtlIHRvIGludHJvZHVjZSBhbGwgdGhlc2Ug
U1cgdGhpbmdzIGludG8gZGV2IGxheWVyIC0NCj4gbXkgcHJlZmVyZW5jZSB3b3VsZCBiZSB0byBj
cmVhdGUgc29tZSBzb3J0IG9mIG5ldyBhYnN0cmFjdGlvbiBvbiB0b3Agb2YgY3VycmVudCBldGhk
ZXY6DQo+IHJ0ZV9ldGhfc21hcnRkZXYgb3Igc28uDQo+IFNvIGl0IHdvdWxkIGJlOg0KPiBydGVf
ZXRoX3NtYXJ0ZGV2X3J4X2J1cnN0KC4uLi4pDQo+IHsNCj4gICBuYl9yeCA9ICBydGVfZXRoX3J4
X2J1cnN0KC4uLik7DQo+ICAgLyogYXBwbHkgR1JPLCByZWFzc2VtYmx5LCBldGMuICovDQo+ICAu
Li4NCj4gfSANCg0KQWRkaW5nIGEgbmV3IEFQSSBpcyBzdGlsbCBub3QgcmVxdWlyZWQsIGFzIHRo
ZSBSWCBjYWxsYmFjayBjb2RlIGlzIGFscmVhZHkgaW4gcGxhY2UgZm9yIHRoZXNlIHR5cGVzIG9m
IHBvc3QgcHJvY2Vzc2luZyBvZiBtYnVmcy4NCg0KPiANCj4gU29tZXRoaW5nIHNpbWlsYXIgd2l0
aCB3aGF0IDZXaW5kIHRyeWluZyB0byBpbnRyb2R1Y2Ugd2l0aCB0aGVpciBmYWlsc2FmZSBkZXYg
Y29uY2VwdC4NCg0KVGhlIDZXaW5kIGlzIGEgZGlmZmVyZW50IHN0b3J5IGhlcmUgYW5kIG5vdCBh
IHBvc3QgcHJvY2Vzc2luZyBvZiBSWCBtYnVmcy4NCg0KPiANCj4+PiANCj4+PiBCdXQgb25lIHdh
eSBvciBhbm90aGVyLCB3ZSBuZWVkIHB1dCB0aGUgZ3JvIGNvZGUgYXQgc29tZXdoZXJlIGFuZCB3
ZQ0KPj4+IG5lZWQgaW50cm9kdWNlIGEgZ2VuZXJpYyBBUEkgZm9yIHRoYXQuIEl0IGNvdWxkIGJl
IGxpYnJ0ZV9uZXQgYXMgeW91DQo+Pj4gc3VnZ2VzdGVkLiBTbyB0aGUgZ29vZCB0aGluZyBpcyB0
aGF0IHdlIGFsbCBhdCBsZWFzdCBjb21lIGFuIGFncmVlbWVudA0KPj4+IHRoYXQgaXQgc2hvdWxk
IGJlIGltcGxlbWVudGVkIGluIGxpYiwgcmlnaHQ/IFRoZSBvbmx5IGNvbnRyb3ZlcnN5IGlzDQo+
Pj4gc2hvdWxkIHdlIGV4cG9ydCBpdCB0byBhcHBsaWNhdGlvbiBhbmQgbGV0IHRoZW0gdG8gaW52
b2tlIGl0LCBvciBoaWRlDQo+Pj4gaXQgaW5zaWRlIHJ0ZV9ldGhfcnhfYnVyc3QuDQo+Pj4gDQo+
Pj4gVGhvdWdoIGl0IG1heSB0YWtlIHNvbWUgdGltZSBmb3IgYWxsIG9mIHVzIHRvIGNvbWUgYW4g
YWdyZWVtZW50IG9uIHRoYXQsDQo+Pj4gYnV0IHRoZSBnb29kIHRoaW5nIGlzIHRoYXQgaXQgd291
bGQgYmUgYSB2ZXJ5IHRyaXZpYWwgY2hhbmdlIG9uY2UgaXQncw0KPj4+IGRvbmUuIEFncmVlPw0K
Pj4gDQo+PiBBZ3JlZS4NCj4+IA0KPj4+IA0KPj4+IFRodXMgSSdkIHN1Z2dlc3QgSmlheXUgdG8g
Zm9jdXMgb24gdGhlIHRoZSBHUk8gY29kZSBkZXZlbG9wZW1lbnQsIHN1Y2gNCj4+PiBhcyBtYWtp
bmcgaXQgZ2VuZXJpYyBlbm91Z2ggYW5kIGFkZGluZyBvdGhlciBwcm90b2NvbHMgc3VwcG9ydC4g
QW5kIEkNCj4+PiB3b3VsZCBsaWtlIHRvIGFzayB5b3UgZ3V5cyB0byBoZWxwIHJldmlldyB0aGVt
LiBNYWtlcyBzZW5zZSB0byBhbGw/DQo+Pj4gDQo+PiANCj4+IEFncmVlIGFnYWluLiBObyBtYXR0
ZXIgd2hlcmUgdG8gcHV0IEdSTyBjb2RlLCB0aGUgYXBpcyBzaG91bGQgYmUgZ2VuZXJpYw0KPj4g
YW5kIGV4dGVuc2libGUuIEFuZCBtb3JlIHByb3RvY29scyBzaG91bGQgYmUgc3VwcG9ydGVkLg0K
PiANCj4gWWVwLCB0aGF0J3Mgd2hhdCBteSB0YWtlIGZyb20gdGhlIGJlZ2lubmluZzoNCj4gTGV0
J3MgZGV2ZWxvcCBhIGxpYnJ0ZV9ncm8gZmlyc3QgYW5kIG1ha2UgaXQgc3VjY2Vzc2Z1bCwgdGhl
biB3ZSBjYW4gdGhpbmsgc2hvdWxkDQo+IHdlIChhbmQgaG93KSBwdXQgaW50byBldGhkZXYgbGF5
ZXIuDQoNCkxldCBub3QgY3JlYXRlIGEgZ3JvIGxpYnJhcnkgYW5kIHB1dCB0aGUgY29kZSBpbnRv
IGxpYnJ0ZV9uZXQgYXMgc2l6ZSBpcyBub3QgYSBjb25jZXJuIHlldCBhbmQgaXQgaXMgdGhlIGJl
c3QgcGxhY2UgdG8gcHV0IHRoZSBjb2RlLiBBcyBmb3IgaXBfZnJhZyBzb21lb25lIGNhbiBtb3Zl
IGl0IGludG8gbGlicnRlX25ldCBpZiBzb21lb25lIHdyaXRlcyB0aGUgcGF0Y2guDQoNCj4gDQo+
IEtvbnN0YW50aW4NCj4gDQo+PiANCj4+IFRoYW5rcywNCj4+IEppYXl1DQo+PiANCj4+PiBUaGFu
a3MuDQo+Pj4gDQo+Pj4gCS0teWxpdQ0KPj4+IA0KPj4+IA0KPj4+Pj4+IEkgZGlkbid0ICBoYXZl
IGEgY2xvc2VyIGxvb2sgeWV0LCBidXQgSSB0aGluayB0aGF0IGNhdWdodCBteSBhdHRlbnRpb246
DQo+Pj4+Pj4gQVBJIGZpciB0aGUgbGliIHNlZW1zIHRvbyBJUHY0L1RDUCBvcmllbnRlZCAtDQo+
Pj4+Pj4gdGhvdWdoIEkgdW5kZXJzdGFuZCB0aGF0IHRoZSBtb3N0IGNvbW1vbiBjYXNlIGFuZCBz
aG91bGQgYmUgaW1wbGVtZW50ZWQgZmlyc3QuDQo+Pj4+Pj4gSSB3b25kZXIgY2FuIHdlIGhhdmUg
aXQgYSBiaXQgbW9yZSBnZW5lcmljIGFuZCBleHRlbmRhYmxlLCBzbyB1c2VyIGNhbiBzcGVjaWZ5
IHdoYXQgY29tYmluYXRpb24gb2YgcHJvdG9jb2xzDQo+Pj4+Pj4gaGUgaXMgaW50ZXJlc3RlZCBp
biAobGV0IHNheTogaXB2NC90Y3AsICBpcHY2L3RjcCwgZXRjLikuDQo+Pj4+Pj4gRXZlbiBpZiBy
aWdodCBub3cgd2UnbGwgaGF2ZSBpdCBpbXBsZW1lbnRlZCBvbmx5IGZvciBpcHY0L3RjcC4NCj4+
Pj4+PiBUaGVuIGludGVybmFsbHkgd2UgY2FuIGhhdmUgc29tZSBjaGVjayBpcyB0aGF0IHN1cHBv
cnRlZCBvciBub3QgYW5kIGlmIHllcyBzZXR1cCB0aGluZ3MgYWNjb3JkaW5nbHkuDQo+Pj4+PiAN
Cj4+Pj4+IEluZGVlZCwgY3VycmVudCBhcGlzIGFyZSB0b28gc3BlY2lmaWMuIEl0J3Mgbm90IHZl
cnkgZnJpZW5kbHkgdG8gYXBwbGljYXRpb25zLg0KPj4+Pj4gTWF5YmUgd2UgY2FuIHVzZSBtYWNy
byB0byBkZWZpbmUgdGhlIGNvbWJpbmF0aW9uIG9mIHByb3RvY29scywgbGlrZSBHUk9fVENQX0lQ
VjQNCj4+Pj4+IGFuZCBHUk9fVURQX0lQVjY7IGFuZCBwcm92aWRlIGEgZ2VuZXJpYyBzZXR1cCBm
dW5jdGlvbiBhbmQgcmVhc3NlbWJseSBmdW5jdGlvbi4NCj4+Pj4+IEJvdGggb2YgdGhlbSBwZXJm
b3JtIGRpZmZlcmVudCBvcGVyYXRpb25zIGFjY29yZGluZyB0byB0aGUgbWFjcm8gdmFsdWUgaW5w
dXR0ZWQNCj4+Pj4+IGJ5IHRoZSBhcHBsaWNhdGlvbi4NCj4+Pj4+IA0KPj4+Pj4+IEJUVywgdGhh
dCdzIGZvciAxNy4wOCwgcmlnaHQ/DQo+Pj4+PiANCj4+Pj4+IFllcywgaXQncyBmb3IgMTcuMDgu
DQo+Pj4+PiANCj4+Pj4+IEppYXl1DQo+Pj4+Pj4gDQo+Pj4+Pj4gS29uc3RhbnRpbg0KPj4+Pj4+
IA0KPj4+Pj4+IA0KPj4+PiANCj4+Pj4gUmVnYXJkcywNCj4+Pj4gS2VpdGgNCg0KUmVnYXJkcywN
CktlaXRoDQoNCg==