From mboxrd@z Thu Jan 1 00:00:00 1970 From: zhoucm1 Subject: Re: [PATCH 1/4] [RFC]drm: add syncobj timeline support v6 Date: Wed, 19 Sep 2018 17:00:30 +0800 Message-ID: <81cfecea-956a-dffe-aab0-182c123f7685@amd.com> References: <20180919042659.3769-1-david1.zhou@amd.com> <04e91247-387c-ed5d-0793-9eb1d37d12bd@amd.com> <392512eb-271d-3d16-263b-f2429dedfffc@amd.com> <9bdce2dd-2129-3ed9-56f0-db4b14005194@amd.com> <3ed55b7b-5a61-5001-e767-96039dc07bbe@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <3ed55b7b-5a61-5001-e767-96039dc07bbe-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: =?UTF-8?Q?Christian_K=c3=b6nig?= , "Zhou, David(ChunMing)" , "dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" Cc: Dave Airlie , "Rakos, Daniel" , "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" , Daniel Vetter CgpPbiAyMDE45bm0MDnmnIgxOeaXpSAxNjowNywgQ2hyaXN0aWFuIEvDtm5pZyB3cm90ZToKPiBB bSAxOS4wOS4yMDE4IHVtIDEwOjAzIHNjaHJpZWIgWmhvdSwgRGF2aWQoQ2h1bk1pbmcpOgo+Pgo+ Pj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0KPj4+IEZyb206IGFtZC1nZnggPGFtZC1nZngt Ym91bmNlc0BsaXN0cy5mcmVlZGVza3RvcC5vcmc+IE9uIEJlaGFsZiBPZgo+Pj4gQ2hyaXN0aWFu IEs/bmlnCj4+PiBTZW50OiBXZWRuZXNkYXksIFNlcHRlbWJlciAxOSwgMjAxOCAzOjQ1IFBNCj4+ PiBUbzogWmhvdSwgRGF2aWQoQ2h1bk1pbmcpIDxEYXZpZDEuWmhvdUBhbWQuY29tPjsgWmhvdSwK Pj4+IERhdmlkKENodW5NaW5nKSA8RGF2aWQxLlpob3VAYW1kLmNvbT47IGRyaS0KPj4+IGRldmVs QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+Pj4gQ2M6IERhdmUgQWlybGllIDxhaXJsaWVkQHJlZGhh dC5jb20+OyBSYWtvcywgRGFuaWVsCj4+PiA8RGFuaWVsLlJha29zQGFtZC5jb20+OyBEYW5pZWwg VmV0dGVyIDxkYW5pZWxAZmZ3bGwuY2g+OyBhbWQtCj4+PiBnZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCj4+PiBTdWJqZWN0OiBSZTogW1BBVENIIDEvNF0gW1JGQ11kcm06IGFkZCBzeW5jb2JqIHRp bWVsaW5lIHN1cHBvcnQgdjYKPj4+Cj4+PiBBbSAxOS4wOS4yMDE4IHVtIDA5OjMyIHNjaHJpZWIg emhvdWNtMToKPj4+Pgo+Pj4+IE9uIDIwMTjlubQwOeaciDE55pelIDE1OjE4LCBDaHJpc3RpYW4g S8O2bmlnIHdyb3RlOgo+Pj4+PiBBbSAxOS4wOS4yMDE4IHVtIDA2OjI2IHNjaHJpZWIgQ2h1bm1p bmcgWmhvdToKPj4+PiBbc25pcF0KPj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgICpmZW5jZSA9 IE5VTEw7Cj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkcm1fc3luY29ial9hZGRfY2FsbGJh Y2tfbG9ja2VkKHN5bmNvYmosIGNiLCBmdW5jKTsgQEAKPj4+Pj4+IC0xNjQsNiArMTc3LDE1MyBA QCB2b2lkIGRybV9zeW5jb2JqX3JlbW92ZV9jYWxsYmFjayhzdHJ1Y3QKPj4+Pj4+IGRybV9zeW5j b2JqICpzeW5jb2JqLAo+Pj4+Pj4gwqDCoMKgwqDCoMKgIHNwaW5fdW5sb2NrKCZzeW5jb2JqLT5s b2NrKTsKPj4+Pj4+IMKgwqAgfQo+Pj4+Pj4gwqDCoCArc3RhdGljIHZvaWQgZHJtX3N5bmNvYmpf dGltZWxpbmVfaW5pdChzdHJ1Y3QgZHJtX3N5bmNvYmoKPj4+Pj4+ICpzeW5jb2JqKQo+Pj4+PiBX ZSBzdGlsbCBoYXZlIF90aW1lbGluZV8gaW4gdGhlIG5hbWUgaGVyZS4KPj4+PiB0aGUgZnVuYyBp cyByZWxldmFudCB0byB0aW1lbGluZSBtZW1iZXJzLCBvciB3aGljaCBuYW1lIGlzIHByb3Blcj8K Pj4+IFllYWgsIGJ1dCB3ZSBub3cgdXNlIHRoZSB0aW1lbGluZSBpbXBsZW1lbnRhdGlvbiBmb3Ig dGhlIGluZGl2aWR1YWwgCj4+PiBzeW5jb2JqCj4+PiBhcyB3ZWxsLgo+Pj4KPj4+IE5vdCBhIGJp ZyBpc3N1ZSwgYnV0IEkgd291bGQganVzdCBuYW1lIGl0Cj4+PiBkcm1fc3luY29ial9pbml0KCkv ZHJtX3N5bmNvYmpfZmluaS4KPj4gVGhlcmUgaXMgYWxyZWFkeSBkcm1fc3luY29ial9pbml0L2Zp bmkgaW4gZHJtX3N5bmNib2ouYyAsIGFueSBvdGhlciAKPj4gbmFtZSBjYW4gYmUgc3VnZ2VzdGVk Pwo+Cj4gSHVpIHdoYXQ/IEkgYWN0dWFsbHkgY2hlY2tlZCB0aGF0IHRoZXJlIGlzIG5vIAo+IGRy bV9zeW5jb2JqX2luaXQoKS9kcm1fc3luY29ial9maW5pKCkgaW4gZHJtX3N5bmNvYmouYyBiZWZv cmUgCj4gc3VnZ2VzdGluZyBpdC4gQW0gSSBtaXNzaW5nIHNvbWV0aGluZz8KbWVzc2VkIHN5bmNv YmpfY3JlYXRlL2Rlc3Ryb3kgaW4gYnJhaW4gOigKCj4KPj4+Pj4+ICt7Cj4+Pj4+PiArwqDCoMKg IHNwaW5fbG9jaygmc3luY29iai0+bG9jayk7Cj4+Pj4+PiArwqDCoMKgIHN5bmNvYmotPnRpbWVs aW5lX2NvbnRleHQgPSBkbWFfZmVuY2VfY29udGV4dF9hbGxvYygxKTsKPj4+PiBbc25pcF0KPj4+ Pj4+ICt9Cj4+Pj4+PiArCj4+Pj4+PiAraW50IGRybV9zeW5jb2JqX2xvb2t1cF9mZW5jZShzdHJ1 Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmosIHU2NAo+Pj4+Pj4gK3BvaW50LAo+Pj4+Pj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGRtYV9mZW5jZSAqKmZlbmNlKSB7Cj4+Pj4+ PiArCj4+Pj4+PiArwqDCoMKgIHJldHVybiBkcm1fc3luY29ial9zZWFyY2hfZmVuY2Uoc3luY29i aiwgcG9pbnQsCj4+Pj4+PiArIERSTV9TWU5DT0JKX1dBSVRfRkxBR1NfV0FJVF9GT1JfU1VCTUlU LAo+Pj4+PiBJIHN0aWxsIGhhdmUgYSBiYWQgZmVlbGluZyBzZXR0aW5nIHRoYXQgZmxhZyBhcyBk ZWZhdWx0IGNhdXNlIGl0Cj4+Pj4+IG1pZ2h0IGNoYW5nZSB0aGUgYmVoYXZpb3IgZm9yIHRoZSBV QVBJLgo+Pj4+Pgo+Pj4+PiBNYXliZSBleHBvcnQgZHJtX3N5bmNvYmpfc2VhcmNoX2ZlbmNlIGRp cmVjdGx5PyBFLmcuIHdpdGggdGhlIGZsYWdzCj4+Pj4+IHBhcmFtZXRlci4KPj4+PiBwcmV2aW91 cyB2NSBpbmRlZWQgZG8gdGhpcywgeW91IGxldCBtZSB3cmFwIGl0LCBuZWVkIGNoYW5nZSBiYWNr Pwo+Pj4gTm8sIHRoZSBwcm9ibGVtIGlzIHRoYXQgZHJtX3N5bmNvYmpfZmluZF9mZW5jZSgpIGlz IHN0aWxsIHVzaW5nCj4+PiBkcm1fc3luY29ial9sb29rdXBfZmVuY2UoKSB3aGljaCBzZXRzIHRo ZSBmbGFnIGluc3RlYWQgb2YKPj4+IGRybV9zeW5jb2JqX3NlYXJjaF9mZW5jZSgpIHdpdGhvdXQg dGhlIGZsYWcuCj4+Pgo+Pj4gVGhhdCBjaGFuZ2VzIHRoZSBVQVBJIGJlaGF2aW9yIGJlY2F1c2Ug cHJldmlvdXNseSB3ZSB3b3VsZCBoYXZlIAo+Pj4gcmV0dXJuZWQKPj4+IGFuIGVycm9yIGNvZGUg YW5kIG5vdyB3ZSBibG9jayBmb3IgYSBmZW5jZSB0byBhcHBlYXIuCj4+Pgo+Pj4gU28gSSB0aGlu ayB0aGUgcmlnaHQgc29sdXRpb24gd291bGQgYmUgdG8gYWRkIHRoZSBmbGFncyBwYXJhbWV0ZXIg dG8KPj4+IGRybV9zeW5jb2JqX2ZpbmRfZmVuY2UoKSBhbmQgbGV0IHRoZSBkcml2ZXIgZGVjaWRl IGlmIHdlIG5lZWQgdG8gCj4+PiBibG9jayBvcgo+Pj4gZ2V0IC1FTk9FTlQuCj4+IEdvdCB5b3Vy IG1lYW5zLAo+PiBFeHBvcnRpbmcgZmxhZyBpbiBmdW5jIGlzIGVhc3ksCj4+IMKgIGJ1dCBkcml2 ZXIgZG9lc24ndCBwYXNzIGZsYWcsIHdoaWNoIGZsYWcgaXMgcHJvcGVyIGJ5IGRlZmF1bHQ/IFdl IAo+PiBzdGlsbCBuZWVkIHRvIGdpdmUgYSBkZWZhdWx0IGZsYWcgaW4gcGF0Y2gsIGRvbid0IHdl Pwo+Cj4gV2VsbCBwcm9wZXIgc29sdXRpb24gaXMgdG8ga2VlcCB0aGUgb2xkIGJlaGF2aW9yIGFz IGl0IGlzIGZvciBub3cuCj4KPiBTbyBwYXNzaW5nIDAgYXMgZmxhZyBieSBkZWZhdWx0IGFuZCBt YWtpbmcgc3VyZSB3ZSBnZXQgYSAtRU5PRU5UIGluIAo+IHRoYXQgY2FzZSBzb3VuZHMgbGlrZSB0 aGUgcmlnaHQgYXBwcm9hY2ggdG8gbWUuCj4KPiBBZGRpbmcgdGhlIERSTV9TWU5DT0JKX1dBSVRf RkxBR1NfV0FJVF9GT1JfU1VCTUlUIGZsYWcgY2FuIGhhcHBlbiB3aGVuIAo+IHRoZSBkcml2ZXIg c3RhcnRzIHRvIHByb3ZpZGUgYSBwcm9wZXIgcG9pbnQgYXMgd2VsbC4KU291bmRzIG1vcmUgZmxl eGlibGUuCgp2NyB3aWxsIGNvbWUgc29vbi4KCnRoYW5rcywKRGF2aWQgWmhvdQo+Cj4gQ2hyaXN0 aWFuLgo+Cj4+Cj4+IFRoYW5rcywKPj4gRGF2aWQgWmhvdQo+Pgo+Pj4gUmVnYXJkcywKPj4+IENo cmlzdGlhbi4KPj4+Cj4+Pj4gUmVnYXJkcywKPj4+PiBEYXZpZCBaaG91Cj4+Pj4+IFJlZ2FyZHMs Cj4+Pj4+IENocmlzdGlhbi4KPj4+Pj4KPj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBmZW5jZSk7Cj4+Pj4+PiArfQo+Pj4+Pj4gK0VYUE9SVF9TWU1CT0woZHJt X3N5bmNvYmpfbG9va3VwX2ZlbmNlKTsKPj4+Pj4+ICsKPj4+Pj4+IMKgwqAgLyoqCj4+Pj4+PiDC oMKgwqAgKiBkcm1fc3luY29ial9maW5kX2ZlbmNlIC0gbG9va3VwIGFuZCByZWZlcmVuY2UgdGhl IGZlbmNlIGluIGEKPj4+Pj4+IHN5bmMgb2JqZWN0Cj4+Pj4+PiDCoMKgwqAgKiBAZmlsZV9wcml2 YXRlOiBkcm0gZmlsZSBwcml2YXRlIHBvaW50ZXIgQEAgLTIyOCw3ICs0NDMsNyBAQAo+Pj4+Pj4g c3RhdGljIGludCBkcm1fc3luY29ial9hc3NpZ25fbnVsbF9oYW5kbGUoc3RydWN0Cj4+Pj4+PiBk cm1fc3luY29iaiAqc3luY29iaikKPj4+Pj4+IMKgwqDCoCAqIEBmZW5jZTogb3V0IHBhcmFtZXRl ciBmb3IgdGhlIGZlbmNlCj4+Pj4+PiDCoMKgwqAgKgo+Pj4+Pj4gwqDCoMKgICogVGhpcyBpcyBq dXN0IGEgY29udmVuaWVuY2UgZnVuY3Rpb24gdGhhdCBjb21iaW5lcwo+Pj4+Pj4gZHJtX3N5bmNv YmpfZmluZCgpIGFuZAo+Pj4+Pj4gLSAqIGRybV9zeW5jb2JqX2ZlbmNlX2dldCgpLgo+Pj4+Pj4g KyAqIGRybV9zeW5jb2JqX2xvb2t1cF9mZW5jZSgpLgo+Pj4+Pj4gwqDCoMKgICoKPj4+Pj4+IMKg wqDCoCAqIFJldHVybnMgMCBvbiBzdWNjZXNzIG9yIGEgbmVnYXRpdmUgZXJyb3IgdmFsdWUgb24g ZmFpbHVyZS4gT24KPj4+Pj4+IHN1Y2Nlc3MgQGZlbmNlCj4+Pj4+PiDCoMKgwqAgKiBjb250YWlu cyBhIHJlZmVyZW5jZSB0byB0aGUgZmVuY2UsIHdoaWNoIG11c3QgYmUgcmVsZWFzZWQgYnkKPj4+ Pj4+IGNhbGxpbmcgQEAgLTIzNiwxOCArNDUxLDExIEBAIHN0YXRpYyBpbnQKPj4+Pj4+IGRybV9z eW5jb2JqX2Fzc2lnbl9udWxsX2hhbmRsZShzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmopCj4+ Pj4+PiDCoMKgwqAgKi8KPj4+Pj4+IMKgwqAgaW50IGRybV9zeW5jb2JqX2ZpbmRfZmVuY2Uoc3Ry dWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUsCj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHUzMiBoYW5kbGUsIHU2NCBwb2ludCwKPj4+Pj4+IC3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBkbWFfZmVuY2UgKipmZW5jZSkgLXsKPj4+Pj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBkbWFfZmVuY2UgKipmZW5jZSkgewo+Pj4+ Pj4gwqDCoMKgwqDCoMKgIHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiA9IGRybV9zeW5jb2Jq X2ZpbmQoZmlsZV9wcml2YXRlLAo+Pj4+Pj4gaGFuZGxlKTsKPj4+Pj4+IC3CoMKgwqAgaW50IHJl dCA9IDA7Cj4+Pj4+PiAtCj4+Pj4+PiAtwqDCoMKgIGlmICghc3luY29iaikKPj4+Pj4+IC3CoMKg wqDCoMKgwqDCoCByZXR1cm4gLUVOT0VOVDsKPj4+Pj4+ICvCoMKgwqAgaW50IHJldDsKPj4+Pj4+ IMKgwqAgLcKgwqDCoCAqZmVuY2UgPSBkcm1fc3luY29ial9mZW5jZV9nZXQoc3luY29iaik7Cj4+ Pj4+PiAtwqDCoMKgIGlmICghKmZlbmNlKSB7Cj4+Pj4+PiAtwqDCoMKgwqDCoMKgwqAgcmV0ID0g LUVJTlZBTDsKPj4+Pj4+IC3CoMKgwqAgfQo+Pj4+Pj4gK8KgwqDCoCByZXQgPSBkcm1fc3luY29i al9sb29rdXBfZmVuY2Uoc3luY29iaiwgcG9pbnQsIGZlbmNlKTsKPj4+Pj4+IMKgwqDCoMKgwqDC oCBkcm1fc3luY29ial9wdXQoc3luY29iaik7Cj4+Pj4+PiDCoMKgwqDCoMKgwqAgcmV0dXJuIHJl dDsKPj4+Pj4+IMKgwqAgfQo+Pj4+Pj4gQEAgLTI2NCw3ICs0NzIsNyBAQCB2b2lkIGRybV9zeW5j b2JqX2ZyZWUoc3RydWN0IGtyZWYgKmtyZWYpCj4+Pj4+PiDCoMKgwqDCoMKgwqAgc3RydWN0IGRy bV9zeW5jb2JqICpzeW5jb2JqID0gY29udGFpbmVyX29mKGtyZWYsCj4+Pj4+PiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBk cm1fc3luY29iaiwKPj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgcmVmY291bnQpOwo+Pj4+Pj4gLcKgwqDCoCBkcm1fc3luY29i al9yZXBsYWNlX2ZlbmNlKHN5bmNvYmosIDAsIE5VTEwpOwo+Pj4+Pj4gK8KgwqDCoCBkcm1fc3lu Y29ial90aW1lbGluZV9maW5pKHN5bmNvYmopOwo+Pj4+Pj4gwqDCoMKgwqDCoMKgIGtmcmVlKHN5 bmNvYmopOwo+Pj4+Pj4gwqDCoCB9Cj4+Pj4+PiDCoMKgIEVYUE9SVF9TWU1CT0woZHJtX3N5bmNv YmpfZnJlZSk7Cj4+Pj4+PiBAQCAtMjk0LDYgKzUwMiwxMSBAQCBpbnQgZHJtX3N5bmNvYmpfY3Jl YXRlKHN0cnVjdCBkcm1fc3luY29iago+Pj4+Pj4gKipvdXRfc3luY29iaiwgdWludDMyX3QgZmxh Z3MsCj4+Pj4+PiDCoMKgwqDCoMKgwqAga3JlZl9pbml0KCZzeW5jb2JqLT5yZWZjb3VudCk7Cj4+ Pj4+PiDCoMKgwqDCoMKgwqAgSU5JVF9MSVNUX0hFQUQoJnN5bmNvYmotPmNiX2xpc3QpOwo+Pj4+ Pj4gwqDCoMKgwqDCoMKgIHNwaW5fbG9ja19pbml0KCZzeW5jb2JqLT5sb2NrKTsKPj4+Pj4+ICvC oMKgwqAgaWYgKGZsYWdzICYgRFJNX1NZTkNPQkpfQ1JFQVRFX1RZUEVfVElNRUxJTkUpCj4+Pj4+ PiArwqDCoMKgwqDCoMKgwqAgc3luY29iai0+dHlwZSA9IERSTV9TWU5DT0JKX1RZUEVfVElNRUxJ TkU7Cj4+Pj4+PiArwqDCoMKgIGVsc2UKPj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBzeW5jb2JqLT50 eXBlID0gRFJNX1NZTkNPQkpfVFlQRV9JTkRJVklEVUFMOwo+Pj4+Pj4gK8KgwqDCoCBkcm1fc3lu Y29ial90aW1lbGluZV9pbml0KHN5bmNvYmopOwo+Pj4+Pj4gwqDCoCDCoMKgwqDCoMKgIGlmIChm bGFncyAmIERSTV9TWU5DT0JKX0NSRUFURV9TSUdOQUxFRCkgewo+Pj4+Pj4gwqDCoMKgwqDCoMKg wqDCoMKgwqAgcmV0ID0gZHJtX3N5bmNvYmpfYXNzaWduX251bGxfaGFuZGxlKHN5bmNvYmopOwo+ Pj4+Pj4gQEAgLTU3Niw3ICs3ODksOCBAQCBkcm1fc3luY29ial9jcmVhdGVfaW9jdGwoc3RydWN0 IGRybV9kZXZpY2UKPj4+ICpkZXYsCj4+Pj4+PiB2b2lkICpkYXRhLAo+Pj4+Pj4gwqDCoMKgwqDC oMKgwqDCoMKgwqAgcmV0dXJuIC1FTk9ERVY7Cj4+Pj4+PiDCoMKgIMKgwqDCoMKgwqAgLyogbm8g dmFsaWQgZmxhZ3MgeWV0ICovCj4+Pj4+PiAtwqDCoMKgIGlmIChhcmdzLT5mbGFncyAmIH5EUk1f U1lOQ09CSl9DUkVBVEVfU0lHTkFMRUQpCj4+Pj4+PiArwqDCoMKgIGlmIChhcmdzLT5mbGFncyAm IH4oRFJNX1NZTkNPQkpfQ1JFQVRFX1NJR05BTEVEIHwKPj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgRFJNX1NZTkNPQkpfQ1JFQVRFX1RZUEVfVElNRUxJTkUpKQo+Pj4+Pj4g wqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FSU5WQUw7Cj4+Pj4+PiDCoMKgIMKgwqDCoMKg wqAgcmV0dXJuIGRybV9zeW5jb2JqX2NyZWF0ZV9hc19oYW5kbGUoZmlsZV9wcml2YXRlLAo+Pj4+ Pj4gQEAgLTY2OSw5ICs4ODMsOCBAQCBzdGF0aWMgdm9pZCBzeW5jb2JqX3dhaXRfc3luY29ial9m dW5jKHN0cnVjdAo+Pj4+Pj4gZHJtX3N5bmNvYmogKnN5bmNvYmosCj4+Pj4+PiDCoMKgwqDCoMKg wqAgc3RydWN0IHN5bmNvYmpfd2FpdF9lbnRyeSAqd2FpdCA9Cj4+Pj4+PiDCoMKgwqDCoMKgwqDC oMKgwqDCoCBjb250YWluZXJfb2YoY2IsIHN0cnVjdCBzeW5jb2JqX3dhaXRfZW50cnksIHN5bmNv YmpfY2IpOwo+Pj4+Pj4gwqDCoCAtwqDCoMKgIC8qIFRoaXMgaGFwcGVucyBpbnNpZGUgdGhlIHN5 bmNvYmogbG9jayAqLwo+Pj4+Pj4gLcKgwqDCoCB3YWl0LT5mZW5jZSA9Cj4+Pj4+PiBkbWFfZmVu Y2VfZ2V0KHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQoc3luY29iai0+ZmVuY2UsCj4+Pj4+PiAt IGxvY2tkZXBfaXNfaGVsZCgmc3luY29iai0+bG9jaykpKTsKPj4+Pj4+ICvCoMKgwqAgZHJtX3N5 bmNvYmpfc2VhcmNoX2ZlbmNlKHN5bmNvYmosIDAsIDAsICZ3YWl0LT5mZW5jZSk7Cj4+Pj4+PiAr Cj4+Pj4+PiDCoMKgwqDCoMKgwqAgd2FrZV91cF9wcm9jZXNzKHdhaXQtPnRhc2spOwo+Pj4+Pj4g wqDCoCB9Cj4+Pj4+PiDCoMKgIEBAIC02OTgsNyArOTExLDggQEAgc3RhdGljIHNpZ25lZCBsb25n Cj4+Pj4+PiBkcm1fc3luY29ial9hcnJheV93YWl0X3RpbWVvdXQoc3RydWN0IGRybV9zeW5jb2Jq ICoqc3luY29ianMsCj4+Pj4+PiDCoMKgwqDCoMKgwqAgc2lnbmFsZWRfY291bnQgPSAwOwo+Pj4+ Pj4gwqDCoMKgwqDCoMKgIGZvciAoaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7Cj4+Pj4+PiDCoMKg wqDCoMKgwqDCoMKgwqDCoCBlbnRyaWVzW2ldLnRhc2sgPSBjdXJyZW50Owo+Pj4+Pj4gLcKgwqDC oMKgwqDCoMKgIGVudHJpZXNbaV0uZmVuY2UgPSBkcm1fc3luY29ial9mZW5jZV9nZXQoc3luY29i anNbaV0pOwo+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldCA9IGRybV9zeW5jb2JqX3NlYXJjaF9m ZW5jZShzeW5jb2Jqc1tpXSwgMCwgMCwKPj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICZlbnRyaWVzW2ldLmZlbmNlKTsKPj4+Pj4+IMKg wqDCoMKgwqDCoMKgwqDCoMKgIGlmICghZW50cmllc1tpXS5mZW5jZSkgewo+Pj4+Pj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoZmxhZ3MgJiBEUk1fU1lOQ09CSl9XQUlUX0ZMQUdT X1dBSVRfRk9SX1NVQk1JVCkgewo+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGNvbnRpbnVlOwo+Pj4+Pj4gQEAgLTk3MCwxMiArMTE4NCwxOSBAQCBkcm1fc3luY29i al9yZXNldF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZQo+Pj4+Pj4gKmRldiwgdm9pZCAqZGF0YSwK Pj4+Pj4+IMKgwqDCoMKgwqDCoCBpZiAocmV0IDwgMCkKPj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDC oMKgIHJldHVybiByZXQ7Cj4+Pj4+PiDCoMKgIC3CoMKgwqAgZm9yIChpID0gMDsgaSA8IGFyZ3Mt PmNvdW50X2hhbmRsZXM7IGkrKykKPj4+Pj4+IC3CoMKgwqDCoMKgwqDCoCBkcm1fc3luY29ial9y ZXBsYWNlX2ZlbmNlKHN5bmNvYmpzW2ldLCAwLCBOVUxMKTsKPj4+Pj4+IC0KPj4+Pj4+ICvCoMKg wqAgZm9yIChpID0gMDsgaSA8IGFyZ3MtPmNvdW50X2hhbmRsZXM7IGkrKykgewo+Pj4+Pj4gK8Kg wqDCoMKgwqDCoMKgIGlmIChzeW5jb2Jqc1tpXS0+dHlwZSA9PSBEUk1fU1lOQ09CSl9UWVBFX1RJ TUVMSU5FKSB7Cj4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBEUk1fRVJST1IoInRpbWVs aW5lIHN5bmNvYmogY2Fubm90IHJlc2V0IVxuIik7Cj4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCByZXQgPSAtRUlOVkFMOwo+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBv dXQ7Cj4+Pj4+PiArwqDCoMKgwqDCoMKgwqAgfQo+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGRybV9z eW5jb2JqX3RpbWVsaW5lX2Zpbmkoc3luY29ianNbaV0pOwo+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKg IGRybV9zeW5jb2JqX3RpbWVsaW5lX2luaXQoc3luY29ianNbaV0pOwo+Pj4+Pj4gK8KgwqDCoCB9 Cj4+Pj4+PiArb3V0Ogo+Pj4+Pj4gwqDCoMKgwqDCoMKgIGRybV9zeW5jb2JqX2FycmF5X2ZyZWUo c3luY29ianMsIGFyZ3MtPmNvdW50X2hhbmRsZXMpOwo+Pj4+Pj4gwqDCoCAtwqDCoMKgIHJldHVy biAwOwo+Pj4+Pj4gK8KgwqDCoCByZXR1cm4gcmV0Owo+Pj4+Pj4gwqDCoCB9Cj4+Pj4+PiDCoMKg IMKgIGludAo+Pj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2V4ZWNidWZmZXIuYwo+Pj4+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVj YnVmZmVyLmMKPj4+Pj4+IGluZGV4IDBhOGQyZDY0ZjM4MC4uYTA0MGZhMzI4MWRmIDEwMDY0NAo+ Pj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCj4+ Pj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKPj4+ Pj4+IEBAIC0yMTM3LDcgKzIxMzcsNyBAQCBhd2FpdF9mZW5jZV9hcnJheShzdHJ1Y3QgaTkxNV9l eGVjYnVmZmVyICplYiwKPj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmICghKGZsYWdzICYg STkxNV9FWEVDX0ZFTkNFX1dBSVQpKQo+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBjb250aW51ZTsKPj4+Pj4+IMKgwqAgLcKgwqDCoMKgwqDCoMKgIGZlbmNlID0gZHJtX3N5bmNv YmpfZmVuY2VfZ2V0KHN5bmNvYmopOwo+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGRybV9zeW5jb2Jq X2xvb2t1cF9mZW5jZShzeW5jb2JqLCAwLCAmZmVuY2UpOwo+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDC oMKgwqAgaWYgKCFmZW5jZSkKPj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0 dXJuIC1FSU5WQUw7Cj4+Pj4+PiDCoMKgIGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fc3lu Y29iai5oIAo+Pj4+Pj4gYi9pbmNsdWRlL2RybS9kcm1fc3luY29iai5oCj4+Pj4+PiBpbmRleCA0 MjU0MzJiODVhODcuLjZkYWM0NzlmZWRmZSAxMDA2NDQKPj4+Pj4+IC0tLSBhL2luY2x1ZGUvZHJt L2RybV9zeW5jb2JqLmgKPj4+Pj4+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9zeW5jb2JqLmgKPj4+ Pj4+IEBAIC0zMCw2ICszMCwxMSBAQAo+Pj4+Pj4gwqDCoCDCoCBzdHJ1Y3QgZHJtX3N5bmNvYmpf Y2I7Cj4+Pj4+PiDCoMKgICtlbnVtIGRybV9zeW5jb2JqX3R5cGUgewo+Pj4+Pj4gK8KgwqDCoCBE Uk1fU1lOQ09CSl9UWVBFX0lORElWSURVQUwsCj4+Pj4+PiArwqDCoMKgIERSTV9TWU5DT0JKX1RZ UEVfVElNRUxJTkUKPj4+Pj4+ICt9Owo+Pj4+Pj4gKwo+Pj4+Pj4gwqDCoCAvKioKPj4+Pj4+IMKg wqDCoCAqIHN0cnVjdCBkcm1fc3luY29iaiAtIHN5bmMgb2JqZWN0Lgo+Pj4+Pj4gwqDCoMKgICoK Pj4+Pj4+IEBAIC00MSwxOSArNDYsMzYgQEAgc3RydWN0IGRybV9zeW5jb2JqIHsKPj4+Pj4+IMKg wqDCoMKgwqDCoMKgICovCj4+Pj4+PiDCoMKgwqDCoMKgwqAgc3RydWN0IGtyZWYgcmVmY291bnQ7 Cj4+Pj4+PiDCoMKgwqDCoMKgwqAgLyoqCj4+Pj4+PiAtwqDCoMKgwqAgKiBAZmVuY2U6Cj4+Pj4+ PiAtwqDCoMKgwqAgKiBOVUxMIG9yIGEgcG9pbnRlciB0byB0aGUgZmVuY2UgYm91bmQgdG8gdGhp cyBvYmplY3QuCj4+Pj4+PiAtwqDCoMKgwqAgKgo+Pj4+Pj4gLcKgwqDCoMKgICogVGhpcyBmaWVs ZCBzaG91bGQgbm90IGJlIHVzZWQgZGlyZWN0bHkuIFVzZQo+Pj4+Pj4gZHJtX3N5bmNvYmpfZmVu Y2VfZ2V0KCkKPj4+Pj4+IC3CoMKgwqDCoCAqIGFuZCBkcm1fc3luY29ial9yZXBsYWNlX2ZlbmNl KCkgaW5zdGVhZC4KPj4+Pj4+ICvCoMKgwqDCoCAqIEB0eXBlOiBpbmRpY2F0ZSBzeW5jb2JqIHR5 cGUKPj4+Pj4+ICvCoMKgwqDCoCAqLwo+Pj4+Pj4gK8KgwqDCoCBlbnVtIGRybV9zeW5jb2JqX3R5 cGUgdHlwZTsKPj4+Pj4+ICvCoMKgwqAgLyoqCj4+Pj4+PiArwqDCoMKgwqAgKiBAd3E6IHdhaXQg c2lnbmFsIG9wZXJhdGlvbiB3b3JrIHF1ZXVlCj4+Pj4+PiArwqDCoMKgwqAgKi8KPj4+Pj4+ICvC oMKgwqAgd2FpdF9xdWV1ZV9oZWFkX3TCoMKgwqAgd3E7Cj4+Pj4+PiArwqDCoMKgIC8qKgo+Pj4+ Pj4gK8KgwqDCoMKgICogQHRpbWVsaW5lX2NvbnRleHQ6IGZlbmNlIGNvbnRleHQgdXNlZCBieSB0 aW1lbGluZQo+Pj4+Pj4gwqDCoMKgwqDCoMKgwqAgKi8KPj4+Pj4+IC3CoMKgwqAgc3RydWN0IGRt YV9mZW5jZSBfX3JjdSAqZmVuY2U7Cj4+Pj4+PiArwqDCoMKgIHU2NCB0aW1lbGluZV9jb250ZXh0 Owo+Pj4+Pj4gwqDCoMKgwqDCoMKgIC8qKgo+Pj4+Pj4gLcKgwqDCoMKgICogQGNiX2xpc3Q6IExp c3Qgb2YgY2FsbGJhY2tzIHRvIGNhbGwgd2hlbiB0aGUgJmZlbmNlIGdldHMKPj4+Pj4+IHJlcGxh Y2VkLgo+Pj4+Pj4gK8KgwqDCoMKgICogQHRpbWVsaW5lOiBzeW5jb2JqIHRpbWVsaW5lIHZhbHVl LCB3aGljaCBpbmRpY2F0ZXMgcG9pbnQgaXMKPj4+Pj4+IHNpZ25hbGVkLgo+Pj4+Pj4gwqDCoMKg wqDCoMKgwqAgKi8KPj4+Pj4+ICvCoMKgwqAgdTY0IHRpbWVsaW5lOwo+Pj4+Pj4gK8KgwqDCoCAv KioKPj4+Pj4+ICvCoMKgwqDCoCAqIEBzaWduYWxfcG9pbnQ6IHdoaWNoIGluZGljYXRlcyB0aGUg bGF0ZXN0IHNpZ25hbGVyIHBvaW50Lgo+Pj4+Pj4gK8KgwqDCoMKgICovCj4+Pj4+PiArwqDCoMKg IHU2NCBzaWduYWxfcG9pbnQ7Cj4+Pj4+PiArwqDCoMKgIC8qKgo+Pj4+Pj4gK8KgwqDCoMKgICog QHNpZ25hbF9wdF9saXN0OiBzaWduYWxlciBwb2ludCBsaXN0Lgo+Pj4+Pj4gK8KgwqDCoMKgICov Cj4+Pj4+PiArwqDCoMKgIHN0cnVjdCBsaXN0X2hlYWQgc2lnbmFsX3B0X2xpc3Q7Cj4+Pj4+PiAr Cj4+Pj4+PiArwqDCoMKgIC8qKgo+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqAgKiBAY2JfbGlzdDog TGlzdCBvZiBjYWxsYmFja3MgdG8gY2FsbCB3aGVuIHRoZSAmZmVuY2UgZ2V0cwo+Pj4+Pj4gcmVw bGFjZWQuCj4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoCAqLwo+Pj4+Pj4gwqDCoMKgwqDCoMKgIHN0 cnVjdCBsaXN0X2hlYWQgY2JfbGlzdDsKPj4+Pj4+IMKgwqDCoMKgwqDCoCAvKioKPj4+Pj4+IC3C oMKgwqDCoCAqIEBsb2NrOiBQcm90ZWN0cyAmY2JfbGlzdCBhbmQgd3JpdGUtbG9ja3MgJmZlbmNl Lgo+Pj4+Pj4gK8KgwqDCoMKgICogQGxvY2s6IFByb3RlY3RzIHN5bmNvYmogbGlzdCBhbmQgd3Jp dGUtbG9ja3MgJmZlbmNlLgo+Pj4+Pj4gwqDCoMKgwqDCoMKgwqAgKi8KPj4+Pj4+IMKgwqDCoMKg wqDCoCBzcGlubG9ja190IGxvY2s7Cj4+Pj4+PiDCoMKgwqDCoMKgwqAgLyoqCj4+Pj4+PiBAQCAt NjgsNyArOTAsNyBAQCB0eXBlZGVmIHZvaWQgKCpkcm1fc3luY29ial9mdW5jX3QpKHN0cnVjdAo+ Pj4+Pj4gZHJtX3N5bmNvYmogKnN5bmNvYmosCj4+Pj4+PiDCoMKgIC8qKgo+Pj4+Pj4gwqDCoMKg ICogc3RydWN0IGRybV9zeW5jb2JqX2NiIC0gY2FsbGJhY2sgZm9yIGRybV9zeW5jb2JqX2FkZF9j YWxsYmFjawo+Pj4+Pj4gwqDCoMKgICogQG5vZGU6IHVzZWQgYnkgZHJtX3N5bmNvYl9hZGRfY2Fs bGJhY2sgdG8gYXBwZW5kIHRoaXMgCj4+Pj4+PiBzdHJ1Y3QgdG8KPj4+Pj4+IC0gKsKgwqDCoMKg wqAgJmRybV9zeW5jb2JqLmNiX2xpc3QKPj4+Pj4+ICsgKsKgwqDCoMKgwqDCoCAmZHJtX3N5bmNv YmouY2JfbGlzdAo+Pj4+Pj4gwqDCoMKgICogQGZ1bmM6IGRybV9zeW5jb2JqX2Z1bmNfdCB0byBj YWxsCj4+Pj4+PiDCoMKgwqAgKgo+Pj4+Pj4gwqDCoMKgICogVGhpcyBzdHJ1Y3Qgd2lsbCBiZSBp bml0aWFsaXplZCBieSBkcm1fc3luY29ial9hZGRfY2FsbGJhY2ssCj4+Pj4+PiBhZGRpdGlvbmFs IEBAIC0xMDYsMjkgKzEyOCw2IEBAIGRybV9zeW5jb2JqX3B1dChzdHJ1Y3QgZHJtX3N5bmNvYmoK Pj4+Pj4+ICpvYmopCj4+Pj4+PiDCoMKgwqDCoMKgwqAga3JlZl9wdXQoJm9iai0+cmVmY291bnQs IGRybV9zeW5jb2JqX2ZyZWUpOwo+Pj4+Pj4gwqDCoCB9Cj4+Pj4+PiDCoMKgIC0vKioKPj4+Pj4+ IC0gKiBkcm1fc3luY29ial9mZW5jZV9nZXQgLSBnZXQgYSByZWZlcmVuY2UgdG8gYSBmZW5jZSBp biBhIHN5bmMKPj4+Pj4+IG9iamVjdAo+Pj4+Pj4gLSAqIEBzeW5jb2JqOiBzeW5jIG9iamVjdC4K Pj4+Pj4+IC0gKgo+Pj4+Pj4gLSAqIFRoaXMgYWNxdWlyZXMgYWRkaXRpb25hbCByZWZlcmVuY2Ug dG8gJmRybV9zeW5jb2JqLmZlbmNlCj4+Pj4+PiBjb250YWluZWQgaW4gQG9iaiwKPj4+Pj4+IC0g KiBpZiBub3QgTlVMTC4gSXQgaXMgaWxsZWdhbCB0byBjYWxsIHRoaXMgd2l0aG91dCBhbHJlYWR5 IGhvbGRpbmcKPj4+Pj4+IGEgcmVmZXJlbmNlLgo+Pj4+Pj4gLSAqIE5vIGxvY2tzIHJlcXVpcmVk Lgo+Pj4+Pj4gLSAqCj4+Pj4+PiAtICogUmV0dXJuczoKPj4+Pj4+IC0gKiBFaXRoZXIgdGhlIGZl bmNlIG9mIEBvYmogb3IgTlVMTCBpZiB0aGVyZSdzIG5vbmUuCj4+Pj4+PiAtICovCj4+Pj4+PiAt c3RhdGljIGlubGluZSBzdHJ1Y3QgZG1hX2ZlbmNlICoKPj4+Pj4+IC1kcm1fc3luY29ial9mZW5j ZV9nZXQoc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqKSAtewo+Pj4+Pj4gLcKgwqDCoCBzdHJ1 Y3QgZG1hX2ZlbmNlICpmZW5jZTsKPj4+Pj4+IC0KPj4+Pj4+IC3CoMKgwqAgcmN1X3JlYWRfbG9j aygpOwo+Pj4+Pj4gLcKgwqDCoCBmZW5jZSA9IGRtYV9mZW5jZV9nZXRfcmN1X3NhZmUoJnN5bmNv YmotPmZlbmNlKTsKPj4+Pj4+IC3CoMKgwqAgcmN1X3JlYWRfdW5sb2NrKCk7Cj4+Pj4+PiAtCj4+ Pj4+PiAtwqDCoMKgIHJldHVybiBmZW5jZTsKPj4+Pj4+IC19Cj4+Pj4+PiAtCj4+Pj4+PiDCoMKg IHN0cnVjdCBkcm1fc3luY29iaiAqZHJtX3N5bmNvYmpfZmluZChzdHJ1Y3QgZHJtX2ZpbGUKPj4+ Pj4+ICpmaWxlX3ByaXZhdGUsCj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHUzMiBoYW5kbGUpOwo+Pj4+Pj4gwqDCoCB2b2lkIGRybV9zeW5jb2Jq X3JlcGxhY2VfZmVuY2Uoc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqLCB1NjQKPj4+Pj4+IHBv aW50LCBAQCAtMTQyLDUgKzE0MSw3IEBAIGludCBkcm1fc3luY29ial9jcmVhdGUoc3RydWN0Cj4+ PiBkcm1fc3luY29iago+Pj4+Pj4gKipvdXRfc3luY29iaiwgdWludDMyX3QgZmxhZ3MsCj4+Pj4+ PiDCoMKgIGludCBkcm1fc3luY29ial9nZXRfaGFuZGxlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9w cml2YXRlLAo+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3Qg ZHJtX3N5bmNvYmogKnN5bmNvYmosIHUzMiAqaGFuZGxlKTsKPj4+Pj4+IMKgwqAgaW50IGRybV9z eW5jb2JqX2dldF9mZChzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmosIGludCAqcF9mZCk7Cj4+ Pj4+PiAraW50IGRybV9zeW5jb2JqX2xvb2t1cF9mZW5jZShzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5 bmNvYmosIHU2NAo+Pj4+Pj4gK3BvaW50LAo+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHN0cnVjdCBkbWFfZmVuY2UgKipmZW5jZSk7Cj4+Pj4+PiDCoMKgIMKgICNlbmRp Zgo+Pj4+Pj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9kcm0vZHJtLmggYi9pbmNsdWRlL3Vh cGkvZHJtL2RybS5oIGluZGV4Cj4+Pj4+PiAzMDBmMzM2NjMzZjIuLmNlYmRiMjU0MWViNyAxMDA2 NDQKPj4+Pj4+IC0tLSBhL2luY2x1ZGUvdWFwaS9kcm0vZHJtLmgKPj4+Pj4+ICsrKyBiL2luY2x1 ZGUvdWFwaS9kcm0vZHJtLmgKPj4+Pj4+IEBAIC03MTcsNiArNzE3LDcgQEAgc3RydWN0IGRybV9w cmltZV9oYW5kbGUgewo+Pj4+Pj4gwqDCoCBzdHJ1Y3QgZHJtX3N5bmNvYmpfY3JlYXRlIHsKPj4+ Pj4+IMKgwqDCoMKgwqDCoCBfX3UzMiBoYW5kbGU7Cj4+Pj4+PiDCoMKgICNkZWZpbmUgRFJNX1NZ TkNPQkpfQ1JFQVRFX1NJR05BTEVEICgxIDw8IDApCj4+Pj4+PiArI2RlZmluZSBEUk1fU1lOQ09C Sl9DUkVBVEVfVFlQRV9USU1FTElORSAoMSA8PCAxKQo+Pj4+Pj4gwqDCoMKgwqDCoMKgIF9fdTMy IGZsYWdzOwo+Pj4+Pj4gwqDCoCB9Owo+Pj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KPj4+IGFtZC1nZnggbWFpbGluZyBsaXN0Cj4+PiBhbWQtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwo+Pj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9hbWQtZ2Z4Cj4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFtZC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v YW1kLWdmeAo=