From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH] i915/gvt: Add MIPI DSI support Date: Wed, 28 Jun 2017 18:02:46 +0300 Message-ID: <87mv8sb1ex.fsf@intel.com> References: <1498039083-133924-1-git-send-email-alan.chin.loon.tan@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id E7F746E584 for ; Wed, 28 Jun 2017 14:59:31 +0000 (UTC) In-Reply-To: <1498039083-133924-1-git-send-email-alan.chin.loon.tan@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Alan Tan , intel-gfx@lists.freedesktop.org Cc: He@freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCAyMSBKdW4gMjAxNywgQWxhbiBUYW4gPGFsYW4uY2hpbi5sb29uLnRhbkBpbnRlbC5j b20+IHdyb3RlOgo+IEZyb206IFZpdmVrIEthc2lyZWRkeSA8dml2ZWsua2FzaXJlZGR5QGludGVs LmNvbT4KPgo+IEluIGFkZGl0aW9uIHRvIGFkZGluZyB0aGUgcmVnaXN0ZXJzIGFzc2NvY2lhdGVk IHdpdGggTUlQSSBEU0kKPiBlbmNvZGVyL2Nvbm5lY3Rvciwgd2UgYWxzbyBlbnN1cmUgaW50ZWxf Ymlvc19pbml0KCkgZnVuY3Rpb24KPiBnZXRzIGNhbGxlZCBiZWZvcmUgaW50ZWxfZ3Z0X2luaXQo KSBzbyB0aGF0IHdlIGNhbiBkZXRlY3QgdGhlIHByZXNlbmNlCj4gb2YgTUlQSSBEU0kgZnJvbSB0 aGUgVkJUIGFuZCBkZWNpZGUgd2hldGhlciB0byByZWFkIHRoZSByZWxldmVhbnQKPiByZWdpc3Rl cnMgb3Igbm90LiBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlIGlmIHdlIHJlYWQgTUlQSSByZWdpc3Rl cnMKPiB3aGVuIGl0IGlzIG5vdCBwcmVzZW50LCB0aGlzIGxlYWRzIHRvIGEgaGFuZy4KPgo+IEFs c28sIHNpbmNlIFBJUEVDT05GIHJlZ2lzdGVyIHJlYWRzIDB4MCB3aGVuIE1JUEkgRFNJIGlzIGVu YWJsZWQsCj4gd2UgdHJ5IHRvIGF1Z21lbnQgZnVuY3Rpb25zIGxpa2UgcGlwZV9pc19lbmFibGVk KCkgdG8gZW5zdXJlIHRoYXQKPiBWYmxhbmsgYW5kIEZsaXAgZG9uZSBldmVudHMgYXJlIGZvcndh cmRlZCB0byBEb21VIGJ5IGNhbGxpbmcKPiBpbnRlbF9iaW9zX2lzX2RzaV9wcmVzZW50KCkuIFdl IGRvIHNpbWlsYXIgdGhpbmcgd2l0aCBwbGFuZQo+IHN1cmZhY2UgYW5kIE1NSU8gd3JpdGUgaGFu ZGxlciBhcyB3ZWxsLgo+Cj4gU2lnbmVkLW9mZi1ieTogVml2ZWsgS2FzaXJlZGR5IDx2aXZlay5r YXNpcmVkZHlAaW50ZWwuY29tPgo+IFJldmlld2VkLWJ5OiBIZSwgTWluIDxtaW4uaGVAaW50ZWwu Y29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZGlzcGxheS5jICB8ICAyNzcg KysrKysrLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2hhbmRsZXJzLmMgfCAxMzE3ICsr KysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmMgICAgIHwgICAgOCArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2ly cS5jICAgICB8ICAgMTcgKy0KPiAgNCBmaWxlcyBjaGFuZ2VkLCAxMjQyIGluc2VydGlvbnMoKyks IDM3NyBkZWxldGlvbnMoLSkKClBsZWFzZSBzcGxpdCB1cCB0aGUgcGF0Y2guIFRoaXMgaXMgd2F5 IHRvbyBiaWcgdG8gYmUgcmV2aWV3ZWQgb3IgbWVyZ2VkCmluIG9uZSBnby4KCkVzcGVjaWFsbHkg dGhlIHBhcnRzIHRvdWNoaW5nIGk5MTUgcHJvcGVyIG11c3QgYmUgc3BsaXQgdXAgdG8gcGF0Y2hl cyBvZgp0aGVpciBvd24uCgpZb3UgYWxzbyBoYXZlIHRvbnMgb2Ygd2hpdGVzcGFjZSBhbmQgb3Ro ZXIgdW5yZWxhdGVkIGNoYW5nZXMgaGVyZS4KClRoZXJlIGFyZSBtYW55IGhlbHBmdWwgdGlwcyBh Ym91dCBwYXRjaCBzaXplLCBoZXJlIGFyZSBhIGNvdXBsZSBJIGxpa2U6CgoqIElmIHlvdSBnZXQg YSByZWdyZXNzaW9uIHJlcG9ydCB3aXRoIGEgYmlzZWN0IHBvaW50aW5nIHRvIHRoZSBjb21taXQs CiAgd2lsbCB5b3UgYmUgYWJsZSB0byBzcG90IHRoZSBtaXN0YWtlIHJlYXNvbmFibHkgcXVpY2ts eT8KCiogV2hhdCBpcyB0aGUgaW1wYWN0IG9mIHJldmVydCBpbiB0aGUgYWJvdmUgY2FzZT8gQ2Fu IHlvdSBzcGxpdCB1cCBhbmQKICByZWFycmFuZ2UgdGhlIHBhdGNoL3NlcmllcyBpbiBhIHdheSB0 aGF0IHJldmVydGluZyB0aGUgbWFpbiBmdW5jdGlvbmFsCiAgY2hhbmdlIHN0aWxsIGxlYXZlcyBp biBhbGwgdGhlIHByZXAgd29yaz8KCkJSLApKYW5pLgoKCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3Z0L2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9k aXNwbGF5LmMKPiBpbmRleCA2ZDhmZGU4Li44ZDlmMzI5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d2dC9kaXNwbGF5LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dnQvZGlzcGxheS5jCj4gQEAgLTU1LDYgKzU1LDIwIEBAIHN0YXRpYyBpbnQgZ2V0X2VkcF9waXBl KHN0cnVjdCBpbnRlbF92Z3B1ICp2Z3B1KQo+ICAJcmV0dXJuIHBpcGU7Cj4gIH0KPiAgCj4gK2lu dCBnZXRfZHNpX3BpcGUoc3RydWN0IGludGVsX3ZncHUgKnZncHUpCj4gK3sKPiArCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHZncHUtPmd2dC0+ZGV2X3ByaXY7Cj4gKwl1MzIg ZGF0YSA9IHZncHVfdnJlZyh2Z3B1LCBfTUlQSUFfQ1RSTCk7Cj4gKwo+ICsJZGF0YSAmPSBCWFRf UElQRV9TRUxFQ1RfTUFTSzsKPiArCWRhdGEgPj49IEJYVF9QSVBFX1NFTEVDVF9TSElGVDsKPiAr Cj4gKwlpZiAoZGF0YSA+IFBJUEVfQykKPiArCQlyZXR1cm4gLTE7Cj4gKwllbHNlCj4gKwkJcmV0 dXJuIGRhdGE7Cj4gK30KPiArCj4gIHN0YXRpYyBpbnQgZWRwX3BpcGVfaXNfZW5hYmxlZChzdHJ1 Y3QgaW50ZWxfdmdwdSAqdmdwdSkKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gdmdwdS0+Z3Z0LT5kZXZfcHJpdjsKPiBAQCAtODAsNTggKzk0LDExNyBAQCBzdGF0 aWMgaW50IHBpcGVfaXNfZW5hYmxlZChzdHJ1Y3QgaW50ZWxfdmdwdSAqdmdwdSwgaW50IHBpcGUp Cj4gIAlpZiAoZWRwX3BpcGVfaXNfZW5hYmxlZCh2Z3B1KSAmJgo+ICAJCQlnZXRfZWRwX3BpcGUo dmdwdSkgPT0gcGlwZSkKPiAgCQlyZXR1cm4gMTsKPiArCj4gKwlpZiAoaW50ZWxfYmlvc19pc19k c2lfcHJlc2VudChkZXZfcHJpdiwgTlVMTCkgJiYKPiArCQkJZ2V0X2RzaV9waXBlKHZncHUpID09 IHBpcGUpCj4gKwkJcmV0dXJuIDE7Cj4gKwo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gK3N0YXRp YyB1bnNpZ25lZCBjaGFyIHZpcnR1YWxfZHBfbW9uaXRvcl9lZGlkW0dWVF9FRElEX05VTV1bRURJ RF9TSVpFXSA9IHsKPiArCXsKPiArLyogRURJRCB3aXRoIDEwMjR4NzY4IGFzIGl0cyByZXNvbHV0 aW9uICovCj4gKwkJLypIZWFkZXIqLwo+ICsJCTB4MDAsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYs IDB4ZmYsIDB4ZmYsIDB4MDAsCj4gKwkJLyogVmVuZG9yICYgUHJvZHVjdCBJZGVudGlmaWNhdGlv biAqLwo+ICsJCTB4MjIsIDB4ZjAsIDB4NTQsIDB4MjksIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAs IDB4MDQsIDB4MTcsCj4gKwkJLyogVmVyc2lvbiAmIFJldmlzaW9uICovCj4gKwkJMHgwMSwgMHgw NCwKPiArCQkvKiBCYXNpYyBEaXNwbGF5IFBhcmFtZXRlcnMgJiBGZWF0dXJlcyAqLwo+ICsJCTB4 YTUsIDB4MzQsIDB4MjAsIDB4NzgsIDB4MjMsCj4gKwkJLyogQ29sb3IgQ2hhcmFjdGVyaXN0aWNz ICovCj4gKwkJMHhmYywgMHg4MSwgMHhhNCwgMHg1NSwgMHg0ZCwgMHg5ZCwgMHgyNSwgMHgxMiwg MHg1MCwgMHg1NCwKPiArCQkvKiBFc3RhYmxpc2hlZCBUaW1pbmdzOiBtYXhpbXVtIHJlc29sdXRp b24gaXMgMTAyNHg3NjggKi8KPiArCQkweDIxLCAweDA4LCAweDAwLAo+ICsJCS8qIFN0YW5kYXJk IFRpbWluZ3MuIEFsbCBpbnZhbGlkICovCj4gKwkJMHgwMCwgMHhjMCwgMHgwMCwgMHhjMCwgMHgw MCwgMHg0MCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgwMCwKPiArCQkweDAwLCAweDQwLCAweDAwLCAw eDAwLCAweDAwLCAweDAxLAo+ICsJCS8qIDE4IEJ5dGUgRGF0YSBCbG9ja3MgMTogaW52YWxpZCAq Lwo+ICsJCTB4MDAsIDB4MDAsIDB4ODAsIDB4YTAsIDB4NzAsIDB4YjAsCj4gKwkJMHgyMywgMHg0 MCwgMHgzMCwgMHgyMCwgMHgzNiwgMHgwMCwgMHgwNiwgMHg0NCwgMHgyMSwgMHgwMCwgMHgwMCwg MHgxYSwKPiArCQkvKiAxOCBCeXRlIERhdGEgQmxvY2tzIDI6IGludmFsaWQgKi8KPiArCQkweDAw LCAweDAwLCAweDAwLCAweGZkLCAweDAwLCAweDE4LCAweDNjLCAweDE4LCAweDUwLCAweDExLCAw eDAwLCAweDBhLAo+ICsJCTB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsCj4gKwkJ LyogMTggQnl0ZSBEYXRhIEJsb2NrcyAzOiBpbnZhbGlkICovCj4gKwkJMHgwMCwgMHgwMCwgMHgw MCwgMHhmYywgMHgwMCwgMHg0OCwKPiArCQkweDUwLCAweDIwLCAweDVhLCAweDUyLCAweDMyLCAw eDM0LCAweDM0LCAweDMwLCAweDc3LCAweDBhLCAweDIwLCAweDIwLAo+ICsJCS8qIDE4IEJ5dGUg RGF0YSBCbG9ja3MgNDogaW52YWxpZCAqLwo+ICsJCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZmYsIDB4 MDAsIDB4NDMsIDB4NGUsIDB4MzQsIDB4MzMsIDB4MzAsIDB4MzQsIDB4MzAsCj4gKwkJMHg0NCwg MHg1OCwgMHg1MSwgMHgwYSwgMHgyMCwgMHgyMCwKPiArCQkvKiBFeHRlbnNpb24gQmxvY2sgQ291 bnQgKi8KPiArCQkweDAwLAo+ICsJCS8qIENoZWNrc3VtICovCj4gKwkJMHhlZiwKPiArCX0sCj4g Kwl7Cj4gIC8qIEVESUQgd2l0aCAxOTIweDEyMDAgYXMgaXRzIHJlc29sdXRpb24gKi8KPiAtc3Rh dGljIHVuc2lnbmVkIGNoYXIgdmlydHVhbF9kcF9tb25pdG9yX2VkaWRbXSA9IHsKPiAtCS8qSGVh ZGVyKi8KPiAtCTB4MDAsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4MDAs Cj4gLQkvKiBWZW5kb3IgJiBQcm9kdWN0IElkZW50aWZpY2F0aW9uICovCj4gLQkweDIyLCAweGYw LCAweDU0LCAweDI5LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDE3LAo+IC0JLyog VmVyc2lvbiAmIFJldmlzaW9uICovCj4gLQkweDAxLCAweDA0LAo+IC0JLyogQmFzaWMgRGlzcGxh eSBQYXJhbWV0ZXJzICYgRmVhdHVyZXMgKi8KPiAtCTB4YTUsIDB4MzQsIDB4MjAsIDB4NzgsIDB4 MjMsCj4gLQkvKiBDb2xvciBDaGFyYWN0ZXJpc3RpY3MgKi8KPiAtCTB4ZmMsIDB4ODEsIDB4YTQs IDB4NTUsIDB4NGQsIDB4OWQsIDB4MjUsIDB4MTIsIDB4NTAsIDB4NTQsCj4gLQkvKiBFc3RhYmxp c2hlZCBUaW1pbmdzOiBtYXhpbXVtIHJlc29sdXRpb24gaXMgMTAyNHg3NjggKi8KPiAtCTB4MjEs IDB4MDgsIDB4MDAsCj4gLQkvKgo+IC0JICogU3RhbmRhcmQgVGltaW5ncy4KPiAtCSAqIGJlbG93 IG5ldyByZXNvbHV0aW9ucyBjYW4gYmUgc3VwcG9ydGVkOgo+IC0JICogMTkyMHgxMDgwLCAxMjgw eDcyMCwgMTI4MHg5NjAsIDEyODB4MTAyNCwKPiAtCSAqIDE0NDB4OTAwLCAxNjAweDEyMDAsIDE2 ODB4MTA1MAo+IC0JICovCj4gLQkweGQxLCAweGMwLCAweDgxLCAweGMwLCAweDgxLCAweDQwLCAw eDgxLCAweDgwLCAweDk1LCAweDAwLAo+IC0JMHhhOSwgMHg0MCwgMHhiMywgMHgwMCwgMHgwMSwg MHgwMSwKPiAtCS8qIDE4IEJ5dGUgRGF0YSBCbG9ja3MgMTogbWF4IHJlc29sdXRpb24gaXMgMTky MHgxMjAwICovCj4gLQkweDI4LCAweDNjLCAweDgwLCAweGEwLCAweDcwLCAweGIwLAo+IC0JMHgy MywgMHg0MCwgMHgzMCwgMHgyMCwgMHgzNiwgMHgwMCwgMHgwNiwgMHg0NCwgMHgyMSwgMHgwMCwg MHgwMCwgMHgxYSwKPiAtCS8qIDE4IEJ5dGUgRGF0YSBCbG9ja3MgMjogaW52YWxpZCAqLwo+IC0J MHgwMCwgMHgwMCwgMHgwMCwgMHhmZCwgMHgwMCwgMHgxOCwgMHgzYywgMHgxOCwgMHg1MCwgMHgx MSwgMHgwMCwgMHgwYSwKPiAtCTB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsCj4g LQkvKiAxOCBCeXRlIERhdGEgQmxvY2tzIDM6IGludmFsaWQgKi8KPiAtCTB4MDAsIDB4MDAsIDB4 MDAsIDB4ZmMsIDB4MDAsIDB4NDgsCj4gLQkweDUwLCAweDIwLCAweDVhLCAweDUyLCAweDMyLCAw eDM0LCAweDM0LCAweDMwLCAweDc3LCAweDBhLCAweDIwLCAweDIwLAo+IC0JLyogMTggQnl0ZSBE YXRhIEJsb2NrcyA0OiBpbnZhbGlkICovCj4gLQkweDAwLCAweDAwLCAweDAwLCAweGZmLCAweDAw LCAweDQzLCAweDRlLCAweDM0LCAweDMzLCAweDMwLCAweDM0LCAweDMwLAo+IC0JMHg0NCwgMHg1 OCwgMHg1MSwgMHgwYSwgMHgyMCwgMHgyMCwKPiAtCS8qIEV4dGVuc2lvbiBCbG9jayBDb3VudCAq Lwo+IC0JMHgwMCwKPiAtCS8qIENoZWNrc3VtICovCj4gLQkweDQ1LAo+ICsJCS8qSGVhZGVyKi8K PiArCQkweDAwLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweDAwLAo+ICsJ CS8qIFZlbmRvciAmIFByb2R1Y3QgSWRlbnRpZmljYXRpb24gKi8KPiArCQkweDIyLCAweGYwLCAw eDU0LCAweDI5LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDE3LAo+ICsJCS8qIFZl cnNpb24gJiBSZXZpc2lvbiAqLwo+ICsJCTB4MDEsIDB4MDQsCj4gKwkJLyogQmFzaWMgRGlzcGxh eSBQYXJhbWV0ZXJzICYgRmVhdHVyZXMgKi8KPiArCQkweGE1LCAweDM0LCAweDIwLCAweDc4LCAw eDIzLAo+ICsJCS8qIENvbG9yIENoYXJhY3RlcmlzdGljcyAqLwo+ICsJCTB4ZmMsIDB4ODEsIDB4 YTQsIDB4NTUsIDB4NGQsIDB4OWQsIDB4MjUsIDB4MTIsIDB4NTAsIDB4NTQsCj4gKwkJLyogRXN0 YWJsaXNoZWQgVGltaW5nczogbWF4aW11bSByZXNvbHV0aW9uIGlzIDEwMjR4NzY4ICovCj4gKwkJ MHgyMSwgMHgwOCwgMHgwMCwKPiArCQkvKgo+ICsJCSAqIFN0YW5kYXJkIFRpbWluZ3MuCj4gKwkJ ICogYmVsb3cgbmV3IHJlc29sdXRpb25zIGNhbiBiZSBzdXBwb3J0ZWQ6Cj4gKwkJICogMTkyMHgx MDgwLCAxMjgweDcyMCwgMTI4MHg5NjAsIDEyODB4MTAyNCwKPiArCQkgKiAxNDQweDkwMCwgMTYw MHgxMjAwLCAxNjgweDEwNTAKPiArCQkgKi8KPiArCQkweGQxLCAweGMwLCAweDgxLCAweGMwLCAw eDgxLCAweDQwLCAweDgxLCAweDgwLCAweDk1LCAweDAwLAo+ICsJCTB4YTksIDB4NDAsIDB4YjMs IDB4MDAsIDB4MDEsIDB4MDEsCj4gKwkJLyogMTggQnl0ZSBEYXRhIEJsb2NrcyAxOiBtYXggcmVz b2x1dGlvbiBpcyAxOTIweDEyMDAgKi8KPiArCQkweDI4LCAweDNjLCAweDgwLCAweGEwLCAweDcw LCAweGIwLAo+ICsJCTB4MjMsIDB4NDAsIDB4MzAsIDB4MjAsIDB4MzYsIDB4MDAsIDB4MDYsIDB4 NDQsIDB4MjEsIDB4MDAsIDB4MDAsIDB4MWEsCj4gKwkJLyogMTggQnl0ZSBEYXRhIEJsb2NrcyAy OiBpbnZhbGlkICovCj4gKwkJMHgwMCwgMHgwMCwgMHgwMCwgMHhmZCwgMHgwMCwgMHgxOCwgMHgz YywgMHgxOCwgMHg1MCwgMHgxMSwgMHgwMCwgMHgwYSwKPiArCQkweDIwLCAweDIwLCAweDIwLCAw eDIwLCAweDIwLCAweDIwLAo+ICsJCS8qIDE4IEJ5dGUgRGF0YSBCbG9ja3MgMzogaW52YWxpZCAq Lwo+ICsJCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZmMsIDB4MDAsIDB4NDgsCj4gKwkJMHg1MCwgMHgy MCwgMHg1YSwgMHg1MiwgMHgzMiwgMHgzNCwgMHgzNCwgMHgzMCwgMHg3NywgMHgwYSwgMHgyMCwg MHgyMCwKPiArCQkvKiAxOCBCeXRlIERhdGEgQmxvY2tzIDQ6IGludmFsaWQgKi8KPiArCQkweDAw LCAweDAwLCAweDAwLCAweGZmLCAweDAwLCAweDQzLCAweDRlLCAweDM0LCAweDMzLCAweDMwLCAw eDM0LCAweDMwLAo+ICsJCTB4NDQsIDB4NTgsIDB4NTEsIDB4MGEsIDB4MjAsIDB4MjAsCj4gKwkJ LyogRXh0ZW5zaW9uIEJsb2NrIENvdW50ICovCj4gKwkJMHgwMCwKPiArCQkvKiBDaGVja3N1bSAq Lwo+ICsJCTB4NDUsCj4gKwl9LAo+ICB9Owo+ICAKPiAgI2RlZmluZSBEUENEX0hFQURFUl9TSVpF ICAgICAgICAweGIKPiAgCj4gKy8qIGxldCB0aGUgdmlydHVhbCBkaXNwbGF5IHN1cHBvcnRzIERQ MS4yICovCj4gIHN0YXRpYyB1OCBkcGNkX2ZpeF9kYXRhW0RQQ0RfSEVBREVSX1NJWkVdID0gewo+ IC0JMHgxMSwgMHgwYSwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwg MHgwMCwgMHgwMAo+ICsJMHgxMiwgMHgwMTQsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAs IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAKPiAgfTsKPiAgCj4gIHN0YXRpYyB2b2lkIGVtdWxhdGVf bW9uaXRvcl9zdGF0dXNfY2hhbmdlKHN0cnVjdCBpbnRlbF92Z3B1ICp2Z3B1KQo+ICB7Cj4gIAlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB2Z3B1LT5ndnQtPmRldl9wcml2Owo+ ICsKPiArCWlmIChJU19CUk9YVE9OKGRldl9wcml2KSkgewo+ICsJCXZncHVfdnJlZyh2Z3B1LCBH RU44X0RFX1BPUlRfSVNSKSAmPSB+KEJYVF9ERV9QT1JUX0hQX0RESUEgfAo+ICsJCQkJQlhUX0RF X1BPUlRfSFBfRERJQiB8Cj4gKwkJCQlCWFRfREVfUE9SVF9IUF9ERElDKTsKPiArCj4gKwkJaWYg KGludGVsX3ZncHVfaGFzX21vbml0b3Jfb25fcG9ydCh2Z3B1LCBQT1JUX0EpKQo+ICsJCQl2Z3B1 X3ZyZWcodmdwdSwgR0VOOF9ERV9QT1JUX0lTUikgfD0gQlhUX0RFX1BPUlRfSFBfRERJQTsKPiAr Cj4gKwkJaWYgKGludGVsX3ZncHVfaGFzX21vbml0b3Jfb25fcG9ydCh2Z3B1LCBQT1JUX0IpKQo+ ICsJCQl2Z3B1X3ZyZWcodmdwdSwgR0VOOF9ERV9QT1JUX0lTUikgfD0gQlhUX0RFX1BPUlRfSFBf RERJQjsKPiArCj4gKwkJaWYgKGludGVsX3ZncHVfaGFzX21vbml0b3Jfb25fcG9ydCh2Z3B1LCBQ T1JUX0MpKQo+ICsJCQl2Z3B1X3ZyZWcodmdwdSwgR0VOOF9ERV9QT1JUX0lTUikgfD0gQlhUX0RF X1BPUlRfSFBfRERJQzsKPiArCQlyZXR1cm47Cj4gKwl9Cj4gKwo+ICAJdmdwdV92cmVnKHZncHUs IFNERUlTUikgJj0gfihTREVfUE9SVEJfSE9UUExVR19DUFQgfAo+ICAJCQlTREVfUE9SVENfSE9U UExVR19DUFQgfAo+ICAJCQlTREVfUE9SVERfSE9UUExVR19DUFQpOwo+IEBAIC0xNDAsMTQgKzIx Myw0NyBAQCBzdGF0aWMgdm9pZCBlbXVsYXRlX21vbml0b3Jfc3RhdHVzX2NoYW5nZShzdHJ1Y3Qg aW50ZWxfdmdwdSAqdmdwdSkKPiAgCQl2Z3B1X3ZyZWcodmdwdSwgU0RFSVNSKSAmPSB+KFNERV9Q T1JUQV9IT1RQTFVHX1NQVCB8Cj4gIAkJCQlTREVfUE9SVEVfSE9UUExVR19TUFQpOwo+ICAKPiAt CWlmIChpbnRlbF92Z3B1X2hhc19tb25pdG9yX29uX3BvcnQodmdwdSwgUE9SVF9CKSkKPiArCWlm IChpbnRlbF92Z3B1X2hhc19tb25pdG9yX29uX3BvcnQodmdwdSwgUE9SVF9CKSkgewo+ICsJCXZn cHVfdnJlZyh2Z3B1LCBTRlVTRV9TVFJBUCkgfD0gU0ZVU0VfU1RSQVBfRERJQl9ERVRFQ1RFRDsK PiArCQl2Z3B1X3ZyZWcodmdwdSwgVFJBTlNfRERJX0ZVTkNfQ1RMKFRSQU5TQ09ERVJfQSkpICY9 Cj4gKwkJCX4oVFJBTlNfRERJX0JQQ19NQVNLIHwgVFJBTlNfRERJX01PREVfU0VMRUNUX01BU0sg fAo+ICsJCQlUUkFOU19ERElfUE9SVF9NQVNLKTsKPiArCQl2Z3B1X3ZyZWcodmdwdSwgVFJBTlNf RERJX0ZVTkNfQ1RMKFRSQU5TQ09ERVJfQSkpIHw9Cj4gKwkJCShUUkFOU19ERElfQlBDXzggfCBU UkFOU19ERElfTU9ERV9TRUxFQ1RfRFBfU1NUIHwKPiArCQkJKFBPUlRfQiA8PCBUUkFOU19ERElf UE9SVF9TSElGVCkgfAo+ICsJCQlUUkFOU19ERElfRlVOQ19FTkFCTEUpOwo+ICsJCXZncHVfdnJl Zyh2Z3B1LCBERElfQlVGX0NUTChQT1JUX0IpKSB8PSBERElfQlVGX0NUTF9FTkFCTEU7Cj4gKwkJ dmdwdV92cmVnKHZncHUsIERESV9CVUZfQ1RMKFBPUlRfQikpICY9IH5ERElfQlVGX0lTX0lETEU7 Cj4gIAkJdmdwdV92cmVnKHZncHUsIFNERUlTUikgfD0gU0RFX1BPUlRCX0hPVFBMVUdfQ1BUOwo+ ICsJfQo+ICAKPiAtCWlmIChpbnRlbF92Z3B1X2hhc19tb25pdG9yX29uX3BvcnQodmdwdSwgUE9S VF9DKSkKPiArCWlmIChpbnRlbF92Z3B1X2hhc19tb25pdG9yX29uX3BvcnQodmdwdSwgUE9SVF9D KSkgewo+ICAJCXZncHVfdnJlZyh2Z3B1LCBTREVJU1IpIHw9IFNERV9QT1JUQ19IT1RQTFVHX0NQ VDsKPiArCQl2Z3B1X3ZyZWcodmdwdSwgVFJBTlNfRERJX0ZVTkNfQ1RMKFRSQU5TQ09ERVJfQSkp ICY9Cj4gKwkJCX4oVFJBTlNfRERJX0JQQ19NQVNLIHwgVFJBTlNfRERJX01PREVfU0VMRUNUX01B U0sgfAo+ICsJCQlUUkFOU19ERElfUE9SVF9NQVNLKTsKPiArCQl2Z3B1X3ZyZWcodmdwdSwgVFJB TlNfRERJX0ZVTkNfQ1RMKFRSQU5TQ09ERVJfQSkpIHw9Cj4gKwkJCShUUkFOU19ERElfQlBDXzgg fCBUUkFOU19ERElfTU9ERV9TRUxFQ1RfRFBfU1NUIHwKPiArCQkJKFBPUlRfQyA8PCBUUkFOU19E RElfUE9SVF9TSElGVCkgfAo+ICsJCQlUUkFOU19ERElfRlVOQ19FTkFCTEUpOwo+ICsJCXZncHVf dnJlZyh2Z3B1LCBERElfQlVGX0NUTChQT1JUX0MpKSB8PSBERElfQlVGX0NUTF9FTkFCTEU7Cj4g KwkJdmdwdV92cmVnKHZncHUsIERESV9CVUZfQ1RMKFBPUlRfQykpICY9IH5ERElfQlVGX0lTX0lE TEU7Cj4gKwkJdmdwdV92cmVnKHZncHUsIFNGVVNFX1NUUkFQKSB8PSBTRlVTRV9TVFJBUF9ERElD X0RFVEVDVEVEOwo+ICsJfQo+ICAKPiAtCWlmIChpbnRlbF92Z3B1X2hhc19tb25pdG9yX29uX3Bv cnQodmdwdSwgUE9SVF9EKSkKPiArCWlmIChpbnRlbF92Z3B1X2hhc19tb25pdG9yX29uX3BvcnQo dmdwdSwgUE9SVF9EKSkgewo+ICAJCXZncHVfdnJlZyh2Z3B1LCBTREVJU1IpIHw9IFNERV9QT1JU RF9IT1RQTFVHX0NQVDsKPiArCQl2Z3B1X3ZyZWcodmdwdSwgVFJBTlNfRERJX0ZVTkNfQ1RMKFRS QU5TQ09ERVJfQSkpICY9Cj4gKwkJCX4oVFJBTlNfRERJX0JQQ19NQVNLIHwgVFJBTlNfRERJX01P REVfU0VMRUNUX01BU0sgfAo+ICsJCQlUUkFOU19ERElfUE9SVF9NQVNLKTsKPiArCQl2Z3B1X3Zy ZWcodmdwdSwgVFJBTlNfRERJX0ZVTkNfQ1RMKFRSQU5TQ09ERVJfQSkpIHw9Cj4gKwkJCShUUkFO U19ERElfQlBDXzggfCBUUkFOU19ERElfTU9ERV9TRUxFQ1RfRFBfU1NUIHwKPiArCQkJKFBPUlRf RCA8PCBUUkFOU19ERElfUE9SVF9TSElGVCkgfAo+ICsJCQlUUkFOU19ERElfRlVOQ19FTkFCTEUp Owo+ICsJCXZncHVfdnJlZyh2Z3B1LCBERElfQlVGX0NUTChQT1JUX0QpKSB8PSBERElfQlVGX0NU TF9FTkFCTEU7Cj4gKwkJdmdwdV92cmVnKHZncHUsIERESV9CVUZfQ1RMKFBPUlRfRCkpICY9IH5E RElfQlVGX0lTX0lETEU7Cj4gKwkJdmdwdV92cmVnKHZncHUsIFNGVVNFX1NUUkFQKSB8PSBTRlVT RV9TVFJBUF9ERElEX0RFVEVDVEVEOwo+ICsJfQo+ICAKPiAgCWlmIChJU19TS1lMQUtFKGRldl9w cml2KSAmJgo+ICAJCQlpbnRlbF92Z3B1X2hhc19tb25pdG9yX29uX3BvcnQodmdwdSwgUE9SVF9F KSkgewo+IEBAIC0xNjAsNiArMjY2LDggQEAgc3RhdGljIHZvaWQgZW11bGF0ZV9tb25pdG9yX3N0 YXR1c19jaGFuZ2Uoc3RydWN0IGludGVsX3ZncHUgKnZncHUpCj4gIAkJCQlHRU44X1BPUlRfRFBf QV9IT1RQTFVHOwo+ICAJCWVsc2UKPiAgCQkJdmdwdV92cmVnKHZncHUsIFNERUlTUikgfD0gU0RF X1BPUlRBX0hPVFBMVUdfU1BUOwo+ICsKPiArCQl2Z3B1X3ZyZWcodmdwdSwgRERJX0JVRl9DVEwo UE9SVF9BKSkgfD0gRERJX0lOSVRfRElTUExBWV9ERVRFQ1RFRDsKPiAgCX0KPiAgfQo+ICAKPiBA QCAtMTc1LDkgKzI4MywxNiBAQCBzdGF0aWMgdm9pZCBjbGVhbl92aXJ0dWFsX2RwX21vbml0b3Io c3RydWN0IGludGVsX3ZncHUgKnZncHUsIGludCBwb3J0X251bSkKPiAgfQo+ICAKPiAgc3RhdGlj IGludCBzZXR1cF92aXJ0dWFsX2RwX21vbml0b3Ioc3RydWN0IGludGVsX3ZncHUgKnZncHUsIGlu dCBwb3J0X251bSwKPiAtCQlpbnQgdHlwZSkKPiArCQkJCSAgICBpbnQgdHlwZSwgdW5zaWduZWQg aW50IHJlc29sdXRpb24sIHZvaWQgKmVkaWQpCj4gIHsKPiAgCXN0cnVjdCBpbnRlbF92Z3B1X3Bv cnQgKnBvcnQgPSBpbnRlbF92Z3B1X3BvcnQodmdwdSwgcG9ydF9udW0pOwo+ICsJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdmdwdS0+Z3Z0LT5kZXZfcHJpdjsKPiArCj4gKwlp ZiAoaW50ZWxfYmlvc19pc19kc2lfcHJlc2VudChkZXZfcHJpdiwgTlVMTCkpCj4gKwkJcmV0dXJu IDA7Cj4gKwo+ICsJaWYgKFdBUk5fT04ocmVzb2x1dGlvbiA+PSBHVlRfRURJRF9OVU0pKQo+ICsJ CXJldHVybiAtRUlOVkFMOwo+ICAKPiAgCXBvcnQtPmVkaWQgPSBremFsbG9jKHNpemVvZigqKHBv cnQtPmVkaWQpKSwgR0ZQX0tFUk5FTCk7Cj4gIAlpZiAoIXBvcnQtPmVkaWQpCj4gQEAgLTE4OSw4 ICszMDQsMTIgQEAgc3RhdGljIGludCBzZXR1cF92aXJ0dWFsX2RwX21vbml0b3Ioc3RydWN0IGlu dGVsX3ZncHUgKnZncHUsIGludCBwb3J0X251bSwKPiAgCQlyZXR1cm4gLUVOT01FTTsKPiAgCX0K PiAgCj4gLQltZW1jcHkocG9ydC0+ZWRpZC0+ZWRpZF9ibG9jaywgdmlydHVhbF9kcF9tb25pdG9y X2VkaWQsCj4gLQkJCUVESURfU0laRSk7Cj4gKwlpZiAoZWRpZCkKPiArCQltZW1jcHkocG9ydC0+ ZWRpZC0+ZWRpZF9ibG9jaywgZWRpZCwgRURJRF9TSVpFKTsKPiArCWVsc2UKPiArCQltZW1jcHko cG9ydC0+ZWRpZC0+ZWRpZF9ibG9jaywgdmlydHVhbF9kcF9tb25pdG9yX2VkaWRbcmVzb2x1dGlv bl0sCj4gKwkJCQlFRElEX1NJWkUpOwo+ICsKPiAgCXBvcnQtPmVkaWQtPmRhdGFfdmFsaWQgPSB0 cnVlOwo+ICAKPiAgCW1lbWNweShwb3J0LT5kcGNkLT5kYXRhLCBkcGNkX2ZpeF9kYXRhLCBEUENE X0hFQURFUl9TSVpFKTsKPiBAQCAtMjk1LDYgKzQxNCw2MiBAQCB2b2lkIGludGVsX2d2dF9lbXVs YXRlX3ZibGFuayhzdHJ1Y3QgaW50ZWxfZ3Z0ICpndnQpCj4gIAkJZW11bGF0ZV92Ymxhbmsodmdw dSk7Cj4gIH0KPiAgCj4gK3N0YXRpYyB2b2lkIGludGVsX2d2dF92Ymxhbmtfd29yayhzdHJ1Y3Qg d29ya19zdHJ1Y3QgKncpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9ndnRfcGlwZV9pbmZvICpwaXBl X2luZm8gPSBjb250YWluZXJfb2YodywKPiArCQkJc3RydWN0IGludGVsX2d2dF9waXBlX2luZm8s IHZibGFua193b3JrKTsKPiArCXN0cnVjdCBpbnRlbF9ndnQgKmd2dCA9IHBpcGVfaW5mby0+Z3Z0 Owo+ICsJc3RydWN0IGludGVsX3ZncHUgKnZncHU7Cj4gKwlpbnQgaWQ7Cj4gKwo+ICsJbXV0ZXhf bG9jaygmZ3Z0LT5sb2NrKTsKPiArCWZvcl9lYWNoX2FjdGl2ZV92Z3B1KGd2dCwgdmdwdSwgaWQp Cj4gKwkJZW11bGF0ZV92Ymxhbmtfb25fcGlwZSh2Z3B1LCBwaXBlX2luZm8tPnBpcGVfbnVtKTsK PiArCW11dGV4X3VubG9jaygmZ3Z0LT5sb2NrKTsKPiArfQo+ICsKPiArdm9pZCBpbnRlbF9ndnRf aW5pdF9waXBlX2luZm8oc3RydWN0IGludGVsX2d2dCAqZ3Z0KQo+ICt7Cj4gKwlpbnQgcGlwZTsK PiArCj4gKwlmb3IgKHBpcGUgPSBQSVBFX0E7IHBpcGUgPD0gUElQRV9DOyBwaXBlKyspIHsKPiAr CQlndnQtPnBpcGVfaW5mb1twaXBlXS5waXBlX251bSA9IHBpcGU7Cj4gKwkJZ3Z0LT5waXBlX2lu Zm9bcGlwZV0uZ3Z0ID0gZ3Z0Owo+ICsJCUlOSVRfV09SSygmZ3Z0LT5waXBlX2luZm9bcGlwZV0u dmJsYW5rX3dvcmssCj4gKwkJCQlpbnRlbF9ndnRfdmJsYW5rX3dvcmspOwo+ICsJfQo+ICt9Cj4g Kwo+ICtpbnQgYnh0X3NldHVwX3ZpcnR1YWxfbW9uaXRvcnMoc3RydWN0IGludGVsX3ZncHUgKnZn cHUpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKnAgPSBOVUxMOwo+ICsJaW50IHBp cGUgPSAwOwo+ICsJaW50IHJldCA9IDA7Cj4gKwo+ICsJZm9yX2VhY2hfaW50ZWxfY29ubmVjdG9y KCZ2Z3B1LT5ndnQtPmRldl9wcml2LT5kcm0sIHApIHsKPiArCQlpZiAocC0+ZW5jb2Rlci0+Z2V0 X2h3X3N0YXRlKHAtPmVuY29kZXIsICZwaXBlKSAmJgo+ICsJCQkJcC0+ZGV0ZWN0X2VkaWQpIHsK PiArCQkJcmV0ID0gc2V0dXBfdmlydHVhbF9kcF9tb25pdG9yKHZncHUsIHBpcGUsCj4gKwkJCQkJ R1ZUX0RQX0EgKyBwaXBlLCAwLCBwLT5kZXRlY3RfZWRpZCk7Cj4gKwkJCWlmIChyZXQpCj4gKwkJ CQlyZXR1cm4gcmV0Owo+ICsJCX0KPiArCX0KPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICt2b2lk IGJ4dF9jbGVhbl92aXJ0dWFsX21vbml0b3JzKHN0cnVjdCBpbnRlbF92Z3B1ICp2Z3B1KQo+ICt7 Cj4gKwlpbnQgcG9ydCA9IDA7Cj4gKwo+ICsJZm9yIChwb3J0ID0gUE9SVF9BOyBwb3J0IDwgSU5U RUxfR1ZUX01BWF9QT1JUOyBwb3J0KyspIHsKPiArCQlzdHJ1Y3QgaW50ZWxfdmdwdV9wb3J0ICpw ID0gaW50ZWxfdmdwdV9wb3J0KHZncHUsIHBvcnQpOwo+ICsKPiArCQlpZiAocC0+ZWRpZCkKPiAr CQkJY2xlYW5fdmlydHVhbF9kcF9tb25pdG9yKHZncHUsIHBvcnQpOwo+ICsJfQo+ICt9Cj4gKwo+ ICAvKioKPiAgICogaW50ZWxfdmdwdV9jbGVhbl9kaXNwbGF5IC0gY2xlYW4gdkdQVSB2aXJ0dWFs IGRpc3BsYXkgZW11bGF0aW9uCj4gICAqIEB2Z3B1OiBhIHZHUFUKPiBAQCAtMzA2LDcgKzQ4MSw5 IEBAIHZvaWQgaW50ZWxfdmdwdV9jbGVhbl9kaXNwbGF5KHN0cnVjdCBpbnRlbF92Z3B1ICp2Z3B1 KQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB2Z3B1LT5ndnQt PmRldl9wcml2Owo+ICAKPiAtCWlmIChJU19TS1lMQUtFKGRldl9wcml2KSkKPiArCWlmIChJU19C Uk9YVE9OKGRldl9wcml2KSkKPiArCQlieHRfY2xlYW5fdmlydHVhbF9tb25pdG9ycyh2Z3B1KTsK PiArCWVsc2UgaWYgKElTX1NLWUxBS0UoZGV2X3ByaXYpKQo+ICAJCWNsZWFuX3ZpcnR1YWxfZHBf bW9uaXRvcih2Z3B1LCBQT1JUX0QpOwo+ICAJZWxzZQo+ICAJCWNsZWFuX3ZpcnR1YWxfZHBfbW9u aXRvcih2Z3B1LCBQT1JUX0IpOwo+IEBAIC0zMjIsMTYgKzQ5OSwxOCBAQCB2b2lkIGludGVsX3Zn cHVfY2xlYW5fZGlzcGxheShzdHJ1Y3QgaW50ZWxfdmdwdSAqdmdwdSkKPiAgICogWmVybyBvbiBz dWNjZXNzLCBuZWdhdGl2ZSBlcnJvciBjb2RlIGlmIGZhaWxlZC4KPiAgICoKPiAgICovCj4gLWlu dCBpbnRlbF92Z3B1X2luaXRfZGlzcGxheShzdHJ1Y3QgaW50ZWxfdmdwdSAqdmdwdSkKPiAraW50 IGludGVsX3ZncHVfaW5pdF9kaXNwbGF5KHN0cnVjdCBpbnRlbF92Z3B1ICp2Z3B1LCB1NjQgcmVz b2x1dGlvbikKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdmdw dS0+Z3Z0LT5kZXZfcHJpdjsKPiAgCj4gIAlpbnRlbF92Z3B1X2luaXRfaTJjX2VkaWQodmdwdSk7 Cj4gIAo+IC0JaWYgKElTX1NLWUxBS0UoZGV2X3ByaXYpKQo+IC0JCXJldHVybiBzZXR1cF92aXJ0 dWFsX2RwX21vbml0b3IodmdwdSwgUE9SVF9ELCBHVlRfRFBfRCk7Cj4gKwlpZiAoSVNfQlJPWFRP TihkZXZfcHJpdikpCj4gKwkJcmV0dXJuIGJ4dF9zZXR1cF92aXJ0dWFsX21vbml0b3JzKHZncHUp Owo+ICsJZWxzZSBpZiAoSVNfU0tZTEFLRShkZXZfcHJpdikpCj4gKwkJcmV0dXJuIHNldHVwX3Zp cnR1YWxfZHBfbW9uaXRvcih2Z3B1LCBQT1JUX0QsIEdWVF9EUF9ELCByZXNvbHV0aW9uLCBOVUxM KTsKPiAgCWVsc2UKPiAtCQlyZXR1cm4gc2V0dXBfdmlydHVhbF9kcF9tb25pdG9yKHZncHUsIFBP UlRfQiwgR1ZUX0RQX0IpOwo+ICsJCXJldHVybiBzZXR1cF92aXJ0dWFsX2RwX21vbml0b3Iodmdw dSwgUE9SVF9CLCBHVlRfRFBfQiwgcmVzb2x1dGlvbiwgTlVMTCk7Cj4gIH0KPiAgCj4gIC8qKgo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvaGFuZGxlcnMuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d2dC9oYW5kbGVycy5jCj4gaW5kZXggMWQ0NTA2Mi4uMTZiY2MwMSAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvaGFuZGxlcnMuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9oYW5kbGVycy5jCj4gQEAgLTYyLDEyICs2MiwxNiBA QAo+ICAvKiBUaGlzIHJlZyBjb3VsZCBiZSBhY2Nlc3NlZCBieSB1bmFsaWduZWQgYWRkcmVzcyAq Lwo+ICAjZGVmaW5lIEZfVU5BTElHTgkoMSA8PCA2KQo+ICAKPiArZXh0ZXJuIGludCBnZXRfZHNp X3BpcGUoc3RydWN0IGludGVsX3ZncHUgKnZncHUpOwo+ICsKPiAgdW5zaWduZWQgbG9uZyBpbnRl bF9ndnRfZ2V0X2RldmljZV90eXBlKHN0cnVjdCBpbnRlbF9ndnQgKmd2dCkKPiAgewo+ICAJaWYg KElTX0JST0FEV0VMTChndnQtPmRldl9wcml2KSkKPiAgCQlyZXR1cm4gRF9CRFc7Cj4gIAllbHNl IGlmIChJU19TS1lMQUtFKGd2dC0+ZGV2X3ByaXYpKQo+ICAJCXJldHVybiBEX1NLTDsKPiArCWVs c2UgaWYgKElTX0JST1hUT04oZ3Z0LT5kZXZfcHJpdikpCj4gKwkJcmV0dXJuIERfQlhUOwo+ICAK PiAgCXJldHVybiAwOwo+ICB9Cj4gQEAgLTEyMSw2ICsxMjUsNyBAQCBzdGF0aWMgaW50IG5ld19t bWlvX2luZm8oc3RydWN0IGludGVsX2d2dCAqZ3Z0LAo+ICAJCWluZm8tPnNpemUgPSBzaXplOwo+ ICAJCWluZm8tPmxlbmd0aCA9IChpICsgNCkgPCBlbmQgPyA0IDogKGVuZCAtIGkpOwo+ICAJCWlu Zm8tPmFkZHJfbWFzayA9IGFkZHJfbWFzazsKPiArCQlpbmZvLT5yb19tYXNrID0gcm9fbWFzazsK PiAgCQlpbmZvLT5kZXZpY2UgPSBkZXZpY2U7Cj4gIAkJaW5mby0+cmVhZCA9IHJlYWQgPyByZWFk IDogaW50ZWxfdmdwdV9kZWZhdWx0X21taW9fcmVhZDsKPiAgCQlpbmZvLT53cml0ZSA9IHdyaXRl ID8gd3JpdGUgOiBpbnRlbF92Z3B1X2RlZmF1bHRfbW1pb193cml0ZTsKPiBAQCAtMTUwLDE1ICsx NTUsNDIgQEAgc3RhdGljIGludCByZW5kZXJfbW1pb190b19yaW5nX2lkKHN0cnVjdCBpbnRlbF9n dnQgKmd2dCwgdW5zaWduZWQgaW50IHJlZykKPiAgI2RlZmluZSBmZW5jZV9udW1fdG9fb2Zmc2V0 KG51bSkgXAo+ICAJKG51bSAqIDggKyBpOTE1X21taW9fcmVnX29mZnNldChGRU5DRV9SRUdfR0VO Nl9MTygwKSkpCj4gIAo+ICsKPiArc3RhdGljIHZvaWQgZW50ZXJfZmFpbHNhZmVfbW9kZShzdHJ1 Y3QgaW50ZWxfdmdwdSAqdmdwdSwgaW50IHJlYXNvbikKPiArewo+ICsJc3dpdGNoIChyZWFzb24p IHsKPiArCWNhc2UgR1ZUX0ZBSUxTQUZFX1VOU1VQUE9SVEVEX0dVRVNUOgo+ICsJCXByX2Vycigi RGV0ZWN0ZWQgeW91ciBndWVzdCBkcml2ZXIgZG9lc24ndCBzdXBwb3J0IEdWVC1nLlxuIik7Cj4g KwkJYnJlYWs7Cj4gKwljYXNlIEdWVF9GQUlMU0FGRV9JTlNVRkZJQ0lFTlRfUkVTT1VSQ0U6Cj4g KwkJcHJfZXJyKCJHcmFwaGljcyByZXNvdXJjZSBpcyBub3QgZW5vdWdoIGZvciB0aGUgZ3Vlc3Rc biIpOwo+ICsJZGVmYXVsdDoKPiArCQlicmVhazsKPiArCX0KPiArCXByX2VycigiTm93IHZncHUg JWQgd2lsbCBlbnRlciBmYWlsc2FmZSBtb2RlLlxuIiwgdmdwdS0+aWQpOwo+ICsJdmdwdS0+ZmFp bHNhZmUgPSB0cnVlOwo+ICt9Cj4gKwo+ICBzdGF0aWMgaW50IHNhbml0aXplX2ZlbmNlX21taW9f YWNjZXNzKHN0cnVjdCBpbnRlbF92Z3B1ICp2Z3B1LAo+ICAJCXVuc2lnbmVkIGludCBmZW5jZV9u dW0sIHZvaWQgKnBfZGF0YSwgdW5zaWduZWQgaW50IGJ5dGVzKQo+ICB7Cj4gIAlpZiAoZmVuY2Vf bnVtID49IHZncHVfZmVuY2Vfc3oodmdwdSkpIHsKPiAtCQlndnRfZXJyKCJ2Z3B1JWQ6IGZvdW5k IG9vYiBmZW5jZSByZWdpc3RlciBhY2Nlc3NcbiIsCj4gLQkJCQl2Z3B1LT5pZCk7Cj4gLQkJZ3Z0 X2VycigidmdwdSVkOiB0b3RhbCBmZW5jZSBudW0gJWQgYWNjZXNzIGZlbmNlIG51bSAlZFxuIiwK PiAtCQkJCXZncHUtPmlkLCB2Z3B1X2ZlbmNlX3N6KHZncHUpLCBmZW5jZV9udW0pOwo+ICsKPiAr CQkvKiBXaGVuIGd1ZXN0IGFjY2VzcyBvb2IgZmVuY2UgcmVncyB3aXRob3V0IGFjY2Vzcwo+ICsJ CSAqIHB2X2luZm8gZmlyc3QsIHdlIHRyZWF0IGd1ZXN0IG5vdCBzdXBwb3J0aW5nIEdWVCwKPiAr CQkgKiBhbmQgd2Ugd2lsbCBsZXQgdmdwdSBlbnRlciBmYWlsc2FmZSBtb2RlLgo+ICsJCSAqLwo+ ICsJCWlmICghdmdwdS0+cHZfbm90aWZpZWQpCj4gKwkJCWVudGVyX2ZhaWxzYWZlX21vZGUodmdw dSwKPiArCQkJCQlHVlRfRkFJTFNBRkVfVU5TVVBQT1JURURfR1VFU1QpOwo+ICsKPiArCQlpZiAo IXZncHUtPm1taW8uZGlzYWJsZV93YXJuX3VudHJhY2spIHsKPiArCQkJZ3Z0X3ZncHVfZXJyKCJm b3VuZCBvb2IgZmVuY2UgcmVnaXN0ZXIgYWNjZXNzXG4iKTsKPiArCQkJZ3Z0X3ZncHVfZXJyKCJ0 b3RhbCBmZW5jZSAlZCwgYWNjZXNzIGZlbmNlICVkXG4iLAo+ICsJCQkJCXZncHVfZmVuY2Vfc3oo dmdwdSksIGZlbmNlX251bSk7Cj4gKwkJfQo+ICAJCW1lbXNldChwX2RhdGEsIDAsIGJ5dGVzKTsK PiArCQlyZXR1cm4gLUVJTlZBTDsKPiAgCX0KPiAgCXJldHVybiAwOwo+ICB9Cj4gQEAgLTIwNiw3 ICsyMzgsNyBAQCBzdGF0aWMgaW50IG11bF9mb3JjZV93YWtlX3dyaXRlKHN0cnVjdCBpbnRlbF92 Z3B1ICp2Z3B1LAo+ICAJb2xkID0gdmdwdV92cmVnKHZncHUsIG9mZnNldCk7Cj4gIAluZXcgPSBD QUxDX01PREVfTUFTS19SRUcob2xkLCAqKHUzMiAqKXBfZGF0YSk7Cj4gIAo+IC0JaWYgKElTX1NL WUxBS0UodmdwdS0+Z3Z0LT5kZXZfcHJpdikpIHsKPiArCWlmIChJU19TS1lMQUtFKHZncHUtPmd2 dC0+ZGV2X3ByaXYpIHx8IElTX0JST1hUT04odmdwdS0+Z3Z0LT5kZXZfcHJpdikpIHsKPiAgCQlz d2l0Y2ggKG9mZnNldCkgewo+ICAJCWNhc2UgRk9SQ0VXQUtFX1JFTkRFUl9HRU45X1JFRzoKPiAg CQkJYWNrX3JlZ19vZmZzZXQgPSBGT1JDRVdBS0VfQUNLX1JFTkRFUl9HRU45X1JFRzsKPiBAQCAt MjE5LDcgKzI1MSw3IEBAIHN0YXRpYyBpbnQgbXVsX2ZvcmNlX3dha2Vfd3JpdGUoc3RydWN0IGlu dGVsX3ZncHUgKnZncHUsCj4gIAkJCWJyZWFrOwo+ICAJCWRlZmF1bHQ6Cj4gIAkJCS8qc2hvdWxk IG5vdCBoaXQgaGVyZSovCj4gLQkJCWd2dF9lcnIoImludmFsaWQgZm9yY2V3YWtlIG9mZnNldCAw eCV4XG4iLCBvZmZzZXQpOwo+ICsJCQlndnRfdmdwdV9lcnIoImludmFsaWQgZm9yY2V3YWtlIG9m ZnNldCAweCV4XG4iLCBvZmZzZXQpOwo+ICAJCQlyZXR1cm4gLUVJTlZBTDsKPiAgCQl9Cj4gIAl9 IGVsc2Ugewo+IEBAIC0zNTcsMTggKzM4OSw5OCBAQCBzdGF0aWMgaW50IHBpcGVjb25mX21taW9f d3JpdGUoc3RydWN0IGludGVsX3ZncHUgKnZncHUsIHVuc2lnbmVkIGludCBvZmZzZXQsCj4gIAkJ dm9pZCAqcF9kYXRhLCB1bnNpZ25lZCBpbnQgYnl0ZXMpCj4gIHsKPiAgCXUzMiBkYXRhOwo+ICsJ c3RydWN0IGRybV9kZXZpY2UgKmRldiA9ICZ2Z3B1LT5ndnQtPmRldl9wcml2LT5kcm07Cj4gKwl1 bnNpZ25lZCBpbnQgcGlwZSA9IFNLTF9QTEFORV9SRUdfVE9fUElQRShvZmZzZXQpOwo+ICAKPiAg CXdyaXRlX3ZyZWcodmdwdSwgb2Zmc2V0LCBwX2RhdGEsIGJ5dGVzKTsKPiAgCWRhdGEgPSB2Z3B1 X3ZyZWcodmdwdSwgb2Zmc2V0KTsKPiAgCj4gLQlpZiAoZGF0YSAmIFBJUEVDT05GX0VOQUJMRSkK PiArCWlmIChkYXRhICYgUElQRUNPTkZfRU5BQkxFKSB7Cj4gIAkJdmdwdV92cmVnKHZncHUsIG9m ZnNldCkgfD0gSTk2NV9QSVBFQ09ORl9BQ1RJVkU7Cj4gLQllbHNlCj4gKwkJZGV2LT5kcml2ZXIt PmVuYWJsZV92YmxhbmsoZGV2LCBwaXBlKTsKPiArCX0gZWxzZSB7Cj4gIAkJdmdwdV92cmVnKHZn cHUsIG9mZnNldCkgJj0gfkk5NjVfUElQRUNPTkZfQUNUSVZFOwo+ICsJfQo+ICAJaW50ZWxfZ3Z0 X2NoZWNrX3ZibGFua19lbXVsYXRpb24odmdwdS0+Z3Z0KTsKPiAgCXJldHVybiAwOwo+ICB9Cj4g IAo+ICsvKiBhc2NlbmRpbmdseSBzb3J0ZWQgKi8KPiArc3RhdGljIGk5MTVfcmVnX3QgZm9yY2Vf bm9ucHJpdl93aGl0ZV9saXN0W10gPSB7Cj4gKwlHRU45X0NTX0RFQlVHX01PREUxLCAvL19NTUlP KDB4MjBlYykKPiArCUdFTjlfQ1RYX1BSRUVNUFRfUkVHLC8vX01NSU8oMHgyMjQ4KQo+ICsJR0VO OF9DU19DSElDS0VOMSwvL19NTUlPKDB4MjU4MCkKPiArCV9NTUlPKDB4MjY5MCksCj4gKwlfTU1J TygweDI2OTQpLAo+ICsJX01NSU8oMHgyNjk4KSwKPiArCV9NTUlPKDB4NGRlMCksCj4gKwlfTU1J TygweDRkZTQpLAo+ICsJX01NSU8oMHg0ZGZjKSwKPiArCUdFTjdfQ09NTU9OX1NMSUNFX0NISUNL RU4xLC8vX01NSU8oMHg3MDEwKQo+ICsJX01NSU8oMHg3MDE0KSwKPiArCUhEQ19DSElDS0VOMCwv L19NTUlPKDB4NzMwMCkKPiArCUdFTjhfSERDX0NISUNLRU4xLC8vX01NSU8oMHg3MzA0KQo+ICsJ X01NSU8oMHg3NzAwKSwKPiArCV9NTUlPKDB4NzcwNCksCj4gKwlfTU1JTygweDc3MDgpLAo+ICsJ X01NSU8oMHg3NzBjKSwKPiArCV9NTUlPKDB4YjExMCksCj4gKwlHRU44X0wzU1FDUkVHNCwvL19N TUlPKDB4YjExOCkKPiArCV9NTUlPKDB4ZTEwMCksCj4gKwlfTU1JTygweGUxOGMpLAo+ICsJX01N SU8oMHhlNDhjKSwKPiArCV9NTUlPKDB4ZTVmNCksCj4gK307Cj4gKwo+ICsvKiBhIHNpbXBsZSBi c2VhcmNoICovCj4gK3N0YXRpYyBpbmxpbmUgYm9vbCBpbl93aGl0ZWxpc3QodW5zaWduZWQgaW50 IHJlZykKPiArewo+ICsJaW50IGxlZnQgPSAwLCByaWdodCA9IEFSUkFZX1NJWkUoZm9yY2Vfbm9u cHJpdl93aGl0ZV9saXN0KTsKPiArCWk5MTVfcmVnX3QgKmFycmF5ID0gZm9yY2Vfbm9ucHJpdl93 aGl0ZV9saXN0Owo+ICsKPiArCXdoaWxlIChsZWZ0IDwgcmlnaHQpIHsKPiArCQlpbnQgbWlkID0g KGxlZnQgKyByaWdodCkvMjsKPiArCj4gKwkJaWYgKHJlZyA+IGFycmF5W21pZF0ucmVnKQo+ICsJ CQlsZWZ0ID0gbWlkICsgMTsKPiArCQllbHNlIGlmIChyZWcgPCBhcnJheVttaWRdLnJlZykKPiAr CQkJcmlnaHQgPSBtaWQ7Cj4gKwkJZWxzZQo+ICsJCQlyZXR1cm4gdHJ1ZTsKPiArCX0KPiArCXJl dHVybiBmYWxzZTsKPiArfQo+ICsKPiArc3RhdGljIGludCBmb3JjZV9ub25wcml2X3dyaXRlKHN0 cnVjdCBpbnRlbF92Z3B1ICp2Z3B1LAo+ICsJdW5zaWduZWQgaW50IG9mZnNldCwgdm9pZCAqcF9k YXRhLCB1bnNpZ25lZCBpbnQgYnl0ZXMpCj4gK3sKPiArCXUzMiByZWdfbm9ucHJpdiA9ICoodTMy ICopcF9kYXRhOwo+ICsJaW50IHJldCA9IC1FSU5WQUw7Cj4gKwo+ICsJaWYgKChieXRlcyAhPSA0 KSB8fCAoKG9mZnNldCAmIChieXRlcyAtIDEpKSAhPSAwKSkgewo+ICsJCWd2dF9lcnIoInZncHUo JWQpIEludmFsaWQgRk9SQ0VfTk9OUFJJViBvZmZzZXQgJXgoJWRCKVxuIiwKPiArCQkJdmdwdS0+ aWQsIG9mZnNldCwgYnl0ZXMpOwo+ICsJCXJldHVybiByZXQ7Cj4gKwl9Cj4gKwo+ICsJaWYgKGlu X3doaXRlbGlzdChyZWdfbm9ucHJpdikpIHsKPiArCQlyZXQgPSBpbnRlbF92Z3B1X2RlZmF1bHRf bW1pb193cml0ZSh2Z3B1LCBvZmZzZXQsIHBfZGF0YSwKPiArCQkJYnl0ZXMpOwo+ICsJfSBlbHNl IHsKPiArCQlndnRfZXJyKCJ2Z3B1KCVkKSBJbnZhbGlkIEZPUkNFX05PTlBSSVYgd3JpdGUgJXhc biIsCj4gKwkJCXZncHUtPmlkLCByZWdfbm9ucHJpdik7Cj4gKwl9Cj4gKwlyZXR1cm4gcmV0Owo+ ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHBpcGVfZHNsX21taW9fcmVhZChzdHJ1Y3QgaW50ZWxfdmdw dSAqdmdwdSwKPiArCQl1bnNpZ25lZCBpbnQgb2Zmc2V0LCB2b2lkICpwX2RhdGEsIHVuc2lnbmVk IGludCBieXRlcykKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g dmdwdS0+Z3Z0LT5kZXZfcHJpdjsKPiArCXZncHVfdnJlZyh2Z3B1LCBvZmZzZXQpID0gSTkxNV9S RUFEKF9NTUlPKG9mZnNldCkpOwo+ICsJcmV0dXJuIGludGVsX3ZncHVfZGVmYXVsdF9tbWlvX3Jl YWQodmdwdSwgb2Zmc2V0LCBwX2RhdGEsIGJ5dGVzKTsKPiArfQo+ICsKPiAgc3RhdGljIGludCBk ZGlfYnVmX2N0bF9tbWlvX3dyaXRlKHN0cnVjdCBpbnRlbF92Z3B1ICp2Z3B1LCB1bnNpZ25lZCBp bnQgb2Zmc2V0LAo+ICAJCXZvaWQgKnBfZGF0YSwgdW5zaWduZWQgaW50IGJ5dGVzKQo+ICB7Cj4g QEAgLTQzMiw3ICs1NDQsNyBAQCBzdGF0aWMgaW50IGNoZWNrX2ZkaV9yeF90cmFpbl9zdGF0dXMo c3RydWN0IGludGVsX3ZncHUgKnZncHUsCj4gIAkJZmRpX3R4X3RyYWluX2JpdHMgPSBGRElfTElO S19UUkFJTl9QQVRURVJOXzI7Cj4gIAkJZmRpX2lpcl9jaGVja19iaXRzID0gRkRJX1JYX1NZTUJP TF9MT0NLOwo+ICAJfSBlbHNlIHsKPiAtCQlndnRfZXJyKCJJbnZhbGlkIHRyYWluIHBhdHRlcm4g JWRcbiIsIHRyYWluX3BhdHRlcm4pOwo+ICsJCWd2dF92Z3B1X2VycigiSW52YWxpZCB0cmFpbiBw YXR0ZXJuICVkXG4iLCB0cmFpbl9wYXR0ZXJuKTsKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgCX0K PiAgCj4gQEAgLTQ5MCw3ICs2MDIsNyBAQCBzdGF0aWMgaW50IHVwZGF0ZV9mZGlfcnhfaWlyX3N0 YXR1cyhzdHJ1Y3QgaW50ZWxfdmdwdSAqdmdwdSwKPiAgCWVsc2UgaWYgKEZESV9SWF9JTVJfVE9f UElQRShvZmZzZXQpICE9IElOVkFMSURfSU5ERVgpCj4gIAkJaW5kZXggPSBGRElfUlhfSU1SX1RP X1BJUEUob2Zmc2V0KTsKPiAgCWVsc2Ugewo+IC0JCWd2dF9lcnIoIlVuc3VwcG9ydCByZWdpc3Rl cnMgJXhcbiIsIG9mZnNldCk7Cj4gKwkJZ3Z0X3ZncHVfZXJyKCJVbnN1cHBvcnQgcmVnaXN0ZXJz ICV4XG4iLCBvZmZzZXQpOwo+ICAJCXJldHVybiAtRUlOVkFMOwo+ICAJfQo+ICAKPiBAQCAtNjI0 LDYgKzczNiw0NSBAQCBzdGF0aWMgaW50IHNwcl9zdXJmX21taW9fd3JpdGUoc3RydWN0IGludGVs X3ZncHUgKnZncHUsIHVuc2lnbmVkIGludCBvZmZzZXQsCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAK PiArc3RhdGljIGludCBza2xfcGxhbmVfc3VyZl93cml0ZShzdHJ1Y3QgaW50ZWxfdmdwdSAqdmdw dSwgdW5zaWduZWQgaW50IG9mZnNldCwKPiArCQl2b2lkICpwX2RhdGEsIHVuc2lnbmVkIGludCBi eXRlcykKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdmdwdS0+ Z3Z0LT5kZXZfcHJpdjsKPiArCXVuc2lnbmVkIGludCBwaXBlID0gU0tMX1BMQU5FX1JFR19UT19Q SVBFKG9mZnNldCk7Cj4gKwl1bnNpZ25lZCBpbnQgcGxhbmUgPSBTS0xfUExBTkVfUkVHX1RPX1BM QU5FKG9mZnNldCk7Cj4gKwlpOTE1X3JlZ190IHJlZ18xYWMgPSBfTU1JTyhfUkVHXzcwMUFDKHBp cGUsIHBsYW5lKSk7Cj4gKwlpbnQgZmxpcF9ldmVudCA9IFNLTF9GTElQX0VWRU5UKHBpcGUsIHBs YW5lKTsKPiArCj4gKwl3cml0ZV92cmVnKHZncHUsIG9mZnNldCwgcF9kYXRhLCBieXRlcyk7Cj4g Kwl2Z3B1X3ZyZWcodmdwdSwgcmVnXzFhYykgPSB2Z3B1X3ZyZWcodmdwdSwgb2Zmc2V0KTsKPiAr Cj4gKwlpZiAoKCh2Z3B1X3ZyZWcodmdwdSwgUElQRUNPTkYocGlwZSkpICYgSTk2NV9QSVBFQ09O Rl9BQ1RJVkUpIHx8Cj4gKwkJKGludGVsX2Jpb3NfaXNfZHNpX3ByZXNlbnQoZGV2X3ByaXYsIE5V TEwpICYmCj4gKwkJCWdldF9kc2lfcGlwZSh2Z3B1KSA9PSBwaXBlKSkgJiYKPiArCQkJKHZncHUt Pmd2dC0+cGlwZV9vd25lcltwaXBlXSA9PSB2Z3B1LT5pZCkpIHsKPiArCQlJOTE1X1dSSVRFKF9N TUlPKG9mZnNldCksIHZncHVfdnJlZyh2Z3B1LCBvZmZzZXQpKTsKPiArCX0KPiArCj4gKwlzZXRf Yml0KGZsaXBfZXZlbnQsIHZncHUtPmlycS5mbGlwX2RvbmVfZXZlbnRbcGlwZV0pOwo+ICsJcmV0 dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgc2tsX3BsYW5lX21taW9fd3JpdGUoc3RydWN0 IGludGVsX3ZncHUgKnZncHUsIHVuc2lnbmVkIGludCBvZmZzZXQsCj4gKwkJdm9pZCAqcF9kYXRh LCB1bnNpZ25lZCBpbnQgYnl0ZXMpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IHZncHUtPmd2dC0+ZGV2X3ByaXY7Cj4gKwl1bnNpZ25lZCBpbnQgcGlwZSA9IFNL TF9QTEFORV9SRUdfVE9fUElQRShvZmZzZXQpOwo+ICsKPiArCXdyaXRlX3ZyZWcodmdwdSwgb2Zm c2V0LCBwX2RhdGEsIGJ5dGVzKTsKPiArCWlmICgoKHZncHVfdnJlZyh2Z3B1LCBQSVBFQ09ORihw aXBlKSkgJiBJOTY1X1BJUEVDT05GX0FDVElWRSkgfHwKPiArCQkoaW50ZWxfYmlvc19pc19kc2lf cHJlc2VudChkZXZfcHJpdiwgTlVMTCkgJiYKPiArCQkJZ2V0X2RzaV9waXBlKHZncHUpID09IHBp cGUpKSAmJgo+ICsJCQkodmdwdS0+Z3Z0LT5waXBlX293bmVyW3BpcGVdID09IHZncHUtPmlkKSkg ewo+ICsJCUk5MTVfV1JJVEUoX01NSU8ob2Zmc2V0KSwgdmdwdV92cmVnKHZncHUsIG9mZnNldCkp Owo+ICsJfQo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gIHN0YXRpYyBpbnQgdHJpZ2dlcl9hdXhf Y2hhbm5lbF9pbnRlcnJ1cHQoc3RydWN0IGludGVsX3ZncHUgKnZncHUsCj4gIAkJdW5zaWduZWQg aW50IHJlZykKPiAgewo+IEBAIC03MjAsMTUgKzg3MSwxNiBAQCBzdGF0aWMgaW50IGRwX2F1eF9j aF9jdGxfbW1pb193cml0ZShzdHJ1Y3QgaW50ZWxfdmdwdSAqdmdwdSwKPiAgCXUzMiBkYXRhOwo+ ICAKPiAgCWlmICghZHB5X2lzX3ZhbGlkX3BvcnQocG9ydF9pbmRleCkpIHsKPiAtCQlndnRfZXJy KCJHVlQoJWQpOiBVbnN1cHBvcnRlZCBEUCBwb3J0IGFjY2VzcyFcbiIsIHZncHUtPmlkKTsKPiAr CQlndnRfdmdwdV9lcnIoIlVuc3VwcG9ydGVkIERQIHBvcnQgYWNjZXNzIVxuIik7Cj4gIAkJcmV0 dXJuIDA7Cj4gIAl9Cj4gIAo+ICAJd3JpdGVfdnJlZyh2Z3B1LCBvZmZzZXQsIHBfZGF0YSwgYnl0 ZXMpOwo+ICAJZGF0YSA9IHZncHVfdnJlZyh2Z3B1LCBvZmZzZXQpOwo+ICAKPiAtCWlmIChJU19T S1lMQUtFKHZncHUtPmd2dC0+ZGV2X3ByaXYpICYmCj4gLQkgICAgb2Zmc2V0ICE9IF9SRUdfU0tM X0RQX0FVWF9DSF9DVEwocG9ydF9pbmRleCkpIHsKPiArCWlmICgoSVNfU0tZTEFLRSh2Z3B1LT5n dnQtPmRldl9wcml2KSB8fAo+ICsJCQlJU19CUk9YVE9OKHZncHUtPmd2dC0+ZGV2X3ByaXYpKSAm Jgo+ICsJCQlvZmZzZXQgIT0gX1JFR19TS0xfRFBfQVVYX0NIX0NUTChwb3J0X2luZGV4KSkgewo+ ICAJCS8qIFNLTCBEUEIvQy9EIGF1eCBjdGwgcmVnaXN0ZXIgY2hhbmdlZCAqLwo+ICAJCXJldHVy biAwOwo+ICAJfSBlbHNlIGlmIChJU19CUk9BRFdFTEwodmdwdS0+Z3Z0LT5kZXZfcHJpdikgJiYK PiBAQCAtODc0LDYgKzEwMjYsMTQgQEAgc3RhdGljIGludCBkcF9hdXhfY2hfY3RsX21taW9fd3Jp dGUoc3RydWN0IGludGVsX3ZncHUgKnZncHUsCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiArc3Rh dGljIGludCBtYmN0bF93cml0ZShzdHJ1Y3QgaW50ZWxfdmdwdSAqdmdwdSwgdW5zaWduZWQgaW50 IG9mZnNldCwKPiArCQl2b2lkICpwX2RhdGEsIHVuc2lnbmVkIGludCBieXRlcykKPiArewo+ICsJ Kih1MzIgKilwX2RhdGEgJj0gKH5HRU42X01CQ1RMX0VOQUJMRV9CT09UX0ZFVENIKTsKPiArCXdy aXRlX3ZyZWcodmdwdSwgb2Zmc2V0LCBwX2RhdGEsIGJ5dGVzKTsKPiArCXJldHVybiAwOwo+ICt9 Cj4gKwo+ICBzdGF0aWMgaW50IHZnYV9jb250cm9sX21taW9fd3JpdGUoc3RydWN0IGludGVsX3Zn cHUgKnZncHUsIHVuc2lnbmVkIGludCBvZmZzZXQsCj4gIAkJdm9pZCAqcF9kYXRhLCB1bnNpZ25l ZCBpbnQgYnl0ZXMpCj4gIHsKPiBAQCAtOTE4LDggKzEwNzgsNyBAQCBzdGF0aWMgdm9pZCB3cml0 ZV92aXJ0dWFsX3NiaV9yZWdpc3RlcihzdHJ1Y3QgaW50ZWxfdmdwdSAqdmdwdSwKPiAgCj4gIAlp ZiAoaSA9PSBudW0pIHsKPiAgCQlpZiAobnVtID09IFNCSV9SRUdfTUFYKSB7Cj4gLQkJCWd2dF9l cnIoInZncHUlZDogU0JJIGNhY2hpbmcgbWVldHMgbWF4aW11bSBsaW1pdHNcbiIsCj4gLQkJCQkJ dmdwdS0+aWQpOwo+ICsJCQlndnRfdmdwdV9lcnIoIlNCSSBjYWNoaW5nIG1lZXRzIG1heGltdW0g bGltaXRzXG4iKTsKPiAgCQkJcmV0dXJuOwo+ICAJCX0KPiAgCQlkaXNwbGF5LT5zYmkubnVtYmVy Kys7Cj4gQEAgLTk5OSw4ICsxMTU4LDkgQEAgc3RhdGljIGludCBwdmluZm9fbW1pb19yZWFkKHN0 cnVjdCBpbnRlbF92Z3B1ICp2Z3B1LCB1bnNpZ25lZCBpbnQgb2Zmc2V0LAo+ICAJCWJyZWFrOwo+ ICAJfQo+ICAJaWYgKGludmFsaWRfcmVhZCkKPiAtCQlndnRfZXJyKCJpbnZhbGlkIHB2aW5mbyBy ZWFkOiBbJXg6JXhdID0gJXhcbiIsCj4gKwkJZ3Z0X3ZncHVfZXJyKCJpbnZhbGlkIHB2aW5mbyBy ZWFkOiBbJXg6JXhdID0gJXhcbiIsCj4gIAkJCQlvZmZzZXQsIGJ5dGVzLCAqKHUzMiAqKXBfZGF0 YSk7Cj4gKwl2Z3B1LT5wdl9ub3RpZmllZCA9IHRydWU7Cj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAK PiBAQCAtMTAyNiw3ICsxMTg2LDcgQEAgc3RhdGljIGludCBoYW5kbGVfZzJ2X25vdGlmaWNhdGlv bihzdHJ1Y3QgaW50ZWxfdmdwdSAqdmdwdSwgaW50IG5vdGlmaWNhdGlvbikKPiAgCWNhc2UgMToJ LyogUmVtb3ZlIHRoaXMgaW4gZ3Vlc3QgZHJpdmVyLiAqLwo+ICAJCWJyZWFrOwo+ICAJZGVmYXVs dDoKPiAtCQlndnRfZXJyKCJJbnZhbGlkIFBWIG5vdGlmaWNhdGlvbiAlZFxuIiwgbm90aWZpY2F0 aW9uKTsKPiArCQlndnRfdmdwdV9lcnIoIkludmFsaWQgUFYgbm90aWZpY2F0aW9uICVkXG4iLCBu b3RpZmljYXRpb24pOwo+ICAJfQo+ICAJcmV0dXJuIHJldDsKPiAgfQo+IEBAIC0xMDM5LDcgKzEx OTksNyBAQCBzdGF0aWMgaW50IHNlbmRfZGlzcGxheV9yZWFkeV91ZXZlbnQoc3RydWN0IGludGVs X3ZncHUgKnZncHUsIGludCByZWFkeSkKPiAgCWNoYXIgdm1pZF9zdHJbMjBdOwo+ICAJY2hhciBk aXNwbGF5X3JlYWR5X3N0clsyMF07Cj4gIAo+IC0Jc25wcmludGYoZGlzcGxheV9yZWFkeV9zdHIs IDIwLCAiR1ZUX0RJU1BMQVlfUkVBRFk9JWRcbiIsIHJlYWR5KTsKPiArCXNucHJpbnRmKGRpc3Bs YXlfcmVhZHlfc3RyLCAyMCwgIkdWVF9ESVNQTEFZX1JFQURZPSVkIiwgcmVhZHkpOwo+ICAJZW52 WzBdID0gZGlzcGxheV9yZWFkeV9zdHI7Cj4gIAo+ICAJc25wcmludGYodm1pZF9zdHIsIDIwLCAi Vk1JRD0lZCIsIHZncHUtPmlkKTsKPiBAQCAtMTA3OCw4ICsxMjM4LDExIEBAIHN0YXRpYyBpbnQg cHZpbmZvX21taW9fd3JpdGUoc3RydWN0IGludGVsX3ZncHUgKnZncHUsIHVuc2lnbmVkIGludCBv ZmZzZXQsCj4gIAljYXNlIF92Z3RpZl9yZWcoZXhlY2xpc3RfY29udGV4dF9kZXNjcmlwdG9yX2xv KToKPiAgCWNhc2UgX3ZndGlmX3JlZyhleGVjbGlzdF9jb250ZXh0X2Rlc2NyaXB0b3JfaGkpOgo+ ICAJCWJyZWFrOwo+ICsJY2FzZSBfdmd0aWZfcmVnKHJzdjVbMF0pLi4uX3ZndGlmX3JlZyhyc3Y1 WzNdKToKPiArCQllbnRlcl9mYWlsc2FmZV9tb2RlKHZncHUsIEdWVF9GQUlMU0FGRV9JTlNVRkZJ Q0lFTlRfUkVTT1VSQ0UpOwo+ICsJCWJyZWFrOwo+ICAJZGVmYXVsdDoKPiAtCQlndnRfZXJyKCJp bnZhbGlkIHB2aW5mbyB3cml0ZSBvZmZzZXQgJXggYnl0ZXMgJXggZGF0YSAleFxuIiwKPiArCQln dnRfdmdwdV9lcnIoImludmFsaWQgcHZpbmZvIHdyaXRlIG9mZnNldCAleCBieXRlcyAleCBkYXRh ICV4XG4iLAo+ICAJCQkJb2Zmc2V0LCBieXRlcywgZGF0YSk7Cj4gIAkJYnJlYWs7Cj4gIAl9Cj4g QEAgLTEyMDMsMjYgKzEzNjYsMzcgQEAgc3RhdGljIGludCBtYWlsYm94X3dyaXRlKHN0cnVjdCBp bnRlbF92Z3B1ICp2Z3B1LCB1bnNpZ25lZCBpbnQgb2Zmc2V0LAo+ICAJdTMyICpkYXRhMCA9ICZ2 Z3B1X3ZyZWcodmdwdSwgR0VONl9QQ09ERV9EQVRBKTsKPiAgCj4gIAlzd2l0Y2ggKGNtZCkgewo+ IC0JY2FzZSAweDY6Cj4gLQkJLyoqCj4gLQkJICogIlJlYWQgbWVtb3J5IGxhdGVuY3kiIGNvbW1h bmQgb24gZ2VuOS4KPiAtCQkgKiBCZWxvdyBtZW1vcnkgbGF0ZW5jeSB2YWx1ZXMgYXJlIHJlYWQK PiAtCQkgKiBmcm9tIHNreWxha2UgcGxhdGZvcm0uCj4gLQkJICovCj4gLQkJaWYgKCEqZGF0YTAp Cj4gLQkJCSpkYXRhMCA9IDB4MWUxYTExMDA7Cj4gLQkJZWxzZQo+IC0JCQkqZGF0YTAgPSAweDYx NTE0YjNkOwo+ICsJY2FzZSBHRU45X1BDT0RFX1JFQURfTUVNX0xBVEVOQ1k6Cj4gKwkJaWYgKElT X1NLWUxBS0UodmdwdS0+Z3Z0LT5kZXZfcHJpdikpIHsKPiArCQkJLyoqCj4gKwkJCSAqICJSZWFk IG1lbW9yeSBsYXRlbmN5IiBjb21tYW5kIG9uIGdlbjkuCj4gKwkJCSAqIEJlbG93IG1lbW9yeSBs YXRlbmN5IHZhbHVlcyBhcmUgcmVhZAo+ICsJCQkgKiBmcm9tIHNreWxha2UgcGxhdGZvcm0uCj4g KwkJCSAqLwo+ICsJCQlpZiAoISpkYXRhMCkKPiArCQkJCSpkYXRhMCA9IDB4MWUxYTExMDA7Cj4g KwkJCWVsc2UKPiArCQkJCSpkYXRhMCA9IDB4NjE1MTRiM2Q7Cj4gKwkJfQo+ICAJCWJyZWFrOwo+ IC0JY2FzZSAweDU6Cj4gKwljYXNlIFNLTF9QQ09ERV9DRENMS19DT05UUk9MOgo+ICsJCWlmIChJ U19TS1lMQUtFKHZncHUtPmd2dC0+ZGV2X3ByaXYpKQo+ICsJCQkqZGF0YTAgPSBTS0xfQ0RDTEtf UkVBRFlfRk9SX0NIQU5HRTsKPiArCQlicmVhazsKPiArCWNhc2UgR0VONl9QQ09ERV9SRUFEX1JD NlZJRFM6Cj4gIAkJKmRhdGEwIHw9IDB4MTsKPiAgCQlicmVhazsKPiAgCX0KPiAgCj4gIAlndnRf ZGJnX2NvcmUoIlZNKCVkKSB3cml0ZSAleCB0byBtYWlsYm94LCByZXR1cm4gZGF0YTAgJXhcbiIs Cj4gIAkJICAgICB2Z3B1LT5pZCwgdmFsdWUsICpkYXRhMCk7Cj4gLQo+IC0JdmFsdWUgJj0gfigx IDw8IDMxKTsKPiArCS8qKgo+ICsJICogUENPREVfUkVBRFkgY2xlYXIgbWVhbnMgcmVhZHkgZm9y IHBjb2RlIHJlYWQvd3JpdGUsCj4gKwkgKiBQQ09ERV9FUlJPUl9NQVNLIGNsZWFyIG1lYW5zIG5v IGVycm9yIGhhcHBlbmVkLiBJbiBHVlQtZyB3ZQo+ICsJICogYWx3YXlzIGVtdWxhdGUgYXMgcGNv ZGUgcmVhZC93cml0ZSBzdWNjZXNzIGFuZCByZWFkeSBmb3IgYWNjZXNzCj4gKwkgKiBhbnl0aW1l LCBzaW5jZSB3ZSBkb24ndCB0b3VjaCByZWFsIHBoeXNpY2FsIHJlZ2lzdGVycyBoZXJlLgo+ICsJ ICovCj4gKwl2YWx1ZSAmPSB+KEdFTjZfUENPREVfUkVBRFkgfCBHRU42X1BDT0RFX0VSUk9SX01B U0spOwo+ICAJcmV0dXJuIGludGVsX3ZncHVfZGVmYXVsdF9tbWlvX3dyaXRlKHZncHUsIG9mZnNl dCwgJnZhbHVlLCBieXRlcyk7Cj4gIH0KPiAgCj4gQEAgLTEyMzEsMTAgKzE0MDUsMTggQEAgc3Rh dGljIGludCBza2xfcG93ZXJfd2VsbF9jdGxfd3JpdGUoc3RydWN0IGludGVsX3ZncHUgKnZncHUs Cj4gIHsKPiAgCXUzMiB2ID0gKih1MzIgKilwX2RhdGE7Cj4gIAo+IC0JdiAmPSAoMSA8PCAzMSkg fCAoMSA8PCAyOSkgfCAoMSA8PCA5KSB8Cj4gLQkgICAgICgxIDw8IDcpIHwgKDEgPDwgNSkgfCAo MSA8PCAzKSB8ICgxIDw8IDEpOwo+ICsJaWYgKElTX0JST1hUT04odmdwdS0+Z3Z0LT5kZXZfcHJp dikpCj4gKwkJdiAmPSAoMSA8PCAzMSkgfCAoMSA8PCAyOSk7Cj4gKwllbHNlCj4gKwkJdiAmPSAo MSA8PCAzMSkgfCAoMSA8PCAyOSkgfCAoMSA8PCA5KSB8Cj4gKwkJCSgxIDw8IDcpIHwgKDEgPDwg NSkgfCAoMSA8PCAzKSB8ICgxIDw8IDEpOwo+ICAJdiB8PSAodiA+PiAxKTsKPiAgCj4gKwl2Z3B1 X3ZyZWcodmdwdSwgaTkxNV9tbWlvX3JlZ19vZmZzZXQoU0tMX0ZVU0VfU1RBVFVTKSkgPQo+ICsJ CShTS0xfRlVTRV9QRzBfRElTVF9TVEFUVVMKPiArCQkgfCBTS0xfRlVTRV9QRzFfRElTVF9TVEFU VVMKPiArCQkgfCBTS0xfRlVTRV9QRzJfRElTVF9TVEFUVVMpOwo+ICsKPiAgCXJldHVybiBpbnRl bF92Z3B1X2RlZmF1bHRfbW1pb193cml0ZSh2Z3B1LCBvZmZzZXQsICZ2LCBieXRlcyk7Cj4gIH0K PiAgCj4gQEAgLTEyNzYsNiArMTQ1OCwxMjUgQEAgc3RhdGljIGludCBza2xfbGNwbGxfd3JpdGUo c3RydWN0IGludGVsX3ZncHUgKnZncHUsIHVuc2lnbmVkIGludCBvZmZzZXQsCj4gIAlyZXR1cm4g MDsKPiAgfQo+ICAKPiArc3RhdGljIGludCBieHRfZGVfcGxsX2VuYWJsZV93cml0ZShzdHJ1Y3Qg aW50ZWxfdmdwdSAqdmdwdSwgdW5zaWduZWQgaW50IG9mZnNldCwKPiArCQl2b2lkICpwX2RhdGEs IHVuc2lnbmVkIGludCBieXRlcykKPiArewo+ICsJdTMyIHYgPSAqKHUzMiAqKXBfZGF0YTsKPiAr CWlmICh2ICYgQlhUX0RFX1BMTF9QTExfRU5BQkxFKQo+ICsJCXYgfD0gQlhUX0RFX1BMTF9MT0NL Owo+ICsKPiArCXZncHVfdnJlZyh2Z3B1LCBvZmZzZXQpID0gdjsKPiArCj4gKwlyZXR1cm4gMDsK PiArfQo+ICsKPiArc3RhdGljIGludCBieHRfZHNpX3BsbF9lbmFibGVfd3JpdGUoc3RydWN0IGlu dGVsX3ZncHUgKnZncHUsIHVuc2lnbmVkIGludCBvZmZzZXQsCj4gKwkJdm9pZCAqcF9kYXRhLCB1 bnNpZ25lZCBpbnQgYnl0ZXMpCj4gK3sKPiArCXUzMiBkYXRhOwo+ICsJc3RydWN0IGRybV9kZXZp Y2UgKmRldiA9ICZ2Z3B1LT5ndnQtPmRldl9wcml2LT5kcm07Cj4gKwo+ICsJd3JpdGVfdnJlZyh2 Z3B1LCBvZmZzZXQsIHBfZGF0YSwgYnl0ZXMpOwo+ICsJZGF0YSA9IHZncHVfdnJlZyh2Z3B1LCBv ZmZzZXQpOwo+ICsJLyoKPiArCWlmIChkYXRhICYgQlhUX0RTSV9QTExfRE9fRU5BQkxFKQo+ICsJ CWRldi0+ZHJpdmVyLT5lbmFibGVfdmJsYW5rKGRldiwgdmdwdS0+cGlwZSk7Cj4gKwkqLwo+ICsK PiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGJ4dF9wb3J0X3BsbF9lbmFibGVf d3JpdGUoc3RydWN0IGludGVsX3ZncHUgKnZncHUsIHVuc2lnbmVkIGludCBvZmZzZXQsCj4gKwkJ dm9pZCAqcF9kYXRhLCB1bnNpZ25lZCBpbnQgYnl0ZXMpCj4gK3sKPiArCXUzMiB2ID0gKih1MzIg KilwX2RhdGE7Cj4gKwlpZiAodiAmIFBPUlRfUExMX0VOQUJMRSkKPiArCQl2IHw9IFBPUlRfUExM X0xPQ0s7Cj4gKwo+ICsJdmdwdV92cmVnKHZncHUsIG9mZnNldCkgPSB2Owo+ICsKPiArCXJldHVy biAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGJ4dF9kYnVmX2N0bF93cml0ZShzdHJ1Y3QgaW50 ZWxfdmdwdSAqdmdwdSwgdW5zaWduZWQgaW50IG9mZnNldCwKPiArCQl2b2lkICpwX2RhdGEsIHVu c2lnbmVkIGludCBieXRlcykKPiArewo+ICsJdTMyIHYgPSAqKHUzMiAqKXBfZGF0YTsKPiArCWlm ICh2ICYgREJVRl9QT1dFUl9SRVFVRVNUKQo+ICsJCXYgfD0gREJVRl9QT1dFUl9TVEFURTsKPiAr CWVsc2UKPiArCQl2ICY9IH5EQlVGX1BPV0VSX1NUQVRFOwo+ICsKPiArCXZncHVfdnJlZyh2Z3B1 LCBvZmZzZXQpID0gdjsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCBi eHRfcGh5X2N0bF9mYW1pbHlfd3JpdGUoc3RydWN0IGludGVsX3ZncHUgKnZncHUsIHVuc2lnbmVk IGludCBvZmZzZXQsCj4gKwkJdm9pZCAqcF9kYXRhLCB1bnNpZ25lZCBpbnQgYnl0ZXMpCj4gK3sK PiArCXUzMiB2ID0gKih1MzIgKilwX2RhdGE7Cj4gKwl1MzIgZGF0YSA9IHYgJiBDT01NT05fUkVT RVRfRElTID8gQlhUX1BIWV9MQU5FX0VOQUJMRUQgOiAwOwo+ICsKPiArCXZncHVfdnJlZyh2Z3B1 LCBfQlhUX1BIWV9DVExfRERJX0EpID0gZGF0YTsKPiArCXZncHVfdnJlZyh2Z3B1LCBfQlhUX1BI WV9DVExfRERJX0IpID0gZGF0YTsKPiArCXZncHVfdnJlZyh2Z3B1LCBfQlhUX1BIWV9DVExfRERJ X0MpID0gZGF0YTsKPiArCj4gKwl2Z3B1X3ZyZWcodmdwdSwgb2Zmc2V0KSA9IHY7Cj4gKwo+ICsJ cmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgYnh0X3BvcnRfdHhfZHczX3JlYWQoc3Ry dWN0IGludGVsX3ZncHUgKnZncHUsIHVuc2lnbmVkIGludCBvZmZzZXQsCj4gKwkJdm9pZCAqcF9k YXRhLCB1bnNpZ25lZCBpbnQgYnl0ZXMpCj4gK3sKPiArCXUzMiB2ID0gdmdwdV92cmVnKHZncHUs IG9mZnNldCk7Cj4gKwl2ICY9IH5VTklRVUVfVFJBTkdFX0VOX01FVEhPRDsKPiArCj4gKwl2Z3B1 X3ZyZWcodmdwdSwgb2Zmc2V0KSA9IHY7Cj4gKwo+ICsJcmV0dXJuIGludGVsX3ZncHVfZGVmYXVs dF9tbWlvX3JlYWQodmdwdSwgb2Zmc2V0LCBwX2RhdGEsIGJ5dGVzKTsKPiArfQo+ICsKPiArc3Rh dGljIGludCBieHRfcGNzX2R3MTJfZ3JwX3dyaXRlKHN0cnVjdCBpbnRlbF92Z3B1ICp2Z3B1LCB1 bnNpZ25lZCBpbnQgb2Zmc2V0LAo+ICsJCXZvaWQgKnBfZGF0YSwgdW5zaWduZWQgaW50IGJ5dGVz KQo+ICt7Cj4gKwl1MzIgdiA9ICoodTMyICopcF9kYXRhOwo+ICsKPiArCWlmIChvZmZzZXQgPT0g X1BPUlRfUENTX0RXMTJfR1JQX0EgfHwgb2Zmc2V0ID09IF9QT1JUX1BDU19EVzEyX0dSUF9CKSB7 Cj4gKwkJdmdwdV92cmVnKHZncHUsIG9mZnNldCAtIDB4NjAwKSA9IHY7Cj4gKwkJdmdwdV92cmVn KHZncHUsIG9mZnNldCAtIDB4ODAwKSA9IHY7Cj4gKwl9IGVsc2Ugewo+ICsJCXZncHVfdnJlZyh2 Z3B1LCBvZmZzZXQgLSAweDQwMCkgPSB2Owo+ICsJCXZncHVfdnJlZyh2Z3B1LCBvZmZzZXQgLSAw eDYwMCkgPSB2Owo+ICsJfQo+ICsKPiArCXZncHVfdnJlZyh2Z3B1LCBvZmZzZXQpID0gdjsKPiAr Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCBieHRfZ3RfZGlzcF9wd3Jvbl93 cml0ZShzdHJ1Y3QgaW50ZWxfdmdwdSAqdmdwdSwgdW5zaWduZWQgaW50IG9mZnNldCwKPiArCQl2 b2lkICpwX2RhdGEsIHVuc2lnbmVkIGludCBieXRlcykKPiArewo+ICsJdTMyIHYgPSAqKHUzMiAq KXBfZGF0YTsKPiArCj4gKwlpZiAodiAmIEJJVCgwKSkgewo+ICsJCXZncHVfdnJlZyh2Z3B1LCBC WFRfUE9SVF9DTDFDTV9EVzAoRFBJT19QSFkwKSkgJj0gflBIWV9SRVNFUlZFRDsKPiArCQl2Z3B1 X3ZyZWcodmdwdSwgQlhUX1BPUlRfQ0wxQ01fRFcwKERQSU9fUEhZMCkpIHw9IFBIWV9QT1dFUl9H T09EOwo+ICsJfQo+ICsKPiArCWlmICh2ICYgQklUKDEpKSB7Cj4gKwkJdmdwdV92cmVnKHZncHUs IEJYVF9QT1JUX0NMMUNNX0RXMChEUElPX1BIWTEpKSAmPSB+UEhZX1JFU0VSVkVEOwo+ICsJCXZn cHVfdnJlZyh2Z3B1LCBCWFRfUE9SVF9DTDFDTV9EVzAoRFBJT19QSFkxKSkgfD0gUEhZX1BPV0VS X0dPT0Q7Cj4gKwl9Cj4gKwo+ICsKPiArCXZncHVfdnJlZyh2Z3B1LCBvZmZzZXQpID0gdjsKPiAr Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiAgc3RhdGljIGludCByaW5nX3RpbWVzdGFtcF9tbWlv X3JlYWQoc3RydWN0IGludGVsX3ZncHUgKnZncHUsCj4gIAkJdW5zaWduZWQgaW50IG9mZnNldCwg dm9pZCAqcF9kYXRhLCB1bnNpZ25lZCBpbnQgYnl0ZXMpCj4gIHsKPiBAQCAtMTMwMiw3ICsxNjAz LDggQEAgc3RhdGljIGludCBlbHNwX21taW9fd3JpdGUoc3RydWN0IGludGVsX3ZncHUgKnZncHUs IHVuc2lnbmVkIGludCBvZmZzZXQsCj4gIAlpZiAoZXhlY2xpc3QtPmVsc3BfZHdvcmRzLmluZGV4 ID09IDMpIHsKPiAgCQlyZXQgPSBpbnRlbF92Z3B1X3N1Ym1pdF9leGVjbGlzdCh2Z3B1LCByaW5n X2lkKTsKPiAgCQlpZihyZXQpCj4gLQkJCWd2dF9lcnIoImZhaWwgc3VibWl0IHdvcmtsb2FkIG9u IHJpbmcgJWRcbiIsIHJpbmdfaWQpOwo+ICsJCQlndnRfdmdwdV9lcnIoImZhaWwgc3VibWl0IHdv cmtsb2FkIG9uIHJpbmcgJWRcbiIsCj4gKwkJCQlyaW5nX2lkKTsKPiAgCX0KPiAgCj4gIAkrK2V4 ZWNsaXN0LT5lbHNwX2R3b3Jkcy5pbmRleDsKPiBAQCAtMTMxOCw2ICsxNjIwLDE3IEBAIHN0YXRp YyBpbnQgcmluZ19tb2RlX21taW9fd3JpdGUoc3RydWN0IGludGVsX3ZncHUgKnZncHUsIHVuc2ln bmVkIGludCBvZmZzZXQsCj4gIAlib29sIGVuYWJsZV9leGVjbGlzdDsKPiAgCj4gIAl3cml0ZV92 cmVnKHZncHUsIG9mZnNldCwgcF9kYXRhLCBieXRlcyk7Cj4gKwo+ICsJLyogd2hlbiBQUEdUVCBt b2RlIGVuYWJsZWQsIHdlIHdpbGwgY2hlY2sgaWYgZ3Vlc3QgaGFzIGNhbGxlZAo+ICsJICogcHZp bmZvLCBpZiBub3QsIHdlIHdpbGwgdHJlYXQgdGhpcyBndWVzdCBhcyBub24tZ3Z0Zy1hd2FyZQo+ ICsJICogZ3Vlc3QsIGFuZCBzdG9wIGVtdWxhdGluZyBpdHMgY2ZnIHNwYWNlLCBtbWlvLCBndHQs IGV0Yy4KPiArCSAqLwo+ICsJaWYgKCgoZGF0YSAmIF9NQVNLRURfQklUX0VOQUJMRShHRlhfUFBH VFRfRU5BQkxFKSkgfHwKPiArCQkJKGRhdGEgJiBfTUFTS0VEX0JJVF9FTkFCTEUoR0ZYX1JVTl9M SVNUX0VOQUJMRSkpKQo+ICsJCQkmJiAhdmdwdS0+cHZfbm90aWZpZWQpIHsKPiArCQllbnRlcl9m YWlsc2FmZV9tb2RlKHZncHUsIEdWVF9GQUlMU0FGRV9VTlNVUFBPUlRFRF9HVUVTVCk7Cj4gKwkJ cmV0dXJuIDA7Cj4gKwl9Cj4gIAlpZiAoKGRhdGEgJiBfTUFTS0VEX0JJVF9FTkFCTEUoR0ZYX1JV Tl9MSVNUX0VOQUJMRSkpCj4gIAkJCXx8IChkYXRhICYgX01BU0tFRF9CSVRfRElTQUJMRShHRlhf UlVOX0xJU1RfRU5BQkxFKSkpIHsKPiAgCQllbmFibGVfZXhlY2xpc3QgPSAhIShkYXRhICYgR0ZY X1JVTl9MSVNUX0VOQUJMRSk7Cj4gQEAgLTE0MDAsNiArMTcxMyw5IEBAIHN0YXRpYyBpbnQgcmlu Z19yZXNldF9jdGxfd3JpdGUoc3RydWN0IGludGVsX3ZncHUgKnZncHUsCj4gICNkZWZpbmUgTU1J T19HTShyZWcsIGQsIHIsIHcpIFwKPiAgCU1NSU9fRihyZWcsIDQsIEZfR01BRFIsIDB4RkZGRkYw MDAsIDAsIGQsIHIsIHcpCj4gIAo+ICsjZGVmaW5lIE1NSU9fR01fUkRSKHJlZywgZCwgciwgdykg XAo+ICsJTU1JT19GKHJlZywgNCwgRl9HTUFEUiB8IEZfQ01EX0FDQ0VTUywgMHhGRkZGRjAwMCwg MCwgZCwgciwgdykKPiArCj4gICNkZWZpbmUgTU1JT19STyhyZWcsIGQsIGYsIHJtLCByLCB3KSBc Cj4gIAlNTUlPX0YocmVnLCA0LCBGX1JPIHwgZiwgMCwgcm0sIGQsIHIsIHcpCj4gIAo+IEBAIC0x NDE5LDgxICsxNzM1LDE0NiBAQCBzdGF0aWMgaW50IHJpbmdfcmVzZXRfY3RsX3dyaXRlKHN0cnVj dCBpbnRlbF92Z3B1ICp2Z3B1LAo+ICAjZGVmaW5lIE1NSU9fUklOR19HTShwcmVmaXgsIGQsIHIs IHcpIFwKPiAgCU1NSU9fUklOR19GKHByZWZpeCwgNCwgRl9HTUFEUiwgMHhGRkZGMDAwMCwgMCwg ZCwgciwgdykKPiAgCj4gKyNkZWZpbmUgTU1JT19SSU5HX0dNX1JEUihwcmVmaXgsIGQsIHIsIHcp IFwKPiArCU1NSU9fUklOR19GKHByZWZpeCwgNCwgRl9HTUFEUiB8IEZfQ01EX0FDQ0VTUywgMHhG RkZGMDAwMCwgMCwgZCwgciwgdykKPiArCj4gICNkZWZpbmUgTU1JT19SSU5HX1JPKHByZWZpeCwg ZCwgZiwgcm0sIHIsIHcpIFwKPiAgCU1NSU9fUklOR19GKHByZWZpeCwgNCwgRl9STyB8IGYsIDAs IHJtLCBkLCByLCB3KQo+ICAKPiArI2RlZmluZSBNTUlPX1BJUEVTX1NESChwcmVmaXgsIHBsYW5l LCBzLCBkLCByLCB3KSBkbyB7IFwKPiArCWludCBwaXBlOyBcCj4gKwlmb3JfZWFjaF9waXBlKGRl dl9wcml2LCBwaXBlKSBcCj4gKwkJTU1JT19GKHByZWZpeChwaXBlLCBwbGFuZSksIHMsIDAsIDAs IDAsIGQsIHIsIHcpOyBcCj4gK30gd2hpbGUgKDApCj4gKwo+ICsjZGVmaW5lIE1NSU9fUExBTkVT X1NESChwcmVmaXgsIHMsIGQsIHIsIHcpIGRvIHsgXAo+ICsJaW50IHBpcGUsIHBsYW5lOyBcCj4g Kwlmb3JfZWFjaF9waXBlKGRldl9wcml2LCBwaXBlKSBcCj4gKwkJZm9yX2VhY2hfdW5pdmVyc2Fs X3BsYW5lKGRldl9wcml2LCBwaXBlLCBwbGFuZSkgXAo+ICsJCQlNTUlPX0YocHJlZml4KHBpcGUs IHBsYW5lKSwgcywgMCwgMCwgMCwgZCwgciwgdyk7IFwKPiArfSB3aGlsZSAoMCkKPiArCj4gKyNk ZWZpbmUgTU1JT19QTEFORVNfREgocHJlZml4LCBkLCByLCB3KSBcCj4gKwlNTUlPX1BMQU5FU19T REgocHJlZml4LCA0LCBkLCByLCB3KQo+ICsKPiArI2RlZmluZSBNTUlPX1BPUlRfQ0xfUkVGKHBo eSkgXAo+ICsJTU1JT19EKEJYVF9QT1JUX0NMMUNNX0RXMChwaHkpLCBEX0JYVCk7IFwKPiArCU1N SU9fRChCWFRfUE9SVF9DTDFDTV9EVzkocGh5KSwgRF9CWFQpOyBcCj4gKwlNTUlPX0QoQlhUX1BP UlRfQ0wxQ01fRFcxMChwaHkpLCBEX0JYVCk7IFwKPiArCU1NSU9fRChCWFRfUE9SVF9DTDFDTV9E VzI4KHBoeSksIERfQlhUKTsgXAo+ICsJTU1JT19EKEJYVF9QT1JUX0NMMUNNX0RXMzAocGh5KSwg RF9CWFQpOyBcCj4gKwlNTUlPX0QoQlhUX1BPUlRfQ0wyQ01fRFc2KHBoeSksIERfQlhUKTsgXAo+ ICsJTU1JT19EKEJYVF9QT1JUX1JFRl9EVzMocGh5KSwgRF9CWFQpOyBcCj4gKwlNTUlPX0QoQlhU X1BPUlRfUkVGX0RXNihwaHkpLCBEX0JYVCk7IFwKPiArCU1NSU9fRChCWFRfUE9SVF9SRUZfRFc4 KHBoeSksIERfQlhUKQo+ICsKPiArI2RlZmluZSBNTUlPX1BPUlRfUENTX1RYKHBoeSwgY2gpIFwK PiArCU1NSU9fRChCWFRfUE9SVF9QTExfRUJCXzAocGh5LCBjaCksIERfQlhUKTsgXAo+ICsJTU1J T19EKEJYVF9QT1JUX1BMTF9FQkJfNChwaHksIGNoKSwgRF9CWFQpOyBcCj4gKwlNTUlPX0QoQlhU X1BPUlRfUENTX0RXMTBfTE4wMShwaHksIGNoKSwgRF9CWFQpOyBcCj4gKwlNTUlPX0QoQlhUX1BP UlRfUENTX0RXMTBfR1JQKHBoeSwgY2gpLCBEX0JYVCk7IFwKPiArCU1NSU9fRChCWFRfUE9SVF9Q Q1NfRFcxMl9MTjAxKHBoeSwgY2gpLCBEX0JYVCk7IFwKPiArCU1NSU9fRChCWFRfUE9SVF9QQ1Nf RFcxMl9MTjIzKHBoeSwgY2gpLCBEX0JYVCk7IFwKPiArCU1NSU9fREgoQlhUX1BPUlRfUENTX0RX MTJfR1JQKHBoeSwgY2gpLCBEX0JYVCwgTlVMTCwgYnh0X3Bjc19kdzEyX2dycF93cml0ZSk7IFwK PiArCU1NSU9fRChCWFRfUE9SVF9UWF9EVzJfTE4wKHBoeSwgY2gpLCBEX0JYVCk7IFwKPiArCU1N SU9fRChCWFRfUE9SVF9UWF9EVzJfR1JQKHBoeSwgY2gpLCBEX0JYVCk7IFwKPiArCU1NSU9fREgo QlhUX1BPUlRfVFhfRFczX0xOMChwaHksIGNoKSwgRF9CWFQsIGJ4dF9wb3J0X3R4X2R3M19yZWFk LCBOVUxMKTsgXAo+ICsJTU1JT19EKEJYVF9QT1JUX1RYX0RXM19HUlAocGh5LCBjaCksIERfQlhU KTsgXAo+ICsJTU1JT19EKEJYVF9QT1JUX1RYX0RXNF9MTjAocGh5LCBjaCksIERfQlhUKTsgXAo+ ICsJTU1JT19EKEJYVF9QT1JUX1RYX0RXNF9HUlAocGh5LCBjaCksIERfQlhUKTsgXAo+ICsJTU1J T19EKEJYVF9QT1JUX1RYX0RXMTRfTE4ocGh5LCBjaCwgMCksIERfQlhUKTsgXAo+ICsJTU1JT19E KEJYVF9QT1JUX1RYX0RXMTRfTE4ocGh5LCBjaCwgMSksIERfQlhUKTsgXAo+ICsJTU1JT19EKEJY VF9QT1JUX1RYX0RXMTRfTE4ocGh5LCBjaCwgMiksIERfQlhUKTsgXAo+ICsJTU1JT19EKEJYVF9Q T1JUX1RYX0RXMTRfTE4ocGh5LCBjaCwgMyksIERfQlhUKTsgXAo+ICsJTU1JT19EKEJYVF9QT1JU X1BMTChwaHksIGNoLCAwKSwgRF9CWFQpOyBcCj4gKwlNTUlPX0QoQlhUX1BPUlRfUExMKHBoeSwg Y2gsIDEpLCBEX0JYVCk7IFwKPiArCU1NSU9fRChCWFRfUE9SVF9QTEwocGh5LCBjaCwgMiksIERf QlhUKTsgXAo+ICsJTU1JT19EKEJYVF9QT1JUX1BMTChwaHksIGNoLCAzKSwgRF9CWFQpOyBcCj4g KwlNTUlPX0QoQlhUX1BPUlRfUExMKHBoeSwgY2gsIDYpLCBEX0JYVCk7IFwKPiArCU1NSU9fRChC WFRfUE9SVF9QTEwocGh5LCBjaCwgOCksIERfQlhUKTsgXAo+ICsJTU1JT19EKEJYVF9QT1JUX1BM TChwaHksIGNoLCA5KSwgRF9CWFQpOyBcCj4gKwlNTUlPX0QoQlhUX1BPUlRfUExMKHBoeSwgY2gs IDEwKSwgRF9CWFQpCj4gKwo+ICBzdGF0aWMgaW50IGluaXRfZ2VuZXJpY19tbWlvX2luZm8oc3Ry dWN0IGludGVsX2d2dCAqZ3Z0KQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSBndnQtPmRldl9wcml2Owo+ICAJaW50IHJldDsKPiAgCj4gLQlNTUlPX1JJTkdfREZI KFJJTkdfSU1SLCBEX0FMTCwgMCwgTlVMTCwgaW50ZWxfdmdwdV9yZWdfaW1yX2hhbmRsZXIpOwo+ ICsJTU1JT19SSU5HX0RGSChSSU5HX0lNUiwgRF9BTEwsIEZfQ01EX0FDQ0VTUywgTlVMTCwKPiAr CQlpbnRlbF92Z3B1X3JlZ19pbXJfaGFuZGxlcik7Cj4gIAo+ICAJTU1JT19ERkgoU0RFSU1SLCBE X0FMTCwgMCwgTlVMTCwgaW50ZWxfdmdwdV9yZWdfaW1yX2hhbmRsZXIpOwo+ICAJTU1JT19ERkgo U0RFSUVSLCBEX0FMTCwgMCwgTlVMTCwgaW50ZWxfdmdwdV9yZWdfaWVyX2hhbmRsZXIpOwo+ICAJ TU1JT19ERkgoU0RFSUlSLCBEX0FMTCwgMCwgTlVMTCwgaW50ZWxfdmdwdV9yZWdfaWlyX2hhbmRs ZXIpOwo+ICAJTU1JT19EKFNERUlTUiwgRF9BTEwpOwo+ICAKPiAtCU1NSU9fUklOR19EKFJJTkdf SFdTVEFNLCBEX0FMTCk7Cj4gKwlNTUlPX1JJTkdfREZIKFJJTkdfSFdTVEFNLCBEX0FMTCwgRl9D TURfQUNDRVNTLCBOVUxMLCBOVUxMKTsKPiAgCj4gLQlNTUlPX0dNKFJFTkRFUl9IV1NfUEdBX0dF TjcsIERfQUxMLCBOVUxMLCBOVUxMKTsKPiAtCU1NSU9fR00oQlNEX0hXU19QR0FfR0VONywgRF9B TEwsIE5VTEwsIE5VTEwpOwo+IC0JTU1JT19HTShCTFRfSFdTX1BHQV9HRU43LCBEX0FMTCwgTlVM TCwgTlVMTCk7Cj4gLQlNTUlPX0dNKFZFQk9YX0hXU19QR0FfR0VONywgRF9BTEwsIE5VTEwsIE5V TEwpOwo+ICsJTU1JT19HTV9SRFIoUkVOREVSX0hXU19QR0FfR0VONywgRF9BTEwsIE5VTEwsIE5V TEwpOwo+ICsJTU1JT19HTV9SRFIoQlNEX0hXU19QR0FfR0VONywgRF9BTEwsIE5VTEwsIE5VTEwp Owo+ICsJTU1JT19HTV9SRFIoQkxUX0hXU19QR0FfR0VONywgRF9BTEwsIE5VTEwsIE5VTEwpOwo+ ICsJTU1JT19HTV9SRFIoVkVCT1hfSFdTX1BHQV9HRU43LCBEX0FMTCwgTlVMTCwgTlVMTCk7Cj4g IAo+ICAjZGVmaW5lIFJJTkdfUkVHKGJhc2UpIChiYXNlICsgMHgyOCkKPiAtCU1NSU9fUklOR19E KFJJTkdfUkVHLCBEX0FMTCk7Cj4gKwlNTUlPX1JJTkdfREZIKFJJTkdfUkVHLCBEX0FMTCwgRl9D TURfQUNDRVNTLCBOVUxMLCBOVUxMKTsKPiAgI3VuZGVmIFJJTkdfUkVHCj4gIAo+ICAjZGVmaW5l IFJJTkdfUkVHKGJhc2UpIChiYXNlICsgMHgxMzQpCj4gLQlNTUlPX1JJTkdfRChSSU5HX1JFRywg RF9BTEwpOwo+ICsJTU1JT19SSU5HX0RGSChSSU5HX1JFRywgRF9BTEwsIEZfQ01EX0FDQ0VTUywg TlVMTCwgTlVMTCk7Cj4gICN1bmRlZiBSSU5HX1JFRwo+ICAKPiAtCU1NSU9fR00oMHgyMTQ4LCBE X0FMTCwgTlVMTCwgTlVMTCk7Cj4gLQlNTUlPX0dNKENDSUQsIERfQUxMLCBOVUxMLCBOVUxMKTsK PiAtCU1NSU9fR00oMHgxMjE5OCwgRF9BTEwsIE5VTEwsIE5VTEwpOwo+ICsJTU1JT19HTV9SRFIo MHgyMTQ4LCBEX0FMTCwgTlVMTCwgTlVMTCk7Cj4gKwlNTUlPX0dNX1JEUihDQ0lELCBEX0FMTCwg TlVMTCwgTlVMTCk7Cj4gKwlNTUlPX0dNX1JEUigweDEyMTk4LCBEX0FMTCwgTlVMTCwgTlVMTCk7 Cj4gIAlNTUlPX0QoR0VON19DWFRfU0laRSwgRF9BTEwpOwo+ICAKPiAtCU1NSU9fUklOR19EKFJJ TkdfVEFJTCwgRF9BTEwpOwo+IC0JTU1JT19SSU5HX0QoUklOR19IRUFELCBEX0FMTCk7Cj4gLQlN TUlPX1JJTkdfRChSSU5HX0NUTCwgRF9BTEwpOwo+IC0JTU1JT19SSU5HX0QoUklOR19BQ1RIRCwg RF9BTEwpOwo+IC0JTU1JT19SSU5HX0dNKFJJTkdfU1RBUlQsIERfQUxMLCBOVUxMLCBOVUxMKTsK PiArCU1NSU9fUklOR19ERkgoUklOR19UQUlMLCBEX0FMTCwgRl9DTURfQUNDRVNTLCBOVUxMLCBO VUxMKTsKPiArCU1NSU9fUklOR19ERkgoUklOR19IRUFELCBEX0FMTCwgRl9DTURfQUNDRVNTLCBO VUxMLCBOVUxMKTsKPiArCU1NSU9fUklOR19ERkgoUklOR19DVEwsIERfQUxMLCBGX0NNRF9BQ0NF U1MsIE5VTEwsIE5VTEwpOwo+ICsJTU1JT19SSU5HX0RGSChSSU5HX0FDVEhELCBEX0FMTCwgRl9D TURfQUNDRVNTLCBOVUxMLCBOVUxMKTsKPiArCU1NSU9fUklOR19HTV9SRFIoUklOR19TVEFSVCwg RF9BTEwsIE5VTEwsIE5VTEwpOwo+ICAKPiAgCS8qIFJJTkcgTU9ERSAqLwo+ICAjZGVmaW5lIFJJ TkdfUkVHKGJhc2UpIChiYXNlICsgMHgyOWMpCj4gLQlNTUlPX1JJTkdfREZIKFJJTkdfUkVHLCBE X0FMTCwgRl9NT0RFX01BU0ssIE5VTEwsIHJpbmdfbW9kZV9tbWlvX3dyaXRlKTsKPiArCU1NSU9f UklOR19ERkgoUklOR19SRUcsIERfQUxMLCBGX01PREVfTUFTSyB8IEZfQ01EX0FDQ0VTUywgTlVM TCwKPiArCQlyaW5nX21vZGVfbW1pb193cml0ZSk7Cj4gICN1bmRlZiBSSU5HX1JFRwo+ICAKPiAt CU1NSU9fUklOR19ERkgoUklOR19NSV9NT0RFLCBEX0FMTCwgRl9NT0RFX01BU0ssIE5VTEwsIE5V TEwpOwo+IC0JTU1JT19SSU5HX0RGSChSSU5HX0lOU1RQTSwgRF9BTEwsIEZfTU9ERV9NQVNLLCBO VUxMLCBOVUxMKTsKPiArCU1NSU9fUklOR19ERkgoUklOR19NSV9NT0RFLCBEX0FMTCwgRl9NT0RF X01BU0sgfCBGX0NNRF9BQ0NFU1MsCj4gKwkJTlVMTCwgTlVMTCk7Cj4gKwlNTUlPX1JJTkdfREZI KFJJTkdfSU5TVFBNLCBEX0FMTCwgRl9NT0RFX01BU0sgfCBGX0NNRF9BQ0NFU1MsCj4gKwkJCU5V TEwsIE5VTEwpOwo+ICAJTU1JT19SSU5HX0RGSChSSU5HX1RJTUVTVEFNUCwgRF9BTEwsIEZfQ01E X0FDQ0VTUywKPiAgCQkJcmluZ190aW1lc3RhbXBfbW1pb19yZWFkLCBOVUxMKTsKPiAgCU1NSU9f UklOR19ERkgoUklOR19USU1FU1RBTVBfVURXLCBEX0FMTCwgRl9DTURfQUNDRVNTLAo+ICAJCQly aW5nX3RpbWVzdGFtcF9tbWlvX3JlYWQsIE5VTEwpOwo+ICAKPiAtCU1NSU9fREZIKEdFTjdfR1Rf TU9ERSwgRF9BTEwsIEZfTU9ERV9NQVNLLCBOVUxMLCBOVUxMKTsKPiAtCU1NSU9fREZIKENBQ0hF X01PREVfMF9HRU43LCBEX0FMTCwgRl9NT0RFX01BU0ssIE5VTEwsIE5VTEwpOwo+ICsJTU1JT19E RkgoR0VON19HVF9NT0RFLCBEX0FMTCwgRl9NT0RFX01BU0sgfCBGX0NNRF9BQ0NFU1MsIE5VTEws IE5VTEwpOwo+ICsJTU1JT19ERkgoQ0FDSEVfTU9ERV8wX0dFTjcsIERfQUxMLCBGX01PREVfTUFT SyB8IEZfQ01EX0FDQ0VTUywKPiArCQlOVUxMLCBOVUxMKTsKPiAgCU1NSU9fREZIKENBQ0hFX01P REVfMSwgRF9BTEwsIEZfTU9ERV9NQVNLIHwgRl9DTURfQUNDRVNTLCBOVUxMLCBOVUxMKTsKPiAt Cj4gLQlNTUlPX0RGSCgweDIwZGMsIERfQUxMLCBGX01PREVfTUFTSywgTlVMTCwgTlVMTCk7Cj4g LQlNTUlPX0RGSChfM0RfQ0hJQ0tFTjMsIERfQUxMLCBGX01PREVfTUFTSywgTlVMTCwgTlVMTCk7 Cj4gLQlNTUlPX0RGSCgweDIwODgsIERfQUxMLCBGX01PREVfTUFTSywgTlVMTCwgTlVMTCk7Cj4g LQlNTUlPX0RGSCgweDIwZTQsIERfQUxMLCBGX01PREVfTUFTSywgTlVMTCwgTlVMTCk7Cj4gLQlN TUlPX0RGSCgweDI0NzAsIERfQUxMLCBGX01PREVfTUFTSywgTlVMTCwgTlVMTCk7Cj4gLQlNTUlP X0QoR0FNX0VDT0NISywgRF9BTEwpOwo+IC0JTU1JT19ERkgoR0VON19DT01NT05fU0xJQ0VfQ0hJ Q0tFTjEsIERfQUxMLCBGX01PREVfTUFTSywgTlVMTCwgTlVMTCk7Cj4gKwlNTUlPX0RGSChDQUNI RV9NT0RFXzAsIERfQUxMLCBGX01PREVfTUFTSyB8IEZfQ01EX0FDQ0VTUywgTlVMTCwgTlVMTCk7 Cj4gKwlNTUlPX0RGSCgweDIxMjQsIERfQUxMLCBGX01PREVfTUFTSyB8IEZfQ01EX0FDQ0VTUywg TlVMTCwgTlVMTCk7Cj4gKwo+ICsJTU1JT19ERkgoMHgyMGRjLCBEX0FMTCwgRl9NT0RFX01BU0sg fCBGX0NNRF9BQ0NFU1MsIE5VTEwsIE5VTEwpOwo+ICsJTU1JT19ERkgoXzNEX0NISUNLRU4zLCBE X0FMTCwgRl9NT0RFX01BU0sgfCBGX0NNRF9BQ0NFU1MsIE5VTEwsIE5VTEwpOwo+ICsJTU1JT19E RkgoMHgyMDg4LCBEX0FMTCwgRl9NT0RFX01BU0sgfCBGX0NNRF9BQ0NFU1MsIE5VTEwsIE5VTEwp Owo+ICsJTU1JT19ERkgoMHgyMGU0LCBEX0FMTCwgRl9NT0RFX01BU0sgfCBGX0NNRF9BQ0NFU1Ms IE5VTEwsIE5VTEwpOwo+ICsJTU1JT19ERkgoMHgyNDcwLCBEX0FMTCwgRl9NT0RFX01BU0sgfCBG X0NNRF9BQ0NFU1MsIE5VTEwsIE5VTEwpOwo+ICsJTU1JT19ERkgoR0FNX0VDT0NISywgRF9BTEws IEZfQ01EX0FDQ0VTUywgTlVMTCwgTlVMTCk7Cj4gKwlNTUlPX0RGSChHRU43X0NPTU1PTl9TTElD RV9DSElDS0VOMSwgRF9BTEwsIEZfTU9ERV9NQVNLIHwgRl9DTURfQUNDRVNTLAo+ICsJCU5VTEws IE5VTEwpOwo+ICAJTU1JT19ERkgoQ09NTU9OX1NMSUNFX0NISUNLRU4yLCBEX0FMTCwgRl9NT0RF X01BU0sgfCBGX0NNRF9BQ0NFU1MsIE5VTEwsIE5VTEwpOwo+IC0JTU1JT19EKDB4OTAzMCwgRF9B TEwpOwo+IC0JTU1JT19EKDB4MjBhMCwgRF9BTEwpOwo+IC0JTU1JT19EKDB4MjQyMCwgRF9BTEwp Owo+IC0JTU1JT19EKDB4MjQzMCwgRF9BTEwpOwo+IC0JTU1JT19EKDB4MjQzNCwgRF9BTEwpOwo+ IC0JTU1JT19EKDB4MjQzOCwgRF9BTEwpOwo+IC0JTU1JT19EKDB4MjQzYywgRF9BTEwpOwo+IC0J TU1JT19ERkgoMHg3MDE4LCBEX0FMTCwgRl9NT0RFX01BU0ssIE5VTEwsIE5VTEwpOwo+ICsJTU1J T19ERkgoMHg5MDMwLCBEX0FMTCwgRl9DTURfQUNDRVNTLCBOVUxMLCBOVUxMKTsKPiArCU1NSU9f REZIKDB4MjBhMCwgRF9BTEwsIEZfQ01EX0FDQ0VTUywgTlVMTCwgTlVMTCk7Cj4gKwlNTUlPX0RG SCgweDI0MjAsIERfQUxMLCBGX0NNRF9BQ0NFU1MsIE5VTEwsIE5VTEwpOwo+ICsJTU1JT19ERkgo MHgyNDMwLCBEX0FMTCwgRl9DTURfQUNDRVNTLCBOVUxMLCBOVUxMKTsKPiArCU1NSU9fREZIKDB4 MjQzNCwgRF9BTEwsIEZfQ01EX0FDQ0VTUywgTlVMTCwgTlVMTCk7Cj4gKwlNTUlPX0RGSCgweDI0 MzgsIERfQUxMLCBGX0NNRF9BQ0NFU1MsIE5VTEwsIE5VTEwpOwo+ICsJTU1JT19ERkgoMHgyNDNj LCBEX0FMTCwgRl9DTURfQUNDRVNTLCBOVUxMLCBOVUxMKTsKPiArCU1NSU9fREZIKDB4NzAxOCwg RF9BTEwsIEZfTU9ERV9NQVNLIHwgRl9DTURfQUNDRVNTLCBOVUxMLCBOVUxMKTsKPiAgCU1NSU9f REZIKEhBTEZfU0xJQ0VfQ0hJQ0tFTjMsIERfQUxMLCBGX01PREVfTUFTSyB8IEZfQ01EX0FDQ0VT UywgTlVMTCwgTlVMTCk7Cj4gLQlNTUlPX0RGSCgweGUxMDAsIERfQUxMLCBGX01PREVfTUFTSywg TlVMTCwgTlVMTCk7Cj4gKwlNTUlPX0RGSChHRU43X0hBTEZfU0xJQ0VfQ0hJQ0tFTjEsIERfQUxM LCBGX01PREVfTUFTSyB8IEZfQ01EX0FDQ0VTUywgTlVMTCwgTlVMTCk7Cj4gIAo+ICAJLyogZGlz cGxheSAqLwo+ICAJTU1JT19GKDB4NjAyMjAsIDB4MjAsIDAsIDAsIDAsIERfQUxMLCBOVUxMLCBO VUxMKTsKPiBAQCAtMTUwNSw5ICsxODg2LDkgQEAgc3RhdGljIGludCBpbml0X2dlbmVyaWNfbW1p b19pbmZvKHN0cnVjdCBpbnRlbF9ndnQgKmd2dCkKPiAgCU1NSU9fRCgweGM0MDQwLCBEX0FMTCk7 Cj4gIAlNTUlPX0QoREVSUk1SLCBEX0FMTCk7Cj4gIAo+IC0JTU1JT19EKFBJUEVEU0woUElQRV9B KSwgRF9BTEwpOwo+IC0JTU1JT19EKFBJUEVEU0woUElQRV9CKSwgRF9BTEwpOwo+IC0JTU1JT19E KFBJUEVEU0woUElQRV9DKSwgRF9BTEwpOwo+ICsJTU1JT19ESChQSVBFRFNMKFBJUEVfQSksIERf QUxMLCBwaXBlX2RzbF9tbWlvX3JlYWQsIE5VTEwpOwo+ICsJTU1JT19ESChQSVBFRFNMKFBJUEVf QiksIERfQUxMLCBwaXBlX2RzbF9tbWlvX3JlYWQsIE5VTEwpOwo+ICsJTU1JT19ESChQSVBFRFNM KFBJUEVfQyksIERfQUxMLCBwaXBlX2RzbF9tbWlvX3JlYWQsIE5VTEwpOwo+ICAJTU1JT19EKFBJ UEVEU0woX1BJUEVfRURQKSwgRF9BTEwpOwo+ICAKPiAgCU1NSU9fREgoUElQRUNPTkYoUElQRV9B KSwgRF9BTEwsIE5VTEwsIHBpcGVjb25mX21taW9fd3JpdGUpOwo+IEBAIC0xNTUxLDcxICsxOTMy LDcxIEBAIHN0YXRpYyBpbnQgaW5pdF9nZW5lcmljX21taW9faW5mbyhzdHJ1Y3QgaW50ZWxfZ3Z0 ICpndnQpCj4gIAlNTUlPX0QoMHg3MDA5OCwgRF9BTEwpOwo+ICAJTU1JT19EKDB4NzAwOWMsIERf QUxMKTsKPiAgCj4gLQlNTUlPX0QoRFNQQ05UUihQSVBFX0EpLCBEX0FMTCk7Cj4gLQlNTUlPX0Qo RFNQQUREUihQSVBFX0EpLCBEX0FMTCk7Cj4gLQlNTUlPX0QoRFNQU1RSSURFKFBJUEVfQSksIERf QUxMKTsKPiAtCU1NSU9fRChEU1BQT1MoUElQRV9BKSwgRF9BTEwpOwo+IC0JTU1JT19EKERTUFNJ WkUoUElQRV9BKSwgRF9BTEwpOwo+IC0JTU1JT19ESChEU1BTVVJGKFBJUEVfQSksIERfQUxMLCBO VUxMLCBwcmlfc3VyZl9tbWlvX3dyaXRlKTsKPiAtCU1NSU9fRChEU1BPRkZTRVQoUElQRV9BKSwg RF9BTEwpOwo+IC0JTU1JT19EKERTUFNVUkZMSVZFKFBJUEVfQSksIERfQUxMKTsKPiAtCj4gLQlN TUlPX0QoRFNQQ05UUihQSVBFX0IpLCBEX0FMTCk7Cj4gLQlNTUlPX0QoRFNQQUREUihQSVBFX0Ip LCBEX0FMTCk7Cj4gLQlNTUlPX0QoRFNQU1RSSURFKFBJUEVfQiksIERfQUxMKTsKPiAtCU1NSU9f RChEU1BQT1MoUElQRV9CKSwgRF9BTEwpOwo+IC0JTU1JT19EKERTUFNJWkUoUElQRV9CKSwgRF9B TEwpOwo+IC0JTU1JT19ESChEU1BTVVJGKFBJUEVfQiksIERfQUxMLCBOVUxMLCBwcmlfc3VyZl9t bWlvX3dyaXRlKTsKPiAtCU1NSU9fRChEU1BPRkZTRVQoUElQRV9CKSwgRF9BTEwpOwo+IC0JTU1J T19EKERTUFNVUkZMSVZFKFBJUEVfQiksIERfQUxMKTsKPiAtCj4gLQlNTUlPX0QoRFNQQ05UUihQ SVBFX0MpLCBEX0FMTCk7Cj4gLQlNTUlPX0QoRFNQQUREUihQSVBFX0MpLCBEX0FMTCk7Cj4gLQlN TUlPX0QoRFNQU1RSSURFKFBJUEVfQyksIERfQUxMKTsKPiAtCU1NSU9fRChEU1BQT1MoUElQRV9D KSwgRF9BTEwpOwo+IC0JTU1JT19EKERTUFNJWkUoUElQRV9DKSwgRF9BTEwpOwo+IC0JTU1JT19E SChEU1BTVVJGKFBJUEVfQyksIERfQUxMLCBOVUxMLCBwcmlfc3VyZl9tbWlvX3dyaXRlKTsKPiAt CU1NSU9fRChEU1BPRkZTRVQoUElQRV9DKSwgRF9BTEwpOwo+IC0JTU1JT19EKERTUFNVUkZMSVZF KFBJUEVfQyksIERfQUxMKTsKPiAtCj4gLQlNTUlPX0QoU1BSQ1RMKFBJUEVfQSksIERfQUxMKTsK PiAtCU1NSU9fRChTUFJMSU5PRkYoUElQRV9BKSwgRF9BTEwpOwo+IC0JTU1JT19EKFNQUlNUUklE RShQSVBFX0EpLCBEX0FMTCk7Cj4gLQlNTUlPX0QoU1BSUE9TKFBJUEVfQSksIERfQUxMKTsKPiAt CU1NSU9fRChTUFJTSVpFKFBJUEVfQSksIERfQUxMKTsKPiAtCU1NSU9fRChTUFJLRVlWQUwoUElQ RV9BKSwgRF9BTEwpOwo+IC0JTU1JT19EKFNQUktFWU1TSyhQSVBFX0EpLCBEX0FMTCk7Cj4gLQlN TUlPX0RIKFNQUlNVUkYoUElQRV9BKSwgRF9BTEwsIE5VTEwsIHNwcl9zdXJmX21taW9fd3JpdGUp Owo+IC0JTU1JT19EKFNQUktFWU1BWChQSVBFX0EpLCBEX0FMTCk7Cj4gLQlNTUlPX0QoU1BST0ZG U0VUKFBJUEVfQSksIERfQUxMKTsKPiAtCU1NSU9fRChTUFJTQ0FMRShQSVBFX0EpLCBEX0FMTCk7 Cj4gLQlNTUlPX0QoU1BSU1VSRkxJVkUoUElQRV9BKSwgRF9BTEwpOwo+IC0KPiAtCU1NSU9fRChT UFJDVEwoUElQRV9CKSwgRF9BTEwpOwo+IC0JTU1JT19EKFNQUkxJTk9GRihQSVBFX0IpLCBEX0FM TCk7Cj4gLQlNTUlPX0QoU1BSU1RSSURFKFBJUEVfQiksIERfQUxMKTsKPiAtCU1NSU9fRChTUFJQ T1MoUElQRV9CKSwgRF9BTEwpOwo+IC0JTU1JT19EKFNQUlNJWkUoUElQRV9CKSwgRF9BTEwpOwo+ IC0JTU1JT19EKFNQUktFWVZBTChQSVBFX0IpLCBEX0FMTCk7Cj4gLQlNTUlPX0QoU1BSS0VZTVNL KFBJUEVfQiksIERfQUxMKTsKPiAtCU1NSU9fREgoU1BSU1VSRihQSVBFX0IpLCBEX0FMTCwgTlVM TCwgc3ByX3N1cmZfbW1pb193cml0ZSk7Cj4gLQlNTUlPX0QoU1BSS0VZTUFYKFBJUEVfQiksIERf QUxMKTsKPiAtCU1NSU9fRChTUFJPRkZTRVQoUElQRV9CKSwgRF9BTEwpOwo+IC0JTU1JT19EKFNQ UlNDQUxFKFBJUEVfQiksIERfQUxMKTsKPiAtCU1NSU9fRChTUFJTVVJGTElWRShQSVBFX0IpLCBE X0FMTCk7Cj4gLQo+IC0JTU1JT19EKFNQUkNUTChQSVBFX0MpLCBEX0FMTCk7Cj4gLQlNTUlPX0Qo U1BSTElOT0ZGKFBJUEVfQyksIERfQUxMKTsKPiAtCU1NSU9fRChTUFJTVFJJREUoUElQRV9DKSwg RF9BTEwpOwo+IC0JTU1JT19EKFNQUlBPUyhQSVBFX0MpLCBEX0FMTCk7Cj4gLQlNTUlPX0QoU1BS U0laRShQSVBFX0MpLCBEX0FMTCk7Cj4gLQlNTUlPX0QoU1BSS0VZVkFMKFBJUEVfQyksIERfQUxM KTsKPiAtCU1NSU9fRChTUFJLRVlNU0soUElQRV9DKSwgRF9BTEwpOwo+IC0JTU1JT19ESChTUFJT VVJGKFBJUEVfQyksIERfQUxMLCBOVUxMLCBzcHJfc3VyZl9tbWlvX3dyaXRlKTsKPiAtCU1NSU9f RChTUFJLRVlNQVgoUElQRV9DKSwgRF9BTEwpOwo+IC0JTU1JT19EKFNQUk9GRlNFVChQSVBFX0Mp LCBEX0FMTCk7Cj4gLQlNTUlPX0QoU1BSU0NBTEUoUElQRV9DKSwgRF9BTEwpOwo+IC0JTU1JT19E KFNQUlNVUkZMSVZFKFBJUEVfQyksIERfQUxMKTsKPiArCU1NSU9fRChEU1BDTlRSKFBJUEVfQSks IERfQkRXKTsKPiArCU1NSU9fRChEU1BBRERSKFBJUEVfQSksIERfQkRXKTsKPiArCU1NSU9fRChE U1BTVFJJREUoUElQRV9BKSwgRF9CRFcpOwo+ICsJTU1JT19EKERTUFBPUyhQSVBFX0EpLCBEX0JE Vyk7Cj4gKwlNTUlPX0QoRFNQU0laRShQSVBFX0EpLCBEX0JEVyk7Cj4gKwlNTUlPX0RIKERTUFNV UkYoUElQRV9BKSwgRF9CRFcsIE5VTEwsIHByaV9zdXJmX21taW9fd3JpdGUpOwo+ICsJTU1JT19E KERTUE9GRlNFVChQSVBFX0EpLCBEX0JEVyk7Cj4gKwlNTUlPX0QoRFNQU1VSRkxJVkUoUElQRV9B KSwgRF9CRFcpOwo+ICsKPiArCU1NSU9fRChEU1BDTlRSKFBJUEVfQiksIERfQkRXKTsKPiArCU1N SU9fRChEU1BBRERSKFBJUEVfQiksIERfQkRXKTsKPiArCU1NSU9fRChEU1BTVFJJREUoUElQRV9C KSwgRF9CRFcpOwo+ICsJTU1JT19EKERTUFBPUyhQSVBFX0IpLCBEX0JEVyk7Cj4gKwlNTUlPX0Qo RFNQU0laRShQSVBFX0IpLCBEX0JEVyk7Cj4gKwlNTUlPX0RIKERTUFNVUkYoUElQRV9CKSwgRF9C RFcsIE5VTEwsIHByaV9zdXJmX21taW9fd3JpdGUpOwo+ICsJTU1JT19EKERTUE9GRlNFVChQSVBF X0IpLCBEX0JEVyk7Cj4gKwlNTUlPX0QoRFNQU1VSRkxJVkUoUElQRV9CKSwgRF9CRFcpOwo+ICsK PiArCU1NSU9fRChEU1BDTlRSKFBJUEVfQyksIERfQkRXKTsKPiArCU1NSU9fRChEU1BBRERSKFBJ UEVfQyksIERfQkRXKTsKPiArCU1NSU9fRChEU1BTVFJJREUoUElQRV9DKSwgRF9CRFcpOwo+ICsJ TU1JT19EKERTUFBPUyhQSVBFX0MpLCBEX0JEVyk7Cj4gKwlNTUlPX0QoRFNQU0laRShQSVBFX0Mp LCBEX0JEVyk7Cj4gKwlNTUlPX0RIKERTUFNVUkYoUElQRV9DKSwgRF9CRFcsIE5VTEwsIHByaV9z dXJmX21taW9fd3JpdGUpOwo+ICsJTU1JT19EKERTUE9GRlNFVChQSVBFX0MpLCBEX0JEVyk7Cj4g KwlNTUlPX0QoRFNQU1VSRkxJVkUoUElQRV9DKSwgRF9CRFcpOwo+ICsKPiArCU1NSU9fRChTUFJD VEwoUElQRV9BKSwgRF9CRFcpOwo+ICsJTU1JT19EKFNQUkxJTk9GRihQSVBFX0EpLCBEX0JEVyk7 Cj4gKwlNTUlPX0QoU1BSU1RSSURFKFBJUEVfQSksIERfQkRXKTsKPiArCU1NSU9fRChTUFJQT1Mo UElQRV9BKSwgRF9CRFcpOwo+ICsJTU1JT19EKFNQUlNJWkUoUElQRV9BKSwgRF9CRFcpOwo+ICsJ TU1JT19EKFNQUktFWVZBTChQSVBFX0EpLCBEX0JEVyk7Cj4gKwlNTUlPX0QoU1BSS0VZTVNLKFBJ UEVfQSksIERfQkRXKTsKPiArCU1NSU9fREgoU1BSU1VSRihQSVBFX0EpLCBEX0JEVywgTlVMTCwg c3ByX3N1cmZfbW1pb193cml0ZSk7Cj4gKwlNTUlPX0QoU1BSS0VZTUFYKFBJUEVfQSksIERfQkRX KTsKPiArCU1NSU9fRChTUFJPRkZTRVQoUElQRV9BKSwgRF9CRFcpOwo+ICsJTU1JT19EKFNQUlND QUxFKFBJUEVfQSksIERfQkRXKTsKPiArCU1NSU9fRChTUFJTVVJGTElWRShQSVBFX0EpLCBEX0JE Vyk7Cj4gKwo+ICsJTU1JT19EKFNQUkNUTChQSVBFX0IpLCBEX0JEVyk7Cj4gKwlNTUlPX0QoU1BS TElOT0ZGKFBJUEVfQiksIERfQkRXKTsKPiArCU1NSU9fRChTUFJTVFJJREUoUElQRV9CKSwgRF9C RFcpOwo+ICsJTU1JT19EKFNQUlBPUyhQSVBFX0IpLCBEX0JEVyk7Cj4gKwlNTUlPX0QoU1BSU0la RShQSVBFX0IpLCBEX0JEVyk7Cj4gKwlNTUlPX0QoU1BSS0VZVkFMKFBJUEVfQiksIERfQkRXKTsK PiArCU1NSU9fRChTUFJLRVlNU0soUElQRV9CKSwgRF9CRFcpOwo+ICsJTU1JT19ESChTUFJTVVJG KFBJUEVfQiksIERfQkRXLCBOVUxMLCBzcHJfc3VyZl9tbWlvX3dyaXRlKTsKPiArCU1NSU9fRChT UFJLRVlNQVgoUElQRV9CKSwgRF9CRFcpOwo+ICsJTU1JT19EKFNQUk9GRlNFVChQSVBFX0IpLCBE X0JEVyk7Cj4gKwlNTUlPX0QoU1BSU0NBTEUoUElQRV9CKSwgRF9CRFcpOwo+ICsJTU1JT19EKFNQ UlNVUkZMSVZFKFBJUEVfQiksIERfQkRXKTsKPiArCj4gKwlNTUlPX0QoU1BSQ1RMKFBJUEVfQyks IERfQkRXKTsKPiArCU1NSU9fRChTUFJMSU5PRkYoUElQRV9DKSwgRF9CRFcpOwo+ICsJTU1JT19E KFNQUlNUUklERShQSVBFX0MpLCBEX0JEVyk7Cj4gKwlNTUlPX0QoU1BSUE9TKFBJUEVfQyksIERf QkRXKTsKPiArCU1NSU9fRChTUFJTSVpFKFBJUEVfQyksIERfQkRXKTsKPiArCU1NSU9fRChTUFJL RVlWQUwoUElQRV9DKSwgRF9CRFcpOwo+ICsJTU1JT19EKFNQUktFWU1TSyhQSVBFX0MpLCBEX0JE Vyk7Cj4gKwlNTUlPX0RIKFNQUlNVUkYoUElQRV9DKSwgRF9CRFcsIE5VTEwsIHNwcl9zdXJmX21t aW9fd3JpdGUpOwo+ICsJTU1JT19EKFNQUktFWU1BWChQSVBFX0MpLCBEX0JEVyk7Cj4gKwlNTUlP X0QoU1BST0ZGU0VUKFBJUEVfQyksIERfQkRXKTsKPiArCU1NSU9fRChTUFJTQ0FMRShQSVBFX0Mp LCBEX0JEVyk7Cj4gKwlNTUlPX0QoU1BSU1VSRkxJVkUoUElQRV9DKSwgRF9CRFcpOwo+ICAKPiAg CU1NSU9fRihMR0NfUEFMRVRURShQSVBFX0EsIDApLCA0ICogMjU2LCAwLCAwLCAwLCBEX0FMTCwg TlVMTCwgTlVMTCk7Cj4gIAlNTUlPX0YoTEdDX1BBTEVUVEUoUElQRV9CLCAwKSwgNCAqIDI1Niwg MCwgMCwgMCwgRF9BTEwsIE5VTEwsIE5VTEwpOwo+IEBAIC0xNzI2LDggKzIxMDcsOCBAQCBzdGF0 aWMgaW50IGluaXRfZ2VuZXJpY19tbWlvX2luZm8oc3RydWN0IGludGVsX2d2dCAqZ3Z0KQo+ICAK PiAgCU1NSU9fRChCTENfUFdNX0NQVV9DVEwyLCBEX0FMTCk7Cj4gIAlNTUlPX0QoQkxDX1BXTV9D UFVfQ1RMLCBEX0FMTCk7Cj4gLQlNTUlPX0QoQkxDX1BXTV9QQ0hfQ1RMMSwgRF9BTEwpOwo+IC0J TU1JT19EKEJMQ19QV01fUENIX0NUTDIsIERfQUxMKTsKPiArCU1NSU9fRChCTENfUFdNX1BDSF9D VEwxLCBEX0FMTCAmIH5EX0JYVCk7Cj4gKwlNTUlPX0QoQkxDX1BXTV9QQ0hfQ1RMMiwgRF9BTEwg JiB+RF9CWFQpOwo+ICAKPiAgCU1NSU9fRCgweDQ4MjY4LCBEX0FMTCk7Cj4gIAo+IEBAIC0yMDIy LDggKzI0MDMsOCBAQCBzdGF0aWMgaW50IGluaXRfZ2VuZXJpY19tbWlvX2luZm8oc3RydWN0IGlu dGVsX2d2dCAqZ3Z0KQo+ICAJTU1JT19EKEZPUkNFV0FLRV9BQ0ssIERfQUxMKTsKPiAgCU1NSU9f RChHRU42X0dUX0NPUkVfU1RBVFVTLCBEX0FMTCk7Cj4gIAlNTUlPX0QoR0VONl9HVF9USFJFQURf U1RBVFVTX1JFRywgRF9BTEwpOwo+IC0JTU1JT19EKEdURklGT0RCRywgRF9BTEwpOwo+IC0JTU1J T19EKEdURklGT0NUTCwgRF9BTEwpOwo+ICsJTU1JT19ERkgoR1RGSUZPREJHLCBEX0FMTCwgRl9D TURfQUNDRVNTLCBOVUxMLCBOVUxMKTsKPiArCU1NSU9fREZIKEdURklGT0NUTCwgRF9BTEwsIEZf Q01EX0FDQ0VTUywgTlVMTCwgTlVMTCk7Cj4gIAlNTUlPX0RIKEZPUkNFV0FLRV9NVCwgRF9QUkVf U0tMLCBOVUxMLCBtdWxfZm9yY2Vfd2FrZV93cml0ZSk7Cj4gIAlNTUlPX0RIKEZPUkNFV0FLRV9B Q0tfSFNXLCBEX0hTVyB8IERfQkRXLCBOVUxMLCBOVUxMKTsKPiAgCU1NSU9fRChFQ09CVVMsIERf QUxMKTsKPiBAQCAtMjA3MSw4ICsyNDUyLDE1IEBAIHN0YXRpYyBpbnQgaW5pdF9nZW5lcmljX21t aW9faW5mbyhzdHJ1Y3QgaW50ZWxfZ3Z0ICpndnQpCj4gIAlNTUlPX0YoVkdUX1BWSU5GT19QQUdF LCBWR1RfUFZJTkZPX1NJWkUsIEZfVU5BTElHTiwgMCwgMCwgRF9BTEwsIHB2aW5mb19tbWlvX3Jl YWQsIHB2aW5mb19tbWlvX3dyaXRlKTsKPiAgCU1NSU9fREgoQ1BVX1ZHQUNOVFJMLCBEX0FMTCwg TlVMTCwgdmdhX2NvbnRyb2xfbW1pb193cml0ZSk7Cj4gIAo+IC0JTU1JT19GKE1DSEJBUl9NSVJS T1JfQkFTRV9TTkIsIDB4NDAwMDAsIDAsIDAsIDAsIERfQUxMLCBOVUxMLCBOVUxMKTsKPiAtCj4g KwlNTUlPX0QoTUFEX0RJTU1fQzAsIERfQUxMKTsKPiArCU1NSU9fRChNQURfRElNTV9DMSwgRF9B TEwpOwo+ICsJTU1JT19EKE1BRF9ESU1NX0MyLCBEX0FMTCk7Cj4gKwlNTUlPX0QoTUNIX1NTS1BE LCBEX0FMTCk7Cj4gKwlNTUlPX0QoTUNIX1NFQ1BfTlJHX1NUVFMsIERfQUxMKTsKPiArCU1NSU9f RChHRU42X0dUX1BFUkZfU1RBVFVTLCBEX0FMTCk7Cj4gKwlNTUlPX0QoQlhUX0dUX1BFUkZfU1RB VFVTLCBEX0FMTCk7Cj4gKwlNTUlPX0QoR0VONl9SUF9TVEFURV9MSU1JVFMsIERfQUxMKTsKPiAr CU1NSU9fRChEX0NPTVBfSFNXLCBEX0FMTCk7Cj4gIAlNTUlPX0QoVElMRUNUTCwgRF9BTEwpOwo+ ICAKPiAgCU1NSU9fRChHRU42X1VDR0NUTDEsIERfQUxMKTsKPiBAQCAtMjA4MCw3ICsyNDY4LDcg QEAgc3RhdGljIGludCBpbml0X2dlbmVyaWNfbW1pb19pbmZvKHN0cnVjdCBpbnRlbF9ndnQgKmd2 dCkKPiAgCj4gIAlNTUlPX0YoMHg0ZjAwMCwgMHg5MCwgMCwgMCwgMCwgRF9BTEwsIE5VTEwsIE5V TEwpOwo+ICAKPiAtCU1NSU9fRChHRU42X1BDT0RFX01BSUxCT1gsIERfUFJFX1NLTCk7Cj4gKwlN TUlPX0QoR0VONl9QQ09ERV9NQUlMQk9YLCBEX1BSRV9CRFcpOwo+ICAJTU1JT19EKEdFTjZfUENP REVfREFUQSwgRF9BTEwpOwo+ICAJTU1JT19EKDB4MTM4MTJjLCBEX0FMTCk7Cj4gIAlNTUlPX0RI KEdFTjdfRVJSX0lOVCwgRF9BTEwsIE5VTEwsIE5VTEwpOwo+IEBAIC0yMTAyLDcgKzI0OTAsNyBA QCBzdGF0aWMgaW50IGluaXRfZ2VuZXJpY19tbWlvX2luZm8oc3RydWN0IGludGVsX2d2dCAqZ3Z0 KQo+ICAJTU1JT19EKDB4NzE4MCwgRF9BTEwpOwo+ICAJTU1JT19EKDB4NzQwOCwgRF9BTEwpOwo+ ICAJTU1JT19EKDB4N2MwMCwgRF9BTEwpOwo+IC0JTU1JT19EKEdFTjZfTUJDVEwsIERfQUxMKTsK PiArCU1NSU9fREgoR0VONl9NQkNUTCwgRF9BTEwsIE5VTEwsIG1iY3RsX3dyaXRlKTsKPiAgCU1N SU9fRCgweDkxMWMsIERfQUxMKTsKPiAgCU1NSU9fRCgweDkxMjAsIERfQUxMKTsKPiAgCU1NSU9f REZIKEdFTjdfVUNHQ1RMNCwgRF9BTEwsIEZfQ01EX0FDQ0VTUywgTlVMTCwgTlVMTCk7Cj4gQEAg LTIxNTksMzYgKzI1NDcsMzUgQEAgc3RhdGljIGludCBpbml0X2dlbmVyaWNfbW1pb19pbmZvKHN0 cnVjdCBpbnRlbF9ndnQgKmd2dCkKPiAgCU1NSU9fRCgweDFhMDU0LCBEX0FMTCk7Cj4gIAo+ICAJ TU1JT19EKDB4NDQwNzAsIERfQUxMKTsKPiAtCj4gLQlNTUlPX0QoMHgyMTVjLCBEX0hTV19QTFVT KTsKPiArCU1NSU9fREZIKDB4MjE1YywgRF9IU1dfUExVUywgRl9DTURfQUNDRVNTLCBOVUxMLCBO VUxMKTsKPiAgCU1NSU9fREZIKDB4MjE3OCwgRF9BTEwsIEZfQ01EX0FDQ0VTUywgTlVMTCwgTlVM TCk7Cj4gIAlNTUlPX0RGSCgweDIxN2MsIERfQUxMLCBGX0NNRF9BQ0NFU1MsIE5VTEwsIE5VTEwp Owo+ICAJTU1JT19ERkgoMHgxMjE3OCwgRF9BTEwsIEZfQ01EX0FDQ0VTUywgTlVMTCwgTlVMTCk7 Cj4gIAlNTUlPX0RGSCgweDEyMTdjLCBEX0FMTCwgRl9DTURfQUNDRVNTLCBOVUxMLCBOVUxMKTsK PiAgCj4gLQlNTUlPX0YoMHgyMjkwLCA4LCAwLCAwLCAwLCBEX0hTV19QTFVTLCBOVUxMLCBOVUxM KTsKPiAtCU1NSU9fRChHRU43X09BQ09OVFJPTCwgRF9IU1cpOwo+ICsJTU1JT19GKDB4MjI5MCwg OCwgRl9DTURfQUNDRVNTLCAwLCAwLCBEX0hTV19QTFVTLCBOVUxMLCBOVUxMKTsKPiArCU1NSU9f REZIKEdFTjdfT0FDT05UUk9MLCBEX0hTVywgRl9DTURfQUNDRVNTLCBOVUxMLCBOVUxMKTsKPiAg CU1NSU9fRCgweDJiMDAsIERfQkRXX1BMVVMpOwo+ICAJTU1JT19EKDB4MjM2MCwgRF9CRFdfUExV Uyk7Cj4gLQlNTUlPX0YoMHg1MjAwLCAzMiwgMCwgMCwgMCwgRF9BTEwsIE5VTEwsIE5VTEwpOwo+ IC0JTU1JT19GKDB4NTI0MCwgMzIsIDAsIDAsIDAsIERfQUxMLCBOVUxMLCBOVUxMKTsKPiAtCU1N SU9fRigweDUyODAsIDE2LCAwLCAwLCAwLCBEX0FMTCwgTlVMTCwgTlVMTCk7Cj4gKwlNTUlPX0Yo MHg1MjAwLCAzMiwgRl9DTURfQUNDRVNTLCAwLCAwLCBEX0FMTCwgTlVMTCwgTlVMTCk7Cj4gKwlN TUlPX0YoMHg1MjQwLCAzMiwgRl9DTURfQUNDRVNTLCAwLCAwLCBEX0FMTCwgTlVMTCwgTlVMTCk7 Cj4gKwlNTUlPX0YoMHg1MjgwLCAxNiwgRl9DTURfQUNDRVNTLCAwLCAwLCBEX0FMTCwgTlVMTCwg TlVMTCk7Cj4gIAo+ICAJTU1JT19ERkgoMHgxYzE3YywgRF9CRFdfUExVUywgRl9DTURfQUNDRVNT LCBOVUxMLCBOVUxMKTsKPiAgCU1NSU9fREZIKDB4MWMxNzgsIERfQkRXX1BMVVMsIEZfQ01EX0FD Q0VTUywgTlVMTCwgTlVMTCk7Cj4gLQlNTUlPX0QoQkNTX1NXQ1RSTCwgRF9BTEwpOwo+IC0KPiAt CU1NSU9fRihIU19JTlZPQ0FUSU9OX0NPVU5ULCA4LCAwLCAwLCAwLCBEX0FMTCwgTlVMTCwgTlVM TCk7Cj4gLQlNTUlPX0YoRFNfSU5WT0NBVElPTl9DT1VOVCwgOCwgMCwgMCwgMCwgRF9BTEwsIE5V TEwsIE5VTEwpOwo+IC0JTU1JT19GKElBX1ZFUlRJQ0VTX0NPVU5ULCA4LCAwLCAwLCAwLCBEX0FM TCwgTlVMTCwgTlVMTCk7Cj4gLQlNTUlPX0YoSUFfUFJJTUlUSVZFU19DT1VOVCwgOCwgMCwgMCwg MCwgRF9BTEwsIE5VTEwsIE5VTEwpOwo+IC0JTU1JT19GKFZTX0lOVk9DQVRJT05fQ09VTlQsIDgs IDAsIDAsIDAsIERfQUxMLCBOVUxMLCBOVUxMKTsKPiAtCU1NSU9fRihHU19JTlZPQ0FUSU9OX0NP VU5ULCA4LCAwLCAwLCAwLCBEX0FMTCwgTlVMTCwgTlVMTCk7Cj4gLQlNTUlPX0YoR1NfUFJJTUlU SVZFU19DT1VOVCwgOCwgMCwgMCwgMCwgRF9BTEwsIE5VTEwsIE5VTEwpOwo+IC0JTU1JT19GKENM X0lOVk9DQVRJT05fQ09VTlQsIDgsIDAsIDAsIDAsIERfQUxMLCBOVUxMLCBOVUxMKTsKPiAtCU1N SU9fRihDTF9QUklNSVRJVkVTX0NPVU5ULCA4LCAwLCAwLCAwLCBEX0FMTCwgTlVMTCwgTlVMTCk7 Cj4gLQlNTUlPX0YoUFNfSU5WT0NBVElPTl9DT1VOVCwgOCwgMCwgMCwgMCwgRF9BTEwsIE5VTEws IE5VTEwpOwo+IC0JTU1JT19GKFBTX0RFUFRIX0NPVU5ULCA4LCAwLCAwLCAwLCBEX0FMTCwgTlVM TCwgTlVMTCk7Cj4gKwlNTUlPX0RGSChCQ1NfU1dDVFJMLCBEX0FMTCwgRl9DTURfQUNDRVNTLCBO VUxMLCBOVUxMKTsKPiArCj4gKwlNTUlPX0YoSFNfSU5WT0NBVElPTl9DT1VOVCwgOCwgRl9DTURf QUNDRVNTLCAwLCAwLCBEX0FMTCwgTlVMTCwgTlVMTCk7Cj4gKwlNTUlPX0YoRFNfSU5WT0NBVElP Tl9DT1VOVCwgOCwgRl9DTURfQUNDRVNTLCAwLCAwLCBEX0FMTCwgTlVMTCwgTlVMTCk7Cj4gKwlN TUlPX0YoSUFfVkVSVElDRVNfQ09VTlQsIDgsIEZfQ01EX0FDQ0VTUywgMCwgMCwgRF9BTEwsIE5V TEwsIE5VTEwpOwo+ICsJTU1JT19GKElBX1BSSU1JVElWRVNfQ09VTlQsIDgsIEZfQ01EX0FDQ0VT UywgMCwgMCwgRF9BTEwsIE5VTEwsIE5VTEwpOwo+ICsJTU1JT19GKFZTX0lOVk9DQVRJT05fQ09V TlQsIDgsIEZfQ01EX0FDQ0VTUywgMCwgMCwgRF9BTEwsIE5VTEwsIE5VTEwpOwo+ICsJTU1JT19G KEdTX0lOVk9DQVRJT05fQ09VTlQsIDgsIEZfQ01EX0FDQ0VTUywgMCwgMCwgRF9BTEwsIE5VTEws IE5VTEwpOwo+ICsJTU1JT19GKEdTX1BSSU1JVElWRVNfQ09VTlQsIDgsIEZfQ01EX0FDQ0VTUywg MCwgMCwgRF9BTEwsIE5VTEwsIE5VTEwpOwo+ICsJTU1JT19GKENMX0lOVk9DQVRJT05fQ09VTlQs IDgsIEZfQ01EX0FDQ0VTUywgMCwgMCwgRF9BTEwsIE5VTEwsIE5VTEwpOwo+ICsJTU1JT19GKENM X1BSSU1JVElWRVNfQ09VTlQsIDgsIEZfQ01EX0FDQ0VTUywgMCwgMCwgRF9BTEwsIE5VTEwsIE5V TEwpOwo+ICsJTU1JT19GKFBTX0lOVk9DQVRJT05fQ09VTlQsIDgsIEZfQ01EX0FDQ0VTUywgMCwg MCwgRF9BTEwsIE5VTEwsIE5VTEwpOwo+ICsJTU1JT19GKFBTX0RFUFRIX0NPVU5ULCA4LCBGX0NN RF9BQ0NFU1MsIDAsIDAsIERfQUxMLCBOVUxMLCBOVUxMKTsKPiAgCU1NSU9fREgoMHg0MjYwLCBE X0JEV19QTFVTLCBOVUxMLCBndnRfcmVnX3RsYl9jb250cm9sX2hhbmRsZXIpOwo+ICAJTU1JT19E SCgweDQyNjQsIERfQkRXX1BMVVMsIE5VTEwsIGd2dF9yZWdfdGxiX2NvbnRyb2xfaGFuZGxlcik7 Cj4gIAlNTUlPX0RIKDB4NDI2OCwgRF9CRFdfUExVUywgTlVMTCwgZ3Z0X3JlZ190bGJfY29udHJv bF9oYW5kbGVyKTsKPiBAQCAtMjE5Niw2ICsyNTgzLDE3IEBAIHN0YXRpYyBpbnQgaW5pdF9nZW5l cmljX21taW9faW5mbyhzdHJ1Y3QgaW50ZWxfZ3Z0ICpndnQpCj4gIAlNTUlPX0RIKDB4NDI3MCwg RF9CRFdfUExVUywgTlVMTCwgZ3Z0X3JlZ190bGJfY29udHJvbF9oYW5kbGVyKTsKPiAgCU1NSU9f REZIKDB4NDA5NCwgRF9CRFdfUExVUywgRl9DTURfQUNDRVNTLCBOVUxMLCBOVUxMKTsKPiAgCj4g KwlNTUlPX0RGSChBUkJfTU9ERSwgRF9BTEwsIEZfTU9ERV9NQVNLIHwgRl9DTURfQUNDRVNTLCBO VUxMLCBOVUxMKTsKPiArCU1NSU9fUklOR19HTV9SRFIoUklOR19CQkFERFIsIERfQUxMLCBOVUxM LCBOVUxMKTsKPiArCU1NSU9fREZIKDB4MjIyMCwgRF9BTEwsIEZfQ01EX0FDQ0VTUywgTlVMTCwg TlVMTCk7Cj4gKwlNTUlPX0RGSCgweDEyMjIwLCBEX0FMTCwgRl9DTURfQUNDRVNTLCBOVUxMLCBO VUxMKTsKPiArCU1NSU9fREZIKDB4MjIyMjAsIERfQUxMLCBGX0NNRF9BQ0NFU1MsIE5VTEwsIE5V TEwpOwo+ICsJTU1JT19SSU5HX0RGSChSSU5HX1NZTkNfMSwgRF9BTEwsIEZfQ01EX0FDQ0VTUywg TlVMTCwgTlVMTCk7Cj4gKwlNTUlPX1JJTkdfREZIKFJJTkdfU1lOQ18wLCBEX0FMTCwgRl9DTURf QUNDRVNTLCBOVUxMLCBOVUxMKTsKPiArCU1NSU9fREZIKDB4MjIxNzgsIERfQkRXX1BMVVMsIEZf Q01EX0FDQ0VTUywgTlVMTCwgTlVMTCk7Cj4gKwlNTUlPX0RGSCgweDFhMTc4LCBEX0JEV19QTFVT LCBGX0NNRF9BQ0NFU1MsIE5VTEwsIE5VTEwpOwo+ICsJTU1JT19ERkgoMHgxYTE3YywgRF9CRFdf UExVUywgRl9DTURfQUNDRVNTLCBOVUxMLCBOVUxMKTsKPiArCU1NSU9fREZIKDB4MjIxN2MsIERf QkRXX1BMVVMsIEZfQ01EX0FDQ0VTUywgTlVMTCwgTlVMTCk7Cj4gIAlyZXR1cm4gMDsKPiAgfQo+ ICAKPiBAQCAtMjIwNCw3ICsyNjAyLDcgQEAgc3RhdGljIGludCBpbml0X2Jyb2Fkd2VsbF9tbWlv X2luZm8oc3RydWN0IGludGVsX2d2dCAqZ3Z0KQo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gZ3Z0LT5kZXZfcHJpdjsKPiAgCWludCByZXQ7Cj4gIAo+IC0JTU1JT19ESChS SU5HX0lNUihHRU44X0JTRDJfUklOR19CQVNFKSwgRF9CRFdfUExVUywgTlVMTCwKPiArCU1NSU9f REZIKFJJTkdfSU1SKEdFTjhfQlNEMl9SSU5HX0JBU0UpLCBEX0JEV19QTFVTLCBGX0NNRF9BQ0NF U1MsIE5VTEwsCj4gIAkJCWludGVsX3ZncHVfcmVnX2ltcl9oYW5kbGVyKTsKPiAgCj4gIAlNTUlP X0RIKEdFTjhfR1RfSU1SKDApLCBEX0JEV19QTFVTLCBOVUxMLCBpbnRlbF92Z3B1X3JlZ19pbXJf aGFuZGxlcik7Cj4gQEAgLTIyNjksMjQgKzI2NjcsMzEgQEAgc3RhdGljIGludCBpbml0X2Jyb2Fk d2VsbF9tbWlvX2luZm8oc3RydWN0IGludGVsX2d2dCAqZ3Z0KQo+ICAJTU1JT19ESChHRU44X01B U1RFUl9JUlEsIERfQkRXX1BMVVMsIE5VTEwsCj4gIAkJaW50ZWxfdmdwdV9yZWdfbWFzdGVyX2ly cV9oYW5kbGVyKTsKPiAgCj4gLQlNTUlPX0QoUklOR19IV1NUQU0oR0VOOF9CU0QyX1JJTkdfQkFT RSksIERfQkRXX1BMVVMpOwo+IC0JTU1JT19EKDB4MWMxMzQsIERfQkRXX1BMVVMpOwo+IC0KPiAt CU1NSU9fRChSSU5HX1RBSUwoR0VOOF9CU0QyX1JJTkdfQkFTRSksIERfQkRXX1BMVVMpOwo+IC0J TU1JT19EKFJJTkdfSEVBRChHRU44X0JTRDJfUklOR19CQVNFKSwgIERfQkRXX1BMVVMpOwo+IC0J TU1JT19HTShSSU5HX1NUQVJUKEdFTjhfQlNEMl9SSU5HX0JBU0UpLCBEX0JEV19QTFVTLCBOVUxM LCBOVUxMKTsKPiAtCU1NSU9fRChSSU5HX0NUTChHRU44X0JTRDJfUklOR19CQVNFKSwgRF9CRFdf UExVUyk7Cj4gLQlNTUlPX0QoUklOR19BQ1RIRChHRU44X0JTRDJfUklOR19CQVNFKSwgRF9CRFdf UExVUyk7Cj4gLQlNTUlPX0QoUklOR19BQ1RIRF9VRFcoR0VOOF9CU0QyX1JJTkdfQkFTRSksIERf QkRXX1BMVVMpOwo+IC0JTU1JT19ERkgoMHgxYzI5YywgRF9CRFdfUExVUywgRl9NT0RFX01BU0ss IE5VTEwsIHJpbmdfbW9kZV9tbWlvX3dyaXRlKTsKPiAtCU1NSU9fREZIKFJJTkdfTUlfTU9ERShH RU44X0JTRDJfUklOR19CQVNFKSwgRF9CRFdfUExVUywgRl9NT0RFX01BU0ssCj4gLQkJCU5VTEws IE5VTEwpOwo+IC0JTU1JT19ERkgoUklOR19JTlNUUE0oR0VOOF9CU0QyX1JJTkdfQkFTRSksIERf QkRXX1BMVVMsIEZfTU9ERV9NQVNLLAo+IC0JCQlOVUxMLCBOVUxMKTsKPiArCU1NSU9fREZIKFJJ TkdfSFdTVEFNKEdFTjhfQlNEMl9SSU5HX0JBU0UpLCBEX0JEV19QTFVTLAo+ICsJCUZfQ01EX0FD Q0VTUywgTlVMTCwgTlVMTCk7Cj4gKwlNTUlPX0RGSCgweDFjMTM0LCBEX0JEV19QTFVTLCBGX0NN RF9BQ0NFU1MsIE5VTEwsIE5VTEwpOwo+ICsKPiArCU1NSU9fREZIKFJJTkdfVEFJTChHRU44X0JT RDJfUklOR19CQVNFKSwgRF9CRFdfUExVUywgRl9DTURfQUNDRVNTLAo+ICsJCU5VTEwsIE5VTEwp Owo+ICsJTU1JT19ERkgoUklOR19IRUFEKEdFTjhfQlNEMl9SSU5HX0JBU0UpLCAgRF9CRFdfUExV UywKPiArCQlGX0NNRF9BQ0NFU1MsIE5VTEwsIE5VTEwpOwo+ICsJTU1JT19HTV9SRFIoUklOR19T VEFSVChHRU44X0JTRDJfUklOR19CQVNFKSwgRF9CRFdfUExVUywgTlVMTCwgTlVMTCk7Cj4gKwlN TUlPX0RGSChSSU5HX0NUTChHRU44X0JTRDJfUklOR19CQVNFKSwgRF9CRFdfUExVUywgRl9DTURf QUNDRVNTLAo+ICsJCU5VTEwsIE5VTEwpOwo+ICsJTU1JT19ERkgoUklOR19BQ1RIRChHRU44X0JT RDJfUklOR19CQVNFKSwgRF9CRFdfUExVUywKPiArCQlGX0NNRF9BQ0NFU1MsIE5VTEwsIE5VTEwp Owo+ICsJTU1JT19ERkgoUklOR19BQ1RIRF9VRFcoR0VOOF9CU0QyX1JJTkdfQkFTRSksIERfQkRX X1BMVVMsCj4gKwkJRl9DTURfQUNDRVNTLCBOVUxMLCBOVUxMKTsKPiArCU1NSU9fREZIKDB4MWMy OWMsIERfQkRXX1BMVVMsIEZfTU9ERV9NQVNLIHwgRl9DTURfQUNDRVNTLCBOVUxMLAo+ICsJCXJp bmdfbW9kZV9tbWlvX3dyaXRlKTsKPiArCU1NSU9fREZIKFJJTkdfTUlfTU9ERShHRU44X0JTRDJf UklOR19CQVNFKSwgRF9CRFdfUExVUywKPiArCQlGX01PREVfTUFTSyB8IEZfQ01EX0FDQ0VTUywg TlVMTCwgTlVMTCk7Cj4gKwlNTUlPX0RGSChSSU5HX0lOU1RQTShHRU44X0JTRDJfUklOR19CQVNF KSwgRF9CRFdfUExVUywKPiArCQlGX01PREVfTUFTSyB8IEZfQ01EX0FDQ0VTUywgTlVMTCwgTlVM TCk7Cj4gIAlNTUlPX0RGSChSSU5HX1RJTUVTVEFNUChHRU44X0JTRDJfUklOR19CQVNFKSwgRF9C RFdfUExVUywgRl9DTURfQUNDRVNTLAo+ICAJCQlyaW5nX3RpbWVzdGFtcF9tbWlvX3JlYWQsIE5V TEwpOwo+ICAKPiAtCU1NSU9fUklOR19EKFJJTkdfQUNUSERfVURXLCBEX0JEV19QTFVTKTsKPiAr CU1NSU9fUklOR19ERkgoUklOR19BQ1RIRF9VRFcsIERfQkRXX1BMVVMsIEZfQ01EX0FDQ0VTUywg TlVMTCwgTlVMTCk7Cj4gIAo+ICAjZGVmaW5lIFJJTkdfUkVHKGJhc2UpIChiYXNlICsgMHhkMCkK PiAgCU1NSU9fUklOR19GKFJJTkdfUkVHLCA0LCBGX1JPLCAwLAo+IEBAIC0yMzAzLDEzICsyNzA4 LDE2IEBAIHN0YXRpYyBpbnQgaW5pdF9icm9hZHdlbGxfbW1pb19pbmZvKHN0cnVjdCBpbnRlbF9n dnQgKmd2dCkKPiAgI3VuZGVmIFJJTkdfUkVHCj4gIAo+ICAjZGVmaW5lIFJJTkdfUkVHKGJhc2Up IChiYXNlICsgMHgyMzQpCj4gLQlNTUlPX1JJTkdfRihSSU5HX1JFRywgOCwgRl9STywgMCwgfjAs IERfQkRXX1BMVVMsIE5VTEwsIE5VTEwpOwo+IC0JTU1JT19GKFJJTkdfUkVHKEdFTjhfQlNEMl9S SU5HX0JBU0UpLCA0LCBGX1JPLCAwLCB+MExMLCBEX0JEV19QTFVTLCBOVUxMLCBOVUxMKTsKPiAr CU1NSU9fUklOR19GKFJJTkdfUkVHLCA4LCBGX1JPIHwgRl9DTURfQUNDRVNTLCAwLCB+MCwgRF9C RFdfUExVUywKPiArCQlOVUxMLCBOVUxMKTsKPiArCU1NSU9fRihSSU5HX1JFRyhHRU44X0JTRDJf UklOR19CQVNFKSwgNCwgRl9STyB8IEZfQ01EX0FDQ0VTUywgMCwKPiArCQl+MExMLCBEX0JEV19Q TFVTLCBOVUxMLCBOVUxMKTsKPiAgI3VuZGVmIFJJTkdfUkVHCj4gIAo+ICAjZGVmaW5lIFJJTkdf UkVHKGJhc2UpIChiYXNlICsgMHgyNDQpCj4gLQlNTUlPX1JJTkdfRChSSU5HX1JFRywgRF9CRFdf UExVUyk7Cj4gLQlNTUlPX0QoUklOR19SRUcoR0VOOF9CU0QyX1JJTkdfQkFTRSksIERfQkRXX1BM VVMpOwo+ICsJTU1JT19SSU5HX0RGSChSSU5HX1JFRywgRF9CRFdfUExVUywgRl9DTURfQUNDRVNT LCBOVUxMLCBOVUxMKTsKPiArCU1NSU9fREZIKFJJTkdfUkVHKEdFTjhfQlNEMl9SSU5HX0JBU0Up LCBEX0JEV19QTFVTLCBGX0NNRF9BQ0NFU1MsCj4gKwkJTlVMTCwgTlVMTCk7Cj4gICN1bmRlZiBS SU5HX1JFRwo+ICAKPiAgI2RlZmluZSBSSU5HX1JFRyhiYXNlKSAoYmFzZSArIDB4MzcwKQo+IEBA IC0yMzMxLDYgKzI3MzksOCBAQCBzdGF0aWMgaW50IGluaXRfYnJvYWR3ZWxsX21taW9faW5mbyhz dHJ1Y3QgaW50ZWxfZ3Z0ICpndnQpCj4gIAlNTUlPX0QoR0VON19NSVNDQ1BDVEwsIERfQkRXX1BM VVMpOwo+ICAJTU1JT19EKDB4MWMwNTQsIERfQkRXX1BMVVMpOwo+ICAKPiArCU1NSU9fREgoR0VO Nl9QQ09ERV9NQUlMQk9YLCBEX0JEV19QTFVTLCBOVUxMLCBtYWlsYm94X3dyaXRlKTsKPiArCj4g IAlNTUlPX0QoR0VOOF9QUklWQVRFX1BBVF9MTywgRF9CRFdfUExVUyk7Cj4gIAlNTUlPX0QoR0VO OF9QUklWQVRFX1BBVF9ISSwgRF9CRFdfUExVUyk7Cj4gIAo+IEBAIC0yMzQxLDE0ICsyNzUxLDE0 IEBAIHN0YXRpYyBpbnQgaW5pdF9icm9hZHdlbGxfbW1pb19pbmZvKHN0cnVjdCBpbnRlbF9ndnQg Kmd2dCkKPiAgCU1NSU9fRihSSU5HX1JFRyhHRU44X0JTRDJfUklOR19CQVNFKSwgMzIsIDAsIDAs IDAsIERfQkRXX1BMVVMsIE5VTEwsIE5VTEwpOwo+ICAjdW5kZWYgUklOR19SRUcKPiAgCj4gLQlN TUlPX1JJTkdfR00oUklOR19IV1NfUEdBLCBEX0JEV19QTFVTLCBOVUxMLCBOVUxMKTsKPiAtCU1N SU9fR00oMHgxYzA4MCwgRF9CRFdfUExVUywgTlVMTCwgTlVMTCk7Cj4gKwlNTUlPX1JJTkdfR01f UkRSKFJJTkdfSFdTX1BHQSwgRF9CRFdfUExVUywgTlVMTCwgTlVMTCk7Cj4gKwlNTUlPX0dNX1JE UihSSU5HX0hXU19QR0EoR0VOOF9CU0QyX1JJTkdfQkFTRSksIERfQkRXX1BMVVMsIE5VTEwsIE5V TEwpOwo+ICAKPiAgCU1NSU9fREZIKEhEQ19DSElDS0VOMCwgRF9CRFdfUExVUywgRl9NT0RFX01B U0sgfCBGX0NNRF9BQ0NFU1MsIE5VTEwsIE5VTEwpOwo+ICAKPiAtCU1NSU9fRChDSElDS0VOX1BJ UEVTTF8xKFBJUEVfQSksIERfQkRXKTsKPiAtCU1NSU9fRChDSElDS0VOX1BJUEVTTF8xKFBJUEVf QiksIERfQkRXKTsKPiAtCU1NSU9fRChDSElDS0VOX1BJUEVTTF8xKFBJUEVfQyksIERfQkRXKTsK PiArCU1NSU9fRChDSElDS0VOX1BJUEVTTF8xKFBJUEVfQSksIERfQkRXX1BMVVMpOwo+ICsJTU1J T19EKENISUNLRU5fUElQRVNMXzEoUElQRV9CKSwgRF9CRFdfUExVUyk7Cj4gKwlNTUlPX0QoQ0hJ Q0tFTl9QSVBFU0xfMShQSVBFX0MpLCBEX0JEV19QTFVTKTsKPiAgCj4gIAlNTUlPX0QoV01fTUlT QywgRF9CRFcpOwo+ICAJTU1JT19EKEJEV19FRFBfUFNSX0JBU0UsIERfQkRXKTsKPiBAQCAtMjM2 MiwyNyArMjc3MiwzMCBAQCBzdGF0aWMgaW50IGluaXRfYnJvYWR3ZWxsX21taW9faW5mbyhzdHJ1 Y3QgaW50ZWxfZ3Z0ICpndnQpCj4gIAlNTUlPX0QoR0VOOF9FVV9ESVNBQkxFMSwgRF9CRFdfUExV Uyk7Cj4gIAlNTUlPX0QoR0VOOF9FVV9ESVNBQkxFMiwgRF9CRFdfUExVUyk7Cj4gIAo+IC0JTU1J T19EKDB4ZmRjLCBEX0JEVyk7Cj4gLQlNTUlPX0RGSChHRU44X1JPV19DSElDS0VOLCBEX0JEV19Q TFVTLCBGX0NNRF9BQ0NFU1MsIE5VTEwsIE5VTEwpOwo+IC0JTU1JT19EKEdFTjdfUk9XX0NISUNL RU4yLCBEX0JEV19QTFVTKTsKPiAtCU1NSU9fRChHRU44X1VDR0NUTDYsIERfQkRXX1BMVVMpOwo+ ICsJTU1JT19EKDB4ZmRjLCBEX0JEV19QTFVTKTsKPiArCU1NSU9fREZIKEdFTjhfUk9XX0NISUNL RU4sIERfQkRXX1BMVVMsIEZfTU9ERV9NQVNLIHwgRl9DTURfQUNDRVNTLAo+ICsJCU5VTEwsIE5V TEwpOwo+ICsJTU1JT19ERkgoR0VON19ST1dfQ0hJQ0tFTjIsIERfQkRXX1BMVVMsIEZfTU9ERV9N QVNLIHwgRl9DTURfQUNDRVNTLAo+ICsJCU5VTEwsIE5VTEwpOwo+ICsJTU1JT19ERkgoR0VOOF9V Q0dDVEw2LCBEX0JEV19QTFVTLCBGX0NNRF9BQ0NFU1MsIE5VTEwsIE5VTEwpOwo+ICAKPiAtCU1N SU9fRCgweGIxZjAsIERfQkRXKTsKPiAtCU1NSU9fRCgweGIxYzAsIERfQkRXKTsKPiArCU1NSU9f REZIKDB4YjFmMCwgRF9CRFcsIEZfQ01EX0FDQ0VTUywgTlVMTCwgTlVMTCk7Cj4gKwlNTUlPX0RG SCgweGIxYzAsIERfQkRXLCBGX0NNRF9BQ0NFU1MsIE5VTEwsIE5VTEwpOwo+ICAJTU1JT19ERkgo R0VOOF9MM1NRQ1JFRzQsIERfQkRXX1BMVVMsIEZfQ01EX0FDQ0VTUywgTlVMTCwgTlVMTCk7Cj4g LQlNTUlPX0QoMHhiMTAwLCBEX0JEVyk7Cj4gLQlNTUlPX0QoMHhiMTBjLCBEX0JEVyk7Cj4gKwlN TUlPX0RGSCgweGIxMDAsIERfQkRXLCBGX0NNRF9BQ0NFU1MsIE5VTEwsIE5VTEwpOwo+ICsJTU1J T19ERkgoMHhiMTBjLCBEX0JEVywgRl9DTURfQUNDRVNTLCBOVUxMLCBOVUxMKTsKPiAgCU1NSU9f RCgweGIxMTAsIERfQkRXKTsKPiAgCj4gLQlNTUlPX0RGSCgweDI0ZDAsIERfQkRXX1BMVVMsIEZf Q01EX0FDQ0VTUywgTlVMTCwgTlVMTCk7Cj4gLQlNTUlPX0RGSCgweDI0ZDQsIERfQkRXX1BMVVMs IEZfQ01EX0FDQ0VTUywgTlVMTCwgTlVMTCk7Cj4gLQlNTUlPX0RGSCgweDI0ZDgsIERfQkRXX1BM VVMsIEZfQ01EX0FDQ0VTUywgTlVMTCwgTlVMTCk7Cj4gLQlNTUlPX0RGSCgweDI0ZGMsIERfQkRX X1BMVVMsIEZfQ01EX0FDQ0VTUywgTlVMTCwgTlVMTCk7Cj4gKwlNTUlPX0YoMHgyNGQwLCA0OCwg Rl9DTURfQUNDRVNTLCAwLCAwLCBEX0JEV19QTFVTLAo+ICsJCU5VTEwsIGZvcmNlX25vbnByaXZf d3JpdGUpOwo+ICsKPiArCU1NSU9fRCgweDQ0NDg0LCBEX0JEV19QTFVTKTsKPiArCU1NSU9fRCgw eDQ0NDhjLCBEX0JEV19QTFVTKTsKPiAgCj4gLQlNTUlPX0QoMHg4M2E0LCBEX0JEVyk7Cj4gKwlN TUlPX0RGSCgweDgzYTQsIERfQkRXLCBGX0NNRF9BQ0NFU1MsIE5VTEwsIE5VTEwpOwo+ICAJTU1J T19EKEdFTjhfTDNfTFJBXzFfR1BHUFUsIERfQkRXX1BMVVMpOwo+ICAKPiAtCU1NSU9fRCgweDg0 MzAsIERfQkRXKTsKPiArCU1NSU9fREZIKDB4ODQzMCwgRF9CRFcsIEZfQ01EX0FDQ0VTUywgTlVM TCwgTlVMTCk7Cj4gIAo+ICAJTU1JT19EKDB4MTEwMDAwLCBEX0JEV19QTFVTKTsKPiAgCj4gQEAg LTIzOTQsMTAgKzI4MDcsMTkgQEAgc3RhdGljIGludCBpbml0X2Jyb2Fkd2VsbF9tbWlvX2luZm8o c3RydWN0IGludGVsX2d2dCAqZ3Z0KQo+ICAJTU1JT19ERkgoMHhlMTk0LCBEX0JEV19QTFVTLCBG X01PREVfTUFTSyB8IEZfQ01EX0FDQ0VTUywgTlVMTCwgTlVMTCk7Cj4gIAlNTUlPX0RGSCgweGUx ODgsIERfQkRXX1BMVVMsIEZfTU9ERV9NQVNLIHwgRl9DTURfQUNDRVNTLCBOVUxMLCBOVUxMKTsK PiAgCU1NSU9fREZIKEhBTEZfU0xJQ0VfQ0hJQ0tFTjIsIERfQkRXX1BMVVMsIEZfTU9ERV9NQVNL IHwgRl9DTURfQUNDRVNTLCBOVUxMLCBOVUxMKTsKPiAtCU1NSU9fREZIKDB4MjU4MCwgRF9CRFdf UExVUywgRl9NT0RFX01BU0ssIE5VTEwsIE5VTEwpOwo+IC0KPiAtCU1NSU9fRCgweDIyNDgsIERf QkRXKTsKPiAtCj4gKwlNTUlPX0RGSCgweDI1ODAsIERfQkRXX1BMVVMsIEZfTU9ERV9NQVNLIHwg Rl9DTURfQUNDRVNTLCBOVUxMLCBOVUxMKTsKPiArCj4gKwlNTUlPX0RGSCgweDIyNDgsIERfQkRX LCBGX0NNRF9BQ0NFU1MsIE5VTEwsIE5VTEwpOwo+ICsKPiArCU1NSU9fREZIKDB4ZTIyMCwgRF9C RFdfUExVUywgRl9DTURfQUNDRVNTLCBOVUxMLCBOVUxMKTsKPiArCU1NSU9fREZIKDB4ZTIzMCwg RF9CRFdfUExVUywgRl9DTURfQUNDRVNTLCBOVUxMLCBOVUxMKTsKPiArCU1NSU9fREZIKDB4ZTI0 MCwgRF9CRFdfUExVUywgRl9DTURfQUNDRVNTLCBOVUxMLCBOVUxMKTsKPiArCU1NSU9fREZIKDB4 ZTI2MCwgRF9CRFdfUExVUywgRl9DTURfQUNDRVNTLCBOVUxMLCBOVUxMKTsKPiArCU1NSU9fREZI KDB4ZTI3MCwgRF9CRFdfUExVUywgRl9DTURfQUNDRVNTLCBOVUxMLCBOVUxMKTsKPiArCU1NSU9f REZIKDB4ZTI4MCwgRF9CRFdfUExVUywgRl9DTURfQUNDRVNTLCBOVUxMLCBOVUxMKTsKPiArCU1N SU9fREZIKDB4ZTJhMCwgRF9CRFdfUExVUywgRl9DTURfQUNDRVNTLCBOVUxMLCBOVUxMKTsKPiAr CU1NSU9fREZIKDB4ZTJiMCwgRF9CRFdfUExVUywgRl9DTURfQUNDRVNTLCBOVUxMLCBOVUxMKTsK PiArCU1NSU9fREZIKDB4ZTJjMCwgRF9CRFdfUExVUywgRl9DTURfQUNDRVNTLCBOVUxMLCBOVUxM KTsKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+IEBAIC0yNDIwLDcgKzI4NDIsNiBAQCBzdGF0aWMg aW50IGluaXRfc2tsX21taW9faW5mbyhzdHJ1Y3QgaW50ZWxfZ3Z0ICpndnQpCj4gIAlNTUlPX0Qo SFNXX1BXUl9XRUxMX0JJT1MsIERfU0tMKTsKPiAgCU1NSU9fREgoSFNXX1BXUl9XRUxMX0RSSVZF UiwgRF9TS0wsIE5VTEwsIHNrbF9wb3dlcl93ZWxsX2N0bF93cml0ZSk7Cj4gIAo+IC0JTU1JT19E SChHRU42X1BDT0RFX01BSUxCT1gsIERfU0tMLCBOVUxMLCBtYWlsYm94X3dyaXRlKTsKPiAgCU1N SU9fRCgweGEyMTAsIERfU0tMX1BMVVMpOwo+ICAJTU1JT19EKEdFTjlfTUVESUFfUEdfSURMRV9I WVNURVJFU0lTLCBEX1NLTF9QTFVTKTsKPiAgCU1NSU9fRChHRU45X1JFTkRFUl9QR19JRExFX0hZ U1RFUkVTSVMsIERfU0tMX1BMVVMpOwo+IEBAIC0yNDYzLDEwNiArMjg4NCwzNyBAQCBzdGF0aWMg aW50IGluaXRfc2tsX21taW9faW5mbyhzdHJ1Y3QgaW50ZWxfZ3Z0ICpndnQpCj4gIAlNTUlPX0RI KFNLTF9QU19DVFJMKFBJUEVfQywgMCksIERfU0tMLCBOVUxMLCBwZl93cml0ZSk7Cj4gIAlNTUlP X0RIKFNLTF9QU19DVFJMKFBJUEVfQywgMSksIERfU0tMLCBOVUxMLCBwZl93cml0ZSk7Cj4gIAo+ IC0JTU1JT19ESChQTEFORV9CVUZfQ0ZHKFBJUEVfQSwgMCksIERfU0tMLCBOVUxMLCBOVUxMKTsK PiAtCU1NSU9fREgoUExBTkVfQlVGX0NGRyhQSVBFX0EsIDEpLCBEX1NLTCwgTlVMTCwgTlVMTCk7 Cj4gLQlNTUlPX0RIKFBMQU5FX0JVRl9DRkcoUElQRV9BLCAyKSwgRF9TS0wsIE5VTEwsIE5VTEwp Owo+IC0JTU1JT19ESChQTEFORV9CVUZfQ0ZHKFBJUEVfQSwgMyksIERfU0tMLCBOVUxMLCBOVUxM KTsKPiAtCj4gLQlNTUlPX0RIKFBMQU5FX0JVRl9DRkcoUElQRV9CLCAwKSwgRF9TS0wsIE5VTEws IE5VTEwpOwo+IC0JTU1JT19ESChQTEFORV9CVUZfQ0ZHKFBJUEVfQiwgMSksIERfU0tMLCBOVUxM LCBOVUxMKTsKPiAtCU1NSU9fREgoUExBTkVfQlVGX0NGRyhQSVBFX0IsIDIpLCBEX1NLTCwgTlVM TCwgTlVMTCk7Cj4gLQlNTUlPX0RIKFBMQU5FX0JVRl9DRkcoUElQRV9CLCAzKSwgRF9TS0wsIE5V TEwsIE5VTEwpOwo+IC0KPiAtCU1NSU9fREgoUExBTkVfQlVGX0NGRyhQSVBFX0MsIDApLCBEX1NL TCwgTlVMTCwgTlVMTCk7Cj4gLQlNTUlPX0RIKFBMQU5FX0JVRl9DRkcoUElQRV9DLCAxKSwgRF9T S0wsIE5VTEwsIE5VTEwpOwo+IC0JTU1JT19ESChQTEFORV9CVUZfQ0ZHKFBJUEVfQywgMiksIERf U0tMLCBOVUxMLCBOVUxMKTsKPiAtCU1NSU9fREgoUExBTkVfQlVGX0NGRyhQSVBFX0MsIDMpLCBE X1NLTCwgTlVMTCwgTlVMTCk7Cj4gLQo+ICAJTU1JT19ESChDVVJfQlVGX0NGRyhQSVBFX0EpLCBE X1NLTCwgTlVMTCwgTlVMTCk7Cj4gIAlNTUlPX0RIKENVUl9CVUZfQ0ZHKFBJUEVfQiksIERfU0tM LCBOVUxMLCBOVUxMKTsKPiAgCU1NSU9fREgoQ1VSX0JVRl9DRkcoUElQRV9DKSwgRF9TS0wsIE5V TEwsIE5VTEwpOwo+ICAKPiAtCU1NSU9fRihQTEFORV9XTShQSVBFX0EsIDAsIDApLCA0ICogOCwg MCwgMCwgMCwgRF9TS0wsIE5VTEwsIE5VTEwpOwo+IC0JTU1JT19GKFBMQU5FX1dNKFBJUEVfQSwg MSwgMCksIDQgKiA4LCAwLCAwLCAwLCBEX1NLTCwgTlVMTCwgTlVMTCk7Cj4gLQlNTUlPX0YoUExB TkVfV00oUElQRV9BLCAyLCAwKSwgNCAqIDgsIDAsIDAsIDAsIERfU0tMLCBOVUxMLCBOVUxMKTsK PiAtCj4gLQlNTUlPX0YoUExBTkVfV00oUElQRV9CLCAwLCAwKSwgNCAqIDgsIDAsIDAsIDAsIERf U0tMLCBOVUxMLCBOVUxMKTsKPiAtCU1NSU9fRihQTEFORV9XTShQSVBFX0IsIDEsIDApLCA0ICog OCwgMCwgMCwgMCwgRF9TS0wsIE5VTEwsIE5VTEwpOwo+IC0JTU1JT19GKFBMQU5FX1dNKFBJUEVf QiwgMiwgMCksIDQgKiA4LCAwLCAwLCAwLCBEX1NLTCwgTlVMTCwgTlVMTCk7Cj4gLQo+IC0JTU1J T19GKFBMQU5FX1dNKFBJUEVfQywgMCwgMCksIDQgKiA4LCAwLCAwLCAwLCBEX1NLTCwgTlVMTCwg TlVMTCk7Cj4gLQlNTUlPX0YoUExBTkVfV00oUElQRV9DLCAxLCAwKSwgNCAqIDgsIDAsIDAsIDAs IERfU0tMLCBOVUxMLCBOVUxMKTsKPiAtCU1NSU9fRihQTEFORV9XTShQSVBFX0MsIDIsIDApLCA0 ICogOCwgMCwgMCwgMCwgRF9TS0wsIE5VTEwsIE5VTEwpOwo+IC0KPiAgCU1NSU9fRihDVVJfV00o UElQRV9BLCAwKSwgNCAqIDgsIDAsIDAsIDAsIERfU0tMLCBOVUxMLCBOVUxMKTsKPiAgCU1NSU9f RihDVVJfV00oUElQRV9CLCAwKSwgNCAqIDgsIDAsIDAsIDAsIERfU0tMLCBOVUxMLCBOVUxMKTsK PiAgCU1NSU9fRihDVVJfV00oUElQRV9DLCAwKSwgNCAqIDgsIDAsIDAsIDAsIERfU0tMLCBOVUxM LCBOVUxMKTsKPiAgCj4gLQlNTUlPX0RIKFBMQU5FX1dNX1RSQU5TKFBJUEVfQSwgMCksIERfU0tM LCBOVUxMLCBOVUxMKTsKPiAtCU1NSU9fREgoUExBTkVfV01fVFJBTlMoUElQRV9BLCAxKSwgRF9T S0wsIE5VTEwsIE5VTEwpOwo+IC0JTU1JT19ESChQTEFORV9XTV9UUkFOUyhQSVBFX0EsIDIpLCBE X1NLTCwgTlVMTCwgTlVMTCk7Cj4gLQo+IC0JTU1JT19ESChQTEFORV9XTV9UUkFOUyhQSVBFX0Is IDApLCBEX1NLTCwgTlVMTCwgTlVMTCk7Cj4gLQlNTUlPX0RIKFBMQU5FX1dNX1RSQU5TKFBJUEVf QiwgMSksIERfU0tMLCBOVUxMLCBOVUxMKTsKPiAtCU1NSU9fREgoUExBTkVfV01fVFJBTlMoUElQ RV9CLCAyKSwgRF9TS0wsIE5VTEwsIE5VTEwpOwo+IC0KPiAtCU1NSU9fREgoUExBTkVfV01fVFJB TlMoUElQRV9DLCAwKSwgRF9TS0wsIE5VTEwsIE5VTEwpOwo+IC0JTU1JT19ESChQTEFORV9XTV9U UkFOUyhQSVBFX0MsIDEpLCBEX1NLTCwgTlVMTCwgTlVMTCk7Cj4gLQlNTUlPX0RIKFBMQU5FX1dN X1RSQU5TKFBJUEVfQywgMiksIERfU0tMLCBOVUxMLCBOVUxMKTsKPiAtCj4gIAlNTUlPX0RIKENV Ul9XTV9UUkFOUyhQSVBFX0EpLCBEX1NLTCwgTlVMTCwgTlVMTCk7Cj4gIAlNTUlPX0RIKENVUl9X TV9UUkFOUyhQSVBFX0IpLCBEX1NLTCwgTlVMTCwgTlVMTCk7Cj4gIAlNTUlPX0RIKENVUl9XTV9U UkFOUyhQSVBFX0MpLCBEX1NLTCwgTlVMTCwgTlVMTCk7Cj4gIAo+IC0JTU1JT19ESChQTEFORV9O VjEyX0JVRl9DRkcoUElQRV9BLCAwKSwgRF9TS0wsIE5VTEwsIE5VTEwpOwo+IC0JTU1JT19ESChQ TEFORV9OVjEyX0JVRl9DRkcoUElQRV9BLCAxKSwgRF9TS0wsIE5VTEwsIE5VTEwpOwo+IC0JTU1J T19ESChQTEFORV9OVjEyX0JVRl9DRkcoUElQRV9BLCAyKSwgRF9TS0wsIE5VTEwsIE5VTEwpOwo+ IC0JTU1JT19ESChQTEFORV9OVjEyX0JVRl9DRkcoUElQRV9BLCAzKSwgRF9TS0wsIE5VTEwsIE5V TEwpOwo+IC0KPiAtCU1NSU9fREgoUExBTkVfTlYxMl9CVUZfQ0ZHKFBJUEVfQiwgMCksIERfU0tM LCBOVUxMLCBOVUxMKTsKPiAtCU1NSU9fREgoUExBTkVfTlYxMl9CVUZfQ0ZHKFBJUEVfQiwgMSks IERfU0tMLCBOVUxMLCBOVUxMKTsKPiAtCU1NSU9fREgoUExBTkVfTlYxMl9CVUZfQ0ZHKFBJUEVf QiwgMiksIERfU0tMLCBOVUxMLCBOVUxMKTsKPiAtCU1NSU9fREgoUExBTkVfTlYxMl9CVUZfQ0ZH KFBJUEVfQiwgMyksIERfU0tMLCBOVUxMLCBOVUxMKTsKPiAtCj4gLQlNTUlPX0RIKFBMQU5FX05W MTJfQlVGX0NGRyhQSVBFX0MsIDApLCBEX1NLTCwgTlVMTCwgTlVMTCk7Cj4gLQlNTUlPX0RIKFBM QU5FX05WMTJfQlVGX0NGRyhQSVBFX0MsIDEpLCBEX1NLTCwgTlVMTCwgTlVMTCk7Cj4gLQlNTUlP X0RIKFBMQU5FX05WMTJfQlVGX0NGRyhQSVBFX0MsIDIpLCBEX1NLTCwgTlVMTCwgTlVMTCk7Cj4g LQlNTUlPX0RIKFBMQU5FX05WMTJfQlVGX0NGRyhQSVBFX0MsIDMpLCBEX1NLTCwgTlVMTCwgTlVM TCk7Cj4gLQo+IC0JTU1JT19ESChfUkVHXzcwMUMwKFBJUEVfQSwgMSksIERfU0tMLCBOVUxMLCBO VUxMKTsKPiAtCU1NSU9fREgoX1JFR183MDFDMChQSVBFX0EsIDIpLCBEX1NLTCwgTlVMTCwgTlVM TCk7Cj4gLQlNTUlPX0RIKF9SRUdfNzAxQzAoUElQRV9BLCAzKSwgRF9TS0wsIE5VTEwsIE5VTEwp Owo+IC0JTU1JT19ESChfUkVHXzcwMUMwKFBJUEVfQSwgNCksIERfU0tMLCBOVUxMLCBOVUxMKTsK PiAtCj4gLQlNTUlPX0RIKF9SRUdfNzAxQzAoUElQRV9CLCAxKSwgRF9TS0wsIE5VTEwsIE5VTEwp Owo+IC0JTU1JT19ESChfUkVHXzcwMUMwKFBJUEVfQiwgMiksIERfU0tMLCBOVUxMLCBOVUxMKTsK PiAtCU1NSU9fREgoX1JFR183MDFDMChQSVBFX0IsIDMpLCBEX1NLTCwgTlVMTCwgTlVMTCk7Cj4g LQlNTUlPX0RIKF9SRUdfNzAxQzAoUElQRV9CLCA0KSwgRF9TS0wsIE5VTEwsIE5VTEwpOwo+IC0K PiAtCU1NSU9fREgoX1JFR183MDFDMChQSVBFX0MsIDEpLCBEX1NLTCwgTlVMTCwgTlVMTCk7Cj4g LQlNTUlPX0RIKF9SRUdfNzAxQzAoUElQRV9DLCAyKSwgRF9TS0wsIE5VTEwsIE5VTEwpOwo+IC0J TU1JT19ESChfUkVHXzcwMUMwKFBJUEVfQywgMyksIERfU0tMLCBOVUxMLCBOVUxMKTsKPiAtCU1N SU9fREgoX1JFR183MDFDMChQSVBFX0MsIDQpLCBEX1NLTCwgTlVMTCwgTlVMTCk7Cj4gLQo+IC0J TU1JT19ESChfUkVHXzcwMUM0KFBJUEVfQSwgMSksIERfU0tMLCBOVUxMLCBOVUxMKTsKPiAtCU1N SU9fREgoX1JFR183MDFDNChQSVBFX0EsIDIpLCBEX1NLTCwgTlVMTCwgTlVMTCk7Cj4gLQlNTUlP X0RIKF9SRUdfNzAxQzQoUElQRV9BLCAzKSwgRF9TS0wsIE5VTEwsIE5VTEwpOwo+IC0JTU1JT19E SChfUkVHXzcwMUM0KFBJUEVfQSwgNCksIERfU0tMLCBOVUxMLCBOVUxMKTsKPiAtCj4gLQlNTUlP X0RIKF9SRUdfNzAxQzQoUElQRV9CLCAxKSwgRF9TS0wsIE5VTEwsIE5VTEwpOwo+IC0JTU1JT19E SChfUkVHXzcwMUM0KFBJUEVfQiwgMiksIERfU0tMLCBOVUxMLCBOVUxMKTsKPiAtCU1NSU9fREgo X1JFR183MDFDNChQSVBFX0IsIDMpLCBEX1NLTCwgTlVMTCwgTlVMTCk7Cj4gLQlNTUlPX0RIKF9S RUdfNzAxQzQoUElQRV9CLCA0KSwgRF9TS0wsIE5VTEwsIE5VTEwpOwo+IC0KPiAtCU1NSU9fREgo X1JFR183MDFDNChQSVBFX0MsIDEpLCBEX1NLTCwgTlVMTCwgTlVMTCk7Cj4gLQlNTUlPX0RIKF9S RUdfNzAxQzQoUElQRV9DLCAyKSwgRF9TS0wsIE5VTEwsIE5VTEwpOwo+IC0JTU1JT19ESChfUkVH XzcwMUM0KFBJUEVfQywgMyksIERfU0tMLCBOVUxMLCBOVUxMKTsKPiAtCU1NSU9fREgoX1JFR183 MDFDNChQSVBFX0MsIDQpLCBEX1NLTCwgTlVMTCwgTlVMTCk7Cj4gLQo+IC0JTU1JT19EKDB4NzAz ODAsIERfU0tMKTsKPiAtCU1NSU9fRCgweDcxMzgwLCBEX1NLTCk7Cj4gLQlNTUlPX0QoMHg3MjM4 MCwgRF9TS0wpOwo+IC0JTU1JT19EKDB4NzAzOWMsIERfU0tMKTsKPiArLy8JTU1JT19QTEFORVNf REgoUExBTkVfQ09MT1JfQ1RMLCBEX1NLTCwgTlVMTCwgTlVMTCk7Cj4gKwlNTUlPX1BMQU5FU19E SChQTEFORV9DVEwsIERfU0tMLCBOVUxMLCBza2xfcGxhbmVfbW1pb193cml0ZSk7Cj4gKwlNTUlP X1BMQU5FU19ESChQTEFORV9TVFJJREUsIERfU0tMLCBOVUxMLCBza2xfcGxhbmVfbW1pb193cml0 ZSk7Cj4gKwlNTUlPX1BMQU5FU19ESChQTEFORV9QT1MsIERfU0tMLCBOVUxMLCBza2xfcGxhbmVf bW1pb193cml0ZSk7Cj4gKwlNTUlPX1BMQU5FU19ESChQTEFORV9TSVpFLCBEX1NLTCwgTlVMTCwg c2tsX3BsYW5lX21taW9fd3JpdGUpOwo+ICsJTU1JT19QTEFORVNfREgoUExBTkVfS0VZVkFMLCBE X1NLTCwgTlVMTCwgc2tsX3BsYW5lX21taW9fd3JpdGUpOwo+ICsJTU1JT19QTEFORVNfREgoUExB TkVfS0VZTVNLLCBEX1NLTCwgTlVMTCwgc2tsX3BsYW5lX21taW9fd3JpdGUpOwo+ICsKPiArCU1N SU9fUExBTkVTX0RIKFBMQU5FX1NVUkYsIERfU0tMLCBOVUxMLCBza2xfcGxhbmVfc3VyZl93cml0 ZSk7Cj4gKwo+ICsJTU1JT19QTEFORVNfREgoUExBTkVfS0VZTUFYLCBEX1NLTCwgTlVMTCwgc2ts X3BsYW5lX21taW9fd3JpdGUpOwo+ICsJTU1JT19QTEFORVNfREgoUExBTkVfT0ZGU0VULCBEX1NL TCwgTlVMTCwgc2tsX3BsYW5lX21taW9fd3JpdGUpOwo+ICsJTU1JT19QTEFORVNfREgoX1JFR183 MDFDMCwgRF9TS0wsIE5VTEwsIHNrbF9wbGFuZV9tbWlvX3dyaXRlKTsKPiArCU1NSU9fUExBTkVT X0RIKF9SRUdfNzAxQzQsIERfU0tMLCBOVUxMLCBza2xfcGxhbmVfbW1pb193cml0ZSk7Cj4gKwo+ ICsJTU1JT19QTEFORVNfU0RIKF9QTEFORV9XTV9CQVNFLCA0ICogOCwgRF9TS0wsIE5VTEwsIE5V TEwpOwo+ICsJTU1JT19QTEFORVNfREgoUExBTkVfV01fVFJBTlMsIERfU0tMLCBOVUxMLCBOVUxM KTsKPiArCU1NSU9fUExBTkVTX0RIKFBMQU5FX05WMTJfQlVGX0NGRywgRF9TS0wsIE5VTEwsIE5V TEwpOwo+ICsJTU1JT19QTEFORVNfREgoUExBTkVfQlVGX0NGRywgRF9TS0wsIE5VTEwsIE5VTEwp Owo+ICAKPiAgCU1NSU9fRigweDgwMDAwLCAweDMwMDAsIDAsIDAsIDAsIERfU0tMLCBOVUxMLCBO VUxMKTsKPiAgCU1NSU9fRCgweDhmMDc0LCBEX1NLTCk7Cj4gQEAgLTI1NzgsMTYgKzI5MzAsMTYg QEAgc3RhdGljIGludCBpbml0X3NrbF9tbWlvX2luZm8oc3RydWN0IGludGVsX2d2dCAqZ3Z0KQo+ ICAJTU1JT19GKDB4YjAyMCwgMHg4MCwgRl9DTURfQUNDRVNTLCAwLCAwLCBEX1NLTCwgTlVMTCwg TlVMTCk7Cj4gIAo+ICAJTU1JT19EKDB4ZDA4LCBEX1NLTCk7Cj4gLQlNTUlPX0QoMHgyMGUwLCBE X1NLTCk7Cj4gLQlNTUlPX0QoMHgyMGVjLCBEX1NLTCk7Cj4gKwlNTUlPX0RGSCgweDIwZTAsIERf U0tMLCBGX01PREVfTUFTSywgTlVMTCwgTlVMTCk7Cj4gKwlNTUlPX0RGSCgweDIwZWMsIERfU0tM LCBGX01PREVfTUFTSyB8IEZfQ01EX0FDQ0VTUywgTlVMTCwgTlVMTCk7Cj4gIAo+ICAJLyogVFJU VCAqLwo+IC0JTU1JT19EKDB4NGRlMCwgRF9TS0wpOwo+IC0JTU1JT19EKDB4NGRlNCwgRF9TS0wp Owo+IC0JTU1JT19EKDB4NGRlOCwgRF9TS0wpOwo+IC0JTU1JT19EKDB4NGRlYywgRF9TS0wpOwo+ IC0JTU1JT19EKDB4NGRmMCwgRF9TS0wpOwo+IC0JTU1JT19ESCgweDRkZjQsIERfU0tMLCBOVUxM LCBnZW45X3RydHRlX3dyaXRlKTsKPiArCU1NSU9fREZIKDB4NGRlMCwgRF9TS0wsIEZfQ01EX0FD Q0VTUywgTlVMTCwgTlVMTCk7Cj4gKwlNTUlPX0RGSCgweDRkZTQsIERfU0tMLCBGX0NNRF9BQ0NF U1MsIE5VTEwsIE5VTEwpOwo+ICsJTU1JT19ERkgoMHg0ZGU4LCBEX1NLTCwgRl9DTURfQUNDRVNT LCBOVUxMLCBOVUxMKTsKPiArCU1NSU9fREZIKDB4NGRlYywgRF9TS0wsIEZfQ01EX0FDQ0VTUywg TlVMTCwgTlVMTCk7Cj4gKwlNTUlPX0RGSCgweDRkZjAsIERfU0tMLCBGX0NNRF9BQ0NFU1MsIE5V TEwsIE5VTEwpOwo+ICsJTU1JT19ERkgoMHg0ZGY0LCBEX1NLTCwgRl9DTURfQUNDRVNTLCBOVUxM LCBnZW45X3RydHRlX3dyaXRlKTsKPiAgCU1NSU9fREgoMHg0ZGZjLCBEX1NLTCwgTlVMTCwgZ2Vu OV90cnR0X2NoaWNrZW5fd3JpdGUpOwo+ICAKPiAgCU1NSU9fRCgweDQ1MDA4LCBEX1NLTCk7Cj4g QEAgLTI2MTEsMTkgKzI5NjMsMzIwIEBAIHN0YXRpYyBpbnQgaW5pdF9za2xfbW1pb19pbmZvKHN0 cnVjdCBpbnRlbF9ndnQgKmd2dCkKPiAgCU1NSU9fRCgweDY1ZjA4LCBEX1NLTCk7Cj4gIAlNTUlP X0QoMHgzMjBmMCwgRF9TS0wpOwo+ICAKPiAtCU1NSU9fRChfUkVHX1ZDUzJfRVhDQywgRF9TS0wp Owo+ICsJTU1JT19ERkgoX1JFR19WQ1MyX0VYQ0MsIERfU0tMLCBGX0NNRF9BQ0NFU1MsIE5VTEws IE5VTEwpOwo+ICAJTU1JT19EKDB4NzAwMzQsIERfU0tMKTsKPiAgCU1NSU9fRCgweDcxMDM0LCBE X1NLTCk7Cj4gIAlNTUlPX0QoMHg3MjAzNCwgRF9TS0wpOwo+ICAKPiAtCU1NSU9fRChfUExBTkVf S0VZVkFMXzEoUElQRV9BKSwgRF9TS0wpOwo+IC0JTU1JT19EKF9QTEFORV9LRVlWQUxfMShQSVBF X0IpLCBEX1NLTCk7Cj4gLQlNTUlPX0QoX1BMQU5FX0tFWVZBTF8xKFBJUEVfQyksIERfU0tMKTsK PiAtCU1NSU9fRChfUExBTkVfS0VZTVNLXzEoUElQRV9BKSwgRF9TS0wpOwo+IC0JTU1JT19EKF9Q TEFORV9LRVlNU0tfMShQSVBFX0IpLCBEX1NLTCk7Cj4gLQlNTUlPX0QoX1BMQU5FX0tFWU1TS18x KFBJUEVfQyksIERfU0tMKTsKPiAtCj4gIAlNTUlPX0QoMHg0NDUwMCwgRF9TS0wpOwo+ICsJTU1J T19ERkgoR0VOOV9DU0ZFX0NISUNLRU4xX1JDUywgRF9TS0xfUExVUywgRl9DTURfQUNDRVNTLCBO VUxMLCBOVUxMKTsKPiArCU1NSU9fREZIKEdFTjhfSERDX0NISUNLRU4xLCBEX1NLTCwgRl9NT0RF X01BU0sgfCBGX0NNRF9BQ0NFU1MsCj4gKwkJTlVMTCwgTlVMTCk7Cj4gKwlyZXR1cm4gMDsKPiAr fQo+ICsKPiArc3RhdGljIGludCBpbml0X2J4dF9tbWlvX2luZm8oc3RydWN0IGludGVsX2d2dCAq Z3Z0KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBndnQtPmRl dl9wcml2Owo+ICsJaW50IHJldDsKPiArCj4gKwlNTUlPX0RIKEZPUkNFV0FLRV9SRU5ERVJfR0VO OSwgRF9TS0xfUExVUywgTlVMTCwgbXVsX2ZvcmNlX3dha2Vfd3JpdGUpOwo+ICsJTU1JT19ESChG T1JDRVdBS0VfQUNLX1JFTkRFUl9HRU45LCBEX1NLTF9QTFVTLCBOVUxMLCBOVUxMKTsKPiArCU1N SU9fREgoRk9SQ0VXQUtFX0JMSVRURVJfR0VOOSwgRF9TS0xfUExVUywgTlVMTCwgbXVsX2ZvcmNl X3dha2Vfd3JpdGUpOwo+ICsJTU1JT19ESChGT1JDRVdBS0VfQUNLX0JMSVRURVJfR0VOOSwgRF9T S0xfUExVUywgTlVMTCwgTlVMTCk7Cj4gKwlNTUlPX0RIKEZPUkNFV0FLRV9NRURJQV9HRU45LCBE X1NLTF9QTFVTLCBOVUxMLCBtdWxfZm9yY2Vfd2FrZV93cml0ZSk7Cj4gKwlNTUlPX0RIKEZPUkNF V0FLRV9BQ0tfTUVESUFfR0VOOSwgRF9TS0xfUExVUywgTlVMTCwgTlVMTCk7Cj4gKwo+ICsJTU1J T19GKF9EUEJfQVVYX0NIX0NUTCwgNiAqIDQsIDAsIDAsIDAsIERfU0tMX1BMVVMsIE5VTEwsIGRw X2F1eF9jaF9jdGxfbW1pb193cml0ZSk7Cj4gKwlNTUlPX0YoX0RQQ19BVVhfQ0hfQ1RMLCA2ICog NCwgMCwgMCwgMCwgRF9TS0xfUExVUywgTlVMTCwgZHBfYXV4X2NoX2N0bF9tbWlvX3dyaXRlKTsK PiArCU1NSU9fRihfRFBEX0FVWF9DSF9DVEwsIDYgKiA0LCAwLCAwLCAwLCBEX1NLTF9QTFVTLCBO VUxMLCBkcF9hdXhfY2hfY3RsX21taW9fd3JpdGUpOwo+ICsKPiArCU1NSU9fRChIU1dfUFdSX1dF TExfQklPUywgRF9CWFQpOwo+ICsJTU1JT19ESChIU1dfUFdSX1dFTExfRFJJVkVSLCBEX0JYVCwg TlVMTCwgc2tsX3Bvd2VyX3dlbGxfY3RsX3dyaXRlKTsKPiArCj4gKwlNTUlPX0QoMHhhMjEwLCBE X1NLTF9QTFVTKTsKPiArCU1NSU9fRChHRU45X01FRElBX1BHX0lETEVfSFlTVEVSRVNJUywgRF9T S0xfUExVUyk7Cj4gKwlNTUlPX0QoR0VOOV9SRU5ERVJfUEdfSURMRV9IWVNURVJFU0lTLCBEX1NL TF9QTFVTKTsKPiArCU1NSU9fREZIKEdFTjlfR0FNVF9FQ09fUkVHX1JXX0lBLCBEX1NLTF9QTFVT LCBGX0NNRF9BQ0NFU1MsIE5VTEwsIE5VTEwpOwo+ICsJTU1JT19ESCgweDRkZGMsIERfQlhULCBO VUxMLCBza2xfbWlzY19jdGxfd3JpdGUpOwo+ICsJTU1JT19ESCgweDQyMDgwLCBEX0JYVCwgTlVM TCwgc2tsX21pc2NfY3RsX3dyaXRlKTsKPiArCU1NSU9fRCgweDQ1NTA0LCBEX0JYVCk7Cj4gKwlN TUlPX0QoMHg0NTUyMCwgRF9CWFQpOwo+ICsJTU1JT19EKDB4NDYwMDAsIERfQlhUKTsKPiArCU1N SU9fREgoMHg0NjAxMCwgRF9CWFQsIE5VTEwsIHNrbF9sY3BsbF93cml0ZSk7Cj4gKwlNTUlPX0RI KDB4NDYwMTQsIERfQlhULCBOVUxMLCBza2xfbGNwbGxfd3JpdGUpOwo+ICsJTU1JT19EKDB4NkMw NDAsIERfQlhUKTsKPiArCU1NSU9fRCgweDZDMDQ4LCBEX0JYVCk7Cj4gKwlNTUlPX0QoMHg2QzA1 MCwgRF9CWFQpOwo+ICsJTU1JT19EKDB4NkMwNDQsIERfQlhUKTsKPiArCU1NSU9fRCgweDZDMDRD LCBEX0JYVCk7Cj4gKwlNTUlPX0QoMHg2QzA1NCwgRF9CWFQpOwo+ICsJTU1JT19EKDB4NmMwNTgs IERfQlhUKTsKPiArCU1NSU9fRCgweDZjMDVjLCBEX0JYVCk7Cj4gKwlNTUlPX0RIKDBYNmMwNjAs IERfQlhULCBkcGxsX3N0YXR1c19yZWFkLCBOVUxMKTsKPiArCj4gKwlNTUlPX0RIKFNLTF9QU19X SU5fUE9TKFBJUEVfQSwgMCksIERfQlhULCBOVUxMLCBwZl93cml0ZSk7Cj4gKwlNTUlPX0RIKFNL TF9QU19XSU5fUE9TKFBJUEVfQSwgMSksIERfQlhULCBOVUxMLCBwZl93cml0ZSk7Cj4gKwlNTUlP X0RIKFNLTF9QU19XSU5fUE9TKFBJUEVfQiwgMCksIERfQlhULCBOVUxMLCBwZl93cml0ZSk7Cj4g KwlNTUlPX0RIKFNLTF9QU19XSU5fUE9TKFBJUEVfQiwgMSksIERfQlhULCBOVUxMLCBwZl93cml0 ZSk7Cj4gKwlNTUlPX0RIKFNLTF9QU19XSU5fUE9TKFBJUEVfQywgMCksIERfQlhULCBOVUxMLCBw Zl93cml0ZSk7Cj4gKwlNTUlPX0RIKFNLTF9QU19XSU5fUE9TKFBJUEVfQywgMSksIERfQlhULCBO VUxMLCBwZl93cml0ZSk7Cj4gKwo+ICsJTU1JT19ESChTS0xfUFNfV0lOX1NaKFBJUEVfQSwgMCks IERfQlhULCBOVUxMLCBwZl93cml0ZSk7Cj4gKwlNTUlPX0RIKFNLTF9QU19XSU5fU1ooUElQRV9B LCAxKSwgRF9CWFQsIE5VTEwsIHBmX3dyaXRlKTsKPiArCU1NSU9fREgoU0tMX1BTX1dJTl9TWihQ SVBFX0IsIDApLCBEX0JYVCwgTlVMTCwgcGZfd3JpdGUpOwo+ICsJTU1JT19ESChTS0xfUFNfV0lO X1NaKFBJUEVfQiwgMSksIERfQlhULCBOVUxMLCBwZl93cml0ZSk7Cj4gKwlNTUlPX0RIKFNLTF9Q U19XSU5fU1ooUElQRV9DLCAwKSwgRF9CWFQsIE5VTEwsIHBmX3dyaXRlKTsKPiArCU1NSU9fREgo U0tMX1BTX1dJTl9TWihQSVBFX0MsIDEpLCBEX0JYVCwgTlVMTCwgcGZfd3JpdGUpOwo+ICsKPiAr CU1NSU9fREgoU0tMX1BTX0NUUkwoUElQRV9BLCAwKSwgRF9CWFQsIE5VTEwsIHBmX3dyaXRlKTsK PiArCU1NSU9fREgoU0tMX1BTX0NUUkwoUElQRV9BLCAxKSwgRF9CWFQsIE5VTEwsIHBmX3dyaXRl KTsKPiArCU1NSU9fREgoU0tMX1BTX0NUUkwoUElQRV9CLCAwKSwgRF9CWFQsIE5VTEwsIHBmX3dy aXRlKTsKPiArCU1NSU9fREgoU0tMX1BTX0NUUkwoUElQRV9CLCAxKSwgRF9CWFQsIE5VTEwsIHBm X3dyaXRlKTsKPiArCU1NSU9fREgoU0tMX1BTX0NUUkwoUElQRV9DLCAwKSwgRF9CWFQsIE5VTEws IHBmX3dyaXRlKTsKPiArCU1NSU9fREgoU0tMX1BTX0NUUkwoUElQRV9DLCAxKSwgRF9CWFQsIE5V TEwsIHBmX3dyaXRlKTsKPiArCj4gKwlNTUlPX0RIKENVUl9CVUZfQ0ZHKFBJUEVfQSksIERfQlhU LCBOVUxMLCBOVUxMKTsKPiArCU1NSU9fREgoQ1VSX0JVRl9DRkcoUElQRV9CKSwgRF9CWFQsIE5V TEwsIE5VTEwpOwo+ICsJTU1JT19ESChDVVJfQlVGX0NGRyhQSVBFX0MpLCBEX0JYVCwgTlVMTCwg TlVMTCk7Cj4gKwo+ICsJTU1JT19GKENVUl9XTShQSVBFX0EsIDApLCA0ICogOCwgMCwgMCwgMCwg RF9CWFQsIE5VTEwsIE5VTEwpOwo+ICsJTU1JT19GKENVUl9XTShQSVBFX0IsIDApLCA0ICogOCwg MCwgMCwgMCwgRF9CWFQsIE5VTEwsIE5VTEwpOwo+ICsJTU1JT19GKENVUl9XTShQSVBFX0MsIDAp LCA0ICogOCwgMCwgMCwgMCwgRF9CWFQsIE5VTEwsIE5VTEwpOwo+ICsKPiArCU1NSU9fREgoQ1VS X1dNX1RSQU5TKFBJUEVfQSksIERfQlhULCBOVUxMLCBOVUxMKTsKPiArCU1NSU9fREgoQ1VSX1dN X1RSQU5TKFBJUEVfQiksIERfQlhULCBOVUxMLCBOVUxMKTsKPiArCU1NSU9fREgoQ1VSX1dNX1RS QU5TKFBJUEVfQyksIERfQlhULCBOVUxMLCBOVUxMKTsKPiArCj4gKwlNTUlPX1BMQU5FU19ESChQ TEFORV9DVEwsIERfQlhULCBOVUxMLCBza2xfcGxhbmVfbW1pb193cml0ZSk7Cj4gKwlNTUlPX1BM QU5FU19ESChQTEFORV9TVFJJREUsIERfQlhULCBOVUxMLCBza2xfcGxhbmVfbW1pb193cml0ZSk7 Cj4gKwlNTUlPX1BMQU5FU19ESChQTEFORV9QT1MsIERfQlhULCBOVUxMLCBza2xfcGxhbmVfbW1p b193cml0ZSk7Cj4gKwlNTUlPX1BMQU5FU19ESChQTEFORV9TSVpFLCBEX0JYVCwgTlVMTCwgc2ts X3BsYW5lX21taW9fd3JpdGUpOwo+ICsJTU1JT19QTEFORVNfREgoUExBTkVfS0VZVkFMLCBEX0JY VCwgTlVMTCwgc2tsX3BsYW5lX21taW9fd3JpdGUpOwo+ICsJTU1JT19QTEFORVNfREgoUExBTkVf S0VZTVNLLCBEX0JYVCwgTlVMTCwgc2tsX3BsYW5lX21taW9fd3JpdGUpOwo+ICsKPiArCU1NSU9f UExBTkVTX0RIKFBMQU5FX1NVUkYsIERfQlhULCBOVUxMLCBza2xfcGxhbmVfc3VyZl93cml0ZSk7 Cj4gKwo+ICsJTU1JT19QTEFORVNfREgoUExBTkVfS0VZTUFYLCBEX0JYVCwgTlVMTCwgc2tsX3Bs YW5lX21taW9fd3JpdGUpOwo+ICsJTU1JT19QTEFORVNfREgoUExBTkVfT0ZGU0VULCBEX0JYVCwg TlVMTCwgc2tsX3BsYW5lX21taW9fd3JpdGUpOwo+ICsJTU1JT19QTEFORVNfREgoX1JFR183MDFD MCwgRF9CWFQsIE5VTEwsIHNrbF9wbGFuZV9tbWlvX3dyaXRlKTsKPiArCU1NSU9fUExBTkVTX0RI KF9SRUdfNzAxQzQsIERfQlhULCBOVUxMLCBza2xfcGxhbmVfbW1pb193cml0ZSk7Cj4gKwo+ICsJ TU1JT19QTEFORVNfU0RIKF9QTEFORV9XTV9CQVNFLCA0ICogOCwgRF9CWFQsIE5VTEwsIHNrbF9w bGFuZV9tbWlvX3dyaXRlKTsKPiArCU1NSU9fUExBTkVTX0RIKFBMQU5FX1dNX1RSQU5TLCBEX0JY VCwgTlVMTCwgc2tsX3BsYW5lX21taW9fd3JpdGUpOwo+ICsJTU1JT19QTEFORVNfREgoUExBTkVf TlYxMl9CVUZfQ0ZHLCBEX0JYVCwgTlVMTCwgTlVMTCk7Cj4gKwlNTUlPX1BMQU5FU19ESChQTEFO RV9CVUZfQ0ZHLCBEX0JYVCwgTlVMTCwgTlVMTCk7Cj4gKwo+ICsJTU1JT19GKDB4ODAwMDAsIDB4 MzAwMCwgMCwgMCwgMCwgRF9CWFQsIE5VTEwsIE5VTEwpOwo+ICsJTU1JT19EKDB4OGYwNzQsIERf QlhUKTsKPiArCU1NSU9fRCgweDhmMDA0LCBEX0JYVCk7Cj4gKwlNTUlPX0QoMHg4ZjAzNCwgRF9C WFQpOwo+ICsKPiArCU1NSU9fRCgweGIxMWMsIERfQlhUKTsKPiArCj4gKwlNTUlPX0QoMHg1MTAw MCwgRF9CWFQpOwo+ICsJTU1JT19EKDB4NmMwMGMsIERfQlhUKTsKPiArCj4gKwlNTUlPX0YoMHhj ODAwLCAweDdmOCwgRl9DTURfQUNDRVNTLCAwLCAwLCBEX0JYVCwgTlVMTCwgTlVMTCk7Cj4gKwlN TUlPX0YoMHhiMDIwLCAweDgwLCBGX0NNRF9BQ0NFU1MsIDAsIDAsIERfQlhULCBOVUxMLCBOVUxM KTsKPiArCj4gKwlNTUlPX0QoMHhkMDgsIERfQlhUKTsKPiArCU1NSU9fRCgweDIwZTAsIERfQlhU KTsKPiArCU1NSU9fRCgweDIwZWMsIERfQlhUKTsKPiArCj4gKwkvKiBUUlRUICovCj4gKwlNTUlP X0QoMHg0ZGUwLCBEX0JYVCk7Cj4gKwlNTUlPX0QoMHg0ZGU0LCBEX0JYVCk7Cj4gKwlNTUlPX0Qo MHg0ZGU4LCBEX0JYVCk7Cj4gKwlNTUlPX0QoMHg0ZGVjLCBEX0JYVCk7Cj4gKwlNTUlPX0QoMHg0 ZGYwLCBEX0JYVCk7Cj4gKwlNTUlPX0RIKDB4NGRmNCwgRF9CWFQsIE5VTEwsIGdlbjlfdHJ0dGVf d3JpdGUpOwo+ICsJTU1JT19ESCgweDRkZmMsIERfQlhULCBOVUxMLCBnZW45X3RydHRfY2hpY2tl bl93cml0ZSk7Cj4gKwo+ICsJTU1JT19ESCgweDQ1MDA4LCBEX0JYVCwgTlVMTCwgYnh0X2RidWZf Y3RsX3dyaXRlKTsKPiArCj4gKwlNTUlPX0QoMHg0NjQzMCwgRF9CWFQpOwo+ICsKPiArCU1NSU9f RCgweDQ2NTIwLCBEX0JYVCk7Cj4gKwo+ICsJTU1JT19EKDB4YzQwM2MsIERfQlhUKTsKPiArCU1N SU9fRCgweGIwMDQsIERfQlhUKTsKPiArCU1NSU9fREgoRE1BX0NUUkwsIERfU0tMX1BMVVMsIE5V TEwsIGRtYV9jdHJsX3dyaXRlKTsKPiArCj4gKwlNTUlPX0QoMHg2NTkwMCwgRF9CWFQpOwo+ICsJ TU1JT19EKDB4MTA4MmMwLCBEX0JYVCk7Cj4gKwlNTUlPX0QoMHg0MDY4LCBEX0JYVCk7Cj4gKwlN TUlPX0QoMHg2NzA1NCwgRF9CWFQpOwo+ICsJTU1JT19EKDB4NmU1NjAsIERfQlhUKTsKPiArCU1N SU9fRCgweDZlNTU0LCBEX0JYVCk7Cj4gKwlNTUlPX0QoMHgyYjIwLCBEX0JYVCk7Cj4gKwlNTUlP X0QoMHg2NWYwMCwgRF9CWFQpOwo+ICsJTU1JT19EKDB4NjVmMDgsIERfQlhUKTsKPiArCU1NSU9f RCgweDMyMGYwLCBEX0JYVCk7Cj4gKwo+ICsJTU1JT19EKF9SRUdfVkNTMl9FWENDLCBEX0JYVCk7 Cj4gKwlNTUlPX0QoMHg3MDAzNCwgRF9CWFQpOwo+ICsJTU1JT19EKDB4NzEwMzQsIERfQlhUKTsK PiArCU1NSU9fRCgweDcyMDM0LCBEX0JYVCk7Cj4gKwo+ICsJTU1JT19EKDB4NDQ1MDAsIERfQlhU KTsKPiArCj4gKwlNTUlPX0QoR0VOOF9HVENSLCBEX1NLTF9QTFVTKTsKPiArCj4gKwlNTUlPX0Qo R0VON19TQ19JTlNURE9ORSwgRF9TS0xfUExVUyk7Cj4gKwlNTUlPX0QoR0VON19TQU1QTEVSX0lO U1RET05FLCBEX1NLTF9QTFVTKTsKPiArCU1NSU9fRChHRU43X1JPV19JTlNURE9ORSwgRF9TS0xf UExVUyk7Cj4gKwlNTUlPX0QoR0VOOF9GQVVMVF9UTEJfREFUQTAsIERfU0tMX1BMVVMpOwo+ICsJ TU1JT19EKEdFTjhfRkFVTFRfVExCX0RBVEExLCBEX1NLTF9QTFVTKTsKPiArCU1NSU9fRChFUlJP Ul9HRU42LCBEX1NLTF9QTFVTKTsKPiArCU1NSU9fRChET05FX1JFRywgRF9TS0xfUExVUyk7Cj4g KwlNTUlPX0QoRUlSLCBEX1NLTF9QTFVTKTsKPiArCU1NSU9fRChQR1RCTF9FUiwgRF9TS0xfUExV Uyk7Cj4gKwlNTUlPX0QoMHg0MTk0LCBEX1NLTF9QTFVTKTsKPiArCU1NSU9fRCgweDQyOTQsIERf U0tMX1BMVVMpOwo+ICsJTU1JT19EKDB4NDQ5NCwgRF9TS0xfUExVUyk7Cj4gKwo+ICsJTU1JT19S SU5HX0QoUklOR19QU01JX0NUTCwgRF9TS0xfUExVUyk7Cj4gKwlNTUlPX1JJTkdfRChSSU5HX0RN QV9GQURELCBEX1NLTF9QTFVTKTsKPiArCU1NSU9fUklOR19EKFJJTkdfRE1BX0ZBRERfVURXLCBE X1NLTF9QTFVTKTsKPiArCU1NSU9fUklOR19EKFJJTkdfSVBFSFIsIERfU0tMX1BMVVMpOwo+ICsJ TU1JT19SSU5HX0QoUklOR19JTlNUUFMsIERfU0tMX1BMVVMpOwo+ICsJTU1JT19SSU5HX0QoUklO R19CQkFERFJfVURXLCBEX1NLTF9QTFVTKTsKPiArCU1NSU9fUklOR19EKFJJTkdfQkJTVEFURSwg RF9TS0xfUExVUyk7Cj4gKwlNTUlPX1JJTkdfRChSSU5HX0lQRUlSLCBEX1NLTF9QTFVTKTsKPiAr CU1NSU9fUklOR19EKFJJTkdfSU5TVERPTkUsIERfU0tMX1BMVVMpOwo+ICsKPiArCU1NSU9fRChH RU45X0NTRkVfQ0hJQ0tFTjFfUkNTLCBEX1NLTF9QTFVTKTsKPiArCU1NSU9fRihTT0ZUX1NDUkFU Q0goMCksIDE2ICogNCwgMCwgMCwgMCwgRF9TS0xfUExVUywgTlVMTCwgTlVMTCk7Cj4gKwlNTUlP X0QoMHhjNGM4LCBEX1NLTF9QTFVTKTsKPiArCU1NSU9fRChHVUNfQkNTX1JDU19JRVIsIERfU0tM X1BMVVMpOwo+ICsJTU1JT19EKEdVQ19WQ1MyX1ZDUzFfSUVSLCBEX1NLTF9QTFVTKTsKPiArCU1N SU9fRChHVUNfV0RfVkVDU19JRVIsIERfU0tMX1BMVVMpOwo+ICsJTU1JT19EKEdVQ19NQVhfSURM RV9DT1VOVCwgRF9TS0xfUExVUyk7Cj4gKwo+ICsJTU1JT19ESChCWFRfUF9DUl9HVF9ESVNQX1BX Uk9OLCBEX0JYVCwgTlVMTCwgYnh0X2d0X2Rpc3BfcHdyb25fd3JpdGUpOwo+ICsJTU1JT19EKEJY VF9SUF9TVEFURV9DQVAsIERfQlhUKTsKPiArCU1NSU9fREgoQlhUX1BIWV9DVExfRkFNSUxZKERQ SU9fUEhZMCksIERfQlhULCBOVUxMLCBieHRfcGh5X2N0bF9mYW1pbHlfd3JpdGUpOwo+ICsJTU1J T19ESChCWFRfUEhZX0NUTF9GQU1JTFkoRFBJT19QSFkxKSwgRF9CWFQsIE5VTEwsIGJ4dF9waHlf Y3RsX2ZhbWlseV93cml0ZSk7Cj4gKwlNTUlPX0QoQlhUX1BIWV9DVEwoUE9SVF9BKSwgRF9CWFQp Owo+ICsJTU1JT19EKEJYVF9QSFlfQ1RMKFBPUlRfQiksIERfQlhUKTsKPiArCU1NSU9fRChCWFRf UEhZX0NUTChQT1JUX0MpLCBEX0JYVCk7Cj4gKwlNTUlPX0RIKEJYVF9QT1JUX1BMTF9FTkFCTEUo UE9SVF9BKSwgRF9CWFQsIE5VTEwsIGJ4dF9wb3J0X3BsbF9lbmFibGVfd3JpdGUpOwo+ICsJTU1J T19ESChCWFRfUE9SVF9QTExfRU5BQkxFKFBPUlRfQiksIERfQlhULCBOVUxMLCBieHRfcG9ydF9w bGxfZW5hYmxlX3dyaXRlKTsKPiArCU1NSU9fREgoQlhUX1BPUlRfUExMX0VOQUJMRShQT1JUX0Mp LCBEX0JYVCwgTlVMTCwgYnh0X3BvcnRfcGxsX2VuYWJsZV93cml0ZSk7Cj4gKwo+ICsJTU1JT19Q T1JUX0NMX1JFRihEUElPX1BIWTApOwo+ICsJTU1JT19QT1JUX1BDU19UWChEUElPX1BIWTAsIERQ SU9fQ0gwKTsKPiArCU1NSU9fUE9SVF9QQ1NfVFgoRFBJT19QSFkwLCBEUElPX0NIMSk7Cj4gKwlN TUlPX1BPUlRfQ0xfUkVGKERQSU9fUEhZMSk7Cj4gKwlNTUlPX1BPUlRfUENTX1RYKERQSU9fUEhZ MSwgRFBJT19DSDApOwo+ICsKPiArCU1NSU9fRChCWFRfREVfUExMX0NUTCwgRF9CWFQpOwo+ICsJ TU1JT19ESChCWFRfREVfUExMX0VOQUJMRSwgRF9CWFQsIE5VTEwsIGJ4dF9kZV9wbGxfZW5hYmxl X3dyaXRlKTsKPiArCU1NSU9fRChCWFRfRFNJX1BMTF9DVEwsIERfQlhUKTsKPiArCU1NSU9fREgo QlhUX0RTSV9QTExfRU5BQkxFLCBEX0JYVCwgTlVMTCwgYnh0X2RzaV9wbGxfZW5hYmxlX3dyaXRl KTsKPiArCj4gKwlNTUlPX0QoQlhUX0JMQ19QV01fQ1RMKDApLCBEX0JYVCk7Cj4gKwlNTUlPX0Qo QlhUX0JMQ19QV01fRlJFUSgwKSwgRF9CWFQpOwo+ICsJTU1JT19EKEJYVF9CTENfUFdNX0RVVFko MCksIERfQlhUKTsKPiArCU1NSU9fRChCWFRfQkxDX1BXTV9DVEwoMSksIERfQlhUKTsKPiArCU1N SU9fRChCWFRfQkxDX1BXTV9GUkVRKDEpLCBEX0JYVCk7Cj4gKwlNTUlPX0QoQlhUX0JMQ19QV01f RFVUWSgxKSwgRF9CWFQpOwo+ICsKPiArCU1NSU9fRChHRU45X0NMS0dBVEVfRElTXzAsIERfQlhU KTsKPiArCj4gKwlNTUlPX0QoSFNXX1RWSURFT19ESVBfR0NQKFRSQU5TQ09ERVJfQSksIERfQlhU KTsKPiArCU1NSU9fRChIU1dfVFZJREVPX0RJUF9HQ1AoVFJBTlNDT0RFUl9CKSwgRF9CWFQpOwo+ ICsJTU1JT19EKEhTV19UVklERU9fRElQX0dDUChUUkFOU0NPREVSX0MpLCBEX0JYVCk7Cj4gKwo+ ICsJTU1JT19EKFJDNl9MT0NBVElPTiwgRF9CWFQpOwo+ICsJTU1JT19EKFJDNl9DVFhfQkFTRSwg RF9CWFQpOwo+ICsKPiArCU1NSU9fRCgweEEyNDgsIERfU0tMX1BMVVMpOwo+ICsJTU1JT19EKDB4 QTI1MCwgRF9TS0xfUExVUyk7Cj4gKwlNTUlPX0QoMHhBMjVDLCBEX1NLTF9QTFVTKTsKPiArCU1N SU9fRCgweEEwMDAsIERfU0tMX1BMVVMpOwo+ICsJTU1JT19EKDB4QjEwMCwgRF9TS0xfUExVUyk7 Cj4gKwlNTUlPX0QoMHhEMDAsIERfU0tMX1BMVVMpOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgaW50IGluaXRfYnh0X2RzaV9tbWlvX2luZm8oc3RydWN0IGludGVsX2d2dCAq Z3Z0KQo+ICt7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCU1NSU9fRChCWFRfRFNJX0NGRywgRF9CWFQp Owo+ICsJTU1JT19EKEJYVF9EU0lfVFhDTlRSTCwgRF9CWFQpOwo+ICsKPiArCU1NSU9fRChCWFRf TUlQSV9DTE9DS19DVEwsIERfQlhUKTsKPiArCU1NSU9fRChfQlhUX01JUElBX1RSQU5TX0hBQ1RJ VkUsIERfQlhUKTsKPiArCU1NSU9fRChfQlhUX01JUElDX1RSQU5TX0hBQ1RJVkUsIERfQlhUKTsK PiArCU1NSU9fRChfQlhUX01JUElBX1RSQU5TX1ZBQ1RJVkUsIERfQlhUKTsKPiArCU1NSU9fRChf QlhUX01JUElDX1RSQU5TX1ZBQ1RJVkUsIERfQlhUKTsKPiArCU1NSU9fRChfQlhUX01JUElBX1RS QU5TX1ZUT1RBTCwgRF9CWFQpOwo+ICsJTU1JT19EKF9CWFRfTUlQSUNfVFJBTlNfVlRPVEFMLCBE X0JYVCk7Cj4gKwlNTUlPX0QoX0JYVF9NSVBJQV9QT1JUX0NUUkwsIERfQlhUKTsKPiArCU1NSU9f RChfQlhUX01JUElDX1BPUlRfQ1RSTCwgRF9CWFQpOwo+ICsKPiArCU1NSU9fRCgweDZiMDAwLCBE X0JYVCk7Cj4gKwlNTUlPX0QoMHg2YjgwYywgRF9CWFQpOwo+ICsJTU1JT19EKDB4NmIxMDQsIERf QlhUKTsKPiArCU1NSU9fRCgweDZiMDMwLCBEX0JYVCk7Cj4gKwlNTUlPX0QoMHg2YjAyOCwgRF9C WFQpOwo+ICsJTU1JT19EKDB4NmIwMmMsIERfQlhUKTsKPiArCU1NSU9fRCgweDZiMDQwLCBEX0JY VCk7Cj4gKwlNTUlPX0QoMHg2YjAzOCwgRF9CWFQpOwo+ICsJTU1JT19EKDB4NmIwM2MsIERfQlhU KTsKPiArCU1NSU9fRCgweDZiMDA0LCBEX0JYVCk7Cj4gKwlNTUlPX0QoMHg2YjA0OCwgRF9CWFQp Owo+ICsJTU1JT19EKDB4NmI4MDQsIERfQlhUKTsKPiArCU1NSU9fRCgweDZiODA4LCBEX0JYVCk7 Cj4gKwlNTUlPX0QoMHg2Yjg0OCwgRF9CWFQpOwo+ICsJTU1JT19EKDB4NmIwNzQsIERfQlhUKTsK PiArCU1NSU9fRCgweDZiODc0LCBEX0JYVCk7Cj4gKwlNTUlPX0QoMHg2YjA1YywgRF9CWFQpOwo+ ICsJTU1JT19EKDB4NmIwMGMsIERfQlhUKTsKPiArCU1NSU9fRCgweDZiODAwLCBEX0JYVCk7Cj4g KwlNTUlPX0QoMHg2Yjg1YywgRF9CWFQpOwo+ICsJTU1JT19EKDB4NmIwNmMsIERfQlhUKTsKPiAr CU1NSU9fRCgweDZiMDA4LCBEX0JYVCk7Cj4gKwlNTUlPX0QoMHg2YjA4MCwgRF9CWFQpOwo+ICsJ TU1JT19EKDB4NmIwMjAsIERfQlhUKTsKPiArCU1NSU9fRCgweDZiOTA0LCBEX0JYVCk7Cj4gKwlN TUlPX0QoMHg2Yjg4MCwgRF9CWFQpOwo+ICsJTU1JT19EKDB4NmI4MjAsIERfQlhUKTsKPiArCU1N SU9fRCgweDZiMDM0LCBEX0JYVCk7Cj4gKwlNTUlPX0QoMHg2YjgzNCwgRF9CWFQpOwo+ICsJTU1J T19EKDB4NmI4MzAsIERfQlhUKTsKPiArCU1NSU9fRCgweDZiODI4LCBEX0JYVCk7Cj4gKwlNTUlP X0QoMHg2YjgyYywgRF9CWFQpOwo+ICsJTU1JT19EKDB4NmI4NDAsIERfQlhUKTsKPiArCU1NSU9f RCgweDZiODM4LCBEX0JYVCk7Cj4gKwlNTUlPX0QoMHg2YjgzYywgRF9CWFQpOwo+ICsJTU1JT19E KDB4NmIwMTAsIERfQlhUKTsKPiArCU1NSU9fRCgweDZiMDE0LCBEX0JYVCk7Cj4gKwlNTUlPX0Qo MHg2YjAxOCwgRF9CWFQpOwo+ICsJTU1JT19EKDB4NmIwMWMsIERfQlhUKTsKPiArCU1NSU9fRCgw eDZiMDUwLCBEX0JYVCk7Cj4gKwlNTUlPX0QoMHg2YjA0NCwgRF9CWFQpOwo+ICsJTU1JT19EKDB4 NmIwNjAsIERfQlhUKTsKPiArCU1NSU9fRCgweDZiMDg0LCBEX0JYVCk7Cj4gKwlNTUlPX0QoMHg2 YjA4OCwgRF9CWFQpOwo+ICsJTU1JT19EKDB4NmIwNTgsIERfQlhUKTsKPiArCU1NSU9fRCgweDZi ODEwLCBEX0JYVCk7Cj4gKwlNTUlPX0QoMHg2YjgxNCwgRF9CWFQpOwo+ICsJTU1JT19EKDB4NmI4 MTgsIERfQlhUKTsKPiArCU1NSU9fRCgweDZiODFjLCBEX0JYVCk7Cj4gKwlNTUlPX0QoMHg2Yjg1 MCwgRF9CWFQpOwo+ICsJTU1JT19EKDB4NmI4NDQsIERfQlhUKTsKPiArCU1NSU9fRCgweDZiODYw LCBEX0JYVCk7Cj4gKwlNTUlPX0QoMHg2Yjg4NCwgRF9CWFQpOwo+ICsJTU1JT19EKDB4NmI4ODgs IERfQlhUKTsKPiArCU1NSU9fRCgweDZiODU4LCBEX0JYVCk7Cj4gKwlNTUlPX0QoMHg2YjA2NCwg RF9CWFQpOwo+ICsJTU1JT19EKDB4MWYwNDBjLCBEX0JYVCk7Cj4gKwo+ICAJcmV0dXJuIDA7Cj4g IH0KPiAgCj4gQEAgLTI3MDcsNiArMzM2MCwxOSBAQCBpbnQgaW50ZWxfZ3Z0X3NldHVwX21taW9f aW5mbyhzdHJ1Y3QgaW50ZWxfZ3Z0ICpndnQpCj4gIAkJcmV0ID0gaW5pdF9za2xfbW1pb19pbmZv KGd2dCk7Cj4gIAkJaWYgKHJldCkKPiAgCQkJZ290byBlcnI7Cj4gKwl9IGVsc2UgaWYgKElTX0JS T1hUT04oZGV2X3ByaXYpKSB7Cj4gKwkJcmV0ID0gaW5pdF9icm9hZHdlbGxfbW1pb19pbmZvKGd2 dCk7Cj4gKwkJaWYgKHJldCkKPiArCQkJZ290byBlcnI7Cj4gKwkJcmV0ID0gaW5pdF9ieHRfbW1p b19pbmZvKGd2dCk7Cj4gKwkJaWYgKHJldCkKPiArCQkJZ290byBlcnI7Cj4gKwo+ICsJCWlmIChp bnRlbF9iaW9zX2lzX2RzaV9wcmVzZW50KGRldl9wcml2LCBOVUxMKSkgewo+ICsJCQlyZXQgPSBp bml0X2J4dF9kc2lfbW1pb19pbmZvKGd2dCk7Cj4gKwkJCWlmIChyZXQpCj4gKwkJCQlnb3RvIGVy cjsKPiArCQl9Cj4gIAl9Cj4gIAlyZXR1cm4gMDsKPiAgZXJyOgo+IEBAIC0yODEzLDMgKzM0Nzks MjAgQEAgaW50IGludGVsX3ZncHVfZGVmYXVsdF9tbWlvX3dyaXRlKHN0cnVjdCBpbnRlbF92Z3B1 ICp2Z3B1LCB1bnNpZ25lZCBpbnQgb2Zmc2V0LAo+ICAJd3JpdGVfdnJlZyh2Z3B1LCBvZmZzZXQs IHBfZGF0YSwgYnl0ZXMpOwo+ICAJcmV0dXJuIDA7Cj4gIH0KPiArCj4gKy8qKgo+ICsgKiBpbnRl bF9ndnRfaW5fZm9yY2Vfbm9ucHJpdl93aGl0ZWxpc3QgLSBpZiBhIG1taW8gaXMgaW4gd2hpdGVs aXN0IHRvIGJlCj4gKyAqIGZvcmNlLW5vcHJpdiByZWdpc3Rlcgo+ICsgKgo+ICsgKiBAZ3Z0OiBh IEdWVCBkZXZpY2UKPiArICogQG9mZnNldDogcmVnaXN0ZXIgb2Zmc2V0Cj4gKyAqCj4gKyAqIFJl dHVybnM6Cj4gKyAqIFRydWUgaWYgdGhlIHJlZ2lzdGVyIGlzIGluIGZvcmNlLW5vbnByaXYgd2hp dGVsaXN0Owo+ICsgKiBGYWxzZSBpZiBvdXRzaWRlOwo+ICsgKi8KPiArYm9vbCBpbnRlbF9ndnRf aW5fZm9yY2Vfbm9ucHJpdl93aGl0ZWxpc3Qoc3RydWN0IGludGVsX2d2dCAqZ3Z0LAo+ICsJCQkJ CSAgdW5zaWduZWQgaW50IG9mZnNldCkKPiArewo+ICsJcmV0dXJuIGluX3doaXRlbGlzdChvZmZz ZXQpOwo+ICt9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gaW5kZXggMTkzMzczNS4uYjQ0YzA0 ZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+IEBAIC01NzgsMTAgKzU3OCw2IEBAIHN0 YXRpYyBpbnQgaTkxNV9sb2FkX21vZGVzZXRfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ ICAJaWYgKGk5MTVfaW5qZWN0X2xvYWRfZmFpbHVyZSgpKQo+ICAJCXJldHVybiAtRU5PREVWOwo+ ICAKPiAtCXJldCA9IGludGVsX2Jpb3NfaW5pdChkZXZfcHJpdik7Cj4gLQlpZiAocmV0KQo+IC0J CURSTV9JTkZPKCJmYWlsZWQgdG8gZmluZCBWQklPUyB0YWJsZXNcbiIpOwo+IC0KPiAgCS8qIElm IHdlIGhhdmUgPiAxIFZHQSBjYXJkcywgdGhlbiB3ZSBuZWVkIHRvIGFyYml0cmF0ZSBhY2Nlc3MK PiAgCSAqIHRvIHRoZSBjb21tb24gVkdBIHJlc291cmNlcy4KPiAgCSAqCj4gQEAgLTEwODksNiAr MTA4NSwxMCBAQCBzdGF0aWMgaW50IGk5MTVfZHJpdmVyX2luaXRfaHcoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJaW50ZWxfdW5jb3JlX3Nhbml0aXplKGRldl9wcml2KTsK PiAgCj4gIAlpbnRlbF9vcHJlZ2lvbl9zZXR1cChkZXZfcHJpdik7Cj4gKwlyZXQgPSBpbnRlbF9i aW9zX2luaXQoZGV2X3ByaXYpOwo+ICsJaWYgKHJldCkKPiArCQlEUk1fSU5GTygiZmFpbGVkIHRv IGZpbmQgVkJJT1MgdGFibGVzXG4iKTsKPiArCj4gIAo+ICAJaTkxNV9nZW1fbG9hZF9pbml0X2Zl bmNlcyhkZXZfcHJpdik7Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2lycS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+IGluZGV4IDY5MTJm NTEuLjEzY2Y4NTkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEu Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKPiBAQCAtODA3LDEzICs4 MDcsMTYgQEAgc3RhdGljIGludCBfX2ludGVsX2dldF9jcnRjX3NjYW5saW5lKHN0cnVjdCBpbnRl bF9jcnRjICpjcnRjKQo+ICAJaWYgKEhBU19EREkoZGV2X3ByaXYpICYmICFwb3NpdGlvbikgewo+ ICAJCWludCBpLCB0ZW1wOwo+ICAKPiAtCQlmb3IgKGkgPSAwOyBpIDwgMTAwOyBpKyspIHsKPiAt CQkJdWRlbGF5KDEpOwo+IC0JCQl0ZW1wID0gX19yYXdfaTkxNV9yZWFkMzIoZGV2X3ByaXYsIFBJ UEVEU0wocGlwZSkpICYKPiAtCQkJCURTTF9MSU5FTUFTS19HRU4zOwo+IC0JCQlpZiAodGVtcCAh PSBwb3NpdGlvbikgewo+IC0JCQkJcG9zaXRpb24gPSB0ZW1wOwo+IC0JCQkJYnJlYWs7Cj4gKwkJ aWYgKCEoaW50ZWxfYmlvc19pc19kc2lfcHJlc2VudChkZXZfcHJpdiwgTlVMTCkgJiYKPiArCQkJ CWludGVsX3ZncHVfYWN0aXZlKGRldl9wcml2KSkpIHsKPiArCQkJZm9yIChpID0gMDsgaSA8IDEw MDsgaSsrKSB7Cj4gKwkJCQl1ZGVsYXkoMSk7Cj4gKwkJCQl0ZW1wID0gX19yYXdfaTkxNV9yZWFk MzIoZGV2X3ByaXYsIFBJUEVEU0wocGlwZSkpICYKPiArCQkJCQlEU0xfTElORU1BU0tfR0VOMzsK PiArCQkJCWlmICh0ZW1wICE9IHBvc2l0aW9uKSB7Cj4gKwkJCQkJcG9zaXRpb24gPSB0ZW1wOwo+ ICsJCQkJCWJyZWFrOwo+ICsJCQkJfQo+ICAJCQl9Cj4gIAkJfQo+ICAJfQoKLS0gCkphbmkgTmlr dWxhLCBJbnRlbCBPcGVuIFNvdXJjZSBUZWNobm9sb2d5IENlbnRlcgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0Cklu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK