From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ej1-x62a.google.com (mail-ej1-x62a.google.com [IPv6:2a00:1450:4864:20::62a]) by gabe.freedesktop.org (Postfix) with ESMTPS id 942916E214 for ; Wed, 31 Mar 2021 16:02:03 +0000 (UTC) Received: by mail-ej1-x62a.google.com with SMTP id jy13so30879373ejc.2 for ; Wed, 31 Mar 2021 09:02:03 -0700 (PDT) From: Juha-Pekka Heikkila References: <20210324183008.18170-1-juhapekka.heikkila@gmail.com> <49e9da4b-f03f-66de-2d47-9129b5189b64@gmail.com> Message-ID: Date: Wed, 31 Mar 2021 19:01:55 +0300 MIME-Version: 1.0 In-Reply-To: <49e9da4b-f03f-66de-2d47-9129b5189b64@gmail.com> Content-Language: en-US Subject: Re: [igt-dev] [PATCH i-g-t] tests/kms_cursor_crc: use flipping instead of frontbuffer List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: juhapekka.heikkila@gmail.com 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: =?UTF-8?B?VmlsbGUgU3lyasOkbMOk?= Cc: igt-dev@lists.freedesktop.org List-ID: T24gMzEuMy4yMDIxIDExLjI1LCBKdWhhLVBla2thIEhlaWtraWxhIHdyb3RlOgo+IE9uIDMwLjMu MjAyMSAxNy40MCwgVmlsbGUgU3lyasOkbMOkIHdyb3RlOgo+PiBPbiBXZWQsIE1hciAyNCwgMjAy MSBhdCAwODozMDowOFBNICswMjAwLCBKdWhhLVBla2thIEhlaWtraWxhIHdyb3RlOgo+Pj4gdGFr ZSBvdXQgZnJvbnRidWZmZXIgdXNhZ2UgZnJvbSB0aGlzIHRlc3QgYXMgaXQgbWF5IGZhaWwgdGhp cyB0ZXN0Cj4+PiBvbiBmcm9udGJ1ZmZlciByZWxhdGVkIGlzc3VlcyBpbnN0ZWFkIG9mIGN1cnNv ciBpc3N1ZXMKPj4+Cj4+PiBTaWduZWQtb2ZmLWJ5OiBKdWhhLVBla2thIEhlaWtraWxhIDxqdWhh cGVra2EuaGVpa2tpbGFAZ21haWwuY29tPgo+Pj4gLS0tCj4+PiDCoCB0ZXN0cy9rbXNfY3Vyc29y X2NyYy5jIHwgOTggKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tCj4+ PiDCoCAxIGZpbGUgY2hhbmdlZCwgNTQgaW5zZXJ0aW9ucygrKSwgNDQgZGVsZXRpb25zKC0pCj4+ Pgo+Pj4gZGlmZiAtLWdpdCBhL3Rlc3RzL2ttc19jdXJzb3JfY3JjLmMgYi90ZXN0cy9rbXNfY3Vy c29yX2NyYy5jCj4+PiBpbmRleCAxM2Q2MTU2YzkuLmQxNzJkNzAzZSAxMDA2NDQKPj4+IC0tLSBh L3Rlc3RzL2ttc19jdXJzb3JfY3JjLmMKPj4+ICsrKyBiL3Rlc3RzL2ttc19jdXJzb3JfY3JjLmMK Pj4+IEBAIC03MCw4ICs3MCw4IEBAIHR5cGVkZWYgc3RydWN0IHsKPj4+IMKgICNkZWZpbmUgVEVT VF9EUE1TICgxPDwwKQo+Pj4gwqAgI2RlZmluZSBURVNUX1NVU1BFTkQgKDE8PDEpCj4+PiAtI2Rl ZmluZSBGUk9OVEJVRkZFUiAwCj4+PiAtI2RlZmluZSBSRVNUT1JFQlVGRkVSIDEKPj4+ICsjZGVm aW5lIEhXQ1VSU09SQlVGRkVSIDAKPj4+ICsjZGVmaW5lIFNXQ09NUEFSSVNPTkJVRkZFUiAxCj4+ PiDCoCBzdGF0aWMgdm9pZCBkcmF3X2N1cnNvcihjYWlyb190ICpjciwgaW50IHgsIGludCB5LCBp bnQgY3csIGludCBjaCwgCj4+PiBkb3VibGUgYSkKPj4+IMKgIHsKPj4+IEBAIC0xNDQsMjIgKzE0 NCwxNiBAQCBzdGF0aWMgYm9vbCBjdXJzb3JfdmlzaWJsZShkYXRhX3QgKmRhdGEsIGludCB4LCAK Pj4+IGludCB5KQo+Pj4gwqDCoMKgwqDCoCByZXR1cm4gdHJ1ZTsKPj4+IMKgIH0KPj4+IC1zdGF0 aWMgdm9pZCByZXN0b3JlX2ltYWdlKGRhdGFfdCAqZGF0YSkKPj4+ICtzdGF0aWMgdm9pZCByZXN0 b3JlX2ltYWdlKGRhdGFfdCAqZGF0YSwgdWludDMyX3QgYnVmZmVyKQo+Pj4gwqAgewo+Pj4gwqDC oMKgwqDCoCBjYWlyb190ICpjcjsKPj4+IC3CoMKgwqAgaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSA9 ICZkYXRhLT5kaXNwbGF5Owo+Pj4gLcKgwqDCoCAvKiByZW5kZXJjb3B5IHN0cmlwcGVkIGluIGln dCB1c2luZyBjYWlybyAqLwo+Pj4gLcKgwqDCoCBjciA9IGlndF9nZXRfY2Fpcm9fY3R4KGRhdGEt PmRybV9mZCwKPj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJmRhdGEt PnByaW1hcnlfZmJbRlJPTlRCVUZGRVJdKTsKPj4+ICvCoMKgwqAgY3IgPSBpZ3RfZ2V0X2NhaXJv X2N0eChkYXRhLT5kcm1fZmQsICZkYXRhLT5wcmltYXJ5X2ZiW2J1ZmZlcl0pOwo+Pj4gwqDCoMKg wqDCoCBjYWlyb19zZXRfb3BlcmF0b3IoY3IsIENBSVJPX09QRVJBVE9SX1NPVVJDRSk7Cj4+PiDC oMKgwqDCoMKgIGNhaXJvX3NldF9zb3VyY2Vfc3VyZmFjZShjciwgZGF0YS0+c3VyZmFjZSwgMCwg MCk7Cj4+PiDCoMKgwqDCoMKgIGNhaXJvX3JlY3RhbmdsZShjciwgMCwgMCwgZGF0YS0+c2NyZWVu dywgZGF0YS0+c2NyZWVuaCk7Cj4+PiDCoMKgwqDCoMKgIGNhaXJvX2ZpbGwoY3IpOwo+Pj4gwqDC oMKgwqDCoCBpZ3RfcHV0X2NhaXJvX2N0eChjcik7Cj4+PiAtwqDCoMKgIGlndF9kaXJ0eV9mYihk YXRhLT5kcm1fZmQsICZkYXRhLT5wcmltYXJ5X2ZiW0ZST05UQlVGRkVSXSk7Cj4+PiAtwqDCoMKg IGlndF93YWl0X2Zvcl92YmxhbmsoZGF0YS0+ZHJtX2ZkLAo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBkaXNwbGF5LT5waXBlc1tkYXRhLT5waXBlXS5jcnRjX29mZnNldCk7Cj4+ PiDCoCB9Cj4+PiDCoCBzdGF0aWMgdm9pZCBkb19zaW5nbGVfdGVzdChkYXRhX3QgKmRhdGEsIGlu dCB4LCBpbnQgeSkKPj4+IEBAIC0xNjgsMTMgKzE2MiwxMSBAQCBzdGF0aWMgdm9pZCBkb19zaW5n bGVfdGVzdChkYXRhX3QgKmRhdGEsIGludCB4LCAKPj4+IGludCB5KQo+Pj4gwqDCoMKgwqDCoCBp Z3RfcGlwZV9jcmNfdCAqcGlwZV9jcmMgPSBkYXRhLT5waXBlX2NyYzsKPj4+IMKgwqDCoMKgwqAg aWd0X2NyY190IGNyYywgcmVmX2NyYzsKPj4+IMKgwqDCoMKgwqAgY2Fpcm9fdCAqY3I7Cj4+PiAt wqDCoMKgIGludCByZXQgPSAwOwo+Pj4gK8KgwqDCoCBpbnQgcmV0ID0gMCwgaHdjdXJzb3JmcmFt ZTsKPj4+IMKgwqDCoMKgwqAgaWd0X3ByaW50X2FjdGl2aXR5KCk7Cj4+PiDCoMKgwqDCoMKgIC8q IEhhcmR3YXJlIHRlc3QgKi8KPj4+IC3CoMKgwqAgcmVzdG9yZV9pbWFnZShkYXRhKTsKPj4+IC0K Pj4+IMKgwqDCoMKgwqAgaWd0X3BsYW5lX3NldF9wb3NpdGlvbihkYXRhLT5jdXJzb3IsIHgsIHkp Owo+Pj4gwqDCoMKgwqDCoCBjdXJzb3JfZW5hYmxlKGRhdGEpOwo+Pj4gQEAgLTE4MiwxOSArMTc0 LDIxIEBAIHN0YXRpYyB2b2lkIGRvX3NpbmdsZV90ZXN0KGRhdGFfdCAqZGF0YSwgaW50IHgsIAo+ Pj4gaW50IHkpCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0ID0gaWd0X2Rpc3BsYXlfdHJ5X2Nv bW1pdDIoZGlzcGxheSwgQ09NTUlUX0xFR0FDWSk7Cj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgaWd0 X2Fzc2VydF9lcShyZXQsIC1FSU5WQUwpOwo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIGlndF9wbGFu ZV9zZXRfcG9zaXRpb24oZGF0YS0+Y3Vyc29yLCAwLCB5KTsKPj4+IC0KPj4+IMKgwqDCoMKgwqDC oMKgwqDCoCByZXR1cm47Cj4+PiDCoMKgwqDCoMKgIH0KPj4+IMKgwqDCoMKgwqAgaWd0X2Rpc3Bs YXlfY29tbWl0KGRpc3BsYXkpOwo+Pj4gLcKgwqDCoCAvKiBFeHRyYSB2Ymxhbmsgd2FpdCBpcyBi ZWNhdXNlIG5vbmJsb2NraW5nIGN1cnNvciBpb2N0bCAqLwo+Pj4gLcKgwqDCoCBpZ3Rfd2FpdF9m b3JfdmJsYW5rKGRhdGEtPmRybV9mZCwKPj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRpc3Bs YXktPnBpcGVzW2RhdGEtPnBpcGVdLmNydGNfb2Zmc2V0KTsKPj4+IC3CoMKgwqAgaWd0X3BpcGVf Y3JjX2dldF9jdXJyZW50KGRhdGEtPmRybV9mZCwgcGlwZV9jcmMsICZjcmMpOwo+Pj4gK8KgwqDC oCBpZ3RfcGxhbmVfc2V0X2ZiKGRhdGEtPnByaW1hcnksICZkYXRhLT5wcmltYXJ5X2ZiW0hXQ1VS U09SQlVGRkVSXSk7Cj4+PiArwqDCoMKgIGlndF9kaXNwbGF5X2NvbW1pdChkaXNwbGF5KTsKPj4+ ICsKPj4+ICvCoMKgwqAgaHdjdXJzb3JmcmFtZSA9IGttc3Rlc3RfZ2V0X3ZibGFuayhkYXRhLT5k cm1fZmQsIGRhdGEtPnBpcGUsIDApIAo+Pj4gKyAxOwo+Pj4gK8KgwqDCoCByZXN0b3JlX2ltYWdl KGRhdGEsIFNXQ09NUEFSSVNPTkJVRkZFUik7Cj4+PiDCoMKgwqDCoMKgIGlmIChkYXRhLT5mbGFn cyAmIChURVNUX0RQTVMgfCBURVNUX1NVU1BFTkQpKSB7Cj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAg aWd0X2NyY190IGNyY19hZnRlcjsKPj4+ICvCoMKgwqDCoMKgwqDCoCAvKiBFeHRyYSB2Ymxhbmsg d2FpdCB0byBidWlsZCBmdWxsIGNyYyBiZWZvcmUgZHBtcy9zdXNwZW5kICovCj4+PiArwqDCoMKg wqDCoMKgwqAgaWd0X3BpcGVfY3JjX2dldF9jdXJyZW50KGRhdGEtPmRybV9mZCwgcGlwZV9jcmMs ICZjcmMpOwo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIC8qCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDC oCAqIHN0b3Avc3RhcnQgY3JjIHRvIGF2b2lkIGRtZXNnIG5vdGlmaWNhdGlvbnMgYWJvdXQgdXNl cnNwYWNlCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIHJlYWRpbmcgdG9vIHNsb3cuCj4+PiBA QCAtMjIwLDE4ICsyMTQsMjIgQEAgc3RhdGljIHZvaWQgZG9fc2luZ2xlX3Rlc3QoZGF0YV90ICpk YXRhLCBpbnQgeCwgCj4+PiBpbnQgeSkKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBpZ3RfYXNzZXJ0 X2NyY19lcXVhbCgmY3JjLCAmY3JjX2FmdGVyKTsKPj4+IMKgwqDCoMKgwqAgfQo+Pj4gLcKgwqDC oCBjdXJzb3JfZGlzYWJsZShkYXRhKTsKPj4+IC0KPj4+IMKgwqDCoMKgwqAgLyogTm93IHJlbmRl ciB0aGUgc2FtZSBpbiBzb2Z0d2FyZSBhbmQgY29sbGVjdCBjcmMgKi8KPj4+IC3CoMKgwqAgY3Ig PSBpZ3RfZ2V0X2NhaXJvX2N0eChkYXRhLT5kcm1fZmQsIAo+Pj4gJmRhdGEtPnByaW1hcnlfZmJb RlJPTlRCVUZGRVJdKTsKPj4+ICvCoMKgwqAgY3IgPSBpZ3RfZ2V0X2NhaXJvX2N0eChkYXRhLT5k cm1fZmQsIAo+Pj4gJmRhdGEtPnByaW1hcnlfZmJbU1dDT01QQVJJU09OQlVGRkVSXSk7Cj4+PiDC oMKgwqDCoMKgIGRyYXdfY3Vyc29yKGNyLCB4LCB5LCBkYXRhLT5jdXJ3LCBkYXRhLT5jdXJoLCAx LjApOwo+Pj4gwqDCoMKgwqDCoCBpZ3RfcHV0X2NhaXJvX2N0eChjcik7Cj4+PiArwqDCoMKgIGln dF9wbGFuZV9zZXRfZmIoZGF0YS0+cHJpbWFyeSwgCj4+PiAmZGF0YS0+cHJpbWFyeV9mYltTV0NP TVBBUklTT05CVUZGRVJdKTsKPj4+IMKgwqDCoMKgwqAgaWd0X2Rpc3BsYXlfY29tbWl0KGRpc3Bs YXkpOwo+Pj4gLcKgwqDCoCBpZ3RfZGlydHlfZmIoZGF0YS0+ZHJtX2ZkLCAmZGF0YS0+cHJpbWFy eV9mYltGUk9OVEJVRkZFUl0pOwo+Pj4gLcKgwqDCoCAvKiBFeHRyYSB2Ymxhbmsgd2FpdCBpcyBi ZWNhdXNlIG5vbmJsb2NraW5nIGN1cnNvciBpb2N0bCAqLwo+Pj4gKwo+Pj4gK8KgwqDCoCBjdXJz b3JfZGlzYWJsZShkYXRhKTsKPj4+ICvCoMKgwqAgaWd0X2Rpc3BsYXlfY29tbWl0KGRpc3BsYXkp Owo+Pgo+PiBXaHkgdGhlIGRvdWJsZSBjb21taXQ/Cj4gCj4gSSBndWVzcyB0aGF0J3Mgbm90IG5l ZWRlZC4gSSB3YXMganVzdCBhaW1pbmcgdG8gZ2V0IGZyYW1lcyB0byBzZXR0bGUgCj4gY29ycmVj dGx5IHdpdGggZmxpcHBpbmcgb24gYWJvdmUgY29tbWl0Lgo+IAoKT24gc2Vjb25kIHRob3VnaHQg SSB0aGluayB0aGlzIHBhdHRlcm4gaXMgY29ycmVjdC4gV2hhdCBoYXBwZW4gaGVyZSBpcyAKdGhl cmUncyBod2N1cnNvciBvbiBzY3JlZW4gYW5kIGl0IG5lZWQgdG8gYmUgdGhlcmUgZm9yIGZ1bGwg ZnJhbWUsIHRoYXQgCmZpcnN0IGNvbW1pdCBibG9ja3MgdW50aWwgZmxpcCBpcyBkb25lIGFuZCBh ZnRlciB0aGF0IGN1cnNvciBpcyByZW1vdmVkIApmcm9tIHNjcmVlbi4gVGhlbiB3YWl0IGZvciB2 YmxhbmsgdG8gbWFrZSBjZXJ0YWluIHdlIGdvdCByaWQgb2YgdGhlIApjdXJzb3Igc28gaXQgZG9l c24ndCBhZmZlY3QgY3JjIHdoaWNoIHRoZW4gd2lsbCBiZSBjb2xsZWN0ZWQgYml0IGJlbG93IAp3 aXRoIGlndF9waXBlX2NyY19nZXRfY3VycmVudCguLikKCkknbSBtYWtpbmcgbmV3IHZlcnNpb24g b2YgdGhpcyBwYXRjaCBidXQgSSB0aGluayB0aGlzIHBhcnQgd2lsbCBuZWVkIHRvIApzdGF5IGFz IGlzPwoKPj4KPj4+ICsKPj4+IMKgwqDCoMKgwqAgaWd0X3dhaXRfZm9yX3ZibGFuayhkYXRhLT5k cm1fZmQsCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkaXNwbGF5LT5waXBlc1tkYXRh LT5waXBlXS5jcnRjX29mZnNldCk7Cj4+Cj4+IFdoeSBpcyB0aGlzIHN0aWxsIGhlcmU/IEFoLCBs ZWdhY3kgY29tbWl0cyBtZWFucyBjdXJzb3IgZG9lc24ndAo+PiBibG9jay4gU3RpbGwgYSBzaW5n bGUgY29tbWl0IHNob3VsZCBiZSBmaW5lIEFGQUlDUywgZXZlbiBpZgo+PiB3ZSBuZWVkIHRvIGtl ZXAgdGhlIGV4dHJhIHZibGFuayB3YWl0cy4KPiAKPiBJIHRoaW5rIHRoaXMgaXMgbmVlZGVkLiBU aG91Z2gsIEkgY2FuIHRyeSBpdCBvdXQgYnkgZmFpbGluZyAKPiBpbnRlbnRpb25hbGx5IGFuZCBz ZWUgaXQgZmFpbGVkIGluIGV4cGVjdGVkIHdheS4gV2l0aCB0aGVzZSBjaGFuZ2VzIHRoaXMgCj4g dGVzdCBpcyBubyBtb3JlIGJsaW5raW5nIG9uIHNjcmVlbiBiZXR3ZWVuIGh3L3N3IGN1cnNvciBp bWFnZSBjaGFuZ2VzIAo+IGhlbmNlIEkgd2FudGVkIHRvIGJlIGNlcnRhaW4uCj4gCj4+Cj4+PiAr wqDCoMKgIGlmICghKGRhdGEtPmZsYWdzICYgKFRFU1RfRFBNUyB8IFRFU1RfU1VTUEVORCkpKQo+ Pj4gK8KgwqDCoMKgwqDCoMKgIGlndF9waXBlX2NyY19nZXRfZm9yX2ZyYW1lKGRhdGEtPmRybV9m ZCwgcGlwZV9jcmMsIAo+Pj4gaHdjdXJzb3JmcmFtZSwgJmNyYyk7Cj4+Cj4+IFdoeSBhcmUgd2Ug bm90IGp1c3QgZ3JhYmJpbmcgdGhlIGNyYyBlYXJsaWVyIGxpa2Ugd2UgdXNlZCB0bz8KPiAKPiBE b2luZyBpdCB0aGlzIHdheSB3aGlsZSB3YWl0aW5nIGZvciBjcmMgdG8gYmUgcmVhZHkgdGhhdCB0 aW1lIGlzIHNwZW50IAo+IG9uIHJlc3RvcmluZyBzdyBjdXJzb3IgaW1hZ2UuIE9uIHNsb3dlc3Qg bWFjaGluZXMgdGhpcyB5aWVsZHMgdG8gfjFzIHdvbiAKPiB0aW1lIG9uIHN1YnRlc3QgZXhlY3V0 aW9uLgo+IAo+Pgo+Pj4gKwo+Pj4gwqDCoMKgwqDCoCBpZ3RfcGlwZV9jcmNfZ2V0X2N1cnJlbnQo ZGF0YS0+ZHJtX2ZkLCBwaXBlX2NyYywgJnJlZl9jcmMpOwo+Pj4gwqDCoMKgwqDCoCBpZ3RfYXNz ZXJ0X2NyY19lcXVhbCgmY3JjLCAmcmVmX2NyYyk7Cj4+PiDCoCB9Cj4+PiBAQCAtMjQ0LDggKzI0 Miw2IEBAIHN0YXRpYyB2b2lkIGRvX2ZhaWxfdGVzdChkYXRhX3QgKmRhdGEsIGludCB4LCBpbnQg Cj4+PiB5LCBpbnQgZXhwZWN0KQo+Pj4gwqDCoMKgwqDCoCBpZ3RfcHJpbnRfYWN0aXZpdHkoKTsK Pj4+IMKgwqDCoMKgwqAgLyogSGFyZHdhcmUgdGVzdCAqLwo+Pj4gLcKgwqDCoCByZXN0b3JlX2lt YWdlKGRhdGEpOwo+Pj4gLQo+Pj4gwqDCoMKgwqDCoCBjdXJzb3JfZW5hYmxlKGRhdGEpOwo+Pj4g wqDCoMKgwqDCoCBpZ3RfcGxhbmVfc2V0X3Bvc2l0aW9uKGRhdGEtPmN1cnNvciwgeCwgeSk7Cj4+ PiDCoMKgwqDCoMKgIHJldCA9IGlndF9kaXNwbGF5X3RyeV9jb21taXQyKGRpc3BsYXksIENPTU1J VF9MRUdBQ1kpOwo+Pj4gQEAgLTM2Nyw4ICszNjMsOCBAQCBzdGF0aWMgdm9pZCBjbGVhbnVwX2Ny dGMoZGF0YV90ICpkYXRhKQo+Pj4gwqDCoMKgwqDCoCBpZ3RfcGxhbmVfc2V0X2ZiKGRhdGEtPnBy aW1hcnksIE5VTEwpOwo+Pj4gwqDCoMKgwqDCoCBpZ3RfZGlzcGxheV9jb21taXQoZGlzcGxheSk7 Cj4+PiAtwqDCoMKgIGlndF9yZW1vdmVfZmIoZGF0YS0+ZHJtX2ZkLCAmZGF0YS0+cHJpbWFyeV9m YltGUk9OVEJVRkZFUl0pOwo+Pj4gLcKgwqDCoCBpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmRybV9mZCwg JmRhdGEtPnByaW1hcnlfZmJbUkVTVE9SRUJVRkZFUl0pOwo+Pj4gK8KgwqDCoCBpZ3RfcmVtb3Zl X2ZiKGRhdGEtPmRybV9mZCwgJmRhdGEtPnByaW1hcnlfZmJbSFdDVVJTT1JCVUZGRVJdKTsKPj4+ ICvCoMKgwqAgaWd0X3JlbW92ZV9mYihkYXRhLT5kcm1fZmQsICZkYXRhLT5wcmltYXJ5X2ZiW1NX Q09NUEFSSVNPTkJVRkZFUl0pOwo+Pj4gwqDCoMKgwqDCoCBpZ3RfZGlzcGxheV9yZXNldChkaXNw bGF5KTsKPj4+IMKgIH0KPj4+IEBAIC0zODksMTggKzM4NSwxOCBAQCBzdGF0aWMgdm9pZCBwcmVw YXJlX2NydGMoZGF0YV90ICpkYXRhLCAKPj4+IGlndF9vdXRwdXRfdCAqb3V0cHV0LAo+Pj4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBEUk1fRk9STUFUX1hSR0I4ODg4LAo+Pj4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBMT0NBTF9EUk1fRk9STUFUX01PRF9O T05FLAo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAwLjAsIDAuMCwgMC4w LAo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmZGF0YS0+cHJpbWFyeV9mYltG Uk9OVEJVRkZFUl0pOwo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmZGF0YS0+ cHJpbWFyeV9mYltIV0NVUlNPUkJVRkZFUl0pOwo+Pj4gwqDCoMKgwqDCoCBpZ3RfY3JlYXRlX2Nv bG9yX2ZiKGRhdGEtPmRybV9mZCwgbW9kZS0+aGRpc3BsYXksIG1vZGUtPnZkaXNwbGF5LAo+Pj4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBEUk1fRk9STUFUX1hSR0I4ODg4LAo+ Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBMT0NBTF9EUk1fRk9STUFUX01P RF9OT05FLAo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAwLjAsIDAuMCwg MC4wLAo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmZGF0YS0+cHJpbWFyeV9m YltSRVNUT1JFQlVGRkVSXSk7Cj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICZk YXRhLT5wcmltYXJ5X2ZiW1NXQ09NUEFSSVNPTkJVRkZFUl0pOwo+Pj4gwqDCoMKgwqDCoCBkYXRh LT5wcmltYXJ5ID0gaWd0X291dHB1dF9nZXRfcGxhbmVfdHlwZShvdXRwdXQsIAo+Pj4gRFJNX1BM QU5FX1RZUEVfUFJJTUFSWSk7Cj4+PiDCoMKgwqDCoMKgIGRhdGEtPmN1cnNvciA9IGlndF9vdXRw dXRfZ2V0X3BsYW5lX3R5cGUob3V0cHV0LCAKPj4+IERSTV9QTEFORV9UWVBFX0NVUlNPUik7Cj4+ PiAtwqDCoMKgIGlndF9wbGFuZV9zZXRfZmIoZGF0YS0+cHJpbWFyeSwgJmRhdGEtPnByaW1hcnlf ZmJbRlJPTlRCVUZGRVJdKTsKPj4+ICvCoMKgwqAgaWd0X3BsYW5lX3NldF9mYihkYXRhLT5wcmlt YXJ5LCAKPj4+ICZkYXRhLT5wcmltYXJ5X2ZiW1NXQ09NUEFSSVNPTkJVRkZFUl0pOwo+Pj4gwqDC oMKgwqDCoCBpZ3RfZGlzcGxheV9jb21taXQoZGlzcGxheSk7Cj4+PiBAQCAtNDI4LDYgKzQyNCwx MCBAQCBzdGF0aWMgdm9pZCBwcmVwYXJlX2NydGMoZGF0YV90ICpkYXRhLCAKPj4+IGlndF9vdXRw dXRfdCAqb3V0cHV0LAo+Pj4gwqDCoMKgwqDCoCBjYWlyb19zZXRfb3BlcmF0b3IoY3IsIENBSVJP X09QRVJBVE9SX1NPVVJDRSk7Cj4+PiDCoMKgwqDCoMKgIGlndF9wYWludF90ZXN0X3BhdHRlcm4o Y3IsIGRhdGEtPnNjcmVlbncsIGRhdGEtPnNjcmVlbmgpOwo+Pj4gwqDCoMKgwqDCoCBjYWlyb19k ZXN0cm95KGNyKTsKPj4+ICsKPj4+ICvCoMKgwqAgLyogU2V0IEhXIGN1c29yIGJ1ZmZlciBpbiBw bGFjZSAqLwo+Pj4gK8KgwqDCoCByZXN0b3JlX2ltYWdlKGRhdGEsIEhXQ1VSU09SQlVGRkVSKTsK Pj4+ICsKPj4+IMKgwqDCoMKgwqAgaWd0X3BpcGVfY3JjX3N0YXJ0KGRhdGEtPnBpcGVfY3JjKTsK Pj4+IMKgIH0KPj4+IEBAIC00NDcsNiArNDQ3LDE1IEBAIHN0YXRpYyB2b2lkIHRlc3RfY3Vyc29y X2FscGhhKGRhdGFfdCAqZGF0YSwgCj4+PiBkb3VibGUgYSkKPj4+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBMT0NBTF9EUk1fRk9STUFUX01PRF9OT05FLAo+Pj4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICZkYXRhLT5mYik7Cj4+ PiDCoMKgwqDCoMKgIGlndF9hc3NlcnQoZmJfaWQpOwo+Pj4gKwo+Pj4gK8KgwqDCoCAvKiBlbXB0 eSBidWZmZXIgKi8KPj4+ICvCoMKgwqAgY3IgPSBpZ3RfZ2V0X2NhaXJvX2N0eChkYXRhLT5kcm1f ZmQsIAo+Pj4gJmRhdGEtPnByaW1hcnlfZmJbSFdDVVJTT1JCVUZGRVJdKTsKPj4+ICvCoMKgwqAg aWd0X3BhaW50X2NvbG9yKGNyLCAwLCAwLCBkYXRhLT5zY3JlZW53LCBkYXRhLT5zY3JlZW5oLAo+ Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMC4wLCAwLjAsIDAuMCk7Cj4+PiArwqDCoMKgIGln dF9wdXRfY2Fpcm9fY3R4KGNyKTsKPj4+ICvCoMKgwqAgaWd0X3BsYW5lX3NldF9mYihkYXRhLT5w cmltYXJ5LCAmZGF0YS0+cHJpbWFyeV9mYltIV0NVUlNPUkJVRkZFUl0pOwo+Pj4gK8KgwqDCoCBp Z3RfZGlzcGxheV9jb21taXQoZGlzcGxheSk7Cj4+Cj4+IFdoeSBhcmUgd2UgcmVuZGVyaW5nIHRo aXMgYWdhaW4/IFNob3VsZG4ndCB0aGlzIGZiIHJlbWFpbmcgdW5jaGFuZ2VkCj4+IHRocm91Z2hv dXQgdGhlIHRlc3Q/Cj4gCj4gVGhpcyBpcyBiaXQgb2Yga2x1ZGdlLiBPbiBhcnJpdmluZyBoZXJl IGFmdGVyIHByZXBhcmVfY3J0YyguLikgCj4gSFdDVVJTT1JCVUZGRVIgaGFzIHRlc3RpbWFnZSB3 aGljaCBpcyB1c2VkIGluIHRob3NlIG90aGVyIHRlc3RzIHdoaWxlIAo+IFNXQ1VSU09SQlVGRkVS IGlzIGhlcmUgYmxhY2suIFRoaXMgaXMgYmVjYXVzZSBIV0NVUlNPUkJVRkZFUiBuZXZlciBuZWVk IAo+IHRvIGJlIHJlZHJhd24gZHVyaW5nIHRob3NlIG90aGVyIHRlc3RzLgo+IAo+IE90aGVyIGFs dGVybmF0aXZlIGlzIHRvIHNldCBTV0NVUlNPUkJVRkZFUiBhbHNvIHRvIHRlc3RpbWFnZSBpbiAK PiBwcmVwYXJlX2NydGMoLi4pIGFuZCBrZWVwIG9uIHJlc3RvcmluZyBpdCBoZXJlLiBJIGRpZCBw cmVmZXIgYmxhY2tpbmcgCj4gSFdDVVJTT1JCVUZGRVIgaGVyZSBzbyBhcHBlYXJhbmNlIG9mIHRo aXMgdGVzdCBzdGF5IHRoZSBzYW1lIGFmdGVyIHRoZXNlIAo+IGNoYW5nZXMuIEl0J3Mgc2FtZSBz dG9yeSB3aXRoIHRob3NlIG90aGVyIHJlLXJlbmRlcmluZ3MgYmVsb3cuCj4gCj4+Cj4+PiArCj4+ PiDCoMKgwqDCoMKgIGNyID0gaWd0X2dldF9jYWlyb19jdHgoZGF0YS0+ZHJtX2ZkLCAmZGF0YS0+ ZmIpOwo+Pj4gwqDCoMKgwqDCoCBpZ3RfcGFpbnRfY29sb3JfYWxwaGEoY3IsIDAsIDAsIGN1cncs IGN1cmgsIDEuMCwgMS4wLCAxLjAsIGEpOwo+Pj4gwqDCoMKgwqDCoCBpZ3RfcHV0X2NhaXJvX2N0 eChjcik7Cj4+PiBAQCAtNDYyLDIzICs0NzEsMTcgQEAgc3RhdGljIHZvaWQgdGVzdF9jdXJzb3Jf YWxwaGEoZGF0YV90ICpkYXRhLCAKPj4+IGRvdWJsZSBhKQo+Pj4gwqDCoMKgwqDCoCBpZ3RfcmVt b3ZlX2ZiKGRhdGEtPmRybV9mZCwgJmRhdGEtPmZiKTsKPj4+IMKgwqDCoMKgwqAgLyogU29mdHdh cmUgVGVzdCAtIHJlbmRlciBjdXJzb3IgaW4gc29mdHdhcmUsIGRyYXduIGl0IGRpcmVjdGx5IAo+ Pj4gb24gUEYgKi8KPj4+IC3CoMKgwqAgY3IgPSBpZ3RfZ2V0X2NhaXJvX2N0eChkYXRhLT5kcm1f ZmQsIAo+Pj4gJmRhdGEtPnByaW1hcnlfZmJbRlJPTlRCVUZGRVJdKTsKPj4+ICvCoMKgwqAgY3Ig PSBpZ3RfZ2V0X2NhaXJvX2N0eChkYXRhLT5kcm1fZmQsIAo+Pj4gJmRhdGEtPnByaW1hcnlfZmJb U1dDT01QQVJJU09OQlVGRkVSXSk7Cj4+PiDCoMKgwqDCoMKgIGlndF9wYWludF9jb2xvcl9hbHBo YShjciwgMCwgMCwgY3VydywgY3VyaCwgMS4wLCAxLjAsIDEuMCwgYSk7Cj4+PiDCoMKgwqDCoMKg IGlndF9wdXRfY2Fpcm9fY3R4KGNyKTsKPj4+IC0KPj4+ICvCoMKgwqAgaWd0X3BsYW5lX3NldF9m YihkYXRhLT5wcmltYXJ5LCAKPj4+ICZkYXRhLT5wcmltYXJ5X2ZiW1NXQ09NUEFSSVNPTkJVRkZF Ul0pOwo+Pj4gwqDCoMKgwqDCoCBpZ3RfZGlzcGxheV9jb21taXQoZGlzcGxheSk7Cj4+PiDCoMKg wqDCoMKgIGlndF93YWl0X2Zvcl92YmxhbmsoZGF0YS0+ZHJtX2ZkLAo+Pj4gLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgZGlzcGxheS0+cGlwZXNbZGF0YS0+cGlwZV0uY3J0Y19vZmZzZXQpOwo+Pj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkaXNwbGF5LT5waXBlc1tkYXRhLT5waXBl XS5jcnRjX29mZnNldCk7Cj4+PiDCoMKgwqDCoMKgIGlndF9waXBlX2NyY19nZXRfY3VycmVudChk YXRhLT5kcm1fZmQsIHBpcGVfY3JjLCAmcmVmX2NyYyk7Cj4+PiDCoMKgwqDCoMKgIC8qIENvbXBh cmUgQ1JDIGZyb20gSGFyZHdhcmUvU29mdHdhcmUgdGVzdHMgKi8KPj4+IMKgwqDCoMKgwqAgaWd0 X2Fzc2VydF9jcmNfZXF1YWwoJmNyYywgJnJlZl9jcmMpOwo+Pj4gLQo+Pj4gLcKgwqDCoCAvKkNs ZWFyIFNjcmVlbiovCj4+PiAtwqDCoMKgIGNyID0gaWd0X2dldF9jYWlyb19jdHgoZGF0YS0+ZHJt X2ZkLCAKPj4+ICZkYXRhLT5wcmltYXJ5X2ZiW0ZST05UQlVGRkVSXSk7Cj4+PiAtwqDCoMKgIGln dF9wYWludF9jb2xvcihjciwgMCwgMCwgZGF0YS0+c2NyZWVudywgZGF0YS0+c2NyZWVuaCwKPj4+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDAuMCwgMC4wLCAwLjApOwo+Pj4gLcKgwqDCoCBpZ3Rf cHV0X2NhaXJvX2N0eChjcik7Cj4+PiDCoCB9Cj4+PiDCoCBzdGF0aWMgdm9pZCB0ZXN0X2N1cnNv cl90cmFuc3BhcmVudChkYXRhX3QgKmRhdGEpCj4+PiBAQCAtNTgyLDYgKzU4NSwxMSBAQCBzdGF0 aWMgdm9pZCB0ZXN0X2N1cnNvcl9zaXplKGRhdGFfdCAqZGF0YSkKPj4+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICZkYXRhLT5mYik7Cj4+PiDCoMKgwqDCoMKgIGlndF9h c3NlcnQoZmJfaWQpOwo+Pj4gK8KgwqDCoCAvKiBlbXB0eSBidWZmZXIgKi8KPj4+ICvCoMKgwqAg Y3IgPSBpZ3RfZ2V0X2NhaXJvX2N0eChkYXRhLT5kcm1fZmQsIAo+Pj4gJmRhdGEtPnByaW1hcnlf ZmJbSFdDVVJTT1JCVUZGRVJdKTsKPj4+ICvCoMKgwqAgaWd0X3BhaW50X2NvbG9yKGNyLCAwLCAw LCBkYXRhLT5zY3JlZW53LCBkYXRhLT5zY3JlZW5oLCAwLjAsIAo+Pj4gMC4wLCAwLjApOwo+Pj4g K8KgwqDCoCBpZ3RfcHV0X2NhaXJvX2N0eChjcik7Cj4+Cj4+IEFub3RoZXIgb25lLgo+Pgo+Pj4g Kwo+Pj4gwqDCoMKgwqDCoCAvKiBVc2UgYSBzb2xpZCB3aGl0ZSByZWN0YW5nbGUgYXMgdGhlIGN1 cnNvciAqLwo+Pj4gwqDCoMKgwqDCoCBjciA9IGlndF9nZXRfY2Fpcm9fY3R4KGRhdGEtPmRybV9m ZCwgJmRhdGEtPmZiKTsKPj4+IMKgwqDCoMKgwqAgaWd0X3BhaW50X2NvbG9yX2FscGhhKGNyLCAw LCAwLCBjdXJzb3JfbWF4X3NpemUsIAo+Pj4gY3Vyc29yX21heF9zaXplLCAxLjAsIDEuMCwgMS4w LCAxLjApOwo+Pj4gQEAgLTYwNCwxNiArNjEyLDE4IEBAIHN0YXRpYyB2b2lkIHRlc3RfY3Vyc29y X3NpemUoZGF0YV90ICpkYXRhKQo+Pj4gwqDCoMKgwqDCoCAvKiBTb2Z0d2FyZSB0ZXN0IGxvb3Ag Ki8KPj4+IMKgwqDCoMKgwqAgZm9yIChpID0gMCwgc2l6ZSA9IGN1cnNvcl9tYXhfc2l6ZTsgc2l6 ZSA+PSA2NDsgc2l6ZSAvPSAyLCBpKyspIHsKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBOb3cg cmVuZGVyIHRoZSBzYW1lIGluIHNvZnR3YXJlIGFuZCBjb2xsZWN0IGNyYyAqLwo+Pj4gLcKgwqDC oMKgwqDCoMKgIGNyID0gaWd0X2dldF9jYWlyb19jdHgoZGF0YS0+ZHJtX2ZkLCAKPj4+ICZkYXRh LT5wcmltYXJ5X2ZiW0ZST05UQlVGRkVSXSk7Cj4+PiArwqDCoMKgwqDCoMKgwqAgY3IgPSBpZ3Rf Z2V0X2NhaXJvX2N0eChkYXRhLT5kcm1fZmQsIAo+Pj4gJmRhdGEtPnByaW1hcnlfZmJbSFdDVVJT T1JCVUZGRVJdKTsKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBpZ3RfcGFpbnRfY29sb3JfYWxwaGEo Y3IsIDAsIDAsIHNpemUsIHNpemUsIDEuMCwgMS4wLCAxLjAsIAo+Pj4gMS4wKTsKPj4+IMKgwqDC oMKgwqDCoMKgwqDCoCBpZ3RfcHV0X2NhaXJvX2N0eChjcik7Cj4+Cj4+IGFuZCBoZXJlLgo+Pgo+ Pj4gLQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGlndF9wbGFuZV9zZXRfZmIoZGF0YS0+cHJpbWFyeSwg Cj4+PiAmZGF0YS0+cHJpbWFyeV9mYltIV0NVUlNPUkJVRkZFUl0pOwo+Pj4gwqDCoMKgwqDCoMKg wqDCoMKgIGlndF9kaXNwbGF5X2NvbW1pdChkaXNwbGF5KTsKPj4+IC3CoMKgwqDCoMKgwqDCoCBp Z3Rfd2FpdF9mb3JfdmJsYW5rKGRhdGEtPmRybV9mZCwKPj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgZGlzcGxheS0+cGlwZXNbZGF0YS0+cGlwZV0uY3J0Y19vZmZzZXQpOwo+Pj4g wqDCoMKgwqDCoMKgwqDCoMKgIGlndF9waXBlX2NyY19nZXRfY3VycmVudChkYXRhLT5kcm1fZmQs IHBpcGVfY3JjLCAmcmVmX2NyYyk7Cj4+PiArCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgLyogQ2xl YXIgc2NyZWVuIGFmdGVyd2FyZHMgKi8KPj4+IC3CoMKgwqDCoMKgwqDCoCBjciA9IGlndF9nZXRf Y2Fpcm9fY3R4KGRhdGEtPmRybV9mZCwgCj4+PiAmZGF0YS0+cHJpbWFyeV9mYltGUk9OVEJVRkZF Ul0pOwo+Pj4gK8KgwqDCoMKgwqDCoMKgIGlndF9wbGFuZV9zZXRfZmIoZGF0YS0+cHJpbWFyeSwg Cj4+PiAmZGF0YS0+cHJpbWFyeV9mYltTV0NPTVBBUklTT05CVUZGRVJdKTsKPj4+ICvCoMKgwqDC oMKgwqDCoCBpZ3RfZGlzcGxheV9jb21taXQoZGlzcGxheSk7Cj4+PiArCj4+PiArwqDCoMKgwqDC oMKgwqAgY3IgPSBpZ3RfZ2V0X2NhaXJvX2N0eChkYXRhLT5kcm1fZmQsIAo+Pj4gJmRhdGEtPnBy aW1hcnlfZmJbSFdDVVJTT1JCVUZGRVJdKTsKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBpZ3RfcGFp bnRfY29sb3IoY3IsIDAsIDAsIGRhdGEtPnNjcmVlbncsIGRhdGEtPnNjcmVlbmgsCj4+PiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDAuMCwgMC4wLCAwLjApOwo+Pj4gwqDCoMKg wqDCoMKgwqDCoMKgIGlndF9wdXRfY2Fpcm9fY3R4KGNyKTsKPj4KPj4gSG1tLiBUaGlzIGxvb3Ag aXMgbm93IGEgYml0IGNvbmZ1c2luZy4gV2UncmUgZmxpcHBpbmcgYmFjawo+PiBhbmQgZm9ydGgg YmV0d2VlbiB0aGUgdHdvIGZicyBvbiB0aGUgcHJpbWFyeSBwbGFuZSBidXQgd2UKPj4gb25seSBh Y3R1YWxseSBjYXJlIHdoYXQgaGFwcGVucyBkdXJpbmcgdGhlIHN3IHNpZGUgb2YgaXQuCj4+IE1p Z2h0IG1ha2Ugc2Vuc2UgdG8gY29tYmluZSB0aGUgdHdvIGxvb3BzLCBncmFiIHRoZSBjcmMgZm9y Cj4+IHRoZSBodyBhbmQgc3cgY3Vyc29yIGJhY2stdG8tYmFjaywgYW5kIHRodXMganVzdCBnZXQK Pj4gcmlkIG9mIHRoZSBjcmNbXSBhcnJheSBlbnRpcmVseS4KPj4KPiAKPiBwcm9iYWJseSBnb29k IGlkZWEsIEknbGwgc2VlIHdoYXQgY29tZXMgb3V0IG9mIHRoYXQuCj4gCj4gL0p1aGEtUGVra2EK PiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmlndC1k ZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldgo=