From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id BFE3189338 for ; Tue, 5 Nov 2019 13:25:31 +0000 (UTC) Date: Tue, 5 Nov 2019 14:25:28 +0100 From: Katarzyna Dec Message-ID: <20191105132528.GZ28532@kdec5-desk.ger.corp.intel.com> References: <20191105111513.14278-1-chris@chris-wilson.co.uk> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20191105111513.14278-1-chris@chris-wilson.co.uk> Subject: Re: [igt-dev] [PATCH i-g-t] igt: Another combinatorial exercise for blits 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: Chris Wilson , igt-dev@lists.freedesktop.org List-ID: T24gVHVlLCBOb3YgMDUsIDIwMTkgYXQgMTE6MTU6MTNBTSArMDAwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IFRoZSBhaW0gb2YgdGhpcyB0ZXN0IGlzIHRvIGNvbWJpbmUgZ2VtX2xpbmVhcl9ibGl0 cywgZ2VtX3RpbGVkX2JsaXRzIGV0Ywo+IGludG8gb25lIHRlc3QgcnVubmVyIHRoYXQgY292ZXJz IGludmVzdGlnYXRpb24gaW50byBIVyBhbGlnbm1lbnQgaXNzdWVzCj4gYXMgd2VsbCBhcyBkcml2 ZXIgYm91bmRhcmllcyAocmVsb2NzLCBhY2Nlc3MsIHRocmFzaGluZykuCj4gCj4gU2VlIGFsc28g Z2VtX2NvbmN1cnJlbnRfYmxpdHMgd2hpY2ggbG9va3MgZm9yIGNvaGVyZW5jeSBpc3N1ZXMgYmV0 d2Vlbgo+IHBhcmFsbGVsIGV4ZWN1dGlvbi4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxz b24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPiBDYzogS2F0YXJ6eW5hIERlYyA8a2F0YXJ6 eW5hLmRlY0BpbnRlbC5jb20+Cj4gQ2M6IFZhbnNoaWRoYXIgS29uZGEgPHZhbnNoaWRoYXIuci5r b25kYUBpbnRlbC5jb20+Cj4gLS0tCj4gIHRlc3RzL01ha2VmaWxlLnNvdXJjZXMgfCAgIDEgKwo+ ICB0ZXN0cy9pOTE1L2dlbV9ibGl0cy5jIHwgNzk2ICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrCj4gIHRlc3RzL21lc29uLmJ1aWxkICAgICAgfCAgIDEgKwo+ICAzIGZp bGVzIGNoYW5nZWQsIDc5OCBpbnNlcnRpb25zKCspCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0 cy9pOTE1L2dlbV9ibGl0cy5jCj4gCj4gZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLnNvdXJj ZXMgYi90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCj4gaW5kZXggMDkzZWI1N2YzLi5mNjM2MDJlZjAg MTAwNjQ0Cj4gLS0tIGEvdGVzdHMvTWFrZWZpbGUuc291cmNlcwo+ICsrKyBiL3Rlc3RzL01ha2Vm aWxlLnNvdXJjZXMKPiBAQCAtMjQsNiArMjQsNyBAQCBURVNUU19wcm9ncyA9IFwKPiAgCWRybV9p bXBvcnRfZXhwb3J0IFwKPiAgCWRybV9tbSBcCj4gIAlkcm1fcmVhZCBcCj4gKwlpOTE1L2dlbV9i bGl0cyBcCj4gIAlrbXNfM2QgXAo+ICAJa21zX2FkZGZiX2Jhc2ljIFwKPiAgCWttc19hdG9taWMg XAo+IGRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dlbV9ibGl0cy5jIGIvdGVzdHMvaTkxNS9nZW1f YmxpdHMuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwLi5lNmE4NDBm ZmIKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvdGVzdHMvaTkxNS9nZW1fYmxpdHMuYwo+IEBAIC0w LDAgKzEsNzk2IEBACj4gKy8qCj4gKyAqIENvcHlyaWdodCDCqSAyMDE4IEludGVsIENvcnBvcmF0 aW9uCk1pbm9yIHR5cG8sIGJ1dCBhcyB0aGlzIGlzIGEgbmV3IGZpbGUsIGl0IHdvdWxkIGJlIGdv b2QgdG8gdXBkYXRlIGRhdGUgOikKPiArICoKPiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3Jh bnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKPiArICogY29w eSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRo ZSAiU29mdHdhcmUiKSwKPiArICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0 cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgo+ICsgKiB0aGUgcmlnaHRzIHRv IHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5z ZSwKPiArICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1p dCBwZXJzb25zIHRvIHdob20gdGhlCj4gKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBz bywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Cj4gKyAqCj4gKyAqIFRoZSBh Ym92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRp bmcgdGhlIG5leHQKPiArICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29w aWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQo+ICsgKiBTb2Z0d2FyZS4KPiArICoK PiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkg T0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKPiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1Qg TElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCj4gKyAqIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBF VkVOVCBTSEFMTAo+ICsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFC TEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgo+ICsgKiBMSUFCSUxJVFksIFdIRVRI RVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwo+ ICsgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBU SEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCj4gKyAqIElOIFRIRSBTT0ZUV0FSRS4KPiArICoKPiAr ICovCj4gKwo+ICsjaW5jbHVkZSAiaWd0LmgiCj4gKyNpbmNsdWRlICJpZ3RfeDg2LmgiCj4gKwo+ ICsjZGVmaW5lIE1JX0ZMVVNIX0RXICgweDI2IDw8IDIzKQo+ICsKPiArI2RlZmluZSBCQ1NfU1dD VFJMIDB4MjIyMDAKPiArI2RlZmluZSBCQ1NfU1JDX1kgKDEgPDwgMCkKPiArI2RlZmluZSBCQ1Nf RFNUX1kgKDEgPDwgMSkKPiArCj4gK3N0cnVjdCBkZXZpY2Ugewo+ICsJaW50IGZkOwo+ICsJaW50 IGdlbjsKPiArCWludCBwY2lpZDsKPiArCWludCBsbGM7Cj4gK307Cj4gKwo+ICtzdHJ1Y3QgYnVm ZmVyIHsKPiArCXVpbnQzMl90IGhhbmRsZTsKPiArCXVpbnQxNl90IHdpZHRoOwo+ICsJdWludDE2 X3QgaGVpZ2h0Owo+ICsJdWludDE2X3Qgc3RyaWRlOwo+ICsJdWludDMyX3Qgc2l6ZTsKPiArCXVu c2lnbmVkIGludCB0aWxpbmc7Cj4gKwl1bnNpZ25lZCBpbnQgY2FjaGluZzsKPiArCXVpbnQ2NF90 IGd0dF9vZmZzZXQ7Cj4gKwl1aW50MzJfdCBtb2RlbFtdIF9fYXR0cmlidXRlX18oKGFsaWduZWQo MTYpKSk7Cj4gK307Cj4gKwo+ICtlbnVtIG1vZGUgewo+ICsJQ1BVLAo+ICsJUFJXLAo+ICsJR1RU LAo+ICsJV0MsCj4gK307Cj4gKwo+ICtzdGF0aWMgaW50IGZscyh1aW50NjRfdCB4KQo+ICt7Cj4g KwlpbnQgdDsKPiArCj4gKwlmb3IgKHQgPSAwOyB4ID4+IHQ7IHQrKykKPiArCQk7Cj4gKwo+ICsJ cmV0dXJuIHQ7Cj4gK30KPiArCj4gK3N0YXRpYyB1bnNpZ25lZCBpbnQKPiArZ2V0X3RpbGluZ19z dHJpZGUoY29uc3Qgc3RydWN0IGRldmljZSAqZGV2aWNlLAo+ICsJCSAgdW5zaWduZWQgaW50IHdp ZHRoLCB1bnNpZ25lZCBpbnQgdGlsaW5nKQo+ICt7Cj4gKwl1bnNpZ25lZCBpbnQgc3RyaWRlID0g NHUgKiB3aWR0aDsKPiArCj4gKwlpZiAodGlsaW5nKSB7Cj4gKwkJaWYgKGRldmljZS0+Z2VuIDwg MykKPiArCQkJc3RyaWRlID0gQUxJR04oc3RyaWRlLCAxMjgpOwo+ICsJCWVsc2UgaWYgKGRldmlj ZS0+Z2VuIDwgNCB8fCB0aWxpbmcgPT0gSTkxNV9USUxJTkdfWCkKPiArCQkJc3RyaWRlID0gQUxJ R04oc3RyaWRlLCA1MTIpOwo+ICsJCWVsc2UKPiArCQkJc3RyaWRlID0gQUxJR04oc3RyaWRlLCAx MjgpOwo+ICsJCWlmIChkZXZpY2UtPmdlbiA8IDQpCj4gKwkJCXN0cmlkZSA9IDEgPDwgZmxzKHN0 cmlkZSAtIDEpOwo+ICsJfSBlbHNlIHsKPiArCQlpZiAoZGV2aWNlLT5nZW4gPj0gOCkKPiArCQkJ c3RyaWRlID0gQUxJR04oc3RyaWRlLCA2NCk7Cj4gKwl9Cj4gKwo+ICsJaWd0X2Fzc2VydChzdHJp ZGUgPCBVSU5UMTZfTUFYICYmIHN0cmlkZSA+PSA0KndpZHRoKTsKPiArCXJldHVybiBzdHJpZGU7 Cj4gK30KPiArCj4gK3N0YXRpYyB1bnNpZ25lZCBpbnQKPiArZ2V0X3RpbGluZ19oZWlnaHQoY29u c3Qgc3RydWN0IGRldmljZSAqZGV2aWNlLAo+ICsJCSAgdW5zaWduZWQgaW50IGhlaWdodCwgdW5z aWduZWQgaW50IHRpbGluZykKPiArewo+ICsJaWYgKCF0aWxpbmcpCj4gKwkJcmV0dXJuIGhlaWdo dDsKPiArCj4gKwlpZiAoZGV2aWNlLT5nZW4gPCAzKQo+ICsJCXJldHVybiBBTElHTihoZWlnaHQs IDE2KTsKPiArCWVsc2UgaWYgKGRldmljZS0+Z2VuIDwgNCB8fCB0aWxpbmcgPT0gSTkxNV9USUxJ TkdfWCkKPiArCQlyZXR1cm4gQUxJR04oaGVpZ2h0LCA4KTsKPiArCWVsc2UKPiArCQlyZXR1cm4g QUxJR04oaGVpZ2h0LCAzMik7Cj4gK30KPiArCj4gK3N0YXRpYyBzdHJ1Y3QgYnVmZmVyICpidWZm ZXJfY3JlYXRlKGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldmljZSwKPiArCQkJCSAgICB1bnNpZ25l ZCBpbnQgd2lkdGgsCj4gKwkJCQkgICAgdW5zaWduZWQgaW50IGhlaWdodCkKPiArewo+ICsJc3Ry dWN0IGJ1ZmZlciAqYnVmZmVyOwo+ICsKPiArCWlndF9hc3NlcnQod2lkdGggJiYgaGVpZ2h0KTsK PiArCj4gKwlidWZmZXIgPSBtYWxsb2Moc2l6ZW9mKCpidWZmZXIpICsgNHUgKiB3aWR0aCAqIGhl aWdodCk7Cj4gKwlpZiAoIWJ1ZmZlcikKPiArCQlyZXR1cm4gTlVMTDsKPiArCj4gKwlidWZmZXIt PndpZHRoID0gd2lkdGg7Cj4gKwlidWZmZXItPmhlaWdodCA9IGhlaWdodDsKPiArCj4gKwlidWZm ZXItPnRpbGluZyA9IEk5MTVfVElMSU5HX05PTkU7Cj4gKwlidWZmZXItPnN0cmlkZSA9IGdldF90 aWxpbmdfc3RyaWRlKGRldmljZSwgd2lkdGgsIEk5MTVfVElMSU5HX05PTkUpOwo+ICsJYnVmZmVy LT5zaXplID0gQUxJR04oYnVmZmVyLT5zdHJpZGUgKiBoZWlnaHQsIDQwOTYpOwo+ICsJYnVmZmVy LT5oYW5kbGUgPSBnZW1fY3JlYXRlKGRldmljZS0+ZmQsIGJ1ZmZlci0+c2l6ZSk7Cj4gKwlidWZm ZXItPmNhY2hpbmcgPSBkZXZpY2UtPmxsYzsKPiArCj4gKwlidWZmZXItPmd0dF9vZmZzZXQgPSBi dWZmZXItPmhhbmRsZSAqIGJ1ZmZlci0+c2l6ZTsKPiArCj4gKwlmb3IgKGludCB5ID0gMDsgeSA8 IGhlaWdodDsgeSsrKSB7Cj4gKwkJdWludDMyX3QgKnJvdyA9IGJ1ZmZlci0+bW9kZWwgKyB5ICog d2lkdGg7Cj4gKwo+ICsJCWZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7IHgrKykKPiArCQkJcm93 W3hdID0gKHkgPDwgMTYgfCB4KSBeIGJ1ZmZlci0+aGFuZGxlOwo+ICsKPiArCQlnZW1fd3JpdGUo ZGV2aWNlLT5mZCwKPiArCQkJICBidWZmZXItPmhhbmRsZSwgNHUgKiB5ICogd2lkdGgsCj4gKwkJ CSAgcm93LCA0dSAqIHdpZHRoKTsKPiArCX0KPiArCj4gKwlyZXR1cm4gYnVmZmVyOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgdm9pZCBidWZmZXJfc2V0X3RpbGluZyhjb25zdCBzdHJ1Y3QgZGV2aWNlICpk ZXZpY2UsCj4gKwkJCSAgICAgIHN0cnVjdCBidWZmZXIgKmJ1ZmZlciwKPiArCQkJICAgICAgdW5z aWduZWQgaW50IHRpbGluZykKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVj dDIgb2JqWzNdOwo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9yZWxvY2F0aW9uX2VudHJ5IHJlbG9j WzJdOwo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVmZmVyMiBleGVjYnVmOwo+ICsJY29u c3QgYm9vbCBoYXNfNjRiX3JlbG9jID0gZGV2aWNlLT5nZW4gPj0gODsKPiArCXVpbnQzMl90IHN0 cmlkZSwgc2l6ZSwgcGl0Y2g7Cj4gKwl1aW50MzJfdCAqYmF0Y2g7Cj4gKwlpbnQgaTsKPiArCj4g KwlpZiAoYnVmZmVyLT50aWxpbmcgPT0gdGlsaW5nKQo+ICsJCXJldHVybjsKPiArCj4gKwlzdHJp ZGUgPSBnZXRfdGlsaW5nX3N0cmlkZShkZXZpY2UsIGJ1ZmZlci0+d2lkdGgsIHRpbGluZyk7Cj4g KwlzaXplID0gc3RyaWRlICogZ2V0X3RpbGluZ19oZWlnaHQoZGV2aWNlLCBidWZmZXItPmhlaWdo dCwgdGlsaW5nKTsKPiArCXNpemUgPSBBTElHTihzaXplLCA0MDk2KTsKPiArCj4gKwltZW1zZXQo JmV4ZWNidWYsIDAsIHNpemVvZihleGVjYnVmKSk7Cj4gKwlleGVjYnVmLmJ1ZmZlcnNfcHRyID0g dG9fdXNlcl9wb2ludGVyKG9iaik7Cj4gKwlleGVjYnVmLmJ1ZmZlcl9jb3VudCA9IEFSUkFZX1NJ WkUob2JqKTsKPiArCWlmIChkZXZpY2UtPmdlbiA+PSA2KQo+ICsJCWV4ZWNidWYuZmxhZ3MgPSBJ OTE1X0VYRUNfQkxUOwo+ICsKPiArCW1lbXNldChvYmosIDAsIHNpemVvZihvYmopKTsKPiArCW9i alswXS5oYW5kbGUgPSBnZW1fY3JlYXRlKGRldmljZS0+ZmQsIHNpemUpOwo+ICsJaWYgKHRpbGlu Zykgewo+ICsJCW9ialswXS5mbGFncyA9IEVYRUNfT0JKRUNUX05FRURTX0ZFTkNFOwo+ICsJCWdl bV9zZXRfdGlsaW5nKGRldmljZS0+ZmQsIG9ialswXS5oYW5kbGUsIHRpbGluZywgc3RyaWRlKTsK PiArCX0KPiArCj4gKwlvYmpbMV0uaGFuZGxlID0gYnVmZmVyLT5oYW5kbGU7Cj4gKwlvYmpbMV0u b2Zmc2V0ID0gYnVmZmVyLT5ndHRfb2Zmc2V0Owo+ICsJaWYgKGJ1ZmZlci0+dGlsaW5nKQo+ICsJ CW9ialsxXS5mbGFncyA9IEVYRUNfT0JKRUNUX05FRURTX0ZFTkNFOwo+ICsKPiArCW9ialsyXS5o YW5kbGUgPSBnZW1fY3JlYXRlKGRldmljZS0+ZmQsIDQwOTYpOwo+ICsJb2JqWzJdLnJlbG9jc19w dHIgPSB0b191c2VyX3BvaW50ZXIobWVtc2V0KHJlbG9jLCAwLCBzaXplb2YocmVsb2MpKSk7Cj4g KwlvYmpbMl0ucmVsb2NhdGlvbl9jb3VudCA9IDI7Cj4gKwliYXRjaCA9IGdlbV9tbWFwX19jcHUo ZGV2aWNlLT5mZCwgb2JqWzJdLmhhbmRsZSwgMCwgNDA5NiwgUFJPVF9XUklURSk7Cj4gKwo+ICsJ aSA9IDA7Cj4gKwo+ICsJaWYgKCh0aWxpbmcgfCBidWZmZXItPnRpbGluZykgPj0gSTkxNV9USUxJ TkdfWSkgewo+ICsJCXVuc2lnbmVkIGludCBtYXNrOwo+ICsKPiArCQliYXRjaFtpKytdID0gTUlf TE9BRF9SRUdJU1RFUl9JTU07Cj4gKwkJYmF0Y2hbaSsrXSA9IEJDU19TV0NUUkw7Cj4gKwo+ICsJ CW1hc2sgPSAoQkNTX1NSQ19ZIHwgQkNTX0RTVF9ZKSA8PCAxNjsKPiArCQlpZiAoYnVmZmVyLT50 aWxpbmcgPT0gSTkxNV9USUxJTkdfWSkKPiArCQkJbWFzayB8PSBCQ1NfU1JDX1k7Cj4gKwkJaWYg KHRpbGluZyA9PSBJOTE1X1RJTElOR19ZKQo+ICsJCQltYXNrIHw9IEJDU19EU1RfWTsKPiArCQli YXRjaFtpKytdID0gbWFzazsKPiArCX0KPiArCj4gKwliYXRjaFtpXSA9IChYWV9TUkNfQ09QWV9C TFRfQ01EIHwKPiArCQkgICAgWFlfU1JDX0NPUFlfQkxUX1dSSVRFX0FMUEhBIHwKPiArCQkgICAg WFlfU1JDX0NPUFlfQkxUX1dSSVRFX1JHQik7Cj4gKwlpZiAoZGV2aWNlLT5nZW4gPj0gNCAmJiBi dWZmZXItPnRpbGluZykKPiArCQliYXRjaFtpXSB8PSBYWV9TUkNfQ09QWV9CTFRfU1JDX1RJTEVE Owo+ICsJaWYgKGRldmljZS0+Z2VuID49IDQgJiYgdGlsaW5nKQo+ICsJCWJhdGNoW2ldIHw9IFhZ X1NSQ19DT1BZX0JMVF9EU1RfVElMRUQ7Cj4gKwliYXRjaFtpKytdIHw9IDYgKyAyICogaGFzXzY0 Yl9yZWxvYzsKPiArCj4gKwlwaXRjaCA9IHN0cmlkZTsKPiArCWlmIChkZXZpY2UtPmdlbiA+PSA0 ICYmIHRpbGluZykKPiArCQlwaXRjaCAvPSA0Owo+ICsJYmF0Y2hbaSsrXSA9IDMgPDwgMjQgfCAw eGNjIDw8IDE2IHwgcGl0Y2g7Cj4gKwliYXRjaFtpKytdID0gMDsKPiArCWJhdGNoW2krK10gPSBi dWZmZXItPmhlaWdodCA8PCAxNiB8IGJ1ZmZlci0+d2lkdGg7Cj4gKwlyZWxvY1swXS50YXJnZXRf aGFuZGxlID0gb2JqWzBdLmhhbmRsZTsKPiArCXJlbG9jWzBdLnByZXN1bWVkX29mZnNldCA9IG9i alswXS5vZmZzZXQ7Cj4gKwlyZWxvY1swXS5vZmZzZXQgPSBzaXplb2YoKmJhdGNoKSAqIGk7Cj4g KwlyZWxvY1swXS5yZWFkX2RvbWFpbnMgPSBJOTE1X0dFTV9ET01BSU5fUkVOREVSOwo+ICsJcmVs b2NbMF0ud3JpdGVfZG9tYWluID0gSTkxNV9HRU1fRE9NQUlOX1JFTkRFUjsKPiArCWJhdGNoW2kr K10gPSBvYmpbMF0ub2Zmc2V0Owo+ICsJaWYgKGhhc182NGJfcmVsb2MpCj4gKwkJYmF0Y2hbaSsr XSA9IG9ialswXS5vZmZzZXQgPj4gMzI7Cj4gKwo+ICsJYmF0Y2hbaSsrXSA9IDA7Cj4gKwlwaXRj aCA9IGJ1ZmZlci0+c3RyaWRlOwo+ICsJaWYgKGRldmljZS0+Z2VuID49IDQgJiYgYnVmZmVyLT50 aWxpbmcpCj4gKwkJcGl0Y2ggLz0gNDsKPiArCWJhdGNoW2krK10gPSBwaXRjaDsKPiArCXJlbG9j WzFdLnRhcmdldF9oYW5kbGUgPSBvYmpbMV0uaGFuZGxlOwo+ICsJcmVsb2NbMV0ucHJlc3VtZWRf b2Zmc2V0ID0gb2JqWzFdLm9mZnNldDsKPiArCXJlbG9jWzFdLm9mZnNldCA9IHNpemVvZigqYmF0 Y2gpICogaTsKPiArCXJlbG9jWzFdLnJlYWRfZG9tYWlucyA9IEk5MTVfR0VNX0RPTUFJTl9SRU5E RVI7Cj4gKwliYXRjaFtpKytdID0gb2JqWzFdLm9mZnNldDsKPiArCWlmIChoYXNfNjRiX3JlbG9j KQo+ICsJCWJhdGNoW2krK10gPSBvYmpbMV0ub2Zmc2V0ID4+IDMyOwo+ICsKPiArCWlmICgodGls aW5nIHwgYnVmZmVyLT50aWxpbmcpID49IEk5MTVfVElMSU5HX1kpIHsKPiArCQlpZ3RfYXNzZXJ0 KGRldmljZS0+Z2VuID49IDYpOwo+ICsJCWJhdGNoW2krK10gPSBNSV9GTFVTSF9EVyB8IDI7Cj4g KwkJYmF0Y2hbaSsrXSA9IDA7Cj4gKwkJYmF0Y2hbaSsrXSA9IDA7Cj4gKwkJYmF0Y2hbaSsrXSA9 IDA7Cj4gKwo+ICsJCWJhdGNoW2krK10gPSBNSV9MT0FEX1JFR0lTVEVSX0lNTTsKPiArCQliYXRj aFtpKytdID0gQkNTX1NXQ1RSTDsKPiArCQliYXRjaFtpKytdID0gKEJDU19TUkNfWSB8IEJDU19E U1RfWSkgPDwgMTY7Cj4gKwl9Cj4gKwo+ICsJYmF0Y2hbaSsrXSA9IE1JX0JBVENIX0JVRkZFUl9F TkQ7Cj4gKwltdW5tYXAoYmF0Y2gsIDQwOTYpOwo+ICsKPiArCWdlbV9leGVjYnVmKGRldmljZS0+ ZmQsICZleGVjYnVmKTsKPiArCj4gKwlnZW1fY2xvc2UoZGV2aWNlLT5mZCwgb2JqWzJdLmhhbmRs ZSk7Cj4gKwlnZW1fY2xvc2UoZGV2aWNlLT5mZCwgb2JqWzFdLmhhbmRsZSk7Cj4gKwo+ICsJYnVm ZmVyLT5ndHRfb2Zmc2V0ID0gb2JqWzBdLm9mZnNldDsKPiArCWJ1ZmZlci0+aGFuZGxlID0gb2Jq WzBdLmhhbmRsZTsKPiArCj4gKwlidWZmZXItPnRpbGluZyA9IHRpbGluZzsKPiArCWJ1ZmZlci0+ c3RyaWRlID0gc3RyaWRlOwo+ICsJYnVmZmVyLT5zaXplID0gc2l6ZTsKPiArfQo+ICsKPiArc3Rh dGljIGJvb2wgY2FuX2JsaXRfdG9fbGluZWFyKGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldmljZSwK PiArCQkJICAgICAgIGNvbnN0IHN0cnVjdCBidWZmZXIgKmJ1ZmZlcikKPiArewo+ICsJaWYgKGJ1 ZmZlci0+Y2FjaGluZyAmJiAhZGV2aWNlLT5sbGMpCj4gKwkJcmV0dXJuIGZhbHNlOwo+ICsKPiAr CWlmIChkZXZpY2UtPmdlbiA8IDMpCj4gKwkJcmV0dXJuIGZhbHNlOwo+ICsKPiArCXJldHVybiB0 cnVlOwo+ICt9Cj4gKwo+ICtzdGF0aWMgYm9vbCBibGl0X3RvX2xpbmVhcihjb25zdCBzdHJ1Y3Qg ZGV2aWNlICpkZXZpY2UsCj4gKwkJCSAgIGNvbnN0IHN0cnVjdCBidWZmZXIgKmJ1ZmZlciwKPiAr CQkJICAgdm9pZCAqbGluZWFyKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2Jq ZWN0MiBvYmpbM107Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlbG9jYXRpb25fZW50cnkgcmVs b2NbMl07Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyIGV4ZWNidWY7Cj4gKwlj b25zdCBib29sIGhhc182NGJfcmVsb2MgPSBkZXZpY2UtPmdlbiA+PSA4Owo+ICsJdWludDMyX3Qg KmJhdGNoOwo+ICsJdWludDMyX3QgcGl0Y2g7Cj4gKwlpbnQgaSA9IDA7Cj4gKwo+ICsJaWd0X2Fz c2VydChidWZmZXItPnRpbGluZyk7Cj4gKwo+ICsJaWYgKCFjYW5fYmxpdF90b19saW5lYXIoZGV2 aWNlLCBidWZmZXIpKQo+ICsJCXJldHVybiBmYWxzZTsKPiArCj4gKwltZW1zZXQoJmV4ZWNidWYs IDAsIHNpemVvZihleGVjYnVmKSk7Cj4gKwlleGVjYnVmLmJ1ZmZlcnNfcHRyID0gdG9fdXNlcl9w b2ludGVyKG9iaik7Cj4gKwlleGVjYnVmLmJ1ZmZlcl9jb3VudCA9IEFSUkFZX1NJWkUob2JqKTsK PiArCWlmIChkZXZpY2UtPmdlbiA+PSA2KQo+ICsJCWV4ZWNidWYuZmxhZ3MgPSBJOTE1X0VYRUNf QkxUOwo+ICsKPiArCW1lbXNldChvYmosIDAsIHNpemVvZihvYmopKTsKPiArCWlmIChfX2dlbV91 c2VycHRyKGRldmljZS0+ZmQsIGxpbmVhciwgYnVmZmVyLT5zaXplLCAwLCAwLCAmb2JqWzBdLmhh bmRsZSkpCj4gKwkJcmV0dXJuIGZhbHNlOwo+ICsKPiArCW9ialsxXS5oYW5kbGUgPSBidWZmZXIt PmhhbmRsZTsKPiArCW9ialsxXS5vZmZzZXQgPSBidWZmZXItPmd0dF9vZmZzZXQ7Cj4gKwlvYmpb MV0uZmxhZ3MgPSBFWEVDX09CSkVDVF9ORUVEU19GRU5DRTsKPiArCj4gKwltZW1zZXQocmVsb2Ms IDAsIHNpemVvZihyZWxvYykpOwo+ICsJb2JqWzJdLmhhbmRsZSA9IGdlbV9jcmVhdGUoZGV2aWNl LT5mZCwgNDA5Nik7Cj4gKwlvYmpbMl0ucmVsb2NzX3B0ciA9IHRvX3VzZXJfcG9pbnRlcihyZWxv Yyk7Cj4gKwlvYmpbMl0ucmVsb2NhdGlvbl9jb3VudCA9IEFSUkFZX1NJWkUocmVsb2MpOwo+ICsJ YmF0Y2ggPSBnZW1fbW1hcF9fY3B1KGRldmljZS0+ZmQsIG9ialsyXS5oYW5kbGUsIDAsIDQwOTYs IFBST1RfV1JJVEUpOwo+ICsKPiArCWlmIChidWZmZXItPnRpbGluZyA+PSBJOTE1X1RJTElOR19Z KSB7Cj4gKwkJdW5zaWduZWQgaW50IG1hc2s7Cj4gKwo+ICsJCWJhdGNoW2krK10gPSBNSV9MT0FE X1JFR0lTVEVSX0lNTTsKPiArCQliYXRjaFtpKytdID0gQkNTX1NXQ1RSTDsKPiArCj4gKwkJbWFz ayA9IChCQ1NfU1JDX1kgfCBCQ1NfRFNUX1kpIDw8IDE2Owo+ICsJCWlmIChidWZmZXItPnRpbGlu ZyA9PSBJOTE1X1RJTElOR19ZKQo+ICsJCQltYXNrIHw9IEJDU19TUkNfWTsKPiArCQliYXRjaFtp KytdID0gbWFzazsKPiArCX0KPiArCj4gKwliYXRjaFtpXSA9IChYWV9TUkNfQ09QWV9CTFRfQ01E IHwKPiArCQkgICAgWFlfU1JDX0NPUFlfQkxUX1dSSVRFX0FMUEhBIHwKPiArCQkgICAgWFlfU1JD X0NPUFlfQkxUX1dSSVRFX1JHQik7Cj4gKwlpZiAoZGV2aWNlLT5nZW4gPj0gNCAmJiBidWZmZXIt PnRpbGluZykKPiArCQliYXRjaFtpXSB8PSBYWV9TUkNfQ09QWV9CTFRfU1JDX1RJTEVEOwo+ICsJ YmF0Y2hbaSsrXSB8PSA2ICsgMiAqIGhhc182NGJfcmVsb2M7Cj4gKwo+ICsJYmF0Y2hbaSsrXSA9 IDMgPDwgMjQgfCAweGNjIDw8IDE2IHwgYnVmZmVyLT5zdHJpZGU7Cj4gKwliYXRjaFtpKytdID0g MDsKPiArCWJhdGNoW2krK10gPSBidWZmZXItPmhlaWdodCA8PCAxNiB8IGJ1ZmZlci0+d2lkdGg7 Cj4gKwlyZWxvY1swXS50YXJnZXRfaGFuZGxlID0gb2JqWzBdLmhhbmRsZTsKPiArCXJlbG9jWzBd LnByZXN1bWVkX29mZnNldCA9IG9ialswXS5vZmZzZXQ7Cj4gKwlyZWxvY1swXS5vZmZzZXQgPSBz aXplb2YoKmJhdGNoKSAqIGk7Cj4gKwlyZWxvY1swXS5yZWFkX2RvbWFpbnMgPSBJOTE1X0dFTV9E T01BSU5fUkVOREVSOwo+ICsJcmVsb2NbMF0ud3JpdGVfZG9tYWluID0gSTkxNV9HRU1fRE9NQUlO X1JFTkRFUjsKPiArCWJhdGNoW2krK10gPSBvYmpbMF0ub2Zmc2V0Owo+ICsJaWYgKGhhc182NGJf cmVsb2MpCj4gKwkJYmF0Y2hbaSsrXSA9IG9ialswXS5vZmZzZXQgPj4gMzI7Cj4gKwo+ICsJYmF0 Y2hbaSsrXSA9IDA7Cj4gKwlwaXRjaCA9IGJ1ZmZlci0+c3RyaWRlOwo+ICsJaWYgKGRldmljZS0+ Z2VuID49IDQgJiYgYnVmZmVyLT50aWxpbmcpCj4gKwkJcGl0Y2ggLz0gNDsKPiArCWJhdGNoW2kr K10gPSBwaXRjaDsKPiArCXJlbG9jWzFdLnRhcmdldF9oYW5kbGUgPSBvYmpbMV0uaGFuZGxlOwo+ ICsJcmVsb2NbMV0ucHJlc3VtZWRfb2Zmc2V0ID0gb2JqWzFdLm9mZnNldDsKPiArCXJlbG9jWzFd Lm9mZnNldCA9IHNpemVvZigqYmF0Y2gpICogaTsKPiArCXJlbG9jWzFdLnJlYWRfZG9tYWlucyA9 IEk5MTVfR0VNX0RPTUFJTl9SRU5ERVI7Cj4gKwliYXRjaFtpKytdID0gb2JqWzFdLm9mZnNldDsK PiArCWlmIChoYXNfNjRiX3JlbG9jKQo+ICsJCWJhdGNoW2krK10gPSBvYmpbMV0ub2Zmc2V0ID4+ IDMyOwo+ICsKPiArCWlmIChidWZmZXItPnRpbGluZyA+PSBJOTE1X1RJTElOR19ZKSB7Cj4gKwkJ aWd0X2Fzc2VydChkZXZpY2UtPmdlbiA+PSA2KTsKPiArCQliYXRjaFtpKytdID0gTUlfRkxVU0hf RFcgfCAyOwo+ICsJCWJhdGNoW2krK10gPSAwOwo+ICsJCWJhdGNoW2krK10gPSAwOwo+ICsJCWJh dGNoW2krK10gPSAwOwo+ICsKPiArCQliYXRjaFtpKytdID0gTUlfTE9BRF9SRUdJU1RFUl9JTU07 Cj4gKwkJYmF0Y2hbaSsrXSA9IEJDU19TV0NUUkw7Cj4gKwkJYmF0Y2hbaSsrXSA9IChCQ1NfU1JD X1kgfCBCQ1NfRFNUX1kpIDw8IDE2Owo+ICsJfQo+ICsKPiArCWJhdGNoW2krK10gPSBNSV9CQVRD SF9CVUZGRVJfRU5EOwo+ICsJbXVubWFwKGJhdGNoLCA0MDk2KTsKPiArCj4gKwlnZW1fZXhlY2J1 ZihkZXZpY2UtPmZkLCAmZXhlY2J1Zik7Cj4gKwlnZW1fY2xvc2UoZGV2aWNlLT5mZCwgb2JqWzJd LmhhbmRsZSk7Cj4gKwo+ICsJZ2VtX3N5bmMoZGV2aWNlLT5mZCwgb2JqWzBdLmhhbmRsZSk7Cj4g KwlnZW1fY2xvc2UoZGV2aWNlLT5mZCwgb2JqWzBdLmhhbmRsZSk7Cj4gKwo+ICsJcmV0dXJuIHRy dWU7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkICpkb3dubG9hZChjb25zdCBzdHJ1Y3QgZGV2aWNl ICpkZXZpY2UsCj4gKwkJICAgICAgY29uc3Qgc3RydWN0IGJ1ZmZlciAqYnVmZmVyLAo+ICsJCSAg ICAgIGVudW0gbW9kZSBtb2RlKQo+ICt7Cj4gKwl2b2lkICpsaW5lYXIsICpzcmM7Cj4gKwo+ICsJ aWd0X2Fzc2VydChwb3NpeF9tZW1hbGlnbigmbGluZWFyLCA0MDk2LCBidWZmZXItPnNpemUpID09 IDApOwo+ICsKPiArCXN3aXRjaCAobW9kZSkgewo+ICsJY2FzZSBDUFU6Cj4gKwkJaWYgKGJ1ZmZl ci0+dGlsaW5nKSB7Cj4gKwkJCWlmIChibGl0X3RvX2xpbmVhcihkZXZpY2UsIGJ1ZmZlciwgbGlu ZWFyKSkKPiArCQkJCXJldHVybiBsaW5lYXI7Cj4gKwo+ICsJCQltb2RlID0gR1RUOwo+ICsJCX0K PiArCQlicmVhazsKPiArCj4gKwljYXNlIFdDOgo+ICsJCWlmICghZ2VtX21tYXBfX2hhc193Yyhk ZXZpY2UtPmZkKSB8fCBidWZmZXItPnRpbGluZykKPiArCQkJbW9kZSA9IEdUVDsKPiArCQlicmVh azsKPiArCj4gKwljYXNlIFBSVzoKPiArCQlpZiAoYnVmZmVyLT50aWxpbmcpCj4gKwkJCW1vZGUg PSBHVFQ7Cj4gKwkJYnJlYWs7Cj4gKwo+ICsJY2FzZSBHVFQ6Cj4gKwkJYnJlYWs7Cj4gKwl9Cj4g Kwo+ICsJc3dpdGNoIChtb2RlKSB7Cj4gKwljYXNlIENQVToKPiArCQlzcmMgPSBnZW1fbW1hcF9f Y3B1KGRldmljZS0+ZmQsIGJ1ZmZlci0+aGFuZGxlLAo+ICsJCQkJICAgIDAsIGJ1ZmZlci0+c2l6 ZSwKPiArCQkJCSAgICBQUk9UX1JFQUQpOwo+ICsKPiArCQlnZW1fc2V0X2RvbWFpbihkZXZpY2Ut PmZkLCBidWZmZXItPmhhbmRsZSwKPiArCQkJICAgICAgIEk5MTVfR0VNX0RPTUFJTl9DUFUsIDAp Owo+ICsJCWlndF9tZW1jcHlfZnJvbV93YyhsaW5lYXIsIHNyYywgYnVmZmVyLT5zaXplKTsKPiAr CQltdW5tYXAoc3JjLCBidWZmZXItPnNpemUpOwo+ICsJCWJyZWFrOwo+ICsKPiArCWNhc2UgV0M6 Cj4gKwkJc3JjID0gZ2VtX21tYXBfX3djKGRldmljZS0+ZmQsIGJ1ZmZlci0+aGFuZGxlLAo+ICsJ CQkJICAgMCwgYnVmZmVyLT5zaXplLAo+ICsJCQkJICAgUFJPVF9SRUFEKTsKPiArCj4gKwkJZ2Vt X3NldF9kb21haW4oZGV2aWNlLT5mZCwgYnVmZmVyLT5oYW5kbGUsCj4gKwkJCSAgICAgICBJOTE1 X0dFTV9ET01BSU5fV0MsIDApOwo+ICsJCWlndF9tZW1jcHlfZnJvbV93YyhsaW5lYXIsIHNyYywg YnVmZmVyLT5zaXplKTsKPiArCQltdW5tYXAoc3JjLCBidWZmZXItPnNpemUpOwo+ICsJCWJyZWFr Owo+ICsKPiArCWNhc2UgR1RUOgo+ICsJCXNyYyA9IGdlbV9tbWFwX19ndHQoZGV2aWNlLT5mZCwg YnVmZmVyLT5oYW5kbGUsCj4gKwkJCQkgICBidWZmZXItPnNpemUsCj4gKwkJCQkgICBQUk9UX1JF QUQpOwo+ICsKPiArCQlnZW1fc2V0X2RvbWFpbihkZXZpY2UtPmZkLCBidWZmZXItPmhhbmRsZSwK PiArCQkJICAgICAgIEk5MTVfR0VNX0RPTUFJTl9HVFQsIDApOwo+ICsJCWlndF9tZW1jcHlfZnJv bV93YyhsaW5lYXIsIHNyYywgYnVmZmVyLT5zaXplKTsKPiArCQltdW5tYXAoc3JjLCBidWZmZXIt PnNpemUpOwo+ICsJCWJyZWFrOwo+ICsKPiArCWNhc2UgUFJXOgo+ICsJCWdlbV9yZWFkKGRldmlj ZS0+ZmQsIGJ1ZmZlci0+aGFuZGxlLCAwLCBsaW5lYXIsIGJ1ZmZlci0+c2l6ZSk7Cj4gKwkJYnJl YWs7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIGxpbmVhcjsKPiArfQo+ICsKPiArc3RhdGljIGJvb2wg YnVmZmVyX2NoZWNrKGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldmljZSwKPiArCQkJIGNvbnN0IHN0 cnVjdCBidWZmZXIgKmJ1ZmZlciwKPiArCQkJIGVudW0gbW9kZSBtb2RlKQo+ICt7Cj4gKwl1bnNp Z25lZCBpbnQgbnVtX2Vycm9ycyA9IDA7Cj4gKwl1aW50MzJfdCAqbGluZWFyOwo+ICsKPiArCWxp bmVhciA9IGRvd25sb2FkKGRldmljZSwgYnVmZmVyLCBtb2RlKTsKPiArCWlndF9hc3NlcnQobGlu ZWFyKTsKPiArCj4gKwlmb3IgKGludCB5ID0gMDsgeSA8IGJ1ZmZlci0+aGVpZ2h0OyB5KyspIHsK PiArCQljb25zdCB1aW50MzJfdCAqbW9kZWwgPSBidWZmZXItPm1vZGVsICsgeSAqIGJ1ZmZlci0+ d2lkdGg7Cj4gKwkJY29uc3QgdWludDMyX3QgKnJvdyA9Cj4gKwkJCWxpbmVhciArIHkgKiBidWZm ZXItPnN0cmlkZSAvIHNpemVvZih1aW50MzJfdCk7Cj4gKwo+ICsJCWlmICghbWVtY21wKG1vZGVs LCByb3csIGJ1ZmZlci0+d2lkdGggKiBzaXplb2YodWludDMyX3QpKSkKPiArCQkJY29udGludWU7 Cj4gKwo+ICsJCWZvciAoaW50IHggPSAwOyB4IDwgYnVmZmVyLT53aWR0aDsgeCsrKSB7Cj4gKwkJ CWlmIChyb3dbeF0gIT0gbW9kZWxbeF0gJiYgbnVtX2Vycm9ycysrIDwgNSkgewo+ICsJCQkJaWd0 X3dhcm4oImJ1ZmZlciBoYW5kbGU9JWQgbWlzbWF0Y2ggYXQgKCVkLCAlZCk6IGV4cGVjdGVkICUw OHgsIGZvdW5kICUwOHhcbiIsCj4gKwkJCQkJIGJ1ZmZlci0+aGFuZGxlLAo+ICsJCQkJCSB4LCB5 LCBtb2RlbFt4XSwgcm93W3hdKTsKPiArCQkJfQo+ICsJCX0KPiArCX0KPiArCj4gKwlmcmVlKGxp bmVhcik7Cj4gKwo+ICsJcmV0dXJuIG51bV9lcnJvcnMgPT0gMDsKPiArfQo+ICsKPiArc3RhdGlj IHZvaWQgYnVmZmVyX2ZyZWUoY29uc3Qgc3RydWN0IGRldmljZSAqZGV2aWNlLCBzdHJ1Y3QgYnVm ZmVyICpidWZmZXIpCj4gK3sKPiArCWlndF9hc3NlcnQoYnVmZmVyX2NoZWNrKGRldmljZSwgYnVm ZmVyLCBHVFQpKTsKPiArCWdlbV9jbG9zZShkZXZpY2UtPmZkLCBidWZmZXItPmhhbmRsZSk7Cj4g KwlmcmVlKGJ1ZmZlcik7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIG1lbWNweV9ibHQoY29uc3Qg dm9pZCAqc3JjLCB2b2lkICpkc3QsCj4gKwkJICAgICAgIHVpbnQzMl90IHNyY19zdHJpZGUsIHVp bnQzMl90IGRzdF9zdHJpZGUsCj4gKwkJICAgICAgIHVpbnQxNl90IHNyY194LCB1aW50MTZfdCBz cmNfeSwKPiArCQkgICAgICAgdWludDE2X3QgZHN0X3gsIHVpbnQxNl90IGRzdF95LAo+ICsJCSAg ICAgICB1aW50MTZfdCB3aWR0aCwgdWludDE2X3QgaGVpZ2h0KQo+ICt7Cj4gKwljb25zdCB1aW50 OF90ICpzcmNfYnl0ZXM7Cj4gKwl1aW50OF90ICpkc3RfYnl0ZXM7Cj4gKwlpbnQgYnl0ZV93aWR0 aDsKPiArCj4gKwlzcmNfYnl0ZXMgPSAoY29uc3QgdWludDhfdCAqKXNyYyArIHNyY19zdHJpZGUg KiBzcmNfeSArIHNyY194ICogNDsKPiArCWRzdF9ieXRlcyA9ICh1aW50OF90ICopZHN0ICsgZHN0 X3N0cmlkZSAqIGRzdF95ICsgZHN0X3ggKiA0Owo+ICsKPiArCWJ5dGVfd2lkdGggPSB3aWR0aCAq IDQ7Cj4gKwlpZiAoYnl0ZV93aWR0aCA9PSBzcmNfc3RyaWRlICYmIGJ5dGVfd2lkdGggPT0gZHN0 X3N0cmlkZSkgewo+ICsJCWJ5dGVfd2lkdGggKj0gaGVpZ2h0Owo+ICsJCWhlaWdodCA9IDE7Cj4g Kwl9Cj4gKwo+ICsJc3dpdGNoIChieXRlX3dpZHRoKSB7Cj4gKwljYXNlIDQ6Cj4gKwkJZG8gewo+ ICsJCQkqKHVpbnQzMl90ICopZHN0X2J5dGVzID0gKihjb25zdCB1aW50MzJfdCAqKXNyY19ieXRl czsKPiArCQkJc3JjX2J5dGVzICs9IHNyY19zdHJpZGU7Cj4gKwkJCWRzdF9ieXRlcyArPSBkc3Rf c3RyaWRlOwo+ICsJCX0gd2hpbGUgKC0taGVpZ2h0KTsKPiArCQlicmVhazsKPiArCj4gKwljYXNl IDg6Cj4gKwkJZG8gewo+ICsJCQkqKHVpbnQ2NF90ICopZHN0X2J5dGVzID0gKihjb25zdCB1aW50 NjRfdCAqKXNyY19ieXRlczsKPiArCQkJc3JjX2J5dGVzICs9IHNyY19zdHJpZGU7Cj4gKwkJCWRz dF9ieXRlcyArPSBkc3Rfc3RyaWRlOwo+ICsJCX0gd2hpbGUgKC0taGVpZ2h0KTsKPiArCQlicmVh azsKPiArCWNhc2UgMTY6Cj4gKwkJZG8gewo+ICsJCQkoKHVpbnQ2NF90ICopZHN0X2J5dGVzKVsw XSA9ICgoY29uc3QgdWludDY0X3QgKilzcmNfYnl0ZXMpWzBdOwo+ICsJCQkoKHVpbnQ2NF90ICop ZHN0X2J5dGVzKVsxXSA9ICgoY29uc3QgdWludDY0X3QgKilzcmNfYnl0ZXMpWzFdOwo+ICsJCQlz cmNfYnl0ZXMgKz0gc3JjX3N0cmlkZTsKPiArCQkJZHN0X2J5dGVzICs9IGRzdF9zdHJpZGU7Cj4g KwkJfSB3aGlsZSAoLS1oZWlnaHQpOwo+ICsJCWJyZWFrOwo+ICsKPiArCWRlZmF1bHQ6Cj4gKwkJ ZG8gewo+ICsJCQltZW1jcHkoZHN0X2J5dGVzLCBzcmNfYnl0ZXMsIGJ5dGVfd2lkdGgpOwo+ICsJ CQlzcmNfYnl0ZXMgKz0gc3JjX3N0cmlkZTsKPiArCQkJZHN0X2J5dGVzICs9IGRzdF9zdHJpZGU7 Cj4gKwkJfSB3aGlsZSAoLS1oZWlnaHQpOwo+ICsJCWJyZWFrOwo+ICsJfQo+ICt9Cj4gKwo+ICtz dGF0aWMgdm9pZAo+ICtibGl0KGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldmljZSwKPiArICAgICBz dHJ1Y3QgYnVmZmVyICpzcmMsIHVpbnQxNl90IHNyY194LCB1aW50MTZfdCBzcmNfeSwKPiArICAg ICBzdHJ1Y3QgYnVmZmVyICpkc3QsIHVpbnQxNl90IGRzdF94LCB1aW50MTZfdCBkc3RfeSwKPiAr ICAgICB1aW50MTZfdCB3aWR0aCwgdWludDE2X3QgaGVpZ2h0KQo+ICsKPiArewo+ICsJc3RydWN0 IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgb2JqWzNdOwo+ICsJc3RydWN0IGRybV9pOTE1X2dl bV9yZWxvY2F0aW9uX2VudHJ5IHJlbG9jWzJdOwo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9leGVj YnVmZmVyMiBleGVjYnVmOwo+ICsJY29uc3QgYm9vbCBoYXNfNjRiX3JlbG9jID0gZGV2aWNlLT5n ZW4gPj0gODsKPiArCXVpbnQzMl90ICpiYXRjaDsKPiArCXVpbnQzMl90IHBpdGNoOwo+ICsJaW50 IGkgPSAwOwo+ICsKPiArCWlmIChzcmNfeCA8IDApIHsKPiArCQl3aWR0aCArPSBzcmNfeDsKPiAr CQlkc3RfeCAtPSBzcmNfeDsKPiArCQlzcmNfeCAgPSAwOwo+ICsJfQo+ICsJaWYgKHNyY195IDwg MCkgewo+ICsJCWhlaWdodCArPSBzcmNfeTsKPiArCQlkc3RfeSAgLT0gc3JjX3k7Cj4gKwkJc3Jj X3kgICA9IDA7Cj4gKwl9Cj4gKwo+ICsJaWYgKGRzdF94IDwgMCkgewo+ICsJCXdpZHRoICs9IGRz dF94Owo+ICsJCXNyY194IC09IGRzdF94Owo+ICsJCWRzdF94ICA9IDA7Cj4gKwl9Cj4gKwlpZiAo ZHN0X3kgPCAwKSB7Cj4gKwkJaGVpZ2h0ICs9IGRzdF95Owo+ICsJCXNyY195ICAtPSBkc3RfeTsK PiArCQlkc3RfeSAgID0gMDsKPiArCX0KPiArCj4gKwlpZiAoc3JjX3ggKyB3aWR0aCA+IHNyYy0+ d2lkdGgpCj4gKwkJd2lkdGggPSBzcmMtPndpZHRoIC0gc3JjX3g7Cj4gKwlpZiAoZHN0X3ggKyB3 aWR0aCA+IGRzdC0+d2lkdGgpCj4gKwkJd2lkdGggPSBkc3QtPndpZHRoIC0gZHN0X3g7Cj4gKwo+ ICsJaWYgKHNyY195ICsgaGVpZ2h0ID4gc3JjLT5oZWlnaHQpCj4gKwkJaGVpZ2h0ID0gc3JjLT5o ZWlnaHQgLSBzcmNfeTsKPiArCWlmIChkc3RfeSArIGhlaWdodCA+IGRzdC0+aGVpZ2h0KQo+ICsJ CWhlaWdodCA9IGRzdC0+aGVpZ2h0IC0gZHN0X3k7Cj4gKwo+ICsJaWYgKGRzdC0+Y2FjaGluZykg ewo+ICsJCWlndF9hc3NlcnQoZGV2aWNlLT5nZW4gPj0gMyk7Cj4gKwkJaWd0X2Fzc2VydChkZXZp Y2UtPmxsYyB8fCAhc3JjLT5jYWNoaW5nKTsKPiArCX0KPiArCj4gKwltZW1zZXQoJmV4ZWNidWYs IDAsIHNpemVvZihleGVjYnVmKSk7Cj4gKwlleGVjYnVmLmJ1ZmZlcnNfcHRyID0gdG9fdXNlcl9w b2ludGVyKG9iaik7Cj4gKwlleGVjYnVmLmJ1ZmZlcl9jb3VudCA9IEFSUkFZX1NJWkUob2JqKTsK PiArCWlmIChkZXZpY2UtPmdlbiA+PSA2KQo+ICsJCWV4ZWNidWYuZmxhZ3MgPSBJOTE1X0VYRUNf QkxUOwo+ICsKPiArCW1lbXNldChvYmosIDAsIHNpemVvZihvYmopKTsKPiArCW9ialswXS5oYW5k bGUgPSBkc3QtPmhhbmRsZTsKPiArCW9ialswXS5vZmZzZXQgPSBkc3QtPmd0dF9vZmZzZXQ7Cj4g KwlpZiAoZHN0LT50aWxpbmcpCj4gKwkJb2JqWzBdLmZsYWdzID0gRVhFQ19PQkpFQ1RfTkVFRFNf RkVOQ0U7Cj4gKwo+ICsJb2JqWzFdLmhhbmRsZSA9IHNyYy0+aGFuZGxlOwo+ICsJb2JqWzFdLm9m ZnNldCA9IHNyYy0+Z3R0X29mZnNldDsKPiArCWlmIChzcmMtPnRpbGluZykKPiArCQlvYmpbMV0u ZmxhZ3MgPSBFWEVDX09CSkVDVF9ORUVEU19GRU5DRTsKPiArCj4gKwltZW1zZXQocmVsb2MsIDAs IHNpemVvZihyZWxvYykpOwo+ICsJb2JqWzJdLmhhbmRsZSA9IGdlbV9jcmVhdGUoZGV2aWNlLT5m ZCwgNDA5Nik7Cj4gKwlvYmpbMl0ucmVsb2NzX3B0ciA9IHRvX3VzZXJfcG9pbnRlcihyZWxvYyk7 Cj4gKwlvYmpbMl0ucmVsb2NhdGlvbl9jb3VudCA9IEFSUkFZX1NJWkUocmVsb2MpOwo+ICsJYmF0 Y2ggPSBnZW1fbW1hcF9fY3B1KGRldmljZS0+ZmQsIG9ialsyXS5oYW5kbGUsIDAsIDQwOTYsIFBS T1RfV1JJVEUpOwo+ICsKPiArCWlmICgoc3JjLT50aWxpbmcgfCBkc3QtPnRpbGluZykgPj0gSTkx NV9USUxJTkdfWSkgewo+ICsJCXVuc2lnbmVkIGludCBtYXNrOwo+ICsKPiArCQliYXRjaFtpKytd ID0gTUlfTE9BRF9SRUdJU1RFUl9JTU07Cj4gKwkJYmF0Y2hbaSsrXSA9IEJDU19TV0NUUkw7Cj4g Kwo+ICsJCW1hc2sgPSAoQkNTX1NSQ19ZIHwgQkNTX0RTVF9ZKSA8PCAxNjsKPiArCQlpZiAoc3Jj LT50aWxpbmcgPT0gSTkxNV9USUxJTkdfWSkKPiArCQkJbWFzayB8PSBCQ1NfU1JDX1k7Cj4gKwkJ aWYgKGRzdC0+dGlsaW5nID09IEk5MTVfVElMSU5HX1kpCj4gKwkJCW1hc2sgfD0gQkNTX0RTVF9Z Owo+ICsJCWJhdGNoW2krK10gPSBtYXNrOwo+ICsJfQo+ICsKPiArCWJhdGNoW2ldID0gKFhZX1NS Q19DT1BZX0JMVF9DTUQgfAo+ICsJCSAgICBYWV9TUkNfQ09QWV9CTFRfV1JJVEVfQUxQSEEgfAo+ ICsJCSAgICBYWV9TUkNfQ09QWV9CTFRfV1JJVEVfUkdCKTsKPiArCWlmIChkZXZpY2UtPmdlbiA+ PSA0ICYmIHNyYy0+dGlsaW5nKQo+ICsJCWJhdGNoW2ldIHw9IFhZX1NSQ19DT1BZX0JMVF9TUkNf VElMRUQ7Cj4gKwlpZiAoZGV2aWNlLT5nZW4gPj0gNCAmJiBkc3QtPnRpbGluZykKPiArCQliYXRj aFtpXSB8PSBYWV9TUkNfQ09QWV9CTFRfRFNUX1RJTEVEOwo+ICsJYmF0Y2hbaSsrXSB8PSA2ICsg MiAqIGhhc182NGJfcmVsb2M7Cj4gKwo+ICsJcGl0Y2ggPSBkc3QtPnN0cmlkZTsKPiArCWlmIChk ZXZpY2UtPmdlbiA+PSA0ICYmIGRzdC0+dGlsaW5nKQo+ICsJCXBpdGNoIC89IDQ7Cj4gKwliYXRj aFtpKytdID0gMyA8PCAyNCB8IDB4Y2MgPDwgMTYgfCBwaXRjaDsKPiArCj4gKwliYXRjaFtpKytd ID0gZHN0X3kgPDwgMTYgfCBkc3RfeDsKPiArCWJhdGNoW2krK10gPSAoaGVpZ2h0ICsgZHN0X3kp IDw8IDE2IHwgKHdpZHRoICsgZHN0X3gpOwo+ICsJcmVsb2NbMF0udGFyZ2V0X2hhbmRsZSA9IG9i alswXS5oYW5kbGU7Cj4gKwlyZWxvY1swXS5wcmVzdW1lZF9vZmZzZXQgPSBvYmpbMF0ub2Zmc2V0 Owo+ICsJcmVsb2NbMF0ub2Zmc2V0ID0gc2l6ZW9mKCpiYXRjaCkgKiBpOwo+ICsJcmVsb2NbMF0u cmVhZF9kb21haW5zID0gSTkxNV9HRU1fRE9NQUlOX1JFTkRFUjsKPiArCXJlbG9jWzBdLndyaXRl X2RvbWFpbiA9IEk5MTVfR0VNX0RPTUFJTl9SRU5ERVI7Cj4gKwliYXRjaFtpKytdID0gb2JqWzBd Lm9mZnNldDsKPiArCWlmIChoYXNfNjRiX3JlbG9jKQo+ICsJCWJhdGNoW2krK10gPSBvYmpbMF0u b2Zmc2V0ID4+IDMyOwo+ICsKPiArCWJhdGNoW2krK10gPSBzcmNfeSA8PCAxNiB8IHNyY194Owo+ ICsJcGl0Y2ggPSBzcmMtPnN0cmlkZTsKPiArCWlmIChkZXZpY2UtPmdlbiA+PSA0ICYmIHNyYy0+ dGlsaW5nKQo+ICsJCXBpdGNoIC89IDQ7Cj4gKwliYXRjaFtpKytdID0gcGl0Y2g7Cj4gKwlyZWxv Y1sxXS50YXJnZXRfaGFuZGxlID0gb2JqWzFdLmhhbmRsZTsKPiArCXJlbG9jWzFdLnByZXN1bWVk X29mZnNldCA9IG9ialsxXS5vZmZzZXQ7Cj4gKwlyZWxvY1sxXS5vZmZzZXQgPSBzaXplb2YoKmJh dGNoKSAqIGk7Cj4gKwlyZWxvY1sxXS5yZWFkX2RvbWFpbnMgPSBJOTE1X0dFTV9ET01BSU5fUkVO REVSOwo+ICsJYmF0Y2hbaSsrXSA9IG9ialsxXS5vZmZzZXQ7Cj4gKwlpZiAoaGFzXzY0Yl9yZWxv YykKPiArCQliYXRjaFtpKytdID0gb2JqWzFdLm9mZnNldCA+PiAzMjsKPiArCj4gKwlpZiAoKHNy Yy0+dGlsaW5nIHwgZHN0LT50aWxpbmcpID49IEk5MTVfVElMSU5HX1kpIHsKPiArCQlpZ3RfYXNz ZXJ0KGRldmljZS0+Z2VuID49IDYpOwo+ICsJCWJhdGNoW2krK10gPSBNSV9GTFVTSF9EVyB8IDI7 Cj4gKwkJYmF0Y2hbaSsrXSA9IDA7Cj4gKwkJYmF0Y2hbaSsrXSA9IDA7Cj4gKwkJYmF0Y2hbaSsr XSA9IDA7Cj4gKwo+ICsJCWJhdGNoW2krK10gPSBNSV9MT0FEX1JFR0lTVEVSX0lNTTsKPiArCQli YXRjaFtpKytdID0gQkNTX1NXQ1RSTDsKPiArCQliYXRjaFtpKytdID0gKEJDU19TUkNfWSB8IEJD U19EU1RfWSkgPDwgMTY7Cj4gKwl9Cj4gKwo+ICsJYmF0Y2hbaSsrXSA9IE1JX0JBVENIX0JVRkZF Ul9FTkQ7Cj4gKwltdW5tYXAoYmF0Y2gsIDQwOTYpOwo+ICsKPiArCWdlbV9leGVjYnVmKGRldmlj ZS0+ZmQsICZleGVjYnVmKTsKPiArCWdlbV9jbG9zZShkZXZpY2UtPmZkLCBvYmpbMl0uaGFuZGxl KTsKPiArCj4gKwlkc3QtPmd0dF9vZmZzZXQgPSBvYmpbMF0ub2Zmc2V0Owo+ICsJc3JjLT5ndHRf b2Zmc2V0ID0gb2JqWzFdLm9mZnNldDsKPiArCj4gKwltZW1jcHlfYmx0KHNyYy0+bW9kZWwsIGRz dC0+bW9kZWwsCj4gKwkJICAgNHUgKiBzcmMtPndpZHRoLCA0dSAqIGRzdC0+d2lkdGgsCj4gKwkJ ICAgc3JjX3gsIHNyY195LAo+ICsJCSAgIGRzdF94LCBkc3RfeSwKPiArCQkgICB3aWR0aCwgaGVp Z2h0KTsKPiArfQo+ICsKPiArZW51bSBzdGFydCB7Cj4gKwlaRVJPLAo+ICsJQUJPVkUsCj4gKwlC RUxPVwo+ICt9Owo+ICsKPiArc3RhdGljIGludCBzdGFydF9hdChpbnQgeCwgZW51bSBzdGFydCBz KQo+ICt7Cj4gKwlzd2l0Y2ggKHMpIHsKPiArCWRlZmF1bHQ6Cj4gKwljYXNlIFpFUk86Cj4gKwkJ cmV0dXJuIDA7Cj4gKwljYXNlIEFCT1ZFOgo+ICsJCXJldHVybiAxOwo+ICsJY2FzZSBCRUxPVzoK PiArCQlyZXR1cm4geCAtIDE7Cj4gKwl9Cj4gK30KPiArCj4gK2lndF9tYWluCj4gK3sKPiArCXN0 cnVjdCBkZXZpY2UgZGV2aWNlOwo+ICsKPiArCWlndF9maXh0dXJlIHsKPiArCQlkZXZpY2UuZmQg PSBkcm1fb3Blbl9kcml2ZXJfcmVuZGVyKERSSVZFUl9JTlRFTCk7Cj4gKwkJaWd0X3JlcXVpcmVf Z2VtKGRldmljZS5mZCk7Cj4gKwo+ICsJCWRldmljZS5wY2lpZCA9IGludGVsX2dldF9kcm1fZGV2 aWQoZGV2aWNlLmZkKTsKPiArCQlkZXZpY2UuZ2VuID0gaW50ZWxfZ2VuKGRldmljZS5wY2lpZCk7 Cj4gKwkJZGV2aWNlLmxsYyA9IGdlbV9oYXNfbGxjKGRldmljZS5mZCk7Cj4gKwl9Cj4gKwo+ICsJ aWd0X3N1YnRlc3QoImJhc2ljIikgewo+ICsJCXN0cnVjdCBidWZmZXIgKnNyYywgKmRzdDsKPiAr CQl1bnNpZ25lZCBpbnQgeCwgeTsKPiArCj4gKwkJZm9yICh1bnNpZ25lZCBpbnQgaGVpZ2h0ID0g MTsgaGVpZ2h0IDw9IDE2OyBoZWlnaHQgPDw9IDEpIHsKPiArCQkJZm9yICh1bnNpZ25lZCBpbnQg eTAgPSBaRVJPOyB5MCA8PSAoaGVpZ2h0ID4gMiA/IEJFTE9XIDogWkVSTyk7IHkwKyspIHsKPiAr CQkJCWZvciAodW5zaWduZWQgaW50IHdpZHRoID0gMTsgd2lkdGggPD0gNjQ7IHdpZHRoIDw8PSAx KSB7Cj4gKwkJCQkJZm9yICh1bnNpZ25lZCBpbnQgeDAgPSBaRVJPOyB4MCA8PSAod2lkdGggPiAy ID8gQkVMT1cgOiBaRVJPKTsgeDArKykgewo+ICsKPiArCQkJCQkJc3JjID0gYnVmZmVyX2NyZWF0 ZSgmZGV2aWNlLAo+ICsJCQkJCQkJCSAgICB3aWR0aCAqIDE2LCBoZWlnaHQgKiA0KTsKPiArCQkJ CQkJZHN0ID0gYnVmZmVyX2NyZWF0ZSgmZGV2aWNlLAo+ICsJCQkJCQkJCSAgICB3aWR0aCAqIDE2 LCBoZWlnaHQgKiA0KTsKPiArCj4gKwkJCQkJCXkgPSBzdGFydF9hdChoZWlnaHQsIHkwKTsKPiAr CQkJCQkJZm9yICh1bnNpZ25lZCBpbnQgc3JjX3RpbGluZyA9IEk5MTVfVElMSU5HX05PTkU7Cj4g KwkJCQkJCSAgICAgc3JjX3RpbGluZyA8PSAoZGV2aWNlLmdlbiA+PSA2ID8gSTkxNV9USUxJTkdf WSA6IEk5MTVfVElMSU5HX1gpOwo+ICsJCQkJCQkgICAgIHNyY190aWxpbmcrKykgewo+ICsJCQkJ CQkJYnVmZmVyX3NldF90aWxpbmcoJmRldmljZSwgc3JjLCBzcmNfdGlsaW5nKTsKPiArCj4gKwkJ CQkJCQl4ID0gc3RhcnRfYXQod2lkdGgsIHgwKTsKPiArCQkJCQkJCWZvciAodW5zaWduZWQgaW50 IGRzdF90aWxpbmcgPSBJOTE1X1RJTElOR19OT05FOwo+ICsJCQkJCQkJICAgICBkc3RfdGlsaW5n IDw9IChkZXZpY2UuZ2VuID49IDYgPyBJOTE1X1RJTElOR19ZIDogSTkxNV9USUxJTkdfWCk7Cj4g KwkJCQkJCQkgICAgIGRzdF90aWxpbmcrKykgewo+ICsJCQkJCQkJCWJ1ZmZlcl9zZXRfdGlsaW5n KCZkZXZpY2UsIGRzdCwgZHN0X3RpbGluZyk7Cj4gKwo+ICsJCQkJCQkJCWZvciAoZW51bSBtb2Rl IGRvd24gPSBDUFU7IGRvd24gPD0gV0M7IGRvd24rKykgewo+ICsJCQkJCQkJCQlpZ3RfZGVidWco IlRlc3Rpbmcgc3JjX3RpbGluZz0lZCwgZHN0X3RpbGluZz0lZCwgZG93bj0lZCBhdCAoJWQsICVk KSB4ICglZCwgJWQpXG4iLAo+ICsJCQkJCQkJCQkJICBzcmNfdGlsaW5nLAo+ICsJCQkJCQkJCQkJ ICBkc3RfdGlsaW5nLAo+ICsJCQkJCQkJCQkJICBkb3duLCB4LCB5LAo+ICsJCQkJCQkJCQkJICB3 aWR0aCwgaGVpZ2h0KTsKPiArCj4gKwkJCQkJCQkJCWlndF9hc3NlcnQoeCArIHdpZHRoIDw9IGRz dC0+d2lkdGgpOwo+ICsJCQkJCQkJCQlpZ3RfYXNzZXJ0KHkgKyBoZWlnaHQgPD0gZHN0LT5oZWln aHQpOwo+ICsKPiArCQkJCQkJCQkJYmxpdCgmZGV2aWNlLAo+ICsJCQkJCQkJCQkgICAgIHNyYywg eCwgeSwKPiArCQkJCQkJCQkJICAgICBkc3QsIHgsIHksCj4gKwkJCQkJCQkJCSAgICAgd2lkdGgs IGhlaWdodCk7Cj4gKwkJCQkJCQkJCWlndF9hc3NlcnQoYnVmZmVyX2NoZWNrKCZkZXZpY2UsIGRz dCwgZG93bikpOwo+ICsKPiArCQkJCQkJCQkJeCArPSB3aWR0aDsKPiArCQkJCQkJCQl9Cj4gKwkJ CQkJCQl9Cj4gKwo+ICsJCQkJCQkJeSArPSBoZWlnaHQ7Cj4gKwkJCQkJCX0KPiArCj4gKwkJCQkJ CWJ1ZmZlcl9mcmVlKCZkZXZpY2UsIGRzdCk7Cj4gKwkJCQkJCWJ1ZmZlcl9mcmVlKCZkZXZpY2Us IHNyYyk7Cj4gKwkJCQkJfQo+ICsJCQkJfQo+ICsJCQl9Cj4gKwkJfQo+ICsJfQo+ICt9Cj4gZGlm ZiAtLWdpdCBhL3Rlc3RzL21lc29uLmJ1aWxkIGIvdGVzdHMvbWVzb24uYnVpbGQKPiBpbmRleCAz ZjNlZWUyNzcuLjk4ZjJkYjU1NSAxMDA2NDQKPiAtLS0gYS90ZXN0cy9tZXNvbi5idWlsZAo+ICsr KyBiL3Rlc3RzL21lc29uLmJ1aWxkCj4gQEAgLTEwNiw2ICsxMDYsNyBAQCBpOTE1X3Byb2dzID0g Wwo+ICAJJ2dlbjNfcmVuZGVyX3RpbGVkeV9ibGl0cycsCj4gIAknZ2VtX2JhZF9yZWxvYycsCj4g IAknZ2VtX2Jhc2ljJywKPiArCSdnZW1fYmxpdHMnLAo+ICAJJ2dlbV9idXN5JywKPiAgCSdnZW1f Y2FjaGluZycsCj4gIAknZ2VtX2Nsb3NlJywKPiAtLSAKPiAyLjI0LjAKPgpDb2RlIGxvb2tzIGdv b2QsIGJ1dCBJIHRoaW5rIHRoYXQgVmFuc2hpZGhhciBLb25kYSBzaG91bGQgbG9vayBtb3JlIGNs b3NlbHkgYXQKZGV0YWlscy4KS2FzaWEKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p Z3QtZGV2