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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 348C1CA0FEA for ; Fri, 1 Sep 2023 11:59:41 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id DD9F110E7AD; Fri, 1 Sep 2023 11:59:40 +0000 (UTC) Received: from mgamail.intel.com (mgamail.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id CC4C010E7B0 for ; Fri, 1 Sep 2023 11:59:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1693569578; x=1725105578; h=message-id:subject:from:to:cc:date:in-reply-to: references:content-transfer-encoding:mime-version; bh=EcX+XWNY1lbIOnDxnptg13CiXFdEXpTNtOUzXeOXjng=; b=Fn2yTnNVfgN9NEFjqTgNphd9wXpV+UaRtO3ywCt3bM/zgQG754xkB2Ms TzqTCjx16Bd4FNH09qAFUi9nLPsOdigTIUwxlFn4CnIMxWRISlZ79qklN GfsjOBf4vbtt9W+l7deLsj18E5ax94tPlwPOZIMDcfnA+B4ai6T3xpxi4 mUPCkMly3y3CG3RZCFuYE3qO3DdWZSAuxKzS+MehOs7MQnZOJEJbL8CXp yoJgCNjwxOpMIQshD/R73B3iTSrjFgJ9DHarJnb/IpOOz0atUXF0aHQG+ OqcQ8NArBqiUrwnod39BsMtAX2nVkv5SPnPqp6LjKhkQUXR54wN8HkiwD w==; X-IronPort-AV: E=McAfee;i="6600,9927,10819"; a="379993620" X-IronPort-AV: E=Sophos;i="6.02,219,1688454000"; d="scan'208";a="379993620" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Sep 2023 04:59:28 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10819"; a="913665748" X-IronPort-AV: E=Sophos;i="6.02,219,1688454000"; d="scan'208";a="913665748" Received: from pheino-mobl1.ger.corp.intel.com (HELO [10.249.254.144]) ([10.249.254.144]) by orsmga005-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Sep 2023 04:59:26 -0700 Message-ID: <771ac9692fb0d33e55aa4eb92c4a1e01f4e48d60.camel@linux.intel.com> From: Thomas =?ISO-8859-1?Q?Hellstr=F6m?= To: Matthew Brost Date: Fri, 01 Sep 2023 13:59:24 +0200 In-Reply-To: References: <20230831092937.2197-1-thomas.hellstrom@linux.intel.com> <20230831092937.2197-2-thomas.hellstrom@linux.intel.com> <4e7045b07c2b09f011ed8f1bc0009296a850f7e0.camel@linux.intel.com> Organization: Intel Sweden AB, Registration Number: 556189-6027 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 User-Agent: Evolution 3.46.4 (3.46.4-1.fc37) MIME-Version: 1.0 Subject: Re: [Intel-xe] [PATCH v3 1/6] drm/xe/bo: Simplify xe_bo_lock() X-BeenThere: intel-xe@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel Xe graphics driver List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: intel-xe@lists.freedesktop.org Errors-To: intel-xe-bounces@lists.freedesktop.org Sender: "Intel-xe" T24gVGh1LCAyMDIzLTA4LTMxIGF0IDE4OjMzICswMDAwLCBNYXR0aGV3IEJyb3N0IHdyb3RlOgo+ IE9uIFRodSwgQXVnIDMxLCAyMDIzIGF0IDA3OjQ4OjAxUE0gKzAyMDAsIFRob21hcyBIZWxsc3Ry w7ZtIHdyb3RlOgo+ID4gCj4gPiBPbiA4LzMxLzIzIDE5OjAxLCBNYXR0aGV3IEJyb3N0IHdyb3Rl Ogo+ID4gPiBPbiBUaHUsIEF1ZyAzMSwgMjAyMyBhdCAwNDo0Mzo1N1BNICswMjAwLCBUaG9tYXMg SGVsbHN0csO2bSB3cm90ZToKPiA+ID4gPiBPbiBUaHUsIDIwMjMtMDgtMzEgYXQgMTE6MjkgKzAy MDAsIFRob21hcyBIZWxsc3Ryw7ZtIHdyb3RlOgo+ID4gPiA+ID4geGVfYm9fbG9jaygpIHdhcywg YWx0aG91Z2ggaXQgb25seSBncmFiYmVkIGEgc2luZ2xlIGxvY2ssCj4gPiA+ID4gPiB1bm5lY2Vz c2FyaWx5Cj4gPiA+ID4gPiB1c2luZyB0dG1fZXVfcmVzZXJ2ZV9idWZmZXJzKCkuIFNpbXBsaWZ5 IGFuZCBkb2N1bWVudCB0aGUKPiA+ID4gPiA+IGludGVyZmFjZS4KPiA+ID4gPiA+IAo+ID4gPiA+ ID4gdjI6Cj4gPiA+ID4gPiAtIFVwZGF0ZSBhbHNvIHRoZSB4ZV9kaXNwbGF5IHN1YnN5c2VtLgo+ ID4gPiA+ID4gCj4gPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgSGVsbHN0csO2bQo+ID4g PiA+ID4gPHRob21hcy5oZWxsc3Ryb21AbGludXguaW50ZWwuY29tPgo+ID4gPiA+ID4gLS0tCj4g PiA+ID4gPiDCoMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMg fMKgIDUgKy0tCj4gPiA+ID4gPiDCoMKgZHJpdmVycy9ncHUvZHJtL3hlL3Rlc3RzL3hlX2JvLmPC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAyNCArKysrKy0tLS0KPiA+ID4gPiA+IC0tCj4gPiA+ ID4gPiDCoMKgZHJpdmVycy9ncHUvZHJtL3hlL3hlX2JvLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgfCA0Mgo+ID4gPiA+ID4gKysrKysrKysrKysrLS0tLS0tCj4gPiA+ID4g PiAtLQo+ID4gPiA+ID4gwqDCoGRyaXZlcnMvZ3B1L2RybS94ZS94ZV9iby5owqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCA1ICstLQo+ID4gPiA+ID4gwqDCoGRyaXZlcnMv Z3B1L2RybS94ZS94ZV9ib19ldmljdC5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMTkgKysr Ky0tLS0tCj4gPiA+ID4gPiDCoMKgZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d0X3BhZ2VmYXVsdC5j wqDCoMKgwqDCoMKgwqDCoCB8IDQxICsrKysrKystLQo+ID4gPiA+ID4gLS0tLS0tLS0tCj4gPiA+ ID4gPiAtCj4gPiA+ID4gPiDCoMKgZHJpdmVycy9ncHUvZHJtL3hlL3hlX3ZtLmPCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAyMiArKysrKy0tLS0KPiA+ID4gPiA+IC0KPiA+ ID4gPiA+IMKgwqBkcml2ZXJzL2dwdS9kcm0veGUveGVfdm1fbWFkdmlzZS5jwqDCoMKgwqDCoMKg wqDCoMKgwqAgfCAzMCArKysrKystLS0KPiA+ID4gPiA+IC0tLS0tCj4gPiA+ID4gPiDCoMKgOCBm aWxlcyBjaGFuZ2VkLCA4NSBpbnNlcnRpb25zKCspLCAxMDMgZGVsZXRpb25zKC0pCj4gPiA+ID4g PiAKPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2lu dGVsX2Rpc3BsYXkuYwo+ID4gPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2lu dGVsX2Rpc3BsYXkuYwo+ID4gPiA+ID4gaW5kZXggZDZiNDgxZjMzYjQ1Li45ZGY4MDgxZjc4ZDkg MTAwNjQ0Cj4gPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVs X2Rpc3BsYXkuYwo+ID4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9p bnRlbF9kaXNwbGF5LmMKPiA+ID4gPiA+IEBAIC02OTM4LDExICs2OTM4LDEwIEBAIHN0YXRpYyBp bnQKPiA+ID4gPiA+IGk5MTVfZ2VtX29iamVjdF9yZWFkX2Zyb21fcGFnZShzdHJ1Y3QgeGVfYm8g KmJvLAo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgdm9pZCAqdmlydHVhbDsKPiA+ID4gPiA+ IMKgwqDCoMKgwqDCoMKgwqDCoGJvb2wgaXNfaW9tZW07Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDC oMKgwqBpbnQgcmV0Owo+ID4gPiA+ID4gLcKgwqDCoMKgwqDCoMKgc3RydWN0IHd3X2FjcXVpcmVf Y3R4IHd3Owo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgWEVfV0FSTl9PTihzaXplICE9IDgp Owo+ID4gPiA+ID4gLcKgwqDCoMKgwqDCoMKgcmV0ID0geGVfYm9fbG9jayhibywgJnd3LCAwLCB0 cnVlKTsKPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoHJldCA9IHhlX2JvX2xvY2soYm8sIHRydWUp Owo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHJldCkKPiA+ID4gPiA+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+ID4gPiA+ID4gQEAgLTY5NTks NyArNjk1OCw3IEBAIHN0YXRpYyBpbnQKPiA+ID4gPiA+IGk5MTVfZ2VtX29iamVjdF9yZWFkX2Zy b21fcGFnZShzdHJ1Y3QgeGVfYm8gKmJvLAo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgdHRt X2JvX2t1bm1hcCgmbWFwKTsKPiA+ID4gPiA+IMKgwqBvdXRfdW5sb2NrOgo+ID4gPiA+ID4gLcKg wqDCoMKgwqDCoMKgeGVfYm9fdW5sb2NrKGJvLCAmd3cpOwo+ID4gPiA+ID4gK8KgwqDCoMKgwqDC oMKgeGVfYm9fdW5sb2NrKGJvKTsKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiBy ZXQ7Cj4gPiA+ID4gPiDCoMKgfQo+ID4gPiA+ID4gwqDCoCNlbmRpZgo+ID4gPiA+ID4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94ZS90ZXN0cy94ZV9iby5jCj4gPiA+ID4gPiBiL2RyaXZl cnMvZ3B1L2RybS94ZS90ZXN0cy94ZV9iby5jCj4gPiA+ID4gPiBpbmRleCBiMzJhOTA2OGQ3NmMu LjMxZmQ0ZjliMmQ1YiAxMDA2NDQKPiA+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS94ZS90 ZXN0cy94ZV9iby5jCj4gPiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVf Ym8uYwo+ID4gPiA+ID4gQEAgLTIwMyw5ICsyMDMsOSBAQCBzdGF0aWMgaW50IGV2aWN0X3Rlc3Rf cnVuX2d0KHN0cnVjdAo+ID4gPiA+ID4geGVfZGV2aWNlCj4gPiA+ID4gPiAqeGUsIHN0cnVjdCB4 ZV9ndCAqZ3QsIHN0cnVjdCBrdW5pCj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdvdG8gY2xlYW51cF9ibzsKPiA+ID4gPiA+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gPiA+ID4gPiAtwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgeGVfYm9fbG9jayhleHRlcm5hbCwgJnd3LCAwLCBmYWxzZSk7Cj4gPiA+ ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgeGVfYm9fbG9jayhleHRlcm5hbCwg ZmFsc2UpOwo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGVyciA9 IHhlX2JvX3Bpbl9leHRlcm5hbChleHRlcm5hbCk7Cj4gPiA+ID4gPiAtwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgeGVfYm9fdW5sb2NrKGV4dGVybmFsLCAmd3cpOwo+ID4gPiA+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHhlX2JvX3VubG9jayhleHRlcm5hbCk7Cj4gPiA+ ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGVycikgewo+ID4gPiA+ ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBLVU5J VF9GQUlMKHRlc3QsICJleHRlcm5hbCBibyBwaW4KPiA+ID4gPiA+IGVycj0lcGVcbiIsCj4gPiA+ ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIEVSUl9QVFIoZXJyKSk7Cj4gPiA+ID4gPiBAQCAtMjY4LDkgKzI2 OCw5IEBAIHN0YXRpYyBpbnQgZXZpY3RfdGVzdF9ydW5fZ3Qoc3RydWN0Cj4gPiA+ID4gPiB4ZV9k ZXZpY2UKPiA+ID4gPiA+ICp4ZSwgc3RydWN0IHhlX2d0ICpndCwgc3RydWN0IGt1bmkKPiA+ID4g PiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEVSUl9QVFIoZXJyKSk7Cj4gPiA+ID4g PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBnb3RvIGNsZWFudXBfYWxsOwo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gPiA+ID4gPiAtwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHhlX2JvX2xvY2soZXh0ZXJuYWwsICZ3 dywgMCwgZmFsc2UpOwo+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqB4ZV9ib19sb2NrKGV4dGVybmFsLCBmYWxzZSk7Cj4gPiA+ID4gPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGVyciA9IHhlX2Jv X3ZhbGlkYXRlKGV4dGVybmFsLCBOVUxMLAo+ID4gPiA+ID4gZmFsc2UpOwo+ID4gPiA+ID4gLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4ZV9ib191bmxvY2so ZXh0ZXJuYWwsICZ3dyk7Cj4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoHhlX2JvX3VubG9jayhleHRlcm5hbCk7Cj4gPiA+ID4gPiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChlcnIpIHsKPiA+ ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoEtVTklUX0ZBSUwodGVzdCwgImV4dGVybmFsCj4gPiA+ID4gPiBibyB2 YWxpZAo+ID4gPiA+ID4gZXJyPSVwZVxuIiwKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIEVSUl9QVFIoZXJyKSk7Cj4gPiA+ID4gPiBAQCAtMjc4LDI4ICsyNzgsMjggQEAg c3RhdGljIGludCBldmljdF90ZXN0X3J1bl9ndChzdHJ1Y3QKPiA+ID4gPiA+IHhlX2RldmljZQo+ ID4gPiA+ID4gKnhlLCBzdHJ1Y3QgeGVfZ3QgKmd0LCBzdHJ1Y3Qga3VuaQo+ID4gPiA+ID4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gPiA+ID4g PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ID4gPiA+ID4gLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoHhlX2JvX2xvY2soZXh0ZXJuYWwsICZ3dywgMCwgZmFsc2Up Owo+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHhlX2JvX2xvY2soZXh0 ZXJuYWwsIGZhbHNlKTsKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqB4ZV9ib191bnBpbl9leHRlcm5hbChleHRlcm5hbCk7Cj4gPiA+ID4gPiAtwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgeGVfYm9fdW5sb2NrKGV4dGVybmFsLCAmd3cpOwo+ID4gPiA+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHhlX2JvX3VubG9jayhleHRlcm5hbCk7Cj4g PiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgeGVfYm9fcHV0KGV4dGVy bmFsKTsKPiA+ID4gPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4ZV9ib19sb2Nr KGJvLCAmd3csIDAsIGZhbHNlKTsKPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqB4ZV9ib19sb2NrKGJvLCBmYWxzZSk7Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgX194ZV9ib191bnNldF9idWxrX21vdmUoYm8pOwo+ID4gPiA+ID4gLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHhlX2JvX3VubG9jayhibywgJnd3KTsKPiA+ID4g PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4ZV9ib191bmxvY2soYm8pOwo+ID4g PiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHhlX2JvX3B1dChibyk7Cj4g PiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY29udGludWU7Cj4gPiA+ ID4gPiDCoMKgY2xlYW51cF9hbGw6Cj4gPiA+ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgeGVfYm9fbG9jayhleHRlcm5hbCwgJnd3LCAwLCBmYWxzZSk7Cj4gPiA+ID4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgeGVfYm9fbG9jayhleHRlcm5hbCwgZmFsc2UpOwo+ ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHhlX2JvX3VucGluX2V4 dGVybmFsKGV4dGVybmFsKTsKPiA+ID4gPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqB4ZV9ib191bmxvY2soZXh0ZXJuYWwsICZ3dyk7Cj4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgeGVfYm9fdW5sb2NrKGV4dGVybmFsKTsKPiA+ID4gPiA+IMKgwqBjbGVh bnVwX2V4dGVybmFsOgo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHhlX2JvX3B1dChleHRlcm5hbCk7Cj4gPiA+ID4gPiDCoMKgY2xlYW51cF9ibzoKPiA+ID4gPiA+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4ZV9ib19sb2NrKGJvLCAmd3csIDAsIGZh bHNlKTsKPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4ZV9ib19sb2Nr KGJvLCBmYWxzZSk7Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg X194ZV9ib191bnNldF9idWxrX21vdmUoYm8pOwo+ID4gPiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHhlX2JvX3VubG9jayhibywgJnd3KTsKPiA+ID4gPiA+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqB4ZV9ib191bmxvY2soYm8pOwo+ID4gPiA+ID4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHhlX2JvX3B1dChibyk7Cj4gPiA+ID4gPiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDC oMKgwqB9Cj4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2JvLmMK PiA+ID4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2JvLmMKPiA+ID4gPiA+IGluZGV4IDZh OGE0MWRhZmU4OC4uOWQ3MGQxMmU3OWIxIDEwMDY0NAo+ID4gPiA+ID4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL3hlL3hlX2JvLmMKPiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9i by5jCj4gPiA+ID4gPiBAQCAtMTA3OSwxMyArMTA3OSwxMSBAQCBzdGF0aWMgdm9pZAo+ID4gPiA+ ID4geGVfZ2VtX29iamVjdF9jbG9zZShzdHJ1Y3QKPiA+ID4gPiA+IGRybV9nZW1fb2JqZWN0ICpv YmosCj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgeGVfYm8gKmJvID0gZ2VtX3Rv X3hlX2JvKG9iaik7Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoYm8tPnZtICYmICF4 ZV92bV9pbl9mYXVsdF9tb2RlKGJvLT52bSkpIHsKPiA+ID4gPiA+IC3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBzdHJ1Y3Qgd3dfYWNxdWlyZV9jdHggd3c7Cj4gPiA+ID4gPiAtCj4gPiA+ ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgWEVfV0FSTl9PTigheGVfYm9f aXNfdXNlcihibykpOwo+ID4gPiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHhl X2JvX2xvY2soYm8sICZ3dywgMCwgZmFsc2UpOwo+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHhlX2JvX2xvY2soYm8sIGZhbHNlKTsKPiA+ID4gPiA+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0dG1fYm9fc2V0X2J1bGtfbW92ZSgmYm8tPnR0bSwgTlVM TCk7Cj4gPiA+ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgeGVfYm9fdW5sb2Nr KGJvLCAmd3cpOwo+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHhlX2Jv X3VubG9jayhibyk7Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gPiA+ID4gPiDCoMKg fQo+ID4gPiA+ID4gQEAgLTE4NjMsMjYgKzE4NjEsMzYgQEAgaW50IHhlX2dlbV9tbWFwX29mZnNl dF9pb2N0bChzdHJ1Y3QKPiA+ID4gPiA+IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiA+ ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+ID4gPiA+ID4gwqDCoH0KPiA+ID4g PiA+IC1pbnQgeGVfYm9fbG9jayhzdHJ1Y3QgeGVfYm8gKmJvLCBzdHJ1Y3Qgd3dfYWNxdWlyZV9j dHggKnd3LAo+ID4gPiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGludCBudW1fcmVz diwgYm9vbCBpbnRyKQo+ID4gPiA+ID4gKy8qKgo+ID4gPiA+ID4gKyAqIHhlX2JvX2xvY2soKSAt IExvY2sgdGhlIGJ1ZmZlciBvYmplY3QncyBkbWFfcmVzdiBvYmplY3QKPiA+ID4gPiA+ICsgKiBA Ym86IFRoZSBzdHJ1Y3QgeGVfYm8gd2hvc2UgbG9jayBpcyB0byBiZSB0YWtlbgo+ID4gPiA+ID4g KyAqIEBpbnRyOiBXaGV0aGVyIHRvIHBlcmZvcm0gYW55IHdhaXQgaW50ZXJydXB0aWJsZQo+ID4g PiA+ID4gKyAqCj4gPiA+ID4gPiArICogTG9ja3MgdGhlIGJ1ZmZlciBvYmplY3QncyBkbWFfcmVz diBvYmplY3QuIElmIHRoZSBidWZmZXIKPiA+ID4gPiA+IG9iamVjdAo+ID4gPiA+ID4gaXMKPiA+ ID4gPiA+ICsgKiBwb2ludGluZyB0byBhIHNoYXJlZCBkbWFfcmVzdiBvYmplY3QsIHRoYXQgc2hh cmVkIGxvY2sgaXMKPiA+ID4gPiA+IGxvY2tlZC4KPiA+ID4gPiA+ICsgKgo+ID4gPiA+ID4gKyAq IFJldHVybjogMCBvbiBzdWNjZXNzLCAtRUlOVFIgaWYgQGludHIgaXMgdHJ1ZSBhbmQgdGhlCj4g PiA+ID4gPiB3YWl0IGZvciBhCj4gPiA+ID4gPiArICogY29udGVuZGVkIGxvY2sgd2FzIGludGVy cnVwdGVkLgo+ID4gPiBQcm9iYWJseSBzaG91bGQgYWRkIGluIGtlcm5lbCBkb2MgdGhhdCBpdCBp cyBvayBmb3IgdGhlIGNhbGwgdG8KPiA+ID4gbm90Cj4gPiA+IGNoZWNrIHRoZSByZXR1cm4gdmFs dWUgaWYgaW50ciA9PSBmYWxzZSAmJiBudW1iZXIgZmVuY2UKPiA+ID4gcmVzZXJ2YXRpb24KPiA+ ID4gc2xvdHMgPT0gMC4gVGhlIGV4aXN0aW5nIGNvZGUgSSB0aGluayBmb2xsb3dzIHRoaXMgcGF0 dGVybiBidXQgaXQKPiA+ID4gaXMgbm90Cj4gPiA+IGRvY3VtZW50ZWQuCj4gPiBTdXJlLCBhbHRo b3VnaCBzZWUgYmVsb3cgYWJvdXQgdGhlIGZlbmNlIHNsb3RzLgo+ID4gPiA+ID4gKyAqLwo+ID4g PiA+ID4gK2ludCB4ZV9ib19sb2NrKHN0cnVjdCB4ZV9ibyAqYm8sIGJvb2wgaW50cikKPiA+ID4g PiA+IMKgwqB7Cj4gPiA+ID4gPiAtwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdHRtX3ZhbGlkYXRlX2J1 ZmZlciB0dl9ibzsKPiA+ID4gPiA+IC3CoMKgwqDCoMKgwqDCoExJU1RfSEVBRChvYmpzKTsKPiA+ ID4gPiA+IC3CoMKgwqDCoMKgwqDCoExJU1RfSEVBRChkdXBzKTsKPiA+ID4gPiA+ICvCoMKgwqDC oMKgwqDCoGlmIChpbnRyKQo+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHJldHVybiBkbWFfcmVzdl9sb2NrX2ludGVycnVwdGlibGUoYm8tCj4gPiA+ID4gPiA+dHRtLmJh c2UucmVzdiwKPiA+ID4gPiA+IE5VTEwpOwo+ID4gPiA+ID4gLcKgwqDCoMKgwqDCoMKgWEVfV0FS Tl9PTighd3cpOwo+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgZG1hX3Jlc3ZfbG9jayhiby0+dHRt LmJhc2UucmVzdiwgTlVMTCk7Cj4gPiA+ID4gPiAtwqDCoMKgwqDCoMKgwqB0dl9iby5udW1fc2hh cmVkID0gbnVtX3Jlc3Y7Cj4gPiA+ID4gPiAtwqDCoMKgwqDCoMKgwqB0dl9iby5ibyA9ICZiby0+ dHRtOwo+ID4gPiA+ID4gLcKgwqDCoMKgwqDCoMKgbGlzdF9hZGRfdGFpbCgmdHZfYm8uaGVhZCwg Jm9ianMpOwo+ID4gPiA+ID4gLQo+ID4gPiA+ID4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIHR0bV9l dV9yZXNlcnZlX2J1ZmZlcnMod3csICZvYmpzLCBpbnRyLAo+ID4gPiA+ID4gJmR1cHMpOwo+ID4g PiA+ID4gK8KgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gPiA+ID4gPiDCoMKgfQo+ID4gPiA+ID4g LXZvaWQgeGVfYm9fdW5sb2NrKHN0cnVjdCB4ZV9ibyAqYm8sIHN0cnVjdCB3d19hY3F1aXJlX2N0 eAo+ID4gPiA+ID4gKnd3KQo+ID4gPiA+ID4gKy8qKgo+ID4gPiA+ID4gKyAqIHhlX2JvX3VubG9j aygpIC0gVW5sb2NrIHRoZSBidWZmZXIgb2JqZWN0J3MgZG1hX3Jlc3YKPiA+ID4gPiA+IG9iamVj dAo+ID4gPiA+ID4gKyAqIEBibzogVGhlIHN0cnVjdCB4ZV9ibyB3aG9zZSBsb2NrIGlzIHRvIGJl IHJlbGVhc2VkLgo+ID4gPiA+ID4gKyAqCj4gPiA+ID4gPiArICogVW5sb2NrIGEgYnVmZmVyIG9i amVjdCBsb2NrIHRoYXQgd2FzIGxvY2tlZCBieQo+ID4gPiA+ID4geGVfYm9fbG9jaygpLgo+ID4g PiA+ID4gKyAqLwo+ID4gPiA+ID4gK3ZvaWQgeGVfYm9fdW5sb2NrKHN0cnVjdCB4ZV9ibyAqYm8p Cj4gPiA+ID4gPiDCoMKgewo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgZG1hX3Jlc3ZfdW5s b2NrKGJvLT50dG0uYmFzZS5yZXN2KTsKPiA+ID4gPiA+IC3CoMKgwqDCoMKgwqDCoHd3X2FjcXVp cmVfZmluaSh3dyk7Cj4gPiA+ID4gPiDCoMKgfQo+ID4gPiA+ID4gwqDCoC8qKgo+ID4gPiA+ID4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9iby5oCj4gPiA+ID4gPiBiL2RyaXZl cnMvZ3B1L2RybS94ZS94ZV9iby5oCj4gPiA+ID4gPiBpbmRleCAwODIzZGRhMGYzMWIuLmE3Yjll NzA4NDIyNSAxMDA2NDQKPiA+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9iby5o Cj4gPiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfYm8uaAo+ID4gPiA+ID4gQEAg LTE0OSwxMCArMTQ5LDkgQEAgc3RhdGljIGlubGluZSB2b2lkCj4gPiA+ID4gPiB4ZV9ib19hc3Nl cnRfaGVsZChzdHJ1Y3QKPiA+ID4gPiA+IHhlX2JvICpibykKPiA+ID4gPiA+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkbWFfcmVzdl9hc3NlcnRfaGVsZCgoYm8pLT50dG0uYmFz ZS5yZXN2KTsKPiA+ID4gPiA+IMKgwqB9Cj4gPiA+ID4gPiAtaW50IHhlX2JvX2xvY2soc3RydWN0 IHhlX2JvICpibywgc3RydWN0IHd3X2FjcXVpcmVfY3R4ICp3dywKPiA+ID4gPiA+IC3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBpbnQgbnVtX3Jlc3YsIGJvb2wgaW50cik7Cj4gPiA+ID4gPiAr aW50IHhlX2JvX2xvY2soc3RydWN0IHhlX2JvICpibywgYm9vbCBpbnRyKTsKPiA+ID4gPiA+IC12 b2lkIHhlX2JvX3VubG9jayhzdHJ1Y3QgeGVfYm8gKmJvLCBzdHJ1Y3Qgd3dfYWNxdWlyZV9jdHgK PiA+ID4gPiA+ICp3dyk7Cj4gPiA+ID4gPiArdm9pZCB4ZV9ib191bmxvY2soc3RydWN0IHhlX2Jv ICpibyk7Cj4gPiA+ID4gPiDCoMKgc3RhdGljIGlubGluZSB2b2lkIHhlX2JvX3VubG9ja192bV9o ZWxkKHN0cnVjdCB4ZV9ibyAqYm8pCj4gPiA+ID4gPiDCoMKgewo+ID4gPiA+ID4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9ib19ldmljdC5jCj4gPiA+ID4gPiBiL2RyaXZlcnMv Z3B1L2RybS94ZS94ZV9ib19ldmljdC5jCj4gPiA+ID4gPiBpbmRleCAwZDVjM2EyMDhhYjQuLjQ5 YzA1ZGRlYTE2NCAxMDA2NDQKPiA+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9i b19ldmljdC5jCj4gPiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfYm9fZXZpY3Qu Ywo+ID4gPiA+ID4gQEAgLTI3LDcgKzI3LDYgQEAKPiA+ID4gPiA+IMKgwqBpbnQgeGVfYm9fZXZp Y3RfYWxsKHN0cnVjdCB4ZV9kZXZpY2UgKnhlKQo+ID4gPiA+ID4gwqDCoHsKPiA+ID4gPiA+IMKg wqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB0dG1fZGV2aWNlICpiZGV2ID0gJnhlLT50dG07Cj4gPiA+ ID4gPiAtwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qgd3dfYWNxdWlyZV9jdHggd3c7Cj4gPiA+ID4gPiDC oMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgeGVfYm8gKmJvOwo+ID4gPiA+ID4gwqDCoMKgwqDCoMKg wqDCoMKgc3RydWN0IHhlX3RpbGUgKnRpbGU7Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqBz dHJ1Y3QgbGlzdF9oZWFkIHN0aWxsX2luX2xpc3Q7Cj4gPiA+ID4gPiBAQCAtNjIsOSArNjEsOSBA QCBpbnQgeGVfYm9fZXZpY3RfYWxsKHN0cnVjdCB4ZV9kZXZpY2UgKnhlKQo+ID4gPiA+ID4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGxpc3RfbW92ZV90YWlsKCZiby0+cGlubmVk X2xpbmssCj4gPiA+ID4gPiAmc3RpbGxfaW5fbGlzdCk7Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgc3Bpbl91bmxvY2soJnhlLT5waW5uZWQubG9jayk7Cj4gPiA+ ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgeGVfYm9fbG9jayhibywgJnd3LCAw LCBmYWxzZSk7Cj4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgeGVfYm9f bG9jayhibywgZmFsc2UpOwo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoHJldCA9IHhlX2JvX2V2aWN0X3Bpbm5lZChibyk7Cj4gPiA+ID4gPiAtwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgeGVfYm9fdW5sb2NrKGJvLCAmd3cpOwo+ID4gPiA+ID4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHhlX2JvX3VubG9jayhibyk7Cj4gPiA+ID4gPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgeGVfYm9fcHV0KGJvKTsKPiA+ID4gPiA+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAocmV0KSB7Cj4gPiA+ID4gPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNwaW5fbG9jaygm eGUtPnBpbm5lZC5sb2NrKTsKPiA+ID4gPiA+IEBAIC05Niw5ICs5NSw5IEBAIGludCB4ZV9ib19l dmljdF9hbGwoc3RydWN0IHhlX2RldmljZSAqeGUpCj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgbGlzdF9tb3ZlX3RhaWwoJmJvLT5waW5uZWRfbGluaywgJnhlLQo+ ID4gPiA+ID4gPiBwaW5uZWQuZXZpY3RlZCk7Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgc3Bpbl91bmxvY2soJnhlLT5waW5uZWQubG9jayk7Cj4gPiA+ID4gPiAt wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgeGVfYm9fbG9jayhibywgJnd3LCAwLCBmYWxz ZSk7Cj4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgeGVfYm9fbG9jayhi bywgZmFsc2UpOwo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJl dCA9IHhlX2JvX2V2aWN0X3Bpbm5lZChibyk7Cj4gPiA+ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgeGVfYm9fdW5sb2NrKGJvLCAmd3cpOwo+ID4gPiA+ID4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHhlX2JvX3VubG9jayhibyk7Cj4gPiA+ID4gPiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgeGVfYm9fcHV0KGJvKTsKPiA+ID4gPiA+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAocmV0KQo+ID4gPiA+ID4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+ID4gPiA+ ID4gQEAgLTEyMyw3ICsxMjIsNiBAQCBpbnQgeGVfYm9fZXZpY3RfYWxsKHN0cnVjdCB4ZV9kZXZp Y2UgKnhlKQo+ID4gPiA+ID4gwqDCoCAqLwo+ID4gPiA+ID4gwqDCoGludCB4ZV9ib19yZXN0b3Jl X2tlcm5lbChzdHJ1Y3QgeGVfZGV2aWNlICp4ZSkKPiA+ID4gPiA+IMKgwqB7Cj4gPiA+ID4gPiAt wqDCoMKgwqDCoMKgwqBzdHJ1Y3Qgd3dfYWNxdWlyZV9jdHggd3c7Cj4gPiA+ID4gPiDCoMKgwqDC oMKgwqDCoMKgwqBzdHJ1Y3QgeGVfYm8gKmJvOwo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKg aW50IHJldDsKPiA+ID4gPiA+IEBAIC0xNDAsOSArMTM4LDkgQEAgaW50IHhlX2JvX3Jlc3RvcmVf a2VybmVsKHN0cnVjdCB4ZV9kZXZpY2UKPiA+ID4gPiA+ICp4ZSkKPiA+ID4gPiA+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBsaXN0X21vdmVfdGFpbCgmYm8tPnBpbm5lZF9saW5r LCAmeGUtCj4gPiA+ID4gPiA+IHBpbm5lZC5rZXJuZWxfYm9fcHJlc2VudCk7Cj4gPiA+ID4gPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3Bpbl91bmxvY2soJnhlLT5waW5uZWQu bG9jayk7Cj4gPiA+ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgeGVfYm9fbG9j ayhibywgJnd3LCAwLCBmYWxzZSk7Cj4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgeGVfYm9fbG9jayhibywgZmFsc2UpOwo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoHJldCA9IHhlX2JvX3Jlc3RvcmVfcGlubmVkKGJvKTsKPiA+ID4gPiA+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4ZV9ib191bmxvY2soYm8sICZ3dyk7Cj4g PiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgeGVfYm9fdW5sb2NrKGJvKTsK PiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAocmV0KSB7Cj4g PiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHhlX2JvX3B1dChibyk7Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gPiA+ID4gPiBAQCAtMTg0LDcgKzE4Miw2 IEBAIGludCB4ZV9ib19yZXN0b3JlX2tlcm5lbChzdHJ1Y3QgeGVfZGV2aWNlCj4gPiA+ID4gPiAq eGUpCj4gPiA+ID4gPiDCoMKgICovCj4gPiA+ID4gPiDCoMKgaW50IHhlX2JvX3Jlc3RvcmVfdXNl cihzdHJ1Y3QgeGVfZGV2aWNlICp4ZSkKPiA+ID4gPiA+IMKgwqB7Cj4gPiA+ID4gPiAtwqDCoMKg wqDCoMKgwqBzdHJ1Y3Qgd3dfYWNxdWlyZV9jdHggd3c7Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDC oMKgwqBzdHJ1Y3QgeGVfYm8gKmJvOwo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgc3RydWN0 IHhlX3RpbGUgKnRpbGU7Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbGlzdF9o ZWFkIHN0aWxsX2luX2xpc3Q7Cj4gPiA+ID4gPiBAQCAtMjA2LDkgKzIwMyw5IEBAIGludCB4ZV9i b19yZXN0b3JlX3VzZXIoc3RydWN0IHhlX2RldmljZQo+ID4gPiA+ID4gKnhlKQo+ID4gPiA+ID4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHhlX2JvX2dldChibyk7Cj4gPiA+ID4g PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3Bpbl91bmxvY2soJnhlLT5waW5u ZWQubG9jayk7Cj4gPiA+ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgeGVfYm9f bG9jayhibywgJnd3LCAwLCBmYWxzZSk7Cj4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgeGVfYm9fbG9jayhibywgZmFsc2UpOwo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHJldCA9IHhlX2JvX3Jlc3RvcmVfcGlubmVkKGJvKTsKPiA+ID4g PiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4ZV9ib191bmxvY2soYm8sICZ3dyk7 Cj4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgeGVfYm9fdW5sb2NrKGJv KTsKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4ZV9ib19wdXQo Ym8pOwo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChyZXQp IHsKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgc3Bpbl9sb2NrKCZ4ZS0+cGlubmVkLmxvY2spOwo+ID4gPiA+ID4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndF9wYWdlZmF1bHQuYwo+ID4gPiA+ID4gYi9kcml2ZXJz L2dwdS9kcm0veGUveGVfZ3RfcGFnZWZhdWx0LmMKPiA+ID4gPiA+IGluZGV4IGI2Zjc4MWIzZDlk Ny4uNzNmYzkzODlhNjYzIDEwMDY0NAo+ID4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3hl L3hlX2d0X3BhZ2VmYXVsdC5jCj4gPiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVf Z3RfcGFnZWZhdWx0LmMKPiA+ID4gPiA+IEBAIC0xNzEsMjAgKzE3MSwxOCBAQCBzdGF0aWMgaW50 IGhhbmRsZV9wYWdlZmF1bHQoc3RydWN0Cj4gPiA+ID4gPiB4ZV9ndCAqZ3QsCj4gPiA+ID4gPiBz dHJ1Y3QgcGFnZWZhdWx0ICpwZikKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoC8qIExvY2sg Vk0gYW5kIEJPcyBkbWEtcmVzdiAqLwo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgYm8gPSB4 ZV92bWFfYm8odm1hKTsKPiA+ID4gPiA+IC3CoMKgwqDCoMKgwqDCoGlmIChvbmx5X25lZWRzX2Jv X2xvY2soYm8pKSB7Cj4gPiA+ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyog VGhpcyBwYXRoIGVuc3VyZXMgdGhlIEJPJ3MgTFJVIGlzIHVwZGF0ZWQKPiA+ID4gPiA+ICovCj4g PiA+ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0ID0geGVfYm9fbG9jayhi bywgJnd3LCB4ZS0KPiA+ID4gPiA+ID5pbmZvLnRpbGVfY291bnQsCj4gPiA+ID4gPiBmYWxzZSk7 Cj4gPiA+ID4gPiAtwqDCoMKgwqDCoMKgwqB9IGVsc2Ugewo+ID4gPiA+ID4gK8KgwqDCoMKgwqDC oMKgaWYgKCFvbmx5X25lZWRzX2JvX2xvY2soYm8pKSB7Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgdHZfdm0ubnVtX3NoYXJlZCA9IHhlLT5pbmZvLnRpbGVfY291 bnQ7Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdHZfdm0uYm8g PSB4ZV92bV90dG1fYm8odm0pOwo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGxpc3RfYWRkKCZ0dl92bS5oZWFkLCAmb2Jqcyk7Cj4gPiA+ID4gPiAtwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGJvKSB7Cj4gPiA+ID4gPiAtwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHR2X2JvLmJvID0gJmJvLT50dG07Cj4gPiA+ ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHR2X2Jv Lm51bV9zaGFyZWQgPSB4ZS0KPiA+ID4gPiA+ID5pbmZvLnRpbGVfY291bnQ7Cj4gPiA+ID4gPiAt wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGxpc3RfYWRkKCZ0 dl9iby5oZWFkLCAmb2Jqcyk7Cj4gPiA+ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgfQo+ID4gPiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldCA9IHR0bV9l dV9yZXNlcnZlX2J1ZmZlcnMoJnd3LCAmb2JqcywKPiA+ID4gPiA+IGZhbHNlLAo+ID4gPiA+ID4g JmR1cHMpOwo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgfQo+ID4gPiA+ID4gK8KgwqDCoMKg wqDCoMKgaWYgKGJvKSB7Cj4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg dHZfYm8uYm8gPSAmYm8tPnR0bTsKPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqB0dl9iby5udW1fc2hhcmVkID0geGUtPmluZm8udGlsZV9jb3VudDsKPiA+ID4gPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBsaXN0X2FkZCgmdHZfYm8uaGVhZCwgJm9ianMp Owo+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgfQo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gK8KgwqDC oMKgwqDCoMKgcmV0ID0gdHRtX2V1X3Jlc2VydmVfYnVmZmVycygmd3csICZvYmpzLCBmYWxzZSwK PiA+ID4gPiA+ICZkdXBzKTsKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoGlmIChyZXQpCj4g PiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZ290byB1bmxvY2tfdm07 Cj4gPiA+ID4gPiBAQCAtMjI3LDEwICsyMjUsNyBAQCBzdGF0aWMgaW50IGhhbmRsZV9wYWdlZmF1 bHQoc3RydWN0IHhlX2d0Cj4gPiA+ID4gPiAqZ3QsCj4gPiA+ID4gPiBzdHJ1Y3QgcGFnZWZhdWx0 ICpwZikKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoHZtYS0+dXNtLnRpbGVfaW52YWxpZGF0 ZWQgJj0gfkJJVChndF90b190aWxlKGd0KS0KPiA+ID4gPiA+ID5pZCk7Cj4gPiA+ID4gPiDCoMKg dW5sb2NrX2RtYV9yZXN2Ogo+ID4gPiA+ID4gLcKgwqDCoMKgwqDCoMKgaWYgKG9ubHlfbmVlZHNf Ym9fbG9jayhibykpCj4gPiA+ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgeGVf Ym9fdW5sb2NrKGJvLCAmd3cpOwo+ID4gPiA+ID4gLcKgwqDCoMKgwqDCoMKgZWxzZQo+ID4gPiA+ ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHR0bV9ldV9iYWNrb2ZmX3Jlc2VydmF0 aW9uKCZ3dywgJm9ianMpOwo+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgdHRtX2V1X2JhY2tvZmZf cmVzZXJ2YXRpb24oJnd3LCAmb2Jqcyk7Cj4gPiA+ID4gPiDCoMKgdW5sb2NrX3ZtOgo+ID4gPiA+ ID4gwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCFyZXQpCj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgdm0tPnVzbS5sYXN0X2ZhdWx0X3ZtYSA9IHZtYTsKPiA+ID4gPiA+ IEBAIC01MzQsMjggKzUyOSwyMiBAQCBzdGF0aWMgaW50IGhhbmRsZV9hY2Moc3RydWN0IHhlX2d0 ICpndCwKPiA+ID4gPiA+IHN0cnVjdAo+ID4gPiA+ID4gYWNjICphY2MpCj4gPiA+ID4gPiDCoMKg wqDCoMKgwqDCoMKgwqAvKiBMb2NrIFZNIGFuZCBCT3MgZG1hLXJlc3YgKi8KPiA+ID4gPiA+IMKg wqDCoMKgwqDCoMKgwqDCoGJvID0geGVfdm1hX2JvKHZtYSk7Cj4gPiA+ID4gPiAtwqDCoMKgwqDC oMKgwqBpZiAob25seV9uZWVkc19ib19sb2NrKGJvKSkgewo+ID4gPiA+ID4gLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoC8qIFRoaXMgcGF0aCBlbnN1cmVzIHRoZSBCTydzIExSVSBpcyB1 cGRhdGVkCj4gPiA+ID4gPiAqLwo+ID4gPiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoHJldCA9IHhlX2JvX2xvY2soYm8sICZ3dywgeGUtCj4gPiA+ID4gPiA+aW5mby50aWxlX2Nv dW50LAo+ID4gPiA+ID4gZmFsc2UpOwo+ID4gPiA+ID4gLcKgwqDCoMKgwqDCoMKgfSBlbHNlIHsK PiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoGlmICghb25seV9uZWVkc19ib19sb2NrKGJvKSkgewo+ ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHR2X3ZtLm51bV9zaGFy ZWQgPSB4ZS0+aW5mby50aWxlX2NvdW50Owo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHR2X3ZtLmJvID0geGVfdm1fdHRtX2JvKHZtKTsKPiA+ID4gPiA+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBsaXN0X2FkZCgmdHZfdm0uaGVhZCwgJm9ianMp Owo+ID4gPiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHR2X2JvLmJvID0gJmJv LT50dG07Cj4gPiA+ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdHZfYm8ubnVt X3NoYXJlZCA9IHhlLT5pbmZvLnRpbGVfY291bnQ7Cj4gPiA+ID4gPiAtwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgbGlzdF9hZGQoJnR2X2JvLmhlYWQsICZvYmpzKTsKPiA+ID4gPiA+IC3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXQgPSB0dG1fZXVfcmVzZXJ2ZV9idWZmZXJz KCZ3dywgJm9ianMsCj4gPiA+ID4gPiBmYWxzZSwKPiA+ID4gPiA+ICZkdXBzKTsKPiA+ID4gPiA+ IMKgwqDCoMKgwqDCoMKgwqDCoH0KPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoHR2X2JvLmJvID0g JmJvLT50dG07Cj4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqB0dl9iby5udW1fc2hhcmVkID0geGUt PmluZm8udGlsZV9jb3VudDsKPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoGxpc3RfYWRkKCZ0dl9i by5oZWFkLCAmb2Jqcyk7Cj4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqByZXQgPSB0dG1fZXVfcmVz ZXJ2ZV9idWZmZXJzKCZ3dywgJm9ianMsIGZhbHNlLAo+ID4gPiA+ID4gJmR1cHMpOwo+ID4gPiA+ ID4gwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHJldCkKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBnb3RvIHVubG9ja192bTsKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKg wqDCoC8qIE1pZ3JhdGUgdG8gVlJBTSwgbW92ZSBzaG91bGQgaW52YWxpZGF0ZSB0aGUgVk1BCj4g PiA+ID4gPiBmaXJzdCAqLwo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgcmV0ID0geGVfYm9f bWlncmF0ZShibywgWEVfUExfVlJBTTAgKyB0aWxlLT5pZCk7Cj4gPiA+ID4gPiAtwqDCoMKgwqDC oMKgwqBpZiAob25seV9uZWVkc19ib19sb2NrKGJvKSkKPiA+ID4gPiA+IC3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqB4ZV9ib191bmxvY2soYm8sICZ3dyk7Cj4gPiA+ID4gPiAtwqDCoMKg wqDCoMKgwqBlbHNlCj4gPiA+ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdHRt X2V1X2JhY2tvZmZfcmVzZXJ2YXRpb24oJnd3LCAmb2Jqcyk7Cj4gPiA+ID4gPiArwqDCoMKgwqDC oMKgwqB0dG1fZXVfYmFja29mZl9yZXNlcnZhdGlvbigmd3csICZvYmpzKTsKPiA+ID4gPiA+IMKg wqB1bmxvY2tfdm06Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqB1cF9yZWFkKCZ2bS0+bG9j ayk7Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqB4ZV92bV9wdXQodm0pOwo+ID4gPiA+ID4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV92bS5jCj4gPiA+ID4gPiBiL2RyaXZl cnMvZ3B1L2RybS94ZS94ZV92bS5jCj4gPiA+ID4gPiBpbmRleCA5Y2JmMmY2M2Q2NDEuLjU2Nzlj NDdmNDdjYSAxMDA2NDQKPiA+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV92bS5j Cj4gPiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfdm0uYwo+ID4gPiA+ID4gQEAg LTI2NywxMCArMjY3LDkgQEAgc3RhdGljIHZvaWQgYXJtX3ByZWVtcHRfZmVuY2VzKHN0cnVjdAo+ ID4gPiA+ID4geGVfdm0gKnZtLAo+ID4gPiA+ID4gc3RydWN0IGxpc3RfaGVhZCAqbGlzdCkKPiA+ ID4gPiA+IMKgwqBzdGF0aWMgaW50IGFkZF9wcmVlbXB0X2ZlbmNlcyhzdHJ1Y3QgeGVfdm0gKnZt LCBzdHJ1Y3QKPiA+ID4gPiA+IHhlX2JvICpibykKPiA+ID4gPiA+IMKgwqB7Cj4gPiA+ID4gPiDC oMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgeGVfZXhlY19xdWV1ZSAqcTsKPiA+ID4gPiA+IC3CoMKg wqDCoMKgwqDCoHN0cnVjdCB3d19hY3F1aXJlX2N0eCB3dzsKPiA+ID4gPiA+IMKgwqDCoMKgwqDC oMKgwqDCoGludCBlcnI7Cj4gPiA+ID4gPiAtwqDCoMKgwqDCoMKgwqBlcnIgPSB4ZV9ib19sb2Nr KGJvLCAmd3csIHZtLQo+ID4gPiA+ID4gPnByZWVtcHQubnVtX2V4ZWNfcXVldWVzLCB0cnVlKTsK PiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoGVyciA9IHhlX2JvX2xvY2soYm8sIHRydWUpOwo+ID4g PiA+IExvb2tzIGxpa2UgdGhlIGZlbmNlIHNsb3QgcmVzZXJ2YXRpb24gZ290IGxvc3QgaW4gdGhl IHJlYmFzZQo+ID4gPiA+IGhlcmUuIFdpbGwKPiA+ID4gPiBmaXggaW4gbmV4dCByZXZpc2lvbi4K PiA+ID4gPiAKPiA+ID4gWWVwLCBwbGVhc2UgYWRkIHRoYXQgYmFjayBpbi4KPiA+IAo+ID4gVG8g YmUgY2xlYXIsIHRoYXQgd2FzIGFuIG9wZW4tY29kZWQgZmVuY2UgcmVzZXJ2YXRpb24sIGFuZCB0 aGlzIGlzCj4gPiB0aGUgb25seQo+ID4gc3BvdCB3aGVyZSBpdCdzIG5lZWRlZC4gT3RoZXJ3aXNl IGlmIGEgZmVuY2UgcmVzZXJ2YXRpb24gaXMgaW5kZWVkCj4gPiBuZWVkZWQsCj4gPiB0aGUgSSB0 aGluayB4ZV9ib19sb2NrKCkgaXMgbm90IHRoZSBjb3JyZWN0IGludGVyZmFjZSwgYW5kIGEKPiA+ IGRybV9leGVjCj4gPiB2YXJpYW50IHNob3VsZCBiZSB1c2VkIGluc3RlYWQuCj4gPiAKPiAKPiBU aGF0IHdvcmtzIChkb24ndCBoYXZlIGZlbmNlIHNsb3QgcmVzZXJ2YXRpb24gYXJnIHhlX2JvX2xv Y2sgaW4pLgo+IAo+ID4gSWRlYWxseSwgd2UnZCByZXF1aXJlIGFuIChpbml0aWFsbHkgdW51c2Vk KSBkcm1fZXhlYyAqIHBhcmFtZXRlciB0bwo+ID4geGVfYm9fdmFsaWRhdGUsIGFuZCB0cmFjayBi YWNrd2FyZHMgc28gYWxsIGNhbGxlcnMgaW5kZWVkIHVzZSBhCj4gPiBkcm1fZXhlYwo+ID4gdmFy aWFudCBmb3IgdGhlaXIgbG9ja2luZy4KPiA+IAo+IAo+IENvbmZ1c2VkIGJ5IHRoaXMgY29tbWVu dCBhcyBJIGRvbid0IHNlZSBob3cgeGVfYm9fdmFsaWRhdGUgaXMKPiByZWxldmFudAo+IGhlcmUg YnV0IGRvbid0IGRpc2FncmVlIGluIGdlbmVyYWwuCj4gCj4gTWF0dAoKUGFydCBvZiB0aGlzIGV4 ZXJjaXNlIGlzIHRvIG1ha2Ugc3VyZSB3ZSBoYXZlIGFuIGFjdGl2ZSBhbmQgbG9ja2luZwpkcm1f ZXhlYyBvYmplY3QgYXZhaWxhYmxlIHdoZW4gY2FsbGluZyB4ZV9ib192YWxpZGF0ZSgpLCBzbyB0 aGF0IGFueQpuZWVkZWQgZXZpY3Rpb24gbWF5IGluIHRoZSBmdXR1cmUgdXNlIGl0IGZvciBzbGVl cGluZyBkbWFfcmVzdiBsb2NrcwppbnN0ZWFkIG9mIHRyeWxvY2tzLgoKL1Rob21hcwoKCgo+IAo+ ID4gL1Rob21hcwo+ID4gCj4gPiAKPiA+ID4gCj4gPiA+IE1hdHQKPiA+ID4gCj4gPiA+ID4gL1Ro b21hcwo+ID4gPiA+IAo+ID4gPiA+IAo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGVy cikKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gZXJy Owo+ID4gPiA+ID4gQEAgLTI4MSw4ICsyODAsOCBAQCBzdGF0aWMgaW50IGFkZF9wcmVlbXB0X2Zl bmNlcyhzdHJ1Y3QKPiA+ID4gPiA+IHhlX3ZtICp2bSwKPiA+ID4gPiA+IHN0cnVjdCB4ZV9ibyAq Ym8pCj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoAo+ID4gPiA+ID4gRE1B X1JFU1ZfVVNBR0VfQk9PS0tFRVApOwo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoH0KPiA+ID4gPiA+IC3CoMKgwqDCoMKgwqDCoHhlX2JvX3VubG9jayhibywgJnd3 KTsKPiA+ID4gPiA+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+ID4gPiA+ID4gK8KgwqDCoMKg wqDCoMKgeGVfYm9fdW5sb2NrKGJvKTsKPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoHJldHVybiBl cnI7Cj4gPiA+ID4gPiDCoMKgfQo+ID4gPiA+ID4gwqDCoC8qKgo+ID4gPiA+ID4gQEAgLTEwMjEs MTIgKzEwMjAsMTEgQEAgYm9faGFzX3ZtX3JlZmVyZW5jZXNfbG9ja2VkKHN0cnVjdAo+ID4gPiA+ ID4geGVfYm8gKmJvLAo+ID4gPiA+ID4gc3RydWN0IHhlX3ZtICp2bSwKPiA+ID4gPiA+IMKgwqBz dGF0aWMgYm9vbCBib19oYXNfdm1fcmVmZXJlbmNlcyhzdHJ1Y3QgeGVfYm8gKmJvLCBzdHJ1Y3QK PiA+ID4gPiA+IHhlX3ZtICp2bSwKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgeGVfdm1hICpp Z25vcmUpCj4gPiA+ID4gPiDCoMKgewo+ID4gPiA+ID4gLcKgwqDCoMKgwqDCoMKgc3RydWN0IHd3 X2FjcXVpcmVfY3R4IHd3Owo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgYm9vbCByZXQ7Cj4g PiA+ID4gPiAtwqDCoMKgwqDCoMKgwqB4ZV9ib19sb2NrKGJvLCAmd3csIDAsIGZhbHNlKTsKPiA+ ID4gPiA+ICvCoMKgwqDCoMKgwqDCoHhlX2JvX2xvY2soYm8sIGZhbHNlKTsKPiA+ID4gPiA+IMKg wqDCoMKgwqDCoMKgwqDCoHJldCA9ICEhYm9faGFzX3ZtX3JlZmVyZW5jZXNfbG9ja2VkKGJvLCB2 bSwgaWdub3JlKTsKPiA+ID4gPiA+IC3CoMKgwqDCoMKgwqDCoHhlX2JvX3VubG9jayhibywgJnd3 KTsKPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoHhlX2JvX3VubG9jayhibyk7Cj4gPiA+ID4gPiDC oMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+ID4gPiA+ID4gwqDCoH0KPiA+ID4gPiA+IEBA IC0yMjY3LDcgKzIyNjUsNiBAQCB2bV9iaW5kX2lvY3RsX29wc19jcmVhdGUoc3RydWN0IHhlX3Zt Cj4gPiA+ID4gPiAqdm0sCj4gPiA+ID4gPiBzdHJ1Y3QgeGVfYm8gKmJvLAo+ID4gPiA+ID4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIG9wZXJh dGlvbiwgdTggdGlsZV9tYXNrLCB1MzIKPiA+ID4gPiA+IHJlZ2lvbikKPiA+ID4gPiA+IMKgwqB7 Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiA9 IGJvID8gJmJvLT50dG0uYmFzZSA6Cj4gPiA+ID4gPiBOVUxMOwo+ID4gPiA+ID4gLcKgwqDCoMKg wqDCoMKgc3RydWN0IHd3X2FjcXVpcmVfY3R4IHd3Owo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDC oMKgc3RydWN0IGRybV9ncHV2YV9vcHMgKm9wczsKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDC oHN0cnVjdCBkcm1fZ3B1dmFfb3AgKl9fb3A7Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqBz dHJ1Y3QgeGVfdm1hX29wICpvcDsKPiA+ID4gPiA+IEBAIC0yMzI1LDExICsyMzIyLDExIEBAIHZt X2JpbmRfaW9jdGxfb3BzX2NyZWF0ZShzdHJ1Y3QgeGVfdm0KPiA+ID4gPiA+ICp2bSwKPiA+ID4g PiA+IHN0cnVjdCB4ZV9ibyAqYm8sCj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqBjYXNlIFhF X1ZNX0JJTkRfT1BfVU5NQVBfQUxMOgo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoFhFX1dBUk5fT04oIWJvKTsKPiA+ID4gPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBlcnIgPSB4ZV9ib19sb2NrKGJvLCAmd3csIDAsIHRydWUpOwo+ID4gPiA+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGVyciA9IHhlX2JvX2xvY2soYm8sIHRydWUp Owo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChlcnIpCj4g PiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHJldHVybiBFUlJfUFRSKGVycik7Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgb3BzID0gZHJtX2dwdXZhX2dlbV91bm1hcF9vcHNfY3JlYXRlKCZ2bS0KPiA+ID4g PiA+ID5tZ3IsIG9iaik7Cj4gPiA+ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg eGVfYm9fdW5sb2NrKGJvLCAmd3cpOwo+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHhlX2JvX3VubG9jayhibyk7Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgaWYgKElTX0VSUihvcHMpKQo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gb3BzOwo+ID4gPiA+ID4gQEAg LTIzNjUsMTMgKzIzNjIsMTIgQEAgc3RhdGljIHN0cnVjdCB4ZV92bWEgKm5ld192bWEoc3RydWN0 Cj4gPiA+ID4gPiB4ZV92bQo+ID4gPiA+ID4gKnZtLCBzdHJ1Y3QgZHJtX2dwdXZhX29wX21hcCAq b3AsCj4gPiA+ID4gPiDCoMKgewo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHhl X2JvICpibyA9IG9wLT5nZW0ub2JqID8gZ2VtX3RvX3hlX2JvKG9wLQo+ID4gPiA+ID4gPmdlbS5v YmopIDoKPiA+ID4gPiA+IE5VTEw7Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qg eGVfdm1hICp2bWE7Cj4gPiA+ID4gPiAtwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qgd3dfYWNxdWlyZV9j dHggd3c7Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqBpbnQgZXJyOwo+ID4gPiA+ID4gwqDC oMKgwqDCoMKgwqDCoMKgbG9ja2RlcF9hc3NlcnRfaGVsZF93cml0ZSgmdm0tPmxvY2spOwo+ID4g PiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGJvKSB7Cj4gPiA+ID4gPiAtwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgZXJyID0geGVfYm9fbG9jayhibywgJnd3LCAwLCB0cnVlKTsKPiA+ ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBlcnIgPSB4ZV9ib19sb2NrKGJv LCB0cnVlKTsKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAo ZXJyKQo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqByZXR1cm4gRVJSX1BUUihlcnIpOwo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKg fQo+ID4gPiA+ID4gQEAgLTIzODAsNyArMjM3Niw3IEBAIHN0YXRpYyBzdHJ1Y3QgeGVfdm1hICpu ZXdfdm1hKHN0cnVjdAo+ID4gPiA+ID4geGVfdm0gKnZtLAo+ID4gPiA+ID4gc3RydWN0IGRybV9n cHV2YV9vcF9tYXAgKm9wLAo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgb3AtPnZhLnJhbmdlIC0gMSwgcmVhZF9vbmx5LAo+ ID4gPiA+ID4gaXNfbnVsbCwKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHRpbGVfbWFzayk7Cj4gPiA+ID4gPiDCoMKgwqDC oMKgwqDCoMKgwqBpZiAoYm8pCj4gPiA+ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgeGVfYm9fdW5sb2NrKGJvLCAmd3cpOwo+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHhlX2JvX3VubG9jayhibyk7Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqBp ZiAoeGVfdm1hX2lzX3VzZXJwdHIodm1hKSkgewo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGVyciA9IHhlX3ZtYV91c2VycHRyX3Bpbl9wYWdlcyh2bWEpOwo+ID4g PiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV92bV9tYWR2aXNlLmMKPiA+ ID4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX3ZtX21hZHZpc2UuYwo+ID4gPiA+ID4gaW5k ZXggYzliYzU5YmU1MDk0Li4wNTA4MWZhMGZiZWQgMTAwNjQ0Cj4gPiA+ID4gPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0veGUveGVfdm1fbWFkdmlzZS5jCj4gPiA+ID4gPiArKysgYi9kcml2ZXJzL2dw dS9kcm0veGUveGVfdm1fbWFkdmlzZS5jCj4gPiA+ID4gPiBAQCAtMjgsMTYgKzI4LDE1IEBAIHN0 YXRpYyBpbnQKPiA+ID4gPiA+IG1hZHZpc2VfcHJlZmVycmVkX21lbV9jbGFzcyhzdHJ1Y3QKPiA+ ID4gPiA+IHhlX2RldmljZSAqeGUsIHN0cnVjdCB4ZV92bSAqdm0sCj4gPiA+ID4gPiDCoMKgwqDC oMKgwqDCoMKgwqBmb3IgKGkgPSAwOyBpIDwgbnVtX3ZtYXM7ICsraSkgewo+ID4gPiA+ID4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB4ZV9ibyAqYm87Cj4gPiA+ID4g PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHd3X2FjcXVpcmVfY3R4IHd3 Owo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJvID0geGVfdm1h X2JvKHZtYXNbaV0pOwo+ID4gPiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGVy ciA9IHhlX2JvX2xvY2soYm8sICZ3dywgMCwgdHJ1ZSk7Cj4gPiA+ID4gPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgZXJyID0geGVfYm9fbG9jayhibywgdHJ1ZSk7Cj4gPiA+ID4gPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGVycikKPiA+ID4gPiA+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIGVycjsK PiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBiby0+cHJvcHMucHJl ZmVycmVkX21lbV9jbGFzcyA9IHZhbHVlOwo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHhlX2JvX3BsYWNlbWVudF9mb3JfZmxhZ3MoeGUsIGJvLCBiby0KPiA+ID4g PiA+ID5mbGFncyk7Cj4gPiA+ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgeGVf Ym9fdW5sb2NrKGJvLCAmd3cpOwo+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoHhlX2JvX3VubG9jayhibyk7Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gPiA+ ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiA+ID4gPiA+IEBAIC01MywxNiArNTIs MTUgQEAgc3RhdGljIGludCBtYWR2aXNlX3ByZWZlcnJlZF9ndChzdHJ1Y3QKPiA+ID4gPiA+IHhl X2RldmljZQo+ID4gPiA+ID4gKnhlLCBzdHJ1Y3QgeGVfdm0gKnZtLAo+ID4gPiA+ID4gwqDCoMKg wqDCoMKgwqDCoMKgZm9yIChpID0gMDsgaSA8IG51bV92bWFzOyArK2kpIHsKPiA+ID4gPiA+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgeGVfYm8gKmJvOwo+ID4gPiA+ ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB3d19hY3F1aXJlX2N0eCB3 dzsKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBibyA9IHhlX3Zt YV9ibyh2bWFzW2ldKTsKPiA+ID4gPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBl cnIgPSB4ZV9ib19sb2NrKGJvLCAmd3csIDAsIHRydWUpOwo+ID4gPiA+ID4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGVyciA9IHhlX2JvX2xvY2soYm8sIHRydWUpOwo+ID4gPiA+ID4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChlcnIpCj4gPiA+ID4gPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiBlcnI7 Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYm8tPnByb3BzLnBy ZWZlcnJlZF9ndCA9IHZhbHVlOwo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHhlX2JvX3BsYWNlbWVudF9mb3JfZmxhZ3MoeGUsIGJvLCBiby0KPiA+ID4gPiA+ID5m bGFncyk7Cj4gPiA+ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgeGVfYm9fdW5s b2NrKGJvLCAmd3cpOwo+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHhl X2JvX3VubG9jayhibyk7Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gPiA+ID4gPiDC oMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiA+ID4gPiA+IEBAIC04OSwxNyArODcsMTYgQEAg c3RhdGljIGludAo+ID4gPiA+ID4gbWFkdmlzZV9wcmVmZXJyZWRfbWVtX2NsYXNzX2d0KHN0cnVj dAo+ID4gPiA+ID4geGVfZGV2aWNlICp4ZSwKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoGZv ciAoaSA9IDA7IGkgPCBudW1fdm1hczsgKytpKSB7Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHhlX2JvICpibzsKPiA+ID4gPiA+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qgd3dfYWNxdWlyZV9jdHggd3c7Cj4gPiA+ID4gPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYm8gPSB4ZV92bWFfYm8odm1hc1tpXSk7 Cj4gPiA+ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZXJyID0geGVfYm9fbG9j ayhibywgJnd3LCAwLCB0cnVlKTsKPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBlcnIgPSB4ZV9ib19sb2NrKGJvLCB0cnVlKTsKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoZXJyKQo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gZXJyOwo+ID4gPiA+ID4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJvLT5wcm9wcy5wcmVmZXJyZWRfbWVtX2Ns YXNzID0gbWVtX2NsYXNzOwo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGJvLT5wcm9wcy5wcmVmZXJyZWRfZ3QgPSBndF9pZDsKPiA+ID4gPiA+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4ZV9ib19wbGFjZW1lbnRfZm9yX2ZsYWdzKHhlLCBibywg Ym8tCj4gPiA+ID4gPiA+ZmxhZ3MpOwo+ID4gPiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHhlX2JvX3VubG9jayhibywgJnd3KTsKPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqB4ZV9ib191bmxvY2soYm8pOwo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDC oMKgfQo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gPiA+ID4gPiBAQCAt MTEyLDEzICsxMDksMTIgQEAgc3RhdGljIGludCBtYWR2aXNlX2NwdV9hdG9taWMoc3RydWN0Cj4g PiA+ID4gPiB4ZV9kZXZpY2UKPiA+ID4gPiA+ICp4ZSwgc3RydWN0IHhlX3ZtICp2bSwKPiA+ID4g PiA+IMKgwqDCoMKgwqDCoMKgwqDCoGZvciAoaSA9IDA7IGkgPCBudW1fdm1hczsgKytpKSB7Cj4g PiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHhlX2JvICpi bzsKPiA+ID4gPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qgd3dfYWNx dWlyZV9jdHggd3c7Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg Ym8gPSB4ZV92bWFfYm8odm1hc1tpXSk7Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgaWYgKFhFX0lPQ1RMX0RCRyh4ZSwgIShiby0+ZmxhZ3MgJgo+ID4gPiA+ID4g WEVfQk9fQ1JFQVRFX1NZU1RFTV9CSVQpKSkKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIC1FSU5WQUw7Cj4gPiA+ID4gPiAt wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZXJyID0geGVfYm9fbG9jayhibywgJnd3LCAw LCB0cnVlKTsKPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBlcnIgPSB4 ZV9ib19sb2NrKGJvLCB0cnVlKTsKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBpZiAoZXJyKQo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gZXJyOwo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGJvLT5wcm9wcy5jcHVfYXRvbWljID0gISF2YWx1ZTsKPiA+ID4g PiA+IEBAIC0xMzAsNyArMTI2LDcgQEAgc3RhdGljIGludCBtYWR2aXNlX2NwdV9hdG9taWMoc3Ry dWN0Cj4gPiA+ID4gPiB4ZV9kZXZpY2UKPiA+ID4gPiA+ICp4ZSwgc3RydWN0IHhlX3ZtICp2bSwK PiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8KPiA+ID4gPiA+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoYm8tPnByb3BzLmNwdV9hdG9t aWMpCj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHR0bV9ib191bm1hcF92aXJ0dWFsKCZiby0+dHRtKTsKPiA+ID4gPiA+IC3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4ZV9ib191bmxvY2soYm8sICZ3dyk7Cj4gPiA+ID4gPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgeGVfYm9fdW5sb2NrKGJvKTsKPiA+ID4gPiA+ IMKgwqDCoMKgwqDCoMKgwqDCoH0KPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiAw Owo+ID4gPiA+ID4gQEAgLTE0MywxOCArMTM5LDE3IEBAIHN0YXRpYyBpbnQgbWFkdmlzZV9kZXZp Y2VfYXRvbWljKHN0cnVjdAo+ID4gPiA+ID4geGVfZGV2aWNlICp4ZSwgc3RydWN0IHhlX3ZtICp2 bSwKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoGZvciAoaSA9IDA7IGkgPCBudW1fdm1hczsg KytpKSB7Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3RydWN0 IHhlX2JvICpibzsKPiA+ID4gPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzdHJ1 Y3Qgd3dfYWNxdWlyZV9jdHggd3c7Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgYm8gPSB4ZV92bWFfYm8odm1hc1tpXSk7Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKFhFX0lPQ1RMX0RCRyh4ZSwgIShiby0+ZmxhZ3MgJgo+ ID4gPiA+ID4gWEVfQk9fQ1JFQVRFX1ZSQU0wX0JJVCkgJiYKPiA+ID4gPiA+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAh KGJvLT5mbGFncyAmCj4gPiA+ID4gPiBYRV9CT19DUkVBVEVfVlJBTTFfQklUKSkpCj4gPiA+ID4g PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVy biAtRUlOVkFMOwo+ID4gPiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGVyciA9 IHhlX2JvX2xvY2soYm8sICZ3dywgMCwgdHJ1ZSk7Cj4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgZXJyID0geGVfYm9fbG9jayhibywgdHJ1ZSk7Cj4gPiA+ID4gPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGVycikKPiA+ID4gPiA+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIGVycjsKPiA+ ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBiby0+cHJvcHMuZGV2aWNl X2F0b21pYyA9ICEhdmFsdWU7Cj4gPiA+ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgeGVfYm9fdW5sb2NrKGJvLCAmd3cpOwo+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHhlX2JvX3VubG9jayhibyk7Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqB9 Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiA+ID4gPiA+IEBAIC0xNzQs MTYgKzE2OSwxNSBAQCBzdGF0aWMgaW50IG1hZHZpc2VfcHJpb3JpdHkoc3RydWN0Cj4gPiA+ID4g PiB4ZV9kZXZpY2UKPiA+ID4gPiA+ICp4ZSwgc3RydWN0IHhlX3ZtICp2bSwKPiA+ID4gPiA+IMKg wqDCoMKgwqDCoMKgwqDCoGZvciAoaSA9IDA7IGkgPCBudW1fdm1hczsgKytpKSB7Cj4gPiA+ID4g PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHhlX2JvICpibzsKPiA+ ID4gPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qgd3dfYWNxdWlyZV9j dHggd3c7Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYm8gPSB4 ZV92bWFfYm8odm1hc1tpXSk7Cj4gPiA+ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgZXJyID0geGVfYm9fbG9jayhibywgJnd3LCAwLCB0cnVlKTsKPiA+ID4gPiA+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBlcnIgPSB4ZV9ib19sb2NrKGJvLCB0cnVlKTsKPiA+ID4g PiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoZXJyKQo+ID4gPiA+ID4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4g ZXJyOwo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJvLT50dG0u cHJpb3JpdHkgPSB2YWx1ZTsKPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqB0dG1fYm9fbW92ZV90b19scnVfdGFpbCgmYm8tPnR0bSk7Cj4gPiA+ID4gPiAtwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgeGVfYm9fdW5sb2NrKGJvLCAmd3cpOwo+ID4gPiA+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHhlX2JvX3VubG9jayhibyk7Cj4gPiA+ID4g PiDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4g MDsKCg==