From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8803489165 for ; Tue, 9 Apr 2019 00:12:47 +0000 (UTC) Date: Mon, 8 Apr 2019 17:12:46 -0700 From: Vanshidhar Konda Message-ID: <20190409001246.GA35454@vrkonda-desk.ra.intel.com> References: <20190221192745.31178-1-antonio.argenziano@intel.com> <20190221192745.31178-5-antonio.argenziano@intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20190221192745.31178-5-antonio.argenziano@intel.com> Subject: Re: [igt-dev] [RFC 4/5] igt/i915: Require GTT mapping to be available when needed. 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: Antonio Argenziano Cc: igt-dev@lists.freedesktop.org, Matthew Auld List-ID: T24gVGh1LCBGZWIgMjEsIDIwMTkgYXQgMTE6Mjc6NDRBTSAtMDgwMCwgQW50b25pbyBBcmdlbnpp YW5vIHdyb3RlOgo+V2l0aCB0aGUgR1RUIGFwZXJ0dXJlIGJlY29taW5nIHVuYXZhaWxhYmxlIG9u IGNlcnRhaW4gcGxhdGZvcm1zLCB0ZXN0cwo+dGhhdCB0YXJnZXQgdGhhdCBtYXBwaW5nIG5lZWQg dG8gc2tpcCBpZiBzdWNoIG1hcHBpbmcgaXMgbm90IGF2YWlsYWJsZS4KPgo+Q2M6IEthdGFyenlu YSBEZWMgPGthdGFyenluYS5kZWNAaW50ZWwuY29tPgo+Q2M6IENocmlzIFdpbHNvbiA8Y2hyaXNA Y2hyaXMtd2lsc29uLmNvLnVrPgo+Q2M6IE1hdHRoZXcgQXVsZCA8bWF0dGhldy5hdWxkQGludGVs LmNvbT4KPlNpZ25lZC1vZmYtYnk6IEFudG9uaW8gQXJnZW56aWFubyA8YW50b25pby5hcmdlbnpp YW5vQGludGVsLmNvbT4KPi0tLQo+IGxpYi9pZ3RfZHVtbXlsb2FkLmMgICAgICAgICAgICAgICAg ICAgICB8ICA0ICsrKy0KPiBsaWIvaWd0X2ZiLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgNCArKystCj4gdGVzdHMvaTkxNS9nZW1fY29uY3VycmVudF9hbGwuYyAgICAgICAgIHwgIDEg Kwo+IHRlc3RzL2k5MTUvZ2VtX2N0eF9zc2V1LmMgICAgICAgICAgICAgICB8ICA0ICsrKy0KPiB0 ZXN0cy9pOTE1L2dlbV9leGVjX2Jhc2ljLmMgICAgICAgICAgICAgfCAgMSArCj4gdGVzdHMvaTkx NS9nZW1fZXhlY19mYXVsdGluZ19yZWxvYy5jICAgIHwgIDIgKysKPiB0ZXN0cy9pOTE1L2dlbV9l eGVjX2ZsdXNoLmMgICAgICAgICAgICAgfCAgNiArKysrKysKPiB0ZXN0cy9pOTE1L2dlbV9leGVj X3JlbG9jLmMgICAgICAgICAgICAgfCAgNyArKysrKysrCj4gdGVzdHMvaTkxNS9nZW1fZXhlY19z Y2hlZHVsZS5jICAgICAgICAgIHwgIDUgKysrKy0KPiB0ZXN0cy9pOTE1L2dlbV9mZW5jZV90aHJh c2guYyAgICAgICAgICAgfCAgNiArKysrKysKPiB0ZXN0cy9pOTE1L2dlbV9ndHRfY3B1X3RsYi5j ICAgICAgICAgICAgfCAgMSArCj4gdGVzdHMvaTkxNS9nZW1fZ3R0X2hvZy5jICAgICAgICAgICAg ICAgIHwgIDEgKwo+IHRlc3RzL2k5MTUvZ2VtX2d0dF9zcGVlZC5jICAgICAgICAgICAgICB8ICAx ICsKPiB0ZXN0cy9pOTE1L2dlbV9sYXJnZW9iamVjdC5jICAgICAgICAgICAgfCAgMiArKwo+IHRl c3RzL2k5MTUvZ2VtX21hZHZpc2UuYyAgICAgICAgICAgICAgICB8ICA0ICsrKysKPiB0ZXN0cy9p OTE1L2dlbV9tbWFwX2d0dC5jICAgICAgICAgICAgICAgfCAgNCArKystCj4gdGVzdHMvaTkxNS9n ZW1fbW1hcF9vZmZzZXRfZXhoYXVzdGlvbi5jIHwgIDIgKysKPiB0ZXN0cy9pOTE1L2dlbV9tbWFw X3djLmMgICAgICAgICAgICAgICAgfCAgMiArKwo+IHRlc3RzL2k5MTUvZ2VtX3BlcnNpc3RlbnRf cmVsb2NzLmMgICAgICB8ICAyICsrCj4gdGVzdHMvaTkxNS9nZW1fcHdyaXRlX3ByZWFkLmMgICAg ICAgICAgIHwgIDYgKysrKysrCj4gdGVzdHMvaTkxNS9nZW1fcmVsb2NfdnNfZ3B1LmMgICAgICAg ICAgIHwgMjEgKysrKysrKysrKysrLS0tLS0tLS0tCj4gdGVzdHMvaTkxNS9nZW1fcmVuZGVyX2Nv cHkuYyAgICAgICAgICAgIHwgIDIgKysKPiB0ZXN0cy9pOTE1L2dlbV9zZXRfdGlsaW5nX3ZzX2d0 dC5jICAgICAgfCAgMiArKwo+IHRlc3RzL2k5MTUvZ2VtX3NldF90aWxpbmdfdnNfcHdyaXRlLmMg ICB8ICAyICsrCj4gdGVzdHMvaTkxNS9nZW1fc2hyaW5rLmMgICAgICAgICAgICAgICAgIHwgMTQg KysrKysrKysrKystLS0KPiB0ZXN0cy9pOTE1L2dlbV9zdG9yZWR3X2xvb3AuYyAgICAgICAgICAg fCAgOSArKysrKysrKysKPiB0ZXN0cy9pOTE1L2dlbV9zdHJlYW1pbmdfd3JpdGVzLmMgICAgICAg fCAxNiArKysrKysrKysrKysrKy0tCj4gdGVzdHMvaTkxNS9nZW1fdGlsZWRfZmVuY2VfYmxpdHMu YyAgICAgIHwgIDEgKwo+IHRlc3RzL2k5MTUvZ2VtX3RpbGVkX3ByZWFkX2Jhc2ljLmMgICAgICB8 ICAxICsKPiB0ZXN0cy9pOTE1L2dlbV90aWxlZF9wcmVhZF9wd3JpdGUuYyAgICAgfCAgNCArKyst Cj4gdGVzdHMvaTkxNS9nZW1fdGlsZWRfc3dhcHBpbmcuYyAgICAgICAgIHwgIDIgKysKPiB0ZXN0 cy9pOTE1L2dlbV90aWxlZF93Yi5jICAgICAgICAgICAgICAgfCAgMiArKwo+IHRlc3RzL2k5MTUv Z2VtX3RpbGVkX3djLmMgICAgICAgICAgICAgICB8ICAxICsKPiB0ZXN0cy9pOTE1L2dlbV90aWxp bmdfbWF4X3N0cmlkZS5jICAgICAgfCAgMyArKy0KPiB0ZXN0cy9pOTE1L2dlbV91c2VycHRyX2Js aXRzLmMgICAgICAgICAgfCAxMCArKysrKysrKystCj4gdGVzdHMvaTkxNS9pOTE1X3BtX3JwbS5j ICAgICAgICAgICAgICAgIHwgIDUgKysrKysKPiB0ZXN0cy9pOTE1L2k5MTVfc3VzcGVuZC5jICAg ICAgICAgICAgICAgfCAgMiArKwo+IHRlc3RzL2ttc19kcmF3X2NyYy5jICAgICAgICAgICAgICAg ICAgICB8ICA4ICsrKysrKy0tCj4gdGVzdHMva21zX2ZlbmNlX3Bpbl9sZWFrLmMgICAgICAgICAg ICAgIHwgIDIgKysKPiB0ZXN0cy9rbXNfZnJvbnRidWZmZXJfdHJhY2tpbmcuYyAgICAgICAgfCAg MyArKysKPiB0ZXN0cy9rbXNfcHNyLmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNCArKysr Cj4gdGVzdHMvcHJpbWVfbW1hcC5jICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKysKPiB0ZXN0 cy9wcmltZV9tbWFwX2NvaGVyZW5jeS5jICAgICAgICAgICAgfCAgMSArCj4gdGVzdHMvcHJpbWVf dmdlbS5jICAgICAgICAgICAgICAgICAgICAgIHwgIDUgKysrKysKPiA0NCBmaWxlcyBjaGFuZ2Vk LCAxNjMgaW5zZXJ0aW9ucygrKSwgMjQgZGVsZXRpb25zKC0pCj4KPmRpZmYgLS1naXQgYS9saWIv aWd0X2R1bW15bG9hZC5jIGIvbGliL2lndF9kdW1teWxvYWQuYwo+aW5kZXggOTgyOTA2ZjIuLmE5 YzBmZmVmIDEwMDY0NAo+LS0tIGEvbGliL2lndF9kdW1teWxvYWQuYwo+KysrIGIvbGliL2lndF9k dW1teWxvYWQuYwo+QEAgLTExNiw5ICsxMTYsMTEgQEAgZW1pdF9yZWN1cnNpdmVfYmF0Y2goaWd0 X3NwaW5fdCAqc3BpbiwKPiAJb2JqW0JBVENIXS5oYW5kbGUgPSBnZW1fY3JlYXRlKGZkLCBCQVRD SF9TSVpFKTsKPiAJYmF0Y2ggPSBfX2dlbV9tbWFwX193YyhmZCwgb2JqW0JBVENIXS5oYW5kbGUs Cj4gCQkJICAgICAgIDAsIEJBVENIX1NJWkUsIFBST1RfV1JJVEUpOwo+LQlpZiAoIWJhdGNoKQo+ KwlpZiAoIWJhdGNoKSB7Cj4rCQlnZW1fcmVxdWlyZV9tbWFwX2d0dChmZCk7Cj4gCQliYXRjaCA9 IGdlbV9tbWFwX19ndHQoZmQsIG9ialtCQVRDSF0uaGFuZGxlLAo+IAkJCQkgICAgICAgCUJBVENI X1NJWkUsIFBST1RfV1JJVEUpOwo+Kwl9Cj4gCWdlbV9zZXRfZG9tYWluKGZkLCBvYmpbQkFUQ0hd LmhhbmRsZSwKPiAJCQlJOTE1X0dFTV9ET01BSU5fR1RULCBJOTE1X0dFTV9ET01BSU5fR1RUKTsK PiAJZXhlY2J1Zi0+YnVmZmVyX2NvdW50Kys7Cj5kaWZmIC0tZ2l0IGEvbGliL2lndF9mYi5jIGIv bGliL2lndF9mYi5jCj5pbmRleCA0NjJhZmVjMi4uNGI1NjFiYTIgMTAwNjQ0Cj4tLS0gYS9saWIv aWd0X2ZiLmMKPisrKyBiL2xpYi9pZ3RfZmIuYwo+QEAgLTE1NTksOSArMTU1OSwxMSBAQCBzdGF0 aWMgdm9pZCAqbWFwX2JvKGludCBmZCwgc3RydWN0IGlndF9mYiAqZmIpCj4gCWlmIChmYi0+aXNf ZHVtYikKPiAJCXB0ciA9IGttc3Rlc3RfZHVtYl9tYXBfYnVmZmVyKGZkLCBmYi0+Z2VtX2hhbmRs ZSwgZmItPnNpemUsCj4gCQkJCQkgICAgICBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFKTsKPi0JZWxz ZQo+KwllbHNlIHsKPisJCWdlbV9yZXF1aXJlX21tYXBfZ3R0KGZkKTsKPiAJCXB0ciA9IGdlbV9t bWFwX19ndHQoZmQsIGZiLT5nZW1faGFuZGxlLCBmYi0+c2l6ZSwKPiAJCQkJICAgIFBST1RfUkVB RCB8IFBST1RfV1JJVEUpOwo+Kwl9Cj4KPiAJcmV0dXJuIHB0cjsKPiB9Cj5kaWZmIC0tZ2l0IGEv dGVzdHMvaTkxNS9nZW1fY29uY3VycmVudF9hbGwuYyBiL3Rlc3RzL2k5MTUvZ2VtX2NvbmN1cnJl bnRfYWxsLmMKPmluZGV4IDYwNDkzNzJkLi4xYWI2MDhlZiAxMDA2NDQKPi0tLSBhL3Rlc3RzL2k5 MTUvZ2VtX2NvbmN1cnJlbnRfYWxsLmMKPisrKyBiL3Rlc3RzL2k5MTUvZ2VtX2NvbmN1cnJlbnRf YWxsLmMKPkBAIC0xNDIyLDYgKzE0MjIsNyBAQCBzdGF0aWMgdm9pZCBjcHVfcmVxdWlyZSh2b2lk KQo+Cj4gc3RhdGljIHZvaWQgZ3R0X3JlcXVpcmUodm9pZCkKPiB7Cj4rCWdlbV9yZXF1aXJlX21t YXBfZ3R0KGZkKTsKPiB9Cj4KPiBzdGF0aWMgdm9pZCBiY3NfcmVxdWlyZSh2b2lkKQo+ZGlmZiAt LWdpdCBhL3Rlc3RzL2k5MTUvZ2VtX2N0eF9zc2V1LmMgYi90ZXN0cy9pOTE1L2dlbV9jdHhfc3Nl dS5jCj5pbmRleCAzYWZhNWMxNS4uYmYxYjUwZDUgMTAwNjQ0Cj4tLS0gYS90ZXN0cy9pOTE1L2dl bV9jdHhfc3NldS5jCj4rKysgYi90ZXN0cy9pOTE1L2dlbV9jdHhfc3NldS5jCj5AQCAtNTI4LDgg KzUyOCwxMCBAQCBpZ3RfbWFpbgo+IAkJaWd0X3N1YnRlc3QoImludmFsaWQtc3NldSIpCj4gCQkJ dGVzdF9pbnZhbGlkX3NzZXUoZmQpOwo+Cj4tCQlpZ3Rfc3VidGVzdCgiZ2d0dC1hcmdzIikKPisJ CWlndF9zdWJ0ZXN0KCJnZ3R0LWFyZ3MiKSB7Cj4rCQkJZ2VtX3JlcXVpcmVfbW1hcF9ndHQoZmQp Owo+IAkJCXRlc3RfZ2d0dF9hcmdzKGZkKTsKPisJCX0KPgo+IAkJaWd0X3N1YnRlc3QoImVuZ2lu ZXMiKQo+IAkJCXRlc3RfZW5naW5lcyhmZCk7Cj5kaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9nZW1f ZXhlY19iYXNpYy5jIGIvdGVzdHMvaTkxNS9nZW1fZXhlY19iYXNpYy5jCj5pbmRleCBkY2I4Mzg2 NC4uODUzNzY2NWYgMTAwNjQ0Cj4tLS0gYS90ZXN0cy9pOTE1L2dlbV9leGVjX2Jhc2ljLmMKPisr KyBiL3Rlc3RzL2k5MTUvZ2VtX2V4ZWNfYmFzaWMuYwo+QEAgLTkzLDYgKzkzLDcgQEAgc3RhdGlj IHZvaWQgZ3R0KGludCBmZCwgdW5zaWduZWQgcmluZykKPiAJc3RydWN0IGRybV9pOTE1X2dlbV9l eGVjX29iamVjdDIgKmV4ZWM7Cj4gCXVpbnQzMl90IGhhbmRsZTsKPgo+KwlnZW1fcmVxdWlyZV9t bWFwX2d0dChmZCk7Cj4gCWdlbV9yZXF1aXJlX3JpbmcoZmQsIHJpbmcpOwo+Cj4gCWhhbmRsZSA9 IGdlbV9jcmVhdGUoZmQsIDQwOTYpOwo+ZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTUvZ2VtX2V4ZWNf ZmF1bHRpbmdfcmVsb2MuYyBiL3Rlc3RzL2k5MTUvZ2VtX2V4ZWNfZmF1bHRpbmdfcmVsb2MuYwo+ aW5kZXggNmIwNWU0M2YuLjlkYjgwZjU0IDEwMDY0NAo+LS0tIGEvdGVzdHMvaTkxNS9nZW1fZXhl Y19mYXVsdGluZ19yZWxvYy5jCj4rKysgYi90ZXN0cy9pOTE1L2dlbV9leGVjX2ZhdWx0aW5nX3Jl bG9jLmMKPkBAIC0xNzMsNiArMTczLDggQEAgc3RhdGljIHZvaWQgcnVuKGludCBvYmplY3Rfc2l6 ZSkKPgo+IAlmZCA9IGRybV9vcGVuX2RyaXZlcihEUklWRVJfSU5URUwpOwo+IAlpZ3RfcmVxdWly ZV9nZW0oZmQpOwo+KwlnZW1fcmVxdWlyZV9tbWFwX2d0dChmZCk7Cj4rCj4gCWRldmlkID0gaW50 ZWxfZ2V0X2RybV9kZXZpZChmZCk7Cj4gCWhhbmRsZSA9IGdlbV9jcmVhdGUoZmQsIDQwOTYpOwo+ IAlzcmMgPSBnZW1fY3JlYXRlKGZkLCBvYmplY3Rfc2l6ZSk7Cj5kaWZmIC0tZ2l0IGEvdGVzdHMv aTkxNS9nZW1fZXhlY19mbHVzaC5jIGIvdGVzdHMvaTkxNS9nZW1fZXhlY19mbHVzaC5jCj5pbmRl eCBmODIwYjJhOC4uNDI3NDliYzQgMTAwNjQ0Cj4tLS0gYS90ZXN0cy9pOTE1L2dlbV9leGVjX2Zs dXNoLmMKPisrKyBiL3Rlc3RzL2k5MTUvZ2VtX2V4ZWNfZmx1c2guYwo+QEAgLTc5LDYgKzc5LDkg QEAgc3RhdGljIHZvaWQgcnVuKGludCBmZCwgdW5zaWduZWQgcmluZywgaW50IG5jaGlsZCwgaW50 IHRpbWVvdXQsCj4gewo+IAljb25zdCBpbnQgZ2VuID0gaW50ZWxfZ2VuKGludGVsX2dldF9kcm1f ZGV2aWQoZmQpKTsKPgo+KwlpZiAoKGZsYWdzICYgQ09IRVJFTlQpICYmICEoZmxhZ3MgJiBXQykp Cj4rCQlnZW1fcmVxdWlyZV9tbWFwX2d0dChmZCk7Cj4rCj4gCS8qIFRoZSBjcnV4IG9mIHRoaXMg dGVzdGluZyBpcyB3aGV0aGVyIHdyaXRlcyBieSB0aGUgR1BVIGFyZSBjb2hlcmVudAo+IAkgKiBm cm9tIHRoZSBDUFUuCj4gCSAqCgpnZW1fcmVxdWlyZV9tbWFwX2d0dChmZCkgaXMgYWxzbyBuZWVk ZWQgaW4gdGhlIGJhdGNoKCkgZnVuY3Rpb24gd2hlbiBpdAppcyBjYWxsZWQgd2l0aCBCQVRDSF9H VFQgbW9kZS4KCj5AQCAtNTg2LDYgKzU4OSw3IEBAIGlndF9tYWluCj4gCQlmZCA9IGRybV9vcGVu X2RyaXZlcihEUklWRVJfSU5URUwpOwo+IAkJaWd0X3JlcXVpcmVfZ2VtKGZkKTsKPiAJCWdlbV9y ZXF1aXJlX21tYXBfd2MoZmQpOwo+KwkJZ2VtX3JlcXVpcmVfbW1hcF9ndHQoZmQpOwo+IAkJaWd0 X3JlcXVpcmUoZ2VtX2Nhbl9zdG9yZV9kd29yZChmZCwgMCkpOwo+IAkJaWd0X2luZm8oIkhhcyBM TEM/ICVzXG4iLCB5ZXNubyhnZW1faGFzX2xsYyhmZCkpKTsKPgo+QEAgLTYxNCwxMSArNjE4LDEz IEBAIGlndF9tYWluCj4gCQkJCSAgICAgIGItPm5hbWUsCj4gCQkJCSAgICAgIGUtPm5hbWUpCj4g CQkJCWJhdGNoKGZkLCByaW5nLCBuY3B1cywgdGltZW91dCwgYi0+bW9kZSwgMCk7Cj4rCj4gCQkJ aWd0X3N1YnRlc3RfZigiJXNiYXRjaC0lcy0lcy13YiIsCj4gCQkJCSAgICAgIGIgPT0gYmF0Y2hl cyAmJiBlLT5leGVjX2lkID09IDAgPyAiYmFzaWMtIiA6ICIiLAo+IAkJCQkgICAgICBiLT5uYW1l LAo+IAkJCQkgICAgICBlLT5uYW1lKQo+IAkJCQliYXRjaChmZCwgcmluZywgbmNwdXMsIHRpbWVv dXQsIGItPm1vZGUsIENPSEVSRU5UKTsKPisKPiAJCQlpZ3Rfc3VidGVzdF9mKCIlc2JhdGNoLSVz LSVzLWNtZCIsCj4gCQkJCSAgICAgIGIgPT0gYmF0Y2hlcyAmJiBlLT5leGVjX2lkID09IDAgPyAi YmFzaWMtIiA6ICIiLAo+IAkJCQkgICAgICBiLT5uYW1lLAo+ZGlmZiAtLWdpdCBhL3Rlc3RzL2k5 MTUvZ2VtX2V4ZWNfcmVsb2MuYyBiL3Rlc3RzL2k5MTUvZ2VtX2V4ZWNfcmVsb2MuYwo+aW5kZXgg ODM3ZjYwYTYuLmJiNGVlYzMxIDEwMDY0NAo+LS0tIGEvdGVzdHMvaTkxNS9nZW1fZXhlY19yZWxv Yy5jCj4rKysgYi90ZXN0cy9pOTE1L2dlbV9leGVjX3JlbG9jLmMKPkBAIC0xMTUsNiArMTE1LDkg QEAgc3RhdGljIHZvaWQgZnJvbV9tbWFwKGludCBmZCwgdWludDY0X3Qgc2l6ZSwgZW51bSBtb2Rl IG1vZGUpCj4gCSAqLwo+IAlpbnRlbF9yZXF1aXJlX21lbW9yeSgyLCBzaXplLCBDSEVDS19SQU0p Owo+Cj4rCWlmICgobW9kZSAmIH5STykgPT0gR1RUKQo+KwkJZ2VtX3JlcXVpcmVfbW1hcF9ndHQo ZmQpOwo+Kwo+IAltZW1zZXQoJm9iaiwgMCwgc2l6ZW9mKG9iaikpOwo+IAlvYmouaGFuZGxlID0g Z2VtX2NyZWF0ZShmZCwgNDA5Nik7Cj4gCWdlbV93cml0ZShmZCwgb2JqLmhhbmRsZSwgMCwgJmJi ZSwgc2l6ZW9mKGJiZSkpOwo+QEAgLTM0Miw2ICszNDUsOSBAQCBzdGF0aWMgdm9pZCBiYXNpY19y ZWxvYyhpbnQgZmQsIHVuc2lnbmVkIGJlZm9yZSwgdW5zaWduZWQgYWZ0ZXIsIHVuc2lnbmVkIGZs YWdzKQo+IAljb25zdCB1aW50MzJfdCBiYmUgPSBNSV9CQVRDSF9CVUZGRVJfRU5EOwo+IAl1bnNp Z25lZCBpbnQgcmVsb2Nfb2Zmc2V0Owo+Cj4rCWlmICgoYmVmb3JlIHwgYWZ0ZXIpICYgSTkxNV9H RU1fRE9NQUlOX0dUVCkKPisJCWdlbV9yZXF1aXJlX21tYXBfZ3R0KGZkKTsKPisKPiAJbWVtc2V0 KCZvYmosIDAsIHNpemVvZihvYmopKTsKPiAJb2JqLmhhbmRsZSA9IGdlbV9jcmVhdGUoZmQsIE9C SlNaKTsKPiAJb2JqLnJlbG9jc19wdHIgPSB0b191c2VyX3BvaW50ZXIoJnJlbG9jKTsKPkBAIC03 MTEsNiArNzE3LDcgQEAgaWd0X21haW4KPiAJCQkJCSAgICAgIGYtPm5hbWUpIHsKPiAJCQkJCWlm ICgobS0+YmVmb3JlIHwgbS0+YWZ0ZXIpICYgSTkxNV9HRU1fRE9NQUlOX1dDKQo+IAkJCQkJCWln dF9yZXF1aXJlKGdlbV9tbWFwX19oYXNfd2MoZmQpKTsKPisKPiAJCQkJCWJhc2ljX3JlbG9jKGZk LCBtLT5iZWZvcmUsIG0tPmFmdGVyLCBmLT5mbGFncyk7Cj4gCQkJCX0KPiAJCQl9Cj5kaWZmIC0t Z2l0IGEvdGVzdHMvaTkxNS9nZW1fZXhlY19zY2hlZHVsZS5jIGIvdGVzdHMvaTkxNS9nZW1fZXhl Y19zY2hlZHVsZS5jCj5pbmRleCBhOTM4MzAwMC4uMTVjODQ0MGYgMTAwNjQ0Cj4tLS0gYS90ZXN0 cy9pOTE1L2dlbV9leGVjX3NjaGVkdWxlLmMKPisrKyBiL3Rlc3RzL2k5MTUvZ2VtX2V4ZWNfc2No ZWR1bGUuYwo+QEAgLTEyMzYsNiArMTIzNiw3IEBAIGlndF9tYWluCj4gCQkJaWd0X3N1YnRlc3Rf ZigiaW5kZXBlbmRlbnQtJXMiLCBlLT5uYW1lKSB7Cj4gCQkJCWlndF9yZXF1aXJlKGdlbV9yaW5n X2hhc19waHlzaWNhbF9lbmdpbmUoZmQsIGUtPmV4ZWNfaWQgfCBlLT5mbGFncykpOwo+IAkJCQlp Z3RfcmVxdWlyZShnZW1fY2FuX3N0b3JlX2R3b3JkKGZkLCBlLT5leGVjX2lkIHwgZS0+ZmxhZ3Mp KTsKPisJCQkJZ2VtX3JlcXVpcmVfbW1hcF9ndHQoZmQpOwo+IAkJCQlpbmRlcGVuZGVudChmZCwg ZS0+ZXhlY19pZCB8IGUtPmZsYWdzKTsKPiAJCQl9Cj4gCQl9Cj5AQCAtMTMyOCw4ICsxMzI5LDEw IEBAIGlndF9tYWluCj4gCQkJCWlndF9zdWJ0ZXN0X2YoIndpZGUtJXMiLCBlLT5uYW1lKQo+IAkJ CQkJd2lkZShmZCwgZS0+ZXhlY19pZCB8IGUtPmZsYWdzKTsKPgo+LQkJCQlpZ3Rfc3VidGVzdF9m KCJyZW9yZGVyLXdpZGUtJXMiLCBlLT5uYW1lKQo+KwkJCQlpZ3Rfc3VidGVzdF9mKCJyZW9yZGVy LXdpZGUtJXMiLCBlLT5uYW1lKSB7Cj4rCQkJCQlnZW1fcmVxdWlyZV9tbWFwX2d0dChmZCk7Cj4g CQkJCQlyZW9yZGVyX3dpZGUoZmQsIGUtPmV4ZWNfaWQgfCBlLT5mbGFncyk7Cj4rCQkJCX0KPgo+ IAkJCQlpZ3Rfc3VidGVzdF9mKCJzbW9rZXRlc3QtJXMiLCBlLT5uYW1lKQo+IAkJCQkJc21va2V0 ZXN0KGZkLCBlLT5leGVjX2lkIHwgZS0+ZmxhZ3MsIDUpOwo+ZGlmZiAtLWdpdCBhL3Rlc3RzL2k5 MTUvZ2VtX2ZlbmNlX3RocmFzaC5jIGIvdGVzdHMvaTkxNS9nZW1fZmVuY2VfdGhyYXNoLmMKPmlu ZGV4IDJkN2ZiMmZmLi41NTY3ZTM3ZSAxMDA2NDQKPi0tLSBhL3Rlc3RzL2k5MTUvZ2VtX2ZlbmNl X3RocmFzaC5jCj4rKysgYi90ZXN0cy9pOTE1L2dlbV9mZW5jZV90aHJhc2guYwo+QEAgLTIzNiw2 ICsyMzYsMTIgQEAgaWd0X21haW4KPiB7Cj4gCWlndF9za2lwX29uX3NpbXVsYXRpb24oKTsKPgo+ KwlpZ3RfZml4dHVyZSB7Cj4rCQlpbnQgZmQgPSBkcm1fb3Blbl9kcml2ZXIoRFJJVkVSX0lOVEVM KTsKPisJCWlndF9yZXF1aXJlKGdlbV9hdmFpbGFibGVfZmVuY2VzKGZkKSA+IDApOyAvKiBHVFQg bWFwcGluZyBhdmFpbGFibGUgKi8KPisJCWNsb3NlKGZkKTsKPisJfQo+Kwo+IAlpZ3Rfc3VidGVz dCgiYm8td3JpdGUtdmVyaWZ5LW5vbmUiKQo+IAkJaWd0X2Fzc2VydChydW5fdGVzdCgwLCBib193 cml0ZV92ZXJpZnksIEk5MTVfVElMSU5HX05PTkUsIDgwKSA9PSAwKTsKPgo+ZGlmZiAtLWdpdCBh L3Rlc3RzL2k5MTUvZ2VtX2d0dF9jcHVfdGxiLmMgYi90ZXN0cy9pOTE1L2dlbV9ndHRfY3B1X3Rs Yi5jCj5pbmRleCA4Y2VlZjQ0Yy4uZTliZGIxODUgMTAwNjQ0Cj4tLS0gYS90ZXN0cy9pOTE1L2dl bV9ndHRfY3B1X3RsYi5jCj4rKysgYi90ZXN0cy9pOTE1L2dlbV9ndHRfY3B1X3RsYi5jCj5AQCAt NzgsNiArNzgsNyBAQCBpZ3Rfc2ltcGxlX21haW4KPiAJaWd0X3NraXBfb25fc2ltdWxhdGlvbigp Owo+Cj4gCWZkID0gZHJtX29wZW5fZHJpdmVyKERSSVZFUl9JTlRFTCk7Cj4rCWdlbV9yZXF1aXJl X21tYXBfZ3R0KGZkKTsKPgo+IAloYW5kbGUgPSBnZW1fY3JlYXRlKGZkLCBPQkpfU0laRSk7Cj4K PmRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dlbV9ndHRfaG9nLmMgYi90ZXN0cy9pOTE1L2dlbV9n dHRfaG9nLmMKPmluZGV4IGNhNzMwNjQ5Li5iMmVlYTY3OSAxMDA2NDQKPi0tLSBhL3Rlc3RzL2k5 MTUvZ2VtX2d0dF9ob2cuYwo+KysrIGIvdGVzdHMvaTkxNS9nZW1fZ3R0X2hvZy5jCj5AQCAtMTYx LDYgKzE2MSw3IEBAIGlndF9zaW1wbGVfbWFpbgo+IAkvKiBjaGVjayBmb3IgYW4gaW50ZWwgZ3B1 IGJlZm9yZSBnb2ludCBudXRzLiAqLwo+IAlpbnQgZmQgPSBkcm1fb3Blbl9kcml2ZXIoRFJJVkVS X0lOVEVMKTsKPiAJaWd0X3JlcXVpcmVfZ2VtKGZkKTsKPisJZ2VtX3JlcXVpcmVfbW1hcF9ndHQo ZmQpOwo+IAljbG9zZShmZCk7Cj4KPiAJaWd0X3NraXBfb25fc2ltdWxhdGlvbigpOwo+ZGlmZiAt LWdpdCBhL3Rlc3RzL2k5MTUvZ2VtX2d0dF9zcGVlZC5jIGIvdGVzdHMvaTkxNS9nZW1fZ3R0X3Nw ZWVkLmMKPmluZGV4IDNkNzI2YzRlLi5mMTc3ODM3MCAxMDA2NDQKPi0tLSBhL3Rlc3RzL2k5MTUv Z2VtX2d0dF9zcGVlZC5jCj4rKysgYi90ZXN0cy9pOTE1L2dlbV9ndHRfc3BlZWQuYwo+QEAgLTEx Niw2ICsxMTYsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCj4gCWJ1ZiA9IG1h bGxvYyhzaXplKTsKPiAJbWVtc2V0KGJ1ZiwgMCwgc2l6ZSk7Cj4gCWZkID0gZHJtX29wZW5fZHJp dmVyKERSSVZFUl9JTlRFTCk7Cj4rCWdlbV9yZXF1aXJlX21tYXBfZ3R0KGZkKTsKPgo+IAloYW5k bGUgPSBnZW1fY3JlYXRlKGZkLCBzaXplKTsKPiAJaWd0X2Fzc2VydChoYW5kbGUpOwo+ZGlmZiAt LWdpdCBhL3Rlc3RzL2k5MTUvZ2VtX2xhcmdlb2JqZWN0LmMgYi90ZXN0cy9pOTE1L2dlbV9sYXJn ZW9iamVjdC5jCj5pbmRleCA1MTgzOTZmYS4uYTJkNDdlZGMgMTAwNjQ0Cj4tLS0gYS90ZXN0cy9p OTE1L2dlbV9sYXJnZW9iamVjdC5jCj4rKysgYi90ZXN0cy9pOTE1L2dlbV9sYXJnZW9iamVjdC5j Cj5AQCAtODQsNiArODQsOCBAQCBpZ3Rfc2ltcGxlX21haW4KPgo+IAlmZCA9IGRybV9vcGVuX2Ry aXZlcihEUklWRVJfSU5URUwpOwo+Cj4rCWdlbV9yZXF1aXJlX21tYXBfZ3R0KGZkKTsKPisKPiAJ dGVzdF9sYXJnZV9vYmplY3QoZmQpOwo+Cj4gCWZyZWUoZGF0YSk7Cj5kaWZmIC0tZ2l0IGEvdGVz dHMvaTkxNS9nZW1fbWFkdmlzZS5jIGIvdGVzdHMvaTkxNS9nZW1fbWFkdmlzZS5jCj5pbmRleCA3 MjlhNGQzMy4uZjQyMjZhODQgMTAwNjQ0Cj4tLS0gYS90ZXN0cy9pOTE1L2dlbV9tYWR2aXNlLmMK PisrKyBiL3Rlc3RzL2k5MTUvZ2VtX21hZHZpc2UuYwo+QEAgLTYxLDYgKzYxLDggQEAgZG9udG5l ZWRfYmVmb3JlX21tYXAodm9pZCkKPiAJdWludDMyX3QgaGFuZGxlOwo+IAljaGFyICpwdHI7Cj4K PisJZ2VtX3JlcXVpcmVfbW1hcF9ndHQoZmQpOwo+Kwo+IAloYW5kbGUgPSBnZW1fY3JlYXRlKGZk LCBPQkpFQ1RfU0laRSk7Cj4gCWdlbV9tYWR2aXNlKGZkLCBoYW5kbGUsIEk5MTVfTUFEVl9ET05U TkVFRCk7Cj4gCXB0ciA9IGdlbV9tbWFwX19ndHQoZmQsIGhhbmRsZSwgT0JKRUNUX1NJWkUsIFBS T1RfUkVBRCB8IFBST1RfV1JJVEUpOwo+QEAgLTg5LDYgKzkxLDggQEAgZG9udG5lZWRfYWZ0ZXJf bW1hcCh2b2lkKQo+IAl1aW50MzJfdCBoYW5kbGU7Cj4gCWNoYXIgKnB0cjsKPgo+KwlnZW1fcmVx dWlyZV9tbWFwX2d0dChmZCk7Cj4rCj4gCWhhbmRsZSA9IGdlbV9jcmVhdGUoZmQsIE9CSkVDVF9T SVpFKTsKPiAJcHRyID0gZ2VtX21tYXBfX2d0dChmZCwgaGFuZGxlLCBPQkpFQ1RfU0laRSwgUFJP VF9SRUFEIHwgUFJPVF9XUklURSk7Cj4gCWlndF9hc3NlcnQocHRyKTsKPmRpZmYgLS1naXQgYS90 ZXN0cy9pOTE1L2dlbV9tbWFwX2d0dC5jIGIvdGVzdHMvaTkxNS9nZW1fbW1hcF9ndHQuYwo+aW5k ZXggZjZmYmJlMTkuLjk5ZGE0OWY2IDEwMDY0NAo+LS0tIGEvdGVzdHMvaTkxNS9nZW1fbW1hcF9n dHQuYwo+KysrIGIvdGVzdHMvaTkxNS9nZW1fbW1hcF9ndHQuYwo+QEAgLTgyOCw4ICs4MjgsMTAg QEAgaWd0X21haW4KPiAJaWYgKGlndF9ydW5faW5fc2ltdWxhdGlvbigpKQo+IAkJT0JKRUNUX1NJ WkUgPSAxICogMTAyNCAqIDEwMjQ7Cj4KPi0JaWd0X2ZpeHR1cmUKPisJaWd0X2ZpeHR1cmUgewo+ IAkJZmQgPSBkcm1fb3Blbl9kcml2ZXIoRFJJVkVSX0lOVEVMKTsKPisJCWdlbV9yZXF1aXJlX21t YXBfZ3R0KGZkKTsKPisJfQo+Cj4gCWlndF9zdWJ0ZXN0KCJiYXNpYyIpCj4gCQl0ZXN0X2FjY2Vz cyhmZCk7Cj5kaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9nZW1fbW1hcF9vZmZzZXRfZXhoYXVzdGlv bi5jIGIvdGVzdHMvaTkxNS9nZW1fbW1hcF9vZmZzZXRfZXhoYXVzdGlvbi5jCj5pbmRleCA4Yzhl M2ZhMi4uODY0NjQyMzEgMTAwNjQ0Cj4tLS0gYS90ZXN0cy9pOTE1L2dlbV9tbWFwX29mZnNldF9l eGhhdXN0aW9uLmMKPisrKyBiL3Rlc3RzL2k5MTUvZ2VtX21tYXBfb2Zmc2V0X2V4aGF1c3Rpb24u Ywo+QEAgLTgyLDYgKzgyLDggQEAgaWd0X3NpbXBsZV9tYWluCj4KPiAJZmQgPSBkcm1fb3Blbl9k cml2ZXIoRFJJVkVSX0lOVEVMKTsKPgo+KwlnZW1fcmVxdWlyZV9tbWFwX2d0dChmZCk7Cj4rCj4g CS8qIHdlIGhhdmUgMzJiaXQgb2YgYWRkcmVzcyBzcGFjZSwgc28gdHJ5IHRvIGZpdCBvbmUgTUIg bW9yZQo+IAkgKiB0aGFuIHRoYXQuICovCj4gCWZvciAoaSA9IDA7IGkgPCA0MDk2ICsgMTsgaSsr KQo+ZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTUvZ2VtX21tYXBfd2MuYyBiL3Rlc3RzL2k5MTUvZ2Vt X21tYXBfd2MuYwo+aW5kZXggMTEwODgzZWIuLjc4MDg5ODI5IDEwMDY0NAo+LS0tIGEvdGVzdHMv aTkxNS9nZW1fbW1hcF93Yy5jCj4rKysgYi90ZXN0cy9pOTE1L2dlbV9tbWFwX3djLmMKPkBAIC0z MTksNiArMzE5LDggQEAgdGVzdF93cml0ZV9ndHRfcmVhZF93YyhpbnQgZmQpCj4gCXVpbnQzMl90 IGhhbmRsZTsKPiAJdWludDMyX3QgKnNyYywgKmRzdDsKPgo+KwlnZW1fcmVxdWlyZV9tbWFwX2d0 dChmZCk7Cj4rCj4gCWhhbmRsZSA9IGdlbV9jcmVhdGUoZmQsIE9CSkVDVF9TSVpFKTsKPiAJc2V0 X2RvbWFpbihmZCwgaGFuZGxlKTsKPgo+ZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTUvZ2VtX3BlcnNp c3RlbnRfcmVsb2NzLmMgYi90ZXN0cy9pOTE1L2dlbV9wZXJzaXN0ZW50X3JlbG9jcy5jCj5pbmRl eCA0NTJmZTY4Ni4uMTcyNjZjNDggMTAwNjQ0Cj4tLS0gYS90ZXN0cy9pOTE1L2dlbV9wZXJzaXN0 ZW50X3JlbG9jcy5jCj4rKysgYi90ZXN0cy9pOTE1L2dlbV9wZXJzaXN0ZW50X3JlbG9jcy5jCj5A QCAtMTk5LDYgKzE5OSw4IEBAIHN0YXRpYyB2b2lkIGRvX3Rlc3QoaW50IGZkLCBib29sIGZhdWx0 aW5nX3JlbG9jKQo+IAl1aW50MzJfdCB0ZXN0Owo+IAlpbnQgaSwgcmVwZWF0Owo+Cj4rCWdlbV9y ZXF1aXJlX21tYXBfZ3R0KGZkKTsKPisKPiAJaWYgKGZhdWx0aW5nX3JlbG9jKQo+IAkJaWd0X2Rp c2FibGVfcHJlZmF1bHQoKTsKPgo+ZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTUvZ2VtX3B3cml0ZV9w cmVhZC5jIGIvdGVzdHMvaTkxNS9nZW1fcHdyaXRlX3ByZWFkLmMKPmluZGV4IGY5MWZjN2M0Li40 M2IzOTg3YSAxMDA2NDQKPi0tLSBhL3Rlc3RzL2k5MTUvZ2VtX3B3cml0ZV9wcmVhZC5jCj4rKysg Yi90ZXN0cy9pOTE1L2dlbV9wd3JpdGVfcHJlYWQuYwo+QEAgLTE4Miw2ICsxODIsOCBAQCBzdGF0 aWMgdm9pZCB0ZXN0X2FzX2d0dF9tbWFwKGludCBmZCwgdWludDMyX3Qgc3JjLCB1aW50MzJfdCBk c3QsIGludCBsZW4pCj4gCWludCBpOwo+IAlCVUlMRF9FWEVDOwo+Cj4rCWdlbV9yZXF1aXJlX21t YXBfZ3R0KGZkKTsKPisKPiAJc3JjX3B0ciA9IGdlbV9tbWFwX19ndHQoZmQsIHNyYywgT0JKRUNU X1NJWkUsIFBST1RfV1JJVEUpOwo+IAlkc3RfcHRyID0gZ2VtX21tYXBfX2d0dChmZCwgZHN0LCBP QkpFQ1RfU0laRSwgUFJPVF9SRUFEKTsKPgo+QEAgLTMwOSw2ICszMTEsOCBAQCBpbnQgbWFpbihp bnQgYXJnYywgY2hhciAqKmFyZ3YpCj4gCQlmb3IgKGNvdW50ID0gMTsgY291bnQgPD0gMTw8MTc7 IGNvdW50IDw8PSAxKSB7Cj4gCQkJc3RydWN0IHRpbWV2YWwgc3RhcnQsIGVuZDsKPgo+KwkJCWdl bV9yZXF1aXJlX21tYXBfZ3R0KGZkKTsKPisKPiAJCQlnZXR0aW1lb2ZkYXkoJnN0YXJ0LCBOVUxM KTsKPiAJCQlhc19ndHRfbW1hcChmZCwgc3JjLCBkc3QsIHRtcCwgb2JqZWN0X3NpemUsIGNvdW50 KTsKPiAJCQlnZXR0aW1lb2ZkYXkoJmVuZCwgTlVMTCk7Cj5AQCAtMzg3LDYgKzM5MSw4IEBAIGlu dCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKPiAJCWZvciAoY291bnQgPSAxOyBjb3VudCA8 PSAxPDwxNzsgY291bnQgPDw9IDEpIHsKPiAJCQlzdHJ1Y3QgdGltZXZhbCBzdGFydCwgZW5kOwo+ Cj4rCQkJZ2VtX3JlcXVpcmVfbW1hcF9ndHQoZmQpOwo+Kwo+IAkJCWdldHRpbWVvZmRheSgmc3Rh cnQsIE5VTEwpOwo+IAkJCWFzX2d0dF9tbWFwKGZkLCBzcmMsIGRzdCwgdG1wLCBvYmplY3Rfc2l6 ZSwgY291bnQpOwo+IAkJCWdldHRpbWVvZmRheSgmZW5kLCBOVUxMKTsKPmRpZmYgLS1naXQgYS90 ZXN0cy9pOTE1L2dlbV9yZWxvY192c19ncHUuYyBiL3Rlc3RzL2k5MTUvZ2VtX3JlbG9jX3ZzX2dw dS5jCj5pbmRleCBkNDIxZTQzNC4uZTE0NzVhMWYgMTAwNjQ0Cj4tLS0gYS90ZXN0cy9pOTE1L2dl bV9yZWxvY192c19ncHUuYwo+KysrIGIvdGVzdHMvaTkxNS9nZW1fcmVsb2NfdnNfZ3B1LmMKPkBA IC0xNTksMTcgKzE1OSwxNyBAQCBzdGF0aWMgdm9pZCByZWxvY19hbmRfZW1pdChpbnQgZmQsIGRy bV9pbnRlbF9ibyAqdGFyZ2V0X2JvLCBib29sIGZhdWx0aW5nX3JlbG9jKQo+IAkgKi8KPiAJcmVs b2NbMF0ucHJlc3VtZWRfb2Zmc2V0ID0gLTE7Cj4KPi0JaGFuZGxlX3JlbG9jcyA9IGdlbV9jcmVh dGUoZmQsIDQwOTYpOwo+LQlnZW1fd3JpdGUoZmQsIGhhbmRsZV9yZWxvY3MsIDAsIHJlbG9jLCBz aXplb2YocmVsb2MpKTsKPi0JZ3R0X3JlbG9jcyA9IGdlbV9tbWFwX19ndHQoZmQsIGhhbmRsZV9y ZWxvY3MsIDQwOTYsCj4tCQkJCSAgIFBST1RfUkVBRCB8IFBST1RfV1JJVEUpOwo+LQo+IAlleGVj WzFdLmhhbmRsZSA9IHNwZWNpYWxfYm8tPmhhbmRsZTsKPiAJZXhlY1sxXS5yZWxvY2F0aW9uX2Nv dW50ID0gMTsKPiAJLyogQSBuZXdseSBtbWFwIGd0dCBibyB3aWxsIGZhdWx0IG9uIGZpcnN0IGFj Y2Vzcy4gKi8KPi0JaWYgKGZhdWx0aW5nX3JlbG9jKQo+KwlpZiAoZmF1bHRpbmdfcmVsb2MpIHsK PisJCWhhbmRsZV9yZWxvY3MgPSBnZW1fY3JlYXRlKGZkLCA0MDk2KTsKPisJCWdlbV93cml0ZShm ZCwgaGFuZGxlX3JlbG9jcywgMCwgcmVsb2MsIHNpemVvZihyZWxvYykpOwo+KwkJZ3R0X3JlbG9j cyA9IGdlbV9tbWFwX19ndHQoZmQsIGhhbmRsZV9yZWxvY3MsIDQwOTYsCj4rCQkJCQkJUFJPVF9S RUFEIHwgUFJPVF9XUklURSk7Cj4rCj4gCQlleGVjWzFdLnJlbG9jc19wdHIgPSB0b191c2VyX3Bv aW50ZXIoZ3R0X3JlbG9jcyk7Cj4tCWVsc2UKPisJfSBlbHNlCj4gCQlleGVjWzFdLnJlbG9jc19w dHIgPSB0b191c2VyX3BvaW50ZXIocmVsb2MpOwo+Cj4gCWV4ZWNidWYuYnVmZmVyc19wdHIgPSB0 b191c2VyX3BvaW50ZXIoZXhlYyk7Cj5AQCAtMTgwLDcgKzE4MCw4IEBAIHN0YXRpYyB2b2lkIHJl bG9jX2FuZF9lbWl0KGludCBmZCwgZHJtX2ludGVsX2JvICp0YXJnZXRfYm8sIGJvb2wgZmF1bHRp bmdfcmVsb2MpCj4KPiAJZ2VtX2V4ZWNidWYoZmQsICZleGVjYnVmKTsKPgo+LQlnZW1fY2xvc2Uo ZmQsIGhhbmRsZV9yZWxvY3MpOwo+KwlpZiAoZmF1bHRpbmdfcmVsb2MpCj4rCQlnZW1fY2xvc2Uo ZmQsIGhhbmRsZV9yZWxvY3MpOwo+IH0KPgo+IHN0YXRpYyBpZ3RfaGFuZ190IG5vX2hhbmcoaW50 IGZkKQo+QEAgLTIwMSw4ICsyMDIsMTAgQEAgc3RhdGljIHZvaWQgZG9fdGVzdChpbnQgZmQsIGJv b2wgZmF1bHRpbmdfcmVsb2MsCj4gCXVpbnQzMl90IHRlc3Q7Cj4gCWludCBpOwo+Cj4tCWlmIChm YXVsdGluZ19yZWxvYykKPisJaWYgKGZhdWx0aW5nX3JlbG9jKSB7Cj4rCQlnZW1fcmVxdWlyZV9t bWFwX2d0dChmZCk7Cj4gCQlpZ3RfZGlzYWJsZV9wcmVmYXVsdCgpOwo+Kwl9Cj4KPiAJYWN0X3Np emUgPSAyMDQ4Owo+IAlkdW1teV9ibyA9IGRybV9pbnRlbF9ib19hbGxvY190aWxlZChidWZtZ3Is ICJ0aWxlZCBkdW1teV9ibyIsIGFjdF9zaXplLCBhY3Rfc2l6ZSwKPmRpZmYgLS1naXQgYS90ZXN0 cy9pOTE1L2dlbV9yZW5kZXJfY29weS5jIGIvdGVzdHMvaTkxNS9nZW1fcmVuZGVyX2NvcHkuYwo+ aW5kZXggMGNkNGU1MGYuLjJhNzg1Y2JhIDEwMDY0NAo+LS0tIGEvdGVzdHMvaTkxNS9nZW1fcmVu ZGVyX2NvcHkuYwo+KysrIGIvdGVzdHMvaTkxNS9nZW1fcmVuZGVyX2NvcHkuYwo+QEAgLTQyNCw2 ICs0MjQsOCBAQCBzdGF0aWMgdm9pZCB0ZXN0KGRhdGFfdCAqZGF0YSwgdWludDMyX3QgdGlsaW5n LCBib29sIHRlc3RfY2NzKQo+Cj4gCWludCBvcHRfZHVtcF9hdWIgPSBpZ3RfYXViX2R1bXBfZW5h YmxlZCgpOwo+Cj4rCWdlbV9yZXF1aXJlX21tYXBfZ3R0KGRhdGEtPmRybV9mZCk7Cj4rCj4gCWZv ciAoaW50IGkgPSAwOyBpIDwgQVJSQVlfU0laRShzcmMpOyBpKyspCj4gCQlzY3JhdGNoX2J1Zl9p bml0KGRhdGEsICZzcmNbaV0uYnVmLCBXSURUSCwgSEVJR0hULCBzcmNbaV0udGlsaW5nLCBmYWxz ZSk7Cj4gCXNjcmF0Y2hfYnVmX2luaXQoZGF0YSwgJmRzdCwgV0lEVEgsIEhFSUdIVCwgdGlsaW5n LCBmYWxzZSk7Cj5kaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9nZW1fc2V0X3RpbGluZ192c19ndHQu YyBiL3Rlc3RzL2k5MTUvZ2VtX3NldF90aWxpbmdfdnNfZ3R0LmMKPmluZGV4IDI2MTFlYzU1Li4y MTBkNTM1OCAxMDA2NDQKPi0tLSBhL3Rlc3RzL2k5MTUvZ2VtX3NldF90aWxpbmdfdnNfZ3R0LmMK PisrKyBiL3Rlc3RzL2k5MTUvZ2VtX3NldF90aWxpbmdfdnNfZ3R0LmMKPkBAIC02MCw2ICs2MCw4 IEBAIGlndF9zaW1wbGVfbWFpbgo+Cj4gCWZkID0gZHJtX29wZW5fZHJpdmVyKERSSVZFUl9JTlRF TCk7Cj4KPisJZ2VtX3JlcXVpcmVfbW1hcF9ndHQoZmQpOwo+Kwo+IAlpZiAoSVNfR0VOMihpbnRl bF9nZXRfZHJtX2RldmlkKGZkKSkpCj4gCQl0aWxlX2hlaWdodCA9IDE2Owo+IAllbHNlCj5kaWZm IC0tZ2l0IGEvdGVzdHMvaTkxNS9nZW1fc2V0X3RpbGluZ192c19wd3JpdGUuYyBiL3Rlc3RzL2k5 MTUvZ2VtX3NldF90aWxpbmdfdnNfcHdyaXRlLmMKPmluZGV4IGYwMTI2YjY0Li5kODJlMjBiNCAx MDA2NDQKPi0tLSBhL3Rlc3RzL2k5MTUvZ2VtX3NldF90aWxpbmdfdnNfcHdyaXRlLmMKPisrKyBi L3Rlc3RzL2k5MTUvZ2VtX3NldF90aWxpbmdfdnNfcHdyaXRlLmMKPkBAIC01OCw2ICs1OCw4IEBA IGlndF9zaW1wbGVfbWFpbgo+Cj4gCWZkID0gZHJtX29wZW5fZHJpdmVyKERSSVZFUl9JTlRFTCk7 Cj4KPisJZ2VtX3JlcXVpcmVfbW1hcF9ndHQoZmQpOwo+Kwo+IAlmb3IgKGkgPSAwOyBpIDwgT0JK RUNUX1NJWkUvNDsgaSsrKQo+IAkJZGF0YVtpXSA9IGk7Cj4KPmRpZmYgLS1naXQgYS90ZXN0cy9p OTE1L2dlbV9zaHJpbmsuYyBiL3Rlc3RzL2k5MTUvZ2VtX3Nocmluay5jCj5pbmRleCBjOGUwNTgx NC4uOWM1NGZjYjQgMTAwNjQ0Cj4tLS0gYS90ZXN0cy9pOTE1L2dlbV9zaHJpbmsuYwo+KysrIGIv dGVzdHMvaTkxNS9nZW1fc2hyaW5rLmMKPkBAIC0zOTYsNiArMzk2LDggQEAgaWd0X21haW4KPiAJ dWludDY0X3QgYWxsb2Nfc2l6ZSA9IDA7Cj4gCWludCBudW1fcHJvY2Vzc2VzID0gMDsKPgo+Kwli b29sIGhhc19ndHQgPSBmYWxzZTsKPisKPiAJaWd0X3NraXBfb25fc2ltdWxhdGlvbigpOwo+Cj4g CWlndF9maXh0dXJlIHsKPkBAIC00MjYsNiArNDI4LDggQEAgaWd0X21haW4KPiAJCQllbmdpbmVz W25lbmdpbmUrK10gPSBlbmdpbmU7Cj4gCQlpZ3RfcmVxdWlyZShuZW5naW5lKTsKPgo+KwkJaGFz X2d0dCA9IGdlbV9tbWFwX19oYXNfZ3R0KGZkKTsKPisKPiAJCWNsb3NlKGZkKTsKPiAJfQo+Cj5A QCAtNDM0LDkgKzQzOCwxMyBAQCBpZ3RfbWFpbgo+Cj4gCWZvcihjb25zdCBzdHJ1Y3QgdGVzdCAq dCA9IHRlc3RzOyB0LT5uYW1lOyB0KyspIHsKPiAJCWZvcihjb25zdCBzdHJ1Y3QgbW9kZSAqbSA9 IG1vZGVzOyBtLT5zdWZmaXg7IG0rKykgewo+LQkJCWlndF9zdWJ0ZXN0X2YoIiVzJXMiLCB0LT5u YW1lLCBtLT5zdWZmaXgpCj4tCQkJCXJ1bl90ZXN0KG51bV9wcm9jZXNzZXMsIGFsbG9jX3NpemUs Cj4tCQkJCQkgdC0+ZnVuYywgbS0+ZmxhZ3MpOwo+KwkJCWlndF9zdWJ0ZXN0X2YoIiVzJXMiLCB0 LT5uYW1lLCBtLT5zdWZmaXgpIHsKPisJCQkJCWlmICh0LT5mdW5jID09IG1tYXBfZ3R0KQo+KwkJ CQkJCWlndF9yZXF1aXJlKGhhc19ndHQpOwo+Kwo+KwkJCQkJcnVuX3Rlc3QobnVtX3Byb2Nlc3Nl cywgYWxsb2Nfc2l6ZSwKPisJCQkJCQkgdC0+ZnVuYywgbS0+ZmxhZ3MpOwo+KwkJCX0KPiAJCX0K PiAJfQo+IH0KPmRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dlbV9zdG9yZWR3X2xvb3AuYyBiL3Rl c3RzL2k5MTUvZ2VtX3N0b3JlZHdfbG9vcC5jCj5pbmRleCBiMDA1NTVlMC4uZDE2YTFhNmIgMTAw NjQ0Cj4tLS0gYS90ZXN0cy9pOTE1L2dlbV9zdG9yZWR3X2xvb3AuYwo+KysrIGIvdGVzdHMvaTkx NS9nZW1fc3RvcmVkd19sb29wLmMKPkBAIC00OSw2ICs0OSwxMiBAQCBzdGF0aWMgaW50IGRldmlk Owo+Cj4gc3RhdGljIHVuc2lnbmVkIGNvaGVyZW50X2RvbWFpbjsKPgo+K3N0YXRpYyBib29sCj4r dXNlc19jb2hlcmVudF9ndHQoaW50IGZkKQo+K3sKPisJcmV0dXJuICghZ2VtX2hhc19sbGMoZmQp IHx8IGdlbV9tbWFwX19oYXNfd2MoZmQpKTsKPit9Cj4rCj4gc3RhdGljIHZvaWQgKgo+IG1tYXBf Y29oZXJlbnQoaW50IGZkLCB1aW50MzJfdCBoYW5kbGUsIGludCBzaXplKQo+IHsKPkBAIC0xNjQs NiArMTcwLDkgQEAgY2hlY2tfdGVzdF9yZXF1aXJlbWVudHMoaW50IGZkLCBpbnQgcmluZ2lkKQo+ IHsKPiAJZ2VtX3JlcXVpcmVfcmluZyhmZCwgcmluZ2lkKTsKPiAJaWd0X3JlcXVpcmUoZ2VtX2Nh bl9zdG9yZV9kd29yZChmZCwgcmluZ2lkKSk7Cj4rCj4rCWlmICh1c2VzX2NvaGVyZW50X2d0dChm ZCkpCj4rCQlnZW1fcmVxdWlyZV9tbWFwX2d0dChmZCk7Cj4gfQo+Cj4gaWd0X21haW4KPmRpZmYg LS1naXQgYS90ZXN0cy9pOTE1L2dlbV9zdHJlYW1pbmdfd3JpdGVzLmMgYi90ZXN0cy9pOTE1L2dl bV9zdHJlYW1pbmdfd3JpdGVzLmMKPmluZGV4IGU4M2Q2OWRlLi4xNTljYjdhNiAxMDA2NDQKPi0t LSBhL3Rlc3RzL2k5MTUvZ2VtX3N0cmVhbWluZ193cml0ZXMuYwo+KysrIGIvdGVzdHMvaTkxNS9n ZW1fc3RyZWFtaW5nX3dyaXRlcy5jCj5AQCAtNDgsNiArNDgsOCBAQAo+Cj4gI2RlZmluZSBMT0NB TF9JOTE1X0VYRUNfSEFORExFX0xVVCAoMTw8MTIpCj4KPisjZGVmaW5lIE5FRURTX0dUVChtb2Rl KSAobW9kZSA9PSAxKQo+Kwo+IElHVF9URVNUX0RFU0NSSVBUSU9OKCJUZXN0IG9mIHN0cmVhbWlu ZyB3cml0ZXMgaW50byBhY3RpdmUgR1BVIHNvdXJjZXMiKTsKPgo+ICNkZWZpbmUgU1JDIDAKPkBA IC03NSw2ICs3Nyw5IEBAIHN0YXRpYyB2b2lkIHRlc3Rfc3RyZWFtaW5nKGludCBmZCwgaW50IG1v ZGUsIGludCBzeW5jKQo+IAl9ICpiYXRjaDsKPiAJaW50IGksIG47Cj4KPisJaWYgKE5FRURTX0dU VChtb2RlKSkKPisJCWdlbV9yZXF1aXJlX21tYXBfZ3R0KGZkKTsKPisKPiAJbWVtc2V0KGV4ZWMs IDAsIHNpemVvZihleGVjKSk7Cj4gCWV4ZWNbU1JDXS5oYW5kbGUgPSBnZW1fY3JlYXRlKGZkLCBP QkpFQ1RfU0laRSk7Cj4gCWV4ZWNbRFNUXS5oYW5kbGUgPSBnZW1fY3JlYXRlKGZkLCBPQkpFQ1Rf U0laRSk7Cj5AQCAtMjQ1LDYgKzI1MCw5IEBAIHN0YXRpYyB2b2lkIHRlc3RfYmF0Y2goaW50IGZk LCBpbnQgbW9kZSwgaW50IHJldmVyc2UpCj4gCXVpbnQzMl90ICpiYXNlOwo+IAl1aW50MzJfdCBv ZmZzZXQ7Cj4KPisJaWYgKE5FRURTX0dUVChtb2RlKSkKPisJCWdlbV9yZXF1aXJlX21tYXBfZ3R0 KGZkKTsKPisKPiAJbWVtc2V0KGV4ZWMsIDAsIHNpemVvZihleGVjKSk7Cj4gCWV4ZWNbRFNUXS5o YW5kbGUgPSBnZW1fY3JlYXRlKGZkLCBPQkpFQ1RfU0laRSk7Cj4gCWV4ZWNbU1JDXS5oYW5kbGUg PSBnZW1fY3JlYXRlKGZkLCBPQkpFQ1RfU0laRSk7Cj5AQCAtMzg5LDE0ICszOTcsMTggQEAgaWd0 X21haW4KPgo+IAlpZ3Rfc3VidGVzdCgiYmF0Y2gtY3B1IikKPiAJCXRlc3RfYmF0Y2goZmQsIDAs IDApOwo+LQlpZ3Rfc3VidGVzdCgiYmF0Y2gtZ3R0IikKPisJaWd0X3N1YnRlc3QoImJhdGNoLWd0 dCIpIHsKPisJCWdlbV9yZXF1aXJlX21tYXBfZ3R0KGZkKTsKPiAJCXRlc3RfYmF0Y2goZmQsIDEs IDApOwo+Kwl9Cj4gCWlndF9zdWJ0ZXN0KCJiYXRjaC13YyIpCj4gCQl0ZXN0X2JhdGNoKGZkLCAy LCAwKTsKPiAJaWd0X3N1YnRlc3QoImJhdGNoLXJldmVyc2UtY3B1IikKPiAJCXRlc3RfYmF0Y2go ZmQsIDAsIDEpOwo+LQlpZ3Rfc3VidGVzdCgiYmF0Y2gtcmV2ZXJzZS1ndHQiKQo+KwlpZ3Rfc3Vi dGVzdCgiYmF0Y2gtcmV2ZXJzZS1ndHQiKSB7Cj4rCQlnZW1fcmVxdWlyZV9tbWFwX2d0dChmZCk7 Cj4gCQl0ZXN0X2JhdGNoKGZkLCAxLCAxKTsKPisJfQo+IAlpZ3Rfc3VidGVzdCgiYmF0Y2gtcmV2 ZXJzZS13YyIpCj4gCQl0ZXN0X2JhdGNoKGZkLCAyLCAxKTsKPgo+ZGlmZiAtLWdpdCBhL3Rlc3Rz L2k5MTUvZ2VtX3RpbGVkX2ZlbmNlX2JsaXRzLmMgYi90ZXN0cy9pOTE1L2dlbV90aWxlZF9mZW5j ZV9ibGl0cy5jCj5pbmRleCAyNDUzYmNjMC4uMzkwZDBjZDcgMTAwNjQ0Cj4tLS0gYS90ZXN0cy9p OTE1L2dlbV90aWxlZF9mZW5jZV9ibGl0cy5jCj4rKysgYi90ZXN0cy9pOTE1L2dlbV90aWxlZF9m ZW5jZV9ibGl0cy5jCj5AQCAtMjExLDYgKzIxMSw3IEBAIGlndF9tYWluCj4gCWlndF9maXh0dXJl IHsKPiAJCWZkID0gZHJtX29wZW5fZHJpdmVyKERSSVZFUl9JTlRFTCk7Cj4gCQlpZ3RfcmVxdWly ZV9nZW0oZmQpOwo+KwkJZ2VtX3JlcXVpcmVfbW1hcF9ndHQoZmQpOwo+IAl9Cj4KPiAJaWd0X3N1 YnRlc3QoImJhc2ljIikKPmRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dlbV90aWxlZF9wcmVhZF9i YXNpYy5jIGIvdGVzdHMvaTkxNS9nZW1fdGlsZWRfcHJlYWRfYmFzaWMuYwo+aW5kZXggNDI1YmIw N2UuLmQyYmM4NGQzIDEwMDY0NAo+LS0tIGEvdGVzdHMvaTkxNS9nZW1fdGlsZWRfcHJlYWRfYmFz aWMuYwo+KysrIGIvdGVzdHMvaTkxNS9nZW1fdGlsZWRfcHJlYWRfYmFzaWMuYwo+QEAgLTEyMyw2 ICsxMjMsNyBAQCBpZ3Rfc2ltcGxlX21haW4KPiAJdWludDMyX3QgZGV2aWQ7Cj4KPiAJZmQgPSBk cm1fb3Blbl9kcml2ZXIoRFJJVkVSX0lOVEVMKTsKPisJZ2VtX3JlcXVpcmVfbW1hcF9ndHQoZmQp Owo+Cj4gCWhhbmRsZSA9IGNyZWF0ZV9ibyhmZCk7Cj4gCWlndF9yZXF1aXJlKGdlbV9nZXRfdGls aW5nKGZkLCBoYW5kbGUsICZ0aWxpbmcsICZzd2l6emxlKSk7Cj5kaWZmIC0tZ2l0IGEvdGVzdHMv aTkxNS9nZW1fdGlsZWRfcHJlYWRfcHdyaXRlLmMgYi90ZXN0cy9pOTE1L2dlbV90aWxlZF9wcmVh ZF9wd3JpdGUuYwo+aW5kZXggZmNmMDc4MGEuLmViZjA2YzU3IDEwMDY0NAo+LS0tIGEvdGVzdHMv aTkxNS9nZW1fdGlsZWRfcHJlYWRfcHdyaXRlLmMKPisrKyBiL3Rlc3RzL2k5MTUvZ2VtX3RpbGVk X3ByZWFkX3B3cml0ZS5jCj5AQCAtMTEwLDggKzExMCwxMCBAQCBpZ3Rfc2ltcGxlX21haW4KPiAJ dWludDMyX3QgdGlsaW5nLCBzd2l6emxlOwo+IAlpbnQgY291bnQ7Cj4gCWludCBmZDsKPi0JCj4r Cj4gCWZkID0gZHJtX29wZW5fZHJpdmVyKERSSVZFUl9JTlRFTCk7Cj4rCWdlbV9yZXF1aXJlX21t YXBfZ3R0KGZkKTsKPisKPiAJY291bnQgPSBTTE9XX1FVSUNLKGludGVsX2dldF90b3RhbF9yYW1f bWIoKSAqIDkgLyAxMCwgOCkgOwo+Cj4gCWZvciAoaW50IGkgPSAwOyBpIDwgY291bnQvMjsgaSsr KSB7Cj5kaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9nZW1fdGlsZWRfc3dhcHBpbmcuYyBiL3Rlc3Rz L2k5MTUvZ2VtX3RpbGVkX3N3YXBwaW5nLmMKPmluZGV4IGRkZjJhNzQ4Li4yOTc4M2FiYSAxMDA2 NDQKPi0tLSBhL3Rlc3RzL2k5MTUvZ2VtX3RpbGVkX3N3YXBwaW5nLmMKPisrKyBiL3Rlc3RzL2k5 MTUvZ2VtX3RpbGVkX3N3YXBwaW5nLmMKPkBAIC0xNzUsNiArMTc1LDggQEAgaWd0X21haW4KPgo+ IAkJZmQgPSBkcm1fb3Blbl9kcml2ZXIoRFJJVkVSX0lOVEVMKTsKPgo+KwkJZ2VtX3JlcXVpcmVf bW1hcF9ndHQoZmQpOwo+Kwo+IAkJaW50ZWxfcHVyZ2Vfdm1fY2FjaGVzKGZkKTsKPiAJCWNoZWNr X21lbW9yeV9sYXlvdXQoZmQpOwo+Cj5kaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9nZW1fdGlsZWRf d2IuYyBiL3Rlc3RzL2k5MTUvZ2VtX3RpbGVkX3diLmMKPmluZGV4IDY3ZDU0YmQzLi45ZjQzMTUy OSAxMDA2NDQKPi0tLSBhL3Rlc3RzL2k5MTUvZ2VtX3RpbGVkX3diLmMKPisrKyBiL3Rlc3RzL2k5 MTUvZ2VtX3RpbGVkX3diLmMKPkBAIC0xMzksNiArMTM5LDggQEAgaWd0X3NpbXBsZV9tYWluCj4K PiAJZmQgPSBkcm1fb3Blbl9kcml2ZXIoRFJJVkVSX0lOVEVMKTsKPgo+KwlnZW1fcmVxdWlyZV9t bWFwX2d0dChmZCk7Cj4rCj4gCWhhbmRsZSA9IGNyZWF0ZV9ibyhmZCk7Cj4gCWdldF90aWxpbmco ZmQsIGhhbmRsZSwgJnRpbGluZywgJnN3aXp6bGUpOwo+Cj5kaWZmIC0tZ2l0IGEvdGVzdHMvaTkx NS9nZW1fdGlsZWRfd2MuYyBiL3Rlc3RzL2k5MTUvZ2VtX3RpbGVkX3djLmMKPmluZGV4IDIxMzkw NzI5Li40YTY3YTcxZCAxMDA2NDQKPi0tLSBhL3Rlc3RzL2k5MTUvZ2VtX3RpbGVkX3djLmMKPisr KyBiL3Rlc3RzL2k5MTUvZ2VtX3RpbGVkX3djLmMKPkBAIC0xMTIsNiArMTEyLDcgQEAgaWd0X3Np bXBsZV9tYWluCj4gCXVpbnQzMl90IGhhbmRsZTsKPgo+IAlmZCA9IGRybV9vcGVuX2RyaXZlcihE UklWRVJfSU5URUwpOwo+KwlnZW1fcmVxdWlyZV9tbWFwX2d0dChmZCk7Cj4gCWdlbV9yZXF1aXJl X21tYXBfd2MoZmQpOwo+Cj4gCWhhbmRsZSA9IGNyZWF0ZV9ibyhmZCk7Cj5kaWZmIC0tZ2l0IGEv dGVzdHMvaTkxNS9nZW1fdGlsaW5nX21heF9zdHJpZGUuYyBiL3Rlc3RzL2k5MTUvZ2VtX3RpbGlu Z19tYXhfc3RyaWRlLmMKPmluZGV4IGE2Zjk3YTkxLi5iNWRjMDUzZCAxMDA2NDQKPi0tLSBhL3Rl c3RzL2k5MTUvZ2VtX3RpbGluZ19tYXhfc3RyaWRlLmMKPisrKyBiL3Rlc3RzL2k5MTUvZ2VtX3Rp bGluZ19tYXhfc3RyaWRlLmMKPkBAIC03MCw4ICs3MCw5IEBAIGlndF9zaW1wbGVfbWFpbgo+Cj4g CWZkID0gZHJtX29wZW5fZHJpdmVyKERSSVZFUl9JTlRFTCk7Cj4KPi0JZGV2aWQgPSBpbnRlbF9n ZXRfZHJtX2RldmlkKGZkKTsKPisJZ2VtX3JlcXVpcmVfbW1hcF93YyhmZCk7Cj4KPisJZGV2aWQg PSBpbnRlbF9nZXRfZHJtX2RldmlkKGZkKTsKPiAJaWYgKGludGVsX2dlbihkZXZpZCkgPj0gNykK PiAJCXN0cmlkZSA9IDI1NiAqIDEwMjQ7Cj4gCWVsc2UgaWYgKGludGVsX2dlbihkZXZpZCkgPj0g NCkKPmRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dlbV91c2VycHRyX2JsaXRzLmMgYi90ZXN0cy9p OTE1L2dlbV91c2VycHRyX2JsaXRzLmMKPmluZGV4IDhmOGRkZjQzLi45OTYyZTUzOSAxMDA2NDQK Pi0tLSBhL3Rlc3RzL2k5MTUvZ2VtX3VzZXJwdHJfYmxpdHMuYwo+KysrIGIvdGVzdHMvaTkxNS9n ZW1fdXNlcnB0cl9ibGl0cy5jCj5AQCAtNTU0LDYgKzU1NCw4IEBAIHN0YXRpYyBpbnQgdGVzdF9p bnZhbGlkX2d0dF9tYXBwaW5nKGludCBmZCkKPiAJdWludDMyX3QgaGFuZGxlOwo+IAljaGFyICpn dHQsICptYXA7Cj4KPisJZ2VtX3JlcXVpcmVfbW1hcF9ndHQoZmQpOwo+Kwo+IAkvKiBBbm9ueW1v dXMgbWFwcGluZyB0byBmaW5kIGEgaG9sZSAqLwo+IAltYXAgPSBtbWFwKE5VTEwsIHNpemVvZihs aW5lYXIpICsgMiAqIFBBR0VfU0laRSwKPiAJCSAgIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsCj5A QCAtNjE2LDggKzYxOCwxMCBAQCBzdGF0aWMgaW50IHRlc3RfaW52YWxpZF9ndHRfbWFwcGluZyhp bnQgZmQpCj4gI2RlZmluZSBQRV9CVVNZIDB4Mgo+IHN0YXRpYyB2b2lkIHRlc3RfcHJvY2Vzc19l eGl0KGludCBmZCwgaW50IGZsYWdzKQo+IHsKPi0JaWYgKGZsYWdzICYgUEVfR1RUX01BUCkKPisJ aWYgKGZsYWdzICYgUEVfR1RUX01BUCkgewo+IAkJaWd0X3JlcXVpcmUoZ2VtX2hhc19sbGMoZmQp KTsKPisJCWdlbV9yZXF1aXJlX21tYXBfZ3R0KGZkKTsKPisJfQo+Cj4gCWlndF9mb3JrKGNoaWxk LCAxKSB7Cj4gCQl1aW50MzJfdCBoYW5kbGU7Cj5AQCAtNzAwLDYgKzcwNCw4IEBAIHN0YXRpYyBp bnQgdGVzdF9tYXBfZml4ZWRfaW52YWxpZGF0ZShpbnQgZmQsIHVpbnQzMl90IGZsYWdzKQo+IAl1 aW50MzJfdCBoYW5kbGVbbnVtX2hhbmRsZXNdOwo+IAl1aW50MzJfdCAqcHRyOwo+Cj4rCWdlbV9y ZXF1aXJlX21tYXBfZ3R0KGZkKTsKPisKPiAJcHRyID0gbW1hcChOVUxMLCBwdHJfc2l6ZSwKPiAJ CSAgIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsCj4gCQkgICBNQVBfU0hBUkVEIHwgTUFQX0FOT05Z TU9VUywKPkBAIC05NDQsNiArOTUwLDcgQEAgc3RhdGljIGludCB0ZXN0X2RtYWJ1Zih2b2lkKQo+ IAlpbnQgcmV0Owo+Cj4gCWZkMSA9IGRybV9vcGVuX2RyaXZlcihEUklWRVJfSU5URUwpOwo+Kwln ZW1fcmVxdWlyZV9tbWFwX2d0dChmZDEpOwo+Cj4gCWhhbmRsZSA9IGNyZWF0ZV91c2VycHRyX2Jv KGZkMSwgc2l6ZW9mKGxpbmVhcikpOwo+IAltZW1zZXQoZ2V0X2hhbmRsZV9wdHIoaGFuZGxlKSwg Y291bnRlciwgc2l6ZW9mKGxpbmVhcikpOwo+QEAgLTEyMTIsNiArMTIxOSw3IEBAIHN0YXRpYyB2 b2lkIHRlc3RfcmVhZG9ubHlfbW1hcChpbnQgaTkxNSkKPiAJICovCj4KPiAJaWd0X3JlcXVpcmUo aWd0X3NldHVwX2NsZmx1c2goKSk7Cj4rCWdlbV9yZXF1aXJlX21tYXBfZ3R0KGk5MTUpOwo+Cj4g CXN6ID0gMTYgPDwgMTI7Cj4gCXBhZ2VzID0gbW1hcChOVUxMLCBzeiwgUFJPVF9XUklURSwgTUFQ X0FOT04gfCBNQVBfUFJJVkFURSwgLTEsIDApOwo+ZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTUvaTkx NV9wbV9ycG0uYyBiL3Rlc3RzL2k5MTUvaTkxNV9wbV9ycG0uYwo+aW5kZXggYmUyOTZmNTIuLjAx YWI4MzkwIDEwMDY0NAo+LS0tIGEvdGVzdHMvaTkxNS9pOTE1X3BtX3JwbS5jCj4rKysgYi90ZXN0 cy9pOTE1L2k5MTVfcG1fcnBtLmMKPkBAIC0xMDA2LDYgKzEwMDYsNyBAQCBzdGF0aWMgdm9pZCBn ZW1fbW1hcF9zdWJ0ZXN0KGJvb2wgZ3R0X21tYXApCj4gCWhhbmRsZSA9IGdlbV9jcmVhdGUoZHJt X2ZkLCBidWZfc2l6ZSk7Cj4KPiAJaWYgKGd0dF9tbWFwKSB7Cj4rCQlnZW1fcmVxdWlyZV9tbWFw X2d0dChkcm1fZmQpOwo+IAkJZ2VtX2J1ZiA9IGdlbV9tbWFwX19ndHQoZHJtX2ZkLCBoYW5kbGUs IGJ1Zl9zaXplLAo+IAkJCQkJUFJPVF9SRUFEIHwgUFJPVF9XUklURSk7Cj4gCX0KPkBAIC0xMzY4 LDYgKzEzNjksOCBAQCBzdGF0aWMgdm9pZCBnZW1fZXZpY3RfcHdyaXRlX3N1YnRlc3Qodm9pZCkK PiAJdW5zaWduZWQgaW50IG51bV90cmFzaF9ib3MsIG47Cj4gCXVpbnQzMl90IGJ1ZjsKPgo+Kwln ZW1fcmVxdWlyZV9tbWFwX2d0dChkcm1fZmQpOwo+Kwo+IAludW1fdHJhc2hfYm9zID0gZ2VtX21h cHBhYmxlX2FwZXJ0dXJlX3NpemUoKSAvICgxMDI0KjEwMjQpICsgMTsKPiAJdHJhc2hfYm9zID0g bWFsbG9jKG51bV90cmFzaF9ib3MgKiBzaXplb2YoKnRyYXNoX2JvcykpOwo+IAlpZ3RfYXNzZXJ0 KHRyYXNoX2Jvcyk7Cj5AQCAtMTc5Niw2ICsxNzk5LDggQEAgc3RhdGljIHZvaWQgcG1fdGVzdF90 aWxpbmcodm9pZCkKPiAJLyogZGVmYXVsdCBzdHJpZGUgdmFsdWUgKi8KPiAJdWludDMyX3Qgc3Ry aWRlID0gNTEyOwo+Cj4rCWdlbV9yZXF1aXJlX21tYXBfZ3R0KGRybV9mZCk7Cj4rCj4gCS8qIGNh bGN1bGF0ZSBob3cgbWFueSBvYmplY3RzIHdlIGNhbiBtYXAgKi8KPiAJZm9yIChpID0gMSA8PCBv ZmZfYml0OyBpIDw9IGd0dF9vYmpfbWF4X3NpemU7IGkgPDw9IDEsIG1heF9nZW1fb2JqcysrKQo+ IAkJOwo+ZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTUvaTkxNV9zdXNwZW5kLmMgYi90ZXN0cy9pOTE1 L2k5MTVfc3VzcGVuZC5jCj5pbmRleCA4NGNiM2I0OS4uNGNjMDk1MjUgMTAwNjQ0Cj4tLS0gYS90 ZXN0cy9pOTE1L2k5MTVfc3VzcGVuZC5jCj4rKysgYi90ZXN0cy9pOTE1L2k5MTVfc3VzcGVuZC5j Cj5AQCAtNDksNiArNDksOCBAQCB0ZXN0X2ZlbmNlX3Jlc3RvcmUoaW50IGZkLCBib29sIHRpbGVk MnVudGlsZWQsIGJvb2wgaGliZXJuYXRlKQo+IAl1aW50MzJfdCAqcHRyMSwgKnB0cjIsICpwdHJf dGlsZWQ7Cj4gCWludCBpOwo+Cj4rCWdlbV9yZXF1aXJlX21tYXBfZ3R0KGZkKTsKPisKPiAJLyog V2Ugd2FsbCB0aGUgdGlsZWQgb2JqZWN0IHdpdGggdW50aWxlZCBjYW5hcnkgb2JqZWN0cyB0byBt YWtlIHN1cmUKPiAJICogdGhhdCB3ZSBkZXRlY3QgdGlsZSBsZWFraW5nIGluIGJvdGggZGlyZWN0 aW9ucy4gKi8KPiAJaGFuZGxlMSA9IGdlbV9jcmVhdGUoZmQsIE9CSkVDVF9TSVpFKTsKPmRpZmYg LS1naXQgYS90ZXN0cy9rbXNfZHJhd19jcmMuYyBiL3Rlc3RzL2ttc19kcmF3X2NyYy5jCj5pbmRl eCBlYTE0ZGI5YS4uMWEyZTJkNGYgMTAwNjQ0Cj4tLS0gYS90ZXN0cy9rbXNfZHJhd19jcmMuYwo+ KysrIGIvdGVzdHMva21zX2RyYXdfY3JjLmMKPkBAIC0zMjksMTMgKzMyOSwxNyBAQCBpZ3RfbWFp bgo+IAkJaWd0X3N1YnRlc3RfZigiZHJhdy1tZXRob2QtJXMtJXMtJXMiLAo+IAkJCSAgICAgIGZv cm1hdF9zdHIoZm9ybWF0X2lkeCksCj4gCQkJICAgICAgaWd0X2RyYXdfZ2V0X21ldGhvZF9uYW1l KG1ldGhvZCksCj4tCQkJICAgICAgdGlsaW5nX3N0cih0aWxpbmdfaWR4KSkKPisJCQkgICAgICB0 aWxpbmdfc3RyKHRpbGluZ19pZHgpKSB7Cj4rCQkJZ2VtX3JlcXVpcmVfbW1hcF9ndHQoZHJtX2Zk KTsKPiAJCQlkcmF3X21ldGhvZF9zdWJ0ZXN0KG1ldGhvZCwgZm9ybWF0X2lkeCwKPiAJCQkJCSAg ICB0aWxpbmdzW3RpbGluZ19pZHhdKTsKPisJCX0KPiAJfSB9IH0KPgo+LQlpZ3Rfc3VidGVzdCgi ZmlsbC1mYiIpCj4rCWlndF9zdWJ0ZXN0KCJmaWxsLWZiIikgewo+KwkJZ2VtX3JlcXVpcmVfbW1h cF9ndHQoZHJtX2ZkKTsKPiAJCWZpbGxfZmJfc3VidGVzdCgpOwo+Kwl9Cj4KPiAJaWd0X2ZpeHR1 cmUKPiAJCXRlYXJkb3duX2Vudmlyb25tZW50KCk7Cj5kaWZmIC0tZ2l0IGEvdGVzdHMva21zX2Zl bmNlX3Bpbl9sZWFrLmMgYi90ZXN0cy9rbXNfZmVuY2VfcGluX2xlYWsuYwo+aW5kZXggNjJjNTJi NjIuLmFjMGY2MDVjIDEwMDY0NAo+LS0tIGEvdGVzdHMva21zX2ZlbmNlX3Bpbl9sZWFrLmMKPisr KyBiL3Rlc3RzL2ttc19mZW5jZV9waW5fbGVhay5jCj5AQCAtMjAyLDYgKzIwMiw4IEBAIGlndF9z aW1wbGVfbWFpbgo+Cj4gCWRhdGEuZHJtX2ZkID0gZHJtX29wZW5fZHJpdmVyX21hc3RlcihEUklW RVJfSU5URUwpOwo+Cj4rCWdlbV9yZXF1aXJlX21tYXBfZ3R0KGRhdGEuZHJtX2ZkKTsKPisKPiAJ ZGF0YS5kZXZpZCA9IGludGVsX2dldF9kcm1fZGV2aWQoZGF0YS5kcm1fZmQpOwo+Cj4gCWttc3Rl c3Rfc2V0X3Z0X2dyYXBoaWNzX21vZGUoKTsKPmRpZmYgLS1naXQgYS90ZXN0cy9rbXNfZnJvbnRi dWZmZXJfdHJhY2tpbmcuYyBiL3Rlc3RzL2ttc19mcm9udGJ1ZmZlcl90cmFja2luZy5jCj5pbmRl eCA0ZDE1Y2UxYy4uNzgyOTk0MzggMTAwNjQ0Cj4tLS0gYS90ZXN0cy9rbXNfZnJvbnRidWZmZXJf dHJhY2tpbmcuYwo+KysrIGIvdGVzdHMva21zX2Zyb250YnVmZmVyX3RyYWNraW5nLmMKPkBAIC0x NzU4LDYgKzE3NTgsOSBAQCBzdGF0aWMgdm9pZCBjaGVja190ZXN0X3JlcXVpcmVtZW50cyhjb25z dCBzdHJ1Y3QgdGVzdF9tb2RlICp0KQo+Cj4gCWlmIChvcHQub25seV9waXBlcyAhPSBQSVBFX0NP VU5UKQo+IAkJaWd0X3JlcXVpcmUodC0+cGlwZXMgPT0gb3B0Lm9ubHlfcGlwZXMpOwo+Kwo+Kwlp ZiAodC0+bWV0aG9kID09IElHVF9EUkFXX01NQVBfR1RUKQo+KwkJZ2VtX3JlcXVpcmVfbW1hcF9n dHQoZHJtLmZkKTsKPiB9Cj4KPiBzdGF0aWMgdm9pZCBzZXRfY3J0Y19mYnMoY29uc3Qgc3RydWN0 IHRlc3RfbW9kZSAqdCkKPmRpZmYgLS1naXQgYS90ZXN0cy9rbXNfcHNyLmMgYi90ZXN0cy9rbXNf cHNyLmMKPmluZGV4IDNlMTZhNmJmLi42NmY0ZmNkOCAxMDA2NDQKPi0tLSBhL3Rlc3RzL2ttc19w c3IuYwo+KysrIGIvdGVzdHMva21zX3Bzci5jCj5AQCAtNDEsNiArNDEsOCBAQCBlbnVtIG9wZXJh dGlvbnMgewo+IAlQTEFORV9PTk9GRiwKPiB9Owo+Cj4rI2RlZmluZSBuZWVkc19ndHQob3ApIGlm IChvcCA9PSBNTUFQX0dUVCkge2dlbV9yZXF1aXJlX21tYXBfZ3R0KGRhdGEuZHJtX2ZkKTt9Cj4r Cj4gc3RhdGljIGNvbnN0IGNoYXIgKm9wX3N0cihlbnVtIG9wZXJhdGlvbnMgb3ApCj4gewo+IAlz dGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IG5hbWVbXSA9IHsKPkBAIC00NzQsNiArNDc2LDcgQEAg aW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKPiAJCQlpZ3Rfc3VidGVzdF9mKCIlc3By aW1hcnlfJXMiLAo+IAkJCQkgICAgICBhcHBlbmRfc3VidGVzdF9uYW1lW2RhdGEub3BfcHNyX21v ZGVdLAo+IAkJCQkgICAgICBvcF9zdHIob3ApKSB7Cj4rCQkJCW5lZWRzX2d0dChvcCk7Cj4gCQkJ CWRhdGEub3AgPSBvcDsKPiAJCQkJZGF0YS50ZXN0X3BsYW5lX2lkID0gRFJNX1BMQU5FX1RZUEVf UFJJTUFSWTsKPiAJCQkJdGVzdF9zZXR1cCgmZGF0YSk7Cj5AQCAtNDg2LDYgKzQ4OSw3IEBAIGlu dCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCj4gCQkJaWd0X3N1YnRlc3RfZigiJXNzcHJp dGVfJXMiLAo+IAkJCQkgICAgICBhcHBlbmRfc3VidGVzdF9uYW1lW2RhdGEub3BfcHNyX21vZGVd LAo+IAkJCQkgICAgICBvcF9zdHIob3ApKSB7Cj4rCQkJCW5lZWRzX2d0dChvcCk7Cj4gCQkJCWRh dGEub3AgPSBvcDsKPiAJCQkJZGF0YS50ZXN0X3BsYW5lX2lkID0gRFJNX1BMQU5FX1RZUEVfT1ZF UkxBWTsKPiAJCQkJdGVzdF9zZXR1cCgmZGF0YSk7Cj5kaWZmIC0tZ2l0IGEvdGVzdHMvcHJpbWVf bW1hcC5jIGIvdGVzdHMvcHJpbWVfbW1hcC5jCj5pbmRleCA2N2E2YTIzMi4uZTYyNTg2NTEgMTAw NjQ0Cj4tLS0gYS90ZXN0cy9wcmltZV9tbWFwLmMKPisrKyBiL3Rlc3RzL3ByaW1lX21tYXAuYwo+ QEAgLTc4LDYgKzc4LDggQEAgdGVzdF9jb3JyZWN0KHZvaWQpCj4gCWNoYXIgKnB0cjEsICpwdHIy Owo+IAl1aW50MzJfdCBoYW5kbGU7Cj4KPisJZ2VtX3JlcXVpcmVfbW1hcF9ndHQoZmQpOwo+Kwo+ IAloYW5kbGUgPSBnZW1fY3JlYXRlKGZkLCBCT19TSVpFKTsKPiAJZmlsbF9ibyhoYW5kbGUsIEJP X1NJWkUpOwo+Cj5kaWZmIC0tZ2l0IGEvdGVzdHMvcHJpbWVfbW1hcF9jb2hlcmVuY3kuYyBiL3Rl c3RzL3ByaW1lX21tYXBfY29oZXJlbmN5LmMKPmluZGV4IDA0YjE1ZGRkLi45YzM0NGRmOSAxMDA2 NDQKPi0tLSBhL3Rlc3RzL3ByaW1lX21tYXBfY29oZXJlbmN5LmMKPisrKyBiL3Rlc3RzL3ByaW1l X21tYXBfY29oZXJlbmN5LmMKPkBAIC0yOTUsNiArMjk1LDcgQEAgaW50IG1haW4oaW50IGFyZ2Ms IGNoYXIgKiphcmd2KQo+IAkgKiByZXByb2R1Y2luZyBib2lscyBkb3duIHRvIHRyaWFsIGFuZCBl cnJvciB0byBoaXQgZGlmZmVyZW50IHNjZW5hcmlvcy4KPiAJICogVE9ETzogV2UgbWF5IHdhbnQg dG8gaW1wcm92ZSB0ZXN0cyBhIGJpdCBieSBwaWNraW5nIHJhbmRvbSBzdWJyYW5nZXMuICovCj4g CWlndF9zdWJ0ZXN0KCJyZWFkIikgewo+KwkJZ2VtX3JlcXVpcmVfbW1hcF9ndHQoZmQpOwo+IAkJ aWd0X3VudGlsX3RpbWVvdXQoNSkgewo+IAkJCWludCBzdGFsZSA9IHRlc3RfcmVhZF9mbHVzaCgp Owo+IAkJCWlndF9mYWlsX29uX2Yoc3RhbGUsCj5kaWZmIC0tZ2l0IGEvdGVzdHMvcHJpbWVfdmdl bS5jIGIvdGVzdHMvcHJpbWVfdmdlbS5jCj5pbmRleCA2MGJiOTUxYy4uMGM2MGQ1NjkgMTAwNjQ0 Cj4tLS0gYS90ZXN0cy9wcmltZV92Z2VtLmMKPisrKyBiL3Rlc3RzL3ByaW1lX3ZnZW0uYwo+QEAg LTEyNSw2ICsxMjUsOCBAQCBzdGF0aWMgdm9pZCB0ZXN0X2ZlbmNlX21tYXAoaW50IGk5MTUsIGlu dCB2Z2VtKQo+IAlpbnQgZG1hYnVmLCBpOwo+IAlpbnQgbWFzdGVyWzJdLCBzbGF2ZVsyXTsKPgo+ KwlnZW1fcmVxdWlyZV9tbWFwX2d0dChpOTE1KTsKPisKPiAJaWd0X2Fzc2VydChwaXBlKG1hc3Rl cikgPT0gMCk7Cj4gCWlndF9hc3NlcnQocGlwZShzbGF2ZSkgPT0gMCk7Cj4KPkBAIC0yMDcsNiAr MjA5LDggQEAgc3RhdGljIHZvaWQgdGVzdF9ndHQoaW50IHZnZW0sIGludCBpOTE1KQo+IAl1aW50 MzJfdCAqcHRyOwo+IAlpbnQgZG1hYnVmLCBpOwo+Cj4rCWdlbV9yZXF1aXJlX21tYXBfZ3R0KGk5 MTUpOwo+Kwo+IAlzY3JhdGNoLndpZHRoID0gMTAyNDsKPiAJc2NyYXRjaC5oZWlnaHQgPSAxMDI0 Owo+IAlzY3JhdGNoLmJwcCA9IDMyOwo+QEAgLTI4Miw2ICsyODYsNyBAQCBzdGF0aWMgdm9pZCB0 ZXN0X2d0dF9pbnRlcmxlYXZlZChpbnQgdmdlbSwgaW50IGk5MTUpCj4gCXVpbnQzMl90ICpwdHIs ICpndHQ7Cj4gCWludCBkbWFidWYsIGk7Cj4KPisJZ2VtX3JlcXVpcmVfbW1hcF9ndHQoaTkxNSk7 Cj4gCWlndF9yZXF1aXJlKGlzX2NvaGVyZW50KGk5MTUpKTsKPgo+IAlzY3JhdGNoLndpZHRoID0g MTAyNDsKPi0tIAo+Mi4yMC4xCj4KPl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCj5pZ3QtZGV2IG1haWxpbmcgbGlzdAo+aWd0LWRldkBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKPmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v aWd0LWRldgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpp Z3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXY=