From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Sharma, Swati2" Subject: Re: [RFC] drm/i915: adding state checker for gamma lut values Date: Mon, 25 Mar 2019 11:59:39 +0530 Message-ID: <1adbf27c-0411-e3e4-c0ad-0423318d06d6@intel.com> References: <1552634188-7372-1-git-send-email-swati2.sharma@intel.com> <87o96ch3jm.fsf@intel.com> <6b816617-af80-afdf-9379-b33367cece80@intel.com> <87r2b1en0r.fsf@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id E95186E64B for ; Mon, 25 Mar 2019 06:29:44 +0000 (UTC) In-Reply-To: <87r2b1en0r.fsf@intel.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Jani Nikula , intel-gfx@lists.freedesktop.org Cc: "daniel.vetter@ffwll.ch" , "Nautiyal, Ankit K" List-Id: intel-gfx@lists.freedesktop.org T24gMjAtTWFyLTE5IDY6MTEgUE0sIEphbmkgTmlrdWxhIHdyb3RlOgo+IE9uIFdlZCwgMjAgTWFy IDIwMTksICJTaGFybWEsIFN3YXRpMiIgPHN3YXRpMi5zaGFybWFAaW50ZWwuY29tPiB3cm90ZToK Pj4gT24gMTUtTWFyLTE5IDM6MTcgUE0sIE5pa3VsYSwgSmFuaSB3cm90ZToKPj4+IE9uIEZyaSwg MTUgTWFyIDIwMTksIHN3YXRpMi5zaGFybWFAaW50ZWwuY29tIHdyb3RlOgo+Pj4+IEZyb206IFN3 YXRpIFNoYXJtYSA8c3dhdGkyLnNoYXJtYUBpbnRlbC5jb20+Cj4+Pj4KPj4+PiBBZGRlZCBzdGF0 ZSBjaGVja2VyIHRvIHZhbGlkYXRlIGdhbW1hX2x1dCB2YWx1ZXMuIFRoaXMKPj4+PiByZWFkcyBo YXJkd2FyZSBzdGF0ZSwgYW5kIGNvbXBhcmVzIHRoZSBvcmlnaW5hbGx5IHJlcXVlc3RlZAo+Pj4+ IHN0YXRlIHRvIHRoZSBzdGF0ZSByZWFkIGZyb20gaGFyZHdhcmUuCj4+Pj4KPj4+PiBUaGlzIGlt cGxlbWVudGF0aW9uIGNhbiBiZSB1c2VkIGZvciBHZW45KyBwbGF0Zm9ybXMsCj4+Pj4gSSBoYXZl bid0IGltcGxlbWVudGVkIGl0IGZvciBsZWdhY3kgcGxhdGZvcm1zLiBKdXN0IHdhbnQgdG8gZ2V0 Cj4+Pj4gZmVlZGJhY2sgaWYgdGhpcyBpcyB0aGUgcmlnaHQgYXBwcm9hY2ggdG8gZm9sbG93Lgo+ Pj4+Cj4+Pj4gQWxzbywgaW52ZXJzZSBmdW5jdGlvbiBvZiBkcm1fY29sb3JfbHV0X2V4dHJhY3Qg aXMgbWlzc2luZwo+Pj4+IHRvIGNvbnZlcnQgaGFyZHdhcmUgcmVhZCB2YWx1ZXMgYmFjayB0byB1 c2VyIHZhbHVlcy4KPj4+PiBUaGlua2luZyBmb3IgdGhhdC4gSSBoYXZlIGFkZGVkIGFsbCAiVE9E T3MiIGFuZCAiUGxhY2Vob2xkZXJzIi4KPj4+Pgo+Pj4+IEFub3RoZXIgYXBwcm9hY2g6Cj4+Pj4g U3RvcmluZyAid29yZCIgdG8gYmUgd3JpdHRlbiBpbnRvIGhhcmR3YXJlIGluIGRldl9wcml2IGFu ZAo+Pj4+IGluc3RlYWQgb2YgY29tcGFyaW5nIGJsb2IsIGNvbXBhcmluZyAid29yZCI/IEluIGRl dl9wcml2LAo+Pj4+IG9ubHkgcG9pbnRlciB3aWxsIGJlIHRoZXJlIChzb21ldGhpbmcgbGlrZSAq Z2FtbWFfd29yZCkuCj4+PiBZb3UgY2FuJ3Qgc3RvcmUgaXQgaW4gZGV2X3ByaXYgYmVjYXVzZSBp dCdzIGNydGMgc3RhdGUgc3BlY2lmaWMKPj4+IGRhdGEuIEV2ZW4gaWYgc3RvcmVkIGluIGNydGMg c3RhdGUsIHRoZSBhcHByb2FjaCBkb2Vzbid0IGhlbHAgdGhlCj4+PiBpbml0aWFsIGh3IHN0YXRl IHJlYWRvdXQgYW5kIHRha2VvdmVyLgo+Pj4KPj4+IFBsZWFzZSB1c2UgaW50ZWwtZ2Z4IG1haWxp bmcgbGlzdCBmb3IgaTkxNSBwYXRjaGVzLgo+Pj4KPj4+PiBGb3IgdGhpcyB0b28sIEkgd2lsbCBz ZW5kIGEgcGF0Y2ggdG8gbWFrZSBpdCBtb3JlIGNsZWFyLgo+Pj4+Cj4+Pj4gU2lnbmVkLW9mZi1i eTogU3dhdGkgU2hhcm1hIDxzd2F0aTIuc2hhcm1hQGludGVsLmNvbT4KPj4+PiAtLS0KPj4+PiAg ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgfCAgIDEgKwo+Pj4+ICAgIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbG9yLmMgICB8IDEyNyArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKystLQo+Pj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rp c3BsYXkuYyB8ICA1MCArKysrKysrKysrKysrKwo+Pj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rydi5oICAgICB8ICAgMSArCj4+Pj4gICAgNCBmaWxlcyBjaGFuZ2VkLCAxNzMgaW5z ZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKPj4+Pgo+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aAo+Pj4+IGluZGV4IGM0ZmZlMTkuLmI0MWJmYWEgMTAwNjQ0Cj4+Pj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmgKPj4+PiBAQCAtMzM0LDYgKzMzNCw3IEBAIHN0cnVjdCBkcm1faTkxNV9kaXNwbGF5 X2Z1bmNzIHsKPj4+PiAgICAJICogaW52b2x2ZWQgd2l0aCB0aGUgc2FtZSBjb21taXQuCj4+Pj4g ICAgCSAqLwo+Pj4+ICAgIAl2b2lkICgqbG9hZF9sdXRzKShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7Cj4+Pj4gKwl2b2lkICgqZ2V0X2NvbmZpZykoc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpOwo+Pj4gVGhlIG5hbWUgaXMgdG9vIGdlbmVyaWMu Cj4+Pgo+Pj4+ICAgIH07Cj4+Pj4gICAgCj4+Pj4gICAgI2RlZmluZSBDU1JfVkVSU0lPTihtYWpv ciwgbWlub3IpCSgobWFqb3IpIDw8IDE2IHwgKG1pbm9yKSkKPj4+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29sb3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2NvbG9yLmMKPj4+PiBpbmRleCBkYTdhMDdkLi5hNTE1ZTlmIDEwMDY0NAo+Pj4+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbG9yLmMKPj4+PiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9jb2xvci5jCj4+Pj4gQEAgLTc0LDYgKzc0LDExIEBACj4+Pj4gICAg I2RlZmluZSBJTEtfQ1NDX0NPRUZGXzFfMAkJXAo+Pj4+ICAgIAkoKDcgPDwgMTIpIHwgSUxLX0NT Q19DT0VGRl9GUChDVE1fQ09FRkZfMV8wLCA4KSkKPj4+PiAgICAKPj4+PiArLyogTWFzayB0byBl eHRyYWN0IFJHQiB2YWx1ZXMgZnJvbSByZWdpc3RlcnMgKi8KPj4+PiArI2RlZmluZSBDT0xPUl9C TFVFX01BU0sgICAgICAgICAweDAwMDAwM0ZGICAgICAgICAgICAgICAvKiA5OjAgKi8KPj4+PiAr I2RlZmluZSBDT0xPUl9HUkVFTl9NQVNLICAgICAgICAweDAwMEZGQzAwICAgICAgICAgICAgICAv KiAxOToxMCAqLwo+Pj4+ICsjZGVmaW5lIENPTE9SX1JFRF9NQVNLICAgICAgICAgIDB4M0ZGMDAw MDAgICAgICAgICAgICAgIC8qIDI5OjIwICovCj4+PiBUaGVzZSBiZWxvbmcgaW4gaTkxNV9yZWcu aCwgYW5kIHlvdSBuZWVkIHBsYXRmb3JtIHNwZWNpZmljIHNoaWZ0cyBhbmQKPj4+IG1hc2tzLiBU aGUgY29kZSB0aGF0IHdyaXRlcyB0aGUgcmVnaXN0ZXJzIHNlZW1zIHRvIHVzZSBtYWdpYyBudW1i ZXJzLi4uCj4+Pgo+Pj4+ICsKPj4+PiAgICBzdGF0aWMgYm9vbCBsdXRfaXNfbGVnYWN5KGNvbnN0 IHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqbHV0KQo+Pj4+ICAgIHsKPj4+PiAgICAJcmV0dXJu IGRybV9jb2xvcl9sdXRfc2l6ZShsdXQpID09IExFR0FDWV9MVVRfTEVOR1RIOwo+Pj4+IEBAIC02 NzIsNiArNjc3LDk3IEBAIHN0YXRpYyB2b2lkIGNoZXJyeXZpZXdfbG9hZF9sdXRzKGNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+Pj4+ICAgIAlpOXh4X2xvYWRfbHV0 c19pbnRlcm5hbChjcnRjX3N0YXRlLCBOVUxMKTsKPj4+PiAgICB9Cj4+Pj4gICAgCj4+Pj4gK3N0 YXRpYyB2b2lkIGJkd19nZXRfZ2FtbWFfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlLCB1MzIgb2Zmc2V0KQo+Pj4+ICt7Cj4+Pj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKPj4+PiArCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5iYXNlLmRldjsKPj4+PiArCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+Pj4+ICsJdTMy IGksIHRtcCwgbHV0X3NpemUgPSBJTlRFTF9JTkZPKGRldl9wcml2KS0+Y29sb3IuZ2FtbWFfbHV0 X3NpemU7Cj4+Pj4gKwllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7Cj4+Pj4gKwlzdHJ1Y3Qg ZHJtX3Byb3BlcnR5X2Jsb2IgKmJsb2IgPSBOVUxMOwo+Pj4+ICsJc3RydWN0IGRybV9jb2xvcl9s dXQgKmJsb2JfZGF0YTsKPj4+PiArCj4+Pj4gKwlXQVJOX09OKG9mZnNldCAmIH5QQUxfUFJFQ19J TkRFWF9WQUxVRV9NQVNLKTsKPj4+PiArCj4+Pj4gKwlJOTE1X1dSSVRFKFBSRUNfUEFMX0lOREVY KHBpcGUpLAo+Pj4+ICsJCQkob2Zmc2V0ID8gUEFMX1BSRUNfU1BMSVRfTU9ERSA6IDApIHwKPj4+ PiArCQkJUEFMX1BSRUNfQVVUT19JTkNSRU1FTlQgfAo+Pj4+ICsJCQlvZmZzZXQpOwo+Pj4+ICsK Pj4+PiArCWJsb2IgPSBkcm1fcHJvcGVydHlfY3JlYXRlX2Jsb2IoZGV2LAo+Pj4+ICsJCQlzaXpl b2Yoc3RydWN0IGRybV9jb2xvcl9sdXQpICogbHV0X3NpemUsCj4+Pj4gKwkJCU5VTEwpOwo+Pj4+ ICsJaWYgKElTX0VSUihibG9iKSkKPj4+PiArCQlyZXR1cm47Cj4+Pj4gKwo+Pj4+ICsJYmxvYl9k YXRhID0gYmxvYi0+ZGF0YTsKPj4+PiArCj4+Pj4gKwlmb3IgKGkgPSAwOyBpIDwgbHV0X3NpemU7 IGkrKykgewo+Pj4+ICsJCXRtcCA9IEk5MTVfUkVBRChQUkVDX1BBTF9EQVRBKHBpcGUpKTsKPj4+ PiArCQkvKgo+Pj4+ICsJCSAqIFRPRE86IGNvbnZlcnQgUkdCIHZhbHVlIHJlYWQgZnJvbSByZWdp c3RlciBpbnRvIGNvcnJlc3BvbmRpbmcgdXNlciB2YWx1ZSB1c2luZwo+Pj4+ICsJCSAqIHNvbWUg d3JhcHBlciBsaWtlIGRybV9jb2xvcl9sdXRfcHV0KCkgKG9yKSBpbnRlbF9jb2xvcl9sdXRfcHV0 KCkgc28gdGhhdCBpdAo+Pj4+ICsJCSAqIGNhbiBiZSBjb21wYXJlZCBsYXRlci4KPj4+PiArCQkg Ki8KPj4+IFllYWgsIHlvdSdsbCBuZWVkIHRoaXMuCj4+IENhbiB5b3UgcGxlYXNlIGhlbHAgaW4g dGhpcz8KPiBTb21ldGhpbmcgbGlrZSB0aGlzOgo+Cj4gLyogY29udmVydCBodyB2YWx1ZSB3aXRo IGdpdmVuIGJpdF9wcmVjaXNpb24gdG8gbHV0IHByb3BlcnR5IHZhbCAqLwo+IHUzMiBkcm1fY29s b3JfbHV0X3BhY2sodTMyIHZhbCwgdTMyIGJpdF9wcmVjaXNpb24pCj4gewo+IAl1MzIgbWF4ID0g MHhmZmZmID4+ICgxNiAtIGJpdF9wcmVjaXNpb24pOwo+Cj4gCXZhbCA9IGNsYW1wX3ZhbCh2YWws IDAsIG1heCk7Cj4KPiAJaWYgKGJpdF9wcmVjaXNpb24gPCAxNikKPiAJCXZhbCA8PD0gMTYgLSBi aXRfcHJlY2lzaW9uOwo+Cj4gCXJldHVybiB2YWw7Cj4gfQo+Cj4gLyogY29tcGFyZSB0d28gbHV0 IHByb3BlcnR5IHZhbHVlcyB3aXRoIGdpdmVuIGJpdF9wcmVjaXNpb24gKi8KPiBib29sIGRybV9j b2xvcl9sdXRfbWF0Y2godTMyIGEsIHUzMiBiLCB1MzIgYml0X3ByZWNpc2lvbikKPiB7Cj4gCXUz MiBlcnIgPSAweGZmZmYgPj4gYml0X3ByZWNpc2lvbjsKPgo+IAlyZXR1cm4gYWJzKChsb25nKWEg LSBiKSA8PSBlcnI7Cj4gfQo+Cj4gSSBkaWRuJ3QgZG91YmxlIGNoZWNrIHRoZSBtYXRoLCBidXQg aXQncyBwcm9iYWJseSBjbG9zZSBlbm91Z2ggZm9yCj4gc3RhcnRlcnMuIDspCj4KPgo+Cj4gQlIs Cj4gSmFuaS4KSGkgSmFuaSwKU2luY2Ugd2UgYXJlIG5vdCBoYXZpbmcgYXBwbGUgdG8gYXBwbGUg Y29tcGFyaXNvbiwgY2FuJ3QgaXQgbGVhdmUgc29tZSAKY29ybmVyIGNhc2VzPyBXZSBhcmUgbm90 IGNvbXBhcmluZyBkYXRhIHdoaWNoIGlzIGJlaW5nIHdyaXR0ZW4gaW50byBoL3cgCmV4YWN0bHkg dG8gd2hhdCBpcyBiZWluZyByZWFkLiBGb3IgaW5zdGFuY2UgZHVyaW5nIHJvdW5kIG9mZiB3ZSBt YXkgdGFrZSAKdGhlIGNlaWxpbmcgdmFsdWUgb2YgUkdCIGRhdGEsIHdoaWxlIHJlYWRpbmcgcmVn aXN0ZXIgaWYgd2UgZ2V0IHRoZSAKZmxvb3IgdmFsdWUgb2YgUkdCIGRhdGEsIHRoaXMgbG9naWMg bWlnaHQgbm90IGNhdGNoIHRoZSBpc3N1ZSBjb3ogdGhlIAphYnMgZGlmZmVyZW5jZSBmcm9tIHRo ZSBhY3R1YWwgUkdCIHZhbHVlIG1heSBmYWxsIGluc2lkZSB0aGUgZXJyb3IgcmFuZ2UgCmJ1dCBz dGlsbCBpbmRpdmlkdWFsIHZhbHVlcyB3b24ndCBiZSBlcXVhbC4KU28sIGlzIGl0IHRoZSBvbmx5 IHdheSB0byBwcm9jZWVkPwoKPgo+Cj4KPj4+PiArCQlibG9iX2RhdGFbaV0ucmVkID0gKHRtcCAm IENPTE9SX1JFRF9NQVNLKSA+PiAyMDsKPj4+PiArCQlibG9iX2RhdGFbaV0uZ3JlZW4gPSAodG1w ICYgQ09MT1JfR1JFRU5fTUFTSykgPj4gMTA7Cj4+Pj4gKwkJYmxvYl9kYXRhW2ldLmJsdWUgPSB0 bXAgJiBDT0xPUl9CTFVFX01BU0s7Cj4+Pj4gKwl9Cj4+Pj4gKwo+Pj4+ICsJSTkxNV9XUklURShQ UkVDX1BBTF9JTkRFWChwaXBlKSwgMCk7Cj4+Pj4gKwo+Pj4+ICsJY3J0Y19zdGF0ZS0+YmFzZS5n YW1tYV9sdXQgPSBibG9iOwo+Pj4+ICt9Cj4+Pj4gKwo+Pj4+ICtzdGF0aWMgdm9pZCBpOXh4X2dl dF9jb25maWcoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4+PiBQbGVhc2Ug aW5jbHVkZSAoZGUpZ2FtbWEgb3IgY29sb3IgaW4gdGhlIGZ1bmN0aW9uIG5hbWVzLgo+Pj4KPj4+ PiArewo+Pj4+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNf c3RhdGUtPmJhc2UuY3J0Yyk7Cj4+Pj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ YmFzZS5kZXY7Cj4+Pj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KGNydGMtPmJhc2UuZGV2KTsKPj4+PiArCXUzMiBpLCB0bXA7Cj4+Pj4gKwllbnVtIHBpcGUg cGlwZSA9IGNydGMtPnBpcGU7Cj4+Pj4gKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmJsb2Ig PSBOVUxMOwo+Pj4+ICsJc3RydWN0IGRybV9jb2xvcl9sdXQgKmJsb2JfZGF0YTsKPj4+PiArCj4+ Pj4gKwlibG9iID0gZHJtX3Byb3BlcnR5X2NyZWF0ZV9ibG9iKGRldiwKPj4+PiArCQkJCQlzaXpl b2Yoc3RydWN0IGRybV9jb2xvcl9sdXQpICogMjU2LAo+Pj4+ICsJCQkJCU5VTEwpOwo+Pj4+ICsJ aWYgKElTX0VSUihibG9iKSkKPj4+PiArCQlyZXR1cm47Cj4+Pj4gKwo+Pj4+ICsJYmxvYl9kYXRh ID0gYmxvYi0+ZGF0YTsKPj4+PiArCj4+Pj4gKwlmb3IgKGkgPSAwOyBpIDwgMjU2OyBpKyspIHsK Pj4+PiArCQlpZiAoSEFTX0dNQ0goZGV2X3ByaXYpKQo+Pj4+ICsJCQl0bXAgPSBJOTE1X1JFQUQo UEFMRVRURShwaXBlLCBpKSk7Cj4+Pj4gKwkJZWxzZQo+Pj4+ICsJCQl0bXAgPSBJOTE1X1JFQUQo TEdDX1BBTEVUVEUocGlwZSwgaSkpOwo+Pj4+ICsJCS8qCj4+Pj4gKwkJICogVE9ETzogY29udmVy dCBSR0IgdmFsdWUgcmVhZCBmcm9tIHJlZ2lzdGVyIGludG8gY29ycmVzcG9uZGluZyB1c2VyIHZh bHVlIHVzaW5nCj4+Pj4gKwkJICogc29tZSB3cmFwcGVyIGxpa2UgZHJtX2NvbG9yX2x1dF9wdXQo KSAob3IpIGludGVsX2NvbG9yX2x1dF9wdXQoKSBzbyB0aGF0IGl0Cj4+Pj4gKwkJICogY2FuIGJl IGNvbXBhcmVkIGxhdGVyLgo+Pj4+ICsJCSAqLwo+Pj4+ICsJCWJsb2JfZGF0YVtpXS5yZWQgPSAo dG1wICYgQ09MT1JfUkVEX01BU0spID4+IDIwOwo+Pj4+ICsJCWJsb2JfZGF0YVtpXS5ncmVlbiA9 ICh0bXAgJiBDT0xPUl9HUkVFTl9NQVNLKSA+PiAxMDsKPj4+PiArCQlibG9iX2RhdGFbaV0uYmx1 ZSA9ICh0bXAgJiBDT0xPUl9CTFVFX01BU0spOwo+Pj4+ICsJfQo+Pj4+ICsKPj4+PiArCWNydGNf c3RhdGUtPmJhc2UuZ2FtbWFfbHV0ID0gYmxvYjsKPj4+PiArfQo+Pj4+ICsKPj4+PiArc3RhdGlj IHZvaWQgaWNsX2dldF9jb25maWcoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUp Cj4+Pj4gK3sKPj4+PiArCS8qCj4+Pj4gKwkgKiBUT0RPOiBwbGFjZWhvbGRlciBmb3IgZGVnYW1t YSB2YWxpZGF0aW9uCj4+Pj4gKwkgKiBnbGtfZ2V0X2RlZ2FtbWFfY29uZmlnKGNydGNfc3RhdGUs IDApOwo+Pj4+ICsJICovCj4+Pj4gKwo+Pj4+ICsJaWYgKGNydGNfc3RhdGVfaXNfbGVnYWN5X2dh bW1hKGNydGNfc3RhdGUpKQo+Pj4+ICsJCWk5eHhfZ2V0X2NvbmZpZyhjcnRjX3N0YXRlKTsKPj4+ PiArCWVsc2UKPj4+PiArCQliZHdfZ2V0X2dhbW1hX2NvbmZpZyhjcnRjX3N0YXRlLCAwKTsKPj4+ PiArfQo+Pj4+ICsKPj4+PiAgICB2b2lkIGludGVsX2NvbG9yX2xvYWRfbHV0cyhjb25zdCBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPj4+PiAgICB7Cj4+Pj4gICAgCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Y19zdGF0ZS0+YmFzZS5j cnRjLT5kZXYpOwo+Pj4+IEBAIC02NzksNiArNzc1LDEzIEBAIHZvaWQgaW50ZWxfY29sb3JfbG9h ZF9sdXRzKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+Pj4+ICAg IAlkZXZfcHJpdi0+ZGlzcGxheS5sb2FkX2x1dHMoY3J0Y19zdGF0ZSk7Cj4+Pj4gICAgfQo+Pj4+ ICAgIAo+Pj4+ICt2b2lkIGludGVsX2NvbG9yX2dldF9jb25maWcoc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUpCj4+Pj4gK3sKPj4+PiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjLT5kZXYpOwo+Pj4+ICsK Pj4+PiArCWRldl9wcml2LT5kaXNwbGF5LmdldF9jb25maWcoY3J0Y19zdGF0ZSk7Cj4+PiBUaGlz IHdpbGwgb29wcyBvbiBwbGF0Zm9ybXMgd2hlcmUgeW91IGhhdmVuJ3QgaW1wbGVtZW50ZWQgaXQg eWV0Lgo+Pj4KPj4+PiArfQo+Pj4+ICsKPj4+PiAgICB2b2lkIGludGVsX2NvbG9yX2NvbW1pdChj b25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPj4+PiAgICB7Cj4+Pj4g ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Y19zdGF0 ZS0+YmFzZS5jcnRjLT5kZXYpOwo+Pj4+IEBAIC04MzMsMjIgKzkzNiwzNCBAQCB2b2lkIGludGVs X2NvbG9yX2luaXQoc3RydWN0IGludGVsX2NydGMgKmNydGMpCj4+Pj4gICAgCj4+Pj4gICAgCWRy bV9tb2RlX2NydGNfc2V0X2dhbW1hX3NpemUoJmNydGMtPmJhc2UsIDI1Nik7Cj4+Pj4gICAgCj4+ Pj4gKwkvKgo+Pj4+ICsJICogVE9ETzogSW4gdGhlIGZvbGxvd2luZyBpZiBsYWRkZXIsIGtlcHQg cGxhY2Vob2xkZXJzCj4+Pj4gKwkgKiBmb3IgZXh0ZW5kaW5nIGx1dCB2YWxpZGF0aW9uIGZvciBs ZWdhY3kgcGxhdGZvcm1zLgo+Pj4+ICsJICovCj4+PiBJIHRoaW5rIGFkZGluZyB0aGUgcGxhY2Vo b2xkZXIgY29tbWVudHMgaXMgdG9vIG1lc3N5Lgo+Pj4KPj4+PiAgICAJaWYgKEhBU19HTUNIKGRl dl9wcml2KSkgewo+Pj4+IC0JCWlmIChJU19DSEVSUllWSUVXKGRldl9wcml2KSkKPj4+PiArCQlp ZiAoSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpIHsKPj4+PiAgICAJCQlkZXZfcHJpdi0+ZGlzcGxh eS5sb2FkX2x1dHMgPSBjaGVycnl2aWV3X2xvYWRfbHV0czsKPj4+PiAtCQllbHNlCj4+Pj4gKwkJ CSAvKiBkZXZfcHJpdi0+ZGlzcGxheS5nZXRfY29uZmlnID0gY2hlcnJ5dmlld19nZXRfY29uZmln OyAqLwo+Pj4+ICsJCX0gZWxzZSB7Cj4+Pj4gICAgCQkJZGV2X3ByaXYtPmRpc3BsYXkubG9hZF9s dXRzID0gaTl4eF9sb2FkX2x1dHM7Cj4+Pj4gKwkJCWRldl9wcml2LT5kaXNwbGF5LmdldF9jb25m aWcgPSBpOXh4X2dldF9jb25maWc7Cj4+Pj4gKwkJfQo+Pj4+ICAgIAo+Pj4+ICAgIAkJZGV2X3By aXYtPmRpc3BsYXkuY29sb3JfY29tbWl0ID0gaTl4eF9jb2xvcl9jb21taXQ7Cj4+Pj4gICAgCX0g ZWxzZSB7Cj4+Pj4gLQkJaWYgKElTX0lDRUxBS0UoZGV2X3ByaXYpKQo+Pj4+ICsJCWlmIChJU19J Q0VMQUtFKGRldl9wcml2KSkgewo+Pj4+ICAgIAkJCWRldl9wcml2LT5kaXNwbGF5LmxvYWRfbHV0 cyA9IGljbF9sb2FkX2x1dHM7Cj4+Pj4gLQkJZWxzZSBpZiAoSVNfQ0FOTk9OTEFLRShkZXZfcHJp dikgfHwgSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpCj4+Pj4gKwkJCWRldl9wcml2LT5kaXNwbGF5 LmdldF9jb25maWcgPSBpY2xfZ2V0X2NvbmZpZzsKPj4+PiArCQl9IGVsc2UgaWYgKElTX0NBTk5P TkxBS0UoZGV2X3ByaXYpIHx8IElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKSB7Cj4+Pj4gICAgCQkJ ZGV2X3ByaXYtPmRpc3BsYXkubG9hZF9sdXRzID0gZ2xrX2xvYWRfbHV0czsKPj4+PiAtCQllbHNl IGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkgfHwgSVNfQlJPQURXRUxMKGRldl9wcml2KSkK Pj4+PiArCQkJLyogZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2NvbmZpZyA9IGdsa19nZXRfY29uZmln OyAqLwo+Pj4+ICsJCX0gZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5IHx8IElTX0JS T0FEV0VMTChkZXZfcHJpdikpIHsKPj4+PiAgICAJCQlkZXZfcHJpdi0+ZGlzcGxheS5sb2FkX2x1 dHMgPSBicm9hZHdlbGxfbG9hZF9sdXRzOwo+Pj4+IC0JCWVsc2UKPj4+PiArCQkJLyogZGV2X3By aXYtPmRpc3BsYXkuZ2V0X2NvbmZpZyA9IGJyb2Fkd2VsbF9nZXRfY29uZmlnOyAqLwo+Pj4+ICsJ CX0gZWxzZSB7Cj4+Pj4gICAgCQkJZGV2X3ByaXYtPmRpc3BsYXkubG9hZF9sdXRzID0gaTl4eF9s b2FkX2x1dHM7Cj4+Pj4gKwkJCWRldl9wcml2LT5kaXNwbGF5LmdldF9jb25maWcgPSBpOXh4X2dl dF9jb25maWc7Cj4+Pj4gKwkJfQo+Pj4+ICAgIAo+Pj4+ICAgIAkJaWYgKElOVEVMX0dFTihkZXZf cHJpdikgPj0gOSkKPj4+PiAgICAJCQlkZXZfcHJpdi0+ZGlzcGxheS5jb2xvcl9jb21taXQgPSBz a2xfY29sb3JfY29tbWl0Owo+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPj4+ PiBpbmRleCA5NjNiNGJkLi4xNjVkNzk3IDEwMDY0NAo+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rpc3BsYXkuYwo+Pj4+IEBAIC04MjEyLDYgKzgyMTIsMTEgQEAgc3RhdGljIGJvb2wgaTl4 eF9nZXRfcGlwZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4+Pj4gICAgCj4+Pj4g ICAgCWk5eHhfZ2V0X3BpcGVfY29sb3JfY29uZmlnKHBpcGVfY29uZmlnKTsKPj4+PiAgICAKPj4+ PiArCS8qCj4+Pj4gKwkgKiBUT0RPOiBZZXQgdG8gaW1wbGVtZW50IGZvciBsZWdhY3kgcGxhdGZv cm1zCj4+Pj4gKwkgKiBpbnRlbF9jb2xvcl9nZXRfY29uZmlnKHBpcGVfY29uZmlnKTsKPj4+PiAr CSAqLwo+Pj4+ICsKPj4+IEknbSBub3Qgc3VyZSBhYm91dCBhZGRpbmcgdGhlc2UgY29tbWVudHMg ZWl0aGVyLgo+Pj4KPj4+PiAgICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA0KQo+Pj4+ICAg IAkJcGlwZV9jb25maWctPmRvdWJsZV93aWRlID0gdG1wICYgUElQRUNPTkZfRE9VQkxFX1dJREU7 Cj4+Pj4gICAgCj4+Pj4gQEAgLTkyODQsNiArOTI4OSwxMSBAQCBzdGF0aWMgYm9vbCBpcm9ubGFr ZV9nZXRfcGlwZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4+Pj4gICAgCj4+Pj4g ICAgCWk5eHhfZ2V0X3BpcGVfY29sb3JfY29uZmlnKHBpcGVfY29uZmlnKTsKPj4+PiAgICAKPj4+ PiArCS8qCj4+Pj4gKwkgKiBUT0RPOiBZZXQgdG8gaW1wbGVtZW50IGZvciBsZWdhY3kgcGxhdGZv cm1zCj4+Pj4gKwkgKiBpbnRlbF9jb2xvcl9nZXRfY29uZmlnKHBpcGVfY29uZmlnKTsKPj4+PiAr CSAqLwo+Pj4+ICsKPj4+PiAgICAJaWYgKEk5MTVfUkVBRChQQ0hfVFJBTlNDT05GKGNydGMtPnBp cGUpKSAmIFRSQU5TX0VOQUJMRSkgewo+Pj4+ICAgIAkJc3RydWN0IGludGVsX3NoYXJlZF9kcGxs ICpwbGw7Cj4+Pj4gICAgCQllbnVtIGludGVsX2RwbGxfaWQgcGxsX2lkOwo+Pj4+IEBAIC05OTMy LDYgKzk5NDIsOCBAQCBzdGF0aWMgYm9vbCBoYXN3ZWxsX2dldF9waXBlX2NvbmZpZyhzdHJ1Y3Qg aW50ZWxfY3J0YyAqY3J0YywKPj4+PiAgICAJCWk5eHhfZ2V0X3BpcGVfY29sb3JfY29uZmlnKHBp cGVfY29uZmlnKTsKPj4+PiAgICAJfQo+Pj4+ICAgIAo+Pj4+ICsJaW50ZWxfY29sb3JfZ2V0X2Nv bmZpZyhwaXBlX2NvbmZpZyk7Cj4+Pj4gKwo+Pj4+ICAgIAlwb3dlcl9kb21haW4gPSBQT1dFUl9E T01BSU5fUElQRV9QQU5FTF9GSVRURVIoY3J0Yy0+cGlwZSk7Cj4+Pj4gICAgCWlmIChpbnRlbF9k aXNwbGF5X3Bvd2VyX2dldF9pZl9lbmFibGVkKGRldl9wcml2LCBwb3dlcl9kb21haW4pKSB7Cj4+ Pj4gICAgCQlXQVJOX09OKHBvd2VyX2RvbWFpbl9tYXNrICYgQklUX1VMTChwb3dlcl9kb21haW4p KTsKPj4+PiBAQCAtMTE5OTAsNiArMTIwMDIsMzQgQEAgc3RhdGljIGJvb2wgZmFzdGJvb3RfZW5h YmxlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+Pj4gICAgCXJldHVybiBm YWxzZTsKPj4+PiAgICB9Cj4+Pj4gICAgCj4+Pj4gK3N0YXRpYyBib29sIGludGVsX2NvbXBhcmVf YmxvYihzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmJsb2IxLAo+Pj4+ICsJCQkgICAgICAgc3Ry dWN0IGRybV9wcm9wZXJ0eV9ibG9iICpibG9iMikKPj4+PiArewo+Pj4+ICsJc3RydWN0IGRybV9j b2xvcl9sdXQgKnN3X2x1dCA9IGJsb2IxLT5kYXRhOwo+Pj4+ICsJc3RydWN0IGRybV9jb2xvcl9s dXQgKmh3X2x1dCA9IGJsb2IyLT5kYXRhOwo+Pj4+ICsJaW50IHN3X2x1dF9zaXplLCBod19sdXRf c2l6ZTsKPj4+PiArCWludCBpOwo+Pj4+ICsKPj4+PiArCXN3X2x1dF9zaXplID0gZHJtX2NvbG9y X2x1dF9zaXplKGJsb2IxKTsKPj4+PiArCWh3X2x1dF9zaXplID0gZHJtX2NvbG9yX2x1dF9zaXpl KGJsb2IyKTsKPj4+PiArCj4+Pj4gKwlpZiAoc3dfbHV0X3NpemUgIT0gaHdfbHV0X3NpemUpIHsK Pj4+PiArCQlEUk1fREVCVUdfS01TKCJJbnZhbGlkIExVVCBzaXplOyBnb3QgJWQsIGV4cGVjdGVk ICVkXG4iLCBod19sdXRfc2l6ZSwgc3dfbHV0X3NpemUpOwo+Pj4gUGxlYXNlIGRvbid0IGFkZCB0 aGVzZSBkZWJ1ZyBsb2dzIGhlcmUuIEluc3RlYWQsIGFkZCBhIHNlcGFyYXRlIGZ1bmN0aW9uCj4+ PiB0byBsb2cgZXJyb3JzIGF0IHRoZSBoaWdoZXIgbGV2ZWwuIENvbnRyYXN0IFBJUEVfQ09ORl9D SEVDS19JTkZPRlJBTUUoKQo+Pj4gYW5kIHBpcGVfY29uZmlnX2luZm9mcmFtZV9lcnIoKS4gVGhh dCBjYW4gY29tZSBhcyBhIGZvbGxvdy11cAo+Pj4gaW1wcm92ZW1lbnQsIGJ1dCB0aGUgZGVidWcg bG9ncyBoZXJlIGFyZSB1bm5lY2Vzc2FyeS4KPj4+Cj4+Pj4gKwkJcmV0dXJuIGZhbHNlOwo+Pj4+ ICsJfQo+Pj4+ICsKPj4+PiArCWZvciAoaSA9IDA7IGkgPCBzd19sdXRfc2l6ZTsgaSsrKSB7Cj4+ Pj4gKwkJaWYgKGh3X2x1dFtpXS5yZWQgIT0gc3dfbHV0W2ldLnJlZCB8fAo+Pj4+ICsJCSAgICBo d19sdXRbaV0uYmx1ZSAhPSBzd19sdXRbaV0uYmx1ZSB8fAo+Pj4+ICsJCSAgICBod19sdXRbaV0u Z3JlZW4gIT0gc3dfbHV0W2ldLmdyZWVuKSB7Cj4+Pj4gKwkJCURSTV9ERUJVR19LTVMoIkludmFs aWQgTFVUIHZhbHVlOyBzd19sdXQgdmFsdWUgZG9lc24ndCBtYXRjaCBod19sdXQgdmFsdWVcbiIp Owo+Pj4+ICsJCQlyZXR1cm4gZmFsc2U7Cj4+Pj4gKwkJfQo+Pj4+ICsJfQo+Pj4+ICsKPj4+PiAr CXJldHVybiB0cnVlOwo+Pj4+ICt9Cj4+Pj4gKwo+Pj4gSSdkIHB1dCB0aGlzIGluIGludGVsX2Nv bG9yLmMgYW5kIG5hbWUgaXQgcHJvcGVybHkuIFlvdSBjYW4ndCB1c2UgaXQgdG8KPj4+IGNvbXBh cmUgcmFuZG9tIGJsb2JzLCBhbmQgdGhlIGNvbXBhcmlzb24gbmVlZHMgdG8gdGFrZSBwbGF0Zm9y bSBzcGVjaWZpYwo+Pj4gYml0IHByZWNpc2lvbiBvZiB0aGUgcmVhZG91dCBpbnRvIGFjY291bnQu Cj4+Pgo+Pj4gVGhlIGJsb2JzIG1heSBiZSBOVUxMLgo+Pj4KPj4+PiAgICBzdGF0aWMgYm9vbAo+ Pj4+ICAgIGludGVsX3BpcGVfY29uZmlnX2NvbXBhcmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAo+Pj4+ICAgIAkJCSAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmN1cnJlbnRf Y29uZmlnLAo+Pj4+IEBAIC0xMjE0OCw2ICsxMjE4OCwxNCBAQCBzdGF0aWMgYm9vbCBmYXN0Ym9v dF9lbmFibGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4+PiAgICAJfSBc Cj4+Pj4gICAgfSB3aGlsZSAoMCkKPj4+PiAgICAKPj4+PiArI2RlZmluZSBQSVBFX0NPTkZfQ0hF Q0tfQkxPQihuYW1lKSBkbyB7IFwKPj4+IENIRUNLX0xVVCBvciBDSEVDS19DT0xPUl9MVVQgb3Ig c29tZXRoaW5nLCBub3QganVzdCBDSEVDS19CTE9CLgo+Pj4KPj4+PiArCWlmICghaW50ZWxfY29t cGFyZV9ibG9iKGN1cnJlbnRfY29uZmlnLT5uYW1lLCBwaXBlX2NvbmZpZy0+bmFtZSkpIHsgXAo+ Pj4+ICsJCXBpcGVfY29uZmlnX2VycihhZGp1c3QsIF9fc3RyaW5naWZ5KG5hbWUpLCBcCj4+Pj4g KwkJCQkiaHdfc3RhdGUgZG9lc24ndCBtYXRjaCBzd19zdGF0ZVxuIik7IFwKPj4+PiArCQlyZXQg PSBmYWxzZTsgXAo+Pj4+ICsJfSBcCj4+Pj4gK30gd2hpbGUgKDApCj4+Pj4gKwo+Pj4+ICAgICNk ZWZpbmUgUElQRV9DT05GX1FVSVJLKHF1aXJrKSBcCj4+Pj4gICAgCSgoY3VycmVudF9jb25maWct PnF1aXJrcyB8IHBpcGVfY29uZmlnLT5xdWlya3MpICYgKHF1aXJrKSkKPj4+PiAgICAKPj4+PiBA QCAtMTIyODcsNiArMTIzMzUsOCBAQCBzdGF0aWMgYm9vbCBmYXN0Ym9vdF9lbmFibGVkKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4+PiAgICAJUElQRV9DT05GX0NIRUNLX0lO Rk9GUkFNRShzcGQpOwo+Pj4+ICAgIAlQSVBFX0NPTkZfQ0hFQ0tfSU5GT0ZSQU1FKGhkbWkpOwo+ Pj4+ICAgIAo+Pj4+ICsJUElQRV9DT05GX0NIRUNLX0JMT0IoYmFzZS5nYW1tYV9sdXQpOwo+Pj4+ ICsKPj4+PiAgICAjdW5kZWYgUElQRV9DT05GX0NIRUNLX1gKPj4+PiAgICAjdW5kZWYgUElQRV9D T05GX0NIRUNLX0kKPj4+PiAgICAjdW5kZWYgUElQRV9DT05GX0NIRUNLX0JPT0wKPj4+PiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcnYuaAo+Pj4+IGluZGV4IDQwZWJjOTQuLmE2YWNkOWIgMTAwNjQ0Cj4+ Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPj4+PiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+Pj4+IEBAIC0yNTEyLDYgKzI1MTIsNyBAQCBp bnQgaW50ZWxfcGxhbmVfYXRvbWljX2NoZWNrX3dpdGhfc3RhdGUoY29uc3Qgc3RydWN0IGludGVs X2NydGNfc3RhdGUgKm9sZF9jcnRjXwo+Pj4+ICAgIGludCBpbnRlbF9jb2xvcl9jaGVjayhzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7Cj4+Pj4gICAgdm9pZCBpbnRlbF9jb2xv cl9jb21taXQoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpOwo+Pj4+ ICAgIHZvaWQgaW50ZWxfY29sb3JfbG9hZF9sdXRzKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlKTsKPj4+PiArdm9pZCBpbnRlbF9jb2xvcl9nZXRfY29uZmlnKHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKTsKPj4+PiAgICAKPj4+PiAgICAvKiBpbnRl bF9sc3Bjb24uYyAqLwo+Pj4+ICAgIGJvb2wgbHNwY29uX2luaXQoc3RydWN0IGludGVsX2RpZ2l0 YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQpOwoKCi0tIAp+U3dhdGkgU2hhcm1hCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBs aXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=