Received: by 2002:a05:6358:9144:b0:117:f937:c515 with SMTP id r4csp2747337rwr; Fri, 28 Apr 2023 15:28:53 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ4CDgOKRCy5/5OXK5eZEOHuN8nb7RlWXrO3RUbs5jcnR7tkfAuv5uOXCIZDFjY1CF9qAUod X-Received: by 2002:a05:6a20:4321:b0:f6:7bb8:c8e5 with SMTP id h33-20020a056a20432100b000f67bb8c8e5mr9296423pzk.6.1682720933056; Fri, 28 Apr 2023 15:28:53 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1682720933; cv=pass; d=google.com; s=arc-20160816; b=r9LwdM6p1Fs+7L4KtvsdmQToLj+Q/mK6TwCc7sgNk8U5h01RuqhHyNVz9fv80YiVbo 1QQM+UrNau/LNVnGfLFyxbRJpFehm6JrSw8fSWj1YF6m6KVS4e6fbvtZ1ogbxLqOrH7Z Two9p3dta/wzDBdXMQ6g5P6dOdOddMW6fkbb8CuzV5ktYwMrPHKndBY6WcxL1fmf2vHy N6NPLDH12Um/xSDajk/ecLG2aSI1yEIZsTf4RzhTMaad1tYaNo96WSNbgvh/3gWImPmr KxFAQw/0QUED4RmR6IszJe7aCAVygQM99+CWvhvYCZjkn/w2FPiU/YB3vwtaOnu7bH+b 8RmQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :content-language:accept-language:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature; bh=OewCyN3HaiX6kuR9jhLRVBZYMM7JvXc3kATbDRLZm/c=; b=k4mxy+b6WEMqZqp3yCKRNEdFapsAOKONKhQkks0E2I++nkU1PZEJKkbB6BSVneivKN 1xNQzwWziTSwOuxcXmXMJ6aPegK+Fdz5pwVfyfrzwQalS0ruU/aqfNjW7pUrz7rRlj3Z 6zsCnzvJB72Yc3EXKXSBSVNM7t2Ip60ab81YL9/mVzhT+8gopoXCzfrAzTsFMbGbEmBD UZTNS9l4svhSSR7siS6Jg3LQAIjwY5Da65ueMw5i0s+E6A7LOmtz+na1p7hYNEJNIe86 tj00OWbnSC2g4M4bR9whU5X7H6Af1BOIO26RCn8pDGItwsaflo35PEGoHMn5tHxIpDlC FkgA== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@Nvidia.com header.s=selector2 header.b=qWvwjplq; arc=pass (i=1 spf=pass spfdomain=nvidia.com dkim=pass dkdomain=nvidia.com dmarc=pass fromdomain=nvidia.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=nvidia.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id m187-20020a6258c4000000b00640f209d54fsi9473833pfb.11.2023.04.28.15.28.37; Fri, 28 Apr 2023 15:28:53 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@Nvidia.com header.s=selector2 header.b=qWvwjplq; arc=pass (i=1 spf=pass spfdomain=nvidia.com dkim=pass dkdomain=nvidia.com dmarc=pass fromdomain=nvidia.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=nvidia.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1345956AbjD1WYB (ORCPT + 99 others); Fri, 28 Apr 2023 18:24:01 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41854 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229579AbjD1WX7 (ORCPT ); Fri, 28 Apr 2023 18:23:59 -0400 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2074.outbound.protection.outlook.com [40.107.94.74]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4CB412137; Fri, 28 Apr 2023 15:23:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=DyNs+HVGoH9bbW2Ftz88IklldlTsWh2cPZGrPd17MdSS6y6flRGBcVea65lmMbNMd6zAeJrgCI4iTUnu353dNBWj0hJmt7u/dllyuR0TQJjBC+38nlBw1PjSC1o+Xbw9WRdu8JqHdic6sWAoxwkJCPxGeZROd3P0Vnxl1zaTbzcQydWBT+A+sB5efWWtbR9N0FFXXPXn8md1HZa0M3WbykikyQ2xuHvqd+nHGMe/VCTSFSZT5bnK3qYlx0qNL9TwmlMz5NfW3q/4HhY9IiszpHTVlDUNqfc2+4eqIWGC9yWXzKn4pZQhxNPyOybE/0cxs6bv3mnWZUEO+MTNpGySRA== 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=OewCyN3HaiX6kuR9jhLRVBZYMM7JvXc3kATbDRLZm/c=; b=UEdOQp6vqmzqYasRkqrAWmdEHWU29qShJi/g5OxL9pg3Nynlbt30f2rg0r0ptExgI6gF7FMXkyGS6/2ikNNDd2jOiE+EbnBZ0nVloxOCQlV/vxw3MCuugaJievqxgkoentX3ONGUEke40v5Brxc1/mN0l1lL45xFqfSEQsGAaxyunZqodSiejbde/KG7VKd2y/yNLchWhWNe6vUafV7JNdD5wJocXpOMo5Clz+uFLQQriAu0spAem/C7Gw0TbVHmPiOIp4AyKQqPAdHy4maj6g3u/Ov33qpEk76fCpVGD0iE0qJGSBw4insetBgSH8oc6wHEE/eT7SwgMLMxdArRTA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=OewCyN3HaiX6kuR9jhLRVBZYMM7JvXc3kATbDRLZm/c=; b=qWvwjplqY4EO/kxw5R4/a3b2JMMrz0Ue9GZSNttzqLiDFRGZKISoKUaDj+d77fgHmUJe3kcIsIatVG3sh+21eEPF0S4z5yGV4+zo0nbt9I09YNYoCaoupcoGdiBC7OBlb/L+xzsgpdGumylcdFcZs22zBct2KgXXuBZ1IzJW4sSgZA7O0Y/NRQ4D4WlBmDB9SQ3otFIxl3pdCEnPB1LNbzDSCA2dEftps8Y2uiv7DeNlMATbiym45iwx59wxAVXgm3W0rN9cosFc8MKUdLtG7G76SFEM7JVjevxh73XZP0vCs++XlqpbOazUsmfH7oaemnTPAa1mpDLvfTNlDxireA== Received: from SJ0PR12MB5676.namprd12.prod.outlook.com (2603:10b6:a03:42e::8) by DS0PR12MB8477.namprd12.prod.outlook.com (2603:10b6:8:15b::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6340.24; Fri, 28 Apr 2023 22:23:52 +0000 Received: from SJ0PR12MB5676.namprd12.prod.outlook.com ([fe80::5f30:d992:1391:bac]) by SJ0PR12MB5676.namprd12.prod.outlook.com ([fe80::5f30:d992:1391:bac%7]) with mapi id 15.20.6340.024; Fri, 28 Apr 2023 22:23:52 +0000 From: Besar Wicaksono To: Robin Murphy , "suzuki.poulose@arm.com" , "catalin.marinas@arm.com" , "will@kernel.org" , "mark.rutland@arm.com" CC: "linux-arm-kernel@lists.infradead.org" , "linux-kernel@vger.kernel.org" , "linux-tegra@vger.kernel.org" , Thierry Reding , Jonathan Hunter , Vikram Sethi , Richard Wiley , Eric Funsten Subject: RE: [PATCH v2] perf: arm_cspmu: Separate Arm and vendor module Thread-Topic: [PATCH v2] perf: arm_cspmu: Separate Arm and vendor module Thread-Index: AQHZcb/AWUgRdv2LEU+52+bKKlUbua8/IfEAgAHay0A= Date: Fri, 28 Apr 2023 22:23:52 +0000 Message-ID: References: <20230418062030.45620-1-bwicaksono@nvidia.com> <61e4c2ba-7549-2766-8c94-9de4fc27ecbd@arm.com> In-Reply-To: <61e4c2ba-7549-2766-8c94-9de4fc27ecbd@arm.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SJ0PR12MB5676:EE_|DS0PR12MB8477:EE_ x-ms-office365-filtering-correlation-id: f4399380-cd3b-40d4-06a0-08db48373f17 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: qoS69CHd5fTxJKv79vzcKJUKEBbWNqLyuJzp/Ggo6BXBb5DiACmhA3TBeo7vXQNftNmT0oURXLtBR02nyC2/lt79Qc9Kj/d7lrdQn8VHznjRRb35ZECIOi2Cc5n3W6sXya7T8NCQ6gJXMbzCra6dkdvfa/Lo7ngoRXBASOpR+Hy5fzDnyN41lDUc0MhTYa9+SMsjd5NL7XB9IPv4vBPykrp6OjfLnIsl2/QxFfQQg2B9JiQoUm71eCcrMeX+N5sYPUUqq5ctrOcKJyFJNQfSv9NC1uwcHx2PAStlqUaL9RR3Dv7VTMYNimyLLCtmHXSkvLegzem1zGJAsE9mMb5D8xqmrbtsDwQT+hNr+YhN/1Mr/h+NyLml0Oh/pC28LrMCOspQMyoskhh9XOPihe3VrGH3qfEMIPAChkBEc3JNNRgF57ECXTiL1tz3nUmODEnV7q+ljzOLyuenGlQvVPX42QtENEgk3ZOcBls30VcB9hStVYkxF9nG2QpikVzqNC7Vvedds4lwiHHGZ4qnWG2hwTNSzAb/jc6hoqddm4azo/FSVwAQ8tV+CtLi0Xp4vJW+Ln50wi8+LnAjPP2Fq660LrjVShV3lAHVC7FsONS4sg0oQ728VQJbNjBxiwt+i+2L x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ0PR12MB5676.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(4636009)(376002)(396003)(39860400002)(346002)(136003)(366004)(451199021)(7696005)(33656002)(71200400001)(66476007)(66556008)(76116006)(66946007)(30864003)(107886003)(2906002)(38070700005)(55016003)(26005)(9686003)(53546011)(6506007)(122000001)(316002)(186003)(41300700001)(64756008)(66446008)(4326008)(478600001)(5660300002)(38100700002)(86362001)(54906003)(8676002)(52536014)(8936002)(83380400001)(110136005)(579004)(559001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?ZHByb0ZaQmpaUFpHV3NRNVN0Q0pQY1dSaDRCL2I4dnRXdHNSNjFqZ0ZKRXRD?= =?utf-8?B?Sjl4NkZLd2ViTWRabWRmcVgyQ1ExWnlSa0tvMzBzVHhhRk4yL1hNK0VldVFt?= =?utf-8?B?N0tsMGx4ZU8rbnhJWk03Yksxbjg3NGYySzZ0NnRkNE5PTytQdmt6QVkwWFBs?= =?utf-8?B?ZHJITjYxbFIrUWRtZE9iMFR5YWsxSjlBMW9kM0g5dG1wYzhxNWpGOVJrMFB1?= =?utf-8?B?dkUwN0UwamZEQ0x0Y0RiSEZRZlhQRmNhblRuTVRUemtQdTNmYjY3OEtQbC8z?= =?utf-8?B?RGEvbXFlV0pOQnZuTERmb0NENVlJTmZLQWp5Q0JZTEd0MHB3ZHl2NGtBRS9L?= =?utf-8?B?c1dwMEQ5bFJIbG5SYThTT21HaldjQzlFS0xiaEYrVUc2SjRMN1hpM3p4VU1D?= =?utf-8?B?OEZSQTZwa2NtQXRSYVNPWGVaVGVuSTlyZU4rVnR0K2JSdjdLYWNueFIza2t5?= =?utf-8?B?bnkzRG5mVmZ1K2Nab1dlcWxCM0tJamo0ZUtoL2RjWUgvY2kxbG9sZk9WZk1j?= =?utf-8?B?QTV0UHNBbkVZbmJwbFdxUnIwZ3lOWTJacXZzaHlMb0EwTWFmZlI3ejJhWG4x?= =?utf-8?B?ODJURGxVaFJnTFhPSkxRcDZvSmdUamlCLzBhcnpuL1VpdW9oS2NGTmp1dTBI?= =?utf-8?B?TzZRbUVkYmxkZFp2MTNGWC9xcUtwMFRvRWJJbW9UTmN0d0QxU2RGNnEzK1Zm?= =?utf-8?B?bmlmSFhwUytndmo2TEdIVTR0NjNEendNRWgwa1lSNUU1aStISmZFdHBnMW9J?= =?utf-8?B?bzMvQ2JNb3JOZ2plc2RtNFNvTS9RVnlzcFJLUXhjcEl0OU5vVmV0VmhDaXJi?= =?utf-8?B?aXI1eGxWdERjYmxwZ044UXRMSU5QdHBaaE9hU2JPdlFxd3JQQTExK29pdGhj?= =?utf-8?B?bGg5VnVJZmwwWVo4TW5pUjhJUndJUHUxZDZCb09ZTWs2Rll6cHJZYVpOTHlW?= =?utf-8?B?VFdnZjE0OXRyamlaZG0zaGY0MTF2d1hBcjlqZHBYWVk1ek5STVJ3YlFQOFoy?= =?utf-8?B?blQva3kvNXBRclNlSWlrR3YxUUFKa255cHVScW5nS2lVMHM0U2JvRW9ER1Mr?= =?utf-8?B?M21PemEvME9sN0JOOUQ3ZkplU1NVVzNnNzNKRWd0R3RmMDh3R3dpeXlvYWFQ?= =?utf-8?B?T3hYT2szWTZOeThMY1lqbG1iQlI2Ri9EdGoyVms4LzM5Q25QeDQ3UlVvb0xO?= =?utf-8?B?eEszSDBYdW1kMFMrbmVOTEdYTVE0UGlabkVDaVlkbGo3ZlJycUN1QjUrMTJu?= =?utf-8?B?eTkvTFFQTzhxM3F0WHJXQlcySEk3eFg0dUpTdmkvQWdxZUFMV2RzTGg1OHB4?= =?utf-8?B?UlBjUDNSUHl6LzlLQVFOMzE1QUxXUzh4QU44c1JReG5WdGNIVUlqc01KQjZG?= =?utf-8?B?OFZhMFA4QVAySStTVUpMR2pDVDRXVFdESlNRemlrK0o4V3IvT05Zb3M1L2ZR?= =?utf-8?B?b3U5MUNCbmdqamZjT1dCcHVMeHo2U0Qxb1l0Ujg2blJkTkVXUngyMTJGZTVJ?= =?utf-8?B?YXMzS1QwQTd5NGg0R0VOcFlBNXRtZzNVMEVMcm9sSHdQN3QzdFFOdVB4bDR2?= =?utf-8?B?THpkdG9KaFhtdk1BMDZPZ2pvNGxQNWNmajA3WU1PQURwZUJnUlFoTnB1NHRQ?= =?utf-8?B?UWUwOTFTQWtJYnJRcStGNTFCeTdIVnpVSFZZQ3E2VHVqVDAxeU9qN2VEamdy?= =?utf-8?B?eEdYWHJ5Z3pieWwxczVGbmkxaXlpdmltRWtRU1gxRHI4RlNmc0t4MU12aVk4?= =?utf-8?B?akpDYnFyQWYyaEFjYmdWcnFQOHY3UzAyNDk4YSsyWERXNlEvWHVqZTB1aWFv?= =?utf-8?B?Zlh5UjZVV3lDU1JjWUl0S1FiU3dPUFI4OW9UN1NlVFBmL2dwZkRZUGcwY3Ry?= =?utf-8?B?REhBZW5velI2a241WkpxZFFKM0EzQTcyUlR4TExTT1VpWlNyR2NmaVcrd0R1?= =?utf-8?B?SzRxWGtjdnBXRXdmR2l5azdtdXhlcDFzMUtRb2ZKbkhvRkVQaEk2TStJNjQ2?= =?utf-8?B?aFJTcVNLV2xFRjQ4SmhSUTQzTTl3V1BtVjVWNTdpYU14eWFCLzkza1JSdHRP?= =?utf-8?B?WkJaWWNvT2xoeEJSQzBKWWtyNmVuQ3piWjcyS09iQ0ZTM0tYQW1vVkRxUEJ0?= =?utf-8?Q?MF7VbfIiqu8TvbpsJVxZVnSrd?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SJ0PR12MB5676.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: f4399380-cd3b-40d4-06a0-08db48373f17 X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Apr 2023 22:23:52.1647 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: lWX5tPVwi7ftr1baBmgwDr2xso7PVl8TGV2WAPiSgs8WbboVNry/eXGySlLsf/g0zAiONy4i/dBGiKmQQZDVSg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB8477 X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FORGED_SPF_HELO, RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_NONE, T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGkgUm9iaW4gYW5kIFN1enVraSwNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBG cm9tOiBSb2JpbiBNdXJwaHkgPHJvYmluLm11cnBoeUBhcm0uY29tPg0KPiBTZW50OiBUaHVyc2Rh eSwgQXByaWwgMjcsIDIwMjMgNzoyMSBBTQ0KPiBUbzogQmVzYXIgV2ljYWtzb25vIDxid2ljYWtz b25vQG52aWRpYS5jb20+OyBzdXp1a2kucG91bG9zZUBhcm0uY29tOw0KPiBjYXRhbGluLm1hcmlu YXNAYXJtLmNvbTsgd2lsbEBrZXJuZWwub3JnOyBtYXJrLnJ1dGxhbmRAYXJtLmNvbQ0KPiBDYzog bGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnOyBsaW51eC1rZXJuZWxAdmdlci5r ZXJuZWwub3JnOyBsaW51eC0NCj4gdGVncmFAdmdlci5rZXJuZWwub3JnOyBUaGllcnJ5IFJlZGlu ZyA8dHJlZGluZ0BudmlkaWEuY29tPjsgSm9uYXRoYW4NCj4gSHVudGVyIDxqb25hdGhhbmhAbnZp ZGlhLmNvbT47IFZpa3JhbSBTZXRoaSA8dnNldGhpQG52aWRpYS5jb20+OyBSaWNoYXJkDQo+IFdp bGV5IDxyd2lsZXlAbnZpZGlhLmNvbT47IEVyaWMgRnVuc3RlbiA8ZWZ1bnN0ZW5AbnZpZGlhLmNv bT4NCj4gU3ViamVjdDogUmU6IFtQQVRDSCB2Ml0gcGVyZjogYXJtX2NzcG11OiBTZXBhcmF0ZSBB cm0gYW5kIHZlbmRvciBtb2R1bGUNCj4gDQo+IEV4dGVybmFsIGVtYWlsOiBVc2UgY2F1dGlvbiBv cGVuaW5nIGxpbmtzIG9yIGF0dGFjaG1lbnRzDQo+IA0KPiANCj4gT24gMjAyMy0wNC0xOCAwNzoy MCwgQmVzYXIgV2ljYWtzb25vIHdyb3RlOg0KPiA+IEFybSBDb3Jlc2lnaHQgUE1VIGRyaXZlciBj b25zaXN0cyBvZiBtYWluIHN0YW5kYXJkIGNvZGUgYW5kIHZlbmRvcg0KPiA+IGJhY2tlbmQgY29k ZS4gQm90aCBhcmUgY3VycmVudGx5IGJ1aWx0IGFzIGEgc2luZ2xlIG1vZHVsZS4NCj4gPiBUaGlz IHBhdGNoIGFkZHMgdmVuZG9yIHJlZ2lzdHJhdGlvbiBBUEkgdG8gc2VwYXJhdGUgdGhlIHR3byB0 bw0KPiA+IGtlZXAgdGhpbmdzIG1vZHVsYXIuIFZlbmRvciBtb2R1bGUgc2hhbGwgcmVnaXN0ZXIg dG8gdGhlIG1haW4NCj4gPiBtb2R1bGUgb24gbG9hZGluZyBhbmQgdHJpZ2dlciBkZXZpY2UgcmVw cm9iZS4NCj4gDQo+IEkgdGhpbmsgaXQgbWlnaHQgYmUgY29uc2lkZXJhYmx5IGNsZWFuZXIgYW5k IHNhZmVyIGlmIHRoZSBtYWluIGRyaXZlcg0KPiByZXRhaW5lZCBhdCBsZWFzdCBzb21lIGtub3ds ZWRnZSBvZiB0aGUgUE1JSURSIG1hdGNoZXMgYW5kIHVzZWQgdGhvc2UgdG8NCj4gZXhwbGljaXR5 IHJlcXVlc3QgdGhlIHJlbGV2YW50IG1vZHVsZS4gT3RoZXJ3aXNlLCBub3Qgb25seSBpcyB0aGVy ZSBhbg0KPiBhd2Z1bCBsb3Qgb2YgZmlkZGx5IGNvbXBsZXhpdHkgaGVyZSwgYnV0IHRoZXJlJ3Mg YWxzbyBxdWl0ZSBhIGJ1cmRlbiBvbg0KPiB0aGUgdXNlciB0byBrbm93IHdoaWNoIG1vZHVsZXMg dGhleSBoYXZlIHRvIGxvYWQgdG8gZ2V0IGZ1bGwNCj4gZnVuY3Rpb25hbGl0eSBvbiBhbnkgZ2l2 ZW4gc3lzdGVtLg0KDQpEbyB5b3UgbWVhbiBsaWtlIGtlZXAgdGhlIGV4aXN0aW5nIG1hdGNoIHRh YmxlIGFzIGEgd2hpdGVsaXN0LCBhbmQgYXNzb2NpYXRlIA0KZWFjaCBlbnRyeSB3aXRoIHRoZSBi YWNrZW5kIG1vZHVsZSBuYW1lIHRvIGxvYWQgaXQgZnJvbSB0aGUgbWFpbiBkcml2ZXIgPw0KDQo+ IA0KPiBGWUkgSSd2ZSBqdXN0IHN0YXJ0ZWQgd29ya2luZyBvbiBhZGRpbmcgZGV2aWNldHJlZSBz dXBwb3J0LCBhbmQgSSBkbw0KPiBuZWVkIHRoZSBnZW5lcmljIGFyY2hpdGVjdHVyYWwgZnVuY3Rp b25hbGl0eSB0byBrZWVwIHdvcmtpbmcgaW4gdGhlDQo+IGFic2VuY2Ugb2YgYW55IGltcC1kZWYg YmFja2VuZC4NCg0KVy5yLnQgdGhlIHJlcHJvYmUgZGlzY3Vzc2lvbiB3aXRoIFN1enVraSwgdGhp cyB3b3VsZCBtZWFuIHRoZSBleHBlY3RlZA0KYmVoYXZpb3IgaXMgdG8gYXR0YWNoIHRoZSBkZXZp Y2UgdG8gc3RhbmRhcmQgaW1wIGFzIGZhbGxiYWNrL2RlZmF1bHQuDQpTdXp1a2ksIG15IHByZWZl cmVuY2UgaXMgbm90IHN1cHBvcnRpbmcgZGVsYXllZCByZXByb2JlIG9uIGV2ZW50LT5kZXN0cm95 DQpkdWUgdG8gdGhlIHBvdGVudGlhbCBhY2Nlc3MgdG8gc3RhbGUgZGF0YS4gV2Ugc2hvdWxkIGp1 c3QgZmFpbCB0aGUgYmFja2VuZA0KcmVnaXN0cmF0aW9uIGlmIG9uZSBvZiB0aGUgZGV2aWNlIGlz IGluIHVzZS4NCg0KVGhhbmsgeW91IGZvciB3b3JraW5nIG9uIHRoZSBkZXZpY2V0cmVlIHN1cHBv cnQsIHBsZWFzZSBsZXQgdXMga25vdw0KaWYgd2UgY291bGQgaGVscC4NCg0KUmVnYXJkcywNCkJl c2FyDQoNCj4gDQo+IFRoYW5rcywNCj4gUm9iaW4uDQo+IA0KPiA+DQo+ID4gU2lnbmVkLW9mZi1i eTogQmVzYXIgV2ljYWtzb25vIDxid2ljYWtzb25vQG52aWRpYS5jb20+DQo+ID4gLS0tDQo+ID4N Cj4gPiBDaGFuZ2VzIGZyb20gdjE6DQo+ID4gICAqIEFkZGVkIHNlcGFyYXRlIEtjb25maWcgZW50 cnkgZm9yIG52aWRpYSBiYWNrZW5kDQo+ID4gICAqIEFkZGVkIGxvY2sgdG8gcHJvdGVjdCBhY2Nl c3NlcyB0byB0aGUgbGlzdHMNCj4gPiAgICogQWRkZWQgc3VwcG9ydCBmb3IgbWF0Y2hpbmcgc3Vi c2V0IGRldmljZXMgZnJvbSBhIHZlbmRvcg0KPiA+ICAgKiBBZGRlZCBzdGF0ZSB0cmFja2luZyB0 byBhdm9pZCByZXByb2JlIHdoZW4gYSBkZXZpY2UgaXMgaW4gdXNlDQo+ID4gdjE6IHR0cHM6Ly9s b3JlLmtlcm5lbC5vcmcvbGludXgtYXJtLWtlcm5lbC8yMDIzMDQwMzE2MzkwNS4yMDM1NC0xLQ0K PiBid2ljYWtzb25vQG52aWRpYS5jb20vVC8jdQ0KPiA+DQo+ID4gLS0tDQo+ID4gICBkcml2ZXJz L3BlcmYvYXJtX2NzcG11L0tjb25maWcgICAgICAgIHwgICA5ICstDQo+ID4gICBkcml2ZXJzL3Bl cmYvYXJtX2NzcG11L01ha2VmaWxlICAgICAgIHwgICA2ICstDQo+ID4gICBkcml2ZXJzL3BlcmYv YXJtX2NzcG11L2FybV9jc3BtdS5jICAgIHwgMjgwDQo+ICsrKysrKysrKysrKysrKysrKysrKysr LS0tDQo+ID4gICBkcml2ZXJzL3BlcmYvYXJtX2NzcG11L2FybV9jc3BtdS5oICAgIHwgIDMyICsr LQ0KPiA+ICAgZHJpdmVycy9wZXJmL2FybV9jc3BtdS9udmlkaWFfY3NwbXUuYyB8ICAzOSArKyst DQo+ID4gICBkcml2ZXJzL3BlcmYvYXJtX2NzcG11L252aWRpYV9jc3BtdS5oIHwgIDE3IC0tDQo+ ID4gICA2IGZpbGVzIGNoYW5nZWQsIDMyNSBpbnNlcnRpb25zKCspLCA1OCBkZWxldGlvbnMoLSkN Cj4gPiAgIGRlbGV0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3BlcmYvYXJtX2NzcG11L252aWRpYV9j c3BtdS5oDQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9wZXJmL2FybV9jc3BtdS9LY29u ZmlnDQo+IGIvZHJpdmVycy9wZXJmL2FybV9jc3BtdS9LY29uZmlnDQo+ID4gaW5kZXggMGIzMTZm ZTY5YTQ1Li44Y2U3YjQ1YTAwNzUgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9wZXJmL2FybV9j c3BtdS9LY29uZmlnDQo+ID4gKysrIGIvZHJpdmVycy9wZXJmL2FybV9jc3BtdS9LY29uZmlnDQo+ ID4gQEAgLTEsNiArMSw2IEBADQo+ID4gICAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwt Mi4wDQo+ID4gICAjDQo+ID4gLSMgQ29weXJpZ2h0IChjKSAyMDIyLCBOVklESUEgQ09SUE9SQVRJ T04gJiBBRkZJTElBVEVTLiBBbGwgcmlnaHRzDQo+IHJlc2VydmVkLg0KPiA+ICsjIENvcHlyaWdo dCAoYykgMjAyMi0yMDIzLCBOVklESUEgQ09SUE9SQVRJT04gJiBBRkZJTElBVEVTLiBBbGwgcmln aHRzDQo+IHJlc2VydmVkLg0KPiA+DQo+ID4gICBjb25maWcgQVJNX0NPUkVTSUdIVF9QTVVfQVJD SF9TWVNURU1fUE1VDQo+ID4gICAgICAgdHJpc3RhdGUgIkFSTSBDb3Jlc2lnaHQgQXJjaGl0ZWN0 dXJlIFBNVSINCj4gPiBAQCAtMTEsMyArMTEsMTAgQEAgY29uZmlnIEFSTV9DT1JFU0lHSFRfUE1V X0FSQ0hfU1lTVEVNX1BNVQ0KPiA+ICAgICAgICAgYmFzZWQgb24gQVJNIENvcmVTaWdodCBQTVUg YXJjaGl0ZWN0dXJlLiBOb3RlIHRoYXQgdGhpcyBQTVUNCj4gPiAgICAgICAgIGFyY2hpdGVjdHVy ZSBkb2VzIG5vdCBoYXZlIHJlbGF0aW9uc2hpcCB3aXRoIHRoZSBBUk0gQ29yZVNpZ2h0DQo+ID4g ICAgICAgICBTZWxmLUhvc3RlZCBUcmFjaW5nLg0KPiA+ICsNCj4gPiArY29uZmlnIE5WSURJQV9D T1JFU0lHSFRfUE1VX0FSQ0hfU1lTVEVNX1BNVQ0KPiA+ICsgICAgIHRyaXN0YXRlICJOVklESUEg Q29yZXNpZ2h0IEFyY2hpdGVjdHVyZSBQTVUiDQo+ID4gKyAgICAgZGVwZW5kcyBvbiBBUk1fQ09S RVNJR0hUX1BNVV9BUkNIX1NZU1RFTV9QTVUNCj4gPiArICAgICBoZWxwDQo+ID4gKyAgICAgICBQ cm92aWRlcyBOVklESUEgc3BlY2lmaWMgYXR0cmlidXRlcyBmb3IgcGVyZm9ybWFuY2UgbW9uaXRv cmluZyB1bml0DQo+ID4gKyAgICAgICAoUE1VKSBkZXZpY2VzIGJhc2VkIG9uIEFSTSBDb3JlU2ln aHQgUE1VIGFyY2hpdGVjdHVyZS4NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9wZXJmL2FybV9j c3BtdS9NYWtlZmlsZQ0KPiBiL2RyaXZlcnMvcGVyZi9hcm1fY3NwbXUvTWFrZWZpbGUNCj4gPiBp bmRleCBmZWRiMTdkZjk4MmQuLmY4YWUyMjQxMWQ1OSAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJz L3BlcmYvYXJtX2NzcG11L01ha2VmaWxlDQo+ID4gKysrIGIvZHJpdmVycy9wZXJmL2FybV9jc3Bt dS9NYWtlZmlsZQ0KPiA+IEBAIC0xLDYgKzEsNiBAQA0KPiA+IC0jIENvcHlyaWdodCAoYykgMjAy MiwgTlZJRElBIENPUlBPUkFUSU9OICYgQUZGSUxJQVRFUy4gQWxsIHJpZ2h0cw0KPiByZXNlcnZl ZC4NCj4gPiArIyBDb3B5cmlnaHQgKGMpIDIwMjItMjAyMywgTlZJRElBIENPUlBPUkFUSU9OICYg QUZGSUxJQVRFUy4gQWxsIHJpZ2h0cw0KPiByZXNlcnZlZC4NCj4gPiAgICMNCj4gPiAgICMgU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjANCj4gPg0KPiA+IC1vYmotJChDT05GSUdfQVJN X0NPUkVTSUdIVF9QTVVfQVJDSF9TWVNURU1fUE1VKSArPQ0KPiBhcm1fY3NwbXVfbW9kdWxlLm8N Cj4gPiAtYXJtX2NzcG11X21vZHVsZS15IDo9IGFybV9jc3BtdS5vIG52aWRpYV9jc3BtdS5vDQo+ ID4gK29iai0kKENPTkZJR19BUk1fQ09SRVNJR0hUX1BNVV9BUkNIX1NZU1RFTV9QTVUpICs9DQo+ IGFybV9jc3BtdS5vDQo+ID4gK29iai0kKENPTkZJR19OVklESUFfQ09SRVNJR0hUX1BNVV9BUkNI X1NZU1RFTV9QTVUpICs9DQo+IG52aWRpYV9jc3BtdS5vDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvcGVyZi9hcm1fY3NwbXUvYXJtX2NzcG11LmMNCj4gYi9kcml2ZXJzL3BlcmYvYXJtX2NzcG11 L2FybV9jc3BtdS5jDQo+ID4gaW5kZXggZTMxMzAyYWI3ZTM3Li5jNTVlYTJiNzQ0NTQgMTAwNjQ0 DQo+ID4gLS0tIGEvZHJpdmVycy9wZXJmL2FybV9jc3BtdS9hcm1fY3NwbXUuYw0KPiA+ICsrKyBi L2RyaXZlcnMvcGVyZi9hcm1fY3NwbXUvYXJtX2NzcG11LmMNCj4gPiBAQCAtMTYsNyArMTYsNyBA QA0KPiA+ICAgICogVGhlIHVzZXIgc2hvdWxkIHJlZmVyIHRvIHRoZSB2ZW5kb3IgdGVjaG5pY2Fs IGRvY3VtZW50YXRpb24gdG8gZ2V0DQo+IGRldGFpbHMNCj4gPiAgICAqIGFib3V0IHRoZSBzdXBw b3J0ZWQgZXZlbnRzLg0KPiA+ICAgICoNCj4gPiAtICogQ29weXJpZ2h0IChjKSAyMDIyLCBOVklE SUEgQ09SUE9SQVRJT04gJiBBRkZJTElBVEVTLiBBbGwgcmlnaHRzDQo+IHJlc2VydmVkLg0KPiA+ ICsgKiBDb3B5cmlnaHQgKGMpIDIwMjItMjAyMywgTlZJRElBIENPUlBPUkFUSU9OICYgQUZGSUxJ QVRFUy4gQWxsIHJpZ2h0cw0KPiByZXNlcnZlZC4NCj4gPiAgICAqDQo+ID4gICAgKi8NCj4gPg0K PiA+IEBAIC0yNSwxMyArMjUsMTQgQEANCj4gPiAgICNpbmNsdWRlIDxsaW51eC9jdHlwZS5oPg0K PiA+ICAgI2luY2x1ZGUgPGxpbnV4L2ludGVycnVwdC5oPg0KPiA+ICAgI2luY2x1ZGUgPGxpbnV4 L2lvLTY0LW5vbmF0b21pYy1sby1oaS5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvbGlzdC5oPg0K PiA+ICAgI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvbXV0 ZXguaD4NCj4gPiAgICNpbmNsdWRlIDxsaW51eC9wZXJmX2V2ZW50Lmg+DQo+ID4gICAjaW5jbHVk ZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+DQo+ID4gICAjaW5jbHVkZSA8YWNwaS9wcm9jZXNz b3IuaD4NCj4gPg0KPiA+ICAgI2luY2x1ZGUgImFybV9jc3BtdS5oIg0KPiA+IC0jaW5jbHVkZSAi bnZpZGlhX2NzcG11LmgiDQo+ID4NCj4gPiAgICNkZWZpbmUgUE1VTkFNRSAiYXJtX2NzcG11Ig0K PiA+ICAgI2RlZmluZSBEUlZOQU1FICJhcm0tY3MtYXJjaC1wbXUiDQo+ID4gQEAgLTExNywxMSAr MTE4LDUyIEBADQo+ID4gICAgKi8NCj4gPiAgICNkZWZpbmUgSElMT0hJX01BWF9QT0xMICAgICAx MDAwDQo+ID4NCj4gPiAtLyogSkVERUMtYXNzaWduZWQgSkVQMTA2IGlkZW50aWZpY2F0aW9uIGNv ZGUgKi8NCj4gPiAtI2RlZmluZSBBUk1fQ1NQTVVfSU1QTF9JRF9OVklESUEgICAgICAgICAgICAg MHgzNkINCj4gPiAtDQo+ID4gICBzdGF0aWMgdW5zaWduZWQgbG9uZyBhcm1fY3NwbXVfY3B1aHBf c3RhdGU7DQo+ID4NCj4gPiArLyogTGlzdCBvZiBDb3Jlc2lnaHQgUE1VIGluc3RhbmNlcyBpbiB0 aGUgc3lzdGVtLiAqLw0KPiA+ICtzdGF0aWMgTElTVF9IRUFEKGFybV9jc3BtdXMpOw0KPiA+ICsN Cj4gPiArLyogTGlzdCBvZiByZWdpc3RlcmVkIHZlbmRvciBiYWNrZW5kcy4gKi8NCj4gPiArc3Rh dGljIExJU1RfSEVBRChhcm1fY3NwbXVfaW1wbHMpOw0KPiA+ICsNCj4gPiArc3RhdGljIERFRklO RV9NVVRFWChhcm1fY3NwbXVfbG9jayk7DQo+ID4gKw0KPiA+ICsvKg0KPiA+ICsgKiBTdGF0ZSBv ZiB0aGUgZ2VuZXJpYyBkcml2ZXIuDQo+ID4gKyAqIDAgPT4gcmVnaXN0ZXJpbmcgYmFja2VuZC4N Cj4gPiArICogMSA9PiByZWFkeSB0byB1c2UuDQo+ID4gKyAqIDIgb3IgbW9yZSA9PiBpbiB1c2Uu DQo+ID4gKyAqLw0KPiA+ICsjZGVmaW5lIEFSTV9DU1BNVV9TVEFURV9SRUcgIDANCj4gPiArI2Rl ZmluZSBBUk1fQ1NQTVVfU1RBVEVfUkVBRFkgICAgICAgIDENCj4gPiArc3RhdGljIGF0b21pY190 IGFybV9jc3BtdV9zdGF0ZTsNCj4gPiArDQo+ID4gK3N0YXRpYyB2b2lkIGFybV9jc3BtdV9zdGF0 ZV9yZWFkeSh2b2lkKQ0KPiA+ICt7DQo+ID4gKyAgICAgYXRvbWljX3NldCgmYXJtX2NzcG11X3N0 YXRlLCBBUk1fQ1NQTVVfU1RBVEVfUkVBRFkpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMg Ym9vbCB0cnlfYXJtX2NzcG11X3N0YXRlX3JlZyh2b2lkKQ0KPiA+ICt7DQo+ID4gKyAgICAgY29u c3QgaW50IG9sZCA9IEFSTV9DU1BNVV9TVEFURV9SRUFEWTsNCj4gPiArICAgICBjb25zdCBpbnQg bmV3ID0gQVJNX0NTUE1VX1NUQVRFX1JFRzsNCj4gPiArDQo+ID4gKyAgICAgcmV0dXJuIGF0b21p Y19jbXB4Y2hnKCZhcm1fY3NwbXVfc3RhdGUsIG9sZCwgbmV3KSA9PSBvbGQ7DQo+ID4gK30NCj4g PiArDQo+ID4gK3N0YXRpYyBib29sIHRyeV9hcm1fY3NwbXVfc3RhdGVfZ2V0KHZvaWQpDQo+ID4g K3sNCj4gPiArICAgICByZXR1cm4gYXRvbWljX2luY19ub3RfemVybygmYXJtX2NzcG11X3N0YXRl KTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgYXJtX2NzcG11X3N0YXRlX3B1dCh2 b2lkKQ0KPiA+ICt7DQo+ID4gKyAgICAgaW50IHJldDsNCj4gPiArDQo+ID4gKyAgICAgcmV0ID0g YXRvbWljX2RlY19pZl9wb3NpdGl2ZSgmYXJtX2NzcG11X3N0YXRlKTsNCj4gPiArICAgICBXQVJO X09OKHJldCA8IDApOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICAgLyoNCj4gPiAgICAqIEluIENvcmVT aWdodCBQTVUgYXJjaGl0ZWN0dXJlLCBhbGwgb2YgdGhlIE1NSU8gcmVnaXN0ZXJzIGFyZSAzMi1i aXQNCj4gZXhjZXB0DQo+ID4gICAgKiBjb3VudGVyIHJlZ2lzdGVyLiBUaGUgY291bnRlciByZWdp c3RlciBjYW4gYmUgaW1wbGVtZW50ZWQgYXMgMzItYml0IG9yDQo+IDY0LWJpdA0KPiA+IEBAIC0z ODAsMjYgKzQyMiwxNjEgQEAgc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXANCj4gYXJtX2Nz cG11X2NwdW1hc2tfYXR0cl9ncm91cCA9IHsNCj4gPiAgIH07DQo+ID4NCj4gPiAgIHN0cnVjdCBp bXBsX21hdGNoIHsNCj4gPiAtICAgICB1MzIgcG1paWRyOw0KPiA+IC0gICAgIHUzMiBtYXNrOw0K PiA+IC0gICAgIGludCAoKmltcGxfaW5pdF9vcHMpKHN0cnVjdCBhcm1fY3NwbXUgKmNzcG11KTsN Cj4gPiArICAgICBzdHJ1Y3QgbGlzdF9oZWFkIG5leHQ7DQo+ID4gKyAgICAgc3RydWN0IGFybV9j c3BtdV9pbXBsX3BhcmFtIHBhcmFtOw0KPiA+ICAgfTsNCj4gPg0KPiA+IC1zdGF0aWMgY29uc3Qg c3RydWN0IGltcGxfbWF0Y2ggaW1wbF9tYXRjaFtdID0gew0KPiA+IC0gICAgIHsNCj4gPiAtICAg ICAgIC5wbWlpZHIgPSBBUk1fQ1NQTVVfSU1QTF9JRF9OVklESUEsDQo+ID4gLSAgICAgICAubWFz ayA9IEFSTV9DU1BNVV9QTUlJRFJfSU1QTEVNRU5URVIsDQo+ID4gLSAgICAgICAuaW1wbF9pbml0 X29wcyA9IG52X2NzcG11X2luaXRfb3BzDQo+ID4gLSAgICAgfSwNCj4gPiAtICAgICB7fQ0KPiA+ IC19Ow0KPiA+ICtzdGF0aWMgc3RydWN0IGFybV9jc3BtdV9pbXBsX3BhcmFtIHRvX2ltcGxfcGFy YW0oY29uc3Qgc3RydWN0DQo+IGFybV9jc3BtdSAqY3NwbXUpDQo+ID4gK3sNCj4gPiArICAgICBz dHJ1Y3QgYXJtX2NzcG11X2ltcGxfcGFyYW0gcmV0ID0gezB9Ow0KPiA+ICsgICAgIHUzMiBwbWlp ZHIgPSBjc3BtdS0+aW1wbC5wbWlpZHI7DQo+ID4gKw0KPiA+ICsgICAgIHJldC5pbXBsX2lkID0g RklFTERfR0VUKEFSTV9DU1BNVV9QTUlJRFJfSU1QTEVNRU5URVIsIHBtaWlkcik7DQo+ID4gKyAg ICAgcmV0LnB2ciA9IEZJRUxEX0dFVChBUk1fQ1NQTVVfUE1JSURSX1BWUiwgcG1paWRyKTsNCj4g PiArICAgICByZXQucHZyX21hc2sgPSBHRU5NQVNLKDMxLCAwKTsNCj4gPiArDQo+ID4gKyAgICAg cmV0dXJuIHJldDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGJvb2wgaW1wbF9wYXJhbV9t YXRjaChjb25zdCBzdHJ1Y3QgYXJtX2NzcG11X2ltcGxfcGFyYW0gKkEsDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGFybV9jc3BtdV9pbXBsX3BhcmFtICpCKQ0K PiA+ICt7DQo+ID4gKyAgICAgLyoNCj4gPiArICAgICAgKiBNYXRjaCBjcml0ZXJpYToNCj4gPiAr ICAgICAgKiAtIEltcGxlbWVudGVyIGlkIHNob3VsZCBtYXRjaC4NCj4gPiArICAgICAgKiAtIEEn cyBkZXZpY2UgaWQgaXMgd2l0aGluIEIncyByYW5nZSwgb3IgdmljZSB2ZXJzYS4gVGhpcyBhbGxv d3MNCj4gPiArICAgICAgKiAgIHZlbmRvciB0byByZWdpc3RlciBiYWNrZW5kIGZvciBhIHJhbmdl IG9mIGRldmljZXMuDQo+ID4gKyAgICAgICovDQo+ID4gKyAgICAgaWYgKChBLT5pbXBsX2lkID09 IEItPmltcGxfaWQpICYmDQo+ID4gKyAgICAgICAgICgoKEEtPnB2ciAmIEEtPnB2cl9tYXNrKSA9 PSAoQi0+cHZyICYgQS0+cHZyX21hc2spKSB8fA0KPiA+ICsgICAgICAgICAgKChBLT5wdnIgJiBC LT5wdnJfbWFzaykgPT0gKEItPnB2ciAmIEItPnB2cl9tYXNrKSkpKQ0KPiA+ICsgICAgICAgICAg ICAgcmV0dXJuIHRydWU7DQo+ID4gKw0KPiA+ICsgICAgIHJldHVybiBmYWxzZTsNCj4gPiArfQ0K PiA+ICsNCj4gPiArc3RhdGljIHN0cnVjdCBpbXBsX21hdGNoICppbXBsX21hdGNoX2ZpbmQoDQo+ ID4gKyAgICAgY29uc3Qgc3RydWN0IGFybV9jc3BtdV9pbXBsX3BhcmFtICppbXBsX3BhcmFtKQ0K PiA+ICt7DQo+ID4gKyAgICAgc3RydWN0IGltcGxfbWF0Y2ggKmltcGxfbWF0Y2g7DQo+ID4gKw0K PiA+ICsgICAgIGxpc3RfZm9yX2VhY2hfZW50cnkoaW1wbF9tYXRjaCwgJmFybV9jc3BtdV9pbXBs cywgbmV4dCkgew0KPiA+ICsgICAgICAgICAgICAgaWYgKGltcGxfcGFyYW1fbWF0Y2goaW1wbF9w YXJhbSwgJmltcGxfbWF0Y2gtPnBhcmFtKSkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIGltcGxfbWF0Y2g7DQo+ID4gKyAgICAgfQ0KPiA+ICsNCj4gPiArICAgICByZXR1cm4gTlVM TDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCBhcm1fY3NwbXVfaW1wbF9yZXByb2Jl KA0KPiA+ICsgICAgIGNvbnN0IHN0cnVjdCBhcm1fY3NwbXVfaW1wbF9wYXJhbSAqaW1wbF9wYXJh bSkNCj4gPiArew0KPiA+ICsgICAgIHN0cnVjdCBhcm1fY3NwbXUgKmNzcG11LCAqdGVtcDsNCj4g PiArICAgICBMSVNUX0hFQUQocmVwcm9iZV9saXN0KTsNCj4gPiArICAgICBpbnQgcmV0ID0gMDsN Cj4gPiArDQo+ID4gKyAgICAgbXV0ZXhfbG9jaygmYXJtX2NzcG11X2xvY2spOw0KPiA+ICsNCj4g PiArICAgICAvKiBNb3ZlIHRoZSBtYXRjaGluZyBkZXZpY2VzIHRvIHRlbXAgbGlzdCB0byBhdm9p ZCByZWN1cnNpdmUgbG9jay4gKi8NCj4gPiArICAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUo Y3NwbXUsIHRlbXAsICZhcm1fY3NwbXVzLCBuZXh0KSB7DQo+ID4gKyAgICAgICAgICAgICBzdHJ1 Y3QgYXJtX2NzcG11X2ltcGxfcGFyYW0gbWF0Y2hfcGFyYW0gPQ0KPiB0b19pbXBsX3BhcmFtKGNz cG11KTsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICBpZiAoaW1wbF9wYXJhbV9tYXRjaChpbXBs X3BhcmFtLCAmbWF0Y2hfcGFyYW0pKQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBsaXN0X21v dmUoJmNzcG11LT5uZXh0LCAmcmVwcm9iZV9saXN0KTsNCj4gPiArICAgICB9DQo+ID4gKw0KPiA+ ICsgICAgIG11dGV4X3VubG9jaygmYXJtX2NzcG11X2xvY2spOw0KPiA+ICsNCj4gPiArICAgICAv KiBSZXByb2JlIHRoZSBkZXZpY2VzLiAqLw0KPiA+ICsgICAgIGxpc3RfZm9yX2VhY2hfZW50cnlf c2FmZShjc3BtdSwgdGVtcCwgJnJlcHJvYmVfbGlzdCwgbmV4dCkgew0KPiA+ICsgICAgICAgICAg ICAgcmV0ID0gZGV2aWNlX3JlcHJvYmUoY3NwbXUtPmRldik7DQo+ID4gKyAgICAgICAgICAgICBp ZiAocmV0KSB7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIHByX2VycigiYXJtX2NzcG11IGZh aWwgcmVwcm9iZSBlcnI6ICVkXG4iLCByZXQpOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gcmV0Ow0KPiA+ICsgICAgICAgICAgICAgfQ0KPiA+ICsgICAgIH0NCj4gPiArDQo+ID4g KyAgICAgcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK2ludCBhcm1fY3NwbXVfaW1wbF9y ZWdpc3Rlcihjb25zdCBzdHJ1Y3QgYXJtX2NzcG11X2ltcGxfcGFyYW0NCj4gKmltcGxfcGFyYW0p DQo+ID4gK3sNCj4gPiArICAgICBzdHJ1Y3QgaW1wbF9tYXRjaCAqbWF0Y2g7DQo+ID4gKyAgICAg aW50IHJldCA9IDA7DQo+ID4gKw0KPiA+ICsgICAgIGlmICghdHJ5X2FybV9jc3BtdV9zdGF0ZV9y ZWcoKSkgew0KPiA+ICsgICAgICAgICAgICAgcHJfZXJyKCJhcm1fY3NwbXUgcmVnIGZhaWxlZCwg ZGV2aWNlKHMpIGlzIGluIHVzZVxuIik7DQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gLUVCVVNZ Ow0KPiA+ICsgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgbXV0ZXhfbG9jaygmYXJtX2NzcG11X2xv Y2spOw0KPiA+ICsNCj4gPiArICAgICBtYXRjaCA9IGltcGxfbWF0Y2hfZmluZChpbXBsX3BhcmFt KTsNCj4gPiArICAgICBpZiAobWF0Y2gpIHsNCj4gPiArICAgICAgICAgICAgIHByX2VycigiYXJt X2NzcG11IHJlZyBmYWlsZWQsIGltcGw6IDB4JXgsIHB2cjogMHgleCwgcHZyX21hc2s6DQo+IDB4 JXggYWxyZWFkeSBleGlzdHNcbiIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIG1hdGNoLT5w YXJhbS5pbXBsX2lkLCBtYXRjaC0+cGFyYW0ucHZyLA0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICBtYXRjaC0+cGFyYW0ucHZyX21hc2spOw0KPiA+ICsgICAgICAgICAgICAgbXV0ZXhfdW5sb2Nr KCZhcm1fY3NwbXVfbG9jayk7DQo+ID4gKyAgICAgICAgICAgICBhcm1fY3NwbXVfc3RhdGVfcmVh ZHkoKTsNCj4gPiArICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiA+ICsgICAgIH0NCj4g PiArDQo+ID4gKyAgICAgbWF0Y2ggPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgaW1wbF9tYXRjaCks IEdGUF9LRVJORUwpOw0KPiA+ICsgICAgIGlmICghbWF0Y2gpIHsNCj4gPiArICAgICAgICAgICAg IG11dGV4X3VubG9jaygmYXJtX2NzcG11X2xvY2spOw0KPiA+ICsgICAgICAgICAgICAgYXJtX2Nz cG11X3N0YXRlX3JlYWR5KCk7DQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsNCj4g PiArICAgICB9DQo+ID4gKw0KPiA+ICsgICAgIG1lbWNweSgmbWF0Y2gtPnBhcmFtLCBpbXBsX3Bh cmFtLCBzaXplb2YobWF0Y2gtPnBhcmFtKSk7DQo+ID4gKyAgICAgbGlzdF9hZGQoJm1hdGNoLT5u ZXh0LCAmYXJtX2NzcG11X2ltcGxzKTsNCj4gPiArDQo+ID4gKyAgICAgbXV0ZXhfdW5sb2NrKCZh cm1fY3NwbXVfbG9jayk7DQo+ID4gKw0KPiA+ICsgICAgIC8qIFJlcGxhY2UgZ2VuZXJpYyBiYWNr ZW5kIHdpdGggdmVuZG9yIGltcGxlbWVudGF0aW9uLiAqLw0KPiA+ICsgICAgIHJldCA9IGFybV9j c3BtdV9pbXBsX3JlcHJvYmUoaW1wbF9wYXJhbSk7DQo+ID4gKw0KPiA+ICsgICAgIGlmIChyZXQp DQo+ID4gKyAgICAgICAgICAgICBhcm1fY3NwbXVfaW1wbF91bnJlZ2lzdGVyKGltcGxfcGFyYW0p Ow0KPiA+ICsNCj4gPiArICAgICBhcm1fY3NwbXVfc3RhdGVfcmVhZHkoKTsNCj4gPiArDQo+ID4g KyAgICAgcmV0dXJuIHJldDsNCj4gPiArfQ0KPiA+ICtFWFBPUlRfU1lNQk9MX0dQTChhcm1fY3Nw bXVfaW1wbF9yZWdpc3Rlcik7DQo+ID4gKw0KPiA+ICt2b2lkIGFybV9jc3BtdV9pbXBsX3VucmVn aXN0ZXIoY29uc3Qgc3RydWN0IGFybV9jc3BtdV9pbXBsX3BhcmFtDQo+ICppbXBsX3BhcmFtKQ0K PiA+ICt7DQo+ID4gKyAgICAgc3RydWN0IGltcGxfbWF0Y2ggKm1hdGNoOw0KPiA+ICsNCj4gPiAr ICAgICBtdXRleF9sb2NrKCZhcm1fY3NwbXVfbG9jayk7DQo+ID4gKw0KPiA+ICsgICAgIG1hdGNo ID0gaW1wbF9tYXRjaF9maW5kKGltcGxfcGFyYW0pOw0KPiA+ICsgICAgIGlmICghbWF0Y2gpIHsN Cj4gPiArICAgICAgICAgICAgIHByX2VycigiYXJtX2NzcG11IHVucmVnIGZhaWxlZCwgdW5hYmxl IHRvIGZpbmQgaW1wbDogMHgleCwgcHZyOg0KPiAweCV4LCBwdnJfbWFzazogMHgleFxuIiwNCj4g PiArICAgICAgICAgICAgICAgICAgICAgaW1wbF9wYXJhbS0+aW1wbF9pZCwgaW1wbF9wYXJhbS0+ cHZyLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBpbXBsX3BhcmFtLT5wdnJfbWFzayk7DQo+ ID4gKyAgICAgICAgICAgICBtdXRleF91bmxvY2soJmFybV9jc3BtdV9sb2NrKTsNCj4gPiArICAg ICAgICAgICAgIHJldHVybjsNCj4gPiArICAgICB9DQo+ID4gKw0KPiA+ICsgICAgIGxpc3RfZGVs KCZtYXRjaC0+bmV4dCk7DQo+ID4gKyAgICAga2ZyZWUobWF0Y2gpOw0KPiA+ICsNCj4gPiArICAg ICBtdXRleF91bmxvY2soJmFybV9jc3BtdV9sb2NrKTsNCj4gPiArDQo+ID4gKyAgICAgLyogUmUt YXR0YWNoIGRldmljZXMgdG8gc3RhbmRhcmQgZHJpdmVyLiAqLw0KPiA+ICsgICAgIGFybV9jc3Bt dV9pbXBsX3JlcHJvYmUoaW1wbF9wYXJhbSk7DQo+ID4gK30NCj4gPiArRVhQT1JUX1NZTUJPTF9H UEwoYXJtX2NzcG11X2ltcGxfdW5yZWdpc3Rlcik7DQo+ID4NCj4gPiAgIHN0YXRpYyBpbnQgYXJt X2NzcG11X2luaXRfaW1wbF9vcHMoc3RydWN0IGFybV9jc3BtdSAqY3NwbXUpDQo+ID4gICB7DQo+ ID4gLSAgICAgaW50IHJldDsNCj4gPiArICAgICBpbnQgcmV0ID0gMDsNCj4gPiAgICAgICBzdHJ1 Y3QgYWNwaV9hcG10X25vZGUgKmFwbXRfbm9kZSA9IGNzcG11LT5hcG10X25vZGU7DQo+ID4gICAg ICAgc3RydWN0IGFybV9jc3BtdV9pbXBsX29wcyAqaW1wbF9vcHMgPSAmY3NwbXUtPmltcGwub3Bz Ow0KPiA+IC0gICAgIGNvbnN0IHN0cnVjdCBpbXBsX21hdGNoICptYXRjaCA9IGltcGxfbWF0Y2g7 DQo+ID4gKyAgICAgc3RydWN0IGFybV9jc3BtdV9pbXBsX3BhcmFtIG1hdGNoX3BhcmFtID0gezB9 Ow0KPiA+ICsgICAgIGNvbnN0IHN0cnVjdCBpbXBsX21hdGNoICptYXRjaDsNCj4gPg0KPiA+ICAg ICAgIC8qDQo+ID4gICAgICAgICogR2V0IFBNVSBpbXBsZW1lbnRlciBhbmQgcHJvZHVjdCBpZCBm cm9tIEFQTVQgbm9kZS4NCj4gPiBAQCAtNDEwLDE5ICs1ODcsMjMgQEAgc3RhdGljIGludCBhcm1f Y3NwbXVfaW5pdF9pbXBsX29wcyhzdHJ1Y3QNCj4gYXJtX2NzcG11ICpjc3BtdSkNCj4gPiAgICAg ICAgICAgICAgIChhcG10X25vZGUtPmltcGxfaWQpID8gYXBtdF9ub2RlLT5pbXBsX2lkIDoNCj4g PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZGwoY3NwbXUtPmJhc2Uw ICsgUE1JSURSKTsNCj4gPg0KPiA+IC0gICAgIC8qIEZpbmQgaW1wbGVtZW50ZXIgc3BlY2lmaWMg YXR0cmlidXRlIG9wcy4gKi8NCj4gPiAtICAgICBmb3IgKDsgbWF0Y2gtPnBtaWlkcjsgbWF0Y2gr Kykgew0KPiA+IC0gICAgICAgICAgICAgY29uc3QgdTMyIG1hc2sgPSBtYXRjaC0+bWFzazsNCj4g PiArICAgICBjc3BtdS0+aW1wbC5tb2R1bGUgPSBUSElTX01PRFVMRTsNCj4gPg0KPiA+IC0gICAg ICAgICAgICAgaWYgKChtYXRjaC0+cG1paWRyICYgbWFzaykgPT0gKGNzcG11LT5pbXBsLnBtaWlk ciAmIG1hc2spKSB7DQo+ID4gLSAgICAgICAgICAgICAgICAgICAgIHJldCA9IG1hdGNoLT5pbXBs X2luaXRfb3BzKGNzcG11KTsNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgaWYgKHJldCkNCj4g PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KPiA+ICsgICAgIG11 dGV4X2xvY2soJmFybV9jc3BtdV9sb2NrKTsNCj4gPg0KPiA+IC0gICAgICAgICAgICAgICAgICAg ICBicmVhazsNCj4gPiAtICAgICAgICAgICAgIH0NCj4gPiArICAgICAvKiBGaW5kIGltcGxlbWVu dGVyIHNwZWNpZmljIGF0dHJpYnV0ZSBvcHMuICovDQo+ID4gKyAgICAgbWF0Y2hfcGFyYW0gPSB0 b19pbXBsX3BhcmFtKGNzcG11KTsNCj4gPiArICAgICBtYXRjaCA9IGltcGxfbWF0Y2hfZmluZCgm bWF0Y2hfcGFyYW0pOw0KPiA+ICsgICAgIGlmIChtYXRjaCkgew0KPiA+ICsgICAgICAgICAgICAg Y3NwbXUtPmltcGwubW9kdWxlID0gbWF0Y2gtPnBhcmFtLm1vZHVsZTsNCj4gPiArICAgICAgICAg ICAgIHJldCA9IG1hdGNoLT5wYXJhbS5pbXBsX2luaXRfb3BzKGNzcG11KTsNCj4gPiAgICAgICB9 DQo+ID4NCj4gPiArICAgICBtdXRleF91bmxvY2soJmFybV9jc3BtdV9sb2NrKTsNCj4gPiArDQo+ ID4gKyAgICAgaWYgKHJldCkNCj4gPiArICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+ID4gKw0K PiA+ICAgICAgIC8qIFVzZSBkZWZhdWx0IGNhbGxiYWNrcyBpZiBpbXBsZW1lbnRlciBkb2Vzbid0 IHByb3ZpZGUgb25lLiAqLw0KPiA+ICAgICAgIENIRUNLX0RFRkFVTFRfSU1QTF9PUFMoaW1wbF9v cHMsIGdldF9ldmVudF9hdHRycyk7DQo+ID4gICAgICAgQ0hFQ0tfREVGQVVMVF9JTVBMX09QUyhp bXBsX29wcywgZ2V0X2Zvcm1hdF9hdHRycyk7DQo+ID4gQEAgLTYzOSw2ICs4MjAsMTEgQEAgc3Rh dGljIGludCBhcm1fY3NwbXVfZXZlbnRfaW5pdChzdHJ1Y3QgcGVyZl9ldmVudA0KPiAqZXZlbnQp DQo+ID4gICAgICAgc3RydWN0IGFybV9jc3BtdSAqY3NwbXU7DQo+ID4gICAgICAgc3RydWN0IGh3 X3BlcmZfZXZlbnQgKmh3YyA9ICZldmVudC0+aHc7DQo+ID4NCj4gPiArICAgICBpZiAoIXRyeV9h cm1fY3NwbXVfc3RhdGVfZ2V0KCkpIHsNCj4gPiArICAgICAgICAgICAgIHByX2VycigiYXJtX2Nz cG11IGV2ZW50X2luaXQgZmFpbDogZHJpdmVyIGlzIHJlcHJvYmluZ1xuIik7DQo+ID4gKyAgICAg ICAgICAgICByZXR1cm4gLUVCVVNZOw0KPiA+ICsgICAgIH0NCj4gPiArDQo+ID4gICAgICAgY3Nw bXUgPSB0b19hcm1fY3NwbXUoZXZlbnQtPnBtdSk7DQo+ID4NCj4gPiAgICAgICAvKg0KPiA+IEBA IC02NDgsMTIgKzgzNCwxNCBAQCBzdGF0aWMgaW50IGFybV9jc3BtdV9ldmVudF9pbml0KHN0cnVj dA0KPiBwZXJmX2V2ZW50ICpldmVudCkNCj4gPiAgICAgICBpZiAoaXNfc2FtcGxpbmdfZXZlbnQo ZXZlbnQpKSB7DQo+ID4gICAgICAgICAgICAgICBkZXZfZGJnKGNzcG11LT5wbXUuZGV2LA0KPiA+ ICAgICAgICAgICAgICAgICAgICAgICAiQ2FuJ3Qgc3VwcG9ydCBzYW1wbGluZyBldmVudHNcbiIp Ow0KPiA+ICsgICAgICAgICAgICAgYXJtX2NzcG11X3N0YXRlX3B1dCgpOw0KPiA+ICAgICAgICAg ICAgICAgcmV0dXJuIC1FT1BOT1RTVVBQOw0KPiA+ICAgICAgIH0NCj4gPg0KPiA+ICAgICAgIGlm IChldmVudC0+Y3B1IDwgMCB8fCBldmVudC0+YXR0YWNoX3N0YXRlICYgUEVSRl9BVFRBQ0hfVEFT Sykgew0KPiA+ICAgICAgICAgICAgICAgZGV2X2RiZyhjc3BtdS0+cG11LmRldiwNCj4gPiAgICAg ICAgICAgICAgICAgICAgICAgIkNhbid0IHN1cHBvcnQgcGVyLXRhc2sgY291bnRlcnNcbiIpOw0K PiA+ICsgICAgICAgICAgICAgYXJtX2NzcG11X3N0YXRlX3B1dCgpOw0KPiA+ICAgICAgICAgICAg ICAgcmV0dXJuIC1FSU5WQUw7DQo+ID4gICAgICAgfQ0KPiA+DQo+ID4gQEAgLTY2NCwxNiArODUy LDIxIEBAIHN0YXRpYyBpbnQgYXJtX2NzcG11X2V2ZW50X2luaXQoc3RydWN0DQo+IHBlcmZfZXZl bnQgKmV2ZW50KQ0KPiA+ICAgICAgIGlmICghY3B1bWFza190ZXN0X2NwdShldmVudC0+Y3B1LCAm Y3NwbXUtPmFzc29jaWF0ZWRfY3B1cykpIHsNCj4gPiAgICAgICAgICAgICAgIGRldl9kYmcoY3Nw bXUtPnBtdS5kZXYsDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICJSZXF1ZXN0ZWQgY3B1IGlz IG5vdCBhc3NvY2lhdGVkIHdpdGggdGhlIFBNVVxuIik7DQo+ID4gKyAgICAgICAgICAgICBhcm1f Y3NwbXVfc3RhdGVfcHV0KCk7DQo+ID4gICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4g PiAgICAgICB9DQo+ID4NCj4gPiAgICAgICAvKiBFbmZvcmNlIHRoZSBjdXJyZW50IGFjdGl2ZSBD UFUgdG8gaGFuZGxlIHRoZSBldmVudHMgaW4gdGhpcyBQTVUuICovDQo+ID4gICAgICAgZXZlbnQt PmNwdSA9IGNwdW1hc2tfZmlyc3QoJmNzcG11LT5hY3RpdmVfY3B1KTsNCj4gPiAtICAgICBpZiAo ZXZlbnQtPmNwdSA+PSBucl9jcHVfaWRzKQ0KPiA+ICsgICAgIGlmIChldmVudC0+Y3B1ID49IG5y X2NwdV9pZHMpIHsNCj4gPiArICAgICAgICAgICAgIGFybV9jc3BtdV9zdGF0ZV9wdXQoKTsNCj4g PiAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiA+ICsgICAgIH0NCj4gPg0KPiA+IC0g ICAgIGlmICghYXJtX2NzcG11X3ZhbGlkYXRlX2dyb3VwKGV2ZW50KSkNCj4gPiArICAgICBpZiAo IWFybV9jc3BtdV92YWxpZGF0ZV9ncm91cChldmVudCkpIHsNCj4gPiArICAgICAgICAgICAgIGFy bV9jc3BtdV9zdGF0ZV9wdXQoKTsNCj4gPiAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0K PiA+ICsgICAgIH0NCj4gPg0KPiA+ICAgICAgIC8qDQo+ID4gICAgICAgICogVGhlIGxvZ2ljYWwg Y291bnRlciBpZCBpcyB0cmFja2VkIHdpdGggaHdfcGVyZl9ldmVudC5leHRyYV9yZWcuaWR4Lg0K PiA+IEBAIC02ODYsNiArODc5LDggQEAgc3RhdGljIGludCBhcm1fY3NwbXVfZXZlbnRfaW5pdChz dHJ1Y3QgcGVyZl9ldmVudA0KPiAqZXZlbnQpDQo+ID4gICAgICAgaHdjLT5leHRyYV9yZWcuaWR4 ID0gLTE7DQo+ID4gICAgICAgaHdjLT5jb25maWcgPSBjc3BtdS0+aW1wbC5vcHMuZXZlbnRfdHlw ZShldmVudCk7DQo+ID4NCj4gPiArICAgICBhcm1fY3NwbXVfc3RhdGVfcHV0KCk7DQo+ID4gKw0K PiA+ICAgICAgIHJldHVybiAwOw0KPiA+ICAgfQ0KPiA+DQo+ID4gQEAgLTg2NCwxMyArMTA1OSwy MiBAQCBzdGF0aWMgaW50IGFybV9jc3BtdV9hZGQoc3RydWN0IHBlcmZfZXZlbnQNCj4gKmV2ZW50 LCBpbnQgZmxhZ3MpDQo+ID4gICAgICAgc3RydWN0IGh3X3BlcmZfZXZlbnQgKmh3YyA9ICZldmVu dC0+aHc7DQo+ID4gICAgICAgaW50IGlkeDsNCj4gPg0KPiA+ICsgICAgIGlmICghdHJ5X2FybV9j c3BtdV9zdGF0ZV9nZXQoKSkgew0KPiA+ICsgICAgICAgICAgICAgcHJfZXJyKCJhcm1fY3NwbXUg ZXZlbnRfaW5pdCBmYWlsOiBkcml2ZXIgaXMgcmVwcm9iaW5nXG4iKTsNCj4gPiArICAgICAgICAg ICAgIHJldHVybiAtRUJVU1k7DQo+ID4gKyAgICAgfQ0KPiA+ICsNCj4gPiAgICAgICBpZiAoV0FS Tl9PTl9PTkNFKCFjcHVtYXNrX3Rlc3RfY3B1KHNtcF9wcm9jZXNzb3JfaWQoKSwNCj4gPiAtICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjc3BtdS0+YXNzb2NpYXRlZF9j cHVzKSkpDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY3Nw bXUtPmFzc29jaWF0ZWRfY3B1cykpKSB7DQo+ID4gKyAgICAgICAgICAgICBhcm1fY3NwbXVfc3Rh dGVfcHV0KCk7DQo+ID4gICAgICAgICAgICAgICByZXR1cm4gLUVOT0VOVDsNCj4gPiArICAgICB9 DQo+ID4NCj4gPiAgICAgICBpZHggPSBhcm1fY3NwbXVfZ2V0X2V2ZW50X2lkeChod19ldmVudHMs IGV2ZW50KTsNCj4gPiAtICAgICBpZiAoaWR4IDwgMCkNCj4gPiArICAgICBpZiAoaWR4IDwgMCkg ew0KPiA+ICsgICAgICAgICAgICAgYXJtX2NzcG11X3N0YXRlX3B1dCgpOw0KPiA+ICAgICAgICAg ICAgICAgcmV0dXJuIGlkeDsNCj4gPiArICAgICB9DQo+ID4NCj4gPiAgICAgICBod19ldmVudHMt PmV2ZW50c1tpZHhdID0gZXZlbnQ7DQo+ID4gICAgICAgaHdjLT5pZHggPSB0b19waHlzX2lkeChj c3BtdSwgaWR4KTsNCj4gPiBAQCAtOTAwLDYgKzExMDQsOCBAQCBzdGF0aWMgdm9pZCBhcm1fY3Nw bXVfZGVsKHN0cnVjdCBwZXJmX2V2ZW50DQo+ICpldmVudCwgaW50IGZsYWdzKQ0KPiA+ICAgICAg IGNsZWFyX2JpdChpZHgsIGh3X2V2ZW50cy0+dXNlZF9jdHJzKTsNCj4gPg0KPiA+ICAgICAgIHBl cmZfZXZlbnRfdXBkYXRlX3VzZXJwYWdlKGV2ZW50KTsNCj4gPiArDQo+ID4gKyAgICAgYXJtX2Nz cG11X3N0YXRlX3B1dCgpOw0KPiA+ICAgfQ0KPiA+DQo+ID4gICBzdGF0aWMgdm9pZCBhcm1fY3Nw bXVfcmVhZChzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQpDQo+ID4gQEAgLTExNTQsNyArMTM2MCw3 IEBAIHN0YXRpYyBpbnQgYXJtX2NzcG11X3JlZ2lzdGVyX3BtdShzdHJ1Y3QNCj4gYXJtX2NzcG11 ICpjc3BtdSkNCj4gPg0KPiA+ICAgICAgIGNzcG11LT5wbXUgPSAoc3RydWN0IHBtdSl7DQo+ID4g ICAgICAgICAgICAgICAudGFza19jdHhfbnIgICAgPSBwZXJmX2ludmFsaWRfY29udGV4dCwNCj4g PiAtICAgICAgICAgICAgIC5tb2R1bGUgICAgICAgICA9IFRISVNfTU9EVUxFLA0KPiA+ICsgICAg ICAgICAgICAgLm1vZHVsZSAgICAgICAgID0gY3NwbXUtPmltcGwubW9kdWxlLA0KPiA+ICAgICAg ICAgICAgICAgLnBtdV9lbmFibGUgICAgID0gYXJtX2NzcG11X2VuYWJsZSwNCj4gPiAgICAgICAg ICAgICAgIC5wbXVfZGlzYWJsZSAgICA9IGFybV9jc3BtdV9kaXNhYmxlLA0KPiA+ICAgICAgICAg ICAgICAgLmV2ZW50X2luaXQgICAgID0gYXJtX2NzcG11X2V2ZW50X2luaXQsDQo+ID4gQEAgLTEy MDUsNiArMTQxMSwxMCBAQCBzdGF0aWMgaW50IGFybV9jc3BtdV9kZXZpY2VfcHJvYmUoc3RydWN0 DQo+IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4gPiAgICAgICBpZiAocmV0KQ0KPiA+ICAgICAg ICAgICAgICAgcmV0dXJuIHJldDsNCj4gPg0KPiA+ICsgICAgIG11dGV4X2xvY2soJmFybV9jc3Bt dV9sb2NrKTsNCj4gPiArICAgICBsaXN0X2FkZCgmY3NwbXUtPm5leHQsICZhcm1fY3NwbXVzKTsN Cj4gPiArICAgICBtdXRleF91bmxvY2soJmFybV9jc3BtdV9sb2NrKTsNCj4gPiArDQo+ID4gICAg ICAgcmV0dXJuIDA7DQo+ID4gICB9DQo+ID4NCj4gPiBAQCAtMTIxMiw2ICsxNDIyLDEwIEBAIHN0 YXRpYyBpbnQgYXJtX2NzcG11X2RldmljZV9yZW1vdmUoc3RydWN0DQo+IHBsYXRmb3JtX2Rldmlj ZSAqcGRldikNCj4gPiAgIHsNCj4gPiAgICAgICBzdHJ1Y3QgYXJtX2NzcG11ICpjc3BtdSA9IHBs YXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOw0KPiA+DQo+ID4gKyAgICAgbXV0ZXhfbG9jaygmYXJt X2NzcG11X2xvY2spOw0KPiA+ICsgICAgIGxpc3RfZGVsKCZjc3BtdS0+bmV4dCk7DQo+ID4gKyAg ICAgbXV0ZXhfdW5sb2NrKCZhcm1fY3NwbXVfbG9jayk7DQo+ID4gKw0KPiA+ICAgICAgIHBlcmZf cG11X3VucmVnaXN0ZXIoJmNzcG11LT5wbXUpOw0KPiA+ICAgICAgIGNwdWhwX3N0YXRlX3JlbW92 ZV9pbnN0YW5jZShhcm1fY3NwbXVfY3B1aHBfc3RhdGUsICZjc3BtdS0NCj4gPmNwdWhwX25vZGUp Ow0KPiA+DQo+ID4gQEAgLTEyODEsNiArMTQ5NSw4IEBAIHN0YXRpYyBpbnQgX19pbml0IGFybV9j c3BtdV9pbml0KHZvaWQpDQo+ID4gICB7DQo+ID4gICAgICAgaW50IHJldDsNCj4gPg0KPiA+ICsg ICAgIGFybV9jc3BtdV9zdGF0ZV9yZWFkeSgpOw0KPiA+ICsNCj4gPiAgICAgICByZXQgPSBjcHVo cF9zZXR1cF9zdGF0ZV9tdWx0aShDUFVIUF9BUF9PTkxJTkVfRFlOLA0KPiA+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgInBlcmYvYXJtL2NzcG11Om9ubGluZSIsDQo+ID4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcm1fY3NwbXVfY3B1X29ubGlu ZSwNCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9wZXJmL2FybV9jc3BtdS9hcm1fY3NwbXUuaA0K PiBiL2RyaXZlcnMvcGVyZi9hcm1fY3NwbXUvYXJtX2NzcG11LmgNCj4gPiBpbmRleCA1MTMyM2Ix NzVhNGEuLmNmMzQ1OGQ5ZmM2MyAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL3BlcmYvYXJtX2Nz cG11L2FybV9jc3BtdS5oDQo+ID4gKysrIGIvZHJpdmVycy9wZXJmL2FybV9jc3BtdS9hcm1fY3Nw bXUuaA0KPiA+IEBAIC0xLDcgKzEsNyBAQA0KPiA+ICAgLyogU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IEdQTC0yLjANCj4gPiAgICAqDQo+ID4gICAgKiBBUk0gQ29yZVNpZ2h0IEFyY2hpdGVjdHVy ZSBQTVUgZHJpdmVyLg0KPiA+IC0gKiBDb3B5cmlnaHQgKGMpIDIwMjIsIE5WSURJQSBDT1JQT1JB VElPTiAmIEFGRklMSUFURVMuIEFsbCByaWdodHMNCj4gcmVzZXJ2ZWQuDQo+ID4gKyAqIENvcHly aWdodCAoYykgMjAyMi0yMDIzLCBOVklESUEgQ09SUE9SQVRJT04gJiBBRkZJTElBVEVTLiBBbGwg cmlnaHRzDQo+IHJlc2VydmVkLg0KPiA+ICAgICoNCj4gPiAgICAqLw0KPiA+DQo+ID4gQEAgLTY4 LDcgKzY4LDEwIEBADQo+ID4NCj4gPiAgIC8qIFBNSUlEUiByZWdpc3RlciBmaWVsZCAqLw0KPiA+ ICAgI2RlZmluZSBBUk1fQ1NQTVVfUE1JSURSX0lNUExFTUVOVEVSICAgICAgICBHRU5NQVNLKDEx LCAwKQ0KPiA+ICsjZGVmaW5lIEFSTV9DU1BNVV9QTUlJRFJfUkVWSVNJT04gICAgR0VOTUFTSygx NSwgMTIpDQo+ID4gKyNkZWZpbmUgQVJNX0NTUE1VX1BNSUlEUl9WQVJJQU5UICAgICBHRU5NQVNL KDE5LCAxNikNCj4gPiAgICNkZWZpbmUgQVJNX0NTUE1VX1BNSUlEUl9QUk9EVUNUSUQgIEdFTk1B U0soMzEsIDIwKQ0KPiA+ICsjZGVmaW5lIEFSTV9DU1BNVV9QTUlJRFJfUFZSICAgICAgICAgR0VO TUFTSygzMSwgMTIpDQo+ID4NCj4gPiAgIHN0cnVjdCBhcm1fY3NwbXU7DQo+ID4NCj4gPiBAQCAt MTA3LDE1ICsxMTAsMzYgQEAgc3RydWN0IGFybV9jc3BtdV9pbXBsX29wcyB7DQo+ID4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwg aW50IHVudXNlZCk7DQo+ID4gICB9Ow0KPiA+DQo+ID4gKy8qIFZlbmRvci9pbXBsZW1lbnRlciBy ZWdpc3RyYXRpb24gcGFyYW1ldGVyLiAqLw0KPiA+ICtzdHJ1Y3QgYXJtX2NzcG11X2ltcGxfcGFy YW0gew0KPiA+ICsgICAgIC8qIEpFREVDIGFzc2lnbmVkIGltcGxlbWVudGVyIGlkIG9mIHRoZSB2 ZW5kb3IuICovDQo+ID4gKyAgICAgdTMyIGltcGxfaWQ7DQo+ID4gKyAgICAgLyoNCj4gPiArICAg ICAgKiBUaGUgcHZyIHZhbHVlIGFuZCBtYXNrIGRlc2NyaWJlcyB0aGUgZGV2aWNlIGlkcyBjb3Zl cmVkIGJ5IHRoZQ0KPiA+ICsgICAgICAqIHZlbmRvciBiYWNrZW5kLiBwdnIgY29udGFpbnMgdGhl IHBhdHRlcm4gb2YgYWNjZXB0YWJsZSBwcm9kdWN0LA0KPiA+ICsgICAgICAqIHZhcmlhbnQsIGFu ZCByZXZpc2lvbiBiaXRzIGZyb20gZGV2aWNlJ3MgUE1JSURSLiBwdnJfbWFzayBjb250YWlucw0K PiA+ICsgICAgICAqIHRoZSByZWxldmFudCBiaXRzIHdoZW4gY29tcGFyaW5nIHB2ci4gMCB2YWx1 ZSBvbiB0aGUgbWFzayBtZWFucyBhbnkNCj4gPiArICAgICAgKiBwdnIgdmFsdWUgaXMgc3VwcG9y dGVkLg0KPiA+ICsgICAgICAqLw0KPiA+ICsgICAgIHUzMiBwdnI7DQo+ID4gKyAgICAgdTMyIHB2 cl9tYXNrOw0KPiA+ICsgICAgIC8qIEJhY2tlbmQgbW9kdWxlLiAqLw0KPiA+ICsgICAgIHN0cnVj dCBtb2R1bGUgKm1vZHVsZTsNCj4gPiArICAgICAvKiBDYWxsYmFjayB0byB2ZW5kb3IgYmFja2Vu ZCB0byBpbml0IGFybV9jc3BtdV9pbXBsOjpvcHMuICovDQo+ID4gKyAgICAgaW50ICgqaW1wbF9p bml0X29wcykoc3RydWN0IGFybV9jc3BtdSAqY3NwbXUpOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiAg IC8qIFZlbmRvci9pbXBsZW1lbnRlciBkZXNjcmlwdG9yLiAqLw0KPiA+ICAgc3RydWN0IGFybV9j c3BtdV9pbXBsIHsNCj4gPiAgICAgICB1MzIgcG1paWRyOw0KPiA+ICAgICAgIHN0cnVjdCBhcm1f Y3NwbXVfaW1wbF9vcHMgb3BzOw0KPiA+ICsgICAgIHN0cnVjdCBtb2R1bGUgKm1vZHVsZTsNCj4g PiAgICAgICB2b2lkICpjdHg7DQo+ID4gICB9Ow0KPiA+DQo+ID4gICAvKiBDb3Jlc2lnaHQgUE1V IGRlc2NyaXB0b3IuICovDQo+ID4gICBzdHJ1Y3QgYXJtX2NzcG11IHsNCj4gPiArICAgICBzdHJ1 Y3QgbGlzdF9oZWFkIG5leHQ7DQo+ID4gICAgICAgc3RydWN0IHBtdSBwbXU7DQo+ID4gICAgICAg c3RydWN0IGRldmljZSAqZGV2Ow0KPiA+ICAgICAgIHN0cnVjdCBhY3BpX2FwbXRfbm9kZSAqYXBt dF9ub2RlOw0KPiA+IEBAIC0xNDgsNCArMTcyLDEwIEBAIHNzaXplX3QgYXJtX2NzcG11X3N5c2Zz X2Zvcm1hdF9zaG93KHN0cnVjdA0KPiBkZXZpY2UgKmRldiwNCj4gPiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsDQo+ID4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmJ1Zik7DQo+ID4NCj4gPiArLyog UmVnaXN0ZXIgdmVuZG9yIGJhY2tlbmQuICovDQo+ID4gK2ludCBhcm1fY3NwbXVfaW1wbF9yZWdp c3Rlcihjb25zdCBzdHJ1Y3QgYXJtX2NzcG11X2ltcGxfcGFyYW0NCj4gKmltcGxfcGFyYW0pOw0K PiA+ICsNCj4gPiArLyogVW5yZWdpc3RlciB2ZW5kb3IgYmFja2VuZC4gKi8NCj4gPiArdm9pZCBh cm1fY3NwbXVfaW1wbF91bnJlZ2lzdGVyKGNvbnN0IHN0cnVjdCBhcm1fY3NwbXVfaW1wbF9wYXJh bQ0KPiAqaW1wbF9wYXJhbSk7DQo+ID4gKw0KPiA+ICAgI2VuZGlmIC8qIF9fQVJNX0NTUE1VX0hf XyAqLw0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3BlcmYvYXJtX2NzcG11L252aWRpYV9jc3Bt dS5jDQo+IGIvZHJpdmVycy9wZXJmL2FybV9jc3BtdS9udmlkaWFfY3NwbXUuYw0KPiA+IGluZGV4 IDcyZWY4MGNhYTNjOC4uYzE3OTg0OWNhODkzIDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvcGVy Zi9hcm1fY3NwbXUvbnZpZGlhX2NzcG11LmMNCj4gPiArKysgYi9kcml2ZXJzL3BlcmYvYXJtX2Nz cG11L252aWRpYV9jc3BtdS5jDQo+ID4gQEAgLTEsMTQgKzEsMTggQEANCj4gPiAgIC8vIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wDQo+ID4gICAvKg0KPiA+IC0gKiBDb3B5cmlnaHQg KGMpIDIwMjIsIE5WSURJQSBDT1JQT1JBVElPTiAmIEFGRklMSUFURVMuIEFsbCByaWdodHMNCj4g cmVzZXJ2ZWQuDQo+ID4gKyAqIENvcHlyaWdodCAoYykgMjAyMi0yMDIzLCBOVklESUEgQ09SUE9S QVRJT04gJiBBRkZJTElBVEVTLiBBbGwgcmlnaHRzDQo+IHJlc2VydmVkLg0KPiA+ICAgICoNCj4g PiAgICAqLw0KPiA+DQo+ID4gICAvKiBTdXBwb3J0IGZvciBOVklESUEgc3BlY2lmaWMgYXR0cmli dXRlcy4gKi8NCj4gPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+DQo+ID4gICAjaW5j bHVkZSA8bGludXgvdG9wb2xvZ3kuaD4NCj4gPg0KPiA+IC0jaW5jbHVkZSAibnZpZGlhX2NzcG11 LmgiDQo+ID4gKyNpbmNsdWRlICJhcm1fY3NwbXUuaCINCj4gPiArDQo+ID4gKy8qIEpFREVDLWFz c2lnbmVkIEpFUDEwNiBpZGVudGlmaWNhdGlvbiBjb2RlICovDQo+ID4gKyNkZWZpbmUgQVJNX0NT UE1VX0lNUExfSURfTlZJRElBICAgICAweDM2Qg0KPiA+DQo+ID4gICAjZGVmaW5lIE5WX1BDSUVf UE9SVF9DT1VOVCAgICAgICAgICAgMTBVTEwNCj4gPiAgICNkZWZpbmUgTlZfUENJRV9GSUxURVJf SURfTUFTSw0KPiBHRU5NQVNLX1VMTChOVl9QQ0lFX1BPUlRfQ09VTlQgLSAxLCAwKQ0KPiA+IEBA IC0zNTEsNyArMzU1LDcgQEAgc3RhdGljIGNoYXIgKm52X2NzcG11X2Zvcm1hdF9uYW1lKGNvbnN0 IHN0cnVjdA0KPiBhcm1fY3NwbXUgKmNzcG11LA0KPiA+ICAgICAgIHJldHVybiBuYW1lOw0KPiA+ ICAgfQ0KPiA+DQo+ID4gLWludCBudl9jc3BtdV9pbml0X29wcyhzdHJ1Y3QgYXJtX2NzcG11ICpj c3BtdSkNCj4gPiArc3RhdGljIGludCBudl9jc3BtdV9pbml0X29wcyhzdHJ1Y3QgYXJtX2NzcG11 ICpjc3BtdSkNCj4gPiAgIHsNCj4gPiAgICAgICB1MzIgcHJvZGlkOw0KPiA+ICAgICAgIHN0cnVj dCBudl9jc3BtdV9jdHggKmN0eDsNCj4gPiBAQCAtMzk1LDYgKzM5OSwzMyBAQCBpbnQgbnZfY3Nw bXVfaW5pdF9vcHMoc3RydWN0IGFybV9jc3BtdQ0KPiAqY3NwbXUpDQo+ID4NCj4gPiAgICAgICBy ZXR1cm4gMDsNCj4gPiAgIH0NCj4gPiAtRVhQT1JUX1NZTUJPTF9HUEwobnZfY3NwbXVfaW5pdF9v cHMpOw0KPiA+ICsNCj4gPiArLyogTWF0Y2ggYWxsIE5WSURJQSBDb3Jlc2lnaHQgUE1VIGRldmlj ZXMgKi8NCj4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBhcm1fY3NwbXVfaW1wbF9wYXJhbSBudl9j c3BtdV9wYXJhbSA9IHsNCj4gPiArICAgICAubW9kdWxlICAgICAgICAgPSBUSElTX01PRFVMRSwN Cj4gPiArICAgICAuaW1wbF9pZCAgICAgICAgPSBBUk1fQ1NQTVVfSU1QTF9JRF9OVklESUEsDQo+ ID4gKyAgICAgLnB2ciAgICAgICAgICAgID0gMCwNCj4gPiArICAgICAucHZyX21hc2sgICAgICAg PSAwLA0KPiA+ICsgICAgIC5pbXBsX2luaXRfb3BzICA9IG52X2NzcG11X2luaXRfb3BzDQo+ID4g K307DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IF9faW5pdCBudmlkaWFfY3NwbXVfaW5pdCh2b2lk KQ0KPiA+ICt7DQo+ID4gKyAgICAgaW50IHJldDsNCj4gPiArDQo+ID4gKyAgICAgcmV0ID0gYXJt X2NzcG11X2ltcGxfcmVnaXN0ZXIoJm52X2NzcG11X3BhcmFtKTsNCj4gPiArICAgICBpZiAocmV0 KQ0KPiA+ICsgICAgICAgICAgICAgcHJfZXJyKCJudmlkaWFfY3NwbXUgYmFja2VuZCByZWdpc3Ry YXRpb24gZXJyb3I6ICVkXG4iLCByZXQpOw0KPiA+ICsNCj4gPiArICAgICByZXR1cm4gcmV0Ow0K PiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCBfX2V4aXQgbnZpZGlhX2NzcG11X2V4aXQo dm9pZCkNCj4gPiArew0KPiA+ICsgICAgIGFybV9jc3BtdV9pbXBsX3VucmVnaXN0ZXIoJm52X2Nz cG11X3BhcmFtKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArbW9kdWxlX2luaXQobnZpZGlhX2NzcG11 X2luaXQpOw0KPiA+ICttb2R1bGVfZXhpdChudmlkaWFfY3NwbXVfZXhpdCk7DQo+ID4NCj4gPiAg IE1PRFVMRV9MSUNFTlNFKCJHUEwgdjIiKTsNCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9wZXJm L2FybV9jc3BtdS9udmlkaWFfY3NwbXUuaA0KPiBiL2RyaXZlcnMvcGVyZi9hcm1fY3NwbXUvbnZp ZGlhX2NzcG11LmgNCj4gPiBkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCA3MWUx OGYwZGM1MGIuLjAwMDAwMDAwMDAwMA0KPiA+IC0tLSBhL2RyaXZlcnMvcGVyZi9hcm1fY3NwbXUv bnZpZGlhX2NzcG11LmgNCj4gPiArKysgL2Rldi9udWxsDQo+ID4gQEAgLTEsMTcgKzAsMCBAQA0K PiA+IC0vKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMA0KPiA+IC0gKg0KPiA+IC0g KiBDb3B5cmlnaHQgKGMpIDIwMjIsIE5WSURJQSBDT1JQT1JBVElPTiAmIEFGRklMSUFURVMuIEFs bCByaWdodHMNCj4gcmVzZXJ2ZWQuDQo+ID4gLSAqDQo+ID4gLSAqLw0KPiA+IC0NCj4gPiAtLyog U3VwcG9ydCBmb3IgTlZJRElBIHNwZWNpZmljIGF0dHJpYnV0ZXMuICovDQo+ID4gLQ0KPiA+IC0j aWZuZGVmIF9fTlZJRElBX0NTUE1VX0hfXw0KPiA+IC0jZGVmaW5lIF9fTlZJRElBX0NTUE1VX0hf Xw0KPiA+IC0NCj4gPiAtI2luY2x1ZGUgImFybV9jc3BtdS5oIg0KPiA+IC0NCj4gPiAtLyogQWxs b2NhdGUgTlZJRElBIGRlc2NyaXB0b3IuICovDQo+ID4gLWludCBudl9jc3BtdV9pbml0X29wcyhz dHJ1Y3QgYXJtX2NzcG11ICpjc3BtdSk7DQo+ID4gLQ0KPiA+IC0jZW5kaWYgLyogX19OVklESUFf Q1NQTVVfSF9fICovDQo+ID4NCj4gPiBiYXNlLWNvbW1pdDogNzNmMmMyYTdlMWQyYjMxZmRkNWZh YTZkZmExNTFjNDM3YTZjMGE1YQ0KPiA+IHByZXJlcXVpc2l0ZS1wYXRjaC1pZDogZmI2OTFkYzAx ZDg3NTk3YmNiYWE0ZDM1MjA3MzMwNDI4N2MyMGY3Mw0K