From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9D8FE6F013 for ; Wed, 23 Jan 2019 19:50:32 +0000 (UTC) From: "Pandiyan, Dhinakaran" Date: Wed, 23 Jan 2019 19:50:31 +0000 Message-ID: References: <1545144020-21029-1-git-send-email-juhapekka.heikkila@gmail.com> <1545226909-1148-1-git-send-email-juhapekka.heikkila@gmail.com> In-Reply-To: <1545226909-1148-1-git-send-email-juhapekka.heikkila@gmail.com> Content-Language: en-US Content-ID: MIME-Version: 1.0 Subject: Re: [igt-dev] [PATCH i-g-t] tests/kms_available_modes_crc: Fix handling of test comparisons List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: "juhapekka.heikkila@gmail.com" , "igt-dev@lists.freedesktop.org" List-ID: T24gV2VkLCAyMDE4LTEyLTE5IGF0IDE1OjQxICswMjAwLCBKdWhhLVBla2thIEhlaWtraWxhIHdy b3RlOg0KPiBGaXhlZCBoYW5kbGluZyBvZiBzaW5nbGUgcGxhbmUgbW9kZXMgc28gdXNlZCBicHAg bmV2ZXIgZ2V0IHRvDQo+IGJlIDAgYW5kIGVhc2Ugb2ZmIGNyYyBjb21wYXJpc29uIGEgYml0IHdp dGggZ2FtbWEgdGFibGVzIGFzDQo+IGlkZWEgb2YgdGhpcyB0ZXN0IGlzIHRvIHNlZSBjaG9zZW4g bW9kZXMgYXJlIGFibGUgdG8gaW5pdGlhbGl6ZS4NCj4gDQo+IFJlbGVhc2Ugb3V0cHV0IHRvIFBJ UEVfQU5ZIGF0IGVuZCBvZiB0ZXN0IHBlciBjb25uZWN0b3IuDQo+IA0KPiBSZWR1Y2UgdmVyYm9z ZW5lc3MgaWYgdGhlcmUncyBubyBlcnJvcnMuDQo+IA0KPiBCdWd6aWxsYTogaHR0cHM6Ly9idWdz LmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2NjQxDQo+IEJ1Z3ppbGxhOiBodHRw czovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY3MDENCj4gU2lnbmVk LW9mZi1ieTogSnVoYS1QZWtrYSBIZWlra2lsYSA8anVoYXBla2thLmhlaWtraWxhQGdtYWlsLmNv bT4NCj4gLS0tDQo+ICB0ZXN0cy9rbXNfYXZhaWxhYmxlX21vZGVzX2NyYy5jIHwgMTY5ICsrKysr KysrKysrKysrKysrKysrLS0tLS0tLS0NCj4gLS0tLS0tLS0tLS0tDQo+ICAxIGZpbGUgY2hhbmdl ZCwgODYgaW5zZXJ0aW9ucygrKSwgODMgZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEv dGVzdHMva21zX2F2YWlsYWJsZV9tb2Rlc19jcmMuYw0KPiBiL3Rlc3RzL2ttc19hdmFpbGFibGVf bW9kZXNfY3JjLmMNCj4gaW5kZXggNDVhNDc3NS4uMDQ0NzJkMCAxMDA2NDQNCj4gLS0tIGEvdGVz dHMva21zX2F2YWlsYWJsZV9tb2Rlc19jcmMuYw0KPiArKysgYi90ZXN0cy9rbXNfYXZhaWxhYmxl X21vZGVzX2NyYy5jDQo+IEBAIC01NCw2ICs1NCwxMiBAQCB0eXBlZGVmIHN0cnVjdCB7DQo+ICAN Cj4gIAlpZ3RfY3JjX3QgY3Vyc29yX2NyYzsNCj4gIAlpZ3RfY3JjX3QgZnVsbHNjcmVlbl9jcmM7 DQo+ICsNCj4gKwkvKg0KPiArCSAqIElmIHRoZXJlJ3MgdW5rbm93biBmb3JtYXQgc2V0dGluZyB1 cCBtb2RlIGNhbiBmYWlsDQo+ICsJICogd2l0aG91dCBmYWlsaW5nIGVudGlyZSB0ZXN0Lg0KPiAr CSAqLw0KPiArCWJvb2wgYWxsb3dfZmFpbDsNCj4gIH0gZGF0YV90Ow0KPiAgDQo+ICANCj4gQEAg LTEyMCw3ICsxMjYsNiBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0ZV9jb21wYXJpc29uX2NyY19saXN0 KGRhdGFfdA0KPiAqZGF0YSwgaWd0X291dHB1dF90ICpvdXRwdXQpDQo+ICANCj4gIHN0YXRpYyBj b25zdCBzdHJ1Y3Qgew0KPiAgCXVpbnQzMl90CWZvdXJjYzsNCj4gLQljaGFyCQl6ZXJvcGFkZGlu ZzsNCj4gIAllbnVtCQl7IEJZVEVTX1BQXzE9MSwNCj4gIAkJCQlCWVRFU19QUF8yPTIsDQo+ICAJ CQkJQllURVNfUFBfND00LA0KPiBAQCAtMTI5LDQyICsxMzQsMzMgQEAgc3RhdGljIGNvbnN0IHN0 cnVjdCB7DQo+ICAJCQkJU0tJUDQgfSBicHA7DQo+ICAJdWludDMyX3QJdmFsdWU7DQo+ICB9IGZp bGxlcnNbXSA9IHsNCj4gLQl7IERSTV9GT1JNQVRfQzgsIDAsIEJZVEVTX1BQXzEsIDB4ZmZ9LA0K PiAtCXsgRFJNX0ZPUk1BVF9SR0I1NjUsIDAsIEJZVEVTX1BQXzIsIDB4ZmZmZn0sDQo+IC0JeyBE Uk1fRk9STUFUX1hSR0I4ODg4LCAwLCBCWVRFU19QUF80LCAweGZmZmZmZmZmfSwNCj4gLQl7IERS TV9GT1JNQVRfWEJHUjg4ODgsIDAsIEJZVEVTX1BQXzQsIDB4ZmZmZmZmZmZ9LA0KPiAtDQo+IC0J LyoNCj4gLQkgKiBmb2xsb3dpbmcgdHdvIGFyZSBza2lwcGVkIGJlY2F1c2UgYmxlbmRpbmcgc2Vl bXMgdG8gd29yaw0KPiAtCSAqIGluY29ycmVjdGx5IHdpdGggZXhjZXB0aW9uIG9mIEFSMjQgb24g Y3Vyc29yIHBsYW5lLg0KPiAtCSAqIFRlc3Qgc3RpbGwgY3JlYXRlcyB0aGUgcGxhbmVzLCBqdXN0 IGZpbGxpbmcgcGxhbmUNCj4gLQkgKiBhbmQgZ2V0dGluZyBjcmMgaXMgc2tpcHBlZC4NCj4gLQkg Ki8NCj4gLQl7IERSTV9GT1JNQVRfQVJHQjg4ODgsIDAsIFNLSVA0LCAweGZmZmZmZmZmfSwNCj4g LQl7IERSTV9GT1JNQVRfQUJHUjg4ODgsIDAsIFNLSVA0LCAweDAwZmZmZmZmfSwNCj4gLQ0KPiAt CXsgRFJNX0ZPUk1BVF9YUkdCMjEwMTAxMCwgMCwgQllURVNfUFBfNCwgMHhmZmZmZmZmZn0sDQo+ IC0JeyBEUk1fRk9STUFUX1hCR1IyMTAxMDEwLCAwLCBCWVRFU19QUF80LCAweGZmZmZmZmZmfSwN Cj4gLQ0KPiAtCXsgRFJNX0ZPUk1BVF9ZVVlWLCAwLCBCWVRFU19QUF80LCAweDgwZWI4MGVifSwN Cj4gLQl7IERSTV9GT1JNQVRfWVZZVSwgMCwgQllURVNfUFBfNCwgMHg4MGViODBlYn0sDQo+IC0J eyBEUk1fRk9STUFUX1ZZVVksIDAsIEJZVEVTX1BQXzQsIDB4ZWI4MGViODB9LA0KPiAtCXsgRFJN X0ZPUk1BVF9VWVZZLCAwLCBCWVRFU19QUF80LCAweGViODBlYjgwfSwNCj4gKwl7IERSTV9GT1JN QVRfQzgsIEJZVEVTX1BQXzEsIDB4ZmZ9LA0KPiArCXsgRFJNX0ZPUk1BVF9SR0I1NjUsIEJZVEVT X1BQXzIsIDB4ZmZmZn0sDQo+ICsJeyBEUk1fRk9STUFUX1hSR0I4ODg4LCBCWVRFU19QUF80LCAw eGZmZmZmZmZmfSwNCj4gKwl7IERSTV9GT1JNQVRfWEJHUjg4ODgsIEJZVEVTX1BQXzQsIDB4ZmZm ZmZmZmZ9LA0KPiArCXsgRFJNX0ZPUk1BVF9BUkdCODg4OCwgQllURVNfUFBfNCwgMHhmZmZmZmZm Zn0sDQo+ICsJeyBEUk1fRk9STUFUX0FCR1I4ODg4LCBCWVRFU19QUF80LCAweDAwZmZmZmZmfSwN Cj4gKwl7IERSTV9GT1JNQVRfWFJHQjIxMDEwMTAsIEJZVEVTX1BQXzQsIDB4ZmZmZmZmZmZ9LA0K PiArCXsgRFJNX0ZPUk1BVF9YQkdSMjEwMTAxMCwgQllURVNfUFBfNCwgMHhmZmZmZmZmZn0sDQo+ ICsJeyBEUk1fRk9STUFUX1lVWVYsIEJZVEVTX1BQXzQsIDB4ODBlYjgwZWJ9LA0KPiArCXsgRFJN X0ZPUk1BVF9ZVllVLCBCWVRFU19QUF80LCAweDgwZWI4MGVifSwNCj4gKwl7IERSTV9GT1JNQVRf VllVWSwgQllURVNfUFBfNCwgMHhlYjgwZWI4MH0sDQo+ICsJeyBEUk1fRk9STUFUX1VZVlksIEJZ VEVTX1BQXzQsIDB4ZWI4MGViODB9LA0KPiAgDQo+ICAJLyoNCj4gIAkgKiAoc2VtaS0pcGxhbmFy IGZvcm1hdHMNCj4gIAkgKi8NCj4gLQl7IERSTV9GT1JNQVRfTlYxMiwgMCwgTlYxMiwgMHg4MGVi fSwNCj4gKwl7IERSTV9GT1JNQVRfTlYxMiwgTlYxMiwgMHg4MGVifSwNCj4gICNpZmRlZiBEUk1f Rk9STUFUX1AwMTANCj4gLQl7IERSTV9GT1JNQVRfUDAxMCwgMCwgUDAxMCwgMHg4MDAwZWIwMH0s DQo+ICsJeyBEUk1fRk9STUFUX1AwMTAsIFAwMTAsIDB4ODAwMGViMDB9LA0KPiAgI2VuZGlmDQo+ ICAjaWZkZWYgRFJNX0ZPUk1BVF9QMDEyDQo+IC0JeyBEUk1fRk9STUFUX1AwMTIsIDAsIFAwMTAs IDB4ODAwMGViMDB9LA0KPiArCXsgRFJNX0ZPUk1BVF9QMDEyLCBQMDEwLCAweDgwMDBlYjAwfSwN Cj4gICNlbmRpZg0KPiAgI2lmZGVmIERSTV9GT1JNQVRfUDAxNg0KPiAtCXsgRFJNX0ZPUk1BVF9Q MDE2LCAwLCBQMDEwLCAweDgwMDBlYjAwfSwNCj4gKwl7IERSTV9GT1JNQVRfUDAxNiwgUDAxMCwg MHg4MDAwZWIwMH0sDQo+ICAjZW5kaWYNCj4gLQl7IDAsIDAsIDAsIDAgfQ0KPiArCXsgMCwgU0tJ UDQsIDAgfQ0KPiAgfTsNCj4gIA0KPiAgLyoNCj4gQEAgLTIyMSwyNCArMjE3LDkgQEAgc3RhdGlj IGJvb2wgZmlsbF9pbl9mYihkYXRhX3QgKmRhdGEsDQo+IGlndF9vdXRwdXRfdCAqb3V0cHV0LCBp Z3RfcGxhbmVfdCAqcGxhbmUsDQo+ICAJCXdyaXRlc2l6ZSA9IGRhdGEtPnNpemUrZGF0YS0+c2l6 ZS8yOw0KPiAgCQlicmVhazsNCj4gIAljYXNlIFNLSVA0Og0KPiAtCQlpZiAoZmlsbGVyc1tpXS5m b3VyY2MgPT0gRFJNX0ZPUk1BVF9BUkdCODg4OCAmJg0KPiAtCQkgICAgcGxhbmUtPnR5cGUgPT0g RFJNX1BMQU5FX1RZUEVfQ1VSU09SKSB7DQo+IC0JCS8qDQo+IC0JCSAqIHNwZWNpYWwgZm9yIGN1 cnNvciBwbGFuZSB3aGVyZSBibGVuZGluZyB3b3Jrcw0KPiBjb3JyZWN0bHkuDQo+IC0JCSAqLw0K PiAtCQkJcHRlbXBfMzJfYnVmID0gKHVuc2lnbmVkIGludCopZGF0YS0+YnVmOw0KPiAtCQkJZm9y IChjID0gMDsgYyA8IGRhdGEtPnNpemUvNDsgYysrKQ0KPiAtCQkJCXB0ZW1wXzMyX2J1ZltjXSA9 IGZpbGxlcnNbaV0udmFsdWU7DQo+IC0JCQl3cml0ZXNpemUgPSBkYXRhLT5zaXplOw0KPiAtCQkJ YnJlYWs7DQo+IC0JCX0NCj4gLQkJaWd0X2luZm8oIkZvcm1hdCAlcyBDUkMgY29tcGFyaXNvbiBz a2lwcGVkIGJ5DQo+IGRlc2lnbi5cbiIsDQo+IC0JCQkgKGNoYXIqKSZmaWxsZXJzW2ldLmZvdXJj Yyk7DQo+IC0NCj4gLQkJcmV0dXJuIGZhbHNlOw0KPiAgCWRlZmF1bHQ6DQo+IC0JCWlndF9pbmZv KCJVbnN1cHBvcnRlZCBtb2RlIGZvciB0ZXN0ICVzXG4iLA0KPiAtCQkJIChjaGFyKikmZmlsbGVy c1tpXS5mb3VyY2MpOw0KPiArCQlpZ3RfaW5mbygiVW5zdXBwb3J0ZWQgbW9kZSBmb3IgdGVzdGlu ZyBDUkMgJS40c1xuIiwNCj4gKwkJCSAoY2hhciAqKSZmb3JtYXQpOw0KPiAgCQlyZXR1cm4gZmFs c2U7DQo+ICAJfQ0KPiAgDQo+IEBAIC0yNjEsNiArMjQyLDggQEAgc3RhdGljIGJvb2wgc2V0dXBf ZmIoZGF0YV90ICpkYXRhLCBpZ3Rfb3V0cHV0X3QNCj4gKm91dHB1dCwgaWd0X3BsYW5lX3QgKnBs YW5lLA0KPiAgCWludCBicHAgPSAwOw0KPiAgCWludCBpOw0KPiAgDQo+ICsJZGF0YS0+YWxsb3df ZmFpbCA9IGZhbHNlOw0KPiArDQo+ICAJbW9kZSA9IGlndF9vdXRwdXRfZ2V0X21vZGUob3V0cHV0 KTsNCj4gIAlpZiAocGxhbmUtPnR5cGUgIT0gRFJNX1BMQU5FX1RZUEVfQ1VSU09SKSB7DQo+ICAJ CXcgPSBtb2RlLT5oZGlzcGxheTsNCj4gQEAgLTI4OSw2ICsyNzIsOCBAQCBzdGF0aWMgYm9vbCBz ZXR1cF9mYihkYXRhX3QgKmRhdGEsIGlndF9vdXRwdXRfdA0KPiAqb3V0cHV0LCBpZ3RfcGxhbmVf dCAqcGxhbmUsDQo+ICAJCWJyZWFrOw0KPiAgDQo+ICAJY2FzZSBTS0lQNDoNCj4gKwkJZGF0YS0+ YWxsb3dfZmFpbCA9IHRydWU7DQo+ICsJCS8qIGZhbGwgdGhyb3VnaCAqLw0KPiAgCWNhc2UgQllU RVNfUFBfNDoNCj4gIAkJYnBwID0gMzI7DQo+ICAJCWJyZWFrOw0KPiBAQCAtMzE5LDcgKzMwNCw3 IEBAIHN0YXRpYyBib29sIHNldHVwX2ZiKGRhdGFfdCAqZGF0YSwgaWd0X291dHB1dF90DQo+ICpv dXRwdXQsIGlndF9wbGFuZV90ICpwbGFuZSwNCj4gIA0KPiAgCWlmKHJldCA8IDApIHsNCj4gIAkJ aWd0X2luZm8oIkNyZWF0aW5nIGZiIGZvciBmb3JtYXQgJXMgZmFpbGVkLCByZXR1cm4gY29kZQ0K PiAlZFxuIiwNCj4gLQkJCSAoY2hhciopJmRhdGEtPmZvcm1hdC5uYW1lLCByZXQpOw0KPiArCQkJ IChjaGFyICopJmRhdGEtPmZvcm1hdC5uYW1lLCByZXQpOw0KPiAgDQo+ICAJCXJldHVybiBmYWxz ZTsNCj4gIAl9DQo+IEBAIC0zODAsMTMgKzM2NSwxNCBAQCBzdGF0aWMgYm9vbCBwcmVwYXJlX2Ny dGMoZGF0YV90ICpkYXRhLA0KPiBpZ3Rfb3V0cHV0X3QgKm91dHB1dCwNCj4gIA0KPiAgDQo+ICBz dGF0aWMgaW50DQo+IC10ZXN0X29uZV9tb2RlKGRhdGFfdCogZGF0YSwgaWd0X291dHB1dF90ICpv dXRwdXQsIGlndF9wbGFuZV90Kg0KPiBwbGFuZSwNCj4gLQkgICAgICBpbnQgbW9kZSkNCj4gK3Rl c3Rfb25lX21vZGUoZGF0YV90ICpkYXRhLCBpZ3Rfb3V0cHV0X3QgKm91dHB1dCwgaWd0X3BsYW5l X3QNCj4gKnBsYW5lLA0KPiArCSAgICAgIGVudW0gcGlwZSBwaXBlLCBpbnQgbW9kZSkNCj4gIHsN Cj4gIAlpZ3RfY3JjX3QgY3VycmVudF9jcmM7DQo+ICAJc2lnbmVkIHJWYWwgPSAwOw0KPiAgCWJv b2wgZG9fY3JjOw0KPiAtCWNoYXIqIGNyY2NvbXBhcmVbMl07DQo+ICsJY2hhciAqY3JjY29tcGFy ZVsyXTsNCj4gKwlpZ3RfY3JjX3QgKnBfY3JjOw0KPiAgDQo+ICAJaWYgKHByZXBhcmVfY3J0Yyhk YXRhLCBvdXRwdXQsIHBsYW5lLCBtb2RlKSl7DQo+ICAJCS8qDQo+IEBAIC00MDQsMzIgKzM5MCwz MiBAQCB0ZXN0X29uZV9tb2RlKGRhdGFfdCogZGF0YSwgaWd0X291dHB1dF90DQo+ICpvdXRwdXQs IGlndF9wbGFuZV90KiBwbGFuZSwNCj4gIAkJaWYgKGRvX2NyYykgew0KPiAgCQkJaWd0X3BpcGVf Y3JjX2dldF9jdXJyZW50KGRhdGEtPmdmeF9mZCwgZGF0YS0NCj4gPnBpcGVfY3JjLCAmY3VycmVu dF9jcmMpOw0KPiAgDQo+IC0JCQlpZiAocGxhbmUtPnR5cGUgIT0gRFJNX1BMQU5FX1RZUEVfQ1VS U09SKSB7DQo+IC0JCQkJaWYgKCFpZ3RfY2hlY2tfY3JjX2VxdWFsKCZjdXJyZW50X2NyYywNCj4g LQkJCQkJJmRhdGEtPmZ1bGxzY3JlZW5fY3JjKSkgew0KPiAtCQkJCQljcmNjb21wYXJlWzBdID0N Cj4gaWd0X2NyY190b19zdHJpbmcoJmN1cnJlbnRfY3JjKTsNCj4gLQkJCQkJY3JjY29tcGFyZVsx XSA9DQo+IGlndF9jcmNfdG9fc3RyaW5nKCZkYXRhLT5mdWxsc2NyZWVuX2NyYyk7DQo+IC0JCQkJ CWlndF93YXJuKCJjcmMgbWlzbWF0Y2guIHRhcmdldA0KPiAlLjhzLCByZXN1bHQgJS44cy5cbiIs IGNyY2NvbXBhcmVbMF0sIGNyY2NvbXBhcmVbMV0pOw0KPiAtCQkJCQlmcmVlKGNyY2NvbXBhcmVb MF0pOw0KPiAtCQkJCQlmcmVlKGNyY2NvbXBhcmVbMV0pOw0KPiAtCQkJCQlyVmFsKys7DQo+IC0J CQkJfQ0KPiAtCQkJfSBlbHNlIHsNCj4gLQkJCQlpZiAoIWlndF9jaGVja19jcmNfZXF1YWwoJmN1 cnJlbnRfY3JjLA0KPiAtCQkJCQkmZGF0YS0+Y3Vyc29yX2NyYykpIHsNCj4gLQkJCQkJY3JjY29t cGFyZVswXSA9DQo+IGlndF9jcmNfdG9fc3RyaW5nKCZjdXJyZW50X2NyYyk7DQo+IC0JCQkJCWNy Y2NvbXBhcmVbMV0gPQ0KPiBpZ3RfY3JjX3RvX3N0cmluZygmZGF0YS0+Y3Vyc29yX2NyYyk7DQo+ IC0JCQkJCWlndF93YXJuKCJjcmMgbWlzbWF0Y2guIHRhcmdldA0KPiAlLjhzLCByZXN1bHQgJS44 cy5cbiIsIGNyY2NvbXBhcmVbMF0sIGNyY2NvbXBhcmVbMV0pOw0KPiAtCQkJCQlmcmVlKGNyY2Nv bXBhcmVbMF0pOw0KPiAtCQkJCQlmcmVlKGNyY2NvbXBhcmVbMV0pOw0KPiArCQkJaWYgKHBsYW5l LT50eXBlICE9IERSTV9QTEFORV9UWVBFX0NVUlNPUikNCj4gKwkJCQlwX2NyYyA9ICZkYXRhLT5m dWxsc2NyZWVuX2NyYzsNCj4gKwkJCWVsc2UNCj4gKwkJCQlwX2NyYyA9ICZkYXRhLT5jdXJzb3Jf Y3JjOw0KPiArDQo+ICsJCQlpZiAoIWlndF9jaGVja19jcmNfZXF1YWwoJmN1cnJlbnRfY3JjLCBw X2NyYykpDQo+IHsNCj4gKwkJCQljcmNjb21wYXJlWzBdID0NCj4gaWd0X2NyY190b19zdHJpbmco JmN1cnJlbnRfY3JjKTsNCj4gKwkJCQljcmNjb21wYXJlWzFdID0NCj4gaWd0X2NyY190b19zdHJp bmcocF9jcmMpOw0KPiArCQkJCWlndF93YXJuKCJjcmMgbWlzbWF0Y2ggb24gJXMgUElQRSAlcw0K PiBwbGFuZSAlZCBmb3JtYXQgJS40cy4gdGFyZ2V0ICUuOHMsIHJlc3VsdCAlLjhzLlxuIiwNCj4g KwkJCQkJIGlndF9vdXRwdXRfbmFtZShvdXRwdXQpLA0KPiArCQkJCQkga21zdGVzdF9waXBlX25h bWUocGlwZSksDQo+ICsJCQkJCSBwbGFuZS0+aW5kZXgsDQo+ICsJCQkJCSAoY2hhciAqKSZkYXRh LT5mb3JtYXQubmFtZSwNCj4gKwkJCQkJIGNyY2NvbXBhcmVbMF0sDQo+ICsJCQkJCSBjcmNjb21w YXJlWzFdKTsNCg0KQ2FuIHlvdSBwbGVhc2Ugc3BsaXQgdGhpcyBkZWJ1ZyBwcmludCBpbnRvIGEg c2VwYXJhdGUgcGF0Y2g/IFRoYXQgd2F5DQp3ZSBjYW4gc2VlIHdoaWNoIGZvcm1hdC9wbGFuZS9w aXBlIGNvbWJpbmF0aW9uIGlzIGZhaWxpbmcgb24gSUNMIHdoaWxlDQp5b3UgYXJlIHdvcmtpbmcg b24gdGhlIGdhbW1hIGZpeGVzPw0KDQoNCg0KPiArDQo+ICsJCQkJZnJlZShjcmNjb21wYXJlWzBd KTsNCj4gKwkJCQlmcmVlKGNyY2NvbXBhcmVbMV0pOw0KPiArCQkJCWlmICghZGF0YS0+YWxsb3df ZmFpbCkNCj4gIAkJCQkJclZhbCsrOw0KPiAtCQkJCX0NCj4gIAkJCX0NCj4gIAkJfQ0KPiAgCQly ZW1vdmVfZmIoZGF0YSwgb3V0cHV0LCBwbGFuZSk7DQo+ICAJCXJldHVybiByVmFsOw0KPiAgCX0N Cj4gLQlyZXR1cm4gMTsNCj4gKwlyZXR1cm4gZGF0YS0+YWxsb3dfZmFpbCA/IDAgOiAxOw0KPiAg fQ0KPiAgDQo+ICANCj4gQEAgLTQ0MCwxNCArNDI2LDM4IEBAIHRlc3RfYXZhaWxhYmxlX21vZGVz KGRhdGFfdCogZGF0YSkNCj4gIAlpZ3RfcGxhbmVfdCAqcGxhbmU7DQo+ICAJaW50IG1vZGVpbmRl eDsNCj4gIAllbnVtIHBpcGUgcGlwZTsNCj4gLQlpbnQgaW52YWxpZHMgPSAwOw0KPiArCWludCBm YWlsZWRfY3JjcyA9IDAsIGksIGx1dF9zaXplOw0KPiAgCWRybU1vZGVQbGFuZSAqbW9kZVBsYW5l Ow0KPiAtCWNoYXIgcGxhbmV0eXBlWzNdWzhdID0geyJPVkVSTEFZXDAiLCAiUFJJTUFSWVwwIiwg IkNVUlNPUlwwIiB9Ow0KPiArDQo+ICsJc3RydWN0IHsNCj4gKwkJdWludDE2X3QgcmVkOw0KPiAr CQl1aW50MTZfdCBncmVlbjsNCj4gKwkJdWludDE2X3QgYmx1ZTsNCj4gKwkJdWludDE2X3QgcmVz ZXJ2ZWQ7DQo+ICsJfSAqbHV0Ow0KPiAgDQo+ICAJZm9yX2VhY2hfcGlwZV93aXRoX3ZhbGlkX291 dHB1dCgmZGF0YS0+ZGlzcGxheSwgcGlwZSwgb3V0cHV0KSB7DQo+ICsJCWlndF9kaXNwbGF5X3Jl c2V0KCZkYXRhLT5kaXNwbGF5KTsNCj4gIAkJaWd0X291dHB1dF9zZXRfcGlwZShvdXRwdXQsIHBp cGUpOw0KPiAgCQlpZ3RfZGlzcGxheV9jb21taXQyKCZkYXRhLT5kaXNwbGF5LCBkYXRhLT5jb21t aXQpOw0KPiAgDQo+ICsJCWlmIChpZ3RfcGlwZV9vYmpfaGFzX3Byb3AoJmRhdGEtPmRpc3BsYXku cGlwZXNbcGlwZV0sDQo+IElHVF9DUlRDX0dBTU1BX0xVVF9TSVpFKSkgew0KPiArCQkJbHV0X3Np emUgPSBpZ3RfcGlwZV9nZXRfcHJvcCgmZGF0YS0+ZGlzcGxheSwNCj4gcGlwZSwNCj4gKwkJCQkJ CSAgICAgSUdUX0NSVENfR0FNTUFfTFVUDQo+IF9TSVpFKTsNCj4gKwkJCWx1dCA9IGNhbGxvYyhz aXplb2YoKmx1dCksIGx1dF9zaXplKTsNCj4gKw0KPiArCQkJZm9yIChpID0gMDsgaSA8IGx1dF9z aXplOyBpKyspIHsNCj4gKwkJCQlsdXRbaV0ucmVkID0gKGkgKiAweGZmZmYgLyAobHV0X3NpemUg LQ0KPiAxKSkgJiAweGZjMDA7DQo+ICsJCQkJbHV0W2ldLmdyZWVuID0gKGkgKiAweGZmZmYgLyAo bHV0X3NpemUNCj4gLSAxKSkgJiAweGZjMDA7DQo+ICsJCQkJbHV0W2ldLmJsdWUgPSAoaSAqIDB4 ZmZmZiAvIChsdXRfc2l6ZSAtDQo+IDEpKSAmIDB4ZmMwMDsNCj4gKwkJCX0NCj4gKw0KPiArCQkJ aWd0X3BpcGVfcmVwbGFjZV9wcm9wX2Jsb2IoJmRhdGEtPmRpc3BsYXksDQo+IHBpcGUsDQo+ICsJ CQkJCQkgICBJR1RfQ1JUQ19HQU1NQV9MVVQsDQo+ICsJCQkJCQkgICBsdXQsIHNpemVvZigqbHV0 KSAqDQo+IGx1dF9zaXplKTsNCj4gKwkJCWZyZWUobHV0KTsNCj4gKwkJfQ0KPiArDQo+ICAJCWRh dGEtPnBpcGVfY3JjID0gaWd0X3BpcGVfY3JjX25ldyhkYXRhLT5nZnhfZmQsIHBpcGUsDQo+ICAJ CQkJCQkgIElOVEVMX1BJUEVfQ1JDX1NPVVJDRQ0KPiBfQVVUTyk7DQo+ICANCj4gQEAgLTQ2Nywy NSArNDc3LDE4IEBAIHRlc3RfYXZhaWxhYmxlX21vZGVzKGRhdGFfdCogZGF0YSkNCj4gIAkJCSAg ICAgbW9kZWluZGV4KyspIHsNCj4gIAkJCQlkYXRhLT5mb3JtYXQuZHdvcmQgPSBtb2RlUGxhbmUt DQo+ID5mb3JtYXRzW21vZGVpbmRleF07DQo+ICANCj4gLQkJCQlpZ3RfaW5mbygiVGVzdGluZyBj b25uZWN0b3IgJXMgdXNpbmcNCj4gcGlwZSAlcyIgXA0KPiAtCQkJCQkgIiBwbGFuZSBpbmRleCAl ZCB0eXBlICVzIG1vZGUNCj4gJXNcbiIsDQo+IC0JCQkJCSBpZ3Rfb3V0cHV0X25hbWUob3V0cHV0 KSwNCj4gLQkJCQkJIGttc3Rlc3RfcGlwZV9uYW1lKHBpcGUpLA0KPiAtCQkJCQkgcGxhbmUtPmlu ZGV4LA0KPiAtCQkJCQkgcGxhbmV0eXBlW3BsYW5lLT50eXBlXSwNCj4gLQkJCQkJIChjaGFyKikm ZGF0YS0+Zm9ybWF0Lm5hbWUpOw0KPiAtDQo+IC0JCQkJaW52YWxpZHMgKz0gdGVzdF9vbmVfbW9k ZShkYXRhLCBvdXRwdXQsDQo+IC0JCQkJCQkJICBwbGFuZSwNCj4gLQkJCQkJCQkgIG1vZGVQbGFu ZS0NCj4gPmZvcm1hdHNbbW9kZWluZGV4XSk7DQo+ICsJCQkJZmFpbGVkX2NyY3MgKz0gdGVzdF9v bmVfbW9kZShkYXRhLA0KPiBvdXRwdXQsDQo+ICsJCQkJCQkJICAgICBwbGFuZSwNCj4gcGlwZSwN Cj4gKwkJCQkJCQkgICAgIG1vZGVQbGFuZS0NCj4gPmZvcm1hdHNbbW9kZWluZGV4XSk7DQo+ICAJ CQl9DQo+ICAJCQlkcm1Nb2RlRnJlZVBsYW5lKG1vZGVQbGFuZSk7DQo+ICAJCX0NCj4gIAkJaWd0 X3BpcGVfY3JjX3N0b3AoZGF0YS0+cGlwZV9jcmMpOw0KPiAgCQlpZ3RfcGlwZV9jcmNfZnJlZShk YXRhLT5waXBlX2NyYyk7DQo+IC0JCWlndF9kaXNwbGF5X2NvbW1pdDIoJmRhdGEtPmRpc3BsYXks IGRhdGEtPmNvbW1pdCk7DQo+ICsNCj4gKwkJaWd0X291dHB1dF9zZXRfcGlwZShvdXRwdXQsIFBJ UEVfQU5ZKTsNCj4gIAl9DQo+IC0JaWd0X2Fzc2VydChpbnZhbGlkcyA9PSAwKTsNCj4gKwlpZ3Rf YXNzZXJ0KGZhaWxlZF9jcmNzID09IDApOw0KPiAgfQ0KPiAgDQo+ICANCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0Cmln dC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vaWd0LWRldgo=