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=-6.7 required=3.0 tests=DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED,DKIM_VALID,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,UNWANTED_LANGUAGE_BODY,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 C0C09C433E0 for ; Tue, 16 Jun 2020 18:18:44 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 32A7520882 for ; Tue, 16 Jun 2020 18:18:44 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="BGT3z49y"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="NgJ/vic5" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 32A7520882 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-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=bombadil.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=aR29URtugh9rNxLcGzDV35FfgSddFh4EZgFj0/Bkre0=; b=BGT3z49yoKTbe3 daR1w7hX3FsqwrmwIQeMRR6MTCbEpIflO2w+dFmTIegVnFa6OvPIK1oBMDXO4MM8J8V43CMZr95Oj C32jqjBap4G7c8noUXbspNqK/vbxpNyYSUAtdDhR3mMYX7ba3nRFs5ZXUzIuszZ8jkpNjEV4EbZtH ibnw4SYYmCBXY8yU0TUmEr59fE9rrKPDOKelhBn5veY1w9BsssGcqErdg6dYp8CPLSKOIfp3LUwf8 AFaO4Bk9A3SX4aN7iBouhzMvJjNDFrjAModthDRDhEA13n/qBlOKErKrIDjC8w+eMooWf6meGp0l5 TvYfbDqJgShH85ndByxg==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jlGAK-0006Fx-Bn; Tue, 16 Jun 2020 18:18:32 +0000 Received: from mail-wr1-x441.google.com ([2a00:1450:4864:20::441]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jlG9w-0005rK-JD for linux-arm-kernel@lists.infradead.org; Tue, 16 Jun 2020 18:18:10 +0000 Received: by mail-wr1-x441.google.com with SMTP id x6so21727604wrm.13 for ; Tue, 16 Jun 2020 11:18:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=95UCXsHz+rbh7bbI1/W2OwMff0G16krKU9tKENAahbU=; b=NgJ/vic5N7xSzPJSoqp0SkeyJO5D1Yna67teOAx+W3ECTsW2QTXwcZbfkcICLOWGqz 7BoZOV8QVktRjGIRMfvtjf0mhKtebEFSNdwrvcdo3+dArvWbFwk/pCDyqybM7uF4pNIN 4fMaQOgDpuiTdQOBsnJUReOw2Du9KqRUCH78z65iK/7biL4LRDz4ofCTgZJZ4UWP0pdK t/KL4+DOgGVQ/hfE61udpTmnR2DpsfIDOVpaBO05fFcLZgmmiGvXpDrnLXXkwrUgxSqU oI3sNuPJE1DpBA1/ElD40lN2BtSeY8jz1ejE3ySdGc4hi06/zhWKbQyKkMCuj1M17NeU GzQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=95UCXsHz+rbh7bbI1/W2OwMff0G16krKU9tKENAahbU=; b=SwnGeDiscqUBCXlJmRPV8LWthR/iT3t1B4gWGojtpsK8ssffDyvus8VmcoeqQoV0Dj h0WFggTRMUDdSSGibx2LUPbGr9Bb9kA11DJUNn80K7bY9/hg2DTco3bIKCfQH5SFwrFP UJJf2BOH/bEo56V902KLIlCKjh9e/S48DE/aOQyUfK6Rcicb7KKZUkxE6dvQ7fqqIPaw PDu9diQKt+nfc4fIfJMOFJR/qsCIkMfcV1vbTpoiGnlTOfiV3xZQSIMlndQVh48povKs wJQb4vZ68KuwxsB8UGE2fHGaYkiJTrpU70eB6FPO9MYotCIVyoh0WJObajazhnHtygcr 1GaA== X-Gm-Message-State: AOAM530Mot6luDXjRGJr5AUXqoP/WM1zmTNUGn/9Z65WhY9s8qc0EeHK MjndaGS8JGapZRu2/VzUOXs= X-Google-Smtp-Source: ABdhPJz04v0GBDxZd6lla2+5G4ZnE51i0E/BObF20ZHZU75nwK/ufjNjkl8cCMi+E9gZe0teY1I5uA== X-Received: by 2002:a5d:4a0b:: with SMTP id m11mr4109586wrq.385.1592331487117; Tue, 16 Jun 2020 11:18:07 -0700 (PDT) Received: from skynet.lan (90.red-88-20-62.staticip.rima-tde.net. [88.20.62.90]) by smtp.gmail.com with ESMTPSA id u3sm28651091wrw.89.2020.06.16.11.18.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Jun 2020 11:18:06 -0700 (PDT) From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= To: simon@fire.lp0.eu, jonas.gorski@gmail.com, kishon@ti.com, vkoul@kernel.org, robh+dt@kernel.org, f.fainelli@gmail.com, bcm-kernel-feedback-list@broadcom.com, p.zabel@pengutronix.de, krzk@kernel.org, gregkh@linuxfoundation.org, alcooperx@gmail.com, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH v2 2/2] phy: bcm63xx-usbh: Add BCM63xx USBH driver Date: Tue, 16 Jun 2020 20:18:02 +0200 Message-Id: <20200616181802.3498745-3-noltari@gmail.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200616181802.3498745-1-noltari@gmail.com> References: <20200616181802.3498745-1-noltari@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200616_111808_681753_EE2E6A73 X-CRM114-Status: GOOD ( 18.34 ) 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: , Cc: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org QWRkIEJDTTYzeHggVVNCSCBQSFkgZHJpdmVyIGZvciBCTUlQUy4KClNpZ25lZC1vZmYtYnk6IMOB bHZhcm8gRmVybsOhbmRleiBSb2phcyA8bm9sdGFyaUBnbWFpbC5jb20+Ci0tLQp2MjogaW50cm9k dWNlIGNoYW5nZXMgc3VnZ2VzdGVkIGJ5IEZsb3JpYW46CiAtIERyb3AgT0YgZGVwZW5kZW5jeSAo dXNlIGRldmljZV9nZXRfbWF0Y2hfZGF0YSkuCiAtIERyb3AgX19pbml0Y29uc3QgZnJvbSB2YXJp YW50IHRhYmxlcy4KIC0gVXNlIGRldm1fY2xrX2dldF9vcHRpb25hbC4KCiBkcml2ZXJzL3BoeS9i cm9hZGNvbS9LY29uZmlnICAgICAgICAgICAgfCAgIDkgKwogZHJpdmVycy9waHkvYnJvYWRjb20v TWFrZWZpbGUgICAgICAgICAgIHwgICAxICsKIGRyaXZlcnMvcGh5L2Jyb2FkY29tL3BoeS1iY202 M3h4LXVzYmguYyB8IDQzMyArKysrKysrKysrKysrKysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdl ZCwgNDQzIGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3BoeS9icm9h ZGNvbS9waHktYmNtNjN4eC11c2JoLmMKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BoeS9icm9hZGNv bS9LY29uZmlnIGIvZHJpdmVycy9waHkvYnJvYWRjb20vS2NvbmZpZwppbmRleCBiMjlmMTFjMTkx NTUuLmE3ODg5ZGY4YzU0MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9waHkvYnJvYWRjb20vS2NvbmZp ZworKysgYi9kcml2ZXJzL3BoeS9icm9hZGNvbS9LY29uZmlnCkBAIC0yLDYgKzIsMTUgQEAKICMK ICMgUGh5IGRyaXZlcnMgZm9yIEJyb2FkY29tIHBsYXRmb3JtcwogIworY29uZmlnIFBIWV9CQ002 M1hYX1VTQkgKKwl0cmlzdGF0ZSAiQkNNNjN4eCBVU0JIIFBIWSBkcml2ZXIiCisJZGVwZW5kcyBv biBCTUlQU19HRU5FUklDIHx8IENPTVBJTEVfVEVTVAorCXNlbGVjdCBHRU5FUklDX1BIWQorCWRl ZmF1bHQgQk1JUFNfR0VORVJJQworCWhlbHAKKwkgIEVuYWJsZSB0aGlzIHRvIHN1cHBvcnQgdGhl IEJDTTYzeHggVVNCSCBQSFkgZHJpdmVyLgorCSAgSWYgdW5zdXJlLCBzYXkgTi4KKwogY29uZmln IFBIWV9DWUdOVVNfUENJRQogCXRyaXN0YXRlICJCcm9hZGNvbSBDeWdudXMgUENJZSBQSFkgZHJp dmVyIgogCWRlcGVuZHMgb24gT0YgJiYgKEFSQ0hfQkNNX0NZR05VUyB8fCBDT01QSUxFX1RFU1Qp CmRpZmYgLS1naXQgYS9kcml2ZXJzL3BoeS9icm9hZGNvbS9NYWtlZmlsZSBiL2RyaXZlcnMvcGh5 L2Jyb2FkY29tL01ha2VmaWxlCmluZGV4IGM3OGRlNTQ2MTM1Yy4uNzAyNDEyN2Y4NmFkIDEwMDY0 NAotLS0gYS9kcml2ZXJzL3BoeS9icm9hZGNvbS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL3BoeS9i cm9hZGNvbS9NYWtlZmlsZQpAQCAtMSw0ICsxLDUgQEAKICMgU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IEdQTC0yLjAKK29iai0kKENPTkZJR19QSFlfQkNNNjNYWF9VU0JIKQkJKz0gcGh5LWJjbTYz eHgtdXNiaC5vCiBvYmotJChDT05GSUdfUEhZX0NZR05VU19QQ0lFKQkJKz0gcGh5LWJjbS1jeWdu dXMtcGNpZS5vCiBvYmotJChDT05GSUdfQkNNX0tPTkFfVVNCMl9QSFkpCQkrPSBwaHktYmNtLWtv bmEtdXNiMi5vCiBvYmotJChDT05GSUdfUEhZX0JDTV9OU19VU0IyKQkJKz0gcGh5LWJjbS1ucy11 c2IyLm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGh5L2Jyb2FkY29tL3BoeS1iY202M3h4LXVzYmgu YyBiL2RyaXZlcnMvcGh5L2Jyb2FkY29tL3BoeS1iY202M3h4LXVzYmguYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmY5M2RlYzdjNDY1OAotLS0gL2Rldi9udWxsCisr KyBiL2RyaXZlcnMvcGh5L2Jyb2FkY29tL3BoeS1iY202M3h4LXVzYmguYwpAQCAtMCwwICsxLDQz MyBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0ZXIKKy8qCisg KiBCQ002MzI4IFVTQkggUEhZIENvbnRyb2xsZXIgRHJpdmVyCisgKgorICogQ29weXJpZ2h0IChD KSAyMDIwIMOBbHZhcm8gRmVybsOhbmRleiBSb2phcyA8bm9sdGFyaUBnbWFpbC5jb20+CisgKiBD b3B5cmlnaHQgKEMpIDIwMTUgU2ltb24gQXJsb3R0IDxzaW1vbkBmaXJlLmxwMC5ldT4KKyAqCisg KiBEZXJpdmVkIGZyb20gYmNtOTYzeHhfNC4xMkwuMDZCX2NvbnN1bWVyL2tlcm5lbC9saW51eC9h cmNoL21pcHMvYmNtOTYzeHgvc2V0dXAuYzoKKyAqIENvcHlyaWdodCAoQykgMjAwMiBCcm9hZGNv bSBDb3Jwb3JhdGlvbgorICoKKyAqIERlcml2ZWQgZnJvbSBPcGVuV3J0IHBhdGNoZXM6CisgKiBD b3B5cmlnaHQgKEMpIDIwMTMgSm9uYXMgR29yc2tpIDxqb25hcy5nb3Jza2lAZ21haWwuY29tPgor ICogQ29weXJpZ2h0IChDKSAyMDEzIEZsb3JpYW4gRmFpbmVsbGkgPGYuZmFpbmVsbGlAZ21haWwu Y29tPgorICogQ29weXJpZ2h0IChDKSAyMDA4IE1heGltZSBCaXpvbiA8bWJpem9uQGZyZWVib3gu ZnI+CisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgorI2luY2x1ZGUgPGxpbnV4L2lvLmg+ CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvcGh5L3BoeS5oPgor I2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L3Jlc2V0 Lmg+CisKKy8qIFVTQkggY29udHJvbCByZWdpc3RlciBvZmZzZXRzICovCitlbnVtIHVzYmhfcmVn cyB7CisJVVNCSF9CUlRfQ09OVFJPTDEgPSAwLAorCVVTQkhfQlJUX0NPTlRST0wyLAorCVVTQkhf QlJUX1NUQVRVUzEsCisJVVNCSF9CUlRfU1RBVFVTMiwKKwlVU0JIX1VUTUlfQ09OVFJPTDEsCisJ VVNCSF9URVNUX1BPUlRfQ09OVFJPTCwKKwlVU0JIX1BMTF9DT05UUk9MMSwKKyNkZWZpbmUgICBV U0JIX1BMTENfUkVGQ0xLU0VMX1NISUZUCTAKKyNkZWZpbmUgICBVU0JIX1BMTENfUkVGQ0xLU0VM X01BU0sJKDB4MyA8PCBVU0JIX1BMTENfUkVGQ0xLU0VMX1NISUZUKQorI2RlZmluZSAgIFVTQkhf UExMQ19DTEtTRUxfU0hJRlQJMgorI2RlZmluZSAgIFVTQkhfUExMQ19DTEtTRUxfTUFTSwkJKDB4 MyA8PCBVU0JIX1BMTENfQ0xLU0VMX01BU0spCisjZGVmaW5lICAgVVNCSF9QTExDX1hUQUxfUFdS RFdOQglCSVQoNCkKKyNkZWZpbmUgICBVU0JIX1BMTENfUExMX1BXUkRXTkIJCUJJVCg1KQorI2Rl ZmluZSAgIFVTQkhfUExMQ19QTExfQ0FMRU4JCUJJVCg2KQorI2RlZmluZSAgIFVTQkhfUExMQ19Q SFlQTExfQllQCQlCSVQoNykKKyNkZWZpbmUgICBVU0JIX1BMTENfUExMX1JFU0VUCQlCSVQoOCkK KyNkZWZpbmUgICBVU0JIX1BMTENfUExMX0lERFFfUFdSRE4JQklUKDkpCisjZGVmaW5lICAgVVNC SF9QTExDX1BMTF9QV1JETl9ERUxBWQlCSVQoMTApCisjZGVmaW5lICAgVVNCSF82MzE4X1BMTENf UExMX1NVU1BFTkRfRU4JQklUKDI3KQorI2RlZmluZSAgIFVTQkhfNjMxOF9QTExDX1BIWVBMTF9C WVAJQklUKDI5KQorI2RlZmluZSAgIFVTQkhfNjMxOF9QTExDX1BMTF9SRVNFVAlCSVQoMzApCisj ZGVmaW5lICAgVVNCSF82MzE4X1BMTENfUExMX0lERFFfUFdSRE4JQklUKDMxKQorCVVTQkhfU1dB UF9DT05UUk9MLAorI2RlZmluZSAgIFVTQkhfU0NfT0hDSV9EQVRBX1NXQVAJQklUKDApCisjZGVm aW5lICAgVVNCSF9TQ19PSENJX0VORElBTl9TV0FQCUJJVCgxKQorI2RlZmluZSAgIFVTQkhfU0Nf T0hDSV9MT0dJQ0FMX0FERFJfRU4JQklUKDIpCisjZGVmaW5lICAgVVNCSF9TQ19FSENJX0RBVEFf U1dBUAlCSVQoMykKKyNkZWZpbmUgICBVU0JIX1NDX0VIQ0lfRU5ESUFOX1NXQVAJQklUKDQpCisj ZGVmaW5lICAgVVNCSF9TQ19FSENJX0xPR0lDQUxfQUREUl9FTglCSVQoNSkKKyNkZWZpbmUgICBV U0JIX1NDX1VTQl9ERVZJQ0VfU0VMCUJJVCg2KQorCVVTQkhfR0VORVJJQ19DT05UUk9MLAorI2Rl ZmluZSAgIFVTQkhfR0NfUExMX1NVU1BFTkRfRU4JQklUKDEpCisJVVNCSF9GUkFNRV9BREpVU1Rf VkFMVUUsCisJVVNCSF9TRVRVUCwKKyNkZWZpbmUgICBVU0JIX1NfSU9DCQkJQklUKDQpCisjZGVm aW5lICAgVVNCSF9TX0lQUAkJCUJJVCg1KQorCVVTQkhfTURJTywKKwlVU0JIX01ESU8zMiwKKwlV U0JIX1VTQl9TSU1fQ09OVFJPTCwKKyNkZWZpbmUgICBVU0JIX1VTQ19MQUREUl9TRUwJCUJJVCg1 KQorCisJX19VU0JIX0VOVU1fU0laRQorfTsKKworc3RydWN0IGJjbTYzeHhfdXNiaF9waHlfdmFy aWFudCB7CisJLyogVVNCIFNpbSBDb250cm9sIGJpdHMgdG8gc2V0ICovCisJdTMyIHVzY19zZXQ7 CisKKwkvKiBUZXN0IFBvcnQgQ29udHJvbCB2YWx1ZSB0byBzZXQgaWYgbm9uLXplcm8gKi8KKwl1 MzIgdHBjX3ZhbDsKKworCS8qIFNldHVwIGJpdHMgdG8gc2V0L2NsZWFyIGZvciBwb3dlciBvbiAq LworCXUzMiBzZXR1cF9zZXQ7CisJdTMyIHNldHVwX2NscjsKKworCS8qIFBMTEMgYml0cyB0byBz ZXQvY2xlYXIgZm9yIHBvd2VyIG9uICovCisJdTMyIHBvd2VyX3BsbGNfc2V0OworCXUzMiBwb3dl cl9wbGxjX2NscjsKKworCS8qIFJlZ2lzdGVycyAqLworCWxvbmcgcmVnc1tfX1VTQkhfRU5VTV9T SVpFXTsKK307CisKK3N0cnVjdCBiY202M3h4X3VzYmhfcGh5IHsKKwl2b2lkIF9faW9tZW0gKmJh c2U7CisJc3RydWN0IGNsayAqdXNiaF9jbGs7CisJc3RydWN0IGNsayAqdXNiX3JlZl9jbGs7CisJ c3RydWN0IHJlc2V0X2NvbnRyb2wgKnJlc2V0OworCWNvbnN0IHN0cnVjdCBiY202M3h4X3VzYmhf cGh5X3ZhcmlhbnQgKnZhcmlhbnQ7Cit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTYzeHhf dXNiaF9waHlfdmFyaWFudCB1c2JoX2JjbTYzMTggPSB7CisJLnJlZ3MgPSB7CisJCVtVU0JIX0JS VF9DT05UUk9MMV0gPSAtMSwKKwkJW1VTQkhfQlJUX0NPTlRST0wyXSA9IC0xLAorCQlbVVNCSF9C UlRfU1RBVFVTMV0gPSAtMSwKKwkJW1VTQkhfQlJUX1NUQVRVUzJdID0gLTEsCisJCVtVU0JIX1VU TUlfQ09OVFJPTDFdID0gMHgyYywKKwkJW1VTQkhfVEVTVF9QT1JUX0NPTlRST0xdID0gMHgxYywK KwkJW1VTQkhfUExMX0NPTlRST0wxXSA9IDB4MDQsCisJCVtVU0JIX1NXQVBfQ09OVFJPTF0gPSAw eDBjLAorCQlbVVNCSF9HRU5FUklDX0NPTlRST0xdID0gLTEsCisJCVtVU0JIX0ZSQU1FX0FESlVT VF9WQUxVRV0gPSAweDA4LAorCQlbVVNCSF9TRVRVUF0gPSAweDAwLAorCQlbVVNCSF9NRElPXSA9 IDB4MTQsCisJCVtVU0JIX01ESU8zMl0gPSAweDE4LAorCQlbVVNCSF9VU0JfU0lNX0NPTlRST0xd ID0gMHgyMCwKKwl9LAorCS5zZXR1cF9zZXQgPSBVU0JIX1NfSU9DLAorCS5zZXR1cF9jbHIgPSAw LAorCS51c2Nfc2V0ID0gVVNCSF9VU0NfTEFERFJfU0VMLAorCS50cGNfdmFsID0gMCwKKwkucG93 ZXJfcGxsY19zZXQgPSBVU0JIXzYzMThfUExMQ19QTExfU1VTUEVORF9FTiwKKwkucG93ZXJfcGxs Y19jbHIgPSBVU0JIXzYzMThfUExMQ19QTExfSUREUV9QV1JETiwKK307CisKK3N0YXRpYyBjb25z dCBzdHJ1Y3QgYmNtNjN4eF91c2JoX3BoeV92YXJpYW50IHVzYmhfYmNtNjMyOCA9IHsKKwkucmVn cyA9IHsKKwkJW1VTQkhfQlJUX0NPTlRST0wxXSA9IDB4MDAsCisJCVtVU0JIX0JSVF9DT05UUk9M Ml0gPSAweDA0LAorCQlbVVNCSF9CUlRfU1RBVFVTMV0gPSAweDA4LAorCQlbVVNCSF9CUlRfU1RB VFVTMl0gPSAweDBjLAorCQlbVVNCSF9VVE1JX0NPTlRST0wxXSA9IDB4MTAsCisJCVtVU0JIX1RF U1RfUE9SVF9DT05UUk9MXSA9IDB4MTQsCisJCVtVU0JIX1BMTF9DT05UUk9MMV0gPSAweDE4LAor CQlbVVNCSF9TV0FQX0NPTlRST0xdID0gMHgxYywKKwkJW1VTQkhfR0VORVJJQ19DT05UUk9MXSA9 IDB4MjAsCisJCVtVU0JIX0ZSQU1FX0FESlVTVF9WQUxVRV0gPSAweDI0LAorCQlbVVNCSF9TRVRV UF0gPSAweDI4LAorCQlbVVNCSF9NRElPXSA9IDB4MmMsCisJCVtVU0JIX01ESU8zMl0gPSAweDMw LAorCQlbVVNCSF9VU0JfU0lNX0NPTlRST0xdID0gMHgzNCwKKwl9LAorCS5zZXR1cF9zZXQgPSBV U0JIX1NfSU9DLAorCS5zZXR1cF9jbHIgPSAwLAorCS51c2Nfc2V0ID0gMCwKKwkudHBjX3ZhbCA9 IDAsCisJLnBvd2VyX3BsbGNfc2V0ID0gMCwKKwkucG93ZXJfcGxsY19jbHIgPSAwLAorfTsKKwor c3RhdGljIGNvbnN0IHN0cnVjdCBiY202M3h4X3VzYmhfcGh5X3ZhcmlhbnQgdXNiaF9iY202MzU4 ID0geworCS5yZWdzID0geworCQlbVVNCSF9CUlRfQ09OVFJPTDFdID0gLTEsCisJCVtVU0JIX0JS VF9DT05UUk9MMl0gPSAtMSwKKwkJW1VTQkhfQlJUX1NUQVRVUzFdID0gLTEsCisJCVtVU0JIX0JS VF9TVEFUVVMyXSA9IC0xLAorCQlbVVNCSF9VVE1JX0NPTlRST0wxXSA9IC0xLAorCQlbVVNCSF9U RVNUX1BPUlRfQ09OVFJPTF0gPSAweDI0LAorCQlbVVNCSF9QTExfQ09OVFJPTDFdID0gLTEsCisJ CVtVU0JIX1NXQVBfQ09OVFJPTF0gPSAweDAwLAorCQlbVVNCSF9HRU5FUklDX0NPTlRST0xdID0g LTEsCisJCVtVU0JIX0ZSQU1FX0FESlVTVF9WQUxVRV0gPSAtMSwKKwkJW1VTQkhfU0VUVVBdID0g LTEsCisJCVtVU0JIX01ESU9dID0gLTEsCisJCVtVU0JIX01ESU8zMl0gPSAtMSwKKwkJW1VTQkhf VVNCX1NJTV9DT05UUk9MXSA9IC0xLAorCX0sCisJLyoKKwkgKiBUaGUgbWFnaWMgdmFsdWUgY29t ZXMgZm9yIHRoZSBvcmlnaW5hbCB2ZW5kb3IgQlNQCisJICogYW5kIGlzIG5lZWRlZCBmb3IgVVNC IHRvIHdvcmsuIERhdGFzaGVldCBkb2VzIG5vdAorCSAqIGhlbHAsIHNvIHRoZSBtYWdpYyB2YWx1 ZSBpcyB1c2VkIGFzLWlzLgorCSAqLworCS50cGNfdmFsID0gMHgxYzAwMjAsCit9OworCitzdGF0 aWMgY29uc3Qgc3RydWN0IGJjbTYzeHhfdXNiaF9waHlfdmFyaWFudCB1c2JoX2JjbTYzNjggPSB7 CisJLnJlZ3MgPSB7CisJCVtVU0JIX0JSVF9DT05UUk9MMV0gPSAweDAwLAorCQlbVVNCSF9CUlRf Q09OVFJPTDJdID0gMHgwNCwKKwkJW1VTQkhfQlJUX1NUQVRVUzFdID0gMHgwOCwKKwkJW1VTQkhf QlJUX1NUQVRVUzJdID0gMHgwYywKKwkJW1VTQkhfVVRNSV9DT05UUk9MMV0gPSAweDEwLAorCQlb VVNCSF9URVNUX1BPUlRfQ09OVFJPTF0gPSAweDE0LAorCQlbVVNCSF9QTExfQ09OVFJPTDFdID0g MHgxOCwKKwkJW1VTQkhfU1dBUF9DT05UUk9MXSA9IDB4MWMsCisJCVtVU0JIX0dFTkVSSUNfQ09O VFJPTF0gPSAtMSwKKwkJW1VTQkhfRlJBTUVfQURKVVNUX1ZBTFVFXSA9IDB4MjQsCisJCVtVU0JI X1NFVFVQXSA9IDB4MjgsCisJCVtVU0JIX01ESU9dID0gMHgyYywKKwkJW1VTQkhfTURJTzMyXSA9 IDB4MzAsCisJCVtVU0JIX1VTQl9TSU1fQ09OVFJPTF0gPSAweDM0LAorCX0sCisJLnNldHVwX3Nl dCA9IFVTQkhfU19JT0MsCisJLnNldHVwX2NsciA9IDAsCisJLnVzY19zZXQgPSAwLAorCS50cGNf dmFsID0gMCwKKwkucG93ZXJfcGxsY19zZXQgPSAwLAorCS5wb3dlcl9wbGxjX2NsciA9IFVTQkhf UExMQ19QTExfSUREUV9QV1JETiB8IFVTQkhfUExMQ19QTExfUFdSRE5fREVMQVksCit9OworCitz dGF0aWMgY29uc3Qgc3RydWN0IGJjbTYzeHhfdXNiaF9waHlfdmFyaWFudCB1c2JoX2JjbTYzMjY4 ID0geworCS5yZWdzID0geworCQlbVVNCSF9CUlRfQ09OVFJPTDFdID0gMHgwMCwKKwkJW1VTQkhf QlJUX0NPTlRST0wyXSA9IDB4MDQsCisJCVtVU0JIX0JSVF9TVEFUVVMxXSA9IDB4MDgsCisJCVtV U0JIX0JSVF9TVEFUVVMyXSA9IDB4MGMsCisJCVtVU0JIX1VUTUlfQ09OVFJPTDFdID0gMHgxMCwK KwkJW1VTQkhfVEVTVF9QT1JUX0NPTlRST0xdID0gMHgxNCwKKwkJW1VTQkhfUExMX0NPTlRST0wx XSA9IDB4MTgsCisJCVtVU0JIX1NXQVBfQ09OVFJPTF0gPSAweDFjLAorCQlbVVNCSF9HRU5FUklD X0NPTlRST0xdID0gMHgyMCwKKwkJW1VTQkhfRlJBTUVfQURKVVNUX1ZBTFVFXSA9IDB4MjQsCisJ CVtVU0JIX1NFVFVQXSA9IDB4MjgsCisJCVtVU0JIX01ESU9dID0gMHgyYywKKwkJW1VTQkhfTURJ TzMyXSA9IDB4MzAsCisJCVtVU0JIX1VTQl9TSU1fQ09OVFJPTF0gPSAweDM0LAorCX0sCisJLnNl dHVwX3NldCA9IFVTQkhfU19JT0MsCisJLnNldHVwX2NsciA9IFVTQkhfU19JUFAsCisJLnVzY19z ZXQgPSAwLAorCS50cGNfdmFsID0gMCwKKwkucG93ZXJfcGxsY19zZXQgPSAwLAorCS5wb3dlcl9w bGxjX2NsciA9IFVTQkhfUExMQ19QTExfSUREUV9QV1JETiB8IFVTQkhfUExMQ19QTExfUFdSRE5f REVMQVksCit9OworCitzdGF0aWMgaW5saW5lIGJvb2wgdXNiaF9oYXNfcmVnKHN0cnVjdCBiY202 M3h4X3VzYmhfcGh5ICp1c2JoLCBpbnQgcmVnKQoreworCXJldHVybiAodXNiaC0+dmFyaWFudC0+ cmVnc1tyZWddID49IDApOworfQorCitzdGF0aWMgaW5saW5lIHUzMiB1c2JoX3JlYWRsKHN0cnVj dCBiY202M3h4X3VzYmhfcGh5ICp1c2JoLCBpbnQgcmVnKQoreworCXJldHVybiBfX3Jhd19yZWFk bCh1c2JoLT5iYXNlICsgdXNiaC0+dmFyaWFudC0+cmVnc1tyZWddKTsKK30KKworc3RhdGljIGlu bGluZSB2b2lkIHVzYmhfd3JpdGVsKHN0cnVjdCBiY202M3h4X3VzYmhfcGh5ICp1c2JoLCBpbnQg cmVnLAorCQkJICAgICAgIHUzMiB2YWx1ZSkKK3sKKwlfX3Jhd193cml0ZWwodmFsdWUsIHVzYmgt PmJhc2UgKyB1c2JoLT52YXJpYW50LT5yZWdzW3JlZ10pOworfQorCitzdGF0aWMgaW50IGJjbTYz eHhfdXNiaF9waHlfaW5pdChzdHJ1Y3QgcGh5ICpwaHkpCit7CisJc3RydWN0IGJjbTYzeHhfdXNi aF9waHkgKnVzYmggPSBwaHlfZ2V0X2RydmRhdGEocGh5KTsKKwlpbnQgcmV0OworCisJcmV0ID0g Y2xrX3ByZXBhcmVfZW5hYmxlKHVzYmgtPnVzYmhfY2xrKTsKKwlpZiAocmV0KSB7CisJCWRldl9l cnIoJnBoeS0+ZGV2LCAidW5hYmxlIHRvIGVuYWJsZSB1c2JoIGNsb2NrOiAlZFxuIiwgcmV0KTsK KwkJcmV0dXJuIHJldDsKKwl9CisKKwlyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUodXNiaC0+dXNi X3JlZl9jbGspOworCWlmIChyZXQpIHsKKwkJZGV2X2VycigmcGh5LT5kZXYsICJ1bmFibGUgdG8g ZW5hYmxlIHVzYl9yZWYgY2xvY2s6ICVkXG4iLCByZXQpOworCQljbGtfZGlzYWJsZV91bnByZXBh cmUodXNiaC0+dXNiaF9jbGspOworCQlyZXR1cm4gcmV0OworCX0KKworCXJldCA9IHJlc2V0X2Nv bnRyb2xfcmVzZXQodXNiaC0+cmVzZXQpOworCWlmIChyZXQpIHsKKwkJZGV2X2VycigmcGh5LT5k ZXYsICJ1bmFibGUgdG8gcmVzZXQgZGV2aWNlOiAlZFxuIiwgcmV0KTsKKwkJY2xrX2Rpc2FibGVf dW5wcmVwYXJlKHVzYmgtPnVzYl9yZWZfY2xrKTsKKwkJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKHVz YmgtPnVzYmhfY2xrKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwkvKiBDb25maWd1cmUgdG8gd29y ayBpbiBuYXRpdmUgQ1BVIGVuZGlhbiAqLworCWlmICh1c2JoX2hhc19yZWcodXNiaCwgVVNCSF9T V0FQX0NPTlRST0wpKSB7CisJCXUzMiB2YWwgPSB1c2JoX3JlYWRsKHVzYmgsIFVTQkhfU1dBUF9D T05UUk9MKTsKKworCQl2YWwgfD0gVVNCSF9TQ19FSENJX0RBVEFfU1dBUDsKKwkJdmFsICY9IH5V U0JIX1NDX0VIQ0lfRU5ESUFOX1NXQVA7CisKKwkJdmFsIHw9IFVTQkhfU0NfT0hDSV9EQVRBX1NX QVA7CisJCXZhbCAmPSB+VVNCSF9TQ19PSENJX0VORElBTl9TV0FQOworCisJCXVzYmhfd3JpdGVs KHVzYmgsIFVTQkhfU1dBUF9DT05UUk9MLCB2YWwpOworCX0KKworCWlmICh1c2JoX2hhc19yZWco dXNiaCwgVVNCSF9TRVRVUCkpIHsKKwkJdTMyIHZhbCA9IHVzYmhfcmVhZGwodXNiaCwgVVNCSF9T RVRVUCk7CisKKwkJdmFsIHw9IHVzYmgtPnZhcmlhbnQtPnNldHVwX3NldDsKKwkJdmFsICY9IH51 c2JoLT52YXJpYW50LT5zZXR1cF9jbHI7CisKKwkJdXNiaF93cml0ZWwodXNiaCwgVVNCSF9TRVRV UCwgdmFsKTsKKwl9CisKKwlpZiAodXNiaF9oYXNfcmVnKHVzYmgsIFVTQkhfVVNCX1NJTV9DT05U Uk9MKSkgeworCQl1MzIgdmFsID0gdXNiaF9yZWFkbCh1c2JoLCBVU0JIX1VTQl9TSU1fQ09OVFJP TCk7CisKKwkJdmFsIHw9IHVzYmgtPnZhcmlhbnQtPnVzY19zZXQ7CisKKwkJdXNiaF93cml0ZWwo dXNiaCwgVVNCSF9VU0JfU0lNX0NPTlRST0wsIHZhbCk7CisJfQorCisJaWYgKHVzYmgtPnZhcmlh bnQtPnRwY192YWwgJiYKKwkgICAgdXNiaF9oYXNfcmVnKHVzYmgsIFVTQkhfVEVTVF9QT1JUX0NP TlRST0wpKQorCQl1c2JoX3dyaXRlbCh1c2JoLCBVU0JIX1RFU1RfUE9SVF9DT05UUk9MLAorCQkJ ICAgIHVzYmgtPnZhcmlhbnQtPnRwY192YWwpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBp bnQgYmNtNjN4eF91c2JoX3BoeV9wb3dlcl9vbihzdHJ1Y3QgcGh5ICpwaHkpCit7CisJc3RydWN0 IGJjbTYzeHhfdXNiaF9waHkgKnVzYmggPSBwaHlfZ2V0X2RydmRhdGEocGh5KTsKKworCWlmICh1 c2JoX2hhc19yZWcodXNiaCwgVVNCSF9QTExfQ09OVFJPTDEpKSB7CisJCXUzMiB2YWwgPSB1c2Jo X3JlYWRsKHVzYmgsIFVTQkhfUExMX0NPTlRST0wxKTsKKworCQl2YWwgfD0gdXNiaC0+dmFyaWFu dC0+cG93ZXJfcGxsY19zZXQ7CisJCXZhbCAmPSB+dXNiaC0+dmFyaWFudC0+cG93ZXJfcGxsY19j bHI7CisKKwkJdXNiaF93cml0ZWwodXNiaCwgVVNCSF9QTExfQ09OVFJPTDEsIHZhbCk7CisJfQor CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgYmNtNjN4eF91c2JoX3BoeV9wb3dlcl9vZmYo c3RydWN0IHBoeSAqcGh5KQoreworCXN0cnVjdCBiY202M3h4X3VzYmhfcGh5ICp1c2JoID0gcGh5 X2dldF9kcnZkYXRhKHBoeSk7CisKKwlpZiAodXNiaF9oYXNfcmVnKHVzYmgsIFVTQkhfUExMX0NP TlRST0wxKSkgeworCQl1MzIgdmFsID0gdXNiaF9yZWFkbCh1c2JoLCBVU0JIX1BMTF9DT05UUk9M MSk7CisKKwkJdmFsICY9IH51c2JoLT52YXJpYW50LT5wb3dlcl9wbGxjX3NldDsKKwkJdmFsIHw9 IHVzYmgtPnZhcmlhbnQtPnBvd2VyX3BsbGNfY2xyOworCisJCXVzYmhfd3JpdGVsKHVzYmgsIFVT QkhfUExMX0NPTlRST0wxLCB2YWwpOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50 IGJjbTYzeHhfdXNiaF9waHlfZXhpdChzdHJ1Y3QgcGh5ICpwaHkpCit7CisJc3RydWN0IGJjbTYz eHhfdXNiaF9waHkgKnVzYmggPSBwaHlfZ2V0X2RydmRhdGEocGh5KTsKKworCWNsa19kaXNhYmxl X3VucHJlcGFyZSh1c2JoLT51c2JoX2Nsayk7CisJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKHVzYmgt PnVzYl9yZWZfY2xrKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IHBo eV9vcHMgYmNtNjN4eF91c2JoX3BoeV9vcHMgPSB7CisJLmV4aXQgPSBiY202M3h4X3VzYmhfcGh5 X2V4aXQsCisJLmluaXQgPSBiY202M3h4X3VzYmhfcGh5X2luaXQsCisJLnBvd2VyX29mZiA9IGJj bTYzeHhfdXNiaF9waHlfcG93ZXJfb2ZmLAorCS5wb3dlcl9vbiA9IGJjbTYzeHhfdXNiaF9waHlf cG93ZXJfb24sCisJLm93bmVyID0gVEhJU19NT0RVTEUsCit9OworCitzdGF0aWMgaW50IF9faW5p dCBiY202M3h4X3VzYmhfcGh5X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7 CisJc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsKKwlzdHJ1Y3QgYmNtNjN4eF91c2Jo X3BoeQkqdXNiaDsKKwljb25zdCBzdHJ1Y3QgYmNtNjN4eF91c2JoX3BoeV92YXJpYW50ICp2YXJp YW50OworCXN0cnVjdCByZXNvdXJjZSAqcmVzOworCXN0cnVjdCBwaHkgKnBoeTsKKwlzdHJ1Y3Qg cGh5X3Byb3ZpZGVyICpwaHlfcHJvdmlkZXI7CisKKwl1c2JoID0gZGV2bV9remFsbG9jKGRldiwg c2l6ZW9mKCp1c2JoKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCF1c2JoKQorCQlyZXR1cm4gLUVOT01F TTsKKworCXZhcmlhbnQgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTsKKwlpZiAoIXZhcmlh bnQpCisJCXJldHVybiAtRUlOVkFMOworCXVzYmgtPnZhcmlhbnQgPSB2YXJpYW50OworCisJcmVz ID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0VfTUVNLCAwKTsKKwl1c2Jo LT5iYXNlID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKGRldiwgcmVzKTsKKwlpZiAoSVNfRVJSKHVz YmgtPmJhc2UpKQorCQlyZXR1cm4gUFRSX0VSUih1c2JoLT5iYXNlKTsKKworCXVzYmgtPnJlc2V0 ID0gZGV2bV9yZXNldF9jb250cm9sX2dldChkZXYsIE5VTEwpOworCWlmIChJU19FUlIodXNiaC0+ cmVzZXQpKSB7CisJCWlmIChQVFJfRVJSKHVzYmgtPnJlc2V0KSAhPSAtRVBST0JFX0RFRkVSKQor CQkJZGV2X2VycihkZXYsICJmYWlsZWQgdG8gZ2V0IHJlc2V0XG4iKTsKKwkJcmV0dXJuIFBUUl9F UlIodXNiaC0+cmVzZXQpOworCX0KKworCXVzYmgtPnVzYmhfY2xrID0gZGV2bV9jbGtfZ2V0X29w dGlvbmFsKGRldiwgInVzYmgiKTsKKwlpZiAoSVNfRVJSKHVzYmgtPnVzYmhfY2xrKSkKKwkJcmV0 dXJuIFBUUl9FUlIodXNiaC0+dXNiaF9jbGspOworCisJdXNiaC0+dXNiX3JlZl9jbGsgPSBkZXZt X2Nsa19nZXRfb3B0aW9uYWwoZGV2LCAidXNiX3JlZiIpOworCWlmIChJU19FUlIodXNiaC0+dXNi X3JlZl9jbGspKQorCQlyZXR1cm4gUFRSX0VSUih1c2JoLT51c2JfcmVmX2Nsayk7CisKKwlwaHkg PSBkZXZtX3BoeV9jcmVhdGUoZGV2LCBOVUxMLCAmYmNtNjN4eF91c2JoX3BoeV9vcHMpOworCWlm IChJU19FUlIocGh5KSkgeworCQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byBjcmVhdGUgUEhZXG4i KTsKKwkJcmV0dXJuIFBUUl9FUlIocGh5KTsKKwl9CisKKwlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShw ZGV2LCB1c2JoKTsKKwlwaHlfc2V0X2RydmRhdGEocGh5LCB1c2JoKTsKKworCXBoeV9wcm92aWRl ciA9IGRldm1fb2ZfcGh5X3Byb3ZpZGVyX3JlZ2lzdGVyKGRldiwgb2ZfcGh5X3NpbXBsZV94bGF0 ZSk7CisJaWYgKElTX0VSUihwaHlfcHJvdmlkZXIpKSB7CisJCWRldl9lcnIoZGV2LCAiZmFpbGVk IHRvIHJlZ2lzdGVyIFBIWSBwcm92aWRlclxuIik7CisJCXJldHVybiBQVFJfRVJSKHBoeV9wcm92 aWRlcik7CisJfQorCisJZGV2X2luZm8oZGV2LCAiUmVnaXN0ZXJlZCBCQ002M3h4IFVTQiBQSFkg ZHJpdmVyXG4iKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2Rl dmljZV9pZCBiY202M3h4X3VzYmhfcGh5X2lkc1tdIF9faW5pdGNvbnN0ID0geworCXsgLmNvbXBh dGlibGUgPSAiYnJjbSxiY202MzE4LXVzYmgtcGh5IiwgLmRhdGEgPSAmdXNiaF9iY202MzE4IH0s CisJeyAuY29tcGF0aWJsZSA9ICJicmNtLGJjbTYzMjgtdXNiaC1waHkiLCAuZGF0YSA9ICZ1c2Jo X2JjbTYzMjggfSwKKwl7IC5jb21wYXRpYmxlID0gImJyY20sYmNtNjM1OC11c2JoLXBoeSIsIC5k YXRhID0gJnVzYmhfYmNtNjM1OCB9LAorCXsgLmNvbXBhdGlibGUgPSAiYnJjbSxiY202MzYyLXVz YmgtcGh5IiwgLmRhdGEgPSAmdXNiaF9iY202MzY4IH0sCisJeyAuY29tcGF0aWJsZSA9ICJicmNt LGJjbTYzNjgtdXNiaC1waHkiLCAuZGF0YSA9ICZ1c2JoX2JjbTYzNjggfSwKKwl7IC5jb21wYXRp YmxlID0gImJyY20sYmNtNjMyNjgtdXNiaC1waHkiLCAuZGF0YSA9ICZ1c2JoX2JjbTYzMjY4IH0s CisJeyAvKiBzZW50aW5lbCAqLyB9Cit9OworTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgYmNtNjN4 eF91c2JoX3BoeV9pZHMpOworCitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBiY202M3h4 X3VzYmhfcGh5X2RyaXZlciBfX3JlZmRhdGEgPSB7CisJLmRyaXZlcgk9IHsKKwkJLm5hbWUgPSAi YmNtNjN4eC11c2JoLXBoeSIsCisJCS5vZl9tYXRjaF90YWJsZSA9IGJjbTYzeHhfdXNiaF9waHlf aWRzLAorCX0sCisJLnByb2JlCT0gYmNtNjN4eF91c2JoX3BoeV9wcm9iZSwKK307Cittb2R1bGVf cGxhdGZvcm1fZHJpdmVyKGJjbTYzeHhfdXNiaF9waHlfZHJpdmVyKTsKKworTU9EVUxFX0RFU0NS SVBUSU9OKCJCQ002M3h4IFVTQkggUEhZIGRyaXZlciIpOworTU9EVUxFX0FVVEhPUigiw4FsdmFy byBGZXJuw6FuZGV6IFJvamFzIDxub2x0YXJpQGdtYWlsLmNvbT4iKTsKK01PRFVMRV9BVVRIT1Io IlNpbW9uIEFybG90dCA8c2ltb25AZmlyZS5scDAuZXU+Iik7CitNT0RVTEVfTElDRU5TRSgiR1BM Iik7Ci0tIAoyLjI3LjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxp c3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0 aW5mby9saW51eC1hcm0ta2VybmVsCg==