Received: by 2002:a05:6358:c692:b0:131:369:b2a3 with SMTP id fe18csp5406821rwb; Tue, 1 Aug 2023 01:53:06 -0700 (PDT) X-Google-Smtp-Source: APBJJlF20WuG3aPpXfsyQqnNtotnp/e2og38QqMjEwVBdFIRbJQB+/jXP02cACpz+LUOVInSG/+G X-Received: by 2002:a05:6830:1beb:b0:6b9:b985:2892 with SMTP id k11-20020a0568301beb00b006b9b9852892mr11417860otb.17.1690879986217; Tue, 01 Aug 2023 01:53:06 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1690879986; cv=pass; d=google.com; s=arc-20160816; b=bESsYuD2GKsBgwOj9h30d/PMiz+70MMwlQc4XwETAc4Orw+bp+Eu4ohxhEAk3N6zFz 022gUVbmuO+WOTlCEMpwuJ0chUEab67ZVZIu2gzz6VL3nYlEyOnwUPGfP+TRGSeRQDRg ofGl4dMI9Dfy8ukUjy2wxN+Z3mYI07WCeBm6qZIbWN1ErcuFTPkl/UIfvj7otVHRHEc1 9fkBXHH4s6Wy4tHbaiDyd8sNjkkvu2KEnphnjrirB4WYzmErBMxEE/kIyE0RUw5x7TS7 +msRr5uSZnlcvJWnd43wtJigE3JfQAoRMZRE388Az3jDxvWTuhW4bUOsyEyHe7eTTRKT Uoyg== 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-id:content-language:accept-language:in-reply-to:references :message-id:date:thread-index:thread-topic:subject:cc:to:from :dkim-signature:dkim-signature; bh=BD/8FcP4jrbSf2aNkXtT0ZUV87pR3x03VgRbUDUBqhk=; fh=dUgAezlwxYGI3RRnz4Pi0NrlEE+KeLVdQCeDP+DNYGA=; b=UPRT6y/s8GRsO4hkTYwbBFU0uJErPCvT3ipEHWRGnCV8yEjqaf41lgseJZqBYFngQP 56k5g5psCorrcyfH59TWul7+u+ksWjYGqCj0zAswOC+8rG0lXVCziirRjn/8oDNJtIiJ h96EUbs5Nty/uxEkmtWjSm0prFTLM/R4ybPSru2tFbBUtvel7I4MC5JchUVWO6pt0CB/ rMDMyRFFJFkX6vFPBS4qNua7ZeJ0chYErJ3vlLz/C1xRmtsx5aTk/uo69ewSLVWRfAMW noLpkFE2BGZiLHlwcKgyzkTJGF1YgmXRDhjsDm/umYHImzb81YbhsG71cnm+4VX4/LPE f6kA== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=t5dvbS0L; dkim=pass header.i=@mediateko365.onmicrosoft.com header.s=selector2-mediateko365-onmicrosoft-com header.b=tr8R94cs; arc=pass (i=1 spf=pass spfdomain=mediatek.com dkim=pass dkdomain=mediatek.com dmarc=pass fromdomain=mediatek.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=QUARANTINE sp=QUARANTINE dis=NONE) header.from=mediatek.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id j1-20020a633c01000000b005646d7e5351si66470pga.430.2023.08.01.01.52.54; Tue, 01 Aug 2023 01:53:06 -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=@mediatek.com header.s=dk header.b=t5dvbS0L; dkim=pass header.i=@mediateko365.onmicrosoft.com header.s=selector2-mediateko365-onmicrosoft-com header.b=tr8R94cs; arc=pass (i=1 spf=pass spfdomain=mediatek.com dkim=pass dkdomain=mediatek.com dmarc=pass fromdomain=mediatek.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=QUARANTINE sp=QUARANTINE dis=NONE) header.from=mediatek.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229827AbjHAHDs (ORCPT + 99 others); Tue, 1 Aug 2023 03:03:48 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34322 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229938AbjHAHDp (ORCPT ); Tue, 1 Aug 2023 03:03:45 -0400 Received: from mailgw01.mediatek.com (unknown [60.244.123.138]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 275E31BD; Tue, 1 Aug 2023 00:03:29 -0700 (PDT) X-UUID: 80568dec303911ee9cb5633481061a41-20230801 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=MIME-Version:Content-Transfer-Encoding:Content-ID:Content-Type:In-Reply-To:References:Message-ID:Date:Subject:CC:To:From; bh=BD/8FcP4jrbSf2aNkXtT0ZUV87pR3x03VgRbUDUBqhk=; b=t5dvbS0LxrjVcVlT6tdDA+BkceXWCg3+Lvgz6DnYPkRulbFyx0HtJyE405pMnEItUssDZqMX/qsVnw9EmKaUbLWTRd5NefxFTtbwnIwADPb/HNWdIeWcYdDFq/P4yi9Dv5AqAVrm3xhlLM/3Jukh2Mwimq5WnotSbczneuPLRMI=; X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.1.30,REQID:4f4efdb5-1294-4689-9423-409bec69c57c,IP:0,U RL:0,TC:0,Content:0,EDM:0,RT:0,SF:0,FILE:0,BULK:0,RULE:Release_Ham,ACTION: release,TS:0 X-CID-META: VersionHash:1fcc6f8,CLOUDID:651f04b4-a467-4aa9-9e04-f584452e3794,B ulkID:nil,BulkQuantity:0,Recheck:0,SF:102,TC:nil,Content:0,EDM:-3,IP:nil,U RL:11|1,File:nil,Bulk:nil,QS:nil,BEC:nil,COL:0,OSI:0,OSA:0,AV:0,LES:1,SPR: NO,DKR:0,DKP:0,BRR:0,BRE:0 X-CID-BVR: 0,NGT X-CID-BAS: 0,NGT,0,_ X-CID-FACTOR: TF_CID_SPAM_SNR,TF_CID_SPAM_ULN X-UUID: 80568dec303911ee9cb5633481061a41-20230801 Received: from mtkmbs11n2.mediatek.inc [(172.21.101.187)] by mailgw01.mediatek.com (envelope-from ) (Generic MTA with TLSv1.2 ECDHE-RSA-AES256-GCM-SHA384 256/256) with ESMTP id 1393766033; Tue, 01 Aug 2023 15:03:21 +0800 Received: from mtkmbs10n2.mediatek.inc (172.21.101.183) by mtkmbs10n2.mediatek.inc (172.21.101.183) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.26; Tue, 1 Aug 2023 15:03:20 +0800 Received: from APC01-TYZ-obe.outbound.protection.outlook.com (172.21.101.237) by mtkmbs10n2.mediatek.inc (172.21.101.183) with Microsoft SMTP Server id 15.2.1118.26 via Frontend Transport; Tue, 1 Aug 2023 15:03:20 +0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kbfKiLFRbvcA61spYFDnPjjt+5q4THZ+7ouIPZIjSaEEA6SeYTH0lqPrQtuCkZAkYpTx20cukBJsrazTlFh/b40NB7buHardXV1Zg941L1KKIYcXRevNKYx9Jnxiwyvnw8lkLC0ES+kOK86oq8QRa5ft+npiQOi8gKmIXKmcTIQyhue+ykz3m18z8IDBF6l3/bSaW74X1zXZs0Ba+Ks1SY12ywwwJUeJ8rpar1QfFJMoJ1D74wSu1NJ6AK4p/cfcbVcUoxgzvCfsGkAooT7L0D50HtEIzCgW4tkQYw4b9+IA/eTtM/K0OPYQrogi4AnevDqdkkz4ms1bLgwKWLKRKw== 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=BD/8FcP4jrbSf2aNkXtT0ZUV87pR3x03VgRbUDUBqhk=; b=gydab3WTMwyLcSZymRjrtCpt0JN69CI7DermYHDuCQVfX5prtZUF5DUkHKIeyPM8wWTYfwWZsDYXSh4HPdbxjs7dEh39qxlrH5kbsVLL4qosJp2cW5Mg8G8gOjdq+m7FIrubAUVtAzjOFxAx5DuKJYMgdq2qYEgL0DMiXrgePv20zbklySV1cIkyQGZ5d6JYxwnyB34L6y3xdDXeIfWwTx7gukeUaD9+2u7CltV3R6YSwudaIBr2i8wb0csorGriMlhF19BeMiXAj1y5EM5rtrI/x1PQ/DOFElYjZQdMPLfhXizliUbElK7JSmqIfctJllFk4rXlNmKZyAvnnNXDBQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mediatek.com; dmarc=pass action=none header.from=mediatek.com; dkim=pass header.d=mediatek.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mediateko365.onmicrosoft.com; s=selector2-mediateko365-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=BD/8FcP4jrbSf2aNkXtT0ZUV87pR3x03VgRbUDUBqhk=; b=tr8R94cs9SqnO9X7/yPO4xu9U4zCwebbpTrJPAaYrYVUicGcpisXYMUC309/MsJ3wN7j5KQVLIjuCLGdXVZLdP6mBPMY2Kgg7i1BALjvoo0jRF5hRfbirihIlqd+DX3VbgFjvo1zo/DOoyyum66tUjq7zE4RkydpfM73nSrETfs= Received: from SI2PR03MB6167.apcprd03.prod.outlook.com (2603:1096:4:14f::8) by JH0PR03MB7975.apcprd03.prod.outlook.com (2603:1096:990:3f::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6631.44; Tue, 1 Aug 2023 07:03:17 +0000 Received: from SI2PR03MB6167.apcprd03.prod.outlook.com ([fe80::a944:f5f3:d44f:8498]) by SI2PR03MB6167.apcprd03.prod.outlook.com ([fe80::a944:f5f3:d44f:8498%5]) with mapi id 15.20.6631.043; Tue, 1 Aug 2023 07:03:17 +0000 From: =?utf-8?B?WWktRGUgV3UgKOWQs+S4gOW+tyk=?= To: "corbet@lwn.net" , "robh+dt@kernel.org" , "angelogioacchino.delregno@collabora.com" , "eugen.hristev@collabora.com" , "catalin.marinas@arm.com" , "conor+dt@kernel.org" , =?utf-8?B?WWluZ3NoaXVhbiBQYW4gKOa9mOepjui7kik=?= , "krzysztof.kozlowski+dt@linaro.org" , "matthias.bgg@gmail.com" , "arnd@arndb.de" , =?utf-8?B?WmUteXUgV2FuZyAo546L5r6k5a6HKQ==?= , "will@kernel.org" CC: "linux-kernel@vger.kernel.org" , "linux-mediatek@lists.infradead.org" , "quic_tsoni@quicinc.com" , =?utf-8?B?TVkgQ2h1YW5nICjojormmI7ouo0p?= , "devicetree@vger.kernel.org" , =?utf-8?B?UGVpTHVuIFN1ZWkgKOmai+WfueWAqyk=?= , =?utf-8?B?TGlqdS1jbHIgQ2hlbiAo6Zmz6bqX5aaCKQ==?= , =?utf-8?B?SmFkZXMgU2hpaCAo5pa95ZCR546oKQ==?= , "dbrazdil@google.com" , "linux-arm-kernel@lists.infradead.org" , =?utf-8?B?U2hhd24gSHNpYW8gKOiVreW/l+elpSk=?= , "linux-arch@vger.kernel.org" , "linux-doc@vger.kernel.org" , =?utf-8?B?SXZhbiBUc2VuZyAo5pu+5b+X6LuSKQ==?= , =?utf-8?B?Q2hpLXNoZW4gWWVoICjokYnlpYfou5Ip?= Subject: Re: [PATCH v5 03/12] virt: geniezone: Add GenieZone hypervisor support Thread-Topic: [PATCH v5 03/12] virt: geniezone: Add GenieZone hypervisor support Thread-Index: AQHZwGB0xCePPaUJWEyUwpyMLZEC4q/NTk2AgAe9bAA= Date: Tue, 1 Aug 2023 07:03:17 +0000 Message-ID: References: <20230727080005.14474-1-yi-de.wu@mediatek.com> <20230727080005.14474-4-yi-de.wu@mediatek.com> <2c69c479-3f3c-3d8a-8066-af030427927d@collabora.com> In-Reply-To: <2c69c479-3f3c-3d8a-8066-af030427927d@collabora.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=mediatek.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SI2PR03MB6167:EE_|JH0PR03MB7975:EE_ x-ms-office365-filtering-correlation-id: d89a6a4f-337f-4863-4dba-08db925d61c8 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Pzlfs5YpjJ38sFYN8mDPht3IfTvsOQ4iR/KWavSm6to6OcazHElZ7B/KpN35uUcc8upxj75HsZ6coy9tbOpJkhZnJe0/KDPyQYLqi3fqAPHVAZiyUPlB/AIQFyXNCFM1urRWNEkuqFxpWQGpUMvLFQ5LIvQDpJHNCZcp4D7GkUlBJU0g/Ck8WjuxnsbW8iSySNvWVbdeOi8+UwROcTDqJKK1DgEl0aAcgk4dq4mcAEABBrUIEeKCZmHjQ0qX+0DYCOPGy6DIY1HWL0oSLY7XECbppAAStkoClFsKYNc8TC+T4mreNzSPWw7L6BjY8QgjJ8A0fEHKjQnYCyniwK3moNyIoPf31uDX31g/qqpsotdNIq3yJ3yjSAEEi4qgVhP36MCzO7zNxWYvjPchH2y1lDTyb+QBwc3utQLq6LIvJwRNAgNNJHiOwAOkkIdUa+dgRk/6XU/wDibbnq9PM00kP5ahszmLP1uteSnnKHfNFnHSsnmng0/zr62aVIzSO5bDTH7w5dRm3LOvxO4vpqUAM5YaFBMO+sK2yrH862rrvL0liSFBZ0aZotAvs0nZ9wU9vKNfiFzCkn76JK8FhLuBUOPUucTVwTkymuRS5AfnGktMlknzEHHeTc4sdoKCDBk0phgMGyd74ajRZ61KLA6uUOKLy82f9KhYSOFbCZPuUCTyjThtPXESWH0WXlFrVP4Q x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SI2PR03MB6167.apcprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(4636009)(396003)(346002)(39860400002)(376002)(366004)(136003)(451199021)(5660300002)(7416002)(4326008)(2906002)(316002)(66946007)(91956017)(76116006)(66476007)(66446008)(64756008)(66556008)(30864003)(478600001)(110136005)(54906003)(8936002)(8676002)(41300700001)(71200400001)(6486002)(6512007)(38100700002)(921005)(107886003)(6506007)(53546011)(26005)(186003)(85182001)(2616005)(83380400001)(36756003)(38070700005)(122000001)(86362001)(579004)(559001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?cjg3M0FxcGJ6cjFMZVlQUTJENEhYZ3N6WFZEWHFrMDNZbHR0TldOSUtkakUz?= =?utf-8?B?cUlscENLblU0b3pYbjFOVmdiTitSc2p5T3d2WDRaSW4vc2N6S0I5OStQQWVG?= =?utf-8?B?SnpQK3RvVVBSTkVZU1dZNlk4U0ZKd081eFBZemQvSk9ieG95eU9wZXBZWFJW?= =?utf-8?B?U2ptdkU0cUJiN01ZMzRQN29Ra1VTSGRla3NkNERHckVKVVRDQzJVdHp0N244?= =?utf-8?B?SU9ITTE0WmVpN3JxdGNxeE1zSlFxSVhVbUJ2N1VlRTduS1FwdzdpMHZ1NE1C?= =?utf-8?B?cVAxcThOUDRSQzRnUUw0S2FiVkJsTFB2WE1ZbSt1c3R6MjdpVGVoNzRNMk84?= =?utf-8?B?VkI2RWJCblB3WkFvNkY5R2VJQjlLblBtNGpoN09IdTlsR3VZZWpaZmYrbXhv?= =?utf-8?B?d1lsV1hQaXhuRDE4cjBYVDd4dlNjaHRaR3dxSytkdk1tOTdad0Vaa25JTUNi?= =?utf-8?B?QW91RmsyS1BoMmljRmhiS1RpV2VHTlhtNG9Nc3RhRVZ5T0poUWk5OVV1QjF2?= =?utf-8?B?aE5xbTR6dm5YZkRsRXFnVW5HMlhCWFFnOStFdVR6Q2YwMHpaOVdtUk9rVVQy?= =?utf-8?B?Uk1TaUJzS0xZOWpPZkhWODBJcWo3S2I1cS9tMjN2SDQyeWtPVEZTMVpReDFZ?= =?utf-8?B?dGFkOVgxUGlBRjE0VllVeWJJK0RRVGxsVnNNYUF3bnhzd0k2Ky9RcUwxdi8x?= =?utf-8?B?Q2tIR3UrT1JOWkN6RXdGSFRrTjYwSWhOSHRRN3ZIZFdEaUtwNTRkdC8wRitu?= =?utf-8?B?RWpQMzllZEVSVlVwZUhYVSs3eWxha1dHU1QxVklOYjNxSGhoajJoOTM3Um1O?= =?utf-8?B?Si9ZOXRsVjk5YVdQNUkrbjBacTFOT1RIM21MS0JWVzQ5Y3RGcGwrTld0aFN2?= =?utf-8?B?endOSzRLcUsyOXJsR1Z0OUM5cXU3ZHlnL3RLV1h2bmQyUXAxMEVNdzVCc0JH?= =?utf-8?B?aTBXbmpqZmkxSFFxL3VuK1VHVjROWlg1K2NJUHI0aXNRVkNJMGx6SE5HdXA3?= =?utf-8?B?d1R2Vm9URGZDdlNMQ0g3ZWpTQXdYamtQSEV5OWc0UGhHV3d1djg2cEY1UEJ3?= =?utf-8?B?cExlR3RhUjZiRmZSK1YwR3RtYmlWRG05YkFMNUhGczNSRVIxYnJCU3lQMm1V?= =?utf-8?B?aFlVL2pFVmNLVUdRU2VRTTBEZXBoN1RHY2lZekE3OUtCTHNHUnM3dmYwM0s2?= =?utf-8?B?WExNR1dvQVFuUFUwVXdaTEFaNlVIRWczellyckw0UGZtRU5Ha3hJY0cvbWJN?= =?utf-8?B?OEEzcDNOZkd5RkpjWnpxRjl6S3NMOWpCdFozTjFxeUgwT3Rkekx0T1hYUmJL?= =?utf-8?B?YWwxZWdNNjZNTXlGbS84OE5uT3JzYlU4bmpBM0JENWkveU5QY2hCYXRWSDBH?= =?utf-8?B?dURoN29CaFNzTDd6ckNtZHlYMHIvenZaVWw1WEZsT3hNamRkRWNKcGhWaHFI?= =?utf-8?B?VzEvYkdWcUtXdWpMVmFwK1ZXWEMyVzBGUDMvQjFicDdpSzFnVEdRL2V6bjU4?= =?utf-8?B?TWZPeXB5eEhlSGszS3ZGRzVpeDVsNEJaVXAwVURCcWVCdk1tRmRyK040aEk4?= =?utf-8?B?Rk5lZENoc0xmRlNtUFhBOEpKbytYS0V6TDV2enVFalFPaU51bVhNSHVNMGdp?= =?utf-8?B?VGdTZDV6TzJzNE1zUDFyT09FUG9INC9sUXBiTWdtcGVIS2JiMG9qNk1Bd1ZE?= =?utf-8?B?clFCSzlxait0dkozQTZBVWxhZU0wRFdLY1ZMcytrVUhEY0h6UitHcGtMMDdZ?= =?utf-8?B?N2ZIL2w1YWVaSHlCa2NzYnFxRWhrTkdYZ0xjREpkMmpzaHNxZmpyM3oxV1V0?= =?utf-8?B?TzNCVXdFMEt6Yk9Mb0xKNGJpVTJaNG0xMGlmeVE5Y0xkS3VYa2VDYTA0SHI5?= =?utf-8?B?VG5jYnd1Nlo5TkdmK1hVbTIwbXRuTlE3bXBUQlBSR3YvY2hCaWxpWlNFQ1Vp?= =?utf-8?B?MUtaWGRiVk5Id2Izc3U5VHdpYm14WHBldkJzY0cvcEovZkVhQ2ZVYks1TkpL?= =?utf-8?B?YkdLN01VMFhOQ0NBazdJS1RpSGppMmJpeWtXRmI0aEhJQ2pmWnl5V0tGZGFI?= =?utf-8?B?VVhMdTlmS0dCUWE3dFJMUGp2bjQzdGV3eldiamtUZkx3TGZyVERLNlBUd3dS?= =?utf-8?B?d0RPT2dQY1FObWdYNFNQcmsxdDArUnhkYlhvRngyd1dMbXVtSTJ1Sy9sQi8r?= =?utf-8?B?NHc9PQ==?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SI2PR03MB6167.apcprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: d89a6a4f-337f-4863-4dba-08db925d61c8 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Aug 2023 07:03:17.2783 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a7687ede-7a6b-4ef6-bace-642f677fbe31 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: iC2O1PrXKOzGWwsdNW5pVeNQWru95k0ppZbm1+g3Sdw0j5nEuMHeesoZNOW15RbNtIUT4CQUHBI8FWHE4onK5g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: JH0PR03MB7975 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,RCVD_IN_DNSWL_BLOCKED,SPF_HELO_PASS,SPF_PASS, T_SCC_BODY_TEXT_LINE,UNPARSEABLE_RELAY,URIBL_BLOCKED autolearn=ham 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 T24gVGh1LCAyMDIzLTA3LTI3IGF0IDExOjUxICswMzAwLCBFdWdlbiBIcmlzdGV2IHdyb3RlOg0K PiBIaSBZaS1EZSwNCj4gDQo+IE9uIDcvMjcvMjMgMTA6NTksIFlpLURlIFd1IHdyb3RlOg0KPiA+ IEZyb206ICJZaW5nc2hpdWFuIFBhbiIgPHlpbmdzaGl1YW4ucGFuQG1lZGlhdGVrLmNvbT4NCj4g PiANCj4gPiBHZW5pZVpvbmUgaXMgTWVkaWFUZWsgaHlwZXJ2aXNvciBzb2x1dGlvbiwgYW5kIGl0 IGlzIHJ1bm5pbmcgaW4gRUwyDQo+ID4gc3RhbmQgYWxvbmUgYXMgYSB0eXBlLUkgaHlwZXJ2aXNv ci4gVGhpcyBwYXRjaCBleHBvcnRzIGEgc2V0IG9mDQo+ID4gaW9jdGwNCj4gPiBpbnRlcmZhY2Vz IGZvciB1c2Vyc3BhY2UgVk1NIChlLmcuLCBjcm9zdm0pIHRvIG9wZXJhdGUgZ3Vlc3QgVk1zDQo+ ID4gbGlmZWN5Y2xlIChjcmVhdGlvbiBhbmQgZGVzdHJveSkgb24gR2VuaWVab25lLg0KPiA+IA0K PiA+IFNpZ25lZC1vZmYtYnk6IFlpbmdzaGl1YW4gUGFuIDx5aW5nc2hpdWFuLnBhbkBtZWRpYXRl ay5jb20+DQo+ID4gU2lnbmVkLW9mZi1ieTogSmVycnkgV2FuZyA8emUteXUud2FuZ0BtZWRpYXRl ay5jb20+DQo+ID4gU2lnbmVkLW9mZi1ieTogTGlqdSBDaGVuIDxsaWp1LWNsci5jaGVuQG1lZGlh dGVrLmNvbT4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBZaS1EZSBXdSA8eWktZGUud3VAbWVkaWF0ZWsu Y29tPg0KPiA+IC0tLQ0KPiA+ICAgTUFJTlRBSU5FUlMgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICA2ICsNCj4gPiAgIGFyY2gvYXJtNjQvS2J1aWxkICAgICAgICAgICAgICAgICAgICAg ICB8ICAgMSArDQo+ID4gICBhcmNoL2FybTY0L2dlbmllem9uZS9NYWtlZmlsZSAgICAgICAgICAg fCAgIDkgKw0KPiA+ICAgYXJjaC9hcm02NC9nZW5pZXpvbmUvZ3p2bV9hcmNoX2NvbW1vbi5oIHwg IDY4ICsrKysNCj4gPiAgIGFyY2gvYXJtNjQvZ2VuaWV6b25lL3ZtLmMgICAgICAgICAgICAgICB8 IDIxMiArKysrKysrKysrKysrDQo+ID4gICBhcmNoL2FybTY0L2luY2x1ZGUvdWFwaS9hc20vZ3p2 bV9hcmNoLmggfCAgMjAgKysNCj4gPiAgIGRyaXZlcnMvdmlydC9LY29uZmlnICAgICAgICAgICAg ICAgICAgICB8ICAgMiArDQo+ID4gICBkcml2ZXJzL3ZpcnQvZ2VuaWV6b25lL0tjb25maWcgICAg ICAgICAgfCAgMTYgKw0KPiA+ICAgZHJpdmVycy92aXJ0L2dlbmllem9uZS9NYWtlZmlsZSAgICAg ICAgIHwgIDEwICsNCj4gPiAgIGRyaXZlcnMvdmlydC9nZW5pZXpvbmUvZ3p2bV9tYWluLmMgICAg ICB8IDE0MyArKysrKysrKysNCj4gPiAgIGRyaXZlcnMvdmlydC9nZW5pZXpvbmUvZ3p2bV92bS5j ICAgICAgICB8IDQwMA0KPiA+ICsrKysrKysrKysrKysrKysrKysrKysrKw0KPiA+ICAgaW5jbHVk ZS9saW51eC9nenZtX2Rydi5oICAgICAgICAgICAgICAgIHwgIDkwICsrKysrKw0KPiA+ICAgaW5j bHVkZS91YXBpL2FzbS1nZW5lcmljL0tidWlsZCAgICAgICAgIHwgICAxICsNCj4gPiAgIGluY2x1 ZGUvdWFwaS9hc20tZ2VuZXJpYy9nenZtX2FyY2guaCAgICB8ICAxMCArDQo+ID4gICBpbmNsdWRl L3VhcGkvbGludXgvZ3p2bS5oICAgICAgICAgICAgICAgfCAgNzYgKysrKysNCj4gPiAgIDE1IGZp bGVzIGNoYW5nZWQsIDEwNjQgaW5zZXJ0aW9ucygrKQ0KPiA+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0 IGFyY2gvYXJtNjQvZ2VuaWV6b25lL01ha2VmaWxlDQo+ID4gICBjcmVhdGUgbW9kZSAxMDA2NDQg YXJjaC9hcm02NC9nZW5pZXpvbmUvZ3p2bV9hcmNoX2NvbW1vbi5oDQo+ID4gICBjcmVhdGUgbW9k ZSAxMDA2NDQgYXJjaC9hcm02NC9nZW5pZXpvbmUvdm0uYw0KPiA+ICAgY3JlYXRlIG1vZGUgMTAw NjQ0IGFyY2gvYXJtNjQvaW5jbHVkZS91YXBpL2FzbS9nenZtX2FyY2guaA0KPiA+ICAgY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvdmlydC9nZW5pZXpvbmUvS2NvbmZpZw0KPiA+ICAgY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvdmlydC9nZW5pZXpvbmUvTWFrZWZpbGUNCj4gPiAgIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3ZpcnQvZ2VuaWV6b25lL2d6dm1fbWFpbi5jDQo+ID4gICBj cmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy92aXJ0L2dlbmllem9uZS9nenZtX3ZtLmMNCj4gPiAg IGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2xpbnV4L2d6dm1fZHJ2LmgNCj4gPiAgIGNyZWF0 ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvZ3p2bV9hcmNoLmgNCj4gPiAg IGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3VhcGkvbGludXgvZ3p2bS5oDQo+ID4gDQo+IA0K PiBJIGhhdmUgYSBmZWVsaW5nIHRoaXMgcGF0Y2ggaXMgYSBiaXQgYmlnLCBhbmQgY291bGQgaGVs cCByZXZpZXcgaWYNCj4gaXQncyANCj4gc3BsaXQgaW50byBjaHVua3Mgb2Ygc21hbGxlciBzaXpl Lg0KPiANClN1cmUsIHdlIHdvdWxkIHRlYXIgdGhpcyBwYXRjaCBhcGFydCBpbnRvIGEgY291cGxl IG9mIHNtYWxsZXIgcGF0Y2hlcw0KYWNjb3JkaW5nIHRvIHRoZWlyIGZlYXR1cmVzLg0KDQo+ID4g ZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlMNCj4gPiBpbmRleCBiZmJmZGI3 OTA0NDYuLmI5MWQ0MWRkMmYyZiAxMDA2NDQNCj4gPiAtLS0gYS9NQUlOVEFJTkVSUw0KPiA+ICsr KyBiL01BSU5UQUlORVJTDQo+ID4gQEAgLTg3NDcsNiArODc0NywxMiBAQCBNOglaZS1ZdSBXYW5n IDx6ZS15dS53YW5nQG1lZGlhdGVrLmNvbT4NCj4gPiAgIE06CVlpLURlIFd1IDx5aS1kZS53dUBt ZWRpYXRlay5jb20+DQo+ID4gICBGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mv aHlwZXJ2aXNvci9tZWRpYXRlayxnDQo+ID4gZW5pZXpvbmUtaHlwLnlhbWwNCj4gPiAgIEY6CURv Y3VtZW50YXRpb24vdmlydC9nZW5pZXpvbmUvDQo+ID4gK0Y6CWFyY2gvYXJtNjQvZ2VuaWV6b25l Lw0KPiA+ICtGOglhcmNoL2FybTY0L2luY2x1ZGUvdWFwaS9hc20vZ3p2bV9hcmNoLmgNCj4gPiAr RjoJZHJpdmVycy92aXJ0L2dlbmllem9uZS8NCj4gPiArRjoJaW5jbHVkZS9saW51eC9nenZtX2Ry di5oDQo+ID4gK0YJaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL2d6dm1fYXJjaC5oDQo+ID4gK0Y6 CWluY2x1ZGUvdWFwaS9saW51eC9nenZtLmgNCj4gPiAgIA0KPiA+ICAgR0VOV1FFIChJQk0gR2Vu ZXJpYyBXb3JrcXVldWUgQ2FyZCkNCj4gPiAgIE06CUZyYW5rIEhhdmVya2FtcCA8aGF2ZXJAbGlu dXguaWJtLmNvbT4NCj4gPiBkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9LYnVpbGQgYi9hcmNoL2Fy bTY0L0tidWlsZA0KPiA+IGluZGV4IDViZmJmN2Q3OWM5OS4uMGMzY2NhNTcyOTE5IDEwMDY0NA0K PiA+IC0tLSBhL2FyY2gvYXJtNjQvS2J1aWxkDQo+ID4gKysrIGIvYXJjaC9hcm02NC9LYnVpbGQN Cj4gPiBAQCAtNCw2ICs0LDcgQEAgb2JqLSQoQ09ORklHX0tWTSkJKz0ga3ZtLw0KPiA+ICAgb2Jq LSQoQ09ORklHX1hFTikJKz0geGVuLw0KPiA+ICAgb2JqLSQoc3Vic3QgbSx5LCQoQ09ORklHX0hZ UEVSVikpCSs9IGh5cGVydi8NCj4gPiAgIG9iai0kKENPTkZJR19DUllQVE8pCSs9IGNyeXB0by8N Cj4gPiArb2JqLSQoQ09ORklHX01US19HWlZNKQkrPSBnZW5pZXpvbmUvDQo+ID4gICANCj4gPiAg ICMgZm9yIGNsZWFuaW5nDQo+ID4gICBzdWJkaXItICs9IGJvb3QNCj4gPiBkaWZmIC0tZ2l0IGEv YXJjaC9hcm02NC9nZW5pZXpvbmUvTWFrZWZpbGUNCj4gPiBiL2FyY2gvYXJtNjQvZ2VuaWV6b25l L01ha2VmaWxlDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAw MDAuLjI5NTc4OThjZGQwNQ0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9hcmNoL2FybTY0 L2dlbmllem9uZS9NYWtlZmlsZQ0KPiA+IEBAIC0wLDAgKzEsOSBAQA0KPiA+ICsjIFNQRFgtTGlj ZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkNCj4gPiArIw0KPiA+ICsjIE1haW4gTWFrZWZp bGUgZm9yIGd6dm0sIHRoaXMgb25lIGluY2x1ZGVzDQo+ID4gZHJpdmVycy92aXJ0L2dlbmllem9u ZS9NYWtlZmlsZQ0KPiA+ICsjDQo+ID4gK2luY2x1ZGUgJChzcmN0cmVlKS9kcml2ZXJzL3ZpcnQv Z2VuaWV6b25lL01ha2VmaWxlDQo+ID4gKw0KPiA+ICtnenZtLXkgKz0gdm0ubw0KPiA+ICsNCj4g PiArb2JqLSQoQ09ORklHX01US19HWlZNKSArPSBnenZtLm8NCj4gPiBkaWZmIC0tZ2l0IGEvYXJj aC9hcm02NC9nZW5pZXpvbmUvZ3p2bV9hcmNoX2NvbW1vbi5oDQo+ID4gYi9hcmNoL2FybTY0L2dl bmllem9uZS9nenZtX2FyY2hfY29tbW9uLmgNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ IGluZGV4IDAwMDAwMDAwMDAwMC4uZmRiOTVkNjE5MTAyDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ ICsrKyBiL2FyY2gvYXJtNjQvZ2VuaWV6b25lL2d6dm1fYXJjaF9jb21tb24uaA0KPiA+IEBAIC0w LDAgKzEsNjggQEANCj4gPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8N Cj4gPiArLyoNCj4gPiArICogQ29weXJpZ2h0IChjKSAyMDIzIE1lZGlhVGVrIEluYy4NCj4gPiAr ICovDQo+ID4gKw0KPiA+ICsjaWZuZGVmIF9fR1pWTV9BUkNIX0NPTU1PTl9IX18NCj4gPiArI2Rl ZmluZSBfX0daVk1fQVJDSF9DT01NT05fSF9fDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8bGludXgv YXJtLXNtY2NjLmg+DQo+ID4gKw0KPiA+ICtlbnVtIHsNCj4gPiArCUdaVk1fRlVOQ19DUkVBVEVf Vk0gPSAwLA0KPiA+ICsJR1pWTV9GVU5DX0RFU1RST1lfVk0gPSAxLA0KPiA+ICsJR1pWTV9GVU5D X0NSRUFURV9WQ1BVID0gMiwNCj4gPiArCUdaVk1fRlVOQ19ERVNUUk9ZX1ZDUFUgPSAzLA0KPiA+ ICsJR1pWTV9GVU5DX1NFVF9NRU1SRUdJT04gPSA0LA0KPiA+ICsJR1pWTV9GVU5DX1JVTiA9IDUs DQo+ID4gKwlHWlZNX0ZVTkNfR0VUX09ORV9SRUcgPSA4LA0KPiA+ICsJR1pWTV9GVU5DX1NFVF9P TkVfUkVHID0gOSwNCj4gPiArCUdaVk1fRlVOQ19JUlFfTElORSA9IDEwLA0KPiA+ICsJR1pWTV9G VU5DX0NSRUFURV9ERVZJQ0UgPSAxMSwNCj4gPiArCUdaVk1fRlVOQ19QUk9CRSA9IDEyLA0KPiA+ ICsJR1pWTV9GVU5DX0VOQUJMRV9DQVAgPSAxMywNCj4gPiArCU5SX0daVk1fRlVOQywNCj4gPiAr fTsNCj4gPiArDQo+ID4gKyNkZWZpbmUgU01DX0VOVElUWV9NVEsJCQk1OQ0KPiA+ICsjZGVmaW5l IEdaVk1fRlVOQ0lEX1NUQVJUCQkoMHgxMDAwKQ0KPiA+ICsjZGVmaW5lIEdaVk1fSENBTExfSUQo ZnVuYykJCQkJCQ0KPiA+IAlcDQo+ID4gKwlBUk1fU01DQ0NfQ0FMTF9WQUwoQVJNX1NNQ0NDX0ZB U1RfQ0FMTCwgQVJNX1NNQ0NDX1NNQ18zMiwJXA0KPiA+ICsJCQkgICBTTUNfRU5USVRZX01USywg KEdaVk1fRlVOQ0lEX1NUQVJUICsNCj4gPiAoZnVuYykpKQ0KPiA+ICsNCj4gPiArI2RlZmluZSBN VF9IVkNfR1pWTV9DUkVBVEVfVk0JCUdaVk1fSENBTExfSUQoR1pWTV9GVU5DDQo+ID4gX0NSRUFU RV9WTSkNCj4gPiArI2RlZmluZSBNVF9IVkNfR1pWTV9ERVNUUk9ZX1ZNCQlHWlZNX0hDQUxMX0lE KEdaVk1fRlVOQw0KPiA+IF9ERVNUUk9ZX1ZNKQ0KPiA+ICsjZGVmaW5lIE1UX0hWQ19HWlZNX0NS RUFURV9WQ1BVCQlHWlZNX0hDQUxMX0lEKEdaVk1fRlVOQw0KPiA+IF9DUkVBVEVfVkNQVSkNCj4g PiArI2RlZmluZSBNVF9IVkNfR1pWTV9ERVNUUk9ZX1ZDUFUJR1pWTV9IQ0FMTF9JRChHWlZNX0ZV TkNfREVTVFJPWQ0KPiA+IF9WQ1BVKQ0KPiA+ICsjZGVmaW5lIE1UX0hWQ19HWlZNX1NFVF9NRU1S RUdJT04JR1pWTV9IQ0FMTF9JRChHWlZNX0ZVTkNfU0VUX01FTQ0KPiA+IFJFR0lPTikNCj4gPiAr I2RlZmluZSBNVF9IVkNfR1pWTV9SVU4JCQlHWlZNX0hDQUxMX0lEKEdaVk1fRlVOQw0KPiA+IF9S VU4pDQo+ID4gKyNkZWZpbmUgTVRfSFZDX0daVk1fR0VUX09ORV9SRUcJCUdaVk1fSENBTExfSUQo R1pWTV9GVU5DDQo+ID4gX0dFVF9PTkVfUkVHKQ0KPiA+ICsjZGVmaW5lIE1UX0hWQ19HWlZNX1NF VF9PTkVfUkVHCQlHWlZNX0hDQUxMX0lEKEdaVk1fRlVOQw0KPiA+IF9TRVRfT05FX1JFRykNCj4g PiArI2RlZmluZSBNVF9IVkNfR1pWTV9JUlFfTElORQkJR1pWTV9IQ0FMTF9JRChHWlZNX0ZVTkMN Cj4gPiBfSVJRX0xJTkUpDQo+ID4gKyNkZWZpbmUgTVRfSFZDX0daVk1fQ1JFQVRFX0RFVklDRQlH WlZNX0hDQUxMX0lEKEdaVk1fRlVOQ19DUkVBVEVfDQo+ID4gREVWSUNFKQ0KPiA+ICsjZGVmaW5l IE1UX0hWQ19HWlZNX1BST0JFCQlHWlZNX0hDQUxMX0lEKEdaVk1fRlVOQ19QUk9CRSkNCj4gPiAr I2RlZmluZSBNVF9IVkNfR1pWTV9FTkFCTEVfQ0FQCQlHWlZNX0hDQUxMX0lEKEdaVk1fRlVOQw0K PiA+IF9FTkFCTEVfQ0FQKQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIGd6dm1faHlwY2FsbF93 cmFwcGVyKCkgLSB0aGUgd3JhcHBlciBmb3IgaHZjIGNhbGxzDQo+ID4gKyAqIEBhMC1hNzogYXJn dW1lbnRzIHBhc3NlZCBpbiByZWdpc3RlcnMgMCB0byA3DQo+ID4gKyAqIEByZXM6IHJlc3VsdCB2 YWx1ZXMgZnJvbSByZWdpc3RlcnMgMCB0byAzDQo+ID4gKyAqDQo+ID4gKyAqIFJldHVybjogVGhl IHdyYXBwZXIgaGVscHMgY2FsbGVyIHRvIGNvbnZlcnQgZ2VuaWV6b25lIGVycm5vIHRvDQo+ID4g TGludXggZXJybm8uDQo+ID4gKyAqLw0KPiA+ICtzdGF0aWMgaW5saW5lIGludCBnenZtX2h5cGNh bGxfd3JhcHBlcih1bnNpZ25lZCBsb25nIGEwLCB1bnNpZ25lZA0KPiA+IGxvbmcgYTEsDQo+ID4g KwkJCQkgICAgICAgdW5zaWduZWQgbG9uZyBhMiwgdW5zaWduZWQgbG9uZw0KPiA+IGEzLA0KPiA+ ICsJCQkJICAgICAgIHVuc2lnbmVkIGxvbmcgYTQsIHVuc2lnbmVkIGxvbmcNCj4gPiBhNSwNCj4g PiArCQkJCSAgICAgICB1bnNpZ25lZCBsb25nIGE2LCB1bnNpZ25lZCBsb25nDQo+ID4gYTcsDQo+ ID4gKwkJCQkgICAgICAgc3RydWN0IGFybV9zbWNjY19yZXMgKnJlcykNCj4gPiArew0KPiA+ICsJ YXJtX3NtY2NjX2h2YyhhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIHJlcyk7DQo+ID4g KwlyZXR1cm4gZ3p2bV9lcnJfdG9fZXJybm8ocmVzLT5hMCk7DQo+ID4gK30NCj4gPiArDQo+ID4g K3N0YXRpYyBpbmxpbmUgdTE2IGdldF92bWlkX2Zyb21fdHVwbGUodW5zaWduZWQgaW50IHR1cGxl KQ0KPiA+ICt7DQo+ID4gKwlyZXR1cm4gKHUxNikodHVwbGUgPj4gMTYpOw0KPiA+ICt9DQo+ID4g Kw0KPiA+ICsjZW5kaWYgLyogX19HWlZNX0FSQ0hfQ09NTU9OX0hfXyAqLw0KPiA+IGRpZmYgLS1n aXQgYS9hcmNoL2FybTY0L2dlbmllem9uZS92bS5jIGIvYXJjaC9hcm02NC9nZW5pZXpvbmUvdm0u Yw0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi5lMzU3 NTFiMjE4MjENCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvYXJjaC9hcm02NC9nZW5pZXpv bmUvdm0uYw0KPiA+IEBAIC0wLDAgKzEsMjEyIEBADQo+ID4gKy8vIFNQRFgtTGljZW5zZS1JZGVu dGlmaWVyOiBHUEwtMi4wDQo+ID4gKy8qDQo+ID4gKyAqIENvcHlyaWdodCAoYykgMjAyMyBNZWRp YVRlayBJbmMuDQo+ID4gKyAqLw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgPGFzbS9zeXNyZWcuaD4N Cj4gPiArI2luY2x1ZGUgPGxpbnV4L2FybS1zbWNjYy5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgv ZXJyLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC91YWNjZXNzLmg+DQo+ID4gKw0KPiA+ICsjaW5j bHVkZSA8bGludXgvZ3p2bS5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvZ3p2bV9kcnYuaD4NCj4g PiArI2luY2x1ZGUgImd6dm1fYXJjaF9jb21tb24uaCINCj4gPiArDQo+ID4gKyNkZWZpbmUgUEFS X1BBNDdfTUFTSyAoKCgoMVVMIDw8IDQ4KSAtIDEpID4+IDEyKSA8PCAxMikNCj4gPiArDQo+ID4g K2ludCBnenZtX2FyY2hfcHJvYmUodm9pZCkNCj4gPiArew0KPiA+ICsJc3RydWN0IGFybV9zbWNj Y19yZXMgcmVzOw0KPiA+ICsNCj4gPiArCWFybV9zbWNjY19odmMoTVRfSFZDX0daVk1fUFJPQkUs IDAsIDAsIDAsIDAsIDAsIDAsIDAsICZyZXMpOw0KPiA+ICsJaWYgKHJlcy5hMCA9PSAwKQ0KPiA+ ICsJCXJldHVybiAwOw0KPiANCj4gSSB3b3VsZCBzZWUgdGhlIGVycm9yIHBhdGggYXMgYSBwYXJ0 aWN1bGFyIGNhc2UgaGVyZSwgZS5nLg0KPiANCj4gaWYgKHJlcy5hMCkNCj4gCXJldHVybiAtRU5Y SU87DQo+IA0KPiBhbmQgb24gdGhlIHVzdWFsIHBhdGggcmV0dXJuIHN1Y2Nlc3MuDQo+IA0KPiAo YXMgeW91IGFscmVhZHkgZG8gYmVsb3cgaW4gc29tZSBmdW5jdGlvbnMpLi4uDQo+IA0KPiA+ICsN Cj4gPiArCXJldHVybiAtRU5YSU87DQo+ID4gK30NCj4gPiArDQo+ID4gK2ludCBnenZtX2FyY2hf c2V0X21lbXJlZ2lvbih1MTYgdm1faWQsIHNpemVfdCBidWZfc2l6ZSwNCj4gPiArCQkJICAgIHBo eXNfYWRkcl90IHJlZ2lvbikNCj4gPiArew0KPiA+ICsJc3RydWN0IGFybV9zbWNjY19yZXMgcmVz Ow0KPiA+ICsNCj4gPiArCXJldHVybiBnenZtX2h5cGNhbGxfd3JhcHBlcihNVF9IVkNfR1pWTV9T RVRfTUVNUkVHSU9OLCB2bV9pZCwNCj4gPiArCQkJCSAgICBidWZfc2l6ZSwgcmVnaW9uLCAwLCAw LCAwLCAwLA0KPiA+ICZyZXMpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IGd6dm1f Y2FwX2FybV92bV9pcGFfc2l6ZSh2b2lkIF9fdXNlciAqYXJncCkNCj4gPiArew0KPiA+ICsJX191 NjQgdmFsdWUgPSBDT05GSUdfQVJNNjRfUEFfQklUUzsNCj4gPiArDQo+ID4gKwlpZiAoY29weV90 b191c2VyKGFyZ3AsICZ2YWx1ZSwgc2l6ZW9mKF9fdTY0KSkpDQo+ID4gKwkJcmV0dXJuIC1FRkFV TFQ7DQo+IA0KPiAuLi4gZS5nLiBoZXJlLg0KPiANCj4gPiArDQo+ID4gKwlyZXR1cm4gMDsNCj4g PiArfQ0KPiA+ICsNCj4gPiAraW50IGd6dm1fYXJjaF9jaGVja19leHRlbnNpb24oc3RydWN0IGd6 dm0gKmd6dm0sIF9fdTY0IGNhcCwgdm9pZA0KPiA+IF9fdXNlciAqYXJncCkNCj4gPiArew0KPiA+ ICsJaW50IHJldCA9IC1FT1BOT1RTVVBQOw0KPiA+ICsNCj4gPiArCXN3aXRjaCAoY2FwKSB7DQo+ ID4gKwljYXNlIEdaVk1fQ0FQX0FSTV9QUk9URUNURURfVk06IHsNCj4gPiArCQlfX3U2NCBzdWNj ZXNzID0gMTsNCj4gPiArDQo+ID4gKwkJaWYgKGNvcHlfdG9fdXNlcihhcmdwLCAmc3VjY2Vzcywg c2l6ZW9mKF9fdTY0KSkpDQo+ID4gKwkJCXJldHVybiAtRUZBVUxUOw0KPiA+ICsJCXJldCA9IDA7 DQo+ID4gKwkJYnJlYWs7DQo+ID4gKwl9DQo+ID4gKwljYXNlIEdaVk1fQ0FQX0FSTV9WTV9JUEFf U0laRTogew0KPiA+ICsJCXJldCA9IGd6dm1fY2FwX2FybV92bV9pcGFfc2l6ZShhcmdwKTsNCj4g PiArCQlicmVhazsNCj4gPiArCX0NCj4gPiArCWRlZmF1bHQ6DQo+ID4gKwkJcmV0ID0gLUVPUE5P VFNVUFA7DQo+IA0KPiB5b3UgYWxyZWFkeSBpbml0aWFsaXplZCByZXQgdG8gLUVPUE5PVFNVUFAs IHdoeSBkb24ndCB5b3UgaW5pdGlhbGl6ZQ0KPiBpdCANCj4gd2l0aCAwLCBhbmQganVzdCBzZXQg aXQgYXMgZXJyb3IgY29kZSBoZXJlLCBhbmQgYXZvaWQgc2V0dGluZyBpdCB0byAwDQo+IG9uIA0K PiB0aGUgc3VjY2VzcyBjYXNlIGFib3ZlLg0KPiANCj4gPiArCX0NCj4gPiArDQo+ID4gKwlyZXR1 cm4gcmV0Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogZ3p2bV9hcmNoX2NyZWF0 ZV92bSgpIC0gY3JlYXRlIHZtDQo+ID4gKyAqIEB2bV90eXBlOiBWTSB0eXBlLiBPbmx5IHN1cHBv cnRzIExpbnV4IFZNIG5vdy4NCj4gPiArICoNCj4gPiArICogUmV0dXJuOg0KPiA+ICsgKiAqIHBv c2l0aXZlIHZhbHVlCS0gVk0gSUQNCj4gPiArICogKiAtRU5PTUVNCQktIE1lbW9yeSBub3QgZW5v dWdoIGZvciBzdG9yaW5nIFZNIGRhdGENCj4gPiArICovDQo+ID4gK2ludCBnenZtX2FyY2hfY3Jl YXRlX3ZtKHVuc2lnbmVkIGxvbmcgdm1fdHlwZSkNCj4gPiArew0KPiA+ICsJc3RydWN0IGFybV9z bWNjY19yZXMgcmVzOw0KPiA+ICsJaW50IHJldDsNCj4gPiArDQo+ID4gKwlyZXQgPSBnenZtX2h5 cGNhbGxfd3JhcHBlcihNVF9IVkNfR1pWTV9DUkVBVEVfVk0sIHZtX3R5cGUsIDAsDQo+ID4gMCwg MCwgMCwNCj4gPiArCQkJCSAgIDAsIDAsICZyZXMpOw0KPiA+ICsNCj4gPiArCWlmIChyZXQgPT0g MCkNCj4gPiArCQlyZXR1cm4gcmVzLmExOw0KPiA+ICsJZWxzZQ0KPiA+ICsJCXJldHVybiByZXQ7 DQo+ID4gK30NCj4gPiArDQo+ID4gK2ludCBnenZtX2FyY2hfZGVzdHJveV92bSh1MTYgdm1faWQp DQo+ID4gK3sNCj4gPiArCXN0cnVjdCBhcm1fc21jY2NfcmVzIHJlczsNCj4gPiArDQo+ID4gKwly ZXR1cm4gZ3p2bV9oeXBjYWxsX3dyYXBwZXIoTVRfSFZDX0daVk1fREVTVFJPWV9WTSwgdm1faWQs IDAsDQo+ID4gMCwgMCwgMCwNCj4gPiArCQkJCSAgICAwLCAwLCAmcmVzKTsNCj4gPiArfQ0KPiA+ ICsNCj4gPiArc3RhdGljIGludCBnenZtX3ZtX2FyY2hfZW5hYmxlX2NhcChzdHJ1Y3QgZ3p2bSAq Z3p2bSwNCj4gPiArCQkJCSAgIHN0cnVjdCBnenZtX2VuYWJsZV9jYXAgKmNhcCwNCj4gPiArCQkJ CSAgIHN0cnVjdCBhcm1fc21jY2NfcmVzICpyZXMpDQo+ID4gK3sNCj4gPiArCXJldHVybiBnenZt X2h5cGNhbGxfd3JhcHBlcihNVF9IVkNfR1pWTV9FTkFCTEVfQ0FQLCBnenZtLQ0KPiA+ID52bV9p ZCwNCj4gPiArCQkJCSAgICBjYXAtPmNhcCwgY2FwLT5hcmdzWzBdLCBjYXAtDQo+ID4gPmFyZ3Nb MV0sDQo+ID4gKwkJCQkgICAgY2FwLT5hcmdzWzJdLCBjYXAtPmFyZ3NbM10sIGNhcC0NCj4gPiA+ YXJnc1s0XSwNCj4gPiArCQkJCSAgICByZXMpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4g PiArICogZ3p2bV92bV9pb2N0bF9nZXRfcHZtZndfc2l6ZSgpIC0gR2V0IHB2bWZ3IHNpemUgZnJv bQ0KPiA+IGh5cGVydmlzb3IsIHJldHVybg0KPiA+ICsgKgkJCQkgICAgaW4geDEsIGFuZCByZXR1 cm4gdG8gdXNlcnNwYWNlIGluDQo+ID4gYXJncw0KPiA+ICsgKiBAZ3p2bTogUG9pbnRlciB0byBz dHJ1Y3QgZ3p2bS4NCj4gPiArICogQGNhcDogUG9pbnRlciB0byBzdHJ1Y3QgZ3p2bV9lbmFibGVf Y2FwLg0KPiA+ICsgKiBAYXJncDogUG9pbnRlciB0byBzdHJ1Y3QgZ3p2bV9lbmFibGVfY2FwIGlu IHVzZXIgc3BhY2UuDQo+ID4gKyAqDQo+ID4gKyAqIFJldHVybjoNCj4gPiArICogKiAwCQkJLSBT dWNjZWVkDQo+ID4gKyAqICogLUVJTlZBTAkJLSBIeXBlcnZpc29yIHJldHVybiBpbnZhbGlkIHJl c3VsdHMNCj4gPiArICogKiAtRUZBVUxUCQktIEZhaWwgdG8gY29weSBiYWNrIHRvIHVzZXJzcGFj ZSBidWZmZXINCj4gPiArICovDQo+ID4gK3N0YXRpYyBpbnQgZ3p2bV92bV9pb2N0bF9nZXRfcHZt Zndfc2l6ZShzdHJ1Y3QgZ3p2bSAqZ3p2bSwNCj4gPiArCQkJCQlzdHJ1Y3QgZ3p2bV9lbmFibGVf Y2FwICpjYXAsDQo+ID4gKwkJCQkJdm9pZCBfX3VzZXIgKmFyZ3ApDQo+ID4gK3sNCj4gPiArCXN0 cnVjdCBhcm1fc21jY2NfcmVzIHJlcyA9IHswfTsNCj4gPiArDQo+ID4gKwlpZiAoZ3p2bV92bV9h cmNoX2VuYWJsZV9jYXAoZ3p2bSwgY2FwLCAmcmVzKSAhPSAwKQ0KPiA+ICsJCXJldHVybiAtRUlO VkFMOw0KPiA+ICsNCj4gPiArCWNhcC0+YXJnc1sxXSA9IHJlcy5hMTsNCj4gPiArCWlmIChjb3B5 X3RvX3VzZXIoYXJncCwgY2FwLCBzaXplb2YoKmNhcCkpKQ0KPiA+ICsJCXJldHVybiAtRUZBVUxU Ow0KPiA+ICsNCj4gPiArCXJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiAr ICogZ3p2bV92bV9pb2N0bF9jYXBfcHZtKCkgLSBQcm9jZWVkIEdaVk1fQ0FQX0FSTV9QUk9URUNU RURfVk0ncw0KPiA+IHN1YmNvbW1hbmRzDQo+ID4gKyAqIEBnenZtOiBQb2ludGVyIHRvIHN0cnVj dCBnenZtLg0KPiA+ICsgKiBAY2FwOiBQb2ludGVyIHRvIHN0cnVjdCBnenZtX2VuYWJsZV9jYXAu DQo+ID4gKyAqIEBhcmdwOiBQb2ludGVyIHRvIHN0cnVjdCBnenZtX2VuYWJsZV9jYXAgaW4gdXNl ciBzcGFjZS4NCj4gPiArICoNCj4gPiArICogUmV0dXJuOg0KPiA+ICsgKiAqIDAJCQktIFN1Y2Nl ZWQNCj4gPiArICogKiAtRUlOVkFMCQktIEludmFsaWQgc3ViY29tbWFuZCBvciBhcmd1bWVudHMN Cj4gPiArICovDQo+ID4gK3N0YXRpYyBpbnQgZ3p2bV92bV9pb2N0bF9jYXBfcHZtKHN0cnVjdCBn enZtICpnenZtLA0KPiA+ICsJCQkJIHN0cnVjdCBnenZtX2VuYWJsZV9jYXAgKmNhcCwNCj4gPiAr CQkJCSB2b2lkIF9fdXNlciAqYXJncCkNCj4gPiArew0KPiA+ICsJaW50IHJldCA9IC1FSU5WQUw7 DQo+IA0KPiBUaGlzIGluaXRpYWxpemF0aW9uIGFwcGVhcnMgcmVkdW5kYW50IGFzIHlvdSBhbHdh eXMgcmV3cml0ZSByZXQgdG8gYQ0KPiBuZXcgDQo+IHZhbHVlIGJlbG93DQo+IA0KPiA+ICsJc3Ry dWN0IGFybV9zbWNjY19yZXMgcmVzID0gezB9Ow0KPiA+ICsNCj4gPiArCXN3aXRjaCAoY2FwLT5h cmdzWzBdKSB7DQo+ID4gKwljYXNlIEdaVk1fQ0FQX0FSTV9QVk1fU0VUX1BWTUZXX0lQQToNCj4g PiArCQlmYWxsdGhyb3VnaDsNCj4gPiArCWNhc2UgR1pWTV9DQVBfQVJNX1BWTV9TRVRfUFJPVEVD VEVEX1ZNOg0KPiA+ICsJCXJldCA9IGd6dm1fdm1fYXJjaF9lbmFibGVfY2FwKGd6dm0sIGNhcCwg JnJlcyk7DQo+ID4gKwkJYnJlYWs7DQo+ID4gKwljYXNlIEdaVk1fQ0FQX0FSTV9QVk1fR0VUX1BW TUZXX1NJWkU6DQo+ID4gKwkJcmV0ID0gZ3p2bV92bV9pb2N0bF9nZXRfcHZtZndfc2l6ZShnenZt LCBjYXAsIGFyZ3ApOw0KPiA+ICsJCWJyZWFrOw0KPiA+ICsJZGVmYXVsdDoNCj4gPiArCQlyZXQg PSAtRUlOVkFMOw0KPiA+ICsJCWJyZWFrOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXJldHVybiBy ZXQ7DQo+ID4gK30NCj4gPiArDQo+ID4gK2ludCBnenZtX3ZtX2lvY3RsX2FyY2hfZW5hYmxlX2Nh cChzdHJ1Y3QgZ3p2bSAqZ3p2bSwNCj4gPiArCQkJCSAgc3RydWN0IGd6dm1fZW5hYmxlX2NhcCAq Y2FwLA0KPiA+ICsJCQkJICB2b2lkIF9fdXNlciAqYXJncCkNCj4gPiArew0KPiA+ICsJaW50IHJl dCA9IC1FSU5WQUw7DQo+IA0KPiBzYW1lIGhlcmUNCj4gPiArDQo+ID4gKwlzd2l0Y2ggKGNhcC0+ Y2FwKSB7DQo+ID4gKwljYXNlIEdaVk1fQ0FQX0FSTV9QUk9URUNURURfVk06DQo+ID4gKwkJcmV0 ID0gZ3p2bV92bV9pb2N0bF9jYXBfcHZtKGd6dm0sIGNhcCwgYXJncCk7DQo+ID4gKwkJYnJlYWs7 DQo+ID4gKwlkZWZhdWx0Og0KPiA+ICsJCXJldCA9IC1FSU5WQUw7DQo+ID4gKwkJYnJlYWs7DQo+ ID4gKwl9DQo+ID4gKw0KPiA+ICsJcmV0dXJuIHJldDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoq DQo+ID4gKyAqIGd6dm1faHZhX3RvX3BhX2FyY2goKSAtIGNvbnZlcnRzIGh2YSB0byBwYSB3aXRo IGFyY2gtc3BlY2lmaWMNCj4gPiB3YXkNCj4gPiArICogQGh2YTogSG9zdCB2aXJ0dWFsIGFkZHJl c3MuDQo+ID4gKyAqDQo+ID4gKyAqIFJldHVybjogMCBpZiB0cmFuc2xhdGlvbiBlcnJvcg0KPiAN Cj4gVGhpcyBpcyBhIGJpdCBtaXNsZWFkaW5nLCBpZiB5b3UgbG9vayBhdCB0aGUgY29kZSwgeW91 IHJldHVybiAwIGlmDQo+IHRoZSANCj4gYml0IFNZU19QQVJfRUwxX0YgaXMgcHJlc2VudCwgYnV0 IGFsc28gcmV0dXJuIDAgaWYgYml0IFBBUl9QQTQ3X01BU0sNCj4gaXMgDQo+IG5vdCBwcmVzZW50 LiBBcmUgdGhvc2Ugc2l0dWF0aW9ucyBpZGVudGljYWwgPw0KPiANCj4gQWxzbywgaXQncyBhIGJp dCBzdHJhbmdlIHRvIHJldHVybiAwIGZvciBhbiBlcnJvciBjYXNlLg0KPiANCj4gPiArICovDQo+ ID4gK3U2NCBnenZtX2h2YV90b19wYV9hcmNoKHU2NCBodmEpDQo+ID4gK3sNCj4gPiArCXU2NCBw YXI7DQo+ID4gKwl1bnNpZ25lZCBsb25nIGZsYWdzOw0KPiA+ICsNCj4gPiArCWxvY2FsX2lycV9z YXZlKGZsYWdzKTsNCj4gPiArCWFzbSB2b2xhdGlsZSgiYXQgczFlMXIsICUwIiA6OiAiciIgKGh2 YSkpOw0KPiA+ICsJaXNiKCk7DQo+ID4gKwlwYXIgPSByZWFkX3N5c3JlZ19wYXIoKTsNCj4gPiAr CWxvY2FsX2lycV9yZXN0b3JlKGZsYWdzKTsNCj4gPiArDQo+ID4gKwlpZiAocGFyICYgU1lTX1BB Ul9FTDFfRikNCj4gPiArCQlyZXR1cm4gMDsNCj4gPiArDQo+ID4gKwlyZXR1cm4gcGFyICYgUEFS X1BBNDdfTUFTSzsNCj4gPiArfQ0KPiA+IGRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUv dWFwaS9hc20vZ3p2bV9hcmNoLmgNCj4gPiBiL2FyY2gvYXJtNjQvaW5jbHVkZS91YXBpL2FzbS9n enZtX2FyY2guaA0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAw MDAwLi44NDdiYjYyN2E2NWQNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvYXJjaC9hcm02 NC9pbmNsdWRlL3VhcGkvYXNtL2d6dm1fYXJjaC5oDQo+ID4gQEAgLTAsMCArMSwyMCBAQA0KPiA+ ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBXSVRIIExpbnV4LXN5c2NhbGwt bm90ZSAqLw0KPiA+ICsvKg0KPiA+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMjMgTWVkaWFUZWsgSW5j Lg0KPiA+ICsgKi8NCj4gPiArDQo+ID4gKyNpZm5kZWYgX19HWlZNX0FSQ0hfSF9fDQo+ID4gKyNk ZWZpbmUgX19HWlZNX0FSQ0hfSF9fDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8bGludXgvdHlwZXMu aD4NCj4gPiArDQo+ID4gKyNkZWZpbmUgR1pWTV9DQVBfQVJNX1ZNX0lQQV9TSVpFCTE2NQ0KPiA+ ICsjZGVmaW5lIEdaVk1fQ0FQX0FSTV9QUk9URUNURURfVk0JMHhmZmJhZGFiMQ0KPiA+ICsNCj4g PiArLyogc3ViLWNvbW1hbmRzIHB1dCBpbiBhcmdzWzBdIGZvciBHWlZNX0NBUF9BUk1fUFJPVEVD VEVEX1ZNICovDQo+ID4gKyNkZWZpbmUgR1pWTV9DQVBfQVJNX1BWTV9TRVRfUFZNRldfSVBBCQkw DQo+ID4gKyNkZWZpbmUgR1pWTV9DQVBfQVJNX1BWTV9HRVRfUFZNRldfU0laRQkJMQ0KPiA+ICsv KiBHWlZNX0NBUF9BUk1fUFZNX1NFVF9QUk9URUNURURfVk0gb25seSBzZXRzIHByb3RlY3RlZCBi dXQgbm90DQo+ID4gbG9hZCBwdm1mdyAqLw0KPiA+ICsjZGVmaW5lIEdaVk1fQ0FQX0FSTV9QVk1f U0VUX1BST1RFQ1RFRF9WTQkyDQo+ID4gKw0KPiA+ICsjZW5kaWYgLyogX19HWlZNX0FSQ0hfSF9f ICovDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlydC9LY29uZmlnIGIvZHJpdmVycy92aXJ0 L0tjb25maWcNCj4gPiBpbmRleCBmNzlhYjEzYTVjMjguLjliYmYwYmRmNjcyYyAxMDA2NDQNCj4g PiAtLS0gYS9kcml2ZXJzL3ZpcnQvS2NvbmZpZw0KPiA+ICsrKyBiL2RyaXZlcnMvdmlydC9LY29u ZmlnDQo+ID4gQEAgLTU0LDQgKzU0LDYgQEAgc291cmNlICJkcml2ZXJzL3ZpcnQvY29jby9zZXYt Z3Vlc3QvS2NvbmZpZyINCj4gPiAgIA0KPiA+ICAgc291cmNlICJkcml2ZXJzL3ZpcnQvY29jby90 ZHgtZ3Vlc3QvS2NvbmZpZyINCj4gPiAgIA0KPiA+ICtzb3VyY2UgImRyaXZlcnMvdmlydC9nZW5p ZXpvbmUvS2NvbmZpZyINCj4gPiArDQo+ID4gICBlbmRpZg0KPiA+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL3ZpcnQvZ2VuaWV6b25lL0tjb25maWcNCj4gPiBiL2RyaXZlcnMvdmlydC9nZW5pZXpvbmUv S2NvbmZpZw0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMDAw Li4yNjQzZmI4OTEzY2MNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvZHJpdmVycy92aXJ0 L2dlbmllem9uZS9LY29uZmlnDQo+ID4gQEAgLTAsMCArMSwxNiBAQA0KPiA+ICsjIFNQRFgtTGlj ZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkNCj4gPiArDQo+ID4gK2NvbmZpZyBNVEtfR1pW TQ0KPiA+ICsJdHJpc3RhdGUgIkdlbmllWm9uZSBIeXBlcnZpc29yIGRyaXZlciBmb3IgZ3Vlc3Qg Vk0gb3BlcmF0aW9uIg0KPiA+ICsJZGVwZW5kcyBvbiBBUk02NA0KPiANCj4gaWYgb25seSBtZWRp YXRlayBTb0MgaXMgc3VwcG9ydGVkLCBzaG91bGQgaXQgZGVwZW5kIG9uIGl0IGhlcmUgPw0KPiAN Cj4gPiArCWhlbHANCj4gPiArCSAgVGhpcyBkcml2ZXIsIGd6dm0sIGVuYWJsZXMgdG8gcnVuIGd1 ZXN0IFZNcyBvbiBNVEsgR2VuaWVab25lDQo+ID4gKwkgIGh5cGVydmlzb3IuIEl0IGV4cG9ydHMg a3ZtLWxpa2UgaW50ZXJmYWNlcyBmb3IgVk1NIChlLmcuLA0KPiA+IGNyb3N2bSkgaW4NCj4gPiAr CSAgb3JkZXIgdG8gb3BlcmF0ZSBndWVzdCBWTXMgb24gR2VuaWVab25lIGh5cGVydmlzb3IuDQo+ ID4gKw0KPiA+ICsJICBHZW5pZVpvbmUgaHlwZXJ2aXNvciBub3cgb25seSBzdXBwb3J0cyBNZWRp YVRlayBTb0MgYW5kIGFybTY0DQo+ID4gKwkgIGFyY2hpdGVjdHVyZS4NCj4gPiArDQo+ID4gKwkg IFNlbGVjdCBNIGlmIHlvdSB3YW50IGl0IGJlIGJ1aWx0IGFzIGEgbW9kdWxlIChnenZtLmtvKS4N Cj4gPiArDQo+ID4gKwkgIElmIHVuc3VyZSwgc2F5IE4uDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvdmlydC9nZW5pZXpvbmUvTWFrZWZpbGUNCj4gPiBiL2RyaXZlcnMvdmlydC9nZW5pZXpvbmUv TWFrZWZpbGUNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAw MC4uMDY2ZWZkZGMwYjljDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL2RyaXZlcnMvdmly dC9nZW5pZXpvbmUvTWFrZWZpbGUNCj4gPiBAQCAtMCwwICsxLDEwIEBADQo+ID4gKyMgU1BEWC1M aWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQ0KPiA+ICsjDQo+ID4gKyMgTWFrZWZpbGUg Zm9yIEdlbmllWm9uZSBkcml2ZXIsIHRoaXMgZmlsZSBzaG91bGQgYmUgaW5jbHVkZSBpbg0KPiA+ IGFyY2gncw0KPiA+ICsjIHRvIGF2b2lkIHR3byBrbyBiZWluZyBnZW5lcmF0ZWQuDQo+ID4gKyMN Cj4gPiArDQo+ID4gK0daVk1fRElSID89IC4uLy4uLy4uL2RyaXZlcnMvdmlydC9nZW5pZXpvbmUN Cj4gPiArDQo+ID4gK2d6dm0teSA6PSAkKEdaVk1fRElSKS9nenZtX21haW4ubyAkKEdaVk1fRElS KS9nenZtX3ZtLm8NCj4gPiArDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlydC9nZW5pZXpv bmUvZ3p2bV9tYWluLmMNCj4gPiBiL2RyaXZlcnMvdmlydC9nZW5pZXpvbmUvZ3p2bV9tYWluLmMN Cj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAwMC4uYjYyOWI0 MWEwY2Q5DQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL2RyaXZlcnMvdmlydC9nZW5pZXpv bmUvZ3p2bV9tYWluLmMNCj4gPiBAQCAtMCwwICsxLDE0MyBAQA0KPiA+ICsvLyBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogR1BMLTIuMA0KPiA+ICsvKg0KPiA+ICsgKiBDb3B5cmlnaHQgKGMpIDIw MjMgTWVkaWFUZWsgSW5jLg0KPiA+ICsgKi8NCj4gPiArDQo+ID4gKyNpbmNsdWRlIDxsaW51eC9h bm9uX2lub2Rlcy5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvZGV2aWNlLmg+DQo+ID4gKyNpbmNs dWRlIDxsaW51eC9maWxlLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9rZGV2X3QuaD4NCj4gPiAr I2luY2x1ZGUgPGxpbnV4L21pc2NkZXZpY2UuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L21vZHVs ZS5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvb2YuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L3Bs YXRmb3JtX2RldmljZS5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvc2xhYi5oPg0KPiA+ICsjaW5j bHVkZSA8bGludXgvZ3p2bV9kcnYuaD4NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBnenZtX2Vy cl90b19lcnJubygpIC0gQ29udmVydCBnZW5pZXpvbmUgcmV0dXJuIHZhbHVlIHRvDQo+ID4gc3Rh bmRhcmQgZXJybm8NCj4gPiArICoNCj4gPiArICogQGVycjogUmV0dXJuIHZhbHVlIGZyb20gZ2Vu aWV6b25lIGZ1bmN0aW9uIHJldHVybg0KPiA+ICsgKg0KPiA+ICsgKiBSZXR1cm46IFN0YW5kYXJk IGVycm5vDQo+ID4gKyAqLw0KPiA+ICtpbnQgZ3p2bV9lcnJfdG9fZXJybm8odW5zaWduZWQgbG9u ZyBlcnIpDQo+ID4gK3sNCj4gPiArCWludCBnel9lcnIgPSAoaW50KWVycjsNCj4gPiArDQo+ID4g Kwlzd2l0Y2ggKGd6X2Vycikgew0KPiA+ICsJY2FzZSAwOg0KPiA+ICsJCXJldHVybiAwOw0KPiA+ ICsJY2FzZSBFUlJfTk9fTUVNT1JZOg0KPiA+ICsJCXJldHVybiAtRU5PTUVNOw0KPiA+ICsJY2Fz ZSBFUlJfTk9UX1NVUFBPUlRFRDoNCj4gPiArCQlyZXR1cm4gLUVPUE5PVFNVUFA7DQo+ID4gKwlj YXNlIEVSUl9OT1RfSU1QTEVNRU5URUQ6DQo+ID4gKwkJcmV0dXJuIC1FT1BOT1RTVVBQOw0KPiA+ ICsJY2FzZSBFUlJfRkFVTFQ6DQo+ID4gKwkJcmV0dXJuIC1FRkFVTFQ7DQo+ID4gKwlkZWZhdWx0 Og0KPiA+ICsJCWJyZWFrOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXJldHVybiAtRUlOVkFMOw0K PiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogZ3p2bV9kZXZfaW9jdGxfY2hlY2tfZXh0 ZW5zaW9uKCkgLSBDaGVjayBpZiBnaXZlbiBjYXBhYmlsaXR5IGlzDQo+ID4gc3VwcG9ydA0KPiA+ ICsgKgkJCQkgICAgICBvciBub3QNCj4gPiArICoNCj4gPiArICogQGd6dm06IFBvaW50ZXIgdG8g c3RydWN0IGd6dm0NCj4gPiArICogQGFyZ3M6IFBvaW50ZXIgaW4gdTY0IGZyb20gdXNlcnNwYWNl DQo+ID4gKyAqDQo+ID4gKyAqIFJldHVybjoNCj4gPiArICogKiAwCQkJLSBTdXBwb3J0LCBubyBl cnJvcg0KPiANCj4gU3VwcG9ydGVkID8NCj4gDQo+ID4gKyAqICogLUVPUE5PVFNVUFAJLSBOb3Qg c3VwcG9ydA0KPiA+ICsgKiAqIC1FRkFVTFQJCS0gRmFpbGVkIHRvIGdldCBkYXRhIGZyb20gdXNl cnNwYWNlDQo+ID4gKyAqLw0KPiA+ICtsb25nIGd6dm1fZGV2X2lvY3RsX2NoZWNrX2V4dGVuc2lv bihzdHJ1Y3QgZ3p2bSAqZ3p2bSwgdW5zaWduZWQNCj4gPiBsb25nIGFyZ3MpDQo+ID4gK3sNCj4g PiArCV9fdTY0IGNhcDsNCj4gPiArCXZvaWQgX191c2VyICphcmdwID0gKHZvaWQgX191c2VyICop YXJnczsNCj4gPiArDQo+ID4gKwlpZiAoY29weV9mcm9tX3VzZXIoJmNhcCwgYXJncCwgc2l6ZW9m KHVpbnQ2NF90KSkpDQo+ID4gKwkJcmV0dXJuIC1FRkFVTFQ7DQo+ID4gKwlyZXR1cm4gZ3p2bV9h cmNoX2NoZWNrX2V4dGVuc2lvbihnenZtLCBjYXAsIGFyZ3ApOw0KPiA+ICt9DQo+ID4gKw0KPiA+ ICtzdGF0aWMgbG9uZyBnenZtX2Rldl9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQg aW50IGNtZCwNCj4gPiArCQkJICAgdW5zaWduZWQgbG9uZyB1c2VyX2FyZ3MpDQo+ID4gK3sNCj4g PiArCWxvbmcgcmV0ID0gLUVOT1RUWTsNCj4gDQo+IGFnYWluIHJlZHVuZGFudCBpbml0aWFsaXph dGlvbnMNCj4gPiArDQo+ID4gKwlzd2l0Y2ggKGNtZCkgew0KPiA+ICsJY2FzZSBHWlZNX0NSRUFU RV9WTToNCj4gPiArCQlyZXQgPSBnenZtX2Rldl9pb2N0bF9jcmVhdGVfdm0odXNlcl9hcmdzKTsN Cj4gPiArCQlicmVhazsNCj4gPiArCWNhc2UgR1pWTV9DSEVDS19FWFRFTlNJT046DQo+ID4gKwkJ aWYgKCF1c2VyX2FyZ3MpDQo+ID4gKwkJCXJldHVybiAtRUlOVkFMOw0KPiA+ICsJCXJldCA9IGd6 dm1fZGV2X2lvY3RsX2NoZWNrX2V4dGVuc2lvbihOVUxMLCB1c2VyX2FyZ3MpOw0KPiA+ICsJCWJy ZWFrOw0KPiA+ICsJZGVmYXVsdDoNCj4gPiArCQlyZXQgPSAtRU5PVFRZOw0KPiA+ICsJfQ0KPiA+ ICsNCj4gPiArCXJldHVybiByZXQ7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBjb25zdCBz dHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGd6dm1fY2hhcmRldl9vcHMgPSB7DQo+ID4gKwkudW5sb2Nr ZWRfaW9jdGwgPSBnenZtX2Rldl9pb2N0bCwNCj4gPiArCS5sbHNlZWsJCT0gbm9vcF9sbHNlZWss DQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdGF0aWMgc3RydWN0IG1pc2NkZXZpY2UgZ3p2bV9kZXYg PSB7DQo+ID4gKwkubWlub3IgPSBNSVNDX0RZTkFNSUNfTUlOT1IsDQo+ID4gKwkubmFtZSA9IEtC VUlMRF9NT0ROQU1FLA0KPiA+ICsJLmZvcHMgPSAmZ3p2bV9jaGFyZGV2X29wcywNCj4gPiArfTsN Cj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgZ3p2bV9kcnZfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2Rl dmljZSAqcGRldikNCj4gPiArew0KPiA+ICsJaW50IHJldDsNCj4gPiArDQo+ID4gKwlpZiAoZ3p2 bV9hcmNoX3Byb2JlKCkgIT0gMCkgew0KPiA+ICsJCWRldl9lcnIoJnBkZXYtPmRldiwgIk5vdCBm b3VuZCBhdmFpbGFibGUgY29uZHVpdFxuIik7DQo+ID4gKwkJcmV0dXJuIC1FTk9ERVY7DQo+ID4g Kwl9DQo+ID4gKw0KPiA+ICsJcmV0ID0gbWlzY19yZWdpc3RlcigmZ3p2bV9kZXYpOw0KPiANCj4g cmV0dXJuIG1pc2NfcmVnaXN0ZXIoLi4uKSA/DQo+IA0KPiA+ICsJaWYgKHJldCkNCj4gPiArCQly ZXR1cm4gcmV0Ow0KPiA+ICsNCj4gPiArCXJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtz dGF0aWMgaW50IGd6dm1fZHJ2X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0K PiA+ICt7DQo+ID4gKwlnenZtX2Rlc3Ryb3lfYWxsX3ZtcygpOw0KPiA+ICsJbWlzY19kZXJlZ2lz dGVyKCZnenZtX2Rldik7DQo+ID4gKwlyZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3Rh dGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgZ3p2bV9vZl9tYXRjaFtdID0gew0KPiA+ICsJ eyAuY29tcGF0aWJsZSA9ICJtZWRpYXRlayxnZW5pZXpvbmUtaHlwIiwgfSwNCj4gPiArCXsvKiBz ZW50aW5lbCAqL30sDQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdGF0aWMgc3RydWN0IHBsYXRmb3Jt X2RyaXZlciBnenZtX2RyaXZlciA9IHsNCj4gPiArCS5wcm9iZSA9IGd6dm1fZHJ2X3Byb2JlLA0K PiA+ICsJLnJlbW92ZSA9IGd6dm1fZHJ2X3JlbW92ZSwNCj4gPiArCS5kcml2ZXIgPSB7DQo+ID4g KwkJLm5hbWUgPSBLQlVJTERfTU9ETkFNRSwNCj4gPiArCQkub3duZXIgPSBUSElTX01PRFVMRSwN Cj4gPiArCQkub2ZfbWF0Y2hfdGFibGUgPSBnenZtX29mX21hdGNoLA0KPiA+ICsJfSwNCj4gPiAr fTsNCj4gPiArDQo+ID4gK21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoZ3p2bV9kcml2ZXIpOw0KPiA+ ICsNCj4gPiArTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgZ3p2bV9vZl9tYXRjaCk7DQo+ID4gK01P RFVMRV9BVVRIT1IoIk1lZGlhVGVrIik7DQo+ID4gK01PRFVMRV9ERVNDUklQVElPTigiR2VuaWVa b25lIGludGVyZmFjZSBmb3IgVk1NIik7DQo+ID4gK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsNCj4g PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy92aXJ0L2dlbmllem9uZS9nenZtX3ZtLmMNCj4gPiBiL2Ry aXZlcnMvdmlydC9nZW5pZXpvbmUvZ3p2bV92bS5jDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQN Cj4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLmVlNzUxMzY5ZmQ0Yg0KPiA+IC0tLSAvZGV2L251bGwN Cj4gPiArKysgYi9kcml2ZXJzL3ZpcnQvZ2VuaWV6b25lL2d6dm1fdm0uYw0KPiA+IEBAIC0wLDAg KzEsNDAwIEBADQo+ID4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wDQo+ID4g Ky8qDQo+ID4gKyAqIENvcHlyaWdodCAoYykgMjAyMyBNZWRpYVRlayBJbmMuDQo+ID4gKyAqLw0K PiA+ICsNCj4gPiArI2luY2x1ZGUgPGxpbnV4L2Fub25faW5vZGVzLmg+DQo+ID4gKyNpbmNsdWRl IDxsaW51eC9maWxlLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9rZGV2X3QuaD4NCj4gPiArI2lu Y2x1ZGUgPGxpbnV4L21tLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4NCj4gPiAr I2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgv c2xhYi5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvZ3p2bV9kcnYuaD4NCj4gPiArDQo+ID4gK3N0 YXRpYyBERUZJTkVfTVVURVgoZ3p2bV9saXN0X2xvY2spOw0KPiA+ICtzdGF0aWMgTElTVF9IRUFE KGd6dm1fbGlzdCk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogaHZhX3RvX3BhX2Zhc3QoKSAt IGNvbnZlcnRzIGh2YSB0byBwYSBpbiBnZW5lcmljIGZhc3Qgd2F5DQo+ID4gKyAqIEBodmE6IEhv c3QgdmlydHVhbCBhZGRyZXNzLg0KPiA+ICsgKg0KPiA+ICsgKiBSZXR1cm46IDAgaWYgdHJhbnNs YXRpb24gZXJyb3INCj4gPiArICovDQo+ID4gK3N0YXRpYyB1NjQgaHZhX3RvX3BhX2Zhc3QodTY0 IGh2YSkNCj4gPiArew0KPiA+ICsJc3RydWN0IHBhZ2UgKnBhZ2VbMV07DQo+ID4gKw0KPiA+ICsJ dTY0IHBmbjsNCj4gPiArDQo+ID4gKwlpZiAoZ2V0X3VzZXJfcGFnZV9mYXN0X29ubHkoaHZhLCAw LCBwYWdlKSkgew0KPiA+ICsJCXBmbiA9IHBhZ2VfdG9fcGh5cyhwYWdlWzBdKTsNCj4gPiArCQlw dXRfcGFnZSgoc3RydWN0IHBhZ2UgKilwYWdlKTsNCj4gPiArCQlyZXR1cm4gcGZuOw0KPiA+ICsJ fSBlbHNlIHsNCj4gDQo+IHlvdSBjYW4gcmVtb3ZlIHRoZSAnZWxzZScgYW5kIGp1c3QgcmV0dXJu IDAgaGVyZSBhcyB5b3UgcmV0dXJuIHBmbg0KPiBpbiANCj4gdGhlIGlmKHRydWUpIGNhc2UuDQo+ IA0KPiA+ICsJCXJldHVybiAwOw0KPiA+ICsJfQ0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4g PiArICogaHZhX3RvX3BhX3Nsb3coKSAtIG5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIG1heSBzbGVl cA0KPiA+ICsgKiBAaHZhOiBIb3N0IHZpcnR1YWwgYWRkcmVzcy4NCj4gPiArICoNCj4gPiArICog UmV0dXJuOiAwIGlmIHRyYW5zbGF0aW9uIGVycm9yDQo+ID4gKyAqLw0KPiA+ICtzdGF0aWMgdTY0 IGh2YV90b19wYV9zbG93KHU2NCBodmEpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBwYWdlICpwYWdl Ow0KPiA+ICsJaW50IG5wYWdlczsNCj4gPiArCXU2NCBwZm47DQo+ID4gKw0KPiA+ICsJbnBhZ2Vz ID0gZ2V0X3VzZXJfcGFnZXNfdW5sb2NrZWQoaHZhLCAxLCAmcGFnZSwgMCk7DQo+ID4gKwlpZiAo bnBhZ2VzICE9IDEpDQo+ID4gKwkJcmV0dXJuIDA7DQo+ID4gKw0KPiA+ICsJcGZuID0gcGFnZV90 b19waHlzKHBhZ2UpOw0KPiA+ICsJcHV0X3BhZ2UocGFnZSk7DQo+ID4gKw0KPiA+ICsJcmV0dXJu IHBmbjsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHU2NCBnenZtX2dmbl90b19odmFfbWVt c2xvdChzdHJ1Y3QgZ3p2bV9tZW1zbG90ICptZW1zbG90LA0KPiA+IHU2NCBnZm4pDQo+ID4gK3sN Cj4gPiArCXU2NCBvZmZzZXQgPSBnZm4gLSBtZW1zbG90LT5iYXNlX2dmbjsNCj4gPiArDQo+ID4g KwlyZXR1cm4gbWVtc2xvdC0+dXNlcnNwYWNlX2FkZHIgKyBvZmZzZXQgKiBQQUdFX1NJWkU7DQo+ ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyB1NjQgX19nenZtX2dmbl90b19wZm5fbWVtc2xvdChz dHJ1Y3QgZ3p2bV9tZW1zbG90ICptZW1zbG90LA0KPiA+IHU2NCBnZm4pDQo+ID4gK3sNCj4gPiAr CXU2NCBodmEsIHBhOw0KPiA+ICsNCj4gPiArCWh2YSA9IGd6dm1fZ2ZuX3RvX2h2YV9tZW1zbG90 KG1lbXNsb3QsIGdmbik7DQo+ID4gKw0KPiA+ICsJcGEgPSBnenZtX2h2YV90b19wYV9hcmNoKGh2 YSk7DQo+ID4gKwlpZiAocGEgIT0gMCkNCj4gPiArCQlyZXR1cm4gUEhZU19QRk4ocGEpOw0KPiA+ ICsNCj4gPiArCXBhID0gaHZhX3RvX3BhX2Zhc3QoaHZhKTsNCj4gPiArCWlmIChwYSkNCj4gPiAr CQlyZXR1cm4gUEhZU19QRk4ocGEpOw0KPiA+ICsNCj4gPiArCXBhID0gaHZhX3RvX3BhX3Nsb3co aHZhKTsNCj4gPiArCWlmIChwYSkNCj4gPiArCQlyZXR1cm4gUEhZU19QRk4ocGEpOw0KPiA+ICsN Cj4gPiArCXJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogZ3p2bV9n Zm5fdG9fcGZuX21lbXNsb3QoKSAtIFRyYW5zbGF0ZSBnZm4gKGd1ZXN0IGlwYSkgdG8gcGZuDQo+ ID4gKGhvc3QgcGEpLA0KPiA+ICsgKgkJCSAgICAgICByZXN1bHQgaXMgaW4gQHBmbg0KPiA+ICsg KiBAbWVtc2xvdDogUG9pbnRlciB0byBzdHJ1Y3QgZ3p2bV9tZW1zbG90Lg0KPiA+ICsgKiBAZ2Zu OiBHdWVzdCBmcmFtZSBudW1iZXIuDQo+ID4gKyAqIEBwZm46IEhvc3QgcGFnZSBmcmFtZSBudW1i ZXIuDQo+ID4gKyAqDQo+ID4gKyAqIFJldHVybjoNCj4gPiArICogKiAwCQkJLSBTdWNjZWVkDQo+ ID4gKyAqICogLUVGQVVMVAkJLSBGYWlsZWQgdG8gY29udmVydA0KPiA+ICsgKi8NCj4gPiArc3Rh dGljIGludCBnenZtX2dmbl90b19wZm5fbWVtc2xvdChzdHJ1Y3QgZ3p2bV9tZW1zbG90ICptZW1z bG90LA0KPiA+IHU2NCBnZm4sDQo+ID4gKwkJCQkgICB1NjQgKnBmbikNCj4gPiArew0KPiA+ICsJ dTY0IF9fcGZuOw0KPiA+ICsNCj4gPiArCWlmICghbWVtc2xvdCkNCj4gPiArCQlyZXR1cm4gLUVG QVVMVDsNCj4gPiArDQo+ID4gKwlfX3BmbiA9IF9fZ3p2bV9nZm5fdG9fcGZuX21lbXNsb3QobWVt c2xvdCwgZ2ZuKTsNCj4gPiArCWlmIChfX3BmbiA9PSAwKSB7DQo+ID4gKwkJKnBmbiA9IDA7DQo+ ID4gKwkJcmV0dXJuIC1FRkFVTFQ7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJKnBmbiA9IF9fcGZu Ow0KPiA+ICsNCj4gPiArCXJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiAr ICogZmlsbF9jb25zdGl0dWVudHMoKSAtIFBvcHVsYXRlIHBhIHRvIGJ1ZmZlciB1bnRpbCBmdWxs DQo+ID4gKyAqIEBjb25zdGk6IFBvaW50ZXIgdG8gc3RydWN0IG1lbV9yZWdpb25fYWRkcl9yYW5n ZS4NCj4gPiArICogQGNvbnN0aV9jbnQ6IENvbnN0aXR1ZW50IGNvdW50Lg0KPiA+ICsgKiBAbWF4 X25yX2NvbnN0aTogTWF4aW11bSBudW1iZXIgb2YgY29uc3RpdHVlbnQgY291bnQuDQo+ID4gKyAq IEBnZm46IEd1ZXN0IGZyYW1lIG51bWJlci4NCj4gPiArICogQHRvdGFsX3BhZ2VzOiBUb3RhbCBw YWdlIG51bWJlcnMuDQo+ID4gKyAqIEBzbG90OiBQb2ludGVyIHRvIHN0cnVjdCBnenZtX21lbXNs b3QuDQo+ID4gKyAqDQo+ID4gKyAqIFJldHVybjogaG93IG1hbnkgcGFnZXMgd2UndmUgZmlsbCBp biwgbmVnYXRpdmUgaWYgZXJyb3INCj4gPiArICovDQo+ID4gK3N0YXRpYyBpbnQgZmlsbF9jb25z dGl0dWVudHMoc3RydWN0IG1lbV9yZWdpb25fYWRkcl9yYW5nZSAqY29uc3RpLA0KPiA+ICsJCQkg ICAgIGludCAqY29uc3RpX2NudCwgaW50IG1heF9ucl9jb25zdGksIHU2NA0KPiA+IGdmbiwNCj4g PiArCQkJICAgICB1MzIgdG90YWxfcGFnZXMsIHN0cnVjdCBnenZtX21lbXNsb3QNCj4gPiAqc2xv dCkNCj4gPiArew0KPiA+ICsJdTY0IHBmbiwgcHJldl9wZm4sIGdmbl9lbmQ7DQo+ID4gKwlpbnQg bnJfcGFnZXMgPSAxOw0KPiA+ICsJaW50IGkgPSAwOw0KPiA+ICsNCj4gPiArCWlmICh1bmxpa2Vs eSh0b3RhbF9wYWdlcyA9PSAwKSkNCj4gPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiArCWdmbl9l bmQgPSBnZm4gKyB0b3RhbF9wYWdlczsNCj4gPiArDQo+ID4gKwkvKiBlbnRyeSAwICovDQo+ID4g KwlpZiAoZ3p2bV9nZm5fdG9fcGZuX21lbXNsb3Qoc2xvdCwgZ2ZuLCAmcGZuKSAhPSAwKQ0KPiA+ ICsJCXJldHVybiAtRUZBVUxUOw0KPiA+ICsJY29uc3RpWzBdLmFkZHJlc3MgPSBQRk5fUEhZUyhw Zm4pOw0KPiA+ICsJY29uc3RpWzBdLnBnX2NudCA9IDE7DQo+ID4gKwlnZm4rKzsNCj4gPiArCXBy ZXZfcGZuID0gcGZuOw0KPiA+ICsNCj4gPiArCXdoaWxlIChpIDwgbWF4X25yX2NvbnN0aSAmJiBn Zm4gPCBnZm5fZW5kKSB7DQo+ID4gKwkJaWYgKGd6dm1fZ2ZuX3RvX3Bmbl9tZW1zbG90KHNsb3Qs IGdmbiwgJnBmbikgIT0gMCkNCj4gPiArCQkJcmV0dXJuIC1FRkFVTFQ7DQo+ID4gKwkJaWYgKHBm biA9PSAocHJldl9wZm4gKyAxKSkgew0KPiA+ICsJCQljb25zdGlbaV0ucGdfY250Kys7DQo+ID4g KwkJfSBlbHNlIHsNCj4gPiArCQkJaSsrOw0KPiA+ICsJCQlpZiAoaSA+PSBtYXhfbnJfY29uc3Rp KQ0KPiA+ICsJCQkJYnJlYWs7DQo+ID4gKwkJCWNvbnN0aVtpXS5hZGRyZXNzID0gUEZOX1BIWVMo cGZuKTsNCj4gPiArCQkJY29uc3RpW2ldLnBnX2NudCA9IDE7DQo+ID4gKwkJfQ0KPiA+ICsJCXBy ZXZfcGZuID0gcGZuOw0KPiA+ICsJCWdmbisrOw0KPiA+ICsJCW5yX3BhZ2VzKys7DQo+ID4gKwl9 DQo+ID4gKwlpZiAoaSAhPSBtYXhfbnJfY29uc3RpKQ0KPiA+ICsJCWkrKzsNCj4gPiArCSpjb25z dGlfY250ID0gaTsNCj4gPiArDQo+ID4gKwlyZXR1cm4gbnJfcGFnZXM7DQo+ID4gK30NCj4gPiAr DQo+ID4gKy8qIHJlZ2lzdGVyX21lbXNsb3RfYWRkcl9yYW5nZSgpIC0gUmVnaXN0ZXIgbWVtb3J5 IHJlZ2lvbiB0byBHWiAqLw0KPiA+ICtzdGF0aWMgaW50DQo+ID4gK3JlZ2lzdGVyX21lbXNsb3Rf YWRkcl9yYW5nZShzdHJ1Y3QgZ3p2bSAqZ3p2bSwgc3RydWN0IGd6dm1fbWVtc2xvdA0KPiA+ICpt ZW1zbG90KQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgZ3p2bV9tZW1vcnlfcmVnaW9uX3JhbmdlcyAq cmVnaW9uOw0KPiA+ICsJdTMyIGJ1Zl9zaXplOw0KPiA+ICsJaW50IG1heF9ucl9jb25zdGksIHJl bWFpbl9wYWdlczsNCj4gPiArCXU2NCBnZm4sIGdmbl9lbmQ7DQo+ID4gKw0KPiA+ICsJYnVmX3Np emUgPSBQQUdFX1NJWkUgKiAyOw0KPiA+ICsJcmVnaW9uID0gYWxsb2NfcGFnZXNfZXhhY3QoYnVm X3NpemUsIEdGUF9LRVJORUwpOw0KPiA+ICsJaWYgKCFyZWdpb24pDQo+ID4gKwkJcmV0dXJuIC1F Tk9NRU07DQo+ID4gKwltYXhfbnJfY29uc3RpID0gKGJ1Zl9zaXplIC0gc2l6ZW9mKCpyZWdpb24p KSAvDQo+ID4gKwkJCXNpemVvZihzdHJ1Y3QgbWVtX3JlZ2lvbl9hZGRyX3JhbmdlKTsNCj4gPiAr DQo+ID4gKwlyZWdpb24tPnNsb3QgPSBtZW1zbG90LT5zbG90X2lkOw0KPiA+ICsJcmVtYWluX3Bh Z2VzID0gbWVtc2xvdC0+bnBhZ2VzOw0KPiA+ICsJZ2ZuID0gbWVtc2xvdC0+YmFzZV9nZm47DQo+ ID4gKwlnZm5fZW5kID0gZ2ZuICsgcmVtYWluX3BhZ2VzOw0KPiA+ICsJd2hpbGUgKGdmbiA8IGdm bl9lbmQpIHsNCj4gPiArCQlpbnQgbnJfcGFnZXM7DQo+ID4gKw0KPiA+ICsJCW5yX3BhZ2VzID0g ZmlsbF9jb25zdGl0dWVudHMocmVnaW9uLT5jb25zdGl0dWVudHMsDQo+ID4gKwkJCQkJICAgICAm cmVnaW9uLT5jb25zdGl0dWVudF9jbnQsDQo+ID4gKwkJCQkJICAgICBtYXhfbnJfY29uc3RpLCBn Zm4sDQo+ID4gKwkJCQkJICAgICByZW1haW5fcGFnZXMsIG1lbXNsb3QpOw0KPiA+ICsJCWlmIChu cl9wYWdlcyA8IDApIHsNCj4gPiArCQkJcHJfZXJyKCJGYWlsZWQgdG8gZmlsbCBjb25zdGl0dWVu dHNcbiIpOw0KPiA+ICsJCQlmcmVlX3BhZ2VzX2V4YWN0KHJlZ2lvbiwgYnVmX3NpemUpOw0KPiA+ ICsJCQlyZXR1cm4gbnJfcGFnZXM7DQo+ID4gKwkJfQ0KPiA+ICsJCXJlZ2lvbi0+Z3BhID0gUEZO X1BIWVMoZ2ZuKTsNCj4gPiArCQlyZWdpb24tPnRvdGFsX3BhZ2VzID0gbnJfcGFnZXM7DQo+ID4g Kw0KPiA+ICsJCXJlbWFpbl9wYWdlcyAtPSBucl9wYWdlczsNCj4gPiArCQlnZm4gKz0gbnJfcGFn ZXM7DQo+ID4gKw0KPiA+ICsJCWlmIChnenZtX2FyY2hfc2V0X21lbXJlZ2lvbihnenZtLT52bV9p ZCwgYnVmX3NpemUsDQo+ID4gKwkJCQkJICAgIHZpcnRfdG9fcGh5cyhyZWdpb24pKSkgew0KPiA+ ICsJCQlwcl9lcnIoIkZhaWxlZCB0byByZWdpc3RlciBtZW1yZWdpb24gdG8NCj4gPiBoeXBlcnZp c29yXG4iKTsNCj4gPiArCQkJZnJlZV9wYWdlc19leGFjdChyZWdpb24sIGJ1Zl9zaXplKTsNCj4g PiArCQkJcmV0dXJuIC1FRkFVTFQ7DQo+ID4gKwkJfQ0KPiA+ICsJfQ0KPiA+ICsJZnJlZV9wYWdl c19leGFjdChyZWdpb24sIGJ1Zl9zaXplKTsNCj4gPiArCXJldHVybiAwOw0KPiA+ICt9DQo+ID4g Kw0KPiA+ICsvKioNCj4gPiArICogZ3p2bV92bV9pb2N0bF9zZXRfbWVtb3J5X3JlZ2lvbigpIC0g U2V0IG1lbW9yeSByZWdpb24gb2YgZ3Vlc3QNCj4gPiArICogQGd6dm06IFBvaW50ZXIgdG8gc3Ry dWN0IGd6dm0uDQo+ID4gKyAqIEBtZW06IElucHV0IG1lbW9yeSByZWdpb24gZnJvbSB1c2VyLg0K PiA+ICsgKg0KPiA+ICsgKiBSZXR1cm46DQo+ID4gKyAqICogLUVYSU8JCS0gbWVtc2xvdCBpcyBv dXQtb2YtcmFuZ2UNCj4gPiArICogKiAtRUZBVUxUCQktIENhbm5vdCBmaW5kIGNvcnJlc3BvbmRp bmcgdm1hDQo+ID4gKyAqICogLUVJTlZBTAkJLSByZWdpb24gc2l6ZSBhbmQgdm1hIHNpemUgZG9l cyBub3QNCj4gPiBtYXRjaA0KPiANCj4gSSBhc3N1bWUgMCBmb3Igc3VjY2VzcyA/DQo+IA0KPiA+ ICsgKi8NCj4gPiArc3RhdGljIGludA0KPiA+ICtnenZtX3ZtX2lvY3RsX3NldF9tZW1vcnlfcmVn aW9uKHN0cnVjdCBnenZtICpnenZtLA0KPiA+ICsJCQkJc3RydWN0IGd6dm1fdXNlcnNwYWNlX21l bW9yeV9yZWdpb24NCj4gPiAqbWVtKQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3Qgdm1fYXJlYV9zdHJ1 Y3QgKnZtYTsNCj4gPiArCXN0cnVjdCBnenZtX21lbXNsb3QgKm1lbXNsb3Q7DQo+ID4gKwl1bnNp Z25lZCBsb25nIHNpemU7DQo+ID4gKwlfX3UzMiBzbG90Ow0KPiA+ICsNCj4gPiArCXNsb3QgPSBt ZW0tPnNsb3Q7DQo+ID4gKwlpZiAoc2xvdCA+PSBHWlZNX01BWF9NRU1fUkVHSU9OKQ0KPiA+ICsJ CXJldHVybiAtRU5YSU87DQo+ID4gKwltZW1zbG90ID0gJmd6dm0tPm1lbXNsb3Rbc2xvdF07DQo+ ID4gKw0KPiA+ICsJdm1hID0gdm1hX2xvb2t1cChnenZtLT5tbSwgbWVtLT51c2Vyc3BhY2VfYWRk cik7DQo+ID4gKwlpZiAoIXZtYSkNCj4gPiArCQlyZXR1cm4gLUVGQVVMVDsNCj4gPiArDQo+ID4g KwlzaXplID0gdm1hLT52bV9lbmQgLSB2bWEtPnZtX3N0YXJ0Ow0KPiA+ICsJaWYgKHNpemUgIT0g bWVtLT5tZW1vcnlfc2l6ZSkNCj4gPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiArDQo+ID4gKwlt ZW1zbG90LT5iYXNlX2dmbiA9IF9fcGh5c190b19wZm4obWVtLT5ndWVzdF9waHlzX2FkZHIpOw0K PiA+ICsJbWVtc2xvdC0+bnBhZ2VzID0gc2l6ZSA+PiBQQUdFX1NISUZUOw0KPiA+ICsJbWVtc2xv dC0+dXNlcnNwYWNlX2FkZHIgPSBtZW0tPnVzZXJzcGFjZV9hZGRyOw0KPiA+ICsJbWVtc2xvdC0+ dm1hID0gdm1hOw0KPiA+ICsJbWVtc2xvdC0+ZmxhZ3MgPSBtZW0tPmZsYWdzOw0KPiA+ICsJbWVt c2xvdC0+c2xvdF9pZCA9IG1lbS0+c2xvdDsNCj4gPiArCXJldHVybiByZWdpc3Rlcl9tZW1zbG90 X2FkZHJfcmFuZ2UoZ3p2bSwgbWVtc2xvdCk7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBp bnQgZ3p2bV92bV9pb2N0bF9lbmFibGVfY2FwKHN0cnVjdCBnenZtICpnenZtLA0KPiA+ICsJCQkJ ICAgIHN0cnVjdCBnenZtX2VuYWJsZV9jYXAgKmNhcCwNCj4gPiArCQkJCSAgICB2b2lkIF9fdXNl ciAqYXJncCkNCj4gPiArew0KPiA+ICsJcmV0dXJuIGd6dm1fdm1faW9jdGxfYXJjaF9lbmFibGVf Y2FwKGd6dm0sIGNhcCwgYXJncCk7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qIGd6dm1fdm1faW9j dGwoKSAtIElvY3RsIGhhbmRsZXIgb2YgVk0gRkQgKi8NCj4gPiArc3RhdGljIGxvbmcgZ3p2bV92 bV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgaW50IGlvY3RsLA0KPiA+ICsJCQkg IHVuc2lnbmVkIGxvbmcgYXJnKQ0KPiA+ICt7DQo+ID4gKwlsb25nIHJldCA9IC1FTk9UVFk7DQo+ IA0KPiBhcHBlYXJzIHRvIGJlIHJlZHVuZGFudA0KPiANCj4gPiArCXZvaWQgX191c2VyICphcmdw ID0gKHZvaWQgX191c2VyICopYXJnOw0KPiA+ICsJc3RydWN0IGd6dm0gKmd6dm0gPSBmaWxwLT5w cml2YXRlX2RhdGE7DQo+ID4gKw0KPiA+ICsJc3dpdGNoIChpb2N0bCkgew0KPiA+ICsJY2FzZSBH WlZNX0NIRUNLX0VYVEVOU0lPTjogew0KPiA+ICsJCXJldCA9IGd6dm1fZGV2X2lvY3RsX2NoZWNr X2V4dGVuc2lvbihnenZtLCBhcmcpOw0KPiA+ICsJCWJyZWFrOw0KPiA+ICsJfQ0KPiA+ICsJY2Fz ZSBHWlZNX1NFVF9VU0VSX01FTU9SWV9SRUdJT046IHsNCj4gPiArCQlzdHJ1Y3QgZ3p2bV91c2Vy c3BhY2VfbWVtb3J5X3JlZ2lvbiB1c2Vyc3BhY2VfbWVtOw0KPiA+ICsNCj4gPiArCQlpZiAoY29w eV9mcm9tX3VzZXIoJnVzZXJzcGFjZV9tZW0sIGFyZ3AsDQo+ID4gc2l6ZW9mKHVzZXJzcGFjZV9t ZW0pKSkgew0KPiA+ICsJCQlyZXQgPSAtRUZBVUxUOw0KPiA+ICsJCQlnb3RvIG91dDsNCj4gPiAr CQl9DQo+ID4gKwkJcmV0ID0gZ3p2bV92bV9pb2N0bF9zZXRfbWVtb3J5X3JlZ2lvbihnenZtLA0K PiA+ICZ1c2Vyc3BhY2VfbWVtKTsNCj4gPiArCQlicmVhazsNCj4gPiArCX0NCj4gPiArCWNhc2Ug R1pWTV9FTkFCTEVfQ0FQOiB7DQo+ID4gKwkJc3RydWN0IGd6dm1fZW5hYmxlX2NhcCBjYXA7DQo+ ID4gKw0KPiA+ICsJCWlmIChjb3B5X2Zyb21fdXNlcigmY2FwLCBhcmdwLCBzaXplb2YoY2FwKSkp IHsNCj4gPiArCQkJcmV0ID0gLUVGQVVMVDsNCj4gPiArCQkJZ290byBvdXQ7DQo+ID4gKwkJfQ0K PiA+ICsJCXJldCA9IGd6dm1fdm1faW9jdGxfZW5hYmxlX2NhcChnenZtLCAmY2FwLCBhcmdwKTsN Cj4gPiArCQlicmVhazsNCj4gPiArCX0NCj4gPiArCWRlZmF1bHQ6DQo+ID4gKwkJcmV0ID0gLUVO T1RUWTsNCj4gPiArCX0NCj4gPiArb3V0Og0KPiA+ICsJcmV0dXJuIHJldDsNCj4gPiArfQ0KPiA+ ICsNCj4gPiArc3RhdGljIHZvaWQgZ3p2bV9kZXN0cm95X3ZtKHN0cnVjdCBnenZtICpnenZtKQ0K PiA+ICt7DQo+ID4gKwlwcl9kZWJ1ZygiVk0tJXUgaXMgZ29pbmcgdG8gYmUgZGVzdHJveWVkXG4i LCBnenZtLT52bV9pZCk7DQo+ID4gKw0KPiA+ICsJbXV0ZXhfbG9jaygmZ3p2bS0+bG9jayk7DQo+ ID4gKw0KPiA+ICsJZ3p2bV9hcmNoX2Rlc3Ryb3lfdm0oZ3p2bS0+dm1faWQpOw0KPiA+ICsNCj4g PiArCW11dGV4X2xvY2soJmd6dm1fbGlzdF9sb2NrKTsNCj4gPiArCWxpc3RfZGVsKCZnenZtLT52 bV9saXN0KTsNCj4gPiArCW11dGV4X3VubG9jaygmZ3p2bV9saXN0X2xvY2spOw0KPiA+ICsNCj4g PiArCW11dGV4X3VubG9jaygmZ3p2bS0+bG9jayk7DQo+ID4gKw0KPiA+ICsJa2ZyZWUoZ3p2bSk7 DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgZ3p2bV92bV9yZWxlYXNlKHN0cnVjdCBp bm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxwKQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgZ3p2 bSAqZ3p2bSA9IGZpbHAtPnByaXZhdGVfZGF0YTsNCj4gPiArDQo+ID4gKwlnenZtX2Rlc3Ryb3lf dm0oZ3p2bSk7DQo+ID4gKwlyZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGNv bnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZ3p2bV92bV9mb3BzID0gew0KPiA+ICsJLnJlbGVh c2UgICAgICAgID0gZ3p2bV92bV9yZWxlYXNlLA0KPiA+ICsJLnVubG9ja2VkX2lvY3RsID0gZ3p2 bV92bV9pb2N0bCwNCj4gPiArCS5sbHNlZWsJCT0gbm9vcF9sbHNlZWssDQo+ID4gK307DQo+ID4g Kw0KPiA+ICtzdGF0aWMgc3RydWN0IGd6dm0gKmd6dm1fY3JlYXRlX3ZtKHVuc2lnbmVkIGxvbmcg dm1fdHlwZSkNCj4gPiArew0KPiA+ICsJaW50IHJldDsNCj4gPiArCXN0cnVjdCBnenZtICpnenZt Ow0KPiA+ICsNCj4gPiArCWd6dm0gPSBremFsbG9jKHNpemVvZigqZ3p2bSksIEdGUF9LRVJORUwp Ow0KPiA+ICsJaWYgKCFnenZtKQ0KPiA+ICsJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOw0KPiA+ ICsNCj4gPiArCXJldCA9IGd6dm1fYXJjaF9jcmVhdGVfdm0odm1fdHlwZSk7DQo+ID4gKwlpZiAo cmV0IDwgMCkgew0KPiA+ICsJCWtmcmVlKGd6dm0pOw0KPiA+ICsJCXJldHVybiBFUlJfUFRSKHJl dCk7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJZ3p2bS0+dm1faWQgPSByZXQ7DQo+ID4gKwlnenZt LT5tbSA9IGN1cnJlbnQtPm1tOw0KPiA+ICsJbXV0ZXhfaW5pdCgmZ3p2bS0+bG9jayk7DQo+ID4g Kw0KPiA+ICsJbXV0ZXhfbG9jaygmZ3p2bV9saXN0X2xvY2spOw0KPiA+ICsJbGlzdF9hZGQoJmd6 dm0tPnZtX2xpc3QsICZnenZtX2xpc3QpOw0KPiA+ICsJbXV0ZXhfdW5sb2NrKCZnenZtX2xpc3Rf bG9jayk7DQo+ID4gKw0KPiA+ICsJcHJfZGVidWcoIlZNLSV1IGlzIGNyZWF0ZWRcbiIsIGd6dm0t PnZtX2lkKTsNCj4gPiArDQo+ID4gKwlyZXR1cm4gZ3p2bTsNCj4gPiArfQ0KPiA+ICsNCj4gPiAr LyoqDQo+ID4gKyAqIGd6dm1fZGV2X2lvY3RsX2NyZWF0ZV92bSAtIENyZWF0ZSB2bSBmZA0KPiA+ ICsgKiBAdm1fdHlwZTogVk0gdHlwZS4gT25seSBzdXBwb3J0cyBMaW51eCBWTSBub3cuDQo+ID4g KyAqDQo+ID4gKyAqIFJldHVybjogZmQgb2Ygdm0sIG5lZ2F0aXZlIGlmIGVycm9yDQo+ID4gKyAq Lw0KPiA+ICtpbnQgZ3p2bV9kZXZfaW9jdGxfY3JlYXRlX3ZtKHVuc2lnbmVkIGxvbmcgdm1fdHlw ZSkNCj4gPiArew0KPiA+ICsJc3RydWN0IGd6dm0gKmd6dm07DQo+ID4gKw0KPiA+ICsJZ3p2bSA9 IGd6dm1fY3JlYXRlX3ZtKHZtX3R5cGUpOw0KPiA+ICsJaWYgKElTX0VSUihnenZtKSkNCj4gPiAr CQlyZXR1cm4gUFRSX0VSUihnenZtKTsNCj4gPiArDQo+ID4gKwlyZXR1cm4gYW5vbl9pbm9kZV9n ZXRmZCgiZ3p2bS12bSIsICZnenZtX3ZtX2ZvcHMsIGd6dm0sDQo+ID4gKwkJCSAgICAgICBPX1JE V1IgfCBPX0NMT0VYRUMpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICt2b2lkIGd6dm1fZGVzdHJveV9h bGxfdm1zKHZvaWQpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBnenZtICpnenZtLCAqdG1wOw0KPiA+ ICsNCj4gPiArCW11dGV4X2xvY2soJmd6dm1fbGlzdF9sb2NrKTsNCj4gPiArCWlmIChsaXN0X2Vt cHR5KCZnenZtX2xpc3QpKQ0KPiA+ICsJCWdvdG8gb3V0Ow0KPiA+ICsNCj4gPiArCWxpc3RfZm9y X2VhY2hfZW50cnlfc2FmZShnenZtLCB0bXAsICZnenZtX2xpc3QsIHZtX2xpc3QpDQo+ID4gKwkJ Z3p2bV9kZXN0cm95X3ZtKGd6dm0pOw0KPiA+ICsNCj4gPiArb3V0Og0KPiA+ICsJbXV0ZXhfdW5s b2NrKCZnenZtX2xpc3RfbG9jayk7DQo+ID4gK30NCj4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9s aW51eC9nenZtX2Rydi5oIGIvaW5jbHVkZS9saW51eC9nenZtX2Rydi5oDQo+ID4gbmV3IGZpbGUg bW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLjRmZDUyZmNiZDVhOA0KPiA+IC0t LSAvZGV2L251bGwNCj4gPiArKysgYi9pbmNsdWRlL2xpbnV4L2d6dm1fZHJ2LmgNCj4gPiBAQCAt MCwwICsxLDkwIEBADQo+ID4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICov DQo+ID4gKy8qDQo+ID4gKyAqIENvcHlyaWdodCAoYykgMjAyMyBNZWRpYVRlayBJbmMuDQo+ID4g KyAqLw0KPiA+ICsNCj4gPiArI2lmbmRlZiBfX0daVk1fRFJWX0hfXw0KPiA+ICsjZGVmaW5lIF9f R1pWTV9EUlZfSF9fDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8bGludXgvbGlzdC5oPg0KPiA+ICsj aW5jbHVkZSA8bGludXgvbXV0ZXguaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L2d6dm0uaD4NCj4g PiArDQo+ID4gKyNkZWZpbmUgR1pWTV9WQ1BVX01NQVBfU0laRSAgUEFHRV9TSVpFDQo+ID4gKyNk ZWZpbmUgSU5WQUxJRF9WTV9JRCAgIDB4ZmZmZg0KPiA+ICsNCj4gPiArLyoNCj4gPiArICogVGhl c2UgYXJlIHRoZSBlZmluaXRpb25zIG9mIEFQSXMgYmV0d2VlbiBHZW5pZVpvbmUgaHlwZXJ2aXNv cg0KPiA+IGFuZCBkcml2ZXIsDQo+IA0KPiB0eXBvOiBkZWZpbml0aW9ucw0KPiANCj4gPiArICog dGhlcmUncyBubyBuZWVkIHRvIGJlIHZpc2libGUgdG8gdWFwaS4gRnVydGhlcm1vcmUsIFdlIG5l ZWQNCj4gPiBHZW5pZVpvbmUNCj4gDQo+IFdlIGRvZXNuJ3QgaGF2ZSB0byBiZSBjYXBpdGFsDQo+ ID4gKyAqIHNwZWNpZmljIGVycm9yIGNvZGUgaW4gb3JkZXIgdG8gbWFwIHRvIExpbnV4IGVycm5v DQo+ID4gKyAqLw0KPiA+ICsjZGVmaW5lIE5PX0VSUk9SICAgICAgICAgICAgICAgICgwKQ0KPiA+ ICsjZGVmaW5lIEVSUl9OT19NRU1PUlkgICAgICAgICAgICgtNSkNCj4gPiArI2RlZmluZSBFUlJf Tk9UX1NVUFBPUlRFRCAgICAgICAoLTI0KQ0KPiA+ICsjZGVmaW5lIEVSUl9OT1RfSU1QTEVNRU5U RUQgICAgICgtMjcpDQo+ID4gKyNkZWZpbmUgRVJSX0ZBVUxUICAgICAgICAgICAgICAgKC00MCkN Cj4gPiArDQo+ID4gKy8qDQo+ID4gKyAqIFRoZSBmb2xsb3dpbmcgZGF0YSBzdHJ1Y3R1cmVzIGFy ZSBmb3IgZGF0YSB0cmFuc2ZlcnJpbmcgYmV0d2Vlbg0KPiA+IGRyaXZlciBhbmQNCj4gPiArICog aHlwZXJ2aXNvciwgYW5kIHRoZXkncmUgYWxpZ25lZCB3aXRoIGh5cGVydmlzb3IgZGVmaW5pdGlv bnMNCj4gPiArICovDQo+ID4gKyNkZWZpbmUgR1pWTV9NQVhfVkNQVVMJCSA4DQo+ID4gKyNkZWZp bmUgR1pWTV9NQVhfTUVNX1JFR0lPTgkxMA0KPiA+ICsNCj4gPiArLyogc3RydWN0IG1lbV9yZWdp b25fYWRkcl9yYW5nZSAtIElkZW50aWNhbCB0byBmZmEgbWVtb3J5DQo+ID4gY29uc3RpdHVlbnQg Ki8NCj4gPiArc3RydWN0IG1lbV9yZWdpb25fYWRkcl9yYW5nZSB7DQo+ID4gKwkvKiB0aGUgYmFz ZSBJUEEgb2YgdGhlIGNvbnN0aXR1ZW50IG1lbW9yeSByZWdpb24sIGFsaWduZWQgdG8gNA0KPiA+ IGtpQiAqLw0KPiA+ICsJX191NjQgYWRkcmVzczsNCj4gPiArCS8qIHRoZSBudW1iZXIgb2YgNCBr aUIgcGFnZXMgaW4gdGhlIGNvbnN0aXR1ZW50IG1lbW9yeSByZWdpb24uDQo+ID4gKi8NCj4gPiAr CV9fdTMyIHBnX2NudDsNCj4gPiArCV9fdTMyIHJlc2VydmVkOw0KPiA+ICt9Ow0KPiA+ICsNCj4g PiArc3RydWN0IGd6dm1fbWVtb3J5X3JlZ2lvbl9yYW5nZXMgew0KPiA+ICsJX191MzIgc2xvdDsN Cj4gPiArCV9fdTMyIGNvbnN0aXR1ZW50X2NudDsNCj4gPiArCV9fdTY0IHRvdGFsX3BhZ2VzOw0K PiA+ICsJX191NjQgZ3BhOw0KPiA+ICsJc3RydWN0IG1lbV9yZWdpb25fYWRkcl9yYW5nZSBjb25z dGl0dWVudHNbXTsNCj4gPiArfTsNCj4gPiArDQo+ID4gKy8qIHN0cnVjdCBnenZtX21lbXNsb3Qg LSBWTSdzIG1lbW9yeSBzbG90IGRlc2NyaXB0b3IgKi8NCj4gPiArc3RydWN0IGd6dm1fbWVtc2xv dCB7DQo+ID4gKwl1NjQgYmFzZV9nZm47CQkJLyogYmVnaW4gb2YgZ3Vlc3QgcGFnZQ0KPiA+IGZy YW1lICovDQo+ID4gKwl1bnNpZ25lZCBsb25nIG5wYWdlczsJCS8qIG51bWJlciBvZiBwYWdlcyB0 aGlzDQo+ID4gc2xvdCBjb3ZlcnMgKi8NCj4gPiArCXVuc2lnbmVkIGxvbmcgdXNlcnNwYWNlX2Fk ZHI7CS8qIGNvcnJlc3BvbmRpbmcgdXNlcnNwYWNlDQo+ID4gdmEgKi8NCj4gPiArCXN0cnVjdCB2 bV9hcmVhX3N0cnVjdCAqdm1hOwkvKiB2bWEgcmVsYXRlZCB0byB0aGlzIHVzZXJzcGFjZQ0KPiA+ IGFkZHIgKi8NCj4gPiArCXUzMiBmbGFnczsNCj4gPiArCXUzMiBzbG90X2lkOw0KPiA+ICt9Ow0K PiA+ICsNCj4gPiArc3RydWN0IGd6dm0gew0KPiA+ICsJLyogdXNlcnNwYWNlIHRpZWQgdG8gdGhp cyB2bSAqLw0KPiA+ICsJc3RydWN0IG1tX3N0cnVjdCAqbW07DQo+ID4gKwlzdHJ1Y3QgZ3p2bV9t ZW1zbG90IG1lbXNsb3RbR1pWTV9NQVhfTUVNX1JFR0lPTl07DQo+ID4gKwkvKiBsb2NrIGZvciBs aXN0X2FkZCovDQo+ID4gKwlzdHJ1Y3QgbXV0ZXggbG9jazsNCj4gPiArCXN0cnVjdCBsaXN0X2hl YWQgdm1fbGlzdDsNCj4gPiArCXUxNiB2bV9pZDsNCj4gPiArfTsNCj4gPiArDQo+ID4gK2xvbmcg Z3p2bV9kZXZfaW9jdGxfY2hlY2tfZXh0ZW5zaW9uKHN0cnVjdCBnenZtICpnenZtLCB1bnNpZ25l ZA0KPiA+IGxvbmcgYXJncyk7DQo+ID4gK2ludCBnenZtX2Rldl9pb2N0bF9jcmVhdGVfdm0odW5z aWduZWQgbG9uZyB2bV90eXBlKTsNCj4gPiArDQo+ID4gK2ludCBnenZtX2Vycl90b19lcnJubyh1 bnNpZ25lZCBsb25nIGVycik7DQo+ID4gKw0KPiA+ICt2b2lkIGd6dm1fZGVzdHJveV9hbGxfdm1z KHZvaWQpOw0KPiA+ICsNCj4gPiArLyogYXJjaC1kZXBlbmRhbnQgZnVuY3Rpb25zICovDQo+ID4g K2ludCBnenZtX2FyY2hfcHJvYmUodm9pZCk7DQo+ID4gK2ludCBnenZtX2FyY2hfc2V0X21lbXJl Z2lvbih1MTYgdm1faWQsIHNpemVfdCBidWZfc2l6ZSwNCj4gPiArCQkJICAgIHBoeXNfYWRkcl90 IHJlZ2lvbik7DQo+ID4gK2ludCBnenZtX2FyY2hfY2hlY2tfZXh0ZW5zaW9uKHN0cnVjdCBnenZt ICpnenZtLCBfX3U2NCBjYXAsIHZvaWQNCj4gPiBfX3VzZXIgKmFyZ3ApOw0KPiA+ICtpbnQgZ3p2 bV9hcmNoX2NyZWF0ZV92bSh1bnNpZ25lZCBsb25nIHZtX3R5cGUpOw0KPiA+ICtpbnQgZ3p2bV9h cmNoX2Rlc3Ryb3lfdm0odTE2IHZtX2lkKTsNCj4gPiAraW50IGd6dm1fdm1faW9jdGxfYXJjaF9l bmFibGVfY2FwKHN0cnVjdCBnenZtICpnenZtLA0KPiA+ICsJCQkJICBzdHJ1Y3QgZ3p2bV9lbmFi bGVfY2FwICpjYXAsDQo+ID4gKwkJCQkgIHZvaWQgX191c2VyICphcmdwKTsNCj4gPiArdTY0IGd6 dm1faHZhX3RvX3BhX2FyY2godTY0IGh2YSk7DQo+ID4gKw0KPiA+ICsjZW5kaWYgLyogX19HWlZN X0RSVl9IX18gKi8NCj4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL0ti dWlsZCBiL2luY2x1ZGUvdWFwaS9hc20tDQo+ID4gZ2VuZXJpYy9LYnVpbGQNCj4gPiBpbmRleCBl YmIxODBhYWM3NGUuLjVhZjExNWEzYzFhOCAxMDA2NDQNCj4gPiAtLS0gYS9pbmNsdWRlL3VhcGkv YXNtLWdlbmVyaWMvS2J1aWxkDQo+ID4gKysrIGIvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL0ti dWlsZA0KPiA+IEBAIC0zNCwzICszNCw0IEBAIG1hbmRhdG9yeS15ICs9IHRlcm1iaXRzLmgNCj4g PiAgIG1hbmRhdG9yeS15ICs9IHRlcm1pb3MuaA0KPiA+ICAgbWFuZGF0b3J5LXkgKz0gdHlwZXMu aA0KPiA+ICAgbWFuZGF0b3J5LXkgKz0gdW5pc3RkLmgNCj4gPiArbWFuZGF0b3J5LXkgKz0gZ3p2 bV9hcmNoLmgNCj4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL2d6dm1f YXJjaC5oDQo+ID4gYi9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvZ3p2bV9hcmNoLmgNCj4gPiBu ZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAwMC4uYzRjYzEyNzE2Yzkx DQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy9n enZtX2FyY2guaA0KPiA+IEBAIC0wLDAgKzEsMTAgQEANCj4gPiArLyogU1BEWC1MaWNlbnNlLUlk ZW50aWZpZXI6IEdQTC0yLjAgV0lUSCBMaW51eC1zeXNjYWxsLW5vdGUgKi8NCj4gPiArLyoNCj4g PiArICogQ29weXJpZ2h0IChjKSAyMDIzIE1lZGlhVGVrIEluYy4NCj4gPiArICovDQo+ID4gKw0K PiA+ICsjaWZuZGVmIF9fQVNNX0dFTkVSSUNfR1pWTV9BUkNIX0gNCj4gPiArI2RlZmluZSBfX0FT TV9HRU5FUklDX0daVk1fQVJDSF9IDQo+ID4gKy8qIGdlbmllem9uZSBvbmx5IHN1cHBvcnRzIGFh cmNoNjQgcGxhdGZvcm0gZm9yIG5vdyAqLw0KPiA+ICsNCj4gPiArI2VuZGlmIC8qIF9fQVNNX0dF TkVSSUNfR1pWTV9BUkNIX0ggKi8NCj4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4 L2d6dm0uaCBiL2luY2x1ZGUvdWFwaS9saW51eC9nenZtLmgNCj4gPiBuZXcgZmlsZSBtb2RlIDEw MDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAwMC4uOTk3MzBjMTQyYjBlDQo+ID4gLS0tIC9kZXYv bnVsbA0KPiA+ICsrKyBiL2luY2x1ZGUvdWFwaS9saW51eC9nenZtLmgNCj4gPiBAQCAtMCwwICsx LDc2IEBADQo+ID4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIFdJVEggTGlu dXgtc3lzY2FsbC1ub3RlICovDQo+ID4gKy8qDQo+ID4gKyAqIENvcHlyaWdodCAoYykgMjAyMyBN ZWRpYVRlayBJbmMuDQo+ID4gKyAqLw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIERPQzogVUFQ SSBvZiBHZW5pZVpvbmUgSHlwZXJ2aXNvcg0KPiA+ICsgKg0KPiA+ICsgKiBUaGlzIGZpbGUgZGVj bGFyZXMgY29tbW9uIGRhdGEgc3RydWN0dXJlIHNoYXJlZCBhbW9uZyB1c2VyDQo+ID4gc3BhY2Us DQo+ID4gKyAqIGtlcm5lbCBzcGFjZSwgYW5kIEdlbmllWm9uZSBoeXBlcnZpc29yLg0KPiA+ICsg Ki8NCj4gPiArI2lmbmRlZiBfX0daVk1fSF9fDQo+ID4gKyNkZWZpbmUgX19HWlZNX0hfXw0KPiA+ ICsNCj4gPiArI2luY2x1ZGUgPGxpbnV4L2NvbnN0Lmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC90 eXBlcy5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvaW9jdGwuaD4NCj4gPiArDQo+ID4gKyNpbmNs dWRlIDxhc20vZ3p2bV9hcmNoLmg+DQo+ID4gKw0KPiA+ICsvKiBHWlZNIGlvY3RscyAqLw0KPiA+ ICsjZGVmaW5lIEdaVk1fSU9DX01BR0lDCQkJMHg5MgkvKiBneiAqLw0KPiA+ICsNCj4gPiArLyog aW9jdGxzIGZvciAvZGV2L2d6dm0gZmRzICovDQo+ID4gKyNkZWZpbmUgR1pWTV9DUkVBVEVfVk0g ICAgICAgICAgICAgX0lPKEdaVk1fSU9DX01BR0lDLCAgIDB4MDEpIC8qDQo+ID4gUmV0dXJucyBh IEdlbmllem9uZSBWTSBmZCAqLw0KPiA+ICsNCj4gPiArLyoNCj4gPiArICogQ2hlY2sgaWYgdGhl IGdpdmVuIGNhcGFiaWxpdHkgaXMgc3VwcG9ydGVkIG9yIG5vdC4NCj4gPiArICogVGhlIGFyZ3Vt ZW50IGlzIGNhcGFiaWxpdHkuIEV4LiBHWlZNX0NBUF9BUk1fUFJPVEVDVEVEX1ZNIG9yDQo+ID4g R1pWTV9DQVBfQVJNX1ZNX0lQQV9TSVpFDQo+ID4gKyAqIHJldHVybiBpcyAwIChzdXBwb3J0ZWQs IG5vIGVycm9yKQ0KPiA+ICsgKiByZXR1cm4gaXMgLUVPUE5PVFNVUFAgKHVuc3VwcG9ydGVkKQ0K PiA+ICsgKiByZXR1cm4gaXMgLUVGQVVMVCAoZmFpbGVkIHRvIGdldCB0aGUgYXJndW1lbnQgZnJv bSB1c2Vyc3BhY2UpDQo+ID4gKyAqLw0KPiA+ICsjZGVmaW5lIEdaVk1fQ0hFQ0tfRVhURU5TSU9O ICAgICAgIF9JTyhHWlZNX0lPQ19NQUdJQywgICAweDAzKQ0KPiA+ICsNCj4gPiArLyogaW9jdGxz IGZvciBWTSBmZHMgKi8NCj4gPiArLyogZm9yIEdaVk1fU0VUX01FTU9SWV9SRUdJT04gKi8NCj4g PiArc3RydWN0IGd6dm1fbWVtb3J5X3JlZ2lvbiB7DQo+ID4gKwlfX3UzMiBzbG90Ow0KPiA+ICsJ X191MzIgZmxhZ3M7DQo+ID4gKwlfX3U2NCBndWVzdF9waHlzX2FkZHI7DQo+ID4gKwlfX3U2NCBt ZW1vcnlfc2l6ZTsgLyogYnl0ZXMgKi8NCj4gPiArfTsNCj4gPiArDQo+ID4gKyNkZWZpbmUgR1pW TV9TRVRfTUVNT1JZX1JFR0lPTiAgICAgX0lPVyhHWlZNX0lPQ19NQUdJQywgIDB4NDAsIFwNCj4g PiArCQkJCQlzdHJ1Y3QgZ3p2bV9tZW1vcnlfcmVnaW9uKQ0KPiA+ICsNCj4gPiArLyogZm9yIEda Vk1fU0VUX1VTRVJfTUVNT1JZX1JFR0lPTiAqLw0KPiA+ICtzdHJ1Y3QgZ3p2bV91c2Vyc3BhY2Vf bWVtb3J5X3JlZ2lvbiB7DQo+ID4gKwlfX3UzMiBzbG90Ow0KPiA+ICsJX191MzIgZmxhZ3M7DQo+ ID4gKwlfX3U2NCBndWVzdF9waHlzX2FkZHI7DQo+ID4gKwkvKiBieXRlcyAqLw0KPiA+ICsJX191 NjQgbWVtb3J5X3NpemU7DQo+ID4gKwkvKiBzdGFydCBvZiB0aGUgdXNlcnNwYWNlIGFsbG9jYXRl ZCBtZW1vcnkgKi8NCj4gPiArCV9fdTY0IHVzZXJzcGFjZV9hZGRyOw0KPiA+ICt9Ow0KPiA+ICsN Cj4gPiArI2RlZmluZSBHWlZNX1NFVF9VU0VSX01FTU9SWV9SRUdJT04gX0lPVyhHWlZNX0lPQ19N QUdJQywgMHg0NiwgXA0KPiA+ICsJCQkJCSBzdHJ1Y3QNCj4gPiBnenZtX3VzZXJzcGFjZV9tZW1v cnlfcmVnaW9uKQ0KPiA+ICsNCj4gPiArLyogZm9yIEdaVk1fRU5BQkxFX0NBUCAqLw0KPiA+ICtz dHJ1Y3QgZ3p2bV9lbmFibGVfY2FwIHsNCj4gPiArCS8qIGluICovDQo+ID4gKwlfX3U2NCBjYXA7 DQo+ID4gKwkvKioNCj4gPiArCSAqIHdlIGhhdmUgdG90YWwgNSAoOCAtIDMpIHJlZ2lzdGVycyBj YW4gYmUgdXNlZCBmb3INCj4gDQo+IHdoaWNoIGNhbiBiZSB1c2VkID8NCj4gDQo+ID4gKwkgKiBh ZGRpdGlvbmFsIGFyZ3MNCj4gPiArCSAqLw0KPiA+ICsJX191NjQgYXJnc1s1XTsNCj4gPiArfTsN Cj4gPiArDQo+ID4gKyNkZWZpbmUgR1pWTV9FTkFCTEVfQ0FQICAgICAgICAgICAgX0lPVyhHWlZN X0lPQ19NQUdJQywgIDB4YTMsIFwNCj4gPiArCQkJCQlzdHJ1Y3QgZ3p2bV9lbmFibGVfY2FwKQ0K PiA+ICsNCj4gPiArI2VuZGlmIC8qIF9fR1pWTV9IX18gKi8NCj4gDQo+IA0KPiBSZWdhcmRzLA0K PiANCj4gRXVnZW4NCg==