From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B8B3FC433F5 for ; Wed, 13 Oct 2021 14:47:08 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 976CF60E09 for ; Wed, 13 Oct 2021 14:47:08 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237201AbhJMOtK convert rfc822-to-8bit (ORCPT ); Wed, 13 Oct 2021 10:49:10 -0400 Received: from relay8-d.mail.gandi.net ([217.70.183.201]:36873 "EHLO relay8-d.mail.gandi.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230385AbhJMOtJ (ORCPT ); Wed, 13 Oct 2021 10:49:09 -0400 Received: (Authenticated sender: gregory.clement@bootlin.com) by relay8-d.mail.gandi.net (Postfix) with ESMTPSA id B32DB1BF211; Wed, 13 Oct 2021 14:47:03 +0000 (UTC) From: Gregory CLEMENT To: Robert Marko , robh+dt@kernel.org, andrew@lunn.ch, sebastian.hesselbarth@gmail.com, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, pali@kernel.org, kabel@kernel.org Cc: Robert Marko Subject: Re: [PATCH v6] arm64: dts: marvell: add Globalscale MOCHAbin In-Reply-To: <20211008205313.69016-1-robert.marko@sartura.hr> References: <20211008205313.69016-1-robert.marko@sartura.hr> Date: Wed, 13 Oct 2021 16:46:57 +0200 Message-ID: <87fst5dlsu.fsf@BL-laptop> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8BIT Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Robert, > Globalscale MOCHAbin is a Armada 7040 based development board. > > Specifications: > * Armada 7040 Quad core ARMv8 Cortex A-72 @ 1.4GHz > * 2 / 4 / 8 GB of DDR4 DRAM > * 16 GB eMMC > * 4MB SPI-NOR (Bootloader) > * 1x M.2-2280 B-key socket (for SSD expansion, SATA3 only) > * 1x M.2-2250 B-key socket (for modems, USB2.0 and I2C only) > * 1x Mini-PCIe 3.0 (x1, USB2.0 and I2C) > * 1x SATA 7+15 socket (SATA3) > * 1x 16-pin (2×8) MikroBus Connector > * 1x SIM card slot (Connected to the mini-PCIe and both M.2 slots) > * 2x USB3.0 Type-A ports via SMSC USB5434B hub > * Cortex 2x5 JTAG > * microUSB port for UART (PL2303GL/PL2303SA onboard) > * 1x 10G SFP+ > * 1x 1G SFP (Connected to 88E1512 PHY) > * 1x 1G RJ45 with PoE PD (Connected to 88E1512 PHY) > * 4x 1G RJ45 ports via Topaz 88E6141 switch > * RTC with battery holder (SoC provided, requires CR2032 battery) > * 1x 12V DC IN > * 1x Power switch > * 1x 12V fan header (3-pin, power only) > * 1x mini-PCIe LED header (2x0.1" pins) > * 1x M.2-2280 LED header (2x0.1" pins) > * 6x Bootstrap jumpers > * 1x Power LED (Green) > * 3x Tri-color RGB LEDs (Controllable) > * 1x Microchip ATECC608B secure element > > Note that 1G SFP and 1G WAN cannot be used at the same time as they are in > parallel connected to the same PHY. > > Signed-off-by: Robert Marko > Reviewed-by: Andrew Lunn Applied on mvebu/dt64 Thanks, Gregory > --- > Changes in v6: > * Use reset-gpios instead of reset-gpio per the DT binding > * Add the CLKREQ PCIe pinmux > > Changes in v5: > * Change LED labels to use the common "color:name" format instead > > Changes in v4: > * Rename the "u-boot" partition to "firmware" which is more appropriate > as it a concatenation of mv-ddr + TF-A + U-boot > > Changes in v3: > * Use IRQ_TYPE_LEVEL_LOW instead of IRQ_TYPE_EDGE_FALLING as both the > PCA9554 and Topaz switch have an active LOW IRQ signal. > > Changes in v2: > * Use "10gbase-r" instead of "10gbase-kr" > --- > arch/arm64/boot/dts/marvell/Makefile | 1 + > .../boot/dts/marvell/armada-7040-mochabin.dts | 458 ++++++++++++++++++ > 2 files changed, 459 insertions(+) > create mode 100644 arch/arm64/boot/dts/marvell/armada-7040-mochabin.dts > > diff --git a/arch/arm64/boot/dts/marvell/Makefile b/arch/arm64/boot/dts/marvell/Makefile > index 34efe0fb6f37..4d3a2ae9adbd 100644 > --- a/arch/arm64/boot/dts/marvell/Makefile > +++ b/arch/arm64/boot/dts/marvell/Makefile > @@ -9,6 +9,7 @@ dtb-$(CONFIG_ARCH_MVEBU) += armada-3720-espressobin-v7-emmc.dtb > dtb-$(CONFIG_ARCH_MVEBU) += armada-3720-turris-mox.dtb > dtb-$(CONFIG_ARCH_MVEBU) += armada-3720-uDPU.dtb > dtb-$(CONFIG_ARCH_MVEBU) += armada-7040-db.dtb > +dtb-$(CONFIG_ARCH_MVEBU) += armada-7040-mochabin.dtb > dtb-$(CONFIG_ARCH_MVEBU) += armada-8040-clearfog-gt-8k.dtb > dtb-$(CONFIG_ARCH_MVEBU) += armada-8040-db.dtb > dtb-$(CONFIG_ARCH_MVEBU) += armada-8040-mcbin.dtb > diff --git a/arch/arm64/boot/dts/marvell/armada-7040-mochabin.dts b/arch/arm64/boot/dts/marvell/armada-7040-mochabin.dts > new file mode 100644 > index 000000000000..f3b0d57a24a3 > --- /dev/null > +++ b/arch/arm64/boot/dts/marvell/armada-7040-mochabin.dts > @@ -0,0 +1,458 @@ > +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT > +/* > + * Device Tree file for Globalscale MOCHAbin > + * Copyright (C) 2019 Globalscale technologies, Inc. > + * Copyright (C) 2021 Sartura Ltd. > + * > + */ > + > +/dts-v1/; > + > +#include > +#include "armada-7040.dtsi" > + > +/ { > + model = "Globalscale MOCHAbin"; > + compatible = "globalscale,mochabin", "marvell,armada7040", > + "marvell,armada-ap806-quad", "marvell,armada-ap806"; > + > + chosen { > + stdout-path = "serial0:115200n8"; > + }; > + > + aliases { > + ethernet0 = &cp0_eth0; > + ethernet1 = &cp0_eth1; > + ethernet2 = &cp0_eth2; > + ethernet3 = &swport1; > + ethernet4 = &swport2; > + ethernet5 = &swport3; > + ethernet6 = &swport4; > + }; > + > + /* SFP+ 10G */ > + sfp_eth0: sfp-eth0 { > + compatible = "sff,sfp"; > + i2c-bus = <&cp0_i2c1>; > + los-gpio = <&sfp_gpio 3 GPIO_ACTIVE_HIGH>; > + mod-def0-gpio = <&sfp_gpio 2 GPIO_ACTIVE_LOW>; > + tx-disable-gpio = <&sfp_gpio 1 GPIO_ACTIVE_HIGH>; > + tx-fault-gpio = <&sfp_gpio 0 GPIO_ACTIVE_HIGH>; > + }; > + > + /* SFP 1G */ > + sfp_eth2: sfp-eth2 { > + compatible = "sff,sfp"; > + i2c-bus = <&cp0_i2c0>; > + los-gpio = <&sfp_gpio 7 GPIO_ACTIVE_HIGH>; > + mod-def0-gpio = <&sfp_gpio 6 GPIO_ACTIVE_LOW>; > + tx-disable-gpio = <&sfp_gpio 5 GPIO_ACTIVE_HIGH>; > + tx-fault-gpio = <&sfp_gpio 4 GPIO_ACTIVE_HIGH>; > + }; > +}; > + > +/* microUSB UART console */ > +&uart0 { > + status = "okay"; > + > + pinctrl-0 = <&uart0_pins>; > + pinctrl-names = "default"; > +}; > + > +/* eMMC */ > +&ap_sdhci0 { > + status = "okay"; > + > + bus-width = <4>; > + non-removable; > + /delete-property/ marvell,xenon-phy-slow-mode; > + no-1-8-v; > +}; > + > +&cp0_pinctrl { > + cp0_uart0_pins: cp0-uart0-pins { > + marvell,pins = "mpp6", "mpp7"; > + marvell,function = "uart0"; > + }; > + > + cp0_spi0_pins: cp0-spi0-pins { > + marvell,pins = "mpp56", "mpp57", "mpp58", "mpp59"; > + marvell,function = "spi0"; > + }; > + > + cp0_spi1_pins: cp0-spi1-pins { > + marvell,pins = "mpp13", "mpp14", "mpp15", "mpp16"; > + marvell,function = "spi1"; > + }; > + > + cp0_i2c0_pins: cp0-i2c0-pins { > + marvell,pins = "mpp37", "mpp38"; > + marvell,function = "i2c0"; > + }; > + > + cp0_i2c1_pins: cp0-i2c1-pins { > + marvell,pins = "mpp2", "mpp3"; > + marvell,function = "i2c1"; > + }; > + > + pca9554_int_pins: pca9554-int-pins { > + marvell,pins = "mpp27"; > + marvell,function = "gpio"; > + }; > + > + cp0_rgmii1_pins: cp0-rgmii1-pins { > + marvell,pins = "mpp44", "mpp45", "mpp46", "mpp47", "mpp48", "mpp49", > + "mpp50", "mpp51", "mpp52", "mpp53", "mpp54", "mpp55"; > + marvell,function = "ge1"; > + }; > + > + is31_sdb_pins: is31-sdb-pins { > + marvell,pins = "mpp30"; > + marvell,function = "gpio"; > + }; > + > + cp0_pcie_reset_pins: cp0-pcie-reset-pins { > + marvell,pins = "mpp9"; > + marvell,function = "gpio"; > + }; > + > + cp0_pcie_clkreq_pins: cp0-pcie-clkreq-pins { > + marvell,pins = "mpp5"; > + marvell,function = "pcie1"; > + }; > + > + cp0_switch_pins: cp0-switch-pins { > + marvell,pins = "mpp0", "mpp1"; > + marvell,function = "gpio"; > + }; > + > + cp0_phy_pins: cp0-phy-pins { > + marvell,pins = "mpp12"; > + marvell,function = "gpio"; > + }; > +}; > + > +/* mikroBUS UART */ > +&cp0_uart0 { > + status = "okay"; > + > + pinctrl-names = "default"; > + pinctrl-0 = <&cp0_uart0_pins>; > +}; > + > +/* mikroBUS SPI */ > +&cp0_spi0 { > + status = "okay"; > + > + pinctrl-names = "default"; > + pinctrl-0 = <&cp0_spi0_pins>; > +}; > + > +/* SPI-NOR */ > +&cp0_spi1{ > + status = "okay"; > + > + pinctrl-names = "default"; > + pinctrl-0 = <&cp0_spi1_pins>; > + > + spi-flash@0 { > + #address-cells = <1>; > + #size-cells = <1>; > + compatible = "jedec,spi-nor"; > + reg = <0>; > + spi-max-frequency = <20000000>; > + > + partitions { > + compatible = "fixed-partitions"; > + #address-cells = <1>; > + #size-cells = <1>; > + > + partition@0 { > + label = "firmware"; > + reg = <0x0 0x3e0000>; > + read-only; > + }; > + > + partition@3e0000 { > + label = "hw-info"; > + reg = <0x3e0000 0x10000>; > + read-only; > + }; > + > + partition@3f0000 { > + label = "u-boot-env"; > + reg = <0x3f0000 0x10000>; > + }; > + }; > + }; > +}; > + > +/* mikroBUS, 1G SFP and GPIO expander */ > +&cp0_i2c0 { > + status = "okay"; > + > + pinctrl-names = "default"; > + pinctrl-0 = <&cp0_i2c0_pins>; > + clock-frequency = <100000>; > + > + sfp_gpio: pca9554@39 { > + compatible = "nxp,pca9554"; > + pinctrl-names = "default"; > + pinctrl-0 = <&pca9554_int_pins>; > + reg = <0x39>; > + > + interrupt-parent = <&cp0_gpio1>; > + interrupts = <27 IRQ_TYPE_LEVEL_LOW>; > + interrupt-controller; > + #interrupt-cells = <2>; > + > + gpio-controller; > + #gpio-cells = <2>; > + > + /* > + * IO0_0: SFP+_TX_FAULT > + * IO0_1: SFP+_TX_DISABLE > + * IO0_2: SFP+_PRSNT > + * IO0_3: SFP+_LOSS > + * IO0_4: SFP_TX_FAULT > + * IO0_5: SFP_TX_DISABLE > + * IO0_6: SFP_PRSNT > + * IO0_7: SFP_LOSS > + */ > + }; > +}; > + > +/* IS31FL3199, mini-PCIe and 10G SFP+ */ > +&cp0_i2c1 { > + status = "okay"; > + > + pinctrl-names = "default"; > + pinctrl-0 = <&cp0_i2c1_pins>; > + clock-frequency = <100000>; > + > + leds@64 { > + compatible = "issi,is31fl3199"; > + #address-cells = <1>; > + #size-cells = <0>; > + pinctrl-names = "default"; > + pinctrl-0 = <&is31_sdb_pins>; > + shutdown-gpios = <&cp0_gpio1 30 GPIO_ACTIVE_HIGH>; > + reg = <0x64>; > + > + led1_red: led@1 { > + label = "red:led1"; > + reg = <1>; > + led-max-microamp = <20000>; > + }; > + > + led1_green: led@2 { > + label = "green:led1"; > + reg = <2>; > + }; > + > + led1_blue: led@3 { > + label = "blue:led1"; > + reg = <3>; > + }; > + > + led2_red: led@4 { > + label = "red:led2"; > + reg = <4>; > + }; > + > + led2_green: led@5 { > + label = "green:led2"; > + reg = <5>; > + }; > + > + led2_blue: led@6 { > + label = "blue:led2"; > + reg = <6>; > + }; > + > + led3_red: led@7 { > + label = "red:led3"; > + reg = <7>; > + }; > + > + led3_green: led@8 { > + label = "green:led3"; > + reg = <8>; > + }; > + > + led3_blue: led@9 { > + label = "blue:led3"; > + reg = <9>; > + }; > + }; > +}; > + > +&cp0_mdio { > + status = "okay"; > + > + /* 88E1512 PHY */ > + eth2phy: ethernet-phy@1 { > + reg = <1>; > + sfp = <&sfp_eth2>; > + > + pinctrl-names = "default"; > + pinctrl-0 = <&cp0_phy_pins>; > + reset-gpios = <&cp0_gpio1 12 GPIO_ACTIVE_LOW>; > + }; > + > + /* 88E6141 Topaz switch */ > + switch: switch@3 { > + compatible = "marvell,mv88e6085"; > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <3>; > + > + pinctrl-names = "default"; > + pinctrl-0 = <&cp0_switch_pins>; > + reset-gpios = <&cp0_gpio1 0 GPIO_ACTIVE_LOW>; > + > + interrupt-parent = <&cp0_gpio1>; > + interrupts = <1 IRQ_TYPE_LEVEL_LOW>; > + > + ports { > + #address-cells = <1>; > + #size-cells = <0>; > + > + swport1: port@1 { > + reg = <1>; > + label = "lan0"; > + phy-handle = <&swphy1>; > + }; > + > + swport2: port@2 { > + reg = <2>; > + label = "lan1"; > + phy-handle = <&swphy2>; > + }; > + > + swport3: port@3 { > + reg = <3>; > + label = "lan2"; > + phy-handle = <&swphy3>; > + }; > + > + swport4: port@4 { > + reg = <4>; > + label = "lan3"; > + phy-handle = <&swphy4>; > + }; > + > + port@5 { > + reg = <5>; > + label = "cpu"; > + ethernet = <&cp0_eth1>; > + phy-mode = "2500base-x"; > + managed = "in-band-status"; > + }; > + }; > + > + mdio { > + #address-cells = <1>; > + #size-cells = <0>; > + > + swphy1: swphy1@17 { > + reg = <17>; > + }; > + > + swphy2: swphy2@18 { > + reg = <18>; > + }; > + > + swphy3: swphy3@19 { > + reg = <19>; > + }; > + > + swphy4: swphy4@20 { > + reg = <20>; > + }; > + }; > + }; > +}; > + > +&cp0_ethernet { > + status = "okay"; > +}; > + > +/* 10G SFP+ */ > +&cp0_eth0 { > + status = "okay"; > + > + phy-mode = "10gbase-r"; > + phys = <&cp0_comphy4 0>; > + managed = "in-band-status"; > + sfp = <&sfp_eth0>; > +}; > + > +/* Topaz switch uplink */ > +&cp0_eth1 { > + status = "okay"; > + > + phy-mode = "2500base-x"; > + phys = <&cp0_comphy0 1>; > + > + fixed-link { > + speed = <2500>; > + full-duplex; > + }; > +}; > + > +/* 1G SFP or 1G RJ45 */ > +&cp0_eth2 { > + status = "okay"; > + > + pinctrl-names = "default"; > + pinctrl-0 = <&cp0_rgmii1_pins>; > + > + phy = <ð2phy>; > + phy-mode = "rgmii-id"; > +}; > + > +&cp0_utmi { > + status = "okay"; > +}; > + > +/* SMSC USB5434B hub */ > +&cp0_usb3_0 { > + status = "okay"; > + > + phys = <&cp0_comphy1 0>, <&cp0_utmi0>; > + phy-names = "cp0-usb3h0-comphy", "utmi"; > +}; > + > +/* miniPCI-E USB */ > +&cp0_usb3_1 { > + status = "okay"; > +}; > + > +&cp0_sata0 { > + status = "okay"; > + > + /* 7 + 12 SATA connector (J24) */ > + sata-port@0 { > + phys = <&cp0_comphy2 0>; > + phy-names = "cp0-sata0-0-phy"; > + }; > + > + /* M.2-2250 B-key (J39) */ > + sata-port@1 { > + phys = <&cp0_comphy3 1>; > + phy-names = "cp0-sata0-1-phy"; > + }; > +}; > + > +/* miniPCI-E (J5) */ > +&cp0_pcie2 { > + status = "okay"; > + > + pinctrl-names = "default", "clkreq"; > + pinctrl-0 = <&cp0_pcie_reset_pins>; > + pinctrl-1 = <&cp0_pcie_clkreq_pins>; > + phys = <&cp0_comphy5 2>; > + phy-names = "cp0-pcie2-x1-phy"; > + reset-gpios = <&cp0_gpio1 9 GPIO_ACTIVE_LOW>; > +}; > -- > 2.33.0 > -- Gregory Clement, Bootlin Embedded Linux and Kernel engineering http://bootlin.com From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B5F9EC433F5 for ; Wed, 13 Oct 2021 14:48:29 +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 8142261100 for ; Wed, 13 Oct 2021 14:48:29 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 8142261100 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=bootlin.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-ID:Date:References :In-Reply-To:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=XtTOcEQq2yxbX7+A8/iTKGCqAZD2/nq/r+ewqjUDpkk=; b=HOpg3ckIzkAMof VK9n7c+Hjb/VVo+rHmn7N2KSU4SndCqxWF1t89L2xSlEYTsoVk5Om+nUbm6mp5JT76JCVfVjAxDGa 8Nm+cmfjUx+U+9VX2kCcQSaN2WDIiybct8+Xu8vdjXqUnZWFOpOUQrs4IF/eRykAB0+M6o1/DDO99 zI1sf514+UcaHtu5ffFRV/kWBVOz+n6+HLZcxJfU+Rw9PJRqY2miFdIAbr4dAMHGn8TzZblEiQ+pK r1BQHjdS9vsi9u2SJb/FUlDB18Q2vCQNqSWHNmKFdyzyIritNOpxuyQCh+yLiyzXVgkOR1ccOmyXr BV8d8oC+vqrygYUeksFQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mafXE-00HE4O-8M; Wed, 13 Oct 2021 14:47:12 +0000 Received: from relay8-d.mail.gandi.net ([217.70.183.201]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mafX8-00HE2P-8Y for linux-arm-kernel@lists.infradead.org; Wed, 13 Oct 2021 14:47:08 +0000 Received: (Authenticated sender: gregory.clement@bootlin.com) by relay8-d.mail.gandi.net (Postfix) with ESMTPSA id B32DB1BF211; Wed, 13 Oct 2021 14:47:03 +0000 (UTC) From: Gregory CLEMENT To: Robert Marko , robh+dt@kernel.org, andrew@lunn.ch, sebastian.hesselbarth@gmail.com, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, pali@kernel.org, kabel@kernel.org Cc: Robert Marko Subject: Re: [PATCH v6] arm64: dts: marvell: add Globalscale MOCHAbin In-Reply-To: <20211008205313.69016-1-robert.marko@sartura.hr> References: <20211008205313.69016-1-robert.marko@sartura.hr> Date: Wed, 13 Oct 2021 16:46:57 +0200 Message-ID: <87fst5dlsu.fsf@BL-laptop> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20211013_074706_621170_721EE776 X-CRM114-Status: GOOD ( 19.74 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , 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 SGkgUm9iZXJ0LAoKPiBHbG9iYWxzY2FsZSBNT0NIQWJpbiBpcyBhIEFybWFkYSA3MDQwIGJhc2Vk IGRldmVsb3BtZW50IGJvYXJkLgo+Cj4gU3BlY2lmaWNhdGlvbnM6Cj4gKiBBcm1hZGEgNzA0MCBR dWFkIGNvcmUgQVJNdjggQ29ydGV4IEEtNzIgQCAxLjRHSHoKPiAqIDIgLyA0IC8gOCBHQiBvZiBE RFI0IERSQU0KPiAqIDE2IEdCIGVNTUMKPiAqIDRNQiBTUEktTk9SIChCb290bG9hZGVyKQo+ICog MXggTS4yLTIyODAgQi1rZXkgc29ja2V0IChmb3IgU1NEIGV4cGFuc2lvbiwgU0FUQTMgb25seSkK PiAqIDF4IE0uMi0yMjUwIEIta2V5IHNvY2tldCAoZm9yIG1vZGVtcywgVVNCMi4wIGFuZCBJMkMg b25seSkKPiAqIDF4IE1pbmktUENJZSAzLjAgKHgxLCBVU0IyLjAgYW5kIEkyQykKPiAqIDF4IFNB VEEgNysxNSBzb2NrZXQgKFNBVEEzKQo+ICogMXggMTYtcGluICgyw5c4KSBNaWtyb0J1cyBDb25u ZWN0b3IKPiAqIDF4IFNJTSBjYXJkIHNsb3QgKENvbm5lY3RlZCB0byB0aGUgbWluaS1QQ0llIGFu ZCBib3RoIE0uMiBzbG90cykKPiAqIDJ4IFVTQjMuMCBUeXBlLUEgcG9ydHMgdmlhIFNNU0MgVVNC NTQzNEIgaHViCj4gKiBDb3J0ZXggMng1IEpUQUcKPiAqIG1pY3JvVVNCIHBvcnQgZm9yIFVBUlQg KFBMMjMwM0dML1BMMjMwM1NBIG9uYm9hcmQpCj4gKiAxeCAxMEcgU0ZQKwo+ICogMXggMUcgU0ZQ IChDb25uZWN0ZWQgdG8gODhFMTUxMiBQSFkpCj4gKiAxeCAxRyBSSjQ1IHdpdGggUG9FIFBEIChD b25uZWN0ZWQgdG8gODhFMTUxMiBQSFkpCj4gKiA0eCAxRyBSSjQ1IHBvcnRzIHZpYSBUb3BheiA4 OEU2MTQxIHN3aXRjaAo+ICogUlRDIHdpdGggYmF0dGVyeSBob2xkZXIgKFNvQyBwcm92aWRlZCwg cmVxdWlyZXMgQ1IyMDMyIGJhdHRlcnkpCj4gKiAxeCAxMlYgREMgSU4KPiAqIDF4IFBvd2VyIHN3 aXRjaAo+ICogMXggMTJWIGZhbiBoZWFkZXIgKDMtcGluLCBwb3dlciBvbmx5KQo+ICogMXggbWlu aS1QQ0llIExFRCBoZWFkZXIgKDJ4MC4xIiBwaW5zKQo+ICogMXggTS4yLTIyODAgTEVEIGhlYWRl ciAoMngwLjEiIHBpbnMpCj4gKiA2eCBCb290c3RyYXAganVtcGVycwo+ICogMXggUG93ZXIgTEVE IChHcmVlbikKPiAqIDN4IFRyaS1jb2xvciBSR0IgTEVEcyAoQ29udHJvbGxhYmxlKQo+ICogMXgg TWljcm9jaGlwIEFURUNDNjA4QiBzZWN1cmUgZWxlbWVudAo+Cj4gTm90ZSB0aGF0IDFHIFNGUCBh bmQgMUcgV0FOIGNhbm5vdCBiZSB1c2VkIGF0IHRoZSBzYW1lIHRpbWUgYXMgdGhleSBhcmUgaW4K PiBwYXJhbGxlbCBjb25uZWN0ZWQgdG8gdGhlIHNhbWUgUEhZLgo+Cj4gU2lnbmVkLW9mZi1ieTog Um9iZXJ0IE1hcmtvIDxyb2JlcnQubWFya29Ac2FydHVyYS5ocj4KPiBSZXZpZXdlZC1ieTogQW5k cmV3IEx1bm4gPGFuZHJld0BsdW5uLmNoPgoKQXBwbGllZCBvbiBtdmVidS9kdDY0CgpUaGFua3Ms CgpHcmVnb3J5Cgo+IC0tLQo+IENoYW5nZXMgaW4gdjY6Cj4gKiBVc2UgcmVzZXQtZ3Bpb3MgaW5z dGVhZCBvZiByZXNldC1ncGlvIHBlciB0aGUgRFQgYmluZGluZwo+ICogQWRkIHRoZSBDTEtSRVEg UENJZSBwaW5tdXgKPgo+IENoYW5nZXMgaW4gdjU6Cj4gKiBDaGFuZ2UgTEVEIGxhYmVscyB0byB1 c2UgdGhlIGNvbW1vbiAiY29sb3I6bmFtZSIgZm9ybWF0IGluc3RlYWQKPgo+IENoYW5nZXMgaW4g djQ6Cj4gKiBSZW5hbWUgdGhlICJ1LWJvb3QiIHBhcnRpdGlvbiB0byAiZmlybXdhcmUiIHdoaWNo IGlzIG1vcmUgYXBwcm9wcmlhdGUKPiBhcyBpdCBhIGNvbmNhdGVuYXRpb24gb2YgbXYtZGRyICsg VEYtQSArIFUtYm9vdAo+Cj4gQ2hhbmdlcyBpbiB2MzoKPiAqIFVzZSBJUlFfVFlQRV9MRVZFTF9M T1cgaW5zdGVhZCBvZiBJUlFfVFlQRV9FREdFX0ZBTExJTkcgYXMgYm90aCB0aGUKPiBQQ0E5NTU0 IGFuZCBUb3BheiBzd2l0Y2ggaGF2ZSBhbiBhY3RpdmUgTE9XIElSUSBzaWduYWwuCj4KPiBDaGFu Z2VzIGluIHYyOgo+ICogVXNlICIxMGdiYXNlLXIiIGluc3RlYWQgb2YgIjEwZ2Jhc2Uta3IiCj4g LS0tCj4gIGFyY2gvYXJtNjQvYm9vdC9kdHMvbWFydmVsbC9NYWtlZmlsZSAgICAgICAgICB8ICAg MSArCj4gIC4uLi9ib290L2R0cy9tYXJ2ZWxsL2FybWFkYS03MDQwLW1vY2hhYmluLmR0cyB8IDQ1 OCArKysrKysrKysrKysrKysrKysKPiAgMiBmaWxlcyBjaGFuZ2VkLCA0NTkgaW5zZXJ0aW9ucygr KQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02NC9ib290L2R0cy9tYXJ2ZWxsL2FybWFk YS03MDQwLW1vY2hhYmluLmR0cwo+Cj4gZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvYm9vdC9kdHMv bWFydmVsbC9NYWtlZmlsZSBiL2FyY2gvYXJtNjQvYm9vdC9kdHMvbWFydmVsbC9NYWtlZmlsZQo+ IGluZGV4IDM0ZWZlMGZiNmYzNy4uNGQzYTJhZTlhZGJkIDEwMDY0NAo+IC0tLSBhL2FyY2gvYXJt NjQvYm9vdC9kdHMvbWFydmVsbC9NYWtlZmlsZQo+ICsrKyBiL2FyY2gvYXJtNjQvYm9vdC9kdHMv bWFydmVsbC9NYWtlZmlsZQo+IEBAIC05LDYgKzksNyBAQCBkdGItJChDT05GSUdfQVJDSF9NVkVC VSkgKz0gYXJtYWRhLTM3MjAtZXNwcmVzc29iaW4tdjctZW1tYy5kdGIKPiAgZHRiLSQoQ09ORklH X0FSQ0hfTVZFQlUpICs9IGFybWFkYS0zNzIwLXR1cnJpcy1tb3guZHRiCj4gIGR0Yi0kKENPTkZJ R19BUkNIX01WRUJVKSArPSBhcm1hZGEtMzcyMC11RFBVLmR0Ygo+ICBkdGItJChDT05GSUdfQVJD SF9NVkVCVSkgKz0gYXJtYWRhLTcwNDAtZGIuZHRiCj4gK2R0Yi0kKENPTkZJR19BUkNIX01WRUJV KSArPSBhcm1hZGEtNzA0MC1tb2NoYWJpbi5kdGIKPiAgZHRiLSQoQ09ORklHX0FSQ0hfTVZFQlUp ICs9IGFybWFkYS04MDQwLWNsZWFyZm9nLWd0LThrLmR0Ygo+ICBkdGItJChDT05GSUdfQVJDSF9N VkVCVSkgKz0gYXJtYWRhLTgwNDAtZGIuZHRiCj4gIGR0Yi0kKENPTkZJR19BUkNIX01WRUJVKSAr PSBhcm1hZGEtODA0MC1tY2Jpbi5kdGIKPiBkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9ib290L2R0 cy9tYXJ2ZWxsL2FybWFkYS03MDQwLW1vY2hhYmluLmR0cyBiL2FyY2gvYXJtNjQvYm9vdC9kdHMv bWFydmVsbC9hcm1hZGEtNzA0MC1tb2NoYWJpbi5kdHMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ IGluZGV4IDAwMDAwMDAwMDAwMC4uZjNiMGQ1N2EyNGEzCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBi L2FyY2gvYXJtNjQvYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtNzA0MC1tb2NoYWJpbi5kdHMKPiBA QCAtMCwwICsxLDQ1OCBAQAo+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1v ci1sYXRlciBPUiBNSVQKPiArLyoKPiArICogRGV2aWNlIFRyZWUgZmlsZSBmb3IgR2xvYmFsc2Nh bGUgTU9DSEFiaW4KPiArICogQ29weXJpZ2h0IChDKSAyMDE5IEdsb2JhbHNjYWxlIHRlY2hub2xv Z2llcywgSW5jLgo+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMjEgU2FydHVyYSBMdGQuCj4gKyAqCj4g KyAqLwo+ICsKPiArL2R0cy12MS87Cj4gKwo+ICsjaW5jbHVkZSA8ZHQtYmluZGluZ3MvZ3Bpby9n cGlvLmg+Cj4gKyNpbmNsdWRlICJhcm1hZGEtNzA0MC5kdHNpIgo+ICsKPiArLyB7Cj4gKwltb2Rl bCA9ICJHbG9iYWxzY2FsZSBNT0NIQWJpbiI7Cj4gKwljb21wYXRpYmxlID0gImdsb2JhbHNjYWxl LG1vY2hhYmluIiwgIm1hcnZlbGwsYXJtYWRhNzA0MCIsCj4gKwkJICAgICAibWFydmVsbCxhcm1h ZGEtYXA4MDYtcXVhZCIsICJtYXJ2ZWxsLGFybWFkYS1hcDgwNiI7Cj4gKwo+ICsJY2hvc2VuIHsK PiArCQlzdGRvdXQtcGF0aCA9ICJzZXJpYWwwOjExNTIwMG44IjsKPiArCX07Cj4gKwo+ICsJYWxp YXNlcyB7Cj4gKwkJZXRoZXJuZXQwID0gJmNwMF9ldGgwOwo+ICsJCWV0aGVybmV0MSA9ICZjcDBf ZXRoMTsKPiArCQlldGhlcm5ldDIgPSAmY3AwX2V0aDI7Cj4gKwkJZXRoZXJuZXQzID0gJnN3cG9y dDE7Cj4gKwkJZXRoZXJuZXQ0ID0gJnN3cG9ydDI7Cj4gKwkJZXRoZXJuZXQ1ID0gJnN3cG9ydDM7 Cj4gKwkJZXRoZXJuZXQ2ID0gJnN3cG9ydDQ7Cj4gKwl9Owo+ICsKPiArCS8qIFNGUCsgMTBHICov Cj4gKwlzZnBfZXRoMDogc2ZwLWV0aDAgewo+ICsJCWNvbXBhdGlibGUgPSAic2ZmLHNmcCI7Cj4g KwkJaTJjLWJ1cyA9IDwmY3AwX2kyYzE+Owo+ICsJCWxvcy1ncGlvID0gPCZzZnBfZ3BpbyAzIEdQ SU9fQUNUSVZFX0hJR0g+Owo+ICsJCW1vZC1kZWYwLWdwaW8gPSA8JnNmcF9ncGlvIDIgR1BJT19B Q1RJVkVfTE9XPjsKPiArCQl0eC1kaXNhYmxlLWdwaW8gPSA8JnNmcF9ncGlvIDEgR1BJT19BQ1RJ VkVfSElHSD47Cj4gKwkJdHgtZmF1bHQtZ3BpbyAgPSA8JnNmcF9ncGlvIDAgR1BJT19BQ1RJVkVf SElHSD47Cj4gKwl9Owo+ICsKPiArCS8qIFNGUCAxRyAqLwo+ICsJc2ZwX2V0aDI6IHNmcC1ldGgy IHsKPiArCQljb21wYXRpYmxlID0gInNmZixzZnAiOwo+ICsJCWkyYy1idXMgPSA8JmNwMF9pMmMw PjsKPiArCQlsb3MtZ3BpbyA9IDwmc2ZwX2dwaW8gNyBHUElPX0FDVElWRV9ISUdIPjsKPiArCQlt b2QtZGVmMC1ncGlvID0gPCZzZnBfZ3BpbyA2IEdQSU9fQUNUSVZFX0xPVz47Cj4gKwkJdHgtZGlz YWJsZS1ncGlvID0gPCZzZnBfZ3BpbyA1IEdQSU9fQUNUSVZFX0hJR0g+Owo+ICsJCXR4LWZhdWx0 LWdwaW8gID0gPCZzZnBfZ3BpbyA0IEdQSU9fQUNUSVZFX0hJR0g+Owo+ICsJfTsKPiArfTsKPiAr Cj4gKy8qIG1pY3JvVVNCIFVBUlQgY29uc29sZSAqLwo+ICsmdWFydDAgewo+ICsJc3RhdHVzID0g Im9rYXkiOwo+ICsKPiArCXBpbmN0cmwtMCA9IDwmdWFydDBfcGlucz47Cj4gKwlwaW5jdHJsLW5h bWVzID0gImRlZmF1bHQiOwo+ICt9Owo+ICsKPiArLyogZU1NQyAqLwo+ICsmYXBfc2RoY2kwIHsK PiArCXN0YXR1cyA9ICJva2F5IjsKPiArCj4gKwlidXMtd2lkdGggPSA8ND47Cj4gKwlub24tcmVt b3ZhYmxlOwo+ICsJL2RlbGV0ZS1wcm9wZXJ0eS8gbWFydmVsbCx4ZW5vbi1waHktc2xvdy1tb2Rl Owo+ICsJbm8tMS04LXY7Cj4gK307Cj4gKwo+ICsmY3AwX3BpbmN0cmwgewo+ICsJY3AwX3VhcnQw X3BpbnM6IGNwMC11YXJ0MC1waW5zIHsKPiArCQltYXJ2ZWxsLHBpbnMgPSAibXBwNiIsICJtcHA3 IjsKPiArCQltYXJ2ZWxsLGZ1bmN0aW9uID0gInVhcnQwIjsKPiArCX07Cj4gKwo+ICsJY3AwX3Nw aTBfcGluczogY3AwLXNwaTAtcGlucyB7Cj4gKwkJbWFydmVsbCxwaW5zID0gIm1wcDU2IiwgIm1w cDU3IiwgIm1wcDU4IiwgIm1wcDU5IjsKPiArCQltYXJ2ZWxsLGZ1bmN0aW9uID0gInNwaTAiOwo+ ICsJfTsKPiArCj4gKwljcDBfc3BpMV9waW5zOiBjcDAtc3BpMS1waW5zIHsKPiArCQltYXJ2ZWxs LHBpbnMgPSAibXBwMTMiLCAibXBwMTQiLCAibXBwMTUiLCAibXBwMTYiOwo+ICsJCW1hcnZlbGws ZnVuY3Rpb24gPSAic3BpMSI7Cj4gKwl9Owo+ICsKPiArCWNwMF9pMmMwX3BpbnM6IGNwMC1pMmMw LXBpbnMgewo+ICsJCW1hcnZlbGwscGlucyA9ICJtcHAzNyIsICJtcHAzOCI7Cj4gKwkJbWFydmVs bCxmdW5jdGlvbiA9ICJpMmMwIjsKPiArCX07Cj4gKwo+ICsJY3AwX2kyYzFfcGluczogY3AwLWky YzEtcGlucyB7Cj4gKwkJbWFydmVsbCxwaW5zID0gIm1wcDIiLCAibXBwMyI7Cj4gKwkJbWFydmVs bCxmdW5jdGlvbiA9ICJpMmMxIjsKPiArCX07Cj4gKwo+ICsJcGNhOTU1NF9pbnRfcGluczogcGNh OTU1NC1pbnQtcGlucyB7Cj4gKwkJbWFydmVsbCxwaW5zID0gIm1wcDI3IjsKPiArCQltYXJ2ZWxs LGZ1bmN0aW9uID0gImdwaW8iOwo+ICsJfTsKPiArCj4gKwljcDBfcmdtaWkxX3BpbnM6IGNwMC1y Z21paTEtcGlucyB7Cj4gKwkJbWFydmVsbCxwaW5zID0gIm1wcDQ0IiwgIm1wcDQ1IiwgIm1wcDQ2 IiwgIm1wcDQ3IiwgIm1wcDQ4IiwgIm1wcDQ5IiwKPiArCQkJICAgICAgICJtcHA1MCIsICJtcHA1 MSIsICJtcHA1MiIsICJtcHA1MyIsICJtcHA1NCIsICJtcHA1NSI7Cj4gKwkJbWFydmVsbCxmdW5j dGlvbiA9ICJnZTEiOwo+ICsJfTsKPiArCj4gKwlpczMxX3NkYl9waW5zOiBpczMxLXNkYi1waW5z IHsKPiArCQltYXJ2ZWxsLHBpbnMgPSAibXBwMzAiOwo+ICsJCW1hcnZlbGwsZnVuY3Rpb24gPSAi Z3BpbyI7Cj4gKwl9Owo+ICsKPiArCWNwMF9wY2llX3Jlc2V0X3BpbnM6IGNwMC1wY2llLXJlc2V0 LXBpbnMgewo+ICsJCW1hcnZlbGwscGlucyA9ICJtcHA5IjsKPiArCQltYXJ2ZWxsLGZ1bmN0aW9u ID0gImdwaW8iOwo+ICsJfTsKPiArCj4gKwljcDBfcGNpZV9jbGtyZXFfcGluczogY3AwLXBjaWUt Y2xrcmVxLXBpbnMgewo+ICsJCW1hcnZlbGwscGlucyA9ICJtcHA1IjsKPiArCQltYXJ2ZWxsLGZ1 bmN0aW9uID0gInBjaWUxIjsKPiArCX07Cj4gKwo+ICsJY3AwX3N3aXRjaF9waW5zOiBjcDAtc3dp dGNoLXBpbnMgewo+ICsJCW1hcnZlbGwscGlucyA9ICJtcHAwIiwgIm1wcDEiOwo+ICsJCW1hcnZl bGwsZnVuY3Rpb24gPSAiZ3BpbyI7Cj4gKwl9Owo+ICsKPiArCWNwMF9waHlfcGluczogY3AwLXBo eS1waW5zIHsKPiArCQltYXJ2ZWxsLHBpbnMgPSAibXBwMTIiOwo+ICsJCW1hcnZlbGwsZnVuY3Rp b24gPSAiZ3BpbyI7Cj4gKwl9Owo+ICt9Owo+ICsKPiArLyogbWlrcm9CVVMgVUFSVCAqLwo+ICsm Y3AwX3VhcnQwIHsKPiArCXN0YXR1cyA9ICJva2F5IjsKPiArCj4gKwlwaW5jdHJsLW5hbWVzID0g ImRlZmF1bHQiOwo+ICsJcGluY3RybC0wID0gPCZjcDBfdWFydDBfcGlucz47Cj4gK307Cj4gKwo+ ICsvKiBtaWtyb0JVUyBTUEkgKi8KPiArJmNwMF9zcGkwIHsKPiArCXN0YXR1cyA9ICJva2F5IjsK PiArCj4gKwlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOwo+ICsJcGluY3RybC0wID0gPCZjcDBf c3BpMF9waW5zPjsKPiArfTsKPiArCj4gKy8qIFNQSS1OT1IgKi8KPiArJmNwMF9zcGkxewo+ICsJ c3RhdHVzID0gIm9rYXkiOwo+ICsKPiArCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7Cj4gKwlw aW5jdHJsLTAgPSA8JmNwMF9zcGkxX3BpbnM+Owo+ICsKPiArCXNwaS1mbGFzaEAwIHsKPiArCQkj YWRkcmVzcy1jZWxscyA9IDwxPjsKPiArCQkjc2l6ZS1jZWxscyA9IDwxPjsKPiArCQljb21wYXRp YmxlID0gImplZGVjLHNwaS1ub3IiOwo+ICsJCXJlZyA9IDwwPjsKPiArCQlzcGktbWF4LWZyZXF1 ZW5jeSA9IDwyMDAwMDAwMD47Cj4gKwo+ICsJCXBhcnRpdGlvbnMgewo+ICsJCQljb21wYXRpYmxl ID0gImZpeGVkLXBhcnRpdGlvbnMiOwo+ICsJCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKPiArCQkJ I3NpemUtY2VsbHMgPSA8MT47Cj4gKwo+ICsJCQlwYXJ0aXRpb25AMCB7Cj4gKwkJCQlsYWJlbCA9 ICJmaXJtd2FyZSI7Cj4gKwkJCQlyZWcgPSA8MHgwIDB4M2UwMDAwPjsKPiArCQkJCXJlYWQtb25s eTsKPiArCQkJfTsKPiArCj4gKwkJCXBhcnRpdGlvbkAzZTAwMDAgewo+ICsJCQkJbGFiZWwgPSAi aHctaW5mbyI7Cj4gKwkJCQlyZWcgPSA8MHgzZTAwMDAgMHgxMDAwMD47Cj4gKwkJCQlyZWFkLW9u bHk7Cj4gKwkJCX07Cj4gKwo+ICsJCQlwYXJ0aXRpb25AM2YwMDAwIHsKPiArCQkJCWxhYmVsID0g InUtYm9vdC1lbnYiOwo+ICsJCQkJcmVnID0gPDB4M2YwMDAwIDB4MTAwMDA+Owo+ICsJCQl9Owo+ ICsJCX07Cj4gKwl9Owo+ICt9Owo+ICsKPiArLyogbWlrcm9CVVMsIDFHIFNGUCBhbmQgR1BJTyBl eHBhbmRlciAqLwo+ICsmY3AwX2kyYzAgewo+ICsJc3RhdHVzID0gIm9rYXkiOwo+ICsKPiArCXBp bmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7Cj4gKwlwaW5jdHJsLTAgPSA8JmNwMF9pMmMwX3BpbnM+ Owo+ICsJY2xvY2stZnJlcXVlbmN5ID0gPDEwMDAwMD47Cj4gKwo+ICsJc2ZwX2dwaW86IHBjYTk1 NTRAMzkgewo+ICsJCWNvbXBhdGlibGUgPSAibnhwLHBjYTk1NTQiOwo+ICsJCXBpbmN0cmwtbmFt ZXMgPSAiZGVmYXVsdCI7Cj4gKwkJcGluY3RybC0wID0gPCZwY2E5NTU0X2ludF9waW5zPjsKPiAr CQlyZWcgPSA8MHgzOT47Cj4gKwo+ICsJCWludGVycnVwdC1wYXJlbnQgPSA8JmNwMF9ncGlvMT47 Cj4gKwkJaW50ZXJydXB0cyA9IDwyNyBJUlFfVFlQRV9MRVZFTF9MT1c+Owo+ICsJCWludGVycnVw dC1jb250cm9sbGVyOwo+ICsJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8Mj47Cj4gKwo+ICsJCWdwaW8t Y29udHJvbGxlcjsKPiArCQkjZ3Bpby1jZWxscyA9IDwyPjsKPiArCj4gKwkJLyoKPiArCQkgKiBJ TzBfMDogU0ZQK19UWF9GQVVMVAo+ICsJCSAqIElPMF8xOiBTRlArX1RYX0RJU0FCTEUKPiArCQkg KiBJTzBfMjogU0ZQK19QUlNOVAo+ICsJCSAqIElPMF8zOiBTRlArX0xPU1MKPiArCQkgKiBJTzBf NDogU0ZQX1RYX0ZBVUxUCj4gKwkJICogSU8wXzU6IFNGUF9UWF9ESVNBQkxFCj4gKwkJICogSU8w XzY6IFNGUF9QUlNOVAo+ICsJCSAqIElPMF83OiBTRlBfTE9TUwo+ICsJCSAqLwo+ICsJfTsKPiAr fTsKPiArCj4gKy8qIElTMzFGTDMxOTksIG1pbmktUENJZSBhbmQgMTBHIFNGUCsgKi8KPiArJmNw MF9pMmMxIHsKPiArCXN0YXR1cyA9ICJva2F5IjsKPiArCj4gKwlwaW5jdHJsLW5hbWVzID0gImRl ZmF1bHQiOwo+ICsJcGluY3RybC0wID0gPCZjcDBfaTJjMV9waW5zPjsKPiArCWNsb2NrLWZyZXF1 ZW5jeSA9IDwxMDAwMDA+Owo+ICsKPiArCWxlZHNANjQgewo+ICsJCWNvbXBhdGlibGUgPSAiaXNz aSxpczMxZmwzMTk5IjsKPiArCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKPiArCQkjc2l6ZS1jZWxs cyA9IDwwPjsKPiArCQlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOwo+ICsJCXBpbmN0cmwtMCA9 IDwmaXMzMV9zZGJfcGlucz47Cj4gKwkJc2h1dGRvd24tZ3Bpb3MgPSA8JmNwMF9ncGlvMSAzMCBH UElPX0FDVElWRV9ISUdIPjsKPiArCQlyZWcgPSA8MHg2ND47Cj4gKwo+ICsJCWxlZDFfcmVkOiBs ZWRAMSB7Cj4gKwkJCWxhYmVsID0gInJlZDpsZWQxIjsKPiArCQkJcmVnID0gPDE+Owo+ICsJCQls ZWQtbWF4LW1pY3JvYW1wID0gPDIwMDAwPjsKPiArCQl9Owo+ICsKPiArCQlsZWQxX2dyZWVuOiBs ZWRAMiB7Cj4gKwkJCWxhYmVsID0gImdyZWVuOmxlZDEiOwo+ICsJCQlyZWcgPSA8Mj47Cj4gKwkJ fTsKPiArCj4gKwkJbGVkMV9ibHVlOiBsZWRAMyB7Cj4gKwkJCWxhYmVsID0gImJsdWU6bGVkMSI7 Cj4gKwkJCXJlZyA9IDwzPjsKPiArCQl9Owo+ICsKPiArCQlsZWQyX3JlZDogbGVkQDQgewo+ICsJ CQlsYWJlbCA9ICJyZWQ6bGVkMiI7Cj4gKwkJCXJlZyA9IDw0PjsKPiArCQl9Owo+ICsKPiArCQls ZWQyX2dyZWVuOiBsZWRANSB7Cj4gKwkJCWxhYmVsID0gImdyZWVuOmxlZDIiOwo+ICsJCQlyZWcg PSA8NT47Cj4gKwkJfTsKPiArCj4gKwkJbGVkMl9ibHVlOiBsZWRANiB7Cj4gKwkJCWxhYmVsID0g ImJsdWU6bGVkMiI7Cj4gKwkJCXJlZyA9IDw2PjsKPiArCQl9Owo+ICsKPiArCQlsZWQzX3JlZDog bGVkQDcgewo+ICsJCQlsYWJlbCA9ICJyZWQ6bGVkMyI7Cj4gKwkJCXJlZyA9IDw3PjsKPiArCQl9 Owo+ICsKPiArCQlsZWQzX2dyZWVuOiBsZWRAOCB7Cj4gKwkJCWxhYmVsID0gImdyZWVuOmxlZDMi Owo+ICsJCQlyZWcgPSA8OD47Cj4gKwkJfTsKPiArCj4gKwkJbGVkM19ibHVlOiBsZWRAOSB7Cj4g KwkJCWxhYmVsID0gImJsdWU6bGVkMyI7Cj4gKwkJCXJlZyA9IDw5PjsKPiArCQl9Owo+ICsJfTsK PiArfTsKPiArCj4gKyZjcDBfbWRpbyB7Cj4gKwlzdGF0dXMgPSAib2theSI7Cj4gKwo+ICsJLyog ODhFMTUxMiBQSFkgKi8KPiArCWV0aDJwaHk6IGV0aGVybmV0LXBoeUAxIHsKPiArCQlyZWcgPSA8 MT47Cj4gKwkJc2ZwID0gPCZzZnBfZXRoMj47Cj4gKwo+ICsJCXBpbmN0cmwtbmFtZXMgPSAiZGVm YXVsdCI7Cj4gKwkJcGluY3RybC0wID0gPCZjcDBfcGh5X3BpbnM+Owo+ICsJCXJlc2V0LWdwaW9z ID0gPCZjcDBfZ3BpbzEgMTIgR1BJT19BQ1RJVkVfTE9XPjsKPiArCX07Cj4gKwo+ICsJLyogODhF NjE0MSBUb3BheiBzd2l0Y2ggKi8KPiArCXN3aXRjaDogc3dpdGNoQDMgewo+ICsJCWNvbXBhdGli bGUgPSAibWFydmVsbCxtdjg4ZTYwODUiOwo+ICsJCSNhZGRyZXNzLWNlbGxzID0gPDE+Owo+ICsJ CSNzaXplLWNlbGxzID0gPDA+Owo+ICsJCXJlZyA9IDwzPjsKPiArCj4gKwkJcGluY3RybC1uYW1l cyA9ICJkZWZhdWx0IjsKPiArCQlwaW5jdHJsLTAgPSA8JmNwMF9zd2l0Y2hfcGlucz47Cj4gKwkJ cmVzZXQtZ3Bpb3MgPSA8JmNwMF9ncGlvMSAwIEdQSU9fQUNUSVZFX0xPVz47Cj4gKwo+ICsJCWlu dGVycnVwdC1wYXJlbnQgPSA8JmNwMF9ncGlvMT47Cj4gKwkJaW50ZXJydXB0cyA9IDwxIElSUV9U WVBFX0xFVkVMX0xPVz47Cj4gKwo+ICsJCXBvcnRzIHsKPiArCQkJI2FkZHJlc3MtY2VsbHMgPSA8 MT47Cj4gKwkJCSNzaXplLWNlbGxzID0gPDA+Owo+ICsKPiArCQkJc3dwb3J0MTogcG9ydEAxIHsK PiArCQkJCXJlZyA9IDwxPjsKPiArCQkJCWxhYmVsID0gImxhbjAiOwo+ICsJCQkJcGh5LWhhbmRs ZSA9IDwmc3dwaHkxPjsKPiArCQkJfTsKPiArCj4gKwkJCXN3cG9ydDI6IHBvcnRAMiB7Cj4gKwkJ CQlyZWcgPSA8Mj47Cj4gKwkJCQlsYWJlbCA9ICJsYW4xIjsKPiArCQkJCXBoeS1oYW5kbGUgPSA8 JnN3cGh5Mj47Cj4gKwkJCX07Cj4gKwo+ICsJCQlzd3BvcnQzOiBwb3J0QDMgewo+ICsJCQkJcmVn ID0gPDM+Owo+ICsJCQkJbGFiZWwgPSAibGFuMiI7Cj4gKwkJCQlwaHktaGFuZGxlID0gPCZzd3Bo eTM+Owo+ICsJCQl9Owo+ICsKPiArCQkJc3dwb3J0NDogcG9ydEA0IHsKPiArCQkJCXJlZyA9IDw0 PjsKPiArCQkJCWxhYmVsID0gImxhbjMiOwo+ICsJCQkJcGh5LWhhbmRsZSA9IDwmc3dwaHk0PjsK PiArCQkJfTsKPiArCj4gKwkJCXBvcnRANSB7Cj4gKwkJCQlyZWcgPSA8NT47Cj4gKwkJCQlsYWJl bCA9ICJjcHUiOwo+ICsJCQkJZXRoZXJuZXQgPSA8JmNwMF9ldGgxPjsKPiArCQkJCXBoeS1tb2Rl ID0gIjI1MDBiYXNlLXgiOwo+ICsJCQkJbWFuYWdlZCA9ICJpbi1iYW5kLXN0YXR1cyI7Cj4gKwkJ CX07Cj4gKwkJfTsKPiArCj4gKwkJbWRpbyB7Cj4gKwkJCSNhZGRyZXNzLWNlbGxzID0gPDE+Owo+ ICsJCQkjc2l6ZS1jZWxscyA9IDwwPjsKPiArCj4gKwkJCXN3cGh5MTogc3dwaHkxQDE3IHsKPiAr CQkJCXJlZyA9IDwxNz47Cj4gKwkJCX07Cj4gKwo+ICsJCQlzd3BoeTI6IHN3cGh5MkAxOCB7Cj4g KwkJCQlyZWcgPSA8MTg+Owo+ICsJCQl9Owo+ICsKPiArCQkJc3dwaHkzOiBzd3BoeTNAMTkgewo+ ICsJCQkJcmVnID0gPDE5PjsKPiArCQkJfTsKPiArCj4gKwkJCXN3cGh5NDogc3dwaHk0QDIwIHsK PiArCQkJCXJlZyA9IDwyMD47Cj4gKwkJCX07Cj4gKwkJfTsKPiArCX07Cj4gK307Cj4gKwo+ICsm Y3AwX2V0aGVybmV0IHsKPiArCXN0YXR1cyA9ICJva2F5IjsKPiArfTsKPiArCj4gKy8qIDEwRyBT RlArICovCj4gKyZjcDBfZXRoMCB7Cj4gKwlzdGF0dXMgPSAib2theSI7Cj4gKwo+ICsJcGh5LW1v ZGUgPSAiMTBnYmFzZS1yIjsKPiArCXBoeXMgPSA8JmNwMF9jb21waHk0IDA+Owo+ICsJbWFuYWdl ZCA9ICJpbi1iYW5kLXN0YXR1cyI7Cj4gKwlzZnAgPSA8JnNmcF9ldGgwPjsKPiArfTsKPiArCj4g Ky8qIFRvcGF6IHN3aXRjaCB1cGxpbmsgKi8KPiArJmNwMF9ldGgxIHsKPiArCXN0YXR1cyA9ICJv a2F5IjsKPiArCj4gKwlwaHktbW9kZSA9ICIyNTAwYmFzZS14IjsKPiArCXBoeXMgPSA8JmNwMF9j b21waHkwIDE+Owo+ICsKPiArCWZpeGVkLWxpbmsgewo+ICsJCXNwZWVkID0gPDI1MDA+Owo+ICsJ CWZ1bGwtZHVwbGV4Owo+ICsJfTsKPiArfTsKPiArCj4gKy8qIDFHIFNGUCBvciAxRyBSSjQ1ICov Cj4gKyZjcDBfZXRoMiB7Cj4gKwlzdGF0dXMgPSAib2theSI7Cj4gKwo+ICsJcGluY3RybC1uYW1l cyA9ICJkZWZhdWx0IjsKPiArCXBpbmN0cmwtMCA9IDwmY3AwX3JnbWlpMV9waW5zPjsKPiArCj4g KwlwaHkgPSA8JmV0aDJwaHk+Owo+ICsJcGh5LW1vZGUgPSAicmdtaWktaWQiOwo+ICt9Owo+ICsK PiArJmNwMF91dG1pIHsKPiArCXN0YXR1cyA9ICJva2F5IjsKPiArfTsKPiArCj4gKy8qIFNNU0Mg VVNCNTQzNEIgaHViICovCj4gKyZjcDBfdXNiM18wIHsKPiArCXN0YXR1cyA9ICJva2F5IjsKPiAr Cj4gKwlwaHlzID0gPCZjcDBfY29tcGh5MSAwPiwgPCZjcDBfdXRtaTA+Owo+ICsJcGh5LW5hbWVz ID0gImNwMC11c2IzaDAtY29tcGh5IiwgInV0bWkiOwo+ICt9Owo+ICsKPiArLyogbWluaVBDSS1F IFVTQiAqLwo+ICsmY3AwX3VzYjNfMSB7Cj4gKwlzdGF0dXMgPSAib2theSI7Cj4gK307Cj4gKwo+ ICsmY3AwX3NhdGEwIHsKPiArCXN0YXR1cyA9ICJva2F5IjsKPiArCj4gKwkvKiA3ICsgMTIgU0FU QSBjb25uZWN0b3IgKEoyNCkgKi8KPiArCXNhdGEtcG9ydEAwIHsKPiArCQlwaHlzID0gPCZjcDBf Y29tcGh5MiAwPjsKPiArCQlwaHktbmFtZXMgPSAiY3AwLXNhdGEwLTAtcGh5IjsKPiArCX07Cj4g Kwo+ICsJLyogTS4yLTIyNTAgQi1rZXkgKEozOSkgKi8KPiArCXNhdGEtcG9ydEAxIHsKPiArCQlw aHlzID0gPCZjcDBfY29tcGh5MyAxPjsKPiArCQlwaHktbmFtZXMgPSAiY3AwLXNhdGEwLTEtcGh5 IjsKPiArCX07Cj4gK307Cj4gKwo+ICsvKiBtaW5pUENJLUUgKEo1KSAqLwo+ICsmY3AwX3BjaWUy IHsKPiArCXN0YXR1cyA9ICJva2F5IjsKPiArCj4gKwlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQi LCAiY2xrcmVxIjsKPiArCXBpbmN0cmwtMCA9IDwmY3AwX3BjaWVfcmVzZXRfcGlucz47Cj4gKwlw aW5jdHJsLTEgPSA8JmNwMF9wY2llX2Nsa3JlcV9waW5zPjsKPiArCXBoeXMgPSA8JmNwMF9jb21w aHk1IDI+Owo+ICsJcGh5LW5hbWVzID0gImNwMC1wY2llMi14MS1waHkiOwo+ICsJcmVzZXQtZ3Bp b3MgPSA8JmNwMF9ncGlvMSA5IEdQSU9fQUNUSVZFX0xPVz47Cj4gK307Cj4gLS0gCj4gMi4zMy4w Cj4KCi0tIApHcmVnb3J5IENsZW1lbnQsIEJvb3RsaW4KRW1iZWRkZWQgTGludXggYW5kIEtlcm5l bCBlbmdpbmVlcmluZwpodHRwOi8vYm9vdGxpbi5jb20KCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0Cmxp bnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFk Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK