From mboxrd@z Thu Jan 1 00:00:00 1970 From: Felix Kuehling Subject: Re: [PATCH 1/2] drm/amdgpu: Moved fault hash table to amdgpu vm Date: Tue, 11 Sep 2018 18:00:59 -0400 Message-ID: <5b9dc941-3d29-21ca-9f92-ba3512900660@amd.com> References: <1536290910-6476-1-git-send-email-Oak.Zeng@amd.com> <12913b70-925d-2e17-2dc2-491ed8592610@amd.com> <546c9911-b7af-03c8-b5e2-f2bb07932c0b@gmail.com> <89e7515f-53f1-9f10-aeb6-7fc1b8df2702@amd.com> <9b6b78aa-c98a-a741-7ce2-0e7811e1f806@amd.com> <143b57c2-12d1-8cb1-ddea-a8fe7226e1c4@gmail.com> <8cee8563-2df9-1075-3113-66135cbd14fd@amd.com> <82fb54c4-8cf2-9033-9fb4-f76e747d7b87@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <82fb54c4-8cf2-9033-9fb4-f76e747d7b87-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> Content-Language: en-CA 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: christian.koenig-5C7GfCeVMHo@public.gmane.org, "Zeng, Oak" , Oak Zeng , "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" , "Yang, Philip" T24gMjAxOC0wOS0xMSAwMzoxOSBBTSwgQ2hyaXN0aWFuIEvDtm5pZyB3cm90ZToKPiBIaSBGZWxp eCwKPgo+IGxldCBtZSB0cnkgdG8gZXhwbGFpbiB0aGUgcHJvYmxlbSBvbiBhbiBleGFtcGxlOgo+ Cj4gMS4gV2UgaGF2ZSBhIHJ1bm5pbmcgam9iIHdoaWNoIG5lZWRzIHJlY292ZXJhYmxlIHBhZ2Ug ZmF1bHRzIGZvcgo+IGFjY2Vzc2luZyB0aGUgcHJvY2VzcyBhZGRyZXNzIHNwYWNlLgo+IDIuIFdl IHJ1biBpbnRvIG1lbW9yeSBwcmVzc3VyZSBvbiBWUkFNIGFuZCBzdGFydCB0byBldmljdCB0aGlu Z3MuCj4gMy4gQSBwYWdlIHRhYmxlcyBvZiB0aGUgcnVubmluZyBqb2IgaXMgcGlja2VkIHVwIGZv ciBldmljdGlvbi4KPiA0LiBXZSBzY2hlZHVsZSBhIGNvcHkgY29tbWFuZCB0byBtb3ZlIHRoZSBj b250ZW50IG9mIHRoZSBwYWdlIHRhYmxlIHRvCj4gc3lzdGVtIG1lbW9yeS4KCkkgdGhpbmsgd2Ug c2hvdWxkIGNoYW5nZSB0aGlzLiBJZiB5b3UgZXZpY3QgYSBwYWdlIHRhYmxlLCB5b3UgZG9uJ3Qg bmVlZAp0byBwcmVzZXJ2ZSBpdHMgY29udGVudHMuIFlvdSBzaG91bGQgYmUgYWJsZSB0byByZXN0 b3JlIHRoZSBwYWdlIHRhYmxlCmNvbnRlbnRzIGZyb20gc2NyYXRjaCB3aGVuIHlvdSBoYW5kbGUg dGhlIHBhZ2UgZmF1bHQgdGhhdCByZXN0b3JlcyBpdC4KCj4gNS4gVGhlIG5ldyBzeXN0ZW0gbWVt b3J5IGxvY2F0aW9uIG9mIHRoZSBwYWdlIHRhYmxlIGlzIG5vdGVkIGluIGl0cyBCTy4KCllvdSBt ZWFuIGluIHRoZSBwYXJlbnQgcGFnZSB0YWJsZT8gWW91IGNhbiBqdXN0IGludmFsaWRhdGUgdGhl IGVudHJ5IGluCnRoZSBwYXJlbnQgcGFnZSB0YWJsZSBhbmQgbGV0IGl0IGZhdWx0LgoKPiA2LiBX ZSBnZXQgYSBmYXVsdCBmcm9tIHRoZSBqb2IgYW5kIHN3YXAgaW4gdGhlIHBhZ2UgZnJvbSB0aGUg cHJvY2Vzcwo+IGFkZHJlc3Mgc3BhY2UuCgpOby4gVGhlbiB5b3UgbmVlZCB0byBrZWVwIHVwZGF0 aW5nIHBhZ2UgdGFibGVzIHRoYXQgYXJlIHN3YXBwZWQgb3V0LgpJbnN0ZWFkIGp1c3QgZGlzY2Fy ZCB0aGVtIGFuZCByZWJ1aWxkIG9uIGZhdWx0LgoKPiA3LiBOb3cgd2UgbmVlZCB0byBlbnRlciB0 aGUgbmV3IHBhZ2UgYWRkcmVzcyBpbnRvIHRoZSBwYWdlIHRhYmxlIC0+ICpCQU0qCj4KPiBUaGUg cHJvYmxlbSBpcyBub3cgdGhhdCB3ZSBkb24ndCBrbm93IHRoZSBhZGRyZXNzIG9mIHRoZSBwYWdl IHRhYmxlCj4gYmVjYXVzZSB0aGUgY3VycmVudCBsb2NhdGlvbiB3YXMgcmVwbGFjZWQgd2l0aCB0 aGUgZnV0dXJlIGxvY2F0aW9uIGluCj4gc3RlcCAjNS4KCllvdSBzb2x2ZSB0aGF0IHByb2JsZW0g YnkgZGlzY2FyZGluZyBwYWdlIHRhYmxlcyB0aGF0IGFyZSBzd2FwcGVkIG91dC4KVGhlbiB0aGVy ZSBpcyBubyBmdXR1cmUgbG9jYXRpb24uCgo+Cj4gV2UgY291bGQgbm93IGFyZ3VlIHRoYXQgd2Ug Y291bGQgdXBkYXRlIHRoZSBwYWdlIHRhYmxlcyBvbiB0aGUgZmx5IGZvcgo+IHRoZSBldmljdGVk IHBhZ2UgYW5kIG5ldmVyIHdhaXQgZm9yIHRoZSBjdXJyZW50IGpvYiB0byBmaW5pc2gsIGJ1dAo+ IHRoaXMgd29uJ3Qgd29yayBiZWNhdXNlIG5vdCBhbGwgZW5naW5lcyBjYW4gaGFuZGxlIHRoYXQu CgpFbmdpbmVzIHRoYXQgY2FuJ3QgaGFuZGxlIHBhZ2UgZmF1bHRzIHdpbGwgZGVwZW5kIG9uIGZl bmNlcyB0byBrZWVwCnRoZWlyIHBhZ2UgdGFibGVzIHJlc2lkZW50LCBsaWtlIHdlIGRvIHRvZGF5 LiBTbyB0aGV5IHdvbid0IGhhdmUgdGhpcwpwcm9ibGVtLgoKUmVnYXJkcywKwqAgRmVsaXgKCj4K PiBJIHdpbGwgY2lyY3VtdmVudCB0aGlzIHByb2JsZW0gZm9yIG5vdyBieSBibG9ja2luZyB0aGUg ZXZpY3Rpb24gYmVmb3JlCj4gc3RlcCAjNS4gVGhlIGlzc3VlIHdpdGggdGhhdCBpcyB0aGF0IHRo aXMgcGlwZWxpbmluZyBpcyByZXNwb25zaWJsZQo+IGZvciBuZWFybHkgMjAlIG9mIHRoZSBmcHMg aW4gc29tZSB0ZXN0Y2FzZXMuCj4KPiBJIGhvcGUgdGhhdCBpdCB3b24ndCBiZSB0aGF0IGJhZCB3 aGVuIEkgbGltaXQgZGlzYWJsaW5nIHRoZSBwaXBlbGluaW5nCj4gdG8gb25seSBwYWdlIHRhYmxl cywgYnV0IGl0IGlzIGNlcnRhaW5seSBwb3NzaWJsZSB0aGF0IHdlIHdpbGwgZ2V0Cj4gcHVzaGJh Y2sgb24gdGhpcy4KPgo+IElmIHRoYXQgaGFwcGVucyB3ZSBwcm9iYWJseSBuZWVkIHRvIGFkZCBz b21lIGZsYWdzIHRvIGxpbWl0IHRoaXMKPiB3b3JrYXJvdW5kIGV2ZW4gbW9yZSB0byBvbmx5IHRo ZSByb290IFBEIGFuZCBhbGwgdGhlIFBEcy9QVHMgd2hpY2ggYXJlCj4gaW52b2x2ZWQgaW4gcmVj b3ZlcmFibGUgZmF1bHRzLgo+Cj4gUmVnYXJkcywKPiBDaHJpc3RpYW4uCj4KPiBBbSAxMC4wOS4y MDE4IHVtIDIxOjEwIHNjaHJpZWIgRmVsaXggS3VlaGxpbmc6Cj4+IEknbSBub3Qgc3VyZSB3aHkg eW91IG5lZWQgdG8gZGlzdGluZ3Vpc2ggY3VycmVudCBhbmQgZnV0dXJlIHN0YXRlIHdoZW4KPj4g ZGVhbGluZyB3aXRoIHBhZ2UgZmF1bHRzLiBXaGVuIHlvdSBnZXQgYSBwYWdlIGZhdWx0LCB5b3Ug a25vdyB0aGF0IHRoZQo+PiBHUFUgaXMgdHJ5aW5nIHRvIGFjY2VzcyBtZW1vcnkgcmlnaHQgbm93 LCBpbiB0aGUgcHJlc2VudC4gU28geW91J3JlCj4+IGFsd2F5cyB3b3JraW5nIHdpdGggdGhlIGN1 cnJlbnQgc3RhdGUuIFdoZW4gdGhlIENQVSBwYWdlIHRhYmxlIGNoYW5nZXMsCj4+IHlvdSBnZXQg YW4gTU1VIG5vdGlmaWVyIHRoYXQgYWxsb3dzIHlvdSB0byBpbnZhbGlkYXRlIHRoZSBjb3JyZXNw b25kaW5nCj4+IEdQVSBQVEVzLiBJZiB5b3UgaGF2ZSBhIHZhbGlkIEdQVSBQVEUsIGl0IGFsd2F5 cyByZXByZXNlbnRzIHRoZSBjdXJyZW50Cj4+IHN0YXRlcyBhbmQgaXMgaW4gc3luYyB3aXRoIHRo ZSBDUFUgcGFnZSB0YWJsZS4gSWYgdGhlIEdQVSBwYWdlIHRhYmxlIGlzCj4+IGV2ZXIgb3V0ZGF0 ZWQsIGl0IHNob3VsZCBoYXZlIGFuIGludmFsaWQgZW50cnkgaW4gdGhhdCBwbGFjZS4KPj4KPj4g SWYgU0RNQSBpcyB1c2VkIHRvIHVwZGF0ZSB0aGUgR1BVIFBURXMsIHRoZXJlIGlzIGEgZGVsYXku IFRoZSBNTVUKPj4gbm90aWZpZXIgaXMgc3luY2hyb25vdXMsIHNvIGl0IHNob3VsZG4ndCBiZSBh IHByb2JsZW0uIFlvdSBqdXN0IHdhaXQgZm9yCj4+IHRoZSBTRE1BIGpvYiB0byBjb21wbGV0ZSBi ZWZvcmUgcmV0dXJuaW5nLiBXaGVuIHVwZGF0aW5nIFBURXMgd2l0aCBuZXcKPj4gdmFsaWQgYWRk cmVzc2VzLCBpdCdzIGFzeW5jaHJvbm91cy4gQnV0IHRoZSBHUFUgd2lsbCBjb250aW51ZSByZXRy eWluZwo+PiBvbiB0aGUgaW52YWxpZCBlbnRyeSB1bnRpbCBTRE1BIGZpbmlzaGVzLiBTbyBpdCdz IGFsc28gaW1wbGljaXRseQo+PiBzeW5jaHJvbml6ZWQgb24gdGhlIEdQVSBzaWRlLgo+Pgo+PiBS ZWdhcmRzLAo+PiDCoMKgIEZlbGl4Cj4+Cj4+Cj4+IE9uIDIwMTgtMDktMTAgMDU6NDIgQU0sIENo cmlzdGlhbiBLw7ZuaWcgd3JvdGU6Cj4+PiBIaSBGZWxpeCAmIE9haywKPj4+Cj4+PiBvdmVyIHRo ZSB3ZWVrZW5kIEkgaGFkIHRoZSBpZGVhIHRoYXQgd2UgY291bGQganVzdCB1c2UgdGhlIHNoYWRv dyBCT3MKPj4+IHRvIGhhdmUgdGhlIGN1cnJlbnQgc3RhdGUgaW4gYSBwYWdlIGZhdWx0LiBUaGV5 IGFyZSBHVFQgQk9zIGFuZCBDUFUKPj4+IGFjY2Vzc2libGUgYW55d2F5Lgo+Pj4KPj4+IFJlZ2Fy ZHMsCj4+PiBDaHJpc3RpYW4uCj4+Pgo+Pj4gQW0gMDguMDkuMjAxOCB1bSAwOTozNCBzY2hyaWVi IENocmlzdGlhbiBLw7ZuaWc6Cj4+Pj4gSGkgRmVsaXgsCj4+Pj4KPj4+Pj4gQnV0IHdoeSBkbyB5 b3Ugd2FudCB0byB1cGRhdGUgcGFnZSB0YWJsZXMgd2hlbiB0aGVyZSBpcyBubyBtb3JlIHVzZXIK Pj4+Pj4gbW9kZSBjb250ZXh0IHRoYXQgY2FyZXMgYWJvdXQgdGhlbT8gSXMgdGhpcyBqdXN0IHRv IGFsbG93IHBlbmRpbmcKPj4+Pj4gd29yawo+Pj4+PiB0byBjb21wbGV0ZSBhZnRlciB0aGUgdXNl ciBtb2RlIGNvbnRleHQgaXMgZ29uZT8gVG8gcHJldmVudCBoYW5ncz8KPj4+PiBUaGUgcHJvYmxl bSBJJ20gc2VlIGlzIHRoYXQgd2Ugc3RpbGwgZG9uJ3QgaGF2ZSBhIHJlbGlhYmxlIHdheSBvZgo+ Pj4+IGtpbGxpbmcgYSBjb21tYW5kIHN1Ym1pc3Npb24gd2hpbGUgbWFraW5nIHN1cmUgdGhhdCBu byBtb3JlIGZhdWx0cyBvZgo+Pj4+IGl0IGFyZSBpbiB0aGUgZmxpZ2h0Lgo+Pj4+Cj4+Pj4gRS5n LiB0aGUgSFdTIGhhcyBhIGZ1bmN0aW9uIHRvIGtpbGwgYSBydW5uaW5nIGpvYiBvbiB0aGUgaGFy ZHdhcmUsCj4+Pj4gYnV0IHRoYXQgb25seSB3b3JrcyBmb3IgY29tcHV0ZSBhbmQgdGhlcmUgaXMg bm8gd2F5IG9mIHRlbGxpbmcgd2hlbgo+Pj4+IHRoYXQgb3BlcmF0aW9uIGhhcyBmaW5pc2hlZC4K Pj4+Pgo+Pj4+IEJ1dCBPYWsgaGFzIGFscmVhZHkgY29udmluY2VkIG1lIHRoYXQgd2Ugc2hvdWxk IHByb2JhYmx5IHdvcmsgb24gdGhhdAo+Pj4+IGluc3RlYWQgb2YgdHJ5aW5nIHRvIGtlZXAgdGhl IFZNIGFsaXZlIGFzIGxvbmcgYXMgcG9zc2libGUuCj4+Pj4KPj4+PiBSZWdhcmRzLAo+Pj4+IENo cmlzdGlhbi4KPj4+Pgo+Pj4+IEFtIDA4LjA5LjIwMTggdW0gMDI6Mjcgc2NocmllYiBGZWxpeCBL dWVobGluZzoKPj4+Pj4gSGkgQ2hyaXN0aWFuLAo+Pj4+Pgo+Pj4+PiBJJ20gbm90IHN1cmUgSSBn ZXQgeW91ciBwb2ludCBoZXJlLgo+Pj4+Pgo+Pj4+PiBBcyBJIHVuZGVyc3RhbmQgaXQsIHRoZSBh bWRncHVfdm0gc3RydWN0dXJlIHJlcHJlc2VudHMgdGhlIHVzZXIKPj4+Pj4gbW9kZSBWTQo+Pj4+ PiBjb250ZXh0LiBJdCBoYXMgdGhlIHBvaW50ZXJzIHRvIHRoZSByb290IHBhZ2UgZGlyZWN0b3J5 IGFuZCB0aGUKPj4+Pj4gcmVzdCBvZgo+Pj4+PiB0aGUgcGFnZSB0YWJsZSBoaWVyYXJjaHkuIElm IHRoZXJlIGlzIG5vIGFtZGdwdV92bSwgdGhlcmUgaXMgbm8gdXNlcgo+Pj4+PiBtb2RlIGNvbnRl eHQgdGhhdCBjYXJlcyBhYm91dCB0aGUgcGFnZSB0YWJsZXMuCj4+Pj4+Cj4+Pj4+IElmIHdlIGxl YXZlIHRoZSBwYWdlIHRhYmxlIHBvaW50ZXJzIGluIHRoZSBhbWRncHVfdm0sIHRoZW4gaGFuZGxp bmcKPj4+Pj4gZmF1bHRzIGFmdGVyIHRoZSBWTSBpcyBkZXN0cm95ZWQgaXMgcG9pbnRsZXNzLiBX ZSBjYW4ndCBmaW5kIHRoZSBwYWdlCj4+Pj4+IHRhYmxlcyBhbmQgd2UgY2FuJ3QgdXBkYXRlIHRo ZW0sIHNvIHRoZXJlIGlzIG5vdGhpbmcgd2UgY2FuIGRvIGluCj4+Pj4+IHJlc3BvbnNlIHRvIFZN IGZhdWx0cy4KPj4+Pj4KPj4+Pj4gU28gSSdtIGd1ZXNzaW5nIHRoYXQgeW91IHdhbnQgdG8gbW92 ZSB0aGUgcGFnZSB0YWJsZSBwb2ludGVycyBpbnRvIGEKPj4+Pj4gZGlmZmVyZW50IHN0cnVjdHVy ZSB0aGF0IGV4aXN0cyBoYWxmLWluZGVwZW5kZW50bHkgb2YgdGhlIFZNLiBJdAo+Pj4+PiB3b3Vs ZAo+Pj4+PiBiZSBjcmVhdGVkIHdoZW4gdGhlIFZNIGlzIGNyZWF0ZWQgKHRoYXQncyB3aGVyZSB3 ZSBjdXJyZW50bHkgYWxsb2NhdGUKPj4+Pj4gdGhlIFBBU0lEKSBidXQgY2FuIGJlIGRlc3Ryb3ll ZCBzbGlnaHRseSBsYXRlci4KPj4+Pj4KPj4+Pj4gQnV0IHdoeSBkbyB5b3Ugd2FudCB0byB1cGRh dGUgcGFnZSB0YWJsZXMgd2hlbiB0aGVyZSBpcyBubyBtb3JlIHVzZXIKPj4+Pj4gbW9kZSBjb250 ZXh0IHRoYXQgY2FyZXMgYWJvdXQgdGhlbT8gSXMgdGhpcyBqdXN0IHRvIGFsbG93IHBlbmRpbmcK Pj4+Pj4gd29yawo+Pj4+PiB0byBjb21wbGV0ZSBhZnRlciB0aGUgdXNlciBtb2RlIGNvbnRleHQg aXMgZ29uZT8gVG8gcHJldmVudCBoYW5ncz8KPj4+Pj4KPj4+Pj4gUmVnYXJkcywKPj4+Pj4gwqDC oMKgIEZlbGl4Cj4+Pj4+Cj4+Pj4+IE9uIDIwMTgtMDktMTAgMDc6MjAgQU0sIENocmlzdGlhbiBL w7ZuaWcgd3JvdGU6Cj4+Pj4+Pj4gQW0gSSByaWdodCB0aGF0IHRoZSBoYW5kbGluZyBvZiBwYWdl IGZhdWx0IG5lZWQgYSB2YWxpZCBWTT8KPj4+Pj4+IE5vLCBleGFjdGx5IHRoYXQgdmlldyBpcyBp bmNvcnJlY3QuCj4+Pj4+Pgo+Pj4+Pj4gVGhlIFZNIGlzIG1lYW50IHRvIGJlIGEgbWVtb3J5IG1h bmFnZW1lbnQgc3RydWN0dXJlIG9mIHBhZ2UKPj4+Pj4+IHRhYmxlcyBhbmQKPj4+Pj4+IGlzIGNv bXBsZXRlbHkgcG9pbnRsZXNzIGZhdWx0IHByb2Nlc3NpbmcgYmVjYXVzZSBpdCByZXByZXNlbnQg dGhlCj4+Pj4+PiBmdXR1cmUgc3RhdGUgb2YgdGhlIHBhZ2UgdGFibGVzIGFuZCBub3QgdGhlIGN1 cnJlbnQgb25lLgo+Pj4+Pj4KPj4+Pj4+IFdoYXQgd2UgbmVlZCBmb3IgZmF1bHQgcHJvY2Vzc2lu ZyBpcyBhIG5ldyBzdHJ1Y3R1cmUgYnVpbGQgYXJvdW5kCj4+Pj4+PiBQQVNJRHMgd2hpY2ggaXMg ZmVlZCBieSB0aGUgd2l0aCBhZGRyZXNzZXMgd2hlbiBwYWdlIHRhYmxlcyBhcmUKPj4+Pj4+IG1v dmVkCj4+Pj4+PiBhcm91bmQuCj4+Pj4+Pgo+Pj4+Pj4gQWx0ZXJuYXRpdmVseSBJIGhvcGUgdGhh dCB3ZSBjYW4gdXNlIHRoZSBTRE1BIHRvIHdhbGsgdGhlIHBhZ2UKPj4+Pj4+IHRhYmxlcwo+Pj4+ Pj4gYW5kIHVwZGF0ZSB0aGUgcmVxdWlyZWQgZW50cmllcyBieSBqdXN0IHVzaW5nIHRoZSBhZGRy ZXNzLgo+Pj4+Pj4KPj4+Pj4+IFJlZ2FyZHMsCj4+Pj4+PiBDaHJpc3RpYW4uCj4+Pj4+Pgo+Pj4+ Pj4gQW0gMDcuMDkuMjAxOCB1bSAxNjo1NSBzY2hyaWViIFplbmcsIE9hazoKPj4+Pj4+PiBIaSBD aHJpc3RpYW4sCj4+Pj4+Pj4KPj4+Pj4+Pgo+Pj4+Pj4+IFdoYXQgaXMgdGhlIHZhbHVlIG9mIGRl bGF5IHRoZSBkZXN0cm95IG9mIGhhc2ggdG8gYWZ0ZXIgdm0gaXMKPj4+Pj4+PiBkZXN0cm95ZWQ/ IFNpbmNlIHZtIGlzIGRlc3Ryb3llZCwgeW91IGJhc2ljYWxseSBkb27igJl0IGhhdmUgZW5vdWdo Cj4+Pj4+Pj4gaW5mb3JtYXRpb24gdG8gcGFnaW5nIGluIHRoZSBjb3JyZWN0IHBhZ2UgdG8gZ3B1 dm0uIEFtIEkgcmlnaHQgdGhhdAo+Pj4+Pj4+IHRoZSBoYW5kbGluZyBvZiBwYWdlIGZhdWx0IG5l ZWQgYSB2YWxpZCBWTT8gRm9yIGV4YW1wbGUsIHlvdQo+Pj4+Pj4+IG5lZWQgdGhlCj4+Pj4+Pj4g Vk0gdG8gZ2V0IHRoZSBjb3JyZXNwb25kaW5nIHBoeXNpY2FsIGFkZHJlc3Mgb2YgdGhlIGZhdWx0 eSBwYWdlLgo+Pj4+Pj4+Cj4+Pj4+Pj4KPj4+Pj4+PiBBZnRlciB2bSBpcyBkZXN0cm95ZWQsIHRo ZSByZXRyeSBpbnRlcnJ1cHQgY2FuIGJlIGRpcmVjdGx5Cj4+Pj4+Pj4gZGlzY2FyZCBhcwo+Pj4+ Pj4+IHlvdSBjYW7igJl0IGZpbmQgdm0gdGhyb3VnaCBwYXNpZC4gWW91IGNhbiB0aGluayB0aGlz IGlzIGFsc28gb25lCj4+Pj4+Pj4ga2luZAo+Pj4+Pj4+IG9mIHByZXNjcmVlbi4KPj4+Pj4+Pgo+ Pj4+Pj4+Cj4+Pj4+Pj4gU28gSSBhbSBzdGFuZCBmb3IgdGhlIHBvaW50IHRoYXQsIHRoZXJlIGlz IG5vIG5lZWQgdG8gZGVsYXkgdGhlCj4+Pj4+Pj4gZGVzdHJveSBvZiBoYXNoIHRvIGFmdGVyIHZt IGlzIGRlc3Ryb3llZC4gUHJlc2NyZWVuaW5nIGhhc2ggY2FuIGJlCj4+Pj4+Pj4gZGVzdHJveWVk IGF0IHRoZSB0aW1lIG9mIHZtX2ZpbmkuCj4+Pj4+Pj4KPj4+Pj4+Pgo+Pj4+Pj4+IFRoYW5rcywK Pj4+Pj4+Pgo+Pj4+Pj4+IE9hawo+Pj4+Pj4+Cj4+Pj4+Pj4KPj4+Pj4+PiAqRnJvbToqQ2hyaXN0 aWFuIEvDtm5pZyA8Y2tvZW5pZy5sZWljaHR6dW1lcmtlbkBnbWFpbC5jb20+Cj4+Pj4+Pj4gKlNl bnQ6KiBGcmlkYXksIFNlcHRlbWJlciAwNywgMjAxOCA0OjM5IEFNCj4+Pj4+Pj4gKlRvOiogWmVu ZywgT2FrIDxPYWsuWmVuZ0BhbWQuY29tPjsgT2FrIFplbmcKPj4+Pj4+PiA8emVuZ3NoYW5qdW5A Z21haWwuY29tPjsKPj4+Pj4+PiBhbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+Pj4+Pj4+ ICpDYzoqIFplbmcsIE9hayA8T2FrLlplbmdAYW1kLmNvbT4KPj4+Pj4+PiAqU3ViamVjdDoqIFJl OiBbUEFUQ0ggMS8yXSBkcm0vYW1kZ3B1OiBNb3ZlZCBmYXVsdCBoYXNoIHRhYmxlIHRvCj4+Pj4+ Pj4gYW1kZ3B1IHZtCj4+Pj4+Pj4KPj4+Pj4+Pgo+Pj4+Pj4+IEhpIE9haywKPj4+Pj4+Pgo+Pj4+ Pj4+IHllYWgsIGJ1dCB0aGlzIGlzIHN0aWxsIGEgTkFLLiBNYWtpbmcgdGhlIGhhc2ggcGVyIFBB U0lEIHdhcyBub3QgYQo+Pj4+Pj4+IHN1Z2dlc3Rpb24gYnV0IHJhdGhlciBhIG11c3QgaGF2ZS4K Pj4+Pj4+Pgo+Pj4+Pj4+IFRoZSBWTSBzdHJ1Y3R1cmVzIG11c3QgYmUgZGVzdHJveWVkIHdoaWxl IHRoZSBwcm9jZXNzaW5nIGlzIHN0aWxsCj4+Pj4+Pj4gb25nb2luZywgb3Igb3RoZXJ3aXNlIHdl IHdvdWxkIG5vdCBoYXZlIGEgY2xlYW4gT09NIGhhbmRsaW5nLgo+Pj4+Pj4+Cj4+Pj4+Pj4gVGhl IElEUiBmb3IgUEFTSUQgbG9ja3VwIGNhbiBiZSBwdXQgaW50byBhbWRncHVfaWRzLmMsIHlvdSBj YW4ganVzdAo+Pj4+Pj4+IHJlcGxhY2UgdGhlIElEQSBhbHJlYWR5IHVzZWQgdGhlcmUgd2l0aCBh biBJRFIuCj4+Pj4+Pj4KPj4+Pj4+PiBTaW5jZSB0aGUgUEFTSUQgaXMgYWxyZWFkeSBmcmVlZCB1 cCBkZWxheWVkIHdlIHNob3VsZCBoYXZlIHRoZQo+Pj4+Pj4+IGdyYWNlCj4+Pj4+Pj4gcGVyaW9k IGZvciBpbnRlcnJ1cHQgcHJvY2Vzc2luZyBpbmNsdWRlZC4gSWYgdGhhdCBzdGlsbCBpc24ndAo+ Pj4+Pj4+IHN1ZmZpY2llbnQgd2UgY2FuIHN0aWxsIGFkZCBzb21lIGRlbGF5ZWQgd29yayBmb3Ig dGhpcy4KPj4+Pj4+Pgo+Pj4+Pj4+IFJlZ2FyZHMsCj4+Pj4+Pj4gQ2hyaXN0aWFuLgo+Pj4+Pj4+ Cj4+Pj4+Pj4gQW0gMDcuMDkuMjAxOCB1bSAwNjoxNiBzY2hyaWViIG96ZW5nOgo+Pj4+Pj4+Cj4+ Pj4+Pj4gwqDCoMKgwqDCoCBIaSBDaHJpc3RpYW4sCj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKg IEluIHRoaXMgaW1wbGVtZW50YXRpb24sIGZhdWx0IGhhc2ggaXMgbWFkZSBwZXIgdm0sIG5vdCBw ZXIKPj4+Pj4+PiBwYXNpZAo+Pj4+Pj4+IMKgwqDCoMKgwqAgYXMgc3VnZ2VzdGVkLCBiYXNlZCBv biBiZWxvdyBjb25zaWRlcmF0aW9uczoKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgICog RGVsYXkgdGhlIGRlc3Ryb3kgb2YgaGFzaCBpbnRyb2R1Y2VzIG1vcmUgZWZmb3J0IGxpa2UKPj4+ Pj4+PiBob3cgdG8KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgc2V0IHRoZSBwcm9wZXIgZ3Jh Y2UgcGVyaW9kIGFmdGVyIHdoaWNoIG5vIHJldHJ5Cj4+Pj4+Pj4gaW50ZXJydXB0Cj4+Pj4+Pj4g wqDCoMKgwqDCoMKgwqDCoMKgIHdpbGwgYmUgZ2VuZXJhdGVkLiBXZSB3YW50IHRvIGF2b2lkIHRo b3NlIGNvbXBsaWNhdGlvbgo+Pj4+Pj4+IGlmIHdlCj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKg IGNhbi4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoCAqIFRoZcKgIHByb2JsZW0gb2YgdGhlIHBlciB2 bSBpbXBsZW1lbnRhdGlvbiBpcyB0aGF0IGl0Cj4+Pj4+Pj4gaXMgaGFyZAo+Pj4+Pj4+IMKgwqDC oMKgwqDCoMKgwqDCoCB0byBkZWxheSB0aGUgZGVzdHJveSBvZiBmYXVsdCBoYXNoLCBiZWNhdXNl IHdoZW4gdm0gaXMKPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgZGVzdHJveWVkLCBwcmVzY3Jl ZW4gZnVuY3Rpb24gd29uJ3QgYmUgYWJsZSB0bwo+Pj4+Pj4+IHJldHJpZXZlIHRoZQo+Pj4+Pj4+ IMKgwqDCoMKgwqDCoMKgwqDCoCBmYXVsdCBoYXNoLiBCdXQgaW4gdGhpcyBjYXNlLCB0aGUgcHJl c2NyZWVuIGZ1bmN0aW9uIGNhbgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBlaXRoZXIgbGV0 IHRoZSBpbnRlcnJ1cHQgZ28gdGhyb3VnaCAodG8gZ21jKSBvciBpZ25vcmUKPj4+Pj4+PiBpdC4K Pj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgRnJvbSB0aGlzIHBlcnNwZWN0aXZlLCBpdCBpcyBu b3QgdmVyeSBuZWNlc3NhcnkgdG8KPj4+Pj4+PiBkZWxheSB0aGUKPj4+Pj4+PiDCoMKgwqDCoMKg wqDCoMKgwqAgZGVzdHJveSBvZiBoYXNoIHRhYmxlLgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgICog T24gdGhlIG90aGVyIGhhbmQsIHNpbmNlIEFTSUNzIGFmdGVyIHZlZ2ExMCBoYXZlIHRoZQo+Pj4+ Pj4+IEhXIENBTQo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBmZWF0dXJlLiBTbyB0aGUgU1cg SVYgcHJlc2NyZWVuIGlzIG9ubHkgdXNlZnVsIGZvcgo+Pj4+Pj4+IHZlZ2ExMC4KPj4+Pj4+PiDC oMKgwqDCoMKgwqDCoMKgwqAgRm9yIGFsbCB0aGUgSFcgaW1wbGVtZW50ZWQgQ0FNLCB3ZSBjYW4g Y29uc2lkZXIgdGhlCj4+Pj4+Pj4gZGVsYXllZAo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBD QU0gYWNrbm93bGVkZ21lbnQuCj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqAgKiBNYWtpbmcgaXQgcGVy IHBhc2lkIG5lZWQgdG8gaW50cm9kdWNlIGFub3RoZXIgaWRyIHRvCj4+Pj4+Pj4gwqDCoMKgwqDC oMKgwqDCoMKgIGNvcnJlbGF0ZSBwYXNpZCBhbmQgaGFzaCB0YWJsZSAtIHdoZXJlIHRvIHB1dCB0 aGUgaWRyPwo+Pj4+Pj4+IFlvdQo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCB3aWxsIGhhdmUg dG8gbWFrZSBpdCBhIGdsb2JhbCB2YXJpYWJsZSB3aGljaCBpcyBub3QgdmVyeQo+Pj4+Pj4+IMKg wqDCoMKgwqDCoMKgwqDCoCBkZXNpcmFibGUuCj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgIFRo ZSBtYWluIHB1cnBvc2Ugb2YgdGhpcyBwYXRjaCBpcyB0byBzb2x2ZSB0aGUgaW50ZXItcHJvY2Vz cwo+Pj4+Pj4+IGxvY2sKPj4+Pj4+PiDCoMKgwqDCoMKgIGlzc3VlICh3aGVuIGhhc2ggdGFibGUg aXMgZnVsbCksIHdoaWxlIHN0aWxsIGtlZXAgY29kZXMKPj4+Pj4+PiBzaW1wbGUuCj4+Pj4+Pj4K Pj4+Pj4+PiDCoMKgwqDCoMKgIEFsc28gd2l0aCB0aGlzIHBhdGNoLCB0aGUgZmF1bHRzIGtmaWZv IGlzIG5vdCBuZWNlc3NhcnkgYW55Cj4+Pj4+Pj4gbW9yZS4KPj4+Pj4+PiDCoMKgwqDCoMKgIFNl ZSBwYXRjaCAyLgo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoCBSZWdhcmRzLAo+Pj4+Pj4+Cj4+ Pj4+Pj4gwqDCoMKgwqDCoCBPYWsKPj4+Pj4+Pgo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoCBP biAwOS8wNi8yMDE4IDExOjI4IFBNLCBPYWsgWmVuZyB3cm90ZToKPj4+Pj4+Pgo+Pj4+Pj4+IMKg wqDCoMKgwqDCoMKgwqDCoCBJbiBzdGVhZCBvZiBzaGFyZSBvbmUgZmF1bHQgaGFzaCB0YWJsZSBw ZXIgZGV2aWNlLAo+Pj4+Pj4+IG1ha2UgaXQKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKg wqDCoCBwZXIgdm0uIFRoaXMgY2FuIGF2b2lkIGludGVyLXByb2Nlc3MgbG9jayBpc3N1ZSB3aGVu Cj4+Pj4+Pj4gZmF1bHQKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBoYXNoIHRh YmxlIGlzIGZ1bGwuCj4+Pj4+Pj4KPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBD aGFuZ2UtSWQ6IEk1ZDEyODFiN2M0MWVkZGM4ZTI2MTEzZTAxMDUxNjU1NzU4OGQzNzA4Cj4+Pj4+ Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgU2lnbmVkLW9mZi1ieTogT2FrIFplbmcgPE9h ay5aZW5nQGFtZC5jb20+Cj4+Pj4+Pj4gPG1haWx0bzpPYWsuWmVuZ0BhbWQuY29tPgo+Pj4+Pj4+ Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIFN1Z2dlc3RlZC1ieTogQ2hyaXN0aWFuIEtvbmln IDxDaHJpc3RpYW4uS29lbmlnQGFtZC5jb20+Cj4+Pj4+Pj4gPG1haWx0bzpDaHJpc3RpYW4uS29l bmlnQGFtZC5jb20+Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgU3VnZ2VzdGVk LWJ5OiBGZWxpeCBLdWVobGluZyA8RmVsaXguS3VlaGxpbmdAYW1kLmNvbT4KPj4+Pj4+PiA8bWFp bHRvOkZlbGl4Lkt1ZWhsaW5nQGFtZC5jb20+Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDC oMKgwqAgLS0tCj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfaWguYyB8wqAgNzUKPj4+Pj4+PiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9paC5oIHzCoCAxMCAtLS0tCj4+Pj4+Pj4KPj4+Pj4+ PiDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVf dm0uYyB8IDEwMgo+Pj4+Pj4+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQo+Pj4+ Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X3ZtLmggfMKgIDEyICsrKysKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKg wqDCoMKgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3ZlZ2ExMF9paC5jIHzCoCAzOAo+Pj4+ Pj4+ICsrKysrLS0tLS0tLQo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAgNSBm aWxlcyBjaGFuZ2VkLCAxMjcgaW5zZXJ0aW9ucygrKSwgMTEwIGRlbGV0aW9ucygtKQo+Pj4+Pj4+ Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9paC5jCj4+Pj4+Pj4gYi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHVfaWguYwo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKg IGluZGV4IDA2MzczZDQuLjRlZDg2MjEgMTAwNjQ0Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKg wqDCoMKgwqAgLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2loLmMKPj4+ Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfaWguYwo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIEBA IC0xOTcsNzggKzE5NywzIEBAIGludCBhbWRncHVfaWhfcHJvY2VzcyhzdHJ1Y3QKPj4+Pj4+PiBh bWRncHVfZGV2aWNlICphZGV2KQo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAg wqAgcmV0dXJuIElSUV9IQU5ETEVEOwo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKg wqAgfQo+Pj4+Pj4+Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgLS8qKgo+Pj4+ Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIC0gKiBhbWRncHVfaWhfYWRkX2ZhdWx0IC0g QWRkIGEgcGFnZSBmYXVsdCByZWNvcmQKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDC oCAtICoKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCAtICogQGFkZXY6IGFtZGdw dSBkZXZpY2UgcG9pbnRlcgo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIC0gKiBA a2V5OiA2NC1iaXQgZW5jb2Rpbmcgb2YgUEFTSUQgYW5kIGFkZHJlc3MKPj4+Pj4+Pgo+Pj4+Pj4+ IMKgwqDCoMKgwqDCoMKgwqDCoCAtICoKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDC oCAtICogVGhpcyBzaG91bGQgYmUgY2FsbGVkIHdoZW4gYSByZXRyeSBwYWdlIGZhdWx0Cj4+Pj4+ Pj4gaW50ZXJydXB0IGlzCj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgLSAqIHJl Y2VpdmVkLiBJZiB0aGlzIGlzIGEgbmV3IHBhZ2UgZmF1bHQsIGl0IHdpbGwgYmUKPj4+Pj4+PiBh ZGRlZCB0byBhIGhhc2gKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCAtICogdGFi bGUuIFRoZSByZXR1cm4gdmFsdWUgaW5kaWNhdGVzIHdoZXRoZXIgdGhpcyBpcyBhCj4+Pj4+Pj4g bmV3IGZhdWx0LCBvcgo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIC0gKiBhIGZh dWx0IHRoYXQgd2FzIGFscmVhZHkga25vd24gYW5kIGlzIGFscmVhZHkgYmVpbmcKPj4+Pj4+PiBo YW5kbGVkLgo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIC0gKgo+Pj4+Pj4+Cj4+ Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIC0gKiBJZiB0aGVyZSBhcmUgdG9vIG1hbnkgcGVuZGlu ZyBwYWdlIGZhdWx0cywgdGhpcyB3aWxsCj4+Pj4+Pj4gZmFpbC4gUmV0cnkKPj4+Pj4+Pgo+Pj4+ Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCAtICogaW50ZXJydXB0cyBzaG91bGQgYmUgaWdub3JlZCBp biB0aGlzIGNhc2UgdW50aWwgdGhlcmUKPj4+Pj4+PiBpcyBlbm91Z2gKPj4+Pj4+Pgo+Pj4+Pj4+ IMKgwqDCoMKgwqDCoMKgwqDCoCAtICogZnJlZSBzcGFjZS4KPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDC oMKgwqDCoMKgwqDCoCAtICoKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCAtICog UmV0dXJucyAwIGlmIHRoZSBmYXVsdCB3YXMgYWRkZWQsIDEgaWYgdGhlIGZhdWx0IHdhcwo+Pj4+ Pj4+IGFscmVhZHkga25vd24sCj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgLSAq IC1FTk9TUEMgaWYgdGhlcmUgYXJlIHRvbyBtYW55IHBlbmRpbmcgZmF1bHRzLgo+Pj4+Pj4+Cj4+ Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIC0gKi8KPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDC oMKgwqDCoCAtaW50IGFtZGdwdV9paF9hZGRfZmF1bHQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYsIHU2NAo+Pj4+Pj4+IGtleSkKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCAt ewo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIC3CoCB1bnNpZ25lZCBsb25nIGZs YWdzOwo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIC3CoCBpbnQgciA9IC1FTk9T UEM7Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgLQo+Pj4+Pj4+Cj4+Pj4+Pj4g wqDCoMKgwqDCoMKgwqDCoMKgIC3CoCBpZiAoV0FSTl9PTl9PTkNFKCFhZGV2LT5pcnEuaWguZmF1 bHRzKSkKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCAtwqDCoMKgwqDCoMKgwqDC oMKgIC8qIFNob3VsZCBiZSBhbGxvY2F0ZWQgaW4gPElQPl9paF9zd19pbml0IG9uCj4+Pj4+Pj4g R1BVcyB0aGF0Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgLcKgwqDCoMKgwqDC oMKgwqDCoMKgICogc3VwcG9ydCByZXRyeSBmYXVsdHMgYW5kIHJlcXVpcmUgcmV0cnkKPj4+Pj4+ PiBmaWx0ZXJpbmcuCj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgLcKgwqDCoMKg wqDCoMKgwqDCoMKgICovCj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgLcKgwqDC oMKgwqDCoMKgwqDCoCByZXR1cm4gcjsKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDC oCAtCj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgLSBzcGluX2xvY2tfaXJxc2F2 ZSgmYWRldi0+aXJxLmloLmZhdWx0cy0+bG9jaywgZmxhZ3MpOwo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDC oMKgwqDCoMKgwqDCoMKgIC0KPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCAtwqAg LyogT25seSBsZXQgdGhlIGhhc2ggdGFibGUgZmlsbCB1cCB0byA1MCUgZm9yIGJlc3QKPj4+Pj4+ PiBwZXJmb3JtYW5jZSAqLwo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIC3CoCBp ZiAoYWRldi0+aXJxLmloLmZhdWx0cy0+Y291bnQgPj0gKDEgPDwKPj4+Pj4+PiAoQU1ER1BVX1BB R0VGQVVMVF9IQVNIX0JJVFMtMSkpKQo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKg IC3CoMKgwqDCoMKgwqDCoMKgwqAgZ290byB1bmxvY2tfb3V0Owo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDC oMKgwqDCoMKgwqDCoMKgIC0KPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCAtwqAg ciA9IGNoYXNoX3RhYmxlX2NvcHlfaW4oJmFkZXYtPmlycS5paC5mYXVsdHMtPmhhc2gsCj4+Pj4+ Pj4ga2V5LCBOVUxMKTsKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCAtwqAgaWYg KCFyKQo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIC3CoMKgwqDCoMKgwqDCoMKg wqAgYWRldi0+aXJxLmloLmZhdWx0cy0+Y291bnQrKzsKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKg wqDCoMKgwqDCoCAtCj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgLcKgIC8qIGNo YXNoX3RhYmxlX2NvcHlfaW4gc2hvdWxkIG5ldmVyIGZhaWwgdW5sZXNzIHdlJ3JlCj4+Pj4+Pj4g bG9zaW5nIGNvdW50ICovCj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgLcKgIFdB Uk5fT05fT05DRShyIDwgMCk7Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgLQo+ Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIC11bmxvY2tfb3V0Ogo+Pj4+Pj4+Cj4+ Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIC0gc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYWRldi0+ aXJxLmloLmZhdWx0cy0+bG9jaywKPj4+Pj4+PiBmbGFncyk7Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKg wqDCoMKgwqDCoMKgwqAgLcKgIHJldHVybiByOwo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKg wqDCoMKgIC19Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgLQo+Pj4+Pj4+Cj4+ Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIC0vKioKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDC oMKgwqDCoCAtICogYW1kZ3B1X2loX2NsZWFyX2ZhdWx0IC0gUmVtb3ZlIGEgcGFnZSBmYXVsdCBy ZWNvcmQKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCAtICoKPj4+Pj4+Pgo+Pj4+ Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCAtICogQGFkZXY6IGFtZGdwdSBkZXZpY2UgcG9pbnRlcgo+ Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIC0gKiBAa2V5OiA2NC1iaXQgZW5jb2Rp bmcgb2YgUEFTSUQgYW5kIGFkZHJlc3MKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDC oCAtICoKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCAtICogVGhpcyBzaG91bGQg YmUgY2FsbGVkIHdoZW4gYSBwYWdlIGZhdWx0IGhhcyBiZWVuCj4+Pj4+Pj4gaGFuZGxlZC4gQW55 Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgLSAqIGZ1dHVyZSBpbnRlcnJ1cHQg d2l0aCB0aGlzIGtleSB3aWxsIGJlIHByb2Nlc3NlZCBhcyBhCj4+Pj4+Pj4gbmV3Cj4+Pj4+Pj4K Pj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgLSAqIHBhZ2UgZmF1bHQuCj4+Pj4+Pj4KPj4+Pj4+ PiDCoMKgwqDCoMKgwqDCoMKgwqAgLSAqLwo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDC oMKgIC12b2lkIGFtZGdwdV9paF9jbGVhcl9mYXVsdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl diwKPj4+Pj4+PiB1NjQga2V5KQo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIC17 Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgLcKgIHVuc2lnbmVkIGxvbmcgZmxh Z3M7Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgLcKgIGludCByOwo+Pj4+Pj4+ Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIC0KPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDC oMKgwqDCoCAtwqAgaWYgKCFhZGV2LT5pcnEuaWguZmF1bHRzKQo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDC oMKgwqDCoMKgwqDCoMKgIC3CoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuOwo+Pj4+Pj4+Cj4+Pj4+ Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIC0KPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDC oCAtIHNwaW5fbG9ja19pcnFzYXZlKCZhZGV2LT5pcnEuaWguZmF1bHRzLT5sb2NrLCBmbGFncyk7 Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgLQo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDC oMKgwqDCoMKgwqDCoMKgIC3CoCByID0gY2hhc2hfdGFibGVfcmVtb3ZlKCZhZGV2LT5pcnEuaWgu ZmF1bHRzLT5oYXNoLAo+Pj4+Pj4+IGtleSwgTlVMTCk7Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDC oMKgwqDCoMKgwqAgLcKgIGlmICghV0FSTl9PTl9PTkNFKHIgPCAwKSkgewo+Pj4+Pj4+Cj4+Pj4+ Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIC3CoMKgwqDCoMKgwqDCoMKgwqAgYWRldi0+aXJxLmloLmZh dWx0cy0+Y291bnQtLTsKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCAtIFdBUk5f T05fT05DRShhZGV2LT5pcnEuaWguZmF1bHRzLT5jb3VudCA8IDApOwo+Pj4+Pj4+Cj4+Pj4+Pj4g wqDCoMKgwqDCoMKgwqDCoMKgIC3CoCB9Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKg wqAgLQo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIC0gc3Bpbl91bmxvY2tfaXJx cmVzdG9yZSgmYWRldi0+aXJxLmloLmZhdWx0cy0+bG9jaywKPj4+Pj4+PiBmbGFncyk7Cj4+Pj4+ Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgLX0KPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKg wqDCoMKgwqDCoCBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X2loLmgKPj4+Pj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9paC5oCj4+ Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgaW5kZXggYTIzZTFjMC4uZjQxMWZmYiAx MDA2NDQKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfaWguaAo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKg wqDCoMKgICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9paC5oCj4+Pj4+ Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgQEAgLTMyLDEzICszMiw2IEBAIHN0cnVjdCBh bWRncHVfZGV2aWNlOwo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAgI2RlZmlu ZSBBTURHUFVfSUhfQ0xJRU5USURfTEVHQUNZIDAKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDC oMKgwqDCoMKgICNkZWZpbmUgQU1ER1BVX0lIX0NMSUVOVElEX01BWCBTT0MxNV9JSF9DTElFTlRJ RF9NQVgKPj4+Pj4+Pgo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIC0jZGVmaW5l IEFNREdQVV9QQUdFRkFVTFRfSEFTSF9CSVRTIDgKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDC oMKgwqDCoCAtc3RydWN0IGFtZGdwdV9yZXRyeWZhdWx0X2hhc2h0YWJsZSB7Cj4+Pj4+Pj4KPj4+ Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgLcKgIERFQ0xBUkVfQ0hBU0hfVEFCTEUoaGFzaCwgQU1E R1BVX1BBR0VGQVVMVF9IQVNIX0JJVFMsCj4+Pj4+Pj4gOCwgMCk7Cj4+Pj4+Pj4KPj4+Pj4+PiDC oMKgwqDCoMKgwqDCoMKgwqAgLcKgIHNwaW5sb2NrX3TCoMKgwqDCoCBsb2NrOwo+Pj4+Pj4+Cj4+ Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIC3CoCBpbnTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNv dW50Owo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIC19Owo+Pj4+Pj4+Cj4+Pj4+ Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIC0KPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDC oMKgIC8qCj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgwqAgKiBSNnh4KyBJSCBy aW5nCj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgwqAgKi8KPj4+Pj4+Pgo+Pj4+ Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBAQCAtNTcsNyArNTAsNiBAQCBzdHJ1Y3QgYW1kZ3B1X2lo X3Jpbmcgewo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAgwqAgYm9vbMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1c2VfZG9vcmJlbGw7Cj4+Pj4+Pj4KPj4+ Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoCDCoCBib29swqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHVzZV9idXNfYWRkcjsKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKg wqDCoMKgIMKgIGRtYV9hZGRyX3TCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmJfZG1hX2FkZHI7 IC8qIG9ubHkgdXNlZCB3aGVuCj4+Pj4+Pj4gdXNlX2J1c19hZGRyID0gdHJ1ZSAqLwo+Pj4+Pj4+ Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIC3CoCBzdHJ1Y3QgYW1kZ3B1X3JldHJ5ZmF1bHRf aGFzaHRhYmxlICpmYXVsdHM7Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9 Owo+Pj4+Pj4+Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgwqAjZGVmaW5lIEFN REdQVV9JSF9TUkNfREFUQV9NQVhfU0laRV9EVyA0Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKg wqDCoMKgwqAgQEAgLTk1LDcgKzg3LDUgQEAgaW50IGFtZGdwdV9paF9yaW5nX2luaXQoc3RydWN0 Cj4+Pj4+Pj4gYW1kZ3B1X2RldmljZSAqYWRldiwgdW5zaWduZWQgcmluZ19zaXplLAo+Pj4+Pj4+ Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBib29sIHVzZV9idXNfYWRkcik7Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDC oMKgwqDCoCB2b2lkIGFtZGdwdV9paF9yaW5nX2Zpbmkoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYpOwo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAgaW50IGFtZGdwdV9paF9w cm9jZXNzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KTsKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDC oMKgwqDCoMKgwqDCoCAtaW50IGFtZGdwdV9paF9hZGRfZmF1bHQoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYsIHU2NAo+Pj4+Pj4+IGtleSk7Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDC oMKgwqAgLXZvaWQgYW1kZ3B1X2loX2NsZWFyX2ZhdWx0KHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2LAo+Pj4+Pj4+IHU2NCBrZXkpOwo+Pj4+Pj4+Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKg wqDCoMKgwqAgwqAjZW5kaWYKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmMKPj4+Pj4+PiBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92bS5jCj4+Pj4+Pj4KPj4+Pj4+PiDC oMKgwqDCoMKgwqDCoMKgwqAgaW5kZXggMWQ3ZTNjMS4uOGIyMjBlOSAxMDA2NDQKPj4+Pj4+Pgo+ Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfdm0uYwo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92bS5jCj4+Pj4+Pj4KPj4+Pj4+PiDCoMKg wqDCoMKgwqDCoMKgwqAgQEAgLTI2OTIsNiArMjY5MiwyMiBAQCB2b2lkIGFtZGdwdV92bV9hZGp1 c3Rfc2l6ZShzdHJ1Y3QKPj4+Pj4+PiBhbWRncHVfZGV2aWNlICphZGV2LCB1aW50MzJfdCBtaW5f dm1fc2l6ZSwKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgIMKgwqDCoMKgwqDC oMKgwqDCoCDCoGFkZXYtPnZtX21hbmFnZXIuZnJhZ21lbnRfc2l6ZSk7Cj4+Pj4+Pj4KPj4+Pj4+ PiDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+Pj4+Pj4KPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKg wqDCoMKgwqDCoCArc3RhdGljIHN0cnVjdCBhbWRncHVfcmV0cnlmYXVsdF9oYXNodGFibGUKPj4+ Pj4+PiAqaW5pdF9mYXVsdF9oYXNoKHZvaWQpCj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDC oMKgwqAgK3sKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCArwqAgc3RydWN0IGFt ZGdwdV9yZXRyeWZhdWx0X2hhc2h0YWJsZSAqZmF1bHRfaGFzaDsKPj4+Pj4+Pgo+Pj4+Pj4+IMKg wqDCoMKgwqDCoMKgwqDCoCArCj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgK8Kg IGZhdWx0X2hhc2ggPSBrbWFsbG9jKHNpemVvZigqZmF1bHRfaGFzaCksIEdGUF9LRVJORUwpOwo+ Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgICvCoCBpZiAoIWZhdWx0X2hhc2gpCj4+ Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgK8KgwqDCoMKgwqDCoMKgwqDCoCByZXR1 cm4gZmF1bHRfaGFzaDsKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCArCj4+Pj4+ Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgK8KgIElOSVRfQ0hBU0hfVEFCTEUoZmF1bHRf aGFzaC0+aGFzaCwKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBBTURHUFVfUEFHRUZBVUxUX0hBU0hfQklUUywgOCwg MCk7Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgK8KgIHNwaW5fbG9ja19pbml0 KCZmYXVsdF9oYXNoLT5sb2NrKTsKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCAr wqAgZmF1bHRfaGFzaC0+Y291bnQgPSAwOwo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDC oMKgICsKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCArwqAgcmV0dXJuIGZhdWx0 X2hhc2g7Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgK30KPj4+Pj4+Pgo+Pj4+ Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCArCj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKg wqDCoCAvKioKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCDCoCAqIGFtZGdwdV92 bV9pbml0IC0gaW5pdGlhbGl6ZSBhIHZtIGluc3RhbmNlCj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDC oMKgwqDCoMKgwqAgwqAgKgo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIEBAIC0y NzgwLDYgKzI3OTYsMTIgQEAgaW50IGFtZGdwdV92bV9pbml0KHN0cnVjdAo+Pj4+Pj4+IGFtZGdw dV9kZXZpY2UgKmFkZXYsIHN0cnVjdCBhbWRncHVfdm0gKnZtLAo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDC oMKgwqDCoMKgwqDCoMKgwqAgwqDCoMKgwqDCoMKgwqDCoMKgIHZtLT5wYXNpZCA9IHBhc2lkOwo+ Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAgwqAgfQo+Pj4+Pj4+Cj4+Pj4+Pj4K Pj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgK8KgIHZtLT5mYXVsdF9oYXNoID0gaW5pdF9mYXVs dF9oYXNoKCk7Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgK8KgIGlmICghdm0t PmZhdWx0X2hhc2gpIHsKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCArwqDCoMKg wqDCoMKgwqDCoMKgIHIgPSAtRU5PTUVNOwo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDC oMKgICvCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBlcnJvcl9mcmVlX3Jvb3Q7Cj4+Pj4+Pj4KPj4+ Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgK8KgIH0KPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDC oMKgwqDCoCArCj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoCDCoCBJTklUX0tG SUZPKHZtLT5mYXVsdHMpOwo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAgwqAg dm0tPmZhdWx0X2NyZWRpdCA9IDE2Owo+Pj4+Pj4+Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKg wqDCoMKgwqAgQEAgLTI5NzMsNyArMjk5NSw3IEBAIHZvaWQgYW1kZ3B1X3ZtX2Zpbmkoc3RydWN0 Cj4+Pj4+Pj4gYW1kZ3B1X2RldmljZSAqYWRldiwgc3RydWN0IGFtZGdwdV92bSAqdm0pCj4+Pj4+ Pj4KPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCDCoMKgIC8qIENsZWFyIHBlbmRp bmcgcGFnZSBmYXVsdHMgZnJvbSBJSCB3aGVuIHRoZSBWTSBpcwo+Pj4+Pj4+IGRlc3Ryb3llZCAq Lwo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAgwqAgd2hpbGUgKGtmaWZvX2dl dCgmdm0tPmZhdWx0cywgJmZhdWx0KSkKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDC oCAtwqDCoMKgwqDCoMKgwqDCoMKgIGFtZGdwdV9paF9jbGVhcl9mYXVsdChhZGV2LCBmYXVsdCk7 Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgK8KgwqDCoMKgwqDCoMKgwqDCoCBh bWRncHVfdm1fY2xlYXJfZmF1bHQodm0tPmZhdWx0X2hhc2gsIGZhdWx0KTsKPj4+Pj4+Pgo+Pj4+ Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIMKgwqAgaWYgKHZtLT5wYXNpZCkgewo+Pj4+ Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAgwqDCoMKgwqDCoMKgwqDCoMKgIHVuc2ln bmVkIGxvbmcgZmxhZ3M7Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgQEAgLTI5 ODMsNiArMzAwNSw5IEBAIHZvaWQgYW1kZ3B1X3ZtX2Zpbmkoc3RydWN0Cj4+Pj4+Pj4gYW1kZ3B1 X2RldmljZSAqYWRldiwgc3RydWN0IGFtZGdwdV92bSAqdm0pCj4+Pj4+Pj4KPj4+Pj4+PiBzcGlu X3VubG9ja19pcnFyZXN0b3JlKCZhZGV2LT52bV9tYW5hZ2VyLnBhc2lkX2xvY2ssIGZsYWdzKTsK Pj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgIMKgIH0KPj4+Pj4+Pgo+Pj4+Pj4+ Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgICvCoCBrZnJlZSh2bS0+ZmF1bHRfaGFzaCk7Cj4+ Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgK8KgIHZtLT5mYXVsdF9oYXNoID0gTlVM TDsKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCArCj4+Pj4+Pj4KPj4+Pj4+PiDC oMKgwqDCoMKgwqDCoMKgwqDCoCDCoCBkcm1fc2NoZWRfZW50aXR5X2Rlc3Ryb3koJnZtLT5lbnRp dHkpOwo+Pj4+Pj4+Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgwqDCoCBpZiAo IVJCX0VNUFRZX1JPT1QoJnZtLT52YS5yYl9yb290KSkgewo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKg wqDCoMKgwqDCoMKgIEBAIC0zMTgzLDMgKzMyMDgsNzggQEAgdm9pZAo+Pj4+Pj4+IGFtZGdwdV92 bV9zZXRfdGFza19pbmZvKHN0cnVjdCBhbWRncHVfdm0gKnZtKQo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDC oMKgwqDCoMKgwqDCoMKgwqAgwqDCoMKgwqDCoMKgwqDCoMKgIH0KPj4+Pj4+Pgo+Pj4+Pj4+IMKg wqDCoMKgwqDCoMKgwqDCoMKgIMKgIH0KPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDC oMKgIH0KPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCArCj4+Pj4+Pj4KPj4+Pj4+ PiDCoMKgwqDCoMKgwqDCoMKgwqAgKy8qKgo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDC oMKgICsgKiBhbWRncHVfdm1fYWRkX2ZhdWx0IC0gQWRkIGEgcGFnZSBmYXVsdCByZWNvcmQgdG8K Pj4+Pj4+PiBmYXVsdCBoYXNoIHRhYmxlCj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKg wqAgKyAqCj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgKyAqIEBmYXVsdF9oYXNo OiBmYXVsdCBoYXNoIHRhYmxlCj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgKyAq IEBrZXk6IDY0LWJpdCBlbmNvZGluZyBvZiBQQVNJRCBhbmQgYWRkcmVzcwo+Pj4+Pj4+Cj4+Pj4+ Pj4gwqDCoMKgwqDCoMKgwqDCoMKgICsgKgo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDC oMKgICsgKiBUaGlzIHNob3VsZCBiZSBjYWxsZWQgd2hlbiBhIHJldHJ5IHBhZ2UgZmF1bHQKPj4+ Pj4+PiBpbnRlcnJ1cHQgaXMKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCArICog cmVjZWl2ZWQuIElmIHRoaXMgaXMgYSBuZXcgcGFnZSBmYXVsdCwgaXQgd2lsbCBiZQo+Pj4+Pj4+ IGFkZGVkIHRvIGEgaGFzaAo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgICsgKiB0 YWJsZS4gVGhlIHJldHVybiB2YWx1ZSBpbmRpY2F0ZXMgd2hldGhlciB0aGlzIGlzIGEKPj4+Pj4+ PiBuZXcgZmF1bHQsIG9yCj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgKyAqIGEg ZmF1bHQgdGhhdCB3YXMgYWxyZWFkeSBrbm93biBhbmQgaXMgYWxyZWFkeSBiZWluZwo+Pj4+Pj4+ IGhhbmRsZWQuCj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgKyAqCj4+Pj4+Pj4K Pj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgKyAqIElmIHRoZXJlIGFyZSB0b28gbWFueSBwZW5k aW5nIHBhZ2UgZmF1bHRzLCB0aGlzIHdpbGwKPj4+Pj4+PiBmYWlsLiBSZXRyeQo+Pj4+Pj4+Cj4+ Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgICsgKiBpbnRlcnJ1cHRzIHNob3VsZCBiZSBpZ25vcmVk IGluIHRoaXMgY2FzZSB1bnRpbCB0aGVyZQo+Pj4+Pj4+IGlzIGVub3VnaAo+Pj4+Pj4+Cj4+Pj4+ Pj4gwqDCoMKgwqDCoMKgwqDCoMKgICsgKiBmcmVlIHNwYWNlLgo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDC oMKgwqDCoMKgwqDCoMKgICsgKgo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgICsg KiBSZXR1cm5zIDAgaWYgdGhlIGZhdWx0IHdhcyBhZGRlZCwgMSBpZiB0aGUgZmF1bHQgd2FzCj4+ Pj4+Pj4gYWxyZWFkeSBrbm93biwKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCAr ICogLUVOT1NQQyBpZiB0aGVyZSBhcmUgdG9vIG1hbnkgcGVuZGluZyBmYXVsdHMuCj4+Pj4+Pj4K Pj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgKyAqLwo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDC oMKgwqDCoMKgICtpbnQgYW1kZ3B1X3ZtX2FkZF9mYXVsdChzdHJ1Y3QKPj4+Pj4+PiBhbWRncHVf cmV0cnlmYXVsdF9oYXNodGFibGUgKmZhdWx0X2hhc2gsIHU2NCBrZXkpCj4+Pj4+Pj4KPj4+Pj4+ PiDCoMKgwqDCoMKgwqDCoMKgwqAgK3sKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDC oCArwqAgdW5zaWduZWQgbG9uZyBmbGFnczsKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKg wqDCoCArwqAgaW50IHIgPSAtRU5PU1BDOwo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDC oMKgICsKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCArwqAgaWYgKFdBUk5fT05f T05DRSghZmF1bHRfaGFzaCkpCj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgK8Kg wqDCoMKgwqDCoMKgwqDCoCAvKiBTaG91bGQgYmUgYWxsb2NhdGVkIGluIGFtZGdwdV92bV9pbml0 Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgK8KgwqDCoMKgwqDCoMKgwqDCoMKg ICovCj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgK8KgwqDCoMKgwqDCoMKgwqDC oCByZXR1cm4gcjsKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCArCj4+Pj4+Pj4K Pj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgK8KgIHNwaW5fbG9ja19pcnFzYXZlKCZmYXVsdF9o YXNoLT5sb2NrLCBmbGFncyk7Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgKwo+ Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgICvCoCAvKiBPbmx5IGxldCB0aGUgaGFz aCB0YWJsZSBmaWxsIHVwIHRvIDUwJSBmb3IgYmVzdAo+Pj4+Pj4+IHBlcmZvcm1hbmNlICovCj4+ Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgK8KgIGlmIChmYXVsdF9oYXNoLT5jb3Vu dCA+PSAoMSA8PAo+Pj4+Pj4+IChBTURHUFVfUEFHRUZBVUxUX0hBU0hfQklUUy0xKSkpCj4+Pj4+ Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgK8KgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIHVu bG9ja19vdXQ7Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgKwo+Pj4+Pj4+Cj4+ Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgICvCoCByID0gY2hhc2hfdGFibGVfY29weV9pbigmZmF1 bHRfaGFzaC0+aGFzaCwga2V5LCBOVUxMKTsKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKg wqDCoCArwqAgaWYgKCFyKQo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgICvCoMKg wqDCoMKgwqDCoMKgwqAgZmF1bHRfaGFzaC0+Y291bnQrKzsKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDC oMKgwqDCoMKgwqDCoCArCj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgK8KgIC8q IGNoYXNoX3RhYmxlX2NvcHlfaW4gc2hvdWxkIG5ldmVyIGZhaWwgdW5sZXNzIHdlJ3JlCj4+Pj4+ Pj4gbG9zaW5nIGNvdW50ICovCj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgK8Kg IFdBUk5fT05fT05DRShyIDwgMCk7Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAg Kwo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgICt1bmxvY2tfb3V0Ogo+Pj4+Pj4+ Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgICvCoCBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZm YXVsdF9oYXNoLT5sb2NrLCBmbGFncyk7Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKg wqAgK8KgIHJldHVybiByOwo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgICt9Cj4+ Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgKwo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKg wqDCoMKgwqDCoMKgICsvKioKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCArICog YW1kZ3B1X3ZtX2NsZWFyX2ZhdWx0IC0gUmVtb3ZlIGEgcGFnZSBmYXVsdCByZWNvcmQKPj4+Pj4+ Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCArICoKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKg wqDCoMKgwqDCoCArICogQGZhdWx0X2hhc2g6IGZhdWx0IGhhc2ggdGFibGUKPj4+Pj4+Pgo+Pj4+ Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCArICogQGtleTogNjQtYml0IGVuY29kaW5nIG9mIFBBU0lE IGFuZCBhZGRyZXNzCj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgKyAqCj4+Pj4+ Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgKyAqIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCB3 aGVuIGEgcGFnZSBmYXVsdCBoYXMgYmVlbgo+Pj4+Pj4+IGhhbmRsZWQuIEFueQo+Pj4+Pj4+Cj4+ Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgICsgKiBmdXR1cmUgaW50ZXJydXB0IHdpdGggdGhpcyBr ZXkgd2lsbCBiZSBwcm9jZXNzZWQgYXMgYQo+Pj4+Pj4+IG5ldwo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDC oMKgwqDCoMKgwqDCoMKgICsgKiBwYWdlIGZhdWx0Lgo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDC oMKgwqDCoMKgICsgKi8KPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCArdm9pZCBh bWRncHVfdm1fY2xlYXJfZmF1bHQoc3RydWN0Cj4+Pj4+Pj4gYW1kZ3B1X3JldHJ5ZmF1bHRfaGFz aHRhYmxlICpmYXVsdF9oYXNoLCB1NjQga2V5KQo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKg wqDCoMKgICt7Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgK8KgIHVuc2lnbmVk IGxvbmcgZmxhZ3M7Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgK8KgIGludCBy Owo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgICsKPj4+Pj4+Pgo+Pj4+Pj4+IMKg wqDCoMKgwqDCoMKgwqDCoCArwqAgaWYgKCFmYXVsdF9oYXNoKQo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDC oMKgwqDCoMKgwqDCoMKgICvCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuOwo+Pj4+Pj4+Cj4+Pj4+ Pj4gwqDCoMKgwqDCoMKgwqDCoMKgICsKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDC oCArwqAgc3Bpbl9sb2NrX2lycXNhdmUoJmZhdWx0X2hhc2gtPmxvY2ssIGZsYWdzKTsKPj4+Pj4+ Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCArCj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKg wqDCoMKgwqAgK8KgIHIgPSBjaGFzaF90YWJsZV9yZW1vdmUoJmZhdWx0X2hhc2gtPmhhc2gsIGtl eSwgTlVMTCk7Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgK8KgIGlmICghV0FS Tl9PTl9PTkNFKHIgPCAwKSkgewo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgICvC oMKgwqDCoMKgwqDCoMKgwqAgZmF1bHRfaGFzaC0+Y291bnQtLTsKPj4+Pj4+Pgo+Pj4+Pj4+IMKg wqDCoMKgwqDCoMKgwqDCoCArwqDCoMKgwqDCoMKgwqDCoMKgIFdBUk5fT05fT05DRShmYXVsdF9o YXNoLT5jb3VudCA8IDApOwo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgICvCoCB9 Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgKwo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDC oMKgwqDCoMKgwqDCoMKgICvCoCBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZmYXVsdF9oYXNoLT5s b2NrLCBmbGFncyk7Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgK30KPj4+Pj4+ Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmgKPj4+Pj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdV92bS5oCj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgaW5kZXgg ZTI3NWVlNy4uNmViMWRhMSAxMDA2NDQKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDC oCAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uaAo+Pj4+Pj4+Cj4+ Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV92bS5oCj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgQEAgLTE3OCw2 ICsxNzgsMTMgQEAgc3RydWN0IGFtZGdwdV90YXNrX2luZm8gewo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDC oMKgwqDCoMKgwqDCoMKgwqAgwqAgcGlkX3TCoMKgIHRnaWQ7Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKg wqDCoMKgwqDCoMKgwqDCoCB9Owo+Pj4+Pj4+Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDC oMKgwqAgKyNkZWZpbmUgQU1ER1BVX1BBR0VGQVVMVF9IQVNIX0JJVFMgOAo+Pj4+Pj4+Cj4+Pj4+ Pj4gwqDCoMKgwqDCoMKgwqDCoMKgICtzdHJ1Y3QgYW1kZ3B1X3JldHJ5ZmF1bHRfaGFzaHRhYmxl IHsKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCArwqAgREVDTEFSRV9DSEFTSF9U QUJMRShoYXNoLCBBTURHUFVfUEFHRUZBVUxUX0hBU0hfQklUUywKPj4+Pj4+PiA4LCAwKTsKPj4+ Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCArwqAgc3BpbmxvY2tfdMKgwqDCoMKgIGxv Y2s7Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgK8KgIGludMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgY291bnQ7Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgK307 Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgKwo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDC oMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGFtZGdwdV92bSB7Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKg wqDCoMKgwqDCoMKgwqDCoCDCoCAvKiB0cmVlIG9mIHZpcnR1YWwgYWRkcmVzc2VzIG1hcHBlZCAq Lwo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAgwqAgc3RydWN0IHJiX3Jvb3Rf Y2FjaGVkwqAgdmE7Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgQEAgLTI0MCw2 ICsyNDcsNyBAQCBzdHJ1Y3QgYW1kZ3B1X3ZtIHsKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDC oMKgwqDCoMKgIMKgIHN0cnVjdCB0dG1fbHJ1X2J1bGtfbW92ZSBscnVfYnVsa19tb3ZlOwo+Pj4+ Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAgwqAgLyogbWFyayB3aGV0aGVyIGNhbiBk byB0aGUgYnVsayBtb3ZlICovCj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoCDC oCBib29swqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJ1bGtfbW92ZWFibGU7 Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgK8KgIHN0cnVjdCBhbWRncHVfcmV0 cnlmYXVsdF9oYXNodGFibGUgKmZhdWx0X2hhc2g7Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKg wqDCoMKgwqDCoCB9Owo+Pj4+Pj4+Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAg wqBzdHJ1Y3QgYW1kZ3B1X3ZtX21hbmFnZXIgewo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKg wqDCoMKgIEBAIC0zNTUsNCArMzYzLDggQEAgdm9pZCBhbWRncHVfdm1fc2V0X3Rhc2tfaW5mbyhz dHJ1Y3QKPj4+Pj4+PiBhbWRncHVfdm0gKnZtKTsKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDC oMKgwqDCoMKgIHZvaWQgYW1kZ3B1X3ZtX21vdmVfdG9fbHJ1X3RhaWwoc3RydWN0IGFtZGdwdV9k ZXZpY2UKPj4+Pj4+PiAqYWRldiwKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKg IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3Qg YW1kZ3B1X3ZtICp2bSk7Cj4+Pj4+Pj4KPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDC oCAraW50IGFtZGdwdV92bV9hZGRfZmF1bHQoc3RydWN0Cj4+Pj4+Pj4gYW1kZ3B1X3JldHJ5ZmF1 bHRfaGFzaHRhYmxlICpmYXVsdF9oYXNoLCB1NjQga2V5KTsKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDC oMKgwqDCoMKgwqDCoCArCj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgK3ZvaWQg YW1kZ3B1X3ZtX2NsZWFyX2ZhdWx0KHN0cnVjdAo+Pj4+Pj4+IGFtZGdwdV9yZXRyeWZhdWx0X2hh c2h0YWJsZSAqZmF1bHRfaGFzaCwgdTY0IGtleSk7Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKg wqDCoMKgwqAgKwo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAgI2VuZGlmCj4+ Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L3ZlZ2ExMF9paC5jCj4+Pj4+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS92ZWdhMTBfaWguYwo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIGlu ZGV4IDVhZTVlZDIuLmFjYmU1YTcgMTAwNjQ0Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDC oMKgwqAgLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmVnYTEwX2loLmMKPj4+Pj4+ Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS92ZWdhMTBfaWguYwo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIEBAIC0y NjUsMzUgKzI2NSwzNiBAQCBzdGF0aWMgYm9vbAo+Pj4+Pj4+IHZlZ2ExMF9paF9wcmVzY3JlZW5f aXYoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKg wqDCoMKgwqDCoCDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHRydWU7Cj4+Pj4+Pj4KPj4+Pj4+ PiDCoMKgwqDCoMKgwqDCoMKgwqDCoCDCoCB9Cj4+Pj4+Pj4KPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDC oMKgwqDCoMKgwqDCoCAtwqAgYWRkciA9ICgodTY0KShkdzUgJiAweGYpIDw8IDQ0KSB8ICgodTY0 KWR3NCA8PCAxMik7Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgLcKgIGtleSA9 IEFNREdQVV9WTV9GQVVMVChwYXNpZCwgYWRkcik7Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKg wqDCoMKgwqAgLcKgIHIgPSBhbWRncHVfaWhfYWRkX2ZhdWx0KGFkZXYsIGtleSk7Cj4+Pj4+Pj4K Pj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgLQo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKg wqDCoMKgIC3CoCAvKiBIYXNoIHRhYmxlIGlzIGZ1bGwgb3IgdGhlIGZhdWx0IGlzIGFscmVhZHkg YmVpbmcKPj4+Pj4+PiBwcm9jZXNzZWQsCj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKg wqAgLcKgwqAgKiBpZ25vcmUgZnVydGhlciBwYWdlIGZhdWx0cwo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDC oMKgwqDCoMKgwqDCoMKgIC3CoMKgICovCj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKg wqAgLcKgIGlmIChyICE9IDApCj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgLcKg wqDCoMKgwqDCoMKgwqDCoCBnb3RvIGlnbm9yZV9pdjsKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKg wqDCoMKgwqDCoCAtCj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoCDCoCAvKiBU cmFjayByZXRyeSBmYXVsdHMgaW4gcGVyLVZNIGZhdWx0IEZJRk8uICovCj4+Pj4+Pj4KPj4+Pj4+ PiDCoMKgwqDCoMKgwqDCoMKgwqDCoCDCoCBzcGluX2xvY2soJmFkZXYtPnZtX21hbmFnZXIucGFz aWRfbG9jayk7Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoCDCoCB2bSA9IGlk cl9maW5kKCZhZGV2LT52bV9tYW5hZ2VyLnBhc2lkX2lkciwgcGFzaWQpOwo+Pj4+Pj4+Cj4+Pj4+ Pj4gwqDCoMKgwqDCoMKgwqDCoMKgICvCoCBhZGRyID0gKCh1NjQpKGR3NSAmIDB4ZikgPDwgNDQp IHwgKCh1NjQpZHc0IDw8IDEyKTsKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCAr wqAga2V5ID0gQU1ER1BVX1ZNX0ZBVUxUKHBhc2lkLCBhZGRyKTsKPj4+Pj4+Pgo+Pj4+Pj4+IMKg wqDCoMKgwqDCoMKgwqDCoMKgIMKgIGlmICghdm0pIHsKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKg wqDCoMKgwqDCoMKgIMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBWTSBub3QgZm91bmQsIHByb2Nlc3Mg aXQgbm9ybWFsbHkgKi8KPj4+Pj4+Pgo+Pj4+Pj4+IHNwaW5fdW5sb2NrKCZhZGV2LT52bV9tYW5h Z2VyLnBhc2lkX2xvY2spOwo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIC3CoMKg wqDCoMKgwqDCoMKgwqAgYW1kZ3B1X2loX2NsZWFyX2ZhdWx0KGFkZXYsIGtleSk7Cj4+Pj4+Pj4K Pj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoCDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHRy dWU7Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgK8KgIH0gZWxzZSB7Cj4+Pj4+ Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgK8KgwqDCoMKgwqDCoMKgwqDCoCByID0gYW1k Z3B1X3ZtX2FkZF9mYXVsdCh2bS0+ZmF1bHRfaGFzaCwga2V5KTsKPj4+Pj4+Pgo+Pj4+Pj4+IMKg wqDCoMKgwqDCoMKgwqDCoCArCj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgK8Kg wqDCoMKgwqDCoMKgwqDCoCAvKiBIYXNoIHRhYmxlIGlzIGZ1bGwgb3IgdGhlIGZhdWx0IGlzIGFs cmVhZHkKPj4+Pj4+PiBiZWluZyBwcm9jZXNzZWQsCj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKg wqDCoMKgwqAgK8KgwqDCoMKgwqDCoMKgwqDCoMKgICogaWdub3JlIGZ1cnRoZXIgcGFnZSBmYXVs dHMKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCArwqDCoMKgwqDCoMKgwqDCoMKg wqAgKi8KPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCArwqDCoMKgwqDCoMKgwqDC oMKgIGlmIChyICE9IDApIHsKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCArIHNw aW5fdW5sb2NrKCZhZGV2LT52bV9tYW5hZ2VyLnBhc2lkX2xvY2spOwo+Pj4+Pj4+Cj4+Pj4+Pj4g wqDCoMKgwqDCoMKgwqDCoMKgICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdv dG8gaWdub3JlX2l2Owo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgICvCoMKgwqDC oMKgwqDCoMKgwqAgfQo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAgwqAgfQo+ Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAgwqAgLyogTm8gbG9ja2luZyByZXF1 aXJlZCB3aXRoIHNpbmdsZSB3cml0ZXIgYW5kIHNpbmdsZQo+Pj4+Pj4+IHJlYWRlciAqLwo+Pj4+ Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAgwqAgciA9IGtmaWZvX3B1dCgmdm0tPmZh dWx0cywga2V5KTsKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgIMKgIGlmICgh cikgewo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAgwqDCoMKgwqDCoMKgwqDC oMKgIC8qIEZJRk8gaXMgZnVsbC4gSWdub3JlIGl0IHVudGlsIHRoZXJlIGlzCj4+Pj4+Pj4gc3Bh Y2UgKi8KPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCArwqDCoMKgwqDCoMKgwqDC oMKgIGFtZGdwdV92bV9jbGVhcl9mYXVsdCh2bS0+ZmF1bHRfaGFzaCwga2V5KTsKPj4+Pj4+Pgo+ Pj4+Pj4+IHNwaW5fdW5sb2NrKCZhZGV2LT52bV9tYW5hZ2VyLnBhc2lkX2xvY2spOwo+Pj4+Pj4+ Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIC3CoMKgwqDCoMKgwqDCoMKgwqAgYW1kZ3B1X2lo X2NsZWFyX2ZhdWx0KGFkZXYsIGtleSk7Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKg wqDCoCDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBpZ25vcmVfaXY7Cj4+Pj4+Pj4KPj4+Pj4+PiDC oMKgwqDCoMKgwqDCoMKgwqDCoCDCoCB9Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKg wqAgLSBzcGluX3VubG9jaygmYWRldi0+dm1fbWFuYWdlci5wYXNpZF9sb2NrKTsKPj4+Pj4+Pgo+ Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgICsgc3Bpbl91bmxvY2soJmFkZXYtPnZt X21hbmFnZXIucGFzaWRfbG9jayk7Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDC oCDCoCAvKiBJdCdzIHRoZSBmaXJzdCBmYXVsdCBmb3IgdGhpcyBhZGRyZXNzLCBwcm9jZXNzIGl0 Cj4+Pj4+Pj4gbm9ybWFsbHkgKi8KPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKg IMKgIHJldHVybiB0cnVlOwo+Pj4+Pj4+Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKg wqAgQEAgLTM4NiwxNCArMzg3LDYgQEAgc3RhdGljIGludCB2ZWdhMTBfaWhfc3dfaW5pdCh2b2lk Cj4+Pj4+Pj4gKmhhbmRsZSkKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgIMKg IGFkZXYtPmlycS5paC51c2VfZG9vcmJlbGwgPSB0cnVlOwo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKg wqDCoMKgwqDCoMKgwqAgwqAgYWRldi0+aXJxLmloLmRvb3JiZWxsX2luZGV4ID0gQU1ER1BVX0RP T1JCRUxMNjRfSUgKPj4+Pj4+PiA8PCAxOwo+Pj4+Pj4+Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDC oMKgwqDCoMKgwqAgLcKgIGFkZXYtPmlycS5paC5mYXVsdHMgPQo+Pj4+Pj4+IGttYWxsb2Moc2l6 ZW9mKCphZGV2LT5pcnEuaWguZmF1bHRzKSwgR0ZQX0tFUk5FTCk7Cj4+Pj4+Pj4KPj4+Pj4+PiDC oMKgwqDCoMKgwqDCoMKgwqAgLcKgIGlmICghYWRldi0+aXJxLmloLmZhdWx0cykKPj4+Pj4+Pgo+ Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCAtwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAtRU5P TUVNOwo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIC0gSU5JVF9DSEFTSF9UQUJM RShhZGV2LT5pcnEuaWguZmF1bHRzLT5oYXNoLAo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKg wqDCoMKgIC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQU1ER1BVX1BBR0VG QVVMVF9IQVNIX0JJVFMsIDgsIDApOwo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKg IC0gc3Bpbl9sb2NrX2luaXQoJmFkZXYtPmlycS5paC5mYXVsdHMtPmxvY2spOwo+Pj4+Pj4+Cj4+ Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIC3CoCBhZGV2LT5pcnEuaWguZmF1bHRzLT5jb3VudCA9 IDA7Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgLQo+Pj4+Pj4+Cj4+Pj4+Pj4g wqDCoMKgwqDCoMKgwqDCoMKgwqAgwqAgciA9IGFtZGdwdV9pcnFfaW5pdChhZGV2KTsKPj4+Pj4+ Pgo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIMKgwqAgcmV0dXJuIHI7Cj4+Pj4+ Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgQEAgLTQwNiw5ICszOTksNiBAQCBzdGF0aWMg aW50IHZlZ2ExMF9paF9zd19maW5pKHZvaWQKPj4+Pj4+PiAqaGFuZGxlKQo+Pj4+Pj4+Cj4+Pj4+ Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAgwqAgYW1kZ3B1X2lycV9maW5pKGFkZXYpOwo+Pj4+Pj4+ Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAgwqAgYW1kZ3B1X2loX3JpbmdfZmluaShhZGV2 KTsKPj4+Pj4+Pgo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIC3CoCBrZnJlZShh ZGV2LT5pcnEuaWguZmF1bHRzKTsKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCAt wqAgYWRldi0+aXJxLmloLmZhdWx0cyA9IE5VTEw7Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKg wqDCoMKgwqAgLQo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAgwqAgcmV0dXJu IDA7Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+Pj4+Pj4KPj4+Pj4+ Pgo+Pj4+Pj4+Cj4+Pj4+Pj4KPj4+Pj4+Pgo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoCBfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+Pj4+Pj4+Cj4+Pj4+ Pj4gwqDCoMKgwqDCoCBhbWQtZ2Z4IG1haWxpbmcgbGlzdAo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKg wqDCoCBhbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+Pj4+Pj4+IDxtYWlsdG86YW1kLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmc+Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgIGh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdmeAo+Pj4+Pj4+ Cj4+Pj4+Pj4KPj4+Pj4+Cj4+Pj4+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwo+Pj4+Pj4gYW1kLWdmeCBtYWlsaW5nIGxpc3QKPj4+Pj4+IGFtZC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4+Pj4+PiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZngKPj4+PiBfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwo+Pj4+IGFtZC1nZnggbWFpbGluZyBsaXN0Cj4+Pj4gYW1k LWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPj4+PiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZngKPj4gX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KPj4gYW1kLWdmeCBtYWlsaW5nIGxpc3QKPj4gYW1kLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4Cj4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFtZC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vYW1kLWdmeAo=