From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8BAE2C4708F for ; Tue, 1 Jun 2021 20:53:24 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 30851613AD for ; Tue, 1 Jun 2021 20:53:24 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 30851613AD Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id BBF738989A; Tue, 1 Jun 2021 20:53:23 +0000 (UTC) Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id D599F8984C for ; Tue, 1 Jun 2021 20:53:21 +0000 (UTC) IronPort-SDR: 1Py9PvpbMA+y8ruXS0bV4m/fljdc7h4zkaYoqaXvMuap0mbMj/TzPsU2VzNsZvZDyRLZ9vZu/p b3l0amP9KMZA== X-IronPort-AV: E=McAfee;i="6200,9189,10002"; a="190750134" X-IronPort-AV: E=Sophos;i="5.83,241,1616482800"; d="scan'208";a="190750134" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Jun 2021 13:53:16 -0700 IronPort-SDR: yPngQWbctOzF8jLcD7Z7Lo/VOu4ClkFW3m8wUH8ZYAzgqlyC9otG4xkvZ8M+6R8kTMzydIp44c bOx28XuXYYqg== X-IronPort-AV: E=Sophos;i="5.83,241,1616482800"; d="scan'208";a="616955767" Received: from nawaskex-mobl.ger.corp.intel.com (HELO ldmartin-desk2) ([10.254.3.30]) by orsmga005-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Jun 2021 13:53:15 -0700 Date: Tue, 1 Jun 2021 13:53:11 -0700 From: Lucas De Marchi To: Matt Roper Message-ID: <20210601205311.le4tiwfyzbl5ofsr@ldmartin-desk2> References: <20210527181700.1676790-1-lucas.demarchi@intel.com> <20210527181700.1676790-2-lucas.demarchi@intel.com> <20210601165834.GA6936@mdroper-desk1.amr.corp.intel.com> <20210601171514.63lh3lqb2yprri73@ldmartin-desk2> <20210601173055.GB6936@mdroper-desk1.amr.corp.intel.com> <20210601191317.mn646kbpdbjw65xc@ldmartin-desk2> <20210601203925.GD6936@mdroper-desk1.amr.corp.intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20210601203925.GD6936@mdroper-desk1.amr.corp.intel.com> Subject: Re: [Intel-gfx] [PATCH 1/7] drm/i915/gt: replace IS_GEN and friends with IS_GRAPHICS_VER X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: intel-gfx@lists.freedesktop.org Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" T24gVHVlLCBKdW4gMDEsIDIwMjEgYXQgMDE6Mzk6MjVQTSAtMDcwMCwgTWF0dCBSb3BlciB3cm90 ZToKPk9uIFR1ZSwgSnVuIDAxLCAyMDIxIGF0IDEyOjEzOjE3UE0gLTA3MDAsIEx1Y2FzIERlIE1h cmNoaSB3cm90ZToKPj4gT24gVHVlLCBKdW4gMDEsIDIwMjEgYXQgMTA6MzA6NTVBTSAtMDcwMCwg TWF0dCBSb3BlciB3cm90ZToKPj4gPiBPbiBUdWUsIEp1biAwMSwgMjAyMSBhdCAxMDoxNToxNEFN IC0wNzAwLCBMdWNhcyBEZSBNYXJjaGkgd3JvdGU6Cj4+ID4gPiBPbiBUdWUsIEp1biAwMSwgMjAy MSBhdCAwOTo1ODozNEFNIC0wNzAwLCBNYXR0IFJvcGVyIHdyb3RlOgo+PiA+ID4gPiBPbiBUaHUs IE1heSAyNywgMjAyMSBhdCAxMToxNjo1NEFNIC0wNzAwLCBMdWNhcyBEZSBNYXJjaGkgd3JvdGU6 Cj4+ID4gPiA+ID4gVGhpcyB3YXMgZG9uZSBieSB0aGUgZm9sbG93aW5nIHNlbWFudGljIHBhdGNo Ogo+PiA+ID4gPgo+PiA+ID4gPiBJcyB0aGUgY29tbWl0IG1lc3NhZ2UgaGVyZSBvdXQtb2YtZGF0 ZT8gIFRoZSBjb2NjaSBkb2Vzbid0IGFwcGVhciB0bwo+PiA+ID4gPiBtYXRjaCB0aGUgZGlmZiBh bnltb3JlLiAgSVNfR1JBUEhJQ1NfVkVSKCkgaXMgdGhlIHJhbmdlIG1hY3JvIG5vdyBhbmQKPj4g PiA+ID4gSVNfR0VOIGlzIGJlaW5nIHJlcGxhY2VkIHdpdGggYSBkaXJlY3QgIj09IiBjb21wYXJp c29uLgo+PiA+ID4KPj4gPiA+IG5vdCBuZWNlc3NhcmlseSwgaXQncyBpbmNsdWRlZCBpbiAiYW5k IGZyaWVuZHMuLi4iLiBNYXliZSByZXdvcmRpbmcgdG8KPj4gPiA+IHNvbWV0aGluZyBsaWtlICJy ZXBsYWNlIGdlbi1iYXNlZCBtYWNyb3Mgd2l0aCBuZXcgdmVyLWJhc2VkIG9uZXMiIHdvdWxkCj4+ ID4gPiBtYWtlIGl0IGNsZWFyZXI/Cj4+ID4KPj4gPiBJIG1lYW4gdGhhdCBydW5uaW5nIHRoZSBj b2NjaW5lbGxlIHJ1bGVzIGJlbG93IHRocm91Z2ggc3BhdGNoIHdvbid0Cj4+ID4gZ2VuZXJhdGUg dGhlIGNvZGUgZGlmZiBoZXJlOyBpdCB3b3VsZCBnZW5lcmF0ZSBhIGNvbXBsZXRlbHkgZGlmZmVy ZW50Cj4+ID4gcGF0Y2ggKHRoYXQgSSBkb24ndCB0aGluayB3b3VsZCBidWlsZCBwcm9wZXJseSBl aXRoZXIpLgo+Pgo+PiBvaCwgb2suIEkgZml4ZWQgdGhlIGlzc3VlcyBpbiB0aGUgLmNvY2NpIGFu ZCBmb3Jnb3QgdG8gdXBkYXRlIHRoZSBjb21taXQKPj4gbWVzc2FnZS4gVGhhbmtzLgo+Pgo+PiBM dWNhcyBEZSBNYXJjaGkKPgo+QXNpZGUgZnJvbSB0aGUgY29tbWl0IG1lc3NhZ2VzIG5lZWRpbmcg dXBkYXRlZCBDb2NjaW5lbGxlIHJ1bGVzLCB0aGUKPmNvZGUgZGVsdGFzIGxvb2sgY29ycmVjdCB0 byBtZS4KPgo+UmV2aWV3ZWQtYnk6IE1hdHQgUm9wZXIgPG1hdHRoZXcuZC5yb3BlckBpbnRlbC5j b20+Cgp0aGFua3MsCgoKPgo+VGhlIG9uZSByZW1haW5pbmcgdGhpbmcgbm90IGNvdmVyZWQgYnkg dGhpcyBzZXJpZXMgaXMgdGhlCj5JU19HRU45X3tCQyxMUH0sIGJ1dCB0aGF0IGNhbiBiZSBhZGRy ZXNzZWQgYXMgYSBmb2xsb3ctdXAgaWYgdGhhdCdzCj5lYXNpZXIuICBJJ20gZ3Vlc3NpbmcgdGhh dCwgYXMgd2Ugc2F3IGluIHRoZSBkaXNwbGF5IGNvZGUsIGl0IG1pZ2h0IGJlCj5lYXNpZXIgdG8g aGFuZGxlIHRob3NlIG1hbnVhbGx5IHNpbmNlIHNvbWV0aW1lcyB0aGUgY29uZGl0aW9ucyBjYW4g YmUKPnNpbXBsaWZpZWQgdG8ganVzdCBhIHNpbXBsZSB2ZXJzaW9uIDkgdGVzdCBvciBjb21iaW5l ZCBpbnRvIGEgdmVyc2lvbgo+MTArIHRlc3QgZGVwZW5kaW5nIG9uIHdoYXQgY29uZGl0aW9ucyBh cmUgYWxyZWFkeSBwcmVzZW50IG9uIHRoZSBvdGhlcgo+YnJhbmNoZXMgb2YgdGhlIGlmL2Vsc2Ug dHJlZXMuCgpJIHRob3VnaHQgYSBiaXQgYWJvdXQgdGhvc2UgYnV0IGNvdWxkbid0IGZpbmQgYSBn b29kIGFsdGVybmF0aXZlIHRvCnRob3NlLiBJbmRlZWQgZG9pbmcgaXQgbWFudWFsbHkgY2FzZSBi eSBjYXNlIHdvdWxkIGJlIGJldHRlci4gTm90IHN1cmUKd2Ugd2FudCBhIHJlcGxhY2VtZW50IG1h Y3JvIGZvciBHRU45X0JDL0dFTjlfTFAuIEJ0dyBvbmx5IHJlY2VudGx5IEkKY2FtZSB0byBrbm93 ICJCQyIgc3RhbmRzIGZvciAiYmlnIGNvcmUiLiBJIGFsd2F5cyBmb3VuZCB0aGlzIGNvbmZ1c2lu Zy4KCkx1Y2FzIERlIE1hcmNoaQoKPgo+Cj5NYXR0Cj4KPj4KPj4gPgo+PiA+Cj4+ID4gTWF0dAo+ PiA+Cj4+ID4gPgo+PiA+ID4gTHVjYXMgRGUgTWFyY2hpCj4+ID4gPgo+PiA+ID4gPgo+PiA+ID4g Pgo+PiA+ID4gPiBNYXR0Cj4+ID4gPiA+Cj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAJQEAgZXhwcmVz c2lvbiBkZXZfcHJpdiwgRTsgQEAKPj4gPiA+ID4gPiAJLSBJTlRFTF9HRU4oZGV2X3ByaXYpID09 IEUKPj4gPiA+ID4gPiAJKyBJU19HUkFQSElDU19WRVIoZGV2X3ByaXYsIEUpCj4+ID4gPiA+ID4K Pj4gPiA+ID4gPiAJQEAgZXhwcmVzc2lvbiBkZXZfcHJpdjsgQEAKPj4gPiA+ID4gPiAJLSBJTlRF TF9HRU4oZGV2X3ByaXYpCj4+ID4gPiA+ID4gCSsgR1JBUEhJQ1NfVkVSKGRldl9wcml2KQo+PiA+ ID4gPiA+Cj4+ID4gPiA+ID4gCUBAIGV4cHJlc3Npb24gZGV2X3ByaXY7IGV4cHJlc3Npb24gRTsg QEAKPj4gPiA+ID4gPiAJLSBJU19HRU4oZGV2X3ByaXYsIEUpCj4+ID4gPiA+ID4gCSsgSVNfR1JB UEhJQ1NfVkVSKGRldl9wcml2LCBFKQo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gCUBACj4+ID4gPiA+ ID4gCWV4cHJlc3Npb24gZGV2X3ByaXY7Cj4+ID4gPiA+ID4gCWV4cHJlc3Npb24gZnJvbSwgdW50 aWw7Cj4+ID4gPiA+ID4gCUBACj4+ID4gPiA+ID4gCS0gSVNfR0VOX1JBTkdFKGRldl9wcml2LCBm cm9tLCB1bnRpbCkKPj4gPiA+ID4gPiAJKyBJU19HUkFQSElDU19SQU5HRShkZXZfcHJpdiwgZnJv bSwgdW50aWwpCj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAJQGRlZkAKPj4gPiA+ID4gPiAJZXhwcmVz c2lvbiBFOwo+PiA+ID4gPiA+IAlpZGVudGlmaWVyIGlkID1+ICJeZ2VuJCI7Cj4+ID4gPiA+ID4g CUBACj4+ID4gPiA+ID4gCS0gaWQgPSBHUkFQSElDU19WRVIoRSkKPj4gPiA+ID4gPiAJKyB2ZXIg PSBHUkFQSElDU19WRVIoRSkKPj4gPiA+ID4gPgo+PiA+ID4gPiA+IAlAQAo+PiA+ID4gPiA+IAlp ZGVudGlmaWVyIGRlZi5pZDsKPj4gPiA+ID4gPiAJQEAKPj4gPiA+ID4gPiAJLSBpZAo+PiA+ID4g PiA+IAkrIHZlcgo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gSXQgYWxzbyB0YWtlcyBjYXJlIG9mIHJl bmFtaW5nIHRoZSB2YXJpYWJsZSB3ZSBhc3NpZ24gdG8gR1JBUEhJQ1NfVkVSKCkKPj4gPiA+ID4g PiBzbyB0byB1c2UgInZlciIgcmF0aGVyIHRoYW4gImdlbiIuCj4+ID4gPiA+ID4KPj4gPiA+ID4g PiBTaWduZWQtb2ZmLWJ5OiBMdWNhcyBEZSBNYXJjaGkgPGx1Y2FzLmRlbWFyY2hpQGludGVsLmNv bT4KPj4gPiA+ID4gPiAtLS0KPj4gPiA+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvZGVi dWdmc19ndF9wbS5jICAgICAgIHwgMzggKysrKystLS0tLS0KPj4gPiA+ID4gPiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvZ2VuMl9lbmdpbmVfY3MuYyAgICAgIHwgIDIgKy0KPj4gPiA+ID4gPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvZ2VuOF9lbmdpbmVfY3MuYyAgICAgIHwgIDIgKy0KPj4g PiA+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvZ2VuOF9wcGd0dC5jICAgICAgICAgIHwg IDIgKy0KPj4gPiA+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfY29udGV4dF9z c2V1LmMgIHwgIDIgKy0KPj4gPiA+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxf ZW5naW5lX2NzLmMgICAgIHwgNTQgKysrKysrKy0tLS0tLS0tCj4+ID4gPiA+ID4gIC4uLi9kcm0v aTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jICB8IDE4ICsrLS0tCj4+ID4gPiA+ ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2dndHQuYyAgICAgICAgICB8IDE4ICsr LS0tCj4+ID4gPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2dndHRfZmVuY2lu Zy5jICB8IDM0ICsrKysrLS0tLS0KPj4gPiA+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv aW50ZWxfZ3QuYyAgICAgICAgICAgIHwgMjcgKysrKy0tLS0KPj4gPiA+ID4gPiAgLi4uL2dwdS9k cm0vaTkxNS9ndC9pbnRlbF9ndF9jbG9ja191dGlscy5jICAgIHwgMTIgKystLQo+PiA+ID4gPiA+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF9pcnEuYyAgICAgICAgfCAgNiArLQo+ PiA+ID4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF9wbV9pcnEuYyAgICAg fCAxMCArLS0KPj4gPiA+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3R0LmMg ICAgICAgICAgIHwgMTQgKystLQo+PiA+ID4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9p bnRlbF9sbGMuYyAgICAgICAgICAgfCAgNiArLQo+PiA+ID4gPiA+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9pbnRlbF9scmMuYyAgICAgICAgICAgfCA0NiArKysrKystLS0tLS0tCj4+ID4gPiA+ ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX21vY3MuYyAgICAgICAgICB8ICA4ICst LQo+PiA+ID4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9wcGd0dC5jICAgICAg ICAgfCAgNiArLQo+PiA+ID4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yYzYu YyAgICAgICAgICAgfCAxNiArKy0tLQo+PiA+ID4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9pbnRlbF9yZW5kZXJzdGF0ZS5jICAgfCAgMiArLQo+PiA+ID4gPiA+ICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jICAgICAgICAgfCAxMiArKy0tCj4+ID4gPiA+ID4gIC4u Li9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmluZ19zdWJtaXNzaW9uLmMgICB8IDY0ICsrKysrKysr Ky0tLS0tLS0tLQo+PiA+ID4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ycHMu YyAgICAgICAgICAgfCA2MCArKysrKysrKy0tLS0tLS0tLQo+PiA+ID4gPiA+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9pbnRlbF9zc2V1LmMgICAgICAgICAgfCAxNCArKy0tCj4+ID4gPiA+ID4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3dvcmthcm91bmRzLmMgICB8IDY2ICsrKysr KysrKy0tLS0tLS0tLS0KPj4gPiA+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRl c3RfZW5naW5lX2NzLmMgIHwgIDYgKy0KPj4gPiA+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3Qvc2VsZnRlc3RfZW5naW5lX3BtLmMgIHwgIDIgKy0KPj4gPiA+ID4gPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZXhlY2xpc3RzLmMgIHwgIDQgKy0KPj4gPiA+ID4gPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZ3RfcG0uYyAgICAgIHwgIDggKy0tCj4+ID4g PiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2hhbmdjaGVjay5jICB8ICA4 ICstLQo+PiA+ID4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9sbGMuYyAg ICAgICAgfCAgNCArLQo+PiA+ID4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVz dF9scmMuYyAgICAgICAgfCAgOCArLS0KPj4gPiA+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3Qvc2VsZnRlc3RfbW9jcy5jICAgICAgIHwgIDIgKy0KPj4gPiA+ID4gPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfcmM2LmMgICAgICAgIHwgIDQgKy0KPj4gPiA+ID4gPiAgLi4u L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3Jpbmdfc3VibWlzc2lvbi5jICAgIHwgIDYgKy0KPj4gPiA+ ID4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfcnBzLmMgICAgICAgIHwgMTYg KystLS0KPj4gPiA+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfdGltZWxp bmUuYyAgIHwgIDYgKy0KPj4gPiA+ID4gPiAgLi4uL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF93 b3JrYXJvdW5kcy5jICAgIHwgIDggKy0tCj4+ID4gPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L3VjL2ludGVsX2d1Yy5jICAgICAgICB8ICA0ICstCj4+ID4gPiA+ID4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19hZHMuYyAgICB8ICAyICstCj4+ID4gPiA+ID4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19mdy5jICAgICB8ICAyICstCj4+ID4g PiA+ID4gIC4uLi9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYyB8IDEw ICstLQo+PiA+ID4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9odWMuYyAg ICAgICAgfCAgMiArLQo+PiA+ID4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRl bF91Yy5jICAgICAgICAgfCAgNCArLQo+PiA+ID4gPiA+ICA0NCBmaWxlcyBjaGFuZ2VkLCAzMjMg aW5zZXJ0aW9ucygrKSwgMzIyIGRlbGV0aW9ucygtKQo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2RlYnVnZnNfZ3RfcG0uYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L2RlYnVnZnNfZ3RfcG0uYwo+PiA+ID4gPiA+IGluZGV4IGQ0ZjQ0 NTJjZTVlZC4uMDM4OWJjZWViZDA2IDEwMDY0NAo+PiA+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L2RlYnVnZnNfZ3RfcG0uYwo+PiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L2RlYnVnZnNfZ3RfcG0uYwo+PiA+ID4gPiA+IEBAIC04NSwxNCArODUsMTQg QEAgc3RhdGljIGludCBnZW42X2RycGMoc3RydWN0IHNlcV9maWxlICptKQo+PiA+ID4gPiA+ICAJ Z3RfY29yZV9zdGF0dXMgPSBpbnRlbF91bmNvcmVfcmVhZF9mdyh1bmNvcmUsIEdFTjZfR1RfQ09S RV9TVEFUVVMpOwo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gIAlyY2N0bDEgPSBpbnRlbF91bmNvcmVf cmVhZCh1bmNvcmUsIEdFTjZfUkNfQ09OVFJPTCk7Cj4+ID4gPiA+ID4gLQlpZiAoSU5URUxfR0VO KGk5MTUpID49IDkpIHsKPj4gPiA+ID4gPiArCWlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gOSkg ewo+PiA+ID4gPiA+ICAJCWdlbjlfcG93ZXJnYXRlX2VuYWJsZSA9Cj4+ID4gPiA+ID4gIAkJCWlu dGVsX3VuY29yZV9yZWFkKHVuY29yZSwgR0VOOV9QR19FTkFCTEUpOwo+PiA+ID4gPiA+ICAJCWdl bjlfcG93ZXJnYXRlX3N0YXR1cyA9Cj4+ID4gPiA+ID4gIAkJCWludGVsX3VuY29yZV9yZWFkKHVu Y29yZSwgR0VOOV9QV1JHVF9ET01BSU5fU1RBVFVTKTsKPj4gPiA+ID4gPiAgCX0KPj4gPiA+ID4g Pgo+PiA+ID4gPiA+IC0JaWYgKElOVEVMX0dFTihpOTE1KSA8PSA3KQo+PiA+ID4gPiA+ICsJaWYg KEdSQVBISUNTX1ZFUihpOTE1KSA8PSA3KQo+PiA+ID4gPiA+ICAJCXNhbmR5YnJpZGdlX3Bjb2Rl X3JlYWQoaTkxNSwgR0VONl9QQ09ERV9SRUFEX1JDNlZJRFMsCj4+ID4gPiA+ID4gIAkJCQkgICAg ICAgJnJjNnZpZHMsIE5VTEwpOwo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gQEAgLTEwMCw3ICsxMDAs NyBAQCBzdGF0aWMgaW50IGdlbjZfZHJwYyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0pCj4+ID4gPiA+ID4g IAkJICAgeWVzbm8ocmNjdGwxICYgR0VONl9SQ19DVExfUkMxZV9FTkFCTEUpKTsKPj4gPiA+ID4g PiAgCXNlcV9wcmludGYobSwgIlJDNiBFbmFibGVkOiAlc1xuIiwKPj4gPiA+ID4gPiAgCQkgICB5 ZXNubyhyY2N0bDEgJiBHRU42X1JDX0NUTF9SQzZfRU5BQkxFKSk7Cj4+ID4gPiA+ID4gLQlpZiAo SU5URUxfR0VOKGk5MTUpID49IDkpIHsKPj4gPiA+ID4gPiArCWlmIChHUkFQSElDU19WRVIoaTkx NSkgPj0gOSkgewo+PiA+ID4gPiA+ICAJCXNlcV9wcmludGYobSwgIlJlbmRlciBXZWxsIEdhdGlu ZyBFbmFibGVkOiAlc1xuIiwKPj4gPiA+ID4gPiAgCQkJICAgeWVzbm8oZ2VuOV9wb3dlcmdhdGVf ZW5hYmxlICYgR0VOOV9SRU5ERVJfUEdfRU5BQkxFKSk7Cj4+ID4gPiA+ID4gIAkJc2VxX3ByaW50 ZihtLCAiTWVkaWEgV2VsbCBHYXRpbmcgRW5hYmxlZDogJXNcbiIsCj4+ID4gPiA+ID4gQEAgLTEz NCw3ICsxMzQsNyBAQCBzdGF0aWMgaW50IGdlbjZfZHJwYyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0pCj4+ ID4gPiA+ID4KPj4gPiA+ID4gPiAgCXNlcV9wcmludGYobSwgIkNvcmUgUG93ZXIgRG93bjogJXNc biIsCj4+ID4gPiA+ID4gIAkJICAgeWVzbm8oZ3RfY29yZV9zdGF0dXMgJiBHRU42X0NPUkVfQ1BE X1NUQVRFX01BU0spKTsKPj4gPiA+ID4gPiAtCWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gOSkgewo+ PiA+ID4gPiA+ICsJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSA5KSB7Cj4+ID4gPiA+ID4gIAkJ c2VxX3ByaW50ZihtLCAiUmVuZGVyIFBvd2VyIFdlbGw6ICVzXG4iLAo+PiA+ID4gPiA+ICAJCQkg ICAoZ2VuOV9wb3dlcmdhdGVfc3RhdHVzICYKPj4gPiA+ID4gPiAgCQkJICAgIEdFTjlfUFdSR1Rf UkVOREVSX1NUQVRVU19NQVNLKSA/ICJVcCIgOiAiRG93biIpOwo+PiA+ID4gPiA+IEBAIC0xNTAs NyArMTUwLDcgQEAgc3RhdGljIGludCBnZW42X2RycGMoc3RydWN0IHNlcV9maWxlICptKQo+PiA+ ID4gPiA+ICAJcHJpbnRfcmM2X3JlcyhtLCAiUkM2KyByZXNpZGVuY3kgc2luY2UgYm9vdDoiLCBH RU42X0dUX0dGWF9SQzZwKTsKPj4gPiA+ID4gPiAgCXByaW50X3JjNl9yZXMobSwgIlJDNisrIHJl c2lkZW5jeSBzaW5jZSBib290OiIsIEdFTjZfR1RfR0ZYX1JDNnBwKTsKPj4gPiA+ID4gPgo+PiA+ ID4gPiA+IC0JaWYgKElOVEVMX0dFTihpOTE1KSA8PSA3KSB7Cj4+ID4gPiA+ID4gKwlpZiAoR1JB UEhJQ1NfVkVSKGk5MTUpIDw9IDcpIHsKPj4gPiA+ID4gPiAgCQlzZXFfcHJpbnRmKG0sICJSQzYg ICB2b2x0YWdlOiAlZG1WXG4iLAo+PiA+ID4gPiA+ICAJCQkgICBHRU42X0RFQ09ERV9SQzZfVklE KCgocmM2dmlkcyA+PiAwKSAmIDB4ZmYpKSk7Cj4+ID4gPiA+ID4gIAkJc2VxX3ByaW50ZihtLCAi UkM2KyAgdm9sdGFnZTogJWRtVlxuIiwKPj4gPiA+ID4gPiBAQCAtMjUwLDcgKzI1MCw3IEBAIHN0 YXRpYyBpbnQgZnJlcXVlbmN5X3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQp Cj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAgCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldCh1 bmNvcmUtPnJwbSk7Cj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAtCWlmIChJU19HRU4oaTkxNSwgNSkp IHsKPj4gPiA+ID4gPiArCWlmIChHUkFQSElDU19WRVIoaTkxNSkgPT0gNSkgewo+PiA+ID4gPiA+ ICAJCXUxNiByZ3Zzd2N0bCA9IGludGVsX3VuY29yZV9yZWFkMTYodW5jb3JlLCBNRU1TV0NUTCk7 Cj4+ID4gPiA+ID4gIAkJdTE2IHJndnN0YXQgPSBpbnRlbF91bmNvcmVfcmVhZDE2KHVuY29yZSwg TUVNU1RBVF9JTEspOwo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gQEAgLTI5Niw3ICsyOTYsNyBAQCBz dGF0aWMgaW50IGZyZXF1ZW5jeV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2Vk KQo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gIAkJc2VxX3ByaW50ZihtLCAiZWZmaWNpZW50IChSUGUp IGZyZXF1ZW5jeTogJWQgTUh6XG4iLAo+PiA+ID4gPiA+ICAJCQkgICBpbnRlbF9ncHVfZnJlcShy cHMsIHJwcy0+ZWZmaWNpZW50X2ZyZXEpKTsKPj4gPiA+ID4gPiAtCX0gZWxzZSBpZiAoSU5URUxf R0VOKGk5MTUpID49IDYpIHsKPj4gPiA+ID4gPiArCX0gZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5 MTUpID49IDYpIHsKPj4gPiA+ID4gPiAgCQl1MzIgcnBfc3RhdGVfbGltaXRzOwo+PiA+ID4gPiA+ ICAJCXUzMiBndF9wZXJmX3N0YXR1czsKPj4gPiA+ID4gPiAgCQl1MzIgcnBfc3RhdGVfY2FwOwo+ PiA+ID4gPiA+IEBAIC0zMjEsNyArMzIxLDcgQEAgc3RhdGljIGludCBmcmVxdWVuY3lfc2hvdyhz dHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKPj4gPiA+ID4gPiAgCQlpbnRlbF91bmNv cmVfZm9yY2V3YWtlX2dldCh1bmNvcmUsIEZPUkNFV0FLRV9BTEwpOwo+PiA+ID4gPiA+Cj4+ID4g PiA+ID4gIAkJcmVxZiA9IGludGVsX3VuY29yZV9yZWFkKHVuY29yZSwgR0VONl9SUE5TV1JFUSk7 Cj4+ID4gPiA+ID4gLQkJaWYgKElOVEVMX0dFTihpOTE1KSA+PSA5KSB7Cj4+ID4gPiA+ID4gKwkJ aWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSA5KSB7Cj4+ID4gPiA+ID4gIAkJCXJlcWYgPj49IDIz Owo+PiA+ID4gPiA+ICAJCX0gZWxzZSB7Cj4+ID4gPiA+ID4gIAkJCXJlcWYgJj0gfkdFTjZfVFVS Qk9fRElTQUJMRTsKPj4gPiA+ID4gPiBAQCAtMzU0LDcgKzM1NCw3IEBAIHN0YXRpYyBpbnQgZnJl cXVlbmN5X3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCj4+ID4gPiA+ID4K Pj4gPiA+ID4gPiAgCQlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dCh1bmNvcmUsIEZPUkNFV0FL RV9BTEwpOwo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gLQkJaWYgKElOVEVMX0dFTihpOTE1KSA+PSAx MSkgewo+PiA+ID4gPiA+ICsJCWlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gMTEpIHsKPj4gPiA+ ID4gPiAgCQkJcG1faWVyID0gaW50ZWxfdW5jb3JlX3JlYWQodW5jb3JlLCBHRU4xMV9HUE1fV0dC T1hQRVJGX0lOVFJfRU5BQkxFKTsKPj4gPiA+ID4gPiAgCQkJcG1faW1yID0gaW50ZWxfdW5jb3Jl X3JlYWQodW5jb3JlLCBHRU4xMV9HUE1fV0dCT1hQRVJGX0lOVFJfTUFTSyk7Cj4+ID4gPiA+ID4g IAkJCS8qCj4+ID4gPiA+ID4gQEAgLTM2Myw3ICszNjMsNyBAQCBzdGF0aWMgaW50IGZyZXF1ZW5j eV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQo+PiA+ID4gPiA+ICAJCQkg Ki8KPj4gPiA+ID4gPiAgCQkJcG1faXNyID0gMDsKPj4gPiA+ID4gPiAgCQkJcG1faWlyID0gMDsK Pj4gPiA+ID4gPiAtCQl9IGVsc2UgaWYgKElOVEVMX0dFTihpOTE1KSA+PSA4KSB7Cj4+ID4gPiA+ ID4gKwkJfSBlbHNlIGlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gOCkgewo+PiA+ID4gPiA+ICAJ CQlwbV9pZXIgPSBpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUsIEdFTjhfR1RfSUVSKDIpKTsKPj4g PiA+ID4gPiAgCQkJcG1faW1yID0gaW50ZWxfdW5jb3JlX3JlYWQodW5jb3JlLCBHRU44X0dUX0lN UigyKSk7Cj4+ID4gPiA+ID4gIAkJCXBtX2lzciA9IGludGVsX3VuY29yZV9yZWFkKHVuY29yZSwg R0VOOF9HVF9JU1IoMikpOwo+PiA+ID4gPiA+IEBAIC0zODYsMTQgKzM4NiwxNCBAQCBzdGF0aWMg aW50IGZyZXF1ZW5jeV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQo+PiA+ ID4gPiA+Cj4+ID4gPiA+ID4gIAkJc2VxX3ByaW50ZihtLCAiUE0gSUVSPTB4JTA4eCBJTVI9MHgl MDh4LCBNQVNLPTB4JTA4eFxuIiwKPj4gPiA+ID4gPiAgCQkJICAgcG1faWVyLCBwbV9pbXIsIHBt X21hc2spOwo+PiA+ID4gPiA+IC0JCWlmIChJTlRFTF9HRU4oaTkxNSkgPD0gMTApCj4+ID4gPiA+ ID4gKwkJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA8PSAxMCkKPj4gPiA+ID4gPiAgCQkJc2VxX3By aW50ZihtLCAiUE0gSVNSPTB4JTA4eCBJSVI9MHglMDh4XG4iLAo+PiA+ID4gPiA+ICAJCQkJICAg cG1faXNyLCBwbV9paXIpOwo+PiA+ID4gPiA+ICAJCXNlcV9wcmludGYobSwgInBtX2ludHJtc2tf bWJ6OiAweCUwOHhcbiIsCj4+ID4gPiA+ID4gIAkJCSAgIHJwcy0+cG1faW50cm1za19tYnopOwo+ PiA+ID4gPiA+ICAJCXNlcV9wcmludGYobSwgIkdUX1BFUkZfU1RBVFVTOiAweCUwOHhcbiIsIGd0 X3BlcmZfc3RhdHVzKTsKPj4gPiA+ID4gPiAgCQlzZXFfcHJpbnRmKG0sICJSZW5kZXIgcC1zdGF0 ZSByYXRpbzogJWRcbiIsCj4+ID4gPiA+ID4gLQkJCSAgIChndF9wZXJmX3N0YXR1cyAmIChJTlRF TF9HRU4oaTkxNSkgPj0gOSA/IDB4MWZmMDAgOiAweGZmMDApKSA+PiA4KTsKPj4gPiA+ID4gPiAr CQkJICAgKGd0X3BlcmZfc3RhdHVzICYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSA5ID8gMHgxZmYw MCA6IDB4ZmYwMCkpID4+IDgpOwo+PiA+ID4gPiA+ICAJCXNlcV9wcmludGYobSwgIlJlbmRlciBw LXN0YXRlIFZJRDogJWRcbiIsCj4+ID4gPiA+ID4gIAkJCSAgIGd0X3BlcmZfc3RhdHVzICYgMHhm Zik7Cj4+ID4gPiA+ID4gIAkJc2VxX3ByaW50ZihtLCAiUmVuZGVyIHAtc3RhdGUgbGltaXQ6ICVk XG4iLAo+PiA+ID4gPiA+IEBAIC00MzcsMjAgKzQzNywyMCBAQCBzdGF0aWMgaW50IGZyZXF1ZW5j eV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQo+PiA+ID4gPiA+ICAJCW1h eF9mcmVxID0gKElTX0dFTjlfTFAoaTkxNSkgPyBycF9zdGF0ZV9jYXAgPj4gMCA6Cj4+ID4gPiA+ ID4gIAkJCSAgICBycF9zdGF0ZV9jYXAgPj4gMTYpICYgMHhmZjsKPj4gPiA+ID4gPiAgCQltYXhf ZnJlcSAqPSAoSVNfR0VOOV9CQyhpOTE1KSB8fAo+PiA+ID4gPiA+IC0JCQkgICAgIElOVEVMX0dF TihpOTE1KSA+PSAxMCA/IEdFTjlfRlJFUV9TQ0FMRVIgOiAxKTsKPj4gPiA+ID4gPiArCQkJICAg ICBHUkFQSElDU19WRVIoaTkxNSkgPj0gMTAgPyBHRU45X0ZSRVFfU0NBTEVSIDogMSk7Cj4+ID4g PiA+ID4gIAkJc2VxX3ByaW50ZihtLCAiTG93ZXN0IChSUE4pIGZyZXF1ZW5jeTogJWRNSHpcbiIs Cj4+ID4gPiA+ID4gIAkJCSAgIGludGVsX2dwdV9mcmVxKHJwcywgbWF4X2ZyZXEpKTsKPj4gPiA+ ID4gPgo+PiA+ID4gPiA+ICAJCW1heF9mcmVxID0gKHJwX3N0YXRlX2NhcCAmIDB4ZmYwMCkgPj4g ODsKPj4gPiA+ID4gPiAgCQltYXhfZnJlcSAqPSAoSVNfR0VOOV9CQyhpOTE1KSB8fAo+PiA+ID4g PiA+IC0JCQkgICAgIElOVEVMX0dFTihpOTE1KSA+PSAxMCA/IEdFTjlfRlJFUV9TQ0FMRVIgOiAx KTsKPj4gPiA+ID4gPiArCQkJICAgICBHUkFQSElDU19WRVIoaTkxNSkgPj0gMTAgPyBHRU45X0ZS RVFfU0NBTEVSIDogMSk7Cj4+ID4gPiA+ID4gIAkJc2VxX3ByaW50ZihtLCAiTm9taW5hbCAoUlAx KSBmcmVxdWVuY3k6ICVkTUh6XG4iLAo+PiA+ID4gPiA+ICAJCQkgICBpbnRlbF9ncHVfZnJlcShy cHMsIG1heF9mcmVxKSk7Cj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAgCQltYXhfZnJlcSA9IChJU19H RU45X0xQKGk5MTUpID8gcnBfc3RhdGVfY2FwID4+IDE2IDoKPj4gPiA+ID4gPiAgCQkJICAgIHJw X3N0YXRlX2NhcCA+PiAwKSAmIDB4ZmY7Cj4+ID4gPiA+ID4gIAkJbWF4X2ZyZXEgKj0gKElTX0dF TjlfQkMoaTkxNSkgfHwKPj4gPiA+ID4gPiAtCQkJICAgICBJTlRFTF9HRU4oaTkxNSkgPj0gMTAg PyBHRU45X0ZSRVFfU0NBTEVSIDogMSk7Cj4+ID4gPiA+ID4gKwkJCSAgICAgR1JBUEhJQ1NfVkVS KGk5MTUpID49IDEwID8gR0VOOV9GUkVRX1NDQUxFUiA6IDEpOwo+PiA+ID4gPiA+ICAJCXNlcV9w cmludGYobSwgIk1heCBub24tb3ZlcmNsb2NrZWQgKFJQMCkgZnJlcXVlbmN5OiAlZE1IelxuIiwK Pj4gPiA+ID4gPiAgCQkJICAgaW50ZWxfZ3B1X2ZyZXEocnBzLCBtYXhfZnJlcSkpOwo+PiA+ID4g PiA+ICAJCXNlcV9wcmludGYobSwgIk1heCBvdmVyY2xvY2tlZCBmcmVxdWVuY3k6ICVkTUh6XG4i LAo+PiA+ID4gPiA+IEBAIC00ODgsNyArNDg4LDcgQEAgc3RhdGljIGludCBsbGNfc2hvdyhzdHJ1 Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCj4+ID4gPiA+ID4gIHsKPj4gPiA+ID4gPiAgCXN0 cnVjdCBpbnRlbF9ndCAqZ3QgPSBtLT5wcml2YXRlOwo+PiA+ID4gPiA+ICAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUgPSBndC0+aTkxNTsKPj4gPiA+ID4gPiAtCWNvbnN0IGJvb2wgZWRy YW0gPSBJTlRFTF9HRU4oaTkxNSkgPiA4Owo+PiA+ID4gPiA+ICsJY29uc3QgYm9vbCBlZHJhbSA9 IEdSQVBISUNTX1ZFUihpOTE1KSA+IDg7Cj4+ID4gPiA+ID4gIAlzdHJ1Y3QgaW50ZWxfcnBzICpy cHMgPSAmZ3QtPnJwczsKPj4gPiA+ID4gPiAgCXVuc2lnbmVkIGludCBtYXhfZ3B1X2ZyZXEsIG1p bl9ncHVfZnJlcTsKPj4gPiA+ID4gPiAgCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+PiA+ID4g PiA+IEBAIC01MDAsNyArNTAwLDcgQEAgc3RhdGljIGludCBsbGNfc2hvdyhzdHJ1Y3Qgc2VxX2Zp bGUgKm0sIHZvaWQgKmRhdGEpCj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAgCW1pbl9ncHVfZnJlcSA9 IHJwcy0+bWluX2ZyZXE7Cj4+ID4gPiA+ID4gIAltYXhfZ3B1X2ZyZXEgPSBycHMtPm1heF9mcmVx Owo+PiA+ID4gPiA+IC0JaWYgKElTX0dFTjlfQkMoaTkxNSkgfHwgSU5URUxfR0VOKGk5MTUpID49 IDEwKSB7Cj4+ID4gPiA+ID4gKwlpZiAoSVNfR0VOOV9CQyhpOTE1KSB8fCBHUkFQSElDU19WRVIo aTkxNSkgPj0gMTApIHsKPj4gPiA+ID4gPiAgCQkvKiBDb252ZXJ0IEdUIGZyZXF1ZW5jeSB0byA1 MCBIWiB1bml0cyAqLwo+PiA+ID4gPiA+ICAJCW1pbl9ncHVfZnJlcSAvPSBHRU45X0ZSRVFfU0NB TEVSOwo+PiA+ID4gPiA+ICAJCW1heF9ncHVfZnJlcSAvPSBHRU45X0ZSRVFfU0NBTEVSOwo+PiA+ ID4gPiA+IEBAIC01MTgsNyArNTE4LDcgQEAgc3RhdGljIGludCBsbGNfc2hvdyhzdHJ1Y3Qgc2Vx X2ZpbGUgKm0sIHZvaWQgKmRhdGEpCj4+ID4gPiA+ID4gIAkJCSAgIGludGVsX2dwdV9mcmVxKHJw cywKPj4gPiA+ID4gPiAgCQkJCQkgIChncHVfZnJlcSAqCj4+ID4gPiA+ID4gIAkJCQkJICAgKElT X0dFTjlfQkMoaTkxNSkgfHwKPj4gPiA+ID4gPiAtCQkJCQkgICAgSU5URUxfR0VOKGk5MTUpID49 IDEwID8KPj4gPiA+ID4gPiArCQkJCQkgICAgR1JBUEhJQ1NfVkVSKGk5MTUpID49IDEwID8KPj4g PiA+ID4gPiAgCQkJCQkgICAgR0VOOV9GUkVRX1NDQUxFUiA6IDEpKSksCj4+ID4gPiA+ID4gIAkJ CSAgICgoaWFfZnJlcSA+PiAwKSAmIDB4ZmYpICogMTAwLAo+PiA+ID4gPiA+ICAJCQkgICAoKGlh X2ZyZXEgPj4gOCkgJiAweGZmKSAqIDEwMCk7Cj4+ID4gPiA+ID4gQEAgLTU4MCw3ICs1ODAsNyBA QCBzdGF0aWMgaW50IHJwc19ib29zdF9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0 YSkKPj4gPiA+ID4gPgo+PiA+ID4gPiA+ICAJc2VxX3ByaW50ZihtLCAiV2FpdCBib29zdHM6ICVk XG4iLCBSRUFEX09OQ0UocnBzLT5ib29zdHMpKTsKPj4gPiA+ID4gPgo+PiA+ID4gPiA+IC0JaWYg KElOVEVMX0dFTihpOTE1KSA+PSA2ICYmIGludGVsX3Jwc19pc19hY3RpdmUocnBzKSkgewo+PiA+ ID4gPiA+ICsJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSA2ICYmIGludGVsX3Jwc19pc19hY3Rp dmUocnBzKSkgewo+PiA+ID4gPiA+ICAJCXN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSA9IGd0 LT51bmNvcmU7Cj4+ID4gPiA+ID4gIAkJdTMyIHJwdXAsIHJwdXBlaTsKPj4gPiA+ID4gPiAgCQl1 MzIgcnBkb3duLCBycGRvd25laTsKPj4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvZ2VuMl9lbmdpbmVfY3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2dl bjJfZW5naW5lX2NzLmMKPj4gPiA+ID4gPiBpbmRleCA5NjQ2MjAwZDI3OTIuLjYxMzgzODMwNTA1 ZSAxMDA2NDQKPj4gPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9nZW4yX2Vu Z2luZV9jcy5jCj4+ID4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvZ2VuMl9l bmdpbmVfY3MuYwo+PiA+ID4gPiA+IEBAIC03NCw3ICs3NCw3IEBAIGludCBnZW40X2VtaXRfZmx1 c2hfcmNzKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCB1MzIgbW9kZSkKPj4gPiA+ID4gPiAgCWNt ZCA9IE1JX0ZMVVNIOwo+PiA+ID4gPiA+ICAJaWYgKG1vZGUgJiBFTUlUX0lOVkFMSURBVEUpIHsK Pj4gPiA+ID4gPiAgCQljbWQgfD0gTUlfRVhFX0ZMVVNIOwo+PiA+ID4gPiA+IC0JCWlmIChJU19H NFgocnEtPmVuZ2luZS0+aTkxNSkgfHwgSVNfR0VOKHJxLT5lbmdpbmUtPmk5MTUsIDUpKQo+PiA+ ID4gPiA+ICsJCWlmIChJU19HNFgocnEtPmVuZ2luZS0+aTkxNSkgfHwgR1JBUEhJQ1NfVkVSKHJx LT5lbmdpbmUtPmk5MTUpID09IDUpCj4+ID4gPiA+ID4gIAkJCWNtZCB8PSBNSV9JTlZBTElEQVRF X0lTUDsKPj4gPiA+ID4gPiAgCX0KPj4gPiA+ID4gPgo+PiA+ID4gPiA+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9nZW44X2VuZ2luZV9jcy5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvZ2VuOF9lbmdpbmVfY3MuYwo+PiA+ID4gPiA+IGluZGV4IDczMmMyZWQxZDkzMy4u OTRlMGE1NjY5ZjkwIDEwMDY0NAo+PiA+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L2dlbjhfZW5naW5lX2NzLmMKPj4gPiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9nZW44X2VuZ2luZV9jcy5jCj4+ID4gPiA+ID4gQEAgLTM4LDcgKzM4LDcgQEAgaW50IGdl bjhfZW1pdF9mbHVzaF9yY3Moc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsIHUzMiBtb2RlKQo+PiA+ ID4gPiA+ICAJCSAqIE9uIEdFTjk6IGJlZm9yZSBWRl9DQUNIRV9JTlZBTElEQVRFIHdlIG5lZWQg dG8gZW1pdCBhIE5VTEwKPj4gPiA+ID4gPiAgCQkgKiBwaXBlIGNvbnRyb2wuCj4+ID4gPiA+ID4g IAkJICovCj4+ID4gPiA+ID4gLQkJaWYgKElTX0dFTihycS0+ZW5naW5lLT5pOTE1LCA5KSkKPj4g PiA+ID4gPiArCQlpZiAoR1JBUEhJQ1NfVkVSKHJxLT5lbmdpbmUtPmk5MTUpID09IDkpCj4+ID4g PiA+ID4gIAkJCXZmX2ZsdXNoX3dhID0gdHJ1ZTsKPj4gPiA+ID4gPgo+PiA+ID4gPiA+ICAJCS8q IFdhRm9yR0FNSGFuZzprYmwgKi8KPj4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvZ2VuOF9wcGd0dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvZ2VuOF9w cGd0dC5jCj4+ID4gPiA+ID4gaW5kZXggZTNhODkyNGQyMjg2Li4yMWM4YjczNTBiN2EgMTAwNjQ0 Cj4+ID4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvZ2VuOF9wcGd0dC5jCj4+ ID4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvZ2VuOF9wcGd0dC5jCj4+ID4g PiA+ID4gQEAgLTcwOSw3ICs3MDksNyBAQCBzdHJ1Y3QgaTkxNV9wcGd0dCAqZ2VuOF9wcGd0dF9j cmVhdGUoc3RydWN0IGludGVsX2d0ICpndCkKPj4gPiA+ID4gPiAgCSAqCj4+ID4gPiA+ID4gIAkg KiBHZW4xMiBoYXMgaW5oZXJpdGVkIHRoZSBzYW1lIHJlYWQtb25seSBmYXVsdCBpc3N1ZSBmcm9t IGdlbjExLgo+PiA+ID4gPiA+ICAJICovCj4+ID4gPiA+ID4gLQlwcGd0dC0+dm0uaGFzX3JlYWRf b25seSA9ICFJU19HRU5fUkFOR0UoZ3QtPmk5MTUsIDExLCAxMik7Cj4+ID4gPiA+ID4gKwlwcGd0 dC0+dm0uaGFzX3JlYWRfb25seSA9ICFJU19HUkFQSElDU19WRVIoZ3QtPmk5MTUsIDExLCAxMik7 Cj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAgCWlmIChIQVNfTE1FTShndC0+aTkxNSkpCj4+ID4gPiA+ ID4gIAkJcHBndHQtPnZtLmFsbG9jX3B0X2RtYSA9IGFsbG9jX3B0X2xtZW07Cj4+ID4gPiA+ID4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHRfc3NldS5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfY29udGV4dF9zc2V1LmMKPj4gPiA+ID4g PiBpbmRleCA4ZGZkOGY2NTZhYWEuLmU4NmQ4MjU1ZmVlYyAxMDA2NDQKPj4gPiA+ID4gPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0X3NzZXUuYwo+PiA+ID4gPiA+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHRfc3NldS5jCj4+ID4g PiA+ID4gQEAgLTc2LDcgKzc2LDcgQEAgaW50ZWxfY29udGV4dF9yZWNvbmZpZ3VyZV9zc2V1KHN0 cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwKPj4gPiA+ID4gPiAgewo+PiA+ID4gPiA+ICAJaW50IHJl dDsKPj4gPiA+ID4gPgo+PiA+ID4gPiA+IC0JR0VNX0JVR19PTihJTlRFTF9HRU4oY2UtPmVuZ2lu ZS0+aTkxNSkgPCA4KTsKPj4gPiA+ID4gPiArCUdFTV9CVUdfT04oR1JBUEhJQ1NfVkVSKGNlLT5l bmdpbmUtPmk5MTUpIDwgOCk7Cj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAgCXJldCA9IGludGVsX2Nv bnRleHRfbG9ja19waW5uZWQoY2UpOwo+PiA+ID4gPiA+ICAJaWYgKHJldCkKPj4gPiA+ID4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYwo+PiA+ID4gPiA+IGluZGV4 IDNmOWE4MTFlYjAyYi4uNTRiYWYxN2I4MWI2IDEwMDY0NAo+PiA+ID4gPiA+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jCj4+ID4gPiA+ID4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMKPj4gPiA+ID4gPiBAQCAtMjQw LDEwICsyNDAsMTAgQEAgdm9pZCBpbnRlbF9lbmdpbmVfc2V0X2h3c3Bfd3JpdGVtYXNrKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgdTMyIG1hc2spCj4+ID4gPiA+ID4gIAkgKiBUaG91 Z2ggdGhleSBhZGRlZCBtb3JlIHJpbmdzIG9uIGc0eC9pbGssIHRoZXkgZGlkIG5vdCBhZGQKPj4g PiA+ID4gPiAgCSAqIHBlci1lbmdpbmUgSFdTVEFNIHVudGlsIGdlbjYuCj4+ID4gPiA+ID4gIAkg Ki8KPj4gPiA+ID4gPiAtCWlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA8IDYgJiYgZW5naW5l LT5jbGFzcyAhPSBSRU5ERVJfQ0xBU1MpCj4+ID4gPiA+ID4gKwlpZiAoR1JBUEhJQ1NfVkVSKGVu Z2luZS0+aTkxNSkgPCA2ICYmIGVuZ2luZS0+Y2xhc3MgIT0gUkVOREVSX0NMQVNTKQo+PiA+ID4g PiA+ICAJCXJldHVybjsKPj4gPiA+ID4gPgo+PiA+ID4gPiA+IC0JaWYgKElOVEVMX0dFTihlbmdp bmUtPmk5MTUpID49IDMpCj4+ID4gPiA+ID4gKwlpZiAoR1JBUEhJQ1NfVkVSKGVuZ2luZS0+aTkx NSkgPj0gMykKPj4gPiA+ID4gPiAgCQlFTkdJTkVfV1JJVEUoZW5naW5lLCBSSU5HX0hXU1RBTSwg bWFzayk7Cj4+ID4gPiA+ID4gIAllbHNlCj4+ID4gPiA+ID4gIAkJRU5HSU5FX1dSSVRFMTYoZW5n aW5lLCBSSU5HX0hXU1RBTSwgbWFzayk7Cj4+ID4gPiA+ID4gQEAgLTMxNSw3ICszMTUsNyBAQCBz dGF0aWMgaW50IGludGVsX2VuZ2luZV9zZXR1cChzdHJ1Y3QgaW50ZWxfZ3QgKmd0LCBlbnVtIGlu dGVsX2VuZ2luZV9pZCBpZCkKPj4gPiA+ID4gPiAgCQlDT05GSUdfRFJNX0k5MTVfVElNRVNMSUNF X0RVUkFUSU9OOwo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gIAkvKiBPdmVycmlkZSB0byB1bmludGVy cnVwdGlibGUgZm9yIE9wZW5DTCB3b3JrbG9hZHMuICovCj4+ID4gPiA+ID4gLQlpZiAoSU5URUxf R0VOKGk5MTUpID09IDEyICYmIGVuZ2luZS0+Y2xhc3MgPT0gUkVOREVSX0NMQVNTKQo+PiA+ID4g PiA+ICsJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA9PSAxMiAmJiBlbmdpbmUtPmNsYXNzID09IFJF TkRFUl9DTEFTUykKPj4gPiA+ID4gPiAgCQllbmdpbmUtPnByb3BzLnByZWVtcHRfdGltZW91dF9t cyA9IDA7Cj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAgCWVuZ2luZS0+ZGVmYXVsdHMgPSBlbmdpbmUt PnByb3BzOyAvKiBuZXZlciB0byBjaGFuZ2UgYWdhaW4gKi8KPj4gPiA+ID4gPiBAQCAtMzUyLDgg KzM1Miw4IEBAIHN0YXRpYyB2b2lkIF9fc2V0dXBfZW5naW5lX2NhcGFiaWxpdGllcyhzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4+ID4gPiA+ID4gIAkJICogSEVWQyBzdXBwb3J0IGlz IHByZXNlbnQgb24gZmlyc3QgZW5naW5lIGluc3RhbmNlCj4+ID4gPiA+ID4gIAkJICogYmVmb3Jl IEdlbjExIGFuZCBvbiBhbGwgaW5zdGFuY2VzIGFmdGVyd2FyZHMuCj4+ID4gPiA+ID4gIAkJICov Cj4+ID4gPiA+ID4gLQkJaWYgKElOVEVMX0dFTihpOTE1KSA+PSAxMSB8fAo+PiA+ID4gPiA+IC0J CSAgICAoSU5URUxfR0VOKGk5MTUpID49IDkgJiYgZW5naW5lLT5pbnN0YW5jZSA9PSAwKSkKPj4g PiA+ID4gPiArCQlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDExIHx8Cj4+ID4gPiA+ID4gKwkJ ICAgIChHUkFQSElDU19WRVIoaTkxNSkgPj0gOSAmJiBlbmdpbmUtPmluc3RhbmNlID09IDApKQo+ PiA+ID4gPiA+ICAJCQllbmdpbmUtPnVhYmlfY2FwYWJpbGl0aWVzIHw9Cj4+ID4gPiA+ID4gIAkJ CQlJOTE1X1ZJREVPX0NMQVNTX0NBUEFCSUxJVFlfSEVWQzsKPj4gPiA+ID4gPgo+PiA+ID4gPiA+ IEBAIC0zNjEsMTQgKzM2MSwxNCBAQCBzdGF0aWMgdm9pZCBfX3NldHVwX2VuZ2luZV9jYXBhYmls aXRpZXMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+PiA+ID4gPiA+ICAJCSAqIFNG QyBibG9jayBpcyBwcmVzZW50IG9ubHkgb24gZXZlbiBsb2dpY2FsIGVuZ2luZQo+PiA+ID4gPiA+ ICAJCSAqIGluc3RhbmNlcy4KPj4gPiA+ID4gPiAgCQkgKi8KPj4gPiA+ID4gPiAtCQlpZiAoKElO VEVMX0dFTihpOTE1KSA+PSAxMSAmJgo+PiA+ID4gPiA+ICsJCWlmICgoR1JBUEhJQ1NfVkVSKGk5 MTUpID49IDExICYmCj4+ID4gPiA+ID4gIAkJICAgICAoZW5naW5lLT5ndC0+aW5mby52ZGJveF9z ZmNfYWNjZXNzICYKPj4gPiA+ID4gPiAgCQkgICAgICBCSVQoZW5naW5lLT5pbnN0YW5jZSkpKSB8 fAo+PiA+ID4gPiA+IC0JCSAgICAoSU5URUxfR0VOKGk5MTUpID49IDkgJiYgZW5naW5lLT5pbnN0 YW5jZSA9PSAwKSkKPj4gPiA+ID4gPiArCQkgICAgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSA5ICYm IGVuZ2luZS0+aW5zdGFuY2UgPT0gMCkpCj4+ID4gPiA+ID4gIAkJCWVuZ2luZS0+dWFiaV9jYXBh YmlsaXRpZXMgfD0KPj4gPiA+ID4gPiAgCQkJCUk5MTVfVklERU9fQU5EX0VOSEFOQ0VfQ0xBU1Nf Q0FQQUJJTElUWV9TRkM7Cj4+ID4gPiA+ID4gIAl9IGVsc2UgaWYgKGVuZ2luZS0+Y2xhc3MgPT0g VklERU9fRU5IQU5DRU1FTlRfQ0xBU1MpIHsKPj4gPiA+ID4gPiAtCQlpZiAoSU5URUxfR0VOKGk5 MTUpID49IDkpCj4+ID4gPiA+ID4gKwkJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSA5KQo+PiA+ ID4gPiA+ICAJCQllbmdpbmUtPnVhYmlfY2FwYWJpbGl0aWVzIHw9Cj4+ID4gPiA+ID4gIAkJCQlJ OTE1X1ZJREVPX0FORF9FTkhBTkNFX0NMQVNTX0NBUEFCSUxJVFlfU0ZDOwo+PiA+ID4gPiA+ICAJ fQo+PiA+ID4gPiA+IEBAIC00NjYsNyArNDY2LDcgQEAgc3RhdGljIGludGVsX2VuZ2luZV9tYXNr X3QgaW5pdF9lbmdpbmVfbWFzayhzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQo+PiA+ID4gPiA+Cj4+ID4g PiA+ID4gIAlpbmZvLT5lbmdpbmVfbWFzayA9IElOVEVMX0lORk8oaTkxNSktPnBsYXRmb3JtX2Vu Z2luZV9tYXNrOwo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gLQlpZiAoSU5URUxfR0VOKGk5MTUpIDwg MTEpCj4+ID4gPiA+ID4gKwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpIDwgMTEpCj4+ID4gPiA+ID4g IAkJcmV0dXJuIGluZm8tPmVuZ2luZV9tYXNrOwo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gIAltZWRp YV9mdXNlID0gfmludGVsX3VuY29yZV9yZWFkKHVuY29yZSwgR0VOMTFfR1RfVkVCT1hfVkRCT1hf RElTQUJMRSk7Cj4+ID4gPiA+ID4gQEAgLTQ5Miw3ICs0OTIsNyBAQCBzdGF0aWMgaW50ZWxfZW5n aW5lX21hc2tfdCBpbml0X2VuZ2luZV9tYXNrKHN0cnVjdCBpbnRlbF9ndCAqZ3QpCj4+ID4gPiA+ ID4gIAkJICogaG9va2VkIHVwIHRvIGFuIFNGQyAoU2NhbGVyICYgRm9ybWF0IENvbnZlcnRlcikg dW5pdC4KPj4gPiA+ID4gPiAgCQkgKiBJbiBUR0wgZWFjaCBWREJPWCBoYXMgYWNjZXNzIHRvIGFu IFNGQy4KPj4gPiA+ID4gPiAgCQkgKi8KPj4gPiA+ID4gPiAtCQlpZiAoSU5URUxfR0VOKGk5MTUp ID49IDEyIHx8IGxvZ2ljYWxfdmRib3grKyAlIDIgPT0gMCkKPj4gPiA+ID4gPiArCQlpZiAoR1JB UEhJQ1NfVkVSKGk5MTUpID49IDEyIHx8IGxvZ2ljYWxfdmRib3grKyAlIDIgPT0gMCkKPj4gPiA+ ID4gPiAgCQkJZ3QtPmluZm8udmRib3hfc2ZjX2FjY2VzcyB8PSBCSVQoaSk7Cj4+ID4gPiA+ID4g IAl9Cj4+ID4gPiA+ID4gIAlkcm1fZGJnKCZpOTE1LT5kcm0sICJ2ZGJveCBlbmFibGU6ICUwNHgs IGluc3RhbmNlczogJTA0bHhcbiIsCj4+ID4gPiA+ID4gQEAgLTcyOSw3ICs3MjksNyBAQCBzdGF0 aWMgaW50IGVuZ2luZV9zZXR1cF9jb21tb24oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l KQo+PiA+ID4gPiA+ICAJaW50ZWxfZW5naW5lX2luaXRfd2hpdGVsaXN0KGVuZ2luZSk7Cj4+ID4g PiA+ID4gIAlpbnRlbF9lbmdpbmVfaW5pdF9jdHhfd2EoZW5naW5lKTsKPj4gPiA+ID4gPgo+PiA+ ID4gPiA+IC0JaWYgKElOVEVMX0dFTihlbmdpbmUtPmk5MTUpID49IDEyKQo+PiA+ID4gPiA+ICsJ aWYgKEdSQVBISUNTX1ZFUihlbmdpbmUtPmk5MTUpID49IDEyKQo+PiA+ID4gPiA+ICAJCWVuZ2lu ZS0+ZmxhZ3MgfD0gSTkxNV9FTkdJTkVfSEFTX1JFTEFUSVZFX01NSU87Cj4+ID4gPiA+ID4KPj4g PiA+ID4gPiAgCXJldHVybiAwOwo+PiA+ID4gPiA+IEBAIC05OTcsOSArOTk3LDkgQEAgdTY0IGlu dGVsX2VuZ2luZV9nZXRfYWN0aXZlX2hlYWQoY29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKQo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gIAl1NjQgYWN0aGQ7Cj4+ID4gPiA+ID4KPj4g PiA+ID4gPiAtCWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gOCkKPj4gPiA+ID4gPiArCWlmIChHUkFQ SElDU19WRVIoaTkxNSkgPj0gOCkKPj4gPiA+ID4gPiAgCQlhY3RoZCA9IEVOR0lORV9SRUFENjQo ZW5naW5lLCBSSU5HX0FDVEhELCBSSU5HX0FDVEhEX1VEVyk7Cj4+ID4gPiA+ID4gLQllbHNlIGlm IChJTlRFTF9HRU4oaTkxNSkgPj0gNCkKPj4gPiA+ID4gPiArCWVsc2UgaWYgKEdSQVBISUNTX1ZF UihpOTE1KSA+PSA0KQo+PiA+ID4gPiA+ICAJCWFjdGhkID0gRU5HSU5FX1JFQUQoZW5naW5lLCBS SU5HX0FDVEhEKTsKPj4gPiA+ID4gPiAgCWVsc2UKPj4gPiA+ID4gPiAgCQlhY3RoZCA9IEVOR0lO RV9SRUFEKGVuZ2luZSwgQUNUSEQpOwo+PiA+ID4gPiA+IEBAIC0xMDExLDcgKzEwMTEsNyBAQCB1 NjQgaW50ZWxfZW5naW5lX2dldF9sYXN0X2JhdGNoX2hlYWQoY29uc3Qgc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKQo+PiA+ID4gPiA+ICB7Cj4+ID4gPiA+ID4gIAl1NjQgYmJhZGRyOwo+ PiA+ID4gPiA+Cj4+ID4gPiA+ID4gLQlpZiAoSU5URUxfR0VOKGVuZ2luZS0+aTkxNSkgPj0gOCkK Pj4gPiA+ID4gPiArCWlmIChHUkFQSElDU19WRVIoZW5naW5lLT5pOTE1KSA+PSA4KQo+PiA+ID4g PiA+ICAJCWJiYWRkciA9IEVOR0lORV9SRUFENjQoZW5naW5lLCBSSU5HX0JCQUREUiwgUklOR19C QkFERFJfVURXKTsKPj4gPiA+ID4gPiAgCWVsc2UKPj4gPiA+ID4gPiAgCQliYmFkZHIgPSBFTkdJ TkVfUkVBRChlbmdpbmUsIFJJTkdfQkJBRERSKTsKPj4gPiA+ID4gPiBAQCAtMTA1OCw3ICsxMDU4 LDcgQEAgaW50IGludGVsX2VuZ2luZV9zdG9wX2NzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKPj4gPiA+ID4gPiAgewo+PiA+ID4gPiA+ICAJaW50IGVyciA9IDA7Cj4+ID4gPiA+ID4K Pj4gPiA+ID4gPiAtCWlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA8IDMpCj4+ID4gPiA+ID4g KwlpZiAoR1JBUEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkgPCAzKQo+PiA+ID4gPiA+ICAJCXJldHVy biAtRU5PREVWOwo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gIAlFTkdJTkVfVFJBQ0UoZW5naW5lLCAi XG4iKTsKPj4gPiA+ID4gPiBAQCAtMTEwOCw3ICsxMTA4LDcgQEAgcmVhZF9zdWJzbGljZV9yZWco Y29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+PiA+ID4gPiA+ICAJdTMyIG1j cl9tYXNrLCBtY3Jfc3MsIG1jciwgb2xkX21jciwgdmFsOwo+PiA+ID4gPiA+ICAJZW51bSBmb3Jj ZXdha2VfZG9tYWlucyBmd19kb21haW5zOwo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gLQlpZiAoSU5U RUxfR0VOKGk5MTUpID49IDExKSB7Cj4+ID4gPiA+ID4gKwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUp ID49IDExKSB7Cj4+ID4gPiA+ID4gIAkJbWNyX21hc2sgPSBHRU4xMV9NQ1JfU0xJQ0VfTUFTSyB8 IEdFTjExX01DUl9TVUJTTElDRV9NQVNLOwo+PiA+ID4gPiA+ICAJCW1jcl9zcyA9IEdFTjExX01D Ul9TTElDRShzbGljZSkgfCBHRU4xMV9NQ1JfU1VCU0xJQ0Uoc3Vic2xpY2UpOwo+PiA+ID4gPiA+ ICAJfSBlbHNlIHsKPj4gPiA+ID4gPiBAQCAtMTE1Nyw3ICsxMTU3LDcgQEAgdm9pZCBpbnRlbF9l bmdpbmVfZ2V0X2luc3Rkb25lKGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwK Pj4gPiA+ID4gPgo+PiA+ID4gPiA+ICAJbWVtc2V0KGluc3Rkb25lLCAwLCBzaXplb2YoKmluc3Rk b25lKSk7Cj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAtCXN3aXRjaCAoSU5URUxfR0VOKGk5MTUpKSB7 Cj4+ID4gPiA+ID4gKwlzd2l0Y2ggKEdSQVBISUNTX1ZFUihpOTE1KSkgewo+PiA+ID4gPiA+ICAJ ZGVmYXVsdDoKPj4gPiA+ID4gPiAgCQlpbnN0ZG9uZS0+aW5zdGRvbmUgPQo+PiA+ID4gPiA+ICAJ CQlpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUsIFJJTkdfSU5TVERPTkUobW1pb19iYXNlKSk7Cj4+ ID4gPiA+ID4gQEAgLTExNjcsNyArMTE2Nyw3IEBAIHZvaWQgaW50ZWxfZW5naW5lX2dldF9pbnN0 ZG9uZShjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4+ID4gPiA+ID4KPj4g PiA+ID4gPiAgCQlpbnN0ZG9uZS0+c2xpY2VfY29tbW9uID0KPj4gPiA+ID4gPiAgCQkJaW50ZWxf dW5jb3JlX3JlYWQodW5jb3JlLCBHRU43X1NDX0lOU1RET05FKTsKPj4gPiA+ID4gPiAtCQlpZiAo SU5URUxfR0VOKGk5MTUpID49IDEyKSB7Cj4+ID4gPiA+ID4gKwkJaWYgKEdSQVBISUNTX1ZFUihp OTE1KSA+PSAxMikgewo+PiA+ID4gPiA+ICAJCQlpbnN0ZG9uZS0+c2xpY2VfY29tbW9uX2V4dHJh WzBdID0KPj4gPiA+ID4gPiAgCQkJCWludGVsX3VuY29yZV9yZWFkKHVuY29yZSwgR0VOMTJfU0Nf SU5TVERPTkVfRVhUUkEpOwo+PiA+ID4gPiA+ICAJCQlpbnN0ZG9uZS0+c2xpY2VfY29tbW9uX2V4 dHJhWzFdID0KPj4gPiA+ID4gPiBAQCAtMTIzMCw3ICsxMjMwLDcgQEAgc3RhdGljIGJvb2wgcmlu Z19pc19pZGxlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPj4gPiA+ID4gPiAgCQlp ZGxlID0gZmFsc2U7Cj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAgCS8qIE5vIGJpdCBmb3IgZ2VuMiwg c28gYXNzdW1lIHRoZSBDUyBwYXJzZXIgaXMgaWRsZSAqLwo+PiA+ID4gPiA+IC0JaWYgKElOVEVM X0dFTihlbmdpbmUtPmk5MTUpID4gMiAmJgo+PiA+ID4gPiA+ICsJaWYgKEdSQVBISUNTX1ZFUihl bmdpbmUtPmk5MTUpID4gMiAmJgo+PiA+ID4gPiA+ICAJICAgICEoRU5HSU5FX1JFQUQoZW5naW5l LCBSSU5HX01JX01PREUpICYgTU9ERV9JRExFKSkKPj4gPiA+ID4gPiAgCQlpZGxlID0gZmFsc2U7 Cj4+ID4gPiA+ID4KPj4gPiA+ID4gPiBAQCAtMTMyNyw3ICsxMzI3LDcgQEAgdm9pZCBpbnRlbF9l bmdpbmVzX3Jlc2V0X2RlZmF1bHRfc3VibWlzc2lvbihzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQo+PiA+ ID4gPiA+Cj4+ID4gPiA+ID4gIGJvb2wgaW50ZWxfZW5naW5lX2Nhbl9zdG9yZV9kd29yZChzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4+ID4gPiA+ID4gIHsKPj4gPiA+ID4gPiAtCXN3 aXRjaCAoSU5URUxfR0VOKGVuZ2luZS0+aTkxNSkpIHsKPj4gPiA+ID4gPiArCXN3aXRjaCAoR1JB UEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkpIHsKPj4gPiA+ID4gPiAgCWNhc2UgMjoKPj4gPiA+ID4g PiAgCQlyZXR1cm4gZmFsc2U7IC8qIHVzZXMgcGh5c2ljYWwgbm90IHZpcnR1YWwgYWRkcmVzc2Vz ICovCj4+ID4gPiA+ID4gIAljYXNlIDM6Cj4+ID4gPiA+ID4gQEAgLTE0MzIsNyArMTQzMiw3IEBA IHN0YXRpYyB2b2lkIGludGVsX2VuZ2luZV9wcmludF9yZWdpc3RlcnMoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lLAo+PiA+ID4gPiA+ICAJc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlz dHMgKiBjb25zdCBleGVjbGlzdHMgPSAmZW5naW5lLT5leGVjbGlzdHM7Cj4+ID4gPiA+ID4gIAl1 NjQgYWRkcjsKPj4gPiA+ID4gPgo+PiA+ID4gPiA+IC0JaWYgKGVuZ2luZS0+aWQgPT0gUkVOREVS X0NMQVNTICYmIElTX0dFTl9SQU5HRShkZXZfcHJpdiwgNCwgNykpCj4+ID4gPiA+ID4gKwlpZiAo ZW5naW5lLT5pZCA9PSBSRU5ERVJfQ0xBU1MgJiYgSVNfR1JBUEhJQ1NfVkVSKGRldl9wcml2LCA0 LCA3KSkKPj4gPiA+ID4gPiAgCQlkcm1fcHJpbnRmKG0sICJcdENDSUQ6IDB4JTA4eFxuIiwgRU5H SU5FX1JFQUQoZW5naW5lLCBDQ0lEKSk7Cj4+ID4gPiA+ID4gIAlpZiAoSEFTX0VYRUNMSVNUUyhk ZXZfcHJpdikpIHsKPj4gPiA+ID4gPiAgCQlkcm1fcHJpbnRmKG0sICJcdEVMX1NUQVRfSEk6IDB4 JTA4eFxuIiwKPj4gPiA+ID4gPiBAQCAtMTQ0OSwxMyArMTQ0OSwxMyBAQCBzdGF0aWMgdm9pZCBp bnRlbF9lbmdpbmVfcHJpbnRfcmVnaXN0ZXJzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSwKPj4gPiA+ID4gPiAgCWRybV9wcmludGYobSwgIlx0UklOR19DVEw6ICAgMHglMDh4JXNcbiIs Cj4+ID4gPiA+ID4gIAkJICAgRU5HSU5FX1JFQUQoZW5naW5lLCBSSU5HX0NUTCksCj4+ID4gPiA+ ID4gIAkJICAgRU5HSU5FX1JFQUQoZW5naW5lLCBSSU5HX0NUTCkgJiAoUklOR19XQUlUIHwgUklO R19XQUlUX1NFTUFQSE9SRSkgPyAiIFt3YWl0aW5nXSIgOiAiIik7Cj4+ID4gPiA+ID4gLQlpZiAo SU5URUxfR0VOKGVuZ2luZS0+aTkxNSkgPiAyKSB7Cj4+ID4gPiA+ID4gKwlpZiAoR1JBUEhJQ1Nf VkVSKGVuZ2luZS0+aTkxNSkgPiAyKSB7Cj4+ID4gPiA+ID4gIAkJZHJtX3ByaW50ZihtLCAiXHRS SU5HX01PREU6ICAweCUwOHglc1xuIiwKPj4gPiA+ID4gPiAgCQkJICAgRU5HSU5FX1JFQUQoZW5n aW5lLCBSSU5HX01JX01PREUpLAo+PiA+ID4gPiA+ICAJCQkgICBFTkdJTkVfUkVBRChlbmdpbmUs IFJJTkdfTUlfTU9ERSkgJiAoTU9ERV9JRExFKSA/ICIgW2lkbGVdIiA6ICIiKTsKPj4gPiA+ID4g PiAgCX0KPj4gPiA+ID4gPgo+PiA+ID4gPiA+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0g Nikgewo+PiA+ID4gPiA+ICsJaWYgKEdSQVBISUNTX1ZFUihkZXZfcHJpdikgPj0gNikgewo+PiA+ ID4gPiA+ICAJCWRybV9wcmludGYobSwgIlx0UklOR19JTVI6ICAgMHglMDh4XG4iLAo+PiA+ID4g PiA+ICAJCQkgICBFTkdJTkVfUkVBRChlbmdpbmUsIFJJTkdfSU1SKSk7Cj4+ID4gPiA+ID4gIAkJ ZHJtX3ByaW50ZihtLCAiXHRSSU5HX0VTUjogICAweCUwOHhcbiIsCj4+ID4gPiA+ID4gQEAgLTE0 NzIsMTUgKzE0NzIsMTUgQEAgc3RhdGljIHZvaWQgaW50ZWxfZW5naW5lX3ByaW50X3JlZ2lzdGVy cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4+ID4gPiA+ID4gIAlhZGRyID0gaW50 ZWxfZW5naW5lX2dldF9sYXN0X2JhdGNoX2hlYWQoZW5naW5lKTsKPj4gPiA+ID4gPiAgCWRybV9w cmludGYobSwgIlx0QkJBRERSOiAweCUwOHhfJTA4eFxuIiwKPj4gPiA+ID4gPiAgCQkgICB1cHBl cl8zMl9iaXRzKGFkZHIpLCBsb3dlcl8zMl9iaXRzKGFkZHIpKTsKPj4gPiA+ID4gPiAtCWlmIChJ TlRFTF9HRU4oZGV2X3ByaXYpID49IDgpCj4+ID4gPiA+ID4gKwlpZiAoR1JBUEhJQ1NfVkVSKGRl dl9wcml2KSA+PSA4KQo+PiA+ID4gPiA+ICAJCWFkZHIgPSBFTkdJTkVfUkVBRDY0KGVuZ2luZSwg UklOR19ETUFfRkFERCwgUklOR19ETUFfRkFERF9VRFcpOwo+PiA+ID4gPiA+IC0JZWxzZSBpZiAo SU5URUxfR0VOKGRldl9wcml2KSA+PSA0KQo+PiA+ID4gPiA+ICsJZWxzZSBpZiAoR1JBUEhJQ1Nf VkVSKGRldl9wcml2KSA+PSA0KQo+PiA+ID4gPiA+ICAJCWFkZHIgPSBFTkdJTkVfUkVBRChlbmdp bmUsIFJJTkdfRE1BX0ZBREQpOwo+PiA+ID4gPiA+ICAJZWxzZQo+PiA+ID4gPiA+ICAJCWFkZHIg PSBFTkdJTkVfUkVBRChlbmdpbmUsIERNQV9GQUREX0k4WFgpOwo+PiA+ID4gPiA+ICAJZHJtX3By aW50ZihtLCAiXHRETUFfRkFERFI6IDB4JTA4eF8lMDh4XG4iLAo+PiA+ID4gPiA+ICAJCSAgIHVw cGVyXzMyX2JpdHMoYWRkciksIGxvd2VyXzMyX2JpdHMoYWRkcikpOwo+PiA+ID4gPiA+IC0JaWYg KElOVEVMX0dFTihkZXZfcHJpdikgPj0gNCkgewo+PiA+ID4gPiA+ICsJaWYgKEdSQVBISUNTX1ZF UihkZXZfcHJpdikgPj0gNCkgewo+PiA+ID4gPiA+ICAJCWRybV9wcmludGYobSwgIlx0SVBFSVI6 IDB4JTA4eFxuIiwKPj4gPiA+ID4gPiAgCQkJICAgRU5HSU5FX1JFQUQoZW5naW5lLCBSSU5HX0lQ RUlSKSk7Cj4+ID4gPiA+ID4gIAkJZHJtX3ByaW50ZihtLCAiXHRJUEVIUjogMHglMDh4XG4iLAo+ PiA+ID4gPiA+IEBAIC0xNTU5LDcgKzE1NTksNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9lbmdpbmVf cHJpbnRfcmVnaXN0ZXJzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPj4gPiA+ID4g PiAgCQl9Cj4+ID4gPiA+ID4gIAkJcmN1X3JlYWRfdW5sb2NrKCk7Cj4+ID4gPiA+ID4gIAkJZXhl Y2xpc3RzX2FjdGl2ZV91bmxvY2tfYmgoZXhlY2xpc3RzKTsKPj4gPiA+ID4gPiAtCX0gZWxzZSBp ZiAoSU5URUxfR0VOKGRldl9wcml2KSA+IDYpIHsKPj4gPiA+ID4gPiArCX0gZWxzZSBpZiAoR1JB UEhJQ1NfVkVSKGRldl9wcml2KSA+IDYpIHsKPj4gPiA+ID4gPiAgCQlkcm1fcHJpbnRmKG0sICJc dFBQX0RJUl9CQVNFOiAweCUwOHhcbiIsCj4+ID4gPiA+ID4gIAkJCSAgIEVOR0lORV9SRUFEKGVu Z2luZSwgUklOR19QUF9ESVJfQkFTRSkpOwo+PiA+ID4gPiA+ICAJCWRybV9wcmludGYobSwgIlx0 UFBfRElSX0JBU0VfUkVBRDogMHglMDh4XG4iLAo+PiA+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYwo+PiA+ID4gPiA+ IGluZGV4IDhkYjIwMDQyMjk1MC4uZmM3NzU5MmQ4OGE5IDEwMDY0NAo+PiA+ID4gPiA+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmMKPj4g PiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3Vi bWlzc2lvbi5jCj4+ID4gPiA+ID4gQEAgLTE4NDcsNyArMTg0Nyw3IEBAIHByb2Nlc3NfY3NiKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgc3RydWN0IGk5MTVfcmVxdWVzdCAqKmluYWN0 aXZlKQo+PiA+ID4gPiA+ICAJCUVOR0lORV9UUkFDRShlbmdpbmUsICJjc2JbJWRdOiBzdGF0dXM9 MHglMDh4OjB4JTA4eFxuIiwKPj4gPiA+ID4gPiAgCQkJICAgICBoZWFkLCB1cHBlcl8zMl9iaXRz KGNzYiksIGxvd2VyXzMyX2JpdHMoY3NiKSk7Cj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAtCQlpZiAo SU5URUxfR0VOKGVuZ2luZS0+aTkxNSkgPj0gMTIpCj4+ID4gPiA+ID4gKwkJaWYgKEdSQVBISUNT X1ZFUihlbmdpbmUtPmk5MTUpID49IDEyKQo+PiA+ID4gPiA+ICAJCQlwcm9tb3RlID0gZ2VuMTJf Y3NiX3BhcnNlKGNzYik7Cj4+ID4gPiA+ID4gIAkJZWxzZQo+PiA+ID4gPiA+ICAJCQlwcm9tb3Rl ID0gZ2VuOF9jc2JfcGFyc2UoY3NiKTsKPj4gPiA+ID4gPiBAQCAtMjc3Miw3ICsyNzcyLDcgQEAg c3RhdGljIHZvaWQgZW5hYmxlX2V4ZWNsaXN0cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUpCj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAgCWludGVsX2VuZ2luZV9zZXRfaHdzcF93cml0ZW1h c2soZW5naW5lLCB+MHUpOyAvKiBIV1NUQU0gKi8KPj4gPiA+ID4gPgo+PiA+ID4gPiA+IC0JaWYg KElOVEVMX0dFTihlbmdpbmUtPmk5MTUpID49IDExKQo+PiA+ID4gPiA+ICsJaWYgKEdSQVBISUNT X1ZFUihlbmdpbmUtPmk5MTUpID49IDExKQo+PiA+ID4gPiA+ICAJCW1vZGUgPSBfTUFTS0VEX0JJ VF9FTkFCTEUoR0VOMTFfR0ZYX0RJU0FCTEVfTEVHQUNZX01PREUpOwo+PiA+ID4gPiA+ICAJZWxz ZQo+PiA+ID4gPiA+ICAJCW1vZGUgPSBfTUFTS0VEX0JJVF9FTkFCTEUoR0ZYX1JVTl9MSVNUX0VO QUJMRSk7Cj4+ID4gPiA+ID4gQEAgLTMxMDMsNyArMzEwMyw3IEBAIHN0YXRpYyB2b2lkIGV4ZWNs aXN0c19wYXJrKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPj4gPiA+ID4gPgo+PiA+ ID4gPiA+ICBzdGF0aWMgYm9vbCBjYW5fcHJlZW1wdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpCj4+ID4gPiA+ID4gIHsKPj4gPiA+ID4gPiAtCWlmIChJTlRFTF9HRU4oZW5naW5lLT5p OTE1KSA+IDgpCj4+ID4gPiA+ID4gKwlpZiAoR1JBUEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkgPiA4 KQo+PiA+ID4gPiA+ICAJCXJldHVybiB0cnVlOwo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gIAkvKiBH UEdQVSBvbiBiZHcgcmVxdWlyZXMgZXh0cmEgdy9hOyBub3QgaW1wbGVtZW50ZWQgKi8KPj4gPiA+ ID4gPiBAQCAtMzE1NiwxMyArMzE1NiwxMyBAQCBsb2dpY2FsX3JpbmdfZGVmYXVsdF92ZnVuY3Mo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+PiA+ID4gPiA+ICAJZW5naW5lLT5lbWl0 X2ZsdXNoID0gZ2VuOF9lbWl0X2ZsdXNoX3hjczsKPj4gPiA+ID4gPiAgCWVuZ2luZS0+ZW1pdF9p bml0X2JyZWFkY3J1bWIgPSBnZW44X2VtaXRfaW5pdF9icmVhZGNydW1iOwo+PiA+ID4gPiA+ICAJ ZW5naW5lLT5lbWl0X2ZpbmlfYnJlYWRjcnVtYiA9IGdlbjhfZW1pdF9maW5pX2JyZWFkY3J1bWJf eGNzOwo+PiA+ID4gPiA+IC0JaWYgKElOVEVMX0dFTihlbmdpbmUtPmk5MTUpID49IDEyKSB7Cj4+ ID4gPiA+ID4gKwlpZiAoR1JBUEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkgPj0gMTIpIHsKPj4gPiA+ ID4gPiAgCQllbmdpbmUtPmVtaXRfZmluaV9icmVhZGNydW1iID0gZ2VuMTJfZW1pdF9maW5pX2Jy ZWFkY3J1bWJfeGNzOwo+PiA+ID4gPiA+ICAJCWVuZ2luZS0+ZW1pdF9mbHVzaCA9IGdlbjEyX2Vt aXRfZmx1c2hfeGNzOwo+PiA+ID4gPiA+ICAJfQo+PiA+ID4gPiA+ICAJZW5naW5lLT5zZXRfZGVm YXVsdF9zdWJtaXNzaW9uID0gZXhlY2xpc3RzX3NldF9kZWZhdWx0X3N1Ym1pc3Npb247Cj4+ID4g PiA+ID4KPj4gPiA+ID4gPiAtCWlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA8IDExKSB7Cj4+ ID4gPiA+ID4gKwlpZiAoR1JBUEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkgPCAxMSkgewo+PiA+ID4g PiA+ICAJCWVuZ2luZS0+aXJxX2VuYWJsZSA9IGdlbjhfbG9naWNhbF9yaW5nX2VuYWJsZV9pcnE7 Cj4+ID4gPiA+ID4gIAkJZW5naW5lLT5pcnFfZGlzYWJsZSA9IGdlbjhfbG9naWNhbF9yaW5nX2Rp c2FibGVfaXJxOwo+PiA+ID4gPiA+ICAJfSBlbHNlIHsKPj4gPiA+ID4gPiBAQCAtMzE5NSw3ICsz MTk1LDcgQEAgc3RhdGljIHZvaWQgbG9naWNhbF9yaW5nX2RlZmF1bHRfaXJxcyhzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpCj4+ID4gPiA+ID4gIHsKPj4gPiA+ID4gPiAgCXVuc2lnbmVk IGludCBzaGlmdCA9IDA7Cj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAtCWlmIChJTlRFTF9HRU4oZW5n aW5lLT5pOTE1KSA8IDExKSB7Cj4+ID4gPiA+ID4gKwlpZiAoR1JBUEhJQ1NfVkVSKGVuZ2luZS0+ aTkxNSkgPCAxMSkgewo+PiA+ID4gPiA+ICAJCWNvbnN0IHU4IGlycV9zaGlmdHNbXSA9IHsKPj4g PiA+ID4gPiAgCQkJW1JDUzBdICA9IEdFTjhfUkNTX0lSUV9TSElGVCwKPj4gPiA+ID4gPiAgCQkJ W0JDUzBdICA9IEdFTjhfQkNTX0lSUV9TSElGVCwKPj4gPiA+ID4gPiBAQCAtMzIxNSw3ICszMjE1 LDcgQEAgc3RhdGljIHZvaWQgbG9naWNhbF9yaW5nX2RlZmF1bHRfaXJxcyhzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpCj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAgc3RhdGljIHZvaWQgcmNz X3N1Ym1pc3Npb25fb3ZlcnJpZGUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+PiA+ ID4gPiA+ICB7Cj4+ID4gPiA+ID4gLQlzd2l0Y2ggKElOVEVMX0dFTihlbmdpbmUtPmk5MTUpKSB7 Cj4+ID4gPiA+ID4gKwlzd2l0Y2ggKEdSQVBISUNTX1ZFUihlbmdpbmUtPmk5MTUpKSB7Cj4+ID4g PiA+ID4gIAljYXNlIDEyOgo+PiA+ID4gPiA+ICAJCWVuZ2luZS0+ZW1pdF9mbHVzaCA9IGdlbjEy X2VtaXRfZmx1c2hfcmNzOwo+PiA+ID4gPiA+ICAJCWVuZ2luZS0+ZW1pdF9maW5pX2JyZWFkY3J1 bWIgPSBnZW4xMl9lbWl0X2ZpbmlfYnJlYWRjcnVtYl9yY3M7Cj4+ID4gPiA+ID4gQEAgLTMyNjYs MTMgKzMyNjYsMTMgQEAgaW50IGludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uX3NldHVwKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPj4gPiA+ID4gPiAgCWV4ZWNsaXN0cy0+Y3NiX3dy aXRlID0KPj4gPiA+ID4gPiAgCQkmZW5naW5lLT5zdGF0dXNfcGFnZS5hZGRyW2ludGVsX2h3c19j c2Jfd3JpdGVfaW5kZXgoaTkxNSldOwo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gLQlpZiAoSU5URUxf R0VOKGk5MTUpIDwgMTEpCj4+ID4gPiA+ID4gKwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpIDwgMTEp Cj4+ID4gPiA+ID4gIAkJZXhlY2xpc3RzLT5jc2Jfc2l6ZSA9IEdFTjhfQ1NCX0VOVFJJRVM7Cj4+ ID4gPiA+ID4gIAllbHNlCj4+ID4gPiA+ID4gIAkJZXhlY2xpc3RzLT5jc2Jfc2l6ZSA9IEdFTjEx X0NTQl9FTlRSSUVTOwo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gIAllbmdpbmUtPmNvbnRleHRfdGFn ID0gR0VOTUFTSyhCSVRTX1BFUl9MT05HIC0gMiwgMCk7Cj4+ID4gPiA+ID4gLQlpZiAoSU5URUxf R0VOKGVuZ2luZS0+aTkxNSkgPj0gMTEpIHsKPj4gPiA+ID4gPiArCWlmIChHUkFQSElDU19WRVIo ZW5naW5lLT5pOTE1KSA+PSAxMSkgewo+PiA+ID4gPiA+ICAJCWV4ZWNsaXN0cy0+Y2NpZCB8PSBl bmdpbmUtPmluc3RhbmNlIDw8IChHRU4xMV9FTkdJTkVfSU5TVEFOQ0VfU0hJRlQgLSAzMik7Cj4+ ID4gPiA+ID4gIAkJZXhlY2xpc3RzLT5jY2lkIHw9IGVuZ2luZS0+Y2xhc3MgPDwgKEdFTjExX0VO R0lORV9DTEFTU19TSElGVCAtIDMyKTsKPj4gPiA+ID4gPiAgCX0KPj4gPiA+ID4gPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ2d0dC5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvaW50ZWxfZ2d0dC5jCj4+ID4gPiA+ID4gaW5kZXggMzUwNjljYTVkN2RlLi4x OWJkODg1NmNlODQgMTAwNjQ0Cj4+ID4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvaW50ZWxfZ2d0dC5jCj4+ID4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv aW50ZWxfZ2d0dC5jCj4+ID4gPiA+ID4gQEAgLTEwNywxMCArMTA3LDEwIEBAIHN0YXRpYyBib29s IG5lZWRzX2lkbGVfbWFwcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPj4gPiA+ID4g PiAgCWlmICghaW50ZWxfdnRkX2FjdGl2ZSgpKQo+PiA+ID4gPiA+ICAJCXJldHVybiBmYWxzZTsK Pj4gPiA+ID4gPgo+PiA+ID4gPiA+IC0JaWYgKElTX0dFTihpOTE1LCA1KSAmJiBJU19NT0JJTEUo aTkxNSkpCj4+ID4gPiA+ID4gKwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID09IDUgJiYgSVNfTU9C SUxFKGk5MTUpKQo+PiA+ID4gPiA+ICAJCXJldHVybiB0cnVlOwo+PiA+ID4gPiA+Cj4+ID4gPiA+ ID4gLQlpZiAoSVNfR0VOKGk5MTUsIDEyKSkKPj4gPiA+ID4gPiArCWlmIChHUkFQSElDU19WRVIo aTkxNSkgPT0gMTIpCj4+ID4gPiA+ID4gIAkJcmV0dXJuIHRydWU7IC8qIFhYWCBETUFSIGZhdWx0 IHJlYXNvbiA3ICovCj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAgCXJldHVybiBmYWxzZTsKPj4gPiA+ ID4gPiBAQCAtMTc2LDcgKzE3Niw3IEBAIHN0YXRpYyB2b2lkIGd1Y19nZ3R0X2ludmFsaWRhdGUo c3RydWN0IGk5MTVfZ2d0dCAqZ2d0dCkKPj4gPiA+ID4gPgo+PiA+ID4gPiA+ICAJZ2VuOF9nZ3R0 X2ludmFsaWRhdGUoZ2d0dCk7Cj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAtCWlmIChJTlRFTF9HRU4o aTkxNSkgPj0gMTIpCj4+ID4gPiA+ID4gKwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDEyKQo+ PiA+ID4gPiA+ICAJCWludGVsX3VuY29yZV93cml0ZV9mdyh1bmNvcmUsIEdFTjEyX0dVQ19UTEJf SU5WX0NSLAo+PiA+ID4gPiA+ICAJCQkJICAgICAgR0VOMTJfR1VDX1RMQl9JTlZfQ1JfSU5WQUxJ REFURSk7Cj4+ID4gPiA+ID4gIAllbHNlCj4+ID4gPiA+ID4gQEAgLTgyMCw3ICs4MjAsNyBAQCBz dGF0aWMgaW50IGdndHRfcHJvYmVfY29tbW9uKHN0cnVjdCBpOTE1X2dndHQgKmdndHQsIHU2NCBz aXplKQo+PiA+ID4gPiA+ICAJICogcmVzb3J0IHRvIGFuIHVuY2FjaGVkIG1hcHBpbmcuIFRoZSBX QyBpc3N1ZSBpcyBlYXNpbHkgY2F1Z2h0IGJ5IHRoZQo+PiA+ID4gPiA+ICAJICogcmVhZGJhY2sg Y2hlY2sgd2hlbiB3cml0aW5nIEdUVCBQVEUgZW50cmllcy4KPj4gPiA+ID4gPiAgCSAqLwo+PiA+ ID4gPiA+IC0JaWYgKElTX0dFTjlfTFAoaTkxNSkgfHwgSU5URUxfR0VOKGk5MTUpID49IDEwKQo+ PiA+ID4gPiA+ICsJaWYgKElTX0dFTjlfTFAoaTkxNSkgfHwgR1JBUEhJQ1NfVkVSKGk5MTUpID49 IDEwKQo+PiA+ID4gPiA+ICAJCWdndHQtPmdzbSA9IGlvcmVtYXAocGh5c19hZGRyLCBzaXplKTsK Pj4gPiA+ID4gPiAgCWVsc2UKPj4gPiA+ID4gPiAgCQlnZ3R0LT5nc20gPSBpb3JlbWFwX3djKHBo eXNfYWRkciwgc2l6ZSk7Cj4+ID4gPiA+ID4gQEAgLTEwNjUsNyArMTA2NSw3IEBAIHN0YXRpYyBp bnQgZ2VuNl9nbWNoX3Byb2JlKHN0cnVjdCBpOTE1X2dndHQgKmdndHQpCj4+ID4gPiA+ID4gIAkJ Z2d0dC0+dm0ucHRlX2VuY29kZSA9IGhzd19wdGVfZW5jb2RlOwo+PiA+ID4gPiA+ICAJZWxzZSBp ZiAoSVNfVkFMTEVZVklFVyhpOTE1KSkKPj4gPiA+ID4gPiAgCQlnZ3R0LT52bS5wdGVfZW5jb2Rl ID0gYnl0X3B0ZV9lbmNvZGU7Cj4+ID4gPiA+ID4gLQllbHNlIGlmIChJTlRFTF9HRU4oaTkxNSkg Pj0gNykKPj4gPiA+ID4gPiArCWVsc2UgaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSA3KQo+PiA+ ID4gPiA+ICAJCWdndHQtPnZtLnB0ZV9lbmNvZGUgPSBpdmJfcHRlX2VuY29kZTsKPj4gPiA+ID4g PiAgCWVsc2UKPj4gPiA+ID4gPiAgCQlnZ3R0LT52bS5wdGVfZW5jb2RlID0gc25iX3B0ZV9lbmNv ZGU7Cj4+ID4gPiA+ID4gQEAgLTExMzcsOSArMTEzNyw5IEBAIHN0YXRpYyBpbnQgZ2d0dF9wcm9i ZV9odyhzdHJ1Y3QgaTkxNV9nZ3R0ICpnZ3R0LCBzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQo+PiA+ID4g PiA+ICAJZ2d0dC0+dm0uZG1hID0gaTkxNS0+ZHJtLmRldjsKPj4gPiA+ID4gPiAgCWRtYV9yZXN2 X2luaXQoJmdndHQtPnZtLnJlc3YpOwo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gLQlpZiAoSU5URUxf R0VOKGk5MTUpIDw9IDUpCj4+ID4gPiA+ID4gKwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpIDw9IDUp Cj4+ID4gPiA+ID4gIAkJcmV0ID0gaTkxNV9nbWNoX3Byb2JlKGdndHQpOwo+PiA+ID4gPiA+IC0J ZWxzZSBpZiAoSU5URUxfR0VOKGk5MTUpIDwgOCkKPj4gPiA+ID4gPiArCWVsc2UgaWYgKEdSQVBI SUNTX1ZFUihpOTE1KSA8IDgpCj4+ID4gPiA+ID4gIAkJcmV0ID0gZ2VuNl9nbWNoX3Byb2JlKGdn dHQpOwo+PiA+ID4gPiA+ICAJZWxzZQo+PiA+ID4gPiA+ICAJCXJldCA9IGdlbjhfZ21jaF9wcm9i ZShnZ3R0KTsKPj4gPiA+ID4gPiBAQCAtMTE5Niw3ICsxMTk2LDcgQEAgaW50IGk5MTVfZ2d0dF9w cm9iZV9odyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPj4gPiA+ID4gPgo+PiA+ID4g PiA+ICBpbnQgaTkxNV9nZ3R0X2VuYWJsZV9odyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSkKPj4gPiA+ID4gPiAgewo+PiA+ID4gPiA+IC0JaWYgKElOVEVMX0dFTihpOTE1KSA8IDYgJiYg IWludGVsX2VuYWJsZV9ndHQoKSkKPj4gPiA+ID4gPiArCWlmIChHUkFQSElDU19WRVIoaTkxNSkg PCA2ICYmICFpbnRlbF9lbmFibGVfZ3R0KCkpCj4+ID4gPiA+ID4gIAkJcmV0dXJuIC1FSU87Cj4+ ID4gPiA+ID4KPj4gPiA+ID4gPiAgCXJldHVybiAwOwo+PiA+ID4gPiA+IEBAIC0xMjYxLDcgKzEy NjEsNyBAQCB2b2lkIGk5MTVfZ2d0dF9yZXN1bWUoc3RydWN0IGk5MTVfZ2d0dCAqZ2d0dCkKPj4g PiA+ID4gPiAgCWlmIChmbHVzaCkKPj4gPiA+ID4gPiAgCQl3YmludmRfb25fYWxsX2NwdXMoKTsK Pj4gPiA+ID4gPgo+PiA+ID4gPiA+IC0JaWYgKElOVEVMX0dFTihnZ3R0LT52bS5pOTE1KSA+PSA4 KQo+PiA+ID4gPiA+ICsJaWYgKEdSQVBISUNTX1ZFUihnZ3R0LT52bS5pOTE1KSA+PSA4KQo+PiA+ ID4gPiA+ICAJCXNldHVwX3ByaXZhdGVfcGF0KGdndHQtPnZtLmd0LT51bmNvcmUpOwo+PiA+ID4g PiA+Cj4+ID4gPiA+ID4gIAlpbnRlbF9nZ3R0X3Jlc3RvcmVfZmVuY2VzKGdndHQpOwo+PiA+ID4g PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9nZ3R0X2ZlbmNp bmcuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2dndHRfZmVuY2luZy5jCj4+ID4g PiA+ID4gaW5kZXggN2JmODRjZDIxNTQzLi5jYWM3ZjNmNDQ2NDIgMTAwNjQ0Cj4+ID4gPiA+ID4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ2d0dF9mZW5jaW5nLmMKPj4gPiA+ ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9nZ3R0X2ZlbmNpbmcuYwo+ PiA+ID4gPiA+IEBAIC01Niw3ICs1Niw3IEBAIHN0YXRpYyB2b2lkIGk5NjVfd3JpdGVfZmVuY2Vf cmVnKHN0cnVjdCBpOTE1X2ZlbmNlX3JlZyAqZmVuY2UpCj4+ID4gPiA+ID4gIAlpbnQgZmVuY2Vf cGl0Y2hfc2hpZnQ7Cj4+ID4gPiA+ID4gIAl1NjQgdmFsOwo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4g LQlpZiAoSU5URUxfR0VOKGZlbmNlX3RvX2k5MTUoZmVuY2UpKSA+PSA2KSB7Cj4+ID4gPiA+ID4g KwlpZiAoR1JBUEhJQ1NfVkVSKGZlbmNlX3RvX2k5MTUoZmVuY2UpKSA+PSA2KSB7Cj4+ID4gPiA+ ID4gIAkJZmVuY2VfcmVnX2xvID0gRkVOQ0VfUkVHX0dFTjZfTE8oZmVuY2UtPmlkKTsKPj4gPiA+ ID4gPiAgCQlmZW5jZV9yZWdfaGkgPSBGRU5DRV9SRUdfR0VONl9ISShmZW5jZS0+aWQpOwo+PiA+ ID4gPiA+ICAJCWZlbmNlX3BpdGNoX3NoaWZ0ID0gR0VONl9GRU5DRV9QSVRDSF9TSElGVDsKPj4g PiA+ID4gPiBAQCAtMTczLDkgKzE3Myw5IEBAIHN0YXRpYyB2b2lkIGZlbmNlX3dyaXRlKHN0cnVj dCBpOTE1X2ZlbmNlX3JlZyAqZmVuY2UpCj4+ID4gPiA+ID4gIAkgKiBhbmQgZXhwbGljaXRseSBt YW5hZ2VkIGZvciBpbnRlcm5hbCB1c2Vycy4KPj4gPiA+ID4gPiAgCSAqLwo+PiA+ID4gPiA+Cj4+ ID4gPiA+ID4gLQlpZiAoSVNfR0VOKGk5MTUsIDIpKQo+PiA+ID4gPiA+ICsJaWYgKEdSQVBISUNT X1ZFUihpOTE1KSA9PSAyKQo+PiA+ID4gPiA+ICAJCWk4MzBfd3JpdGVfZmVuY2VfcmVnKGZlbmNl KTsKPj4gPiA+ID4gPiAtCWVsc2UgaWYgKElTX0dFTihpOTE1LCAzKSkKPj4gPiA+ID4gPiArCWVs c2UgaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA9PSAzKQo+PiA+ID4gPiA+ICAJCWk5MTVfd3JpdGVf ZmVuY2VfcmVnKGZlbmNlKTsKPj4gPiA+ID4gPiAgCWVsc2UKPj4gPiA+ID4gPiAgCQlpOTY1X3dy aXRlX2ZlbmNlX3JlZyhmZW5jZSk7Cj4+ID4gPiA+ID4gQEAgLTE4OCw3ICsxODgsNyBAQCBzdGF0 aWMgdm9pZCBmZW5jZV93cml0ZShzdHJ1Y3QgaTkxNV9mZW5jZV9yZWcgKmZlbmNlKQo+PiA+ID4g PiA+Cj4+ID4gPiA+ID4gIHN0YXRpYyBib29sIGdwdV91c2VzX2ZlbmNlX3JlZ2lzdGVycyhzdHJ1 Y3QgaTkxNV9mZW5jZV9yZWcgKmZlbmNlKQo+PiA+ID4gPiA+ICB7Cj4+ID4gPiA+ID4gLQlyZXR1 cm4gSU5URUxfR0VOKGZlbmNlX3RvX2k5MTUoZmVuY2UpKSA8IDQ7Cj4+ID4gPiA+ID4gKwlyZXR1 cm4gR1JBUEhJQ1NfVkVSKGZlbmNlX3RvX2k5MTUoZmVuY2UpKSA8IDQ7Cj4+ID4gPiA+ID4gIH0K Pj4gPiA+ID4gPgo+PiA+ID4gPiA+ICBzdGF0aWMgaW50IGZlbmNlX3VwZGF0ZShzdHJ1Y3QgaTkx NV9mZW5jZV9yZWcgKmZlbmNlLAo+PiA+ID4gPiA+IEBAIC01NjksNyArNTY5LDcgQEAgc3RhdGlj IHZvaWQgZGV0ZWN0X2JpdF82X3N3aXp6bGUoc3RydWN0IGk5MTVfZ2d0dCAqZ2d0dCkKPj4gPiA+ ID4gPiAgCXUzMiBzd2l6emxlX3ggPSBJOTE1X0JJVF82X1NXSVpaTEVfVU5LTk9XTjsKPj4gPiA+ ID4gPiAgCXUzMiBzd2l6emxlX3kgPSBJOTE1X0JJVF82X1NXSVpaTEVfVU5LTk9XTjsKPj4gPiA+ ID4gPgo+PiA+ID4gPiA+IC0JaWYgKElOVEVMX0dFTihpOTE1KSA+PSA4IHx8IElTX1ZBTExFWVZJ RVcoaTkxNSkpIHsKPj4gPiA+ID4gPiArCWlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gOCB8fCBJ U19WQUxMRVlWSUVXKGk5MTUpKSB7Cj4+ID4gPiA+ID4gIAkJLyoKPj4gPiA+ID4gPiAgCQkgKiBP biBCRFcrLCBzd2l6emxpbmcgaXMgbm90IHVzZWQuIFdlIGxlYXZlIHRoZSBDUFUgbWVtb3J5Cj4+ ID4gPiA+ID4gIAkJICogY29udHJvbGxlciBpbiBjaGFyZ2Ugb2Ygb3B0aW1pemluZyBtZW1vcnkg YWNjZXNzZXMgd2l0aG91dAo+PiA+ID4gPiA+IEBAIC01NzksNyArNTc5LDcgQEAgc3RhdGljIHZv aWQgZGV0ZWN0X2JpdF82X3N3aXp6bGUoc3RydWN0IGk5MTVfZ2d0dCAqZ2d0dCkKPj4gPiA+ID4g PiAgCQkgKi8KPj4gPiA+ID4gPiAgCQlzd2l6emxlX3ggPSBJOTE1X0JJVF82X1NXSVpaTEVfTk9O RTsKPj4gPiA+ID4gPiAgCQlzd2l6emxlX3kgPSBJOTE1X0JJVF82X1NXSVpaTEVfTk9ORTsKPj4g PiA+ID4gPiAtCX0gZWxzZSBpZiAoSU5URUxfR0VOKGk5MTUpID49IDYpIHsKPj4gPiA+ID4gPiAr CX0gZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDYpIHsKPj4gPiA+ID4gPiAgCQlpZiAo aTkxNS0+cHJlc2VydmVfYmlvc19zd2l6emxlKSB7Cj4+ID4gPiA+ID4gIAkJCWlmIChpbnRlbF91 bmNvcmVfcmVhZCh1bmNvcmUsIERJU1BfQVJCX0NUTCkgJgo+PiA+ID4gPiA+ICAJCQkgICAgRElT UF9USUxFX1NVUkZBQ0VfU1dJWlpMSU5HKSB7Cj4+ID4gPiA+ID4gQEAgLTYxMSwxNCArNjExLDE0 IEBAIHN0YXRpYyB2b2lkIGRldGVjdF9iaXRfNl9zd2l6emxlKHN0cnVjdCBpOTE1X2dndHQgKmdn dHQpCj4+ID4gPiA+ID4gIAkJCQlzd2l6emxlX3kgPSBJOTE1X0JJVF82X1NXSVpaTEVfTk9ORTsK Pj4gPiA+ID4gPiAgCQkJfQo+PiA+ID4gPiA+ICAJCX0KPj4gPiA+ID4gPiAtCX0gZWxzZSBpZiAo SVNfR0VOKGk5MTUsIDUpKSB7Cj4+ID4gPiA+ID4gKwl9IGVsc2UgaWYgKEdSQVBISUNTX1ZFUihp OTE1KSA9PSA1KSB7Cj4+ID4gPiA+ID4gIAkJLyoKPj4gPiA+ID4gPiAgCQkgKiBPbiBJcm9ubGFr ZSB3aGF0ZXZlciBEUkFNIGNvbmZpZywgR1BVIGFsd2F5cyBkbwo+PiA+ID4gPiA+ICAJCSAqIHNh bWUgc3dpenpsaW5nIHNldHVwLgo+PiA+ID4gPiA+ICAJCSAqLwo+PiA+ID4gPiA+ICAJCXN3aXp6 bGVfeCA9IEk5MTVfQklUXzZfU1dJWlpMRV85XzEwOwo+PiA+ID4gPiA+ICAJCXN3aXp6bGVfeSA9 IEk5MTVfQklUXzZfU1dJWlpMRV85Owo+PiA+ID4gPiA+IC0JfSBlbHNlIGlmIChJU19HRU4oaTkx NSwgMikpIHsKPj4gPiA+ID4gPiArCX0gZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID09IDIp IHsKPj4gPiA+ID4gPiAgCQkvKgo+PiA+ID4gPiA+ICAJCSAqIEFzIGZhciBhcyB3ZSBrbm93LCB0 aGUgODY1IGRvZXNuJ3QgaGF2ZSB0aGVzZSBiaXQgNgo+PiA+ID4gPiA+ICAJCSAqIHN3aXp6bGlu ZyBpc3N1ZXMuCj4+ID4gPiA+ID4gQEAgLTY5Nyw3ICs2OTcsNyBAQCBzdGF0aWMgdm9pZCBkZXRl Y3RfYml0XzZfc3dpenpsZShzdHJ1Y3QgaTkxNV9nZ3R0ICpnZ3R0KQo+PiA+ID4gPiA+ICAJCX0K Pj4gPiA+ID4gPgo+PiA+ID4gPiA+ICAJCS8qIGNoZWNrIGZvciBMLXNoYXBlZCBtZW1vcnkgYWth IG1vZGlmaWVkIGVuaGFuY2VkIGFkZHJlc3NpbmcgKi8KPj4gPiA+ID4gPiAtCQlpZiAoSVNfR0VO KGk5MTUsIDQpICYmCj4+ID4gPiA+ID4gKwkJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA9PSA0ICYm Cj4+ID4gPiA+ID4gIAkJICAgICEoaW50ZWxfdW5jb3JlX3JlYWQodW5jb3JlLCBEQ0MyKSAmIERD QzJfTU9ESUZJRURfRU5IQU5DRURfRElTQUJMRSkpIHsKPj4gPiA+ID4gPiAgCQkJc3dpenpsZV94 ID0gSTkxNV9CSVRfNl9TV0laWkxFX1VOS05PV047Cj4+ID4gPiA+ID4gIAkJCXN3aXp6bGVfeSA9 IEk5MTVfQklUXzZfU1dJWlpMRV9VTktOT1dOOwo+PiA+ID4gPiA+IEBAIC04NDQsMTAgKzg0NCwx MCBAQCB2b2lkIGludGVsX2dndHRfaW5pdF9mZW5jZXMoc3RydWN0IGk5MTVfZ2d0dCAqZ2d0dCkK Pj4gPiA+ID4gPgo+PiA+ID4gPiA+ICAJaWYgKCFpOTE1X2dndHRfaGFzX2FwZXJ0dXJlKGdndHQp KQo+PiA+ID4gPiA+ICAJCW51bV9mZW5jZXMgPSAwOwo+PiA+ID4gPiA+IC0JZWxzZSBpZiAoSU5U RUxfR0VOKGk5MTUpID49IDcgJiYKPj4gPiA+ID4gPiArCWVsc2UgaWYgKEdSQVBISUNTX1ZFUihp OTE1KSA+PSA3ICYmCj4+ID4gPiA+ID4gIAkJICEoSVNfVkFMTEVZVklFVyhpOTE1KSB8fCBJU19D SEVSUllWSUVXKGk5MTUpKSkKPj4gPiA+ID4gPiAgCQludW1fZmVuY2VzID0gMzI7Cj4+ID4gPiA+ ID4gLQllbHNlIGlmIChJTlRFTF9HRU4oaTkxNSkgPj0gNCB8fAo+PiA+ID4gPiA+ICsJZWxzZSBp ZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDQgfHwKPj4gPiA+ID4gPiAgCQkgSVNfSTk0NUcoaTkx NSkgfHwgSVNfSTk0NUdNKGk5MTUpIHx8Cj4+ID4gPiA+ID4gIAkJIElTX0czMyhpOTE1KSB8fCBJ U19QSU5FVklFVyhpOTE1KSkKPj4gPiA+ID4gPiAgCQludW1fZmVuY2VzID0gMTY7Cj4+ID4gPiA+ ID4gQEAgLTg5NSwyOSArODk1LDI5IEBAIHZvaWQgaW50ZWxfZ3RfaW5pdF9zd2l6emxpbmcoc3Ry dWN0IGludGVsX2d0ICpndCkKPj4gPiA+ID4gPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1ID0gZ3QtPmk5MTU7Cj4+ID4gPiA+ID4gIAlzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUg PSBndC0+dW5jb3JlOwo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gLQlpZiAoSU5URUxfR0VOKGk5MTUp IDwgNSB8fAo+PiA+ID4gPiA+ICsJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA8IDUgfHwKPj4gPiA+ ID4gPiAgCSAgICBpOTE1LT5nZ3R0LmJpdF82X3N3aXp6bGVfeCA9PSBJOTE1X0JJVF82X1NXSVpa TEVfTk9ORSkKPj4gPiA+ID4gPiAgCQlyZXR1cm47Cj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAgCWlu dGVsX3VuY29yZV9ybXcodW5jb3JlLCBESVNQX0FSQl9DVEwsIDAsIERJU1BfVElMRV9TVVJGQUNF X1NXSVpaTElORyk7Cj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAtCWlmIChJU19HRU4oaTkxNSwgNSkp Cj4+ID4gPiA+ID4gKwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID09IDUpCj4+ID4gPiA+ID4gIAkJ cmV0dXJuOwo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gIAlpbnRlbF91bmNvcmVfcm13KHVuY29yZSwg VElMRUNUTCwgMCwgVElMRUNUTF9TV1pDVEwpOwo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gLQlpZiAo SVNfR0VOKGk5MTUsIDYpKQo+PiA+ID4gPiA+ICsJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA9PSA2 KQo+PiA+ID4gPiA+ICAJCWludGVsX3VuY29yZV93cml0ZSh1bmNvcmUsCj4+ID4gPiA+ID4gIAkJ CQkgICBBUkJfTU9ERSwKPj4gPiA+ID4gPiAgCQkJCSAgIF9NQVNLRURfQklUX0VOQUJMRShBUkJf TU9ERV9TV0laWkxFX1NOQikpOwo+PiA+ID4gPiA+IC0JZWxzZSBpZiAoSVNfR0VOKGk5MTUsIDcp KQo+PiA+ID4gPiA+ICsJZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID09IDcpCj4+ID4gPiA+ ID4gIAkJaW50ZWxfdW5jb3JlX3dyaXRlKHVuY29yZSwKPj4gPiA+ID4gPiAgCQkJCSAgIEFSQl9N T0RFLAo+PiA+ID4gPiA+ICAJCQkJICAgX01BU0tFRF9CSVRfRU5BQkxFKEFSQl9NT0RFX1NXSVpa TEVfSVZCKSk7Cj4+ID4gPiA+ID4gLQllbHNlIGlmIChJU19HRU4oaTkxNSwgOCkpCj4+ID4gPiA+ ID4gKwllbHNlIGlmIChHUkFQSElDU19WRVIoaTkxNSkgPT0gOCkKPj4gPiA+ID4gPiAgCQlpbnRl bF91bmNvcmVfd3JpdGUodW5jb3JlLAo+PiA+ID4gPiA+ICAJCQkJICAgR0FNVEFSQk1PREUsCj4+ ID4gPiA+ID4gIAkJCQkgICBfTUFTS0VEX0JJVF9FTkFCTEUoQVJCX01PREVfU1dJWlpMRV9CRFcp KTsKPj4gPiA+ID4gPiAgCWVsc2UKPj4gPiA+ID4gPiAtCQlNSVNTSU5HX0NBU0UoSU5URUxfR0VO KGk5MTUpKTsKPj4gPiA+ID4gPiArCQlNSVNTSU5HX0NBU0UoR1JBUEhJQ1NfVkVSKGk5MTUpKTsK Pj4gPiA+ID4gPiAgfQo+PiA+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9pbnRlbF9ndC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3QuYwo+PiA+ ID4gPiA+IGluZGV4IDhkNzdkY2JhZDA1OS4uN2YyNDMwMWNlZjE4IDEwMDY0NAo+PiA+ID4gPiA+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0LmMKPj4gPiA+ID4gPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndC5jCj4+ID4gPiA+ID4gQEAgLTExNSwx MCArMTE1LDEwIEBAIHN0YXRpYyB2b2lkIGluaXRfdW51c2VkX3JpbmdzKHN0cnVjdCBpbnRlbF9n dCAqZ3QpCj4+ID4gPiA+ID4gIAkJaW5pdF91bnVzZWRfcmluZyhndCwgU1JCMV9CQVNFKTsKPj4g PiA+ID4gPiAgCQlpbml0X3VudXNlZF9yaW5nKGd0LCBTUkIyX0JBU0UpOwo+PiA+ID4gPiA+ICAJ CWluaXRfdW51c2VkX3JpbmcoZ3QsIFNSQjNfQkFTRSk7Cj4+ID4gPiA+ID4gLQl9IGVsc2UgaWYg KElTX0dFTihpOTE1LCAyKSkgewo+PiA+ID4gPiA+ICsJfSBlbHNlIGlmIChHUkFQSElDU19WRVIo aTkxNSkgPT0gMikgewo+PiA+ID4gPiA+ICAJCWluaXRfdW51c2VkX3JpbmcoZ3QsIFNSQjBfQkFT RSk7Cj4+ID4gPiA+ID4gIAkJaW5pdF91bnVzZWRfcmluZyhndCwgU1JCMV9CQVNFKTsKPj4gPiA+ ID4gPiAtCX0gZWxzZSBpZiAoSVNfR0VOKGk5MTUsIDMpKSB7Cj4+ID4gPiA+ID4gKwl9IGVsc2Ug aWYgKEdSQVBISUNTX1ZFUihpOTE1KSA9PSAzKSB7Cj4+ID4gPiA+ID4gIAkJaW5pdF91bnVzZWRf cmluZyhndCwgUFJCMV9CQVNFKTsKPj4gPiA+ID4gPiAgCQlpbml0X3VudXNlZF9yaW5nKGd0LCBQ UkIyX0JBU0UpOwo+PiA+ID4gPiA+ICAJfQo+PiA+ID4gPiA+IEBAIC0xMzUsNyArMTM1LDcgQEAg aW50IGludGVsX2d0X2luaXRfaHcoc3RydWN0IGludGVsX2d0ICpndCkKPj4gPiA+ID4gPiAgCS8q IERvdWJsZSBsYXllciBzZWN1cml0eSBibGFua2V0LCBzZWUgaTkxNV9nZW1faW5pdCgpICovCj4+ ID4gPiA+ID4gIAlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldCh1bmNvcmUsIEZPUkNFV0FLRV9B TEwpOwo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gLQlpZiAoSEFTX0VEUkFNKGk5MTUpICYmIElOVEVM X0dFTihpOTE1KSA8IDkpCj4+ID4gPiA+ID4gKwlpZiAoSEFTX0VEUkFNKGk5MTUpICYmIEdSQVBI SUNTX1ZFUihpOTE1KSA8IDkpCj4+ID4gPiA+ID4gIAkJaW50ZWxfdW5jb3JlX3Jtdyh1bmNvcmUs IEhTV19JRElDUiwgMCwgSURJSEFTSE1TSygweGYpKTsKPj4gPiA+ID4gPgo+PiA+ID4gPiA+ICAJ aWYgKElTX0hBU1dFTEwoaTkxNSkpCj4+ID4gPiA+ID4gQEAgLTIwOCwxMCArMjA4LDEwIEBAIGlu dGVsX2d0X2NsZWFyX2Vycm9yX3JlZ2lzdGVycyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0LAo+PiA+ID4g PiA+ICAJc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlID0gZ3QtPnVuY29yZTsKPj4gPiA+ID4g PiAgCXUzMiBlaXI7Cj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAtCWlmICghSVNfR0VOKGk5MTUsIDIp KQo+PiA+ID4gPiA+ICsJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSAhPSAyKQo+PiA+ID4gPiA+ICAJ CWNsZWFyX3JlZ2lzdGVyKHVuY29yZSwgUEdUQkxfRVIpOwo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4g LQlpZiAoSU5URUxfR0VOKGk5MTUpIDwgNCkKPj4gPiA+ID4gPiArCWlmIChHUkFQSElDU19WRVIo aTkxNSkgPCA0KQo+PiA+ID4gPiA+ICAJCWNsZWFyX3JlZ2lzdGVyKHVuY29yZSwgSVBFSVIoUkVO REVSX1JJTkdfQkFTRSkpOwo+PiA+ID4gPiA+ICAJZWxzZQo+PiA+ID4gPiA+ICAJCWNsZWFyX3Jl Z2lzdGVyKHVuY29yZSwgSVBFSVJfSTk2NSk7Cj4+ID4gPiA+ID4gQEAgLTIyOSwxMyArMjI5LDEz IEBAIGludGVsX2d0X2NsZWFyX2Vycm9yX3JlZ2lzdGVycyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0LAo+ PiA+ID4gPiA+ICAJCQkJICAgSTkxNV9NQVNURVJfRVJST1JfSU5URVJSVVBUKTsKPj4gPiA+ID4g PiAgCX0KPj4gPiA+ID4gPgo+PiA+ID4gPiA+IC0JaWYgKElOVEVMX0dFTihpOTE1KSA+PSAxMikg ewo+PiA+ID4gPiA+ICsJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSAxMikgewo+PiA+ID4gPiA+ ICAJCXJtd19jbGVhcih1bmNvcmUsIEdFTjEyX1JJTkdfRkFVTFRfUkVHLCBSSU5HX0ZBVUxUX1ZB TElEKTsKPj4gPiA+ID4gPiAgCQlpbnRlbF91bmNvcmVfcG9zdGluZ19yZWFkKHVuY29yZSwgR0VO MTJfUklOR19GQVVMVF9SRUcpOwo+PiA+ID4gPiA+IC0JfSBlbHNlIGlmIChJTlRFTF9HRU4oaTkx NSkgPj0gOCkgewo+PiA+ID4gPiA+ICsJfSBlbHNlIGlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0g OCkgewo+PiA+ID4gPiA+ICAJCXJtd19jbGVhcih1bmNvcmUsIEdFTjhfUklOR19GQVVMVF9SRUcs IFJJTkdfRkFVTFRfVkFMSUQpOwo+PiA+ID4gPiA+ICAJCWludGVsX3VuY29yZV9wb3N0aW5nX3Jl YWQodW5jb3JlLCBHRU44X1JJTkdfRkFVTFRfUkVHKTsKPj4gPiA+ID4gPiAtCX0gZWxzZSBpZiAo SU5URUxfR0VOKGk5MTUpID49IDYpIHsKPj4gPiA+ID4gPiArCX0gZWxzZSBpZiAoR1JBUEhJQ1Nf VkVSKGk5MTUpID49IDYpIHsKPj4gPiA+ID4gPiAgCQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmU7Cj4+ID4gPiA+ID4gIAkJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7Cj4+ID4gPiA+ID4K Pj4gPiA+ID4gPiBAQCAtMjczLDcgKzI3Myw3IEBAIHN0YXRpYyB2b2lkIGdlbjhfY2hlY2tfZmF1 bHRzKHN0cnVjdCBpbnRlbF9ndCAqZ3QpCj4+ID4gPiA+ID4gIAlpOTE1X3JlZ190IGZhdWx0X3Jl ZywgZmF1bHRfZGF0YTBfcmVnLCBmYXVsdF9kYXRhMV9yZWc7Cj4+ID4gPiA+ID4gIAl1MzIgZmF1 bHQ7Cj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAtCWlmIChJTlRFTF9HRU4oZ3QtPmk5MTUpID49IDEy KSB7Cj4+ID4gPiA+ID4gKwlpZiAoR1JBUEhJQ1NfVkVSKGd0LT5pOTE1KSA+PSAxMikgewo+PiA+ ID4gPiA+ICAJCWZhdWx0X3JlZyA9IEdFTjEyX1JJTkdfRkFVTFRfUkVHOwo+PiA+ID4gPiA+ICAJ CWZhdWx0X2RhdGEwX3JlZyA9IEdFTjEyX0ZBVUxUX1RMQl9EQVRBMDsKPj4gPiA+ID4gPiAgCQlm YXVsdF9kYXRhMV9yZWcgPSBHRU4xMl9GQVVMVF9UTEJfREFUQTE7Cj4+ID4gPiA+ID4gQEAgLTMx Myw5ICszMTMsOSBAQCB2b2lkIGludGVsX2d0X2NoZWNrX2FuZF9jbGVhcl9mYXVsdHMoc3RydWN0 IGludGVsX2d0ICpndCkKPj4gPiA+ID4gPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 ID0gZ3QtPmk5MTU7Cj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAgCS8qIEZyb20gR0VOOCBvbndhcmRz IHdlIG9ubHkgaGF2ZSBvbmUgJ0FsbCBFbmdpbmUgRmF1bHQgUmVnaXN0ZXInICovCj4+ID4gPiA+ ID4gLQlpZiAoSU5URUxfR0VOKGk5MTUpID49IDgpCj4+ID4gPiA+ID4gKwlpZiAoR1JBUEhJQ1Nf VkVSKGk5MTUpID49IDgpCj4+ID4gPiA+ID4gIAkJZ2VuOF9jaGVja19mYXVsdHMoZ3QpOwo+PiA+ ID4gPiA+IC0JZWxzZSBpZiAoSU5URUxfR0VOKGk5MTUpID49IDYpCj4+ID4gPiA+ID4gKwllbHNl IGlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gNikKPj4gPiA+ID4gPiAgCQlnZW42X2NoZWNrX2Zh dWx0cyhndCk7Cj4+ID4gPiA+ID4gIAllbHNlCj4+ID4gPiA+ID4gIAkJcmV0dXJuOwo+PiA+ID4g PiA+IEBAIC0zNjcsNyArMzY3LDcgQEAgdm9pZCBpbnRlbF9ndF9mbHVzaF9nZ3R0X3dyaXRlcyhz dHJ1Y3QgaW50ZWxfZ3QgKmd0KQo+PiA+ID4gPiA+ICB2b2lkIGludGVsX2d0X2NoaXBzZXRfZmx1 c2goc3RydWN0IGludGVsX2d0ICpndCkKPj4gPiA+ID4gPiAgewo+PiA+ID4gPiA+ICAJd21iKCk7 Cj4+ID4gPiA+ID4gLQlpZiAoSU5URUxfR0VOKGd0LT5pOTE1KSA8IDYpCj4+ID4gPiA+ID4gKwlp ZiAoR1JBUEhJQ1NfVkVSKGd0LT5pOTE1KSA8IDYpCj4+ID4gPiA+ID4gIAkJaW50ZWxfZ3R0X2No aXBzZXRfZmx1c2goKTsKPj4gPiA+ID4gPiAgfQo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gQEAgLTU5 MSw3ICs1OTEsOCBAQCBpbnQgaW50ZWxfZ3RfaW5pdChzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQo+PiA+ ID4gPiA+ICAJICovCj4+ID4gPiA+ID4gIAlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldChndC0+ dW5jb3JlLCBGT1JDRVdBS0VfQUxMKTsKPj4gPiA+ID4gPgo+PiA+ID4gPiA+IC0JZXJyID0gaW50 ZWxfZ3RfaW5pdF9zY3JhdGNoKGd0LCBJU19HRU4oZ3QtPmk5MTUsIDIpID8gU1pfMjU2SyA6IFNa XzRLKTsKPj4gPiA+ID4gPiArCWVyciA9IGludGVsX2d0X2luaXRfc2NyYXRjaChndCwKPj4gPiA+ ID4gPiArCQkJCSAgICBHUkFQSElDU19WRVIoZ3QtPmk5MTUpID09IDIgPyBTWl8yNTZLIDogU1pf NEspOwo+PiA+ID4gPiA+ICAJaWYgKGVycikKPj4gPiA+ID4gPiAgCQlnb3RvIG91dF9mdzsKPj4g PiA+ID4gPgo+PiA+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9p bnRlbF9ndF9jbG9ja191dGlscy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3Rf Y2xvY2tfdXRpbHMuYwo+PiA+ID4gPiA+IGluZGV4IDU4MmZjYWVlMTFhYS4uOWYwZTcyOWQyZDE1 IDEwMDY0NAo+PiA+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0 X2Nsb2NrX3V0aWxzLmMKPj4gPiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9p bnRlbF9ndF9jbG9ja191dGlscy5jCj4+ID4gPiA+ID4gQEAgLTc2LDcgKzc2LDcgQEAgc3RhdGlj IHUzMiByZWFkX2Nsb2NrX2ZyZXF1ZW5jeShzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUpCj4+ ID4gPiA+ID4gIAl1MzIgZjE5XzJfbWh6ID0gMTkyMDAwMDA7Cj4+ID4gPiA+ID4gIAl1MzIgZjI0 X21oeiA9IDI0MDAwMDAwOwo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gLQlpZiAoSU5URUxfR0VOKHVu Y29yZS0+aTkxNSkgPD0gNCkgewo+PiA+ID4gPiA+ICsJaWYgKEdSQVBISUNTX1ZFUih1bmNvcmUt Pmk5MTUpIDw9IDQpIHsKPj4gPiA+ID4gPiAgCQkvKgo+PiA+ID4gPiA+ICAJCSAqIFBSTXMgc2F5 Ogo+PiA+ID4gPiA+ICAJCSAqCj4+ID4gPiA+ID4gQEAgLTg1LDcgKzg1LDcgQEAgc3RhdGljIHUz MiByZWFkX2Nsb2NrX2ZyZXF1ZW5jeShzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUpCj4+ID4g PiA+ID4gIAkJICogICAgICAo4oCcQ0xLQ0ZH4oCdKSBNQ0hCQVIgcmVnaXN0ZXIpCj4+ID4gPiA+ ID4gIAkJICovCj4+ID4gPiA+ID4gIAkJcmV0dXJuIFJVTlRJTUVfSU5GTyh1bmNvcmUtPmk5MTUp LT5yYXdjbGtfZnJlcSAqIDEwMDAgLyAxNjsKPj4gPiA+ID4gPiAtCX0gZWxzZSBpZiAoSU5URUxf R0VOKHVuY29yZS0+aTkxNSkgPD0gOCkgewo+PiA+ID4gPiA+ICsJfSBlbHNlIGlmIChHUkFQSElD U19WRVIodW5jb3JlLT5pOTE1KSA8PSA4KSB7Cj4+ID4gPiA+ID4gIAkJLyoKPj4gPiA+ID4gPiAg CQkgKiBQUk1zIHNheToKPj4gPiA+ID4gPiAgCQkgKgo+PiA+ID4gPiA+IEBAIC05NCw3ICs5NCw3 IEBAIHN0YXRpYyB1MzIgcmVhZF9jbG9ja19mcmVxdWVuY3koc3RydWN0IGludGVsX3VuY29yZSAq dW5jb3JlKQo+PiA+ID4gPiA+ICAJCSAqICAgICAgcm9sbGluZyBvdmVyIGV2ZXJ5IDEuNSBob3Vy cykuCj4+ID4gPiA+ID4gIAkJICovCj4+ID4gPiA+ID4gIAkJcmV0dXJuIGYxMl81X21oejsKPj4g PiA+ID4gPiAtCX0gZWxzZSBpZiAoSU5URUxfR0VOKHVuY29yZS0+aTkxNSkgPD0gOSkgewo+PiA+ ID4gPiA+ICsJfSBlbHNlIGlmIChHUkFQSElDU19WRVIodW5jb3JlLT5pOTE1KSA8PSA5KSB7Cj4+ ID4gPiA+ID4gIAkJdTMyIGN0Y19yZWcgPSBpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUsIENUQ19N T0RFKTsKPj4gPiA+ID4gPiAgCQl1MzIgZnJlcSA9IDA7Cj4+ID4gPiA+ID4KPj4gPiA+ID4gPiBA QCAtMTEzLDcgKzExMyw3IEBAIHN0YXRpYyB1MzIgcmVhZF9jbG9ja19mcmVxdWVuY3koc3RydWN0 IGludGVsX3VuY29yZSAqdW5jb3JlKQo+PiA+ID4gPiA+ICAJCX0KPj4gPiA+ID4gPgo+PiA+ID4g PiA+ICAJCXJldHVybiBmcmVxOwo+PiA+ID4gPiA+IC0JfSBlbHNlIGlmIChJTlRFTF9HRU4odW5j b3JlLT5pOTE1KSA8PSAxMikgewo+PiA+ID4gPiA+ICsJfSBlbHNlIGlmIChHUkFQSElDU19WRVIo dW5jb3JlLT5pOTE1KSA8PSAxMikgewo+PiA+ID4gPiA+ICAJCXUzMiBjdGNfcmVnID0gaW50ZWxf dW5jb3JlX3JlYWQodW5jb3JlLCBDVENfTU9ERSk7Cj4+ID4gPiA+ID4gIAkJdTMyIGZyZXEgPSAw Owo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gQEAgLTEyOCw3ICsxMjgsNyBAQCBzdGF0aWMgdTMyIHJl YWRfY2xvY2tfZnJlcXVlbmN5KHN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSkKPj4gPiA+ID4g PiAgCQl9IGVsc2Ugewo+PiA+ID4gPiA+ICAJCQl1MzIgYzAgPSBpbnRlbF91bmNvcmVfcmVhZCh1 bmNvcmUsIFJQTV9DT05GSUcwKTsKPj4gPiA+ID4gPgo+PiA+ID4gPiA+IC0JCQlpZiAoSU5URUxf R0VOKHVuY29yZS0+aTkxNSkgPD0gMTApCj4+ID4gPiA+ID4gKwkJCWlmIChHUkFQSElDU19WRVIo dW5jb3JlLT5pOTE1KSA8PSAxMCkKPj4gPiA+ID4gPiAgCQkJCWZyZXEgPSBnZW4xMF9nZXRfY3J5 c3RhbF9jbG9ja19mcmVxKHVuY29yZSwgYzApOwo+PiA+ID4gPiA+ICAJCQllbHNlCj4+ID4gPiA+ ID4gIAkJCQlmcmVxID0gZ2VuMTFfZ2V0X2NyeXN0YWxfY2xvY2tfZnJlcSh1bmNvcmUsIGMwKTsK Pj4gPiA+ID4gPiBAQCAtMjExLDcgKzIxMSw3IEBAIHU2NCBpbnRlbF9ndF9uc190b19wbV9pbnRl cnZhbChjb25zdCBzdHJ1Y3QgaW50ZWxfZ3QgKmd0LCB1NjQgbnMpCj4+ID4gPiA+ID4gIAkgKiBm cm96ZW4gbWFjaGluZS4KPj4gPiA+ID4gPiAgCSAqLwo+PiA+ID4gPiA+ICAJdmFsID0gZGl2X3U2 NF9yb3VuZHVwKGludGVsX2d0X25zX3RvX2Nsb2NrX2ludGVydmFsKGd0LCBucyksIDE2KTsKPj4g PiA+ID4gPiAtCWlmIChJU19HRU4oZ3QtPmk5MTUsIDYpKQo+PiA+ID4gPiA+ICsJaWYgKEdSQVBI SUNTX1ZFUihndC0+aTkxNSkgPT0gNikKPj4gPiA+ID4gPiAgCQl2YWwgPSBkaXZfdTY0X3JvdW5k dXAodmFsLCAyNSkgKiAyNTsKPj4gPiA+ID4gPgo+PiA+ID4gPiA+ICAJcmV0dXJuIHZhbDsKPj4g PiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfaXJx LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF9pcnEuYwo+PiA+ID4gPiA+IGlu ZGV4IGQyOTEyNmM0NThiYS4uMWVjNjNjY2VhYmY2IDEwMDY0NAo+PiA+ID4gPiA+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X2lycS5jCj4+ID4gPiA+ID4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfaXJxLmMKPj4gPiA+ID4gPiBAQCAtMzk1LDcg KzM5NSw3IEBAIHZvaWQgZ2VuNV9ndF9pcnFfcmVzZXQoc3RydWN0IGludGVsX2d0ICpndCkKPj4g PiA+ID4gPiAgCXN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSA9IGd0LT51bmNvcmU7Cj4+ID4g PiA+ID4KPj4gPiA+ID4gPiAgCUdFTjNfSVJRX1JFU0VUKHVuY29yZSwgR1QpOwo+PiA+ID4gPiA+ IC0JaWYgKElOVEVMX0dFTihndC0+aTkxNSkgPj0gNikKPj4gPiA+ID4gPiArCWlmIChHUkFQSElD U19WRVIoZ3QtPmk5MTUpID49IDYpCj4+ID4gPiA+ID4gIAkJR0VOM19JUlFfUkVTRVQodW5jb3Jl LCBHRU42X1BNKTsKPj4gPiA+ID4gPiAgfQo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gQEAgLTQxMywx NCArNDEzLDE0IEBAIHZvaWQgZ2VuNV9ndF9pcnFfcG9zdGluc3RhbGwoc3RydWN0IGludGVsX2d0 ICpndCkKPj4gPiA+ID4gPiAgCX0KPj4gPiA+ID4gPgo+PiA+ID4gPiA+ICAJZ3RfaXJxcyB8PSBH VF9SRU5ERVJfVVNFUl9JTlRFUlJVUFQ7Cj4+ID4gPiA+ID4gLQlpZiAoSVNfR0VOKGd0LT5pOTE1 LCA1KSkKPj4gPiA+ID4gPiArCWlmIChHUkFQSElDU19WRVIoZ3QtPmk5MTUpID09IDUpCj4+ID4g PiA+ID4gIAkJZ3RfaXJxcyB8PSBJTEtfQlNEX1VTRVJfSU5URVJSVVBUOwo+PiA+ID4gPiA+ICAJ ZWxzZQo+PiA+ID4gPiA+ICAJCWd0X2lycXMgfD0gR1RfQkxUX1VTRVJfSU5URVJSVVBUIHwgR1Rf QlNEX1VTRVJfSU5URVJSVVBUOwo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gIAlHRU4zX0lSUV9JTklU KHVuY29yZSwgR1QsIGd0LT5ndF9pbXIsIGd0X2lycXMpOwo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4g LQlpZiAoSU5URUxfR0VOKGd0LT5pOTE1KSA+PSA2KSB7Cj4+ID4gPiA+ID4gKwlpZiAoR1JBUEhJ Q1NfVkVSKGd0LT5pOTE1KSA+PSA2KSB7Cj4+ID4gPiA+ID4gIAkJLyoKPj4gPiA+ID4gPiAgCQkg KiBSUFMgaW50ZXJydXB0cyB3aWxsIGdldCBlbmFibGVkL2Rpc2FibGVkIG9uIGRlbWFuZCB3aGVu IFJQUwo+PiA+ID4gPiA+ICAJCSAqIGl0c2VsZiBpcyBlbmFibGVkL2Rpc2FibGVkLgo+PiA+ID4g PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF9wbV9pcnEu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3BtX2lycS5jCj4+ID4gPiA+ID4g aW5kZXggODExYTExZWQxODFjLi5mZTUxZjg5NGIwNzMgMTAwNjQ0Cj4+ID4gPiA+ID4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfcG1faXJxLmMKPj4gPiA+ID4gPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF9wbV9pcnEuYwo+PiA+ID4gPiA+IEBA IC0xNiwxMCArMTYsMTAgQEAgc3RhdGljIHZvaWQgd3JpdGVfcG1faW1yKHN0cnVjdCBpbnRlbF9n dCAqZ3QpCj4+ID4gPiA+ID4gIAl1MzIgbWFzayA9IGd0LT5wbV9pbXI7Cj4+ID4gPiA+ID4gIAlp OTE1X3JlZ190IHJlZzsKPj4gPiA+ID4gPgo+PiA+ID4gPiA+IC0JaWYgKElOVEVMX0dFTihpOTE1 KSA+PSAxMSkgewo+PiA+ID4gPiA+ICsJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSAxMSkgewo+ PiA+ID4gPiA+ICAJCXJlZyA9IEdFTjExX0dQTV9XR0JPWFBFUkZfSU5UUl9NQVNLOwo+PiA+ID4g PiA+ICAJCW1hc2sgPDw9IDE2OyAvKiBwbSBpcyBpbiB1cHBlciBoYWxmICovCj4+ID4gPiA+ID4g LQl9IGVsc2UgaWYgKElOVEVMX0dFTihpOTE1KSA+PSA4KSB7Cj4+ID4gPiA+ID4gKwl9IGVsc2Ug aWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSA4KSB7Cj4+ID4gPiA+ID4gIAkJcmVnID0gR0VOOF9H VF9JTVIoMik7Cj4+ID4gPiA+ID4gIAl9IGVsc2Ugewo+PiA+ID4gPiA+ICAJCXJlZyA9IEdFTjZf UE1JTVI7Cj4+ID4gPiA+ID4gQEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBnZW42X2d0X3BtX21hc2tf aXJxKHN0cnVjdCBpbnRlbF9ndCAqZ3QsIHUzMiBtYXNrKQo+PiA+ID4gPiA+ICB2b2lkIGdlbjZf Z3RfcG1fcmVzZXRfaWlyKHN0cnVjdCBpbnRlbF9ndCAqZ3QsIHUzMiByZXNldF9tYXNrKQo+PiA+ ID4gPiA+ICB7Cj4+ID4gPiA+ID4gIAlzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUgPSBndC0+ dW5jb3JlOwo+PiA+ID4gPiA+IC0JaTkxNV9yZWdfdCByZWcgPSBJTlRFTF9HRU4oZ3QtPmk5MTUp ID49IDggPyBHRU44X0dUX0lJUigyKSA6IEdFTjZfUE1JSVI7Cj4+ID4gPiA+ID4gKwlpOTE1X3Jl Z190IHJlZyA9IEdSQVBISUNTX1ZFUihndC0+aTkxNSkgPj0gOCA/IEdFTjhfR1RfSUlSKDIpIDog R0VONl9QTUlJUjsKPj4gPiA+ID4gPgo+PiA+ID4gPiA+ICAJbG9ja2RlcF9hc3NlcnRfaGVsZCgm Z3QtPmlycV9sb2NrKTsKPj4gPiA+ID4gPgo+PiA+ID4gPiA+IEBAIC03NywxMCArNzcsMTAgQEAg c3RhdGljIHZvaWQgd3JpdGVfcG1faWVyKHN0cnVjdCBpbnRlbF9ndCAqZ3QpCj4+ID4gPiA+ID4g IAl1MzIgbWFzayA9IGd0LT5wbV9pZXI7Cj4+ID4gPiA+ID4gIAlpOTE1X3JlZ190IHJlZzsKPj4g PiA+ID4gPgo+PiA+ID4gPiA+IC0JaWYgKElOVEVMX0dFTihpOTE1KSA+PSAxMSkgewo+PiA+ID4g PiA+ICsJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSAxMSkgewo+PiA+ID4gPiA+ICAJCXJlZyA9 IEdFTjExX0dQTV9XR0JPWFBFUkZfSU5UUl9FTkFCTEU7Cj4+ID4gPiA+ID4gIAkJbWFzayA8PD0g MTY7IC8qIHBtIGlzIGluIHVwcGVyIGhhbGYgKi8KPj4gPiA+ID4gPiAtCX0gZWxzZSBpZiAoSU5U RUxfR0VOKGk5MTUpID49IDgpIHsKPj4gPiA+ID4gPiArCX0gZWxzZSBpZiAoR1JBUEhJQ1NfVkVS KGk5MTUpID49IDgpIHsKPj4gPiA+ID4gPiAgCQlyZWcgPSBHRU44X0dUX0lFUigyKTsKPj4gPiA+ ID4gPiAgCX0gZWxzZSB7Cj4+ID4gPiA+ID4gIAkJcmVnID0gR0VONl9QTUlFUjsKPj4gPiA+ID4g PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3R0LmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndHQuYwo+PiA+ID4gPiA+IGluZGV4IDliOThmOWQ5 ZmFhMy4uYjljOTk5MzU3M2VjIDEwMDY0NAo+PiA+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L2ludGVsX2d0dC5jCj4+ID4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvaW50ZWxfZ3R0LmMKPj4gPiA+ID4gPiBAQCAtMzI3LDcgKzMyNyw3IEBAIHZvaWQgZ3R0 X3dyaXRlX3dvcmthcm91bmRzKHN0cnVjdCBpbnRlbF9ndCAqZ3QpCj4+ID4gPiA+ID4gIAkJaW50 ZWxfdW5jb3JlX3dyaXRlKHVuY29yZSwKPj4gPiA+ID4gPiAgCQkJCSAgIEdFTjhfTDNfTFJBXzFf R1BHUFUsCj4+ID4gPiA+ID4gIAkJCQkgICBHRU45X0wzX0xSQV8xX0dQR1BVX0RFRkFVTFRfVkFM VUVfQlhUKTsKPj4gPiA+ID4gPiAtCWVsc2UgaWYgKElOVEVMX0dFTihpOTE1KSA+PSA5ICYmIElO VEVMX0dFTihpOTE1KSA8PSAxMSkKPj4gPiA+ID4gPiArCWVsc2UgaWYgKEdSQVBISUNTX1ZFUihp OTE1KSA+PSA5ICYmIEdSQVBISUNTX1ZFUihpOTE1KSA8PSAxMSkKPj4gPiA+ID4gPiAgCQlpbnRl bF91bmNvcmVfd3JpdGUodW5jb3JlLAo+PiA+ID4gPiA+ICAJCQkJICAgR0VOOF9MM19MUkFfMV9H UEdQVSwKPj4gPiA+ID4gPiAgCQkJCSAgIEdFTjlfTDNfTFJBXzFfR1BHUFVfREVGQVVMVF9WQUxV RV9TS0wpOwo+PiA+ID4gPiA+IEBAIC0zNDQsMTMgKzM0NCwxMyBAQCB2b2lkIGd0dF93cml0ZV93 b3JrYXJvdW5kcyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQo+PiA+ID4gPiA+ICAJICogZHJpdmVyLgo+ PiA+ID4gPiA+ICAJICovCj4+ID4gPiA+ID4gIAlpZiAoSEFTX1BBR0VfU0laRVMoaTkxNSwgSTkx NV9HVFRfUEFHRV9TSVpFXzY0SykgJiYKPj4gPiA+ID4gPiAtCSAgICBJTlRFTF9HRU4oaTkxNSkg PD0gMTApCj4+ID4gPiA+ID4gKwkgICAgR1JBUEhJQ1NfVkVSKGk5MTUpIDw9IDEwKQo+PiA+ID4g PiA+ICAJCWludGVsX3VuY29yZV9ybXcodW5jb3JlLAo+PiA+ID4gPiA+ICAJCQkJIEdFTjhfR0FN V19FQ09fREVWX1JXX0lBLAo+PiA+ID4gPiA+ICAJCQkJIDAsCj4+ID4gPiA+ID4gIAkJCQkgR0FN V19FQ09fRU5BQkxFXzY0S19JUFNfRklFTEQpOwo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gLQlpZiAo SVNfR0VOX1JBTkdFKGk5MTUsIDgsIDExKSkgewo+PiA+ID4gPiA+ICsJaWYgKElTX0dSQVBISUNT X1ZFUihpOTE1LCA4LCAxMSkpIHsKPj4gPiA+ID4gPiAgCQlib29sIGNhbl91c2VfZ3R0X2NhY2hl ID0gdHJ1ZTsKPj4gPiA+ID4gPgo+PiA+ID4gPiA+ICAJCS8qCj4+ID4gPiA+ID4gQEAgLTQzMiw3 ICs0MzIsNyBAQCBzdGF0aWMgdm9pZCBiZHdfc2V0dXBfcHJpdmF0ZV9wcGF0KHN0cnVjdCBpbnRl bF91bmNvcmUgKnVuY29yZSkKPj4gPiA+ID4gPiAgCSAgICAgIEdFTjhfUFBBVCg3LCBHRU44X1BQ QVRfV0IgfCBHRU44X1BQQVRfTExDRUxMQyB8IEdFTjhfUFBBVF9BR0UoMykpOwo+PiA+ID4gPiA+ Cj4+ID4gPiA+ID4gIAkvKiBmb3Igc2Nhbm91dCB3aXRoIGVMTEMgKi8KPj4gPiA+ID4gPiAtCWlm IChJTlRFTF9HRU4oaTkxNSkgPj0gOSkKPj4gPiA+ID4gPiArCWlmIChHUkFQSElDU19WRVIoaTkx NSkgPj0gOSkKPj4gPiA+ID4gPiAgCQlwYXQgfD0gR0VOOF9QUEFUKDIsIEdFTjhfUFBBVF9XQiB8 IEdFTjhfUFBBVF9FTExDX09WRVJSSURFKTsKPj4gPiA+ID4gPiAgCWVsc2UKPj4gPiA+ID4gPiAg CQlwYXQgfD0gR0VOOF9QUEFUKDIsIEdFTjhfUFBBVF9XVCB8IEdFTjhfUFBBVF9MTENFTExDKTsK Pj4gPiA+ID4gPiBAQCAtNDgxLDExICs0ODEsMTEgQEAgdm9pZCBzZXR1cF9wcml2YXRlX3BhdChz dHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUpCj4+ID4gPiA+ID4gIHsKPj4gPiA+ID4gPiAgCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gdW5jb3JlLT5pOTE1Owo+PiA+ID4gPiA+Cj4+ ID4gPiA+ID4gLQlHRU1fQlVHX09OKElOVEVMX0dFTihpOTE1KSA8IDgpOwo+PiA+ID4gPiA+ICsJ R0VNX0JVR19PTihHUkFQSElDU19WRVIoaTkxNSkgPCA4KTsKPj4gPiA+ID4gPgo+PiA+ID4gPiA+ IC0JaWYgKElOVEVMX0dFTihpOTE1KSA+PSAxMikKPj4gPiA+ID4gPiArCWlmIChHUkFQSElDU19W RVIoaTkxNSkgPj0gMTIpCj4+ID4gPiA+ID4gIAkJdGdsX3NldHVwX3ByaXZhdGVfcHBhdCh1bmNv cmUpOwo+PiA+ID4gPiA+IC0JZWxzZSBpZiAoSU5URUxfR0VOKGk5MTUpID49IDEwKQo+PiA+ID4g PiA+ICsJZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDEwKQo+PiA+ID4gPiA+ICAJCWNu bF9zZXR1cF9wcml2YXRlX3BwYXQodW5jb3JlKTsKPj4gPiA+ID4gPiAgCWVsc2UgaWYgKElTX0NI RVJSWVZJRVcoaTkxNSkgfHwgSVNfR0VOOV9MUChpOTE1KSkKPj4gPiA+ID4gPiAgCQljaHZfc2V0 dXBfcHJpdmF0ZV9wcGF0KHVuY29yZSk7Cj4+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L2ludGVsX2xsYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50 ZWxfbGxjLmMKPj4gPiA+ID4gPiBpbmRleCAwNzVkNzQxNjQ0YWUuLmViMWExNWRlZWQyMiAxMDA2 NDQKPj4gPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9sbGMuYwo+ PiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xsYy5jCj4+ID4g PiA+ID4gQEAgLTY0LDcgKzY0LDcgQEAgc3RhdGljIGJvb2wgZ2V0X2lhX2NvbnN0YW50cyhzdHJ1 Y3QgaW50ZWxfbGxjICpsbGMsCj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAgCWNvbnN0cy0+bWluX2dw dV9mcmVxID0gcnBzLT5taW5fZnJlcTsKPj4gPiA+ID4gPiAgCWNvbnN0cy0+bWF4X2dwdV9mcmVx ID0gcnBzLT5tYXhfZnJlcTsKPj4gPiA+ID4gPiAtCWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gOSkg ewo+PiA+ID4gPiA+ICsJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSA5KSB7Cj4+ID4gPiA+ID4g IAkJLyogQ29udmVydCBHVCBmcmVxdWVuY3kgdG8gNTAgSFogdW5pdHMgKi8KPj4gPiA+ID4gPiAg CQljb25zdHMtPm1pbl9ncHVfZnJlcSAvPSBHRU45X0ZSRVFfU0NBTEVSOwo+PiA+ID4gPiA+ICAJ CWNvbnN0cy0+bWF4X2dwdV9mcmVxIC89IEdFTjlfRlJFUV9TQ0FMRVI7Cj4+ID4gPiA+ID4gQEAg LTgzLDEzICs4MywxMyBAQCBzdGF0aWMgdm9pZCBjYWxjX2lhX2ZyZXEoc3RydWN0IGludGVsX2xs YyAqbGxjLAo+PiA+ID4gPiA+ICAJY29uc3QgaW50IGRpZmYgPSBjb25zdHMtPm1heF9ncHVfZnJl cSAtIGdwdV9mcmVxOwo+PiA+ID4gPiA+ICAJdW5zaWduZWQgaW50IGlhX2ZyZXEgPSAwLCByaW5n X2ZyZXEgPSAwOwo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gLQlpZiAoSU5URUxfR0VOKGk5MTUpID49 IDkpIHsKPj4gPiA+ID4gPiArCWlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gOSkgewo+PiA+ID4g PiA+ICAJCS8qCj4+ID4gPiA+ID4gIAkJICogcmluZ19mcmVxID0gMiAqIEdULiByaW5nX2ZyZXEg aXMgaW4gMTAwTUh6IHVuaXRzCj4+ID4gPiA+ID4gIAkJICogTm8gZmxvb3IgcmVxdWlyZWQgZm9y IHJpbmcgZnJlcXVlbmN5IG9uIFNLTC4KPj4gPiA+ID4gPiAgCQkgKi8KPj4gPiA+ID4gPiAgCQly aW5nX2ZyZXEgPSBncHVfZnJlcTsKPj4gPiA+ID4gPiAtCX0gZWxzZSBpZiAoSU5URUxfR0VOKGk5 MTUpID49IDgpIHsKPj4gPiA+ID4gPiArCX0gZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49 IDgpIHsKPj4gPiA+ID4gPiAgCQkvKiBtYXgoMiAqIEdULCBERFIpLiBOQjogR1QgaXMgNTBNSHog dW5pdHMgKi8KPj4gPiA+ID4gPiAgCQlyaW5nX2ZyZXEgPSBtYXgoY29uc3RzLT5taW5fcmluZ19m cmVxLCBncHVfZnJlcSk7Cj4+ID4gPiA+ID4gIAl9IGVsc2UgaWYgKElTX0hBU1dFTEwoaTkxNSkp IHsKPj4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxf bHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYwo+PiA+ID4gPiA+IGlu ZGV4IGFhZmUyYTRkZjQ5Ni4uYTI3YmFjMGE0YmZiIDEwMDY0NAo+PiA+ID4gPiA+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jCj4+ID4gPiA+ID4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMKPj4gPiA+ID4gPiBAQCAtNDcsNyArNDcsNyBA QCBzdGF0aWMgdm9pZCBzZXRfb2Zmc2V0cyh1MzIgKnJlZ3MsCj4+ID4gPiA+ID4gIAkJKnJlZ3Mg PSBNSV9MT0FEX1JFR0lTVEVSX0lNTShjb3VudCk7Cj4+ID4gPiA+ID4gIAkJaWYgKGZsYWdzICYg UE9TVEVEKQo+PiA+ID4gPiA+ICAJCQkqcmVncyB8PSBNSV9MUklfRk9SQ0VfUE9TVEVEOwo+PiA+ ID4gPiA+IC0JCWlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA+PSAxMSkKPj4gPiA+ID4gPiAr CQlpZiAoR1JBUEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkgPj0gMTEpCj4+ID4gPiA+ID4gIAkJCSpy ZWdzIHw9IE1JX0xSSV9MUk1fQ1NfTU1JTzsKPj4gPiA+ID4gPiAgCQlyZWdzKys7Cj4+ID4gPiA+ ID4KPj4gPiA+ID4gPiBAQCAtNzAsNyArNzAsNyBAQCBzdGF0aWMgdm9pZCBzZXRfb2Zmc2V0cyh1 MzIgKnJlZ3MsCj4+ID4gPiA+ID4gIAlpZiAoY2xvc2UpIHsKPj4gPiA+ID4gPiAgCQkvKiBDbG9z ZSB0aGUgYmF0Y2g7IHVzZWQgbWFpbmx5IGJ5IGxpdmVfbHJjX2xheW91dCgpICovCj4+ID4gPiA+ ID4gIAkJKnJlZ3MgPSBNSV9CQVRDSF9CVUZGRVJfRU5EOwo+PiA+ID4gPiA+IC0JCWlmIChJTlRF TF9HRU4oZW5naW5lLT5pOTE1KSA+PSAxMCkKPj4gPiA+ID4gPiArCQlpZiAoR1JBUEhJQ1NfVkVS KGVuZ2luZS0+aTkxNSkgPj0gMTApCj4+ID4gPiA+ID4gIAkJCSpyZWdzIHw9IEJJVCgwKTsKPj4g PiA+ID4gPiAgCX0KPj4gPiA+ID4gPiAgfQo+PiA+ID4gPiA+IEBAIC00OTgsMjIgKzQ5OCwyMiBA QCBzdGF0aWMgY29uc3QgdTggKnJlZ19vZmZzZXRzKGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSkKPj4gPiA+ID4gPiAgCSAqIGFkZHJlc3NpbmcgdG8gYXV0b21hdGljIGZpeHVw IHRoZSByZWdpc3RlciBzdGF0ZSBiZXR3ZWVuIHRoZQo+PiA+ID4gPiA+ICAJICogcGh5c2ljYWwg ZW5naW5lcyBmb3IgdmlydHVhbCBlbmdpbmUuCj4+ID4gPiA+ID4gIAkgKi8KPj4gPiA+ID4gPiAt CUdFTV9CVUdfT04oSU5URUxfR0VOKGVuZ2luZS0+aTkxNSkgPj0gMTIgJiYKPj4gPiA+ID4gPiAr CUdFTV9CVUdfT04oR1JBUEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkgPj0gMTIgJiYKPj4gPiA+ID4g PiAgCQkgICAhaW50ZWxfZW5naW5lX2hhc19yZWxhdGl2ZV9tbWlvKGVuZ2luZSkpOwo+PiA+ID4g PiA+Cj4+ID4gPiA+ID4gIAlpZiAoZW5naW5lLT5jbGFzcyA9PSBSRU5ERVJfQ0xBU1MpIHsKPj4g PiA+ID4gPiAtCQlpZiAoSU5URUxfR0VOKGVuZ2luZS0+aTkxNSkgPj0gMTIpCj4+ID4gPiA+ID4g KwkJaWYgKEdSQVBISUNTX1ZFUihlbmdpbmUtPmk5MTUpID49IDEyKQo+PiA+ID4gPiA+ICAJCQly ZXR1cm4gZ2VuMTJfcmNzX29mZnNldHM7Cj4+ID4gPiA+ID4gLQkJZWxzZSBpZiAoSU5URUxfR0VO KGVuZ2luZS0+aTkxNSkgPj0gMTEpCj4+ID4gPiA+ID4gKwkJZWxzZSBpZiAoR1JBUEhJQ1NfVkVS KGVuZ2luZS0+aTkxNSkgPj0gMTEpCj4+ID4gPiA+ID4gIAkJCXJldHVybiBnZW4xMV9yY3Nfb2Zm c2V0czsKPj4gPiA+ID4gPiAtCQllbHNlIGlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA+PSA5 KQo+PiA+ID4gPiA+ICsJCWVsc2UgaWYgKEdSQVBISUNTX1ZFUihlbmdpbmUtPmk5MTUpID49IDkp Cj4+ID4gPiA+ID4gIAkJCXJldHVybiBnZW45X3Jjc19vZmZzZXRzOwo+PiA+ID4gPiA+ICAJCWVs c2UKPj4gPiA+ID4gPiAgCQkJcmV0dXJuIGdlbjhfcmNzX29mZnNldHM7Cj4+ID4gPiA+ID4gIAl9 IGVsc2Ugewo+PiA+ID4gPiA+IC0JCWlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA+PSAxMikK Pj4gPiA+ID4gPiArCQlpZiAoR1JBUEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkgPj0gMTIpCj4+ID4g PiA+ID4gIAkJCXJldHVybiBnZW4xMl94Y3Nfb2Zmc2V0czsKPj4gPiA+ID4gPiAtCQllbHNlIGlm IChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA+PSA5KQo+PiA+ID4gPiA+ICsJCWVsc2UgaWYgKEdS QVBISUNTX1ZFUihlbmdpbmUtPmk5MTUpID49IDkpCj4+ID4gPiA+ID4gIAkJCXJldHVybiBnZW45 X3hjc19vZmZzZXRzOwo+PiA+ID4gPiA+ICAJCWVsc2UKPj4gPiA+ID4gPiAgCQkJcmV0dXJuIGdl bjhfeGNzX29mZnNldHM7Cj4+ID4gPiA+ID4gQEAgLTUyMiw5ICs1MjIsOSBAQCBzdGF0aWMgY29u c3QgdTggKnJlZ19vZmZzZXRzKGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkK Pj4gPiA+ID4gPgo+PiA+ID4gPiA+ICBzdGF0aWMgaW50IGxyY19yaW5nX21pX21vZGUoY29uc3Qg c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+PiA+ID4gPiA+ICB7Cj4+ID4gPiA+ID4g LQlpZiAoSU5URUxfR0VOKGVuZ2luZS0+aTkxNSkgPj0gMTIpCj4+ID4gPiA+ID4gKwlpZiAoR1JB UEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkgPj0gMTIpCj4+ID4gPiA+ID4gIAkJcmV0dXJuIDB4NjA7 Cj4+ID4gPiA+ID4gLQllbHNlIGlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA+PSA5KQo+PiA+ ID4gPiA+ICsJZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkgPj0gOSkKPj4gPiA+ ID4gPiAgCQlyZXR1cm4gMHg1NDsKPj4gPiA+ID4gPiAgCWVsc2UgaWYgKGVuZ2luZS0+Y2xhc3Mg PT0gUkVOREVSX0NMQVNTKQo+PiA+ID4gPiA+ICAJCXJldHVybiAweDU4Owo+PiA+ID4gPiA+IEBA IC01MzQsOSArNTM0LDkgQEAgc3RhdGljIGludCBscmNfcmluZ19taV9tb2RlKGNvbnN0IHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPj4gPiA+ID4gPgo+PiA+ID4gPiA+ICBzdGF0aWMg aW50IGxyY19yaW5nX2dwcjAoY29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ PiA+ID4gPiA+ICB7Cj4+ID4gPiA+ID4gLQlpZiAoSU5URUxfR0VOKGVuZ2luZS0+aTkxNSkgPj0g MTIpCj4+ID4gPiA+ID4gKwlpZiAoR1JBUEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkgPj0gMTIpCj4+ ID4gPiA+ID4gIAkJcmV0dXJuIDB4NzQ7Cj4+ID4gPiA+ID4gLQllbHNlIGlmIChJTlRFTF9HRU4o ZW5naW5lLT5pOTE1KSA+PSA5KQo+PiA+ID4gPiA+ICsJZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGVu Z2luZS0+aTkxNSkgPj0gOSkKPj4gPiA+ID4gPiAgCQlyZXR1cm4gMHg2ODsKPj4gPiA+ID4gPiAg CWVsc2UgaWYgKGVuZ2luZS0+Y2xhc3MgPT0gUkVOREVSX0NMQVNTKQo+PiA+ID4gPiA+ICAJCXJl dHVybiAweGQ4Owo+PiA+ID4gPiA+IEBAIC01NDYsOSArNTQ2LDkgQEAgc3RhdGljIGludCBscmNf cmluZ19ncHIwKGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPj4gPiA+ID4g Pgo+PiA+ID4gPiA+ICBzdGF0aWMgaW50IGxyY19yaW5nX3dhX2JiX3Blcl9jdHgoY29uc3Qgc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+PiA+ID4gPiA+ICB7Cj4+ID4gPiA+ID4gLQlp ZiAoSU5URUxfR0VOKGVuZ2luZS0+aTkxNSkgPj0gMTIpCj4+ID4gPiA+ID4gKwlpZiAoR1JBUEhJ Q1NfVkVSKGVuZ2luZS0+aTkxNSkgPj0gMTIpCj4+ID4gPiA+ID4gIAkJcmV0dXJuIDB4MTI7Cj4+ ID4gPiA+ID4gLQllbHNlIGlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA+PSA5IHx8IGVuZ2lu ZS0+Y2xhc3MgPT0gUkVOREVSX0NMQVNTKQo+PiA+ID4gPiA+ICsJZWxzZSBpZiAoR1JBUEhJQ1Nf VkVSKGVuZ2luZS0+aTkxNSkgPj0gOSB8fCBlbmdpbmUtPmNsYXNzID09IFJFTkRFUl9DTEFTUykK Pj4gPiA+ID4gPiAgCQlyZXR1cm4gMHgxODsKPj4gPiA+ID4gPiAgCWVsc2UKPj4gPiA+ID4gPiAg CQlyZXR1cm4gLTE7Cj4+ID4gPiA+ID4gQEAgLTU4MSw5ICs1ODEsOSBAQCBzdGF0aWMgaW50IGxy Y19yaW5nX2NtZF9idWZfY2N0bChjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUp Cj4+ID4gPiA+ID4gIAlpZiAoZW5naW5lLT5jbGFzcyAhPSBSRU5ERVJfQ0xBU1MpCj4+ID4gPiA+ ID4gIAkJcmV0dXJuIC0xOwo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gLQlpZiAoSU5URUxfR0VOKGVu Z2luZS0+aTkxNSkgPj0gMTIpCj4+ID4gPiA+ID4gKwlpZiAoR1JBUEhJQ1NfVkVSKGVuZ2luZS0+ aTkxNSkgPj0gMTIpCj4+ID4gPiA+ID4gIAkJcmV0dXJuIDB4YjY7Cj4+ID4gPiA+ID4gLQllbHNl IGlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA+PSAxMSkKPj4gPiA+ID4gPiArCWVsc2UgaWYg KEdSQVBISUNTX1ZFUihlbmdpbmUtPmk5MTUpID49IDExKQo+PiA+ID4gPiA+ICAJCXJldHVybiAw eGFhOwo+PiA+ID4gPiA+ICAJZWxzZQo+PiA+ID4gPiA+ICAJCXJldHVybiAtMTsKPj4gPiA+ID4g PiBAQCAtNTkyLDkgKzU5Miw5IEBAIHN0YXRpYyBpbnQgbHJjX3JpbmdfY21kX2J1Zl9jY3RsKGNv bnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPj4gPiA+ID4gPiAgc3RhdGljIHUz Mgo+PiA+ID4gPiA+ICBscmNfcmluZ19pbmRpcmVjdF9vZmZzZXRfZGVmYXVsdChjb25zdCBzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4+ID4gPiA+ID4gIHsKPj4gPiA+ID4gPiAtCXN3 aXRjaCAoSU5URUxfR0VOKGVuZ2luZS0+aTkxNSkpIHsKPj4gPiA+ID4gPiArCXN3aXRjaCAoR1JB UEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkpIHsKPj4gPiA+ID4gPiAgCWRlZmF1bHQ6Cj4+ID4gPiA+ ID4gLQkJTUlTU0lOR19DQVNFKElOVEVMX0dFTihlbmdpbmUtPmk5MTUpKTsKPj4gPiA+ID4gPiAr CQlNSVNTSU5HX0NBU0UoR1JBUEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkpOwo+PiA+ID4gPiA+ICAJ CWZhbGx0aHJvdWdoOwo+PiA+ID4gPiA+ICAJY2FzZSAxMjoKPj4gPiA+ID4gPiAgCQlyZXR1cm4g R0VOMTJfQ1RYX1JDU19JTkRJUkVDVF9DVFhfT0ZGU0VUX0RFRkFVTFQ7Cj4+ID4gPiA+ID4gQEAg LTYzNyw3ICs2MzcsNyBAQCBzdGF0aWMgdm9pZCBpbml0X2NvbW1vbl9yZWdzKHUzMiAqIGNvbnN0 IHJlZ3MsCj4+ID4gPiA+ID4gIAljdGwgfD0gX01BU0tFRF9CSVRfRElTQUJMRShDVFhfQ1RSTF9F TkdJTkVfQ1RYX1JFU1RPUkVfSU5ISUJJVCk7Cj4+ID4gPiA+ID4gIAlpZiAoaW5oaWJpdCkKPj4g PiA+ID4gPiAgCQljdGwgfD0gQ1RYX0NUUkxfRU5HSU5FX0NUWF9SRVNUT1JFX0lOSElCSVQ7Cj4+ ID4gPiA+ID4gLQlpZiAoSU5URUxfR0VOKGVuZ2luZS0+aTkxNSkgPCAxMSkKPj4gPiA+ID4gPiAr CWlmIChHUkFQSElDU19WRVIoZW5naW5lLT5pOTE1KSA8IDExKQo+PiA+ID4gPiA+ICAJCWN0bCB8 PSBfTUFTS0VEX0JJVF9ESVNBQkxFKENUWF9DVFJMX0VOR0lORV9DVFhfU0FWRV9JTkhJQklUIHwK Pj4gPiA+ID4gPiAgCQkJCQkgICBDVFhfQ1RSTF9SU19DVFhfRU5BQkxFKTsKPj4gPiA+ID4gPiAg CXJlZ3NbQ1RYX0NPTlRFWFRfQ09OVFJPTF0gPSBjdGw7Cj4+ID4gPiA+ID4gQEAgLTgwNSw3ICs4 MDUsNyBAQCBfX2xyY19hbGxvY19zdGF0ZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsIHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPj4gPiA+ID4gPiAgCWlmIChJU19FTkFCTEVEKENP TkZJR19EUk1fSTkxNV9ERUJVR19HRU0pKQo+PiA+ID4gPiA+ICAJCWNvbnRleHRfc2l6ZSArPSBJ OTE1X0dUVF9QQUdFX1NJWkU7IC8qIGZvciByZWR6b25lICovCj4+ID4gPiA+ID4KPj4gPiA+ID4g PiAtCWlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA9PSAxMikgewo+PiA+ID4gPiA+ICsJaWYg KEdSQVBISUNTX1ZFUihlbmdpbmUtPmk5MTUpID09IDEyKSB7Cj4+ID4gPiA+ID4gIAkJY2UtPndh X2JiX3BhZ2UgPSBjb250ZXh0X3NpemUgLyBQQUdFX1NJWkU7Cj4+ID4gPiA+ID4gIAkJY29udGV4 dF9zaXplICs9IFBBR0VfU0laRTsKPj4gPiA+ID4gPiAgCX0KPj4gPiA+ID4gPiBAQCAtMTExNCw3 ICsxMTE0LDcgQEAgc3RhdGljIHUzMiBscmNfZGVzY3JpcHRvcihjb25zdCBzdHJ1Y3QgaW50ZWxf Y29udGV4dCAqY2UpCj4+ID4gPiA+ID4gIAlkZXNjIDw8PSBHRU44X0NUWF9BRERSRVNTSU5HX01P REVfU0hJRlQ7Cj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAgCWRlc2MgfD0gR0VOOF9DVFhfVkFMSUQg fCBHRU44X0NUWF9QUklWSUxFR0U7Cj4+ID4gPiA+ID4gLQlpZiAoSVNfR0VOKGNlLT52bS0+aTkx NSwgOCkpCj4+ID4gPiA+ID4gKwlpZiAoR1JBUEhJQ1NfVkVSKGNlLT52bS0+aTkxNSkgPT0gOCkK Pj4gPiA+ID4gPiAgCQlkZXNjIHw9IEdFTjhfQ1RYX0wzTExDX0NPSEVSRU5UOwo+PiA+ID4gPiA+ Cj4+ID4gPiA+ID4gIAlyZXR1cm4gaTkxNV9nZ3R0X29mZnNldChjZS0+c3RhdGUpIHwgZGVzYzsK Pj4gPiA+ID4gPiBAQCAtMTQ2OSw3ICsxNDY5LDcgQEAgdm9pZCBscmNfaW5pdF93YV9jdHgoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+PiA+ID4gPiA+ICAJaWYgKGVuZ2luZS0+Y2xh c3MgIT0gUkVOREVSX0NMQVNTKQo+PiA+ID4gPiA+ICAJCXJldHVybjsKPj4gPiA+ID4gPgo+PiA+ ID4gPiA+IC0Jc3dpdGNoIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSkgewo+PiA+ID4gPiA+ICsJ c3dpdGNoIChHUkFQSElDU19WRVIoZW5naW5lLT5pOTE1KSkgewo+PiA+ID4gPiA+ICAJY2FzZSAx MjoKPj4gPiA+ID4gPiAgCWNhc2UgMTE6Cj4+ID4gPiA+ID4gIAkJcmV0dXJuOwo+PiA+ID4gPiA+ IEBAIC0xNDg2LDcgKzE0ODYsNyBAQCB2b2lkIGxyY19pbml0X3dhX2N0eChzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpCj4+ID4gPiA+ID4gIAkJd2FfYmJfZm5bMV0gPSBOVUxMOwo+PiA+ ID4gPiA+ICAJCWJyZWFrOwo+PiA+ID4gPiA+ICAJZGVmYXVsdDoKPj4gPiA+ID4gPiAtCQlNSVNT SU5HX0NBU0UoSU5URUxfR0VOKGVuZ2luZS0+aTkxNSkpOwo+PiA+ID4gPiA+ICsJCU1JU1NJTkdf Q0FTRShHUkFQSElDU19WRVIoZW5naW5lLT5pOTE1KSk7Cj4+ID4gPiA+ID4gIAkJcmV0dXJuOwo+ PiA+ID4gPiA+ICAJfQo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L2ludGVsX21vY3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2lu dGVsX21vY3MuYwo+PiA+ID4gPiA+IGluZGV4IGIxNDEzOGZkNTA1Yy4uMTc4NDg4MDdmMTExIDEw MDY0NAo+PiA+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX21vY3Mu Ywo+PiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX21vY3MuYwo+ PiA+ID4gPiA+IEBAIC0zNDQsMTEgKzM0NCwxMSBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGdldF9t b2NzX3NldHRpbmdzKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+PiA+ID4g PiA+ICAJCXRhYmxlLT5zaXplID0gQVJSQVlfU0laRShkZzFfbW9jc190YWJsZSk7Cj4+ID4gPiA+ ID4gIAkJdGFibGUtPnRhYmxlID0gZGcxX21vY3NfdGFibGU7Cj4+ID4gPiA+ID4gIAkJdGFibGUt Pm5fZW50cmllcyA9IEdFTjlfTlVNX01PQ1NfRU5UUklFUzsKPj4gPiA+ID4gPiAtCX0gZWxzZSBp ZiAoSU5URUxfR0VOKGk5MTUpID49IDEyKSB7Cj4+ID4gPiA+ID4gKwl9IGVsc2UgaWYgKEdSQVBI SUNTX1ZFUihpOTE1KSA+PSAxMikgewo+PiA+ID4gPiA+ICAJCXRhYmxlLT5zaXplICA9IEFSUkFZ X1NJWkUodGdsX21vY3NfdGFibGUpOwo+PiA+ID4gPiA+ICAJCXRhYmxlLT50YWJsZSA9IHRnbF9t b2NzX3RhYmxlOwo+PiA+ID4gPiA+ICAJCXRhYmxlLT5uX2VudHJpZXMgPSBHRU45X05VTV9NT0NT X0VOVFJJRVM7Cj4+ID4gPiA+ID4gLQl9IGVsc2UgaWYgKElTX0dFTihpOTE1LCAxMSkpIHsKPj4g PiA+ID4gPiArCX0gZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID09IDExKSB7Cj4+ID4gPiA+ ID4gIAkJdGFibGUtPnNpemUgID0gQVJSQVlfU0laRShpY2xfbW9jc190YWJsZSk7Cj4+ID4gPiA+ ID4gIAkJdGFibGUtPnRhYmxlID0gaWNsX21vY3NfdGFibGU7Cj4+ID4gPiA+ID4gIAkJdGFibGUt Pm5fZW50cmllcyA9IEdFTjlfTlVNX01PQ1NfRU5UUklFUzsKPj4gPiA+ID4gPiBAQCAtMzYxLDcg KzM2MSw3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgZ2V0X21vY3Nfc2V0dGluZ3MoY29uc3Qgc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4+ID4gPiA+ID4gIAkJdGFibGUtPm5fZW50cmll cyA9IEdFTjlfTlVNX01PQ1NfRU5UUklFUzsKPj4gPiA+ID4gPiAgCQl0YWJsZS0+dGFibGUgPSBi cm94dG9uX21vY3NfdGFibGU7Cj4+ID4gPiA+ID4gIAl9IGVsc2Ugewo+PiA+ID4gPiA+IC0JCWRy bV9XQVJOX09OQ0UoJmk5MTUtPmRybSwgSU5URUxfR0VOKGk5MTUpID49IDksCj4+ID4gPiA+ID4g KwkJZHJtX1dBUk5fT05DRSgmaTkxNS0+ZHJtLCBHUkFQSElDU19WRVIoaTkxNSkgPj0gOSwKPj4g PiA+ID4gPiAgCQkJICAgICAgIlBsYXRmb3JtIHRoYXQgc2hvdWxkIGhhdmUgYSBNT0NTIHRhYmxl IGRvZXMgbm90LlxuIik7Cj4+ID4gPiA+ID4gIAkJcmV0dXJuIDA7Cj4+ID4gPiA+ID4gIAl9Cj4+ ID4gPiA+ID4gQEAgLTM3MCw3ICszNzAsNyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGdldF9tb2Nz X3NldHRpbmdzKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+PiA+ID4gPiA+ ICAJCXJldHVybiAwOwo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gIAkvKiBXYURpc2FibGVTa2lwQ2Fj aGluZzpza2wsYnh0LGtibCxnbGsgKi8KPj4gPiA+ID4gPiAtCWlmIChJU19HRU4oaTkxNSwgOSkp IHsKPj4gPiA+ID4gPiArCWlmIChHUkFQSElDU19WRVIoaTkxNSkgPT0gOSkgewo+PiA+ID4gPiA+ ICAJCWludCBpOwo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gIAkJZm9yIChpID0gMDsgaSA8IHRhYmxl LT5zaXplOyBpKyspCj4+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L2ludGVsX3BwZ3R0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9wcGd0dC5j Cj4+ID4gPiA+ID4gaW5kZXggNGUzZDgwYzIyOTVjLi4zODkxYzA3ODkwNmUgMTAwNjQ0Cj4+ID4g PiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcHBndHQuYwo+PiA+ID4g PiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3BwZ3R0LmMKPj4gPiA+ID4g PiBAQCAtMTQ2LDkgKzE0Niw5IEBAIGludCBpOTE1X3BwZ3R0X2luaXRfaHcoc3RydWN0IGludGVs X2d0ICpndCkKPj4gPiA+ID4gPgo+PiA+ID4gPiA+ICAJZ3R0X3dyaXRlX3dvcmthcm91bmRzKGd0 KTsKPj4gPiA+ID4gPgo+PiA+ID4gPiA+IC0JaWYgKElTX0dFTihpOTE1LCA2KSkKPj4gPiA+ID4g PiArCWlmIChHUkFQSElDU19WRVIoaTkxNSkgPT0gNikKPj4gPiA+ID4gPiAgCQlnZW42X3BwZ3R0 X2VuYWJsZShndCk7Cj4+ID4gPiA+ID4gLQllbHNlIGlmIChJU19HRU4oaTkxNSwgNykpCj4+ID4g PiA+ID4gKwllbHNlIGlmIChHUkFQSElDU19WRVIoaTkxNSkgPT0gNykKPj4gPiA+ID4gPiAgCQln ZW43X3BwZ3R0X2VuYWJsZShndCk7Cj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAgCXJldHVybiAwOwo+ PiA+ID4gPiA+IEBAIC0xNTcsNyArMTU3LDcgQEAgaW50IGk5MTVfcHBndHRfaW5pdF9odyhzdHJ1 Y3QgaW50ZWxfZ3QgKmd0KQo+PiA+ID4gPiA+ICBzdGF0aWMgc3RydWN0IGk5MTVfcHBndHQgKgo+ PiA+ID4gPiA+ICBfX3BwZ3R0X2NyZWF0ZShzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQo+PiA+ID4gPiA+ ICB7Cj4+ID4gPiA+ID4gLQlpZiAoSU5URUxfR0VOKGd0LT5pOTE1KSA8IDgpCj4+ID4gPiA+ID4g KwlpZiAoR1JBUEhJQ1NfVkVSKGd0LT5pOTE1KSA8IDgpCj4+ID4gPiA+ID4gIAkJcmV0dXJuIGdl bjZfcHBndHRfY3JlYXRlKGd0KTsKPj4gPiA+ID4gPiAgCWVsc2UKPj4gPiA+ID4gPiAgCQlyZXR1 cm4gZ2VuOF9wcGd0dF9jcmVhdGUoZ3QpOwo+PiA+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yYzYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2lu dGVsX3JjNi5jCj4+ID4gPiA+ID4gaW5kZXggM2I3ZTYyZGViZTdlLi4yNTlkN2ViNGUxNjUgMTAw NjQ0Cj4+ID4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmM2LmMK Pj4gPiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yYzYuYwo+PiA+ ID4gPiA+IEBAIC0xMDksNyArMTA5LDcgQEAgc3RhdGljIHZvaWQgZ2VuMTFfcmM2X2VuYWJsZShz dHJ1Y3QgaW50ZWxfcmM2ICpyYzYpCj4+ID4gPiA+ID4gIAkJR0VOOV9NRURJQV9QR19FTkFCTEUg fAo+PiA+ID4gPiA+ICAJCUdFTjExX01FRElBX1NBTVBMRVJfUEdfRU5BQkxFOwo+PiA+ID4gPiA+ Cj4+ID4gPiA+ID4gLQlpZiAoSU5URUxfR0VOKGd0LT5pOTE1KSA+PSAxMikgewo+PiA+ID4gPiA+ ICsJaWYgKEdSQVBISUNTX1ZFUihndC0+aTkxNSkgPj0gMTIpIHsKPj4gPiA+ID4gPiAgCQlmb3Ig KGkgPSAwOyBpIDwgSTkxNV9NQVhfVkNTOyBpKyspCj4+ID4gPiA+ID4gIAkJCWlmIChIQVNfRU5H SU5FKGd0LCBfVkNTKGkpKSkKPj4gPiA+ID4gPiAgCQkJCXBnX2VuYWJsZSB8PSAoVkROX0hDUF9Q T1dFUkdBVEVfRU5BQkxFKGkpIHwKPj4gPiA+ID4gPiBAQCAtMTI2LDcgKzEyNiw3IEBAIHN0YXRp YyB2b2lkIGdlbjlfcmM2X2VuYWJsZShzdHJ1Y3QgaW50ZWxfcmM2ICpyYzYpCj4+ID4gPiA+ID4g IAllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKPj4gPiA+ID4gPgo+PiA+ID4gPiA+ICAJLyogMmI6 IFByb2dyYW0gUkM2IHRocmVzaG9sZHMuKi8KPj4gPiA+ID4gPiAtCWlmIChJTlRFTF9HRU4ocmM2 X3RvX2k5MTUocmM2KSkgPj0gMTApIHsKPj4gPiA+ID4gPiArCWlmIChHUkFQSElDU19WRVIocmM2 X3RvX2k5MTUocmM2KSkgPj0gMTApIHsKPj4gPiA+ID4gPiAgCQlzZXQodW5jb3JlLCBHRU42X1JD Nl9XQUtFX1JBVEVfTElNSVQsIDU0IDw8IDE2IHwgODUpOwo+PiA+ID4gPiA+ICAJCXNldCh1bmNv cmUsIEdFTjEwX01FRElBX1dBS0VfUkFURV9MSU1JVCwgMTUwKTsKPj4gPiA+ID4gPiAgCX0gZWxz ZSBpZiAoSVNfU0tZTEFLRShyYzZfdG9faTkxNShyYzYpKSkgewo+PiA+ID4gPiA+IEBAIC0yNDks OSArMjQ5LDkgQEAgc3RhdGljIHZvaWQgZ2VuNl9yYzZfZW5hYmxlKHN0cnVjdCBpbnRlbF9yYzYg KnJjNikKPj4gPiA+ID4gPiAgCXJjNnZpZHMgPSAwOwo+PiA+ID4gPiA+ICAJcmV0ID0gc2FuZHli cmlkZ2VfcGNvZGVfcmVhZChpOTE1LCBHRU42X1BDT0RFX1JFQURfUkM2VklEUywKPj4gPiA+ID4g PiAgCQkJCSAgICAgJnJjNnZpZHMsIE5VTEwpOwo+PiA+ID4gPiA+IC0JaWYgKElTX0dFTihpOTE1 LCA2KSAmJiByZXQpIHsKPj4gPiA+ID4gPiArCWlmIChHUkFQSElDU19WRVIoaTkxNSkgPT0gNiAm JiByZXQpIHsKPj4gPiA+ID4gPiAgCQlkcm1fZGJnKCZpOTE1LT5kcm0sICJDb3VsZG4ndCBjaGVj ayBmb3IgQklPUyB3b3JrYXJvdW5kXG4iKTsKPj4gPiA+ID4gPiAtCX0gZWxzZSBpZiAoSVNfR0VO KGk5MTUsIDYpICYmCj4+ID4gPiA+ID4gKwl9IGVsc2UgaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA9 PSA2ICYmCj4+ID4gPiA+ID4gIAkJICAgKEdFTjZfREVDT0RFX1JDNl9WSUQocmM2dmlkcyAmIDB4 ZmYpIDwgNDUwKSkgewo+PiA+ID4gPiA+ICAJCWRybV9kYmcoJmk5MTUtPmRybSwKPj4gPiA+ID4g PiAgCQkJIllvdSBzaG91bGQgdXBkYXRlIHlvdXIgQklPUy4gQ29ycmVjdGluZyBtaW5pbXVtIHJj NiB2b2x0YWdlICglZG1WLT4lZG1WKVxuIiwKPj4gPiA+ID4gPiBAQCAtNTE1LDcgKzUxNSw3IEBA IHN0YXRpYyB2b2lkIF9faW50ZWxfcmM2X2Rpc2FibGUoc3RydWN0IGludGVsX3JjNiAqcmM2KQo+ PiA+ID4gPiA+ICAJc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlID0gcmM2X3RvX3VuY29yZShy YzYpOwo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gIAlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldCh1 bmNvcmUsIEZPUkNFV0FLRV9BTEwpOwo+PiA+ID4gPiA+IC0JaWYgKElOVEVMX0dFTihpOTE1KSA+ PSA5KQo+PiA+ID4gPiA+ICsJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSA5KQo+PiA+ID4gPiA+ ICAJCXNldCh1bmNvcmUsIEdFTjlfUEdfRU5BQkxFLCAwKTsKPj4gPiA+ID4gPiAgCXNldCh1bmNv cmUsIEdFTjZfUkNfQ09OVFJPTCwgMCk7Cj4+ID4gPiA+ID4gIAlzZXQodW5jb3JlLCBHRU42X1JD X1NUQVRFLCAwKTsKPj4gPiA+ID4gPiBAQCAtNTc1LDEzICs1NzUsMTMgQEAgdm9pZCBpbnRlbF9y YzZfZW5hYmxlKHN0cnVjdCBpbnRlbF9yYzYgKnJjNikKPj4gPiA+ID4gPiAgCQljaHZfcmM2X2Vu YWJsZShyYzYpOwo+PiA+ID4gPiA+ICAJZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhpOTE1KSkKPj4g PiA+ID4gPiAgCQl2bHZfcmM2X2VuYWJsZShyYzYpOwo+PiA+ID4gPiA+IC0JZWxzZSBpZiAoSU5U RUxfR0VOKGk5MTUpID49IDExKQo+PiA+ID4gPiA+ICsJZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5 MTUpID49IDExKQo+PiA+ID4gPiA+ICAJCWdlbjExX3JjNl9lbmFibGUocmM2KTsKPj4gPiA+ID4g PiAtCWVsc2UgaWYgKElOVEVMX0dFTihpOTE1KSA+PSA5KQo+PiA+ID4gPiA+ICsJZWxzZSBpZiAo R1JBUEhJQ1NfVkVSKGk5MTUpID49IDkpCj4+ID4gPiA+ID4gIAkJZ2VuOV9yYzZfZW5hYmxlKHJj Nik7Cj4+ID4gPiA+ID4gIAllbHNlIGlmIChJU19CUk9BRFdFTEwoaTkxNSkpCj4+ID4gPiA+ID4g IAkJZ2VuOF9yYzZfZW5hYmxlKHJjNik7Cj4+ID4gPiA+ID4gLQllbHNlIGlmIChJTlRFTF9HRU4o aTkxNSkgPj0gNikKPj4gPiA+ID4gPiArCWVsc2UgaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSA2 KQo+PiA+ID4gPiA+ICAJCWdlbjZfcmM2X2VuYWJsZShyYzYpOwo+PiA+ID4gPiA+Cj4+ID4gPiA+ ID4gIAlyYzYtPm1hbnVhbCA9IHJjNi0+Y3RsX2VuYWJsZSAmIEdFTjZfUkNfQ1RMX1JDNl9FTkFC TEU7Cj4+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVs X3JlbmRlcnN0YXRlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZW5kZXJzdGF0 ZS5jCj4+ID4gPiA+ID4gaW5kZXggYjAzZTE5N2IxZDk5Li5iNTc1Y2Q2ZTBiN2EgMTAwNjQ0Cj4+ ID4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVuZGVyc3RhdGUu Ywo+PiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3JlbmRlcnN0 YXRlLmMKPj4gPiA+ID4gPiBAQCAtMTUsNyArMTUsNyBAQCByZW5kZXJfc3RhdGVfZ2V0X3JvZGF0 YShjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4+ID4gPiA+ID4gIAlpZiAo ZW5naW5lLT5jbGFzcyAhPSBSRU5ERVJfQ0xBU1MpCj4+ID4gPiA+ID4gIAkJcmV0dXJuIE5VTEw7 Cj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAtCXN3aXRjaCAoSU5URUxfR0VOKGVuZ2luZS0+aTkxNSkp IHsKPj4gPiA+ID4gPiArCXN3aXRjaCAoR1JBUEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkpIHsKPj4g PiA+ID4gPiAgCWNhc2UgNjoKPj4gPiA+ID4gPiAgCQlyZXR1cm4gJmdlbjZfbnVsbF9zdGF0ZTsK Pj4gPiA+ID4gPiAgCWNhc2UgNzoKPj4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVs X3Jlc2V0LmMKPj4gPiA+ID4gPiBpbmRleCBkNTA5NGJlNmQ5MGYuLjI3MzE1ZDdmODkzNSAxMDA2 NDQKPj4gPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5j Cj4+ID4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYwo+ PiA+ID4gPiA+IEBAIC01NjUsNyArNTY1LDcgQEAgc3RhdGljIGludCBnZW44X3Jlc2V0X2VuZ2lu ZXMoc3RydWN0IGludGVsX2d0ICpndCwKPj4gPiA+ID4gPiAgCQkgKi8KPj4gPiA+ID4gPiAgCX0K Pj4gPiA+ID4gPgo+PiA+ID4gPiA+IC0JaWYgKElOVEVMX0dFTihndC0+aTkxNSkgPj0gMTEpCj4+ ID4gPiA+ID4gKwlpZiAoR1JBUEhJQ1NfVkVSKGd0LT5pOTE1KSA+PSAxMSkKPj4gPiA+ID4gPiAg CQlyZXQgPSBnZW4xMV9yZXNldF9lbmdpbmVzKGd0LCBlbmdpbmVfbWFzaywgcmV0cnkpOwo+PiA+ ID4gPiA+ICAJZWxzZQo+PiA+ID4gPiA+ICAJCXJldCA9IGdlbjZfcmVzZXRfZW5naW5lcyhndCwg ZW5naW5lX21hc2ssIHJldHJ5KTsKPj4gPiA+ID4gPiBAQCAtNTk0LDE3ICs1OTQsMTcgQEAgc3Rh dGljIHJlc2V0X2Z1bmMgaW50ZWxfZ2V0X2dwdV9yZXNldChjb25zdCBzdHJ1Y3QgaW50ZWxfZ3Qg Kmd0KQo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gIAlpZiAoaXNfbW9ja19ndChndCkpCj4+ID4gPiA+ ID4gIAkJcmV0dXJuIG1vY2tfcmVzZXQ7Cj4+ID4gPiA+ID4gLQllbHNlIGlmIChJTlRFTF9HRU4o aTkxNSkgPj0gOCkKPj4gPiA+ID4gPiArCWVsc2UgaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSA4 KQo+PiA+ID4gPiA+ICAJCXJldHVybiBnZW44X3Jlc2V0X2VuZ2luZXM7Cj4+ID4gPiA+ID4gLQll bHNlIGlmIChJTlRFTF9HRU4oaTkxNSkgPj0gNikKPj4gPiA+ID4gPiArCWVsc2UgaWYgKEdSQVBI SUNTX1ZFUihpOTE1KSA+PSA2KQo+PiA+ID4gPiA+ICAJCXJldHVybiBnZW42X3Jlc2V0X2VuZ2lu ZXM7Cj4+ID4gPiA+ID4gLQllbHNlIGlmIChJTlRFTF9HRU4oaTkxNSkgPj0gNSkKPj4gPiA+ID4g PiArCWVsc2UgaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSA1KQo+PiA+ID4gPiA+ICAJCXJldHVy biBpbGtfZG9fcmVzZXQ7Cj4+ID4gPiA+ID4gIAllbHNlIGlmIChJU19HNFgoaTkxNSkpCj4+ID4g PiA+ID4gIAkJcmV0dXJuIGc0eF9kb19yZXNldDsKPj4gPiA+ID4gPiAgCWVsc2UgaWYgKElTX0cz MyhpOTE1KSB8fCBJU19QSU5FVklFVyhpOTE1KSkKPj4gPiA+ID4gPiAgCQlyZXR1cm4gZzMzX2Rv X3Jlc2V0Owo+PiA+ID4gPiA+IC0JZWxzZSBpZiAoSU5URUxfR0VOKGk5MTUpID49IDMpCj4+ID4g PiA+ID4gKwllbHNlIGlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gMykKPj4gPiA+ID4gPiAgCQly ZXR1cm4gaTkxNV9kb19yZXNldDsKPj4gPiA+ID4gPiAgCWVsc2UKPj4gPiA+ID4gPiAgCQlyZXR1 cm4gTlVMTDsKPj4gPiA+ID4gPiBAQCAtNjU2LDcgKzY1Niw3IEBAIGJvb2wgaW50ZWxfaGFzX3Jl c2V0X2VuZ2luZShjb25zdCBzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQo+PiA+ID4gPiA+ICBpbnQgaW50 ZWxfcmVzZXRfZ3VjKHN0cnVjdCBpbnRlbF9ndCAqZ3QpCj4+ID4gPiA+ID4gIHsKPj4gPiA+ID4g PiAgCXUzMiBndWNfZG9tYWluID0KPj4gPiA+ID4gPiAtCQlJTlRFTF9HRU4oZ3QtPmk5MTUpID49 IDExID8gR0VOMTFfR1JET01fR1VDIDogR0VOOV9HUkRPTV9HVUM7Cj4+ID4gPiA+ID4gKwkJR1JB UEhJQ1NfVkVSKGd0LT5pOTE1KSA+PSAxMSA/IEdFTjExX0dSRE9NX0dVQyA6IEdFTjlfR1JET01f R1VDOwo+PiA+ID4gPiA+ICAJaW50IHJldDsKPj4gPiA+ID4gPgo+PiA+ID4gPiA+ICAJR0VNX0JV R19PTighSEFTX0dUX1VDKGd0LT5pOTE1KSk7Cj4+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jpbmdfc3VibWlzc2lvbi5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvaW50ZWxfcmluZ19zdWJtaXNzaW9uLmMKPj4gPiA+ID4gPiBpbmRleCAyYjZk ZmZjYzIyNjIuLjBjNDIzZjA5NmUyYiAxMDA2NDQKPj4gPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9pbnRlbF9yaW5nX3N1Ym1pc3Npb24uYwo+PiA+ID4gPiA+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jpbmdfc3VibWlzc2lvbi5jCj4+ID4gPiA+ID4g QEAgLTI5LDcgKzI5LDcgQEAgc3RhdGljIHZvaWQgc2V0X2h3c3RhbShzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUsIHUzMiBtYXNrKQo+PiA+ID4gPiA+ICAJICogbG9zdCBpbnRlcnJ1cHRz IGZvbGxvd2luZyBhIHJlc2V0Lgo+PiA+ID4gPiA+ICAJICovCj4+ID4gPiA+ID4gIAlpZiAoZW5n aW5lLT5jbGFzcyA9PSBSRU5ERVJfQ0xBU1MpIHsKPj4gPiA+ID4gPiAtCQlpZiAoSU5URUxfR0VO KGVuZ2luZS0+aTkxNSkgPj0gNikKPj4gPiA+ID4gPiArCQlpZiAoR1JBUEhJQ1NfVkVSKGVuZ2lu ZS0+aTkxNSkgPj0gNikKPj4gPiA+ID4gPiAgCQkJbWFzayAmPSB+QklUKDApOwo+PiA+ID4gPiA+ ICAJCWVsc2UKPj4gPiA+ID4gPiAgCQkJbWFzayAmPSB+STkxNV9VU0VSX0lOVEVSUlVQVDsKPj4g PiA+ID4gPiBAQCAtNDMsNyArNDMsNyBAQCBzdGF0aWMgdm9pZCBzZXRfaHdzX3BnYShzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHBoeXNfYWRkcl90IHBoeXMpCj4+ID4gPiA+ID4gIAl1 MzIgYWRkcjsKPj4gPiA+ID4gPgo+PiA+ID4gPiA+ICAJYWRkciA9IGxvd2VyXzMyX2JpdHMocGh5 cyk7Cj4+ID4gPiA+ID4gLQlpZiAoSU5URUxfR0VOKGVuZ2luZS0+aTkxNSkgPj0gNCkKPj4gPiA+ ID4gPiArCWlmIChHUkFQSElDU19WRVIoZW5naW5lLT5pOTE1KSA+PSA0KQo+PiA+ID4gPiA+ICAJ CWFkZHIgfD0gKHBoeXMgPj4gMjgpICYgMHhmMDsKPj4gPiA+ID4gPgo+PiA+ID4gPiA+ICAJaW50 ZWxfdW5jb3JlX3dyaXRlKGVuZ2luZS0+dW5jb3JlLCBIV1NfUEdBLCBhZGRyKTsKPj4gPiA+ID4g PiBAQCAtNzEsNyArNzEsNyBAQCBzdGF0aWMgdm9pZCBzZXRfaHdzcChzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUsIHUzMiBvZmZzZXQpCj4+ID4gPiA+ID4gIAkgKiBUaGUgcmluZyBzdGF0 dXMgcGFnZSBhZGRyZXNzZXMgYXJlIG5vIGxvbmdlciBuZXh0IHRvIHRoZSByZXN0IG9mCj4+ID4g PiA+ID4gIAkgKiB0aGUgcmluZyByZWdpc3RlcnMgYXMgb2YgZ2VuNy4KPj4gPiA+ID4gPiAgCSAq Lwo+PiA+ID4gPiA+IC0JaWYgKElTX0dFTihlbmdpbmUtPmk5MTUsIDcpKSB7Cj4+ID4gPiA+ID4g KwlpZiAoR1JBUEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkgPT0gNykgewo+PiA+ID4gPiA+ICAJCXN3 aXRjaCAoZW5naW5lLT5pZCkgewo+PiA+ID4gPiA+ICAJCS8qCj4+ID4gPiA+ID4gIAkJICogTm8g bW9yZSByaW5ncyBleGlzdCBvbiBHZW43LiBEZWZhdWx0IGNhc2UgaXMgb25seSB0byBzaHV0IHVw Cj4+ID4gPiA+ID4gQEAgLTkzLDcgKzkzLDcgQEAgc3RhdGljIHZvaWQgc2V0X2h3c3Aoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCB1MzIgb2Zmc2V0KQo+PiA+ID4gPiA+ICAJCQlod3Nw ID0gVkVCT1hfSFdTX1BHQV9HRU43Owo+PiA+ID4gPiA+ICAJCQlicmVhazsKPj4gPiA+ID4gPiAg CQl9Cj4+ID4gPiA+ID4gLQl9IGVsc2UgaWYgKElTX0dFTihlbmdpbmUtPmk5MTUsIDYpKSB7Cj4+ ID4gPiA+ID4gKwl9IGVsc2UgaWYgKEdSQVBISUNTX1ZFUihlbmdpbmUtPmk5MTUpID09IDYpIHsK Pj4gPiA+ID4gPiAgCQlod3NwID0gUklOR19IV1NfUEdBX0dFTjYoZW5naW5lLT5tbWlvX2Jhc2Up Owo+PiA+ID4gPiA+ICAJfSBlbHNlIHsKPj4gPiA+ID4gPiAgCQlod3NwID0gUklOR19IV1NfUEdB KGVuZ2luZS0+bW1pb19iYXNlKTsKPj4gPiA+ID4gPiBAQCAtMTA1LDcgKzEwNSw3IEBAIHN0YXRp YyB2b2lkIHNldF9od3NwKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgdTMyIG9mZnNl dCkKPj4gPiA+ID4gPgo+PiA+ID4gPiA+ICBzdGF0aWMgdm9pZCBmbHVzaF9jc190bGIoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+PiA+ID4gPiA+ICB7Cj4+ID4gPiA+ID4gLQlpZiAo IUlTX0dFTl9SQU5HRShlbmdpbmUtPmk5MTUsIDYsIDcpKQo+PiA+ID4gPiA+ICsJaWYgKCFJU19H UkFQSElDU19WRVIoZW5naW5lLT5pOTE1LCA2LCA3KSkKPj4gPiA+ID4gPiAgCQlyZXR1cm47Cj4+ ID4gPiA+ID4KPj4gPiA+ID4gPiAgCS8qIHJpbmcgc2hvdWxkIGJlIGlkbGUgYmVmb3JlIGlzc3Vp bmcgYSBzeW5jIGZsdXNoKi8KPj4gPiA+ID4gPiBAQCAtMTUzLDcgKzE1Myw3IEBAIHN0YXRpYyB2 b2lkIHNldF9wcF9kaXIoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+PiA+ID4gPiA+ ICAJRU5HSU5FX1dSSVRFX0ZXKGVuZ2luZSwgUklOR19QUF9ESVJfRENMViwgUFBfRElSX0RDTFZf MkcpOwo+PiA+ID4gPiA+ICAJRU5HSU5FX1dSSVRFX0ZXKGVuZ2luZSwgUklOR19QUF9ESVJfQkFT RSwgcHBfZGlyKHZtKSk7Cj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAtCWlmIChJTlRFTF9HRU4oZW5n aW5lLT5pOTE1KSA+PSA3KSB7Cj4+ID4gPiA+ID4gKwlpZiAoR1JBUEhJQ1NfVkVSKGVuZ2luZS0+ aTkxNSkgPj0gNykgewo+PiA+ID4gPiA+ICAJCUVOR0lORV9XUklURV9GVyhlbmdpbmUsCj4+ID4g PiA+ID4gIAkJCQlSSU5HX01PREVfR0VONywKPj4gPiA+ID4gPiAgCQkJCV9NQVNLRURfQklUX0VO QUJMRShHRlhfUFBHVFRfRU5BQkxFKSk7Cj4+ID4gPiA+ID4gQEAgLTIyOSw3ICsyMjksNyBAQCBz dGF0aWMgaW50IHhjc19yZXN1bWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+PiA+ ID4gPiA+ICAJCQkJCSA1MDAwLCAwLCBOVUxMKSkKPj4gPiA+ID4gPiAgCQlnb3RvIGVycjsKPj4g PiA+ID4gPgo+PiA+ID4gPiA+IC0JaWYgKElOVEVMX0dFTihlbmdpbmUtPmk5MTUpID4gMikKPj4g PiA+ID4gPiArCWlmIChHUkFQSElDU19WRVIoZW5naW5lLT5pOTE1KSA+IDIpCj4+ID4gPiA+ID4g IAkJRU5HSU5FX1dSSVRFX0ZXKGVuZ2luZSwKPj4gPiA+ID4gPiAgCQkJCVJJTkdfTUlfTU9ERSwg X01BU0tFRF9CSVRfRElTQUJMRShTVE9QX1JJTkcpKTsKPj4gPiA+ID4gPgo+PiA+ID4gPiA+IEBA IC02NDYsOSArNjQ2LDkgQEAgc3RhdGljIGludCBtaV9zZXRfY29udGV4dChzdHJ1Y3QgaTkxNV9y ZXF1ZXN0ICpycSwKPj4gPiA+ID4gPiAgCXUzMiAqY3M7Cj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAg CWxlbiA9IDQ7Cj4+ID4gPiA+ID4gLQlpZiAoSVNfR0VOKGk5MTUsIDcpKQo+PiA+ID4gPiA+ICsJ aWYgKEdSQVBISUNTX1ZFUihpOTE1KSA9PSA3KQo+PiA+ID4gPiA+ICAJCWxlbiArPSAyICsgKG51 bV9lbmdpbmVzID8gNCAqIG51bV9lbmdpbmVzICsgNiA6IDApOwo+PiA+ID4gPiA+IC0JZWxzZSBp ZiAoSVNfR0VOKGk5MTUsIDUpKQo+PiA+ID4gPiA+ICsJZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5 MTUpID09IDUpCj4+ID4gPiA+ID4gIAkJbGVuICs9IDI7Cj4+ID4gPiA+ID4gIAlpZiAoZmxhZ3Mg JiBNSV9GT1JDRV9SRVNUT1JFKSB7Cj4+ID4gPiA+ID4gIAkJR0VNX0JVR19PTihmbGFncyAmIE1J X1JFU1RPUkVfSU5ISUJJVCk7Cj4+ID4gPiA+ID4gQEAgLTY2Miw3ICs2NjIsNyBAQCBzdGF0aWMg aW50IG1pX3NldF9jb250ZXh0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLAo+PiA+ID4gPiA+ICAJ CXJldHVybiBQVFJfRVJSKGNzKTsKPj4gPiA+ID4gPgo+PiA+ID4gPiA+ICAJLyogV2FQcm9ncmFt TWlBcmJPbk9mZkFyb3VuZE1pU2V0Q29udGV4dDppdmIsdmx2LGhzdyxiZHcsY2h2ICovCj4+ID4g PiA+ID4gLQlpZiAoSVNfR0VOKGk5MTUsIDcpKSB7Cj4+ID4gPiA+ID4gKwlpZiAoR1JBUEhJQ1Nf VkVSKGk5MTUpID09IDcpIHsKPj4gPiA+ID4gPiAgCQkqY3MrKyA9IE1JX0FSQl9PTl9PRkYgfCBN SV9BUkJfRElTQUJMRTsKPj4gPiA+ID4gPiAgCQlpZiAobnVtX2VuZ2luZXMpIHsKPj4gPiA+ID4g PiAgCQkJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqc2lnbmFsbGVyOwo+PiA+ID4gPiA+IEBAIC02 NzgsNyArNjc4LDcgQEAgc3RhdGljIGludCBtaV9zZXRfY29udGV4dChzdHJ1Y3QgaTkxNV9yZXF1 ZXN0ICpycSwKPj4gPiA+ID4gPiAgCQkJCQkJR0VONl9QU01JX1NMRUVQX01TR19ESVNBQkxFKTsK Pj4gPiA+ID4gPiAgCQkJfQo+PiA+ID4gPiA+ICAJCX0KPj4gPiA+ID4gPiAtCX0gZWxzZSBpZiAo SVNfR0VOKGk5MTUsIDUpKSB7Cj4+ID4gPiA+ID4gKwl9IGVsc2UgaWYgKEdSQVBISUNTX1ZFUihp OTE1KSA9PSA1KSB7Cj4+ID4gPiA+ID4gIAkJLyoKPj4gPiA+ID4gPiAgCQkgKiBUaGlzIHcvYSBp cyBvbmx5IGxpc3RlZCBmb3IgcHJlLXByb2R1Y3Rpb24gaWxrIGEvYiBzdGVwcGluZ3MsCj4+ID4g PiA+ID4gIAkJICogYnV0IGlzIGFsc28gbWVudGlvbmVkIGZvciBwcm9ncmFtbWluZyB0aGUgcG93 ZXJjdHguIFRvIGJlCj4+ID4gPiA+ID4gQEAgLTcxNiw3ICs3MTYsNyBAQCBzdGF0aWMgaW50IG1p X3NldF9jb250ZXh0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLAo+PiA+ID4gPiA+ICAJICovCj4+ ID4gPiA+ID4gIAkqY3MrKyA9IE1JX05PT1A7Cj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAtCWlmIChJ U19HRU4oaTkxNSwgNykpIHsKPj4gPiA+ID4gPiArCWlmIChHUkFQSElDU19WRVIoaTkxNSkgPT0g Nykgewo+PiA+ID4gPiA+ICAJCWlmIChudW1fZW5naW5lcykgewo+PiA+ID4gPiA+ICAJCQlzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICpzaWduYWxsZXI7Cj4+ID4gPiA+ID4gIAkJCWk5MTVfcmVnX3Qg bGFzdF9yZWcgPSB7fTsgLyoga2VlcCBnY2MgcXVpZXQgKi8KPj4gPiA+ID4gPiBAQCAtNzQwLDcg Kzc0MCw3IEBAIHN0YXRpYyBpbnQgbWlfc2V0X2NvbnRleHQoc3RydWN0IGk5MTVfcmVxdWVzdCAq cnEsCj4+ID4gPiA+ID4gIAkJCSpjcysrID0gTUlfTk9PUDsKPj4gPiA+ID4gPiAgCQl9Cj4+ID4g PiA+ID4gIAkJKmNzKysgPSBNSV9BUkJfT05fT0ZGIHwgTUlfQVJCX0VOQUJMRTsKPj4gPiA+ID4g PiAtCX0gZWxzZSBpZiAoSVNfR0VOKGk5MTUsIDUpKSB7Cj4+ID4gPiA+ID4gKwl9IGVsc2UgaWYg KEdSQVBISUNTX1ZFUihpOTE1KSA9PSA1KSB7Cj4+ID4gPiA+ID4gIAkJKmNzKysgPSBNSV9TVVNQ RU5EX0ZMVVNIOwo+PiA+ID4gPiA+ICAJfQo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gQEAgLTEwMDEs NyArMTAwMSw3IEBAIHN0YXRpYyB2b2lkIHJpbmdfcmVsZWFzZShzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUpCj4+ID4gPiA+ID4gIHsKPj4gPiA+ID4gPiAgCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsKPj4gPiA+ID4gPgo+PiA+ID4gPiA+IC0J ZHJtX1dBUk5fT04oJmRldl9wcml2LT5kcm0sIElOVEVMX0dFTihkZXZfcHJpdikgPiAyICYmCj4+ ID4gPiA+ID4gKwlkcm1fV0FSTl9PTigmZGV2X3ByaXYtPmRybSwgR1JBUEhJQ1NfVkVSKGRldl9w cml2KSA+IDIgJiYKPj4gPiA+ID4gPiAgCQkgICAgKEVOR0lORV9SRUFEKGVuZ2luZSwgUklOR19N SV9NT0RFKSAmIE1PREVfSURMRSkgPT0gMCk7Cj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAgCWludGVs X2VuZ2luZV9jbGVhbnVwX2NvbW1vbihlbmdpbmUpOwo+PiA+ID4gPiA+IEBAIC0xMDI5LDEzICsx MDI5LDEzIEBAIHN0YXRpYyB2b2lkIHNldHVwX2lycShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpCj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAgCWludGVsX2VuZ2luZV9zZXRfaXJxX2hhbmRs ZXIoZW5naW5lLCBpcnFfaGFuZGxlcik7Cj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAtCWlmIChJTlRF TF9HRU4oaTkxNSkgPj0gNikgewo+PiA+ID4gPiA+ICsJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+ PSA2KSB7Cj4+ID4gPiA+ID4gIAkJZW5naW5lLT5pcnFfZW5hYmxlID0gZ2VuNl9pcnFfZW5hYmxl Owo+PiA+ID4gPiA+ICAJCWVuZ2luZS0+aXJxX2Rpc2FibGUgPSBnZW42X2lycV9kaXNhYmxlOwo+ PiA+ID4gPiA+IC0JfSBlbHNlIGlmIChJTlRFTF9HRU4oaTkxNSkgPj0gNSkgewo+PiA+ID4gPiA+ ICsJfSBlbHNlIGlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gNSkgewo+PiA+ID4gPiA+ICAJCWVu Z2luZS0+aXJxX2VuYWJsZSA9IGdlbjVfaXJxX2VuYWJsZTsKPj4gPiA+ID4gPiAgCQllbmdpbmUt PmlycV9kaXNhYmxlID0gZ2VuNV9pcnFfZGlzYWJsZTsKPj4gPiA+ID4gPiAtCX0gZWxzZSBpZiAo SU5URUxfR0VOKGk5MTUpID49IDMpIHsKPj4gPiA+ID4gPiArCX0gZWxzZSBpZiAoR1JBUEhJQ1Nf VkVSKGk5MTUpID49IDMpIHsKPj4gPiA+ID4gPiAgCQllbmdpbmUtPmlycV9lbmFibGUgPSBnZW4z X2lycV9lbmFibGU7Cj4+ID4gPiA+ID4gIAkJZW5naW5lLT5pcnFfZGlzYWJsZSA9IGdlbjNfaXJx X2Rpc2FibGU7Cj4+ID4gPiA+ID4gIAl9IGVsc2Ugewo+PiA+ID4gPiA+IEBAIC0xMDQ5LDcgKzEw NDksNyBAQCBzdGF0aWMgdm9pZCBzZXR1cF9jb21tb24oc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKQo+PiA+ID4gPiA+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBlbmdp bmUtPmk5MTU7Cj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAgCS8qIGdlbjgrIGFyZSBvbmx5IHN1cHBv cnRlZCB3aXRoIGV4ZWNsaXN0cyAqLwo+PiA+ID4gPiA+IC0JR0VNX0JVR19PTihJTlRFTF9HRU4o aTkxNSkgPj0gOCk7Cj4+ID4gPiA+ID4gKwlHRU1fQlVHX09OKEdSQVBISUNTX1ZFUihpOTE1KSA+ PSA4KTsKPj4gPiA+ID4gPgo+PiA+ID4gPiA+ICAJc2V0dXBfaXJxKGVuZ2luZSk7Cj4+ID4gPiA+ ID4KPj4gPiA+ID4gPiBAQCAtMTA3MCwxNCArMTA3MCwxNCBAQCBzdGF0aWMgdm9pZCBzZXR1cF9j b21tb24oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+PiA+ID4gPiA+ICAJICogZW5n aW5lLT5lbWl0X2luaXRfYnJlYWRjcnVtYigpLgo+PiA+ID4gPiA+ICAJICovCj4+ID4gPiA+ID4g IAllbmdpbmUtPmVtaXRfZmluaV9icmVhZGNydW1iID0gZ2VuM19lbWl0X2JyZWFkY3J1bWI7Cj4+ ID4gPiA+ID4gLQlpZiAoSVNfR0VOKGk5MTUsIDUpKQo+PiA+ID4gPiA+ICsJaWYgKEdSQVBISUNT X1ZFUihpOTE1KSA9PSA1KQo+PiA+ID4gPiA+ICAJCWVuZ2luZS0+ZW1pdF9maW5pX2JyZWFkY3J1 bWIgPSBnZW41X2VtaXRfYnJlYWRjcnVtYjsKPj4gPiA+ID4gPgo+PiA+ID4gPiA+ICAJZW5naW5l LT5zZXRfZGVmYXVsdF9zdWJtaXNzaW9uID0gaTl4eF9zZXRfZGVmYXVsdF9zdWJtaXNzaW9uOwo+ PiA+ID4gPiA+Cj4+ID4gPiA+ID4gLQlpZiAoSU5URUxfR0VOKGk5MTUpID49IDYpCj4+ID4gPiA+ ID4gKwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDYpCj4+ID4gPiA+ID4gIAkJZW5naW5lLT5l bWl0X2JiX3N0YXJ0ID0gZ2VuNl9lbWl0X2JiX3N0YXJ0Owo+PiA+ID4gPiA+IC0JZWxzZSBpZiAo SU5URUxfR0VOKGk5MTUpID49IDQpCj4+ID4gPiA+ID4gKwllbHNlIGlmIChHUkFQSElDU19WRVIo aTkxNSkgPj0gNCkKPj4gPiA+ID4gPiAgCQllbmdpbmUtPmVtaXRfYmJfc3RhcnQgPSBnZW40X2Vt aXRfYmJfc3RhcnQ7Cj4+ID4gPiA+ID4gIAllbHNlIGlmIChJU19JODMwKGk5MTUpIHx8IElTX0k4 NDVHKGk5MTUpKQo+PiA+ID4gPiA+ICAJCWVuZ2luZS0+ZW1pdF9iYl9zdGFydCA9IGk4MzBfZW1p dF9iYl9zdGFydDsKPj4gPiA+ID4gPiBAQCAtMTA5NCwxNiArMTA5NCwxNiBAQCBzdGF0aWMgdm9p ZCBzZXR1cF9yY3Moc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+PiA+ID4gPiA+Cj4+ ID4gPiA+ID4gIAllbmdpbmUtPmlycV9lbmFibGVfbWFzayA9IEdUX1JFTkRFUl9VU0VSX0lOVEVS UlVQVDsKPj4gPiA+ID4gPgo+PiA+ID4gPiA+IC0JaWYgKElOVEVMX0dFTihpOTE1KSA+PSA3KSB7 Cj4+ID4gPiA+ID4gKwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDcpIHsKPj4gPiA+ID4gPiAg CQllbmdpbmUtPmVtaXRfZmx1c2ggPSBnZW43X2VtaXRfZmx1c2hfcmNzOwo+PiA+ID4gPiA+ICAJ CWVuZ2luZS0+ZW1pdF9maW5pX2JyZWFkY3J1bWIgPSBnZW43X2VtaXRfYnJlYWRjcnVtYl9yY3M7 Cj4+ID4gPiA+ID4gLQl9IGVsc2UgaWYgKElTX0dFTihpOTE1LCA2KSkgewo+PiA+ID4gPiA+ICsJ fSBlbHNlIGlmIChHUkFQSElDU19WRVIoaTkxNSkgPT0gNikgewo+PiA+ID4gPiA+ICAJCWVuZ2lu ZS0+ZW1pdF9mbHVzaCA9IGdlbjZfZW1pdF9mbHVzaF9yY3M7Cj4+ID4gPiA+ID4gIAkJZW5naW5l LT5lbWl0X2ZpbmlfYnJlYWRjcnVtYiA9IGdlbjZfZW1pdF9icmVhZGNydW1iX3JjczsKPj4gPiA+ ID4gPiAtCX0gZWxzZSBpZiAoSVNfR0VOKGk5MTUsIDUpKSB7Cj4+ID4gPiA+ID4gKwl9IGVsc2Ug aWYgKEdSQVBISUNTX1ZFUihpOTE1KSA9PSA1KSB7Cj4+ID4gPiA+ID4gIAkJZW5naW5lLT5lbWl0 X2ZsdXNoID0gZ2VuNF9lbWl0X2ZsdXNoX3JjczsKPj4gPiA+ID4gPiAgCX0gZWxzZSB7Cj4+ID4g PiA+ID4gLQkJaWYgKElOVEVMX0dFTihpOTE1KSA8IDQpCj4+ID4gPiA+ID4gKwkJaWYgKEdSQVBI SUNTX1ZFUihpOTE1KSA8IDQpCj4+ID4gPiA+ID4gIAkJCWVuZ2luZS0+ZW1pdF9mbHVzaCA9IGdl bjJfZW1pdF9mbHVzaDsKPj4gPiA+ID4gPiAgCQllbHNlCj4+ID4gPiA+ID4gIAkJCWVuZ2luZS0+ ZW1pdF9mbHVzaCA9IGdlbjRfZW1pdF9mbHVzaF9yY3M7Cj4+ID4gPiA+ID4gQEAgLTExMTgsMjAg KzExMTgsMjAgQEAgc3RhdGljIHZvaWQgc2V0dXBfdmNzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSkKPj4gPiA+ID4gPiAgewo+PiA+ID4gPiA+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmk5MTUgPSBlbmdpbmUtPmk5MTU7Cj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAtCWlmIChJTlRF TF9HRU4oaTkxNSkgPj0gNikgewo+PiA+ID4gPiA+ICsJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+ PSA2KSB7Cj4+ID4gPiA+ID4gIAkJLyogZ2VuNiBic2QgbmVlZHMgYSBzcGVjaWFsIHdhIGZvciB0 YWlsIHVwZGF0ZXMgKi8KPj4gPiA+ID4gPiAtCQlpZiAoSVNfR0VOKGk5MTUsIDYpKQo+PiA+ID4g PiA+ICsJCWlmIChHUkFQSElDU19WRVIoaTkxNSkgPT0gNikKPj4gPiA+ID4gPiAgCQkJZW5naW5l LT5zZXRfZGVmYXVsdF9zdWJtaXNzaW9uID0gZ2VuNl9ic2Rfc2V0X2RlZmF1bHRfc3VibWlzc2lv bjsKPj4gPiA+ID4gPiAgCQllbmdpbmUtPmVtaXRfZmx1c2ggPSBnZW42X2VtaXRfZmx1c2hfdmNz Owo+PiA+ID4gPiA+ICAJCWVuZ2luZS0+aXJxX2VuYWJsZV9tYXNrID0gR1RfQlNEX1VTRVJfSU5U RVJSVVBUOwo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gLQkJaWYgKElTX0dFTihpOTE1LCA2KSkKPj4g PiA+ID4gPiArCQlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID09IDYpCj4+ID4gPiA+ID4gIAkJCWVu Z2luZS0+ZW1pdF9maW5pX2JyZWFkY3J1bWIgPSBnZW42X2VtaXRfYnJlYWRjcnVtYl94Y3M7Cj4+ ID4gPiA+ID4gIAkJZWxzZQo+PiA+ID4gPiA+ICAJCQllbmdpbmUtPmVtaXRfZmluaV9icmVhZGNy dW1iID0gZ2VuN19lbWl0X2JyZWFkY3J1bWJfeGNzOwo+PiA+ID4gPiA+ICAJfSBlbHNlIHsKPj4g PiA+ID4gPiAgCQllbmdpbmUtPmVtaXRfZmx1c2ggPSBnZW40X2VtaXRfZmx1c2hfdmNzOwo+PiA+ ID4gPiA+IC0JCWlmIChJU19HRU4oaTkxNSwgNSkpCj4+ID4gPiA+ID4gKwkJaWYgKEdSQVBISUNT X1ZFUihpOTE1KSA9PSA1KQo+PiA+ID4gPiA+ICAJCQllbmdpbmUtPmlycV9lbmFibGVfbWFzayA9 IElMS19CU0RfVVNFUl9JTlRFUlJVUFQ7Cj4+ID4gPiA+ID4gIAkJZWxzZQo+PiA+ID4gPiA+ICAJ CQllbmdpbmUtPmlycV9lbmFibGVfbWFzayA9IEk5MTVfQlNEX1VTRVJfSU5URVJSVVBUOwo+PiA+ ID4gPiA+IEBAIC0xMTQ1LDcgKzExNDUsNyBAQCBzdGF0aWMgdm9pZCBzZXR1cF9iY3Moc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+PiA+ID4gPiA+ICAJZW5naW5lLT5lbWl0X2ZsdXNo ID0gZ2VuNl9lbWl0X2ZsdXNoX3hjczsKPj4gPiA+ID4gPiAgCWVuZ2luZS0+aXJxX2VuYWJsZV9t YXNrID0gR1RfQkxUX1VTRVJfSU5URVJSVVBUOwo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gLQlpZiAo SVNfR0VOKGk5MTUsIDYpKQo+PiA+ID4gPiA+ICsJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA9PSA2 KQo+PiA+ID4gPiA+ICAJCWVuZ2luZS0+ZW1pdF9maW5pX2JyZWFkY3J1bWIgPSBnZW42X2VtaXRf YnJlYWRjcnVtYl94Y3M7Cj4+ID4gPiA+ID4gIAllbHNlCj4+ID4gPiA+ID4gIAkJZW5naW5lLT5l bWl0X2ZpbmlfYnJlYWRjcnVtYiA9IGdlbjdfZW1pdF9icmVhZGNydW1iX3hjczsKPj4gPiA+ID4g PiBAQCAtMTE1NSw3ICsxMTU1LDcgQEAgc3RhdGljIHZvaWQgc2V0dXBfdmVjcyhzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpCj4+ID4gPiA+ID4gIHsKPj4gPiA+ID4gPiAgCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1ID0gZW5naW5lLT5pOTE1Owo+PiA+ID4gPiA+Cj4+ID4gPiA+ ID4gLQlHRU1fQlVHX09OKElOVEVMX0dFTihpOTE1KSA8IDcpOwo+PiA+ID4gPiA+ICsJR0VNX0JV R19PTihHUkFQSElDU19WRVIoaTkxNSkgPCA3KTsKPj4gPiA+ID4gPgo+PiA+ID4gPiA+ICAJZW5n aW5lLT5lbWl0X2ZsdXNoID0gZ2VuNl9lbWl0X2ZsdXNoX3hjczsKPj4gPiA+ID4gPiAgCWVuZ2lu ZS0+aXJxX2VuYWJsZV9tYXNrID0gUE1fVkVCT1hfVVNFUl9JTlRFUlJVUFQ7Cj4+ID4gPiA+ID4g QEAgLTEyMDMsNyArMTIwMyw3IEBAIHN0YXRpYyBzdHJ1Y3QgaTkxNV92bWEgKmdlbjdfY3R4X3Zt YShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4+ID4gPiA+ID4gIAlzdHJ1Y3QgaTkx NV92bWEgKnZtYTsKPj4gPiA+ID4gPiAgCWludCBzaXplLCBlcnI7Cj4+ID4gPiA+ID4KPj4gPiA+ ID4gPiAtCWlmICghSVNfR0VOKGVuZ2luZS0+aTkxNSwgNykgfHwgZW5naW5lLT5jbGFzcyAhPSBS RU5ERVJfQ0xBU1MpCj4+ID4gPiA+ID4gKwlpZiAoR1JBUEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkg IT0gNyB8fCBlbmdpbmUtPmNsYXNzICE9IFJFTkRFUl9DTEFTUykKPj4gPiA+ID4gPiAgCQlyZXR1 cm4gMDsKPj4gPiA+ID4gPgo+PiA+ID4gPiA+ICAJZXJyID0gZ2VuN19jdHhfc3dpdGNoX2JiX3Nl dHVwKGVuZ2luZSwgTlVMTCAvKiBwcm9iZSBzaXplICovKTsKPj4gPiA+ID4gPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcnBzLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9pbnRlbF9ycHMuYwo+PiA+ID4gPiA+IGluZGV4IDk3Y2FiMWI5OTg3MS4uMDZlOWE4 ZWQ0ZTAzIDEwMDY0NAo+PiA+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2lu dGVsX3Jwcy5jCj4+ID4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxf cnBzLmMKPj4gPiA+ID4gPiBAQCAtMTk2LDcgKzE5Niw3IEBAIHN0YXRpYyB2b2lkIHJwc19yZXNl dF9pbnRlcnJ1cHRzKHN0cnVjdCBpbnRlbF9ycHMgKnJwcykKPj4gPiA+ID4gPiAgCXN0cnVjdCBp bnRlbF9ndCAqZ3QgPSBycHNfdG9fZ3QocnBzKTsKPj4gPiA+ID4gPgo+PiA+ID4gPiA+ICAJc3Bp bl9sb2NrX2lycSgmZ3QtPmlycV9sb2NrKTsKPj4gPiA+ID4gPiAtCWlmIChJTlRFTF9HRU4oZ3Qt Pmk5MTUpID49IDExKQo+PiA+ID4gPiA+ICsJaWYgKEdSQVBISUNTX1ZFUihndC0+aTkxNSkgPj0g MTEpCj4+ID4gPiA+ID4gIAkJZ2VuMTFfcnBzX3Jlc2V0X2ludGVycnVwdHMocnBzKTsKPj4gPiA+ ID4gPiAgCWVsc2UKPj4gPiA+ID4gPiAgCQlnZW42X3Jwc19yZXNldF9pbnRlcnJ1cHRzKHJwcyk7 Cj4+ID4gPiA+ID4gQEAgLTYzMCw3ICs2MzAsNyBAQCBzdGF0aWMgdTMyIHJwc19saW1pdHMoc3Ry dWN0IGludGVsX3JwcyAqcnBzLCB1OCB2YWwpCj4+ID4gPiA+ID4gIAkgKiBmcmVxdWVuY3ksIGlm IHRoZSBkb3duIHRocmVzaG9sZCBleHBpcmVzIGluIHRoYXQgd2luZG93IHdlIHdpbGwgbm90Cj4+ ID4gPiA+ID4gIAkgKiByZWNlaXZlIGEgZG93biBpbnRlcnJ1cHQuCj4+ID4gPiA+ID4gIAkgKi8K Pj4gPiA+ID4gPiAtCWlmIChJTlRFTF9HRU4ocnBzX3RvX2k5MTUocnBzKSkgPj0gOSkgewo+PiA+ ID4gPiA+ICsJaWYgKEdSQVBISUNTX1ZFUihycHNfdG9faTkxNShycHMpKSA+PSA5KSB7Cj4+ID4g PiA+ID4gIAkJbGltaXRzID0gcnBzLT5tYXhfZnJlcV9zb2Z0bGltaXQgPDwgMjM7Cj4+ID4gPiA+ ID4gIAkJaWYgKHZhbCA8PSBycHMtPm1pbl9mcmVxX3NvZnRsaW1pdCkKPj4gPiA+ID4gPiAgCQkJ bGltaXRzIHw9IHJwcy0+bWluX2ZyZXFfc29mdGxpbWl0IDw8IDE0Owo+PiA+ID4gPiA+IEBAIC02 OTcsNyArNjk3LDcgQEAgc3RhdGljIHZvaWQgcnBzX3NldF9wb3dlcihzdHJ1Y3QgaW50ZWxfcnBz ICpycHMsIGludCBuZXdfcG93ZXIpCj4+ID4gPiA+ID4gIAkgICAgaW50ZWxfZ3RfbnNfdG9fcG1f aW50ZXJ2YWwoZ3QsIGVpX2Rvd24gKiB0aHJlc2hvbGRfZG93biAqIDEwKSk7Cj4+ID4gPiA+ID4K Pj4gPiA+ID4gPiAgCXNldCh1bmNvcmUsIEdFTjZfUlBfQ09OVFJPTCwKPj4gPiA+ID4gPiAtCSAg ICAoSU5URUxfR0VOKGd0LT5pOTE1KSA+IDkgPyAwIDogR0VONl9SUF9NRURJQV9UVVJCTykgfAo+ PiA+ID4gPiA+ICsJICAgIChHUkFQSElDU19WRVIoZ3QtPmk5MTUpID4gOSA/IDAgOiBHRU42X1JQ X01FRElBX1RVUkJPKSB8Cj4+ID4gPiA+ID4gIAkgICAgR0VONl9SUF9NRURJQV9IV19OT1JNQUxf TU9ERSB8Cj4+ID4gPiA+ID4gIAkgICAgR0VONl9SUF9NRURJQV9JU19HRlggfAo+PiA+ID4gPiA+ ICAJICAgIEdFTjZfUlBfRU5BQkxFIHwKPj4gPiA+ID4gPiBAQCAtNzcxLDcgKzc3MSw3IEBAIHN0 YXRpYyBpbnQgZ2VuNl9ycHNfc2V0KHN0cnVjdCBpbnRlbF9ycHMgKnJwcywgdTggdmFsKQo+PiA+ ID4gPiA+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBycHNfdG9faTkxNShycHMp Owo+PiA+ID4gPiA+ICAJdTMyIHN3cmVxOwo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gLQlpZiAoSU5U RUxfR0VOKGk5MTUpID49IDkpCj4+ID4gPiA+ID4gKwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49 IDkpCj4+ID4gPiA+ID4gIAkJc3dyZXEgPSBHRU45X0ZSRVFVRU5DWSh2YWwpOwo+PiA+ID4gPiA+ ICAJZWxzZSBpZiAoSVNfSEFTV0VMTChpOTE1KSB8fCBJU19CUk9BRFdFTEwoaTkxNSkpCj4+ID4g PiA+ID4gIAkJc3dyZXEgPSBIU1dfRlJFUVVFTkNZKHZhbCk7Cj4+ID4gPiA+ID4gQEAgLTgxMiwx NCArODEyLDE0IEBAIHN0YXRpYyBpbnQgcnBzX3NldChzdHJ1Y3QgaW50ZWxfcnBzICpycHMsIHU4 IHZhbCwgYm9vbCB1cGRhdGUpCj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAgCWlmIChJU19WQUxMRVlW SUVXKGk5MTUpIHx8IElTX0NIRVJSWVZJRVcoaTkxNSkpCj4+ID4gPiA+ID4gIAkJZXJyID0gdmx2 X3Jwc19zZXQocnBzLCB2YWwpOwo+PiA+ID4gPiA+IC0JZWxzZSBpZiAoSU5URUxfR0VOKGk5MTUp ID49IDYpCj4+ID4gPiA+ID4gKwllbHNlIGlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gNikKPj4g PiA+ID4gPiAgCQllcnIgPSBnZW42X3Jwc19zZXQocnBzLCB2YWwpOwo+PiA+ID4gPiA+ICAJZWxz ZQo+PiA+ID4gPiA+ICAJCWVyciA9IGdlbjVfcnBzX3NldChycHMsIHZhbCk7Cj4+ID4gPiA+ID4g IAlpZiAoZXJyKQo+PiA+ID4gPiA+ICAJCXJldHVybiBlcnI7Cj4+ID4gPiA+ID4KPj4gPiA+ID4g PiAtCWlmICh1cGRhdGUgJiYgSU5URUxfR0VOKGk5MTUpID49IDYpCj4+ID4gPiA+ID4gKwlpZiAo dXBkYXRlICYmIEdSQVBISUNTX1ZFUihpOTE1KSA+PSA2KQo+PiA+ID4gPiA+ICAJCWdlbjZfcnBz X3NldF90aHJlc2hvbGRzKHJwcywgdmFsKTsKPj4gPiA+ID4gPiAgCXJwcy0+bGFzdF9mcmVxID0g dmFsOwo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gQEAgLTg1Myw3ICs4NTMsNyBAQCB2b2lkIGludGVs X3Jwc191bnBhcmsoc3RydWN0IGludGVsX3JwcyAqcnBzKQo+PiA+ID4gPiA+ICAJaWYgKGludGVs X3Jwc191c2VzX3RpbWVyKHJwcykpCj4+ID4gPiA+ID4gIAkJcnBzX3N0YXJ0X3RpbWVyKHJwcyk7 Cj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAtCWlmIChJU19HRU4ocnBzX3RvX2k5MTUocnBzKSwgNSkp Cj4+ID4gPiA+ID4gKwlpZiAoR1JBUEhJQ1NfVkVSKHJwc190b19pOTE1KHJwcykpID09IDUpCj4+ ID4gPiA+ID4gIAkJZ2VuNV9ycHNfdXBkYXRlKHJwcyk7Cj4+ID4gPiA+ID4gIH0KPj4gPiA+ID4g Pgo+PiA+ID4gPiA+IEBAIC05OTksNyArOTk5LDcgQEAgc3RhdGljIHZvaWQgZ2VuNl9ycHNfaW5p dChzdHJ1Y3QgaW50ZWxfcnBzICpycHMpCj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAgCXJwcy0+ZWZm aWNpZW50X2ZyZXEgPSBycHMtPnJwMV9mcmVxOwo+PiA+ID4gPiA+ICAJaWYgKElTX0hBU1dFTEwo aTkxNSkgfHwgSVNfQlJPQURXRUxMKGk5MTUpIHx8Cj4+ID4gPiA+ID4gLQkgICAgSVNfR0VOOV9C QyhpOTE1KSB8fCBJTlRFTF9HRU4oaTkxNSkgPj0gMTApIHsKPj4gPiA+ID4gPiArCSAgICBJU19H RU45X0JDKGk5MTUpIHx8IEdSQVBISUNTX1ZFUihpOTE1KSA+PSAxMCkgewo+PiA+ID4gPiA+ICAJ CXUzMiBkZGNjX3N0YXR1cyA9IDA7Cj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAgCQlpZiAoc2FuZHli cmlkZ2VfcGNvZGVfcmVhZChpOTE1LAo+PiA+ID4gPiA+IEBAIC0xMDEyLDcgKzEwMTIsNyBAQCBz dGF0aWMgdm9pZCBnZW42X3Jwc19pbml0KHN0cnVjdCBpbnRlbF9ycHMgKnJwcykKPj4gPiA+ID4g PiAgCQkJCQlycHMtPm1heF9mcmVxKTsKPj4gPiA+ID4gPiAgCX0KPj4gPiA+ID4gPgo+PiA+ID4g PiA+IC0JaWYgKElTX0dFTjlfQkMoaTkxNSkgfHwgSU5URUxfR0VOKGk5MTUpID49IDEwKSB7Cj4+ ID4gPiA+ID4gKwlpZiAoSVNfR0VOOV9CQyhpOTE1KSB8fCBHUkFQSElDU19WRVIoaTkxNSkgPj0g MTApIHsKPj4gPiA+ID4gPiAgCQkvKiBTdG9yZSB0aGUgZnJlcXVlbmN5IHZhbHVlcyBpbiAxNi42 NiBNSFogdW5pdHMsIHdoaWNoIGlzCj4+ID4gPiA+ID4gIAkJICogdGhlIG5hdHVyYWwgaGFyZHdh cmUgdW5pdCBmb3IgU0tMCj4+ID4gPiA+ID4gIAkJICovCj4+ID4gPiA+ID4gQEAgLTEwNDgsNyAr MTA0OCw3IEBAIHN0YXRpYyBib29sIGdlbjlfcnBzX2VuYWJsZShzdHJ1Y3QgaW50ZWxfcnBzICpy cHMpCj4+ID4gPiA+ID4gIAlzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUgPSBndC0+dW5jb3Jl Owo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gIAkvKiBQcm9ncmFtIGRlZmF1bHRzIGFuZCB0aHJlc2hv bGRzIGZvciBSUFMgKi8KPj4gPiA+ID4gPiAtCWlmIChJU19HRU4oZ3QtPmk5MTUsIDkpKQo+PiA+ ID4gPiA+ICsJaWYgKEdSQVBISUNTX1ZFUihndC0+aTkxNSkgPT0gOSkKPj4gPiA+ID4gPiAgCQlp bnRlbF91bmNvcmVfd3JpdGVfZncodW5jb3JlLCBHRU42X1JDX1ZJREVPX0ZSRVEsCj4+ID4gPiA+ ID4gIAkJCQkgICAgICBHRU45X0ZSRVFVRU5DWShycHMtPnJwMV9mcmVxKSk7Cj4+ID4gPiA+ID4K Pj4gPiA+ID4gPiBAQCAtMTM2NSwxNiArMTM2NSwxNiBAQCB2b2lkIGludGVsX3Jwc19lbmFibGUo c3RydWN0IGludGVsX3JwcyAqcnBzKQo+PiA+ID4gPiA+ICAJCWVuYWJsZWQgPSBjaHZfcnBzX2Vu YWJsZShycHMpOwo+PiA+ID4gPiA+ICAJZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhpOTE1KSkKPj4g PiA+ID4gPiAgCQllbmFibGVkID0gdmx2X3Jwc19lbmFibGUocnBzKTsKPj4gPiA+ID4gPiAtCWVs c2UgaWYgKElOVEVMX0dFTihpOTE1KSA+PSA5KQo+PiA+ID4gPiA+ICsJZWxzZSBpZiAoR1JBUEhJ Q1NfVkVSKGk5MTUpID49IDkpCj4+ID4gPiA+ID4gIAkJZW5hYmxlZCA9IGdlbjlfcnBzX2VuYWJs ZShycHMpOwo+PiA+ID4gPiA+IC0JZWxzZSBpZiAoSU5URUxfR0VOKGk5MTUpID49IDgpCj4+ID4g PiA+ID4gKwllbHNlIGlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gOCkKPj4gPiA+ID4gPiAgCQll bmFibGVkID0gZ2VuOF9ycHNfZW5hYmxlKHJwcyk7Cj4+ID4gPiA+ID4gLQllbHNlIGlmIChJTlRF TF9HRU4oaTkxNSkgPj0gNikKPj4gPiA+ID4gPiArCWVsc2UgaWYgKEdSQVBISUNTX1ZFUihpOTE1 KSA+PSA2KQo+PiA+ID4gPiA+ICAJCWVuYWJsZWQgPSBnZW42X3Jwc19lbmFibGUocnBzKTsKPj4g PiA+ID4gPiAgCWVsc2UgaWYgKElTX0lST05MQUtFX00oaTkxNSkpCj4+ID4gPiA+ID4gIAkJZW5h YmxlZCA9IGdlbjVfcnBzX2VuYWJsZShycHMpOwo+PiA+ID4gPiA+ICAJZWxzZQo+PiA+ID4gPiA+ IC0JCU1JU1NJTkdfQ0FTRShJTlRFTF9HRU4oaTkxNSkpOwo+PiA+ID4gPiA+ICsJCU1JU1NJTkdf Q0FTRShHUkFQSElDU19WRVIoaTkxNSkpOwo+PiA+ID4gPiA+ICAJaW50ZWxfdW5jb3JlX2ZvcmNl d2FrZV9wdXQodW5jb3JlLCBGT1JDRVdBS0VfQUxMKTsKPj4gPiA+ID4gPiAgCWlmICghZW5hYmxl ZCkKPj4gPiA+ID4gPiAgCQlyZXR1cm47Cj4+ID4gPiA+ID4gQEAgLTEzOTMsNyArMTM5Myw3IEBA IHZvaWQgaW50ZWxfcnBzX2VuYWJsZShzdHJ1Y3QgaW50ZWxfcnBzICpycHMpCj4+ID4gPiA+ID4K Pj4gPiA+ID4gPiAgCWlmIChoYXNfYnVzeV9zdGF0cyhycHMpKQo+PiA+ID4gPiA+ICAJCWludGVs X3Jwc19zZXRfdGltZXIocnBzKTsKPj4gPiA+ID4gPiAtCWVsc2UgaWYgKElOVEVMX0dFTihpOTE1 KSA+PSA2KQo+PiA+ID4gPiA+ICsJZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDYpCj4+ ID4gPiA+ID4gIAkJaW50ZWxfcnBzX3NldF9pbnRlcnJ1cHRzKHJwcyk7Cj4+ID4gPiA+ID4gIAll bHNlCj4+ID4gPiA+ID4gIAkJLyogSXJvbmxha2UgY3VycmVudGx5IHVzZXMgaW50ZWxfaXBzLmtv ICovIHt9Cj4+ID4gPiA+ID4gQEAgLTE0MTQsNyArMTQxNCw3IEBAIHZvaWQgaW50ZWxfcnBzX2Rp c2FibGUoc3RydWN0IGludGVsX3JwcyAqcnBzKQo+PiA+ID4gPiA+ICAJaW50ZWxfcnBzX2NsZWFy X2ludGVycnVwdHMocnBzKTsKPj4gPiA+ID4gPiAgCWludGVsX3Jwc19jbGVhcl90aW1lcihycHMp Owo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gLQlpZiAoSU5URUxfR0VOKGk5MTUpID49IDYpCj4+ID4g PiA+ID4gKwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDYpCj4+ID4gPiA+ID4gIAkJZ2VuNl9y cHNfZGlzYWJsZShycHMpOwo+PiA+ID4gPiA+ICAJZWxzZSBpZiAoSVNfSVJPTkxBS0VfTShpOTE1 KSkKPj4gPiA+ID4gPiAgCQlnZW41X3Jwc19kaXNhYmxlKHJwcyk7Cj4+ID4gPiA+ID4gQEAgLTE0 NTMsMTQgKzE0NTMsMTQgQEAgaW50IGludGVsX2dwdV9mcmVxKHN0cnVjdCBpbnRlbF9ycHMgKnJw cywgaW50IHZhbCkKPj4gPiA+ID4gPiAgewo+PiA+ID4gPiA+ICAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUgPSBycHNfdG9faTkxNShycHMpOwo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gLQlp ZiAoSU5URUxfR0VOKGk5MTUpID49IDkpCj4+ID4gPiA+ID4gKwlpZiAoR1JBUEhJQ1NfVkVSKGk5 MTUpID49IDkpCj4+ID4gPiA+ID4gIAkJcmV0dXJuIERJVl9ST1VORF9DTE9TRVNUKHZhbCAqIEdU X0ZSRVFVRU5DWV9NVUxUSVBMSUVSLAo+PiA+ID4gPiA+ICAJCQkJCSBHRU45X0ZSRVFfU0NBTEVS KTsKPj4gPiA+ID4gPiAgCWVsc2UgaWYgKElTX0NIRVJSWVZJRVcoaTkxNSkpCj4+ID4gPiA+ID4g IAkJcmV0dXJuIGNodl9ncHVfZnJlcShycHMsIHZhbCk7Cj4+ID4gPiA+ID4gIAllbHNlIGlmIChJ U19WQUxMRVlWSUVXKGk5MTUpKQo+PiA+ID4gPiA+ICAJCXJldHVybiBieXRfZ3B1X2ZyZXEocnBz LCB2YWwpOwo+PiA+ID4gPiA+IC0JZWxzZSBpZiAoSU5URUxfR0VOKGk5MTUpID49IDYpCj4+ID4g PiA+ID4gKwllbHNlIGlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gNikKPj4gPiA+ID4gPiAgCQly ZXR1cm4gdmFsICogR1RfRlJFUVVFTkNZX01VTFRJUExJRVI7Cj4+ID4gPiA+ID4gIAllbHNlCj4+ ID4gPiA+ID4gIAkJcmV0dXJuIHZhbDsKPj4gPiA+ID4gPiBAQCAtMTQ3MCwxNCArMTQ3MCwxNCBA QCBpbnQgaW50ZWxfZnJlcV9vcGNvZGUoc3RydWN0IGludGVsX3JwcyAqcnBzLCBpbnQgdmFsKQo+ PiA+ID4gPiA+ICB7Cj4+ID4gPiA+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9 IHJwc190b19pOTE1KHJwcyk7Cj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAtCWlmIChJTlRFTF9HRU4o aTkxNSkgPj0gOSkKPj4gPiA+ID4gPiArCWlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gOSkKPj4g PiA+ID4gPiAgCQlyZXR1cm4gRElWX1JPVU5EX0NMT1NFU1QodmFsICogR0VOOV9GUkVRX1NDQUxF UiwKPj4gPiA+ID4gPiAgCQkJCQkgR1RfRlJFUVVFTkNZX01VTFRJUExJRVIpOwo+PiA+ID4gPiA+ ICAJZWxzZSBpZiAoSVNfQ0hFUlJZVklFVyhpOTE1KSkKPj4gPiA+ID4gPiAgCQlyZXR1cm4gY2h2 X2ZyZXFfb3Bjb2RlKHJwcywgdmFsKTsKPj4gPiA+ID4gPiAgCWVsc2UgaWYgKElTX1ZBTExFWVZJ RVcoaTkxNSkpCj4+ID4gPiA+ID4gIAkJcmV0dXJuIGJ5dF9mcmVxX29wY29kZShycHMsIHZhbCk7 Cj4+ID4gPiA+ID4gLQllbHNlIGlmIChJTlRFTF9HRU4oaTkxNSkgPj0gNikKPj4gPiA+ID4gPiAr CWVsc2UgaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSA2KQo+PiA+ID4gPiA+ICAJCXJldHVybiBE SVZfUk9VTkRfQ0xPU0VTVCh2YWwsIEdUX0ZSRVFVRU5DWV9NVUxUSVBMSUVSKTsKPj4gPiA+ID4g PiAgCWVsc2UKPj4gPiA+ID4gPiAgCQlyZXR1cm4gdmFsOwo+PiA+ID4gPiA+IEBAIC0xNzcwLDcg KzE3NzAsNyBAQCB2b2lkIGdlbjZfcnBzX2lycV9oYW5kbGVyKHN0cnVjdCBpbnRlbF9ycHMgKnJw cywgdTMyIHBtX2lpcikKPj4gPiA+ID4gPiAgCQlzcGluX3VubG9jaygmZ3QtPmlycV9sb2NrKTsK Pj4gPiA+ID4gPiAgCX0KPj4gPiA+ID4gPgo+PiA+ID4gPiA+IC0JaWYgKElOVEVMX0dFTihndC0+ aTkxNSkgPj0gOCkKPj4gPiA+ID4gPiArCWlmIChHUkFQSElDU19WRVIoZ3QtPmk5MTUpID49IDgp Cj4+ID4gPiA+ID4gIAkJcmV0dXJuOwo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gIAlpZiAocG1faWly ICYgUE1fVkVCT1hfVVNFUl9JTlRFUlJVUFQpCj4+ID4gPiA+ID4gQEAgLTE4MzMsNyArMTgzMyw3 IEBAIHZvaWQgaW50ZWxfcnBzX2luaXQoc3RydWN0IGludGVsX3JwcyAqcnBzKQo+PiA+ID4gPiA+ ICAJCWNodl9ycHNfaW5pdChycHMpOwo+PiA+ID4gPiA+ICAJZWxzZSBpZiAoSVNfVkFMTEVZVklF VyhpOTE1KSkKPj4gPiA+ID4gPiAgCQl2bHZfcnBzX2luaXQocnBzKTsKPj4gPiA+ID4gPiAtCWVs c2UgaWYgKElOVEVMX0dFTihpOTE1KSA+PSA2KQo+PiA+ID4gPiA+ICsJZWxzZSBpZiAoR1JBUEhJ Q1NfVkVSKGk5MTUpID49IDYpCj4+ID4gPiA+ID4gIAkJZ2VuNl9ycHNfaW5pdChycHMpOwo+PiA+ ID4gPiA+ICAJZWxzZSBpZiAoSVNfSVJPTkxBS0VfTShpOTE1KSkKPj4gPiA+ID4gPiAgCQlnZW41 X3Jwc19pbml0KHJwcyk7Cj4+ID4gPiA+ID4gQEAgLTE4NDMsNyArMTg0Myw3IEBAIHZvaWQgaW50 ZWxfcnBzX2luaXQoc3RydWN0IGludGVsX3JwcyAqcnBzKQo+PiA+ID4gPiA+ICAJcnBzLT5taW5f ZnJlcV9zb2Z0bGltaXQgPSBycHMtPm1pbl9mcmVxOwo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gIAkv KiBBZnRlciBzZXR0aW5nIG1heC1zb2Z0bGltaXQsIGZpbmQgdGhlIG92ZXJjbG9jayBtYXggZnJl cSAqLwo+PiA+ID4gPiA+IC0JaWYgKElTX0dFTihpOTE1LCA2KSB8fCBJU19JVllCUklER0UoaTkx NSkgfHwgSVNfSEFTV0VMTChpOTE1KSkgewo+PiA+ID4gPiA+ICsJaWYgKEdSQVBISUNTX1ZFUihp OTE1KSA9PSA2IHx8IElTX0lWWUJSSURHRShpOTE1KSB8fCBJU19IQVNXRUxMKGk5MTUpKSB7Cj4+ ID4gPiA+ID4gIAkJdTMyIHBhcmFtcyA9IDA7Cj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAgCQlzYW5k eWJyaWRnZV9wY29kZV9yZWFkKGk5MTUsIEdFTjZfUkVBRF9PQ19QQVJBTVMsCj4+ID4gPiA+ID4g QEAgLTE4NzIsMTYgKzE4NzIsMTYgQEAgdm9pZCBpbnRlbF9ycHNfaW5pdChzdHJ1Y3QgaW50ZWxf cnBzICpycHMpCj4+ID4gPiA+ID4gIAkgKgo+PiA+ID4gPiA+ICAJICogVE9ETzogdmVyaWZ5IGlm IHRoaXMgY2FuIGJlIHJlcHJvZHVjZWQgb24gVkxWLENIVi4KPj4gPiA+ID4gPiAgCSAqLwo+PiA+ ID4gPiA+IC0JaWYgKElOVEVMX0dFTihpOTE1KSA8PSA3KQo+PiA+ID4gPiA+ICsJaWYgKEdSQVBI SUNTX1ZFUihpOTE1KSA8PSA3KQo+PiA+ID4gPiA+ICAJCXJwcy0+cG1faW50cm1za19tYnogfD0g R0VONl9QTV9SUF9VUF9FSV9FWFBJUkVEOwo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gLQlpZiAoSU5U RUxfR0VOKGk5MTUpID49IDggJiYgSU5URUxfR0VOKGk5MTUpIDwgMTEpCj4+ID4gPiA+ID4gKwlp ZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDggJiYgR1JBUEhJQ1NfVkVSKGk5MTUpIDwgMTEpCj4+ ID4gPiA+ID4gIAkJcnBzLT5wbV9pbnRybXNrX21ieiB8PSBHRU44X1BNSU5UUl9ESVNBQkxFX1JF RElSRUNUX1RPX0dVQzsKPj4gPiA+ID4gPiAgfQo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gIHZvaWQg aW50ZWxfcnBzX3Nhbml0aXplKHN0cnVjdCBpbnRlbF9ycHMgKnJwcykKPj4gPiA+ID4gPiAgewo+ PiA+ID4gPiA+IC0JaWYgKElOVEVMX0dFTihycHNfdG9faTkxNShycHMpKSA+PSA2KQo+PiA+ID4g PiA+ICsJaWYgKEdSQVBISUNTX1ZFUihycHNfdG9faTkxNShycHMpKSA+PSA2KQo+PiA+ID4gPiA+ ICAJCXJwc19kaXNhYmxlX2ludGVycnVwdHMocnBzKTsKPj4gPiA+ID4gPiAgfQo+PiA+ID4gPiA+ Cj4+ID4gPiA+ID4gQEAgLTE4OTIsMTEgKzE4OTIsMTEgQEAgdTMyIGludGVsX3Jwc19nZXRfY2Fn ZihzdHJ1Y3QgaW50ZWxfcnBzICpycHMsIHUzMiBycHN0YXQpCj4+ID4gPiA+ID4KPj4gPiA+ID4g PiAgCWlmIChJU19WQUxMRVlWSUVXKGk5MTUpIHx8IElTX0NIRVJSWVZJRVcoaTkxNSkpCj4+ID4g PiA+ID4gIAkJY2FnZiA9IChycHN0YXQgPj4gOCkgJiAweGZmOwo+PiA+ID4gPiA+IC0JZWxzZSBp ZiAoSU5URUxfR0VOKGk5MTUpID49IDkpCj4+ID4gPiA+ID4gKwllbHNlIGlmIChHUkFQSElDU19W RVIoaTkxNSkgPj0gOSkKPj4gPiA+ID4gPiAgCQljYWdmID0gKHJwc3RhdCAmIEdFTjlfQ0FHRl9N QVNLKSA+PiBHRU45X0NBR0ZfU0hJRlQ7Cj4+ID4gPiA+ID4gIAllbHNlIGlmIChJU19IQVNXRUxM KGk5MTUpIHx8IElTX0JST0FEV0VMTChpOTE1KSkKPj4gPiA+ID4gPiAgCQljYWdmID0gKHJwc3Rh dCAmIEhTV19DQUdGX01BU0spID4+IEhTV19DQUdGX1NISUZUOwo+PiA+ID4gPiA+IC0JZWxzZSBp ZiAoSU5URUxfR0VOKGk5MTUpID49IDYpCj4+ID4gPiA+ID4gKwllbHNlIGlmIChHUkFQSElDU19W RVIoaTkxNSkgPj0gNikKPj4gPiA+ID4gPiAgCQljYWdmID0gKHJwc3RhdCAmIEdFTjZfQ0FHRl9N QVNLKSA+PiBHRU42X0NBR0ZfU0hJRlQ7Cj4+ID4gPiA+ID4gIAllbHNlCj4+ID4gPiA+ID4gIAkJ Y2FnZiA9IGdlbjVfaW52ZXJ0X2ZyZXEocnBzLCAocnBzdGF0ICYgTUVNU1RBVF9QU1RBVEVfTUFT SykgPj4KPj4gPiA+ID4gPiBAQCAtMTkxNSw3ICsxOTE1LDcgQEAgc3RhdGljIHUzMiByZWFkX2Nh Z2Yoc3RydWN0IGludGVsX3JwcyAqcnBzKQo+PiA+ID4gPiA+ICAJCXZsdl9wdW5pdF9nZXQoaTkx NSk7Cj4+ID4gPiA+ID4gIAkJZnJlcSA9IHZsdl9wdW5pdF9yZWFkKGk5MTUsIFBVTklUX1JFR19H UFVfRlJFUV9TVFMpOwo+PiA+ID4gPiA+ICAJCXZsdl9wdW5pdF9wdXQoaTkxNSk7Cj4+ID4gPiA+ ID4gLQl9IGVsc2UgaWYgKElOVEVMX0dFTihpOTE1KSA+PSA2KSB7Cj4+ID4gPiA+ID4gKwl9IGVs c2UgaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSA2KSB7Cj4+ID4gPiA+ID4gIAkJZnJlcSA9IGlu dGVsX3VuY29yZV9yZWFkKHVuY29yZSwgR0VONl9SUFNUQVQxKTsKPj4gPiA+ID4gPiAgCX0gZWxz ZSB7Cj4+ID4gPiA+ID4gIAkJZnJlcSA9IGludGVsX3VuY29yZV9yZWFkKHVuY29yZSwgTUVNU1RB VF9JTEspOwo+PiA+ID4gPiA+IEBAIC0xOTY4LDcgKzE5NjgsNyBAQCB2b2lkIGludGVsX3Jwc19k cml2ZXJfcmVnaXN0ZXIoc3RydWN0IGludGVsX3JwcyAqcnBzKQo+PiA+ID4gPiA+ICAJICogV2Ug b25seSByZWdpc3RlciB0aGUgaTkxNSBpcHMgcGFydCB3aXRoIGludGVsLWlwcyBvbmNlIGV2ZXJ5 dGhpbmcgaXMKPj4gPiA+ID4gPiAgCSAqIHNldCB1cCwgdG8gYXZvaWQgaW50ZWwtaXBzIHNuZWFr aW5nIGluIGFuZCByZWFkaW5nIGJvZ3VzIHZhbHVlcy4KPj4gPiA+ID4gPiAgCSAqLwo+PiA+ID4g PiA+IC0JaWYgKElTX0dFTihndC0+aTkxNSwgNSkpIHsKPj4gPiA+ID4gPiArCWlmIChHUkFQSElD U19WRVIoZ3QtPmk5MTUpID09IDUpIHsKPj4gPiA+ID4gPiAgCQlHRU1fQlVHX09OKGlwc19tY2hk ZXYpOwo+PiA+ID4gPiA+ICAJCXJjdV9hc3NpZ25fcG9pbnRlcihpcHNfbWNoZGV2LCBndC0+aTkx NSk7Cj4+ID4gPiA+ID4gIAkJaXBzX3BpbmdfZm9yX2k5MTVfbG9hZCgpOwo+PiA+ID4gPiA+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9zc2V1LmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9zc2V1LmMKPj4gPiA+ID4gPiBpbmRleCAwZDlmNzRhZWM4 ZmUuLjM2N2ZkNDRiODFjOCAxMDA2NDQKPj4gPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9pbnRlbF9zc2V1LmMKPj4gPiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9pbnRlbF9zc2V1LmMKPj4gPiA+ID4gPiBAQCAtNTkwLDEzICs1OTAsMTMgQEAgdm9pZCBp bnRlbF9zc2V1X2luZm9faW5pdChzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQo+PiA+ID4gPiA+ICAJCWNo ZXJyeXZpZXdfc3NldV9pbmZvX2luaXQoZ3QpOwo+PiA+ID4gPiA+ICAJZWxzZSBpZiAoSVNfQlJP QURXRUxMKGk5MTUpKQo+PiA+ID4gPiA+ICAJCWJkd19zc2V1X2luZm9faW5pdChndCk7Cj4+ID4g PiA+ID4gLQllbHNlIGlmIChJU19HRU4oaTkxNSwgOSkpCj4+ID4gPiA+ID4gKwllbHNlIGlmIChH UkFQSElDU19WRVIoaTkxNSkgPT0gOSkKPj4gPiA+ID4gPiAgCQlnZW45X3NzZXVfaW5mb19pbml0 KGd0KTsKPj4gPiA+ID4gPiAtCWVsc2UgaWYgKElTX0dFTihpOTE1LCAxMCkpCj4+ID4gPiA+ID4g KwllbHNlIGlmIChHUkFQSElDU19WRVIoaTkxNSkgPT0gMTApCj4+ID4gPiA+ID4gIAkJZ2VuMTBf c3NldV9pbmZvX2luaXQoZ3QpOwo+PiA+ID4gPiA+IC0JZWxzZSBpZiAoSVNfR0VOKGk5MTUsIDEx KSkKPj4gPiA+ID4gPiArCWVsc2UgaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA9PSAxMSkKPj4gPiA+ ID4gPiAgCQlnZW4xMV9zc2V1X2luZm9faW5pdChndCk7Cj4+ID4gPiA+ID4gLQllbHNlIGlmIChJ TlRFTF9HRU4oaTkxNSkgPj0gMTIpCj4+ID4gPiA+ID4gKwllbHNlIGlmIChHUkFQSElDU19WRVIo aTkxNSkgPj0gMTIpCj4+ID4gPiA+ID4gIAkJZ2VuMTJfc3NldV9pbmZvX2luaXQoZ3QpOwo+PiA+ ID4gPiA+ICB9Cj4+ID4gPiA+ID4KPj4gPiA+ID4gPiBAQCAtNjEzLDcgKzYxMyw3IEBAIHUzMiBp bnRlbF9zc2V1X21ha2VfcnBjcyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0LAo+PiA+ID4gPiA+ICAJICog Tm8gZXhwbGljaXQgUlBDUyByZXF1ZXN0IGlzIG5lZWRlZCB0byBlbnN1cmUgZnVsbAo+PiA+ID4g PiA+ICAJICogc2xpY2Uvc3Vic2xpY2UvRVUgZW5hYmxlbWVudCBwcmlvciB0byBHZW45Lgo+PiA+ ID4gPiA+ICAJICovCj4+ID4gPiA+ID4gLQlpZiAoSU5URUxfR0VOKGk5MTUpIDwgOSkKPj4gPiA+ ID4gPiArCWlmIChHUkFQSElDU19WRVIoaTkxNSkgPCA5KQo+PiA+ID4gPiA+ICAJCXJldHVybiAw Owo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gIAkvKgo+PiA+ID4gPiA+IEBAIC02NTEsNyArNjUxLDcg QEAgdTMyIGludGVsX3NzZXVfbWFrZV9ycGNzKHN0cnVjdCBpbnRlbF9ndCAqZ3QsCj4+ID4gPiA+ ID4gIAkgKiBzdWJzbGljZXMgYXJlIGVuYWJsZWQsIG9yIGEgY291bnQgYmV0d2VlbiBvbmUgYW5k IGZvdXIgb24gdGhlIGZpcnN0Cj4+ID4gPiA+ID4gIAkgKiBzbGljZS4KPj4gPiA+ID4gPiAgCSAq Lwo+PiA+ID4gPiA+IC0JaWYgKElTX0dFTihpOTE1LCAxMSkgJiYKPj4gPiA+ID4gPiArCWlmIChH UkFQSElDU19WRVIoaTkxNSkgPT0gMTEgJiYKPj4gPiA+ID4gPiAgCSAgICBzbGljZXMgPT0gMSAm Jgo+PiA+ID4gPiA+ICAJICAgIHN1YnNsaWNlcyA+IG1pbl90KHU4LCA0LCBod2VpZ2h0OChzc2V1 LT5zdWJzbGljZV9tYXNrWzBdKSAvIDIpKSB7Cj4+ID4gPiA+ID4gIAkJR0VNX0JVR19PTihzdWJz bGljZXMgJiAxKTsKPj4gPiA+ID4gPiBAQCAtNjY5LDcgKzY2OSw3IEBAIHUzMiBpbnRlbF9zc2V1 X21ha2VfcnBjcyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0LAo+PiA+ID4gPiA+ICAJaWYgKHNzZXUtPmhh c19zbGljZV9wZykgewo+PiA+ID4gPiA+ICAJCXUzMiBtYXNrLCB2YWwgPSBzbGljZXM7Cj4+ID4g PiA+ID4KPj4gPiA+ID4gPiAtCQlpZiAoSU5URUxfR0VOKGk5MTUpID49IDExKSB7Cj4+ID4gPiA+ ID4gKwkJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSAxMSkgewo+PiA+ID4gPiA+ICAJCQltYXNr ID0gR0VOMTFfUlBDU19TX0NOVF9NQVNLOwo+PiA+ID4gPiA+ICAJCQl2YWwgPDw9IEdFTjExX1JQ Q1NfU19DTlRfU0hJRlQ7Cj4+ID4gPiA+ID4gIAkJfSBlbHNlIHsKPj4gPiA+ID4gPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfd29ya2Fyb3VuZHMuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3dvcmthcm91bmRzLmMKPj4gPiA+ID4gPiBpbmRleCA2 MmNiOWVlNWJmYzMuLmI2MmQxZTMxYTY0NSAxMDA2NDQKPj4gPiA+ID4gPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9pbnRlbF93b3JrYXJvdW5kcy5jCj4+ID4gPiA+ID4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfd29ya2Fyb3VuZHMuYwo+PiA+ID4gPiA+IEBAIC02 OTksOSArNjk5LDkgQEAgX19pbnRlbF9lbmdpbmVfaW5pdF9jdHhfd2Eoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lLAo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gIAlpZiAoSVNfREcxKGk5MTUp KQo+PiA+ID4gPiA+ICAJCWRnMV9jdHhfd29ya2Fyb3VuZHNfaW5pdChlbmdpbmUsIHdhbCk7Cj4+ ID4gPiA+ID4gLQllbHNlIGlmIChJU19HRU4oaTkxNSwgMTIpKQo+PiA+ID4gPiA+ICsJZWxzZSBp ZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID09IDEyKQo+PiA+ID4gPiA+ICAJCWdlbjEyX2N0eF93b3Jr YXJvdW5kc19pbml0KGVuZ2luZSwgd2FsKTsKPj4gPiA+ID4gPiAtCWVsc2UgaWYgKElTX0dFTihp OTE1LCAxMSkpCj4+ID4gPiA+ID4gKwllbHNlIGlmIChHUkFQSElDU19WRVIoaTkxNSkgPT0gMTEp Cj4+ID4gPiA+ID4gIAkJaWNsX2N0eF93b3JrYXJvdW5kc19pbml0KGVuZ2luZSwgd2FsKTsKPj4g PiA+ID4gPiAgCWVsc2UgaWYgKElTX0NBTk5PTkxBS0UoaTkxNSkpCj4+ID4gPiA+ID4gIAkJY25s X2N0eF93b3JrYXJvdW5kc19pbml0KGVuZ2luZSwgd2FsKTsKPj4gPiA+ID4gPiBAQCAtNzE5LDE0 ICs3MTksMTQgQEAgX19pbnRlbF9lbmdpbmVfaW5pdF9jdHhfd2Eoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lLAo+PiA+ID4gPiA+ICAJCWNodl9jdHhfd29ya2Fyb3VuZHNfaW5pdChlbmdp bmUsIHdhbCk7Cj4+ID4gPiA+ID4gIAllbHNlIGlmIChJU19CUk9BRFdFTEwoaTkxNSkpCj4+ID4g PiA+ID4gIAkJYmR3X2N0eF93b3JrYXJvdW5kc19pbml0KGVuZ2luZSwgd2FsKTsKPj4gPiA+ID4g PiAtCWVsc2UgaWYgKElTX0dFTihpOTE1LCA3KSkKPj4gPiA+ID4gPiArCWVsc2UgaWYgKEdSQVBI SUNTX1ZFUihpOTE1KSA9PSA3KQo+PiA+ID4gPiA+ICAJCWdlbjdfY3R4X3dvcmthcm91bmRzX2lu aXQoZW5naW5lLCB3YWwpOwo+PiA+ID4gPiA+IC0JZWxzZSBpZiAoSVNfR0VOKGk5MTUsIDYpKQo+ PiA+ID4gPiA+ICsJZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID09IDYpCj4+ID4gPiA+ID4g IAkJZ2VuNl9jdHhfd29ya2Fyb3VuZHNfaW5pdChlbmdpbmUsIHdhbCk7Cj4+ID4gPiA+ID4gLQll bHNlIGlmIChJTlRFTF9HRU4oaTkxNSkgPCA4KQo+PiA+ID4gPiA+ICsJZWxzZSBpZiAoR1JBUEhJ Q1NfVkVSKGk5MTUpIDwgOCkKPj4gPiA+ID4gPiAgCQk7Cj4+ID4gPiA+ID4gIAllbHNlCj4+ID4g PiA+ID4gLQkJTUlTU0lOR19DQVNFKElOVEVMX0dFTihpOTE1KSk7Cj4+ID4gPiA+ID4gKwkJTUlT U0lOR19DQVNFKEdSQVBISUNTX1ZFUihpOTE1KSk7Cj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAgCXdh X2luaXRfZmluaXNoKHdhbCk7Cj4+ID4gPiA+ID4gIH0KPj4gPiA+ID4gPiBAQCAtOTUwLDcgKzk1 MCw3IEBAIHdhX2luaXRfbWNyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCBzdHJ1Y3Qg aTkxNV93YV9saXN0ICp3YWwpCj4+ID4gPiA+ID4gIAl1bnNpZ25lZCBpbnQgc2xpY2UsIHN1YnNs aWNlOwo+PiA+ID4gPiA+ICAJdTMyIGwzX2VuLCBtY3IsIG1jcl9tYXNrOwo+PiA+ID4gPiA+Cj4+ ID4gPiA+ID4gLQlHRU1fQlVHX09OKElOVEVMX0dFTihpOTE1KSA8IDEwKTsKPj4gPiA+ID4gPiAr CUdFTV9CVUdfT04oR1JBUEhJQ1NfVkVSKGk5MTUpIDwgMTApOwo+PiA+ID4gPiA+Cj4+ID4gPiA+ ID4gIAkvKgo+PiA+ID4gPiA+ICAJICogV2FQcm9ncmFtTWdzckZvckwzQmFua1NwZWNpZmljTW1p b1JlYWRzOiBjbmwsaWNsCj4+ID4gPiA+ID4gQEAgLTk4MCw3ICs5ODAsNyBAQCB3YV9pbml0X21j cihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgc3RydWN0IGk5MTVfd2FfbGlzdCAqd2Fs KQo+PiA+ID4gPiA+ICAJICogb2YgZXZlcnkgTU1JTyByZWFkLgo+PiA+ID4gPiA+ICAJICovCj4+ ID4gPiA+ID4KPj4gPiA+ID4gPiAtCWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gMTAgJiYgaXNfcG93 ZXJfb2ZfMihzc2V1LT5zbGljZV9tYXNrKSkgewo+PiA+ID4gPiA+ICsJaWYgKEdSQVBISUNTX1ZF UihpOTE1KSA+PSAxMCAmJiBpc19wb3dlcl9vZl8yKHNzZXUtPnNsaWNlX21hc2spKSB7Cj4+ID4g PiA+ID4gIAkJdTMyIGwzX2Z1c2UgPQo+PiA+ID4gPiA+ICAJCQlpbnRlbF91bmNvcmVfcmVhZCgm aTkxNS0+dW5jb3JlLCBHRU4xMF9NSVJST1JfRlVTRTMpICYKPj4gPiA+ID4gPiAgCQkJR0VOMTBf TDNCQU5LX01BU0s7Cj4+ID4gPiA+ID4gQEAgLTEwMDIsNyArMTAwMiw3IEBAIHdhX2luaXRfbWNy KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCBzdHJ1Y3QgaTkxNV93YV9saXN0ICp3YWwp Cj4+ID4gPiA+ID4gIAl9Cj4+ID4gPiA+ID4gIAlzdWJzbGljZS0tOwo+PiA+ID4gPiA+Cj4+ID4g PiA+ID4gLQlpZiAoSU5URUxfR0VOKGk5MTUpID49IDExKSB7Cj4+ID4gPiA+ID4gKwlpZiAoR1JB UEhJQ1NfVkVSKGk5MTUpID49IDExKSB7Cj4+ID4gPiA+ID4gIAkJbWNyID0gR0VOMTFfTUNSX1NM SUNFKHNsaWNlKSB8IEdFTjExX01DUl9TVUJTTElDRShzdWJzbGljZSk7Cj4+ID4gPiA+ID4gIAkJ bWNyX21hc2sgPSBHRU4xMV9NQ1JfU0xJQ0VfTUFTSyB8IEdFTjExX01DUl9TVUJTTElDRV9NQVNL Owo+PiA+ID4gPiA+ICAJfSBlbHNlIHsKPj4gPiA+ID4gPiBAQCAtMTE3MSw5ICsxMTcxLDkgQEAg Z3RfaW5pdF93b3JrYXJvdW5kcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgc3RydWN0 IGk5MTVfd2FfbGlzdCAqd2FsKQo+PiA+ID4gPiA+ICAJCWRnMV9ndF93b3JrYXJvdW5kc19pbml0 KGk5MTUsIHdhbCk7Cj4+ID4gPiA+ID4gIAllbHNlIGlmIChJU19USUdFUkxBS0UoaTkxNSkpCj4+ ID4gPiA+ID4gIAkJdGdsX2d0X3dvcmthcm91bmRzX2luaXQoaTkxNSwgd2FsKTsKPj4gPiA+ID4g PiAtCWVsc2UgaWYgKElTX0dFTihpOTE1LCAxMikpCj4+ID4gPiA+ID4gKwllbHNlIGlmIChHUkFQ SElDU19WRVIoaTkxNSkgPT0gMTIpCj4+ID4gPiA+ID4gIAkJZ2VuMTJfZ3Rfd29ya2Fyb3VuZHNf aW5pdChpOTE1LCB3YWwpOwo+PiA+ID4gPiA+IC0JZWxzZSBpZiAoSVNfR0VOKGk5MTUsIDExKSkK Pj4gPiA+ID4gPiArCWVsc2UgaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA9PSAxMSkKPj4gPiA+ID4g PiAgCQlpY2xfZ3Rfd29ya2Fyb3VuZHNfaW5pdChpOTE1LCB3YWwpOwo+PiA+ID4gPiA+ICAJZWxz ZSBpZiAoSVNfQ0FOTk9OTEFLRShpOTE1KSkKPj4gPiA+ID4gPiAgCQljbmxfZ3Rfd29ya2Fyb3Vu ZHNfaW5pdChpOTE1LCB3YWwpOwo+PiA+ID4gPiA+IEBAIC0xMTkzLDE4ICsxMTkzLDE4IEBAIGd0 X2luaXRfd29ya2Fyb3VuZHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHN0cnVjdCBp OTE1X3dhX2xpc3QgKndhbCkKPj4gPiA+ID4gPiAgCQl2bHZfZ3Rfd29ya2Fyb3VuZHNfaW5pdChp OTE1LCB3YWwpOwo+PiA+ID4gPiA+ICAJZWxzZSBpZiAoSVNfSVZZQlJJREdFKGk5MTUpKQo+PiA+ ID4gPiA+ICAJCWl2Yl9ndF93b3JrYXJvdW5kc19pbml0KGk5MTUsIHdhbCk7Cj4+ID4gPiA+ID4g LQllbHNlIGlmIChJU19HRU4oaTkxNSwgNikpCj4+ID4gPiA+ID4gKwllbHNlIGlmIChHUkFQSElD U19WRVIoaTkxNSkgPT0gNikKPj4gPiA+ID4gPiAgCQlzbmJfZ3Rfd29ya2Fyb3VuZHNfaW5pdChp OTE1LCB3YWwpOwo+PiA+ID4gPiA+IC0JZWxzZSBpZiAoSVNfR0VOKGk5MTUsIDUpKQo+PiA+ID4g PiA+ICsJZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID09IDUpCj4+ID4gPiA+ID4gIAkJaWxr X2d0X3dvcmthcm91bmRzX2luaXQoaTkxNSwgd2FsKTsKPj4gPiA+ID4gPiAgCWVsc2UgaWYgKElT X0c0WChpOTE1KSkKPj4gPiA+ID4gPiAgCQlnNHhfZ3Rfd29ya2Fyb3VuZHNfaW5pdChpOTE1LCB3 YWwpOwo+PiA+ID4gPiA+IC0JZWxzZSBpZiAoSVNfR0VOKGk5MTUsIDQpKQo+PiA+ID4gPiA+ICsJ ZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID09IDQpCj4+ID4gPiA+ID4gIAkJZ2VuNF9ndF93 b3JrYXJvdW5kc19pbml0KGk5MTUsIHdhbCk7Cj4+ID4gPiA+ID4gLQllbHNlIGlmIChJTlRFTF9H RU4oaTkxNSkgPD0gOCkKPj4gPiA+ID4gPiArCWVsc2UgaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA8 PSA4KQo+PiA+ID4gPiA+ICAJCTsKPj4gPiA+ID4gPiAgCWVsc2UKPj4gPiA+ID4gPiAtCQlNSVNT SU5HX0NBU0UoSU5URUxfR0VOKGk5MTUpKTsKPj4gPiA+ID4gPiArCQlNSVNTSU5HX0NBU0UoR1JB UEhJQ1NfVkVSKGk5MTUpKTsKPj4gPiA+ID4gPiAgfQo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gIHZv aWQgaW50ZWxfZ3RfaW5pdF93b3JrYXJvdW5kcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSkKPj4gPiA+ID4gPiBAQCAtMTU1OCw5ICsxNTU4LDkgQEAgdm9pZCBpbnRlbF9lbmdpbmVfaW5p dF93aGl0ZWxpc3Qoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+PiA+ID4gPiA+Cj4+ ID4gPiA+ID4gIAlpZiAoSVNfREcxKGk5MTUpKQo+PiA+ID4gPiA+ICAJCWRnMV93aGl0ZWxpc3Rf YnVpbGQoZW5naW5lKTsKPj4gPiA+ID4gPiAtCWVsc2UgaWYgKElTX0dFTihpOTE1LCAxMikpCj4+ ID4gPiA+ID4gKwllbHNlIGlmIChHUkFQSElDU19WRVIoaTkxNSkgPT0gMTIpCj4+ID4gPiA+ID4g IAkJdGdsX3doaXRlbGlzdF9idWlsZChlbmdpbmUpOwo+PiA+ID4gPiA+IC0JZWxzZSBpZiAoSVNf R0VOKGk5MTUsIDExKSkKPj4gPiA+ID4gPiArCWVsc2UgaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA9 PSAxMSkKPj4gPiA+ID4gPiAgCQlpY2xfd2hpdGVsaXN0X2J1aWxkKGVuZ2luZSk7Cj4+ID4gPiA+ ID4gIAllbHNlIGlmIChJU19DQU5OT05MQUtFKGk5MTUpKQo+PiA+ID4gPiA+ICAJCWNubF93aGl0 ZWxpc3RfYnVpbGQoZW5naW5lKTsKPj4gPiA+ID4gPiBAQCAtMTU3NiwxMCArMTU3NiwxMCBAQCB2 b2lkIGludGVsX2VuZ2luZV9pbml0X3doaXRlbGlzdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpCj4+ID4gPiA+ID4gIAkJYnh0X3doaXRlbGlzdF9idWlsZChlbmdpbmUpOwo+PiA+ID4g PiA+ICAJZWxzZSBpZiAoSVNfU0tZTEFLRShpOTE1KSkKPj4gPiA+ID4gPiAgCQlza2xfd2hpdGVs aXN0X2J1aWxkKGVuZ2luZSk7Cj4+ID4gPiA+ID4gLQllbHNlIGlmIChJTlRFTF9HRU4oaTkxNSkg PD0gOCkKPj4gPiA+ID4gPiArCWVsc2UgaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA8PSA4KQo+PiA+ ID4gPiA+ICAJCTsKPj4gPiA+ID4gPiAgCWVsc2UKPj4gPiA+ID4gPiAtCQlNSVNTSU5HX0NBU0Uo SU5URUxfR0VOKGk5MTUpKTsKPj4gPiA+ID4gPiArCQlNSVNTSU5HX0NBU0UoR1JBUEhJQ1NfVkVS KGk5MTUpKTsKPj4gPiA+ID4gPgo+PiA+ID4gPiA+ICAJd2FfaW5pdF9maW5pc2godyk7Cj4+ID4g PiA+ID4gIH0KPj4gPiA+ID4gPiBAQCAtMTY5NSw3ICsxNjk1LDcgQEAgcmNzX2VuZ2luZV93YV9p bml0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgc3RydWN0IGk5MTVfd2FfbGlzdCAq d2FsKQo+PiA+ID4gPiA+ICAJCQkgICAgIEVOQUJMRV9TTUFMTFBMKTsKPj4gPiA+ID4gPiAgCX0K Pj4gPiA+ID4gPgo+PiA+ID4gPiA+IC0JaWYgKElTX0dFTihpOTE1LCAxMSkpIHsKPj4gPiA+ID4g PiArCWlmIChHUkFQSElDU19WRVIoaTkxNSkgPT0gMTEpIHsKPj4gPiA+ID4gPiAgCQkvKiBUaGlz IGlzIG5vdCBhbiBXYS4gRW5hYmxlIGZvciBiZXR0ZXIgaW1hZ2UgcXVhbGl0eSAqLwo+PiA+ID4g PiA+ICAJCXdhX21hc2tlZF9lbih3YWwsCj4+ID4gPiA+ID4gIAkJCSAgICAgXzNEX0NISUNLRU4z LAo+PiA+ID4gPiA+IEBAIC0xNzkzLDcgKzE3OTMsNyBAQCByY3NfZW5naW5lX3dhX2luaXQoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBzdHJ1Y3QgaTkxNV93YV9saXN0ICp3YWwpCj4+ ID4gPiA+ID4gIAkJCSAgICAgRkZfRE9QX0NMT0NLX0dBVEVfRElTQUJMRSk7Cj4+ID4gPiA+ID4g IAl9Cj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAtCWlmIChJU19HRU5fUkFOR0UoaTkxNSwgOSwgMTIp KSB7Cj4+ID4gPiA+ID4gKwlpZiAoSVNfR1JBUEhJQ1NfVkVSKGk5MTUsIDksIDEyKSkgewo+PiA+ ID4gPiA+ICAJCS8qIEZ0clBlckN0eHRQcmVlbXB0aW9uR3JhbnVsYXJpdHlDb250cm9sOnNrbCxi eHQsa2JsLGNmbCxjbmwsaWNsLHRnbCAqLwo+PiA+ID4gPiA+ICAJCXdhX21hc2tlZF9lbih3YWws Cj4+ID4gPiA+ID4gIAkJCSAgICAgR0VON19GRl9TTElDRV9DU19DSElDS0VOMSwKPj4gPiA+ID4g PiBAQCAtMTgxNyw3ICsxODE3LDcgQEAgcmNzX2VuZ2luZV93YV9pbml0KHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSwgc3RydWN0IGk5MTVfd2FfbGlzdCAqd2FsKQo+PiA+ID4gPiA+ICAJ CQkgICAgIEdFTjlfUE9PTEVEX0VVX0xPQURfQkFMQU5DSU5HX0ZJWF9ESVNBQkxFKTsKPj4gPiA+ ID4gPiAgCX0KPj4gPiA+ID4gPgo+PiA+ID4gPiA+IC0JaWYgKElTX0dFTihpOTE1LCA5KSkgewo+ PiA+ID4gPiA+ICsJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA9PSA5KSB7Cj4+ID4gPiA+ID4gIAkJ LyogV2FDb250ZXh0U3dpdGNoV2l0aENvbmN1cnJlbnRUTEJJbnZhbGlkYXRlOnNrbCxieHQsa2Js LGdsayxjZmwgKi8KPj4gPiA+ID4gPiAgCQl3YV9tYXNrZWRfZW4od2FsLAo+PiA+ID4gPiA+ICAJ CQkgICAgIEdFTjlfQ1NGRV9DSElDS0VOMV9SQ1MsCj4+ID4gPiA+ID4gQEAgLTE5MjEsNyArMTky MSw3IEBAIHJjc19lbmdpbmVfd2FfaW5pdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUs IHN0cnVjdCBpOTE1X3dhX2xpc3QgKndhbCkKPj4gPiA+ID4gPiAgCQkJCSAgICAgR0VON19QU0Rf U0lOR0xFX1BPUlRfRElTUEFUQ0hfRU5BQkxFKTsKPj4gPiA+ID4gPiAgCX0KPj4gPiA+ID4gPgo+ PiA+ID4gPiA+IC0JaWYgKElTX0dFTihpOTE1LCA3KSkgewo+PiA+ID4gPiA+ICsJaWYgKEdSQVBI SUNTX1ZFUihpOTE1KSA9PSA3KSB7Cj4+ID4gPiA+ID4gIAkJLyogV2FCQ1NWQ1NUbGJJbnZhbGlk YXRpb25Nb2RlOml2Yix2bHYsaHN3ICovCj4+ID4gPiA+ID4gIAkJd2FfbWFza2VkX2VuKHdhbCwK Pj4gPiA+ID4gPiAgCQkJICAgICBHRlhfTU9ERV9HRU43LAo+PiA+ID4gPiA+IEBAIC0xOTUzLDcg KzE5NTMsNyBAQCByY3NfZW5naW5lX3dhX2luaXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lLCBzdHJ1Y3QgaTkxNV93YV9saXN0ICp3YWwpCj4+ID4gPiA+ID4gIAkJICAgICAgIEdFTjZf V0laX0hBU0hJTkdfMTZ4NCk7Cj4+ID4gPiA+ID4gIAl9Cj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAt CWlmIChJU19HRU5fUkFOR0UoaTkxNSwgNiwgNykpCj4+ID4gPiA+ID4gKwlpZiAoSVNfR1JBUEhJ Q1NfVkVSKGk5MTUsIDYsIDcpKQo+PiA+ID4gPiA+ICAJCS8qCj4+ID4gPiA+ID4gIAkJICogV2Ug bmVlZCB0byBkaXNhYmxlIHRoZSBBc3luY0ZsaXAgcGVyZm9ybWFuY2Ugb3B0aW1pc2F0aW9ucyBp bgo+PiA+ID4gPiA+ICAJCSAqIG9yZGVyIHRvIHVzZSBNSV9XQUlUX0ZPUl9FVkVOVCB3aXRoaW4g dGhlIENTLiBJdCBzaG91bGQKPj4gPiA+ID4gPiBAQCAtMTk2NSw3ICsxOTY1LDcgQEAgcmNzX2Vu Z2luZV93YV9pbml0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgc3RydWN0IGk5MTVf d2FfbGlzdCAqd2FsKQo+PiA+ID4gPiA+ICAJCQkgICAgIE1JX01PREUsCj4+ID4gPiA+ID4gIAkJ CSAgICAgQVNZTkNfRkxJUF9QRVJGX0RJU0FCTEUpOwo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gLQlp ZiAoSVNfR0VOKGk5MTUsIDYpKSB7Cj4+ID4gPiA+ID4gKwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUp ID09IDYpIHsKPj4gPiA+ID4gPiAgCQkvKgo+PiA+ID4gPiA+ICAJCSAqIFJlcXVpcmVkIGZvciB0 aGUgaGFyZHdhcmUgdG8gcHJvZ3JhbSBzY2FubGluZSB2YWx1ZXMgZm9yCj4+ID4gPiA+ID4gIAkJ ICogd2FpdGluZwo+PiA+ID4gPiA+IEBAIC0yMDE5LDE0ICsyMDE5LDE0IEBAIHJjc19lbmdpbmVf d2FfaW5pdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHN0cnVjdCBpOTE1X3dhX2xp c3QgKndhbCkKPj4gPiA+ID4gPiAgCQkJICAgICAgQ00wX1NUQ19FVklDVF9ESVNBQkxFX0xSQV9T TkIpOwo+PiA+ID4gPiA+ICAJfQo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gLQlpZiAoSVNfR0VOX1JB TkdFKGk5MTUsIDQsIDYpKQo+PiA+ID4gPiA+ICsJaWYgKElTX0dSQVBISUNTX1ZFUihpOTE1LCA0 LCA2KSkKPj4gPiA+ID4gPiAgCQkvKiBXYVRpbWVkU2luZ2xlVmVydGV4RGlzcGF0Y2g6Y2wsYncs Y3RnLGVsayxpbGssc25iICovCj4+ID4gPiA+ID4gIAkJd2FfYWRkKHdhbCwgTUlfTU9ERSwKPj4g PiA+ID4gPiAgCQkgICAgICAgMCwgX01BU0tFRF9CSVRfRU5BQkxFKFZTX1RJTUVSX0RJU1BBVENI KSwKPj4gPiA+ID4gPiAgCQkgICAgICAgLyogWFhYIGJpdCBkb2Vzbid0IHN0aWNrIG9uIEJyb2Fk d2F0ZXIgKi8KPj4gPiA+ID4gPiAgCQkgICAgICAgSVNfSTk2NUcoaTkxNSkgPyAwIDogVlNfVElN RVJfRElTUEFUQ0gpOwo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gLQlpZiAoSVNfR0VOKGk5MTUsIDQp KQo+PiA+ID4gPiA+ICsJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA9PSA0KQo+PiA+ID4gPiA+ICAJ CS8qCj4+ID4gPiA+ID4gIAkJICogRGlzYWJsZSBDT05TVEFOVF9CVUZGRVIgYmVmb3JlIGl0IGlz IGxvYWRlZCBmcm9tIHRoZSBjb250ZXh0Cj4+ID4gPiA+ID4gIAkJICogaW1hZ2UuIEZvciBhcyBp dCBpcyBsb2FkZWQsIGl0IGlzIGV4ZWN1dGVkIGFuZCB0aGUgc3RvcmVkCj4+ID4gPiA+ID4gQEAg LTIwNTgsNyArMjA1OCw3IEBAIHhjc19lbmdpbmVfd2FfaW5pdChzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUsIHN0cnVjdCBpOTE1X3dhX2xpc3QgKndhbCkKPj4gPiA+ID4gPiAgc3RhdGlj IHZvaWQKPj4gPiA+ID4gPiAgZW5naW5lX2luaXRfd29ya2Fyb3VuZHMoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lLCBzdHJ1Y3QgaTkxNV93YV9saXN0ICp3YWwpCj4+ID4gPiA+ID4gIHsK Pj4gPiA+ID4gPiAtCWlmIChJOTE1X1NFTEZURVNUX09OTFkoSU5URUxfR0VOKGVuZ2luZS0+aTkx NSkgPCA0KSkKPj4gPiA+ID4gPiArCWlmIChJOTE1X1NFTEZURVNUX09OTFkoR1JBUEhJQ1NfVkVS KGVuZ2luZS0+aTkxNSkgPCA0KSkKPj4gPiA+ID4gPiAgCQlyZXR1cm47Cj4+ID4gPiA+ID4KPj4g PiA+ID4gPiAgCWlmIChlbmdpbmUtPmNsYXNzID09IFJFTkRFUl9DTEFTUykKPj4gPiA+ID4gPiBA QCAtMjA3MSw3ICsyMDcxLDcgQEAgdm9pZCBpbnRlbF9lbmdpbmVfaW5pdF93b3JrYXJvdW5kcyhz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4+ID4gPiA+ID4gIHsKPj4gPiA+ID4gPiAg CXN0cnVjdCBpOTE1X3dhX2xpc3QgKndhbCA9ICZlbmdpbmUtPndhX2xpc3Q7Cj4+ID4gPiA+ID4K Pj4gPiA+ID4gPiAtCWlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA8IDQpCj4+ID4gPiA+ID4g KwlpZiAoR1JBUEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkgPCA0KQo+PiA+ID4gPiA+ICAJCXJldHVy bjsKPj4gPiA+ID4gPgo+PiA+ID4gPiA+ICAJd2FfaW5pdF9zdGFydCh3YWwsICJlbmdpbmUiLCBl bmdpbmUtPm5hbWUpOwo+PiA+ID4gPiA+IEBAIC0yMTEyLDkgKzIxMTIsOSBAQCBzdGF0aWMgYm9v bCBtY3JfcmFuZ2Uoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHUzMiBvZmZzZXQpCj4+ ID4gPiA+ID4gIAljb25zdCBzdHJ1Y3QgbWNyX3JhbmdlICptY3JfcmFuZ2VzOwo+PiA+ID4gPiA+ ICAJaW50IGk7Cj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAtCWlmIChJTlRFTF9HRU4oaTkxNSkgPj0g MTIpCj4+ID4gPiA+ID4gKwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDEyKQo+PiA+ID4gPiA+ ICAJCW1jcl9yYW5nZXMgPSBtY3JfcmFuZ2VzX2dlbjEyOwo+PiA+ID4gPiA+IC0JZWxzZSBpZiAo SU5URUxfR0VOKGk5MTUpID49IDgpCj4+ID4gPiA+ID4gKwllbHNlIGlmIChHUkFQSElDU19WRVIo aTkxNSkgPj0gOCkKPj4gPiA+ID4gPiAgCQltY3JfcmFuZ2VzID0gbWNyX3Jhbmdlc19nZW44Owo+ PiA+ID4gPiA+ICAJZWxzZQo+PiA+ID4gPiA+ICAJCXJldHVybiBmYWxzZTsKPj4gPiA+ID4gPiBA QCAtMjE0Myw3ICsyMTQzLDcgQEAgd2FfbGlzdF9zcm0oc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEs Cj4+ID4gPiA+ID4gIAl1MzIgc3JtLCAqY3M7Cj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAgCXNybSA9 IE1JX1NUT1JFX1JFR0lTVEVSX01FTSB8IE1JX1NSTV9MUk1fR0xPQkFMX0dUVDsKPj4gPiA+ID4g PiAtCWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gOCkKPj4gPiA+ID4gPiArCWlmIChHUkFQSElDU19W RVIoaTkxNSkgPj0gOCkKPj4gPiA+ID4gPiAgCQlzcm0rKzsKPj4gPiA+ID4gPgo+PiA+ID4gPiA+ ICAJZm9yIChpID0gMCwgd2EgPSB3YWwtPmxpc3Q7IGkgPCB3YWwtPmNvdW50OyBpKyssIHdhKysp IHsKPj4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRl c3RfZW5naW5lX2NzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9lbmdpbmVf Y3MuYwo+PiA+ID4gPiA+IGluZGV4IDM0NTNlYjc3YzQ5OC4uNjRhYmY1ZmVhYmZhIDEwMDY0NAo+ PiA+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2VuZ2luZV9j cy5jCj4+ID4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZW5n aW5lX2NzLmMKPj4gPiA+ID4gPiBAQCAtNTIsNyArNTIsNyBAQCBzdGF0aWMgaW50IHdyaXRlX3Rp bWVzdGFtcChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgaW50IHNsb3QpCj4+ID4gPiA+ID4gIAkJ cmV0dXJuIFBUUl9FUlIoY3MpOwo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gIAljbWQgPSBNSV9TVE9S RV9SRUdJU1RFUl9NRU0gfCBNSV9VU0VfR0dUVDsKPj4gPiA+ID4gPiAtCWlmIChJTlRFTF9HRU4o cnEtPmVuZ2luZS0+aTkxNSkgPj0gOCkKPj4gPiA+ID4gPiArCWlmIChHUkFQSElDU19WRVIocnEt PmVuZ2luZS0+aTkxNSkgPj0gOCkKPj4gPiA+ID4gPiAgCQljbWQrKzsKPj4gPiA+ID4gPiAgCSpj cysrID0gY21kOwo+PiA+ID4gPiA+ICAJKmNzKysgPSBpOTE1X21taW9fcmVnX29mZnNldChSSU5H X1RJTUVTVEFNUChycS0+ZW5naW5lLT5tbWlvX2Jhc2UpKTsKPj4gPiA+ID4gPiBAQCAtMTI1LDcg KzEyNSw3IEBAIHN0YXRpYyBpbnQgcGVyZl9taV9iYl9zdGFydCh2b2lkICphcmcpCj4+ID4gPiA+ ID4gIAllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKPj4gPiA+ID4gPiAgCWludCBlcnIgPSAwOwo+ PiA+ID4gPiA+Cj4+ID4gPiA+ID4gLQlpZiAoSU5URUxfR0VOKGd0LT5pOTE1KSA8IDcpIC8qIGZv ciBwZXItZW5naW5lIENTX1RJTUVTVEFNUCAqLwo+PiA+ID4gPiA+ICsJaWYgKEdSQVBISUNTX1ZF UihndC0+aTkxNSkgPCA3KSAvKiBmb3IgcGVyLWVuZ2luZSBDU19USU1FU1RBTVAgKi8KPj4gPiA+ ID4gPiAgCQlyZXR1cm4gMDsKPj4gPiA+ID4gPgo+PiA+ID4gPiA+ICAJcGVyZl9iZWdpbihndCk7 Cj4+ID4gPiA+ID4gQEAgLTI0OSw3ICsyNDksNyBAQCBzdGF0aWMgaW50IHBlcmZfbWlfbm9vcCh2 b2lkICphcmcpCj4+ID4gPiA+ID4gIAllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKPj4gPiA+ID4g PiAgCWludCBlcnIgPSAwOwo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gLQlpZiAoSU5URUxfR0VOKGd0 LT5pOTE1KSA8IDcpIC8qIGZvciBwZXItZW5naW5lIENTX1RJTUVTVEFNUCAqLwo+PiA+ID4gPiA+ ICsJaWYgKEdSQVBISUNTX1ZFUihndC0+aTkxNSkgPCA3KSAvKiBmb3IgcGVyLWVuZ2luZSBDU19U SU1FU1RBTVAgKi8KPj4gPiA+ID4gPiAgCQlyZXR1cm4gMDsKPj4gPiA+ID4gPgo+PiA+ID4gPiA+ ICAJcGVyZl9iZWdpbihndCk7Cj4+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L3NlbGZ0ZXN0X2VuZ2luZV9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv c2VsZnRlc3RfZW5naW5lX3BtLmMKPj4gPiA+ID4gPiBpbmRleCAyYzg5ODYyMmJkZmIuLjcyY2Nh M2YwZGEyMSAxMDA2NDQKPj4gPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9z ZWxmdGVzdF9lbmdpbmVfcG0uYwo+PiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L3NlbGZ0ZXN0X2VuZ2luZV9wbS5jCj4+ID4gPiA+ID4gQEAgLTE5OCw3ICsxOTgsNyBAQCBz dGF0aWMgaW50IGxpdmVfZW5naW5lX3RpbWVzdGFtcHModm9pZCAqYXJnKQo+PiA+ID4gPiA+ICAJ ICogdGhlIHNhbWUgQ1MgY2xvY2suCj4+ID4gPiA+ID4gIAkgKi8KPj4gPiA+ID4gPgo+PiA+ID4g PiA+IC0JaWYgKElOVEVMX0dFTihndC0+aTkxNSkgPCA4KQo+PiA+ID4gPiA+ICsJaWYgKEdSQVBI SUNTX1ZFUihndC0+aTkxNSkgPCA4KQo+PiA+ID4gPiA+ICAJCXJldHVybiAwOwo+PiA+ID4gPiA+ Cj4+ID4gPiA+ID4gIAlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBndCwgaWQpIHsKPj4gPiA+ID4g PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZXhlY2xpc3Rz LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9leGVjbGlzdHMuYwo+PiA+ID4g PiA+IGluZGV4IDFmOTM1OTFhOGM2OS4uZWEyMjAzYWYwNzY0IDEwMDY0NAo+PiA+ID4gPiA+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2V4ZWNsaXN0cy5jCj4+ID4gPiA+ ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZXhlY2xpc3RzLmMKPj4g PiA+ID4gPiBAQCAtMzI2OSw3ICszMjY5LDcgQEAgc3RhdGljIGludCBsaXZlX3ByZWVtcHRfdXNl cih2b2lkICphcmcpCj4+ID4gPiA+ID4gIAkJaWYgKCFpbnRlbF9lbmdpbmVfaGFzX3ByZWVtcHRp b24oZW5naW5lKSkKPj4gPiA+ID4gPiAgCQkJY29udGludWU7Cj4+ID4gPiA+ID4KPj4gPiA+ID4g PiAtCQlpZiAoSVNfR0VOKGd0LT5pOTE1LCA4KSAmJiBlbmdpbmUtPmNsYXNzICE9IFJFTkRFUl9D TEFTUykKPj4gPiA+ID4gPiArCQlpZiAoR1JBUEhJQ1NfVkVSKGd0LT5pOTE1KSA9PSA4ICYmIGVu Z2luZS0+Y2xhc3MgIT0gUkVOREVSX0NMQVNTKQo+PiA+ID4gPiA+ICAJCQljb250aW51ZTsgLyog d2UgbmVlZCBwZXItY29udGV4dCBHUFIgKi8KPj4gPiA+ID4gPgo+PiA+ID4gPiA+ICAJCWlmIChp Z3RfbGl2ZV90ZXN0X2JlZ2luKCZ0LCBndC0+aTkxNSwgX19mdW5jX18sIGVuZ2luZS0+bmFtZSkp IHsKPj4gPiA+ID4gPiBAQCAtNDI5Myw3ICs0MjkzLDcgQEAgc3RhdGljIGludCBsaXZlX3ZpcnR1 YWxfcHJlc2VydmVkKHZvaWQgKmFyZykKPj4gPiA+ID4gPiAgCQlyZXR1cm4gMDsKPj4gPiA+ID4g Pgo+PiA+ID4gPiA+ICAJLyogQXMgd2UgdXNlIENTX0dQUiB3ZSBjYW5ub3QgcnVuIGJlZm9yZSB0 aGV5IGV4aXN0ZWQgb24gYWxsIGVuZ2luZXMuICovCj4+ID4gPiA+ID4gLQlpZiAoSU5URUxfR0VO KGd0LT5pOTE1KSA8IDkpCj4+ID4gPiA+ID4gKwlpZiAoR1JBUEhJQ1NfVkVSKGd0LT5pOTE1KSA8 IDkpCj4+ID4gPiA+ID4gIAkJcmV0dXJuIDA7Cj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAgCWZvciAo Y2xhc3MgPSAwOyBjbGFzcyA8PSBNQVhfRU5HSU5FX0NMQVNTOyBjbGFzcysrKSB7Cj4+ID4gPiA+ ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2d0X3BtLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9ndF9wbS5jCj4+ID4gPiA+ID4gaW5k ZXggYzA4NDViZjcyZGQzLi5iOTQ0MTIxN2NhM2QgMTAwNjQ0Cj4+ID4gPiA+ID4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZ3RfcG0uYwo+PiA+ID4gPiA+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2d0X3BtLmMKPj4gPiA+ID4gPiBAQCAtNzQs MTAgKzc0LDEwIEBAIHN0YXRpYyBpbnQgbGl2ZV9ndF9jbG9ja3Modm9pZCAqYXJnKQo+PiA+ID4g PiA+ICAJCXJldHVybiAwOwo+PiA+ID4gPiA+ICAJfQo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gLQlp ZiAoSU5URUxfR0VOKGd0LT5pOTE1KSA8IDQpIC8qIEFueSBDU19USU1FU1RBTVA/ICovCj4+ID4g PiA+ID4gKwlpZiAoR1JBUEhJQ1NfVkVSKGd0LT5pOTE1KSA8IDQpIC8qIEFueSBDU19USU1FU1RB TVA/ICovCj4+ID4gPiA+ID4gIAkJcmV0dXJuIDA7Cj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAtCWlm IChJU19HRU4oZ3QtPmk5MTUsIDUpKQo+PiA+ID4gPiA+ICsJaWYgKEdSQVBISUNTX1ZFUihndC0+ aTkxNSkgPT0gNSkKPj4gPiA+ID4gPiAgCQkvKgo+PiA+ID4gPiA+ICAJCSAqIFhYWCBDU19USU1F U1RBTVAgbG93IGR3b3JkIGlzIGR5c2Z1bmN0aW9uYWw/Cj4+ID4gPiA+ID4gIAkJICoKPj4gPiA+ ID4gPiBAQCAtODYsNyArODYsNyBAQCBzdGF0aWMgaW50IGxpdmVfZ3RfY2xvY2tzKHZvaWQgKmFy ZykKPj4gPiA+ID4gPiAgCQkgKi8KPj4gPiA+ID4gPiAgCQlyZXR1cm4gMDsKPj4gPiA+ID4gPgo+ PiA+ID4gPiA+IC0JaWYgKElTX0dFTihndC0+aTkxNSwgNCkpCj4+ID4gPiA+ID4gKwlpZiAoR1JB UEhJQ1NfVkVSKGd0LT5pOTE1KSA9PSA0KQo+PiA+ID4gPiA+ICAJCS8qCj4+ID4gPiA+ID4gIAkJ ICogWFhYIENTX1RJTUVTVEFNUCBhcHBlYXJzIGdpYmJlcmlzaAo+PiA+ID4gPiA+ICAJCSAqCj4+ ID4gPiA+ID4gQEAgLTEwNSw3ICsxMDUsNyBAQCBzdGF0aWMgaW50IGxpdmVfZ3RfY2xvY2tzKHZv aWQgKmFyZykKPj4gPiA+ID4gPiAgCQl1NjQgdGltZTsKPj4gPiA+ID4gPiAgCQl1NjQgZHQ7Cj4+ ID4gPiA+ID4KPj4gPiA+ID4gPiAtCQlpZiAoSU5URUxfR0VOKGVuZ2luZS0+aTkxNSkgPCA3ICYm IGVuZ2luZS0+aWQgIT0gUkNTMCkKPj4gPiA+ID4gPiArCQlpZiAoR1JBUEhJQ1NfVkVSKGVuZ2lu ZS0+aTkxNSkgPCA3ICYmIGVuZ2luZS0+aWQgIT0gUkNTMCkKPj4gPiA+ID4gPiAgCQkJY29udGlu dWU7Cj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAgCQltZWFzdXJlX2Nsb2NrcyhlbmdpbmUsICZjeWNs ZXMsICZkdCk7Cj4+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L3NlbGZ0ZXN0X2hhbmdjaGVjay5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3Rf aGFuZ2NoZWNrLmMKPj4gPiA+ID4gPiBpbmRleCA1YjYzZDRkZjhjOTMuLjg1MzI0NmZhZDA1ZiAx MDA2NDQKPj4gPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9o YW5nY2hlY2suYwo+PiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0 ZXN0X2hhbmdjaGVjay5jCj4+ID4gPiA+ID4gQEAgLTE4MCw3ICsxODAsNyBAQCBoYW5nX2NyZWF0 ZV9yZXF1ZXN0KHN0cnVjdCBoYW5nICpoLCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUp Cj4+ID4gPiA+ID4gIAkJZ290byBjYW5jZWxfcnE7Cj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAgCWJh dGNoID0gaC0+YmF0Y2g7Cj4+ID4gPiA+ID4gLQlpZiAoSU5URUxfR0VOKGd0LT5pOTE1KSA+PSA4 KSB7Cj4+ID4gPiA+ID4gKwlpZiAoR1JBUEhJQ1NfVkVSKGd0LT5pOTE1KSA+PSA4KSB7Cj4+ID4g PiA+ID4gIAkJKmJhdGNoKysgPSBNSV9TVE9SRV9EV09SRF9JTU1fR0VONDsKPj4gPiA+ID4gPiAg CQkqYmF0Y2grKyA9IGxvd2VyXzMyX2JpdHMoaHdzX2FkZHJlc3MoaHdzLCBycSkpOwo+PiA+ID4g PiA+ICAJCSpiYXRjaCsrID0gdXBwZXJfMzJfYml0cyhod3NfYWRkcmVzcyhod3MsIHJxKSk7Cj4+ ID4gPiA+ID4gQEAgLTE5NCw3ICsxOTQsNyBAQCBoYW5nX2NyZWF0ZV9yZXF1ZXN0KHN0cnVjdCBo YW5nICpoLCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4+ID4gPiA+ID4gIAkJKmJh dGNoKysgPSBNSV9CQVRDSF9CVUZGRVJfU1RBUlQgfCAxIDw8IDggfCAxOwo+PiA+ID4gPiA+ICAJ CSpiYXRjaCsrID0gbG93ZXJfMzJfYml0cyh2bWEtPm5vZGUuc3RhcnQpOwo+PiA+ID4gPiA+ICAJ CSpiYXRjaCsrID0gdXBwZXJfMzJfYml0cyh2bWEtPm5vZGUuc3RhcnQpOwo+PiA+ID4gPiA+IC0J fSBlbHNlIGlmIChJTlRFTF9HRU4oZ3QtPmk5MTUpID49IDYpIHsKPj4gPiA+ID4gPiArCX0gZWxz ZSBpZiAoR1JBUEhJQ1NfVkVSKGd0LT5pOTE1KSA+PSA2KSB7Cj4+ID4gPiA+ID4gIAkJKmJhdGNo KysgPSBNSV9TVE9SRV9EV09SRF9JTU1fR0VONDsKPj4gPiA+ID4gPiAgCQkqYmF0Y2grKyA9IDA7 Cj4+ID4gPiA+ID4gIAkJKmJhdGNoKysgPSBsb3dlcl8zMl9iaXRzKGh3c19hZGRyZXNzKGh3cywg cnEpKTsKPj4gPiA+ID4gPiBAQCAtMjA3LDcgKzIwNyw3IEBAIGhhbmdfY3JlYXRlX3JlcXVlc3Qo c3RydWN0IGhhbmcgKmgsIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPj4gPiA+ID4g PiAgCQkqYmF0Y2grKyA9IE1JX05PT1A7Cj4+ID4gPiA+ID4gIAkJKmJhdGNoKysgPSBNSV9CQVRD SF9CVUZGRVJfU1RBUlQgfCAxIDw8IDg7Cj4+ID4gPiA+ID4gIAkJKmJhdGNoKysgPSBsb3dlcl8z Ml9iaXRzKHZtYS0+bm9kZS5zdGFydCk7Cj4+ID4gPiA+ID4gLQl9IGVsc2UgaWYgKElOVEVMX0dF TihndC0+aTkxNSkgPj0gNCkgewo+PiA+ID4gPiA+ICsJfSBlbHNlIGlmIChHUkFQSElDU19WRVIo Z3QtPmk5MTUpID49IDQpIHsKPj4gPiA+ID4gPiAgCQkqYmF0Y2grKyA9IE1JX1NUT1JFX0RXT1JE X0lNTV9HRU40IHwgTUlfVVNFX0dHVFQ7Cj4+ID4gPiA+ID4gIAkJKmJhdGNoKysgPSAwOwo+PiA+ ID4gPiA+ICAJCSpiYXRjaCsrID0gbG93ZXJfMzJfYml0cyhod3NfYWRkcmVzcyhod3MsIHJxKSk7 Cj4+ID4gPiA+ID4gQEAgLTI0Myw3ICsyNDMsNyBAQCBoYW5nX2NyZWF0ZV9yZXF1ZXN0KHN0cnVj dCBoYW5nICpoLCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4+ID4gPiA+ID4gIAl9 Cj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAgCWZsYWdzID0gMDsKPj4gPiA+ID4gPiAtCWlmIChJTlRF TF9HRU4oZ3QtPmk5MTUpIDw9IDUpCj4+ID4gPiA+ID4gKwlpZiAoR1JBUEhJQ1NfVkVSKGd0LT5p OTE1KSA8PSA1KQo+PiA+ID4gPiA+ICAJCWZsYWdzIHw9IEk5MTVfRElTUEFUQ0hfU0VDVVJFOwo+ PiA+ID4gPiA+Cj4+ID4gPiA+ID4gIAllcnIgPSBycS0+ZW5naW5lLT5lbWl0X2JiX3N0YXJ0KHJx LCB2bWEtPm5vZGUuc3RhcnQsIFBBR0VfU0laRSwgZmxhZ3MpOwo+PiA+ID4gPiA+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9sbGMuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2xsYy5jCj4+ID4gPiA+ID4gaW5kZXggOTQwMDZmMTE3YmJk Li40NTliNzc1ZjE2M2EgMTAwNjQ0Cj4+ID4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3Qvc2VsZnRlc3RfbGxjLmMKPj4gPiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9zZWxmdGVzdF9sbGMuYwo+PiA+ID4gPiA+IEBAIC00NCw3ICs0NCw3IEBAIHN0YXRpYyBp bnQgZ2VuNl92ZXJpZnlfcmluZ19mcmVxKHN0cnVjdCBpbnRlbF9sbGMgKmxsYykKPj4gPiA+ID4g PiAgCQlpZiAoZm91bmQgIT0gaWFfZnJlcSkgewo+PiA+ID4gPiA+ICAJCQlwcl9lcnIoIk1pbiBm cmVxIHRhYmxlKCVkL1slZCwgJWRdKTolZE1IeiBkaWQgbm90IG1hdGNoIGV4cGVjdGVkIENQVSBm cmVxLCBmb3VuZCAlZCwgZXhwZWN0ZWQgJWRcbiIsCj4+ID4gPiA+ID4gIAkJCSAgICAgICBncHVf ZnJlcSwgY29uc3RzLm1pbl9ncHVfZnJlcSwgY29uc3RzLm1heF9ncHVfZnJlcSwKPj4gPiA+ID4g PiAtCQkJICAgICAgIGludGVsX2dwdV9mcmVxKHJwcywgZ3B1X2ZyZXEgKiAoSU5URUxfR0VOKGk5 MTUpID49IDkgPyBHRU45X0ZSRVFfU0NBTEVSIDogMSkpLAo+PiA+ID4gPiA+ICsJCQkgICAgICAg aW50ZWxfZ3B1X2ZyZXEocnBzLCBncHVfZnJlcSAqIChHUkFQSElDU19WRVIoaTkxNSkgPj0gOSA/ IEdFTjlfRlJFUV9TQ0FMRVIgOiAxKSksCj4+ID4gPiA+ID4gIAkJCSAgICAgICBmb3VuZCwgaWFf ZnJlcSk7Cj4+ID4gPiA+ID4gIAkJCWVyciA9IC1FSU5WQUw7Cj4+ID4gPiA+ID4gIAkJCWJyZWFr Owo+PiA+ID4gPiA+IEBAIC01NCw3ICs1NCw3IEBAIHN0YXRpYyBpbnQgZ2VuNl92ZXJpZnlfcmlu Z19mcmVxKHN0cnVjdCBpbnRlbF9sbGMgKmxsYykKPj4gPiA+ID4gPiAgCQlpZiAoZm91bmQgIT0g cmluZ19mcmVxKSB7Cj4+ID4gPiA+ID4gIAkJCXByX2VycigiTWluIGZyZXEgdGFibGUoJWQvWyVk LCAlZF0pOiVkTUh6IGRpZCBub3QgbWF0Y2ggZXhwZWN0ZWQgcmluZyBmcmVxLCBmb3VuZCAlZCwg ZXhwZWN0ZWQgJWRcbiIsCj4+ID4gPiA+ID4gIAkJCSAgICAgICBncHVfZnJlcSwgY29uc3RzLm1p bl9ncHVfZnJlcSwgY29uc3RzLm1heF9ncHVfZnJlcSwKPj4gPiA+ID4gPiAtCQkJICAgICAgIGlu dGVsX2dwdV9mcmVxKHJwcywgZ3B1X2ZyZXEgKiAoSU5URUxfR0VOKGk5MTUpID49IDkgPyBHRU45 X0ZSRVFfU0NBTEVSIDogMSkpLAo+PiA+ID4gPiA+ICsJCQkgICAgICAgaW50ZWxfZ3B1X2ZyZXEo cnBzLCBncHVfZnJlcSAqIChHUkFQSElDU19WRVIoaTkxNSkgPj0gOSA/IEdFTjlfRlJFUV9TQ0FM RVIgOiAxKSksCj4+ID4gPiA+ID4gIAkJCSAgICAgICBmb3VuZCwgcmluZ19mcmVxKTsKPj4gPiA+ ID4gPiAgCQkJZXJyID0gLUVJTlZBTDsKPj4gPiA+ID4gPiAgCQkJYnJlYWs7Cj4+ID4gPiA+ID4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2xyYy5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfbHJjLmMKPj4gPiA+ID4gPiBpbmRleCBkOGY2 NjIzNTI0ZTguLjMxMTkwMTZkOTkxMCAxMDA2NDQKPj4gPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9scmMuYwo+PiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2xyYy5jCj4+ID4gPiA+ID4gQEAgLTU4NCw3ICs1ODQsNyBA QCBzdGF0aWMgaW50IF9fbGl2ZV9scmNfZ3ByKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSwKPj4gPiA+ID4gPiAgCWludCBlcnI7Cj4+ID4gPiA+ID4gIAlpbnQgbjsKPj4gPiA+ID4gPgo+ PiA+ID4gPiA+IC0JaWYgKElOVEVMX0dFTihlbmdpbmUtPmk5MTUpIDwgOSAmJiBlbmdpbmUtPmNs YXNzICE9IFJFTkRFUl9DTEFTUykKPj4gPiA+ID4gPiArCWlmIChHUkFQSElDU19WRVIoZW5naW5l LT5pOTE1KSA8IDkgJiYgZW5naW5lLT5jbGFzcyAhPSBSRU5ERVJfQ0xBU1MpCj4+ID4gPiA+ID4g IAkJcmV0dXJuIDA7IC8qIEdQUiBvbmx5IG9uIHJjczAgZm9yIGdlbjggKi8KPj4gPiA+ID4gPgo+ PiA+ID4gPiA+ICAJZXJyID0gZ3ByX21ha2VfZGlydHkoZW5naW5lLT5rZXJuZWxfY29udGV4dCk7 Cj4+ID4gPiA+ID4gQEAgLTEzODksMTAgKzEzODksMTAgQEAgc3RhdGljIGludCBfX2xyY19pc29s YXRpb24oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCB1MzIgcG9pc29uKQo+PiA+ID4g PiA+Cj4+ID4gPiA+ID4gIHN0YXRpYyBib29sIHNraXBfaXNvbGF0aW9uKGNvbnN0IHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPj4gPiA+ID4gPiAgewo+PiA+ID4gPiA+IC0JaWYgKGVu Z2luZS0+Y2xhc3MgPT0gQ09QWV9FTkdJTkVfQ0xBU1MgJiYgSU5URUxfR0VOKGVuZ2luZS0+aTkx NSkgPT0gOSkKPj4gPiA+ID4gPiArCWlmIChlbmdpbmUtPmNsYXNzID09IENPUFlfRU5HSU5FX0NM QVNTICYmIEdSQVBISUNTX1ZFUihlbmdpbmUtPmk5MTUpID09IDkpCj4+ID4gPiA+ID4gIAkJcmV0 dXJuIHRydWU7Cj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAtCWlmIChlbmdpbmUtPmNsYXNzID09IFJF TkRFUl9DTEFTUyAmJiBJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA9PSAxMSkKPj4gPiA+ID4gPiAr CWlmIChlbmdpbmUtPmNsYXNzID09IFJFTkRFUl9DTEFTUyAmJiBHUkFQSElDU19WRVIoZW5naW5l LT5pOTE1KSA9PSAxMSkKPj4gPiA+ID4gPiAgCQlyZXR1cm4gdHJ1ZTsKPj4gPiA+ID4gPgo+PiA+ ID4gPiA+ICAJcmV0dXJuIGZhbHNlOwo+PiA+ID4gPiA+IEBAIC0xNTUxLDcgKzE1NTEsNyBAQCBz dGF0aWMgaW50IF9fbGl2ZV9scmNfaW5kaXJlY3RfY3R4X2JiKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSkKPj4gPiA+ID4gPiAgCS8qIFdlIHVzZSB0aGUgYWxyZWFkeSByZXNlcnZlZCBl eHRyYSBwYWdlIGluIGNvbnRleHQgc3RhdGUgKi8KPj4gPiA+ID4gPiAgCWlmICghYS0+d2FfYmJf cGFnZSkgewo+PiA+ID4gPiA+ICAJCUdFTV9CVUdfT04oYi0+d2FfYmJfcGFnZSk7Cj4+ID4gPiA+ ID4gLQkJR0VNX0JVR19PTihJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA9PSAxMik7Cj4+ID4gPiA+ ID4gKwkJR0VNX0JVR19PTihHUkFQSElDU19WRVIoZW5naW5lLT5pOTE1KSA9PSAxMik7Cj4+ID4g PiA+ID4gIAkJZ290byB1bnBpbl9iOwo+PiA+ID4gPiA+ICAJfQo+PiA+ID4gPiA+Cj4+ID4gPiA+ ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X21vY3MuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X21vY3MuYwo+PiA+ID4gPiA+IGluZGV4 IGU1NWE4ODdkMTFlMi4uYjliYjBlNmU5N2Y3IDEwMDY0NAo+PiA+ID4gPiA+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X21vY3MuYwo+PiA+ID4gPiA+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X21vY3MuYwo+PiA+ID4gPiA+IEBAIC0xODMsNyAr MTgzLDcgQEAgc3RhdGljIGJvb2wgbWNyX3JhbmdlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1LCB1MzIgb2Zmc2V0KQo+PiA+ID4gPiA+ICAJICogd2hpY2ggb25seSBjb250cm9scyBDUFUg aW5pdGlhdGVkIE1NSU8uIFJvdXRpbmcgZG9lcyBub3QKPj4gPiA+ID4gPiAgCSAqIHdvcmsgZm9y IENTIGFjY2VzcyBzbyB3ZSBjYW5ub3QgdmVyaWZ5IHRoZW0gb24gdGhpcyBwYXRoLgo+PiA+ID4g PiA+ICAJICovCj4+ID4gPiA+ID4gLQlyZXR1cm4gSU5URUxfR0VOKGk5MTUpID49IDggJiYgb2Zm c2V0ID49IDB4YjAwMCAmJiBvZmZzZXQgPD0gMHhiNGZmOwo+PiA+ID4gPiA+ICsJcmV0dXJuIEdS QVBISUNTX1ZFUihpOTE1KSA+PSA4ICYmIG9mZnNldCA+PSAweGIwMDAgJiYgb2Zmc2V0IDw9IDB4 YjRmZjsKPj4gPiA+ID4gPiAgfQo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gIHN0YXRpYyBpbnQgY2hl Y2tfbDNjY190YWJsZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4+ID4gPiA+ID4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3JjNi5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfcmM2LmMKPj4gPiA+ID4gPiBpbmRleCA3MTBm ODI1ZjZlNWEuLjhjNzBiN2UxMjA3NCAxMDA2NDQKPj4gPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9yYzYuYwo+PiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3JjNi5jCj4+ID4gPiA+ID4gQEAgLTE0MCw3ICsxNDAsNyBA QCBzdGF0aWMgY29uc3QgdTMyICpfX2xpdmVfcmM2X2N0eChzdHJ1Y3QgaW50ZWxfY29udGV4dCAq Y2UpCj4+ID4gPiA+ID4gIAl9Cj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAgCWNtZCA9IE1JX1NUT1JF X1JFR0lTVEVSX01FTSB8IE1JX1VTRV9HR1RUOwo+PiA+ID4gPiA+IC0JaWYgKElOVEVMX0dFTihy cS0+ZW5naW5lLT5pOTE1KSA+PSA4KQo+PiA+ID4gPiA+ICsJaWYgKEdSQVBISUNTX1ZFUihycS0+ ZW5naW5lLT5pOTE1KSA+PSA4KQo+PiA+ID4gPiA+ICAJCWNtZCsrOwo+PiA+ID4gPiA+Cj4+ID4g PiA+ID4gIAkqY3MrKyA9IGNtZDsKPj4gPiA+ID4gPiBAQCAtMTkzLDcgKzE5Myw3IEBAIGludCBs aXZlX3JjNl9jdHhfd2Eodm9pZCAqYXJnKQo+PiA+ID4gPiA+ICAJaW50IGVyciA9IDA7Cj4+ID4g PiA+ID4KPj4gPiA+ID4gPiAgCS8qIEEgcmVhZCBvZiBDVFhfSU5GTyB1cHNldHMgcmM2LiBQb2tl IHRoZSBiZWFyISAqLwo+PiA+ID4gPiA+IC0JaWYgKElOVEVMX0dFTihndC0+aTkxNSkgPCA4KQo+ PiA+ID4gPiA+ICsJaWYgKEdSQVBISUNTX1ZFUihndC0+aTkxNSkgPCA4KQo+PiA+ID4gPiA+ICAJ CXJldHVybiAwOwo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gIAllbmdpbmVzID0gcmFuZG9taXNlZF9l bmdpbmVzKGd0LCAmcHJuZywgJmNvdW50KTsKPj4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfcmluZ19zdWJtaXNzaW9uLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9yaW5nX3N1Ym1pc3Npb24uYwo+PiA+ID4gPiA+IGluZGV4 IGMxMmU3NDE3MWI2My4uMDQxOTU0NDA4ZDBmIDEwMDY0NAo+PiA+ID4gPiA+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3Jpbmdfc3VibWlzc2lvbi5jCj4+ID4gPiA+ID4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfcmluZ19zdWJtaXNzaW9uLmMK Pj4gPiA+ID4gPiBAQCAtNDEsMTAgKzQxLDEwIEBAIHN0YXRpYyBzdHJ1Y3QgaTkxNV92bWEgKmNy ZWF0ZV93YWxseShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4+ID4gPiA+ID4gIAkJ cmV0dXJuIEVSUl9DQVNUKGNzKTsKPj4gPiA+ID4gPiAgCX0KPj4gPiA+ID4gPgo+PiA+ID4gPiA+ IC0JaWYgKElOVEVMX0dFTihlbmdpbmUtPmk5MTUpID49IDYpIHsKPj4gPiA+ID4gPiArCWlmIChH UkFQSElDU19WRVIoZW5naW5lLT5pOTE1KSA+PSA2KSB7Cj4+ID4gPiA+ID4gIAkJKmNzKysgPSBN SV9TVE9SRV9EV09SRF9JTU1fR0VONDsKPj4gPiA+ID4gPiAgCQkqY3MrKyA9IDA7Cj4+ID4gPiA+ ID4gLQl9IGVsc2UgaWYgKElOVEVMX0dFTihlbmdpbmUtPmk5MTUpID49IDQpIHsKPj4gPiA+ID4g PiArCX0gZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkgPj0gNCkgewo+PiA+ID4g PiA+ICAJCSpjcysrID0gTUlfU1RPUkVfRFdPUkRfSU1NX0dFTjQgfCBNSV9VU0VfR0dUVDsKPj4g PiA+ID4gPiAgCQkqY3MrKyA9IDA7Cj4+ID4gPiA+ID4gIAl9IGVsc2Ugewo+PiA+ID4gPiA+IEBA IC0yNjYsNyArMjY2LDcgQEAgc3RhdGljIGludCBsaXZlX2N0eF9zd2l0Y2hfd2Eodm9pZCAqYXJn KQo+PiA+ID4gPiA+ICAJCWlmICghaW50ZWxfZW5naW5lX2Nhbl9zdG9yZV9kd29yZChlbmdpbmUp KQo+PiA+ID4gPiA+ICAJCQljb250aW51ZTsKPj4gPiA+ID4gPgo+PiA+ID4gPiA+IC0JCWlmIChJ U19HRU5fUkFOR0UoZ3QtPmk5MTUsIDQsIDUpKQo+PiA+ID4gPiA+ICsJCWlmIChJU19HUkFQSElD U19WRVIoZ3QtPmk5MTUsIDQsIDUpKQo+PiA+ID4gPiA+ICAJCQljb250aW51ZTsgLyogTUlfU1RP UkVfRFdPUkQgaXMgcHJpdmlsZWdlZCEgKi8KPj4gPiA+ID4gPgo+PiA+ID4gPiA+ICAJCXNhdmVk X3dhID0gZmV0Y2hfYW5kX3plcm8oJmVuZ2luZS0+d2FfY3R4LnZtYSk7Cj4+ID4gPiA+ID4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3Jwcy5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfcnBzLmMKPj4gPiA+ID4gPiBpbmRleCAzY2ExYmQ1 NzkzYzMuLjdlZTI1MTNlMTVmOSAxMDA2NDQKPj4gPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9zZWxmdGVzdF9ycHMuYwo+PiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L3NlbGZ0ZXN0X3Jwcy5jCj4+ID4gPiA+ID4gQEAgLTIwNCw3ICsyMDQsNyBAQCBz dGF0aWMgdm9pZCBzaG93X3BzdGF0ZV9saW1pdHMoc3RydWN0IGludGVsX3JwcyAqcnBzKQo+PiA+ ID4gPiA+ICAJCQlpOTE1X21taW9fcmVnX29mZnNldChCWFRfUlBfU1RBVEVfQ0FQKSwKPj4gPiA+ ID4gPiAgCQkJaW50ZWxfdW5jb3JlX3JlYWQocnBzX3RvX3VuY29yZShycHMpLAo+PiA+ID4gPiA+ ICAJCQkJCSAgQlhUX1JQX1NUQVRFX0NBUCkpOwo+PiA+ID4gPiA+IC0JfSBlbHNlIGlmIChJU19H RU4oaTkxNSwgOSkpIHsKPj4gPiA+ID4gPiArCX0gZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUp ID09IDkpIHsKPj4gPiA+ID4gPiAgCQlwcl9pbmZvKCJQX1NUQVRFX0xJTUlUU1sleF06IDB4JTA4 eFxuIiwKPj4gPiA+ID4gPiAgCQkJaTkxNV9tbWlvX3JlZ19vZmZzZXQoR0VOOV9SUF9TVEFURV9M SU1JVFMpLAo+PiA+ID4gPiA+ICAJCQlpbnRlbF91bmNvcmVfcmVhZChycHNfdG9fdW5jb3JlKHJw cyksCj4+ID4gPiA+ID4gQEAgLTIyMiw3ICsyMjIsNyBAQCBpbnQgbGl2ZV9ycHNfY2xvY2tfaW50 ZXJ2YWwodm9pZCAqYXJnKQo+PiA+ID4gPiA+ICAJc3RydWN0IGlndF9zcGlubmVyIHNwaW47Cj4+ ID4gPiA+ID4gIAlpbnQgZXJyID0gMDsKPj4gPiA+ID4gPgo+PiA+ID4gPiA+IC0JaWYgKCFpbnRl bF9ycHNfaXNfZW5hYmxlZChycHMpIHx8IElOVEVMX0dFTihndC0+aTkxNSkgPCA2KQo+PiA+ID4g PiA+ICsJaWYgKCFpbnRlbF9ycHNfaXNfZW5hYmxlZChycHMpIHx8IEdSQVBISUNTX1ZFUihndC0+ aTkxNSkgPCA2KQo+PiA+ID4gPiA+ICAJCXJldHVybiAwOwo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4g IAlpZiAoaWd0X3NwaW5uZXJfaW5pdCgmc3BpbiwgZ3QpKQo+PiA+ID4gPiA+IEBAIC01MDYsNyAr NTA2LDcgQEAgc3RhdGljIHZvaWQgc2hvd19wY3VfY29uZmlnKHN0cnVjdCBpbnRlbF9ycHMgKnJw cykKPj4gPiA+ID4gPgo+PiA+ID4gPiA+ICAJbWluX2dwdV9mcmVxID0gcnBzLT5taW5fZnJlcTsK Pj4gPiA+ID4gPiAgCW1heF9ncHVfZnJlcSA9IHJwcy0+bWF4X2ZyZXE7Cj4+ID4gPiA+ID4gLQlp ZiAoSU5URUxfR0VOKGk5MTUpID49IDkpIHsKPj4gPiA+ID4gPiArCWlmIChHUkFQSElDU19WRVIo aTkxNSkgPj0gOSkgewo+PiA+ID4gPiA+ICAJCS8qIENvbnZlcnQgR1QgZnJlcXVlbmN5IHRvIDUw IEhaIHVuaXRzICovCj4+ID4gPiA+ID4gIAkJbWluX2dwdV9mcmVxIC89IEdFTjlfRlJFUV9TQ0FM RVI7Cj4+ID4gPiA+ID4gIAkJbWF4X2dwdV9mcmVxIC89IEdFTjlfRlJFUV9TQ0FMRVI7Cj4+ID4g PiA+ID4gQEAgLTYxNCw3ICs2MTQsNyBAQCBpbnQgbGl2ZV9ycHNfZnJlcXVlbmN5X2NzKHZvaWQg KmFyZykKPj4gPiA+ID4gPiAgCWlmICghaW50ZWxfcnBzX2lzX2VuYWJsZWQocnBzKSkKPj4gPiA+ ID4gPiAgCQlyZXR1cm4gMDsKPj4gPiA+ID4gPgo+PiA+ID4gPiA+IC0JaWYgKElOVEVMX0dFTihn dC0+aTkxNSkgPCA4KSAvKiBmb3IgQ1Mgc2ltcGxpY2l0eSAqLwo+PiA+ID4gPiA+ICsJaWYgKEdS QVBISUNTX1ZFUihndC0+aTkxNSkgPCA4KSAvKiBmb3IgQ1Mgc2ltcGxpY2l0eSAqLwo+PiA+ID4g PiA+ICAJCXJldHVybiAwOwo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gIAlpZiAoQ1BVX0xBVEVOQ1kg Pj0gMCkKPj4gPiA+ID4gPiBAQCAtNzU1LDcgKzc1NSw3IEBAIGludCBsaXZlX3Jwc19mcmVxdWVu Y3lfc3JtKHZvaWQgKmFyZykKPj4gPiA+ID4gPiAgCWlmICghaW50ZWxfcnBzX2lzX2VuYWJsZWQo cnBzKSkKPj4gPiA+ID4gPiAgCQlyZXR1cm4gMDsKPj4gPiA+ID4gPgo+PiA+ID4gPiA+IC0JaWYg KElOVEVMX0dFTihndC0+aTkxNSkgPCA4KSAvKiBmb3IgQ1Mgc2ltcGxpY2l0eSAqLwo+PiA+ID4g PiA+ICsJaWYgKEdSQVBISUNTX1ZFUihndC0+aTkxNSkgPCA4KSAvKiBmb3IgQ1Mgc2ltcGxpY2l0 eSAqLwo+PiA+ID4gPiA+ICAJCXJldHVybiAwOwo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gIAlpZiAo Q1BVX0xBVEVOQ1kgPj0gMCkKPj4gPiA+ID4gPiBAQCAtMTAzMSw3ICsxMDMxLDcgQEAgaW50IGxp dmVfcnBzX2ludGVycnVwdCh2b2lkICphcmcpCj4+ID4gPiA+ID4gIAkgKiBGaXJzdCwgbGV0J3Mg Y2hlY2sgd2hldGhlciBvciBub3Qgd2UgYXJlIHJlY2VpdmluZyBpbnRlcnJ1cHRzLgo+PiA+ID4g PiA+ICAJICovCj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAtCWlmICghaW50ZWxfcnBzX2hhc19pbnRl cnJ1cHRzKHJwcykgfHwgSU5URUxfR0VOKGd0LT5pOTE1KSA8IDYpCj4+ID4gPiA+ID4gKwlpZiAo IWludGVsX3Jwc19oYXNfaW50ZXJydXB0cyhycHMpIHx8IEdSQVBISUNTX1ZFUihndC0+aTkxNSkg PCA2KQo+PiA+ID4gPiA+ICAJCXJldHVybiAwOwo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gIAlpbnRl bF9ndF9wbV9nZXQoZ3QpOwo+PiA+ID4gPiA+IEBAIC0xMTM2LDcgKzExMzYsNyBAQCBpbnQgbGl2 ZV9ycHNfcG93ZXIodm9pZCAqYXJnKQo+PiA+ID4gPiA+ICAJICogdGhhdCB0aGVvcnkuCj4+ID4g PiA+ID4gIAkgKi8KPj4gPiA+ID4gPgo+PiA+ID4gPiA+IC0JaWYgKCFpbnRlbF9ycHNfaXNfZW5h YmxlZChycHMpIHx8IElOVEVMX0dFTihndC0+aTkxNSkgPCA2KQo+PiA+ID4gPiA+ICsJaWYgKCFp bnRlbF9ycHNfaXNfZW5hYmxlZChycHMpIHx8IEdSQVBISUNTX1ZFUihndC0+aTkxNSkgPCA2KQo+ PiA+ID4gPiA+ICAJCXJldHVybiAwOwo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gIAlpZiAoIWxpYnJh cGxfc3VwcG9ydGVkKGd0LT5pOTE1KSkKPj4gPiA+ID4gPiBAQCAtMTI0MCw3ICsxMjQwLDcgQEAg aW50IGxpdmVfcnBzX2R5bmFtaWModm9pZCAqYXJnKQo+PiA+ID4gPiA+ICAJICogbW92aW5nIHBh cnRzIGludG8gZHluYW1pYyByZWNsb2NraW5nIGJhc2VkIG9uIGxvYWQuCj4+ID4gPiA+ID4gIAkg Ki8KPj4gPiA+ID4gPgo+PiA+ID4gPiA+IC0JaWYgKCFpbnRlbF9ycHNfaXNfZW5hYmxlZChycHMp IHx8IElOVEVMX0dFTihndC0+aTkxNSkgPCA2KQo+PiA+ID4gPiA+ICsJaWYgKCFpbnRlbF9ycHNf aXNfZW5hYmxlZChycHMpIHx8IEdSQVBISUNTX1ZFUihndC0+aTkxNSkgPCA2KQo+PiA+ID4gPiA+ ICAJCXJldHVybiAwOwo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gIAlpZiAoaWd0X3NwaW5uZXJfaW5p dCgmc3BpbiwgZ3QpKQo+PiA+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9zZWxmdGVzdF90aW1lbGluZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRl c3RfdGltZWxpbmUuYwo+PiA+ID4gPiA+IGluZGV4IDlhZGJkOWQxNDdiZS4uNjRkYTBjOTFkZWMx IDEwMDY0NAo+PiA+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0 X3RpbWVsaW5lLmMKPj4gPiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxm dGVzdF90aW1lbGluZS5jCj4+ID4gPiA+ID4gQEAgLTQ1NywxMiArNDU3LDEyIEBAIHN0YXRpYyBp bnQgZW1pdF9nZ3R0X3N0b3JlX2R3KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCB1MzIgYWRkciwg dTMyIHZhbHVlKQo+PiA+ID4gPiA+ICAJaWYgKElTX0VSUihjcykpCj4+ID4gPiA+ID4gIAkJcmV0 dXJuIFBUUl9FUlIoY3MpOwo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gLQlpZiAoSU5URUxfR0VOKHJx LT5lbmdpbmUtPmk5MTUpID49IDgpIHsKPj4gPiA+ID4gPiArCWlmIChHUkFQSElDU19WRVIocnEt PmVuZ2luZS0+aTkxNSkgPj0gOCkgewo+PiA+ID4gPiA+ICAJCSpjcysrID0gTUlfU1RPUkVfRFdP UkRfSU1NX0dFTjQgfCBNSV9VU0VfR0dUVDsKPj4gPiA+ID4gPiAgCQkqY3MrKyA9IGFkZHI7Cj4+ ID4gPiA+ID4gIAkJKmNzKysgPSAwOwo+PiA+ID4gPiA+ICAJCSpjcysrID0gdmFsdWU7Cj4+ID4g PiA+ID4gLQl9IGVsc2UgaWYgKElOVEVMX0dFTihycS0+ZW5naW5lLT5pOTE1KSA+PSA0KSB7Cj4+ ID4gPiA+ID4gKwl9IGVsc2UgaWYgKEdSQVBISUNTX1ZFUihycS0+ZW5naW5lLT5pOTE1KSA+PSA0 KSB7Cj4+ID4gPiA+ID4gIAkJKmNzKysgPSBNSV9TVE9SRV9EV09SRF9JTU1fR0VONCB8IE1JX1VT RV9HR1RUOwo+PiA+ID4gPiA+ICAJCSpjcysrID0gMDsKPj4gPiA+ID4gPiAgCQkqY3MrKyA9IGFk ZHI7Cj4+ID4gPiA+ID4gQEAgLTk5Miw3ICs5OTIsNyBAQCBzdGF0aWMgaW50IGxpdmVfaHdzcF9y ZWFkKHZvaWQgKmFyZykKPj4gPiA+ID4gPiAgCSAqIGV2ZW4gYWNyb3NzIG11bHRpcGxlIHdyYXBz Lgo+PiA+ID4gPiA+ICAJICovCj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAtCWlmIChJTlRFTF9HRU4o Z3QtPmk5MTUpIDwgOCkgLyogQ1MgY29udmVuaWVuY2UgW1NSTS9MUk1dICovCj4+ID4gPiA+ID4g KwlpZiAoR1JBUEhJQ1NfVkVSKGd0LT5pOTE1KSA8IDgpIC8qIENTIGNvbnZlbmllbmNlIFtTUk0v TFJNXSAqLwo+PiA+ID4gPiA+ICAJCXJldHVybiAwOwo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gIAl0 bCA9IGludGVsX3RpbWVsaW5lX2NyZWF0ZShndCk7Cj4+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3dvcmthcm91bmRzLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9zZWxmdGVzdF93b3JrYXJvdW5kcy5jCj4+ID4gPiA+ID4gaW5kZXggNjQ5 MzdlYzNmMmRjLi5jMzA3NTRkYWY0YjEgMTAwNjQ0Cj4+ID4gPiA+ID4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3Rfd29ya2Fyb3VuZHMuYwo+PiA+ID4gPiA+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3dvcmthcm91bmRzLmMKPj4gPiA+ID4gPiBA QCAtMTQ1LDcgKzE0NSw3IEBAIHJlYWRfbm9ucHJpdnMoc3RydWN0IGludGVsX2NvbnRleHQgKmNl KQo+PiA+ID4gPiA+ICAJCWdvdG8gZXJyX3JlcTsKPj4gPiA+ID4gPgo+PiA+ID4gPiA+ICAJc3Jt ID0gTUlfU1RPUkVfUkVHSVNURVJfTUVNIHwgTUlfU1JNX0xSTV9HTE9CQUxfR1RUOwo+PiA+ID4g PiA+IC0JaWYgKElOVEVMX0dFTihlbmdpbmUtPmk5MTUpID49IDgpCj4+ID4gPiA+ID4gKwlpZiAo R1JBUEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkgPj0gOCkKPj4gPiA+ID4gPiAgCQlzcm0rKzsKPj4g PiA+ID4gPgo+PiA+ID4gPiA+ICAJY3MgPSBpbnRlbF9yaW5nX2JlZ2luKHJxLCA0ICogUklOR19N QVhfTk9OUFJJVl9TTE9UUyk7Cj4+ID4gPiA+ID4gQEAgLTU0Niw3ICs1NDYsNyBAQCBzdGF0aWMg aW50IGNoZWNrX2RpcnR5X3doaXRlbGlzdChzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCj4+ID4g PiA+ID4KPj4gPiA+ID4gPiAgCQlzcm0gPSBNSV9TVE9SRV9SRUdJU1RFUl9NRU07Cj4+ID4gPiA+ ID4gIAkJbHJtID0gTUlfTE9BRF9SRUdJU1RFUl9NRU07Cj4+ID4gPiA+ID4gLQkJaWYgKElOVEVM X0dFTihlbmdpbmUtPmk5MTUpID49IDgpCj4+ID4gPiA+ID4gKwkJaWYgKEdSQVBISUNTX1ZFUihl bmdpbmUtPmk5MTUpID49IDgpCj4+ID4gPiA+ID4gIAkJCWxybSsrLCBzcm0rKzsKPj4gPiA+ID4g Pgo+PiA+ID4gPiA+ICAJCXByX2RlYnVnKCIlczogV3JpdGluZyBnYXJiYWdlIHRvICV4XG4iLAo+ PiA+ID4gPiA+IEBAIC03NDksNyArNzQ5LDcgQEAgc3RhdGljIGludCBsaXZlX2RpcnR5X3doaXRl bGlzdCh2b2lkICphcmcpCj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAgCS8qIENhbiB0aGUgdXNlciB3 cml0ZSB0byB0aGUgd2hpdGVsaXN0ZWQgcmVnaXN0ZXJzPyAqLwo+PiA+ID4gPiA+Cj4+ID4gPiA+ ID4gLQlpZiAoSU5URUxfR0VOKGd0LT5pOTE1KSA8IDcpIC8qIG1pbmltdW0gcmVxdWlyZW1lbnQg Zm9yIExSSSwgU1JNLCBMUk0gKi8KPj4gPiA+ID4gPiArCWlmIChHUkFQSElDU19WRVIoZ3QtPmk5 MTUpIDwgNykgLyogbWluaW11bSByZXF1aXJlbWVudCBmb3IgTFJJLCBTUk0sIExSTSAqLwo+PiA+ ID4gPiA+ICAJCXJldHVybiAwOwo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gIAlmb3JfZWFjaF9lbmdp bmUoZW5naW5lLCBndCwgaWQpIHsKPj4gPiA+ID4gPiBAQCAtODI5LDcgKzgyOSw3IEBAIHN0YXRp YyBpbnQgcmVhZF93aGl0ZWxpc3RlZF9yZWdpc3RlcnMoc3RydWN0IGludGVsX2NvbnRleHQgKmNl LAo+PiA+ID4gPiA+ICAJCWdvdG8gZXJyX3JlcTsKPj4gPiA+ID4gPgo+PiA+ID4gPiA+ICAJc3Jt ID0gTUlfU1RPUkVfUkVHSVNURVJfTUVNOwo+PiA+ID4gPiA+IC0JaWYgKElOVEVMX0dFTihlbmdp bmUtPmk5MTUpID49IDgpCj4+ID4gPiA+ID4gKwlpZiAoR1JBUEhJQ1NfVkVSKGVuZ2luZS0+aTkx NSkgPj0gOCkKPj4gPiA+ID4gPiAgCQlzcm0rKzsKPj4gPiA+ID4gPgo+PiA+ID4gPiA+ICAJY3Mg PSBpbnRlbF9yaW5nX2JlZ2luKHJxLCA0ICogZW5naW5lLT53aGl0ZWxpc3QuY291bnQpOwo+PiA+ ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWMu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Yy5jCj4+ID4gPiA+ID4gaW5k ZXggYWRhZTA0YzQ3YWFiLi44NGY4MDY5MTEzNzAgMTAwNjQ0Cj4+ID4gPiA+ID4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjLmMKPj4gPiA+ID4gPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWMuYwo+PiA+ID4gPiA+IEBAIC02MCw3ICs2 MCw3IEBAIHZvaWQgaW50ZWxfZ3VjX2luaXRfc2VuZF9yZWdzKHN0cnVjdCBpbnRlbF9ndWMgKmd1 YykKPj4gPiA+ID4gPiAgCWVudW0gZm9yY2V3YWtlX2RvbWFpbnMgZndfZG9tYWlucyA9IDA7Cj4+ ID4gPiA+ID4gIAl1bnNpZ25lZCBpbnQgaTsKPj4gPiA+ID4gPgo+PiA+ID4gPiA+IC0JaWYgKElO VEVMX0dFTihndC0+aTkxNSkgPj0gMTEpIHsKPj4gPiA+ID4gPiArCWlmIChHUkFQSElDU19WRVIo Z3QtPmk5MTUpID49IDExKSB7Cj4+ID4gPiA+ID4gIAkJZ3VjLT5zZW5kX3JlZ3MuYmFzZSA9Cj4+ ID4gPiA+ID4gIAkJCQlpOTE1X21taW9fcmVnX29mZnNldChHRU4xMV9TT0ZUX1NDUkFUQ0goMCkp Owo+PiA+ID4gPiA+ICAJCWd1Yy0+c2VuZF9yZWdzLmNvdW50ID0gR0VOMTFfU09GVF9TQ1JBVENI X0NPVU5UOwo+PiA+ID4gPiA+IEBAIC0xNzYsNyArMTc2LDcgQEAgdm9pZCBpbnRlbF9ndWNfaW5p dF9lYXJseShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAgCW11 dGV4X2luaXQoJmd1Yy0+c2VuZF9tdXRleCk7Cj4+ID4gPiA+ID4gIAlzcGluX2xvY2tfaW5pdCgm Z3VjLT5pcnFfbG9jayk7Cj4+ID4gPiA+ID4gLQlpZiAoSU5URUxfR0VOKGk5MTUpID49IDExKSB7 Cj4+ID4gPiA+ID4gKwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDExKSB7Cj4+ID4gPiA+ID4g IAkJZ3VjLT5ub3RpZnlfcmVnID0gR0VOMTFfR1VDX0hPU1RfSU5URVJSVVBUOwo+PiA+ID4gPiA+ ICAJCWd1Yy0+aW50ZXJydXB0cy5yZXNldCA9IGdlbjExX3Jlc2V0X2d1Y19pbnRlcnJ1cHRzOwo+ PiA+ID4gPiA+ICAJCWd1Yy0+aW50ZXJydXB0cy5lbmFibGUgPSBnZW4xMV9lbmFibGVfZ3VjX2lu dGVycnVwdHM7Cj4+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L3VjL2ludGVsX2d1Y19hZHMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1 Y19hZHMuYwo+PiA+ID4gPiA+IGluZGV4IDE3NTI2NzE3MzY4Yy4uYjMyZmFmYmEyYTkwIDEwMDY0 NAo+PiA+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19h ZHMuYwo+PiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1 Y19hZHMuYwo+PiA+ID4gPiA+IEBAIC0xNjIsNyArMTYyLDcgQEAgc3RhdGljIHZvaWQgX19ndWNf YWRzX2luaXQoc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+PiA+ID4gPiA+ICAJYmxvYi0+c3lzdGVt X2luZm8uZ2VuZXJpY19ndF9zeXNpbmZvW0dVQ19HRU5FUklDX0dUX1NZU0lORk9fVkRCT1hfU0ZD X1NVUFBPUlRfTUFTS10gPQo+PiA+ID4gPiA+ICAJCWd0LT5pbmZvLnZkYm94X3NmY19hY2Nlc3M7 Cj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAtCWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gMTIgJiYgIUlT X0RHRlgoaTkxNSkpIHsKPj4gPiA+ID4gPiArCWlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gMTIg JiYgIUlTX0RHRlgoaTkxNSkpIHsKPj4gPiA+ID4gPiAgCQl1MzIgZGlzdGRicmVnID0gaW50ZWxf dW5jb3JlX3JlYWQoZ3QtPnVuY29yZSwKPj4gPiA+ID4gPiAgCQkJCQkJICBHRU4xMl9ESVNUX0RC U19QT1BVTEFURUQpOwo+PiA+ID4gPiA+ICAJCWJsb2ItPnN5c3RlbV9pbmZvLmdlbmVyaWNfZ3Rf c3lzaW5mb1tHVUNfR0VORVJJQ19HVF9TWVNJTkZPX0RPT1JCRUxMX0NPVU5UX1BFUl9TUUlESV0g PQo+PiA+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRl bF9ndWNfZncuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19mdy5jCj4+ ID4gPiA+ID4gaW5kZXggMjI3MGQ2YjNiMjcyLi43NmZlNzY2YWQxYmMgMTAwNjQ0Cj4+ID4gPiA+ ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2Z3LmMKPj4gPiA+ ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfZncuYwo+PiA+ ID4gPiA+IEBAIC0zMCw3ICszMCw3IEBAIHN0YXRpYyB2b2lkIGd1Y19wcmVwYXJlX3hmZXIoc3Ry dWN0IGludGVsX3VuY29yZSAqdW5jb3JlKQo+PiA+ID4gPiA+ICAJZWxzZQo+PiA+ID4gPiA+ICAJ CWludGVsX3VuY29yZV93cml0ZSh1bmNvcmUsIEdFTjlfR1RfUE1fQ09ORklHLCBHVF9ET09SQkVM TF9FTkFCTEUpOwo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gLQlpZiAoSVNfR0VOKHVuY29yZS0+aTkx NSwgOSkpIHsKPj4gPiA+ID4gPiArCWlmIChHUkFQSElDU19WRVIodW5jb3JlLT5pOTE1KSA9PSA5 KSB7Cj4+ID4gPiA+ID4gIAkJLyogRE9QIENsb2NrIEdhdGluZyBFbmFibGUgZm9yIEd1QyBjbG9j a3MgKi8KPj4gPiA+ID4gPiAgCQlpbnRlbF91bmNvcmVfcm13KHVuY29yZSwgR0VON19NSVNDQ1BD VEwsCj4+ID4gPiA+ID4gIAkJCQkgMCwgR0VOOF9ET1BfQ0xPQ0tfR0FURV9HVUNfRU5BQkxFKTsK Pj4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxf Z3VjX3N1Ym1pc3Npb24uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19z dWJtaXNzaW9uLmMKPj4gPiA+ID4gPiBpbmRleCAzMzU3MTlmMTc0OTAuLjU0MWY2ZGExZWM0NyAx MDA2NDQKPj4gPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9n dWNfc3VibWlzc2lvbi5jCj4+ID4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv dWMvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYwo+PiA+ID4gPiA+IEBAIC00MzgsNyArNDM4LDcgQEAg c3RhdGljIHZvaWQgZ3VjX2ludGVycnVwdHNfY2FwdHVyZShzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQo+ PiA+ID4gPiA+ICAJdTMyIGlycXMgPSBHVF9DT05URVhUX1NXSVRDSF9JTlRFUlJVUFQ7Cj4+ID4g PiA+ID4gIAl1MzIgZG1hc2sgPSBpcnFzIDw8IDE2IHwgaXJxczsKPj4gPiA+ID4gPgo+PiA+ID4g PiA+IC0JR0VNX0JVR19PTihJTlRFTF9HRU4oZ3QtPmk5MTUpIDwgMTEpOwo+PiA+ID4gPiA+ICsJ R0VNX0JVR19PTihHUkFQSElDU19WRVIoZ3QtPmk5MTUpIDwgMTEpOwo+PiA+ID4gPiA+Cj4+ID4g PiA+ID4gIAkvKiBEb24ndCBoYW5kbGUgdGhlIGN0eCBzd2l0Y2ggaW50ZXJydXB0IGluIEd1QyBz dWJtaXNzaW9uIG1vZGUgKi8KPj4gPiA+ID4gPiAgCWludGVsX3VuY29yZV9ybXcodW5jb3JlLCBH RU4xMV9SRU5ERVJfQ09QWV9JTlRSX0VOQUJMRSwgZG1hc2ssIDApOwo+PiA+ID4gPiA+IEBAIC00 NTEsNyArNDUxLDcgQEAgc3RhdGljIHZvaWQgZ3VjX2ludGVycnVwdHNfcmVsZWFzZShzdHJ1Y3Qg aW50ZWxfZ3QgKmd0KQo+PiA+ID4gPiA+ICAJdTMyIGlycXMgPSBHVF9DT05URVhUX1NXSVRDSF9J TlRFUlJVUFQ7Cj4+ID4gPiA+ID4gIAl1MzIgZG1hc2sgPSBpcnFzIDw8IDE2IHwgaXJxczsKPj4g PiA+ID4gPgo+PiA+ID4gPiA+IC0JR0VNX0JVR19PTihJTlRFTF9HRU4oZ3QtPmk5MTUpIDwgMTEp Owo+PiA+ID4gPiA+ICsJR0VNX0JVR19PTihHUkFQSElDU19WRVIoZ3QtPmk5MTUpIDwgMTEpOwo+ PiA+ID4gPiA+Cj4+ID4gPiA+ID4gIAkvKiBIYW5kbGUgY3R4IHN3aXRjaCBpbnRlcnJ1cHRzIGFn YWluICovCj4+ID4gPiA+ID4gIAlpbnRlbF91bmNvcmVfcm13KHVuY29yZSwgR0VOMTFfUkVOREVS X0NPUFlfSU5UUl9FTkFCTEUsIDAsIGRtYXNrKTsKPj4gPiA+ID4gPiBAQCAtNjQ4LDcgKzY0OCw3 IEBAIHN0YXRpYyB2b2lkIGd1Y19kZWZhdWx0X3ZmdW5jcyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpCj4+ID4gPiA+ID4gIAllbmdpbmUtPmVtaXRfZmx1c2ggPSBnZW44X2VtaXRfZmx1 c2hfeGNzOwo+PiA+ID4gPiA+ICAJZW5naW5lLT5lbWl0X2luaXRfYnJlYWRjcnVtYiA9IGdlbjhf ZW1pdF9pbml0X2JyZWFkY3J1bWI7Cj4+ID4gPiA+ID4gIAllbmdpbmUtPmVtaXRfZmluaV9icmVh ZGNydW1iID0gZ2VuOF9lbWl0X2ZpbmlfYnJlYWRjcnVtYl94Y3M7Cj4+ID4gPiA+ID4gLQlpZiAo SU5URUxfR0VOKGVuZ2luZS0+aTkxNSkgPj0gMTIpIHsKPj4gPiA+ID4gPiArCWlmIChHUkFQSElD U19WRVIoZW5naW5lLT5pOTE1KSA+PSAxMikgewo+PiA+ID4gPiA+ICAJCWVuZ2luZS0+ZW1pdF9m aW5pX2JyZWFkY3J1bWIgPSBnZW4xMl9lbWl0X2ZpbmlfYnJlYWRjcnVtYl94Y3M7Cj4+ID4gPiA+ ID4gIAkJZW5naW5lLT5lbWl0X2ZsdXNoID0gZ2VuMTJfZW1pdF9mbHVzaF94Y3M7Cj4+ID4gPiA+ ID4gIAl9Cj4+ID4gPiA+ID4gQEAgLTY3MCw3ICs2NzAsNyBAQCBzdGF0aWMgdm9pZCBndWNfZGVm YXVsdF92ZnVuY3Moc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+PiA+ID4gPiA+Cj4+ ID4gPiA+ID4gIHN0YXRpYyB2b2lkIHJjc19zdWJtaXNzaW9uX292ZXJyaWRlKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSkKPj4gPiA+ID4gPiAgewo+PiA+ID4gPiA+IC0Jc3dpdGNoIChJ TlRFTF9HRU4oZW5naW5lLT5pOTE1KSkgewo+PiA+ID4gPiA+ICsJc3dpdGNoIChHUkFQSElDU19W RVIoZW5naW5lLT5pOTE1KSkgewo+PiA+ID4gPiA+ICAJY2FzZSAxMjoKPj4gPiA+ID4gPiAgCQll bmdpbmUtPmVtaXRfZmx1c2ggPSBnZW4xMl9lbWl0X2ZsdXNoX3JjczsKPj4gPiA+ID4gPiAgCQll bmdpbmUtPmVtaXRfZmluaV9icmVhZGNydW1iID0gZ2VuMTJfZW1pdF9maW5pX2JyZWFkY3J1bWJf cmNzOwo+PiA+ID4gPiA+IEBAIC03MDAsNyArNzAwLDcgQEAgaW50IGludGVsX2d1Y19zdWJtaXNz aW9uX3NldHVwKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPj4gPiA+ID4gPiAgCSAq IFRoZSBzZXR1cCByZWxpZXMgb24gc2V2ZXJhbCBhc3N1bXB0aW9ucyAoZS5nLiBpcnFzIGFsd2F5 cyBlbmFibGVkKQo+PiA+ID4gPiA+ICAJICogdGhhdCBhcmUgb25seSB2YWxpZCBvbiBnZW4xMSsK Pj4gPiA+ID4gPiAgCSAqLwo+PiA+ID4gPiA+IC0JR0VNX0JVR19PTihJTlRFTF9HRU4oaTkxNSkg PCAxMSk7Cj4+ID4gPiA+ID4gKwlHRU1fQlVHX09OKEdSQVBISUNTX1ZFUihpOTE1KSA8IDExKTsK Pj4gPiA+ID4gPgo+PiA+ID4gPiA+ICAJdGFza2xldF9zZXR1cCgmZW5naW5lLT5leGVjbGlzdHMu dGFza2xldCwgZ3VjX3N1Ym1pc3Npb25fdGFza2xldCk7Cj4+ID4gPiA+ID4KPj4gPiA+ID4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfaHVjLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9odWMuYwo+PiA+ID4gPiA+IGluZGV4IDU2ZDIx NDRkYzZhMC4uZmM1Mzg3YjQxMGEyIDEwMDY0NAo+PiA+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L3VjL2ludGVsX2h1Yy5jCj4+ID4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvdWMvaW50ZWxfaHVjLmMKPj4gPiA+ID4gPiBAQCAtNDMsNyArNDMsNyBAQCB2 b2lkIGludGVsX2h1Y19pbml0X2Vhcmx5KHN0cnVjdCBpbnRlbF9odWMgKmh1YykKPj4gPiA+ID4g Pgo+PiA+ID4gPiA+ICAJaW50ZWxfdWNfZndfaW5pdF9lYXJseSgmaHVjLT5mdywgSU5URUxfVUNf RldfVFlQRV9IVUMpOwo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gLQlpZiAoSU5URUxfR0VOKGk5MTUp ID49IDExKSB7Cj4+ID4gPiA+ID4gKwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDExKSB7Cj4+ ID4gPiA+ID4gIAkJaHVjLT5zdGF0dXMucmVnID0gR0VOMTFfSFVDX0tFUk5FTF9MT0FEX0lORk87 Cj4+ID4gPiA+ID4gIAkJaHVjLT5zdGF0dXMubWFzayA9IEhVQ19MT0FEX1NVQ0NFU1NGVUw7Cj4+ ID4gPiA+ID4gIAkJaHVjLT5zdGF0dXMudmFsdWUgPSBIVUNfTE9BRF9TVUNDRVNTRlVMOwo+PiA+ ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Yy5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWMuYwo+PiA+ID4gPiA+IGluZGV4 IDZhYmI4ZjJkYzMzZC4uNmMyYmY0YjZiYzEwIDEwMDY0NAo+PiA+ID4gPiA+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX3VjLmMKPj4gPiA+ID4gPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Yy5jCj4+ID4gPiA+ID4gQEAgLTIzLDcgKzIzLDcg QEAgc3RhdGljIHZvaWQgdWNfZXhwYW5kX2RlZmF1bHRfb3B0aW9ucyhzdHJ1Y3QgaW50ZWxfdWMg KnVjKQo+PiA+ID4gPiA+ICAJCXJldHVybjsKPj4gPiA+ID4gPgo+PiA+ID4gPiA+ICAJLyogRG9u J3QgZW5hYmxlIEd1Qy9IdUMgb24gcHJlLUdlbjEyICovCj4+ID4gPiA+ID4gLQlpZiAoSU5URUxf R0VOKGk5MTUpIDwgMTIpIHsKPj4gPiA+ID4gPiArCWlmIChHUkFQSElDU19WRVIoaTkxNSkgPCAx Mikgewo+PiA+ID4gPiA+ICAJCWk5MTUtPnBhcmFtcy5lbmFibGVfZ3VjID0gMDsKPj4gPiA+ID4g PiAgCQlyZXR1cm47Cj4+ID4gPiA+ID4gIAl9Cj4+ID4gPiA+ID4gQEAgLTQ2Nyw3ICs0NjcsNyBA QCBzdGF0aWMgaW50IF9fdWNfaW5pdF9odyhzdHJ1Y3QgaW50ZWxfdWMgKnVjKQo+PiA+ID4gPiA+ Cj4+ID4gPiA+ID4gIAkvKiBXYUVuYWJsZXVLZXJuZWxIZWFkZXJWYWxpZEZpeDpza2wgKi8KPj4g PiA+ID4gPiAgCS8qIFdhRW5hYmxlR3VDQm9vdEhhc2hDaGVja05vdFNldDpza2wsYnh0LGtibCAq Lwo+PiA+ID4gPiA+IC0JaWYgKElTX0dFTihpOTE1LCA5KSkKPj4gPiA+ID4gPiArCWlmIChHUkFQ SElDU19WRVIoaTkxNSkgPT0gOSkKPj4gPiA+ID4gPiAgCQlhdHRlbXB0cyA9IDM7Cj4+ID4gPiA+ ID4gIAllbHNlCj4+ID4gPiA+ID4gIAkJYXR0ZW1wdHMgPSAxOwo+PiA+ID4gPiA+IC0tCj4+ID4g PiA+ID4gMi4zMS4xCj4+ID4gPiA+ID4KPj4gPiA+ID4KPj4gPiA+ID4gLS0KPj4gPiA+ID4gTWF0 dCBSb3Blcgo+PiA+ID4gPiBHcmFwaGljcyBTb2Z0d2FyZSBFbmdpbmVlcgo+PiA+ID4gPiBWVFQt T1NHQyBQbGF0Zm9ybSBFbmFibGVtZW50Cj4+ID4gPiA+IEludGVsIENvcnBvcmF0aW9uCj4+ID4g PiA+ICg5MTYpIDM1Ni0yNzk1Cj4+ID4KPj4gPiAtLQo+PiA+IE1hdHQgUm9wZXIKPj4gPiBHcmFw aGljcyBTb2Z0d2FyZSBFbmdpbmVlcgo+PiA+IFZUVC1PU0dDIFBsYXRmb3JtIEVuYWJsZW1lbnQK Pj4gPiBJbnRlbCBDb3Jwb3JhdGlvbgo+PiA+ICg5MTYpIDM1Ni0yNzk1Cj4KPi0tIAo+TWF0dCBS b3Blcgo+R3JhcGhpY3MgU29mdHdhcmUgRW5naW5lZXIKPlZUVC1PU0dDIFBsYXRmb3JtIEVuYWJs ZW1lbnQKPkludGVsIENvcnBvcmF0aW9uCj4oOTE2KSAzNTYtMjc5NQpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0Cklu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK