From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2135A89CE3 for ; Wed, 10 Oct 2018 15:48:39 +0000 (UTC) References: <20181005233437.31286-1-manasi.d.navare@intel.com> From: Antonio Argenziano Message-ID: Date: Wed, 10 Oct 2018 08:48:37 -0700 MIME-Version: 1.0 In-Reply-To: <20181005233437.31286-1-manasi.d.navare@intel.com> Content-Language: en-US Subject: Re: [igt-dev] [PATCH i-g-t] test/kms_dp_dsc: Basic KMS test to validate VESA DSC on DP/eDP List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Manasi Navare , igt-dev@lists.freedesktop.org Cc: Anusha Srivatsa List-ID: CgpPbiAwNS8xMC8xOCAxNjozNCwgTWFuYXNpIE5hdmFyZSB3cm90ZToKPiBUaGlzIHBhdGNoIGFk ZHMgYSBiYXNpYyBrbXMgdGVzdCB0byB2YWxpZGF0ZSB0aGUgZGlzcGxheSBzdHJlYW0KPiBjb21w cmVzc2lvbiBmdW5jdGlvbmFsaXR5IGlmIHN1cHBvcnRlZCBvbiBEUC9lRFAgY29ubmVjdG9yLgo+ IEN1cnJlbnRseSB0aGlzIGhhcyBvbmx5IG9uZSBzdWJ0ZXN0IHRvIGZvcmNlIHRoZSBEU0Mgb24g YWxsCj4gdGhlIGNvbm5lY3RvcnMgdGhhdCBzdXBwb3J0IGl0IHdpdGggZGVmYXVsdCBwYXJhbWV0 ZXJzLgo+IFRoaXMgd2lsbCBiZSBleHBhbmRlZCB0byBhZGQgbW9yZSBzdWJ0ZXN0cyB0byB0d2Vh ayBEU0MgcGFyYW1ldGVycy4KPiAKPiBDYzogQW51c2hhIFNyaXZhdHNhIDxhbnVzaGEuc3JpdmF0 c2FAaW50ZWwuY29tPgo+IFNpZ25lZC1vZmYtYnk6IE1hbmFzaSBOYXZhcmUgPG1hbmFzaS5kLm5h dmFyZUBpbnRlbC5jb20+Cj4gLS0tCj4gICB0ZXN0cy9NYWtlZmlsZS5zb3VyY2VzIHwgICAxICsK PiAgIHRlc3RzL2ttc19kcF9kc2MuYyAgICAgfCAzNzIgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysKPiAgIDIgZmlsZXMgY2hhbmdlZCwgMzczIGluc2VydGlvbnMoKykK PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9rbXNfZHBfZHNjLmMKPiAKPiBkaWZmIC0tZ2l0 IGEvdGVzdHMvTWFrZWZpbGUuc291cmNlcyBiL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMKPiBpbmRl eCBjODQ5MzNmMS4uYzgwN2FhZDMgMTAwNjQ0Cj4gLS0tIGEvdGVzdHMvTWFrZWZpbGUuc291cmNl cwo+ICsrKyBiL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMKPiBAQCAtMjA3LDYgKzIwNyw3IEBAIFRF U1RTX3Byb2dzID0gXAo+ICAgCWttc190dl9sb2FkX2RldGVjdCBcCj4gICAJa21zX3VuaXZlcnNh bF9wbGFuZSBcCj4gICAJa21zX3ZibGFuayBcCj4gKwlrbXNfZHBfZHNjIFwKCkFkZCB0ZXN0IGlu IG1lc29uIGJ1aWxkIGFzIHdlbGwuCgo+ICAgCW1ldGFfdGVzdCBcCj4gICAJcGVyZiBcCj4gICAJ cGVyZl9wbXUgXAo+IGRpZmYgLS1naXQgYS90ZXN0cy9rbXNfZHBfZHNjLmMgYi90ZXN0cy9rbXNf ZHBfZHNjLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwLi5kMGZkMmFl Mwo+IC0tLSAvZGV2L251bGwKPiArKysgYi90ZXN0cy9rbXNfZHBfZHNjLmMKPiBAQCAtMCwwICsx LDM3MiBAQAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgwqkgMjAxNyBJbnRlbCBDb3Jwb3JhdGlvbgo+ ICsgKgo+ICsgKiBEaXNwbGF5cG9ydCBEaXNwbGF5IFN0cmVhbSBDb21wcmVzc2lvbiB0ZXN0Cj4g KyAqCj4gKyAqIEF1dGhvcnM6Cj4gKyAqIE1hbmFzaSBOYXZhcmUgPG1hbmFzaS5kLm5hdmFyZUBp bnRlbC5jb20+Cj4gKyAqCj4gKyAqIEVsZW1lbnRzIG9mIHRoZSBtb2Rlc2V0IGNvZGUgYWRhcHRl ZCBmcm9tIERhdmlkIEhlcnJtYW5uJ3MKPiArICogRFJNIG1vZGVzZXQgZXhhbXBsZQo+ICsgKgo+ ICsgKi8KPiArI2luY2x1ZGUgImlndC5oIgo+ICsjaW5jbHVkZSA8ZXJybm8uaD4KPiArI2luY2x1 ZGUgPGdldG9wdC5oPgo+ICsjaW5jbHVkZSA8bWF0aC5oPgo+ICsjaW5jbHVkZSA8c3RkaW50Lmg+ Cj4gKyNpbmNsdWRlIDxzdGRib29sLmg+Cj4gKyNpbmNsdWRlIDxzdHJpbmdzLmg+Cj4gKyNpbmNs dWRlIDx1bmlzdGQuaD4KPiArI2luY2x1ZGUgPHN0ZGxpYi5oPgo+ICsjaW5jbHVkZSA8c2lnbmFs Lmg+Cj4gKyNpbmNsdWRlIDx0aW1lLmg+Cj4gKyNpbmNsdWRlIDxmY250bC5oPgo+ICsjaW5jbHVk ZSA8dGVybWlvcy5oPgo+ICsKPiAraW50IGRybV9mZDsKPiArZHJtTW9kZVJlcyAqcmVzb3VyY2Vz Owo+ICt1aW50NjRfdCB0aWxpbmcgPSBMT0NBTF9EUk1fRk9STUFUX01PRF9OT05FOwoKXiBTZWVt cyB0byBiZSB1c2VkIG9ubHkgaW4gb25lIHBsYWNlLCB3aHkgbm90IHVzZSB0aGUgbWFjcm8gZGly ZWN0bHk/Cgo+ICsKPiArc3RydWN0IGNvbm5lY3RvciB7Cj4gKwl1aW50MzJfdCBpZDsKPiArCWlu dCBtb2RlX3ZhbGlkOwo+ICsJZHJtTW9kZU1vZGVJbmZvIG1vZGU7Cj4gKwlkcm1Nb2RlQ29ubmVj dG9yICpjb25uZWN0b3I7Cj4gKwlkcm1Nb2RlRW5jb2RlciAqZW5jb2RlcjsKPiArCWludCBjcnRj LCBwaXBlOwo+ICt9Owo+ICsKPiArc3RydWN0IGRzY19jb25maWcgewo+ICsJY2hhciB0ZXN0X25h bWVbMTI4XTsKPiArCWludCBtb2RlX3dpZHRoOwo+ICsJaW50IG1vZGVfaGVpZ2h0Owo+ICsJaW50 IGJwcDsKPiArCWludCBkZXB0aDsKPiArCWJvb2wgZHNjX3N1cHBvcnRlZDsKPiArCWJvb2wgZHNj X2VuYWJsZTsKPiArfTsKPiArCj4gK3N0YXRpYyBGSUxFICpmb3BlbmF0KGludCBkaXIsIGNvbnN0 IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKm1vZGUpCj4gK3sKPiArCWludCBmZCA9IG9wZW5hdChk aXIsIG5hbWUsIE9fUkRXUik7Cj4gKwlyZXR1cm4gZmRvcGVuKGZkLCBtb2RlKTsKPiArfQo+ICsK PiArc3RhdGljIGJvb2wgZ2V0X2RwX2RzY19zdXBwb3J0KGNoYXIgKnRlc3RfY29ubmVjdG9yX25h bWUpCj4gK3sKPiArCWludCBkaXIgPSBpZ3RfZGVidWdmc19kaXIoZHJtX2ZkKTsKPiArCUZJTEUg KmRzY19zdXBwb3J0X2ZwID0gTlVMTDsKPiArCWNoYXIgKmxpbmUgPSBOVUxMOwo+ICsJc2l6ZV90 IGxpbmVfc2l6ZSA9IDA7Cj4gKwljaGFyIGJ1ZlsxMjhdID0gezB9LCBzdXBwb3J0ZWRfc3RyWzVd LCBlbmFibGVkX3N0cls1XTsKPiArCWJvb2wgc3VwcG9ydGVkID0gZmFsc2U7Cj4gKwo+ICsJc3Ry Y3B5KGJ1ZiwgdGVzdF9jb25uZWN0b3JfbmFtZSk7Cj4gKwlzdHJjYXQoYnVmLCAiL2k5MTVfZHNj X3N1cHBvcnQiKTsKPiArCWRzY19zdXBwb3J0X2ZwID0gZm9wZW5hdChkaXIsIGJ1ZiwgInIiKTsK PiArCWlndF9yZXF1aXJlKGRzY19zdXBwb3J0X2ZwKTsKCmRvbid0IHdlIGhhdmUgc29tZXRoaW5n IHNpbWlsYXIgaW4gaWd0X2RlYnVnZnMgYWxyZWFkeSAoaWd0X2RlYnVnZnNfcmVhZCk/Cgo+ICsK PiArCXdoaWxlIChnZXRsaW5lKCZsaW5lLCAmbGluZV9zaXplLCBkc2Nfc3VwcG9ydF9mcCkgPiAw KSB7Cj4gKwkJY2hhciAqc3VwcG9ydCwgKmVuYWJsZWQ7Cj4gKwo+ICsJCWVuYWJsZWQgPSBzdHJz dHIobGluZSwgIkVuYWJsZWQ6ICIpOwo+ICsJCWlndF9hc3NlcnRfZXEoc3NjYW5mKGVuYWJsZWQs ICJFbmFibGVkOiAlcyIsIGVuYWJsZWRfc3RyKSwgMSk7Cj4gKwkJaWYgKHN0cmNtcChlbmFibGVk X3N0ciwgInllcyIpID09IDApIHsKPiArCQkJaWd0X2luZm8oIkRTQyBpcyBlbmFibGVkIG9uICVz XG4iLCB0ZXN0X2Nvbm5lY3Rvcl9uYW1lKTsKPiArCQkJc3VwcG9ydGVkID0gdHJ1ZTsKPiArCQkJ YnJlYWs7Cj4gKwkJfSBlbHNlIHsKPiArCQkJZ2V0bGluZSgmbGluZSwgJmxpbmVfc2l6ZSwgZHNj X3N1cHBvcnRfZnApOwo+ICsJCQlzdXBwb3J0ID0gc3Ryc3RyKGxpbmUsICJTdXBwb3J0ZWQ6ICIp Owo+ICsJCWlndF9hc3NlcnRfZXEoc3NjYW5mKHN1cHBvcnQsICJTdXBwb3J0ZWQ6ICVzIiwgc3Vw cG9ydGVkX3N0ciksIDEpOwo+ICsJCWlmIChzdHJjbXAoc3VwcG9ydGVkX3N0ciwgInllcyIpID09 IDApCj4gKwkJCXN1cHBvcnRlZCA9IHRydWU7Cj4gKwkJZWxzZSBpZiAoc3RyY21wKHN1cHBvcnRl ZF9zdHIsICJubyIpID09IDApCj4gKwkJCXN1cHBvcnRlZCA9IGZhbHNlOwo+ICsJCWVsc2UKPiAr CQkJaWd0X2ZhaWxfb25fZih0cnVlLCAiVW5rbm93biBEU0Mgc3VwcG9ydGVkIHN0YXR1cyAnJXMn XG4iLAo+ICsJCQkJICAgICAgc3VwcG9ydGVkX3N0cik7Cj4gKwkJYnJlYWs7Cj4gKwkJfWh0dHBz Oi8vamlyYTAxLmRldnRvb2xzLmludGVsLmNvbS9icm93c2UvR1VDLTMwNgo+ICsJfQo+ICsKPiAr CWZyZWUobGluZSk7Cj4gKwlmY2xvc2UoZHNjX3N1cHBvcnRfZnApOwo+ICsKPiArCXJldHVybiBz dXBwb3J0ZWQ7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIHNldF9kcF9kc2NfZW5hYmxlKGJvb2wg ZW5hYmxlLCBjaGFyICp0ZXN0X2Nvbm5lY3Rvcl9uYW1lKQo+ICt7Cj4gKwlpbnQgZGlyID0gaWd0 X2RlYnVnZnNfZGlyKGRybV9mZCk7Cj4gKwlGSUxFICpkc2NfZW5hYmxlX2ZwID0gTlVMTDsKPiAr CWNoYXIgYnVmWzEyOF0gPSB7MH07Cj4gKwo+ICsJc3RyY3B5KGJ1ZiwgdGVzdF9jb25uZWN0b3Jf bmFtZSk7Cj4gKwlzdHJjYXQoYnVmLCAiL2k5MTVfZHNjX3N1cHBvcnQiKTsKPiArCWRzY19lbmFi bGVfZnAgPSBmb3BlbmF0KGRpciwgYnVmLCAidysiKTsKPiArCWlndF9yZXF1aXJlKGRzY19lbmFi bGVfZnApOwo+ICsJcmV3aW5kKGRzY19lbmFibGVfZnApOwo+ICsJaWd0X2luZm8oIlNldHRpbmcg RFNDX0VOQUJMRSB0byAlcyBmb3IgJXNcbiIsIChlbmFibGUpID8gInRydWUiIDogImZhbHNlIiwg dGVzdF9jb25uZWN0b3JfbmFtZSk7Cj4gKwlmcHJpbnRmKGRzY19lbmFibGVfZnAsICIlZCIsIGVu YWJsZSk7Cj4gKwlmZmx1c2goZHNjX2VuYWJsZV9mcCk7Cj4gKwlmY2xvc2UoZHNjX2VuYWJsZV9m cCk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGR1bXBfY29ubmVjdG9yc19mZChpbnQgZHJtZmQp Cj4gK3sKPiArCWludCBpLCBqOwo+ICsKPiArCWRybU1vZGVSZXMgKm1vZGVfcmVzb3VyY2VzID0g ZHJtTW9kZUdldFJlc291cmNlcyhkcm1mZCk7Cj4gKwo+ICsgICAgICAgIGlmICghbW9kZV9yZXNv dXJjZXMpIHsKPiArCQlpZ3Rfd2FybigiZHJtTW9kZUdldFJlc291cmNlcyBmYWlsZWQ6ICVzXG4i LCBzdHJlcnJvcihlcnJubykpOwo+ICsJCXJldHVybjsKPiArCX0KPiArCj4gKwlpZ3RfaW5mbygi Q29ubmVjdG9yczpcbiIpOwo+ICsJaWd0X2luZm8oImlkXHRlbmNvZGVyXHRzdGF0dXNcdFx0dHlw ZVx0c2l6ZSAobW0pXHRtb2Rlc1xuIik7Cj4gKwlmb3IgKGkgPSAwOyBpIDwgbW9kZV9yZXNvdXJj ZXMtPmNvdW50X2Nvbm5lY3RvcnM7IGkrKykgewo+ICsJCWRybU1vZGVDb25uZWN0b3IgKmNvbm5l Y3RvcjsKPiArCj4gKwkJY29ubmVjdG9yID0gZHJtTW9kZUdldENvbm5lY3RvckN1cnJlbnQoZHJt ZmQsCj4gKwkJCQkJCSAgICAgICBtb2RlX3Jlc291cmNlcy0+Y29ubmVjdG9yc1tpXSk7Cj4gKwkJ aWYgKCFjb25uZWN0b3IpIHsKPiArCQkJaWd0X3dhcm4oImNvdWxkIG5vdCBnZXQgY29ubmVjdG9y ICVpOiAlc1xuIiwKPiArCQkJCSBtb2RlX3Jlc291cmNlcy0+Y29ubmVjdG9yc1tpXSwgc3RyZXJy b3IoZXJybm8pKTsKPiArCQkJY29udGludWU7Cj4gKwkJfQo+ICsKPiArCQlpZ3RfaW5mbygiJWRc dCVkXHQlc1x0JXNcdCVkeCVkXHRcdCVkXG4iLAo+ICsJCQkgY29ubmVjdG9yLT5jb25uZWN0b3Jf aWQsIGNvbm5lY3Rvci0+ZW5jb2Rlcl9pZCwKPiArCQkJIGttc3Rlc3RfY29ubmVjdG9yX3N0YXR1 c19zdHIoY29ubmVjdG9yLT5jb25uZWN0aW9uKSwKPiArCQkJIGttc3Rlc3RfY29ubmVjdG9yX3R5 cGVfc3RyKGNvbm5lY3Rvci0+Y29ubmVjdG9yX3R5cGUpLAo+ICsJCQkgY29ubmVjdG9yLT5tbVdp ZHRoLCBjb25uZWN0b3ItPm1tSGVpZ2h0LAo+ICsJCQkgY29ubmVjdG9yLT5jb3VudF9tb2Rlcyk7 Cj4gKwo+ICsJCWlmICghY29ubmVjdG9yLT5jb3VudF9tb2RlcykKCk5lZWQgdG8gZnJlZSB0aGUg Y29ubmVjdG9yIGhlcmUuCgo+ICsJCQljb250aW51ZTsKPiArCj4gKwkJaWd0X2luZm8oIiAgbW9k ZXM6XG4iKTsKPiArCQlpZ3RfaW5mbygiICBuYW1lIHJlZnJlc2ggKEh6KSBoZGlzcCBoc3MgaHNl IGh0b3QgdmRpc3AgIiJ2c3MgdnNlIHZ0b3QgZmxhZ3MgdHlwZSBjbG9ja1xuIik7Cj4gKwkJZm9y IChqID0gMDsgaiA8IGNvbm5lY3Rvci0+Y291bnRfbW9kZXM7IGorKyl7Cj4gKwkJCWlndF9pbmZv KCJbJWRdIiwgaik7Cj4gKwkJCWttc3Rlc3RfZHVtcF9tb2RlKCZjb25uZWN0b3ItPm1vZGVzW2pd KTsKPiArCQl9Cj4gKwo+ICsJCWRybU1vZGVGcmVlQ29ubmVjdG9yKGNvbm5lY3Rvcik7Cj4gKwl9 Cj4gKwlpZ3RfaW5mbygiXG4iKTsKPiArCj4gKwlkcm1Nb2RlRnJlZVJlc291cmNlcyhtb2RlX3Jl c291cmNlcyk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGR1bXBfY3J0Y3NfZmQoaW50IGRybWZk KQo+ICt7Cj4gKwlpbnQgaTsKPiArCWRybU1vZGVSZXMgKm1vZGVfcmVzb3VyY2VzID0gZHJtTW9k ZUdldFJlc291cmNlcyhkcm1mZCk7Cj4gKwo+ICsJaWd0X2luZm8oIkNSVENzOlxuIik7Cj4gKwlp Z3RfaW5mbygiaWRcdGZiXHRwb3NcdHNpemVcbiIpOwo+ICsJZm9yIChpID0gMDsgaSA8IG1vZGVf cmVzb3VyY2VzLT5jb3VudF9jcnRjczsgaSsrKSB7Cj4gKwkJZHJtTW9kZUNydGMgKmNydGM7Cj4g Kwo+ICsJCWNydGMgPSBkcm1Nb2RlR2V0Q3J0Yyhkcm1mZCwgbW9kZV9yZXNvdXJjZXMtPmNydGNz W2ldKTsKPiArCQlpZiAoIWNydGMpIHsKPiArCQkJaWd0X3dhcm4oImNvdWxkIG5vdCBnZXQgY3J0 YyAlaTogJXNcbiIsCj4gKwkJCQkgbW9kZV9yZXNvdXJjZXMtPmNydGNzW2ldLCBzdHJlcnJvcihl cnJubykpOwo+ICsJCQljb250aW51ZTsKPiArCQl9Cj4gKwkJaWd0X2luZm8oIiVkXHQlZFx0KCVk LCVkKVx0KCVkeCVkKVxuIiwKPiArCQkJIGNydGMtPmNydGNfaWQsIGNydGMtPmJ1ZmZlcl9pZCwg Y3J0Yy0+eCwKPiArCQkJIGNydGMtPnksIGNydGMtPndpZHRoLCBjcnRjLT5oZWlnaHQpOwo+ICsJ CWttc3Rlc3RfZHVtcF9tb2RlKCZjcnRjLT5tb2RlKTsKPiArCj4gKwkJZHJtTW9kZUZyZWVDcnRj KGNydGMpOwo+ICsJfQo+ICsJaWd0X2luZm8oIlxuIik7Cj4gKwo+ICsJZHJtTW9kZUZyZWVSZXNv dXJjZXMobW9kZV9yZXNvdXJjZXMpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBkdW1wX2luZm8o dm9pZCkKPiArewo+ICsJZHVtcF9jb25uZWN0b3JzX2ZkKGRybV9mZCk7Cj4gKwlkdW1wX2NydGNz X2ZkKGRybV9mZCk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQKPiArc2V0X21vZGUoc3RydWN0IGNv bm5lY3RvciAqYywgc3RydWN0IGRzY19jb25maWcgKnRlc3RfY29uZmlnLCBib29sIHNldF9tb2Rl KQo+ICt7Cj4gKwl1bnNpZ25lZCBpbnQgZmJfaWQgPSAwOwo+ICsJc3RydWN0IGlndF9mYiBmYl9p bmZvOwo+ICsJaW50IHJldCA9IDA7Cj4gKwo+ICsJaWYgKCFzZXRfbW9kZSkgewo+ICsJCXJldCA9 IGRybU1vZGVTZXRDcnRjKGRybV9mZCwgYy0+Y3J0YywgMCwgMCwgMCwKPiArCQkJCSAgICAgTlVM TCwgMCwgTlVMTCk7Cj4gKwkJaWYgKHJldCkKPiArCQkJaWd0X3dhcm4oIkZhaWxlZCB0byB1bnNl dCBtb2RlIik7Cj4gKwkJcmV0dXJuIHJldDsKPiArCX0KPiArCj4gKwlmYl9pZCA9IGlndF9jcmVh dGVfcGF0dGVybl9mYihkcm1fZmQsIHRlc3RfY29uZmlnLT5tb2RlX3dpZHRoLAo+ICsJCQkJICAg ICAgdGVzdF9jb25maWctPm1vZGVfaGVpZ2h0LAo+ICsJCQkJICAgICAgaWd0X2JwcF9kZXB0aF90 b19kcm1fZm9ybWF0KHRlc3RfY29uZmlnLT5icHAsCj4gKwkJCQkJCQkJICB0ZXN0X2NvbmZpZy0+ ZGVwdGgpLAo+ICsJCQkJICAgICAgdGlsaW5nLCAmZmJfaW5mbyk7Cj4gKwo+ICsJaWd0X2luZm8o IkNSVEMoJXUpOlslZF0iLCBjLT5jcnRjLCAwKTsKPiArCWttc3Rlc3RfZHVtcF9tb2RlKCZjLT5t b2RlKTsKPiArCWRybU1vZGVTZXRDcnRjKGRybV9mZCwgYy0+Y3J0YywgLTEsIDAsIDAsIE5VTEws IDAsIE5VTEwpOwo+ICsJcmV0ID0gZHJtTW9kZVNldENydGMoZHJtX2ZkLCBjLT5jcnRjLCBmYl9p ZCwgMCwgMCwKPiArCQkJICAgICAmYy0+aWQsIDEsICZjLT5tb2RlKTsKPiArCXNsZWVwKDUpOwoK V2h5IHRoZSBzbGVlcCBiZWZvcmUgY2hlY2tpbmcgdGhlIHJldHVybiBjb2RlPwoKPiArCWlmIChy ZXQgPCAwKSB7Cj4gKwkJaWd0X3dhcm4oIkZhaWxlZCB0byBzZXQgbW9kZSAoJWR4JWRAJWRIeik6 ICVzXG4iLAo+ICsJCQkgdGVzdF9jb25maWctPm1vZGVfd2lkdGgsIHRlc3RfY29uZmlnLT5tb2Rl X2hlaWdodCwKPiArCQkJIGMtPm1vZGUudnJlZnJlc2gsIHN0cmVycm9yKGVycm5vKSk7Cj4gKwkJ aWd0X3JlbW92ZV9mYihkcm1fZmQsICZmYl9pbmZvKTsKPiArCj4gKwl9Cj4gKwo+ICsJcmV0dXJu IHJldDsKPiArfQo+ICsKPiArCj4gKy8qCj4gKyAqIFJlLXByb2JlIGNvbm5lY3RvcnMgYW5kIGRv IGEgbW9kZXNldCB3aXRoIGFuZCB3aWhvdXQgRFNDCj4gKyAqCj4gKyAqIFJldHVybnM6Cj4gKyAq IDA6IE9uIFN1Y2Nlc3MKPiArICogLTE6IE9uIGZhaWx1cmUKPiArICovCj4gK3N0YXRpYyBpbnQg dXBkYXRlX2Rpc3BsYXkoc3RydWN0IGRzY19jb25maWcgKnRlc3RfY29uZmlnKQo+ICt7Cj4gKwlz dHJ1Y3QgY29ubmVjdG9yICpjb25uZWN0b3JzOwo+ICsJc3RydWN0IGttc3Rlc3RfY29ubmVjdG9y X2NvbmZpZyBjb25maWc7Cj4gKwlpbnQgY250LCBjb25uX2NudCA9IDAsIHJldCA9IDAsIGVkcF9j bnQgPSAwLCBkcF9jbnQgPSAwOwo+ICsJdW5zaWduZWQgbG9uZyBjcnRjX2lkeF9tYXNrID0gLTFV TDsKPiArCWNoYXIgY29ubl9idWZbMTI4XSA9IHswfTsKPiArCj4gKwlyZXNvdXJjZXMgPSBkcm1N b2RlR2V0UmVzb3VyY2VzKGRybV9mZCk7Cj4gKwlpZiAoIXJlc291cmNlcykgewo+ICsJCWlndF93 YXJuKCJkcm1Nb2RlR2V0UmVzb3VyY2VzIGZhaWxlZDogJXNcbiIsIHN0cmVycm9yKGVycm5vKSk7 Cj4gKwkJcmV0dXJuIC0xOwo+ICsJfQo+ICsKPiArCWNvbm5lY3RvcnMgPSBjYWxsb2MocmVzb3Vy Y2VzLT5jb3VudF9jb25uZWN0b3JzLAo+ICsJCQkgICAgc2l6ZW9mKHN0cnVjdCBjb25uZWN0b3Ip KTsKPiArCWlmICghY29ubmVjdG9ycykKPiArCQlyZXR1cm4gLTE7Cj4gKwo+ICsJLyogRmluZCBh bnkgY29ubmVjdGVkIGRpc3BsYXlzICovCj4gKwlmb3IgKGNudCA9IDA7IGNudCA8IHJlc291cmNl cy0+Y291bnRfY29ubmVjdG9yczsgY250KyspIHsKPiArCQlzdHJ1Y3QgY29ubmVjdG9yICpjID0g JmNvbm5lY3RvcnNbY250XTsKPiArCQljLT5pZCA9IHJlc291cmNlcy0+Y29ubmVjdG9yc1tjbnRd Owo+ICsJCWlmKCFrbXN0ZXN0X2dldF9jb25uZWN0b3JfY29uZmlnKGRybV9mZCwgYy0+aWQsIGNy dGNfaWR4X21hc2ssCj4gKwkJCQkJCSZjb25maWcpKSB7Cj4gKwkJCWMtPm1vZGVfdmFsaWQgPSAw Owo+ICsJCQljb250aW51ZTsKPiArCQl9Cj4gKwkJYy0+Y29ubmVjdG9yID0gY29uZmlnLmNvbm5l Y3RvcjsKPiArCQljLT5lbmNvZGVyID0gY29uZmlnLmVuY29kZXI7Cj4gKwkJYy0+bW9kZSA9IGNv bmZpZy5kZWZhdWx0X21vZGU7Cj4gKwkJYy0+Y3J0YyA9IGNvbmZpZy5jcnRjLT5jcnRjX2lkOwo+ ICsJCWMtPnBpcGUgPSBjb25maWcucGlwZTsKPiArCQljLT5tb2RlX3ZhbGlkID0gMTsKPiArCj4g KwkJaWYgKGMtPmNvbm5lY3Rvci0+Y29ubmVjdG9yX3R5cGUgPT0gRFJNX01PREVfQ09OTkVDVE9S X0Rpc3BsYXlQb3J0IHx8Cj4gKwkJICAgIGMtPmNvbm5lY3Rvci0+Y29ubmVjdG9yX3R5cGUgPT0g RFJNX01PREVfQ09OTkVDVE9SX2VEUCkgewo+ICsKPiArCQkJaWYgKGMtPmNvbm5lY3Rvci0+Y29u bmVjdG9yX3R5cGUgPT0gRFJNX01PREVfQ09OTkVDVE9SX2VEUCkKPiArCQkJCWNvbm5fY250ID0g KysgZWRwX2NudDsKPiArCQkJZWxzZQo+ICsJCQkJY29ubl9jbnQgPSArKyBkcF9jbnQ7Cj4gKwkJ CWlmIChjLT5jb25uZWN0b3ItPmNvbm5lY3Rpb24gPT0gRFJNX01PREVfQ09OTkVDVEVEKSB7Cj4g KwkJCQlzcHJpbnRmKGNvbm5fYnVmLCAiJXMtJWQiLAo+ICsJCQkJCWttc3Rlc3RfY29ubmVjdG9y X3R5cGVfc3RyKGMtPmNvbm5lY3Rvci0+Y29ubmVjdG9yX3R5cGUpLAo+ICsJCQkJCWNvbm5fY250 KTsKPiArCQkJCXRlc3RfY29uZmlnLT5kc2Nfc3VwcG9ydGVkID0KPiArCQkJCQlnZXRfZHBfZHNj X3N1cHBvcnQoY29ubl9idWYpOwo+ICsJCQkJaWYgKCFzdHJjbXAodGVzdF9jb25maWctPnRlc3Rf bmFtZSwKPiArCQkJCQkgICAgImZvcmNlX2RzY19lbmFibGVfYmFzaWMiKSkgewo+ICsJCQkJCWlm ICh0ZXN0X2NvbmZpZy0+ZHNjX3N1cHBvcnRlZCkgewo+ICsJCQkJCQlpZ3RfaW5mbyAoIkRTQyBp cyBzdXBwb3J0ZWQgb24gJXNcbiIsCj4gKwkJCQkJCQkgIGNvbm5fYnVmKTsKPiArCQkJCQkJdGVz dF9jb25maWctPm1vZGVfd2lkdGggPSBjLT5tb2RlLmhkaXNwbGF5Owo+ICsJCQkJCQl0ZXN0X2Nv bmZpZy0+bW9kZV9oZWlnaHQgPSBjLT5tb2RlLnZkaXNwbGF5Owo+ICsJCQkJCQl0ZXN0X2NvbmZp Zy0+YnBwID0gMzI7Cj4gKwkJCQkJCXRlc3RfY29uZmlnLT5kZXB0aCA9IDI0Owo+ICsJCQkJCQlz ZXRfZHBfZHNjX2VuYWJsZSh0ZXN0X2NvbmZpZy0+ZHNjX2VuYWJsZSwKPiArCQkJCQkJCSAgY29u bl9idWYpOwo+ICsJCQkJCQlyZXQgPSBzZXRfbW9kZShjLCB0ZXN0X2NvbmZpZywKPiArCQkJCQkJ CSAgICAgICB0cnVlKTsKPiArCQkJCQl9IGVsc2Ugewo+ICsJCQkJCQlpZ3RfaW5mbyAoIkRTQyBp cyBub3Qgc3VwcG9ydGVkIG9uICVzXG4iLAo+ICsJCQkJCQkJICBjb25uX2J1Zik7Cj4gKwkJCQkJ fQo+ICsJCQkJfQo+ICsJCQkJY3J0Y19pZHhfbWFzayAmPSB+KDEgPDwgYy0+cGlwZSk7Cj4gKwkJ CX0KPiArCQl9Cj4gKwl9Cj4gKwo+ICsJZnJlZShjb25uZWN0b3JzKTsKPiArCWRybU1vZGVGcmVl UmVzb3VyY2VzKHJlc291cmNlcyk7Cj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMg aW50IG9wdF9oYW5kbGVyKGludCBvcHQsIGludCBvcHRfaW5kZXgsIHZvaWQgKm9wdF9kdW1wKQo+ ICt7CgpXaHkgbm90IHdyYXBwaW5nIGFsbCB0aGUgb3B0aW9uYWwgcHJpbnRzIGluIGlndF9kZWJ1 ZyBzbyB5b3UgY291bGQgCnJlLXVzZSB0aGUgLS1kZWJ1ZyBvcHRpb24/Cgo+ICsJYm9vbCAqZHVt cCA9IG9wdF9kdW1wOwo+ICsKPiArCXN3aXRjaCAob3B0KSB7Cj4gKwljYXNlICdpJzoKPiArCQkq ZHVtcCA9IHRydWU7Cj4gKwkJYnJlYWs7Cj4gKwlkZWZhdWx0Ogo+ICsJCWlndF9hc3NlcnQoMCk7 Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK2ludCBtYWluKGludCBhcmdjLCBj aGFyICphcmd2W10pCj4gK3sKPiArCWNvbnN0IGNoYXIgKmhlbHBfc3RyID0KPiArCQkiICAtLWlu Zm9cdFx0RHVtcCBJbmZvcm1hdGlvbiBhYm91dCBjb25uZWN0b3JzLiAoc3RpbGwgbmVlZHMgRFJN IGFjY2VzcylcbiI7Cj4gKwlzdGF0aWMgc3RydWN0IG9wdGlvbiBsb25nX29wdGlvbnNbXSA9IHsK PiArCQl7ImluZm8iLCAwLCAwLCAnaSd9LAo+ICsJCXswLCAwLCAwLCAwfQo+ICsJfTsKPiArCWlu dCByZXQgPSAwOwo+ICsJc3RydWN0IGRzY19jb25maWcgdGVzdF9jb25maWc7Cj4gKwlib29sIG9w dF9kdW1wID0gZmFsc2U7Cj4gKwlpZ3Rfc3VidGVzdF9pbml0X3BhcnNlX29wdHMoJmFyZ2MsIGFy Z3YsICIiLCBsb25nX29wdGlvbnMsIGhlbHBfc3RyLAo+ICsJCQkJICAgIG9wdF9oYW5kbGVyLCAm b3B0X2R1bXApOwo+ICsKPiArCWlndF9za2lwX29uX3NpbXVsYXRpb24oKTsKPiArCj4gKwlpZ3Rf Zml4dHVyZSB7Cj4gKwkJa21zdGVzdF9zZXRfdnRfZ3JhcGhpY3NfbW9kZSgpOwo+ICsJCWRybV9m ZCA9IGRybV9vcGVuX2RyaXZlcihEUklWRVJfQU5ZKTsKPiArCQlpZiAob3B0X2R1bXApCj4gKwkJ CWR1bXBfaW5mbygpOwo+ICsJfQo+ICsKPiArCWlndF9zdWJ0ZXN0KCJmb3JjZV9kc2NfZW5hYmxl X2Jhc2ljIikgewo+ICsJCXN0cmNweSh0ZXN0X2NvbmZpZy50ZXN0X25hbWUsImZvcmNlX2RzY19l bmFibGVfYmFzaWMiKTsKPiArCQlyZXQgPSB1cGRhdGVfZGlzcGxheSgmdGVzdF9jb25maWcpOwoK J3Rlc3RfY29uZmlnJyBzZWVtcyB0byBiZSBhbiBvdXRwdXQgcGFyYW1ldGVyIGJ1dCBpdCBpcyBu b3QgdXNlZCBpbiB0aGUgCnRlc3QuCgo+ICsJCWlndF9hc3NlcnRfZXEocmV0LCAwKTsKPiArCX0K PiArCj4gKwljbG9zZShkcm1fZmQpOwo+ICsKPiArCWlndF9hc3NlcnRfZXEocmV0LCAwKTsKCidy ZXQnIGlzIGFscmVhZHkgY2hlY2tlZCBpbiB0aGUgc3VidGVzdCBhbHNvLCB0aGlzIHdvdWxkIGZh aWwgaWYgeW91IApkb24ndCBydW4gdGhlIHN1YnRlc3QuCgpDb21tZW50cyBtb3N0bHkgZnJvbSBh IHJhcGlkIHJlYWQuIFlvdSB3aWxsIHN0aWxsIG5lZWQgYSBwcm9wZXIgcmV2aWV3ZXIgCmZvciB0 aGUgS01TIHN0dWZmLgoKVGhhbmtzLApBbnRvbmlvCgo+ICsKPiArCWlndF9pbmZvKCJEU0MgdGVz dGluZyBkb25lXG4iKTsKPiArCWlndF9leGl0KCk7Cj4gKwo+ICt9Cj4gCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0Cmln dC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vaWd0LWRldgo=