From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH] drm: Add optional COLOR_ENCODING and COLOR_RANGE properties to drm_plane Date: Tue, 6 Feb 2018 20:35:08 +0200 Message-ID: <20180206183508.GR5453@intel.com> References: <20180206175857.GP5453@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 426F089F03 for ; Tue, 6 Feb 2018 18:35:17 +0000 (UTC) Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Jyri Sarha Cc: airlied@linux.ie, Liviu.Dudau@arm.com, dri-devel@lists.freedesktop.org, Hans Verkuil , tomi.valkeinen@ti.com, laurent.pinchart@ideasonboard.com List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBGZWIgMDYsIDIwMTggYXQgMDg6MTY6NTZQTSArMDIwMCwgSnlyaSBTYXJoYSB3cm90 ZToKPiAKPiBJIGhhdmUgbm90IGJlZW4gZm9sbG93aW5nIHRoZSBzdWJqZWN0IGZvciBoYWxmIGEg eWVhciBub3cuIEp1c3QgbGV0IG1lCj4ga25vdyBpZiBJIGNhbiBkbyBzb21ldGhpbmcgdG8gaGVs cCBsYW5kIHRoaXMgcGF0Y2gsIGUuZy4gcmViYXNlIGFuZAo+IHJlc2VuZCBpdC4KCkkgZ3Vlc3Mg SSBjYW4ganVzdCBwaWNrIGl0IHVwIGFuZCByZXBvc3QgYWxvbmcgd2l0aCBteSBpOTE1IHN0dWZm LiBJIGNhbgpqdXN0IHRvc3MgaW4gdGhlIGNvbnN0IGx1bWluYW5jZSB0aGluZyBvbiB0b3AgSSBz dXBwb3NlLgoKPiAKPiAKPiBPbiAwMi8wNi8xOCAyMDowOCwgSGFucyBWZXJrdWlsIHdyb3RlOgo+ ID4gT24gMDIvMDYvMjAxOCAwNjo1OCBQTSwgVmlsbGUgU3lyasOkbMOkIHdyb3RlOgo+ID4+IE9u IE1vbiwgSnVuIDEyLCAyMDE3IGF0IDEyOjEwOjA0QU0gKzAzMDAsIEp5cmkgU2FyaGEgd3JvdGU6 Cj4gPj4+IEFkZCBhIHN0YW5kYXJkIG9wdGlvbmFsIHByb3BlcnRpZXMgdG8gc3VwcG9ydCBkaWZm ZXJlbnQgbm9uIFJHQiBjb2xvcgo+ID4+PiBlbmNvZGluZ3MgaW4gRFJNIHBsYW5lcy4gQ09MT1Jf RU5DT0RJTkcgc2VsZWN0IHRoZSBzdXBwb3J0ZWQgbm9uIFJHQgo+ID4+PiBjb2xvciBlbmNvZGlu ZywgZm9yIGluc3RhbmNlIElUVS1SIEJULjcwOSBZQ2JDci4gQ09MT1JfUkFOR0Ugc2VsZWN0cwo+ ID4+PiB0aGUgdmFsdWUgcmFuZ2VzIHdpdGhpbiB0aGUgc2VsZWN0ZWQgY29sb3IgZW5jb2Rpbmcu IFRoZSBwcm9wZXJ0aWVzCj4gPj4+IGFyZSBzdG9yZWQgdG8gZHJtX3BsYW5lIG9iamVjdCB0byBh bGxvdyBkaWZmZXJlbnQgc2V0IG9mIHN1cHBvcnRlZAo+ID4+PiBlbmNvZGluZyBmb3IgZGlmZmVy ZW50IHBsYW5lcyBvbiB0aGUgZGV2aWNlLgo+ID4+Pgo+ID4+PiBTaWduZWQtb2ZmLWJ5OiBKeXJp IFNhcmhhIDxqc2FyaGFAdGkuY29tPgo+ID4+PiAtLS0KPiA+Pj4gIGRyaXZlcnMvZ3B1L2RybS9k cm1fYXRvbWljLmMgICAgIHwgIDggKysrKwo+ID4+PiAgZHJpdmVycy9ncHUvZHJtL2RybV9jb2xv cl9tZ210LmMgfCA5MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4g Pj4+ICBpbmNsdWRlL2RybS9kcm1fY29sb3JfbWdtdC5oICAgICB8IDE5ICsrKysrKysrKwo+ID4+ PiAgaW5jbHVkZS9kcm0vZHJtX3BsYW5lLmggICAgICAgICAgfCAgOCArKysrCj4gPj4+ICA0IGZp bGVzIGNoYW5nZWQsIDEyNiBpbnNlcnRpb25zKCspCj4gPj4+Cj4gPj4+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMu Ywo+ID4+PiBpbmRleCA3N2RjZWYwLi44MDY3NjgxIDEwMDY0NAo+ID4+PiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vZHJtX2F0b21pYy5jCj4gPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRv bWljLmMKPiA+Pj4gQEAgLTc4Niw2ICs3ODYsMTAgQEAgaW50IGRybV9hdG9taWNfcGxhbmVfc2V0 X3Byb3BlcnR5KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ID4+PiAgCQlzdGF0ZS0+cm90YXRp b24gPSB2YWw7Cj4gPj4+ICAJfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSBwbGFuZS0+enBvc19wcm9w ZXJ0eSkgewo+ID4+PiAgCQlzdGF0ZS0+enBvcyA9IHZhbDsKPiA+Pj4gKwl9IGVsc2UgaWYgKHBy b3BlcnR5ID09IHBsYW5lLT5jb2xvcl9lbmNvZGluZ19wcm9wZXJ0eSkgewo+ID4+PiArCQlzdGF0 ZS0+Y29sb3JfZW5jb2RpbmcgPSB2YWw7Cj4gPj4+ICsJfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSBw bGFuZS0+Y29sb3JfcmFuZ2VfcHJvcGVydHkpIHsKPiA+Pj4gKwkJc3RhdGUtPmNvbG9yX3Jhbmdl ID0gdmFsOwo+ID4+PiAgCX0gZWxzZSBpZiAocGxhbmUtPmZ1bmNzLT5hdG9taWNfc2V0X3Byb3Bl cnR5KSB7Cj4gPj4+ICAJCXJldHVybiBwbGFuZS0+ZnVuY3MtPmF0b21pY19zZXRfcHJvcGVydHko cGxhbmUsIHN0YXRlLAo+ID4+PiAgCQkJCXByb3BlcnR5LCB2YWwpOwo+ID4+PiBAQCAtODQ2LDYg Kzg1MCwxMCBAQCBpbnQgZHJtX2F0b21pY19wbGFuZV9zZXRfcHJvcGVydHkoc3RydWN0IGRybV9w bGFuZSAqcGxhbmUsCj4gPj4+ICAJCSp2YWwgPSBzdGF0ZS0+cm90YXRpb247Cj4gPj4+ICAJfSBl bHNlIGlmIChwcm9wZXJ0eSA9PSBwbGFuZS0+enBvc19wcm9wZXJ0eSkgewo+ID4+PiAgCQkqdmFs ID0gc3RhdGUtPnpwb3M7Cj4gPj4+ICsJfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSBwbGFuZS0+Y29s b3JfZW5jb2RpbmdfcHJvcGVydHkpIHsKPiA+Pj4gKwkJKnZhbCA9IHN0YXRlLT5jb2xvcl9lbmNv ZGluZzsKPiA+Pj4gKwl9IGVsc2UgaWYgKHByb3BlcnR5ID09IHBsYW5lLT5jb2xvcl9yYW5nZV9w cm9wZXJ0eSkgewo+ID4+PiArCQkqdmFsID0gc3RhdGUtPmNvbG9yX3JhbmdlOwo+ID4+PiAgCX0g ZWxzZSBpZiAocGxhbmUtPmZ1bmNzLT5hdG9taWNfZ2V0X3Byb3BlcnR5KSB7Cj4gPj4+ICAJCXJl dHVybiBwbGFuZS0+ZnVuY3MtPmF0b21pY19nZXRfcHJvcGVydHkocGxhbmUsIHN0YXRlLCBwcm9w ZXJ0eSwgdmFsKTsKPiA+Pj4gIAl9IGVsc2Ugewo+ID4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2RybV9jb2xvcl9tZ210LmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2NvbG9yX21nbXQu Ywo+ID4+PiBpbmRleCAzZWRhNTAwLi45MDc3YmY2IDEwMDY0NAo+ID4+PiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vZHJtX2NvbG9yX21nbXQuYwo+ID4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJt X2NvbG9yX21nbXQuYwo+ID4+PiBAQCAtODgsNiArODgsMTkgQEAKPiA+Pj4gICAqIGRybV9tb2Rl X2NydGNfc2V0X2dhbW1hX3NpemUoKS4gRHJpdmVycyB3aGljaCBzdXBwb3J0IGJvdGggc2hvdWxk IHVzZQo+ID4+PiAgICogZHJtX2F0b21pY19oZWxwZXJfbGVnYWN5X2dhbW1hX3NldCgpIHRvIGFs aWFzIHRoZSBsZWdhY3kgZ2FtbWEgcmFtcCB3aXRoIHRoZQo+ID4+PiAgICogIkdBTU1BX0xVVCIg cHJvcGVydHkgYWJvdmUuCj4gPj4+ICsgKgo+ID4+PiArICogU3VwcG9ydCBmb3IgZGlmZmVyZW50 IG5vbiBSR0IgY29sb3IgZW5jb2RpbmdzIGlzIGNvbnRyb2xsZWQgdGhyb3VnaAo+ID4+PiArICog JmRybV9wbGFuZSBzcGVjaWZpYyBDT0xPUl9FTkNPRElORyBhbmQgQ09MT1JfUkFOR0UgcHJvcGVy dGllczoKPiA+Pj4gKyAqCj4gPj4+ICsgKiAiQ09MT1JfRU5DT0RJTkciCj4gPj4+ICsgKiAJT3B0 aW9uYWwgcGxhbmUgZW51bSBwcm9wZXJ0eSB0byBzdXBwb3J0IGRpZmZlcmVudCBub24gUkdCCj4g Pj4+ICsgKiAJY29sb3IgZW5jb2RpbmdzLiBUaGUgZHJpdmVyIGNhbiBwcm92aWRlIGEgc3Vic2V0 IG9mIHN0YW5kYXJkCj4gPj4+ICsgKiAJZW51bSB2YWx1ZXMgc3VwcG9ydGVkIGJ5IHRoZSBEUk0g cGxhbmUuCj4gPj4+ICsgKgo+ID4+PiArICogIkNPTE9SX1JBTkdFIgo+ID4+PiArICogCU9wdGlv bmFsIHBsYW5lIGVudW0gcHJvcGVydHkgdG8gc3VwcG9ydCBkaWZmZXJlbnQgbm9uIFJHQgo+ID4+ PiArICogCWNvbG9yIHBhcmFtZXRlciByYW5nZXMuIFRoZSBkcml2ZXIgY2FuIHByb3ZpZGUgYSBz dWJzZXQgb2YKPiA+Pj4gKyAqIAlzdGFuZGFyZCBlbnVtIHZhbHVlcyBzdXBwb3J0ZWQgYnkgdGhl IERSTSBwbGFuZS4KPiA+Pj4gICAqLwo+ID4+PiAgCj4gPj4+ICAvKioKPiA+Pj4gQEAgLTMzNiwz ICszNDksODEgQEAgaW50IGRybV9tb2RlX2dhbW1hX2dldF9pb2N0bChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LAo+ID4+PiAgCWRybV9tb2Rlc2V0X3VubG9jaygmY3J0Yy0+bXV0ZXgpOwo+ID4+PiAg CXJldHVybiByZXQ7Cj4gPj4+ICB9Cj4gPj4+ICsKPiA+Pj4gK3N0YXRpYyBjb25zdCBjaGFyICog Y29uc3QgY29sb3JfZW5jb2RpbmdfbmFtZVtdID0gewo+ID4+PiArCVtEUk1fQ09MT1JfWUNCQ1Jf QlQ2MDFdID0gIklUVS1SIEJULjYwMSBZQ2JDciIsCj4gPj4+ICsJW0RSTV9DT0xPUl9ZQ0JDUl9C VDcwOV0gPSAiSVRVLVIgQlQuNzA5IFlDYkNyIiwKPiA+Pj4gKwlbRFJNX0NPTE9SX1lDQkNSX0JU MjAyMF0gPSAiSVRVLVIgQlQuMjAyMCBZQ2JDciIsCj4gPj4KPiA+PiBJIHdhcyBqdXN0IGxvb2tp bmcgYXQgdGhpcyBhZ2FpbiAoaW4gdGhlIGhvcGVzIG9mIGxhbmRpbmcgaXQgZmluYWxseSksCj4g Pj4gYW5kIHRoZW4gSSByZWFsaXplZCB3ZSBwcm9iYWJseSBuZWVkIHRvIHNwbGl0IHRoaXMgQlQu MjAyMCBpbnRvCj4gPj4gY29uc3RhbnQgYW5kIG5vbi1jb25zdGFudCBsdW1pbmFuY2UgdmFyaWFu dHMuCj4gPj4KPiA+PiAuLi5fQlQyMDIwX0NMIGFuZCAuLi5fQlQyMDIwX05DTCBtYXliZT8KPiA+ IAo+ID4gVGhpcyBpcyB3aGF0IFY0TDIgdXNlczoKPiA+IAo+ID4gaHR0cHM6Ly9odmVya3VpbC5o b21lLnhzNGFsbC5ubC9zcGVjL3VhcGkvdjRsL2NvbG9yc3BhY2VzLWRlZnMuaHRtbAo+ID4gCj4g PiBWNEwyX1lDQkNSX0VOQ19CVDIwMjAgYW5kIFY0TDJfWUNCQ1JfRU5DX0JUMjAyMF9DT05TVF9M VU0uCj4gPiAKPiA+IEkndmUgbmV2ZXIgc2VlbiBWNEwyX1lDQkNSX0VOQ19CVDIwMjBfQ09OU1Rf TFVNIGluIHRoZSB3aWxkLiBOb24tY29uc3RhbnQKPiA+IEJ0LjIwMjAgaXMgd2hhdCBpcyBub3Jt YWxseSB1c2VkLCBzbyBJJ2Qga2VlcCB0aGUgZGVmaW5lIGp1c3QgYXMtaXM6Cj4gPiBEUk1fQ09M T1JfWUNCQ1JfQlQyMDIwLiBBbmQgYWRkIGEgRFJNX0NPTE9SX1lDQkNSX0JUMjAyMF9DT05TVF9M VU0gaWYKPiA+IHlvdSB0aGluayB5b3UgbmVlZCBpdC4gSSd2ZSBuZXZlciBzZWVuIGFueW9uZSB1 c2UgdGhpcy4KPiA+IAo+ID4gQW5kIGluIGNhc2UgeW91IHdvbmRlciB3aHk6IHRoaXMgaXMgdGhl IEJULjIwMjAgT3BlbkdMIFknQ2JDciB0byBSJ0cnQicKPiA+IGNvbnZlcnNpb246Cj4gPiAKPiA+ IAlmbG9hdCByID0geSArIDEuNDcxOSAqIHY7Cj4gPiAgICAgICAgIGZsb2F0IGcgPSB5IC0gMC4x NjQ2ICogdSAtIDAuNTcwMyAqIHY7Cj4gPiAgICAgICAgIGZsb2F0IGIgPSB5ICsgMS44ODE0ICog dTsKPiA+IAo+ID4gQW5kIHRoaXMgZm9yIEJULjIwMjAgY29uc3RhbnQgbHVtaW5hbmNlOgo+ID4g Cj4gPiAJZmxvYXQgYiA9IHUgPD0gMC4wID8geSArIDEuOTQwNCAqIHUgOiB5ICsgMS41ODE2ICog dTsKPiA+IAlmbG9hdCByID0gdiA8PSAwLjAgPyB5ICsgMS43MTg0ICogdiA6IHkgKyAwLjk5MzYg KiB2Owo+ID4gCWZsb2F0IGxpbl9yID0gKHIgPCAwLjA4MSkgPyByIC8gNC41IDogcG93KChyICsg MC4wOTkpIC8gMS4wOTksIDEuMCAvIDAuNDUpOwo+ID4gCWZsb2F0IGxpbl9iID0gKGIgPCAwLjA4 MSkgPyBiIC8gNC41IDogcG93KChiICsgMC4wOTkpIC8gMS4wOTksIDEuMCAvIDAuNDUpOwo+ID4g CWZsb2F0IGxpbl95ID0gKHkgPCAwLjA4MSkgPyB5IC8gNC41IDogcG93KCh5ICsgMC4wOTkpIC8g MS4wOTksIDEuMCAvIDAuNDUpOwo+ID4gCWZsb2F0IGxpbl9nID0gbGluX3kgLyAwLjY3ODAgLSBs aW5fciAqIDAuMjYyNyAvIDAuNjc4MCAtIGxpbl9iICogMC4wNTkzIC8gMC42NzgwOwo+ID4gCWZs b2F0IGcgPSAobGluX2cgPCAwLjAxOCkgPyBsaW5fZyAqIDQuNSA6IDEuMDk5ICogcG93KGxpbl9n LCAwLjQ1KSAtIDAuMDk5Owo+ID4gCj4gPiBCcnIgOi0pCj4gPiAKPiA+IFJlZ2FyZHMsCj4gPiAK PiA+IAlIYW5zCj4gPiAKPiA+Pgo+ID4+PiArfTsKPiA+Pj4gKwo+ID4+PiArc3RhdGljIGNvbnN0 IGNoYXIgKiBjb25zdCBjb2xvcl9yYW5nZV9uYW1lW10gPSB7Cj4gPj4+ICsJW0RSTV9DT0xPUl9Z Q0JDUl9GVUxMX1JBTkdFXSA9ICJZQ2JDciBmdWxsIHJhbmdlIiwKPiA+Pj4gKwlbRFJNX0NPTE9S X1lDQkNSX0xJTUlURURfUkFOR0VdID0gIllDYkNyIGxpbWl0ZWQgcmFuZ2UiLAo+ID4+PiArfTsK PiA+Pj4gKwo+ID4+PiArLyoqCj4gPj4+ICsgKiBkcm1fcGxhbmVfY3JlYXRlX2NvbG9yX3Byb3Bl cnRpZXMgLSBjb2xvciBlbmNvZGluZyByZWxhdGVkIHBsYW5lIHByb3BlcnRpZXMKPiA+Pj4gKyAq IEBzdXBwb3J0ZWRfZW5jb2RpbmdzOiBiaXRmaWVsZCBpbmRpY2F0aW5nIHN1cHBvcnRlZCBjb2xv ciBlbmNvZGluZ3MKPiA+Pj4gKyAqIEBzdXBwb3J0ZWRfcmFuZ2VzOiBiaXRmaWxlbGQgaW5kaWNh dGluZyBzdXBwb3J0ZWQgY29sb3IgcmFuZ2VzCj4gPj4+ICsgKiBAZGVmYXVsdF9lbmNvZGluZzog ZGVmYXVsdCBjb2xvciBlbmNvZGluZwo+ID4+PiArICogQGRlZmF1bHRfcmFuZ2U6IGRlZmF1bHQg Y29sb3IgcmFuZ2UKPiA+Pj4gKyAqCj4gPj4+ICsgKiBDcmVhdGUgYW5kIGF0dGFjaCBwbGFuZSBz cGVjaWZpYyBDT0xPUl9FTkNPRElORyBhbmQgQ09MT1JfUkFOR0UKPiA+Pj4gKyAqIHByb3BlcnRp ZXMgdG8gdG8gdGhlIGRybV9wbGFuZSBvYmplY3QuIFRoZSBzdXBwb3J0ZWQgZW5jb2RpbmdzIGFu ZAo+ID4+PiArICogcmFuZ2VzIHNob3VsZCBiZSBwcm92aWRlZCBpbiBzdXBwb3J0ZWRfZW5jb2Rp bmdzIGFuZAo+ID4+PiArICogc3VwcG9ydGVkX3JhbmdlcyBiaXRtYXNrcy4gRWFjaCBiaXQgc2V0 IGluIHRoZSBiaXRtYXNrIGluZGljYXRlcwo+ID4+PiArICogdGhlIGl0cyBudW1iZXIgYXMgZW51 bSB2YWx1ZSBiZWluZyBzdXBwb3J0ZWQuCj4gPj4+ICsgKi8KPiA+Pj4gK2ludCBkcm1fcGxhbmVf Y3JlYXRlX2NvbG9yX3Byb3BlcnRpZXMoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gPj4+ICsJ CQkJICAgICAgdTMyIHN1cHBvcnRlZF9lbmNvZGluZ3MsCj4gPj4+ICsJCQkJICAgICAgdTMyIHN1 cHBvcnRlZF9yYW5nZXMsCj4gPj4+ICsJCQkJICAgICAgZW51bSBkcm1fY29sb3JfZW5jb2Rpbmcg ZGVmYXVsdF9lbmNvZGluZywKPiA+Pj4gKwkJCQkgICAgICBlbnVtIGRybV9jb2xvcl9yYW5nZSBk ZWZhdWx0X3JhbmdlKQo+ID4+PiArewo+ID4+PiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBw bGFuZS0+ZGV2Owo+ID4+PiArCXN0cnVjdCBkcm1fcHJvcGVydHkgKnByb3A7Cj4gPj4+ICsJc3Ry dWN0IGRybV9wcm9wX2VudW1fbGlzdCBlbnVtX2xpc3RbbWF4KERSTV9DT0xPUl9FTkNPRElOR19N QVgsCj4gPj4+ICsJCQkJCQlEUk1fQ09MT1JfUkFOR0VfTUFYKV07Cj4gPj4+ICsJaW50IGksIGxl bjsKPiA+Pj4gKwo+ID4+PiArCWxlbiA9IDA7Cj4gPj4+ICsJZm9yIChpID0gMDsgaSA8IERSTV9D T0xPUl9FTkNPRElOR19NQVg7IGkrKykgewo+ID4+PiArCQlpZiAoKHN1cHBvcnRlZF9lbmNvZGlu Z3MgJiBCSVQoaSkpID09IDApCj4gPj4+ICsJCQljb250aW51ZTsKPiA+Pj4gKwo+ID4+PiArCQll bnVtX2xpc3RbbGVuXS50eXBlID0gaTsKPiA+Pj4gKwkJZW51bV9saXN0W2xlbl0ubmFtZSA9IGNv bG9yX2VuY29kaW5nX25hbWVbaV07Cj4gPj4+ICsJCWxlbisrOwo+ID4+PiArCX0KPiA+Pj4gKwo+ ID4+PiArCXByb3AgPSBkcm1fcHJvcGVydHlfY3JlYXRlX2VudW0oZGV2LCAwLCAiQ09MT1JfRU5D T0RJTkciLAo+ID4+PiArCQkJCQllbnVtX2xpc3QsIGxlbik7Cj4gPj4+ICsJaWYgKCFwcm9wKQo+ ID4+PiArCQlyZXR1cm4gLUVOT01FTTsKPiA+Pj4gKwlwbGFuZS0+Y29sb3JfZW5jb2RpbmdfcHJv cGVydHkgPSBwcm9wOwo+ID4+PiArCWRybV9vYmplY3RfYXR0YWNoX3Byb3BlcnR5KCZwbGFuZS0+ YmFzZSwgcHJvcCwgZGVmYXVsdF9lbmNvZGluZyk7Cj4gPj4+ICsJaWYgKHBsYW5lLT5zdGF0ZSkK PiA+Pj4gKwkJcGxhbmUtPnN0YXRlLT5jb2xvcl9lbmNvZGluZyA9IGRlZmF1bHRfZW5jb2Rpbmc7 Cj4gPj4+ICsKPiA+Pj4gKwlsZW4gPSAwOwo+ID4+PiArCWZvciAoaSA9IDA7IGkgPCBEUk1fQ09M T1JfUkFOR0VfTUFYOyBpKyspIHsKPiA+Pj4gKwkJaWYgKChzdXBwb3J0ZWRfcmFuZ2VzICYgQklU KGkpKSA9PSAwKQo+ID4+PiArCQkJY29udGludWU7Cj4gPj4+ICsKPiA+Pj4gKwkJZW51bV9saXN0 W2xlbl0udHlwZSA9IGk7Cj4gPj4+ICsJCWVudW1fbGlzdFtsZW5dLm5hbWUgPSBjb2xvcl9yYW5n ZV9uYW1lW2ldOwo+ID4+PiArCQlsZW4rKzsKPiA+Pj4gKwl9Cj4gPj4+ICsKPiA+Pj4gKwlwcm9w ID0gZHJtX3Byb3BlcnR5X2NyZWF0ZV9lbnVtKGRldiwgMCwJIkNPTE9SX1JBTkdFIiwKPiA+Pj4g KwkJCQkJZW51bV9saXN0LCBsZW4pOwo+ID4+PiArCWlmICghcHJvcCkKPiA+Pj4gKwkJcmV0dXJu IC1FTk9NRU07Cj4gPj4+ICsJcGxhbmUtPmNvbG9yX3JhbmdlX3Byb3BlcnR5ID0gcHJvcDsKPiA+ Pj4gKwlkcm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgmcGxhbmUtPmJhc2UsIHByb3AsIGRlZmF1 bHRfcmFuZ2UpOwo+ID4+PiArCWlmIChwbGFuZS0+c3RhdGUpCj4gPj4+ICsJCXBsYW5lLT5zdGF0 ZS0+Y29sb3JfcmFuZ2UgPSBkZWZhdWx0X3JhbmdlOwo+ID4+PiArCj4gPj4+ICsJcmV0dXJuIDA7 Cj4gPj4+ICt9Cj4gPj4+ICtFWFBPUlRfU1lNQk9MKGRybV9wbGFuZV9jcmVhdGVfY29sb3JfcHJv cGVydGllcyk7Cj4gPj4+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fY29sb3JfbWdtdC5o IGIvaW5jbHVkZS9kcm0vZHJtX2NvbG9yX21nbXQuaAo+ID4+PiBpbmRleCAwM2E1OWNiLi5iM2I2 ZDMwIDEwMDY0NAo+ID4+PiAtLS0gYS9pbmNsdWRlL2RybS9kcm1fY29sb3JfbWdtdC5oCj4gPj4+ ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9jb2xvcl9tZ210LmgKPiA+Pj4gQEAgLTI2LDYgKzI2LDcg QEAKPiA+Pj4gICNpbmNsdWRlIDxsaW51eC9jdHlwZS5oPgo+ID4+PiAgCj4gPj4+ICBzdHJ1Y3Qg ZHJtX2NydGM7Cj4gPj4+ICtzdHJ1Y3QgZHJtX3BsYW5lOwo+ID4+PiAgCj4gPj4+ICB1aW50MzJf dCBkcm1fY29sb3JfbHV0X2V4dHJhY3QodWludDMyX3QgdXNlcl9pbnB1dCwgdWludDMyX3QgYml0 X3ByZWNpc2lvbik7Cj4gPj4+ICAKPiA+Pj4gQEAgLTM3LDQgKzM4LDIyIEBAIHZvaWQgZHJtX2Ny dGNfZW5hYmxlX2NvbG9yX21nbXQoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ID4+PiAgaW50IGRy bV9tb2RlX2NydGNfc2V0X2dhbW1hX3NpemUoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ID4+PiAg CQkJCSBpbnQgZ2FtbWFfc2l6ZSk7Cj4gPj4+ICAKPiA+Pj4gK2VudW0gZHJtX2NvbG9yX2VuY29k aW5nIHsKPiA+Pj4gKwlEUk1fQ09MT1JfWUNCQ1JfQlQ2MDEsCj4gPj4+ICsJRFJNX0NPTE9SX1lD QkNSX0JUNzA5LAo+ID4+PiArCURSTV9DT0xPUl9ZQ0JDUl9CVDIwMjAsCj4gPj4+ICsJRFJNX0NP TE9SX0VOQ09ESU5HX01BWCwKPiA+Pj4gK307Cj4gPj4+ICsKPiA+Pj4gK2VudW0gZHJtX2NvbG9y X3JhbmdlIHsKPiA+Pj4gKwlEUk1fQ09MT1JfWUNCQ1JfTElNSVRFRF9SQU5HRSwKPiA+Pj4gKwlE Uk1fQ09MT1JfWUNCQ1JfRlVMTF9SQU5HRSwKPiA+Pj4gKwlEUk1fQ09MT1JfUkFOR0VfTUFYLAo+ ID4+PiArfTsKPiA+Pj4gKwo+ID4+PiAraW50IGRybV9wbGFuZV9jcmVhdGVfY29sb3JfcHJvcGVy dGllcyhzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiA+Pj4gKwkJCQkgICAgICB1MzIgc3VwcG9y dGVkX2VuY29kaW5ncywKPiA+Pj4gKwkJCQkgICAgICB1MzIgc3VwcG9ydGVkX3JhbmdlcywKPiA+ Pj4gKwkJCQkgICAgICBlbnVtIGRybV9jb2xvcl9lbmNvZGluZyBkZWZhdWx0X2VuY29kaW5nLAo+ ID4+PiArCQkJCSAgICAgIGVudW0gZHJtX2NvbG9yX3JhbmdlIGRlZmF1bHRfcmFuZ2UpOwo+ID4+ PiAgI2VuZGlmCj4gPj4+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fcGxhbmUuaCBiL2lu Y2x1ZGUvZHJtL2RybV9wbGFuZS5oCj4gPj4+IGluZGV4IDlhYjNlNzAuLmY0ZGU1ZjkgMTAwNjQ0 Cj4gPj4+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9wbGFuZS5oCj4gPj4+ICsrKyBiL2luY2x1ZGUv ZHJtL2RybV9wbGFuZS5oCj4gPj4+IEBAIC0yNiw2ICsyNiw3IEBACj4gPj4+ICAjaW5jbHVkZSA8 bGludXgvbGlzdC5oPgo+ID4+PiAgI2luY2x1ZGUgPGxpbnV4L2N0eXBlLmg+Cj4gPj4+ICAjaW5j bHVkZSA8ZHJtL2RybV9tb2RlX29iamVjdC5oPgo+ID4+PiArI2luY2x1ZGUgPGRybS9kcm1fY29s b3JfbWdtdC5oPgo+ID4+PiAgCj4gPj4+ICBzdHJ1Y3QgZHJtX2NydGM7Cj4gPj4+ICBzdHJ1Y3Qg ZHJtX3ByaW50ZXI7Cj4gPj4+IEBAIC0xMTIsNiArMTEzLDEwIEBAIHN0cnVjdCBkcm1fcGxhbmVf c3RhdGUgewo+ID4+PiAgCXVuc2lnbmVkIGludCB6cG9zOwo+ID4+PiAgCXVuc2lnbmVkIGludCBu b3JtYWxpemVkX3pwb3M7Cj4gPj4+ICAKPiA+Pj4gKwkvKiBDb2xvciBlbmNvZGluZyBmb3Igbm9u IFJHQiBmb3JtYXRzICovCj4gPj4+ICsJZW51bSBkcm1fY29sb3JfZW5jb2RpbmcgY29sb3JfZW5j b2Rpbmc7Cj4gPj4+ICsJZW51bSBkcm1fY29sb3JfcmFuZ2UgY29sb3JfcmFuZ2U7Cj4gPj4+ICsK PiA+Pj4gIAkvKiBDbGlwcGVkIGNvb3JkaW5hdGVzICovCj4gPj4+ICAJc3RydWN0IGRybV9yZWN0 IHNyYywgZHN0Owo+ID4+PiAgCj4gPj4+IEBAIC01MjMsNiArNTI4LDkgQEAgc3RydWN0IGRybV9w bGFuZSB7Cj4gPj4+ICAKPiA+Pj4gIAlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICp6cG9zX3Byb3BlcnR5 Owo+ID4+PiAgCXN0cnVjdCBkcm1fcHJvcGVydHkgKnJvdGF0aW9uX3Byb3BlcnR5Owo+ID4+PiAr Cj4gPj4+ICsJc3RydWN0IGRybV9wcm9wZXJ0eSAqY29sb3JfZW5jb2RpbmdfcHJvcGVydHk7Cj4g Pj4+ICsJc3RydWN0IGRybV9wcm9wZXJ0eSAqY29sb3JfcmFuZ2VfcHJvcGVydHk7Cj4gPj4+ICB9 Owo+ID4+PiAgCj4gPj4+ICAjZGVmaW5lIG9ial90b19wbGFuZSh4KSBjb250YWluZXJfb2YoeCwg c3RydWN0IGRybV9wbGFuZSwgYmFzZSkKPiA+Pj4gLS0gCj4gPj4+IDEuOS4xCj4gPj4KPiA+IAo+ IAo+IAo+IC0tIAo+IFRleGFzIEluc3RydW1lbnRzIEZpbmxhbmQgT3ksIFBvcmtrYWxhbmthdHUg MjIsIDAwMTgwIEhlbHNpbmtpLgo+IFktdHVubnVzL0J1c2luZXNzIElEOiAwNjE1NTIxLTQuIEtv dGlwYWlra2EvRG9taWNpbGU6IEhlbHNpbmtpCgotLSAKVmlsbGUgU3lyasOkbMOkCkludGVsIE9U QwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2 ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK