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 BAFB15424 for ; Thu, 15 Nov 2018 14:32:06 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 15 Nov 2018 05:32:06 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.56,236,1539673200"; d="scan'208";a="92282126" Received: from fmsmsx105.amr.corp.intel.com ([10.18.124.203]) by orsmga008.jf.intel.com with ESMTP; 15 Nov 2018 05:32:05 -0800 Received: from fmsmsx156.amr.corp.intel.com (10.18.116.74) by FMSMSX105.amr.corp.intel.com (10.18.124.203) with Microsoft SMTP Server (TLS) id 14.3.408.0; Thu, 15 Nov 2018 05:32:05 -0800 Received: from fmsmsx117.amr.corp.intel.com ([169.254.3.70]) by fmsmsx156.amr.corp.intel.com ([169.254.13.207]) with mapi id 14.03.0415.000; Thu, 15 Nov 2018 05:32:05 -0800 From: "Wiles, Keith" To: =?utf-8?B?TW9ydGVuIEJyw7hydXA=?= CC: "Burakov, Anatoly" , Sam , dev Thread-Topic: [dpdk-dev] Where is the padding code in DPDK? Thread-Index: AQHUeyDmqja9UIPbeEySVDObBk8FoqVN9noAgAFT1ICAAEwjgIAACXAAgABbgoCAAJPI0IAAz9+A Date: Thu, 15 Nov 2018 13:32:04 +0000 Message-ID: <6F20B08D-7219-450E-BB75-8C884C40E862@intel.com> References: <9f22d7f1-080e-1663-df8d-a3893248a93d@intel.com> <4a1e4ea9-e75a-0615-dcc8-c762817f4d2e@intel.com> <98CBD80474FA8B44BF855DF32C47DC35B4248C@smartserver.smartshare.dk> <98CBD80474FA8B44BF855DF32C47DC35B4249D@smartserver.smartshare.dk> In-Reply-To: <98CBD80474FA8B44BF855DF32C47DC35B4249D@smartserver.smartshare.dk> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.254.103.175] Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] Where is the padding code in DPDK? 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: Thu, 15 Nov 2018 13:32:08 -0000 DQoNCj4gT24gTm92IDE1LCAyMDE4LCBhdCA0OjI3IEFNLCBNb3J0ZW4gQnLDuHJ1cCA8bWJAc21h cnRzaGFyZXN5c3RlbXMuY29tPiB3cm90ZToNCj4gDQo+PiBGcm9tOiBkZXYgW21haWx0bzpkZXYt Ym91bmNlc0BkcGRrLm9yZ10gT24gQmVoYWxmIE9mIFdpbGVzLCBLZWl0aA0KPj4+IE9uIE5vdiAx NCwgMjAxOCwgYXQgNDo1MSBBTSwgTW9ydGVuIEJyw7hydXAgPG1iQHNtYXJ0c2hhcmVzeXN0ZW1z LmNvbT4NCj4+IHdyb3RlOg0KPj4+IA0KPj4+IEFuYXRvbHksDQo+Pj4gDQo+Pj4gVGhpcyBkaWZm ZXJzIGZyb20gdGhlIExpbnV4IGtlcm5lbCdzIGJlaGF2aW9yLCB3aGVyZSBwYWRkaW5nIGJlbG9u Z3MNCj4+IGluIHRoZSBOSUMgZHJpdmVyIGxheWVyLCBub3QgaW4gdGhlIHByb3RvY29sIGxheWVy LiBJZiB5b3UgcGFzcyBhIHJ1bnQNCj4+IGZyYW1lICh0b28gc2hvcnQgcGFja2V0KSB0byBhIExp bnV4IE5JQyBkcml2ZXIncyB0cmFuc21pc3Npb24gZnVuY3Rpb24sDQo+PiB0aGUgTklDIGRyaXZl ciAob3IgTklDIGhhcmR3YXJlKSB3aWxsIHBhZCB0aGUgZnJhbWUgdG8gbWFrZSBpdCB2YWxpZC4N Cj4+IEUuZy4gbG9vayBhdCB0aGUgcmhpbmVfc3RhcnRfdHgoKSBmdW5jdGlvbiBpbiB0aGUga2Vy bmVsOg0KPj4gaHR0cHM6Ly9lbGl4aXIuYm9vdGxpbi5jb20vbGludXgvdjQuOS4xMzcvc291cmNl L2RyaXZlcnMvbmV0L2V0aGVybmV0L3YNCj4+IGlhL3ZpYS1yaGluZS5jI0wxODAwDQo+PiANCj4+ IFRoZSBQTUQgaW4gRFBESyByZWplY3RzIHRoZSBmcmFtZSBvciBleHRlbmQgdGhlIG51bWJlciBv ZiBieXRlcyB0bw0KPj4gc2VuZC4gUGFkZGluZyBhc3N1bWVzIHlvdSBhcmUgemVyb2luZyBvdXQg dGhlIHBhY2tldCB0byBtZWV0IHRoZSBOSUMNCj4+IHJlcXVpcmVkIGxlbmd0aC4gSW4gUE1EcyB1 bmxlc3MgdGhleSBhcmUgY29uY2VybmVkIHdpdGggc2VjdXJpdHkgdGhleQ0KPj4ganVzdCBtYWtl IHN1cmUgdGhlIG51bWJlciBvZiBieXRlcyB0byBiZSBzZW50IGFyZSBjb3JyZWN0IGZvciB0aGUN Cj4+IGhhcmR3YXJlICg2MCBieXRlcyBtaW4pLiBNb3N0IE5JQ3MgY2FuIGRvIHRoaXMgcGFkZGlu ZyBpbiBoYXJkd2FyZSBhcw0KPj4gdGhlIHBhY2tldCBpcyBzZW50Lg0KPiANCj4gR3JlYXQsIHNv IGxldCdzIGV4dGVuZCBEUERLIHRvIHByb3ZpZGUgdGhhdCBmZWF0dXJlIQ0KDQpJZiB3ZSBleHBl Y3QgdGhlIGhhcmR3YXJlIHRvIGV4dGVuZCB0aGUgbGVuZ3RoIHRvIHRoZSBtaW5pbXVtIGxlbmd0 aCBmb3IgRXRoZXJuZXQsIHRoZW4gd2h5IHdvdWxkIHdlIG5lZWQgdG8gZXh0ZW5kIERQREs/DQo+ IA0KPj4gDQo+PiBJZiB3ZSBhcmUgdGFsa2luZyBhYm91dCB2aXJ0aW8gYW5kIG9ubHkgdGFsa2lu ZyB0byB2aXJ0aW8gc29mdHdhcmUNCj4+IGJhY2tlbmQgdGhlbiB5b3UgY2FuIHNlbmQgYW55IHNp emUgcGFja2V0LCBidXQgdGhlIHN0YWNrcyBvciBjb2RlDQo+PiByZWNlaXZpbmcgdGhlIHBhY2tl dCB5b3UgbmVlZCB0byBtYWtlIHN1cmUgaXQgZG9lcyBub3QgdGhyb3cgdGhlIHBhY2tldA0KPj4g YXdheSBiZWNhdXNlIGl0IGlzIGEgcnVudCBwYWNrZXQuIE1vc3QgTklDcyB0aHJvdyBhd2F5IFJ1 bnRzIGFuZCBhcmUNCj4+IG5ldmVyIHJlY2VpdmVkIHRvIG1lbW9yeS4gSW4gc29mdHdhcmUgYmFz ZWQgZGVzaWduIGxpa2UgdmlydGlvIHlvdSBjYW4NCj4+IGRvIHdoYXRldmVyIHlvdSB3YW50IGlu IHRoZSBsZW5ndGgsIGJ1dCBJIHdvdWxkIHN1Z2dlc3QgZm9sbG93aW5nIHRoZQ0KPj4gRXRoZXJu ZXQgc3RhbmRhcmQgYW55d2F5Lg0KPiANCj4gR29vZCBwb2ludDogSWYgdmlydGlvIGlzIGNvbnNp ZGVyZWQgYW4gRXRoZXJuZXQgdHlwZSBpbnRlcmZhY2UgKGFsdGhvdWdoIGl0IGlzIGFibGUgdG8g aGFuZGxlIHJlYWxseSBsYXJnZSBKdW1ibyBmcmFtZXMpLCB0aGVuIHllcywgdGhlIG1pbmltdW0g cGFja2V0IHNpemUgcmVxdWlyZW1lbnRzIHNob3VsZCBhcHBseSB0byB0aGlzIHRvby4gVGhpcyBp cyBwcm9iYWJseSBhIHF1ZXN0aW9uIGZvciB0aGUgdmlydGlvIGZvbGtzIHRvIGRlY2lkZTogSXMg dmlydGlvIGNvbnNpZGVyZWQgYW4gRXRoZXJuZXQgaW50ZXJmYWNlLCBvciBhbm90aGVyIHR5cGUg b2YgaW50ZXJmYWNlICh3aXRob3V0IEV0aGVybmV0IHBhY2tldCBzaXplIHJlcXVpcmVtZW50cywg bGlrZSB0aGUgImxvY2FsaG9zdCIgcHNldWRvIGludGVyZmFjZSk/DQo+IA0KPiBCdXQgaG93IGFi b3V0IG90aGVyIG5vbi1waHlzaWNhbCBpbnRlcmZhY2VzLCBhcmUgdGhleSBhbGwgY29uc2lkZXJl ZCBFdGhlcm5ldCB0eXBlIGludGVyZmFjZXM/IEFuZCB0byB0YWtlIGl0IHRvIHRoZSBleHRyZW1l OiBTaG91bGQgRFBESyBieSBkZXNpZ24gb25seSBzdXBwb3J0IEV0aGVybmV0IHR5cGUgaW50ZXJm YWNlcz8NCj4gDQpEUERLIHN1cHBvcnRzIGEgbG90IG9mIGRpZmZlcmVudCBkZXZpY2UgdHlwZXMg dG9kYXkgYW5kIEV0aGVybmV0IGlzIGp1c3Qgb25lIG9mIHRoZSBtYWluIGludGVyZmFjZXMuIGUu Zy4gQ3J5cHRvZGV2LCBjb21wcmVzc2RldiBhbmQgb3RoZXJzIG5vdCByZWxhdGVkIHRvIEV0aGVy bmV0LiBJbiBhIHB1cmUgc2Vuc2UgdmlydGlvIGlzIG5vdCBhIEV0aGVybmV0IGRldmljZSwgYnV0 IGEgdmlydHVhbCBkZXZpY2UgaW50ZXJmYWNlLiBBIHZpcnR1YWwgZGV2aWNlIGludGVyZmFjZSBs aWtlIHNvbWUgaW4gRFBESyBhcmUgc29tZXRpbWVzIGdldHRpbmcgcGFja2V0cyByZWNlaXZlZCBv biBFdGhlcm5ldCBpbnRlcmZhY2VzIGFuZCBpdCBtYWtlcyBzZW5zZSB0byB1c2UgdGhlIHNhbWUg dGhvdWdodCBwcm9jZXNzIGZvciB2aXJ0aW8uIEluIHNvbWUgY2FzZSB2aXJ0aW8gaGFzIGJlZW4g ZXh0ZW5kZWQgdG8gaGFyZHdhcmUgYW5kIHRoZWlyIGFyZSB2aXJ0aW8gTklDcyBpbiB0aGUgd29y bGQgc28gYXNzdW1pbmcgSSBjYW4gc2VudCBzaG9ydCBmcmFtZXMgaXMgbm90IGdvaW5nIHRvIGJl IHJlYXNvbmFibGUuDQoNCj4+IA0KPj4gTm93IHNvbWUgc3RhY2tzIG9yIGNvZGUgKGxpa2UgUGt0 Z2VuKSBhc3N1bWUgdGhlIGhhcmR3YXJlIHdpbGwgYXBwZW5kDQo+PiB0aGUgQ1JDICg0IGJ5dGVz KSBhbmQgdGhpcyBtZWFucyB0aGUgYXBwbGljYXRpb24gbmVlZHMgdG8gYXQgbGVhc3QgZG8NCj4+ IDYwIGJ5dGUgZnJhbWVzIGZvciB0aGUgUE1ELCB1bmxlc3MgeW91IGtub3cgdGhlIGhhcmR3YXJl IHdpbGwgZG8gdGhlDQo+PiByaWdodCB0aGluZy4gVGhlIGNoYWxsZW5nZSBpcyB0aGF0IGFwcGxp Y2F0aW9ucyBpbiBEUERLIGRvIG5vdCBrbm93IHRoZQ0KPj4gZGV0YWlscyBvZiB0aGUgTklDIGF0 IHRoYXQgbGV2ZWwgYW5kIHNob3VsZCBhbHdheXMgYXNzdW1lIHRoZSBwYWNrZXQNCj4+IGJlaW5n IHNlbnQgYW5kIHJlY2VpdmVkIGFyZSB2YWxpZCBFdGhlcm5ldCBmcmFtZXMuIFRoaXMgbWVhbnMg YXQgbGVhc2UNCj4+IDYwIGJ5dGVzIGFzIGFsbCBOSUNzIGFkZCB0aGUgQ1JDIG5vdyBhIGRheXMg YW5kIG5vdCBhbGwgb2YgdGhlbSBhZGp1c3QNCj4+IHRoZSBzaXplIG9mIHRoZSBmcmFtZS4NCj4+ IA0KPj4gSWYgeW91IGRvIG5vdCBzZW5kIHRoZSBQTUQgYSA2MCBieXRlIGZyYW1lIHRoZW4geW91 IGFyZSBleHBlY3RpbmcgdGhlDQo+PiBOSUMgdG8gaGFuZGxlIHRoZSBwYWRkaW5nIGFuZCBhcHBl bmRpbmcgdGhlIENSQyBvciBhdCBsZWFzdCBleHBlY3RpbmcNCj4+IHRoZSBQTUQgdG8gYWRqdXN0 IHRoZSBzaXplLCB3aGljaCBJIGtub3cgaXMgbm90IGluIGFsbCBQTURzIG9yIGZyb20gbXkNCj4+ IGRlYWxpbmcgd2l0aCB3cml0aW5nIFBrdGdlbiBmb3IgRFBESy4NCj4gDQo+IFlvdSBzYWlkIGl0 ISBBbmQgaXQgcHJvdmVzIG15IHBvaW50IGFib3V0IHdoYXQgaGlnaGVyIGxheWVyIGRldmVsb3Bl cnMgcHJvYmFibHkgZXhwZWN0IG9mIGxvd2VyIGxheWVycy4NCg0KU3RpbGwgZG9lcyBub3QgcHJv dmUgYW55dGhpbmcsIHRoZSBQTURzIGFyZSBub3QgZXhwZWN0ZWQgdG8gYWRqdXN0IHRoZSBwYWNr ZXQgbGVuZ3RoLg0KPiANCj4+IA0KPj4gSWYgeW91IGFyZSBleHBlY3RpbmcgRFBESyBQTURzIHRv IGJlIExpbnV4IGRyaXZlcnMgdGhlbiB5b3UgbmVlZCB0bw0KPj4gYWRqdXN0IHlvdXIgdGhpbmtp bmcgYW5kIG9ubHkgc2VuZCB0aGUgUE1EIDYwIGJ5dGVzIGF0IGxlYXN0LiBVbmxlc3MNCj4+IHlv dSB3YW50IHRvIG1vZGlmeSBhbGwgb2YgdGhlIFBNRHMgdG8gZm9yY2UgdGhlIHNpemUgdG8gNjBi eXRlcywgdGhlbiBJDQo+PiBoYXZlIG5vIG9iamVjdGlvbiB0byB0aGF0IHBhdGNoIGp1c3QgbmVl ZCB0byBnZXQgYWxsIG9mIHRoZSBQTURzDQo+PiBtYWludGFpbmVycyB0byBhZ3JlZSB3aXRoIHlv dXIgcGF0Y2guDQo+IA0KPiBJIGFncmVlIHRoYXQgZGlmZmVyZW50IHRoaW5raW5nIGlzIHJlcXVp cmVkLCBhbmQgTGludXggaXMgbm90IGFsd2F5cyBwZXJmZWN0LiBIb3dldmVyLCB3ZSBhbGxvd2Vk IHRvIGNvcHkgZ29vZCBpZGVhcyBmcm9tIExpbnV4IC0gYW5kIEkgdGhpbmsgdGhhdCBoYXZpbmcg cGFkZGluZyBpbiBFdGhlcm5ldCBQTURzIGlzIGEgcGVyZmVjdGx5IGxvZ2ljYWwgY29uY2VwdC4g VGhlcmUgYXJlIHF1aXRlIGEgZmV3IFBNRCBtYWludGFpbmVycywgYW5kIEkgd2FzIGhvcGluZyB0 byB0YWtlIHRoZSBkaXNjdXNzaW9uIGFib3V0IHRoZSBoaWdoIGxldmVsIGNvbmNlcHQgb24gdGhl IG9wZW4gbWFpbGluZyBsaXN0IGJlZm9yZSB3ZSBpbnZvbHZlIHRoZSBQTUQgbWFpbnRhaW5lcnMg YWJvdXQgdGhlIGltcGxlbWVudGF0aW9uLg0KDQpUaGVuIGdldCB0aGUgbWFpbnRhaW5lcnMgdG8g bW9kaWZ5IHRoZSBQTURzIG9yIHN1Ym1pdCBhIHBhdGNoIHRvIGZpeCB0aGVtIGFsbCENClVudGls IGFsbCBvZiB0aGUgUE1EcyBoYXZlIGJlZW4gbW9kaWZpZWQgdGhlbiB0aGlzIGRpc2N1c3Npb24g aXMgbm90IHZlcnkgdXNlZnVsLCBiZWNhdXNlIHlvdSBtdXN0IGFsd2F5cyBzZW5kIHRvIEV0aGRl diBhIDYwIGJ5dGUgZnJhbWUuDQoNCj4gDQo+IEkgdGhpbmsgdGhhdCBhIHN0YWNrIG9yIGNvZGUg dXNpbmcgRFBESyBhcyBpdHMgbG93ZXIgbGF5ZXIgZXhwZWN0cyBEUERLIHRvIHByb3ZpZGUgc29t ZSBvZmZsb2FkaW5nLCBhbmQgc2luY2UgcGFkZGluZyB0byA2MCBieXRlIHBheWxvYWQgaXMgYSB2 ZXJ5IGNvbW1vbiBldmVudCBpbiBzdGFja3MgKGR1ZSB0byBlbXB0eSBUQ1AgQUNLIHBhY2tldHMp LCB0aGlzIGlzIGFuIG9idmlvdXMgb2ZmbG9hZCBjYW5kaWRhdGUhDQoNCkRQREsgd2FzIGNyZWF0 ZWQgZG9pbmcgbW9zdGx5IHBhY2tldCBmb3J3YXJkaW5nLCBidXQgaXQgaGFzIGV4cGFuZGVkIGEg Z3JlYXQgZGVhbCBvdmVyIHRoZSAxMCsgeWVhciAobm90IGFsbCBvZiB0aGVtIGluIG9wZW4gc291 cmNlKS4NCj4gDQo+IE9mIGNvdXJzZSwgaWYgRFBESyB3YXMgb25seSBkZXNpZ25lZCBmb3IgcGFj a2V0IGZvcndhcmRpbmcgYXBwbGljYXRpb25zLCBhbmQgbm90IGFsc28gaW50ZW5kZWQgZm9yIHVz ZSBhcyBhIGxvd2VyIGxheWVyIGZvciBzdGFja3MsIHRoZW4gcGFkZGluZyB0byA2MCBieXRlIHBh eWxvYWQgc2hvdWxkIG5vdCBiZSByZXF1aXJlZC4gSSBndWVzcyB0aGF0IERQREsgd2FzIGluaXRp YWxseSBkZXNpZ25lZCBmb3IgcGFja2V0IGZvcndhcmRpbmcgYXBwbGljYXRpb25zLCBidXQgaXMg dGhpcyBzdGlsbCB0aGUgY2FzZSB0b2RheSwgb3Igc2hvdWxkIERQREsgZXZvbHZlIHRvIGFsc28g YWNjb21tb2RhdGUgdGhlIG5lZWRzIG9mIHN0YWNrcz8NCg0KTWFraW5nIG9uZSBhc3N1bXB0aW9u IGFuZCBsZWFkaW5nIGludG8gYWxsIFBNRHMgbXVzdCBwYWQgYSBmcmFtZSBpcyBub3QgcmVhc29u YWJsZS4NCj4gDQo+IElmIHBhZGRpbmcgaXMgbm90IGluY2x1ZGVkIGluIHRoZSBQTURzLCBjb25z aWRlciB0aGlzIChoaWdobHkgdGhlb3JldGljYWwgZXhhbXBsZXMgYnV0IGZvciB0aGUgZGlzY3Vz c2lvbiBvZiB0aGUgY29uY2VwdCk6IFRoZSBEUERLIHBhY2tldCBtYW5pcHVsYXRpb24gbGlicmFy aWVzIGNvdWxkIGJlIHJlcXVpcmVkIHRvIGRvIGl0LCBlLmcuIGZvciBmcmFnbWVudGF0aW9uIHJl YXNzZW1ibHkgb2YgdHdvIGV4dHJlbWVseSBzbWFsbCBwYWNrZXRzLCB0b3RhbGluZyBsZXNzIHRo YW4gNjAgYnl0ZSBwYXlsb2FkLCBvciBmb3IgSVBzZWMgZGVjYXBzdWxhdGlvbiBvZiBhIHZlcnkg c21hbGwgcGFja2V0LiBPdGhlcndpc2UgdGhlIGFwcGxpY2F0aW9uIHdvdWxkIGhhdmUgdG8gZG8g aXQganVzdCBiZWZvcmUgY2FsbGluZyB0aGUgUE1EIFRYIGZ1bmN0aW9ucy4NCj4gDQoNCkFzIEkg c3RhdGVkIGdldCB0aGUgbWFpbnRhaW5lcnMgdG8gY2hhbmdlIHRoZSBQTURzIG9yIHN1Ym1pdCBh IHBhdGNoIGZvciBhbGwgUE1Ecy4NCj4gDQo+PiANCj4+IE9uIFJYIGZyYW1lcyBvZiBsZXNzIHRo ZW4gNjQgYnl0ZXMgKHdpdGggQ1JDKSBhcmUgcnVudHMgYW5kIG1vc3QgTklDcw0KPj4gdG9kYXkg d2lsbCBub3QgcmVjZWl2ZSB0aGVzZSBmcmFtZXMgdW5sZXNzIHlvdSBwcm9ncmFtIHRoZSBoYXJk d2FyZSB0bw0KPj4gZG8gc28uIOKAmEluIG15IGRheeKAmSA6LSkgd2UgaGFkIGNvbGxpc2lvbiBv biB0aGUgd2lyZSB3aGljaCBjcmVhdGVkIGENCj4+IGh1Z2UgYW1vdW50IG9mIGZyYWdtZW50cyBv ciBSdW50cywgdG9kYXkgaXMgbm90IHRoZSBjYXNlIHdpdGggcG9pbnQtdG8tDQo+PiBwb2ludCBs aW5rcyB3ZSBoYXZlIHRvZGF5Lg0KPiANCj4gSSBhZ3JlZSB0aGF0IFJYIG9mIGZyYW1lcyBvZiBs ZXNzIHRoYW4gNjQgYnl0ZXMgKHdpdGggQ1JDKSAtIG9uIEV0aGVybmV0IGludGVyZmFjZXMhIC0g c2hvdWxkIHN0aWxsIGJlIGNvbnNpZGVyZWQgcnVudHMsIGFuZCB0aHVzIHNob3VsZCBiZSBkaXNj YXJkZWQgYW5kIGNvdW50ZWQgYXMgZXJyb3JzLg0KPiANCj4+IA0KPj4+IA0KPj4+IElmIERQREsg ZG9lcyBub3QgcGFkIHNob3J0IGZyYW1lcyBwYXNzZWQgdG8gdGhlIGVncmVzcyBmdW5jdGlvbiBv Zg0KPj4gdGhlIE5JQyBkcml2ZXJzLCBpdCBzaG91bGQgYmUgbm90ZWQgaW4gdGhlIGRvY3VtZW50 YXRpb24gLSB0aGlzIGlzIG5vdA0KPj4gdGhlIGV4cGVjdGVkIGJlaGF2aW9yIGJ5IHByb3RvY29s IGRldmVsb3BlcnMuDQo+Pj4gDQo+Pj4gT3IgZXZlbiBiZXR0ZXI6IFRoZSBOSUMgaGFyZHdhcmUg KG9yIGRyaXZlcikgc2hvdWxkIGVuc3VyZSBwYWRkaW5nLA0KPj4gcG9zc2libHkgY29uc2lkZXJp bmcgaXQgYSBUWCBPZmZsb2FkIGZlYXR1cmUuIEdlbmVyYXRpbmcgcGFja2V0cw0KPj4gc2hvcnRl ciB0aGFuIDYwIGJ5dGVzIGRhdGEgaXMgY29tbW9uIC0ganVzdCBjb25zaWRlciB0aGUgYW1vdW50 IG9mIFRDUA0KPj4gQUNLIHBhY2tldHMsIHdoaWNoIGFyZSB0eXBpY2FsbHkgb25seSAxNCArIDIw ICsgMjAgPSA1NCBieXRlcyAoaW5jbC4NCj4+IHRoZSAxNCBieXRlIEV0aGVybmV0IGhlYWRlciku DQo+Pj4gDQo+Pj4gDQo+Pj4gTWVkIHZlbmxpZyBoaWxzZW4gLyBraW5kIHJlZ2FyZHMNCj4+PiAt IE1vcnRlbiBCcsO4cnVwDQo+Pj4gDQo+Pj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ Pj4+IEZyb206IGRldiBbbWFpbHRvOmRldi1ib3VuY2VzQGRwZGsub3JnXSBPbiBCZWhhbGYgT2Yg QnVyYWtvdiwNCj4+IEFuYXRvbHkNCj4+Pj4gU2VudDogV2VkbmVzZGF5LCBOb3ZlbWJlciAxNCwg MjAxOCAxMToxOCBBTQ0KPj4+PiBUbzogU2FtDQo+Pj4+IENjOiBkZXZAZHBkay5vcmcNCj4+Pj4g U3ViamVjdDogUmU6IFtkcGRrLWRldl0gV2hlcmUgaXMgdGhlIHBhZGRpbmcgY29kZSBpbiBEUERL Pw0KPj4+PiANCj4+Pj4gT24gMTQtTm92LTE4IDU6NDUgQU0sIFNhbSB3cm90ZToNCj4+Pj4+IE9L LCB0aGVuIHNob3J0bHkgc3BlYWtpbmcsIERQREsgd2lsbCBOT1QgY2FyZSBhYm91dCBwYWRkaW5n Lg0KPj4+Pj4gTklDIHdpbGwgY2FyZSBhYm91dCBwYWRkaW5nIHdoaWxlIHNlbmQgYW5kIHJlY3Yg d2l0aCBOSUMuDQo+Pj4+PiBrZXJuZWwgd2lsbCBjYXJlIGFib3V0IHdoaWxlIHNlbmQgYW5kIHJl Y3Ygd2l0aCB2aG9zdHVzZXIgcG9ydC4NCj4+Pj4+IA0KPj4+Pj4gSXMgdGhhdCByaWdodD8NCj4+ Pj4gDQo+Pj4+IEkgY2Fubm90IHNwZWFrIGZvciB2aXJ0aW8vdmhvc3QgdXNlciBzaW5jZSBpIGFt IG5vdCB0ZXJyaWJseQ0KPj4gZmFtaWxpYXINCj4+Pj4gd2l0aCB0aGVtLiBGb3IgcmVndWxhciBw YWNrZXRzLCBnZW5lcmFsbHkgc3BlYWtpbmcsIHBhY2tldHMgc2hvcnRlcg0KPj4+PiB0aGFuDQo+ Pj4+IDYwIGJ5dGVzIGFyZSBpbnZhbGlkLiBXaGV0aGVyIERQREsgZG9lcyBvciBkb2VzIG5vdCBj YXJlIGFib3V0DQo+PiBwYWRkaW5nDQo+Pj4+IGlzIGlycmVsZXZhbnQsIGJlY2F1c2UgKnlvdSog YXJlIGF0dGVtcHRpbmcgdG8gdHJhbnNtaXQgcGFja2V0cyB0aGF0DQo+Pj4+IGFyZQ0KPj4+PiBu b3QgdmFsaWQuIFlvdSBzaG91bGRuJ3QgcmVseSBvbiB0aGlzIGJlaGF2aW9yLg0KPj4+PiANCj4+ Pj4+IA0KPj4+Pj4gDQo+Pj4+PiBCdXJha292LCBBbmF0b2x5IDxhbmF0b2x5LmJ1cmFrb3ZAaW50 ZWwuY29tDQo+Pj4+PiA8bWFpbHRvOmFuYXRvbHkuYnVyYWtvdkBpbnRlbC5jb20+PiDkuo4yMDE4 5bm0MTHmnIgxM+aXpeWRqOS6jA0KPj4g5LiL5Y2INToyOeWGmemBk++8mg0KPj4+Pj4gDQo+Pj4+ PiAgIE9uIDEzLU5vdi0xOCA3OjE2IEFNLCBTYW0gd3JvdGU6DQo+Pj4+Pj4gSGkgYWxsLA0KPj4+ Pj4+IA0KPj4+Pj4+IEFzIHdlIGtub3csIGV0aGVybmV0IGZyYW1lIG11c3QgbG9uZ2VyIHRoZW4g NjRCLg0KPj4+Pj4+IA0KPj4+Pj4+IFNvIGlmIEkgY3JlYXRlIHJ0ZV9tYnVmIGFuZCBmaWxsIGl0 IHdpdGgganVzdCA2MEIgZGF0YSwgd2lsbA0KPj4+Pj4+IHJ0ZV9ldGhfdHhfYnVyc3QgYWRkIHBh ZGRpbmcgZGF0YSwgbGV0IHRoZSBmcmFtZSBsb25nZXIgdGhlbg0KPj4+PiA2NEINCj4+Pj4+PiAN Cj4+Pj4+PiBJZiBpdCBkb2VzLCB3aGVyZSBpcyB0aGUgY29kZT8NCj4+Pj4+PiANCj4+Pj4+IA0K Pj4+Pj4gICBPdGhlcnMgY2FuIGNvcnJlY3QgbWUgaWYgaSdtIHdyb25nIGhlcmUsIGJ1dCBzcGVj aWZpY2FsbHkgaW4NCj4+IGNhc2UNCj4+Pj4gb2YNCj4+Pj4+ICAgNjQtYnl0ZSBwYWNrZXRzLCB0 aGVzZSBhcmUgdGhlIHNob3J0ZXN0IHZhbGlkIHBhY2tldHMgdGhhdCB5b3UNCj4+Pj4gY2FuDQo+ Pj4+PiAgIHNlbmQsDQo+Pj4+PiAgIGFuZCBhIDY0LWJ5dGUgcGFja2V0IHdpbGwgYWN0dWFsbHkg Y2Fycnkgb25seSA2MCBieXRlcycgd29ydGggb2YNCj4+Pj4gcGFja2V0DQo+Pj4+PiAgIGRhdGEs IGJlY2F1c2UgdGhlcmUncyBhIDQtYnl0ZSBDUkMgZnJhbWUgYXQgdGhlIGVuZCAoc2VlDQo+PiBF dGhlcm5ldA0KPj4+PiBmcmFtZQ0KPj4+Pj4gICBmb3JtYXQpLiBJZiB5b3UgZW5hYmxlZCBDUkMg b2ZmbG9hZCwgdGhlbiB5b3VyIE5JQyB3aWxsIGFwcGVuZA0KPj4+PiB0aGUgNA0KPj4+Pj4gICBi eXRlcyBhdCB0cmFuc21pdC4gSWYgeW91IGhhdmVuJ3QsIHRoZW4gaXQncyB1cCB0byBlYWNoDQo+ Pj4+IGluZGl2aWR1YWwNCj4+Pj4+ICAgZHJpdmVyL05JQyB0byBhY2NlcHQvcmVqZWN0IHN1Y2gg YSBwYWNrZXQgYmVjYXVzZSBpdCBjYW4gcmlnaHRseQ0KPj4+PiBiZQ0KPj4+Pj4gICBjb25zaWRl cmVkIG1hbGZvcm1lZC4NCj4+Pj4+IA0KPj4+Pj4gICBJbiBhZGRpdGlvbiwgeW91ciBOSUMgbWF5 IGFkZCBlLmcuIFZMQU4gdGFncyBvciBvdGhlciBzdHVmZiwNCj4+Pj4gYWdhaW4NCj4+Pj4+ICAg ZGVwZW5kaW5nIG9uIGhhcmR3YXJlIG9mZmxvYWRzIHRoYXQgeW91IGhhdmUgZW5hYmxlZCBpbiB5 b3VyIFRYDQo+Pj4+PiAgIGNvbmZpZ3VyYXRpb24sIHdoaWNoIG1heSBwdXNoIHRoZSBwYWNrZXQg c2l6ZSBiZXlvbmQgNjQgYnl0ZXMNCj4+Pj4gd2hpbGUNCj4+Pj4+ICAgaGF2aW5nIG9ubHkgNjAg Ynl0ZXMgb2YgYWN0dWFsIHBhY2tldCBkYXRhLg0KPj4+Pj4gDQo+Pj4+PiAgIC0tDQo+Pj4+PiAg IFRoYW5rcywNCj4+Pj4+ICAgQW5hdG9seQ0KPj4+Pj4gDQo+Pj4+IA0KPj4+PiANCj4+Pj4gLS0N Cj4+Pj4gVGhhbmtzLA0KPj4+PiBBbmF0b2x5DQo+Pj4gDQo+PiANCj4+IFJlZ2FyZHMsDQo+PiBL ZWl0aA0KPiANCg0KUmVnYXJkcywNCktlaXRoDQoNCg==