From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04on2044.outbound.protection.outlook.com [40.107.6.44]) by sourceware.org (Postfix) with ESMTPS id 0C0013858D38 for ; Mon, 11 Dec 2023 15:14:14 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 0C0013858D38 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 0C0013858D38 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=40.107.6.44 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1702307660; cv=pass; b=kRn+a4EqKuuvq/9It901uaCkqI150AfOLzJ+X1UKBLJWpMZ50yVtUHjYPBO1LGn1wc5AcpQTuVtx+QaLOjVkCXkTv0H8Rkfr17IwLGXwNiC4ZrtExtDTQDa80LGPph4oK/Tjl8OaZ8mpAuWC/ZP6d9i7+jSm5a72yy6qnp3er+w= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1702307660; c=relaxed/simple; bh=ox1uSU1oh79GAL/31p/dlHhvVtK/DSNfM+2XdnN/H+g=; h=DKIM-Signature:DKIM-Signature:Message-ID:Date:From:To:Subject: MIME-Version; b=Z5t6jbRCfsuSGrmTMYV1lhjtIxbhHvlce5dKHbwTWlrBMS9PrclXh16KUKOGSq1wt+KsbCGLKUM2YDuVOrIBjNSdkohilHDnWgPkgyJ7ykfz52Evc3YeLF5XPQbzfAJNPpF3uo7f+1RThg2dtdIdPhiaeSZBYBo6LKzmpRkUUIc= ARC-Authentication-Results: i=3; server2.sourceware.org ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=Ix5QCpEsi9JasIf0/4/4B6hyVcvfPCXzzOBMOzqrMwhvXxEeWKjYP7XhKh17iZKWd4ShDfXAgQnuHmh+59G195vRO+4RSF4M5WS0Rp0Pn/2XyQKUnoJKDts96R4QK3ph/aQLQW+3B+AU0p4ozspd80OHp573vkF+3zX7VnFIigfXZeiRvY+yRiFeVrIzsRTAQvkwqENkiwzESPOp+Txeh65rJ3GSiijUszW0mABDJ27WQwjFLCBGHrwFiidZnQCveMCUg6r8wzqWdpKo4KxUTaMOuGH2ux9f4mIbFHtNYiFb4U3/iQjadqmn24bMmUpXfYcr2XQgIqxklR8LIrvSug== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=otZmLAokzWF7w1B3uvM9KsW6dDxA/rxmT4l+OniueqA=; b=UV7Y10pOC6pXvZyXuQJm6SuDsKPDGBjhCaXBaCLy0gGQzHMUh6f231AUjMdBBQ3sQN1vL2ZuU9y63nZgMvbgV6RF8bgKWX8DgW7OwYok3gvk7HBCICohUlCDzm7lh1+1Jgstf8Dwc/YMW73UIxngZj/UL60dkwFTrKo6vBl6tzlf1CJoAaFvUSzrsFn7esjW413yP13GywI4F7L6Pd/vEYQ+7qN0sMKzLVxLnCqrwqJEHIeIZvNYExEvECg8azWKqT7wBU2NbIYnDLeb6ks3h7HvEX6+JJAjOueyNChlaenBAtkVWdjo9D21esiTC9Vzdtyb18/NoeWceSS7PzDzCg== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 63.35.35.123) smtp.rcpttodomain=gcc.gnu.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=otZmLAokzWF7w1B3uvM9KsW6dDxA/rxmT4l+OniueqA=; b=yId8Eo5AHFsvtC/Ix9TkJ/VHORg111e0gSKVb9Y98vYq21gEHPQFfxoIrlECmWZm29HsYX3fVT5hN/unXi8V6vLsneGJPzsQE3I36QjRPawZx9TqCyG5WA22SofS8ji/YgguVmH4jmlorLrnR3TkXANV9Nx3JLa/X2li76/EK4k= Received: from AM6PR04CA0042.eurprd04.prod.outlook.com (2603:10a6:20b:f0::19) by DBBPR08MB6203.eurprd08.prod.outlook.com (2603:10a6:10:201::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7068.32; Mon, 11 Dec 2023 15:14:09 +0000 Received: from AMS0EPF000001A7.eurprd05.prod.outlook.com (2603:10a6:20b:f0:cafe::55) by AM6PR04CA0042.outlook.office365.com (2603:10a6:20b:f0::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7068.32 via Frontend Transport; Mon, 11 Dec 2023 15:14:09 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; pr=C Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by AMS0EPF000001A7.mail.protection.outlook.com (10.167.16.234) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7091.18 via Frontend Transport; Mon, 11 Dec 2023 15:14:09 +0000 Received: ("Tessian outbound 7c4ecdadb9e7:v228"); Mon, 11 Dec 2023 15:14:09 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: b9c7c249bdf1aa78 X-CR-MTA-TID: 64aa7808 Received: from 5c357a9d98b2.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 2C6303A1-7646-4FC7-ABAE-1F09CFE150A8.1; Mon, 11 Dec 2023 15:14:02 +0000 Received: from EUR04-HE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 5c357a9d98b2.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Mon, 11 Dec 2023 15:14:02 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=k8C81bdzqG920rQ1EGs5rEQOBl1aWdsQYppwMbVan86lOSolfDrK3E8edQZULHIx+kG0PsNRShVVRXBHtaMRRIN82+IrTTlCH26kbluE67JLpDjLHFK4N6XeS8mNVBrEWak1rzD42Ffv5NCHpkOBjsGkI6ZIKkKxH22mOvP0DwXsZlUMicy/i+wfciS3zXLnU76VzF/DwGQmrsiEFhgK8G3ZdNOyIclIEfDIVEIioX0rZoE6ujK3nLnL+0F+ZRKfuRwvPknMQrVVwWGpYrSW4M3Adm1t+vSueHvTfuAMi3UiZmKnirFKZjhqd4coOU04oZeO2AnTziUYg47Nw4OCaQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=otZmLAokzWF7w1B3uvM9KsW6dDxA/rxmT4l+OniueqA=; b=APS/0Z8hyYmOag4OcHmffRNd7Zwqr7j8gLmCqpoGLcVf0e2Ui+3HhIXiD6LpuMVLMuxArgnEoGAB+pn+2+ArMgmI7W4Sipf8/1LW+uIQlzFDU6mVUI0GfvbbOYPLDBZ7KdfwX1ALkzdNpXKP023tZvT1Je4CBMyvSY2G0ijJuCUSDcZULr1gQGMc80mazND6xAWJlb5BLQS1Lcv3nj5+BW37F89Cplu4YWQbNWFphKYkLUK0TfMBKoE8V/C2RQrVwgrhdJ9M5CLAJLqduGzRG5a4Uopu9lEflawyA9839w8VXSCdEHAT5bHDYhFIMta+4fhXMVq2DtGViBME1x3T7A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=otZmLAokzWF7w1B3uvM9KsW6dDxA/rxmT4l+OniueqA=; b=yId8Eo5AHFsvtC/Ix9TkJ/VHORg111e0gSKVb9Y98vYq21gEHPQFfxoIrlECmWZm29HsYX3fVT5hN/unXi8V6vLsneGJPzsQE3I36QjRPawZx9TqCyG5WA22SofS8ji/YgguVmH4jmlorLrnR3TkXANV9Nx3JLa/X2li76/EK4k= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from DB9PR08MB6957.eurprd08.prod.outlook.com (2603:10a6:10:2bc::10) by VI0PR08MB10445.eurprd08.prod.outlook.com (2603:10a6:800:205::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7068.32; Mon, 11 Dec 2023 15:13:57 +0000 Received: from DB9PR08MB6957.eurprd08.prod.outlook.com ([fe80::fa23:b315:7321:3fe4]) by DB9PR08MB6957.eurprd08.prod.outlook.com ([fe80::fa23:b315:7321:3fe4%3]) with mapi id 15.20.7068.031; Mon, 11 Dec 2023 15:13:57 +0000 Content-Type: multipart/mixed; boundary="------------0AYEna4PghsOSbjsMrjSwyrd" Message-ID: <3caeab7f-c38f-4640-bc51-d8245c05c860@arm.com> Date: Mon, 11 Dec 2023 15:13:03 +0000 User-Agent: Mozilla Thunderbird Content-Language: en-US From: Richard Ball To: "gcc-patches@gcc.gnu.org" , Richard Earnshaw , Richard Sandiford , Marcus Shawcroft , Kyrylo Tkachov Subject: [PATCH v4] aarch64: SVE/NEON Bridging intrinsics X-ClientProxiedBy: LO4P123CA0669.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:316::19) To DB9PR08MB6957.eurprd08.prod.outlook.com (2603:10a6:10:2bc::10) MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: DB9PR08MB6957:EE_|VI0PR08MB10445:EE_|AMS0EPF000001A7:EE_|DBBPR08MB6203:EE_ X-MS-Office365-Filtering-Correlation-Id: 6e8b4104-8239-4aff-fc73-08dbfa5bd323 x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: Fm3C822J7kguvb4jFrjBGrFnAk2d0VclgGemjQj+iz7xZyXv2lg4xs34Qwv2BNzs3xQMj9jwhA0BgKNe5aFZfghraJxQmqDkcsa5atKS36XyvilO1F5uJbFg/6TE19V73WzeQ1PlW/EKGVelSYK3awntB4dnNzneck0MjrN/mWIIhev+nPkLwQ9AOKE948HPJRNfn9c/E32eE4onC+fMJbHyiSj6Cg7p1jjl/4jktR9FpwK9TO68cfP/at8MvO4v+42V8V9r7pRto1kYadt/LvuoVK6m6uodmVDPCd4B1MC+Z3/q8Mz108xD0yVhdMV6CxEk2j6qWMmUsKxiTUvgGFrqyO1l7PkwxdQDj8h9p0rwC2L76EiNiLBUiJFLdw+lmaki+DkgUfhRpXmXVNVVQtxRNmktHO/5u2nTqjrDDxdpjbuq+TNloqgXjt7guU/9T7MeeYLxJiAaCnMB87bNcG9STvKyDc2DUQBuZQf0W3jyNh+EEjo+d99N37Dg0n19Pm/iDu/dlFk1WHNh/whU3WTUtI2L4rqgy3SDZD18jmtpq1SBP6z3sDsmLtfiRWVeHi0S1v7aqMDNlcU5fHMskU0OGNO3m0VpFftAuC+MLoYJYo8NkV2O39DxSOW1Iy72QRb2D+wGsmV/EeHZ1qj46ivotxD8UZ12x+ZGQjIxkXANdylYmMwJV8cX1ncM+YdN X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DB9PR08MB6957.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(39860400002)(346002)(366004)(136003)(396003)(376002)(230922051799003)(64100799003)(451199024)(186009)(1800799012)(31686004)(84970400001)(26005)(2616005)(6512007)(478600001)(33964004)(6666004)(6506007)(38100700002)(36756003)(86362001)(31696002)(41300700001)(2906002)(44832011)(66946007)(5660300002)(235185007)(6486002)(66556008)(66476007)(110136005)(6636002)(8676002)(316002)(8936002)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR08MB10445 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AMS0EPF000001A7.eurprd05.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 096f563c-02b4-482a-731f-08dbfa5bcbe3 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: bmjTq+a0yQMmMbBQD8lP8VIU+/rqAYIcbGrEWAG6suQPuxMRJx1fd6DpMZrp/9BlMcEsQkL3eCmohrCkTRQGgzOT0sDUrjIuqABGcxwVPpYgQo2mPI4SN2SV7qo8T4OmQzB2pdeglJibjNGQP+YXr4WrH19dJYKvcUJrSPYm3RRj8II0SiRPXHEEavYOAJYCQMWlrVdw4Szp6DdmvBv57Oh2HnMxE3QCFvn33aLdPKwDMwQsyd+goskoO0+gz73DJYYYfij2FLaB3sD6CifegV/u4Gx45uZ8Fvn6Tpk9A9s6hfmV7kVHd99Nf7SQx+XT/BetRigz4xYUZEXVXzc4HONvPCceqRDV6X/WHxfsmXoHLFkvIjGPZbnsq+qZMpJ3VxUHFS8Hgj2bBQoNkiG0xbmt7EZ4r9YkG6d/v8TsSeZthY4WiuR98c5aePnMCgKemrlD41drcP0wQb2709X71UzT/Q6EoA/T0/NV8uViv4e6WuOkgF7+/zpKACwt/VBUaADQK4DSlf5Q+BfnRGMMJgX3M3a/iCQK6YSDeyfg1QMjgNHLDKegu39ItjHjlKL3Xh425KRf+oHCu0fcko49zuXPSxaoe+EXNpYxBtJtLgXnf7pRVBhHldkx3CecBnZPQr5X8t76siocth90EDned6tvEOBgdXfyJyKRAAh7RqJf5Dol0awFF4G3fagCBtlMSwFliVuLnBgdEMiiM7Smd9GTtrxVVg+yltvkkTOFxhiJxtrB4DopZYH4vlPsCb4yRas+H3Iv07nhxJ3Y4qyKcRpsfaw22t3sby0a2DgSr+08exl0xauS2latxVw9gvbF X-Forefront-Antispam-Report: CIP:63.35.35.123;CTRY:IE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:64aa7808-outbound-1.mta.getcheckrecipient.com;PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com;CAT:NONE;SFS:(13230031)(4636009)(136003)(39860400002)(376002)(346002)(396003)(230922051799003)(1800799012)(451199024)(64100799003)(82310400011)(186009)(46966006)(40470700004)(36840700001)(6512007)(40460700003)(33964004)(6506007)(36860700001)(5660300002)(47076005)(26005)(235185007)(336012)(2616005)(44832011)(36756003)(6486002)(40480700001)(70586007)(70206006)(6636002)(84970400001)(2906002)(31686004)(82740400003)(41300700001)(81166007)(356005)(478600001)(86362001)(8676002)(8936002)(31696002)(110136005)(316002)(6666004)(43740500002);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Dec 2023 15:14:09.3594 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6e8b4104-8239-4aff-fc73-08dbfa5bd323 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[63.35.35.123];Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: AMS0EPF000001A7.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB6203 X-Spam-Status: No, score=-12.0 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,FORGED_SPF_HELO,GIT_PATCH_0,KAM_DMARC_NONE,KAM_LOTSOFHASH,KAM_SHORT,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_NONE,TXREP,T_SCC_BODY_TEXT_LINE,UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --------------0AYEna4PghsOSbjsMrjSwyrd Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit ACLE has added intrinsics to bridge between SVE and Neon. The NEON_SVE Bridge adds intrinsics that allow conversions between NEON and SVE vectors. This patch adds support to GCC for the following 3 intrinsics: svset_neonq, svget_neonq and svdup_neonq gcc/ChangeLog: * config.gcc: Adds new header to config. * config/aarch64/aarch64-builtins.cc (enum aarch64_type_qualifiers): Moved to header file. (ENTRY): Likewise. (enum aarch64_simd_type): Likewise. (struct aarch64_simd_type_info): Remove static. (GTY): Likewise. * config/aarch64/aarch64-c.cc (aarch64_pragma_aarch64): Defines pragma for arm_neon_sve_bridge.h. * config/aarch64/aarch64-sve-builtins-base.h: New intrinsics. * config/aarch64/aarch64-sve-builtins-base.cc (class svget_neonq_impl): New intrinsic implementation. (class svset_neonq_impl): Likewise. (class svdup_neonq_impl): Likewise. (NEON_SVE_BRIDGE_FUNCTION): New intrinsics. * config/aarch64/aarch64-sve-builtins-functions.h (NEON_SVE_BRIDGE_FUNCTION): Defines macro for NEON_SVE_BRIDGE functions. * config/aarch64/aarch64-sve-builtins-shapes.h: New shapes. * config/aarch64/aarch64-sve-builtins-shapes.cc (parse_element_type): Add NEON element types. (parse_type): Likewise. (struct get_neonq_def): Defines function shape for get_neonq. (struct set_neonq_def): Defines function shape for set_neonq. (struct dup_neonq_def): Defines function shape for dup_neonq. * config/aarch64/aarch64-sve-builtins.cc (DEF_SVE_TYPE_SUFFIX): Changed to be called through SVE_NEON macro. (DEF_SVE_NEON_TYPE_SUFFIX): Defines macro for NEON_SVE_BRIDGE type suffixes. (DEF_NEON_SVE_FUNCTION): Defines macro for NEON_SVE_BRIDGE functions. (function_resolver::infer_neon128_vector_type): Infers type suffix for overloaded functions. (init_neon_sve_builtins): Initialise neon_sve_bridge_builtins for LTO. (handle_arm_neon_sve_bridge_h): Handles #pragma arm_neon_sve_bridge.h. * config/aarch64/aarch64-sve-builtins.def (DEF_SVE_NEON_TYPE_SUFFIX): Macro for handling neon_sve type suffixes. (bf16): Replace entry with neon-sve entry. (f16): Likewise. (f32): Likewise. (f64): Likewise. (s8): Likewise. (s16): Likewise. (s32): Likewise. (s64): Likewise. (u8): Likewise. (u16): Likewise. (u32): Likewise. (u64): Likewise. * config/aarch64/aarch64-sve-builtins.h (GCC_AARCH64_SVE_BUILTINS_H): Include aarch64-builtins.h. (ENTRY): Add aarch64_simd_type definiton. (enum aarch64_simd_type): Add neon information to type_suffix_info. (struct type_suffix_info): New function. * config/aarch64/aarch64-sve.md (@aarch64_sve_get_neonq_): New intrinsic insn for big endian. (@aarch64_sve_set_neonq_): Likewise. * config/aarch64/aarch64.cc (aarch64_init_builtins): Add call to init_neon_sve_builtins. * config/aarch64/iterators.md: Add UNSPEC_SET_NEONQ. * config/aarch64/aarch64-builtins.h: New file. * config/aarch64/aarch64-neon-sve-bridge-builtins.def: New file. * config/aarch64/arm_neon_sve_bridge.h: New file. gcc/testsuite/ChangeLog: * gcc.target/aarch64/sve/acle/asm/test_sve_acle.h: Add include arm_neon_sve_bridge header file * gcc.dg/torture/neon-sve-bridge.c: New test. * gcc.target/aarch64/sve/acle/asm/dup_neonq_bf16.c: New test. * gcc.target/aarch64/sve/acle/asm/dup_neonq_f16.c: New test. * gcc.target/aarch64/sve/acle/asm/dup_neonq_f32.c: New test. * gcc.target/aarch64/sve/acle/asm/dup_neonq_f64.c: New test. * gcc.target/aarch64/sve/acle/asm/dup_neonq_s16.c: New test. * gcc.target/aarch64/sve/acle/asm/dup_neonq_s32.c: New test. * gcc.target/aarch64/sve/acle/asm/dup_neonq_s64.c: New test. * gcc.target/aarch64/sve/acle/asm/dup_neonq_s8.c: New test. * gcc.target/aarch64/sve/acle/asm/dup_neonq_u16.c: New test. * gcc.target/aarch64/sve/acle/asm/dup_neonq_u32.c: New test. * gcc.target/aarch64/sve/acle/asm/dup_neonq_u64.c: New test. * gcc.target/aarch64/sve/acle/asm/dup_neonq_u8.c: New test. * gcc.target/aarch64/sve/acle/asm/get_neonq_bf16.c: New test. * gcc.target/aarch64/sve/acle/asm/get_neonq_f16.c: New test. * gcc.target/aarch64/sve/acle/asm/get_neonq_f32.c: New test. * gcc.target/aarch64/sve/acle/asm/get_neonq_f64.c: New test. * gcc.target/aarch64/sve/acle/asm/get_neonq_s16.c: New test. * gcc.target/aarch64/sve/acle/asm/get_neonq_s32.c: New test. * gcc.target/aarch64/sve/acle/asm/get_neonq_s64.c: New test. * gcc.target/aarch64/sve/acle/asm/get_neonq_s8.c: New test. * gcc.target/aarch64/sve/acle/asm/get_neonq_u16.c: New test. * gcc.target/aarch64/sve/acle/asm/get_neonq_u32.c: New test. * gcc.target/aarch64/sve/acle/asm/get_neonq_u64.c: New test. * gcc.target/aarch64/sve/acle/asm/get_neonq_u8.c: New test. * gcc.target/aarch64/sve/acle/asm/set_neonq_bf16.c: New test. * gcc.target/aarch64/sve/acle/asm/set_neonq_f16.c: New test. * gcc.target/aarch64/sve/acle/asm/set_neonq_f32.c: New test. * gcc.target/aarch64/sve/acle/asm/set_neonq_f64.c: New test. * gcc.target/aarch64/sve/acle/asm/set_neonq_s16.c: New test. * gcc.target/aarch64/sve/acle/asm/set_neonq_s32.c: New test. * gcc.target/aarch64/sve/acle/asm/set_neonq_s64.c: New test. * gcc.target/aarch64/sve/acle/asm/set_neonq_s8.c: New test. * gcc.target/aarch64/sve/acle/asm/set_neonq_u16.c: New test. * gcc.target/aarch64/sve/acle/asm/set_neonq_u32.c: New test. * gcc.target/aarch64/sve/acle/asm/set_neonq_u64.c: New test. * gcc.target/aarch64/sve/acle/asm/set_neonq_u8.c: New test. * gcc.target/aarch64/sve/acle/general-c/dup_neonq_1.c: New test. * gcc.target/aarch64/sve/acle/general-c/get_neonq_1.c: New test. * gcc.target/aarch64/sve/acle/general-c/set_neonq_1.c: New test. --------------0AYEna4PghsOSbjsMrjSwyrd Content-Type: text/plain; charset=UTF-8; name="SVE-NEON.patch" Content-Disposition: attachment; filename="SVE-NEON.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2djYy9jb25maWcuZ2NjIGIvZ2NjL2NvbmZpZy5nY2MKaW5kZXggNDg4NGFj YTRkZDg3ZjU1MDBlMjk2ODc0NzdiMDlhMDRmZDJhZGEwOS4uYzMxZTM0MmZjNDEyZTQ0MTU5ODFj MjI5MTg1NzFiMDEzYjFmMGFmMyAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy5nY2MKKysrIGIvZ2Nj L2NvbmZpZy5nY2MKQEAgLTM0NSw3ICszNDUsNyBAQCBtMzJjKi0qLSopCiAgICAgICAgIDs7CiBh YXJjaDY0Ki0qLSopCiAJY3B1X3R5cGU9YWFyY2g2NAotCWV4dHJhX2hlYWRlcnM9ImFybV9mcDE2 LmggYXJtX25lb24uaCBhcm1fYmYxNi5oIGFybV9hY2xlLmggYXJtX3N2ZS5oIGFybV9zbWUuaCIK KwlleHRyYV9oZWFkZXJzPSJhcm1fZnAxNi5oIGFybV9uZW9uLmggYXJtX2JmMTYuaCBhcm1fYWNs ZS5oIGFybV9zdmUuaCBhcm1fc21lLmggYXJtX25lb25fc3ZlX2JyaWRnZS5oIgogCWNfdGFyZ2V0 X29ianM9ImFhcmNoNjQtYy5vIgogCWN4eF90YXJnZXRfb2Jqcz0iYWFyY2g2NC1jLm8iCiAJZF90 YXJnZXRfb2Jqcz0iYWFyY2g2NC1kLm8iCmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FhcmNoNjQv YWFyY2g2NC1idWlsdGlucy5oIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtYnVpbHRpbnMu aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwLi4yMzU2NjgxZTQ5MjM3NjVmNzBkNDZmNzQ3MzlkNzEzOTljYzY3M2RkCi0t LSAvZGV2L251bGwKKysrIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtYnVpbHRpbnMuaApA QCAtMCwwICsxLDk5IEBACisvKiBCdWlsdGlucycgZGVzY3JpcHRpb24gZm9yIEFBcmNoNjQgU0lN RCBhcmNoaXRlY3R1cmUuCisgICBDb3B5cmlnaHQgKEMpIDIwMjMgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCisgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHQ0MuCisKKyAgIEdDQyBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Cisg ICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieQorICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp b24gMywgb3IgKGF0IHlvdXIgb3B0aW9uKQorICAgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIEdD QyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQK KyAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUgR05VCisgICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENP UFlJTkczLiAgSWYgbm90IHNlZQorICAgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAg Ki8KKyNpZm5kZWYgR0NDX0FBUkNINjRfQlVJTFRJTlNfSAorI2RlZmluZSBHQ0NfQUFSQ0g2NF9C VUlMVElOU19ICisKK2VudW0gYWFyY2g2NF90eXBlX3F1YWxpZmllcnMKK3sKKyAgLyogVCBmb28u ICAqLworICBxdWFsaWZpZXJfbm9uZSA9IDB4MCwKKyAgLyogdW5zaWduZWQgVCBmb28uICAqLwor ICBxdWFsaWZpZXJfdW5zaWduZWQgPSAweDEsIC8qIDEgPDwgMCAgKi8KKyAgLyogY29uc3QgVCBm b28uICAqLworICBxdWFsaWZpZXJfY29uc3QgPSAweDIsIC8qIDEgPDwgMSAgKi8KKyAgLyogVCAq Zm9vLiAgKi8KKyAgcXVhbGlmaWVyX3BvaW50ZXIgPSAweDQsIC8qIDEgPDwgMiAgKi8KKyAgLyog VXNlZCB3aGVuIGV4cGFuZGluZyBhcmd1bWVudHMgaWYgYW4gb3BlcmFuZCBjb3VsZAorICAgICBi ZSBhbiBpbW1lZGlhdGUuICAqLworICBxdWFsaWZpZXJfaW1tZWRpYXRlID0gMHg4LCAvKiAxIDw8 IDMgICovCisgIHF1YWxpZmllcl9tYXliZV9pbW1lZGlhdGUgPSAweDEwLCAvKiAxIDw8IDQgICov CisgIC8qIHZvaWQgZm9vICguLi4pLiAgKi8KKyAgcXVhbGlmaWVyX3ZvaWQgPSAweDIwLCAvKiAx IDw8IDUgICovCisgIC8qIDEgPDwgNiBpcyBub3cgdW51c2VkICovCisgIC8qIFNvbWUgYnVpbHRp bnMgc2hvdWxkIHVzZSB0aGUgVF8qbW9kZSogZW5jb2RlZCBpbiBhIHNpbWRfYnVpbHRpbl9kYXR1 bQorICAgICByYXRoZXIgdGhhbiB1c2luZyB0aGUgdHlwZSBvZiB0aGUgb3BlcmFuZC4gICovCisg IHF1YWxpZmllcl9tYXBfbW9kZSA9IDB4ODAsIC8qIDEgPDwgNyAgKi8KKyAgLyogcXVhbGlmaWVy X3BvaW50ZXIgfCBxdWFsaWZpZXJfbWFwX21vZGUgICovCisgIHF1YWxpZmllcl9wb2ludGVyX21h cF9tb2RlID0gMHg4NCwKKyAgLyogcXVhbGlmaWVyX2NvbnN0IHwgcXVhbGlmaWVyX3BvaW50ZXIg fCBxdWFsaWZpZXJfbWFwX21vZGUgICovCisgIHF1YWxpZmllcl9jb25zdF9wb2ludGVyX21hcF9t b2RlID0gMHg4NiwKKyAgLyogUG9seW5vbWlhbCB0eXBlcy4gICovCisgIHF1YWxpZmllcl9wb2x5 ID0gMHgxMDAsCisgIC8qIExhbmUgaW5kaWNlcyAtIG11c3QgYmUgaW4gcmFuZ2UsIGFuZCBmbGlw cGVkIGZvciBiaWdlbmRpYW4uICAqLworICBxdWFsaWZpZXJfbGFuZV9pbmRleCA9IDB4MjAwLAor ICAvKiBMYW5lIGluZGljZXMgZm9yIHNpbmdsZSBsYW5lIHN0cnVjdHVyZSBsb2FkcyBhbmQgc3Rv cmVzLiAgKi8KKyAgcXVhbGlmaWVyX3N0cnVjdF9sb2FkX3N0b3JlX2xhbmVfaW5kZXggPSAweDQw MCwKKyAgLyogTGFuZSBpbmRpY2VzIHNlbGVjdGVkIGluIHBhaXJzLiAtIG11c3QgYmUgaW4gcmFu Z2UsIGFuZCBmbGlwcGVkIGZvcgorICAgICBiaWdlbmRpYW4uICAqLworICBxdWFsaWZpZXJfbGFu ZV9wYWlyX2luZGV4ID0gMHg4MDAsCisgIC8qIExhbmUgaW5kaWNlcyBzZWxlY3RlZCBpbiBxdWFk dHVwbGV0cy4gLSBtdXN0IGJlIGluIHJhbmdlLCBhbmQgZmxpcHBlZCBmb3IKKyAgICAgYmlnZW5k aWFuLiAgKi8KKyAgcXVhbGlmaWVyX2xhbmVfcXVhZHR1cF9pbmRleCA9IDB4MTAwMCwKK307CisK KyNkZWZpbmUgRU5UUlkoRSwgTSwgUSwgRykgRSwKK2VudW0gYWFyY2g2NF9zaW1kX3R5cGUKK3sK KyNpbmNsdWRlICJhYXJjaDY0LXNpbWQtYnVpbHRpbi10eXBlcy5kZWYiCisgIEFSTV9ORU9OX0hf VFlQRVNfTEFTVAorfTsKKyN1bmRlZiBFTlRSWQorCitzdHJ1Y3QgR1RZKCgpKSBhYXJjaDY0X3Np bWRfdHlwZV9pbmZvCit7CisgIGVudW0gYWFyY2g2NF9zaW1kX3R5cGUgdHlwZTsKKworICAvKiBJ bnRlcm5hbCB0eXBlIG5hbWUuICAqLworICBjb25zdCBjaGFyICpuYW1lOworCisgIC8qIEludGVy bmFsIHR5cGUgbmFtZShtYW5nbGVkKS4gIFRoZSBtYW5nbGVkIG5hbWVzIGNvbmZvcm0gdG8gdGhl CisgICAgIEFBUENTNjQgKHNlZSAiUHJvY2VkdXJlIENhbGwgU3RhbmRhcmQgZm9yIHRoZSBBUk0g NjQtYml0IEFyY2hpdGVjdHVyZSIsCisgICAgIEFwcGVuZGl4IEEpLiAgVG8gcXVhbGlmeSBmb3Ig ZW1pc3Npb24gd2l0aCB0aGUgbWFuZ2xlZCBuYW1lcyBkZWZpbmVkIGluCisgICAgIHRoYXQgZG9j dW1lbnQsIGEgdmVjdG9yIHR5cGUgbXVzdCBub3Qgb25seSBiZSBvZiB0aGUgY29ycmVjdCBtb2Rl IGJ1dCBhbHNvCisgICAgIGJlIG9mIHRoZSBjb3JyZWN0IGludGVybmFsIEFkdlNJTUQgdmVjdG9y IHR5cGUgKGUuZy4gX19JbnQ4eDhfdCk7IHRoZXNlCisgICAgIHR5cGVzIGFyZSByZWdpc3RlcmVk IGJ5IGFhcmNoNjRfaW5pdF9zaW1kX2J1aWx0aW5fdHlwZXMgKCkuICBJbiBvdGhlcgorICAgICB3 b3JkcywgdmVjdG9yIHR5cGVzIGRlZmluZWQgaW4gb3RoZXIgd2F5cyBlLmcuIHZpYSB2ZWN0b3Jf c2l6ZSBhdHRyaWJ1dGUKKyAgICAgd2lsbCBnZXQgZGVmYXVsdCBtYW5nbGVkIG5hbWVzLiAgKi8K KyAgY29uc3QgY2hhciAqbWFuZ2xlOworCisgIC8qIEludGVybmFsIHR5cGUuICAqLworICB0cmVl IGl0eXBlOworCisgIC8qIEVsZW1lbnQgdHlwZS4gICovCisgIHRyZWUgZWx0eXBlOworCisgIC8q IE1hY2hpbmUgbW9kZSB0aGUgaW50ZXJuYWwgdHlwZSBtYXBzIHRvLiAgKi8KKyAgZW51bSBtYWNo aW5lX21vZGUgbW9kZTsKKworICAvKiBRdWFsaWZpZXJzLiAgKi8KKyAgZW51bSBhYXJjaDY0X3R5 cGVfcXVhbGlmaWVycyBxOworfTsKKworZXh0ZXJuIGFhcmNoNjRfc2ltZF90eXBlX2luZm8gYWFy Y2g2NF9zaW1kX3R5cGVzW107CisKKyNlbmRpZgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWJ1aWx0aW5zLmNjIGIvZ2Nj L2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtYnVpbHRpbnMuY2MKaW5kZXggNDUyZmYxOWY4OWI3NmFj MmQwZmViNzVlMzgwOTZjNzExZThlOTU4Ny4uM2Q2ODVlODY5NTM3YTQ0MTdiNGJjYzc4N2M4MjRh YmU5MDk2MTM5OCAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtYnVpbHRp bnMuY2MKKysrIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtYnVpbHRpbnMuY2MKQEAgLTQ4 LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJhdHRyaWJzLmgiCiAjaW5jbHVkZSAiZ2ltcGxlLWZvbGQu aCIKICNpbmNsdWRlICJidWlsdGlucy5oIgorI2luY2x1ZGUgImFhcmNoNjQtYnVpbHRpbnMuaCIK IAogI2RlZmluZSB2OHFpX1VQICBFX1Y4UUltb2RlCiAjZGVmaW5lIHY4ZGlfVVAgIEVfVjhESW1v ZGUKQEAgLTE4NCw0NyArMTg1LDggQEAKICNkZWZpbmUgU0lNRF9JTlRSX1FVQUwoc3VmZml4KSBR VUFMXyMjc3VmZml4CiAjZGVmaW5lIFNJTURfSU5UUl9MRU5HVEhfQ0hBUihsZW5ndGgpIExFTkdU SF8jI2xlbmd0aAogCi0KICNkZWZpbmUgU0lNRF9NQVhfQlVJTFRJTl9BUkdTIDUKIAotZW51bSBh YXJjaDY0X3R5cGVfcXVhbGlmaWVycwotewotICAvKiBUIGZvby4gICovCi0gIHF1YWxpZmllcl9u b25lID0gMHgwLAotICAvKiB1bnNpZ25lZCBUIGZvby4gICovCi0gIHF1YWxpZmllcl91bnNpZ25l ZCA9IDB4MSwgLyogMSA8PCAwICAqLwotICAvKiBjb25zdCBUIGZvby4gICovCi0gIHF1YWxpZmll cl9jb25zdCA9IDB4MiwgLyogMSA8PCAxICAqLwotICAvKiBUICpmb28uICAqLwotICBxdWFsaWZp ZXJfcG9pbnRlciA9IDB4NCwgLyogMSA8PCAyICAqLwotICAvKiBVc2VkIHdoZW4gZXhwYW5kaW5n IGFyZ3VtZW50cyBpZiBhbiBvcGVyYW5kIGNvdWxkCi0gICAgIGJlIGFuIGltbWVkaWF0ZS4gICov Ci0gIHF1YWxpZmllcl9pbW1lZGlhdGUgPSAweDgsIC8qIDEgPDwgMyAgKi8KLSAgcXVhbGlmaWVy X21heWJlX2ltbWVkaWF0ZSA9IDB4MTAsIC8qIDEgPDwgNCAgKi8KLSAgLyogdm9pZCBmb28gKC4u LikuICAqLwotICBxdWFsaWZpZXJfdm9pZCA9IDB4MjAsIC8qIDEgPDwgNSAgKi8KLSAgLyogMSA8 PCA2IGlzIG5vdyB1bnVzZWQgKi8KLSAgLyogU29tZSBidWlsdGlucyBzaG91bGQgdXNlIHRoZSBU Xyptb2RlKiBlbmNvZGVkIGluIGEgc2ltZF9idWlsdGluX2RhdHVtCi0gICAgIHJhdGhlciB0aGFu IHVzaW5nIHRoZSB0eXBlIG9mIHRoZSBvcGVyYW5kLiAgKi8KLSAgcXVhbGlmaWVyX21hcF9tb2Rl ID0gMHg4MCwgLyogMSA8PCA3ICAqLwotICAvKiBxdWFsaWZpZXJfcG9pbnRlciB8IHF1YWxpZmll cl9tYXBfbW9kZSAgKi8KLSAgcXVhbGlmaWVyX3BvaW50ZXJfbWFwX21vZGUgPSAweDg0LAotICAv KiBxdWFsaWZpZXJfY29uc3QgfCBxdWFsaWZpZXJfcG9pbnRlciB8IHF1YWxpZmllcl9tYXBfbW9k ZSAgKi8KLSAgcXVhbGlmaWVyX2NvbnN0X3BvaW50ZXJfbWFwX21vZGUgPSAweDg2LAotICAvKiBQ b2x5bm9taWFsIHR5cGVzLiAgKi8KLSAgcXVhbGlmaWVyX3BvbHkgPSAweDEwMCwKLSAgLyogTGFu ZSBpbmRpY2VzIC0gbXVzdCBiZSBpbiByYW5nZSwgYW5kIGZsaXBwZWQgZm9yIGJpZ2VuZGlhbi4g ICovCi0gIHF1YWxpZmllcl9sYW5lX2luZGV4ID0gMHgyMDAsCi0gIC8qIExhbmUgaW5kaWNlcyBm b3Igc2luZ2xlIGxhbmUgc3RydWN0dXJlIGxvYWRzIGFuZCBzdG9yZXMuICAqLwotICBxdWFsaWZp ZXJfc3RydWN0X2xvYWRfc3RvcmVfbGFuZV9pbmRleCA9IDB4NDAwLAotICAvKiBMYW5lIGluZGlj ZXMgc2VsZWN0ZWQgaW4gcGFpcnMuIC0gbXVzdCBiZSBpbiByYW5nZSwgYW5kIGZsaXBwZWQgZm9y Ci0gICAgIGJpZ2VuZGlhbi4gICovCi0gIHF1YWxpZmllcl9sYW5lX3BhaXJfaW5kZXggPSAweDgw MCwKLSAgLyogTGFuZSBpbmRpY2VzIHNlbGVjdGVkIGluIHF1YWR0dXBsZXRzLiAtIG11c3QgYmUg aW4gcmFuZ2UsIGFuZCBmbGlwcGVkIGZvcgotICAgICBiaWdlbmRpYW4uICAqLwotICBxdWFsaWZp ZXJfbGFuZV9xdWFkdHVwX2luZGV4ID0gMHgxMDAwLAotfTsKLQogLyogRmxhZ3MgdGhhdCBkZXNj cmliZSB3aGF0IGEgZnVuY3Rpb24gbWlnaHQgZG8uICAqLwogY29uc3QgdW5zaWduZWQgaW50IEZM QUdfTk9ORSA9IDBVOwogY29uc3QgdW5zaWduZWQgaW50IEZMQUdfUkVBRF9GUENSID0gMVUgPDwg MDsKQEAgLTg5Nyw0NyArODU5LDkgQEAgY29uc3QgY2hhciAqYWFyY2g2NF9zY2FsYXJfYnVpbHRp bl90eXBlc1tdID0gewogICBOVUxMCiB9OwogCi0jZGVmaW5lIEVOVFJZKEUsIE0sIFEsIEcpIEUs Ci1lbnVtIGFhcmNoNjRfc2ltZF90eXBlCi17Ci0jaW5jbHVkZSAiYWFyY2g2NC1zaW1kLWJ1aWx0 aW4tdHlwZXMuZGVmIgotICBBUk1fTkVPTl9IX1RZUEVTX0xBU1QKLX07Ci0jdW5kZWYgRU5UUlkK LQotc3RydWN0IEdUWSgoKSkgYWFyY2g2NF9zaW1kX3R5cGVfaW5mbwotewotICBlbnVtIGFhcmNo NjRfc2ltZF90eXBlIHR5cGU7Ci0KLSAgLyogSW50ZXJuYWwgdHlwZSBuYW1lLiAgKi8KLSAgY29u c3QgY2hhciAqbmFtZTsKLQotICAvKiBJbnRlcm5hbCB0eXBlIG5hbWUobWFuZ2xlZCkuICBUaGUg bWFuZ2xlZCBuYW1lcyBjb25mb3JtIHRvIHRoZQotICAgICBBQVBDUzY0IChzZWUgIlByb2NlZHVy ZSBDYWxsIFN0YW5kYXJkIGZvciB0aGUgQVJNIDY0LWJpdCBBcmNoaXRlY3R1cmUiLAotICAgICBB cHBlbmRpeCBBKS4gIFRvIHF1YWxpZnkgZm9yIGVtaXNzaW9uIHdpdGggdGhlIG1hbmdsZWQgbmFt ZXMgZGVmaW5lZCBpbgotICAgICB0aGF0IGRvY3VtZW50LCBhIHZlY3RvciB0eXBlIG11c3Qgbm90 IG9ubHkgYmUgb2YgdGhlIGNvcnJlY3QgbW9kZSBidXQgYWxzbwotICAgICBiZSBvZiB0aGUgY29y cmVjdCBpbnRlcm5hbCBBZHZTSU1EIHZlY3RvciB0eXBlIChlLmcuIF9fSW50OHg4X3QpOyB0aGVz ZQotICAgICB0eXBlcyBhcmUgcmVnaXN0ZXJlZCBieSBhYXJjaDY0X2luaXRfc2ltZF9idWlsdGlu X3R5cGVzICgpLiAgSW4gb3RoZXIKLSAgICAgd29yZHMsIHZlY3RvciB0eXBlcyBkZWZpbmVkIGlu IG90aGVyIHdheXMgZS5nLiB2aWEgdmVjdG9yX3NpemUgYXR0cmlidXRlCi0gICAgIHdpbGwgZ2V0 IGRlZmF1bHQgbWFuZ2xlZCBuYW1lcy4gICovCi0gIGNvbnN0IGNoYXIgKm1hbmdsZTsKLQotICAv KiBJbnRlcm5hbCB0eXBlLiAgKi8KLSAgdHJlZSBpdHlwZTsKLQotICAvKiBFbGVtZW50IHR5cGUu ICAqLwotICB0cmVlIGVsdHlwZTsKLQotICAvKiBNYWNoaW5lIG1vZGUgdGhlIGludGVybmFsIHR5 cGUgbWFwcyB0by4gICovCi0gIGVudW0gbWFjaGluZV9tb2RlIG1vZGU7Ci0KLSAgLyogUXVhbGlm aWVycy4gICovCi0gIGVudW0gYWFyY2g2NF90eXBlX3F1YWxpZmllcnMgcTsKLX07Ci0KICNkZWZp bmUgRU5UUlkoRSwgTSwgUSwgRykgIFwKICAge0UsICJfXyIgI0UsICNHICJfXyIgI0UsIE5VTExf VFJFRSwgTlVMTF9UUkVFLCBFXyMjTSMjbW9kZSwgcXVhbGlmaWVyXyMjUX0sCi1zdGF0aWMgR1RZ KCgpKSBzdHJ1Y3QgYWFyY2g2NF9zaW1kX3R5cGVfaW5mbyBhYXJjaDY0X3NpbWRfdHlwZXMgW10g PSB7CitHVFkoKCkpIHN0cnVjdCBhYXJjaDY0X3NpbWRfdHlwZV9pbmZvIGFhcmNoNjRfc2ltZF90 eXBlcyBbXSA9IHsKICNpbmNsdWRlICJhYXJjaDY0LXNpbWQtYnVpbHRpbi10eXBlcy5kZWYiCiB9 OwogI3VuZGVmIEVOVFJZCmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1j LmNjIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtYy5jYwppbmRleCAxMTVhMmE4Yjc1Njhj NDNhNzEyZDgxOWUwMzE0N2ZmODRmZjE4MmMwLi4wNWFkNzYzYjg3MWJlYWMyOTg1NTk1NWI4N2U5 NGE4ZGM2NTRhOWNkIDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1jLmNj CisrKyBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWMuY2MKQEAgLTM1MSw2ICszNTEsOCBA QCBhYXJjaDY0X3ByYWdtYV9hYXJjaDY0IChjcHBfcmVhZGVyICopCiAgICAgaGFuZGxlX2FybV9u ZW9uX2ggKCk7CiAgIGVsc2UgaWYgKHN0cmNtcCAobmFtZSwgImFybV9hY2xlLmgiKSA9PSAwKQog ICAgIGhhbmRsZV9hcm1fYWNsZV9oICgpOworICBlbHNlIGlmIChzdHJjbXAgKG5hbWUsICJhcm1f bmVvbl9zdmVfYnJpZGdlLmgiKSA9PSAwKQorICAgIGFhcmNoNjRfc3ZlOjpoYW5kbGVfYXJtX25l b25fc3ZlX2JyaWRnZV9oICgpOwogICBlbHNlCiAgICAgZXJyb3IgKCJ1bmtub3duICU8I3ByYWdt YSBHQ0MgYWFyY2g2NCU+IG9wdGlvbiAlcXMiLCBuYW1lKTsKIH0KZGlmZiAtLWdpdCBhL2djYy9j b25maWcvYWFyY2g2NC9hYXJjaDY0LW5lb24tc3ZlLWJyaWRnZS1idWlsdGlucy5kZWYgYi9nY2Mv Y29uZmlnL2FhcmNoNjQvYWFyY2g2NC1uZW9uLXN2ZS1icmlkZ2UtYnVpbHRpbnMuZGVmCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAuLjBmY2JlNDQ2YWM1ODZkYzM0MTIxMTk2NmNhMDYxNDAyNjUxNTUyMDIKLS0tIC9kZXYv bnVsbAorKysgYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1uZW9uLXN2ZS1icmlkZ2UtYnVp bHRpbnMuZGVmCkBAIC0wLDAgKzEsMjggQEAKKy8qIEJ1aWx0aW4gbGlzdHMgZm9yIEFBcmNoNjQg TkVPTi1TVkUtQnJpZGdlCisgICBDb3B5cmlnaHQgKEMpIDIwMjMgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCisKKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdDQy4KKworICAgR0NDIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQK KyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5CisgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbiAzLCBvciAoYXQgeW91ciBvcHRpb24pCisgICBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAg R0NDIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1 dAorICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUg Q09QWUlORzMuICBJZiBub3Qgc2VlCisgICA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u ICAqLworCisjaWZuZGVmIERFRl9ORU9OX1NWRV9GVU5DVElPTgorI2RlZmluZSBERUZfTkVPTl9T VkVfRlVOQ1RJT04oQSwgQiwgQywgRCwgRSkKKyNlbmRpZgorCitERUZfTkVPTl9TVkVfRlVOQ1RJ T04gKHN2c2V0X25lb25xLCBzZXRfbmVvbnEsIGFsbF9kYXRhLCBub25lLCBub25lKQorREVGX05F T05fU1ZFX0ZVTkNUSU9OIChzdmdldF9uZW9ucSwgZ2V0X25lb25xLCBhbGxfZGF0YSwgbm9uZSwg bm9uZSkKK0RFRl9ORU9OX1NWRV9GVU5DVElPTiAoc3ZkdXBfbmVvbnEsIGR1cF9uZW9ucSwgYWxs X2RhdGEsIG5vbmUsIG5vbmUpCisKKyN1bmRlZiBERUZfTkVPTl9TVkVfRlVOQ1RJT04KXCBObyBu ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFy Y2g2NC1wcm90b3MuaCBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LXByb3Rvcy5oCmluZGV4 IGQxYWY3ZjQwODkxZTYzMjFmMDQ2Y2IyMjFlZmRhNTQxYzg4NTEzN2IuLjM5NmExNDJmZWQ5NDc4 MmViNjg1YTA2OWZjZWUzOGQwZjQ4MGQ5ZDcgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvYWFyY2g2 NC9hYXJjaDY0LXByb3Rvcy5oCisrKyBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LXByb3Rv cy5oCkBAIC0xMDA5LDggKzEwMDksMTAgQEAgYm9vbCBhYXJjaDY0X2dlbmVyYWxfY2hlY2tfYnVp bHRpbl9jYWxsIChsb2NhdGlvbl90LCB2ZWM8bG9jYXRpb25fdD4sCiAKIG5hbWVzcGFjZSBhYXJj aDY0X3N2ZSB7CiAgIHZvaWQgaW5pdF9idWlsdGlucyAoKTsKKyAgdm9pZCBpbml0X25lb25fc3Zl X2J1aWx0aW5zICgpOwogICB2b2lkIGhhbmRsZV9hcm1fc3ZlX2ggKCk7CiAgIHZvaWQgaGFuZGxl X2FybV9zbWVfaCAoKTsKKyAgdm9pZCBoYW5kbGVfYXJtX25lb25fc3ZlX2JyaWRnZV9oICgpOwog ICB0cmVlIGJ1aWx0aW5fZGVjbCAodW5zaWduZWQsIGJvb2wpOwogICBib29sIGJ1aWx0aW5fdHlw ZV9wIChjb25zdF90cmVlKTsKICAgYm9vbCBidWlsdGluX3R5cGVfcCAoY29uc3RfdHJlZSwgdW5z aWduZWQgaW50ICosIHVuc2lnbmVkIGludCAqKTsKZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFy Y2g2NC9hYXJjaDY0LXN2ZS1idWlsdGlucy1iYXNlLmggYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFy Y2g2NC1zdmUtYnVpbHRpbnMtYmFzZS5oCmluZGV4IGQzMDBlM2E4NWQwMGI1OGFkNzkwODUxYTgx ZDQzYWY3MDliNjZiY2UuLmRmNzVlNGMxZWNmODFmM2RkZmEyNTZlZGJjZjg2MzdkMDkyZmNmZGUg MTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LXN2ZS1idWlsdGlucy1iYXNl LmgKKysrIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtc3ZlLWJ1aWx0aW5zLWJhc2UuaApA QCAtMjk5LDYgKzI5OSwxMiBAQCBuYW1lc3BhY2UgYWFyY2g2NF9zdmUKICAgICBleHRlcm4gY29u c3QgZnVuY3Rpb25fYmFzZSAqY29uc3Qgc3Z6aXAyOwogICAgIGV4dGVybiBjb25zdCBmdW5jdGlv bl9iYXNlICpjb25zdCBzdnppcDJxOwogICB9CisgIG5hbWVzcGFjZSBuZW9uX3N2ZV9icmlkZ2Vf ZnVuY3Rpb25zCisgIHsKKyAgICBleHRlcm4gY29uc3QgZnVuY3Rpb25fYmFzZSAqY29uc3Qgc3Zz ZXRfbmVvbnE7CisgICAgZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0IHN2Z2V0X25l b25xOworICAgIGV4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCBzdmR1cF9uZW9ucTsK KyAgfQogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0 LXN2ZS1idWlsdGlucy1iYXNlLmNjIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtc3ZlLWJ1 aWx0aW5zLWJhc2UuY2MKaW5kZXggNGU1YTg4YWEwM2E5OTRlNDJmNmIyNTI4YzQ0NTQ3NDEwMzkw YjI2Yy4uYTc3NjZhN2Q0NjhjZGVjY2RkZTg5MDc2MzJiM2Y3MDI5NjlmNGJkNyAxMDA2NDQKLS0t IGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtc3ZlLWJ1aWx0aW5zLWJhc2UuY2MKKysrIGIv Z2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtc3ZlLWJ1aWx0aW5zLWJhc2UuY2MKQEAgLTQ0LDYg KzQ0LDcgQEAKICNpbmNsdWRlICJhYXJjaDY0LXN2ZS1idWlsdGlucy1zaGFwZXMuaCIKICNpbmNs dWRlICJhYXJjaDY0LXN2ZS1idWlsdGlucy1iYXNlLmgiCiAjaW5jbHVkZSAiYWFyY2g2NC1zdmUt YnVpbHRpbnMtZnVuY3Rpb25zLmgiCisjaW5jbHVkZSAiYWFyY2g2NC1idWlsdGlucy5oIgogI2lu Y2x1ZGUgInNzYS5oIgogI2luY2x1ZGUgImdpbXBsZS1mb2xkLmgiCiAKQEAgLTEwOTksNiArMTEw MCwxMTYgQEAgcHVibGljOgogICB9CiB9OwogCitjbGFzcyBzdmdldF9uZW9ucV9pbXBsIDogcHVi bGljIGZ1bmN0aW9uX2Jhc2UKK3sKK3B1YmxpYzoKKyAgZ2ltcGxlICoKKyAgZm9sZCAoZ2ltcGxl X2ZvbGRlciAmZikgY29uc3Qgb3ZlcnJpZGUKKyAgeworICAgIGlmIChCWVRFU19CSUdfRU5ESUFO KQorICAgICAgcmV0dXJuIE5VTEw7CisgICAgdHJlZSByaHNfc3ZlX3ZlY3RvciA9IGdpbXBsZV9j YWxsX2FyZyAoZi5jYWxsLCAwKTsKKyAgICB0cmVlIHJoc192ZWN0b3IgPSBidWlsZDMgKEJJVF9G SUVMRF9SRUYsIFRSRUVfVFlQRSAoZi5saHMpLAorCQkJICAgICByaHNfc3ZlX3ZlY3RvciwgYml0 c2l6ZV9pbnQgKDEyOCksIGJpdHNpemVfaW50ICgwKSk7CisgICAgcmV0dXJuIGdpbXBsZV9idWls ZF9hc3NpZ24gKGYubGhzLCByaHNfdmVjdG9yKTsKKyAgfQorICBydHgKKyAgZXhwYW5kIChmdW5j dGlvbl9leHBhbmRlciAmZSkgY29uc3Qgb3ZlcnJpZGUKKyAgeworICAgIGlmIChCWVRFU19CSUdf RU5ESUFOKQorICAgICAgeworCW1hY2hpbmVfbW9kZSBtb2RlID0gZS52ZWN0b3JfbW9kZSAoMCk7 CisJaW5zbl9jb2RlIGljb2RlID0gY29kZV9mb3JfYWFyY2g2NF9zdmVfZ2V0X25lb25xIChtb2Rl KTsKKwl1bnNpZ25lZCBpbnQgbnVuaXRzID0gMTI4IC8gR0VUX01PREVfVU5JVF9CSVRTSVpFICht b2RlKTsKKwlydHggaW5kaWNlcyA9IGFhcmNoNjRfZ2VuX3N0ZXBwZWRfaW50X3BhcmFsbGVsCisJ ICAobnVuaXRzLCBudW5pdHMgLSAxICwgLTEpOworCisJZS5hZGRfb3V0cHV0X29wZXJhbmQgKGlj b2RlKTsKKwllLmFkZF9pbnB1dF9vcGVyYW5kIChpY29kZSwgZS5hcmdzWzBdKTsKKwllLmFkZF9m aXhlZF9vcGVyYW5kIChpbmRpY2VzKTsKKwlyZXR1cm4gZS5nZW5lcmF0ZV9pbnNuIChpY29kZSk7 CisgICAgICB9CisgICAgcmV0dXJuIHNpbXBsaWZ5X2dlbl9zdWJyZWcgKGUucmVzdWx0X21vZGUg KCksIGUuYXJnc1swXSwKKwkJCQlHRVRfTU9ERSAoZS5hcmdzWzBdKSwgMCk7CisgIH0KK307CisK K2NsYXNzIHN2c2V0X25lb25xX2ltcGwgOiBwdWJsaWMgZnVuY3Rpb25fYmFzZQoreworcHVibGlj OgorICBydHgKKyAgZXhwYW5kIChmdW5jdGlvbl9leHBhbmRlciAmZSkgY29uc3Qgb3ZlcnJpZGUK KyAgeworICAgIG1hY2hpbmVfbW9kZSBtb2RlID0gZS52ZWN0b3JfbW9kZSAoMCk7CisgICAgcnR4 X3ZlY3Rvcl9idWlsZGVyIGJ1aWxkZXIgKFZOeDE2Qkltb2RlLCAxNiwgMik7CisgICAgZm9yICh1 bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCAxNjsgaSsrKQorICAgICAgYnVpbGRlci5xdWlja19wdXNo IChDT05TVDFfUlRYIChCSW1vZGUpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8 IDE2OyBpKyspCisgICAgICBidWlsZGVyLnF1aWNrX3B1c2ggKENPTlNUMF9SVFggKEJJbW9kZSkp OworICAgIGUuYXJncy5xdWlja19wdXNoIChidWlsZGVyLmJ1aWxkICgpKTsKKyAgICBpZiAoQllU RVNfQklHX0VORElBTikKKyAgICAgIHJldHVybiBlLnVzZV9leGFjdF9pbnNuIChjb2RlX2Zvcl9h YXJjaDY0X3N2ZV9zZXRfbmVvbnEgKG1vZGUpKTsKKyAgICBpbnNuX2NvZGUgaWNvZGUgPSBjb2Rl X2Zvcl92Y29uZF9tYXNrIChtb2RlLCBtb2RlKTsKKyAgICBlLmFyZ3NbMV0gPSBsb3dwYXJ0X3N1 YnJlZyAobW9kZSwgZS5hcmdzWzFdLCBHRVRfTU9ERSAoZS5hcmdzWzFdKSk7CisgICAgZS5hZGRf b3V0cHV0X29wZXJhbmQgKGljb2RlKTsKKyAgICBlLmFkZF9pbnB1dF9vcGVyYW5kIChpY29kZSwg ZS5hcmdzWzFdKTsKKyAgICBlLmFkZF9pbnB1dF9vcGVyYW5kIChpY29kZSwgZS5hcmdzWzBdKTsK KyAgICBlLmFkZF9pbnB1dF9vcGVyYW5kIChpY29kZSwgZS5hcmdzWzJdKTsKKyAgICByZXR1cm4g ZS5nZW5lcmF0ZV9pbnNuIChpY29kZSk7CisgIH0KK307CisKK2NsYXNzIHN2ZHVwX25lb25xX2lt cGwgOiBwdWJsaWMgZnVuY3Rpb25fYmFzZQoreworcHVibGljOgorICBnaW1wbGUgKgorICBmb2xk IChnaW1wbGVfZm9sZGVyICZmKSBjb25zdCBvdmVycmlkZQorICB7CisgICAgaWYgKEJZVEVTX0JJ R19FTkRJQU4pCisgICAgICB7CisJcmV0dXJuIE5VTEw7CisgICAgICB9CisgICAgdHJlZSByaHNf dmVjdG9yID0gZ2ltcGxlX2NhbGxfYXJnIChmLmNhbGwsIDApOworICAgIHVuc2lnbmVkIEhPU1Rf V0lERV9JTlQgbmVvbl9uZWx0cworICAgICAgPSBUWVBFX1ZFQ1RPUl9TVUJQQVJUUyAoVFJFRV9U WVBFIChyaHNfdmVjdG9yKSkudG9fY29uc3RhbnQgKCk7CisgICAgcG9seV91aW50NjQgc3ZlX25l bHRzOworICAgIHN2ZV9uZWx0cyA9IFRZUEVfVkVDVE9SX1NVQlBBUlRTIChUUkVFX1RZUEUgKGYu bGhzKSk7CisgICAgdmVjX3Blcm1fYnVpbGRlciBidWlsZGVyIChzdmVfbmVsdHMsIG5lb25fbmVs dHMsIDEpOworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbmVvbl9uZWx0czsgaSsr KQorICAgICAgeworCWJ1aWxkZXIucXVpY2tfcHVzaCAoaSk7CisgICAgICB9CisgICAgdmVjX3Bl cm1faW5kaWNlcyBpbmRpY2VzIChidWlsZGVyLCAxLCBuZW9uX25lbHRzKTsKKyAgICB0cmVlIHBl cm1fdHlwZSA9IGJ1aWxkX3ZlY3Rvcl90eXBlIChzc2l6ZXR5cGUsIHN2ZV9uZWx0cyk7CisgICAg cmV0dXJuIGdpbXBsZV9idWlsZF9hc3NpZ24gKGYubGhzLCBWRUNfUEVSTV9FWFBSLAorCQkJCXJo c192ZWN0b3IsCisJCQkJcmhzX3ZlY3RvciwKKwkJCQl2ZWNfcGVybV9pbmRpY2VzX3RvX3RyZWUg KHBlcm1fdHlwZSwgaW5kaWNlcykpOworICB9CisgIHJ0eAorICBleHBhbmQgKGZ1bmN0aW9uX2V4 cGFuZGVyICZlKSBjb25zdCBvdmVycmlkZQorICB7CisgICAgaW5zbl9jb2RlIGljb2RlOworICAg IG1hY2hpbmVfbW9kZSBtb2RlID0gZS52ZWN0b3JfbW9kZSAoMCk7CisgICAgaWYgKEJZVEVTX0JJ R19FTkRJQU4pCisgICAgICB7CisJaWNvZGUgPSBjb2RlX2Zvcl9hYXJjaDY0X3ZlY19kdXBsaWNh dGVfdnFfYmUgKG1vZGUpOworCXVuc2lnbmVkIGludCBudW5pdHMgPSAxMjggLyBHRVRfTU9ERV9V TklUX0JJVFNJWkUgKG1vZGUpOworCXJ0eCBpbmRpY2VzID0gYWFyY2g2NF9nZW5fc3RlcHBlZF9p bnRfcGFyYWxsZWwKKwkgIChudW5pdHMsIG51bml0cyAtIDEgLCAtMSk7CisKKwllLmFkZF9vdXRw dXRfb3BlcmFuZCAoaWNvZGUpOworCWUuYWRkX2lucHV0X29wZXJhbmQgKGljb2RlLCBlLmFyZ3Nb MF0pOworCWUuYWRkX2ZpeGVkX29wZXJhbmQgKGluZGljZXMpOworCXJldHVybiBlLmdlbmVyYXRl X2luc24gKGljb2RlKTsKKyAgICAgIH0KKyAgICBpY29kZSA9IGNvZGVfZm9yX2FhcmNoNjRfdmVj X2R1cGxpY2F0ZV92cV9sZSAobW9kZSk7CisgICAgZS5hZGRfb3V0cHV0X29wZXJhbmQgKGljb2Rl KTsKKyAgICBlLmFkZF9pbnB1dF9vcGVyYW5kIChpY29kZSwgZS5hcmdzWzBdKTsKKyAgICByZXR1 cm4gZS5nZW5lcmF0ZV9pbnNuIChpY29kZSk7CisgIH0KK307CisKIGNsYXNzIHN2aW5kZXhfaW1w bCA6IHB1YmxpYyBmdW5jdGlvbl9iYXNlCiB7CiBwdWJsaWM6CkBAIC0zMTIyLDUgKzMyMzMsOCBA QCBGVU5DVElPTiAoc3Z6aXAxcSwgdW5zcGVjX2Jhc2VkX2Z1bmN0aW9uLCAoVU5TUEVDX1pJUDFR LCBVTlNQRUNfWklQMVEsCiBGVU5DVElPTiAoc3Z6aXAyLCBzdnppcF9pbXBsLCAoMSkpCiBGVU5D VElPTiAoc3Z6aXAycSwgdW5zcGVjX2Jhc2VkX2Z1bmN0aW9uLCAoVU5TUEVDX1pJUDJRLCBVTlNQ RUNfWklQMlEsCiAJCQkJCSAgIFVOU1BFQ19aSVAyUSkpCitORU9OX1NWRV9CUklER0VfRlVOQ1RJ T04gKHN2Z2V0X25lb25xLCBzdmdldF9uZW9ucV9pbXBsLCkKK05FT05fU1ZFX0JSSURHRV9GVU5D VElPTiAoc3ZzZXRfbmVvbnEsIHN2c2V0X25lb25xX2ltcGwsKQorTkVPTl9TVkVfQlJJREdFX0ZV TkNUSU9OIChzdmR1cF9uZW9ucSwgc3ZkdXBfbmVvbnFfaW1wbCwpCiAKIH0gLyogZW5kIG5hbWVz cGFjZSBhYXJjaDY0X3N2ZSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNo NjQtc3ZlLWJ1aWx0aW5zLWZ1bmN0aW9ucy5oIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQt c3ZlLWJ1aWx0aW5zLWZ1bmN0aW9ucy5oCmluZGV4IGI0MDY0MGIwNzYzNDgwNTJiZWM2MTdlMTU4 ZWZmMmJhYmI1OTVmNmUuLjdhYTU5NTY4YTI1MTA3ODRlMTJmNzdiN2NjMDllZTYzODk4NzcwMWUg MTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LXN2ZS1idWlsdGlucy1mdW5j dGlvbnMuaAorKysgYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1zdmUtYnVpbHRpbnMtZnVu Y3Rpb25zLmgKQEAgLTg0MCw0ICs4NDAsOCBAQCBwdWJsaWM6CiAgIG5hbWVzcGFjZSB7IHN0YXRp YyBDT05TVEVYUFIgY29uc3QgQ0xBU1MgTkFNRSMjX29iaiBBUkdTOyB9IFwKICAgbmFtZXNwYWNl IGZ1bmN0aW9ucyB7IGNvbnN0IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0IE5BTUUgPSAmTkFNRSMjX29i ajsgfQogCisjZGVmaW5lIE5FT05fU1ZFX0JSSURHRV9GVU5DVElPTihOQU1FLCBDTEFTUywgQVJH UykgXAorICBuYW1lc3BhY2UgeyBzdGF0aWMgQ09OU1RFWFBSIGNvbnN0IENMQVNTIE5BTUUjI19v YmogQVJHUzsgfSBcCisgIG5hbWVzcGFjZSBuZW9uX3N2ZV9icmlkZ2VfZnVuY3Rpb25zIHsgY29u c3QgZnVuY3Rpb25fYmFzZSAqY29uc3QgTkFNRSA9ICZOQU1FIyNfb2JqOyB9CisKICNlbmRpZgpk aWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtc3ZlLWJ1aWx0aW5zLXNoYXBl cy5oIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtc3ZlLWJ1aWx0aW5zLXNoYXBlcy5oCmlu ZGV4IDg4YWY2MmRmNDhiYTVlNjBhMzExYzlmOWI2ZWVmN2E0Y2MxYWM0MGEuLjhlMTU5ZTY2NmZk Nzc1NWNjMDQ4Mjg2YzI4ZGZiM2JjYmFlYzEzMGYgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvYWFy Y2g2NC9hYXJjaDY0LXN2ZS1idWlsdGlucy1zaGFwZXMuaAorKysgYi9nY2MvY29uZmlnL2FhcmNo NjQvYWFyY2g2NC1zdmUtYnVpbHRpbnMtc2hhcGVzLmgKQEAgLTEyNiwxMCArMTI2LDEyIEBAIG5h bWVzcGFjZSBhYXJjaDY0X3N2ZQogICAgIGV4dGVybiBjb25zdCBmdW5jdGlvbl9zaGFwZSAqY29u c3QgZG90X3phX3NsaWNlX2xhbmU7CiAgICAgZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX3NoYXBlICpj b25zdCBkb3RfemFfc2xpY2VfdWludF9sYW5lOwogICAgIGV4dGVybiBjb25zdCBmdW5jdGlvbl9z aGFwZSAqY29uc3QgZHVwcTsKKyAgICBleHRlcm4gY29uc3QgZnVuY3Rpb25fc2hhcGUgKmNvbnN0 IGR1cF9uZW9ucTsKICAgICBleHRlcm4gY29uc3QgZnVuY3Rpb25fc2hhcGUgKmNvbnN0IGV4dDsK ICAgICBleHRlcm4gY29uc3QgZnVuY3Rpb25fc2hhcGUgKmNvbnN0IGV4dHJhY3RfcHJlZDsKICAg ICBleHRlcm4gY29uc3QgZnVuY3Rpb25fc2hhcGUgKmNvbnN0IGZvbGRfbGVmdDsKICAgICBleHRl cm4gY29uc3QgZnVuY3Rpb25fc2hhcGUgKmNvbnN0IGdldDsKKyAgICBleHRlcm4gY29uc3QgZnVu Y3Rpb25fc2hhcGUgKmNvbnN0IGdldF9uZW9ucTsKICAgICBleHRlcm4gY29uc3QgZnVuY3Rpb25f c2hhcGUgKmNvbnN0IGluY19kZWM7CiAgICAgZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX3NoYXBlICpj b25zdCBpbmNfZGVjX3BhdDsKICAgICBleHRlcm4gY29uc3QgZnVuY3Rpb25fc2hhcGUgKmNvbnN0 IGluY19kZWNfcHJlZDsKQEAgLTE3MCw2ICsxNzIsNyBAQCBuYW1lc3BhY2UgYWFyY2g2NF9zdmUK ICAgICBleHRlcm4gY29uc3QgZnVuY3Rpb25fc2hhcGUgKmNvbnN0IHNlbGVjdF9wcmVkOwogICAg IGV4dGVybiBjb25zdCBmdW5jdGlvbl9zaGFwZSAqY29uc3Qgc2V0OwogICAgIGV4dGVybiBjb25z dCBmdW5jdGlvbl9zaGFwZSAqY29uc3Qgc2V0ZmZyOworICAgIGV4dGVybiBjb25zdCBmdW5jdGlv bl9zaGFwZSAqY29uc3Qgc2V0X25lb25xOwogICAgIGV4dGVybiBjb25zdCBmdW5jdGlvbl9zaGFw ZSAqY29uc3Qgc2hpZnRfbGVmdF9pbW1fbG9uZzsKICAgICBleHRlcm4gY29uc3QgZnVuY3Rpb25f c2hhcGUgKmNvbnN0IHNoaWZ0X2xlZnRfaW1tX3RvX3VpbnQ7CiAgICAgZXh0ZXJuIGNvbnN0IGZ1 bmN0aW9uX3NoYXBlICpjb25zdCBzaGlmdF9yaWdodF9pbW07CmRpZmYgLS1naXQgYS9nY2MvY29u ZmlnL2FhcmNoNjQvYWFyY2g2NC1zdmUtYnVpbHRpbnMtc2hhcGVzLmNjIGIvZ2NjL2NvbmZpZy9h YXJjaDY0L2FhcmNoNjQtc3ZlLWJ1aWx0aW5zLXNoYXBlcy5jYwppbmRleCA5MzgwY2M3ZGIyMDVi MWMyMjE4NWViNTE3NGIwMWQzZmM5YzVjMmRlLi5kMDAzOWMwNTg5NWZjZjMyOWE0MTcxMDU0YmZk Y2MwNzVlZjAzNTUyIDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1zdmUt YnVpbHRpbnMtc2hhcGVzLmNjCisrKyBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LXN2ZS1i dWlsdGlucy1zaGFwZXMuY2MKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJvcHRhYnMuaCIK ICNpbmNsdWRlICJhYXJjaDY0LXN2ZS1idWlsdGlucy5oIgogI2luY2x1ZGUgImFhcmNoNjQtc3Zl LWJ1aWx0aW5zLXNoYXBlcy5oIgorI2luY2x1ZGUgImFhcmNoNjQtYnVpbHRpbnMuaCIKIAogLyog SW4gdGhlIGNvbW1lbnRzIGJlbG93LCBfdDAgcmVwcmVzZW50cyB0aGUgZmlyc3QgdHlwZSBzdWZm aXggYW5kIF90MQogICAgcmVwcmVzZW50cyB0aGUgc2Vjb25kLiAgU3F1YXJlIGJyYWNrZXRzIGVu Y2xvc2UgY2hhcmFjdGVycyB0aGF0IGFyZQpAQCAtMTc4LDYgKzE3OSw4IEBAIHBhcnNlX2VsZW1l bnRfdHlwZSAoY29uc3QgZnVuY3Rpb25faW5zdGFuY2UgJmluc3RhbmNlLCBjb25zdCBjaGFyICom Zm9ybWF0KQogICAgczxlbHQ+ICAtIGEgc2NhbGFyIHR5cGUgd2l0aCB0aGUgZ2l2ZW4gZWxlbWVu dCBzdWZmaXgKICAgIHQ8ZWx0PiAgLSBhIHZlY3RvciBvciB0dXBsZSB0eXBlIHdpdGggZ2l2ZW4g ZWxlbWVudCBzdWZmaXggWyoxXQogICAgdjxlbHQ+ICAtIGEgdmVjdG9yIHdpdGggdGhlIGdpdmVu IGVsZW1lbnQgc3VmZml4CisgICBEPGVsdD4gIC0gYSA2NCBiaXQgbmVvbiB2ZWN0b3IKKyAgIFE8 ZWx0PiAgLSBhIDEyOCBiaXQgbmVvbiB2ZWN0b3IKIAogICAgd2hlcmUgPGVsdD4gaGFzIHRoZSBm b3JtYXQgZGVzY3JpYmVkIGFib3ZlIHBhcnNlX2VsZW1lbnRfdHlwZQogCkBAIC0yNjEsNiArMjY0 LDIwIEBAIHBhcnNlX3R5cGUgKGNvbnN0IGZ1bmN0aW9uX2luc3RhbmNlICZpbnN0YW5jZSwgY29u c3QgY2hhciAqJmZvcm1hdCkKICAgICAgIHJldHVybiBhY2xlX3ZlY3Rvcl90eXBlc1swXVt0eXBl X3N1ZmZpeGVzW3N1ZmZpeF0udmVjdG9yX3R5cGVdOwogICAgIH0KIAorICBpZiAoY2ggPT0gJ0Qn KQorICAgIHsKKyAgICAgIHR5cGVfc3VmZml4X2luZGV4IHN1ZmZpeCA9IHBhcnNlX2VsZW1lbnRf dHlwZSAoaW5zdGFuY2UsIGZvcm1hdCk7CisgICAgICBpbnQgbmVvbl9pbmRleCA9IHR5cGVfc3Vm Zml4ZXNbc3VmZml4XS5uZW9uNjRfdHlwZTsKKyAgICAgIHJldHVybiBhYXJjaDY0X3NpbWRfdHlw ZXNbbmVvbl9pbmRleF0uaXR5cGU7CisgICAgfQorCisgIGlmIChjaCA9PSAnUScpCisgICAgewor ICAgICAgdHlwZV9zdWZmaXhfaW5kZXggc3VmZml4ID0gcGFyc2VfZWxlbWVudF90eXBlIChpbnN0 YW5jZSwgZm9ybWF0KTsKKyAgICAgIGludCBuZW9uX2luZGV4ID0gdHlwZV9zdWZmaXhlc1tzdWZm aXhdLm5lb24xMjhfdHlwZTsKKyAgICAgIHJldHVybiBhYXJjaDY0X3NpbWRfdHlwZXNbbmVvbl9p bmRleF0uaXR5cGU7CisgICAgfQorCiAgIGdjY191bnJlYWNoYWJsZSAoKTsKIH0KIApAQCAtMjQ3 Niw2ICsyNDkzLDY3IEBAIHN0cnVjdCBnZXRfZGVmIDogcHVibGljIG92ZXJsb2FkZWRfYmFzZTww PgogfTsKIFNIQVBFIChnZXQpCiAKKy8qIDx0MD54Tl90IHN2Zm9vW190MF0oc3Y8dDA+X3QpLiAg Ki8KK3N0cnVjdCBnZXRfbmVvbnFfZGVmIDogcHVibGljIG92ZXJsb2FkZWRfYmFzZTwwPgorewor ICB2b2lkCisgIGJ1aWxkIChmdW5jdGlvbl9idWlsZGVyICZiLCBjb25zdCBmdW5jdGlvbl9ncm91 cF9pbmZvICZncm91cCkgY29uc3Qgb3ZlcnJpZGUKKyAgeworICAgIGIuYWRkX292ZXJsb2FkZWRf ZnVuY3Rpb25zIChncm91cCwgTU9ERV9ub25lKTsKKyAgICBidWlsZF9hbGwgKGIsICJRMCx2MCIs IGdyb3VwLCBNT0RFX25vbmUpOworICB9CisgIHRyZWUKKyAgcmVzb2x2ZSAoZnVuY3Rpb25fcmVz b2x2ZXIgJnIpIGNvbnN0IG92ZXJyaWRlCisgIHsKKyAgICByZXR1cm4gci5yZXNvbHZlX3VuYXJ5 ICgpOworICB9Cit9OworU0hBUEUgKGdldF9uZW9ucSkKKworLyogc3Y8dDA+X3Qgc3Zmb29bX3Qw XShzdjx0MD5fdCwgPHQwPnhOX3QpLiAgKi8KK3N0cnVjdCBzZXRfbmVvbnFfZGVmIDogcHVibGlj IG92ZXJsb2FkZWRfYmFzZTwwPgoreworICB2b2lkCisgIGJ1aWxkIChmdW5jdGlvbl9idWlsZGVy ICZiLCBjb25zdCBmdW5jdGlvbl9ncm91cF9pbmZvICZncm91cCkgY29uc3Qgb3ZlcnJpZGUKKyAg eworICAgIGIuYWRkX292ZXJsb2FkZWRfZnVuY3Rpb25zIChncm91cCwgTU9ERV9ub25lKTsKKyAg ICBidWlsZF9hbGwgKGIsICJ2MCx2MCxRMCIsIGdyb3VwLCBNT0RFX25vbmUpOworICB9CisgIHRy ZWUKKyAgcmVzb2x2ZSAoZnVuY3Rpb25fcmVzb2x2ZXIgJnIpIGNvbnN0IG92ZXJyaWRlCisgIHsK KyAgICB1bnNpZ25lZCBpbnQgaSwgbmFyZ3M7CisgICAgdHlwZV9zdWZmaXhfaW5kZXggdHlwZTsK KyAgICBpZiAoIXIuY2hlY2tfZ3BfYXJndW1lbnQgKDIsIGksIG5hcmdzKQorCXx8ICh0eXBlID0g ci5pbmZlcl9uZW9uMTI4X3ZlY3Rvcl90eXBlIChpICsgMSkpID09IE5VTV9UWVBFX1NVRkZJWEVT KQorICAgICAgcmV0dXJuIGVycm9yX21hcmtfbm9kZTsKKyAgICByZXR1cm4gci5yZXNvbHZlX3Rv IChyLm1vZGVfc3VmZml4X2lkLCB0eXBlKTsKKyAgfQorfTsKK1NIQVBFIChzZXRfbmVvbnEpCisK Ky8qIHN2PHQwPl90IHN2Zm9vW190MF0oPHQwPnhOX3QpLiAgKi8KK3N0cnVjdCBkdXBfbmVvbnFf ZGVmIDogcHVibGljIG92ZXJsb2FkZWRfYmFzZTwwPgoreworICB2b2lkCisgIGJ1aWxkIChmdW5j dGlvbl9idWlsZGVyICZiLCBjb25zdCBmdW5jdGlvbl9ncm91cF9pbmZvICZncm91cCkgY29uc3Qg b3ZlcnJpZGUKKyAgeworICAgIGIuYWRkX292ZXJsb2FkZWRfZnVuY3Rpb25zIChncm91cCwgTU9E RV9ub25lKTsKKyAgICBidWlsZF9hbGwgKGIsICJ2MCxRMCIsIGdyb3VwLCBNT0RFX25vbmUpOwor ICB9CisgIHRyZWUKKyAgcmVzb2x2ZSAoZnVuY3Rpb25fcmVzb2x2ZXIgJnIpIGNvbnN0IG92ZXJy aWRlCisgIHsKKyAgICB1bnNpZ25lZCBpbnQgaSwgbmFyZ3M7CisgICAgdHlwZV9zdWZmaXhfaW5k ZXggdHlwZTsKKyAgICBpZiAoIXIuY2hlY2tfZ3BfYXJndW1lbnQgKDEsIGksIG5hcmdzKQorCXx8 ICh0eXBlID0gci5pbmZlcl9uZW9uMTI4X3ZlY3Rvcl90eXBlIChpKSkgPT0gTlVNX1RZUEVfU1VG RklYRVMpCisgICAgICByZXR1cm4gZXJyb3JfbWFya19ub2RlOworICAgIHJldHVybiByLnJlc29s dmVfdG8gKHIubW9kZV9zdWZmaXhfaWQsIHR5cGUpOworICB9Cit9OworU0hBUEUgKGR1cF9uZW9u cSkKKwogLyogc3Y8dDA+X3Qgc3Zmb29bX3QwXShzdjx0MD5fdCwgdWludDY0X3QpCiAgICA8dDA+ X3Qgc3Zmb29bX25fdDBdKDx0MD5fdCwgdWludDY0X3QpCiAKZGlmZiAtLWdpdCBhL2djYy9jb25m aWcvYWFyY2g2NC9hYXJjaDY0LXN2ZS1idWlsdGlucy5jYyBiL2djYy9jb25maWcvYWFyY2g2NC9h YXJjaDY0LXN2ZS1idWlsdGlucy5jYwppbmRleCAxNWZhNTkwN2RlNWZlZTk2NjAyZWU0ZDUyNmQx ZTEyOWNmOGI4MTE1Li5hYjZlZGQwOTg1OGIwMTE2MTYyNDU3YmEyODFmNWMwNWZmYmZmMmMwIDEw MDY0NAotLS0gYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1zdmUtYnVpbHRpbnMuY2MKKysr IGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtc3ZlLWJ1aWx0aW5zLmNjCkBAIC01Myw2ICs1 Myw3IEBACiAjaW5jbHVkZSAiYWFyY2g2NC1zdmUtYnVpbHRpbnMtc3ZlMi5oIgogI2luY2x1ZGUg ImFhcmNoNjQtc3ZlLWJ1aWx0aW5zLXNtZS5oIgogI2luY2x1ZGUgImFhcmNoNjQtc3ZlLWJ1aWx0 aW5zLXNoYXBlcy5oIgorI2luY2x1ZGUgImFhcmNoNjQtYnVpbHRpbnMuaCIKIAogbmFtZXNwYWNl IGFhcmNoNjRfc3ZlIHsKIApAQCAtMTI5LDcgKzEzMCw4IEBAIENPTlNURVhQUiBjb25zdCBtb2Rl X3N1ZmZpeF9pbmZvIG1vZGVfc3VmZml4ZXNbXSA9IHsKIAogLyogU3RhdGljIGluZm9ybWF0aW9u IGFib3V0IGVhY2ggdHlwZV9zdWZmaXhfaW5kZXguICAqLwogQ09OU1RFWFBSIGNvbnN0IHR5cGVf c3VmZml4X2luZm8gdHlwZV9zdWZmaXhlc1tOVU1fVFlQRV9TVUZGSVhFUyArIDFdID0gewotI2Rl ZmluZSBERUZfU1ZFX1RZUEVfU1VGRklYKE5BTUUsIEFDTEVfVFlQRSwgQ0xBU1MsIEJJVFMsIE1P REUpIFwKKyNkZWZpbmUgREVGX1NWRV9ORU9OX1RZUEVfU1VGRklYKE5BTUUsIEFDTEVfVFlQRSwg Q0xBU1MsIEJJVFMsIE1PREUsIFwKKwkJCQkgTkVPTjY0LCBORU9OMTI4KSBcCiAgIHsgIl8iICNO QU1FLCBcCiAgICAgVkVDVE9SX1RZUEVfIyNBQ0xFX1RZUEUsIFwKICAgICBUWVBFXyMjQ0xBU1Ms IFwKQEAgLTE0Miw3ICsxNDQsMTIgQEAgQ09OU1RFWFBSIGNvbnN0IHR5cGVfc3VmZml4X2luZm8g dHlwZV9zdWZmaXhlc1tOVU1fVFlQRV9TVUZGSVhFUyArIDFdID0gewogICAgIFRZUEVfIyNDTEFT UyA9PSBUWVBFX2Jvb2wsIFwKICAgICBmYWxzZSwgXAogICAgIDAsIFwKLSAgICBNT0RFIH0sCisg ICAgTU9ERSwgXAorICAgIE5FT042NCwgXAorICAgIE5FT04xMjggfSwKKyNkZWZpbmUgREVGX1NW RV9UWVBFX1NVRkZJWChOQU1FLCBBQ0xFX1RZUEUsIENMQVNTLCBCSVRTLCBNT0RFKSBcCisgIERF Rl9TVkVfTkVPTl9UWVBFX1NVRkZJWCAoTkFNRSwgQUNMRV9UWVBFLCBDTEFTUywgQklUUywgTU9E RSwgXAorCQkJICAgIEFSTV9ORU9OX0hfVFlQRVNfTEFTVCwgQVJNX05FT05fSF9UWVBFU19MQVNU KQogI2RlZmluZSBERUZfU01FX1pBX1NVRkZJWChOQU1FLCBCSVRTLCBNT0RFKSBcCiAgIHsgIl8i ICNOQU1FLCBcCiAgICAgTlVNX1ZFQ1RPUl9UWVBFUywgXApAQCAtMTU2LDEwICsxNjMsMTIgQEAg Q09OU1RFWFBSIGNvbnN0IHR5cGVfc3VmZml4X2luZm8gdHlwZV9zdWZmaXhlc1tOVU1fVFlQRV9T VUZGSVhFUyArIDFdID0gewogICAgIGZhbHNlLCBcCiAgICAgdHJ1ZSwgXAogICAgIDAsIFwKLSAg ICBNT0RFIH0sCisgICAgTU9ERSwgXAorICAgIEFSTV9ORU9OX0hfVFlQRVNfTEFTVCwgXAorICAg IEFSTV9ORU9OX0hfVFlQRVNfTEFTVCB9LAogI2luY2x1ZGUgImFhcmNoNjQtc3ZlLWJ1aWx0aW5z LmRlZiIKICAgeyAiIiwgTlVNX1ZFQ1RPUl9UWVBFUywgVFlQRV9ib29sLCAwLCAwLCBmYWxzZSwg ZmFsc2UsIGZhbHNlLCBmYWxzZSwKLSAgICBmYWxzZSwgZmFsc2UsIDAsIFZPSURtb2RlIH0KKyAg ICBmYWxzZSwgZmFsc2UsIDAsIFZPSURtb2RlLCBBUk1fTkVPTl9IX1RZUEVTX0xBU1QsIEFSTV9O RU9OX0hfVFlQRVNfTEFTVCB9CiB9OwogCiBDT05TVEVYUFIgY29uc3QgZ3JvdXBfc3VmZml4X2lu Zm8gZ3JvdXBfc3VmZml4ZXNbXSA9IHsKQEAgLTg4NCw2ICs4OTMsMTQgQEAgc3RhdGljIENPTlNU RVhQUiBjb25zdCBmdW5jdGlvbl9ncm91cF9pbmZvIGZ1bmN0aW9uX2dyb3Vwc1tdID0gewogI2lu Y2x1ZGUgImFhcmNoNjQtc3ZlLWJ1aWx0aW5zLmRlZiIKIH07CiAKKy8qIEEgbGlzdCBvZiBhbGwg TkVPTi1TVkUtQnJpZGdlIEFDTEUgZnVuY3Rpb25zLiAgKi8KK3N0YXRpYyBDT05TVEVYUFIgY29u c3QgZnVuY3Rpb25fZ3JvdXBfaW5mbyBuZW9uX3N2ZV9mdW5jdGlvbl9ncm91cHNbXSA9IHsKKyNk ZWZpbmUgREVGX05FT05fU1ZFX0ZVTkNUSU9OKE5BTUUsIFNIQVBFLCBUWVBFUywgR1JPVVBTLCBQ UkVEUykgXAorICB7ICNOQU1FLCAmbmVvbl9zdmVfYnJpZGdlX2Z1bmN0aW9uczo6TkFNRSwgJnNo YXBlczo6U0hBUEUsIHR5cGVzXyMjVFlQRVMsIFwKKyAgICBncm91cHNfIyNHUk9VUFMsIHByZWRz XyMjUFJFRFMsIDAgfSwKKyNpbmNsdWRlICJhYXJjaDY0LW5lb24tc3ZlLWJyaWRnZS1idWlsdGlu cy5kZWYiCit9OworCiAvKiBUaGUgc2NhbGFyIHR5cGUgYXNzb2NpYXRlZCB3aXRoIGVhY2ggdmVj dG9yIHR5cGUuICAqLwogZXh0ZXJuIEdUWSgoKSkgdHJlZSBzY2FsYXJfdHlwZXNbTlVNX1ZFQ1RP Ul9UWVBFUyArIDFdOwogdHJlZSBzY2FsYXJfdHlwZXNbTlVNX1ZFQ1RPUl9UWVBFUyArIDFdOwpA QCAtMjA5Miw2ICsyMTA5LDM1IEBAIGZ1bmN0aW9uX3Jlc29sdmVyOjppbmZlcl9pbnRlZ2VyX3Zl Y3Rvcl90eXBlICh1bnNpZ25lZCBpbnQgYXJnbm8pCiAgIHJldHVybiB0eXBlOwogfQogCisvKiBS ZXF1aXJlIGFyZ3VtZW50IEFSR05PIHRvIGhhdmUgc29tZSBmb3JtIG9mIE5FT04xMjggdmVjdG9y IHR5cGUuICBSZXR1cm4gdGhlCisgICBhc3NvY2lhdGVkIHR5cGUgc3VmZml4IG9uIHN1Y2Nlc3Mu CisgICBSZXBvcnQgYW4gZXJyb3IgYW5kIHJldHVybiBOVU1fVFlQRV9TVUZGSVhFUyBvbiBmYWls dXJlLiAgKi8KK3R5cGVfc3VmZml4X2luZGV4CitmdW5jdGlvbl9yZXNvbHZlcjo6aW5mZXJfbmVv bjEyOF92ZWN0b3JfdHlwZSAodW5zaWduZWQgaW50IGFyZ25vKQoreworICB0cmVlIGFjdHVhbCA9 IGdldF9hcmd1bWVudF90eXBlIChhcmdubyk7CisgIGlmIChhY3R1YWwgPT0gZXJyb3JfbWFya19u b2RlKQorICAgIHJldHVybiBOVU1fVFlQRV9TVUZGSVhFUzsKKworICBmb3IgKHVuc2lnbmVkIGlu dCBzdWZmaXhfaSA9IDA7IHN1ZmZpeF9pIDwgTlVNX1RZUEVfU1VGRklYRVM7ICsrc3VmZml4X2kp CisgICAgeworICAgICAgaW50IG5lb25faW5kZXggPSB0eXBlX3N1ZmZpeGVzW3N1ZmZpeF9pXS5u ZW9uMTI4X3R5cGU7CisgICAgICBpZiAobmVvbl9pbmRleCAhPSBBUk1fTkVPTl9IX1RZUEVTX0xB U1QpCisJeworCSAgdHJlZSB0eXBlID0gYWFyY2g2NF9zaW1kX3R5cGVzW25lb25faW5kZXhdLml0 eXBlOworCSAgaWYgKHR5cGUgJiYgbWF0Y2hlc190eXBlX3AgKHR5cGUsIGFjdHVhbCkpCisJICAg IHsKKwkgICAgICByZXR1cm4gdHlwZV9zdWZmaXhfaW5kZXggKHN1ZmZpeF9pKTsKKwkgICAgfQor CX0KKyAgICB9CisKKyAgZXJyb3JfYXQgKGxvY2F0aW9uLCAicGFzc2luZyAlcVQgdG8gYXJndW1l bnQgJWQgb2YgJXFFLCB3aGljaCIKKwkgICAgIiBleHBlY3RzIGEgMTI4IGJpdCBORU9OIHZlY3Rv ciB0eXBlIiwgYWN0dWFsLCBhcmdubyArIDEsIGZuZGVjbCk7CisgIHJldHVybiBOVU1fVFlQRV9T VUZGSVhFUzsKK30KKworCiAvKiBMaWtlIGluZmVyX3ZlY3Rvcl90eXBlLCBidXQgYWxzbyByZXF1 aXJlIHRoZSB0eXBlIHRvIGJlIGFuIHVuc2lnbmVkCiAgICBpbnRlZ2VyLiAgKi8KIHR5cGVfc3Vm Zml4X2luZGV4CkBAIC00NDU3LDYgKzQ1MDMsMTQgQEAgaW5pdF9idWlsdGlucyAoKQogICAgIH0K IH0KIAorLyogSW5pdGlhbGl6ZSB0aGUgU1ZFLU5FT04gQnJpZGdlIGF0IHN0YXJ0LXVwLCBpZiBM VE8gaXMgcmVxdWlyZWQuICAqLwordm9pZAoraW5pdF9uZW9uX3N2ZV9idWlsdGlucyAoKQorewor ICBpZiAoaW5fbHRvX3ApCisgICAgaGFuZGxlX2FybV9uZW9uX3N2ZV9icmlkZ2VfaCAoKTsKK30K KwogLyogUmVnaXN0ZXIgdmVjdG9yIHR5cGUgVFlQRSB1bmRlciBpdHMgYXJtX3N2ZS5oIG5hbWUu ICAqLwogc3RhdGljIHZvaWQKIHJlZ2lzdGVyX3ZlY3Rvcl90eXBlICh2ZWN0b3JfdHlwZV9pbmRl eCB0eXBlKQpAQCAtNDU4OCw2ICs0NjQyLDE2IEBAIGhhbmRsZV9hcm1fc3ZlX2ggKCkKICAgICAg IGJ1aWxkZXIucmVnaXN0ZXJfZnVuY3Rpb25fZ3JvdXAgKGZ1bmN0aW9uX2dyb3Vwc1tpXSk7CiB9 CiAKKy8qIEltcGxlbWVudCAjcHJhZ21hIEdDQyBhYXJjaDY0ICJhcm1fbmVvbl9zdmVfYnJpZGdl LmgiLiAgKi8KK3ZvaWQKK2hhbmRsZV9hcm1fbmVvbl9zdmVfYnJpZGdlX2ggKCkKK3sKKyAgLyog RGVmaW5lIHRoZSBmdW5jdGlvbnMuICAqLworICBmdW5jdGlvbl9idWlsZGVyIGJ1aWxkZXI7Cisg IGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgQVJSQVlfU0laRSAobmVvbl9zdmVfZnVuY3Rp b25fZ3JvdXBzKTsgKytpKQorICAgIGJ1aWxkZXIucmVnaXN0ZXJfZnVuY3Rpb25fZ3JvdXAgKG5l b25fc3ZlX2Z1bmN0aW9uX2dyb3Vwc1tpXSk7Cit9CisKIC8qIFJldHVybiB0aGUgZnVuY3Rpb24g ZGVjbCB3aXRoIFNWRSBmdW5jdGlvbiBzdWJjb2RlIENPREUsIG9yIGVycm9yX21hcmtfbm9kZQog ICAgaWYgbm8gc3VjaCBmdW5jdGlvbiBleGlzdHMuICAqLwogdHJlZQpkaWZmIC0tZ2l0IGEvZ2Nj L2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtc3ZlLWJ1aWx0aW5zLmRlZiBiL2djYy9jb25maWcvYWFy Y2g2NC9hYXJjaDY0LXN2ZS1idWlsdGlucy5kZWYKaW5kZXggMjNlZjc4ODljNTEzZWQzMjUxMmM4 ZjNkZmU3ZmUyMTI0YjcxZmE2ZC4uODNiZjcwZWI2ZTQ5NWM4NjU2MDhkMGIyNGY0NzdhNzYwYzY3 ZTQ5MiAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtc3ZlLWJ1aWx0aW5z LmRlZgorKysgYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1zdmUtYnVpbHRpbnMuZGVmCkBA IC00MSw2ICs0MSwxMSBAQAogI2RlZmluZSBERUZfU1ZFX0ZVTkNUSU9OX0dTKEEsIEIsIEMsIEQs IEUpCiAjZW5kaWYKIAorI2lmbmRlZiBERUZfU1ZFX05FT05fVFlQRV9TVUZGSVgKKyNkZWZpbmUg REVGX1NWRV9ORU9OX1RZUEVfU1VGRklYKEEsIEIsIEMsIEQsIEUsIEYsIEcpIFwKKyAgREVGX1NW RV9UWVBFX1NVRkZJWChBLCBCLCBDLCBELCBFKQorI2VuZGlmCisKICNpZm5kZWYgREVGX1NWRV9G VU5DVElPTgogI2RlZmluZSBERUZfU1ZFX0ZVTkNUSU9OKE5BTUUsIFNIQVBFLCBUWVBFUywgUFJF RFMpIFwKICAgREVGX1NWRV9GVU5DVElPTl9HUyAoTkFNRSwgU0hBUEUsIFRZUEVTLCBub25lLCBQ UkVEUykKQEAgLTEwNywyMyArMTEyLDM1IEBAIERFRl9TVkVfVFlQRV9TVUZGSVggKGI4LCBzdmJv b2xfdCwgYm9vbCwgOCwgVk54MTZCSW1vZGUpCiBERUZfU1ZFX1RZUEVfU1VGRklYIChiMTYsIHN2 Ym9vbF90LCBib29sLCAxNiwgVk54OEJJbW9kZSkKIERFRl9TVkVfVFlQRV9TVUZGSVggKGIzMiwg c3Zib29sX3QsIGJvb2wsIDMyLCBWTng0Qkltb2RlKQogREVGX1NWRV9UWVBFX1NVRkZJWCAoYjY0 LCBzdmJvb2xfdCwgYm9vbCwgNjQsIFZOeDJCSW1vZGUpCi1ERUZfU1ZFX1RZUEVfU1VGRklYIChi ZjE2LCBzdmJmbG9hdDE2X3QsIGJmbG9hdCwgMTYsIFZOeDhCRm1vZGUpCiBERUZfU1ZFX1RZUEVf U1VGRklYIChjLCBzdmNvdW50X3QsIGNvdW50LCA4LCBWTngxNkJJbW9kZSkKIERFRl9TVkVfVFlQ RV9TVUZGSVggKGM4LCBzdmNvdW50X3QsIGNvdW50LCA4LCBWTngxNkJJbW9kZSkKIERFRl9TVkVf VFlQRV9TVUZGSVggKGMxNiwgc3Zjb3VudF90LCBjb3VudCwgMTYsIFZOeDE2Qkltb2RlKQogREVG X1NWRV9UWVBFX1NVRkZJWCAoYzMyLCBzdmNvdW50X3QsIGNvdW50LCAzMiwgVk54MTZCSW1vZGUp CiBERUZfU1ZFX1RZUEVfU1VGRklYIChjNjQsIHN2Y291bnRfdCwgY291bnQsIDY0LCBWTngxNkJJ bW9kZSkKLURFRl9TVkVfVFlQRV9TVUZGSVggKGYxNiwgc3ZmbG9hdDE2X3QsIGZsb2F0LCAxNiwg Vk54OEhGbW9kZSkKLURFRl9TVkVfVFlQRV9TVUZGSVggKGYzMiwgc3ZmbG9hdDMyX3QsIGZsb2F0 LCAzMiwgVk54NFNGbW9kZSkKLURFRl9TVkVfVFlQRV9TVUZGSVggKGY2NCwgc3ZmbG9hdDY0X3Qs IGZsb2F0LCA2NCwgVk54MkRGbW9kZSkKLURFRl9TVkVfVFlQRV9TVUZGSVggKHM4LCBzdmludDhf dCwgc2lnbmVkLCA4LCBWTngxNlFJbW9kZSkKLURFRl9TVkVfVFlQRV9TVUZGSVggKHMxNiwgc3Zp bnQxNl90LCBzaWduZWQsIDE2LCBWTng4SEltb2RlKQotREVGX1NWRV9UWVBFX1NVRkZJWCAoczMy LCBzdmludDMyX3QsIHNpZ25lZCwgMzIsIFZOeDRTSW1vZGUpCi1ERUZfU1ZFX1RZUEVfU1VGRklY IChzNjQsIHN2aW50NjRfdCwgc2lnbmVkLCA2NCwgVk54MkRJbW9kZSkKLURFRl9TVkVfVFlQRV9T VUZGSVggKHU4LCBzdnVpbnQ4X3QsIHVuc2lnbmVkLCA4LCBWTngxNlFJbW9kZSkKLURFRl9TVkVf VFlQRV9TVUZGSVggKHUxNiwgc3Z1aW50MTZfdCwgdW5zaWduZWQsIDE2LCBWTng4SEltb2RlKQot REVGX1NWRV9UWVBFX1NVRkZJWCAodTMyLCBzdnVpbnQzMl90LCB1bnNpZ25lZCwgMzIsIFZOeDRT SW1vZGUpCi1ERUZfU1ZFX1RZUEVfU1VGRklYICh1NjQsIHN2dWludDY0X3QsIHVuc2lnbmVkLCA2 NCwgVk54MkRJbW9kZSkKK0RFRl9TVkVfTkVPTl9UWVBFX1NVRkZJWCAoYmYxNiwgc3ZiZmxvYXQx Nl90LCBiZmxvYXQsIDE2LCBWTng4QkZtb2RlLAorCQkJICBCZmxvYXQxNng0X3QsIEJmbG9hdDE2 eDhfdCkKK0RFRl9TVkVfTkVPTl9UWVBFX1NVRkZJWCAoZjE2LCBzdmZsb2F0MTZfdCwgZmxvYXQs IDE2LCBWTng4SEZtb2RlLAorCQkJICBGbG9hdDE2eDRfdCwgRmxvYXQxNng4X3QpCitERUZfU1ZF X05FT05fVFlQRV9TVUZGSVggKGYzMiwgc3ZmbG9hdDMyX3QsIGZsb2F0LCAzMiwgVk54NFNGbW9k ZSwKKwkJCSAgRmxvYXQzMngyX3QsIEZsb2F0MzJ4NF90KQorREVGX1NWRV9ORU9OX1RZUEVfU1VG RklYIChmNjQsIHN2ZmxvYXQ2NF90LCBmbG9hdCwgNjQsIFZOeDJERm1vZGUsCisJCQkgIEZsb2F0 NjR4MV90LCBGbG9hdDY0eDJfdCkKK0RFRl9TVkVfTkVPTl9UWVBFX1NVRkZJWCAoczgsIHN2aW50 OF90LCBzaWduZWQsIDgsIFZOeDE2UUltb2RlLAorCQkJICBJbnQ4eDhfdCwgSW50OHgxNl90KQor REVGX1NWRV9ORU9OX1RZUEVfU1VGRklYIChzMTYsIHN2aW50MTZfdCwgc2lnbmVkLCAxNiwgVk54 OEhJbW9kZSwKKwkJCSAgSW50MTZ4NF90LCBJbnQxNng4X3QpCitERUZfU1ZFX05FT05fVFlQRV9T VUZGSVggKHMzMiwgc3ZpbnQzMl90LCBzaWduZWQsIDMyLCBWTng0U0ltb2RlLAorCQkJICBJbnQz MngyX3QsIEludDMyeDRfdCkKK0RFRl9TVkVfTkVPTl9UWVBFX1NVRkZJWCAoczY0LCBzdmludDY0 X3QsIHNpZ25lZCwgNjQsIFZOeDJESW1vZGUsCisJCQkgIEludDY0eDFfdCwgSW50NjR4Ml90KQor REVGX1NWRV9ORU9OX1RZUEVfU1VGRklYICh1OCwgc3Z1aW50OF90LCB1bnNpZ25lZCwgOCwgVk54 MTZRSW1vZGUsCisJCQkgIFVpbnQ4eDhfdCwgVWludDh4MTZfdCkKK0RFRl9TVkVfTkVPTl9UWVBF X1NVRkZJWCAodTE2LCBzdnVpbnQxNl90LCB1bnNpZ25lZCwgMTYsIFZOeDhISW1vZGUsCisJCQkg IFVpbnQxNng0X3QsIFVpbnQxNng4X3QpCitERUZfU1ZFX05FT05fVFlQRV9TVUZGSVggKHUzMiwg c3Z1aW50MzJfdCwgdW5zaWduZWQsIDMyLCBWTng0U0ltb2RlLAorCQkJICBVaW50MzJ4Ml90LCBV aW50MzJ4NF90KQorREVGX1NWRV9ORU9OX1RZUEVfU1VGRklYICh1NjQsIHN2dWludDY0X3QsIHVu c2lnbmVkLCA2NCwgVk54MkRJbW9kZSwKKwkJCSAgVWludDY0eDFfdCwgVWludDY0eDJfdCkKIAog LyogQXNzb2NpYXRlIF96YSB3aXRoIGJ5dGVzLiAgVGhpcyBpcyBuZWVkZWQgZm9yIHN2bGRyX3Zu dW1femEgYW5kCiAgICBzdnN0cl92bnVtX3phLCB3aG9zZSBaQSBvZmZzZXQgY2FuIGJlIGluIHRo ZSByYW5nZSBbMCwgMTVdLCBhcyBmb3IgemE4LiAgKi8KQEAgLTE1OSw2ICsxNzYsNyBAQCBERUZf U1ZFX0dST1VQX1NVRkZJWCAodmc0eDQsIDQsIDQpCiAjdW5kZWYgREVGX1NWRV9GVU5DVElPTl9H UwogI3VuZGVmIERFRl9TVkVfR1JPVVBfU1VGRklYCiAjdW5kZWYgREVGX1NNRV9aQV9TVUZGSVgK KyN1bmRlZiBERUZfU1ZFX05FT05fVFlQRV9TVUZGSVgKICN1bmRlZiBERUZfU1ZFX1RZUEVfU1VG RklYCiAjdW5kZWYgREVGX1NWRV9UWVBFCiAjdW5kZWYgREVGX1NWRV9NT0RFCmRpZmYgLS1naXQg YS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1zdmUtYnVpbHRpbnMuaCBiL2djYy9jb25maWcv YWFyY2g2NC9hYXJjaDY0LXN2ZS1idWlsdGlucy5oCmluZGV4IGU2N2M0NjU4MWYzNzA4OTUxZjY1 OWQ1YzkwODUwNTc3NTE1YWY1NzkuLmU2ODJlMTRmM2I1MTRkMDA5ZjEyMDI5ODA2ODg2MjRkYmQ4 NmU2MzYgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LXN2ZS1idWlsdGlu cy5oCisrKyBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LXN2ZS1idWlsdGlucy5oCkBAIC0y MCw2ICsyMCw4IEBACiAjaWZuZGVmIEdDQ19BQVJDSDY0X1NWRV9CVUlMVElOU19ICiAjZGVmaW5l IEdDQ19BQVJDSDY0X1NWRV9CVUlMVElOU19ICiAKKyNpbmNsdWRlICJhYXJjaDY0LWJ1aWx0aW5z LmgiCisKIC8qIFRoZSBmdWxsIG5hbWUgb2YgYW4gU1ZFIEFDTEUgZnVuY3Rpb24gaXMgdGhlIGNv bmNhdGVuYXRpb24gb2Y6CiAKICAgIC0gdGhlIGJhc2UgbmFtZSAoInN2YWRkIiwgZXRjLikKQEAg LTIyOSw2ICsyMzEsMTQgQEAgc3RydWN0IG1vZGVfc3VmZml4X2luZm8KICAgdW5pdHNfaW5kZXgg ZGlzcGxhY2VtZW50X3VuaXRzOwogfTsKIAorI2RlZmluZSBFTlRSWShFLCBNLCBRLCBHKSBFLAor ZW51bSBhYXJjaDY0X3NpbWRfdHlwZQoreworI2luY2x1ZGUgImFhcmNoNjQtc2ltZC1idWlsdGlu LXR5cGVzLmRlZiIKKyAgQVJNX05FT05fSF9UWVBFU19MQVNUCit9OworI3VuZGVmIEVOVFJZCisK IC8qIFN0YXRpYyBpbmZvcm1hdGlvbiBhYm91dCBhIHR5cGUgc3VmZml4LiAgKi8KIHN0cnVjdCB0 eXBlX3N1ZmZpeF9pbmZvCiB7CkBAIC0yNjIsNiArMjcyLDExIEBAIHN0cnVjdCB0eXBlX3N1ZmZp eF9pbmZvCiAKICAgLyogVGhlIGFzc29jaWF0ZWQgdmVjdG9yIG9yIHByZWRpY2F0ZSBtb2RlLiAg Ki8KICAgbWFjaGluZV9tb2RlIHZlY3Rvcl9tb2RlIDogMTY7CisKKyAgLyogVGhlIGNvcnJlc3Bv bmRpbmcgNjQtYml0IGFuZCAxMjgtYml0IGFybV9uZW9uLmggdHlwZXMsIG9yCisgICAgIEFSTV9O RU9OX0hfVFlQRVNfTEFTVCBpZiBub25lLiAgKi8KKyAgYWFyY2g2NF9zaW1kX3R5cGUgbmVvbjY0 X3R5cGU7CisgIGFhcmNoNjRfc2ltZF90eXBlIG5lb24xMjhfdHlwZTsKIH07CiAKIC8qIFN0YXRp YyBpbmZvcm1hdGlvbiBhYm91dCBhIGdyb3VwIHN1ZmZpeC4gICovCkBAIC00OTgsNiArNTEzLDcg QEAgcHVibGljOgogICBzdmVfdHlwZSBpbmZlcl92ZWN0b3Jfb3JfdHVwbGVfdHlwZSAodW5zaWdu ZWQgaW50LCB1bnNpZ25lZCBpbnQpOwogICB0eXBlX3N1ZmZpeF9pbmRleCBpbmZlcl92ZWN0b3Jf dHlwZSAodW5zaWduZWQgaW50KTsKICAgdHlwZV9zdWZmaXhfaW5kZXggaW5mZXJfaW50ZWdlcl92 ZWN0b3JfdHlwZSAodW5zaWduZWQgaW50KTsKKyAgdHlwZV9zdWZmaXhfaW5kZXggaW5mZXJfbmVv bjEyOF92ZWN0b3JfdHlwZSAodW5zaWduZWQgaW50KTsKICAgdHlwZV9zdWZmaXhfaW5kZXggaW5m ZXJfdW5zaWduZWRfdmVjdG9yX3R5cGUgKHVuc2lnbmVkIGludCk7CiAgIHR5cGVfc3VmZml4X2lu ZGV4IGluZmVyX3NkX3ZlY3Rvcl90eXBlICh1bnNpZ25lZCBpbnQpOwogICBzdmVfdHlwZSBpbmZl cl90dXBsZV90eXBlICh1bnNpZ25lZCBpbnQpOwpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hYXJj aDY0L2FhcmNoNjQtc3ZlLm1kIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtc3ZlLm1kCmlu ZGV4IGZkZDE0ZDE1MDk2YWM0ODRlYTMzMmRhMTU1YmExZGZiYzVmN2YzYmQuLjMyNjMwZGJlNmI2 ODZlYTU1OGNkZTA0NDdhYjgyNDNiZTUzYjVhMzIgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvYWFy Y2g2NC9hYXJjaDY0LXN2ZS5tZAorKysgYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1zdmUu bWQKQEAgLTEwOTUwLDMgKzEwOTUwLDM2IEBACiAgICAgb3BlcmFuZHNbNF0gPSBDT05TVE0xX1JU WCAoPFZQUkVEPm1vZGUpOwogICB9CiApCisKKyhkZWZpbmVfaW5zbl9hbmRfc3BsaXQgIkBhYXJj aDY0X3N2ZV9nZXRfbmVvbnFfPG1vZGU+IgorICBbKHNldCAobWF0Y2hfb3BlcmFuZDo8VjEyOD4g MCAicmVnaXN0ZXJfb3BlcmFuZCIgIj13IikKKwkgICh2ZWNfc2VsZWN0OjxWMTI4PgorCSAgICAo bWF0Y2hfb3BlcmFuZDpTVkVfRlVMTCAxICJyZWdpc3Rlcl9vcGVyYW5kIiAidyIpCisJICAgICht YXRjaF9vcGVyYW5kIDIgImRlc2NlbmRpbmdfaW50X3BhcmFsbGVsIikpKV0KKyAgIlRBUkdFVF9T VkUKKyAgICYmIEJZVEVTX0JJR19FTkRJQU4KKyAgICYmIGtub3duX2VxIChJTlRWQUwgKFhWRUNF WFAgKG9wZXJhbmRzWzJdLCAwLCAwKSksCisJCUdFVF9NT0RFX05VTklUUyAoPFYxMjg+bW9kZSkg LSAxKSIKKyAgIiMiCisgICImJiByZWxvYWRfY29tcGxldGVkIgorICBbKHNldCAobWF0Y2hfZHVw IDApIChtYXRjaF9kdXAgMSkpXQorICB7CisgICAgb3BlcmFuZHNbMV0gPSBnZW5fcnR4X1JFRyAo PFYxMjg+bW9kZSwgUkVHTk8gKG9wZXJhbmRzWzFdKSk7CisgIH0KKykKKworKGRlZmluZV9pbnNu ICJAYWFyY2g2NF9zdmVfc2V0X25lb25xXzxtb2RlPiIKKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6 U1ZFX0ZVTEwgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj13IikKKyAgICAgICh1bnNwZWM6U1ZFX0ZV TEwKKwlbKG1hdGNoX29wZXJhbmQ6U1ZFX0ZVTEwgMSAicmVnaXN0ZXJfb3BlcmFuZCIgInciKQor CShtYXRjaF9vcGVyYW5kOjxWMTI4PiAyICJyZWdpc3Rlcl9vcGVyYW5kIiAidyIpCisJKG1hdGNo X29wZXJhbmQ6PFZQUkVEPiAzICJyZWdpc3Rlcl9vcGVyYW5kIiAiVXBsIildCisJVU5TUEVDX1NF VF9ORU9OUSkpXQorICAiVEFSR0VUX1NWRQorICAgJiYgQllURVNfQklHX0VORElBTiIKKyAgewor ICAgIG9wZXJhbmRzWzJdID0gbG93cGFydF9zdWJyZWcgKDxNT0RFPm1vZGUsIG9wZXJhbmRzWzJd LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFVF9NT0RFIChvcGVyYW5kc1sy XSkpOworICAgIHJldHVybiAic2VsXHQlMC48VmV0eXBlPiwgJTMsICUyLjxWZXR5cGU+LCAlMS48 VmV0eXBlPiI7CisgIH0KKykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg YS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC5jYyBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJj aDY0LmNjCmluZGV4IDVjZmZkYWJjNjJlNTQ3YmJhZmFlZGNkNDYyMTUxMjBlNWM3ZGE4ODguLjI0 MGMyYTBlOWU0NDJmNWI2NDBhYWVjNDJmM2Y1ZTRjNDdmM2VmMTIgMTAwNjQ0Ci0tLSBhL2djYy9j b25maWcvYWFyY2g2NC9hYXJjaDY0LmNjCisrKyBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0 LmNjCkBAIC0xNTM3OCw2ICsxNTM3OCw3IEBAIGFhcmNoNjRfaW5pdF9idWlsdGlucyAoKQogewog ICBhYXJjaDY0X2dlbmVyYWxfaW5pdF9idWlsdGlucyAoKTsKICAgYWFyY2g2NF9zdmU6OmluaXRf YnVpbHRpbnMgKCk7CisgIGFhcmNoNjRfc3ZlOjppbml0X25lb25fc3ZlX2J1aWx0aW5zICgpOwog I2lmZGVmIFNVQlRBUkdFVF9JTklUX0JVSUxUSU5TCiAgIFNVQlRBUkdFVF9JTklUX0JVSUxUSU5T OwogI2VuZGlmCmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FhcmNoNjQvYXJtX25lb25fc3ZlX2Jy aWRnZS5oIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FybV9uZW9uX3N2ZV9icmlkZ2UuaApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwLi44ZjUyNmVhZTg2Yjk0ZjYxNWQyMmZlOGRlNTI1ODNiYjQwM2UxMDJlCi0tLSAvZGV2L251 bGwKKysrIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FybV9uZW9uX3N2ZV9icmlkZ2UuaApAQCAtMCww ICsxLDM4IEBACisvKiBBQXJjaDY0IE5FT04tU1ZFIEJyaWRnZSBpbnRyaW5zaWNzIGluY2x1ZGUg ZmlsZS4KKyAgIENvcHlyaWdodCAoQykgMjAyMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KKworICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0NDLgorCisgICBHQ0MgaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICAgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQK KyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMsIG9y IChhdCB5b3VyCisgICBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICBHQ0MgaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQK KyAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1F UkNIQU5UQUJJTElUWQorICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor CisgICBVbmRlciBTZWN0aW9uIDcgb2YgR1BMIHZlcnNpb24gMywgeW91IGFyZSBncmFudGVkIGFk ZGl0aW9uYWwKKyAgIHBlcm1pc3Npb25zIGRlc2NyaWJlZCBpbiB0aGUgR0NDIFJ1bnRpbWUgTGli cmFyeSBFeGNlcHRpb24sIHZlcnNpb24KKyAgIDMuMSwgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24uCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFuZAorICAgYSBjb3B5IG9mIHRo ZSBHQ0MgUnVudGltZSBMaWJyYXJ5IEV4Y2VwdGlvbiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsK KyAgIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVElNRSByZXNwZWN0aXZl bHkuICBJZiBub3QsIHNlZQorICAgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8K KworI2lmbmRlZiBfQVJNX05FT05fU1ZFX0JSSURHRV9IXworI2RlZmluZSBfQVJNX05FT05fU1ZF X0JSSURHRV9IXworCisjaW5jbHVkZSA8YXJtX25lb24uaD4KKyNpbmNsdWRlIDxhcm1fc3ZlLmg+ CisKKy8qIE5PVEU6IFRoaXMgaW1wbGVtZW50YXRpb24gb2YgYXJtX25lb25fc3ZlX2JyaWRnZS5o IGlzIGludGVudGlvbmFsbHkgc2hvcnQuICBJdCBkb2VzCisgICBub3QgZGVmaW5lIHRoZSB0eXBl cyBhbmQgaW50cmluc2ljIGZ1bmN0aW9ucyBkaXJlY3RseSBpbiBDIGFuZCBDKysKKyAgIGNvZGUs IGJ1dCBpbnN0ZWFkIHVzZXMgdGhlIGZvbGxvd2luZyBwcmFnbWEgdG8gdGVsbCBHQ0MgdG8gaW5z ZXJ0IHRoZQorICAgbmVjZXNzYXJ5IHR5cGUgYW5kIGZ1bmN0aW9uIGRlZmluaXRpb25zIGl0c2Vs Zi4gIFRoZSBuZXQgZWZmZWN0IGlzIHRoZQorICAgc2FtZSwgYW5kIHRoZSBmaWxlIGlzIGEgY29t cGxldGUgaW1wbGVtZW50YXRpb24gb2YgYXJtX25lb25fc3ZlX2JyaWRnZS5oLiAgKi8KKyNwcmFn bWEgR0NDIGFhcmNoNjQgImFybV9uZW9uX3N2ZV9icmlkZ2UuaCIKKworI2VuZGlmClwgTm8gbmV3 bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2l0ZXJh dG9ycy5tZCBiL2djYy9jb25maWcvYWFyY2g2NC9pdGVyYXRvcnMubWQKaW5kZXggNDM3NzE4ODMw M2MzNjU1ZGM4NDNkNjBmMGI0YzgyYzViYjAwODc3NS4uYTkzOTdmY2FkYzlhMGQ5MGQ1OTc4Zjcx ZTQ2NjFkMDc4MTVlYzkxNyAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2l0ZXJhdG9y cy5tZAorKysgYi9nY2MvY29uZmlnL2FhcmNoNjQvaXRlcmF0b3JzLm1kCkBAIC04MDYsNiArODA2 LDcgQEAKICAgICBVTlNQRUNfRlRTTVVMCTsgVXNlZCBpbiBhYXJjaDY0LXN2ZS5tZC4KICAgICBV TlNQRUNfRlRTU0VMCTsgVXNlZCBpbiBhYXJjaDY0LXN2ZS5tZC4KICAgICBVTlNQRUNfU01BVE1V TAk7IFVzZWQgaW4gYWFyY2g2NC1zdmUubWQuCisgICAgVU5TUEVDX1NFVF9ORU9OUQk7IFVzZWQg aW4gYWFyY2g2NC1zdmUubWQuCiAgICAgVU5TUEVDX1VNQVRNVUwJOyBVc2VkIGluIGFhcmNoNjQt c3ZlLm1kLgogICAgIFVOU1BFQ19VU01BVE1VTAk7IFVzZWQgaW4gYWFyY2g2NC1zdmUubWQuCiAg ICAgVU5TUEVDX1RSTjFRCTsgVXNlZCBpbiBhYXJjaDY0LXN2ZS5tZC4KZGlmZiAtLWdpdCBhL2dj Yy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvbmVvbi1zdmUtYnJpZGdlLmMgYi9nY2MvdGVzdHN1 aXRlL2djYy5kZy90b3J0dXJlL25lb24tc3ZlLWJyaWRnZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRmOGYyNmNl YzFiNDRjZGJhMjIyNzU3YTI5ODgwODliNWVkNGFjYzQKLS0tIC9kZXYvbnVsbAorKysgYi9nY2Mv dGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL25lb24tc3ZlLWJyaWRnZS5jCkBAIC0wLDAgKzEsNjQg QEAKKy8vIHsgZGctb3B0aW9ucyAiLW1hcmNoPWFybXY4LjItYStzdmUiIH0KKy8vIHsgZGctZG8g cnVuIHsgdGFyZ2V0IGFhcmNoNjRfc3ZlX2h3IH0gfQorCisjaW5jbHVkZSA8YXJtX25lb25fc3Zl X2JyaWRnZS5oPgorCitleHRlcm4gdm9pZCBhYm9ydCAodm9pZCk7CisKK2ludAorc3ZnZXRfbmVv bnFfdGVzdCAoKQoreworICBpbnQ2NF90IHZhbDEgPSA5ODc2NTQzMjE7CisgIGludDY0X3QgdmFs MiA9IDEyMzQ1Njc4OTsKKyAgc3ZpbnQ2NF90IHN2ZUlucHV0ID0gc3ZkdXBxX25fczY0ICh2YWwx LCB2YWwyKTsKKyAgaW50NjR4Ml90IG5lb25SZXR1cm4gPSBzdmdldF9uZW9ucV9zNjQgKHN2ZUlu cHV0KTsKKyAgaW50NjRfdCB2YWwxUmV0dXJuID0gdmdldHFfbGFuZV9zNjQgKG5lb25SZXR1cm4s IDApOworICBpbnQ2NF90IHZhbDJSZXR1cm4gPSB2Z2V0cV9sYW5lX3M2NCAobmVvblJldHVybiwg MSk7CisgIGlmICh2YWwxID09IHZhbDFSZXR1cm4gJiYgdmFsMiA9PSB2YWwyUmV0dXJuKQorICAg IHJldHVybiAwOworICByZXR1cm4gMTsKK30KKworaW50CitzdnNldF9uZW9ucV90ZXN0ICgpCit7 CisgIGludDY0X3QgdmFsMSA9IDk4NzY1NDMyMTsKKyAgaW50NjRfdCB2YWwyID0gMTIzNDU2Nzg5 OworICBpbnQ2NHgyX3QgTmVvbklucHV0OworICBOZW9uSW5wdXQgPSB2c2V0cV9sYW5lX3M2NCAo dmFsMSwgTmVvbklucHV0LCAwKTsKKyAgTmVvbklucHV0ID0gdnNldHFfbGFuZV9zNjQgKHZhbDIs IE5lb25JbnB1dCwgMSk7CisgIHN2aW50NjRfdCBzdmVSZXR1cm4gPSBzdnNldF9uZW9ucV9zNjQg KHN2ZVJldHVybiwgTmVvbklucHV0KTsKKyAgaW50NjRfdCB2YWwxUmV0dXJuID0gc3ZsYXN0YV9z NjQgKHN2cHRydWVfYjY0KCksIHN2ZVJldHVybik7CisgIGludDY0X3QgdmFsMlJldHVybiA9IHN2 bGFzdGJfczY0IChzdnB0cnVlX3BhdF9iOChTVl9WTDE2KSwgc3ZlUmV0dXJuKTsKKyAgaWYgKHZh bDEgPT0gdmFsMVJldHVybiAmJiB2YWwyID09IHZhbDJSZXR1cm4pCisgICAgcmV0dXJuIDA7Cisg IHJldHVybiAxOworfQorCitpbnQKK3N2ZHVwX25lb25xX3Rlc3QgKCkKK3sKKyAgaW50NjRfdCB2 YWwxID0gOTg3NjU0MzIxOworICBpbnQ2NF90IHZhbDIgPSAxMjM0NTY3ODk7CisgIGludDY0eDJf dCBOZW9uSW5wdXQ7CisgIE5lb25JbnB1dCA9IHZzZXRxX2xhbmVfczY0ICh2YWwxLCBOZW9uSW5w dXQsIDApOworICBOZW9uSW5wdXQgPSB2c2V0cV9sYW5lX3M2NCAodmFsMiwgTmVvbklucHV0LCAx KTsKKyAgc3ZpbnQ2NF90IHN2ZVJldHVybiA9IHN2ZHVwX25lb25xX3M2NCAoTmVvbklucHV0KTsK KyAgaW50NjRfdCB2YWwxUmV0dXJuID0gc3ZsYXN0YV9zNjQgKHN2cHRydWVfYjY0KCksIHN2ZVJl dHVybik7CisgIGludDY0X3QgdmFsMlJldHVybiA9IHN2bGFzdGJfczY0IChzdnB0cnVlX2I2NCgp LCBzdmVSZXR1cm4pOworICBpZiAodmFsMSA9PSB2YWwxUmV0dXJuICYmIHZhbDIgPT0gdmFsMlJl dHVybikKKyAgICByZXR1cm4gMDsKKyAgcmV0dXJuIDE7Cit9CisKK2ludAorbWFpbiAoKQorewor ICBpZiAoc3ZnZXRfbmVvbnFfdGVzdCAoKSA9PSAxKQorICAgIGFib3J0ICgpOworICBpZiAoc3Zz ZXRfbmVvbnFfdGVzdCAoKSA9PSAxKQorICAgIGFib3J0ICgpOworICBpZiAoc3ZkdXBfbmVvbnFf dGVzdCAoKSA9PSAxKQorICAgIGFib3J0ICgpOworICByZXR1cm4gMDsKK30KXCBObyBuZXdsaW5l IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFy Y2g2NC9zdmUvYWNsZS9hc20vZHVwX25lb25xX2JmMTYuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9hYXJjaDY0L3N2ZS9hY2xlL2FzbS9kdXBfbmVvbnFfYmYxNi5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjli NGI3NjJiZjEzMzgzYzgxMmI5MDdkZWJmZDA0Y2NiMTA3Yjc3NjkKLS0tIC9kZXYvbnVsbAorKysg Yi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvYWNsZS9hc20vZHVwX25lb25x X2JmMTYuYwpAQCAtMCwwICsxLDMwIEBACisvKiB7IGRnLWZpbmFsIHsgY2hlY2stZnVuY3Rpb24t Ym9kaWVzICIqKiIgIiIgIi1EQ0hFQ0tfQVNNIiB9IH0gKi8KKworI2luY2x1ZGUgInRlc3Rfc3Zl X2FjbGUuaCIKKworLyoKKyoqIGR1cF9uZW9ucV9iZjE2X3owOgorKioJZHVwCXowLnEsIHo0LnFc WzBcXQorKioJcmV0CisqLworVEVTVF9EVVBfTkVPTlEgKGR1cF9uZW9ucV9iZjE2X3owLCBiZmxv YXQxNng4X3QsIHN2YmZsb2F0MTZfdCwKKwkgIHowID0gc3ZkdXBfbmVvbnFfYmYxNiAoejQpLAor CSAgejAgPSBzdmR1cF9uZW9ucSAoejQpKQorCisvKgorKiogZHVwX25lb25xX2JmMTZfejQ6Cisq KglkdXAJejQucSwgejQucVxbMFxdCisqKglyZXQKKyovCitURVNUX0RVUF9ORU9OUSAoZHVwX25l b25xX2JmMTZfejQsIGJmbG9hdDE2eDhfdCwgc3ZiZmxvYXQxNl90LAorCSAgejRfcmVzID0gc3Zk dXBfbmVvbnFfYmYxNiAoejQpLAorCSAgejRfcmVzID0gc3ZkdXBfbmVvbnEgKHo0KSkKKworLyoK KyoqIGR1cF9uZW9ucV9iZjE2X3o1OgorKioJZHVwCXo1LnEsIHo0LnFcWzBcXQorKioJcmV0Cisq LworVEVTVF9EVVBfTkVPTlEgKGR1cF9uZW9ucV9iZjE2X3o1LCBiZmxvYXQxNng4X3QsIHN2YmZs b2F0MTZfdCwKKwkgIHo1X3JlcyA9IHN2ZHVwX25lb25xX2JmMTYgKHo0KSwKKwkgIHo1X3JlcyA9 IHN2ZHVwX25lb25xICh6NCkpCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv YWFyY2g2NC9zdmUvYWNsZS9hc20vZHVwX25lb25xX2YxNi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L2FhcmNoNjQvc3ZlL2FjbGUvYXNtL2R1cF9uZW9ucV9mMTYuYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42 OTllOTY2YzJhZjE3ZWQwNTFhNzJmMzhmNWQ0YjFkZTlhNTgzMjJjCi0tLSAvZGV2L251bGwKKysr IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2FjbGUvYXNtL2R1cF9uZW9u cV9mMTYuYwpAQCAtMCwwICsxLDMwIEBACisvKiB7IGRnLWZpbmFsIHsgY2hlY2stZnVuY3Rpb24t Ym9kaWVzICIqKiIgIiIgIi1EQ0hFQ0tfQVNNIiB9IH0gKi8KKworI2luY2x1ZGUgInRlc3Rfc3Zl X2FjbGUuaCIKKworLyoKKyoqIGR1cF9uZW9ucV9mMTZfejA6CisqKglkdXAJejAucSwgejQucVxb MFxdCisqKglyZXQKKyovCitURVNUX0RVUF9ORU9OUSAoZHVwX25lb25xX2YxNl96MCwgZmxvYXQx Nng4X3QsIHN2ZmxvYXQxNl90LAorCSAgejAgPSBzdmR1cF9uZW9ucV9mMTYgKHo0KSwKKwkgIHow ID0gc3ZkdXBfbmVvbnEgKHo0KSkKKworLyoKKyoqIGR1cF9uZW9ucV9mMTZfejQ6CisqKglkdXAJ ejQucSwgejQucVxbMFxdCisqKglyZXQKKyovCitURVNUX0RVUF9ORU9OUSAoZHVwX25lb25xX2Yx Nl96NCwgZmxvYXQxNng4X3QsIHN2ZmxvYXQxNl90LAorCSAgejRfcmVzID0gc3ZkdXBfbmVvbnFf ZjE2ICh6NCksCisJICB6NF9yZXMgPSBzdmR1cF9uZW9ucSAoejQpKQorCisvKgorKiogZHVwX25l b25xX2YxNl96NToKKyoqCWR1cAl6NS5xLCB6NC5xXFswXF0KKyoqCXJldAorKi8KK1RFU1RfRFVQ X05FT05RIChkdXBfbmVvbnFfZjE2X3o1LCBmbG9hdDE2eDhfdCwgc3ZmbG9hdDE2X3QsCisJICB6 NV9yZXMgPSBzdmR1cF9uZW9ucV9mMTYgKHo0KSwKKwkgIHo1X3JlcyA9IHN2ZHVwX25lb25xICh6 NCkpCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvYWNs ZS9hc20vZHVwX25lb25xX2YzMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQv c3ZlL2FjbGUvYXNtL2R1cF9uZW9ucV9mMzIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZDYwNmVmMGQwYzRmMDBj MmYzYzIwNTcxNDhmNzI0ZjYwYTZjNzg1Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2FjbGUvYXNtL2R1cF9uZW9ucV9mMzIuYwpAQCAtMCww ICsxLDMwIEBACisvKiB7IGRnLWZpbmFsIHsgY2hlY2stZnVuY3Rpb24tYm9kaWVzICIqKiIgIiIg Ii1EQ0hFQ0tfQVNNIiB9IH0gKi8KKworI2luY2x1ZGUgInRlc3Rfc3ZlX2FjbGUuaCIKKworLyoK KyoqIGR1cF9uZW9ucV9mMzJfejA6CisqKglkdXAJejAucSwgejQucVxbMFxdCisqKglyZXQKKyov CitURVNUX0RVUF9ORU9OUSAoZHVwX25lb25xX2YzMl96MCwgZmxvYXQzMng0X3QsIHN2ZmxvYXQz Ml90LAorCSAgejAgPSBzdmR1cF9uZW9ucV9mMzIgKHo0KSwKKwkgIHowID0gc3ZkdXBfbmVvbnEg KHo0KSkKKworLyoKKyoqIGR1cF9uZW9ucV9mMzJfejQ6CisqKglkdXAJejQucSwgejQucVxbMFxd CisqKglyZXQKKyovCitURVNUX0RVUF9ORU9OUSAoZHVwX25lb25xX2YzMl96NCwgZmxvYXQzMng0 X3QsIHN2ZmxvYXQzMl90LAorCSAgejRfcmVzID0gc3ZkdXBfbmVvbnFfZjMyICh6NCksCisJICB6 NF9yZXMgPSBzdmR1cF9uZW9ucSAoejQpKQorCisvKgorKiogZHVwX25lb25xX2YzMl96NToKKyoq CWR1cAl6NS5xLCB6NC5xXFswXF0KKyoqCXJldAorKi8KK1RFU1RfRFVQX05FT05RIChkdXBfbmVv bnFfZjMyX3o1LCBmbG9hdDMyeDRfdCwgc3ZmbG9hdDMyX3QsCisJICB6NV9yZXMgPSBzdmR1cF9u ZW9ucV9mMzIgKHo0KSwKKwkgIHo1X3JlcyA9IHN2ZHVwX25lb25xICh6NCkpCmRpZmYgLS1naXQg YS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvYWNsZS9hc20vZHVwX25lb25x X2Y2NC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2FjbGUvYXNtL2R1 cF9uZW9ucV9mNjQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZGQzZTUwN2VhMzNkNTFhMWYzZGQ2ZWE3OTk1MWFj YWI3NmMzN2VmCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2Fh cmNoNjQvc3ZlL2FjbGUvYXNtL2R1cF9uZW9ucV9mNjQuYwpAQCAtMCwwICsxLDMwIEBACisvKiB7 IGRnLWZpbmFsIHsgY2hlY2stZnVuY3Rpb24tYm9kaWVzICIqKiIgIiIgIi1EQ0hFQ0tfQVNNIiB9 IH0gKi8KKworI2luY2x1ZGUgInRlc3Rfc3ZlX2FjbGUuaCIKKworLyoKKyoqIGR1cF9uZW9ucV9m NjRfejA6CisqKglkdXAJejAucSwgejQucVxbMFxdCisqKglyZXQKKyovCitURVNUX0RVUF9ORU9O USAoZHVwX25lb25xX2Y2NF96MCwgZmxvYXQ2NHgyX3QsIHN2ZmxvYXQ2NF90LAorCSAgejAgPSBz dmR1cF9uZW9ucV9mNjQgKHo0KSwKKwkgIHowID0gc3ZkdXBfbmVvbnEgKHo0KSkKKworLyoKKyoq IGR1cF9uZW9ucV9mNjRfejQ6CisqKglkdXAJejQucSwgejQucVxbMFxdCisqKglyZXQKKyovCitU RVNUX0RVUF9ORU9OUSAoZHVwX25lb25xX2Y2NF96NCwgZmxvYXQ2NHgyX3QsIHN2ZmxvYXQ2NF90 LAorCSAgejRfcmVzID0gc3ZkdXBfbmVvbnFfZjY0ICh6NCksCisJICB6NF9yZXMgPSBzdmR1cF9u ZW9ucSAoejQpKQorCisvKgorKiogZHVwX25lb25xX2Y2NF96NToKKyoqCWR1cAl6NS5xLCB6NC5x XFswXF0KKyoqCXJldAorKi8KK1RFU1RfRFVQX05FT05RIChkdXBfbmVvbnFfZjY0X3o1LCBmbG9h dDY0eDJfdCwgc3ZmbG9hdDY0X3QsCisJICB6NV9yZXMgPSBzdmR1cF9uZW9ucV9mNjQgKHo0KSwK KwkgIHo1X3JlcyA9IHN2ZHVwX25lb25xICh6NCkpCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRl L2djYy50YXJnZXQvYWFyY2g2NC9zdmUvYWNsZS9hc20vZHVwX25lb25xX3MxNi5jIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2FjbGUvYXNtL2R1cF9uZW9ucV9zMTYuYwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwLi5lNzBlNDU0YTE2MDI5NWFmMTFhZDdiNjEwMjM1OTAzYTQxMDExZTIxCi0tLSAv ZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2FjbGUv YXNtL2R1cF9uZW9ucV9zMTYuYwpAQCAtMCwwICsxLDMwIEBACisvKiB7IGRnLWZpbmFsIHsgY2hl Y2stZnVuY3Rpb24tYm9kaWVzICIqKiIgIiIgIi1EQ0hFQ0tfQVNNIiB9IH0gKi8KKworI2luY2x1 ZGUgInRlc3Rfc3ZlX2FjbGUuaCIKKworLyoKKyoqIGR1cF9uZW9ucV9zMTZfejA6CisqKglkdXAJ ejAucSwgejQucVxbMFxdCisqKglyZXQKKyovCitURVNUX0RVUF9ORU9OUSAoZHVwX25lb25xX3Mx Nl96MCwgaW50MTZ4OF90LCBzdmludDE2X3QsCisJICB6MCA9IHN2ZHVwX25lb25xX3MxNiAoejQp LAorCSAgejAgPSBzdmR1cF9uZW9ucSAoejQpKQorCisvKgorKiogZHVwX25lb25xX3MxNl96NDoK KyoqCWR1cAl6NC5xLCB6NC5xXFswXF0KKyoqCXJldAorKi8KK1RFU1RfRFVQX05FT05RIChkdXBf bmVvbnFfczE2X3o0LCBpbnQxNng4X3QsIHN2aW50MTZfdCwKKwkgIHo0X3JlcyA9IHN2ZHVwX25l b25xX3MxNiAoejQpLAorCSAgejRfcmVzID0gc3ZkdXBfbmVvbnEgKHo0KSkKKworLyoKKyoqIGR1 cF9uZW9ucV9zMTZfejU6CisqKglkdXAJejUucSwgejQucVxbMFxdCisqKglyZXQKKyovCitURVNU X0RVUF9ORU9OUSAoZHVwX25lb25xX3MxNl96NSwgaW50MTZ4OF90LCBzdmludDE2X3QsCisJICB6 NV9yZXMgPSBzdmR1cF9uZW9ucV9zMTYgKHo0KSwKKwkgIHo1X3JlcyA9IHN2ZHVwX25lb25xICh6 NCkpCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvYWNs ZS9hc20vZHVwX25lb25xX3MzMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQv c3ZlL2FjbGUvYXNtL2R1cF9uZW9ucV9zMzIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZWY5MjI4ZDUyOThlODVj ZDhiNDEzOTNjMmVmMDNjYWRlMGZjZjllCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2FjbGUvYXNtL2R1cF9uZW9ucV9zMzIuYwpAQCAtMCww ICsxLDMwIEBACisvKiB7IGRnLWZpbmFsIHsgY2hlY2stZnVuY3Rpb24tYm9kaWVzICIqKiIgIiIg Ii1EQ0hFQ0tfQVNNIiB9IH0gKi8KKworI2luY2x1ZGUgInRlc3Rfc3ZlX2FjbGUuaCIKKworLyoK KyoqIGR1cF9uZW9ucV9zMzJfejA6CisqKglkdXAJejAucSwgejQucVxbMFxdCisqKglyZXQKKyov CitURVNUX0RVUF9ORU9OUSAoZHVwX25lb25xX3MzMl96MCwgaW50MzJ4NF90LCBzdmludDMyX3Qs CisJICB6MCA9IHN2ZHVwX25lb25xX3MzMiAoejQpLAorCSAgejAgPSBzdmR1cF9uZW9ucSAoejQp KQorCisvKgorKiogZHVwX25lb25xX3MzMl96NDoKKyoqCWR1cAl6NC5xLCB6NC5xXFswXF0KKyoq CXJldAorKi8KK1RFU1RfRFVQX05FT05RIChkdXBfbmVvbnFfczMyX3o0LCBpbnQzMng0X3QsIHN2 aW50MzJfdCwKKwkgIHo0X3JlcyA9IHN2ZHVwX25lb25xX3MzMiAoejQpLAorCSAgejRfcmVzID0g c3ZkdXBfbmVvbnEgKHo0KSkKKworLyoKKyoqIGR1cF9uZW9ucV9zMzJfejU6CisqKglkdXAJejUu cSwgejQucVxbMFxdCisqKglyZXQKKyovCitURVNUX0RVUF9ORU9OUSAoZHVwX25lb25xX3MzMl96 NSwgaW50MzJ4NF90LCBzdmludDMyX3QsCisJICB6NV9yZXMgPSBzdmR1cF9uZW9ucV9zMzIgKHo0 KSwKKwkgIHo1X3JlcyA9IHN2ZHVwX25lb25xICh6NCkpCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvYWNsZS9hc20vZHVwX25lb25xX3M2NC5jIGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2FjbGUvYXNtL2R1cF9uZW9ucV9zNjQu YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwLi5kM2VkMjIyMjBmYWUyODBiZDBhODI4ZThkM2FmZTFkZjAzY2M3MGJlCi0t LSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2Fj bGUvYXNtL2R1cF9uZW9ucV9zNjQuYwpAQCAtMCwwICsxLDMwIEBACisvKiB7IGRnLWZpbmFsIHsg Y2hlY2stZnVuY3Rpb24tYm9kaWVzICIqKiIgIiIgIi1EQ0hFQ0tfQVNNIiB9IH0gKi8KKworI2lu Y2x1ZGUgInRlc3Rfc3ZlX2FjbGUuaCIKKworLyoKKyoqIGR1cF9uZW9ucV9zNjRfejA6CisqKglk dXAJejAucSwgejQucVxbMFxdCisqKglyZXQKKyovCitURVNUX0RVUF9ORU9OUSAoZHVwX25lb25x X3M2NF96MCwgaW50NjR4Ml90LCBzdmludDY0X3QsCisJICB6MCA9IHN2ZHVwX25lb25xX3M2NCAo ejQpLAorCSAgejAgPSBzdmR1cF9uZW9ucSAoejQpKQorCisvKgorKiogZHVwX25lb25xX3M2NF96 NDoKKyoqCWR1cAl6NC5xLCB6NC5xXFswXF0KKyoqCXJldAorKi8KK1RFU1RfRFVQX05FT05RIChk dXBfbmVvbnFfczY0X3o0LCBpbnQ2NHgyX3QsIHN2aW50NjRfdCwKKwkgIHo0X3JlcyA9IHN2ZHVw X25lb25xX3M2NCAoejQpLAorCSAgejRfcmVzID0gc3ZkdXBfbmVvbnEgKHo0KSkKKworLyoKKyoq IGR1cF9uZW9ucV9zNjRfejU6CisqKglkdXAJejUucSwgejQucVxbMFxdCisqKglyZXQKKyovCitU RVNUX0RVUF9ORU9OUSAoZHVwX25lb25xX3M2NF96NSwgaW50NjR4Ml90LCBzdmludDY0X3QsCisJ ICB6NV9yZXMgPSBzdmR1cF9uZW9ucV9zNjQgKHo0KSwKKwkgIHo1X3JlcyA9IHN2ZHVwX25lb25x ICh6NCkpCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUv YWNsZS9hc20vZHVwX25lb25xX3M4LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2 NC9zdmUvYWNsZS9hc20vZHVwX25lb25xX3M4LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjQzN2Y4NThhNGNlMzIw MGRmYWZiNjQ3ZGU2ODZmYjgzZTQzYmFlMwotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9hY2xlL2FzbS9kdXBfbmVvbnFfczguYwpAQCAtMCww ICsxLDMwIEBACisvKiB7IGRnLWZpbmFsIHsgY2hlY2stZnVuY3Rpb24tYm9kaWVzICIqKiIgIiIg Ii1EQ0hFQ0tfQVNNIiB9IH0gKi8KKworI2luY2x1ZGUgInRlc3Rfc3ZlX2FjbGUuaCIKKworLyoK KyoqIGR1cF9uZW9ucV9zOF96MDoKKyoqCWR1cAl6MC5xLCB6NC5xXFswXF0KKyoqCXJldAorKi8K K1RFU1RfRFVQX05FT05RIChkdXBfbmVvbnFfczhfejAsIGludDh4MTZfdCwgc3ZpbnQ4X3QsCisJ ICB6MCA9IHN2ZHVwX25lb25xX3M4ICh6NCksCisJICB6MCA9IHN2ZHVwX25lb25xICh6NCkpCisK Ky8qCisqKiBkdXBfbmVvbnFfczhfejQ6CisqKglkdXAJejQucSwgejQucVxbMFxdCisqKglyZXQK KyovCitURVNUX0RVUF9ORU9OUSAoZHVwX25lb25xX3M4X3o0LCBpbnQ4eDE2X3QsIHN2aW50OF90 LAorCSAgejRfcmVzID0gc3ZkdXBfbmVvbnFfczggKHo0KSwKKwkgIHo0X3JlcyA9IHN2ZHVwX25l b25xICh6NCkpCisKKy8qCisqKiBkdXBfbmVvbnFfczhfejU6CisqKglkdXAJejUucSwgejQucVxb MFxdCisqKglyZXQKKyovCitURVNUX0RVUF9ORU9OUSAoZHVwX25lb25xX3M4X3o1LCBpbnQ4eDE2 X3QsIHN2aW50OF90LAorCSAgejVfcmVzID0gc3ZkdXBfbmVvbnFfczggKHo0KSwKKwkgIHo1X3Jl cyA9IHN2ZHVwX25lb25xICh6NCkpCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvYWFyY2g2NC9zdmUvYWNsZS9hc20vZHVwX25lb25xX3UxNi5jIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2FjbGUvYXNtL2R1cF9uZW9ucV91MTYuYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw Li41ZTdiMjIzMGMxOWNlMGU3NjNlMWFmNjNiYWYyODc0M2MzNGZiNzZhCi0tLSAvZGV2L251bGwK KysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2FjbGUvYXNtL2R1cF9u ZW9ucV91MTYuYwpAQCAtMCwwICsxLDMwIEBACisvKiB7IGRnLWZpbmFsIHsgY2hlY2stZnVuY3Rp b24tYm9kaWVzICIqKiIgIiIgIi1EQ0hFQ0tfQVNNIiB9IH0gKi8KKworI2luY2x1ZGUgInRlc3Rf c3ZlX2FjbGUuaCIKKworLyoKKyoqIGR1cF9uZW9ucV91MTZfejA6CisqKglkdXAJejAucSwgejQu cVxbMFxdCisqKglyZXQKKyovCitURVNUX0RVUF9ORU9OUSAoZHVwX25lb25xX3UxNl96MCwgdWlu dDE2eDhfdCwgc3Z1aW50MTZfdCwKKwkgIHowID0gc3ZkdXBfbmVvbnFfdTE2ICh6NCksCisJICB6 MCA9IHN2ZHVwX25lb25xICh6NCkpCisKKy8qCisqKiBkdXBfbmVvbnFfdTE2X3o0OgorKioJZHVw CXo0LnEsIHo0LnFcWzBcXQorKioJcmV0CisqLworVEVTVF9EVVBfTkVPTlEgKGR1cF9uZW9ucV91 MTZfejQsIHVpbnQxNng4X3QsIHN2dWludDE2X3QsCisJICB6NF9yZXMgPSBzdmR1cF9uZW9ucV91 MTYgKHo0KSwKKwkgIHo0X3JlcyA9IHN2ZHVwX25lb25xICh6NCkpCisKKy8qCisqKiBkdXBfbmVv bnFfdTE2X3o1OgorKioJZHVwCXo1LnEsIHo0LnFcWzBcXQorKioJcmV0CisqLworVEVTVF9EVVBf TkVPTlEgKGR1cF9uZW9ucV91MTZfejUsIHVpbnQxNng4X3QsIHN2dWludDE2X3QsCisJICB6NV9y ZXMgPSBzdmR1cF9uZW9ucV91MTYgKHo0KSwKKwkgIHo1X3JlcyA9IHN2ZHVwX25lb25xICh6NCkp CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvYWNsZS9h c20vZHVwX25lb25xX3UzMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc3Zl L2FjbGUvYXNtL2R1cF9uZW9ucV91MzIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZTM0ZDRmMjEzZjdjYWIxOTcy OTQ2M2M0ZTM0OThkNDlmYjhjNDdhCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2FjbGUvYXNtL2R1cF9uZW9ucV91MzIuYwpAQCAtMCwwICsx LDMwIEBACisvKiB7IGRnLWZpbmFsIHsgY2hlY2stZnVuY3Rpb24tYm9kaWVzICIqKiIgIiIgIi1E Q0hFQ0tfQVNNIiB9IH0gKi8KKworI2luY2x1ZGUgInRlc3Rfc3ZlX2FjbGUuaCIKKworLyoKKyoq IGR1cF9uZW9ucV91MzJfejA6CisqKglkdXAJejAucSwgejQucVxbMFxdCisqKglyZXQKKyovCitU RVNUX0RVUF9ORU9OUSAoZHVwX25lb25xX3UzMl96MCwgdWludDMyeDRfdCwgc3Z1aW50MzJfdCwK KwkgIHowID0gc3ZkdXBfbmVvbnFfdTMyICh6NCksCisJICB6MCA9IHN2ZHVwX25lb25xICh6NCkp CisKKy8qCisqKiBkdXBfbmVvbnFfdTMyX3o0OgorKioJZHVwCXo0LnEsIHo0LnFcWzBcXQorKioJ cmV0CisqLworVEVTVF9EVVBfTkVPTlEgKGR1cF9uZW9ucV91MzJfejQsIHVpbnQzMng0X3QsIHN2 dWludDMyX3QsCisJICB6NF9yZXMgPSBzdmR1cF9uZW9ucV91MzIgKHo0KSwKKwkgIHo0X3JlcyA9 IHN2ZHVwX25lb25xICh6NCkpCisKKy8qCisqKiBkdXBfbmVvbnFfdTMyX3o1OgorKioJZHVwCXo1 LnEsIHo0LnFcWzBcXQorKioJcmV0CisqLworVEVTVF9EVVBfTkVPTlEgKGR1cF9uZW9ucV91MzJf ejUsIHVpbnQzMng0X3QsIHN2dWludDMyX3QsCisJICB6NV9yZXMgPSBzdmR1cF9uZW9ucV91MzIg KHo0KSwKKwkgIHo1X3JlcyA9IHN2ZHVwX25lb25xICh6NCkpCmRpZmYgLS1naXQgYS9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvYWNsZS9hc20vZHVwX25lb25xX3U2NC5jIGIv Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2FjbGUvYXNtL2R1cF9uZW9ucV91 NjQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwLi4xMDA4NzQwODkwYjY3NTk1MjUwNzgyNDBjOTY0NzYxMmJhZTkxYTc0 Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc3Zl L2FjbGUvYXNtL2R1cF9uZW9ucV91NjQuYwpAQCAtMCwwICsxLDMwIEBACisvKiB7IGRnLWZpbmFs IHsgY2hlY2stZnVuY3Rpb24tYm9kaWVzICIqKiIgIiIgIi1EQ0hFQ0tfQVNNIiB9IH0gKi8KKwor I2luY2x1ZGUgInRlc3Rfc3ZlX2FjbGUuaCIKKworLyoKKyoqIGR1cF9uZW9ucV91NjRfejA6Cisq KglkdXAJejAucSwgejQucVxbMFxdCisqKglyZXQKKyovCitURVNUX0RVUF9ORU9OUSAoZHVwX25l b25xX3U2NF96MCwgdWludDY0eDJfdCwgc3Z1aW50NjRfdCwKKwkgIHowID0gc3ZkdXBfbmVvbnFf dTY0ICh6NCksCisJICB6MCA9IHN2ZHVwX25lb25xICh6NCkpCisKKy8qCisqKiBkdXBfbmVvbnFf dTY0X3o0OgorKioJZHVwCXo0LnEsIHo0LnFcWzBcXQorKioJcmV0CisqLworVEVTVF9EVVBfTkVP TlEgKGR1cF9uZW9ucV91NjRfejQsIHVpbnQ2NHgyX3QsIHN2dWludDY0X3QsCisJICB6NF9yZXMg PSBzdmR1cF9uZW9ucV91NjQgKHo0KSwKKwkgIHo0X3JlcyA9IHN2ZHVwX25lb25xICh6NCkpCisK Ky8qCisqKiBkdXBfbmVvbnFfdTY0X3o1OgorKioJZHVwCXo1LnEsIHo0LnFcWzBcXQorKioJcmV0 CisqLworVEVTVF9EVVBfTkVPTlEgKGR1cF9uZW9ucV91NjRfejUsIHVpbnQ2NHgyX3QsIHN2dWlu dDY0X3QsCisJICB6NV9yZXMgPSBzdmR1cF9uZW9ucV91NjQgKHo0KSwKKwkgIHo1X3JlcyA9IHN2 ZHVwX25lb25xICh6NCkpCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFy Y2g2NC9zdmUvYWNsZS9hc20vZHVwX25lb25xX3U4LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvYWFyY2g2NC9zdmUvYWNsZS9hc20vZHVwX25lb25xX3U4LmMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzI3ZmY4 ZjM0YTc1ZjQyNjkyM2U3N2RjMDVhYzllZmYzZjBmYTI0OAotLS0gL2Rldi9udWxsCisrKyBiL2dj Yy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9hY2xlL2FzbS9kdXBfbmVvbnFfdTgu YwpAQCAtMCwwICsxLDMwIEBACisvKiB7IGRnLWZpbmFsIHsgY2hlY2stZnVuY3Rpb24tYm9kaWVz ICIqKiIgIiIgIi1EQ0hFQ0tfQVNNIiB9IH0gKi8KKworI2luY2x1ZGUgInRlc3Rfc3ZlX2FjbGUu aCIKKworLyoKKyoqIGR1cF9uZW9ucV91OF96MDoKKyoqCWR1cAl6MC5xLCB6NC5xXFswXF0KKyoq CXJldAorKi8KK1RFU1RfRFVQX05FT05RIChkdXBfbmVvbnFfdThfejAsIHVpbnQ4eDE2X3QsIHN2 dWludDhfdCwKKwkgIHowID0gc3ZkdXBfbmVvbnFfdTggKHo0KSwKKwkgIHowID0gc3ZkdXBfbmVv bnEgKHo0KSkKKworLyoKKyoqIGR1cF9uZW9ucV91OF96NDoKKyoqCWR1cAl6NC5xLCB6NC5xXFsw XF0KKyoqCXJldAorKi8KK1RFU1RfRFVQX05FT05RIChkdXBfbmVvbnFfdThfejQsIHVpbnQ4eDE2 X3QsIHN2dWludDhfdCwKKwkgIHo0X3JlcyA9IHN2ZHVwX25lb25xX3U4ICh6NCksCisJICB6NF9y ZXMgPSBzdmR1cF9uZW9ucSAoejQpKQorCisvKgorKiogZHVwX25lb25xX3U4X3o1OgorKioJZHVw CXo1LnEsIHo0LnFcWzBcXQorKioJcmV0CisqLworVEVTVF9EVVBfTkVPTlEgKGR1cF9uZW9ucV91 OF96NSwgdWludDh4MTZfdCwgc3Z1aW50OF90LAorCSAgejVfcmVzID0gc3ZkdXBfbmVvbnFfdTgg KHo0KSwKKwkgIHo1X3JlcyA9IHN2ZHVwX25lb25xICh6NCkpCmRpZmYgLS1naXQgYS9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvYWNsZS9hc20vZ2V0X25lb25xX2JmMTYuYyBi L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9hY2xlL2FzbS9nZXRfbmVvbnFf YmYxNi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAuLjQ3ZDVjOGRmODBkMThiNWZiZGRkMTdlZDEwMTc1YjMyMDA2OGJk OWIKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9z dmUvYWNsZS9hc20vZ2V0X25lb25xX2JmMTYuYwpAQCAtMCwwICsxLDMzIEBACisvKiB7IGRnLWZp bmFsIHsgY2hlY2stZnVuY3Rpb24tYm9kaWVzICIqKiIgIiIgIi1EQ0hFQ0tfQVNNIiB9IH0gKi8K KworI2luY2x1ZGUgInRlc3Rfc3ZlX2FjbGUuaCIKKworLyoKKyoqIGdldF9uZW9ucV9iZjE2X3ow OgorKioJbW92CXYwLjE2YiwgdjQuMTZiCisqKglyZXQKKyovCitURVNUX0dFVCAoZ2V0X25lb25x X2JmMTZfejAsIHN2YmZsb2F0MTZfdCwgYmZsb2F0MTZ4OF90LAorCSAgejAgPSBzdmdldF9uZW9u cV9iZjE2ICh6NCksCisJICB6MCA9IHN2Z2V0X25lb25xICh6NCkpCisKKy8qCisqKiBnZXRfbmVv bnFfYmYxNl96NDoKKyoqCXJldAorKi8KK1RFU1RfR0VUIChnZXRfbmVvbnFfYmYxNl96NCwgc3Zi ZmxvYXQxNl90LCBiZmxvYXQxNng4X3QsCisJICB6NF9yZXMgPSBzdmdldF9uZW9ucV9iZjE2ICh6 NCksCisJICB6NF9yZXMgPSBzdmdldF9uZW9ucSAoejQpKQorCisvKgorKiogZ2V0X25lb25xX2Jm MTZfejU6CisqKgkoCisqKgltb3YJejUuZCwgejQuZAorKioJfAorKioJbW92CXY1LjE2YiwgdjQu MTZiCisqKgkpCisqKglyZXQKKyovCitURVNUX0dFVCAoZ2V0X25lb25xX2JmMTZfejUsIHN2YmZs b2F0MTZfdCwgYmZsb2F0MTZ4OF90LAorCSAgejVfcmVzID0gc3ZnZXRfbmVvbnFfYmYxNiAoejQp LAorCSAgejVfcmVzID0gc3ZnZXRfbmVvbnEgKHo0KSkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm aWxlCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvYWNs ZS9hc20vZ2V0X25lb25xX2YxNi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQv c3ZlL2FjbGUvYXNtL2dldF9uZW9ucV9mMTYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OWY0NzRhMGE0YTQzMDhj ODM3MjNlM2U3MDI4ZWExYjQ0Mjg1M2ZkCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2FjbGUvYXNtL2dldF9uZW9ucV9mMTYuYwpAQCAtMCww ICsxLDMzIEBACisvKiB7IGRnLWZpbmFsIHsgY2hlY2stZnVuY3Rpb24tYm9kaWVzICIqKiIgIiIg Ii1EQ0hFQ0tfQVNNIiB9IH0gKi8KKworI2luY2x1ZGUgInRlc3Rfc3ZlX2FjbGUuaCIKKworLyoK KyoqIGdldF9uZW9ucV9mMTZfejA6CisqKgltb3YJdjAuMTZiLCB2NC4xNmIKKyoqCXJldAorKi8K K1RFU1RfR0VUIChnZXRfbmVvbnFfZjE2X3owLCBzdmZsb2F0MTZfdCwgZmxvYXQxNng4X3QsCisJ ICB6MCA9IHN2Z2V0X25lb25xX2YxNiAoejQpLAorCSAgejAgPSBzdmdldF9uZW9ucSAoejQpKQor CisvKgorKiogZ2V0X25lb25xX2YxNl96NDoKKyoqCXJldAorKi8KK1RFU1RfR0VUIChnZXRfbmVv bnFfZjE2X3o0LCBzdmZsb2F0MTZfdCwgZmxvYXQxNng4X3QsCisJICB6NF9yZXMgPSBzdmdldF9u ZW9ucV9mMTYgKHo0KSwKKwkgIHo0X3JlcyA9IHN2Z2V0X25lb25xICh6NCkpCisKKy8qCisqKiBn ZXRfbmVvbnFfZjE2X3o1OgorKioJKAorKioJbW92CXo1LmQsIHo0LmQKKyoqCXwKKyoqCW1vdgl2 NS4xNmIsIHY0LjE2YgorKioJKQorKioJcmV0CisqLworVEVTVF9HRVQgKGdldF9uZW9ucV9mMTZf ejUsIHN2ZmxvYXQxNl90LCBmbG9hdDE2eDhfdCwKKwkgIHo1X3JlcyA9IHN2Z2V0X25lb25xX2Yx NiAoejQpLAorCSAgejVfcmVzID0gc3ZnZXRfbmVvbnEgKHo0KSkKXCBObyBuZXdsaW5lIGF0IGVu ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9z dmUvYWNsZS9hc20vZ2V0X25lb25xX2YzMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2Fh cmNoNjQvc3ZlL2FjbGUvYXNtL2dldF9uZW9ucV9mMzIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NTEyNmZlNzEy MTUyZTgyMjA5NzhiNDJjZjBmOTM3YTJjODM4MDcxCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2FjbGUvYXNtL2dldF9uZW9ucV9mMzIuYwpA QCAtMCwwICsxLDMzIEBACisvKiB7IGRnLWZpbmFsIHsgY2hlY2stZnVuY3Rpb24tYm9kaWVzICIq KiIgIiIgIi1EQ0hFQ0tfQVNNIiB9IH0gKi8KKworI2luY2x1ZGUgInRlc3Rfc3ZlX2FjbGUuaCIK KworLyoKKyoqIGdldF9uZW9ucV9mMzJfejA6CisqKgltb3YJdjAuMTZiLCB2NC4xNmIKKyoqCXJl dAorKi8KK1RFU1RfR0VUIChnZXRfbmVvbnFfZjMyX3owLCBzdmZsb2F0MzJfdCwgZmxvYXQzMng0 X3QsCisJICB6MCA9IHN2Z2V0X25lb25xX2YzMiAoejQpLAorCSAgejAgPSBzdmdldF9uZW9ucSAo ejQpKQorCisvKgorKiogZ2V0X25lb25xX2YzMl96NDoKKyoqCXJldAorKi8KK1RFU1RfR0VUIChn ZXRfbmVvbnFfZjMyX3o0LCBzdmZsb2F0MzJfdCwgZmxvYXQzMng0X3QsCisJICB6NF9yZXMgPSBz dmdldF9uZW9ucV9mMzIgKHo0KSwKKwkgIHo0X3JlcyA9IHN2Z2V0X25lb25xICh6NCkpCisKKy8q CisqKiBnZXRfbmVvbnFfZjMyX3o1OgorKioJKAorKioJbW92CXo1LmQsIHo0LmQKKyoqCXwKKyoq CW1vdgl2NS4xNmIsIHY0LjE2YgorKioJKQorKioJcmV0CisqLworVEVTVF9HRVQgKGdldF9uZW9u cV9mMzJfejUsIHN2ZmxvYXQzMl90LCBmbG9hdDMyeDRfdCwKKwkgIHo1X3JlcyA9IHN2Z2V0X25l b25xX2YzMiAoejQpLAorCSAgejVfcmVzID0gc3ZnZXRfbmVvbnEgKHo0KSkKXCBObyBuZXdsaW5l IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFy Y2g2NC9zdmUvYWNsZS9hc20vZ2V0X25lb25xX2Y2NC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L2FhcmNoNjQvc3ZlL2FjbGUvYXNtL2dldF9uZW9ucV9mNjQuYwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YjU2 MjFjMTE1MmJiM2UwZDJiYjRmY2RkODI0OWQxYjAzY2RiMmIzCi0tLSAvZGV2L251bGwKKysrIGIv Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2FjbGUvYXNtL2dldF9uZW9ucV9m NjQuYwpAQCAtMCwwICsxLDMzIEBACisvKiB7IGRnLWZpbmFsIHsgY2hlY2stZnVuY3Rpb24tYm9k aWVzICIqKiIgIiIgIi1EQ0hFQ0tfQVNNIiB9IH0gKi8KKworI2luY2x1ZGUgInRlc3Rfc3ZlX2Fj bGUuaCIKKworLyoKKyoqIGdldF9uZW9ucV9mNjRfejA6CisqKgltb3YJdjAuMTZiLCB2NC4xNmIK KyoqCXJldAorKi8KK1RFU1RfR0VUIChnZXRfbmVvbnFfZjY0X3owLCBzdmZsb2F0NjRfdCwgZmxv YXQ2NHgyX3QsCisJICB6MCA9IHN2Z2V0X25lb25xX2Y2NCAoejQpLAorCSAgejAgPSBzdmdldF9u ZW9ucSAoejQpKQorCisvKgorKiogZ2V0X25lb25xX2Y2NF96NDoKKyoqCXJldAorKi8KK1RFU1Rf R0VUIChnZXRfbmVvbnFfZjY0X3o0LCBzdmZsb2F0NjRfdCwgZmxvYXQ2NHgyX3QsCisJICB6NF9y ZXMgPSBzdmdldF9uZW9ucV9mNjQgKHo0KSwKKwkgIHo0X3JlcyA9IHN2Z2V0X25lb25xICh6NCkp CisKKy8qCisqKiBnZXRfbmVvbnFfZjY0X3o1OgorKioJKAorKioJbW92CXo1LmQsIHo0LmQKKyoq CXwKKyoqCW1vdgl2NS4xNmIsIHY0LjE2YgorKioJKQorKioJcmV0CisqLworVEVTVF9HRVQgKGdl dF9uZW9ucV9mNjRfejUsIHN2ZmxvYXQ2NF90LCBmbG9hdDY0eDJfdCwKKwkgIHo1X3JlcyA9IHN2 Z2V0X25lb25xX2Y2NCAoejQpLAorCSAgejVfcmVzID0gc3ZnZXRfbmVvbnEgKHo0KSkKXCBObyBu ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvYWFyY2g2NC9zdmUvYWNsZS9hc20vZ2V0X25lb25xX3MxNi5jIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2FjbGUvYXNtL2dldF9uZW9ucV9zMTYuYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw Li43ZTg0ODIwM2FmM2U0NGY1MDA3MTFlOTk1ZmVmMDBjNDJmMzFmYjM1Ci0tLSAvZGV2L251bGwK KysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2FjbGUvYXNtL2dldF9u ZW9ucV9zMTYuYwpAQCAtMCwwICsxLDMzIEBACisvKiB7IGRnLWZpbmFsIHsgY2hlY2stZnVuY3Rp b24tYm9kaWVzICIqKiIgIiIgIi1EQ0hFQ0tfQVNNIiB9IH0gKi8KKworI2luY2x1ZGUgInRlc3Rf c3ZlX2FjbGUuaCIKKworLyoKKyoqIGdldF9uZW9ucV9zMTZfejA6CisqKgltb3YJdjAuMTZiLCB2 NC4xNmIKKyoqCXJldAorKi8KK1RFU1RfR0VUIChnZXRfbmVvbnFfczE2X3owLCBzdmludDE2X3Qs IGludDE2eDhfdCwKKwkgIHowID0gc3ZnZXRfbmVvbnFfczE2ICh6NCksCisJICB6MCA9IHN2Z2V0 X25lb25xICh6NCkpCisKKy8qCisqKiBnZXRfbmVvbnFfczE2X3o0OgorKioJcmV0CisqLworVEVT VF9HRVQgKGdldF9uZW9ucV9zMTZfejQsIHN2aW50MTZfdCwgaW50MTZ4OF90LAorCSAgejRfcmVz ID0gc3ZnZXRfbmVvbnFfczE2ICh6NCksCisJICB6NF9yZXMgPSBzdmdldF9uZW9ucSAoejQpKQor CisvKgorKiogZ2V0X25lb25xX3MxNl96NToKKyoqCSgKKyoqCW1vdgl6NS5kLCB6NC5kCisqKgl8 CisqKgltb3YJdjUuMTZiLCB2NC4xNmIKKyoqCSkKKyoqCXJldAorKi8KK1RFU1RfR0VUIChnZXRf bmVvbnFfczE2X3o1LCBzdmludDE2X3QsIGludDE2eDhfdCwKKwkgIHo1X3JlcyA9IHN2Z2V0X25l b25xX3MxNiAoejQpLAorCSAgejVfcmVzID0gc3ZnZXRfbmVvbnEgKHo0KSkKXCBObyBuZXdsaW5l IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFy Y2g2NC9zdmUvYWNsZS9hc20vZ2V0X25lb25xX3MzMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L2FhcmNoNjQvc3ZlL2FjbGUvYXNtL2dldF9uZW9ucV9zMzIuYwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMWU3 YWIzNmRkNTQ1NGVlZmU3OWUwN2E5MzQ2Y2UwZDMwM2M4OTIzCi0tLSAvZGV2L251bGwKKysrIGIv Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2FjbGUvYXNtL2dldF9uZW9ucV9z MzIuYwpAQCAtMCwwICsxLDMzIEBACisvKiB7IGRnLWZpbmFsIHsgY2hlY2stZnVuY3Rpb24tYm9k aWVzICIqKiIgIiIgIi1EQ0hFQ0tfQVNNIiB9IH0gKi8KKworI2luY2x1ZGUgInRlc3Rfc3ZlX2Fj bGUuaCIKKworLyoKKyoqIGdldF9uZW9ucV9zMzJfejA6CisqKgltb3YJdjAuMTZiLCB2NC4xNmIK KyoqCXJldAorKi8KK1RFU1RfR0VUIChnZXRfbmVvbnFfczMyX3owLCBzdmludDMyX3QsIGludDMy eDRfdCwKKwkgIHowID0gc3ZnZXRfbmVvbnFfczMyICh6NCksCisJICB6MCA9IHN2Z2V0X25lb25x ICh6NCkpCisKKy8qCisqKiBnZXRfbmVvbnFfczMyX3o0OgorKioJcmV0CisqLworVEVTVF9HRVQg KGdldF9uZW9ucV9zMzJfejQsIHN2aW50MzJfdCwgaW50MzJ4NF90LAorCSAgejRfcmVzID0gc3Zn ZXRfbmVvbnFfczMyICh6NCksCisJICB6NF9yZXMgPSBzdmdldF9uZW9ucSAoejQpKQorCisvKgor KiogZ2V0X25lb25xX3MzMl96NToKKyoqCSgKKyoqCW1vdgl6NS5kLCB6NC5kCisqKgl8CisqKglt b3YJdjUuMTZiLCB2NC4xNmIKKyoqCSkKKyoqCXJldAorKi8KK1RFU1RfR0VUIChnZXRfbmVvbnFf czMyX3o1LCBzdmludDMyX3QsIGludDMyeDRfdCwKKwkgIHo1X3JlcyA9IHN2Z2V0X25lb25xX3Mz MiAoejQpLAorCSAgejVfcmVzID0gc3ZnZXRfbmVvbnEgKHo0KSkKXCBObyBuZXdsaW5lIGF0IGVu ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9z dmUvYWNsZS9hc20vZ2V0X25lb25xX3M2NC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2Fh cmNoNjQvc3ZlL2FjbGUvYXNtL2dldF9uZW9ucV9zNjQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZGZkN2FmZTNk OWY1MjM1N2NlNTg3N2EyOWYxMDMyOWRmOWQxNDBlCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2FjbGUvYXNtL2dldF9uZW9ucV9zNjQuYwpA QCAtMCwwICsxLDMzIEBACisvKiB7IGRnLWZpbmFsIHsgY2hlY2stZnVuY3Rpb24tYm9kaWVzICIq KiIgIiIgIi1EQ0hFQ0tfQVNNIiB9IH0gKi8KKworI2luY2x1ZGUgInRlc3Rfc3ZlX2FjbGUuaCIK KworLyoKKyoqIGdldF9uZW9ucV9zNjRfejA6CisqKgltb3YJdjAuMTZiLCB2NC4xNmIKKyoqCXJl dAorKi8KK1RFU1RfR0VUIChnZXRfbmVvbnFfczY0X3owLCBzdmludDY0X3QsIGludDY0eDJfdCwK KwkgIHowID0gc3ZnZXRfbmVvbnFfczY0ICh6NCksCisJICB6MCA9IHN2Z2V0X25lb25xICh6NCkp CisKKy8qCisqKiBnZXRfbmVvbnFfczY0X3o0OgorKioJcmV0CisqLworVEVTVF9HRVQgKGdldF9u ZW9ucV9zNjRfejQsIHN2aW50NjRfdCwgaW50NjR4Ml90LAorCSAgejRfcmVzID0gc3ZnZXRfbmVv bnFfczY0ICh6NCksCisJICB6NF9yZXMgPSBzdmdldF9uZW9ucSAoejQpKQorCisvKgorKiogZ2V0 X25lb25xX3M2NF96NToKKyoqCSgKKyoqCW1vdgl6NS5kLCB6NC5kCisqKgl8CisqKgltb3YJdjUu MTZiLCB2NC4xNmIKKyoqCSkKKyoqCXJldAorKi8KK1RFU1RfR0VUIChnZXRfbmVvbnFfczY0X3o1 LCBzdmludDY0X3QsIGludDY0eDJfdCwKKwkgIHo1X3JlcyA9IHN2Z2V0X25lb25xX3M2NCAoejQp LAorCSAgejVfcmVzID0gc3ZnZXRfbmVvbnEgKHo0KSkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm aWxlCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvYWNs ZS9hc20vZ2V0X25lb25xX3M4LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9z dmUvYWNsZS9hc20vZ2V0X25lb25xX3M4LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGMyYzM4OWE3ZGQ3YTE2ZjY3 YzMzM2I0MDdiM2UwY2M0NWI0ZTljNwotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9hY2xlL2FzbS9nZXRfbmVvbnFfczguYwpAQCAtMCwwICsx LDMzIEBACisvKiB7IGRnLWZpbmFsIHsgY2hlY2stZnVuY3Rpb24tYm9kaWVzICIqKiIgIiIgIi1E Q0hFQ0tfQVNNIiB9IH0gKi8KKworI2luY2x1ZGUgInRlc3Rfc3ZlX2FjbGUuaCIKKworLyoKKyoq IGdldF9uZW9ucV9zOF96MDoKKyoqCW1vdgl2MC4xNmIsIHY0LjE2YgorKioJcmV0CisqLworVEVT VF9HRVQgKGdldF9uZW9ucV9zOF96MCwgc3ZpbnQ4X3QsIGludDh4MTZfdCwKKwkgIHowID0gc3Zn ZXRfbmVvbnFfczggKHo0KSwKKwkgIHowID0gc3ZnZXRfbmVvbnEgKHo0KSkKKworLyoKKyoqIGdl dF9uZW9ucV9zOF96NDoKKyoqCXJldAorKi8KK1RFU1RfR0VUIChnZXRfbmVvbnFfczhfejQsIHN2 aW50OF90LCBpbnQ4eDE2X3QsCisJICB6NF9yZXMgPSBzdmdldF9uZW9ucV9zOCAoejQpLAorCSAg ejRfcmVzID0gc3ZnZXRfbmVvbnEgKHo0KSkKKworLyoKKyoqIGdldF9uZW9ucV9zOF96NToKKyoq CSgKKyoqCW1vdgl6NS5kLCB6NC5kCisqKgl8CisqKgltb3YJdjUuMTZiLCB2NC4xNmIKKyoqCSkK KyoqCXJldAorKi8KK1RFU1RfR0VUIChnZXRfbmVvbnFfczhfejUsIHN2aW50OF90LCBpbnQ4eDE2 X3QsCisJICB6NV9yZXMgPSBzdmdldF9uZW9ucV9zOCAoejQpLAorCSAgejVfcmVzID0gc3ZnZXRf bmVvbnEgKHo0KSkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9nY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvYWNsZS9hc20vZ2V0X25lb25xX3UxNi5j IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2FjbGUvYXNtL2dldF9uZW9u cV91MTYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwLi4xNjhlZjM2YmY1MzFhYjBiNTIwNzhhMzZmNDFjOTE0NjgxZjRk NzQxCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQv c3ZlL2FjbGUvYXNtL2dldF9uZW9ucV91MTYuYwpAQCAtMCwwICsxLDMzIEBACisvKiB7IGRnLWZp bmFsIHsgY2hlY2stZnVuY3Rpb24tYm9kaWVzICIqKiIgIiIgIi1EQ0hFQ0tfQVNNIiB9IH0gKi8K KworI2luY2x1ZGUgInRlc3Rfc3ZlX2FjbGUuaCIKKworLyoKKyoqIGdldF9uZW9ucV91MTZfejA6 CisqKgltb3YJdjAuMTZiLCB2NC4xNmIKKyoqCXJldAorKi8KK1RFU1RfR0VUIChnZXRfbmVvbnFf dTE2X3owLCBzdnVpbnQxNl90LCB1aW50MTZ4OF90LAorCSAgejAgPSBzdmdldF9uZW9ucV91MTYg KHo0KSwKKwkgIHowID0gc3ZnZXRfbmVvbnEgKHo0KSkKKworLyoKKyoqIGdldF9uZW9ucV91MTZf ejQ6CisqKglyZXQKKyovCitURVNUX0dFVCAoZ2V0X25lb25xX3UxNl96NCwgc3Z1aW50MTZfdCwg dWludDE2eDhfdCwKKwkgIHo0X3JlcyA9IHN2Z2V0X25lb25xX3UxNiAoejQpLAorCSAgejRfcmVz ID0gc3ZnZXRfbmVvbnEgKHo0KSkKKworLyoKKyoqIGdldF9uZW9ucV91MTZfejU6CisqKgkoCisq Kgltb3YJejUuZCwgejQuZAorKioJfAorKioJbW92CXY1LjE2YiwgdjQuMTZiCisqKgkpCisqKgly ZXQKKyovCitURVNUX0dFVCAoZ2V0X25lb25xX3UxNl96NSwgc3Z1aW50MTZfdCwgdWludDE2eDhf dCwKKwkgIHo1X3JlcyA9IHN2Z2V0X25lb25xX3UxNiAoejQpLAorCSAgejVfcmVzID0gc3ZnZXRf bmVvbnEgKHo0KSkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9nY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvYWNsZS9hc20vZ2V0X25lb25xX3UzMi5j IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2FjbGUvYXNtL2dldF9uZW9u cV91MzIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwLi5hY2FiYzAzYWUzZGRhY2YzMTk3NmZmZjE5NDEwYjdhNTZjMzll ZDUwCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQv c3ZlL2FjbGUvYXNtL2dldF9uZW9ucV91MzIuYwpAQCAtMCwwICsxLDMzIEBACisvKiB7IGRnLWZp bmFsIHsgY2hlY2stZnVuY3Rpb24tYm9kaWVzICIqKiIgIiIgIi1EQ0hFQ0tfQVNNIiB9IH0gKi8K KworI2luY2x1ZGUgInRlc3Rfc3ZlX2FjbGUuaCIKKworLyoKKyoqIGdldF9uZW9ucV91MzJfejA6 CisqKgltb3YJdjAuMTZiLCB2NC4xNmIKKyoqCXJldAorKi8KK1RFU1RfR0VUIChnZXRfbmVvbnFf dTMyX3owLCBzdnVpbnQzMl90LCB1aW50MzJ4NF90LAorCSAgejAgPSBzdmdldF9uZW9ucV91MzIg KHo0KSwKKwkgIHowID0gc3ZnZXRfbmVvbnEgKHo0KSkKKworLyoKKyoqIGdldF9uZW9ucV91MzJf ejQ6CisqKglyZXQKKyovCitURVNUX0dFVCAoZ2V0X25lb25xX3UzMl96NCwgc3Z1aW50MzJfdCwg dWludDMyeDRfdCwKKwkgIHo0X3JlcyA9IHN2Z2V0X25lb25xX3UzMiAoejQpLAorCSAgejRfcmVz ID0gc3ZnZXRfbmVvbnEgKHo0KSkKKworLyoKKyoqIGdldF9uZW9ucV91MzJfejU6CisqKgkoCisq Kgltb3YJejUuZCwgejQuZAorKioJfAorKioJbW92CXY1LjE2YiwgdjQuMTZiCisqKgkpCisqKgly ZXQKKyovCitURVNUX0dFVCAoZ2V0X25lb25xX3UzMl96NSwgc3Z1aW50MzJfdCwgdWludDMyeDRf dCwKKwkgIHo1X3JlcyA9IHN2Z2V0X25lb25xX3UzMiAoejQpLAorCSAgejVfcmVzID0gc3ZnZXRf bmVvbnEgKHo0KSkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9nY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvYWNsZS9hc20vZ2V0X25lb25xX3U2NC5j IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2FjbGUvYXNtL2dldF9uZW9u cV91NjQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwLi40MmI0NWFiZWRjMTgzNjIwMDA1NWNmNGU1ZGFjODJjNjNjMTc5 NzQ4Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQv c3ZlL2FjbGUvYXNtL2dldF9uZW9ucV91NjQuYwpAQCAtMCwwICsxLDMzIEBACisvKiB7IGRnLWZp bmFsIHsgY2hlY2stZnVuY3Rpb24tYm9kaWVzICIqKiIgIiIgIi1EQ0hFQ0tfQVNNIiB9IH0gKi8K KworI2luY2x1ZGUgInRlc3Rfc3ZlX2FjbGUuaCIKKworLyoKKyoqIGdldF9uZW9ucV91NjRfejA6 CisqKgltb3YJdjAuMTZiLCB2NC4xNmIKKyoqCXJldAorKi8KK1RFU1RfR0VUIChnZXRfbmVvbnFf dTY0X3owLCBzdnVpbnQ2NF90LCB1aW50NjR4Ml90LAorCSAgejAgPSBzdmdldF9uZW9ucV91NjQg KHo0KSwKKwkgIHowID0gc3ZnZXRfbmVvbnEgKHo0KSkKKworLyoKKyoqIGdldF9uZW9ucV91NjRf ejQ6CisqKglyZXQKKyovCitURVNUX0dFVCAoZ2V0X25lb25xX3U2NF96NCwgc3Z1aW50NjRfdCwg dWludDY0eDJfdCwKKwkgIHo0X3JlcyA9IHN2Z2V0X25lb25xX3U2NCAoejQpLAorCSAgejRfcmVz ID0gc3ZnZXRfbmVvbnEgKHo0KSkKKworLyoKKyoqIGdldF9uZW9ucV91NjRfejU6CisqKgkoCisq Kgltb3YJejUuZCwgejQuZAorKioJfAorKioJbW92CXY1LjE2YiwgdjQuMTZiCisqKgkpCisqKgly ZXQKKyovCitURVNUX0dFVCAoZ2V0X25lb25xX3U2NF96NSwgc3Z1aW50NjRfdCwgdWludDY0eDJf dCwKKwkgIHo1X3JlcyA9IHN2Z2V0X25lb25xX3U2NCAoejQpLAorCSAgejVfcmVzID0gc3ZnZXRf bmVvbnEgKHo0KSkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9nY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvYWNsZS9hc20vZ2V0X25lb25xX3U4LmMg Yi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvYWNsZS9hc20vZ2V0X25lb25x X3U4LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMC4uMDVkNDJmMjg1NmMxMjMzMTViNDE5ZWZmZGMyZWE3ZGMwZGRlOGRj NQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3N2 ZS9hY2xlL2FzbS9nZXRfbmVvbnFfdTguYwpAQCAtMCwwICsxLDMzIEBACisvKiB7IGRnLWZpbmFs IHsgY2hlY2stZnVuY3Rpb24tYm9kaWVzICIqKiIgIiIgIi1EQ0hFQ0tfQVNNIiB9IH0gKi8KKwor I2luY2x1ZGUgInRlc3Rfc3ZlX2FjbGUuaCIKKworLyoKKyoqIGdldF9uZW9ucV91OF96MDoKKyoq CW1vdgl2MC4xNmIsIHY0LjE2YgorKioJcmV0CisqLworVEVTVF9HRVQgKGdldF9uZW9ucV91OF96 MCwgc3Z1aW50OF90LCB1aW50OHgxNl90LAorCSAgejAgPSBzdmdldF9uZW9ucV91OCAoejQpLAor CSAgejAgPSBzdmdldF9uZW9ucSAoejQpKQorCisvKgorKiogZ2V0X25lb25xX3U4X3o0OgorKioJ cmV0CisqLworVEVTVF9HRVQgKGdldF9uZW9ucV91OF96NCwgc3Z1aW50OF90LCB1aW50OHgxNl90 LAorCSAgejRfcmVzID0gc3ZnZXRfbmVvbnFfdTggKHo0KSwKKwkgIHo0X3JlcyA9IHN2Z2V0X25l b25xICh6NCkpCisKKy8qCisqKiBnZXRfbmVvbnFfdThfejU6CisqKgkoCisqKgltb3YJejUuZCwg ejQuZAorKioJfAorKioJbW92CXY1LjE2YiwgdjQuMTZiCisqKgkpCisqKglyZXQKKyovCitURVNU X0dFVCAoZ2V0X25lb25xX3U4X3o1LCBzdnVpbnQ4X3QsIHVpbnQ4eDE2X3QsCisJICB6NV9yZXMg PSBzdmdldF9uZW9ucV91OCAoejQpLAorCSAgejVfcmVzID0gc3ZnZXRfbmVvbnEgKHo0KSkKXCBO byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvYWFyY2g2NC9zdmUvYWNsZS9hc20vc2V0X25lb25xX2JmMTYuYyBiL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9hY2xlL2FzbS9zZXRfbmVvbnFfYmYxNi5jCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAuLjlkMGE2ODI0MTZjZWZjYWM4YmU4MzkwZjk5MjQyOTU5NzI0YWFhMzgKLS0tIC9kZXYv bnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvYWNsZS9hc20v c2V0X25lb25xX2JmMTYuYwpAQCAtMCwwICsxLDIzIEBACisvKiB7IGRnLWZpbmFsIHsgY2hlY2st ZnVuY3Rpb24tYm9kaWVzICIqKiIgIiIgIi1EQ0hFQ0tfQVNNIiB9IH0gKi8KKworI2luY2x1ZGUg InRlc3Rfc3ZlX2FjbGUuaCIKKworLyoKKyoqIHNldF9uZW9ucV9iZjE2X3oyNDoKKyoqCXB0cnVl CShwWzAtOV0rKS5oLCB2bDgKKyoqCXNlbAl6MjQuaCwgXDEsIHowLmgsIHo0LmgKKyoqCXJldAor Ki8KK1RFU1RfU0VUX05FT05RIChzZXRfbmVvbnFfYmYxNl96MjQsIHN2YmZsb2F0MTZfdCwgYmZs b2F0MTZ4OF90LAorCSAgejI0ID0gc3ZzZXRfbmVvbnFfYmYxNiAoejQsIHowKSwKKwkgIHoyNCA9 IHN2c2V0X25lb25xICh6NCwgejApKQorCisvKgorKiogc2V0X25lb25xX2JmMTZfejQ6CisqKglw dHJ1ZQkocFswLTldKykuaCwgdmw4CisqKglzZWwJejQuaCwgXDEsIHowLmgsIHo0LmgKKyoqCXJl dAorKi8KK1RFU1RfU0VUX05FT05RIChzZXRfbmVvbnFfYmYxNl96NCwgc3ZiZmxvYXQxNl90LCBi ZmxvYXQxNng4X3QsCisJICB6NF9yZXMgPSBzdnNldF9uZW9ucV9iZjE2ICh6NCwgejApLAorCSAg ejRfcmVzID0gc3ZzZXRfbmVvbnEgKHo0LCB6MCkpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls ZQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2FjbGUv YXNtL3NldF9uZW9ucV9mMTYuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3N2 ZS9hY2xlL2FzbS9zZXRfbmVvbnFfZjE2LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjVkNTllNTYzOGQ5MjhlZmIz Mzk4MmM1MDExYzY2N2UwMzFmMzAzMAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9hY2xlL2FzbS9zZXRfbmVvbnFfZjE2LmMKQEAgLTAsMCAr MSwyMyBAQAorLyogeyBkZy1maW5hbCB7IGNoZWNrLWZ1bmN0aW9uLWJvZGllcyAiKioiICIiICIt RENIRUNLX0FTTSIgfSB9ICovCisKKyNpbmNsdWRlICJ0ZXN0X3N2ZV9hY2xlLmgiCisKKy8qCisq KiBzZXRfbmVvbnFfZjE2X3oyNDoKKyoqCXB0cnVlCShwWzAtOV0rKS5oLCB2bDgKKyoqCXNlbAl6 MjQuaCwgXDEsIHowLmgsIHo0LmgKKyoqCXJldAorKi8KK1RFU1RfU0VUX05FT05RIChzZXRfbmVv bnFfZjE2X3oyNCwgc3ZmbG9hdDE2X3QsIGZsb2F0MTZ4OF90LAorCSAgejI0ID0gc3ZzZXRfbmVv bnFfZjE2ICh6NCwgejApLAorCSAgejI0ID0gc3ZzZXRfbmVvbnEgKHo0LCB6MCkpCisKKy8qCisq KiBzZXRfbmVvbnFfZjE2X3o0OgorKioJcHRydWUJKHBbMC05XSspLmgsIHZsOAorKioJc2VsCXo0 LmgsIFwxLCB6MC5oLCB6NC5oCisqKglyZXQKKyovCitURVNUX1NFVF9ORU9OUSAoc2V0X25lb25x X2YxNl96NCwgc3ZmbG9hdDE2X3QsIGZsb2F0MTZ4OF90LAorCSAgejRfcmVzID0gc3ZzZXRfbmVv bnFfZjE2ICh6NCwgejApLAorCSAgejRfcmVzID0gc3ZzZXRfbmVvbnEgKHo0LCB6MCkpClwgTm8g bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L2FhcmNoNjQvc3ZlL2FjbGUvYXNtL3NldF9uZW9ucV9mMzIuYyBiL2djYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9hY2xlL2FzbS9zZXRfbmVvbnFfZjMyLmMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MC4uNWIxZDI2MzUwNjYxOTIxNWYxYmZhODBiMjMwZGMxZmRhMDgwY2VkNQotLS0gL2Rldi9udWxs CisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9hY2xlL2FzbS9zZXRf bmVvbnFfZjMyLmMKQEAgLTAsMCArMSwyMyBAQAorLyogeyBkZy1maW5hbCB7IGNoZWNrLWZ1bmN0 aW9uLWJvZGllcyAiKioiICIiICItRENIRUNLX0FTTSIgfSB9ICovCisKKyNpbmNsdWRlICJ0ZXN0 X3N2ZV9hY2xlLmgiCisKKy8qCisqKiBzZXRfbmVvbnFfZjMyX3oyNDoKKyoqCXB0cnVlCShwWzAt OV0rKS5zLCB2bDQKKyoqCXNlbAl6MjQucywgXDEsIHowLnMsIHo0LnMKKyoqCXJldAorKi8KK1RF U1RfU0VUX05FT05RIChzZXRfbmVvbnFfZjMyX3oyNCwgc3ZmbG9hdDMyX3QsIGZsb2F0MzJ4NF90 LAorCSAgejI0ID0gc3ZzZXRfbmVvbnFfZjMyICh6NCwgejApLAorCSAgejI0ID0gc3ZzZXRfbmVv bnEgKHo0LCB6MCkpCisKKy8qCisqKiBzZXRfbmVvbnFfZjMyX3o0OgorKioJcHRydWUJKHBbMC05 XSspLnMsIHZsNAorKioJc2VsCXo0LnMsIFwxLCB6MC5zLCB6NC5zCisqKglyZXQKKyovCitURVNU X1NFVF9ORU9OUSAoc2V0X25lb25xX2YzMl96NCwgc3ZmbG9hdDMyX3QsIGZsb2F0MzJ4NF90LAor CSAgejRfcmVzID0gc3ZzZXRfbmVvbnFfZjMyICh6NCwgejApLAorCSAgejRfcmVzID0gc3ZzZXRf bmVvbnEgKHo0LCB6MCkpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2FjbGUvYXNtL3NldF9uZW9ucV9m NjQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9hY2xlL2FzbS9zZXRf bmVvbnFfZjY0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjE4YmI0MzE3MWM2YjlmZGVhYWI5MTlhYWE1NmNhYmNl NDVkMTUxYwotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJj aDY0L3N2ZS9hY2xlL2FzbS9zZXRfbmVvbnFfZjY0LmMKQEAgLTAsMCArMSwyMyBAQAorLyogeyBk Zy1maW5hbCB7IGNoZWNrLWZ1bmN0aW9uLWJvZGllcyAiKioiICIiICItRENIRUNLX0FTTSIgfSB9 ICovCisKKyNpbmNsdWRlICJ0ZXN0X3N2ZV9hY2xlLmgiCisKKy8qCisqKiBzZXRfbmVvbnFfZjY0 X3oyNDoKKyoqCXB0cnVlCShwWzAtOV0rKS5kLCB2bDIKKyoqCXNlbAl6MjQuZCwgXDEsIHowLmQs IHo0LmQKKyoqCXJldAorKi8KK1RFU1RfU0VUX05FT05RIChzZXRfbmVvbnFfZjY0X3oyNCwgc3Zm bG9hdDY0X3QsIGZsb2F0NjR4Ml90LAorCSAgejI0ID0gc3ZzZXRfbmVvbnFfZjY0ICh6NCwgejAp LAorCSAgejI0ID0gc3ZzZXRfbmVvbnEgKHo0LCB6MCkpCisKKy8qCisqKiBzZXRfbmVvbnFfZjY0 X3o0OgorKioJcHRydWUJKHBbMC05XSspLmQsIHZsMgorKioJc2VsCXo0LmQsIFwxLCB6MC5kLCB6 NC5kCisqKglyZXQKKyovCitURVNUX1NFVF9ORU9OUSAoc2V0X25lb25xX2Y2NF96NCwgc3ZmbG9h dDY0X3QsIGZsb2F0NjR4Ml90LAorCSAgejRfcmVzID0gc3ZzZXRfbmVvbnFfZjY0ICh6NCwgejAp LAorCSAgejRfcmVzID0gc3ZzZXRfbmVvbnEgKHo0LCB6MCkpClwgTm8gbmV3bGluZSBhdCBlbmQg b2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc3Zl L2FjbGUvYXNtL3NldF9uZW9ucV9zMTYuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJj aDY0L3N2ZS9hY2xlL2FzbS9zZXRfbmVvbnFfczE2LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzJhOTM1YjJhZTU2 MWIyMjIwZTJkNmM0YTNlMTNiYjEzNjljZTgxNAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9hY2xlL2FzbS9zZXRfbmVvbnFfczE2LmMKQEAg LTAsMCArMSwyMyBAQAorLyogeyBkZy1maW5hbCB7IGNoZWNrLWZ1bmN0aW9uLWJvZGllcyAiKioi ICIiICItRENIRUNLX0FTTSIgfSB9ICovCisKKyNpbmNsdWRlICJ0ZXN0X3N2ZV9hY2xlLmgiCisK Ky8qCisqKiBzZXRfbmVvbnFfczE2X3oyNDoKKyoqCXB0cnVlCShwWzAtOV0rKS5oLCB2bDgKKyoq CXNlbAl6MjQuaCwgXDEsIHowLmgsIHo0LmgKKyoqCXJldAorKi8KK1RFU1RfU0VUX05FT05RIChz ZXRfbmVvbnFfczE2X3oyNCwgc3ZpbnQxNl90LCBpbnQxNng4X3QsCisJICB6MjQgPSBzdnNldF9u ZW9ucV9zMTYgKHo0LCB6MCksCisJICB6MjQgPSBzdnNldF9uZW9ucSAoejQsIHowKSkKKworLyoK KyoqIHNldF9uZW9ucV9zMTZfejQ6CisqKglwdHJ1ZQkocFswLTldKykuaCwgdmw4CisqKglzZWwJ ejQuaCwgXDEsIHowLmgsIHo0LmgKKyoqCXJldAorKi8KK1RFU1RfU0VUX05FT05RIChzZXRfbmVv bnFfczE2X3o0LCBzdmludDE2X3QsIGludDE2eDhfdCwKKwkgIHo0X3JlcyA9IHN2c2V0X25lb25x X3MxNiAoejQsIHowKSwKKwkgIHo0X3JlcyA9IHN2c2V0X25lb25xICh6NCwgejApKQpcIE5vIG5l d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9hYXJjaDY0L3N2ZS9hY2xlL2FzbS9zZXRfbmVvbnFfczMyLmMgYi9nY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvYWFyY2g2NC9zdmUvYWNsZS9hc20vc2V0X25lb25xX3MzMi5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu LjRkYzU3Njg5ZGRiYTAyNTZlNGQwNDEzYTM5ZWYwYmI1NjFjMGVjM2UKLS0tIC9kZXYvbnVsbAor KysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvYWNsZS9hc20vc2V0X25l b25xX3MzMi5jCkBAIC0wLDAgKzEsMjMgQEAKKy8qIHsgZGctZmluYWwgeyBjaGVjay1mdW5jdGlv bi1ib2RpZXMgIioqIiAiIiAiLURDSEVDS19BU00iIH0gfSAqLworCisjaW5jbHVkZSAidGVzdF9z dmVfYWNsZS5oIgorCisvKgorKiogc2V0X25lb25xX3MzMl96MjQ6CisqKglwdHJ1ZQkocFswLTld Kykucywgdmw0CisqKglzZWwJejI0LnMsIFwxLCB6MC5zLCB6NC5zCisqKglyZXQKKyovCitURVNU X1NFVF9ORU9OUSAoc2V0X25lb25xX3MzMl96MjQsIHN2aW50MzJfdCwgaW50MzJ4NF90LAorCSAg ejI0ID0gc3ZzZXRfbmVvbnFfczMyICh6NCwgejApLAorCSAgejI0ID0gc3ZzZXRfbmVvbnEgKHo0 LCB6MCkpCisKKy8qCisqKiBzZXRfbmVvbnFfczMyX3o0OgorKioJcHRydWUJKHBbMC05XSspLnMs IHZsNAorKioJc2VsCXo0LnMsIFwxLCB6MC5zLCB6NC5zCisqKglyZXQKKyovCitURVNUX1NFVF9O RU9OUSAoc2V0X25lb25xX3MzMl96NCwgc3ZpbnQzMl90LCBpbnQzMng0X3QsCisJICB6NF9yZXMg PSBzdnNldF9uZW9ucV9zMzIgKHo0LCB6MCksCisJICB6NF9yZXMgPSBzdnNldF9uZW9ucSAoejQs IHowKSkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvYWNsZS9hc20vc2V0X25lb25xX3M2NC5jIGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2FjbGUvYXNtL3NldF9uZW9ucV9zNjQu YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwLi4zYzEzMGQxZDk0ZjAwODRmY2M2ZGY2ZjhkZDRiMGE0MjEyZTZkNjA0Ci0t LSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2Fj bGUvYXNtL3NldF9uZW9ucV9zNjQuYwpAQCAtMCwwICsxLDIzIEBACisvKiB7IGRnLWZpbmFsIHsg Y2hlY2stZnVuY3Rpb24tYm9kaWVzICIqKiIgIiIgIi1EQ0hFQ0tfQVNNIiB9IH0gKi8KKworI2lu Y2x1ZGUgInRlc3Rfc3ZlX2FjbGUuaCIKKworLyoKKyoqIHNldF9uZW9ucV9zNjRfejI0OgorKioJ cHRydWUJKHBbMC05XSspLmQsIHZsMgorKioJc2VsCXoyNC5kLCBcMSwgejAuZCwgejQuZAorKioJ cmV0CisqLworVEVTVF9TRVRfTkVPTlEgKHNldF9uZW9ucV9zNjRfejI0LCBzdmludDY0X3QsIGlu dDY0eDJfdCwKKwkgIHoyNCA9IHN2c2V0X25lb25xX3M2NCAoejQsIHowKSwKKwkgIHoyNCA9IHN2 c2V0X25lb25xICh6NCwgejApKQorCisvKgorKiogc2V0X25lb25xX3M2NF96NDoKKyoqCXB0cnVl CShwWzAtOV0rKS5kLCB2bDIKKyoqCXNlbAl6NC5kLCBcMSwgejAuZCwgejQuZAorKioJcmV0Cisq LworVEVTVF9TRVRfTkVPTlEgKHNldF9uZW9ucV9zNjRfejQsIHN2aW50NjRfdCwgaW50NjR4Ml90 LAorCSAgejRfcmVzID0gc3ZzZXRfbmVvbnFfczY0ICh6NCwgejApLAorCSAgejRfcmVzID0gc3Zz ZXRfbmVvbnEgKHo0LCB6MCkpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0 IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2FjbGUvYXNtL3NldF9uZW9u cV9zOC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2FjbGUvYXNtL3Nl dF9uZW9ucV9zOC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc2YWQ3YjM4MzYyMzlkNDU4MTgxZjRhMzczOWJiMzUx Y2MyODM0ZmMKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFy Y2g2NC9zdmUvYWNsZS9hc20vc2V0X25lb25xX3M4LmMKQEAgLTAsMCArMSwyMyBAQAorLyogeyBk Zy1maW5hbCB7IGNoZWNrLWZ1bmN0aW9uLWJvZGllcyAiKioiICIiICItRENIRUNLX0FTTSIgfSB9 ICovCisKKyNpbmNsdWRlICJ0ZXN0X3N2ZV9hY2xlLmgiCisKKy8qCisqKiBzZXRfbmVvbnFfczhf ejI0OgorKioJcHRydWUJKHBbMC05XSspLmIsIHZsMTYKKyoqCXNlbAl6MjQuYiwgXDEsIHowLmIs IHo0LmIKKyoqCXJldAorKi8KK1RFU1RfU0VUX05FT05RIChzZXRfbmVvbnFfczhfejI0LCBzdmlu dDhfdCwgaW50OHgxNl90LAorCSAgejI0ID0gc3ZzZXRfbmVvbnFfczggKHo0LCB6MCksCisJICB6 MjQgPSBzdnNldF9uZW9ucSAoejQsIHowKSkKKworLyoKKyoqIHNldF9uZW9ucV9zOF96NDoKKyoq CXB0cnVlCShwWzAtOV0rKS5iLCB2bDE2CisqKglzZWwJejQuYiwgXDEsIHowLmIsIHo0LmIKKyoq CXJldAorKi8KK1RFU1RfU0VUX05FT05RIChzZXRfbmVvbnFfczhfejQsIHN2aW50OF90LCBpbnQ4 eDE2X3QsCisJICB6NF9yZXMgPSBzdnNldF9uZW9ucV9zOCAoejQsIHowKSwKKwkgIHo0X3JlcyA9 IHN2c2V0X25lb25xICh6NCwgejApKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt LWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9hY2xlL2FzbS9zZXRf bmVvbnFfdTE2LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvYWNsZS9h c20vc2V0X25lb25xX3UxNi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUzMGRhMmMwNDIzMjQzN2M4NjgzMjM1YWZj NDgxYzQ4OTQ4OGFjMWIKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvYWFyY2g2NC9zdmUvYWNsZS9hc20vc2V0X25lb25xX3UxNi5jCkBAIC0wLDAgKzEsMjMgQEAK Ky8qIHsgZGctZmluYWwgeyBjaGVjay1mdW5jdGlvbi1ib2RpZXMgIioqIiAiIiAiLURDSEVDS19B U00iIH0gfSAqLworCisjaW5jbHVkZSAidGVzdF9zdmVfYWNsZS5oIgorCisvKgorKiogc2V0X25l b25xX3UxNl96MjQ6CisqKglwdHJ1ZQkocFswLTldKykuaCwgdmw4CisqKglzZWwJejI0LmgsIFwx LCB6MC5oLCB6NC5oCisqKglyZXQKKyovCitURVNUX1NFVF9ORU9OUSAoc2V0X25lb25xX3UxNl96 MjQsIHN2dWludDE2X3QsIHVpbnQxNng4X3QsCisJICB6MjQgPSBzdnNldF9uZW9ucV91MTYgKHo0 LCB6MCksCisJICB6MjQgPSBzdnNldF9uZW9ucSAoejQsIHowKSkKKworLyoKKyoqIHNldF9uZW9u cV91MTZfejQ6CisqKglwdHJ1ZQkocFswLTldKykuaCwgdmw4CisqKglzZWwJejQuaCwgXDEsIHow LmgsIHo0LmgKKyoqCXJldAorKi8KK1RFU1RfU0VUX05FT05RIChzZXRfbmVvbnFfdTE2X3o0LCBz dnVpbnQxNl90LCB1aW50MTZ4OF90LAorCSAgejRfcmVzID0gc3ZzZXRfbmVvbnFfdTE2ICh6NCwg ejApLAorCSAgejRfcmVzID0gc3ZzZXRfbmVvbnEgKHo0LCB6MCkpClwgTm8gbmV3bGluZSBhdCBl bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQv c3ZlL2FjbGUvYXNtL3NldF9uZW9ucV91MzIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9h YXJjaDY0L3N2ZS9hY2xlL2FzbS9zZXRfbmVvbnFfdTMyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmIxYTUyMzQ3 NDFiODM5OGExMmUzMjBiNjVkYzY3NGIzYWZhZWQxYwotLS0gL2Rldi9udWxsCisrKyBiL2djYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9hY2xlL2FzbS9zZXRfbmVvbnFfdTMyLmMK QEAgLTAsMCArMSwyMyBAQAorLyogeyBkZy1maW5hbCB7IGNoZWNrLWZ1bmN0aW9uLWJvZGllcyAi KioiICIiICItRENIRUNLX0FTTSIgfSB9ICovCisKKyNpbmNsdWRlICJ0ZXN0X3N2ZV9hY2xlLmgi CisKKy8qCisqKiBzZXRfbmVvbnFfdTMyX3oyNDoKKyoqCXB0cnVlCShwWzAtOV0rKS5zLCB2bDQK KyoqCXNlbAl6MjQucywgXDEsIHowLnMsIHo0LnMKKyoqCXJldAorKi8KK1RFU1RfU0VUX05FT05R IChzZXRfbmVvbnFfdTMyX3oyNCwgc3Z1aW50MzJfdCwgdWludDMyeDRfdCwKKwkgIHoyNCA9IHN2 c2V0X25lb25xX3UzMiAoejQsIHowKSwKKwkgIHoyNCA9IHN2c2V0X25lb25xICh6NCwgejApKQor CisvKgorKiogc2V0X25lb25xX3UzMl96NDoKKyoqCXB0cnVlCShwWzAtOV0rKS5zLCB2bDQKKyoq CXNlbAl6NC5zLCBcMSwgejAucywgejQucworKioJcmV0CisqLworVEVTVF9TRVRfTkVPTlEgKHNl dF9uZW9ucV91MzJfejQsIHN2dWludDMyX3QsIHVpbnQzMng0X3QsCisJICB6NF9yZXMgPSBzdnNl dF9uZW9ucV91MzIgKHo0LCB6MCksCisJICB6NF9yZXMgPSBzdnNldF9uZW9ucSAoejQsIHowKSkK XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvYWFyY2g2NC9zdmUvYWNsZS9hc20vc2V0X25lb25xX3U2NC5jIGIvZ2NjL3Rlc3Rz dWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2FjbGUvYXNtL3NldF9uZW9ucV91NjQuYwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwLi5hZjJiODNhOTIyZTc4NDhlYmNmNDNlNDgwODEyNWY4Mjk2M2RlOTU2Ci0tLSAvZGV2 L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2FjbGUvYXNt L3NldF9uZW9ucV91NjQuYwpAQCAtMCwwICsxLDIzIEBACisvKiB7IGRnLWZpbmFsIHsgY2hlY2st ZnVuY3Rpb24tYm9kaWVzICIqKiIgIiIgIi1EQ0hFQ0tfQVNNIiB9IH0gKi8KKworI2luY2x1ZGUg InRlc3Rfc3ZlX2FjbGUuaCIKKworLyoKKyoqIHNldF9uZW9ucV91NjRfejI0OgorKioJcHRydWUJ KHBbMC05XSspLmQsIHZsMgorKioJc2VsCXoyNC5kLCBcMSwgejAuZCwgejQuZAorKioJcmV0Cisq LworVEVTVF9TRVRfTkVPTlEgKHNldF9uZW9ucV91NjRfejI0LCBzdnVpbnQ2NF90LCB1aW50NjR4 Ml90LAorCSAgejI0ID0gc3ZzZXRfbmVvbnFfdTY0ICh6NCwgejApLAorCSAgejI0ID0gc3ZzZXRf bmVvbnEgKHo0LCB6MCkpCisKKy8qCisqKiBzZXRfbmVvbnFfdTY0X3o0OgorKioJcHRydWUJKHBb MC05XSspLmQsIHZsMgorKioJc2VsCXo0LmQsIFwxLCB6MC5kLCB6NC5kCisqKglyZXQKKyovCitU RVNUX1NFVF9ORU9OUSAoc2V0X25lb25xX3U2NF96NCwgc3Z1aW50NjRfdCwgdWludDY0eDJfdCwK KwkgIHo0X3JlcyA9IHN2c2V0X25lb25xX3U2NCAoejQsIHowKSwKKwkgIHo0X3JlcyA9IHN2c2V0 X25lb25xICh6NCwgejApKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9hY2xlL2FzbS9zZXRfbmVvbnFf dTguYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9hY2xlL2FzbS9zZXRf bmVvbnFfdTguYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOWY1NDJiOTU3YThhMTdjYzcyNWM5OWI4N2VmODRlZTFl YTlhMTg2Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNo NjQvc3ZlL2FjbGUvYXNtL3NldF9uZW9ucV91OC5jCkBAIC0wLDAgKzEsMjMgQEAKKy8qIHsgZGct ZmluYWwgeyBjaGVjay1mdW5jdGlvbi1ib2RpZXMgIioqIiAiIiAiLURDSEVDS19BU00iIH0gfSAq LworCisjaW5jbHVkZSAidGVzdF9zdmVfYWNsZS5oIgorCisvKgorKiogc2V0X25lb25xX3U4X3oy NDoKKyoqCXB0cnVlCShwWzAtOV0rKS5iLCB2bDE2CisqKglzZWwJejI0LmIsIFwxLCB6MC5iLCB6 NC5iCisqKglyZXQKKyovCitURVNUX1NFVF9ORU9OUSAoc2V0X25lb25xX3U4X3oyNCwgc3Z1aW50 OF90LCB1aW50OHgxNl90LAorCSAgejI0ID0gc3ZzZXRfbmVvbnFfdTggKHo0LCB6MCksCisJICB6 MjQgPSBzdnNldF9uZW9ucSAoejQsIHowKSkKKworLyoKKyoqIHNldF9uZW9ucV91OF96NDoKKyoq CXB0cnVlCShwWzAtOV0rKS5iLCB2bDE2CisqKglzZWwJejQuYiwgXDEsIHowLmIsIHo0LmIKKyoq CXJldAorKi8KK1RFU1RfU0VUX05FT05RIChzZXRfbmVvbnFfdThfejQsIHN2dWludDhfdCwgdWlu dDh4MTZfdCwKKwkgIHo0X3JlcyA9IHN2c2V0X25lb25xX3U4ICh6NCwgejApLAorCSAgejRfcmVz ID0gc3ZzZXRfbmVvbnEgKHo0LCB6MCkpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm IC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2FjbGUvYXNtL3Rl c3Rfc3ZlX2FjbGUuaCBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9hY2xl L2FzbS90ZXN0X3N2ZV9hY2xlLmgKaW5kZXggNzU2ZmU0ZGIzODU2MjA4YTU2ZTczNTI3ODAyNmQ3 YzJiMjM2NzE3YS4uMzY3MDI0YmU4NjM1MDU2NjkzYjNkOTE5NDE5ZGU5MmY3NWRiMjYwYyAxMDA2 NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2FjbGUvYXNtL3Rl c3Rfc3ZlX2FjbGUuaAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUv YWNsZS9hc20vdGVzdF9zdmVfYWNsZS5oCkBAIC0xLDcgKzEsNyBAQAogI2lmbmRlZiBURVNUX1NW RV9BQ0xFX0gKICNkZWZpbmUgVEVTVF9TVkVfQUNMRV9IIDEKIAotI2luY2x1ZGUgPGFybV9zdmUu aD4KKyNpbmNsdWRlIDxhcm1fbmVvbl9zdmVfYnJpZGdlLmg+CiAKICNpZiBkZWZpbmVkIChURVNU X09WRVJMT0FEUykKICNkZWZpbmUgSU5WT0tFKENPREUxLCBDT0RFMikgQ09ERTIKQEAgLTYxNSw2 ICs2MTUsMjggQEAKICAgICBfX2FzbSB2b2xhdGlsZSAoIiIgOjogIlVwYSIgKHA0KSwgIlVwYSIg KHA4KSk7CQlcCiAgIH0KIAorI2RlZmluZSBURVNUX1NFVF9ORU9OUShOQU1FLCBUVFlQRSwgWlRZ UEUsIENPREUxLCBDT0RFMikJXAorICBQUk9UTyAoTkFNRSwgdm9pZCwgKFpUWVBFIHowLCBaVFlQ RSB6MSwgWlRZUEUgejIsIFpUWVBFIHozLAlcCisJCSAgICAgIFRUWVBFIHo0KSkJCQkJXAorICB7 CQkJCQkJCQlcCisgICAgcmVnaXN0ZXIgVFRZUEUgejI0IF9fYXNtICgiejI0Iik7CQkJCVwKKyAg ICByZWdpc3RlciBUVFlQRSB6NF9yZXMgX19hc20gKCJ6NCIpOwkJCQlcCisgICAgSU5WT0tFIChD T0RFMSwgQ09ERTIpOwkJCQkJXAorICAgIF9fYXNtIHZvbGF0aWxlICgiIiA6OiAidyIgKHoyNCks ICJ3IiAoejRfcmVzKSk7CVwKKyAgfQorCisjZGVmaW5lIFRFU1RfRFVQX05FT05RKE5BTUUsIFRU WVBFLCBaVFlQRSwgQ09ERTEsIENPREUyKQlcCisgIFBST1RPIChOQU1FLCB2b2lkLCAoWlRZUEUg dW51c2VkMCwgWlRZUEUgdW51c2VkMSwJCVwKKwkJICAgICAgWlRZUEUgdW51c2VkMiwgWlRZUEUg dW51c2VkMywgVFRZUEUgejQpKQlcCisgIHsJCQkJCQkJCVwKKyAgICByZWdpc3RlciBaVFlQRSB6 MCBfX2FzbSAoInowIik7CQkJCVwKKyAgICByZWdpc3RlciBaVFlQRSB6NF9yZXMgX19hc20gKCJ6 NCIpOwkJCQlcCisgICAgcmVnaXN0ZXIgWlRZUEUgejVfcmVzIF9fYXNtICgiejUiKTsJCQkJXAor ICAgIElOVk9LRSAoQ09ERTEsIENPREUyKTsJCQkJCVwKKyAgICBfX2FzbSB2b2xhdGlsZSAoIiIg OjogInciICh6MCksICJ3IiAoejRfcmVzKSwJCVwKKwkJICAgICJ3IiAoejVfcmVzKSk7CQkJCVwK KyAgfQorCiAjZGVmaW5lIFRFU1RfVEJMMihOQU1FLCBUVFlQRSwgWlRZUEUsIFVUWVBFLCBDT0RF MSwgQ09ERTIpCVwKICAgUFJPVE8gKE5BTUUsIFpUWVBFLCAoVFRZUEUgejAsIFRUWVBFIHoyLCBV VFlQRSB6NCkpCQlcCiAgIHsJCQkJCQkJCVwKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2Nj LnRhcmdldC9hYXJjaDY0L3N2ZS9hY2xlL2dlbmVyYWwtYy9kdXBfbmVvbnFfMS5jIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2FjbGUvZ2VuZXJhbC1jL2R1cF9uZW9ucV8x LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMC4uYTA3MTU4ZjZiYThkYzczOWZmNmUzYTVhMTRlNDRjNjE5MTU3ZTJiOQot LS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9h Y2xlL2dlbmVyYWwtYy9kdXBfbmVvbnFfMS5jCkBAIC0wLDAgKzEsMjAgQEAKKy8qIHsgZGctZG8g Y29tcGlsZSB9ICovCisvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1hcmNoPWFybXY4LjIt YStzdmUgLXN0ZD1jOTkgLVdhbGwgLVdleHRyYSIgfSAqLworCisjaW5jbHVkZSA8YXJtX25lb25f c3ZlX2JyaWRnZS5oPgorCitmbG9hdDY0eDJfdAorZjEgKGludDh4MTZfdCBzOCwgc3ZpbnQ4X3Qg c3ZlUzgsIGludDY0eDJfdCBzNjQsIGludDh4OHgyX3Qgczh4MikKK3sKKyAgZmxvYXQ2NHgyX3Qg ZjY0OworCisgIHN2ZVM4ID0gc3ZkdXBfbmVvbnEgKHM4KTsKKyAgc3ZlUzggPSBzdmR1cF9uZW9u cSAoKTsgLyogeyBkZy1lcnJvciB7dG9vIGZldyBhcmd1bWVudHMgdG8gZnVuY3Rpb24gJ3N2ZHVw X25lb25xJ30gfSAqLworICBzdmVTOCA9IHN2ZHVwX25lb25xIChzOCwgMSk7IC8qIHsgZGctZXJy b3Ige3RvbyBtYW55IGFyZ3VtZW50cyB0byBmdW5jdGlvbiAnc3ZkdXBfbmVvbnEnfSB9ICovCisg IHN2ZVM4ID0gc3ZkdXBfbmVvbnEgKHN2ZVM4KTsgLyogeyBkZy1lcnJvciB7cGFzc2luZyAnc3Zp bnQ4X3QnIHRvIGFyZ3VtZW50IDEgb2YgJ3N2ZHVwX25lb25xJywgd2hpY2ggZXhwZWN0cyBhIDEy OCBiaXQgTkVPTiB2ZWN0b3IgdHlwZX0gfSAqLworICBmNjQgPSBzdmR1cF9uZW9ucSAoczgpOyAv KiB7IGRnLWVycm9yIHtpbmNvbXBhdGlibGUgdHlwZXMgd2hlbiBhc3NpZ25pbmcgdG8gdHlwZSAn ZmxvYXQ2NHgyX3QnIGZyb20gdHlwZSAnc3ZpbnQ4X3QnfSB9ICovCisgIHN2ZVM4ID0gc3ZkdXBf bmVvbnEgKHM4eDIpOyAvKiB7IGRnLWVycm9yIHtwYXNzaW5nICdpbnQ4eDh4Ml90JyB0byBhcmd1 bWVudCAxIG9mICdzdmR1cF9uZW9ucScsIHdoaWNoIGV4cGVjdHMgYSAxMjggYml0IE5FT04gdmVj dG9yIHR5cGV9IH0gKi8KKyAgc3ZlUzggPSBzdmR1cF9uZW9ucSAoczY0KTsgLyogeyBkZy1lcnJv ciB7aW5jb21wYXRpYmxlIHR5cGVzIHdoZW4gYXNzaWduaW5nIHRvIHR5cGUgJ3N2aW50OF90JyBm cm9tIHR5cGUgJ3N2aW50NjRfdCd9IH0gKi8KKworICByZXR1cm4gZjY0OworfQpcIE5vIG5ld2xp bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9h YXJjaDY0L3N2ZS9hY2xlL2dlbmVyYWwtYy9nZXRfbmVvbnFfMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2FjbGUvZ2VuZXJhbC1jL2dldF9uZW9ucV8xLmMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMC4uMjc1M2U5MjcxZmYyYTU5N2M5ZmM2OWUzOWRjMTViNWNhM2MwYTBkMgotLS0gL2Rldi9u dWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9hY2xlL2dlbmVy YWwtYy9nZXRfbmVvbnFfMS5jCkBAIC0wLDAgKzEsMjAgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9 ICovCisvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1hcmNoPWFybXY4LjItYStzdmUgLXN0 ZD1jOTkgLVdhbGwgLVdleHRyYSIgfSAqLworCisjaW5jbHVkZSA8YXJtX25lb25fc3ZlX2JyaWRn ZS5oPgorCitmbG9hdDY0eDJfdAorZjEgKGludDh4MTZfdCBzOCwgc3ZpbnQ4X3Qgc3ZlUzgsIHN2 aW50OHgyX3Qgc3ZlUzh4Miwgc3ZpbnQ2NF90IHN2ZVM2NCkKK3sKKyAgZmxvYXQ2NHgyX3QgZjY0 OworCisgIHM4ID0gc3ZnZXRfbmVvbnEgKHN2ZVM4KTsKKyAgczggPSBzdmdldF9uZW9ucSAoKTsg LyogeyBkZy1lcnJvciB7dG9vIGZldyBhcmd1bWVudHMgdG8gZnVuY3Rpb24gJ3N2Z2V0X25lb25x J30gfSAqLworICBzOCA9IHN2Z2V0X25lb25xIChzdmVTOCwgMSk7IC8qIHsgZGctZXJyb3Ige3Rv byBtYW55IGFyZ3VtZW50cyB0byBmdW5jdGlvbiAnc3ZnZXRfbmVvbnEnfSB9ICovCisgIHM4ID0g c3ZnZXRfbmVvbnEgKHM4KTsgLyogeyBkZy1lcnJvciB7cGFzc2luZyAnaW50OHgxNl90JyB0byBh cmd1bWVudCAxIG9mICdzdmdldF9uZW9ucScsIHdoaWNoIGV4cGVjdHMgYW4gU1ZFIHR5cGV9IH0g Ki8KKyAgZjY0ID0gc3ZnZXRfbmVvbnEgKHN2ZVM4KTsgLyogeyBkZy1lcnJvciB7aW5jb21wYXRp YmxlIHR5cGVzIHdoZW4gYXNzaWduaW5nIHRvIHR5cGUgJ2Zsb2F0NjR4Ml90JyBmcm9tIHR5cGUg J19fSW50OHgxNl90J30gfSAqLworICBzOCA9IHN2Z2V0X25lb25xIChzdmVTOHgyKTsgLyogeyBk Zy1lcnJvciB7cGFzc2luZyAnc3ZpbnQ4eDJfdCcgdG8gYXJndW1lbnQgMSBvZiAnc3ZnZXRfbmVv bnEnLCB3aGljaCBleHBlY3RzIGEgc2luZ2xlIFNWRSB2ZWN0b3IgcmF0aGVyIHRoYW4gYSB0dXBs ZX0gfSAqLworICBzOCA9IHN2Z2V0X25lb25xIChzdmVTNjQpOyAvKiB7IGRnLWVycm9yIHtpbmNv bXBhdGlibGUgdHlwZXMgd2hlbiBhc3NpZ25pbmcgdG8gdHlwZSAnaW50OHgxNl90JyBmcm9tIHR5 cGUgJ19fSW50NjR4Ml90fSB9ICovCisKKyAgcmV0dXJuIGY2NDsKK30KXCBObyBuZXdsaW5lIGF0 IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2 NC9zdmUvYWNsZS9nZW5lcmFsLWMvc2V0X25lb25xXzEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9hYXJjaDY0L3N2ZS9hY2xlL2dlbmVyYWwtYy9zZXRfbmVvbnFfMS5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu LmYwODE3Mjg0MmE3MWQzOGEwMTg1N2YzYTg4MDY2MmNiOTkwODQyZDkKLS0tIC9kZXYvbnVsbAor KysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvYWNsZS9nZW5lcmFsLWMv c2V0X25lb25xXzEuYwpAQCAtMCwwICsxLDI3IEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwor LyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tYXJjaD1hcm12OC4yLWErc3ZlIC1zdGQ9Yzk5 IC1XYWxsIC1XZXh0cmEiIH0gKi8KKworI2luY2x1ZGUgPGFybV9uZW9uX3N2ZV9icmlkZ2UuaD4K KworZmxvYXQ2NHgyX3QKK2YxIChpbnQ4eDE2X3QgczgsIHN2aW50OF90IHN2ZVM4LCBzdmludDh4 Ml90IHN2ZVM4eDIsIHN2aW50NjRfdCBzdmVTNjQsCisgICAgaW50NjR4Ml90IHM2NCwgc3ZiZmxv YXQxNl90IHN2ZUJGMTYsIGJmbG9hdDE2eDhfdCBiZjE2LCBpbnQ4eDhfdCBzOF82NGJpdCwKKyAg ICBzdmJvb2xfdCBzdmJvb2wpCit7CisgIGZsb2F0NjR4Ml90IGY2NDsKKworICBzdmVTOCA9IHN2 c2V0X25lb25xIChzdmVTOCwgczgpOworICBzdmVTNjQgPSBzdnNldF9uZW9ucSAoc3ZlUzY0LCBz NjQpOworICBzdmVCRjE2ID0gc3ZzZXRfbmVvbnEgKHN2ZUJGMTYsIGJmMTYpOworICBzdmVTOCA9 IHN2c2V0X25lb25xICgpOyAvKiB7IGRnLWVycm9yIHt0b28gZmV3IGFyZ3VtZW50cyB0byBmdW5j dGlvbiAnc3ZzZXRfbmVvbnEnfSB9ICovCisgIHN2ZVM4ID0gc3ZzZXRfbmVvbnEgKHN2ZVM4LCBz OCwgMSk7IC8qIHsgZGctZXJyb3Ige3RvbyBtYW55IGFyZ3VtZW50cyB0byBmdW5jdGlvbiAnc3Zz ZXRfbmVvbnEnfSB9ICovCisgIHN2ZVM4ID0gc3ZzZXRfbmVvbnEgKHM4LCBzOCk7IC8qIHsgZGct ZXJyb3Ige2luY29tcGF0aWJsZSB0eXBlIGZvciBhcmd1bWVudCAxIG9mICdzdnNldF9uZW9ucV9z OCd9IH0gKi8KKyAgZjY0ID0gc3ZzZXRfbmVvbnEgKHN2ZVM4LCBzOCk7IC8qIHsgZGctZXJyb3Ig e2luY29tcGF0aWJsZSB0eXBlcyB3aGVuIGFzc2lnbmluZyB0byB0eXBlICdmbG9hdDY0eDJfdCcg ZnJvbSB0eXBlICdzdmludDhfdCd9IH0gKi8KKyAgc3ZlUzggPSBzdnNldF9uZW9ucSAoc3ZlUzh4 MiwgczgpOyAvKiB7IGRnLWVycm9yIHtpbmNvbXBhdGlibGUgdHlwZSBmb3IgYXJndW1lbnQgMSBv ZiAnc3ZzZXRfbmVvbnFfczgnfSB9ICovCisgIHN2ZVM4ID0gc3ZzZXRfbmVvbnEgKHN2ZVM4LCBz dmVTOCk7IC8qIHsgZGctZXJyb3Ige3Bhc3NpbmcgJ3N2aW50OF90JyB0byBhcmd1bWVudCAyIG9m ICdzdnNldF9uZW9ucScsIHdoaWNoIGV4cGVjdHMgYSAxMjggYml0IE5FT04gdmVjdG9yIHR5cGV9 IH0gKi8KKyAgc3ZlUzggPSBzdnNldF9uZW9ucSAoc3ZlUzgsIHM4XzY0Yml0KTsgLyogeyBkZy1l cnJvciB7cGFzc2luZyAnaW50OHg4X3QnIHRvIGFyZ3VtZW50IDIgb2YgJ3N2c2V0X25lb25xJywg d2hpY2ggZXhwZWN0cyBhIDEyOCBiaXQgTkVPTiB2ZWN0b3IgdHlwZX0gfSAqLworICBzdmVTOCA9 IHN2c2V0X25lb25xIChzdmVTNjQsIHM2NCk7IC8qIHsgZGctZXJyb3Ige2luY29tcGF0aWJsZSB0 eXBlcyB3aGVuIGFzc2lnbmluZyB0byB0eXBlICdzdmludDhfdCcgZnJvbSB0eXBlICdzdmludDY0 X3R9IH0gKi8KKyAgc3ZlUzggPSBzdnNldF9uZW9ucSAoc3Zib29sLCBzdmJvb2wpOyAvKiB7IGRn LWVycm9yIHtwYXNzaW5nICdzdmJvb2xfdCcgdG8gYXJndW1lbnQgMiBvZiAnc3ZzZXRfbmVvbnEn LCB3aGljaCBleHBlY3RzIGEgMTI4IGJpdCBORU9OIHZlY3RvciB0eXBlfSB9ICovCisKKyAgcmV0 dXJuIGY2NDsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg== --------------0AYEna4PghsOSbjsMrjSwyrd--