Received: by 2002:a05:6a10:1287:0:0:0:0 with SMTP id d7csp6421896pxv; Thu, 29 Jul 2021 14:19:15 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwftiq+n0dRhPCTnZtJt0dFRHRDDnBhf2SJ9rqfI3b9V4YuCJkprLWkbPQdbRzuGagzCeVl X-Received: by 2002:a05:6e02:1a6d:: with SMTP id w13mr4800332ilv.299.1627593555415; Thu, 29 Jul 2021 14:19:15 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1627593555; cv=pass; d=google.com; s=arc-20160816; b=cbr/sRzi4a3EBGqOjERLcCAkxssrtMNio2e8E4t5A91F/mAcZpxlKc39lFAAmnhK/1 ZtgFeOeZMIFpUw4G25bbSwLrgQBa0y5ydBZ0QVkcpMpp03qzQmBBI20kNfXkxtmAe76x NTzcWfrh5MQ5c1NVWLg3bM9chKCYNVuS/PnSiPmCCZ33slNQfYIM0CNAqGc672cStGFy G6f6aGBSV6YTUnrX8LJKE4ZEo4M6cEz3IWiQnrIl/vXyT0P1hnzn2IGECP82bGCTrt3q chXGbHJ5/z1d+Vrff3QdCa8ULHOQirPDx17ttivy0LzQYP8ism6GujDICHYOGevt2Nds nIEA== 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; bh=rLZluyCGgYPAhhAn1fY/+d3qPj8w15m19lShz+70zvg=; b=FFxIDBF94aHjrZpOjdof50Va1C5bqdd03XgmyCsJuV8rLu1V383G2IIIhfafhwCIar xwBQ55ErdbJNZxw8bYfunVtA9cj2FTrcePFqjTljVaA0edzUKcNoNcrcHO6cLYGl/rUF X6COpSolwW6KCQldVHZ677Imuz1NfPQaX8YbgwXDpBfmg8OWSlbREzgytML9kM+7q1CF DPgDYYcZEKq9OOvnOoOtFyVW377AUtQGuxTLRa5A3NYXRSF6l1+a95FSUQwkuS13hJel peZE1y4dgHIxzlw8WhLh6DD5vlmxxfOAlQDasV2aLslU1MXVUiQAaIyc7BrqTJwd7Lek DmGg== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=f1fLL8C5; arc=pass (i=1 spf=pass spfdomain=intel.com dkim=pass dkdomain=intel.com dmarc=pass fromdomain=intel.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=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id x9si4414808jat.100.2021.07.29.14.18.49; Thu, 29 Jul 2021 14:19:15 -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=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=f1fLL8C5; arc=pass (i=1 spf=pass spfdomain=intel.com dkim=pass dkdomain=intel.com dmarc=pass fromdomain=intel.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=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233507AbhG2VRV (ORCPT + 99 others); Thu, 29 Jul 2021 17:17:21 -0400 Received: from mga18.intel.com ([134.134.136.126]:50673 "EHLO mga18.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229738AbhG2VRR (ORCPT ); Thu, 29 Jul 2021 17:17:17 -0400 X-IronPort-AV: E=McAfee;i="6200,9189,10060"; a="200191201" X-IronPort-AV: E=Sophos;i="5.84,279,1620716400"; d="scan'208";a="200191201" Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Jul 2021 14:17:12 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.84,279,1620716400"; d="scan'208";a="567367444" Received: from orsmsx601.amr.corp.intel.com ([10.22.229.14]) by orsmga004.jf.intel.com with ESMTP; 29 Jul 2021 14:17:12 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.10; Thu, 29 Jul 2021 14:17:12 -0700 Received: from orsmsx608.amr.corp.intel.com (10.22.229.21) by ORSMSX610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.10; Thu, 29 Jul 2021 14:17:11 -0700 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx608.amr.corp.intel.com (10.22.229.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.10 via Frontend Transport; Thu, 29 Jul 2021 14:17:11 -0700 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (104.47.58.108) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.10; Thu, 29 Jul 2021 14:17:10 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=iLD2p8wzGihLNYDQdfWyu5UvkY2X+gKviza5knN/52F95tP4Q27CNTHer566v+OfX53E4IA3bxRAnuUPnSWDCZBIJNMlaSxl8nqB5WJ5Pm+1S4Ul7jpVgB2GpoQueJW6fyaksdhjm4xBvtVPYpdffwqLjn5klGrikv0G9vmE43gzAGwZsYMccr07dIGsNDny1F/9pyBaHK0G/v8MkI4VKLSIJbE8+lh92L+/Sm6cbR4nSPbgVSZ0zct/suWbyMNeLfYxI6+K3RKtmjfzBw7/hFsG7VysQCVJvGaFjZYEk0KSWnVSXgHMnOaV45s7S0X1NHWeE0S73AQT7y6vE4aD5Q== 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-SenderADCheck; bh=rLZluyCGgYPAhhAn1fY/+d3qPj8w15m19lShz+70zvg=; b=B3IIy09shLpm0mHzmY5a0b8eHnpNS7Ox+/jorBS+TiXuR3Znvjoe8qraPz/w7TziApmcjxcRVHsRF6A5nBmnHrl5xV8rTsRmJW6acpKRmk9uAvg6syDctzYbWF63Z3C4v0IkB172nPmjjroxlFFjbOOyz4j/du1YvbopK8DLAbBqNywLFiNY1c21670b3ju9VFDg38wSxB8mV+5jSPFdMxFBqEFki0J3ekBUpNcVnSC77rfbSfdzZzwzgULfGlU2ALpjphhBYBhLubkIkdBpOBbs9gVrmqpChlTVwWC9UegeLqM/vgBFlbjzwKfhtpmHCc7S5jDO+6DeYBn0pdGRLw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=rLZluyCGgYPAhhAn1fY/+d3qPj8w15m19lShz+70zvg=; b=f1fLL8C5QQeDnyJs0csRdeIwvf5x3UnRtq0vB05JYrCv5xDLIkQg5lhM5PJDufeFJE9j7NcOPvkH/ye06adjxadR1ZEuEpy84i/1eZ8hGmE45th0JeiPpX0AF1rf9vp/J12FuJqt/XbGDKPXHU+8UqrLf6xL6gtFOsp8Oj6sh1M= Received: from SN6PR11MB2589.namprd11.prod.outlook.com (2603:10b6:805:53::12) by SN6PR11MB3133.namprd11.prod.outlook.com (2603:10b6:805:d2::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4373.17; Thu, 29 Jul 2021 21:17:06 +0000 Received: from SN6PR11MB2589.namprd11.prod.outlook.com ([fe80::6e:364a:dc09:3d35]) by SN6PR11MB2589.namprd11.prod.outlook.com ([fe80::6e:364a:dc09:3d35%5]) with mapi id 15.20.4373.021; Thu, 29 Jul 2021 21:17:06 +0000 From: "Winiarska, Iwona" To: "zweiss@equinix.com" CC: "corbet@lwn.net" , "jae.hyun.yoo@linux.intel.com" , "Lutomirski, Andy" , "linux-hwmon@vger.kernel.org" , "Luck, Tony" , "andrew@aj.id.au" , "mchehab@kernel.org" , "jdelvare@suse.com" , "linux-kernel@vger.kernel.org" , "mingo@redhat.com" , "devicetree@vger.kernel.org" , "tglx@linutronix.de" , "linux@roeck-us.net" , "linux-aspeed@lists.ozlabs.org" , "linux-doc@vger.kernel.org" , "yazen.ghannam@amd.com" , "robh+dt@kernel.org" , "openbmc@lists.ozlabs.org" , "bp@alien8.de" , "linux-arm-kernel@lists.infradead.org" , "pierre-louis.bossart@linux.intel.com" , "andriy.shevchenko@linux.intel.com" , "x86@kernel.org" , "gregkh@linuxfoundation.org" Subject: Re: [PATCH 09/14] peci: Add support for PECI device drivers Thread-Topic: [PATCH 09/14] peci: Add support for PECI device drivers Thread-Index: AQHXd2q8DON5fF1eD0ing5D46+2CZatXWA6AgAM3RYA= Date: Thu, 29 Jul 2021 21:17:06 +0000 Message-ID: <79f5b6ed4942ddeb66beea03907a58495376ccef.camel@intel.com> References: <20210712220447.957418-1-iwona.winiarska@intel.com> <20210712220447.957418-10-iwona.winiarska@intel.com> <20210727201028.GS8018@packtop> In-Reply-To: <20210727201028.GS8018@packtop> Accept-Language: en-US, pl-PL Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.40.3 (3.40.3-1.fc34) authentication-results: equinix.com; dkim=none (message not signed) header.d=none;equinix.com; dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: bef53142-fcff-4cbe-6ae7-08d952d637e9 x-ms-traffictypediagnostic: SN6PR11MB3133: x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: vkzxLcKo7QjLiLLbzwxu9AkUA51TfsKdPrJ25v6XWCmmc2xypaLpZ6HqrSnPcWVwVWmeGKsj0L4aKkN6KHp6W+naorEbI+SMFGR768/aCxy0Z2KxidDElG63eph2jzFB21yGX17TKdg03NUDRfsAfLD1wb/gQ0tCouGgvUKeOlXKhh819j17247ZRXwT6/uMmim7WMR7zFe5bC/rgaRPj/uKkkIKDpqCBOSXChyKVgDfBxobW4CKMZbw24MBO3BDCG8aywWznE61K8x6qE+xy2Oks2BXc7gIackTg7rS9vHLz129/aya+/RGjv976YC//Ie+uUCKTLuKkDhghak14JoU7mSwdSlg6dh7+m1jhKf6o7uRBKUkxWDuVEASZtuqwumusPp4dkJrgc6Zw4RhH83VTHwxwRU+E4RTm037K5mEAkIBC/FUEjBUwXguuwOIo4Hm08EWBkLiWBUOT+gbwWlRtSLKGZRSuJhVyfzE0F9lOmv8jH696WSu8tApaE6FpCntH/pWDI65YITB2BNFbYEzcjMhYRbXdhczJ5htc5eaX89wxEFSdocEakENIO3qKDnJB4UsKdH5KPuSfVNXtob2kRrfo4BynQisljGT7OkwG0iRpxRyw3c/YjKl8uRI9b6w0b6GaoqwTNLJiu17dPhejZ2urFyl41kbNQrk/GbUOz7r0+q0XZpS1hrwUrVLu9Ba6Xh6OzNzQC8LPEyJhg== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN6PR11MB2589.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(6486002)(122000001)(38100700002)(6506007)(6916009)(86362001)(71200400001)(2616005)(508600001)(26005)(6512007)(36756003)(91956017)(30864003)(54906003)(76116006)(66946007)(4326008)(64756008)(316002)(186003)(66476007)(8936002)(2906002)(5660300002)(38070700005)(66556008)(66446008)(83380400001)(8676002)(7416002)(579004)(559001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?VE1uV0t4a0huYjBFMFdHMDN3SkpwdlN3Sk92NkZuaTVhSVE4TFNBRVlqUU9K?= =?utf-8?B?TjR2K09TNmVtRklLRno4UmhZVjFrbFcyMnBNaVhOR0E4eU43ZE1pM2ZKSkVs?= =?utf-8?B?eGVBZjNxVFJzK3I1eURYVFdRMXNoVHV0U3JxcVhEdDgzVDBidXZsQUo1ZzdM?= =?utf-8?B?elpFdzZPaU5DMU5tcnM4NUlGUVFwUDR3M0hnQVI4YXFPaUF3eVJsQThaSDdw?= =?utf-8?B?ZmIzZlA5UDFpWFNJdE1BaHlGa1JPUzhvc3Nic2hLc2RzTWVsKzJXTzl2UGpR?= =?utf-8?B?S3FPL3dwb1Zvbk8xdndPZ05JY0c5d1lWZEFBY0twR3VheXZRMUpEUkd6cXJC?= =?utf-8?B?SVlocVdlT0lTYWZIVzRBMDNBd2c2cEJySUhtVXhtdmJtcTIrMlIwSlN3MTJH?= =?utf-8?B?a0wvNWV0dStwMkVRL1FMVXFaVTEvR3BWL1JFME5TNTNmd0U3UzlIbGZWa20z?= =?utf-8?B?akhHNjZlTDV3VDlPRmptR0hUeW5zM0t3ZGlZVXgwQ25tUWtlRWxJQ3pmaHlK?= =?utf-8?B?R1JuK25ZZFZLUDN0bFNtaHRXTkhxb0VMZzExbjJjZmhXRE9qVjFsS2xXNDND?= =?utf-8?B?Vk9FbzZ4QXN1SWZVaDdXTHU0RnhDQWFWT2duSTVNUDY1Ukkrc3BFcUk0Um85?= =?utf-8?B?WWpLT241QU01c1IrTmY5aUFhR2VzdU5ZTndjbTNOZ2hDWHlQZVlOak1DcUg5?= =?utf-8?B?eEljS2Z1OHVXeGtHUWR0UmxFY3g5SnhkdGpWZGRtcEYzZmQwbU45YmlEQjI2?= =?utf-8?B?Y0U5TktCS0VaUXFacXdWTVh3MlkwcVhudkEzNGdmNkFnSmZGdmd1VGRCWDEz?= =?utf-8?B?Zm9hMTY1b0U5TlN3eGg1TTVHNFZXcjBjbmJlMyt5blg4UmxFYm5sNjlPYS9S?= =?utf-8?B?bVBud3F3Ly9OMWp2eGNzanErUWpXOXMrUlpMZkZqalBXZFN4VmNScXNodkdt?= =?utf-8?B?VGVrdmJRbmdkdUdzRzh5bkphU3BSeUd4dnpseEJnWHJhRlgyMEk4OWhtdkdF?= =?utf-8?B?dlEvRzdsZkttbUJTR1doRUtMTmNuUWU3ckZQRWFKSDZOQ245eUFwQXQ1ZXh0?= =?utf-8?B?ZktlZG1sbGE2VHM3Mzd5LzBtWnhwQkxKTW9PSWFwMER6RzZYUTE5dVA4MWVX?= =?utf-8?B?ZWdUakxwNXd2cEl6dTVuOThNVDFDSUp3OGpFeHJqZUhkM0ZrQTVDcUVmaFli?= =?utf-8?B?emZXWUt2M1ViR2wvcDNEbDVOMWk1dzVGZ3hhZzNsOTdPaHlidjF5WnpPTlVk?= =?utf-8?B?OWNwb3RxQkRSaWZCN1BuUThoRUVpTlhjeGNXMi9zdHFMR3h3ZHdYWVRHZ3Vy?= =?utf-8?B?SmhMcnFIdU5oYnNsSm0rSitMUks0N21ROHpIQTg1WDcwNERDcjc1cnBiRkFx?= =?utf-8?B?MEdDSTl1UWI1V2l2YjFiZEtSZndDYWUwM1pYT3AyL2dONE9vT3AxSEF4SVor?= =?utf-8?B?WGV0ek9zTGt5M01RZzFaM1Vqckg0UG9ocDJLT3h3d1hYc3dRWFp5WFhFTjZk?= =?utf-8?B?Zmt1SWFIS1p2azBJeC9WMGhMU1cyaTg2ZzFUSThEMXo3bUd3eU5nd0dkdk1s?= =?utf-8?B?WHpsUmpMK3VvRi8yQ3paUS9lRnJCaVY5dFd0a1prU2Y1V2Vtai9LTnk1Q25F?= =?utf-8?B?MU5PMCtETE1QOVZLL09SYldEK1lvb1Y3cm5aNXorWkJnT083ZVVJRW5XZVR6?= =?utf-8?B?SmtjTmRnL090bWZZRXpqN2N0RkxqTlJCRUZ4M01XWC9yQktQaVlCU2pBT2tB?= =?utf-8?B?NkN6RkVQRjc5SElRRStUYjdET3FBUjA4cHJoVEdlZFpZWTBoOG9icXlSRzB1?= =?utf-8?B?Y01ibThhSERXcHo4Vm5TQT09?= Content-Type: text/plain; charset="utf-8" Content-ID: <82B98605FA54AD429245747F7FC2758C@namprd11.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SN6PR11MB2589.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: bef53142-fcff-4cbe-6ae7-08d952d637e9 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Jul 2021 21:17:06.3099 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: hh2zfOEFu4QWKve7xl+N9iC7//pIZSRZOBKoK62wyqeQ7WwuDv73bn61+cyPy7d/bDAhZNn0NkwgiBtCCWhpd0abf0jheg0NuNU/tbqvon8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR11MB3133 X-OriginatorOrg: intel.com Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org T24gVHVlLCAyMDIxLTA3LTI3IGF0IDIwOjEwICswMDAwLCBaZXYgV2Vpc3Mgd3JvdGU6Cj4gT24g TW9uLCBKdWwgMTIsIDIwMjEgYXQgMDU6MDQ6NDJQTSBDRFQsIEl3b25hIFdpbmlhcnNrYSB3cm90 ZToKPiA+IEhlcmUgd2UncmUgYWRkaW5nIHN1cHBvcnQgZm9yIFBFQ0kgZGV2aWNlIGRyaXZlcnMs IHdoaWNoIHVubGlrZSBQRUNJCj4gPiBjb250cm9sbGVyIGRyaXZlcnMgYXJlIGFjdHVhbGx5IGFi bGUgdG8gcHJvdmlkZSBmdW5jdGlvbmFsaXRpZXMgdG8KPiA+IHVzZXJzcGFjZS4KPiA+IAo+ID4g V2UncmUgYWxzbyBleHRlbmRpbmcgcGVjaV9yZXF1ZXN0IEFQSSB0byBhbGxvdyBxdWVyeWluZyBt b3JlIGRldGFpbHMKPiA+IGFib3V0IFBFQ0kgZGV2aWNlIChlLmcuIG1vZGVsL2ZhbWlseSksIHRo YXQncyBnb2luZyB0byBiZSB1c2VkIHRvIGZpbmQKPiA+IGEgY29tcGF0aWJsZSBwZWNpX2RyaXZl ci4KPiA+IAo+ID4gU2lnbmVkLW9mZi1ieTogSXdvbmEgV2luaWFyc2thIDxpd29uYS53aW5pYXJz a2FAaW50ZWwuY29tPgo+ID4gUmV2aWV3ZWQtYnk6IFBpZXJyZS1Mb3VpcyBCb3NzYXJ0IDxwaWVy cmUtbG91aXMuYm9zc2FydEBsaW51eC5pbnRlbC5jb20+Cj4gPiAtLS0KPiA+IGRyaXZlcnMvcGVj aS9LY29uZmlnwqDCoMKgIHzCoMKgIDEgKwo+ID4gZHJpdmVycy9wZWNpL2NvcmUuY8KgwqDCoMKg IHzCoCA0OSArKysrKysrKysKPiA+IGRyaXZlcnMvcGVjaS9kZXZpY2UuY8KgwqAgfMKgIDk5ICsr KysrKysrKysrKysrKysrKwo+ID4gZHJpdmVycy9wZWNpL2ludGVybmFsLmggfMKgIDc1ICsrKysr KysrKysrKysrCj4gPiBkcml2ZXJzL3BlY2kvcmVxdWVzdC5jwqAgfCAyMTcgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ID4gaW5jbHVkZS9saW51eC9wZWNpLmjCoMKg wqAgfMKgIDE5ICsrKysKPiA+IGxpYi9LY29uZmlnwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzC oMKgIDIgKy0KPiA+IDcgZmlsZXMgY2hhbmdlZCwgNDYxIGluc2VydGlvbnMoKyksIDEgZGVsZXRp b24oLSkKPiA+IAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGVjaS9LY29uZmlnIGIvZHJpdmVy cy9wZWNpL0tjb25maWcKPiA+IGluZGV4IDBkMGVlODAwOTcxMy4uMjdjMzE1MzU4NDNjIDEwMDY0 NAo+ID4gLS0tIGEvZHJpdmVycy9wZWNpL0tjb25maWcKPiA+ICsrKyBiL2RyaXZlcnMvcGVjaS9L Y29uZmlnCj4gPiBAQCAtMiw2ICsyLDcgQEAKPiA+IAo+ID4gbWVudWNvbmZpZyBQRUNJCj4gPiDC oMKgwqDCoMKgwqDCoMKgdHJpc3RhdGUgIlBFQ0kgc3VwcG9ydCIKPiA+ICvCoMKgwqDCoMKgwqDC oHNlbGVjdCBHRU5FUklDX0xJQl9YODYKPiA+IMKgwqDCoMKgwqDCoMKgwqBoZWxwCj4gPiDCoMKg wqDCoMKgwqDCoMKgwqAgVGhlIFBsYXRmb3JtIEVudmlyb25tZW50IENvbnRyb2wgSW50ZXJmYWNl IChQRUNJKSBpcyBhbiBpbnRlcmZhY2UKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoCB0aGF0IHByb3Zp ZGVzIGEgY29tbXVuaWNhdGlvbiBjaGFubmVsIHRvIEludGVsIHByb2Nlc3NvcnMgYW5kCj4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9wZWNpL2NvcmUuYyBiL2RyaXZlcnMvcGVjaS9jb3JlLmMKPiA+ IGluZGV4IGFlN2E5NTcyY2RmMy4uOTQ0MjZiN2YyNjE4IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVy cy9wZWNpL2NvcmUuYwo+ID4gKysrIGIvZHJpdmVycy9wZWNpL2NvcmUuYwo+ID4gQEAgLTE0Myw4 ICsxNDMsNTcgQEAgdm9pZCBwZWNpX2NvbnRyb2xsZXJfcmVtb3ZlKHN0cnVjdCBwZWNpX2NvbnRy b2xsZXIKPiA+ICpjb250cm9sbGVyKQo+ID4gfQo+ID4gRVhQT1JUX1NZTUJPTF9OU19HUEwocGVj aV9jb250cm9sbGVyX3JlbW92ZSwgUEVDSSk7Cj4gPiAKPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0 IHBlY2lfZGV2aWNlX2lkICoKPiA+ICtwZWNpX2J1c19tYXRjaF9kZXZpY2VfaWQoY29uc3Qgc3Ry dWN0IHBlY2lfZGV2aWNlX2lkICppZCwgc3RydWN0Cj4gPiBwZWNpX2RldmljZSAqZGV2aWNlKQo+ ID4gK3sKPiA+ICvCoMKgwqDCoMKgwqDCoHdoaWxlIChpZC0+ZmFtaWx5ICE9IDApIHsKPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoaWQtPmZhbWlseSA9PSBkZXZpY2UtPmlu Zm8uZmFtaWx5ICYmCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlk LT5tb2RlbCA9PSBkZXZpY2UtPmluZm8ubW9kZWwpCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiBpZDsKPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBpZCsrOwo+ID4gK8KgwqDCoMKgwqDCoMKgfQo+ID4gKwo+ID4gK8KgwqDC oMKgwqDCoMKgcmV0dXJuIE5VTEw7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBpbnQgcGVjaV9i dXNfZGV2aWNlX21hdGNoKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9kcml2ZXIK PiA+ICpkcnYpCj4gPiArewo+ID4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IHBlY2lfZGV2aWNlICpk ZXZpY2UgPSB0b19wZWNpX2RldmljZShkZXYpOwo+ID4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IHBl Y2lfZHJpdmVyICpwZWNpX2RydiA9IHRvX3BlY2lfZHJpdmVyKGRydik7Cj4gPiArCj4gPiArwqDC oMKgwqDCoMKgwqBpZiAoZGV2LT50eXBlICE9ICZwZWNpX2RldmljZV90eXBlKQo+ID4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+ID4gKwo+ID4gK8KgwqDCoMKgwqDC oMKgaWYgKHBlY2lfYnVzX21hdGNoX2RldmljZV9pZChwZWNpX2Rydi0+aWRfdGFibGUsIGRldmlj ZSkpCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIDE7Cj4gPiArCj4g PiArwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGludCBw ZWNpX2J1c19kZXZpY2VfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KQo+ID4gK3sKPiA+ICvCoMKg wqDCoMKgwqDCoHN0cnVjdCBwZWNpX2RldmljZSAqZGV2aWNlID0gdG9fcGVjaV9kZXZpY2UoZGV2 KTsKPiA+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBwZWNpX2RyaXZlciAqZHJpdmVyID0gdG9fcGVj aV9kcml2ZXIoZGV2LT5kcml2ZXIpOwo+ID4gKwo+ID4gK8KgwqDCoMKgwqDCoMKgcmV0dXJuIGRy aXZlci0+cHJvYmUoZGV2aWNlLCBwZWNpX2J1c19tYXRjaF9kZXZpY2VfaWQoZHJpdmVyLQo+ID4g PmlkX3RhYmxlLCBkZXZpY2UpKTsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGludCBwZWNpX2J1 c19kZXZpY2VfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldikKPiA+ICt7Cj4gPiArwqDCoMKgwqDC oMKgwqBzdHJ1Y3QgcGVjaV9kZXZpY2UgKmRldmljZSA9IHRvX3BlY2lfZGV2aWNlKGRldik7Cj4g PiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgcGVjaV9kcml2ZXIgKmRyaXZlciA9IHRvX3BlY2lfZHJp dmVyKGRldi0+ZHJpdmVyKTsKPiA+ICsKPiA+ICvCoMKgwqDCoMKgwqDCoGlmIChkcml2ZXItPnJl bW92ZSkKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkcml2ZXItPnJlbW92ZShk ZXZpY2UpOwo+ID4gKwo+ID4gK8KgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gPiArfQo+ID4gKwo+ ID4gc3RydWN0IGJ1c190eXBlIHBlY2lfYnVzX3R5cGUgPSB7Cj4gPiDCoMKgwqDCoMKgwqDCoMKg Lm5hbWXCoMKgwqDCoMKgwqDCoMKgwqDCoMKgPSAicGVjaSIsCj4gPiArwqDCoMKgwqDCoMKgwqAu bWF0Y2jCoMKgwqDCoMKgwqDCoMKgwqDCoD0gcGVjaV9idXNfZGV2aWNlX21hdGNoLAo+ID4gK8Kg wqDCoMKgwqDCoMKgLnByb2JlwqDCoMKgwqDCoMKgwqDCoMKgwqA9IHBlY2lfYnVzX2RldmljZV9w cm9iZSwKPiA+ICvCoMKgwqDCoMKgwqDCoC5yZW1vdmXCoMKgwqDCoMKgwqDCoMKgwqA9IHBlY2lf YnVzX2RldmljZV9yZW1vdmUsCj4gPiDCoMKgwqDCoMKgwqDCoMKgLmJ1c19ncm91cHPCoMKgwqDC oMKgPSBwZWNpX2J1c19ncm91cHMsCj4gPiB9Owo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9wZWNpL2RldmljZS5jIGIvZHJpdmVycy9wZWNpL2RldmljZS5jCj4gPiBpbmRleCAxMTI0ODYy MjExZTIuLjhjNGJkMWViYmMyOSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvcGVjaS9kZXZpY2Uu Ywo+ID4gKysrIGIvZHJpdmVycy9wZWNpL2RldmljZS5jCj4gPiBAQCAtMSwxMSArMSw3OSBAQAo+ ID4gLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQo+ID4gLy8gQ29weXJp Z2h0IChjKSAyMDE4LTIwMjEgSW50ZWwgQ29ycG9yYXRpb24KPiA+IAo+ID4gKyNpbmNsdWRlIDxs aW51eC9iaXRmaWVsZC5oPgo+ID4gI2luY2x1ZGUgPGxpbnV4L3BlY2kuaD4KPiA+ICNpbmNsdWRl IDxsaW51eC9zbGFiLmg+Cj4gPiArI2luY2x1ZGUgPGxpbnV4L3g4Ni9jcHUuaD4KPiA+IAo+ID4g I2luY2x1ZGUgImludGVybmFsLmgiCj4gPiAKPiA+ICsjZGVmaW5lIFJFVklTSU9OX05VTV9NQVNL IEdFTk1BU0soMTUsIDgpCj4gPiArc3RhdGljIGludCBwZWNpX2dldF9yZXZpc2lvbihzdHJ1Y3Qg cGVjaV9kZXZpY2UgKmRldmljZSwgdTggKnJldmlzaW9uKQo+ID4gK3sKPiA+ICvCoMKgwqDCoMKg wqDCoHN0cnVjdCBwZWNpX3JlcXVlc3QgKnJlcTsKPiA+ICvCoMKgwqDCoMKgwqDCoHU2NCBkaWI7 Cj4gPiArCj4gPiArwqDCoMKgwqDCoMKgwqByZXEgPSBwZWNpX2dldF9kaWIoZGV2aWNlKTsKPiA+ ICvCoMKgwqDCoMKgwqDCoGlmIChJU19FUlIocmVxKSkKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqByZXR1cm4gUFRSX0VSUihyZXEpOwo+ID4gKwo+ID4gK8KgwqDCoMKgwqDCoMKg ZGliID0gcGVjaV9yZXF1ZXN0X2RhdGFfZGliKHJlcSk7Cj4gPiArwqDCoMKgwqDCoMKgwqBpZiAo ZGliID09IDApIHsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBwZWNpX3JlcXVl c3RfZnJlZShyZXEpOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiAt RUlPOwo+IAo+IEFueSBwYXJ0aWN1bGFyIHJlYXNvbiB0byBjaGVjayBmb3IgemVybyBzcGVjaWZp Y2FsbHkgaGVyZT/CoCBJdCBsb29rcwo+IGxpa2UgdGhhdCB3b3VsZCBiZSBhIGNhc2Ugd2hlcmUg dGhlIGhvc3QgQ1BVIHJlc3BvbmRzIGFuZCBldmVyeXRoaW5nJ3MKPiBvdGhlcndpc2UgZmluZSwg YnV0IHRoZSBob3N0IGp1c3QgaGFwcGVuZWQgdG8gc2VuZCBiYWNrIGEgYnVuY2ggb2YgemVyb3MK PiBmb3Igd2hhdGV2ZXIgcmVhc29uIC0tIHdoaWNoIG1heSBub3QgYmUgYSB2YWxpZCBQRUNJIHJl dmlzaW9uIG51bWJlciwKPiBidXQgaWYgaXQgc2VudCBiYWNrIGEgYnVuY2ggb2YgMHhmZiBieXRl cyBpbnN0ZWFkIHdvdWxkbid0IHRoYXQgYmUKPiBlcXVhbGx5IGludmFsaWQ/CgpUaGUgcmVzcG9u c2Ugd2l0aCBhbGwgMCdzIGlzIHBvc3NpYmxlIChhbmQgZGVmaW5lZCkgaW4gY2VydGFpbiBkZXZp Y2Ugc3RhdGVzLiBJZgp0aGF0IGhhcHBlbnMgLSB3ZSBkb24ndCB3YW50IHRvIGNvbnRpbnVlIGFk ZGluZyB0aGUgZGV2aWNlICh3aXRoICJpbnZhbGlkIgpyZXZpc2lvbiAwKSwgd2UganVzdCB3YW50 IHRvIHJldHVybiBlcnJvci4KCj4gCj4gQWxzbywgZ2l2ZW4gdGhhdCB0aGUgZG9jcyAodGhlIG9u ZXMgSSBoYXZlLCBhdCBsZWFzdCkgZGVzY3JpYmUgdGhlIERJQgo+IGFzIGEgY29sbGVjdGlvbiBv ZiBpbmRpdmlkdWFsIGJ5dGVzLCBkZWFsaW5nIHdpdGggaXQgYXMgYSBjb21iaW5lZCB1NjQKPiBz ZWVtcyBhIGJpdCBjb25mdXNpbmcgdG8gbWUgLS0gY291bGQgd2UganVzdCByZXR1cm4gcmVxLT5y eC5idWZbMV0KPiBpbnN0ZWFkPwoKR2V0RElCIHJldHVybnMgOC1ieXRlIHJlc3BvbnNlLCB3aGlj aCBpcyB3aHkgd2UncmUgdHJlYXRpbmcgaXQgaW4gdGhpcyB3YXkKKHNpbWlsYXIgdG8gb3RoZXIg Y29tbWFuZHMpLiBXZSdyZSBwdWxsaW5nIG91dCB0aGUgd2hvbGUgcmVzcG9uc2UgYW5kIHVzZQpG SUVMRF9HRVQgdG8gb2J0YWluIHRoZSBkYXRhIHdlIG5lZWQuCgo+IAo+ID4gK8KgwqDCoMKgwqDC oMKgfQo+ID4gKwo+ID4gK8KgwqDCoMKgwqDCoMKgKnJldmlzaW9uID0gRklFTERfR0VUKFJFVklT SU9OX05VTV9NQVNLLCBkaWIpOwo+ID4gKwo+ID4gK8KgwqDCoMKgwqDCoMKgcGVjaV9yZXF1ZXN0 X2ZyZWUocmVxKTsKPiA+ICsKPiA+ICvCoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+ID4gK30KPiA+ ICsKPiA+ICtzdGF0aWMgaW50IHBlY2lfZ2V0X2NwdV9pZChzdHJ1Y3QgcGVjaV9kZXZpY2UgKmRl dmljZSwgdTMyICpjcHVfaWQpCj4gPiArewo+ID4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IHBlY2lf cmVxdWVzdCAqcmVxOwo+ID4gK8KgwqDCoMKgwqDCoMKgaW50IHJldDsKPiA+ICsKPiA+ICvCoMKg wqDCoMKgwqDCoHJlcSA9IHBlY2lfcGtnX2NmZ19yZWFkbChkZXZpY2UsIFBFQ0lfUENTX1BLR19J RCwKPiA+IFBFQ0lfUEtHX0lEX0NQVV9JRCk7Cj4gPiArwqDCoMKgwqDCoMKgwqBpZiAoSVNfRVJS KHJlcSkpCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIFBUUl9FUlIo cmVxKTsKPiA+ICsKPiA+ICvCoMKgwqDCoMKgwqDCoHJldCA9IHBlY2lfcmVxdWVzdF9zdGF0dXMo cmVxKTsKPiA+ICvCoMKgwqDCoMKgwqDCoGlmIChyZXQpCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgZ290byBvdXRfcmVxX2ZyZWU7Cj4gPiArCj4gPiArwqDCoMKgwqDCoMKgwqAq Y3B1X2lkID0gcGVjaV9yZXF1ZXN0X2RhdGFfcmVhZGwocmVxKTsKPiA+ICtvdXRfcmVxX2ZyZWU6 Cj4gCj4gQXMgc3VnZ2VzdGVkIG9uIHBhdGNoICM4LCBJIHRoaW5rIGl0IG1pZ2h0IGJlIGNsZWFu ZXIgdG8gc3RhY2stYWxsb2NhdGUKPiBzdHJ1Y3QgcGVjaV9yZXF1ZXN0LCB3aGljaCB3b3VsZCBv YnZpYXRlIHRoZSBuZWVkIGZvciBleHBsaWNpdCBmcmVlCj4gY2FsbHMgaW4gZnVuY3Rpb25zIGxp a2UgdGhpcyBhbmQgaGVuY2UgbWlnaHQgc2ltcGxpZnkgaXQgYXdheSBlbnRpcmVseSwKPiBidXQg aWYgdGhpcyBkb2VzIHJlbWFpbiBsaWtlIHRoaXMgd2UgY291bGQganVzdCBkbwo+IAo+IMKgwqDC oMKgwqDCoMKgwqBpZiAoIXJldCkKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCpj cHVfaWQgPSBwZWNpX3JlcXVlc3RfZGF0YV9yZWFkbChyZXEpOwo+IAo+IGluc3RlYWQgb2YgdXNp bmcgYSBnb3RvIHRvIHNraXAgYSBzaW5nbGUgbGluZS4KClBsZWFzZSwgc2VlIG15IHJlc3BvbnNl IG9uIHBhdGNoIDguCgpJIHdvdWxkIHByZWZlciB0byBvcGVyYXRlIG9uIGFsbG9jYXRlZCBvYmpl Y3RzIHJhdGhlciB0aGFuIG9uIGxvY2FsIHZhcmlhYmxlcyBpbgpjYXNlIG9mIHBlY2kgcmVxdWVz dHMuCgo+IAo+ID4gK8KgwqDCoMKgwqDCoMKgcGVjaV9yZXF1ZXN0X2ZyZWUocmVxKTsKPiA+ICsK PiA+ICvCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBp bnQgcGVjaV9kZXZpY2VfaW5mb19pbml0KHN0cnVjdCBwZWNpX2RldmljZSAqZGV2aWNlKQo+ID4g K3sKPiA+ICvCoMKgwqDCoMKgwqDCoHU4IHJldmlzaW9uOwo+ID4gK8KgwqDCoMKgwqDCoMKgdTMy IGNwdV9pZDsKPiA+ICvCoMKgwqDCoMKgwqDCoGludCByZXQ7Cj4gPiArCj4gPiArwqDCoMKgwqDC oMKgwqByZXQgPSBwZWNpX2dldF9jcHVfaWQoZGV2aWNlLCAmY3B1X2lkKTsKPiA+ICvCoMKgwqDC oMKgwqDCoGlmIChyZXQpCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJu IHJldDsKPiA+ICsKPiA+ICvCoMKgwqDCoMKgwqDCoGRldmljZS0+aW5mby5mYW1pbHkgPSB4ODZf ZmFtaWx5KGNwdV9pZCk7Cj4gPiArwqDCoMKgwqDCoMKgwqBkZXZpY2UtPmluZm8ubW9kZWwgPSB4 ODZfbW9kZWwoY3B1X2lkKTsKPiA+ICsKPiA+ICvCoMKgwqDCoMKgwqDCoHJldCA9IHBlY2lfZ2V0 X3JldmlzaW9uKGRldmljZSwgJnJldmlzaW9uKTsKPiA+ICvCoMKgwqDCoMKgwqDCoGlmIChyZXQp Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiA+ICvCoMKg wqDCoMKgwqDCoGRldmljZS0+aW5mby5wZWNpX3JldmlzaW9uID0gcmV2aXNpb247Cj4gPiArCj4g PiArwqDCoMKgwqDCoMKgwqBkZXZpY2UtPmluZm8uc29ja2V0X2lkID0gZGV2aWNlLT5hZGRyIC0g UEVDSV9CQVNFX0FERFI7Cj4gPiArCj4gPiArwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiA+ICt9 Cj4gPiArCj4gPiBzdGF0aWMgaW50IHBlY2lfZGV0ZWN0KHN0cnVjdCBwZWNpX2NvbnRyb2xsZXIg KmNvbnRyb2xsZXIsIHU4IGFkZHIpCj4gPiB7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHBl Y2lfcmVxdWVzdCAqcmVxOwo+ID4gQEAgLTc1LDYgKzE0MywxMCBAQCBpbnQgcGVjaV9kZXZpY2Vf Y3JlYXRlKHN0cnVjdCBwZWNpX2NvbnRyb2xsZXIKPiA+ICpjb250cm9sbGVyLCB1OCBhZGRyKQo+ ID4gwqDCoMKgwqDCoMKgwqDCoGRldmljZS0+ZGV2LmJ1cyA9ICZwZWNpX2J1c190eXBlOwo+ID4g wqDCoMKgwqDCoMKgwqDCoGRldmljZS0+ZGV2LnR5cGUgPSAmcGVjaV9kZXZpY2VfdHlwZTsKPiA+ IAo+ID4gK8KgwqDCoMKgwqDCoMKgcmV0ID0gcGVjaV9kZXZpY2VfaW5mb19pbml0KGRldmljZSk7 Cj4gPiArwqDCoMKgwqDCoMKgwqBpZiAocmV0KQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGdvdG8gZXJyX2ZyZWU7Cj4gPiArCj4gPiDCoMKgwqDCoMKgwqDCoMKgcmV0ID0gZGV2 X3NldF9uYW1lKCZkZXZpY2UtPmRldiwgIiVkLSUwMngiLCBjb250cm9sbGVyLT5pZCwgZGV2aWNl LQo+ID4gPmFkZHIpOwo+ID4gwqDCoMKgwqDCoMKgwqDCoGlmIChyZXQpCj4gPiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdvdG8gZXJyX2ZyZWU7Cj4gPiBAQCAtOTgsNiArMTcwLDMz IEBAIHZvaWQgcGVjaV9kZXZpY2VfZGVzdHJveShzdHJ1Y3QgcGVjaV9kZXZpY2UgKmRldmljZSkK PiA+IMKgwqDCoMKgwqDCoMKgwqBkZXZpY2VfdW5yZWdpc3RlcigmZGV2aWNlLT5kZXYpOwo+ID4g fQo+ID4gCj4gPiAraW50IF9fcGVjaV9kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IHBlY2lfZHJpdmVy ICpkcml2ZXIsIHN0cnVjdCBtb2R1bGUKPiA+ICpvd25lciwKPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb25zdCBjaGFyICptb2RfbmFtZSkK PiA+ICt7Cj4gPiArwqDCoMKgwqDCoMKgwqBkcml2ZXItPmRyaXZlci5idXMgPSAmcGVjaV9idXNf dHlwZTsKPiA+ICvCoMKgwqDCoMKgwqDCoGRyaXZlci0+ZHJpdmVyLm93bmVyID0gb3duZXI7Cj4g PiArwqDCoMKgwqDCoMKgwqBkcml2ZXItPmRyaXZlci5tb2RfbmFtZSA9IG1vZF9uYW1lOwo+ID4g Kwo+ID4gK8KgwqDCoMKgwqDCoMKgaWYgKCFkcml2ZXItPnByb2JlKSB7Cj4gPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgcHJfZXJyKCJwZWNpOiB0cnlpbmcgdG8gcmVnaXN0ZXIgZHJp dmVyIHdpdGhvdXQgcHJvYmUKPiA+IGNhbGxiYWNrXG4iKTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqByZXR1cm4gLUVJTlZBTDsKPiA+ICvCoMKgwqDCoMKgwqDCoH0KPiA+ICsK PiA+ICvCoMKgwqDCoMKgwqDCoGlmICghZHJpdmVyLT5pZF90YWJsZSkgewo+ID4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoHByX2VycigicGVjaTogdHJ5aW5nIHRvIHJlZ2lzdGVyIGRy aXZlciB3aXRob3V0IGRldmljZSBpZAo+ID4gdGFibGVcbiIpOwo+ID4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoHJldHVybiAtRUlOVkFMOwo+ID4gK8KgwqDCoMKgwqDCoMKgfQo+ID4g Kwo+ID4gK8KgwqDCoMKgwqDCoMKgcmV0dXJuIGRyaXZlcl9yZWdpc3RlcigmZHJpdmVyLT5kcml2 ZXIpOwo+ID4gK30KPiA+ICtFWFBPUlRfU1lNQk9MX05TX0dQTChfX3BlY2lfZHJpdmVyX3JlZ2lz dGVyLCBQRUNJKTsKPiA+ICsKPiA+ICt2b2lkIHBlY2lfZHJpdmVyX3VucmVnaXN0ZXIoc3RydWN0 IHBlY2lfZHJpdmVyICpkcml2ZXIpCj4gPiArewo+ID4gK8KgwqDCoMKgwqDCoMKgZHJpdmVyX3Vu cmVnaXN0ZXIoJmRyaXZlci0+ZHJpdmVyKTsKPiA+ICt9Cj4gPiArRVhQT1JUX1NZTUJPTF9OU19H UEwocGVjaV9kcml2ZXJfdW5yZWdpc3RlciwgUEVDSSk7Cj4gPiArCj4gPiBzdGF0aWMgdm9pZCBw ZWNpX2RldmljZV9yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldikKPiA+IHsKPiA+IMKgwqDCoMKg wqDCoMKgwqBzdHJ1Y3QgcGVjaV9kZXZpY2UgKmRldmljZSA9IHRvX3BlY2lfZGV2aWNlKGRldik7 Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9wZWNpL2ludGVybmFsLmggYi9kcml2ZXJzL3BlY2kv aW50ZXJuYWwuaAo+ID4gaW5kZXggNmIxMzlhZGFmNmI4Li5jODkxYzkzZTA3N2EgMTAwNjQ0Cj4g PiAtLS0gYS9kcml2ZXJzL3BlY2kvaW50ZXJuYWwuaAo+ID4gKysrIGIvZHJpdmVycy9wZWNpL2lu dGVybmFsLmgKPiA+IEBAIC0xOSw2ICsxOSwzNCBAQCBzdHJ1Y3QgcGVjaV9yZXF1ZXN0Owo+ID4g c3RydWN0IHBlY2lfcmVxdWVzdCAqcGVjaV9yZXF1ZXN0X2FsbG9jKHN0cnVjdCBwZWNpX2Rldmlj ZSAqZGV2aWNlLCB1OAo+ID4gdHhfbGVuLCB1OCByeF9sZW4pOwo+ID4gdm9pZCBwZWNpX3JlcXVl c3RfZnJlZShzdHJ1Y3QgcGVjaV9yZXF1ZXN0ICpyZXEpOwo+ID4gCj4gPiAraW50IHBlY2lfcmVx dWVzdF9zdGF0dXMoc3RydWN0IHBlY2lfcmVxdWVzdCAqcmVxKTsKPiA+ICt1NjQgcGVjaV9yZXF1 ZXN0X2RhdGFfZGliKHN0cnVjdCBwZWNpX3JlcXVlc3QgKnJlcSk7Cj4gPiArCj4gPiArdTggcGVj aV9yZXF1ZXN0X2RhdGFfcmVhZGIoc3RydWN0IHBlY2lfcmVxdWVzdCAqcmVxKTsKPiA+ICt1MTYg cGVjaV9yZXF1ZXN0X2RhdGFfcmVhZHcoc3RydWN0IHBlY2lfcmVxdWVzdCAqcmVxKTsKPiA+ICt1 MzIgcGVjaV9yZXF1ZXN0X2RhdGFfcmVhZGwoc3RydWN0IHBlY2lfcmVxdWVzdCAqcmVxKTsKPiA+ ICt1NjQgcGVjaV9yZXF1ZXN0X2RhdGFfcmVhZHEoc3RydWN0IHBlY2lfcmVxdWVzdCAqcmVxKTsK PiA+ICsKPiA+ICtzdHJ1Y3QgcGVjaV9yZXF1ZXN0ICpwZWNpX2dldF9kaWIoc3RydWN0IHBlY2lf ZGV2aWNlICpkZXZpY2UpOwo+ID4gK3N0cnVjdCBwZWNpX3JlcXVlc3QgKnBlY2lfZ2V0X3RlbXAo c3RydWN0IHBlY2lfZGV2aWNlICpkZXZpY2UpOwo+ID4gKwo+ID4gK3N0cnVjdCBwZWNpX3JlcXVl c3QgKnBlY2lfcGtnX2NmZ19yZWFkYihzdHJ1Y3QgcGVjaV9kZXZpY2UgKmRldmljZSwgdTgKPiA+ IGluZGV4LCB1MTYgcGFyYW0pOwo+ID4gK3N0cnVjdCBwZWNpX3JlcXVlc3QgKnBlY2lfcGtnX2Nm Z19yZWFkdyhzdHJ1Y3QgcGVjaV9kZXZpY2UgKmRldmljZSwgdTgKPiA+IGluZGV4LCB1MTYgcGFy YW0pOwo+ID4gK3N0cnVjdCBwZWNpX3JlcXVlc3QgKnBlY2lfcGtnX2NmZ19yZWFkbChzdHJ1Y3Qg cGVjaV9kZXZpY2UgKmRldmljZSwgdTgKPiA+IGluZGV4LCB1MTYgcGFyYW0pOwo+ID4gK3N0cnVj dCBwZWNpX3JlcXVlc3QgKnBlY2lfcGtnX2NmZ19yZWFkcShzdHJ1Y3QgcGVjaV9kZXZpY2UgKmRl dmljZSwgdTgKPiA+IGluZGV4LCB1MTYgcGFyYW0pOwo+ID4gKwo+ID4gKy8qKgo+ID4gKyAqIHN0 cnVjdCBwZWNpX2RldmljZV9pZCAtIFBFQ0kgZGV2aWNlIGRhdGEgdG8gbWF0Y2gKPiA+ICsgKiBA ZGF0YTogcG9pbnRlciB0byBkcml2ZXIgcHJpdmF0ZSBkYXRhIHNwZWNpZmljIHRvIGRldmljZQo+ ID4gKyAqIEBmYW1pbHk6IGRldmljZSBmYW1pbHkKPiA+ICsgKiBAbW9kZWw6IGRldmljZSBtb2Rl bAo+ID4gKyAqLwo+ID4gK3N0cnVjdCBwZWNpX2RldmljZV9pZCB7Cj4gPiArwqDCoMKgwqDCoMKg wqBjb25zdCB2b2lkICpkYXRhOwo+ID4gK8KgwqDCoMKgwqDCoMKgdTE2IGZhbWlseTsKPiA+ICvC oMKgwqDCoMKgwqDCoHU4IG1vZGVsOwo+ID4gK307Cj4gPiArCj4gPiBleHRlcm4gc3RydWN0IGRl dmljZV90eXBlIHBlY2lfZGV2aWNlX3R5cGU7Cj4gPiBleHRlcm4gY29uc3Qgc3RydWN0IGF0dHJp YnV0ZV9ncm91cCAqcGVjaV9kZXZpY2VfZ3JvdXBzW107Cj4gPiAKPiA+IEBAIC0yOCw2ICs1Niw1 MyBAQCB2b2lkIHBlY2lfZGV2aWNlX2Rlc3Ryb3koc3RydWN0IHBlY2lfZGV2aWNlICpkZXZpY2Up Owo+ID4gZXh0ZXJuIHN0cnVjdCBidXNfdHlwZSBwZWNpX2J1c190eXBlOwo+ID4gZXh0ZXJuIGNv bnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKnBlY2lfYnVzX2dyb3Vwc1tdOwo+ID4gCj4gPiAr LyoqCj4gPiArICogc3RydWN0IHBlY2lfZHJpdmVyIC0gUEVDSSBkcml2ZXIKPiA+ICsgKiBAZHJp dmVyOiBpbmhlcml0IGRldmljZSBkcml2ZXIKPiA+ICsgKiBAcHJvYmU6IHByb2JlIGNhbGxiYWNr Cj4gPiArICogQHJlbW92ZTogcmVtb3ZlIGNhbGxiYWNrCj4gPiArICogQGlkX3RhYmxlOiBQRUNJ IGRldmljZSBtYXRjaCB0YWJsZSB0byBkZWNpZGUgd2hpY2ggZGV2aWNlIHRvIGJpbmQKPiA+ICsg Ki8KPiA+ICtzdHJ1Y3QgcGVjaV9kcml2ZXIgewo+ID4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IGRl dmljZV9kcml2ZXIgZHJpdmVyOwo+ID4gK8KgwqDCoMKgwqDCoMKgaW50ICgqcHJvYmUpKHN0cnVj dCBwZWNpX2RldmljZSAqZGV2aWNlLCBjb25zdCBzdHJ1Y3QgcGVjaV9kZXZpY2VfaWQKPiA+ICpp ZCk7Cj4gPiArwqDCoMKgwqDCoMKgwqB2b2lkICgqcmVtb3ZlKShzdHJ1Y3QgcGVjaV9kZXZpY2Ug KmRldmljZSk7Cj4gPiArwqDCoMKgwqDCoMKgwqBjb25zdCBzdHJ1Y3QgcGVjaV9kZXZpY2VfaWQg KmlkX3RhYmxlOwo+ID4gK307Cj4gPiArCj4gPiArc3RhdGljIGlubGluZSBzdHJ1Y3QgcGVjaV9k cml2ZXIgKnRvX3BlY2lfZHJpdmVyKHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkKQo+ID4gK3sKPiA+ ICvCoMKgwqDCoMKgwqDCoHJldHVybiBjb250YWluZXJfb2YoZCwgc3RydWN0IHBlY2lfZHJpdmVy LCBkcml2ZXIpOwo+ID4gK30KPiA+ICsKPiA+ICtpbnQgX19wZWNpX2RyaXZlcl9yZWdpc3Rlcihz dHJ1Y3QgcGVjaV9kcml2ZXIgKmRyaXZlciwgc3RydWN0IG1vZHVsZQo+ID4gKm93bmVyLAo+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnN0 IGNoYXIgKm1vZF9uYW1lKTsKPiA+ICsvKioKPiA+ICsgKiBwZWNpX2RyaXZlcl9yZWdpc3Rlcigp IC0gcmVnaXN0ZXIgUEVDSSBkcml2ZXIKPiA+ICsgKiBAZHJpdmVyOiB0aGUgZHJpdmVyIHRvIGJl IHJlZ2lzdGVyZWQKPiA+ICsgKiBAb3duZXI6IG93bmVyIG1vZHVsZSBvZiB0aGUgZHJpdmVyIGJl aW5nIHJlZ2lzdGVyZWQKPiA+ICsgKiBAbW9kX25hbWU6IG1vZHVsZSBuYW1lIHN0cmluZwo+ID4g KyAqCj4gPiArICogUEVDSSBkcml2ZXJzIHRoYXQgZG9uJ3QgbmVlZCB0byBkbyBhbnl0aGluZyBz cGVjaWFsIGluIG1vZHVsZSBpbml0Cj4gPiBzaG91bGQKPiA+ICsgKiB1c2UgdGhlIGNvbnZlbmll bmNlICJtb2R1bGVfcGVjaV9kcml2ZXIiIG1hY3JvIGluc3RlYWQKPiA+ICsgKgo+ID4gKyAqIFJl dHVybjogemVybyBvbiBzdWNjZXNzLCBlbHNlIGEgbmVnYXRpdmUgZXJyb3IgY29kZS4KPiA+ICsg Ki8KPiA+ICsjZGVmaW5lIHBlY2lfZHJpdmVyX3JlZ2lzdGVyKGRyaXZlcikgXAo+ID4gK8KgwqDC oMKgwqDCoMKgX19wZWNpX2RyaXZlcl9yZWdpc3Rlcihkcml2ZXIsIFRISVNfTU9EVUxFLCBLQlVJ TERfTU9ETkFNRSkKPiA+ICt2b2lkIHBlY2lfZHJpdmVyX3VucmVnaXN0ZXIoc3RydWN0IHBlY2lf ZHJpdmVyICpkcml2ZXIpOwo+ID4gKwo+ID4gKy8qKgo+ID4gKyAqIG1vZHVsZV9wZWNpX2RyaXZl cigpIC0gSGVscGVyIG1hY3JvIGZvciByZWdpc3RlcmluZyBhIG1vZHVsYXIgUEVDSQo+ID4gZHJp dmVyCj4gPiArICogQF9fcGVjaV9kcml2ZXI6IHBlY2lfZHJpdmVyIHN0cnVjdAo+ID4gKyAqCj4g PiArICogSGVscGVyIG1hY3JvIGZvciBQRUNJIGRyaXZlcnMgd2hpY2ggZG8gbm90IGRvIGFueXRo aW5nIHNwZWNpYWwgaW4gbW9kdWxlCj4gPiArICogaW5pdC9leGl0LiBUaGlzIGVsaW1pbmF0ZXMg YSBsb3Qgb2YgYm9pbGVycGxhdGUuIEVhY2ggbW9kdWxlIG1heSBvbmx5Cj4gPiArICogdXNlIHRo aXMgbWFjcm8gb25jZSwgYW5kIGNhbGxpbmcgaXQgcmVwbGFjZXMgbW9kdWxlX2luaXQoKSBhbmQK PiA+IG1vZHVsZV9leGl0KCkKPiA+ICsgKi8KPiA+ICsjZGVmaW5lIG1vZHVsZV9wZWNpX2RyaXZl cihfX3BlY2lfZHJpdmVyKSBcCj4gPiArwqDCoMKgwqDCoMKgwqBtb2R1bGVfZHJpdmVyKF9fcGVj aV9kcml2ZXIsIHBlY2lfZHJpdmVyX3JlZ2lzdGVyLAo+ID4gcGVjaV9kcml2ZXJfdW5yZWdpc3Rl cikKPiA+ICsKPiA+IGV4dGVybiBzdHJ1Y3QgZGV2aWNlX3R5cGUgcGVjaV9jb250cm9sbGVyX3R5 cGU7Cj4gPiAKPiA+IGludCBwZWNpX2NvbnRyb2xsZXJfc2Nhbl9kZXZpY2VzKHN0cnVjdCBwZWNp X2NvbnRyb2xsZXIgKmNvbnRyb2xsZXIpOwo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGVjaS9y ZXF1ZXN0LmMgYi9kcml2ZXJzL3BlY2kvcmVxdWVzdC5jCj4gPiBpbmRleCA3OGNlZTUxZGZhZTEu LjQ4MzU0NDU1YjU1NCAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvcGVjaS9yZXF1ZXN0LmMKPiA+ ICsrKyBiL2RyaXZlcnMvcGVjaS9yZXF1ZXN0LmMKPiA+IEBAIC0xLDEzICsxLDE0MiBAQAo+ID4g Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQo+ID4gLy8gQ29weXJpZ2h0 IChjKSAyMDIxIEludGVsIENvcnBvcmF0aW9uCj4gPiAKPiA+ICsjaW5jbHVkZSA8bGludXgvYnVn Lmg+Cj4gPiAjaW5jbHVkZSA8bGludXgvZXhwb3J0Lmg+Cj4gPiAjaW5jbHVkZSA8bGludXgvcGVj aS5oPgo+ID4gI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KPiA+ICNpbmNsdWRlIDxsaW51eC90eXBl cy5oPgo+ID4gCj4gPiArI2luY2x1ZGUgPGFzbS91bmFsaWduZWQuaD4KPiA+ICsKPiA+ICNpbmNs dWRlICJpbnRlcm5hbC5oIgo+ID4gCj4gPiArI2RlZmluZSBQRUNJX0dFVF9ESUJfQ01EwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgMHhmNwo+ID4gKyNkZWZpbmXCoCBQRUNJX0dFVF9ESUJf V1JfTEVOwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDEKPiA+ICsjZGVmaW5lwqAgUEVDSV9HRVRfRElC X1JEX0xFTsKgwqDCoMKgwqDCoMKgwqDCoMKgwqA4Cj4gPiArCj4gPiArI2RlZmluZSBQRUNJX1JE UEtHQ0ZHX0NNRMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAweGExCj4gPiArI2RlZmluZcKg IFBFQ0lfUkRQS0dDRkdfV1JJVEVfTEVOwqDCoMKgwqDCoMKgwqA1Cj4gPiArI2RlZmluZcKgIFBF Q0lfUkRQS0dDRkdfUkVBRF9MRU5fQkFTRcKgwqDCoDEKPiA+ICsjZGVmaW5lIFBFQ0lfV1JQS0dD RkdfQ01EwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDB4YTUKPiA+ICsjZGVmaW5lwqAgUEVD SV9XUlBLR0NGR19XUklURV9MRU5fQkFTRcKgwqA2Cj4gPiArI2RlZmluZcKgIFBFQ0lfV1JQS0dD RkdfUkVBRF9MRU7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDEKPiA+ICsKPiA+ICsv KiBEZXZpY2UgU3BlY2lmaWMgQ29tcGxldGlvbiBDb2RlIChDQykgRGVmaW5pdGlvbiAqLwo+ID4g KyNkZWZpbmUgUEVDSV9DQ19TVUNDRVNTwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDB4NDAKPiA+ICsjZGVmaW5lIFBFQ0lfQ0Nf TkVFRF9SRVRSWcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDB4ODAK PiA+ICsjZGVmaW5lIFBFQ0lfQ0NfT1VUX09GX1JFU09VUkNFwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgMHg4MQo+ID4gKyNkZWZpbmUgUEVDSV9DQ19VTkFW QUlMX1JFU09VUkNFwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgMHg4Mgo+ID4gKyNkZWZp bmUgUEVDSV9DQ19JTlZBTElEX1JFUcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAweDkwCj4gPiArI2RlZmluZSBQRUNJX0NDX01DQV9FUlJPUsKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgMHg5MQo+ID4gKyNkZWZpbmUgUEVDSV9DQ19DQVRB U1RST1BISUNfTUNBX0VSUk9SwqDCoMKgwqDCoMKgwqDCoMKgMHg5Mwo+ID4gKyNkZWZpbmUgUEVD SV9DQ19GQVRBTF9NQ0FfRVJST1LCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAweDk0Cj4gPiArI2RlZmluZSBQRUNJX0NDX1BBUklUWV9FUlJfR1BTQl9PUl9Q TVNCwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAweDk4Cj4gPiArI2RlZmluZSBQRUNJ X0NDX1BBUklUWV9FUlJfR1BTQl9PUl9QTVNCX0lFUlLCoMKgwqAweDlCCj4gPiArI2RlZmluZSBQ RUNJX0NDX1BBUklUWV9FUlJfR1BTQl9PUl9QTVNCX01DQcKgwqDCoMKgMHg5Qwo+ID4gKwo+ID4g KyNkZWZpbmUgUEVDSV9SRVRSWV9CSVTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg QklUKDApCj4gPiArCj4gPiArI2RlZmluZSBQRUNJX1JFVFJZX1RJTUVPVVTCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoG1zZWNzX3RvX2ppZmZpZXMoNzAwKQo+ID4gKyNkZWZpbmUgUEVDSV9SRVRS WV9JTlRFUlZBTF9NSU7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG1zZWNzX3RvX2pp ZmZpZXMoMSkKPiA+ICsjZGVmaW5lIFBFQ0lfUkVUUllfSU5URVJWQUxfTUFYwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBtc2Vjc190b19qaWZmaWVzKDEyOCkKPiA+ICsKPiA+ICtzdGF0 aWMgdTggcGVjaV9yZXF1ZXN0X2RhdGFfY2Moc3RydWN0IHBlY2lfcmVxdWVzdCAqcmVxKQo+ID4g K3sKPiA+ICvCoMKgwqDCoMKgwqDCoHJldHVybiByZXEtPnJ4LmJ1ZlswXTsKPiA+ICt9Cj4gPiAr Cj4gPiArLyoqCj4gPiArICogcGVjaV9yZXF1ZXN0X3N0YXR1cygpIC0gcmV0dXJuIC1lcnJubyBi YXNlZCBvbiBQRUNJIGNvbXBsZXRpb24gY29kZQo+ID4gKyAqIEByZXE6IHRoZSBQRUNJIHJlcXVl c3QgdGhhdCBjb250YWlucyByZXNwb25zZSBkYXRhIHdpdGggY29tcGxldGlvbiBjb2RlCj4gPiAr ICoKPiA+ICsgKiBJdCBjYW4ndCBiZSB1c2VkIGZvciBQaW5nKCksIEdldERJQigpIGFuZCBHZXRU ZW1wKCkgLSBmb3IgdGhvc2UgY29tbWFuZHMKPiA+IHdlCj4gPiArICogZG9uJ3QgZXhwZWN0IGNv bXBsZXRpb24gY29kZSBpbiB0aGUgcmVzcG9uc2UuCj4gPiArICoKPiA+ICsgKiBSZXR1cm46IC1l cnJubwo+ID4gKyAqLwo+ID4gK2ludCBwZWNpX3JlcXVlc3Rfc3RhdHVzKHN0cnVjdCBwZWNpX3Jl cXVlc3QgKnJlcSkKPiA+ICt7Cj4gPiArwqDCoMKgwqDCoMKgwqB1OCBjYyA9IHBlY2lfcmVxdWVz dF9kYXRhX2NjKHJlcSk7Cj4gPiArCj4gPiArwqDCoMKgwqDCoMKgwqBpZiAoY2MgIT0gUEVDSV9D Q19TVUNDRVNTKQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRldl9kYmcoJnJl cS0+ZGV2aWNlLT5kZXYsICJyZXQ6ICUjMDJ4XG4iLCBjYyk7Cj4gPiArCj4gPiArwqDCoMKgwqDC oMKgwqBzd2l0Y2ggKGNjKSB7Cj4gPiArwqDCoMKgwqDCoMKgwqBjYXNlIFBFQ0lfQ0NfU1VDQ0VT UzoKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiA+ICvCoMKg wqDCoMKgwqDCoGNhc2UgUEVDSV9DQ19ORUVEX1JFVFJZOgo+ID4gK8KgwqDCoMKgwqDCoMKgY2Fz ZSBQRUNJX0NDX09VVF9PRl9SRVNPVVJDRToKPiA+ICvCoMKgwqDCoMKgwqDCoGNhc2UgUEVDSV9D Q19VTkFWQUlMX1JFU09VUkNFOgo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJl dHVybiAtRUFHQUlOOwo+ID4gK8KgwqDCoMKgwqDCoMKgY2FzZSBQRUNJX0NDX0lOVkFMSURfUkVR Ogo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiAtRUlOVkFMOwo+ID4g K8KgwqDCoMKgwqDCoMKgY2FzZSBQRUNJX0NDX01DQV9FUlJPUjoKPiA+ICvCoMKgwqDCoMKgwqDC oGNhc2UgUEVDSV9DQ19DQVRBU1RST1BISUNfTUNBX0VSUk9SOgo+ID4gK8KgwqDCoMKgwqDCoMKg Y2FzZSBQRUNJX0NDX0ZBVEFMX01DQV9FUlJPUjoKPiA+ICvCoMKgwqDCoMKgwqDCoGNhc2UgUEVD SV9DQ19QQVJJVFlfRVJSX0dQU0JfT1JfUE1TQjoKPiA+ICvCoMKgwqDCoMKgwqDCoGNhc2UgUEVD SV9DQ19QQVJJVFlfRVJSX0dQU0JfT1JfUE1TQl9JRVJSOgo+ID4gK8KgwqDCoMKgwqDCoMKgY2Fz ZSBQRUNJX0NDX1BBUklUWV9FUlJfR1BTQl9PUl9QTVNCX01DQToKPiA+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gLUVJTzsKPiA+ICvCoMKgwqDCoMKgwqDCoH0KPiA+ICsK PiA+ICvCoMKgwqDCoMKgwqDCoFdBUk5fT05DRSgxLCAiVW5rbm93biBQRUNJIGNvbXBsZXRpb24g Y29kZTogJSMwMnhcbiIsIGNjKTsKPiA+ICsKPiA+ICvCoMKgwqDCoMKgwqDCoHJldHVybiAtRUlP Owo+ID4gK30KPiA+ICtFWFBPUlRfU1lNQk9MX05TX0dQTChwZWNpX3JlcXVlc3Rfc3RhdHVzLCBQ RUNJKTsKPiA+ICsKPiA+ICtzdGF0aWMgaW50IHBlY2lfcmVxdWVzdF94ZmVyKHN0cnVjdCBwZWNp X3JlcXVlc3QgKnJlcSkKPiA+ICt7Cj4gPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgcGVjaV9kZXZp Y2UgKmRldmljZSA9IHJlcS0+ZGV2aWNlOwo+ID4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IHBlY2lf Y29udHJvbGxlciAqY29udHJvbGxlciA9IGRldmljZS0+Y29udHJvbGxlcjsKPiA+ICvCoMKgwqDC oMKgwqDCoGludCByZXQ7Cj4gPiArCj4gPiArwqDCoMKgwqDCoMKgwqBtdXRleF9sb2NrKCZjb250 cm9sbGVyLT5idXNfbG9jayk7Cj4gPiArwqDCoMKgwqDCoMKgwqByZXQgPSBjb250cm9sbGVyLT54 ZmVyKGNvbnRyb2xsZXIsIGRldmljZS0+YWRkciwgcmVxKTsKPiA+ICvCoMKgwqDCoMKgwqDCoG11 dGV4X3VubG9jaygmY29udHJvbGxlci0+YnVzX2xvY2spOwo+ID4gKwo+ID4gK8KgwqDCoMKgwqDC oMKgcmV0dXJuIHJldDsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGludCBwZWNpX3JlcXVlc3Rf eGZlcl9yZXRyeShzdHJ1Y3QgcGVjaV9yZXF1ZXN0ICpyZXEpCj4gPiArewo+ID4gK8KgwqDCoMKg wqDCoMKgbG9uZyB3YWl0X2ludGVydmFsID0gUEVDSV9SRVRSWV9JTlRFUlZBTF9NSU47Cj4gPiAr wqDCoMKgwqDCoMKgwqBzdHJ1Y3QgcGVjaV9kZXZpY2UgKmRldmljZSA9IHJlcS0+ZGV2aWNlOwo+ ID4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IHBlY2lfY29udHJvbGxlciAqY29udHJvbGxlciA9IGRl dmljZS0+Y29udHJvbGxlcjsKPiA+ICvCoMKgwqDCoMKgwqDCoHVuc2lnbmVkIGxvbmcgc3RhcnQg PSBqaWZmaWVzOwo+ID4gK8KgwqDCoMKgwqDCoMKgaW50IHJldDsKPiA+ICsKPiA+ICvCoMKgwqDC oMKgwqDCoC8qIERvbid0IHRyeSB0byB1c2UgaXQgZm9yIHBpbmcgKi8KPiA+ICvCoMKgwqDCoMKg wqDCoGlmIChXQVJOX09OKCFyZXEtPnJ4LmJ1ZikpCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgcmV0dXJuIDA7Cj4gPiArCj4gPiArwqDCoMKgwqDCoMKgwqBkbyB7Cj4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0ID0gcGVjaV9yZXF1ZXN0X3hmZXIocmVxKTsK PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAocmV0KSB7Cj4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRldl9kYmcoJmNvbnRyb2xs ZXItPmRldiwgInhmZXIgZXJyb3I6ICVkXG4iLCByZXQpOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+ID4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoH0KPiA+ICsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBpZiAocGVjaV9yZXF1ZXN0X3N0YXR1cyhyZXEpICE9IC1FQUdBSU4pCj4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+ID4gKwo+ ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIFNldCB0aGUgcmV0cnkgYml0IHRv IGluZGljYXRlIGEgcmV0cnkgYXR0ZW1wdCAqLwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHJlcS0+dHguYnVmWzFdIHw9IFBFQ0lfUkVUUllfQklUOwo+ID4gKwo+ID4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChzY2hlZHVsZV90aW1lb3V0X2ludGVycnVwdGli bGUod2FpdF9pbnRlcnZhbCkpCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHJldHVybiAtRVJFU1RBUlRTWVM7Cj4gPiArCj4gPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgd2FpdF9pbnRlcnZhbCAqPSAyOwo+ID4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGlmICh3YWl0X2ludGVydmFsID4gUEVDSV9SRVRSWV9JTlRFUlZBTF9N QVgpCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHdh aXRfaW50ZXJ2YWwgPSBQRUNJX1JFVFJZX0lOVEVSVkFMX01BWDsKPiAKPiB3YWl0X2ludGVydmFs ID0gbWluKHdhaXRfaW50ZXJ2YWwgKiAyLCBQRUNJX1JFVFJZX0lOVEVSVkFMX01BWCkgPwoKQWNr LgoKPiAKPiA+ICvCoMKgwqDCoMKgwqDCoH0gd2hpbGUgKHRpbWVfYmVmb3JlKGppZmZpZXMsIHN0 YXJ0ICsgUEVDSV9SRVRSWV9USU1FT1VUKSk7Cj4gPiArCj4gPiArwqDCoMKgwqDCoMKgwqBkZXZf ZGJnKCZjb250cm9sbGVyLT5kZXYsICJyZXF1ZXN0IHRpbWVkIG91dFxuIik7Cj4gPiArCj4gPiAr wqDCoMKgwqDCoMKgwqByZXR1cm4gLUVUSU1FRE9VVDsKPiA+ICt9Cj4gPiArCj4gPiAvKioKPiA+ IMKgKiBwZWNpX3JlcXVlc3RfYWxsb2MoKSAtIGFsbG9jYXRlICZzdHJ1Y3QgcGVjaV9yZXF1ZXN0 IHdpdGggYnVmZmVycyB3aXRoCj4gPiBnaXZlbiBsZW5ndGhzCj4gPiDCoCogQGRldmljZTogUEVD SSBkZXZpY2UgdG8gd2hpY2ggcmVxdWVzdCBpcyBnb2luZyB0byBiZSBzZW50Cj4gPiBAQCAtNzIs MyArMjAxLDkxIEBAIHZvaWQgcGVjaV9yZXF1ZXN0X2ZyZWUoc3RydWN0IHBlY2lfcmVxdWVzdCAq cmVxKQo+ID4gwqDCoMKgwqDCoMKgwqDCoGtmcmVlKHJlcSk7Cj4gPiB9Cj4gPiBFWFBPUlRfU1lN Qk9MX05TX0dQTChwZWNpX3JlcXVlc3RfZnJlZSwgUEVDSSk7Cj4gPiArCj4gPiArc3RydWN0IHBl Y2lfcmVxdWVzdCAqcGVjaV9nZXRfZGliKHN0cnVjdCBwZWNpX2RldmljZSAqZGV2aWNlKQo+ID4g K3sKPiA+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBwZWNpX3JlcXVlc3QgKnJlcTsKPiA+ICvCoMKg wqDCoMKgwqDCoGludCByZXQ7Cj4gPiArCj4gPiArwqDCoMKgwqDCoMKgwqByZXEgPSBwZWNpX3Jl cXVlc3RfYWxsb2MoZGV2aWNlLCBQRUNJX0dFVF9ESUJfV1JfTEVOLAo+ID4gUEVDSV9HRVRfRElC X1JEX0xFTik7Cj4gPiArwqDCoMKgwqDCoMKgwqBpZiAoIXJlcSkKPiA+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPiA+ICsKPiA+ICvCoMKg wqDCoMKgwqDCoHJlcS0+dHguYnVmWzBdID0gUEVDSV9HRVRfRElCX0NNRDsKPiA+ICsKPiA+ICvC oMKgwqDCoMKgwqDCoHJldCA9IHBlY2lfcmVxdWVzdF94ZmVyKHJlcSk7Cj4gPiArwqDCoMKgwqDC oMKgwqBpZiAocmV0KSB7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcGVjaV9y ZXF1ZXN0X2ZyZWUocmVxKTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1 cm4gRVJSX1BUUihyZXQpOwo+ID4gK8KgwqDCoMKgwqDCoMKgfQo+ID4gKwo+ID4gK8KgwqDCoMKg wqDCoMKgcmV0dXJuIHJlcTsKPiA+ICt9Cj4gPiArRVhQT1JUX1NZTUJPTF9OU19HUEwocGVjaV9n ZXRfZGliLCBQRUNJKTsKPiA+ICsKPiA+ICtzdGF0aWMgc3RydWN0IHBlY2lfcmVxdWVzdCAqCj4g PiArX19wa2dfY2ZnX3JlYWQoc3RydWN0IHBlY2lfZGV2aWNlICpkZXZpY2UsIHU4IGluZGV4LCB1 MTYgcGFyYW0sIHU4IGxlbikKPiA+ICt7Cj4gPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgcGVjaV9y ZXF1ZXN0ICpyZXE7Cj4gPiArwqDCoMKgwqDCoMKgwqBpbnQgcmV0Owo+ID4gKwo+ID4gK8KgwqDC oMKgwqDCoMKgcmVxID0gcGVjaV9yZXF1ZXN0X2FsbG9jKGRldmljZSwgUEVDSV9SRFBLR0NGR19X UklURV9MRU4sCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgUEVDSV9SRFBLR0NGR19SRUFEX0xFTl9CQVNFICsgbGVuKTsK PiA+ICvCoMKgwqDCoMKgwqDCoGlmICghcmVxKQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwo+ID4gKwo+ID4gK8KgwqDCoMKgwqDCoMKg cmVxLT50eC5idWZbMF0gPSBQRUNJX1JEUEtHQ0ZHX0NNRDsKPiA+ICvCoMKgwqDCoMKgwqDCoHJl cS0+dHguYnVmWzFdID0gMDsKPiA+ICvCoMKgwqDCoMKgwqDCoHJlcS0+dHguYnVmWzJdID0gaW5k ZXg7Cj4gPiArwqDCoMKgwqDCoMKgwqBwdXRfdW5hbGlnbmVkX2xlMTYocGFyYW0sICZyZXEtPnR4 LmJ1ZlszXSk7Cj4gPiArCj4gPiArwqDCoMKgwqDCoMKgwqByZXQgPSBwZWNpX3JlcXVlc3RfeGZl cl9yZXRyeShyZXEpOwo+ID4gK8KgwqDCoMKgwqDCoMKgaWYgKHJldCkgewo+ID4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoHBlY2lfcmVxdWVzdF9mcmVlKHJlcSk7Cj4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIEVSUl9QVFIocmV0KTsKPiA+ICvCoMKgwqDC oMKgwqDCoH0KPiA+ICsKPiA+ICvCoMKgwqDCoMKgwqDCoHJldHVybiByZXE7Cj4gPiArfQo+ID4g Kwo+ID4gK3U4IHBlY2lfcmVxdWVzdF9kYXRhX3JlYWRiKHN0cnVjdCBwZWNpX3JlcXVlc3QgKnJl cSkKPiA+ICt7Cj4gPiArwqDCoMKgwqDCoMKgwqByZXR1cm4gcmVxLT5yeC5idWZbMV07Cj4gPiAr fQo+ID4gK0VYUE9SVF9TWU1CT0xfTlNfR1BMKHBlY2lfcmVxdWVzdF9kYXRhX3JlYWRiLCBQRUNJ KTsKPiA+ICsKPiA+ICt1MTYgcGVjaV9yZXF1ZXN0X2RhdGFfcmVhZHcoc3RydWN0IHBlY2lfcmVx dWVzdCAqcmVxKQo+ID4gK3sKPiA+ICvCoMKgwqDCoMKgwqDCoHJldHVybiBnZXRfdW5hbGlnbmVk X2xlMTYoJnJlcS0+cnguYnVmWzFdKTsKPiA+ICt9Cj4gPiArRVhQT1JUX1NZTUJPTF9OU19HUEwo cGVjaV9yZXF1ZXN0X2RhdGFfcmVhZHcsIFBFQ0kpOwo+ID4gKwo+ID4gK3UzMiBwZWNpX3JlcXVl c3RfZGF0YV9yZWFkbChzdHJ1Y3QgcGVjaV9yZXF1ZXN0ICpyZXEpCj4gPiArewo+ID4gK8KgwqDC oMKgwqDCoMKgcmV0dXJuIGdldF91bmFsaWduZWRfbGUzMigmcmVxLT5yeC5idWZbMV0pOwo+ID4g K30KPiA+ICtFWFBPUlRfU1lNQk9MX05TX0dQTChwZWNpX3JlcXVlc3RfZGF0YV9yZWFkbCwgUEVD SSk7Cj4gPiArCj4gPiArdTY0IHBlY2lfcmVxdWVzdF9kYXRhX3JlYWRxKHN0cnVjdCBwZWNpX3Jl cXVlc3QgKnJlcSkKPiA+ICt7Cj4gPiArwqDCoMKgwqDCoMKgwqByZXR1cm4gZ2V0X3VuYWxpZ25l ZF9sZTY0KCZyZXEtPnJ4LmJ1ZlsxXSk7Cj4gPiArfQo+ID4gK0VYUE9SVF9TWU1CT0xfTlNfR1BM KHBlY2lfcmVxdWVzdF9kYXRhX3JlYWRxLCBQRUNJKTsKPiA+ICsKPiA+ICt1NjQgcGVjaV9yZXF1 ZXN0X2RhdGFfZGliKHN0cnVjdCBwZWNpX3JlcXVlc3QgKnJlcSkKPiA+ICt7Cj4gPiArwqDCoMKg wqDCoMKgwqByZXR1cm4gZ2V0X3VuYWxpZ25lZF9sZTY0KCZyZXEtPnJ4LmJ1ZlswXSk7Cj4gPiAr fQo+ID4gK0VYUE9SVF9TWU1CT0xfTlNfR1BMKHBlY2lfcmVxdWVzdF9kYXRhX2RpYiwgUEVDSSk7 Cj4gPiArCj4gPiArI2RlZmluZSBfX3JlYWRfcGtnX2NvbmZpZyh4LCB0eXBlKSBcCj4gPiArc3Ry dWN0IHBlY2lfcmVxdWVzdCAqcGVjaV9wa2dfY2ZnXyMjeChzdHJ1Y3QgcGVjaV9kZXZpY2UgKmRl dmljZSwgdTggaW5kZXgsCj4gPiB1MTYgcGFyYW0pIFwKPiA+ICt7IFwKPiA+ICvCoMKgwqDCoMKg wqDCoHJldHVybiBfX3BrZ19jZmdfcmVhZChkZXZpY2UsIGluZGV4LCBwYXJhbSwgc2l6ZW9mKHR5 cGUpKTsgXAo+ID4gK30gXAo+IAo+IElzIHRoZXJlIGEgcmVhc29uIGZvciB0aGlzIHBhcnRpY3Vs YXIgQVBJP8KgIEknZCB0aGluayBhIG1vcmUgbmF0dXJhbCBvbmUKPiB0aGF0IHdvdWxkIG9mZmxv YWQgYSBiaXQgb2YgYm9pbGVycGxhdGUgZnJvbSBjYWxsZXJzIHdvdWxkIGxvb2sgbW9yZSBsaWtl Cj4gCj4gaW50IHBlY2lfcGtnX2NmZ18jI3goc3RydWN0IHBlY2lfZGV2aWNlICpkZXZpY2UsIHU4 IGluZGV4LCB1MTYgcGFyYW0sIHR5cGUKPiAqb3V0cCksCj4gCj4gcmV0dXJuaW5nIHBlY2lfcmVx dWVzdF9zdGF0dXMoKSBhbmQgd3JpdGluZyB0aGUgcmVxdWVzdGVkIGRhdGEgdG8gKm91dHAKPiBp ZiB0aGF0IHN0YXR1cyBpcyB6ZXJvLgoKV2UgcHJvdmlkZSBhIGNvbnNpc3RlbnQgbG93ZXItbGV2 ZWwgQVBJIGZvciAiaW50ZXJuYWwiIHVzYWdlIChmb3IgY29kZSBpbgpkcml2ZXJzL3BlY2kpLCBv cGVyYXRpbmcgb24gcmVxdWVzdHMgYW5kIGFsbG93aW5nIGFjY2VzcyB0byBmdWxsIHJlcXVlc3Qs CmluY2x1ZGluZyBjb21wbGV0aW9uIGNvZGUsIGV0Yy4KVGhlbiAtIHdlIHdyYXAgdGhhdCB3aXRo ICJleHRlcm5hbCIgQVBJIChlLmcuIGluY2x1ZGUvbGludXgvcGVjaS1jcHUuaCkgd2hpY2ggaXMK dGhlICJtb3JlIG5hdHVyYWwiIG9uZSAtIGl0IHB1bGxzIG91dCB0aGUgbmVjZXNzYXJ5IGRhdGEg ZnJvbSByZXF1ZXN0cywgZGVhbHMKd2l0aCBlcnJvciBoYW5kbGluZyBpbiBhbiBhcHByb3ByaWF0 ZSB3YXkgY29udmVydGluZyBjb21wbGV0aW9uIGNvZGVzIHRvIGVycm5vCnZhbHVlcyAoYWJzdHJh Y3RpbmcgYXdheSB0aGUgUEVDSS1zcGVjaWZpYyBkZXRhaWxzKS4KCj4gCj4gPiArRVhQT1JUX1NZ TUJPTF9OU19HUEwocGVjaV9wa2dfY2ZnXyMjeCwgUEVDSSkKPiA+ICsKPiA+ICtfX3JlYWRfcGtn X2NvbmZpZyhyZWFkYiwgdTgpOwo+ID4gK19fcmVhZF9wa2dfY29uZmlnKHJlYWR3LCB1MTYpOwo+ ID4gK19fcmVhZF9wa2dfY29uZmlnKHJlYWRsLCB1MzIpOwo+ID4gK19fcmVhZF9wa2dfY29uZmln KHJlYWRxLCB1NjQpOwo+ID4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGVjaS5oIGIvaW5j bHVkZS9saW51eC9wZWNpLmgKPiA+IGluZGV4IGNkZjMwMDgzMjFmZC4uZjlmMzdiODc0MDExIDEw MDY0NAo+ID4gLS0tIGEvaW5jbHVkZS9saW51eC9wZWNpLmgKPiA+ICsrKyBiL2luY2x1ZGUvbGlu dXgvcGVjaS5oCj4gPiBAQCAtOSw2ICs5LDE0IEBACj4gPiAjaW5jbHVkZSA8bGludXgvbXV0ZXgu aD4KPiA+ICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgo+ID4gCj4gPiArI2RlZmluZSBQRUNJX1BD U19QS0dfSUTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAw wqAgLyogUGFja2FnZSBJZGVudGlmaWVyCj4gPiBSZWFkICovCj4gPiArI2RlZmluZcKgIFBFQ0lf UEtHX0lEX0NQVV9JRMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDB4MDAwMMKgIC8qIENQVUlEIElu Zm8gKi8KPiA+ICsjZGVmaW5lwqAgUEVDSV9QS0dfSURfUExBVEZPUk1fSUTCoMKgwqDCoMKgwqDC oDB4MDAwMcKgIC8qIFBsYXRmb3JtIElEICovCj4gPiArI2RlZmluZcKgIFBFQ0lfUEtHX0lEX0RF VklDRV9JRMKgwqDCoMKgwqDCoMKgwqDCoDB4MDAwMsKgIC8qIFVuY29yZSBEZXZpY2UgSUQgKi8K PiA+ICsjZGVmaW5lwqAgUEVDSV9QS0dfSURfTUFYX1RIUkVBRF9JRMKgwqDCoMKgwqAweDAwMDPC oCAvKiBNYXggVGhyZWFkIElEICovCj4gPiArI2RlZmluZcKgIFBFQ0lfUEtHX0lEX01JQ1JPQ09E RV9SRVbCoMKgwqDCoMKgMHgwMDA0wqAgLyogQ1BVIE1pY3JvY29kZSBVcGRhdGUKPiA+IFJldmlz aW9uICovCj4gPiArI2RlZmluZcKgIFBFQ0lfUEtHX0lEX01DQV9FUlJPUl9MT0fCoMKgwqDCoMKg MHgwMDA1wqAgLyogTWFjaGluZSBDaGVjayBTdGF0dXMgKi8KPiA+ICsKPiA+IHN0cnVjdCBwZWNp X3JlcXVlc3Q7Cj4gPiAKPiA+IC8qKgo+ID4gQEAgLTQxLDYgKzQ5LDExIEBAIHN0YXRpYyBpbmxp bmUgc3RydWN0IHBlY2lfY29udHJvbGxlcgo+ID4gKnRvX3BlY2lfY29udHJvbGxlcih2b2lkICpk KQo+ID4gwqAqIHN0cnVjdCBwZWNpX2RldmljZSAtIFBFQ0kgZGV2aWNlCj4gPiDCoCogQGRldjog ZGV2aWNlIG9iamVjdCB0byByZWdpc3RlciBQRUNJIGRldmljZSB0byB0aGUgZGV2aWNlIG1vZGVs Cj4gPiDCoCogQGNvbnRyb2xsZXI6IG1hbmFnZXMgdGhlIGJ1cyBzZWdtZW50IGhvc3RpbmcgdGhp cyBQRUNJIGRldmljZQo+ID4gKyAqIEBpbmZvOiBQRUNJIGRldmljZSBjaGFyYWN0ZXJpc3RpY3MK PiA+ICsgKiBAaW5mby5mYW1pbHk6IGRldmljZSBmYW1pbHkKPiA+ICsgKiBAaW5mby5tb2RlbDog ZGV2aWNlIG1vZGVsCj4gPiArICogQGluZm8ucGVjaV9yZXZpc2lvbjogUEVDSSByZXZpc2lvbiBz dXBwb3J0ZWQgYnkgdGhlIFBFQ0kgZGV2aWNlCj4gPiArICogQGluZm8uc29ja2V0X2lkOiB0aGUg c29ja2V0IElEIHJlcHJlc2VudGVkIGJ5IHRoZSBQRUNJIGRldmljZQo+ID4gwqAqIEBhZGRyOiBh ZGRyZXNzIHVzZWQgb24gdGhlIFBFQ0kgYnVzIGNvbm5lY3RlZCB0byB0aGUgcGFyZW50IGNvbnRy b2xsZXIKPiA+IMKgKgo+ID4gwqAqIEEgcGVjaV9kZXZpY2UgaWRlbnRpZmllcyBhIHNpbmdsZSBk ZXZpY2UgKGkuZS4gQ1BVKSBjb25uZWN0ZWQgdG8gYSBQRUNJCj4gPiBidXMuCj4gPiBAQCAtNTAs NiArNjMsMTIgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgcGVjaV9jb250cm9sbGVyCj4gPiAqdG9f cGVjaV9jb250cm9sbGVyKHZvaWQgKmQpCj4gPiBzdHJ1Y3QgcGVjaV9kZXZpY2Ugewo+ID4gwqDC oMKgwqDCoMKgwqDCoHN0cnVjdCBkZXZpY2UgZGV2Owo+ID4gwqDCoMKgwqDCoMKgwqDCoHN0cnVj dCBwZWNpX2NvbnRyb2xsZXIgKmNvbnRyb2xsZXI7Cj4gPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qg ewo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHUxNiBmYW1pbHk7Cj4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdTggbW9kZWw7Cj4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgdTggcGVjaV9yZXZpc2lvbjsKPiAKPiBUaGlzIGZpZWxkIGdldHMgc2V0 IGJ1dCBkb2Vzbid0IHNlZW0gdG8gZW5kIHVwIHVzZWQgYW55d2hlcmU7IGlzIGl0Cj4gdXNlZnVs PwoKVGhlIGlkZWEgd2FzIHRvIGhhdmUgbWVjaGFuaXNtIHRvIHZhbGlkYXRlIHRoZSByZXZpc2lv biBudW1iZXIgcmV0cmlldmVkIHZpYQpHZXRESUIgd2l0aCByZXZpc2lvbiBleHBlY3RlZCBieSB0 aGUgZHJpdmVyIChzaW5jZSBpdCB1c2VzIGNvbW1hbmRzIHRoYXQgYXJlClBFQ0kgcmV2aXNpb24g ZGVwZW5kZW50KSwgYW5kIHdhcm4gaWYgdGhlcmUncyBhIG1pc21hdGNoLgpJdCBzZWVtcyBJIGRy b3BwZWQgdGhlICJ2YWxpZGF0ZSBhbmQgd2FybiIgcGFydCB3aGVuIGRvaW5nIHRoZSBzcGxpdCBv biB0aGUKc2VyaWVzLiBHb29kIGNhdGNoIC0gSSdsbCBmaXggdGhpcyBpbiB2Mi4KClRoYW5rcwot SXdvbmEKCj4gCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdTggc29ja2V0X2lk Owo+ID4gK8KgwqDCoMKgwqDCoMKgfSBpbmZvOwo+ID4gwqDCoMKgwqDCoMKgwqDCoHU4IGFkZHI7 Cj4gPiB9Owo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvbGliL0tjb25maWcgYi9saWIvS2NvbmZpZwo+ ID4gaW5kZXggY2MyOGJjMWYyZDg0Li5hNzRlNmMwZmE3NWMgMTAwNjQ0Cj4gPiAtLS0gYS9saWIv S2NvbmZpZwo+ID4gKysrIGIvbGliL0tjb25maWcKPiA+IEBAIC03MjEsNSArNzIxLDUgQEAgY29u ZmlnIEFTTjFfRU5DT0RFUgo+ID4gCj4gPiBjb25maWcgR0VORVJJQ19MSUJfWDg2Cj4gPiDCoMKg wqDCoMKgwqDCoMKgYm9vbAo+ID4gLcKgwqDCoMKgwqDCoMKgZGVwZW5kcyBvbiBYODYKPiA+ICvC oMKgwqDCoMKgwqDCoGRlcGVuZHMgb24gWDg2IHx8IFBFQ0kKPiA+IMKgwqDCoMKgwqDCoMKgwqBk ZWZhdWx0IG4KPiA+IC0tIAo+ID4gMi4zMS4xCgo=