From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id A89D57F50 for ; Fri, 21 Nov 2014 06:29:46 +0100 (CET) Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga103.jf.intel.com with ESMTP; 20 Nov 2014 21:37:26 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.07,429,1413270000"; d="scan'208";a="640953886" Received: from pgsmsx101.gar.corp.intel.com ([10.221.44.78]) by orsmga002.jf.intel.com with ESMTP; 20 Nov 2014 21:40:12 -0800 Received: from shsmsx103.ccr.corp.intel.com (10.239.4.69) by PGSMSX101.gar.corp.intel.com (10.221.44.78) with Microsoft SMTP Server (TLS) id 14.3.195.1; Fri, 21 Nov 2014 13:40:10 +0800 Received: from shsmsx101.ccr.corp.intel.com ([169.254.1.110]) by SHSMSX103.ccr.corp.intel.com ([169.254.4.240]) with mapi id 14.03.0195.001; Fri, 21 Nov 2014 13:40:10 +0800 From: "Liu, Jijiang" To: Olivier MATZ Thread-Topic: [dpdk-dev] [PATCH v8 10/10] app/testpmd:test VxLAN Tx checksum offload Thread-Index: AQHP8Yux0VUY397yik2xjVM3DjesSpxPpsiAgAGaY5CAABv8AIAIEl8ggAAq4wCAAVxhEIAB236AgAFSGSD//7WkAIAB+JNw//+ZsICABQb3cP//1NkAAGyZw6AANUR8gAAqc32g Date: Fri, 21 Nov 2014 05:40:08 +0000 Message-ID: <1ED644BD7E0A5F4091CF203DAFB8E4CC01D9C6C2@SHSMSX101.ccr.corp.intel.com> References: <1414376006-31402-1-git-send-email-jijiang.liu@intel.com> <176980123.CbUgamS8oi@xps13> <1ED644BD7E0A5F4091CF203DAFB8E4CC01D992F8@SHSMSX101.ccr.corp.intel.com> <3175184.TxKMqZeb6U@xps13> <1ED644BD7E0A5F4091CF203DAFB8E4CC01D9B646@SHSMSX101.ccr.corp.intel.com> <5465C6DD.4000000@6wind.com> <1ED644BD7E0A5F4091CF203DAFB8E4CC01D9BAC0@SHSMSX101.ccr.corp.intel.com> <5469DA40.7050107@6wind.com> <1ED644BD7E0A5F4091CF203DAFB8E4CC01D9C383@SHSMSX101.ccr.corp.intel.com> <546E1887.1020800@6wind.com> In-Reply-To: <546E1887.1020800@6wind.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Cc: dev Subject: Re: [dpdk-dev] [PATCH v8 10/10] app/testpmd:test VxLAN Tx checksum offload X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 21 Nov 2014 05:29:48 -0000 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogT2xpdmllciBNQVRaIFtt YWlsdG86b2xpdmllci5tYXR6QDZ3aW5kLmNvbV0NCj4gU2VudDogRnJpZGF5LCBOb3ZlbWJlciAy MSwgMjAxNCAxMjozNiBBTQ0KPiBUbzogTGl1LCBKaWppYW5nDQo+IENjOiBUaG9tYXMgTW9uamFs b247IGRldg0KPiBTdWJqZWN0OiBSZTogW2RwZGstZGV2XSBbUEFUQ0ggdjggMTAvMTBdIGFwcC90 ZXN0cG1kOnRlc3QgVnhMQU4gVHggY2hlY2tzdW0NCj4gb2ZmbG9hZA0KPiANCj4gSGkgSmlqaWFu ZywNCj4gDQo+IE9uIDExLzIwLzIwMTQgMDg6MjggQU0sIExpdSwgSmlqaWFuZyB3cm90ZToNCj4g Pj4gVGhlIG9yaWdpbmFsIGJlaGF2aW9yICh3aXRob3V0IHlvdXIgdnhsYW4gcGF0Y2hlcyksIHdo aWNoIHN0aWxsIHdvcmtzDQo+ID4+IHRvZGF5LCBpcyB0byBzZWxlY3QgaW5uZXIgb3Igb3V0ZXIg dXNpbmcgdGhlIG0tPmwyX2xlbiBmaWVsZDoNCj4gPj4NCj4gPj4gICAgLSBjaGVja3N1bSBvdXRl ciBJUCArIFVEUA0KPiA+PiAgICAgIG0tPmwyX2xlbj0xNCBtLT5sM19sZW49MjANCj4gPj4gICAg ICBmbGFncz1QS1RfVFhfSVBfQ0tTVU0gUEtUX1RYX1VEUF9DS1NVTQ0KPiA+Pg0KPiA+PiAgICAt IGNoZWNrc3VtIGlubmVyIElQICsgVURQDQo+ID4+ICAgICAgbS0+bDJfbGVuPTY0IG0tPmwzX2xl bj0yMA0KPiA+PiAgICAgIGZsYWdzPVBLVF9UWF9JUF9DS1NVTSBQS1RfVFhfVURQX0NLU1VNDQo+ ID4+ICAgICAgb2YgY291cnNlLCB0aGUgcGFja2V0IGlzIHZhbGlkIG9ubHkgaWYgdGhlIG91dGVy IElQIGNoZWNrc3VtIGlzDQo+ID4+ICAgICAgYWxyZWFkeSBjb3JyZWN0IGFuZCBvdXRlciBVRFAg Y2hlY2tzdW0gaXMgMA0KPiA+Pg0KPiA+PiBJZiBpNDBlIGRvZXMgbm90IGFjdCBsaWtlIHRoaXMs IGl0IGRvZXMgbm90IGZvbGxvdyB0aGUgcHJldmlvdXMgQVBJLg0KPiA+DQo+ID4gTm8sICBpNDBl IGZvbGxvd3MgdGhpcy4NCkluIHRoaXMgY2FzZSwgSSBtZWFudCB0aGF0IGlmIHRoZSBwYWNrZXQg d2l0aCBmb3JtYXQgIG91dGVyIElQIC8gb3V0ZXIgVURQIC8gVnhMQU4gLyBFdGhlciAvIGlubmVy IElQIC8gaW5uZXIgVURQIC8gZGF0YSAgIGlzIG5vdCByZWNvZ25pemVkIFZYTEFOIHBhY2tldCwg aXQgYWxzbyBjYW4gd29yayBvbiA0MEcgSWYgaXQgY2FuIHdvcmsgb24gMTBHIHRvZGF5Lg0KIA0K PiBPSy4gVGhpcyBpcyBhc3N1bXB0aW9uIChBKToNCj4gVG8gY2FsY3VsYXRlIHRoZSBpbm5lciBJ UCArIFVEUCBjaGVja3N1bSwgeW91IGRvbid0IG5lZWQgVlhMQU4gZmxhZy4NCj4gWW91IGp1c3Qg YWNrZWQgaXQuDQoNClRoZSBWWExBTiBwYWNrZXQgY2FuIGJlIHJlY29nbml6ZWQgYWZ0ZXIgIFZY TEFOIFVEUCBkZXN0aW5hdGlvbiBwb3J0IGlzIGNvbmZpZ3VyZWQgb24gaTQwZSAsIA0KVFggY2hl Y2tzdW0gb2ZmbG9hZCBtdXN0IG5vdCB3b3JrIGlmIHlvdSBzdGlsbCBzZXQgIG0tPmwyX2xlbj02 NCB3aXRob3V0ICB0aGUgUEtUX1RYX1ZYTEFOX0NLU1VNIGZsYWcuDQpCZWNhdXNlIHdlIG5lZWQg dGhpcyBQS1RfVFhfVlhMQU4vVFVOTkVMX0NLU1VNIHRvIHRlbGwgZHJpdmVyIHRvIHNldCBzb21l IHJlbGF0ZWQgdHVubmVsaW5nICByZWdpc3RlcnMuDQogRG8geW91IGhvcGUgdGhhdCB3ZSBjYW4g dXNlIEwyIGxlbmd0aCB0byBjaGVjayBpZiB0aGUgcGFja2V0IGlzIHR1bm5lbGluZz8gSWYgeWVz LCAgSSBkb24ndCB0aGluayBpdCBtYWtlcyBzZW5zZS4NCg0KQXMgdG8gdHVubmVsaW5nIHBhcmFt ZXRlcnMsIGZvciBleGFtcGxlLCANCkw0VFVOVCBMNCBUdW5uZWxpbmcgVHlwZSBwYXJhbWV0ZXIN Cg0KOToxMCAgIEw0VFVOVCBMNCBUdW5uZWxpbmcgVHlwZSAoVGVyZWRvIC8gR1JFIGhlYWRlciAv IFZYTEFOIGhlYWRlcikgaW5kaWNhdGlvbjoNCiAgICAwMGIgLSBObyBVRFAgLyBHUkUgdHVubmVs aW5nIChmaWVsZCBtdXN0IGJlIHNldCB0byB6ZXJvIGlmIEVJUFQgZXF1YWxzIHRvIHplcm8pDQog ICAgMDFiIC0gVURQIHR1bm5lbGluZyBoZWFkZXIgKEFueSBVRFAgdHVubmVsaW5nLCBWeExBTiBh bmQgR2VuZXZlKQ0KICAgIDEwYiAtIEdSRSB0dW5uZWxpbmcgaGVhZGVyDQogICBFbHNlIC0gcmVz ZXJ2ZWQNCg0KTDQgVHVubmVsaW5nIGxlbmd0aA0KIA0KMTI6MTggTDRUVU5MRU4gTDQgVHVubmVs aW5nIExlbmd0aCAoVGVyZWRvIC8gR1JFIGhlYWRlciAvIFZYTEFOIGhlYWRlcikgZGVmaW5lZCBp biBXb3JkcyAoZmllbGQgbXVzdCBiZSBzZXQgdG8gemVybw0KaWYgTDRUVU5UIGVxdWFscyB0byB6 ZXJvKS4NCuKAoiBGb3Igc3RhbmRhcmQgVGVyZWRvIGhlYWRlcnMgd2l0aCBubyBhZGRpdGlvbmFs IGhlYWRlciBwYXlsb2FkIGl0IHNob3VsZCBiZSBzZXQgdG8gNCB3aGljaCBlcXVhbHMgdG8NCjgg Ynl0ZXMuIElmIHRoZSB0dW5uZWxpbmcgaGVhZGVyIGluY2x1ZGVzIHByb3ByaWV0YXJ5IGNvbnRl bnQgaXQgc2hvdWxkIGJlIGluY2x1ZGVkIGFzIHdlbGwuDQrigKIgRm9yIElQIGluIEdSRSBpdCBz aG91bGQgYmUgc2V0IHRvIHRoZSBsZW5ndGggb2YgdGhlIEdSRSBoZWFkZXIuDQrigKIgRm9yIE1B QyBpbiBHUkUgb3IgTUFDIGluIFVEUCBpdCBzaG91bGQgYmUgc2V0IHRvIHRoZSBsZW5ndGggb2Yg dGhlIEdSRSBvciBVRFAgaGVhZGVycyBwbHVzIHRoZSBpbm5lciBNQUMgdXAgdG8gaW5jbHVkaW5n IGl0cyBsYXN0IEV0aGVydHlwZS4NCklmIHRoZSBMNFRVTlQgaXMgY2xlYXJlZCwgdGhpcyBmaWVs ZCBpcyBpZ25vcmVkIGFuZCBtdXN0IGJlIHNldCB0byB6ZXJvLg0KDQpPbGl2aWVyLCBUaG9tYXMN CkkgZG9uJ3Qga25vdyAgaWYgeW91IGdvdCBpbnRlbCA0MEcgZGF0YXNoZWV0LCAgd2UgYWxsIGtu b3duIHlvdSBhcmUgZm9jdXNpbmcgb24gZ2VuZXJpYyBjb25jZXB0IGFuZCBwcm9ncmFtbWluZywg SSBhbHNvIHRoaW5rIGl0IGlzIHZlcnkgaW1wb3J0YW50Lg0KQnV0ICBJIHRoaW5rIGlmIHlvdSBj YW4gcmVhZCBpbnRlbCA0MEcgZGF0YSBzaGVldCwgeW91IHByb2JhYmx5IHVuZGVyc3RhbmQgZWFz aWx5IHdoYXQgdGhlc2UgNDBHIHBhdGNoZXMgYXJlIGZvciBhbmQgd2hhdCB3ZSBhcmUgdGFsa2lu ZyBhYm91dC4gVGhpcyBpcyBteSBwZXJzb25hbCBvcGluaW9uLg0KDQoNCj4gPj4+IDIuIG9ubHkg c2V0IGlubmVyIEwzL0w0IGhlYWRlciBUWCBjaGVja3N1bQ0KPiA+Pj4gICAgICB0eF9jaGVja3N1 bSBzZXQgMHgzMCAwDQo+ID4+PiAgICBJbiB0aGlzIGNhc2UsIHRoZSBQS1RfVFhfVlhMQU5fQ0tT VU0gZmxhZyBpcyBzZXQsIHNvIGRyaXZlciB0aGluaw0KPiA+Pj4gaXQgaXMgVlhMQU4NCj4gPj4g cGFja2V0LCBhbmQgd2UgZG9uJ3QgbmVlZCB0byBjaGFuZ2Ugb3V0ZXIgb25lcyBiZWNhdXNlIHdl IGRvbid0IHNldA0KPiA+PiBvdXRlciBmbGFncyBoZXJlIChQS1RfVFhfSVBWNF9DU1VNLCBQS1Rf VFhfVURQX0NLU1VNKS4NCj4gDQo+IEFzc3VtcHRpb24gKEIpOg0KPiBUbyBjYWxjdWxhdGUgdGhl IGlubmVyIElQICsgVURQIGNoZWNrc3VtICh0aGlzIGlzIHdoYXQgeW91IHdyb3RlICJvbmx5IHNl dCBpbm5lcg0KPiBMMy9MNCBoZWFkZXIgVFggY2hlY2tzdW0iKSwgeW91IHNheSB5b3Ugc2V0IHRo ZSBWWExBTiBmbGFnLg0KPiBUaGlzIGlzIHRoZSBvcHBvc2l0ZSBvZiAoQSkuDQo+IA0KPiA+PiBB cyBleHBsYWluZWQgYWJvdmUsIHRoZXJlIGlzIG5vIG5lZWQgdG8gc2V0IHRoZSBQS1RfVFhfVlhM QU5fQ0tTVU0gaWYNCj4gPj4geW91IG9ubHkgd2FudCB0byBzZXQgdGhlIGlubmVyIEwzL0w0IGNo ZWNrc3VtLg0KPiA+PiBUaGlzIHdhcyBhbHJlYWR5IHdvcmtpbmcgbGlrZSB0aGlzDQo+ID4+IGJl Zm9yZSB5b3VyIHBhdGNoZXMsIGFzIGxvbmcgYXMgbDJfbGVuIGFuZCBsM19sZW4gYXJlIHNldCBw cm9wZXJseSBpbg0KPiA+PiB0aGUgbWJ1ZiAobDJfbGVuIHNob3VsZCBpbmNsdWRlIHRoZSBvdXRl ciBoZWFkZXJzKS4NCj4gPg0KPiA+IERvZXMgVlhMQU4gVFggY2hlY2tzdW0gb2ZmbG9hZCBvciBv cmRpbmFyeSBMMiBwYWNrZXQgVFggY2hlY2tzdW0gb2ZmbG9hZA0KPiB3b3JrPw0KPiA+IEhhdmUg eW91IGV2ZXIgdGVzdGVkIGl0IG9uIGEgTklDIHRoYXQgc3VwcG9ydHMgVlhMQU4uDQo+IA0KPiBZ b3UgZG9uJ3QgYW5zd2VyIHRoZSBxdWVzdGlvbjogd2hpY2ggYmV0d2VlbiAoQSkgb3IgKEIpIGlz IGNvcnJlY3QuDQo+IA0KPiBJJ20gc29ycnkgSSBkb24ndCB1bmRlcnN0YW5kIHlvdXIgcXVlc3Rp b24gYWJvdmUuDQo+IA0KPiBJIGhhdmUgZG9uZSBubyB0ZXN0IG9uIGk0MGUsIGJlY2F1c2UgSSBk b24ndCBoYXZlIGFjY2VzcyB0byB0aGlzIGhhcmR3YXJlLg0KPiANCj4gPiBUaGUgUEtUX1RYX1ZY TEFOX0NLU1VNIGZsYWcgbWVhbmluZyBqdXN0IHRlbGwgZHJpdmVyIHRoaXMgaXMgZW5jYXBzdWxh dGlvbg0KPiBwYWNrZXQsIHNvIGRyaXZlciBzaG91bGQgc2V0IFRYIGNoZWNrc3VtIG9mZmxvYWQg Zm9yIHRoZSBwYWNrZXQgdXNpbmcgb3V0ZXIgbDIvbDMNCj4gbGVuLCBpbm5lciBsMi9sMyBsZW4g YW5kIHR1bm5lbGluZyBoZWFkZXIgbGVuZ3RoLg0KPiA+DQo+ID4gSWYgeW91IGRvbid0IGxpa2Ug dGhpcyBmbGFnIG5hbWUsIEkgY2FuIGNoYW5nZSBpdCBmb3IgIFBLVF9UWF9UVU5ORUxfQ0tTVU0s DQo+IHdoaWNoIGhhdmUgbW9yZSBnZW5lcmljIG1lYW5pbmcuDQo+IA0KPiBUaGUgcHJvYmxlbSBp cyBub3Qgb25seSB0aGUgbmFtZS4gQWZ0ZXIgdGVucyBvZiBtYWlscywgSSdtIHN0aWxsIG5vdCBh YmxlIHRvDQo+IHVuZGVyc3RhbmQgdGhlIFZ4TEFOIGNoZWNrc3VtIEFQSS4NCj4gDQo+IEkgd2Fu dGVkIHRvIHJld29yayB0aGUgY3N1bSBmb3J3YXJkIGVuZ2luZSBjb2RlLCBiZWNhdXNlIGl0IGlz IG5vdCB1bmRlcnN0YWJsZQ0KPiB0b2RheS4gSSB3YW50ZWQgdG8gY2xhcmlmeSB0aGUgQVBJLiBC dXQgc29ycnkgSSB0aGluayBJJ2xsIGdpdmUgdXAgbm93Lg0KPiANCj4gPj4gTW9yZW92ZXIsIFBL VF9UWF9JUFY0X0NTVU0sIFBLVF9UWF9VRFBfQ0tTVU0sIC4uLiBhcmUgbm90ICJvdXRlcg0KPiBm bGFncyIuDQo+ID4+IFRoZXkgYXJlIGhhcmR3YXJlIGNoZWNrc3VtIGZsYWdzLCBhbmQgYmVmb3Jl IHlvdXIgdnhsYW5kIHBhdGNoLCB0aGV5DQo+ID4+IGNvbmNlcm5lZCB0aGUgaGVhZGVycyByZWZl cmVuY2VkIGJ5IG0tPmwyX2xlbiBhbmQgbS0+bDNfbGVuLg0KPiA+DQo+ID4gQWN0dWFsbHksIHRo ZSAga2V5IHBvaW50IG9mIGRlYmF0ZSBpcyB0aGF0IHlvdSBzdGlsbCB0aGluayB0aGUgbDJfbGVu IGZpbGVkIGFuZCB0aGUNCj4gbDNfbGVuIGZpbGVkICBpbiBtYnVmIGFyZSBpbm5lciBwYXJ0IGlu IHRoZSBjYXNlIG9mIHR1bm5lbGluZywgcmlnaHQ/ICBJZiB5ZXMsIGxldCBtZQ0KPiBleHBsYWlu IHdoYXQgSSB0aG91Z2h0Lg0KPiANCj4gVGhpcyBpcyBub3QgdGhlIG9ubHkga2V5IHBvaW50IG9m IGRlYmF0ZS4gVGhlIHZlcnkgZmlyc3Qga2V5IHBvaW50IGlzIHRoYXQgdGhlIFZ4TEFODQo+IGNo ZWNrc3VtIG9mZmxvYWQgQVBJIGlzIG5vdCBkb2N1bWVudGVkIGFuZCBJJ20gbm90IGFibGUgdG8g cmV3b3JrIHRoZSBjc3VtDQo+IGNvZGUgdG8gdXNlIGl0Lg0KPiANCj4gPiBBcyB5b3Uga25vdywg TklDIGl0c2VsZiBpcyBub3QgcmVzcG9uc2libGUgZm9yIHBhY2tldCBkZWNhcHN1bGF0aW9uIC8N Cj4gZW5jYXBzdWxhdGlvbiBhdCBhbGwuIEl0IHNlbmRzIGFuZCByZWNlaXZlcyB0aGUgd2hvbGUg cGFja2V0LCBub3Qgb25seSBmb3IgaW5uZXINCj4gcGFydCBpbiB0aGUgY2FzZSBvZiB0dW5uZWxp bmcuIFRoZSB0cmFuc2xhdGlvbiBmcm9tIHJlY2VpdmUgZGVzY3JpcHRvciB0byBtYnVmDQo+IHN0 cnVjdHVyZSBpcyBhbHNvIGZvciB0aGUgd2hvbGUgcGFja2V0LiBBbmQgdGhlc2UgZmllbGRzIGRl ZmluZWQgaW4gbWJ1ZiBzdHJ1Y3R1cmUNCj4gYXJlIGFsc28gZm9yIHRoZSB3aG9sZSBwYWNrZXQs IG5vIG1hdHRlciBpdCBpcyB0dW5uZWxpbmcgb3Igbm9uLXR1bm5lbGluZy4NCj4gPg0KPiA+IDEp IFdlIGFzc3VtZSB0aGF0IGEgTklDIGNhbid0ICByZWNvZ25pemUgVlhMQU4gcGFja2V0LCB3aGVu IGEgcGFja2V0ICB3aXRoDQo+IHRoZSBmb3JtYXQgIG91dGVyIElQIC8gb3V0ZXIgVURQIC8gVnhM QU4gLyBFdGhlciAvIGlubmVyIElQIC8gaW5uZXIgVURQIC8gZGF0YSBpcw0KPiByZWNlaXZlZCwN Cj4gPiAgIGRvIHlvdSB0aGluayB3aGV0aGVyIGwyICBoZWFkZXIgYW5kIGwzIGhlYWRlciBsZW5n dGggb2YgdGhpcyBwYWNrZXQgaXMgb3V0ZXIgb3INCj4gaW5uZXIsICBhY2NvcmRpbmcgdG8gbXkg dW5kZXJzdGFuZGluZywgSSB0aGluayBpdCBpcyBvdXRlciwgYW5kIG0tPmwyX2xlbiBhbmQgbS0N Cj4gPmwzX2xlbiBpcyBhbHNvIG91dGVyLiBEbyB5b3UgYWdyZWU/DQo+IA0KPiBUaGUgbDJfbGVu IGFuZCBsM19sZW4gYXJlIG5ldmVyIHNldCB1cCBieSBhbnkgZHJpdmVyIG9uIHJ4IHNpZGUuIFlv dXIgZXhhbXBsZSBkb2VzDQo+IG5vdCBhcHBseS4NCj4gDQo+IFRoZXNlIGZpZWxkcyBhcmUgc2V0 IGJ5IHRoZSBhcHBsaWNhdGlvbiAoYSBuZXR3b3JrIHN0YWNrIGZvciBpbnN0YW5jZSkgdG8gaW5k aWNhdGUgdG8NCj4gdGhlIGRyaXZlciBhbmQgaGFyZHdhcmUgd2hlcmUgdG8gZmluZCB0aGUgbDMg YW5kIGw0IGhlYWRlcnMgd2hvc2UgY2hlY2tzdW0NCj4gbmVlZCB0byBiZSBjYWxjdWxhdGVkLg0K PiANCj4gVGhlIGwyX2xlbiBhbmQgbDNfbGVuIGRvZXMgbm90IHJlZmVyIHRvIGlubmVyIG9yIG91 dGVyIGhlYWRlci4gSXQgcmVmZXJzIHRvIHRoZQ0KPiBoZWFkZXIgdGhhdCBoYXMgdG8gYmUgY2hl Y2tzdW0nZCBpbiBoYXJkd2FyZSB3aGVuIHRoZSBmbGFnIGlzIHNldC4gSXQgY2FuIGJlDQo+IGlu bmVyIG9yIG91dGVyLiBBdCBsZWFzdCwgaXQgd2FzIHRoZSBjYXNlIGJlZm9yZSB0aGUgYWRkaW5n IG9mIFZ4TEFOIG9mZmxvYWQNCj4gZmVhdHVyZS4NCj4gDQo+IA0KPiA+IDIpIFdlIGFsc28gYXNz dW1lIHRoYXQgYSBOSUMgY2FuICByZWNvZ25pemUgVlhMQU4gcGFja2V0LCAgYnV0IHRoZXJlIGlz IG5vDQo+IGRpZmZlcmVuY2UgYmV0d2VlbiAxKSAgYW5kIDIpIG9uIGRhdGEgaW4gbWJ1ZiBiZWZv cmUgcGF0Y2hpbmcgbXkgVlhMQU4gcGF0Y2gsDQo+IHNvIEkgYWxzbyB0aGluayAgbS0+bDJfbGVu IGFuZCBtLT5sM19sZW4gaXMgb3V0ZXIuICBEbyB5b3UgYWdyZWU/DQo+ID4gQWZ0ZXIgcGF0Y2hp bmcgbXkgVlhMQU4sIHRoZSBpbm5lcl9sMl9sZW4gYW5kIGlubmVyX2wzX2xlbiB3ZXJlIHVzZWQg dG8gc3RhbmQNCj4gZm9yIGlubmVyIGhlYWRlciBwYXJ0Lg0KPiANCj4gWW91ciBhcmd1bWVudGF0 aW9uIHdvdWxkIG1ha2Ugc2Vuc2UgaWYgbDJfbGVuIGFuZCBsM19sZW4gd2VyZSBmaWxsZWQgYnkg YSBOSUMgaW4NCj4gUlggZnVuY3Rpb25zLiBCdXQgdGhhdCdzIG5vdCB0aGUgY2FzZS4gVG9kYXks IHRoZXNlIGZpZWxkcyBhcmUgb25seSB1c2VkIGluIFRYIHdoZW4NCj4gYSBjaGVja3N1bSBmbGFn IGlzIGFsc28gc2V0LiBBbmQgSSB0aGluayB0aGF0IGEgZmxhZyBzaG91bGQgYWx3YXlzIHJlZmVy IHRvIHRoZSBzYW1lDQo+IGxlbmd0aCBmaWVsZHMuDQo+IA0KPiBCdXQgSSdtIG5vdCB0aGUgb25l IHdobyBkZWNpZGVzIHRoaXMsIEknbSBqdXN0IHRyeWluZyB0byBoZWxwIHRvIGRlZmluZSBhbiBB UEkgdGhhdA0KPiBtYWtlcyBzZW5zZS4NCj4gDQo+IA0KPiA+PiBXaXRoIHlvdXIgdnhsYW4gcGF0 Y2gsIGl0IGNoYW5nZWQgd2l0aG91dCBiZWVpbmcgZG9jdW1lbnRlZC4gVGhlc2UNCj4gPj4gZmxh Z3MgdXNlIGVpdGhlciAobS0+bDJfbGVuLCBtLT5sM19sZW4pIG9yIChtLT5pbm5lcl9sMl9sZW4s DQo+ID4+IG0tPmlubmVyX2wzX2xlbiksIHdoaWNoIGlzIG5vdCBhIGdvb2QgaWRlYSBpbiBteSBv cGluaW9uLg0KPiA+DQo+ID4gVGhlIFBLVF9SWF9JUFY0X0hEUiAgZGVmaW5pdGlvbiBpcyBsaXN0 ZWQgYmVsb3csDQo+ID4gI2RlZmluZSBQS1RfUlhfSVBWNF9IRFIgICAgICAoMVVMTCA8PCA1KSAg LyoqPCBSWCBwYWNrZXQgd2l0aCBJUHY0IGhlYWRlci4gKi8NCj4gPiBJIGRvbid0IHRoaW5rIGl0 IGp1c3Qgc3RhbmQgZm9yIGlubmVyIElQIFRYIGNoZWNrc3VtIG9mZmxvYWQsIEkganVzdCBleHRl bmQgaXRzIHVzYWdlDQo+IHNjb3BlIGluIHRoZSBjYXNlIG9mIHR1bm5lbGluZy4NCj4gDQo+IElm IHlvdSByZXJlYWQgbXkgbWFpbCwgSSB3YXMgbm90IHRhbGtpbmcgYWJvdXQgUEtUX1JYX0lQVjRf SERSIGJ1dCBhYm91dA0KPiBQS1RfVFhfSVBWNF9DU1VNLCBQS1RfVFhfVURQX0NLU1VNLCAoZXRj Li4uKSB3aGljaCBhcmUgVFggZmxhZ3MuDQo+IEkgdGhpbmsgbXkgcHJldmlvdXMgbWFpbCB3YXMg Y2xlYXIgZW5vdWdoOg0KPiANCj4gICAgVGhleSBhcmUgaGFyZHdhcmUgY2hlY2tzdW0gZmxhZ3Ms IGFuZCBiZWZvcmUgeW91ciB2eGxhbiBwYXRjaCwgdGhleQ0KPiAgICBjb25jZXJuZWQgdGhlIGhl YWRlcnMgcmVmZXJlbmNlZCBieSBtLT5sMl9sZW4gYW5kIG0tPmwzX2xlbi4NCj4gDQo+ICAgIFdp dGggeW91ciB2eGxhbiBwYXRjaCwgaXQgY2hhbmdlZCB3aXRob3V0IGJlZWluZyBkb2N1bWVudGVk LiBUaGVzZQ0KPiAgICBmbGFncyB1c2UgZWl0aGVyIChtLT5sMl9sZW4sIG0tPmwzX2xlbikgb3Ig KG0tPmlubmVyX2wyX2xlbiwNCj4gICAgbS0+aW5uZXJfbDNfbGVuKSwgd2hpY2ggaXMgbm90IGEg Z29vZCBpZGVhIGluIG15IG9waW5pb24uDQo+IA0KPiANCj4gPj4+IDMuIHNldCBvdXRlciBMMy9M NCBUWCBjaGVja3N1bSBhbmQgaW5uZXIgTDMmTDQgVFggY2hlY2tzdW0NCj4gPj4+IHR4X2NoZWNr c3VtIHNldCAweDMxKDB4MzMpIDAgaW4gdGhpcyBjYXNlLCB0aGUgUEtUX1RYX1ZYTEFOX0NLU1VN DQo+ID4+PiBmbGFnIGlzIHNldCwgZHJpdmVyIHRoaW5rIGl0IGlzIFZYTEFOIHBhY2tldCwgYW5k IHdlIG5lZWQgdG8gY2hhbmdlDQo+ID4+PiBvdXRlciBhbmQgaW5uZXIgYXMgYm90aA0KPiA+PiBv dXRlciBhbmQgaW5uZXIgZmxhZ3MgYXJlIHNldC4NCj4gPj4NCj4gPj4gSGVyZSB5b3UgYXJlIHRh bGtpbmcgYWJvdXQgdGVzdCBwbWQgZmxhZ3MuIFlvdSBkbyBub3QgZGVzY3JpYmUgdGhlIG1idWYg QVBJOg0KPiA+PiBQS1RfVFhfKiBmbGFncyBhbmQgbGVuZ3RocyB2YWx1ZXMgdGhhdCBuZWVkIHRv IGJlIHNldCAobDJfbGVuLA0KPiA+PiBsM19sZW4sIC4uLikgYW5kIHRvIHdoYXQgdGhleSByZWZl ciB0by4NCj4gPj4NCj4gPj4gSSB0aGluayBpZiB5b3Ugd2FudCB0byBleHBsYWluIHRoZSB2eGxh biBjaGVja3N1bSBvZmZsb2FkIG1idWYgQVBJLA0KPiA+PiB5b3Ugc2hvdWxkIG5vdCB0YWxrIGFi b3V0IHRoZSB0ZXN0cG1kIGZsYWdzIGFzOg0KPiA+PiAtIHRoZXkgZG9uJ3QgbWF0Y2ggdGhlIG1i dWYgZmxhZ3MNCj4gPj4gLSB0aGV5IGhhdmUgdW5kb2N1bWVudGVkIChvciB1bmNvaGVyZW50KSBi ZWhhdmlvciBpbiB0aGUgY3N1bW9ubHkNCj4gPj4gICAgZm9yd2FyZCBlbmdpbmUNCj4gPj4NCj4g Pj4gQWZ0ZXIgc2V2ZXJhbCBleGNoYW5nZXMgYWJvdXQgdGhpcyB2eGxhbiBBUEkuDQo+ID4+IFVu Zm9ydHVuYXRlbHksIGl0IGlzIHN0aWxsIHZhZ3VlIGFuZCBvYnNjdXJlIHRvIG1lLg0KPiA+DQo+ ID4gQXMgdG8gdHVubmVsaW5nIHBhY2tldCBUWCBjaGVja3N1bSBvZmZsb2FkLCBwbGVhc2UgZG9u J3QgdGhpbmsgaXQgaXMgb25seSBhbiBpbm5lcg0KPiBvciBvdXRlciBwYXJ0Lg0KPiA+IFlvdSBz aG91bGQgcmVnYXJkIGl0IGFzIHdob2xlIHBhcnQuDQo+IA0KPiBTbyB3aGF0Pw0KPiANCj4gPj4g U28gaGVyZSBpcyBhIHByb3Bvc2l0aW9uIG9mIEFQSSBkb2N1bWVudGF0aW9uIHRoYXQgbG9va3MN Cj4gPj4gdW5kZXJzdGFuZGFibGUuIE1heWJlIGl0IGlzIGVhc2llciB0byBjaGFuZ2UgdGhlIGNv ZGUgdG8gbWF0Y2ggdGhpcyBBUEk6DQo+ID4+DQo+ID4gT2ssIHRoYW5rcy4NCj4gPg0KPiA+Pg0K PiA+PiBQS1RfVFhfSVBfQ0tTVU0gZmxhZyBlbmFibGVzIGhhcmR3YXJlIGNvbXB1dGF0aW9uIG9m IElQIGNrc3VtLiBUbyB1c2UgaXQ6DQo+ID4+IC0gZmlsbCBsMl9sZW4gYW5kIGwzX2xlbiBpbiBt YnVmDQo+ID4+IC0gc2V0IHRoZSBmbGFnIFBLVF9UWF9JUF9DS1NVTQ0KPiA+PiAtIHNldCB0aGUg aXAgY2hlY2tzdW0gdG8gMCBpbiBJUCBoZWFkZXIgU2VlICgxKSBhbmQgKDIpLg0KPiA+Pg0KPiA+ PiBPbmUgdmFsdWUgYW1vbmcgUEtUX1RYX0w0X05PX0NLU1VNLCBQS1RfVFhfVURQX0NLU1VNLA0K PiA+PiBQS1RfVFhfVENQX0NLU1VNIGFuZCBQS1RfVFhfU0NUUF9DS1NVTSBjYW4gYmUgYXNzaWdu ZWQgdG8gdGhlIGJpdHMgb2YNCj4gPj4gUEtUX1RYX0w0X01BU0suIFRoZXNlIGZsYWdzIGFyZSB1 c2VkIHRvIG9mZmxvYWQgdGhlIEw0IGNoZWNrc3VtIGluDQo+IGhhcmR3YXJlLg0KPiA+PiBUaGUg dXNlciByZXF1aXJlcyB0bzoNCj4gPj4gLSBmaWxsIGwyX2xlbiBhbmQgbDNfbGVuIGluIG1idWYN Cj4gPj4gLSBzZXQgdGhlIGZsYWdzIFBLVF9UWF9UQ1BfQ0tTVU0sIFBLVF9UWF9TQ1RQX0NLU1VN IG9yDQo+ID4+ICAgIFBLVF9UWF9VRFBfQ0tTVU0NCj4gPj4gLSBjYWxjdWxhdGUgdGhlIHBzZXVk byBoZWFkZXIgY2hlY2tzdW0gYW5kIHNldCBpdCBpbiB0aGUgTDQNCj4gPj4gICAgaGVhZGVyIChv bmx5IGZvciBUQ1Agb3IgVURQKS4gU2VlIHJ0ZV9pcHY0X3BoZHJfY2tzdW0oKSBhbmQNCj4gPj4g ICAgcnRlX2lwdjZfcGhkcl9ja3N1bSgpLiAgRm9yIFNDVFAsIHNldCB0aGUgY3JjIGZpZWxkIHRv IDAuDQo+ID4+IFNlZSAoMSkgYW5kICgyKS4NCj4gPj4NCj4gPj4gVGhlIFBLVF9UWF9UQ1BfU0VH IGZsYWcgY2FuIGJlIHNldCB0byBlbmFibGUgVENQIHNlZ21lbnRhdGlvbiBvZmZsb2FkDQo+ID4+ IGZvciBhIHBhY2tldCB0byBiZSB0cmFuc21pdHRlZCBvbiBoYXJkd2FyZSBzdXBwb3J0aW5nDQo+ ID4+IFRTTzoNCj4gPj4gLSBzZXQgdGhlIFBLVF9UWF9UQ1BfU0VHIGZsYWcgaW4gbWJ1Zi0+b2xf ZmxhZ3MgKHRoaXMgZmxhZw0KPiA+PiAgICBpbXBsaWVzIFBLVF9UWF9UQ1BfQ0tTVU0pDQo+ID4+ IC0gaWYgaXQncyBJUHY0LCBzZXQgdGhlIFBLVF9UWF9JUF9DS1NVTSBmbGFnIGFuZCB3cml0ZSB0 aGUgSVANCj4gPj4gICAgY2hlY2tzdW0gdG8gMCBpbiB0aGUgcGFja2V0DQo+ID4+IC0gZmlsbCB0 aGUgbWJ1ZiBvZmZsb2FkIGluZm9ybWF0aW9uOiBsMl9sZW4sIGwzX2xlbiwgbDRfbGVuLA0KPiA+ PiAgICB0c29fc2Vnc3oNCj4gPj4gLSBjYWxjdWxhdGUgdGhlIHBzZXVkbyBoZWFkZXIgY2hlY2tz dW0gd2l0aG91dCB0YWtpbmcgaXBfbGVuIGluDQo+ID4+ICAgIGFjY291bmQsIGFuZCBzZXQgaXQg aW4gdGhlIFRDUCBoZWFkZXIuIFJlZmVyIHRvDQo+ID4+ICAgIHJ0ZV9pcHY0X3BoZHJfY2tzdW0o KSBhbmQgcnRlX2lwdjZfcGhkcl9ja3N1bSgpIHRoYXQgY2FuIGJlDQo+ID4+ICAgIHVzZWQgYXMg aGVscGVycy4NCj4gPj4gU2VlICgxKSBhbmQgKDIpLg0KPiA+Pg0KPiA+PiAoMSkgSW4gY2FzZSB0 aGUgcGFja2V0IGlzIGFuIGVuY2Fwc3VsYXRlZCBwYWNrZXQsIHRoZSBtLT5sMl9sZW4NCj4gPj4g ICAgICBmaWVsZCBjYW4gaW5jbHVkZSBhbGwgdGhlIG91dGVyIHR1bm5lbCBoZWFkZXJzLiBUaGVz ZSBoZWFkZXJzDQo+ID4+ICAgICAgd2lsbCByZW1haW4gdW5tb2RpZmllZCBieSB0aGUgaGFyZHdh cmUuDQo+ID4+DQo+ID4+ICgyKSBJZiBvdXRlcl9sMl9sZW4gYW5kIG91dGVyX2wzX2xlbiBhcmUg bm90IDAsIHRoZSBiZWdpbm5pbmcgb2YNCj4gPj4gICAgICB0aGUgaW5uZXIgaGVhZGVycyBpcyBy ZWxhdGl2ZSB0byBvdXRlcl9sMl9sZW4gKyBvdXRlcl9sM19sZW4uDQo+ID4+DQo+ID4+DQo+ID4+ IFtUbyByZXBsYWNlIHRoZSBQS1RfVFhfVlhMQU5fQ0tTVU0sIHdlIGludHJvZHVjZSAyIG5ldyBm bGFnc10NCj4gPj4NCj4gPj4gUEtUX1RYX09VVEVSX0lQX0NLU1VNIGZsYWcgZW5hYmxlcyBoYXJk d2FyZSBjb21wdXRhdGlvbiBvZiBJUCBja3N1bQ0KPiA+PiBpbiBvdXRlciBoZWFkZXJzLiBUbyB1 c2UgaXQ6DQo+ID4+IC0gZmlsbCBvdXRlcl9sMl9sZW4gYW5kIG91dGVyX2wzX2xlbiBpbiBtYnVm DQo+ID4+IC0gc2V0IHRoZSBmbGFnIFBLVF9UWF9PVVRFUl9JUF9DS1NVTQ0KPiA+PiAtIHNldCB0 aGUgaXAgY2hlY2tzdW0gdG8gMCBpbiBvdXRlciBJUCBoZWFkZXINCj4gPj4NCj4gPj4gT25lIHZh bHVlIGFtb25nIFBLVF9UWF9PVVRFUl9MNF9OT19DS1NVTSwNCj4gUEtUX1RYX09VVEVSX1VEUF9D S1NVTSwNCj4gPj4gUEtUX1RYX09VVEVSX1RDUF9DS1NVTSBhbmQgUEtUX1RYX09VVEVSX1NDVFBf Q0tTVU0gY2FuIGJlDQo+IGFzc2lnbmVkIHRvDQo+ID4+IHRoZSBiaXRzIG9mIFBLVF9UWF9MNF9N QVNLLg0KPiA+PiBUaGVzZSBmbGFncyBhcmUgdXNlZCB0byBvZmZsb2FkIHRoZSBvdXRlciBMNCBj aGVja3N1bSBpbiBoYXJkd2FyZS4NCj4gPj4gVGhlIHVzZXIgcmVxdWlyZXMgdG86DQo+ID4+IC0g ZmlsbCBvdXRlcl9sMl9sZW4gYW5kIG91dGVyX2wzX2xlbiBpbiBtYnVmDQo+ID4+IC0gc2V0IHRo ZSBmbGFncyBQS1RfVFhfT1VURVJfVENQX0NLU1VNLCBQS1RfVFhfT1VURVJfU0NUUF9DS1NVTSBv cg0KPiA+PiAgICBQS1RfVFhfT1VURVJfVURQX0NLU1VNDQo+ID4+IC0gY2FsY3VsYXRlIHRoZSBw c2V1ZG8gaGVhZGVyIGNoZWNrc3VtIGFuZCBzZXQgaXQgaW4gdGhlIG91dGVyIEw0DQo+ID4+ICAg IGhlYWRlciAob25seSBmb3IgVENQIG9yIFVEUCkuIFNlZSBydGVfaXB2NF9waGRyX2Nrc3VtKCkg YW5kDQo+ID4+ICAgIHJ0ZV9pcHY2X3BoZHJfY2tzdW0oKS4gIEZvciBTQ1RQLCBzZXQgdGhlIGNy YyBmaWVsZCB0byAwLg0KPiA+DQo+ID4gR29vZC4gWW91IHByb3ZpZGUgYSBjb21tb24gYXBwcm9h Y2guDQo+ID4NCj4gPiBBY3R1YWxseSwgSSBoYXZlIGFub3RoZXIgY29tbW9uIGFwcHJvYWNoLCAx LiBDaGFuZ2UgUEtUX1RYX1ZYTEFOX0NLU1VNDQo+ID4gdG8gUEtUX1RYX1RVTk5FTF9DS1NVTSAy LiBBZGQgZmllbGQgInVpbnQ4X3QgdHVuX2hlYWRlcl9sZW4NCj4gPiAiKHR1bm5lbGluZyBoZWFk ZXIgbGVuZ3RoLCBmb3IgZXhhbXBsZSwgR1JFIGhlYWRlciApaW50byBtYnVmIHN0cnVjdHVyZS4N Cj4gPiBBZnRlciBhYm92ZSBjaGFuZ2UsIHRoZSBBUEkgY2FuIHN1cHBvcnRzIG90aGVyIHR1bm5l bHMuDQo+IA0KPiBOby4gSSBkb24ndCB3YW50IHRoYXQgeW91IGV4cGxhaW4gbWUgd2hhdCBzaG91 bGQgYmUgbW9kaWZpZWQgaW4gdGhlIGN1cnJlbnQgQVBJLA0KPiBhcyBJIGRvbid0IHVuZGVyc3Rh bmQgaXQuIEkgbmVlZCAodGhlIGNvbW11bml0eQ0KPiBuZWVkcz8pIGEgZnVsbCBkZWZpbml0aW9u IG9mIHRoZSBBUEksIGxpa2UgSSBqdXN0IGRpZCBpbiBteSBwcmV2aW91cyBtYWlsLg0KPiANCj4g SSB0aGluayBteSBkZXNjcmlwdGlvbiB3YXMgY2xlYXIuIFBsZWFzZSwgZG8gdGhlIHNhbWUgZWZm b3J0IHRvIGRlc2NyaWJlIHRoZSB2eGxhbg0KPiBBUEkgZnJvbSB0aGUgYmVnaW5uaW5nIHRvIHRo ZSBlbmQsIGFuZCBob3cgaXQgY2hhbmdlcyAob3Igbm90KSB0aGUgbGVnYWN5DQo+IGNoZWNrc3Vt IEFQSS4NCj4gDQo+ID4+IFRoaXMgcHJvcG9zaXRpb24gaGFzIHNldmVyYWwgYWR2YW50YWdlczoN Cj4gPj4gLSBpdCBpcyBkb2N1bWVudGVkIDopDQo+ID4+IC0gdGhlIEFQSSBpcyBzdHJhaWdodGZv cndhcmQ6IGlubmVyIGFuZCBvdXRlciB3b3JrIGluIHRoZSBzYW1lDQo+ID4+ICAgIG1hbm5lci4N Cj4gPj4gLSB0aGUgQVBJIGFscmVhZHkgc3VwcG9ydHMgb3RoZXIgdHVubmVscyAoSVBJUCwgR1JF LCBTVFQsIC4uLikNCj4gPj4gLSBhZGRpbmcgbS0+b3V0ZXJfKiBmaWVsZHMgYWxsb3dzIHRvIGtl ZXAgdGhlIHNhbWUgc2VtYW50aWMgZm9yDQo+ID4+ICAgIHRoZSBleGlzdGluZyBmbGFncy4gSW5k ZWVkLCBpdCBkb2VzIG5vdCBtYXAgbGludXggc2tiLCBidXQgdGhpcw0KPiA+PiAgICBpcyBub3Qg YW4gYXJndW1lbnQuIE1vcmVvdmVyLCBsaW51eCBkb2VzIG5vdCBzZWVtIHRvIHN1cHBvcnQNCj4g Pj4gICAgaGFyZHdhcmUgdHggY2hlY2tzdW0gb2Ygb3V0ZXIraW5uZXIgaGVhZGVycy4NCj4gPg0K PiA+IEp1c3QgYXMgSSBoYXZlIG1lbnRpb25lZCBpbiB0aGUgcHJldmlvdXMgZW1haWwsICBMaW51 eCBoYXZlIGFscmVhZHkgc3VwcG9ydGVkDQo+IGhhcmR3YXJlIHR4IGNoZWNrc3VtIG9mIG91dGVy K2lubmVyIGhlYWRlcnMgZm9yIGk0MGUuDQo+IA0KPiBZZXMgeW91IGFyZSByaWdodC4gQnV0IEkg dGhpbmsgdGhhdCdzIG5vdCB0aGUgcG9pbnQgaGVyZS4NCj4gDQo+IFJlZ2FyZHMsDQo+IE9saXZp ZXINCg==