From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 134.134.136.20, mailfrom: michael.d.kinney@intel.com) Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by groups.io with SMTP; Wed, 22 May 2019 19:32:06 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 22 May 2019 19:32:05 -0700 X-ExtLoop1: 1 Received: from orsmsx105.amr.corp.intel.com ([10.22.225.132]) by fmsmga007.fm.intel.com with ESMTP; 22 May 2019 19:32:05 -0700 Received: from orsmsx155.amr.corp.intel.com (10.22.240.21) by ORSMSX105.amr.corp.intel.com (10.22.225.132) with Microsoft SMTP Server (TLS) id 14.3.408.0; Wed, 22 May 2019 19:32:05 -0700 Received: from orsmsx113.amr.corp.intel.com ([169.254.9.231]) by ORSMSX155.amr.corp.intel.com ([169.254.7.142]) with mapi id 14.03.0415.000; Wed, 22 May 2019 19:32:05 -0700 From: "Michael D Kinney" To: Laszlo Ersek , "devel@edk2.groups.io" , "sean.brogan@microsoft.com" , "Kinney, Michael D" Subject: Re: [edk2-devel] RFC for Edk2-Library Thread-Topic: [edk2-devel] RFC for Edk2-Library Thread-Index: AQHVBR1gzyAh0v7/oEeSRuZO3ilWVqZhc3aAgAGit7CAAMmKAP//mb8QgAXjxoCAAAFWgIAAoXkAgA4RMVA= Date: Thu, 23 May 2019 02:32:04 +0000 Message-ID: References: <24030.1557264917803034398@groups.io> <46700279-e217-0a45-8637-9c24cb5cc4eb@redhat.com> <7412bfb8-ff72-5b2e-8389-f2c9cbea71d1@redhat.com> In-Reply-To: <7412bfb8-ff72-5b2e-8389-f2c9cbea71d1@redhat.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.0.600.7 dlp-reaction: no-action x-originating-ip: [10.22.254.138] MIME-Version: 1.0 Return-Path: michael.d.kinney@intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgU2VhbiwNCg0KQ2FuIHlvdSBzZW5kIGFuIFJGQyBWMiB0aGF0IG1ha2VzIHRoZSBmb2xsb3dp bmcgY2hhbmdlczoNCg0KMSkgQWRkIHVzZSBvZiBweXRob24gdmlydHVhbCBlbnZpcm9ubWVudHMN CjIpIFVwZGF0ZSBSZXBvc2l0b3J5IG5hbWU6IGVkazItdG9vbHMtbGlicmFyeQ0KMykgUHJvdmlk ZSBhIHN1bW1hcnkgb2YgdGhlIEFQSXMvU2VydmljZXMgdGhhdCB0aGlzIFBJUCBtb2R1bGUgDQog ICBwcm92aWRlcyBhbmQgdGhlIEFQSXMvU2VydmljZXMgZnJvbSB0aGUgZWRrMiByZXBvIHRoYXQg dGhpcw0KICAgUElQIG1vZHVsZSBkZXBlbmRzIG9uLg0KNCkgQ29udHJpYnV0aW9uIHByb2Nlc3Mu ICBBZGQgcmVjb21tZW5kYXRpb24gdGhhdCBQUnMgYmUgZm9jdXNlZA0KICAgb24gY2hhbmdlcyB0 aGF0IG1ha2Ugc2Vuc2UgdG8gYmUgc3F1YXNoZWQuICBTdWJtaXQgYSBkaWZmZXJlbnQNCiAgIFBS IGZvciBhIGRpZmZlcmVudCBmZWF0dXJlL2lzc3VlLiAgQnJlYWsgdXAgYSBjb21wbGV4IFBSIGlu dG8NCiAgIG11bHRpcGxlIFBScy4NCjUpIFJlbW92ZSB0aGUgZm9sbG93aW5nIGJ1bGxldDoNCg0K ICAgIiogUG90ZW50aWFsbHkgbW92ZSBjb250ZW50IGZyb20gYmFzZXRvb2xzL3NvdXJjZS9weXRo b24vY29tbW9uLyoiDQoNCiAgIFdlIGNhbiBkaXNjdXNzIHRoaXMgY29uY2VwdCBhZnRlciBUaWFu b0NvcmUgcGxhdGZvcm1zIGFyZQ0KICAgc3VjY2Vzc2Z1bGx5IHVzaW5nIHRoZXNlIG5ldyBmZWF0 dXJlcyBhbmQgdGhlIG92ZXJsYXAgYmV0d2Vlbg0KICAgdGhlIGVkazIgcmVwbyBhbmQgZWRrMi10 b29scy1saWJyYXJ5IHJlcG8gaXMgY2xlYXJseSB1bmRlcnN0b29kLg0KDQpBIGZvbGxvdyBvbiB0 YXNrIHNob3VsZCBldmFsdWF0ZSBHaXRIdWIgUFIgb3B0aW9ucyBmb3Igc3VibWl0dGluZw0KYW5k IHByZXNlcnZpbmcgYSBwYXRjaCBzZXJpZXMuDQoNClRoYW5rcywNCg0KTWlrZQ0KDQoNCj4gLS0t LS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTGFzemxvIEVyc2VrIFttYWlsdG86bGVy c2VrQHJlZGhhdC5jb21dDQo+IFNlbnQ6IE1vbmRheSwgTWF5IDEzLCAyMDE5IDE6MjkgUE0NCj4g VG86IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT47DQo+IGRl dmVsQGVkazIuZ3JvdXBzLmlvOyBzZWFuLmJyb2dhbkBtaWNyb3NvZnQuY29tDQo+IFN1YmplY3Q6 IFJlOiBbZWRrMi1kZXZlbF0gUkZDIGZvciBFZGsyLUxpYnJhcnkNCj4gDQo+IE9uIDA1LzEzLzE5 IDIwOjIwLCBLaW5uZXksIE1pY2hhZWwgRCB3cm90ZToNCj4gPiBMYXN6bG8sDQo+ID4NCj4gPiBP biBXaW5kb3dzIGJ1aWxkIHN5c3RlbXMsIHdlIGhhdmUgdG8gaW5zdGFsbCBPcGVuU1NMDQo+IGNv bW1hbmQgbGluZQ0KPiA+IHV0aWxpdGllcy4gIEZvciBhbGwgaG9zdCBzeXN0ZW1zLCB0aGUgT3Bl blNTTCBjb21tYW5kDQo+IGxpbmUNCj4gPiB1dGlsaXRpZXMgbmVlZCB0byBiZSBpbiB0aGUgc3lz dGVtIHBhdGguICBNeSBwb2ludCBpcw0KPiB0aGF0IHRoaXMNCj4gPiBpcyBzaW1pbGFyIHRvIG90 aGVyIGRlcGVuZGVuY2llcyBsaWtlIGlBU0wgYW5kIE5BU00uDQo+IA0KPiBPSy4gSSB0aGluayBJ IG11c3QgaGF2ZSBtaXN1bmRlcnN0b29kIHlvdSBhdCBzb21lIHBvaW50Lg0KPiBTb3JyeSBhYm91 dCB0aGF0Lg0KPiANCj4gPiBGb3IgdGhlIHBhdGNoIGRpc2N1c3Npb24sIEkgZGlkIG5vdCBtZWFu IHRvIGNvbmZ1c2UNCj4gdGhpbmdzLiAgRnJvbQ0KPiA+IG9uZSBwZXJzcGVjdGl2ZSwgdGhlcmUg YXJlIHR3byB0eXBlcyBvZiBwYXRjaA0KPiBzdWJtaXNzaW9ucy4gIFNpbmdsZQ0KPiA+IGNvbW1p dCAobm8gc2VyaWVzKSBhbmQgbXVsdGlwbGUgY29tbWl0cyAocGF0Y2ggc2VyaWVzKS4NCj4gVGhl IHNxdWFzaA0KPiA+IG1lcmdlIG9mIGEgUFIgd29ya3MganVzdCBmaW5lIGZvciB0aGUgc2luZ2xl IGNvbW1pdCAobm8NCj4gc2VyaWVzKSB0eXBlLg0KPiA+IFRoZXJlIG1heSBiZSBmZWVkYmFjay9j b21tZW50cyB0aGF0IHJlcXVpcmUgY29kZQ0KPiBjaGFuZ2VzIGFuZCBvbmNlIHRoZQ0KPiA+IFBS IGlzIGFjY2VwdGVkLCB0aGUgaGlzdG9yeSBpbiB0aGUgcmVwb3NpdG9yeSBzaG93cyBhDQo+IHNp bmdsZSBjb21taXQuDQo+ID4gQXMgdGhlIFBSIGV2b2x2ZXMsIGNvbW1pdHMgYXJlIG1hZGUgb24g dGhlIFBSIHRvDQo+IGFkZHJlc3MgZWFjaCBwaWVjZQ0KPiA+IG9mIGZlZWRiYWNrLiAgU3F1YXNo aW5nIGFsbCBvZiB0aGVzZSB0b2dldGhlciBhdCB0aGUNCj4gdGltZSB0aGUgUFIgaXMNCj4gPiBh Y2NlcHRlZCBpcyB0aGUgY29ycmVjdCBhY3Rpb24gYW5kIG1hdGNoZXMgd2hhdCB3ZSBkbw0KPiB0 aGUgZm9yIGVtYWlsDQo+ID4gYmFzZWQgcmV2aWV3IHByb2Nlc3MuICBUaGUgZmluYWwgcmVzdWx0 IGZvciBib3RoIFBSIGFuZA0KPiBlbWFpbCBpcyBhDQo+ID4gc2luZ2xlIGNvbW1pdCB3aXRoIGEg Y2xlYW5lZCB1cCBjb21taXQgbWVzc2FnZS4NCj4gDQo+IE9LLg0KPiANCj4gPiBZb3UgbWF5IGNv bnNpZGVyIHRoZSBzaW5nbGUgY29tbWl0IChubyBzZXJpZXMpIHR5cGUNCj4gbW9yZSByYXJlIHRo YW4gdGhlDQo+ID4gbXVsdGlwbGUgY29tbWl0IChwYXRjaCBzZXJpZXMpIHR5cGUuICBIb3dldmVy LCB0aGVyZQ0KPiBtYXkgYmUgY2FzZXMgd2hlcmUNCj4gPiBhIG11bHRpcGxlIGNvbW1pdCAocGF0 Y2ggc2VyaWVzKSB3YXMgdXNlZCB3aGVyZSB0aGUNCj4gY2hhbmdlcyBjb3VsZCBoYXZlDQo+ID4g YmVlbiBzdWJtaXR0ZWQgYXMgYSBzZXQgb2Ygc2luZ2xlIGNvbW1pdCAobm8gc2VyaWVzKQ0KPiBj aGFuZ2VzLg0KPiANCj4gT0suDQo+IA0KPiBUaGFua3MNCj4gTGFzemxvDQo+IA0KPiA+DQo+ID4g QmVzdCByZWdhcmRzLA0KPiA+DQo+ID4gTWlrZQ0KPiA+DQo+ID4+IC0tLS0tT3JpZ2luYWwgTWVz c2FnZS0tLS0tDQo+ID4+IEZyb206IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+IFttYWlsdG86ZGV2 ZWxAZWRrMi5ncm91cHMuaW9dDQo+ID4+IE9uIEJlaGFsZiBPZiBMYXN6bG8gRXJzZWsNCj4gPj4g U2VudDogTW9uZGF5LCBNYXkgMTMsIDIwMTkgMzo0NiBBTQ0KPiA+PiBUbzogS2lubmV5LCBNaWNo YWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPjsNCj4gPj4gZGV2ZWxAZWRrMi5ncm91 cHMuaW87IHNlYW4uYnJvZ2FuQG1pY3Jvc29mdC5jb20NCj4gPj4gU3ViamVjdDogUmU6IFtlZGsy LWRldmVsXSBSRkMgZm9yIEVkazItTGlicmFyeQ0KPiA+Pg0KPiA+PiBPbiAwNS8xMC8xOSAwMjow MSwgS2lubmV5LCBNaWNoYWVsIEQgd3JvdGU6DQo+ID4+PiBMYXN6bG8sDQo+ID4+Pg0KPiA+Pj4g MSkgV2UgYWxzbyB1c2UgT3BlblNTTCBjb21tYW5kIGxpbmUgdG9vbCB0byBsb2NhbGx5DQo+ID4+ IHNpZ24NCj4gPj4+ICAgIGNhcHN1bGVzIGFuZCByZWNvdmVyeSBpbWFnZXMgZm9yIGxvY2FsIHRl c3RpbmcuDQo+IFNvDQo+ID4+IGJvdGgNCj4gPj4+ICAgIHRvb2wgZGVwZW5kZW5jeSBhbmQgc291 cmNlIGRlcGVuZGVuY3kgYXBwbHkgdG8gdGhlDQo+ID4+IE9wZW5TU0wNCj4gPj4+ICAgIGNvbnRl bnQuDQo+ID4+DQo+ID4+IEkgaGF2ZW4ndCB1c2VkIHRoZSB0b29scyB5ZXQgdGhhdCB5b3UgcmVm ZXIgdG8sIHNvIEknbQ0KPiA+PiB1bnN1cmUgaG93DQo+ID4+IGV4YWN0bHkgdGhleSBpbnZva2Ug dGhlICJvcGVuc3NsIiB1dGlsaXR5LiBJZiB0aGV5DQo+IGp1c3QNCj4gPj4gcmVseSBvbiB0aGUg UEFUSA0KPiA+PiBlbnZpcm9ubWVudCB2YXJpYWJsZSwgdGhlbiB3aGF0IHRoZXkgaW52b2tlIGNv bWVzIGZyb20NCj4gPj4gdGhlIHN5c3RlbS13aWRlDQo+ID4+IG9wZW5zc2wgcGFja2FnZS4NCj4g Pj4NCj4gPj4+DQo+ID4+PiAyKSBJZiBhIGRldiBzdWJtaXRzIGEgUFIsIGFuZCB0aGVyZSBhcmUg bWFueSByZXZpZXcNCj4gPj4gY29tbWVudHMNCj4gPj4+ICAgIHRoYXQgcmVxdWlyZSBjb2RlIGNo YW5nZXMsIHRoZW4gdGhvc2UgY29kZSBjaGFuZ2VzDQo+ID4+IGFyZQ0KPiA+Pj4gICAgYWRkZWQg dG8gdGhhdCBQUiB1bnRpbCBhbGwgZmVlZGJhY2sgaXMgYWRkcmVzc2VkLg0KPiA+Pg0KPiA+PiBJ IGRvbid0IHVuZGVyc3RhbmQgaG93LiBMZXQncyBzYXkgdGhlIHB1bGwgcmVxdWVzdA0KPiByZWZl cnMNCj4gPj4gdG8gYSBicmFuY2gNCj4gPj4gd2l0aCB0aHJlZSBjb21taXRzLCBhbmQgdGhlIG1h am9yaXR5IG9mIHRoZSByZXZpZXcNCj4gPj4gY29tbWVudHMgcmVxdWVzdA0KPiA+PiB1cGRhdGVz IGZvciBwYXRjaCAjMiAoaS5lLiwgaW4gdGhlIG1pZGRsZSkuIEhvdyBjYW4NCj4gdGhlDQo+ID4+ IHN1Ym1pdHRlciAiYWRkDQo+ID4+IGNoYW5nZXMgdG8gdGhlIFBSIj8gSXQgaXMgcGF0Y2ggIzIg dGhhdCBuZWVkcyB0byBiZQ0KPiA+PiByZXdvcmtlZCwgd2hpY2ggd2lsbA0KPiA+PiByZXF1aXJl IHJlYmFzZXMsIGFuZCBzbyB0aGUgaGFzaCBvZiB0aGUgSEVBRCBjb21taXQgb2YNCj4gPj4gdGhl IHRvcGljIGJyYW5jaA0KPiA+PiAocGF0Y2ggIzMpIHdpbGwgY2hhbmdlIGFzIHdlbGwuDQo+ID4+ DQo+ID4+PiAgICBBdCB0aGF0DQo+ID4+PiAgICBwb2ludCwgaWYgdGhlIGNoYW5nZSBpcyBzb21l dGhpbmcgdGhhdCBzaG91bGQgYmUNCj4gaW4NCj4gPj4gYSBzaW5nbGUNCj4gPj4+ICAgIGNvbW1p dCwgdGhlbiBkb2luZyBhIHNxdWFzaCBtZXJnZSB3aXRoIGEgY2xlYW5lZA0KPiB1cA0KPiA+PiBj b21taXQNCj4gPj4+ICAgIG1lc3NhZ2Ugd291bGQgYmUgYXBwcm9wcmlhdGUuDQo+ID4+DQo+ID4+ IEkgZG9uJ3QgdW5kZXJzdGFuZCAtLSB3ZSBtb2RpZnkgb25seSBwYXRjaCAjMiwgeWVzLCB0bw0K PiA+PiBhZGRyZXNzIHJldmlldw0KPiA+PiBjb21tZW50cywgYnV0IHdoeSBkb2VzIHRoYXQganVz dGlmeSBzcXVhc2hpbmcgIzENCj4gdGhyb3VnaA0KPiA+PiAjMyBpbnRvIGENCj4gPj4gc2luZ2xl IGNvbW1pdD8NCj4gPj4NCj4gPj4+ICAgIEFuZCB0aGUgaGlzdG9yeSBvZiBhbGwgdGhlDQo+ID4+ PiAgICByZXZpZXcgZmVlZGJhY2sgcHJlc2VydmVkIGluIHRoZSBQUi4NCj4gPj4NCj4gPj4gVGhh dCdzIGdvb2QgKGJ1dCBpdCBjb3VsZCBiZSBiZXR0ZXIgLS0gc2VlIHRoZSBsYWNraW5nDQo+ID4+ IGVtYWlsDQo+ID4+IGludGVncmF0aW9uLiBBbnl3YXkgdGhpcyBpcyBub3Qgc3RyaWN0bHkgdGll ZCB0byBteQ0KPiA+PiBjb25jZXJuIHdpdGgNCj4gPj4gc3F1YXNoLW9uLW1lcmdlKS4NCj4gPj4N Cj4gPj4+DQo+ID4+PiAgICBJZiB3ZSBjcmVhdGUgYSAybmQgUFIgd2l0aCB0aGUgY2xlYW5lZCB1 cCBjb250ZW50LA0KPiA+PiB0aGVuIHRoZQ0KPiA+Pj4gICAgY29ubmVjdGlvbiB0byB0aGUgMXN0 IFBSIGZlZWRiYWNrIG1heSBiZSBsb3N0LiAgSQ0KPiA+PiBhZ3JlZSB0aGlzDQo+ID4+PiAgICBt YXRjaGVzIHdoYXQgd2UgZG8gaW4gZW1haWwgcmV2aWV3cyB0byBjcmVhdGUgYSBWMg0KPiA+PiBw YXRjaCBzZXJpZXMuDQo+ID4+PiAgICBUaGUgVjEgYW5kIFYyIHRocmVhZHMgYXJlIGluIHRoZSBl bWFpbCBhcmNoaXZlLg0KPiA+Pg0KPiA+PiBJbmRlZWQuIEFuZCB0aGUgYmx1cmIgZm9yIGJvdGgg dGhyZWFkcyByZWZlcmVuY2UgdGhlDQo+ID4+IGJ1Z3ppbGxhLCBhbmQgdGhlDQo+ID4+IGJ1Z3pp bGxhIGhhcyAoaWYgdGhlIHN1Ym1pdHRlciBpcyBjYXJlZnVsKSBjb21tZW50cw0KPiA+PiBsaW5r aW5nIHRoZSB2MSBhbmQNCj4gPj4gdjIgdGhyZWFkcyBmcm9tIHRoZSBlbWFpbCBhcmNoaXZlLg0K PiA+Pg0KPiA+Pj4gICAgSSB3b25kZXIgaWYNCj4gPj4+ICAgIHRoZXJlIGlzIGEgd2F5IHRvIGxp bmsgYSAybmQgUFIgdG8gdGhlIDFzdCBQUiBhbmQNCj4gPj4gZ3VhcmFudGVlDQo+ID4+PiAgICB0 aGF0IGJvdGggUFJzIGFyZSBwcmVzZXJ2ZWQ/ICBUaGlzIHdvdWxkIGFsc28NCj4gYWxsb3cNCj4g Pj4gdGhlIDJuZA0KPiA+Pj4gICAgY2xlYW5lZCB1cCBQUiB0byBjb250YWluIGEgc2VyaWVzLCBh bmQgaWYgdGhlcmUNCj4gd2FzDQo+ID4+IGEgd2F5IHRvDQo+ID4+PiAgICBtYWtlIHRoZSBzcXVh c2ggbWVyZ2Ugb3B0aW9uYWwsIHRoZW4gdGhlIGRldmVsb3Blcg0KPiA+PiBjYW4gY2hvb3NlDQo+ ID4+PiAgICB0aGUgd2F5IHRoZSBwYXRjaGVzIGFyZSBjb21taXR0ZWQuDQo+ID4+DQo+ID4+IFRo aXMgc291bmRzIGdyZWF0ISBJIHRoaW5rIGJvdGggUFJzIGNhbiByZWZlcmVuY2UgdGhlDQo+ID4+ IGJ1Z3ppbGxhIHRpY2tldCwNCj4gPj4gYW5kIHRoZSBidWd6aWxsYSB0aWNrZXQgY2FuIHJlZmVy ZW5jZSBib3RoIFBScyB0b28gKGFzDQo+ID4+IGNvbW1lbnRzKS4gVGhlDQo+ID4+IGZpcnN0IFBS IGNhbiBiZSByZWplY3RlZCAmIGNsb3NlZCB3aGVuIHRoZSBzZWNvbmQgb25lDQo+IGlzDQo+ID4+ IHN1Ym1pdHRlZC4NCj4gPj4NCj4gPj4+ICAgIEp1c3QgYSBmZXcgaWRlYXMgdG8gZXhwbG9yZS4u LlBlcmhhcHMgU2VhbiBjYW4NCj4gPj4gcHJvdmlkZSBzb21lDQo+ID4+PiAgICBhZGRpdGlvbmFs IGlkZWFzIHRvIG1hbmFnZSBjb21wbGV4IGNoYW5nZXMgaW4gUFJzLg0KPiA+Pg0KPiA+PiBUaGFu a3MhDQo+ID4+IExhc3psbw0KPiA+Pg0KPiA+Pj4NCj4gPj4+IEJlc3QgcmVnYXJkcywNCj4gPj4+ DQo+ID4+PiBNaWtlDQo+ID4+Pg0KPiA+Pj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ ID4+Pj4gRnJvbTogTGFzemxvIEVyc2VrIFttYWlsdG86bGVyc2VrQHJlZGhhdC5jb21dDQo+ID4+ Pj4gU2VudDogVGh1cnNkYXksIE1heSA5LCAyMDE5IDM6NTYgUE0NCj4gPj4+PiBUbzogS2lubmV5 LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPjsNCj4gPj4+PiBkZXZlbEBl ZGsyLmdyb3Vwcy5pbzsgc2Vhbi5icm9nYW5AbWljcm9zb2Z0LmNvbQ0KPiA+Pj4+IFN1YmplY3Q6 IFJlOiBbZWRrMi1kZXZlbF0gUkZDIGZvciBFZGsyLUxpYnJhcnkNCj4gPj4+Pg0KPiA+Pj4+IE9u IDA1LzA5LzE5IDIwOjA2LCBLaW5uZXksIE1pY2hhZWwgRCB3cm90ZToNCj4gPj4+Pj4gSGVsbG8s DQo+ID4+Pj4+DQo+ID4+Pj4+IEl0IGlzIGRpZmZpY3VsdCB0byB0ZWxsIGlmIHRoZSByZXBvIG5h bWUgZWRrMi0NCj4gbGlicmFyeQ0KPiA+Pj4+IGlzIGZvciBmaXJtd2FyZQ0KPiA+Pj4+PiBvciB0 b29scywgc28gSSByZWNvbW1lbmQgd2Ugd29yayBvbiBhIG5hbWUgdGhhdA0KPiA+PiBjbGVhcmx5 DQo+ID4+Pj4gaWRlbnRpZmllcw0KPiA+Pj4+PiB0aGF0IHRoaXMgcmVwbyBpcyByZWxhdGVkIHRv IHRvb2xzLg0KPiA+Pj4+DQo+ID4+Pj4gR29vZCBpZGVhLg0KPiA+Pj4+DQo+ID4+Pj4+IEZvciB0 aGUgcGlwIGRlcGVuZGVuY2llcywgaXMgdGhlIGNvbmNlcm4gdGhhdCBhDQo+ID4+Pj4gcGxhdGZv cm0gdGhhdCBkZXBlbmRzDQo+ID4+Pj4+IG9uIHRoZXNlIHRvb2xzIHdpbGwgbm90IGJlIGJ1aWxk YWJsZSB3aXRob3V0DQo+IHJ1bm5pbmcNCj4gPj4gYQ0KPiA+Pj4+ICJwaXAgaW5zdGFsbCINCj4g Pj4+Pj4gY29tbWFuZCB0aGF0IHB1bGxzIGNvbnRlbnQgZnJvbSB0aGUgbmV0d29yaz8NCj4gPj4+ Pg0KPiA+Pj4+IEFsbW9zdC4gTm90IGV4YWN0bHkuDQo+ID4+Pj4NCj4gPj4+PiBGaXJzdCwgdGhl IGNvbmNlcm4gaXMgbm90IHNwZWNpZmljIHRvIGFueSBnaXZlbg0KPiA+PiBwbGF0Zm9ybS4NCj4g Pj4+PiBNeQ0KPiA+Pj4+IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCB0aGUgZXh0cmFjdGlvbiB3b3Vs ZCB0YXJnZXQsDQo+IGluDQo+ID4+IHRoZQ0KPiA+Pj4+IGxvbmdlciB0ZXJtLA0KPiA+Pj4+IGdl bmVyYWwgQmFzZVRvb2xzIGZ1bmN0aW9uYWxpdHkuIFRoYXQgd291bGQgaW1wYWN0DQo+IGFsbA0K PiA+Pj4+IHBsYXRmb3JtcyB0aGF0DQo+ID4+Pj4gY29uc3VtZSAmIGJ1aWxkIGFnYWluc3QgZWRr Mi4NCj4gPj4+Pg0KPiA+Pj4+IFNlY29uZCwgaXQncyBub3QgdGhlIG5ldHdvcmsgYWNjZXNzIHRo YXQncw0KPiBjb25jZXJuaW5nDQo+ID4+IHBlcg0KPiA+Pj4+IHNlLiBJdCdzIHRoZQ0KPiA+Pj4+ IGNvbXBhdGliaWxpdHkgLyBpbnRlcm9wZXJhdGlvbiB3aXRoIGFueSBnaXZlbiBMaW51eA0KPiA+ Pj4+IGRpc3RyaWJ1dGlvbidzIG93bg0KPiA+Pj4+IChuYXRpdmUpIHBhY2thZ2UgbWFuYWdlbWVu dCBzeXN0ZW0uIFN1Y2ggYSBwYWNrYWdlDQo+ID4+Pj4gbWFuYWdlbWVudCBzeXN0ZW0gaXMNCj4g Pj4+PiBnZW5lcmFsbHkgbm90IHVzZWQgb24gV2luZG93cywgdGhlcmVmb3JlIFdpbmRvd3MNCj4g dXNlcnMNCj4gPj4+PiBhcmUgYWNjdXN0b21lZCB0bw0KPiA+Pj4+IGluc3RhbGxpbmcgc29mdHdh cmUgcGFja2FnZXMgZnJvbSBhIGJvYXRsb2FkIG9mDQo+ID4+IHZlbmRvcnMuDQo+ID4+Pj4gVGhp cyBpcyBub3QgdGhlDQo+ID4+Pj4gY2FzZSBvbiBMaW51eCBkaXN0cm9zIC0tIHlvdXIgZGlzdHJv IHZlbmRvciBvZmZlcnMgYQ0KPiA+Pj4+IGN1cmF0ZWQgc2V0IG9mDQo+ID4+Pj4gcGFja2FnZXMs IHN1Y2ggdGhhdCBldmVyeXRoaW5nIGludGVyb3BlcmF0ZXMgd2l0aA0KPiA+Pj4+IGV2ZXJ5dGhp bmcgKGlkZWFsbHkpLA0KPiA+Pj4+IHRoZXJlIGFyZSBubyBmaWxlIGNvbmZsaWN0cywgdmVyc2lv biBkZXBlbmRlbmNpZXMNCj4gYXJlDQo+ID4+Pj4gaGFuZGxlZA0KPiA+Pj4+IGF1dG9tYXRpY2Fs bHkgKGUuZy4gaWYgeW91IGluc3RhbGwgYSBoaWdoLWxldmVsDQo+ID4+IHBhY2thZ2UsDQo+ID4+ Pj4gaXRzDQo+ID4+Pj4gZGVwZW5kZW5jaWVzIGFyZSBwdWxsZWQgaW4gYXV0b21hdGljYWxseSks IGFuZCBzbw0KPiBvbi4NCj4gPj4+Pg0KPiA+Pj4+IENsZWFybHkgdGhlIGRpc3RybyB2ZW5kb3Ig ZG9lcyBub3QgKmF1dGhvciogYWxsIHRoaXMNCj4gPj4+PiBzb2Z0d2FyZSAoYWx0aG91Z2gNCj4g Pj4+PiB0aGV5IGFyZSBzdHJvbmdseSBlbmNvdXJhZ2VkIHRvIGNvbnRyaWJ1dGUgdG8gdGhlDQo+ ID4+Pj4gdXBzdHJlYW0gc29mdHdhcmUNCj4gPj4+PiBwcm9qZWN0cyB0aGV5IHBhY2thZ2UgYW5k IHNoaXApLiBUaGUgZGlzdHJvIHZlbmRvcg0KPiBpcw0KPiA+Pj4+IHJlc3BvbnNpYmxlIGZvcg0K PiA+Pj4+IHRoZSBpbnRlZ3JhdGlvbiBvZiBhbGwgdGhlc2UgcGFja2FnZXMgaW50byBhDQo+ID4+ IGNvbnNpc3RlbnQNCj4gPj4+PiBPUywgaW50bw0KPiA+Pj4+IGNvbnNpc3RlbnQgZmVhdHVyZSBz ZXRzLCBhbmQgc28gb24uDQo+ID4+Pj4NCj4gPj4+PiAicGlwIiBhbmQgc2ltaWxhciB0b29scyBh cmUgZ2VuZXJhbGx5IHVuZml0IGZvciB0aGlzDQo+ID4+Pj4gYXBwcm9hY2gsIGJlY2F1c2UNCj4g Pj4+PiB0aGV5IGltcGxlbWVudCBhIHBhcmFsbGVsIHBhY2thZ2UgbWFuYWdlbWVudCBzeXN0ZW0s DQo+ID4+IHRvDQo+ID4+Pj4gbXkNCj4gPj4+PiB1bmRlcnN0YW5kaW5nLiBJZiB0aGV5IGFyZSBj YXJlZnVsbHkgdXNlZCBpbiBhDQo+IHVzZXIncw0KPiA+Pj4+IGhvbWUgZGlyZWN0b3J5LA0KPiA+ Pj4+IHRoZXkgbWlnaHQgd29yay4gSWYgcGFja2FnZXMgd2VyZSBpbnN0YWxsZWQgd2l0aA0KPiAi cGlwIg0KPiA+Pj4+IHN5c3RlbS13aWRlLCB0aGV5DQo+ID4+Pj4gd291bGQgYWxtb3N0IGNlcnRh aW5seSBicmVhayAoY29uZmxpY3Qgd2l0aCkgdGhlDQo+ID4+IGRpc3Ryby0NCj4gPj4+PiBwcm92 aWRlZA0KPiA+Pj4+IHBhY2thZ2VzLg0KPiA+Pj4+DQo+ID4+Pj4gVGhlcmVmb3JlLCB3aGVuIHVz ZXJzIHdvdWxkIGxpa2UgdG8gZ2V0IGEgbmV3IHBpZWNlDQo+IG9mDQo+ID4+Pj4gc29mdHdhcmUN Cj4gPj4+PiBwYWNrYWdlZCwgb3IgYW4gZXhpc3RlbnQgcGFja2FnZSByZWZyZXNoZWQgKHRvIGEN Cj4gbW9yZQ0KPiA+Pj4+IHJlY2VudCB1cHN0cmVhbQ0KPiA+Pj4+IHZlcnNpb24pLCB0aGV5IGZp bGUgYSBmZWF0dXJlIHJlcXVzdCB3aXRoIHRoZWlyDQo+IGRpc3Rybw0KPiA+Pj4+IHZlbmRvciAo dW5sZXNzDQo+ID4+Pj4gdGhlIGRpc3RybyB2ZW5kb3IgYWxyZWFkeSB0cmFja3MgdGhlIHVwc3Ry ZWFtDQo+IHByb2plY3QNCj4gPj4+PiBjbG9zZWx5IGFuZA0KPiA+Pj4+IHBlcmZvcm1zIHBlcmlv ZGljIHJlYmFzZXMgYW55d2F5KS4gVGhlbiB0aGUgZGlzdHJvDQo+ID4+IHZlbmRvcg0KPiA+Pj4+ IHNoaXBzIGEgbmV3DQo+ID4+Pj4gKG9yIHJlZnJlc2hlZCkgcGFja2FnZSwgYWdhaW4gbmljZWx5 IGludGVncmF0ZWQgd2l0aA0KPiA+PiB0aGUNCj4gPj4+PiByZXN0IG9mIHRoZQ0KPiA+Pj4+IHN5 c3RlbS4NCj4gPj4+Pg0KPiA+Pj4+PiBXZSBhbHJlYWR5IGhhdmUgdG8gcHVsbCBjb250ZW50IHRv IGdldCB0aGUgc291cmNlcw0KPiA+PiBhbmQNCj4gPj4+PiBwb3RlbnRpYWxseQ0KPiA+Pj4+PiBv dGhlciBkZXBlbmRlbnQgdG9vbHMgKE5BU00sIGlBU0wsIG9wZW5zc2wpLg0KPiA+Pj4+DQo+ID4+ Pj4gWWVzLCB0aGVzZSBhcmUgZ29vZCBleGFtcGxlcyB0byBkZW1vbnN0cmF0ZSB0aGUNCj4gPj4+ PiBkaWZmZXJlbmNlLiBDb25zaWRlcg0KPiA+Pj4+IE5BU00uIElmIGEgV2luZG93cyB1c2VyIHdv dWxkIGxpa2UgdG8gaW5zdGFsbCBOQVNNLA0KPiA+PiB0aGV5DQo+ID4+Pj4gZ29vZ2xlICJOQVNN DQo+ID4+Pj4gZm9yIFdpbmRvd3MiLCB0aGVuIGdvIHRvOg0KPiA+Pj4+DQo+ID4+Pj4NCj4gPj4N Cj4gaHR0cHM6Ly93d3cubmFzbS51cy9wdWIvbmFzbS9yZWxlYXNlYnVpbGRzLzIuMTQuMDIvd2lu NjQvDQo+ID4+Pj4NCj4gPj4+PiBkb3dubG9hZCB0aGUgWklQIGZpbGUgb3IgRVhFIGZpbGUsIGFu ZCBpbnN0YWxsIGl0Lg0KPiA+Pj4+DQo+ID4+Pj4gSW4gY29tcGFyaXNvbiwgYSBGZWRvcmEgdXNl ciBydW5zDQo+ID4+Pj4NCj4gPj4+PiAgIGRuZiBpbnN0YWxsIG5hc20NCj4gPj4+Pg0KPiA+Pj4+ IGFuZCB0aGV5IGdldCB0aGUgcGFja2FnZSBmcm9tIHRoZSBGZWRvcmEgcGFja2FnZQ0KPiA+Pj4+ IHJlcG9zaXRvcnkuIEEgRGViaWFuDQo+ID4+Pj4gdXNlciB3b3VsZCBydW4NCj4gPj4+Pg0KPiA+ Pj4+ICAgYXB0LWdldCBpbnN0YWxsIG5hc20NCj4gPj4+Pg0KPiA+Pj4+IGFuZCB0aGV5IHdvdWxk IGdldCB0aGUgcGFja2FnZSAod2hpY2ggd291bGQgYmUNCj4gPj4gZW50aXJlbHkNCj4gPj4+PiBp bmRlcGVuZGVudCBvZg0KPiA+Pj4+IEZlZG9yYSdzKSBmcm9tIHRoZSBEZWJpYW4gcGFja2FnZSBy ZXBvc2l0b3J5Lg0KPiA+Pj4+DQo+ID4+Pj4gVGhlIHZhcmlvdXMgKkJTRHMgd291bGQgcnVuIGEg dmFyaWFudCBvZg0KPiA+Pj4+DQo+ID4+Pj4gICBwa2dfYWRkIG5hc20NCj4gPj4+Pg0KPiA+Pj4+ IEkgYmVsaWV2ZS4NCj4gPj4+Pg0KPiA+Pj4+IFRoZSBzYW1lIGFwcGxpZXMgdG8gaUFTTC4NCj4g Pj4+Pg0KPiA+Pj4+DQo+ID4+Pj4gT3BlblNTTCBpcyBhIHNwZWNpYWwgY2FzZS4gSXQgaXMgZGlm ZmVyZW50IGZyb20gTkFTTQ0KPiA+PiBhbmQNCj4gPj4+PiBpQVNMLiBOQVNNIGFuZA0KPiA+Pj4+ IGlBU0wgYXJlIG5hdGl2ZSAoaG9zdGVkKSBhcHBsaWNhdGlvbnMsIHNvIGFueSBMaW51eA0KPiA+ Pj4+IGRpc3RybyBjYW4gZWFzaWx5DQo+ID4+Pj4gYnVpbGQgdGhlbSAoZm9yIGl0c2VsZiksIGFu ZCB0aGUgYmluYXJpZXMgY2FuIGJlDQo+ID4+IHNoaXBwZWQNCj4gPj4+PiB0byB1c2VycywgcmVh ZHkNCj4gPj4+PiB0byBydW4uIEJ1dCBmb3IgdGhlIHB1cnBvc2VzIG9mIGVkazIsIE9wZW5TU0wg aXMgbm90DQo+ID4+Pj4gbmVlZGVkIGFzIGEgbmF0aXZlDQo+ID4+Pj4gKGhvc3RlZCkgdXRpbGl0 eSwgbGlrZSBOQVNNIGFuZCBpQVNMIC0tIGl0IGlzIG5lZWRlZA0KPiA+PiBhcyBhDQo+ID4+Pj4g KmNyb3NzLWJ1aWx0Kg0KPiA+Pj4+IHN0YXRpYyBsaWJyYXJ5LCB0YXJnZXRpbmcgdGhlIGZpcm13 YXJlIGFyY2hpdGVjdHVyZQ0KPiA+PiAobm90DQo+ID4+Pj4gdGhlIGhvc3QNCj4gPj4+PiBhcmNo aXRlY3R1cmUpLiBVbmZvcnR1bmF0ZWx5LCBPcGVuU1NMICh0aGUgdXBzdHJlYW0NCj4gPj4+PiBw cm9qZWN0KSBkb2VzIG5vdA0KPiA+Pj4+IGZ1bGx5IHN1cHBvcnQgdGhpcyB1c2UgY2FzZSB5ZXQs IHRoZXJlZm9yZSBMaW51eA0KPiA+PiBkaXN0cm9zDQo+ID4+Pj4gY2Fubm90IGp1c3QNCj4gPj4+ PiBjcm9zcy1jb21waWxlIE9wZW5TU0wgZm9yIGVkazIsIGFuZCBvZmZlciBzdGF0aWMNCj4gPj4g bGlicmFyeQ0KPiA+Pj4+IHBhY2thZ2VzLiBUaGlzDQo+ID4+Pj4gaXMgd2h5IHVwc3RyZWFtIGVk azIgY29uc3VtZXMgT3BlblNTTCB0aHJvdWdoIGEgZ2l0DQo+ID4+Pj4gc3VibW9kdWxlLCBpbiBz b3VyY2UNCj4gPj4+PiBmb3JtLg0KPiA+Pj4+DQo+ID4+Pj4gKkhvd2V2ZXIqOiBjb25jZXB0dWFs bHksIHRoZXJlIGlzIG5vIGRpZmZlcmVuY2UuIEluDQo+ID4+Pj4gRmVkb3JhIGFuZCBSSEVMLCB3 ZQ0KPiA+Pj4+IGRvbid0IGJ1aWxkIE9WTUYgYWdhaW5zdCB1cHN0cmVhbSBPcGVuU1NMLiBXZSBi dWlsZA0KPiBpdA0KPiA+Pj4+IGFnYWluc3QgdGhlDQo+ID4+Pj4gZG93bnN0cmVhbSBPcGVuU1NM IHNvdXJjZSBjb2RlLiBTbyB1bHRpbWF0ZWx5IHRoZXJlDQo+IGlzDQo+ID4+IG5vDQo+ID4+Pj4g ZGlmZmVyZW5jZSBpbg0KPiA+Pj4+IHRoZSBkaXN0cm8gdmVuZG9yJ3MgYXBwcm9hY2ggLS0gdGhl IHNvdXJjZXMgYW5kIHRoZQ0KPiA+Pj4+IGJpbmFyaWVzIGNvbWUgZnJvbQ0KPiA+Pj4+IHRoZSBk aXN0cm8gdmVuZG9yLg0KPiA+Pj4+DQo+ID4+Pj4NCj4gPj4+PiBTbyB3aGF0IGZvbGxvd3MgZnJv bSB0aGlzPyBJdCBtZWFucyB0aGF0LCBmb3IgdXNpbmcNCj4gPj4+PiBCYXNlVG9vbHMgb24gYSBM aW51eA0KPiA+Pj4+IGRpc3RybywgdXNlcnMgd2lsbCBoYXZlIHRvIGluc3RhbGwgc29tZSBleHRy YSBQeXRob24NCj4gPj4+PiBwYWNrYWdlcywgaW4NCj4gPj4+PiBhZGRpdGlvbiB0byBOQVNNIGFu ZCBpQVNMLCBmcm9tIHRoZWlyIHZlbmRvcidzDQo+ID4+Pj4gcmVwb3NpdG9yeS4gSW4gb3RoZXIN Cj4gPj4+PiB3b3JkcywgdGhlICJlZGsyLWxpYnJhcnkiIChvciAiZWRrMi10b29scyIpIHByb2pl Y3QNCj4gPj4+PiBzaG91bGQgZG8gdXBzdHJlYW0NCj4gPj4+PiByZWxlYXNlcywgc28gdGhhdCBM aW51eCBkaXN0cm9zIGNhbiBwYWNrYWdlIHRoZW0gaW4NCj4gPj4gdGhlaXINCj4gPj4+PiBuYXRp dmUgcGFja2FnZQ0KPiA+Pj4+IHN5c3RlbXMuIEFuZCBzb21lIGNvbGxhYm9yYXRpb24gYmV0d2Vl biB1cHN0cmVhbSBhbmQNCj4gPj4+PiBkb3duc3RyZWFtcyBpcw0KPiA+Pj4+IGV4cGVjdGVkIGZv ciB0aGlzLiAoRXhhY3RseSBhcyBpdCBvY2N1cnMgd2l0aCB0aGUNCj4gaUFTTA0KPiA+Pj4+IGFu ZCBOQVNNIHVwc3RyZWFtDQo+ID4+Pj4gcHJvamVjdHMuKQ0KPiA+Pj4+DQo+ID4+Pj4+IENhbiB3 ZSBsaW1pdCB0aGUgaW5pdGlhbCBzY29wZSB0byB0b29scyB0aGF0IGxheWVyDQo+IG9uDQo+ID4+ Pj4gdG9wIG9mIGVkazIsIGFuZA0KPiA+Pj4+PiBhIGRpZmZlcmVudCBmdXR1cmUgUkZDIHdvdWxk IGJlIHJlcXVpcmVkIGlmIHRoZXJlDQo+IGlzDQo+ID4+IGENCj4gPj4+PiBwcm9wb3NhbCBmb3IN Cj4gPj4+Pj4gdGhlIGVkazIgcmVwbyB0byBkZXBlbmQgb24gYW5vdGhlciByZXBvPw0KPiA+Pj4+ DQo+ID4+Pj4gWWVzLCB0aGF0IHdvdWxkIGJlIHZlcnkgbmljZS4NCj4gPj4+Pg0KPiA+Pj4+PiBJ ZiB3ZSBhY2NlcHQgdGhpcyBsaW1pdGVkIHNjb3BlLCBhcmUgdGhlcmUgc3RpbGwNCj4gPj4+PiBj b25jZXJucyBhYm91dA0KPiA+Pj4+PiBpbml0aWFsbHkgdXNpbmcgc3F1YXNoIGNvbW1pdHMgZm9y IGNoYW5nZXMgdG8gdGhlc2UNCj4gPj4+PiB0b29scy4NCj4gPj4+Pg0KPiA+Pj4+IFllcywgSSBz dGlsbCBoYXZlIHRoZSBzYW1lIGNvbmNlcm4gLS0gYWx0aG91Z2ggaXQncw0KPiBhDQo+ID4+Pj4g bWlsZGVyIGNvbmNlcm4sDQo+ID4+Pj4gZGVwZW5kZW50IG9uIGhvdyBsb25nIHNxdWFzaCBtZXJn ZXMgYXJlIHRvbGVyYXRlZC4NCj4gPj4+Pg0KPiA+Pj4+IEFzc3VtZSB0aGF0IGEgc2Vjb25kLCBz ZXBhcmF0ZSBSRkMgZ2V0cyBwb3N0ZWQgZG93bg0KPiA+PiB0aGUNCj4gPj4+PiByb2FkLCBsZXQn cyBzYXkNCj4gPj4+PiBhIHllYXIgaW4sIHdoaWNoIHByb3Bvc2VzIHRvIHJlcGxhY2UgdGhlIGlu LWxpbmUNCj4gPj4+PiBjb21wb25lbnQgRm9vQmFyIG9mDQo+ID4+Pj4gQmFzZVRvb2xzLCB3aXRo IHRoZSBleHRlcm5hbCBwcm9qZWN0ICJlZGsyLWxpYnJhcnkiDQo+ID4+IChvcg0KPiA+Pj4+ICJl ZGsyLXRvb2xzIikuDQo+ID4+Pj4gQXQgdGhhdCBwb2ludCwgdGhlIGdpdCBoaXN0b3J5IGFjY3J1 ZWQgdGh1cyBmYXIsIGluDQo+ID4+IGVkazItDQo+ID4+Pj4gdG9vbHMsIHdvdWxkDQo+ID4+Pj4g c3VkZGVubHkgYmUgaW5oZXJpdGVkIGJ5IGFsbCBCYXNlVG9vbHMgdXNlcnMuIEFuZA0KPiB0aGF0 DQo+ID4+Pj4gaGlzdG9yeSB3b3VsZG4ndA0KPiA+Pj4+IGJlIHJlYWxseSBoZWxwZnVsLg0KPiA+ Pj4+DQo+ID4+Pj4gRm9yIGFuIGV4YW1wbGUsIHdlIG5lZWQgbm90IGxvb2sgcGFzdCB0aGUgZWRr Mg0KPiA+PiByZXBvc2l0b3J5DQo+ID4+Pj4gaXRzZWxmLiBMZXQncw0KPiA+Pj4+IHNheSBJJ2Qg bGlrZSB0byBsZWFybiBhYm91dCB0aGUgaW1wbGVtZW50YXRpb24NCj4gaGlzdG9yeQ0KPiA+PiBv Zg0KPiA+Pj4+IHRoZQ0KPiA+Pj4+IEhhbmRsZVByb3RvY29sKCkgYm9vdCBzZXJ2aWNlLCBpbiBl ZGsyLiBTbyBJIHJ1bjoNCj4gPj4+Pg0KPiA+Pj4+ICQgZ2l0IGJsYW1lIG1hc3RlciAtLQ0KPiA+ PiBNZGVNb2R1bGVQa2cvQ29yZS9EeGUvSGFuZC9IYW5kbGUuYw0KPiA+Pj4+DQo+ID4+Pj4gYW5k IEkgbG9vayB1cCB0aGUgQ29yZUhhbmRsZVByb3RvY29sKCkgZnVuY3Rpb24sIGFuZA0KPiA+PiBm aW5kDQo+ID4+Pj4gdGhpczoNCj4gPj4+Pg0KPiA+Pj4+PiAyOGEwMDI5NzE4OWMzIE1kZU1vZHVs ZVBrZy9Db3JlL0R4ZS9IYW5kL2hhbmRsZS5jDQo+ID4+Pj4gKHlzaGFuZzEgICAgICAgICAgMjAw Ny0wNy0wNCAxMDo1MTo1NCArMDAwMCAgOTMxKQ0KPiA+Pj4+IEVGSV9TVEFUVVMNCj4gPj4+Pj4g MjhhMDAyOTcxODljMyBNZGVNb2R1bGVQa2cvQ29yZS9EeGUvSGFuZC9oYW5kbGUuYw0KPiA+Pj4+ ICh5c2hhbmcxICAgICAgICAgIDIwMDctMDctMDQgMTA6NTE6NTQgKzAwMDAgIDkzMikNCj4gPj4g RUZJQVBJDQo+ID4+Pj4+IDI4YTAwMjk3MTg5YzMgTWRlTW9kdWxlUGtnL0NvcmUvRHhlL0hhbmQv aGFuZGxlLmMNCj4gPj4+PiAoeXNoYW5nMSAgICAgICAgICAyMDA3LTA3LTA0IDEwOjUxOjU0ICsw MDAwICA5MzMpDQo+ID4+Pj4gQ29yZUhhbmRsZVByb3RvY29sICgNCj4gPj4+Pj4gMjhhMDAyOTcx ODljMyBNZGVNb2R1bGVQa2cvQ29yZS9EeGUvSGFuZC9oYW5kbGUuYw0KPiA+Pj4+ICh5c2hhbmcx ICAgICAgICAgIDIwMDctMDctMDQgMTA6NTE6NTQgKzAwMDAgIDkzNCkNCj4gSU4NCj4gPj4+PiBF RklfSEFORExFICAgICAgIFVzZXJIYW5kbGUsDQo+ID4+Pj4+IDI4YTAwMjk3MTg5YzMgTWRlTW9k dWxlUGtnL0NvcmUvRHhlL0hhbmQvaGFuZGxlLmMNCj4gPj4+PiAoeXNoYW5nMSAgICAgICAgICAy MDA3LTA3LTA0IDEwOjUxOjU0ICswMDAwICA5MzUpDQo+IElODQo+ID4+Pj4gRUZJX0dVSUQgICAg ICAgICAqUHJvdG9jb2wsDQo+ID4+Pj4+IDI4YTAwMjk3MTg5YzMgTWRlTW9kdWxlUGtnL0NvcmUv RHhlL0hhbmQvaGFuZGxlLmMNCj4gPj4+PiAoeXNoYW5nMSAgICAgICAgICAyMDA3LTA3LTA0IDEw OjUxOjU0ICswMDAwICA5MzYpDQo+ID4+IE9VVA0KPiA+Pj4+IFZPSUQgICAgICAgICAgICAqKklu dGVyZmFjZQ0KPiA+Pj4+PiAyOGEwMDI5NzE4OWMzIE1kZU1vZHVsZVBrZy9Db3JlL0R4ZS9IYW5k L2hhbmRsZS5jDQo+ID4+Pj4gKHlzaGFuZzEgICAgICAgICAgMjAwNy0wNy0wNCAxMDo1MTo1NCAr MDAwMCAgOTM3KQ0KPiApDQo+ID4+Pj4+IDI4YTAwMjk3MTg5YzMgTWRlTW9kdWxlUGtnL0NvcmUv RHhlL0hhbmQvaGFuZGxlLmMNCj4gPj4+PiAoeXNoYW5nMSAgICAgICAgICAyMDA3LTA3LTA0IDEw OjUxOjU0ICswMDAwICA5MzgpIHsNCj4gPj4+Pj4gMjhhMDAyOTcxODljMyBNZGVNb2R1bGVQa2cv Q29yZS9EeGUvSGFuZC9oYW5kbGUuYw0KPiA+Pj4+ICh5c2hhbmcxICAgICAgICAgIDIwMDctMDct MDQgMTA6NTE6NTQgKzAwMDAgIDkzOSkNCj4gPj4+PiByZXR1cm4gQ29yZU9wZW5Qcm90b2NvbCAo DQo+ID4+Pj4+IDAyMmM2ZDQ1ZWY3ODYgTWRlTW9kdWxlUGtnL0NvcmUvRHhlL0hhbmQvSGFuZGxl LmMNCj4gPj4+PiAocWh1YW5nOCAgICAgICAgICAyMDA4LTA3LTI0IDAyOjU0OjQ1ICswMDAwICA5 NDApDQo+ID4+Pj4gVXNlckhhbmRsZSwNCj4gPj4+Pj4gMDIyYzZkNDVlZjc4NiBNZGVNb2R1bGVQ a2cvQ29yZS9EeGUvSGFuZC9IYW5kbGUuYw0KPiA+Pj4+IChxaHVhbmc4ICAgICAgICAgIDIwMDgt MDctMjQgMDI6NTQ6NDUgKzAwMDAgIDk0MSkNCj4gPj4+PiBQcm90b2NvbCwNCj4gPj4+Pj4gMDIy YzZkNDVlZjc4NiBNZGVNb2R1bGVQa2cvQ29yZS9EeGUvSGFuZC9IYW5kbGUuYw0KPiA+Pj4+IChx aHVhbmc4ICAgICAgICAgIDIwMDgtMDctMjQgMDI6NTQ6NDUgKzAwMDAgIDk0MikNCj4gPj4+PiBJ bnRlcmZhY2UsDQo+ID4+Pj4+IDAyMmM2ZDQ1ZWY3ODYgTWRlTW9kdWxlUGtnL0NvcmUvRHhlL0hh bmQvSGFuZGxlLmMNCj4gPj4+PiAocWh1YW5nOCAgICAgICAgICAyMDA4LTA3LTI0IDAyOjU0OjQ1 ICswMDAwICA5NDMpDQo+ID4+Pj4gZ0R4ZUNvcmVJbWFnZUhhbmRsZSwNCj4gPj4+Pj4gMDIyYzZk NDVlZjc4NiBNZGVNb2R1bGVQa2cvQ29yZS9EeGUvSGFuZC9IYW5kbGUuYw0KPiA+Pj4+IChxaHVh bmc4ICAgICAgICAgIDIwMDgtMDctMjQgMDI6NTQ6NDUgKzAwMDAgIDk0NCkNCj4gPj4+PiBOVUxM LA0KPiA+Pj4+PiAyOGEwMDI5NzE4OWMzIE1kZU1vZHVsZVBrZy9Db3JlL0R4ZS9IYW5kL2hhbmRs ZS5jDQo+ID4+Pj4gKHlzaGFuZzEgICAgICAgICAgMjAwNy0wNy0wNCAxMDo1MTo1NCArMDAwMCAg OTQ1KQ0KPiA+Pj4+IEVGSV9PUEVOX1BST1RPQ09MX0JZX0hBTkRMRV9QUk9UT0NPTA0KPiA+Pj4+ PiAyOGEwMDI5NzE4OWMzIE1kZU1vZHVsZVBrZy9Db3JlL0R4ZS9IYW5kL2hhbmRsZS5jDQo+ID4+ Pj4gKHlzaGFuZzEgICAgICAgICAgMjAwNy0wNy0wNCAxMDo1MTo1NCArMDAwMCAgOTQ2KQ0KPiA+ Pj4+ICk7DQo+ID4+Pj4+IDI4YTAwMjk3MTg5YzMgTWRlTW9kdWxlUGtnL0NvcmUvRHhlL0hhbmQv aGFuZGxlLmMNCj4gPj4+PiAoeXNoYW5nMSAgICAgICAgICAyMDA3LTA3LTA0IDEwOjUxOjU0ICsw MDAwICA5NDcpIH0NCj4gPj4+Pg0KPiA+Pj4+IEludGVyZXN0aW5nLCBpdCBzZWVtcyBsaWtlIHRo ZSBmdW5jdGlvbiB3YXMNCj4gb3JpZ2luYWxseQ0KPiA+Pj4+IGFkZGVkIGluIGNvbW1pdA0KPiA+ Pj4+IDI4YTAwMjk3MTg5YzMsIGFuZCB0aGVuIHRoZSBhcmd1bWVudCBsaXN0IHdhcw0KPiBtb2Rp ZmllZA0KPiA+PiBpbg0KPiA+Pj4+IGNvbW1pdA0KPiA+Pj4+IDAyMmM2ZDQ1ZWY3ODYsIGEgeWVh ciBsYXRlci4gU28gbGV0J3MgY2hlY2sgb3V0IHRoZQ0KPiA+Pj4+IHJhdGlvbmFsZSBmb3IgdGhh dA0KPiA+Pj4+IGFyZ3VtZW50IGxpc3QgdXBkYXRlOg0KPiA+Pj4+DQo+ID4+Pj4gJCBnaXQgc2hv dyAtLWNvbG9yIDAyMmM2ZDQ1ZWY3ODYNCj4gPj4+Pg0KPiA+Pj4+IFdlbGwuLi4gVGhlIGNvbW1p dCBtZXNzYWdlIHNheXMsICJDb2RlIFNjcnViIGZvciBEeGUNCj4gPj4+PiBDb3JlIi4gVGhhdCdz IGFsbC4NCj4gPj4+PiBXZSBhbHNvIGxlYXJuIGl0IGNvbWVzIGZyb20gU1ZOIHJldmlzaW9uIDU1 NjAuIEFuZA0KPiB0aGUNCj4gPj4+PiBkaWZmc3RhdCBmb3IgdGhlDQo+ID4+Pj4gcGF0Y2ggaXM6 DQo+ID4+Pj4NCj4gPj4+Pj4gIDM4IGZpbGVzIGNoYW5nZWQsIDI0OTkgaW5zZXJ0aW9ucygrKSwg MjUwNA0KPiA+PiBkZWxldGlvbnMoLQ0KPiA+Pj4+ICkNCj4gPj4+Pg0KPiA+Pj4+IEl0IGlzIG5v dCBvdmVybHkgaGVscGZ1bC4NCj4gPj4+Pg0KPiA+Pj4+IENsZWFybHksIENvcmVIYW5kbGVQcm90 b2NvbCgpIGlzIGEgc3VwZXItcm9idXN0LA0KPiA+PiBzdXBlci0NCj4gPj4+PiBtYXR1cmUgZnVu Y3Rpb24sDQo+ID4+Pj4gc28gd2UgZG9uJ3QgcmVhbGx5IGNhcmUgZm9yIGl0cyBkZXZlbG9wbWVu dCBoaXN0b3J5DQo+ID4+Pj4gdG9kYXkuDQo+ID4+Pj4NCj4gPj4+PiBJIGJlbGlldmUgdGhlIHNh bWUgd291bGQgbm90IGFwcGx5IHRvIHRoZSAiZWRrMi0NCj4gPj4gbGlicmFyeSINCj4gPj4+PiAo b3INCj4gPj4+PiAiZWRrMi10b29scyIpIHByb2plY3QuIFdoZW4gaXQgcmVwbGFjZWQgdGhlIGlu LWxpbmUNCj4gPj4+PiBjb21wb25lbnQgRm9vQmFyIG9mDQo+ID4+Pj4gQmFzZVRvb2xzLCBpdCdz IHBsYXVzaWJsZSBpdCB3b3VsZCBiZSBzdWRkZW5seQ0KPiBleHBvc2VkDQo+ID4+IHRvDQo+ID4+ Pj4gYSBsYXJnZXINCj4gPj4+PiB1c2VyYmFzZS4gTmV3IGlzc3VlcyB3b3VsZCBiZSBlbmNvdW50 ZXJlZCwgYW5kDQo+IHBlb3BsZQ0KPiA+Pj4+IG1pZ2h0IHdhbnQgdG8gbG9vaw0KPiA+Pj4+IGF0 IHRoZSBnaXQgaGlzdG9yeSAtLSBpZiBmb3Igbm90aGluZyBlbHNlLCB0aGVuDQo+ID4+IHJhdGlv bmFsZQ0KPiA+Pj4+IChjb21taXQNCj4gPj4+PiBtZXNzYWdlcykgb24gc21hbGwgcGFydHMgb2Yg dGhlIGNvZGUuDQo+ID4+Pj4NCj4gPj4+Pg0KPiA+Pj4+IEkgY2FuIGFsc28gbmFtZSBtb3JlIHJl Y2VudCBleGFtcGxlcy4gSSdtIG5vdCBhDQo+ID4+IGZyZXF1ZW50DQo+ID4+Pj4gQmFzZVRvb2xz DQo+ID4+Pj4gY29udHJpYnV0b3IsIGJ1dCBpdCBoYXMgaGFwcGVuZWQgb2NjYXNpb25hbGx5LiAo SSd2ZQ0KPiA+PiBnb3QNCj4gPj4+PiA0MSBwYXRjaGVzIGluDQo+ID4+Pj4gdGhlIGVkazIgZ2l0 IGhpc3RvcnkgdGhhdCB0b3VjaGVkIEJhc2VUb29scy8sIGFzIG9mDQo+ID4+Pj4gY29tbWl0DQo+ ID4+Pj4gMGE1MDZmYzdhYjhiLikNCj4gPj4+Pg0KPiA+Pj4+ICogRm9yDQo+ID4+Pj4NCj4gPGh0 dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9MTU0MDI0ND4sDQo+ID4+ IEkNCj4gPj4+PiBwdXNoZWQNCj4gPj4+PiAgIDUrMSBwYXRjaGVzOg0KPiA+Pj4+DQo+ID4+Pj4g ICAgIDY3OTgzNDg0YTQ0MyBCYXNlVG9vbHMvZm9vdGVyLm1ha2VmaWxlOiBleHBhbmQNCj4gPj4+ PiBCVUlMRF9DRkxBR1MgbGFzdCBmb3IgQyBmaWxlcyB0b28NCj4gPj4+PiAgICAgMDMyNTJhZTI4 N2M0IEJhc2VUb29scy9oZWFkZXIubWFrZWZpbGU6IHJlbW92ZQ0KPiAiLQ0KPiA+PiBjIg0KPiA+ Pj4+IGZyb20gQlVJTERfQ0ZMQUdTDQo+ID4+Pj4gICAgIGI4YTY2MTcwMjY0MyBCYXNlVG9vbHMv U291cmNlL0M6IHNwbGl0ICItTzIiIHRvDQo+ID4+Pj4gQlVJTERfT1BURkxBR1MNCj4gPj4+PiAg ICAgYjBjYTVkYWU3OGZmIEJhc2VUb29scy9Tb3VyY2UvQzogdGFrZQ0KPiA+PiBFWFRSQV9PUFRG TEFHUw0KPiA+Pj4+IGZyb20gdGhlIGNhbGxlcg0KPiA+Pj4+ICAgICA4MTUwMmNlZTIwYWMgQmFz ZVRvb2xzL1NvdXJjZS9DOiB0YWtlDQo+ID4+IEVYVFJBX0xERkxBR1MNCj4gPj4+PiBmcm9tIHRo ZSBjYWxsZXINCj4gPj4+PiAgICAgKw0KPiA+Pj4+ICAgICBhYTRlMGRmMWYwYzcgQmFzZVRvb2xz L1ZmckNvbXBpbGU6IGhvbm9yDQo+ID4+Pj4gRVhUUkFfTERGTEFHUw0KPiA+Pj4+DQo+ID4+Pj4g KiBGb3INCj4gPj4+Pg0KPiA8aHR0cHM6Ly9idWd6aWxsYS50aWFub2NvcmUub3JnL3Nob3dfYnVn LmNnaT9pZD0xMzc3PiwNCj4gPj4gSQ0KPiA+Pj4+IHB1c2hlZCAyNg0KPiA+Pj4+ICAgcGF0Y2hl czoNCj4gPj4+Pg0KPiA+Pj4+ICAgICA4ZmYxMjIxMTk5NDEgRW11bGF0b3JQa2c6IHJlcXVpcmUg R0NDNDggb3IgbGF0ZXINCj4gPj4+PiAgICAgOGQ3Y2RmYWU4Y2I4IE92bWZQa2c6IHJlcXVpcmUg R0NDNDggb3IgbGF0ZXINCj4gPj4+PiAgICAgZmQxNTg0MzdkY2NlIFZsdjJUYmx0RGV2aWNlUGtn OiBhc3N1bWUgR0NDNDggb3INCj4gPj4gbGF0ZXINCj4gPj4+PiAgICAgN2E5ZGJmMmM5NGQxIEJh c2VUb29scy9Db25mL3Rvb2xzX2RlZi50ZW1wbGF0ZToNCj4gPj4gZHJvcA0KPiA+Pj4+IEFSTS9B QVJDSCBzdXBwb3J0IGZyb20gR0NDNDYvR0NDNDcNCj4gPj4+PiAgICAgNDhlNjQ0OThjOTYxIEJh c2VUb29scy90b29sc19kZWYudGVtcGxhdGU6IGZpeA0KPiB1cA0KPiA+PiBMRi0NCj4gPj4+PiBv bmx5IGxpbmUgdGVybWluYXRvcg0KPiA+Pj4+ICAgICA3MzgxYTY2MjdhNjYgQmFzZVRvb2xzL3Rv b2xzX2RlZi50ZW1wbGF0ZTogc3RyaXANCj4gPj4+PiB0cmFpbGluZyB3aGl0ZXNwYWNlDQo+ID4+ Pj4gICAgIDliYmYxNTZmYWFhZCBCYXNlVG9vbHMvdG9vbHNfZGVmLnRlbXBsYXRlOg0KPiByZW1v dmUNCj4gPj4+PiBHQ0M0OF9JQTMyX1g2NF9ETElOS19DT01NT04gZGVhZC1lbmQNCj4gPj4+PiAg ICAgM2M1NjEzYzU5MzJjIEJhc2VUb29scy90b29sc19kZWYudGVtcGxhdGU6DQo+IHJlbW92ZQ0K PiA+Pj4+IEdDQzQ3IGxlYWYgZGVmaW5pdGlvbnMNCj4gPj4+PiAgICAgZmM4N2I4ZDdmNDExIEJh c2VUb29scy90b29sc19kZWYudGVtcGxhdGU6DQo+ID4+IHByb3BhZ2F0ZQ0KPiA+Pj4+IGxvc3Mg b2YgR0NDNDcgcmVmZXJlbmNlcw0KPiA+Pj4+ICAgICA5MWE2N2UwZjExMWUgQmFzZVRvb2xzL3Rv b2xzX2RlZi50ZW1wbGF0ZToNCj4gcmVtb3ZlDQo+ID4+Pj4gR0NDNDcgZG9jdW1lbnRhdGlvbg0K PiA+Pj4+ICAgICAwZjIzNGZiOGE2NjIgQmFzZVRvb2xzL3Rvb2xzX2RlZi50ZW1wbGF0ZToNCj4g cmVtb3ZlDQo+ID4+Pj4gR0NDNDYgbGVhZiBkZWZpbml0aW9ucw0KPiA+Pj4+ICAgICA4M2E4ZjMx Mzg4NGEgQmFzZVRvb2xzL3Rvb2xzX2RlZi50ZW1wbGF0ZToNCj4gPj4gcHJvcGFnYXRlDQo+ID4+ Pj4gbG9zcyBvZiBHQ0M0NiByZWZlcmVuY2VzDQo+ID4+Pj4gICAgIGJlMzU5ZmE3Y2VlYyBCYXNl VG9vbHMvdG9vbHNfZGVmLnRlbXBsYXRlOg0KPiByZW1vdmUNCj4gPj4+PiBHQ0M0NiBkb2N1bWVu dGF0aW9uDQo+ID4+Pj4gICAgIDE0NThhZjBjYmNlMCBCYXNlVG9vbHMvdG9vbHNfZGVmLnRlbXBs YXRlOg0KPiByZW1vdmUNCj4gPj4+PiBHQ0M0NSBsZWFmIGRlZmluaXRpb25zDQo+ID4+Pj4gICAg IDAyNDU3Njg5NmQ0MiBCYXNlVG9vbHMvdG9vbHNfZGVmLnRlbXBsYXRlOg0KPiA+PiBwcm9wYWdh dGUNCj4gPj4+PiBsb3NzIG9mIEdDQzQ1IHJlZmVyZW5jZXMNCj4gPj4+PiAgICAgM2U3N2QyMGY1 Y2IzIEJhc2VUb29scy90b29sc19kZWYudGVtcGxhdGU6DQo+IHJlbW92ZQ0KPiA+Pj4+IEdDQzQ1 IGRvY3VtZW50YXRpb24NCj4gPj4+PiAgICAgZTA0NmRjNjBmYjg5IEJhc2VUb29scy90b29sc19k ZWYudGVtcGxhdGU6DQo+IHJlbW92ZQ0KPiA+Pj4+IEdDQzQ0IGxlYWYgZGVmaW5pdGlvbnMNCj4g Pj4+PiAgICAgMzhjNTcwZWZlZGUwIEJhc2VUb29scy90b29sc19kZWYudGVtcGxhdGU6DQo+ID4+ IHByb3BhZ2F0ZQ0KPiA+Pj4+IGxvc3Mgb2YgR0NDNDQgcmVmZXJlbmNlcw0KPiA+Pj4+ICAgICAz ODNkMjkwOTY4NDYgQmFzZVRvb2xzL3Rvb2xzX2RlZi50ZW1wbGF0ZToNCj4gcmVuYW1lDQo+ID4+ Pj4gR0NDNDRfQUxMX0NDX0ZMQUdTIHRvIEdDQzQ4X0FMTF9DQ19GTEFHUw0KPiA+Pj4+ICAgICAw ZGI5MWRhZjUyMjggQmFzZVRvb2xzL3Rvb2xzX2RlZi50ZW1wbGF0ZToNCj4gPj4gZWxpbWluYXRl DQo+ID4+Pj4gR0NDNDRfSUEzMl9YNjRfRExJTktfRkxBR1MNCj4gPj4+PiAgICAgODRkMjFhYmY0 ZTM2IEJhc2VUb29scy90b29sc19kZWYudGVtcGxhdGU6DQo+IHJlbmFtZQ0KPiA+Pj4+IEdDQzQ0 X0lBMzJfWDY0X0RMSU5LX0NPTU1PTiB0bw0KPiA+Pj4+IEdDQzQ4X0lBMzJfWDY0X0RMSU5LX0NP TU1PTg0KPiA+Pj4+ICAgICA1YzZjY2Q1MzI0NGIgQmFzZVRvb2xzL3Rvb2xzX2RlZi50ZW1wbGF0 ZToNCj4gcmVtb3ZlDQo+ID4+Pj4gY29tbWVudCBhYm91dCBHQ0M0NCArIEx6bWFGODZDb21wcmVz cw0KPiA+Pj4+ICAgICAzYmM2NTMyNmQ2ZWQgQmFzZVRvb2xzL3Rvb2xzX2RlZi50ZW1wbGF0ZToN Cj4gcmVtb3ZlDQo+ID4+Pj4gR0NDNDQgZG9jdW1lbnRhdGlvbg0KPiA+Pj4+ICAgICBmNzI4MjAy M2U3NTggQXJtUGtnL0FybVNvZnRGbG9hdExpYjogZHJvcCBidWlsZA0KPiA+PiBmbGFncw0KPiA+ Pj4+IHNwZWNpZmljIHRvIEdDQzQ2L0dDQzQ3DQo+ID4+Pj4gICAgIDMwMGI4YzVmMTUwYyBDcnlw dG9Qa2cvQmFzZUNyeXB0TGliOiBkcm9wIGJ1aWxkDQo+ID4+IGZsYWdzDQo+ID4+Pj4gc3BlY2lm aWMgdG8gR0NDNDQNCj4gPj4+PiAgICAgNzQyM2JhOWQ0OTliIFJldmVydCAiTWRlUGtnOiBhdm9p ZA0KPiA+Pj4+IF9fYnVpbHRpbl91bnJlYWNoYWJsZSgpIG9uIEdDQyB2NC40Ig0KPiA+Pj4+DQo+ ID4+Pj4gICAoTm90ZSwgZnJvbSB0aGlzIGxpc3QsIDdhOWRiZjJjOTRkMSB3YXMgYXV0aG9yZWQN Cj4gYnkNCj4gPj4+PiBBcmQsIEkganVzdA0KPiA+Pj4+ICAgaW5jbHVkZWQgaXQgYXQgdGhlIHJp Z2h0IHNwb3QuKQ0KPiA+Pj4+DQo+ID4+Pj4gQWxsIG9mIHRoZXNlIHBhdGNoIHNlcmllcyB3ZXJl IGNhcmVmdWxseSBzdHJ1Y3R1cmVkLA0KPiA+PiBhbmQNCj4gPj4+PiBjYXJlZnVsbHkNCj4gPj4+ PiBkb2N1bWVudGVkIChpbiB0aGUgY29tbWl0IG1lc3NhZ2VzKS4gSSB3b3VsZCBoYXZlDQo+IGJl ZW4NCj4gPj4+PiBkZXZhc3RhdGVkLCBoYWQNCj4gPj4+PiB0aGV5IGJlZW4gc3F1YXNoZWQuDQo+ ID4+Pj4NCj4gPj4+PiAoQW5kIGl0IHdvdWxkIGhhdmUgYmVlbiBxdWVzdGlvbmFibGUgdG8gc3F1 YXNoIEFyZCdzDQo+ID4+Pj4gcGF0Y2ggd2l0aCBwYXRjaGVzDQo+ID4+Pj4gYXV0aG9yZWQgYnkg bWUuKQ0KPiA+Pj4+DQo+ID4+Pj4NCj4gPj4+Pj4gSXMgdGhlcmUgYSB3YXkgZm9yIEdpdEh1YiB0 byBzdXBwb3J0IGJvdGggc3F1YXNoDQo+ID4+Pj4gY29tbWl0cyBmb3Igc29tZSBQUnMNCj4gPj4+ Pj4gYW5kIHByZXNlcnZlIGEgcGF0Y2ggc2VyaWVzIGZvciBvdGhlciBQUnM/DQo+ID4+Pj4NCj4g Pj4+PiBJIGRvbid0IGtub3cuDQo+ID4+Pj4NCj4gPj4+PiBCdXQgaG9uZXN0bHksIHdoYXQgaXMg dGhlIHB1cnBvc2Ugb2Ygc3F1YXNoIG1lcmdlcz8NCj4gPj4gRG9uJ3QNCj4gPj4+PiB3ZSBleHBl Y3QNCj4gPj4+PiAqYWxsKiBjb250cmlidXRpb25zIGluIHdlbGwgc3RydWN0dXJlZCBwYXRjaCBz ZXJpZXM/DQo+ID4+Pj4NCj4gPj4+PiBJZiByZXZpZXcgZGlzY292ZXJzIGFuIGlzc3VlIHdpdGgg dGhlIHN0cnVjdHVyZSBvZg0KPiB0aGUNCj4gPj4+PiBzZXJpZXMgKGZvcg0KPiA+Pj4+IGV4YW1w bGUsIG5vdCBidWlsZGFibGUgaW4gdGhlIG1pZGRsZSwgb3IgdGhlIHN0ZXBzDQo+IGFyZQ0KPiA+ Pj4+IG5vdCBsb2dpY2FsIGluDQo+ID4+Pj4gdGhhdCBvcmRlciwgb3Igc29tZSBwYXRjaGVzIGRv IHRvbyBtYW55IHRoaW5ncyBhdA0KPiBvbmNlDQo+ID4+Pj4gYW5kIHNob3VsZCBiZQ0KPiA+Pj4+ IHNwbGl0IHVwLCBvciBhIHBhdGNoIGluIHRoZSBtaWRkbGUgaGFzIGEgdHlwbyksIHRoZQ0KPiA+ PiBmaXhlcw0KPiA+Pj4+IHNob3VsZG4ndCBiZQ0KPiA+Pj4+IGp1c3QgaGVhcGVkIG9uIHRvcC4g VGhlIHN1Ym1pdHRlciBzaG91bGQgcmVzdHJ1Y3R1cmUNCj4gPj4+PiAocmViYXNlKSB0aGUNCj4g Pj4+PiBzZXJpZXMsIGFuZCBzdWJtaXQgdGhlIHJld29ya2VkIHNlcmllcyBvbiBhIG5ldw0KPiB0 b3BpYw0KPiA+Pj4+IGJyYW5jaCAvIHB1bGwNCj4gPj4+PiByZXF1ZXN0Lg0KPiA+Pj4+DQo+ID4+ Pj4gSXNuJ3QgdGhpcyB0aGUgY29udHJpYnV0aW9uIHBhdHRlcm4gd2UnZCBsaWtlIHRvIHNlZQ0K PiA+PiBpbg0KPiA+Pj4+IGFsbA0KPiA+Pj4+IHN1Yi1wcm9qZWN0cywgd2hlcmUgd2UgKHRoZSBU aWFub0NvcmUgY29tbXVuaXR5KQ0KPiBoYXZlDQo+ID4+Pj4gcmV2aWV3ZXIgLw0KPiA+Pj4+IG1h aW50YWluZXIgcmVzcG9uc2liaWxpdGllcz8NCj4gPj4+Pg0KPiA+Pj4+IFRoYW5rcywNCj4gPj4+ PiBMYXN6bG8NCj4gPj4+Pg0KPiA+Pj4+PiBUaGFua3MsDQo+ID4+Pj4+DQo+ID4+Pj4+IE1pa2UN Cj4gPj4+Pj4NCj4gPj4+Pj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+Pj4+PiBG cm9tOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiA+Pj4+IFttYWlsdG86ZGV2ZWxAZWRrMi5ncm91 cHMuaW9dDQo+ID4+Pj4+PiBPbiBCZWhhbGYgT2YgTGFzemxvIEVyc2VrDQo+ID4+Pj4+PiBTZW50 OiBXZWRuZXNkYXksIE1heSA4LCAyMDE5IDI6NTYgQU0NCj4gPj4+Pj4+IFRvOiBkZXZlbEBlZGsy Lmdyb3Vwcy5pbzsNCj4gc2Vhbi5icm9nYW5AbWljcm9zb2Z0LmNvbQ0KPiA+Pj4+Pj4gU3ViamVj dDogUmU6IFtlZGsyLWRldmVsXSBSRkMgZm9yIEVkazItTGlicmFyeQ0KPiA+Pj4+Pj4NCj4gPj4+ Pj4+IE9uIDA1LzA3LzE5IDIzOjM1LCBTZWFuIHZpYSBHcm91cHMuSW8gd3JvdGU6DQo+ID4+Pj4+ Pj4gUkZDICBFZGsyLUxpYnJhcnkgY3JlYXRpb24NCj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+IENyZWF0 ZSBhIG5ldyB0aWFub2NvcmUgb3duZWQgcmVwb3NpdG9yeSB0byBob3N0IGENCj4gPj4+Pj4+IHB5 dGhvbiBsaWJyYXJ5DQo+ID4+Pj4+Pj4gcGFja2FnZSBpbiBzdXBwb3J0IG9mIFVFRkkgZGV2ZWxv cG1lbnQuICBUaGlzDQo+ID4+IHBhY2thZ2UNCj4gPj4+Pj4+IHdpbGwgYWxsb3cgZWFzeQ0KPiA+ Pj4+Pj4+IHNoYXJpbmcgb2YgcHl0aG9uIGxpYnJhcnkgY29kZSB0byBmYWNpbGl0YXRlDQo+IHJl dXNlLg0KPiA+Pj4+Pj4gSW5jbHVzaW9uIG9mIHRoaXMNCj4gPj4+Pj4+PiBwYWNrYWdlIGFuZCBk ZXBlbmRlbmN5IG1hbmFnZW1lbnQgc2hvdWxkIGJlDQo+IG1hbmFnZWQNCj4gPj4+Pj4+IHVzaW5n IFBpcC9QeXBpLiBUbw0KPiA+Pj4+Pj4+IHN0YXJ0IHRoaXMgaXMgYSBzdXBwbGVtZW50YWwgcGFj a2FnZSBhbmQgaXMgbm90DQo+ID4+Pj4+PiByZXF1aXJlZCB0byBiZSB1c2VkDQo+ID4+Pj4+Pj4g Zm9yIGVkazIgYnVpbGRzLg0KPiA+Pj4+Pj4NCj4gPj4+Pj4+IFsxXQ0KPiA+Pj4+Pj4NCj4gPj4+ Pj4+PiBFeGFtcGxlcyBvZiBjb250ZW50IGhlcmUNCj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+ICogRWRr MiBmaWxlIHR5cGUgcGFyc2luZw0KPiA+Pj4+Pj4+ICogVUVGSSBzdHJ1Y3R1cmUgZW5jb2RlL2Rl Y29kZSBpbiBweXRob24NCj4gPj4+Pj4+PiAqIFBhY2thZ2luZyB0b29scyAoQ2Fwc3VsZXMgZ2Vu ZXJhdGlvbiwgc2lnbmluZywNCj4gPj4gSU5GDQo+ID4+Pj4+PiBnZW4sIENhdCBnZW4pDQo+ID4+ Pj4+Pj4gKiBUUE0gc3VwcG9ydCBjb2RlDQo+ID4+Pj4+Pj4gKiBQb3RlbnRpYWxseSBtb3ZlIGNv bnRlbnQgZnJvbQ0KPiA+Pj4+Pj4gYmFzZXRvb2xzL3NvdXJjZS9weXRob24vY29tbW9uLyoNCj4g Pj4+Pj4+DQo+ID4+Pj4+PiBbMl0NCj4gPj4+Pj4+DQo+ID4+Pj4+Pj4gKiBObyBjb21tYW5kIGxp bmUgdG9vbHMvaW50ZXJmYWNlDQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+PiBNYWludGFpbmVycw0KPiA+ Pj4+Pj4+DQo+ID4+Pj4+Pj4gKiBTZWFuIEJyb2dhbg0KPiA+Pj4+Pj4+ICogQnJldCBCYXJrZWxl dw0KPiA+Pj4+Pj4+ICogUGxhY2Vob2xkZXIgZm9yIGV4aXN0aW5nIG1haW50YWluZXIgZnJvbSB0 aGUNCj4gPj4+Pj4+IGJhc2V0b29scw0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4gTGljZW5zZQ0KPiA+ Pj4+Pj4+DQo+ID4+Pj4+Pj4gKiBCU0QgKyBQYXRlbnQgKGVkazIgYWxpZ25lZCkNCj4gPj4+Pj4+ Pg0KPiA+Pj4+Pj4+IENvbnRyaWJ1dGlvbiBwcm9jZXNzIGFuZCBpc3N1ZSB0cmFja2luZw0KPiA+ Pj4+Pj4+DQo+ID4+Pj4+Pj4gKiBGb2xsb3cgR2l0aHViIFBSIHByb2Nlc3MgZm9yIGNvbnRyaWJ1 dGlvbnMgYW5kDQo+ID4+Pj4gaXNzdWUNCj4gPj4+Pj4+IHRyYWNraW5nDQo+ID4+Pj4+Pj4gKiBD b250cmlidXRvciBmb3JrcyByZXBvIGluIGdpdGh1Yg0KPiA+Pj4+Pj4+ICogQ29udHJpYnV0b3Ig Y3JlYXRlcyBicmFuY2ggZm9yIHdvcmsNCj4gPj4+Pj4+PiAqIENvbnRyaWJ1dG9yIHVwZGF0ZXMg cmVsZWFzZSBub3RlcyB0byBpbmRpY2F0ZQ0KPiA+Pj4+IGNoYW5nZQ0KPiA+Pj4+Pj4gKGlmIG5l Y2Vzc2FyeSkNCj4gPj4+Pj4+PiAqIENvbnRyaWJ1dG9yIHN1Ym1pdHMgUFIgdG8gbWFzdGVyIGJy YW5jaCBvZg0KPiA+Pj4+Pj4gdGlhbm9jb3JlL0VkazItTGlicmFyeQ0KPiA+Pj4+Pj4+ICAgcmVw bw0KPiA+Pj4+Pj4+ICogUmV2aWV3IGZlZWRiYWNrIGlzIGdpdmVuIGluIFBSDQo+ID4+Pj4+Pj4g KiBQeXRob24gVGVzdHMgYXJlIHJ1biBvbiB0aGUgcmVwbyAobmV3DQo+ID4+IGNvbnRyaWJ1dGlv bnMNCj4gPj4+Pj4+IG5lZWQgdW5pdCB0ZXN0cykNCj4gPj4+Pj4+PiAqIFB5dGhvbiBTdHlsZSAo Zmxha2U4KSBtdXN0IHBhc3MNCj4gPj4+Pj4+PiAqIEFsbCByZXZpZXcgZmVlZGJhY2sgbXVzdCBi ZSBjb21wbGV0ZWQsDQo+ID4+IG1haW50YWluZXJzDQo+ID4+Pj4+PiBhcHByb3ZlZCwgYW5kDQo+ ID4+Pj4+Pj4gICB0ZXN0cyBydW4gc3VjY2Vzc2Z1bGx5IGJlZm9yZSBQUiBpcyAqc3F1YXNoDQo+ ID4+IG1lcmdlZCoNCj4gPj4+Pj4+IGludG8gbWFzdGVyDQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gVGhl IHNlbnRlbmNlcw0KPiA+Pj4+Pj4NCj4gPj4+Pj4+IFsxXSAiVG8gc3RhcnQgdGhpcyBpcyBhIHN1 cHBsZW1lbnRhbCBwYWNrYWdlIGFuZA0KPiBpcw0KPiA+Pj4+IG5vdA0KPiA+Pj4+Pj4gcmVxdWly ZWQgdG8gYmUNCj4gPj4+Pj4+ICAgICAgdXNlZCBmb3IgZWRrMiBidWlsZHMuIg0KPiA+Pj4+Pj4N Cj4gPj4+Pj4+IFsyXSAiUG90ZW50aWFsbHkgbW92ZSBjb250ZW50IGZyb20NCj4gPj4+Pj4+IGJh c2V0b29scy9zb3VyY2UvcHl0aG9uL2NvbW1vbi8qIg0KPiA+Pj4+Pj4NCj4gPj4+Pj4+IGZvcmVz aGFkb3cgdGhhdCBzdWNoIGEgY29kZSBtb3ZlbWVudCBtaWdodCBoYXBwZW4NCj4gPj4gZG93bg0K PiA+Pj4+Pj4gdGhlIHJvYWQsIGFuZCB0aGUNCj4gPj4+Pj4+IGV4dGVybmFsIHBhY2thZ2UgY291 bGQgYmVjb21lIGEgcmVxdWlyZW1lbnQgZm9yDQo+ID4+Pj4gYnVpbGRpbmcNCj4gPj4+Pj4+IGVk azIuDQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gVGhhdCBzdGVwIHdvdWxkIG1lYW4gdGhlIGZvbGxvd2lu ZzoNCj4gPj4+Pj4+DQo+ID4+Pj4+PiAoYSkgRWRrMiB3b3VsZCBub3QgcmVtYWluIGJ1aWxkYWJs ZSBmcm9tIGEgc2luZ2xlDQo+ID4+Pj4+PiBjb21tYW5kDQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gICAg IGdpdCBjbG9uZSAtLXJlY3Vyc2Utc3VibW9kdWxlcw0KPiA+Pj4+Pj4NCj4gPj4+Pj4+ICAgICBC dWlsZGluZyBlZGsyIHdvdWxkIHJlcXVpcmUgR05VL0xpbnV4IHVzZXJzIHRvDQo+ID4+Pj4gc3Rh cnQNCj4gPj4+Pj4+IHRyYWNraW5nDQo+ID4+Pj4+PiAgICAgcGFja2FnZXMgd2l0aCAicGlwIiwg d2hpY2ggaXMgaW5kZXBlbmRlbnQgb2YNCj4gYW55DQo+ID4+Pj4+PiBnaXZlbiBkaXN0cm8ncyBv d24NCj4gPj4+Pj4+ICAgICBwYWNrYWdlIG1hbmFnZW1lbnQsIGFuZCBtYXkgY2F1c2UgY29uZmxp Y3RzIGlmDQo+ID4+IG5vdA0KPiA+Pj4+Pj4gdXNlZCBjYXJlZnVsbHk6DQo+ID4+Pj4+Pg0KPiA+ Pj4+Pj4NCj4gPj4+Pj4+DQo+ID4+Pj4NCj4gPj4NCj4gaHR0cHM6Ly9kZXZlbG9wZXIuZmVkb3Jh cHJvamVjdC5vcmcvdGVjaC9sYW5ndWFnZXMvcHl0aG8NCj4gPj4+Pj4+IG4vcHlwaS1pbnN0YWxs YXRpb24uaHRtbA0KPiA+Pj4+Pj4NCj4gPj4+Pj4+ICAgICBUaGlzIHJlcXVpcmVtZW50IG9uICJw aXAiIHdvdWxkIG9ubHkgZ28gYXdheQ0KPiA+PiBvbmNlDQo+ID4+Pj4+PiB0aGUgZXh0ZXJuYWwN Cj4gPj4+Pj4+ICAgICBweXRob24gZGVwZW5kZW5jaWVzIHdlcmUgcGFja2FnZWQgZm9yIGF0IGxl YXN0DQo+ID4+IHRoZQ0KPiA+Pj4+Pj4gbGFyZ2VyIEdOVS9MaW51eA0KPiA+Pj4+Pj4gICAgIGRp c3Ryb3MuDQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gKGIpIEVkazIgdXNlcnMgcnVubmluZyBpbnRvIGJ1 aWxkIHByb2JsZW1zIHJlbGF0ZWQNCj4gPj4gdG8NCj4gPj4+Pj4+IHRoZSBleHRlcm5hbA0KPiA+ Pj4+Pj4gICAgIHB5dGhvbiBkZXBlbmRlbmNpZXMgd291bGQgaGF2ZSB0byBjb250cmlidXRlDQo+ ID4+Pj4gdGhyb3VnaA0KPiA+Pj4+Pj4gYSBnaXRodWItb25seQ0KPiA+Pj4+Pj4gICAgIHdvcmtm bG93LiBUaGF0J3Mgbm90IGEgZGVhbC1icmVha2VyIHBlciBzZSAtLQ0KPiBpZg0KPiA+Pj4+IHdl DQo+ID4+Pj4+PiB3YW50IHRvDQo+ID4+Pj4+PiAgICAgY29udHJpYnV0ZSB0byBvdGhlciBlZGsy IGRlcGVuZGVuY2llcywgc3VjaCBhcw0KPiA+Pj4+Pj4gT3BlblNTTCBvciBuYXNtLCB3ZQ0KPiA+ Pj4+Pj4gICAgIGFsc28gaGF2ZSB0byBjb25mb3JtIHRvIHRoZWlyIHNwZWNpZmljDQo+ID4+IGRl dmVsb3BtZW50DQo+ID4+Pj4+PiBtb2RlbHMsIGNsZWFybHkuDQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4g ICAgIEhvd2V2ZXIsICJzcXVhc2ggbWVyZ2UiIGlzIGEgY2F0YXN0cm9waGljYWxseQ0KPiA+PiBi YWQNCj4gPj4+Pj4+IGRldmVsb3BtZW50IG1vZGVsLA0KPiA+Pj4+Pj4gICAgIGFuZCBJJ2Qgb2Jq ZWN0IHRvIGludHJvZHVjaW5nIGEgbmV3IGVkazIgYnVpbGQNCj4gPj4+Pj4+IGRlcGVuZGVuY3kg dGhhdA0KPiA+Pj4+Pj4gICAgIGZvbGxvd2VkIHRoYXQgbW9kZWwuDQo+ID4+Pj4+Pg0KPiA+Pj4+ Pj4gICAgIChUaGVyZSBhcmUgb3RoZXIgaXNzdWVzIHdpdGggdGhlIEdpdEh1Yi5jb20NCj4gPj4+ Pj4+IGRldmVsb3BtZW50IHdvcmtmbG93LCBhcw0KPiA+Pj4+Pj4gICAgIGRpc2N1c3NlZCBlbHNl d2hlcmUsIGJ1dCAic3F1YXNoIG1lcmdlIiB0YWtlcw0KPiA+PiB0aGUNCj4gPj4+Pj4+IGNha2Uu KQ0KPiA+Pj4+Pj4NCj4gPj4+Pj4+IFByb2JsZW0gKGEpIHdvdWxkIGJlIHNvbHZhYmxlIGluIHRo ZSBsb25nIHRlcm0NCj4gPj4+PiAodGhyb3VnaA0KPiA+Pj4+Pj4gY29sbGFib3JhdGlvbg0KPiA+ Pj4+Pj4gd2l0aCBkaXN0cm8gbWFpbnRhaW5lcnMsIGkuZS4gZG93bnN0cmVhbQ0KPiBwYWNrYWdp bmcpLA0KPiA+Pj4+IGJ1dA0KPiA+Pj4+Pj4gcHJvYmxlbSAoYikNCj4gPj4+Pj4+IHdvdWxkIG5v dCBiZS4gVGh1cyBJJ20gZmluZSB3aXRoIHRoZSBwcm9wb3NhbCwgaW4NCj4gPj4gaXRzDQo+ID4+ Pj4+PiBjdXJyZW50IGZvcm0sIG9ubHkNCj4gPj4+Pj4+IGlmIHRoZSBuZXcgcGFja2FnZSBpcyAx MDAlIGFuIGFkZGl0aW9uIG9uIHRvcCBvZg0KPiA+PiBlZGsyLA0KPiA+Pj4+Pj4gZXZlbiBpbiB0 aGUgbG9uZw0KPiA+Pj4+Pj4gdGVybSwgYW5kIG5vdCBpbiBhbnkgcGFydCBpbnRlbmRlZCBhcyBh IGZ1dHVyZQ0KPiA+Pj4+Pj4gcmVwbGFjZW1lbnQgZm9yIGN1cnJlbnQNCj4gPj4+Pj4+IGVkazIg ZnVuY3Rpb25hbGl0eS4NCj4gPj4+Pj4+DQo+ID4+Pj4+PiBUaGFua3MsDQo+ID4+Pj4+PiBMYXN6 bG8NCj4gPj4+Pj4+DQo+ID4+Pj4+Pg0KPiA+Pj4+Pg0KPiA+Pj4NCj4gPj4NCj4gPj4NCj4gPj4g DQo+ID4NCg0K