From mboxrd@z Thu Jan 1 00:00:00 1970 From: Harry Wentland Subject: Re: [PATCH] drm: disable deep color when EDID violates spec Date: Tue, 10 Jan 2017 15:41:04 -0500 Message-ID: References: <20170105234523.5899-1-nicholas.sielicki@gmail.com> <20170110105213.GW31595@intel.com> <20170110174608.GH31595@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from NAM01-BY2-obe.outbound.protection.outlook.com (mail-by2nam01on0040.outbound.protection.outlook.com [104.47.34.40]) by gabe.freedesktop.org (Postfix) with ESMTPS id CF0A26E33B for ; Tue, 10 Jan 2017 21:13:11 +0000 (UTC) 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: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gMjAxNy0wMS0xMCAwMzoxMCBQTSwgQWxleCBEZXVjaGVyIHdyb3RlOgo+IE9uIFR1ZSwgSmFu IDEwLCAyMDE3IGF0IDM6MDIgUE0sIEVybnN0IFNqw7ZzdHJhbmQgPGVybnN0cEBnbWFpbC5jb20+ IHdyb3RlOgo+PiBJIGtpbmRvZiBhc3N1bWUgRFAgaXMgdGhlIGRlZmF1bHQgY29ubmVjdGlvbiB0 aGVzZSBkYXlzIGFuZCB3aXRoIEZyZWVzeW5jCj4+IHlvdSB1c2UKPj4gRFAgb3IgY291cnNlLCBi dXQgdGhpcyBxdWVzdGlvbiB3YXMgc3BlY2lmaWNhbGx5IGZvciBIRE1JLgo+PiBJIGd1ZXNzIHRo aXMgcGF0Y2ggZG9lc24ndCBhZmZlY3QgZGVlcCBjb2xvciBvdmVyIERQPwo+Pgo+PiBBbnl3YXks IG9ubHkgMTcgb2YgdGhvc2UgbW9uaXRvcnMgaGF2ZSBGcmVlU3luYyBidXQgYWxtb3N0IGFsbCBo YXZlIERQLCBzbwo+PiBwZXJoYXBzIHRoZXkgb25seSBzdXBwb3J0Cj4+IDEwIGJwYyB3aGVuIGNv bm5lY3RlZCB3aXRoIERQPwo+Cj4gV2Ugc2VlIDEwIGJwYyBvbmx5IG92ZXIgSERNSSBhIGxvdCBh cHBhcmVudGx5LiAgSSBndWVzcyBhIGxvdCBvZgo+IG1vbml0b3IgdmVuZG9ycyBkbyB0aGUgbWlu aW11bSBuZWNlc3NhcnkgZm9yIGRlZXAgY29sb3IuCj4KClllcywgYXBwYXJlbnRseSB0aGVyZSBh cmUgYSBidW5jaCBvZiBIRE1JIGRpc3BsYXlzIHRoYXQgd2UgZHJpdmUgaW4gCjEwYnBjIHRoYXQg bWlnaHQgb3IgbWlnaHQgbm90IHJlcG9ydCAxMmJwYyBzdXBwb3J0LiBGcm9tIHRhbGtpbmcgdG8g b3VyIApIRE1JIGd1eXMgaXQgc291bmRzIGxpa2UgdGhpcyBpcyBhIHNsaWdodGx5IGFtYmlndW91 cyBhcmVhIGluIHRoZSBzcGVjLCAKZGVzcGl0ZSB3aGF0IHRoZSBIRE1JIHNwZWMgcXVvdGUgbWVu dGlvbmVkIGJ5IE5pY2hvbGFzIHNhaWQuIEknbGwgc2VlIGlmIApJIGNhbiBnZXQgbW9yZSBpbmZv LgoKSSdtIG5vdCBzdXJlIGl0IG1ha2VzIHNlbnNlIHRvIGJsb2NrIGFsbCBkZWVwIGNvbG9yIG1v ZGVzIGluIHRoaXMgY2FzZSAKZm9yIGFsbCBkcml2ZXJzLiBPdGhlciBIVyAoZS5nLiBBTUQncykg aXMgcGVyZmVjdGx5IGNhcGFibGUgb2YgZHJpdmluZyAKMTAtYml0LiBXb3VsZCBpdCBtYWtlIHNl bnNlIHRvIGp1c3QgYmxvY2sgdGhpcyBvbiB0aGUgaTkxNSBzaWRlIGFzIFZpbGxlIAphbGx1ZGVk IHRvIG9uIGFub3RoZXIgdGhyZWFkPwoKSGFycnkKCj4gQWxleAo+Cj4+Cj4+IFJlZ2FyZHMKPj4g Ly9Fcm5zdAo+Pgo+PiAyMDE3LTAxLTEwIDIwOjU0IEdNVCswMTowMCBBbGV4IERldWNoZXIgPGFs ZXhkZXVjaGVyQGdtYWlsLmNvbT46Cj4+Pgo+Pj4gT24gVHVlLCBKYW4gMTAsIDIwMTcgYXQgMTI6 NDYgUE0sIFZpbGxlIFN5cmrDpGzDpAo+Pj4gPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29t PiB3cm90ZToKPj4+PiBPbiBUdWUsIEphbiAxMCwgMjAxNyBhdCAxMjoyNzo0NVBNIC0wNTAwLCBB bGV4IERldWNoZXIgd3JvdGU6Cj4+Pj4+IE9uIFR1ZSwgSmFuIDEwLCAyMDE3IGF0IDY6MzMgQU0s IEVybnN0IFNqw7ZzdHJhbmQgPGVybnN0cEBnbWFpbC5jb20+Cj4+Pj4+IHdyb3RlOgo+Pj4+Pj4g SXNuJ3QgMTBicGMgdmVyeSBjb21tb24gYW1vbmcgbW9uaXRvcnMsIGFuZCAxMmJwYyB2ZXJ5IHJh cmU/IE9yIG1heWJlCj4+Pj4+PiBJJ20KPj4+Pj4+IGNvbmZ1c2luZyB0aGUgdHJhbnNwb3J0IGxh eWVyIHdpdGggdGhlIHByZXNlbnRhdGlvbiBjYXBhYmlsaXRpZXMuLi4/Cj4+Pj4+PiBIZXJlIGFy ZSAyMDEgbW9uaXRvcnMgdGhhdCBjbGFpbSAxMGJwYzoKPj4+Pj4+IGh0dHA6Ly9wcmljZXNweS5j by51ay9jYXRlZ29yeS5waHA/bD1zMzAwODU5NDM0Jm89ZWdfNDAxI3Byb2RsaXN0YQo+Pj4+Pj4K Pj4+Pj4KPj4+Pj4gRldJVywgSSd2ZSBhbG1vc3QgbmV2ZXIgc2VlbiBhIG1vbml0b3IgdGhhdCBz dXBwb3J0cyAxMiBicGMsIGJ1dCBJJ3ZlCj4+Pj4+IHNlZSBxdWl0ZSBhIGZldyAxMCBicGMgbW9u aXRvcnMuCj4+Pj4KPj4+PiBJJ3ZlIHNlZW4gcGxlbnR5IG9mIG1vbml0b3JzIHRoYXQgZG8gMTBi cGMgb3ZlciBEUCwgYnV0IEkndmUgbmV2ZXIgc2Vlbgo+Pj4+IGFueXRoaW5nIHRoYXQgZG9lcyAx MGJwYyBvdmVyIEhETUkuIDEyYnBjIG92ZXIgSERNSSBpcyBwcmV0dHkgY29tbW9uCj4+Pj4gaW4g InByb3BlciIgVFZzIGluIG15IGV4cGVyaWVuY2UuCj4+Pj4KPj4+Pj4gSSBjYW4gdGFsayB0byBv dXIgZGlzcGxheSB0ZWFtIHRvCj4+Pj4+IHNlZSB3aGF0IG90aGVyIE9TZXMgZG8uCj4+Pj4KPj4+ PiBUaGFua3MuIFRoYXQgc2hvdWxkIGdpdmUgdXMgc29tZSBpZGVhIGlmIGFueW9uZSBldmVyIHRy aWVkIDEwYnBjCj4+Pj4gb3ZlciBIRE1JIG9uIHRoZXNlIHRoaW5ncy4KPj4+Cj4+PiBXZSBhcHBh cmVudGx5IHNlZSB0aGlzIHByZXR0eSBjb21tb25seSwgZXNwZWNpYWxseSB3aXRoIGZyZWVzeW5j Cj4+PiBtb25pdG9ycywgYW5kIHdlIHN1cHBvcnQgaXQuICBJdCBzZWVtcyB0byBiZSBwcmV0dHkg cHJldmFsZW50IGJlY2F1c2UKPj4+IHlvdSBjYW4gc3VwcG9ydCBhIGhpZ2hlciByZWZyZXNoIHJh dGUgd2l0aCBhIGxvd2VyIGJwYy4KPj4+Cj4+PiBBbGV4Cj4+Pgo+Pj4+Cj4+Pj4+Cj4+Pj4+IEFs ZXgKPj4+Pj4KPj4+Pj4+IFJlZ2FyZHMKPj4+Pj4+IC8vRXJuc3QKPj4+Pj4+Cj4+Pj4+PiAyMDE3 LTAxLTEwIDExOjUyIEdNVCswMTowMCBWaWxsZSBTeXJqw6Rsw6QKPj4+Pj4+IDx2aWxsZS5zeXJq YWxhQGxpbnV4LmludGVsLmNvbT46Cj4+Pj4+Pj4KPj4+Pj4+PiBPbiBUaHUsIEphbiAwNSwgMjAx NyBhdCAwNTo0NToyM1BNIC0wNjAwLCBOaWNob2xhcyBTaWVsaWNraSB3cm90ZToKPj4+Pj4+Pj4g QXMgcGVyIHRoZSBIRE1JIDEuMyBhbmQgMS40IHNwZWMsICJkZWVwIGNvbG9yIG1vZGVzIiBhcmUg Y29sb3IKPj4+Pj4+Pj4gZGVwdGhzCj4+Pj4+Pj4+IGdyZWF0ZXIgdGhhbiAyNCBiaXRzIHBlciBw aXhlbC4gVGhlIHNwZWMgZXhwbGljaXRseSBzdGF0ZXMsICJBbGwKPj4+Pj4+Pj4gRGVlcAo+Pj4+ Pj4+PiBDb2xvciBtb2RlcyBhcmUgb3B0aW9uYWwgdGhvdWdoIGlmIGFuIEhETUkgU291cmNlIG9y IFNpbmsgc3VwcG9ydHMKPj4+Pj4+Pj4gYW55Cj4+Pj4+Pj4+IERlZXAgQ29sb3IgbW9kZSwgaXQg c2hhbGwgc3VwcG9ydCAzNi1iaXQgbW9kZS4iICg2LjIuNCBDb2xvciBEZXB0aAo+Pj4+Pj4+PiBS ZXF1aXJlbWVudHMpLgo+Pj4+Pj4+Pgo+Pj4+Pj4+PiBJIGNhbWUgYWNyb3NzIGEgbW9uaXRvciAo QWNlciBYMjMzSCkgdGhhdCBzdXBwbGllcyBhbiBpbGxlZ2FsIEVESUQKPj4+Pj4+Pj4gd2hlcmUK Pj4+Pj4+Pj4gRENfMzBiaXQgaXMgc2V0IGFuZCBEQ18zNmJpdCBpcyBub3Qgc2V0LiBUaGUgZW5k IHJlc3VsdCBpcyBiYWRseQo+Pj4+Pj4+PiBnYXJibGVkCj4+Pj4+Pj4+IG91dHB1dCBiZWNhdXNl IHRoZSBkcml2ZXIgaXMgc2VuZGluZyAzNkJQUCB3aGVuIHRoZSBtb25pdG9yIGNhbid0Cj4+Pj4+ Pj4+IGhhbmRsZQo+Pj4+Pj4+PiBpdC4KPj4+Pj4+Pj4KPj4+Pj4+Pj4gTXVjaCBvZiB0aGUgaW50 ZWwgaGFyZHdhcmUgaXMgaW5jYXBhYmxlIG9mIG9wZXJhdGluZyBhdCBhbnkKPj4+Pj4+Pj4gYml0 LXBlci1jb21wb25lbnQgc2V0dGluZyBvdXRzaWRlIG9mIDggb3IgMTIsIGFuZCB0aGUgc3BlYyBz ZWVtcwo+Pj4+Pj4+PiB0bwo+Pj4+Pj4+PiBpbXBseSB0aGF0IGlmIGFueSBkZWVwIGNvbG9yIHN1 cHBvcnQgaXMgZm91bmQsIHRoZW4gaXQgaXMgYSBzYWZlCj4+Pj4+Pj4+IGFzc3VtcHRpb24gdG8g b3BlcmF0ZSBhdCAxMi4KPj4+Pj4+Pj4KPj4+Pj4+Pj4gVGhpcyBwYXRjaCBlbnN1cmVzIHRoYXQg dGhlIEVESUQgaXMgd2l0aGluIHRoZSBzcGVjIChzcGVjaWZpY2FsbHksCj4+Pj4+Pj4+IHRoYXQK Pj4+Pj4+Pj4gRENfMzZiaXQgaXMgc2V0KSBiZWZvcmUgY29tbWl0dGluZyB0byBnb2luZyBmb3J3 YXJkIHdpdGggYW55IGRlZXAKPj4+Pj4+Pj4gY29sb3JzLiAgVGhlcmUgd2FzIGFscmVhZHkgYSBj aGVjayBmb3IgdGhpcyBFRElEIGluY29uc2lzdGVuY3ksCj4+Pj4+Pj4+IGJ1dCBpdAo+Pj4+Pj4+ PiByZXN1bHRlZCBvbmx5IGluIGEgd2FybmluZyBhbmQgZGlkIG5vdCBmYWxsLWJhY2sgdG8gc2Fm ZXIKPj4+Pj4+Pj4gc2V0dGluZ3MuCj4+Pj4+Pj4+Cj4+Pj4+Pj4+IENDOiBWaWxsZSBTeXJqw6Rs w6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+Pj4+Pj4+PiBTaWduZWQtb2ZmLWJ5 OiBOaWNob2xhcyBTaWVsaWNraSA8bmljaG9sYXMuc2llbGlja2lAZ21haWwuY29tPgo+Pj4+Pj4+ PiAtLS0KPj4+Pj4+Pj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fZWRpZC5jIHwgMzUKPj4+Pj4+Pj4g KysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0KPj4+Pj4+Pj4gIDEgZmlsZSBjaGFu Z2VkLCAyMyBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKPj4+Pj4+Pj4KPj4+Pj4+Pj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZWRpZC5jCj4+Pj4+Pj4+IGIvZHJpdmVy cy9ncHUvZHJtL2RybV9lZGlkLmMKPj4+Pj4+Pj4gaW5kZXggMzM2YmUzMWZmM2RlLi40MmNlM2Y1 NGQyZGMgMTAwNjQ0Cj4+Pj4+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZWRpZC5jCj4+ Pj4+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZWRpZC5jCj4+Pj4+Pj4+IEBAIC0zNzcy LDMwICszNzcyLDM0IEBAIHN0YXRpYyB2b2lkCj4+Pj4+Pj4+IGRybV9wYXJzZV9oZG1pX2RlZXBf Y29sb3JfaW5mbyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+Pj4+Pj4+PiAgewo+ Pj4+Pj4+PiAgICAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfaW5mbyAqaW5mbyA9ICZjb25uZWN0b3It PmRpc3BsYXlfaW5mbzsKPj4+Pj4+Pj4gICAgICAgdW5zaWduZWQgaW50IGRjX2JwYyA9IDA7Cj4+ Pj4+Pj4+ICsgICAgIHU4IG1vZGVzID0gMDsKPj4+Pj4+Pj4KPj4+Pj4+Pj4gICAgICAgLyogSERN SSBzdXBwb3J0cyBhdCBsZWFzdCA4IGJwYyAqLwo+Pj4+Pj4+PiAgICAgICBpbmZvLT5icGMgPSA4 Owo+Pj4+Pj4+Pgo+Pj4+Pj4+PiArICAgICAvKiBFbnN1cmUgYWxsIERDIG1vZGVzIGFyZSB1bnNl dCBpZiB3ZSByZXR1cm4gZWFybHkgKi8KPj4+Pj4+Pj4gKyAgICAgaW5mby0+ZWRpZF9oZG1pX2Rj X21vZGVzID0gMDsKPj4+Pj4+Pgo+Pj4+Pj4+IENsZWFyaW5nIHRoaXMgaW4gZHJtX2FkZF9kaXNw bGF5X2luZm8oKSBzaG91bGQgYmUgc3VmZmljaWVudCBzaW5jZQo+Pj4+Pj4+IHRoaXMgZ3V5IGRv ZXNuJ3QgZ2V0IGNhbGxlZCBmcm9tIGFueXdoZXJlIGVsc2UuIFNvIHRoaXMgcGFydCBjb3VsZAo+ Pj4+Pj4+IGJlIGRyb3BwcGVkLgo+Pj4+Pj4+Cj4+Pj4+Pj4gT3RoZXJ3aXNlIHRoaXMgZmVlbHMg bGlrZSBhIGRlY2VudCB3YXkgdG8gaGFuZGxlIHRoZSBwcm9ibGVtLiBXZQo+Pj4+Pj4+IGNvdWxk IG9mIGNvdXJzZSB0cnkgdG8gdXNlIHRoZSAxMGJwYyAob3Igd2hhdGV2ZXIpIGRlZXAgY29sb3Ig bW9kZXMKPj4+Pj4+PiB0aGUgc2luayBjbGFpbXMgdG8gc3VwcG9ydCwgYnV0IGdpdmVuIHRoYXQg dGhlIHBlb3BsZSBkZXNpZ25pbmcgdGhlCj4+Pj4+Pj4gdGhpbmcgZGlkbid0IGJvdGhlciByZWFk aW5nIHRoZSBzcGVjLCBpdCBzZWVtcyBzYWZlciB0byBqdXN0IGRpc2FibGUKPj4+Pj4+PiBkZWVw IGNvbG9yIHN1cHBvcnQgZW50aXJlbHkuCj4+Pj4+Pj4KPj4+Pj4+PiBSZXZpZXdlZC1ieTogVmls bGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPj4+Pj4+Pgo+Pj4+ Pj4+PiArCj4+Pj4+Pj4+ICAgICAgIGlmIChjZWFfZGJfcGF5bG9hZF9sZW4oaGRtaSkgPCA2KQo+ Pj4+Pj4+PiAgICAgICAgICAgICAgIHJldHVybjsKPj4+Pj4+Pj4KPj4+Pj4+Pj4gICAgICAgaWYg KGhkbWlbNl0gJiBEUk1fRURJRF9IRE1JX0RDXzMwKSB7Cj4+Pj4+Pj4+ICAgICAgICAgICAgICAg ZGNfYnBjID0gMTA7Cj4+Pj4+Pj4+IC0gICAgICAgICAgICAgaW5mby0+ZWRpZF9oZG1pX2RjX21v ZGVzIHw9IERSTV9FRElEX0hETUlfRENfMzA7Cj4+Pj4+Pj4+ICsgICAgICAgICAgICAgbW9kZXMg fD0gRFJNX0VESURfSERNSV9EQ18zMDsKPj4+Pj4+Pj4gICAgICAgICAgICAgICBEUk1fREVCVUco IiVzOiBIRE1JIHNpbmsgZG9lcyBkZWVwIGNvbG9yIDMwLlxuIiwKPj4+Pj4+Pj4gICAgICAgICAg ICAgICAgICAgICAgICAgY29ubmVjdG9yLT5uYW1lKTsKPj4+Pj4+Pj4gICAgICAgfQo+Pj4+Pj4+ Pgo+Pj4+Pj4+PiAgICAgICBpZiAoaGRtaVs2XSAmIERSTV9FRElEX0hETUlfRENfMzYpIHsKPj4+ Pj4+Pj4gICAgICAgICAgICAgICBkY19icGMgPSAxMjsKPj4+Pj4+Pj4gLSAgICAgICAgICAgICBp bmZvLT5lZGlkX2hkbWlfZGNfbW9kZXMgfD0gRFJNX0VESURfSERNSV9EQ18zNjsKPj4+Pj4+Pj4g KyAgICAgICAgICAgICBtb2RlcyB8PSBEUk1fRURJRF9IRE1JX0RDXzM2Owo+Pj4+Pj4+PiAgICAg ICAgICAgICAgIERSTV9ERUJVRygiJXM6IEhETUkgc2luayBkb2VzIGRlZXAgY29sb3IgMzYuXG4i LAo+Pj4+ICA+PiA+ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rvci0+bmFtZSk7Cj4+ Pj4+Pj4+ICAgICAgIH0KPj4+Pj4+Pj4KPj4+Pj4+Pj4gICAgICAgaWYgKGhkbWlbNl0gJiBEUk1f RURJRF9IRE1JX0RDXzQ4KSB7Cj4+Pj4+Pj4+ICAgICAgICAgICAgICAgZGNfYnBjID0gMTY7Cj4+ Pj4+Pj4+IC0gICAgICAgICAgICAgaW5mby0+ZWRpZF9oZG1pX2RjX21vZGVzIHw9IERSTV9FRElE X0hETUlfRENfNDg7Cj4+Pj4+Pj4+ICsgICAgICAgICAgICAgbW9kZXMgfD0gRFJNX0VESURfSERN SV9EQ180ODsKPj4+Pj4+Pj4gICAgICAgICAgICAgICBEUk1fREVCVUcoIiVzOiBIRE1JIHNpbmsg ZG9lcyBkZWVwIGNvbG9yIDQ4LlxuIiwKPj4+Pj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICAg Y29ubmVjdG9yLT5uYW1lKTsKPj4+Pj4+Pj4gICAgICAgfQo+Pj4+Pj4+PiBAQCAtMzgwNiw5ICsz ODEwLDI0IEBAIHN0YXRpYyB2b2lkCj4+Pj4+Pj4+IGRybV9wYXJzZV9oZG1pX2RlZXBfY29sb3Jf aW5mbyhzdHJ1Y3QKPj4+Pj4+Pj4gZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+Pj4+Pj4+PiAg ICAgICAgICAgICAgIHJldHVybjsKPj4+Pj4+Pj4gICAgICAgfQo+Pj4+Pj4+Pgo+Pj4+Pj4+PiAr ICAgICAvKgo+Pj4+Pj4+PiArICAgICAgKiBBbGwgZGVlcCBjb2xvciBtb2RlcyBhcmUgb3B0aW9u YWwsIGJ1dCBpZiBhIHNpbmsgc3VwcG9ydHMKPj4+Pj4+Pj4gYW55Cj4+Pj4+Pj4+IGRlZXAKPj4+ Pj4+Pj4gKyAgICAgICogY29sb3IgbW9kZSwgaXQgbXVzdCBzdXBwb3J0IDM2LWJpdCBtb2RlLiBJ ZiB0aGlzIGlzIGZvdW5kCj4+Pj4+Pj4+IG5vdAo+Pj4+Pj4+PiArICAgICAgKiB0byBiZSB0aGUg Y2FzZSwgc2luayBpcyBpbiB2aW9sYXRpb24gb2YgSERNSSAxLjMgLyAxLjQKPj4+Pj4+Pj4gc3Bl YyBhbmQKPj4+Pj4+Pj4gaXQKPj4+Pj4+Pj4gKyAgICAgICogaXMgcHJ1ZGVudCB0byBkaXNhYmxl IGFsbCBkZWVwIGNvbG9yIG1vZGVzLiBSZXR1cm4gaGVyZQo+Pj4+Pj4+PiBiZWZvcmUKPj4+Pj4+ Pj4gKyAgICAgICogY29tbWl0dGluZyBicGMgYW5kIGVkaWRfaGRtaV9kY19tb2Rlcy4KPj4+Pj4+ Pj4gKyAgICAgICovCj4+Pj4+Pj4+ICsgICAgIGlmICghKG1vZGVzICYgRFJNX0VESURfSERNSV9E Q18zNikpIHsKPj4+Pj4+Pj4gKyAgICAgICAgICAgICBEUk1fREVCVUcoIiVzOiBIRE1JIHNpbmsg c2hvdWxkIGRvIERDXzM2LCBidXQgZG9lcwo+Pj4+Pj4+PiBub3QhXG4iLAo+Pj4+Pj4+PiArICAg ICAgICAgICAgICAgICAgICAgICBjb25uZWN0b3ItPm5hbWUpOwo+Pj4+Pj4+PiArICAgICAgICAg ICAgIHJldHVybjsKPj4+Pj4+Pj4gKyAgICAgfQo+Pj4+Pj4+PiArCj4+Pj4+Pj4+ICsKPj4+Pj4+ Pj4gICAgICAgRFJNX0RFQlVHKCIlczogQXNzaWduaW5nIEhETUkgc2luayBjb2xvciBkZXB0aCBh cyAlZAo+Pj4+Pj4+PiBicGMuXG4iLAo+Pj4+Pj4+PiAgICAgICAgICAgICAgICAgY29ubmVjdG9y LT5uYW1lLCBkY19icGMpOwo+Pj4+Pj4+PiAgICAgICBpbmZvLT5icGMgPSBkY19icGM7Cj4+Pj4+ Pj4+ICsgICAgIGluZm8tPmVkaWRfaGRtaV9kY19tb2RlcyA9IG1vZGVzOwo+Pj4+Pj4+Pgo+Pj4+ Pj4+PiAgICAgICAvKgo+Pj4+Pj4+PiAgICAgICAgKiBEZWVwIGNvbG9yIHN1cHBvcnQgbWFuZGF0 ZXMgUkdCNDQ0IHN1cHBvcnQgZm9yIGFsbCB2aWRlbwo+Pj4+Pj4+PiBAQCAtMzgyMywxNSArMzg0 Miw2IEBAIHN0YXRpYyB2b2lkCj4+Pj4+Pj4+IGRybV9wYXJzZV9oZG1pX2RlZXBfY29sb3JfaW5m byhzdHJ1Y3QKPj4+Pj4+Pj4gZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+Pj4+Pj4+PiAgICAg ICAgICAgICAgIERSTV9ERUJVRygiJXM6IEhETUkgc2luayBkb2VzIFlDUkNCNDQ0IGluIGRlZXAK Pj4+Pj4+Pj4gY29sb3IuXG4iLAo+Pj4+Pj4+PiAgICAgICAgICAgICAgICAgICAgICAgICBjb25u ZWN0b3ItPm5hbWUpOwo+Pj4+Pj4+PiAgICAgICB9Cj4+Pj4+Pj4+IC0KPj4+Pj4+Pj4gLSAgICAg LyoKPj4+Pj4+Pj4gLSAgICAgICogU3BlYyBzYXlzIHRoYXQgaWYgYW55IGRlZXAgY29sb3IgbW9k ZSBpcyBzdXBwb3J0ZWQgYXQKPj4+Pj4+Pj4gYWxsLAo+Pj4+Pj4+PiAtICAgICAgKiB0aGVuIGRl ZXAgY29sb3IgMzYgYml0IG11c3QgYmUgc3VwcG9ydGVkLgo+Pj4+Pj4+PiAtICAgICAgKi8KPj4+ Pj4+Pj4gLSAgICAgaWYgKCEoaGRtaVs2XSAmIERSTV9FRElEX0hETUlfRENfMzYpKSB7Cj4+Pj4+ Pj4+IC0gICAgICAgICAgICAgRFJNX0RFQlVHKCIlczogSERNSSBzaW5rIHNob3VsZCBkbyBEQ18z NiwgYnV0IGRvZXMKPj4+Pj4+Pj4gbm90IVxuIiwKPj4+Pj4+Pj4gLSAgICAgICAgICAgICAgICAg ICAgICAgY29ubmVjdG9yLT5uYW1lKTsKPj4+Pj4+Pj4gLSAgICAgfQo+Pj4+Pj4+PiAgfQo+Pj4+ Pj4+Pgo+Pj4+Pj4+PiAgc3RhdGljIHZvaWQKPj4+Pj4+Pj4gQEAgLTM4OTUsNiArMzkwNSw3IEBA IHN0YXRpYyB2b2lkIGRybV9hZGRfZGlzcGxheV9pbmZvKHN0cnVjdAo+Pj4+Pj4+PiBkcm1fY29u bmVjdG9yICpjb25uZWN0b3IsCj4+Pj4+Pj4+ICAgICAgIC8qIGRyaXZlciBmaWd1cmVzIGl0IG91 dCBpbiB0aGlzIGNhc2UgKi8KPj4+Pj4+Pj4gICAgICAgaW5mby0+YnBjID0gMDsKPj4+Pj4+Pj4g ICAgICAgaW5mby0+Y29sb3JfZm9ybWF0cyA9IDA7Cj4+Pj4+Pj4+ICsgICAgIGluZm8tPmVkaWRf aGRtaV9kY19tb2RlcyA9IDA7Cj4+Pj4+Pj4+ICAgICAgIGluZm8tPmNlYV9yZXYgPSAwOwo+Pj4+ Pj4+PiAgICAgICBpbmZvLT5tYXhfdG1kc19jbG9jayA9IDA7Cj4+Pj4+Pj4+ICAgICAgIGluZm8t PmR2aV9kdWFsID0gZmFsc2U7Cj4+Pj4+Pj4+IC0tCj4+Pj4+Pj4+IDIuMTEuMAo+Pj4+Pj4+Cj4+ Pj4+Pj4gLS0KPj4+Pj4+PiBWaWxsZSBTeXJqw6Rsw6QKPj4+Pj4+PiBJbnRlbCBPVEMKPj4+Pj4+ PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+Pj4+Pj4+ IGRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKPj4+Pj4+PiBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCj4+Pj4+Pj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9kcmktZGV2ZWwKPj4+Pj4+Cj4+Pj4+Pgo+Pj4+Pj4KPj4+Pj4+IF9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4+Pj4+PiBkcmktZGV2ZWwgbWFpbGlu ZyBsaXN0Cj4+Pj4+PiBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4+Pj4+PiBodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo+Pj4+ Pj4KPj4+Pgo+Pj4+IC0tCj4+Pj4gVmlsbGUgU3lyasOkbMOkCj4+Pj4gSW50ZWwgT1RDCj4+Cj4+ Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBkcmkt ZGV2ZWwgbWFpbGluZyBsaXN0Cj4gZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCj4K X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVs IG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==