Received: by 2002:a6b:fb09:0:0:0:0:0 with SMTP id h9csp1052533iog; Wed, 15 Jun 2022 19:38:42 -0700 (PDT) X-Google-Smtp-Source: AGRyM1spijGnEIpyZW+PEKSjPHlmXsqWLGeXH93rWNZ4Fic05As3FfVNMI2IJ9Aaw4BVHdeWeCum X-Received: by 2002:a63:90c8:0:b0:3fc:ad6f:6e96 with SMTP id a191-20020a6390c8000000b003fcad6f6e96mr2555189pge.256.1655347122350; Wed, 15 Jun 2022 19:38:42 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1655347122; cv=pass; d=google.com; s=arc-20160816; b=RP+9ZGRuSrCgiC4xI2YmETj0BnctNMntmzxVR1szducWFN2m9yhcCZstwS/JQMfkrE S+3apFp056wMvVO3HhKkYXnsIfWEt1sYGEXT99WIjVBmUIlK9P8Cp/8YneZKNAmiV+6/ 0EZWSGyvpDA5apSvqAGxmB38ae2Ared2AYpwmDKsfQnMRgGJSTboLvJRx2Ee8b7eTceC hP/McEEdOqdBZFaWhHR3WW3XUjZqAu6cibQUiLLR01qg1GZ7+EqniWv22sdGDj3UXmPJ ugW0tYZ/FKcIOVyYQsp87bT+PsCpQwtBmC+M1HvE7EA7hBjFIzegtE/wFnDBQOGk0A46 CEWg== 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=2Lg0qzvbcrGu3KCNgVw1XO8oLW5AA+VJTK4EOgyznzU=; b=rMA6yO5s2vQ/sUh8eKu/HuSpPnL3C3SPXoBzDzo1CHm/prL+A+HCj7aNIkFdLmKv3g NtXTrRWyW/4ZU0A/Bq1qdF0zDUDcN0N8z1TDapl9ignRf87q2fRTcEBCygbMvaYQ4KSs wB/a0oJEkE0a+p93Y7sTipOWfWgShDLtj34I9JXgLc7wYt7XjQxIa2WfKQwb7OqunnDi d25iYgjNUuhJ1E1J9yp81wSwShipNVLeG/Z9wGa/c0c4mVYGRlTfE9GZOYbBRzOyb0Bv L8xZgYdn4OEFabMyFeB4WoRaZPFHWMcVSc/Hnb7MHUaaNvd87paf/2/8XCmTYElt1mTO 86hg== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@nxp.com header.s=selector2 header.b=VLZh6lag; arc=pass (i=1 spf=pass spfdomain=nxp.com dkim=pass dkdomain=nxp.com dmarc=pass fromdomain=nxp.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nxp.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id x62-20020a638641000000b003fe0f7baa87si919763pgd.329.2022.06.15.19.38.29; Wed, 15 Jun 2022 19:38:42 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@nxp.com header.s=selector2 header.b=VLZh6lag; arc=pass (i=1 spf=pass spfdomain=nxp.com dkim=pass dkdomain=nxp.com dmarc=pass fromdomain=nxp.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nxp.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1353963AbiFPCXs (ORCPT + 99 others); Wed, 15 Jun 2022 22:23:48 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59172 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1350444AbiFPCXq (ORCPT ); Wed, 15 Jun 2022 22:23:46 -0400 Received: from EUR03-DBA-obe.outbound.protection.outlook.com (mail-dbaeur03on2067.outbound.protection.outlook.com [40.107.104.67]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 460DB47AE1; Wed, 15 Jun 2022 19:23:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BEVGrmdVvu3MWELgeRj3kbnwlfAgUGkrvDQSKi5KjlT5x/s53B+NDDK0BYEpmScltQb4ti5ggV3JWkubI/s9fiZ1knns3ytixNbk6wQzYq3KsuTGW8sgOw1zRxwkfOAmka7G9XCOOGm6k9i5ofhU9VD/vIMYuV+JCW0AbFszY5TtrvR2XiB0GQVxP5oSXRsULzlfKvWj7HWyx5RUsyIsXyWH6Tis5+Mtid0tdGCMVVc7BrmnHLvkE+kgfdzmGwjZG25O4RbGkCT/8F8ikMu4/8xDi3X7Hke3eNdMZg/6SMyG7pAV9E716vsn3qf1E9RoMTqZKbTg6eRNaI3W9+wIyA== 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=2Lg0qzvbcrGu3KCNgVw1XO8oLW5AA+VJTK4EOgyznzU=; b=ag2qgAXURjV+iD2bKpRv7E2SyyC1dEiZApe2w6dKiNDkxYmxtHJeLMb9bUGSuVRWQQlZquD+uKh2wU+WFmnMoyidPnArNtLLNruNwhtFvQ91SF0cxl0GrzyxuNCU76+HDNsvhuRACU29PlQJfVg3SjF2apipOEeXwgw4tYtJw0F5QkKIEE2x5iWw4Q1jTqZpnAvdvsnQXPzvRjDP+cRnpJvrX+kjQYU8v+6yeoQUUSK5F+50sjMAQPgH0FBkLTwzVO5h+oZ4k5Ks4Pbj48kWSRWFjGZxnhx2nQSr5GRgl5xTiPX4XcKJw+Pq+W45/Qu4HvTImkLZQw6rYJOM0SnZqQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=2Lg0qzvbcrGu3KCNgVw1XO8oLW5AA+VJTK4EOgyznzU=; b=VLZh6lagCFLOIJ6TiG7XXzAdjnnchYr1npaQlBFFkC/10wksizDvM3k0KBooe8FKg13o+gHOZ/+pjzLsEecJNMZ1QJ+tVbpADov3hHwZ4xJSi0UUVy4qUaXPXjCW8HgiYQ1ALxCMg61RgwlCKNQCLNVv/nLfze6fyRPhNiZHD9o= Received: from AS8PR04MB8676.eurprd04.prod.outlook.com (2603:10a6:20b:42b::10) by HE1PR0401MB2474.eurprd04.prod.outlook.com (2603:10a6:3:81::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5353.14; Thu, 16 Jun 2022 02:23:40 +0000 Received: from AS8PR04MB8676.eurprd04.prod.outlook.com ([fe80::a0fa:978c:2b40:2cb7]) by AS8PR04MB8676.eurprd04.prod.outlook.com ([fe80::a0fa:978c:2b40:2cb7%6]) with mapi id 15.20.5353.013; Thu, 16 Jun 2022 02:23:39 +0000 From: Hongxing Zhu To: Bjorn Helgaas , Lucas Stach , Rob Herring , Mark Brown , Lorenzo Pieralisi , Fabio Estevam , Francesco Dolcini CC: "linux-pci@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "linux-kernel@vger.kernel.org" , "kernel@pengutronix.de" , dl-linux-imx , Bjorn Helgaas Subject: RE: [PATCH v12 02/13] PCI: imx6: Move PHY management functions together Thread-Topic: [PATCH v12 02/13] PCI: imx6: Move PHY management functions together Thread-Index: AQHYgQ3njXzWWySI5USc+0U+gsIY961RQ+lw Date: Thu, 16 Jun 2022 02:23:39 +0000 Message-ID: References: <20220615231551.1054753-1-helgaas@kernel.org> <20220615231551.1054753-3-helgaas@kernel.org> In-Reply-To: <20220615231551.1054753-3-helgaas@kernel.org> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 07e2e528-86c6-4dc8-6f0c-08da4f3f39be x-ms-traffictypediagnostic: HE1PR0401MB2474:EE_ x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: OkWkNkOu9eSSY4/mkpFkvYJ+TyYPfTtLceXwXKK9Xg8slAlVYuep2hwij+PmIAQLHt3oU8yRNHcANdPeHI8wtQOUVa1wOX4aDhbnuMbT1+hrIuzILwKeAmhBnTCODIYd+hNPu4hCv5pTHQ/iEHrZO06eQMTecBklO9itcuVkCTZwYtWDinNMa0FmEEwAEL/4gtosz5NW6YthVMyTWRUi+/d2OFFrPILAEoM7hwKl1Gg7ZYNyPx7o8xSlh5kVIYPQS5ATr3WJAOm1y1PmO9v3h0nyZjccHiPfEYlCyL9F42DNiUuV6OCARNqeA+ZVy6LV47zicT9P/ADJlsKm2nlMM9waq9ZBE5eTuNy2b2nWSma8yhG51FNfUmeFGqaWZ7mijCuN5uDUqI39QV4GNLIsOrZQXASgR2gBrL7PapUm0JXyie/O+UfelXdxKZtV0UAXpPzu6N8thcZXJVuJWrJYSXX6e6rjJm/JFiTux5ELHkzX2xFG5TPAx4YMH8ipvFoKzxyITKjNIwhnTFGYf71mo/2zmMclPG4ga5pNGNbqNTGir3+cQLIegbiqtkq4Ly/jwpSL3+zKp3IESzrnh/1ajl5GmlzUwMDgCp1aThQaBK9F14DtubOZMkF5bRSoDSviIg+hGCEmPz/Kjvho4fliNRByGPkZOFMYAVhhLIXfzHnWuC7qjLpPDpnTMSAPz0QVqSV6ui/9n6HqFPX5CoM8eg== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS8PR04MB8676.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(366004)(38100700002)(2906002)(26005)(6506007)(86362001)(52536014)(508600001)(8936002)(53546011)(33656002)(7696005)(9686003)(7416002)(5660300002)(44832011)(83380400001)(38070700005)(64756008)(66446008)(186003)(122000001)(55016003)(8676002)(66556008)(66476007)(4326008)(54906003)(66946007)(110136005)(316002)(76116006)(71200400001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?gb2312?B?N0FRaVU4azQ3VFc5aS95MURDRm9GWVRSUnQzS1UwNGJkRlZrNjlJYzI5cjJD?= =?gb2312?B?alJDVE1CS2VSTUtKRHJvVWk0eDlHU3FWaWJMbW9XYnAzejVJM1AxNWpSRWxO?= =?gb2312?B?Y0Iyd3Jwb1Y4bkRYa0xOYTdmbGYveHhNTXNmUE1PNlBqUURYTWpVQVA0eVpR?= =?gb2312?B?VFl2T0ErRDNQUFYrQlZ4bVI2amZWR0ovbkZpM3FzbWx0TW5WQ3RidnF2S3VT?= =?gb2312?B?Ty9HaTN6V2x3MXVQYVdLSnZHWk9FbGx4aTh2VVRZejBMZmNrb3c2cDdlSGl4?= =?gb2312?B?TEpGeUx5Q1lvQi9icGQ4R1pKMUFrZnhPTzROTXFtZXNYajFLVUdTY1lwQmhU?= =?gb2312?B?OGVYdXltZTFPNEM4RndLNmc5MW1WTEFDbnlSK3NCbnhNYVhobTFtYy9MeXpv?= =?gb2312?B?d1c5TWloeXRSRm5ubll5dW5DRk4wSExINFhtYW8xSmtLZ3RNUHJqRHNUK2JQ?= =?gb2312?B?MExUc1pSNFMwYnN6b05LUkRDVzBLRlhvdDdNZ0NFeUNRclpYeHZDWXlPQndv?= =?gb2312?B?Ny9ldGg2MkJGS0Q0aE83WjZJeEtOTEhEMkE5ckhnSXJJaEhBR0tzOUY2bEVG?= =?gb2312?B?WTdzSlVwcXlNM1RyczZKODIzQ1lSUEQxT3NJWnFhVnVuZVM2d0M4VkVlYjJn?= =?gb2312?B?UStSeUd0Vk1QVTNzM08wTzlaUFVPUzB2SVJscUtpTUFLK2g3UjhIcS8xVzhO?= =?gb2312?B?bVpzZlBNOEtGd0VMK3ErK2xhTlFlb2UyN1hwazBHaEhFSWtPNE9nRzV2RVEz?= =?gb2312?B?WFFwVFZMQ3E5YWpwcHVsY2FLajNxckpUQldNZk0vMFhoWUNEVmtiMGNBcEFm?= =?gb2312?B?dmE3d0s4VEp0MVlObG4yVTVzTU5JcWx0L1NRL0sweDd5Z1dWUVBxT3hvNzhM?= =?gb2312?B?WklxMmRocDJkT0lSMzEzM05nM2ZRTHF3L2g1U1hLOUt4Szk1dUNWbzY1bmZS?= =?gb2312?B?aWlnNzEvOURCSW9JeXhXb3M0S2t5WWJwSXJ1Q2o5eWcrS2JIcEhrb3owb3Z5?= =?gb2312?B?alJ6Vi9Tdlg3bDg2dUg0MlVBb1FZdHJ1TGlRZ2NoK2F6RVpXczdmSzFDQnU1?= =?gb2312?B?dDR3M0FiS1dBRG13dktNUHdNTkIwUWUzK2JVd1BjV1l3WGY0cSszOHRyZVox?= =?gb2312?B?SFJReDdSZmZZaFVVeFhLWHdBQWlnamZxdGU0dzJYeFVGaEhJbzhuZmRkZUdB?= =?gb2312?B?anp3a0R1OFVOVWZPRTJZb0dnSGcrSkM3RnJUZHVuTkNzRS9QUnFSditORFpZ?= =?gb2312?B?aFgzSVAzWnM2RFN6TjFFbjJoQ3d3enFHMzhNVVByQU54TmVWQUlKcnpnMUlw?= =?gb2312?B?MmZJRUdvSEsyYzRoVHVDTldSNlNVOENoMGFSc1RzOXl3WnFQWHV4eDVJZ00w?= =?gb2312?B?c2F6ME1JVmNEemh1Z3NXdDl2SVgySjVSejhCL0MyU1MzVjZkRXRaQ1dWakIv?= =?gb2312?B?dVdXWE9lYkRvSGpINmZ0UmhpUXA0ZkRWUlJSQjRiZFIxV2tNb0J5M3BqR2Rv?= =?gb2312?B?R1kvenhaTTA0MUJ1ZzVrRE5nWkZySnBDKzFtcjdRK2h4YVIyM080dG5nT2U3?= =?gb2312?B?SzhSMHpzckV4TXBEaUtBK3NuTGRuT3FGRTVEYjRmU0h2VHpUKy9FTHBOWHRZ?= =?gb2312?B?RnNQSjd0cHFMTjZQNE5lNk4zS3N0V1VEbGJJMnppMTg3eU9sOTdPK05UbWZ1?= =?gb2312?B?Sm1JdkUwSUt1Vmw0VkVHTm5aVmdJcXh2ZmJhZ1Z0S0VxSjFpdk4zaDd1U1NM?= =?gb2312?B?aDRKVENDQy9PVDMzeEMvLzdrRGhoRytoQ01hcmNNRDRZT21tQXpPdmc1Y3d6?= =?gb2312?B?QllLek1ERWNvL2pmUHpDeEFyZEdxUDR4Z1YzbTR0UUs1Vnk2c0RtOVcyMEQr?= =?gb2312?B?RXp4ZC9tSkpRQzFlT0VNbXd0K0prS0ZwNmdoRWttYVFGd3VxdUVJdWFKVFVt?= =?gb2312?B?ZW44Wml0Ly9SS3o0V1VmajNJOTNMcnNTVGVndldkeUsvV1RUMFA3L01ESzlw?= =?gb2312?B?dUZkWkRqY3hHNzd6WTY3Qm56STNoZkVBeUtGVFFsWFdEZC9PUDFHSWN3VlZQ?= =?gb2312?B?d3JCVFNOUXNaNlhkT1dlMXpYeW1kMFhpYWJEaWEyWEF3SWdHMytrek05YWRN?= =?gb2312?B?QzNoaTNzNXpPclpUS00vZGZ5NSt2REpEZE5TQTZXcjNnYWNJb1d2c3ByUm8y?= =?gb2312?B?M3ExK1lnVklJU3NNQXNiaGd4akNaeGtFRzN6K1Ezb1ZnUHJUSVJMbjdZcU1D?= =?gb2312?B?bTViekhuWklIazBOWGJ3Y2tJMU5UYkcyVWUwSCtULzBmV1lGWW5FRDJmK1Zh?= =?gb2312?B?d0MvSS9haDNnSWkyZGMwS1BBU1dCWGZhZDhHR3gzL1QyQzB3NzVEUT09?= Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AS8PR04MB8676.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 07e2e528-86c6-4dc8-6f0c-08da4f3f39be X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Jun 2022 02:23:39.6192 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: +0ivJQnRMkrR7sFXAR5Kik8Y/i1LSF2pbyq5MRQx2MGHaMTm0dLnpdiGKqn8BiK9T/4aXTeFP0HCM2tRnOSFVw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0401MB2474 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBCam9ybiBIZWxnYWFzIDxoZWxn YWFzQGtlcm5lbC5vcmc+DQo+IFNlbnQ6IDIwMjLE6jbUwjE2yNUgNzoxNg0KPiBUbzogSG9uZ3hp bmcgWmh1IDxob25neGluZy56aHVAbnhwLmNvbT47IEx1Y2FzIFN0YWNoDQo+IDxsLnN0YWNoQHBl bmd1dHJvbml4LmRlPjsgUm9iIEhlcnJpbmcgPHJvYmgrZHRAa2VybmVsLm9yZz47IE1hcmsgQnJv d24NCj4gPGJyb29uaWVAa2VybmVsLm9yZz47IExvcmVuem8gUGllcmFsaXNpIDxsb3JlbnpvLnBp ZXJhbGlzaUBhcm0uY29tPjsgRmFiaW8NCj4gRXN0ZXZhbSA8ZmVzdGV2YW1AZ21haWwuY29tPjsg RnJhbmNlc2NvIERvbGNpbmkNCj4gPGZyYW5jZXNjby5kb2xjaW5pQHRvcmFkZXguY29tPg0KPiBD YzogbGludXgtcGNpQHZnZXIua2VybmVsLm9yZzsgbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZy YWRlYWQub3JnOw0KPiBsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnOyBrZXJuZWxAcGVuZ3V0 cm9uaXguZGU7IGRsLWxpbnV4LWlteA0KPiA8bGludXgtaW14QG54cC5jb20+OyBCam9ybiBIZWxn YWFzIDxiaGVsZ2Fhc0Bnb29nbGUuY29tPg0KPiBTdWJqZWN0OiBbUEFUQ0ggdjEyIDAyLzEzXSBQ Q0k6IGlteDY6IE1vdmUgUEhZIG1hbmFnZW1lbnQgZnVuY3Rpb25zDQo+IHRvZ2V0aGVyDQo+IA0K PiBGcm9tOiBCam9ybiBIZWxnYWFzIDxiaGVsZ2Fhc0Bnb29nbGUuY29tPg0KPiANCj4gQ29sbGVj dCBpbXg2X3BjaWVfaW5pdF9waHkoKSwgaW14N2RfcGNpZV93YWl0X2Zvcl9waHlfcGxsX2xvY2so KSwgYW5kDQo+IGlteDZfc2V0dXBfcGh5X21wbGwoKSBlYXJsaWVyIHdpdGggb3RoZXIgUEhZLXJl bGF0ZWQgY29kZS4gIE5vIGZ1bmN0aW9uYWwNCj4gY2hhbmdlIGludGVuZGVkLg0KPiANCj4gU2ln bmVkLW9mZi1ieTogQmpvcm4gSGVsZ2FhcyA8YmhlbGdhYXNAZ29vZ2xlLmNvbT4NCkFja2VkLWJ5 OiBSaWNoYXJkIFpodSA8aG9uZ3hpbmcuemh1QG54cC5jb20+DQoNCkJlc3QgUmVnYXJkcw0KUmlj aGFyZCBaaHUNCj4gLS0tDQo+ICBkcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2ktaW14Ni5j IHwgMjU2ICsrKysrKysrKysrKystLS0tLS0tLS0tLS0tDQo+ICAxIGZpbGUgY2hhbmdlZCwgMTI4 IGluc2VydGlvbnMoKyksIDEyOCBkZWxldGlvbnMoLSkNCj4gDQo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2ktaW14Ni5jDQo+IGIvZHJpdmVycy9wY2kvY29udHJv bGxlci9kd2MvcGNpLWlteDYuYw0KPiBpbmRleCA4NjUzY2E4Y2JmYjkuLmU2M2ViNjM4MDAyMCAx MDA2NDQNCj4gLS0tIGEvZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpLWlteDYuYw0KPiAr KysgYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2ktaW14Ni5jDQo+IEBAIC0yOTYsNiAr Mjk2LDEzNCBAQCBzdGF0aWMgaW50IHBjaWVfcGh5X3dyaXRlKHN0cnVjdCBpbXg2X3BjaWUNCj4g KmlteDZfcGNpZSwgaW50IGFkZHIsIHUxNiBkYXRhKQ0KPiAgCXJldHVybiAwOw0KPiAgfQ0KPiAN Cj4gK3N0YXRpYyB2b2lkIGlteDZfcGNpZV9pbml0X3BoeShzdHJ1Y3QgaW14Nl9wY2llICppbXg2 X3BjaWUpIHsNCj4gKwlzd2l0Y2ggKGlteDZfcGNpZS0+ZHJ2ZGF0YS0+dmFyaWFudCkgew0KPiAr CWNhc2UgSU1YOE1NOg0KPiArCQkvKg0KPiArCQkgKiBUaGUgUEhZIGluaXRpYWxpemF0aW9uIGhh ZCBiZWVuIGRvbmUgaW4gdGhlIFBIWQ0KPiArCQkgKiBkcml2ZXIsIGJyZWFrIGhlcmUgZGlyZWN0 bHkuDQo+ICsJCSAqLw0KPiArCQlicmVhazsNCj4gKwljYXNlIElNWDhNUToNCj4gKwkJLyoNCj4g KwkJICogVE9ETzogQ3VycmVudGx5IHRoaXMgY29kZSBhc3N1bWVzIGV4dGVybmFsDQo+ICsJCSAq IG9zY2lsbGF0b3IgaXMgYmVpbmcgdXNlZA0KPiArCQkgKi8NCj4gKwkJcmVnbWFwX3VwZGF0ZV9i aXRzKGlteDZfcGNpZS0+aW9tdXhjX2dwciwNCj4gKwkJCQkgICBpbXg2X3BjaWVfZ3JwX29mZnNl dChpbXg2X3BjaWUpLA0KPiArCQkJCSAgIElNWDhNUV9HUFJfUENJRV9SRUZfVVNFX1BBRCwNCj4g KwkJCQkgICBJTVg4TVFfR1BSX1BDSUVfUkVGX1VTRV9QQUQpOw0KPiArCQkvKg0KPiArCQkgKiBS ZWdhcmRpbmcgdGhlIGRhdGFzaGVldCwgdGhlIFBDSUVfVlBIIGlzIHN1Z2dlc3RlZA0KPiArCQkg KiB0byBiZSAxLjhWLiBJZiB0aGUgUENJRV9WUEggaXMgc3VwcGxpZWQgYnkgMy4zViwgdGhlDQo+ ICsJCSAqIFZSRUdfQllQQVNTIHNob3VsZCBiZSBjbGVhcmVkIHRvIHplcm8uDQo+ICsJCSAqLw0K PiArCQlpZiAoaW14Nl9wY2llLT52cGggJiYNCj4gKwkJICAgIHJlZ3VsYXRvcl9nZXRfdm9sdGFn ZShpbXg2X3BjaWUtPnZwaCkgPiAzMDAwMDAwKQ0KPiArCQkJcmVnbWFwX3VwZGF0ZV9iaXRzKGlt eDZfcGNpZS0+aW9tdXhjX2dwciwNCj4gKwkJCQkJICAgaW14Nl9wY2llX2dycF9vZmZzZXQoaW14 Nl9wY2llKSwNCj4gKwkJCQkJICAgSU1YOE1RX0dQUl9QQ0lFX1ZSRUdfQllQQVNTLA0KPiArCQkJ CQkgICAwKTsNCj4gKwkJYnJlYWs7DQo+ICsJY2FzZSBJTVg3RDoNCj4gKwkJcmVnbWFwX3VwZGF0 ZV9iaXRzKGlteDZfcGNpZS0+aW9tdXhjX2dwciwgSU9NVVhDX0dQUjEyLA0KPiArCQkJCSAgIElN WDdEX0dQUjEyX1BDSUVfUEhZX1JFRkNMS19TRUwsIDApOw0KPiArCQlicmVhazsNCj4gKwljYXNl IElNWDZTWDoNCj4gKwkJcmVnbWFwX3VwZGF0ZV9iaXRzKGlteDZfcGNpZS0+aW9tdXhjX2dwciwg SU9NVVhDX0dQUjEyLA0KPiArCQkJCSAgIElNWDZTWF9HUFIxMl9QQ0lFX1JYX0VRX01BU0ssDQo+ ICsJCQkJICAgSU1YNlNYX0dQUjEyX1BDSUVfUlhfRVFfMik7DQo+ICsJCWZhbGx0aHJvdWdoOw0K PiArCWRlZmF1bHQ6DQo+ICsJCXJlZ21hcF91cGRhdGVfYml0cyhpbXg2X3BjaWUtPmlvbXV4Y19n cHIsIElPTVVYQ19HUFIxMiwNCj4gKwkJCQkgICBJTVg2UV9HUFIxMl9QQ0lFX0NUTF8yLCAwIDw8 IDEwKTsNCj4gKw0KPiArCQkvKiBjb25maWd1cmUgY29uc3RhbnQgaW5wdXQgc2lnbmFsIHRvIHRo ZSBwY2llIGN0cmwgYW5kIHBoeSAqLw0KPiArCQlyZWdtYXBfdXBkYXRlX2JpdHMoaW14Nl9wY2ll LT5pb211eGNfZ3ByLCBJT01VWENfR1BSMTIsDQo+ICsJCQkJICAgSU1YNlFfR1BSMTJfTE9TX0xF VkVMLCA5IDw8IDQpOw0KPiArDQo+ICsJCXJlZ21hcF91cGRhdGVfYml0cyhpbXg2X3BjaWUtPmlv bXV4Y19ncHIsIElPTVVYQ19HUFI4LA0KPiArCQkJCSAgIElNWDZRX0dQUjhfVFhfREVFTVBIX0dF TjEsDQo+ICsJCQkJICAgaW14Nl9wY2llLT50eF9kZWVtcGhfZ2VuMSA8PCAwKTsNCj4gKwkJcmVn bWFwX3VwZGF0ZV9iaXRzKGlteDZfcGNpZS0+aW9tdXhjX2dwciwgSU9NVVhDX0dQUjgsDQo+ICsJ CQkJICAgSU1YNlFfR1BSOF9UWF9ERUVNUEhfR0VOMl8zUDVEQiwNCj4gKwkJCQkgICBpbXg2X3Bj aWUtPnR4X2RlZW1waF9nZW4yXzNwNWRiIDw8IDYpOw0KPiArCQlyZWdtYXBfdXBkYXRlX2JpdHMo aW14Nl9wY2llLT5pb211eGNfZ3ByLCBJT01VWENfR1BSOCwNCj4gKwkJCQkgICBJTVg2UV9HUFI4 X1RYX0RFRU1QSF9HRU4yXzZEQiwNCj4gKwkJCQkgICBpbXg2X3BjaWUtPnR4X2RlZW1waF9nZW4y XzZkYiA8PCAxMik7DQo+ICsJCXJlZ21hcF91cGRhdGVfYml0cyhpbXg2X3BjaWUtPmlvbXV4Y19n cHIsIElPTVVYQ19HUFI4LA0KPiArCQkJCSAgIElNWDZRX0dQUjhfVFhfU1dJTkdfRlVMTCwNCj4g KwkJCQkgICBpbXg2X3BjaWUtPnR4X3N3aW5nX2Z1bGwgPDwgMTgpOw0KPiArCQlyZWdtYXBfdXBk YXRlX2JpdHMoaW14Nl9wY2llLT5pb211eGNfZ3ByLCBJT01VWENfR1BSOCwNCj4gKwkJCQkgICBJ TVg2UV9HUFI4X1RYX1NXSU5HX0xPVywNCj4gKwkJCQkgICBpbXg2X3BjaWUtPnR4X3N3aW5nX2xv dyA8PCAyNSk7DQo+ICsJCWJyZWFrOw0KPiArCX0NCj4gKw0KPiArCWlteDZfcGNpZV9jb25maWd1 cmVfdHlwZShpbXg2X3BjaWUpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCBpbXg3ZF9wY2ll X3dhaXRfZm9yX3BoeV9wbGxfbG9jayhzdHJ1Y3QgaW14Nl9wY2llDQo+ICsqaW14Nl9wY2llKSB7 DQo+ICsJdTMyIHZhbDsNCj4gKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBpbXg2X3BjaWUtPnBjaS0+ ZGV2Ow0KPiArDQo+ICsJaWYgKHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChpbXg2X3BjaWUtPmlv bXV4Y19ncHIsDQo+ICsJCQkJICAgICBJT01VWENfR1BSMjIsIHZhbCwNCj4gKwkJCQkgICAgIHZh bCAmIElNWDdEX0dQUjIyX1BDSUVfUEhZX1BMTF9MT0NLRUQsDQo+ICsJCQkJICAgICBQSFlfUExM X0xPQ0tfV0FJVF9VU0xFRVBfTUFYLA0KPiArCQkJCSAgICAgUEhZX1BMTF9MT0NLX1dBSVRfVElN RU9VVCkpDQo+ICsJCWRldl9lcnIoZGV2LCAiUENJZSBQTEwgbG9jayB0aW1lb3V0XG4iKTsgfQ0K PiArDQo+ICtzdGF0aWMgaW50IGlteDZfc2V0dXBfcGh5X21wbGwoc3RydWN0IGlteDZfcGNpZSAq aW14Nl9wY2llKSB7DQo+ICsJdW5zaWduZWQgbG9uZyBwaHlfcmF0ZSA9IGNsa19nZXRfcmF0ZShp bXg2X3BjaWUtPnBjaWVfcGh5KTsNCj4gKwlpbnQgbXVsdCwgZGl2Ow0KPiArCXUxNiB2YWw7DQo+ ICsNCj4gKwlpZiAoIShpbXg2X3BjaWUtPmRydmRhdGEtPmZsYWdzICYgSU1YNl9QQ0lFX0ZMQUdf SU1YNl9QSFkpKQ0KPiArCQlyZXR1cm4gMDsNCj4gKw0KPiArCXN3aXRjaCAocGh5X3JhdGUpIHsN Cj4gKwljYXNlIDEyNTAwMDAwMDoNCj4gKwkJLyoNCj4gKwkJICogVGhlIGRlZmF1bHQgc2V0dGlu Z3Mgb2YgdGhlIE1QTEwgYXJlIGZvciBhIDEyNU1IeiBpbnB1dA0KPiArCQkgKiBjbG9jaywgc28g bm8gbmVlZCB0byByZWNvbmZpZ3VyZSBhbnl0aGluZyBpbiB0aGF0IGNhc2UuDQo+ICsJCSAqLw0K PiArCQlyZXR1cm4gMDsNCj4gKwljYXNlIDEwMDAwMDAwMDoNCj4gKwkJbXVsdCA9IDI1Ow0KPiAr CQlkaXYgPSAwOw0KPiArCQlicmVhazsNCj4gKwljYXNlIDIwMDAwMDAwMDoNCj4gKwkJbXVsdCA9 IDI1Ow0KPiArCQlkaXYgPSAxOw0KPiArCQlicmVhazsNCj4gKwlkZWZhdWx0Og0KPiArCQlkZXZf ZXJyKGlteDZfcGNpZS0+cGNpLT5kZXYsDQo+ICsJCQkiVW5zdXBwb3J0ZWQgUEhZIHJlZmVyZW5j ZSBjbG9jayByYXRlICVsdVxuIiwgcGh5X3JhdGUpOw0KPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4g Kwl9DQo+ICsNCj4gKwlwY2llX3BoeV9yZWFkKGlteDZfcGNpZSwgUENJRV9QSFlfTVBMTF9PVlJE X0lOX0xPLCAmdmFsKTsNCj4gKwl2YWwgJj0gfihQQ0lFX1BIWV9NUExMX01VTFRJUExJRVJfTUFT SyA8PA0KPiArCQkgUENJRV9QSFlfTVBMTF9NVUxUSVBMSUVSX1NISUZUKTsNCj4gKwl2YWwgfD0g bXVsdCA8PCBQQ0lFX1BIWV9NUExMX01VTFRJUExJRVJfU0hJRlQ7DQo+ICsJdmFsIHw9IFBDSUVf UEhZX01QTExfTVVMVElQTElFUl9PVlJEOw0KPiArCXBjaWVfcGh5X3dyaXRlKGlteDZfcGNpZSwg UENJRV9QSFlfTVBMTF9PVlJEX0lOX0xPLCB2YWwpOw0KPiArDQo+ICsJcGNpZV9waHlfcmVhZChp bXg2X3BjaWUsIFBDSUVfUEhZX0FURU9WUkQsICZ2YWwpOw0KPiArCXZhbCAmPSB+KFBDSUVfUEhZ X0FURU9WUkRfUkVGX0NMS0RJVl9NQVNLIDw8DQo+ICsJCSBQQ0lFX1BIWV9BVEVPVlJEX1JFRl9D TEtESVZfU0hJRlQpOw0KPiArCXZhbCB8PSBkaXYgPDwgUENJRV9QSFlfQVRFT1ZSRF9SRUZfQ0xL RElWX1NISUZUOw0KPiArCXZhbCB8PSBQQ0lFX1BIWV9BVEVPVlJEX0VOOw0KPiArCXBjaWVfcGh5 X3dyaXRlKGlteDZfcGNpZSwgUENJRV9QSFlfQVRFT1ZSRCwgdmFsKTsNCj4gKw0KPiArCXJldHVy biAwOw0KPiArfQ0KPiArDQo+ICBzdGF0aWMgdm9pZCBpbXg2X3BjaWVfcmVzZXRfcGh5KHN0cnVj dCBpbXg2X3BjaWUgKmlteDZfcGNpZSkgIHsNCj4gIAl1MTYgdG1wOw0KPiBAQCAtNTAwLDE5ICs2 MjgsNiBAQCBzdGF0aWMgaW50IGlteDZfcGNpZV9lbmFibGVfcmVmX2NsayhzdHJ1Y3QgaW14Nl9w Y2llDQo+ICppbXg2X3BjaWUpDQo+ICAJcmV0dXJuIHJldDsNCj4gIH0NCj4gDQo+IC1zdGF0aWMg dm9pZCBpbXg3ZF9wY2llX3dhaXRfZm9yX3BoeV9wbGxfbG9jayhzdHJ1Y3QgaW14Nl9wY2llICpp bXg2X3BjaWUpIC17DQo+IC0JdTMyIHZhbDsNCj4gLQlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBpbXg2 X3BjaWUtPnBjaS0+ZGV2Ow0KPiAtDQo+IC0JaWYgKHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChp bXg2X3BjaWUtPmlvbXV4Y19ncHIsDQo+IC0JCQkJICAgICBJT01VWENfR1BSMjIsIHZhbCwNCj4g LQkJCQkgICAgIHZhbCAmIElNWDdEX0dQUjIyX1BDSUVfUEhZX1BMTF9MT0NLRUQsDQo+IC0JCQkJ ICAgICBQSFlfUExMX0xPQ0tfV0FJVF9VU0xFRVBfTUFYLA0KPiAtCQkJCSAgICAgUEhZX1BMTF9M T0NLX1dBSVRfVElNRU9VVCkpDQo+IC0JCWRldl9lcnIoZGV2LCAiUENJZSBQTEwgbG9jayB0aW1l b3V0XG4iKTsNCj4gLX0NCj4gLQ0KPiAgc3RhdGljIHZvaWQgaW14Nl9wY2llX2RlYXNzZXJ0X2Nv cmVfcmVzZXQoc3RydWN0IGlteDZfcGNpZSAqaW14Nl9wY2llKSAgew0KPiAgCXN0cnVjdCBkd19w Y2llICpwY2kgPSBpbXg2X3BjaWUtPnBjaTsNCj4gQEAgLTYzNSwxMjEgKzc1MCw2IEBAIHN0YXRp YyB2b2lkIGlteDZfcGNpZV9kZWFzc2VydF9jb3JlX3Jlc2V0KHN0cnVjdA0KPiBpbXg2X3BjaWUg KmlteDZfcGNpZSkNCj4gIAl9DQo+ICB9DQo+IA0KPiAtc3RhdGljIHZvaWQgaW14Nl9wY2llX2lu aXRfcGh5KHN0cnVjdCBpbXg2X3BjaWUgKmlteDZfcGNpZSkgLXsNCj4gLQlzd2l0Y2ggKGlteDZf cGNpZS0+ZHJ2ZGF0YS0+dmFyaWFudCkgew0KPiAtCWNhc2UgSU1YOE1NOg0KPiAtCQkvKg0KPiAt CQkgKiBUaGUgUEhZIGluaXRpYWxpemF0aW9uIGhhZCBiZWVuIGRvbmUgaW4gdGhlIFBIWQ0KPiAt CQkgKiBkcml2ZXIsIGJyZWFrIGhlcmUgZGlyZWN0bHkuDQo+IC0JCSAqLw0KPiAtCQlicmVhazsN Cj4gLQljYXNlIElNWDhNUToNCj4gLQkJLyoNCj4gLQkJICogVE9ETzogQ3VycmVudGx5IHRoaXMg Y29kZSBhc3N1bWVzIGV4dGVybmFsDQo+IC0JCSAqIG9zY2lsbGF0b3IgaXMgYmVpbmcgdXNlZA0K PiAtCQkgKi8NCj4gLQkJcmVnbWFwX3VwZGF0ZV9iaXRzKGlteDZfcGNpZS0+aW9tdXhjX2dwciwN Cj4gLQkJCQkgICBpbXg2X3BjaWVfZ3JwX29mZnNldChpbXg2X3BjaWUpLA0KPiAtCQkJCSAgIElN WDhNUV9HUFJfUENJRV9SRUZfVVNFX1BBRCwNCj4gLQkJCQkgICBJTVg4TVFfR1BSX1BDSUVfUkVG X1VTRV9QQUQpOw0KPiAtCQkvKg0KPiAtCQkgKiBSZWdhcmRpbmcgdGhlIGRhdGFzaGVldCwgdGhl IFBDSUVfVlBIIGlzIHN1Z2dlc3RlZA0KPiAtCQkgKiB0byBiZSAxLjhWLiBJZiB0aGUgUENJRV9W UEggaXMgc3VwcGxpZWQgYnkgMy4zViwgdGhlDQo+IC0JCSAqIFZSRUdfQllQQVNTIHNob3VsZCBi ZSBjbGVhcmVkIHRvIHplcm8uDQo+IC0JCSAqLw0KPiAtCQlpZiAoaW14Nl9wY2llLT52cGggJiYN Cj4gLQkJICAgIHJlZ3VsYXRvcl9nZXRfdm9sdGFnZShpbXg2X3BjaWUtPnZwaCkgPiAzMDAwMDAw KQ0KPiAtCQkJcmVnbWFwX3VwZGF0ZV9iaXRzKGlteDZfcGNpZS0+aW9tdXhjX2dwciwNCj4gLQkJ CQkJICAgaW14Nl9wY2llX2dycF9vZmZzZXQoaW14Nl9wY2llKSwNCj4gLQkJCQkJICAgSU1YOE1R X0dQUl9QQ0lFX1ZSRUdfQllQQVNTLA0KPiAtCQkJCQkgICAwKTsNCj4gLQkJYnJlYWs7DQo+IC0J Y2FzZSBJTVg3RDoNCj4gLQkJcmVnbWFwX3VwZGF0ZV9iaXRzKGlteDZfcGNpZS0+aW9tdXhjX2dw ciwgSU9NVVhDX0dQUjEyLA0KPiAtCQkJCSAgIElNWDdEX0dQUjEyX1BDSUVfUEhZX1JFRkNMS19T RUwsIDApOw0KPiAtCQlicmVhazsNCj4gLQljYXNlIElNWDZTWDoNCj4gLQkJcmVnbWFwX3VwZGF0 ZV9iaXRzKGlteDZfcGNpZS0+aW9tdXhjX2dwciwgSU9NVVhDX0dQUjEyLA0KPiAtCQkJCSAgIElN WDZTWF9HUFIxMl9QQ0lFX1JYX0VRX01BU0ssDQo+IC0JCQkJICAgSU1YNlNYX0dQUjEyX1BDSUVf UlhfRVFfMik7DQo+IC0JCWZhbGx0aHJvdWdoOw0KPiAtCWRlZmF1bHQ6DQo+IC0JCXJlZ21hcF91 cGRhdGVfYml0cyhpbXg2X3BjaWUtPmlvbXV4Y19ncHIsIElPTVVYQ19HUFIxMiwNCj4gLQkJCQkg ICBJTVg2UV9HUFIxMl9QQ0lFX0NUTF8yLCAwIDw8IDEwKTsNCj4gLQ0KPiAtCQkvKiBjb25maWd1 cmUgY29uc3RhbnQgaW5wdXQgc2lnbmFsIHRvIHRoZSBwY2llIGN0cmwgYW5kIHBoeSAqLw0KPiAt CQlyZWdtYXBfdXBkYXRlX2JpdHMoaW14Nl9wY2llLT5pb211eGNfZ3ByLCBJT01VWENfR1BSMTIs DQo+IC0JCQkJICAgSU1YNlFfR1BSMTJfTE9TX0xFVkVMLCA5IDw8IDQpOw0KPiAtDQo+IC0JCXJl Z21hcF91cGRhdGVfYml0cyhpbXg2X3BjaWUtPmlvbXV4Y19ncHIsIElPTVVYQ19HUFI4LA0KPiAt CQkJCSAgIElNWDZRX0dQUjhfVFhfREVFTVBIX0dFTjEsDQo+IC0JCQkJICAgaW14Nl9wY2llLT50 eF9kZWVtcGhfZ2VuMSA8PCAwKTsNCj4gLQkJcmVnbWFwX3VwZGF0ZV9iaXRzKGlteDZfcGNpZS0+ aW9tdXhjX2dwciwgSU9NVVhDX0dQUjgsDQo+IC0JCQkJICAgSU1YNlFfR1BSOF9UWF9ERUVNUEhf R0VOMl8zUDVEQiwNCj4gLQkJCQkgICBpbXg2X3BjaWUtPnR4X2RlZW1waF9nZW4yXzNwNWRiIDw8 IDYpOw0KPiAtCQlyZWdtYXBfdXBkYXRlX2JpdHMoaW14Nl9wY2llLT5pb211eGNfZ3ByLCBJT01V WENfR1BSOCwNCj4gLQkJCQkgICBJTVg2UV9HUFI4X1RYX0RFRU1QSF9HRU4yXzZEQiwNCj4gLQkJ CQkgICBpbXg2X3BjaWUtPnR4X2RlZW1waF9nZW4yXzZkYiA8PCAxMik7DQo+IC0JCXJlZ21hcF91 cGRhdGVfYml0cyhpbXg2X3BjaWUtPmlvbXV4Y19ncHIsIElPTVVYQ19HUFI4LA0KPiAtCQkJCSAg IElNWDZRX0dQUjhfVFhfU1dJTkdfRlVMTCwNCj4gLQkJCQkgICBpbXg2X3BjaWUtPnR4X3N3aW5n X2Z1bGwgPDwgMTgpOw0KPiAtCQlyZWdtYXBfdXBkYXRlX2JpdHMoaW14Nl9wY2llLT5pb211eGNf Z3ByLCBJT01VWENfR1BSOCwNCj4gLQkJCQkgICBJTVg2UV9HUFI4X1RYX1NXSU5HX0xPVywNCj4g LQkJCQkgICBpbXg2X3BjaWUtPnR4X3N3aW5nX2xvdyA8PCAyNSk7DQo+IC0JCWJyZWFrOw0KPiAt CX0NCj4gLQ0KPiAtCWlteDZfcGNpZV9jb25maWd1cmVfdHlwZShpbXg2X3BjaWUpOw0KPiAtfQ0K PiAtDQo+IC1zdGF0aWMgaW50IGlteDZfc2V0dXBfcGh5X21wbGwoc3RydWN0IGlteDZfcGNpZSAq aW14Nl9wY2llKSAtew0KPiAtCXVuc2lnbmVkIGxvbmcgcGh5X3JhdGUgPSBjbGtfZ2V0X3JhdGUo aW14Nl9wY2llLT5wY2llX3BoeSk7DQo+IC0JaW50IG11bHQsIGRpdjsNCj4gLQl1MTYgdmFsOw0K PiAtDQo+IC0JaWYgKCEoaW14Nl9wY2llLT5kcnZkYXRhLT5mbGFncyAmIElNWDZfUENJRV9GTEFH X0lNWDZfUEhZKSkNCj4gLQkJcmV0dXJuIDA7DQo+IC0NCj4gLQlzd2l0Y2ggKHBoeV9yYXRlKSB7 DQo+IC0JY2FzZSAxMjUwMDAwMDA6DQo+IC0JCS8qDQo+IC0JCSAqIFRoZSBkZWZhdWx0IHNldHRp bmdzIG9mIHRoZSBNUExMIGFyZSBmb3IgYSAxMjVNSHogaW5wdXQNCj4gLQkJICogY2xvY2ssIHNv IG5vIG5lZWQgdG8gcmVjb25maWd1cmUgYW55dGhpbmcgaW4gdGhhdCBjYXNlLg0KPiAtCQkgKi8N Cj4gLQkJcmV0dXJuIDA7DQo+IC0JY2FzZSAxMDAwMDAwMDA6DQo+IC0JCW11bHQgPSAyNTsNCj4g LQkJZGl2ID0gMDsNCj4gLQkJYnJlYWs7DQo+IC0JY2FzZSAyMDAwMDAwMDA6DQo+IC0JCW11bHQg PSAyNTsNCj4gLQkJZGl2ID0gMTsNCj4gLQkJYnJlYWs7DQo+IC0JZGVmYXVsdDoNCj4gLQkJZGV2 X2VycihpbXg2X3BjaWUtPnBjaS0+ZGV2LA0KPiAtCQkJIlVuc3VwcG9ydGVkIFBIWSByZWZlcmVu Y2UgY2xvY2sgcmF0ZSAlbHVcbiIsIHBoeV9yYXRlKTsNCj4gLQkJcmV0dXJuIC1FSU5WQUw7DQo+ IC0JfQ0KPiAtDQo+IC0JcGNpZV9waHlfcmVhZChpbXg2X3BjaWUsIFBDSUVfUEhZX01QTExfT1ZS RF9JTl9MTywgJnZhbCk7DQo+IC0JdmFsICY9IH4oUENJRV9QSFlfTVBMTF9NVUxUSVBMSUVSX01B U0sgPDwNCj4gLQkJIFBDSUVfUEhZX01QTExfTVVMVElQTElFUl9TSElGVCk7DQo+IC0JdmFsIHw9 IG11bHQgPDwgUENJRV9QSFlfTVBMTF9NVUxUSVBMSUVSX1NISUZUOw0KPiAtCXZhbCB8PSBQQ0lF X1BIWV9NUExMX01VTFRJUExJRVJfT1ZSRDsNCj4gLQlwY2llX3BoeV93cml0ZShpbXg2X3BjaWUs IFBDSUVfUEhZX01QTExfT1ZSRF9JTl9MTywgdmFsKTsNCj4gLQ0KPiAtCXBjaWVfcGh5X3JlYWQo aW14Nl9wY2llLCBQQ0lFX1BIWV9BVEVPVlJELCAmdmFsKTsNCj4gLQl2YWwgJj0gfihQQ0lFX1BI WV9BVEVPVlJEX1JFRl9DTEtESVZfTUFTSyA8PA0KPiAtCQkgUENJRV9QSFlfQVRFT1ZSRF9SRUZf Q0xLRElWX1NISUZUKTsNCj4gLQl2YWwgfD0gZGl2IDw8IFBDSUVfUEhZX0FURU9WUkRfUkVGX0NM S0RJVl9TSElGVDsNCj4gLQl2YWwgfD0gUENJRV9QSFlfQVRFT1ZSRF9FTjsNCj4gLQlwY2llX3Bo eV93cml0ZShpbXg2X3BjaWUsIFBDSUVfUEhZX0FURU9WUkQsIHZhbCk7DQo+IC0NCj4gLQlyZXR1 cm4gMDsNCj4gLX0NCj4gLQ0KPiAgc3RhdGljIGludCBpbXg2X3BjaWVfd2FpdF9mb3Jfc3BlZWRf Y2hhbmdlKHN0cnVjdCBpbXg2X3BjaWUgKmlteDZfcGNpZSkgIHsNCj4gIAlzdHJ1Y3QgZHdfcGNp ZSAqcGNpID0gaW14Nl9wY2llLT5wY2k7DQo+IC0tDQo+IDIuMjUuMQ0KDQo=