From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v8 13/19] drm/i915/dp: Configure i915 Picture parameter Set registers during DSC enabling Date: Tue, 6 Nov 2018 16:36:08 +0200 Message-ID: <20181106143608.GW9144@intel.com> References: <20181102213138.301-1-manasi.d.navare@intel.com> <20181102213138.301-14-manasi.d.navare@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20181102213138.301-14-manasi.d.navare@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Manasi Navare Cc: intel-gfx@lists.freedesktop.org, Anusha Srivatsa , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBOb3YgMDIsIDIwMTggYXQgMDI6MzE6MzJQTSAtMDcwMCwgTWFuYXNpIE5hdmFyZSB3 cm90ZToKPiBBZnRlciBlbmNvZGVyLT5wcmVfZW5hYmxlKCkgaG9vaywgYWZ0ZXIgbGluayB0cmFp bmluZyBzZXF1ZW5jZSBpcwo+IGNvbXBsZXRlZCwgUFBTIHJlZ2lzdGVycyBmb3IgRFNDIGVuY29k ZXIgYXJlIGNvbmZpZ3VyZWQgdXNpbmcgdGhlCj4gRFNDIHN0YXRlIHBhcmFtZXRlcnMgaW4gaW50 ZWxfY3J0Y19zdGF0ZSBhcyBwYXJ0IG9mIERTQyBlbmFibGluZwo+IHJvdXRpbmUgaW4gdGhlIHNv dXJjZS4gRFNDIGVuYWJsaW5nIHJvdXRpbmUgaXMgY2FsbGVkIGFmdGVyCj4gZW5jb2Rlci0+cHJl X2VuYWJsZSgpIGJlZm9yZSBlbmJhbGluZyB0aGUgcGlwZSBhbmQgYWZ0ZXIKPiBjb21wcmVzc2lv biBpcyBlbmFibGVkIG9uIHRoZSBzaW5rLgo+IAo+IHY2Ogo+IGludGVsX2RzY19lbmFibGUgdG8g YmUgcGFydCBvZiBwcmVfZW5hYmxlIGhvb2sgKFZpbGxlKQo+IHY1Ogo+ICogbWFrZSBjcnRjX3N0 YXRlIGNvbnN0IChWaWxsZSkKPiB2NDoKPiAqIFVzZSBjcHVfdHJhbnNjb2RlciBpbnN0ZWFkIG9m IGVuY29kZXItPnR5cGUgZm9yIHVzaW5nIEVEUCB0cmFuc2NvZGVyCj4gRFNDIHJlZ2lzdGVycyhW aWxsZSkKPiAqIEtlZXAgYWxsIFBTUyByZWdzIHRvZ2V0aGVyIChBbnVzaGEpCj4gCj4gdjM6Cj4g KiBDb25maWd1cmUgUGljX3dpZHRoLzIgZm9yIGVhY2ggVkRTQyBlbmdpbmUgd2hlbiB0d28gVkRT QyBlbmdpbmVzIHBlciBwaXBlCj4gYXJlIHVzZWQgKE1hbmFzaSkKPiAqIEFkZCBEU0Mgc2xpY2Vf cm93X3Blcl9mcmFtZSBpbiBQUFMxNiAoTWFuYXNpKQo+IAo+IHYyOgo+ICogRW5hYmxlIFBHMiBw b3dlciB3ZWxsIGZvciBWRFNDIG9uIGVEUAo+IAo+IENjOiBKYW5pIE5pa3VsYSA8amFuaS5uaWt1 bGFAbGludXguaW50ZWwuY29tPgo+IENjOiBWaWxsZSBTeXJqYWxhIDx2aWxsZS5zeXJqYWxhQGxp bnV4LmludGVsLmNvbT4KPiBDYzogQW51c2hhIFNyaXZhdHNhIDxhbnVzaGEuc3JpdmF0c2FAaW50 ZWwuY29tPgo+IFNpZ25lZC1vZmYtYnk6IE1hbmFzaSBOYXZhcmUgPG1hbmFzaS5kLm5hdmFyZUBp bnRlbC5jb20+Cj4gUmV2aWV3ZWQtYnk6IEFudXNoYSBTcml2YXRzYSA8YW51c2hhLnNyaXZhdHNh QGludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAg IHwgICAyICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMgICAgIHwgICA2ICsK PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgICAxICsKPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfdmRzYy5jICAgIHwgNDE5ICsrKysrKysrKysrKysrKysrKysr KysrKysrKwo+ICA0IGZpbGVzIGNoYW5nZWQsIDQyOCBpbnNlcnRpb25zKCspCj4gCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oCj4gaW5kZXggZDc3OTdhNDFjNjQ4Li5mMzQ3ZDBkN2I5ZWIgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtMzQ4NSw2ICszNDg1LDggQEAgZXh0ZXJuIHZv aWQgaW50ZWxfcnBzX21hcmtfaW50ZXJhY3RpdmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUsCj4gIAkJCQkgICAgICAgYm9vbCBpbnRlcmFjdGl2ZSk7Cj4gIGV4dGVybiBib29sIGludGVs X3NldF9tZW1vcnlfY3hzcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJ CQkgIGJvb2wgZW5hYmxlKTsKPiArZXh0ZXJuIHZvaWQgaW50ZWxfZHNjX2VuYWJsZShzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiArCQkJICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7Cj4gIAo+ICBpbnQgaTkxNV9yZWdfcmVhZF9pb2N0bChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ICAJCQlzdHJ1Y3QgZHJtX2ZpbGUgKmZp bGUpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4gaW5kZXggYWYxMmMxNWVkOTRmLi5iYmEw ODMyMmFmYjcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+IEBAIC0yOTYyLDYgKzI5 NjIsMTIgQEAgc3RhdGljIHZvaWQgaW50ZWxfZGRpX3ByZV9lbmFibGVfZHAoc3RydWN0IGludGVs X2VuY29kZXIgKmVuY29kZXIsCj4gIAo+ICAJaWYgKCFpc19tc3QpCj4gIAkJaW50ZWxfZGRpX2Vu YWJsZV9waXBlX2Nsb2NrKGNydGNfc3RhdGUpOwo+ICsKPiArCS8qCj4gKwkgKiBFbmFibGUgYW5k IENvbmZpZ3VyZSBEaXNwbGF5IFN0cmVhbSBDb21wcmVzc2lvbiBpbiB0aGUgc291cmNlCj4gKwkg KiBpZiBlbmFibGVkIGluIGludGVsX2NydGNfc3RhdGUuCj4gKwkgKi8KPiArCWludGVsX2RzY19l bmFibGUoZW5jb2RlciwgY3J0Y19zdGF0ZSk7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIGludGVs X2RkaV9wcmVfZW5hYmxlX2hkbWkoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IDQ3N2U1M2MzNzM1My4uZDNhYTc3 ZjRkNjA2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXku Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IEBAIC01NDE3 LDYgKzU0MTcsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9lbmNvZGVyc19wcmVfZW5hYmxlKHN0cnVj dCBkcm1fY3J0YyAqY3J0YywKPiAgCj4gIAkJaWYgKGVuY29kZXItPnByZV9lbmFibGUpCj4gIAkJ CWVuY29kZXItPnByZV9lbmFibGUoZW5jb2RlciwgY3J0Y19zdGF0ZSwgY29ubl9zdGF0ZSk7Cj4g KwoKQm9ndXMgd2hpdGVzcGFjZSBsZWZ0b3Zlci4gUGxlYXNlIHRyeSB0byByZWFkIHRocm91Z2gg eW91ciBvd24gcGF0Y2hlcwpiZWZvcmUgc2VuZGluZyB0aGVtLiBUaGF0IGdlbmVyYWxseSBoZWxw cyBjYXRjaCBzaWxseSB0aGluZ3MgbGlrZSB0aGlzLgoKPiAgCX0KPiAgfQo+ICAKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdmRzYy5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfdmRzYy5jCj4gaW5kZXggYTc2Zjc4YjljMGVlLi4wZWFhNjk3NzgxNjAgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdmRzYy5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdmRzYy5jCj4gQEAgLTU4MCwzICs1ODAsNDIyIEBAIGlu dCBpbnRlbF9kcF9jb21wdXRlX2RzY19wYXJhbXMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwK PiAgCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICsKPiArc3RhdGljIHZvaWQgaW50ZWxfY29uZmlndXJl X3Bwc19mb3JfZHNjX2VuY29kZXIoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gKwkJ CQkJCWNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICt7Cj4gKwlz dHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5j cnRjKTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5j b2Rlci0+YmFzZS5kZXYpOwo+ICsJY29uc3Qgc3RydWN0IGRybV9kc2NfY29uZmlnICp2ZHNjX2Nm ZyA9ICZjcnRjX3N0YXRlLT5kcF9kc2NfY2ZnOwo+ICsJZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5w aXBlOwo+ICsJZW51bSB0cmFuc2NvZGVyIGNwdV90cmFuc2NvZGVyID0gY3J0Y19zdGF0ZS0+Y3B1 X3RyYW5zY29kZXI7Cj4gKwl1MzIgcHBzX3ZhbCA9IDA7Cj4gKwl1MzIgcmNfYnVmX3RocmVzaF9k d29yZFs0XTsKPiArCXUzMiByY19yYW5nZV9wYXJhbXNfZHdvcmRbOF07Cj4gKwl1OCBudW1fdmRz Y19pbnN0YW5jZXMgPSAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpID8gMiA6IDE7 Cj4gKwlpbnQgaSA9IDA7Cj4gKwo+ICsJLyogUG9wdWxhdGUgUElDVFVSRV9QQVJBTUVURVJfU0VU XzAgcmVnaXN0ZXJzICovCj4gKwlwcHNfdmFsID0gRFNDX1ZFUl9NQUogfCB2ZHNjX2NmZy0+ZHNj X3ZlcnNpb25fbWlub3IgPDwKPiArCQlEU0NfVkVSX01JTl9TSElGVCB8Cj4gKwkJdmRzY19jZmct PmJpdHNfcGVyX2NvbXBvbmVudCA8PCBEU0NfQlBDX1NISUZUIHwKPiArCQl2ZHNjX2NmZy0+bGlu ZV9idWZfZGVwdGggPDwgRFNDX0xJTkVfQlVGX0RFUFRIX1NISUZUOwo+ICsJaWYgKHZkc2NfY2Zn LT5ibG9ja19wcmVkX2VuYWJsZSkKPiArCQlwcHNfdmFsIHw9IERTQ19CTE9DS19QUkVESUNUSU9O Owo+ICsJZWxzZQo+ICsJCXBwc192YWwgJj0gfkRTQ19CTE9DS19QUkVESUNUSU9OOwo+ICsJaWYg KHZkc2NfY2ZnLT5jb252ZXJ0X3JnYikKPiArCQlwcHNfdmFsIHw9IERTQ19DT0xPUl9TUEFDRV9D T05WRVJTSU9OOwo+ICsJZWxzZQo+ICsJCXBwc192YWwgJj0gfkRTQ19DT0xPUl9TUEFDRV9DT05W RVJTSU9OOwo+ICsJaWYgKHZkc2NfY2ZnLT5lbmFibGU0MjIpCj4gKwkJcHBzX3ZhbCB8PSBEU0Nf NDIyX0VOQUJMRTsKPiArCWVsc2UKPiArCQlwcHNfdmFsICY9IH5EU0NfNDIyX0VOQUJMRTsKPiAr CWlmICh2ZHNjX2NmZy0+dmJyX2VuYWJsZSkKPiArCQlwcHNfdmFsIHw9IERTQ19WQlJfRU5BQkxF Owo+ICsJZWxzZQo+ICsJCXBwc192YWwgJj0gfkRTQ19WQlJfRU5BQkxFOwo+ICsKPiArCURSTV9J TkZPKCJQUFMwID0gMHglMDh4XG4iLCBwcHNfdmFsKTsKPiArCWlmIChjcHVfdHJhbnNjb2RlciA9 PSBUUkFOU0NPREVSX0VEUCkgewo+ICsJCUk5MTVfV1JJVEUoRFNDQV9QSUNUVVJFX1BBUkFNRVRF Ul9TRVRfMCwgcHBzX3ZhbCk7Cj4gKwkJLyoKPiArCQkgKiBJZiAyIFZEU0MgaW5zdGFuY2VzIGFy ZSBuZWVkZWQsIGNvbmZpZ3VyZSBQUFMgZm9yIHNlY29uZAo+ICsJCSAqIFZEU0MKPiArCQkgKi8K PiArCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpCj4gKwkJCUk5MTVfV1JJ VEUoRFNDQ19QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMCwgcHBzX3ZhbCk7Cj4gKwl9IGVsc2Ugewo+ ICsJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUElDVFVSRV9QQVJBTUVURVJfU0VUXzAocGlwZSksIHBw c192YWwpOwo+ICsJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKPiArCQkJ STkxNV9XUklURShJQ0xfRFNDMV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMChwaXBlKSwKPiArCQkJ CSAgIHBwc192YWwpOwo+ICsJfQo+ICsKPiArCS8qIFBvcHVsYXRlIFBJQ1RVUkVfUEFSQU1FVEVS X1NFVF8xIHJlZ2lzdGVycyAqLwo+ICsJcHBzX3ZhbCA9IDA7Cj4gKwlwcHNfdmFsIHw9IERTQ19C UFAodmRzY19jZmctPmJpdHNfcGVyX3BpeGVsKTsKPiArCURSTV9JTkZPKCJQUFMxID0gMHglMDh4 XG4iLCBwcHNfdmFsKTsKPiArCWlmIChjcHVfdHJhbnNjb2RlciA9PSBUUkFOU0NPREVSX0VEUCkg ewo+ICsJCUk5MTVfV1JJVEUoRFNDQV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMSwgcHBzX3ZhbCk7 Cj4gKwkJLyoKPiArCQkgKiBJZiAyIFZEU0MgaW5zdGFuY2VzIGFyZSBuZWVkZWQsIGNvbmZpZ3Vy ZSBQUFMgZm9yIHNlY29uZAo+ICsJCSAqIFZEU0MKPiArCQkgKi8KPiArCQlpZiAoY3J0Y19zdGF0 ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpCj4gKwkJCUk5MTVfV1JJVEUoRFNDQ19QSUNUVVJFX1BB UkFNRVRFUl9TRVRfMSwgcHBzX3ZhbCk7Cj4gKwl9IGVsc2Ugewo+ICsJCUk5MTVfV1JJVEUoSUNM X0RTQzBfUElDVFVSRV9QQVJBTUVURVJfU0VUXzEocGlwZSksIHBwc192YWwpOwo+ICsJCWlmIChj cnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKPiArCQkJSTkxNV9XUklURShJQ0xfRFND MV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMShwaXBlKSwKPiArCQkJCSAgIHBwc192YWwpOwo+ICsJ fQo+ICsKPiArCS8qIFBvcHVsYXRlIFBJQ1RVUkVfUEFSQU1FVEVSX1NFVF8yIHJlZ2lzdGVycyAq Lwo+ICsJcHBzX3ZhbCA9IDA7Cj4gKwlwcHNfdmFsIHw9IERTQ19QSUNfSEVJR0hUKHZkc2NfY2Zn LT5waWNfaGVpZ2h0KSB8Cj4gKwkJRFNDX1BJQ19XSURUSCh2ZHNjX2NmZy0+cGljX3dpZHRoIC8g bnVtX3Zkc2NfaW5zdGFuY2VzKTsKPiArCURSTV9JTkZPKCJQUFMyID0gMHglMDh4XG4iLCBwcHNf dmFsKTsKPiArCWlmIChlbmNvZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9FRFApIHsKPiArCQlJ OTE1X1dSSVRFKERTQ0FfUElDVFVSRV9QQVJBTUVURVJfU0VUXzIsIHBwc192YWwpOwo+ICsJCS8q Cj4gKwkJICogSWYgMiBWRFNDIGluc3RhbmNlcyBhcmUgbmVlZGVkLCBjb25maWd1cmUgUFBTIGZv ciBzZWNvbmQKPiArCQkgKiBWRFNDCj4gKwkJICovCj4gKwkJaWYgKGNydGNfc3RhdGUtPmRzY19w YXJhbXMuZHNjX3NwbGl0KQo+ICsJCQlJOTE1X1dSSVRFKERTQ0NfUElDVFVSRV9QQVJBTUVURVJf U0VUXzIsIHBwc192YWwpOwo+ICsJfSBlbHNlIHsKPiArCQlJOTE1X1dSSVRFKElDTF9EU0MwX1BJ Q1RVUkVfUEFSQU1FVEVSX1NFVF8yKHBpcGUpLCBwcHNfdmFsKTsKPiArCQlpZiAoY3J0Y19zdGF0 ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpCj4gKwkJCUk5MTVfV1JJVEUoSUNMX0RTQzFfUElDVFVS RV9QQVJBTUVURVJfU0VUXzIocGlwZSksCj4gKwkJCQkgICBwcHNfdmFsKTsKPiArCX0KPiArCj4g KwkvKiBQb3B1bGF0ZSBQSUNUVVJFX1BBUkFNRVRFUl9TRVRfMyByZWdpc3RlcnMgKi8KPiArCXBw c192YWwgPSAwOwo+ICsJcHBzX3ZhbCB8PSBEU0NfU0xJQ0VfSEVJR0hUKHZkc2NfY2ZnLT5zbGlj ZV9oZWlnaHQpIHwKPiArCQlEU0NfU0xJQ0VfV0lEVEgodmRzY19jZmctPnNsaWNlX3dpZHRoKTsK PiArCURSTV9JTkZPKCJQUFMzID0gMHglMDh4XG4iLCBwcHNfdmFsKTsKPiArCWlmIChjcHVfdHJh bnNjb2RlciA9PSBUUkFOU0NPREVSX0VEUCkgewo+ICsJCUk5MTVfV1JJVEUoRFNDQV9QSUNUVVJF X1BBUkFNRVRFUl9TRVRfMywgcHBzX3ZhbCk7Cj4gKwkJLyoKPiArCQkgKiBJZiAyIFZEU0MgaW5z dGFuY2VzIGFyZSBuZWVkZWQsIGNvbmZpZ3VyZSBQUFMgZm9yIHNlY29uZAo+ICsJCSAqIFZEU0MK PiArCQkgKi8KPiArCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpCj4gKwkJ CUk5MTVfV1JJVEUoRFNDQ19QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMywgcHBzX3ZhbCk7Cj4gKwl9 IGVsc2Ugewo+ICsJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUElDVFVSRV9QQVJBTUVURVJfU0VUXzMo cGlwZSksIHBwc192YWwpOwo+ICsJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxp dCkKPiArCQkJSTkxNV9XUklURShJQ0xfRFNDMV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMyhwaXBl KSwKPiArCQkJCSAgIHBwc192YWwpOwo+ICsJfQo+ICsKPiArCS8qIFBvcHVsYXRlIFBJQ1RVUkVf UEFSQU1FVEVSX1NFVF80IHJlZ2lzdGVycyAqLwo+ICsJcHBzX3ZhbCA9IDA7Cj4gKwlwcHNfdmFs IHw9IERTQ19JTklUSUFMX1hNSVRfREVMQVkodmRzY19jZmctPmluaXRpYWxfeG1pdF9kZWxheSkg fAo+ICsJCURTQ19JTklUSUFMX0RFQ19ERUxBWSh2ZHNjX2NmZy0+aW5pdGlhbF9kZWNfZGVsYXkp Owo+ICsJRFJNX0lORk8oIlBQUzQgPSAweCUwOHhcbiIsIHBwc192YWwpOwo+ICsJaWYgKGNwdV90 cmFuc2NvZGVyID09IFRSQU5TQ09ERVJfRURQKSB7Cj4gKwkJSTkxNV9XUklURShEU0NBX1BJQ1RV UkVfUEFSQU1FVEVSX1NFVF80LCBwcHNfdmFsKTsKPiArCQkvKgo+ICsJCSAqIElmIDIgVkRTQyBp bnN0YW5jZXMgYXJlIG5lZWRlZCwgY29uZmlndXJlIFBQUyBmb3Igc2Vjb25kCj4gKwkJICogVkRT Qwo+ICsJCSAqLwo+ICsJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKPiAr CQkJSTkxNV9XUklURShEU0NDX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF80LCBwcHNfdmFsKTsKPiAr CX0gZWxzZSB7Cj4gKwkJSTkxNV9XUklURShJQ0xfRFNDMF9QSUNUVVJFX1BBUkFNRVRFUl9TRVRf NChwaXBlKSwgcHBzX3ZhbCk7Cj4gKwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3Nw bGl0KQo+ICsJCQlJOTE1X1dSSVRFKElDTF9EU0MxX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF80KHBp cGUpLAo+ICsJCQkJICAgcHBzX3ZhbCk7Cj4gKwl9Cj4gKwo+ICsJLyogUG9wdWxhdGUgUElDVFVS RV9QQVJBTUVURVJfU0VUXzUgcmVnaXN0ZXJzICovCj4gKwlwcHNfdmFsID0gMDsKPiArCXBwc192 YWwgfD0gRFNDX1NDQUxFX0lOQ19JTlQodmRzY19jZmctPnNjYWxlX2luY3JlbWVudF9pbnRlcnZh bCkgfAo+ICsJCURTQ19TQ0FMRV9ERUNfSU5UKHZkc2NfY2ZnLT5zY2FsZV9kZWNyZW1lbnRfaW50 ZXJ2YWwpOwo+ICsJRFJNX0lORk8oIlBQUzUgPSAweCUwOHhcbiIsIHBwc192YWwpOwo+ICsJaWYg KGNwdV90cmFuc2NvZGVyID09IFRSQU5TQ09ERVJfRURQKSB7Cj4gKwkJSTkxNV9XUklURShEU0NB X1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF81LCBwcHNfdmFsKTsKPiArCQkvKgo+ICsJCSAqIElmIDIg VkRTQyBpbnN0YW5jZXMgYXJlIG5lZWRlZCwgY29uZmlndXJlIFBQUyBmb3Igc2Vjb25kCj4gKwkJ ICogVkRTQwo+ICsJCSAqLwo+ICsJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxp dCkKPiArCQkJSTkxNV9XUklURShEU0NDX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF81LCBwcHNfdmFs KTsKPiArCX0gZWxzZSB7Cj4gKwkJSTkxNV9XUklURShJQ0xfRFNDMF9QSUNUVVJFX1BBUkFNRVRF Ul9TRVRfNShwaXBlKSwgcHBzX3ZhbCk7Cj4gKwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMu ZHNjX3NwbGl0KQo+ICsJCQlJOTE1X1dSSVRFKElDTF9EU0MxX1BJQ1RVUkVfUEFSQU1FVEVSX1NF VF81KHBpcGUpLAo+ICsJCQkJICAgcHBzX3ZhbCk7Cj4gKwl9Cj4gKwo+ICsJLyogUG9wdWxhdGUg UElDVFVSRV9QQVJBTUVURVJfU0VUXzYgcmVnaXN0ZXJzICovCj4gKwlwcHNfdmFsID0gMDsKPiAr CXBwc192YWwgfD0gRFNDX0lOSVRJQUxfU0NBTEVfVkFMVUUodmRzY19jZmctPmluaXRpYWxfc2Nh bGVfdmFsdWUpIHwKPiArCQlEU0NfRklSU1RfTElORV9CUEdfT0ZGU0VUKHZkc2NfY2ZnLT5maXJz dF9saW5lX2JwZ19vZmZzZXQpIHwKPiArCQlEU0NfRkxBVE5FU1NfTUlOX1FQKHZkc2NfY2ZnLT5m bGF0bmVzc19taW5fcXApIHwKPiArCQlEU0NfRkxBVE5FU1NfTUFYX1FQKHZkc2NfY2ZnLT5mbGF0 bmVzc19tYXhfcXApOwo+ICsJRFJNX0lORk8oIlBQUzYgPSAweCUwOHhcbiIsIHBwc192YWwpOwo+ ICsJaWYgKGNwdV90cmFuc2NvZGVyID09IFRSQU5TQ09ERVJfRURQKSB7Cj4gKwkJSTkxNV9XUklU RShEU0NBX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF82LCBwcHNfdmFsKTsKPiArCQkvKgo+ICsJCSAq IElmIDIgVkRTQyBpbnN0YW5jZXMgYXJlIG5lZWRlZCwgY29uZmlndXJlIFBQUyBmb3Igc2Vjb25k Cj4gKwkJICogVkRTQwo+ICsJCSAqLwo+ICsJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRz Y19zcGxpdCkKPiArCQkJSTkxNV9XUklURShEU0NDX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF82LCBw cHNfdmFsKTsKPiArCX0gZWxzZSB7Cj4gKwkJSTkxNV9XUklURShJQ0xfRFNDMF9QSUNUVVJFX1BB UkFNRVRFUl9TRVRfNihwaXBlKSwgcHBzX3ZhbCk7Cj4gKwkJaWYgKGNydGNfc3RhdGUtPmRzY19w YXJhbXMuZHNjX3NwbGl0KQo+ICsJCQlJOTE1X1dSSVRFKElDTF9EU0MxX1BJQ1RVUkVfUEFSQU1F VEVSX1NFVF82KHBpcGUpLAo+ICsJCQkJICAgcHBzX3ZhbCk7Cj4gKwl9Cj4gKwo+ICsJLyogUG9w dWxhdGUgUElDVFVSRV9QQVJBTUVURVJfU0VUXzcgcmVnaXN0ZXJzICovCj4gKwlwcHNfdmFsID0g MDsKPiArCXBwc192YWwgfD0gRFNDX1NMSUNFX0JQR19PRkZTRVQodmRzY19jZmctPnNsaWNlX2Jw Z19vZmZzZXQpIHwKPiArCQlEU0NfTkZMX0JQR19PRkZTRVQodmRzY19jZmctPm5mbF9icGdfb2Zm c2V0KTsKPiArCURSTV9JTkZPKCJQUFM3ID0gMHglMDh4XG4iLCBwcHNfdmFsKTsKPiArCWlmIChj cHVfdHJhbnNjb2RlciA9PSBUUkFOU0NPREVSX0VEUCkgewo+ICsJCUk5MTVfV1JJVEUoRFNDQV9Q SUNUVVJFX1BBUkFNRVRFUl9TRVRfNywgcHBzX3ZhbCk7Cj4gKwkJLyoKPiArCQkgKiBJZiAyIFZE U0MgaW5zdGFuY2VzIGFyZSBuZWVkZWQsIGNvbmZpZ3VyZSBQUFMgZm9yIHNlY29uZAo+ICsJCSAq IFZEU0MKPiArCQkgKi8KPiArCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQp Cj4gKwkJCUk5MTVfV1JJVEUoRFNDQ19QSUNUVVJFX1BBUkFNRVRFUl9TRVRfNywgcHBzX3ZhbCk7 Cj4gKwl9IGVsc2Ugewo+ICsJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUElDVFVSRV9QQVJBTUVURVJf U0VUXzcocGlwZSksIHBwc192YWwpOwo+ICsJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRz Y19zcGxpdCkKPiArCQkJSTkxNV9XUklURShJQ0xfRFNDMV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRf NyhwaXBlKSwKPiArCQkJCSAgIHBwc192YWwpOwo+ICsJfQo+ICsKPiArCS8qIFBvcHVsYXRlIFBJ Q1RVUkVfUEFSQU1FVEVSX1NFVF84IHJlZ2lzdGVycyAqLwo+ICsJcHBzX3ZhbCA9IDA7Cj4gKwlw cHNfdmFsIHw9IERTQ19GSU5BTF9PRkZTRVQodmRzY19jZmctPmZpbmFsX29mZnNldCkgfAo+ICsJ CURTQ19JTklUSUFMX09GRlNFVCh2ZHNjX2NmZy0+aW5pdGlhbF9vZmZzZXQpOwo+ICsJRFJNX0lO Rk8oIlBQUzggPSAweCUwOHhcbiIsIHBwc192YWwpOwo+ICsJaWYgKGNwdV90cmFuc2NvZGVyID09 IFRSQU5TQ09ERVJfRURQKSB7Cj4gKwkJSTkxNV9XUklURShEU0NBX1BJQ1RVUkVfUEFSQU1FVEVS X1NFVF84LCBwcHNfdmFsKTsKPiArCQkvKgo+ICsJCSAqIElmIDIgVkRTQyBpbnN0YW5jZXMgYXJl IG5lZWRlZCwgY29uZmlndXJlIFBQUyBmb3Igc2Vjb25kCj4gKwkJICogVkRTQwo+ICsJCSAqLwo+ ICsJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKPiArCQkJSTkxNV9XUklU RShEU0NDX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF84LCBwcHNfdmFsKTsKPiArCX0gZWxzZSB7Cj4g KwkJSTkxNV9XUklURShJQ0xfRFNDMF9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfOChwaXBlKSwgcHBz X3ZhbCk7Cj4gKwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KQo+ICsJCQlJ OTE1X1dSSVRFKElDTF9EU0MxX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF84KHBpcGUpLAo+ICsJCQkJ ICAgcHBzX3ZhbCk7Cj4gKwl9Cj4gKwo+ICsJLyogUG9wdWxhdGUgUElDVFVSRV9QQVJBTUVURVJf U0VUXzkgcmVnaXN0ZXJzICovCj4gKwlwcHNfdmFsID0gMDsKPiArCXBwc192YWwgfD0gRFNDX1JD X01PREVMX1NJWkUoRFNDX1JDX01PREVMX1NJWkVfQ09OU1QpIHwKPiArCQlEU0NfUkNfRURHRV9G QUNUT1IoRFNDX1JDX0VER0VfRkFDVE9SX0NPTlNUKTsKPiArCURSTV9JTkZPKCJQUFM5ID0gMHgl MDh4XG4iLCBwcHNfdmFsKTsKPiArCWlmIChjcHVfdHJhbnNjb2RlciA9PSBUUkFOU0NPREVSX0VE UCkgewo+ICsJCUk5MTVfV1JJVEUoRFNDQV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfOSwgcHBzX3Zh bCk7Cj4gKwkJLyoKPiArCQkgKiBJZiAyIFZEU0MgaW5zdGFuY2VzIGFyZSBuZWVkZWQsIGNvbmZp Z3VyZSBQUFMgZm9yIHNlY29uZAo+ICsJCSAqIFZEU0MKPiArCQkgKi8KPiArCQlpZiAoY3J0Y19z dGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpCj4gKwkJCUk5MTVfV1JJVEUoRFNDQ19QSUNUVVJF X1BBUkFNRVRFUl9TRVRfOSwgcHBzX3ZhbCk7Cj4gKwl9IGVsc2Ugewo+ICsJCUk5MTVfV1JJVEUo SUNMX0RTQzBfUElDVFVSRV9QQVJBTUVURVJfU0VUXzkocGlwZSksIHBwc192YWwpOwo+ICsJCWlm IChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKPiArCQkJSTkxNV9XUklURShJQ0xf RFNDMV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfOShwaXBlKSwKPiArCQkJCSAgIHBwc192YWwpOwo+ ICsJfQo+ICsKPiArCS8qIFBvcHVsYXRlIFBJQ1RVUkVfUEFSQU1FVEVSX1NFVF8xMCByZWdpc3Rl cnMgKi8KPiArCXBwc192YWwgPSAwOwo+ICsJcHBzX3ZhbCB8PSBEU0NfUkNfUVVBTlRfSU5DX0xJ TUlUMCh2ZHNjX2NmZy0+cmNfcXVhbnRfaW5jcl9saW1pdDApIHwKPiArCQlEU0NfUkNfUVVBTlRf SU5DX0xJTUlUMSh2ZHNjX2NmZy0+cmNfcXVhbnRfaW5jcl9saW1pdDEpIHwKPiArCQlEU0NfUkNf VEFSR0VUX09GRl9ISUdIKERTQ19SQ19UR1RfT0ZGU0VUX0hJX0NPTlNUKSB8Cj4gKwkJRFNDX1JD X1RBUkdFVF9PRkZfTE9XKERTQ19SQ19UR1RfT0ZGU0VUX0xPX0NPTlNUKTsKPiArCURSTV9JTkZP KCJQUFMxMCA9IDB4JTA4eFxuIiwgcHBzX3ZhbCk7Cj4gKwlpZiAoY3B1X3RyYW5zY29kZXIgPT0g VFJBTlNDT0RFUl9FRFApIHsKPiArCQlJOTE1X1dSSVRFKERTQ0FfUElDVFVSRV9QQVJBTUVURVJf U0VUXzEwLCBwcHNfdmFsKTsKPiArCQkvKgo+ICsJCSAqIElmIDIgVkRTQyBpbnN0YW5jZXMgYXJl IG5lZWRlZCwgY29uZmlndXJlIFBQUyBmb3Igc2Vjb25kCj4gKwkJICogVkRTQwo+ICsJCSAqLwo+ ICsJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKPiArCQkJSTkxNV9XUklU RShEU0NDX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF8xMCwgcHBzX3ZhbCk7Cj4gKwl9IGVsc2Ugewo+ ICsJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUElDVFVSRV9QQVJBTUVURVJfU0VUXzEwKHBpcGUpLCBw cHNfdmFsKTsKPiArCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpCj4gKwkJ CUk5MTVfV1JJVEUoSUNMX0RTQzFfUElDVFVSRV9QQVJBTUVURVJfU0VUXzEwKHBpcGUpLAo+ICsJ CQkJICAgcHBzX3ZhbCk7Cj4gKwl9Cj4gKwo+ICsJLyogUG9wdWxhdGUgUGljdHVyZSBwYXJhbWV0 ZXIgc2V0IDE2ICovCj4gKwlwcHNfdmFsID0gMDsKPiArCXBwc192YWwgfD0gRFNDX1NMSUNFX0NI VU5LX1NJWkUodmRzY19jZmctPnNsaWNlX2NodW5rX3NpemUpIHwKPiArCQlEU0NfU0xJQ0VfUEVS X0xJTkUoKHZkc2NfY2ZnLT5waWNfd2lkdGggLyBudW1fdmRzY19pbnN0YW5jZXMpIC8KPiArCQkJ CSAgIHZkc2NfY2ZnLT5zbGljZV93aWR0aCkgfAo+ICsJCURTQ19TTElDRV9ST1dfUEVSX0ZSQU1F KHZkc2NfY2ZnLT5waWNfaGVpZ2h0IC8KPiArCQkJCQl2ZHNjX2NmZy0+c2xpY2VfaGVpZ2h0KTsK PiArCURSTV9JTkZPKCJQUFMxNiA9IDB4JTA4eFxuIiwgcHBzX3ZhbCk7Cj4gKwlpZiAoY3B1X3Ry YW5zY29kZXIgPT0gVFJBTlNDT0RFUl9FRFApIHsKPiArCQlJOTE1X1dSSVRFKERTQ0FfUElDVFVS RV9QQVJBTUVURVJfU0VUXzE2LCBwcHNfdmFsKTsKPiArCQkvKgo+ICsJCSAqIElmIDIgVkRTQyBp bnN0YW5jZXMgYXJlIG5lZWRlZCwgY29uZmlndXJlIFBQUyBmb3Igc2Vjb25kCj4gKwkJICogVkRT Qwo+ICsJCSAqLwo+ICsJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKPiAr CQkJSTkxNV9XUklURShEU0NDX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF8xNiwgcHBzX3ZhbCk7Cj4g Kwl9IGVsc2Ugewo+ICsJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUElDVFVSRV9QQVJBTUVURVJfU0VU XzE2KHBpcGUpLCBwcHNfdmFsKTsKPiArCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nf c3BsaXQpCj4gKwkJCUk5MTVfV1JJVEUoSUNMX0RTQzFfUElDVFVSRV9QQVJBTUVURVJfU0VUXzE2 KHBpcGUpLAo+ICsJCQkJICAgcHBzX3ZhbCk7Cj4gKwl9Cj4gKwo+ICsJLyogUG9wdWxhdGUgdGhl IFJDX0JVRl9USFJFU0ggcmVnaXN0ZXJzICovCj4gKwltZW1zZXQocmNfYnVmX3RocmVzaF9kd29y ZCwgMCwgc2l6ZW9mKHJjX2J1Zl90aHJlc2hfZHdvcmQpKTsKPiArCWZvciAoaSA9IDA7IGkgPCBE U0NfTlVNX0JVRl9SQU5HRVMgLSAxOyBpKyspIHsKPiArCQlyY19idWZfdGhyZXNoX2R3b3JkW2kv NF0gfD0gKHUzMikodmRzY19jZmctPnJjX2J1Zl90aHJlc2hbaV0gPDwKPiArCQkJCQkJICBCSVRT X1BFUl9CWVRFICogKGkgJSA0KSk7Cj4gKwkJRFJNX0lORk8oIiBSQ19CVUZfVEhSRVNIJWQgPSAw eCUwOHhcbiIsIGksCj4gKwkJCSByY19idWZfdGhyZXNoX2R3b3JkW2kvNF0pOwo+ICsJfQo+ICsJ aWYgKGNwdV90cmFuc2NvZGVyID09IFRSQU5TQ09ERVJfRURQKSB7Cj4gKwkJSTkxNV9XUklURShE U0NBX1JDX0JVRl9USFJFU0hfMCwgcmNfYnVmX3RocmVzaF9kd29yZFswXSk7Cj4gKwkJSTkxNV9X UklURShEU0NBX1JDX0JVRl9USFJFU0hfMF9VRFcsIHJjX2J1Zl90aHJlc2hfZHdvcmRbMV0pOwo+ ICsJCUk5MTVfV1JJVEUoRFNDQV9SQ19CVUZfVEhSRVNIXzEsIHJjX2J1Zl90aHJlc2hfZHdvcmRb Ml0pOwo+ICsJCUk5MTVfV1JJVEUoRFNDQV9SQ19CVUZfVEhSRVNIXzFfVURXLCByY19idWZfdGhy ZXNoX2R3b3JkWzNdKTsKPiArCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQp IHsKPiArCQkJSTkxNV9XUklURShEU0NDX1JDX0JVRl9USFJFU0hfMCwKPiArCQkJCSAgIHJjX2J1 Zl90aHJlc2hfZHdvcmRbMF0pOwo+ICsJCQlJOTE1X1dSSVRFKERTQ0NfUkNfQlVGX1RIUkVTSF8w X1VEVywKPiArCQkJCSAgIHJjX2J1Zl90aHJlc2hfZHdvcmRbMV0pOwo+ICsJCQlJOTE1X1dSSVRF KERTQ0NfUkNfQlVGX1RIUkVTSF8xLAo+ICsJCQkJICAgcmNfYnVmX3RocmVzaF9kd29yZFsyXSk7 Cj4gKwkJCUk5MTVfV1JJVEUoRFNDQ19SQ19CVUZfVEhSRVNIXzFfVURXLAo+ICsJCQkJICAgcmNf YnVmX3RocmVzaF9kd29yZFszXSk7Cj4gKwkJfQo+ICsJfSBlbHNlIHsKPiArCQlJOTE1X1dSSVRF KElDTF9EU0MwX1JDX0JVRl9USFJFU0hfMChwaXBlKSwKPiArCQkJICAgcmNfYnVmX3RocmVzaF9k d29yZFswXSk7Cj4gKwkJSTkxNV9XUklURShJQ0xfRFNDMF9SQ19CVUZfVEhSRVNIXzBfVURXKHBp cGUpLAo+ICsJCQkgICByY19idWZfdGhyZXNoX2R3b3JkWzFdKTsKPiArCQlJOTE1X1dSSVRFKElD TF9EU0MwX1JDX0JVRl9USFJFU0hfMShwaXBlKSwKPiArCQkJICAgcmNfYnVmX3RocmVzaF9kd29y ZFsyXSk7Cj4gKwkJSTkxNV9XUklURShJQ0xfRFNDMF9SQ19CVUZfVEhSRVNIXzFfVURXKHBpcGUp LAo+ICsJCQkgICByY19idWZfdGhyZXNoX2R3b3JkWzNdKTsKPiArCQlpZiAoY3J0Y19zdGF0ZS0+ ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpIHsKPiArCQkJSTkxNV9XUklURShJQ0xfRFNDMV9SQ19CVUZf VEhSRVNIXzAocGlwZSksCj4gKwkJCQkgICByY19idWZfdGhyZXNoX2R3b3JkWzBdKTsKPiArCQkJ STkxNV9XUklURShJQ0xfRFNDMV9SQ19CVUZfVEhSRVNIXzBfVURXKHBpcGUpLAo+ICsJCQkJICAg cmNfYnVmX3RocmVzaF9kd29yZFsxXSk7Cj4gKwkJCUk5MTVfV1JJVEUoSUNMX0RTQzFfUkNfQlVG X1RIUkVTSF8xKHBpcGUpLAo+ICsJCQkJICAgcmNfYnVmX3RocmVzaF9kd29yZFsyXSk7Cj4gKwkJ CUk5MTVfV1JJVEUoSUNMX0RTQzFfUkNfQlVGX1RIUkVTSF8xX1VEVyhwaXBlKSwKPiArCQkJCSAg IHJjX2J1Zl90aHJlc2hfZHdvcmRbM10pOwo+ICsJCX0KPiArCX0KPiArCj4gKwkvKiBQb3B1bGF0 ZSB0aGUgUkNfUkFOR0VfUEFSQU1FVEVSUyByZWdpc3RlcnMgKi8KPiArCW1lbXNldChyY19yYW5n ZV9wYXJhbXNfZHdvcmQsIDAsIHNpemVvZihyY19yYW5nZV9wYXJhbXNfZHdvcmQpKTsKPiArCWZv ciAoaSA9IDA7IGkgPCBEU0NfTlVNX0JVRl9SQU5HRVM7IGkrKykgewo+ICsJCXJjX3JhbmdlX3Bh cmFtc19kd29yZFtpLzJdIHw9ICh1MzIpKCgodmRzY19jZmctPnJjX3JhbmdlX3BhcmFtc1tpXS5y YW5nZV9icGdfb2Zmc2V0IDw8Cj4gKwkJCQkJCSAgICAgIFJDX0JQR19PRkZTRVRfU0hJRlQpIHwK PiArCQkJCQkJICAgICAodmRzY19jZmctPnJjX3JhbmdlX3BhcmFtc1tpXS5yYW5nZV9tYXhfcXAg PDwKPiArCQkJCQkJICAgICAgUkNfTUFYX1FQX1NISUZUKSB8Cj4gKwkJCQkJCSAgICAgKHZkc2Nf Y2ZnLT5yY19yYW5nZV9wYXJhbXNbaV0ucmFuZ2VfbWluX3FwIDw8Cj4gKwkJCQkJCSAgICAgIFJD X01JTl9RUF9TSElGVCkpIDw8IDE2ICogKGkgJSAyKSk7Cj4gKwkJRFJNX0lORk8oIiBSQ19SQU5H RV9QQVJBTV8lZCA9IDB4JTA4eFxuIiwgaSwKPiArCQkJIHJjX3JhbmdlX3BhcmFtc19kd29yZFtp LzJdKTsKPiArCX0KPiArCWlmIChjcHVfdHJhbnNjb2RlciA9PSBUUkFOU0NPREVSX0VEUCkgewo+ ICsJCUk5MTVfV1JJVEUoRFNDQV9SQ19SQU5HRV9QQVJBTUVURVJTXzAsCj4gKwkJCSAgIHJjX3Jh bmdlX3BhcmFtc19kd29yZFswXSk7Cj4gKwkJSTkxNV9XUklURShEU0NBX1JDX1JBTkdFX1BBUkFN RVRFUlNfMF9VRFcsCj4gKwkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFsxXSk7Cj4gKwkJSTkx NV9XUklURShEU0NBX1JDX1JBTkdFX1BBUkFNRVRFUlNfMSwKPiArCQkJICAgcmNfcmFuZ2VfcGFy YW1zX2R3b3JkWzJdKTsKPiArCQlJOTE1X1dSSVRFKERTQ0FfUkNfUkFOR0VfUEFSQU1FVEVSU18x X1VEVywKPiArCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzNdKTsKPiArCQlJOTE1X1dSSVRF KERTQ0FfUkNfUkFOR0VfUEFSQU1FVEVSU18yLAo+ICsJCQkgICByY19yYW5nZV9wYXJhbXNfZHdv cmRbNF0pOwo+ICsJCUk5MTVfV1JJVEUoRFNDQV9SQ19SQU5HRV9QQVJBTUVURVJTXzJfVURXLAo+ ICsJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbNV0pOwo+ICsJCUk5MTVfV1JJVEUoRFNDQV9S Q19SQU5HRV9QQVJBTUVURVJTXzMsCj4gKwkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFs2XSk7 Cj4gKwkJSTkxNV9XUklURShEU0NBX1JDX1JBTkdFX1BBUkFNRVRFUlNfM19VRFcsCj4gKwkJCSAg IHJjX3JhbmdlX3BhcmFtc19kd29yZFs3XSk7Cj4gKwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJh bXMuZHNjX3NwbGl0KSB7Cj4gKwkJCUk5MTVfV1JJVEUoRFNDQ19SQ19SQU5HRV9QQVJBTUVURVJT XzAsCj4gKwkJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbMF0pOwo+ICsJCQlJOTE1X1dSSVRF KERTQ0NfUkNfUkFOR0VfUEFSQU1FVEVSU18wX1VEVywKPiArCQkJCSAgIHJjX3JhbmdlX3BhcmFt c19kd29yZFsxXSk7Cj4gKwkJCUk5MTVfV1JJVEUoRFNDQ19SQ19SQU5HRV9QQVJBTUVURVJTXzEs Cj4gKwkJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbMl0pOwo+ICsJCQlJOTE1X1dSSVRFKERT Q0NfUkNfUkFOR0VfUEFSQU1FVEVSU18xX1VEVywKPiArCQkJCSAgIHJjX3JhbmdlX3BhcmFtc19k d29yZFszXSk7Cj4gKwkJCUk5MTVfV1JJVEUoRFNDQ19SQ19SQU5HRV9QQVJBTUVURVJTXzIsCj4g KwkJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbNF0pOwo+ICsJCQlJOTE1X1dSSVRFKERTQ0Nf UkNfUkFOR0VfUEFSQU1FVEVSU18yX1VEVywKPiArCQkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29y ZFs1XSk7Cj4gKwkJCUk5MTVfV1JJVEUoRFNDQ19SQ19SQU5HRV9QQVJBTUVURVJTXzMsCj4gKwkJ CQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbNl0pOwo+ICsJCQlJOTE1X1dSSVRFKERTQ0NfUkNf UkFOR0VfUEFSQU1FVEVSU18zX1VEVywKPiArCQkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFs3 XSk7Cj4gKwkJfQo+ICsJfSBlbHNlIHsKPiArCQlJOTE1X1dSSVRFKElDTF9EU0MwX1JDX1JBTkdF X1BBUkFNRVRFUlNfMChwaXBlKSwKPiArCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzBdKTsK PiArCQlJOTE1X1dSSVRFKElDTF9EU0MwX1JDX1JBTkdFX1BBUkFNRVRFUlNfMF9VRFcocGlwZSks Cj4gKwkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFsxXSk7Cj4gKwkJSTkxNV9XUklURShJQ0xf RFNDMF9SQ19SQU5HRV9QQVJBTUVURVJTXzEocGlwZSksCj4gKwkJCSAgIHJjX3JhbmdlX3BhcmFt c19kd29yZFsyXSk7Cj4gKwkJSTkxNV9XUklURShJQ0xfRFNDMF9SQ19SQU5HRV9QQVJBTUVURVJT XzFfVURXKHBpcGUpLAo+ICsJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbM10pOwo+ICsJCUk5 MTVfV1JJVEUoSUNMX0RTQzBfUkNfUkFOR0VfUEFSQU1FVEVSU18yKHBpcGUpLAo+ICsJCQkgICBy Y19yYW5nZV9wYXJhbXNfZHdvcmRbNF0pOwo+ICsJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUkNfUkFO R0VfUEFSQU1FVEVSU18yX1VEVyhwaXBlKSwKPiArCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3Jk WzVdKTsKPiArCQlJOTE1X1dSSVRFKElDTF9EU0MwX1JDX1JBTkdFX1BBUkFNRVRFUlNfMyhwaXBl KSwKPiArCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzZdKTsKPiArCQlJOTE1X1dSSVRFKElD TF9EU0MwX1JDX1JBTkdFX1BBUkFNRVRFUlNfM19VRFcocGlwZSksCj4gKwkJCSAgIHJjX3Jhbmdl X3BhcmFtc19kd29yZFs3XSk7Cj4gKwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3Nw bGl0KSB7Cj4gKwkJCUk5MTVfV1JJVEUoSUNMX0RTQzFfUkNfUkFOR0VfUEFSQU1FVEVSU18wKHBp cGUpLAo+ICsJCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzBdKTsKPiArCQkJSTkxNV9XUklU RShJQ0xfRFNDMV9SQ19SQU5HRV9QQVJBTUVURVJTXzBfVURXKHBpcGUpLAo+ICsJCQkJICAgcmNf cmFuZ2VfcGFyYW1zX2R3b3JkWzFdKTsKPiArCQkJSTkxNV9XUklURShJQ0xfRFNDMV9SQ19SQU5H RV9QQVJBTUVURVJTXzEocGlwZSksCj4gKwkJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbMl0p Owo+ICsJCQlJOTE1X1dSSVRFKElDTF9EU0MxX1JDX1JBTkdFX1BBUkFNRVRFUlNfMV9VRFcocGlw ZSksCj4gKwkJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbM10pOwo+ICsJCQlJOTE1X1dSSVRF KElDTF9EU0MxX1JDX1JBTkdFX1BBUkFNRVRFUlNfMihwaXBlKSwKPiArCQkJCSAgIHJjX3Jhbmdl X3BhcmFtc19kd29yZFs0XSk7Cj4gKwkJCUk5MTVfV1JJVEUoSUNMX0RTQzFfUkNfUkFOR0VfUEFS QU1FVEVSU18yX1VEVyhwaXBlKSwKPiArCQkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFs1XSk7 Cj4gKwkJCUk5MTVfV1JJVEUoSUNMX0RTQzFfUkNfUkFOR0VfUEFSQU1FVEVSU18zKHBpcGUpLAo+ ICsJCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzZdKTsKPiArCQkJSTkxNV9XUklURShJQ0xf RFNDMV9SQ19SQU5HRV9QQVJBTUVURVJTXzNfVURXKHBpcGUpLAo+ICsJCQkJICAgcmNfcmFuZ2Vf cGFyYW1zX2R3b3JkWzddKTsKPiArCQl9Cj4gKwl9Cj4gK30KPiArCj4gK3ZvaWQgaW50ZWxfZHNj X2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiArCQkgICAgICBjb25zdCBz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiArewo+ICsKPiArCWlmICghY3J0 Y19zdGF0ZS0+ZHNjX3BhcmFtcy5jb21wcmVzc2lvbl9lbmFibGUpCj4gKwkJcmV0dXJuOwo+ICsK PiArCWludGVsX2NvbmZpZ3VyZV9wcHNfZm9yX2RzY19lbmNvZGVyKGVuY29kZXIsIGNydGNfc3Rh dGUpOwo+ICsKPiArCXJldHVybjsKClBvaW50bGVzcyByZXR1cm4KCj4gK30KPiAtLSAKPiAyLjE4 LjAKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vZHJpLWRldmVsCg==