From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kahola Subject: Re: [PATCH i-g-t] tests/kms_plane_multiple: CRC based atomic correctness test Date: Mon, 17 Oct 2016 14:25:52 +0300 Message-ID: <1476703552.29588.26.camel@intel.com> References: <1475840715-25910-1-git-send-email-mika.kahola@intel.com> Reply-To: mika.kahola@intel.com Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6C8D86E304 for ; Mon, 17 Oct 2016 11:25:48 +0000 (UTC) In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Maarten Lankhorst , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCAyMDE2LTEwLTEyIGF0IDE0OjU0ICswMjAwLCBNYWFydGVuIExhbmtob3JzdCB3cm90 ZToKPiBPcCAwNy0xMC0xNiBvbSAxMzo0NSBzY2hyZWVmIE1pa2EgS2Fob2xhOgo+ID4gCj4gPiBU aGlzIGlzIGEgdGVzdGNhc2Ugd2l0aCBtdWx0aXBsZSBwbGFuZXMuIFRoZSBpZGVhIGhlcmUgaXMg dGhlCj4gPiBmb2xsb3dpbmcKPiA+IAo+ID4gwqAtIGRyYXcgYSB1bmlmb3JtIGZyYW1lIHdpdGgg Ymx1ZSBjb2xvcgo+ID4gwqAtIGdyYWIgY3JjIGZvciByZWZlcmVuY2UKPiA+IMKgLSBwdXQgcGxh bmVzIHJhbmRvbWx5IG9uIHRvcCB3aXRoIHRoZSBzYW1lIGJsdWUgY29sb3IKPiA+IMKgLSBwdW5j aCBob2xlcyB3aXRoIGJsYWNrIGNvbG9yIGludG8gdGhlIHByaW1hcnkgZnJhbWVidWZmZXIKPiA+ IMKgLSBpZGVhbGx5IHRoZSBwbGFuZXMgc2hvdWxkIGNvdmVyIHRoZXNlIGhvbGVzIHNvIHRoYXQg dGhlIG91dHB1dAo+ID4gaXMgdGhlCj4gPiDCoMKgwqBpZGVudGljYWwgdG8gcmVmZXJlbmNlIGNy Ywo+ID4gwqAtIGNvbXBvc2l0ZSBhbGwgd2l0aCBvbmUgaW9jdGwgY2FsbAo+ID4gwqAtIGdyYWIg Y3JjIGFuZCB2ZXJpZnkgdGhhdCB0aGUgcmVmZXJlbmNlIGNyYyBpcyBlcXVhbAo+ID4gwqAtIHJl cGVhdCB0aGlzIGZvciBkb3plbiBpdGVyYXRpb25zIHRvIG1heGltaXplIGNvdmVyYWdlCj4gPiAK PiA+IFNpZ25lZC1vZmYtYnk6IE1pa2EgS2Fob2xhIDxtaWthLmthaG9sYUBpbnRlbC5jb20+Cj4g PiAtLS0KPiA+IMKgdGVzdHMvTWFrZWZpbGUuc291cmNlc8KgwqDCoMKgwqB8wqDCoMKgMSArCj4g PiDCoHRlc3RzL2ttc19wbGFuZV9tdWx0aXBsZS5jIHwgMzMyCj4gPiArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiA+IMKgMiBmaWxlcyBjaGFuZ2VkLCAzMzMg aW5zZXJ0aW9ucygrKQo+ID4gwqBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMva21zX3BsYW5lX211 bHRpcGxlLmMKPiA+IAo+ID4gZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMgYi90 ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCj4gPiBpbmRleCA1OThlYzZmLi5hZWQwZjNhIDEwMDY0NAo+ ID4gLS0tIGEvdGVzdHMvTWFrZWZpbGUuc291cmNlcwo+ID4gKysrIGIvdGVzdHMvTWFrZWZpbGUu c291cmNlcwo+ID4gQEAgLTEwNSw2ICsxMDUsNyBAQCBURVNUU19wcm9nc19NID0gXAo+ID4gwqAJ a21zX3BpcGVfY29sb3IgXAo+ID4gwqAJa21zX3BpcGVfY3JjX2Jhc2ljIFwKPiA+IMKgCWttc19w bGFuZSBcCj4gPiArCWttc19wbGFuZV9tdWx0aXBsZSBcCj4gPiDCoAlrbXNfcHJvcGVydGllcyBc Cj4gPiDCoAlrbXNfcHNyX3NpbmtfY3JjIFwKPiA+IMKgCWttc19yZW5kZXIgXAo+ID4gZGlmZiAt LWdpdCBhL3Rlc3RzL2ttc19wbGFuZV9tdWx0aXBsZS5jCj4gPiBiL3Rlc3RzL2ttc19wbGFuZV9t dWx0aXBsZS5jCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4gaW5kZXggMDAwMDAwMC4uMTUz ZDZkMQo+ID4gLS0tIC9kZXYvbnVsbAo+ID4gKysrIGIvdGVzdHMva21zX3BsYW5lX211bHRpcGxl LmMKPiA+IEBAIC0wLDAgKzEsMzMyIEBACj4gPiArLyoKPiA+ICsgKiBDb3B5cmlnaHQgwqkgMjAx NiBJbnRlbCBDb3Jwb3JhdGlvbgo+ID4gKyAqCj4gPiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkg Z3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24KPiA+IG9idGFpbmluZyBhCj4g PiArICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24g ZmlsZXMgKHRoZQo+ID4gIlNvZnR3YXJlIiksCj4gPiArICogdG8gZGVhbCBpbiB0aGUgU29mdHdh cmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQKPiA+IGxpbWl0YXRpb24K PiA+ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwg ZGlzdHJpYnV0ZSwKPiA+IHN1YmxpY2Vuc2UsCj4gPiArICogYW5kL29yIHNlbGwgY29waWVzIG9m IHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvCj4gPiB3aG9tIHRoZQo+ID4g KyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93 aW5nCj4gPiBjb25kaXRpb25zOgo+ID4gKyAqCj4gPiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBu b3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UKPiA+IChpbmNsdWRpbmcgdGhlIG5leHQK PiA+ICsgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vi c3RhbnRpYWwKPiA+IHBvcnRpb25zIG9mIHRoZQo+ID4gKyAqIFNvZnR3YXJlLgo+ID4gKyAqCj4g PiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkg T0YgQU5ZIEtJTkQsCj4gPiBFWFBSRVNTIE9SCj4gPiArICogSU1QTElFRCwgSU5DTFVESU5HIEJV VCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgo+ID4gTUVSQ0hBTlRBQklMSVRZLAo+ ID4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1F TlQuwqDCoElOIE5PCj4gPiBFVkVOVCBTSEFMTAo+ID4gKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlS SUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLAo+ID4gREFNQUdFUyBPUiBPVEhF Ugo+ID4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRP UlQgT1IgT1RIRVJXSVNFLAo+ID4gQVJJU0lORwo+ID4gKyAqIEZST00sIE9VVCBPRiBPUiBJTiBD T05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKPiA+IE9USEVSIERFQUxJ TkdTCj4gPiArICogSU4gVEhFIFNPRlRXQVJFLgo+ID4gKyAqCj4gPiArICovCj4gPiArCj4gPiAr I2luY2x1ZGUgImlndC5oIgo+ID4gKyNpbmNsdWRlICJkcm10ZXN0LmgiCj4gPiArI2luY2x1ZGUg PGVycm5vLmg+Cj4gPiArI2luY2x1ZGUgPHN0ZGJvb2wuaD4KPiA+ICsjaW5jbHVkZSA8c3RkaW8u aD4KPiA+ICsjaW5jbHVkZSA8c3RyaW5nLmg+Cj4gPiArI2luY2x1ZGUgPHRpbWUuaD4KPiA+ICsK PiA+ICsjZGVmaW5lIFNJWkUgMTI4Cj4gPiArCj4gPiArdHlwZWRlZiBzdHJ1Y3Qgewo+ID4gKwlm bG9hdCByZWQ7Cj4gPiArCWZsb2F0IGdyZWVuOwo+ID4gKwlmbG9hdCBibHVlOwo+ID4gK30gY29s b3JfdDsKPiA+ICsKPiA+ICt0eXBlZGVmIHN0cnVjdCB7Cj4gPiArCWludCBkcm1fZmQ7Cj4gPiAr CWlndF9kaXNwbGF5X3QgZGlzcGxheTsKPiA+ICsJaWd0X3BpcGVfY3JjX3QgKnBpcGVfY3JjOwo+ ID4gKwlpZ3RfcGxhbmVfdCAqcHJpbWFyeTsKPiA+ICsJaWd0X3BsYW5lX3QgKnNwcml0ZVtJR1Rf TUFYX1BMQU5FUy0xXTsKPiA+ICsJc3RydWN0IGlndF9mYiBwcmltYXJ5X2ZiOwo+ID4gKwlzdHJ1 Y3QgaWd0X2ZiIHNwcml0ZV9mYltJR1RfTUFYX1BMQU5FUy0xXTsKPiBTaW5nbGUgYXJyYXksIGlu c3RlYWQgb2YgcHJpbWFyeS9zcHJpdGUgc2VwYXJhdGU/IFNlZSBhbHNvIGJlbG93IGZvcgo+IGlu ZGV4IGNoYW5nZS4uCkluZGVlZCwgaXQgZG9lcyBsb29rIGNsZWFuZXIgdGhhdCB3YXkuCj4gPiAK PiA+ICt9IGRhdGFfdDsKPiA+ICsKPiA+ICt0eXBlZGVmIHN0cnVjdCB7Cj4gPiArCWRhdGFfdCAq ZGF0YTsKPiA+ICsJaWd0X2NyY190IHJlZmVyZW5jZV9jcmM7Cj4gPiArfSB0ZXN0X3Bvc2l0aW9u X3Q7Cj4gPiArCj4gPiArLyoKPiA+ICsgKiBDb21tb24gY29kZSBhY3Jvc3MgYWxsIHRlc3RzLCBh Y3Rpbmcgb24gZGF0YV90Cj4gPiArICovCj4gPiArc3RhdGljIHZvaWQgdGVzdF9pbml0KGRhdGFf dCAqZGF0YSwgZW51bSBwaXBlIHBpcGUpCj4gPiArewo+ID4gKwlkYXRhLT5waXBlX2NyYyA9IGln dF9waXBlX2NyY19uZXcocGlwZSwKPiA+IElOVEVMX1BJUEVfQ1JDX1NPVVJDRV9BVVRPKTsKPiA+ ICt9Cj4gPiArCj4gPiArc3RhdGljIHZvaWQgdGVzdF9maW5pKGRhdGFfdCAqZGF0YSwgaWd0X291 dHB1dF90ICpvdXRwdXQsIGludAo+ID4gbnBsYW5lcykKPiA+ICt7Cj4gPiArCWlndF9wbGFuZV9z ZXRfZmIoZGF0YS0+cHJpbWFyeSwgTlVMTCk7Cj4gPiArCj4gPiArCWZvciAoaW50IGkgPSAwOyBp IDwgbnBsYW5lczsgaSsrKQo+ID4gKwkJaWd0X3BsYW5lX3NldF9mYihkYXRhLT5zcHJpdGVbaV0s IE5VTEwpOwo+ID4gKwo+ID4gKwkvKiByZXNldCB0aGUgY29uc3RyYWludCBvbiB0aGUgcGlwZSAq Lwo+ID4gKwlpZ3Rfb3V0cHV0X3NldF9waXBlKG91dHB1dCwgUElQRV9BTlkpOwo+ID4gKwo+ID4g KwlpZ3RfcGlwZV9jcmNfZnJlZShkYXRhLT5waXBlX2NyYyk7Cj4gPiArfQo+ID4gKwo+ID4gK3N0 YXRpYyB2b2lkCj4gPiArdGVzdF9ncmFiX2NyYyhkYXRhX3QgKmRhdGEsIGlndF9vdXRwdXRfdCAq b3V0cHV0LCBlbnVtIHBpcGUgcGlwZSwKPiA+ICsJwqDCoMKgwqDCoMKgY29sb3JfdCAqY29sb3Is IHVpbnQ2NF90IHRpbGluZywgaW50IGNvbW1pdCwKPiA+ICsJwqDCoMKgwqDCoMKgaWd0X2NyY190 ICpjcmMgLyogb3V0ICovKQo+ID4gK3sKPiA+ICsJc3RydWN0IGlndF9mYiBmYjsKPiA+ICsJZHJt TW9kZU1vZGVJbmZvICptb2RlOwo+ID4gKwlpZ3RfcGxhbmVfdCAqcHJpbWFyeTsKPiA+ICsKPiA+ ICsJaWd0X291dHB1dF9zZXRfcGlwZShvdXRwdXQsIHBpcGUpOwo+ID4gKwo+ID4gKwlwcmltYXJ5 ID0gaWd0X291dHB1dF9nZXRfcGxhbmUob3V0cHV0LCBJR1RfUExBTkVfUFJJTUFSWSk7Cj4gPiAr Cj4gPiArCW1vZGUgPSBpZ3Rfb3V0cHV0X2dldF9tb2RlKG91dHB1dCk7Cj4gPiArCj4gPiArCWln dF9jcmVhdGVfY29sb3JfZmIoZGF0YS0+ZHJtX2ZkLCBtb2RlLT5oZGlzcGxheSwgbW9kZS0KPiA+ ID52ZGlzcGxheSwKPiA+ICsJCQnCoMKgwqDCoERSTV9GT1JNQVRfWFJHQjg4ODgsCj4gPiArCQkJ wqDCoMKgwqBMT0NBTF9EUk1fRk9STUFUX01PRF9OT05FLAo+ID4gKwkJCcKgwqDCoMKgY29sb3It PnJlZCwgY29sb3ItPmdyZWVuLCBjb2xvci0+Ymx1ZSwKPiA+ICsJCQnCoMKgwqDCoCZmYik7Cj4g PiArCj4gPiArCWlndF9wbGFuZV9zZXRfZmIocHJpbWFyeSwgJmZiKTsKPiA+ICsKPiA+ICsJaWd0 X2Rpc3BsYXlfY29tbWl0MigmZGF0YS0+ZGlzcGxheSwgY29tbWl0KTsKPiA+ICsKPiA+ICsJaWd0 X3dhaXRfZm9yX3ZibGFuayhkYXRhLT5kcm1fZmQsIHBpcGUpOwo+ID4gKwo+ID4gKwlpZ3RfcGlw ZV9jcmNfY29sbGVjdF9jcmMoZGF0YS0+cGlwZV9jcmMsIGNyYyk7Cj4gPiArCj4gPiArCWlndF9w bGFuZV9zZXRfZmIocHJpbWFyeSwgTlVMTCk7Cj4gPiArCj4gPiArCWlndF9kaXNwbGF5X2NvbW1p dDIoJmRhdGEtPmRpc3BsYXksIGNvbW1pdCk7Cj4gPiArCj4gPiArCWlndF9yZW1vdmVfZmIoZGF0 YS0+ZHJtX2ZkLCAmZmIpOwo+ID4gK30KPiA+ICsKPiA+ICsvKgo+ID4gKyAqIE11bHRpcGxlIHBs YW5lIHBvc2l0aW9uIHRlc3QuCj4gPiArICrCoMKgwqAtIFdlIHN0YXJ0IGJ5IGdyYWJiaW5nIGEg cmVmZXJlbmNlIENSQyBvZiBhIGZ1bGwgYmx1ZSBmYgo+ID4gYmVpbmcgc2Nhbm5lZAo+ID4gKyAq wqDCoMKgwqDCoG91dCBvbiB0aGUgcHJpbWFyeSBwbGFuZQo+ID4gKyAqwqDCoMKgLSBUaGVuIHdl IHNjYW5ub3V0IG51bWJlciBvZiBwbGFuZXM6Cj4gPiArICrCoMKgwqDCoMKgwqAqIHRoZSBwcmlt YXJ5IHBsYW5lIHVzZXMgYSBibHVlIGZiIHdpdGggYSBibGFjayByZWN0YW5nbGUKPiA+IGhvbGUK PiA+ICsgKsKgwqDCoMKgwqDCoCogcGxhbmVzLCBvbiB0b3Agb2YgdGhlIHByaW1hcnkgcGxhbmUs IHdpdGggYSBibHVlIGZiIHRoYXQKPiA+IGlzIHNldC11cAo+ID4gKyAqwqDCoMKgwqDCoMKgwqDC oHRvIGNvdmVyIHRoZSBibGFjayByZWN0YW5nbGVzIG9mIHRoZSBwcmltYXJ5IHBsYW5lIGZiCj4g PiArICrCoMKgwqDCoMKgVGhlIHJlc3VsdGluZyBDUkMgc2hvdWxkIGJlIGlkZW50aWNhbCB0byB0 aGUgcmVmZXJlbmNlIENSQwo+ID4gKyAqLwo+ID4gKwo+ID4gK3N0YXRpYyB2b2lkCj4gPiArY3Jl YXRlX2ZiX2Zvcl9tb2RlX19wb3NpdGlvbihkYXRhX3QgKmRhdGEsIGRybU1vZGVNb2RlSW5mbyAq bW9kZSwKPiA+ICsJCQnCoMKgwqDCoMKgY29sb3JfdCAqY29sb3IsIGludCAqcmVjdF94LCBpbnQK PiA+ICpyZWN0X3ksCj4gPiArCQkJwqDCoMKgwqDCoGludCByZWN0X3csIGludCByZWN0X2gsIHVp bnQ2NF90Cj4gPiB0aWxpbmcsCj4gPiArCQkJwqDCoMKgwqDCoGludCBucGxhbmVzKQo+ID4gK3sK PiA+ICsJdW5zaWduZWQgaW50IGZiX2lkOwo+ID4gKwljYWlyb190ICpjcjsKPiA+ICsKPiA+ICsJ ZmJfaWQgPSBpZ3RfY3JlYXRlX2ZiKGRhdGEtPmRybV9mZCwKPiA+ICsJCQnCoMKgwqDCoMKgwqBt b2RlLT5oZGlzcGxheSwgbW9kZS0+dmRpc3BsYXksCj4gPiArCQkJwqDCoMKgwqDCoMKgRFJNX0ZP Uk1BVF9YUkdCODg4OCwKPiA+ICsJCQnCoMKgwqDCoMKgwqB0aWxpbmcsCj4gPiArCQkJwqDCoMKg wqDCoMKgJmRhdGEtPnByaW1hcnlfZmIpOwo+ID4gKwlpZ3RfYXNzZXJ0KGZiX2lkKTsKPiA+ICsK PiA+ICsJY3IgPSBpZ3RfZ2V0X2NhaXJvX2N0eChkYXRhLT5kcm1fZmQsICZkYXRhLT5wcmltYXJ5 X2ZiKTsKPiA+ICsJaWd0X3BhaW50X2NvbG9yKGNyLCAwLCAwLCBtb2RlLT5oZGlzcGxheSwgbW9k ZS0+dmRpc3BsYXksCj4gPiArCQkJY29sb3ItPnJlZCwgY29sb3ItPmdyZWVuLCBjb2xvci0+Ymx1 ZSk7Cj4gPiArCj4gPiArCWZvciAoaW50IGkgPSAwOyBpIDwgbnBsYW5lczsgaSsrKQo+ID4gKwkJ aWd0X3BhaW50X2NvbG9yKGNyLCByZWN0X3hbaV0sIHJlY3RfeVtpXSwKPiA+ICsJCQkJcmVjdF93 LCByZWN0X2gsIDAuMCwgMC4wLCAwLjApOwo+ID4gKwo+ID4gKwlpZ3RfYXNzZXJ0KGNhaXJvX3N0 YXR1cyhjcikgPT0gMCk7Cj4gPiArCWNhaXJvX2Rlc3Ryb3koY3IpOwo+ID4gK30KPiA+ICsKPiA+ ICsKPiA+ICtzdGF0aWMgdm9pZAo+ID4gK3Rlc3RfcGxhbmVzKGRhdGFfdCAqZGF0YSwgZW51bSBw aXBlIHBpcGUsIGNvbG9yX3QgKmNvbG9yLAo+ID4gKwnCoMKgwqDCoHVpbnQ2NF90IHRpbGluZywg aW50IG5wbGFuZXMsIGlndF9vdXRwdXRfdCAqb3V0cHV0KQo+ID4gK3sKPiA+ICsJZHJtTW9kZU1v ZGVJbmZvICptb2RlOwo+ID4gKwlpbnQgeFtJR1RfTUFYX1BMQU5FUy0xXTsKPiA+ICsJaW50IHlb SUdUX01BWF9QTEFORVMtMV07Cj4gPiArCWludCBwbGFuZVtJR1RfTUFYX1BMQU5FUy0xXSA9IHtJ R1RfUExBTkVfMiwKPiA+ICsJCQkJwqDCoMKgwqDCoMKgwqBJR1RfUExBTkVfMywKPiA+ICsJCQkJ wqDCoMKgwqDCoMKgwqBJR1RfUExBTkVfNCwKPiA+ICsJCQkJwqDCoMKgwqDCoMKgwqBJR1RfUExB TkVfNSwKPiA+ICsJCQkJwqDCoMKgwqDCoMKgwqBJR1RfUExBTkVfNiwKPiA+ICsJCQkJwqDCoMKg wqDCoMKgwqBJR1RfUExBTkVfNywKPiA+ICsJCQkJwqDCoMKgwqDCoMKgwqBJR1RfUExBTkVfOCwK PiA+ICsJCQkJwqDCoMKgwqDCoMKgwqBJR1RfUExBTkVfOSwKPiA+ICsJCQkJwqDCoMKgwqDCoMKg wqBJR1RfUExBTkVfQ1VSU09SfTsKPiA+ICsKPiA+ICsJc3JhbmQodGltZShOVUxMKSk7Cj4gPiAr Cj4gPiArCWlndF9vdXRwdXRfc2V0X3BpcGUob3V0cHV0LCBwaXBlKTsKPiA+ICsKPiA+ICsJbW9k ZSA9IGlndF9vdXRwdXRfZ2V0X21vZGUob3V0cHV0KTsKPiA+ICsKPiA+ICsJLyogc3ByaXRlIHBs YW5lcyB3aXRoIHJhbmRvbSBwb3NpdGlvbnMgKi8KPiA+ICsJZm9yIChpbnQgaSA9IDA7IGkgPCBu cGxhbmVzOyBpKyspIHsKPiBpID0gSUdUX1BMQU5FXzI7IGkgPCBJR1RfTUFYX1BMQU5FUyB0byBk cm9wIHRoZSBzaWxseSBhcnJheT8KPiA+IAo+ID4gKwkJeFtpXSA9IHJhbmQoKSAlIChtb2RlLT5o ZGlzcGxheSAtIFNJWkUpOwo+ID4gKwkJeVtpXSA9IHJhbmQoKSAlIChtb2RlLT52ZGlzcGxheSAt IFNJWkUpOwo+ID4gKwo+ID4gKwkJZGF0YS0+c3ByaXRlW2ldID0gaWd0X291dHB1dF9nZXRfcGxh bmUob3V0cHV0LAo+ID4gcGxhbmVbaV0pOwo+ID4gKwo+ID4gKwkJaWd0X2NyZWF0ZV9jb2xvcl9m YihkYXRhLT5kcm1fZmQsCj4gPiArCQkJCcKgwqDCoMKgU0laRSwgU0laRSwgLyogd2lkdGgsIGhl aWdodAo+ID4gKi8KPiA+ICsJCQkJwqDCoMKgwqBkYXRhLT5zcHJpdGVbaV0tPmlzX2N1cnNvciA/ Cj4gPiBEUk1fRk9STUFUX0FSR0I4ODg4IDogRFJNX0ZPUk1BVF9YUkdCODg4OCwKPiA+ICsJCQkJ wqDCoMKgwqB0aWxpbmcsCj4gPiArCQkJCcKgwqDCoMKgY29sb3ItPnJlZCwgY29sb3ItPmdyZWVu LAo+ID4gY29sb3ItPmJsdWUsCj4gPiArCQkJCcKgwqDCoMKgJmRhdGEtPnNwcml0ZV9mYltpXSk7 Cj4gPiArCj4gPiArCQlpZ3RfcGxhbmVfc2V0X3Bvc2l0aW9uKGRhdGEtPnNwcml0ZVtpXSwgeFtp XSwKPiA+IHlbaV0pOwo+ID4gKwkJaWd0X3BsYW5lX3NldF9mYihkYXRhLT5zcHJpdGVbaV0sICZk YXRhLQo+ID4gPnNwcml0ZV9mYltpXSk7Cj4gPiArCX0KPiA+ICsKPiA+ICsJLyogcHJpbWFyeSBw bGFuZSAqLwo+ID4gKwlkYXRhLT5wcmltYXJ5ID0gaWd0X291dHB1dF9nZXRfcGxhbmUob3V0cHV0 LAo+ID4gSUdUX1BMQU5FX1BSSU1BUlkpOwo+ID4gKwljcmVhdGVfZmJfZm9yX21vZGVfX3Bvc2l0 aW9uKGRhdGEsIG1vZGUsIGNvbG9yLCB4LCB5LAo+ID4gKwkJCQnCoMKgwqDCoMKgU0laRSwgU0la RSwgdGlsaW5nLCBucGxhbmVzKTsKPiA+ICsJaWd0X3BsYW5lX3NldF9mYihkYXRhLT5wcmltYXJ5 LCAmZGF0YS0+cHJpbWFyeV9mYik7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyB2b2lkCj4gPiAr dGVzdF9wbGFuZV9wb3NpdGlvbl93aXRoX291dHB1dChpbnQgbiwgaW50IGl0ZXJhdGlvbnMsIGRh dGFfdAo+ID4gKmRhdGEsCj4gPiArCQkJCWVudW0gcGlwZSBwaXBlLAo+ID4gKwkJCQlpZ3Rfb3V0 cHV0X3QgKm91dHB1dCwKPiA+ICsJCQkJaW50IG5wbGFuZXMsIHVpbnQ2NF90IHRpbGluZywKPiA+ ICsJCQkJaW50IGNvbW1pdCkKPiA+ICt7Cj4gPiArCXRlc3RfcG9zaXRpb25fdCB0ZXN0ID0geyAu ZGF0YSA9IGRhdGEgfTsKPiA+ICsJaWd0X2NyY190IGNyYzsKPiA+ICsJY29sb3JfdCBibHVlwqDC oD0geyAwLjBmLCAwLjBmLCAxLjBmIH07Cj4gPiArCj4gPiArCWlndF9za2lwX29uKHBpcGUgPj0g ZGF0YS0+ZGlzcGxheS5uX3BpcGVzKTsKPiA+ICsJaWd0X3NraXBfb24obnBsYW5lcyA+PSBkYXRh LQo+ID4gPmRpc3BsYXkucGlwZXNbcGlwZV0ubl9wbGFuZXMpOwo+ID4gKwo+ID4gKwlpZ3RfaW5m bygiJWQvJWQ6IFRlc3RpbmcgY29ubmVjdG9yICVzIHVzaW5nIHBpcGUgJXMgd2l0aAo+ID4gJWQg cGxhbmVzXG4iLAo+ID4gKwkJwqBuLCBpdGVyYXRpb25zLCBpZ3Rfb3V0cHV0X25hbWUob3V0cHV0 KSwKPiA+IGttc3Rlc3RfcGlwZV9uYW1lKHBpcGUpLAo+ID4gKwkJwqBucGxhbmVzKTsKPiA+ICsK PiA+ICsJdGVzdF9pbml0KGRhdGEsIHBpcGUpOwo+ID4gKwo+ID4gKwl0ZXN0X2dyYWJfY3JjKGRh dGEsIG91dHB1dCwgcGlwZSwgJmJsdWUsIHRpbGluZywgY29tbWl0LAo+ID4gJnRlc3QucmVmZXJl bmNlX2NyYyk7Cj4gPiArCj4gPiArCXRlc3RfcGxhbmVzKGRhdGEsIHBpcGUsICZibHVlLCB0aWxp bmcsIG5wbGFuZXMsIG91dHB1dCk7Cj4gPiArCj4gPiArCWlndF9kaXNwbGF5X2NvbW1pdDIoJmRh dGEtPmRpc3BsYXksIGNvbW1pdCk7Cj4gPiArCj4gPiArCWlndF9waXBlX2NyY19jb2xsZWN0X2Ny YyhkYXRhLT5waXBlX2NyYywgJmNyYyk7Cj4gRm9yIGF0b21pYywgSSB3b3VsZCBjb3VudCB2Ymxh bmsgbnVtYmVycyB0b28uIFRoaXMgd291bGQgbWVhbiBub3QKPiB1c2luZyBpZ3RfcGlwZV9jcmNf Y29sbGVjdF9jcmMsIGluc3RlYWQgdXNlCj4gaWd0X3BpcGVfY3JjX2dldF9jcmNzICsgc3RhcnQv c3RvcC4KPiAKPiBJbiBjYXNlIG9mIGF0b21pYywgSSB3b3VsZCBvbmx5IHdhcm4gaWYgbW9yZSB0 aGFuIDEgdmJsYW5rIHBhc3NlZCwgb24KPiBpbGsgYW5kIGNodi92bHYgcGxhdGZvcm1zIHdlIG1h eSBoYXZlIHRvIHdhaXQgYSBleHRyYSB2YmxhbmsuCj4gPiAKPiA+ICsJaWd0X3dhaXRfZm9yX3Zi bGFuayhkYXRhLT5kcm1fZmQsIHBpcGUpOwo+IEZvciBhdG9taWMsIHlvdSdkIHdhbnQgdG8gcGFz cyBEUk1fTU9ERV9QQUdFX0ZMSVBfRVZFTlQgYW5kIHdhaXQgb24KPiB0aGUgZmQuCj4gPiAKPiA+ ICsJaWd0X2Fzc2VydF9jcmNfZXF1YWwoJnRlc3QucmVmZXJlbmNlX2NyYywgJmNyYyk7Cj4gPiAr Cj4gPiArCXRlc3RfZmluaShkYXRhLCBvdXRwdXQsIG5wbGFuZXMpOwo+ID4gK30KPiA+ICsKPiA+ ICtzdGF0aWMgdm9pZAo+ID4gK3Rlc3RfcGxhbmVfcG9zaXRpb24oZGF0YV90ICpkYXRhLCBlbnVt IHBpcGUgcGlwZSwgaW50IG5wbGFuZXMsCj4gPiArCQnCoMKgwqDCoHVpbnQ2NF90IHRpbGluZywg aW50IGNvbW1pdCkKPiA+ICt7Cj4gPiArCWlndF9vdXRwdXRfdCAqb3V0cHV0Owo+ID4gKwlpbnQg Y29ubmVjdGVkX291dHM7Cj4gPiArCWludCBpOwo+ID4gKwlpbnQgaXRlcmF0aW9ucyA9IDEyOwo+ IFRoZSB0ZXN0IHdvdWxkIHJ1biBhIGxvdCBmYXN0ZXIgaWYgeW91IG1vdmUgaXRlcmF0aW9ucyB0 byBhZnRlciB0aGUKPiBtb2Rlc2V0LAo+IHNvIGluc3RlYWQgb2YgRFAxIHRoZW4gRFAyLCB0aGVu IERQMSBhZ2FpbiwgeW91IHdvdWxkIHJ1biBhIHRlc3Qgb24KPiBEUDEgMTIKPiB0aW1lcywgdGhl biBEUDIuIEl0IHNhdmVzIH4yMiBtb2Rlc2V0cyAtPiAxMSBzZWNvbmRzIHBlciB0ZXN0LgpUaGF0 J3MgdHJ1ZS4gSSdsbCBjaGFuZ2UgdGhlIG9yZGVyLgoKVGhhbmtzIGZvciB0aGUgY29tbWVudHMu IEknbGwgc3BpbiBhbm90aGVyIHJvdW5kIGluIGEgbmVhciBmdXR1cmUuCj4gCj4gPiAKPiA+ICsJ aWd0X2luZm8oInJ1bm5pbmcgdGVzdCBmb3IgZG96ZW4gaXRlcmF0aW9uc1xuIik7Cj4gPiArCWZv ciAoaSA9IDA7IGkgPCBpdGVyYXRpb25zOyBpKyspIHsKPiA+ICsJCWNvbm5lY3RlZF9vdXRzID0g MDsKPiA+ICsJCWZvcl9lYWNoX2Nvbm5lY3RlZF9vdXRwdXQoJmRhdGEtPmRpc3BsYXksIG91dHB1 dCkKPiA+IHsKPiA+ICsJCQl0ZXN0X3BsYW5lX3Bvc2l0aW9uX3dpdGhfb3V0cHV0KGkrMSwKPiA+ IGl0ZXJhdGlvbnMsIGRhdGEsCj4gPiArCQkJCQkJCXBpcGUsCj4gPiBvdXRwdXQsIG5wbGFuZXMs Cj4gPiArCQkJCQkJCXRpbGluZywKPiA+IGNvbW1pdCk7Cj4gPiArCQkJY29ubmVjdGVkX291dHMr KzsKPiA+ICsJCX0KPiA+ICsKPiA+ICsJCWlndF9za2lwX29uKGNvbm5lY3RlZF9vdXRzID09IDAp Owo+ID4gKwl9Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyB2b2lkCj4gPiArcnVuX3Rlc3RzX2Zv cl9waXBlX3BsYW5lKGRhdGFfdCAqZGF0YSwgZW51bSBwaXBlIHBpcGUsIGludAo+ID4gbnBsYW5l cykKPiA+ICt7Cj4gPiArCWlndF9zdWJ0ZXN0X2YoImxlZ2FjeS1waXBlLSVzLXRpbGluZy1ub25l LXBsYW5lcy0lZCIsCj4gPiArCQnCoMKgwqDCoMKgwqBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlKSwg bnBsYW5lcykKPiA+ICsJCXRlc3RfcGxhbmVfcG9zaXRpb24oZGF0YSwgcGlwZSwgbnBsYW5lcywK PiA+ICsJCQkJwqDCoMKgwqBMT0NBTF9EUk1fRk9STUFUX01PRF9OT05FLAo+ID4gQ09NTUlUX0xF R0FDWSk7Cj4gPiArCj4gPiArCWlndF9zdWJ0ZXN0X2YoImF0b21pYy1waXBlLSVzLXRpbGluZy1u b25lLXBsYW5lcy0lZCIsCj4gPiArCQnCoMKgwqDCoMKgwqBrbXN0ZXN0X3BpcGVfbmFtZShwaXBl KSwgbnBsYW5lcykKPiA+ICsJCXRlc3RfcGxhbmVfcG9zaXRpb24oZGF0YSwgcGlwZSwgbnBsYW5l cywKPiA+ICsJCQkJwqDCoMKgwqBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWF9USUxFRCwKPiA+IENP TU1JVF9BVE9NSUMpOwo+ID4gKwo+ID4gKwlpZ3Rfc3VidGVzdF9mKCJsZWdhY3ktcGlwZS0lcy10 aWxpbmcteC1wbGFuZXMtJWQiLAo+ID4gKwkJwqDCoMKgwqDCoMKga21zdGVzdF9waXBlX25hbWUo cGlwZSksIG5wbGFuZXMpCj4gPiArCQl0ZXN0X3BsYW5lX3Bvc2l0aW9uKGRhdGEsIHBpcGUsIG5w bGFuZXMsCj4gPiArCQkJCcKgwqDCoMKgTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1hfVElMRUQsCj4g PiBDT01NSVRfTEVHQUNZKTsKPiA+ICsKPiA+ICsJaWd0X3N1YnRlc3RfZigiYXRvbWljLXBpcGUt JXMtdGlsaW5nLXgtcGxhbmVzLSVkIiwKPiA+ICsJCcKgwqDCoMKgwqDCoGttc3Rlc3RfcGlwZV9u YW1lKHBpcGUpLCBucGxhbmVzKQo+ID4gKwkJdGVzdF9wbGFuZV9wb3NpdGlvbihkYXRhLCBwaXBl LCBucGxhbmVzLAo+ID4gKwkJCQnCoMKgwqDCoExPQ0FMX0k5MTVfRk9STUFUX01PRF9YX1RJTEVE LAo+ID4gQ09NTUlUX0FUT01JQyk7Cj4gPiArCj4gPiArCWlndF9zdWJ0ZXN0X2YoImxlZ2FjeS1w aXBlLSVzLXRpbGluZy15LXBsYW5lcy0lZCIsCj4gPiArCQnCoMKgwqDCoMKgwqBrbXN0ZXN0X3Bp cGVfbmFtZShwaXBlKSwgbnBsYW5lcykKPiA+ICsJCXRlc3RfcGxhbmVfcG9zaXRpb24oZGF0YSwg cGlwZSwgbnBsYW5lcywKPiA+ICsJCQkJwqDCoMKgwqBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWV9U SUxFRCwKPiA+IENPTU1JVF9MRUdBQ1kpOwo+ID4gKwo+ID4gKwlpZ3Rfc3VidGVzdF9mKCJhdG9t aWMtcGlwZS0lcy10aWxpbmcteS1wbGFuZXMtJWQiLAo+ID4gKwkJwqDCoMKgwqDCoMKga21zdGVz dF9waXBlX25hbWUocGlwZSksIG5wbGFuZXMpCj4gPiArCQl0ZXN0X3BsYW5lX3Bvc2l0aW9uKGRh dGEsIHBpcGUsIG5wbGFuZXMsCj4gPiArCQkJCcKgwqDCoMKgTE9DQUxfSTkxNV9GT1JNQVRfTU9E X1lfVElMRUQsCj4gPiBDT01NSVRfQVRPTUlDKTsKPiA+ICsKPiA+ICsJaWd0X3N1YnRlc3RfZigi bGVnYWN5LXBpcGUtJXMtdGlsaW5nLXlmLXBsYW5lcy0lZCIsCj4gPiArCQnCoMKgwqDCoMKgwqBr bXN0ZXN0X3BpcGVfbmFtZShwaXBlKSwgbnBsYW5lcykKPiA+ICsJCXRlc3RfcGxhbmVfcG9zaXRp b24oZGF0YSwgcGlwZSwgbnBsYW5lcywKPiA+ICsJCQkJwqDCoMKgwqBMT0NBTF9JOTE1X0ZPUk1B VF9NT0RfWWZfVElMRUQKPiA+ICwgQ09NTUlUX0xFR0FDWSk7Cj4gPiArCj4gPiArCWlndF9zdWJ0 ZXN0X2YoImF0b21pYy1waXBlLSVzLXRpbGluZy15Zi1wbGFuZXMtJWQiLAo+ID4gKwkJwqDCoMKg wqDCoMKga21zdGVzdF9waXBlX25hbWUocGlwZSksIG5wbGFuZXMpCj4gPiArCQl0ZXN0X3BsYW5l X3Bvc2l0aW9uKGRhdGEsIHBpcGUsIG5wbGFuZXMsCj4gPiArCQkJCcKgwqDCoMKgTE9DQUxfSTkx NV9GT1JNQVRfTU9EX1lmX1RJTEVECj4gPiAsIENPTU1JVF9BVE9NSUMpOwo+ID4gK30KPiA+ICsK PiA+ICtzdGF0aWMgdm9pZAo+ID4gK3J1bl90ZXN0c19mb3JfcGlwZShkYXRhX3QgKmRhdGEsIGVu dW0gcGlwZSBwaXBlKQo+ID4gK3sKPiA+ICsJZm9yIChpbnQgbnBsYW5lcyA9IDE7IG5wbGFuZXMg PCBJR1RfTUFYX1BMQU5FUyAtIDE7Cj4gPiBucGxhbmVzKyspCj4gPiArCQlydW5fdGVzdHNfZm9y X3BpcGVfcGxhbmUoZGF0YSwgcGlwZSwgbnBsYW5lcyk7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRp YyBkYXRhX3QgZGF0YTsKPiA+ICsKPiA+ICtpZ3RfbWFpbgo+ID4gK3sKPiA+ICsKPiA+ICsJaWd0 X3NraXBfb25fc2ltdWxhdGlvbigpOwo+ID4gKwo+ID4gKwlpZ3RfZml4dHVyZSB7Cj4gPiArCQlk YXRhLmRybV9mZCA9Cj4gPiBkcm1fb3Blbl9kcml2ZXJfbWFzdGVyKERSSVZFUl9JTlRFTCk7Cj4g PiArCj4gPiArCQlrbXN0ZXN0X3NldF92dF9ncmFwaGljc19tb2RlKCk7Cj4gPiArCj4gPiArCQlp Z3RfcmVxdWlyZV9waXBlX2NyYygpOwo+ID4gKwkJaWd0X2Rpc3BsYXlfaW5pdCgmZGF0YS5kaXNw bGF5LCBkYXRhLmRybV9mZCk7Cj4gPiArCX0KPiA+ICsKPiA+ICsJZm9yIChpbnQgcGlwZSA9IDA7 IHBpcGUgPCBJOTE1X01BWF9QSVBFUzsgcGlwZSsrKQo+ID4gKwkJcnVuX3Rlc3RzX2Zvcl9waXBl KCZkYXRhLCBwaXBlKTsKPiA+ICsKPiA+ICsJaWd0X2ZpeHR1cmUgewo+ID4gKwkJaWd0X2Rpc3Bs YXlfZmluaSgmZGF0YS5kaXNwbGF5KTsKPiA+ICsJfQo+ID4gK30KPiAKLS0gCk1pa2EgS2Fob2xh IC0gSW50ZWwgT1RDCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1n ZngK