From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by dpdk.org (Postfix) with ESMTP id 3F0A9377C for ; Mon, 18 Jul 2016 15:26:27 +0200 (CEST) Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga102.fm.intel.com with ESMTP; 18 Jul 2016 06:26:15 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.28,384,1464678000"; d="scan'208";a="1008976830" Received: from irsmsx104.ger.corp.intel.com ([163.33.3.159]) by fmsmga001.fm.intel.com with ESMTP; 18 Jul 2016 06:26:11 -0700 Received: from irsmsx111.ger.corp.intel.com (10.108.20.4) by IRSMSX104.ger.corp.intel.com (163.33.3.159) with Microsoft SMTP Server (TLS) id 14.3.248.2; Mon, 18 Jul 2016 14:26:10 +0100 Received: from irsmsx102.ger.corp.intel.com ([169.254.2.123]) by irsmsx111.ger.corp.intel.com ([169.254.2.182]) with mapi id 14.03.0248.002; Mon, 18 Jul 2016 14:26:10 +0100 From: "Chandran, Sugesh" To: Adrien Mazarguil CC: "dev@dpdk.org" , Thomas Monjalon , "Zhang, Helin" , "Wu, Jingjing" , Rasesh Mody , Ajit Khaparde , Rahul Lakkireddy , "Lu, Wenzhuo" , "Jan Medala" , John Daley , "Chen, Jing D" , "Ananyev, Konstantin" , Matej Vido , "Alejandro Lucero" , Sony Chacko , Jerin Jacob , "De Lara Guarch, Pablo" , Olga Shern , "Chilikin, Andrey" Thread-Topic: [dpdk-dev] [RFC] Generic flow director/filtering/classification API Thread-Index: AQHR1ul13SVB/Bo7y0+HNDeMrG3/bKANL2ZggAFEKwCABIVXkIADy76AgAFiwZCAAW5AAIAEmm7g Date: Mon, 18 Jul 2016 13:26:09 +0000 Message-ID: <2EF2F5C0CC56984AA024D0B180335FCB13E02938@IRSMSX102.ger.corp.intel.com> References: <20160705181646.GO7621@6wind.com> <2EF2F5C0CC56984AA024D0B180335FCB13DEA331@IRSMSX102.ger.corp.intel.com> <20160708130310.GD7621@6wind.com> <2EF2F5C0CC56984AA024D0B180335FCB13DEB236@IRSMSX102.ger.corp.intel.com> <20160713200327.GC7621@6wind.com> <2EF2F5C0CC56984AA024D0B180335FCB13DEE55F@IRSMSX102.ger.corp.intel.com> <20160715150402.GE7621@6wind.com> In-Reply-To: <20160715150402.GE7621@6wind.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [163.33.239.181] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] [RFC] Generic flow director/filtering/classification API 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: Mon, 18 Jul 2016 13:26:28 -0000 SGkgQWRyaWVuLA0KVGhhbmsgeW91IGZvciBnZXR0aW5nIGJhY2sgb24gdGhpcy4NClBsZWFzZSBm aW5kIG15IGNvbW1lbnRzIGJlbG93Lg0KDQpSZWdhcmRzDQpfU3VnZXNoDQoNCg0KPiAtLS0tLU9y aWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBBZHJpZW4gTWF6YXJndWlsIFttYWlsdG86YWRy aWVuLm1hemFyZ3VpbEA2d2luZC5jb21dDQo+IFNlbnQ6IEZyaWRheSwgSnVseSAxNSwgMjAxNiA0 OjA0IFBNDQo+IFRvOiBDaGFuZHJhbiwgU3VnZXNoIDxzdWdlc2guY2hhbmRyYW5AaW50ZWwuY29t Pg0KPiBDYzogZGV2QGRwZGsub3JnOyBUaG9tYXMgTW9uamFsb24gPHRob21hcy5tb25qYWxvbkA2 d2luZC5jb20+Ow0KPiBaaGFuZywgSGVsaW4gPGhlbGluLnpoYW5nQGludGVsLmNvbT47IFd1LCBK aW5namluZw0KPiA8amluZ2ppbmcud3VAaW50ZWwuY29tPjsgUmFzZXNoIE1vZHkgPHJhc2VzaC5t b2R5QHFsb2dpYy5jb20+OyBBaml0DQo+IEtoYXBhcmRlIDxhaml0LmtoYXBhcmRlQGJyb2FkY29t LmNvbT47IFJhaHVsIExha2tpcmVkZHkNCj4gPHJhaHVsLmxha2tpcmVkZHlAY2hlbHNpby5jb20+ OyBMdSwgV2Vuemh1byA8d2Vuemh1by5sdUBpbnRlbC5jb20+Ow0KPiBKYW4gTWVkYWxhIDxqYW5A c2VtaWhhbGYuY29tPjsgSm9obiBEYWxleSA8am9obmRhbGVAY2lzY28uY29tPjsgQ2hlbiwNCj4g SmluZyBEIDxqaW5nLmQuY2hlbkBpbnRlbC5jb20+OyBBbmFueWV2LCBLb25zdGFudGluDQo+IDxr b25zdGFudGluLmFuYW55ZXZAaW50ZWwuY29tPjsgTWF0ZWogVmlkbyA8bWF0ZWp2aWRvQGdtYWls LmNvbT47DQo+IEFsZWphbmRybyBMdWNlcm8gPGFsZWphbmRyby5sdWNlcm9AbmV0cm9ub21lLmNv bT47IFNvbnkgQ2hhY2tvDQo+IDxzb255LmNoYWNrb0BxbG9naWMuY29tPjsgSmVyaW4gSmFjb2IN Cj4gPGplcmluLmphY29iQGNhdml1bW5ldHdvcmtzLmNvbT47IERlIExhcmEgR3VhcmNoLCBQYWJs bw0KPiA8cGFibG8uZGUubGFyYS5ndWFyY2hAaW50ZWwuY29tPjsgT2xnYSBTaGVybiA8b2xnYXNA bWVsbGFub3guY29tPjsNCj4gQ2hpbGlraW4sIEFuZHJleSA8YW5kcmV5LmNoaWxpa2luQGludGVs LmNvbT4NCj4gU3ViamVjdDogUmU6IFtkcGRrLWRldl0gW1JGQ10gR2VuZXJpYyBmbG93IGRpcmVj dG9yL2ZpbHRlcmluZy9jbGFzc2lmaWNhdGlvbg0KPiBBUEkNCj4gDQo+IE9uIEZyaSwgSnVsIDE1 LCAyMDE2IGF0IDA5OjIzOjI2QU0gKzAwMDAsIENoYW5kcmFuLCBTdWdlc2ggd3JvdGU6DQo+ID4g VGhhbmsgeW91IEFkcmllbiwNCj4gPiBQbGVhc2UgZmluZCBiZWxvdyBmb3Igc29tZSBtb3JlIGNv bW1lbnRzL2lucHV0cw0KPiA+DQo+ID4gTGV0IG1lIGtub3cgeW91ciB0aG91Z2h0cyBvbiB0aGlz Lg0KPiANCj4gVGhhbmtzLCBzdHJpcHBpbmcgYWdhaW4gbm9uIHJlbGV2YW50IHBhcnRzLg0KPiAN Cj4gWy4uLl0NCj4gPiA+ID4gPiA+IFtTdWdlc2hdIElzIGl0IGEgbGltaXRhdGlvbiB0byB1c2Ug b25seSAzMiBiaXQgSUQ/IElzIGl0DQo+ID4gPiA+ID4gPiBwb3NzaWJsZSB0byBoYXZlIGENCj4g PiA+ID4gPiA+IDY0IGJpdCBJRD8gU28gdGhhdCBhcHBsaWNhdGlvbiBjYW4gdXNlIHRoZSBjb250 cm9sIHBsYW5lIGZsb3cNCj4gPiA+ID4gPiA+IHBvaW50ZXIgSXRzZWxmIGFzIGFuIElELiBEb2Vz IGl0IG1ha2Ugc2Vuc2U/DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBJJ3ZlIHNwZWNpZmllZCBhIDMy IGJpdCBJRCBmb3Igbm93IGJlY2F1c2UgdGhpcyBpcyB3aGF0IEZESVINCj4gPiA+ID4gPiBzdXBw b3J0cyBhbmQgYWxzbyB3aGF0IGV4aXN0aW5nIGRldmljZXMgY2FuIHJlcG9ydCB0b2RheSBBRkFJ Sw0KPiA+ID4gPiA+IChpNDBlIGFuZA0KPiA+ID4gbWx4NSkuDQo+ID4gPiA+ID4NCj4gPiA+ID4g PiBXZSBjb3VsZCB1c2UgNjQgYml0IGZvciBmdXR1cmUtcHJvb2ZuZXNzIGluIGEgc2VwYXJhdGUg YWN0aW9uIGxpa2UNCj4gIklENjQiDQo+ID4gPiA+ID4gd2hlbiBhdCBsZWFzdCBvbmUgZGV2aWNl IHN1cHBvcnRzIGl0Lg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gVG8gUE1EIG1haW50YWluZXJzOiBw bGVhc2UgY29tbWVudCBpZiB5b3Uga25vdyBkZXZpY2VzIHRoYXQNCj4gPiA+ID4gPiBzdXBwb3J0 IHRhZ2dpbmcgbWF0Y2hpbmcgcGFja2V0cyB3aXRoIG1vcmUgdGhhbiAzMiBiaXRzIG9mDQo+ID4g PiA+ID4gdXNlci1wcm92aWRlZCBkYXRhIQ0KPiA+ID4gPiBbU3VnZXNoXSBJIGd1ZXNzIHRoZSBm bG93IGRpcmVjdG9yIElEIGlzIDY0IGJpdCAsIFRoZSBYTDcxMCBkYXRhc2hlZXQgc2F5cw0KPiBz by4NCj4gPiA+ID4gQW5kIGluIHRoZSAncnRlX21idWYnIHN0cnVjdHVyZSB0aGUgNjQgYml0IEZE SVItSUQgaXMgc2hhcmVkIHdpdGgNCj4gPiA+ID4gcnNzIGhhc2guIFRoaXMgY2FuIGJlIGEgc29m dHdhcmUgZHJpdmVyIGxpbWl0YXRpb24gdGhhdCBleHBvc2UNCj4gPiA+ID4gb25seSAzMiBiaXQu IFBvc3NpYmx5IGJlY2F1c2Ugb2YgY2FjaGUgYWxpZ25tZW50IGlzc3Vlcz8gU2luY2UgdGhlDQo+ ID4gPiA+IGhhcmR3YXJlIGNhbiBzdXBwb3J0IDY0IGJpdCwgSSBmZWVsIGl0IG1ha2Ugc2Vuc2Ug dG8gc3VwcG9ydCA2NCBiaXQgYXMNCj4gd2VsbC4NCj4gPiA+DQo+ID4gPiBJIGFncmVlIHdlIG5l ZWQgNjQgYml0IHN1cHBvcnQsIGJ1dCB0aGVuIHdlIGFsc28gbmVlZCBhIHNvbHV0aW9uIGZvcg0K PiA+ID4gZGV2aWNlcyB0aGF0IHN1cHBvcnQgb25seSAzMiBiaXQuIFBvc3NpYmxlIG1ldGhvZHMg SSBjYW4gdGhpbmsgb2Y6DQo+ID4gPg0KPiA+ID4gLSBBIHNlcGFyYXRlICJJRDY0IiBhY3Rpb24g KG9yIGEgIklEMzIiIG9uZSwgcGVyaGFwcyB3aXRoIGEgYmV0dGVyIG5hbWUpLg0KPiA+ID4NCj4g PiA+IC0gQSBzaW5nbGUgSUQgYWN0aW9uIHdpdGggYW4gdW5saW1pdGVkIG51bWJlciBvZiBieXRl cyB0byByZXR1cm4gd2l0aA0KPiA+ID4gICBwYWNrZXRzICh3b3VsZCBhY3R1YWxseSBiZSBhIHN0 cmluZykuIFBNRHMgY2FuIHRoZW4gcmVmdXNlIHRvIGNyZWF0ZQ0KPiBmbG93DQo+ID4gPiAgIHJ1 bGVzIHJlcXVlc3RpbmcgYW4gdW5zdXBwb3J0ZWQgbnVtYmVyIG9mIGJ5dGVzLiBEZXZpY2VzDQo+ ID4gPiBzdXBwb3J0aW5nIGZld2VyDQo+ID4gPiAgIHRoYW4gMzIgYml0cyBhcmUgYWxzbyBpbmNs dWRlZCB0aGlzIHdheSB3aXRob3V0IHRoZSBuZWVkIGZvciB5ZXQgYW5vdGhlcg0KPiA+ID4gICBh Y3Rpb24uDQo+ID4gPg0KPiA+ID4gVGhvdWdodHM/DQo+ID4gW1N1Z2VzaF0gSSBmZWVsIHRoZSBz aW5nbGUgSUQgYXBwcm9hY2ggaXMgbXVjaCBiZXR0ZXIuIEJ1dCBJIHdvdWxkIHNheQ0KPiA+IGEg Zml4ZWQgc2l6ZSBJRCBpcyBlYXN5IHRvIGhhbmRsZSBhdCB1cHBlciBsYXllcnMuIFNheSBQTUQg cmV0dXJucw0KPiA+IDY0Yml0IElEIGluIHdoaWNoIE1TQnMgYXJlIG1hc2tlZCBvdXQsIGJhc2Vk IG9uIGhvdyBtYW55IGJpdHMgdGhlDQo+IGhhcmR3YXJlIGNhbiBzdXBwb3J0Lg0KPiA+IFBNRCBj YW4gcmVmdXNlIHRoZSB1bnN1cHBvcnRlZCBudW1iZXIgb2YgYnl0ZXMgd2hlbiByZXF1ZXN0ZWQu IFNvDQo+IHRoZQ0KPiA+IHNpemUgb2YgSUQgZ29pbmcgdG8gYmUgYSBwYXJhbWV0ZXIgdG8gcHJv Z3JhbSB0aGUgZmxvdy4NCj4gPiBXaGF0IGRvIHlvdSB0aGluaz8NCj4gDQo+IFdoYXQgeW91IHN1 Z2dlc3QgaWYgSSBhbSBub3QgbWlzdGFrZW4gaXM6DQo+IA0KPiAgc3RydWN0IHJ0ZV9mbG93X2Fj dGlvbl9pZCB7DQo+ICAgICAgdWludDY0X3QgaWQ7DQo+ICAgICAgdWludDY0X3QgbWFzazsgLyog ZWl0aGVyIGEgYml0LW1hc2sgb3IgYSBwcmVmaXgvc3VmZml4IGxlbmd0aD8gKi8gIH07DQo+IA0K PiBJIHRoaW5rIGluIHRoaXMgY2FzZSBhIG1hc2sgaXMgbW9yZSB2ZXJzYXRpbGUgdGhhbiBhIHBy ZWZpeC9zdWZmaXggbGVuZ3RoIGFzIHRoZQ0KPiB2YWx1ZSBpdHNlbGYgY29tZXMgaW4gYW4gdW5r bm93biBlbmRpYW4gKGZyb20gUE1EJ3MgUE9WKS4gSXQgYWxzbyBhbGxvd3MNCj4gc3BlY2lmaWMg Yml0cyB0byBiZSB0YWtlbiBpbnRvIGFjY291bnQsIGxpa2Ugd2hlbiBIVyBvbmx5IHN1cHBvcnRz IDMyIGJpdCwgd2l0aA0KPiBzb21lIGJsYWNrIG1hZ2ljIHRoZSBmdWxsIG9yaWdpbmFsIDY0IGJp dCB2YWx1ZSBjYW4gYmUgcmVzdG9yZWQgYXMgbG9uZyBhcyB0aGUNCj4gYXBwbGljYXRpb24gb25s eSBjYXJlcyBhYm91dCBhdCBtb3N0IDMyIGJpdHMgYW55d2hlcmUuDQo+IA0KPiBIb3dldmVyIEkg ZG8gbm90IHRoaW5rIG1hbnkgYXBwbGljYXRpb25zICJ3b24ndCBjYXJlIiBhYm91dCBzcGVjaWZp YyBiaXRzIGluIGENCj4gZ2l2ZW4gdmFsdWUgYW5kIGhhdmluZyB0byBwcm92aWRlIGEgcHJvcGVy bHkgY3JhZnRlZCBtYXNrIHdpbGwgYmUgYSBoYXNzbGUsDQo+IHRoZXkgd2lsbCBqdXN0IGZpbGwg aXQgd2l0aCBvbmVzIGFuZCBob3BlIGZvciB0aGUgYmVzdC4gQXMgYSByZXN1bHQgdGhleSB3b24n dA0KPiB0YWtlIGFkdmFudGFnZSBvZiB0aGlzIGZlYXR1cmUgb3Igd2lsbCBzdGljayB0byAzMiBi aXRzIGFsbCB0aGUgdGltZSwgb3Igd2hhdGV2ZXINCj4gaGFwcGVucyB0byBiZSB0aGUgbGVhc3Qg Y29tbW9uIGRlbm9taW5hdG9yLg0KPiANCj4gTXkgcHJldmlvdXMgc3VnZ2VzdGlvbiB3YXM6DQo+ IA0KPiAgc3RydWN0IHJ0ZV9mbG93X2FjdGlvbl9pZCB7DQo+ICAgICAgdWludDhfdCBzaXplOyAv KiBudW1iZXIgb2YgYnl0ZXMgaW4gaWRbXSAqLw0KPiAgICAgIHVpbnQ4X3QgaWRbXTsNCj4gIH07 DQo+IA0KPiBJdCBkb2VzIG5vdCBzb2x2ZSB0aGUgaXNzdWUgaWYgYW4gYXBwbGljYXRpb24gcmVx dWVzdHMgbW9yZSBieXRlcyB0aGFuDQo+IHN1cHBvcnRlZCwgaG93ZXZlciBhcyBhIHN0cmluZywg dGhlcmUgaXMgbm8gZW5kaWFubmVzcyBhbWJpZ3VpdHkgYW5kIHRoZXNlDQo+IGJ5dGVzIGFyZSBj b3BpZWQgYXMtaXMgdG8gdGhlIHJlbGF0ZWQgbWJ1ZiBmaWVsZCBhcyBpZiBkb25lIHRocm91Z2gg bWVtY3B5KCkNCj4gcG9zc2libHkgd2l0aCBzb21lIHBhZGRpbmcgdG8gZmlsbCB0aGUgZW50aXJl IDY0IGJpdCBmaWVsZCAoY29waWVkIGJ5dGVzIHRodXMNCj4gc3RhcnRpbmcgZnJvbSBNU0IgZm9y IGJpZy1lbmRpYW4gbWFjaGluZXMsIExTQiBmb3IgbGl0dGxlLWVuZGlhbiBvbmVzKS4gVGhlDQo+ IHZhbHVlIGl0c2VsZiByZW1haW5zIG9wYXF1ZSB0byB0aGUgUE1ELg0KPiANCj4gT25lIGlzc3Vl IGlzIHRoZSBmbGV4aWJsZSBhcnJheSBhcHByb2FjaCBtYWtlcyBzdGF0aWMgaW5pdGlhbGl6YXRp b24gbW9yZQ0KPiBjb21wbGljYXRlZC4gTWF5YmUgaXQgaXMgbm90IHdvcnRoIHRoZSB0cm91Ymxl IHNpbmNlIGFjY29yZGluZyB0byBBbmRyZXksDQo+IGV2ZW4gWDcxMCByZXBvcnRzIGF0IG1vc3Qg MzIgYml0cyBvZiB1c2VyIGRhdGEuDQo+IA0KPiBTbyB3aGF0IHNob3VsZCB3ZSBkbz8gRml4ZWQg MzIgYml0cyBJRCBmb3Igbm93IHRvIGtlZXAgdGhpbmdzIHNpbXBsZSwgdGhlbg0KPiBhbm90aGVy IGFjdGlvbiBmb3IgNjQgYml0cyBsYXRlciB3aGVuIG5lY2Vzc2FyeT8NCltTdWdlc2hdIEkgYWdy ZWUgd2l0aCB5b3UuIFdlIGNvdWxkIGtlZXAgdGhpbmdzIHNpbXBsZSBieSBoYXZpbmcgMzIgYml0 IElEIG5vdy4NCkkgbWl4ZWQgdXAgdGhlIHNpemUgb2YgSUQgd2l0aCBmbGV4aWJsZSBwYXlsb2Fk IHNpemUuIFNvcnJ5IGFib3V0IHRoYXQuDQpJbiB0aGUgZnV0dXJlLCB3ZSBjb3VsZCBhZGQgYW4g YWN0aW9uIGZvciA2NCBiaXQgaWYgbmVjZXNzYXJ5Lg0KDQo+IA0KPiA+ID4gWy4uLl0NCj4gPiA+ ID4gPiA+IFtTdWdlc2hdIEFub3RoZXIgY29uY2VybiBpcyB0aGUgY29zdCBhbmQgdGltZSBvZiBp bnN0YWxsaW5nDQo+ID4gPiA+ID4gPiB0aGVzZSBydWxlcyBpbiB0aGUgaGFyZHdhcmUuIENhbiB3 ZSBtYWtlIHRoZXNlIEFQSXMgdGltZQ0KPiA+ID4gPiA+ID4gYm91bmQob3IgYXQgbGVhc3QgYW4g b3B0aW9uDQo+ID4gPiA+ID4gdG8NCj4gPiA+ID4gPiA+IHNldCB0aGUgdGltZSBsaW1pdCB0byBl eGVjdXRlIHRoZXNlIEFQSXMpLCBzbyB0aGF0IEFwcGxpY2F0aW9uDQo+ID4gPiA+ID4gPiBkb2Vz buKAmXQgaGF2ZSB0byB3YWl0IHNvIGxvbmcgd2hlbiBpbnN0YWxsaW5nIGFuZCBkZWxldGluZw0K PiA+ID4gPiA+ID4gZmxvd3MNCj4gPiA+ID4gPiB3aXRoDQo+ID4gPiA+ID4gPiBzbG93IGhhcmR3 YXJlL05JQy4gV2hhdCBkbyB5b3UgdGhpbms/IE1vc3Qgb2YgdGhlIGRhdGFwYXRoDQo+ID4gPiA+ ID4gPiBmbG93DQo+ID4gPiA+ID4gaW5zdGFsbGF0aW9ucyBhcmUNCj4gPiA+ID4gPiA+IGR5bmFt aWMgYW5kIHRyaWdnZXJlZCBvbmx5IHdoZW4gdGhlcmUgaXMgYW4gaW5ncmVzcyB0cmFmZmljLg0K PiA+ID4gPiA+ID4gRGVsYXkgaW4gZmxvdyBpbnNlcnRpb24vZGVsZXRpb24gaGF2ZSB1bnByZWRp Y3RhYmxlDQo+ID4gPiA+ID4gY29uc2VxdWVuY2VzLg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gVGhp cyBBUEkgaXMgKGN1cnJlbnRseSkgYWltZWQgYXQgdGhlIGNvbnRyb2wgcGF0aCBvbmx5LCBhbmQg bXVzdA0KPiA+ID4gPiA+IGluZGVlZCBiZSBhc3N1bWVkIHRvIGJlIHNsb3cuIENyZWF0aW5nIG1p bGxpb24gb2YgcnVsZXMgbWF5IHRha2UNCj4gPiA+ID4gPiBxdWl0ZSBsb25nIGFzIGl0IG1heSBp bnZvbHZlIHN5c2NhbGxzIGFuZCBvdGhlciB0aW1lLWNvbnN1bWluZw0KPiA+ID4gPiA+IHN5bmNo cm9uaXphdGlvbiB0aGluZ3Mgb24gdGhlIFBNRCBzaWRlLg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4g U28gY3VycmVudGx5IHRoZXJlIGlzIG5vIHBsYW4gdG8gaGF2ZSBydWxlcyBhZGRlZCBmcm9tIHRo ZSBkYXRhDQo+ID4gPiA+ID4gcGF0aCB3aXRoIHRpbWUgY29uc3RyYWludHMuIEkgdGhpbmsgaXQg d291bGQgYmUgaW1wbGVtZW50ZWQNCj4gPiA+ID4gPiB0aHJvdWdoIGEgZGlmZmVyZW50IHNldCBv ZiBmdW5jdGlvbnMgYW55d2F5Lg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gSSBkbyBub3QgdGhpbmsg YWRkaW5nIHRpbWUgbGltaXRzIGlzIHByYWN0aWNhbCwgZXZlbiBzcGVjaWZ5aW5nDQo+ID4gPiA+ ID4gaW4gdGhlIEFQSSB0aGF0IGNyZWF0aW5nIGEgc2luZ2xlIGZsb3cgcnVsZSBtdXN0IHRha2Ug bGVzcyB0aGFuDQo+ID4gPiA+ID4gYSBtYXhpbXVtIG51bWJlciBvZiBzZWNvbmRzIGluIG9yZGVy IHRvIGJlIGVmZmVjdGl2ZSBpcyB0b28gbXVjaA0KPiA+ID4gPiA+IG9mIGEgY29uc3RyYWludCAo YXBwbGljYXRpb25zIHRoYXQgY3JlYXRlIGFsbCBmbG93cyBkdXJpbmcgaW5pdA0KPiA+ID4gPiA+ IG1heSBub3QgY2FyZSBhZnRlcg0KPiA+ID4gYWxsKS4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IFlv dSBzaG91bGQgY29uc2lkZXIgaW4gYW55IGNhc2UgdGhhdCBtb2RpZnlpbmcgZmxvdyBydWxlcyB3 aWxsDQo+ID4gPiA+ID4gYWx3YXlzIGJlIHNsb3dlciB0aGFuIHJlY2VpdmluZyBwYWNrZXRzLCB0 aGVyZSBpcyBubyB3YXkgYXJvdW5kDQo+ID4gPiA+ID4gdGhhdC4gQXBwbGljYXRpb25zIGhhdmUg dG8gbGl2ZSB3aXRoIGl0IGFuZCBwcm92aWRlIGEgc29mdHdhcmUNCj4gPiA+ID4gPiBmYWxsYmFj ayBmb3IgaW5jb21pbmcgcGFja2V0cyB3aGlsZSBtYW5hZ2luZyBmbG93IHJ1bGVzLg0KPiA+ID4g PiA+DQo+ID4gPiA+ID4gTW9yZW92ZXIsIHRoaW5rIGFib3V0IHdoYXQgaGFwcGVucyB3aGVuIHlv dSBoaXQgdGhlIG1heGltdW0NCj4gPiA+IG51bWJlcg0KPiA+ID4gPiA+IG9mIGZsb3cgcnVsZXMg YW5kIGNhbm5vdCBjcmVhdGUgYW55IG1vcmUuIEFwcGxpY2F0aW9ucyBuZWVkIHRvDQo+ID4gPiA+ ID4gaW1wbGVtZW50IHNvbWUga2luZCBvZiBmYWxsYmFjayBpbiB0aGVpciBkYXRhIHBhdGguDQo+ ID4gPiA+ID4NCj4gPiA+ID4gPiBPZmZsb2FkaW5nIGZsb3dzIGluIEhXIGlzIGFsc28gb25seSB1 c2VmdWwgaWYgdGhleSBsaXZlIG11Y2gNCj4gPiA+ID4gPiBsb25nZXIgdGhhbiB0aGUgdGltZSB0 YWtlbiB0byBjcmVhdGUgYW5kIGRlbGV0ZSB0aGVtLiBQZXJoYXBzDQo+ID4gPiA+ID4gYXBwbGlj YXRpb25zIG1heSBjaG9vc2UgdG8gZG8gc28gYWZ0ZXIgZGV0ZWN0aW5nIGxvbmcgbGl2ZWQNCj4g PiA+ID4gPiBmbG93cyBzdWNoIGFzIFRDUCBzZXNzaW9ucy4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+ IFlvdSBtYXkgaGF2ZSBvbmUgc2VwYXJhdGUgY29udHJvbCB0aHJlYWQgZGVkaWNhdGVkIHRvIG1h bmFnZQ0KPiA+ID4gPiA+IGZsb3dzIGFuZCBrZWVwIHlvdXIgbm9ybWFsIGNvbnRyb2wgdGhyZWFk IHVuYWZmZWN0ZWQgYnkgZGVsYXlzLg0KPiA+ID4gPiA+IFNldmVyYWwgdGhyZWFkcyBjYW4gZXZl biBiZSBkZWRpY2F0ZWQsIG9uZSBwZXIgZGV2aWNlLg0KPiA+ID4gPiBbU3VnZXNoXSBJIGFncmVl IHRoYXQgdGhlIGZsb3cgaW5zZXJ0aW9uIGNhbm5vdCBiZSBhcyBmYXN0IGFzIHRoZQ0KPiA+ID4g PiBwYWNrZXQgcmVjZWl2aW5nIHJhdGUuICBGcm9tIGFwcGxpY2F0aW9uIHBvaW50IG9mIHZpZXcg dGhlIHByb2JsZW0NCj4gPiA+ID4gd2lsbCBiZSB3aGVuIGhhcmR3YXJlIGZsb3cgaW5zZXJ0aW9u IHRha2VzIGxvbmdlciB0aGFuIHNvZnR3YXJlDQo+ID4gPiA+IGZsb3cgaW5zZXJ0aW9uLiBBdCBs ZWFzdCBhcHBsaWNhdGlvbiBoYXMgdG8ga25vdyB0aGUgY29zdCBvZg0KPiA+ID4gPiBpbnNlcnRp bmcvZGVsZXRpbmcgYSBydWxlIGluIGhhcmR3YXJlIGJlZm9yZWhhbmQuIE90aGVyd2lzZSBob3cN Cj4gPiA+ID4gYXBwbGljYXRpb24gY2FuIGNob29zZSB0aGUgcmlnaHQgZmxvdyBjYW5kaWRhdGUg Zm9yIGhhcmR3YXJlLiBNeQ0KPiA+ID4gPiBwb2ludA0KPiA+ID4gaGVyZSBpcyBhcHBsaWNhdGlv biBpcyBleHBlY3RpbmcgYSBkZXRlcm1pbmlzdGljIGJlaGF2aW9yIGZyb20gYQ0KPiA+ID4gY2xh c3NpZmllciB3aGlsZSBpbnNlcnRpbmcgYW5kIGRlbGV0aW5nIHJ1bGVzLg0KPiA+ID4NCj4gPiA+ IFVuZGVyc3Rvb2QsIGhvd2V2ZXIgaXQgd2lsbCBiZSBkaWZmaWN1bHQgdG8gZXN0aW1hdGUsIHBh cnRpY3VsYXJseQ0KPiA+ID4gaWYgYSBQTUQgbXVzdCByZWFycmFuZ2UgZmxvdyBydWxlcyB0byBt YWtlIHJvb20gZm9yIGEgbmV3IG9uZSBkdWUgdG8NCj4gPiA+IHByaW9yaXR5IGxldmVscyBjb2xs aXNpb24gb3Igc29tZSBvdGhlciBIVy1yZWxhdGVkIHJlYXNvbi4gSSBtZWFuLA0KPiA+ID4gc3Bl bnQgdGltZSBjYW5ub3QgYmUgYXNzdW1lZCB0byBiZSBjb25zdGFudCwgZXZlbiBQTURzIGNhbm5v dCBrbm93DQo+ID4gPiBpbiBhZHZhbmNlIGJlY2F1c2UgaXQgYWxzbyBkZXBlbmRzIG9uIHRoZSBw ZXJmb3JtYW5jZSBvZiB0aGUgaG9zdCBDUFUuDQo+ID4gPg0KPiA+ID4gU3VjaCBhcHBsaWNhdGlv bnMgbWF5IGZpbmQgaXQgZWFzaWVyIHRvIG1lYXN1cmUgZWxhcHNlZCB0aW1lIGZvciB0aGUNCj4g PiA+IHJ1bGVzIHRoZXkgY3JlYXRlLCBtYWtlIHN0YXRpc3RpY3MgYW5kIGV4dHJhcG9sYXRlIGZy b20gdGhpcw0KPiA+ID4gaW5mb3JtYXRpb24gZm9yIGZ1dHVyZSBydWxlcy4gSSBkbyBub3QgdGhp bmsgdGhlIFBNRCBjYW4gaGVscCBtdWNoIGhlcmUuDQo+ID4gW1N1Z2VzaF0gRnJvbSBhbiBhcHBs aWNhdGlvbiBwb2ludCBvZiB2aWV3IHRoaXMgY2FuIGJlIGFuIGlzc3VlLg0KPiA+IEV2ZW4gdGhl cmUgaXMgYSBzZWN1cml0eSBjb25jZXJuIHdoZW4gd2UgcHJvZ3JhbSBhIHNob3J0IGxpdmVkIGZs b3cuDQo+ID4gTGV0cyBjb25zaWRlciB0aGUgY2FzZSwNCj4gPg0KPiA+IDEpIENvbnRyb2wgcGxh bmUgcHJvZ3JhbXMgdGhlIGhhcmR3YXJlIHdpdGggUXVldWUgdGVybWluYXRpb24gZmxvdy4NCj4g PiAyKSBTb2Z0d2FyZSBkYXRhcGxhbmUgcHJvZ3JhbW1lZCB0byB0cmVhdCB0aGUgcGFja2V0cyBm cm9tIHRoZSBzcGVjaWZpYw0KPiBxdWV1ZSBhY2NvcmRpbmdseS4NCj4gPiAzKSBSZW1vdmUgdGhl IGZsb3cgZnJvbSB0aGUgaGFyZHdhcmUuIChMZXRzIGNvbnNpZGVyIHRoaXMgaXMgYSBsb25nIHdh aXQNCj4gcHJvY2Vzcy4uKS4NCj4gPiBPciBldmVuIHRoZXJlIGlzIGEgY2hhbmNlIHRoYXQgaGFy ZHdhcmUgdGFrZSBtb3JlIHRpbWUgdG8gcmVwb3J0IHRoZQ0KPiA+IHN0YXR1cyB0aGFuIHJlbW92 aW5nIGl0IHBoeXNpY2FsbHkgLiBOb3cgdGhlIHBhY2tldHMgaW4gdGhlIHF1ZXVlIG5vIGxvbmdl cg0KPiBjb25zaWRlciBhcyBtYXRjaGVkL2Zsb3cgaGl0Lg0KPiA+IC4gVGhpcyBpcyBkdWUgdG8g dGhlIHNvZnR3YXJlIGRhdGFwbGFuZSB1cGRhdGUgaXMgeWV0IHRvIGhhcHBlbi4NCj4gPiBXZSBt dXN0IG5lZWQgYSB3YXkgdG8gc3luYyBiZXR3ZWVuIHNvZnR3YXJlIGRhdGFwYXRoIGFuZCBjbGFz c2lmaWVyDQo+ID4gQVBJcyBldmVuIHRob3VnaCB0aGV5IGFyZSBib3RoIHByb2dyYW1tZWQgZnJv bSBhIGRpZmZlcmVudCBjb250cm9sDQo+IHRocmVhZC4NCj4gPg0KPiA+IEFyZSB3ZSBzYXlpbmcg dGhlc2UgQVBJcyBhcmUgb25seSBtZWFudCBmb3IgdXNlciBkZWZpbmVkIHN0YXRpYyBmbG93cz8/ DQo+IA0KPiBObywgdGhhdCBpcyBkZWZpbml0ZWx5IG5vdCB0aGUgaW50ZW50LiBUaGVzZSBhcmUg Z29vZCBwb2ludHMuDQo+IA0KPiBXaXRoIHRoZSBzcGVjaWZpZWQgQVBJLCBhcHBsaWNhdGlvbnMg bWF5IGhhdmUgdG8gYWRhcHQgdGhlaXIgbG9naWMgYW5kIHRha2UNCj4gZXh0cmEgcHJlY2F1dGlv bnMgaW4gb3JkZXIgdG8gcmVtYWluIG9uIHRoZSBzYWZlIHNpZGUgYXQgYWxsIHRpbWVzLg0KPiAN Cj4gRm9yIHlvdXIgYWJvdmUgZXhhbXBsZSwgdGhlIGFwcGxpY2F0aW9uIGNhbm5vdCBhc3N1bWUg YSBydWxlIGlzDQo+IGFkZGVkL2RlbGV0ZWQgYXMgbG9uZyBhcyB0aGUgUE1EIGhhcyBub3QgY29t cGxldGVkIHRoZSByZWxhdGVkIG9wZXJhdGlvbiwNCj4gd2hpY2ggbWVhbnMga2VlcGluZyB0aGUg U1cgcnVsZS9mYWxsYmFjayBpbiBwbGFjZSBpbiB0aGUgbWVhbnRpbWUuIFNob3VsZA0KPiBoYW5k bGUgc2VjdXJpdHkgY29uY2VybnMgYXMgbG9uZyBhcyBhZnRlciByZW1vdmluZyBhIHJ1bGUsIHBh Y2tldHMgZW5kIHVwIGluIGENCj4gZGVmYXVsdCBxdWV1ZSBlbnRpcmVseSBwcm9jZXNzZWQgYnkg U1cuIE9idmlvdXNseSB0aGlzIG1heSB3b3JzZW4NCj4gcmVzcG9uc2UgdGltZS4NCj4gDQo+IFRo ZSBJRCBhY3Rpb24gY2FuIGhlbHAgd2l0aCB0aGlzLiBCeSBrbm93aW5nIHdoaWNoIHJ1bGUgYSBy ZWNlaXZlZCBwYWNrZXQgaXMNCj4gYXNzb2NpYXRlZCB3aXRoLCBwcm9jZXNzaW5nIGNhbiBiZSB0 ZW1wb3JhcmlseSBvZmZsb2FkZWQgYnkgYW5vdGhlciB0aHJlYWQNCj4gd2l0aG91dCBtdWNoIGNv bXBsZXhpdHkuDQpbU3VnZXNoXSBTZXR0aW5nIElEIGZvciBldmVyeSBmbG93IG1heSBub3Qgdmlh YmxlIGVzcGVjaWFsbHkgd2hlbiB0aGUgc2l6ZSBvZiBJRA0KaXMgc21hbGwoanVzdCBvbmx5IDgg Yml0cykuIEkgYW0gbm90IHN1cmUgaXMgdGhpcyBhIHZhbGlkIGNhc2UgdGhvdWdoLg0KDQpIb3cg YWJvdXQgYSBoYXJkd2FyZSBmbG93IGZsYWcgaW4gcGFja2V0IGRlc2NyaXB0b3IgdGhhdCBzZXQg d2hlbiB0aGUNCnBhY2tldHMgaGl0cyBhbnkgaGFyZHdhcmUgcnVsZS4gVGhpcyB3YXkgc29mdHdh cmUgZG9lc27igJl0IHdvcnJ5IC9ibG9ja2VkIGJ5IGENCmhhcmR3YXJlIHJ1bGUgLiBFdmVuIHRo b3VnaCB0aGVyZSBpcyBhbiBhZGRpdGlvbmFsIG92ZXJoZWFkIG9mIHZhbGlkYXRpbmcgdGhpcyBm bGFnLA0Kc29mdHdhcmUgZGF0YXBhdGggY2FuIGlkZW50aWZ5IHRoZSBoYXJkd2FyZSBwcm9jZXNz ZWQgcGFja2V0cyBlYXNpbHkuDQpUaGlzIHdheSB0aGUgcGFja2V0cyB0cmF2ZXJzZXMgdGhlIHNv ZnR3YXJlIGZhbGxiYWNrIHBhdGggdW50aWwgdGhlIHJ1bGUgY29uZmlndXJhdGlvbiBpcw0KY29t cGxldGUuIFRoaXMgZmxhZyBhdm9pZHMgc2V0dGluZyBJRCBhY3Rpb24gZm9yIGV2ZXJ5IGhhcmR3 YXJlIGZsb3cgdGhhdCBhcmUgY29uZmlndXJpbmcuDQoNCj4gDQo+IEkgdGhpbmsgYXBwbGljYXRp b25zIGhhdmUgdG8gaW1wbGVtZW50IFNXIGZhbGxiYWNrcyBhbGwgdGhlIHRpbWUsIGFzIGV2ZW4N Cj4gc29tZSBzb3J0IG9mIGd1YXJhbnRlZSBvbiB0aGUgZmxvdyBydWxlIHByb2Nlc3NpbmcgdGlt ZSBtYXkgbm90IGJlIGVub3VnaA0KPiB0byBhdm9pZCBtaXNkaXJlY3RlZCBwYWNrZXRzIGFuZCBy ZWxhdGVkIHNlY3VyaXR5IGlzc3Vlcy4NCltTdWdlc2hdIFNvZnR3YXJlIGZhbGxiYWNrIHdpbGwg YmUgdGhlcmUgYWx3YXlzLiBIb3dldmVyIEkgYW0gbGl0dGxlIGJpdCBjb25mdXNlZCBvbg0KdGhl IHdheSBzb2Z0d2FyZSBnb2luZyB0byBpZGVudGlmeSB0aGUgcGFja2V0cyB0aGF0IGFyZSBhbHJl YWR5IGhhcmR3YXJlIHByb2Nlc3NlZCAuIEkgZmVlbCB3ZSBuZWVkIHNvbWUNCm5vdGlmaWNhdGlv biBpbiB0aGUgcGFja2V0IGl0c2VsZiwgd2hlbiBhIGhhcmR3YXJlIHJ1bGUgaGl0cy4gSUQvZmxh Zy9hbnkgb3RoZXIgb3B0aW9ucz8NCj4gDQo+IExldCdzIHdhaXQgZm9yIGFwcGxpY2F0aW9ucyB0 byBzdGFydCB1c2luZyB0aGlzIEFQSSBhbmQgdGhlbiBjb25zaWRlciBhbiBleHRyYQ0KPiBzZXQg b2YgYXN5bmNocm9ub3VzIC8gcmVhbC10aW1lIGZ1bmN0aW9ucyB3aGVuIHRoZSBuZWVkIGFyaXNl cy4gSXQgc2hvdWxkIG5vdA0KPiBpbXBhY3QgdGhlIHdheSBydWxlcyBhcmUgc3BlY2lmaWVkDQpb U3VnZXNoXSBTdXJlLiBJIHRoaW5rIHRoZSBydWxlIGRlZmluaXRpb24gbWF5IG5vdCBpbXBhY3Qg d2l0aCB0aGlzLg0KLg0KPiANCj4gPiA+ID4gPiA+IFtTdWdlc2hdIEFub3RoZXIgcXVlcnkgaXMg b24gdGhlIHN5bmNocm9uaXphdGlvbiBwYXJ0LiBXaGF0IGlmDQo+ID4gPiA+ID4gPiBzYW1lIHJ1 bGVzDQo+ID4gPiA+ID4gYXJlDQo+ID4gPiA+ID4gPiBoYW5kbGVkIGZyb20gZGlmZmVyZW50IHRo cmVhZHM/IElzIGFwcGxpY2F0aW9uIHJlc3BvbnNpYmxlIGZvcg0KPiA+ID4gPiA+ID4gaGFuZGxp bmcgdGhlDQo+ID4gPiA+ID4gY29uY3VycmVudA0KPiA+ID4gPiA+ID4gaGFyZHdhcmUgcHJvZ3Jh bW1pbmc/DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBMaWtlIG1vc3QgKGlmIG5vdCBhbGwpIERQREsg QVBJcywgYXBwbGljYXRpb25zIGFyZSByZXNwb25zaWJsZQ0KPiA+ID4gPiA+IGZvciBtYW5hZ2lu ZyBsb2NraW5nIGlzc3VlcyBhcyBkZWNyaWJlZCBpbiA0LjMgKEJlaGF2aW9yKS4gU2luY2UNCj4g PiA+ID4gPiB0aGlzIGlzIGEgY29udHJvbCBwYXRoIEFQSSBhbmQgYXBwbGljYXRpb25zIHVzdWFs bHkgaGF2ZSBhDQo+ID4gPiA+ID4gc2luZ2xlIGNvbnRyb2wgdGhyZWFkLCBsb2NraW5nIHNob3Vs ZCBub3QgYmUgbmVjZXNzYXJ5IGluIG1vc3QgY2FzZXMuDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBS ZWdhcmRpbmcgbXkgYWJvdmUgY29tbWVudCBhYm91dCB1c2luZyBzZXZlcmFsIGNvbnRyb2wgdGhy ZWFkcw0KPiA+ID4gPiA+IHRvIG1hbmFnZSBkaWZmZXJlbnQgZGV2aWNlcywgc2VjdGlvbiA0LjMg c2F5czoNCj4gPiA+ID4gPg0KPiA+ID4gPiA+ICAiVGhlcmUgaXMgbm8gcHJvdmlzaW9uIGZvciBy ZWVudHJhbmN5L211bHRpLXRocmVhZCBzYWZldHksDQo+ID4gPiA+ID4gYWx0aG91Z2ggbm90aGlu ZyAgc2hvdWxkIHByZXZlbnQgZGlmZmVyZW50IGRldmljZXMgZnJvbSBiZWluZw0KPiA+ID4gPiA+ IGNvbmZpZ3VyZWQgYXQgdGhlIHNhbWUgIHRpbWUuIFBNRHMgbWF5IHByb3RlY3QgdGhlaXIgY29u dHJvbA0KPiA+ID4gPiA+IHBhdGggZnVuY3Rpb25zDQo+ID4gPiBhY2NvcmRpbmdseS4iDQo+ID4g PiA+ID4NCj4gPiA+ID4gPiBJJ2QgbGlrZSB0byBlbXBoYXNpemUgaXQgaXMgbm90ICJwZXIgcG9y dCIgYnV0ICJwZXIgZGV2aWNlIiwNCj4gPiA+ID4gPiBzaW5jZSBpbiBhIGZldyBjYXNlcyBhIGNv bmZpZ3VyYWJsZSByZXNvdXJjZSBpcyBzaGFyZWQgYnkgc2V2ZXJhbCBwb3J0cy4NCj4gPiA+ID4g PiBJdCBtYXkgYmUgZGlmZmljdWx0IGZvciBhcHBsaWNhdGlvbnMgdG8gZGV0ZXJtaW5lIHdoaWNo IHBvcnRzDQo+ID4gPiA+ID4gYXJlIHNoYXJlZCBieSBhIGdpdmVuIGRldmljZSBidXQgdGhpcyBm YWxscyBvdXRzaWRlIHRoZSBzY29wZSBvZiB0aGlzDQo+IEFQSS4NCj4gPiA+ID4gPg0KPiA+ID4g PiA+IERvIHlvdSB0aGluayBhZGRpbmcgdGhlIGd1YXJhbnRlZSB0aGF0IGl0IGlzIGFsd2F5cyBz YWZlIHRvDQo+ID4gPiA+ID4gY29uZmlndXJlIHR3byBkaWZmZXJlbnQgcG9ydHMgc2ltdWx0YW5l b3VzbHkgd2l0aG91dCBsb2NraW5nDQo+ID4gPiA+ID4gZnJvbSB0aGUgYXBwbGljYXRpb24gc2lk ZSBpcyBuZWNlc3Nhcnk/IEluIHdoaWNoIGNhc2UgdGhlIFBNRA0KPiA+ID4gPiA+IHdvdWxkIGJl IHJlc3BvbnNpYmxlIGZvciBsb2NraW5nIHNoYXJlZCByZXNvdXJjZXMuDQo+ID4gPiA+IFtTdWdl c2hdIFRoaXMgd291bGQgYmUgbGl0dGxlIGJpdCBjb21wbGljYXRlZCB3aGVuIHNvbWUgb2YgcG9y dHMNCj4gPiA+ID4gYXJlIG5vdCB1bmRlciBEUERLIGl0c2VsZih3aGF0IGlmIG9uZSBwb3J0IGlz IG1hbmFnZWQgYnkgS2VybmVsKQ0KPiA+ID4gPiBPciBwb3J0cyBhcmUgdGllZCBieSBkaWZmZXJl bnQgYXBwbGljYXRpb24uIExvY2tpbmcgaW4gUE1EIGhlbHBzDQo+ID4gPiA+IHdoZW4gdGhlIHBv cnRzIGFyZSBhY2Nlc3NlZCBieSBtdWx0aXBsZSBEUERLIGFwcGxpY2F0aW9uLiBIb3dldmVyDQo+ ID4gPiA+IHdoYXQgaWYgdGhlIHBvcnQgaXRzZWxmDQo+ID4gPiBub3QgdW5kZXIgRFBESz8NCj4g PiA+DQo+ID4gPiBXZWxsLCBlaXRoZXIgd2UgZG8gbm90IGNhcmUgYWJvdXQgd2hhdCBoYXBwZW5z IG91dHNpZGUgb2YgdGhlIERQREsNCj4gPiA+IGNvbnRleHQsIG9yIFBNRHMgbXVzdCBmaW5kIGEg d2F5IHRvIHNhdGlzZnkgZXZlcnlvbmUuIEknbSBub3QgYSBmYW4NCj4gPiA+IG9mIGxvY2tpbmcg ZWl0aGVyIGJ1dCBpdCB3b3VsZCBiZSBuaWNlIGlmIGZsb3cgcnVsZXMgY29uZmlndXJhdGlvbg0K PiA+ID4gY291bGQgYmUgYXR0ZW1wdGVkIG9uIGRpZmZlcmVudCBwb3J0cyBzaW11bHRhbmVvdXNs eSB3aXRob3V0IHRoZQ0KPiA+ID4gcmlzayBvZiB3cmVja2luZyBhbnl0aGluZywgc28gdGhhdCBh cHBsaWNhdGlvbnMgZG8gbm90IG5lZWQgdG8gY2FyZS4NCj4gPiA+DQo+ID4gPiBQb3NzaWJsZSBj YXNlcyBmb3IgYSBkdWFsIHBvcnQgZGV2aWNlIHdpdGggZ2xvYmFsIGZsb3cgcnVsZSBzZXR0aW5n cw0KPiA+ID4gYWZmZWN0aW5nIGJvdGggcG9ydHM6DQo+ID4gPg0KPiA+ID4gMSkgcG9ydHMgMSAm IDIgYXJlIG1hbmFnZWQgYnkgRFBESzogdGhpcyBpcyB0aGUgZWFzeSBjYXNlLCBhIHJ1bGUgdGhh dA0KPiBuZWVkcw0KPiA+ID4gICAgdG8gYWx0ZXIgYSBnbG9iYWwgc2V0dGluZyBuZWNlc3Nhcnkg Zm9yIGFuIGV4aXN0aW5nIHJ1bGUgb24gYW55IHBvcnQgaXMNCj4gPiA+ICAgIG5vdCBhbGxvd2Vk IChFRVhJU1QpLiBQTUQgbXVzdCBtYWludGFpbiBhIGRldmljZSBjb250ZXh0IGNvbW1vbiB0bw0K PiBib3RoDQo+ID4gPiAgICBwb3J0cyBpbiBvcmRlciBmb3IgdGhpcyB0byB3b3JrLiBUaGlzIGNv bnRleHQgaXMgZWl0aGVyIHVuZGVyIGxvY2ssIG9yDQo+ID4gPiAgICB0aGUgZmlyc3QgcG9ydCBv biB3aGljaCBhIGZsb3cgcnVsZSBpcyBjcmVhdGVkIG93bnMgYWxsIGZ1dHVyZSBmbG93DQo+ID4g PiAgICBydWxlcy4NCj4gPiA+DQo+ID4gPiAyKSBwb3J0IDEgaXMgbWFuYWdlZCBieSBEUERLLCBw b3J0IDIgYnkgc29tZXRoaW5nIGVsc2UsIHRoZSBQTUQgaXMNCj4gYXdhcmUgb2YNCj4gPiA+ICAg IGl0IGFuZCBrbm93cyB0aGF0IHBvcnQgMiBtYXkgbW9kaWZ5IHRoZSBnbG9iYWwgY29udGV4dDog bm8gZmxvdyBydWxlcw0KPiBjYW4NCj4gPiA+ICAgIGJlIGNyZWF0ZWQgZnJvbSB0aGUgRFBESyBh cHBsaWNhdGlvbiBkdWUgdG8gc2FmZXR5IGlzc3VlcyAoRUJVU1k/KS4NCj4gPiA+DQo+ID4gPiAz KSBwb3J0IDEgaXMgbWFuYWdlZCBieSBEUERLLCBwb3J0IDIgYnkgc29tZXRoaW5nIGVsc2UsIHRo ZSBQTUQgaXMNCj4gYXdhcmUgb2YNCj4gPiA+ICAgIGl0IGFuZCBrbm93cyB0aGF0IHBvcnQgMiB3 aWxsIG5vdCBtb2RpZnkgZmxvdyBydWxlczogUE1EIHNob3VsZCBub3QgY2FyZSwNCj4gPiA+ICAg IG5vIGxvY2sgbmVjZXNzYXJ5Lg0KPiA+ID4NCj4gPiA+IDQpIHBvcnQgMSBpcyBtYW5hZ2VkIGJ5 IERQREssIHBvcnQgMiBieSBzb21ldGhpbmcgZWxzZSBhbmQgdGhlIFBNRCBpcw0KPiBub3QNCj4g PiA+ICAgIGF3YXJlIG9mIGl0OiBlaXRoZXIgZmxvdyBydWxlcyBjYW5ub3QgYmUgY3JlYXRlZCBl dmVyIGF0IGFsbCwgb3Igd2Ugc2F5DQo+ID4gPiAgICBpdCBpcyB1c2VyJ3MgcmVwb25zaWJpbGl0 eSB0byBtYWtlIHN1cmUgdGhpcyBkb2VzIG5vdCBoYXBwZW4uDQo+ID4gPg0KPiA+ID4gQ29uc2lk ZXJpbmcgdGhhdCBtb3N0IGNvbnRyb2wgb3BlcmF0aW9ucyBwZXJmb3JtZWQgYnkgRFBESyBhZmZl Y3QNCj4gPiA+IHRoZSBkZXZpY2UgcmVnYXJkbGVzcyBvZiBvdGhlciBhcHBsaWNhdGlvbnMsIEkg dGhpbmsgMSkgaXMgdGhlIG9ubHkNCj4gPiA+IGNhc2UgdGhhdCBzaG91bGQgYmUgZGVmaW5lZCwg b3RoZXJ3aXNlIDQpLCBkZWZpbmVkIGFzIHVzZXIncw0KPiByZXNwb25zaWJpbGl0eS4NCj4gDQo+ IE5vIG1vcmUgY29tbWVudHMgb24gdGhpcyBwYXJ0PyBXaGF0IGRvIHlvdSBzdWdnZXN0Pw0KW1N1 Z2VzaF0gSSBhZ3JlZSB3aXRoIHlvdXIgc3VnZ2VzdGlvbnMuIEkgZmVlbCB0aGlzIGlzIHRoZSBi ZXN0IHRoYXQgY2FuIG9mZmVyLg0KDQo+IA0KPiAtLQ0KPiBBZHJpZW4gTWF6YXJndWlsDQo+IDZX SU5EDQo=