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 A438FA0513; Fri, 8 Apr 2022 09:13:50 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 4355D4067E; Fri, 8 Apr 2022 09:13:50 +0200 (CEST) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by mails.dpdk.org (Postfix) with ESMTP id DBD114003F for ; Fri, 8 Apr 2022 09:13:47 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1649402028; x=1680938028; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=DI3QsUDtT/IYhWI4LUq8bYf7J/99xIohGJGwiEuM86A=; b=IDAH/C1P7fh5XpHOuJ7Z/xoccGLW1FnBtYOllpnszvubIpmxluhJC36A ORvQT/N3Vv50xEJ5UsL/ZJpZ2alWxSA8GA9ei1qKovznCWxohsTsiCg3G hKdmn1fIpARQfVfcMrN3BWx/2KMZCOjZH1tn4iyOKlEXb2ATZvXrK9VPx YkqegyVDrZlZWvfp8g0KPCCFOHx0kmygq+sFD0iQRj+O7jlejFeqYOw05 rvhe/o+nhRl16pFd12kaZWek/VfX7djUDoAFerxePAIVBqEyMM7Ysh437 toEL24+tBgH7BskoQpP9Ew5DGLLng9QyNruWrargmRuzICPvAjzK0rqwI g==; X-IronPort-AV: E=McAfee;i="6400,9594,10310"; a="261524785" X-IronPort-AV: E=Sophos;i="5.90,244,1643702400"; d="scan'208";a="261524785" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Apr 2022 00:13:46 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.90,244,1643702400"; d="scan'208";a="589128214" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by orsmga001.jf.intel.com with ESMTP; 08 Apr 2022 00:13:46 -0700 Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Fri, 8 Apr 2022 00:13:45 -0700 Received: from fmsmsx605.amr.corp.intel.com (10.18.126.85) by fmsmsx611.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Fri, 8 Apr 2022 00:13:44 -0700 Received: from fmsmsx605.amr.corp.intel.com ([10.18.126.85]) by fmsmsx605.amr.corp.intel.com ([10.18.126.85]) with mapi id 15.01.2308.027; Fri, 8 Apr 2022 00:13:44 -0700 From: "Hu, Jiayu" To: Ilya Maximets , Maxime Coquelin , "Van Haaren, Harry" , =?utf-8?B?TW9ydGVuIEJyw7hydXA=?= , "Richardson, Bruce" CC: "Pai G, Sunil" , "Stokes, Ian" , "Ferriter, Cian" , "ovs-dev@openvswitch.org" , "dev@dpdk.org" , "Mcnamara, John" , "O'Driscoll, Tim" , "Finn, Emma" Subject: RE: OVS DPDK DMA-Dev library/Design Discussion Thread-Topic: OVS DPDK DMA-Dev library/Design Discussion Thread-Index: Adg/jDNGcC8G4wWtSxeVfUOuAS3Y6wACLuFQAM6falAAJoZBIAAA0srQAAK2F/D//51mAIAABeuAgAAFBYCAAALtgIAACRKAgAAlNYCAANqHAIAN4r6AgAAF9wCAAAPvAP//0aZg Date: Fri, 8 Apr 2022 07:13:44 +0000 Message-ID: <0a414313f07d4781b9bdd8523c2e06f5@intel.com> References: <98CBD80474FA8B44BF855DF32C47DC35D86F7C@smartserver.smartshare.dk> <98CBD80474FA8B44BF855DF32C47DC35D86F7D@smartserver.smartshare.dk> <7968dd0b-8647-8d7b-786f-dc876bcbf3f0@redhat.com> <98CBD80474FA8B44BF855DF32C47DC35D86F7E@smartserver.smartshare.dk> <98CBD80474FA8B44BF855DF32C47DC35D86F80@smartserver.smartshare.dk> <98CBD80474FA8B44BF855DF32C47DC35D86F82@smartserver.smartshare.dk> <94d817cb-8151-6644-c577-ed8b42d24337@redhat.com> <55c5a37f-3ee8-394b-8cff-e7daecb59f73@ovn.org> In-Reply-To: <55c5a37f-3ee8-394b-8cff-e7daecb59f73@ovn.org> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-reaction: no-action dlp-version: 11.6.401.20 dlp-product: dlpe-windows x-originating-ip: [10.239.127.36] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 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 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogSWx5YSBNYXhpbWV0cyA8 aS5tYXhpbWV0c0Bvdm4ub3JnPg0KPiBTZW50OiBUaHVyc2RheSwgQXByaWwgNywgMjAyMiAxMDo0 MCBQTQ0KPiBUbzogTWF4aW1lIENvcXVlbGluIDxtYXhpbWUuY29xdWVsaW5AcmVkaGF0LmNvbT47 IFZhbiBIYWFyZW4sIEhhcnJ5DQo+IDxoYXJyeS52YW4uaGFhcmVuQGludGVsLmNvbT47IE1vcnRl biBCcsO4cnVwDQo+IDxtYkBzbWFydHNoYXJlc3lzdGVtcy5jb20+OyBSaWNoYXJkc29uLCBCcnVj ZQ0KPiA8YnJ1Y2UucmljaGFyZHNvbkBpbnRlbC5jb20+DQo+IENjOiBpLm1heGltZXRzQG92bi5v cmc7IFBhaSBHLCBTdW5pbCA8c3VuaWwucGFpLmdAaW50ZWwuY29tPjsgU3Rva2VzLCBJYW4NCj4g PGlhbi5zdG9rZXNAaW50ZWwuY29tPjsgSHUsIEppYXl1IDxqaWF5dS5odUBpbnRlbC5jb20+OyBG ZXJyaXRlciwgQ2lhbg0KPiA8Y2lhbi5mZXJyaXRlckBpbnRlbC5jb20+OyBvdnMtZGV2QG9wZW52 c3dpdGNoLm9yZzsgZGV2QGRwZGsub3JnOw0KPiBNY25hbWFyYSwgSm9obiA8am9obi5tY25hbWFy YUBpbnRlbC5jb20+OyBPJ0RyaXNjb2xsLCBUaW0NCj4gPHRpbS5vZHJpc2NvbGxAaW50ZWwuY29t PjsgRmlubiwgRW1tYSA8ZW1tYS5maW5uQGludGVsLmNvbT4NCj4gU3ViamVjdDogUmU6IE9WUyBE UERLIERNQS1EZXYgbGlicmFyeS9EZXNpZ24gRGlzY3Vzc2lvbg0KPiANCj4gT24gNC83LzIyIDE2 OjI1LCBNYXhpbWUgQ29xdWVsaW4gd3JvdGU6DQo+ID4gSGkgSGFycnksDQo+ID4NCj4gPiBPbiA0 LzcvMjIgMTY6MDQsIFZhbiBIYWFyZW4sIEhhcnJ5IHdyb3RlOg0KPiA+PiBIaSBPVlMgJiBEUERL LCBNYWludGFpbmVycyAmIENvbW11bml0eSwNCj4gPj4NCj4gPj4gVG9wIHBvc3Rpbmcgb3ZlcnZp ZXcgb2YgZGlzY3Vzc2lvbiBhcyByZXBsaWVzIHRvIHRocmVhZCBiZWNvbWUgc2xvd2VyOg0KPiA+ PiBwZXJoYXBzIGl0IGlzIGEgZ29vZCB0aW1lIHRvIHJldmlldyBhbmQgcGxhbiBmb3IgbmV4dCBz dGVwcz8NCj4gPj4NCj4gPj4gwqBGcm9tIG15IHBlcnNwZWN0aXZlLCBpdCB0aG9zZSBtb3N0IHZv Y2FsIGluIHRoZSB0aHJlYWQgc2VlbSB0byBiZSBpbg0KPiA+PiBmYXZvdXIgb2YgdGhlIGNsZWFu IHJ4L3R4IHNwbGl0ICgiZGVmZXIgd29yayIpLCB3aXRoIHRoZSB0cmFkZW9mZg0KPiA+PiB0aGF0 IHRoZSBhcHBsaWNhdGlvbiBtdXN0IGJlIGF3YXJlIG9mIGhhbmRsaW5nIHRoZSBhc3luYyBETUEN Cj4gPj4gY29tcGxldGlvbnMuIElmIHRoZXJlIGFyZSBhbnkgY29uY2VybnMgb3Bwb3NpbmcgdXBz dHJlYW1pbmcgb2YgdGhpcw0KPiBtZXRob2QsIHBsZWFzZSBpbmRpY2F0ZSB0aGlzIHByb21wdGx5 LCBhbmQgd2UgY2FuIGNvbnRpbnVlIHRlY2huaWNhbA0KPiBkaXNjdXNzaW9ucyBoZXJlIG5vdy4N Cj4gPg0KPiA+IFdhc24ndCB0aGVyZSBzb21lIGRpc2N1c3Npb25zIGFib3V0IGhhbmRsaW5nIHRo ZSBWaXJ0aW8gY29tcGxldGlvbnMNCj4gPiB3aXRoIHRoZSBETUEgZW5naW5lPyBXaXRoIHRoYXQs IHdlIHdvdWxkbid0IG5lZWQgdGhlIGRlZmVycmFsIG9mIHdvcmsuDQo+IA0KPiArMQ0KPiANCj4g V2l0aCB0aGUgdmlydGlvIGNvbXBsZXRpb25zIGhhbmRsZWQgYnkgRE1BIGl0c2VsZiwgdGhlIHZo b3N0IHBvcnQgdHVybnMNCj4gYWxtb3N0IGludG8gYSByZWFsIEhXIE5JQy4gIFdpdGggdGhhdCB3 ZSB3aWxsIG5vdCBuZWVkIGFueSBleHRyYQ0KPiBtYW5pcHVsYXRpb25zIGZyb20gdGhlIE9WUyBz aWRlLCBpLmUuIG5vIG5lZWQgdG8gZGVmZXIgYW55IHdvcmsgd2hpbGUNCj4gbWFpbnRhaW5pbmcg Y2xlYXIgc3BsaXQgYmV0d2VlbiByeCBhbmQgdHggb3BlcmF0aW9ucy4NCg0KRmlyc3QsIG1ha2lu ZyBETUEgZG8gMkIgY29weSB3b3VsZCBzYWNyaWZpY2UgcGVyZm9ybWFuY2UsIGFuZCBJIHRoaW5r DQp3ZSBhbGwgYWdyZWUgb24gdGhhdC4gU2Vjb25kLCB0aGlzIG1ldGhvZCBjb21lcyB3aXRoIGFu IGlzc3VlIG9mIG9yZGVyaW5nLg0KRm9yIGV4YW1wbGUsIFBNRCB0aHJlYWQwIGVucXVldWUgMTAg cGFja2V0cyB0byB2cmluZzAgZmlyc3QsIHRoZW4gUE1EIHRocmVhZDENCmVucXVldWUgMjAgcGFj a2V0cyB0byB2cmluZzAuIElmIFBNRCB0aHJlYWQwIGFuZCB0aHJlYTEgaGF2ZSBvd24gZGVkaWNh dGVkDQpETUEgZGV2aWNlIGRtYTAgYW5kIGRtYTEsIGZsYWcvaW5kZXggdXBkYXRlIGZvciB0aGUg Zmlyc3QgMTAgcGFja2V0cyBpcyBkb25lIGJ5DQpkbWEwLCBhbmQgZmxhZy9pbmRleCB1cGRhdGUg Zm9yIHRoZSBsZWZ0IDIwIHBhY2tldHMgaXMgZG9uZSBieSBkbWExLiBCdXQgdGhlcmUNCmlzIG5v IG9yZGVyaW5nIGd1YXJhbnRlZSBhbW9uZyBkaWZmZXJlbnQgRE1BIGRldmljZXMsIHNvIGZsYWcv aW5kZXggdXBkYXRlIG1heQ0KZXJyb3IuIElmIFBNRCB0aHJlYWRzIGRvbid0IGhhdmUgZGVkaWNh dGVkIERNQSBkZXZpY2VzLCB3aGljaCBtZWFucyBETUENCmRldmljZXMgYXJlIHNoYXJlZCBhbW9u ZyB0aHJlYWRzLCB3ZSBuZWVkIGxvY2sgYW5kIHBheSBmb3IgbG9jayBjb250ZW50aW9uIGluDQpk YXRhLXBhdGguIE9yIHdlIGNhbiBhbGxvY2F0ZSBETUEgZGV2aWNlcyBmb3IgdnJpbmcgZHluYW1p Y2FsbHkgdG8gYXZvaWQgRE1BDQpzaGFyaW5nIGFtb25nIHRocmVhZHMuIEJ1dCB3aGF0J3MgdGhl IG92ZXJoZWFkIG9mIGFsbG9jYXRpb24gbWVjaGFuaXNtPyBXaG8NCmRvZXMgaXQ/IEFueSB0aG91 Z2h0cz8NCg0KVGhhbmtzLA0KSmlheXUNCg0KPiANCj4gSSdkIHZvdGUgZm9yIHRoYXQuDQo+IA0K PiA+DQo+ID4gVGhhbmtzLA0KPiA+IE1heGltZQ0KPiA+DQo+ID4+IEluIGFic2VuY2Ugb2YgY29u dGludWVkIHRlY2huaWNhbCBkaXNjdXNzaW9uIGhlcmUsIEkgc3VnZ2VzdCBTdW5pbA0KPiA+PiBh bmQgSWFuIGNvbGxhYm9yYXRlIG9uIGdldHRpbmcgdGhlIE9WUyBEZWZlci13b3JrIGFwcHJvYWNo LCBhbmQgRFBESw0KPiA+PiBWSG9zdCBBc3luYyBwYXRjaHNldHMgYXZhaWxhYmxlIG9uIEdpdEh1 YiBmb3IgZWFzaWVyIGNvbnN1bXB0aW9uIGFuZA0KPiBmdXR1cmUgZGV2ZWxvcG1lbnQgKGFzIHN1 Z2dlc3RlZCBpbiBzbGlkZXMgcHJlc2VudGVkIG9uIGxhc3QgY2FsbCkuDQo+ID4+DQo+ID4+IFJl Z2FyZHMsIC1IYXJyeQ0KPiA+Pg0KPiA+PiBObyBpbmxpbmUtcmVwbGllcyBiZWxvdzsgbWVzc2Fn ZSBqdXN0IGZvciBjb250ZXh0Lg0KPiA+Pg0KPiA+Pj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0t LS0NCj4gPj4+IEZyb206IFZhbiBIYWFyZW4sIEhhcnJ5DQo+ID4+PiBTZW50OiBXZWRuZXNkYXks IE1hcmNoIDMwLCAyMDIyIDEwOjAyIEFNDQo+ID4+PiBUbzogTW9ydGVuIEJyw7hydXAgPG1iQHNt YXJ0c2hhcmVzeXN0ZW1zLmNvbT47IFJpY2hhcmRzb24sIEJydWNlDQo+ID4+PiA8YnJ1Y2Uucmlj aGFyZHNvbkBpbnRlbC5jb20+DQo+ID4+PiBDYzogTWF4aW1lIENvcXVlbGluIDxtYXhpbWUuY29x dWVsaW5AcmVkaGF0LmNvbT47IFBhaSBHLCBTdW5pbA0KPiA+Pj4gPFN1bmlsLlBhaS5HQGludGVs LmNvbT47IFN0b2tlcywgSWFuIDxpYW4uc3Rva2VzQGludGVsLmNvbT47IEh1LA0KPiA+Pj4gSmlh eXUgPEppYXl1Lkh1QGludGVsLmNvbT47IEZlcnJpdGVyLCBDaWFuDQo+ID4+PiA8Q2lhbi5GZXJy aXRlckBpbnRlbC5jb20+OyBJbHlhIE1heGltZXRzIDxpLm1heGltZXRzQG92bi5vcmc+Ow0KPiA+ Pj4gb3ZzLWRldkBvcGVudnN3aXRjaC5vcmc7IGRldkBkcGRrLm9yZzsgTWNuYW1hcmEsIEpvaG4N Cj4gPj4+IDxqb2huLm1jbmFtYXJhQGludGVsLmNvbT47IE8nRHJpc2NvbGwsIFRpbQ0KPiA+Pj4g PHRpbS5vZHJpc2NvbGxAaW50ZWwuY29tPjsgRmlubiwgRW1tYSA8RW1tYS5GaW5uQGludGVsLmNv bT4NCj4gPj4+IFN1YmplY3Q6IFJFOiBPVlMgRFBESyBETUEtRGV2IGxpYnJhcnkvRGVzaWduIERp c2N1c3Npb24NCj4gPj4+DQo+ID4+Pj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4+ PiBGcm9tOiBNb3J0ZW4gQnLDuHJ1cCA8bWJAc21hcnRzaGFyZXN5c3RlbXMuY29tPg0KPiA+Pj4+ IFNlbnQ6IFR1ZXNkYXksIE1hcmNoIDI5LCAyMDIyIDg6NTkgUE0NCj4gPj4+PiBUbzogVmFuIEhh YXJlbiwgSGFycnkgPGhhcnJ5LnZhbi5oYWFyZW5AaW50ZWwuY29tPjsgUmljaGFyZHNvbiwNCj4g Pj4+PiBCcnVjZSA8YnJ1Y2UucmljaGFyZHNvbkBpbnRlbC5jb20+DQo+ID4+Pj4gQ2M6IE1heGlt ZSBDb3F1ZWxpbiA8bWF4aW1lLmNvcXVlbGluQHJlZGhhdC5jb20+OyBQYWkgRywgU3VuaWwNCj4g Pj4+PiA8c3VuaWwucGFpLmdAaW50ZWwuY29tPjsgU3Rva2VzLCBJYW4gPGlhbi5zdG9rZXNAaW50 ZWwuY29tPjsgSHUsDQo+ID4+Pj4gSmlheXUgPGppYXl1Lmh1QGludGVsLmNvbT47IEZlcnJpdGVy LCBDaWFuDQo+ID4+Pj4gPGNpYW4uZmVycml0ZXJAaW50ZWwuY29tPjsgSWx5YSBNYXhpbWV0cyA8 aS5tYXhpbWV0c0Bvdm4ub3JnPjsNCj4gPj4+PiBvdnMtZGV2QG9wZW52c3dpdGNoLm9yZzsgZGV2 QGRwZGsub3JnOyBNY25hbWFyYSwNCj4gPj4+IEpvaG4NCj4gPj4+PiA8am9obi5tY25hbWFyYUBp bnRlbC5jb20+OyBPJ0RyaXNjb2xsLCBUaW0NCj4gPj4+PiA8dGltLm9kcmlzY29sbEBpbnRlbC5j b20+OyBGaW5uLCBFbW1hIDxlbW1hLmZpbm5AaW50ZWwuY29tPg0KPiA+Pj4+IFN1YmplY3Q6IFJF OiBPVlMgRFBESyBETUEtRGV2IGxpYnJhcnkvRGVzaWduIERpc2N1c3Npb24NCj4gPj4+Pg0KPiA+ Pj4+PiBGcm9tOiBWYW4gSGFhcmVuLCBIYXJyeSBbbWFpbHRvOmhhcnJ5LnZhbi5oYWFyZW5AaW50 ZWwuY29tXQ0KPiA+Pj4+PiBTZW50OiBUdWVzZGF5LCAyOSBNYXJjaCAyMDIyIDE5LjQ2DQo+ID4+ Pj4+DQo+ID4+Pj4+PiBGcm9tOiBNb3J0ZW4gQnLDuHJ1cCA8bWJAc21hcnRzaGFyZXN5c3RlbXMu Y29tPg0KPiA+Pj4+Pj4gU2VudDogVHVlc2RheSwgTWFyY2ggMjksIDIwMjIgNjoxNCBQTQ0KPiA+ Pj4+Pj4NCj4gPj4+Pj4+PiBGcm9tOiBCcnVjZSBSaWNoYXJkc29uIFttYWlsdG86YnJ1Y2Uucmlj aGFyZHNvbkBpbnRlbC5jb21dDQo+ID4+Pj4+Pj4gU2VudDogVHVlc2RheSwgMjkgTWFyY2ggMjAy MiAxOS4wMw0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4gT24gVHVlLCBNYXIgMjksIDIwMjIgYXQgMDY6 NDU6MTlQTSArMDIwMCwgTW9ydGVuIEJyw7hydXAgd3JvdGU6DQo+ID4+Pj4+Pj4+PiBGcm9tOiBN YXhpbWUgQ29xdWVsaW4gW21haWx0bzptYXhpbWUuY29xdWVsaW5AcmVkaGF0LmNvbV0NCj4gPj4+ Pj4+Pj4+IFNlbnQ6IFR1ZXNkYXksIDI5IE1hcmNoIDIwMjIgMTguMjQNCj4gPj4+Pj4+Pj4+DQo+ ID4+Pj4+Pj4+PiBIaSBNb3J0ZW4sDQo+ID4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4gT24gMy8yOS8y MiAxNjo0NCwgTW9ydGVuIEJyw7hydXAgd3JvdGU6DQo+ID4+Pj4+Pj4+Pj4+IEZyb206IFZhbiBI YWFyZW4sIEhhcnJ5IFttYWlsdG86aGFycnkudmFuLmhhYXJlbkBpbnRlbC5jb21dDQo+ID4+Pj4+ Pj4+Pj4+IFNlbnQ6IFR1ZXNkYXksIDI5IE1hcmNoIDIwMjIgMTUuMDINCj4gPj4+Pj4+Pj4+Pj4N Cj4gPj4+Pj4+Pj4+Pj4+IEZyb206IE1vcnRlbiBCcsO4cnVwIDxtYkBzbWFydHNoYXJlc3lzdGVt cy5jb20+DQo+ID4+Pj4+Pj4+Pj4+PiBTZW50OiBUdWVzZGF5LCBNYXJjaCAyOSwgMjAyMiAxOjUx IFBNDQo+ID4+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+Pj4gSGF2aW5nIHRob3VnaHQgbW9yZSBh Ym91dCBpdCwgSSB0aGluayB0aGF0IGEgY29tcGxldGVseQ0KPiA+Pj4+Pj4+IGRpZmZlcmVudA0K PiA+Pj4+Pj4+Pj4gYXJjaGl0ZWN0dXJhbCBhcHByb2FjaCBpcyByZXF1aXJlZDoNCj4gPj4+Pj4+ Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+PiBNYW55IG9mIHRoZSBEUERLIEV0aGVybmV0IFBNRHMgaW1w bGVtZW50IGEgdmFyaWV0eSBvZiBSWA0KPiA+Pj4+PiBhbmQgVFgNCj4gPj4+Pj4+Pj4+IHBhY2tl dCBidXJzdCBmdW5jdGlvbnMsIGVhY2ggb3B0aW1pemVkIGZvciBkaWZmZXJlbnQgQ1BVDQo+ID4+ Pj4+Pj4+PiB2ZWN0b3IgaW5zdHJ1Y3Rpb24gc2V0cy4gVGhlIGF2YWlsYWJpbGl0eSBvZiBhIERN QSBlbmdpbmUNCj4gPj4+Pj4+Pj4+IHNob3VsZCBiZQ0KPiA+Pj4+Pj4+IHRyZWF0ZWQNCj4gPj4+ Pj4+Pj4+IHRoZSBzYW1lIHdheS4gU28gSSBzdWdnZXN0IHRoYXQgUE1EcyBjb3B5aW5nIHBhY2tl dCBjb250ZW50cywNCj4gPj4+Pj4gZS5nLg0KPiA+Pj4+Pj4+Pj4gbWVtaWYsIHBjYXAsIHZteG5l dDMsIHNob3VsZCBpbXBsZW1lbnQgRE1BIG9wdGltaXplZCBSWCBhbmQNCj4gVFgNCj4gPj4+Pj4+ PiBwYWNrZXQNCj4gPj4+Pj4+Pj4+IGJ1cnN0IGZ1bmN0aW9ucy4NCj4gPj4+Pj4+Pj4+Pj4+DQo+ ID4+Pj4+Pj4+Pj4+PiBTaW1pbGFybHkgZm9yIHRoZSBEUERLIHZob3N0IGxpYnJhcnkuDQo+ID4+ Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+Pj4gSW4gc3VjaCBhbiBhcmNoaXRlY3R1cmUsIGl0IHdv dWxkIGJlIHRoZSBhcHBsaWNhdGlvbidzIGpvYg0KPiA+Pj4+PiB0bw0KPiA+Pj4+Pj4+Pj4gYWxs b2NhdGUgRE1BIGNoYW5uZWxzIGFuZCBhc3NpZ24gdGhlbSB0byB0aGUgc3BlY2lmaWMgUE1Ecw0K PiA+Pj4+Pj4+Pj4gdGhhdA0KPiA+Pj4+Pj4+IHNob3VsZA0KPiA+Pj4+Pj4+Pj4gdXNlIHRoZW0u IEJ1dCB0aGUgYWN0dWFsIHVzZSBvZiB0aGUgRE1BIGNoYW5uZWxzIHdvdWxkIG1vdmUNCj4gPj4+ Pj4gZG93bg0KPiA+Pj4+Pj4+IGJlbG93DQo+ID4+Pj4+Pj4+PiB0aGUgYXBwbGljYXRpb24gYW5k IGludG8gdGhlIERQREsgUE1EcyBhbmQgbGlicmFyaWVzLg0KPiA+Pj4+Pj4+Pj4+Pj4NCj4gPj4+ Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+PiBNZWQgdmVubGlnIGhpbHNlbiAvIEtpbmQgcmVnYXJk cywgLU1vcnRlbiBCcsO4cnVwDQo+ID4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+IEhpIE1vcnRl biwNCj4gPj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4gVGhhdCdzICpleGFjdGx5KiBob3cgdGhp cyBhcmNoaXRlY3R1cmUgaXMgZGVzaWduZWQgJg0KPiA+Pj4+Pj4+IGltcGxlbWVudGVkLg0KPiA+ Pj4+Pj4+Pj4+PiAxLsKgwqDCoCBUaGUgRE1BIGNvbmZpZ3VyYXRpb24gYW5kIGluaXRpYWxpemF0 aW9uIGlzIHVwIHRvIHRoZQ0KPiA+Pj4+Pj4+IGFwcGxpY2F0aW9uDQo+ID4+Pj4+Pj4+PiAoT1ZT KS4NCj4gPj4+Pj4+Pj4+Pj4gMi7CoMKgwqAgVGhlIFZIb3N0IGxpYnJhcnkgaXMgcGFzc2VkIHRo ZSBETUEtZGV2IElELCBhbmQgaXRzDQo+ID4+Pj4+IG5ldw0KPiA+Pj4+Pj4+IGFzeW5jDQo+ID4+ Pj4+Pj4+PiByeC90eCBBUElzLCBhbmQgdXNlcyB0aGUgRE1BIGRldmljZSB0byBhY2NlbGVyYXRl IHRoZSBjb3B5Lg0KPiA+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+PiBMb29raW5nIGZvcndhcmQg dG8gdGFsa2luZyBvbiB0aGUgY2FsbCB0aGF0IGp1c3Qgc3RhcnRlZC4NCj4gPj4+Pj4+PiBSZWdh cmRzLCAtDQo+ID4+Pj4+Pj4+PiBIYXJyeQ0KPiA+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+DQo+ ID4+Pj4+Pj4+Pj4gT0ssIHRoYW5rcyAtIGFzIEkgc2FpZCBvbiB0aGUgY2FsbCwgSSBoYXZlbid0 IGxvb2tlZCBhdCB0aGUNCj4gPj4+Pj4+PiBwYXRjaGVzLg0KPiA+Pj4+Pj4+Pj4+DQo+ID4+Pj4+ Pj4+Pj4gVGhlbiwgSSBzdXBwb3NlIHRoYXQgdGhlIFRYIGNvbXBsZXRpb25zIGNhbiBiZSBoYW5k bGVkIGluIHRoZQ0KPiA+Pj4+PiBUWA0KPiA+Pj4+Pj4+Pj4gZnVuY3Rpb24sIGFuZCB0aGUgUlgg Y29tcGxldGlvbnMgY2FuIGJlIGhhbmRsZWQgaW4gdGhlIFJYDQo+ID4+Pj4+IGZ1bmN0aW9uLA0K PiA+Pj4+Pj4+Pj4ganVzdCBsaWtlIHRoZSBFdGhkZXYgUE1EcyBoYW5kbGUgcGFja2V0IGRlc2Ny aXB0b3JzOg0KPiA+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4gVFhfQnVyc3QodHhfcGFja2V0X2Fy cmF5KToNCj4gPj4+Pj4+Pj4+PiAxLsKgwqDCoCBDbGVhbiB1cCBkZXNjcmlwdG9ycyBwcm9jZXNz ZWQgYnkgdGhlIE5JQyBjaGlwLiAtLT4NCj4gPj4+Pj4gUHJvY2Vzcw0KPiA+Pj4+Pj4+IFRYDQo+ ID4+Pj4+Pj4+PiBETUEgY2hhbm5lbCBjb21wbGV0aW9ucy4gKEVmZmVjdGl2ZWx5LCB0aGUgMm5k IHBpcGVsaW5lDQo+ID4+Pj4+Pj4+PiBzdGFnZS4pDQo+ID4+Pj4+Pj4+Pj4gMi7CoMKgwqAgUGFz cyBvbiB0aGUgdHhfcGFja2V0X2FycmF5IHRvIHRoZSBOSUMgY2hpcA0KPiA+Pj4+PiBkZXNjcmlw dG9ycy4gLS0NCj4gPj4+Pj4+Pj4gUGFzcw0KPiA+Pj4+Pj4+Pj4gb24gdGhlIHR4X3BhY2tldF9h cnJheSB0byB0aGUgVFggRE1BIGNoYW5uZWwuIChFZmZlY3RpdmVseSwNCj4gPj4+Pj4+Pj4+IHRo ZQ0KPiA+Pj4+PiAxc3QNCj4gPj4+Pj4+Pj4+IHBpcGVsaW5lIHN0YWdlLikNCj4gPj4+Pj4+Pj4+ DQo+ID4+Pj4+Pj4+PiBUaGUgcHJvYmxlbSBpcyBUeCBmdW5jdGlvbiBtaWdodCBub3QgYmUgY2Fs bGVkIGFnYWluLCBzbw0KPiA+Pj4+PiBlbnF1ZXVlZA0KPiA+Pj4+Pj4+Pj4gcGFja2V0cyBpbiAy LiBtYXkgbmV2ZXIgYmUgY29tcGxldGVkIGZyb20gYSBWaXJ0aW8gcG9pbnQgb2YNCj4gPj4+Pj4g dmlldy4NCj4gPj4+Pj4+PiBJT1csDQo+ID4+Pj4+Pj4+PiB0aGUgcGFja2V0cyB3aWxsIGJlIGNv cGllZCB0byB0aGUgVmlydGlvIGRlc2NyaXB0b3JzIGJ1ZmZlcnMsDQo+ID4+Pj4+IGJ1dA0KPiA+ Pj4+Pj4+IHRoZQ0KPiA+Pj4+Pj4+Pj4gZGVzY3JpcHRvcnMgd2lsbCBub3QgYmUgbWFkZSBhdmFp bGFibGUgdG8gdGhlIFZpcnRpbyBkcml2ZXIuDQo+ID4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+IEluIHRo YXQgY2FzZSwgdGhlIGFwcGxpY2F0aW9uIG5lZWRzIHRvIGNhbGwgVFhfQnVyc3QoKQ0KPiA+Pj4+ PiBwZXJpb2RpY2FsbHkNCj4gPj4+Pj4+PiB3aXRoIGFuIGVtcHR5IGFycmF5LCBmb3IgY29tcGxl dGlvbiBwdXJwb3Nlcy4NCj4gPj4+Pj4NCj4gPj4+Pj4gVGhpcyBpcyB3aGF0IHRoZSAiZGVmZXIg d29yayIgZG9lcyBhdCB0aGUgT1ZTIHRocmVhZC1sZXZlbCwgYnV0DQo+ID4+Pj4+IGluc3RlYWQg b2YgImJydXRlLWZvcmNpbmciIGFuZCAqYWx3YXlzKiBtYWtpbmcgdGhlIGNhbGwsIHRoZSBkZWZl cg0KPiA+Pj4+PiB3b3JrIGNvbmNlcHQgdHJhY2tzDQo+ID4+Pj4+ICp3aGVuKiB0aGVyZSBpcyBv dXRzdGFuZGluZyB3b3JrIChETUEgY29waWVzKSB0byBiZSBjb21wbGV0ZWQNCj4gPj4+Pj4gKCJk ZWZlcnJlZCB3b3JrIikgYW5kIGNhbGxzIHRoZSBnZW5lcmljIGNvbXBsZXRpb24gZnVuY3Rpb24g YXQNCj4gPj4+Pj4gdGhhdCBwb2ludC4NCj4gPj4+Pj4NCj4gPj4+Pj4gU28gImRlZmVyIHdvcmsi IGlzIGdlbmVyaWMgaW5mcmFzdHJ1Y3R1cmUgYXQgdGhlIE9WUyB0aHJlYWQgbGV2ZWwNCj4gPj4+ Pj4gdG8gaGFuZGxlIHdvcmsgdGhhdCBuZWVkcyB0byBiZSBkb25lICJsYXRlciIsIGUuZy4gRE1B IGNvbXBsZXRpb24NCj4gPj4+Pj4gaGFuZGxpbmcuDQo+ID4+Pj4+DQo+ID4+Pj4+DQo+ID4+Pj4+ Pj4+IE9yIHNvbWUgc29ydCBvZiBUWF9LZWVwYWxpdmUoKSBmdW5jdGlvbiBjYW4gYmUgYWRkZWQg dG8gdGhlDQo+ID4+Pj4+Pj4+IERQREsNCj4gPj4+Pj4+PiBsaWJyYXJ5LCB0byBoYW5kbGUgRE1B IGNvbXBsZXRpb24uIEl0IG1pZ2h0IGV2ZW4gaGFuZGxlIG11bHRpcGxlDQo+ID4+Pj4+IERNQQ0K PiA+Pj4+Pj4+IGNoYW5uZWxzLCBpZiBjb252ZW5pZW50IC0gYW5kIGlmIHBvc3NpYmxlIHdpdGhv dXQgbG9ja2luZyBvcg0KPiA+Pj4+Pj4+IG90aGVyIHdlaXJkIGNvbXBsZXhpdHkuDQo+ID4+Pj4+ DQo+ID4+Pj4+IFRoYXQncyBleGFjdGx5IGhvdyBpdCBpcyBkb25lLCB0aGUgVkhvc3QgbGlicmFy eSBoYXMgYSBuZXcgQVBJDQo+ID4+Pj4+IGFkZGVkLCB3aGljaCBhbGxvd3MgZm9yIGhhbmRsaW5n IGNvbXBsZXRpb25zLiBBbmQgaW4gdGhlICJOZXRkZXYNCj4gPj4+Pj4gbGF5ZXIiICh+T1ZTIGV0 aGRldg0KPiA+Pj4+PiBhYnN0cmFjdGlvbikNCj4gPj4+Pj4gd2UgYWRkIGEgZnVuY3Rpb24gdG8g YWxsb3cgdGhlIE9WUyB0aHJlYWQgdG8gZG8gdGhvc2UgY29tcGxldGlvbnMNCj4gPj4+Pj4gaW4g YSBuZXcgTmV0ZGV2LWFic3RyYWN0aW9uIEFQSSBjYWxsZWQgImFzeW5jX3Byb2Nlc3MiIHdoZXJl IHRoZQ0KPiA+Pj4+PiBjb21wbGV0aW9ucyBjYW4gYmUgY2hlY2tlZC4NCj4gPj4+Pj4NCj4gPj4+ Pj4gVGhlIG9ubHkgbWV0aG9kIHRvIGFic3RyYWN0IHRoZW0gaXMgdG8gImhpZGUiIHRoZW0gc29t ZXdoZXJlIHRoYXQNCj4gPj4+Pj4gd2lsbCBhbHdheXMgYmUgcG9sbGVkLCBlLmcuIGFuIGV0aGRl diBwb3J0J3MgUlggZnVuY3Rpb24uwqAgQm90aCBWMw0KPiA+Pj4+PiBhbmQgVjQgYXBwcm9hY2hl cyB1c2UgdGhpcyBtZXRob2QuDQo+ID4+Pj4+IFRoaXMgYWxsb3dzICJjb21wbGV0aW9ucyIgdG8g YmUgdHJhbnNwYXJlbnQgdG8gdGhlIGFwcCwgYXQgdGhlDQo+ID4+Pj4+IHRyYWRlb2ZmIHRvIGhh dmluZyBiYWQgc2VwYXJhdGlvbsKgIG9mIGNvbmNlcm5zIGFzIFJ4IGFuZCBUeCBhcmUNCj4gPj4+ Pj4gbm93IHRpZWQtdG9nZXRoZXIuDQo+ID4+Pj4+DQo+ID4+Pj4+IFRoZSBwb2ludCBpcywgdGhl IEFwcGxpY2F0aW9uIGxheWVyIG11c3QgKnNvbWVob3cgKiBoYW5kbGUgb2YNCj4gPj4+Pj4gY29t cGxldGlvbnMuDQo+ID4+Pj4+IFNvIGZ1bmRhbWVudGFsbHkgdGhlcmUgYXJlIDIgb3B0aW9ucyBm b3IgdGhlIEFwcGxpY2F0aW9uIGxldmVsOg0KPiA+Pj4+Pg0KPiA+Pj4+PiBBKSBNYWtlIHRoZSBh cHBsaWNhdGlvbiBwZXJpb2RpY2FsbHkgY2FsbCBhICJoYW5kbGUgY29tcGxldGlvbnMiDQo+ID4+ Pj4+IGZ1bmN0aW9uDQo+ID4+Pj4+IMKgwqDCoMKgQTEpIERlZmVyIHdvcmssIGNhbGwgd2hlbiBu ZWVkZWQsIGFuZCB0cmFjayAibmVlZGVkIiBhdCBhcHANCj4gPj4+Pj4gbGF5ZXIsIGFuZCBjYWxs aW5nIGludG8gdmhvc3QgdHhxIGNvbXBsZXRlIGFzIHJlcXVpcmVkLg0KPiA+Pj4+PiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIEVsZWdhbnQgaW4gdGhhdCAibm8gd29yayIgbWVhbnMgIm5vIGN5Y2xl cyBzcGVudCIgb24NCj4gPj4+Pj4gY2hlY2tpbmcgRE1BIGNvbXBsZXRpb25zLg0KPiA+Pj4+PiDC oMKgwqDCoEEyKSBCcnV0ZS1mb3JjZS1hbHdheXMtY2FsbCwgYW5kIHBheSBzb21lIG92ZXJoZWFk IHdoZW4gbm90DQo+ID4+Pj4+IHJlcXVpcmVkLg0KPiA+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIEN5Y2xlLWNvc3QgaW4gIm5vIHdvcmsiIHNjZW5hcmlvcy4gRGVwZW5kaW5nIG9uICMgb2YN Cj4gPj4+Pj4gdmhvc3QgcXVldWVzLCB0aGlzIGFkZHMgdXAgYXMgcG9sbGluZyByZXF1aXJlZCAq cGVyIHZob3N0IHR4cSouDQo+ID4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQWxzbyBub3Rl IHRoYXQgImNoZWNraW5nIERNQSBjb21wbGV0aW9ucyIgbWVhbnMgdGFraW5nDQo+ID4+Pj4+IGEg dmlydHEtbG9jaywgc28gdGhpcyAiYnJ1dGUtZm9yY2UiIGNhbiBuZWVkbGVzc2x5IGluY3JlYXNl DQo+ID4+Pj4+IHgtdGhyZWFkIGNvbnRlbnRpb24hDQo+ID4+Pj4NCj4gPj4+PiBBIHNpZGUgbm90 ZTogSSBkb24ndCBzZWUgd2h5IGxvY2tpbmcgaXMgcmVxdWlyZWQgdG8gdGVzdCBmb3IgRE1BDQo+ IGNvbXBsZXRpb25zLg0KPiA+Pj4+IHJ0ZV9kbWFfdmNoYW5fc3RhdHVzKCkgaXMgbG9ja2xlc3Ms IGUuZy46DQo+ID4+Pj4NCj4gPj4+IGh0dHBzOi8vZWxpeGlyLmJvb3RsaW4uY29tL2RwZGsvbGF0 ZXN0L3NvdXJjZS9kcml2ZXJzL2RtYS9pb2F0L2lvYXRfDQo+ID4+PiBkbWFkZXYuYyNMDQo+ID4+ PiA1Ng0KPiA+Pj4+IDANCj4gPj4+DQo+ID4+PiBDb3JyZWN0LCBETUEtZGV2IGlzICJldGhkZXYg bGlrZSI7IGVhY2ggRE1BLWlkIGNhbiBiZSB1c2VkIGluIGENCj4gPj4+IGxvY2tmcmVlIG1hbm5l ciBmcm9tIGEgc2luZ2xlIHRocmVhZC4NCj4gPj4+DQo+ID4+PiBUaGUgbG9ja3MgSSByZWZlciB0 byBhcmUgYXQgdGhlIE9WUy1uZXRkZXYgbGV2ZWwsIGFzIHZpcnRxJ3MgYXJlDQo+ID4+PiBzaGFy ZWQgYWNyb3NzIE9WUydzIGRhdGFwbGFuZSB0aHJlYWRzLg0KPiA+Pj4gU28gdGhlICJNIHRvIE4i IGNvbWVzIGZyb20gTSBkYXRhcGxhbmUgdGhyZWFkcyB0byBOIHZpcnRxcywgaGVuY2UNCj4gPj4+ IHJlcXVpcmluZyBzb21lIGxvY2tpbmcuDQo+ID4+Pg0KPiA+Pj4NCj4gPj4+Pj4gQikgSGlkZSBj b21wbGV0aW9ucyBhbmQgbGl2ZSB3aXRoIHRoZSBjb21wbGV4aXR5L2FyY2hpdGVjdHVyYWwNCj4g Pj4+Pj4gc2FjcmlmaWNlIG9mIG1peGVkLVJ4VHguDQo+ID4+Pj4+IMKgwqDCoMKgVmFyaW91cyBk b3duc2lkZXMgaGVyZSBpbiBteSBvcGluaW9uLCBzZWUgdGhlIHNsaWRlIGRlY2sNCj4gPj4+Pj4g cHJlc2VudGVkIGVhcmxpZXIgdG9kYXkgZm9yIGEgc3VtbWFyeS4NCj4gPj4+Pj4NCj4gPj4+Pj4g SW4gbXkgb3BpbmlvbiwgQTEgaXMgdGhlIG1vc3QgZWxlZ2FudCBzb2x1dGlvbiwgYXMgaXQgaGFz IGEgY2xlYW4NCj4gPj4+Pj4gc2VwYXJhdGlvbiBvZiBjb25jZXJucywgZG9lcyBub3TCoCBjYXVz ZSBhdm9pZGFibGUgY29udGVudGlvbiBvbg0KPiA+Pj4+PiB2aXJ0cSBsb2NrcywgYW5kIHNwZW5k cyBubyBjeWNsZXMgd2hlbiB0aGVyZSBpcyBubyBjb21wbGV0aW9uIHdvcmsNCj4gPj4+Pj4gdG8g ZG8uDQo+ID4+Pj4+DQo+ID4+Pj4NCj4gPj4+PiBUaGFuayB5b3UgZm9yIGVsYWJvcmF0aW5nLCBI YXJyeS4NCj4gPj4+DQo+ID4+PiBUaGFua3MgZm9yIHBhcnQtdGFraW5nIGluIHRoZSBkaXNjdXNz aW9uICYgcHJvdmlkaW5nIHlvdXIgaW5zaWdodCENCj4gPj4+DQo+ID4+Pj4gSSBzdHJvbmdseSBv cHBvc2UgYWdhaW5zdCBoaWRpbmcgYW55IHBhcnQgb2YgVFggcHJvY2Vzc2luZyBpbiBhbiBSWA0K PiA+Pj4+IGZ1bmN0aW9uLiBJdA0KPiA+Pj4gaXMganVzdA0KPiA+Pj4+IHdyb25nIGluIHNvIG1h bnkgd2F5cyENCj4gPj4+Pg0KPiA+Pj4+IEkgYWdyZWUgdGhhdCBBMSBpcyB0aGUgbW9zdCBlbGVn YW50IHNvbHV0aW9uLiBBbmQgYmVpbmcgdGhlIG1vc3QNCj4gPj4+PiBlbGVnYW50DQo+ID4+PiBz b2x1dGlvbiwgaXQNCj4gPj4+PiBpcyBwcm9iYWJseSBhbHNvIHRoZSBtb3N0IGZ1dHVyZSBwcm9v ZiBzb2x1dGlvbi4gOi0pDQo+ID4+Pg0KPiA+Pj4gSSB0aGluayBzbyB0b28sIHllcy4NCj4gPj4+ DQo+ID4+Pj4gSSB3b3VsZCBhbHNvIGxpa2UgdG8gc3RyZXNzIHRoYXQgRE1BIGNvbXBsZXRpb24g aGFuZGxpbmcgYmVsb25ncyBpbg0KPiA+Pj4+IHRoZSBEUERLIGxpYnJhcnksIG5vdCBpbiB0aGUg YXBwbGljYXRpb24uIEFuZCB5ZXMsIHRoZSBhcHBsaWNhdGlvbg0KPiA+Pj4+IHdpbGwgYmUgcmVx dWlyZWQgdG8gY2FsbA0KPiA+Pj4gc29tZQ0KPiA+Pj4+ICJoYW5kbGUgRE1BIGNvbXBsZXRpb25z IiBmdW5jdGlvbiBpbiB0aGUgRFBESyBsaWJyYXJ5LiBCdXQgc2luY2UNCj4gPj4+PiB0aGUNCj4g Pj4+IGFwcGxpY2F0aW9uDQo+ID4+Pj4gYWxyZWFkeSBrbm93cyB0aGF0IGl0IHVzZXMgRE1BLCB0 aGUgYXBwbGljYXRpb24gc2hvdWxkIGFsc28ga25vdw0KPiA+Pj4+IHRoYXQgaXQgbmVlZHMNCj4g Pj4+IHRvDQo+ID4+Pj4gY2FsbCB0aGlzIGV4dHJhIGZ1bmN0aW9uIC0gc28gSSBjb25zaWRlciB0 aGlzIHJlcXVpcmVtZW50IHBlcmZlY3RseQ0KPiBhY2NlcHRhYmxlLg0KPiA+Pj4NCj4gPj4+IEFn cmVlIGhlcmUuDQo+ID4+Pg0KPiA+Pj4+IEkgcHJlZmVyIGlmIHRoZSBEUERLIHZob3N0IGxpYnJh cnkgY2FuIGhpZGUgaXRzIGlubmVyIHdvcmtpbmdzIGZyb20NCj4gPj4+PiB0aGUNCj4gPj4+IGFw cGxpY2F0aW9uLA0KPiA+Pj4+IGFuZCBqdXN0IGV4cG9zZSB0aGUgYWRkaXRpb25hbCAiaGFuZGxl IGNvbXBsZXRpb25zIiBmdW5jdGlvbi4gVGhpcw0KPiA+Pj4+IGFsc28gbWVhbnMNCj4gPj4+IHRo YXQNCj4gPj4+PiB0aGUgaW5uZXIgd29ya2luZ3MgY2FuIGJlIGltcGxlbWVudGVkIGFzICJkZWZl ciB3b3JrIiwgb3IgYnkgc29tZQ0KPiA+Pj4+IG90aGVyIGFsZ29yaXRobS4gQW5kIGl0IGNhbiBi ZSB0d2Vha2VkIGFuZCBvcHRpbWl6ZWQgbGF0ZXIuDQo+ID4+Pg0KPiA+Pj4gWWVzLCB0aGUgY2hv aWNlIGluIGhvdyB0byBjYWxsIHRoZSBoYW5kbGVfY29tcGxldGlvbnMgZnVuY3Rpb24gaXMNCj4g Pj4+IEFwcGxpY2F0aW9uIGxheWVyLg0KPiA+Pj4gRm9yIE9WUyB3ZSBkZXNpZ25lZCBEZWZlciBX b3JrLCBWMyBhbmQgVjQuIEJ1dCBpdCBpcyBhbiBBcHAgbGV2ZWwNCj4gPj4+IGNob2ljZSwgYW5k IGV2ZXJ5IGFwcGxpY2F0aW9uIGlzIGZyZWUgdG8gY2hvb3NlIGl0cyBvd24gbWV0aG9kLg0KPiA+ Pj4NCj4gPj4+PiBUaGlua2luZyBhYm91dCB0aGUgbG9uZyB0ZXJtIHBlcnNwZWN0aXZlLCB0aGlz IGRlc2lnbiBwYXR0ZXJuIGlzDQo+ID4+Pj4gY29tbW9uIGZvcg0KPiA+Pj4gYm90aA0KPiA+Pj4+ IHRoZSB2aG9zdCBsaWJyYXJ5IGFuZCBvdGhlciBEUERLIGxpYnJhcmllcyB0aGF0IGNvdWxkIGJl bmVmaXQgZnJvbSBETUENCj4gKGUuZy4NCj4gPj4+PiB2bXhuZXQzIGFuZCBwY2FwIFBNRHMpLCBz byBpdCBjb3VsZCBiZSBhYnN0cmFjdGVkIGludG8gdGhlIERNQQ0KPiA+Pj4+IGxpYnJhcnkgb3Ig YSBzZXBhcmF0ZSBsaWJyYXJ5LiBCdXQgZm9yIG5vdywgd2Ugc2hvdWxkIGZvY3VzIG9uIHRoZQ0K PiA+Pj4+IHZob3N0IHVzZSBjYXNlLCBhbmQganVzdA0KPiA+Pj4ga2VlcA0KPiA+Pj4+IHRoZSBs b25nIHRlcm0gcm9hZG1hcCBmb3IgdXNpbmcgRE1BIGluIG1pbmQuDQo+ID4+Pg0KPiA+Pj4gVG90 YWxseSBhZ3JlZSB0byBrZWVwIGxvbmcgdGVybSByb2FkbWFwIGluIG1pbmQ7IGJ1dCBJJ20gbm90 IHN1cmUgd2UNCj4gPj4+IGNhbiByZWZhY3RvciBsb2dpYyBvdXQgb2Ygdmhvc3QuIFdoZW4gRE1B LWNvbXBsZXRpb25zIGFycml2ZSwgdGhlDQo+ID4+PiB2aXJ0USBuZWVkcyB0byBiZSB1cGRhdGVk OyB0aGlzIGNhdXNlcyBhIHRpZ2h0IGNvdXBsaW5nIGJldHdlZW4gdGhlDQo+ID4+PiBETUEgY29t cGxldGlvbiBjb3VudCwgYW5kIHRoZSB2aG9zdCBsaWJyYXJ5Lg0KPiA+Pj4NCj4gPj4+IEFzIEls eWEgcmFpc2VkIG9uIHRoZSBjYWxsIHllc3RlcmRheSwgdGhlcmUgaXMgYW4gImluX29yZGVyIg0K PiA+Pj4gcmVxdWlyZW1lbnQgaW4gdGhlIHZob3N0IGxpYnJhcnksIHRoYXQgcGVyIHZpcnRxIHRo ZSBwYWNrZXRzIGFyZQ0KPiA+Pj4gcHJlc2VudGVkIHRvIHRoZSBndWVzdCAiaW4gb3JkZXIiIG9m IGVucXVldWUuDQo+ID4+PiAoVG8gYmUgY2xlYXIsICpub3QqIG9yZGVyIG9mIERNQS1jb21wbGV0 aW9uISBBcyBKaWF5dSBtZW50aW9uZWQsIHRoZQ0KPiA+Pj4gVmhvc3QgbGlicmFyeSBoYW5kbGVz IHRoaXMgdG9kYXkgYnkgcmUtb3JkZXJpbmcgdGhlIERNQQ0KPiA+Pj4gY29tcGxldGlvbnMuKQ0K PiA+Pj4NCj4gPj4+DQo+ID4+Pj4gUmVwaHJhc2luZyB3aGF0IEkgc2FpZCBvbiB0aGUgY29uZmVy ZW5jZSBjYWxsOiBUaGlzIHZob3N0IGRlc2lnbg0KPiA+Pj4+IHdpbGwgYmVjb21lDQo+ID4+PiB0 aGUNCj4gPj4+PiBjb21tb24gZGVzaWduIHBhdHRlcm4gZm9yIHVzaW5nIERNQSBpbiBEUERLIGxp YnJhcmllcy4gSWYgd2UgZ2V0IGl0DQo+ID4+Pj4gd3JvbmcsIHdlDQo+ID4+PiBhcmUNCj4gPj4+ PiBzdHVjayB3aXRoIGl0Lg0KPiA+Pj4NCj4gPj4+IEFncmVlLCBhbmQgaWYgd2UgZ2V0IGl0IHJp Z2h0LCB0aGVuIHdlJ3JlIHN0dWNrIHdpdGggaXQgdG9vISA6KQ0KPiA+Pj4NCj4gPj4+DQo+ID4+ Pj4+Pj4+IEhlcmUgaXMgYW5vdGhlciBpZGVhLCBpbnNwaXJlZCBieSBhIHByZXNlbnRhdGlvbiBh dCBvbmUgb2YgdGhlDQo+ID4+Pj4+IERQREsNCj4gPj4+Pj4+PiBVc2Vyc3BhY2UgY29uZmVyZW5j ZXMuIEl0IG1heSBiZSB3aXNoZnVsIHRoaW5raW5nLCB0aG91Z2g6DQo+ID4+Pj4+Pj4+DQo+ID4+ Pj4+Pj4+IEFkZCBhbiBhZGRpdGlvbmFsIHRyYW5zYWN0aW9uIHRvIGVhY2ggRE1BIGJ1cnN0OyBh IHNwZWNpYWwNCj4gPj4+Pj4+PiB0cmFuc2FjdGlvbiBjb250YWluaW5nIHRoZSBtZW1vcnkgd3Jp dGUgb3BlcmF0aW9uIHRoYXQgbWFrZXMgdGhlDQo+ID4+Pj4+Pj4gZGVzY3JpcHRvcnMgYXZhaWxh YmxlIHRvIHRoZSBWaXJ0aW8gZHJpdmVyLg0KPiA+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+DQo+ID4+Pj4+ Pj4gVGhhdCBpcyBzb21ldGhpbmcgdGhhdCBjYW4gd29yaywgc28gbG9uZyBhcyB0aGUgcmVjZWl2 ZXIgaXMNCj4gPj4+Pj4gb3BlcmF0aW5nDQo+ID4+Pj4+Pj4gaW4NCj4gPj4+Pj4+PiBwb2xsaW5n IG1vZGUuIEZvciBjYXNlcyB3aGVyZSB2aXJ0aW8gaW50ZXJydXB0cyBhcmUgZW5hYmxlZCwgeW91 DQo+ID4+Pj4+IHN0aWxsDQo+ID4+Pj4+Pj4gbmVlZA0KPiA+Pj4+Pj4+IHRvIGRvIGEgd3JpdGUg dG8gdGhlIGV2ZW50ZmQgaW4gdGhlIGtlcm5lbCBpbiB2aG9zdCB0byBzaWduYWwNCj4gPj4+Pj4+ PiB0aGUgdmlydGlvIHNpZGUuIFRoYXQncyBub3Qgc29tZXRoaW5nIHRoYXQgY2FuIGJlIG9mZmxv YWRlZCB0byBhDQo+ID4+Pj4+Pj4gRE1BIGVuZ2luZSwgc2FkbHksIHNvIHdlIHN0aWxsIG5lZWQg c29tZSBmb3JtIG9mIGNvbXBsZXRpb24NCj4gPj4+Pj4+PiBjYWxsLg0KPiA+Pj4+Pj4NCj4gPj4+ Pj4+IEkgZ3Vlc3MgdGhhdCB2aXJ0aW8gaW50ZXJydXB0cyBpcyB0aGUgbW9zdCB3aWRlbHkgZGVw bG95ZWQNCj4gPj4+Pj4+IHNjZW5hcmlvLA0KPiA+Pj4+PiBzbyBsZXQncyBpZ25vcmUNCj4gPj4+ Pj4+IHRoZSBETUEgVFggY29tcGxldGlvbiB0cmFuc2FjdGlvbiBmb3Igbm93IC0gYW5kIGNhbGwg aXQgYQ0KPiA+Pj4+Pj4gcG9zc2libGUNCj4gPj4+Pj4gZnV0dXJlDQo+ID4+Pj4+PiBvcHRpbWl6 YXRpb24gZm9yIHNwZWNpZmljIHVzZSBjYXNlcy4gU28gaXQgc2VlbXMgdGhhdCBzb21lIGZvcm0N Cj4gPj4+Pj4+IG9mDQo+ID4+Pj4+IGNvbXBsZXRpb24gY2FsbA0KPiA+Pj4+Pj4gaXMgdW5hdm9p ZGFibGUuDQo+ID4+Pj4+DQo+ID4+Pj4+IEFncmVlIHRvIGxlYXZlIHRoaXMgYXNpZGUsIHRoZXJl IGlzIGluIHRoZW9yeSBhIHBvdGVudGlhbA0KPiA+Pj4+PiBvcHRpbWl6YXRpb24sIGJ1dCB1bmxp a2VseSB0byBiZSBvZiBsYXJnZSB2YWx1ZS4NCj4gPj4+Pj4NCj4gPj4+Pg0KPiA+Pj4+IE9uZSBt b3JlIHRoaW5nOiBXaGVuIHVzaW5nIERNQSB0byBwYXNzIG9uIHBhY2tldHMgaW50byBhIGd1ZXN0 LA0KPiB0aGVyZSBjb3VsZA0KPiA+Pj4gYmUgYQ0KPiA+Pj4+IGRlbGF5IGZyb20gdGhlIERNQSBj b21wbGV0ZXMgdW50aWwgdGhlIGd1ZXN0IGlzIHNpZ25hbGVkLiBJcyB0aGVyZSBhbnkNCj4gQ1BV DQo+ID4+PiBjYWNoZQ0KPiA+Pj4+IGhvdG5lc3MgcmVnYXJkaW5nIHRoZSBndWVzdCdzIGFjY2Vz cyB0byB0aGUgcGFja2V0IGRhdGEgdG8gY29uc2lkZXIgaGVyZT8NCj4gSS5lLiBpZg0KPiA+Pj4g d2UNCj4gPj4+PiB3YWl0IHNpZ25hbGluZyB0aGUgZ3Vlc3QsIHRoZSBwYWNrZXQgZGF0YSBtYXkg Z2V0IGNvbGQuDQo+ID4+Pg0KPiA+Pj4gSW50ZXJlc3RpbmcgcXVlc3Rpb247IHdlIGNhbiBsaWtl bHkgc3Bhd24gYSBuZXcgdGhyZWFkIGFyb3VuZCB0aGlzIHRvcGljIQ0KPiA+Pj4gSW4gc2hvcnQs IGl0IGRlcGVuZHMgb24gaG93L3doZXJlIHRoZSBETUEgaGFyZHdhcmUgd3JpdGVzIHRoZSBjb3B5 Lg0KPiA+Pj4NCj4gPj4+IFdpdGggdGVjaG5vbG9naWVzIGxpa2UgRERJTywgdGhlICJkZXN0IiBw YXJ0IG9mIHRoZSBjb3B5IHdpbGwgYmUgaW4gTExDLg0KPiBUaGUgY29yZQ0KPiA+Pj4gcmVhZGlu ZyB0aGUNCj4gPj4+IGRlc3QgZGF0YSB3aWxsIGJlbmVmaXQgZnJvbSB0aGUgTExDIGxvY2FsaXR5 IChpbnN0ZWFkIG9mIHNub29waW5nIGl0IGZyb20gYQ0KPiByZW1vdGUNCj4gPj4+IGNvcmUncyBM MS9MMikuDQo+ID4+Pg0KPiA+Pj4gRGVsYXlzIGluIG5vdGlmeWluZyB0aGUgZ3Vlc3QgY291bGQg cmVzdWx0IGluIExMQyBjYXBhY2l0eSBldmljdGlvbiwgeWVzLg0KPiA+Pj4gVGhlIGFwcGxpY2F0 aW9uIGxheWVyIGRlY2lkZXMgaG93IG9mdGVuL3Byb21wdGx5IHRvIGNoZWNrIGZvcg0KPiBjb21w bGV0aW9ucywNCj4gPj4+IGFuZCBub3RpZnkgdGhlIGd1ZXN0IG9mIHRoZW0uIENhbGxpbmcgdGhl IGZ1bmN0aW9uIG1vcmUgb2Z0ZW4gd2lsbCByZXN1bHQNCj4gaW4gbGVzcw0KPiA+Pj4gZGVsYXkg aW4gdGhhdCBwb3J0aW9uIG9mIHRoZSBwaXBlbGluZS4NCj4gPj4+DQo+ID4+PiBPdmVyYWxsLCB0 aGVyZSBhcmUgY2FjaGluZyBiZW5lZml0cyB3aXRoIERNQSBhY2NlbGVyYXRpb24sIGFuZCB0aGUN Cj4gYXBwbGljYXRpb24NCj4gPj4+IGNhbiBjb250cm9sDQo+ID4+PiB0aGUgbGF0ZW5jeSBpbnRy b2R1Y2VkIGJldHdlZW4gZG1hLWNvbXBsZXRpb24gZG9uZSBpbiBIVywgYW5kIEd1ZXN0DQo+IHZy aW5nDQo+ID4+PiB1cGRhdGUuDQo+ID4+DQo+ID4NCg0K