Received: by 2002:a05:6a10:5bc5:0:0:0:0 with SMTP id os5csp148846pxb; Wed, 3 Nov 2021 01:34:06 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxHlp8Hl17KXoTC0DHZquCFO1vi8BUVTHMv9uXbAdFUmw2vA3XLC05SmLc7DhoWZQjziqCK X-Received: by 2002:a17:907:2ace:: with SMTP id fm14mr8105974ejc.308.1635928446438; Wed, 03 Nov 2021 01:34:06 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1635928446; cv=pass; d=google.com; s=arc-20160816; b=mhs/g/56+w2Pj/B9xK133PAvvFUAr4EdSpgLBu6ToZ2U1lWHPhJ2zXohqqgSfWMdw3 rgUJl6nQhu3AkA/DAIFjZvhvCp45JlrBy1JOkrupvY6E+6uXCJV0sohhpBuT6W61tflg TnA0OW4vshQBTSKyC9mhjQrhe89qJ2oIbNmr0ZvT6z5823ssxHcR0lMdEBy0KoxI6NUN 2OGwstou3mIG+1cKi37L8JzlBwNuslmXfaLUDNLC1OyiODfsO7NUyIHalk90/UtC2buB Y1n/cJaoZWRN+iz0mdYk0ymDSAqteS1AWgOoiCXtQt3kiPgXS0lWJgpupvIY1dUJCG8d 77Eg== 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:user-agent:content-language:accept-language:in-reply-to :references:message-id:date:thread-index:thread-topic:subject:cc:to :from:dkim-signature:ironport-sdr:dkim-signature; bh=drsuGO0jHwVASUgMtrFUMoD790fakfNrC1QCjLd2/LA=; b=tkN5YcQpbvWcNllhYwWttNBph071waf5s+2JsIepmX4of3MhdQadttoep476LJrpgW hWCk2jfNtGfx5nu/hSxnBDx3Na8VEy49NGVKnH1HeE+4v+j3k8oc5HFM358+lrQ8sQY2 5gYNvGMJSMb8ZaQ9mGXPb95i7rzxXs00CeDMMiAZhIIh4Id1aSpObIAr1JeSutQs1Kch LnO9R3AMPb0Hk0P/jTEhE9gDUWKuZcdBsQmJHeWox+ht5Lm/7Z6ecm4luhlcAqC3t8wL dQEtNgzFpaZzODnm3SW5z52d3Ru69AC8wXW565TJZ1gTjSgXUae07kxSyfJp3Uj++vgA KDUQ== ARC-Authentication-Results: i=2; mx.google.com; dkim=fail header.i=@microchip.com header.s=mchp header.b=06CQLfTZ; dkim=pass header.i=@microchiptechnology.onmicrosoft.com header.s=selector2-microchiptechnology-onmicrosoft-com header.b=Z64yiilu; arc=pass (i=1 spf=pass spfdomain=microchip.com dkim=pass dkdomain=microchip.com dmarc=pass fromdomain=microchip.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=microchip.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id v1si2518269ejd.323.2021.11.03.01.33.42; Wed, 03 Nov 2021 01:34:06 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=fail header.i=@microchip.com header.s=mchp header.b=06CQLfTZ; dkim=pass header.i=@microchiptechnology.onmicrosoft.com header.s=selector2-microchiptechnology-onmicrosoft-com header.b=Z64yiilu; arc=pass (i=1 spf=pass spfdomain=microchip.com dkim=pass dkdomain=microchip.com dmarc=pass fromdomain=microchip.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=microchip.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231547AbhKCIeS (ORCPT + 99 others); Wed, 3 Nov 2021 04:34:18 -0400 Received: from esa.microchip.iphmx.com ([68.232.154.123]:42366 "EHLO esa.microchip.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230463AbhKCIeR (ORCPT ); Wed, 3 Nov 2021 04:34:17 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1635928301; x=1667464301; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=drsuGO0jHwVASUgMtrFUMoD790fakfNrC1QCjLd2/LA=; b=06CQLfTZDd1ZuwOuBAcz5xvcUeiBrIMEuPlDy6ITCYT36HH0FNDk/3BG FR3h5EkZC7Y7iY98jgMxNvVydMC2SO7mvaqEO7/pQO1/jles1piTySCjJ VMGpvtT0MQIICr2hd59nlbzu3UIT98UegEnZzC7kQE+ZkcHthS9uCti1o L4ARZbjVR44sXdM3iiW1+9Gvp161wpw7zx/Ht8ieDqXFCU3XVA2b0gAb0 PVpGaPsSPuj3nyQT8wIJ4k7rRdWPFtZ8wgwWkbdSPlIz2njqF/BLHjmMb 89K0E3H2xdLZQL0fpcoeL75CoDR5f4LSpR6+M8a0u2nUEv7qqmekNRQVN w==; IronPort-SDR: lpnYA4//ar/tEW9bIapjUV9yoUa441Ww/sFQMUfchzaKljk91wQ5zO6GHTXnj4OYLwm4C26JiC i9vwcHxADcfJzFjbcueKODuiFFbHdhFGK+kW44adpNl7xLCJI+wbjAkAMcsX8wprJXLkBh0yll cQbi3PIRZ8sfpsqp+kIy7CHAHUkCdtPlRNjgI4LXk3qYfjZOvxD/wqkcy9lulXt+zH8tDxiBYM way75/SEABy+uWC7UHRNSml1jblgqKVyd2Y4lupqhVOrdEoSlfiaKDgCS33LrnfO1QtzowaIuR Rxu8dwSWI+kNUzTl3PryS6t7 X-IronPort-AV: E=Sophos;i="5.87,205,1631602800"; d="scan'208";a="137850888" Received: from smtpout.microchip.com (HELO email.microchip.com) ([198.175.253.82]) by esa2.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 03 Nov 2021 01:31:39 -0700 Received: from chn-vm-ex01.mchp-main.com (10.10.85.143) by chn-vm-ex04.mchp-main.com (10.10.85.152) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2176.14; Wed, 3 Nov 2021 01:31:39 -0700 Received: from NAM04-DM6-obe.outbound.protection.outlook.com (10.10.215.89) by email.microchip.com (10.10.87.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2176.14 via Frontend Transport; Wed, 3 Nov 2021 01:31:39 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=njJqW5EwH9r1dDzkRBDO5hotqq9eKdLQE+eZsRPQLbq2NByl5H4GMmFNfYwoJtx9EQ1whS+S/8qs2O/jomvoQoDKXJIK7rnZGKXjAuk9euwMTGsU2ulgh6Tvx/zmcENBuHOoOylkZ5ld8LeR5J+aYEWcKfMOnpHBV8bJbxle9VRBCabhUlIWgNLO/9gjUeFzYjUZTsnxLVez+Hj9m5Z3wX1RzVws0AZ4deeQz/azffafJxjPqZQaFOs+T6yNXQhxorlKLXdj1wOh9oToD7I+EGRQZV417QzTh8SFClukp0ORVwY95HxDjnd8AP7PDFkKPLbGKc0+0M7lC4PiCcOlGQ== 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=drsuGO0jHwVASUgMtrFUMoD790fakfNrC1QCjLd2/LA=; b=FpKSZ0sbAgdIybJ1ECGz8RiXV9cdM9DNMrc54LnoplDI0AkRYWExgZExM4ni0Najv0ess+xNm2F8ZoZALYeNLX/TPBYiGq/1HAuJw4BPqS1hT+p/AEd6qM53rXoXZARPUGNArREZXxhUBA9k7eTSg7I0uYicFQGX6SGdLLZXRcIyQelFJuw+Vv0znkQ6IuWb7XZvl+EYQ7mBfXLuDTkYtVYzR9wg4pJqJqC9IzgeihT7JTsaqMnC+ishN2tdsUk16LkuqU5srLcNZnYle+1U8pohyT5wRUxBDFpN5yYh6izBEz95Pw1iS4wpbz95Y4oeAVx1nBRkQ3FQd0sEUNQoQg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=microchip.com; dmarc=pass action=none header.from=microchip.com; dkim=pass header.d=microchip.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microchiptechnology.onmicrosoft.com; s=selector2-microchiptechnology-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=drsuGO0jHwVASUgMtrFUMoD790fakfNrC1QCjLd2/LA=; b=Z64yiiluDcHixqz3JURKczLVAh3yz8B48VtTLpO/ThF+fHoWEJsirs9GCNTFUMDW3NG0n84YY3Yg/HJRHYN9yCNG3OnSMa8HQg5jAvQhmcHziNvdyUI/SiOm2IIpOn5JM/M9wtT1XtntWoGej48MSCNX7GqNx/oxFmJxzfJp9+4= Received: from DM4PR11MB5519.namprd11.prod.outlook.com (2603:10b6:5:39e::7) by DM5PR1101MB2362.namprd11.prod.outlook.com (2603:10b6:3:9d::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4669.10; Wed, 3 Nov 2021 08:31:36 +0000 Received: from DM4PR11MB5519.namprd11.prod.outlook.com ([fe80::fda7:98bb:7e4:17c7]) by DM4PR11MB5519.namprd11.prod.outlook.com ([fe80::fda7:98bb:7e4:17c7%5]) with mapi id 15.20.4649.019; Wed, 3 Nov 2021 08:31:36 +0000 From: To: CC: , , , , , , , Subject: Re: [PATCH 03/21] media: atmel: introduce microchip csi2dc driver Thread-Topic: [PATCH 03/21] media: atmel: introduce microchip csi2dc driver Thread-Index: AQHXxxn58JFrmmXG4ES/xZTJjOgs1avwjkEAgAD994A= Date: Wed, 3 Nov 2021 08:31:36 +0000 Message-ID: References: <20211022075247.518880-1-eugen.hristev@microchip.com> <20211022075247.518880-4-eugen.hristev@microchip.com> <20211102172236.yrmxlhzrn2bwkgop@uno.localdomain> In-Reply-To: <20211102172236.yrmxlhzrn2bwkgop@uno.localdomain> Accept-Language: en-US, ro-RO Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.8.0 authentication-results: jmondi.org; dkim=none (message not signed) header.d=none;jmondi.org; dmarc=none action=none header.from=microchip.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: a59bfb06-c4b9-4506-2148-08d99ea459ba x-ms-traffictypediagnostic: DM5PR1101MB2362: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8273; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 8gQm4pyuUfmrH7J1OnnRRIq2/8uFuPytB3sbdj1sLWqHxFRZLKTrb4Y5/y/bmgRxMYLGQquvuiDBwYU3vjGznbR5Jk0Ls6VmQzp8K/sMkFKBSXKpo/LN3bXWPwsZmeWWO8yByOiZUKji505xF4sJKTxF3C2pyStJw+ao5k1wiIyXfSt+a9s81X+j4n9C0B6oX44LL0/6XIyFK6FM0oi9bdIQ+XpYw+56UmTMPrCuSWCyOvfdGEU+kq+NltiZSWX5bSekmvPUBcLhZgHr/6XA1uvQHREgAnKbReTsYI1NqexH+74ekaPaS0F6ekjmrEHchs9P8dWqN8Iqx572qYD8yT4UuxnAyDqRYhPiCNTjwDYYazMDeBbB4wUt0xXBy6/jI8F+mE9bQ9+twAAsU4+RDZ3dItf78SCFgv/pO9k+J9ATY3QwAWkeLYKHSIph61cf7Sg7+FZ07qnUMJiU7k+lnjAYO9XAbreVmNcaj3rpmWTeDZlqhJbmy/sduOmlg9HbIIS36u4UpEzqQHWNwatFF2SwtGnWq+WqBAb5WW0t11SGGRMFee81lfRSCrEh9Eh3+ExrdBvQhlTqH4iMG2k8P8fMzEJSJUp3NAvmezYBrXLi1n3XhnUbd7LxyZl16D3MVgdzamsbcXAYxCiDtUyy4w26DaMmoNBRwMhIGiLDtjJu1SpPyIbW2AborGFPOT0iKPIEl7cFrhO+vAhYP4zmluQAYc+hVKachzrDD5ZQqfO2EfcYu5f/E7JjVEBIJgAvmpt1Dy0z75k58A6alQXAdu/LSOn8/u6dA+hBKX7qbNIHMhF3GxbkIsw56C/KMrz/xtob0biH9tBNkVJ33G281pifoOOLZPeoZ5MwdmOgS6k= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR11MB5519.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(366004)(53546011)(6506007)(2906002)(54906003)(316002)(6916009)(38070700005)(66446008)(508600001)(64756008)(66556008)(66946007)(76116006)(66476007)(2616005)(966005)(26005)(186003)(5660300002)(4326008)(83380400001)(30864003)(86362001)(38100700002)(122000001)(31696002)(36756003)(31686004)(107886003)(91956017)(6512007)(8936002)(8676002)(6486002)(71200400001)(43740500002)(45980500001)(579004)(559001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?ZEQ2NjJDQ0N3Z1FEd2gzWmdmVHJhN1lmSFg3QkNqanlMQ2RkWTNNU0MwQWtZ?= =?utf-8?B?bk0xTEgwUFgvZ2h0WkYxZ3VuWDdSbENLS05CdHNlK0IrOUNwS1MyZno3Y0NW?= =?utf-8?B?b1FTZi9DbmtxaDdnM2NoT0RveGdETFlZQzdreXhWR2VlTkptUXltTzZGUU5N?= =?utf-8?B?YjZhR0djdGgvQ01VNmpTRWNqaGY0bDQ0ZkFxK0JxbG9ZTllSRW9mUE5qdUc3?= =?utf-8?B?ZUhJeVdWcVRxVWdVRHh6RDN6VVUwSjVBT1BmNlUyeVpPbnMrcHJ1aUdaeVhv?= =?utf-8?B?SEhtMUpwZzVNc01JelZxL1N1ZjNOTzRYVVFNYnJhUzZhQ3RhWnl6MEdIYk1Z?= =?utf-8?B?MFFDYjV2WnJYb3RnZFhUMDBudGZWbHBtYi82dmd6ejU5SFQxeWhubGpLM3JS?= =?utf-8?B?QTRrcXg4R3UrNnErMEM2dlA3OElSRlJ5dDZRY0lhZ3BaM1FGNU95QXVrYVNk?= =?utf-8?B?UFZPU1Q2UkZjbTNYaDArcUJYUk1qb2kzbXgyVTlHZ3h4WG5ldE94ZGZ1blBM?= =?utf-8?B?b1FLazM4eWlBY2tYcTRUd28xNHpYUHpZckh5MmYxT3RDZ2RrMkVNQlMrSVZO?= =?utf-8?B?YUdUb0kzL0p2TlkxWnR4Y3UrV0NxY09RcHBQNEtKL2d1UmlLbmV4c0dOdGJt?= =?utf-8?B?RlF4RTZML1VrVC9BK0JYVWtZUU9RUlp1OHBHNXVtcE1ZcWRlUEdpNkRNcllJ?= =?utf-8?B?cGtXTXRCWEhFRktiQ1FTUjkyZ29XOThLemc4ODlPcjkvZUJ5WDY2WG1ibURS?= =?utf-8?B?cXVseE5PSi9kOEpPRVFiYWgyT2RncU8yUWQ1Wnh2NktUZEM5RUo3S3Zzenhy?= =?utf-8?B?cEk2R1lRSWc5YWVvdTNqSFM1b01rTDVvMGkyUUIrQU15aDFsSWI0S0ZjQTUx?= =?utf-8?B?N0N1WHRpdzM4ZEUzYlV5YWttUGVVZzk1Zmg2UmZDaFFtTnU3ZzFDSnR5aVBP?= =?utf-8?B?akNncEE5eXpBYVBOc3dkQlE2VFg1NVpDcElPV2hFNW5nQS84RUgvR3VKR0Zh?= =?utf-8?B?RzFrSVcxdmFYYlJDZ1c2VWpUZE93RkdNK1lDZ1R2UlJYUVo2V2prL0JLQ3pZ?= =?utf-8?B?RnNDRFI3cDJxdGZMWks0Qnc0RmdmQ3dqS3Y2UTI5N0lmdUxreUFWU2Y4OEY4?= =?utf-8?B?c2VtRHlHMFlmYlEzc2JBTlBZYXZKdk9QbE1xd2hmOUZ1c1VTRytkdWNIOWpy?= =?utf-8?B?WG9VRld3RER4N29pWXRhdmtmWHJxakQrNWlPNlhuMjFac3VsRWJxN1dsckZy?= =?utf-8?B?dThJcUt2cFRUNjdoVjd5akxETFFoVUdKeENSOXN2TWJVblp3UWFBYnc1ejRv?= =?utf-8?B?S0x6M0NRVVlNUGNGa3ZSQUdodXBJeXFzc2pkQVdaeWJncnN1TEJrRktpMkUz?= =?utf-8?B?UkpZVjZ5cld3eU1XUTdUdEZEa3I2SmF0RlFhNXVoK3NrbHZTU0t6WE8zQkVN?= =?utf-8?B?VWZlVDc5U0FTY1JxbFQ5ZUNJWVcyVmpzRU5COERuMThZUUJEVW1SNEU4emFF?= =?utf-8?B?TkxQcUVtcnJ2blEyaWlIYmRKQWZCN2h2SmMxRmY0YWkwWWVRd05qMi9MNHUy?= =?utf-8?B?YWlJYzlpWmdQd0UxcmoxeVoxVFdaTFZzQVkwV3pBa2xadWc5OWxwOFF3UWJJ?= =?utf-8?B?SlU5RnhVNVRYQ3F5MTBTbzVFdTFuM2xtU1dlTEdQZnlBeEdncXVweWhIaTlB?= =?utf-8?B?N1VJT3NELzdwakluQWw1Y1RwcFppa043NFBZa2x1elhPY3RLNUF0NFZVUW1D?= =?utf-8?B?U0RjUEw5ckVQbDNQdmVMNlJFMjVscWQ2UUpJMld6M2pLWW1QNGZKcWlyTDM3?= =?utf-8?B?RFBBaHZpS3VhZ1JUOVV0aFpJYzRUQUZyeHBuKzAxR1d5bGY2aGZKc2FrYmxH?= =?utf-8?B?T1dGcHRQam9mUTVSb29pQlRwRFZKTXY3NFJ5SWhpMCtTNFh5V1I4bjcvcW8z?= =?utf-8?B?RXJPay9OYWMyYUUxM2o5SXMycS8wRmN2Q0JNb3E5MlZXTzRmU1prL3NuTHdE?= =?utf-8?B?VG14UFFkSVRwTU1nTUk3TjQxQ3h0enh0WG8xZ0c1ZjlCZ0cwOEJJMnZkdlNn?= =?utf-8?B?eWowYW8xY2FQZ01ZRXZncFM4a25mZWpoejVmcE1ad0dML29nV04vWlVhNlRJ?= =?utf-8?B?SFFnUUlpT2xoY1YzYkxOanJ3OHk5cE15ckhRWlJGZmZHUk1FQXZWTDArdWdr?= =?utf-8?B?NmM0R1lVdlkrUjN6SnUxTEp4ZjJHeUtFa0ZVczB3RVNlK2JESWRnZnJlMFVZ?= =?utf-8?B?ZWY0aGV1VTVXZUtzTGtKbmhhN21BPT0=?= 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: DM4PR11MB5519.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a59bfb06-c4b9-4506-2148-08d99ea459ba X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Nov 2021 08:31:36.5417 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3f4057f3-b418-4d4e-ba84-d55b4e897d88 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: zKwumcMwcFTJ3yZOSRMXe0kBzomiUhu6l9sboUfJzdRegmRtbytAy2n88X/zCyGpPkFWEGRwYxRD0ZNpbXcd6gFXsj5uDp8Gac1kXzBASAw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR1101MB2362 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org T24gMTEvMi8yMSA3OjIyIFBNLCBKYWNvcG8gTW9uZGkgd3JvdGU6DQo+IEhpIEV1Z2VuLA0KPiAN Cg0KSGksDQoNClRoYW5rIHlvdSBmb3IgeW91ciByZXZpZXcuIEkgd2lsbCB0cnkgdG8gdW5kZXJz dGFuZCBldmVyeXRoaW5nIHlvdSBzYWlkIA0KYW5kIGNvbWUgdXAgd2l0aCBhIG5ldyB2ZXJzaW9u LiBJIHN0aWxsIGhhdmUgc29tZSBpbmxpbmUgcXVlc3Rpb25zIA0KdGhvdWdoLCBhYm91dCBzb21l IHRoaW5ncyB3aGljaCBhcmUgc3RpbGwgdW5jbGVhci4NCg0KPiBPbiBGcmksIE9jdCAyMiwgMjAy MSBhdCAxMDo1MjoyOUFNICswMzAwLCBFdWdlbiBIcmlzdGV2IHdyb3RlOg0KPj4gTWljcm9jaGlw IENTSTJEQyAoQ1NJMiBEZW11bHRpcGxleGVyIENvbnRyb2xsZXIpIGlzIGEgbWlzYyBicmlkZ2Ug ZGV2aWNlDQo+PiB0aGF0IGNvbnZlcnRzIGEgYnl0ZSBzdHJlYW0gaW4gSURJIFN5bm9wc3lzIGZv cm1hdCAoY29taW5nIGZyb20gYSBDU0kySE9TVCkNCj4+IHRvIGEgcGl4ZWwgc3RyZWFtIHRoYXQg Y2FuIGJlIGNhcHR1cmVkIGJ5IGEgc2Vuc29yIGNvbnRyb2xsZXIuDQo+Pg0KPj4gU2lnbmVkLW9m Zi1ieTogRXVnZW4gSHJpc3RldiA8ZXVnZW4uaHJpc3RldkBtaWNyb2NoaXAuY29tPg0KPj4gLS0t DQo+PiBDaGFuZ2VzIGluIHRoaXMgcmV2aXNpb246DQo+PiAtIGFkZHJlc3NlZCBjb21tZW50cyBi eSBKYWNvcG8gYW5kIExhdXJlbnQgYXMgaW4gdGhpcyB0aHJlYWQ6DQo+PiBodHRwczovL3d3dy5z cGluaWNzLm5ldC9saXN0cy9saW51eC1tZWRpYS9tc2cxODEwNDQuaHRtbA0KPj4NCj4+IFByZXZp b3VzIGNoYW5nZSBsb2cgOg0KPj4gQ2hhbmdlcyBpbiB2NToNCj4+IC0gb25seSBpbiBiaW5kaW5n cw0KPj4NCj4+IENoYW5nZXMgaW4gdjQ6DQo+PiAtIG5vdyB1c2luZyBnZXRfbWJ1c19jb25maWcg b3BzIHRvIGdldCBkYXRhIGZyb20gdGhlIHN1YmRldmljZSwgbGlrZSB0aGUNCj4+IHZpcnR1YWwg Y2hhbm5lbCBpZCwgYW5kIHRoZSBjbG9jayB0eXBlLg0KPj4gLSBub3cgaGF2aW5nIHBvc3NpYmls aXR5IHRvIHNlbGVjdCBhbnkgb2YgdGhlIFJBVzEwIGRhdGEgbW9kZXMNCj4+IC0gYXQgY29tcGxl dGlvbiB0aW1lLCBzZWxlY3Qgd2hpY2ggZm9ybWF0cyBhcmUgYWxzbyBhdmFpbGFibGUgaW4gdGhl IHN1YmRldmljZSwNCj4+IGFuZCBtb3ZlIHRvIHRoZSBkeW5hbWljIGxpc3QgYWNjb3JkaW5nbHkN Cj4+IC0gY2hhbmdlZCB0aGUgcGlwZWxpbmUgaW50ZWdyYXRpb24sIGRvIG5vdCBhZHZlcnRpc2Ug c3ViZGV2IHJlYWR5IGF0IHByb2JlIHRpbWUuDQo+PiB3YWl0IHVudGlsIGNvbXBsZXRpb24gaXMg ZG9uZSwgYW5kIHRoZW4gc3RhcnQgYSB3b3JrcXVldWUgdGhhdCB3aWxsIHJlZ2lzdGVyDQo+PiB0 aGlzIGRldmljZSBhcyBhIHN1YmRldmljZSBmb3IgdGhlIG5leHQgZWxlbWVudCBpbiBwaXBlbGlu ZS4NCj4+IC0gbW92ZWQgdGhlIHNfcG93ZXIgY29kZSBpbnRvIGEgZGlmZmVyZW50IGZ1bmN0aW9u IGNhbGxlZCBub3cgY3NpMmRjX3Bvd2VyDQo+PiB0aGF0IGlzIGNhbGxlZCB3aXRoIENPTkZJR19Q TSBmdW5jdGlvbnMuIFRoaXMgaXMgYWxzbyBjYWxsZWQgYXQgY29tcGxldGlvbiwNCj4+IHRvIGhh dmUgdGhlIGRldmljZSByZWFkeSBpbiBjYXNlIENPTkZJR19QTSBpcyBub3Qgc2VsZWN0ZWQgb24g dGhlIHBsYXRmb3JtLg0KPj4gLSBtZXJnZWQgdHJ5X2ZtdCBpbnRvIHNldF9mbXQNCj4+IC0gZHJp dmVyIGNsZWFudXAsIHdyYXBwZWQgbGluZXMgb3ZlciA4MCBjaGFyYWN0ZXJzDQo+Pg0KPj4gQ2hh bmdlcyBpbiB2MjoNCj4+IC0gbW92ZWQgZHJpdmVyIHRvIHBsYXRmb3JtL2F0bWVsDQo+PiAtIGZp eGVkIG1pbm9yIHRoaW5ncyBhcyBwZXIgU2FrYXJpJ3MgcmV2aWV3DQo+PiAtIHN0aWxsIHNvbWUg dGhpbmdzIGZyb20gdjIgcmV2aWV3IGFyZSBub3QgeWV0IGFkZHJlc3NlZCwgdG8gYmUgZm9sbG93 ZWQgdXANCj4+DQo+Pg0KPj4gICBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL2F0bWVsL0tjb25maWcg ICAgICAgICAgfCAgMTUgKw0KPj4gICBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL2F0bWVsL01ha2Vm aWxlICAgICAgICAgfCAgIDEgKw0KPj4gICAuLi4vbWVkaWEvcGxhdGZvcm0vYXRtZWwvbWljcm9j aGlwLWNzaTJkYy5jICAgfCA3MDAgKysrKysrKysrKysrKysrKysrDQo+PiAgIDMgZmlsZXMgY2hh bmdlZCwgNzE2IGluc2VydGlvbnMoKykNCj4+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMv bWVkaWEvcGxhdGZvcm0vYXRtZWwvbWljcm9jaGlwLWNzaTJkYy5jDQo+Pg0KPj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYXRtZWwvS2NvbmZpZyBiL2RyaXZlcnMvbWVkaWEv cGxhdGZvcm0vYXRtZWwvS2NvbmZpZw0KPj4gaW5kZXggZGRhMmYyN2RhMzE3Li5mODNiZWUzNzNk ODIgMTAwNjQ0DQo+PiAtLS0gYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL2F0bWVsL0tjb25maWcN Cj4+ICsrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYXRtZWwvS2NvbmZpZw0KPj4gQEAgLTQw LDMgKzQwLDE4IEBAIGNvbmZpZyBWSURFT19BVE1FTF9JU0kNCj4+ICAgICAgICBoZWxwDQo+PiAg ICAgICAgICBUaGlzIG1vZHVsZSBtYWtlcyB0aGUgQVRNRUwgSW1hZ2UgU2Vuc29yIEludGVyZmFj ZSBhdmFpbGFibGUNCj4+ICAgICAgICAgIGFzIGEgdjRsMiBkZXZpY2UuDQo+PiArDQo+PiArY29u ZmlnIFZJREVPX01JQ1JPQ0hJUF9DU0kyREMNCj4+ICsgICAgIHRyaXN0YXRlICJNaWNyb2NoaXAg Q1NJMiBEZW11eCBDb250cm9sbGVyIg0KPj4gKyAgICAgZGVwZW5kcyBvbiBWSURFT19WNEwyICYm IENPTU1PTl9DTEsgJiYgT0YNCj4+ICsgICAgIGRlcGVuZHMgb24gQVJDSF9BVDkxIHx8IENPTVBJ TEVfVEVTVA0KPj4gKyAgICAgc2VsZWN0IE1FRElBX0NPTlRST0xMRVINCj4+ICsgICAgIHNlbGVj dCBWSURFT19WNEwyX1NVQkRFVl9BUEkNCj4+ICsgICAgIHNlbGVjdCBWNEwyX0ZXTk9ERQ0KPj4g KyAgICAgaGVscA0KPj4gKyAgICAgICBDU0kyIERlbXV4IENvbnRyb2xsZXIgZHJpdmVyLiBDU0ky REMgaXMgYSBoZWxwZXIgY2hpcA0KPj4gKyAgICAgICB0aGF0IGNvbnZlcnRzIElESSBpbnRlcmZh Y2UgYnl0ZSBzdHJlYW0gdG8gYSBwYXJhbGxlbCBwaXhlbCBzdHJlYW0uDQo+PiArICAgICAgIEl0 IHN1cHBvcnRzIHZhcmlvdXMgUkFXIGZvcm1hdHMgYXMgaW5wdXQuDQo+PiArDQo+PiArICAgICAg IFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZQ0K Pj4gKyAgICAgICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgbWljcm9jaGlwLWNzaTJkYy4NCj4+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL2F0bWVsL01ha2VmaWxlIGIvZHJpdmVy cy9tZWRpYS9wbGF0Zm9ybS9hdG1lbC9NYWtlZmlsZQ0KPj4gaW5kZXggNDZkMjY0YWI3OTQ4Li4z OWYwYTdlYmE3MDIgMTAwNjQ0DQo+PiAtLS0gYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL2F0bWVs L01ha2VmaWxlDQo+PiArKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL2F0bWVsL01ha2VmaWxl DQo+PiBAQCAtNiwzICs2LDQgQEAgb2JqLSQoQ09ORklHX1ZJREVPX0FUTUVMX0lTSSkgKz0gYXRt ZWwtaXNpLm8NCj4+ICAgb2JqLSQoQ09ORklHX1ZJREVPX0FUTUVMX0lTQ19CQVNFKSArPSBhdG1l bC1pc2MtYmFzZS5vDQo+PiAgIG9iai0kKENPTkZJR19WSURFT19BVE1FTF9JU0MpICs9IGF0bWVs LWlzYy5vDQo+PiAgIG9iai0kKENPTkZJR19WSURFT19BVE1FTF9YSVNDKSArPSBhdG1lbC14aXNj Lm8NCj4+ICtvYmotJChDT05GSUdfVklERU9fTUlDUk9DSElQX0NTSTJEQykgKz0gbWljcm9jaGlw LWNzaTJkYy5vDQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hdG1lbC9t aWNyb2NoaXAtY3NpMmRjLmMgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL2F0bWVsL21pY3JvY2hp cC1jc2kyZGMuYw0KPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4+IGluZGV4IDAwMDAwMDAwMDAw MC4uMjc3Yjg2OTg4ZWVlDQo+PiAtLS0gL2Rldi9udWxsDQo+PiArKysgYi9kcml2ZXJzL21lZGlh L3BsYXRmb3JtL2F0bWVsL21pY3JvY2hpcC1jc2kyZGMuYw0KPj4gQEAgLTAsMCArMSw3MDAgQEAN Cj4+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5DQo+PiArLyoNCj4+ ICsgKiBNaWNyb2NoaXAgQ1NJMiBEZW11eCBDb250cm9sbGVyIChDU0kyREMpIGRyaXZlcg0KPj4g KyAqDQo+PiArICogQ29weXJpZ2h0IChDKSAyMDE4IE1pY3JvY2hpcCBUZWNobm9sb2d5LCBJbmMu DQo+PiArICoNCj4+ICsgKiBBdXRob3I6IEV1Z2VuIEhyaXN0ZXYgPGV1Z2VuLmhyaXN0ZXZAbWlj cm9jaGlwLmNvbT4NCj4+ICsgKg0KPj4gKyAqLw0KPj4gKw0KPj4gKyNpbmNsdWRlIDxsaW51eC9j bGsuaD4NCj4+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+DQo+PiArI2luY2x1ZGUgPGxpbnV4 L29mLmg+DQo+IA0KPiBJc24ndCBsaW51eC9tb2RfZGV2aWNldGFibGUuaCBlbm91Z2ggPw0KPiAN Cj4+ICsjaW5jbHVkZSA8bGludXgvb2ZfZ3JhcGguaD4NCj4gDQo+IFlvdSBzaG91bGQgcHJvYmFi bHkgbW92ZSB0byB1c2UgdGhlIGZ3bm9kZV9ncmFwaCBmcmFtd29yayBpbnN0ZWFkIG9mDQo+IG9m X2dyYXBoLiBUaGlzIGRyaXZlciBkZXBlbmRzIG9uIE9GIHNvIGl0IHNob3VsZG4ndCBiZSBhbiBp c3N1ZSBidXQgSQ0KPiBkZWZlciB0aGlzIHRvIG1haW50YWluZXJzDQo+IA0KPj4gKyNpbmNsdWRl IDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4NCj4+ICsjaW5jbHVkZSA8bGludXgvcG1fcnVudGlt ZS5oPg0KPj4gKyNpbmNsdWRlIDxsaW51eC92aWRlb2RldjIuaD4NCj4+ICsNCj4+ICsjaW5jbHVk ZSA8bWVkaWEvdjRsMi1kZXZpY2UuaD4NCj4gDQo+IERvIHlvdSBuZWVkIHRoaXMgaW5jbHVkZSA/ DQo+IA0KPj4gKyNpbmNsdWRlIDxtZWRpYS92NGwyLWZ3bm9kZS5oPg0KPj4gKyNpbmNsdWRlIDxt ZWRpYS92NGwyLXN1YmRldi5oPg0KPj4gKyNpbmNsdWRlIDxtZWRpYS92aWRlb2J1ZjItZG1hLWNv bnRpZy5oPg0KPiANCj4gSXMgdGhpcyBvbmUgbmVlZGVkIGFzIHdlbGwgPw0KPiANCj4+ICsNCj4+ ICsvKiBHbG9iYWwgY29uZmlndXJhdGlvbiByZWdpc3RlciAqLw0KPj4gKyNkZWZpbmUgQ1NJMkRD X0dDRkcgICAgICAgICAgICAgICAgICAweDANCj4+ICsNCj4+ICsvKiBNSVBJIHNlbnNvciBwaXhl bCBjbG9jayBpcyBmcmVlIHJ1bm5pbmcgKi8NCj4+ICsjZGVmaW5lIENTSTJEQ19HQ0ZHX01JUElG Uk4gICAgICAgICAgQklUKDApDQo+PiArLyogT3V0cHV0IHdhdmVmb3JtIGludGVyLWxpbmUgbWlu aW11bSBkZWxheSAqLw0KPj4gKyNkZWZpbmUgQ1NJMkRDX0dDRkdfSExDKHYpICAgICAgICAgICAo KHYpIDw8IDQpDQo+PiArI2RlZmluZSBDU0kyRENfR0NGR19ITENfTUFTSyAgICAgICAgIEdFTk1B U0soNywgNCkNCj4+ICsvKiBTQU1BN0c1IHJlcXVpcmVzIGEgSExDIGRlbGF5IG9mIDE1ICovDQo+ PiArI2RlZmluZSBTQU1BN0c1X0hMQyAgICAgICAgICAgICAgICAgICgxNSkNCj4+ICsNCj4+ICsv KiBHbG9iYWwgY29udHJvbCByZWdpc3RlciAqLw0KPj4gKyNkZWZpbmUgQ1NJMkRDX0dDVExSICAg ICAgICAgICAgICAgICAweDA0DQo+PiArI2RlZmluZSBDU0kyRENfR0NUTFJfU1dSU1QgICAgICAg ICAgIEJJVCgwKQ0KPj4gKw0KPj4gKy8qIEdsb2JhbCBzdGF0dXMgcmVnaXN0ZXIgKi8NCj4+ICsj ZGVmaW5lIENTSTJEQ19HUyAgICAgICAgICAgICAgICAgICAgMHgwOA0KPj4gKw0KPj4gKy8qIFNT UCBpbnRlcnJ1cHQgc3RhdHVzIHJlZ2lzdGVyICovDQo+PiArI2RlZmluZSBDU0kyRENfU1NQSVMg ICAgICAgICAgICAgICAgIDB4MjgNCj4+ICsvKiBQaXBlIHVwZGF0ZSByZWdpc3RlciAqLw0KPj4g KyNkZWZpbmUgQ1NJMkRDX1BVICAgICAgICAgICAgICAgICAgICAweEMwDQo+IA0KPiBXaGF0IGFi b3V0IHVzaW5nIGxvd2VyY2FzZSBmb3IgaGV4IHZhbHVlcyAoSSBrbm93IHRoZXJlJ3Mgbm90IHN0 cmljdA0KPiBydWxlLCBzbyBrZWVwIHdoYXQgeW91IGxpa2UgdGhlIG1vc3QsIGJ1dCBtb3N0IGRy aXZlcnMgdXNlIGxvd2VyY2FzZQ0KPiANCj4+ICsvKiBWaWRlbyBwaXBlIGF0dHJpYnV0ZXMgdXBk YXRlICovDQo+PiArI2RlZmluZSBDU0kyRENfUFVfVlAgICAgICAgICAgICAgICAgIEJJVCgwKQ0K Pj4gKw0KPj4gKy8qIFBpcGUgdXBkYXRlIHN0YXR1cyByZWdpc3RlciAqLw0KPj4gKyNkZWZpbmUg Q1NJMkRDX1BVUyAgICAgICAgICAgICAgICAgICAweEM0DQo+PiArDQo+PiArLyogVmlkZW8gcGlw ZWxpbmUgZW5hYmxlIHJlZ2lzdGVyICovDQo+PiArI2RlZmluZSBDU0kyRENfVlBFICAgICAgICAg ICAgICAgICAgIDB4RjgNCj4+ICsjZGVmaW5lIENTSTJEQ19WUEVfRU5BQkxFICAgICAgICAgICAg QklUKDApDQo+PiArDQo+PiArLyogVmlkZW8gcGlwZWxpbmUgY29uZmlndXJhdGlvbiByZWdpc3Rl ciAqLw0KPj4gKyNkZWZpbmUgQ1NJMkRDX1ZQQ0ZHICAgICAgICAgICAgICAgICAweEZDDQo+PiAr LyogRGF0YSB0eXBlICovDQo+PiArI2RlZmluZSBDU0kyRENfVlBDRkdfRFQodikgICAgICAgICAg ICgodikgPDwgMCkNCj4+ICsjZGVmaW5lIENTSTJEQ19WUENGR19EVF9NQVNLICAgICAgICAgR0VO TUFTSyg1LCAwKQ0KPj4gKy8qIFZpcnR1YWwgY2hhbm5lbCBpZGVudGlmaWVyICovDQo+PiArI2Rl ZmluZSBDU0kyRENfVlBDRkdfVkModikgICAgICAgICAgICgodikgPDwgNikNCj4+ICsjZGVmaW5l IENTSTJEQ19WUENGR19WQ19NQVNLICAgICAgICAgR0VOTUFTSyg3LCA2KQ0KPj4gKy8qIERlY29t cHJlc3Npb24gZW5hYmxlICovDQo+PiArI2RlZmluZSBDU0kyRENfVlBDRkdfREUgICAgICAgICAg ICAgICAgICAgICAgQklUKDgpDQo+PiArLyogRGVjb2RlciBtb2RlICovDQo+PiArI2RlZmluZSBD U0kyRENfVlBDRkdfRE0odikgICAgICAgICAgICgodikgPDwgOSkNCj4+ICsjZGVmaW5lIENTSTJE Q19WUENGR19ETV9ERUNPREVSOFRPMTIgMA0KPj4gKy8qIERlY29kZXIgcHJlZGljdG9yIDIgc2Vs ZWN0aW9uICovDQo+PiArI2RlZmluZSBDU0kyRENfVlBDRkdfRFAyICAgICAgICAgICAgIEJJVCgx MikNCj4+ICsvKiBSZWNvbW1lbmRlZCBtZW1vcnkgc3RvcmFnZSAqLw0KPj4gKyNkZWZpbmUgQ1NJ MkRDX1ZQQ0ZHX1JNUyAgICAgICAgICAgICBCSVQoMTMpDQo+PiArLyogUG9zdCBhZGp1c3RtZW50 ICovDQo+PiArI2RlZmluZSBDU0kyRENfVlBDRkdfUEEgICAgICAgICAgICAgICAgICAgICAgQklU KDE0KQ0KPj4gKw0KPj4gKy8qIFZpZGVvIHBpcGVsaW5lIGNvbHVtbiByZWdpc3RlciAqLw0KPj4g KyNkZWZpbmUgQ1NJMkRDX1ZQQ09MICAgICAgICAgICAgICAgICAweDEwMA0KPj4gKy8qIENvbHVt biBudW1iZXIgKi8NCj4+ICsjZGVmaW5lIENTSTJEQ19WUENPTF9DT0wodikgICAgICAgICAgKCh2 KSA8PCAwKQ0KPj4gKyNkZWZpbmUgQ1NJMkRDX1ZQQ09MX0NPTF9NQVNLICAgICAgICAgICAgICAg IEdFTk1BU0soMTUsIDApDQo+PiArDQo+PiArLyogVmlkZW8gcGlwZWxpbmUgcm93IHJlZ2lzdGVy ICovDQo+PiArI2RlZmluZSBDU0kyRENfVlBST1cgICAgICAgICAgICAgICAgIDB4MTA0DQo+PiAr LyogUm93IG51bWJlciAqLw0KPj4gKyNkZWZpbmUgQ1NJMkRDX1ZQUk9XX1JPVyh2KSAgICAgICAg ICAoKHYpIDw8IDApDQo+PiArI2RlZmluZSBDU0kyRENfVlBST1dfUk9XX01BU0sgICAgICAgICAg ICAgICAgR0VOTUFTSygxNSwgMCkNCj4+ICsNCj4+ICsvKiBWZXJzaW9uIHJlZ2lzdGVyICovDQo+ PiArI2RlZmluZSBDU0kyRENfVkVSU0lPTiAgICAgICAgICAgICAgICAgICAgICAgMHgxRkMNCj4+ ICsNCj4+ICsvKiByZWdpc3RlciByZWFkL3dyaXRlIGhlbHBlcnMgKi8NCj4+ICsjZGVmaW5lIGNz aTJkY19yZWFkbChzdCwgcmVnKSAgICAgICAgICAgICAgICByZWFkbF9yZWxheGVkKChzdCktPmJh c2UgKyAocmVnKSkNCj4+ICsjZGVmaW5lIGNzaTJkY193cml0ZWwoc3QsIHJlZywgdmFsKSAgd3Jp dGVsX3JlbGF4ZWQoKHZhbCksIFwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHN0KS0+YmFzZSArIChyZWcpKQ0KPj4gKw0KPj4gKy8qIHN1cHBvcnRlZCBSQVcgZGF0 YSB0eXBlcyAqLw0KPj4gKyNkZWZpbmUgQ1NJMkRDX0RUX1JBVzYgICAgICAgICAgICAgICAgICAg ICAgIDB4MjgNCj4+ICsjZGVmaW5lIENTSTJEQ19EVF9SQVc3ICAgICAgICAgICAgICAgICAgICAg ICAweDI5DQo+PiArI2RlZmluZSBDU0kyRENfRFRfUkFXOCAgICAgICAgICAgICAgICAgICAgICAg MHgyQQ0KPj4gKyNkZWZpbmUgQ1NJMkRDX0RUX1JBVzEwICAgICAgICAgICAgICAgICAgICAgIDB4 MkINCj4+ICsjZGVmaW5lIENTSTJEQ19EVF9SQVcxMiAgICAgICAgICAgICAgICAgICAgICAweDJD DQo+PiArI2RlZmluZSBDU0kyRENfRFRfUkFXMTQgICAgICAgICAgICAgICAgICAgICAgMHgyRA0K Pj4gKw0KPj4gKy8qDQo+PiArICogc3RydWN0IGNzaTJkY19mb3JtYXQgLSBDU0kyREMgZm9ybWF0 IHR5cGUgc3RydWN0DQo+PiArICogQG1idXNfY29kZTogICAgICAgICAgICAgICBNZWRpYSBidXMg Y29kZSBmb3IgdGhlIGZvcm1hdA0KPj4gKyAqIEBkdDogICAgICAgICAgICAgICAgICAgICAgRGF0 YSB0eXBlIGNvbnN0YW50IGZvciB0aGlzIGZvcm1hdA0KPj4gKyAqLw0KPj4gK3N0cnVjdCBjc2ky ZGNfZm9ybWF0IHsNCj4+ICsgICAgIHUzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWJ1 c19jb2RlOw0KPj4gKyAgICAgdTMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdDsNCj4+ ICt9Ow0KPj4gKw0KPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY3NpMmRjX2Zvcm1hdCBjc2kyZGNf Zm9ybWF0c1tdID0gew0KPj4gKyAgICAgew0KPj4gKyAgICAgICAgICAgICAubWJ1c19jb2RlID0g ICAgICAgICAgICBNRURJQV9CVVNfRk1UX1NSR0dCMTBfMVgxMCwNCj4+ICsgICAgICAgICAgICAg LmR0ID0gICAgICAgICAgICAgICAgICAgQ1NJMkRDX0RUX1JBVzEwLA0KPj4gKyAgICAgfSwgew0K Pj4gKyAgICAgICAgICAgICAubWJ1c19jb2RlID0gICAgICAgICAgICBNRURJQV9CVVNfRk1UX1NC R0dSMTBfMVgxMCwNCj4+ICsgICAgICAgICAgICAgLmR0ID0gICAgICAgICAgICAgICAgICAgQ1NJ MkRDX0RUX1JBVzEwLA0KPj4gKyAgICAgfSwgew0KPj4gKyAgICAgICAgICAgICAubWJ1c19jb2Rl ID0gICAgICAgICAgICBNRURJQV9CVVNfRk1UX1NHUkJHMTBfMVgxMCwNCj4+ICsgICAgICAgICAg ICAgLmR0ID0gICAgICAgICAgICAgICAgICAgQ1NJMkRDX0RUX1JBVzEwLA0KPj4gKyAgICAgfSwg ew0KPj4gKyAgICAgICAgICAgICAubWJ1c19jb2RlID0gICAgICAgICAgICBNRURJQV9CVVNfRk1U X1NHQlJHMTBfMVgxMCwNCj4+ICsgICAgICAgICAgICAgLmR0ID0gICAgICAgICAgICAgICAgICAg Q1NJMkRDX0RUX1JBVzEwLA0KPj4gKyAgICAgfSwNCj4+ICt9Ow0KPiANCj4gSG93IHVuZm9ydHVu YXRlIHdlIGRvbid0IGhhdmUgdGhpcyBpbiB0aGUgY29yZS4uLg0KPiANCj4+ICsNCj4+ICtlbnVt IG1pcGlfY3NpX3BhZHMgew0KPj4gKyAgICAgQ1NJMkRDX1BBRF9TSU5LICAgICAgICAgICAgICAg ICA9IDAsDQo+PiArICAgICBDU0kyRENfUEFEX1NPVVJDRSAgICAgICAgICAgICAgID0gMSwNCj4+ ICsgICAgIENTSTJEQ19QQURTX05VTSAgICAgICAgICAgICAgICAgPSAyLA0KPj4gK307DQo+PiAr DQo+PiArLyoNCj4+ICsgKiBzdHJ1Y3QgY3NpMmRjX2RldmljZSAtIENTSTJEQyBkZXZpY2UgZHJp dmVyIGRhdGEvY29uZmlnIHN0cnVjdA0KPj4gKyAqIEBiYXNlOiAgICAgICAgICAgIFJlZ2lzdGVy IG1hcCBiYXNlIGFkZHJlc3MNCj4+ICsgKiBAY3NpMmRjX3NkOiAgICAgICAgICAgICAgIHY0bDIg c3ViZGV2aWNlIGZvciB0aGUgY3NpMmRjIGRldmljZQ0KPj4gKyAqICAgICAgICAgICAgICAgICAg IFRoaXMgaXMgdGhlIHN1YmRldmljZSB0aGF0IHRoZSBjc2kyZGMgZGV2aWNlIGl0c2VsZg0KPj4g KyAqICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVycyBpbiB2NGwyIHN1YnN5c3RlbQ0KPj4gKyAq IEBkZXY6ICAgICAgICAgICAgIHN0cnVjdCBkZXZpY2UgZm9yIHRoaXMgY3NpMmRjIGRldmljZQ0K Pj4gKyAqIEBwY2xrOiAgICAgICAgICAgIFBlcmlwaGVyYWwgY2xvY2sgcmVmZXJlbmNlDQo+PiAr ICogICAgICAgICAgICAgICAgICAgSW5wdXQgY2xvY2sgdGhhdCBjbG9ja3MgdGhlIGhhcmR3YXJl IGJsb2NrIGludGVybmFsDQo+PiArICogICAgICAgICAgICAgICAgICAgbG9naWMNCj4+ICsgKiBA c2NjazogICAgICAgICAgICBTZW5zb3IgQ29udHJvbGxlciBjbG9jayByZWZlcmVuY2UNCj4+ICsg KiAgICAgICAgICAgICAgICAgICBJbnB1dCBjbG9jayB0aGF0IGlzIHVzZWQgdG8gZ2VuZXJhdGUg dGhlIHBpeGVsIGNsb2NrDQo+PiArICogQGZvcm1hdDogICAgICAgICAgQ3VycmVudCBzYXZlZCBm b3JtYXQgdXNlZCBpbiBnL3MgZm10DQo+PiArICogQGN1cl9mbXQ6ICAgICAgICAgQ3VycmVudCBz dGF0ZSBmb3JtYXQNCj4+ICsgKiBAdHJ5X2ZtdDogICAgICAgICBUcnkgZm9ybWF0IHRoYXQgaXMg YmVpbmcgdHJpZWQNCj4+ICsgKiBAcGFkczogICAgICAgICAgICBNZWRpYSBlbnRpdHkgcGFkcyBm b3IgdGhlIGNzaTJkYyBzdWJkZXZpY2UNCj4+ICsgKiBAY2xrX2dhdGVkOiAgICAgICAgICAgICAg IFdoZXRoZXIgdGhlIGNsb2NrIGlzIGdhdGVkIG9yIGZyZWUgcnVubmluZw0KPj4gKyAqIEB2aWRl b19waXBlOiAgICAgICAgICAgICAgV2hldGhlciB2aWRlbyBwaXBlbGluZSBpcyBjb25maWd1cmVk DQo+PiArICogQHZjOiAgICAgICAgICAgICAgICAgICAgICBDdXJyZW50IHNldCB2aXJ0dWFsIGNo YW5uZWwNCj4+ICsgKiBAYXNkOiAgICAgICAgICAgICBBc3luYyBzdWJkZXZpY2UgZm9yIGFzeW5j IGJvdW5kIG9mIHRoZSB1bmRlcmx5aW5nIHN1YmRldg0KPj4gKyAqIEBub3RpZmllcjogICAgICAg ICAgICAgICAgQXN5bmMgbm90aWZpZXIgdGhhdCBpcyB1c2VkIHRvIGJvdW5kIHRoZSB1bmRlcmx5 aW5nDQo+PiArICogICAgICAgICAgICAgICAgICAgc3ViZGV2aWNlIHRvIHRoZSBjc2kyZGMgc3Vi ZGV2aWNlDQo+PiArICogQGlucHV0X3NkOiAgICAgICAgICAgICAgICBSZWZlcmVuY2UgdG8gdGhl IHVuZGVybHlpbmcgc3ViZGV2aWNlIGJvdW5kIHRvIHRoZQ0KPj4gKyAqICAgICAgICAgICAgICAg ICAgIGNzaTJkYyBzdWJkZXZpY2UNCj4+ICsgKiBAcmVtb3RlX3BhZDogICAgICAgICAgICAgIFBh ZCBudW1iZXIgb2YgdGhlIHVuZGVybHlpbmcgc3ViZGV2aWNlIHRoYXQgaXMgbGlua2VkDQo+PiAr ICogICAgICAgICAgICAgICAgICAgdG8gdGhlIGNzaTJkYyBzdWJkZXZpY2Ugc2luayBwYWQuDQo+ PiArICovDQo+PiArc3RydWN0IGNzaTJkY19kZXZpY2Ugew0KPj4gKyAgICAgdm9pZCBfX2lvbWVt ICAgICAgICAgICAgICAgICAgICAqYmFzZTsNCj4+ICsgICAgIHN0cnVjdCB2NGwyX3N1YmRldiAg ICAgICAgICAgICAgY3NpMmRjX3NkOw0KPj4gKyAgICAgc3RydWN0IGRldmljZSAgICAgICAgICAg ICAgICAgICAqZGV2Ow0KPj4gKyAgICAgc3RydWN0IGNsayAgICAgICAgICAgICAgICAgICAgICAq cGNsazsNCj4+ICsgICAgIHN0cnVjdCBjbGsgICAgICAgICAgICAgICAgICAgICAgKnNjY2s7DQo+ PiArDQo+PiArICAgICBzdHJ1Y3QgdjRsMl9tYnVzX2ZyYW1lZm10ICAgICAgICBmb3JtYXQ7DQo+ PiArDQo+PiArICAgICBjb25zdCBzdHJ1Y3QgY3NpMmRjX2Zvcm1hdCAgICAgICpjdXJfZm10Ow0K Pj4gKyAgICAgY29uc3Qgc3RydWN0IGNzaTJkY19mb3JtYXQgICAgICAqdHJ5X2ZtdDsNCj4+ICsN Cj4+ICsgICAgIHN0cnVjdCBtZWRpYV9wYWQgICAgICAgICAgICAgICAgcGFkc1tDU0kyRENfUEFE U19OVU1dOw0KPj4gKw0KPj4gKyAgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICBj bGtfZ2F0ZWQ7DQo+PiArICAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVv X3BpcGU7DQo+PiArICAgICB1MzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZjOw0KPj4g Kw0KPj4gKyAgICAgc3RydWN0IHY0bDJfYXN5bmNfc3ViZGV2ICAgICAgICAqYXNkOw0KPj4gKyAg ICAgc3RydWN0IHY0bDJfYXN5bmNfbm90aWZpZXIgICAgICBub3RpZmllcjsNCj4+ICsNCj4+ICsg ICAgIHN0cnVjdCB2NGwyX3N1YmRldiAgICAgICAgICAgICAgKmlucHV0X3NkOw0KPj4gKw0KPj4g KyAgICAgdTMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdGVfcGFkOw0KPj4gK307 DQo+PiArDQo+PiArc3RhdGljIHZvaWQgY3NpMmRjX3ZwX3VwZGF0ZShzdHJ1Y3QgY3NpMmRjX2Rl dmljZSAqY3NpMmRjKQ0KPiANCj4gQ291bGQgeW91IG1vdmUgdGhpcyBiZWxvdyBjbG9zZXIgdG8g dGhlIG9ubHkgY2FsbGVyID8NCj4gDQo+PiArew0KPj4gKyAgICAgdTMyIHZwOw0KPj4gKw0KPj4g KyAgICAgaWYgKCFjc2kyZGMtPmN1cl9mbXQpIHsNCj4gDQo+IFlvdSBzaG91bGQgcHJvYmFibHkg aW5pdGlhbGl6ZSB0aGlzIHRvIGEgZGVmYXVsdCBmb3JtYXQNCj4gDQo+PiArICAgICAgICAgICAg IGRldl9lcnIoY3NpMmRjLT5kZXYsICJmb3JtYXQgbXVzdCBiZSBjb25maWd1cmVkIGZpcnN0XG4i KTsNCj4+ICsgICAgICAgICAgICAgcmV0dXJuOw0KPj4gKyAgICAgfQ0KPj4gKw0KPj4gKyAgICAg aWYgKCFjc2kyZGMtPnZpZGVvX3BpcGUpIHsNCj4gDQo+IFRoaXMgaXMgb25seSBjYWxsZWQgaW50 ZXJuYWxseSBieSB0aGUgZHJpdmVyIGF0IHNfc3RyZWFtKCkgdGltZSwgY2FuDQo+IHRoaXMgaGFw cGVuID8gT3IgcmF0aGVyIHdvbid0IHlvdSBoYXZlIGEgc3RyZWFtb24gY2FsbCBhbHNvIHdoZW4g dGhlDQo+IGRhdGEgcGlwZSBvbmx5IGlzIGF2YWlsYWJsZSA/IEluIHRoYXQgY2FzZSB5b3Ugd291 bGQgZXJyb3Igb3V0IGhlcmUNCg0KVGhpcyBjYW4gaGFwcGVuIGlmIHRoZSBzb3VyY2Ugbm9kZSBp cyBub3QgZm91bmQgaW4gdGhlIERULiBJbiB0aGF0IGNhc2UsIA0KdGhlcmUgaXMgbm8gdmlkZW8g cGlwZSBhdmFpbGFibGUsIHRodXMgdGhpcyB3aG9sZSBmdW5jdGlvbiBzaG91bGQgYmUgYSANCm5v LW9wIChjc2kyZGNfdnBfdXBkYXRlKSAuIElmIG5vIHZwLCB0aGVyZSBpcyBubyB2cCB1cGRhdGUu DQpOb3JtYWxsIHdpdGhvdXQgYSB2cCwgdGhlcmUgc2hvdWxkIGJlIGEgZHAgKGRhdGEgcGlwZSks IGJ1dCBJIGhhdmVuJ3QgDQp0ZXN0ZWQgdGhpcyBhbmQgaXQncyBub3Qgc3VwcG9ydGVkIGluIHRo ZSBkcml2ZXIuDQpJdCBkb2Vzbid0IG1ha2UgYW55IHNlbnNlIHRvIGNvbmZpZ3VyZSB0aGUgdnAg cmVnaXN0ZXJzIGJlbG93IGlmIHRoZSB2cCANCmlzIG5vdCBhdmFpbGFibGUuDQpIb3dldmVyLCBJ IHNob3VsZG4ndCByZXR1cm4gYW4gZXJyb3Igc2luY2UgdGhlIHZwIGlzIG5vdCBtYW5kYXRvcnkg Zm9yIA0KdGhlIGZ1bmN0aW9uIG9mIHRoZSBoYXJkd2FyZS4gSnVzdCB0aGF0IHRoZSBkcCB3aWxs IGJlIGltcGxlbWVudGVkIGF0IGEgDQpsYXRlciB0aW1lICguLi4uIG9yIG5ldmVyKS4NCg0KPiAN Cj4+ICsgICAgICAgICAgICAgZGV2X2Vycihjc2kyZGMtPmRldiwgInZpZGVvIHBpcGVsaW5lIHVu YXZhaWxhYmxlXG4iKTsNCj4+ICsgICAgICAgICAgICAgcmV0dXJuOw0KPj4gKyAgICAgfQ0KPj4g Kw0KPj4gKyAgICAgdnAgPSBDU0kyRENfVlBDRkdfRFQoY3NpMmRjLT5jdXJfZm10LT5kdCkgJiBD U0kyRENfVlBDRkdfRFRfTUFTSzsNCj4+ICsgICAgIHZwIHw9IENTSTJEQ19WUENGR19WQyhjc2ky ZGMtPnZjKSAmIENTSTJEQ19WUENGR19WQ19NQVNLOw0KPj4gKyAgICAgdnAgJj0gfkNTSTJEQ19W UENGR19ERTsNCj4+ICsgICAgIHZwIHw9IENTSTJEQ19WUENGR19ETShDU0kyRENfVlBDRkdfRE1f REVDT0RFUjhUTzEyKTsNCj4+ICsgICAgIHZwICY9IH5DU0kyRENfVlBDRkdfRFAyOw0KPj4gKyAg ICAgdnAgJj0gfkNTSTJEQ19WUENGR19STVM7DQo+PiArICAgICB2cCB8PSBDU0kyRENfVlBDRkdf UEE7DQo+PiArDQo+PiArICAgICBjc2kyZGNfd3JpdGVsKGNzaTJkYywgQ1NJMkRDX1ZQQ0ZHLCB2 cCk7DQo+PiArICAgICBjc2kyZGNfd3JpdGVsKGNzaTJkYywgQ1NJMkRDX1ZQRSwgQ1NJMkRDX1ZQ RV9FTkFCTEUpOw0KPj4gKyAgICAgY3NpMmRjX3dyaXRlbChjc2kyZGMsIENTSTJEQ19QVSwgQ1NJ MkRDX1BVX1ZQKTsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGlubGluZSBzdHJ1Y3QgY3NpMmRj X2RldmljZSAqDQo+PiArY3NpMmRjX3NkX3RvX2NzaTJkY19kZXZpY2Uoc3RydWN0IHY0bDJfc3Vi ZGV2ICpjc2kyZGNfc2QpDQo+PiArew0KPj4gKyAgICAgcmV0dXJuIGNvbnRhaW5lcl9vZihjc2ky ZGNfc2QsIHN0cnVjdCBjc2kyZGNfZGV2aWNlLCBjc2kyZGNfc2QpOw0KPj4gK30NCj4+ICsNCj4+ ICtzdGF0aWMgaW50IGNzaTJkY19lbnVtX21idXNfY29kZShzdHJ1Y3QgdjRsMl9zdWJkZXYgKmNz aTJkY19zZCwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdjRsMl9z dWJkZXZfc3RhdGUgKnNkX3N0YXRlLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCB2NGwyX3N1YmRldl9tYnVzX2NvZGVfZW51bSAqY29kZSkNCj4+ICt7DQo+PiArICAg ICBpZiAoY29kZS0+aW5kZXggPj0gQVJSQVlfU0laRShjc2kyZGNfZm9ybWF0cykpDQo+PiArICAg ICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPj4gKw0KPj4gKyAgICAgY29kZS0+Y29kZSA9IGNz aTJkY19mb3JtYXRzW2NvZGUtPmluZGV4XS5tYnVzX2NvZGU7DQo+PiArDQo+PiArICAgICByZXR1 cm4gMDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGludCBjc2kyZGNfZ2V0X2ZtdChzdHJ1Y3Qg djRsMl9zdWJkZXYgKmNzaTJkY19zZCwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj dCB2NGwyX3N1YmRldl9zdGF0ZSAqc2Rfc3RhdGUsDQo+PiArICAgICAgICAgICAgICAgICAgICAg ICBzdHJ1Y3QgdjRsMl9zdWJkZXZfZm9ybWF0ICpmb3JtYXQpDQo+PiArew0KPj4gKyAgICAgc3Ry dWN0IGNzaTJkY19kZXZpY2UgKmNzaTJkYyA9IGNzaTJkY19zZF90b19jc2kyZGNfZGV2aWNlKGNz aTJkY19zZCk7DQo+PiArDQo+PiArICAgICBmb3JtYXQtPmZvcm1hdCA9IGNzaTJkYy0+Zm9ybWF0 Ow0KPj4gKw0KPj4gKyAgICAgcmV0dXJuIDA7DQo+IA0KPiBZb3Ugc2hvdWxkIHN1cHBvcnQgdHJ5 IGZvcm1hdHMgYnkgc3RvcmluZyB0aGUgZm9ybWF0IGluIHRoZSBmaWxlDQo+IGhhbmRsZSBzdGF0 ZSBpbiBzX2ZtdCBhbmQgcmV0dXJuIGl0IGluIGNhc2Ugd2hpY2ggPT0gVFJZDQo+IA0KPiBHcmVw IGZvciB2NGwyX3N1YmRldl9nZXRfdHJ5X2Zvcm1hdCgpIGZvciB1c2FnZSBleGFtcGxlcw0KDQpJ IGRpZCB0aGF0IGluaXRpYWxseSwgYnV0IGNvdWxkIG5vdCBmaW5kIGFueSB1dGlsaXR5IGZvciBp dCBpbiBteSB0ZXN0cy4gDQpTbyBJIHJlbW92ZWQgaXQuDQpJIHdpbGwgdHJ5IHRvIGJyaW5nIGl0 IGJhY2ssIGJ1dCBJIGhhdmUgbm8gaWRlYSBob3cgdG8gdGVzdCB0aGF0IHRoZSB0cnkgDQpmb3Jt YXQgd29ya3MgZmluZSBvciBub3QNCg0KPiANCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGludCBj c2kyZGNfc2V0X2ZtdChzdHJ1Y3QgdjRsMl9zdWJkZXYgKmNzaTJkY19zZCwNCj4+ICsgICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCB2NGwyX3N1YmRldl9zdGF0ZSAqc2Rfc3RhdGUsDQo+PiAr ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdjRsMl9zdWJkZXZfZm9ybWF0ICpyZXFfZm10 KQ0KPj4gK3sNCj4+ICsgICAgIHN0cnVjdCBjc2kyZGNfZGV2aWNlICpjc2kyZGMgPSBjc2kyZGNf c2RfdG9fY3NpMmRjX2RldmljZShjc2kyZGNfc2QpOw0KPj4gKyAgICAgY29uc3Qgc3RydWN0IGNz aTJkY19mb3JtYXQgKmZtdDsNCj4+ICsgICAgIGludCBpOw0KPiANCj4gdW5zaWduZWQNCj4gDQo+ PiArDQo+PiArICAgICBmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShjc2kyZGNfZm9ybWF0cyk7 ICBpKyspIHsNCj4+ICsgICAgICAgICAgICAgZm10ID0gJmNzaTJkY19mb3JtYXRzW2ldOw0KPj4g KyAgICAgICAgICAgICBpZiAocmVxX2ZtdC0+Zm9ybWF0LmNvZGUgPT0gZm10LT5tYnVzX2NvZGUp DQo+PiArICAgICAgICAgICAgICAgICAgICAgY3NpMmRjLT50cnlfZm10ID0gZm10Ow0KPiANCj4g U2hvdWxkbid0IHlvdSBicmVhayA/DQo+IA0KPj4gKyAgICAgICAgICAgICBmbXQrKzsNCj4+ICsg ICAgIH0NCj4gDQo+IEFuZCBtYWtlIHRoaXMgYSBzaW1wbGVyDQo+IA0KPiAgICAgICAgICBmb3Ig KGkgPSAwOyBpIDwgQVJSQVlfU0laRShjc2kyZGNfZm9ybWF0cyk7IGkrKykgew0KPiAgICAgICAg ICAgICAgICAgIGlmIChyZXFfZm10LT5mb3JtYXQuY29kZSA9PSBjc2kyZGNfZm9ybWF0c1tpXS5t YnVzX2NvZGUpDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4gICAgICAgICAg fQ0KPiANCj4gICAgICAgICAgaWYgKGkgPT0gQVJSQVlfU0laRShjc2kyZGNfZm9ybWF0cykNCj4g ICAgICAgICAgICAgICAgICBpID0gMDsNCj4gDQo+PiArDQo+PiArICAgICAvKiBpbiBjYXNlIHdl IGNvdWxkIG5vdCBmaW5kIHRoZSBkZXNpcmVkIGZvcm1hdCwgZGVmYXVsdCB0byBzb21ldGhpbmcg Ki8NCj4+ICsgICAgIGlmICghY3NpMmRjLT50cnlfZm10ICB8fA0KPj4gKyAgICAgICAgIHJlcV9m bXQtPmZvcm1hdC5jb2RlICE9IGNzaTJkYy0+dHJ5X2ZtdC0+bWJ1c19jb2RlKSB7DQo+PiArICAg ICAgICAgICAgIGNzaTJkYy0+dHJ5X2ZtdCA9ICZjc2kyZGNfZm9ybWF0c1swXTsNCj4+ICsNCj4+ ICsgICAgICAgICAgICAgZGV2X2RiZyhjc2kyZGMtPmRldiwNCj4+ICsgICAgICAgICAgICAgICAg ICAgICAiQ1NJMkRDIHVuc3VwcG9ydGVkIGZvcm1hdCAweCV4LCBkZWZhdWx0aW5nIHRvIDB4JXhc biIsDQo+PiArICAgICAgICAgICAgICAgICAgICAgcmVxX2ZtdC0+Zm9ybWF0LmNvZGUsIGNzaTJk Y19mb3JtYXRzWzBdLm1idXNfY29kZSk7DQo+PiArDQo+PiArICAgICAgICAgICAgIHJlcV9mbXQt PmZvcm1hdC5jb2RlID0gY3NpMmRjX2Zvcm1hdHNbMF0ubWJ1c19jb2RlOw0KPj4gKyAgICAgfQ0K Pj4gKw0KPj4gKyAgICAgcmVxX2ZtdC0+Zm9ybWF0LmNvbG9yc3BhY2UgPSBWNEwyX0NPTE9SU1BB Q0VfU1JHQjsNCj4+ICsgICAgIHJlcV9mbXQtPmZvcm1hdC5maWVsZCA9IFY0TDJfRklFTERfTk9O RTsNCj4+ICsNCj4+ICsgICAgIC8qIHNhdmUgdGhlIGZvcm1hdCBmb3IgbGF0ZXIgcmVxdWVzdHMg Ki8NCj4gDQo+IFlvdSBzaG91bGQgc3VwcG9ydCBUUlkgZm9ybWF0cw0KPiANCj4+ICsgICAgIGNz aTJkYy0+Zm9ybWF0ID0gcmVxX2ZtdC0+Zm9ybWF0Ow0KPj4gKw0KPj4gKyAgICAgLyogaWYgd2Ug YXJlIGp1c3QgdHJ5aW5nLCB3ZSBhcmUgZG9uZSAqLw0KPj4gKyAgICAgaWYgKHJlcV9mbXQtPndo aWNoID09IFY0TDJfU1VCREVWX0ZPUk1BVF9UUlkpDQo+PiArICAgICAgICAgICAgIHJldHVybiAw Ow0KPj4gKw0KPj4gKyAgICAgY3NpMmRjLT5jdXJfZm10ID0gY3NpMmRjLT50cnlfZm10Ow0KPiAN Cj4gICAgICAgICAgY3NpMmRjLT5jdXJfZm10ID0gJmNzaTJkY19mb3JtYXRbaV07DQo+IA0KPiBT byB5b3UgY2FuIGRyb3AgdGhlIHRyeV9mbXQgZnJvbSB0aGUgZHJpdmVyIHN0cnVjdHVyZSBhcyBp dCBzZWVtcyB0bw0KPiBiZSB1c2VkIGFzIGEgdGVtcG9yYXJ5IHZhcmlhYmxlIGhlcmUgb25seS4N Cj4gDQo+PiArDQo+PiArICAgICBkZXZfZGJnKGNzaTJkYy0+ZGV2LCAibmV3IGZvcm1hdCBzZXQ6 IDB4JXhcbiIsIHJlcV9mbXQtPmZvcm1hdC5jb2RlKTsNCj4+ICsNCj4+ICsgICAgIHJldHVybiAw Ow0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW50IGNzaTJkY19wb3dlcihzdHJ1Y3QgY3NpMmRj X2RldmljZSAqY3NpMmRjLCBpbnQgb24pDQo+PiArew0KPj4gKyAgICAgaW50IHJldCA9IDA7DQo+ PiArDQo+PiArICAgICBpZiAob24pIHsNCj4+ICsgICAgICAgICAgICAgcmV0ID0gY2xrX3ByZXBh cmVfZW5hYmxlKGNzaTJkYy0+cGNsayk7DQo+PiArICAgICAgICAgICAgIGlmIChyZXQpIHsNCj4+ ICsgICAgICAgICAgICAgICAgICAgICBkZXZfZXJyKGNzaTJkYy0+ZGV2LCAiZmFpbGVkIHRvIGVu YWJsZSBwY2xrOiAlZFxuIiwgcmV0KTsNCj4+ICsgICAgICAgICAgICAgICAgICAgICByZXR1cm4g cmV0Ow0KPj4gKyAgICAgICAgICAgICB9DQo+PiArDQo+PiArICAgICAgICAgICAgIHJldCA9IGNs a19wcmVwYXJlX2VuYWJsZShjc2kyZGMtPnNjY2spOw0KPj4gKyAgICAgICAgICAgICBpZiAocmV0 KQ0KPj4gKyAgICAgICAgICAgICAgICAgICAgIGRldl9lcnIoY3NpMmRjLT5kZXYsDQo+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiZmFpbGVkIHRvIGVuYWJsZSBzY2NrOiAlZFxuIiwg cmV0KTsNCj4gDQo+IFNob3VsZG4ndCB5b3UgYmFpbCBvdXQgaGVyZSA/DQoNCkluaXRpYWxseSB0 aGlzIGNsb2NrIHdhcyBub3QgbWFuZGF0b3J5LCBidXQgeW91IGFyZSByaWdodCwgSSBzaG91bGQg YmFpbCANCm91dC4NCg0KPiANCj4+ICsNCj4+ICsgICAgICAgICAgICAgLyogaWYgcG93ZXJpbmcg dXAsIGRlYXNzZXJ0IHJlc2V0IGxpbmUgKi8NCj4+ICsgICAgICAgICAgICAgY3NpMmRjX3dyaXRl bChjc2kyZGMsIENTSTJEQ19HQ1RMUiwgQ1NJMkRDX0dDVExSX1NXUlNUKTsNCj4+ICsgICAgIH0g ZWxzZSB7DQo+PiArICAgICAgICAgICAgIGNsa19kaXNhYmxlX3VucHJlcGFyZShjc2kyZGMtPnNj Y2spOw0KPj4gKw0KPj4gKyAgICAgICAgICAgICAvKiBpZiBwb3dlcmluZyBkb3duLCBhc3NlcnQg cmVzZXQgbGluZSAqLw0KPj4gKyAgICAgICAgICAgICBjc2kyZGNfd3JpdGVsKGNzaTJkYywgQ1NJ MkRDX0dDVExSLCAhQ1NJMkRDX0dDVExSX1NXUlNUKTsNCj4gDQo+IElzbid0IHJldmVyc2Ugb3Jk ZXIgb2YgYWN0aXZhdGlvbiBiZXR0ZXIgPw0KPiANCj4gICAgICAgICAgICAgICAgICBjc2kyZGNf d3JpdGVsKC4uKQ0KPiAgICAgICAgICAgICAgICAgIGNsa19kaXNhYmxlX3VucHJlcGFyZSguLikN Cj4gICAgICAgICAgICAgICAgICBjbGtfZGlzYWJsZV91bnByZXBhcmUoLi4pDQo+PiArDQo+PiAr ICAgICAgICAgICAgIGNsa19kaXNhYmxlX3VucHJlcGFyZShjc2kyZGMtPnBjbGspOw0KPj4gKyAg ICAgfQ0KPj4gKw0KPj4gKyAgICAgcmV0dXJuIHJldDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGlj IGludCBjc2kyZGNfc19zdHJlYW0oc3RydWN0IHY0bDJfc3ViZGV2ICpjc2kyZGNfc2QsIGludCBl bmFibGUpDQo+PiArew0KPj4gKyAgICAgc3RydWN0IGNzaTJkY19kZXZpY2UgKmNzaTJkYyA9IGNz aTJkY19zZF90b19jc2kyZGNfZGV2aWNlKGNzaTJkY19zZCk7DQo+PiArICAgICBpbnQgcmV0Ow0K Pj4gKw0KPj4gKyAgICAgaWYgKGVuYWJsZSkgew0KPj4gKyAgICAgICAgICAgICByZXQgPSBwbV9y dW50aW1lX3Jlc3VtZV9hbmRfZ2V0KGNzaTJkYy0+ZGV2KTsNCj4+ICsgICAgICAgICAgICAgaWYg KHJldCA8IDApDQo+PiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4+ICsgICAg ICAgICAgICAgY3NpMmRjX3ZwX3VwZGF0ZShjc2kyZGMpOw0KPj4gKyAgICAgfSBlbHNlIHsNCj4+ ICsgICAgICAgICAgICAgcG1fcnVudGltZV9wdXRfc3luYyhjc2kyZGMtPmRldik7DQo+PiArICAg ICB9DQo+PiArDQo+PiArICAgICByZXR1cm4gdjRsMl9zdWJkZXZfY2FsbChjc2kyZGMtPmlucHV0 X3NkLCB2aWRlbywgc19zdHJlYW0sIGVuYWJsZSk7DQo+IA0KPiBTaG91bGQgdGhlIHJlbW90ZSBz dWJkZXYgYmUgc3RhcnRlZCBiZWZvcmUgYW5kIHN0b3BwZWQgYWZ0ZXIgPw0KDQpEbyB5b3UgbWVh biBzX3Bvd2VyID8NCg0KPiANCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGNvbnN0IHN0cnVjdCB2 NGwyX3N1YmRldl9wYWRfb3BzIGNzaTJkY19wYWRfb3BzID0gew0KPj4gKyAgICAgLmVudW1fbWJ1 c19jb2RlID0gY3NpMmRjX2VudW1fbWJ1c19jb2RlLA0KPj4gKyAgICAgLnNldF9mbXQgPSBjc2ky ZGNfc2V0X2ZtdCwNCj4+ICsgICAgIC5nZXRfZm10ID0gY3NpMmRjX2dldF9mbXQsDQo+PiArfTsN Cj4+ICsNCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHY0bDJfc3ViZGV2X3ZpZGVvX29wcyBjc2ky ZGNfdmlkZW9fb3BzID0gew0KPj4gKyAgICAgLnNfc3RyZWFtID0gY3NpMmRjX3Nfc3RyZWFtLA0K Pj4gK307DQo+PiArDQo+PiArc3RhdGljIGNvbnN0IHN0cnVjdCB2NGwyX3N1YmRldl9vcHMgY3Np MmRjX3N1YmRldl9vcHMgPSB7DQo+PiArICAgICAucGFkID0gJmNzaTJkY19wYWRfb3BzLA0KPj4g KyAgICAgLnZpZGVvID0gJmNzaTJkY192aWRlb19vcHMsDQo+PiArfTsNCj4+ICsNCj4+ICtzdGF0 aWMgaW50IGNzaTJkY19nZXRfbWJ1c19jb25maWcoc3RydWN0IGNzaTJkY19kZXZpY2UgKmNzaTJk YykNCj4+ICt7DQo+PiArICAgICBzdHJ1Y3QgdjRsMl9tYnVzX2NvbmZpZyBtYnVzX2NvbmZpZyA9 IHsgMCB9Ow0KPj4gKyAgICAgaW50IHJldDsNCj4+ICsNCj4+ICsgICAgIHJldCA9IHY0bDJfc3Vi ZGV2X2NhbGwoY3NpMmRjLT5pbnB1dF9zZCwgcGFkLCBnZXRfbWJ1c19jb25maWcsDQo+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNzaTJkYy0+cmVtb3RlX3BhZCwgJm1idXNfY29uZmln KTsNCj4+ICsgICAgIGlmIChyZXQgPT0gLUVOT0lPQ1RMQ01EKSB7DQo+PiArICAgICAgICAgICAg IGRldl9kYmcoY3NpMmRjLT5kZXYsDQo+PiArICAgICAgICAgICAgICAgICAgICAgIm5vIHJlbW90 ZSBtYnVzIGNvbmZpZ3VyYXRpb24gYXZhaWxhYmxlXG4iKTsNCj4+ICsgICAgICAgICAgICAgZ290 byBjc2kyZGNfZ2V0X21idXNfY29uZmlnX2RlZmF1bHRzOw0KPj4gKyAgICAgfQ0KPj4gKw0KPj4g KyAgICAgaWYgKHJldCkgew0KPj4gKyAgICAgICAgICAgICBkZXZfZXJyKGNzaTJkYy0+ZGV2LA0K Pj4gKyAgICAgICAgICAgICAgICAgICAgICJmYWlsZWQgdG8gZ2V0IHJlbW90ZSBtYnVzIGNvbmZp Z3VyYXRpb25cbiIpOw0KPj4gKyAgICAgICAgICAgICBnb3RvIGNzaTJkY19nZXRfbWJ1c19jb25m aWdfZGVmYXVsdHM7DQo+PiArICAgICB9DQo+PiArDQo+PiArICAgICBpZiAobWJ1c19jb25maWcu ZmxhZ3MgJiBWNEwyX01CVVNfQ1NJMl9DSEFOTkVMXzApDQo+PiArICAgICAgICAgICAgIGNzaTJk Yy0+dmMgPSAwOw0KPj4gKyAgICAgZWxzZSBpZiAobWJ1c19jb25maWcuZmxhZ3MgJiBWNEwyX01C VVNfQ1NJMl9DSEFOTkVMXzEpDQo+PiArICAgICAgICAgICAgIGNzaTJkYy0+dmMgPSAxOw0KPj4g KyAgICAgZWxzZSBpZiAobWJ1c19jb25maWcuZmxhZ3MgJiBWNEwyX01CVVNfQ1NJMl9DSEFOTkVM XzIpDQo+PiArICAgICAgICAgICAgIGNzaTJkYy0+dmMgPSAyOw0KPj4gKyAgICAgZWxzZSBpZiAo bWJ1c19jb25maWcuZmxhZ3MgJiBWNEwyX01CVVNfQ1NJMl9DSEFOTkVMXzMpDQo+PiArICAgICAg ICAgICAgIGNzaTJkYy0+dmMgPSAzOw0KPj4gKw0KPj4gKyAgICAgZGV2X2RiZyhjc2kyZGMtPmRl diwgInN1YmRldiBzZW5kaW5nIG9uIGNoYW5uZWwgJWRcbiIsIGNzaTJkYy0+dmMpOw0KPj4gKw0K Pj4gKyAgICAgY3NpMmRjLT5jbGtfZ2F0ZWQgPSBtYnVzX2NvbmZpZy5mbGFncyAmDQo+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBWNEwyX01CVVNfQ1NJMl9OT05DT05USU5VT1VTX0NM T0NLOw0KPiANCj4gVGhpcyBzaG91bGQgY29tZSBmcm9tIHRoZSBkZWZhdWx0IGNsb2NrLW5vbmNv bnRpbnVvdXMgcHJvcGVydHkgaW4gdGhlDQo+IGVuZHBvaW50LiBJdCBpcyBhdmFpbGFibGUgaW4g dGhlIG1idXNfY29uZmlndXJhdGlvbiBvbmx5IHRvIHN1cHBvcnQNCj4gc3ViZGV2cyB0aGF0IGNh biBjaGFuZ2UgaXQgYXQgcnVudGltZSwgYW5kIGlmIHRoYXQncyB0aGUgY2FzZSBpdCdzIG9rLA0K PiBidXQgSSB0aGluayBpdCBzaG91bGQgYmUgaW4gdGhlIGVuZHBvaW50Lg0KDQpJIGRvIG5vdCBj b21wbGV0ZWx5IHVuZGVyc3RhbmQgeW91ciBwb2ludC4gSW4gYSBwcmV2aW91cyB2ZXJzaW9uIHdo aWNoIA0KeW91IHJldmlld2VkLCBJIGhhZCB0aGlzIGFzIGEgRFQgcHJvcGVydHkgKHNvIGluIHRo ZSBlbmRwb2ludCA/KSwgYW5kIA0Kbm93IEkgY29udmVydGVkIGl0IHRvIGEgZ2V0X21idXNfY29u ZmlnIGZsYWcgZ2V0IG9wZXJhdGlvbi4NCkl0J3Mgbm90IHRoZSByaWdodCB3YXkgdG8gZG8gaXQg Pw0KSG93IHNob3VsZCBpdCBiZSBzcGVjaWZpZWQgaW4gdGhlIGVuZHBvaW50ID8NCg0KPiANCj4g U3BlYWtpbmcgb2YgcmVtb3RlIHN1YmRldnMsIGlzIHRoZXJlIGFueSBkcml2ZXIgYXZhaWxhYmxl IGZvciBJREkNCj4gdHJhbnNtaXR0ZXJzID8NCg0KSSBhbSBub3QgYXdhcmUgb2YgYW55IGF0IHRo ZSBtb21lbnQNCj4gDQo+PiArDQo+PiArICAgICBkZXZfZGJnKGNzaTJkYy0+ZGV2LCAiJXMgY2xv Y2tcbiIsDQo+PiArICAgICAgICAgICAgIGNzaTJkYy0+Y2xrX2dhdGVkID8gImdhdGVkIiA6ICJm cmVlIHJ1bm5pbmciKTsNCj4+ICsNCj4+ICsgICAgIHJldHVybiAwOw0KPj4gKw0KPj4gK2NzaTJk Y19nZXRfbWJ1c19jb25maWdfZGVmYXVsdHM6DQo+PiArICAgICBjc2kyZGMtPnZjID0gMDsgLyog VmlydHVhbCBJRCAwIGJ5IGRlZmF1bHQgKi8NCj4+ICsgICAgIGNzaTJkYy0+Y2xrX2dhdGVkID0g ZmFsc2U7IC8qIEZyZWUgcnVubmluZyBjbG9jayBieSBkZWZhdWx0ICovDQo+PiArDQo+PiArICAg ICByZXR1cm4gMDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGludCBjc2kyZGNfYXN5bmNfYm91 bmQoc3RydWN0IHY0bDJfYXN5bmNfbm90aWZpZXIgKm5vdGlmaWVyLA0KPj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCB2NGwyX3N1YmRldiAqc3ViZGV2LA0KPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2NGwyX2FzeW5jX3N1YmRldiAqYXNkKQ0KPj4gK3sN Cj4+ICsgICAgIHN0cnVjdCBjc2kyZGNfZGV2aWNlICpjc2kyZGMgPSBjb250YWluZXJfb2Yobm90 aWZpZXIsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c3RydWN0IGNzaTJkY19kZXZpY2UsIG5vdGlmaWVyKTsNCj4+ICsgICAgIGludCBwYWQ7DQo+PiAr ICAgICBpbnQgcmV0Ow0KPj4gKw0KPj4gKyAgICAgY3NpMmRjLT5pbnB1dF9zZCA9IHN1YmRldjsN Cj4+ICsNCj4+ICsgICAgIHBhZCA9IG1lZGlhX2VudGl0eV9nZXRfZndub2RlX3BhZCgmc3ViZGV2 LT5lbnRpdHksDQo+IA0KPiBZb3UgY2FuIHVzZSAncmV0Jw0KDQpJIGNhbiwgYnV0IGl0IGlzIHdl aXJkIHRvIGRvIHJlbW90ZV9wYWQgPSByZXQgLi4uDQoNCk1heSBicmluZyBjb25mdXNpb24sIGRv bid0IHlvdSBhZ3JlZSA/DQoNCj4gDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYXNkLT5tYXRjaC5md25vZGUsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTUVESUFfUEFEX0ZMX1NPVVJDRSk7DQo+PiArICAgICBpZiAocGFkIDwg MCkgew0KPj4gKyAgICAgICAgICAgICBkZXZfZXJyKGNzaTJkYy0+ZGV2LCAiRmFpbGVkIHRvIGZp bmQgcGFkIGZvciAlc1xuIiwNCj4+ICsgICAgICAgICAgICAgICAgICAgICBzdWJkZXYtPm5hbWUp Ow0KPj4gKyAgICAgICAgICAgICByZXR1cm4gcGFkOw0KPj4gKyAgICAgfQ0KPj4gKw0KPj4gKyAg ICAgY3NpMmRjLT5yZW1vdGVfcGFkID0gcGFkOw0KPj4gKw0KPj4gKyAgICAgY3NpMmRjX2dldF9t YnVzX2NvbmZpZyhjc2kyZGMpOw0KPiANCj4gSWRlYWxseSwgYXMgdGhpcyBpcyBub3QgZmF0YWws IHlvdSBjb3VsZCBtb3ZlIHRoaXMgYXQgc19zdHJlYW0gdGltZSB0bw0KPiBmZXRjaCB0aGUgbW9z dCB1cC10by1kYXRlIGNvbmZpZ3VyYXRpb24NCj4gDQo+PiArDQo+PiArICAgICByZXQgPSBtZWRp YV9jcmVhdGVfcGFkX2xpbmsoJmNzaTJkYy0+aW5wdXRfc2QtPmVudGl0eSwNCj4+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjc2kyZGMtPnJlbW90ZV9wYWQsDQo+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNzaTJkYy0+Y3NpMmRjX3NkLmVudGl0eSwgMCwN Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRURJQV9MTktfRkxfRU5BQkxF RCk7DQo+PiArICAgICBpZiAocmV0IDwgMCkgew0KPiANCj4gICAgICAgICAgaWYgKHJldCkNCj4g DQo+PiArICAgICAgICAgICAgIGRldl9lcnIoY3NpMmRjLT5kZXYsDQo+PiArICAgICAgICAgICAg ICAgICAgICAgIkZhaWxlZCB0byBjcmVhdGUgcGFkIGxpbms6ICVzIHRvICVzXG4iLA0KPj4gKyAg ICAgICAgICAgICAgICAgICAgIGNzaTJkYy0+aW5wdXRfc2QtPmVudGl0eS5uYW1lLA0KPj4gKyAg ICAgICAgICAgICAgICAgICAgIGNzaTJkYy0+Y3NpMmRjX3NkLmVudGl0eS5uYW1lKTsNCj4+ICsg ICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4+ICsgICAgIH0NCj4+ICsNCj4+ICsgICAgIGRldl9k YmcoY3NpMmRjLT5kZXYsICJsaW5rIHdpdGggJXMgcGFkOiAlZFxuIiwNCj4+ICsgICAgICAgICAg ICAgY3NpMmRjLT5pbnB1dF9zZC0+bmFtZSwgY3NpMmRjLT5yZW1vdGVfcGFkKTsNCj4+ICsNCj4+ ICsgICAgIHJldCA9IHBtX3J1bnRpbWVfcmVzdW1lX2FuZF9nZXQoY3NpMmRjLT5kZXYpOw0KPj4g KyAgICAgaWYgKHJldCA8IDApDQo+PiArICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+PiArDQo+ PiArICAgICBjc2kyZGNfd3JpdGVsKGNzaTJkYywgQ1NJMkRDX0dDRkcsDQo+PiArICAgICAgICAg ICAgICAgICAgIChTQU1BN0c1X0hMQyAmIENTSTJEQ19HQ0ZHX0hMQ19NQVNLKSB8DQo+PiArICAg ICAgICAgICAgICAgICAgIChjc2kyZGMtPmNsa19nYXRlZCA/IDAgOiBDU0kyRENfR0NGR19NSVBJ RlJOKSk7DQo+PiArDQo+PiArICAgICBjc2kyZGNfd3JpdGVsKGNzaTJkYywgQ1NJMkRDX1ZQQ09M LA0KPj4gKyAgICAgICAgICAgICAgICAgICBDU0kyRENfVlBDT0xfQ09MKDB4RkZGKSAmIENTSTJE Q19WUENPTF9DT0xfTUFTSyk7DQo+PiArICAgICBjc2kyZGNfd3JpdGVsKGNzaTJkYywgQ1NJMkRD X1ZQUk9XLA0KPj4gKyAgICAgICAgICAgICAgICAgICBDU0kyRENfVlBST1dfUk9XKDB4RkZGKSAm IENTSTJEQ19WUFJPV19ST1dfTUFTSyk7DQo+PiArDQo+PiArICAgICBwbV9ydW50aW1lX3B1dF9z eW5jKGNzaTJkYy0+ZGV2KTsNCj4gDQo+IEkgd291bGQgcmVhbGx5IG1vdmUgYWNjZXNzIHRvIHRo ZSBIVyB0byBzX3N0cmVhbSB0aW1lIGlmIHBvc3NpYmxlDQo+IA0KPj4gKw0KPj4gKyAgICAgcmV0 dXJuIHJldDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGNvbnN0IHN0cnVjdCB2NGwyX2FzeW5j X25vdGlmaWVyX29wZXJhdGlvbnMgY3NpMmRjX2FzeW5jX29wcyA9IHsNCj4+ICsgICAgIC5ib3Vu ZCA9IGNzaTJkY19hc3luY19ib3VuZCwNCj4+ICt9Ow0KPj4gKw0KPj4gK3N0YXRpYyB2b2lkIGNz aTJkY19jbGVhbnVwX25vdGlmaWVyKHN0cnVjdCBjc2kyZGNfZGV2aWNlICpjc2kyZGMpDQo+PiAr ew0KPj4gKyAgICAgdjRsMl9hc3luY19ub3RpZmllcl91bnJlZ2lzdGVyKCZjc2kyZGMtPm5vdGlm aWVyKTsNCj4+ICsgICAgIHY0bDJfYXN5bmNfbm90aWZpZXJfY2xlYW51cCgmY3NpMmRjLT5ub3Rp Zmllcik7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgY3NpMmRjX3ByZXBhcmVfbm90aWZp ZXIoc3RydWN0IGNzaTJkY19kZXZpY2UgKmNzaTJkYywNCj4+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqaW5wdXRfbm9kZSkNCj4+ICt7DQo+PiAr ICAgICBpbnQgcmV0ID0gMDsNCj4+ICsNCj4+ICsgICAgIHY0bDJfYXN5bmNfbm90aWZpZXJfaW5p dCgmY3NpMmRjLT5ub3RpZmllcik7DQo+PiArDQo+PiArICAgICBjc2kyZGMtPmFzZCA9IHY0bDJf YXN5bmNfbm90aWZpZXJfYWRkX2Z3bm9kZV9yZW1vdGVfc3ViZGV2DQo+IA0KPiBkbyB5b3UgbmVl ZCBhc2QgaW4gdGhlIGRyaXZlciBzdHJ1Y3R1cmUgPw0KPiANCj4+ICsgICAgICAgICAgICAgICAg ICAgICAoJmNzaTJkYy0+bm90aWZpZXIsIG9mX2Z3bm9kZV9oYW5kbGUoaW5wdXRfbm9kZSksDQo+ PiArICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHY0bDJfYXN5bmNfc3ViZGV2KTsNCj4+ICsN Cj4+ICsgICAgIG9mX25vZGVfcHV0KGlucHV0X25vZGUpOw0KPj4gKw0KPj4gKyAgICAgaWYgKElT X0VSUihjc2kyZGMtPmFzZCkpIHsNCj4+ICsgICAgICAgICAgICAgcmV0ID0gUFRSX0VSUihjc2ky ZGMtPmFzZCk7DQo+PiArICAgICAgICAgICAgIGRldl9lcnIoY3NpMmRjLT5kZXYsDQo+PiArICAg ICAgICAgICAgICAgICAgICAgImZhaWxlZCB0byBhZGQgYXN5bmMgbm90aWZpZXIgZm9yIG5vZGUg JXBPRjogJWRcbiIsDQo+PiArICAgICAgICAgICAgICAgICAgICAgaW5wdXRfbm9kZSwgcmV0KTsN Cj4+ICsgICAgICAgICAgICAgdjRsMl9hc3luY19ub3RpZmllcl9jbGVhbnVwKCZjc2kyZGMtPm5v dGlmaWVyKTsNCj4+ICsgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4+ICsgICAgIH0NCj4+ICsN Cj4+ICsgICAgIGNzaTJkYy0+bm90aWZpZXIub3BzID0gJmNzaTJkY19hc3luY19vcHM7DQo+PiAr DQo+PiArICAgICByZXQgPSB2NGwyX2FzeW5jX3N1YmRldl9ub3RpZmllcl9yZWdpc3RlcigmY3Np MmRjLT5jc2kyZGNfc2QsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAmY3NpMmRjLT5ub3RpZmllcik7DQo+PiArDQo+PiArICAgICBpZiAocmV0KSB7 DQo+PiArICAgICAgICAgICAgIGRldl9lcnIoY3NpMmRjLT5kZXYsICJmYWlsIHRvIHJlZ2lzdGVy IGFzeW5jIG5vdGlmaWVyOiAlZFxuIiwNCj4+ICsgICAgICAgICAgICAgICAgICAgICByZXQpOw0K Pj4gKyAgICAgICAgICAgICB2NGwyX2FzeW5jX25vdGlmaWVyX2NsZWFudXAoJmNzaTJkYy0+bm90 aWZpZXIpOw0KPj4gKyAgICAgfQ0KPj4gKw0KPj4gKyAgICAgcmV0dXJuIHJldDsNCj4+ICt9DQo+ PiArDQo+PiArc3RhdGljIGludCBjc2kyZGNfb2ZfcGFyc2Uoc3RydWN0IGNzaTJkY19kZXZpY2Ug KmNzaTJkYywNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUg Km9mX25vZGUpDQo+PiArew0KPj4gKyAgICAgc3RydWN0IGRldmljZV9ub2RlICppbnB1dF9ub2Rl LCAqb3V0cHV0X25vZGU7DQo+PiArICAgICBzdHJ1Y3QgdjRsMl9md25vZGVfZW5kcG9pbnQgaW5w dXRfZW5kcG9pbnQgPSB7IDAgfSwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBvdXRwdXRfZW5kcG9pbnQgPSB7IDAgfTsNCj4+ICsgICAgIGludCByZXQ7DQo+PiArDQo+PiAr ICAgICBvdXRwdXRfZW5kcG9pbnQuYnVzX3R5cGUgPSBWNEwyX01CVVNfUEFSQUxMRUw7DQo+PiAr DQo+PiArICAgICBpbnB1dF9ub2RlID0gb2ZfZ3JhcGhfZ2V0X25leHRfZW5kcG9pbnQob2Zfbm9k ZSwgTlVMTCk7DQo+PiArDQo+PiArICAgICBpZiAoIWlucHV0X25vZGUpIHsNCj4+ICsgICAgICAg ICAgICAgZGV2X2Vycihjc2kyZGMtPmRldiwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAibWlz c2luZyBwb3J0IG5vZGUgYXQgJXBPRiwgaW5wdXQgbm9kZSBpcyBtYW5kYXRvcnkuXG4iLA0KPj4g KyAgICAgICAgICAgICAgICAgICAgIG9mX25vZGUpOw0KPj4gKyAgICAgICAgICAgICByZXR1cm4g LUVJTlZBTDsNCj4+ICsgICAgIH0NCj4+ICsNCj4+ICsgICAgIHJldCA9IHY0bDJfZndub2RlX2Vu ZHBvaW50X3BhcnNlKG9mX2Z3bm9kZV9oYW5kbGUoaW5wdXRfbm9kZSksDQo+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaW5wdXRfZW5kcG9pbnQpOw0KPj4gKw0KPj4g KyAgICAgaWYgKHJldCkgew0KPiAgICAgICAgICAgICAgICAgIG9mX25vZGVfcHV0KGlucHV0X25v ZGUpOw0KPiANCj4+ICsgICAgICAgICAgICAgZGV2X2Vycihjc2kyZGMtPmRldiwgImVuZHBvaW50 IG5vdCBkZWZpbmVkIGF0ICVwT0ZcbiIsIG9mX25vZGUpOw0KPj4gKyAgICAgICAgICAgICByZXR1 cm4gcmV0Ow0KPj4gKyAgICAgfQ0KPj4gKw0KPj4gKyAgICAgb3V0cHV0X25vZGUgPSBvZl9ncmFw aF9nZXRfbmV4dF9lbmRwb2ludChvZl9ub2RlLCBpbnB1dF9ub2RlKTsNCj4+ICsNCj4+ICsgICAg IGlmIChvdXRwdXRfbm9kZSkNCj4+ICsgICAgICAgICAgICAgcmV0ID0gdjRsMl9md25vZGVfZW5k cG9pbnRfcGFyc2Uob2ZfZndub2RlX2hhbmRsZShvdXRwdXRfbm9kZSksDQo+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvdXRwdXRfZW5kcG9pbnQpOw0K PiANCj4gICAgICAgICAgb2Zfbm9kZV9wdXQob3V0cHV0X25vZGUpOw0KPj4gKw0KPj4gKyAgICAg aWYgKCFvdXRwdXRfbm9kZSB8fCByZXQpIHsNCj4+ICsgICAgICAgICAgICAgZGV2X2luZm8oY3Np MmRjLT5kZXYsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICJtaXNzaW5nIG91dHB1dCBub2Rl IGF0ICVwT0YsIGRhdGEgcGlwZSBhdmFpbGFibGUgb25seS5cbiIsDQo+PiArICAgICAgICAgICAg ICAgICAgICAgIG9mX25vZGUpOw0KPj4gKyAgICAgfSBlbHNlIHsNCj4+ICsgICAgICAgICAgICAg Y3NpMmRjLT52aWRlb19waXBlID0gdHJ1ZTsNCj4+ICsNCj4+ICsgICAgICAgICAgICAgZGV2X2Ri Zyhjc2kyZGMtPmRldiwgImJsb2NrICVwT0YgJWQuJWQtPiVkLiVkIHZpZGVvIHBpcGVsaW5lXG4i LA0KPj4gKyAgICAgICAgICAgICAgICAgICAgIG9mX25vZGUsIGlucHV0X2VuZHBvaW50LmJhc2Uu cG9ydCwNCj4+ICsgICAgICAgICAgICAgICAgICAgICBpbnB1dF9lbmRwb2ludC5iYXNlLmlkLCBv dXRwdXRfZW5kcG9pbnQuYmFzZS5wb3J0LA0KPj4gKyAgICAgICAgICAgICAgICAgICAgIG91dHB1 dF9lbmRwb2ludC5iYXNlLmlkKTsNCj4+ICsgICAgIH0NCj4+ICsNCj4+ICsgICAgIG9mX25vZGVf cHV0KG91dHB1dF9ub2RlKTsNCj4gDQo+IERyb3AgdGhpcyBpZiB5b3UgcHV0IGl0IGFib3ZlDQo+ IA0KPj4gKyAgICAgb2Zfbm9kZV9wdXQoaW5wdXRfbm9kZSk7DQo+IA0KPiBTaG91bGQgeW91IHB1 dCBpbnB1dF9ub2RlIGJlZm9yZSBwYXNzaW5nIGl0IHRvIHRoZSBmdW5jdGlvbiA/DQo+PiArDQo+ PiArICAgICAvKiBwcmVwYXJlIGFzeW5jIG5vdGlmaWVyIGZvciBzdWJkZXZpY2UgY29tcGxldGlv biAqLw0KPj4gKyAgICAgcmV0dXJuIGNzaTJkY19wcmVwYXJlX25vdGlmaWVyKGNzaTJkYywgaW5w dXRfbm9kZSk7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgY3NpMmRjX3Byb2JlKHN0cnVj dCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+PiArew0KPj4gKyAgICAgc3RydWN0IGRldmljZSAq ZGV2ID0gJnBkZXYtPmRldjsNCj4+ICsgICAgIHN0cnVjdCBjc2kyZGNfZGV2aWNlICpjc2kyZGM7 DQo+PiArICAgICBzdHJ1Y3QgcmVzb3VyY2UgKnJlcyA9IE5VTEw7DQo+PiArICAgICBpbnQgcmV0 ID0gMDsNCj4+ICsgICAgIHUzMiB2ZXI7DQo+PiArDQo+PiArICAgICBjc2kyZGMgPSBkZXZtX2t6 YWxsb2MoZGV2LCBzaXplb2YoKmNzaTJkYyksIEdGUF9LRVJORUwpOw0KPj4gKyAgICAgaWYgKCFj c2kyZGMpDQo+PiArICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOw0KPj4gKw0KPj4gKyAgICAg Y3NpMmRjLT5kZXYgPSBkZXY7DQo+PiArDQo+PiArICAgICByZXMgPSBwbGF0Zm9ybV9nZXRfcmVz b3VyY2UocGRldiwgSU9SRVNPVVJDRV9NRU0sIDApOw0KPj4gKw0KPj4gKyAgICAgY3NpMmRjLT5i YXNlID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKGRldiwgcmVzKTsNCj4gDQo+IFNob3VsZCBkZXZt X3BsYXRmb3JtX2lvcmVtYXBfcmVzb3VyY2UocGRldiwgMCkgYmUgdXNlZCBoZXJlID8NCj4gDQo+ PiArICAgICBpZiAoSVNfRVJSKGNzaTJkYy0+YmFzZSkpIHsNCj4+ICsgICAgICAgICAgICAgZGV2 X2VycihkZXYsICJiYXNlIGFkZHJlc3Mgbm90IHNldFxuIik7DQo+PiArICAgICAgICAgICAgIHJl dHVybiBQVFJfRVJSKGNzaTJkYy0+YmFzZSk7DQo+PiArICAgICB9DQo+PiArDQo+PiArICAgICBj c2kyZGMtPnBjbGsgPSBkZXZtX2Nsa19nZXQoZGV2LCAicGNsayIpOw0KPj4gKyAgICAgaWYgKElT X0VSUihjc2kyZGMtPnBjbGspKSB7DQo+PiArICAgICAgICAgICAgIHJldCA9IFBUUl9FUlIoY3Np MmRjLT5wY2xrKTsNCj4+ICsgICAgICAgICAgICAgZGV2X2VycihkZXYsICJmYWlsZWQgdG8gZ2V0 IHBjbGs6ICVkXG4iLCByZXQpOw0KPj4gKyAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KPj4gKyAg ICAgfQ0KPj4gKw0KPj4gKyAgICAgY3NpMmRjLT5zY2NrID0gZGV2bV9jbGtfZ2V0KGRldiwgInNj Y2siKTsNCj4+ICsgICAgIGlmIChJU19FUlIoY3NpMmRjLT5zY2NrKSkgew0KPj4gKyAgICAgICAg ICAgICByZXQgPSBQVFJfRVJSKGNzaTJkYy0+c2Njayk7DQo+PiArICAgICAgICAgICAgIGRldl9l cnIoZGV2LCAiZmFpbGVkIHRvIGdldCBzY2NrOiAlZFxuIiwgcmV0KTsNCj4+ICsgICAgICAgICAg ICAgcmV0dXJuIHJldDsNCj4+ICsgICAgIH0NCj4+ICsNCj4+ICsgICAgIHY0bDJfc3ViZGV2X2lu aXQoJmNzaTJkYy0+Y3NpMmRjX3NkLCAmY3NpMmRjX3N1YmRldl9vcHMpOw0KPj4gKw0KPj4gKyAg ICAgY3NpMmRjLT5jc2kyZGNfc2Qub3duZXIgPSBUSElTX01PRFVMRTsNCj4+ICsgICAgIGNzaTJk Yy0+Y3NpMmRjX3NkLmRldiA9IGRldjsNCj4+ICsgICAgIHNucHJpbnRmKGNzaTJkYy0+Y3NpMmRj X3NkLm5hbWUsIHNpemVvZihjc2kyZGMtPmNzaTJkY19zZC5uYW1lKSwNCj4+ICsgICAgICAgICAg ICAgICJjc2kyZGMiKTsNCj4+ICsNCj4+ICsgICAgIGNzaTJkYy0+Y3NpMmRjX3NkLmZsYWdzIHw9 IFY0TDJfU1VCREVWX0ZMX0hBU19ERVZOT0RFOw0KPj4gKyAgICAgY3NpMmRjLT5jc2kyZGNfc2Qu ZW50aXR5LmZ1bmN0aW9uID0gTUVESUFfRU5UX0ZfVklEX0lGX0JSSURHRTsNCj4+ICsgICAgIHY0 bDJfc2V0X3N1YmRldmRhdGEoJmNzaTJkYy0+Y3NpMmRjX3NkLCBwZGV2KTsNCj4gDQo+IE5vdCB1 c2VkIGl0IHNlZW1zDQo+IA0KPj4gKw0KPj4gKyAgICAgcGxhdGZvcm1fc2V0X2RydmRhdGEocGRl diwgY3NpMmRjKTsNCj4+ICsNCj4+ICsgICAgIHJldCA9IGNzaTJkY19vZl9wYXJzZShjc2kyZGMs IGRldi0+b2Zfbm9kZSk7DQo+PiArICAgICBpZiAocmV0KQ0KPj4gKyAgICAgICAgICAgICBnb3Rv IGNzaTJkY19wcm9iZV9jbGVhbnVwX2VudGl0eTsNCj4+ICsNCj4+ICsgICAgIGNzaTJkYy0+cGFk c1tDU0kyRENfUEFEX1NJTktdLmZsYWdzID0gTUVESUFfUEFEX0ZMX1NJTks7DQo+PiArICAgICBp ZiAoY3NpMmRjLT52aWRlb19waXBlKQ0KPj4gKyAgICAgICAgICAgICBjc2kyZGMtPnBhZHNbQ1NJ MkRDX1BBRF9TT1VSQ0VdLmZsYWdzID0gTUVESUFfUEFEX0ZMX1NPVVJDRTsNCj4+ICsNCj4+ICsg ICAgIHJldCA9IG1lZGlhX2VudGl0eV9wYWRzX2luaXQoJmNzaTJkYy0+Y3NpMmRjX3NkLmVudGl0 eSwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NpMmRjLT52aWRlb19w aXBlID8gQ1NJMkRDX1BBRFNfTlVNIDogMSwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY3NpMmRjLT5wYWRzKTsNCj4+ICsgICAgIGlmIChyZXQgPCAwKSB7DQo+PiArICAg ICAgICAgICAgIGRldl9lcnIoZGV2LCAibWVkaWEgZW50aXR5IGluaXQgZmFpbGVkXG4iKTsNCj4+ ICsgICAgICAgICAgICAgZ290byBjc2kyZGNfcHJvYmVfY2xlYW51cF9lbnRpdHk7DQo+IA0KPiBT aG91bGQgeW91IGFsc28gY2xlYW4gdXAgdGhlIG5vdGlmaWVyIGluIHRoZSBlcnJvciBwYXRoID8N Cj4gDQo+PiArICAgICB9DQo+PiArDQo+PiArICAgICAvKiB0dXJuIHBvd2VyIG9uIHRvIHZhbGlk YXRlIGNhcGFiaWxpdGllcyAqLw0KPj4gKyAgICAgcmV0ID0gY3NpMmRjX3Bvd2VyKGNzaTJkYywg dHJ1ZSk7DQo+PiArICAgICBpZiAocmV0IDwgMCkNCj4+ICsgICAgICAgICAgICAgZ290byBjc2ky ZGNfcHJvYmVfY2xlYW51cF9lbnRpdHk7DQo+PiArDQo+PiArICAgICBwbV9ydW50aW1lX3NldF9h Y3RpdmUoZGV2KTsNCj4+ICsgICAgIHBtX3J1bnRpbWVfZW5hYmxlKGRldik7DQo+PiArICAgICB2 ZXIgPSBjc2kyZGNfcmVhZGwoY3NpMmRjLCBDU0kyRENfVkVSU0lPTik7DQo+PiArICAgICBwbV9y ZXF1ZXN0X2lkbGUoZGV2KTsNCj4+ICsNCj4+ICsgICAgIC8qDQo+PiArICAgICAgKiB3ZSBtdXN0 IHJlZ2lzdGVyIHRoZSBzdWJkZXYgYWZ0ZXIgUE0gcnVudGltZSBoYXMgYmVlbiByZXF1ZXN0ZWQs DQo+PiArICAgICAgKiBvdGhlcndpc2Ugd2UgbWlnaHQgYm91bmQgaW1tZWRpYXRlbHkgYW5kIHJl cXVlc3QgcG1fcnVudGltZV9yZXN1bWUNCj4+ICsgICAgICAqIGJlZm9yZSBydW50aW1lX2VuYWJs ZS4NCj4+ICsgICAgICAqLw0KPj4gKyAgICAgcmV0ID0gdjRsMl9hc3luY19yZWdpc3Rlcl9zdWJk ZXYoJmNzaTJkYy0+Y3NpMmRjX3NkKTsNCj4+ICsgICAgIGlmIChyZXQpIHsNCj4+ICsgICAgICAg ICAgICAgZGV2X2Vycihjc2kyZGMtPmRldiwgImZhaWxlZCB0byByZWdpc3RlciB0aGUgc3ViZGV2 aWNlXG4iKTsNCj4+ICsgICAgICAgICAgICAgZ290byBjc2kyZGNfcHJvYmVfY2xlYW51cF9lbnRp dHk7DQo+PiArICAgICB9DQo+PiArDQo+PiArICAgICBkZXZfaW5mbyhkZXYsICJNaWNyb2NoaXAg Q1NJMkRDIHZlcnNpb24gJXhcbiIsIHZlcik7DQo+PiArDQo+PiArICAgICByZXR1cm4gMDsNCj4+ ICsNCj4+ICtjc2kyZGNfcHJvYmVfY2xlYW51cF9lbnRpdHk6DQo+PiArICAgICBtZWRpYV9lbnRp dHlfY2xlYW51cCgmY3NpMmRjLT5jc2kyZGNfc2QuZW50aXR5KTsNCj4+ICsNCj4+ICsgICAgIHJl dHVybiByZXQ7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgY3NpMmRjX3JlbW92ZShzdHJ1 Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPj4gK3sNCj4+ICsgICAgIHN0cnVjdCBjc2kyZGNf ZGV2aWNlICpjc2kyZGMgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsNCj4+ICsNCj4+ICsg ICAgIHBtX3J1bnRpbWVfZGlzYWJsZSgmcGRldi0+ZGV2KTsNCj4+ICsNCj4+ICsgICAgIHY0bDJf YXN5bmNfdW5yZWdpc3Rlcl9zdWJkZXYoJmNzaTJkYy0+Y3NpMmRjX3NkKTsNCj4+ICsgICAgIGNz aTJkY19jbGVhbnVwX25vdGlmaWVyKGNzaTJkYyk7DQo+PiArICAgICBtZWRpYV9lbnRpdHlfY2xl YW51cCgmY3NpMmRjLT5jc2kyZGNfc2QuZW50aXR5KTsNCj4+ICsNCj4+ICsgICAgIHJldHVybiAw Ow0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW50IF9fbWF5YmVfdW51c2VkIGNzaTJkY19ydW50 aW1lX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQ0KPj4gK3sNCj4+ICsgICAgIHN0cnVjdCBj c2kyZGNfZGV2aWNlICpjc2kyZGMgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCj4+ICsNCj4+ICsg ICAgIHJldHVybiBjc2kyZGNfcG93ZXIoY3NpMmRjLCBmYWxzZSk7DQo+PiArfQ0KPj4gKw0KPj4g K3N0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgY3NpMmRjX3J1bnRpbWVfcmVzdW1lKHN0cnVjdCBk ZXZpY2UgKmRldikNCj4+ICt7DQo+PiArICAgICBzdHJ1Y3QgY3NpMmRjX2RldmljZSAqY3NpMmRj ID0gZGV2X2dldF9kcnZkYXRhKGRldik7DQo+PiArDQo+PiArICAgICByZXR1cm4gY3NpMmRjX3Bv d2VyKGNzaTJkYywgdHJ1ZSk7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg ZGV2X3BtX29wcyBjc2kyZGNfZGV2X3BtX29wcyA9IHsNCj4+ICsgICAgIFNFVF9SVU5USU1FX1BN X09QUyhjc2kyZGNfcnVudGltZV9zdXNwZW5kLCBjc2kyZGNfcnVudGltZV9yZXN1bWUsIE5VTEwp DQo+PiArfTsNCj4+ICsNCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBjc2ky ZGNfb2ZfbWF0Y2hbXSA9IHsNCj4+ICsgICAgIHsgLmNvbXBhdGlibGUgPSAibWljcm9jaGlwLHNh bWE3ZzUtY3NpMmRjIiB9LA0KPj4gKyAgICAgeyB9DQo+PiArfTsNCj4+ICsNCj4+ICtNT0RVTEVf REVWSUNFX1RBQkxFKG9mLCBjc2kyZGNfb2ZfbWF0Y2gpOw0KPj4gKw0KPj4gK3N0YXRpYyBzdHJ1 Y3QgcGxhdGZvcm1fZHJpdmVyIGNzaTJkY19kcml2ZXIgPSB7DQo+PiArICAgICAucHJvYmUgID0g Y3NpMmRjX3Byb2JlLA0KPj4gKyAgICAgLnJlbW92ZSA9IGNzaTJkY19yZW1vdmUsDQo+PiArICAg ICAuZHJpdmVyID0gew0KPj4gKyAgICAgICAgICAgICAubmFtZSA9ICAgICAgICAgICAgICAgICAi bWljcm9jaGlwLWNzaTJkYyIsDQo+PiArICAgICAgICAgICAgIC5wbSA9ICAgICAgICAgICAgICAg ICAgICZjc2kyZGNfZGV2X3BtX29wcywNCj4+ICsgICAgICAgICAgICAgLm9mX21hdGNoX3RhYmxl ID0gICAgICAgb2ZfbWF0Y2hfcHRyKGNzaTJkY19vZl9tYXRjaCksDQo+PiArICAgICB9LA0KPj4g K307DQo+PiArDQo+PiArbW9kdWxlX3BsYXRmb3JtX2RyaXZlcihjc2kyZGNfZHJpdmVyKTsNCj4+ ICsNCj4+ICtNT0RVTEVfQVVUSE9SKCJFdWdlbiBIcmlzdGV2IDxldWdlbi5ocmlzdGV2QG1pY3Jv Y2hpcC5jb20+Iik7DQo+PiArTU9EVUxFX0RFU0NSSVBUSU9OKCJNaWNyb2NoaXAgQ1NJMiBEZW11 eCBDb250cm9sbGVyIGRyaXZlciIpOw0KPj4gK01PRFVMRV9MSUNFTlNFKCJHUEwgdjIiKTsNCj4+ IC0tDQo+PiAyLjI1LjENCj4+DQoNCg==