From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrey Grodzovsky Subject: Re: [PATCH 2/2] drm/amdgpu: cleanup VCN IB generation Date: Fri, 9 Feb 2018 07:38:26 -0500 Message-ID: <09b7619c-b585-352b-e976-7c8b8a907506@amd.com> References: <20180207194822.7878-1-christian.koenig@amd.com> <20180207194822.7878-2-christian.koenig@amd.com> <839e2b57-edf4-d389-56ab-1a97dd84c832@amd.com> <6262040a-ef05-bda4-904e-d8a5954239bc@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <6262040a-ef05-bda4-904e-d8a5954239bc-Re5JQEeQqe8AvxtiuMwx3w@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: christian.koenig-5C7GfCeVMHo@public.gmane.org, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org CgpPbiAwMi8wOS8yMDE4IDA3OjMxIEFNLCBDaHJpc3RpYW4gS8O2bmlnIHdyb3RlOgo+IEFtIDA5 LjAyLjIwMTggdW0gMTM6MjAgc2NocmllYiBBbmRyZXkgR3JvZHpvdnNreToKPj4KPj4KPj4gT24g MDIvMDcvMjAxOCAwMjo0OCBQTSwgQ2hyaXN0aWFuIEvDtm5pZyB3cm90ZToKPj4+IFN0YXJ0IHRv IHVzZSBhbWRncHVfYm9fY3JlYXRlX3Jlc2VydmVkLgo+Pj4KPj4+IFNpZ25lZC1vZmYtYnk6IENo cmlzdGlhbiBLw7ZuaWcgPGNocmlzdGlhbi5rb2VuaWdAYW1kLmNvbT4KPj4+IC0tLQo+Pj4gwqAg ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Zjbi5jIHwgOTEgCj4+PiArKysrKysr Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPj4+IMKgIDEgZmlsZSBjaGFuZ2VkLCAyMSBpbnNl cnRpb25zKCspLCA3MCBkZWxldGlvbnMoLSkKPj4+Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Zjbi5jIAo+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfdmNuLmMKPj4+IGluZGV4IGU4NmQwYjJlOWI3YS4uOTdiZGRlOWE3Mzll IDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Zjbi5j Cj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmNuLmMKPj4+IEBA IC0yNzAsNDMgKzI3MCwyOCBAQCBpbnQgYW1kZ3B1X3Zjbl9kZWNfcmluZ190ZXN0X3Jpbmcoc3Ry dWN0IAo+Pj4gYW1kZ3B1X3JpbmcgKnJpbmcpCj4+PiDCoMKgwqDCoMKgIHJldHVybiByOwo+Pj4g wqAgfQo+Pj4gwqAgLXN0YXRpYyBpbnQgYW1kZ3B1X3Zjbl9kZWNfc2VuZF9tc2coc3RydWN0IGFt ZGdwdV9yaW5nICpyaW5nLCAKPj4+IHN0cnVjdCBhbWRncHVfYm8gKmJvLAo+Pj4gLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBib29sIGRpcmVjdCwgc3RydWN0IGRtYV9mZW5j ZSAqKmZlbmNlKQo+Pj4gK3N0YXRpYyBpbnQgYW1kZ3B1X3Zjbl9kZWNfc2VuZF9tc2coc3RydWN0 IGFtZGdwdV9yaW5nICpyaW5nLAo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBzdHJ1Y3QgYW1kZ3B1X2JvICpibywgYm9vbCBkaXJlY3QsCj4+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBkbWFfZmVuY2UgKipmZW5jZSkKPj4+IMKg IHsKPj4+IC3CoMKgwqAgc3RydWN0IHR0bV9vcGVyYXRpb25fY3R4IGN0eCA9IHsgdHJ1ZSwgZmFs c2UgfTsKPj4+IC3CoMKgwqAgc3RydWN0IHR0bV92YWxpZGF0ZV9idWZmZXIgdHY7Cj4+PiAtwqDC oMKgIHN0cnVjdCB3d19hY3F1aXJlX2N0eCB0aWNrZXQ7Cj4+PiAtwqDCoMKgIHN0cnVjdCBsaXN0 X2hlYWQgaGVhZDsKPj4+ICvCoMKgwqAgc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSByaW5n LT5hZGV2Owo+Pj4gK8KgwqDCoCBzdHJ1Y3QgZG1hX2ZlbmNlICpmID0gTlVMTDsKPj4+IMKgwqDC oMKgwqAgc3RydWN0IGFtZGdwdV9qb2IgKmpvYjsKPj4+IMKgwqDCoMKgwqAgc3RydWN0IGFtZGdw dV9pYiAqaWI7Cj4+PiAtwqDCoMKgIHN0cnVjdCBkbWFfZmVuY2UgKmYgPSBOVUxMOwo+Pj4gLcKg wqDCoCBzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IHJpbmctPmFkZXY7Cj4+PiDCoMKgwqDC oMKgIHVpbnQ2NF90IGFkZHI7Cj4+PiDCoMKgwqDCoMKgIGludCBpLCByOwo+Pj4gwqAgLcKgwqDC oCBtZW1zZXQoJnR2LCAwLCBzaXplb2YodHYpKTsKPj4+IC3CoMKgwqAgdHYuYm8gPSAmYm8tPnRi bzsKPj4+IC0KPj4+IC3CoMKgwqAgSU5JVF9MSVNUX0hFQUQoJmhlYWQpOwo+Pj4gLcKgwqDCoCBs aXN0X2FkZCgmdHYuaGVhZCwgJmhlYWQpOwo+Pj4gLQo+Pj4gLcKgwqDCoCByID0gdHRtX2V1X3Jl c2VydmVfYnVmZmVycygmdGlja2V0LCAmaGVhZCwgdHJ1ZSwgTlVMTCk7Cj4+PiAtwqDCoMKgIGlm IChyKQo+Pj4gLcKgwqDCoMKgwqDCoMKgIHJldHVybiByOwo+Pj4gLQo+Pj4gLcKgwqDCoCByID0g dHRtX2JvX3ZhbGlkYXRlKCZiby0+dGJvLCAmYm8tPnBsYWNlbWVudCwgJmN0eCk7Cj4+PiAtwqDC oMKgIGlmIChyKQo+Pj4gLcKgwqDCoMKgwqDCoMKgIGdvdG8gZXJyOwo+Pj4gLQo+Pj4gwqDCoMKg wqDCoCByID0gYW1kZ3B1X2pvYl9hbGxvY193aXRoX2liKGFkZXYsIDY0LCAmam9iKTsKPj4+IMKg wqDCoMKgwqAgaWYgKHIpCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBlcnI7Cj4+PiDCoCDC oMKgwqDCoMKgIGliID0gJmpvYi0+aWJzWzBdOwo+Pj4gwqDCoMKgwqDCoCBhZGRyID0gYW1kZ3B1 X2JvX2dwdV9vZmZzZXQoYm8pOwo+Pj4gLcKgwqDCoCBpYi0+cHRyWzBdID0gUEFDS0VUMChTT0Mx NV9SRUdfT0ZGU0VUKFVWRCwgMCwgCj4+PiBtbVVWRF9HUENPTV9WQ1BVX0RBVEEwKSwgMCk7Cj4+ PiArwqDCoMKgIGliLT5wdHJbMF0gPSBQQUNLRVQwKFNPQzE1X1JFR19PRkZTRVQoVVZELCAwLCAK Pj4+IG1tVVZEX0dQQ09NX1ZDUFVfREFUQTApLAo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIDApOwo+Pgo+PiBsYXN0IGFyZ3VtZW50wqAgc2xpcHBlZCB0byBuZXcgbGluZQo+ Pgo+Pj4gwqDCoMKgwqDCoCBpYi0+cHRyWzFdID0gYWRkcjsKPj4+IC3CoMKgwqAgaWItPnB0clsy XSA9IFBBQ0tFVDAoU09DMTVfUkVHX09GRlNFVChVVkQsIDAsIAo+Pj4gbW1VVkRfR1BDT01fVkNQ VV9EQVRBMSksIDApOwo+Pj4gK8KgwqDCoCBpYi0+cHRyWzJdID0gUEFDS0VUMChTT0MxNV9SRUdf T0ZGU0VUKFVWRCwgMCwgCj4+PiBtbVVWRF9HUENPTV9WQ1BVX0RBVEExKSwKPj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAwKTsKPj4KPj4gU2FtZSBhcyBhYm92ZQo+Cj4gTWht LCBhY3R1YWxseSBjb3JyZWN0IGFjY29yZGluZyB0byB0aGUgY29kaW5nIHN0eWxlIChpdCBtYWtl cyB0aGUgbGluZSAKPiBsZXNzIHRoYW4gODAgY2hhcnMgbG9uZyksIGJ1dCBJIGFncmVlIHRoYXQg aXQgbG9va3MgdWdseS4gSSdtIGdvaW5nIHRvIAo+IHJlbW92ZSBpdC4KPgo+IFF1ZXN0aW9uIGlz IHJhdGhlciBjYW4gc29tZWJvZHkgcGxlYXNlIHRlc3QgdGhpcyBvbiBSYXZlbj8KPgo+IFRoYW5r cywKPiBDaHJpc3RpYW4uCgpUb2RheSB3b3JraW5nIGZyb20gaG9tZSBzbyBubyByYXZlbiBhdCBo YW5kLCBpZiBieSBNb25kYXkgbm9ib2R5IHRlc3RzIAppdCBJIGNhbiBnaXZlIGl0IGEgdHJ5IHRo ZW4gd2l0aCBsaWJkcm0ncyBWQ04gYW5kIFVWRCB0ZXN0cy4KClRoYW5rcywKQW5kcmV5Cgo+Cj4+ Cj4+IFRoYW5rcywKPj4gQW5kcmV5Cj4+Cj4+PiDCoMKgwqDCoMKgIGliLT5wdHJbM10gPSBhZGRy ID4+IDMyOwo+Pj4gwqDCoMKgwqDCoCBpYi0+cHRyWzRdID0gUEFDS0VUMChTT0MxNV9SRUdfT0ZG U0VUKFVWRCwgMCwgCj4+PiBtbVVWRF9HUENPTV9WQ1BVX0NNRCksIDApOwo+Pj4gwqDCoMKgwqDC oCBpYi0+cHRyWzVdID0gMDsKPj4+IEBAIC0zMzAsMTEgKzMxNSwxMiBAQCBzdGF0aWMgaW50IGFt ZGdwdV92Y25fZGVjX3NlbmRfbXNnKHN0cnVjdCAKPj4+IGFtZGdwdV9yaW5nICpyaW5nLCBzdHJ1 Y3QgYW1kZ3B1X2JvICpiCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIGVycl9m cmVlOwo+Pj4gwqDCoMKgwqDCoCB9Cj4+PiDCoCAtwqDCoMKgIHR0bV9ldV9mZW5jZV9idWZmZXJf b2JqZWN0cygmdGlja2V0LCAmaGVhZCwgZik7Cj4+PiArwqDCoMKgIGFtZGdwdV9ib19mZW5jZShi bywgZiwgZmFsc2UpOwo+Pj4gK8KgwqDCoCBhbWRncHVfYm9fdW5yZXNlcnZlKGJvKTsKPj4+ICvC oMKgwqAgYW1kZ3B1X2JvX3VucmVmKCZibyk7Cj4+PiDCoCDCoMKgwqDCoMKgIGlmIChmZW5jZSkK Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCAqZmVuY2UgPSBkbWFfZmVuY2VfZ2V0KGYpOwo+Pj4gLcKg wqDCoCBhbWRncHVfYm9fdW5yZWYoJmJvKTsKPj4+IMKgwqDCoMKgwqAgZG1hX2ZlbmNlX3B1dChm KTsKPj4+IMKgIMKgwqDCoMKgwqAgcmV0dXJuIDA7Cj4+PiBAQCAtMzQzLDcgKzMyOSw4IEBAIHN0 YXRpYyBpbnQgYW1kZ3B1X3Zjbl9kZWNfc2VuZF9tc2coc3RydWN0IAo+Pj4gYW1kZ3B1X3Jpbmcg KnJpbmcsIHN0cnVjdCBhbWRncHVfYm8gKmIKPj4+IMKgwqDCoMKgwqAgYW1kZ3B1X2pvYl9mcmVl KGpvYik7Cj4+PiDCoCDCoCBlcnI6Cj4+PiAtwqDCoMKgIHR0bV9ldV9iYWNrb2ZmX3Jlc2VydmF0 aW9uKCZ0aWNrZXQsICZoZWFkKTsKPj4+ICvCoMKgwqAgYW1kZ3B1X2JvX3VucmVzZXJ2ZShibyk7 Cj4+PiArwqDCoMKgIGFtZGdwdV9ib191bnJlZigmYm8pOwo+Pj4gwqDCoMKgwqDCoCByZXR1cm4g cjsKPj4+IMKgIH0KPj4+IMKgIEBAIC0zNTEsMzEgKzMzOCwxNiBAQCBzdGF0aWMgaW50IAo+Pj4g YW1kZ3B1X3Zjbl9kZWNfZ2V0X2NyZWF0ZV9tc2coc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLCB1 aW50MzJfdCBoYW5kCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBz dHJ1Y3QgZG1hX2ZlbmNlICoqZmVuY2UpCj4+PiDCoCB7Cj4+PiDCoMKgwqDCoMKgIHN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2ID0gcmluZy0+YWRldjsKPj4+IC3CoMKgwqAgc3RydWN0IGFtZGdw dV9ibyAqYm87Cj4+PiArwqDCoMKgIHN0cnVjdCBhbWRncHVfYm8gKmJvID0gTlVMTDsKPj4+IMKg wqDCoMKgwqAgdWludDMyX3QgKm1zZzsKPj4+IMKgwqDCoMKgwqAgaW50IHIsIGk7Cj4+PiDCoCAt wqDCoMKgIHIgPSBhbWRncHVfYm9fY3JlYXRlKGFkZXYsIDEwMjQsIFBBR0VfU0laRSwgdHJ1ZSwK Pj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBBTURHUFVfR0VNX0RPTUFJTl9W UkFNLAo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEFNREdQVV9HRU1fQ1JF QVRFX0NQVV9BQ0NFU1NfUkVRVUlSRUQgfAo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIEFNREdQVV9HRU1fQ1JFQVRFX1ZSQU1fQ09OVElHVU9VUywKPj4+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBOVUxMLCBOVUxMLCAmYm8pOwo+Pj4gK8KgwqDCoCByID0g YW1kZ3B1X2JvX2NyZWF0ZV9yZXNlcnZlZChhZGV2LCAxMDI0LCBQQUdFX1NJWkUsCj4+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEFNREdQVV9HRU1fRE9NQUlO X1ZSQU0sCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICZi bywgTlVMTCwgKHZvaWQgKiopJm1zZyk7Cj4+PiDCoMKgwqDCoMKgIGlmIChyKQo+Pj4gwqDCoMKg wqDCoMKgwqDCoMKgIHJldHVybiByOwo+Pj4gwqAgLcKgwqDCoCByID0gYW1kZ3B1X2JvX3Jlc2Vy dmUoYm8sIGZhbHNlKTsKPj4+IC3CoMKgwqAgaWYgKHIpIHsKPj4+IC3CoMKgwqDCoMKgwqDCoCBh bWRncHVfYm9fdW5yZWYoJmJvKTsKPj4+IC3CoMKgwqDCoMKgwqDCoCByZXR1cm4gcjsKPj4+IC3C oMKgwqAgfQo+Pj4gLQo+Pj4gLcKgwqDCoCByID0gYW1kZ3B1X2JvX2ttYXAoYm8sICh2b2lkICoq KSZtc2cpOwo+Pj4gLcKgwqDCoCBpZiAocikgewo+Pj4gLcKgwqDCoMKgwqDCoMKgIGFtZGdwdV9i b191bnJlc2VydmUoYm8pOwo+Pj4gLcKgwqDCoMKgwqDCoMKgIGFtZGdwdV9ib191bnJlZigmYm8p Owo+Pj4gLcKgwqDCoMKgwqDCoMKgIHJldHVybiByOwo+Pj4gLcKgwqDCoCB9Cj4+PiAtCj4+PiDC oMKgwqDCoMKgIG1zZ1swXSA9IGNwdV90b19sZTMyKDB4MDAwMDAwMjgpOwo+Pj4gwqDCoMKgwqDC oCBtc2dbMV0gPSBjcHVfdG9fbGUzMigweDAwMDAwMDM4KTsKPj4+IMKgwqDCoMKgwqAgbXNnWzJd ID0gY3B1X3RvX2xlMzIoMHgwMDAwMDAwMSk7Cj4+PiBAQCAtMzkzLDkgKzM2NSw2IEBAIHN0YXRp YyBpbnQgYW1kZ3B1X3Zjbl9kZWNfZ2V0X2NyZWF0ZV9tc2coc3RydWN0IAo+Pj4gYW1kZ3B1X3Jp bmcgKnJpbmcsIHVpbnQzMl90IGhhbmQKPj4+IMKgwqDCoMKgwqAgZm9yIChpID0gMTQ7IGkgPCAx MDI0OyArK2kpCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgbXNnW2ldID0gY3B1X3RvX2xlMzIoMHgw KTsKPj4+IMKgIC3CoMKgwqAgYW1kZ3B1X2JvX2t1bm1hcChibyk7Cj4+PiAtwqDCoMKgIGFtZGdw dV9ib191bnJlc2VydmUoYm8pOwo+Pj4gLQo+Pj4gwqDCoMKgwqDCoCByZXR1cm4gYW1kZ3B1X3Zj bl9kZWNfc2VuZF9tc2cocmluZywgYm8sIHRydWUsIGZlbmNlKTsKPj4+IMKgIH0KPj4+IMKgIEBA IC00MDcsMjcgKzM3NiwxMiBAQCBzdGF0aWMgaW50IAo+Pj4gYW1kZ3B1X3Zjbl9kZWNfZ2V0X2Rl c3Ryb3lfbXNnKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywgdWludDMyX3QgaGFuCj4+PiDCoMKg wqDCoMKgIHVpbnQzMl90ICptc2c7Cj4+PiDCoMKgwqDCoMKgIGludCByLCBpOwo+Pj4gwqAgLcKg wqDCoCByID0gYW1kZ3B1X2JvX2NyZWF0ZShhZGV2LCAxMDI0LCBQQUdFX1NJWkUsIHRydWUsCj4+ PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQU1ER1BVX0dFTV9ET01BSU5fVlJB TSwKPj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBBTURHUFVfR0VNX0NSRUFU RV9DUFVfQUNDRVNTX1JFUVVJUkVEIHwKPj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBBTURHUFVfR0VNX0NSRUFURV9WUkFNX0NPTlRJR1VPVVMsCj4+PiAtwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgTlVMTCwgTlVMTCwgJmJvKTsKPj4+ICvCoMKgwqAgciA9IGFt ZGdwdV9ib19jcmVhdGVfcmVzZXJ2ZWQoYWRldiwgMTAyNCwgUEFHRV9TSVpFLAo+Pj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBBTURHUFVfR0VNX0RPTUFJTl9W UkFNLAo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmYm8s IE5VTEwsICh2b2lkICoqKSZtc2cpOwo+Pj4gwqDCoMKgwqDCoCBpZiAocikKPj4+IMKgwqDCoMKg wqDCoMKgwqDCoCByZXR1cm4gcjsKPj4+IMKgIC3CoMKgwqAgciA9IGFtZGdwdV9ib19yZXNlcnZl KGJvLCBmYWxzZSk7Cj4+PiAtwqDCoMKgIGlmIChyKSB7Cj4+PiAtwqDCoMKgwqDCoMKgwqAgYW1k Z3B1X2JvX3VucmVmKCZibyk7Cj4+PiAtwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHI7Cj4+PiAtwqDC oMKgIH0KPj4+IC0KPj4+IC3CoMKgwqAgciA9IGFtZGdwdV9ib19rbWFwKGJvLCAodm9pZCAqKikm bXNnKTsKPj4+IC3CoMKgwqAgaWYgKHIpIHsKPj4+IC3CoMKgwqDCoMKgwqDCoCBhbWRncHVfYm9f dW5yZXNlcnZlKGJvKTsKPj4+IC3CoMKgwqDCoMKgwqDCoCBhbWRncHVfYm9fdW5yZWYoJmJvKTsK Pj4+IC3CoMKgwqDCoMKgwqDCoCByZXR1cm4gcjsKPj4+IC3CoMKgwqAgfQo+Pj4gLQo+Pj4gwqDC oMKgwqDCoCBtc2dbMF0gPSBjcHVfdG9fbGUzMigweDAwMDAwMDI4KTsKPj4+IMKgwqDCoMKgwqAg bXNnWzFdID0gY3B1X3RvX2xlMzIoMHgwMDAwMDAxOCk7Cj4+PiDCoMKgwqDCoMKgIG1zZ1syXSA9 IGNwdV90b19sZTMyKDB4MDAwMDAwMDApOwo+Pj4gQEAgLTQzNyw5ICszOTEsNiBAQCBzdGF0aWMg aW50IGFtZGdwdV92Y25fZGVjX2dldF9kZXN0cm95X21zZyhzdHJ1Y3QgCj4+PiBhbWRncHVfcmlu ZyAqcmluZywgdWludDMyX3QgaGFuCj4+PiDCoMKgwqDCoMKgIGZvciAoaSA9IDY7IGkgPCAxMDI0 OyArK2kpCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgbXNnW2ldID0gY3B1X3RvX2xlMzIoMHgwKTsK Pj4+IMKgIC3CoMKgwqAgYW1kZ3B1X2JvX2t1bm1hcChibyk7Cj4+PiAtwqDCoMKgIGFtZGdwdV9i b191bnJlc2VydmUoYm8pOwo+Pj4gLQo+Pj4gwqDCoMKgwqDCoCByZXR1cm4gYW1kZ3B1X3Zjbl9k ZWNfc2VuZF9tc2cocmluZywgYm8sIGRpcmVjdCwgZmVuY2UpOwo+Pj4gwqAgfQo+Pgo+CgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwphbWQtZ2Z4IG1haWxp bmcgbGlzdAphbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZngK