From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0ABC988C07 for ; Mon, 3 Dec 2018 08:55:36 +0000 (UTC) References: <1542628796-25990-1-git-send-email-juhapekka.heikkila@gmail.com> <1543586927-13097-1-git-send-email-juhapekka.heikkila@gmail.com> From: "Nautiyal, Ankit K" Message-ID: Date: Mon, 3 Dec 2018 14:25:33 +0530 MIME-Version: 1.0 In-Reply-To: <1543586927-13097-1-git-send-email-juhapekka.heikkila@gmail.com> Subject: Re: [igt-dev] [PATCH i-g-t] tests/kms_rotation_crc: Add multi plane tests 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: Juha-Pekka Heikkila , igt-dev@lists.freedesktop.org List-ID: Ck9uIDExLzMwLzIwMTggNzozOCBQTSwgSnVoYS1QZWtrYSBIZWlra2lsYSB3cm90ZToKPiBBZGQg dGhyZWUgbmV3IHRlc3RzIHdoaWNoIHRyeSBwcmltYXJ5IGFuZCBzcHJpdGUgcGxhbmVzCj4gbmV4 dCB0byBlYWNoIG90aGVyIHdpdGggZGlmZmVyZW50IHBsYW5lIGZvcm1hdHMsIHJvdGF0aW9ucwo+ IGFuZCB0aWxpbmcgbW9kZXMuCj4KPiBtdWx0aXBsYW5lLXJvdGF0aW9uIHN1YnRlc3QgcnVuIHRl c3QgdGhyb3VnaCB3aXRoIGJvdGggcGxhbmVzCj4gZnVsbHkgdmlzaWJsZS4KPgo+IG11bHRpcGxh bmUtcm90YXRpb24tY3JvcHBpbmctdG9wIHdpbGwgY3JvcCBwcmltYXJ5IHBsYW5lIHRvCj4gbGVm dC90b3AgY29ybmVyIGFuZCBzcHJpdGUgcGxhbmUgdG8gcmlnaHQvdG9wIGNvcm5lciB3aGlsZSBy dW5uaW5nCj4gcm90YXRpb24gdGVzdHMuCj4KPiBtdWx0aXBsYW5lLXJvdGF0aW9uLWNyb3BwaW5n LWJvdHRvbSB3aWxsIGNyb3AgcHJpbWFyeSBwbGFuZSB0bwo+IGxlZnQvYm90dG9tIGNvcm5lciBh bmQgc3ByaXRlIHBsYW5lIHRvIHJpZ2h0L2JvdHRvbSBjb3JuZXIgd2hpbGUKPiBydW5uaW5nIHJv dGF0aW9uIHRlc3RzLgo+Cj4gdjIgKE5hdXRpeWFsLCBBbmtpdCBLKTogVXNlIHJlY3Rhbmd1bGFy IGZpZ3VyZXMgaW5zdGVhZCBvZgo+IHNxdWFyZSBmaWd1cmVzIGFuZCBmaXggYXNzb2NpYXRlZCBj b2RlIHRvIHBlcmZvcm0gY29ycmVjdGx5Lgo+IEFkanVzdCBwbGFuZSBwb3NpdGlvbnMgYWNjb3Jk aW5nIHRvIHNjcmVlbiBzaXplIHRvIGF2b2lkCj4gcHV0dGluZyBwbGFuZXMgb3V0c2lkZSBzY3Jl ZW4uCj4KPiB2MyAoTmF1dGl5YWwsIEFua2l0IEspOiBNaW5vciBkZXRhaWwgZml4Lgo+Cj4gU2ln bmVkLW9mZi1ieTogSnVoYS1QZWtrYSBIZWlra2lsYSA8anVoYXBla2thLmhlaWtraWxhQGdtYWls LmNvbT4KPiAtLS0KPiAgIHRlc3RzL2ttc19yb3RhdGlvbl9jcmMuYyB8IDI0NiArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICAgMSBmaWxlIGNoYW5nZWQs IDI0NiBpbnNlcnRpb25zKCspCj4KPiBkaWZmIC0tZ2l0IGEvdGVzdHMva21zX3JvdGF0aW9uX2Ny Yy5jIGIvdGVzdHMva21zX3JvdGF0aW9uX2NyYy5jCj4gaW5kZXggMzY2YzI1NC4uMzY5OTM2ZiAx MDA2NDQKPiAtLS0gYS90ZXN0cy9rbXNfcm90YXRpb25fY3JjLmMKPiArKysgYi90ZXN0cy9rbXNf cm90YXRpb25fY3JjLmMKPiBAQCAtMjYsNiArMjYsMjUgQEAKPiAgICNpbmNsdWRlIDxtYXRoLmg+ Cj4gICAKPiAgICNkZWZpbmUgTUFYX0ZFTkNFUyAzMgo+ICsjZGVmaW5lIE1BWE1VTFRJUExBTkVT QU1PVU5UIDIKPiArCj4gK3N0cnVjdCBwX3N0cnVjdCB7Cj4gKwlpZ3RfcGxhbmVfdCAqcGxhbmU7 Cj4gKwlzdHJ1Y3QgaWd0X2ZiIGZiOwo+ICt9Owo+ICsKPiArZW51bSBwX3BvaW50b3JpZ28gewo+ ICsJcF90b3AgPSAxIDw8IDAsCj4gKwlwX2JvdHRvbSA9IDEgPDwgMSwKPiArCXBfbGVmdCA9IDEg PDwgMiwKPiArCXBfcmlnaHQgPSAxIDw8IDMKPiArfTsKPiArCj4gK3N0cnVjdCBwX3BvaW50ewo+ ICsJZW51bSBwX3BvaW50b3JpZ28gb3JpZ287Cj4gKwlmbG9hdF90IHg7Cj4gKwlmbG9hdF90IHk7 Cj4gK307Cj4gICAKPiAgIHR5cGVkZWYgc3RydWN0IHsKPiAgIAlpbnQgZ2Z4X2ZkOwo+IEBAIC00 Myw2ICs2Miw5IEBAIHR5cGVkZWYgc3RydWN0IHsKPiAgIAl1aW50MzJfdCBvdmVycmlkZV9mbXQ7 Cj4gICAJdWludDY0X3Qgb3ZlcnJpZGVfdGlsaW5nOwo+ICAgCWludCBkZXZpZDsKPiArCj4gKwlz dHJ1Y3QgcF9zdHJ1Y3QgKm11bHRpcGxhbmVvbGR2aWV3Owo+ICsJc3RydWN0IHBfcG9pbnQgcGxh bmVwb3NbTUFYTVVMVElQTEFORVNBTU9VTlRdOwo+ICAgfSBkYXRhX3Q7Cj4gICAKPiAgIHR5cGVk ZWYgc3RydWN0IHsKPiBAQCAtMzk1LDYgKzQxNywxOTQgQEAgc3RhdGljIHZvaWQgdGVzdF9wbGFu ZV9yb3RhdGlvbihkYXRhX3QgKmRhdGEsIGludCBwbGFuZV90eXBlLCBib29sIHRlc3RfYmFkX2Zv cm0KPiAgIAl9Cj4gICB9Cj4gICAKPiArdHlwZWRlZiBzdHJ1Y3Qgewo+ICsJaW50MzJfdCB4MSwg eTE7Cj4gKwl1aW50NjRfdCB3aWR0aCwgaGVpZ2h0LCB0aWxpbmcsIHBsYW5ldHlwZSwgZm9ybWF0 Owo+ICsJaWd0X3JvdGF0aW9uX3Qgcm90YXRpb25fc3csIHJvdGF0aW9uX2h3Owo+ICt9IHBsYW5l aW5mb3M7Cj4gKwo+ICtzdGF0aWMgdm9pZCBnZXRfbXVsdGlwbGFuZV9jcmMoZGF0YV90ICpkYXRh LCBpZ3Rfb3V0cHV0X3QgKm91dHB1dCwKPiArCQkJICAgICAgIGlndF9jcmNfdCAqY3JjX291dHB1 dCwgcGxhbmVpbmZvcyAqcGxhbmVpbmZvLAo+ICsJCQkgICAgICAgaW50IG51bXBsYW5lcykKPiAr ewo+ICsJdWludDMyX3QgdywgaDsKPiArCWlndF9kaXNwbGF5X3QgKmRpc3BsYXkgPSAmZGF0YS0+ ZGlzcGxheTsKPiArCXN0cnVjdCBwX3N0cnVjdCAqcGxhbmVzLCAqb2xkcGxhbmVzOwo+ICsJaW50 IGMsIHJldDsKPiArCj4gKwlvbGRwbGFuZXMgPSBkYXRhLT5tdWx0aXBsYW5lb2xkdmlldzsKPiAr CXBsYW5lcyA9IG1hbGxvYyhzaXplb2YoKnBsYW5lcykgKiBudW1wbGFuZXMpOwo+ICsKPiArCWZv ciAoYyA9IDA7IGMgPCBudW1wbGFuZXM7IGMrKykgewo+ICsJCXBsYW5lc1tjXS5wbGFuZSA9IGln dF9vdXRwdXRfZ2V0X3BsYW5lX3R5cGUob3V0cHV0LAo+ICsJCQkJCQkJICAgIHBsYW5laW5mb1tj XS5wbGFuZXR5cGUpOwo+ICsKPiArCQl3ID0gcGxhbmVpbmZvW2NdLndpZHRoOwo+ICsJCWggPSBw bGFuZWluZm9bY10uaGVpZ2h0Owo+ICsKPiArCQlpZiAocGxhbmVpbmZvW2NdLnJvdGF0aW9uX3N3 ICYgKElHVF9ST1RBVElPTl85MCB8IElHVF9ST1RBVElPTl8yNzApKQo+ICsJCQlpZ3Rfc3dhcCh3 LCBoKTsKPiArCj4gKwkJaWd0X2NyZWF0ZV9mYihkYXRhLT5nZnhfZmQsIHcsIGgsIHBsYW5laW5m b1tjXS5mb3JtYXQsCj4gKwkJCSAgICAgIHBsYW5laW5mb1tjXS50aWxpbmcsICZwbGFuZXNbY10u ZmIpOwo+ICsKPiArCQlwYWludF9zcXVhcmVzKGRhdGEsIHBsYW5laW5mb1tjXS5yb3RhdGlvbl9z dywgJnBsYW5lc1tjXS5mYiwgMS4wZik7Cj4gKwkJaWd0X3BsYW5lX3NldF9mYihwbGFuZXNbY10u cGxhbmUsICZwbGFuZXNbY10uZmIpOwo+ICsKPiArCQlpZiAocGxhbmVpbmZvW2NdLnJvdGF0aW9u X2h3ICYgKElHVF9ST1RBVElPTl85MCB8IElHVF9ST1RBVElPTl8yNzApKQo+ICsJCQlpZ3RfcGxh bmVfc2V0X3NpemUocGxhbmVzW2NdLnBsYW5lLCBoLCB3KTsKPiArCj4gKwkJaWd0X3BsYW5lX3Nl dF9wb3NpdGlvbihwbGFuZXNbY10ucGxhbmUsIHBsYW5laW5mb1tjXS54MSwgcGxhbmVpbmZvW2Nd LnkxKTsKPiArCQlpZ3RfcGxhbmVfc2V0X3JvdGF0aW9uKHBsYW5lc1tjXS5wbGFuZSwgcGxhbmVp bmZvW2NdLnJvdGF0aW9uX2h3KTsKPiArCX0KPiArCj4gKwlyZXQgPSBpZ3RfZGlzcGxheV90cnlf Y29tbWl0MihkaXNwbGF5LCBDT01NSVRfQVRPTUlDKTsKPiArCWlndF9hc3NlcnRfZXEocmV0LCAw KTsKPiArCj4gKwlpZ3RfcGlwZV9jcmNfZ2V0X2N1cnJlbnQoZGF0YS0+Z2Z4X2ZkLCBkYXRhLT5w aXBlX2NyYywgY3JjX291dHB1dCk7Cj4gKwo+ICsJZm9yIChjID0gMDsgYyA8IG51bXBsYW5lcyAm JiBvbGRwbGFuZXM7IGMrKykKPiArCQlpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmdmeF9mZCwgJm9sZHBs YW5lc1tjXS5mYik7Cj4gKwo+ICsJZnJlZShvbGRwbGFuZXMpOwo+ICsJZGF0YS0+bXVsdGlwbGFu ZW9sZHZpZXcgPSAodm9pZCopcGxhbmVzOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBwb2ludGxv Y2F0aW9uKGRhdGFfdCAqZGF0YSwgcGxhbmVpbmZvcyAqcCwgZHJtTW9kZU1vZGVJbmZvICptb2Rl LAo+ICsJCQkgIGludCBjKQo+ICt7Cj4gKwlwW2NdLngxID0gKGludDMyX3QpKGRhdGEtPnBsYW5l cG9zW2NdLnggKiBtb2RlLT5oZGlzcGxheSkKPiArCQkJKyAoKGRhdGEtPnBsYW5lcG9zW2NdLm9y aWdvICYgcF9yaWdodCkgPyBtb2RlLT5oZGlzcGxheSA6IDApOwo+ICsJcFtjXS55MSA9IChpbnQz Ml90KShkYXRhLT5wbGFuZXBvc1tjXS55ICogbW9kZS0+dmRpc3BsYXkpCj4gKwkJCSsgKChkYXRh LT5wbGFuZXBvc1tjXS5vcmlnbyAmIHBfYm90dG9tKSA/IG1vZGUtPnZkaXNwbGF5IDogMCk7Cj4g K30KPiArCj4gKy8qCj4gKyAqIEhlcmUgaXMgcGlwZSBwYXJhbWV0ZXIgd2hpY2ggaXMgbm93IHVz ZWQgb25seSBmb3IgZmlyc3QgcGlwZS4KPiArICogSXQgaXMgbGVmdCBoZXJlIGlmIHRoaXMgdGVz dCBldmVyIHdhcyB3YW50ZWQgdG8gYmUgcnVuIG9uCj4gKyAqIGRpZmZlcmVudCBwaXBlcy4KPiAr ICovCj4gK3N0YXRpYyB2b2lkIHRlc3RfbXVsdGlfcGxhbmVfcm90YXRpb24oZGF0YV90ICpkYXRh LCBlbnVtIHBpcGUgcGlwZSkKPiArewo+ICsJaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSA9ICZkYXRh LT5kaXNwbGF5Owo+ICsJaWd0X291dHB1dF90ICpvdXRwdXQ7Cj4gKwlpZ3RfY3JjX3QgcmV0Y3Jj X3N3LCByZXRjcmNfaHc7Cj4gKwlwbGFuZWluZm9zIHBbMl07Cj4gKwlpbnQgYzsKPiArCXN0cnVj dCBwX3N0cnVjdCAqb2xkcGxhbmVzOwo+ICsJZHJtTW9kZU1vZGVJbmZvICptb2RlOwo+ICsKPiAr CWNvbnN0IHN0YXRpYyBzdHJ1Y3Qgewo+ICsJCWlndF9yb3RhdGlvbl90IHJvdGF0aW9uOwo+ICsJ CWZsb2F0X3Qgd2lkdGg7Cj4gKwkJZmxvYXRfdCBoZWlnaHQ7Cj4gKwkJdWludDY0X3QgdGlsaW5n Owo+ICsJfSBwbGFuZWNvbmZpZ3NbXSA9IHsKPiArCXtJR1RfUk9UQVRJT05fMCwgLjJmLCAuNGYs IExPQ0FMX0RSTV9GT1JNQVRfTU9EX05PTkUgfSwKPiArCXtJR1RfUk9UQVRJT05fMCwgLjJmLCAu NGYsIExPQ0FMX0k5MTVfRk9STUFUX01PRF9YX1RJTEVEIH0sCj4gKwl7SUdUX1JPVEFUSU9OXzAs IC4yZiwgLjRmLCBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWV9USUxFRCB9LAo+ICsJe0lHVF9ST1RB VElPTl8wLCAuMmYsIC40ZiwgTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVEIH0sCj4gKwl7 SUdUX1JPVEFUSU9OXzkwLCAuMmYsIC40ZiwgTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQg fSwKPiArCXtJR1RfUk9UQVRJT05fOTAsIC4yZiwgLjRmLCBMT0NBTF9JOTE1X0ZPUk1BVF9NT0Rf WWZfVElMRUQgfSwKPiArCXtJR1RfUk9UQVRJT05fMTgwLCAuMmYsIC40ZiwgTE9DQUxfRFJNX0ZP Uk1BVF9NT0RfTk9ORSB9LAo+ICsJe0lHVF9ST1RBVElPTl8xODAsIC4yZiwgLjRmLCBMT0NBTF9J OTE1X0ZPUk1BVF9NT0RfWF9USUxFRCB9LAo+ICsJe0lHVF9ST1RBVElPTl8xODAsIC4yZiwgLjRm LCBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWV9USUxFRCB9LAo+ICsJe0lHVF9ST1RBVElPTl8xODAs IC4yZiwgLjRmLCBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWWZfVElMRUQgfSwKPiArCXtJR1RfUk9U QVRJT05fMjcwLCAuMmYsIC40ZiwgTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQgfSwKPiAr CXtJR1RfUk9UQVRJT05fMjcwLCAuMmYsIC40ZiwgTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1lmX1RJ TEVEIH0sCj4gKwl9Owo+ICsKPiArCS8qCj4gKwkqIFRoZXNlIGFyZSB0aG9zZSBtb2RlcyB3aGlj aCBhcmUgdGVzdGVkLiBGb3IgdGVzdGluZyBmZWVsIGludGVyZXN0aW5nCj4gKwkqIGNhc2Ugd2l0 aCB0aWxpbmcgYXJlIDIgYnl0ZSB3aWRlIGFuZCA0IGJ5dGUgd2lkZS4KPiArCSoKPiArCSogVE9E TzoKPiArCSogQnVpbHQgc3VwcG9ydCBmb3IgTlYxMiBoZXJlLgo+ICsJKi8KPiArCWNvbnN0IHN0 YXRpYyB1aW50MzJfdCAgZm9ybWF0bGlzdFtdID0ge0RSTV9GT1JNQVRfUkdCNTY1LAo+ICsJCQkJ CSAgICAgICBEUk1fRk9STUFUX1hSR0I4ODg4fTsKPiArCj4gKwlmb3JfZWFjaF92YWxpZF9vdXRw dXRfb25fcGlwZShkaXNwbGF5LCBwaXBlLCBvdXRwdXQpIHsKPiArCQlpbnQgaSwgaiwgaywgbDsK PiArCQlpZ3Rfb3V0cHV0X3NldF9waXBlKG91dHB1dCwgcGlwZSk7Cj4gKwkJbW9kZSA9IGlndF9v dXRwdXRfZ2V0X21vZGUob3V0cHV0KTsKPiArCQlpZ3RfZGlzcGxheV9yZXF1aXJlX291dHB1dChk aXNwbGF5KTsKPiArCQlpZ3RfZGlzcGxheV9jb21taXQyKGRpc3BsYXksIENPTU1JVF9BVE9NSUMp Owo+ICsKPiArCQlkYXRhLT5waXBlX2NyYyA9IGlndF9waXBlX2NyY19uZXcoZGF0YS0+Z2Z4X2Zk LCBwaXBlLAo+ICsJCQkJCQkgIElOVEVMX1BJUEVfQ1JDX1NPVVJDRV9BVVRPKTsKPiArCQlpZ3Rf cGlwZV9jcmNfc3RhcnQoZGF0YS0+cGlwZV9jcmMpOwo+ICsKPiArCQlmb3IgKGkgPSAwOyBpIDwg QVJSQVlfU0laRShwbGFuZWNvbmZpZ3MpOyBpKyspIHsKPiArCQkJcFswXS5wbGFuZXR5cGUgPSBE Uk1fUExBTkVfVFlQRV9QUklNQVJZOwo+ICsJCQlwWzBdLndpZHRoID0gKHVpbnQ2NF90KShwbGFu ZWNvbmZpZ3NbaV0ud2lkdGggKiBtb2RlLT5oZGlzcGxheSk7Cj4gKwkJCXBbMF0uaGVpZ2h0ID0g KHVpbnQ2NF90KShwbGFuZWNvbmZpZ3NbaV0uaGVpZ2h0ICogbW9kZS0+dmRpc3BsYXkpOwo+ICsJ CQlwWzBdLnRpbGluZyA9IHBsYW5lY29uZmlnc1tpXS50aWxpbmc7Cj4gKwkJCXBvaW50bG9jYXRp b24oZGF0YSwgKHBsYW5laW5mb3MgKikmcCwgbW9kZSwgMCk7Cj4gKwo+ICsJCQlmb3IgKGsgPSAw OyBrIDwgQVJSQVlfU0laRShmb3JtYXRsaXN0KTsgaysrKSB7Cj4gKwkJCQlwWzBdLmZvcm1hdCA9 IGZvcm1hdGxpc3Rba107Cj4gKwo+ICsJCQkJZm9yIChqID0gMDsgaiA8IEFSUkFZX1NJWkUocGxh bmVjb25maWdzKTsgaisrKSB7Cj4gKwkJCQkJcFsxXS5wbGFuZXR5cGUgPSBEUk1fUExBTkVfVFlQ RV9PVkVSTEFZOwo+ICsJCQkJCXBbMV0ud2lkdGggPSAodWludDY0X3QpKHBsYW5lY29uZmlnc1tq XS53aWR0aCAqIG1vZGUtPmhkaXNwbGF5KTsKPiArCQkJCQlwWzFdLmhlaWdodCA9ICh1aW50NjRf dCkocGxhbmVjb25maWdzW2pdLmhlaWdodCAqIG1vZGUtPnZkaXNwbGF5KTsKPiArCQkJCQlwWzFd LnRpbGluZyA9IHBsYW5lY29uZmlnc1tqXS50aWxpbmc7Cj4gKwkJCQkJcG9pbnRsb2NhdGlvbihk YXRhLCAocGxhbmVpbmZvcyAqKSZwLAo+ICsJCQkJCQkgICAgICBtb2RlLCAxKTsKPiArCj4gKwkJ CQkJZm9yIChsID0gMDsgbCA8IEFSUkFZX1NJWkUoZm9ybWF0bGlzdCk7IGwrKykgewo+ICsJCQkJ CQlwWzFdLmZvcm1hdCA9IGZvcm1hdGxpc3RbbF07Cj4gKwo+ICsJCQkJCQkvKgo+ICsJCQkJCQkg KiBSR0I1NjUgOTAvMjcwIGRlZ3JlZXMgcm90YXRpb24gaXMgc3VwcG9ydGVkCj4gKwkJCQkJCSAq IGZyb20gZ2VuMTEgb253YXJkcy4KPiArCQkJCQkJICovCj4gKwkJCQkJCWlmIChwWzBdLmZvcm1h dCA9PSBEUk1fRk9STUFUX1JHQjU2NSAmJgo+ICsJCQkJCQkgICAgIChwbGFuZWNvbmZpZ3NbaV0u cm90YXRpb24gJiAoSUdUX1JPVEFUSU9OXzkwIHwgSUdUX1JPVEFUSU9OXzI3MCkpCj4gKwkJCQkJ CSAgICAgJiYgaW50ZWxfZ2VuKGRhdGEtPmRldmlkKSA8IDExKQo+ICsJCQkJCQkJY29udGludWU7 Cj4gKwo+ICsJCQkJCQlpZiAocFsxXS5mb3JtYXQgPT0gRFJNX0ZPUk1BVF9SR0I1NjUgJiYKPiAr CQkJCQkJICAgICAocGxhbmVjb25maWdzW2pdLnJvdGF0aW9uICYgKElHVF9ST1RBVElPTl85MCB8 IElHVF9ST1RBVElPTl8yNzApKQo+ICsJCQkJCQkgICAgICYmIGludGVsX2dlbihkYXRhLT5kZXZp ZCkgPCAxMSkKPiArCQkJCQkJCWNvbnRpbnVlOwo+ICsKPiArCQkJCQkJcFswXS5yb3RhdGlvbl9z dyA9IHBsYW5lY29uZmlnc1tpXS5yb3RhdGlvbjsKPiArCQkJCQkJcFswXS5yb3RhdGlvbl9odyA9 IElHVF9ST1RBVElPTl8wOwo+ICsJCQkJCQlwWzFdLnJvdGF0aW9uX3N3ID0gcGxhbmVjb25maWdz W2pdLnJvdGF0aW9uOwo+ICsJCQkJCQlwWzFdLnJvdGF0aW9uX2h3ID0gSUdUX1JPVEFUSU9OXzA7 Cj4gKwkJCQkJCWdldF9tdWx0aXBsYW5lX2NyYyhkYXRhLCBvdXRwdXQsICZyZXRjcmNfc3csCj4g KwkJCQkJCQkJICAgKHBsYW5laW5mb3MgKikmcCwgTUFYTVVMVElQTEFORVNBTU9VTlQpOwo+ICsK PiArCQkJCQkJaWd0X3N3YXAocFswXS5yb3RhdGlvbl9zdywgcFswXS5yb3RhdGlvbl9odyk7Cj4g KwkJCQkJCWlndF9zd2FwKHBbMV0ucm90YXRpb25fc3csIHBbMV0ucm90YXRpb25faHcpOwo+ICsJ CQkJCQlnZXRfbXVsdGlwbGFuZV9jcmMoZGF0YSwgb3V0cHV0LCAmcmV0Y3JjX2h3LAo+ICsJCQkJ CQkJCSAgIChwbGFuZWluZm9zICopJnAsIE1BWE1VTFRJUExBTkVTQU1PVU5UKTsKPiArCj4gKwkJ CQkJCWlndF9hc3NlcnRfY3JjX2VxdWFsKCZyZXRjcmNfc3csICZyZXRjcmNfaHcpOwo+ICsJCQkJ CX0KPiArCQkJCX0KPiArCQkJfQo+ICsJCX0KPiArCQlpZ3RfcGlwZV9jcmNfc3RvcChkYXRhLT5w aXBlX2NyYyk7Cj4gKwkJaWd0X3BpcGVfY3JjX2ZyZWUoZGF0YS0+cGlwZV9jcmMpOwo+ICsJCWln dF9vdXRwdXRfc2V0X3BpcGUob3V0cHV0LCBQSVBFX0FOWSk7Cj4gKwl9Cj4gKwo+ICsJLyoKPiAr CSogT2xkIGZicyBhcmUgZGVsZXRlZCBvbmx5IGFmdGVyIG5ldyBvbmVzIGFyZSBzZXQgb24gcGxh bmVzLgo+ICsJKiBUaGlzIGlzIGRvbmUgdG8gc3BlZWQgdXAgdGhlIHRlc3QKPiArCSovCj4gKwlv bGRwbGFuZXMgPSBkYXRhLT5tdWx0aXBsYW5lb2xkdmlldzsKPiArCWZvciAoYyA9IDA7IGMgPCBN QVhNVUxUSVBMQU5FU0FNT1VOVCAmJiBvbGRwbGFuZXM7IGMrKykKPiArCQlpZ3RfcmVtb3ZlX2Zi KGRhdGEtPmdmeF9mZCwgJm9sZHBsYW5lc1tjXS5mYik7Cj4gKwo+ICsJZnJlZShvbGRwbGFuZXMp Owo+ICsJZGF0YS0+bXVsdGlwbGFuZW9sZHZpZXcgPSBOVUxMOwo+ICsJZGF0YS0+cGlwZV9jcmMg PSBOVUxMOwo+ICt9Cj4gKwo+ICAgc3RhdGljIHZvaWQgdGVzdF9wbGFuZV9yb3RhdGlvbl9leGhh dXN0X2ZlbmNlcyhkYXRhX3QgKmRhdGEsCj4gICAJCQkJCSAgICAgICBlbnVtIHBpcGUgcGlwZSwK PiAgIAkJCQkJICAgICAgIGlndF9vdXRwdXRfdCAqb3V0cHV0LAo+IEBAIC01OTUsNiArODA1LDQy IEBAIGlndF9tYWluCj4gICAJCX0KPiAgIAl9Cj4gICAKPiArCWlndF9zdWJ0ZXN0X2YoIm11bHRp cGxhbmUtcm90YXRpb24iKSB7Cj4gKwkJaWd0X3JlcXVpcmUoZ2VuID49IDkpOwo+ICsJCWNsZWFu dXBfY3J0YygmZGF0YSk7Cj4gKwkJZGF0YS5wbGFuZXBvc1swXS5vcmlnbyA9IHBfdG9wIHwgcF9s ZWZ0Owo+ICsJCWRhdGEucGxhbmVwb3NbMF0ueCA9IC4yZjsKPiArCQlkYXRhLnBsYW5lcG9zWzBd LnkgPSAuMWY7Cj4gKwkJZGF0YS5wbGFuZXBvc1sxXS5vcmlnbyA9IHBfdG9wIHwgcF9yaWdodDsK PiArCQlkYXRhLnBsYW5lcG9zWzFdLnggPSAtLjRmOwo+ICsJCWRhdGEucGxhbmVwb3NbMV0ueSA9 IC4xZjsKPiArCQl0ZXN0X211bHRpX3BsYW5lX3JvdGF0aW9uKCZkYXRhLCAwKTsKPiArCX0KPiAr Cj4gKwlpZ3Rfc3VidGVzdF9mKCJtdWx0aXBsYW5lLXJvdGF0aW9uLWNyb3BwaW5nLXRvcCIpIHsK PiArCQlpZ3RfcmVxdWlyZShnZW4gPj0gOSk7Cj4gKwkJY2xlYW51cF9jcnRjKCZkYXRhKTsKPiAr CQlkYXRhLnBsYW5lcG9zWzBdLm9yaWdvID0gcF90b3AgfCBwX2xlZnQ7Cj4gKwkJZGF0YS5wbGFu ZXBvc1swXS54ID0gLS4wNWY7Cj4gKwkJZGF0YS5wbGFuZXBvc1swXS55ID0gLS4xNWY7Cj4gKwkJ ZGF0YS5wbGFuZXBvc1sxXS5vcmlnbyA9IHBfdG9wIHwgcF9yaWdodDsKPiArCQlkYXRhLnBsYW5l cG9zWzFdLnggPSAtLjE1ZjsKPiArCQlkYXRhLnBsYW5lcG9zWzFdLnkgPSAtLjE1ZjsKPiArCQl0 ZXN0X211bHRpX3BsYW5lX3JvdGF0aW9uKCZkYXRhLCAwKTsKPiArCX0KPiArCj4gKwlpZ3Rfc3Vi dGVzdF9mKCJtdWx0aXBsYW5lLXJvdGF0aW9uLWNyb3BwaW5nLWJvdHRvbSIpIHsKPiArCQlpZ3Rf cmVxdWlyZShnZW4gPj0gOSk7Cj4gKwkJY2xlYW51cF9jcnRjKCZkYXRhKTsKPiArCQlkYXRhLnBs YW5lcG9zWzBdLm9yaWdvID0gcF9ib3R0b20gfCBwX2xlZnQ7Cj4gKwkJZGF0YS5wbGFuZXBvc1sw XS54ID0gLS4wNWY7Cj4gKwkJZGF0YS5wbGFuZXBvc1swXS55ID0gLS4yMGY7Cj4gKwkJZGF0YS5w bGFuZXBvc1sxXS5vcmlnbyA9IHBfYm90dG9tIHwgcF9yaWdodDsKPiArCQlkYXRhLnBsYW5lcG9z WzFdLnggPSAtLjE1ZjsKPiArCQlkYXRhLnBsYW5lcG9zWzFdLnkgPSAtLjIwZjsKPiArCQl0ZXN0 X211bHRpX3BsYW5lX3JvdGF0aW9uKCZkYXRhLCAwKTsKPiArCX0KPiArCj4gICAJLyoKPiAgIAkg KiBleGhhdXN0LWZlbmNlcyBzaG91bGQgYmUgbGFzdCB0ZXN0LCBpZiBpdCBmYWlscyB3ZSBtYXkg T09NIGluCj4gICAJICogdGhlIGZvbGxvd2luZyBzdWJ0ZXN0cyBvdGhlcndpc2UuCgpMb29rcyBn b29kIHRvIG1lLgoKUmV2aWV3ZWQtYnk6IEFua2l0IE5hdXRpeWFsIDxhbmtpdC5rLm5hdXRpeWFs QGludGVsLmNvbT4KClJlZ2FyZHMsCkFua2l0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaWd0LWRldgo=