From mboxrd@z Thu Jan 1 00:00:00 1970 From: Serguei Sagalovitch Subject: Re: [RFC] Mechanism for high priority scheduling in amdgpu Date: Mon, 19 Dec 2016 09:48:26 -0500 Message-ID: References: <544E607D03B20249AA404517E498FC4699EBD3@exchange01.valvesoftware.com> <544E607D03B20249AA404517E498FC4699EC41@exchange01.valvesoftware.com> <544E607D03B20249AA404517E498FC4699EC70@exchange01.valvesoftware.com> <58575362.2030100@amd.com> <361f177c-bf55-1525-4f35-86708e4f8d9f@valvesoftware.com> <58576C15.1070909@amd.com> <2bf5afce-d5b8-4eaf-0fcd-a7ebfe85f92e@gmail.com> <5857751C.5060409@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <5857751C.5060409-5C7GfCeVMHo@public.gmane.org> List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: zhoucm1 , Andres Rodriguez , "Pierre-Loup A. Griffais" , Andres Rodriguez , "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" , "Mao, David" , "Zhang, Hawking" , "Huan, Alvin" ID4gSWYgY29tcHV0ZSBxdWV1ZSBpcyBvY2N1cGllZCBvbmx5IGJ5IHlvdSwgdGhlIGVmZmljaWVu Y3kKID4gaXMgZXF1YWwgd2l0aCBzZXR0aW5nIGpvYiBxdWV1ZSB0byBoaWdoIHByaW9yaXR5IEkg dGhpbmsuClRoZSBvbmx5IHJpc2sgaXMgdGhlIHNpdHVhdGlvbiB3aGVuIGdyYXBoaWNzIHdpbGwg dGFrZSBhbGwKbmVlZGVkIENVcy4gQnV0IGluIGFueSBjYXNlIGl0IHNob3VsZCBiZSB2ZXJ5IGdv b2QgdGVzdC4KCkFuZHJlcy9QaWVycmUtTG91cCwKCkRpZCB5b3UgdHJ5IHRvIGRvIGl0IG9yIGl0 IGlzIGEgbG90IG9mIHdvcmsgZm9yIHlvdT8KCgpCVFc6IElmIHRoZXJlIGlzICBub24tVlIgYXBw bGljYXRpb24gd2hpY2ggd2lsbCB1c2UgaGlnaC1wcmlvcml0eQpoL3cgcXVldWUgdGhlbiBWUiBh cHBsaWNhdGlvbiB3aWxsIHN1ZmZlci4gIEFueSBpZGVhcyBob3cKdG8gc29sdmUgaXQ/CgpTaW5j ZXJlbHkgeW91cnMsClNlcmd1ZWkgU2FnYWxvdml0Y2gKCk9uIDIwMTYtMTItMTkgMTI6NTAgQU0s IHpob3VjbTEgd3JvdGU6Cj4gRG8geW91IGVuY291bnRlciB0aGUgcHJpb3JpdHkgaXNzdWUgZm9y IGNvbXB1dGUgcXVldWUgd2l0aCBjdXJyZW50IAo+IGRyaXZlcj8KPgo+IElmIGNvbXB1dGUgcXVl dWUgaXMgb2NjdXBpZWQgb25seSBieSB5b3UsIHRoZSBlZmZpY2llbmN5IGlzIGVxdWFsIHdpdGgg Cj4gc2V0dGluZyBqb2IgcXVldWUgdG8gaGlnaCBwcmlvcml0eSBJIHRoaW5rLgo+Cj4gUmVnYXJk cywKPiBEYXZpZCBaaG91Cj4KPiBPbiAyMDE25bm0MTLmnIgxOeaXpSAxMzoyOSwgQW5kcmVzIFJv ZHJpZ3VleiB3cm90ZToKPj4gWWVzLCB2dWxrYW4gaXMgYXZhaWxhYmxlIG9uIGFsbC1vcGVuIHRo cm91Z2ggdGhlIG1lc2EgcmFkdiBVTUQuCj4+Cj4+IEknbSBub3Qgc3VyZSBpZiBJJ20gYXNraW5n IGZvciB0b28gbXVjaCwgYnV0IGlmIHdlIGNhbiBjb29yZGluYXRlIGEgCj4+IHNpbWlsYXIgaW50 ZXJmYWNlIGluIHJhZHYgYW5kIGFtZGdwdS1wcm8gYXQgdGhlIHZ1bGthbiBsZXZlbCB0aGF0IAo+ PiB3b3VsZCBiZSBncmVhdC4KPj4KPj4gSSdtIG5vdCBzdXJlIHdoYXQgdGhhdCdzIGdvaW5nIHRv IGJlIHlldC4KPj4KPj4gLSBBbmRyZXMKPj4KPj4gT24gMTIvMTkvMjAxNiAxMjoxMSBBTSwgemhv dWNtMSB3cm90ZToKPj4+Cj4+Pgo+Pj4gT24gMjAxNuW5tDEy5pyIMTnml6UgMTE6MzMsIFBpZXJy ZS1Mb3VwIEEuIEdyaWZmYWlzIHdyb3RlOgo+Pj4+IFdlJ3JlIGN1cnJlbnRseSB3b3JraW5nIHdp dGggdGhlIG9wZW4gc3RhY2s7IEkgYXNzdW1lIHRoYXQgYSAKPj4+PiBtZWNoYW5pc20gY291bGQg YmUgZXhwb3NlZCBieSBib3RoIG9wZW4gYW5kIFBybyBWdWxrYW4gdXNlcnNwYWNlIAo+Pj4+IGRy aXZlcnMgYW5kIHRoYXQgdGhlIGFtZGdwdSBrZXJuZWwgaW50ZXJmYWNlIGltcHJvdmVtZW50cyB3 ZSB3b3VsZCAKPj4+PiBwdXJzdWUgZm9sbG93aW5nIHRoaXMgZGlzY3Vzc2lvbiB3b3VsZCBsZXQg Ym90aCBkcml2ZXJzIHRha2UgCj4+Pj4gYWR2YW50YWdlIG9mIHRoZSBmZWF0dXJlLCBjb3JyZWN0 Pwo+Pj4gT2YgY291cnNlLgo+Pj4gRG9lcyBvcGVuIHN0YWNrIGhhdmUgVnVsa2FuIHN1cHBvcnQ/ Cj4+Pgo+Pj4gUmVnYXJkcywKPj4+IERhdmlkIFpob3UKPj4+Pgo+Pj4+IE9uIDEyLzE4LzIwMTYg MDc6MjYgUE0sIHpob3VjbTEgd3JvdGU6Cj4+Pj4+IEJ5IHRoZSB3YXksIGFyZSB5b3UgdXNpbmcg YWxsLW9wZW4gZHJpdmVyIG9yIGFtZGdwdS1wcm8gZHJpdmVyPwo+Pj4+Pgo+Pj4+PiArRGF2aWQg TWFvLCB3aG8gaXMgd29ya2luZyBvbiBvdXIgVnVsa2FuIGRyaXZlci4KPj4+Pj4KPj4+Pj4gUmVn YXJkcywKPj4+Pj4gRGF2aWQgWmhvdQo+Pj4+Pgo+Pj4+PiBPbiAyMDE25bm0MTLmnIgxOOaXpSAw NjowNSwgUGllcnJlLUxvdXAgQS4gR3JpZmZhaXMgd3JvdGU6Cj4+Pj4+PiBIaSBTZXJndWVpLAo+ Pj4+Pj4KPj4+Pj4+IEknbSBhbHNvIHdvcmtpbmcgb24gdGhlIGJyaW5naW5nIHVwIG91ciBWUiBy dW50aW1lIG9uIHRvcCBvZiBhbWdwdTsKPj4+Pj4+IHNlZSByZXBsaWVzIGlubGluZS4KPj4+Pj4+ Cj4+Pj4+PiBPbiAxMi8xNi8yMDE2IDA5OjA1IFBNLCBTYWdhbG92aXRjaCwgU2VyZ3VlaSB3cm90 ZToKPj4+Pj4+PiBBbmRyZXMsCj4+Pj4+Pj4KPj4+Pj4+Pj4gIEZvciBjdXJyZW50IFZSIHdvcmts b2FkcyB3ZSBoYXZlIDMgc2VwYXJhdGUgcHJvY2Vzc2VzIHJ1bm5pbmcKPj4+Pj4+Pj4gYWN0dWFs bHk6Cj4+Pj4+Pj4gU28gd2UgY291bGQgaGF2ZSBwb3RlbnRpYWwgbWVtb3J5IG92ZXJjb21taXQg Y2FzZSBvciBkbyB5b3UgZG8KPj4+Pj4+PiBwYXJ0aXRpb25pbmcKPj4+Pj4+PiBvbiB5b3VyIG93 bj8gIEkgd291bGQgdGhpbmsgdGhhdCB0aGVyZSBpcyBuZWVkIHRvIGF2b2lkIAo+Pj4+Pj4+IG92 ZXJjb21pdCBpbgo+Pj4+Pj4+IFZSIGNhc2UgdG8KPj4+Pj4+PiBwcmV2ZW50IGFueSBCTyBtaWdy YXRpb24uCj4+Pj4+Pgo+Pj4+Pj4gWW91J3JlIGVudGlyZWx5IGNvcnJlY3Q7IGN1cnJlbnRseSB0 aGUgVlIgcnVudGltZSBpcyBzZXR0aW5nIHVwCj4+Pj4+PiBwcmlvcml0aXplZCBDUFUgc2NoZWR1 bGluZyBmb3IgaXRzIFZSIGNvbXBvc2l0b3IsIHdlJ3JlIHdvcmtpbmcgb24KPj4+Pj4+IHByaW9y aXRpemVkIEdQVSBzY2hlZHVsaW5nIGFuZCBwcmUtZW1wdGlvbiAoZWcuIHRoaXMgdGhyZWFkKSwg YW5kIGluCj4+Pj4+PiB0aGUgZnV0dXJlIGl0IHdpbGwgbWFrZSBzZW5zZSB0byBkbyB3b3JrIGlu IG9yZGVyIHRvIG1ha2Ugc3VyZSB0aGF0Cj4+Pj4+PiBpdHMgbWVtb3J5IGFsbG9jYXRpb25zIGRv IG5vdCBnZXQgZXZpY3RlZCwgdG8gcHJldmVudCBhbnkgdW53ZWxjb21lCj4+Pj4+PiBhZGRpdGlv bmFsIGxhdGVuY3kgaW4gdGhlIGV2ZW50IG9mIG5lZWRpbmcgdG8gcGVyZm9ybSBqdXN0LWluLXRp bWUKPj4+Pj4+IHJlcHJvamVjdGlvbi4KPj4+Pj4+Cj4+Pj4+Pj4gQlRXOiBEbyB5b3UgbWVhbiBf X3JlYWxfXyBwcm9jZXNzZXMgb3IgdGhyZWFkcz8KPj4+Pj4+PiBCYXNlZCBvbiBteSB1bmRlcnN0 YW5kaW5nIHNoYXJpbmcgQk9zIGJldHdlZW4gZGlmZmVyZW50IHByb2Nlc3Nlcwo+Pj4+Pj4+IGNv dWxkIGludHJvZHVjZSBhZGRpdGlvbmFsIHN5bmNocm9uaXphdGlvbiBjb25zdHJhaW5zLiBidHc6 IEkgYW0gCj4+Pj4+Pj4gbm90Cj4+Pj4+Pj4gc3VyZQo+Pj4+Pj4+IGlmIHdlIGFyZSBhYmxlIHRv IHNoYXJlIFZ1bGthbiBzeW5jLiBvYmplY3QgY3Jvc3MtcHJvY2VzcyBib3VuZGFyeS4KPj4+Pj4+ Cj4+Pj4+PiBUaGV5IGFyZSBkaWZmZXJlbnQgcHJvY2Vzc2VzOyBpdCBpcyBpbXBvcnRhbnQgZm9y IHRoZSBjb21wb3NpdG9yIAo+Pj4+Pj4gdGhhdAo+Pj4+Pj4gaXMgcmVzcG9uc2libGUgZm9yIHF1 YWxpdHktb2Ytc2VydmljZSBmZWF0dXJlcyBzdWNoIGFzIGNvbnNpc3RlbnRseQo+Pj4+Pj4gcHJl c2VudGluZyBkaXN0b3J0ZWQgZnJhbWVzIHdpdGggdGhlIHJpZ2h0IGxhdGVuY3ksIHJlcHJvamVj dGlvbiwgCj4+Pj4+PiBldGMsCj4+Pj4+PiB0byBiZSBzZXBhcmF0ZSBmcm9tIHRoZSBtYWluIGFw cGxpY2F0aW9uLgo+Pj4+Pj4KPj4+Pj4+IEN1cnJlbnRseSB3ZSBhcmUgdXNpbmcgdW5yZWxlYXNl ZCBjcm9zcy1wcm9jZXNzIG1lbW9yeSBhbmQgc2VtYXBob3JlCj4+Pj4+PiBleHRlbnNpb25zIHRv IGZldGNoIHVwZGF0ZWQgZXllIGltYWdlcyBmcm9tIHRoZSBjbGllbnQgYXBwbGljYXRpb24sCj4+ Pj4+PiBidXQgdGhlIGp1c3QtaW4tdGltZSByZXByb2plY3Rpb24gZGlzY3Vzc2VkIGhlcmUgZG9l cyBub3QgYWN0dWFsbHkKPj4+Pj4+IGhhdmUgYW55IGRpcmVjdCBpbnRlcmFjdGlvbnMgd2l0aCBj cm9zcy1wcm9jZXNzIHJlc291cmNlIHNoYXJpbmcsCj4+Pj4+PiBzaW5jZSBpdCdzIGFjaGlldmVk IGJ5IHVzaW5nIHdoYXRldmVyIGlzIHRoZSBsYXRlc3QsIG1vc3QgdXAtdG8tZGF0ZQo+Pj4+Pj4g ZXllIGltYWdlcyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuIHNlbnQgYnkgdGhlIGNsaWVudCBhcHBs aWNhdGlvbiwKPj4+Pj4+IHdoaWNoIGFyZSBhbHJlYWR5IGF2YWlsYWJsZSB0byB1c2Ugd2l0aG91 dCBhZGRpdGlvbmFsIAo+Pj4+Pj4gc3luY2hyb25pemF0aW9uLgo+Pj4+Pj4KPj4+Pj4+Pgo+Pj4+ Pj4+PiAgICAzKSBTeXN0ZW0gY29tcG9zaXRvciAod2UgYXJlIGxvb2tpbmcgYXQgYXBwcm9hY2hl cyB0byByZW1vdmUgCj4+Pj4+Pj4+IHRoaXMKPj4+Pj4+Pj4gb3ZlcmhlYWQpCj4+Pj4+Pj4gWWVz LCAgSU1ITyB0aGUgYmVzdCBpcyB0byBydW4gaW4gICJmdWxsIHNjcmVlbiBtb2RlIi4KPj4+Pj4+ Cj4+Pj4+PiBZZXMsIHdlIGFyZSB3b3JraW5nIG9uIG1lY2hhbmlzbXMgdG8gcHJlc2VudCBkaXJl Y3RseSB0byB0aGUgaGVhZHNldAo+Pj4+Pj4gZGlzcGxheSB3aXRob3V0IGFueSBpbnRlcm1lZGlh cmllcyBhcyBhIHNlcGFyYXRlIGVmZm9ydC4KPj4+Pj4+Cj4+Pj4+Pj4KPj4+Pj4+Pj4gIFRoZSBs YXRlbmN5IGlzIG91ciBtYWluIGNvbmNlcm4sCj4+Pj4+Pj4gSSB3b3VsZCBhc3N1bWUgdGhhdCB0 aGlzIGlzIHRoZSBrbm93biBwcm9ibGVtIChhdCBsZWFzdCBmb3IgY29tcHV0ZQo+Pj4+Pj4+IHVz YWdlKS4KPj4+Pj4+PiBJdCBsb29rcyBsaWtlIHRoYXQgYW1kZ3B1IC8ga2VybmVsIHN1Ym1pc3Np b24gaXMgcmF0aGVyIENQVSAKPj4+Pj4+PiBpbnRlbnNpdmUKPj4+Pj4+PiAoYXQgbGVhc3QKPj4+ Pj4+PiBpbiB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uKS4KPj4+Pj4+Cj4+Pj4+PiBBcyBsb25n IGFzIGl0J3MgYSBjb25zaXN0ZW50IGNvc3QsIGl0IHNob3VsZG4ndCBhbiBpc3N1ZS4gCj4+Pj4+ PiBIb3dldmVyLCBpZgo+Pj4+Pj4gdGhlcmUncyBoaWdoIGRlZ3JlZXMgb2YgdmFyaWFuY2UgdGhl biB0aGF0IHdvdWxkIGJlIHRyb3VibGVzb21lIAo+Pj4+Pj4gYW5kIHdlCj4+Pj4+PiB3b3VsZCBu ZWVkIHRvIGFjY291bnQgZm9yIHRoZSB3b3JzdCBjYXNlLgo+Pj4+Pj4KPj4+Pj4+IEhvcGVmdWxs eSB0aGUgcmVxdWlyZW1lbnRzIGFuZCBhcHByb2FjaCB3ZSBkZXNjcmliZWQgbWFrZSBzZW5zZSwg Cj4+Pj4+PiB3ZSdyZQo+Pj4+Pj4gbG9va2luZyBmb3J3YXJkIHRvIHlvdXIgZmVlZGJhY2sgYW5k IHN1Z2dlc3Rpb25zLgo+Pj4+Pj4KPj4+Pj4+IFRoYW5rcyEKPj4+Pj4+ICAtIFBpZXJyZS1Mb3Vw Cj4+Pj4+Pgo+Pj4+Pj4+Cj4+Pj4+Pj4gU2luY2VyZWx5IHlvdXJzLAo+Pj4+Pj4+IFNlcmd1ZWkg U2FnYWxvdml0Y2gKPj4+Pj4+Pgo+Pj4+Pj4+Cj4+Pj4+Pj4gRnJvbTogQW5kcmVzIFJvZHJpZ3Vl eiA8YW5kcmVzckB2YWx2ZXNvZnR3YXJlLmNvbT4KPj4+Pj4+PiBTZW50OiBEZWNlbWJlciAxNiwg MjAxNiAxMDowMCBQTQo+Pj4+Pj4+IFRvOiBTYWdhbG92aXRjaCwgU2VyZ3VlaTsgYW1kLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKPj4+Pj4+PiBTdWJqZWN0OiBSRTogW1JGQ10gTWVjaGFuaXNt IGZvciBoaWdoIHByaW9yaXR5IHNjaGVkdWxpbmcgaW4gYW1kZ3B1Cj4+Pj4+Pj4KPj4+Pj4+PiBI ZXkgU2VyZ3VlaSwKPj4+Pj4+Pgo+Pj4+Pj4+PiBbU2VyZ3VlaV0gTm8uIEkgbWVhbiBwaXBlIDot KSBhcyBNRUMgZGVmaW5lIGl0LiAgQXMgZmFyIGFzIEkKPj4+Pj4+Pj4gdW5kZXJzdGFuZCAoYnkg c2ltcGxpZnlpbmcpCj4+Pj4+Pj4+IHNvbWUgc2NoZWR1bGluZyBpcyBwZXIgcGlwZS4gIEkga25v dyBhYm91dCB0aGUgY3VycmVudCBhbGxvY2F0aW9uCj4+Pj4+Pj4+IHNjaGVtZSBidXQgSSBkbyBu b3QgdGhpbmsKPj4+Pj4+Pj4gdGhhdCBpdCBpcyAgaWRlYWwuICBJIHdvdWxkIGFzc3VtZSB0aGF0 IHdlIG5lZWQgIHRvIHN3aXRjaCB0bwo+Pj4+Pj4+PiBkeW5hbWljYWwgcGFydGl0aW9uCj4+Pj4+ Pj4+IG9mIHJlc291cmNlcyAgYmFzZWQgb24gdGhlIHdvcmtsb2FkIG90aGVyd2lzZSB3ZSB3aWxs IGhhdmUgCj4+Pj4+Pj4+IHJlc291cmNlCj4+Pj4+Pj4+IGNvbmZsaWN0Cj4+Pj4+Pj4+IGJldHdl ZW4gVnVsa2FuIGNvbXB1dGUgYW5kICBPcGVuQ0wuCj4+Pj4+Pj4KPj4+Pj4+PiBJIGFncmVlIHRo ZSBwYXJ0aXRpb25pbmcgaXNuJ3QgaWRlYWwuIEknbSBob3Bpbmcgd2UgY2FuIHN0YXJ0IAo+Pj4+ Pj4+IHdpdGggYQo+Pj4+Pj4+IHNvbHV0aW9uIHRoYXQgYXNzdW1lcyB0aGF0Cj4+Pj4+Pj4gb25s eSBwaXBlMCBoYXMgYW55IHdvcmsgYW5kIHRoZSBvdGhlciBwaXBlcyBhcmUgaWRsZSAobm8gSFNB L1JPQ20KPj4+Pj4+PiBydW5uaW5nIG9uIHRoZSBzeXN0ZW0pLgo+Pj4+Pj4+Cj4+Pj4+Pj4gVGhp cyBzaG91bGQgYmUgbW9yZSBvciBsZXNzIHRoZSB1c2UgY2FzZSB3ZSBleHBlY3QgZnJvbSBWUiB1 c2Vycy4KPj4+Pj4+Pgo+Pj4+Pj4+IEkgYWdyZWUgdGhlIHNwbGl0IGlzIGN1cnJlbnRseSBub3Qg aWRlYWwsIGJ1dCBJJ2QgbGlrZSB0byBjb25zaWRlcgo+Pj4+Pj4+IHRoYXQgYSBzZXBhcmF0ZSB0 YXNrLCBiZWNhdXNlCj4+Pj4+Pj4gbWFraW5nIGl0IGR5bmFtaWMgaXMgbm90IHN0cmFpZ2h0IGZv cndhcmQgOlAKPj4+Pj4+Pgo+Pj4+Pj4+PiBbU2VyZ3VlaV0gVnVsa2FuIHdvcmtzIHZpYSBhbWRn cHUgKGtlcm5lbCBzdWJtaXNzaW9ucykgc28gYW1ka2ZkCj4+Pj4+Pj4+IHdpbGwgYmUgbm90Cj4+ Pj4+Pj4+IGludm9sdmVkLiAgSSB3b3VsZCBhc3N1bWUgdGhhdCBpbiB0aGUgY2FzZSBvZiBWUiB3 ZSB3aWxsIGhhdmUgCj4+Pj4+Pj4+IG9uZSBtYWluCj4+Pj4+Pj4+IGFwcGxpY2F0aW9uICgiY29u c29sZSIgbW9kZSg/KSkgc28gd2UgY291bGQgdGVtcG9yYWxseSAiaWdub3JlIgo+Pj4+Pj4+PiBP cGVuQ0wvUk9DbSBuZWVkcyB3aGVuIFZSIGlzIHJ1bm5pbmcuCj4+Pj4+Pj4KPj4+Pj4+PiBDb3Jy ZWN0LCB0aGlzIGlzIHdoeSB3ZSB3YW50IHRvIGVuYWJsZSB0aGUgaGlnaCBwcmlvcml0eSBjb21w dXRlCj4+Pj4+Pj4gcXVldWUgdGhyb3VnaAo+Pj4+Pj4+IGxpYmRybS1hbWRncHUsIHNvIHRoYXQg d2UgY2FuIGV4cG9zZSBpdCB0aHJvdWdoIFZ1bGthbiBsYXRlci4KPj4+Pj4+Pgo+Pj4+Pj4+IEZv ciBjdXJyZW50IFZSIHdvcmtsb2FkcyB3ZSBoYXZlIDMgc2VwYXJhdGUgcHJvY2Vzc2VzIHJ1bm5p bmcgCj4+Pj4+Pj4gYWN0dWFsbHk6Cj4+Pj4+Pj4gICAgIDEpIEdhbWUgcHJvY2Vzcwo+Pj4+Pj4+ ICAgICAyKSBWUiBDb21wb3NpdG9yICh0aGlzIGlzIHRoZSBwcm9jZXNzIHRoYXQgd2lsbCByZXF1 aXJlIGhpZ2gKPj4+Pj4+PiBwcmlvcml0eSBxdWV1ZSkKPj4+Pj4+PiAgICAgMykgU3lzdGVtIGNv bXBvc2l0b3IgKHdlIGFyZSBsb29raW5nIGF0IGFwcHJvYWNoZXMgdG8gcmVtb3ZlIAo+Pj4+Pj4+ IHRoaXMKPj4+Pj4+PiBvdmVyaGVhZCkKPj4+Pj4+Pgo+Pj4+Pj4+IEZvciBub3cgSSB0aGluayBp dCBpcyBva2F5IHRvIGFzc3VtZSBubyBPcGVuQ0wvUk9DbSBydW5uaW5nCj4+Pj4+Pj4gc2ltdWx0 YW5lb3VzbHksIGJ1dAo+Pj4+Pj4+IEkgd291bGQgYWxzbyBsaWtlIHRvIGJlIGFibGUgdG8gYWRk cmVzcyB0aGlzIGNhc2UgaW4gdGhlIGZ1dHVyZQo+Pj4+Pj4+IChjcm9zcy1waXBlIHByaW9yaXRp ZXMpLgo+Pj4+Pj4+Cj4+Pj4+Pj4+IFtTZXJndWVpXSAgVGhlIHByb2JsZW0gd2l0aCBwcmUtZW1w dGlvbiBvZiBncmFwaGljcyB0YXNrOiAgKGEpIGl0Cj4+Pj4+Pj4+IG1heSB0YWtlIHRpbWUgc28K Pj4+Pj4+Pj4gbGF0ZW5jeSBtYXkgc3VmZmVyCj4+Pj4+Pj4KPj4+Pj4+PiBUaGUgbGF0ZW5jeSBp cyBvdXIgbWFpbiBjb25jZXJuLCB3ZSB3YW50IHNvbWV0aGluZyB0aGF0IGlzCj4+Pj4+Pj4gcHJl ZGljdGFibGUuIEEgZ29vZAo+Pj4+Pj4+IGlsbHVzdHJhdGlvbiBvZiB3aGF0IHRoZSByZXByb2pl Y3Rpb24gc2NoZWR1bGluZyBsb29rcyBsaWtlIGNhbiBiZQo+Pj4+Pj4+IGZvdW5kIGhlcmU6Cj4+ Pj4+Pj4gaHR0cHM6Ly9jb21tdW5pdHkuYW1kLmNvbS9zZXJ2bGV0L0ppdmVTZXJ2bGV0L3Nob3dJ bWFnZS8zOC0xMzEwLTEwNDc1NC9wYXN0ZWRJbWFnZV8zLnBuZyAKPj4+Pj4+Pgo+Pj4+Pj4+Cj4+ Pj4+Pj4KPj4+Pj4+Pj4gKGIpIHRvIHByZWVtcHQgd2UgbmVlZCB0byBoYXZlIGRpZmZlcmVudCAi Y29udGV4dCIgLSB3ZSB3YW50Cj4+Pj4+Pj4+IHRvIGd1YXJhbnRlZSB0aGF0IHN1Ym1pc3Npb25z IGZyb20gdGhlIHNhbWUgY29udGV4dCB3aWxsIGJlIAo+Pj4+Pj4+PiBleGVjdXRlZAo+Pj4+Pj4+ PiBpbiBvcmRlci4KPj4+Pj4+Pgo+Pj4+Pj4+IFRoaXMgaXMgb2theSwgYXMgdGhlIHJlcHJvamVj dGlvbiB3b3JrIGRvZXNuJ3QgaGF2ZSBkZXBlbmRlbmNpZXMgb24KPj4+Pj4+PiB0aGUgZ2FtZSBj b250ZXh0LCBhbmQgaXQKPj4+Pj4+PiBldmVuIGhhcHBlbnMgaW4gYSBzZXBhcmF0ZSBwcm9jZXNz Lgo+Pj4+Pj4+Cj4+Pj4+Pj4+IEJUVzogKGEpIERvIHlvdSB3YW50ICJwcmVlbXB0IiBhbmQgbGF0 ZXIgcmVzdW1lIG9yIGRvIHlvdSB3YW50Cj4+Pj4+Pj4+ICJwcmVlbXB0IiBhbmQKPj4+Pj4+Pj4g ImNhbmNlbC9hYm9ydCIKPj4+Pj4+Pgo+Pj4+Pj4+IFByZWVtcHQgdGhlIGdhbWUgd2l0aCB0aGUg Y29tcG9zaXRvciB0YXNrIGFuZCB0aGVuIHJlc3VtZSBpdC4KPj4+Pj4+Pgo+Pj4+Pj4+PiAoYikg VnVsa2FuIGlzIGdlbmVyaWMgQVBJIGFuZCBjb3VsZCBiZSB1c2VkIGZvciBncmFwaGljcyBhcyAK Pj4+Pj4+Pj4gd2VsbCBhcwo+Pj4+Pj4+PiBmb3IgcGxhaW4gY29tcHV0ZSB0YXNrcyAoVktfUVVF VUVfQ09NUFVURV9CSVQpLgo+Pj4+Pj4+Cj4+Pj4+Pj4gWWVhaCwgdGhlIHBsYW4gaXMgdG8gdXNl IHZ1bGthbiBjb21wdXRlLiBCdXQgaWYgeW91IGZpZ3VyZSBvdXQgYSAKPj4+Pj4+PiB3YXkKPj4+ Pj4+PiBmb3IgdXMgdG8gZ2V0Cj4+Pj4+Pj4gYSBndWFyYW50ZWVkIGV4ZWN1dGlvbiB0aW1lIHVz aW5nIHZ1bGthbiBncmFwaGljcywgdGhlbiBJJ2xsIAo+Pj4+Pj4+IHRha2UgeW91Cj4+Pj4+Pj4g b3V0IGZvciBhIGJlZXIgOikKPj4+Pj4+Pgo+Pj4+Pj4+IFJlZ2FyZHMsCj4+Pj4+Pj4gQW5kcmVz Cj4+Pj4+Pj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+Pj4+Pj4+ IEZyb206IFNhZ2Fsb3ZpdGNoLCBTZXJndWVpIFtTZXJndWVpLlNhZ2Fsb3ZpdGNoQGFtZC5jb21d Cj4+Pj4+Pj4gU2VudDogRnJpZGF5LCBEZWNlbWJlciAxNiwgMjAxNiA5OjEzIFBNCj4+Pj4+Pj4g VG86IEFuZHJlcyBSb2RyaWd1ZXo7IGFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4+Pj4+ Pj4gU3ViamVjdDogUmU6IFtSRkNdIE1lY2hhbmlzbSBmb3IgaGlnaCBwcmlvcml0eSBzY2hlZHVs aW5nIGluIGFtZGdwdQo+Pj4+Pj4+Cj4+Pj4+Pj4gSGkgQW5kcmVzLAo+Pj4+Pj4+Cj4+Pj4+Pj4g UGxlYXNlIHNlZSBpbmxpbmUgKGFzIFtTZXJndWVpXSkKPj4+Pj4+Pgo+Pj4+Pj4+IFNpbmNlcmVs eSB5b3VycywKPj4+Pj4+PiBTZXJndWVpIFNhZ2Fsb3ZpdGNoCj4+Pj4+Pj4KPj4+Pj4+Pgo+Pj4+ Pj4+IEZyb206IEFuZHJlcyBSb2RyaWd1ZXogPGFuZHJlc3JAdmFsdmVzb2Z0d2FyZS5jb20+Cj4+ Pj4+Pj4gU2VudDogRGVjZW1iZXIgMTYsIDIwMTYgODoyOSBQTQo+Pj4+Pj4+IFRvOiBTYWdhbG92 aXRjaCwgU2VyZ3VlaTsgYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPj4+Pj4+PiBTdWJq ZWN0OiBSRTogW1JGQ10gTWVjaGFuaXNtIGZvciBoaWdoIHByaW9yaXR5IHNjaGVkdWxpbmcgaW4g YW1kZ3B1Cj4+Pj4+Pj4KPj4+Pj4+PiBIaSBTZXJndWVpLAo+Pj4+Pj4+Cj4+Pj4+Pj4gVGhhbmtz IGZvciB0aGUgZmVlZGJhY2suIEFuc3dlcnMgaW5saW5lIGFzIFtBUl0uCj4+Pj4+Pj4KPj4+Pj4+ PiBSZWdhcmRzLAo+Pj4+Pj4+IEFuZHJlcwo+Pj4+Pj4+Cj4+Pj4+Pj4gX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwo+Pj4+Pj4+IEZyb206IFNhZ2Fsb3ZpdGNoLCBTZXJn dWVpIFtTZXJndWVpLlNhZ2Fsb3ZpdGNoQGFtZC5jb21dCj4+Pj4+Pj4gU2VudDogRnJpZGF5LCBE ZWNlbWJlciAxNiwgMjAxNiA4OjE1IFBNCj4+Pj4+Pj4gVG86IEFuZHJlcyBSb2RyaWd1ZXo7IGFt ZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4+Pj4+Pj4gU3ViamVjdDogUmU6IFtSRkNdIE1l Y2hhbmlzbSBmb3IgaGlnaCBwcmlvcml0eSBzY2hlZHVsaW5nIGluIGFtZGdwdQo+Pj4+Pj4+Cj4+ Pj4+Pj4gQW5kcmVzLAo+Pj4+Pj4+Cj4+Pj4+Pj4KPj4+Pj4+PiBRdWljayBjb21tZW50czoKPj4+ Pj4+Pgo+Pj4+Pj4+IDEpIFRvIG1pbmltaXplICJidWJibGVzIiwgZXRjLiB3ZSBuZWVkIHRvICJm b3JjZSIgQ1UgCj4+Pj4+Pj4gYXNzaWdubWVudHMvYmluZGluZwo+Pj4+Pj4+IHRvIGhpZ2gtcHJp b3JpdHkgcXVldWUgIHdoZW4gaXQgd2lsbCBiZSBpbiB1c2UgYW5kICJmcmVlIiB0aGVtIAo+Pj4+ Pj4+IGxhdGVyCj4+Pj4+Pj4gKHdlICBkbyBub3Qgd2FudCBmb3JldmVyIHRha2UgQ1VzIGZyb20g ZS5nLiBncmFwaGljIHRhc2sgdG8gZGVncmFkZQo+Pj4+Pj4+IGdyYXBoaWNzCj4+Pj4+Pj4gcGVy Zm9ybWFuY2UpLgo+Pj4+Pj4+Cj4+Pj4+Pj4gT3RoZXJ3aXNlIHdlIGNvdWxkIGhhdmUgc2NlbmFy aW8gd2hlbiBsb25nIGdyYXBoaWNzIHRhc2sgKG9yCj4+Pj4+Pj4gbG93LXByaW9yaXR5Cj4+Pj4+ Pj4gY29tcHV0ZSkgd2lsbCB0b29rIGFsbCAoZXh0cmEpIENVcyBhbmQgaGlnaC0tcHJpb3JpdHkg d2lsbCB3YWl0IGZvcgo+Pj4+Pj4+IG5lZWRlZCByZXNvdXJjZXMuCj4+Pj4+Pj4gSXQgd2lsbCBu b3QgYmUgdmlzaWJsZSBvbiAiTk9QICIgYnV0IG9ubHkgd2hlbiB5b3Ugc3VibWl0ICJyZWFsIgo+ Pj4+Pj4+IGNvbXB1dGUgdGFzawo+Pj4+Pj4+IHNvIEkgd291bGQgcmVjb21tZW5kICBub3QgdG8g dXNlICJOT1AiIHBhY2tldHMgYXQgYWxsIGZvciB0ZXN0aW5nLgo+Pj4+Pj4+Cj4+Pj4+Pj4gSXQg KENVIGFzc2lnbm1lbnQpIGNvdWxkIGJlIHJlbGF0aXZlbHkgZWFzeSBkb25lIHdoZW4gZXZlcnl0 aGluZyBpcwo+Pj4+Pj4+IGdvaW5nIHZpYSBrZXJuZWwKPj4+Pj4+PiAoZS5nLiBhcyBwYXJ0IG9m IGZyYW1lIHN1Ym1pc3Npb24pIGJ1dCBJIG11c3QgYWRtaXQgdGhhdCBJIGFtIAo+Pj4+Pj4+IG5v dCBzdXJlCj4+Pj4+Pj4gYWJvdXQgdGhlIGJlc3Qgd2F5IGZvciB1c2VyIGxldmVsIHN1Ym1pc3Np b25zIChhbWRrZmQpLgo+Pj4+Pj4+Cj4+Pj4+Pj4gW0FSXSBJIHdhc24ndCBhd2FyZSBvZiB0aGlz IHBhcnQgb2YgdGhlIHByb2dyYW1taW5nIHNlcXVlbmNlLiAKPj4+Pj4+PiBUaGFua3MKPj4+Pj4+ PiBmb3IgdGhlIGhlYWRzIHVwIQo+Pj4+Pj4+IElzIHRoaXMgc2ltaWxhciB0byB0aGUgQ1UgbWFz a2luZyBwcm9ncmFtbWluZz8KPj4+Pj4+PiBbU2VyZ3VlaV0gWWVzLiBUbyBzaW1wbGlmeTogdGhl IHByb2JsZW0gaXMgdGhhdCAic2NoZWR1bGVyIiB3aGVuCj4+Pj4+Pj4gZGVjaWRpbmcgd2hpY2gK Pj4+Pj4+PiBxdWV1ZSB0byAgcnVuIHdpbGwgY2hlY2sgaWYgdGhlcmUgaXMgZW5vdWdoIHJlc291 cmNlcyBhbmQgaWYgbm90IAo+Pj4+Pj4+IHRoZW4KPj4+Pj4+PiBpdCB3aWxsIGJlZ2luCj4+Pj4+ Pj4gdG8gY2hlY2sgb3RoZXIgcXVldWVzIHdpdGggbG93ZXIgcHJpb3JpdHkuCj4+Pj4+Pj4KPj4+ Pj4+PiAyKSBJIHdvdWxkIHJlY29tbWVuZCB0byBkZWRpY2F0ZSB0aGUgd2hvbGUgcGlwZSB0byBo aWdoLXByaW9yaXR5Cj4+Pj4+Pj4gcXVldWUgYW5kIGhhdmUKPj4+Pj4+PiBub3RoaW5nIHRoZWly IGV4Y2VwdCBpdC4KPj4+Pj4+Pgo+Pj4+Pj4+IFtBUl0gSSdtIGd1ZXNzaW5nIGluIHRoaXMgY29u dGV4dCB5b3UgbWVhbiBwaXBlID0gcXVldWU/IChhcyAKPj4+Pj4+PiBvcHBvc2VkCj4+Pj4+Pj4g dG8gdGhlIE1FQyBkZWZpbml0aW9uCj4+Pj4+Pj4gb2YgcGlwZSwgd2hpY2ggaXMgYSBncm91cGlu ZyBvZiBxdWV1ZXMpLiBJIHNheSB0aGlzIGJlY2F1c2UgYW1kZ3B1Cj4+Pj4+Pj4gb25seSBoYXMg YWNjZXNzIHRvIDEgcGlwZSwKPj4+Pj4+PiBhbmQgdGhlIHJlc3QgYXJlIHN0YXRpY2FsbHkgcGFy dGl0aW9uZWQgZm9yIGFtZGtmZCB1c2FnZS4KPj4+Pj4+Pgo+Pj4+Pj4+IFtTZXJndWVpXSBOby4g SSBtZWFuIHBpcGUgOi0pICBhcyBNRUMgZGVmaW5lIGl0LiAgQXMgZmFyIGFzIEkKPj4+Pj4+PiB1 bmRlcnN0YW5kIChieSBzaW1wbGlmeWluZykKPj4+Pj4+PiBzb21lIHNjaGVkdWxpbmcgaXMgcGVy IHBpcGUuICBJIGtub3cgYWJvdXQgdGhlIGN1cnJlbnQgYWxsb2NhdGlvbgo+Pj4+Pj4+IHNjaGVt ZSBidXQgSSBkbyBub3QgdGhpbmsKPj4+Pj4+PiB0aGF0IGl0IGlzICBpZGVhbC4gIEkgd291bGQg YXNzdW1lIHRoYXQgd2UgbmVlZCAgdG8gc3dpdGNoIHRvCj4+Pj4+Pj4gZHluYW1pY2FsIHBhcnRp dGlvbgo+Pj4+Pj4+IG9mIHJlc291cmNlcyAgYmFzZWQgb24gdGhlIHdvcmtsb2FkIG90aGVyd2lz ZSB3ZSB3aWxsIGhhdmUgcmVzb3VyY2UKPj4+Pj4+PiBjb25mbGljdAo+Pj4+Pj4+IGJldHdlZW4g VnVsa2FuIGNvbXB1dGUgYW5kICBPcGVuQ0wuCj4+Pj4+Pj4KPj4+Pj4+Pgo+Pj4+Pj4+IEJUVzog V2hpY2ggdXNlciBsZXZlbCBBUEkgZG8geW91IHdhbnQgdG8gdXNlIGZvciBjb21wdXRlOiBWdWxr YW4gb3IKPj4+Pj4+PiBPcGVuQ0w/Cj4+Pj4+Pj4KPj4+Pj4+PiBbQVJdIFZ1bGthbgo+Pj4+Pj4+ Cj4+Pj4+Pj4gW1Nlcmd1ZWldIFZ1bGthbiB3b3JrcyB2aWEgYW1kZ3B1IChrZXJuZWwgc3VibWlz c2lvbnMpIHNvIGFtZGtmZCAKPj4+Pj4+PiB3aWxsCj4+Pj4+Pj4gYmUgbm90Cj4+Pj4+Pj4gaW52 b2x2ZWQuICBJIHdvdWxkIGFzc3VtZSB0aGF0IGluIHRoZSBjYXNlIG9mIFZSIHdlIHdpbGwgaGF2 ZSAKPj4+Pj4+PiBvbmUgbWFpbgo+Pj4+Pj4+IGFwcGxpY2F0aW9uICgiY29uc29sZSIgbW9kZSg/ KSkgc28gd2UgY291bGQgdGVtcG9yYWxseSAiaWdub3JlIgo+Pj4+Pj4+IE9wZW5DTC9ST0NtIG5l ZWRzIHdoZW4gVlIgaXMgcnVubmluZy4KPj4+Pj4+Pgo+Pj4+Pj4+PiAgd2Ugd2lsbCBub3QgYmUg YWJsZSB0byBwcm92aWRlIGEgc29sdXRpb24gY29tcGF0aWJsZSB3aXRoIEdGWAo+Pj4+Pj4+PiB3 b3Jsb2Fkcy4KPj4+Pj4+PiBJIGFzc3VtZSB0aGF0IHlvdSBhcmUgdGFsa2luZyBhYm91dCBncmFw aGljcz8gQW0gSSByaWdodD8KPj4+Pj4+Pgo+Pj4+Pj4+IFtBUl0gWWVhaCwgbXkgdW5kZXJzdGFu ZGluZyBpcyB0aGF0IHByZS1lbXB0aW5nIHRoZSBjdXJyZW50bHkgCj4+Pj4+Pj4gcnVubmluZwo+ Pj4+Pj4+IGdyYXBoaWNzIGpvYiBhbmQgc2NoZWR1bGluZyBpbgo+Pj4+Pj4+IHNvbWV0aGluZyBl bHNlIHVzaW5nIG1pZC1idWZmZXIgcHJlLWVtcHRpb24gaGFzIHNvbWUgY2FzZXMgd2hlcmUgaXQK Pj4+Pj4+PiBkb2Vzbid0IHdvcmsgd2VsbC4gQnV0IGlmIHdpdGgKPj4+Pj4+PiBwb2xhcmlzMTAg aXQgc3RhcnRzIHdvcmtpbmcgd2VsbCwgaXQgbWlnaHQgYmUgYSBiZXR0ZXIgc29sdXRpb24gZm9y Cj4+Pj4+Pj4gdXMgKGJlY2F1c2UgdGhlIHdob2xlIHJlcHJvamVjdGlvbgo+Pj4+Pj4+IHdvcmsg dXNlcyB0aGUgdnVsa2FuIGdyYXBoaWNzIHN0YWNrIGF0IHRoZSBtb21lbnQsIGFuZCBwb3J0aW5n IAo+Pj4+Pj4+IGl0IHRvCj4+Pj4+Pj4gY29tcHV0ZSBpcyBub3QgdHJpdmlhbCkuCj4+Pj4+Pj4K Pj4+Pj4+PiBbU2VyZ3VlaV0gIFRoZSBwcm9ibGVtIHdpdGggcHJlLWVtcHRpb24gb2YgZ3JhcGhp Y3MgdGFzazogKGEpIGl0IAo+Pj4+Pj4+IG1heQo+Pj4+Pj4+IHRha2UgdGltZSBzbwo+Pj4+Pj4+ IGxhdGVuY3kgbWF5IHN1ZmZlciAoYikgdG8gcHJlZW1wdCB3ZSBuZWVkIHRvIGhhdmUgZGlmZmVy ZW50IAo+Pj4+Pj4+ICJjb250ZXh0Igo+Pj4+Pj4+IC0gd2Ugd2FudAo+Pj4+Pj4+IHRvIGd1YXJh bnRlZSB0aGF0IHN1Ym1pc3Npb25zIGZyb20gdGhlIHNhbWUgY29udGV4dCB3aWxsIGJlIAo+Pj4+ Pj4+IGV4ZWN1dGVkCj4+Pj4+Pj4gaW4gb3JkZXIuCj4+Pj4+Pj4gQlRXOiAoYSkgRG8geW91IHdh bnQgICJwcmVlbXB0IiBhbmQgbGF0ZXIgcmVzdW1lIG9yIGRvIHlvdSB3YW50Cj4+Pj4+Pj4gInBy ZWVtcHQiIGFuZAo+Pj4+Pj4+ICJjYW5jZWwvYWJvcnQiPyAgKGIpIFZ1bGthbiBpcyBnZW5lcmlj IEFQSSBhbmQgY291bGQgYmUgdXNlZAo+Pj4+Pj4+IGZvciBncmFwaGljcyBhcyB3ZWxsIGFzIGZv ciBwbGFpbiBjb21wdXRlIHRhc2tzIAo+Pj4+Pj4+IChWS19RVUVVRV9DT01QVVRFX0JJVCkuCj4+ Pj4+Pj4KPj4+Pj4+Pgo+Pj4+Pj4+IFNpbmNlcmVseSB5b3VycywKPj4+Pj4+PiBTZXJndWVpIFNh Z2Fsb3ZpdGNoCj4+Pj4+Pj4KPj4+Pj4+Pgo+Pj4+Pj4+Cj4+Pj4+Pj4gRnJvbTogYW1kLWdmeCA8 YW1kLWdmeC1ib3VuY2VzQGxpc3RzLmZyZWVkZXNrdG9wLm9yZz4gb24gYmVoYWxmIG9mCj4+Pj4+ Pj4gQW5kcmVzIFJvZHJpZ3VleiA8YW5kcmVzckB2YWx2ZXNvZnR3YXJlLmNvbT4KPj4+Pj4+PiBT ZW50OiBEZWNlbWJlciAxNiwgMjAxNiA2OjE1IFBNCj4+Pj4+Pj4gVG86IGFtZC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCj4+Pj4+Pj4gU3ViamVjdDogW1JGQ10gTWVjaGFuaXNtIGZvciBoaWdo IHByaW9yaXR5IHNjaGVkdWxpbmcgaW4gYW1kZ3B1Cj4+Pj4+Pj4KPj4+Pj4+PiBIaSBFdmVyeW9u ZSwKPj4+Pj4+Pgo+Pj4+Pj4+IFRoaXMgUkZDIGlzIGFsc28gYXZhaWxhYmxlIGFzIGEgZ2lzdCBo ZXJlOgo+Pj4+Pj4+IGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL2xvc3Rnb2F0LzcwMDA0MzJjZDY4 NjQyNjVkYmMyYzNhYjkzMjA0MjQ5Cj4+Pj4+Pj4KPj4+Pj4+Pgo+Pj4+Pj4+Cj4+Pj4+Pj4gW1JG Q10gTWVjaGFuaXNtIGZvciBoaWdoIHByaW9yaXR5IHNjaGVkdWxpbmcgaW4gYW1kZ3B1Cj4+Pj4+ Pj4gZ2lzdC5naXRodWIuY29tCj4+Pj4+Pj4gW1JGQ10gTWVjaGFuaXNtIGZvciBoaWdoIHByaW9y aXR5IHNjaGVkdWxpbmcgaW4gYW1kZ3B1Cj4+Pj4+Pj4KPj4+Pj4+Pgo+Pj4+Pj4+Cj4+Pj4+Pj4g W1JGQ10gTWVjaGFuaXNtIGZvciBoaWdoIHByaW9yaXR5IHNjaGVkdWxpbmcgaW4gYW1kZ3B1Cj4+ Pj4+Pj4gZ2lzdC5naXRodWIuY29tCj4+Pj4+Pj4gW1JGQ10gTWVjaGFuaXNtIGZvciBoaWdoIHBy aW9yaXR5IHNjaGVkdWxpbmcgaW4gYW1kZ3B1Cj4+Pj4+Pj4KPj4+Pj4+Pgo+Pj4+Pj4+Cj4+Pj4+ Pj4KPj4+Pj4+PiBbUkZDXSBNZWNoYW5pc20gZm9yIGhpZ2ggcHJpb3JpdHkgc2NoZWR1bGluZyBp biBhbWRncHUKPj4+Pj4+PiBnaXN0LmdpdGh1Yi5jb20KPj4+Pj4+PiBbUkZDXSBNZWNoYW5pc20g Zm9yIGhpZ2ggcHJpb3JpdHkgc2NoZWR1bGluZyBpbiBhbWRncHUKPj4+Pj4+Pgo+Pj4+Pj4+Cj4+ Pj4+Pj4gV2UgYXJlIGludGVyZXN0ZWQgaW4gZmVlZGJhY2sgZm9yIGEgbWVjaGFuaXNtIHRvIGVm ZmVjdGl2ZWx5IAo+Pj4+Pj4+IHNjaGVkdWxlCj4+Pj4+Pj4gaGlnaAo+Pj4+Pj4+IHByaW9yaXR5 IFZSIHJlcHJvamVjdGlvbiB0YXNrcyAoYWxzbyByZWZlcnJlZCB0byBhcyAKPj4+Pj4+PiB0aW1l LXdhcnBpbmcpIGZvcgo+Pj4+Pj4+IFBvbGFyaXMxMAo+Pj4+Pj4+IHJ1bm5pbmcgb24gdGhlIGFt ZGdwdSBrZXJuZWwgZHJpdmVyLgo+Pj4+Pj4+Cj4+Pj4+Pj4gQnJpZWYgY29udGV4dDoKPj4+Pj4+ PiAtLS0tLS0tLS0tLS0tLQo+Pj4+Pj4+Cj4+Pj4+Pj4gVGhlIG1haW4gb2JqZWN0aXZlIG9mIHJl cHJvamVjdGlvbiBpcyB0byBhdm9pZCBtb3Rpb24gc2lja25lc3MgCj4+Pj4+Pj4gZm9yIFZSCj4+ Pj4+Pj4gdXNlcnMgaW4KPj4+Pj4+PiBzY2VuYXJpb3Mgd2hlcmUgdGhlIGdhbWUgb3IgYXBwbGlj YXRpb24gd291bGQgZmFpbCB0byBmaW5pc2gKPj4+Pj4+PiByZW5kZXJpbmcgYSBuZXcKPj4+Pj4+ PiBmcmFtZSBpbiB0aW1lIGZvciB0aGUgbmV4dCBWQkxBTksuIFdoZW4gdGhpcyBoYXBwZW5zLCB0 aGUgdXNlcidzIAo+Pj4+Pj4+IGhlYWQKPj4+Pj4+PiBtb3ZlbWVudHMKPj4+Pj4+PiBhcmUgbm90 IHJlZmxlY3RlZCBvbiB0aGUgSGVhZCBNb3VudGVkIERpc3BsYXkgKEhNRCkgZm9yIHRoZSAKPj4+ Pj4+PiBkdXJhdGlvbgo+Pj4+Pj4+IG9mIGFuCj4+Pj4+Pj4gZXh0cmEgZnJhbWUuIFRoaXMgZXh0 ZW5kZWQgbWlzbWF0Y2ggYmV0d2VlbiB0aGUgaW5uZXIgZWFyIGFuZCB0aGUKPj4+Pj4+PiBleWVz IG1heQo+Pj4+Pj4+IGNhdXNlIHRoZSB1c2VyIHRvIGV4cGVyaWVuY2UgbW90aW9uIHNpY2tuZXNz Lgo+Pj4+Pj4+Cj4+Pj4+Pj4gVGhlIFZSIGNvbXBvc2l0b3IgZGVhbHMgd2l0aCB0aGlzIHByb2Js ZW0gYnkgZmFicmljYXRpbmcgYSBuZXcgCj4+Pj4+Pj4gZnJhbWUKPj4+Pj4+PiB1c2luZyB0aGUK Pj4+Pj4+PiB1c2VyJ3MgdXBkYXRlZCBoZWFkIHBvc2l0aW9uIGluIGNvbWJpbmF0aW9uIHdpdGgg dGhlIHByZXZpb3VzIAo+Pj4+Pj4+IGZyYW1lcy4KPj4+Pj4+PiBUaGlzCj4+Pj4+Pj4gYXZvaWRz IGEgcHJvbG9uZ2VkIG1pc21hdGNoIGJldHdlZW4gdGhlIEhNRCBvdXRwdXQgYW5kIHRoZSBpbm5l ciAKPj4+Pj4+PiBlYXIuCj4+Pj4+Pj4KPj4+Pj4+PiBCZWNhdXNlIG9mIHRoZSBhZHZlcnNlIGVm ZmVjdHMgb24gdGhlIHVzZXIsIHdlIHJlcXVpcmUgaGlnaAo+Pj4+Pj4+IGNvbmZpZGVuY2UgdGhh dCB0aGUKPj4+Pj4+PiByZXByb2plY3Rpb24gdGFzayB3aWxsIGNvbXBsZXRlIGJlZm9yZSB0aGUg VkJMQU5LIGludGVydmFsLiBFdmVuIGlmCj4+Pj4+Pj4gdGhlIEdGWCBwaXBlCj4+Pj4+Pj4gaXMg Y3VycmVudGx5IGZ1bGwgb2Ygd29yayBmcm9tIHRoZSBnYW1lL2FwcGxpY2F0aW9uICh3aGljaCBp cyBtb3N0Cj4+Pj4+Pj4gbGlrZWx5IHRoZSBjYXNlKS4KPj4+Pj4+Pgo+Pj4+Pj4+IEZvciBtb3Jl IGRldGFpbHMgYW5kIGlsbHVzdHJhdGlvbnMsIHBsZWFzZSByZWZlciB0byB0aGUgZm9sbG93aW5n Cj4+Pj4+Pj4gZG9jdW1lbnQ6Cj4+Pj4+Pj4gaHR0cHM6Ly9jb21tdW5pdHkuYW1kLmNvbS9jb21t dW5pdHkvZ2FtaW5nL2Jsb2cvMjAxNi8wMy8yOC9hc3luY2hyb25vdXMtc2hhZGVycy1ldm9sdmVk IAo+Pj4+Pj4+Cj4+Pj4+Pj4KPj4+Pj4+Pgo+Pj4+Pj4+Cj4+Pj4+Pj4gR2FtaW5nOiBBc3luY2hy b25vdXMgU2hhZGVycyBFdm9sdmVkIHwgQ29tbXVuaXR5Cj4+Pj4+Pj4gY29tbXVuaXR5LmFtZC5j b20KPj4+Pj4+PiBPbmUgb2YgdGhlIG1vc3QgZXhjaXRpbmcgbmV3IGRldmVsb3BtZW50cyBpbiBH UFUgdGVjaG5vbG9neSBvdmVyIAo+Pj4+Pj4+IHRoZQo+Pj4+Pj4+IHBhc3QgeWVhciBoYXMgYmVl biB0aGUgYWRvcHRpb24gb2YgYXN5bmNocm9ub3VzIHNoYWRlcnMsIHdoaWNoIGNhbgo+Pj4+Pj4+ IG1ha2UgbW9yZSBlZmZpY2llbnQgdXNlIG9mIC4uLgo+Pj4+Pj4+Cj4+Pj4+Pj4KPj4+Pj4+Pgo+ Pj4+Pj4+IEdhbWluZzogQXN5bmNocm9ub3VzIFNoYWRlcnMgRXZvbHZlZCB8IENvbW11bml0eQo+ Pj4+Pj4+IGNvbW11bml0eS5hbWQuY29tCj4+Pj4+Pj4gT25lIG9mIHRoZSBtb3N0IGV4Y2l0aW5n IG5ldyBkZXZlbG9wbWVudHMgaW4gR1BVIHRlY2hub2xvZ3kgb3ZlciAKPj4+Pj4+PiB0aGUKPj4+ Pj4+PiBwYXN0IHllYXIgaGFzIGJlZW4gdGhlIGFkb3B0aW9uIG9mIGFzeW5jaHJvbm91cyBzaGFk ZXJzLCB3aGljaCBjYW4KPj4+Pj4+PiBtYWtlIG1vcmUgZWZmaWNpZW50IHVzZSBvZiAuLi4KPj4+ Pj4+Pgo+Pj4+Pj4+Cj4+Pj4+Pj4KPj4+Pj4+PiBHYW1pbmc6IEFzeW5jaHJvbm91cyBTaGFkZXJz IEV2b2x2ZWQgfCBDb21tdW5pdHkKPj4+Pj4+PiBjb21tdW5pdHkuYW1kLmNvbQo+Pj4+Pj4+IE9u ZSBvZiB0aGUgbW9zdCBleGNpdGluZyBuZXcgZGV2ZWxvcG1lbnRzIGluIEdQVSB0ZWNobm9sb2d5 IG92ZXIgCj4+Pj4+Pj4gdGhlCj4+Pj4+Pj4gcGFzdCB5ZWFyIGhhcyBiZWVuIHRoZSBhZG9wdGlv biBvZiBhc3luY2hyb25vdXMgc2hhZGVycywgd2hpY2ggY2FuCj4+Pj4+Pj4gbWFrZSBtb3JlIGVm ZmljaWVudCB1c2Ugb2YgLi4uCj4+Pj4+Pj4KPj4+Pj4+Pgo+Pj4+Pj4+IFJlcXVpcmVtZW50czoK Pj4+Pj4+PiAtLS0tLS0tLS0tLS0tCj4+Pj4+Pj4KPj4+Pj4+PiBUaGUgbWVjaGFuaXNtIG11c3Qg ZXhwb3NlIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25haWxpdHk6Cj4+Pj4+Pj4KPj4+Pj4+PiAgICAg KiBKb2Igcm91bmQgdHJpcCB0aW1lIG11c3QgYmUgcHJlZGljdGFibGUsIGZyb20gc3VibWlzc2lv biB0bwo+Pj4+Pj4+IGZlbmNlIHNpZ25hbAo+Pj4+Pj4+Cj4+Pj4+Pj4gICAgICogVGhlIG1lY2hh bmlzbSBtdXN0IHN1cHBvcnQgY29tcHV0ZSB3b3JrbG9hZHMuCj4+Pj4+Pj4KPj4+Pj4+PiBHb2Fs czoKPj4+Pj4+PiAtLS0tLS0KPj4+Pj4+Pgo+Pj4+Pj4+ICAgICAqIFRoZSBtZWNoYW5pc20gc2hv dWxkIHByb3ZpZGUgbG93IHN1Ym1pc3Npb24gbGF0ZW5jaWVzCj4+Pj4+Pj4KPj4+Pj4+PiBUZXN0 OiBzdWJtaXR0aW5nIGEgTk9QIHBhY2tldCB0aHJvdWdoIHRoZSBtZWNoYW5pc20gb24gYnVzeSAK Pj4+Pj4+PiBoYXJkd2FyZQo+Pj4+Pj4+IHNob3VsZAo+Pj4+Pj4+IGJlIGVxdWl2YWxlbnQgdG8g c3VibWl0dGluZyBhIE5PUCBvbiBpZGxlIGhhcmR3YXJlLgo+Pj4+Pj4+Cj4+Pj4+Pj4gTmljZSB0 byBoYXZlOgo+Pj4+Pj4+IC0tLS0tLS0tLS0tLS0KPj4+Pj4+Pgo+Pj4+Pj4+ICAgICAqIFRoZSBt ZWNoYW5pc20gc2hvdWxkIGFsc28gc3VwcG9ydCBHRlggd29ya2xvYWRzLgo+Pj4+Pj4+Cj4+Pj4+ Pj4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHdpdGggdGhlIGN1cnJlbnQgaGFyZHdhcmUgY2Fw YWJpbGl0aWVzIGluCj4+Pj4+Pj4gUG9sYXJpczEwIHdlCj4+Pj4+Pj4gd2lsbCBub3QgYmUgYWJs ZSB0byBwcm92aWRlIGEgc29sdXRpb24gY29tcGF0aWJsZSB3aXRoIEdGWCAKPj4+Pj4+PiB3b3Js b2Fkcy4KPj4+Pj4+Pgo+Pj4+Pj4+IEJ1dCBJIHdvdWxkIGxvdmUgdG8gaGVhciBvdGhlcndpc2Uu IFNvIGlmIGFueW9uZSBoYXMgYW4gaWRlYSwKPj4+Pj4+PiBhcHByb2FjaCBvcgo+Pj4+Pj4+IHN1 Z2dlc3Rpb24gdGhhdCB3aWxsIGFsc28gYmUgY29tcGF0aWJsZSB3aXRoIHRoZSBHRlggcmluZywg Cj4+Pj4+Pj4gcGxlYXNlIGxldAo+Pj4+Pj4+IHVzIGtub3cKPj4+Pj4+PiBhYm91dCBpdC4KPj4+ Pj4+Pgo+Pj4+Pj4+ICAgICAqIFRoZSBhYm92ZSBndWFyYW50ZWVzIHNob3VsZCBhbHNvIGJlIHJl c3BlY3RlZCBieSBhbWRrZmQgCj4+Pj4+Pj4gd29ya2xvYWRzCj4+Pj4+Pj4KPj4+Pj4+PiBXb3Vs ZCBiZSBnb29kIHRvIGhhdmUgZm9yIGNvbnNpc3RlbmN5LCBidXQgbm90IHN0cmljdGx5IAo+Pj4+ Pj4+IG5lY2Vzc2FyeSBhcwo+Pj4+Pj4+IHVzZXJzIHJ1bm5pbmcKPj4+Pj4+PiBnYW1lcyBhcmUg bm90IHRyYWRpdGlvbmFsbHkgcnVubmluZyBIUEMgd29ya2xvYWRzIGluIHRoZSAKPj4+Pj4+PiBi YWNrZ3JvdW5kLgo+Pj4+Pj4+Cj4+Pj4+Pj4gUHJvcG9zZWQgYXBwcm9hY2g6Cj4+Pj4+Pj4gLS0t LS0tLS0tLS0tLS0tLS0tCj4+Pj4+Pj4KPj4+Pj4+PiBTaW1pbGFyIHRvIHRoZSB3aW5kb3dzIGRy aXZlciwgd2UgY291bGQgZXhwb3NlIGEgaGlnaCBwcmlvcml0eQo+Pj4+Pj4+IGNvbXB1dGUgcXVl dWUgdG8KPj4+Pj4+PiB1c2Vyc3BhY2UuCj4+Pj4+Pj4KPj4+Pj4+PiBTdWJtaXNzaW9ucyB0byB0 aGlzIGNvbXB1dGUgcXVldWUgd2lsbCBiZSBzY2hlZHVsZWQgd2l0aCBoaWdoCj4+Pj4+Pj4gcHJp b3JpdHksIGFuZCBtYXkKPj4+Pj4+PiBhY3F1aXJlIGhhcmR3YXJlIHJlc291cmNlcyBwcmV2aW91 c2x5IGluIHVzZSBieSBvdGhlciBxdWV1ZXMuCj4+Pj4+Pj4KPj4+Pj4+PiBUaGlzIGNhbiBiZSBh Y2hpZXZlZCBieSB0YWtpbmcgYWR2YW50YWdlIG9mIHRoZSAncHJpb3JpdHknIGZpZWxkIGluCj4+ Pj4+Pj4gdGhlIEhRRHMKPj4+Pj4+PiBhbmQgY291bGQgYmUgcHJvZ3JhbW1lZCBieSBhbWRncHUg b3IgdGhlIGFtZGdwdSBzY2hlZHVsZXIuIFRoZSAKPj4+Pj4+PiByZWxldmFudAo+Pj4+Pj4+IHJl Z2lzdGVyIGZpZWxkcyBhcmU6Cj4+Pj4+Pj4gICAgICAgICAqIG1tQ1BfSFFEX1BJUEVfUFJJT1JJ VFkKPj4+Pj4+PiAgICAgICAgICogbW1DUF9IUURfUVVFVUVfUFJJT1JJVFkKPj4+Pj4+Pgo+Pj4+ Pj4+IEltcGxlbWVudGF0aW9uIGFwcHJvYWNoIDEgLSBzdGF0aWMgcGFydGl0aW9uaW5nOgo+Pj4+ Pj4+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+Pj4+ Pj4+Cj4+Pj4+Pj4gVGhlIGFtZGdwdSBkcml2ZXIgY3VycmVudGx5IGNvbnRyb2xzIDggY29tcHV0 ZSBxdWV1ZXMgZnJvbSAKPj4+Pj4+PiBwaXBlMC4gV2UgY2FuCj4+Pj4+Pj4gc3RhdGljYWxseSBw YXJ0aXRpb24gdGhlc2UgYXMgZm9sbG93czoKPj4+Pj4+PiAgICAgICAgICogN3ggcmVndWxhcgo+ Pj4+Pj4+ICAgICAgICAgKiAxeCBoaWdoIHByaW9yaXR5Cj4+Pj4+Pj4KPj4+Pj4+PiBUaGUgcmVs ZXZhbnQgcHJpb3JpdGllcyBjYW4gYmUgc2V0IHNvIHRoYXQgc3VibWlzc2lvbnMgdG8gdGhlIGhp Z2gKPj4+Pj4+PiBwcmlvcml0eQo+Pj4+Pj4+IHJpbmcgd2lsbCBzdGFydmUgdGhlIG90aGVyIGNv bXB1dGUgcmluZ3MgYW5kIHRoZSBHRlggcmluZy4KPj4+Pj4+Pgo+Pj4+Pj4+IFRoZSBhbWRncHUg c2NoZWR1bGVyIHdpbGwgb25seSBwbGFjZSBqb2JzIGludG8gdGhlIGhpZ2ggcHJpb3JpdHkKPj4+ Pj4+PiByaW5ncyBpZiB0aGUKPj4+Pj4+PiBjb250ZXh0IGlzIG1hcmtlZCBhcyBoaWdoIHByaW9y aXR5LiBBbmQgYSBjb3JyZXNwb25kaW5nIHByaW9yaXR5Cj4+Pj4+Pj4gc2hvdWxkIGJlCj4+Pj4+ Pj4gYWRkZWQgdG8ga2VlcCB0cmFjayBvZiB0aGlzIGluZm9ybWF0aW9uOgo+Pj4+Pj4+ICAgICAg KiBBTURfU0NIRURfUFJJT1JJVFlfS0VSTkVMCj4+Pj4+Pj4gICAgICAqIC0+IEFNRF9TQ0hFRF9Q UklPUklUWV9ISUdICj4+Pj4+Pj4gICAgICAqIEFNRF9TQ0hFRF9QUklPUklUWV9OT1JNQUwKPj4+ Pj4+Pgo+Pj4+Pj4+IFRoZSB1c2VyIHdpbGwgcmVxdWVzdCBhIGhpZ2ggcHJpb3JpdHkgY29udGV4 dCBieSBzZXR0aW5nIGFuCj4+Pj4+Pj4gYXBwcm9wcmlhdGUgZmxhZwo+Pj4+Pj4+IGluIGRybV9h bWRncHVfY3R4X2luIChBTURHUFVfQ1RYX0hJR0hfUFJJT1JJVFkgb3Igc2ltaWxhcik6Cj4+Pj4+ Pj4gaHR0cHM6Ly9naXRodWIuY29tL3RvcnZhbGRzL2xpbnV4L2Jsb2IvbWFzdGVyL2luY2x1ZGUv dWFwaS9kcm0vYW1kZ3B1X2RybS5oI0wxNjMgCj4+Pj4+Pj4KPj4+Pj4+Pgo+Pj4+Pj4+Cj4+Pj4+ Pj4gVGhlIHNldHRpbmcgaXMgaW4gYSBwZXIgY29udGV4dCBsZXZlbCBzbyB0aGF0IHdlIGNhbjoK Pj4+Pj4+PiAgICAgKiBNYWludGFpbiBhIGNvbnNpc3RlbnQgRklGTyBvcmRlcmluZyBvZiBhbGwg c3VibWlzc2lvbnMgdG8gYQo+Pj4+Pj4+IGNvbnRleHQKPj4+Pj4+PiAgICAgKiBDcmVhdGUgaGln aCBwcmlvcml0eSBhbmQgbm9uLWhpZ2ggcHJpb3JpdHkgY29udGV4dHMgaW4gdGhlIAo+Pj4+Pj4+ IHNhbWUKPj4+Pj4+PiBwcm9jZXNzCj4+Pj4+Pj4KPj4+Pj4+PiBJbXBsZW1lbnRhdGlvbiBhcHBy b2FjaCAyIC0gZHluYW1pYyBwcmlvcml0eSBwcm9ncmFtbWluZzoKPj4+Pj4+PiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPj4+Pj4+Pgo+ Pj4+Pj4+IFNpbWlsYXIgdG8gdGhlIGFib3ZlLCBidXQgaW5zdGVhZCBvZiBwcm9ncmFtbWluZyB0 aGUgcHJpb3JpdGllcyBhbmQKPj4+Pj4+PiBhbWRncHVfaW5pdCgpIHRpbWUsIHRoZSBTVyBzY2hl ZHVsZXIgd2lsbCByZXByb2dyYW0gdGhlIHF1ZXVlIAo+Pj4+Pj4+IHByaW9yaXRpZXMKPj4+Pj4+ PiBkeW5hbWljYWxseSB3aGVuIHNjaGVkdWxpbmcgYSB0YXNrLgo+Pj4+Pj4+Cj4+Pj4+Pj4gVGhp cyB3b3VsZCBpbnZvbHZlIGhhdmluZyBhIGhhcmR3YXJlIHNwZWNpZmljIGNhbGxiYWNrIGZyb20g dGhlCj4+Pj4+Pj4gc2NoZWR1bGVyIHRvCj4+Pj4+Pj4gc2V0IHRoZSBhcHByb3ByaWF0ZSBxdWV1 ZSBwcmlvcml0eTogc2V0X3ByaW9yaXR5KGludCByaW5nLCBpbnQgCj4+Pj4+Pj4gaW5kZXgsCj4+ Pj4+Pj4gaW50IHByaW9yaXR5KQo+Pj4+Pj4+Cj4+Pj4+Pj4gRHVyaW5nIHRoaXMgY2FsbGJhY2sg d2Ugd291bGQgaGF2ZSB0byBncmFiIHRoZSBTUkJNIG11dGV4IHRvIAo+Pj4+Pj4+IHBlcmZvcm0K Pj4+Pj4+PiB0aGUgYXBwcm9wcmlhdGUKPj4+Pj4+PiBIVyBwcm9ncmFtbWluZywgYW5kIEknbSBu b3QgcmVhbGx5IHN1cmUgaWYgdGhhdCBpcyBzb21ldGhpbmcgd2UKPj4+Pj4+PiBzaG91bGQgYmUg ZG9pbmcgZnJvbQo+Pj4+Pj4+IHRoZSBzY2hlZHVsZXIuCj4+Pj4+Pj4KPj4+Pj4+PiBPbiB0aGUg cG9zaXRpdmUgc2lkZSwgdGhpcyBhcHByb2FjaCB3b3VsZCBhbGxvdyB1cyB0byBwcm9ncmFtIGEg Cj4+Pj4+Pj4gcmFuZ2Ugb2YKPj4+Pj4+PiBwcmlvcml0aWVzIGZvciBqb2JzIGluc3RlYWQgb2Yg YSBzaW5nbGUgImhpZ2ggcHJpb3JpdHkiIHZhbHVlIiwKPj4+Pj4+PiBhY2hpZXZpbmcKPj4+Pj4+ PiBzb21ldGhpbmcgc2ltaWxhciB0byB0aGUgbmljZW5lc3MgQVBJIGF2YWlsYWJsZSBmb3IgQ1BV IHNjaGVkdWxpbmcuCj4+Pj4+Pj4KPj4+Pj4+PiBJJ20gbm90IHN1cmUgaWYgdGhpcyBmbGV4aWJp bGl0eSBpcyBzb21ldGhpbmcgdGhhdCB3ZSB3b3VsZCBuZWVkIAo+Pj4+Pj4+IGZvcgo+Pj4+Pj4+ IG91ciB1c2UKPj4+Pj4+PiBjYXNlLCBidXQgaXQgbWlnaHQgYmUgdXNlZnVsIGluIG90aGVyIHNj ZW5hcmlvcyAobXVsdGlwbGUgdXNlcnMKPj4+Pj4+PiBzaGFyaW5nIGNvbXB1dGUKPj4+Pj4+PiB0 aW1lIG9uIGEgc2VydmVyKS4KPj4+Pj4+Pgo+Pj4+Pj4+IFRoaXMgYXBwcm9hY2ggd291bGQgcmVx dWlyZSBhIG5ldyBpbnQgZmllbGQgaW4gCj4+Pj4+Pj4gZHJtX2FtZGdwdV9jdHhfaW4sIG9yCj4+ Pj4+Pj4gcmVwdXJwb3NpbmcKPj4+Pj4+PiBvZiB0aGUgZmxhZ3MgZmllbGQuCj4+Pj4+Pj4KPj4+ Pj4+PiBLbm93biBjdXJyZW50IG9ic3RhY2xlczoKPj4+Pj4+PiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KPj4+Pj4+Pgo+Pj4+Pj4+IFRoZSBTUSBpcyBjdXJyZW50bHkgcHJvZ3JhbW1lZCB0byBk aXNyZWdhcmQgdGhlIEhRRCBwcmlvcml0aWVzLCBhbmQKPj4+Pj4+PiBpbnN0ZWFkIGl0IHBpY2tz Cj4+Pj4+Pj4gam9icyBhdCByYW5kb20uIFNldHRpbmdzIGZyb20gdGhlIHNoYWRlciBpdHNlbGYg YXJlIGFsc28gCj4+Pj4+Pj4gZGlzcmVnYXJkZWQKPj4+Pj4+PiBhcyB0aGlzIGlzCj4+Pj4+Pj4g Y29uc2lkZXJlZCBhIHByaXZpbGVnZWQgZmllbGQuCj4+Pj4+Pj4KPj4+Pj4+PiBFZmZlY3RpdmVs eSB3ZSBjYW4gZ2V0IG91ciBjb21wdXRlIHdhdmVmcm9udCBsYXVuY2hlZCBBU0FQLCBidXQgd2UK Pj4+Pj4+PiBtaWdodCBub3QgZ2V0IHRoZQo+Pj4+Pj4+IHRpbWUgd2UgbmVlZCBvbiB0aGUgU1Eu Cj4+Pj4+Pj4KPj4+Pj4+PiBUaGUgY3VycmVudCBwcm9ncmFtbWluZyB3b3VsZCBoYXZlIHRvIGJl IGNoYW5nZWQgdG8gYWxsb3cgcHJpb3JpdHkKPj4+Pj4+PiBwcm9wYWdhdGlvbgo+Pj4+Pj4+IGZy b20gdGhlIEhRRCBpbnRvIHRoZSBTUS4KPj4+Pj4+Pgo+Pj4+Pj4+IEdlbmVyaWMgYXBwcm9hY2gg Zm9yIGFsbCBIVyBJUHM6Cj4+Pj4+Pj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K Pj4+Pj4+Pgo+Pj4+Pj4+IEZvciBjb25zaXN0ZW5jeSBwdXJwb3NlcywgdGhlIGhpZ2ggcHJpb3Jp dHkgY29udGV4dCBjYW4gYmUgZW5hYmxlZAo+Pj4+Pj4+IGZvciBhbGwgSFcgSVBzCj4+Pj4+Pj4g d2l0aCBzdXBwb3J0IG9mIHRoZSBTVyBzY2hlZHVsZXIuIFRoaXMgd2lsbCBmdW5jdGlvbiBzaW1p bGFybHkgCj4+Pj4+Pj4gdG8gdGhlCj4+Pj4+Pj4gY3VycmVudAo+Pj4+Pj4+IEFNRF9TQ0hFRF9Q UklPUklUWV9LRVJORUwgcHJpb3JpdHksIHdoZXJlIHRoZSBqb2IgY2FuIGp1bXAgYWhlYWQgb2YK Pj4+Pj4+PiBhbnl0aGluZyBub3QKPj4+Pj4+PiBjb21taXRlZCB0byB0aGUgSFcgcXVldWUuCj4+ Pj4+Pj4KPj4+Pj4+PiBUaGUgYmVuZWZpdHMgb2YgcmVxdWVzdGluZyBhIGhpZ2ggcHJpb3JpdHkg Y29udGV4dCBmb3IgYSAKPj4+Pj4+PiBub24tY29tcHV0ZQo+Pj4+Pj4+IHF1ZXVlIHdpbGwKPj4+ Pj4+PiBiZSBsZXNzZXIgKGUuZy4gdXAgdG8gMTBzIG9mIHdhaXQgdGltZSBpZiBhIEdGWCBjb21t YW5kIGlzIHN0dWNrIGluCj4+Pj4+Pj4gZnJvbnQgb2YKPj4+Pj4+PiB5b3UpLCBidXQgaGF2aW5n IHRoZSBBUEkgaW4gcGxhY2Ugd2lsbCBhbGxvdyB1cyB0byBlYXNpbHkgCj4+Pj4+Pj4gaW1wcm92 ZSB0aGUKPj4+Pj4+PiBpbXBsZW1lbnRhdGlvbgo+Pj4+Pj4+IGluIHRoZSBmdXR1cmUgYXMgbmV3 IGZlYXR1cmVzIGJlY29tZSBhdmFpbGFibGUgaW4gbmV3IGhhcmR3YXJlLgo+Pj4+Pj4+Cj4+Pj4+ Pj4gRnV0dXJlIHN0ZXBzOgo+Pj4+Pj4+IC0tLS0tLS0tLS0tLS0KPj4+Pj4+Pgo+Pj4+Pj4+IE9u Y2Ugd2UgaGF2ZSBhbiBhcHByb2FjaCBzZXR0bGVkLCBJIGNhbiB0YWtlIGNhcmUgb2YgdGhlIAo+ Pj4+Pj4+IGltcGxlbWVudGF0aW9uLgo+Pj4+Pj4+Cj4+Pj4+Pj4gQWxzbywgb25jZSB0aGUgaW50 ZXJmYWNlIGlzIG1vc3RseSBkZWNpZGVkLCB3ZSBjYW4gc3RhcnQgCj4+Pj4+Pj4gdGhpbmtpbmcg YWJvdXQKPj4+Pj4+PiBleHBvc2luZyB0aGUgaGlnaCBwcmlvcml0eSBxdWV1ZSB0aHJvdWdoIHJh ZHYuCj4+Pj4+Pj4KPj4+Pj4+PiBSZXF1ZXN0IGZvciBmZWVkYmFjazoKPj4+Pj4+PiAtLS0tLS0t LS0tLS0tLS0tLS0tLS0KPj4+Pj4+Pgo+Pj4+Pj4+IFdlIGFyZW4ndCBtYXJyaWVkIHRvIGFueSBv ZiB0aGUgYXBwcm9hY2hlcyBvdXRsaW5lZCBhYm92ZS4gT3VyIGdvYWwKPj4+Pj4+PiBpcyB0bwo+ Pj4+Pj4+IG9idGFpbiBhIG1lY2hhbmlzbSB0aGF0IHdpbGwgYWxsb3cgdXMgdG8gY29tcGxldGUg dGhlIHJlcHJvamVjdGlvbgo+Pj4+Pj4+IGpvYiB3aXRoaW4gYQo+Pj4+Pj4+IHByZWRpY3RhYmxl IGFtb3VudCBvZiB0aW1lLiBTbyBpZiBhbnlvbmUgYW55b25lIGhhcyBhbnkgCj4+Pj4+Pj4gc3Vn Z2VzdGlvbnMgZm9yCj4+Pj4+Pj4gaW1wcm92ZW1lbnRzIG9yIGFsdGVybmF0aXZlIHN0cmF0ZWdp ZXMgd2UgYXJlIG1vcmUgdGhhbiBoYXBweSB0byAKPj4+Pj4+PiBoZWFyCj4+Pj4+Pj4gdGhlbS4K Pj4+Pj4+Pgo+Pj4+Pj4+IElmIGFueSBvZiB0aGUgdGVjaG5pY2FsIGluZm9ybWF0aW9uIGFib3Zl IGlzIGFsc28gaW5jb3JyZWN0LCBmZWVsCj4+Pj4+Pj4gZnJlZSB0byBwb2ludAo+Pj4+Pj4+IG91 dCBteSBtaXN1bmRlcnN0YW5kaW5ncy4KPj4+Pj4+Pgo+Pj4+Pj4+IExvb2tpbmcgZm9yd2FyZCB0 byBoZWFyaW5nIGZyb20geW91Lgo+Pj4+Pj4+Cj4+Pj4+Pj4gUmVnYXJkcywKPj4+Pj4+PiBBbmRy ZXMKPj4+Pj4+Pgo+Pj4+Pj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCj4+Pj4+Pj4gYW1kLWdmeCBtYWlsaW5nIGxpc3QKPj4+Pj4+PiBhbWQtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwo+Pj4+Pj4+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vYW1kLWdmeAo+Pj4+Pj4+Cj4+Pj4+Pj4KPj4+Pj4+PiBhbWQtZ2Z4 IEluZm8gUGFnZSAtIGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+Pj4+Pj4+IGxpc3RzLmZyZWVkZXNr dG9wLm9yZwo+Pj4+Pj4+IFRvIHNlZSB0aGUgY29sbGVjdGlvbiBvZiBwcmlvciBwb3N0aW5ncyB0 byB0aGUgbGlzdCwgdmlzaXQgdGhlCj4+Pj4+Pj4gYW1kLWdmeCBBcmNoaXZlcy4gVXNpbmcgYW1k LWdmeDogVG8gcG9zdCBhIG1lc3NhZ2UgdG8gYWxsIHRoZSBsaXN0Cj4+Pj4+Pj4gbWVtYmVycywg c2VuZCBlbWFpbCAuLi4KPj4+Pj4+Pgo+Pj4+Pj4+Cj4+Pj4+Pj4KPj4+Pj4+PiBhbWQtZ2Z4IElu Zm8gUGFnZSAtIGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+Pj4+Pj4+IGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwo+Pj4+Pj4+IFRvIHNlZSB0aGUgY29sbGVjdGlvbiBvZiBwcmlvciBwb3N0aW5ncyB0byB0 aGUgbGlzdCwgdmlzaXQgdGhlCj4+Pj4+Pj4gYW1kLWdmeCBBcmNoaXZlcy4gVXNpbmcgYW1kLWdm eDogVG8gcG9zdCBhIG1lc3NhZ2UgdG8gYWxsIHRoZSBsaXN0Cj4+Pj4+Pj4gbWVtYmVycywgc2Vu ZCBlbWFpbCAuLi4KPj4+Pj4+Pgo+Pj4+Pj4+Cj4+Pj4+Pj4KPj4+Pj4+Pgo+Pj4+Pj4+Cj4+Pj4+ Pj4KPj4+Pj4+Pgo+Pj4+Pj4+Cj4+Pj4+Pj4KPj4+Pj4+Pgo+Pj4+Pj4+Cj4+Pj4+Pj4gX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPj4+Pj4+PiBhbWQtZ2Z4 IG1haWxpbmcgbGlzdAo+Pj4+Pj4+IGFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4+Pj4+ Pj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4 Cj4+Pj4+Pj4KPj4+Pj4+Cj4+Pj4+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwo+Pj4+Pj4gYW1kLWdmeCBtYWlsaW5nIGxpc3QKPj4+Pj4+IGFtZC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4+Pj4+PiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZngKPj4+Pj4KPj4+Pgo+Pj4KPj4+IF9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4+PiBhbWQtZ2Z4IG1haWxpbmcg bGlzdAo+Pj4gYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPj4+IGh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdmeAo+Pgo+CgpTaW5jZXJlbHkg eW91cnMsClNlcmd1ZWkgU2FnYWxvdml0Y2gKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFtZC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vYW1kLWdmeAo=