Received: by 2002:a05:6a10:5bc5:0:0:0:0 with SMTP id os5csp2248285pxb; Tue, 12 Oct 2021 02:33:07 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwzi30dlUkfKwUVmHMGgVPoTpfY6MtDhTR9llqw3hrK1iauqDQf2YmwXddtwK9seGosyplt X-Received: by 2002:a05:6402:203:: with SMTP id t3mr49259831edv.69.1634031187496; Tue, 12 Oct 2021 02:33:07 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1634031187; cv=pass; d=google.com; s=arc-20160816; b=YF5dDkU5Ob23SRCBC13PP1orkon+mUQqp4lH0NTxN/PwcXxyPT4EM3acnZQVwbqvsa gpBUs5tSbEPyDyI05ScGcx4u0YMGy0jGCzJtGfXkco8iVkeBjevtCk87GUD+TxMBDxiG UJ4ii2O9tv8mfVqPQAUnPmV3kD0AuHhQLy6cdktPQe4CXpo9J+kU3tBjwXyeUoN8TanA Au/mvdr0rKy/XRGm5zg8CmXtBCTGs4lHdxSig2zcLSSwpmh4M7ZQupLvQjpcVxqlJLVA 2LeTLJgqU3JzHa5oHF8dzFZ3bKchmpbwMEtcxTalY6x7MukZxBpD4JI9CJjOQDSIrY9J N+fg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :content-language:accept-language:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature; bh=KlaBF0blsVeXnwwlIM4h6FbXBbEI531aDLPDwMB5hw8=; b=qs+QE3G0ic3YBRt7NQmNONxpPfSgf2mjSpp7SYikuVjyF4uhKpRdiDR+7QcoMjVRE6 1WxGRlmkvL5dcYQMe0laKIiOK4D1TfO3BI1oqehIAuzeTCMYxAhx1rGRSIzQIgbuAicH vlwNNVQGFLNBJf22hnd1oEr8MGYwiTdueynSYvkhbRdSP4PhzNimoFVsO9RIlml3Sv1n yO74bfWSvoZgPBKbJVIF5Jmm6zoiCZlSruFj2RdD2MVlWbV6cGUglyZxdtHgkhSWl5Vt +h8nO4YK58dSp+XUcT6BSc3OqG2pTygw8veXOREHQ/H3KbQXdx1sglylmLMptNzMXFla whRw== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@marvell.onmicrosoft.com header.s=selector1-marvell-onmicrosoft-com header.b="jzGqA/3V"; arc=pass (i=1 spf=pass spfdomain=marvell.com dkim=pass dkdomain=marvell.com dmarc=pass fromdomain=marvell.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=REJECT dis=NONE) header.from=marvell.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id f21si4179479edv.364.2021.10.12.02.32.43; Tue, 12 Oct 2021 02:33:07 -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=@marvell.onmicrosoft.com header.s=selector1-marvell-onmicrosoft-com header.b="jzGqA/3V"; arc=pass (i=1 spf=pass spfdomain=marvell.com dkim=pass dkdomain=marvell.com dmarc=pass fromdomain=marvell.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=REJECT dis=NONE) header.from=marvell.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235712AbhJLJbr (ORCPT + 99 others); Tue, 12 Oct 2021 05:31:47 -0400 Received: from mx0b-0016f401.pphosted.com ([67.231.156.173]:63292 "EHLO mx0b-0016f401.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232657AbhJLJbq (ORCPT ); Tue, 12 Oct 2021 05:31:46 -0400 Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 19C0gWjW031571; Tue, 12 Oct 2021 02:29:33 -0700 Received: from nam12-dm6-obe.outbound.protection.outlook.com (mail-dm6nam12lp2175.outbound.protection.outlook.com [104.47.59.175]) by mx0b-0016f401.pphosted.com with ESMTP id 3bmpv4v20b-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 12 Oct 2021 02:29:33 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=f+GaOu51fn5NXoXrulUnYEfKcS/9OrZ7qgC/H7kRWYiFEEvJ5hBGo4VpLopyLQ+mgNsCdVP06yWjgJ9Mg52VbKbSj561uMNAFu3dO8cB4qFoA1dJy2v2WApugOEQfvE0o1BbuKoodQzwtZa+lHtBWeQlQbDmiQwn2utYB7AtAGsSCXlbEWGzehHGVD3uxKVYyIjB3gH7agu1VkLfEcCmoxHEoNY7X9TxIFvCy4Ke1zbLWWKhdPOPVLA/iiPJ6GSrNHe7hbdR++0OxUvbMp9ohVUJ47jb/IOEsu0he2a49FydpA3Uih/EXv5DTF0KuSYhOYZkeiqqghinl40IImIBww== 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=KlaBF0blsVeXnwwlIM4h6FbXBbEI531aDLPDwMB5hw8=; b=Hg5Y9Nic3R6gkkf+c7lf5EF9Mk9J4PmZ7hZ9+2O/MiGTwiFxg/75MI6FW261QZ6sK5t532nykvsSeQoezfdxXTF0CSUIiIFLlPbu1kZwOv077sR1LV4KHi8mSsHkP0Hj5pm+Ft1nPPVUXn1k0UlRetTlmod39Cf4Pj20trJlklvdzFaTWf7KrYOAGcOEuGv+cyT0v/Riw07KG5lMy3JsGxnXryvpFxHe57K+gFbQpZBRR93nwdxElwLxtbpjvCI7xcarHWxchc8jFvuP0WdSOCewqb7edo7rLqA4tgUt0/4UCUKFYobjydjGobQ74hQxBhppScopRZcNzuQjzWEESw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=marvell.com; dmarc=pass action=none header.from=marvell.com; dkim=pass header.d=marvell.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.onmicrosoft.com; s=selector1-marvell-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KlaBF0blsVeXnwwlIM4h6FbXBbEI531aDLPDwMB5hw8=; b=jzGqA/3V8zpyjGpZx94xrH91MMAJw9x2A+Ci8ZNlW5mv9fO4WZRbMhgVe9gBAlAnl/Jyn/sLYtFWWsD9y6eHrShvoznY20Fpbl6aPutVnFTZFS5CbC+6seV8d06b8WbgzZMicUlbuARUqG1GcBmb2NzC2s4gIL7+XXUPUNgguDo= Received: from CY4PR1801MB2070.namprd18.prod.outlook.com (2603:10b6:910:7e::28) by CY4PR18MB1590.namprd18.prod.outlook.com (2603:10b6:903:150::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4587.18; Tue, 12 Oct 2021 09:29:31 +0000 Received: from CY4PR1801MB2070.namprd18.prod.outlook.com ([fe80::9de0:2038:e0cd:e491]) by CY4PR1801MB2070.namprd18.prod.outlook.com ([fe80::9de0:2038:e0cd:e491%6]) with mapi id 15.20.4587.026; Tue, 12 Oct 2021 09:29:30 +0000 From: Bhaskara Budiredla To: Bharat Bhushan CC: "will@kernel.org" , "mark.rutland@arm.com" , "robh+dt@kernel.org" , Sunil Kovvuri Goutham , "linux-arm-kernel@lists.infradead.org" , "devicetree@vger.kernel.org" , "linux-kernel@vger.kernel.org" , Bharat Bhushan Subject: RE: [EXT] Re: [PATCH v5 1/2] drivers: perf: Add LLC-TAD perf counter support Thread-Topic: [EXT] Re: [PATCH v5 1/2] drivers: perf: Add LLC-TAD perf counter support Thread-Index: AQHXpKm2CtU5slDOP0i6CIT644eTNKvPMPEAgAAZtCA= Date: Tue, 12 Oct 2021 09:29:30 +0000 Message-ID: References: <20210908120425.10084-1-bbudiredla@marvell.com> <20210908120425.10084-2-bbudiredla@marvell.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 83c79919-4687-4a18-6f2d-08d98d62cb77 x-ms-traffictypediagnostic: CY4PR18MB1590: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:1388; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: DJCun1tjJ7qRaP1FDfa84MNkIdoLHIjocLqj29ioXnIIme+S6faCJuHWn9mThextV8qmlF/aRJzYD3qRc9Ymqz906A2bykKnr/MelJR/fE+oFKvveUfJVQR04WSAah41UOFFAHHwmIlMooFzJRpH4ZJt857GK6BaQOcUXhVX5gbkALBHlcl+Jy78Mma6Irtdq3vYLilooAQi0FnfkLQFzJ87IKNZ1SHCauS7m81WkfXckbPKCbKdbhtwNhXL3G66BrlIdeDn5j45KBvMS0aa/ru1ys/m115ar/OU7MOVSh4ZC/k2F7IUTdoRGnY+cmgmU9VxX/BzhJGxrLtwnQN0WuvKnly3PHyduhEBVzFHyJkzwD2UIT9s+X4AblpeW6/WXtNIdh/z9jvvZQ7sYz/ayH/xBO3qx5vWnsZdGLJ3LviHHvH9mnpHvEmxcTttEVpzyUHSNJ85SUquD46o93IBualmC10nkD8/v1MT+B0xOO5dFdjkzYrBeRD3nh2t0xI+Wq7g3t9CppCm2sGT0sl/7NOZ++19oQvSlmh9dAyT4pprjG9imS7O3Inuu8YpIA9Bq5cseCX45ZVkuxw0feRSNzWo6T8zRbu8qNx2ju+ZC3sX0mK5rdXTX0WP6EuKxv/Nc/J1GFOhjqrPAt9JptjYf5hT7D42KxL+H1cRifjFJ2sFBSh+rb2XqQXUDwxJX5TlsJU9q5t8FeLyVWfIKCFNG0a0BPn7AVsRPPWcC0qO3lE= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CY4PR1801MB2070.namprd18.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(55016002)(54906003)(38100700002)(66556008)(66476007)(71200400001)(66446008)(122000001)(66946007)(30864003)(76116006)(316002)(9686003)(8676002)(33656002)(83380400001)(508600001)(64756008)(86362001)(4326008)(7696005)(38070700005)(6506007)(26005)(5660300002)(107886003)(2906002)(6916009)(186003)(8936002)(52536014)(2004002);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?bXVDTkJySG8rMElUVkpwZ2ljTGVFc3ZVajVmeTA2bENVLzhpSHBiNHJuMkc0?= =?utf-8?B?V05jNU1nVk40MGs2QUNST1lsSm5zSjVzZGN2dE00OHNlNldQOWFkanNNdVdk?= =?utf-8?B?ZHJCYVRmSE5PU0Y2VTh6SXNLanJCa1RtMktPbllpOWhNcW1RSmVPWGdRV0Z2?= =?utf-8?B?K1cvcC9JdnBLdWhEalZaZk1rVDVmODZ0TitON1lPa3RTeU5EdkFJNGw2Qkc5?= =?utf-8?B?SFZHVlZ4RTFjbmgrUkhCLys5TENuVFExTThqQ0lSMXgwOHg1eFNQVmIveDFS?= =?utf-8?B?NEVYc3lrQXpHZlMyc0poUi9YU3ZzNDZCbklYNWlyYmc4VHAvdVh2VGRmMS9o?= =?utf-8?B?VlI3TlVScUpiM3Y5dlM1M0k4Rk5vcWJ3MzVQSTJrb3pTejJQUk1pYk5Ca1BS?= =?utf-8?B?a1hMYWVjYkRVa2RsRFpYS1lZMldKRVZhUXlJZVdJZm9nVXhpbDlCWHgxbFYy?= =?utf-8?B?SVI4TndhOS9tZGw1S3AxVklIeUw1MGRPY1ZWOFF4VlRQN3dGUWZZbERTMTFY?= =?utf-8?B?aVNVejdLUG1WcWFHTGhtUk0zVHhVUFI2d1d1UndMMVZUMVZ6bzlQZ3FtRC9W?= =?utf-8?B?aDUrODFjODZIY2M3M2tjNHVVRTJzMExWQTRtZnZxQkFpMG5BeTliQ2x4SmNm?= =?utf-8?B?YnZvTzJEYVFMWHpXWkpJZmJOcWJZaFgvVnZlOGhMRnpyOEtSRGhiUVU2bWgz?= =?utf-8?B?MjBhZlRFUTRCd2lzMG5EQ3UvLzk1VVFOZlpWODFFRHVvbmpKNXNENWtaSUhZ?= =?utf-8?B?OGFCRndwQWlTS015WlFGc0hQTVQwM2FjLzRRUTdYeTBPekt4WmJnbXZNczV3?= =?utf-8?B?Z2cwV0hvK0FJcmhLT1hveDUrUFdEU2U0U3BCdTRMclhIM0FuREFzMHZvRjJW?= =?utf-8?B?cXdRUEtYM1gwcFBRWVF4ZThneVRaeVdiRFpwM2txUWJ5eW9ONkZ3ZTNzQVRS?= =?utf-8?B?NmNTWjYrdHdhTHY1dDM0MFM5bnI0OHVWRnpwKzkweWVwUmdqUEIxbEdaSmsz?= =?utf-8?B?OGJRekxSdlVVaCtMZ0dCYzdKN3BlZTlLSWpxSmxrMnB3aHpRbEQvYzJrZWY0?= =?utf-8?B?am9IMVdoTk4wcWdPcUdxYTdpUTBBOExrUW9iK0FrSWp1RjZSR3k4aU5NMGxa?= =?utf-8?B?VUVsSU9uQlB3NnBudnZna2hhaHl0VVNpTTQ1NkNSdE9EWkZORkdWUWpSYUpi?= =?utf-8?B?VXFDOGhjMUcxNjduU1E2c0JwL1R1ZXNhZFhTcGk5Sng1SFhMVC9kdkJrZElm?= =?utf-8?B?VVZ2NkJORUZXRG9SQ3R2ckFFSmZhNVU1bXN3YW55SkNJQTlsOUlCZVRCSkkr?= =?utf-8?B?SWFHNmYrSElSY3ZZdzhsSjFZQ2Q4bElySlAzZ0hZblBVQlN5SWhpSnEwUmJ2?= =?utf-8?B?U1ZIR0FGK0pjMzRGS2dTeWpwbWZ0T1FBWlZOekw4akFQTGsyUlRyVC9oTUdU?= =?utf-8?B?TjFoZ2U3aExwMExRemZsVEVsbHJDRHIwQWtqMW9wQTUzamJZeUhOUlg5MUlQ?= =?utf-8?B?eC8wZGVKd09MNXcyU21jSkk0c3B6aXNHUzg3emRsRXV2TnZEMW83cEZHaUpD?= =?utf-8?B?VWk1dzhWRUltdGdWSURFbHM1WUNPQldjWldTVGErWG5vamJBbnBGTGNoRkRO?= =?utf-8?B?c21ZRkhFbFc2S3FkNEs4ZlBHUFN5SmhSbGpCd0hpT2NuRWQyNzVhc01ERk5T?= =?utf-8?B?UFpqMkQ2WlNFZmlEak85YUx4WW9DRlNraGxLYUd6V1NIaExYYnFwdTYyQ0VI?= =?utf-8?Q?IoUJY8Ucepe02dVqux8AxV1QS8ItMoayJf8x+ry?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: marvell.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CY4PR1801MB2070.namprd18.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 83c79919-4687-4a18-6f2d-08d98d62cb77 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Oct 2021 09:29:30.7760 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 70e1fb47-1155-421d-87fc-2e58f638b6e0 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: KOm3GVvEEOyQOnwtxTaI2/68KTtylq9zGZ6FVph85PiDRmELPUQZOAIsvk50h6bi6Kke5y1j35F7gpkPqfi2Pw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR18MB1590 X-Proofpoint-ORIG-GUID: 5wq1v32algwEu5Zl2DjpUZkt62WPxQMM X-Proofpoint-GUID: 5wq1v32algwEu5Zl2DjpUZkt62WPxQMM X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.182.1,Aquarius:18.0.790,Hydra:6.0.425,FMLib:17.0.607.475 definitions=2021-10-12_02,2021-10-11_01,2020-04-07_01 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org DQoNCj4tLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPkZyb206IEJoYXJhdCBCaHVzaGFuIDxi aGFyYXRiLmxpbnV4QGdtYWlsLmNvbT4NCj5TZW50OiBUdWVzZGF5LCBPY3RvYmVyIDEyLCAyMDIx IDE6MTYgUE0NCj5UbzogQmhhc2thcmEgQnVkaXJlZGxhIDxiYnVkaXJlZGxhQG1hcnZlbGwuY29t Pg0KPkNjOiB3aWxsQGtlcm5lbC5vcmc7IG1hcmsucnV0bGFuZEBhcm0uY29tOyByb2JoK2R0QGtl cm5lbC5vcmc7IFN1bmlsDQo+S292dnVyaSBHb3V0aGFtIDxzZ291dGhhbUBtYXJ2ZWxsLmNvbT47 IGxpbnV4LWFybS0NCj5rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZzsgZGV2aWNldHJlZUB2Z2Vy Lmtlcm5lbC5vcmc7IGxpbnV4LQ0KPmtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcNCj5TdWJqZWN0OiBb RVhUXSBSZTogW1BBVENIIHY1IDEvMl0gZHJpdmVyczogcGVyZjogQWRkIExMQy1UQUQgcGVyZiBj b3VudGVyDQo+c3VwcG9ydA0KPg0KPkV4dGVybmFsIEVtYWlsDQo+DQo+LS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K PlBsZWFzZSBmaW5kIGNvbW1lbnRzIGlubGluZQ0KPg0KPk9uIFdlZCwgU2VwIDgsIDIwMjEgYXQg NTozNSBQTSBCaGFza2FyYSBCdWRpcmVkbGENCj48YmJ1ZGlyZWRsYUBtYXJ2ZWxsLmNvbT4gd3Jv dGU6DQo+Pg0KPj4gVGhpcyBkcml2ZXIgYWRkcyBzdXBwb3J0IGZvciBMYXN0LWxldmVsIGNhY2hl IHRhZy1hbmQtZGF0YSB1bml0DQo+PiAoTExDLVRBRCkgUE1VIHRoYXQgaXMgZmVhdHVyZWQgaW4g c29tZSBvZiB0aGUgTWFydmVsbCdzIENOMTBLDQo+PiBpbmZyYXN0cnVjdHVyZSBzaWxpY29ucy4N Cj4+DQo+PiBUaGUgTExDIGlzIGRpdmlkZWQgaW50byAyTiBzbGljZXMgZGlzdHJpYnV0ZWQgYWNy b3NzIE4gTWVzaCB0aWxlcyBpbiBhDQo+PiBzaW5nbGUtc29ja2V0IGNvbmZpZ3VyYXRpb24uIFRo ZSBkcml2ZXIgYWx3YXlzIGNvbmZpZ3VyZXMgdGhlIHNhbWUNCj4+IGNvdW50ZXIgZm9yIGFsbCBv ZiB0aGUgVEFEcy4gVGhlIHVzZXIgd291bGQgZW5kIHVwIGVmZmVjdGl2ZWx5DQo+PiByZXNlcnZp bmcgb25lIG9mIGVpZ2h0IGNvdW50ZXJzIGluIGV2ZXJ5IFRBRCB0byBsb29rIGFjcm9zcyBhbGwg VEFEcy4NCj4+IFRoZSBvY2N1cnJlbmNlcyBvZiBldmVudHMgYXJlIGFnZ3JlZ2F0ZWQgYW5kIHBy ZXNlbnRlZCB0byB0aGUgdXNlciBhdA0KPj4gdGhlIGVuZCBvZiBhbiBhcHBsaWNhdGlvbiBydW4u IFRoZSBkcml2ZXIgZG9lcyBub3QgcHJvdmlkZSBhIHdheSBmb3INCj4+IHRoZSB1c2VyIHRvIHBh cnRpdGlvbiBUQURzIHNvIHRoYXQgZGlmZmVyZW50IFRBRHMgYXJlIHVzZWQgZm9yDQo+PiBkaWZm ZXJlbnQgYXBwbGljYXRpb25zLg0KPj4NCj4+IFRoZSBldmVudCBjb3VudGVycyBhcmUgemVyb2Vk IHRvIHN0YXJ0IGV2ZW50IGNvdW50aW5nIHRvIGF2b2lkIGFueQ0KPj4gcm9sbG92ZXIgaXNzdWVz LiBUQUQgcGVyZiBjb3VudGVycyBhcmUgNjQtYml0LCBzbyBpdCdzIG5vdCBjdXJyZW50bHkNCj4+ IHBvc3NpYmxlIHRvIG92ZXJmbG93IGV2ZW50IGNvdW50ZXJzIGF0IGN1cnJlbnQgbWVzaCBhbmQg Y29yZQ0KPj4gZnJlcXVlbmNpZXMuDQo+Pg0KPj4gVG8gbWVhc3VyZSB0YWQgcG11IGV2ZW50cyB1 c2UgcGVyZiB0b29sIHN0YXQgY29tbWFuZC4gRm9yIGluc3RhbmNlOg0KPj4NCj4+IHBlcmYgc3Rh dCAtZSB0YWRfZGF0X21zaF9pbl9kc3MsdGFkX3JlcV9tc2hfb3V0X2FueSA8YXBwbGljYXRpb24+ IHBlcmYNCj4+IHN0YXQgLWUgdGFkX2FsbG9jX2FueSx0YWRfaGl0X2FueSx0YWRfdGFnX3JkIDxh cHBsaWNhdGlvbj4NCj4+DQo+PiBTaWduZWQtb2ZmLWJ5OiBCaGFza2FyYSBCdWRpcmVkbGEgPGJi dWRpcmVkbGFAbWFydmVsbC5jb20+DQo+PiAtLS0NCj4+ICBkcml2ZXJzL3BlcmYvS2NvbmZpZyAg ICAgICAgICAgICAgICAgfCAgIDcgKw0KPj4gIGRyaXZlcnMvcGVyZi9NYWtlZmlsZSAgICAgICAg ICAgICAgICB8ICAgMSArDQo+PiAgZHJpdmVycy9wZXJmL21hcnZlbGxfY24xMGtfdGFkX3BtdS5j IHwgNDMwDQo+PiArKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4+ICAzIGZpbGVzIGNoYW5n ZWQsIDQzOCBpbnNlcnRpb25zKCspDQo+PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvcGVy Zi9tYXJ2ZWxsX2NuMTBrX3RhZF9wbXUuYw0KPj4NCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3Bl cmYvS2NvbmZpZyBiL2RyaXZlcnMvcGVyZi9LY29uZmlnIGluZGV4DQo+PiA3NzUyMmU1ZWZlMTEu LjczZGNhMTFmODA4MCAxMDA2NDQNCj4+IC0tLSBhL2RyaXZlcnMvcGVyZi9LY29uZmlnDQo+PiAr KysgYi9kcml2ZXJzL3BlcmYvS2NvbmZpZw0KPj4gQEAgLTEzNyw2ICsxMzcsMTMgQEAgY29uZmln IEFSTV9ETUM2MjBfUE1VDQo+PiAgICAgICAgICAgU3VwcG9ydCBmb3IgUE1VIGV2ZW50cyBtb25p dG9yaW5nIG9uIHRoZSBBUk0gRE1DLTYyMCBtZW1vcnkNCj4+ICAgICAgICAgICBjb250cm9sbGVy Lg0KPj4NCj4+ICtjb25maWcgTUFSVkVMTF9DTjEwS19UQURfUE1VDQo+PiArICAgICAgIHRyaXN0 YXRlICJNYXJ2ZWxsIENOMTBLIExMQy1UQUQgUE1VIg0KPj4gKyAgICAgICBkZXBlbmRzIG9uIEFS TTY0DQo+DQo+Q2FuIHlvdSBhZGQgQ09NUElMRV9URVNUIGRlcGVuZGVuY3k/DQo+DQoNCk9rLCBJ IHdpbGwgYWRkIHRoaXMuDQoNCj4+ICsgICAgICAgaGVscA0KPj4gKyAgICAgICAgIFByb3ZpZGVz IHN1cHBvcnQgZm9yIExhc3QtTGV2ZWwgY2FjaGUgVGFnLWFuZC1kYXRhIFVuaXRzIChMTEMtVEFE KQ0KPj4gKyAgICAgICAgIHBlcmZvcm1hbmNlIG1vbml0b3JzIG9uIENOMTBLIGZhbWlseSBzaWxp Y29ucy4NCj4+ICsNCj4+ICBzb3VyY2UgImRyaXZlcnMvcGVyZi9oaXNpbGljb24vS2NvbmZpZyIN Cj4+DQo+PiAgZW5kbWVudQ0KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGVyZi9NYWtlZmlsZSBi L2RyaXZlcnMvcGVyZi9NYWtlZmlsZSBpbmRleA0KPj4gNTI2MGIxMTZjN2RhLi4yZGI1NDE4ZDVi MGEgMTAwNjQ0DQo+PiAtLS0gYS9kcml2ZXJzL3BlcmYvTWFrZWZpbGUNCj4+ICsrKyBiL2RyaXZl cnMvcGVyZi9NYWtlZmlsZQ0KPj4gQEAgLTE0LDMgKzE0LDQgQEAgb2JqLSQoQ09ORklHX1RIVU5E RVJYMl9QTVUpICs9DQo+dGh1bmRlcngyX3BtdS5vDQo+PiAgb2JqLSQoQ09ORklHX1hHRU5FX1BN VSkgKz0geGdlbmVfcG11Lm8NCj4+ICBvYmotJChDT05GSUdfQVJNX1NQRV9QTVUpICs9IGFybV9z cGVfcG11Lm8NCj4+ICBvYmotJChDT05GSUdfQVJNX0RNQzYyMF9QTVUpICs9IGFybV9kbWM2MjBf cG11Lm8NCj4+ICtvYmotJChDT05GSUdfTUFSVkVMTF9DTjEwS19UQURfUE1VKSArPQ0KPm1hcnZl bGxfY24xMGtfdGFkX3BtdS5vDQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9wZXJmL21hcnZlbGxf Y24xMGtfdGFkX3BtdS5jDQo+PiBiL2RyaXZlcnMvcGVyZi9tYXJ2ZWxsX2NuMTBrX3RhZF9wbXUu Yw0KPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4+IGluZGV4IDAwMDAwMDAwMDAwMC4uOTY4Nzcy YTc1N2Y0DQo+PiAtLS0gL2Rldi9udWxsDQo+PiArKysgYi9kcml2ZXJzL3BlcmYvbWFydmVsbF9j bjEwa190YWRfcG11LmMNCj4+IEBAIC0wLDAgKzEsNDMwIEBADQo+PiArLy8gU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IEdQTC0yLjANCj4+ICsvKiBNYXJ2ZWxsIENOMTBLIExMQy1UQUQgcGVyZiBk cml2ZXINCj4+ICsgKg0KPj4gKyAqIENvcHlyaWdodCAoQykgMjAyMSBNYXJ2ZWxsDQo+PiArICoN Cj4+ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yDQo+PiArbW9kaWZ5DQo+PiArICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMNCj4+ICsgKiBwdWJsaXNo ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4NCj4+ICsgKi8NCj4+ICsNCj4+ICsj ZGVmaW5lIHByX2ZtdChmbXQpICJ0YWRfcG11OiAiIGZtdA0KPj4gKw0KPj4gKyNpbmNsdWRlIDxs aW51eC9tb2R1bGUuaD4NCj4+ICsjaW5jbHVkZSA8bGludXgvb2YuaD4NCj4+ICsjaW5jbHVkZSA8 bGludXgvb2ZfYWRkcmVzcy5oPg0KPj4gKyNpbmNsdWRlIDxsaW51eC9vZl9kZXZpY2UuaD4NCj4+ ICsjaW5jbHVkZSA8bGludXgvY3B1aG90cGx1Zy5oPg0KPj4gKyNpbmNsdWRlIDxsaW51eC9wZXJm X2V2ZW50Lmg+DQo+PiArI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPg0KPj4gKyNp bmNsdWRlIDxsaW51eC9hcm0tc21jY2MuaD4NCj4NCj5EbyB3ZSBuZWVkIHRoaXMgaGVhZGVyIGZp bGUgPw0KPg0KDQpObywgdGhpcyB3aWxsIGJlIHJlbW92ZWQuDQoNCj4+ICsNCj4+ICsjZGVmaW5l IFRBRF9QRkNfT0ZGU0VUICAgICAgICAgMHgwDQo+PiArI2RlZmluZSBUQURfUEZDKGNvdW50ZXIp ICAgICAgIChUQURfUEZDX09GRlNFVCB8IChjb3VudGVyIDw8IDMpKQ0KPj4gKyNkZWZpbmUgVEFE X1BSRl9PRkZTRVQgICAgICAgICAweDEwMA0KPj4gKyNkZWZpbmUgVEFEX1BSRihjb3VudGVyKSAg ICAgICAoVEFEX1BSRl9PRkZTRVQgfCAoY291bnRlciA8PCAzKSkNCj4+ICsjZGVmaW5lIFRBRF9Q UkZfQ05UU0VMX01BU0sgICAgMHhGRg0KPj4gKyNkZWZpbmUgVEFEX01BWF9DT1VOVEVSUyAgICAg ICA4DQo+PiArDQo+PiArI2RlZmluZSB0b190YWRfcG11KHApIChjb250YWluZXJfb2YocCwgc3Ry dWN0IHRhZF9wbXUsIHBtdSkpDQo+PiArDQo+PiArc3RydWN0IHRhZF9yZWdpb24gew0KPj4gKyAg ICAgICB2b2lkIF9faW9tZW0gICAgKmJhc2U7DQo+PiArfTsNCj4+ICsNCj4+ICtzdHJ1Y3QgdGFk X3BtdSB7DQo+PiArICAgICAgIHN0cnVjdCBwbXUgcG11Ow0KPj4gKyAgICAgICBzdHJ1Y3QgdGFk X3JlZ2lvbiAqcmVnaW9uczsNCj4+ICsgICAgICAgdTMyIHJlZ2lvbl9jbnQ7DQo+PiArICAgICAg IHVuc2lnbmVkIGludCBjcHU7DQo+PiArICAgICAgIHN0cnVjdCBobGlzdF9ub2RlIG5vZGU7DQo+ PiArICAgICAgIHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudHNbVEFEX01BWF9DT1VOVEVSU107DQo+ PiArICAgICAgIERFQ0xBUkVfQklUTUFQKGNvdW50ZXJzX21hcCwgVEFEX01BWF9DT1VOVEVSUyk7 IH07DQo+PiArDQo+PiArc3RhdGljIGludCB0YWRfcG11X2NwdWhwX3N0YXRlOw0KPj4gKw0KPj4g K3N0YXRpYyB2b2lkIHRhZF9wbXVfZXZlbnRfY291bnRlcl9yZWFkKHN0cnVjdCBwZXJmX2V2ZW50 ICpldmVudCkgew0KPj4gKyAgICAgICBzdHJ1Y3QgdGFkX3BtdSAqdGFkX3BtdSA9IHRvX3RhZF9w bXUoZXZlbnQtPnBtdSk7DQo+PiArICAgICAgIHN0cnVjdCBod19wZXJmX2V2ZW50ICpod2MgPSAm ZXZlbnQtPmh3Ow0KPj4gKyAgICAgICB1MzIgY291bnRlcl9pZHggPSBod2MtPmlkeDsNCj4+ICsg ICAgICAgdTY0IGRlbHRhLCBwcmV2LCBuZXc7DQo+PiArICAgICAgIGludCBpOw0KPj4gKw0KPj4g KyAgICAgICBkbyB7DQo+PiArICAgICAgICAgICAgICAgcHJldiA9IGxvY2FsNjRfcmVhZCgmaHdj LT5wcmV2X2NvdW50KTsNCj4+ICsgICAgICAgICAgICAgICBmb3IgKGkgPSAwLCBuZXcgPSAwOyBp IDwgdGFkX3BtdS0+cmVnaW9uX2NudDsgaSsrKQ0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAg bmV3ICs9IHJlYWRxKHRhZF9wbXUtPnJlZ2lvbnNbaV0uYmFzZSArDQo+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgVEFEX1BGQyhjb3VudGVyX2lkeCkpOw0KPj4gKyAgICAg ICB9IHdoaWxlIChsb2NhbDY0X2NtcHhjaGcoJmh3Yy0+cHJldl9jb3VudCwgcHJldiwgbmV3KSAh PQ0KPj4gKyBwcmV2KTsNCj4+ICsNCj4+ICsgICAgICAgZGVsdGEgPSAobmV3IC0gcHJldikgJiBH RU5NQVNLX1VMTCg2MywgMCk7DQo+PiArICAgICAgIGxvY2FsNjRfYWRkKGRlbHRhLCAmZXZlbnQt PmNvdW50KTsgfQ0KPj4gKw0KPj4gK3N0YXRpYyB2b2lkIHRhZF9wbXVfZXZlbnRfY291bnRlcl9z dG9wKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCwgaW50DQo+PiArZmxhZ3MpIHsNCj4+ICsgICAg ICAgc3RydWN0IHRhZF9wbXUgKnRhZF9wbXUgPSB0b190YWRfcG11KGV2ZW50LT5wbXUpOw0KPj4g KyAgICAgICBzdHJ1Y3QgaHdfcGVyZl9ldmVudCAqaHdjID0gJmV2ZW50LT5odzsNCj4+ICsgICAg ICAgdTMyIGNvdW50ZXJfaWR4ID0gaHdjLT5pZHg7DQo+PiArICAgICAgIGludCBpOw0KPj4gKw0K Pj4gKyAgICAgICAvKiBUQUQoKV9QRkMoKSBzdG9wIGNvdW50aW5nIG9uIHRoZSB3cml0ZQ0KPj4g KyAgICAgICAgKiB3aGljaCBzZXRzIFRBRCgpX1BSRigpW0NOVFNFTF0gPT0gMA0KPj4gKyAgICAg ICAgKi8NCj4+ICsgICAgICAgZm9yIChpID0gMDsgaSA8IHRhZF9wbXUtPnJlZ2lvbl9jbnQ7IGkr KykNCj4+ICsgICAgICAgICAgICAgICB3cml0ZXFfcmVsYXhlZCgwLCB0YWRfcG11LT5yZWdpb25z W2ldLmJhc2UgKw0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRBRF9QUkYoY291 bnRlcl9pZHgpKTsNCj4+ICsNCj4+ICsgICAgICAgdGFkX3BtdV9ldmVudF9jb3VudGVyX3JlYWQo ZXZlbnQpOw0KPj4gKyAgICAgICBod2MtPnN0YXRlIHw9IFBFUkZfSEVTX1NUT1BQRUQgfCBQRVJG X0hFU19VUFRPREFURTsgfQ0KPj4gKw0KPj4gK3N0YXRpYyB2b2lkIHRhZF9wbXVfZXZlbnRfY291 bnRlcl9zdGFydChzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQsIGludA0KPj4gK2ZsYWdzKSB7DQo+ PiArICAgICAgIHN0cnVjdCB0YWRfcG11ICp0YWRfcG11ID0gdG9fdGFkX3BtdShldmVudC0+cG11 KTsNCj4+ICsgICAgICAgc3RydWN0IGh3X3BlcmZfZXZlbnQgKmh3YyA9ICZldmVudC0+aHc7DQo+ PiArICAgICAgIHUzMiBldmVudF9pZHggPSBldmVudC0+YXR0ci5jb25maWc7DQo+PiArICAgICAg IHUzMiBjb3VudGVyX2lkeCA9IGh3Yy0+aWR4Ow0KPj4gKyAgICAgICB1NjQgcmVnX3ZhbDsNCj4+ ICsgICAgICAgaW50IGk7DQo+PiArDQo+PiArICAgICAgIGh3Yy0+c3RhdGUgPSAwOw0KPj4gKw0K Pj4gKyAgICAgICAvKiBUeXBpY2FsbHkgVEFEX1BGQygpIGFyZSB6ZXJvZWQgdG8gc3RhcnQgY291 bnRpbmcgKi8NCj4+ICsgICAgICAgZm9yIChpID0gMDsgaSA8IHRhZF9wbXUtPnJlZ2lvbl9jbnQ7 IGkrKykNCj4+ICsgICAgICAgICAgICAgICB3cml0ZXFfcmVsYXhlZCgwLCB0YWRfcG11LT5yZWdp b25zW2ldLmJhc2UgKw0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRBRF9QRkMo Y291bnRlcl9pZHgpKTsNCj4+ICsNCj4+ICsgICAgICAgLyogVEFEKClfUEZDKCkgc3RhcnQgY291 bnRpbmcgb24gdGhlIHdyaXRlDQo+PiArICAgICAgICAqIHdoaWNoIHNldHMgVEFEKClfUFJGKClb Q05UU0VMXSAhPSAwDQo+PiArICAgICAgICAqLw0KPj4gKyAgICAgICBmb3IgKGkgPSAwOyBpIDwg dGFkX3BtdS0+cmVnaW9uX2NudDsgaSsrKSB7DQo+PiArICAgICAgICAgICAgICAgcmVnX3ZhbCA9 IHJlYWRxX3JlbGF4ZWQodGFkX3BtdS0+cmVnaW9uc1tpXS5iYXNlICsNCj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQURfUFJGKGNvdW50ZXJfaWR4KSk7DQo+PiAr ICAgICAgICAgICAgICAgcmVnX3ZhbCB8PSAoZXZlbnRfaWR4ICYgMHhGRik7DQo+PiArICAgICAg ICAgICAgICAgd3JpdGVxX3JlbGF4ZWQocmVnX3ZhbCwgdGFkX3BtdS0+cmVnaW9uc1tpXS5iYXNl ICsNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQURfUFJGKGNvdW50ZXJfaWR4 KSk7DQo+PiArICAgICAgIH0NCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIHZvaWQgdGFkX3BtdV9l dmVudF9jb3VudGVyX2RlbChzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQsIGludA0KPj4gK2ZsYWdz KSB7DQo+PiArICAgICAgIHN0cnVjdCB0YWRfcG11ICp0YWRfcG11ID0gdG9fdGFkX3BtdShldmVu dC0+cG11KTsNCj4+ICsgICAgICAgc3RydWN0IGh3X3BlcmZfZXZlbnQgKmh3YyA9ICZldmVudC0+ aHc7DQo+PiArICAgICAgIGludCBpZHggPSBod2MtPmlkeDsNCj4+ICsNCj4+ICsgICAgICAgdGFk X3BtdV9ldmVudF9jb3VudGVyX3N0b3AoZXZlbnQsIGZsYWdzIHwgUEVSRl9FRl9VUERBVEUpOw0K Pj4gKyAgICAgICB0YWRfcG11LT5ldmVudHNbaWR4XSA9IE5VTEw7DQo+PiArICAgICAgIGNsZWFy X2JpdChpZHgsIHRhZF9wbXUtPmNvdW50ZXJzX21hcCk7IH0NCj4+ICsNCj4+ICtzdGF0aWMgaW50 IHRhZF9wbXVfZXZlbnRfY291bnRlcl9hZGQoc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50LCBpbnQN Cj4+ICtmbGFncykgew0KPj4gKyAgICAgICBzdHJ1Y3QgdGFkX3BtdSAqdGFkX3BtdSA9IHRvX3Rh ZF9wbXUoZXZlbnQtPnBtdSk7DQo+PiArICAgICAgIHN0cnVjdCBod19wZXJmX2V2ZW50ICpod2Mg PSAmZXZlbnQtPmh3Ow0KPj4gKyAgICAgICBpbnQgaWR4Ow0KPj4gKw0KPj4gKyAgICAgICAvKiBH ZXQgYSBmcmVlIGNvdW50ZXIgZm9yIHRoaXMgZXZlbnQgKi8NCj4+ICsgICAgICAgaWR4ID0gZmlu ZF9maXJzdF96ZXJvX2JpdCh0YWRfcG11LT5jb3VudGVyc19tYXAsDQo+VEFEX01BWF9DT1VOVEVS Uyk7DQo+PiArICAgICAgIGlmIChpZHggPT0gVEFEX01BWF9DT1VOVEVSUykNCj4+ICsgICAgICAg ICAgICAgICByZXR1cm4gLUVBR0FJTjsNCj4+ICsNCj4+ICsgICAgICAgc2V0X2JpdChpZHgsIHRh ZF9wbXUtPmNvdW50ZXJzX21hcCk7DQo+PiArDQo+PiArICAgICAgIGh3Yy0+aWR4ID0gaWR4Ow0K Pj4gKyAgICAgICBod2MtPnN0YXRlID0gUEVSRl9IRVNfU1RPUFBFRDsNCj4+ICsgICAgICAgdGFk X3BtdS0+ZXZlbnRzW2lkeF0gPSBldmVudDsNCj4+ICsNCj4+ICsgICAgICAgaWYgKGZsYWdzICYg UEVSRl9FRl9TVEFSVCkNCj4+ICsgICAgICAgICAgICAgICB0YWRfcG11X2V2ZW50X2NvdW50ZXJf c3RhcnQoZXZlbnQsIGZsYWdzKTsNCj4+ICsNCj4+ICsgICAgICAgcmV0dXJuIDA7DQo+PiArfQ0K Pj4gKw0KPj4gK3N0YXRpYyBpbnQgdGFkX3BtdV9ldmVudF9pbml0KHN0cnVjdCBwZXJmX2V2ZW50 ICpldmVudCkgew0KPj4gKyAgICAgICBzdHJ1Y3QgdGFkX3BtdSAqdGFkX3BtdSA9IHRvX3RhZF9w bXUoZXZlbnQtPnBtdSk7DQo+PiArDQo+PiArICAgICAgIGlmICghZXZlbnQtPmF0dHIuZGlzYWJs ZWQpDQo+PiArICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+PiArDQo+PiArICAgICAg IGlmIChldmVudC0+YXR0ci50eXBlICE9IGV2ZW50LT5wbXUtPnR5cGUpDQo+PiArICAgICAgICAg ICAgICAgcmV0dXJuIC1FTk9FTlQ7DQo+PiArDQo+PiArICAgICAgIGlmIChldmVudC0+c3RhdGUg IT0gUEVSRl9FVkVOVF9TVEFURV9PRkYpDQo+PiArICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5W QUw7DQo+PiArDQo+PiArICAgICAgIGV2ZW50LT5jcHUgPSB0YWRfcG11LT5jcHU7DQo+PiArICAg ICAgIGV2ZW50LT5ody5pZHggPSAtMTsNCj4+ICsgICAgICAgZXZlbnQtPmh3LmNvbmZpZ19iYXNl ID0gZXZlbnQtPmF0dHIuY29uZmlnOw0KPj4gKw0KPj4gKyAgICAgICByZXR1cm4gMDsNCj4+ICt9 DQo+PiArDQo+PiArc3RhdGljIHNzaXplX3QgdGFkX3BtdV9ldmVudF9zaG93KHN0cnVjdCBkZXZp Y2UgKmRldiwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRldmlj ZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXINCj4+ICsqcGFnZSkgew0KPj4gKyAgICAgICBzdHJ1Y3Qg cGVyZl9wbXVfZXZlbnRzX2F0dHIgKnBtdV9hdHRyOw0KPj4gKw0KPj4gKyAgICAgICBwbXVfYXR0 ciA9IGNvbnRhaW5lcl9vZihhdHRyLCBzdHJ1Y3QgcGVyZl9wbXVfZXZlbnRzX2F0dHIsIGF0dHIp Ow0KPj4gKyAgICAgICByZXR1cm4gc3ByaW50ZihwYWdlLCAiZXZlbnQ9MHglMDJsbHhcbiIsIHBt dV9hdHRyLT5pZCk7DQo+DQo+UGxlYXNlIHVzZSBzeXNmc19lbWl0KCk7DQo+DQoNClRha2VuLg0K DQo+PiArfQ0KPj4gKw0KPj4gKyNkZWZpbmUgVEFEX1BNVV9FVkVOVF9BVFRSKG5hbWUsIGNvbmZp ZykgICAgICAgICAgICAgICAgICAgICAgIFwNCj4+ICsgICAgICAgUE1VX0VWRU5UX0FUVFJfSUQo bmFtZSwgdGFkX3BtdV9ldmVudF9zaG93LCBjb25maWcpDQo+PiArDQo+PiArc3RhdGljIHN0cnVj dCBhdHRyaWJ1dGUgKnRhZF9wbXVfZXZlbnRfYXR0cnNbXSA9IHsNCj4+ICsgICAgICAgVEFEX1BN VV9FVkVOVF9BVFRSKHRhZF9ub25lLCAweDApLA0KPj4gKyAgICAgICBUQURfUE1VX0VWRU5UX0FU VFIodGFkX3JlcV9tc2hfaW5fYW55LCAweDEpLA0KPj4gKyAgICAgICBUQURfUE1VX0VWRU5UX0FU VFIodGFkX3JlcV9tc2hfaW5fbW4sIDB4MiksDQo+PiArICAgICAgIFRBRF9QTVVfRVZFTlRfQVRU Uih0YWRfcmVxX21zaF9pbl9leGxtbiwgMHgzKSwNCj4+ICsgICAgICAgVEFEX1BNVV9FVkVOVF9B VFRSKHRhZF9yc3BfbXNoX2luX2FueSwgMHg0KSwNCj4+ICsgICAgICAgVEFEX1BNVV9FVkVOVF9B VFRSKHRhZF9yc3BfbXNoX2luX21uLCAweDUpLA0KPj4gKyAgICAgICBUQURfUE1VX0VWRU5UX0FU VFIodGFkX3JzcF9tc2hfaW5fZXhsbW4sIDB4NiksDQo+PiArICAgICAgIFRBRF9QTVVfRVZFTlRf QVRUUih0YWRfcnNwX21zaF9pbl9kc3MsIDB4NyksDQo+PiArICAgICAgIFRBRF9QTVVfRVZFTlRf QVRUUih0YWRfcnNwX21zaF9pbl9yZXRyeV9kc3MsIDB4OCksDQo+PiArICAgICAgIFRBRF9QTVVf RVZFTlRfQVRUUih0YWRfZGF0X21zaF9pbl9hbnksIDB4OSksDQo+PiArICAgICAgIFRBRF9QTVVf RVZFTlRfQVRUUih0YWRfZGF0X21zaF9pbl9kc3MsIDB4YSksDQo+PiArICAgICAgIFRBRF9QTVVf RVZFTlRfQVRUUih0YWRfcmVxX21zaF9vdXRfYW55LCAweGIpLA0KPj4gKyAgICAgICBUQURfUE1V X0VWRU5UX0FUVFIodGFkX3JlcV9tc2hfb3V0X2Rzc19yZCwgMHhjKSwNCj4+ICsgICAgICAgVEFE X1BNVV9FVkVOVF9BVFRSKHRhZF9yZXFfbXNoX291dF9kc3Nfd3IsIDB4ZCksDQo+PiArICAgICAg IFRBRF9QTVVfRVZFTlRfQVRUUih0YWRfcmVxX21zaF9vdXRfZXZpY3QsIDB4ZSksDQo+PiArICAg ICAgIFRBRF9QTVVfRVZFTlRfQVRUUih0YWRfcnNwX21zaF9vdXRfYW55LCAweGYpLA0KPj4gKyAg ICAgICBUQURfUE1VX0VWRU5UX0FUVFIodGFkX3JzcF9tc2hfb3V0X3JldHJ5X2V4bG1uLCAweDEw KSwNCj4+ICsgICAgICAgVEFEX1BNVV9FVkVOVF9BVFRSKHRhZF9yc3BfbXNoX291dF9yZXRyeV9t biwgMHgxMSksDQo+PiArICAgICAgIFRBRF9QTVVfRVZFTlRfQVRUUih0YWRfcnNwX21zaF9vdXRf ZXhsbW4sIDB4MTIpLA0KPj4gKyAgICAgICBUQURfUE1VX0VWRU5UX0FUVFIodGFkX3JzcF9tc2hf b3V0X21uLCAweDEzKSwNCj4+ICsgICAgICAgVEFEX1BNVV9FVkVOVF9BVFRSKHRhZF9zbnBfbXNo X291dF9hbnksIDB4MTQpLA0KPj4gKyAgICAgICBUQURfUE1VX0VWRU5UX0FUVFIodGFkX3NucF9t c2hfb3V0X21uLCAweDE1KSwNCj4+ICsgICAgICAgVEFEX1BNVV9FVkVOVF9BVFRSKHRhZF9zbnBf bXNoX291dF9leGxtbiwgMHgxNiksDQo+PiArICAgICAgIFRBRF9QTVVfRVZFTlRfQVRUUih0YWRf ZGF0X21zaF9vdXRfYW55LCAweDE3KSwNCj4+ICsgICAgICAgVEFEX1BNVV9FVkVOVF9BVFRSKHRh ZF9kYXRfbXNoX291dF9maWxsLCAweDE4KSwNCj4+ICsgICAgICAgVEFEX1BNVV9FVkVOVF9BVFRS KHRhZF9kYXRfbXNoX291dF9kc3MsIDB4MTkpLA0KPj4gKyAgICAgICBUQURfUE1VX0VWRU5UX0FU VFIodGFkX2FsbG9jX2R0ZywgMHgxYSksDQo+PiArICAgICAgIFRBRF9QTVVfRVZFTlRfQVRUUih0 YWRfYWxsb2NfbHRnLCAweDFiKSwNCj4+ICsgICAgICAgVEFEX1BNVV9FVkVOVF9BVFRSKHRhZF9h bGxvY19hbnksIDB4MWMpLA0KPj4gKyAgICAgICBUQURfUE1VX0VWRU5UX0FUVFIodGFkX2hpdF9k dGcsIDB4MWQpLA0KPj4gKyAgICAgICBUQURfUE1VX0VWRU5UX0FUVFIodGFkX2hpdF9sdGcsIDB4 MWUpLA0KPj4gKyAgICAgICBUQURfUE1VX0VWRU5UX0FUVFIodGFkX2hpdF9hbnksIDB4MWYpLA0K Pj4gKyAgICAgICBUQURfUE1VX0VWRU5UX0FUVFIodGFkX3RhZ19yZCwgMHgyMCksDQo+PiArICAg ICAgIFRBRF9QTVVfRVZFTlRfQVRUUih0YWRfZGF0X3JkLCAweDIxKSwNCj4+ICsgICAgICAgVEFE X1BNVV9FVkVOVF9BVFRSKHRhZF9kYXRfcmRfYnlwLCAweDIyKSwNCj4+ICsgICAgICAgVEFEX1BN VV9FVkVOVF9BVFRSKHRhZF9pZmJfb2NjLCAweDIzKSwNCj4+ICsgICAgICAgVEFEX1BNVV9FVkVO VF9BVFRSKHRhZF9yZXFfb2NjLCAweDI0KSwNCj4+ICsgICAgICAgTlVMTCwNCj4NCj5leHRyYSAn IGZvciBsYXN0IGVudHJ5Lg0KPg0KDQpUYWtlbi4NCg0KPj4gK307DQo+PiArDQo+PiArc3RhdGlj IGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgdGFkX3BtdV9ldmVudHNfYXR0cl9ncm91cCA9 IHsNCj4+ICsgICAgICAgLm5hbWUgPSAiZXZlbnRzIiwNCj4+ICsgICAgICAgLmF0dHJzID0gdGFk X3BtdV9ldmVudF9hdHRycywNCj4+ICt9Ow0KPj4gKw0KPj4gK1BNVV9GT1JNQVRfQVRUUihldmVu dCwgImNvbmZpZzowLTciKTsNCj4+ICsNCj4+ICtzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqdGFk X3BtdV9mb3JtYXRfYXR0cnNbXSA9IHsNCj4+ICsgICAgICAgJmZvcm1hdF9hdHRyX2V2ZW50LmF0 dHIsDQo+PiArICAgICAgIE5VTEwsDQo+DQo+ZXh0cmEgJyBoZXJlIGFzIHdlbGwNCj4NCg0KVGFr ZW4uDQoNCj4+ICt9Ow0KPj4gKw0KPj4gK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIHRh ZF9wbXVfZm9ybWF0X2F0dHJfZ3JvdXAgPSB7DQo+PiArICAgICAgIC5uYW1lID0gImZvcm1hdCIs DQo+PiArICAgICAgIC5hdHRycyA9IHRhZF9wbXVfZm9ybWF0X2F0dHJzLCB9Ow0KPj4gKw0KPj4g K3N0YXRpYyBzc2l6ZV90IHRhZF9wbXVfY3B1bWFza19zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwN Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1 dGUgKmF0dHIsIGNoYXINCj4+ICsqYnVmKSB7DQo+PiArICAgICAgIHN0cnVjdCB0YWRfcG11ICp0 YWRfcG11ID0gdG9fdGFkX3BtdShkZXZfZ2V0X2RydmRhdGEoZGV2KSk7DQo+PiArDQo+PiArICAg ICAgIHJldHVybiBjcHVtYXBfcHJpbnRfdG9fcGFnZWJ1Zih0cnVlLCBidWYsDQo+PiArY3B1bWFz a19vZih0YWRfcG11LT5jcHUpKTsgfQ0KPj4gKw0KPj4gK3N0YXRpYyBERVZJQ0VfQVRUUihjcHVt YXNrLCAwNDQ0LCB0YWRfcG11X2NwdW1hc2tfc2hvdywgTlVMTCk7DQo+PiArDQo+PiArc3RhdGlj IHN0cnVjdCBhdHRyaWJ1dGUgKnRhZF9wbXVfY3B1bWFza19hdHRyc1tdID0gew0KPj4gKyAgICAg ICAmZGV2X2F0dHJfY3B1bWFzay5hdHRyLA0KPj4gKyAgICAgICBOVUxMLA0KPj4gK307DQo+PiAr DQo+PiArc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgdGFkX3BtdV9jcHVtYXNrX2F0dHJf Z3JvdXAgPSB7DQo+PiArICAgICAgIC5hdHRycyA9IHRhZF9wbXVfY3B1bWFza19hdHRycywgfTsN Cj4+ICsNCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqdGFkX3BtdV9h dHRyX2dyb3Vwc1tdID0gew0KPj4gKyAgICAgICAmdGFkX3BtdV9ldmVudHNfYXR0cl9ncm91cCwN Cj4+ICsgICAgICAgJnRhZF9wbXVfZm9ybWF0X2F0dHJfZ3JvdXAsDQo+PiArICAgICAgICZ0YWRf cG11X2NwdW1hc2tfYXR0cl9ncm91cCwNCj4+ICsgICAgICAgTlVMTCwNCj4NCj5leHRyYSAnIGhl cmUgYXMgd2VsbC4NCj4NCg0KVGFrZW4uDQoNCj4+ICt9Ow0KPj4gKw0KPj4gK3N0YXRpYyBpbnQg dGFkX3BtdV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KSB7DQo+PiArICAgICAg IHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSA9IHBkZXYtPmRldi5vZl9ub2RlOw0KPj4gKyAgICAg ICBzdHJ1Y3QgdGFkX3JlZ2lvbiAqcmVnaW9uczsNCj4+ICsgICAgICAgc3RydWN0IHRhZF9wbXUg KnRhZF9wbXU7DQo+PiArICAgICAgIHN0cnVjdCByZXNvdXJjZSAqcmVzOw0KPj4gKyAgICAgICB1 MzIgdGFkX3BtdV9wYWdlX3NpemU7DQo+PiArICAgICAgIHUzMiB0YWRfcGFnZV9zaXplOw0KPj4g KyAgICAgICB1MzIgdGFkX2NudDsNCj4+ICsgICAgICAgaW50IGksIHJldDsNCj4+ICsgICAgICAg Y2hhciAqbmFtZTsNCj4+ICsNCj4+ICsgICAgICAgdGFkX3BtdSA9IGRldm1fa3phbGxvYygmcGRl di0+ZGV2LCBzaXplb2YoKnRhZF9wbXUpLA0KPkdGUF9LRVJORUwpOw0KPj4gKyAgICAgICBpZiAo IXRhZF9wbXUpDQo+PiArICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07DQo+PiArDQo+PiAr ICAgICAgIHBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIHRhZF9wbXUpOw0KPj4gKw0KPj4gKyAg ICAgICByZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9NRU0sIDAp Ow0KPj4gKyAgICAgICBpZiAoIXJlcykgew0KPj4gKyAgICAgICAgICAgICAgIGRldl9lcnIoJnBk ZXYtPmRldiwgIk1lbSByZXNvdXJjZSBub3QgZm91bmRcbiIpOw0KPj4gKyAgICAgICAgICAgICAg IHJldHVybiAtRU5PREVWOw0KPj4gKyAgICAgICB9DQo+PiArDQo+PiArICAgICAgIHJldCA9IG9m X3Byb3BlcnR5X3JlYWRfdTMyKG5vZGUsICJtYXJ2ZWxsLHRhZC1wYWdlLXNpemUiLA0KPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdGFkX3BhZ2Vfc2l6ZSk7DQo+PiArICAg ICAgIGlmIChyZXQpIHsNCj4+ICsgICAgICAgICAgICAgICBkZXZfZXJyKCZwZGV2LT5kZXYsICJD YW4ndCBmaW5kIHRhZC1wYWdlLXNpemUgcHJvcGVydHlcbiIpOw0KPj4gKyAgICAgICAgICAgICAg IHJldHVybiByZXQ7DQo+PiArICAgICAgIH0NCj4+ICsNCj4+ICsgICAgICAgcmV0ID0gb2ZfcHJv cGVydHlfcmVhZF91MzIobm9kZSwgIm1hcnZlbGwsdGFkLXBtdS1wYWdlLXNpemUiLA0KPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdGFkX3BtdV9wYWdlX3NpemUpOw0KPj4g KyAgICAgICBpZiAocmV0KSB7DQo+PiArICAgICAgICAgICAgICAgZGV2X2VycigmcGRldi0+ZGV2 LCAiQ2FuJ3QgZmluZCB0YWQtcG11LXBhZ2Utc2l6ZSBwcm9wZXJ0eVxuIik7DQo+PiArICAgICAg ICAgICAgICAgcmV0dXJuIHJldDsNCj4+ICsgICAgICAgfQ0KPj4gKw0KPj4gKyAgICAgICByZXQg PSBvZl9wcm9wZXJ0eV9yZWFkX3UzMihub2RlLCAibWFydmVsbCx0YWQtY250IiwgJnRhZF9jbnQp Ow0KPj4gKyAgICAgICBpZiAocmV0KSB7DQo+PiArICAgICAgICAgICAgICAgZGV2X2VycigmcGRl di0+ZGV2LCAiQ2FuJ3QgZmluZCB0YWQtY250IHByb3BlcnR5XG4iKTsNCj4+ICsgICAgICAgICAg ICAgICByZXR1cm4gcmV0Ow0KPj4gKyAgICAgICB9DQo+PiArDQo+PiArICAgICAgIHJlZ2lvbnMg PSBkZXZtX2tjYWxsb2MoJnBkZXYtPmRldiwgdGFkX2NudCwNCj4+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzaXplb2YoKnJlZ2lvbnMpLCBHRlBfS0VSTkVMKTsNCj4+ICsgICAgICAg aWYgKCFyZWdpb25zKQ0KPj4gKyAgICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOw0KPj4gKw0K Pj4gKyAgICAgICAvKiBpb3JlbWFwIHRoZSBkaXN0cmlidXRlZCBUQUQgcG11IHJlZ2lvbnMgKi8N Cj4+ICsgICAgICAgZm9yIChpID0gMDsgaSA8IHRhZF9jbnQgJiYgcmVzLT5zdGFydCA8IHJlcy0+ ZW5kOyBpKyspIHsNCj4+ICsgICAgICAgICAgICAgICByZWdpb25zW2ldLmJhc2UgPSBkZXZtX2lv cmVtYXAoJnBkZXYtPmRldiwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcmVzLT5zdGFydCwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdGFkX3BtdV9wYWdlX3NpemUpOw0KPj4gKyAgICAgICAgICAgICAg IGlmIChJU19FUlIocmVnaW9uc1tpXS5iYXNlKSkgew0KPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgZGV2X2VycigmcGRldi0+ZGV2LCAiVEFEJWQgaW9yZW1hcCBmYWlsXG4iLCBpKTsNCj4+ICsg ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOw0KPj4gKyAgICAgICAgICAgICAg IH0NCj4+ICsgICAgICAgICAgICAgICByZXMtPnN0YXJ0ICs9IHRhZF9wYWdlX3NpemU7DQo+PiAr ICAgICAgIH0NCj4+ICsNCj4+ICsgICAgICAgdGFkX3BtdS0+cmVnaW9ucyA9IHJlZ2lvbnM7DQo+ PiArICAgICAgIHRhZF9wbXUtPnJlZ2lvbl9jbnQgPSB0YWRfY250Ow0KPj4gKw0KPj4gKyAgICAg ICB0YWRfcG11LT5wbXUgPSAoc3RydWN0IHBtdSkgew0KPj4gKw0KPj4gKyAgICAgICAgICAgICAg IC5tb2R1bGUgICAgICAgICA9IFRISVNfTU9EVUxFLA0KPj4gKyAgICAgICAgICAgICAgIC5hdHRy X2dyb3VwcyAgICA9IHRhZF9wbXVfYXR0cl9ncm91cHMsDQo+PiArICAgICAgICAgICAgICAgLmNh cGFiaWxpdGllcyAgID0gUEVSRl9QTVVfQ0FQX05PX0VYQ0xVREUgfA0KPj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFBFUkZfUE1VX0NBUF9OT19JTlRFUlJVUFQsDQo+PiArICAg ICAgICAgICAgICAgLnRhc2tfY3R4X25yICAgID0gcGVyZl9pbnZhbGlkX2NvbnRleHQsDQo+PiAr DQo+PiArICAgICAgICAgICAgICAgLmV2ZW50X2luaXQgICAgID0gdGFkX3BtdV9ldmVudF9pbml0 LA0KPj4gKyAgICAgICAgICAgICAgIC5hZGQgICAgICAgICAgICA9IHRhZF9wbXVfZXZlbnRfY291 bnRlcl9hZGQsDQo+PiArICAgICAgICAgICAgICAgLmRlbCAgICAgICAgICAgID0gdGFkX3BtdV9l dmVudF9jb3VudGVyX2RlbCwNCj4+ICsgICAgICAgICAgICAgICAuc3RhcnQgICAgICAgICAgPSB0 YWRfcG11X2V2ZW50X2NvdW50ZXJfc3RhcnQsDQo+PiArICAgICAgICAgICAgICAgLnN0b3AgICAg ICAgICAgID0gdGFkX3BtdV9ldmVudF9jb3VudGVyX3N0b3AsDQo+PiArICAgICAgICAgICAgICAg LnJlYWQgICAgICAgICAgID0gdGFkX3BtdV9ldmVudF9jb3VudGVyX3JlYWQsDQo+PiArICAgICAg IH07DQo+PiArDQo+PiArICAgICAgIHRhZF9wbXUtPmNwdSA9IHJhd19zbXBfcHJvY2Vzc29yX2lk KCk7DQo+PiArDQo+PiArICAgICAgIC8qIFJlZ2lzdGVyIHBtdSBpbnN0YW5jZSBmb3IgY3B1IGhv dHBsdWcgKi8NCj4+ICsgICAgICAgcmV0ID0gY3B1aHBfc3RhdGVfYWRkX2luc3RhbmNlX25vY2Fs bHModGFkX3BtdV9jcHVocF9zdGF0ZSwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJnRhZF9wbXUtPm5vZGUpOw0KPj4gKyAgICAgICBpZiAocmV0KSB7 DQo+PiArICAgICAgICAgICAgICAgZGV2X2VycigmcGRldi0+ZGV2LCAiRXJyb3IgJWQgcmVnaXN0 ZXJpbmcgaG90cGx1Z1xuIiwgcmV0KTsNCj4+ICsgICAgICAgICAgICAgICByZXR1cm4gcmV0Ow0K Pj4gKyAgICAgICB9DQo+PiArDQo+PiArICAgICAgIG5hbWUgPSAidGFkIjsNCj4+ICsgICAgICAg cmV0ID0gcGVyZl9wbXVfcmVnaXN0ZXIoJnRhZF9wbXUtPnBtdSwgbmFtZSwgLTEpOw0KPj4gKyAg ICAgICBpZiAocmV0KQ0KPj4gKyAgICAgICAgICAgICAgIGNwdWhwX3N0YXRlX3JlbW92ZV9pbnN0 YW5jZV9ub2NhbGxzKHRhZF9wbXVfY3B1aHBfc3RhdGUsDQo+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRhZF9wbXUtPm5vZGUpOw0KPj4gKw0K Pj4gKyAgICAgICByZXR1cm4gcmV0Ow0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW50IHRhZF9w bXVfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpIHsNCj4+ICsgICAgICAgc3Ry dWN0IHRhZF9wbXUgKnBtdSA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOw0KPj4gKw0KPj4g KyAgICAgICBjcHVocF9zdGF0ZV9yZW1vdmVfaW5zdGFuY2Vfbm9jYWxscyh0YWRfcG11X2NwdWhw X3N0YXRlLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJnBtdS0+bm9kZSk7DQo+PiArICAgICAgIHBlcmZfcG11X3VucmVnaXN0ZXIoJnBtdS0+cG11 KTsNCj4+ICsNCj4+ICsgICAgICAgcmV0dXJuIDA7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBj b25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHRhZF9wbXVfb2ZfbWF0Y2hbXSA9IHsNCj4+ICsgICAg ICAgeyAuY29tcGF0aWJsZSA9ICJtYXJ2ZWxsLGNuMTBrLXRhZC1wbXUiLCB9LA0KPj4gKyAgICAg ICB7fSwNCj4+ICt9Ow0KPj4gKw0KPj4gK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHRh ZF9wbXVfZHJpdmVyID0gew0KPj4gKyAgICAgICAuZHJpdmVyICAgICAgICAgPSB7DQo+PiArICAg ICAgICAgICAgICAgLm5hbWUgICA9ICJjbjEwa190YWRfcG11IiwNCj4+ICsgICAgICAgICAgICAg ICAub2ZfbWF0Y2hfdGFibGUgPSBvZl9tYXRjaF9wdHIodGFkX3BtdV9vZl9tYXRjaCksDQo+PiAr ICAgICAgICAgICAgICAgLnN1cHByZXNzX2JpbmRfYXR0cnMgPSB0cnVlLA0KPj4gKyAgICAgICB9 LA0KPj4gKyAgICAgICAucHJvYmUgICAgICAgICAgPSB0YWRfcG11X3Byb2JlLA0KPj4gKyAgICAg ICAucmVtb3ZlICAgICAgICAgPSB0YWRfcG11X3JlbW92ZSwNCj4+ICt9Ow0KPj4gKw0KPj4gK3N0 YXRpYyBpbnQgdGFkX3BtdV9vZmZsaW5lX2NwdSh1bnNpZ25lZCBpbnQgY3B1LCBzdHJ1Y3QgaGxp c3Rfbm9kZQ0KPj4gKypub2RlKSB7DQo+PiArICAgICAgIHN0cnVjdCB0YWRfcG11ICpwbXUgPSBo bGlzdF9lbnRyeV9zYWZlKG5vZGUsIHN0cnVjdCB0YWRfcG11LCBub2RlKTsNCj4+ICsgICAgICAg dW5zaWduZWQgaW50IHRhcmdldDsNCj4+ICsNCj4+ICsgICAgICAgaWYgKGNwdSAhPSBwbXUtPmNw dSkNCj4+ICsgICAgICAgICAgICAgICByZXR1cm4gMDsNCj4+ICsNCj4+ICsgICAgICAgdGFyZ2V0 ID0gY3B1bWFza19hbnlfYnV0KGNwdV9vbmxpbmVfbWFzaywgY3B1KTsNCj4+ICsgICAgICAgaWYg KHRhcmdldCA+PSBucl9jcHVfaWRzKQ0KPj4gKyAgICAgICAgICAgICAgIHJldHVybiAwOw0KPj4g Kw0KPj4gKyAgICAgICBwZXJmX3BtdV9taWdyYXRlX2NvbnRleHQoJnBtdS0+cG11LCBjcHUsIHRh cmdldCk7DQo+PiArICAgICAgIHBtdS0+Y3B1ID0gdGFyZ2V0Ow0KPj4gKw0KPj4gKyAgICAgICBy ZXR1cm4gMDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGludCBfX2luaXQgdGFkX3BtdV9pbml0 KHZvaWQpDQo+PiArew0KPj4gKyAgICAgICBpbnQgcmV0Ow0KPj4gKw0KPj4gKyAgICAgICByZXQg PSBjcHVocF9zZXR1cF9zdGF0ZV9tdWx0aShDUFVIUF9BUF9PTkxJTkVfRFlOLA0KPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGVyZi9jbjEway90YWRwbXU6b25saW5l IiwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwNCj4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFkX3BtdV9vZmZsaW5lX2NwdSk7 DQo+PiArICAgICAgIGlmIChyZXQgPCAwKQ0KPj4gKyAgICAgICAgICAgICAgIHJldHVybiByZXQ7 DQo+PiArICAgICAgIHRhZF9wbXVfY3B1aHBfc3RhdGUgPSByZXQ7DQo+PiArICAgICAgIHJldHVy biBwbGF0Zm9ybV9kcml2ZXJfcmVnaXN0ZXIoJnRhZF9wbXVfZHJpdmVyKTsNCj4+ICt9DQo+PiAr DQo+PiArc3RhdGljIHZvaWQgX19leGl0IHRhZF9wbXVfZXhpdCh2b2lkKSB7DQo+PiArICAgICAg IHBsYXRmb3JtX2RyaXZlcl91bnJlZ2lzdGVyKCZ0YWRfcG11X2RyaXZlcik7DQo+PiArICAgICAg IGNwdWhwX3JlbW92ZV9tdWx0aV9zdGF0ZSh0YWRfcG11X2NwdWhwX3N0YXRlKTsNCj4+ICt9DQo+ PiArDQo+PiArbW9kdWxlX2luaXQodGFkX3BtdV9pbml0KTsNCj4+ICttb2R1bGVfZXhpdCh0YWRf cG11X2V4aXQpOw0KPj4gKw0KPj4gK01PRFVMRV9ERVNDUklQVElPTigiTWFydmVsbCBDTjEwSyBM TEMtVEFEIFBlcmYgZHJpdmVyIik7DQo+PiArTU9EVUxFX0FVVEhPUigiQmhhc2thcmEgQnVkaXJl ZGxhIDxiYnVkaXJlZGxhQG1hcnZlbGwuY29tPiIpOw0KPj4gK01PRFVMRV9MSUNFTlNFKCJHUEwg djIiKTsNCj4+IC0tDQo+PiAyLjE3LjENCj4+DQo=