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=-8.1 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 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 A8F1FC11D30 for ; Mon, 24 Feb 2020 14:50:29 +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 7C33F20828 for ; Mon, 24 Feb 2020 14:50:29 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=ti.com header.i=@ti.com header.b="aCc8G7z7" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7C33F20828 Authentication-Results: mail.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=ti.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id A49946E51D; Mon, 24 Feb 2020 14:50:28 +0000 (UTC) Received: from lelv0143.ext.ti.com (lelv0143.ext.ti.com [198.47.23.248]) by gabe.freedesktop.org (Postfix) with ESMTPS id 957BE6E51B for ; Mon, 24 Feb 2020 14:50:26 +0000 (UTC) Received: from lelv0265.itg.ti.com ([10.180.67.224]) by lelv0143.ext.ti.com (8.15.2/8.15.2) with ESMTP id 01OEo6IF106150; Mon, 24 Feb 2020 08:50:06 -0600 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1582555806; bh=9Wg4FEVcWDykZ4ur53brRhfKuqj4Lt+KqwOBI2lYsxk=; h=Subject:To:CC:References:From:Date:In-Reply-To; b=aCc8G7z76ogpFQyEPRdYeVSc1hcYglzFULZH/nDtV/X5wo9uCLUwMyaPe3kyWOdjS tsio6QIlQCc2lIcI30aX6kqRT+gRwg5ZxuHZP5QMJcQg2kSeBJ8DNf+e7fWltTpk+p oQ/zg7+bcdCtbZKnfmeyg5YZgXcRyQB8/CE1yup8= Received: from DFLE104.ent.ti.com (dfle104.ent.ti.com [10.64.6.25]) by lelv0265.itg.ti.com (8.15.2/8.15.2) with ESMTPS id 01OEo6U7129157 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=FAIL); Mon, 24 Feb 2020 08:50:06 -0600 Received: from DFLE105.ent.ti.com (10.64.6.26) by DFLE104.ent.ti.com (10.64.6.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1847.3; Mon, 24 Feb 2020 08:50:05 -0600 Received: from lelv0326.itg.ti.com (10.180.67.84) by DFLE105.ent.ti.com (10.64.6.26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1847.3 via Frontend Transport; Mon, 24 Feb 2020 08:50:06 -0600 Received: from [10.1.3.6] (ileax41-snat.itg.ti.com [10.172.224.153]) by lelv0326.itg.ti.com (8.15.2/8.15.2) with ESMTP id 01OEnuFx003319; Mon, 24 Feb 2020 08:50:01 -0600 Subject: Re: [PATCH v4] drm/tidss: dispc: Rewrite naive plane positioning code To: Tomi Valkeinen , References: <20200213193717.24551-1-jsarha@ti.com> From: Jyri Sarha Autocrypt: addr=jsarha@ti.com; prefer-encrypt=mutual; keydata= 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 Message-ID: <8a20b3b2-6a57-dcdb-028d-9b22e89a9d4f@ti.com> Date: Mon, 24 Feb 2020 16:49:55 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.4.1 MIME-Version: 1.0 In-Reply-To: Content-Language: en-GB X-EXCLAIMER-MD-CONFIG: e1e8a2fd-e40a-4ac6-ac9b-f7e9cc9ee180 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: praneeth@ti.com, peter.ujfalusi@ti.com, laurent.pinchart@ideasonboard.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" T24gMTQvMDIvMjAyMCAxMzoyMCwgVG9taSBWYWxrZWluZW4gd3JvdGU6Cj4gT24gMTMvMDIvMjAy MCAyMTozNywgSnlyaSBTYXJoYSB3cm90ZToKPj4gVGhlIG9sZCBpbXBsZW1lbnRhdGlvbiBvZiBw bGFjaW5nIHBsYW5lcyBvbiB0aGUgQ1JUQyB3aGlsZSBjb25maWd1cmluZwo+PiB0aGUgcGxhbmVz IHdhcyBuYWl2ZSBhbmQgcmVsaWVkIG9uIHRoZSBvcmRlciBpbiB3aGljaCB0aGUgcGxhbmVzIHdl cmUKPj4gY29uZmlndXJlZCwgZW5hYmxlZCwgYW5kIGRpc2FibGVkLiBUaGUgc2l0dWF0aW9uIHdo ZXJlIGEgcGxhbmUncyB6cG9zCj4+IHdhcyBjaGFuZ2VkIG9uIHRoZSBmbHkgd2FzIGNvbXBsZXRl bHkgYnJva2VuLiBUaGUgdXN1YWwgc3ltcHRvbXMgb2YKPj4gdGhpcyBwcm9ibGVtIHdhcyBzY3Jh bWJsZWQgZGlzcGxheSBhbmQgYSBmbG9vZCBvZiBzeW5jIGxvc3QgZXJyb3JzLAo+PiB3aGVuIGEg cGxhbmUgd2FzIGFjdGl2ZSBpbiB0d28gbGF5ZXJzIGF0IHRoZSBzYW1lIHRpbWUsIG9yIGEgbWlz c2luZwo+PiBwbGFuZSwgaW4gY2FzZSB3aGVuIGEgbGF5ZXIgd2FzIGFjY2lkZW50YWxseSBkaXNh YmxlZC4KPj4KPj4gVGhlIHJld3JpdGUgdGFrZXMgYSBtb3JlIHN0cmFpZ2h0IGZvcndhcmQgYXBw cm9hY2ggd2hlbiBIVyBpcwo+PiBjb25jZXJuZWQuIFRoZSBwbGFuZSBwb3NpdGlvbmluZyByZWdp c3RlcnMgYXJlIGluIHRoZSBDUlRDIChvcgo+PiBhY3R1YWxseSBPVlIpIHJlZ2lzdGVyIHNwYWNl IGFuZCBpdCBpcyBtb3JlIG5hdHVyYWwgdG8gY29uZmlndXJlIHRoZW0KPj4gaW4gYSBvbmUgZ28g d2hlbiBjb25maWd1cmluZyB0aGUgQ1JUQy4gVG8gZG8gdGhpcyB3ZSBuZWVkIG1ha2Ugc3VyZSB3 ZQo+PiBoYXZlIGFsbCB0aGUgcGxhbmVzIG9uIHRoZSB1cGRhdGVkIENSVENzIGluIHRoZSBuZXcg YXRvbWljIHN0YXRlLiBUaGUKPj4gdW50b3VjaGVkIHBsYW5lcyBvbiBDUlRDcyB0aGF0IG5lZWQg cGxhbmUgcG9zaXRpb24gdXBkYXRlIGFyZSBhZGRlZCB0bwo+PiB0aGUgYXRvbWljIHN0YXRlIGlu IHRpZHNzX2F0b21pY19jaGVjaygpLgo+IAo+IFRoZSBzdWJqZWN0IG5lZWRzIHVwZGF0aW5nLiBU aGlzIGlzIGEgZml4IGZvciBhIGJ1ZywgYW5kIHN1YmplY3QgbmVlZHMKPiB0byByZWZsZWN0IHRo YXQuCj4gCgpPawoKPj4gU2lnbmVkLW9mZi1ieTogSnlyaSBTYXJoYSA8anNhcmhhQHRpLmNvbT4K Pj4gLS0tCj4+IMKgIGRyaXZlcnMvZ3B1L2RybS90aWRzcy90aWRzc19jcnRjLmPCoCB8IDU1ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrCj4+IMKgIGRyaXZlcnMvZ3B1L2RybS90aWRzcy90 aWRzc19jcnRjLmjCoCB8wqAgMiArKwo+PiDCoCBkcml2ZXJzL2dwdS9kcm0vdGlkc3MvdGlkc3Nf ZGlzcGMuYyB8IDU1ICsrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCj4+IMKgIGRyaXZlcnMv Z3B1L2RybS90aWRzcy90aWRzc19kaXNwYy5oIHzCoCA1ICsrKwo+PiDCoCBkcml2ZXJzL2dwdS9k cm0vdGlkc3MvdGlkc3Nfa21zLmPCoMKgIHwgNDkgKysrKysrKysrKysrKysrKysrKysrKysrLQo+ PiDCoCA1IGZpbGVzIGNoYW5nZWQsIDEzMCBpbnNlcnRpb25zKCspLCAzNiBkZWxldGlvbnMoLSkK Pj4KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90aWRzcy90aWRzc19jcnRjLmMKPj4g Yi9kcml2ZXJzL2dwdS9kcm0vdGlkc3MvdGlkc3NfY3J0Yy5jCj4+IGluZGV4IDAzMmMzMWVlMjgy MC4uNjMxZWM2MWIwODZhIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vdGlkc3MvdGlk c3NfY3J0Yy5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS90aWRzcy90aWRzc19jcnRjLmMKPj4g QEAgLTE3LDYgKzE3LDcgQEAKPj4gwqAgI2luY2x1ZGUgInRpZHNzX2Rpc3BjLmgiCj4+IMKgICNp bmNsdWRlICJ0aWRzc19kcnYuaCIKPj4gwqAgI2luY2x1ZGUgInRpZHNzX2lycS5oIgo+PiArI2lu Y2x1ZGUgInRpZHNzX3BsYW5lLmgiCj4+IMKgIMKgIC8qIFBhZ2UgZmxpcCBhbmQgZnJhbWUgZG9u ZSBJUlFzICovCj4+IMKgIEBAIC0xMTEsNiArMTEyLDU0IEBAIHN0YXRpYyBpbnQgdGlkc3NfY3J0 Y19hdG9taWNfY2hlY2soc3RydWN0Cj4+IGRybV9jcnRjICpjcnRjLAo+PiDCoMKgwqDCoMKgIHJl dHVybiBkaXNwY192cF9idXNfY2hlY2soZGlzcGMsIGh3X3ZpZGVvcG9ydCwgc3RhdGUpOwo+PiDC oCB9Cj4+IMKgICsvKgo+PiArICogVGhpcyBuZWVkcyBhbGwgYWZmZWN0ZWQgcGxhbmVzIHRvIGJl IHByZXNlbnQgaW4gdGhlIGF0b21pYwo+PiArICogc3RhdGUuIFRoZSB1bnRvdWNoZWQgcGxhbmVz IGFyZSBhZGRlZCB0byB0aGUgc3RhdGUgaW4KPj4gKyAqIHRpZHNzX2F0b21pY19jaGVjaygpLgo+ PiArICovCj4+ICtzdGF0aWMgdm9pZCB0aWRzc19jcnRjX3Bvc2l0aW9uX3BsYW5lcyhzdHJ1Y3Qg dGlkc3NfZGV2aWNlICp0aWRzcywKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqb2xkX3N0 YXRlLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYm9v bCBuZXdtb2Rlc2V0KQo+PiArewo+PiArwqDCoMKgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpv c3RhdGUgPSBvbGRfc3RhdGUtPnN0YXRlOwo+PiArwqDCoMKgIHN0cnVjdCB0aWRzc19jcnRjICp0 Y3J0YyA9IHRvX3RpZHNzX2NydGMoY3J0Yyk7Cj4+ICvCoMKgwqAgc3RydWN0IGRybV9jcnRjX3N0 YXRlICpjc3RhdGUgPSBjcnRjLT5zdGF0ZTsKPj4gK8KgwqDCoCBpbnQgenBvczsKPj4gKwo+PiAr wqDCoMKgIGlmICghbmV3bW9kZXNldCAmJiAhY3N0YXRlLT56cG9zX2NoYW5nZWQgJiYKPj4gK8Kg wqDCoMKgwqDCoMKgICF0b190aWRzc19jcnRjX3N0YXRlKGNzdGF0ZSktPnBsYW5lX3Bvc19jaGFu Z2VkKQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuOwo+PiArCj4+ICvCoMKgwqAgZm9yICh6cG9z ID0gMDsgenBvcyA8IHRpZHNzLT5mZWF0LT5udW1fcGxhbmVzOyB6cG9zKyspIHsKPj4gK8KgwqDC oMKgwqDCoMKgIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBzdGF0ZTsKPj4gK8KgwqDCoMKgwqDC oMKgIHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lOwo+PiArwqDCoMKgwqDCoMKgwqAgYm9vbCB6cG9z X3Rha2VuID0gZmFsc2U7Cj4+ICvCoMKgwqDCoMKgwqDCoCBpbnQgaTsKPj4gKwo+PiArwqDCoMKg wqDCoMKgwqAgZm9yX2VhY2hfbmV3X3BsYW5lX2luX3N0YXRlKG9zdGF0ZSwgcGxhbmUsIHBzdGF0 ZSwgaSkgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAocHN0YXRlLT5jcnRjICE9IGNy dGMgfHwgIXBzdGF0ZS0+dmlzaWJsZSkKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBjb250aW51ZTsKPj4gKwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAocHN0YXRlLT5u b3JtYWxpemVkX3pwb3MgPT0genBvcykgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHpwb3NfdGFrZW4gPSB0cnVlOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGJyZWFrOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+ICvCoMKgwqDCoMKgwqDCoCB9 Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgIGlmICh6cG9zX3Rha2VuKSB7Cj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHN0cnVjdCB0aWRzc19wbGFuZSAqdHBsYW5lID0gdG9fdGlkc3NfcGxhbmUo cGxhbmUpOwo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRpc3BjX292cl9zZXRfcGxh bmUodGlkc3MtPmRpc3BjLCB0cGxhbmUtPmh3X3BsYW5lX2lkLAo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB0Y3J0Yy0+aHdfdmlkZW9wb3J0LAo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwc3RhdGUtPmNy dGNfeCwgcHN0YXRlLT5jcnRjX3ksCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHpwb3MpOwo+PiArwqDCoMKgwqDCoMKgwqAgfQo+PiArwqDCoMKgwqDC oMKgwqAgZGlzcGNfb3ZyX2VuYWJsZV9sYXllcih0aWRzcy0+ZGlzcGMsIHRjcnRjLT5od192aWRl b3BvcnQsIHpwb3MsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB6cG9zX3Rha2VuKTsKPj4gK8KgwqDCoCB9Cj4+ICt9Cj4gCj4gTml0cGlja2luZywgYnV0 Li4uIEkgdGhpbmsgdGhlICJ6cG9zIiBhYm92ZSBpcyByZWFsbHkgImxheWVyIi4gRXZlbiB0aGUK PiBwYXJhbXMsIHRvIHdoaWNoIHlvdSBwYXNzICJ6cG9zIiwgaW4gdGhlIG92ciBmdW5jdGlvbnMg YXJlIG5hbWVkICJsYXllciIuCj4gCgpXZWxsLCBpdCBpcyBib3RoLiBCdXQgSSdsbCBjaGFuZ2Ug dGhhdC4KCj4gInpwb3NfdGFrZW4iIHNvdW5kcyBsaWtlIGl0J3MgcmVzZXJ2ZWQgYW5kIG5vdCBh dmFpbGFibGUgZm9yIHVzLCBvcgo+IHNvbWV0aGluZyBsaWtlIHRoYXQuIE1heWJlICJsYXllcl9h Y3RpdmUiIGNvbnZleXMgYmV0dGVyIHRoYXQgd2UncmUganVzdAo+IGNvbGxlY3Rpbmcgd2hpY2gg bGF5ZXJzIGFyZSBhY3RpdmUgYW5kIHdoaWNoIGFyZSBub3QuCj4gCgpPaywgdGhhdCBzb3VuZHMg YmV0dGVyLgoKPj4gKwo+PiDCoCBzdGF0aWMgdm9pZCB0aWRzc19jcnRjX2F0b21pY19mbHVzaChz dHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlKQo+PiDCoCB7 Cj4+IEBAIC0xNDYsNiArMTk1LDkgQEAgc3RhdGljIHZvaWQgdGlkc3NfY3J0Y19hdG9taWNfZmx1 c2goc3RydWN0Cj4+IGRybV9jcnRjICpjcnRjLAo+PiDCoMKgwqDCoMKgIC8qIFdyaXRlIHZwIHBy b3BlcnRpZXMgdG8gSFcgaWYgbmVlZGVkLiAqLwo+PiDCoMKgwqDCoMKgIGRpc3BjX3ZwX3NldHVw KHRpZHNzLT5kaXNwYywgdGNydGMtPmh3X3ZpZGVvcG9ydCwgY3J0Yy0+c3RhdGUsCj4+IGZhbHNl KTsKPj4gwqAgK8KgwqDCoCAvKiBVcGRhdGUgcGxhbmUgcG9zaXRpb25zIGlmIG5lZWRlZC4gKi8K Pj4gK8KgwqDCoCB0aWRzc19jcnRjX3Bvc2l0aW9uX3BsYW5lcyh0aWRzcywgY3J0Yywgb2xkX2Ny dGNfc3RhdGUsIGZhbHNlKTsKPj4gKwo+PiDCoMKgwqDCoMKgIFdBUk5fT04oZHJtX2NydGNfdmJs YW5rX2dldChjcnRjKSAhPSAwKTsKPj4gwqAgwqDCoMKgwqDCoCBzcGluX2xvY2tfaXJxc2F2ZSgm ZGRldi0+ZXZlbnRfbG9jaywgZmxhZ3MpOwo+PiBAQCAtMTgzLDYgKzIzNSw3IEBAIHN0YXRpYyB2 b2lkIHRpZHNzX2NydGNfYXRvbWljX2VuYWJsZShzdHJ1Y3QKPj4gZHJtX2NydGMgKmNydGMsCj4+ IMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm47Cj4+IMKgIMKgwqDCoMKgwqAgZGlzcGNfdnBfc2V0 dXAodGlkc3MtPmRpc3BjLCB0Y3J0Yy0+aHdfdmlkZW9wb3J0LCBjcnRjLT5zdGF0ZSwKPj4gdHJ1 ZSk7Cj4+ICvCoMKgwqAgdGlkc3NfY3J0Y19wb3NpdGlvbl9wbGFuZXModGlkc3MsIGNydGMsIG9s ZF9zdGF0ZSwgdHJ1ZSk7Cj4+IMKgIMKgwqDCoMKgwqAgLyogVHVybiB2ZXJ0aWNhbCBibGFua2lu ZyBpbnRlcnJ1cHQgcmVwb3J0aW5nIG9uLiAqLwo+PiDCoMKgwqDCoMKgIGRybV9jcnRjX3ZibGFu a19vbihjcnRjKTsKPj4gQEAgLTMxOCw2ICszNzEsOCBAQCBzdGF0aWMgc3RydWN0IGRybV9jcnRj X3N0YXRlCj4+ICp0aWRzc19jcnRjX2R1cGxpY2F0ZV9zdGF0ZShzdHJ1Y3QgZHJtX2NydGMgKmNy dGMpCj4+IMKgIMKgwqDCoMKgwqAgX19kcm1fYXRvbWljX2hlbHBlcl9jcnRjX2R1cGxpY2F0ZV9z dGF0ZShjcnRjLCAmc3RhdGUtPmJhc2UpOwo+PiDCoCArwqDCoMKgIHN0YXRlLT5wbGFuZV9wb3Nf Y2hhbmdlZCA9IGZhbHNlOwo+PiArCj4+IMKgwqDCoMKgwqAgc3RhdGUtPmJ1c19mb3JtYXQgPSBj dXJyZW50X3N0YXRlLT5idXNfZm9ybWF0Owo+PiDCoMKgwqDCoMKgIHN0YXRlLT5idXNfZmxhZ3Mg PSBjdXJyZW50X3N0YXRlLT5idXNfZmxhZ3M7Cj4+IMKgIGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vdGlkc3MvdGlkc3NfY3J0Yy5oCj4+IGIvZHJpdmVycy9ncHUvZHJtL3RpZHNzL3RpZHNz X2NydGMuaAo+PiBpbmRleCBkZjlkOTBiMWFkMmQuLjA5ZTc3MzY2NjIyOCAxMDA2NDQKPj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL3RpZHNzL3RpZHNzX2NydGMuaAo+PiArKysgYi9kcml2ZXJzL2dw dS9kcm0vdGlkc3MvdGlkc3NfY3J0Yy5oCj4+IEBAIC0zMiw2ICszMiw4IEBAIHN0cnVjdCB0aWRz c19jcnRjX3N0YXRlIHsKPj4gwqDCoMKgwqDCoCAvKiBNdXN0IGJlIGZpcnN0LiAqLwo+PiDCoMKg wqDCoMKgIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSBiYXNlOwo+PiDCoCArwqDCoMKgIGJvb2wgcGxh bmVfcG9zX2NoYW5nZWQ7Cj4+ICsKPj4gwqDCoMKgwqDCoCB1MzIgYnVzX2Zvcm1hdDsKPj4gwqDC oMKgwqDCoCB1MzIgYnVzX2ZsYWdzOwo+PiDCoCB9Owo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL3RpZHNzL3RpZHNzX2Rpc3BjLmMKPj4gYi9kcml2ZXJzL2dwdS9kcm0vdGlkc3MvdGlk c3NfZGlzcGMuYwo+PiBpbmRleCBlZWIxNjBkYzA0N2IuLmU3OWRhZDI0NmIxZSAxMDA2NDQKPj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL3RpZHNzL3RpZHNzX2Rpc3BjLmMKPj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL3RpZHNzL3RpZHNzX2Rpc3BjLmMKPj4gQEAgLTI4MSwxMSArMjgxLDYgQEAgc3Ry dWN0IGRzc192cF9kYXRhIHsKPj4gwqDCoMKgwqDCoCB1MzIgKmdhbW1hX3RhYmxlOwo+PiDCoCB9 Owo+PiDCoCAtc3RydWN0IGRzc19wbGFuZV9kYXRhIHsKPj4gLcKgwqDCoCB1MzIgem9yZGVyOwo+ PiAtwqDCoMKgIHUzMiBod192aWRlb3BvcnQ7Cj4+IC19Owo+PiAtCj4+IMKgIHN0cnVjdCBkaXNw Y19kZXZpY2Ugewo+PiDCoMKgwqDCoMKgIHN0cnVjdCB0aWRzc19kZXZpY2UgKnRpZHNzOwo+PiDC oMKgwqDCoMKgIHN0cnVjdCBkZXZpY2UgKmRldjsKPj4gQEAgLTMwNyw4ICszMDIsNiBAQCBzdHJ1 Y3QgZGlzcGNfZGV2aWNlIHsKPj4gwqAgwqDCoMKgwqDCoCBzdHJ1Y3QgZHNzX3ZwX2RhdGEgdnBf ZGF0YVtUSURTU19NQVhfUE9SVFNdOwo+PiDCoCAtwqDCoMKgIHN0cnVjdCBkc3NfcGxhbmVfZGF0 YSBwbGFuZV9kYXRhW1RJRFNTX01BWF9QTEFORVNdOwo+PiAtCj4+IMKgwqDCoMKgwqAgdTMyICpm b3VyY2NzOwo+PiDCoMKgwqDCoMKgIHUzMiBudW1fZm91cmNjczsKPj4gwqAgQEAgLTEyNDcsNyAr MTI0MCw3IEBAIGludCBkaXNwY192cF9zZXRfY2xrX3JhdGUoc3RydWN0IGRpc3BjX2RldmljZQo+ PiAqZGlzcGMsIHUzMiBod192aWRlb3BvcnQsCj4+IMKgIC8qIE9WUiAqLwo+PiDCoCBzdGF0aWMg dm9pZCBkaXNwY19rMmdfb3ZyX3NldF9wbGFuZShzdHJ1Y3QgZGlzcGNfZGV2aWNlICpkaXNwYywK Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBod19wbGFu ZSwgdTMyIGh3X3ZpZGVvcG9ydCwKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHUzMiB4LCB1MzIgeSwgdTMyIHpwb3MpCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB1MzIgeCwgdTMyIHksIHUzMiBsYXllcikKPj4gwqAgewo+PiDCoMKg wqDCoMKgIC8qIE9uIGsyZyB0aGVyZSBpcyBvbmx5IG9uZSBwbGFuZSBhbmQgbm8gbmVlZCBmb3Ig b3ZyICovCj4+IMKgwqDCoMKgwqAgZGlzcGNfdmlkX3dyaXRlKGRpc3BjLCBod19wbGFuZSwgRElT UENfVklEX0syR19QT1NJVElPTiwKPj4gQEAgLTEyNTYsNDQgKzEyNDksNDMgQEAgc3RhdGljIHZv aWQgZGlzcGNfazJnX292cl9zZXRfcGxhbmUoc3RydWN0Cj4+IGRpc3BjX2RldmljZSAqZGlzcGMs Cj4+IMKgIMKgIHN0YXRpYyB2b2lkIGRpc3BjX2FtNjV4X292cl9zZXRfcGxhbmUoc3RydWN0IGRp c3BjX2RldmljZSAqZGlzcGMsCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgdTMyIGh3X3BsYW5lLCB1MzIgaHdfdmlkZW9wb3J0LAo+PiAtwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiB4LCB1MzIgeSwgdTMyIHpwb3Mp Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIHgsIHUz MiB5LCB1MzIgbGF5ZXIpCj4+IMKgIHsKPj4gLcKgwqDCoCBPVlJfUkVHX0ZMRF9NT0QoZGlzcGMs IGh3X3ZpZGVvcG9ydCwgRElTUENfT1ZSX0FUVFJJQlVURVMoenBvcyksCj4+ICvCoMKgwqAgT1ZS X1JFR19GTERfTU9EKGRpc3BjLCBod192aWRlb3BvcnQsIERJU1BDX09WUl9BVFRSSUJVVEVTKGxh eWVyKSwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaHdfcGxhbmUsIDQsIDEpOwo+PiAt wqDCoMKgIE9WUl9SRUdfRkxEX01PRChkaXNwYywgaHdfdmlkZW9wb3J0LCBESVNQQ19PVlJfQVRU UklCVVRFUyh6cG9zKSwKPj4gK8KgwqDCoCBPVlJfUkVHX0ZMRF9NT0QoZGlzcGMsIGh3X3ZpZGVv cG9ydCwgRElTUENfT1ZSX0FUVFJJQlVURVMobGF5ZXIpLAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB4LCAxNywgNik7Cj4+IC3CoMKgwqAgT1ZSX1JFR19GTERfTU9EKGRpc3BjLCBod192 aWRlb3BvcnQsIERJU1BDX09WUl9BVFRSSUJVVEVTKHpwb3MpLAo+PiArwqDCoMKgIE9WUl9SRUdf RkxEX01PRChkaXNwYywgaHdfdmlkZW9wb3J0LCBESVNQQ19PVlJfQVRUUklCVVRFUyhsYXllciks Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHksIDMwLCAxOSk7Cj4+IMKgIH0KPj4gwqAg wqAgc3RhdGljIHZvaWQgZGlzcGNfajcyMWVfb3ZyX3NldF9wbGFuZShzdHJ1Y3QgZGlzcGNfZGV2 aWNlICpkaXNwYywKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB1MzIgaHdfcGxhbmUsIHUzMiBod192aWRlb3BvcnQsCj4+IC3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIHgsIHUzMiB5LCB1MzIgenBvcykKPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgeCwgdTMyIHksIHUz MiBsYXllcikKPj4gwqAgewo+PiAtwqDCoMKgIE9WUl9SRUdfRkxEX01PRChkaXNwYywgaHdfdmlk ZW9wb3J0LCBESVNQQ19PVlJfQVRUUklCVVRFUyh6cG9zKSwKPj4gK8KgwqDCoCBPVlJfUkVHX0ZM RF9NT0QoZGlzcGMsIGh3X3ZpZGVvcG9ydCwgRElTUENfT1ZSX0FUVFJJQlVURVMobGF5ZXIpLAo+ PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBod19wbGFuZSwgNCwgMSk7Cj4+IC3CoMKgwqAg T1ZSX1JFR19GTERfTU9EKGRpc3BjLCBod192aWRlb3BvcnQsIERJU1BDX09WUl9BVFRSSUJVVEVT Mih6cG9zKSwKPj4gK8KgwqDCoCBPVlJfUkVHX0ZMRF9NT0QoZGlzcGMsIGh3X3ZpZGVvcG9ydCwg RElTUENfT1ZSX0FUVFJJQlVURVMyKGxheWVyKSwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgeCwgMTMsIDApOwo+PiAtwqDCoMKgIE9WUl9SRUdfRkxEX01PRChkaXNwYywgaHdfdmlkZW9w b3J0LCBESVNQQ19PVlJfQVRUUklCVVRFUzIoenBvcyksCj4+ICvCoMKgwqAgT1ZSX1JFR19GTERf TU9EKGRpc3BjLCBod192aWRlb3BvcnQsIERJU1BDX09WUl9BVFRSSUJVVEVTMihsYXllciksCj4+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHksIDI5LCAxNik7Cj4+IMKgIH0KPj4gwqAgLXN0 YXRpYyB2b2lkIGRpc3BjX292cl9zZXRfcGxhbmUoc3RydWN0IGRpc3BjX2RldmljZSAqZGlzcGMs Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIGh3X3BsYW5lLCB1MzIgaHdf dmlkZW9wb3J0LAo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiB4LCB1MzIg eSwgdTMyIHpwb3MpCj4+ICt2b2lkIGRpc3BjX292cl9zZXRfcGxhbmUoc3RydWN0IGRpc3BjX2Rl dmljZSAqZGlzcGMsIHUzMiBod19wbGFuZSwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1 MzIgaHdfdmlkZW9wb3J0LCB1MzIgeCwgdTMyIHksIHUzMiBsYXllcikKPj4gwqAgewo+PiDCoMKg wqDCoMKgIHN3aXRjaCAoZGlzcGMtPmZlYXQtPnN1YnJldikgewo+PiDCoMKgwqDCoMKgIGNhc2Ug RElTUENfSzJHOgo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgZGlzcGNfazJnX292cl9zZXRfcGxhbmUo ZGlzcGMsIGh3X3BsYW5lLCBod192aWRlb3BvcnQsCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB4LCB5LCB6cG9zKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHgsIHksIGxheWVyKTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFr Owo+PiDCoMKgwqDCoMKgIGNhc2UgRElTUENfQU02NVg6Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBk aXNwY19hbTY1eF9vdnJfc2V0X3BsYW5lKGRpc3BjLCBod19wbGFuZSwgaHdfdmlkZW9wb3J0LAo+ PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHgsIHksIHpwb3Mp Owo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHgsIHksIGxh eWVyKTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOwo+PiDCoMKgwqDCoMKgIGNhc2UgRElT UENfSjcyMUU6Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBkaXNwY19qNzIxZV9vdnJfc2V0X3BsYW5l KGRpc3BjLCBod19wbGFuZSwgaHdfdmlkZW9wb3J0LAo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHgsIHksIHpwb3MpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHgsIHksIGxheWVyKTsKPj4gwqDCoMKgwqDCoMKgwqDC oMKgIGJyZWFrOwo+PiDCoMKgwqDCoMKgIGRlZmF1bHQ6Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBX QVJOX09OKDEpOwo+PiBAQCAtMTMwMSwxMCArMTI5MywxMyBAQCBzdGF0aWMgdm9pZCBkaXNwY19v dnJfc2V0X3BsYW5lKHN0cnVjdAo+PiBkaXNwY19kZXZpY2UgKmRpc3BjLAo+PiDCoMKgwqDCoMKg IH0KPj4gwqAgfQo+PiDCoCAtc3RhdGljIHZvaWQgZGlzcGNfb3ZyX2VuYWJsZV9wbGFuZShzdHJ1 Y3QgZGlzcGNfZGV2aWNlICpkaXNwYywKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB1MzIgaHdfdmlkZW9wb3J0LCB1MzIgenBvcywgYm9vbCBlbmFibGUpCj4+ICt2b2lk IGRpc3BjX292cl9lbmFibGVfbGF5ZXIoc3RydWN0IGRpc3BjX2RldmljZSAqZGlzcGMsCj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIGh3X3ZpZGVvcG9ydCwgdTMyIGxheWVy LCBib29sIGVuYWJsZSkKPj4gwqAgewo+PiAtwqDCoMKgIE9WUl9SRUdfRkxEX01PRChkaXNwYywg aHdfdmlkZW9wb3J0LCBESVNQQ19PVlJfQVRUUklCVVRFUyh6cG9zKSwKPj4gK8KgwqDCoCBpZiAo ZGlzcGMtPmZlYXQtPnN1YnJldiA9PSBESVNQQ19LMkcpCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1 cm47Cj4+ICsKPj4gK8KgwqDCoCBPVlJfUkVHX0ZMRF9NT0QoZGlzcGMsIGh3X3ZpZGVvcG9ydCwg RElTUENfT1ZSX0FUVFJJQlVURVMobGF5ZXIpLAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAhIWVuYWJsZSwgMCwgMCk7Cj4+IMKgIH0KPj4gwqAgQEAgLTIwNzAsMjEgKzIwNjUsMTEgQEAg aW50IGRpc3BjX3BsYW5lX3NldHVwKHN0cnVjdCBkaXNwY19kZXZpY2UKPj4gKmRpc3BjLCB1MzIg aHdfcGxhbmUsCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBWSURfUkVHX0ZMRF9NT0QoZGlzcGMsIGh3 X3BsYW5lLCBESVNQQ19WSURfQVRUUklCVVRFUywgMCwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAyOCwgMjgpOwo+PiDCoCAtwqDCoMKgIGRpc3BjX292cl9zZXRfcGxhbmUo ZGlzcGMsIGh3X3BsYW5lLCBod192aWRlb3BvcnQsCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgc3RhdGUtPmNydGNfeCwgc3RhdGUtPmNydGNfeSwKPj4gLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBzdGF0ZS0+bm9ybWFsaXplZF96cG9zKTsKPj4gLQo+PiAtwqDCoMKg IGRpc3BjLT5wbGFuZV9kYXRhW2h3X3BsYW5lXS56b3JkZXIgPSBzdGF0ZS0+bm9ybWFsaXplZF96 cG9zOwo+PiAtwqDCoMKgIGRpc3BjLT5wbGFuZV9kYXRhW2h3X3BsYW5lXS5od192aWRlb3BvcnQg PSBod192aWRlb3BvcnQ7Cj4+IC0KPj4gwqDCoMKgwqDCoCByZXR1cm4gMDsKPj4gwqAgfQo+PiDC oCDCoCBpbnQgZGlzcGNfcGxhbmVfZW5hYmxlKHN0cnVjdCBkaXNwY19kZXZpY2UgKmRpc3BjLCB1 MzIgaHdfcGxhbmUsCj4+IGJvb2wgZW5hYmxlKQo+PiDCoCB7Cj4+IC3CoMKgwqAgZGlzcGNfb3Zy X2VuYWJsZV9wbGFuZShkaXNwYywKPj4gZGlzcGMtPnBsYW5lX2RhdGFbaHdfcGxhbmVdLmh3X3Zp ZGVvcG9ydCwKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkaXNwYy0+ cGxhbmVfZGF0YVtod19wbGFuZV0uem9yZGVyLCBlbmFibGUpOwo+PiAtCj4+IMKgwqDCoMKgwqAg VklEX1JFR19GTERfTU9EKGRpc3BjLCBod19wbGFuZSwgRElTUENfVklEX0FUVFJJQlVURVMsICEh ZW5hYmxlLAo+PiAwLCAwKTsKPj4gwqAgwqDCoMKgwqDCoCByZXR1cm4gMDsKPj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS90aWRzcy90aWRzc19kaXNwYy5oCj4+IGIvZHJpdmVycy9ncHUv ZHJtL3RpZHNzL3RpZHNzX2Rpc3BjLmgKPj4gaW5kZXggZTY1ZTZhMmJiODIxLi5hNGE2ODI0OWU0 NGIgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS90aWRzcy90aWRzc19kaXNwYy5oCj4+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS90aWRzcy90aWRzc19kaXNwYy5oCj4+IEBAIC05NCw2ICs5 NCwxMSBAQCBleHRlcm4gY29uc3Qgc3RydWN0IGRpc3BjX2ZlYXR1cmVzIGRpc3BjX2o3MjFlX2Zl YXRzOwo+PiDCoCB2b2lkIGRpc3BjX3NldF9pcnFlbmFibGUoc3RydWN0IGRpc3BjX2RldmljZSAq ZGlzcGMsIGRpc3BjX2lycV90IG1hc2spOwo+PiDCoCBkaXNwY19pcnFfdCBkaXNwY19yZWFkX2Fu ZF9jbGVhcl9pcnFzdGF0dXMoc3RydWN0IGRpc3BjX2RldmljZSAqZGlzcGMpOwo+PiDCoCArdm9p ZCBkaXNwY19vdnJfc2V0X3BsYW5lKHN0cnVjdCBkaXNwY19kZXZpY2UgKmRpc3BjLCB1MzIgaHdf cGxhbmUsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIGh3X3ZpZGVvcG9ydCwgdTMy IHgsIHUzMiB5LCB1MzIgbGF5ZXIpOwo+PiArdm9pZCBkaXNwY19vdnJfZW5hYmxlX2xheWVyKHN0 cnVjdCBkaXNwY19kZXZpY2UgKmRpc3BjLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHUzMiBod192aWRlb3BvcnQsIHUzMiBsYXllciwgYm9vbCBlbmFibGUpOwo+PiArCj4+IMKg IHZvaWQgZGlzcGNfdnBfcHJlcGFyZShzdHJ1Y3QgZGlzcGNfZGV2aWNlICpkaXNwYywgdTMyIGh3 X3ZpZGVvcG9ydCwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnN0IHN0cnVj dCBkcm1fY3J0Y19zdGF0ZSAqc3RhdGUpOwo+PiDCoCB2b2lkIGRpc3BjX3ZwX2VuYWJsZShzdHJ1 Y3QgZGlzcGNfZGV2aWNlICpkaXNwYywgdTMyIGh3X3ZpZGVvcG9ydCwKPj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS90aWRzcy90aWRzc19rbXMuYwo+PiBiL2RyaXZlcnMvZ3B1L2RybS90 aWRzcy90aWRzc19rbXMuYwo+PiBpbmRleCA1MzExZTBmMWM1NTEuLjI0YjNmMDJiOTBjNiAxMDA2 NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3RpZHNzL3RpZHNzX2ttcy5jCj4+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS90aWRzcy90aWRzc19rbXMuYwo+PiBAQCAtNDcsOSArNDcsNTYgQEAgc3Rh dGljIGNvbnN0IHN0cnVjdCBkcm1fbW9kZV9jb25maWdfaGVscGVyX2Z1bmNzCj4+IG1vZGVfY29u ZmlnX2hlbHBlcl9mdW5jcyA9IHsKPj4gwqDCoMKgwqDCoCAuYXRvbWljX2NvbW1pdF90YWlsID0g dGlkc3NfYXRvbWljX2NvbW1pdF90YWlsLAo+PiDCoCB9Owo+PiDCoCArc3RhdGljIGludCB0aWRz c19hdG9taWNfY2hlY2soc3RydWN0IGRybV9kZXZpY2UgKmRkZXYsCj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPj4g K3sKPj4gK8KgwqDCoCBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpvcHN0YXRlOwo+PiArwqDCoMKg IHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm5wc3RhdGU7Cj4+ICvCoMKgwqAgc3RydWN0IGRybV9w bGFuZSAqcGxhbmU7Cj4+ICvCoMKgwqAgc3RydWN0IGRybV9jcnRjX3N0YXRlICpjc3RhdGU7Cj4+ ICvCoMKgwqAgc3RydWN0IGRybV9jcnRjICpjcnRjOwo+PiArwqDCoMKgIGludCByZXQsIGk7Cj4+ ICsKPj4gK8KgwqDCoCByZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9jaGVjayhkZGV2LCBzdGF0ZSk7 Cj4+ICvCoMKgwqAgaWYgKHJldCkKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7Cj4+ICsK Pj4gK8KgwqDCoCAvKgo+PiArwqDCoMKgwqAgKiBJZiBhIHBsYW5lIG9uIGEgQ1JUQyBjaGFuZ2Vz IGFkZCBhbGwgYWN0aXZlIHBsYW5lcyBvbiB0aGF0Cj4gCj4gT25seSBpZiB0aGUgcGxhbmUncyBw b3NpdGlvbiAoeC95L3opIGNoYW5nZXMuCj4gCgpPay4KCj4+ICvCoMKgwqDCoCAqIENSVEMgdG8g dGhlIGF0b21pYyBzdGF0ZS4gVGhpcyBpcyBuZWVkZWQgZm9yIHVwZGF0aW5nIHRoZQo+PiArwqDC oMKgwqAgKiBwbGFuZSBwb3NpdGlvbnMgaW4gdGlkc3NfY3J0Y19wb3NpdGlvbl9wbGFuZXMoKSB3 aGljaCBpcwo+PiArwqDCoMKgwqAgKiBjYWxsZWQgZnJvbSBjcnRjX2F0b21pY19lbmFibGUoKSBh bmQgY3J0Y19hdG9taWNfZmx1c2goKS4KPj4gK8KgwqDCoMKgICogVGhlIHVwZGF0ZSBpcyBuZWVk ZWQgZm9yIHgseS1wb3NpdGlvbiBjaGFuZ2VzIHRvbywgc28KPj4gK8KgwqDCoMKgICogenBvc19j aGFuZ2VkIGNvbmRpdGlvbiBpcyBub3QgZW5vdWdoIGFuZCB3ZSBuZWVkIGFkZCB0aGUKPj4gK8Kg wqDCoMKgICogb3VyIG93biBwbGFuZV9wb3NfY2hhbmdlZCBmbGFnLgo+IAo+IFN0cmljdGx5IHNw ZWFraW5nLCB3ZSBkb24ndCBuZWVkIHRvIGFkZCBhbGwgYWN0aXZlIHBsYW5lcyBpZiBvbmx5Cj4g cGxhbmUncyB4L3kgcG9zIGNoYW5nZXMuIEluIHRoYXQgY2FzZSBpdCdzIGVub3VnaCB0byBqdXN0 IHVwZGF0ZSB0aGUgT1ZSCj4gbGF5ZXIncyB4ICYgeS4KPiAKClRoZSB3ZSBhcmUgYmFjayB0byBw bGFuZS1zcGVjaWZpYyB1cGRhdGVzLiBUaGUgd2hvbGUgaWRlYSBvZiB0aGlzIGZpeCBpcwp0byBr ZWVwIHRoaW5ncyBzaW1wbGUgYW5kIGp1c3QgdXBkYXRlIGFsbCBvdnIgbGF5ZXJzIGlmIGFueXRo aW5nIHRoZXJlCmNoYW5nZXMuCgo+IEFuZCB3aGVuIGEgcGxhbmUgaXMgZW5hYmxlZCBvciBkaXNh YmxlZCwgd2UgbmVlZCB0byB1cGRhdGUgT1ZSLiBEb2VzIHRoZQo+IGNvZGUgaGFuZGxlZCB0aGF0 PyBLZWVwaW5nIHBsYW5lJ3MgeC95L3ogcG9zIHRoZSBzYW1lLCBidXQgZW5hYmxpbmcgYW5kCj4g ZGlzYWJsaW5nIGl0LiBJIHRoaW5rIGJvdGggenBvc19jaGFuZ2VkIGFuZCBwb3NfY2hhbmdlZCBj b3VsZCBiZSBmYWxzZQo+IGluIHRoYXQgY2FzZS4KPiAKCnpwb3NfY2hhbmdlZCBmbGFnIGhhbmRs ZXMgdGhhdC4gSWYgYW55IHBsYW5lIG9uIHRoZSBjcnRjIGlzCmRpc2FibGVkL2VuYWJsZWQvbW92 ZWQgdGhlbiB0aGUgZmxhZyBpcyBzZXQgKGluCmRybV9hdG9taWNfbm9ybWFsaXplX3pwb3MoKSku Cgo+PiArwqDCoMKgwqAgKi8KPj4gK8KgwqDCoCBmb3JfZWFjaF9vbGRuZXdfcGxhbmVfaW5fc3Rh dGUoc3RhdGUsIHBsYW5lLCBvcHN0YXRlLCBucHN0YXRlLCBpKSB7Cj4+ICvCoMKgwqDCoMKgwqDC oCBpZiAobnBzdGF0ZS0+Y3J0YyAmJiBucHN0YXRlLT52aXNpYmxlICYmCj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgICghb3BzdGF0ZS0+Y3J0YyB8fAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIG9wc3RhdGUtPmNydGNfeCAhPSBucHN0YXRlLT5jcnRjX3ggfHwKPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBvcHN0YXRlLT5jcnRjX3kgIT0gbnBzdGF0ZS0+Y3J0Y195KSkgewo+IAo+ IFRoZSBhYm92ZSBiZWNvbWVzIGEgYml0IGVhc2llciB0byByZWFkIGlmIHlvdSBmaXJzdDoKPiAK PiBpZiAoIW5wc3RhdGUtPmNydGMgfHwgIW5wc3RhdGUtPnZpc2libGUpCj4gwqDCoMKgwqBjb250 aW51ZTsKPiAKClN1cmUuCgo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjc3RhdGUgPSBkcm1f YXRvbWljX2dldF9jcnRjX3N0YXRlKHN0YXRlLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG5wc3RhdGUtPmNydGMpOwo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoSVNfRVJSKGNzdGF0ZSkpCj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIFBUUl9FUlIoY3N0YXRlKTsKPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqAgdG9fdGlkc3NfY3J0Y19zdGF0ZShjc3RhdGUpLT5wbGFuZV9wb3NfY2hh bmdlZCA9IHRydWU7Cj4+ICvCoMKgwqDCoMKgwqDCoCB9Cj4+ICvCoMKgwqAgfQo+IAo+IEFkZCBi bGFuayBsaW5lIGhlcmUuCj4gCgpUaGUgdHdvIGxvb3BzIGFyZSBwYXJ0IG9mIHRoZSBzYW1lIHBy b2NlZHVyZSwgYnV0IG5ldmVyIG1pbmQgSSdsbCBhZGQgYQpuZXdsaW5lLgoKPj4gK8KgwqDCoCBm b3JfZWFjaF9uZXdfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgY3N0YXRlLCBpKSB7Cj4+ICvC oMKgwqDCoMKgwqDCoCBpZiAodG9fdGlkc3NfY3J0Y19zdGF0ZShjc3RhdGUpLT5wbGFuZV9wb3Nf Y2hhbmdlZCB8fAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjc3RhdGUtPnpwb3NfY2hhbmdl ZCkgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXQgPSBkcm1fYXRvbWljX2FkZF9hZmZl Y3RlZF9wbGFuZXMoc3RhdGUsIGNydGMpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAo cmV0KQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7Cj4+ICvC oMKgwqDCoMKgwqDCoCB9Cj4+ICvCoMKgwqAgfQo+IAo+IMKgVG9taQo+IAoKCi0tIApUZXhhcyBJ bnN0cnVtZW50cyBGaW5sYW5kIE95LCBQb3Jra2FsYW5rYXR1IDIyLCAwMDE4MCBIZWxzaW5raS4K WS10dW5udXMvQnVzaW5lc3MgSUQ6IDA2MTU1MjEtNC4gS290aXBhaWtrYS9Eb21pY2lsZTogSGVs c2lua2kKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJp LWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==