From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 3D498C38145 for ; Thu, 8 Sep 2022 19:43:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:In-Reply-To:From:References:Cc:To: Subject:Date:Message-ID:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=E/1NC6TSkTULOjOz+8f59Rlopr98R1wnhdZo7MUOH+o=; b=lu1UaSIRjPolTB8AJutoVoKZdw xDBkIodSUZ1gOaLZGGulRNwfACIuUNv5YH32yX4HvyKy5/vnntpIv+Z5/0ASvVxIYvboZ6P7wGaQl j3EiOjPF2R9z3ZMKwcPmT74B+TYmBy+JSUt8SJrO6FlUMd/+uzkvgmgeAiFRKKpMdC200Bnnb6jWv JEtat/QGgyC7GRwfBmAdHfeuFviXw4V4dMquRx2M8DyecLDTC95d/3Ej9xI/kXjeN0NMXEEs+UC1j d0nLAZFilC2QMQrcOUnTIkF9NKKUw+9RZChd8rK7JRCniA+Y5scs6Mk6zrs01EJfMTxeNezGS+l5s im+fa7Vg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1oWNPn-007slm-Ia; Thu, 08 Sep 2022 19:42:19 +0000 Received: from mail-bn8nam04on2059.outbound.protection.outlook.com ([40.107.100.59] helo=NAM04-BN8-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1oWNPh-007sU8-Bn for linux-arm-kernel@lists.infradead.org; Thu, 08 Sep 2022 19:42:17 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Pf+nXRwbS6Pg3XS5pbFHZ4uG8IXRGSPUEvvduxbXCpeGDTj9JRvcBQsvbm307pnExXghlwsO9D090WcUciDKDJ9rBfQQQkOKCIn/O+OycGHFv0BKHawzwNcRpNMX3xVNz1sBViKTL3BHtDEHOsvWihQZr6koLwIxrhSuf0nXmuCU1XnMfHl5szlTulDqIEpqklEd6B0/+gQ17q0IajX2IWW8Zhk3dl1evDP9LJrAkA+Vx16C/OKtsBhN//ApHPfGT43G/kJ1BGuO+zIswfJ9fCYQKpBH+h/3kry3yOPeLAWAgH6ZVT/GjMTWSfqje38NUi+yXPr3BhbEk/yZ327WyA== 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=HzFg9xXylmNpl+0TF0FwWejQnzxrpk00GPv+e0WLhTw=; b=bXVYB68q3mOJXimffbYxjJOzza2w5ULcnL1VTj2Dt4jw+6EhTvcYIxFO94g1e0i2XhH9bQ/3FMmFnwSY3X0FlmRWxbivU9OkdfkB8cuiv2D8KWBbjbYeTVgTFPKOtiY+0CkPKZn9ZsPnzbN9EDbCLJ+cbH4ZqeyIC+ZrWQ5oGGcLUXJAMyOUew5qTHJqXcC/81AgqWITkjZGjDjoU+DVf7vojwjk9leuc15/bsYNJCYmo7tOPVzR8HA8VoN147cF9pTu3t3rLKnY/FY4EWDu8wvA9FYWHaUiIDUqMl46wlyDIWClWUQjdnnslEF+prLD6QGA0dyhU5LPnt7WQ/p5oA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=HzFg9xXylmNpl+0TF0FwWejQnzxrpk00GPv+e0WLhTw=; b=pNn8yRhrzPBqxlD2ffckaGwz3mrogjV7Oe++iZAA+5U3gCu4myAJwyGtnjhORooC+PrfqDaC76BRw7N4CcOHu2E+RfWmVfb4PR3SPEcKmKCrxYKbLebGJN9G0fi3egTEhm0mm0TzioavJFJcZcmBw3qpOdI3xz0Dr2frxaa0iC0= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amd.com; Received: from BY5PR12MB3683.namprd12.prod.outlook.com (2603:10b6:a03:1a5::16) by DM6PR12MB4266.namprd12.prod.outlook.com (2603:10b6:5:21a::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5588.11; Thu, 8 Sep 2022 19:42:06 +0000 Received: from BY5PR12MB3683.namprd12.prod.outlook.com ([fe80::3441:5a68:b4b7:e988]) by BY5PR12MB3683.namprd12.prod.outlook.com ([fe80::3441:5a68:b4b7:e988%6]) with mapi id 15.20.5588.017; Thu, 8 Sep 2022 19:42:05 +0000 Message-ID: <757e655b-4786-d59b-deea-1e1ea8bd9d0c@amd.com> Date: Thu, 8 Sep 2022 12:42:02 -0700 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:91.0) Gecko/20100101 Thunderbird/91.13.0 Subject: Re: [PATCH v9 6/6] drivers: remoteproc: Add Xilinx r5 remoteproc driver Content-Language: en-US To: Mathieu Poirier Cc: Tanmay Shah , bjorn.andersson@linaro.org, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, michal.simek@xilinx.com, ben.levinsky@xilinx.com, tanmay.shah@xilinx.com, michal.simek@amd.com, linux-remoteproc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org References: <20220708013955.2340449-1-tanmay.shah@amd.com> <20220708013955.2340449-7-tanmay.shah@amd.com> <20220901202517.GB626605@p14s> <20220902195903.GB1787913@p14s> From: Tanmay Shah In-Reply-To: <20220902195903.GB1787913@p14s> X-ClientProxiedBy: SJ0PR03CA0260.namprd03.prod.outlook.com (2603:10b6:a03:3a0::25) To BY5PR12MB3683.namprd12.prod.outlook.com (2603:10b6:a03:1a5::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e69cbeb0-7443-4e67-83c3-08da91d2357f X-MS-TrafficTypeDiagnostic: DM6PR12MB4266:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 55PA5Mo7mlwn4mN9iBS5m/C7jr6/owTLwVk2o2iQGuGiedJO1p3W1uNuwumxQMzQbduoH4n9MHYxf0RRPJ+0CmcXndmzdYaQeTC8c9eRhlEgPE6HSpk+Cr/6AusmV76LeiyGXVTOEGtvOiomkNVc7y2eKO3EUScb89NOTWaRoIzE8gJAN34O6Szp2K2wggIX4ObM1p18rQeT8nmDTjPySVEs2qM7yM8FfDToKYMGmv6XsXv2kTuQWvyfn6ttjHFYvbTg40G3USfmbeXJIZ2/PCqKPT6iik1fz9hTl8b6CtsyGEs3LUVoNSwApftQdJTt6U3aX5tgykQIH5R/i2zKccwA5AbBPcPdB0V6GZk2JRwrrsUUSNDOlvPkI9kNnbmYiQL97MxR5dVWvwmDUC4DHoMHpxS7OOD9sGwdNzBjuZZaD6Zyak9G7YTFfGChoIiejSyp5CUqGvBqyzXYPEK0QicYTnZEBIxvCBDBr+edShgYmtBhfBFTSsbMF9hitxbnAVnZ8heg+jvdNsWuemQWULaPp0QlMnX0sigPnhpnqpbMQCq45GUNSzutLTWsnHlzxDe/DZsCskk2ZCcJVCfiZ2hU/pHMGCBwkbYIRthLGsZm12fKhdLppNHHPGWcrR/7an1ae+WdslJAWdF1WeauyuH/fnM2HWEIanluZnpt07dfzPp2ADwyCWEddowlx0hRxAGBh80l1lXn9dl3RHEvro22Zx6srbkHXIvHJT0VpUHUbghsVvC+gYg1ZQK7bnCTpM9s6D91PqkXW4k5U8rQApRK0GL/y7fxroOu180zP1w= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY5PR12MB3683.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(376002)(346002)(136003)(396003)(39860400002)(366004)(186003)(6666004)(31696002)(478600001)(6486002)(6512007)(41300700001)(2616005)(26005)(6506007)(38100700002)(53546011)(8936002)(5660300002)(316002)(83380400001)(2906002)(4326008)(8676002)(66476007)(66556008)(6916009)(31686004)(66946007)(30864003)(36756003)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?dHdiSHJjRkdWMkM1Q1RRK0JqblpFZHN4YUFEODdocUJTZEUyZHNzdzNsdklj?= =?utf-8?B?ZU02NFpKTFZ1bGg5K0hLd01HQ29ubFM1REluTCtkSDFWSVRuRHpLMnllOStJ?= =?utf-8?B?QnpKMnBIdlNvWGk2cFRqemU0Y2U0WXNReU9iRi9EcnZYZ1hSQm1STzRFWElU?= =?utf-8?B?akkzWGJKY1FJMklkMUZYL082Z1I0TTZrVy9GTzRnZmxsTUpKWjJReFdhLzgr?= =?utf-8?B?djFUYUo3V3N1ODJvZzNidkQwTnZ0eUh6RThLUDVjaHZlSTY3TFFkem03VmFr?= =?utf-8?B?ZlVsZG5GcStUMXdzRHRwV2hRL0RjVUNTSEJLMGZscXdINUJhZXptandoYi9N?= =?utf-8?B?NGdGaTRpMStnZXhCSk1kVVgzVlpYMnJnZnF0Tmc2YU41aFR3bjBOeU9JMXQ1?= =?utf-8?B?b1ZLZjNtR05oTzJuakRYMXZKY2srY1A3L0ZpR1podUdLbE95bnBISXJVUHE5?= =?utf-8?B?VUZ2Zy8yRlorNEZsdTdGVkZKOHhLOG1rempjTVFrR1A3TVBsK2N4V0NjQWMz?= =?utf-8?B?RzNMSUpyU3d5c3N6R2ExUjVjemhnclhjT3J2T3NZRG1WRUtJQ0dJWmx3Mmd6?= =?utf-8?B?a2lWNzNpb2RBdzFnYitFY3VCajNEYzFsUUpQcHRtODQ1MzY1eW9UZHRTZnJr?= =?utf-8?B?aTFrTnY1UGV0V3QzV3NxeDUrUXA2UGxNODk4N3Nudkc0eVdLeXoxQTRYWTZm?= =?utf-8?B?TktDdnhaVTcrMkZQMVpWb0JIUGpRTmx3K3c3WVVhY1FqR2Eya0Uzc1BUR3hu?= =?utf-8?B?SFJVUGhTZzYyUGErRlZ1M1Jsc044Qm85dFlQODlNdlRCY2hUcUtwOWpBQnJW?= =?utf-8?B?d1hVa2NwUDlMQ1lZcEJJem4wbkl5YjRTejR0VmI0M1R1Z3U2aEJ1RXhlMnlC?= =?utf-8?B?NlNQdUNNU1plamNGQ0pWaUVFSDAvanpqbEtJUjFZYWoxdlFZOWFha2oxR2Fp?= =?utf-8?B?NnVsNyt6SmU1Mkl2YkJBM3pzY01NZzAvaCtZVXp6eDdNR0hjbUFaTUsvSFlG?= =?utf-8?B?N3h1dXg1R2crV3ZOR1U3UXFuSHV2MXY2S0ZBdXIyUHhiQ3N0cldsVmFEelV3?= =?utf-8?B?VTJZWndyZlRNbGEwSnRZOTYva1U0Ymp1cFhHMVdwQkZjTHhVL2twRlkyRXRS?= =?utf-8?B?RmRMMVlhaEhmdGdJRlYvZjlvSW1hakgxMzEzZVJPdE1LTzlCbkIxRUJpblcw?= =?utf-8?B?ZFdUYVN2ZnkyNVNlaFhGcWEwczc1TldOTFJ3VTl4QmpUTFBWL01tR3Fsbi9x?= =?utf-8?B?MG1sbGxmQ1NTT2VQZS8yMXk1RllQVTVXUjFVeXVhYVhTYlJwVjNRcUxYSkVy?= =?utf-8?B?U1ZVL0dVM3h3M3FRVmZsaEhvT2p1SWdwRHpUSWc1TStrSnhFK0JCZ3lDdjdZ?= =?utf-8?B?VU9kNFFiZmFDTHVxbjE1dTlLbzFqNW90Nko0TVYrUFJrKy9GTjFtRituSm9O?= =?utf-8?B?SXVsUnY0VnFiRzNsZlhIMWUwWlU1d2Rjcjd0M3c1TStqcERiWEl1UkVFV0dw?= =?utf-8?B?UlMxRmo4U1ZjbkRiS25lQzg1K3hXUUh0bUZVMS9HS3dZZjRERldNWHNKY0dG?= =?utf-8?B?QnpaUm40djlXbVJrMFpXOEswZGIyNHVIdExZcFBScGE2UFlJRXJNb3pYNWV6?= =?utf-8?B?MzhSRWFpajV6cnpVTjVHSmFSNW42L2J0OVlnYjlLb3Fpb3FPMnFjV1V6dHdq?= =?utf-8?B?cmlKdnorTm5hYU5HZktKU2xJUi9zcnYvek9iVFBnUkpaRDVqcUU4V0ZhSk5F?= =?utf-8?B?VG9LaUN0dDkxL2Mzd0JPU3lhNlNvRklFQzUzc2hIMzloTjViYm0wdVcvS0FY?= =?utf-8?B?cVFFWENsRDJmNnE3Q3M5bXVMcVk1ekJoalJocFNJY3FpdGdUSmhLajJKOG8r?= =?utf-8?B?dmxtR1hFMlM4SU9kcUpTQ1ZEUEtGcmF5UU1OM1BVblNjZTUraWhEYWRoLytx?= =?utf-8?B?ZDgwZkl5Z1VSTzAyeXcvMHpLMWpMNWMrcS9qKzRDM2pQWGNVWGg3R1k0ZnJZ?= =?utf-8?B?cjVBTmVRY1NWN2pBUlRTM0N5YXRDSXU1dzJ4WUNNdTNjb21wM1Fwb2JVazUy?= =?utf-8?B?RWNxS29WT1F1aVV1ZkpBdEtsNTllaE5LY215dzlRZjJBcXl5WGhsSDlBVDNv?= =?utf-8?Q?e4qYHq7bCkblLInYpvYvcTutw?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: e69cbeb0-7443-4e67-83c3-08da91d2357f X-MS-Exchange-CrossTenant-AuthSource: BY5PR12MB3683.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Sep 2022 19:42:05.7586 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: FFR4c0P+qdIsJ5RdqyP9MG7f24yxnMi+AonmQBeDyWS0V3tFraoy5ejvJABT7Kdh X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB4266 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220908_124213_986792_0F47AD81 X-CRM114-Status: GOOD ( 25.12 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGkgTWF0aGlldSwKClRoYW5rcyBmb3IgcmV2aWV3aW5nIHRoaXMgcGF0Y2gtc2V0LiBBY2sgdG8g Y29tbWVudHMgYW5kIHdpbGwgZml4IGluIG5ldyAKcmV2aXNpb24uCgpPbiA5LzIvMjIgMTI6NTkg UE0sIE1hdGhpZXUgUG9pcmllciB3cm90ZToKPiBbLi4uXQo+Cj4+Pj4gKwo+Pj4+ICtzdGF0aWMg Y29uc3Qgc3RydWN0IHJwcm9jX29wcyB6eW5xbXBfcjVfcnByb2Nfb3BzID0gewo+Pj4+ICsJLnBy ZXBhcmUJPSB6eW5xbXBfcjVfcnByb2NfcHJlcGFyZSwKPj4+PiArCS51bnByZXBhcmUJPSB6eW5x bXBfcjVfcnByb2NfdW5wcmVwYXJlLAo+Pj4+ICsJLnN0YXJ0CQk9IHp5bnFtcF9yNV9ycHJvY19z dGFydCwKPj4+PiArCS5zdG9wCQk9IHp5bnFtcF9yNV9ycHJvY19zdG9wLAo+Pj4+ICsJLmxvYWQJ CT0gcnByb2NfZWxmX2xvYWRfc2VnbWVudHMsCj4+Pj4gKwkucGFyc2VfZncJPSB6eW5xbXBfcjVf cGFyc2VfZncsCj4+Pj4gKwkuZmluZF9sb2FkZWRfcnNjX3RhYmxlID0gcnByb2NfZWxmX2ZpbmRf bG9hZGVkX3JzY190YWJsZSwKPj4+PiArCS5zYW5pdHlfY2hlY2sJPSBycHJvY19lbGZfc2FuaXR5 X2NoZWNrLAo+Pj4+ICsJLmdldF9ib290X2FkZHIJPSBycHJvY19lbGZfZ2V0X2Jvb3RfYWRkciwK Pj4+PiArfTsKPj4+PiArCj4+Pj4gKy8qKgo+Pj4+ICsgKiB6eW5xbXBfcjVfYWRkX3Jwcm9jX2Nv cmUoKQo+Pj4+ICsgKiBQcm9iZXMgWnlucU1QIFI1IHByb2Nlc3NvciBkZXZpY2Ugbm9kZQo+Pj4+ ICsgKiB0aGlzIGlzIGNhbGxlZCBmb3IgZWFjaCBpbmRpdmlkdWFsIFI1IGNvcmUKPj4+PiArICoK Pj4+PiArICogQGNkZXY6IERldmljZSBub2RlIG9mIGVhY2ggcjUgY29yZQo+Pj4+ICsgKgo+Pj4+ ICsgKiBSZXR1cm46IHp5bnFtcF9yNV9jb3JlIG9iamVjdCBmb3Igc3VjY2VzcywgZXJyb3IgcG9p bnRlciBpbiBjYXNlIG9mIGVycm9yLgo+Pj4+ICsgKi8KPj4+PiArc3RhdGljIHN0cnVjdCB6eW5x bXBfcjVfY29yZSAqenlucW1wX3I1X2FkZF9ycHJvY19jb3JlKHN0cnVjdCBkZXZpY2UgKmNkZXYp Cj4+Pj4gK3sKPj4+PiArCXN0cnVjdCB6eW5xbXBfcjVfY29yZSAqcjVfY29yZTsKPj4+PiArCXN0 cnVjdCBycHJvYyAqcjVfcnByb2M7Cj4+Pj4gKwlpbnQgcmV0Owo+Pj4+ICsKPj4+PiArCS8qIFNl dCB1cCBETUEgbWFzayAqLwo+Pj4+ICsJcmV0ID0gZG1hX3NldF9jb2hlcmVudF9tYXNrKGNkZXYs IERNQV9CSVRfTUFTSygzMikpOwo+Pj4+ICsJaWYgKHJldCkKPj4+PiArCQlyZXR1cm4gRVJSX1BU UihyZXQpOwo+Pj4+ICsKPj4+PiArCS8qIEFsbG9jYXRlIHJlbW90ZXByb2MgaW5zdGFuY2UgKi8K Pj4+PiArCXI1X3Jwcm9jID0gcnByb2NfYWxsb2MoY2RldiwgZGV2X25hbWUoY2RldiksCj4+Pj4g KwkJCSAgICAgICAmenlucW1wX3I1X3Jwcm9jX29wcywKPj4+PiArCQkJICAgICAgIE5VTEwsIHNp emVvZihzdHJ1Y3QgenlucW1wX3I1X2NvcmUpKTsKPj4+PiArCWlmICghcjVfcnByb2MpIHsKPj4+ PiArCQlkZXZfZXJyKGNkZXYsICJmYWlsZWQgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciBycHJvYyBp bnN0YW5jZVxuIik7Cj4+Pj4gKwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Cj4+Pj4gKwl9Cj4+ Pj4gKwo+Pj4+ICsJcjVfcnByb2MtPmF1dG9fYm9vdCA9IGZhbHNlOwo+Pj4+ICsJcjVfY29yZSA9 IChzdHJ1Y3QgenlucW1wX3I1X2NvcmUgKilyNV9ycHJvYy0+cHJpdjsKPj4+PiArCXI1X2NvcmUt PmRldiA9IGNkZXY7Cj4+Pj4gKwlyNV9jb3JlLT5ucCA9IGRldl9vZl9ub2RlKGNkZXYpOwo+Pj4+ ICsJaWYgKCFyNV9jb3JlLT5ucCkgewo+Pj4+ICsJCWRldl9lcnIoY2RldiwgImNhbid0IGdldCBk ZXZpY2Ugbm9kZSBmb3IgcjUgY29yZVxuIik7Cj4+Pj4gKwkJcmV0dXJuIEVSUl9QVFIoLUVJTlZB TCk7Cj4+PiBIZXJlIEByNV9ycHJvYyBpcyBsZWFrZWQgYW5kIHI1X3Jwcm9jLT5ycHJvYyBuZXZl ciBmcmVlJ2VkLgo+PiBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgdXNlZCBpbiBjbHVzdGVyX2luaXQu Cj4+Cj4+IHI1X3Jwcm9jLT5ycHJvYyBpcyBmcmVlJ2VkIGluIHJlbGVhc2VfcjVfY29yZSBsYWJl bCBpbgo+PiB6eW5xbXBfcjVfY2x1c3Rlcl9pbml0IGZ1bmN0aW9uIGlmIHRoaXMgZnVuY3Rpb24g ZmFpbHMuCj4gSXQgd291bGQgYmUgdGhlIGNhc2UgaWYgQHI1X2NvcmUgd2FzIHJldHVybmVkLCBi dXQgaXQgaXMgbm90LiAgQSBzdWNoCj4gQHI1X2NvcmVbaV0genlucW1wX3I1X2NsdXN0ZXJfaW5p dCgpIGlzIHN0aWxsIG51bGwgYW5kIHRoZSBtZW1vcnkgbGVha2VkLgoKQWNrLiBZZXMgeW91IGFy ZSByaWdodC4gVGhhbmtzISEKCj4KPj4gVGhpcyBhdm9pZHMgbXVsdGlwbGUgZnJlZSBvZiBzYW1l IHJlc291cmNlLgo+Pgo+Pj4+ICsJfQo+Pj4+ICsKPj4+PiArCS8qIEFkZCBSNSByZW1vdGVwcm9j IGNvcmUgKi8KPj4+PiArCXJldCA9IHJwcm9jX2FkZChyNV9ycHJvYyk7Cj4+Pj4gKwlpZiAocmV0 KSB7Cj4+Pj4gKwkJZGV2X2VycihjZGV2LCAiZmFpbGVkIHRvIGFkZCByNSByZW1vdGVwcm9jXG4i KTsKPj4+PiArCQlyZXR1cm4gRVJSX1BUUihyZXQpOwo+Pj4gU2FtZS4KPj4gU2FtZSBhcyBhYm92 ZS4KQWNrLiBJIHdpbGwgZml4IHRoaXMuCj4+Pj4gKwl9Cj4+Pj4gKwo+Pj4+ICsJcjVfY29yZS0+ cnByb2MgPSByNV9ycHJvYzsKPj4+PiArCXJldHVybiByNV9jb3JlOwo+Pj4+ICt9Cj4+Pj4gKwo+ Pj4+ICsvKioKPj4+PiArICogenlucW1wX3I1X2dldF90Y21fbm9kZSgpCj4+Pj4gKyAqIElkZWFs bHkgdGhpcyBmdW5jdGlvbiBzaG91bGQgcGFyc2UgdGNtIG5vZGUgYW5kIHN0b3JlIGluZm9ybWF0 aW9uCj4+Pj4gKyAqIGluIHI1X2NvcmUgaW5zdGFuY2UuIFdlIHdpbGwgdXNlIGhhcmRjb2RlZCBU Q00gaW5mb3JtYXRpb24gZnJvbQo+Pj4+ICsgKiBkcml2ZXIgZm9yIG5vdyBpbiB0aGlzIGZ1bmN0 aW9uLgo+Pj4+ICsgKgo+Pj4gSXQgd291bGQgYmUgYSBnb29kIGlkZWEgdG8gZXhwbGFpbiBfd2h5 XyBoYXJkY29kZWQgdmFsdWVzIGFyZSB1c2VkLgo+PiBJdCBpcyBleHBsYWluZWQgaW4gZnVuY3Rp b24sIGJ1dCB3aWxsIGFkZCBpbiBkZXNjcmlwdGlvbiB0b28uCj4+Pgo+Pj4+ICsgKiBAY2x1c3Rl cjogcG9pbnRlciB0byB6eW5xbXBfcjVfY2x1c3RlciB0eXBlIG9iamVjdAo+Pj4+ICsgKgo+Pj4+ ICsgKiBSZXR1cm46IDAgZm9yIHN1Y2Nlc3MgYW5kIGVycm9yIGNvZGUgZm9yIGZhaWx1cmUuCj4+ Pj4gKyAqLwo+Pj4+ICtzdGF0aWMgaW50IHp5bnFtcF9yNV9nZXRfdGNtX25vZGUoc3RydWN0IHp5 bnFtcF9yNV9jbHVzdGVyICpjbHVzdGVyKQo+Pj4+ICt7Cj4+Pj4gKwlzdHJ1Y3QgZGV2aWNlICpk ZXYgPSBjbHVzdGVyLT5kZXY7Cj4+Pj4gKwlzdHJ1Y3QgenlucW1wX3I1X2NvcmUgKnI1X2NvcmU7 Cj4+Pj4gKwlpbnQgdGNtX2JhbmtfY291bnQsIHRjbV9ub2RlOwo+Pj4+ICsJaW50IGksIGo7Cj4+ Pj4gKwo+Pj4+ICsJLyoKPj4+PiArCSAqIFRvRG86IFVzZSBwcmVkZWZpbmVkIFRDTSBhZGRyZXNz IHNwYWNlIHZhbHVlcyBmcm9tIGRyaXZlciB3aGlsZQo+Pj4gSSdtIG5vdCBzdXJlIHdoeSB0aGVy ZSBpcyBhICJUb0RvIiBoZXJlIHNpbmNlIHRoaXMgaXMgZXhhY3RseSB3aGF0IHlvdSBhcmUKPj4+ IGRvaW5nLgo+PiBBY2suIFRvRG8gbmVlZHMgdG8gZ28uCj4+Pj4gKwkgKiBzeXN0ZW0tZHQgc3Bl YyBpcyBub3QgZmluYWwgZm9yIFRDTQo+Pj4+ICsJICovCj4+Pj4gKwl0Y21fYmFua19jb3VudCA9 IEFSUkFZX1NJWkUoenlucW1wX3RjbV9iYW5rcyk7Cj4+Pj4gKwo+Pj4+ICsJLyogY291bnQgcGVy IGNvcmUgdGNtIGJhbmtzICovCj4+Pj4gKwl0Y21fYmFua19jb3VudCA9IHRjbV9iYW5rX2NvdW50 IC8gY2x1c3Rlci0+Y29yZV9jb3VudDsKPj4+PiArCj4+Pj4gKwlpZiAodGNtX2JhbmtfY291bnQg PD0gMCkKPj4+PiArCQlyZXR1cm4gLUVJTlZBTDsKPj4+IEFzIGZhciBhcyBJIGNhbiB0ZWxsIHRo aXMgY2FuJ3QgaGFwcGVuIGFuZCBhcyBzdWNoIHNob3VsZCBiZSByZW1vdmVkLgo+PiBJIGtlcHQg dGhpcyBjaGVjayBmb3IgZnV0dXJlLCB3aGVuIHdlIGFkZCBUQ00gZHQgbm9kZXMuIEkgd2lsbCBy ZW1vdmUgaXQuCj4+Cj4+Pj4gKwo+Pj4+ICsJLyoKPj4+PiArCSAqIHI1IGNvcmUgMCB3aWxsIHVz ZSBhbGwgb2YgVENNIGJhbmtzIGluIGxvY2tzdGVwIG1vZGUuCj4+Pj4gKwkgKiBJbiBzcGxpdCBt b2RlLCByNSBjb3JlMCB3aWxsIHVzZSAxMjhrIGFuZCByNSBjb3JlMSB3aWxsIHVzZSBhbm90aGVy Cj4+Pj4gKwkgKiAxMjhrLiBBc3NpZ24gVENNIGJhbmtzIHRvIGVhY2ggY29yZSBhY2NvcmRpbmds eQo+Pj4+ICsJICovCj4+Pj4gKwl0Y21fbm9kZSA9IDA7Cj4+Pj4gKwlmb3IgKGkgPSAwOyBpIDwg Y2x1c3Rlci0+Y29yZV9jb3VudDsgaSsrKSB7Cj4+Pj4gKwkJcjVfY29yZSA9IGNsdXN0ZXItPnI1 X2NvcmVzW2ldOwo+Pj4+ICsJCXI1X2NvcmUtPnRjbV9iYW5rcyA9IGRldm1fa2NhbGxvYyhkZXYs IHRjbV9iYW5rX2NvdW50LAo+Pj4+ICsJCQkJCQkgIHNpemVvZihzdHJ1Y3QgbWVtX2JhbmtfZGF0 YSAqKSwKPj4+PiArCQkJCQkJICBHRlBfS0VSTkVMKTsKPj4+PiArCQlpZiAoIXI1X2NvcmUtPnRj bV9iYW5rcykKPj4+PiArCQkJcmV0dXJuIC1FTk9NRU07Cj4+Pj4gKwo+Pj4+ICsJCWZvciAoaiA9 IDA7IGogPCB0Y21fYmFua19jb3VudDsgaisrKSB7Cj4+Pj4gKwkJCS8qCj4+Pj4gKwkJCSAqIFVz ZSBwcmUtZGVmaW5lZCBUQ00gcmVnIHZhbHVlcy4KPj4+PiArCQkJICogRXZlbnR1YWxseSB0aGlz IHNob3VsZCBiZSByZXBsYWNlZCBieSB2YWx1ZXMKPj4+PiArCQkJICogcGFyc2VkIGZyb20gZHRz Lgo+Pj4+ICsJCQkgKi8KPj4+PiArCQkJcjVfY29yZS0+dGNtX2JhbmtzW2pdID0KPj4+PiArCQkJ CShzdHJ1Y3QgbWVtX2JhbmtfZGF0YSAqKSZ6eW5xbXBfdGNtX2JhbmtzW3RjbV9ub2RlXTsKPj4+ PiArCQkJdGNtX25vZGUrKzsKPj4+PiArCQl9Cj4+Pj4gKwo+Pj4+ICsJCXI1X2NvcmUtPnRjbV9i YW5rX2NvdW50ID0gdGNtX2JhbmtfY291bnQ7Cj4+Pj4gKwl9Cj4+Pj4gKwo+Pj4+ICsJcmV0dXJu IDA7Cj4+Pj4gK30KPj4+PiArCj4+Pj4gKy8qKgo+Pj4+ICsgKiB6eW5xbXBfcjVfZ2V0X21lbV9y ZWdpb25fbm9kZSgpCj4+Pj4gKyAqIHBhcnNlIG1lbW9yeS1yZWdpb24gcHJvcGVydHkgZnJvbSBk dCBub2RlIGFuZCBhZGQKPj4+PiArICogbWVtb3J5IHJlZ2lvbiBjYXJ2ZW91dHMKPj4+PiArICoK Pj4+PiArICogQHI1X2NvcmU6IHBvaW50ZXIgdG8genlucW1wX3I1X2NvcmUgdHlwZSBvYmplY3QK Pj4+PiArICoKPj4+PiArICogUmV0dXJuOiAwIGZvciBzdWNjZXNzIGFuZCBlcnJvciBjb2RlIGZv ciBmYWlsdXJlLgo+Pj4+ICsgKi8KPj4+PiArc3RhdGljIGludCB6eW5xbXBfcjVfZ2V0X21lbV9y ZWdpb25fbm9kZShzdHJ1Y3QgenlucW1wX3I1X2NvcmUgKnI1X2NvcmUpCj4+Pj4gK3sKPj4+PiAr CXN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsICpybWVtX25wOwo+Pj4+ICsJc3RydWN0IHJlc2VydmVk X21lbSAqKnJtZW07Cj4+Pj4gKwlpbnQgcmVzX21lbV9jb3VudCwgaTsKPj4+PiArCXN0cnVjdCBk ZXZpY2UgKmRldjsKPj4+PiArCj4+Pj4gKwlkZXYgPSByNV9jb3JlLT5kZXY7Cj4+Pj4gKwlucCA9 IHI1X2NvcmUtPm5wOwo+Pj4+ICsKPj4+PiArCXJlc19tZW1fY291bnQgPSBvZl9wcm9wZXJ0eV9j b3VudF9lbGVtc19vZl9zaXplKG5wLCAibWVtb3J5LXJlZ2lvbiIsCj4+Pj4gKwkJCQkJCQlzaXpl b2YocGhhbmRsZSkpOwo+Pj4+ICsJaWYgKHJlc19tZW1fY291bnQgPD0gMCkgewo+Pj4+ICsJCWRl dl93YXJuKGRldiwgImZhaWxlZCB0byBnZXQgbWVtb3J5LXJlZ2lvbiBwcm9wZXJ0eSAlZFxuIiwK Pj4+PiArCQkJIHJlc19tZW1fY291bnQpOwo+Pj4+ICsJCXI1X2NvcmUtPnJtZW1fY291bnQgPSAw Owo+Pj4+ICsJCXJldHVybiAwOwo+Pj4+ICsJfQo+Pj4+ICsKPj4+PiArCXJtZW0gPSBkZXZtX2tj YWxsb2MoZGV2LCByZXNfbWVtX2NvdW50LAo+Pj4+ICsJCQkgICAgc2l6ZW9mKHN0cnVjdCByZXNl cnZlZF9tZW0gKiksIEdGUF9LRVJORUwpOwo+Pj4+ICsJaWYgKCFybWVtKQo+Pj4+ICsJCXJldHVy biAtRU5PTUVNOwo+Pj4+ICsKPj4+PiArCWZvciAoaSA9IDA7IGkgPCByZXNfbWVtX2NvdW50OyBp KyspIHsKPj4+PiArCQlybWVtX25wID0gb2ZfcGFyc2VfcGhhbmRsZShucCwgIm1lbW9yeS1yZWdp b24iLCBpKTsKPj4+PiArCQlpZiAoIXJtZW1fbnApCj4+Pj4gKwkJCWdvdG8gcmVsZWFzZV9ybWVt Owo+Pj4+ICsKPj4+PiArCQlybWVtW2ldID0gb2ZfcmVzZXJ2ZWRfbWVtX2xvb2t1cChybWVtX25w KTsKPj4+PiArCQlpZiAoIXJtZW1baV0pIHsKPj4+PiArCQkJb2Zfbm9kZV9wdXQocm1lbV9ucCk7 Cj4+Pj4gKwkJCWdvdG8gcmVsZWFzZV9ybWVtOwo+Pj4+ICsJCX0KPj4+PiArCj4+Pj4gKwkJb2Zf bm9kZV9wdXQocm1lbV9ucCk7Cj4+Pj4gKwl9Cj4+Pj4gKwo+Pj4+ICsJcjVfY29yZS0+cm1lbV9j b3VudCA9IHJlc19tZW1fY291bnQ7Cj4+Pj4gKwlyNV9jb3JlLT5ybWVtID0gcm1lbTsKPj4+PiAr CXJldHVybiAwOwo+Pj4+ICsKPj4+PiArcmVsZWFzZV9ybWVtOgo+Pj4+ICsJZm9yIChpLS07IGkg Pj0gMDsgaS0tKQo+Pj4+ICsJCWtmcmVlKHJtZW1baV0pOwo+Pj4gRnVuY3Rpb24gb2ZfcmVzZXJ2 ZWRfbWVtX2xvb2t1cCgpIGRvZXNuJ3QgYWxsb2NhdGUgYSBuZXcgcmVzZXJ2ZWRfbWVtIHN0cnVj dHVyZSwKPj4+IHlvdSBnZXQgYSByZWZlcmVuY2UgdG8gYW4gZXhpc3Rpbmcgb25lLiAgQXMgc3Vj aCB0aGVyZSBpcyBubyBuZWVkIHRvIGV4cGxpY2l0bHkKPj4+IGZyZWUgaW5kaXZpZHVhbCBlbGVt ZW50cyBvZiB0aGUgcm1lbSBhcnJheS4KPj4gQWNrLgo+Pj4+ICsJZGV2bV9rZnJlZShkZXYsIHJt ZW0pOwo+Pj4+ICsJcmV0dXJuIC1FTk9NRU07Cj4+Pj4gK30KPj4+PiArCj4+Pj4gKy8qCj4+Pj4g KyAqIHp5bnFtcF9yNV9jb3JlX2luaXQoKQo+Pj4+ICsgKiBDcmVhdGUgYW5kIGluaXRpYWxpemUg enlucW1wX3I1X2NvcmUgdHlwZSBvYmplY3QKPj4+PiArICoKPj4+PiArICogQGNsdXN0ZXI6IHBv aW50ZXIgdG8genlucW1wX3I1X2NsdXN0ZXIgdHlwZSBvYmplY3QKPj4+PiArICoKPj4+PiArICog UmV0dXJuOiAwIGZvciBzdWNjZXNzIGFuZCBlcnJvciBjb2RlIGZvciBmYWlsdXJlLgo+Pj4+ICsg Ki8KPj4+PiArc3RhdGljIGludCB6eW5xbXBfcjVfY29yZV9pbml0KHN0cnVjdCB6eW5xbXBfcjVf Y2x1c3RlciAqY2x1c3RlciwKPj4+PiArCQkJICAgICAgIGVudW0gcnB1X29wZXJfbW9kZSBmd19y ZWdfdmFsLAo+Pj4+ICsJCQkgICAgICAgZW51bSBycHVfdGNtX2NvbWIgdGNtX21vZGUpCj4+Pj4g K3sKPj4+PiArCXN0cnVjdCBkZXZpY2UgKmRldiA9IGNsdXN0ZXItPmRldjsKPj4+PiArCXN0cnVj dCB6eW5xbXBfcjVfY29yZSAqcjVfY29yZTsKPj4+PiArCWludCByZXQsIGk7Cj4+Pj4gKwo+Pj4+ ICsJcmV0ID0genlucW1wX3I1X2dldF90Y21fbm9kZShjbHVzdGVyKTsKPj4+PiArCWlmIChyZXQg PCAwKSB7Cj4+Pj4gKwkJZGV2X2VycihkZXYsICJjYW4ndCBnZXQgdGNtIG5vZGUsIGVyciAlZFxu IiwgcmV0KTsKPj4+PiArCQlyZXR1cm4gcmV0Owo+Pj4+ICsJfQo+Pj4+ICsKPj4+PiArCWZvciAo aSA9IDA7IGkgPCBjbHVzdGVyLT5jb3JlX2NvdW50OyBpKyspIHsKPj4+PiArCQlyNV9jb3JlID0g Y2x1c3Rlci0+cjVfY29yZXNbaV07Cj4+Pj4gKwo+Pj4+ICsJCXJldCA9IHp5bnFtcF9yNV9nZXRf bWVtX3JlZ2lvbl9ub2RlKHI1X2NvcmUpOwo+Pj4+ICsJCWlmIChyZXQpCj4+Pj4gKwkJCWRldl93 YXJuKGRldiwgIm1lbW9yeS1yZWdpb24gcHJvcCBmYWlsZWQgJWRcbiIsIHJldCk7Cj4+Pj4gKwo+ Pj4+ICsJCS8qIEluaXRpYWxpemUgcjUgY29yZXMgd2l0aCBwb3dlci1kb21haW5zIHBhcnNlZCBm cm9tIGR0cyAqLwo+Pj4+ICsJCXJldCA9IG9mX3Byb3BlcnR5X3JlYWRfdTMyX2luZGV4KHI1X2Nv cmUtPm5wLCAicG93ZXItZG9tYWlucyIsCj4+Pj4gKwkJCQkJCSAxLCAmcjVfY29yZS0+cG1fZG9t YWluX2lkKTsKPj4+PiArCQlpZiAocmV0KSB7Cj4+Pj4gKwkJCWRldl9lcnIoZGV2LCAiZmFpbGVk IHRvIGdldCBwb3dlci1kb21haW5zIHByb3BlcnR5XG4iKTsKPj4+PiArCQkJcmV0dXJuIHJldDsK Pj4+PiArCQl9Cj4+Pj4gKwo+Pj4+ICsJCXJldCA9IHp5bnFtcF9yNV9zZXRfbW9kZShyNV9jb3Jl LCBmd19yZWdfdmFsLCB0Y21fbW9kZSk7Cj4+Pj4gKwkJaWYgKHJldCkgewo+Pj4+ICsJCQlkZXZf ZXJyKGRldiwgImZhaWxlZCB0byBzZXQgcjUgY2x1c3RlciBtb2RlICVkLCBlcnIgJWRcbiIsCj4+ Pj4gKwkJCQljbHVzdGVyLT5tb2RlLCByZXQpOwo+Pj4+ICsJCQlyZXR1cm4gcmV0Owo+Pj4+ICsJ CX0KPj4+PiArCX0KPj4+PiArCj4+Pj4gKwlyZXR1cm4gMDsKPj4+PiArfQo+Pj4+ICsKPj4+PiAr LyoKPj4+PiArICogenlucW1wX3I1X2NsdXN0ZXJfaW5pdCgpCj4+Pj4gKyAqIENyZWF0ZSBhbmQg aW5pdGlhbGl6ZSB6eW5xbXBfcjVfY2x1c3RlciB0eXBlIG9iamVjdAo+Pj4+ICsgKgo+Pj4+ICsg KiBAY2x1c3RlcjogcG9pbnRlciB0byB6eW5xbXBfcjVfY2x1c3RlciB0eXBlIG9iamVjdAo+Pj4+ ICsgKgo+Pj4+ICsgKiBSZXR1cm46IDAgZm9yIHN1Y2Nlc3MgYW5kIGVycm9yIGNvZGUgZm9yIGZh aWx1cmUuCj4+Pj4gKyAqLwo+Pj4+ICtzdGF0aWMgaW50IHp5bnFtcF9yNV9jbHVzdGVyX2luaXQo c3RydWN0IHp5bnFtcF9yNV9jbHVzdGVyICpjbHVzdGVyKQo+Pj4+ICt7Cj4+Pj4gKwllbnVtIHp5 bnFtcF9yNV9jbHVzdGVyX21vZGUgY2x1c3Rlcl9tb2RlID0gTE9DS1NURVBfTU9ERTsKPj4+PiAr CXN0cnVjdCBkZXZpY2UgKmRldiA9IGNsdXN0ZXItPmRldjsKPj4+PiArCXN0cnVjdCBkZXZpY2Vf bm9kZSAqZGV2X25vZGUgPSBkZXZfb2Zfbm9kZShkZXYpOwo+Pj4+ICsJc3RydWN0IHBsYXRmb3Jt X2RldmljZSAqY2hpbGRfcGRldjsKPj4+PiArCXN0cnVjdCB6eW5xbXBfcjVfY29yZSAqKnI1X2Nv cmVzOwo+Pj4+ICsJZW51bSBycHVfb3Blcl9tb2RlIGZ3X3JlZ192YWw7Cj4+Pj4gKwlzdHJ1Y3Qg ZGV2aWNlICoqY2hpbGRfZGV2czsKPj4+PiArCXN0cnVjdCBkZXZpY2Vfbm9kZSAqY2hpbGQ7Cj4+ Pj4gKwllbnVtIHJwdV90Y21fY29tYiB0Y21fbW9kZTsKPj4+PiArCWludCBjb3JlX2NvdW50LCBy ZXQsIGk7Cj4+Pj4gKwo+Pj4+ICsJcmV0ID0gb2ZfcHJvcGVydHlfcmVhZF91MzIoZGV2X25vZGUs ICJ4bG54LGNsdXN0ZXItbW9kZSIsICZjbHVzdGVyX21vZGUpOwo+Pj4+ICsKPj4+PiArCS8qCj4+ Pj4gKwkgKiBvbiBzdWNjZXNzIHJldHVybnMgMCwgaWYgbm90IGRlZmluZWQgdGhlbiByZXR1cm5z IC1FSU5WQUwsCj4+Pj4gKwkgKiBJbiB0aGF0IGNhc2UsIGRlZmF1bHQgaXMgTE9DS1NURVAgbW9k ZQo+Pj4+ICsJICovCj4+Pj4gKwlpZiAocmV0ICE9IC1FSU5WQUwgJiYgcmV0ICE9IDApIHsKPj4+ PiArCQlkZXZfZXJyKGRldiwgIkludmFsaWQgeGxueCxjbHVzdGVyLW1vZGUgcHJvcGVydHlcbiIp Owo+Pj4+ICsJCXJldHVybiAtRUlOVkFMOwo+Pj4+ICsJfQo+Pj4+ICsKPj4+PiArCS8qCj4+Pj4g KwkgKiBGb3Igbm93IGRyaXZlciBvbmx5IHN1cHBvcnRzIHNwbGl0IG1vZGUgYW5kIGxvY2tzdGVw IG1vZGUuCj4+Pj4gKwkgKiBmYWlsIGRyaXZlciBwcm9iZSBpZiBlaXRoZXIgb2YgdGhhdCBpcyBu b3Qgc2V0IGluIGR0cy4KPj4+PiArCSAqLwo+Pj4+ICsJaWYgKGNsdXN0ZXJfbW9kZSA9PSBMT0NL U1RFUF9NT0RFKSB7Cj4+PiBXaHkgaXMgYXJlIExPQ0tTVEVQX01PREUgYW5kIExPQ0tTVEVQX01P REUgZGVmaW5lZCB3aGVuIHRoZSBzYW1lIHZhbHVlcyB3ZXJlCj4+PiBhbHJlYWR5IGFkZGVkIGlu IHhsbngtenlucW1wLmggaW4gcGF0Y2ggMy82Pwo+PiBBY3R1YWxseSBMT0NLU1RFUF9NT0RFIGRl ZmluZWQgaW4gdGhpcyBkcml2ZXIgaXMgdGFrZW4gZnJvbSBkdC1iaW5kaW5ncyBvZgo+PiB0aGlz IGRyaXZlci4gSG93ZXZlciwgUE1fUlBVX01PREVfTE9DS1NURVAgZGVmaW5lZCBpbiBmaXJtd2Fy ZSByZXByZXNlbnRzCj4+IHZhbHVlIGV4cGVjdGVkIGJ5IGZpcm13YXJlLiBUaGV5IGFyZSBub3Qg dGhlIHNhbWUgZGVmaW5lcy4gTE9DS1NURVBfTU9ERSA9IDEKPj4gd2hpY2ggaXMgZGVmaW5lZCBh cyBwZXIgeGxueCxjbHVzdGVyLW1vZGUgYmluZGluZ3MgYW5kIHNpbWlsYXIgdG8gdGkKPj4gY2x1 c3Rlci1tb2RlIGJpbmRpbmdzLiBQTV9SUFVfTU9ERV9MT0NLU1RFUCA9IDAgd2hpY2ggaXMgZXhw ZWN0ZWQgZnJvbQo+PiBmaXJtd2FyZS4KPiBBaCB5ZXMsIHlvdSBhcmUgY29ycmVjdC4KPgo+Pgo+ Pj4gICAgIEFuZCB3aHkgbm90IGFkZCBTSU5HTEVfQ1BVX01PREUKPj4+IHRoZXJlIGFzIHdlbGwg aW5zdGVhZCBvZiBkdXBsaWNhdGluZyB0aGluZ3MgaW4gZW51bSB6eW5xbXBfcjVfY2x1c3Rlcl9t b2RlPwo+Pgo+PiBTSU5HTEVfQ1BVX01PREUganVzdCByZXByZXNlbnRzIHhsbngsY2x1c3Rlci1t b2RlIHZhbHVlIGZyb20gZHQtYmluZGluZ3MuIEl0Cj4+IGlzIG5vdCBzdXBwb3J0ZWQgaW4gZmly bXdhcmUuCj4+Cj4+IFRoZXJlIGFyZSBtdWx0aXBsZSB3YXlzIHRvIGNvbmZpZ3VyZSByNSBjbHVz dGVyIGluIHNpbmdsZS1jcHUgbW9kZS4KPj4KPj4gMSkgQWRkIG5ldyBFRU1JIGNhbGwgd2hpY2gg YXNrcyBmaXJtd2FyZSB0byBjb25maWd1cmUgY2x1c3RlciBpbiBzaW5nbGUtY3B1Cj4+IG1vZGUu Cj4+Cj4+IG9yIDIpIHVzZSBleGlzdGluZyBFRU1JIGNhbGxzIGFuZCBjb25maWd1cmUgY29yZXMg ZnJvbSBkcml2ZXIuIEFzCj4+IHNpbmdsZS1jcHUtbW9kZSBpcyBub3Qgc3VwcG9ydGVkIHlldCwg SSBhbSBub3Qgc3VyZSwgaG93IGl0IHdpbGwKPj4KPj4gYmUgaW1wbGVtZW50ZWQgb3Igd2hhdCBp dHMgZGVzaWduIHdpbGwgbG9vayBsaWtlLiBTbywgSSBoYXZlbid0IG1vZGlmaWVkCj4+IGFueXRo aW5nIGluIGZpcm13YXJlIGRyaXZlciByZWxhdGVkIHRvIHNpbmdsZS1jcHUgbW9kZS4KPj4KPj4K PiBUaGF0IGlzIGZpbmUuCj4KPj4+PiArCQl0Y21fbW9kZSA9IFBNX1JQVV9UQ01fQ09NQjsKPj4+ PiArCQlmd19yZWdfdmFsID0gUE1fUlBVX01PREVfTE9DS1NURVA7Cj4+Pj4gKwl9IGVsc2UgaWYg KGNsdXN0ZXJfbW9kZSA9PSBTUExJVF9NT0RFKSB7Cj4+Pj4gKwkJdGNtX21vZGUgPSBQTV9SUFVf VENNX1NQTElUOwo+Pj4+ICsJCWZ3X3JlZ192YWwgPSBQTV9SUFVfTU9ERV9TUExJVDsKPj4+PiAr CX0gZWxzZSB7Cj4+Pj4gKwkJZGV2X2VycihkZXYsICJkcml2ZXIgZG9lcyBub3Qgc3VwcG9ydCBj bHVzdGVyIG1vZGUgJWRcbiIsIGNsdXN0ZXJfbW9kZSk7Cj4+Pj4gKwkJcmV0dXJuIC1FSU5WQUw7 Cj4+Pj4gKwl9Cj4+Pj4gKwo+Pj4+ICsJLyoKPj4+PiArCSAqIE51bWJlciBvZiBjb3JlcyBpcyBk ZWNpZGVkIGJ5IG51bWJlciBvZiBjaGlsZCBub2RlcyBvZgo+Pj4+ICsJICogcjVmIHN1YnN5c3Rl bSBub2RlIGluIGR0cy4gSWYgU3BsaXQgbW9kZSBpcyB1c2VkIGluIGR0cwo+Pj4+ICsJICogMiBj aGlsZCBub2RlcyBhcmUgZXhwZWN0ZWQuCj4+Pj4gKwkgKiBJbiBsb2Nrc3RlcCBtb2RlIGlmIHR3 byBjaGlsZCBub2RlcyBhcmUgYXZhaWxhYmxlLAo+Pj4+ICsJICogb25seSB1c2UgZmlyc3QgY2hp bGQgbm9kZSBhbmQgY29uc2lkZXIgaXQgYXMgY29yZTAKPj4+PiArCSAqIGFuZCBpZ25vcmUgY29y ZTEgZHQgbm9kZS4KPj4+PiArCSAqLwo+Pj4+ICsJY29yZV9jb3VudCA9IG9mX2dldF9hdmFpbGFi bGVfY2hpbGRfY291bnQoZGV2X25vZGUpOwo+Pj4+ICsJaWYgKGNvcmVfY291bnQgPD0gMCkgewo+ Pj4+ICsJCWRldl9lcnIoZGV2LCAiSW52YWxpZCBudW1iZXIgb2YgcjUgY29yZXMgJWQiLCBjb3Jl X2NvdW50KTsKPj4+PiArCQlyZXR1cm4gLUVJTlZBTDsKPj4+PiArCX0gZWxzZSBpZiAoY2x1c3Rl cl9tb2RlID09IFNQTElUX01PREUgJiYgY29yZV9jb3VudCAhPSAyKSB7Cj4+Pj4gKwkJZGV2X2Vy cihkZXYsICJJbnZhbGlkIG51bWJlciBvZiByNSBjb3JlcyBmb3Igc3BsaXQgbW9kZVxuIik7Cj4+ Pj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4+Pj4gKwl9IGVsc2UgaWYgKGNsdXN0ZXJfbW9kZSA9PSBM T0NLU1RFUF9NT0RFICYmIGNvcmVfY291bnQgPT0gMikgewo+Pj4+ICsJCWRldl93YXJuKGRldiwg Ik9ubHkgcjUgY29yZTAgd2lsbCBiZSB1c2VkXG4iKTsKPj4+PiArCQljb3JlX2NvdW50ID0gMTsK Pj4+PiArCX0KPj4+PiArCj4+Pj4gKwljaGlsZF9kZXZzID0ga2NhbGxvYyhjb3JlX2NvdW50LCBz aXplb2Yoc3RydWN0IGRldmljZSAqKSwgR0ZQX0tFUk5FTCk7Cj4+Pj4gKwlpZiAoIWNoaWxkX2Rl dnMpCj4+Pj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4+Pj4gKwo+Pj4+ICsJcjVfY29yZXMgPSBrY2Fs bG9jKGNvcmVfY291bnQsCj4+Pj4gKwkJCSAgIHNpemVvZihzdHJ1Y3QgenlucW1wX3I1X2NvcmUg KiksIEdGUF9LRVJORUwpOwo+Pj4+ICsJaWYgKCFyNV9jb3Jlcykgewo+Pj4+ICsJCWtmcmVlKGNo aWxkX2RldnMpOwo+Pj4+ICsJCXJldHVybiAtRU5PTUVNOwo+Pj4+ICsJfQo+Pj4+ICsKPj4+PiAr CWkgPSAwOwo+Pj4+ICsJZm9yX2VhY2hfYXZhaWxhYmxlX2NoaWxkX29mX25vZGUoZGV2X25vZGUs IGNoaWxkKSB7Cj4+Pj4gKwkJY2hpbGRfcGRldiA9IG9mX2ZpbmRfZGV2aWNlX2J5X25vZGUoY2hp bGQpOwo+Pj4+ICsJCWlmICghY2hpbGRfcGRldikgewo+Pj4+ICsJCQlvZl9ub2RlX3B1dChjaGls ZCk7Cj4+Pj4gKwkJCXJldCA9IC1FTk9ERVY7Cj4+Pj4gKwkJCWdvdG8gcmVsZWFzZV9yNV9jb3Jl czsKPj4+PiArCQl9Cj4+Pj4gKwo+Pj4+ICsJCWNoaWxkX2RldnNbaV0gPSAmY2hpbGRfcGRldi0+ ZGV2Owo+Pj4+ICsKPj4+PiArCQkvKiBjcmVhdGUgYW5kIGFkZCByZW1vdGVwcm9jIGluc3RhbmNl IG9mIHR5cGUgc3RydWN0IHJwcm9jICovCj4+Pj4gKwkJcjVfY29yZXNbaV0gPSB6eW5xbXBfcjVf YWRkX3Jwcm9jX2NvcmUoJmNoaWxkX3BkZXYtPmRldik7Cj4+Pj4gKwkJaWYgKElTX0VSUihyNV9j b3Jlc1tpXSkpIHsKPj4+PiArCQkJb2Zfbm9kZV9wdXQoY2hpbGQpOwo+Pj4+ICsJCQlyZXQgPSBQ VFJfRVJSKHI1X2NvcmVzW2ldKTsKPj4+PiArCQkJZ290byByZWxlYXNlX3I1X2NvcmVzOwo+Pj4g SWYgd2UgYXJlIGhlcmUgYW5kIGkgPT0gMCwgd2UgYXJlIGxlYWtpbmcgYSByZWZlcmVuY2UgdG8g Y2hpbGRfcGRldiBzaW5jZSB0aGUKPj4+IGxvb3AgaW4gcmVsZWFzZV9yNV9jb3JlcyB3b24ndCBl eGVjdXRlLgo+PiBBY2suIEkgd2lsbCBjaGVjayBpZiBpID09IDAgYW5kIHB1dF9kZXZpY2UoKSBi ZWZvcmUganVtcGluZyB0bwo+PiByZWxlYXNlX3I1X2NvcmVzLgo+Pj4+ICsJCX0KPj4+PiArCj4+ Pj4gKwkJaSsrOwo+Pj4+ICsKPj4+PiArCQkvKgo+Pj4+ICsJCSAqIElmIHR3byBjaGlsZCBub2Rl cyBhcmUgYXZhaWxhYmxlIGluIGR0cyBpbiBsb2Nrc3RlcCBtb2RlLAo+Pj4+ICsJCSAqIHRoZW4g aWdub3JlIHNlY29uZCBjaGlsZCBub2RlLgo+Pj4+ICsJCSAqLwo+Pj4+ICsJCWlmIChpID09IGNv cmVfY291bnQpIHsKPj4+PiArCQkJb2Zfbm9kZV9wdXQoY2hpbGQpOwo+Pj4+ICsJCQlicmVhazsK Pj4+PiArCQl9Cj4+PiBJbnN0ZWFkIG9mIHVzaW5nIHRoZSBpIHRvIGNoZWNrIHRoZSBjb3Jlcywg c2ltcGx5IGJyZWFrIGlmIGNsdXN0ZXJfbW9kZSA9PQo+Pj4gTE9DS1NURVBfTU9ERS4gIFRoYXQg d2lsbCBhdm9pZCB0aGUgZnJhZ2lsZSBkYW5jZSBhcm91bmQgdGhlIG1hbmlwdWxhdGlvbiBvZgo+ Pj4gdmFyaWFibGUgaSBhbmQgc2ltcGxpZnkgdGhlIHJlbGVhc2Ugb2YgcmVzb3VyY2VzIGluIHJl bGVhc2VfcjVfY29yZXMuCj4+Pgo+PiBBY3R1YWxseSB2YXJpYWJsZSBuYW1lICJpIiBuZWVkcyB0 byBiZSBjaGFuZ2VkLiBJIG5lZWQgdGhhdCB2YXJpYWJsZSB0bwo+PiB0cmFjayBob3cgbWFueSBj b3Jlc8KgIGFyZSBhZGRlZCBzdWNjZXNzZnVsbHkuCj4+Cj4+IFNvLCBpZiBmaXJzdCBjb3JlIGlz IGFkZGVkIGFuZCBzZWNvbmQgY29yZSBmYWlscywgdGhlbiBJIGNhbiByZWxlYXNlCj4+IHJlc291 cmNlcyBhbGxvY2F0ZWQgZm9yIGZpcnN0IGNvcmUgc3VjY2Vzc2Z1bGx5Lgo+Pgo+PiBTbywgaW5z dGVhZCBvZiAiaSIgSSBjYW4gdXNlIG1lYW5pbmdmdWwgdmFyaWFibGUgbmFtZSBsaWtlICJjb3Jl c19hZGRlZCIgb3IKPj4gImNvcmVzX2FsbG9jYXRlZCIuCj4KPiBZb3UgY2FuIHN0aWxsIHVzZSB2 YXJpYWJsZSBAaSwganVzdCBkb24ndCB1c2UgaXQgdG8gYnJlYWsgb3V0IG9mIHRoZSBsb29wLiAg QXMgSQo+IHBvaW50ZWQgb3V0LCBpdCB3b3VsZCBiZSBtdWNoIGVhc2llciB0byBzaW1wbHkgZG8g dGhhdCBpZiBpbiBsb2Nrc3RlcCBtb2RlLgoKQWghIG1ha2VzIHNlbnNlLiBJIHdpbGwgY2hlY2sg Zm9yIGxvY2tzdGVwIG1vZGUgaW5zdGVhZCBvZiBAaSBjb3VudHMuCgpUaGFua3MuCgo+Pj4+ICsJ fQo+Pj4+ICsKPj4+PiArCWNsdXN0ZXItPm1vZGUgPSBjbHVzdGVyX21vZGU7Cj4+Pj4gKwljbHVz dGVyLT5jb3JlX2NvdW50ID0gY29yZV9jb3VudDsKPj4+PiArCWNsdXN0ZXItPnI1X2NvcmVzID0g cjVfY29yZXM7Cj4+Pj4gKwo+Pj4+ICsJcmV0ID0genlucW1wX3I1X2NvcmVfaW5pdChjbHVzdGVy LCBmd19yZWdfdmFsLCB0Y21fbW9kZSk7Cj4+Pj4gKwlpZiAocmV0IDwgMCkgewo+Pj4+ICsJCWRl dl9lcnIoZGV2LCAiZmFpbGVkIHRvIGluaXQgcjUgY29yZSBlcnIgJWRcbiIsIHJldCk7Cj4+Pj4g KwkJY2x1c3Rlci0+Y29yZV9jb3VudCA9IDA7Cj4+Pj4gKwkJY2x1c3Rlci0+cjVfY29yZXMgPSBO VUxMOwo+Pj4+ICsJCWdvdG8gcmVsZWFzZV9yNV9jb3JlczsKPj4+PiArCX0KPj4+PiArCj4+Pj4g KwlrZnJlZShjaGlsZF9kZXZzKTsKPj4+PiArCXJldHVybiAwOwo+Pj4+ICsKPj4+PiArcmVsZWFz ZV9yNV9jb3JlczoKPj4+PiArCWZvciAoaS0tOyBpID49IDA7IGktLSkgewo+Pj4+ICsJCXB1dF9k ZXZpY2UoY2hpbGRfZGV2c1tpXSk7Cj4+Pj4gKwkJcnByb2NfZGVsKHI1X2NvcmVzW2ldLT5ycHJv Yyk7Cj4+Pj4gKwkJcnByb2NfZnJlZShyNV9jb3Jlc1tpXS0+cnByb2MpOwo+Pj4+ICsJfQo+Pj4+ ICsJa2ZyZWUocjVfY29yZXMpOwo+Pj4+ICsJa2ZyZWUoY2hpbGRfZGV2cyk7Cj4+Pj4gKwlyZXR1 cm4gcmV0Owo+Pj4+ICt9Cj4+Pj4gKwo+Pj4+ICtzdGF0aWMgdm9pZCB6eW5xbXBfcjVfY2x1c3Rl cl9leGl0KHZvaWQgKmRhdGEpCj4+Pj4gK3sKPj4+PiArCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ug KnBkZXYgPSAoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqKWRhdGE7Cj4+Pj4gKwlzdHJ1Y3Qgenlu cW1wX3I1X2NsdXN0ZXIgKmNsdXN0ZXI7Cj4+Pj4gKwlzdHJ1Y3QgenlucW1wX3I1X2NvcmUgKnI1 X2NvcmU7Cj4+Pj4gKwlpbnQgaTsKPj4+PiArCj4+Pj4gKwljbHVzdGVyID0gKHN0cnVjdCB6eW5x bXBfcjVfY2x1c3RlciAqKXBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOwo+Pj4+ICsJaWYgKCFj bHVzdGVyKQo+Pj4+ICsJCXJldHVybjsKPj4+PiArCj4+Pj4gKwlmb3IgKGkgPSAwOyBpIDwgY2x1 c3Rlci0+Y29yZV9jb3VudDsgaSsrKSB7Cj4+Pj4gKwkJcjVfY29yZSA9IGNsdXN0ZXItPnI1X2Nv cmVzW2ldOwo+Pj4+ICsJCXB1dF9kZXZpY2UocjVfY29yZS0+ZGV2KTsKPj4+PiArCQlycHJvY19k ZWwocjVfY29yZS0+cnByb2MpOwo+Pj4+ICsJCXJwcm9jX2ZyZWUocjVfY29yZS0+cnByb2MpOwo+ Pj4+ICsJfQo+Pj4+ICsKPj4+PiArCWtmcmVlKGNsdXN0ZXItPnI1X2NvcmVzKTsKPj4+PiArCWtm cmVlKGNsdXN0ZXIpOwo+Pj4+ICsJcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgTlVMTCk7Cj4+ Pj4gK30KPj4+PiArCj4+Pj4gKy8qCj4+Pj4gKyAqIHp5bnFtcF9yNV9yZW1vdGVwcm9jX3Byb2Jl KCkKPj4+PiArICoKPj4+PiArICogQHBkZXY6IGRvbWFpbiBwbGF0Zm9ybSBkZXZpY2UgZm9yIFI1 IGNsdXN0ZXIKPj4+PiArICoKPj4+PiArICogY2FsbGVkIHdoZW4gZHJpdmVyIGlzIHByb2JlZCwg Zm9yIGVhY2ggUjUgY29yZSBzcGVjaWZpZWQgaW4gRFQsCj4+Pj4gKyAqIHNldHVwIGFzIG5lZWRl ZCB0byBkbyByZW1vdGVwcm9jLXJlbGF0ZWQgb3BlcmF0aW9ucwo+Pj4+ICsgKgo+Pj4+ICsgKiBS ZXR1cm46IDAgZm9yIHN1Y2Nlc3MsIG5lZ2F0aXZlIHZhbHVlIGZvciBmYWlsdXJlLgo+Pj4+ICsg Ki8KPj4+PiArc3RhdGljIGludCB6eW5xbXBfcjVfcmVtb3RlcHJvY19wcm9iZShzdHJ1Y3QgcGxh dGZvcm1fZGV2aWNlICpwZGV2KQo+Pj4+ICt7Cj4+Pj4gKwlzdHJ1Y3QgenlucW1wX3I1X2NsdXN0 ZXIgKmNsdXN0ZXI7Cj4+Pj4gKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2Owo+Pj4+ ICsJaW50IHJldDsKPj4+PiArCj4+Pj4gKwljbHVzdGVyID0ga3phbGxvYyhzaXplb2YoKmNsdXN0 ZXIpLCBHRlBfS0VSTkVMKTsKPj4+PiArCWlmICghY2x1c3RlcikKPj4+PiArCQlyZXR1cm4gLUVO T01FTTsKPj4+PiArCj4+Pj4gKwljbHVzdGVyLT5kZXYgPSBkZXY7Cj4+Pj4gKwo+Pj4+ICsJcmV0 ID0gZGV2bV9vZl9wbGF0Zm9ybV9wb3B1bGF0ZShkZXYpOwo+Pj4+ICsJaWYgKHJldCkgewo+Pj4+ ICsJCWRldl9lcnJfcHJvYmUoZGV2LCByZXQsICJmYWlsZWQgdG8gcG9wdWxhdGUgcGxhdGZvcm0g ZGV2XG4iKTsKPj4+PiArCQlrZnJlZShjbHVzdGVyKTsKPj4+PiArCQlyZXR1cm4gcmV0Owo+Pj4+ ICsJfQo+Pj4+ICsKPj4+PiArCS8qIHdpcmUgaW4gc28gZWFjaCBjb3JlIGNhbiBiZSBjbGVhbmVk IHVwIGF0IGRyaXZlciByZW1vdmUgKi8KPj4+PiArCXBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYs IGNsdXN0ZXIpOwo+Pj4+ICsKPj4+PiArCXJldCA9IHp5bnFtcF9yNV9jbHVzdGVyX2luaXQoY2x1 c3Rlcik7Cj4+Pj4gKwlpZiAocmV0KSB7Cj4+Pj4gKwkJenlucW1wX3I1X2NsdXN0ZXJfZXhpdChw ZGV2KTsKPj4+PiArCQlkZXZfZXJyX3Byb2JlKGRldiwgcmV0LCAiSW52YWxpZCByNWYgc3Vic3lz dGVtIGRldmljZSB0cmVlXG4iKTsKPj4+PiArCQlyZXR1cm4gcmV0Owo+Pj4+ICsJfQo+Pj4+ICsK Pj4+PiArCXJldCA9IGRldm1fYWRkX2FjdGlvbl9vcl9yZXNldChkZXYsIHp5bnFtcF9yNV9jbHVz dGVyX2V4aXQsIHBkZXYpOwo+Pj4+ICsJaWYgKHJldCkKPj4+PiArCQlyZXR1cm4gcmV0Owo+Pj4+ ICsKPj4+PiArCXJldHVybiAwOwo+Pj4+ICt9Cj4+Pj4gKwo+Pj4+ICsvKiBNYXRjaCB0YWJsZSBm b3IgT0YgcGxhdGZvcm0gYmluZGluZyAqLwo+Pj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2Rl dmljZV9pZCB6eW5xbXBfcjVfcmVtb3RlcHJvY19tYXRjaFtdID0gewo+Pj4+ICsJeyAuY29tcGF0 aWJsZSA9ICJ4bG54LHp5bnFtcC1yNWZzcyIsIH0sCj4+Pj4gKwl7IC8qIGVuZCBvZiBsaXN0ICov IH0sCj4+Pj4gK307Cj4+Pj4gK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHp5bnFtcF9yNV9yZW1v dGVwcm9jX21hdGNoKTsKPj4+PiArCj4+Pj4gK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVy IHp5bnFtcF9yNV9yZW1vdGVwcm9jX2RyaXZlciA9IHsKPj4+PiArCS5wcm9iZSA9IHp5bnFtcF9y NV9yZW1vdGVwcm9jX3Byb2JlLAo+Pj4+ICsJLmRyaXZlciA9IHsKPj4+PiArCQkubmFtZSA9ICJ6 eW5xbXBfcjVfcmVtb3RlcHJvYyIsCj4+Pj4gKwkJLm9mX21hdGNoX3RhYmxlID0genlucW1wX3I1 X3JlbW90ZXByb2NfbWF0Y2gsCj4+Pj4gKwl9LAo+Pj4+ICt9Owo+Pj4+ICttb2R1bGVfcGxhdGZv cm1fZHJpdmVyKHp5bnFtcF9yNV9yZW1vdGVwcm9jX2RyaXZlcik7Cj4+Pj4gKwo+Pj4+ICtNT0RV TEVfREVTQ1JJUFRJT04oIlhpbGlueCBSNUYgcmVtb3RlIHByb2Nlc3NvciBkcml2ZXIiKTsKPj4+ PiArTU9EVUxFX0FVVEhPUigiWGlsaW54IEluYy4iKTsKPj4+PiArTU9EVUxFX0xJQ0VOU0UoIkdQ TCIpOwo+Pj4gVGhlcmUgaXMgYSBkaXNjcmVwZW5jeSBiZXR3ZWVuIHRoZSBHUEwtMi4wIGluIHRo ZSBTUERTIGlkZW50aWZpZXIgYW5kIHRoZSBhYm92ZS4KPj4+Cj4+PiBNb3JlIGNvbW1lbnRzIHRv bW9ycm93IG9yIFR1ZXNkYXkuCj4+Pgo+Pj4gVGhhbmtzLAo+Pj4gTWF0aGlldQo+Pj4KPj4+PiAt LSAKPj4+PiAyLjI1LjEKPj4+PgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5l bEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4v bGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=