From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-ej1-f41.google.com (mail-ej1-f41.google.com [209.85.218.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1F7AC4419 for ; Sat, 2 Jul 2022 21:16:58 +0000 (UTC) Received: by mail-ej1-f41.google.com with SMTP id h23so9945870ejj.12 for ; Sat, 02 Jul 2022 14:16:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=abaY+lfEfiiNgIgZ4GUqsdwgeyNHK+5y2ZGFjwQE3QQ=; b=A1rneij5/tVp0rlChOUJAH93908aptmNnsa68hb5jCqyaNng31O4hkPOnn48PJMhJw q/XTdhofbveB2dQfRreGCKtE4yT9Ngm+vg/TupRYCSAHUQKflqiHat2CTcpIElDSNd7k /4lhcpA31VMCkYYyciWTrF72hjMsNwhVNgI2wYH1oqleUmEKjt8KMGzm/L8gIWaclDeI henugoRRFx+ZyZ8SyF0hAM9i9L7TbnFeDaJi3Aa6V9MmYAo0zzgvlLM1YCi6HwhvIFD+ u42BUFzBgKVhTIpQipKa1SJYfYoMLDiVTzplKL/yHeMamZxAPFgMCiwcalH2sIAHpMQD /Ynw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=abaY+lfEfiiNgIgZ4GUqsdwgeyNHK+5y2ZGFjwQE3QQ=; b=6a/0pv2CX9T+eMRBJYKg+75aL7QEmpjC+Ekps/kYBeKq23uaY5y3nmaDSrsRdNvm5q 9VVfX1cAQjEVQph8epC6X3Z4yUhfBRZsQQ+TNX0ddPoGGE1xRXAGNjwbrktG33pq27wo FdtZ8iN4coRixmw9SDB1OtgIPXc2eNLTDzOXsMcPZG14YWPqv2rK6qxYTnQDPOVxCepE YVaWjRzwbCq2Zi4J8Lzx4XqlgmmJXAUijYAadFGanuL1PY1pezkB0zvACmcyfKCRvpjE mGWb/BjmxsALOxUsl2snp/+1zIk4TxY5I9UiIJUyHOyaed+Ae84tNZw23FLQIYex2PCm 1pHQ== X-Gm-Message-State: AJIora/HIzc+knt/ocuk8sDi7oZ+r01ErkVVajkMejcJPSPNmvCJnBHw oUWMjy3E9S6VMcVVaBtDbi0= X-Google-Smtp-Source: AGRyM1t3um8DqBhqeSg/aYUAKiTBCpg6/1E6SeS/qCTaXnTtdqaWq1O8E+V2aN5YEZMVs9vAraAqog== X-Received: by 2002:a17:907:2ce4:b0:722:df67:12cc with SMTP id hz4-20020a1709072ce400b00722df6712ccmr21150552ejc.715.1656796616199; Sat, 02 Jul 2022 14:16:56 -0700 (PDT) Received: from jernej-laptop.localnet (89-212-118-115.static.t-2.net. [89.212.118.115]) by smtp.gmail.com with ESMTPSA id n4-20020aa7c784000000b00437e08d319csm6183663eds.61.2022.07.02.14.16.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 02 Jul 2022 14:16:55 -0700 (PDT) From: Jernej =?utf-8?B?xaBrcmFiZWM=?= To: Andre Przywara Cc: Samuel Holland , Chen-Yu Tsai , Rob Herring , Krzysztof Kozlowski , Icenowy Zheng , linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v11 3/6] arm64: dts: allwinner: Add Allwinner H616 .dtsi file Date: Sat, 02 Jul 2022 23:16:53 +0200 Message-ID: <2985997.CbtlEUcBR6@jernej-laptop> In-Reply-To: <20220630010410.38fc117f@slackpad.lan> References: <20220428230933.15262-1-andre.przywara@arm.com> <3165164.aeNJFYEL58@kista> <20220630010410.38fc117f@slackpad.lan> Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="UTF-8" Dne =C4=8Detrtek, 30. junij 2022 ob 02:04:10 CEST je Andre Przywara napisal= (a): > On Tue, 03 May 2022 21:05:11 +0200 > Jernej =C5=A0krabec wrote: >=20 > Hi Jernej, >=20 > many thanks for taking the time to wade through this file! >=20 > > Dne petek, 29. april 2022 ob 01:09:30 CEST je Andre Przywara napisal(a): > > > This (relatively) new SoC is similar to the H6, but drops the (broken) > > > PCIe support and the USB 3.0 controller. It also gets the management > > > controller removed, which in turn removes *some*, but not all of the > > > devices formerly dedicated to the ARISC (CPUS). > > > And while there is still the extra sunxi interrupt controller, the > > > package lacks the corresponding NMI pin, so no interrupts for the PMI= C. > > >=20 > > > The reserved memory node is actually handled by Trusted Firmware now, > > > but U-Boot fails to propagate this to a separately loaded DTB, so we > > > keep it in here for now, until U-Boot learns to do this properly. > > >=20 > > > Signed-off-by: Andre Przywara > > > --- > > >=20 > > > .../arm64/boot/dts/allwinner/sun50i-h616.dtsi | 574 ++++++++++++++++= ++ > > > 1 file changed, 574 insertions(+) > > > create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi > > >=20 > > > diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi > > > b/arch/arm64/ > >=20 > > boot/dts/allwinner/sun50i-h616.dtsi > >=20 > > > new file mode 100644 > > > index 000000000000..cc06cdd15ba5 > > > --- /dev/null > > > +++ b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi > > > @@ -0,0 +1,574 @@ > > > +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) > > > +// Copyright (C) 2020 Arm Ltd. > > > +// based on the H6 dtsi, which is: > > > +// Copyright (C) 2017 Icenowy Zheng > > > + > > > +#include > > > +#include > > > +#include > > > +#include > > > +#include > > > + > > > +/ { > > > + interrupt-parent =3D <&gic>; > > > + #address-cells =3D <2>; > > > + #size-cells =3D <2>; > > > + > > > + cpus { > > > + #address-cells =3D <1>; > > > + #size-cells =3D <0>; > > > + > > > + cpu0: cpu@0 { > > > + compatible =3D "arm,cortex-a53"; > > > + device_type =3D "cpu"; > > > + reg =3D <0>; > > > + enable-method =3D "psci"; > > > + clocks =3D <&ccu CLK_CPUX>; > > > + }; > > > + > > > + cpu1: cpu@1 { > > > + compatible =3D "arm,cortex-a53"; > > > + device_type =3D "cpu"; > > > + reg =3D <1>; > > > + enable-method =3D "psci"; > > > + clocks =3D <&ccu CLK_CPUX>; > > > + }; > > > + > > > + cpu2: cpu@2 { > > > + compatible =3D "arm,cortex-a53"; > > > + device_type =3D "cpu"; > > > + reg =3D <2>; > > > + enable-method =3D "psci"; > > > + clocks =3D <&ccu CLK_CPUX>; > > > + }; > > > + > > > + cpu3: cpu@3 { > > > + compatible =3D "arm,cortex-a53"; > > > + device_type =3D "cpu"; > > > + reg =3D <3>; > > > + enable-method =3D "psci"; > > > + clocks =3D <&ccu CLK_CPUX>; > > > + }; > > > + }; > > > + > > > + reserved-memory { > > > + #address-cells =3D <2>; > > > + #size-cells =3D <2>; > > > + ranges; > > > + > > > + /* 512KiB reserved for ARM Trusted Firmware (BL31) */ > > > + secmon_reserved: secmon@40000000 { > > > + reg =3D <0x0 0x40000000 0x0 0x80000>; > > > + no-map; > > > + }; > > > + }; > >=20 > > I'm not a fan of above. If anything changes in future in BL31, U-Boot > > would > > need to reconfigure it anyway. Can we just skip it? >=20 > I am not a fan neither, but last time I checked this is needed to boot. > Indeed TF-A inserts this node, with the right values, into U-Boot's DT. > And that's nicely preserved if you use that DT ($fdtcontroladdr) for > the kernel as well. > But if someone *loads* a DTB into U-Boot (to $fdt_addr_r), then > U-Boot fails to propagate the /reserved-memory node into that copy. > There does not seem to be a global notion of reserved memory in U-Boot. > Some commands (like tftp) explicitly parse the control DT to find and > respect reserved memory regions. bootm does that also, but only to > avoid placing the ramdisk or DTB into reserved memory. The information > ends up in images->lmb, but is not used to generate or amend nodes in > the target DT. > So the bits and pieces are there, but it will require some code to be > added to the generic U-Boot code. >=20 > So what do you think? Leaving this out will prevent loading DTBs into > U-Boot, at the moment, which sounds bad. I suggest we keep it in, for > now, it should not really hurt. U-Boot will hopefully start to do the > right thing soon, then we can either phase it out here (maybe when we > actually change something in TF-A), or let U-Boot fix it. TBH, if "soon" is really soon, I would rather wait with H616 DT until U-Boo= t=20 supports carrying over reserved memory nodes. Whatever we do now, it will h= ave=20 compatibility issues. If we introduce reserved memory node now, we can't=20 easily drop it later. Bootloaders are not very often updated, but kernels a= nd=20 DTB files are, at least in my experience. So when we decide to drop the nod= e?=20 After 10 years? Alternatively, reserved memory node can be just dropped and= =20 anyone loading DTB file from outside would need to make sure it's patched. = But=20 that's unexpected from user perspective, although patching DT files is done= by=20 some distros. Best regards, Jernej >=20 > > > + > > > + osc24M: osc24M-clk { > > > + #clock-cells =3D <0>; > > > + compatible =3D "fixed-clock"; > > > + clock-frequency =3D <24000000>; > > > + clock-output-names =3D "osc24M"; > > > + }; > > > + > > > + pmu { > > > + compatible =3D "arm,cortex-a53-pmu"; > > > + interrupts =3D , > > > + , > > > + , > > > + ; > > > + interrupt-affinity =3D <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>; > > > + }; > > > + > > > + psci { > > > + compatible =3D "arm,psci-0.2"; > > > + method =3D "smc"; > > > + }; > > > + > > > + timer { > > > + compatible =3D "arm,armv8-timer"; > > > + arm,no-tick-in-suspend; > > > + interrupts =3D > > + (GIC_CPU_MASK_SIMPLE(4) | > >=20 > > IRQ_TYPE_LEVEL_HIGH)>, > >=20 > > > + > > + (GIC_CPU_MASK_SIMPLE(4) | > >=20 > > IRQ_TYPE_LEVEL_HIGH)>, > >=20 > > > + > > + (GIC_CPU_MASK_SIMPLE(4) | > >=20 > > IRQ_TYPE_LEVEL_HIGH)>, > >=20 > > > + > > + (GIC_CPU_MASK_SIMPLE(4) | > >=20 > > IRQ_TYPE_LEVEL_HIGH)>; > >=20 > > > + }; > >=20 > > Vendor kernel sets IRQ to low level. What is the difference? >=20 > Nothing, really. The polarity of SPI level IRQ lines is hardwired at > integration time, both at the peripheral and the GIC distributor. The > GIC software interface has no register to control that - all you can > configure is edge or level. There *is* some underlying polarity, but to > my understanding this is just mentioned here for completeness, and > because the binding requires to name one. >=20 > > > + > > > + soc@0 { > > > + compatible =3D "simple-bus"; > > > + #address-cells =3D <1>; > > > + #size-cells =3D <1>; > > > + ranges =3D <0x0 0x0 0x0 0x40000000>; > > > + > > > + syscon: syscon@3000000 { > > > + compatible =3D "allwinner,sun50i-h616-system- > >=20 > > control"; > >=20 > > > + reg =3D <0x03000000 0x1000>; > > > + #address-cells =3D <1>; > > > + #size-cells =3D <1>; > > > + ranges; > > > + > > > + sram_c: sram@28000 { > > > + compatible =3D "mmio-sram"; > > > + reg =3D <0x00028000 0x30000>; > > > + #address-cells =3D <1>; > > > + #size-cells =3D <1>; > > > + ranges =3D <0 0x00028000 0x30000>; > > > + }; > > > + }; > > > + > > > + ccu: clock@3001000 { > > > + compatible =3D "allwinner,sun50i-h616-ccu"; > > > + reg =3D <0x03001000 0x1000>; > > > + clocks =3D <&osc24M>, <&rtc 0>, <&rtc 2>; > > > + clock-names =3D "hosc", "losc", "iosc"; > > > + #clock-cells =3D <1>; > > > + #reset-cells =3D <1>; > > > + }; > > > + > > > + watchdog: watchdog@30090a0 { > > > + compatible =3D "allwinner,sun50i-h616-wdt", > > > + "allwinner,sun6i-a31-wdt"; > > > + reg =3D <0x030090a0 0x20>; > > > + interrupts =3D >=20 > > IRQ_TYPE_LEVEL_HIGH>; > >=20 > > > + clocks =3D <&osc24M>; > > > + }; > > > + > > > + pio: pinctrl@300b000 { > > > + compatible =3D "allwinner,sun50i-h616- pinctrl"; > > > + reg =3D <0x0300b000 0x400>; > > > + interrupts =3D >=20 > > IRQ_TYPE_LEVEL_HIGH>, > >=20 > > > + >=20 > > IRQ_TYPE_LEVEL_HIGH>, > >=20 > > > + >=20 > > IRQ_TYPE_LEVEL_HIGH>, > >=20 > > > + >=20 > > IRQ_TYPE_LEVEL_HIGH>, > >=20 > > > + >=20 > > IRQ_TYPE_LEVEL_HIGH>, > >=20 > > > + >=20 > > IRQ_TYPE_LEVEL_HIGH>, > >=20 > > > + >=20 > > IRQ_TYPE_LEVEL_HIGH>, > >=20 > > > + >=20 > > IRQ_TYPE_LEVEL_HIGH>; > >=20 > > > + clocks =3D <&ccu CLK_APB1>, <&osc24M>, <&rtc > >=20 > > 0>; > >=20 > > > + clock-names =3D "apb", "hosc", "losc"; > > > + gpio-controller; > > > + #gpio-cells =3D <3>; > > > + interrupt-controller; > > > + #interrupt-cells =3D <3>; > > > + > > > + ext_rgmii_pins: rgmii-pins { > > > + pins =3D "PI0", "PI1", "PI2",=20 "PI3", > >=20 > > "PI4", > >=20 > > > + "PI5", "PI7", "PI8",=20 "PI9", > >=20 > > "PI10", > >=20 > > > + "PI11", "PI12", "PI13", > >=20 > > "PI14", "PI15", > >=20 > > > + "PI16"; > > > + function =3D "emac0"; > > > + drive-strength =3D <40>; > > > + }; > > > + > > > + i2c0_pins: i2c0-pins { > > > + pins =3D "PI6", "PI7"; > > > + function =3D "i2c0"; > > > + }; > > > + > > > + i2c3_ph_pins: i2c3-ph-pins { > > > + pins =3D "PH4", "PH5"; > > > + function =3D "i2c3"; > > > + }; > > > + > > > + ir_rx_pin: ir-rx-pin { > > > + pins =3D "PH10"; > > > + function =3D "ir_rx"; > > > + }; > > > + > > > + mmc0_pins: mmc0-pins { > > > + pins =3D "PF0", "PF1", "PF2",=20 "PF3", > > > + "PF4", "PF5"; > > > + function =3D "mmc0"; > > > + drive-strength =3D <30>; > > > + bias-pull-up; > > > + }; > > > + > > > + mmc1_pins: mmc1-pins { > > > + pins =3D "PG0", "PG1", "PG2",=20 "PG3", > > > + "PG4", "PG5"; > > > + function =3D "mmc1"; > > > + drive-strength =3D <30>; > > > + bias-pull-up; > > > + }; > > > + > > > + mmc2_pins: mmc2-pins { > > > + pins =3D "PC0", "PC1", "PC5",=20 "PC6", > > > + "PC8", "PC9", "PC10", > >=20 > > "PC11", > >=20 > > > + "PC13", "PC14", "PC15", > >=20 > > "PC16"; > >=20 > > > + function =3D "mmc2"; > > > + drive-strength =3D <30>; > > > + bias-pull-up; > > > + }; > > > + > > > + spi0_pins: spi0-pins { > > > + pins =3D "PC0", "PC2", "PC3",=20 "PC4"; > > > + function =3D "spi0"; > > > + }; > > > + > > > + spi1_pins: spi1-pins { > > > + pins =3D "PH6", "PH7", "PH8"; > > > + function =3D "spi1"; > > > + }; > > > + > > > + spi1_cs_pin: spi1-cs-pin { > > > + pins =3D "PH5"; > > > + function =3D "spi1"; > > > + }; > > > + > > > + uart0_ph_pins: uart0-ph-pins { > > > + pins =3D "PH0", "PH1"; > > > + function =3D "uart0"; > > > + }; > > > + > > > + uart1_pins: uart1-pins { > > > + pins =3D "PG6", "PG7"; > > > + function =3D "uart1"; > > > + }; > > > + > > > + uart1_rts_cts_pins: uart1-rts-cts-pins { > > > + pins =3D "PG8", "PG9"; > > > + function =3D "uart1"; > > > + }; > >=20 > > Please add /omit-if-no-ref/ where applicable. >=20 > OK. I think most boards have Bluetooth at UART1, though. >=20 > > > + }; > > > + > > > + gic: interrupt-controller@3021000 { > > > + compatible =3D "arm,gic-400"; > > > + reg =3D <0x03021000 0x1000>, > > > + <0x03022000 0x2000>, > > > + <0x03024000 0x2000>, > > > + <0x03026000 0x2000>; > > > + interrupts =3D >=20 > > (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>; > >=20 > > > + interrupt-controller; > > > + #interrupt-cells =3D <3>; > > > + }; > > > + > > > + mmc0: mmc@4020000 { > > > + compatible =3D "allwinner,sun50i-h616-mmc", > > > + "allwinner,sun50i-a100- mmc"; > > > + reg =3D <0x04020000 0x1000>; > > > + clocks =3D <&ccu CLK_BUS_MMC0>, <&ccu > >=20 > > CLK_MMC0>; > >=20 > > > + clock-names =3D "ahb", "mmc"; > > > + resets =3D <&ccu RST_BUS_MMC0>; > > > + reset-names =3D "ahb"; > > > + interrupts =3D >=20 > > IRQ_TYPE_LEVEL_HIGH>; > >=20 > > > + pinctrl-names =3D "default"; > > > + pinctrl-0 =3D <&mmc0_pins>; > > > + status =3D "disabled"; > > > + max-frequency =3D <150000000>; > > > + cap-sd-highspeed; > > > + cap-mmc-highspeed; > > > + mmc-ddr-3_3v; > > > + cap-sdio-irq; > > > + #address-cells =3D <1>; > > > + #size-cells =3D <0>; > > > + }; > > > + > > > + mmc1: mmc@4021000 { > > > + compatible =3D "allwinner,sun50i-h616-mmc", > > > + "allwinner,sun50i-a100- mmc"; > > > + reg =3D <0x04021000 0x1000>; > > > + clocks =3D <&ccu CLK_BUS_MMC1>, <&ccu > >=20 > > CLK_MMC1>; > >=20 > > > + clock-names =3D "ahb", "mmc"; > > > + resets =3D <&ccu RST_BUS_MMC1>; > > > + reset-names =3D "ahb"; > > > + interrupts =3D >=20 > > IRQ_TYPE_LEVEL_HIGH>; > >=20 > > > + pinctrl-names =3D "default"; > > > + pinctrl-0 =3D <&mmc1_pins>; > > > + status =3D "disabled"; > > > + max-frequency =3D <150000000>; > > > + cap-sd-highspeed; > > > + cap-mmc-highspeed; > > > + mmc-ddr-3_3v; > > > + cap-sdio-irq; > > > + #address-cells =3D <1>; > > > + #size-cells =3D <0>; > > > + }; > > > + > > > + mmc2: mmc@4022000 { > > > + compatible =3D "allwinner,sun50i-h616-emmc", > > > + "allwinner,sun50i-a100- emmc"; > > > + reg =3D <0x04022000 0x1000>; > > > + clocks =3D <&ccu CLK_BUS_MMC2>, <&ccu > >=20 > > CLK_MMC2>; > >=20 > > > + clock-names =3D "ahb", "mmc"; > > > + resets =3D <&ccu RST_BUS_MMC2>; > > > + reset-names =3D "ahb"; > > > + interrupts =3D >=20 > > IRQ_TYPE_LEVEL_HIGH>; > >=20 > > > + pinctrl-names =3D "default"; > > > + pinctrl-0 =3D <&mmc2_pins>; > > > + status =3D "disabled"; > > > + max-frequency =3D <150000000>; > > > + cap-sd-highspeed; > > > + cap-mmc-highspeed; > > > + mmc-ddr-3_3v; > > > + cap-sdio-irq; > > > + #address-cells =3D <1>; > > > + #size-cells =3D <0>; > > > + }; > > > + > > > + uart0: serial@5000000 { > > > + compatible =3D "snps,dw-apb-uart"; > > > + reg =3D <0x05000000 0x400>; > > > + interrupts =3D ; > > > + reg-shift =3D <2>; > > > + reg-io-width =3D <4>; > > > + clocks =3D <&ccu CLK_BUS_UART0>; > > > + resets =3D <&ccu RST_BUS_UART0>; > > > + status =3D "disabled"; > > > + }; > > > + > > > + uart1: serial@5000400 { > > > + compatible =3D "snps,dw-apb-uart"; > > > + reg =3D <0x05000400 0x400>; > > > + interrupts =3D ; > > > + reg-shift =3D <2>; > > > + reg-io-width =3D <4>; > > > + clocks =3D <&ccu CLK_BUS_UART1>; > > > + resets =3D <&ccu RST_BUS_UART1>; > > > + status =3D "disabled"; > > > + }; > > > + > > > + uart2: serial@5000800 { > > > + compatible =3D "snps,dw-apb-uart"; > > > + reg =3D <0x05000800 0x400>; > > > + interrupts =3D ; > > > + reg-shift =3D <2>; > > > + reg-io-width =3D <4>; > > > + clocks =3D <&ccu CLK_BUS_UART2>; > > > + resets =3D <&ccu RST_BUS_UART2>; > > > + status =3D "disabled"; > > > + }; > > > + > > > + uart3: serial@5000c00 { > > > + compatible =3D "snps,dw-apb-uart"; > > > + reg =3D <0x05000c00 0x400>; > > > + interrupts =3D ; > > > + reg-shift =3D <2>; > > > + reg-io-width =3D <4>; > > > + clocks =3D <&ccu CLK_BUS_UART3>; > > > + resets =3D <&ccu RST_BUS_UART3>; > > > + status =3D "disabled"; > > > + }; > > > + > > > + uart4: serial@5001000 { > > > + compatible =3D "snps,dw-apb-uart"; > > > + reg =3D <0x05001000 0x400>; > > > + interrupts =3D ; > > > + reg-shift =3D <2>; > > > + reg-io-width =3D <4>; > > > + clocks =3D <&ccu CLK_BUS_UART4>; > > > + resets =3D <&ccu RST_BUS_UART4>; > > > + status =3D "disabled"; > > > + }; > > > + > > > + uart5: serial@5001400 { > > > + compatible =3D "snps,dw-apb-uart"; > > > + reg =3D <0x05001400 0x400>; > > > + interrupts =3D ; > > > + reg-shift =3D <2>; > > > + reg-io-width =3D <4>; > > > + clocks =3D <&ccu CLK_BUS_UART5>; > > > + resets =3D <&ccu RST_BUS_UART5>; > > > + status =3D "disabled"; > > > + }; > > > + > > > + i2c0: i2c@5002000 { > > > + compatible =3D "allwinner,sun50i-h616-i2c", > > > + "allwinner,sun6i-a31-i2c"; > > > + reg =3D <0x05002000 0x400>; > > > + interrupts =3D ; > > > + clocks =3D <&ccu CLK_BUS_I2C0>; > > > + resets =3D <&ccu RST_BUS_I2C0>; > > > + pinctrl-names =3D "default"; > > > + pinctrl-0 =3D <&i2c0_pins>; > > > + status =3D "disabled"; > > > + #address-cells =3D <1>; > > > + #size-cells =3D <0>; > > > + }; > > > + > > > + i2c1: i2c@5002400 { > > > + compatible =3D "allwinner,sun50i-h616-i2c", > > > + "allwinner,sun6i-a31-i2c"; > > > + reg =3D <0x05002400 0x400>; > > > + interrupts =3D ; > > > + clocks =3D <&ccu CLK_BUS_I2C1>; > > > + resets =3D <&ccu RST_BUS_I2C1>; > > > + status =3D "disabled"; > > > + #address-cells =3D <1>; > > > + #size-cells =3D <0>; > > > + }; > > > + > > > + i2c2: i2c@5002800 { > > > + compatible =3D "allwinner,sun50i-h616-i2c", > > > + "allwinner,sun6i-a31-i2c"; > > > + reg =3D <0x05002800 0x400>; > > > + interrupts =3D ; > > > + clocks =3D <&ccu CLK_BUS_I2C2>; > > > + resets =3D <&ccu RST_BUS_I2C2>; > > > + status =3D "disabled"; > > > + #address-cells =3D <1>; > > > + #size-cells =3D <0>; > > > + }; > > > + > > > + i2c3: i2c@5002c00 { > > > + compatible =3D "allwinner,sun50i-h616-i2c", > > > + "allwinner,sun6i-a31-i2c"; > > > + reg =3D <0x05002c00 0x400>; > > > + interrupts =3D ; > > > + clocks =3D <&ccu CLK_BUS_I2C3>; > > > + resets =3D <&ccu RST_BUS_I2C3>; > > > + status =3D "disabled"; > > > + #address-cells =3D <1>; > > > + #size-cells =3D <0>; > > > + }; > > > + > > > + i2c4: i2c@5003000 { > > > + compatible =3D "allwinner,sun50i-h616-i2c", > > > + "allwinner,sun6i-a31-i2c"; > > > + reg =3D <0x05003000 0x400>; > > > + interrupts =3D >=20 > > IRQ_TYPE_LEVEL_HIGH>; > >=20 > > > + clocks =3D <&ccu CLK_BUS_I2C4>; > > > + resets =3D <&ccu RST_BUS_I2C4>; > > > + status =3D "disabled"; > > > + #address-cells =3D <1>; > > > + #size-cells =3D <0>; > > > + }; > > > + > > > + spi0: spi@5010000 { > > > + compatible =3D "allwinner,sun50i-h616-spi", > > > + "allwinner,sun8i-h3-spi"; > > > + reg =3D <0x05010000 0x1000>; > > > + interrupts =3D >=20 > > IRQ_TYPE_LEVEL_HIGH>; > >=20 > > > + clocks =3D <&ccu CLK_BUS_SPI0>, <&ccu > >=20 > > CLK_SPI0>; > >=20 > > > + clock-names =3D "ahb", "mod"; > > > + resets =3D <&ccu RST_BUS_SPI0>; > > > + pinctrl-names =3D "default"; > > > + pinctrl-0 =3D <&spi0_pins>; > > > + status =3D "disabled"; > > > + #address-cells =3D <1>; > > > + #size-cells =3D <0>; > > > + }; > > > + > > > + spi1: spi@5011000 { > > > + compatible =3D "allwinner,sun50i-h616-spi", > > > + "allwinner,sun8i-h3-spi"; > > > + reg =3D <0x05011000 0x1000>; > > > + interrupts =3D >=20 > > IRQ_TYPE_LEVEL_HIGH>; > >=20 > > > + clocks =3D <&ccu CLK_BUS_SPI1>, <&ccu > >=20 > > CLK_SPI1>; > >=20 > > > + clock-names =3D "ahb", "mod"; > > > + resets =3D <&ccu RST_BUS_SPI1>; > > > + pinctrl-names =3D "default"; > > > + pinctrl-0 =3D <&spi1_pins>; > > > + status =3D "disabled"; > > > + #address-cells =3D <1>; > > > + #size-cells =3D <0>; > > > + }; > > > + > > > + emac0: ethernet@5020000 { > > > + compatible =3D "allwinner,sun50i-h616-emac", > > > + "allwinner,sun50i-a64- emac"; > > > + syscon =3D <&syscon>; > > > + reg =3D <0x05020000 0x10000>; > > > + interrupts =3D >=20 > > IRQ_TYPE_LEVEL_HIGH>; > >=20 > > > + interrupt-names =3D "macirq"; > > > + resets =3D <&ccu RST_BUS_EMAC0>; > > > + reset-names =3D "stmmaceth"; > > > + clocks =3D <&ccu CLK_BUS_EMAC0>; > > > + clock-names =3D "stmmaceth"; > > > + status =3D "disabled"; > > > + > > > + mdio0: mdio { > > > + compatible =3D "snps,dwmac-mdio"; > > > + #address-cells =3D <1>; > > > + #size-cells =3D <0>; > > > + }; > > > + }; > > > + > > > + rtc: rtc@7000000 { > > > + compatible =3D "allwinner,sun50i-h616-rtc"; > > > + reg =3D <0x07000000 0x400>; > > > + interrupts =3D >=20 > > IRQ_TYPE_LEVEL_HIGH>; > >=20 > > Above interrupt doesn't seem to be correct according to documentation. = It > > should be 104. >=20 > That is a very good catch, 101/133 is indeed the RTC IRQ number on the > H6. >=20 > > > + clocks =3D <&r_ccu CLK_R_APB1_RTC>,=20 <&osc24M>, > > > + <&ccu CLK_PLL_SYSTEM_32K>; > > > + clock-names =3D "bus", "hosc", > > > + "pll-32k"; > > > + clock-output-names =3D "osc32k", "osc32k- out", > >=20 > > "iosc"; > >=20 > > > + #clock-cells =3D <1>; > > > + }; > > > + > > > + r_ccu: clock@7010000 { > > > + compatible =3D "allwinner,sun50i-h616-r-ccu"; > > > + reg =3D <0x07010000 0x210>; > > > + clocks =3D <&osc24M>, <&rtc 0>, <&rtc 2>, > > > + <&ccu CLK_PLL_PERIPH0>; > > > + clock-names =3D "hosc", "losc", "iosc", "pll- > >=20 > > periph"; > >=20 > > > + #clock-cells =3D <1>; > > > + #reset-cells =3D <1>; > > > + }; > > > + > > > + r_pio: pinctrl@7022000 { > > > + compatible =3D "allwinner,sun50i-h616-r- > >=20 > > pinctrl"; > >=20 > > > + reg =3D <0x07022000 0x400>; > > > + interrupts =3D >=20 > > IRQ_TYPE_LEVEL_HIGH>; > >=20 > > Above interrupt is already used for port E in first pinctrl. Is this > > shared > > somehow? >=20 > Huh, another good find. The manual does not seem to mention a GPIO_L > interrupt, and the two PL pins do not report function 6. > when probing the registers in U-Boot there are no other pins (neither in > PortL nor PortM), also the interrupt registers (@+0x200) are not > implemented. So there does not seem to be an interrupt. >=20 > The pinctrl driver does not seem to care (by looking at the code, > and by booting it), as .irq_banks is 0, so no IRQ controller > functionality is ever instantiated. > The binding makes the interrupts property mandatory, though, so this > needs to be amended there. >=20 >=20 > I will try to post a new version till the end of the week. >=20 > Thanks! > Andre >=20 > > Best regards, > > Jernej > >=20 > > > + clocks =3D <&r_ccu CLK_R_APB1>, <&osc24M>, > >=20 > > <&rtc 0>; > >=20 > > > + clock-names =3D "apb", "hosc", "losc"; > > > + gpio-controller; > > > + #gpio-cells =3D <3>; > > > + interrupt-controller; > > > + #interrupt-cells =3D <3>; > > > + > > > + r_i2c_pins: r-i2c-pins { > > > + pins =3D "PL0", "PL1"; > > > + function =3D "s_i2c"; > > > + }; > > > + > > > + r_rsb_pins: r-rsb-pins { > > > + pins =3D "PL0", "PL1"; > > > + function =3D "s_rsb"; > > > + }; > > > + }; > > > + > > > + ir: ir@7040000 { > > > + compatible =3D "allwinner,sun50i-h616-ir", > > > + "allwinner,sun6i-a31-ir"; > > > + reg =3D <0x07040000 0x400>; > > > + interrupts =3D >=20 > > IRQ_TYPE_LEVEL_HIGH>; > >=20 > > > + clocks =3D <&r_ccu CLK_R_APB1_IR>, > > > + <&r_ccu CLK_IR>; > > > + clock-names =3D "apb", "ir"; > > > + resets =3D <&r_ccu RST_R_APB1_IR>; > > > + pinctrl-names =3D "default"; > > > + pinctrl-0 =3D <&ir_rx_pin>; > > > + status =3D "disabled"; > > > + }; > > > + > > > + r_i2c: i2c@7081400 { > > > + compatible =3D "allwinner,sun50i-h616-i2c", > > > + "allwinner,sun6i-a31-i2c"; > > > + reg =3D <0x07081400 0x400>; > > > + interrupts =3D >=20 > > IRQ_TYPE_LEVEL_HIGH>; > >=20 > > > + clocks =3D <&r_ccu CLK_R_APB2_I2C>; > > > + resets =3D <&r_ccu RST_R_APB2_I2C>; > > > + status =3D "disabled"; > > > + #address-cells =3D <1>; > > > + #size-cells =3D <0>; > > > + }; > > > + > > > + r_rsb: rsb@7083000 { > > > + compatible =3D "allwinner,sun50i-h616-rsb", > > > + "allwinner,sun8i-a23-rsb"; > > > + reg =3D <0x07083000 0x400>; > > > + interrupts =3D >=20 > > IRQ_TYPE_LEVEL_HIGH>; > >=20 > > > + clocks =3D <&r_ccu CLK_R_APB2_RSB>; > > > + clock-frequency =3D <3000000>; > > > + resets =3D <&r_ccu RST_R_APB2_RSB>; > > > + pinctrl-names =3D "default"; > > > + pinctrl-0 =3D <&r_rsb_pins>; > > > + status =3D "disabled"; > > > + #address-cells =3D <1>; > > > + #size-cells =3D <0>; > > > + }; > > > + }; > > > +}; 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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 5827DC43334 for ; Sat, 2 Jul 2022 21:18:21 +0000 (UTC) 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:References:In-Reply-To: Message-ID:Date: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=/Wtq+EpNOt6QfTaAnpR04hEP9Q55H/200rE5xo9554c=; b=2L3YS2SRrFGVAl HQgXmLz1foXLyhFMzPrUwLThA6oMAeaQTs9Ju89RuXGiKH/oo/00Tpj970VafuQUIWabGIM371Qft VMTRB7dZMMux2ZfAvpfJblwnlN2GKcPsdcw0LP/lObftH8UIAKQm96LZow3Lw4G720zhGccfVrlIe v459k+tBSnUc4grW54OcsQMVBzjhbU1rLpjv+CDjrPLr9A9BGyukTc/YvbUPK+vz9I4WWx/TJHb5V bh0wgr04lVT94yi3EBHE2SfjIyu9eXvYRlsFxJ+3V0Q02m5vmFE1j7NMFIFROXQwUA7MXFJoEJpe4 O1bpC8crGcyqHSctmrPw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1o7kUB-00BZT5-Qw; Sat, 02 Jul 2022 21:17:03 +0000 Received: from mail-ej1-x635.google.com ([2a00:1450:4864:20::635]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1o7kU6-00BZQ5-9B for linux-arm-kernel@lists.infradead.org; Sat, 02 Jul 2022 21:17:01 +0000 Received: by mail-ej1-x635.google.com with SMTP id o25so10026860ejm.3 for ; Sat, 02 Jul 2022 14:16:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=abaY+lfEfiiNgIgZ4GUqsdwgeyNHK+5y2ZGFjwQE3QQ=; b=A1rneij5/tVp0rlChOUJAH93908aptmNnsa68hb5jCqyaNng31O4hkPOnn48PJMhJw q/XTdhofbveB2dQfRreGCKtE4yT9Ngm+vg/TupRYCSAHUQKflqiHat2CTcpIElDSNd7k /4lhcpA31VMCkYYyciWTrF72hjMsNwhVNgI2wYH1oqleUmEKjt8KMGzm/L8gIWaclDeI henugoRRFx+ZyZ8SyF0hAM9i9L7TbnFeDaJi3Aa6V9MmYAo0zzgvlLM1YCi6HwhvIFD+ u42BUFzBgKVhTIpQipKa1SJYfYoMLDiVTzplKL/yHeMamZxAPFgMCiwcalH2sIAHpMQD /Ynw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=abaY+lfEfiiNgIgZ4GUqsdwgeyNHK+5y2ZGFjwQE3QQ=; b=Qk+RdZPbt/PJUlFB20+MFgMjlRxD+ArI/9T4nPtseBAM71762aYtgknM4JoNrdwTB+ xASDHhB5Dm6v1do1TkSczxXphiRN6XUMHrcBUT4iRzG4+hL+19KJTfnP8Nc/v4Wk3zTh J/OCGWbIB07c1uPOhRcJFj1RnzIucUj4WkpmNj6UesYVhLCIpNyW2qeUaO2TRIZMlsFF to075O/Z2jxEfXJ6uKBpoWaiNRB8n7HMFTnebI7xKeIgBR63B4aAHmGsYwcL7oxRcL5e zuurz+s2RHOdYiuAmSzlXy0LNhEPPnQBhBwNjOhClrpsXwI2bsI9HTSNtCjjXiZ0WniD ciFA== X-Gm-Message-State: AJIora93Zel8Q8tfUSoCPrSlcUPOk//BhzxIV+EmX/auURRCyhUQDdW4 OtBRJxPSBrlgnTvJxiJDFFw= X-Google-Smtp-Source: AGRyM1t3um8DqBhqeSg/aYUAKiTBCpg6/1E6SeS/qCTaXnTtdqaWq1O8E+V2aN5YEZMVs9vAraAqog== X-Received: by 2002:a17:907:2ce4:b0:722:df67:12cc with SMTP id hz4-20020a1709072ce400b00722df6712ccmr21150552ejc.715.1656796616199; Sat, 02 Jul 2022 14:16:56 -0700 (PDT) Received: from jernej-laptop.localnet (89-212-118-115.static.t-2.net. [89.212.118.115]) by smtp.gmail.com with ESMTPSA id n4-20020aa7c784000000b00437e08d319csm6183663eds.61.2022.07.02.14.16.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 02 Jul 2022 14:16:55 -0700 (PDT) From: Jernej =?utf-8?B?xaBrcmFiZWM=?= To: Andre Przywara Cc: Samuel Holland , Chen-Yu Tsai , Rob Herring , Krzysztof Kozlowski , Icenowy Zheng , linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v11 3/6] arm64: dts: allwinner: Add Allwinner H616 .dtsi file Date: Sat, 02 Jul 2022 23:16:53 +0200 Message-ID: <2985997.CbtlEUcBR6@jernej-laptop> In-Reply-To: <20220630010410.38fc117f@slackpad.lan> References: <20220428230933.15262-1-andre.przywara@arm.com> <3165164.aeNJFYEL58@kista> <20220630010410.38fc117f@slackpad.lan> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220702_141658_398732_58C67E5B X-CRM114-Status: GOOD ( 47.59 ) 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 RG5lIMSNZXRydGVrLCAzMC4ganVuaWogMjAyMiBvYiAwMjowNDoxMCBDRVNUIGplIEFuZHJlIFBy enl3YXJhIG5hcGlzYWwoYSk6Cj4gT24gVHVlLCAwMyBNYXkgMjAyMiAyMTowNToxMSArMDIwMAo+ IEplcm5laiDFoGtyYWJlYyA8amVybmVqLnNrcmFiZWNAZ21haWwuY29tPiB3cm90ZToKPiAKPiBI aSBKZXJuZWosCj4gCj4gbWFueSB0aGFua3MgZm9yIHRha2luZyB0aGUgdGltZSB0byB3YWRlIHRo cm91Z2ggdGhpcyBmaWxlIQo+IAo+ID4gRG5lIHBldGVrLCAyOS4gYXByaWwgMjAyMiBvYiAwMTow OTozMCBDRVNUIGplIEFuZHJlIFByenl3YXJhIG5hcGlzYWwoYSk6Cj4gPiA+IFRoaXMgKHJlbGF0 aXZlbHkpIG5ldyBTb0MgaXMgc2ltaWxhciB0byB0aGUgSDYsIGJ1dCBkcm9wcyB0aGUgKGJyb2tl bikKPiA+ID4gUENJZSBzdXBwb3J0IGFuZCB0aGUgVVNCIDMuMCBjb250cm9sbGVyLiBJdCBhbHNv IGdldHMgdGhlIG1hbmFnZW1lbnQKPiA+ID4gY29udHJvbGxlciByZW1vdmVkLCB3aGljaCBpbiB0 dXJuIHJlbW92ZXMgKnNvbWUqLCBidXQgbm90IGFsbCBvZiB0aGUKPiA+ID4gZGV2aWNlcyBmb3Jt ZXJseSBkZWRpY2F0ZWQgdG8gdGhlIEFSSVNDIChDUFVTKS4KPiA+ID4gQW5kIHdoaWxlIHRoZXJl IGlzIHN0aWxsIHRoZSBleHRyYSBzdW54aSBpbnRlcnJ1cHQgY29udHJvbGxlciwgdGhlCj4gPiA+ IHBhY2thZ2UgbGFja3MgdGhlIGNvcnJlc3BvbmRpbmcgTk1JIHBpbiwgc28gbm8gaW50ZXJydXB0 cyBmb3IgdGhlIFBNSUMuCj4gPiA+IAo+ID4gPiBUaGUgcmVzZXJ2ZWQgbWVtb3J5IG5vZGUgaXMg YWN0dWFsbHkgaGFuZGxlZCBieSBUcnVzdGVkIEZpcm13YXJlIG5vdywKPiA+ID4gYnV0IFUtQm9v dCBmYWlscyB0byBwcm9wYWdhdGUgdGhpcyB0byBhIHNlcGFyYXRlbHkgbG9hZGVkIERUQiwgc28g d2UKPiA+ID4ga2VlcCBpdCBpbiBoZXJlIGZvciBub3csIHVudGlsIFUtQm9vdCBsZWFybnMgdG8g ZG8gdGhpcyBwcm9wZXJseS4KPiA+ID4gCj4gPiA+IFNpZ25lZC1vZmYtYnk6IEFuZHJlIFByenl3 YXJhIDxhbmRyZS5wcnp5d2FyYUBhcm0uY29tPgo+ID4gPiAtLS0KPiA+ID4gCj4gPiA+ICAuLi4v YXJtNjQvYm9vdC9kdHMvYWxsd2lubmVyL3N1bjUwaS1oNjE2LmR0c2kgfCA1NzQgKysrKysrKysr KysrKysrKysrCj4gPiA+ICAxIGZpbGUgY2hhbmdlZCwgNTc0IGluc2VydGlvbnMoKykKPiA+ID4g IGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybTY0L2Jvb3QvZHRzL2FsbHdpbm5lci9zdW41MGkt aDYxNi5kdHNpCj4gPiA+IAo+ID4gPiBkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9ib290L2R0cy9h bGx3aW5uZXIvc3VuNTBpLWg2MTYuZHRzaQo+ID4gPiBiL2FyY2gvYXJtNjQvCj4gPiAKPiA+IGJv b3QvZHRzL2FsbHdpbm5lci9zdW41MGktaDYxNi5kdHNpCj4gPiAKPiA+ID4gbmV3IGZpbGUgbW9k ZSAxMDA2NDQKPiA+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi5jYzA2Y2RkMTViYTUKPiA+ID4gLS0t IC9kZXYvbnVsbAo+ID4gPiArKysgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL2FsbHdpbm5lci9zdW41 MGktaDYxNi5kdHNpCj4gPiA+IEBAIC0wLDAgKzEsNTc0IEBACj4gPiA+ICsvLyBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogKEdQTC0yLjArIE9SIE1JVCkKPiA+ID4gKy8vIENvcHlyaWdodCAoQykg MjAyMCBBcm0gTHRkLgo+ID4gPiArLy8gYmFzZWQgb24gdGhlIEg2IGR0c2ksIHdoaWNoIGlzOgo+ ID4gPiArLy8gICBDb3B5cmlnaHQgKEMpIDIwMTcgSWNlbm93eSBaaGVuZyA8aWNlbm93eUBhb3Nj LmlvPgo+ID4gPiArCj4gPiA+ICsjaW5jbHVkZSA8ZHQtYmluZGluZ3MvaW50ZXJydXB0LWNvbnRy b2xsZXIvYXJtLWdpYy5oPgo+ID4gPiArI2luY2x1ZGUgPGR0LWJpbmRpbmdzL2Nsb2NrL3N1bjUw aS1oNjE2LWNjdS5oPgo+ID4gPiArI2luY2x1ZGUgPGR0LWJpbmRpbmdzL2Nsb2NrL3N1bjUwaS1o Ni1yLWNjdS5oPgo+ID4gPiArI2luY2x1ZGUgPGR0LWJpbmRpbmdzL3Jlc2V0L3N1bjUwaS1oNjE2 LWNjdS5oPgo+ID4gPiArI2luY2x1ZGUgPGR0LWJpbmRpbmdzL3Jlc2V0L3N1bjUwaS1oNi1yLWNj dS5oPgo+ID4gPiArCj4gPiA+ICsvIHsKPiA+ID4gKwlpbnRlcnJ1cHQtcGFyZW50ID0gPCZnaWM+ Owo+ID4gPiArCSNhZGRyZXNzLWNlbGxzID0gPDI+Owo+ID4gPiArCSNzaXplLWNlbGxzID0gPDI+ Owo+ID4gPiArCj4gPiA+ICsJY3B1cyB7Cj4gPiA+ICsJCSNhZGRyZXNzLWNlbGxzID0gPDE+Owo+ ID4gPiArCQkjc2l6ZS1jZWxscyA9IDwwPjsKPiA+ID4gKwo+ID4gPiArCQljcHUwOiBjcHVAMCB7 Cj4gPiA+ICsJCQljb21wYXRpYmxlID0gImFybSxjb3J0ZXgtYTUzIjsKPiA+ID4gKwkJCWRldmlj ZV90eXBlID0gImNwdSI7Cj4gPiA+ICsJCQlyZWcgPSA8MD47Cj4gPiA+ICsJCQllbmFibGUtbWV0 aG9kID0gInBzY2kiOwo+ID4gPiArCQkJY2xvY2tzID0gPCZjY3UgQ0xLX0NQVVg+Owo+ID4gPiAr CQl9Owo+ID4gPiArCj4gPiA+ICsJCWNwdTE6IGNwdUAxIHsKPiA+ID4gKwkJCWNvbXBhdGlibGUg PSAiYXJtLGNvcnRleC1hNTMiOwo+ID4gPiArCQkJZGV2aWNlX3R5cGUgPSAiY3B1IjsKPiA+ID4g KwkJCXJlZyA9IDwxPjsKPiA+ID4gKwkJCWVuYWJsZS1tZXRob2QgPSAicHNjaSI7Cj4gPiA+ICsJ CQljbG9ja3MgPSA8JmNjdSBDTEtfQ1BVWD47Cj4gPiA+ICsJCX07Cj4gPiA+ICsKPiA+ID4gKwkJ Y3B1MjogY3B1QDIgewo+ID4gPiArCQkJY29tcGF0aWJsZSA9ICJhcm0sY29ydGV4LWE1MyI7Cj4g PiA+ICsJCQlkZXZpY2VfdHlwZSA9ICJjcHUiOwo+ID4gPiArCQkJcmVnID0gPDI+Owo+ID4gPiAr CQkJZW5hYmxlLW1ldGhvZCA9ICJwc2NpIjsKPiA+ID4gKwkJCWNsb2NrcyA9IDwmY2N1IENMS19D UFVYPjsKPiA+ID4gKwkJfTsKPiA+ID4gKwo+ID4gPiArCQljcHUzOiBjcHVAMyB7Cj4gPiA+ICsJ CQljb21wYXRpYmxlID0gImFybSxjb3J0ZXgtYTUzIjsKPiA+ID4gKwkJCWRldmljZV90eXBlID0g ImNwdSI7Cj4gPiA+ICsJCQlyZWcgPSA8Mz47Cj4gPiA+ICsJCQllbmFibGUtbWV0aG9kID0gInBz Y2kiOwo+ID4gPiArCQkJY2xvY2tzID0gPCZjY3UgQ0xLX0NQVVg+Owo+ID4gPiArCQl9Owo+ID4g PiArCX07Cj4gPiA+ICsKPiA+ID4gKwlyZXNlcnZlZC1tZW1vcnkgewo+ID4gPiArCQkjYWRkcmVz cy1jZWxscyA9IDwyPjsKPiA+ID4gKwkJI3NpemUtY2VsbHMgPSA8Mj47Cj4gPiA+ICsJCXJhbmdl czsKPiA+ID4gKwo+ID4gPiArCQkvKiA1MTJLaUIgcmVzZXJ2ZWQgZm9yIEFSTSBUcnVzdGVkIEZp cm13YXJlIChCTDMxKSAqLwo+ID4gPiArCQlzZWNtb25fcmVzZXJ2ZWQ6IHNlY21vbkA0MDAwMDAw MCB7Cj4gPiA+ICsJCQlyZWcgPSA8MHgwIDB4NDAwMDAwMDAgMHgwIDB4ODAwMDA+Owo+ID4gPiAr CQkJbm8tbWFwOwo+ID4gPiArCQl9Owo+ID4gPiArCX07Cj4gPiAKPiA+IEknbSBub3QgYSBmYW4g b2YgYWJvdmUuIElmIGFueXRoaW5nIGNoYW5nZXMgaW4gZnV0dXJlIGluIEJMMzEsIFUtQm9vdAo+ ID4gd291bGQKPiA+IG5lZWQgdG8gcmVjb25maWd1cmUgaXQgYW55d2F5LiBDYW4gd2UganVzdCBz a2lwIGl0Pwo+IAo+IEkgYW0gbm90IGEgZmFuIG5laXRoZXIsIGJ1dCBsYXN0IHRpbWUgSSBjaGVj a2VkIHRoaXMgaXMgbmVlZGVkIHRvIGJvb3QuCj4gSW5kZWVkIFRGLUEgaW5zZXJ0cyB0aGlzIG5v ZGUsIHdpdGggdGhlIHJpZ2h0IHZhbHVlcywgaW50byBVLUJvb3QncyBEVC4KPiBBbmQgdGhhdCdz IG5pY2VseSBwcmVzZXJ2ZWQgaWYgeW91IHVzZSB0aGF0IERUICgkZmR0Y29udHJvbGFkZHIpIGZv cgo+IHRoZSBrZXJuZWwgYXMgd2VsbC4KPiBCdXQgaWYgc29tZW9uZSAqbG9hZHMqIGEgRFRCIGlu dG8gVS1Cb290ICh0byAkZmR0X2FkZHJfciksIHRoZW4KPiBVLUJvb3QgZmFpbHMgdG8gcHJvcGFn YXRlIHRoZSAvcmVzZXJ2ZWQtbWVtb3J5IG5vZGUgaW50byB0aGF0IGNvcHkuCj4gVGhlcmUgZG9l cyBub3Qgc2VlbSB0byBiZSBhIGdsb2JhbCBub3Rpb24gb2YgcmVzZXJ2ZWQgbWVtb3J5IGluIFUt Qm9vdC4KPiBTb21lIGNvbW1hbmRzIChsaWtlIHRmdHApIGV4cGxpY2l0bHkgcGFyc2UgdGhlIGNv bnRyb2wgRFQgdG8gZmluZCBhbmQKPiByZXNwZWN0IHJlc2VydmVkIG1lbW9yeSByZWdpb25zLiBi b290bSBkb2VzIHRoYXQgYWxzbywgYnV0IG9ubHkgdG8KPiBhdm9pZCBwbGFjaW5nIHRoZSByYW1k aXNrIG9yIERUQiBpbnRvIHJlc2VydmVkIG1lbW9yeS4gVGhlIGluZm9ybWF0aW9uCj4gZW5kcyB1 cCBpbiBpbWFnZXMtPmxtYiwgYnV0IGlzIG5vdCB1c2VkIHRvIGdlbmVyYXRlIG9yIGFtZW5kIG5v ZGVzIGluCj4gdGhlIHRhcmdldCBEVC4KPiBTbyB0aGUgYml0cyBhbmQgcGllY2VzIGFyZSB0aGVy ZSwgYnV0IGl0IHdpbGwgcmVxdWlyZSBzb21lIGNvZGUgdG8gYmUKPiBhZGRlZCB0byB0aGUgZ2Vu ZXJpYyBVLUJvb3QgY29kZS4KPiAKPiBTbyB3aGF0IGRvIHlvdSB0aGluaz8gTGVhdmluZyB0aGlz IG91dCB3aWxsIHByZXZlbnQgbG9hZGluZyBEVEJzIGludG8KPiBVLUJvb3QsIGF0IHRoZSBtb21l bnQsIHdoaWNoIHNvdW5kcyBiYWQuIEkgc3VnZ2VzdCB3ZSBrZWVwIGl0IGluLCBmb3IKPiBub3cs IGl0IHNob3VsZCBub3QgcmVhbGx5IGh1cnQuIFUtQm9vdCB3aWxsIGhvcGVmdWxseSBzdGFydCB0 byBkbyB0aGUKPiByaWdodCB0aGluZyBzb29uLCB0aGVuIHdlIGNhbiBlaXRoZXIgcGhhc2UgaXQg b3V0IGhlcmUgKG1heWJlIHdoZW4gd2UKPiBhY3R1YWxseSBjaGFuZ2Ugc29tZXRoaW5nIGluIFRG LUEpLCBvciBsZXQgVS1Cb290IGZpeCBpdC4KClRCSCwgaWYgInNvb24iIGlzIHJlYWxseSBzb29u LCBJIHdvdWxkIHJhdGhlciB3YWl0IHdpdGggSDYxNiBEVCB1bnRpbCBVLUJvb3QgCnN1cHBvcnRz IGNhcnJ5aW5nIG92ZXIgcmVzZXJ2ZWQgbWVtb3J5IG5vZGVzLiBXaGF0ZXZlciB3ZSBkbyBub3cs IGl0IHdpbGwgaGF2ZSAKY29tcGF0aWJpbGl0eSBpc3N1ZXMuIElmIHdlIGludHJvZHVjZSByZXNl cnZlZCBtZW1vcnkgbm9kZSBub3csIHdlIGNhbid0IAplYXNpbHkgZHJvcCBpdCBsYXRlci4gQm9v dGxvYWRlcnMgYXJlIG5vdCB2ZXJ5IG9mdGVuIHVwZGF0ZWQsIGJ1dCBrZXJuZWxzIGFuZCAKRFRC IGZpbGVzIGFyZSwgYXQgbGVhc3QgaW4gbXkgZXhwZXJpZW5jZS4gU28gd2hlbiB3ZSBkZWNpZGUg dG8gZHJvcCB0aGUgbm9kZT8gCkFmdGVyIDEwIHllYXJzPyBBbHRlcm5hdGl2ZWx5LCByZXNlcnZl ZCBtZW1vcnkgbm9kZSBjYW4gYmUganVzdCBkcm9wcGVkIGFuZCAKYW55b25lIGxvYWRpbmcgRFRC IGZpbGUgZnJvbSBvdXRzaWRlIHdvdWxkIG5lZWQgdG8gbWFrZSBzdXJlIGl0J3MgcGF0Y2hlZC4g QnV0IAp0aGF0J3MgdW5leHBlY3RlZCBmcm9tIHVzZXIgcGVyc3BlY3RpdmUsIGFsdGhvdWdoIHBh dGNoaW5nIERUIGZpbGVzIGlzIGRvbmUgYnkgCnNvbWUgZGlzdHJvcy4KCkJlc3QgcmVnYXJkcywK SmVybmVqCgo+IAo+ID4gPiArCj4gPiA+ICsJb3NjMjRNOiBvc2MyNE0tY2xrIHsKPiA+ID4gKwkJ I2Nsb2NrLWNlbGxzID0gPDA+Owo+ID4gPiArCQljb21wYXRpYmxlID0gImZpeGVkLWNsb2NrIjsK PiA+ID4gKwkJY2xvY2stZnJlcXVlbmN5ID0gPDI0MDAwMDAwPjsKPiA+ID4gKwkJY2xvY2stb3V0 cHV0LW5hbWVzID0gIm9zYzI0TSI7Cj4gPiA+ICsJfTsKPiA+ID4gKwo+ID4gPiArCXBtdSB7Cj4g PiA+ICsJCWNvbXBhdGlibGUgPSAiYXJtLGNvcnRleC1hNTMtcG11IjsKPiA+ID4gKwkJaW50ZXJy dXB0cyA9IDxHSUNfU1BJIDE0MCBJUlFfVFlQRV9MRVZFTF9ISUdIPiwKPiA+ID4gKwkJCSAgICAg PEdJQ19TUEkgMTQxIElSUV9UWVBFX0xFVkVMX0hJR0g+LAo+ID4gPiArCQkJICAgICA8R0lDX1NQ SSAxNDIgSVJRX1RZUEVfTEVWRUxfSElHSD4sCj4gPiA+ICsJCQkgICAgIDxHSUNfU1BJIDE0MyBJ UlFfVFlQRV9MRVZFTF9ISUdIPjsKPiA+ID4gKwkJaW50ZXJydXB0LWFmZmluaXR5ID0gPCZjcHUw PiwgPCZjcHUxPiwgPCZjcHUyPiwgPCZjcHUzPjsKPiA+ID4gKwl9Owo+ID4gPiArCj4gPiA+ICsJ cHNjaSB7Cj4gPiA+ICsJCWNvbXBhdGlibGUgPSAiYXJtLHBzY2ktMC4yIjsKPiA+ID4gKwkJbWV0 aG9kID0gInNtYyI7Cj4gPiA+ICsJfTsKPiA+ID4gKwo+ID4gPiArCXRpbWVyIHsKPiA+ID4gKwkJ Y29tcGF0aWJsZSA9ICJhcm0sYXJtdjgtdGltZXIiOwo+ID4gPiArCQlhcm0sbm8tdGljay1pbi1z dXNwZW5kOwo+ID4gPiArCQlpbnRlcnJ1cHRzID0gPEdJQ19QUEkgMTMKPiA+ID4gKwkJCShHSUNf Q1BVX01BU0tfU0lNUExFKDQpIHwKPiA+IAo+ID4gSVJRX1RZUEVfTEVWRUxfSElHSCk+LAo+ID4g Cj4gPiA+ICsJCQkgICAgIDxHSUNfUFBJIDE0Cj4gPiA+ICsJCQkoR0lDX0NQVV9NQVNLX1NJTVBM RSg0KSB8Cj4gPiAKPiA+IElSUV9UWVBFX0xFVkVMX0hJR0gpPiwKPiA+IAo+ID4gPiArCQkJICAg ICA8R0lDX1BQSSAxMQo+ID4gPiArCQkJKEdJQ19DUFVfTUFTS19TSU1QTEUoNCkgfAo+ID4gCj4g PiBJUlFfVFlQRV9MRVZFTF9ISUdIKT4sCj4gPiAKPiA+ID4gKwkJCSAgICAgPEdJQ19QUEkgMTAK PiA+ID4gKwkJCShHSUNfQ1BVX01BU0tfU0lNUExFKDQpIHwKPiA+IAo+ID4gSVJRX1RZUEVfTEVW RUxfSElHSCk+Owo+ID4gCj4gPiA+ICsJfTsKPiA+IAo+ID4gVmVuZG9yIGtlcm5lbCBzZXRzIElS USB0byBsb3cgbGV2ZWwuIFdoYXQgaXMgdGhlIGRpZmZlcmVuY2U/Cj4gCj4gTm90aGluZywgcmVh bGx5LiBUaGUgcG9sYXJpdHkgb2YgU1BJIGxldmVsIElSUSBsaW5lcyBpcyBoYXJkd2lyZWQgYXQK PiBpbnRlZ3JhdGlvbiB0aW1lLCBib3RoIGF0IHRoZSBwZXJpcGhlcmFsIGFuZCB0aGUgR0lDIGRp c3RyaWJ1dG9yLiBUaGUKPiBHSUMgc29mdHdhcmUgaW50ZXJmYWNlIGhhcyBubyByZWdpc3RlciB0 byBjb250cm9sIHRoYXQgLSBhbGwgeW91IGNhbgo+IGNvbmZpZ3VyZSBpcyBlZGdlIG9yIGxldmVs LiBUaGVyZSAqaXMqIHNvbWUgdW5kZXJseWluZyBwb2xhcml0eSwgYnV0IHRvCj4gbXkgdW5kZXJz dGFuZGluZyB0aGlzIGlzIGp1c3QgbWVudGlvbmVkIGhlcmUgZm9yIGNvbXBsZXRlbmVzcywgYW5k Cj4gYmVjYXVzZSB0aGUgYmluZGluZyByZXF1aXJlcyB0byBuYW1lIG9uZS4KPiAKPiA+ID4gKwo+ ID4gPiArCXNvY0AwIHsKPiA+ID4gKwkJY29tcGF0aWJsZSA9ICJzaW1wbGUtYnVzIjsKPiA+ID4g KwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47Cj4gPiA+ICsJCSNzaXplLWNlbGxzID0gPDE+Owo+ID4g PiArCQlyYW5nZXMgPSA8MHgwIDB4MCAweDAgMHg0MDAwMDAwMD47Cj4gPiA+ICsKPiA+ID4gKwkJ c3lzY29uOiBzeXNjb25AMzAwMDAwMCB7Cj4gPiA+ICsJCQljb21wYXRpYmxlID0gImFsbHdpbm5l cixzdW41MGktaDYxNi1zeXN0ZW0tCj4gPiAKPiA+IGNvbnRyb2wiOwo+ID4gCj4gPiA+ICsJCQly ZWcgPSA8MHgwMzAwMDAwMCAweDEwMDA+Owo+ID4gPiArCQkJI2FkZHJlc3MtY2VsbHMgPSA8MT47 Cj4gPiA+ICsJCQkjc2l6ZS1jZWxscyA9IDwxPjsKPiA+ID4gKwkJCXJhbmdlczsKPiA+ID4gKwo+ ID4gPiArCQkJc3JhbV9jOiBzcmFtQDI4MDAwIHsKPiA+ID4gKwkJCQljb21wYXRpYmxlID0gIm1t aW8tc3JhbSI7Cj4gPiA+ICsJCQkJcmVnID0gPDB4MDAwMjgwMDAgMHgzMDAwMD47Cj4gPiA+ICsJ CQkJI2FkZHJlc3MtY2VsbHMgPSA8MT47Cj4gPiA+ICsJCQkJI3NpemUtY2VsbHMgPSA8MT47Cj4g PiA+ICsJCQkJcmFuZ2VzID0gPDAgMHgwMDAyODAwMCAweDMwMDAwPjsKPiA+ID4gKwkJCX07Cj4g PiA+ICsJCX07Cj4gPiA+ICsKPiA+ID4gKwkJY2N1OiBjbG9ja0AzMDAxMDAwIHsKPiA+ID4gKwkJ CWNvbXBhdGlibGUgPSAiYWxsd2lubmVyLHN1bjUwaS1oNjE2LWNjdSI7Cj4gPiA+ICsJCQlyZWcg PSA8MHgwMzAwMTAwMCAweDEwMDA+Owo+ID4gPiArCQkJY2xvY2tzID0gPCZvc2MyNE0+LCA8JnJ0 YyAwPiwgPCZydGMgMj47Cj4gPiA+ICsJCQljbG9jay1uYW1lcyA9ICJob3NjIiwgImxvc2MiLCAi aW9zYyI7Cj4gPiA+ICsJCQkjY2xvY2stY2VsbHMgPSA8MT47Cj4gPiA+ICsJCQkjcmVzZXQtY2Vs bHMgPSA8MT47Cj4gPiA+ICsJCX07Cj4gPiA+ICsKPiA+ID4gKwkJd2F0Y2hkb2c6IHdhdGNoZG9n QDMwMDkwYTAgewo+ID4gPiArCQkJY29tcGF0aWJsZSA9ICJhbGx3aW5uZXIsc3VuNTBpLWg2MTYt d2R0IiwKPiA+ID4gKwkJCQkgICAgICJhbGx3aW5uZXIsc3VuNmktYTMxLXdkdCI7Cj4gPiA+ICsJ CQlyZWcgPSA8MHgwMzAwOTBhMCAweDIwPjsKPiA+ID4gKwkJCWludGVycnVwdHMgPSA8R0lDX1NQ SSA1MAo+ID4gCj4gPiBJUlFfVFlQRV9MRVZFTF9ISUdIPjsKPiA+IAo+ID4gPiArCQkJY2xvY2tz ID0gPCZvc2MyNE0+Owo+ID4gPiArCQl9Owo+ID4gPiArCj4gPiA+ICsJCXBpbzogcGluY3RybEAz MDBiMDAwIHsKPiA+ID4gKwkJCWNvbXBhdGlibGUgPSAiYWxsd2lubmVyLHN1bjUwaS1oNjE2LQpw aW5jdHJsIjsKPiA+ID4gKwkJCXJlZyA9IDwweDAzMDBiMDAwIDB4NDAwPjsKPiA+ID4gKwkJCWlu dGVycnVwdHMgPSA8R0lDX1NQSSA1MQo+ID4gCj4gPiBJUlFfVFlQRV9MRVZFTF9ISUdIPiwKPiA+ IAo+ID4gPiArCQkJCSAgICAgPEdJQ19TUEkgNTIKPiA+IAo+ID4gSVJRX1RZUEVfTEVWRUxfSElH SD4sCj4gPiAKPiA+ID4gKwkJCQkgICAgIDxHSUNfU1BJIDUzCj4gPiAKPiA+IElSUV9UWVBFX0xF VkVMX0hJR0g+LAo+ID4gCj4gPiA+ICsJCQkJICAgICA8R0lDX1NQSSA0Mwo+ID4gCj4gPiBJUlFf VFlQRV9MRVZFTF9ISUdIPiwKPiA+IAo+ID4gPiArCQkJCSAgICAgPEdJQ19TUEkgNTQKPiA+IAo+ ID4gSVJRX1RZUEVfTEVWRUxfSElHSD4sCj4gPiAKPiA+ID4gKwkJCQkgICAgIDxHSUNfU1BJIDU1 Cj4gPiAKPiA+IElSUV9UWVBFX0xFVkVMX0hJR0g+LAo+ID4gCj4gPiA+ICsJCQkJICAgICA8R0lD X1NQSSA1Ngo+ID4gCj4gPiBJUlFfVFlQRV9MRVZFTF9ISUdIPiwKPiA+IAo+ID4gPiArCQkJCSAg ICAgPEdJQ19TUEkgNTcKPiA+IAo+ID4gSVJRX1RZUEVfTEVWRUxfSElHSD47Cj4gPiAKPiA+ID4g KwkJCWNsb2NrcyA9IDwmY2N1IENMS19BUEIxPiwgPCZvc2MyNE0+LCA8JnJ0Ywo+ID4gCj4gPiAw PjsKPiA+IAo+ID4gPiArCQkJY2xvY2stbmFtZXMgPSAiYXBiIiwgImhvc2MiLCAibG9zYyI7Cj4g PiA+ICsJCQlncGlvLWNvbnRyb2xsZXI7Cj4gPiA+ICsJCQkjZ3Bpby1jZWxscyA9IDwzPjsKPiA+ ID4gKwkJCWludGVycnVwdC1jb250cm9sbGVyOwo+ID4gPiArCQkJI2ludGVycnVwdC1jZWxscyA9 IDwzPjsKPiA+ID4gKwo+ID4gPiArCQkJZXh0X3JnbWlpX3BpbnM6IHJnbWlpLXBpbnMgewo+ID4g PiArCQkJCXBpbnMgPSAiUEkwIiwgIlBJMSIsICJQSTIiLCAKIlBJMyIsCj4gPiAKPiA+ICJQSTQi LAo+ID4gCj4gPiA+ICsJCQkJICAgICAgICJQSTUiLCAiUEk3IiwgIlBJOCIsIAoiUEk5IiwKPiA+ IAo+ID4gIlBJMTAiLAo+ID4gCj4gPiA+ICsJCQkJICAgICAgICJQSTExIiwgIlBJMTIiLCAiUEkx MyIsCj4gPiAKPiA+ICJQSTE0IiwgIlBJMTUiLAo+ID4gCj4gPiA+ICsJCQkJICAgICAgICJQSTE2 IjsKPiA+ID4gKwkJCQlmdW5jdGlvbiA9ICJlbWFjMCI7Cj4gPiA+ICsJCQkJZHJpdmUtc3RyZW5n dGggPSA8NDA+Owo+ID4gPiArCQkJfTsKPiA+ID4gKwo+ID4gPiArCQkJaTJjMF9waW5zOiBpMmMw LXBpbnMgewo+ID4gPiArCQkJCXBpbnMgPSAiUEk2IiwgIlBJNyI7Cj4gPiA+ICsJCQkJZnVuY3Rp b24gPSAiaTJjMCI7Cj4gPiA+ICsJCQl9Owo+ID4gPiArCj4gPiA+ICsJCQlpMmMzX3BoX3BpbnM6 IGkyYzMtcGgtcGlucyB7Cj4gPiA+ICsJCQkJcGlucyA9ICJQSDQiLCAiUEg1IjsKPiA+ID4gKwkJ CQlmdW5jdGlvbiA9ICJpMmMzIjsKPiA+ID4gKwkJCX07Cj4gPiA+ICsKPiA+ID4gKwkJCWlyX3J4 X3BpbjogaXItcngtcGluIHsKPiA+ID4gKwkJCQlwaW5zID0gIlBIMTAiOwo+ID4gPiArCQkJCWZ1 bmN0aW9uID0gImlyX3J4IjsKPiA+ID4gKwkJCX07Cj4gPiA+ICsKPiA+ID4gKwkJCW1tYzBfcGlu czogbW1jMC1waW5zIHsKPiA+ID4gKwkJCQlwaW5zID0gIlBGMCIsICJQRjEiLCAiUEYyIiwgCiJQ RjMiLAo+ID4gPiArCQkJCSAgICAgICAiUEY0IiwgIlBGNSI7Cj4gPiA+ICsJCQkJZnVuY3Rpb24g PSAibW1jMCI7Cj4gPiA+ICsJCQkJZHJpdmUtc3RyZW5ndGggPSA8MzA+Owo+ID4gPiArCQkJCWJp YXMtcHVsbC11cDsKPiA+ID4gKwkJCX07Cj4gPiA+ICsKPiA+ID4gKwkJCW1tYzFfcGluczogbW1j MS1waW5zIHsKPiA+ID4gKwkJCQlwaW5zID0gIlBHMCIsICJQRzEiLCAiUEcyIiwgCiJQRzMiLAo+ ID4gPiArCQkJCSAgICAgICAiUEc0IiwgIlBHNSI7Cj4gPiA+ICsJCQkJZnVuY3Rpb24gPSAibW1j MSI7Cj4gPiA+ICsJCQkJZHJpdmUtc3RyZW5ndGggPSA8MzA+Owo+ID4gPiArCQkJCWJpYXMtcHVs bC11cDsKPiA+ID4gKwkJCX07Cj4gPiA+ICsKPiA+ID4gKwkJCW1tYzJfcGluczogbW1jMi1waW5z IHsKPiA+ID4gKwkJCQlwaW5zID0gIlBDMCIsICJQQzEiLCAiUEM1IiwgCiJQQzYiLAo+ID4gPiAr CQkJCSAgICAgICAiUEM4IiwgIlBDOSIsICJQQzEwIiwKPiA+IAo+ID4gIlBDMTEiLAo+ID4gCj4g PiA+ICsJCQkJICAgICAgICJQQzEzIiwgIlBDMTQiLCAiUEMxNSIsCj4gPiAKPiA+ICJQQzE2IjsK PiA+IAo+ID4gPiArCQkJCWZ1bmN0aW9uID0gIm1tYzIiOwo+ID4gPiArCQkJCWRyaXZlLXN0cmVu Z3RoID0gPDMwPjsKPiA+ID4gKwkJCQliaWFzLXB1bGwtdXA7Cj4gPiA+ICsJCQl9Owo+ID4gPiAr Cj4gPiA+ICsJCQlzcGkwX3BpbnM6IHNwaTAtcGlucyB7Cj4gPiA+ICsJCQkJcGlucyA9ICJQQzAi LCAiUEMyIiwgIlBDMyIsIAoiUEM0IjsKPiA+ID4gKwkJCQlmdW5jdGlvbiA9ICJzcGkwIjsKPiA+ ID4gKwkJCX07Cj4gPiA+ICsKPiA+ID4gKwkJCXNwaTFfcGluczogc3BpMS1waW5zIHsKPiA+ID4g KwkJCQlwaW5zID0gIlBINiIsICJQSDciLCAiUEg4IjsKPiA+ID4gKwkJCQlmdW5jdGlvbiA9ICJz cGkxIjsKPiA+ID4gKwkJCX07Cj4gPiA+ICsKPiA+ID4gKwkJCXNwaTFfY3NfcGluOiBzcGkxLWNz LXBpbiB7Cj4gPiA+ICsJCQkJcGlucyA9ICJQSDUiOwo+ID4gPiArCQkJCWZ1bmN0aW9uID0gInNw aTEiOwo+ID4gPiArCQkJfTsKPiA+ID4gKwo+ID4gPiArCQkJdWFydDBfcGhfcGluczogdWFydDAt cGgtcGlucyB7Cj4gPiA+ICsJCQkJcGlucyA9ICJQSDAiLCAiUEgxIjsKPiA+ID4gKwkJCQlmdW5j dGlvbiA9ICJ1YXJ0MCI7Cj4gPiA+ICsJCQl9Owo+ID4gPiArCj4gPiA+ICsJCQl1YXJ0MV9waW5z OiB1YXJ0MS1waW5zIHsKPiA+ID4gKwkJCQlwaW5zID0gIlBHNiIsICJQRzciOwo+ID4gPiArCQkJ CWZ1bmN0aW9uID0gInVhcnQxIjsKPiA+ID4gKwkJCX07Cj4gPiA+ICsKPiA+ID4gKwkJCXVhcnQx X3J0c19jdHNfcGluczogdWFydDEtcnRzLWN0cy1waW5zIHsKPiA+ID4gKwkJCQlwaW5zID0gIlBH OCIsICJQRzkiOwo+ID4gPiArCQkJCWZ1bmN0aW9uID0gInVhcnQxIjsKPiA+ID4gKwkJCX07Cj4g PiAKPiA+IFBsZWFzZSBhZGQgL29taXQtaWYtbm8tcmVmLyB3aGVyZSBhcHBsaWNhYmxlLgo+IAo+ IE9LLiBJIHRoaW5rIG1vc3QgYm9hcmRzIGhhdmUgQmx1ZXRvb3RoIGF0IFVBUlQxLCB0aG91Z2gu Cj4gCj4gPiA+ICsJCX07Cj4gPiA+ICsKPiA+ID4gKwkJZ2ljOiBpbnRlcnJ1cHQtY29udHJvbGxl ckAzMDIxMDAwIHsKPiA+ID4gKwkJCWNvbXBhdGlibGUgPSAiYXJtLGdpYy00MDAiOwo+ID4gPiAr CQkJcmVnID0gPDB4MDMwMjEwMDAgMHgxMDAwPiwKPiA+ID4gKwkJCSAgICAgIDwweDAzMDIyMDAw IDB4MjAwMD4sCj4gPiA+ICsJCQkgICAgICA8MHgwMzAyNDAwMCAweDIwMDA+LAo+ID4gPiArCQkJ ICAgICAgPDB4MDMwMjYwMDAgMHgyMDAwPjsKPiA+ID4gKwkJCWludGVycnVwdHMgPSA8R0lDX1BQ SSA5Cj4gPiAKPiA+IChHSUNfQ1BVX01BU0tfU0lNUExFKDQpIHwgSVJRX1RZUEVfTEVWRUxfSElH SCk+Owo+ID4gCj4gPiA+ICsJCQlpbnRlcnJ1cHQtY29udHJvbGxlcjsKPiA+ID4gKwkJCSNpbnRl cnJ1cHQtY2VsbHMgPSA8Mz47Cj4gPiA+ICsJCX07Cj4gPiA+ICsKPiA+ID4gKwkJbW1jMDogbW1j QDQwMjAwMDAgewo+ID4gPiArCQkJY29tcGF0aWJsZSA9ICJhbGx3aW5uZXIsc3VuNTBpLWg2MTYt bW1jIiwKPiA+ID4gKwkJCQkgICAgICJhbGx3aW5uZXIsc3VuNTBpLWExMDAtCm1tYyI7Cj4gPiA+ ICsJCQlyZWcgPSA8MHgwNDAyMDAwMCAweDEwMDA+Owo+ID4gPiArCQkJY2xvY2tzID0gPCZjY3Ug Q0xLX0JVU19NTUMwPiwgPCZjY3UKPiA+IAo+ID4gQ0xLX01NQzA+Owo+ID4gCj4gPiA+ICsJCQlj bG9jay1uYW1lcyA9ICJhaGIiLCAibW1jIjsKPiA+ID4gKwkJCXJlc2V0cyA9IDwmY2N1IFJTVF9C VVNfTU1DMD47Cj4gPiA+ICsJCQlyZXNldC1uYW1lcyA9ICJhaGIiOwo+ID4gPiArCQkJaW50ZXJy dXB0cyA9IDxHSUNfU1BJIDM1Cj4gPiAKPiA+IElSUV9UWVBFX0xFVkVMX0hJR0g+Owo+ID4gCj4g PiA+ICsJCQlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOwo+ID4gPiArCQkJcGluY3RybC0wID0g PCZtbWMwX3BpbnM+Owo+ID4gPiArCQkJc3RhdHVzID0gImRpc2FibGVkIjsKPiA+ID4gKwkJCW1h eC1mcmVxdWVuY3kgPSA8MTUwMDAwMDAwPjsKPiA+ID4gKwkJCWNhcC1zZC1oaWdoc3BlZWQ7Cj4g PiA+ICsJCQljYXAtbW1jLWhpZ2hzcGVlZDsKPiA+ID4gKwkJCW1tYy1kZHItM18zdjsKPiA+ID4g KwkJCWNhcC1zZGlvLWlycTsKPiA+ID4gKwkJCSNhZGRyZXNzLWNlbGxzID0gPDE+Owo+ID4gPiAr CQkJI3NpemUtY2VsbHMgPSA8MD47Cj4gPiA+ICsJCX07Cj4gPiA+ICsKPiA+ID4gKwkJbW1jMTog bW1jQDQwMjEwMDAgewo+ID4gPiArCQkJY29tcGF0aWJsZSA9ICJhbGx3aW5uZXIsc3VuNTBpLWg2 MTYtbW1jIiwKPiA+ID4gKwkJCQkgICAgICJhbGx3aW5uZXIsc3VuNTBpLWExMDAtCm1tYyI7Cj4g PiA+ICsJCQlyZWcgPSA8MHgwNDAyMTAwMCAweDEwMDA+Owo+ID4gPiArCQkJY2xvY2tzID0gPCZj Y3UgQ0xLX0JVU19NTUMxPiwgPCZjY3UKPiA+IAo+ID4gQ0xLX01NQzE+Owo+ID4gCj4gPiA+ICsJ CQljbG9jay1uYW1lcyA9ICJhaGIiLCAibW1jIjsKPiA+ID4gKwkJCXJlc2V0cyA9IDwmY2N1IFJT VF9CVVNfTU1DMT47Cj4gPiA+ICsJCQlyZXNldC1uYW1lcyA9ICJhaGIiOwo+ID4gPiArCQkJaW50 ZXJydXB0cyA9IDxHSUNfU1BJIDM2Cj4gPiAKPiA+IElSUV9UWVBFX0xFVkVMX0hJR0g+Owo+ID4g Cj4gPiA+ICsJCQlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOwo+ID4gPiArCQkJcGluY3RybC0w ID0gPCZtbWMxX3BpbnM+Owo+ID4gPiArCQkJc3RhdHVzID0gImRpc2FibGVkIjsKPiA+ID4gKwkJ CW1heC1mcmVxdWVuY3kgPSA8MTUwMDAwMDAwPjsKPiA+ID4gKwkJCWNhcC1zZC1oaWdoc3BlZWQ7 Cj4gPiA+ICsJCQljYXAtbW1jLWhpZ2hzcGVlZDsKPiA+ID4gKwkJCW1tYy1kZHItM18zdjsKPiA+ ID4gKwkJCWNhcC1zZGlvLWlycTsKPiA+ID4gKwkJCSNhZGRyZXNzLWNlbGxzID0gPDE+Owo+ID4g PiArCQkJI3NpemUtY2VsbHMgPSA8MD47Cj4gPiA+ICsJCX07Cj4gPiA+ICsKPiA+ID4gKwkJbW1j MjogbW1jQDQwMjIwMDAgewo+ID4gPiArCQkJY29tcGF0aWJsZSA9ICJhbGx3aW5uZXIsc3VuNTBp LWg2MTYtZW1tYyIsCj4gPiA+ICsJCQkJICAgICAiYWxsd2lubmVyLHN1bjUwaS1hMTAwLQplbW1j IjsKPiA+ID4gKwkJCXJlZyA9IDwweDA0MDIyMDAwIDB4MTAwMD47Cj4gPiA+ICsJCQljbG9ja3Mg PSA8JmNjdSBDTEtfQlVTX01NQzI+LCA8JmNjdQo+ID4gCj4gPiBDTEtfTU1DMj47Cj4gPiAKPiA+ ID4gKwkJCWNsb2NrLW5hbWVzID0gImFoYiIsICJtbWMiOwo+ID4gPiArCQkJcmVzZXRzID0gPCZj Y3UgUlNUX0JVU19NTUMyPjsKPiA+ID4gKwkJCXJlc2V0LW5hbWVzID0gImFoYiI7Cj4gPiA+ICsJ CQlpbnRlcnJ1cHRzID0gPEdJQ19TUEkgMzcKPiA+IAo+ID4gSVJRX1RZUEVfTEVWRUxfSElHSD47 Cj4gPiAKPiA+ID4gKwkJCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7Cj4gPiA+ICsJCQlwaW5j dHJsLTAgPSA8Jm1tYzJfcGlucz47Cj4gPiA+ICsJCQlzdGF0dXMgPSAiZGlzYWJsZWQiOwo+ID4g PiArCQkJbWF4LWZyZXF1ZW5jeSA9IDwxNTAwMDAwMDA+Owo+ID4gPiArCQkJY2FwLXNkLWhpZ2hz cGVlZDsKPiA+ID4gKwkJCWNhcC1tbWMtaGlnaHNwZWVkOwo+ID4gPiArCQkJbW1jLWRkci0zXzN2 Owo+ID4gPiArCQkJY2FwLXNkaW8taXJxOwo+ID4gPiArCQkJI2FkZHJlc3MtY2VsbHMgPSA8MT47 Cj4gPiA+ICsJCQkjc2l6ZS1jZWxscyA9IDwwPjsKPiA+ID4gKwkJfTsKPiA+ID4gKwo+ID4gPiAr CQl1YXJ0MDogc2VyaWFsQDUwMDAwMDAgewo+ID4gPiArCQkJY29tcGF0aWJsZSA9ICJzbnBzLGR3 LWFwYi11YXJ0IjsKPiA+ID4gKwkJCXJlZyA9IDwweDA1MDAwMDAwIDB4NDAwPjsKPiA+ID4gKwkJ CWludGVycnVwdHMgPSA8R0lDX1NQSSAwIApJUlFfVFlQRV9MRVZFTF9ISUdIPjsKPiA+ID4gKwkJ CXJlZy1zaGlmdCA9IDwyPjsKPiA+ID4gKwkJCXJlZy1pby13aWR0aCA9IDw0PjsKPiA+ID4gKwkJ CWNsb2NrcyA9IDwmY2N1IENMS19CVVNfVUFSVDA+Owo+ID4gPiArCQkJcmVzZXRzID0gPCZjY3Ug UlNUX0JVU19VQVJUMD47Cj4gPiA+ICsJCQlzdGF0dXMgPSAiZGlzYWJsZWQiOwo+ID4gPiArCQl9 Owo+ID4gPiArCj4gPiA+ICsJCXVhcnQxOiBzZXJpYWxANTAwMDQwMCB7Cj4gPiA+ICsJCQljb21w YXRpYmxlID0gInNucHMsZHctYXBiLXVhcnQiOwo+ID4gPiArCQkJcmVnID0gPDB4MDUwMDA0MDAg MHg0MDA+Owo+ID4gPiArCQkJaW50ZXJydXB0cyA9IDxHSUNfU1BJIDEgCklSUV9UWVBFX0xFVkVM X0hJR0g+Owo+ID4gPiArCQkJcmVnLXNoaWZ0ID0gPDI+Owo+ID4gPiArCQkJcmVnLWlvLXdpZHRo ID0gPDQ+Owo+ID4gPiArCQkJY2xvY2tzID0gPCZjY3UgQ0xLX0JVU19VQVJUMT47Cj4gPiA+ICsJ CQlyZXNldHMgPSA8JmNjdSBSU1RfQlVTX1VBUlQxPjsKPiA+ID4gKwkJCXN0YXR1cyA9ICJkaXNh YmxlZCI7Cj4gPiA+ICsJCX07Cj4gPiA+ICsKPiA+ID4gKwkJdWFydDI6IHNlcmlhbEA1MDAwODAw IHsKPiA+ID4gKwkJCWNvbXBhdGlibGUgPSAic25wcyxkdy1hcGItdWFydCI7Cj4gPiA+ICsJCQly ZWcgPSA8MHgwNTAwMDgwMCAweDQwMD47Cj4gPiA+ICsJCQlpbnRlcnJ1cHRzID0gPEdJQ19TUEkg MiAKSVJRX1RZUEVfTEVWRUxfSElHSD47Cj4gPiA+ICsJCQlyZWctc2hpZnQgPSA8Mj47Cj4gPiA+ ICsJCQlyZWctaW8td2lkdGggPSA8ND47Cj4gPiA+ICsJCQljbG9ja3MgPSA8JmNjdSBDTEtfQlVT X1VBUlQyPjsKPiA+ID4gKwkJCXJlc2V0cyA9IDwmY2N1IFJTVF9CVVNfVUFSVDI+Owo+ID4gPiAr CQkJc3RhdHVzID0gImRpc2FibGVkIjsKPiA+ID4gKwkJfTsKPiA+ID4gKwo+ID4gPiArCQl1YXJ0 Mzogc2VyaWFsQDUwMDBjMDAgewo+ID4gPiArCQkJY29tcGF0aWJsZSA9ICJzbnBzLGR3LWFwYi11 YXJ0IjsKPiA+ID4gKwkJCXJlZyA9IDwweDA1MDAwYzAwIDB4NDAwPjsKPiA+ID4gKwkJCWludGVy cnVwdHMgPSA8R0lDX1NQSSAzIApJUlFfVFlQRV9MRVZFTF9ISUdIPjsKPiA+ID4gKwkJCXJlZy1z aGlmdCA9IDwyPjsKPiA+ID4gKwkJCXJlZy1pby13aWR0aCA9IDw0PjsKPiA+ID4gKwkJCWNsb2Nr cyA9IDwmY2N1IENMS19CVVNfVUFSVDM+Owo+ID4gPiArCQkJcmVzZXRzID0gPCZjY3UgUlNUX0JV U19VQVJUMz47Cj4gPiA+ICsJCQlzdGF0dXMgPSAiZGlzYWJsZWQiOwo+ID4gPiArCQl9Owo+ID4g PiArCj4gPiA+ICsJCXVhcnQ0OiBzZXJpYWxANTAwMTAwMCB7Cj4gPiA+ICsJCQljb21wYXRpYmxl ID0gInNucHMsZHctYXBiLXVhcnQiOwo+ID4gPiArCQkJcmVnID0gPDB4MDUwMDEwMDAgMHg0MDA+ Owo+ID4gPiArCQkJaW50ZXJydXB0cyA9IDxHSUNfU1BJIDQgCklSUV9UWVBFX0xFVkVMX0hJR0g+ Owo+ID4gPiArCQkJcmVnLXNoaWZ0ID0gPDI+Owo+ID4gPiArCQkJcmVnLWlvLXdpZHRoID0gPDQ+ Owo+ID4gPiArCQkJY2xvY2tzID0gPCZjY3UgQ0xLX0JVU19VQVJUND47Cj4gPiA+ICsJCQlyZXNl dHMgPSA8JmNjdSBSU1RfQlVTX1VBUlQ0PjsKPiA+ID4gKwkJCXN0YXR1cyA9ICJkaXNhYmxlZCI7 Cj4gPiA+ICsJCX07Cj4gPiA+ICsKPiA+ID4gKwkJdWFydDU6IHNlcmlhbEA1MDAxNDAwIHsKPiA+ ID4gKwkJCWNvbXBhdGlibGUgPSAic25wcyxkdy1hcGItdWFydCI7Cj4gPiA+ICsJCQlyZWcgPSA8 MHgwNTAwMTQwMCAweDQwMD47Cj4gPiA+ICsJCQlpbnRlcnJ1cHRzID0gPEdJQ19TUEkgNSAKSVJR X1RZUEVfTEVWRUxfSElHSD47Cj4gPiA+ICsJCQlyZWctc2hpZnQgPSA8Mj47Cj4gPiA+ICsJCQly ZWctaW8td2lkdGggPSA8ND47Cj4gPiA+ICsJCQljbG9ja3MgPSA8JmNjdSBDTEtfQlVTX1VBUlQ1 PjsKPiA+ID4gKwkJCXJlc2V0cyA9IDwmY2N1IFJTVF9CVVNfVUFSVDU+Owo+ID4gPiArCQkJc3Rh dHVzID0gImRpc2FibGVkIjsKPiA+ID4gKwkJfTsKPiA+ID4gKwo+ID4gPiArCQlpMmMwOiBpMmNA NTAwMjAwMCB7Cj4gPiA+ICsJCQljb21wYXRpYmxlID0gImFsbHdpbm5lcixzdW41MGktaDYxNi1p MmMiLAo+ID4gPiArCQkJCSAgICAgImFsbHdpbm5lcixzdW42aS1hMzEtaTJjIjsKPiA+ID4gKwkJ CXJlZyA9IDwweDA1MDAyMDAwIDB4NDAwPjsKPiA+ID4gKwkJCWludGVycnVwdHMgPSA8R0lDX1NQ SSA2IApJUlFfVFlQRV9MRVZFTF9ISUdIPjsKPiA+ID4gKwkJCWNsb2NrcyA9IDwmY2N1IENMS19C VVNfSTJDMD47Cj4gPiA+ICsJCQlyZXNldHMgPSA8JmNjdSBSU1RfQlVTX0kyQzA+Owo+ID4gPiAr CQkJcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKPiA+ID4gKwkJCXBpbmN0cmwtMCA9IDwmaTJj MF9waW5zPjsKPiA+ID4gKwkJCXN0YXR1cyA9ICJkaXNhYmxlZCI7Cj4gPiA+ICsJCQkjYWRkcmVz cy1jZWxscyA9IDwxPjsKPiA+ID4gKwkJCSNzaXplLWNlbGxzID0gPDA+Owo+ID4gPiArCQl9Owo+ ID4gPiArCj4gPiA+ICsJCWkyYzE6IGkyY0A1MDAyNDAwIHsKPiA+ID4gKwkJCWNvbXBhdGlibGUg PSAiYWxsd2lubmVyLHN1bjUwaS1oNjE2LWkyYyIsCj4gPiA+ICsJCQkJICAgICAiYWxsd2lubmVy LHN1bjZpLWEzMS1pMmMiOwo+ID4gPiArCQkJcmVnID0gPDB4MDUwMDI0MDAgMHg0MDA+Owo+ID4g PiArCQkJaW50ZXJydXB0cyA9IDxHSUNfU1BJIDcgCklSUV9UWVBFX0xFVkVMX0hJR0g+Owo+ID4g PiArCQkJY2xvY2tzID0gPCZjY3UgQ0xLX0JVU19JMkMxPjsKPiA+ID4gKwkJCXJlc2V0cyA9IDwm Y2N1IFJTVF9CVVNfSTJDMT47Cj4gPiA+ICsJCQlzdGF0dXMgPSAiZGlzYWJsZWQiOwo+ID4gPiAr CQkJI2FkZHJlc3MtY2VsbHMgPSA8MT47Cj4gPiA+ICsJCQkjc2l6ZS1jZWxscyA9IDwwPjsKPiA+ ID4gKwkJfTsKPiA+ID4gKwo+ID4gPiArCQlpMmMyOiBpMmNANTAwMjgwMCB7Cj4gPiA+ICsJCQlj b21wYXRpYmxlID0gImFsbHdpbm5lcixzdW41MGktaDYxNi1pMmMiLAo+ID4gPiArCQkJCSAgICAg ImFsbHdpbm5lcixzdW42aS1hMzEtaTJjIjsKPiA+ID4gKwkJCXJlZyA9IDwweDA1MDAyODAwIDB4 NDAwPjsKPiA+ID4gKwkJCWludGVycnVwdHMgPSA8R0lDX1NQSSA4IApJUlFfVFlQRV9MRVZFTF9I SUdIPjsKPiA+ID4gKwkJCWNsb2NrcyA9IDwmY2N1IENMS19CVVNfSTJDMj47Cj4gPiA+ICsJCQly ZXNldHMgPSA8JmNjdSBSU1RfQlVTX0kyQzI+Owo+ID4gPiArCQkJc3RhdHVzID0gImRpc2FibGVk IjsKPiA+ID4gKwkJCSNhZGRyZXNzLWNlbGxzID0gPDE+Owo+ID4gPiArCQkJI3NpemUtY2VsbHMg PSA8MD47Cj4gPiA+ICsJCX07Cj4gPiA+ICsKPiA+ID4gKwkJaTJjMzogaTJjQDUwMDJjMDAgewo+ ID4gPiArCQkJY29tcGF0aWJsZSA9ICJhbGx3aW5uZXIsc3VuNTBpLWg2MTYtaTJjIiwKPiA+ID4g KwkJCQkgICAgICJhbGx3aW5uZXIsc3VuNmktYTMxLWkyYyI7Cj4gPiA+ICsJCQlyZWcgPSA8MHgw NTAwMmMwMCAweDQwMD47Cj4gPiA+ICsJCQlpbnRlcnJ1cHRzID0gPEdJQ19TUEkgOSAKSVJRX1RZ UEVfTEVWRUxfSElHSD47Cj4gPiA+ICsJCQljbG9ja3MgPSA8JmNjdSBDTEtfQlVTX0kyQzM+Owo+ ID4gPiArCQkJcmVzZXRzID0gPCZjY3UgUlNUX0JVU19JMkMzPjsKPiA+ID4gKwkJCXN0YXR1cyA9 ICJkaXNhYmxlZCI7Cj4gPiA+ICsJCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKPiA+ID4gKwkJCSNz aXplLWNlbGxzID0gPDA+Owo+ID4gPiArCQl9Owo+ID4gPiArCj4gPiA+ICsJCWkyYzQ6IGkyY0A1 MDAzMDAwIHsKPiA+ID4gKwkJCWNvbXBhdGlibGUgPSAiYWxsd2lubmVyLHN1bjUwaS1oNjE2LWky YyIsCj4gPiA+ICsJCQkJICAgICAiYWxsd2lubmVyLHN1bjZpLWEzMS1pMmMiOwo+ID4gPiArCQkJ cmVnID0gPDB4MDUwMDMwMDAgMHg0MDA+Owo+ID4gPiArCQkJaW50ZXJydXB0cyA9IDxHSUNfU1BJ IDEwCj4gPiAKPiA+IElSUV9UWVBFX0xFVkVMX0hJR0g+Owo+ID4gCj4gPiA+ICsJCQljbG9ja3Mg PSA8JmNjdSBDTEtfQlVTX0kyQzQ+Owo+ID4gPiArCQkJcmVzZXRzID0gPCZjY3UgUlNUX0JVU19J MkM0PjsKPiA+ID4gKwkJCXN0YXR1cyA9ICJkaXNhYmxlZCI7Cj4gPiA+ICsJCQkjYWRkcmVzcy1j ZWxscyA9IDwxPjsKPiA+ID4gKwkJCSNzaXplLWNlbGxzID0gPDA+Owo+ID4gPiArCQl9Owo+ID4g PiArCj4gPiA+ICsJCXNwaTA6IHNwaUA1MDEwMDAwIHsKPiA+ID4gKwkJCWNvbXBhdGlibGUgPSAi YWxsd2lubmVyLHN1bjUwaS1oNjE2LXNwaSIsCj4gPiA+ICsJCQkJICAgICAiYWxsd2lubmVyLHN1 bjhpLWgzLXNwaSI7Cj4gPiA+ICsJCQlyZWcgPSA8MHgwNTAxMDAwMCAweDEwMDA+Owo+ID4gPiAr CQkJaW50ZXJydXB0cyA9IDxHSUNfU1BJIDEyCj4gPiAKPiA+IElSUV9UWVBFX0xFVkVMX0hJR0g+ Owo+ID4gCj4gPiA+ICsJCQljbG9ja3MgPSA8JmNjdSBDTEtfQlVTX1NQSTA+LCA8JmNjdQo+ID4g Cj4gPiBDTEtfU1BJMD47Cj4gPiAKPiA+ID4gKwkJCWNsb2NrLW5hbWVzID0gImFoYiIsICJtb2Qi Owo+ID4gPiArCQkJcmVzZXRzID0gPCZjY3UgUlNUX0JVU19TUEkwPjsKPiA+ID4gKwkJCXBpbmN0 cmwtbmFtZXMgPSAiZGVmYXVsdCI7Cj4gPiA+ICsJCQlwaW5jdHJsLTAgPSA8JnNwaTBfcGlucz47 Cj4gPiA+ICsJCQlzdGF0dXMgPSAiZGlzYWJsZWQiOwo+ID4gPiArCQkJI2FkZHJlc3MtY2VsbHMg PSA8MT47Cj4gPiA+ICsJCQkjc2l6ZS1jZWxscyA9IDwwPjsKPiA+ID4gKwkJfTsKPiA+ID4gKwo+ ID4gPiArCQlzcGkxOiBzcGlANTAxMTAwMCB7Cj4gPiA+ICsJCQljb21wYXRpYmxlID0gImFsbHdp bm5lcixzdW41MGktaDYxNi1zcGkiLAo+ID4gPiArCQkJCSAgICAgImFsbHdpbm5lcixzdW44aS1o My1zcGkiOwo+ID4gPiArCQkJcmVnID0gPDB4MDUwMTEwMDAgMHgxMDAwPjsKPiA+ID4gKwkJCWlu dGVycnVwdHMgPSA8R0lDX1NQSSAxMwo+ID4gCj4gPiBJUlFfVFlQRV9MRVZFTF9ISUdIPjsKPiA+ IAo+ID4gPiArCQkJY2xvY2tzID0gPCZjY3UgQ0xLX0JVU19TUEkxPiwgPCZjY3UKPiA+IAo+ID4g Q0xLX1NQSTE+Owo+ID4gCj4gPiA+ICsJCQljbG9jay1uYW1lcyA9ICJhaGIiLCAibW9kIjsKPiA+ ID4gKwkJCXJlc2V0cyA9IDwmY2N1IFJTVF9CVVNfU1BJMT47Cj4gPiA+ICsJCQlwaW5jdHJsLW5h bWVzID0gImRlZmF1bHQiOwo+ID4gPiArCQkJcGluY3RybC0wID0gPCZzcGkxX3BpbnM+Owo+ID4g PiArCQkJc3RhdHVzID0gImRpc2FibGVkIjsKPiA+ID4gKwkJCSNhZGRyZXNzLWNlbGxzID0gPDE+ Owo+ID4gPiArCQkJI3NpemUtY2VsbHMgPSA8MD47Cj4gPiA+ICsJCX07Cj4gPiA+ICsKPiA+ID4g KwkJZW1hYzA6IGV0aGVybmV0QDUwMjAwMDAgewo+ID4gPiArCQkJY29tcGF0aWJsZSA9ICJhbGx3 aW5uZXIsc3VuNTBpLWg2MTYtZW1hYyIsCj4gPiA+ICsJCQkJICAgICAiYWxsd2lubmVyLHN1bjUw aS1hNjQtCmVtYWMiOwo+ID4gPiArCQkJc3lzY29uID0gPCZzeXNjb24+Owo+ID4gPiArCQkJcmVn ID0gPDB4MDUwMjAwMDAgMHgxMDAwMD47Cj4gPiA+ICsJCQlpbnRlcnJ1cHRzID0gPEdJQ19TUEkg MTQKPiA+IAo+ID4gSVJRX1RZUEVfTEVWRUxfSElHSD47Cj4gPiAKPiA+ID4gKwkJCWludGVycnVw dC1uYW1lcyA9ICJtYWNpcnEiOwo+ID4gPiArCQkJcmVzZXRzID0gPCZjY3UgUlNUX0JVU19FTUFD MD47Cj4gPiA+ICsJCQlyZXNldC1uYW1lcyA9ICJzdG1tYWNldGgiOwo+ID4gPiArCQkJY2xvY2tz ID0gPCZjY3UgQ0xLX0JVU19FTUFDMD47Cj4gPiA+ICsJCQljbG9jay1uYW1lcyA9ICJzdG1tYWNl dGgiOwo+ID4gPiArCQkJc3RhdHVzID0gImRpc2FibGVkIjsKPiA+ID4gKwo+ID4gPiArCQkJbWRp bzA6IG1kaW8gewo+ID4gPiArCQkJCWNvbXBhdGlibGUgPSAic25wcyxkd21hYy1tZGlvIjsKPiA+ ID4gKwkJCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKPiA+ID4gKwkJCQkjc2l6ZS1jZWxscyA9IDww PjsKPiA+ID4gKwkJCX07Cj4gPiA+ICsJCX07Cj4gPiA+ICsKPiA+ID4gKwkJcnRjOiBydGNANzAw MDAwMCB7Cj4gPiA+ICsJCQljb21wYXRpYmxlID0gImFsbHdpbm5lcixzdW41MGktaDYxNi1ydGMi Owo+ID4gPiArCQkJcmVnID0gPDB4MDcwMDAwMDAgMHg0MDA+Owo+ID4gPiArCQkJaW50ZXJydXB0 cyA9IDxHSUNfU1BJIDEwMQo+ID4gCj4gPiBJUlFfVFlQRV9MRVZFTF9ISUdIPjsKPiA+IAo+ID4g QWJvdmUgaW50ZXJydXB0IGRvZXNuJ3Qgc2VlbSB0byBiZSBjb3JyZWN0IGFjY29yZGluZyB0byBk b2N1bWVudGF0aW9uLiBJdAo+ID4gc2hvdWxkIGJlIDEwNC4KPiAKPiBUaGF0IGlzIGEgdmVyeSBn b29kIGNhdGNoLCAxMDEvMTMzIGlzIGluZGVlZCB0aGUgUlRDIElSUSBudW1iZXIgb24gdGhlCj4g SDYuCj4gCj4gPiA+ICsJCQljbG9ja3MgPSA8JnJfY2N1IENMS19SX0FQQjFfUlRDPiwgCjwmb3Nj MjRNPiwKPiA+ID4gKwkJCQkgPCZjY3UgQ0xLX1BMTF9TWVNURU1fMzJLPjsKPiA+ID4gKwkJCWNs b2NrLW5hbWVzID0gImJ1cyIsICJob3NjIiwKPiA+ID4gKwkJCQkgICAgICAicGxsLTMyayI7Cj4g PiA+ICsJCQljbG9jay1vdXRwdXQtbmFtZXMgPSAib3NjMzJrIiwgIm9zYzMyay0Kb3V0IiwKPiA+ IAo+ID4gImlvc2MiOwo+ID4gCj4gPiA+ICsJCQkjY2xvY2stY2VsbHMgPSA8MT47Cj4gPiA+ICsJ CX07Cj4gPiA+ICsKPiA+ID4gKwkJcl9jY3U6IGNsb2NrQDcwMTAwMDAgewo+ID4gPiArCQkJY29t cGF0aWJsZSA9ICJhbGx3aW5uZXIsc3VuNTBpLWg2MTYtci1jY3UiOwo+ID4gPiArCQkJcmVnID0g PDB4MDcwMTAwMDAgMHgyMTA+Owo+ID4gPiArCQkJY2xvY2tzID0gPCZvc2MyNE0+LCA8JnJ0YyAw PiwgPCZydGMgMj4sCj4gPiA+ICsJCQkJIDwmY2N1IENMS19QTExfUEVSSVBIMD47Cj4gPiA+ICsJ CQljbG9jay1uYW1lcyA9ICJob3NjIiwgImxvc2MiLCAiaW9zYyIsICJwbGwtCj4gPiAKPiA+IHBl cmlwaCI7Cj4gPiAKPiA+ID4gKwkJCSNjbG9jay1jZWxscyA9IDwxPjsKPiA+ID4gKwkJCSNyZXNl dC1jZWxscyA9IDwxPjsKPiA+ID4gKwkJfTsKPiA+ID4gKwo+ID4gPiArCQlyX3BpbzogcGluY3Ry bEA3MDIyMDAwIHsKPiA+ID4gKwkJCWNvbXBhdGlibGUgPSAiYWxsd2lubmVyLHN1bjUwaS1oNjE2 LXItCj4gPiAKPiA+IHBpbmN0cmwiOwo+ID4gCj4gPiA+ICsJCQlyZWcgPSA8MHgwNzAyMjAwMCAw eDQwMD47Cj4gPiA+ICsJCQlpbnRlcnJ1cHRzID0gPEdJQ19TUEkgNDMKPiA+IAo+ID4gSVJRX1RZ UEVfTEVWRUxfSElHSD47Cj4gPiAKPiA+IEFib3ZlIGludGVycnVwdCBpcyBhbHJlYWR5IHVzZWQg Zm9yIHBvcnQgRSBpbiBmaXJzdCBwaW5jdHJsLiBJcyB0aGlzCj4gPiBzaGFyZWQKPiA+IHNvbWVo b3c/Cj4gCj4gSHVoLCBhbm90aGVyIGdvb2QgZmluZC4gVGhlIG1hbnVhbCBkb2VzIG5vdCBzZWVt IHRvIG1lbnRpb24gYSBHUElPX0wKPiBpbnRlcnJ1cHQsIGFuZCB0aGUgdHdvIFBMIHBpbnMgZG8g bm90IHJlcG9ydCBmdW5jdGlvbiA2Lgo+IHdoZW4gcHJvYmluZyB0aGUgcmVnaXN0ZXJzIGluIFUt Qm9vdCB0aGVyZSBhcmUgbm8gb3RoZXIgcGlucyAobmVpdGhlciBpbgo+IFBvcnRMIG5vciBQb3J0 TSksIGFsc28gdGhlIGludGVycnVwdCByZWdpc3RlcnMgKEArMHgyMDApIGFyZSBub3QKPiBpbXBs ZW1lbnRlZC4gU28gdGhlcmUgZG9lcyBub3Qgc2VlbSB0byBiZSBhbiBpbnRlcnJ1cHQuCj4gCj4g VGhlIHBpbmN0cmwgZHJpdmVyIGRvZXMgbm90IHNlZW0gdG8gY2FyZSAoYnkgbG9va2luZyBhdCB0 aGUgY29kZSwKPiBhbmQgYnkgYm9vdGluZyBpdCksIGFzIC5pcnFfYmFua3MgaXMgMCwgc28gbm8g SVJRIGNvbnRyb2xsZXIKPiBmdW5jdGlvbmFsaXR5IGlzIGV2ZXIgaW5zdGFudGlhdGVkLgo+IFRo ZSBiaW5kaW5nIG1ha2VzIHRoZSBpbnRlcnJ1cHRzIHByb3BlcnR5IG1hbmRhdG9yeSwgdGhvdWdo LCBzbyB0aGlzCj4gbmVlZHMgdG8gYmUgYW1lbmRlZCB0aGVyZS4KPiAKPiAKPiBJIHdpbGwgdHJ5 IHRvIHBvc3QgYSBuZXcgdmVyc2lvbiB0aWxsIHRoZSBlbmQgb2YgdGhlIHdlZWsuCj4gCj4gVGhh bmtzIQo+IEFuZHJlCj4gCj4gPiBCZXN0IHJlZ2FyZHMsCj4gPiBKZXJuZWoKPiA+IAo+ID4gPiAr CQkJY2xvY2tzID0gPCZyX2NjdSBDTEtfUl9BUEIxPiwgPCZvc2MyNE0+LAo+ID4gCj4gPiA8JnJ0 YyAwPjsKPiA+IAo+ID4gPiArCQkJY2xvY2stbmFtZXMgPSAiYXBiIiwgImhvc2MiLCAibG9zYyI7 Cj4gPiA+ICsJCQlncGlvLWNvbnRyb2xsZXI7Cj4gPiA+ICsJCQkjZ3Bpby1jZWxscyA9IDwzPjsK PiA+ID4gKwkJCWludGVycnVwdC1jb250cm9sbGVyOwo+ID4gPiArCQkJI2ludGVycnVwdC1jZWxs cyA9IDwzPjsKPiA+ID4gKwo+ID4gPiArCQkJcl9pMmNfcGluczogci1pMmMtcGlucyB7Cj4gPiA+ ICsJCQkJcGlucyA9ICJQTDAiLCAiUEwxIjsKPiA+ID4gKwkJCQlmdW5jdGlvbiA9ICJzX2kyYyI7 Cj4gPiA+ICsJCQl9Owo+ID4gPiArCj4gPiA+ICsJCQlyX3JzYl9waW5zOiByLXJzYi1waW5zIHsK PiA+ID4gKwkJCQlwaW5zID0gIlBMMCIsICJQTDEiOwo+ID4gPiArCQkJCWZ1bmN0aW9uID0gInNf cnNiIjsKPiA+ID4gKwkJCX07Cj4gPiA+ICsJCX07Cj4gPiA+ICsKPiA+ID4gKwkJaXI6IGlyQDcw NDAwMDAgewo+ID4gPiArCQkJY29tcGF0aWJsZSA9ICJhbGx3aW5uZXIsc3VuNTBpLWg2MTYtaXIi LAo+ID4gPiArCQkJCSAgICAgImFsbHdpbm5lcixzdW42aS1hMzEtaXIiOwo+ID4gPiArCQkJcmVn ID0gPDB4MDcwNDAwMDAgMHg0MDA+Owo+ID4gPiArCQkJaW50ZXJydXB0cyA9IDxHSUNfU1BJIDEw Ngo+ID4gCj4gPiBJUlFfVFlQRV9MRVZFTF9ISUdIPjsKPiA+IAo+ID4gPiArCQkJY2xvY2tzID0g PCZyX2NjdSBDTEtfUl9BUEIxX0lSPiwKPiA+ID4gKwkJCQkgPCZyX2NjdSBDTEtfSVI+Owo+ID4g PiArCQkJY2xvY2stbmFtZXMgPSAiYXBiIiwgImlyIjsKPiA+ID4gKwkJCXJlc2V0cyA9IDwmcl9j Y3UgUlNUX1JfQVBCMV9JUj47Cj4gPiA+ICsJCQlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOwo+ ID4gPiArCQkJcGluY3RybC0wID0gPCZpcl9yeF9waW4+Owo+ID4gPiArCQkJc3RhdHVzID0gImRp c2FibGVkIjsKPiA+ID4gKwkJfTsKPiA+ID4gKwo+ID4gPiArCQlyX2kyYzogaTJjQDcwODE0MDAg ewo+ID4gPiArCQkJY29tcGF0aWJsZSA9ICJhbGx3aW5uZXIsc3VuNTBpLWg2MTYtaTJjIiwKPiA+ ID4gKwkJCQkgICAgICJhbGx3aW5uZXIsc3VuNmktYTMxLWkyYyI7Cj4gPiA+ICsJCQlyZWcgPSA8 MHgwNzA4MTQwMCAweDQwMD47Cj4gPiA+ICsJCQlpbnRlcnJ1cHRzID0gPEdJQ19TUEkgMTA1Cj4g PiAKPiA+IElSUV9UWVBFX0xFVkVMX0hJR0g+Owo+ID4gCj4gPiA+ICsJCQljbG9ja3MgPSA8JnJf Y2N1IENMS19SX0FQQjJfSTJDPjsKPiA+ID4gKwkJCXJlc2V0cyA9IDwmcl9jY3UgUlNUX1JfQVBC Ml9JMkM+Owo+ID4gPiArCQkJc3RhdHVzID0gImRpc2FibGVkIjsKPiA+ID4gKwkJCSNhZGRyZXNz LWNlbGxzID0gPDE+Owo+ID4gPiArCQkJI3NpemUtY2VsbHMgPSA8MD47Cj4gPiA+ICsJCX07Cj4g PiA+ICsKPiA+ID4gKwkJcl9yc2I6IHJzYkA3MDgzMDAwIHsKPiA+ID4gKwkJCWNvbXBhdGlibGUg PSAiYWxsd2lubmVyLHN1bjUwaS1oNjE2LXJzYiIsCj4gPiA+ICsJCQkJICAgICAiYWxsd2lubmVy LHN1bjhpLWEyMy1yc2IiOwo+ID4gPiArCQkJcmVnID0gPDB4MDcwODMwMDAgMHg0MDA+Owo+ID4g PiArCQkJaW50ZXJydXB0cyA9IDxHSUNfU1BJIDEwOQo+ID4gCj4gPiBJUlFfVFlQRV9MRVZFTF9I SUdIPjsKPiA+IAo+ID4gPiArCQkJY2xvY2tzID0gPCZyX2NjdSBDTEtfUl9BUEIyX1JTQj47Cj4g PiA+ICsJCQljbG9jay1mcmVxdWVuY3kgPSA8MzAwMDAwMD47Cj4gPiA+ICsJCQlyZXNldHMgPSA8 JnJfY2N1IFJTVF9SX0FQQjJfUlNCPjsKPiA+ID4gKwkJCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVs dCI7Cj4gPiA+ICsJCQlwaW5jdHJsLTAgPSA8JnJfcnNiX3BpbnM+Owo+ID4gPiArCQkJc3RhdHVz ID0gImRpc2FibGVkIjsKPiA+ID4gKwkJCSNhZGRyZXNzLWNlbGxzID0gPDE+Owo+ID4gPiArCQkJ I3NpemUtY2VsbHMgPSA8MD47Cj4gPiA+ICsJCX07Cj4gPiA+ICsJfTsKPiA+ID4gK307CgoKCgoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJt LWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3Jn Cmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtl cm5lbAo=