From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by dpdk.org (Postfix) with ESMTP id 8103EC358 for ; Mon, 27 Apr 2015 15:40:04 +0200 (CEST) Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga103.fm.intel.com with ESMTP; 27 Apr 2015 06:40:00 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.11,657,1422950400"; d="scan'208";a="701536191" Received: from orsmsx109.amr.corp.intel.com ([10.22.240.7]) by fmsmga001.fm.intel.com with ESMTP; 27 Apr 2015 06:40:00 -0700 Received: from orsmsx151.amr.corp.intel.com (10.22.226.38) by ORSMSX109.amr.corp.intel.com (10.22.240.7) with Microsoft SMTP Server (TLS) id 14.3.224.2; Mon, 27 Apr 2015 06:39:59 -0700 Received: from fmsmsx107.amr.corp.intel.com (10.18.124.205) by ORSMSX151.amr.corp.intel.com (10.22.226.38) with Microsoft SMTP Server (TLS) id 14.3.224.2; Mon, 27 Apr 2015 06:39:59 -0700 Received: from fmsmsx113.amr.corp.intel.com ([169.254.13.26]) by fmsmsx107.amr.corp.intel.com ([169.254.6.205]) with mapi id 14.03.0224.002; Mon, 27 Apr 2015 06:39:59 -0700 From: "Wiles, Keith" To: Marc Sune , Neil Horman Thread-Topic: [dpdk-dev] Beyond DPDK 2.0 Thread-Index: AdB4KSdm1ftzhuzCQX2G2XNq9ZOWFAGdIAoAABSrQYAAAGfdAAApMFwA///YNYCAAkd+gP//6uAAgADdEwD//+vCgA== Date: Mon, 27 Apr 2015 13:39:59 +0000 Message-ID: References: <26FA93C7ED1EAA44AB77D62FBE1D27BA54D1A917@IRSMSX102.ger.corp.intel.com> <20150424175124.GA30624@mhcomputing.net> <553B9706.1060904@bisdn.de> <20150426215644.GA9021@neilslaptop.think-freely.org> <553E06D8.2060604@bisdn.de> In-Reply-To: <553E06D8.2060604@bisdn.de> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.252.204.210] Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 Cc: "dev@dpdk.org" Subject: Re: [dpdk-dev] Beyond DPDK 2.0 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, 27 Apr 2015 13:40:05 -0000 DQoNCk9uIDQvMjcvMTUsIDQ6NTIgQU0sICJNYXJjIFN1bmUiIDxtYXJjLnN1bmVAYmlzZG4uZGU+ IHdyb3RlOg0KDQo+DQo+DQo+T24gMjcvMDQvMTUgMDM6NDEsIFdpbGVzLCBLZWl0aCB3cm90ZToN Cj4+DQo+PiBPbiA0LzI2LzE1LCA0OjU2IFBNLCAiTmVpbCBIb3JtYW4iIDxuaG9ybWFuQHR1eGRy aXZlci5jb20+IHdyb3RlOg0KPj4NCj4+PiBPbiBTYXQsIEFwciAyNSwgMjAxNSBhdCAwNDowODoy M1BNICswMDAwLCBXaWxlcywgS2VpdGggd3JvdGU6DQo+Pj4+DQo+Pj4+IE9uIDQvMjUvMTUsIDg6 MzAgQU0sICJNYXJjIFN1bmUiIDxtYXJjLnN1bmVAYmlzZG4uZGU+IHdyb3RlOg0KPj4+Pg0KPj4+ Pj4NCj4+Pj4+IE9uIDI0LzA0LzE1IDE5OjUxLCBNYXR0aGV3IEhhbGwgd3JvdGU6DQo+Pj4+Pj4g T24gRnJpLCBBcHIgMjQsIDIwMTUgYXQgMTI6Mzk6NDdQTSAtMDUwMCwgSmF5IFJvbGV0dGUgd3Jv dGU6DQo+Pj4+Pj4+IEkgY2FuIHRlbGwgeW91IHRoYXQgaWYgRFBESyB3ZXJlIEdQTC1iYXNlZCwg bXkgY29tcGFueSB3b3VsZG4ndCBiZQ0KPj4+Pj4+PiB1c2luZw0KPj4+Pj4+PiBpdC4gSSBzdXNw ZWN0IHdlIHdvdWxkbid0IGJlIHRoZSBvbmx5IG9uZXMuLi4NCj4+Pj4+Pj4NCj4+Pj4+Pj4gSmF5 DQo+Pj4+Pj4gSSBjb3VsZCBzZWNvbmQgdGhpcywgZnJvbSB0aGUgcGFzdCBlbXBsb3llciB3aGVy ZSBJIHVzZWQgaXQuIFJpZ2h0DQo+Pj4+IG5vdw0KPj4+Pj4+IEkgYW0NCj4+Pj4+PiB1c2luZyBp dCBpbiBhbiBvcGVuIHNvdXJjZSBhcHAsIEkgaGF2ZSBhIGJpdCBvZiBHUEwgaGVyZSBhbmQgdGhl cmUNCj4+Pj4gYnV0DQo+Pj4+Pj4gSSdtDQo+Pj4+Pj4gdHJ5aW5nIHRvIGdldCByaWQgb2YgaXQg b3IgY29uZmluZSBpdCB0byBzZXBhcmF0ZSBhZGRyZXNzIHNwYWNlcywNCj4+Pj4gd2hlcmUNCj4+ Pj4+PiBpdA0KPj4+Pj4+IHdvbid0IGltcGFjdCB0aGUgY29yZSBjb2RlIHdyaXR0ZW4gYXJvdW5k IERQREssIGFzIEkgZG9uJ3Qgd2FudCB0bw0KPj4+PiBjYXVzZQ0KPj4+Pj4+IGhlYWRhY2hlcyBm b3IgYW55IGRvd25zdHJlYW0gdXNlcnMgSSBhdHRyYWN0IHNvbWVkYXkuDQo+Pj4+Pj4NCj4+Pj4+ PiBIYXJkLWNvcmUgR1BMIHdvdWxkIG5vdCBiZSBwb3NzaWJsZSBmb3IgbW9zdC4gTEdQTCBjb3Vs ZCBiZQ0KPj4+Pj4+cG9zc2libGUsDQo+Pj4+Pj4gYnV0IEkNCj4+Pj4+PiBkb24ndCB0aGluayBp dCBjb3VsZCBiZSB3b3J0aCB0aGUgcmVsaWNlbnNpbmcgaGVhZGFjaGUgZm9yIHRoYXQNCj4+Pj4+ PnNtYWxsDQo+Pj4+Pj4gY2hhbmdlLg0KPj4+Pj4+DQo+Pj4+Pj4gSW5zdGVhZCB3ZSBzaG91bGQg bWFrZSB0aGUgcGF0Y2ggcHJvY2VzcyBhcyBlYXN5IGFzIGh1bWFubHkgcG9zc2libGUNCj4+Pj4g c28NCj4+Pj4+PiBwZW9wbGUNCj4+Pj4+PiBhcmUgZW5jb3VyYWdlZCB0byBzZW5kIHVzIHRoZSBm aXhlcyBhbmQgbm90IGNhcnQgdGhlbSBhcm91bmQgdGhlaXINCj4+Pj4+PiBjb21wYW5pZXMNCj4+ Pj4+PiBjb25zdGFudGx5Lg0KPj4+PiArMSBhbmQgYmVzaWRlcyB0aGUgR1BMIG9yIExHUEwgc2hp cCBoYXMgc2FpbGVkIElNSE8gYW5kIHdlIGNhbiBub3QgZ28NCj4+Pj4gYmFjay4NCj4+PiBBY3R1 YWxseSwgSUFOQUwsIGJ1dCBJIHRoaW5rIHdlIGNhbi4gIFRoZSBCU0QgbGljZW5zZSBhbGxvd3Mg dXMgdG8gZm9yaw0KPj4+IGFuZA0KPj4+IHJlbGljZW5zZSB0aGUgY29kZSBJIHRoaW5rLCB1bmRl ciBHUEwgb3IgYW55IG90aGVyIGxpY2Vuc2UuICBJJ20gbm90DQo+Pj4gYWR2b2NhdGluZw0KPj4+ IGZvciB0aGF0IG1pbmQgeW91LCBqdXN0IHN1Z2dlc3RpbmcgdGhhdCBpdHMgcG9zc2libGUgc2hv dWxkIGl0IGV2ZXINCj4+PmJlY29tZQ0KPj4+IG5lZWRlZC4NCj4+Pg0KPj4+Pj4gSSBhZ3JlZS4g TXkgZmVlbGluZyBpcyB0aGF0IGFzIHRoZSBudW1iZXIgb2YgcGF0Y2hlcyBpbiB0aGUgbWFpbGlu Zw0KPj4+PiBsaXN0DQo+Pj4+PiBncm93cywga2VlcGluZyB0cmFjayBvZiB0aGVtIGdldHMgbW9y ZSBhbmQgbW9yZSBjb21wbGljYXRlZC4NCj4+Pj4+UGF0Y2h3b3JrDQo+Pj4+PiB3ZWJzaXRlIHdh cyBhIHdheSB0byB0cnkgdG8gYWRkcmVzcyB0aGlzIGlzc3VlLiBJIHRoaW5rIGl0IHdhcyBhbg0K Pj4+Pj4gaW1wcm92ZW1lbnQsIGJ1dCB0byBiZSBob25lc3QsIHBhdGNod29yayBsYWNrcyBhIGxv dCBvZg0KPj4+Pj5mdW5jdGlvbmFsaXR5LA0KPj4+Pj4gc3VjaCBhcyBwcm9wZXJseSB0cmFja2lu ZyBtdWx0aXBsZSB2ZXJzaW9ucyBvZiB0aGUgcGF0Y2ggKHN1cGVyc2VkaW5nDQo+Pj4+PiB0aGVt IGF1dG9tYXRpY2FsbHkpLCBhbmQgaXQgbGFja3Mgc29tZSBmaWx0ZXJpbmcgY2FwYWJpbGl0aWVz IGUuZy4NCj4+Pj4+cGVyDQo+Pj4+PiB1c2VyLCBwZXIgdGFnL2xhYmVsIG9yIGxpYnJhcnksIGF1 dG9tYXRpY2FsbHkgdHJhY2sgaWYgaXQgaGFzIGJlZW4NCj4+Pj4+IG1lcmdlZCwgZ2l2ZSBhbiBv dmVyYWxsIHN0YXR1cyBvZiB0aGUgcGVuZGluZyB2cyBtZXJnZWQgcGF0Y2hlcywgc2V0DQo+Pj4+ PiBtaWxlc3RvbmVzLi4uIElzIHRoZXJlIGFueSBhbHRlcm5hdGl2ZSB0b29sIG9yIGltcHJvdmVk IHZlcnNpb24gZm9yDQo+Pj4+IHRoYXQ/DQo+Pj4+DQo+Pj4gQWdyZWVkLCB0aGlzIGhhcyBjb21l IHVwIGJlZm9yZSwgb2ZmIGxpc3QgdW5mb3J0dW5hdGVseS4gIFRoZSB2b2x1bWUgb2YNCj4+PiBw YXRjaGVzDQo+Pj4gc2VlbXMgdG8gYmUgaW5jcmVhc2luZyBhdCBzdWNoIGEgcmF0ZSB0aGF0IGEg c2luZ2xlIG1haW50YWluZXIgaGFzDQo+Pj4gZGlmZmljdWx0eQ0KPj4+IGtlZXBpbmcgdXAuICBJ IHByb3Bvc2VkIHRoYXQgdGhlIHdvcmtsb2FkIGJlIHNwbGl0IG91dCB0byBtdWx0aXBsZQ0KPj4+ IHN1YnRyZWVzLA0KPj4+IHdpdGggcHJlZml4ZXMgYmVpbmcgYWRkZWQgdG8gcGF0Y2ggc3ViamVj dHMgb24gdGhlIGxpc3QgZm9yIGxvY2FsDQo+Pj4gZmlsdGVyaW5nIHRvDQo+Pj4gc3RlbSB0aGUg dGlkZS4gIFNwZWNpZmljYWxseSBJIGhhZCBwcm9wb3NlZCB0aGF0IHRoZSBQTUQncyBiZSBzcGxp dA0KPj4+aW50byBhDQo+Pj4gc2VwYXJhdGUgc3VidHJlZSwgYnV0IHRoYXQgcmVjZWl2ZWQgcHVz aGJhY2sgaW4gZmF2b3Igb2YgaGF2aW5nIGVhY2gNCj4+PiBsaWJyYXJ5DQo+Pj4gaGF2aW5nIGl0 cyBvd24gc2VwYXJhdGUgc3VidHJlZSwgd2l0aCBhIHBpbG90IHByb2dyYW0gYmVpbmcgbWFkZSBv dXQgb2YNCj4+PiB0aGUgSTQwZQ0KPj4+IGRyaXZlciAod2hpY2ggeW91IG1pZ2h0IG5vdGUgc2Vu ZHMgcHVsbCByZXF1ZXN0cyB0byB0aGUgbGlzdCBub3cpLiAgSSdkDQo+Pj4gc3RpbGwNCj4+PiBs aWtlIHRvIHNlZSBhbGwgUE1EJ3MgY29tZSB1bmRlciBhIHNpbmdsZSBzdWJ0cmVlLCBidXQgdGhh dHMgbGlrZWx5IGFuDQo+Pj4gYXJndW1lbnQNCj4+PiBmb3IgbGF0ZXIuDQo+Pj4NCj4+PiBUaGF0 IHNhaWQsIERvIHlvdSB0aGluayB0aGF0IHRoaXMgcGF0Y2ggbGF0ZW5jeSBpcyByZWFsbHkgYSBj b250cmlidXRvcg0KPj4+IHRvIGxvdw0KPj4+IHByb2plY3QgcGFydGljaXBhdGlvbj8gIEl0IGRl ZmluYXRlbHkgYSBwcm9ibGVtLCBidXQgaXQgc2VlbXMgdG8gbWUNCj4+PnRoYXQNCj4+PiB0aGlz DQo+Pj4gc29ydCBvZiBpc3N1ZSB3b3VsZCBsZWFkIHRvIHBlb3BsZSB0cnlpbmcgdG8gcGFyY2l0 aXBhdGUsIHRoZW4gZ2l2aW5nDQo+Pj51cA0KPj4+IChpLmUuDQo+Pj4gd2Ugd291bGQgc2VlIDEt MiBlbWFpbHMgZnJvbSBhbiBpbmRpdmlkdWFsLCB0aGVuIG5vdCBzZWUgdGhlbSBhZ2FpbikuDQo+ Pj4gSSdkIG5lZWQNCj4+PiB0byBsb29rIHRocm91Z2ggdGhlIG1haWxpbmcgbGlzdCBmb3Igc3Vj aCBhIHBhdHRlcm4sIGJ1dCBhbmVjZG90YWxseQ0KPj4+SSd2ZQ0KPj4+IG5vdA0KPj4+IHNlZW4g dGhhdCBoYXBwZW4uICBUaGUgcHJvYmxlbSB5b3UgZGVzY3JpYmUgYWJvdmUgaXMgZGVmaW5hdGVs eSBhDQo+Pj4gcHJvYmxlbSwgYnV0DQo+Pj4gaXRzIG9uZSBmb3IgdGhvc2UgaW5kaXZpZHVhbHMg d2hvIGFyZSBwYXJ0aWNpcGF0aW5nLCBub3QgZm9yIHRob3NlIHdobw0KPj4+YXJlDQo+Pj4gc2lt cGx5IGNob29zaW5nIG5vdCB0by4gIEFuZCBJIHRoaW5rIHdlIG5lZWQgdG8gYWRkcmVzcyBib3Ro Lg0KPj4+DQo+Pj4+IEkgYWdyZWUgcGF0Y2h3b3JrIGhhcyBzb21lIGxpbWl0YXRpb24sIGJ1dCBJ IHRoaW5rIHRoZSBiaWdnZXN0IGlzc3VlDQo+Pj4+aXMNCj4+Pj4ga2VlcGluZyB1cCB3aXRoIHRo ZSBwYXRjaGVzLiBHZXR0aW5nIHBhdGNoZXMgaW50cm9kdWNlZCBpbnRvIHRoZSBtYWluDQo+Pj4+ IGxpbmUNCj4+Pj4gaXMgdmVyeSBzbG93LiBBIHBhdGNoIHN1Ym1pdHRlZCB0b2RheSBtYXkgbm90 IGdldCBhcHBsaWVkIGZvciB3ZWVrcyBvcg0KPj4+PiBtb250aHMsIHRoZW4gd2hlbiBhbm90aGVy IHBlcnNvbiBzdWJtaXRzIGEgcGF0Y2ggaGUgaXMgc3RhcnRpbmcgdG8NCj4+Pj5ydW4gYQ0KPj4+ PiB2ZXJ5IGhpZ2ggcmlzayBvZiBoYXZpbmcgdG8gcmVkbyB0aGF0IHBhdGNoLCBiZWNhdXNlIGEg cGVydmlvdXMgcGF0Y2gNCj4+Pj4gbWFrZXMgaGlzIGZhaWwgd2Vla3MvbW9udGhzIGxhdGVyLiBJ IHdvdWxkIGxvdmUgdG8gc2VlIGEgYmV0dGVyIHRvb2wNCj4+Pj4gdGhlbg0KPj4+PiBwYXRjaHdv cmssIGJ1dCB0aGUgYmlnZ2VzdCBpc3N1ZSBpcyB3ZSBoYXZlIGEgaHVnZSBiYWNrbG9nIG9mIHBh dGNoZXMuDQo+Pj4+IFBlcnNvbmFsbHkgSSBhbSBub3Qgc3VyZSBob3cgVGhvbWFzIG9yIGFueSBp cyBhYmxlIHRvIGtlZXAgdXAgd2l0aCB0aGUNCj4+Pj4gcGF0Y2hlcy4NCj4+Pj4NCj4+PiBUaGlz IGlzIGFic29sdXRlbHkgYSBwcm9ibGVtLiAgSSdkIGxpa2UgdG8gdGhpbmssIG1vcmUgdGhhbiBh IHRvb2wgbGlrZQ0KPj4+IHBhdGNod29yaywgYSBzdWJ0cmVlIG9yZ2FuaXphdGlvbiB0byBhbGxv dyBzb21lIG1vZGljdW0gb2YgcGFyYWxsZWwNCj4+PiByZXZpZXcgYW5kDQo+Pj4gaW50ZWdyYXRp b24gd291bGQgcmVhbGx5IGJlIGEgYmVuZWZpdCBoZXJlLg0KPj4gU3VidHJlZXMgY291bGQgd29y aywgYnV0IHRoZSByZWFsIHByb2JsZW0gSSB0aGluayBpcyB0aGUgbnVtYmVyIG9mDQo+PiBjb21t aXR0ZXJzIG11c3QgYmUgaGlnaGVyIHRoZW4gb25lLiBTb21ldGhpbmcgbGlrZSBHaXRIdWIgKGFu ZCBJIGFzc3VtZQ0KPj4gTGludXggRm91bmRhdGlvbikgaGF2ZSBhIG1ldGhvZCB0byBhZGQgY29t bWl0dGVycyB0byBhIHByb2plY3QuIEluIHRoZQ0KPj4gY2FzZSBvZiBHaXRIdWIgdGhleSBqdXN0 IGhhdmUgdG8gaGF2ZSBhIGZyZWUgR2l0SHViIGFjY291bnQgYW5kIHRoZXkgY2FuDQo+PiBiZWNv bWUgY29tbWl0dGVycyBvZiB0aGUgcHJvamVjdCBidXlpbmcgdGhlIG93bmVyIG9mIHRoZSBwcm9q ZWN0IGVuYWJsZXMNCj4+IHRoZW0uDQo+Pg0KPj4gT24gR2l0SHViIHRoZXkgaGF2ZSBwZXJzb25h bCBhY2NvdW50cyBhbmQgb3JnYW5pemF0aW9uIGFjY291bnRzIEkga25vdw0KPj4gb25seSBhYm91 dCB0aGUgcGVyc29uYWwgYWNjb3VudHMsIGJ1dCB0aGV5IGFsbG93IGZvciA1IHByaXZhdGUgcmVw b3MgYW5kDQo+PiBhbnkgbnVtYmVyIG9mIHB1YmxpYyByZXBvcy4gVGhlIG9yZ2FuaXphdGlvbiBh Y2NvdW50IGhhcyBhIGxvdCBvZiBleHRyYQ0KPj4gZmVhdHVyZXMgdGhhdCBzZWVtIGJldHRlciBm b3IgYSBEUERLIGNvbW11bml0eSBJTU8gYW5kIHNob3VsZCBiZSB0aGUgb25lDQo+PiB3ZSB1c2Ug aWYgd2UgZGVjaWRlIGl0IGlzIHRoZSByaWdodCBkaXJlY3Rpb24uIFdlIGNhbiBhbHdheXMgZ2l2 ZSBpdCBhDQo+PiBzaG90IGZvciB3aGlsZSBhbmQga2VlcCB0aGUgZHBkay5vcmcgYW5kIHVzZSBk ZXZAZHBkay5vcmcgYW5kIGl0cyByZXBvDQo+PiBtaXJyb3JlZCBmcm9tIEdpdEh1YiBhcyBhIHRy YW5zaXRpb24gcGhhc2UuIFRoaXMgd2F5IHdlIGNhbiBmYWxsIGJhY2sgdG8NCj4+IGRwZGsub3Jn IG9yIG1vdmUgb25lIHRvIHNvbWV0aGluZyBlbHNlIGlmIHdlIGxpa2UuDQo+Pg0KPj4gaHR0cHM6 Ly9oZWxwLmdpdGh1Yi5jb20vY2F0ZWdvcmllcy9vcmdhbml6YXRpb25zLw0KPj4NCj4+IFRoZSBk ZXZlbG9wZXJzIGNvdWxkIHN0aWxsIHNlbmQgcGF0Y2hlcyB2aWEgZW1haWwgbGlzdCwgYnV0IGNy ZWF0aW5nIGENCj4+IHJlcG8gYW5kIGZvcmtpbmcgZHBkayBpcyBlYXN5LCB0aGVuIHNlbmQgYSBw dWxsIHJlcXVlc3QuDQo+DQo+Rm9yIHRoZSBnaXRodWIgImNvbW11bml0eSIgb3IgZnJlZSBzZXJ2 aWNlLCBvcmdhbml6YXRpb24gYWNjb3VudHMganVzdA0KPmFsbG93IHlvdSB0byBzZXQgdGVhbXMs IHdoZXJlIGVhY2ggdGltZSBjYW4gYmUgYXNzaWduZWQgdG8gb25lIG9yIG1vcmUNCj5yZXBvc2l0 b3JpZXMuIFRoZSBkaWZmZXJlbmNlcyBhcmUgc3VtbWFyaXplZCBoZXJlOg0KPg0KPmh0dHBzOi8v aGVscC5naXRodWIuY29tL2FydGljbGVzL3doYXQtcy10aGUtZGlmZmVyZW5jZS1iZXR3ZWVuLXVz ZXItYW5kLW9yDQo+Z2FuaXphdGlvbi1hY2NvdW50cy8NCj4NCj5BbmQgdGhlIHBlcm1pc3Npb24g c2NoZW1hLCBwZXIgdGVhbSwgaXMgc3VtbWFyaXplZCBoZXJlOg0KPg0KPmh0dHBzOi8vaGVscC5n aXRodWIuY29tL2FydGljbGVzL3Blcm1pc3Npb24tbGV2ZWxzLWZvci1hbi1vcmdhbml6YXRpb24t cmVwDQo+b3NpdG9yeS8NCj4NCj5Tb21lIGxpbWl0YXRpb25zOiBpKSBvbmx5IGlmIHRoZSB0ZWFt IGhhcyB3cml0ZSBwZXJtaXNzaW9ucyAoSU9XIHB1c2gNCj5wZXJtaXNzaW9ucykgeW91IGNhbiBt YW5hZ2UgaXNzdWVzIGlpKSB0aGVyZSBjYW5ub3QgYmUgcGVyLWJyYW5jaCBBQ0xzLg0KDQpJIHdh cyBhc3N1bWluZyB0aGUgb3JnYW5pemF0aW9uIEdpdEh1YiBpcyBqdXN0IHRvIGFsbG93IG1vcmUg dGhlbiBvbmUNCmFkbWluL21haW50YWluZXJzIGFsb25nIHdpdGggdGVhbXMgaWYgbmVlZGVkLiBJ IHdvdWxkIGFzc3VtZSB0aGUgcmVwb3MgYXJlDQpzdGlsbCBwdWJsaWMgYW5kIG90aGVycyBhcmUg YWxsb3dlZCB0byBmb3JrIG9yIHB1bGwgdGhlIHJlcG9zLiBJIHRoaW5rIG9mDQp0aGUgb3JnIHZl cnNpb24gaXMganVzdCBleHRyYSBjb250cm9scyBvbiB0b3Agb2YgYSBwZXJzb25hbCByZXBvIGxp a2UNCmRlc2lnbi4gVGhlIG9yZy9wZXJzb25hbCBvbmUgc2hvdWxkIGFwcGVhciB0byB0aGUNCm5v bi1tYWludGFpbmVycy9hZG1pbnMvb3duZXIgYXMgYSBub3JtYWwgcmVwbyBvbiBHaXRIdWIsIGNv cnJlY3Q/DQoNClRoZSBHaXRIdWIgb3JnYW5pemF0aW9uIGlzIGJ1aWx0IGZvciBvcGVuLXNvdXJj ZSBhbmQgeW91IGNhbiBzdGlsbCBoYXZlDQpwcml2YXRlIHJlcG9zLCBidXQgdGhlbiB5b3Ugc3Rh cnQgdG8gaGF2ZSBhIGNvc3QgZGVwZW5kaW5nIG9uIHRoZSBudW1iZXINCm9mIHByaXZhdGUgcmVw b3MgeW91IHdhbnQuIElmIHlvdSBkbyBub3QgaGF2ZSBhIGxvdCBvZiBwcml2YXRlIHJlcG9zIHRo ZW4NCnlvdSBzaG91bGQgaGF2ZSBubyBjb3N0IChJIHRoaW5rKS4gSSBkbyBub3Qgc2VlIGFueSBy ZWFzb24gZm9yIHByaXZhdGUNCnJlcG9zLCBidXQgSSBndWVzdCB3ZSBjb3VsZCBoYXZlIHNvbWUg YW5kIHdlIGdldCA1IGZyZWUgYW5kIDEwIGlzICQyNSBwZXINCm1vbnRoLg0KPg0KPj4NCj4+DQo+ Pj4+IFRoZSBvdGhlciBwcm9ibGVtIEkgc2VlIGlzIGhvdyBwYXRjaGVzIGFyZSBhZ3JlZWQgb24g dG8gYmUgaW5jbHVkZWQgaW4NCj4+Pj4gdGhlDQo+Pj4+IG1haW5saW5lLiBUb2RheSBpdCBpcyBq dXN0IGFuIEFDSyBvciBhIE5BSyBvbiB0aGUgbWFpbGluZyBsaXN0LiBUaGVuIEkNCj4+Pj4gc2Vl DQo+Pj4+IHdoYXQgSSB0aGluayB0byBiZSBvbmx5IGEgZmV3IHBlb3BsZSBBQ0tpbmcgb3IgTkFL aW5nIHBhdGNoZXMuIFRoaXMNCj4+Pj4gcHJvY2VzcyBoYXMgYSBsb3Qgb2YgcHJvYmxlbXMgZnJv bSBhIHBhdGNoIGJlaW5nIGlnbm9yZSBmb3Igc29tZQ0KPj4+PnJlYXNvbg0KPj4+PiBvcg0KPj4+ PiBzb21lb25lIGhhdmluZyBuZWdhdGl2ZSBmZWVkIGJhY2sgb24gdmVyeSBtaW5vciBkZXRhaWwg b3Igbm8gd2F5IHRvDQo+Pj4+IHB1c2ggYQ0KPj4+PiBwYXRjaCBmb3J3YXJkIGEgc2luZ2xlIE5B SyBvciBjb21tZW50Lg0KPj4+Pg0KPj4+IFNvLCB0aGlzIGlzIGFuIGludGVyZXN0aW5nIGlzc3Vl IGluIGlkZWFsIG1lcml0b2NyYWNpZXMuICBDdXJyZW50bHkNCj4+PiBpcy9zaG91bGQgYmUNCj4+ PiBsb29raW5nIGZvciBBQ0tzL05BSy9zIGZyb20gdGhlIGluZGl2aWR1YWxzIGxpc3RlZCBpbiB0 aGUgTUFJTlRBSU5FUg0KPj4+IGZpbGVzLCBhbmQNCj4+PiB0aG9zZSBwZW9wbGUgc2hvdWxkIGJl IHRoZSBkZWZpbml0aXZlIHN1YmplY3QgbWF0dGVyIGV4cGVydHMgb24gdGhlDQo+Pj5jb2RlDQo+ Pj4gdGhleQ0KPj4+IGNvdmVyLiAgQXMgc3VjaCwgSSB3b3VsZCBhZ3J1ZSB0aGF0IHRoZXkgc2hv dWxkIGJlIGVudGl0bGVkIHRvIGENCj4+Pm1vZGljdW0NCj4+PiBvZg0KPj4+IHN0eWxpc3RpYy90 cml2aWFsIGxlZXdheS4gIFRoYXQgaXMgdG8gc2F5LCBpZiB0aGV5IGNob29zZSB0byBibG9jayBh DQo+Pj5wYXRjaA0KPj4+IGFyb3VuZCBhIHZlcnkgbWlub3IgZGV0YWlsLCB0aGVuIGJldHdlZW4g dGhlbSBjaGFuZ2luZyB0aGVpciBwb3NpdGlvbiwNCj4+PiBhbmQgdGhlDQo+Pj4gcGF0Y2ggYXV0 aG9yIGNoYW5naW5nIHRoZSBjb2RlLCB0aGUgbGF0dGVyIGlzIGxpa2VseSB0aGUgZWFzaWVyIGNv dXJzZQ0KPj4+b2YNCj4+PiBhY3Rpb24sIGVzcGVjaWFsbHkgaWYgdGhlIGF1dGhvciBjYW4ndCBt YWtlIGFuIGFyZ3VtZW50IGZvciB0aGVpcg0KPj4+IHBvc2l0aW9uLg0KPj4+IFRoYXQgc2FpZCwg aWYgc3VjaCBwYXRjaCBibG9ja2FnZSBiZWNvbWVzIHNvIGVncmVnaW91cyB0aGF0IGluZGl2aWR1 YWxzDQo+Pj4gc3RvcA0KPj4+IGNvbnRyaWJ1dGluZywgdGhhdCBuZWVkcyB0byBiZSBrbm93biBh cyB3ZWxsLiAgSWYgeW91IGFzIGEgcGF0Y2gNCj4+PmF1dGhvcjoNCj4+Pg0KPj4+IDEpIEhhdmUg dHJpZWQgdG8gc3VibWl0IHBhdGNoZXMNCj4+PiAyKSBIYWQgdGhlbSBibG9ja2VkIGZvciB3aGF0 IHlvdSBjb25zaWRlciB0cml2aWFsIHJlYXNvbnMNCj4+PiAzKSBQbGFuIHRvIG5vdCBjb250cmli dXRlIGZ1cnRoZXIgYmVjYXVzZSBvZiB0aGlzDQo+Pj4gNCkgU3RpbGwgcmVseSBvbiB0aGUgRFBE SyBmb3IgeW91ciBwcm9kdWN0DQo+Pj4NCj4+PiBQbGVhc2UsIHNheSBzb21ldGhpbmcuICBQZW9w bGUgaW4gY2hhcmdlIG5lZWQgdG8ga25vdyB3aGVuIHRoZXkncmUNCj4+PnB1c2hpbmcNCj4+PiBj b250cmlidXRvcnMgYXdheS4NCj4+Pg0KPj4+IEZXSVcsIEkndmUgdHJpZWQgdG8gZG8gc29tZSBj b3JyZWxhdGlvbiBiZXR3ZWVuIHRoZSBnaXQgaGlzdG9yeSBhbmQgdGhlDQo+Pj4gbWFpbGluZw0K Pj4+IGxpc3QuICBJIG5lZWQgdG8gZG8gbW9yZSBzZWFyY2hlcywgYnV0IEkgaGF2ZSBhIGZlZWxp bmcgdGhhdCBlYXJseSBvbiwNCj4+PnRoZQ0KPj4+IG1ham9yaXR5IG9mIHBlb3BsZSB3aG8gc3Rv cHBlZCBjb250cmlidXRpbmcsIGRpZCBzbyBiZWNhdXNlIHRoZWlyDQo+Pj5wYXRjaGVzDQo+Pj4g d2VyZW4ndCBleHByZXNzZWx5IGJsb2NrZWQsIGJ1dCByYXRoZXIgYmVjYXVzZSB0aGV5IHdlcmUg c2ltcGx5DQo+Pj5pZ25vcmVkLg0KPj4+IE5vIG9uZQ0KPj4+IHdvcmtpbmcgb24gRFBESyBib3Ro ZXJlZCB0byByZXZpZXcgdGhvc2UgcGF0Y2hlcywgYW5kIHNvIHRoZXkgbmV2ZXIgZ290DQo+Pj4g bWVyZ2VkLg0KPj4+IEhvcGVmdWxseSB0aGF0IHByb2JsZW0gaGFzIGJlZW4gYWRkcmVzc2VkIHNv bWV3aGF0IG5vdy4NCj5JIGFncmVlIDEwMCUNCj4+Pg0KPj4+PiBJIHdvdWxkIGxpa2UgdG8gc2Vl IHNvbWUgdHlwZSBvZiBsYXllcmluZyBwcm9jZXNzIHRvIGFsbG93IHBhdGNoZXMgdG8NCj4+Pj5i ZQ0KPj4+PiBhcHBsaWVkIGluIGEgdGltZWx5IG1hbm5lciBhIGZldyB3ZWVrcyBub3QgbW9udGhz IG9yIGNvbXBsZXRlbHkNCj4+Pj5pZ25vcmVkLg0KPj4+PiBNYXliZSBzb21lIHR5cGUgb2Ygdm90 aW5nIGlzIHJlYXNvbmFibGUsIGJ1dCB3ZSBuZWVkIHRvIGRvIHNvbWV0aGluZw0KPj4+PnRvDQo+ Pj4+IHR1cm4gYXJvdW5kIHRoZSBwYXRjaGVzIGluIGNsZWFuIHJlYXNvbmFibGUgbWFubmVyLg0K Pj4+Pg0KPj4+PiBUaGluayB3ZSBuZWVkIHNvbWUgdHlwZSBvZiBncm91cCBtZWV0aW5nIGV2ZXJ5 IHdlZWsgdG8gbG9vayBhdCB0aGUNCj4+Pj4gcGF0Y2hlcw0KPj4+PiBhbmQgZGV0ZXJtaW5pbmcg d2hpY2ggb25lcyBnZXQgYXBwbGllZCwgdGhpcyBnaXZlcyBxdWljayBmZWVkYmFjayB0bw0KPj4+ PnRoZQ0KPj4+PiBzdWJtaXR0ZXIgYXMgdG8gdGhlIHN0YXR1cyBvZiB0aGUgcGF0Y2guDQo+Pj4+ DQo+Pj4gSSB0aGluayBhIGdyb3VwIG1lZXRpbmcgaXMgZ29pbmcgdG8gYmUgd2F5IHRvbyBtdWNo IG92ZXJoZWFkIHRvIG1hbmFnZQ0KPj4+IHByb3Blcmx5Lg0KPj4+IFlvdSdsbCBnZXQgZGlmZmVy ZW50IHBlb3BsZSBldmVyeSB3ZWVrIHdpdGggYWdlbmRhIHRoYXQgbWF5IG5vdCBsaW5lIHVwDQo+ Pj4gd2l0aA0KPj4+IGNvZGUgcXVhbGl0eSwgd2hpY2ggaXMgcmVhbGx5IHdoYXQgdGhlIHJldmll dyBpcyBtZWFudCB0byBwcm92aWRlLiAgSQ0KPj4+IHRoaW5rDQo+PiBJIHdhcyBvbmx5IHN1Z2dl c3RpbmcgdGhlIG1haW50YWluZXJzIGF0dGVuZCB0aGUgbWVldGluZy4gT2YgY291cnNlIHRoZXkN Cj4+IGhhdmUgdG8gYXR0ZW5kIG9yIGhhdmUgc29tZW9uZSBhdHRlbmQgZm9yIHRoZW0sIGp1c3Qg dG8gZ2V0IHRoZSB2b3RpbmcNCj4+IGRvbmUuIElmIHlvdSBkbyBub3QgYXR0ZW5kIHRoZW4geW91 IGRvIG5vdCBnZXQgdG8gdm90ZSBvciBzb21ldGhpbmcgbGlrZQ0KPj4gdGhhdCBpcyByZWFzb25h YmxlLiBOb3QgdGhhdCB3ZSBzaG91bGQgdHJ5IGFuZCBkZWZpbmUgdGhlIHByb2Nlc3MgaGVyZS4N Cj4+DQo+Pj4gcGVyaGFwcyBhIGJldHRlciBhcHByb2FjaCB3b3VsZCBiZSB0byByZXF1aXJlIHRo YXQgdGhhdCBjb2RlIG93bmVycw0KPj4+ZnJvbQ0KPj4+IHRoZQ0KPj4+IG1haW50YWluZXIgZmls ZSBwcm92aWRlIGFuZCBBQ0svTkFLIG9uIHRoZWlyIHBhdGNoZXMgd2l0aGluIDMtNCBkYXlzLA0K Pj4+YW5kDQo+Pj4gcmVxdWlyZSBhIGNvcnJlc3BvbmRpbmcgdHJlZSBtYWludGFpbmVyIHRvIGFw cGx5IHRoZSBwYXRjaCB3aXRoaW4gNyBvcg0KPj4+IHNvLiAgVGhhdA0KPj4+IHdvdWxkIGNhcCBv dXIgcGF0Y2ggbGF0ZW5jeS4gIExpa2V3aXNlLCBpZiBhIHBhdGNoIHNsaXBzIGluIGNyZWF0aW5n IGENCj4+PiByZWdyZXNzaW9uLCB0aGUgYXV0aG9yIG5lZWRzIHRvIGJlIGFsZXJ0ZWQgYW5kIGdp dmVuIGEgdGltZSB3aW5kb3cgaW4NCj4+PiB3aGljaCB0bw0KPj4+IGZpeCB0aGUgcHJvYmxlbSBi ZWZvcmUgdGhlIG9mZmVuZGluZyBwYXRjaCBpcyByZXZlcnRlZCBkdXJpbmcgdGhlIFFFDQo+Pj4g Y3ljbGUuDQo+Pj4NCj4+Pg0KPj4+Pj4gT24gdGhlIG90aGVyIHNpZGUsIHNpbmNlIHVzZXIgcXVl c3Rpb25zLCBjb21tdW5pdHkgZGlzY3Vzc2lvbnMgYW5kDQo+Pj4+PiBkZXZlbG9wbWVudCBoYXBw ZW5zIGluIHRoZSBzYW1lIG1haWxpbmcgbGlzdCwgdGhpbmdzIGdldCByZWFsbHkNCj4+Pj4+IGNv bXBsaWNhdGVkLCBzcGVjaWFsbHkgZm9yIHVzZXJzIHNlZWtpbmcgZm9yIGhlbHAuIEV2ZW4gdGhv dWdoIEkNCj4+Pj4+dGhpbmsNCj4+Pj4+IHRoZSBhdmVyYWdlIHNraWxscyBvZiB0aGUgdXNlcnMg b2YgRFBESyBpcyBnZW5lcmFsbHkgaGlnaGVyIHRoYW4gaW4NCj4+Pj4+IG90aGVyIHNvZnR3YXJl IHByb2plY3RzLCBpZiBEUERLIHdhbnRzIHRvIGF0dHJhY3QgbW9yZSB1c2VycywgaGF2aW5nDQo+ Pj4+PmENCj4+Pj4+IGJldHRlciB1c2VyIHN1cHBvcnQgaXMga2V5LCBJTUhPLg0KPj4+Pj4NCj4+ Pj4+IFNvIEkgd291bGQgc2VlIHdpdGggZ29vZCBleWVzIGEgc2VwYXJhdGlvbiBiZXR3ZWVuLCBh dCBsZWFzdCwNCj4+Pj4+ZHBkay11c2VyDQo+Pj4+PiBhbmQgZHBkay1kZXYuDQo+Pj4gSSB3b3Vs ZG4ndCBhcmd1ZSB3aXRoIHRoaXMgc2VwYXJhdGlvbiwgc2VlbXMgbGlrZSBhIHJlYXNvbmFibGUN Cj4+PmFwcHJvYWNoLg0KPj4+DQo+Pj4+IEkgZG8gbm90IHJlbWVtYmVyIHNlZWluZyB0b28gbWFu eSB1c2VycyBvbiB0aGUgbGlzdCBhbmQgbWFraW5nIGEgbGlzdA0KPj4+PiBqdXN0DQo+Pj4+IGZv ciB0aGVuIGlzIE9LIGlmIGV2ZXJ5b25lIGlzIGZpbmUgd2l0aCBhIGxpc3QgdGhhdCBoYXMgdmVy eSBmZXcNCj4+Pj5lbWFpbHMuDQo+Pj4+PiBJZiB0aGUgbnVtYmVyIG9mIHBhdGNoZXMga2VlcHMg Z3Jvd2luZywgc3BsaXR0aW5nIHRoZSAiZGV2IiBtYWlsaW5nDQo+Pj4+PiBsaXN0cyBpbnRvIGRp ZmZlcmVudCBjYXRlZ29yaWVzIChlYWwgYW5kIGNvbW1vbiwgcG1kcywgaGlnaGVyIGxldmVsDQo+ Pj4+PiBhYnN0cmFjdGlvbnMuLi4pIGNvdWxkIGJlIGFuIG9wdGlvbi4gSG93ZXZlciwgdGhpcyBs YXN0IHBvaW50IG9wZW5zIGENCj4+Pj4+IGxvdCBvZiBxdWVzdGlvbnMgb24gaG93IHRvIG1pbmlt aXplIGludGVyZmVyZW5jZSBiZXR3ZWVuIHRoZQ0KPj4+Pj5kaWZmZXJlbnQNCj4+Pj4+IHBhcnRz IGFuZCBBUEkvQUJJIGNvbXBhdGliaWxpdHkgZHVyaW5nIHRoZSBkZXZlbG9wbWVudC4NCj4+Pj4g SSBiZWxpZXZlIGlmIHdlIGp1c3QgbWFrZSBzdXJlIHdlIHVzZSB0YWdzIGluIHRoZSBzdWJqZWN0 IGxpbmUgdGhlbiB3ZQ0KPj4+PiBjYW4NCj4+Pj4gaGF2ZSBvdXIgZW1haWwgY2xpZW50cyBkbyB0 aGUgc3BsaXR0aW5nIG9mIHRoZSBlbWFpbHMgaW5zdGVhZCBvZg0KPj4+PmFkZGluZw0KPj4+PiBt b3JlIGVtYWlscyBsaXN0cy4NCj4+Pj4NCj4+PiBBZ3JlZWQNCj4NCj5JIHRoaW5rIGl0IGlzIGEg Z29vZCBpZGVhIHRvby4gTWF5YmUgd2UgY2FuIHN0YW5kYXJkaXplIHNvbWUgZm9ybWF0IGUuZy4N Cj5bVEFHXVtQQVRDSCB2WF0sIG9yIHNvbWV0aGluZyBsaWtlIHRoYXQuDQo+DQo+Pj4NCj4+Pj4+ PiBQZXJoYXBzIGl0IG1lYW5zIGhhdmluZyBzb21lIFJldmlld0JvYXJkIHR5cGUgb2YgdG9vbHMs IGEgY2xvbmUgaW4NCj4+Pj4+PiBHaXRodWIgb3INCj4+Pj4+PiBCaXRidWNrZXQgd2hlcmUgdGhl IGxlc3MgaGFyZGNvcmUga2VybmVsLXdvcmtmbG93IHR5cGVzIGNvdWxkIHNlbmQNCj4+Pj4gYmFj aw0KPj4+Pj4+IHRoZWlyDQo+Pj4+Pj4gc21hbGwgYnVnIGZpeGVzIGEgYml0IG1vcmUgZWFzaWx5 LCB0aGlzIGtpbmQgb2Ygc3R1ZmYuIEdvb2dsZSBoYXMNCj4+Pj4gYmVlbg0KPj4+Pj4+IGdldHRp bmcNCj4+Pj4+PiBnb29kIHVwdGFrZSBzaW5jZSB0aGV5IG1vdmVkIG1vc3Qgb2YgdGhlaXIgb3Bl biBzb3VyY2UgYWNyb3NzIHRvDQo+Pj4+IEdpdGh1YiwNCj4+Pj4+PiBiZWNhdXNlIHRoZSBjb250 cmlidXRpb24gd29ya2Zsb3cgd2FzIG1vcmUgY29udmVuaWVudCB0aGFuIEdvb2dsZQ0KPj4+PiBD b2RlDQo+Pj4+Pj4gd2FzLg0KPj4+PiBJIGxpa2UgR2l0SHViIGl0IGlzIGEgbXVjaCBiZXR0ZXIg ZGVzaWduZWQgdG9vbCB0aGVuIHBhdGNod29yaywgcGx1cw0KPj4+Pml0DQo+Pj4+IGNvdWxkIGdl dCBtb3JlIGV5ZXMgYXMgaXQgaXMgdmVyeSB3ZWxsIGtub3cgdG8gdGhlIGRldmVsb3BlciBjb21t dW5pdHkNCj4+Pj4gaW4NCj4+Pj4gZ2VuZXJhbC4gSSBmZWVsIEdpdEh1YiBoYXMgbWFueSBhZHZh bnRhZ2VzIG92ZXIgdGhlIGN1cnJlbnQgc3lzdGVtcyBpbg0KPj4+PiBwbGFjZSBidXQsIGl0IGRv ZXMgbm90IHNvbHZlIHRoZSBhbGwgcGF0Y2ggaXNzdWVzLg0KPj4+Pg0KPj4+IEdpdGh1YiBpcyBh Y3R1YWxseSBhIGJpdCBpcnJpdGF0aW5nIGZvciB0aGlzIHNvcnQgb2YgdGhpbmcsIGFzIGl0DQo+ Pj4gcHJlc3VtZXMgYSB3ZWINCj4+PiBiYXNlZCBpbnRlcmZhY2UgZm9yIGRpc2N1c3Npb24uICBU aGV5IGhhdmUgc29tZSBtb2RpY3VtIG9mIGVtYWlsDQo+Pj4gZm9yd2FyZGluZw0KPj4+IGVuYWJs ZWQsIGJ1dCBpdCBoYXMgbmV2ZXIgcXVpdGUgd29ya2VkIHJpZ2h0LCBvciBpbnRlZ3JhdGVkIHBy b3Blcmx5Lg0KPg0KPkFuIGFsdGVybmF0aXZlIHRvIGdpdGh1YnMgYW5kIGJpdGJ1Y2tldHMgaXMg YSBzZWxmLWhvc3RlZCBmb3JnZSwgbGlrZQ0KPmdpdGxhYjoNCj4NCj5odHRwczovL2Fib3V0Lmdp dGxhYi5jb20vDQo+DQo+VG8gYmUgaG9uZXN0LCBJIG1vc3RseSB3b3JrIG9uIG9wZW4tc291cmNl IHJlcG9zaXRvcmllcywgYW5kIGluIG91cg0KPm9yZ2FuaXphdGlvbiB3ZSB1c2Ugb25seSBnaXRs YWIgZm9yIHByaXZhdGUgcmVwb3NpdG9yaWVzLCBzbyBJIGhhdmVuJ3QNCj5wbGF5ZWQgdGhhdCBt dWNoIHdpdGggaXQuIEJ1dCBpdCBzZWVtcyB0byBkbyBpdHMgam9iIGFuZCBoYXMgYWxtb3N0IGFs bA0KPm9mIHRoZSBmZWF0dXJlcyBvZiB0aGUgImNvbW11bml0eSIgZ2l0aHViLCBpZiBub3QgbW9y ZS4gSSBkb24ndCBrbm93IGlmDQo+eW91IGNhbiBldmVuIGludGVncmF0ZSBpdCB3aXRoIGdpdGh1 YidzIGFjY291bnRzIHNvbWVob3csIHRvIHByZXZlbnQgdG8NCj5oYXZlIHRvIHJlZ2lzdGVyLg0K Pg0KPkhvd2V2ZXIsIG9uZSBvZiB0aGUgaW1wb3J0YW50IHBvaW50cyBvZiB1c2luZyBnaXRodWIv Yml0YnVja2V0IGlzDQo+dmlzaWJpbGl0eSBhbmQgZWFzZSB0aGUgY29udHJpYnV0aW9uIHByb2Nl c3MuIEJ5IHVzaW5nIGFuIHNlbGYtaG9zdGVkDQo+c29sdXRpb24sIGV2ZW4gaWYgaXQgaXMgc2lt aWxhciB0byBnaXRodWIgYW5kIHdlbGwgYWR2ZXJ0aXNlZCBpbiBEUERLJ3MNCj53ZWJzaXRlLCB5 b3Uga2luZCBvZiBsb29zZSBwYXJ0IG9mIHRoYXQgYWR2YW50YWdlLg0KDQpJIHdvdWxkIHN1Z2dl c3Qgd2UgdXNlIEdpdEh1YiB0aGVuIHBpY2tpbmcgeWV0IGFub3RoZXIgbm90IGFzIHdlbGwga25v dw0KR2l0IFJlcG8gc3lzdGVtLCBpZiB3ZSBkZWNpZGUgdG8gY2hhbmdlLg0KPg0KPj4gRW1haWwg Zm9yd2FyZGluZyBoYXMgc2VlbWVkIHRvIHdvcmsgZm9yIG1lIGFuZCBpbiBvbmUgY2FzZSBpdCB0 b29rIGEgYml0DQo+PiB0byBoYXZlIEdpdEh1YiBzdG9wIHNlbmRpbmcgbWUgZW1haWxzIG9uIGEg cmVwbyBJIGRpZCBub3Qgd2FudCBhbnltb3JlDQo+PjotKQ0KPj4+PiBUaGUgb25seSB3YXkgd2Ug Y2FuIGdldCBwYXRjaCBpc3N1ZXMgcmVzb2x2ZWQgaXMgdG8gcHV0IGEgYml0IG1vcmUNCj4+Pj4g cHJvY2Vzcw0KPj4+PiBpbiBwbGFjZS4NCj4+Pj4+IEFsdGhvdWdoIEkgYWdyZWUsIHdlIGhhdmUg dG8gYmUgY2FyZWZ1bCBvbiBob3cgZ2l0aHViIG9yIGJpdGJ1Y2tldCBpcw0KPj4+Pj4gdXNlZC4g SGF2aW5nIGlzc3VlcyBvciBldmVuIChlLmcuIGdpdGh1YikgcHVsbCByZXF1ZXN0cyAqaW4gYWRk aXRpb24qDQo+Pj4+IHRvDQo+Pj4+PiB0aGUgbm9ybWFsIGNvbnRyaWJ1dGlvbiB3b3JrZmxvdyBj YW4gYmUgYSBuaWdodG1hcmUgdG8gZGVhbCB3aXRoLCBpbg0KPj4+Pj4gdGVybXMgb2Ygc3luY2hy b25pemF0aW9uIGFuZCBwcmV2ZW50aW5nIGRvdWJsZSB3b3JrLiBTbyBJIGd1ZXNzDQo+Pj4+PnNl dHRpbmcNCj4+Pj4+IHVwIGFuIG9mZmljaWFsIGdpdGh1YiBvciBiaXRidWNrZXQgbWlycm9yIHdv dWxkIGJlIGZpbmUsIHZpYSBzb21lDQo+Pj4+IHNpbXBsZQ0KPj4+Pj4gY3JvbmpvYiwgYnV0IEkg Z3Vlc3MgaXQgd291bGQgZW5kLXVwIG5vdCB1c2luZyBQUnMgb3IgaXNzdWVzIGluDQo+Pj4+Pmdp dGh1Yg0KPj4+Pj4gbGlrZSB0aGUgTGludXgga2VybmVsIGRvZXMuDQo+Pj4gMTAwJSBhZ3JlZSwg d2UgY2FuJ3QgYmUgc3BsaXQgYWJvdXQgdGhpcy4gIEFsbG93aW5nIGNvbnRyaWJ1dGlvbnMgZnJv bQ0KPj4+bg0KPj4+IGNoYW5uZWxzIGp1c3QgbWVhbnMgbW9zdCBkZXZlbG9wZXJzIHdpbGwgb25s eSBzZWUvcmV2aWV3cyAxL250aCBvZiB0aGUNCj4+PiBwYXRjaGVzDQo+Pj4gb2YgaW50ZXJlc3Qg dG8gdGhlbS4NCj4+IElmIHdlIHNldHVwIGEgR2l0SHViIG9yIHNvbWUgb3RoZXIgc2l0ZSwgd2Ug d291bGQgbmVlZCB0byBtYWtlIEdpdGh1Yg0KPj50aGUNCj4+IHByaW1hcnkgc2l0ZSB0byByZW1v dmUgdGhpcyB0eXBlIG9mIHByb2JsZW0gSU1PLg0KPg0KPllvdSBtZWFuIGNoYW5naW5nIHRoZSB3 b3JrZmxvdyBmcm9tIGVtYWlsIGJhc2VkIHRvIGlzc3VlcyBhbmQgcHVsbC1yZXENCj5vciBnaXRo dWIgcHVsbCByZXE/IERvIHlvdSByZWFsbHkgdGhpbmsgdGhpcyBpcyBwb3NzaWJsZT8NCg0KWWVz LCBJIHRoaW5rIHB1bGwtcmVxIGlzIHRoZSBzdGFuZGFyZCBHaXRIdWIgbWV0aG9kIGFzIGV2ZXJ5 b25lIG5lZWRzIGENCnJlcG8gYW55d2F5LiBJZiB3ZSBjYW4gZmlndXJlIG91dCBob3cgdG8gaW50 ZWdyYXRlIHRoZSBlbWFpbCBwYXRjaGVzIHRoYXQNCndvdWxkIGJlIGdyZWF0Lg0KPg0KPj4+PiAg RnJvbSB3aGF0IEkgY2FuIHRlbGwgR2l0SHViIHNlZW1zIHRvIGJlIGEgYmV0dGVyIHNvbHV0aW9u IGZvciBhIGZyZWUNCj4+Pj4gb3Blbg0KPj4+PiBlbnZpcm9ubWVudC4gQml0YnVja2V0IEkgaGF2 ZSBuZXZlciB1c2VkIGFuZCBHaXRIdWIgc2VlbXMgbW9yZSBwb3B1bGFyDQo+Pj4+IGZyb20gb25l IGFydGljbGUgSSByZWFkLg0KPj4+Pg0KPj4+Pg0KPj4+PiANCj4+Pj5odHRwczovL3d3dy5nb29n bGUuY29tL3dlYmhwP3NvdXJjZWlkPWNocm9tZS1pbnN0YW50Jmlvbj0xJmVzcHY9MiZpZT1VVA0K Pj4+PkYtDQo+Pj4+IDgjDQo+Pj4+IHE9Yml0YnVja2V0JTIwdnMlMjBnaXRodWINCj4+Pj4NCj4+ Pj4NCj4+Pj4+IEJ0dywgaXMgdGhpcyBnaXRodWIgb3JnYW5pemF0aW9uIGFscmVhZHkgcmVnaXN0 ZXJlZCBieSBJbnRlbCBvciBzb21lDQo+Pj4+PiBvdGhlciBjb21wYW55IG9mIHRoZSBjb21tdW5p dHk/DQo+Pj4+Pg0KPj4+Pj4gaHR0cHM6Ly9naXRodWIuY29tL2RwZGsNCj4+Pj4+DQo+PiBJIHdh cyBob3Bpbmcgc29tZW9uZSB3b3VsZCBvd24gdXAgdG8gdGhlIEdpdEh1YiBkcGRrIHNpdGUuDQo+ DQo+SnVzdCB3YW50ZWQgdG8ga25vdyBpZiB0aGlzIHdhcyB0aGUgY2FzZS4gQnV0LCBldmVuIGlm IHRoYXQgd291bGQgbm90IGJlDQo+dGhlIGNhc2UsIEkgKmd1ZXNzKiB0aGF0LCBhcyBpdCBoYXBw ZW5zIHdpdGggb3RoZXIgc2VydmljZXMgbGlrZQ0KPnR3aXR0ZXIsIGZhY2Vib29rLi4uLCBJbnRl bCBjb3VsZCBjbGFpbSB0aGUgdXNlciwgc2luY2UgaXQgaGFzIHRoZQ0KPnJlZ2lzdGVyZWQgdHJh ZGVtYXJrLg0KPg0KPm1hcmMNCj4NCj4+DQo+Pj4+PiBNYXJjDQo+Pj4+IElmIHdlIGNhbiB1c2Vk IHRoZSBhYm92ZSB0aGF0IHdvdWxkIGJlIGdyZWF0LCBidXQgYSBuYW1lIGxpa2UNCj4+Pj4gxZJk cGRrLWNvbW11bml0ecK5IG9yIHNvbWV0aGluZyBjb3VsZCB3b3JrIHRvby4NCj4+Pj4NCj4+Pj4g V2UgY2FuIGhvc3QgdGhlIHdlYiBzaXRlIGhlcmUgYW5kIGhhdmUgbWFueSBzdWItcHJvamVjdHMg bGlrZQ0KPj4+PiBQa3RnZW4tRFBESw0KPj4+PiA6LSkgdW5kZXIgdGhlIHNhbWUgcGFnZS4gTm90 IHRvIHNheSBhbnl0aGluZyBiYWQgYWJvdXQgb3VyIGN1cnJlbnQgd2ViDQo+Pj4+IHBhZ2VzIGFz IEkgZmluZCBpdCBkaWZmaWN1bHQgdG8gdXNlIHNvbWV0aW1lcyBhbmQgZmluZCB0aGluZ3MgbGlr ZQ0KPj4+PiBwYXRjaHdvcmsgbGluay4gTWFpbnRhaW5pbmcgYSB3ZWIgc2l0ZSBpcyBhIGZ1bGwg dGltZSBqb2IgYW5kIEdpdEh1Yg0KPj4+PiBkb2VzDQo+Pj4+IG1haW50YWluIHRoZSBzaXRlLCBw bHVzIHdlIGNhbiBjb2xsYWJvcmF0ZSBvbiBob3N0IHdlYiBwYWdlIG9uIHRoZQ0KPj4+PiBHaXRI dWINCj4+Pj4gc2l0ZSBlYXNpZXIuDQo+Pj4+DQo+Pj4+IE1vdmluZyB0byB0aGUgTGludXggRm91 bmRhdGlvbiBpcyBhbiBvcHRpb24gYXMgd2VsbCBhcyBpdCBpcyB2ZXJ5IHdlbGwNCj4+Pj4ga25v dyBhbmQgaGFzIHNvbWUgbmljZSB3YXlzIHRvIGdldCB5b3VyIHByb2plY3QgcHJvbW90ZWQuIEl0 IGRvZXMNCj4+Pj5oYXZlIGENCj4+Pj4gZmV3IGRyYXdiYWNrcyBpbiBwcm9jZXNzIGhhbmRsaW5n IGFuZCBjb3N0IHRvIHN0YXRlIGEgZmV3LiBUaGUgcHJvY2Vzcw0KPj4+PiBtb2RlbCBpcyBhbGwg cmVhZHkgZGVmaW5lZCwgd2hpY2ggaXMgZ29vZCBhbmQgYmFkIGl0IGp1c3QgZGVwZW5kcyBvbg0K Pj4+PiB5b3VyDQo+Pj4+IG5lZWRzIElNTy4NCj4+Pj4NCj4+Pj4gUmVnYXJkcywNCj4+Pj4gKytL ZWl0aA0KPj4+Pg0KPj4+Pj4+IE1hdHRoZXcuDQo+Pj4+DQo+DQoNCg==