From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Christian_K=c3=b6nig?= Subject: Re: [PATCH v2 1/1] drm/amdgpu: Enable scatter gather display support Date: Fri, 13 Apr 2018 00:48:10 +0200 Message-ID: <2f5bfacf-2ceb-163d-48ae-9db44b3ca780@gmail.com> References: <1522189371-13767-1-git-send-email-Samuel.Li@amd.com> <7cc47f78-66eb-148d-96a2-b97760f767bf@gmail.com> <15196bc3-76cb-0a52-c05f-f23131f77e7f@amd.com> <20bdb4b1-1986-22e4-b0d1-1713b8794f83@amd.com> <277e44be-d618-ad29-06d2-ea12466571c9@amd.com> <18325399-d78e-2442-ccf4-55e30d9f5c52@amd.com> <5f492910-cac3-643f-efec-472f791e551e@amd.com> <83a2320e-74a9-4539-5b85-0e80a35525fb@amd.com> Reply-To: christian.koenig-5C7GfCeVMHo@public.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <83a2320e-74a9-4539-5b85-0e80a35525fb-5C7GfCeVMHo@public.gmane.org> Content-Language: en-US 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: Samuel Li , =?UTF-8?Q?Christian_K=c3=b6nig?= , Alexander.Deucher-5C7GfCeVMHo@public.gmane.org, Michel.Daenzer-5C7GfCeVMHo@public.gmane.org, =?UTF-8?B?TWFyZWsgT2zFocOhaw==?= Cc: amd-gfx mailing list SGkgU2FtLAoKeWVhaCBzb3JyeSBmb3IgdGhhdC4gSXQncyBhbHJlYWR5IHJhdGhlciBsYXRlIGhl cmUgYW5kIEkgZ290IGEgYml0IHRha2VuIAphd2F5LgoKQnV0IEkgc3RpbGwgaW5zaXN0IHRoYXQg eW91IGF0IGxlYXN0IHRyeSBhcyBJIGFkdmlzZWQsIEknbSBwcmV0dHkgc3VyZSAKdGhhdCB0aGlz IGFwcHJvYWNoIHdpbGwgd29yayBhbmQgY292ZXIgYWxsIHVzZSBjYXNlcyBkaXNjdXNzZWQgc28g ZmFyLgoKUmVnYXJkcywKQ2hyaXN0aWFuLgoKQW0gMTIuMDQuMjAxOCB1bSAyMjo0MiBzY2hyaWVi IFNhbXVlbCBMaToKPiBIaSBDaHJpc3RpYW4sCj4KPiBJZiB5b3UgaGF2ZSBhbnkgZ29vZCBwcm9w b3NhbCwgcGxlYXNlIGRlc2NyaWJlIGhlcmUuCj4gT3RoZXJ3aXNlIGtpbmRseSBhdm9pZCBzYXlp bmcgYW55dGhpbmcgYmFzZWQgb24geW91ciBlbW90aW9uLgo+Cj4gUmVnYXJkcywKPiBTYW0KPgo+ Cj4KPiBPbiAyMDE4LTA0LTEyIDA0OjEzIFBNLCBDaHJpc3RpYW4gS8O2bmlnIHdyb3RlOgo+PiBB bSAxMi4wNC4yMDE4IHVtIDIyOjAxIHNjaHJpZWIgU2FtdWVsIExpOgo+Pj4gVGhlIDR0aCBwcm9w b3NhbCA6KQo+Pj4KPj4+PiBJbiBvdGhlciB3b3JkcyBhZGQgc29tZXRoaW5nIGxpa2UgdGhlIGZv bGxvd2luZzoKPj4+Pgo+Pj4+IGlmIChkb21haW4gJiBBTURHUFVfR0VNX0RPTUFJTl9HVFQgJiYg Ym8tPnByZWZlcnJlZF9kb21haW5zICYgQU1ER1BVX0dFTV9ET01BSU5fR1RUKQo+Pj4+ICDCoMKg wqDCoCBkb21haW4gPSBBTURHUFVfR0VNX0RPTUFJTl9HVFQ7Cj4+Pj4KPj4+PiBUaGF0IHNob3Vs ZCBiZSBldmVyeXRoaW5nIHdlIG5lZWQgaGVyZS4KPj4+IFRoaXMgaXMgYmFzaWNhbGx5IGFnYWlu c3QgdGhlIGlkZWEgb2YgTWFyZWsncyBjaGFuZ2U6IGluIE1lc2EsIGJvdGggR1RUL1ZSQU0gYXJl IGFsbG93ZWQ7IGJ1dCBub3cgaW4geW91ciBrZXJuZWwgY2hhbmdlLCBhbGwgYnVmZmVycyB1c2Vz IEdUVCBvbmx5KG5vdCBsaW1pdGVkIHRvIGRpc3BsYXkgYnVmZmVyIG5vdykuCj4+PiBUbyBjb21w YXJlLCBjdXJyZW50IHBhdGNoIHN0aWxsIHNlZW1zIGJldHRlciwgc2luY2UgaXQgb25seSBjaXJj dW1zY3JpYmVzIGRpc3BsYXkgYnVmZmVyLgo+PiBXaGF0IEkgc3VnZ2VzdGVkIGhlcmUgaXMgZm9y IHBpbm5pbmcgcHJlZmVyZW5jZSwgdGhhdCBvbmx5IGFmZmVjdHMgQk9zIHVzZWQgZm9yIHNjYW5v dXQgYW5kIGl0IGFsc28gb25seSBhZmZlY3RzIHRoZW0gd2hpbGUgdGhleSBhcmUgc2Nhbm5lZCBv dXQuCj4+Cj4+IFBsZWFzZSBpbXBsZW1lbnQgYXMgYWR2aXNlZCBvciBvdGhlcndpc2Ugd2UgbmVl ZCB0byBhc3NpZ24gdGhlIHdvcmsgdG8gc29tZWJvZHkgZWxzZS4KPj4KPj4gVGhhbmtzLAo+PiBD aHJpc3RpYW4uCj4+Cj4+PiBTYW0KPj4+Cj4+Pgo+Pj4gT24gMjAxOC0wNC0xMiAwMjo0NyBQTSwg Q2hyaXN0aWFuIEvDtm5pZyB3cm90ZToKPj4+PiBQYXRjaCAjMTogQXZvaWQgdGhlIGhhcmR3YXJl IGJ1ZyEKPj4+Pgo+Pj4+IEUuZy4gZXZlbiB3aGVuIHdlIGF2b2lkIGRpZmZlcmVudCBwbGFjZW1l bnRzIGl0IHdvdWxkIGJlIGdvb2QgdG8gaGF2ZSBhIHBhdGNoIHdoaWNoIHR1cm5zIG9mZiBpbW1l ZGlhdGUgZmxpcHBpbmcgd2hlbiBzd2l0Y2hpbmcgZnJvbSBWUkFNIHRvIEdUVC4KPj4+Pgo+Pj4+ IFRoYXQgaXMgYXMgc2FmZXR5IG5ldCBhbmQgdG8gZG9jdW1lbnQgdGhhdCB3ZSBuZWVkIHRvIGF2 b2lkIHRoaXMgY29uZGl0aW9uIG9uIHRoZSBoYXJkd2FyZS4KPj4+Pgo+Pj4+IFBhdGNoICMyOiBH byBpbnRvIGFtZGdwdV9ib19waW5fcmVzdHJpY3RlZCgpIGFuZCBjaGFuZ2UgdGhlIHBpbm5pbmcg cHJlZmVyZW5jZS4KPj4+Pgo+Pj4+IEluIG90aGVyIHdvcmRzIGFkZCBzb21ldGhpbmcgbGlrZSB0 aGUgZm9sbG93aW5nOgo+Pj4+Cj4+Pj4gaWYgKGRvbWFpbiAmIEFNREdQVV9HRU1fRE9NQUlOX0dU VCAmJiBiby0+cHJlZmVycmVkX2RvbWFpbnMgJiBBTURHUFVfR0VNX0RPTUFJTl9HVFQpCj4+Pj4g IMKgwqDCoMKgIGRvbWFpbiA9IEFNREdQVV9HRU1fRE9NQUlOX0dUVDsKPj4+Pgo+Pj4+IFRoYXQg c2hvdWxkIGJlIGV2ZXJ5dGhpbmcgd2UgbmVlZCBoZXJlLgo+Pj4+Cj4+Pj4gUmVnYXJkcywKPj4+ PiBDaHJpc3RpYW4uCj4+Pj4KPj4+PiBBbSAxMi4wNC4yMDE4IHVtIDIwOjA3IHNjaHJpZWIgU2Ft dWVsIExpOgo+Pj4+PiBQbGVhc2UgY2xhcmlmeSwgQ2hyaXN0aWFuLiBIb3cgd291bGQgeW91IGxp a2UgaXQgdG8gYmUgaW1wbGVtZW50ZWQ/Cj4+Pj4+Cj4+Pj4+IFNhbQo+Pj4+Pgo+Pj4+Pgo+Pj4+ PiBPbiAyMDE4LTA0LTEyIDAyOjAwIFBNLCBDaHJpc3RpYW4gS8O2bmlnIHdyb3RlOgo+Pj4+Pj4+ IDEpIFR1cm4gb2ZmIGltbWVkaWF0ZSBtb2RlIHdoZW4gZmxpcHBpbmcgYmV0d2VlbiBWUkFNL0dU VC4KPj4+Pj4+IFRoYXQgbXVzdCBiZSBpbXBsZW1lbnRlZCBpbmRlcGVuZGVudGx5Lgo+Pj4+Pj4K Pj4+Pj4+IFNlZSB3b3JraW5nIGFyb3VuZCB0aGUgaGFyZHdhcmUgYnVnIHNob3VsZCBiZSBhIGRp ZmZlcmVudCBwYXRjaCB0aGFuIGltcGxlbWVudGluZyBhIHBsYWNlbWVudCBwb2xpY3kuCj4+Pj4+ Pgo+Pj4+Pj4+IEFzIHBlciBkaXNjdXNzaW9uLCB0aGUgM3JkIG9uZSwgd2hpY2ggaXMgdGhlIGN1 cnJlbnQgcGF0Y2gsIHNlZW1zIHRoZSBiZXN0IHNvIGZhci4KPj4+Pj4+IEFuZCBJIGNhbiBvbmx5 IHJlcGVhdCBteXNlbGYuIEFsZXggYW5kIEkgYXJlIHRoZSBtYWludGFpbmVycyBvZiB0aGUga2Vy bmVsIG1vZHVsZSwgc28gd2UgYXJlIHRoZSBvbmUgd2hvIGRlY2lkZSBvbiBob3cgdG8gaW1wbGVt ZW50IHRoaW5ncyBoZXJlLgo+Pj4+Pj4KPj4+Pj4+IEFuZCB3ZSBib3RoIG5vdGVkIHRoYXQgdGhp cyBhcHByb2FjaCBvZiBvdmVycmlkaW5nIHVzZXIgc3BhY2UgZGVjaXNpb25zIGlzIG5vdCBhIGdv b2QgZGVzaWduLgo+Pj4+Pj4KPj4+Pj4+IFRoZSBwbGFjZW1lbnQgcG9saWN5IEkgc3VnZ2VzdCBi eSBwcmVmZXJyaW5nIEdUVCBvdmVyIFZSQU0gb24gQVBVcyBzaG91bGQgYmUgdHJpdmlhbCB0byBp bXBsZW1lbnQgYW5kIGFzIGZhciBhcyBJIGNhbiBzZWUgYXZvaWRzIGFsbCBuZWdhdGl2ZSBzaWRl IGVmZmVjdHMuCj4+Pj4+Pgo+Pj4+Pj4gUmVnYXJkcywKPj4+Pj4+IENocmlzdGlhbi4KPj4+Pj4+ Cj4+Pj4+PiBBbSAxMi4wNC4yMDE4IHVtIDE5OjIxIHNjaHJpZWIgU2FtdWVsIExpOgo+Pj4+Pj4+ PiBUaGUgcG9pbnQgaXMgdGhpcyBrZXJuZWwgY2hhbmdlIG5vdyBuZWVkcyB0byBiZSByZXdvcmtl ZCBhbmQgYWRhcHRlZCB0byB3aGF0IE1lc2EgaXMgZG9pbmcuCj4+Pj4+Pj4gVGhyZWUgb3B0aW9u cyBoYXZlIGJlZW4gYnJvdWdodCB1cCBmb3Iga2VybmVsLAo+Pj4+Pj4+IDEpIFR1cm4gb2ZmIGlt bWVkaWF0ZSBtb2RlIHdoZW4gZmxpcHBpbmcgYmV0d2VlbiBWUkFNL0dUVC4KPj4+Pj4+PiAyKSBD aGVjayB0aGUgZG9tYWluIG9mIHRoZSBjdXJyZW50IGZiIGFuZCB0aGVuIGFkanVzdCB0aGUgbmV3 IG9uZSBiZWZvcmUgcGlubmluZyBpdC4KPj4+Pj4+PiAzKSBVc2Ugb25seSBWUkFNIG9yIEdUVCBk ZXBlbmRpbmcgb24gYSB0aHJlc2hob2xkLgo+Pj4+Pj4+Cj4+Pj4+Pj4gQXMgcGVyIGRpc2N1c3Np b24sIHRoZSAzcmQgb25lLCB3aGljaCBpcyB0aGUgY3VycmVudCBwYXRjaCwgc2VlbXMgdGhlIGJl c3Qgc28gZmFyLgo+Pj4+Pj4+Cj4+Pj4+Pj4gUmVnYXJkcywKPj4+Pj4+PiBTYW11ZWwgTGkKPj4+ Pj4+Pgo+Pj4+Pj4+Cj4+Pj4+Pj4KPj4+Pj4+PiBPbiAyMDE4LTA0LTEyIDAxOjAzIFBNLCBDaHJp c3RpYW4gS8O2bmlnIHdyb3RlOgo+Pj4+Pj4+Pj4gQ2FuIHlvdSBiZSBtb3JlIHNwZWNpZmljLCBD aHJpc3RpYW4/IE1lc2EgaGFzIHRoaXMsIEkgZG9uJ3QgdGhpbmsgaXQgbmVlZHMgYW55dGhpbmcg ZWxzZToKPj4+Pj4+Pj4gQ29tcGxldGVseSBhZ3JlZSwgdGhhdCdzIHdoYXQgSSBzdWdnZXN0ZWQg dG8gaW1wbGVtZW50Lgo+Pj4+Pj4+Pgo+Pj4+Pj4+PiBUaGUgcG9pbnQgaXMgdGhpcyBrZXJuZWwg Y2hhbmdlIG5vdyBuZWVkcyB0byBiZSByZXdvcmtlZCBhbmQgYWRhcHRlZCB0byB3aGF0IE1lc2Eg aXMgZG9pbmcuCj4+Pj4+Pj4+Cj4+Pj4+Pj4+IFJlZ2FyZHMsCj4+Pj4+Pj4+IENocmlzdGlhbi4K Pj4+Pj4+Pj4KPj4+Pj4+Pj4gQW0gMTIuMDQuMjAxOCB1bSAxODo0MCBzY2hyaWViIE1hcmVrIE9s xaHDoWs6Cj4+Pj4+Pj4+PiBDYW4geW91IGJlIG1vcmUgc3BlY2lmaWMsIENocmlzdGlhbj8gTWVz YSBoYXMgdGhpcywgSSBkb24ndCB0aGluayBpdCBuZWVkcyBhbnl0aGluZyBlbHNlOgo+Pj4+Pj4+ Pj4gaHR0cHM6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy9tZXNhL21lc2EvY29tbWl0Lz9pZD03ZDIw Nzk5MDhkOWVmMDVlYzNmMzViNzA3ODgzM2U1Nzg0NmNhYjViCj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4g TWFyZWsKPj4+Pj4+Pj4+Cj4+Pj4+Pj4+PiBPbiBXZWQsIE1hciAyOCwgMjAxOCBhdCAzOjQ2IEFN LCBDaHJpc3RpYW4gS8O2bmlnIDxja29lbmlnLmxlaWNodHp1bWVya2VuQGdtYWlsLmNvbSA8bWFp bHRvOmNrb2VuaWcubGVpY2h0enVtZXJrZW5AZ21haWwuY29tPj4gd3JvdGU6Cj4+Pj4+Pj4+Pgo+ Pj4+Pj4+Pj4gIMKgwqDCoMKgwqDCoCBBbSAyOC4wMy4yMDE4IHVtIDAwOjIyIHNjaHJpZWIgU2Ft dWVsIExpOgo+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoCBJdCdzIGF1 dG8gYnkgZGVmYXVsdC4gRm9yIENaL1NULCBhdXRvIHNldHRpbmcgZW5hYmxlcyBzZyBkaXNwbGF5 Cj4+Pj4+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqAgd2hlbiB2cmFtIHNpemUgaXMgc21hbGw7 IG90aGVyd2lzZSBzdGlsbCB1c2VzIHZyYW0uCj4+Pj4+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKg wqAgVGhpcyBwYXRjaCBmaXhlZCBzb21lIHBvdGVudGlhbCBoYW5nIGlzc3VlIGludHJvZHVjZWQg YnkgY2hhbmdlCj4+Pj4+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqAgImFsbG93IGZyYW1lYnVm ZmVyIGluIEdBUlQgbWVtb3J5IGFzIHdlbGwiIGR1ZSB0byBDWi9TVCBoYXJkd2FyZQo+Pj4+Pj4+ Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgIGxpbWl0YXRpb24uCj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4K Pj4+Pj4+Pj4+ICDCoMKgwqDCoMKgwqAgV2VsbCB0aGF0IGlzIHN0aWxsIGEgTkFLLgo+Pj4+Pj4+ Pj4KPj4+Pj4+Pj4+ICDCoMKgwqDCoMKgwqAgQXMgZGlzY3Vzc2VkIG5vdyBtdWx0aXBsZSB0aW1l cyBwbGVhc2UgaW1wbGVtZW50IHRoZSBuZWNlc3NhcnkKPj4+Pj4+Pj4+ICDCoMKgwqDCoMKgwqAg Y2hhbmdlcyBpbiBNZXNhLgo+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+ICDCoMKgwqDCoMKgwqAgUmVnYXJk cywKPj4+Pj4+Pj4+ICDCoMKgwqDCoMKgwqAgQ2hyaXN0aWFuLgo+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+ Cj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgIHYyOiBDaGFuZ2UgZGVm YXVsdCBzZXR0aW5nIHRvIGF1dG8sIGFsc28gc29tZSBtaXNjIGNoYW5nZXMuCj4+Pj4+Pj4+PiAg wqDCoMKgwqDCoMKgwqDCoMKgwqAgU2lnbmVkLW9mZi1ieTogU2FtdWVsIExpIDxTYW11ZWwuTGlA YW1kLmNvbQo+Pj4+Pj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgIDxtYWlsdG86U2FtdWVsLkxp QGFtZC5jb20+Pgo+Pj4+Pj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgIC0tLQo+Pj4+Pj4+Pj4g IMKgwqDCoMKgwqDCoMKgwqDCoMKgIMKgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdw dS5oIMKgIMKgfMKgIDEgKwo+Pj4+Pj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgIMKgIGRyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kaXNwbGF5LmMgwqAgwqB8IDEwICsrKysrKysr LS0KPj4+Pj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoCDCoCBkcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfZGlzcGxheS5oIMKgIMKgfMKgIDIgKysKPj4+Pj4+Pj4+ICDCoMKgwqDC oMKgwqDCoMKgwqDCoCDCoCBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZHJ2LmMg wqAgwqB8wqAgNCArKysrCj4+Pj4+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqAgwqAgZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2ZiLmMgwqAgfMKgIDIgKysKPj4+Pj4+Pj4+ICDC oMKgwqDCoMKgwqDCoMKgwqDCoCDCoCBkcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1 X2RtL2FtZGdwdV9kbS5jIHzCoCAzICsrLQo+Pj4+Pj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKg IMKgIDYgZmlsZXMgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKPj4+ Pj4+Pj4+Cj4+Pj4+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oCj4+Pj4+Pj4+PiAgwqDCoMKgwqDCoMKgwqDC oMKgwqAgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaAo+Pj4+Pj4+Pj4gIMKg wqDCoMKgwqDCoMKgwqDCoMKgIGluZGV4IGE3ZTIyMjkuLmM5NDIzNjIgMTAwNjQ0Cj4+Pj4+Pj4+ PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1LmgKPj4+Pj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoCArKysgYi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaAo+Pj4+Pj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKg IEBAIC0xMjksNiArMTI5LDcgQEAgZXh0ZXJuIGludCBhbWRncHVfbGJwdzsKPj4+Pj4+Pj4+ICDC oMKgwqDCoMKgwqDCoMKgwqDCoCDCoCBleHRlcm4gaW50IGFtZGdwdV9jb21wdXRlX211bHRpcGlw ZTsKPj4+Pj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoCDCoCBleHRlcm4gaW50IGFtZGdwdV9n cHVfcmVjb3Zlcnk7Cj4+Pj4+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqAgwqAgZXh0ZXJuIGlu dCBhbWRncHVfZW11X21vZGU7Cj4+Pj4+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqAgK2V4dGVy biBpbnQgYW1kZ3B1X3NnX2Rpc3BsYXk7Cj4+Pj4+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqAg wqAgwqAgI2lmZGVmIENPTkZJR19EUk1fQU1ER1BVX1NJCj4+Pj4+Pj4+PiAgwqDCoMKgwqDCoMKg wqDCoMKgwqAgwqAgZXh0ZXJuIGludCBhbWRncHVfc2lfc3VwcG9ydDsKPj4+Pj4+Pj4+ICDCoMKg wqDCoMKgwqDCoMKgwqDCoCBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1X2Rpc3BsYXkuYwo+Pj4+Pj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgIGIvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rpc3BsYXkuYwo+Pj4+Pj4+Pj4gIMKgwqDCoMKg wqDCoMKgwqDCoMKgIGluZGV4IDU0OTViMjkuLjFlN2I5NTAgMTAwNjQ0Cj4+Pj4+Pj4+PiAgwqDC oMKgwqDCoMKgwqDCoMKgwqAgLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X2Rpc3BsYXkuYwo+Pj4+Pj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kaXNwbGF5LmMKPj4+Pj4+Pj4+ICDCoMKgwqDCoMKg wqDCoMKgwqDCoCBAQCAtNTEzLDggKzUxMywxNCBAQCB1aW50MzJfdAo+Pj4+Pj4+Pj4gIMKgwqDC oMKgwqDCoMKgwqDCoMKgIGFtZGdwdV9kaXNwbGF5X2ZyYW1lYnVmZmVyX2RvbWFpbnMoc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYpCj4+Pj4+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqAgwqAg I2lmIGRlZmluZWQoQ09ORklHX0RSTV9BTURfREMpCj4+Pj4+Pj4+PiAgwqDCoMKgwqDCoMKgwqDC oMKgwqAgwqAgwqAgwqAgwqAgaWYgKGFkZXYtPmFzaWNfdHlwZSA+PSBDSElQX0NBUlJJWk8gJiYg YWRldi0+YXNpY190eXBlCj4+Pj4+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqAgPCBDSElQX1JB VkVOICYmCj4+Pj4+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqAgwqAgwqAgwqAgwqAgwqAgwqAg YWRldi0+ZmxhZ3MgJiBBTURfSVNfQVBVICYmCj4+Pj4+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKg wqAgLcKgIMKgIMKgIMKgIMKgIMKgYW1kZ3B1X2RldmljZV9hc2ljX2hhc19kY19zdXBwb3J0KGFk ZXYtPmFzaWNfdHlwZSkpCj4+Pj4+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLcKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgZG9tYWluIHw9IEFNREdQVV9HRU1fRE9NQUlOX0dUVDsKPj4+Pj4+Pj4+ ICDCoMKgwqDCoMKgwqDCoMKgwqDCoCArwqAgwqAgwqAgwqAgwqAgwqBhbWRncHVfZGV2aWNlX2Fz aWNfaGFzX2RjX3N1cHBvcnQoYWRldi0+YXNpY190eXBlKSkgewo+Pj4+Pj4+Pj4gIMKgwqDCoMKg wqDCoMKgwqDCoMKgICvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGlmIChhbWRncHVfc2dfZGlzcGxh eSA9PSAxKQo+Pj4+Pj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgICvCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoGRvbWFpbiA9IEFNREdQVV9HRU1fRE9NQUlOX0dUVDsKPj4+Pj4+ Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoCArwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBlbHNlIGlm IChhbWRncHVfc2dfZGlzcGxheSA9PSAtMSkgewo+Pj4+Pj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDC oMKgICvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGlmIChhZGV2LT5nbWMucmVh bF92cmFtX3NpemUgPAo+Pj4+Pj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgIEFNREdQVV9TR19U SFJFU0hPTEQpCj4+Pj4+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqAgK8KgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgZG9tYWluID0gQU1ER1BVX0dFTV9ET01B SU5fR1RUOwo+Pj4+Pj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgICvCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoH0KPj4+Pj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoCArwqAgwqAgwqAgwqB9Cj4+ Pj4+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqAgwqAgI2VuZGlmCj4+Pj4+Pj4+PiAgwqDCoMKg wqDCoMKgwqDCoMKgwqAgwqAgwqAgwqAgwqAgcmV0dXJuIGRvbWFpbjsKPj4+Pj4+Pj4+ICDCoMKg wqDCoMKgwqDCoMKgwqDCoCBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1X2Rpc3BsYXkuaAo+Pj4+Pj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgIGIvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rpc3BsYXkuaAo+Pj4+Pj4+Pj4gIMKgwqDCoMKg wqDCoMKgwqDCoMKgIGluZGV4IDJiMTFkODAuLjJiMjUzOTMgMTAwNjQ0Cj4+Pj4+Pj4+PiAgwqDC oMKgwqDCoMKgwqDCoMKgwqAgLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X2Rpc3BsYXkuaAo+Pj4+Pj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kaXNwbGF5LmgKPj4+Pj4+Pj4+ICDCoMKgwqDCoMKg wqDCoMKgwqDCoCBAQCAtMjMsNiArMjMsOCBAQAo+Pj4+Pj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDC oMKgIMKgICNpZm5kZWYgX19BTURHUFVfRElTUExBWV9IX18KPj4+Pj4+Pj4+ICDCoMKgwqDCoMKg wqDCoMKgwqDCoCDCoCAjZGVmaW5lIF9fQU1ER1BVX0RJU1BMQVlfSF9fCj4+Pj4+Pj4+PiAgwqDC oMKgwqDCoMKgwqDCoMKgwqAgwqAgKyNkZWZpbmUgQU1ER1BVX1NHX1RIUkVTSE9MRMKgICgyNTYq MTAyNCoxMDI0KQo+Pj4+Pj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgICsKPj4+Pj4+Pj4+ICDC oMKgwqDCoMKgwqDCoMKgwqDCoCDCoCB1aW50MzJfdCBhbWRncHVfZGlzcGxheV9mcmFtZWJ1ZmZl cl9kb21haW5zKHN0cnVjdAo+Pj4+Pj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFtZGdwdV9k ZXZpY2UgKmFkZXYpOwo+Pj4+Pj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgIMKgIHN0cnVjdCBk cm1fZnJhbWVidWZmZXIgKgo+Pj4+Pj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgIMKgIGFtZGdw dV9kaXNwbGF5X3VzZXJfZnJhbWVidWZmZXJfY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs Cj4+Pj4+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kcnYuYwo+Pj4+Pj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDC oMKgIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rydi5jCj4+Pj4+Pj4+PiAg wqDCoMKgwqDCoMKgwqDCoMKgwqAgaW5kZXggMWJmY2U3OS4uMTlmMTFhNSAxMDA2NDQKPj4+Pj4+ Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoCAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfZHJ2LmMKPj4+Pj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoCArKysgYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZHJ2LmMKPj4+Pj4+Pj4+ICDCoMKgwqDCoMKg wqDCoMKgwqDCoCBAQCAtMTMyLDYgKzEzMiw3IEBAIGludCBhbWRncHVfbGJwdyA9IC0xOwo+Pj4+ Pj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgIMKgIGludCBhbWRncHVfY29tcHV0ZV9tdWx0aXBp cGUgPSAtMTsKPj4+Pj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoCDCoCBpbnQgYW1kZ3B1X2dw dV9yZWNvdmVyeSA9IC0xOyAvKiBhdXRvICovCj4+Pj4+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKg wqAgwqAgaW50IGFtZGdwdV9lbXVfbW9kZSA9IDA7Cj4+Pj4+Pj4+PiAgwqDCoMKgwqDCoMKgwqDC oMKgwqAgK2ludCBhbWRncHVfc2dfZGlzcGxheSA9IC0xOwo+Pj4+Pj4+Pj4gIMKgwqDCoMKgwqDC oMKgwqDCoMKgIMKgIMKgIE1PRFVMRV9QQVJNX0RFU0ModnJhbWxpbWl0LCAiUmVzdHJpY3QgVlJB TSBmb3IgdGVzdGluZywgaW4KPj4+Pj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtZWdhYnl0 ZXMiKTsKPj4+Pj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoCDCoCBtb2R1bGVfcGFyYW1fbmFt ZWQodnJhbWxpbWl0LCBhbWRncHVfdnJhbV9saW1pdCwgaW50LCAwNjAwKTsKPj4+Pj4+Pj4+ICDC oMKgwqDCoMKgwqDCoMKgwqDCoCBAQCAtMjkwLDYgKzI5MSw5IEBAIG1vZHVsZV9wYXJhbV9uYW1l ZChncHVfcmVjb3ZlcnksCj4+Pj4+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYW1kZ3B1X2dw dV9yZWNvdmVyeSwgaW50LCAwNDQ0KTsKPj4+Pj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoCDC oCBNT0RVTEVfUEFSTV9ERVNDKGVtdV9tb2RlLCAiRW11bGF0aW9uIG1vZGUsICgxID0gZW5hYmxl LCAwID0KPj4+Pj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkaXNhYmxlKSIpOwo+Pj4+Pj4+ Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgIMKgIG1vZHVsZV9wYXJhbV9uYW1lZChlbXVfbW9kZSwg YW1kZ3B1X2VtdV9tb2RlLCBpbnQsIDA0NDQpOwo+Pj4+Pj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDC oMKgIMKgICtNT0RVTEVfUEFSTV9ERVNDKHNnX2Rpc3BsYXksICJFbmFibGUgc2NhdHRlciBnYXRo ZXIKPj4+Pj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkaXNwbGF5LCAoMSA9IGVuYWJsZSwg MCA9IGRpc2FibGUsIC0xID0gYXV0byIpOwo+Pj4+Pj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKg ICttb2R1bGVfcGFyYW1fbmFtZWQoc2dfZGlzcGxheSwgYW1kZ3B1X3NnX2Rpc3BsYXksIGludCwg MDQ0NCk7Cj4+Pj4+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKwo+Pj4+Pj4+Pj4gIMKgwqDC oMKgwqDCoMKgwqDCoMKgIMKgICNpZmRlZiBDT05GSUdfRFJNX0FNREdQVV9TSQo+Pj4+Pj4+Pj4g IMKgwqDCoMKgwqDCoMKgwqDCoMKgIMKgIMKgICNpZiBkZWZpbmVkKENPTkZJR19EUk1fUkFERU9O KSB8fAo+Pj4+Pj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRlZmluZWQoQ09ORklHX0RSTV9S QURFT05fTU9EVUxFKQo+Pj4+Pj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZmIuYwo+Pj4+Pj4+Pj4gIMKgwqDC oMKgwqDCoMKgwqDCoMKgIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2ZiLmMK Pj4+Pj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbmRleCAxMjA2MzAxLi5mNTdjMzU1IDEw MDY0NAo+Pj4+Pj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgIC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV9mYi5jCj4+Pj4+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqAg KysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2ZiLmMKPj4+Pj4+Pj4+ICDC oMKgwqDCoMKgwqDCoMKgwqDCoCBAQCAtMTM4LDYgKzEzOCw4IEBAIHN0YXRpYyBpbnQKPj4+Pj4+ Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhbWRncHVmYl9jcmVhdGVfcGlubmVkX29iamVjdChz dHJ1Y3QgYW1kZ3B1X2ZiZGV2ICpyZmJkZXYsCj4+Pj4+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKg wqAgwqAgwqAgwqAgwqAgbW9kZV9jbWQtPnBpdGNoZXNbMF0gPSBhbWRncHVfYWxpZ25fcGl0Y2go YWRldiwKPj4+Pj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtb2RlX2NtZC0+d2lkdGgsIGNw cCwKPj4+Pj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmYl90aWxlZCk7Cj4+Pj4+Pj4+PiAg wqDCoMKgwqDCoMKgwqDCoMKgwqAgwqAgwqAgwqAgwqAgZG9tYWluID0gYW1kZ3B1X2Rpc3BsYXlf ZnJhbWVidWZmZXJfZG9tYWlucyhhZGV2KTsKPj4+Pj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDC oCArwqAgwqAgwqAgwqBpZiAoZG9tYWluICYgQU1ER1BVX0dFTV9ET01BSU5fR1RUKQo+Pj4+Pj4+ Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgICvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoERSTV9ERUJV R19EUklWRVIoIlNjYXR0ZXIgZ2F0aGVyIGRpc3BsYXk6Cj4+Pj4+Pj4+PiAgwqDCoMKgwqDCoMKg wqDCoMKgwqAgZW5hYmxlZFxuIik7Cj4+Pj4+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqAgwqAg wqAgwqAgwqAgaGVpZ2h0ID0gQUxJR04obW9kZV9jbWQtPmhlaWdodCwgOCk7Cj4+Pj4+Pj4+PiAg wqDCoMKgwqDCoMKgwqDCoMKgwqAgwqAgwqAgwqAgwqAgc2l6ZSA9IG1vZGVfY21kLT5waXRjaGVz WzBdICogaGVpZ2h0Owo+Pj4+Pj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5jCj4+Pj4+ Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkv YW1kZ3B1X2RtL2FtZGdwdV9kbS5jCj4+Pj4+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaW5k ZXggNjhhYjMyNS4uN2U5ZjI0NyAxMDA2NDQKPj4+Pj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDC oCAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5j Cj4+Pj4+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKysrIGIvZHJpdmVycy9ncHUvZHJtL2Ft ZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uYwo+Pj4+Pj4+Pj4gIMKgwqDCoMKgwqDCoMKg wqDCoMKgIEBAIC0zMDc0LDcgKzMwNzQsOCBAQCBzdGF0aWMgaW50Cj4+Pj4+Pj4+PiAgwqDCoMKg wqDCoMKgwqDCoMKgwqAgZG1fcGxhbmVfaGVscGVyX3ByZXBhcmVfZmIoc3RydWN0IGRybV9wbGFu ZSAqcGxhbmUsCj4+Pj4+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgZG9tYWluID0gQU1ER1BVX0dFTV9ET01BSU5fVlJBTTsKPj4+Pj4+Pj4+ICDCoMKg wqDCoMKgwqDCoMKgwqDCoCDCoCDCoCDCoCDCoCByID0gYW1kZ3B1X2JvX3BpbihyYm8sIGRvbWFp biwgJmFmYi0+YWRkcmVzcyk7Cj4+Pj4+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLQo+Pj4+ Pj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgICvCoCDCoCDCoCDCoHJiby0+cHJlZmVycmVkX2Rv bWFpbnMgPSBkb21haW47Cj4+Pj4+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqAgK8KgIMKgIMKg IMKgcmJvLT5hbGxvd2VkX2RvbWFpbnMgPSBkb21haW47Cj4+Pj4+Pj4+PiAgwqDCoMKgwqDCoMKg wqDCoMKgwqAgwqAgwqAgwqAgwqAgYW1kZ3B1X2JvX3VucmVzZXJ2ZShyYm8pOwo+Pj4+Pj4+Pj4g IMKgwqDCoMKgwqDCoMKgwqDCoMKgIMKgIMKgIMKgIMKgIGlmICh1bmxpa2VseShyICE9IDApKSB7 Cj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+ICDCoMKgwqDCoMKgwqAgX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPj4+Pj4+Pj4+ICDCoMKgwqDCoMKg wqAgYW1kLWdmeCBtYWlsaW5nIGxpc3QKPj4+Pj4+Pj4+ICDCoMKgwqDCoMKgwqAgYW1kLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcgPG1haWx0bzphbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9y Zz4KPj4+Pj4+Pj4+ICDCoMKgwqDCoMKgwqAgaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4Cj4+Pj4+Pj4+PiAgwqDCoMKgwqDCoMKgIDxodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZng+Cj4+Pj4+Pj4+ Pgo+Pj4+Pj4+Pj4KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwo+IGFtZC1nZnggbWFpbGluZyBsaXN0Cj4gYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1n ZngKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmFtZC1n ZnggbWFpbGluZyBsaXN0CmFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdmeAo=