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=-16.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT 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 6E5E9C433DB for ; Thu, 14 Jan 2021 15:21:13 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (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 0B9C723B06 for ; Thu, 14 Jan 2021 15:21:13 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0B9C723B06 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=pengutronix.de Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=jCtEvj77W3pj9qMhZqjt6z9vZs2i7+L7C7/P00dBttc=; b=fm5p18ui5Fb6D7O4irgx480qb XAabpWsPPYpgQBVHcQv/+s8JwXXF1GH7YhQTrHN/QBOPe0DKoGQk4Ct0yAOjQtcgkuOasukXi8RuT SkmvjpVsUOAluexpvkLbJNdZgUi/xPFdpJeduB+5JVYjFbiTOOHn3fLjsS1Gf9q7BIbkb8T0ul4es 0EJkSe+Lgf8lXEeveiwv0/aUqLcyTcbIpqA1cmZyI2Tz7nX/F5EbgQgXbILn9j9AaNzjkzwIwCc+i yeWQakrru21jYkTbIhbribsTD1Zq5y9dXu+zlKQuW5C7m22YkfnnKyVmwUXmmqm7V3c8/1b5fxCmU r906r/sDg==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1l04Ou-0000JU-1H; Thu, 14 Jan 2021 15:19:04 +0000 Received: from metis.ext.pengutronix.de ([2001:67c:670:201:290:27ff:fe1d:cc33]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1l04MW-0003Dh-Tt for linux-arm-kernel@lists.infradead.org; Thu, 14 Jan 2021 15:16:52 +0000 Received: from ptx.hi.pengutronix.de ([2001:67c:670:100:1d::c0]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1l04MS-00021r-Fg; Thu, 14 Jan 2021 16:16:32 +0100 Received: from ukl by ptx.hi.pengutronix.de with local (Exim 4.92) (envelope-from ) id 1l04MS-00012l-2s; Thu, 14 Jan 2021 16:16:32 +0100 From: =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= To: Arnd Bergmann , Olof Johansson Subject: [PATCH v1 1/7] ARM: drop efm32 platform Date: Thu, 14 Jan 2021 16:16:24 +0100 Message-Id: <20210114151630.128830-2-u.kleine-koenig@pengutronix.de> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210114151630.128830-1-u.kleine-koenig@pengutronix.de> References: <20210114151630.128830-1-u.kleine-koenig@pengutronix.de> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 2001:67c:670:100:1d::c0 X-SA-Exim-Mail-From: ukl@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-arm-kernel@lists.infradead.org X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210114_101637_605583_6844FA14 X-CRM114-Status: GOOD ( 20.40 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , List-Id: Cc: soc@kernel.org, kernel@pengutronix.de, linux-arm-kernel@lists.infradead.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SSBkaWRuJ3QgdG91Y2ggdGhpcyBjb2RlIHNpbmNlIGl0IHNlcnZlZCBhcyBhIHBsYXRmb3JtIHRv IGludHJvZHVjZQpBUk12Ny1NIHN1cHBvcnQgdG8gTGludXguIFRoZSBvbmx5IGtub3duIG1hY2hp bmUgdGhhdCBydW5zIExpbnV4IGhhcyBvbmx5CjQgTWlCIG9mIFJBTSAodGhhdCBvcmlnaW5hbGx5 IG9ubHkgZXhpc3RzIHRvIGhvbGQgdGhlIGRpc3BsYXkncyBmcmFtZWJ1ZmZlcikuCgpUaGVyZSBh cmUgbm8ga25vd24gdXNlcnMgYW5kIG5vIGZ1cnRoZXIgdXNlIGZvcmVzZWVhYmxlLCBzbyBkcm9w IHRoZQpjb2RlLgoKU2lnbmVkLW9mZi1ieTogVXdlIEtsZWluZS1Lw7ZuaWcgPHUua2xlaW5lLWtv ZW5pZ0BwZW5ndXRyb25peC5kZT4KLS0tCiBhcmNoL2FybS9LY29uZmlnICAgICAgICAgICAgICAg ICAgICAgICAgIHwgIDEwICstCiBhcmNoL2FybS9LY29uZmlnLmRlYnVnICAgICAgICAgICAgICAg ICAgIHwgIDE3IC0KIGFyY2gvYXJtL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgICAgfCAg IDEgLQogYXJjaC9hcm0vYm9vdC9kdHMvTWFrZWZpbGUgICAgICAgICAgICAgICB8ICAgMiAtCiBh cmNoL2FybS9ib290L2R0cy9lZm0zMmdnLWRrMzc1MC5kdHMgICAgIHwgIDg4IC0tLQogYXJjaC9h cm0vYm9vdC9kdHMvZWZtMzJnZy5kdHNpICAgICAgICAgICB8IDE3NyAtLS0tLQogYXJjaC9hcm0v Y29uZmlncy9lZm0zMl9kZWZjb25maWcgICAgICAgICB8ICA5OCAtLS0KIGFyY2gvYXJtL2luY2x1 ZGUvZGVidWcvZWZtMzIuUyAgICAgICAgICAgfCAgNDUgLS0KIGFyY2gvYXJtL21hY2gtZWZtMzIv TWFrZWZpbGUgICAgICAgICAgICAgfCAgIDIgLQogYXJjaC9hcm0vbWFjaC1lZm0zMi9NYWtlZmls ZS5ib290ICAgICAgICB8ICAgNCAtCiBhcmNoL2FybS9tYWNoLWVmbTMyL2R0bWFjaGluZS5jICAg ICAgICAgIHwgIDE2IC0KIGFyY2gvYXJtL21tL0tjb25maWcgICAgICAgICAgICAgICAgICAgICAg fCAgIDEgLQogZHJpdmVycy90dHkvc2VyaWFsL2VmbTMyLXVhcnQuYyAgICAgICAgICB8IDg1MiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogaW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL2VmbTMy LXVhcnQuaCB8ICAxOSAtCiAxNCBmaWxlcyBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMTMzMSBk ZWxldGlvbnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybS9ib290L2R0cy9lZm0zMmdn LWRrMzc1MC5kdHMKIGRlbGV0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybS9ib290L2R0cy9lZm0zMmdn LmR0c2kKIGRlbGV0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybS9jb25maWdzL2VmbTMyX2RlZmNvbmZp ZwogZGVsZXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtL2luY2x1ZGUvZGVidWcvZWZtMzIuUwogZGVs ZXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtL21hY2gtZWZtMzIvTWFrZWZpbGUKIGRlbGV0ZSBtb2Rl IDEwMDY0NCBhcmNoL2FybS9tYWNoLWVmbTMyL01ha2VmaWxlLmJvb3QKIGRlbGV0ZSBtb2RlIDEw MDY0NCBhcmNoL2FybS9tYWNoLWVmbTMyL2R0bWFjaGluZS5jCiBkZWxldGUgbW9kZSAxMDA2NDQg ZHJpdmVycy90dHkvc2VyaWFsL2VmbTMyLXVhcnQuYwogZGVsZXRlIG1vZGUgMTAwNjQ0IGluY2x1 ZGUvbGludXgvcGxhdGZvcm1fZGF0YS9lZm0zMi11YXJ0LmgKCmRpZmYgLS1naXQgYS9hcmNoL2Fy bS9LY29uZmlnIGIvYXJjaC9hcm0vS2NvbmZpZwppbmRleCAxMzgyNDg5OTlkZjcuLmQzMWYzZDc0 Y2U5YiAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vS2NvbmZpZworKysgYi9hcmNoL2FybS9LY29uZmln CkBAIC03MjcsMTQgKzcyNyw2IEBAIHNvdXJjZSAiYXJjaC9hcm0vbWFjaC16eC9LY29uZmlnIgog c291cmNlICJhcmNoL2FybS9tYWNoLXp5bnEvS2NvbmZpZyIKIAogIyBBUk12Ny1NIGFyY2hpdGVj dHVyZQotY29uZmlnIEFSQ0hfRUZNMzIKLQlib29sICJFbmVyZ3kgTWljcm8gZWZtMzIiCi0JZGVw ZW5kcyBvbiBBUk1fU0lOR0xFX0FSTVY3TQotCXNlbGVjdCBHUElPTElCCi0JaGVscAotCSAgU3Vw cG9ydCBmb3IgRW5lcmd5IE1pY3JvJ3MgKG5vdyBTaWxpY29uIExhYnMpIGVmbTMyIEdpYW50IEdl Y2tvCi0JICBwcm9jZXNzb3JzLgotCiBjb25maWcgQVJDSF9MUEMxOFhYCiAJYm9vbCAiTlhQIExQ QzE4eHgvTFBDNDN4eCIKIAlkZXBlbmRzIG9uIEFSTV9TSU5HTEVfQVJNVjdNCkBAIC0xNTUyLDcg KzE1NDQsNyBAQCBjb25maWcgQVJNX01PRFVMRV9QTFRTCiBjb25maWcgRk9SQ0VfTUFYX1pPTkVP UkRFUgogCWludCAiTWF4aW11bSB6b25lIG9yZGVyIgogCWRlZmF1bHQgIjEyIiBpZiBTT0NfQU0z M1hYCi0JZGVmYXVsdCAiOSIgaWYgU0ExMTExIHx8IEFSQ0hfRUZNMzIKKwlkZWZhdWx0ICI5IiBp ZiBTQTExMTEKIAlkZWZhdWx0ICIxMSIKIAloZWxwCiAJICBUaGUga2VybmVsIG1lbW9yeSBhbGxv Y2F0b3IgZGl2aWRlcyBwaHlzaWNhbGx5IGNvbnRpZ3VvdXMgbWVtb3J5CmRpZmYgLS1naXQgYS9h cmNoL2FybS9LY29uZmlnLmRlYnVnIGIvYXJjaC9hcm0vS2NvbmZpZy5kZWJ1ZwppbmRleCA0ZmYw NDIwMWE4Y2MuLjQ2NDU4ZjlmOTlmYyAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vS2NvbmZpZy5kZWJ1 ZworKysgYi9hcmNoL2FybS9LY29uZmlnLmRlYnVnCkBAIC0xNDU2LDIwICsxNDU2LDYgQEAgY2hv aWNlCiAJCSAgb3B0aW9uczsgdGhlIHBsYXRmb3JtIHNwZWNpZmljIG9wdGlvbnMgYXJlIGRlcHJl Y2F0ZWQKIAkJICBhbmQgd2lsbCBiZSBzb29uIHJlbW92ZWQuCiAKLQljb25maWcgREVCVUdfTExf VUFSVF9FRk0zMgotCQlib29sICJLZXJuZWwgbG93LWxldmVsIGRlYnVnZ2luZyB2aWEgZWZtMzIg VUFSVCIKLQkJZGVwZW5kcyBvbiBBUkNIX0VGTTMyCi0JCWhlbHAKLQkJICBTYXkgWSBoZXJlIGlm IHlvdSB3YW50IHRoZSBkZWJ1ZyBwcmludCByb3V0aW5lcyB0byBkaXJlY3QKLQkJICB0aGVpciBv dXRwdXQgdG8gYW4gVUFSVCBvciBVU0FSVCBwb3J0IG9uIGVmbTMyIGJhc2VkCi0JCSAgbWFjaGlu ZXMuIFVzZSB0aGUgZm9sbG93aW5nIGFkZHJlc3NlcyBmb3IgREVCVUdfVUFSVF9QSFlTOgotCi0J CSAgICAweDQwMDBjMDAwIHwgVVNBUlQwCi0JCSAgICAweDQwMDBjNDAwIHwgVVNBUlQxCi0JCSAg ICAweDQwMDBjODAwIHwgVVNBUlQyCi0JCSAgICAweDQwMDBlMDAwIHwgVUFSVDAKLQkJICAgIDB4 NDAwMGU0MDAgfCBVQVJUMQotCiAJY29uZmlnIERFQlVHX0xMX1VBUlRfUEwwMVgKIAkJYm9vbCAi S2VybmVsIGxvdy1sZXZlbCBkZWJ1Z2dpbmcgdmlhIEFSTSBMdGQgUEwwMXggUHJpbWVjZWxsIFVB UlQiCiAJCWhlbHAKQEAgLTE1ODcsNyArMTU3Myw2IEBAIGNvbmZpZyBERUJVR19MTF9JTkNMVURF CiAJZGVmYXVsdCAiZGVidWcvbWVzb24uUyIgaWYgREVCVUdfTUVTT05fVUFSVEFPCiAJZGVmYXVs dCAiZGVidWcvcGwwMXguUyIgaWYgREVCVUdfTExfVUFSVF9QTDAxWCB8fCBERUJVR19VQVJUX1BM MDFYCiAJZGVmYXVsdCAiZGVidWcvZXh5bm9zLlMiIGlmIERFQlVHX0VYWU5PU19VQVJUCi0JZGVm YXVsdCAiZGVidWcvZWZtMzIuUyIgaWYgREVCVUdfTExfVUFSVF9FRk0zMgogCWRlZmF1bHQgImRl YnVnL2ljZWRjYy5TIiBpZiBERUJVR19JQ0VEQ0MKIAlkZWZhdWx0ICJkZWJ1Zy9pbXguUyIgaWYg REVCVUdfSU1YMV9VQVJUIHx8IFwKIAkJCQkgREVCVUdfSU1YMjVfVUFSVCB8fCBcCkBAIC0xNjgy LDcgKzE2NjcsNiBAQCBjb25maWcgREVCVUdfVUFSVF9QSFlTCiAJZGVmYXVsdCAweDIwMjAxMDAw IGlmIERFQlVHX0JDTTI4MzUKIAlkZWZhdWx0IDB4M2UwMDAwMDAgaWYgREVCVUdfQkNNX0tPTkFf VUFSVAogCWRlZmF1bHQgMHgzZjIwMTAwMCBpZiBERUJVR19CQ00yODM2Ci0JZGVmYXVsdCAweDQw MDBlNDAwIGlmIERFQlVHX0xMX1VBUlRfRUZNMzIKIAlkZWZhdWx0IDB4NDAwMTAwMDAgaWYgU1RN MzJNUDFfREVCVUdfVUFSVAogCWRlZmF1bHQgMHg0MDAxMTAwMCBpZiBTVE0zMkY0X0RFQlVHX1VB UlQgfHwgU1RNMzJGN19ERUJVR19VQVJUIHx8IFwKIAkJCQlTVE0zMkg3X0RFQlVHX1VBUlQKQEAg LTE3NjgsNyArMTc1Miw2IEBAIGNvbmZpZyBERUJVR19VQVJUX1BIWVMKIAlkZWZhdWx0IDB4ZmZm ZmYyMDAgaWYgREVCVUdfQVQ5MV9STTkyMDBfREJHVQogCWRlcGVuZHMgb24gQVJDSF9FUDkzWFgg fHwgXAogCSAgICAgICAgREVCVUdfTExfVUFSVF84MjUwIHx8IERFQlVHX0xMX1VBUlRfUEwwMVgg fHwgXAotCQlERUJVR19MTF9VQVJUX0VGTTMyIHx8IFwKIAkJREVCVUdfVUFSVF84MjUwIHx8IERF QlVHX1VBUlRfUEwwMVggfHwgREVCVUdfTUVTT05fVUFSVEFPIHx8IFwKIAkJREVCVUdfUUNPTV9V QVJURE0gfHwgREVCVUdfUjdTNzIxMDBfU0NJRjIgfHwgXAogCQlERUJVR19SN1M5MjEwX1NDSUYy IHx8IERFQlVHX1I3UzkyMTBfU0NJRjQgfHwgXApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vTWFrZWZp bGUgYi9hcmNoL2FybS9NYWtlZmlsZQppbmRleCA0YWFlYzk1OTllOGEuLmMxY2Y3NzgwNWU5YSAx MDA2NDQKLS0tIGEvYXJjaC9hcm0vTWFrZWZpbGUKKysrIGIvYXJjaC9hcm0vTWFrZWZpbGUKQEAg LTE2OCw3ICsxNjgsNiBAQCBtYWNoaW5lLSQoQ09ORklHX0FSQ0hfQ05TM1hYWCkJCSs9IGNuczN4 eHgKIG1hY2hpbmUtJChDT05GSUdfQVJDSF9EQVZJTkNJKQkJKz0gZGF2aW5jaQogbWFjaGluZS0k KENPTkZJR19BUkNIX0RJR0lDT0xPUikJKz0gZGlnaWNvbG9yCiBtYWNoaW5lLSQoQ09ORklHX0FS Q0hfRE9WRSkJCSs9IGRvdmUKLW1hY2hpbmUtJChDT05GSUdfQVJDSF9FRk0zMikJCSs9IGVmbTMy CiBtYWNoaW5lLSQoQ09ORklHX0FSQ0hfRVA5M1hYKQkJKz0gZXA5M3h4CiBtYWNoaW5lLSQoQ09O RklHX0FSQ0hfRVhZTk9TKQkJKz0gZXh5bm9zCiBtYWNoaW5lLSQoQ09ORklHX0FSQ0hfRk9PVEJS SURHRSkJKz0gZm9vdGJyaWRnZQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vYm9vdC9kdHMvTWFrZWZp bGUgYi9hcmNoL2FybS9ib290L2R0cy9NYWtlZmlsZQppbmRleCAzZDFlYTBiMjUxNjguLjMyNWUx NjdkMzQwNCAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vYm9vdC9kdHMvTWFrZWZpbGUKKysrIGIvYXJj aC9hcm0vYm9vdC9kdHMvTWFrZWZpbGUKQEAgLTE3Nyw4ICsxNzcsNiBAQCBkdGItJChDT05GSUdf QVJDSF9EQVZJTkNJKSArPSBcCiAJZGE4NTAtbGVnby1ldjMuZHRiCiBkdGItJChDT05GSUdfQVJD SF9ESUdJQ09MT1IpICs9IFwKIAljeDkyNzU1X2VxdWlub3guZHRiCi1kdGItJChDT05GSUdfQVJD SF9FRk0zMikgKz0gXAotCWVmbTMyZ2ctZGszNzUwLmR0YgogZHRiLSQoQ09ORklHX0FSQ0hfRVhZ Tk9TMykgKz0gXAogCWV4eW5vczMyNTAtYXJ0aWs1LWV2YWwuZHRiIFwKIAlleHlub3MzMjUwLW1v bmsuZHRiIFwKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2Jvb3QvZHRzL2VmbTMyZ2ctZGszNzUwLmR0 cyBiL2FyY2gvYXJtL2Jvb3QvZHRzL2VmbTMyZ2ctZGszNzUwLmR0cwpkZWxldGVkIGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggYWRmYTU1OWE0ODhiLi4wMDAwMDAwMDAwMDAKLS0tIGEvYXJjaC9hcm0v Ym9vdC9kdHMvZWZtMzJnZy1kazM3NTAuZHRzCisrKyAvZGV2L251bGwKQEAgLTEsODggKzAsMCBA QAotLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKLS8qCi0gKiBEZXZpY2UgdHJl ZSBmb3IgRUZNMzJHRy1ESzM3NTAgZGV2ZWxvcG1lbnQgYm9hcmQuCi0gKgotICogRG9jdW1lbnRh dGlvbiBhdmFpbGFibGUgZnJvbQotICogaHR0cDovL3d3dy5zaWxhYnMuY29tL1N1cHBvcnQlMjBE b2N1bWVudHMvVGVjaG5pY2FsRG9jcy9lZm0zMmdnLWRrMzc1MC11Zy5wZGYKLSAqLwotCi0vZHRz LXYxLzsKLSNpbmNsdWRlICJlZm0zMmdnLmR0c2kiCi0KLS8gewotCW1vZGVsID0gIkVuZXJneSBN aWNybyBHaWFudCBHZWNrbyBEZXZlbG9wbWVudCBLaXQiOwotCWNvbXBhdGlibGUgPSAiZWZtMzIs ZGszNzUwIjsKLQotCWNob3NlbiB7Ci0JCWJvb3RhcmdzID0gImNvbnNvbGU9dHR5ZWZtNCwxMTUy MDAgaW5pdD0vbGludXhyYyBpZ25vcmVfbG9nbGV2ZWwgaWhhc2hfZW50cmllcz02NCBkaGFzaF9l bnRyaWVzPTY0IGVhcmx5cHJpbnRrIHVjbGludXgucGh5c2FkZHI9MHg4YzQwMDAwMCByb290PS9k ZXYvbXRkYmxvY2swIjsKLQl9OwotCi0JbWVtb3J5QDg4MDAwMDAwIHsKLQkJZGV2aWNlX3R5cGUg PSAibWVtb3J5IjsKLQkJcmVnID0gPDB4ODgwMDAwMDAgMHg0MDAwMDA+OwotCX07Ci0KLQlzb2Mg ewotCQlhZGNANDAwMDIwMDAgewotCQkJc3RhdHVzID0gIm9rIjsKLQkJfTsKLQotCQlpMmNANDAw MGEwMDAgewotCQkJZW5lcmd5bWljcm8sbG9jYXRpb24gPSA8Mz47Ci0JCQlzdGF0dXMgPSAib2si OwotCi0JCQl0ZW1wQDQ4IHsKLQkJCQljb21wYXRpYmxlID0gInN0LHN0ZHM3NSI7Ci0JCQkJcmVn ID0gPDB4NDg+OwotCQkJfTsKLQotCQkJZWVwcm9tQDUwIHsKLQkJCQljb21wYXRpYmxlID0gIm1p Y3JvY2hpcCwyNGMwMiIsICJhdG1lbCwyNGMwMiI7Ci0JCQkJcmVnID0gPDB4NTA+OwotCQkJCXBh Z2VzaXplID0gPDE2PjsKLQkJCX07Ci0JCX07Ci0KLQkJc3BpMDogc3BpQDQwMDBjMDAwIHsgLyog VVNBUlQwICovCi0JCQljcy1ncGlvcyA9IDwmZ3BpbyA2OCAxPjsgLy8gRTQKLQkJCWVuZXJneW1p Y3JvLGxvY2F0aW9uID0gPDE+OwotCQkJc3RhdHVzID0gIm9rIjsKLQotCQkJbWljcm9zZEAwIHsK LQkJCQljb21wYXRpYmxlID0gIm1tYy1zcGktc2xvdCI7Ci0JCQkJc3BpLW1heC1mcmVxdWVuY3kg PSA8MTAwMDAwPjsKLQkJCQl2b2x0YWdlLXJhbmdlcyA9IDwzMjAwIDM0MDA+OwotCQkJCWJyb2tl bi1jZDsKLQkJCQlyZWcgPSA8MD47Ci0JCQl9OwotCQl9OwotCi0JCXNwaTE6IHNwaUA0MDAwYzQw MCB7IC8qIFVTQVJUMSAqLwotCQkJY3MtZ3Bpb3MgPSA8JmdwaW8gNTEgMT47IC8vIEQzCi0JCQll bmVyZ3ltaWNybyxsb2NhdGlvbiA9IDwxPjsKLQkJCXN0YXR1cyA9ICJvayI7Ci0KLQkJCWtzODg1 MUAwIHsKLQkJCQljb21wYXRpYmxlID0gImtzODg1MSI7Ci0JCQkJc3BpLW1heC1mcmVxdWVuY3kg PSA8NjAwMDAwMD47Ci0JCQkJcmVnID0gPDA+OwotCQkJCWludGVycnVwdC1wYXJlbnQgPSA8JmJv YXJkZnBnYT47Ci0JCQkJaW50ZXJydXB0cyA9IDw0PjsKLQkJCX07Ci0JCX07Ci0KLQkJdWFydDQ6 IHVhcnRANDAwMGU0MDAgeyAvKiBVQVJUMSAqLwotCQkJZW5lcmd5bWljcm8sbG9jYXRpb24gPSA8 Mj47Ci0JCQlzdGF0dXMgPSAib2siOwotCQl9OwotCi0JCWJvYXJkZnBnYTogYm9hcmRmcGdhQDgw MDAwMDAwIHsKLQkJCWNvbXBhdGlibGUgPSAiZWZtMzJib2FyZCI7Ci0JCQlyZWcgPSA8MHg4MDAw MDAwMCAweDQwMD47Ci0JCQlpcnEtZ3Bpb3MgPSA8JmdwaW8gNjQgMT47Ci0JCQlpbnRlcnJ1cHQt Y29udHJvbGxlcjsKLQkJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8MT47Ci0JCQlzdGF0dXMgPSAib2si OwotCQl9OwotCX07Ci19OwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vYm9vdC9kdHMvZWZtMzJnZy5k dHNpIGIvYXJjaC9hcm0vYm9vdC9kdHMvZWZtMzJnZy5kdHNpCmRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NAppbmRleCA4YTU4ZTQ5MTQ0Y2MuLjAwMDAwMDAwMDAwMAotLS0gYS9hcmNoL2FybS9ib290 L2R0cy9lZm0zMmdnLmR0c2kKKysrIC9kZXYvbnVsbApAQCAtMSwxNzcgKzAsMCBAQAotLy8gU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKLS8qCi0gKiBEZXZpY2UgdHJlZSBmb3IgRW5l cmd5IE1pY3JvIEVGTTMyIEdpYW50IEdlY2tvIFNvQy4KLSAqCi0gKiBEb2N1bWVudGF0aW9uIGF2 YWlsYWJsZSBmcm9tCi0gKiBodHRwOi8vd3d3LnNpbGFicy5jb20vU3VwcG9ydCUyMERvY3VtZW50 cy9UZWNobmljYWxEb2NzL0VGTTMyR0ctUk0ucGRmCi0gKi8KLQotI2luY2x1ZGUgImFybXY3LW0u ZHRzaSIKLSNpbmNsdWRlICJkdC1iaW5kaW5ncy9jbG9jay9lZm0zMi1jbXUuaCIKLQotLyB7Ci0J I2FkZHJlc3MtY2VsbHMgPSA8MT47Ci0JI3NpemUtY2VsbHMgPSA8MT47Ci0KLQlhbGlhc2VzIHsK LQkJaTJjMCA9ICZpMmMwOwotCQlpMmMxID0gJmkyYzE7Ci0JCXNlcmlhbDAgPSAmdWFydDA7Ci0J CXNlcmlhbDEgPSAmdWFydDE7Ci0JCXNlcmlhbDIgPSAmdWFydDI7Ci0JCXNlcmlhbDMgPSAmdWFy dDM7Ci0JCXNlcmlhbDQgPSAmdWFydDQ7Ci0JCXNwaTAgPSAmc3BpMDsKLQkJc3BpMSA9ICZzcGkx OwotCQlzcGkyID0gJnNwaTI7Ci0JfTsKLQotCXNvYyB7Ci0JCWFkYzogYWRjQDQwMDAyMDAwIHsK LQkJCWNvbXBhdGlibGUgPSAiZW5lcmd5bWljcm8sZWZtMzItYWRjIjsKLQkJCXJlZyA9IDwweDQw MDAyMDAwIDB4NDAwPjsKLQkJCWludGVycnVwdHMgPSA8Nz47Ci0JCQljbG9ja3MgPSA8JmNtdSBj bGtfSEZQRVJDTEtBREMwPjsKLQkJCXN0YXR1cyA9ICJkaXNhYmxlZCI7Ci0JCX07Ci0KLQkJZ3Bp bzogZ3Bpb0A0MDAwNjAwMCB7Ci0JCQljb21wYXRpYmxlID0gImVuZXJneW1pY3JvLGVmbTMyLWdw aW8iOwotCQkJcmVnID0gPDB4NDAwMDYwMDAgMHgxMDAwPjsKLQkJCWludGVycnVwdHMgPSA8MSAx MT47Ci0JCQlncGlvLWNvbnRyb2xsZXI7Ci0JCQkjZ3Bpby1jZWxscyA9IDwyPjsKLQkJCWludGVy cnVwdC1jb250cm9sbGVyOwotCQkJI2ludGVycnVwdC1jZWxscyA9IDwxPjsKLQkJCWNsb2NrcyA9 IDwmY211IGNsa19IRlBFUkNMS0dQSU8+OwotCQkJc3RhdHVzID0gIm9rIjsKLQkJfTsKLQotCQlp MmMwOiBpMmNANDAwMGEwMDAgewotCQkJI2FkZHJlc3MtY2VsbHMgPSA8MT47Ci0JCQkjc2l6ZS1j ZWxscyA9IDwwPjsKLQkJCWNvbXBhdGlibGUgPSAiZW5lcmd5bWljcm8sZWZtMzItaTJjIjsKLQkJ CXJlZyA9IDwweDQwMDBhMDAwIDB4NDAwPjsKLQkJCWludGVycnVwdHMgPSA8OT47Ci0JCQljbG9j a3MgPSA8JmNtdSBjbGtfSEZQRVJDTEtJMkMwPjsKLQkJCWNsb2NrLWZyZXF1ZW5jeSA9IDwxMDAw MDA+OwotCQkJc3RhdHVzID0gImRpc2FibGVkIjsKLQkJfTsKLQotCQlpMmMxOiBpMmNANDAwMGE0 MDAgewotCQkJI2FkZHJlc3MtY2VsbHMgPSA8MT47Ci0JCQkjc2l6ZS1jZWxscyA9IDwwPjsKLQkJ CWNvbXBhdGlibGUgPSAiZW5lcmd5bWljcm8sZWZtMzItaTJjIjsKLQkJCXJlZyA9IDwweDQwMDBh NDAwIDB4NDAwPjsKLQkJCWludGVycnVwdHMgPSA8MTA+OwotCQkJY2xvY2tzID0gPCZjbXUgY2xr X0hGUEVSQ0xLSTJDMT47Ci0JCQljbG9jay1mcmVxdWVuY3kgPSA8MTAwMDAwPjsKLQkJCXN0YXR1 cyA9ICJkaXNhYmxlZCI7Ci0JCX07Ci0KLQkJc3BpMDogc3BpQDQwMDBjMDAwIHsgLyogVVNBUlQw ICovCi0JCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKLQkJCSNzaXplLWNlbGxzID0gPDA+OwotCQkJ Y29tcGF0aWJsZSA9ICJlbmVyZ3ltaWNybyxlZm0zMi1zcGkiOwotCQkJcmVnID0gPDB4NDAwMGMw MDAgMHg0MDA+OwotCQkJaW50ZXJydXB0cyA9IDwzIDQ+OwotCQkJY2xvY2tzID0gPCZjbXUgY2xr X0hGUEVSQ0xLVVNBUlQwPjsKLQkJCXN0YXR1cyA9ICJkaXNhYmxlZCI7Ci0JCX07Ci0KLQkJc3Bp MTogc3BpQDQwMDBjNDAwIHsgLyogVVNBUlQxICovCi0JCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsK LQkJCSNzaXplLWNlbGxzID0gPDA+OwotCQkJY29tcGF0aWJsZSA9ICJlbmVyZ3ltaWNybyxlZm0z Mi1zcGkiOwotCQkJcmVnID0gPDB4NDAwMGM0MDAgMHg0MDA+OwotCQkJaW50ZXJydXB0cyA9IDwx NSAxNj47Ci0JCQljbG9ja3MgPSA8JmNtdSBjbGtfSEZQRVJDTEtVU0FSVDE+OwotCQkJc3RhdHVz ID0gImRpc2FibGVkIjsKLQkJfTsKLQotCQlzcGkyOiBzcGlANDAwMGM4MDAgeyAvKiBVU0FSVDIg Ki8KLQkJCSNhZGRyZXNzLWNlbGxzID0gPDE+OwotCQkJI3NpemUtY2VsbHMgPSA8MD47Ci0JCQlj b21wYXRpYmxlID0gImVuZXJneW1pY3JvLGVmbTMyLXNwaSI7Ci0JCQlyZWcgPSA8MHg0MDAwYzgw MCAweDQwMD47Ci0JCQlpbnRlcnJ1cHRzID0gPDE4IDE5PjsKLQkJCWNsb2NrcyA9IDwmY211IGNs a19IRlBFUkNMS1VTQVJUMj47Ci0JCQlzdGF0dXMgPSAiZGlzYWJsZWQiOwotCQl9OwotCi0JCXVh cnQwOiB1YXJ0QDQwMDBjMDAwIHsgLyogVVNBUlQwICovCi0JCQljb21wYXRpYmxlID0gImVuZXJn eW1pY3JvLGVmbTMyLXVhcnQiOwotCQkJcmVnID0gPDB4NDAwMGMwMDAgMHg0MDA+OwotCQkJaW50 ZXJydXB0cyA9IDwzIDQ+OwotCQkJY2xvY2tzID0gPCZjbXUgY2xrX0hGUEVSQ0xLVVNBUlQwPjsK LQkJCXN0YXR1cyA9ICJkaXNhYmxlZCI7Ci0JCX07Ci0KLQkJdWFydDE6IHVhcnRANDAwMGM0MDAg eyAvKiBVU0FSVDEgKi8KLQkJCWNvbXBhdGlibGUgPSAiZW5lcmd5bWljcm8sZWZtMzItdWFydCI7 Ci0JCQlyZWcgPSA8MHg0MDAwYzQwMCAweDQwMD47Ci0JCQlpbnRlcnJ1cHRzID0gPDE1IDE2PjsK LQkJCWNsb2NrcyA9IDwmY211IGNsa19IRlBFUkNMS1VTQVJUMT47Ci0JCQlzdGF0dXMgPSAiZGlz YWJsZWQiOwotCQl9OwotCi0JCXVhcnQyOiB1YXJ0QDQwMDBjODAwIHsgLyogVVNBUlQyICovCi0J CQljb21wYXRpYmxlID0gImVuZXJneW1pY3JvLGVmbTMyLXVhcnQiOwotCQkJcmVnID0gPDB4NDAw MGM4MDAgMHg0MDA+OwotCQkJaW50ZXJydXB0cyA9IDwxOCAxOT47Ci0JCQljbG9ja3MgPSA8JmNt dSBjbGtfSEZQRVJDTEtVU0FSVDI+OwotCQkJc3RhdHVzID0gImRpc2FibGVkIjsKLQkJfTsKLQot CQl1YXJ0MzogdWFydEA0MDAwZTAwMCB7IC8qIFVBUlQwICovCi0JCQljb21wYXRpYmxlID0gImVu ZXJneW1pY3JvLGVmbTMyLXVhcnQiOwotCQkJcmVnID0gPDB4NDAwMGUwMDAgMHg0MDA+OwotCQkJ aW50ZXJydXB0cyA9IDwyMCAyMT47Ci0JCQljbG9ja3MgPSA8JmNtdSBjbGtfSEZQRVJDTEtVQVJU MD47Ci0JCQlzdGF0dXMgPSAiZGlzYWJsZWQiOwotCQl9OwotCi0JCXVhcnQ0OiB1YXJ0QDQwMDBl NDAwIHsgLyogVUFSVDEgKi8KLQkJCWNvbXBhdGlibGUgPSAiZW5lcmd5bWljcm8sZWZtMzItdWFy dCI7Ci0JCQlyZWcgPSA8MHg0MDAwZTQwMCAweDQwMD47Ci0JCQlpbnRlcnJ1cHRzID0gPDIyIDIz PjsKLQkJCWNsb2NrcyA9IDwmY211IGNsa19IRlBFUkNMS1VBUlQxPjsKLQkJCXN0YXR1cyA9ICJk aXNhYmxlZCI7Ci0JCX07Ci0KLQkJdGltZXIwOiB0aW1lckA0MDAxMDAwMCB7Ci0JCQljb21wYXRp YmxlID0gImVuZXJneW1pY3JvLGVmbTMyLXRpbWVyIjsKLQkJCXJlZyA9IDwweDQwMDEwMDAwIDB4 NDAwPjsKLQkJCWludGVycnVwdHMgPSA8Mj47Ci0JCQljbG9ja3MgPSA8JmNtdSBjbGtfSEZQRVJD TEtUSU1FUjA+OwotCQl9OwotCi0JCXRpbWVyMTogdGltZXJANDAwMTA0MDAgewotCQkJY29tcGF0 aWJsZSA9ICJlbmVyZ3ltaWNybyxlZm0zMi10aW1lciI7Ci0JCQlyZWcgPSA8MHg0MDAxMDQwMCAw eDQwMD47Ci0JCQlpbnRlcnJ1cHRzID0gPDEyPjsKLQkJCWNsb2NrcyA9IDwmY211IGNsa19IRlBF UkNMS1RJTUVSMT47Ci0JCX07Ci0KLQkJdGltZXIyOiB0aW1lckA0MDAxMDgwMCB7Ci0JCQljb21w YXRpYmxlID0gImVuZXJneW1pY3JvLGVmbTMyLXRpbWVyIjsKLQkJCXJlZyA9IDwweDQwMDEwODAw IDB4NDAwPjsKLQkJCWludGVycnVwdHMgPSA8MTM+OwotCQkJY2xvY2tzID0gPCZjbXUgY2xrX0hG UEVSQ0xLVElNRVIyPjsKLQkJfTsKLQotCQl0aW1lcjM6IHRpbWVyQDQwMDEwYzAwIHsKLQkJCWNv bXBhdGlibGUgPSAiZW5lcmd5bWljcm8sZWZtMzItdGltZXIiOwotCQkJcmVnID0gPDB4NDAwMTBj MDAgMHg0MDA+OwotCQkJaW50ZXJydXB0cyA9IDwxND47Ci0JCQljbG9ja3MgPSA8JmNtdSBjbGtf SEZQRVJDTEtUSU1FUjM+OwotCQl9OwotCi0JCWNtdTogY211QDQwMGM4MDAwIHsKLQkJCWNvbXBh dGlibGUgPSAiZWZtMzJnZyxjbXUiOwotCQkJcmVnID0gPDB4NDAwYzgwMDAgMHg0MDA+OwotCQkJ aW50ZXJydXB0cyA9IDwzMj47Ci0JCQkjY2xvY2stY2VsbHMgPSA8MT47Ci0JCX07Ci0JfTsKLX07 CmRpZmYgLS1naXQgYS9hcmNoL2FybS9jb25maWdzL2VmbTMyX2RlZmNvbmZpZyBiL2FyY2gvYXJt L2NvbmZpZ3MvZWZtMzJfZGVmY29uZmlnCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0 NjIxM2YwNTMwYzQuLjAwMDAwMDAwMDAwMAotLS0gYS9hcmNoL2FybS9jb25maWdzL2VmbTMyX2Rl ZmNvbmZpZworKysgL2Rldi9udWxsCkBAIC0xLDk4ICswLDAgQEAKLUNPTkZJR19ISUdIX1JFU19U SU1FUlM9eQotQ09ORklHX0xPR19CVUZfU0hJRlQ9MTIKLUNPTkZJR19DQ19PUFRJTUlaRV9GT1Jf U0laRT15Ci0jIENPTkZJR19VSUQxNiBpcyBub3Qgc2V0Ci0jIENPTkZJR19CQVNFX0ZVTEwgaXMg bm90IHNldAotIyBDT05GSUdfRlVURVggaXMgbm90IHNldAotIyBDT05GSUdfRVBPTEwgaXMgbm90 IHNldAotIyBDT05GSUdfU0lHTkFMRkQgaXMgbm90IHNldAotIyBDT05GSUdfRVZFTlRGRCBpcyBu b3Qgc2V0Ci0jIENPTkZJR19BSU8gaXMgbm90IHNldAotQ09ORklHX0VNQkVEREVEPXkKLSMgQ09O RklHX1ZNX0VWRU5UX0NPVU5URVJTIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NMVUJfREVCVUcgaXMg bm90IHNldAotIyBDT05GSUdfQkxLX0RFVl9CU0cgaXMgbm90IHNldAotIyBDT05GSUdfTU1VIGlz IG5vdCBzZXQKLUNPTkZJR19BUk1fU0lOR0xFX0FSTVY3TT15Ci1DT05GSUdfQVJDSF9FRk0zMj15 Ci1DT05GSUdfU0VUX01FTV9QQVJBTT15Ci1DT05GSUdfRFJBTV9CQVNFPTB4ODgwMDAwMDAKLUNP TkZJR19EUkFNX1NJWkU9MHgwMDQwMDAwMAotQ09ORklHX0ZMQVNIX01FTV9CQVNFPTB4OGMwMDAw MDAKLUNPTkZJR19GTEFTSF9TSVpFPTB4MDEwMDAwMDAKLUNPTkZJR19QUkVFTVBUPXkKLUNPTkZJ R19aQk9PVF9ST01fVEVYVD0weDAKLUNPTkZJR19aQk9PVF9ST01fQlNTPTB4MAotQ09ORklHX1hJ UF9LRVJORUw9eQotQ09ORklHX1hJUF9QSFlTX0FERFI9MHg4YzAwMDAwMAotQ09ORklHX0JJTkZN VF9GTEFUPXkKLUNPTkZJR19CSU5GTVRfU0hBUkVEX0ZMQVQ9eQotIyBDT05GSUdfQ09SRURVTVAg aXMgbm90IHNldAotQ09ORklHX05FVD15Ci1DT05GSUdfUEFDS0VUPXkKLUNPTkZJR19VTklYPXkK LUNPTkZJR19JTkVUPXkKLSMgQ09ORklHX0lORVRfWEZSTV9NT0RFX1RSQU5TUE9SVCBpcyBub3Qg c2V0Ci0jIENPTkZJR19JTkVUX1hGUk1fTU9ERV9UVU5ORUwgaXMgbm90IHNldAotIyBDT05GSUdf SU5FVF9YRlJNX01PREVfQkVFVCBpcyBub3Qgc2V0Ci0jIENPTkZJR19JTkVUX0RJQUcgaXMgbm90 IHNldAotIyBDT05GSUdfSVBWNiBpcyBub3Qgc2V0Ci0jIENPTkZJR19XSVJFTEVTUyBpcyBub3Qg c2V0Ci1DT05GSUdfREVWVE1QRlM9eQotQ09ORklHX0RFVlRNUEZTX01PVU5UPXkKLSMgQ09ORklH X0ZXX0xPQURFUiBpcyBub3Qgc2V0Ci1DT05GSUdfTVREPXkKLUNPTkZJR19NVERfQkxPQ0tfUk89 eQotQ09ORklHX01URF9ST009eQotQ09ORklHX01URF9VQ0xJTlVYPXkKLSMgQ09ORklHX0JMS19E RVYgaXMgbm90IHNldAotQ09ORklHX05FVERFVklDRVM9eQotIyBDT05GSUdfTkVUX1ZFTkRPUl9B UkMgaXMgbm90IHNldAotIyBDT05GSUdfTkVUX0NBREVOQ0UgaXMgbm90IHNldAotIyBDT05GSUdf TkVUX1ZFTkRPUl9CUk9BRENPTSBpcyBub3Qgc2V0Ci0jIENPTkZJR19ORVRfVkVORE9SX0NJUlJV UyBpcyBub3Qgc2V0Ci0jIENPTkZJR19ORVRfVkVORE9SX0ZBUkFEQVkgaXMgbm90IHNldAotIyBD T05GSUdfTkVUX1ZFTkRPUl9JTlRFTCBpcyBub3Qgc2V0Ci0jIENPTkZJR19ORVRfVkVORE9SX01B UlZFTEwgaXMgbm90IHNldAotQ09ORklHX0tTODg1MT15Ci0jIENPTkZJR19ORVRfVkVORE9SX01J Q1JPQ0hJUCBpcyBub3Qgc2V0Ci0jIENPTkZJR19ORVRfVkVORE9SX05BVFNFTUkgaXMgbm90IHNl dAotIyBDT05GSUdfTkVUX1ZFTkRPUl9TRUVRIGlzIG5vdCBzZXQKLSMgQ09ORklHX05FVF9WRU5E T1JfU01TQyBpcyBub3Qgc2V0Ci0jIENPTkZJR19ORVRfVkVORE9SX1NUTUlDUk8gaXMgbm90IHNl dAotIyBDT05GSUdfTkVUX1ZFTkRPUl9WSUEgaXMgbm90IHNldAotIyBDT05GSUdfTkVUX1ZFTkRP Ul9XSVpORVQgaXMgbm90IHNldAotIyBDT05GSUdfV0xBTiBpcyBub3Qgc2V0Ci0jIENPTkZJR19J TlBVVCBpcyBub3Qgc2V0Ci0jIENPTkZJR19TRVJJTyBpcyBub3Qgc2V0Ci0jIENPTkZJR19WVCBp cyBub3Qgc2V0Ci0jIENPTkZJR19VTklYOThfUFRZUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19MRUdB Q1lfUFRZUyBpcyBub3Qgc2V0Ci1DT05GSUdfU0VSSUFMX05PTlNUQU5EQVJEPXkKLSMgQ09ORklH X0RFVktNRU0gaXMgbm90IHNldAotQ09ORklHX1NFUklBTF9FRk0zMl9VQVJUPXkKLUNPTkZJR19T RVJJQUxfRUZNMzJfVUFSVF9DT05TT0xFPXkKLSMgQ09ORklHX0hXX1JBTkRPTSBpcyBub3Qgc2V0 Ci1DT05GSUdfSTJDPXkKLSMgQ09ORklHX0kyQ19DT01QQVQgaXMgbm90IHNldAotQ09ORklHX0ky Q19FRk0zMj15Ci1DT05GSUdfU1BJPXkKLUNPTkZJR19TUElfRUZNMzI9eQotQ09ORklHX0dQSU9f U1lTRlM9eQotIyBDT05GSUdfVVNCX1NVUFBPUlQgaXMgbm90IHNldAotQ09ORklHX01NQz15Ci1D T05GSUdfTU1DX1NQST15Ci1DT05GSUdfRVhUMl9GUz15Ci0jIENPTkZJR19GSUxFX0xPQ0tJTkcg aXMgbm90IHNldAotIyBDT05GSUdfRE5PVElGWSBpcyBub3Qgc2V0Ci0jIENPTkZJR19JTk9USUZZ X1VTRVIgaXMgbm90IHNldAotQ09ORklHX1JPTUZTX0ZTPXkKLUNPTkZJR19ST01GU19CQUNLRURf QllfTVREPXkKLSMgQ09ORklHX05FVFdPUktfRklMRVNZU1RFTVMgaXMgbm90IHNldAotQ09ORklH X1BSSU5US19USU1FPXkKLUNPTkZJR19ERUJVR19JTkZPPXkKLSMgQ09ORklHX0VOQUJMRV9NVVNU X0NIRUNLIGlzIG5vdCBzZXQKLUNPTkZJR19NQUdJQ19TWVNSUT15Ci0jIENPTkZJR19TQ0hFRF9E RUJVRyBpcyBub3Qgc2V0Ci0jIENPTkZJR19ERUJVR19CVUdWRVJCT1NFIGlzIG5vdCBzZXQKLSMg Q09ORklHX0ZUUkFDRSBpcyBub3Qgc2V0CmRpZmYgLS1naXQgYS9hcmNoL2FybS9pbmNsdWRlL2Rl YnVnL2VmbTMyLlMgYi9hcmNoL2FybS9pbmNsdWRlL2RlYnVnL2VmbTMyLlMKZGVsZXRlZCBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IGIwMDgzZDZlMzFlOC4uMDAwMDAwMDAwMDAwCi0tLSBhL2FyY2gv YXJtL2luY2x1ZGUvZGVidWcvZWZtMzIuUworKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAK LS8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkgKi8KLS8qCi0gKiBDb3B5 cmlnaHQgKEMpIDIwMTMgUGVuZ3V0cm9uaXgKLSAqIFV3ZSBLbGVpbmUtS29lbmlnIDx1LmtsZWlu ZS1rb2VuaWdAcGVuZ3V0cm9uaXguZGU+Ci0gKi8KLQotI2RlZmluZSBVQVJUbl9DTUQJCTB4MDAw YwotI2RlZmluZSBVQVJUbl9DTURfVFhFTgkJCTB4MDAwNAotCi0jZGVmaW5lCVVBUlRuX1NUQVRV UwkJMHgwMDEwCi0jZGVmaW5lCVVBUlRuX1NUQVRVU19UWEMJCTB4MDAyMAotI2RlZmluZQlVQVJU bl9TVEFUVVNfVFhCTAkJMHgwMDQwCi0KLSNkZWZpbmUJVUFSVG5fVFhEQVRBCQkweDAwMzQKLQot CQkubWFjcm8JYWRkcnVhcnQsIHJ4LCB0bXAsIHRtcDIKLQkJbGRyCVxyeCwgPShDT05GSUdfREVC VUdfVUFSVF9QSFlTKQotCi0JCS8qCi0JCSAqIGVuYWJsZSBUWC4gVGhlIGRyaXZlciBtaWdodCBk aXNhYmxlIGl0IHRvIHNhdmUgZW5lcmd5LiBXZQotCQkgKiBkb24ndCBjYXJlIGFib3V0IGRpc2Fi bGluZyBhdCB0aGUgZW5kIGFzIGR1cmluZyBkZWJ1ZyBwb3dlcgotCQkgKiBjb25zdW1wdGlvbiBp c24ndCB0aGF0IGltcG9ydGFudC4KLQkJICovCi0JCWxkcglcdG1wLCA9KFVBUlRuX0NNRF9UWEVO KQotCQlzdHIJXHRtcCwgW1xyeCwgI1VBUlRuX0NNRF0KLQkJLmVuZG0KLQotCQkubWFjcm8Jc2Vu ZHVhcnQscmQscngKLQkJc3RyYglccmQsIFtccngsICNVQVJUbl9UWERBVEFdCi0JCS5lbmRtCi0K LQkJLm1hY3JvCXdhaXR1YXJ0Y3RzLHJkLHJ4Ci0JCS5lbmRtCi0KLQkJLm1hY3JvCXdhaXR1YXJ0 dHhyZHkscmQscngKLTEwMDE6CQlsZHIJXHJkLCBbXHJ4LCAjVUFSVG5fU1RBVFVTXQotCQl0c3QJ XHJkLCAjVUFSVG5fU1RBVFVTX1RYQkwKLQkJYmVxCTEwMDFiCi0JCS5lbmRtCi0KLQkJLm1hY3Jv CWJ1c3l1YXJ0LHJkLHJ4Ci0xMDAxOgkJbGRyCVxyZCwgW1xyeCwgVUFSVG5fU1RBVFVTXQotCQl0 c3QJXHJkLCAjVUFSVG5fU1RBVFVTX1RYQwotCQlibmUJMTAwMWIKLQkJLmVuZG0KZGlmZiAtLWdp dCBhL2FyY2gvYXJtL21hY2gtZWZtMzIvTWFrZWZpbGUgYi9hcmNoL2FybS9tYWNoLWVmbTMyL01h a2VmaWxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZWRlM2ZhNTVhNzYuLjAwMDAw MDAwMDAwMAotLS0gYS9hcmNoL2FybS9tYWNoLWVmbTMyL01ha2VmaWxlCisrKyAvZGV2L251bGwK QEAgLTEsMiArMCwwIEBACi0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkK LW9iai15ICs9IGR0bWFjaGluZS5vCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWVmbTMyL01h a2VmaWxlLmJvb3QgYi9hcmNoL2FybS9tYWNoLWVmbTMyL01ha2VmaWxlLmJvb3QKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlYzE5NWQ0ZmNiYS4uMDAwMDAwMDAwMDAwCi0tLSBhL2Fy Y2gvYXJtL21hY2gtZWZtMzIvTWFrZWZpbGUuYm9vdAorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAs MCBAQAotIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5Ci0jIEVtcHR5IGZp bGUgd2FpdGluZyBmb3IgZGVsZXRpb24gb25jZSBNYWtlZmlsZS5ib290IGlzbid0IG5lZWRlZCBh bnkgbW9yZS4KLSMgUGF0Y2ggd2FpdHMgZm9yIGFwcGxpY2F0aW9uIGF0Ci0jIGh0dHA6Ly93d3cu YXJtLmxpbnV4Lm9yZy51ay9kZXZlbG9wZXIvcGF0Y2hlcy92aWV3cGF0Y2gucGhwP2lkPTc4ODkv MSAuCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWVmbTMyL2R0bWFjaGluZS5jIGIvYXJjaC9h cm0vbWFjaC1lZm0zMi9kdG1hY2hpbmUuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg ZTkzNjRiODQzNjQxLi4wMDAwMDAwMDAwMDAKLS0tIGEvYXJjaC9hcm0vbWFjaC1lZm0zMi9kdG1h Y2hpbmUuYworKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLS8vIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBHUEwtMi4wCi0jaW5jbHVkZSA8bGludXgva2VybmVsLmg+Ci0KLSNpbmNsdWRl IDxhc20vdjdtLmg+Ci0KLSNpbmNsdWRlIDxhc20vbWFjaC9hcmNoLmg+Ci0KLXN0YXRpYyBjb25z dCBjaGFyICpjb25zdCBlZm0zMmdnX2NvbXBhdFtdIF9faW5pdGNvbnN0ID0gewotCSJlZm0zMixk azM3NTAiLAotCU5VTEwKLX07Ci0KLURUX01BQ0hJTkVfU1RBUlQoRUZNMzJEVCwgIkVGTTMyIChE ZXZpY2UgVHJlZSBTdXBwb3J0KSIpCi0JLmR0X2NvbXBhdCA9IGVmbTMyZ2dfY29tcGF0LAotCS5y ZXN0YXJ0ID0gYXJtdjdtX3Jlc3RhcnQsCi1NQUNISU5FX0VORApkaWZmIC0tZ2l0IGEvYXJjaC9h cm0vbW0vS2NvbmZpZyBiL2FyY2gvYXJtL21tL0tjb25maWcKaW5kZXggMDI2OTJmYmUyZGI1Li4z NWY0M2QwYWEwNTYgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21tL0tjb25maWcKKysrIGIvYXJjaC9h cm0vbW0vS2NvbmZpZwpAQCAtNjM4LDcgKzYzOCw2IEBAIGNvbmZpZyBDUFVfVjdNX05VTV9JUlEK IAlpbnQgIk51bWJlciBvZiBleHRlcm5hbCBpbnRlcnJ1cHRzIGNvbm5lY3RlZCB0byB0aGUgTlZJ QyIKIAlkZXBlbmRzIG9uIENQVV9WN00KIAlkZWZhdWx0IDkwIGlmIEFSQ0hfU1RNMzIKLQlkZWZh dWx0IDM4IGlmIEFSQ0hfRUZNMzIKIAlkZWZhdWx0IDExMiBpZiBTT0NfVkY2MTAKIAlkZWZhdWx0 IDI0MAogCWhlbHAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdHR5L3NlcmlhbC9lZm0zMi11YXJ0LmMg Yi9kcml2ZXJzL3R0eS9zZXJpYWwvZWZtMzItdWFydC5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCBmMTJmMjljZjRmMzEuLjAwMDAwMDAwMDAwMAotLS0gYS9kcml2ZXJzL3R0eS9zZXJp YWwvZWZtMzItdWFydC5jCisrKyAvZGV2L251bGwKQEAgLTEsODUyICswLDAgQEAKLS8vIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCi0jaW5jbHVkZSA8bGludXgva2VybmVsLmg+Ci0j aW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Ci0jaW5jbHVkZSA8bGludXgvaW8uaD4KLSNpbmNsdWRl IDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KLSNpbmNsdWRlIDxsaW51eC9jb25zb2xlLmg+Ci0j aW5jbHVkZSA8bGludXgvc3lzcnEuaD4KLSNpbmNsdWRlIDxsaW51eC9zZXJpYWxfY29yZS5oPgot I2luY2x1ZGUgPGxpbnV4L3R0eV9mbGlwLmg+Ci0jaW5jbHVkZSA8bGludXgvc2xhYi5oPgotI2lu Y2x1ZGUgPGxpbnV4L2Nsay5oPgotI2luY2x1ZGUgPGxpbnV4L29mLmg+Ci0jaW5jbHVkZSA8bGlu dXgvb2ZfZGV2aWNlLmg+Ci0KLSNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kYXRhL2VmbTMyLXVh cnQuaD4KLQotI2RlZmluZSBEUklWRVJfTkFNRSAiZWZtMzItdWFydCIKLSNkZWZpbmUgREVWX05B TUUgInR0eWVmbSIKLQotI2RlZmluZSBVQVJUbl9DVFJMCQkweDAwCi0jZGVmaW5lIFVBUlRuX0NU UkxfU1lOQwkJMHgwMDAxCi0jZGVmaW5lIFVBUlRuX0NUUkxfVFhCSUwJCTB4MTAwMAotCi0jZGVm aW5lIFVBUlRuX0ZSQU1FCQkweDA0Ci0jZGVmaW5lIFVBUlRuX0ZSQU1FX0RBVEFCSVRTX19NQVNL CTB4MDAwZgotI2RlZmluZSBVQVJUbl9GUkFNRV9EQVRBQklUUyhuKQkJKChuKSAtIDMpCi0jZGVm aW5lIFVBUlRuX0ZSQU1FX1BBUklUWV9fTUFTSwkweDAzMDAKLSNkZWZpbmUgVUFSVG5fRlJBTUVf UEFSSVRZX05PTkUJCTB4MDAwMAotI2RlZmluZSBVQVJUbl9GUkFNRV9QQVJJVFlfRVZFTgkJMHgw MjAwCi0jZGVmaW5lIFVBUlRuX0ZSQU1FX1BBUklUWV9PREQJCTB4MDMwMAotI2RlZmluZSBVQVJU bl9GUkFNRV9TVE9QQklUU19IQUxGCTB4MDAwMAotI2RlZmluZSBVQVJUbl9GUkFNRV9TVE9QQklU U19PTkUJMHgxMDAwCi0jZGVmaW5lIFVBUlRuX0ZSQU1FX1NUT1BCSVRTX1RXTwkweDMwMDAKLQot I2RlZmluZSBVQVJUbl9DTUQJCTB4MGMKLSNkZWZpbmUgVUFSVG5fQ01EX1JYRU4JCQkweDAwMDEK LSNkZWZpbmUgVUFSVG5fQ01EX1JYRElTCQkweDAwMDIKLSNkZWZpbmUgVUFSVG5fQ01EX1RYRU4J CQkweDAwMDQKLSNkZWZpbmUgVUFSVG5fQ01EX1RYRElTCQkweDAwMDgKLQotI2RlZmluZSBVQVJU bl9TVEFUVVMJCTB4MTAKLSNkZWZpbmUgVUFSVG5fU1RBVFVTX1RYRU5TCQkweDAwMDIKLSNkZWZp bmUgVUFSVG5fU1RBVFVTX1RYQwkJMHgwMDIwCi0jZGVmaW5lIFVBUlRuX1NUQVRVU19UWEJMCQkw eDAwNDAKLSNkZWZpbmUgVUFSVG5fU1RBVFVTX1JYREFUQVYJCTB4MDA4MAotCi0jZGVmaW5lIFVB UlRuX0NMS0RJVgkJMHgxNAotCi0jZGVmaW5lIFVBUlRuX1JYREFUQVgJCTB4MTgKLSNkZWZpbmUg VUFSVG5fUlhEQVRBWF9SWERBVEFfX01BU0sJMHgwMWZmCi0jZGVmaW5lIFVBUlRuX1JYREFUQVhf UEVSUgkJMHg0MDAwCi0jZGVmaW5lIFVBUlRuX1JYREFUQVhfRkVSUgkJMHg4MDAwCi0vKgotICog VGhpcyBpcyBhIHNvZnR3YXJlIG9ubHkgZmxhZyB1c2VkIGZvciBpZ25vcmVfc3RhdHVzX21hc2sg YW5kCi0gKiByZWFkX3N0YXR1c19tYXNrISBJdCdzIHVzZWQgZm9yIGJyZWFrcyB0aGF0IHRoZSBo YXJkd2FyZSBkb2Vzbid0IHJlcG9ydAotICogZXhwbGljaXRseS4KLSAqLwotI2RlZmluZSBTV19V QVJUbl9SWERBVEFYX0JFUlIJCTB4MjAwMAotCi0jZGVmaW5lIFVBUlRuX1RYREFUQQkJMHgzNAot Ci0jZGVmaW5lIFVBUlRuX0lGCQkweDQwCi0jZGVmaW5lIFVBUlRuX0lGX1RYQwkJCTB4MDAwMQot I2RlZmluZSBVQVJUbl9JRl9UWEJMCQkJMHgwMDAyCi0jZGVmaW5lIFVBUlRuX0lGX1JYREFUQVYJ CTB4MDAwNAotI2RlZmluZSBVQVJUbl9JRl9SWE9GCQkJMHgwMDEwCi0KLSNkZWZpbmUgVUFSVG5f SUZTCQkweDQ0Ci0jZGVmaW5lIFVBUlRuX0lGQwkJMHg0OAotI2RlZmluZSBVQVJUbl9JRU4JCTB4 NGMKLQotI2RlZmluZSBVQVJUbl9ST1VURQkJMHg1NAotI2RlZmluZSBVQVJUbl9ST1VURV9MT0NB VElPTl9fTUFTSwkweDA3MDAKLSNkZWZpbmUgVUFSVG5fUk9VVEVfTE9DQVRJT04obikJCSgoKG4p IDw8IDgpICYgVUFSVG5fUk9VVEVfTE9DQVRJT05fX01BU0spCi0jZGVmaW5lIFVBUlRuX1JPVVRF X1JYUEVOCQkweDAwMDEKLSNkZWZpbmUgVUFSVG5fUk9VVEVfVFhQRU4JCTB4MDAwMgotCi1zdHJ1 Y3QgZWZtMzJfdWFydF9wb3J0IHsKLQlzdHJ1Y3QgdWFydF9wb3J0IHBvcnQ7Ci0JdW5zaWduZWQg aW50IHR4aXJxOwotCXN0cnVjdCBjbGsgKmNsazsKLQlzdHJ1Y3QgZWZtMzJfdWFydF9wZGF0YSBw ZGF0YTsKLX07Ci0jZGVmaW5lIHRvX2VmbV9wb3J0KF9wb3J0KSBjb250YWluZXJfb2YoX3BvcnQs IHN0cnVjdCBlZm0zMl91YXJ0X3BvcnQsIHBvcnQpCi0jZGVmaW5lIGVmbV9kZWJ1ZyhlZm1fcG9y dCwgZm9ybWF0LCBhcmcuLi4pCQkJXAotCWRldl9kYmcoZWZtX3BvcnQtPnBvcnQuZGV2LCBmb3Jt YXQsICMjYXJnKQotCi1zdGF0aWMgdm9pZCBlZm0zMl91YXJ0X3dyaXRlMzIoc3RydWN0IGVmbTMy X3VhcnRfcG9ydCAqZWZtX3BvcnQsCi0JCXUzMiB2YWx1ZSwgdW5zaWduZWQgb2Zmc2V0KQotewot CXdyaXRlbF9yZWxheGVkKHZhbHVlLCBlZm1fcG9ydC0+cG9ydC5tZW1iYXNlICsgb2Zmc2V0KTsK LX0KLQotc3RhdGljIHUzMiBlZm0zMl91YXJ0X3JlYWQzMihzdHJ1Y3QgZWZtMzJfdWFydF9wb3J0 ICplZm1fcG9ydCwKLQkJdW5zaWduZWQgb2Zmc2V0KQotewotCXJldHVybiByZWFkbF9yZWxheGVk KGVmbV9wb3J0LT5wb3J0Lm1lbWJhc2UgKyBvZmZzZXQpOwotfQotCi1zdGF0aWMgdW5zaWduZWQg aW50IGVmbTMyX3VhcnRfdHhfZW1wdHkoc3RydWN0IHVhcnRfcG9ydCAqcG9ydCkKLXsKLQlzdHJ1 Y3QgZWZtMzJfdWFydF9wb3J0ICplZm1fcG9ydCA9IHRvX2VmbV9wb3J0KHBvcnQpOwotCXUzMiBz dGF0dXMgPSBlZm0zMl91YXJ0X3JlYWQzMihlZm1fcG9ydCwgVUFSVG5fU1RBVFVTKTsKLQotCWlm IChzdGF0dXMgJiBVQVJUbl9TVEFUVVNfVFhDKQotCQlyZXR1cm4gVElPQ1NFUl9URU1UOwotCWVs c2UKLQkJcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyB2b2lkIGVmbTMyX3VhcnRfc2V0X21jdHJsKHN0 cnVjdCB1YXJ0X3BvcnQgKnBvcnQsIHVuc2lnbmVkIGludCBtY3RybCkKLXsKLQkvKiBzb3JyeSwg bmVpdGhlciBoYW5kc2hha2luZyBsaW5lcyBub3IgbG9vcCBmdW5jdGlvbmFsbGl0eSAqLwotfQot Ci1zdGF0aWMgdW5zaWduZWQgaW50IGVmbTMyX3VhcnRfZ2V0X21jdHJsKHN0cnVjdCB1YXJ0X3Bv cnQgKnBvcnQpCi17Ci0JLyogc29ycnksIG5vIGhhbmRzaGFraW5nIGxpbmVzIGF2YWlsYWJsZSAq LwotCXJldHVybiBUSU9DTV9DQVIgfCBUSU9DTV9DVFMgfCBUSU9DTV9EU1I7Ci19Ci0KLXN0YXRp YyB2b2lkIGVmbTMyX3VhcnRfc3RvcF90eChzdHJ1Y3QgdWFydF9wb3J0ICpwb3J0KQotewotCXN0 cnVjdCBlZm0zMl91YXJ0X3BvcnQgKmVmbV9wb3J0ID0gdG9fZWZtX3BvcnQocG9ydCk7Ci0JdTMy IGllbiA9IGVmbTMyX3VhcnRfcmVhZDMyKGVmbV9wb3J0LCAgVUFSVG5fSUVOKTsKLQotCWVmbTMy X3VhcnRfd3JpdGUzMihlZm1fcG9ydCwgVUFSVG5fQ01EX1RYRElTLCBVQVJUbl9DTUQpOwotCWll biAmPSB+KFVBUlRuX0lGX1RYQyB8IFVBUlRuX0lGX1RYQkwpOwotCWVmbTMyX3VhcnRfd3JpdGUz MihlZm1fcG9ydCwgaWVuLCBVQVJUbl9JRU4pOwotfQotCi1zdGF0aWMgdm9pZCBlZm0zMl91YXJ0 X3R4X2NoYXJzKHN0cnVjdCBlZm0zMl91YXJ0X3BvcnQgKmVmbV9wb3J0KQotewotCXN0cnVjdCB1 YXJ0X3BvcnQgKnBvcnQgPSAmZWZtX3BvcnQtPnBvcnQ7Ci0Jc3RydWN0IGNpcmNfYnVmICp4bWl0 ID0gJnBvcnQtPnN0YXRlLT54bWl0OwotCi0Jd2hpbGUgKGVmbTMyX3VhcnRfcmVhZDMyKGVmbV9w b3J0LCBVQVJUbl9TVEFUVVMpICYKLQkJCVVBUlRuX1NUQVRVU19UWEJMKSB7Ci0JCWlmIChwb3J0 LT54X2NoYXIpIHsKLQkJCXBvcnQtPmljb3VudC50eCsrOwotCQkJZWZtMzJfdWFydF93cml0ZTMy KGVmbV9wb3J0LCBwb3J0LT54X2NoYXIsCi0JCQkJCVVBUlRuX1RYREFUQSk7Ci0JCQlwb3J0LT54 X2NoYXIgPSAwOwotCQkJY29udGludWU7Ci0JCX0KLQkJaWYgKCF1YXJ0X2NpcmNfZW1wdHkoeG1p dCkgJiYgIXVhcnRfdHhfc3RvcHBlZChwb3J0KSkgewotCQkJcG9ydC0+aWNvdW50LnR4Kys7Ci0J CQllZm0zMl91YXJ0X3dyaXRlMzIoZWZtX3BvcnQsIHhtaXQtPmJ1Zlt4bWl0LT50YWlsXSwKLQkJ CQkJVUFSVG5fVFhEQVRBKTsKLQkJCXhtaXQtPnRhaWwgPSAoeG1pdC0+dGFpbCArIDEpICYgKFVB UlRfWE1JVF9TSVpFIC0gMSk7Ci0JCX0gZWxzZQotCQkJYnJlYWs7Ci0JfQotCi0JaWYgKHVhcnRf Y2lyY19jaGFyc19wZW5kaW5nKHhtaXQpIDwgV0FLRVVQX0NIQVJTKQotCQl1YXJ0X3dyaXRlX3dh a2V1cChwb3J0KTsKLQotCWlmICghcG9ydC0+eF9jaGFyICYmIHVhcnRfY2lyY19lbXB0eSh4bWl0 KSAmJgotCQkJZWZtMzJfdWFydF9yZWFkMzIoZWZtX3BvcnQsIFVBUlRuX1NUQVRVUykgJgotCQkJ CVVBUlRuX1NUQVRVU19UWEMpCi0JCWVmbTMyX3VhcnRfc3RvcF90eChwb3J0KTsKLX0KLQotc3Rh dGljIHZvaWQgZWZtMzJfdWFydF9zdGFydF90eChzdHJ1Y3QgdWFydF9wb3J0ICpwb3J0KQotewot CXN0cnVjdCBlZm0zMl91YXJ0X3BvcnQgKmVmbV9wb3J0ID0gdG9fZWZtX3BvcnQocG9ydCk7Ci0J dTMyIGllbjsKLQotCWVmbTMyX3VhcnRfd3JpdGUzMihlZm1fcG9ydCwKLQkJCVVBUlRuX0lGX1RY QkwgfCBVQVJUbl9JRl9UWEMsIFVBUlRuX0lGQyk7Ci0JaWVuID0gZWZtMzJfdWFydF9yZWFkMzIo ZWZtX3BvcnQsIFVBUlRuX0lFTik7Ci0JZWZtMzJfdWFydF93cml0ZTMyKGVmbV9wb3J0LAotCQkJ aWVuIHwgVUFSVG5fSUZfVFhCTCB8IFVBUlRuX0lGX1RYQywgVUFSVG5fSUVOKTsKLQllZm0zMl91 YXJ0X3dyaXRlMzIoZWZtX3BvcnQsIFVBUlRuX0NNRF9UWEVOLCBVQVJUbl9DTUQpOwotCi0JZWZt MzJfdWFydF90eF9jaGFycyhlZm1fcG9ydCk7Ci19Ci0KLXN0YXRpYyB2b2lkIGVmbTMyX3VhcnRf c3RvcF9yeChzdHJ1Y3QgdWFydF9wb3J0ICpwb3J0KQotewotCXN0cnVjdCBlZm0zMl91YXJ0X3Bv cnQgKmVmbV9wb3J0ID0gdG9fZWZtX3BvcnQocG9ydCk7Ci0KLQllZm0zMl91YXJ0X3dyaXRlMzIo ZWZtX3BvcnQsIFVBUlRuX0NNRF9SWERJUywgVUFSVG5fQ01EKTsKLX0KLQotc3RhdGljIHZvaWQg ZWZtMzJfdWFydF9icmVha19jdGwoc3RydWN0IHVhcnRfcG9ydCAqcG9ydCwgaW50IGN0bCkKLXsK LQkvKiBub3QgcG9zc2libGUgd2l0aG91dCBmaWRkbGluZyB3aXRoIGdwaW9zICovCi19Ci0KLXN0 YXRpYyB2b2lkIGVmbTMyX3VhcnRfcnhfY2hhcnMoc3RydWN0IGVmbTMyX3VhcnRfcG9ydCAqZWZt X3BvcnQpCi17Ci0Jc3RydWN0IHVhcnRfcG9ydCAqcG9ydCA9ICZlZm1fcG9ydC0+cG9ydDsKLQot CXdoaWxlIChlZm0zMl91YXJ0X3JlYWQzMihlZm1fcG9ydCwgVUFSVG5fU1RBVFVTKSAmCi0JCQlV QVJUbl9TVEFUVVNfUlhEQVRBVikgewotCQl1MzIgcnhkYXRhID0gZWZtMzJfdWFydF9yZWFkMzIo ZWZtX3BvcnQsIFVBUlRuX1JYREFUQVgpOwotCQlpbnQgZmxhZyA9IDA7Ci0KLQkJLyoKLQkJICog VGhpcyBpcyBhIHJlc2VydmVkIGJpdCBhbmQgSSBvbmx5IHNhdyBpdCByZWFkIGFzIDAuIEJ1dCB0 byBiZQotCQkgKiBzdXJlIG5vdCB0byBiZSBjb25mdXNlZCB0b28gbXVjaCBieSBuZXcgZGV2aWNl cyBhZGhlcmUgdG8gdGhlCi0JCSAqIHdhcm5pbmcgaW4gdGhlIHJlZmVyZW5jZSBtYW51YWwgdGhh dCByZXNlcnZlZCBiaXRzIG1pZ2h0Ci0JCSAqIHJlYWQgYXMgMSBpbiB0aGUgZnV0dXJlLgotCQkg Ki8KLQkJcnhkYXRhICY9IH5TV19VQVJUbl9SWERBVEFYX0JFUlI7Ci0KLQkJcG9ydC0+aWNvdW50 LnJ4Kys7Ci0KLQkJaWYgKChyeGRhdGEgJiBVQVJUbl9SWERBVEFYX0ZFUlIpICYmCi0JCQkJIShy eGRhdGEgJiBVQVJUbl9SWERBVEFYX1JYREFUQV9fTUFTSykpIHsKLQkJCXJ4ZGF0YSB8PSBTV19V QVJUbl9SWERBVEFYX0JFUlI7Ci0JCQlwb3J0LT5pY291bnQuYnJrKys7Ci0JCQlpZiAodWFydF9o YW5kbGVfYnJlYWsocG9ydCkpCi0JCQkJY29udGludWU7Ci0JCX0gZWxzZSBpZiAocnhkYXRhICYg VUFSVG5fUlhEQVRBWF9QRVJSKQotCQkJcG9ydC0+aWNvdW50LnBhcml0eSsrOwotCQllbHNlIGlm IChyeGRhdGEgJiBVQVJUbl9SWERBVEFYX0ZFUlIpCi0JCQlwb3J0LT5pY291bnQuZnJhbWUrKzsK LQotCQlyeGRhdGEgJj0gcG9ydC0+cmVhZF9zdGF0dXNfbWFzazsKLQotCQlpZiAocnhkYXRhICYg U1dfVUFSVG5fUlhEQVRBWF9CRVJSKQotCQkJZmxhZyA9IFRUWV9CUkVBSzsKLQkJZWxzZSBpZiAo cnhkYXRhICYgVUFSVG5fUlhEQVRBWF9QRVJSKQotCQkJZmxhZyA9IFRUWV9QQVJJVFk7Ci0JCWVs c2UgaWYgKHJ4ZGF0YSAmIFVBUlRuX1JYREFUQVhfRkVSUikKLQkJCWZsYWcgPSBUVFlfRlJBTUU7 Ci0JCWVsc2UgaWYgKHVhcnRfaGFuZGxlX3N5c3JxX2NoYXIocG9ydCwKLQkJCQkJcnhkYXRhICYg VUFSVG5fUlhEQVRBWF9SWERBVEFfX01BU0spKQotCQkJY29udGludWU7Ci0KLQkJaWYgKChyeGRh dGEgJiBwb3J0LT5pZ25vcmVfc3RhdHVzX21hc2spID09IDApCi0JCQl0dHlfaW5zZXJ0X2ZsaXBf Y2hhcigmcG9ydC0+c3RhdGUtPnBvcnQsCi0JCQkJCXJ4ZGF0YSAmIFVBUlRuX1JYREFUQVhfUlhE QVRBX19NQVNLLCBmbGFnKTsKLQl9Ci19Ci0KLXN0YXRpYyBpcnFyZXR1cm5fdCBlZm0zMl91YXJ0 X3J4aXJxKGludCBpcnEsIHZvaWQgKmRhdGEpCi17Ci0Jc3RydWN0IGVmbTMyX3VhcnRfcG9ydCAq ZWZtX3BvcnQgPSBkYXRhOwotCXUzMiBpcnFmbGFnID0gZWZtMzJfdWFydF9yZWFkMzIoZWZtX3Bv cnQsIFVBUlRuX0lGKTsKLQlpbnQgaGFuZGxlZCA9IElSUV9OT05FOwotCXN0cnVjdCB1YXJ0X3Bv cnQgKnBvcnQgPSAmZWZtX3BvcnQtPnBvcnQ7Ci0Jc3RydWN0IHR0eV9wb3J0ICp0cG9ydCA9ICZw b3J0LT5zdGF0ZS0+cG9ydDsKLQotCXNwaW5fbG9jaygmcG9ydC0+bG9jayk7Ci0KLQlpZiAoaXJx ZmxhZyAmIFVBUlRuX0lGX1JYREFUQVYpIHsKLQkJZWZtMzJfdWFydF93cml0ZTMyKGVmbV9wb3J0 LCBVQVJUbl9JRl9SWERBVEFWLCBVQVJUbl9JRkMpOwotCQllZm0zMl91YXJ0X3J4X2NoYXJzKGVm bV9wb3J0KTsKLQotCQloYW5kbGVkID0gSVJRX0hBTkRMRUQ7Ci0JfQotCi0JaWYgKGlycWZsYWcg JiBVQVJUbl9JRl9SWE9GKSB7Ci0JCWVmbTMyX3VhcnRfd3JpdGUzMihlZm1fcG9ydCwgVUFSVG5f SUZfUlhPRiwgVUFSVG5fSUZDKTsKLQkJcG9ydC0+aWNvdW50Lm92ZXJydW4rKzsKLQkJdHR5X2lu c2VydF9mbGlwX2NoYXIodHBvcnQsIDAsIFRUWV9PVkVSUlVOKTsKLQotCQloYW5kbGVkID0gSVJR X0hBTkRMRUQ7Ci0JfQotCi0Jc3Bpbl91bmxvY2soJnBvcnQtPmxvY2spOwotCi0JdHR5X2ZsaXBf YnVmZmVyX3B1c2godHBvcnQpOwotCi0JcmV0dXJuIGhhbmRsZWQ7Ci19Ci0KLXN0YXRpYyBpcnFy ZXR1cm5fdCBlZm0zMl91YXJ0X3R4aXJxKGludCBpcnEsIHZvaWQgKmRhdGEpCi17Ci0Jc3RydWN0 IGVmbTMyX3VhcnRfcG9ydCAqZWZtX3BvcnQgPSBkYXRhOwotCXUzMiBpcnFmbGFnID0gZWZtMzJf dWFydF9yZWFkMzIoZWZtX3BvcnQsIFVBUlRuX0lGKTsKLQotCS8qIFRYQkwgZG9lc24ndCBuZWVk IHRvIGJlIGNsZWFyZWQgKi8KLQlpZiAoaXJxZmxhZyAmIFVBUlRuX0lGX1RYQykKLQkJZWZtMzJf dWFydF93cml0ZTMyKGVmbV9wb3J0LCBVQVJUbl9JRl9UWEMsIFVBUlRuX0lGQyk7Ci0KLQlpZiAo aXJxZmxhZyAmIChVQVJUbl9JRl9UWEMgfCBVQVJUbl9JRl9UWEJMKSkgewotCQllZm0zMl91YXJ0 X3R4X2NoYXJzKGVmbV9wb3J0KTsKLQkJcmV0dXJuIElSUV9IQU5ETEVEOwotCX0gZWxzZQotCQly ZXR1cm4gSVJRX05PTkU7Ci19Ci0KLXN0YXRpYyBpbnQgZWZtMzJfdWFydF9zdGFydHVwKHN0cnVj dCB1YXJ0X3BvcnQgKnBvcnQpCi17Ci0Jc3RydWN0IGVmbTMyX3VhcnRfcG9ydCAqZWZtX3BvcnQg PSB0b19lZm1fcG9ydChwb3J0KTsKLQlpbnQgcmV0OwotCi0JcmV0ID0gY2xrX2VuYWJsZShlZm1f cG9ydC0+Y2xrKTsKLQlpZiAocmV0KSB7Ci0JCWVmbV9kZWJ1ZyhlZm1fcG9ydCwgImZhaWxlZCB0 byBlbmFibGUgY2xrXG4iKTsKLQkJZ290byBlcnJfY2xrX2VuYWJsZTsKLQl9Ci0JcG9ydC0+dWFy dGNsayA9IGNsa19nZXRfcmF0ZShlZm1fcG9ydC0+Y2xrKTsKLQotCS8qIEVuYWJsZSBwaW5zIGF0 IGNvbmZpZ3VyZWQgbG9jYXRpb24gKi8KLQllZm0zMl91YXJ0X3dyaXRlMzIoZWZtX3BvcnQsCi0J CQlVQVJUbl9ST1VURV9MT0NBVElPTihlZm1fcG9ydC0+cGRhdGEubG9jYXRpb24pIHwKLQkJCVVB UlRuX1JPVVRFX1JYUEVOIHwgVUFSVG5fUk9VVEVfVFhQRU4sCi0JCQlVQVJUbl9ST1VURSk7Ci0K LQlyZXQgPSByZXF1ZXN0X2lycShwb3J0LT5pcnEsIGVmbTMyX3VhcnRfcnhpcnEsIDAsCi0JCQlE UklWRVJfTkFNRSwgZWZtX3BvcnQpOwotCWlmIChyZXQpIHsKLQkJZWZtX2RlYnVnKGVmbV9wb3J0 LCAiZmFpbGVkIHRvIHJlZ2lzdGVyIHJ4aXJxXG4iKTsKLQkJZ290byBlcnJfcmVxdWVzdF9pcnFf cng7Ci0JfQotCi0JLyogZGlzYWJsZSBhbGwgaXJxcyAqLwotCWVmbTMyX3VhcnRfd3JpdGUzMihl Zm1fcG9ydCwgMCwgVUFSVG5fSUVOKTsKLQotCXJldCA9IHJlcXVlc3RfaXJxKGVmbV9wb3J0LT50 eGlycSwgZWZtMzJfdWFydF90eGlycSwgMCwKLQkJCURSSVZFUl9OQU1FLCBlZm1fcG9ydCk7Ci0J aWYgKHJldCkgewotCQllZm1fZGVidWcoZWZtX3BvcnQsICJmYWlsZWQgdG8gcmVnaXN0ZXIgdHhp cnFcbiIpOwotCQlmcmVlX2lycShwb3J0LT5pcnEsIGVmbV9wb3J0KTsKLWVycl9yZXF1ZXN0X2ly cV9yeDoKLQotCQljbGtfZGlzYWJsZShlZm1fcG9ydC0+Y2xrKTsKLQl9IGVsc2UgewotCQllZm0z Ml91YXJ0X3dyaXRlMzIoZWZtX3BvcnQsCi0JCQkJVUFSVG5fSUZfUlhEQVRBViB8IFVBUlRuX0lG X1JYT0YsIFVBUlRuX0lFTik7Ci0JCWVmbTMyX3VhcnRfd3JpdGUzMihlZm1fcG9ydCwgVUFSVG5f Q01EX1JYRU4sIFVBUlRuX0NNRCk7Ci0JfQotCi1lcnJfY2xrX2VuYWJsZToKLQlyZXR1cm4gcmV0 OwotfQotCi1zdGF0aWMgdm9pZCBlZm0zMl91YXJ0X3NodXRkb3duKHN0cnVjdCB1YXJ0X3BvcnQg KnBvcnQpCi17Ci0Jc3RydWN0IGVmbTMyX3VhcnRfcG9ydCAqZWZtX3BvcnQgPSB0b19lZm1fcG9y dChwb3J0KTsKLQotCWVmbTMyX3VhcnRfd3JpdGUzMihlZm1fcG9ydCwgMCwgVUFSVG5fSUVOKTsK LQlmcmVlX2lycShwb3J0LT5pcnEsIGVmbV9wb3J0KTsKLQotCWNsa19kaXNhYmxlKGVmbV9wb3J0 LT5jbGspOwotfQotCi1zdGF0aWMgdm9pZCBlZm0zMl91YXJ0X3NldF90ZXJtaW9zKHN0cnVjdCB1 YXJ0X3BvcnQgKnBvcnQsCi0JCXN0cnVjdCBrdGVybWlvcyAqbmV3LCBzdHJ1Y3Qga3Rlcm1pb3Mg Km9sZCkKLXsKLQlzdHJ1Y3QgZWZtMzJfdWFydF9wb3J0ICplZm1fcG9ydCA9IHRvX2VmbV9wb3J0 KHBvcnQpOwotCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Ci0JdW5zaWduZWQgYmF1ZDsKLQl1MzIgY2xr ZGl2OwotCXUzMiBmcmFtZSA9IDA7Ci0KLQkvKiBubyBtb2RlbSBjb250cm9sIGxpbmVzICovCi0J bmV3LT5jX2NmbGFnICY9IH4oQ1JUU0NUUyB8IENNU1BBUik7Ci0KLQliYXVkID0gdWFydF9nZXRf YmF1ZF9yYXRlKHBvcnQsIG5ldywgb2xkLAotCQkJRElWX1JPVU5EX0NMT1NFU1QocG9ydC0+dWFy dGNsaywgMTYgKiA4MTkyKSwKLQkJCURJVl9ST1VORF9DTE9TRVNUKHBvcnQtPnVhcnRjbGssIDE2 KSk7Ci0KLQlzd2l0Y2ggKG5ldy0+Y19jZmxhZyAmIENTSVpFKSB7Ci0JY2FzZSBDUzU6Ci0JCWZy YW1lIHw9IFVBUlRuX0ZSQU1FX0RBVEFCSVRTKDUpOwotCQlicmVhazsKLQljYXNlIENTNjoKLQkJ ZnJhbWUgfD0gVUFSVG5fRlJBTUVfREFUQUJJVFMoNik7Ci0JCWJyZWFrOwotCWNhc2UgQ1M3Ogot CQlmcmFtZSB8PSBVQVJUbl9GUkFNRV9EQVRBQklUUyg3KTsKLQkJYnJlYWs7Ci0JY2FzZSBDUzg6 Ci0JCWZyYW1lIHw9IFVBUlRuX0ZSQU1FX0RBVEFCSVRTKDgpOwotCQlicmVhazsKLQl9Ci0KLQlp ZiAobmV3LT5jX2NmbGFnICYgQ1NUT1BCKQotCQkvKiB0aGUgcmVjZWl2ZXIgb25seSB2ZXJpZmll cyB0aGUgZmlyc3Qgc3RvcCBiaXQgKi8KLQkJZnJhbWUgfD0gVUFSVG5fRlJBTUVfU1RPUEJJVFNf VFdPOwotCWVsc2UKLQkJZnJhbWUgfD0gVUFSVG5fRlJBTUVfU1RPUEJJVFNfT05FOwotCi0JaWYg KG5ldy0+Y19jZmxhZyAmIFBBUkVOQikgewotCQlpZiAobmV3LT5jX2NmbGFnICYgUEFST0REKQot CQkJZnJhbWUgfD0gVUFSVG5fRlJBTUVfUEFSSVRZX09ERDsKLQkJZWxzZQotCQkJZnJhbWUgfD0g VUFSVG5fRlJBTUVfUEFSSVRZX0VWRU47Ci0JfSBlbHNlCi0JCWZyYW1lIHw9IFVBUlRuX0ZSQU1F X1BBUklUWV9OT05FOwotCi0JLyoKLQkgKiB0aGUgNiBsb3dlc3QgYml0cyBvZiBDTEtESVYgYXJl IGRjLCBiaXQgNiBoYXMgdmFsdWUgMC4yNS4KLQkgKiBwb3J0LT51YXJ0Y2xrIDw9IDE0ZTYsIHNv IDQgKiBwb3J0LT51YXJ0Y2xrIGRvZXNuJ3Qgb3ZlcmZsb3cuCi0JICovCi0JY2xrZGl2ID0gKERJ Vl9ST1VORF9DTE9TRVNUKDQgKiBwb3J0LT51YXJ0Y2xrLCAxNiAqIGJhdWQpIC0gNCkgPDwgNjsK LQotCXNwaW5fbG9ja19pcnFzYXZlKCZwb3J0LT5sb2NrLCBmbGFncyk7Ci0KLQllZm0zMl91YXJ0 X3dyaXRlMzIoZWZtX3BvcnQsCi0JCQlVQVJUbl9DTURfVFhESVMgfCBVQVJUbl9DTURfUlhESVMs IFVBUlRuX0NNRCk7Ci0KLQlwb3J0LT5yZWFkX3N0YXR1c19tYXNrID0gVUFSVG5fUlhEQVRBWF9S WERBVEFfX01BU0s7Ci0JaWYgKG5ldy0+Y19pZmxhZyAmIElOUENLKQotCQlwb3J0LT5yZWFkX3N0 YXR1c19tYXNrIHw9Ci0JCQlVQVJUbl9SWERBVEFYX0ZFUlIgfCBVQVJUbl9SWERBVEFYX1BFUlI7 Ci0JaWYgKG5ldy0+Y19pZmxhZyAmIChJR05CUksgfCBCUktJTlQgfCBQQVJNUkspKQotCQlwb3J0 LT5yZWFkX3N0YXR1c19tYXNrIHw9IFNXX1VBUlRuX1JYREFUQVhfQkVSUjsKLQotCXBvcnQtPmln bm9yZV9zdGF0dXNfbWFzayA9IDA7Ci0JaWYgKG5ldy0+Y19pZmxhZyAmIElHTlBBUikKLQkJcG9y dC0+aWdub3JlX3N0YXR1c19tYXNrIHw9Ci0JCQlVQVJUbl9SWERBVEFYX0ZFUlIgfCBVQVJUbl9S WERBVEFYX1BFUlI7Ci0JaWYgKG5ldy0+Y19pZmxhZyAmIElHTkJSSykKLQkJcG9ydC0+aWdub3Jl X3N0YXR1c19tYXNrIHw9IFNXX1VBUlRuX1JYREFUQVhfQkVSUjsKLQotCXVhcnRfdXBkYXRlX3Rp bWVvdXQocG9ydCwgbmV3LT5jX2NmbGFnLCBiYXVkKTsKLQotCWVmbTMyX3VhcnRfd3JpdGUzMihl Zm1fcG9ydCwgVUFSVG5fQ1RSTF9UWEJJTCwgVUFSVG5fQ1RSTCk7Ci0JZWZtMzJfdWFydF93cml0 ZTMyKGVmbV9wb3J0LCBmcmFtZSwgVUFSVG5fRlJBTUUpOwotCWVmbTMyX3VhcnRfd3JpdGUzMihl Zm1fcG9ydCwgY2xrZGl2LCBVQVJUbl9DTEtESVYpOwotCi0JZWZtMzJfdWFydF93cml0ZTMyKGVm bV9wb3J0LCBVQVJUbl9DTURfVFhFTiB8IFVBUlRuX0NNRF9SWEVOLAotCQkJVUFSVG5fQ01EKTsK LQotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnBvcnQtPmxvY2ssIGZsYWdzKTsKLX0KLQotc3Rh dGljIGNvbnN0IGNoYXIgKmVmbTMyX3VhcnRfdHlwZShzdHJ1Y3QgdWFydF9wb3J0ICpwb3J0KQot ewotCXJldHVybiBwb3J0LT50eXBlID09IFBPUlRfRUZNVUFSVCA/ICJlZm0zMi11YXJ0IiA6IE5V TEw7Ci19Ci0KLXN0YXRpYyB2b2lkIGVmbTMyX3VhcnRfcmVsZWFzZV9wb3J0KHN0cnVjdCB1YXJ0 X3BvcnQgKnBvcnQpCi17Ci0Jc3RydWN0IGVmbTMyX3VhcnRfcG9ydCAqZWZtX3BvcnQgPSB0b19l Zm1fcG9ydChwb3J0KTsKLQotCWNsa191bnByZXBhcmUoZWZtX3BvcnQtPmNsayk7Ci0JY2xrX3B1 dChlZm1fcG9ydC0+Y2xrKTsKLQlpb3VubWFwKHBvcnQtPm1lbWJhc2UpOwotfQotCi1zdGF0aWMg aW50IGVmbTMyX3VhcnRfcmVxdWVzdF9wb3J0KHN0cnVjdCB1YXJ0X3BvcnQgKnBvcnQpCi17Ci0J c3RydWN0IGVmbTMyX3VhcnRfcG9ydCAqZWZtX3BvcnQgPSB0b19lZm1fcG9ydChwb3J0KTsKLQlp bnQgcmV0OwotCi0JcG9ydC0+bWVtYmFzZSA9IGlvcmVtYXAocG9ydC0+bWFwYmFzZSwgNjApOwot CWlmICghZWZtX3BvcnQtPnBvcnQubWVtYmFzZSkgewotCQlyZXQgPSAtRU5PTUVNOwotCQllZm1f ZGVidWcoZWZtX3BvcnQsICJmYWlsZWQgdG8gcmVtYXBcbiIpOwotCQlnb3RvIGVycl9pb3JlbWFw OwotCX0KLQotCWVmbV9wb3J0LT5jbGsgPSBjbGtfZ2V0KHBvcnQtPmRldiwgTlVMTCk7Ci0JaWYg KElTX0VSUihlZm1fcG9ydC0+Y2xrKSkgewotCQlyZXQgPSBQVFJfRVJSKGVmbV9wb3J0LT5jbGsp OwotCQllZm1fZGVidWcoZWZtX3BvcnQsICJmYWlsZWQgdG8gZ2V0IGNsb2NrXG4iKTsKLQkJZ290 byBlcnJfY2xrX2dldDsKLQl9Ci0KLQlyZXQgPSBjbGtfcHJlcGFyZShlZm1fcG9ydC0+Y2xrKTsK LQlpZiAocmV0KSB7Ci0JCWNsa19wdXQoZWZtX3BvcnQtPmNsayk7Ci1lcnJfY2xrX2dldDoKLQot CQlpb3VubWFwKHBvcnQtPm1lbWJhc2UpOwotZXJyX2lvcmVtYXA6Ci0JCXJldHVybiByZXQ7Ci0J fQotCXJldHVybiAwOwotfQotCi1zdGF0aWMgdm9pZCBlZm0zMl91YXJ0X2NvbmZpZ19wb3J0KHN0 cnVjdCB1YXJ0X3BvcnQgKnBvcnQsIGludCB0eXBlKQotewotCWlmICh0eXBlICYgVUFSVF9DT05G SUdfVFlQRSAmJgotCQkJIWVmbTMyX3VhcnRfcmVxdWVzdF9wb3J0KHBvcnQpKQotCQlwb3J0LT50 eXBlID0gUE9SVF9FRk1VQVJUOwotfQotCi1zdGF0aWMgaW50IGVmbTMyX3VhcnRfdmVyaWZ5X3Bv cnQoc3RydWN0IHVhcnRfcG9ydCAqcG9ydCwKLQkJc3RydWN0IHNlcmlhbF9zdHJ1Y3QgKnNlcmlu Zm8pCi17Ci0JaW50IHJldCA9IDA7Ci0KLQlpZiAoc2VyaW5mby0+dHlwZSAhPSBQT1JUX1VOS05P V04gJiYgc2VyaW5mby0+dHlwZSAhPSBQT1JUX0VGTVVBUlQpCi0JCXJldCA9IC1FSU5WQUw7Ci0K LQlyZXR1cm4gcmV0OwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IHVhcnRfb3BzIGVmbTMyX3Vh cnRfcG9wcyA9IHsKLQkudHhfZW1wdHkgPSBlZm0zMl91YXJ0X3R4X2VtcHR5LAotCS5zZXRfbWN0 cmwgPSBlZm0zMl91YXJ0X3NldF9tY3RybCwKLQkuZ2V0X21jdHJsID0gZWZtMzJfdWFydF9nZXRf bWN0cmwsCi0JLnN0b3BfdHggPSBlZm0zMl91YXJ0X3N0b3BfdHgsCi0JLnN0YXJ0X3R4ID0gZWZt MzJfdWFydF9zdGFydF90eCwKLQkuc3RvcF9yeCA9IGVmbTMyX3VhcnRfc3RvcF9yeCwKLQkuYnJl YWtfY3RsID0gZWZtMzJfdWFydF9icmVha19jdGwsCi0JLnN0YXJ0dXAgPSBlZm0zMl91YXJ0X3N0 YXJ0dXAsCi0JLnNodXRkb3duID0gZWZtMzJfdWFydF9zaHV0ZG93biwKLQkuc2V0X3Rlcm1pb3Mg PSBlZm0zMl91YXJ0X3NldF90ZXJtaW9zLAotCS50eXBlID0gZWZtMzJfdWFydF90eXBlLAotCS5y ZWxlYXNlX3BvcnQgPSBlZm0zMl91YXJ0X3JlbGVhc2VfcG9ydCwKLQkucmVxdWVzdF9wb3J0ID0g ZWZtMzJfdWFydF9yZXF1ZXN0X3BvcnQsCi0JLmNvbmZpZ19wb3J0ID0gZWZtMzJfdWFydF9jb25m aWdfcG9ydCwKLQkudmVyaWZ5X3BvcnQgPSBlZm0zMl91YXJ0X3ZlcmlmeV9wb3J0LAotfTsKLQot c3RhdGljIHN0cnVjdCBlZm0zMl91YXJ0X3BvcnQgKmVmbTMyX3VhcnRfcG9ydHNbNV07Ci0KLSNp ZmRlZiBDT05GSUdfU0VSSUFMX0VGTTMyX1VBUlRfQ09OU09MRQotc3RhdGljIHZvaWQgZWZtMzJf dWFydF9jb25zb2xlX3B1dGNoYXIoc3RydWN0IHVhcnRfcG9ydCAqcG9ydCwgaW50IGNoKQotewot CXN0cnVjdCBlZm0zMl91YXJ0X3BvcnQgKmVmbV9wb3J0ID0gdG9fZWZtX3BvcnQocG9ydCk7Ci0J dW5zaWduZWQgaW50IHRpbWVvdXQgPSAweDQwMDsKLQl1MzIgc3RhdHVzOwotCi0Jd2hpbGUgKDEp IHsKLQkJc3RhdHVzID0gZWZtMzJfdWFydF9yZWFkMzIoZWZtX3BvcnQsIFVBUlRuX1NUQVRVUyk7 Ci0KLQkJaWYgKHN0YXR1cyAmIFVBUlRuX1NUQVRVU19UWEJMKQotCQkJYnJlYWs7Ci0JCWlmICgh dGltZW91dC0tKQotCQkJcmV0dXJuOwotCX0KLQllZm0zMl91YXJ0X3dyaXRlMzIoZWZtX3BvcnQs IGNoLCBVQVJUbl9UWERBVEEpOwotfQotCi1zdGF0aWMgdm9pZCBlZm0zMl91YXJ0X2NvbnNvbGVf d3JpdGUoc3RydWN0IGNvbnNvbGUgKmNvLCBjb25zdCBjaGFyICpzLAotCQl1bnNpZ25lZCBpbnQg Y291bnQpCi17Ci0Jc3RydWN0IGVmbTMyX3VhcnRfcG9ydCAqZWZtX3BvcnQgPSBlZm0zMl91YXJ0 X3BvcnRzW2NvLT5pbmRleF07Ci0JdTMyIHN0YXR1cyA9IGVmbTMyX3VhcnRfcmVhZDMyKGVmbV9w b3J0LCBVQVJUbl9TVEFUVVMpOwotCXVuc2lnbmVkIGludCB0aW1lb3V0ID0gMHg0MDA7Ci0KLQlp ZiAoIShzdGF0dXMgJiBVQVJUbl9TVEFUVVNfVFhFTlMpKQotCQllZm0zMl91YXJ0X3dyaXRlMzIo ZWZtX3BvcnQsIFVBUlRuX0NNRF9UWEVOLCBVQVJUbl9DTUQpOwotCi0JdWFydF9jb25zb2xlX3dy aXRlKCZlZm1fcG9ydC0+cG9ydCwgcywgY291bnQsCi0JCQllZm0zMl91YXJ0X2NvbnNvbGVfcHV0 Y2hhcik7Ci0KLQkvKiBXYWl0IGZvciB0aGUgdHJhbnNtaXR0ZXIgdG8gYmVjb21lIGVtcHR5ICov Ci0Jd2hpbGUgKDEpIHsKLQkJdTMyIHN0YXR1cyA9IGVmbTMyX3VhcnRfcmVhZDMyKGVmbV9wb3J0 LCBVQVJUbl9TVEFUVVMpOwotCQlpZiAoc3RhdHVzICYgVUFSVG5fU1RBVFVTX1RYQykKLQkJCWJy ZWFrOwotCQlpZiAoIXRpbWVvdXQtLSkKLQkJCWJyZWFrOwotCX0KLQotCWlmICghKHN0YXR1cyAm IFVBUlRuX1NUQVRVU19UWEVOUykpCi0JCWVmbTMyX3VhcnRfd3JpdGUzMihlZm1fcG9ydCwgVUFS VG5fQ01EX1RYRElTLCBVQVJUbl9DTUQpOwotfQotCi1zdGF0aWMgdm9pZCBlZm0zMl91YXJ0X2Nv bnNvbGVfZ2V0X29wdGlvbnMoc3RydWN0IGVmbTMyX3VhcnRfcG9ydCAqZWZtX3BvcnQsCi0JCWlu dCAqYmF1ZCwgaW50ICpwYXJpdHksIGludCAqYml0cykKLXsKLQl1MzIgY3RybCA9IGVmbTMyX3Vh cnRfcmVhZDMyKGVmbV9wb3J0LCBVQVJUbl9DVFJMKTsKLQl1MzIgcm91dGUsIGNsa2RpdiwgZnJh bWU7Ci0KLQlpZiAoY3RybCAmIFVBUlRuX0NUUkxfU1lOQykKLQkJLyogbm90IG9wZXJhdGluZyBp biBhc3luYyBtb2RlICovCi0JCXJldHVybjsKLQotCXJvdXRlID0gZWZtMzJfdWFydF9yZWFkMzIo ZWZtX3BvcnQsIFVBUlRuX1JPVVRFKTsKLQlpZiAoIShyb3V0ZSAmIFVBUlRuX1JPVVRFX1RYUEVO KSkKLQkJLyogdHggcGluIG5vdCByb3V0ZWQgKi8KLQkJcmV0dXJuOwotCi0JY2xrZGl2ID0gZWZt MzJfdWFydF9yZWFkMzIoZWZtX3BvcnQsIFVBUlRuX0NMS0RJVik7Ci0KLQkqYmF1ZCA9IERJVl9S T1VORF9DTE9TRVNUKDQgKiBlZm1fcG9ydC0+cG9ydC51YXJ0Y2xrLAotCQkJMTYgKiAoNCArIChj bGtkaXYgPj4gNikpKTsKLQotCWZyYW1lID0gZWZtMzJfdWFydF9yZWFkMzIoZWZtX3BvcnQsIFVB UlRuX0ZSQU1FKTsKLQlzd2l0Y2ggKGZyYW1lICYgVUFSVG5fRlJBTUVfUEFSSVRZX19NQVNLKSB7 Ci0JY2FzZSBVQVJUbl9GUkFNRV9QQVJJVFlfT0REOgotCQkqcGFyaXR5ID0gJ28nOwotCQlicmVh azsKLQljYXNlIFVBUlRuX0ZSQU1FX1BBUklUWV9FVkVOOgotCQkqcGFyaXR5ID0gJ2UnOwotCQli cmVhazsKLQlkZWZhdWx0OgotCQkqcGFyaXR5ID0gJ24nOwotCX0KLQotCSpiaXRzID0gKGZyYW1l ICYgVUFSVG5fRlJBTUVfREFUQUJJVFNfX01BU0spIC0KLQkJCVVBUlRuX0ZSQU1FX0RBVEFCSVRT KDQpICsgNDsKLQotCWVmbV9kZWJ1ZyhlZm1fcG9ydCwgImdldF9vcHRzOiBvcHRpb25zPSVkJWMl ZFxuIiwKLQkJCSpiYXVkLCAqcGFyaXR5LCAqYml0cyk7Ci19Ci0KLXN0YXRpYyBpbnQgZWZtMzJf dWFydF9jb25zb2xlX3NldHVwKHN0cnVjdCBjb25zb2xlICpjbywgY2hhciAqb3B0aW9ucykKLXsK LQlzdHJ1Y3QgZWZtMzJfdWFydF9wb3J0ICplZm1fcG9ydDsKLQlpbnQgYmF1ZCA9IDExNTIwMDsK LQlpbnQgYml0cyA9IDg7Ci0JaW50IHBhcml0eSA9ICduJzsKLQlpbnQgZmxvdyA9ICduJzsKLQlp bnQgcmV0OwotCi0JaWYgKGNvLT5pbmRleCA8IDAgfHwgY28tPmluZGV4ID49IEFSUkFZX1NJWkUo ZWZtMzJfdWFydF9wb3J0cykpIHsKLQkJdW5zaWduZWQgaTsKLQkJZm9yIChpID0gMDsgaSA8IEFS UkFZX1NJWkUoZWZtMzJfdWFydF9wb3J0cyk7ICsraSkgewotCQkJaWYgKGVmbTMyX3VhcnRfcG9y dHNbaV0pIHsKLQkJCQlwcl93YXJuKCJlZm0zMi1jb25zb2xlOiBmYWxsIGJhY2sgdG8gY29uc29s ZSBpbmRleCAldSAoZnJvbSAlaGhpKVxuIiwKLQkJCQkJCWksIGNvLT5pbmRleCk7Ci0JCQkJY28t PmluZGV4ID0gaTsKLQkJCQlicmVhazsKLQkJCX0KLQkJfQotCX0KLQotCWVmbV9wb3J0ID0gZWZt MzJfdWFydF9wb3J0c1tjby0+aW5kZXhdOwotCWlmICghZWZtX3BvcnQpIHsKLQkJcHJfd2Fybigi ZWZtMzItY29uc29sZTogTm8gcG9ydCBhdCAlZFxuIiwgY28tPmluZGV4KTsKLQkJcmV0dXJuIC1F Tk9ERVY7Ci0JfQotCi0JcmV0ID0gY2xrX3ByZXBhcmUoZWZtX3BvcnQtPmNsayk7Ci0JaWYgKHJl dCkgewotCQlkZXZfd2FybihlZm1fcG9ydC0+cG9ydC5kZXYsCi0JCQkJImNvbnNvbGU6IGNsa19w cmVwYXJlIGZhaWxlZDogJWRcbiIsIHJldCk7Ci0JCXJldHVybiByZXQ7Ci0JfQotCi0JZWZtX3Bv cnQtPnBvcnQudWFydGNsayA9IGNsa19nZXRfcmF0ZShlZm1fcG9ydC0+Y2xrKTsKLQotCWlmIChv cHRpb25zKQotCQl1YXJ0X3BhcnNlX29wdGlvbnMob3B0aW9ucywgJmJhdWQsICZwYXJpdHksICZi aXRzLCAmZmxvdyk7Ci0JZWxzZQotCQllZm0zMl91YXJ0X2NvbnNvbGVfZ2V0X29wdGlvbnMoZWZt X3BvcnQsCi0JCQkJJmJhdWQsICZwYXJpdHksICZiaXRzKTsKLQotCXJldHVybiB1YXJ0X3NldF9v cHRpb25zKCZlZm1fcG9ydC0+cG9ydCwgY28sIGJhdWQsIHBhcml0eSwgYml0cywgZmxvdyk7Ci19 Ci0KLXN0YXRpYyBzdHJ1Y3QgdWFydF9kcml2ZXIgZWZtMzJfdWFydF9yZWc7Ci0KLXN0YXRpYyBz dHJ1Y3QgY29uc29sZSBlZm0zMl91YXJ0X2NvbnNvbGUgPSB7Ci0JLm5hbWUgPSBERVZfTkFNRSwK LQkud3JpdGUgPSBlZm0zMl91YXJ0X2NvbnNvbGVfd3JpdGUsCi0JLmRldmljZSA9IHVhcnRfY29u c29sZV9kZXZpY2UsCi0JLnNldHVwID0gZWZtMzJfdWFydF9jb25zb2xlX3NldHVwLAotCS5mbGFn cyA9IENPTl9QUklOVEJVRkZFUiwKLQkuaW5kZXggPSAtMSwKLQkuZGF0YSA9ICZlZm0zMl91YXJ0 X3JlZywKLX07Ci0KLSNlbHNlCi0jZGVmaW5lIGVmbTMyX3VhcnRfY29uc29sZSAoKihzdHJ1Y3Qg Y29uc29sZSAqKU5VTEwpCi0jZW5kaWYgLyogaWZkZWYgQ09ORklHX1NFUklBTF9FRk0zMl9VQVJU X0NPTlNPTEUgLyBlbHNlICovCi0KLXN0YXRpYyBzdHJ1Y3QgdWFydF9kcml2ZXIgZWZtMzJfdWFy dF9yZWcgPSB7Ci0JLm93bmVyID0gVEhJU19NT0RVTEUsCi0JLmRyaXZlcl9uYW1lID0gRFJJVkVS X05BTUUsCi0JLmRldl9uYW1lID0gREVWX05BTUUsCi0JLm5yID0gQVJSQVlfU0laRShlZm0zMl91 YXJ0X3BvcnRzKSwKLQkuY29ucyA9ICZlZm0zMl91YXJ0X2NvbnNvbGUsCi19OwotCi1zdGF0aWMg aW50IGVmbTMyX3VhcnRfcHJvYmVfZHQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwKLQkJ c3RydWN0IGVmbTMyX3VhcnRfcG9ydCAqZWZtX3BvcnQpCi17Ci0Jc3RydWN0IGRldmljZV9ub2Rl ICpucCA9IHBkZXYtPmRldi5vZl9ub2RlOwotCXUzMiBsb2NhdGlvbjsKLQlpbnQgcmV0OwotCi0J aWYgKCFucCkKLQkJcmV0dXJuIDE7Ci0KLQlyZXQgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMihucCwg ImVuZXJneW1pY3JvLGxvY2F0aW9uIiwgJmxvY2F0aW9uKTsKLQotCWlmIChyZXQpCi0JCS8qIGZh bGwgYmFjayB0byB3cm9uZ2x5IG5hbWVzcGFjZWQgcHJvcGVydHkgKi8KLQkJcmV0ID0gb2ZfcHJv cGVydHlfcmVhZF91MzIobnAsICJlZm0zMixsb2NhdGlvbiIsICZsb2NhdGlvbik7Ci0KLQlpZiAo cmV0KQotCQkvKiBmYWxsIGJhY2sgdG8gb2xkIGFuZCAod3JvbmdseSkgZ2VuZXJpYyBwcm9wZXJ0 eSAibG9jYXRpb24iICovCi0JCXJldCA9IG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5wLCAibG9jYXRp b24iLCAmbG9jYXRpb24pOwotCi0JaWYgKCFyZXQpIHsKLQkJaWYgKGxvY2F0aW9uID4gNSkgewot CQkJZGV2X2VycigmcGRldi0+ZGV2LCAiaW52YWxpZCBsb2NhdGlvblxuIik7Ci0JCQlyZXR1cm4g LUVJTlZBTDsKLQkJfQotCQllZm1fZGVidWcoZWZtX3BvcnQsICJ1c2luZyBsb2NhdGlvbiAldVxu IiwgbG9jYXRpb24pOwotCQllZm1fcG9ydC0+cGRhdGEubG9jYXRpb24gPSBsb2NhdGlvbjsKLQl9 IGVsc2UgewotCQllZm1fZGVidWcoZWZtX3BvcnQsICJmYWxsIGJhY2sgdG8gbG9jYXRpb24gMFxu Iik7Ci0JfQotCi0JcmV0ID0gb2ZfYWxpYXNfZ2V0X2lkKG5wLCAic2VyaWFsIik7Ci0JaWYgKHJl dCA8IDApIHsKLQkJZGV2X2VycigmcGRldi0+ZGV2LCAiZmFpbGVkIHRvIGdldCBhbGlhcyBpZDog JWRcbiIsIHJldCk7Ci0JCXJldHVybiByZXQ7Ci0JfSBlbHNlIHsKLQkJZWZtX3BvcnQtPnBvcnQu bGluZSA9IHJldDsKLQkJcmV0dXJuIDA7Ci0JfQotCi19Ci0KLXN0YXRpYyBpbnQgZWZtMzJfdWFy dF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQotewotCXN0cnVjdCBlZm0zMl91 YXJ0X3BvcnQgKmVmbV9wb3J0OwotCXN0cnVjdCByZXNvdXJjZSAqcmVzOwotCXVuc2lnbmVkIGlu dCBsaW5lOwotCWludCByZXQ7Ci0KLQllZm1fcG9ydCA9IGt6YWxsb2Moc2l6ZW9mKCplZm1fcG9y dCksIEdGUF9LRVJORUwpOwotCWlmICghZWZtX3BvcnQpIHsKLQkJZGV2X2RiZygmcGRldi0+ZGV2 LCAiZmFpbGVkIHRvIGFsbG9jYXRlIHByaXZhdGUgZGF0YVxuIik7Ci0JCXJldHVybiAtRU5PTUVN OwotCX0KLQotCXJlcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2LCBJT1JFU09VUkNFX01F TSwgMCk7Ci0JaWYgKCFyZXMpIHsKLQkJcmV0ID0gLUVOT0RFVjsKLQkJZGV2X2RiZygmcGRldi0+ ZGV2LCAiZmFpbGVkIHRvIGRldGVybWluZSBiYXNlIGFkZHJlc3NcbiIpOwotCQlnb3RvIGVycl9n ZXRfYmFzZTsKLQl9Ci0KLQlpZiAocmVzb3VyY2Vfc2l6ZShyZXMpIDwgNjApIHsKLQkJcmV0ID0g LUVJTlZBTDsKLQkJZGV2X2RiZygmcGRldi0+ZGV2LCAibWVtb3J5IHJlc291cmNlIHRvbyBzbWFs bFxuIik7Ci0JCWdvdG8gZXJyX3Rvb19zbWFsbDsKLQl9Ci0KLQlyZXQgPSBwbGF0Zm9ybV9nZXRf aXJxKHBkZXYsIDApOwotCWlmIChyZXQgPD0gMCkgewotCQlkZXZfZGJnKCZwZGV2LT5kZXYsICJm YWlsZWQgdG8gZ2V0IHJ4IGlycVxuIik7Ci0JCWdvdG8gZXJyX2dldF9yeGlycTsKLQl9Ci0KLQll Zm1fcG9ydC0+cG9ydC5pcnEgPSByZXQ7Ci0KLQlyZXQgPSBwbGF0Zm9ybV9nZXRfaXJxKHBkZXYs IDEpOwotCWlmIChyZXQgPD0gMCkKLQkJcmV0ID0gZWZtX3BvcnQtPnBvcnQuaXJxICsgMTsKLQot CWVmbV9wb3J0LT50eGlycSA9IHJldDsKLQotCWVmbV9wb3J0LT5wb3J0LmRldiA9ICZwZGV2LT5k ZXY7Ci0JZWZtX3BvcnQtPnBvcnQubWFwYmFzZSA9IHJlcy0+c3RhcnQ7Ci0JZWZtX3BvcnQtPnBv cnQudHlwZSA9IFBPUlRfRUZNVUFSVDsKLQllZm1fcG9ydC0+cG9ydC5pb3R5cGUgPSBVUElPX01F TTMyOwotCWVmbV9wb3J0LT5wb3J0LmZpZm9zaXplID0gMjsKLQllZm1fcG9ydC0+cG9ydC5oYXNf c3lzcnEgPSBJU19FTkFCTEVEKENPTkZJR19TRVJJQUxfRUZNMzJfVUFSVF9DT05TT0xFKTsKLQll Zm1fcG9ydC0+cG9ydC5vcHMgPSAmZWZtMzJfdWFydF9wb3BzOwotCWVmbV9wb3J0LT5wb3J0LmZs YWdzID0gVVBGX0JPT1RfQVVUT0NPTkY7Ci0KLQlyZXQgPSBlZm0zMl91YXJ0X3Byb2JlX2R0KHBk ZXYsIGVmbV9wb3J0KTsKLQlpZiAocmV0ID4gMCkgewotCQkvKiBub3QgY3JlYXRlZCBieSBkZXZp Y2UgdHJlZSAqLwotCQljb25zdCBzdHJ1Y3QgZWZtMzJfdWFydF9wZGF0YSAqcGRhdGEgPSBkZXZf Z2V0X3BsYXRkYXRhKCZwZGV2LT5kZXYpOwotCi0JCWVmbV9wb3J0LT5wb3J0LmxpbmUgPSBwZGV2 LT5pZDsKLQotCQlpZiAocGRhdGEpCi0JCQllZm1fcG9ydC0+cGRhdGEgPSAqcGRhdGE7Ci0JfSBl bHNlIGlmIChyZXQgPCAwKQotCQlnb3RvIGVycl9wcm9iZV9kdDsKLQotCWxpbmUgPSBlZm1fcG9y dC0+cG9ydC5saW5lOwotCi0JaWYgKGxpbmUgPj0gMCAmJiBsaW5lIDwgQVJSQVlfU0laRShlZm0z Ml91YXJ0X3BvcnRzKSkKLQkJZWZtMzJfdWFydF9wb3J0c1tsaW5lXSA9IGVmbV9wb3J0OwotCi0J cmV0ID0gdWFydF9hZGRfb25lX3BvcnQoJmVmbTMyX3VhcnRfcmVnLCAmZWZtX3BvcnQtPnBvcnQp OwotCWlmIChyZXQpIHsKLQkJZGV2X2RiZygmcGRldi0+ZGV2LCAiZmFpbGVkIHRvIGFkZCBwb3J0 OiAlZFxuIiwgcmV0KTsKLQotCQlpZiAobGluZSA+PSAwICYmIGxpbmUgPCBBUlJBWV9TSVpFKGVm bTMyX3VhcnRfcG9ydHMpKQotCQkJZWZtMzJfdWFydF9wb3J0c1tsaW5lXSA9IE5VTEw7Ci1lcnJf cHJvYmVfZHQ6Ci1lcnJfZ2V0X3J4aXJxOgotZXJyX3Rvb19zbWFsbDoKLWVycl9nZXRfYmFzZToK LQkJa2ZyZWUoZWZtX3BvcnQpOwotCX0gZWxzZSB7Ci0JCXBsYXRmb3JtX3NldF9kcnZkYXRhKHBk ZXYsIGVmbV9wb3J0KTsKLQkJZGV2X2RiZygmcGRldi0+ZGV2LCAiXFxvL1xuIik7Ci0JfQotCi0J cmV0dXJuIHJldDsKLX0KLQotc3RhdGljIGludCBlZm0zMl91YXJ0X3JlbW92ZShzdHJ1Y3QgcGxh dGZvcm1fZGV2aWNlICpwZGV2KQotewotCXN0cnVjdCBlZm0zMl91YXJ0X3BvcnQgKmVmbV9wb3J0 ID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7Ci0JdW5zaWduZWQgaW50IGxpbmUgPSBlZm1f cG9ydC0+cG9ydC5saW5lOwotCi0JdWFydF9yZW1vdmVfb25lX3BvcnQoJmVmbTMyX3VhcnRfcmVn LCAmZWZtX3BvcnQtPnBvcnQpOwotCi0JaWYgKGxpbmUgPj0gMCAmJiBsaW5lIDwgQVJSQVlfU0la RShlZm0zMl91YXJ0X3BvcnRzKSkKLQkJZWZtMzJfdWFydF9wb3J0c1tsaW5lXSA9IE5VTEw7Ci0K LQlrZnJlZShlZm1fcG9ydCk7Ci0KLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVj dCBvZl9kZXZpY2VfaWQgZWZtMzJfdWFydF9kdF9pZHNbXSA9IHsKLQl7Ci0JCS5jb21wYXRpYmxl ID0gImVuZXJneW1pY3JvLGVmbTMyLXVhcnQiLAotCX0sIHsKLQkJLyogZG9lc24ndCBmb2xsb3cg dGhlICJ2ZW5kb3IsZGV2aWNlIiBzY2hlbWUsIGRvbid0IHVzZSAqLwotCQkuY29tcGF0aWJsZSA9 ICJlZm0zMix1YXJ0IiwKLQl9LCB7Ci0JCS8qIHNlbnRpbmVsICovCi0JfQotfTsKLU1PRFVMRV9E RVZJQ0VfVEFCTEUob2YsIGVmbTMyX3VhcnRfZHRfaWRzKTsKLQotc3RhdGljIHN0cnVjdCBwbGF0 Zm9ybV9kcml2ZXIgZWZtMzJfdWFydF9kcml2ZXIgPSB7Ci0JLnByb2JlID0gZWZtMzJfdWFydF9w cm9iZSwKLQkucmVtb3ZlID0gZWZtMzJfdWFydF9yZW1vdmUsCi0KLQkuZHJpdmVyID0gewotCQku bmFtZSA9IERSSVZFUl9OQU1FLAotCQkub2ZfbWF0Y2hfdGFibGUgPSBlZm0zMl91YXJ0X2R0X2lk cywKLQl9LAotfTsKLQotc3RhdGljIGludCBfX2luaXQgZWZtMzJfdWFydF9pbml0KHZvaWQpCi17 Ci0JaW50IHJldDsKLQotCXJldCA9IHVhcnRfcmVnaXN0ZXJfZHJpdmVyKCZlZm0zMl91YXJ0X3Jl Zyk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKLQotCXJldCA9IHBsYXRmb3JtX2RyaXZlcl9y ZWdpc3RlcigmZWZtMzJfdWFydF9kcml2ZXIpOwotCWlmIChyZXQpCi0JCXVhcnRfdW5yZWdpc3Rl cl9kcml2ZXIoJmVmbTMyX3VhcnRfcmVnKTsKLQotCXByX2luZm8oIkVGTTMyIFVBUlQvVVNBUlQg ZHJpdmVyXG4iKTsKLQotCXJldHVybiByZXQ7Ci19Ci1tb2R1bGVfaW5pdChlZm0zMl91YXJ0X2lu aXQpOwotCi1zdGF0aWMgdm9pZCBfX2V4aXQgZWZtMzJfdWFydF9leGl0KHZvaWQpCi17Ci0JcGxh dGZvcm1fZHJpdmVyX3VucmVnaXN0ZXIoJmVmbTMyX3VhcnRfZHJpdmVyKTsKLQl1YXJ0X3VucmVn aXN0ZXJfZHJpdmVyKCZlZm0zMl91YXJ0X3JlZyk7Ci19Ci1tb2R1bGVfZXhpdChlZm0zMl91YXJ0 X2V4aXQpOwotCi1NT0RVTEVfQVVUSE9SKCJVd2UgS2xlaW5lLUtvZW5pZyA8dS5rbGVpbmUta29l bmlnQHBlbmd1dHJvbml4LmRlPiIpOwotTU9EVUxFX0RFU0NSSVBUSU9OKCJFRk0zMiBVQVJUL1VT QVJUIGRyaXZlciIpOwotTU9EVUxFX0xJQ0VOU0UoIkdQTCB2MiIpOwotTU9EVUxFX0FMSUFTKCJw bGF0Zm9ybToiIERSSVZFUl9OQU1FKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGxhdGZv cm1fZGF0YS9lZm0zMi11YXJ0LmggYi9pbmNsdWRlL2xpbnV4L3BsYXRmb3JtX2RhdGEvZWZtMzIt dWFydC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjY2JiOGYxMWRiNzUuLjAwMDAw MDAwMDAwMAotLS0gYS9pbmNsdWRlL2xpbnV4L3BsYXRmb3JtX2RhdGEvZWZtMzItdWFydC5oCisr KyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6 IEdQTC0yLjAgKi8KLS8qCi0gKgotICoKLSAqLwotI2lmbmRlZiBfX0xJTlVYX1BMQVRGT1JNX0RB VEFfRUZNMzJfVUFSVF9IX18KLSNkZWZpbmUgX19MSU5VWF9QTEFURk9STV9EQVRBX0VGTTMyX1VB UlRfSF9fCi0KLSNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgotCi0vKioKLSAqIHN0cnVjdCBlZm0z Ml91YXJ0X3BkYXRhCi0gKiBAbG9jYXRpb246IHBpbm11eCBsb2NhdGlvbiBmb3IgdGhlIEkvTyBw aW5zICh0byBiZSB3cml0dGVuIHRvIHRoZSBST1VURQotICogCXJlZ2lzdGVyKQotICovCi1zdHJ1 Y3QgZWZtMzJfdWFydF9wZGF0YSB7Ci0JdTggbG9jYXRpb247Ci19OwotI2VuZGlmIC8qIGlmbmRl ZiBfX0xJTlVYX1BMQVRGT1JNX0RBVEFfRUZNMzJfVUFSVF9IX18gKi8KLS0gCjIuMjkuMgoKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1r ZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpo dHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJu ZWwK