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 EF3BEA00C4; Thu, 30 Jun 2022 17:40:06 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 8CBF34069D; Thu, 30 Jun 2022 17:40:06 +0200 (CEST) Received: from smartserver.smartsharesystems.com (smartserver.smartsharesystems.com [77.243.40.215]) by mails.dpdk.org (Postfix) with ESMTP id 53CAD40694; Thu, 30 Jun 2022 17:40:05 +0200 (CEST) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 Subject: RE: Optimizations are not features Date: Thu, 30 Jun 2022 17:39:57 +0200 Message-ID: <98CBD80474FA8B44BF855DF32C47DC35D8719A@smartserver.smartshare.dk> In-Reply-To: X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: Optimizations are not features Thread-Index: Adh38saBhCzWrq13QiKXVs+Vki9E2AAA1LwAAAD0FQAAAnFmgAACayUAAAEhFQAAXbQwAARvikLwAFOb5mA= References: <98CBD80474FA8B44BF855DF32C47DC35D870EB@smartserver.smartshare.dk> <98CBD80474FA8B44BF855DF32C47DC35D870EF@smartserver.smartshare.dk> <497ed526-2fb7-805a-f72c-5909b85a62c1@yandex.ru> From: =?UTF-8?B?TW9ydGVuIEJyw7hydXA=?= To: "Honnappa Nagarahalli" , "Konstantin Ananyev" , "Andrew Rybchenko" , "Jerin Jacob" Cc: "dpdk-dev" , , "nd" , "nd" 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 PiBGcm9tOiBIb25uYXBwYSBOYWdhcmFoYWxsaSBbbWFpbHRvOkhvbm5hcHBhLk5hZ2FyYWhhbGxp QGFybS5jb21dDQo+IFNlbnQ6IFdlZG5lc2RheSwgMjkgSnVuZSAyMDIyIDIyLjQ0DQo+IA0KPiA8 c25pcD4NCj4gDQo+ID4NCj4gPiAwNC8wNi8yMDIyIDEzOjUxLCBBbmRyZXcgUnliY2hlbmtvINC/ 0LjRiNC10YI6DQo+ID4gPiBPbiA2LzQvMjIgMTU6MTksIE1vcnRlbiBCcsO4cnVwIHdyb3RlOg0K PiA+ID4+PiBGcm9tOiBKZXJpbiBKYWNvYiBbbWFpbHRvOmplcmluamFjb2JrQGdtYWlsLmNvbV0N Cj4gPiA+Pj4gU2VudDogU2F0dXJkYXksIDQgSnVuZSAyMDIyIDEzLjEwDQo+ID4gPj4+DQo+ID4g Pj4+IE9uIFNhdCwgSnVuIDQsIDIwMjIgYXQgMzozMCBQTSBBbmRyZXcgUnliY2hlbmtvDQo+ID4g Pj4+IDxhbmRyZXcucnliY2hlbmtvQG9rdGV0bGFicy5ydT4gd3JvdGU6DQo+ID4gPj4+Pg0KPiA+ ID4+Pj4gT24gNi80LzIyIDEyOjMzLCBKZXJpbiBKYWNvYiB3cm90ZToNCj4gPiA+Pj4+PiBPbiBT YXQsIEp1biA0LCAyMDIyIGF0IDI6MzkgUE0gTW9ydGVuIEJyw7hydXANCj4gPiA+Pj4gPG1iQHNt YXJ0c2hhcmVzeXN0ZW1zLmNvbT4gd3JvdGU6DQo+ID4gPj4+Pj4+DQo+ID4gPj4+Pj4+IEkgd291 bGQgbGlrZSB0aGUgRFBESyBjb21tdW5pdHkgdG8gY2hhbmdlIGl0cyB2aWV3IG9uIGNvbXBpbGUN Cj4gPiA+Pj4+Pj4gdGltZQ0KPiA+ID4+PiBvcHRpb25zLiBIZXJlIGlzIHdoeToNCj4gPiA+Pj4+ Pj4NCj4gPiA+Pj4+Pj4NCj4gPiA+Pj4+Pj4NCj4gPiA+Pj4+Pj4gQXBwbGljYXRpb24gc3BlY2lm aWMgcGVyZm9ybWFuY2UgbWljcm8tb3B0aW1pemF0aW9ucyBsaWtlDQo+IOKAnGZhc3QNCj4gPiA+ Pj4gbWJ1ZiBmcmVl4oCdIGFuZCDigJxtYnVmIGRpcmVjdCByZS1hcm3igJ0gYXJlIGJlaW5nIGFk ZGVkIHRvIERQREsgYW5kDQo+ID4gPj4+IHByZXNlbnRlZCBhcyBmZWF0dXJlcy4NCj4gPiA+Pj4+ Pj4NCj4gPiA+Pj4+Pj4NCj4gPiA+Pj4+Pj4NCj4gPiA+Pj4+Pj4gVGhleSBhcmUgbm90IGZlYXR1 cmVzLCBidXQgb3B0aW1pemF0aW9ucywgYW5kIEkgZG9u4oCZdA0KPiB1bmRlcnN0YW5kDQo+ID4g Pj4+IHRoZSBuZWVkIGZvciB0aGVtIHRvIGJlIGF2YWlsYWJsZSBhdCBydW4tdGltZSENCj4gPiA+ Pj4+Pj4NCj4gPiA+Pj4+Pj4NCj4gPiA+Pj4+Pj4NCj4gPiA+Pj4+Pj4gSW5zdGVhZCBvZiBhZGRp bmcgYSBidW5jaCBvZiBleG90aWMgZXhjZXB0aW9ucyB0byB0aGUgZmFzdA0KPiBwYXRoDQo+ID4g Pj4+Pj4+IG9mDQo+ID4gPj4+IHRoZSBQTURzLCB0aGV5IHNob3VsZCBiZSBjb21waWxlIHRpbWUg b3B0aW9ucy4gVGhpcyB3aWxsIGltcHJvdmUNCj4gPiA+Pj4gcGVyZm9ybWFuY2UgYnkgYXZvaWRp bmcgYnJhbmNoZXMgaW4gdGhlIGZhc3QgcGF0aCwgYm90aCBmb3IgdGhlDQo+ID4gPj4+IGFwcGxp Y2F0aW9ucyB1c2luZyB0aGVtLCBhbmQgZm9yIGdlbmVyaWMgYXBwbGljYXRpb25zICh3aGVyZSB0 aGUNCj4gPiA+Pj4gZXhvdGljIGNvZGUgaXMgb21pdHRlZCkuDQo+ID4gPj4+Pj4NCj4gPiA+Pj4+ PiBBZ3JlZS4gSSB0aGluaywga2VlcGluZyB0aGUgYmVzdCBvZiBib3RoIHdvcmxkcyB3b3VsZCBi ZQ0KPiA+ID4+Pj4+DQo+ID4gPj4+Pj4gLUVuYWJsZSB0aGUgZmVhdHVyZS9vcHRpbWl6YXRpb24g YXMgcnVudGltZSAtSGF2ZSBhIGNvbXBpbGUtDQo+IHRpbWUNCj4gPiA+Pj4+PiBvcHRpb24gdG8g ZGlzYWJsZSB0aGUgZmVhdHVyZS9vcHRpbWl6YXRpb24gYXMNCj4gPiA+Pj4gYW4gb3ZlcnJpZGUu DQo+ID4gPj4+Pg0KPiA+ID4+Pj4gSXQgaXMgaGFyZCB0byBmaW5kIHRoZSByaWdodCBiYWxhbmNl LCBidXQgaW4gZ2VuZXJhbCBjb21waWxlDQo+IHRpbWUNCj4gPiA+Pj4+IG9wdGlvbnMgYXJlIGEg bmlnaHRtYXJlIGZvciBtYWludGVuYW5jZS4gTnVtYmVyIG9mIHJlcXVpcmVkDQo+IGJ1aWxkcw0K PiA+ID4+Pj4gd2lsbCBncm93IGFzIGFuIGV4cG9uZW50Lg0KPiA+ID4+DQo+ID4gPj4gVGVzdCBj b21iaW5hdGlvbnMgYXJlIGV4cG9uZW50aWFsIGZvciBOIGZlYXR1cmVzLCByZWdhcmRsZXNzIGlm IE4NCj4gYXJlDQo+ID4gPj4gcnVudGltZSBvciBjb21waWxlIHRpbWUgb3B0aW9ucy4NCj4gPiA+ DQo+ID4gPiBCdXQgc2luY2UgSSdtIHRhbGtpbmcgYWJvdXQgYnVpbGQgY2hlY2tzIEkgZG9uJ3Qg Y2FyZSBhYm91dA0KPiA+ID4gZXhwb25lbnRpYWwgZ3Jvd3MgaW4gcnVuIHRpbWUuIFllcywgdGVz dGluZyBzaG91bGQgY2FyZSwgYnV0IGl0IGlzDQo+IGEgc2VwYXJhdGUNCj4gPiBzdG9yeS4NCj4g PiA+DQo+ID4gPj4NCj4gPiA+Pj4+IE9mIGNvdXJzZSwgd2UgY2FuDQo+ID4gPj4+PiBsaW1pdCBu dW1iZXIgb2YgY2hlY2tlZCBjb21iaW5hdGlvbnMsIGJ1dCBpdCB3aWxsIHJlc3VsdCBpbiBmbG93 DQo+IG9mDQo+ID4gPj4+PiBwYXRjaGVzIHRvIGZpeCBidWlsZCBpbiBvdGhlciBjYXNlcy4NCj4g PiA+Pj4NCj4gPiA+Pj4gVGhlIGJ1aWxkIGJyZWFrYWdlIGNhbiBiZSBmaXhlZCBpZiB3ZSB1c2Ug KDIpIHZzICgxKQ0KPiA+ID4+Pg0KPiA+ID4+PiAxKQ0KPiA+ID4+PiAjaWZkZWYgLi4uDQo+ID4g Pj4+IE15IGZlYXR1cmUNCj4gPiA+Pj4gI2VuZGlmDQo+ID4gPj4+DQo+ID4gPj4+IDIpDQo+ID4g Pj4+IHN0YXRpYyBfX3J0ZV9hbHdheXNfaW5saW5lIGludA0KPiA+ID4+PiBydGVfaGFzX3h5el9m ZWF0dXJlKHZvaWQpDQo+ID4gPj4+IHsNCj4gPiA+Pj4gI2lmZGVmIFJURV9MSUJSVEVfWFlaX0ZF QVRVUkUNCj4gPiA+Pj4gwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gUlRFX0xJQlJURV9YWVpfRkVB VFVSRTsgI2Vsc2UNCj4gPiA+Pj4gwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gMDsNCj4gPiA+Pj4g I2VuZGlmDQo+ID4gPj4+IH0NCj4gPiA+Pj4NCj4gPiA+Pj4gaWYocnRlX2hhc194eXpfZmVhdHVy ZSgpKSkgew0KPiA+ID4+PiBNeSBmZWF0dXJlIGNvZGUNCj4gPiA+Pj4NCj4gPiA+Pj4gfQ0KPiA+ ID4+Pg0KPiA+ID4NCj4gPiA+IEplcmluLCB0aGFua3MsIHZlcnkgZ29vZCBleGFtcGxlLg0KPiA+ ID4NCj4gPiA+PiBJJ20gbm90IHN1cmUgYWxsIHRoZSBmZWF0dXJlcyBjYW4gYmUgY292ZXJlZCBi eSB0aGF0LCBlLmcuIGFkZGVkDQo+ID4gPj4gZmllbGRzIGluIHN0cnVjdHVyZXMuDQo+ID4gPg0K PiA+ID4gKzENCj4gPiA+DQo+ID4gPj4NCj4gPiA+PiBBbHNvLCBJIHdvdWxkIGNvbnNpZGVyIHN1 Y2ggZmVhdHVyZXMgIm9wdCBpbiIgYXQgY29tcGlsZSB0aW1lDQo+IG9ubHkuDQo+ID4gPj4gQXMg c3VjaCwgdGhleSBjb3VsZCBiZSBhbGxvd2VkIHRvIGJyZWFrIHRoZSBBQkkvQVBJLg0KPiA+ID4+ DQo+ID4gPj4+DQo+ID4gPj4+DQo+ID4gPj4+PiBBbHNvIGNvbXBpbGUgdGltZSBvcHRpb25zIHRl bmQgdG8gbWFrZSBjb2RlIGxlc3MgcmVhZGFibGUgd2hpY2gNCj4gPiA+Pj4+IG1ha2VzIGFsbCBh c3BlY3RzIG9mIHRoZSBkZXZlbG9wbWVudCBoYXJkZXIuDQo+ID4gPj4+Pg0KPiA+ID4+Pj4gWWVz LCBjb21waWxlIHRpbWUgaXMgbmljZSBmb3IgbWljcm8gb3B0aW1pemF0aW9ucywgYnV0IEkgaGF2 ZQ0KPiBncmVhdA0KPiA+ID4+Pj4gY29uY2VybnMgdGhhdCBpdCBpcyBhIHJpZ2h0IHdheSB0byBn by4NCj4gPiA+Pj4+DQo+ID4gPj4+Pj4+IFBsZWFzZSBub3RlIHRoYXQgSSBhbSBvbmx5IHRhbGtp bmcgYWJvdXQgdGhlIHBlcmZvcm1hbmNlDQo+ID4gPj4+IG9wdGltaXphdGlvbnMgdGhhdCBhcmUg bGltaXRlZCB0byBhcHBsaWNhdGlvbiBzcGVjaWZpYyB1c2UgY2FzZXMuDQo+IEkNCj4gPiA+Pj4g dGhpbmsgaXQgbWFrZXMgc2Vuc2UgdG8gcmVxdWlyZSB0aGF0IHBlcmZvcm1hbmNlIG9wdGltaXpp bmcgYW4NCj4gPiA+Pj4gYXBwbGljYXRpb24gYWxzbyByZXF1aXJlcyByZWNvbXBpbGluZyB0aGUg cGVyZm9ybWFuY2UgY3JpdGljYWwNCj4gPiA+Pj4gbGlicmFyaWVzIHVzZWQgYnkgaXQuDQo+ID4g Pj4+Pj4+YWJhbmRvbiBzb21lIG9mIGV4aXN0aW5nIGZ1bmN0aW9uYWxpdHkgdG8gY3JlYXRlIGEg J3Nob3J0LWN1dCcNCj4gPiA+Pj4+Pj4NCj4gPiA+Pj4+Pj4NCj4gPiA+Pj4+Pj4gQWxsb3dpbmcg Y29tcGlsZSB0aW1lIG9wdGlvbnMgZm9yIGFwcGxpY2F0aW9uIHNwZWNpZmljDQo+ID4gPj4+Pj4+ IHBlcmZvcm1hbmNlDQo+ID4gPj4+IG9wdGltaXphdGlvbnMgaW4gRFBESyB3b3VsZCBhbHNvIG9w ZW4gYSBwYXRoIGZvciBvdGhlcg0KPiA+ID4+PiBvcHRpbWl6YXRpb25zLCB3aGljaCBjYW4gb25s eSBiZSBhY2hpZXZlZCBhdCBjb21waWxlIHRpbWUsIHN1Y2gNCj4gYXMNCj4gPiA+Pj4g4oCcbm8g ZnJhZ21lbnRlZCBwYWNrZXRz4oCdLCDigJxubyBhdHRhY2hlZCBtYnVmc+KAnSBhbmQg4oCcc2lu Z2xlIG1idWYNCj4gcG9vbOKAnS4NCj4gPiA+Pj4gQW5kIGV2ZW4gbW9yZSBleG90aWMgb3B0aW1p emF0aW9ucywgc3VjaCBhcyB0aGUg4oCcaW5kZXhlZCBtZW1wb29sDQo+ID4gPj4+IGNhY2hl4oCd LCB3aGljaCB3YXMgcmVqZWN0ZWQgZHVlIHRvIEFCSSB2aW9sYXRpb25zIOKAkyB0aGV5IGNvdWxk IGJlDQo+ID4gPj4+IG1hcmtlZCBhcyDigJxyaXNreSBhbmQgdW50ZXN0ZWTigJ0gb3Igc2ltaWxh ciwgYnV0IHN0aWxsIGJlIHBhcnQgb2YNCj4gdGhlIERQREsgbWFpbg0KPiA+IHJlcG9zaXRvcnku DQo+ID4gPj4+Pj4+DQo+ID4NCj4gPg0KPiA+IFRoYW5rcyBNb3J0ZW4gZm9yIGJyaW5naW5nIGl0 IHVwLCBpdCBpcyBhbiBpbnRlcmVzdGluZyB0b3BpYy4NCj4gPiBUaG91Z2ggSSBsb29rIGF0IGl0 IGZyb20gZGlmZmVyZW50IGFuZ2xlLg0KPiA+IEFsbCBvcHRpbWl6YXRpb25zIHlvdSBtZW50aW9u ZWQgYWJvdmUgaW50cm9kdWNlIG5ldyBsaW1pdGF0aW9uczoNCj4gPiBNQlVGX0ZBU1RfRlJFRSAt IG5vIGluZGlyZWN0IG1idWZzIGFuZCBtdWx0aXBsZSBtZW1wb29scywgbWVtcG9vbA0KPiBvYmpl Y3QNCj4gPiBpbmRleGVzIC0gbWVtcG9vbCBzaXplIGlzIGxpbWl0ZWQgdG8gNEdCLCBkaXJlY3Qg cmVhcm0gLSBkcm9wIGFiaWxpdHkNCj4gdG8NCj4gPiBzdG9wL3JlY29uZmlndXJlIFRYIHF1ZXVl LCB3aGlsZSBSWCBxdWV1ZSBpcyBzdGlsbCBydW5uaW5nLCBldGMuDQo+ID4gTm90ZSB0aGF0IGFs bCB0aGVzZSBsaW1pdGF0aW9ucyBhcmUgbm90IGZvcmNlZCBieSBIVy4NCj4gPiBBbGwgb2YgdGhl bSBhcmUgcHVyZSBTVyBsaW1pdGF0aW9ucyB0aGF0IGRldmVsb3BlcnMgZm9yY2VkIGluIChvcg0K PiB0cmllZCB0bykgdG8gZ2V0DQo+ID4gZmV3IGV4dHJhIHBlcmZvcm1hbmNlLg0KPiA+IFRoYXQn cyBjb25jZXJuaW5nIHRlbmRlbmN5Lg0KPiA+DQo+ID4gQXMgbW9yZSBhbmQgbW9yZSBzdWNoICdv cHRpbWl6YXRpb24gdmlhIGxpbWl0YXRpb24nIHdpbGwgY29tZSBpbjoNCj4gPiAtIERQREsgZmVh dHVyZSBsaXN0IHdpbGwgYmVjb21lIG1vcmUgYW5kIG1vcmUgZnJhZ21lbnRlZC4NCj4gPiAtIFdv dWxkIGNhdXNlIG1vcmUgYW5kIG1vcmUgY29uZnVzaW9uIGZvciB0aGUgdXNlcnMuDQo+ID4gLSBV bm1ldCBleHBlY3RhdGlvbnMgLSBkaWZmZXJlbmNlIGluIHBlcmZvcm1hbmNlIGJldHdlZW4gJ2Rl ZmF1bHQnDQo+ID4gICAgYW5kICdvcHRpbWl6ZWQnIHZlcnNpb24gb2YgRFBESyB3aWxsIGJlY29t ZSBiaWdnZXIgYW5kIGJpZ2dlci4NCg0KSSBzdHJvbmdseSBkaXNhZ3JlZSB3aXRoIHRoaXMgYnVs bGV0IQ0KDQpXZSBzaG91bGQgbm90IGxpbWl0IHRoZSBwZXJmb3JtYW5jZSB0byBvbmx5IHdoYXQg aXMgcG9zc2libGUgd2l0aCBhbGwgZmVhdHVyZXMgZW5hYmxlZC4NCg0KQW4gYXBwbGljYXRpb24g ZGV2ZWxvcGVyIHNob3VsZCBoYXZlIHRoZSBhYmlsaXR5IHRvIGRpc2FibGUgcGVyZm9ybWFuY2Ut Y29zdGx5IGZlYXR1cmVzIG5vdCBiZWluZyB1c2VkLg0KDQo+ID4gLSBBcyBBbmRyZXcgYWxyZWFk eSBtZW50aW9uZWQsIG1haW50YWluaW5nIGFsbCB0aGVzZSAnc3ViLWZsYXZvdXJzJw0KPiA+ICAg IG9mIERQREsgd2lsbCBiZWNvbWUgbW9yZSBhbmQgbW9yZSBkaWZmaWN1bHQuDQo+IFRoZSBwb2lu dCB0aGF0IHdlIG5lZWQgdG8gcmVtZW1iZXIgaXMsIHRoZXNlIGZlYXR1cmVzL29wdGltaXphdGlv bnMgYXJlDQo+IGludHJvZHVjZWQgYWZ0ZXIgc2VlaW5nIHBlcmZvcm1hbmNlIGlzc3VlcyBpbiBw cmFjdGljYWwgdXNlIGNhc2VzLg0KPiBEUERLIGlzIG5vdCBiZWluZyB1c2VkIGluIGp1c3Qgb25l IHVzZSBjYXNlLCBpdCBpcyBiZWluZyB1c2VkIGluDQo+IHNldmVyYWwgdXNlIGNhc2VzIHdoaWNo IGhhdmUgdGhlaXIgb3duIHVuaXF1ZSByZXF1aXJlbWVudHMuIElzIDRHQg0KPiBlbm91Z2ggZm9y IHBhY2tldCBidWZmZXJzIC0geWVzIGl0IGlzIGVub3VnaCBpbiBjZXJ0YWluIHVzZSBjYXNlcy4g QXJlDQo+IHRoZWlyIE5JQ3Mgd2l0aCBzaW5nbGUgcG9ydCAtIHllcyB0aGVyZSBhcmUuIEhXIGlz IGJlaW5nIGNyZWF0ZWQNCj4gYmVjYXVzZSB1c2UgY2FzZXMgYW5kIGJ1c2luZXNzIGNhc2VzIGV4 aXN0LiBJdCBpcyBvYnZpb3VzIHRoYXQgYXMgRFBESw0KPiBnZXRzIGFkb3B0ZWQgb24gbW9yZSBw bGF0Zm9ybXMgdGhhdCBkaWZmZXIgbGFyZ2VseSwgdGhlIGZlYXR1cmVzIHdpbGwNCj4gaW5jcmVh c2UgYW5kIGl0IHdpbGwgYmVjb21lIGNvbXBsZXguIENvbXBsZXhpdHkgc2hvdWxkIG5vdCBiZSB1 c2VkIGFzIGENCj4gY3JpdGVyaWEgdG8gcmVqZWN0IHBhdGNoZXMuDQo+IA0KPiBUaGVyZSBpcyBk aWZmZXJlbnQgcGVyc3BlY3RpdmUgdG8gd2hhdCB5b3UgYXJlIGNhbGxpbmcgYXMNCj4gJ2xpbWl0 YXRpb25zJy4gSSBjYW4gYXJndWUgdGhhdCBtdWx0aXBsZSBtZW1wb29scywgc3RvcC9yZWNvbmZp Z3VyZSBUWA0KPiBxdWV1ZSB3aGlsZSBSWCBxdWV1ZSBpcyBzdGlsbCBydW5uaW5nIGFyZSBleG90 aWMuIEp1c3QgYmVjYXVzZSB0aG9zZQ0KPiBhcmUgYWxsb3dlZCBjdXJyZW50bHkgKHByb2JhYmx5 IGFjY2lkZW50bHkpIGRvZXMgbm90IG1lYW4gdGhleSBhcmUNCj4gYmVpbmcgdXNlZC4gQXJlIHRo ZXJlIHVzZSBjYXNlcyB0aGF0IG1ha2UgdXNlIG9mIHRoZXNlIGZlYXR1cmVzPw0KPiANCj4gVGhl IGJhc2UvZXhpc3RpbmcgZGVzaWduIGZvciBEUERLIHdhcyBkb25lIHdpdGggb25lIHBhcnRpY3Vs YXIgSFcNCj4gYXJjaGl0ZWN0dXJlIGluIG1pbmQgd2hlcmUgdGhlcmUgd2FzIGFuIGFidW5kYW5j ZSBvZiByZXNvdXJjZXMuDQo+IFVuZm9ydHVuYXRlbHksIHRoYXQgSFcgYXJjaGl0ZWN0dXJlIGlz IGZhc3QgZXZvbHZpbmcgYW5kIERQREsgaXMNCj4gYWRvcHRlZCBpbiB1c2UgY2FzZXMgd2hlcmUg dGhhdCBraW5kIG9mIHJlc291cmNlcyBhcmUgbm90IGF2YWlsYWJsZS4NCj4gRm9yIGV4OiBlZmZp Y2llbmN5IGNvcmVzIGFyZSBiZWluZyBpbnRyb2R1Y2VkIGJ5IGV2ZXJ5IENQVSB2ZW5kb3Igbm93 Lg0KPiBTb29uIGVub3VnaCwgd2Ugd2lsbCBzZWUgYmlnLWxpdHRsZSBhcmNoaXRlY3R1cmUgaW4g bmV0d29ya2luZyBhcyB3ZWxsLg0KPiBUaGUgZXhpc3RpbmcgUE1EIGRlc2lnbiBpbnRyb2R1Y2Vz IDUxMkIgb2Ygc3RvcmVzICgyNTZCIGZvciBjb3B5aW5nIHRvDQo+IHN0YWNrIHZhcmlhYmxlIGFu ZCAyNTZCIHRvIHN0b3JlIGxjb3JlIGNhY2hlKSBhbmQgMjU2QiBsb2FkL3N0b3JlIG9uIFJYDQo+ IHNpZGUgZXZlcnkgMzIgcGFja2V0cyBiYWNrIHRvIGJhY2suIEl0IGRvZXNuJ3QgbWFrZSBzZW5z ZSB0byBoYXZlIHRoYXQNCj4ga2luZCBvZiBtZW1jb3B5IGZvciBsaXR0bGUvZWZmaWNpZW5jeSBj b3JlcyBqdXN0IGZvciB0aGUgZHJpdmVyIGNvZGUuDQo+IA0KPiA+DQo+ID4gU28sIHByb2JhYmx5 IGluc3RlYWQgb2YgbWFraW5nIHN1Y2ggY2hhbmdlcyBlYXNpZXIsIHdlIG5lZWQgc29tZWhvdw0K PiB0bw0KPiA+IHBlcnN1YWRlIGRldmVsb3BlcnMgdG8gdGhpbmsgbW9yZSBhYm91dCBvcHRpbWl6 YXRpb25zIHRoYXQgd291bGQgYmUNCj4gZ2VuZXJpYw0KPiA+IGFuZCB0cmFuc3BhcmVudCB0byB0 aGUgdXNlci4NCj4gT3IgbWF5IGJlIHdlIG5lZWQgdG8gdGhpbmsgb2YgY3JlYXRpbmcgYWx0ZXJu YXRlIHdheXMgb2YgcHJvZ3JhbW1pbmcuDQoNCkV4YWN0bHkgd2hhdCBJIHdhcyBob3BpbmcgdG8g YWNoaWV2ZSB3aXRoIHRoaXMgZGlzY3Vzc2lvbi4NCg0KPiANCj4gPiBJIGRvIHJlYWxpemUgdGhh dCBpdCBpcyBub3QgYWx3YXlzIHBvc3NpYmxlIGR1ZSB0byB2YXJpb3VzIHJlYXNvbnMNCj4gKEhX IGxpbWl0YXRpb25zLA0KPiA+IGV4dGVybmFsIGRlcGVuZGVuY2llcywgZXRjLikgYnV0IHRoYXQn cyBhbm90aGVyIHN0b3J5Lg0KPiA+DQo+ID4gTGV0J3MgdGFrZSBmb3IgZXhhbXBsZSBNQlVGX0ZB U1RfRlJFRS4NCj4gPiBJbiBmYWN0LCBJIGFtIG5vdCBzdXJlIHRoYXQgd2UgbmVlZCBpdCBhcyB0 eCBvZmZsb2FkIGZsYWcgYXQgYWxsLg0KPiA+IFBNRCBUWC1wYXRoIGhhcyBhbGwgbmVjZXNzYXJ5 IGluZm9ybWF0aW9uIHRvIGRlY2lkZSBhdCBydW4tdGltZSBjYW4NCj4gaXQgZG8NCj4gPiBmYXN0 X2ZyZWUoKSBmb3Igbm90Og0KPiA+IEF0IHR4X2J1cnN0KCkgUE1EIGNhbiBjaGVjayBhcmUgYWxs IG1idWZzIHNhdGlzZnkgdGhlc2UgY29uZGl0aW9ucw0KPiAoc2FtZQ0KPiA+IG1lbXBvb2wsIHJl ZmNudD09MSkgYW5kIHVwZGF0ZSBzb21lIGZpZWxkcyBhbmQvb3IgY291bnRlcnMgaW5zaWRlIFRY UQ0KPiB0bw0KPiA+IHJlZmxlY3QgaXQuDQo+ID4gVGhlbiwgYXQgdHhfZnJlZSgpIHdlIGNhbiB1 c2UgdGhpcyBpbmZvIHRvIGRlY2lkZSBiZXR3ZWVuIGZhc3RfZnJlZSgpDQo+IGFuZA0KPiA+IG5v cm1hbF9mcmVlKCkuDQo+ID4gQXMgYXQgdHhfYnVyc3QoKSB3ZSByZWFkIG1idWYgZmllbGRzIGFu eXdheSwgaW1wYWN0IGZvciB0aGlzIGV4dHJhDQo+IHN0ZXAgSSBndWVzcw0KPiA+IHdvdWxkIGJl IG1pbmltYWwuDQo+ID4gWWVzLCBtb3N0IGxpa2VseSwgaXQgd291bGRuJ3QgYmUgYXMgZmFzdCBh cyB3aXRoIGN1cnJlbnQgVFggb2ZmbG9hZA0KPiBmbGFnLCBvcg0KPiA+IGNvbmRpdGlvbmFsIGNv bXBpbGF0aW9uIGFwcHJvYWNoLg0KPiA+IEJ1dCBpdCBtaWdodCBiZSBzdGlsbCBzaWduaWZpY2Fu dGx5IGZhc3RlciB0aGVuIG5vcm1hbF9mcmVlKCksIHBsdXMNCj4gc3VjaCBhcHByb2FjaA0KPiA+ IHdpbGwgYmUgZ2VuZXJpYyBhbmQgdHJhbnNwYXJlbnQgdG8gdGhlIHVzZXIuDQo+IElNTywgdGhp cyBkZXBlbmRzIG9uIHRoZSBwaGlsb3NvcGh5IHRoYXQgd2Ugd2FudCB0byBhZG9wdC4gSSB3b3Vs ZA0KPiBwcmVmZXIgdG8gbWFrZSBjb250cm9sIHBsYW5lIGNvbXBsZXggZm9yIHBlcmZvcm1hbmNl IGdhaW5zIG9uIHRoZSBkYXRhDQo+IHBsYW5lLiBUaGUgcGVyZm9ybWFuY2Ugb24gdGhlIGRhdGEg cGxhbmUgaGFzIGEgbXVsdGlwbHlpbmcgZWZmZWN0IGR1ZQ0KPiB0byB0aGUgcmF0aW8gb2YgbnVt YmVyIG9mIGNvcmVzIGFzc2lnbmVkIGZvciBkYXRhIHBsYW5lIHZzIGNvbnRyb2wNCj4gcGxhbmUu DQoNClllcy4gQW5kIGlmIHNvbWUgcGVyZm9ybWFuY2UtY29zdGluZyBmZWF0dXJlIGlzIG5vdCBw b3NzaWJsZSB0byBtb3ZlIG91dCBmcm9tIHRoZSBkYXRhIHBsYW5lIHRvIHRoZSBjb250cm9sIHBs YW5lLCBpdCBzaG91bGQgYmUgY29tcGlsZSB0aW1lIG9wdGlvbmFsLg0KDQpBbmQgcGxlYXNlIG5v dGUgdGhhdCBJIGRvbid0IGJ1eSB0aGUgYXJndW1lbnQgdGhhdCAiaXQgd2lsbCBiZSBjYXVnaHQg YnkgYnJhbmNoIHByZWRpY3Rpb24iLiBZb3UgYXJlIG5vdCBhbGxvd2VkIHRvIGZpbGwgdXAgbXkg YnJhbmNoIHByZWRpY3RvciB0YWJsZSB3aXRoIGNydWZ0IQ0KDQo+IA0KPiBJIGFtIG5vdCBhZ2Fp bnN0IGV2YWx1YXRpbmcgYWx0ZXJuYXRpdmVzLCBidXQgdGhlIGFsdGVybmF0aXZlDQo+IGFwcHJv YWNoZXMgbmVlZCB0byBoYXZlIHNpbWlsYXIgKG5vdCB0aGUgc2FtZSkgcGVyZm9ybWFuY2UuDQo+ IA0KPiA+DQo+ID4gS29uc3RhbnRpbg0K