From mboxrd@z Thu Jan 1 00:00:00 1970 From: Subject: [PATCH xf86-video-amdgpu 6/7 v2] Compose non-legacy with legacy regamma LUT Date: Fri, 8 Jun 2018 13:21:24 -0400 Message-ID: <1528478484-31177-1-git-send-email-sunpeng.li@amd.com> References: <1527869017-9209-7-git-send-email-sunpeng.li@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1527869017-9209-7-git-send-email-sunpeng.li-5C7GfCeVMHo@public.gmane.org> 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: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: "Leo (Sunpeng) Li" , michel-otUistvHUpPR7s880joybQ@public.gmane.org, harry.wentland-5C7GfCeVMHo@public.gmane.org RnJvbTogIkxlbyAoU3VucGVuZykgTGkiIDxzdW5wZW5nLmxpQGFtZC5jb20+CgpGcmVxdWVudGx5 LCBhIHVzZXIgbWF5IGhhdmUgbm9uLWxlZ2FjeSBnYW1tYSBlbmFibGVkIGZvciBtb25pdG9yCmNv cnJlY3Rpb24sIHdoaWxlIHVzaW5nIGxlZ2FjeSBnYW1tYSBmb3IgdGhpbmdzIGxpa2UKcmVkc2hp ZnQvbmlnaHRsaWdodC4KClRvIGRvIHNvLCB3ZSBjb21wb3NlIHRoZSB0d28gTFVUcy4gTGVnYWN5 IGdhbW1hIHdpbGwgYmUgYXBwbGllZCBmaXJzdCwKdGhlbiBub24tbGVnYWN5LiBpLmUuIG5vbi1s ZWdhY3lfTFVUKGxlZ2FjeV9MVVQoaW5fY29sb3IpKS4KCk5vdGUgdGhhdCB0aGUgc3RhZ2VkIGdh bW1hIExVVCB3aXRoaW4gdGhlIGRyaXZlci1wcml2YXRlIENSVEMgd2lsbAphbHdheXMgY29udGFp biB0aGUgbm9uLWxlZ2FjeSBMVVQuIFRoaXMgaXMgdG8gZW5zdXJlIHRoYXQgd2UgaGF2ZSBhCmNh Y2hlZCBjb3B5IGZvciBmdXR1cmUgY29tcG9zaXRpb25zLgoKdjI6IERvbid0IGNvbXBvc2UgTFVU cyBpZiBsZWdhY3kgZ2FtbWEgaXMgZGlzYWJsZWQgKHdoaWNoIGlzIHRoZSBjYXNlCiAgICBmb3Ig ZGVlcCAzMGJwcCBjb2xvcikuIFRoZSBsZWdhY3kgTFVUIHdvbid0IGJlIGNvbXB1dGVkIGhlcmUs CiAgICBjYXVzaW5nIGNvbXBvc2l0aW9uIHRvIHNwaXQgb3V0IHNvbWV0aGluZyBpbnZhbGlkLgoK U2lnbmVkLW9mZi1ieTogTGVvIChTdW5wZW5nKSBMaSA8c3VucGVuZy5saUBhbWQuY29tPgotLS0K IHNyYy9kcm1tb2RlX2Rpc3BsYXkuYyB8IDE4NyArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrLQogMSBmaWxlIGNoYW5nZWQsIDE4NiBpbnNlcnRpb25zKCsp LCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2RybW1vZGVfZGlzcGxheS5jIGIvc3Jj L2RybW1vZGVfZGlzcGxheS5jCmluZGV4IDZlNWFlNzQuLjc3YTEzNmUgMTAwNjQ0Ci0tLSBhL3Ny Yy9kcm1tb2RlX2Rpc3BsYXkuYworKysgYi9zcmMvZHJtbW9kZV9kaXNwbGF5LmMKQEAgLTc4OCw2 ICs3ODgsMTUwIEBAIHN0YXRpYyBCb29sIGRybW1vZGVfY3J0Y19jbV9lbmFibGVkKGRybW1vZGVf Y3J0Y19wcml2YXRlX3B0ciBkcm1tb2RlX2NydGMpCiB9CiAKIC8qKgorICogSWYgbGVnYWN5IExV VCBpcyBhLCBhbmQgbm9uLWxlZ2FjeSBMVVQgaXMgYiwgdGhlbiB0aGUgcmVzdWx0IG9mIGIoYSh4 KSkgaXMKKyAqIHJldHVybmVkIGluIG91dF9sdXQuIG91dF9sdXQncyBsZW5ndGggaXMgZXhwZWN0 ZWQgdG8gYmUgdGhlIHNhbWUgYXMgdGhlCisgKiBub24tbGVnYWN5IExVVCBiLgorICoKKyAqIEBh XyhyZWR8Z3JlZW58Ymx1ZSk6IFRoZSByZWQsIGdyZWVuLCBhbmQgYmx1ZSBjb21wb25lbnRzIG9m IHRoZSBsZWdhY3kgTFVULgorICogQGJfbHV0OiBUaGUgbm9uLWxlZ2FjeSBMVVQsIGluIERSTSdz IGNvbG9yIExVVCBmb3JtYXQuCisgKiBAb3V0X2x1dDogVGhlIGNvbXBvc2VkIExVVCwgaW4gRFJN J3MgY29sb3IgTFVUIGZvcm1hdC4KKyAqIEBsZW5fYTogTGVuZ3RoIG9mIGxlZ2FjeSBsdXQuCisg KiBAbGVuX2I6IExlbmd0aCBvZiBub24tbGVnYWN5IGx1dC4KKyAqLworc3RhdGljIHZvaWQgZHJt bW9kZV9sdXRfY29tcG9zZSh1aW50MTZfdCAqYV9yZWQsCisJCQkJdWludDE2X3QgKmFfZ3JlZW4s CisJCQkJdWludDE2X3QgKmFfYmx1ZSwKKwkJCQlzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqYl9sdXQs CisJCQkJc3RydWN0IGRybV9jb2xvcl9sdXQgKm91dF9sdXQsCisJCQkJdWludDMyX3QgbGVuX2Es IHVpbnQzMl90IGxlbl9iKQoreworCXVpbnQzMl90IGlfbCwgaV9yLCBpOworCXVpbnQzMl90IGlf YW1heCwgaV9ibWF4OworCXVpbnQzMl90IGNvZWZmX2libWF4OworCXVpbnQzMl90IGo7CisJdWlu dDY0X3QgYV9vdXRfaWJtYXg7CisJaW50IGNvbG9yOworCXNpemVfdCBzdHJ1Y3Rfc2l6ZSA9IHNp emVvZihzdHJ1Y3QgZHJtX2NvbG9yX2x1dCk7CisKKwl1aW50MzJfdCBtYXhfbHV0ID0gKDEgPDwg MTYpIC0gMTsKKworCWlfYW1heCA9IGxlbl9hIC0gMTsKKwlpX2JtYXggPSBsZW5fYiAtIDE7CisK KwkvKiBBIGxpbmVhciBpbnRlcnBvbGF0aW9uIGlzIGRvbmUgb24gdGhlIGxlZ2FjeSBMVVQgYmVm b3JlIGl0IGlzCisJICogY29tcG9zZWQsIHRvIGJyaW5nIGl0IHVwLXRvLXNpemUgd2l0aCB0aGUg bm9uLWxlZ2FjeSBMVVQuIFRoZQorCSAqIGludGVycG9sYXRpb24gdXNlcyBpbnRlZ2VycyBieSBr ZWVwaW5nIHRoaW5ncyBtdWx0aXBsaWVkIHVudGlsIHRoZQorCSAqIGxhc3QgbW9tZW50LgorCSAq LworCWZvciAoY29sb3IgPSAwOyBjb2xvciA8IDM7IGNvbG9yKyspIHsKKwkJdWludDE2X3QgKmEs ICpiLCAqb3V0OworCisJCS8qIFNldCB0aGUgaW5pdGlhbCBwb2ludGVycyB0byB0aGUgcmlnaHQg Y29sb3IgY29tcG9uZW50cy4gVGhlCisJCSAqIGlubmVyIGZvci1sb29wIHdpbGwgdGhlbiBtYWlu dGFpbiB0aGUgY29ycmVjdCBvZmZzZXQgZnJvbQorCQkgKiB0aGUgaW5pdGlhbCBlbGVtZW50Lgor CQkgKi8KKwkJaWYgKGNvbG9yID09IDApIHsKKwkJCWEgPSBhX3JlZDsKKwkJCWIgPSAmYl9sdXRb MF0ucmVkOworCQkJb3V0ID0gJm91dF9sdXRbMF0ucmVkOworCQl9IGVsc2UgaWYgKGNvbG9yID09 IDEpIHsKKwkJCWEgPSBhX2dyZWVuOworCQkJYiA9ICZiX2x1dFswXS5ncmVlbjsKKwkJCW91dCA9 ICZvdXRfbHV0WzBdLmdyZWVuOworCQl9IGVsc2UgeworCQkJYSA9IGFfYmx1ZTsKKwkJCWIgPSAm Yl9sdXRbMF0uYmx1ZTsKKwkJCW91dCA9ICZvdXRfbHV0WzBdLmJsdWU7CisJCX0KKworCQlmb3Ig KGkgPSAwOyBpIDwgbGVuX2I7IGkrKykgeworCQkJLyogaV9sIGFuZCBpX3IgdHJhY2tzIHRoZSBs ZWZ0IGFuZCByaWdodCBlbGVtZW50cyBpbgorCQkJICogYV9sdXQsIHRvIHRoZSBzYW1wbGUgcG9p bnQgaS4gQWxzbyBoYW5kbGUgbGFzdAorCQkJICogZWxlbWVudCBlZGdlIGNhc2UsIHdoZW4gaV9s ID0gaV9hbWF4LgorCQkJICovCisJCQlpX2wgPSBpICogaV9hbWF4IC8gaV9ibWF4OworCQkJaV9y ID0gaV9sICsgISEoaV9hbWF4IC0gaV9sKTsKKworCQkJLyogY29lZmYgaXMgaW50ZW5kZWQgdG8g YmUgaW4gWzAsIDEpLCBkZXBlbmRpbmcgb24KKwkJCSAqIHdoZXJlIHNhbXBsZSBpIGlzIGJldHdl ZW4gaV9sIGFuZCBpX3IuIFdlIGtlZXAgaXQKKwkJCSAqIG11bHRpcGxpZWQgd2l0aCBpX2JtYXgg dGhyb3VnaG91dCB0byBtYWludGFpbgorCQkJICogcHJlY2lzaW9uICovCisJCQljb2VmZl9pYm1h eCA9IChpICogaV9hbWF4KSAtIChpX2wgKiBpX2JtYXgpOworCQkJYV9vdXRfaWJtYXggPSBpX2Jt YXggKiBhW2lfbF0gKworCQkJCSAgICAgIGNvZWZmX2libWF4ICogKGFbaV9yXSAtIGFbaV9sXSk7 CisKKwkJCS8qIGogPSBmbG9vcigoYV9vdXQvbWF4X2x1dCkqaV9ibWF4KS4KKwkJCSAqIGkuZS4g dGhlIGVsZW1lbnQgaW4gTFVUIGIgdGhhdCBhX291dCBtYXBzIHRvLiBXZQorCQkJICogaGF2ZSB0 byBkaXZpZGUgYnkgbWF4X2x1dCB0byBub3JtYWxpemUgYV9vdXQsIHNpbmNlCisJCQkgKiB2YWx1 ZXMgaW4gdGhlIExVVHMgYXJlIFswLCAxPDwxNikKKwkJCSAqLworCQkJaiA9IGFfb3V0X2libWF4 IC8gbWF4X2x1dDsKKwkJCSoodWludDE2X3QqKSgodm9pZCopb3V0ICsgKGkqc3RydWN0X3NpemUp KSA9CisJCQkJKih1aW50MTZfdCopKCh2b2lkKiliICsgKGoqc3RydWN0X3NpemUpKTsKKwkJfQor CX0KKworCWZvciAoaSA9IDA7IGkgPCBsZW5fYjsgaSsrKQorCQlvdXRfbHV0W2ldLnJlc2VydmVk ID0gMDsKK30KKworLyoqCisgKiBSZXNpemUgYSBMVVQsIHVzaW5nIGxpbmVhciBpbnRlcnBvbGF0 aW9uLgorICoKKyAqIEBpbl8ocmVkfGdyZWVufGJsdWUpOiBMZWdhY3kgTFVUIGNvbXBvbmVudHMK KyAqIEBvdXRfbHV0OiBUaGUgcmVzaXplZCBMVVQgaXMgcmV0dXJuZWQgaGVyZSwgaW4gRFJNIGNv bG9yIExVVCBmb3JtYXQuCisgKiBAbGVuX2luOiBMZW5ndGggb2YgbGVnYWN5IExVVC4KKyAqIEBs ZW5fb3V0OiBMZW5ndGggb2Ygb3V0X2x1dCwgaS5lLiB0aGUgdGFyZ2V0IHNpemUuCisgKi8KK3N0 YXRpYyB2b2lkIGRybW1vZGVfbHV0X2ludGVycG9sYXRlKHVpbnQxNl90ICppbl9yZWQsCisJCQkJ ICAgIHVpbnQxNl90ICppbl9ncmVlbiwKKwkJCQkgICAgdWludDE2X3QgKmluX2JsdWUsCisJCQkJ ICAgIHN0cnVjdCBkcm1fY29sb3JfbHV0ICpvdXRfbHV0LAorCQkJCSAgICB1aW50MzJfdCBsZW5f aW4sIHVpbnQzMl90IGxlbl9vdXQpCit7CisJdWludDMyX3QgaV9sLCBpX3IsIGk7CisJdWludDMy X3QgaV9hbWF4LCBpX2JtYXg7CisJdWludDMyX3QgY29lZmZfaWJtYXg7CisJdWludDY0X3Qgb3V0 X2libWF4OworCWludCBjb2xvcjsKKwlzaXplX3Qgc3RydWN0X3NpemUgPSBzaXplb2Yoc3RydWN0 IGRybV9jb2xvcl9sdXQpOworCisJaV9hbWF4ID0gbGVuX2luIC0gMTsKKwlpX2JtYXggPSBsZW5f b3V0IC0gMTsKKworCS8qIFNlZSBAZHJtbW9kZV9sdXRfY29tcG9zZSBmb3IgZGV0YWlscyAqLwor CWZvciAoY29sb3IgPSAwOyBjb2xvciA8IDM7IGNvbG9yKyspIHsKKwkJdWludDE2X3QgKmluLCAq b3V0OworCisJCWlmIChjb2xvciA9PSAwKSB7CisJCQlpbiA9IGluX3JlZDsKKwkJCW91dCA9ICZv dXRfbHV0WzBdLnJlZDsKKwkJfSBlbHNlIGlmIChjb2xvciA9PSAxKSB7CisJCQlpbiA9IGluX2dy ZWVuOworCQkJb3V0ID0gJm91dF9sdXRbMF0uZ3JlZW47CisJCX0gZWxzZSB7CisJCQlpbiA9IGlu X2JsdWU7CisJCQlvdXQgPSAmb3V0X2x1dFswXS5ibHVlOworCQl9CisKKwkJZm9yIChpID0gMDsg aSA8IGxlbl9vdXQ7IGkrKykgeworCQkJaV9sID0gaSAqIGlfYW1heCAvIGlfYm1heDsKKwkJCWlf ciA9IGlfbCArICEhKGlfYW1heCAtIGlfbCk7CisKKwkJCWNvZWZmX2libWF4ID0gKGkgKiBpX2Ft YXgpIC0gKGlfbCAqIGlfYm1heCk7CisJCQlvdXRfaWJtYXggPSBpX2JtYXggKiBpbltpX2xdICsK KwkJCQkgICAgICBjb2VmZl9pYm1heCAqIChpbltpX3JdIC0gaW5baV9sXSk7CisKKwkJCSoodWlu dDE2X3QqKSgodm9pZCopb3V0ICsgKGkqc3RydWN0X3NpemUpKSA9CisJCQkJb3V0X2libWF4IC8g aV9ibWF4OworCQl9CisJfQorCisJZm9yIChpID0gMDsgaSA8IGxlbl9vdXQ7IGkrKykKKwkJb3V0 X2x1dFtpXS5yZXNlcnZlZCA9IDA7Cit9CisKKy8qKgogICogQ29uZmlndXJlIGFuZCBjaGFuZ2Ug YSBjb2xvciBwcm9wZXJ0eSBvbiBhIENSVEMsIHRocm91Z2ggUmFuZFIuIE9ubHkgdGhlCiAgKiBz cGVjaWZpZWQgb3V0cHV0IHdpbGwgYmUgYWZmZWN0ZWQsIGV2ZW4gaWYgdGhlIENSVEMgaXMgYXR0 YWNoZWQgdG8gbXVsdGlwbGUKICAqIG91dHB1dHMuIE5vdGUgdGhhdCBjaGFuZ2VzIHdpbGwgYmUg bm9uLXBlbmRpbmc6IHRoZSBjaGFuZ2VzIHdvbid0IGJlIHB1c2hlZApAQCAtMTAwMCw2ICsxMTQ0 LDcgQEAgc3RhdGljIGludCBkcm1tb2RlX2NydGNfcHVzaF9jbV9wcm9wKHhmODZDcnRjUHRyIGNy dGMsCiB7CiAJZHJtbW9kZV9jcnRjX3ByaXZhdGVfcHRyIGRybW1vZGVfY3J0YyA9IGNydGMtPmRy aXZlcl9wcml2YXRlOwogCUFNREdQVUVudFB0ciBwQU1ER1BVRW50ID0gQU1ER1BVRW50UHJpdihj cnRjLT5zY3JuKTsKKwlCb29sIGZyZWVfYmxvYl9kYXRhID0gRkFMU0U7CiAJdWludDMyX3QgY3Jl YXRlZF9ibG9iX2lkID0gMDsKIAl1aW50MzJfdCBkcm1fcHJvcF9pZDsKIAlzaXplX3QgZXhwZWN0 ZWRfYnl0ZXMgPSAwOwpAQCAtMTAxMyw3ICsxMTU4LDM5IEBAIHN0YXRpYyBpbnQgZHJtbW9kZV9j cnRjX3B1c2hfY21fcHJvcCh4Zjg2Q3J0Y1B0ciBjcnRjLAogCQkvKiBDYWxjdWxhdGUgdGhlIGV4 cGVjdGVkIHNpemUgb2YgdmFsdWUgaW4gYnl0ZXMgKi8KIAkJZXhwZWN0ZWRfYnl0ZXMgPSBzaXpl b2Yoc3RydWN0IGRybV9jb2xvcl9sdXQpICoKIAkJCQkJZHJtbW9kZV9jcnRjLT5nYW1tYV9sdXRf c2l6ZTsKLQkJYmxvYl9kYXRhID0gZHJtbW9kZV9jcnRjLT5nYW1tYV9sdXQ7CisKKwkJLyogTGVn YWN5IGdhbW1hIExVVCBpcyBkaXNhYmxlZCBvbiBkZWVwIDMwYnBwIGNvbG9yLiBJbiB3aGljaAor CQkgKiBjYXNlLCBkaXJlY3RseSB1c2Ugbm9uLWxlZ2FjeSBMVVQuCisJCSAqLworCQlpZiAoY3J0 Yy0+ZnVuY3MtPmdhbW1hX3NldCA9PSBOVUxMKSB7CisJCQlibG9iX2RhdGEgPSBkcm1tb2RlX2Ny dGMtPmdhbW1hX2x1dDsKKwkJCWdvdG8gZG9fcHVzaDsKKwkJfQorCisJCWJsb2JfZGF0YSA9IG1h bGxvYyhleHBlY3RlZF9ieXRlcyk7CisJCWlmICghYmxvYl9kYXRhKQorCQkJcmV0dXJuIEJhZEFs bG9jOworCisJCWZyZWVfYmxvYl9kYXRhID0gVFJVRTsKKwkJLyoKKwkJICogQ29tcG9zZSBsZWdh Y3kgYW5kIG5vbi1sZWdhY3kgTFVUIGlmIG5vbi1sZWdhY3kgd2FzIHNldC4KKwkJICogT3RoZXJ3 aXNlLCBpbnRlcnBvbGF0ZSBsZWdhY3kgTFVUIHRvIG5vbi1sZWdhY3kgc2l6ZS4KKwkJICovCisJ CWlmIChkcm1tb2RlX2NydGMtPmdhbW1hX2x1dCkgeworCQkJZHJtbW9kZV9sdXRfY29tcG9zZShj cnRjLT5nYW1tYV9yZWQsCisJCQkJCSAgICBjcnRjLT5nYW1tYV9ncmVlbiwKKwkJCQkJICAgIGNy dGMtPmdhbW1hX2JsdWUsCisJCQkJCSAgICBkcm1tb2RlX2NydGMtPmdhbW1hX2x1dCwKKwkJCQkJ ICAgIGJsb2JfZGF0YSwgY3J0Yy0+Z2FtbWFfc2l6ZSwKKwkJCQkJICAgIGRybW1vZGVfY3J0Yy0+ Z2FtbWFfbHV0X3NpemUpOworCQl9IGVsc2UgeworCQkJZHJtbW9kZV9sdXRfaW50ZXJwb2xhdGUo Y3J0Yy0+Z2FtbWFfcmVkLAorCQkJCQkJY3J0Yy0+Z2FtbWFfZ3JlZW4sCisJCQkJCQljcnRjLT5n YW1tYV9ibHVlLAorCQkJCQkJYmxvYl9kYXRhLAorCQkJCQkJY3J0Yy0+Z2FtbWFfc2l6ZSwKKwkJ CQkJCWRybW1vZGVfY3J0Yy0+Z2FtbWFfbHV0X3NpemUpOworCQl9CiAJfSBlbHNlIGlmIChjbV9w cm9wX2luZGV4ID09IENNX0RFR0FNTUFfTFVUKSB7CiAJCWV4cGVjdGVkX2J5dGVzID0gc2l6ZW9m KHN0cnVjdCBkcm1fY29sb3JfbHV0KSAqCiAJCQkJCWRybW1vZGVfY3J0Yy0+ZGVnYW1tYV9sdXRf c2l6ZTsKQEAgLTEwMjQsNiArMTIwMSw3IEBAIHN0YXRpYyBpbnQgZHJtbW9kZV9jcnRjX3B1c2hf Y21fcHJvcCh4Zjg2Q3J0Y1B0ciBjcnRjLAogCX0gZWxzZQogCQlyZXR1cm4gQmFkTmFtZTsKIAor ZG9fcHVzaDoKIAlpZiAoYmxvYl9kYXRhKSB7CiAJCXJldCA9IGRybU1vZGVDcmVhdGVQcm9wZXJ0 eUJsb2IocEFNREdQVUVudC0+ZmQsCiAJCQkJCQlibG9iX2RhdGEsIGV4cGVjdGVkX2J5dGVzLApA QCAtMTAzMiw2ICsxMjEwLDggQEAgc3RhdGljIGludCBkcm1tb2RlX2NydGNfcHVzaF9jbV9wcm9w KHhmODZDcnRjUHRyIGNydGMsCiAJCQl4Zjg2RHJ2TXNnKGNydGMtPnNjcm4tPnNjcm5JbmRleCwg WF9FUlJPUiwKIAkJCQkgICAiQ3JlYXRpbmcgRFJNIGJsb2IgZmFpbGVkIHdpdGggZXJybm8gJWRc biIsCiAJCQkJICAgcmV0KTsKKwkJCWlmIChmcmVlX2Jsb2JfZGF0YSkKKwkJCQlmcmVlKGJsb2Jf ZGF0YSk7CiAJCQlyZXR1cm4gQmFkUmVxdWVzdDsKIAkJfQogCX0KQEAgLTEwNTMsOSArMTIzMywx NCBAQCBzdGF0aWMgaW50IGRybW1vZGVfY3J0Y19wdXNoX2NtX3Byb3AoeGY4NkNydGNQdHIgY3J0 YywKIAkJeGY4NkRydk1zZyhjcnRjLT5zY3JuLT5zY3JuSW5kZXgsIFhfRVJST1IsCiAJCQkgICAi U2V0dGluZyBEUk0gcHJvcGVydHkgYmxvYiBmYWlsZWQgd2l0aCBlcnJubyAlZFxuIiwKIAkJCSAg IHJldCk7CisJCWlmIChmcmVlX2Jsb2JfZGF0YSkKKwkJCWZyZWUoYmxvYl9kYXRhKTsKIAkJcmV0 dXJuIEJhZFJlcXVlc3Q7CiAJfQogCisJaWYgKGZyZWVfYmxvYl9kYXRhKQorCQlmcmVlKGJsb2Jf ZGF0YSk7CisKIAlyZXR1cm4gU3VjY2VzczsKIH0KIAotLSAKMi43LjQKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFt ZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vYW1kLWdmeAo=