Received: by 2002:a05:6a10:22f:0:0:0:0 with SMTP id 15csp1354478pxk; Fri, 4 Sep 2020 07:26:56 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwm5GnsJBH/T5r3SUzrUG4iCxcYAnzIHqfZdUhsqVdYw+YVgGxL0Ji0j/uvJiQw4tuBu/SD X-Received: by 2002:aa7:cf93:: with SMTP id z19mr9161794edx.187.1599229616622; Fri, 04 Sep 2020 07:26:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1599229616; cv=none; d=google.com; s=arc-20160816; b=XEUoP6nNUQ90JNCU08AK25NksNwPsq7sjMe6OL+1SwBDlOVir246i/e+hU1EPrI6fP ndHjMzUgb8XSryUFjOqCDiqVHIbgl9cmSEaRaDiqd20v7jlwoM/FH4A6XabLHAYd3urJ ZL2Dd//QNUeq7bp1flf43vsXWKtsV8C5IlaYbLkwAhYyC81wpWwJDael+NNxWAcVEXFV etKixwP5S+6VibqoS26uPSx33i69hvDA8doCKN97Ojiz6L3tgKRW0rAZWs5EQ07OKWyN rEu03o8RH/yA1n8cauBWme3oXoarootuh9hsBYGUgGAZRNuT/5ZTM/tUkFA/OPozNafl sjDw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=HMzjvIhhXFJJBpchEoIwFm7e22Gb3tL5bgiQKPK/YWU=; b=iTJgZTyCuRX8+x5QbbSUUMxJ6o8HuFbIZBdxJ6sNYNHHa8ICg7sUF8QuGKZkaRjwrN H4Xrfk40OlaCiwSnpff3QjY1TMk3o2FhSmyOnAaxd7aQWDNQSlJRYAbnp2DIXNpCk2j1 HsWcaFJkM9V6JGzMnQvJmL8MUYTExOuR5BVhQ3gtAD4PPOTt/ggzCDVVOMjLb0Wr3JX4 KS4e6DZ8wYVdFnVPOQhzIy/7wguA5l8jkZhxUDWTdCVv/Cf/LUswBR/fL1OzggVBk2VC e87/uz7/R1QxaIrD6gE+rtvCb9yQr/R+xvAg1QnGAYA3pk7egnJcjdxV7IxUFr7SDSGS 5gNg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b="FQsXA/NL"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id ng3si3972173ejb.720.2020.09.04.07.26.33; Fri, 04 Sep 2020 07:26:56 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b="FQsXA/NL"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730496AbgIDOXx (ORCPT + 99 others); Fri, 4 Sep 2020 10:23:53 -0400 Received: from mailgw02.mediatek.com ([210.61.82.184]:39965 "EHLO mailgw02.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1730525AbgIDOWs (ORCPT ); Fri, 4 Sep 2020 10:22:48 -0400 X-UUID: 7eedf02fe4754599adaf7bac96400217-20200904 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:CC:To:From; bh=HMzjvIhhXFJJBpchEoIwFm7e22Gb3tL5bgiQKPK/YWU=; b=FQsXA/NLzguXkH5wquiSI1Gm9NXHo1ggNS35TmyirWf9meldFjTFul9vSHO8x9lkJewA38ADoIkj+SbKE/4JEi0skITz3jx4Z9LM3HrTHefLHlj+QFZtLPqZeEQTGyC6gbMv1aUy7pNQR4HbANjl/Yyu2mBaXgIEbGCHq4Mb/hc=; X-UUID: 7eedf02fe4754599adaf7bac96400217-20200904 Received: from mtkcas11.mediatek.inc [(172.21.101.40)] by mailgw02.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.14 Build 0819 with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 298327590; Fri, 04 Sep 2020 22:22:30 +0800 Received: from MTKCAS06.mediatek.inc (172.21.101.30) by mtkmbs07n1.mediatek.inc (172.21.101.16) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Fri, 4 Sep 2020 22:22:27 +0800 Received: from mtksdccf07.mediatek.inc (172.21.84.99) by MTKCAS06.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Fri, 4 Sep 2020 22:22:27 +0800 From: Landen Chao To: Andrew Lunn , Vivien Didelot , Florian Fainelli , "David S . Miller" , Jakub Kicinski , Rob Herring , Matthias Brugger , Sean Wang , Philipp Zabel , Russell King CC: , , , , , , , , Landen Chao Subject: [PATCH net-next v3 4/6] net: dsa: mt7530: Add the support of MT7531 switch Date: Fri, 4 Sep 2020 22:21:59 +0800 Message-ID: <63041b5c2c346b874e92761b3b3d6553106dde98.1599228079.git.landen.chao@mediatek.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain X-MTK: N Content-Transfer-Encoding: base64 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org QWRkIG5ldyBzdXBwb3J0IGZvciBNVDc1MzE6DQoNCk1UNzUzMSBpcyB0aGUgbmV4dCBnZW5lcmF0 aW9uIG9mIE1UNzUzMC4gSXQgaXMgYWxzbyBhIDctcG9ydHMgc3dpdGNoIHdpdGgNCjUgZ2lnYSBl bWJlZGRlZCBwaHlzLCAyIGNwdSBwb3J0cywgYW5kIHRoZSBzYW1lIE1BQyBsb2dpYyBvZiBNVDc1 MzAuIENwdQ0KcG9ydCA2IG9ubHkgc3VwcG9ydHMgU0dNSUkgaW50ZXJmYWNlLiBDcHUgcG9ydCA1 IHN1cHBvcnRzIGVpdGhlciBSR01JSQ0Kb3IgU0dNSUkgaW4gZGlmZmVyZW50IEhXIHNrdSwgYnV0 IGNhbm5vdCBiZSBtdXhlZCB0byBQSFkgb2YgcG9ydCAwLzQgbGlrZQ0KbXQ3NTMwLiBEdWUgdG8g U0dNSUkgaW50ZXJmYWNlIHN1cHBvcnQsIHBsbCwgYW5kIHBhZCBzZXR0aW5nIGFyZSBkaWZmZXJl bnQNCmZyb20gTVQ3NTMwLiBUaGlzIHBhdGNoIGFkZHMgZGlmZmVyZW50IGluaXRpYWwgc2V0dGlu ZywgYW5kIFNHTUlJIHBoeWxpbmsNCmhhbmRsZXJzIG9mIE1UNzUzMS4NCg0KTVQ3NTMxIFNHTUlJ IGludGVyZmFjZSBjYW4gYmUgY29uZmlndXJlZCBpbiBmb2xsb3dpbmcgbW9kZToNCi0gJ1NHTUlJ IEFOIG1vZGUnIHdpdGggaW4tYmFuZCBuZWdvdGlhdGlvbiBjYXBhYmlsaXR5DQogICAgd2hpY2gg aXMgY29tcGF0aWJsZSB3aXRoIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSS4NCi0gJ1NHTUlJIGZv cmNlIG1vZGUnIHdpdGhvdXQgaW4tYmFuZCBuZWdvdGlhdGlvbg0KICAgIHdoaWNoIGlzIGNvbXBh dGlibGUgd2l0aCAxMEIvOEIgZW5jb2Rpbmcgb2YNCiAgICBQSFlfSU5URVJGQUNFX01PREVfMTAw MEJBU0VYIHdpdGggZml4ZWQgZnVsbC1kdXBsZXggYW5kIGZpeGVkIHBhdXNlLg0KLSAyLjUgdGlt ZXMgZmFzdGVyIGNsb2NrZWQgJ1NHTUlJIGZvcmNlIG1vZGUnIHdpdGhvdXQgaW4tYmFuZCBuZWdv dGlhdGlvbg0KICAgIHdoaWNoIGlzIGNvbXBhdGlibGUgd2l0aCAxMEIvOEIgZW5jb2Rpbmcgb2YN CiAgICBQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYIHdpdGggZml4ZWQgZnVsbC1kdXBsZXgg YW5kIGZpeGVkIHBhdXNlLg0KDQpTaWduZWQtb2ZmLWJ5OiBMYW5kZW4gQ2hhbyA8bGFuZGVuLmNo YW9AbWVkaWF0ZWsuY29tPg0KU2lnbmVkLW9mZi1ieTogU2VhbiBXYW5nIDxzZWFuLndhbmdAbWVk aWF0ZWsuY29tPg0KLS0tDQogZHJpdmVycy9uZXQvZHNhL0tjb25maWcgIHwgICA2ICstDQogZHJp dmVycy9uZXQvZHNhL210NzUzMC5jIHwgOTE4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrLQ0KIGRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuaCB8IDIyMiArKysrKysrKysrDQog MyBmaWxlcyBjaGFuZ2VkLCAxMTE5IGluc2VydGlvbnMoKyksIDI3IGRlbGV0aW9ucygtKQ0KDQpk aWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL0tjb25maWcgYi9kcml2ZXJzL25ldC9kc2EvS2Nv bmZpZw0KaW5kZXggMDZkNjhhODQ4Nzc0Li4yNDUxZjYxYTM4ZTQgMTAwNjQ0DQotLS0gYS9kcml2 ZXJzL25ldC9kc2EvS2NvbmZpZw0KKysrIGIvZHJpdmVycy9uZXQvZHNhL0tjb25maWcNCkBAIC0z MywxMiArMzMsMTIgQEAgY29uZmlnIE5FVF9EU0FfTEFOVElRX0dTV0lQDQogCSAgdGhlIHhyeDIw MCAvIFZSOSBTb0MuDQogDQogY29uZmlnIE5FVF9EU0FfTVQ3NTMwDQotCXRyaXN0YXRlICJNZWRp YVRlayBNVDc1MzAgYW5kIE1UNzYyMSBFdGhlcm5ldCBzd2l0Y2ggc3VwcG9ydCINCisJdHJpc3Rh dGUgIk1lZGlhVGVrIE1UNzUzeCBhbmQgTVQ3NjIxIEV0aGVybmV0IHN3aXRjaCBzdXBwb3J0Ig0K IAlkZXBlbmRzIG9uIE5FVF9EU0ENCiAJc2VsZWN0IE5FVF9EU0FfVEFHX01USw0KIAloZWxwDQot CSAgVGhpcyBlbmFibGVzIHN1cHBvcnQgZm9yIHRoZSBNZWRpYVRlayBNVDc1MzAgYW5kIE1UNzYy MSBFdGhlcm5ldA0KLQkgIHN3aXRjaCBjaGlwLg0KKwkgIFRoaXMgZW5hYmxlcyBzdXBwb3J0IGZv ciB0aGUgTWVkaWFUZWsgTVQ3NTMwLCBNVDc1MzEsIGFuZCBNVDc2MjENCisJICBFdGhlcm5ldCBz d2l0Y2ggY2hpcHMuDQogDQogY29uZmlnIE5FVF9EU0FfTVY4OEU2MDYwDQogCXRyaXN0YXRlICJN YXJ2ZWxsIDg4RTYwNjAgZXRoZXJuZXQgc3dpdGNoIGNoaXAgc3VwcG9ydCINCmRpZmYgLS1naXQg YS9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMgYi9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMNCmlu ZGV4IDE1YzkzNGYxMGRkZC4uNTNiNzEzYzllZmIwIDEwMDY0NA0KLS0tIGEvZHJpdmVycy9uZXQv ZHNhL210NzUzMC5jDQorKysgYi9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMNCkBAIC0yMzMsNiAr MjMzLDEyIEBAIG10NzUzMF93cml0ZShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUzMiByZWcs IHUzMiB2YWwpDQogCW11dGV4X3VubG9jaygmYnVzLT5tZGlvX2xvY2spOw0KIH0NCiANCitzdGF0 aWMgdTMyDQorX210NzUzMF91bmxvY2tlZF9yZWFkKHN0cnVjdCBtdDc1MzBfZHVtbXlfcG9sbCAq cCkNCit7DQorCXJldHVybiBtdDc1MzBfbWlpX3JlYWQocC0+cHJpdiwgcC0+cmVnKTsNCit9DQor DQogc3RhdGljIHUzMg0KIF9tdDc1MzBfcmVhZChzdHJ1Y3QgbXQ3NTMwX2R1bW15X3BvbGwgKnAp DQogew0KQEAgLTQ4Myw2ICs0ODksMTA4IEBAIG10NzUzMF9wYWRfY2xrX3NldHVwKHN0cnVjdCBk c2Ffc3dpdGNoICpkcywgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSkNCiAJcmV0dXJuIDA7DQog fQ0KIA0KK3N0YXRpYyBib29sIG10NzUzMV9kdWFsX3NnbWlpX3N1cHBvcnRlZChzdHJ1Y3QgbXQ3 NTMwX3ByaXYgKnByaXYpDQorew0KKwl1MzIgdmFsOw0KKw0KKwl2YWwgPSBtdDc1MzBfcmVhZChw cml2LCBNVDc1MzFfVE9QX1NJR19TUik7DQorDQorCXJldHVybiAodmFsICYgUEFEX0RVQUxfU0dN SUlfRU4pICE9IDA7DQorfQ0KKw0KK3N0YXRpYyBpbnQNCittdDc1MzFfcGFkX3NldHVwKHN0cnVj dCBkc2Ffc3dpdGNoICpkcywgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSkNCit7DQorCXN0cnVj dCBtdDc1MzBfcHJpdiAqcHJpdiA9IGRzLT5wcml2Ow0KKwl1MzIgdmFsOw0KKwl1MzIgdG9wX3Np ZzsNCisJdTMyIGh3c3RyYXA7DQorCXUzMiB4dGFsOw0KKw0KKwlpZiAobXQ3NTMxX2R1YWxfc2dt aWlfc3VwcG9ydGVkKHByaXYpKQ0KKwkJcmV0dXJuIDA7DQorDQorCXZhbCA9IG10NzUzMF9yZWFk KHByaXYsIE1UNzUzMV9DUkVWKTsNCisJdG9wX3NpZyA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUz MV9UT1BfU0lHX1NSKTsNCisJaHdzdHJhcCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9IV1RS QVApOw0KKwlpZiAoKHZhbCAmIENISVBfUkVWX00pID4gMCkNCisJCXh0YWwgPSAodG9wX3NpZyAm IFBBRF9NQ01fU01JX0VOKSA/IEhXVFJBUF9YVEFMX0ZTRUxfNDBNSFogOg0KKwkJCQkJCSAgICBI V1RSQVBfWFRBTF9GU0VMXzI1TUhaOw0KKwllbHNlDQorCQl4dGFsID0gaHdzdHJhcCAmIEhXVFJB UF9YVEFMX0ZTRUxfTUFTSzsNCisNCisJLyogU3RlcCAxIDogRGlzYWJsZSBNVDc1MzEgQ09SRVBM TCAqLw0KKwl2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfRU4pOw0KKwl2YWwg Jj0gfkVOX0NPUkVQTEw7DQorCW10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfRU4sIHZh bCk7DQorDQorCS8qIFN0ZXAgMjogc3dpdGNoIHRvIFhUQUwgb3V0cHV0ICovDQorCXZhbCA9IG10 NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9FTik7DQorCXZhbCB8PSBTV19DTEtTVzsNCisJ bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9FTiwgdmFsKTsNCisNCisJdmFsID0gbXQ3 NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCk7DQorCXZhbCAmPSB+UkdfQ09SRVBMTF9F TjsNCisJbXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9DUjAsIHZhbCk7DQorDQorCS8q IFN0ZXAgMzogZGlzYWJsZSBQTExHUCBhbmQgZW5hYmxlIHByb2dyYW0gUExMR1AgKi8NCisJdmFs ID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BMTEdQX0VOKTsNCisJdmFsIHw9IFNXX1BMTEdQ Ow0KKwltdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1BMTEdQX0VOLCB2YWwpOw0KKw0KKwkvKiBT dGVwIDQ6IHByb2dyYW0gQ09SRVBMTCBvdXRwdXQgZnJlcXVlbmN5IHRvIDUwME1IeiAqLw0KKwl2 YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfQ1IwKTsNCisJdmFsICY9IH5SR19D T1JFUExMX1BPU0RJVl9NOw0KKwl2YWwgfD0gMiA8PCBSR19DT1JFUExMX1BPU0RJVl9TOw0KKwlt dDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCwgdmFsKTsNCisJdXNsZWVwX3Jhbmdl KDI1LCAzNSk7DQorDQorCXN3aXRjaCAoeHRhbCkgew0KKwljYXNlIEhXVFJBUF9YVEFMX0ZTRUxf MjVNSFo6DQorCQl2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfQ1IwKTsNCisJ CXZhbCAmPSB+UkdfQ09SRVBMTF9TRE1fUENXX007DQorCQl2YWwgfD0gMHgxNDAwMDAgPDwgUkdf Q09SRVBMTF9TRE1fUENXX1M7DQorCQltdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1BMTEdQX0NS MCwgdmFsKTsNCisJCWJyZWFrOw0KKwljYXNlIEhXVFJBUF9YVEFMX0ZTRUxfNDBNSFo6DQorCQl2 YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfQ1IwKTsNCisJCXZhbCAmPSB+Ukdf Q09SRVBMTF9TRE1fUENXX007DQorCQl2YWwgfD0gMHgxOTAwMDAgPDwgUkdfQ09SRVBMTF9TRE1f UENXX1M7DQorCQltdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCwgdmFsKTsNCisJ CWJyZWFrOw0KKwl9Ow0KKw0KKwkvKiBTZXQgZmVlZGJhY2sgZGl2aWRlIHJhdGlvIHVwZGF0ZSBz aWduYWwgdG8gaGlnaCAqLw0KKwl2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1Bf Q1IwKTsNCisJdmFsIHw9IFJHX0NPUkVQTExfU0RNX1BDV19DSEc7DQorCW10NzUzMF93cml0ZShw cml2LCBNVDc1MzFfUExMR1BfQ1IwLCB2YWwpOw0KKwkvKiBXYWl0IGZvciBhdCBsZWFzdCAxNiBY VEFMIGNsb2NrcyAqLw0KKwl1c2xlZXBfcmFuZ2UoMTAsIDIwKTsNCisNCisJLyogU3RlcCA1OiBz ZXQgZmVlZGJhY2sgZGl2aWRlIHJhdGlvIHVwZGF0ZSBzaWduYWwgdG8gbG93ICovDQorCXZhbCA9 IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9DUjApOw0KKwl2YWwgJj0gflJHX0NPUkVQ TExfU0RNX1BDV19DSEc7DQorCW10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfQ1IwLCB2 YWwpOw0KKw0KKwkvKiBFbmFibGUgMzI1TSBjbG9jayBmb3IgU0dNSUkgKi8NCisJbXQ3NTMwX3dy aXRlKHByaXYsIE1UNzUzMV9BTkFfUExMR1BfQ1I1LCAweGFkMDAwMCk7DQorDQorCS8qIEVuYWJs ZSAyNTBTU0MgY2xvY2sgZm9yIFJHTUlJICovDQorCW10NzUzMF93cml0ZShwcml2LCBNVDc1MzFf QU5BX1BMTEdQX0NSMiwgMHg0ZjQwMDAwKTsNCisNCisJLyogU3RlcCA2OiBFbmFibGUgTVQ3NTMx IFBMTCAqLw0KKwl2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfQ1IwKTsNCisJ dmFsIHw9IFJHX0NPUkVQTExfRU47DQorCW10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1Bf Q1IwLCB2YWwpOw0KKw0KKwl2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfRU4p Ow0KKwl2YWwgfD0gRU5fQ09SRVBMTDsNCisJbXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExH UF9FTiwgdmFsKTsNCisJdXNsZWVwX3JhbmdlKDI1LCAzNSk7DQorDQorCXJldHVybiAwOw0KK30N CisNCiBzdGF0aWMgdm9pZA0KIG10NzUzMF9taWJfcmVzZXQoc3RydWN0IGRzYV9zd2l0Y2ggKmRz KQ0KIHsNCkBAIC01MDcsNiArNjE1LDIxNyBAQCBzdGF0aWMgaW50IG10NzUzMF9waHlfd3JpdGUo c3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgaW50IHJlZ251bSwNCiAJcmV0dXJuIG1k aW9idXNfd3JpdGVfbmVzdGVkKHByaXYtPmJ1cywgcG9ydCwgcmVnbnVtLCB2YWwpOw0KIH0NCiAN CitzdGF0aWMgaW50DQorbXQ3NTMxX2luZF9jNDVfcGh5X3JlYWQoc3RydWN0IG10NzUzMF9wcml2 ICpwcml2LCBpbnQgcG9ydCwgaW50IGRldmFkLA0KKwkJCWludCByZWdudW0pDQorew0KKwlzdHJ1 Y3QgbWlpX2J1cyAqYnVzID0gcHJpdi0+YnVzOw0KKwlzdHJ1Y3QgbXQ3NTMwX2R1bW15X3BvbGwg cDsNCisJdTMyIHJlZywgdmFsOw0KKwlpbnQgcmV0Ow0KKw0KKwlJTklUX01UNzUzMF9EVU1NWV9Q T0xMKCZwLCBwcml2LCBNVDc1MzFfUEhZX0lBQyk7DQorDQorCW11dGV4X2xvY2tfbmVzdGVkKCZi dXMtPm1kaW9fbG9jaywgTURJT19NVVRFWF9ORVNURUQpOw0KKw0KKwlyZXQgPSByZWFkeF9wb2xs X3RpbWVvdXQoX210NzUzMF91bmxvY2tlZF9yZWFkLCAmcCwgdmFsLA0KKwkJCQkgISh2YWwgJiBN VDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApOw0KKwlpZiAocmV0IDwgMCkgew0KKwkJZGV2 X2Vycihwcml2LT5kZXYsICJwb2xsIHRpbWVvdXRcbiIpOw0KKwkJZ290byBvdXQ7DQorCX0NCisN CisJcmVnID0gTVQ3NTMxX01ESU9fQ0w0NV9BRERSIHwgTVQ3NTMxX01ESU9fUEhZX0FERFIocG9y dCkgfA0KKwkgICAgICBNVDc1MzFfTURJT19ERVZfQUREUihkZXZhZCkgfCByZWdudW07DQorCW10 NzUzMF9taWlfd3JpdGUocHJpdiwgTVQ3NTMxX1BIWV9JQUMsIHJlZyB8IE1UNzUzMV9QSFlfQUNT X1NUKTsNCisNCisJcmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KF9tdDc1MzBfdW5sb2NrZWRfcmVh ZCwgJnAsIHZhbCwNCisJCQkJICEodmFsICYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAw KTsNCisJaWYgKHJldCA8IDApIHsNCisJCWRldl9lcnIocHJpdi0+ZGV2LCAicG9sbCB0aW1lb3V0 XG4iKTsNCisJCWdvdG8gb3V0Ow0KKwl9DQorDQorCXJlZyA9IE1UNzUzMV9NRElPX0NMNDVfUkVB RCB8IE1UNzUzMV9NRElPX1BIWV9BRERSKHBvcnQpIHwNCisJICAgICAgTVQ3NTMxX01ESU9fREVW X0FERFIoZGV2YWQpOw0KKwltdDc1MzBfbWlpX3dyaXRlKHByaXYsIE1UNzUzMV9QSFlfSUFDLCBy ZWcgfCBNVDc1MzFfUEhZX0FDU19TVCk7DQorDQorCXJldCA9IHJlYWR4X3BvbGxfdGltZW91dChf bXQ3NTMwX3VubG9ja2VkX3JlYWQsICZwLCB2YWwsDQorCQkJCSAhKHZhbCAmIE1UNzUzMV9QSFlf QUNTX1NUKSwgMjAsIDEwMDAwMCk7DQorCWlmIChyZXQgPCAwKSB7DQorCQlkZXZfZXJyKHByaXYt PmRldiwgInBvbGwgdGltZW91dFxuIik7DQorCQlnb3RvIG91dDsNCisJfQ0KKw0KKwlyZXQgPSB2 YWwgJiBNVDc1MzFfTURJT19SV19EQVRBX01BU0s7DQorb3V0Og0KKwltdXRleF91bmxvY2soJmJ1 cy0+bWRpb19sb2NrKTsNCisNCisJcmV0dXJuIHJldDsNCit9DQorDQorc3RhdGljIGludA0KK210 NzUzMV9pbmRfYzQ1X3BoeV93cml0ZShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0 LCBpbnQgZGV2YWQsDQorCQkJIGludCByZWdudW0sIHUzMiBkYXRhKQ0KK3sNCisJc3RydWN0IG1p aV9idXMgKmJ1cyA9IHByaXYtPmJ1czsNCisJc3RydWN0IG10NzUzMF9kdW1teV9wb2xsIHA7DQor CXUzMiB2YWwsIHJlZzsNCisJaW50IHJldDsNCisNCisJSU5JVF9NVDc1MzBfRFVNTVlfUE9MTCgm cCwgcHJpdiwgTVQ3NTMxX1BIWV9JQUMpOw0KKw0KKwltdXRleF9sb2NrX25lc3RlZCgmYnVzLT5t ZGlvX2xvY2ssIE1ESU9fTVVURVhfTkVTVEVEKTsNCisNCisJcmV0ID0gcmVhZHhfcG9sbF90aW1l b3V0KF9tdDc1MzBfdW5sb2NrZWRfcmVhZCwgJnAsIHZhbCwNCisJCQkJICEodmFsICYgTVQ3NTMx X1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTsNCisJaWYgKHJldCA8IDApIHsNCisJCWRldl9lcnIo cHJpdi0+ZGV2LCAicG9sbCB0aW1lb3V0XG4iKTsNCisJCWdvdG8gb3V0Ow0KKwl9DQorDQorCXJl ZyA9IE1UNzUzMV9NRElPX0NMNDVfQUREUiB8IE1UNzUzMV9NRElPX1BIWV9BRERSKHBvcnQpIHwN CisJICAgICAgTVQ3NTMxX01ESU9fREVWX0FERFIoZGV2YWQpIHwgcmVnbnVtOw0KKwltdDc1MzBf bWlpX3dyaXRlKHByaXYsIE1UNzUzMV9QSFlfSUFDLCByZWcgfCBNVDc1MzFfUEhZX0FDU19TVCk7 DQorDQorCXJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3VubG9ja2VkX3JlYWQsICZw LCB2YWwsDQorCQkJCSAhKHZhbCAmIE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7DQor CWlmIChyZXQgPCAwKSB7DQorCQlkZXZfZXJyKHByaXYtPmRldiwgInBvbGwgdGltZW91dFxuIik7 DQorCQlnb3RvIG91dDsNCisJfQ0KKw0KKwlyZWcgPSBNVDc1MzFfTURJT19DTDQ1X1dSSVRFIHwg TVQ3NTMxX01ESU9fUEhZX0FERFIocG9ydCkgfA0KKwkgICAgICBNVDc1MzFfTURJT19ERVZfQURE UihkZXZhZCkgfCBkYXRhOw0KKwltdDc1MzBfbWlpX3dyaXRlKHByaXYsIE1UNzUzMV9QSFlfSUFD LCByZWcgfCBNVDc1MzFfUEhZX0FDU19TVCk7DQorDQorCXJldCA9IHJlYWR4X3BvbGxfdGltZW91 dChfbXQ3NTMwX3VubG9ja2VkX3JlYWQsICZwLCB2YWwsDQorCQkJCSAhKHZhbCAmIE1UNzUzMV9Q SFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7DQorCWlmIChyZXQgPCAwKSB7DQorCQlkZXZfZXJyKHBy aXYtPmRldiwgInBvbGwgdGltZW91dFxuIik7DQorCQlnb3RvIG91dDsNCisJfQ0KKw0KK291dDoN CisJbXV0ZXhfdW5sb2NrKCZidXMtPm1kaW9fbG9jayk7DQorDQorCXJldHVybiByZXQ7DQorfQ0K Kw0KK3N0YXRpYyBpbnQNCittdDc1MzFfaW5kX2MyMl9waHlfcmVhZChzdHJ1Y3QgbXQ3NTMwX3By aXYgKnByaXYsIGludCBwb3J0LCBpbnQgcmVnbnVtKQ0KK3sNCisJc3RydWN0IG1paV9idXMgKmJ1 cyA9IHByaXYtPmJ1czsNCisJc3RydWN0IG10NzUzMF9kdW1teV9wb2xsIHA7DQorCWludCByZXQ7 DQorCXUzMiB2YWw7DQorDQorCUlOSVRfTVQ3NTMwX0RVTU1ZX1BPTEwoJnAsIHByaXYsIE1UNzUz MV9QSFlfSUFDKTsNCisNCisJbXV0ZXhfbG9ja19uZXN0ZWQoJmJ1cy0+bWRpb19sb2NrLCBNRElP X01VVEVYX05FU1RFRCk7DQorDQorCXJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3Vu bG9ja2VkX3JlYWQsICZwLCB2YWwsDQorCQkJCSAhKHZhbCAmIE1UNzUzMV9QSFlfQUNTX1NUKSwg MjAsIDEwMDAwMCk7DQorCWlmIChyZXQgPCAwKSB7DQorCQlkZXZfZXJyKHByaXYtPmRldiwgInBv bGwgdGltZW91dFxuIik7DQorCQlnb3RvIG91dDsNCisJfQ0KKw0KKwl2YWwgPSBNVDc1MzFfTURJ T19DTDIyX1JFQUQgfCBNVDc1MzFfTURJT19QSFlfQUREUihwb3J0KSB8DQorCSAgICAgIE1UNzUz MV9NRElPX1JFR19BRERSKHJlZ251bSk7DQorDQorCW10NzUzMF9taWlfd3JpdGUocHJpdiwgTVQ3 NTMxX1BIWV9JQUMsIHZhbCB8IE1UNzUzMV9QSFlfQUNTX1NUKTsNCisNCisJcmV0ID0gcmVhZHhf cG9sbF90aW1lb3V0KF9tdDc1MzBfdW5sb2NrZWRfcmVhZCwgJnAsIHZhbCwNCisJCQkJICEodmFs ICYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTsNCisJaWYgKHJldCA8IDApIHsNCisJ CWRldl9lcnIocHJpdi0+ZGV2LCAicG9sbCB0aW1lb3V0XG4iKTsNCisJCWdvdG8gb3V0Ow0KKwl9 DQorDQorCXJldCA9IHZhbCAmIE1UNzUzMV9NRElPX1JXX0RBVEFfTUFTSzsNCitvdXQ6DQorCW11 dGV4X3VubG9jaygmYnVzLT5tZGlvX2xvY2spOw0KKw0KKwlyZXR1cm4gcmV0Ow0KK30NCisNCitz dGF0aWMgaW50DQorbXQ3NTMxX2luZF9jMjJfcGh5X3dyaXRlKHN0cnVjdCBtdDc1MzBfcHJpdiAq cHJpdiwgaW50IHBvcnQsIGludCByZWdudW0sDQorCQkJIHUxNiBkYXRhKQ0KK3sNCisJc3RydWN0 IG1paV9idXMgKmJ1cyA9IHByaXYtPmJ1czsNCisJc3RydWN0IG10NzUzMF9kdW1teV9wb2xsIHA7 DQorCWludCByZXQ7DQorCXUzMiByZWc7DQorDQorCUlOSVRfTVQ3NTMwX0RVTU1ZX1BPTEwoJnAs IHByaXYsIE1UNzUzMV9QSFlfSUFDKTsNCisNCisJbXV0ZXhfbG9ja19uZXN0ZWQoJmJ1cy0+bWRp b19sb2NrLCBNRElPX01VVEVYX05FU1RFRCk7DQorDQorCXJldCA9IHJlYWR4X3BvbGxfdGltZW91 dChfbXQ3NTMwX3VubG9ja2VkX3JlYWQsICZwLCByZWcsDQorCQkJCSAhKHJlZyAmIE1UNzUzMV9Q SFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7DQorCWlmIChyZXQgPCAwKSB7DQorCQlkZXZfZXJyKHBy aXYtPmRldiwgInBvbGwgdGltZW91dFxuIik7DQorCQlnb3RvIG91dDsNCisJfQ0KKw0KKwlyZWcg PSBNVDc1MzFfTURJT19DTDIyX1dSSVRFIHwgTVQ3NTMxX01ESU9fUEhZX0FERFIocG9ydCkgfA0K KwkgICAgICBNVDc1MzFfTURJT19SRUdfQUREUihyZWdudW0pIHwgZGF0YTsNCisNCisJbXQ3NTMw X21paV93cml0ZShwcml2LCBNVDc1MzFfUEhZX0lBQywgcmVnIHwgTVQ3NTMxX1BIWV9BQ1NfU1Qp Ow0KKw0KKwlyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUzMF91bmxvY2tlZF9yZWFkLCAm cCwgcmVnLA0KKwkJCQkgIShyZWcgJiBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApOw0K KwlpZiAocmV0IDwgMCkgew0KKwkJZGV2X2Vycihwcml2LT5kZXYsICJwb2xsIHRpbWVvdXRcbiIp Ow0KKwkJZ290byBvdXQ7DQorCX0NCisNCitvdXQ6DQorCW11dGV4X3VubG9jaygmYnVzLT5tZGlv X2xvY2spOw0KKw0KKwlyZXR1cm4gcmV0Ow0KK30NCisNCitzdGF0aWMgaW50DQorbXQ3NTMxX2lu ZF9waHlfcmVhZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBpbnQgcmVnbnVtKQ0K K3sNCisJc3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gZHMtPnByaXY7DQorCWludCBkZXZhZDsN CisJaW50IHJldDsNCisNCisJaWYgKHJlZ251bSAmIE1JSV9BRERSX0M0NSkgew0KKwkJZGV2YWQg PSAocmVnbnVtID4+IE1JSV9ERVZBRERSX0M0NV9TSElGVCkgJiAweDFmOw0KKwkJcmV0ID0gbXQ3 NTMxX2luZF9jNDVfcGh5X3JlYWQocHJpdiwgcG9ydCwgZGV2YWQsDQorCQkJCQkgICAgICByZWdu dW0gJiBNSUlfUkVHQUREUl9DNDVfTUFTSyk7DQorCX0gZWxzZSB7DQorCQlyZXQgPSBtdDc1MzFf aW5kX2MyMl9waHlfcmVhZChwcml2LCBwb3J0LCByZWdudW0pOw0KKwl9DQorDQorCXJldHVybiBy ZXQ7DQorfQ0KKw0KK3N0YXRpYyBpbnQNCittdDc1MzFfaW5kX3BoeV93cml0ZShzdHJ1Y3QgZHNh X3N3aXRjaCAqZHMsIGludCBwb3J0LCBpbnQgcmVnbnVtLA0KKwkJICAgICB1MTYgZGF0YSkNCit7 DQorCXN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGRzLT5wcml2Ow0KKwlpbnQgZGV2YWQ7DQor CWludCByZXQ7DQorDQorCWlmIChyZWdudW0gJiBNSUlfQUREUl9DNDUpIHsNCisJCWRldmFkID0g KHJlZ251bSA+PiBNSUlfREVWQUREUl9DNDVfU0hJRlQpICYgMHgxZjsNCisJCXJldCA9IG10NzUz MV9pbmRfYzQ1X3BoeV93cml0ZShwcml2LCBwb3J0LCBkZXZhZCwNCisJCQkJCSAgICAgICByZWdu dW0gJiBNSUlfUkVHQUREUl9DNDVfTUFTSywNCisJCQkJCSAgICAgICBkYXRhKTsNCisJfSBlbHNl IHsNCisJCXJldCA9IG10NzUzMV9pbmRfYzIyX3BoeV93cml0ZShwcml2LCBwb3J0LCByZWdudW0s IGRhdGEpOw0KKwl9DQorDQorCXJldHVybiByZXQ7DQorfQ0KKw0KIHN0YXRpYyB2b2lkDQogbXQ3 NTMwX2dldF9zdHJpbmdzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIHUzMiBzdHJp bmdzZXQsDQogCQkgICB1aW50OF90ICpkYXRhKQ0KQEAgLTYyMyw5ICs5NDIsMTQgQEAgc3RhdGlj IHZvaWQgbXQ3NTMwX3NldHVwX3BvcnQ1KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgcGh5X2ludGVy ZmFjZV90IGludGVyZmFjZSkNCiB9DQogDQogc3RhdGljIGludA0KLW10NzUzMF9jcHVfcG9ydF9l bmFibGUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LA0KLQkJICAgICAgIGludCBwb3J0KQ0KK210 NzUzeF9jcHVfcG9ydF9lbmFibGUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCkNCiB7 DQorCXN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGRzLT5wcml2Ow0KKw0KKwkvKiBTZXR1cCBt YXggY2FwYWJpbGl0eSBvZiBDUFUgcG9ydCBhdCBmaXJzdCAqLw0KKwlpZiAocHJpdi0+aW5mby0+ Y3B1X3BvcnRfY29uZmlnKQ0KKwkJcHJpdi0+aW5mby0+Y3B1X3BvcnRfY29uZmlnKGRzLCBwb3J0 KTsNCisNCiAJLyogRW5hYmxlIE1lZGlhdGVrIGhlYWRlciBtb2RlIG9uIHRoZSBjcHUgcG9ydCAq Lw0KIAltdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMwX1BWQ19QKHBvcnQpLA0KIAkJICAgICBQT1JU X1NQRUNfVEFHKTsNCkBAIC02MzgsNyArOTYyLDcgQEAgbXQ3NTMwX2NwdV9wb3J0X2VuYWJsZShz dHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsDQogCQltdDc1MzBfcm13KHByaXYsIE1UNzUzMF9NRkMs IENQVV9NQVNLLCBDUFVfRU4gfCBDUFVfUE9SVChwb3J0KSk7DQogDQogCS8qIENQVSBwb3J0IGdl dHMgY29ubmVjdGVkIHRvIGFsbCB1c2VyIHBvcnRzIG9mDQotCSAqIHRoZSBzd2l0Y2gNCisJICog dGhlIHN3aXRjaC4NCiAJICovDQogCW10NzUzMF93cml0ZShwcml2LCBNVDc1MzBfUENSX1AocG9y dCksDQogCQkgICAgIFBDUl9NQVRSSVgoZHNhX3VzZXJfcG9ydHMocHJpdi0+ZHMpKSk7DQpAQCAt MTEzMiwyNyArMTQ1Niw0MiBAQCBtdDc1MzBfcG9ydF92bGFuX2RlbChzdHJ1Y3QgZHNhX3N3aXRj aCAqZHMsIGludCBwb3J0LA0KIAlyZXR1cm4gMDsNCiB9DQogDQotc3RhdGljIGludCBtdDc1MzBf cG9ydF9taXJyb3JfYWRkKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsDQorc3RhdGlj IGludCBtdDc1M3hfbWlycm9yX3BvcnRfZ2V0KHVuc2lnbmVkIGludCBpZCwgdTMyIHZhbCkNCit7 DQorCXJldHVybiAoaWQgPT0gSURfTVQ3NTMxKSA/IE1UNzUzMV9NSVJST1JfUE9SVF9HRVQodmFs KSA6DQorCQkJCSAgIE1JUlJPUl9QT1JUKHZhbCk7DQorfQ0KKw0KK3N0YXRpYyBpbnQgbXQ3NTN4 X21pcnJvcl9wb3J0X3NldCh1bnNpZ25lZCBpbnQgaWQsIHUzMiB2YWwpDQorew0KKwlyZXR1cm4g KGlkID09IElEX01UNzUzMSkgPyBNVDc1MzFfTUlSUk9SX1BPUlRfU0VUKHZhbCkgOg0KKwkJCQkg ICBNSVJST1JfUE9SVCh2YWwpOw0KK30NCisNCitzdGF0aWMgaW50IG10NzUzeF9wb3J0X21pcnJv cl9hZGQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwNCiAJCQkJICBzdHJ1Y3QgZHNh X21hbGxfbWlycm9yX3RjX2VudHJ5ICptaXJyb3IsDQogCQkJCSAgYm9vbCBpbmdyZXNzKQ0KIHsN CiAJc3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gZHMtPnByaXY7DQorCWludCBtb25pdG9yX3Bv cnQ7DQogCXUzMiB2YWw7DQogDQogCS8qIENoZWNrIGZvciBleGlzdGVudCBlbnRyeSAqLw0KIAlp ZiAoKGluZ3Jlc3MgPyBwcml2LT5taXJyb3JfcnggOiBwcml2LT5taXJyb3JfdHgpICYgQklUKHBv cnQpKQ0KIAkJcmV0dXJuIC1FRVhJU1Q7DQogDQotCXZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1U NzUzMF9NRkMpOw0KKwl2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1M1hfTUlSUk9SX1JFRyhw cml2LT5pZCkpOw0KIA0KIAkvKiBNVDc1MzAgb25seSBzdXBwb3J0cyBvbmUgbW9uaXRvciBwb3J0 ICovDQotCWlmICh2YWwgJiBNSVJST1JfRU4gJiYgTUlSUk9SX1BPUlQodmFsKSAhPSBtaXJyb3It PnRvX2xvY2FsX3BvcnQpDQorCW1vbml0b3JfcG9ydCA9IG10NzUzeF9taXJyb3JfcG9ydF9nZXQo cHJpdi0+aWQsIHZhbCk7DQorCWlmICh2YWwgJiBNVDc1M1hfTUlSUk9SX0VOKHByaXYtPmlkKSAm Jg0KKwkgICAgbW9uaXRvcl9wb3J0ICE9IG1pcnJvci0+dG9fbG9jYWxfcG9ydCkNCiAJCXJldHVy biAtRUVYSVNUOw0KIA0KLQl2YWwgfD0gTUlSUk9SX0VOOw0KLQl2YWwgJj0gfk1JUlJPUl9NQVNL Ow0KLQl2YWwgfD0gbWlycm9yLT50b19sb2NhbF9wb3J0Ow0KLQltdDc1MzBfd3JpdGUocHJpdiwg TVQ3NTMwX01GQywgdmFsKTsNCisJdmFsIHw9IE1UNzUzWF9NSVJST1JfRU4ocHJpdi0+aWQpOw0K Kwl2YWwgJj0gfk1UNzUzWF9NSVJST1JfTUFTSyhwcml2LT5pZCk7DQorCXZhbCB8PSBtdDc1M3hf bWlycm9yX3BvcnRfc2V0KHByaXYtPmlkLCBtaXJyb3ItPnRvX2xvY2FsX3BvcnQpOw0KKwltdDc1 MzBfd3JpdGUocHJpdiwgTVQ3NTNYX01JUlJPUl9SRUcocHJpdi0+aWQpLCB2YWwpOw0KIA0KIAl2 YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzBfUENSX1AocG9ydCkpOw0KIAlpZiAoaW5ncmVz cykgew0KQEAgLTExNjcsNyArMTUwNiw3IEBAIHN0YXRpYyBpbnQgbXQ3NTMwX3BvcnRfbWlycm9y X2FkZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LA0KIAlyZXR1cm4gMDsNCiB9DQog DQotc3RhdGljIHZvaWQgbXQ3NTMwX3BvcnRfbWlycm9yX2RlbChzdHJ1Y3QgZHNhX3N3aXRjaCAq ZHMsIGludCBwb3J0LA0KK3N0YXRpYyB2b2lkIG10NzUzeF9wb3J0X21pcnJvcl9kZWwoc3RydWN0 IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwNCiAJCQkJICAgc3RydWN0IGRzYV9tYWxsX21pcnJv cl90Y19lbnRyeSAqbWlycm9yKQ0KIHsNCiAJc3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gZHMt PnByaXY7DQpAQCAtMTE4NCw5ICsxNTIzLDkgQEAgc3RhdGljIHZvaWQgbXQ3NTMwX3BvcnRfbWly cm9yX2RlbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LA0KIAltdDc1MzBfd3JpdGUo cHJpdiwgTVQ3NTMwX1BDUl9QKHBvcnQpLCB2YWwpOw0KIA0KIAlpZiAoIXByaXYtPm1pcnJvcl9y eCAmJiAhcHJpdi0+bWlycm9yX3R4KSB7DQotCQl2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1 MzBfTUZDKTsNCi0JCXZhbCAmPSB+TUlSUk9SX0VOOw0KLQkJbXQ3NTMwX3dyaXRlKHByaXYsIE1U NzUzMF9NRkMsIHZhbCk7DQorCQl2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1M1hfTUlSUk9S X1JFRyhwcml2LT5pZCkpOw0KKwkJdmFsICY9IH5NVDc1M1hfTUlSUk9SX0VOKHByaXYtPmlkKTsN CisJCW10NzUzMF93cml0ZShwcml2LCBNVDc1M1hfTUlSUk9SX1JFRyhwcml2LT5pZCksIHZhbCk7 DQogCX0NCiB9DQogDQpAQCAtMTI5Myw3ICsxNjMyLDcgQEAgbXQ3NTMwX3NldHVwKHN0cnVjdCBk c2Ffc3dpdGNoICpkcykNCiAJCQkgICBQQ1JfTUFUUklYX0NMUik7DQogDQogCQlpZiAoZHNhX2lz X2NwdV9wb3J0KGRzLCBpKSkNCi0JCQltdDc1MzBfY3B1X3BvcnRfZW5hYmxlKHByaXYsIGkpOw0K KwkJCW10NzUzeF9jcHVfcG9ydF9lbmFibGUoZHMsIGkpOw0KIAkJZWxzZQ0KIAkJCW10NzUzMF9w b3J0X2Rpc2FibGUoZHMsIGkpOw0KIA0KQEAgLTEzNTEsNiArMTY5MCwxMTggQEAgbXQ3NTMwX3Nl dHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcykNCiAJcmV0dXJuIDA7DQogfQ0KIA0KK3N0YXRpYyBp bnQNCittdDc1MzFfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKQ0KK3sNCisJc3RydWN0IG10 NzUzMF9wcml2ICpwcml2ID0gZHMtPnByaXY7DQorCXN0cnVjdCBtdDc1MzBfZHVtbXlfcG9sbCBw Ow0KKwl1MzIgdmFsLCBpZDsNCisJaW50IHJldCwgaTsNCisNCisJLyogUmVzZXQgd2hvbGUgY2hp cCB0aHJvdWdoIGdwaW8gcGluIG9yIG1lbW9yeS1tYXBwZWQgcmVnaXN0ZXJzIGZvcg0KKwkgKiBk aWZmZXJlbnQgdHlwZSBvZiBoYXJkd2FyZQ0KKwkgKi8NCisJaWYgKHByaXYtPm1jbSkgew0KKwkJ cmVzZXRfY29udHJvbF9hc3NlcnQocHJpdi0+cnN0Yyk7DQorCQl1c2xlZXBfcmFuZ2UoMTAwMCwg MTEwMCk7DQorCQlyZXNldF9jb250cm9sX2RlYXNzZXJ0KHByaXYtPnJzdGMpOw0KKwl9IGVsc2Ug ew0KKwkJZ3Bpb2Rfc2V0X3ZhbHVlX2NhbnNsZWVwKHByaXYtPnJlc2V0LCAwKTsNCisJCXVzbGVl cF9yYW5nZSgxMDAwLCAxMTAwKTsNCisJCWdwaW9kX3NldF92YWx1ZV9jYW5zbGVlcChwcml2LT5y ZXNldCwgMSk7DQorCX0NCisNCisJLyogV2FpdGluZyBmb3IgTVQ3NTMwIGdvdCB0byBzdGFibGUg Ki8NCisJSU5JVF9NVDc1MzBfRFVNTVlfUE9MTCgmcCwgcHJpdiwgTVQ3NTMwX0hXVFJBUCk7DQor CXJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3JlYWQsICZwLCB2YWwsIHZhbCAhPSAw LA0KKwkJCQkgMjAsIDEwMDAwMDApOw0KKwlpZiAocmV0IDwgMCkgew0KKwkJZGV2X2Vycihwcml2 LT5kZXYsICJyZXNldCB0aW1lb3V0XG4iKTsNCisJCXJldHVybiByZXQ7DQorCX0NCisNCisJaWQg PSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfQ1JFVik7DQorCWlkID4+PSBDSElQX05BTUVfU0hJ RlQ7DQorDQorCWlmIChpZCAhPSBNVDc1MzFfSUQpIHsNCisJCWRldl9lcnIocHJpdi0+ZGV2LCAi Y2hpcCAleCBjYW4ndCBiZSBzdXBwb3J0ZWRcbiIsIGlkKTsNCisJCXJldHVybiAtRU5PREVWOw0K Kwl9DQorDQorCS8qIFJlc2V0IHRoZSBzd2l0Y2ggdGhyb3VnaCBpbnRlcm5hbCByZXNldCAqLw0K KwltdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMwX1NZU19DVFJMLA0KKwkJICAgICBTWVNfQ1RSTF9Q SFlfUlNUIHwgU1lTX0NUUkxfU1dfUlNUIHwNCisJCSAgICAgU1lTX0NUUkxfUkVHX1JTVCk7DQor DQorCWlmIChtdDc1MzFfZHVhbF9zZ21paV9zdXBwb3J0ZWQocHJpdikpIHsNCisJCXByaXYtPnA1 X2ludGZfc2VsID0gUDVfSU5URl9TRUxfR01BQzVfU0dNSUk7DQorDQorCQkvKiBMZXQgZHMtPnNs YXZlX21paV9idXMgYmUgYWJsZSB0byBhY2Nlc3MgZXh0ZXJuYWwgcGh5LiAqLw0KKwkJbXQ3NTMw X3Jtdyhwcml2LCBNVDc1MzFfR1BJT19NT0RFMSwgTVQ3NTMxX0dQSU8xMV9SR19SWEQyX01BU0ss DQorCQkJICAgTVQ3NTMxX0VYVF9QX01EQ18xMSk7DQorCQltdDc1MzBfcm13KHByaXYsIE1UNzUz MV9HUElPX01PREUxLCBNVDc1MzFfR1BJTzEyX1JHX1JYRDNfTUFTSywNCisJCQkgICBNVDc1MzFf RVhUX1BfTURJT18xMik7DQorCX0gZWxzZSB7DQorCQlwcml2LT5wNV9pbnRmX3NlbCA9IFA1X0lO VEZfU0VMX0dNQUM1Ow0KKwl9DQorCWRldl9kYmcoZHMtPmRldiwgIlA1IHN1cHBvcnQgJXMgaW50 ZXJmYWNlXG4iLA0KKwkJcDVfaW50Zl9tb2Rlcyhwcml2LT5wNV9pbnRmX3NlbCkpOw0KKw0KKwlt dDc1MzBfcm13KHByaXYsIE1UNzUzMV9HUElPX01PREUwLCBNVDc1MzFfR1BJTzBfTUFTSywNCisJ CSAgIE1UNzUzMV9HUElPMF9JTlRFUlJVUFQpOw0KKw0KKwkvKiBMZXQgcGh5bGluayBkZWNpZGUg dGhlIGludGVyZmFjZSBsYXRlci4gKi8NCisJcHJpdi0+cDVfaW50ZXJmYWNlID0gUEhZX0lOVEVS RkFDRV9NT0RFX05BOw0KKwlwcml2LT5wNl9pbnRlcmZhY2UgPSBQSFlfSU5URVJGQUNFX01PREVf TkE7DQorDQorCS8qIEVuYWJsZSBQSFkgY29yZSBQTEwsIHNpbmNlIHBoeV9kZXZpY2UgaGFzIG5v dCB5ZXQgYmVlbiBjcmVhdGVkDQorCSAqIHByb3ZpZGVkIGZvciBwaHlfW3JlYWQsd3JpdGVdX21t ZF9pbmRpcmVjdCBpcyBjYWxsZWQsIHdlIHByb3ZpZGUNCisJICogb3VyIG93biBtdDc1MzFfaW5k X21tZF9waHlfW3JlYWQsd3JpdGVdIHRvIGNvbXBsZXRlIHRoaXMNCisJICogZnVuY3Rpb24uDQor CSAqLw0KKwl2YWwgPSBtdDc1MzFfaW5kX2M0NV9waHlfcmVhZChwcml2LCBNVDc1M1hfQ1RSTF9Q SFlfQUREUiwNCisJCQkJICAgICAgTURJT19NTURfVkVORDIsIENPUkVfUExMX0dST1VQNCk7DQor CXZhbCB8PSBNVDc1MzFfUEhZX1BMTF9CWVBBU1NfTU9ERTsNCisJdmFsICY9IH5NVDc1MzFfUEhZ X1BMTF9PRkY7DQorCW10NzUzMV9pbmRfYzQ1X3BoeV93cml0ZShwcml2LCBNVDc1M1hfQ1RSTF9Q SFlfQUREUiwgTURJT19NTURfVkVORDIsDQorCQkJCSBDT1JFX1BMTF9HUk9VUDQsIHZhbCk7DQor DQorCS8qIEJQRFUgdG8gQ1BVIHBvcnQgKi8NCisJbXQ3NTMwX3Jtdyhwcml2LCBNVDc1MzFfQ0ZD LCBNVDc1MzFfQ1BVX1BNQVBfTUFTSywNCisJCSAgIEJJVChNVDc1MzBfQ1BVX1BPUlQpKTsNCisJ bXQ3NTMwX3Jtdyhwcml2LCBNVDc1M1hfQlBDLCBNVDc1M1hfQlBEVV9QT1JUX0ZXX01BU0ssDQor CQkgICBNVDc1M1hfQlBEVV9DUFVfT05MWSk7DQorDQorCS8qIEVuYWJsZSBhbmQgcmVzZXQgTUlC IGNvdW50ZXJzICovDQorCW10NzUzMF9taWJfcmVzZXQoZHMpOw0KKw0KKwlmb3IgKGkgPSAwOyBp IDwgTVQ3NTMwX05VTV9QT1JUUzsgaSsrKSB7DQorCQkvKiBEaXNhYmxlIGZvcndhcmRpbmcgYnkg ZGVmYXVsdCBvbiBhbGwgcG9ydHMgKi8NCisJCW10NzUzMF9ybXcocHJpdiwgTVQ3NTMwX1BDUl9Q KGkpLCBQQ1JfTUFUUklYX01BU0ssDQorCQkJICAgUENSX01BVFJJWF9DTFIpOw0KKw0KKwkJbXQ3 NTMwX3NldChwcml2LCBNVDc1MzFfREJHX0NOVChpKSwgTVQ3NTMxX0RJU19DTFIpOw0KKw0KKwkJ aWYgKGRzYV9pc19jcHVfcG9ydChkcywgaSkpDQorCQkJbXQ3NTN4X2NwdV9wb3J0X2VuYWJsZShk cywgaSk7DQorCQllbHNlDQorCQkJbXQ3NTMwX3BvcnRfZGlzYWJsZShkcywgaSk7DQorDQorCQkv KiBFbmFibGUgY29uc2lzdGVudCBlZ3Jlc3MgdGFnICovDQorCQltdDc1MzBfcm13KHByaXYsIE1U NzUzMF9QVkNfUChpKSwgUFZDX0VHX1RBR19NQVNLLA0KKwkJCSAgIFBWQ19FR19UQUcoTVQ3NTMw X1ZMQU5fRUdfQ09OU0lTVEVOVCkpOw0KKwl9DQorDQorCWRzLT5jb25maWd1cmVfdmxhbl93aGls ZV9ub3RfZmlsdGVyaW5nID0gdHJ1ZTsNCisNCisJLyogRmx1c2ggdGhlIEZEQiB0YWJsZSAqLw0K KwlyZXQgPSBtdDc1MzBfZmRiX2NtZChwcml2LCBNVDc1MzBfRkRCX0ZMVVNILCBOVUxMKTsNCisJ aWYgKHJldCA8IDApDQorCQlyZXR1cm4gcmV0Ow0KKw0KKwlyZXR1cm4gMDsNCit9DQorDQogc3Rh dGljIGJvb2wNCiBtdDc1MzBfcGh5X21vZGVfc3VwcG9ydGVkKHN0cnVjdCBkc2Ffc3dpdGNoICpk cywgaW50IHBvcnQsDQogCQkJICBjb25zdCBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0 ZSkNCkBAIC0xMzg5LDYgKzE4NDAsNDcgQEAgbXQ3NTMwX3BoeV9tb2RlX3N1cHBvcnRlZChzdHJ1 Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LA0KIAlyZXR1cm4gZmFsc2U7DQogfQ0KIA0KK3N0 YXRpYyBib29sIG10NzUzMV9pc19yZ21paV9wb3J0KHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwg dTMyIHBvcnQpDQorew0KKwlyZXR1cm4gKHBvcnQgPT0gNSkgJiYgKHByaXYtPnA1X2ludGZfc2Vs ICE9IFA1X0lOVEZfU0VMX0dNQUM1X1NHTUlJKTsNCit9DQorDQorc3RhdGljIGJvb2wNCittdDc1 MzFfcGh5X3N1cHBvcnRlZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LA0KKwkJICAg ICBjb25zdCBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSkNCit7DQorCXN0cnVjdCBt dDc1MzBfcHJpdiAqcHJpdiA9IGRzLT5wcml2Ow0KKw0KKwlzd2l0Y2ggKHBvcnQpIHsNCisJY2Fz ZSAwOiAvKiBJbnRlcm5hbCBwaHkgKi8NCisJY2FzZSAxOg0KKwljYXNlIDI6DQorCWNhc2UgMzoN CisJY2FzZSA0Og0KKwkJaWYgKHN0YXRlLT5pbnRlcmZhY2UgIT0gUEhZX0lOVEVSRkFDRV9NT0RF X0dNSUkpDQorCQkJZ290byB1bnN1cHBvcnRlZDsNCisJCWJyZWFrOw0KKwljYXNlIDU6IC8qIDJu ZCBjcHUgcG9ydCBzdXBwb3J0cyBlaXRoZXIgcmdtaWkgb3Igc2dtaWkvODAyM3ogKi8NCisJCWlm IChtdDc1MzFfaXNfcmdtaWlfcG9ydChwcml2LCBwb3J0KSkNCisJCQlyZXR1cm4gcGh5X2ludGVy ZmFjZV9tb2RlX2lzX3JnbWlpKHN0YXRlLT5pbnRlcmZhY2UpOw0KKwkJZmFsbHRocm91Z2g7DQor CWNhc2UgNjogLyogMXN0IGNwdSBwb3J0IHN1cHBvcnRzIHNnbWlpLzgwMjN6IG9ubHkgKi8NCisJ CWlmIChzdGF0ZS0+aW50ZXJmYWNlICE9IFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSAmJg0KKwkJ ICAgICFwaHlfaW50ZXJmYWNlX21vZGVfaXNfODAyM3ooc3RhdGUtPmludGVyZmFjZSkpDQorCQkJ Z290byB1bnN1cHBvcnRlZDsNCisJCWJyZWFrOw0KKwlkZWZhdWx0Og0KKwkJZGV2X2Vycihwcml2 LT5kZXYsICIlczogdW5zdXBwb3J0ZWQgcG9ydDogJWlcbiIsIF9fZnVuY19fLA0KKwkJCXBvcnQp Ow0KKwkJZ290byB1bnN1cHBvcnRlZDsNCisJfQ0KKw0KKwlyZXR1cm4gdHJ1ZTsNCisNCit1bnN1 cHBvcnRlZDoNCisJcmV0dXJuIGZhbHNlOw0KK30NCisNCiBzdGF0aWMgYm9vbA0KIG10NzUzeF9w aHlfbW9kZV9zdXBwb3J0ZWQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwNCiAJCQkg IGNvbnN0IHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKQ0KQEAgLTE0MjEsNiArMTkx MywyMjcgQEAgbXQ3NTMwX21hY19jb25maWcoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9y dCwgdW5zaWduZWQgaW50IG1vZGUsDQogCXJldHVybiAwOw0KIH0NCiANCitzdGF0aWMgaW50IG10 NzUzMV9yZ21paV9zZXR1cChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUzMiBwb3J0LA0KKwkJ CSAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsDQorCQkJICAgICAgc3RydWN0IHBoeV9k ZXZpY2UgKnBoeWRldikNCit7DQorCXUzMiB2YWw7DQorDQorCWlmICghbXQ3NTMxX2lzX3JnbWlp X3BvcnQocHJpdiwgcG9ydCkpIHsNCisJCWRldl9lcnIocHJpdi0+ZGV2LCAiUkdNSUkgbW9kZSBp cyBub3QgYXZhaWxhYmxlIGZvciBwb3J0ICVkXG4iLA0KKwkJCXBvcnQpOw0KKwkJcmV0dXJuIC1F SU5WQUw7DQorCX0NCisNCisJdmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX0NMS0dFTl9D VFJMKTsNCisJdmFsIHw9IEdQX0NMS19FTjsNCisJdmFsICY9IH5HUF9NT0RFX01BU0s7DQorCXZh bCB8PSBHUF9NT0RFKE1UNzUzMV9HUF9NT0RFX1JHTUlJKTsNCisJdmFsICY9IH5DTEtfU0tFV19J Tl9NQVNLOw0KKwl2YWwgfD0gQ0xLX1NLRVdfSU4oTVQ3NTMxX0NMS19TS0VXX05PX0NIRyk7DQor CXZhbCAmPSB+Q0xLX1NLRVdfT1VUX01BU0s7DQorCXZhbCB8PSBDTEtfU0tFV19PVVQoTVQ3NTMx X0NMS19TS0VXX05PX0NIRyk7DQorCXZhbCB8PSBUWENMS19OT19SRVZFUlNFIHwgUlhDTEtfTk9f REVMQVk7DQorDQorCS8qIERvIG5vdCBhZGp1c3QgcmdtaWkgZGVsYXkgd2hlbiB2ZW5kb3IgcGh5 IGRyaXZlciBwcmVzZW50cy4gKi8NCisJaWYgKCFwaHlkZXYgfHwgcGh5X2RyaXZlcl9pc19nZW5w aHkocGh5ZGV2KSkgew0KKwkJdmFsICY9IH4oVFhDTEtfTk9fUkVWRVJTRSB8IFJYQ0xLX05PX0RF TEFZKTsNCisJCXN3aXRjaCAoaW50ZXJmYWNlKSB7DQorCQljYXNlIFBIWV9JTlRFUkZBQ0VfTU9E RV9SR01JSToNCisJCQl2YWwgfD0gVFhDTEtfTk9fUkVWRVJTRTsNCisJCQl2YWwgfD0gUlhDTEtf Tk9fREVMQVk7DQorCQkJYnJlYWs7DQorCQljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9S WElEOg0KKwkJCXZhbCB8PSBUWENMS19OT19SRVZFUlNFOw0KKwkJCWJyZWFrOw0KKwkJY2FzZSBQ SFlfSU5URVJGQUNFX01PREVfUkdNSUlfVFhJRDoNCisJCQl2YWwgfD0gUlhDTEtfTk9fREVMQVk7 DQorCQkJYnJlYWs7DQorCQljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9JRDoNCisJCQli cmVhazsNCisJCWRlZmF1bHQ6DQorCQkJcmV0dXJuIC1FSU5WQUw7DQorCQl9DQorCX0NCisJbXQ3 NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9DTEtHRU5fQ1RSTCwgdmFsKTsNCisNCisJcmV0dXJuIDA7 DQorfQ0KKw0KK3N0YXRpYyB2b2lkIG10NzUzMV9zZ21paV92YWxpZGF0ZShzdHJ1Y3QgbXQ3NTMw X3ByaXYgKnByaXYsIGludCBwb3J0LA0KKwkJCQkgIHVuc2lnbmVkIGxvbmcgKnN1cHBvcnRlZCkN Cit7DQorCS8qIFBvcnQ1IHN1cHBvcnRzIGV0aGllciBSR01JSSBvciBTR01JSS4NCisJICogUG9y dDYgc3VwcG9ydHMgU0dNSUkgb25seS4NCisJICovDQorCXN3aXRjaCAocG9ydCkgew0KKwljYXNl IDU6DQorCQlpZiAobXQ3NTMxX2lzX3JnbWlpX3BvcnQocHJpdiwgcG9ydCkpDQorCQkJYnJlYWs7 DQorCQlmYWxsdGhyb3VnaDsNCisJY2FzZSA2Og0KKwkJcGh5bGlua19zZXQoc3VwcG9ydGVkLCAx MDAwYmFzZVhfRnVsbCk7DQorCQlwaHlsaW5rX3NldChzdXBwb3J0ZWQsIDI1MDBiYXNlWF9GdWxs KTsNCisJCXBoeWxpbmtfc2V0KHN1cHBvcnRlZCwgMjUwMGJhc2VUX0Z1bGwpOw0KKwl9DQorfQ0K Kw0KK3N0YXRpYyB2b2lkDQorbXQ3NTMxX3NnbWlpX2xpbmtfdXBfZm9yY2Uoc3RydWN0IGRzYV9z d2l0Y2ggKmRzLCBpbnQgcG9ydCwNCisJCQkgICB1bnNpZ25lZCBpbnQgbW9kZSwgcGh5X2ludGVy ZmFjZV90IGludGVyZmFjZSwNCisJCQkgICBpbnQgc3BlZWQsIGludCBkdXBsZXgpDQorew0KKwlz dHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBkcy0+cHJpdjsNCisJdW5zaWduZWQgaW50IHZhbDsN CisNCisJLyogRm9yIGFkanVzdGluZyBzcGVlZCBhbmQgZHVwbGV4IG9mIFNHTUlJIGZvcmNlIG1v ZGUuICovDQorCWlmIChpbnRlcmZhY2UgIT0gUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJIHx8DQor CSAgICBwaHlsaW5rX2F1dG9uZWdfaW5iYW5kKG1vZGUpKQ0KKwkJcmV0dXJuOw0KKw0KKwkvKiBT R01JSSBmb3JjZSBtb2RlIHNldHRpbmcgKi8NCisJdmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3 NTMxX1NHTUlJX01PREUocG9ydCkpOw0KKwl2YWwgJj0gfk1UNzUzMV9TR01JSV9JRl9NT0RFX01B U0s7DQorDQorCXN3aXRjaCAoc3BlZWQpIHsNCisJY2FzZSBTUEVFRF8xMDoNCisJCXZhbCB8PSBN VDc1MzFfU0dNSUlfRk9SQ0VfU1BFRURfMTA7DQorCQlicmVhazsNCisJY2FzZSBTUEVFRF8xMDA6 DQorCQl2YWwgfD0gTVQ3NTMxX1NHTUlJX0ZPUkNFX1NQRUVEXzEwMDsNCisJCWJyZWFrOw0KKwlj YXNlIFNQRUVEXzEwMDA6DQorCQl2YWwgfD0gTVQ3NTMxX1NHTUlJX0ZPUkNFX1NQRUVEXzEwMDA7 DQorCQlicmVhazsNCisJfQ0KKw0KKwkvKiBNVDc1MzEgU0dNSUkgMUcgZm9yY2UgbW9kZSBjYW4g b25seSB3b3JrIGluIGZ1bGwgZHVwbGV4IG1vZGUsDQorCSAqIG5vIG1hdHRlciBNVDc1MzFfU0dN SUlfRk9SQ0VfSEFMRl9EVVBMRVggaXMgc2V0IG9yIG5vdC4NCisJICovDQorCWlmICgoc3BlZWQg PT0gU1BFRURfMTAgfHwgc3BlZWQgPT0gU1BFRURfMTAwKSAmJg0KKwkgICAgZHVwbGV4ICE9IERV UExFWF9GVUxMKQ0KKwkJdmFsIHw9IE1UNzUzMV9TR01JSV9GT1JDRV9IQUxGX0RVUExFWDsNCisN CisJbXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9TR01JSV9NT0RFKHBvcnQpLCB2YWwpOw0KK30N CisNCitzdGF0aWMgYm9vbCBtdDc1M3hfaXNfbWFjX3BvcnQodTMyIHBvcnQpDQorew0KKwlyZXR1 cm4gKHBvcnQgPT0gNSB8fCBwb3J0ID09IDYpOw0KK30NCisNCitzdGF0aWMgaW50IG10NzUzMV9z Z21paV9zZXR1cF9tb2RlX2ZvcmNlKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHBvcnQs DQorCQkJCQkgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSkNCit7DQorCXUzMiB2YWw7DQorDQor CWlmICghbXQ3NTN4X2lzX21hY19wb3J0KHBvcnQpKQ0KKwkJcmV0dXJuIC1FSU5WQUw7DQorDQor CW10NzUzMF9zZXQocHJpdiwgTVQ3NTMxX1FQSFlfUFdSX1NUQVRFX0NUUkwocG9ydCksDQorCQkg ICBNVDc1MzFfU0dNSUlfUEhZQV9QV0QpOw0KKw0KKwl2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBN VDc1MzFfUEhZQV9DVFJMX1NJR05BTDMocG9ydCkpOw0KKwl2YWwgJj0gfk1UNzUzMV9SR19UUEhZ X1NQRUVEX01BU0s7DQorCS8qIFNldHVwIDIuNSB0aW1lcyBmYXN0ZXIgY2xvY2sgZm9yIDIuNUdi cHMgZGF0YSBzcGVlZHMgd2l0aCAxMEIvOEINCisJICogZW5jb2RpbmcuDQorCSAqLw0KKwl2YWwg fD0gKGludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYKSA/DQorCQlNVDc1 MzFfUkdfVFBIWV9TUEVFRF8zXzEyNUcgOiBNVDc1MzFfUkdfVFBIWV9TUEVFRF8xXzI1RzsNCisJ bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QSFlBX0NUUkxfU0lHTkFMMyhwb3J0KSwgdmFsKTsN CisNCisJbXQ3NTMwX2NsZWFyKHByaXYsIE1UNzUzMV9QQ1NfQ09OVFJPTF8xKHBvcnQpLCBNVDc1 MzFfU0dNSUlfQU5fRU5BQkxFKTsNCisNCisJLyogTVQ3NTMxIFNHTUlJIDFHIGFuZCAyLjVHIGZv cmNlIG1vZGUgY2FuIG9ubHkgd29yayBpbiBmdWxsIGR1cGxleA0KKwkgKiBtb2RlLCBubyBtYXR0 ZXIgTVQ3NTMxX1NHTUlJX0ZPUkNFX0hBTEZfRFVQTEVYIGlzIHNldCBvciBub3QuDQorCSAqLw0K KwltdDc1MzBfcm13KHByaXYsIE1UNzUzMV9TR01JSV9NT0RFKHBvcnQpLA0KKwkJICAgTVQ3NTMx X1NHTUlJX0lGX01PREVfTUFTSyB8IE1UNzUzMV9TR01JSV9SRU1PVEVfRkFVTFRfRElTLA0KKwkJ ICAgTVQ3NTMxX1NHTUlJX0ZPUkNFX1NQRUVEXzEwMDApOw0KKw0KKwltdDc1MzBfd3JpdGUocHJp diwgTVQ3NTMxX1FQSFlfUFdSX1NUQVRFX0NUUkwocG9ydCksIDApOw0KKw0KKwlyZXR1cm4gMDsN Cit9DQorDQorc3RhdGljIGludCBtdDc1MzFfc2dtaWlfc2V0dXBfbW9kZV9hbihzdHJ1Y3QgbXQ3 NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LA0KKwkJCQkgICAgICBwaHlfaW50ZXJmYWNlX3QgaW50 ZXJmYWNlKQ0KK3sNCisJaWYgKCFtdDc1M3hfaXNfbWFjX3BvcnQocG9ydCkpDQorCQlyZXR1cm4g LUVJTlZBTDsNCisNCisJbXQ3NTMwX3NldChwcml2LCBNVDc1MzFfUVBIWV9QV1JfU1RBVEVfQ1RS TChwb3J0KSwNCisJCSAgIE1UNzUzMV9TR01JSV9QSFlBX1BXRCk7DQorDQorCW10NzUzMF9ybXco cHJpdiwgTVQ3NTMxX1BIWUFfQ1RSTF9TSUdOQUwzKHBvcnQpLA0KKwkJICAgTVQ3NTMxX1JHX1RQ SFlfU1BFRURfTUFTSywgTVQ3NTMxX1JHX1RQSFlfU1BFRURfMV8yNUcpOw0KKw0KKwltdDc1MzBf c2V0KHByaXYsIE1UNzUzMV9TR01JSV9NT0RFKHBvcnQpLA0KKwkJICAgTVQ3NTMxX1NHTUlJX1JF TU9URV9GQVVMVF9ESVMgfA0KKwkJICAgTVQ3NTMxX1NHTUlJX1NQRUVEX0RVUExFWF9BTik7DQor DQorCW10NzUzMF9ybXcocHJpdiwgTVQ3NTMxX1BDU19TUEVFRF9BQklMSVRZKHBvcnQpLA0KKwkJ ICAgTVQ3NTMxX1NHTUlJX1RYX0NPTkZJR19NQVNLLCAxKTsNCisNCisJbXQ3NTMwX3NldChwcml2 LCBNVDc1MzFfUENTX0NPTlRST0xfMShwb3J0KSwgTVQ3NTMxX1NHTUlJX0FOX0VOQUJMRSk7DQor DQorCW10NzUzMF9zZXQocHJpdiwgTVQ3NTMxX1BDU19DT05UUk9MXzEocG9ydCksIE1UNzUzMV9T R01JSV9BTl9SRVNUQVJUKTsNCisNCisJbXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9RUEhZX1BX Ul9TVEFURV9DVFJMKHBvcnQpLCAwKTsNCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyB2 b2lkIG10NzUzMV9zZ21paV9yZXN0YXJ0X2FuKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBv cnQpDQorew0KKwlzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBkcy0+cHJpdjsNCisJdTMyIHZh bDsNCisNCisJLyogT25seSByZXN0YXJ0IEFOIHdoZW4gQU4gaXMgZW5hYmxlZCAqLw0KKwl2YWwg PSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUENTX0NPTlRST0xfMShwb3J0KSk7DQorCWlmICh2 YWwgJiBNVDc1MzFfU0dNSUlfQU5fRU5BQkxFKSB7DQorCQl2YWwgfD0gTVQ3NTMxX1NHTUlJX0FO X1JFU1RBUlQ7DQorCQltdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1BDU19DT05UUk9MXzEocG9y dCksIHZhbCk7DQorCX0NCit9DQorDQorc3RhdGljIGludA0KK210NzUzMV9tYWNfY29uZmlnKHN0 cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIHVuc2lnbmVkIGludCBtb2RlLA0KKwkJICBw aHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKQ0KK3sNCisJc3RydWN0IG10NzUzMF9wcml2ICpwcml2 ID0gZHMtPnByaXY7DQorCXN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXY7DQorCXN0cnVjdCBkc2Ff cG9ydCAqZHA7DQorDQorCWlmICghbXQ3NTN4X2lzX21hY19wb3J0KHBvcnQpKSB7DQorCQlkZXZf ZXJyKHByaXYtPmRldiwgInBvcnQgJWQgaXMgbm90IGEgTUFDIHBvcnRcbiIsIHBvcnQpOw0KKwkJ cmV0dXJuIC1FSU5WQUw7DQorCX0NCisNCisJc3dpdGNoIChpbnRlcmZhY2UpIHsNCisJY2FzZSBQ SFlfSU5URVJGQUNFX01PREVfUkdNSUk6DQorCWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJ X0lEOg0KKwljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9SWElEOg0KKwljYXNlIFBIWV9J TlRFUkZBQ0VfTU9ERV9SR01JSV9UWElEOg0KKwkJZHAgPSBkc2FfdG9fcG9ydChkcywgcG9ydCk7 DQorCQlwaHlkZXYgPSBkcC0+c2xhdmUtPnBoeWRldjsNCisJCXJldHVybiBtdDc1MzFfcmdtaWlf c2V0dXAocHJpdiwgcG9ydCwgaW50ZXJmYWNlLCBwaHlkZXYpOw0KKwljYXNlIFBIWV9JTlRFUkZB Q0VfTU9ERV9TR01JSToNCisJCXJldHVybiBtdDc1MzFfc2dtaWlfc2V0dXBfbW9kZV9hbihwcml2 LCBwb3J0LCBpbnRlcmZhY2UpOw0KKwljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9OQToNCisJY2Fz ZSBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYOg0KKwljYXNlIFBIWV9JTlRFUkZBQ0VfTU9E RV8yNTAwQkFTRVg6DQorCQlpZiAocGh5bGlua19hdXRvbmVnX2luYmFuZChtb2RlKSkNCisJCQly ZXR1cm4gLUVJTlZBTDsNCisNCisJCXJldHVybiBtdDc1MzFfc2dtaWlfc2V0dXBfbW9kZV9mb3Jj ZShwcml2LCBwb3J0LCBpbnRlcmZhY2UpOw0KKwlkZWZhdWx0Og0KKwkJcmV0dXJuIC1FSU5WQUw7 DQorCX0NCisNCisJcmV0dXJuIC1FSU5WQUw7DQorfQ0KKw0KIHN0YXRpYyBpbnQNCiBtdDc1M3hf bWFjX2NvbmZpZyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCB1bnNpZ25lZCBpbnQg bW9kZSwNCiAJCSAgY29uc3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpDQpAQCAt MTQ1Niw2ICsyMTY5LDggQEAgbXQ3NTN4X3BoeWxpbmtfbWFjX2NvbmZpZyhzdHJ1Y3QgZHNhX3N3 aXRjaCAqZHMsIGludCBwb3J0LCB1bnNpZ25lZCBpbnQgbW9kZSwNCiAJCWlmIChtdDc1M3hfbWFj X2NvbmZpZyhkcywgcG9ydCwgbW9kZSwgc3RhdGUpIDwgMCkNCiAJCQlnb3RvIHVuc3VwcG9ydGVk Ow0KIA0KKwkJaWYgKHByaXYtPnA1X2ludGZfc2VsICE9IFA1X0RJU0FCTEVEKQ0KKwkJCXByaXYt PnA1X2ludGVyZmFjZSA9IHN0YXRlLT5pbnRlcmZhY2U7DQogCQlicmVhazsNCiAJY2FzZSA2OiAv KiAxc3QgY3B1IHBvcnQgKi8NCiAJCWlmIChwcml2LT5wNl9pbnRlcmZhY2UgPT0gc3RhdGUtPmlu dGVyZmFjZSkNCkBAIC0xNDc1LDcgKzIxOTAsOCBAQCBtdDc1M3hfcGh5bGlua19tYWNfY29uZmln KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIHVuc2lnbmVkIGludCBtb2RlLA0KIAkJ cmV0dXJuOw0KIAl9DQogDQotCWlmIChwaHlsaW5rX2F1dG9uZWdfaW5iYW5kKG1vZGUpKSB7DQor CWlmIChwaHlsaW5rX2F1dG9uZWdfaW5iYW5kKG1vZGUpICYmDQorCSAgICBzdGF0ZS0+aW50ZXJm YWNlICE9IFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSkgew0KIAkJZGV2X2Vycihkcy0+ZGV2LCAi JXM6IGluLWJhbmQgbmVnb3RpYXRpb24gdW5zdXBwb3J0ZWRcbiIsDQogCQkJX19mdW5jX18pOw0K IAkJcmV0dXJuOw0KQEAgLTE0ODUsNyArMjIwMSw3IEBAIG10NzUzeF9waHlsaW5rX21hY19jb25m aWcoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgdW5zaWduZWQgaW50IG1vZGUsDQog CW1jcl9uZXcgPSBtY3JfY3VyOw0KIAltY3JfbmV3ICY9IH5QTUNSX0xJTktfU0VUVElOR1NfTUFT SzsNCiAJbWNyX25ldyB8PSBQTUNSX0lGR19YTUlUKDEpIHwgUE1DUl9NQUNfTU9ERSB8IFBNQ1Jf QkFDS09GRl9FTiB8DQotCQkgICBQTUNSX0JBQ0tQUl9FTiB8IFBNQ1JfRk9SQ0VfTU9ERTsNCisJ CSAgIFBNQ1JfQkFDS1BSX0VOIHwgUE1DUl9GT1JDRV9NT0RFX0lEKHByaXYtPmlkKTsNCiANCiAJ LyogQXJlIHdlIGNvbm5lY3RlZCB0byBleHRlcm5hbCBwaHkgKi8NCiAJaWYgKHBvcnQgPT0gNSAm JiBkc2FfaXNfdXNlcl9wb3J0KGRzLCA1KSkNCkBAIC0xNDk1LDcgKzIyMTEsMTggQEAgbXQ3NTN4 X3BoeWxpbmtfbWFjX2NvbmZpZyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCB1bnNp Z25lZCBpbnQgbW9kZSwNCiAJCW10NzUzMF93cml0ZShwcml2LCBNVDc1MzBfUE1DUl9QKHBvcnQp LCBtY3JfbmV3KTsNCiB9DQogDQotc3RhdGljIHZvaWQgbXQ3NTMwX3BoeWxpbmtfbWFjX2xpbmtf ZG93bihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LA0KK3N0YXRpYyB2b2lkDQorbXQ3 NTN4X3BoeWxpbmtfbWFjX2FuX3Jlc3RhcnQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9y dCkNCit7DQorCXN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGRzLT5wcml2Ow0KKw0KKwlpZiAo IXByaXYtPmluZm8tPm1hY19wY3NfYW5fcmVzdGFydCkNCisJCXJldHVybjsNCisNCisJcHJpdi0+ aW5mby0+bWFjX3Bjc19hbl9yZXN0YXJ0KGRzLCBwb3J0KTsNCit9DQorDQorc3RhdGljIHZvaWQg bXQ3NTN4X3BoeWxpbmtfbWFjX2xpbmtfZG93bihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBw b3J0LA0KIAkJCQkJIHVuc2lnbmVkIGludCBtb2RlLA0KIAkJCQkJIHBoeV9pbnRlcmZhY2VfdCBp bnRlcmZhY2UpDQogew0KQEAgLTE1MDQsNyArMjIzMSwxOSBAQCBzdGF0aWMgdm9pZCBtdDc1MzBf cGh5bGlua19tYWNfbGlua19kb3duKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsDQog CW10NzUzMF9jbGVhcihwcml2LCBNVDc1MzBfUE1DUl9QKHBvcnQpLCBQTUNSX0xJTktfU0VUVElO R1NfTUFTSyk7DQogfQ0KIA0KLXN0YXRpYyB2b2lkIG10NzUzMF9waHlsaW5rX21hY19saW5rX3Vw KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsDQorc3RhdGljIHZvaWQgbXQ3NTN4X21h Y19wY3NfbGlua191cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LA0KKwkJCQkgICB1 bnNpZ25lZCBpbnQgbW9kZSwgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSwNCisJCQkJICAgaW50 IHNwZWVkLCBpbnQgZHVwbGV4KQ0KK3sNCisJc3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gZHMt PnByaXY7DQorDQorCWlmICghcHJpdi0+aW5mby0+bWFjX3Bjc19saW5rX3VwKQ0KKwkJcmV0dXJu Ow0KKw0KKwlwcml2LT5pbmZvLT5tYWNfcGNzX2xpbmtfdXAoZHMsIHBvcnQsIG1vZGUsIGludGVy ZmFjZSwgc3BlZWQsIGR1cGxleCk7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIG10NzUzeF9waHlsaW5r X21hY19saW5rX3VwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsDQogCQkJCSAgICAg ICB1bnNpZ25lZCBpbnQgbW9kZSwNCiAJCQkJICAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZh Y2UsDQogCQkJCSAgICAgICBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LA0KQEAgLTE1MTQsOCAr MjI1MywxOSBAQCBzdGF0aWMgdm9pZCBtdDc1MzBfcGh5bGlua19tYWNfbGlua191cChzdHJ1Y3Qg ZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LA0KIAlzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBk cy0+cHJpdjsNCiAJdTMyIG1jcjsNCiANCisJbXQ3NTN4X21hY19wY3NfbGlua191cChkcywgcG9y dCwgbW9kZSwgaW50ZXJmYWNlLCBzcGVlZCwgZHVwbGV4KTsNCisNCiAJbWNyID0gUE1DUl9SWF9F TiB8IFBNQ1JfVFhfRU4gfCBQTUNSX0ZPUkNFX0xOSzsNCiANCisJLyogTVQ3NTN4IE1BQyB3b3Jr cyBpbiAxRyBmdWxsIGR1cGxleCBtb2RlIGZvciBhbGwgdXAtY2xvY2tlZA0KKwkgKiB2YXJpYW50 cy4NCisJICovDQorCWlmIChpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1RSR01JSSB8 fA0KKwkgICAgKHBoeV9pbnRlcmZhY2VfbW9kZV9pc184MDIzeihpbnRlcmZhY2UpKSkgew0KKwkJ c3BlZWQgPSBTUEVFRF8xMDAwOw0KKwkJZHVwbGV4ID0gRFVQTEVYX0ZVTEw7DQorCX0NCisNCiAJ c3dpdGNoIChzcGVlZCkgew0KIAljYXNlIFNQRUVEXzEwMDA6DQogCQltY3IgfD0gUE1DUl9GT1JD RV9TUEVFRF8xMDAwOw0KQEAgLTE1MzUsNiArMjI4NSw0NSBAQCBzdGF0aWMgdm9pZCBtdDc1MzBf cGh5bGlua19tYWNfbGlua191cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LA0KIAlt dDc1MzBfc2V0KHByaXYsIE1UNzUzMF9QTUNSX1AocG9ydCksIG1jcik7DQogfQ0KIA0KK3N0YXRp YyBpbnQNCittdDc1MzFfY3B1X3BvcnRfY29uZmlnKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50 IHBvcnQpDQorew0KKwlzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBkcy0+cHJpdjsNCisJcGh5 X2ludGVyZmFjZV90IGludGVyZmFjZTsNCisJaW50IHNwZWVkOw0KKw0KKwlzd2l0Y2ggKHBvcnQp IHsNCisJY2FzZSA1Og0KKwkJaWYgKG10NzUzMV9pc19yZ21paV9wb3J0KHByaXYsIHBvcnQpKQ0K KwkJCWludGVyZmFjZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSTsNCisJCWVsc2UNCisJCQlp bnRlcmZhY2UgPSBQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYOw0KKw0KKwkJcHJpdi0+cDVf aW50ZXJmYWNlID0gaW50ZXJmYWNlOw0KKwkJYnJlYWs7DQorCWNhc2UgNjoNCisJCWludGVyZmFj ZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVg7DQorDQorCQltdDc1MzFfcGFkX3NldHVw KGRzLCBpbnRlcmZhY2UpOw0KKw0KKwkJcHJpdi0+cDZfaW50ZXJmYWNlID0gaW50ZXJmYWNlOw0K KwkJYnJlYWs7DQorCX07DQorDQorCWlmIChpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RF XzI1MDBCQVNFWCkNCisJCXNwZWVkID0gU1BFRURfMjUwMDsNCisJZWxzZQ0KKwkJc3BlZWQgPSBT UEVFRF8xMDAwOw0KKw0KKwltdDc1MzFfbWFjX2NvbmZpZyhkcywgcG9ydCwgTUxPX0FOX0ZJWEVE LCBpbnRlcmZhY2UpOw0KKwltdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMwX1BNQ1JfUChwb3J0KSwN CisJCSAgICAgUE1DUl9DUFVfUE9SVF9TRVRUSU5HKHByaXYtPmlkKSk7DQorCW10NzUzeF9waHls aW5rX21hY19saW5rX3VwKGRzLCBwb3J0LCBNTE9fQU5fRklYRUQsIGludGVyZmFjZSwgTlVMTCwN CisJCQkJICAgc3BlZWQsIERVUExFWF9GVUxMLCB0cnVlLCB0cnVlKTsNCisNCisJcmV0dXJuIDA7 DQorfQ0KKw0KIHN0YXRpYyB2b2lkDQogbXQ3NTMwX21hY19wb3J0X3ZhbGlkYXRlKHN0cnVjdCBk c2Ffc3dpdGNoICpkcywgaW50IHBvcnQsDQogCQkJIHVuc2lnbmVkIGxvbmcgKnN1cHBvcnRlZCkN CkBAIC0xNTQzLDYgKzIzMzIsMTQgQEAgbXQ3NTMwX21hY19wb3J0X3ZhbGlkYXRlKHN0cnVjdCBk c2Ffc3dpdGNoICpkcywgaW50IHBvcnQsDQogCQlwaHlsaW5rX3NldChzdXBwb3J0ZWQsIDEwMDBi YXNlWF9GdWxsKTsNCiB9DQogDQorc3RhdGljIHZvaWQgbXQ3NTMxX21hY19wb3J0X3ZhbGlkYXRl KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsDQorCQkJCSAgICAgdW5zaWduZWQgbG9u ZyAqc3VwcG9ydGVkKQ0KK3sNCisJc3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gZHMtPnByaXY7 DQorDQorCW10NzUzMV9zZ21paV92YWxpZGF0ZShwcml2LCBwb3J0LCBzdXBwb3J0ZWQpOw0KK30N CisNCiBzdGF0aWMgdm9pZA0KIG10NzUzeF9waHlsaW5rX3ZhbGlkYXRlKHN0cnVjdCBkc2Ffc3dp dGNoICpkcywgaW50IHBvcnQsDQogCQkJdW5zaWduZWQgbG9uZyAqc3VwcG9ydGVkLA0KQEAgLTE1 NTksNyArMjM1Niw4IEBAIG10NzUzeF9waHlsaW5rX3ZhbGlkYXRlKHN0cnVjdCBkc2Ffc3dpdGNo ICpkcywgaW50IHBvcnQsDQogDQogCXBoeWxpbmtfc2V0X3BvcnRfbW9kZXMobWFzayk7DQogDQot CWlmIChzdGF0ZS0+aW50ZXJmYWNlICE9IFBIWV9JTlRFUkZBQ0VfTU9ERV9UUkdNSUkpIHsNCisJ aWYgKHN0YXRlLT5pbnRlcmZhY2UgIT0gUEhZX0lOVEVSRkFDRV9NT0RFX1RSR01JSSB8fA0KKwkg ICAgIXBoeV9pbnRlcmZhY2VfbW9kZV9pc184MDIzeihzdGF0ZS0+aW50ZXJmYWNlKSkgew0KIAkJ cGh5bGlua19zZXQobWFzaywgMTBiYXNlVF9IYWxmKTsNCiAJCXBoeWxpbmtfc2V0KG1hc2ssIDEw YmFzZVRfRnVsbCk7DQogCQlwaHlsaW5rX3NldChtYXNrLCAxMDBiYXNlVF9IYWxmKTsNCkBAIC0x NTc4LDYgKzIzNzYsMTEgQEAgbXQ3NTN4X3BoeWxpbmtfdmFsaWRhdGUoc3RydWN0IGRzYV9zd2l0 Y2ggKmRzLCBpbnQgcG9ydCwNCiANCiAJbGlua21vZGVfYW5kKHN1cHBvcnRlZCwgc3VwcG9ydGVk LCBtYXNrKTsNCiAJbGlua21vZGVfYW5kKHN0YXRlLT5hZHZlcnRpc2luZywgc3RhdGUtPmFkdmVy dGlzaW5nLCBtYXNrKTsNCisNCisJLyogV2UgY2FuIG9ubHkgb3BlcmF0ZSBhdCAyNTAwQmFzZVgg b3IgMTAwMEJhc2VYLiAgSWYgcmVxdWVzdGVkDQorCSAqIHRvIGFkdmVydGlzZSBib3RoLCBvbmx5 IHJlcG9ydCBhZHZlcnRpc2luZyBhdCAyNTAwQmFzZVguDQorCSAqLw0KKwlwaHlsaW5rX2hlbHBl cl9iYXNleF9zcGVlZChzdGF0ZSk7DQogfQ0KIA0KIHN0YXRpYyBpbnQNCkBAIC0xNjIwLDYgKzI0 MjMsNTcgQEAgbXQ3NTMwX3BoeWxpbmtfbWFjX2xpbmtfc3RhdGUoc3RydWN0IGRzYV9zd2l0Y2gg KmRzLCBpbnQgcG9ydCwNCiAJcmV0dXJuIDE7DQogfQ0KIA0KK3N0YXRpYyBpbnQNCittdDc1MzFf c2dtaWlfcGNzX2dldF9zdGF0ZV9hbihzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0 LA0KKwkJCSAgICAgIHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKQ0KK3sNCisJdTMy IHN0YXR1cywgdmFsOw0KKwl1MTYgY29uZmlnX3JlZzsNCisNCisJc3RhdHVzID0gbXQ3NTMwX3Jl YWQocHJpdiwgTVQ3NTMxX1BDU19DT05UUk9MXzEocG9ydCkpOw0KKwlzdGF0ZS0+bGluayA9ICEh KHN0YXR1cyAmIE1UNzUzMV9TR01JSV9MSU5LX1NUQVRVUyk7DQorCWlmIChzdGF0ZS0+aW50ZXJm YWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSAmJg0KKwkgICAgKHN0YXR1cyAmIE1UNzUz MV9TR01JSV9BTl9FTkFCTEUpKSB7DQorCQl2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFf UENTX1NQRUVEX0FCSUxJVFkocG9ydCkpOw0KKwkJY29uZmlnX3JlZyA9IHZhbCA+PiAxNjsNCisN CisJCXN3aXRjaCAoY29uZmlnX3JlZyAmIExQQV9TR01JSV9TUERfTUFTSykgew0KKwkJY2FzZSBM UEFfU0dNSUlfMTAwMDoNCisJCQlzdGF0ZS0+c3BlZWQgPSBTUEVFRF8xMDAwOw0KKwkJCWJyZWFr Ow0KKwkJY2FzZSBMUEFfU0dNSUlfMTAwOg0KKwkJCXN0YXRlLT5zcGVlZCA9IFNQRUVEXzEwMDsN CisJCQlicmVhazsNCisJCWNhc2UgTFBBX1NHTUlJXzEwOg0KKwkJCXN0YXRlLT5zcGVlZCA9IFNQ RUVEXzEwOw0KKwkJCWJyZWFrOw0KKwkJZGVmYXVsdDoNCisJCQlkZXZfZXJyKHByaXYtPmRldiwg ImludmFsaWQgc2dtaWkgUEhZIHNwZWVkXG4iKTsNCisJCQlzdGF0ZS0+bGluayA9IGZhbHNlOw0K KwkJCXJldHVybiAtRUlOVkFMOw0KKwkJfQ0KKw0KKwkJaWYgKGNvbmZpZ19yZWcgJiBMUEFfU0dN SUlfRlVMTF9EVVBMRVgpDQorCQkJc3RhdGUtPmR1cGxleCA9IERVUExFWF9GVUxMOw0KKwkJZWxz ZQ0KKwkJCXN0YXRlLT5kdXBsZXggPSBEVVBMRVhfSEFMRjsNCisJfQ0KKw0KKwlyZXR1cm4gMDsN Cit9DQorDQorc3RhdGljIGludA0KK210NzUzMV9waHlsaW5rX21hY19saW5rX3N0YXRlKHN0cnVj dCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsDQorCQkJICAgICAgc3RydWN0IHBoeWxpbmtfbGlu a19zdGF0ZSAqc3RhdGUpDQorew0KKwlzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBkcy0+cHJp djsNCisNCisJaWYgKHN0YXRlLT5pbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJ KQ0KKwkJcmV0dXJuIG10NzUzMV9zZ21paV9wY3NfZ2V0X3N0YXRlX2FuKHByaXYsIHBvcnQsIHN0 YXRlKTsNCisNCisJcmV0dXJuIC1FT1BOT1RTVVBQOw0KK30NCisNCiBzdGF0aWMgaW50DQogbXQ3 NTN4X3BoeWxpbmtfbWFjX2xpbmtfc3RhdGUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9y dCwNCiAJCQkgICAgICBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSkNCkBAIC0xNjcz LDEzICsyNTI3LDE0IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgbXQ3NTMw X3N3aXRjaF9vcHMgPSB7DQogCS5wb3J0X3ZsYW5fcHJlcGFyZQk9IG10NzUzMF9wb3J0X3ZsYW5f cHJlcGFyZSwNCiAJLnBvcnRfdmxhbl9hZGQJCT0gbXQ3NTMwX3BvcnRfdmxhbl9hZGQsDQogCS5w b3J0X3ZsYW5fZGVsCQk9IG10NzUzMF9wb3J0X3ZsYW5fZGVsLA0KLQkucG9ydF9taXJyb3JfYWRk CT0gbXQ3NTMwX3BvcnRfbWlycm9yX2FkZCwNCi0JLnBvcnRfbWlycm9yX2RlbAk9IG10NzUzMF9w b3J0X21pcnJvcl9kZWwsDQorCS5wb3J0X21pcnJvcl9hZGQJPSBtdDc1M3hfcG9ydF9taXJyb3Jf YWRkLA0KKwkucG9ydF9taXJyb3JfZGVsCT0gbXQ3NTN4X3BvcnRfbWlycm9yX2RlbCwNCiAJLnBo eWxpbmtfdmFsaWRhdGUJPSBtdDc1M3hfcGh5bGlua192YWxpZGF0ZSwNCiAJLnBoeWxpbmtfbWFj X2xpbmtfc3RhdGUJPSBtdDc1M3hfcGh5bGlua19tYWNfbGlua19zdGF0ZSwNCiAJLnBoeWxpbmtf bWFjX2NvbmZpZwk9IG10NzUzeF9waHlsaW5rX21hY19jb25maWcsDQotCS5waHlsaW5rX21hY19s aW5rX2Rvd24JPSBtdDc1MzBfcGh5bGlua19tYWNfbGlua19kb3duLA0KLQkucGh5bGlua19tYWNf bGlua191cAk9IG10NzUzMF9waHlsaW5rX21hY19saW5rX3VwLA0KKwkucGh5bGlua19tYWNfYW5f cmVzdGFydAk9IG10NzUzeF9waHlsaW5rX21hY19hbl9yZXN0YXJ0LA0KKwkucGh5bGlua19tYWNf bGlua19kb3duCT0gbXQ3NTN4X3BoeWxpbmtfbWFjX2xpbmtfZG93biwNCisJLnBoeWxpbmtfbWFj X2xpbmtfdXAJPSBtdDc1M3hfcGh5bGlua19tYWNfbGlua191cCwNCiB9Ow0KIA0KIHN0YXRpYyBj b25zdCBzdHJ1Y3QgbXQ3NTN4X2luZm8gbXQ3NTN4X3RhYmxlW10gPSB7DQpAQCAtMTcwNSwxMSAr MjU2MCwyNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG10NzUzeF9pbmZvIG10NzUzeF90YWJsZVtd ID0gew0KIAkJLm1hY19wb3J0X2dldF9zdGF0ZSA9IG10NzUzMF9waHlsaW5rX21hY19saW5rX3N0 YXRlLA0KIAkJLm1hY19wb3J0X2NvbmZpZyA9IG10NzUzMF9tYWNfY29uZmlnLA0KIAl9LA0KKwlb SURfTVQ3NTMxXSA9IHsNCisJCS5pZCA9IElEX01UNzUzMSwNCisJCS5zd19zZXR1cCA9IG10NzUz MV9zZXR1cCwNCisJCS5waHlfcmVhZCA9IG10NzUzMV9pbmRfcGh5X3JlYWQsDQorCQkucGh5X3dy aXRlID0gbXQ3NTMxX2luZF9waHlfd3JpdGUsDQorCQkucGFkX3NldHVwID0gbXQ3NTMxX3BhZF9z ZXR1cCwNCisJCS5jcHVfcG9ydF9jb25maWcgPSBtdDc1MzFfY3B1X3BvcnRfY29uZmlnLA0KKwkJ LnBoeV9tb2RlX3N1cHBvcnRlZCA9IG10NzUzMV9waHlfc3VwcG9ydGVkLA0KKwkJLm1hY19wb3J0 X3ZhbGlkYXRlID0gbXQ3NTMxX21hY19wb3J0X3ZhbGlkYXRlLA0KKwkJLm1hY19wb3J0X2dldF9z dGF0ZSA9IG10NzUzMV9waHlsaW5rX21hY19saW5rX3N0YXRlLA0KKwkJLm1hY19wb3J0X2NvbmZp ZyA9IG10NzUzMV9tYWNfY29uZmlnLA0KKwkJLm1hY19wY3NfYW5fcmVzdGFydCA9IG10NzUzMV9z Z21paV9yZXN0YXJ0X2FuLA0KKwkJLm1hY19wY3NfbGlua191cCA9IG10NzUzMV9zZ21paV9saW5r X3VwX2ZvcmNlLA0KKwl9LA0KIH07DQogDQogc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2Vf aWQgbXQ3NTMwX29mX21hdGNoW10gPSB7DQogCXsgLmNvbXBhdGlibGUgPSAibWVkaWF0ZWssbXQ3 NjIxIiwgLmRhdGEgPSAmbXQ3NTN4X3RhYmxlW0lEX01UNzYyMV0sIH0sDQogCXsgLmNvbXBhdGli bGUgPSAibWVkaWF0ZWssbXQ3NTMwIiwgLmRhdGEgPSAmbXQ3NTN4X3RhYmxlW0lEX01UNzUzMF0s IH0sDQorCXsgLmNvbXBhdGlibGUgPSAibWVkaWF0ZWssbXQ3NTMxIiwgLmRhdGEgPSAmbXQ3NTN4 X3RhYmxlW0lEX01UNzUzMV0sIH0sDQogCXsgLyogc2VudGluZWwgKi8gfSwNCiB9Ow0KIE1PRFVM RV9ERVZJQ0VfVEFCTEUob2YsIG10NzUzMF9vZl9tYXRjaCk7DQpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9uZXQvZHNhL210NzUzMC5oIGIvZHJpdmVycy9uZXQvZHNhL210NzUzMC5oDQppbmRleCA0NGFj NTU0MzMwODkuLjkyNzhhOGUzZDA0ZSAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1 MzAuaA0KKysrIGIvZHJpdmVycy9uZXQvZHNhL210NzUzMC5oDQpAQCAtMTQsNiArMTQsNyBAQA0K IGVudW0gbXQ3NTN4X2lkIHsNCiAJSURfTVQ3NTMwID0gMCwNCiAJSURfTVQ3NjIxID0gMSwNCisJ SURfTVQ3NTMxID0gMiwNCiB9Ow0KIA0KICNkZWZpbmUJTlVNX1RSR01JSV9DVFJMCQkJNQ0KQEAg LTQxLDYgKzQyLDMzIEBAIGVudW0gbXQ3NTN4X2lkIHsNCiAjZGVmaW5lICBNSVJST1JfUE9SVCh4 KQkJCSgoeCkgJiAweDcpDQogI2RlZmluZSAgTUlSUk9SX01BU0sJCQkweDcNCiANCisvKiBSZWdp c3RlcnMgZm9yIENQVSBmb3J3YXJkIGNvbnRyb2wgKi8NCisjZGVmaW5lIE1UNzUzMV9DRkMJCQkw eDQNCisjZGVmaW5lICBNVDc1MzFfTUlSUk9SX0VOCQlCSVQoMTkpDQorI2RlZmluZSAgTVQ3NTMx X01JUlJPUl9NQVNLCQkoTUlSUk9SX01BU0sgPDwgMTYpDQorI2RlZmluZSAgTVQ3NTMxX01JUlJP Ul9QT1JUX0dFVCh4KQkoKCh4KSA+PiAxNikgJiBNSVJST1JfTUFTSykNCisjZGVmaW5lICBNVDc1 MzFfTUlSUk9SX1BPUlRfU0VUKHgpCSgoKHgpICYgTUlSUk9SX01BU0spIDw8IDE2KQ0KKyNkZWZp bmUgIE1UNzUzMV9DUFVfUE1BUF9NQVNLCQlHRU5NQVNLKDcsIDApDQorDQorI2RlZmluZSBNVDc1 M1hfTUlSUk9SX1JFRyhpZCkJCSgoKGlkKSA9PSBJRF9NVDc1MzEpID8gXA0KKwkJCQkJIE1UNzUz MV9DRkMgOiBNVDc1MzBfTUZDKQ0KKyNkZWZpbmUgTVQ3NTNYX01JUlJPUl9FTihpZCkJCSgoKGlk KSA9PSBJRF9NVDc1MzEpID8gXA0KKwkJCQkJIE1UNzUzMV9NSVJST1JfRU4gOiBNSVJST1JfRU4p DQorI2RlZmluZSBNVDc1M1hfTUlSUk9SX01BU0soaWQpCQkoKChpZCkgPT0gSURfTVQ3NTMxKSA/ IFwNCisJCQkJCSBNVDc1MzFfTUlSUk9SX01BU0sgOiBNSVJST1JfTUFTSykNCisNCisvKiBSZWdp c3RlcnMgZm9yIEJQRFUgYW5kIFBBRSBmcmFtZSBjb250cm9sKi8NCisjZGVmaW5lIE1UNzUzWF9C UEMJCQkweDI0DQorI2RlZmluZSAgTVQ3NTNYX0JQRFVfUE9SVF9GV19NQVNLCUdFTk1BU0soMiwg MCkNCisNCitlbnVtIG10NzUzeF9icGR1X3BvcnRfZncgew0KKwlNVDc1M1hfQlBEVV9GT0xMT1df TUZDLA0KKwlNVDc1M1hfQlBEVV9DUFVfRVhDTFVERSA9IDQsDQorCU1UNzUzWF9CUERVX0NQVV9J TkNMVURFID0gNSwNCisJTVQ3NTNYX0JQRFVfQ1BVX09OTFkgPSA2LA0KKwlNVDc1M1hfQlBEVV9E Uk9QID0gNywNCit9Ow0KKw0KIC8qIFJlZ2lzdGVycyBmb3IgYWRkcmVzcyB0YWJsZSBhY2Nlc3Mg Ki8NCiAjZGVmaW5lIE1UNzUzMF9BVEExCQkJMHg3NA0KICNkZWZpbmUgIFNUQVRJQ19FTVAJCQkw DQpAQCAtMjIwLDEwICsyNDgsMzAgQEAgZW51bSBtdDc1MzBfdmxhbl9wb3J0X2F0dHIgew0KICNk ZWZpbmUgIFBNQ1JfRk9SQ0VfTE5LCQkJQklUKDApDQogI2RlZmluZSAgUE1DUl9TUEVFRF9NQVNL CQkoUE1DUl9GT1JDRV9TUEVFRF8xMDAgfCBcDQogCQkJCQkgUE1DUl9GT1JDRV9TUEVFRF8xMDAw KQ0KKyNkZWZpbmUgIE1UNzUzMV9GT1JDRV9MTksJCUJJVCgzMSkNCisjZGVmaW5lICBNVDc1MzFf Rk9SQ0VfU1BECQlCSVQoMzApDQorI2RlZmluZSAgTVQ3NTMxX0ZPUkNFX0RQWAkJQklUKDI5KQ0K KyNkZWZpbmUgIE1UNzUzMV9GT1JDRV9SWF9GQwkJQklUKDI4KQ0KKyNkZWZpbmUgIE1UNzUzMV9G T1JDRV9UWF9GQwkJQklUKDI3KQ0KKyNkZWZpbmUgIE1UNzUzMV9GT1JDRV9NT0RFCQkoTVQ3NTMx X0ZPUkNFX0xOSyB8IFwNCisJCQkJCSBNVDc1MzFfRk9SQ0VfU1BEIHwgXA0KKwkJCQkJIE1UNzUz MV9GT1JDRV9EUFggfCBcDQorCQkJCQkgTVQ3NTMxX0ZPUkNFX1JYX0ZDIHwgXA0KKwkJCQkJIE1U NzUzMV9GT1JDRV9UWF9GQykNCisjZGVmaW5lICBQTUNSX0ZPUkNFX01PREVfSUQoaWQpCQkoKChp ZCkgPT0gSURfTVQ3NTMxKSA/IFwNCisJCQkJCSBNVDc1MzFfRk9SQ0VfTU9ERSA6IFwNCisJCQkJ CSBQTUNSX0ZPUkNFX01PREUpDQogI2RlZmluZSAgUE1DUl9MSU5LX1NFVFRJTkdTX01BU0sJKFBN Q1JfVFhfRU4gfCBQTUNSX0ZPUkNFX1NQRUVEXzEwMDAgfCBcDQogCQkJCQkgUE1DUl9SWF9FTiB8 IFBNQ1JfRk9SQ0VfU1BFRURfMTAwIHwgXA0KIAkJCQkJIFBNQ1JfVFhfRkNfRU4gfCBQTUNSX1JY X0ZDX0VOIHwgXA0KIAkJCQkJIFBNQ1JfRk9SQ0VfRkRYIHwgUE1DUl9GT1JDRV9MTkspDQorI2Rl ZmluZSAgUE1DUl9DUFVfUE9SVF9TRVRUSU5HKGlkKQkoUE1DUl9GT1JDRV9NT0RFX0lEKChpZCkp IHwgXA0KKwkJCQkJIFBNQ1JfSUZHX1hNSVQoMSkgfCBQTUNSX01BQ19NT0RFIHwgXA0KKwkJCQkJ IFBNQ1JfQkFDS09GRl9FTiB8IFBNQ1JfQkFDS1BSX0VOIHwgXA0KKwkJCQkJIFBNQ1JfVFhfRU4g fCBQTUNSX1JYX0VOIHwgXA0KKwkJCQkJIFBNQ1JfVFhfRkNfRU4gfCBQTUNSX1JYX0ZDX0VOIHwg XA0KKwkJCQkJIFBNQ1JfRk9SQ0VfU1BFRURfMTAwMCB8IFwNCisJCQkJCSBQTUNSX0ZPUkNFX0ZE WCB8IFBNQ1JfRk9SQ0VfTE5LKQ0KIA0KICNkZWZpbmUgTVQ3NTMwX1BNU1JfUCh4KQkJKDB4MzAw OCArICh4KSAqIDB4MTAwKQ0KICNkZWZpbmUgIFBNU1JfRUVFMUcJCQlCSVQoNykNCkBAIC0yMzcs NiArMjg1LDEwIEBAIGVudW0gbXQ3NTMwX3ZsYW5fcG9ydF9hdHRyIHsNCiAjZGVmaW5lICBQTVNS X0RQWAkJCUJJVCgxKQ0KICNkZWZpbmUgIFBNU1JfTElOSwkJCUJJVCgwKQ0KIA0KKy8qIFJlZ2lz dGVyIGZvciBwb3J0IGRlYnVnIGNvdW50ICovDQorI2RlZmluZSBNVDc1MzFfREJHX0NOVCh4KQkJ KDB4MzAxOCArICh4KSAqIDB4MTAwKQ0KKyNkZWZpbmUgIE1UNzUzMV9ESVNfQ0xSCQkJQklUKDMx KQ0KKw0KIC8qIFJlZ2lzdGVyIGZvciBNSUIgKi8NCiAjZGVmaW5lIE1UNzUzMF9QT1JUX01JQl9D T1VOVEVSKHgpCSgweDQwMDAgKyAoeCkgKiAweDEwMCkNCiAjZGVmaW5lIE1UNzUzMF9NSUJfQ0NS CQkJMHg0ZmUwDQpAQCAtMjU0LDEyICszMDYsMTE4IEBAIGVudW0gbXQ3NTMwX3ZsYW5fcG9ydF9h dHRyIHsNCiAJCQkJCSBDQ1JfUlhfT0NUX0NOVF9CQUQgfCBcDQogCQkJCQkgQ0NSX1RYX09DVF9D TlRfR09PRCB8IFwNCiAJCQkJCSBDQ1JfVFhfT0NUX0NOVF9CQUQpDQorDQorLyogTVQ3NTMxIFNH TUlJIHJlZ2lzdGVyIGdyb3VwICovDQorI2RlZmluZSBNVDc1MzFfU0dNSUlfUkVHX0JBU0UJCTB4 NTAwMA0KKyNkZWZpbmUgTVQ3NTMxX1NHTUlJX1JFRyhwLCByKQkJKE1UNzUzMV9TR01JSV9SRUdf QkFTRSArIFwNCisJCQkJCSgocCkgLSA1KSAqIDB4MTAwMCArIChyKSkNCisNCisvKiBSZWdpc3Rl ciBmb3JTR01JSSBQQ1NfQ09OVFJPTF8xICovDQorI2RlZmluZSBNVDc1MzFfUENTX0NPTlRST0xf MShwKQkJTVQ3NTMxX1NHTUlJX1JFRyhwLCAweDAwKQ0KKyNkZWZpbmUgIE1UNzUzMV9TR01JSV9M SU5LX1NUQVRVUwlCSVQoMTgpDQorI2RlZmluZSAgTVQ3NTMxX1NHTUlJX0FOX0VOQUJMRQkJQklU KDEyKQ0KKyNkZWZpbmUgIE1UNzUzMV9TR01JSV9BTl9SRVNUQVJUCUJJVCg5KQ0KKw0KKy8qIFJl Z2lzdGVyIGZvciBTR01JSSBQQ1NfU1BQRURfQUJJTElUWSAqLw0KKyNkZWZpbmUgTVQ3NTMxX1BD U19TUEVFRF9BQklMSVRZKHApCU1UNzUzMV9TR01JSV9SRUcocCwgMHgwOCkNCisjZGVmaW5lICBN VDc1MzFfU0dNSUlfVFhfQ09ORklHX01BU0sJR0VOTUFTSygxNSwgMCkNCisjZGVmaW5lICBNVDc1 MzFfU0dNSUlfVFhfQ09ORklHCQlCSVQoMCkNCisNCisvKiBSZWdpc3RlciBmb3IgU0dNSUlfTU9E RSAqLw0KKyNkZWZpbmUgTVQ3NTMxX1NHTUlJX01PREUocCkJCU1UNzUzMV9TR01JSV9SRUcocCwg MHgyMCkNCisjZGVmaW5lICBNVDc1MzFfU0dNSUlfUkVNT1RFX0ZBVUxUX0RJUwlCSVQoOCkNCisj ZGVmaW5lICBNVDc1MzFfU0dNSUlfSUZfTU9ERV9NQVNLCUdFTk1BU0soNSwgMSkNCisjZGVmaW5l ICBNVDc1MzFfU0dNSUlfRk9SQ0VfRFVQTEVYCUJJVCg0KQ0KKyNkZWZpbmUgIE1UNzUzMV9TR01J SV9GT1JDRV9TUEVFRF9NQVNLCUdFTk1BU0soMywgMikNCisjZGVmaW5lICBNVDc1MzFfU0dNSUlf Rk9SQ0VfU1BFRURfMTAwMAlCSVQoMykNCisjZGVmaW5lICBNVDc1MzFfU0dNSUlfRk9SQ0VfU1BF RURfMTAwCUJJVCgyKQ0KKyNkZWZpbmUgIE1UNzUzMV9TR01JSV9GT1JDRV9TUEVFRF8xMAkwDQor I2RlZmluZSAgTVQ3NTMxX1NHTUlJX1NQRUVEX0RVUExFWF9BTglCSVQoMSkNCisNCitlbnVtIG10 NzUzMV9zZ21paV9mb3JjZV9kdXBsZXggew0KKwlNVDc1MzFfU0dNSUlfRk9SQ0VfRlVMTF9EVVBM RVggPSAwLA0KKwlNVDc1MzFfU0dNSUlfRk9SQ0VfSEFMRl9EVVBMRVggPSAweDEwLA0KK307DQor DQorLyogRmllbGRzIG9mIFFQSFlfUFdSX1NUQVRFX0NUUkwgKi8NCisjZGVmaW5lIE1UNzUzMV9R UEhZX1BXUl9TVEFURV9DVFJMKHApCU1UNzUzMV9TR01JSV9SRUcocCwgMHhlOCkNCisjZGVmaW5l ICBNVDc1MzFfU0dNSUlfUEhZQV9QV0QJCUJJVCg0KQ0KKw0KKy8qIFZhbHVlcyBvZiBTR01JSSBT UEVFRCAqLw0KKyNkZWZpbmUgTVQ3NTMxX1BIWUFfQ1RSTF9TSUdOQUwzKHApCU1UNzUzMV9TR01J SV9SRUcocCwgMHgxMjgpDQorI2RlZmluZSAgTVQ3NTMxX1JHX1RQSFlfU1BFRURfTUFTSwkoQklU KDIpIHwgQklUKDMpKQ0KKyNkZWZpbmUgIE1UNzUzMV9SR19UUEhZX1NQRUVEXzFfMjVHCTB4MA0K KyNkZWZpbmUgIE1UNzUzMV9SR19UUEhZX1NQRUVEXzNfMTI1RwlCSVQoMikNCisNCiAvKiBSZWdp c3RlciBmb3Igc3lzdGVtIHJlc2V0ICovDQogI2RlZmluZSBNVDc1MzBfU1lTX0NUUkwJCQkweDcw MDANCiAjZGVmaW5lICBTWVNfQ1RSTF9QSFlfUlNUCQlCSVQoMikNCiAjZGVmaW5lICBTWVNfQ1RS TF9TV19SU1QJCUJJVCgxKQ0KICNkZWZpbmUgIFNZU19DVFJMX1JFR19SU1QJCUJJVCgwKQ0KIA0K Ky8qIFJlZ2lzdGVyIGZvciBQSFkgSW5kaXJlY3QgQWNjZXNzIENvbnRyb2wgKi8NCisjZGVmaW5l IE1UNzUzMV9QSFlfSUFDCQkJMHg3MDFDDQorI2RlZmluZSAgTVQ3NTMxX1BIWV9BQ1NfU1QJCUJJ VCgzMSkNCisjZGVmaW5lICBNVDc1MzFfTURJT19SRUdfQUREUl9NQVNLCSgweDFmIDw8IDI1KQ0K KyNkZWZpbmUgIE1UNzUzMV9NRElPX1BIWV9BRERSX01BU0sJKDB4MWYgPDwgMjApDQorI2RlZmlu ZSAgTVQ3NTMxX01ESU9fQ01EX01BU0sJCSgweDMgPDwgMTgpDQorI2RlZmluZSAgTVQ3NTMxX01E SU9fU1RfTUFTSwkJKDB4MyA8PCAxNikNCisjZGVmaW5lICBNVDc1MzFfTURJT19SV19EQVRBX01B U0sJKDB4ZmZmZikNCisjZGVmaW5lICBNVDc1MzFfTURJT19SRUdfQUREUih4KQkoKCh4KSAmIDB4 MWYpIDw8IDI1KQ0KKyNkZWZpbmUgIE1UNzUzMV9NRElPX0RFVl9BRERSKHgpCSgoKHgpICYgMHgx ZikgPDwgMjUpDQorI2RlZmluZSAgTVQ3NTMxX01ESU9fUEhZX0FERFIoeCkJKCgoeCkgJiAweDFm KSA8PCAyMCkNCisjZGVmaW5lICBNVDc1MzFfTURJT19DTUQoeCkJCSgoKHgpICYgMHgzKSA8PCAx OCkNCisjZGVmaW5lICBNVDc1MzFfTURJT19TVCh4KQkJKCgoeCkgJiAweDMpIDw8IDE2KQ0KKw0K K2VudW0gbXQ3NTMxX3BoeV9pYWNfY21kIHsNCisJTVQ3NTMxX01ESU9fQUREUiA9IDAsDQorCU1U NzUzMV9NRElPX1dSSVRFID0gMSwNCisJTVQ3NTMxX01ESU9fUkVBRCA9IDIsDQorCU1UNzUzMV9N RElPX1JFQURfQ0w0NSA9IDMsDQorfTsNCisNCisvKiBNRElPX1NUOiBNRElPIHN0YXJ0IGZpZWxk ICovDQorZW51bSBtdDc1MzFfbWRpb19zdCB7DQorCU1UNzUzMV9NRElPX1NUX0NMNDUgPSAwLA0K KwlNVDc1MzFfTURJT19TVF9DTDIyID0gMSwNCit9Ow0KKw0KKyNkZWZpbmUgIE1UNzUzMV9NRElP X0NMMjJfUkVBRAkJKE1UNzUzMV9NRElPX1NUKE1UNzUzMV9NRElPX1NUX0NMMjIpIHwgXA0KKwkJ CQkJIE1UNzUzMV9NRElPX0NNRChNVDc1MzFfTURJT19SRUFEKSkNCisjZGVmaW5lICBNVDc1MzFf TURJT19DTDIyX1dSSVRFCQkoTVQ3NTMxX01ESU9fU1QoTVQ3NTMxX01ESU9fU1RfQ0wyMikgfCBc DQorCQkJCQkgTVQ3NTMxX01ESU9fQ01EKE1UNzUzMV9NRElPX1dSSVRFKSkNCisjZGVmaW5lICBN VDc1MzFfTURJT19DTDQ1X0FERFIJCShNVDc1MzFfTURJT19TVChNVDc1MzFfTURJT19TVF9DTDQ1 KSB8IFwNCisJCQkJCSBNVDc1MzFfTURJT19DTUQoTVQ3NTMxX01ESU9fQUREUikpDQorI2RlZmlu ZSAgTVQ3NTMxX01ESU9fQ0w0NV9SRUFECQkoTVQ3NTMxX01ESU9fU1QoTVQ3NTMxX01ESU9fU1Rf Q0w0NSkgfCBcDQorCQkJCQkgTVQ3NTMxX01ESU9fQ01EKE1UNzUzMV9NRElPX1JFQUQpKQ0KKyNk ZWZpbmUgIE1UNzUzMV9NRElPX0NMNDVfV1JJVEUJCShNVDc1MzFfTURJT19TVChNVDc1MzFfTURJ T19TVF9DTDQ1KSB8IFwNCisJCQkJCSBNVDc1MzFfTURJT19DTUQoTVQ3NTMxX01ESU9fV1JJVEUp KQ0KKw0KKy8qIFJlZ2lzdGVyIGZvciBSR01JSSBjbG9jayBwaGFzZSAqLw0KKyNkZWZpbmUgTVQ3 NTMxX0NMS0dFTl9DVFJMCQkweDc1MDANCisjZGVmaW5lICBDTEtfU0tFV19PVVQoeCkJCSgoKHgp ICYgMHgzKSA8PCA4KQ0KKyNkZWZpbmUgIENMS19TS0VXX09VVF9NQVNLCQlHRU5NQVNLKDksIDgp DQorI2RlZmluZSAgQ0xLX1NLRVdfSU4oeCkJCQkoKCh4KSAmIDB4MykgPDwgNikNCisjZGVmaW5l ICBDTEtfU0tFV19JTl9NQVNLCQlHRU5NQVNLKDcsIDYpDQorI2RlZmluZSAgUlhDTEtfTk9fREVM QVkJCQlCSVQoNSkNCisjZGVmaW5lICBUWENMS19OT19SRVZFUlNFCQlCSVQoNCkNCisjZGVmaW5l ICBHUF9NT0RFKHgpCQkJKCgoeCkgJiAweDMpIDw8IDEpDQorI2RlZmluZSAgR1BfTU9ERV9NQVNL CQkJR0VOTUFTSygyLCAxKQ0KKyNkZWZpbmUgIEdQX0NMS19FTgkJCUJJVCgwKQ0KKw0KK2VudW0g bXQ3NTMxX2dwX21vZGUgew0KKwlNVDc1MzFfR1BfTU9ERV9SR01JSSA9IDAsDQorCU1UNzUzMV9H UF9NT0RFX01JSSA9IDEsDQorCU1UNzUzMV9HUF9NT0RFX1JFVl9NSUkgPSAyDQorfTsNCisNCitl bnVtIG10NzUzMV9jbGtfc2tldyB7DQorCU1UNzUzMV9DTEtfU0tFV19OT19DSEcgPSAwLA0KKwlN VDc1MzFfQ0xLX1NLRVdfRExZXzEwMFBQUyA9IDEsDQorCU1UNzUzMV9DTEtfU0tFV19ETFlfMjAw UFBTID0gMiwNCisJTVQ3NTMxX0NMS19TS0VXX1JFVkVSU0UgPSAzLA0KK307DQorDQogLyogUmVn aXN0ZXIgZm9yIGh3IHRyYXAgc3RhdHVzICovDQogI2RlZmluZSBNVDc1MzBfSFdUUkFQCQkJMHg3 ODAwDQogI2RlZmluZSAgSFdUUkFQX1hUQUxfTUFTSwkJKEJJVCgxMCkgfCBCSVQoOSkpDQpAQCAt MjY3LDYgKzQyNSwxNiBAQCBlbnVtIG10NzUzMF92bGFuX3BvcnRfYXR0ciB7DQogI2RlZmluZSAg SFdUUkFQX1hUQUxfNDBNSFoJCShCSVQoMTApKQ0KICNkZWZpbmUgIEhXVFJBUF9YVEFMXzIwTUha CQkoQklUKDkpKQ0KIA0KKyNkZWZpbmUgTVQ3NTMxX0hXVFJBUAkJCTB4NzgwMA0KKyNkZWZpbmUg IEhXVFJBUF9YVEFMX0ZTRUxfTUFTSwkJQklUKDcpDQorI2RlZmluZSAgSFdUUkFQX1hUQUxfRlNF TF8yNU1IWgkJQklUKDcpDQorI2RlZmluZSAgSFdUUkFQX1hUQUxfRlNFTF80ME1IWgkJMA0KKy8q IFVuaXF1ZSBmaWVsZHMgb2YgKE0pSFdTVFJBUCBmb3IgTVQ3NTMxICovDQorI2RlZmluZSAgWFRB TF9GU0VMX1MJCQk3DQorI2RlZmluZSAgWFRBTF9GU0VMX00JCQlCSVQoNykNCisjZGVmaW5lICBQ SFlfRU4JCQkJQklUKDYpDQorI2RlZmluZSAgQ0hHX1NUUkFQCQkJQklUKDgpDQorDQogLyogUmVn aXN0ZXIgZm9yIGh3IHRyYXAgbW9kaWZpY2F0aW9uICovDQogI2RlZmluZSBNVDc1MzBfTUhXVFJB UAkJCTB4NzgwNA0KICNkZWZpbmUgIE1IV1RSQVBfUEhZMF9TRUwJCUJJVCgyMCkNCkBAIC0yODEs MTQgKzQ0OSwzNyBAQCBlbnVtIG10NzUzMF92bGFuX3BvcnRfYXR0ciB7DQogI2RlZmluZSBNVDc1 MzBfVE9QX1NJR19DVFJMCQkweDc4MDgNCiAjZGVmaW5lICBUT1BfU0lHX0NUUkxfTk9STUFMCQko QklUKDE3KSB8IEJJVCgxNikpDQogDQorI2RlZmluZSBNVDc1MzFfVE9QX1NJR19TUgkJMHg3ODBj DQorI2RlZmluZSAgUEFEX0RVQUxfU0dNSUlfRU4JCUJJVCgxKQ0KKyNkZWZpbmUgIFBBRF9NQ01f U01JX0VOCQkJQklUKDApDQorDQogI2RlZmluZSBNVDc1MzBfSU9fRFJWX0NSCQkweDc4MTANCiAj ZGVmaW5lICBQNV9JT19DTEtfRFJWKHgpCQkoKHgpICYgMHgzKQ0KICNkZWZpbmUgIFA1X0lPX0RB VEFfRFJWKHgpCQkoKCh4KSAmIDB4MykgPDwgNCkNCiANCisjZGVmaW5lIE1UNzUzMV9DSElQX1JF VgkJCTB4NzgxQw0KKw0KKyNkZWZpbmUgTVQ3NTMxX1BMTEdQX0VOCQkJMHg3ODIwDQorI2RlZmlu ZSAgRU5fQ09SRVBMTAkJCUJJVCgyKQ0KKyNkZWZpbmUgIFNXX0NMS1NXCQkJQklUKDEpDQorI2Rl ZmluZSAgU1dfUExMR1AJCQlCSVQoMCkNCisNCiAjZGVmaW5lIE1UNzUzMF9QNkVDUgkJCTB4Nzgz MA0KICNkZWZpbmUgIFA2X0lOVEZfTU9ERV9NQVNLCQkweDMNCiAjZGVmaW5lICBQNl9JTlRGX01P REUoeCkJCSgoeCkgJiAweDMpDQogDQorI2RlZmluZSBNVDc1MzFfUExMR1BfQ1IwCQkweDc4YTgN CisjZGVmaW5lICBSR19DT1JFUExMX0VOCQkJQklUKDIyKQ0KKyNkZWZpbmUgIFJHX0NPUkVQTExf UE9TRElWX1MJCTIzDQorI2RlZmluZSAgUkdfQ09SRVBMTF9QT1NESVZfTQkJMHgzODAwMDAwDQor I2RlZmluZSAgUkdfQ09SRVBMTF9TRE1fUENXX1MJCTENCisjZGVmaW5lICBSR19DT1JFUExMX1NE TV9QQ1dfTQkJMHgzZmZmZmUNCisjZGVmaW5lICBSR19DT1JFUExMX1NETV9QQ1dfQ0hHCQlCSVQo MCkNCisNCisvKiBSZWdpc3RlcnMgZm9yIFJHTUlJIGFuZCBTR01JSSBQTEwgY2xvY2sgKi8NCisj ZGVmaW5lIE1UNzUzMV9BTkFfUExMR1BfQ1IyCQkweDc4YjANCisjZGVmaW5lIE1UNzUzMV9BTkFf UExMR1BfQ1I1CQkweDc4YmMNCisNCiAvKiBSZWdpc3RlcnMgZm9yIFRSR01JSSBvbiB0aGUgYm90 aCBzaWRlICovDQogI2RlZmluZSBNVDc1MzBfVFJHTUlJX1JDS19DVFJMCQkweDdhMDANCiAjZGVm aW5lICBSWF9SU1QJCQkJQklUKDMxKQ0KQEAgLTMyNywxMCArNTE4LDI1IEBAIGVudW0gbXQ3NTMw X3ZsYW5fcG9ydF9hdHRyIHsNCiAjZGVmaW5lIE1UNzUzMF9QNVJHTUlJVFhDUgkJMHg3YjA0DQog I2RlZmluZSAgQ1NSX1JHTUlJX1RYQ19DRkcoeCkJCSgoeCkgJiAweDFmKQ0KIA0KKy8qIFJlZ2lz dGVycyBmb3IgR1BJTyBtb2RlICovDQorI2RlZmluZSBNVDc1MzFfR1BJT19NT0RFMAkJMHg3YzBj DQorI2RlZmluZSAgTVQ3NTMxX0dQSU8wX01BU0sJCUdFTk1BU0soMywgMCkNCisjZGVmaW5lICBN VDc1MzFfR1BJTzBfSU5URVJSVVBUCQkxDQorDQorI2RlZmluZSBNVDc1MzFfR1BJT19NT0RFMQkJ MHg3YzEwDQorI2RlZmluZSAgTVQ3NTMxX0dQSU8xMV9SR19SWEQyX01BU0sJR0VOTUFTSygxNSwg MTIpDQorI2RlZmluZSAgTVQ3NTMxX0VYVF9QX01EQ18xMQkJKDIgPDwgMTIpDQorI2RlZmluZSAg TVQ3NTMxX0dQSU8xMl9SR19SWEQzX01BU0sJR0VOTUFTSygxOSwgMTYpDQorI2RlZmluZSAgTVQ3 NTMxX0VYVF9QX01ESU9fMTIJCSgyIDw8IDE2KQ0KKw0KICNkZWZpbmUgTVQ3NTMwX0NSRVYJCQkw eDdmZmMNCiAjZGVmaW5lICBDSElQX05BTUVfU0hJRlQJCTE2DQogI2RlZmluZSAgTVQ3NTMwX0lE CQkJMHg3NTMwDQogDQorI2RlZmluZSBNVDc1MzFfQ1JFVgkJCTB4NzgxQw0KKyNkZWZpbmUgIENI SVBfUkVWX00JCQkweDBmDQorI2RlZmluZSAgTVQ3NTMxX0lECQkJMHg3NTMxDQorDQogLyogUmVn aXN0ZXJzIGZvciBjb3JlIFBMTCBhY2Nlc3MgdGhyb3VnaCBtbWQgaW5kaXJlY3QgKi8NCiAjZGVm aW5lIENPUkVfUExMX0dST1VQMgkJCTB4NDAxDQogI2RlZmluZSAgUkdfU1lTUExMX0VOX05PUk1B TAkJQklUKDE1KQ0KQEAgLTM0Nyw2ICs1NTMsMTAgQEAgZW51bSBtdDc1MzBfdmxhbl9wb3J0X2F0 dHIgew0KICNkZWZpbmUgIFJHX1NZU1BMTF9ERFNGQktfRU4JCUJJVCgxMikNCiAjZGVmaW5lICBS R19TWVNQTExfQklBU19FTgkJQklUKDExKQ0KICNkZWZpbmUgIFJHX1NZU1BMTF9CSUFTX0xQRl9F TgkJQklUKDEwKQ0KKyNkZWZpbmUgIE1UNzUzMV9QSFlfUExMX09GRgkJQklUKDUpDQorI2RlZmlu ZSAgTVQ3NTMxX1BIWV9QTExfQllQQVNTX01PREUJQklUKDQpDQorDQorI2RlZmluZSBNVDc1M1hf Q1RSTF9QSFlfQUREUgkJMA0KIA0KICNkZWZpbmUgQ09SRV9QTExfR1JPVVA1CQkJMHg0MDQNCiAj ZGVmaW5lICBSR19MQ0REU19QQ1dfTkNQTzEoeCkJCSgoeCkgJiAweGZmZmYpDQpAQCAtNDI1LDYg KzYzNSw3IEBAIGVudW0gcDVfaW50ZXJmYWNlX3NlbGVjdCB7DQogCVA1X0lOVEZfU0VMX1BIWV9Q MCwNCiAJUDVfSU5URl9TRUxfUEhZX1A0LA0KIAlQNV9JTlRGX1NFTF9HTUFDNSwNCisJUDVfSU5U Rl9TRUxfR01BQzVfU0dNSUksDQogfTsNCiANCiBzdGF0aWMgY29uc3QgY2hhciAqcDVfaW50Zl9t b2Rlcyh1bnNpZ25lZCBpbnQgcDVfaW50ZXJmYWNlKQ0KQEAgLTQzOCw2ICs2NDksOCBAQCBzdGF0 aWMgY29uc3QgY2hhciAqcDVfaW50Zl9tb2Rlcyh1bnNpZ25lZCBpbnQgcDVfaW50ZXJmYWNlKQ0K IAkJcmV0dXJuICJQSFkgUDQiOw0KIAljYXNlIFA1X0lOVEZfU0VMX0dNQUM1Og0KIAkJcmV0dXJu ICJHTUFDNSI7DQorCWNhc2UgUDVfSU5URl9TRUxfR01BQzVfU0dNSUk6DQorCQlyZXR1cm4gIkdN QUM1X1NHTUlJIjsNCiAJZGVmYXVsdDoNCiAJCXJldHVybiAidW5rbm93biI7DQogCX0NCkBAIC00 NTgsNiArNjcxLDEwIEBAIHN0YXRpYyBjb25zdCBjaGFyICpwNV9pbnRmX21vZGVzKHVuc2lnbmVk IGludCBwNV9pbnRlcmZhY2UpDQogICoJCQlNQUMgcG9ydA0KICAqIEBtYWNfcG9ydF9jb25maWc6 CUhvbGRpbmcgdGhlIHdheSBzZXR0aW5nIHVwIHRoZSBQSFkgYXR0cmlidXRlIHRvIGENCiAgKgkJ CWNlcnRhaW4gTUFDIHBvcnQNCisgKiBAbWFjX3Bjc19hbl9yZXN0YXJ0CUhvbGRpbmcgdGhlIHdh eSByZXN0YXJ0aW5nIFBDUyBhdXRvbmVnb3RpYXRpb24gZm9yIGENCisgKgkJCWNlcnRhaW4gTUFD IHBvcnQNCisgKiBAbWFjX3Bjc19saW5rX3VwOglIb2xkaW5nIHRoZSB3YXkgc2V0dGluZyB1cCB0 aGUgUEhZIGF0dHJpYnV0ZSB0byB0aGUgcGNzDQorICoJCQlvZiB0aGUgY2VydGFpbiBNQUMgcG9y dA0KICAqLw0KIHN0cnVjdCBtdDc1M3hfaW5mbyB7DQogCWVudW0gbXQ3NTN4X2lkIGlkOw0KQEAg LTQ2Niw2ICs2ODMsNyBAQCBzdHJ1Y3QgbXQ3NTN4X2luZm8gew0KIAlpbnQgKCpwaHlfcmVhZCko c3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgaW50IHJlZ251bSk7DQogCWludCAoKnBo eV93cml0ZSkoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgaW50IHJlZ251bSwgdTE2 IHZhbCk7DQogCWludCAoKnBhZF9zZXR1cCkoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBwaHlfaW50 ZXJmYWNlX3QgaW50ZXJmYWNlKTsNCisJaW50ICgqY3B1X3BvcnRfY29uZmlnKShzdHJ1Y3QgZHNh X3N3aXRjaCAqZHMsIGludCBwb3J0KTsNCiAJYm9vbCAoKnBoeV9tb2RlX3N1cHBvcnRlZCkoc3Ry dWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwNCiAJCQkJICAgY29uc3Qgc3RydWN0IHBoeWxp bmtfbGlua19zdGF0ZSAqc3RhdGUpOw0KIAl2b2lkICgqbWFjX3BvcnRfdmFsaWRhdGUpKHN0cnVj dCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsDQpAQCAtNDc1LDYgKzY5MywxMCBAQCBzdHJ1Y3Qg bXQ3NTN4X2luZm8gew0KIAlpbnQgKCptYWNfcG9ydF9jb25maWcpKHN0cnVjdCBkc2Ffc3dpdGNo ICpkcywgaW50IHBvcnQsDQogCQkJICAgICAgIHVuc2lnbmVkIGludCBtb2RlLA0KIAkJCSAgICAg ICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKTsNCisJdm9pZCAoKm1hY19wY3NfYW5fcmVzdGFy dCkoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCk7DQorCXZvaWQgKCptYWNfcGNzX2xp bmtfdXApKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsDQorCQkJCXVuc2lnbmVkIGlu dCBtb2RlLCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlLA0KKwkJCQlpbnQgc3BlZWQsIGludCBk dXBsZXgpOw0KIH07DQogDQogLyogc3RydWN0IG10NzUzMF9wcml2IC0JVGhpcyBpcyB0aGUgbWFp biBkYXRhIHN0cnVjdHVyZSBmb3IgaG9sZGluZyB0aGUgc3RhdGUNCi0tIA0KMi4xNy4xDQo=