From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 06/14] drm/i915: Reorganize plane register writes to make them more atomic Date: Wed, 7 Nov 2018 23:38:37 +0200 Message-ID: <20181107213837.GQ9144@intel.com> References: <20181101150605.18235-1-ville.syrjala@linux.intel.com> <20181101150605.18235-7-ville.syrjala@linux.intel.com> <20181107212618.GI2237@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id C9A156E497 for ; Wed, 7 Nov 2018 21:38:40 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20181107212618.GI2237@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Rodrigo Vivi Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBOb3YgMDcsIDIwMTggYXQgMDE6MjY6MThQTSAtMDgwMCwgUm9kcmlnbyBWaXZpIHdy b3RlOgo+IE9uIFRodSwgTm92IDAxLCAyMDE4IGF0IDA1OjA1OjU3UE0gKzAyMDAsIFZpbGxlIFN5 cmphbGEgd3JvdGU6Cj4gPiBGcm9tOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGlu dXguaW50ZWwuY29tPgo+ID4gCj4gPiBTb21lIG9ic2VydmF0aW9ucyBhYm91dCB0aGUgcGxhbmUg cmVnaXN0ZXJzOgo+ID4gLSB0aGUgY29udHJvbCByZWdpc3RlciB3aWxsIHNlbGYtYXJtIGlmIHRo ZSBwbGFuZSBpcyBub3QgYWxyZWFkeQo+ID4gICBlbmFibGVkLCB0aHVzIHdlIHdhbnQgdG8gd3Jp dGUgaXQgYXMgY2xvc2UgdG8gKG9yIGlkZWFsbHkgYWZ0ZXIpCj4gPiAgIHRoZSBzdXJmYWNlIHJl Z2lzdGVyCj4gPiAtIHRpbGVvZmYvbGlub2ZmL29mZnNldC9hdXhfb2Zmc2V0IGFyZSBzZWxmLWFy bWluZyBhcyB3ZWxsIHNvIHdlIHdhbnQKPiA+ICAgdGhlbSBjbG9zZSB0byB0aGUgc3VyZmFjZSBy ZWdpc3RlciBhcyB3ZWxsCj4gPiAtIGNvbG9yIGtleWluZyByZWdpc3RlcnMgd2UgbWF5YmUgc2Vs ZiBhcm1pbmcgYmVmb3JlIFNLTC4gTm90IDEwMCUKPiA+ICAgc3VyZSBidXQgd2UgY2FuIHRyeSB0 byBrZWVwIHRoZW0gbmVhciB0byB0aGUgc3VyZmFjZSByZWdpc3Rlcgo+ID4gICBhcyB3ZWxsCj4g PiAtIGNodiBwaXBlIGIgY3NjIHJlZ2lzdGVyIGFyZSBkb3VibGUgYnVmZmVyZWQgYnV0IHNlbGYg YXJtaW5nIHNvCj4gPiAgIG1vdmluZyB0aGVtIGRvd24gYSBiaXQKPiA+IC0gdGhlIHJlc3Qgc2hv dWxkIGJlIG1vc3RseSBhcm1lZCBieSB0aGUgc3VyZmFjZSByZWdpc3RlciBzbyB3ZSBjYW4KPiA+ ICAgc2FmZWx5IHdyaXRlIHRoZW0gZmlyc3QsIGFuZCB0byBqdXN0IGZvciBzb21lIGNvbnNpc3Rl bmN5IGxldCdzIHRyeQo+ID4gICB0byBmb2xsb3cga2VlcCB0aGVtIGluIG9yZGVyIGJhc2VkIG9u IHRoZSByZWdpc3RlciBvZmZzZXQKPiA+IAo+ID4gU2lnbmVkLW9mZi1ieTogVmlsbGUgU3lyasOk bMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiA+IC0tLQo+ID4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8ICA0MCArKysrKy0tLS0tCj4gPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMgIHwgMTE0ICsrKysrKysrKysrKysrKy0tLS0t LS0tLS0tLQo+ID4gIDIgZmlsZXMgY2hhbmdlZCwgODYgaW5zZXJ0aW9ucygrKSwgNjggZGVsZXRp b25zKC0pCj4gPiAKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k aXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiA+IGluZGV4 IGM1Y2UzODkyZDU4My4uOTUyMWNmZjVmYjQ0IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kaXNwbGF5LmMKPiA+IEBAIC0zMzI4LDcgKzMzMjgsNiBAQCBzdGF0aWMgdm9pZCBpOXh4 X3VwZGF0ZV9wbGFuZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAo+ID4gIAllbnVtIGk5eHhf cGxhbmVfaWQgaTl4eF9wbGFuZSA9IHBsYW5lLT5pOXh4X3BsYW5lOwo+ID4gIAl1MzIgbGluZWFy X29mZnNldDsKPiA+ICAJdTMyIGRzcGNudHIgPSBwbGFuZV9zdGF0ZS0+Y3RsOwo+ID4gLQlpOTE1 X3JlZ190IHJlZyA9IERTUENOVFIoaTl4eF9wbGFuZSk7Cj4gPiAgCWludCB4ID0gcGxhbmVfc3Rh dGUtPmNvbG9yX3BsYW5lWzBdLng7Cj4gPiAgCWludCB5ID0gcGxhbmVfc3RhdGUtPmNvbG9yX3Bs YW5lWzBdLnk7Cj4gPiAgCXVuc2lnbmVkIGxvbmcgaXJxZmxhZ3M7Cj4gPiBAQCAtMzM0Myw0MSAr MzM0Miw0NSBAQCBzdGF0aWMgdm9pZCBpOXh4X3VwZGF0ZV9wbGFuZShzdHJ1Y3QgaW50ZWxfcGxh bmUgKnBsYW5lLAo+ID4gIAo+ID4gIAlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2X3ByaXYtPnVuY29y ZS5sb2NrLCBpcnFmbGFncyk7Cj4gPiAgCj4gPiArCUk5MTVfV1JJVEVfRlcoRFNQU1RSSURFKGk5 eHhfcGxhbmUpLCBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbMF0uc3RyaWRlKTsKPiA+ICsKPiA+ ICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA0KSB7Cj4gPiAgCQkvKiBwaXBlc3JjIGFuZCBk c3BzaXplIGNvbnRyb2wgdGhlIHNpemUgdGhhdCBpcyBzY2FsZWQgZnJvbSwKPiA+ICAJCSAqIHdo aWNoIHNob3VsZCBhbHdheXMgYmUgdGhlIHVzZXIncyByZXF1ZXN0ZWQgc2l6ZS4KPiA+ICAJCSAq Lwo+ID4gKwkJSTkxNV9XUklURV9GVyhEU1BQT1MoaTl4eF9wbGFuZSksIDApOwo+ID4gIAkJSTkx NV9XUklURV9GVyhEU1BTSVpFKGk5eHhfcGxhbmUpLAo+ID4gIAkJCSAgICAgICgoY3J0Y19zdGF0 ZS0+cGlwZV9zcmNfaCAtIDEpIDw8IDE2KSB8Cj4gPiAgCQkJICAgICAgKGNydGNfc3RhdGUtPnBp cGVfc3JjX3cgLSAxKSk7Cj4gPiAtCQlJOTE1X1dSSVRFX0ZXKERTUFBPUyhpOXh4X3BsYW5lKSwg MCk7Cj4gPiAgCX0gZWxzZSBpZiAoSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikgJiYgaTl4eF9wbGFu ZSA9PSBQTEFORV9CKSB7Cj4gPiArCQlJOTE1X1dSSVRFX0ZXKFBSSU1QT1MoaTl4eF9wbGFuZSks IDApOwo+ID4gIAkJSTkxNV9XUklURV9GVyhQUklNU0laRShpOXh4X3BsYW5lKSwKPiA+ICAJCQkg ICAgICAoKGNydGNfc3RhdGUtPnBpcGVfc3JjX2ggLSAxKSA8PCAxNikgfAo+ID4gIAkJCSAgICAg IChjcnRjX3N0YXRlLT5waXBlX3NyY193IC0gMSkpOwo+ID4gLQkJSTkxNV9XUklURV9GVyhQUklN UE9TKGk5eHhfcGxhbmUpLCAwKTsKPiA+ICAJCUk5MTVfV1JJVEVfRlcoUFJJTUNOU1RBTFBIQShp OXh4X3BsYW5lKSwgMCk7Cj4gPiAgCX0KPiA+ICAKPiA+IC0JSTkxNV9XUklURV9GVyhyZWcsIGRz cGNudHIpOwo+ID4gLQo+ID4gLQlJOTE1X1dSSVRFX0ZXKERTUFNUUklERShpOXh4X3BsYW5lKSwg cGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lWzBdLnN0cmlkZSk7Cj4gPiAgCWlmIChJU19IQVNXRUxM KGRldl9wcml2KSB8fCBJU19CUk9BRFdFTEwoZGV2X3ByaXYpKSB7Cj4gPiAtCQlJOTE1X1dSSVRF X0ZXKERTUFNVUkYoaTl4eF9wbGFuZSksCj4gPiAtCQkJICAgICAgaW50ZWxfcGxhbmVfZ2d0dF9v ZmZzZXQocGxhbmVfc3RhdGUpICsKPiA+IC0JCQkgICAgICBkc3BhZGRyX29mZnNldCk7Cj4gPiAg CQlJOTE1X1dSSVRFX0ZXKERTUE9GRlNFVChpOXh4X3BsYW5lKSwgKHkgPDwgMTYpIHwgeCk7Cj4g PiAgCX0gZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA0KSB7Cj4gPiArCQlJOTE1X1dS SVRFX0ZXKERTUFRJTEVPRkYoaTl4eF9wbGFuZSksICh5IDw8IDE2KSB8IHgpOwo+ID4gKwkJSTkx NV9XUklURV9GVyhEU1BMSU5PRkYoaTl4eF9wbGFuZSksIGxpbmVhcl9vZmZzZXQpOwo+ID4gKwl9 Cj4gPiArCj4gPiArCS8qCj4gPiArCSAqIFRoZSBjb250cm9sIHJlZ2lzdGVyIHNlbGYtYXJtcyBp ZiB0aGUgcGxhbmUgd2FzIHByZXZpb3VzbHkKPiA+ICsJICogZGlzYWJsZWQuIFRyeSB0byBtYWtl IHRoZSBwbGFuZSBlbmFibGUgYXRvbWljIGJ5IHdyaXRpbmcKPiA+ICsJICogdGhlIGNvbnRyb2wg cmVnaXN0ZXIganVzdCBiZWZvcmUgdGhlIHN1cmZhY2UgcmVnaXN0ZXIuCj4gPiArCSAqLwo+ID4g KwlJOTE1X1dSSVRFX0ZXKERTUENOVFIoaTl4eF9wbGFuZSksIGRzcGNudHIpOwo+ID4gKwlpZiAo SU5URUxfR0VOKGRldl9wcml2KSA+PSA0KQo+ID4gIAkJSTkxNV9XUklURV9GVyhEU1BTVVJGKGk5 eHhfcGxhbmUpLAo+ID4gIAkJCSAgICAgIGludGVsX3BsYW5lX2dndHRfb2Zmc2V0KHBsYW5lX3N0 YXRlKSArCj4gPiAgCQkJICAgICAgZHNwYWRkcl9vZmZzZXQpOwo+ID4gLQkJSTkxNV9XUklURV9G VyhEU1BUSUxFT0ZGKGk5eHhfcGxhbmUpLCAoeSA8PCAxNikgfCB4KTsKPiA+IC0JCUk5MTVfV1JJ VEVfRlcoRFNQTElOT0ZGKGk5eHhfcGxhbmUpLCBsaW5lYXJfb2Zmc2V0KTsKPiA+IC0JfSBlbHNl IHsKPiA+ICsJZWxzZQo+ID4gIAkJSTkxNV9XUklURV9GVyhEU1BBRERSKGk5eHhfcGxhbmUpLAo+ ID4gIAkJCSAgICAgIGludGVsX3BsYW5lX2dndHRfb2Zmc2V0KHBsYW5lX3N0YXRlKSArCj4gPiAg CQkJICAgICAgZHNwYWRkcl9vZmZzZXQpOwo+ID4gLQl9Cj4gPiAgCj4gPiAgCXNwaW5fdW5sb2Nr X2lycXJlc3RvcmUoJmRldl9wcml2LT51bmNvcmUubG9jaywgaXJxZmxhZ3MpOwo+ID4gIH0KPiA+ IEBAIC0xMDA0NSw4ICsxMDA0OCw4IEBAIHN0YXRpYyB2b2lkIGk5eHhfdXBkYXRlX2N1cnNvcihz dHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAo+ID4gIAkgKiBPbiBzb21lIHBsYXRmb3JtcyB3cml0 aW5nIENVUkNOVFIgZmlyc3Qgd2lsbCBhbHNvCj4gPiAgCSAqIGNhdXNlIENVUlBPUyB0byBiZSBh cm1lZCBieSB0aGUgQ1VSQkFTRSB3cml0ZS4KPiA+ICAJICogV2l0aG91dCB0aGUgQ1VSQ05UUiB3 cml0ZSB0aGUgQ1VSUE9TIHdyaXRlIHdvdWxkCj4gPiAtCSAqIGFybSBpdHNlbGYuIFRodXMgd2Ug YWx3YXlzIHN0YXJ0IHRoZSBmdWxsIHVwZGF0ZQo+ID4gLQkgKiB3aXRoIGEgQ1VSQ05UUiB3cml0 ZS4KPiA+ICsJICogYXJtIGl0c2VsZi4gVGh1cyB3ZSBhbHdheXMgdXBkYXRlIENVUkNOVFIgYmVm b3JlCj4gPiArCSAqIENVUlBPUy4KPiA+ICAJICoKPiA+ICAJICogT24gb3RoZXIgcGxhdGZvcm1z IENVUlBPUyBhbHdheXMgcmVxdWlyZXMgdGhlCj4gPiAgCSAqIENVUkJBU0Ugd3JpdGUgdG8gYXJt IHRoZSB1cGRhdGUuIEFkZGl0b25hbGx5Cj4gPiBAQCAtMTAwNTYsMTUgKzEwMDU5LDE2IEBAIHN0 YXRpYyB2b2lkIGk5eHhfdXBkYXRlX2N1cnNvcihzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAo+ ID4gIAkgKiBjdXJzb3IgdGhhdCBkb2Vzbid0IGFwcGVhciB0byBtb3ZlLCBvciBldmVuIGNoYW5n ZQo+ID4gIAkgKiBzaGFwZS4gVGh1cyB3ZSBhbHdheXMgd3JpdGUgQ1VSQkFTRS4KPiA+ICAJICoK PiA+IC0JICogQ1VSQ05UUiBhbmQgQ1VSX0ZCQ19DVEwgYXJlIGFsd2F5cwo+ID4gLQkgKiBhcm1l ZCBieSB0aGUgQ1VSQkFTRSB3cml0ZSBvbmx5Lgo+ID4gKwkgKiBUaGUgb3RoZXIgcmVnaXN0ZXJz IGFyZSBhcm1lZCBieSBieSB0aGUgQ1VSQkFTRSB3cml0ZQo+ID4gKwkgKiBleGNlcHQgd2hlbiB0 aGUgcGxhbmUgaXMgZ2V0dGluZyBlbmFibGVkIGF0IHdoaWNoIHRpbWUKPiA+ICsJICogdGhlIENV UkNOVFIgd3JpdGUgYXJtcyB0aGUgdXBkYXRlLgo+ID4gIAkgKi8KPiA+ICAJaWYgKHBsYW5lLT5j dXJzb3IuYmFzZSAhPSBiYXNlIHx8Cj4gPiAgCSAgICBwbGFuZS0+Y3Vyc29yLnNpemUgIT0gZmJj X2N0bCB8fAo+ID4gIAkgICAgcGxhbmUtPmN1cnNvci5jbnRsICE9IGNudGwpIHsKPiA+IC0JCUk5 MTVfV1JJVEVfRlcoQ1VSQ05UUihwaXBlKSwgY250bCk7Cj4gPiAgCQlpZiAoSEFTX0NVUl9GQkMo ZGV2X3ByaXYpKQo+ID4gIAkJCUk5MTVfV1JJVEVfRlcoQ1VSX0ZCQ19DVEwocGlwZSksIGZiY19j dGwpOwo+ID4gKwkJSTkxNV9XUklURV9GVyhDVVJDTlRSKHBpcGUpLCBjbnRsKTsKPiA+ICAJCUk5 MTVfV1JJVEVfRlcoQ1VSUE9TKHBpcGUpLCBwb3MpOwo+ID4gIAkJSTkxNV9XUklURV9GVyhDVVJC QVNFKHBpcGUpLCBiYXNlKTsKPiA+ICAKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9zcHJpdGUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5j Cj4gPiBpbmRleCA4YTQwODc5YWJlMzAuLjQ1NWIyZDBjYmFhNiAxMDA2NDQKPiA+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9zcHJpdGUuYwo+ID4gQEAgLTQwNCwyNCArNDA0LDEyIEBAIHNrbF9wcm9n cmFtX3BsYW5lKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsCj4gPiAgCj4gPiAgCXNwaW5fbG9j a19pcnFzYXZlKCZkZXZfcHJpdi0+dW5jb3JlLmxvY2ssIGlycWZsYWdzKTsKPiA+ICAKPiA+IC0J aWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTAgfHwgSVNfR0VNSU5JTEFLRShkZXZfcHJpdikp Cj4gPiAtCQlJOTE1X1dSSVRFX0ZXKFBMQU5FX0NPTE9SX0NUTChwaXBlLCBwbGFuZV9pZCksCj4g PiAtCQkJICAgICAgcGxhbmVfc3RhdGUtPmNvbG9yX2N0bCk7Cj4gPiAtCj4gPiAtCUk5MTVfV1JJ VEVfRlcoUExBTkVfS0VZVkFMKHBpcGUsIHBsYW5lX2lkKSwga2V5LT5taW5fdmFsdWUpOwo+ID4g LQlJOTE1X1dSSVRFX0ZXKFBMQU5FX0tFWU1BWChwaXBlLCBwbGFuZV9pZCksIGtleW1heCk7Cj4g PiAtCUk5MTVfV1JJVEVfRlcoUExBTkVfS0VZTVNLKHBpcGUsIHBsYW5lX2lkKSwga2V5bXNrKTsK PiA+IC0KPiA+IC0JSTkxNV9XUklURV9GVyhQTEFORV9PRkZTRVQocGlwZSwgcGxhbmVfaWQpLCAo eSA8PCAxNikgfCB4KTsKPiA+ICAJSTkxNV9XUklURV9GVyhQTEFORV9TVFJJREUocGlwZSwgcGxh bmVfaWQpLCBzdHJpZGUpOwo+ID4gKwlJOTE1X1dSSVRFX0ZXKFBMQU5FX1BPUyhwaXBlLCBwbGFu ZV9pZCksIChjcnRjX3kgPDwgMTYpIHwgY3J0Y194KTsKPiA+ICAJSTkxNV9XUklURV9GVyhQTEFO RV9TSVpFKHBpcGUsIHBsYW5lX2lkKSwgKHNyY19oIDw8IDE2KSB8IHNyY193KTsKPiA+ICAJSTkx NV9XUklURV9GVyhQTEFORV9BVVhfRElTVChwaXBlLCBwbGFuZV9pZCksCj4gPiAtCQkgICAgICAo cGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lWzFdLm9mZnNldCAtIHN1cmZfYWRkcikgfCBhdXhfc3Ry aWRlKTsKPiA+IC0KPiA+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCAxMSkKPiA+IC0JCUk5 MTVfV1JJVEVfRlcoUExBTkVfQVVYX09GRlNFVChwaXBlLCBwbGFuZV9pZCksCj4gPiAtCQkJICAg ICAgKHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVsxXS55IDw8IDE2KSB8Cj4gPiAtCQkJICAgICAg IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVsxXS54KTsKPiA+ICsJCSAgICAgIChwbGFuZV9zdGF0 ZS0+Y29sb3JfcGxhbmVbMV0ub2Zmc2V0IC0gc3VyZl9hZGRyKSB8Cj4gPiArCQkgICAgICBhdXhf c3RyaWRlKTsKPiA+ICAKPiA+ICAJaWYgKGljbF9pc19oZHJfcGxhbmUocGxhbmUpKSB7Cj4gPiAg CQl1MzIgY3VzX2N0bCA9IDA7Cj4gPiBAQCAtNDQ0LDE1ICs0MzIsMzMgQEAgc2tsX3Byb2dyYW1f cGxhbmUoc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwKPiA+ICAJCUk5MTVfV1JJVEVfRlcoUExB TkVfQ1VTX0NUTChwaXBlLCBwbGFuZV9pZCksIGN1c19jdGwpOwo+ID4gIAl9Cj4gPiAgCj4gPiAt CWlmICghc2xhdmUgJiYgcGxhbmVfc3RhdGUtPnNjYWxlcl9pZCA+PSAwKQo+ID4gLQkJc2tsX3By b2dyYW1fc2NhbGVyKHBsYW5lLCBjcnRjX3N0YXRlLCBwbGFuZV9zdGF0ZSk7Cj4gPiArCWlmIChJ TlRFTF9HRU4oZGV2X3ByaXYpID49IDEwIHx8IElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKQo+ID4g KwkJSTkxNV9XUklURV9GVyhQTEFORV9DT0xPUl9DVEwocGlwZSwgcGxhbmVfaWQpLAo+ID4gKwkJ CSAgICAgIHBsYW5lX3N0YXRlLT5jb2xvcl9jdGwpOwo+ID4gIAo+ID4gLQlJOTE1X1dSSVRFX0ZX KFBMQU5FX1BPUyhwaXBlLCBwbGFuZV9pZCksIChjcnRjX3kgPDwgMTYpIHwgY3J0Y194KTsKPiA+ ICsJSTkxNV9XUklURV9GVyhQTEFORV9LRVlWQUwocGlwZSwgcGxhbmVfaWQpLCBrZXktPm1pbl92 YWx1ZSk7Cj4gPiArCUk5MTVfV1JJVEVfRlcoUExBTkVfS0VZTUFYKHBpcGUsIHBsYW5lX2lkKSwg a2V5bWF4KTsKPiA+ICsJSTkxNV9XUklURV9GVyhQTEFORV9LRVlNU0socGlwZSwgcGxhbmVfaWQp LCBrZXltc2spOwo+ID4gKwo+ID4gKwlJOTE1X1dSSVRFX0ZXKFBMQU5FX09GRlNFVChwaXBlLCBw bGFuZV9pZCksICh5IDw8IDE2KSB8IHgpOwo+ID4gIAo+ID4gKwlpZiAoSU5URUxfR0VOKGRldl9w cml2KSA8IDExKQo+ID4gKwkJSTkxNV9XUklURV9GVyhQTEFORV9BVVhfT0ZGU0VUKHBpcGUsIHBs YW5lX2lkKSwKPiA+ICsJCQkgICAgICAocGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lWzFdLnkgPDwg MTYpIHwKPiA+ICsJCQkgICAgICBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbMV0ueCk7Cj4gPiAr Cj4gPiArCS8qCj4gPiArCSAqIFRoZSBjb250cm9sIHJlZ2lzdGVyIHNlbGYtYXJtcyBpZiB0aGUg cGxhbmUgd2FzIHByZXZpb3VzbHkKPiA+ICsJICogZGlzYWJsZWQuIFRyeSB0byBtYWtlIHRoZSBw bGFuZSBlbmFibGUgYXRvbWljIGJ5IHdyaXRpbmcKPiA+ICsJICogdGhlIGNvbnRyb2wgcmVnaXN0 ZXIganVzdCBiZWZvcmUgdGhlIHN1cmZhY2UgcmVnaXN0ZXIuCj4gPiArCSAqLwo+ID4gIAlJOTE1 X1dSSVRFX0ZXKFBMQU5FX0NUTChwaXBlLCBwbGFuZV9pZCksIHBsYW5lX2N0bCk7Cj4gPiAgCUk5 MTVfV1JJVEVfRlcoUExBTkVfU1VSRihwaXBlLCBwbGFuZV9pZCksCj4gPiAgCQkgICAgICBpbnRl bF9wbGFuZV9nZ3R0X29mZnNldChwbGFuZV9zdGF0ZSkgKyBzdXJmX2FkZHIpOwo+ID4gIAo+ID4g KwlpZiAoIXNsYXZlICYmIHBsYW5lX3N0YXRlLT5zY2FsZXJfaWQgPj0gMCkKPiA+ICsJCXNrbF9w cm9ncmFtX3NjYWxlcihwbGFuZSwgY3J0Y19zdGF0ZSwgcGxhbmVfc3RhdGUpOwo+ID4gKwo+ID4g IAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXZfcHJpdi0+dW5jb3JlLmxvY2ssIGlycWZsYWdz KTsKPiA+ICB9Cj4gPiAgCj4gPiBAQCAtNjkwLDcgKzY5Niw2IEBAIHZsdl91cGRhdGVfcGxhbmUo c3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwKPiA+ICAJCSBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxh bmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ID4gIHsKPiA+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+YmFzZS5kZXYpOwo+ID4gLQljb25zdCBzdHJ1 Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZiOwo+ID4gIAllbnVt IHBpcGUgcGlwZSA9IHBsYW5lLT5waXBlOwo+ID4gIAllbnVtIHBsYW5lX2lkIHBsYW5lX2lkID0g cGxhbmUtPmlkOwo+ID4gIAl1MzIgc3ByY3RsID0gcGxhbmVfc3RhdGUtPmN0bDsKPiA+IEBAIC03 MTUsNiArNzIwLDEyIEBAIHZsdl91cGRhdGVfcGxhbmUoc3RydWN0IGludGVsX3BsYW5lICpwbGFu ZSwKPiA+ICAKPiA+ICAJdmx2X3VwZGF0ZV9jbHJjKHBsYW5lX3N0YXRlKTsKPiA+ICAKPiA+ICsJ STkxNV9XUklURV9GVyhTUFNUUklERShwaXBlLCBwbGFuZV9pZCksCj4gPiArCQkgICAgICBwbGFu ZV9zdGF0ZS0+Y29sb3JfcGxhbmVbMF0uc3RyaWRlKTsKPiA+ICsJSTkxNV9XUklURV9GVyhTUFBP UyhwaXBlLCBwbGFuZV9pZCksIChjcnRjX3kgPDwgMTYpIHwgY3J0Y194KTsKPiA+ICsJSTkxNV9X UklURV9GVyhTUFNJWkUocGlwZSwgcGxhbmVfaWQpLCAoY3J0Y19oIDw8IDE2KSB8IGNydGNfdyk7 Cj4gPiArCUk5MTVfV1JJVEVfRlcoU1BDT05TVEFMUEhBKHBpcGUsIHBsYW5lX2lkKSwgMCk7Cj4g PiArCj4gPiAgCWlmIChJU19DSEVSUllWSUVXKGRldl9wcml2KSAmJiBwaXBlID09IFBJUEVfQikK PiA+ICAJCWNodl91cGRhdGVfY3NjKHBsYW5lX3N0YXRlKTsKPiA+ICAKPiA+IEBAIC03MjMsMTgg KzczNCwxNSBAQCB2bHZfdXBkYXRlX3BsYW5lKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsCj4g PiAgCQlJOTE1X1dSSVRFX0ZXKFNQS0VZTUFYVkFMKHBpcGUsIHBsYW5lX2lkKSwga2V5LT5tYXhf dmFsdWUpOwo+ID4gIAkJSTkxNV9XUklURV9GVyhTUEtFWU1TSyhwaXBlLCBwbGFuZV9pZCksIGtl eS0+Y2hhbm5lbF9tYXNrKTsKPiA+ICAJfQo+ID4gLQlJOTE1X1dSSVRFX0ZXKFNQU1RSSURFKHBp cGUsIHBsYW5lX2lkKSwKPiA+IC0JCSAgICAgIHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVswXS5z dHJpZGUpOwo+ID4gLQlJOTE1X1dSSVRFX0ZXKFNQUE9TKHBpcGUsIHBsYW5lX2lkKSwgKGNydGNf eSA8PCAxNikgfCBjcnRjX3gpOwo+ID4gLQo+ID4gLQlpZiAoZmItPm1vZGlmaWVyID09IEk5MTVf Rk9STUFUX01PRF9YX1RJTEVEKQo+ID4gLQkJSTkxNV9XUklURV9GVyhTUFRJTEVPRkYocGlwZSwg cGxhbmVfaWQpLCAoeSA8PCAxNikgfCB4KTsKPiA+IC0JZWxzZQo+ID4gLQkJSTkxNV9XUklURV9G VyhTUExJTk9GRihwaXBlLCBwbGFuZV9pZCksIGxpbmVhcl9vZmZzZXQpOwo+ID4gIAo+ID4gLQlJ OTE1X1dSSVRFX0ZXKFNQQ09OU1RBTFBIQShwaXBlLCBwbGFuZV9pZCksIDApOwo+ID4gKwlJOTE1 X1dSSVRFX0ZXKFNQVElMRU9GRihwaXBlLCBwbGFuZV9pZCksICh5IDw8IDE2KSB8IHgpOwo+ID4g KwlJOTE1X1dSSVRFX0ZXKFNQTElOT0ZGKHBpcGUsIHBsYW5lX2lkKSwgbGluZWFyX29mZnNldCk7 Cj4gPiAgCj4gPiAtCUk5MTVfV1JJVEVfRlcoU1BTSVpFKHBpcGUsIHBsYW5lX2lkKSwgKGNydGNf aCA8PCAxNikgfCBjcnRjX3cpOwo+ID4gKwkvKgo+ID4gKwkgKiBUaGUgY29udHJvbCByZWdpc3Rl ciBzZWxmLWFybXMgaWYgdGhlIHBsYW5lIHdhcyBwcmV2aW91c2x5Cj4gPiArCSAqIGRpc2FibGVk LiBUcnkgdG8gbWFrZSB0aGUgcGxhbmUgZW5hYmxlIGF0b21pYyBieSB3cml0aW5nCj4gPiArCSAq IHRoZSBjb250cm9sIHJlZ2lzdGVyIGp1c3QgYmVmb3JlIHRoZSBzdXJmYWNlIHJlZ2lzdGVyLgo+ ID4gKwkgKi8KPiA+ICAJSTkxNV9XUklURV9GVyhTUENOVFIocGlwZSwgcGxhbmVfaWQpLCBzcHJj dGwpOwo+ID4gIAlJOTE1X1dSSVRFX0ZXKFNQU1VSRihwaXBlLCBwbGFuZV9pZCksCj4gPiAgCQkg ICAgICBpbnRlbF9wbGFuZV9nZ3R0X29mZnNldChwbGFuZV9zdGF0ZSkgKyBzcHJzdXJmX29mZnNl dCk7Cj4gPiBAQCAtODQ4LDcgKzg1Niw2IEBAIGl2Yl91cGRhdGVfcGxhbmUoc3RydWN0IGludGVs X3BsYW5lICpwbGFuZSwKPiA+ICAJCSBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBs YW5lX3N0YXRlKQo+ID4gIHsKPiA+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gdG9faTkxNShwbGFuZS0+YmFzZS5kZXYpOwo+ID4gLQljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1l YnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZiOwo+ID4gIAllbnVtIHBpcGUgcGlwZSA9 IHBsYW5lLT5waXBlOwo+ID4gIAl1MzIgc3ByY3RsID0gcGxhbmVfc3RhdGUtPmN0bCwgc3Byc2Nh bGUgPSAwOwo+ID4gIAl1MzIgc3Byc3VyZl9vZmZzZXQgPSBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxh bmVbMF0ub2Zmc2V0Owo+ID4gQEAgLTg3NywyNyArODg0LDMyIEBAIGl2Yl91cGRhdGVfcGxhbmUo c3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwKPiA+ICAKPiA+ICAJc3Bpbl9sb2NrX2lycXNhdmUo JmRldl9wcml2LT51bmNvcmUubG9jaywgaXJxZmxhZ3MpOwo+ID4gIAo+ID4gKwlJOTE1X1dSSVRF X0ZXKFNQUlNUUklERShwaXBlKSwgcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lWzBdLnN0cmlkZSk7 Cj4gPiArCUk5MTVfV1JJVEVfRlcoU1BSUE9TKHBpcGUpLCAoY3J0Y195IDw8IDE2KSB8IGNydGNf eCk7Cj4gPiArCUk5MTVfV1JJVEVfRlcoU1BSU0laRShwaXBlKSwgKGNydGNfaCA8PCAxNikgfCBj cnRjX3cpOwo+ID4gKwlpZiAoSVNfSVZZQlJJREdFKGRldl9wcml2KSkKPiA+ICsJCUk5MTVfV1JJ VEVfRlcoU1BSU0NBTEUocGlwZSksIHNwcnNjYWxlKTsKPiA+ICsKPiA+ICAJaWYgKGtleS0+Zmxh Z3MpIHsKPiA+ICAJCUk5MTVfV1JJVEVfRlcoU1BSS0VZVkFMKHBpcGUpLCBrZXktPm1pbl92YWx1 ZSk7Cj4gPiAgCQlJOTE1X1dSSVRFX0ZXKFNQUktFWU1BWChwaXBlKSwga2V5LT5tYXhfdmFsdWUp Owo+ID4gIAkJSTkxNV9XUklURV9GVyhTUFJLRVlNU0socGlwZSksIGtleS0+Y2hhbm5lbF9tYXNr KTsKPiA+ICAJfQo+ID4gIAo+ID4gLQlJOTE1X1dSSVRFX0ZXKFNQUlNUUklERShwaXBlKSwgcGxh bmVfc3RhdGUtPmNvbG9yX3BsYW5lWzBdLnN0cmlkZSk7Cj4gPiAtCUk5MTVfV1JJVEVfRlcoU1BS UE9TKHBpcGUpLCAoY3J0Y195IDw8IDE2KSB8IGNydGNfeCk7Cj4gPiAtCj4gPiAgCS8qIEhTVyBj b25zb2xpZGF0ZXMgU1BSVElMRU9GRiBhbmQgU1BSTElOT0ZGIGludG8gYSBzaW5nbGUgU1BST0ZG U0VUCj4gPiAgCSAqIHJlZ2lzdGVyICovCj4gPiAtCWlmIChJU19IQVNXRUxMKGRldl9wcml2KSB8 fCBJU19CUk9BRFdFTEwoZGV2X3ByaXYpKQo+ID4gKwlpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikg fHwgSVNfQlJPQURXRUxMKGRldl9wcml2KSkgewo+ID4gIAkJSTkxNV9XUklURV9GVyhTUFJPRkZT RVQocGlwZSksICh5IDw8IDE2KSB8IHgpOwo+ID4gLQllbHNlIGlmIChmYi0+bW9kaWZpZXIgPT0g STkxNV9GT1JNQVRfTU9EX1hfVElMRUQpCj4gPiArCX0gZWxzZSB7Cj4gPiAgCQlJOTE1X1dSSVRF X0ZXKFNQUlRJTEVPRkYocGlwZSksICh5IDw8IDE2KSB8IHgpOwo+ID4gLQllbHNlCj4gPiAgCQlJ OTE1X1dSSVRFX0ZXKFNQUkxJTk9GRihwaXBlKSwgbGluZWFyX29mZnNldCk7Cj4gPiArCX0KPiA+ ICAKPiA+IC0JSTkxNV9XUklURV9GVyhTUFJTSVpFKHBpcGUpLCAoY3J0Y19oIDw8IDE2KSB8IGNy dGNfdyk7Cj4gPiAtCWlmIChJU19JVllCUklER0UoZGV2X3ByaXYpKQo+ID4gLQkJSTkxNV9XUklU RV9GVyhTUFJTQ0FMRShwaXBlKSwgc3Byc2NhbGUpOwo+ID4gKwkvKgo+ID4gKwkgKiBUaGUgY29u dHJvbCByZWdpc3RlciBzZWxmLWFybXMgaWYgdGhlIHBsYW5lIHdhcyBwcmV2aW91c2x5Cj4gPiAr CSAqIGRpc2FibGVkLiBUcnkgdG8gbWFrZSB0aGUgcGxhbmUgZW5hYmxlIGF0b21pYyBieSB3cml0 aW5nCj4gPiArCSAqIHRoZSBjb250cm9sIHJlZ2lzdGVyIGp1c3QgYmVmb3JlIHRoZSBzdXJmYWNl IHJlZ2lzdGVyLgo+ID4gKwkgKi8KPiA+ICAJSTkxNV9XUklURV9GVyhTUFJDVEwocGlwZSksIHNw cmN0bCk7Cj4gPiAgCUk5MTVfV1JJVEVfRlcoU1BSU1VSRihwaXBlKSwKPiA+ICAJCSAgICAgIGlu dGVsX3BsYW5lX2dndHRfb2Zmc2V0KHBsYW5lX3N0YXRlKSArIHNwcnN1cmZfb2Zmc2V0KTsKPiA+ IEBAIC05MTUsNyArOTI3LDcgQEAgaXZiX2Rpc2FibGVfcGxhbmUoc3RydWN0IGludGVsX3BsYW5l ICpwbGFuZSwgc3RydWN0IGludGVsX2NydGMgKmNydGMpCj4gPiAgCXNwaW5fbG9ja19pcnFzYXZl KCZkZXZfcHJpdi0+dW5jb3JlLmxvY2ssIGlycWZsYWdzKTsKPiA+ICAKPiA+ICAJSTkxNV9XUklU RV9GVyhTUFJDVEwocGlwZSksIDApOwo+ID4gLQkvKiBDYW4ndCBsZWF2ZSB0aGUgc2NhbGVyIGVu YWJsZWQuLi4gKi8KPiA+ICsJLyogRGlzYWJsZSB0aGUgc2NhbGVyICovCj4gPiAgCWlmIChJU19J VllCUklER0UoZGV2X3ByaXYpKQo+ID4gIAkJSTkxNV9XUklURV9GVyhTUFJTQ0FMRShwaXBlKSwg MCk7Cj4gPiAgCUk5MTVfV1JJVEVfRlcoU1BSU1VSRihwaXBlKSwgMCk7Cj4gPiBAQCAtMTAxNyw3 ICsxMDI5LDYgQEAgZzR4X3VwZGF0ZV9wbGFuZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAo+ ID4gIAkJIGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gPiAg ewo+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5l LT5iYXNlLmRldik7Cj4gPiAtCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxh bmVfc3RhdGUtPmJhc2UuZmI7Cj4gPiAgCWVudW0gcGlwZSBwaXBlID0gcGxhbmUtPnBpcGU7Cj4g PiAgCXUzMiBkdnNjbnRyID0gcGxhbmVfc3RhdGUtPmN0bCwgZHZzc2NhbGUgPSAwOwo+ID4gIAl1 MzIgZHZzc3VyZl9vZmZzZXQgPSBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbMF0ub2Zmc2V0Owo+ ID4gQEAgLTEwNDYsMjIgKzEwNTcsMjUgQEAgZzR4X3VwZGF0ZV9wbGFuZShzdHJ1Y3QgaW50ZWxf cGxhbmUgKnBsYW5lLAo+ID4gIAo+ID4gIAlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2X3ByaXYtPnVu Y29yZS5sb2NrLCBpcnFmbGFncyk7Cj4gPiAgCj4gPiArCUk5MTVfV1JJVEVfRlcoRFZTU1RSSURF KHBpcGUpLCBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbMF0uc3RyaWRlKTsKPiA+ICsJSTkxNV9X UklURV9GVyhEVlNQT1MocGlwZSksIChjcnRjX3kgPDwgMTYpIHwgY3J0Y194KTsKPiA+ICsJSTkx NV9XUklURV9GVyhEVlNTSVpFKHBpcGUpLCAoY3J0Y19oIDw8IDE2KSB8IGNydGNfdyk7Cj4gPiAr CUk5MTVfV1JJVEVfRlcoRFZTU0NBTEUocGlwZSksIGR2c3NjYWxlKTsKPiA+ICsKPiA+ICAJaWYg KGtleS0+ZmxhZ3MpIHsKPiA+ICAJCUk5MTVfV1JJVEVfRlcoRFZTS0VZVkFMKHBpcGUpLCBrZXkt Pm1pbl92YWx1ZSk7Cj4gPiAgCQlJOTE1X1dSSVRFX0ZXKERWU0tFWU1BWChwaXBlKSwga2V5LT5t YXhfdmFsdWUpOwo+ID4gIAkJSTkxNV9XUklURV9GVyhEVlNLRVlNU0socGlwZSksIGtleS0+Y2hh bm5lbF9tYXNrKTsKPiA+ICAJfQo+ID4gIAo+ID4gLQlJOTE1X1dSSVRFX0ZXKERWU1NUUklERShw aXBlKSwgcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lWzBdLnN0cmlkZSk7Cj4gPiAtCUk5MTVfV1JJ VEVfRlcoRFZTUE9TKHBpcGUpLCAoY3J0Y195IDw8IDE2KSB8IGNydGNfeCk7Cj4gPiAtCj4gPiAt CWlmIChmYi0+bW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1hfVElMRUQpCj4gCj4gSSBiZWxp ZXZlIHRoaXMgcmVtb3ZlZCBpZiBkZXNlcnZlcyBhIHNlcGFyYXRlZCBwYXRjaC4uLgoKRm9yZ290 IEkgZXZlbiBkaWQgdGhhdCA6KSBCdXQgeWVhaCwgSSdsbCBzcGxpdCB0aGF0IG91dCBpbnRvIGEg c2VwYXJhdGUKcGF0Y2guCgo+IAo+IHRoZSByZXN0IHdhcyBoYXJkIHRvIHJldmlldywgYnV0IGFm dGVyIHlvdSBwb2ludGVkIG91dCBob3cgdG8gY2hlY2sKPiBvbiBic3BlYyB0aGUgYXJtZWQtYnkg ZmllbGQgSSB0aGluayBpdCBhbGwgbWFrZXMgc2Vuc2UuCgpDb29sLiBBbmQgc29ycnkgZm9yIHRo ZSBtZXNzeSBwYXRjaC4gQ291bGRuJ3QgdGhpbmsgb2YgYSBuaWNlIHdheSB0bwpzcGxpdCBpdCBl eGNlcHQgbWF5YmUgIm9uZSByZWdpc3RlciBhdCBhIHRpbWUiIHdoaWNoIHdvdWxkIGhhdmUgYmVl bgphIGJpdCBtdWNoIHBlcmhhcHMuCgo+IAo+ID4gLQkJSTkxNV9XUklURV9GVyhEVlNUSUxFT0ZG KHBpcGUpLCAoeSA8PCAxNikgfCB4KTsKPiA+IC0JZWxzZQo+ID4gLQkJSTkxNV9XUklURV9GVyhE VlNMSU5PRkYocGlwZSksIGxpbmVhcl9vZmZzZXQpOwo+ID4gKwlJOTE1X1dSSVRFX0ZXKERWU1RJ TEVPRkYocGlwZSksICh5IDw8IDE2KSB8IHgpOwo+ID4gKwlJOTE1X1dSSVRFX0ZXKERWU0xJTk9G RihwaXBlKSwgbGluZWFyX29mZnNldCk7Cj4gPiAgCj4gPiAtCUk5MTVfV1JJVEVfRlcoRFZTU0la RShwaXBlKSwgKGNydGNfaCA8PCAxNikgfCBjcnRjX3cpOwo+ID4gLQlJOTE1X1dSSVRFX0ZXKERW U1NDQUxFKHBpcGUpLCBkdnNzY2FsZSk7Cj4gPiArCS8qCj4gPiArCSAqIFRoZSBjb250cm9sIHJl Z2lzdGVyIHNlbGYtYXJtcyBpZiB0aGUgcGxhbmUgd2FzIHByZXZpb3VzbHkKPiA+ICsJICogZGlz YWJsZWQuIFRyeSB0byBtYWtlIHRoZSBwbGFuZSBlbmFibGUgYXRvbWljIGJ5IHdyaXRpbmcKPiA+ ICsJICogdGhlIGNvbnRyb2wgcmVnaXN0ZXIganVzdCBiZWZvcmUgdGhlIHN1cmZhY2UgcmVnaXN0 ZXIuCj4gPiArCSAqLwo+ID4gIAlJOTE1X1dSSVRFX0ZXKERWU0NOVFIocGlwZSksIGR2c2NudHIp Owo+ID4gIAlJOTE1X1dSSVRFX0ZXKERWU1NVUkYocGlwZSksCj4gPiAgCQkgICAgICBpbnRlbF9w bGFuZV9nZ3R0X29mZnNldChwbGFuZV9zdGF0ZSkgKyBkdnNzdXJmX29mZnNldCk7Cj4gPiAtLSAK PiA+IDIuMTguMQo+ID4gCj4gPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwo+ID4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+ID4gSW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwo+ID4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9pbnRlbC1nZngKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcg bGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==