From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 92FE6C00A5A for ; Thu, 19 Jan 2023 16:30:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230369AbjASQan (ORCPT ); Thu, 19 Jan 2023 11:30:43 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54196 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230366AbjASQaW (ORCPT ); Thu, 19 Jan 2023 11:30:22 -0500 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2082.outbound.protection.outlook.com [40.107.94.82]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2462F4F858 for ; Thu, 19 Jan 2023 08:29:44 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=f5HtqJ5w2LbgOFh0/HA1u+YP/ULwowZ6yWMAc+R800stiuPgZiVf2eM+RK8tfFHEggoZRVeHlDhNFifjis91+PzqpMGvCycA7P88JMk35h7IeCDoFjtek9KNJfYq2x28smUREqsRHmeHwvzqAiCibB827I8X/LfcbUwq/uoFjGyWpM1ZQR1DLDp4lxhV6E1LIYwV/WUgl9dSup/ewJZES8Bq82xVoVgc6bYWMaqy61OWz7zA9ZqSgUhOtmmAGelvOjSV4TPX4ixesifYWVUS35cVDHF+itx0X3qOUgmHT5TR/boMzBZx2p8bnWf/MVk/eKcoDufgVMdS+SuCBsEjnQ== 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=YXfCrvc4BXIqJTksyeJRKlIcExrrERKgjJ7UMRA7DcQ=; b=V/Xizvr7p0CwMMJn6AXzZNvEXar8uEgkL7IlOAtsDF3G9mNHrCgxvi3T/ACFZQpvqqidQCY8VXUz2gSjMMMlTJHRh2lCck53fqdkUuQ8yXJCJqjw18jv246FwaoM/SQNrzR36llKvRxsalDTRiG+DMpTRT2SGlngeykzV9KgvnPCWqwwBON5vr1T/Tw9V9MolK60dm4BWMY5ibR1yoai9yRFP3RccbN7Slwg/VI3wyLzlII9dREZx0ylEXs4Y89EmKQCA8JzFY75SlwS1l/cvOUIcE55YQyqoNRPDbr2BOz47Meonqimm6OkWLUKldNlam0UfBSk5phe1orIgp4qNA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=YXfCrvc4BXIqJTksyeJRKlIcExrrERKgjJ7UMRA7DcQ=; b=FXNuKOnWhsYMgeUFOpslyQ6WfgdWcLCrCUKpmBzi/ic9hawuoMaOF+lyZisA25zK0z7tonGDi/w2nB+zDgEWXsXhMK3mI+g6PPYkm0oy0Bh87nvQ9J26pf2dbBTd7OLoEqPI1sv9xUp6TD/510mFDqZ/ChYXO4nyiSugovyjrz8= Received: from DM6PR12MB4202.namprd12.prod.outlook.com (2603:10b6:5:219::22) by CY5PR12MB6297.namprd12.prod.outlook.com (2603:10b6:930:22::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6002.24; Thu, 19 Jan 2023 16:29:37 +0000 Received: from DM6PR12MB4202.namprd12.prod.outlook.com ([fe80::33a7:54d4:2de0:3939]) by DM6PR12MB4202.namprd12.prod.outlook.com ([fe80::33a7:54d4:2de0:3939%7]) with mapi id 15.20.6002.026; Thu, 19 Jan 2023 16:29:37 +0000 From: "Lucero Palau, Alejandro" To: "Lucero Palau, Alejandro" , Jiri Pirko CC: "netdev@vger.kernel.org" , "linux-net-drivers (AMD-Xilinx)" , "davem@davemloft.net" , "kuba@kernel.org" , "pabeni@redhat.com" , "edumazet@google.com" , "habetsm@gmail.com" , "ecree.xilinx@gmail.com" Subject: Re: [PATCH net-next 1/7] sfc: add devlink support for ef100 Thread-Topic: [PATCH net-next 1/7] sfc: add devlink support for ef100 Thread-Index: AQHZK/m3dRrScZP960COfMprLSU9Pa6lpyMAgAArdQCAABvVgA== Date: Thu, 19 Jan 2023 16:29:37 +0000 Message-ID: <29526f6b-5c63-be03-69c6-11b6ed3158aa@amd.com> References: <20230119113140.20208-1-alejandro.lucero-palau@amd.com> <20230119113140.20208-2-alejandro.lucero-palau@amd.com> <11c59e1f-0465-09c1-638b-d79447752735@amd.com> Accept-Language: en-US Content-Language: en-GB X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Microsoft-MacOutlook/16.53.21091200 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amd.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DM6PR12MB4202:EE_|CY5PR12MB6297:EE_ x-ms-office365-filtering-correlation-id: 4a66cb68-da78-4dd9-e7a2-08dafa3a5b3a x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: mywLUWeiTc4C/HNrQxy0c+fGG3Mza8KQJ6RFs0ygmwyaeLQUOK6N2il66fafTz/AbSom1cIi0j4RO0XF4yQDD1TXDzCREC8Wm0PpWLQgKMChO0Ta8AOhIQG1a8HrOS4LfxuJ7+MVm5RvVLtyVcTAPklm1VwcER9M5vu8j1k/HEunOXIeUjvjFUA3B/HLNAX+3q9RxsVdAapM1HW6gXeAJ30ocqkcG4QCM4HZcxwJQ14pjCKuJAp6zef/1BiloKe2ejWhOh+hamUPI9c+03YbuT8FA4R4/FsE2dUG9hO7cAjNwg54MJX5BfeygIpc0xKUzMm0v4BjiORlcGSnKxyrTCudmixDVI7McNEtXEdqvPkAZrNTPPNUFPxwfavmlM2TrMLuCeuGPVMTnOpo1pPMCq73giqX80RiNPm9Ac0B1NNT/5EgcIuhpRzipnZDRwT/1zpFSd0nnKjJj2DHEiKT0Ccsa21fGVU+GzzOIOMbmolivCStfC2+GmBcZYlOFTYVOO3WXnPA4PNkEjPGgYDhoImWBI6OZI8oKW9GXQN2/T/HngFuODWVXtbRBMwY/2ReLmUkkWHtibwnXwA7BzRLTyoVuf/etTCeuS9yLyXSv1v/9I2w88pucD1OXLrMN8tElC+oV1KXZsIxo9HUTHooz0uPuFbGqFIbFuYJQyjQSAlsOlZmYb+lzDtqzlGaYnboYA2M9SjKD/CrzxRAYv5IqhbQ66/XvNnX9d2xQ8mMg+mplM6UCycNH0zoLpXDBBxU x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM6PR12MB4202.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(396003)(136003)(346002)(376002)(366004)(39860400002)(451199015)(66946007)(38100700002)(76116006)(31696002)(122000001)(66476007)(86362001)(66556008)(8936002)(2906002)(30864003)(91956017)(5660300002)(4326008)(8676002)(64756008)(41300700001)(66446008)(26005)(2616005)(83380400001)(6512007)(186003)(53546011)(71200400001)(316002)(54906003)(110136005)(478600001)(38070700005)(36756003)(6506007)(6486002)(31686004)(2004002)(45980500001)(559001)(579004);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?ZmMzRzJrTnBQU0cyZitEanVXU25MQUNLMjA4anllblV3TUI1SlhjTUdhNTJk?= =?utf-8?B?Vm5MNEIxcWhOQldCMUVUWFBVYnYzK0pEUjB6Um5hWEdXZ3d0TmlQV1JhSlRp?= =?utf-8?B?d0poNmRVdUNRZUlCSjdJWGwvTDVUekZJVWhDUUowWndOZmtpOG1qNC80UlR5?= =?utf-8?B?MFBOVVhsRU9YSFJVcmNmbHpOdTNjaU5zSkhuY0c3Vm1HKytKY3hqajJmN2NB?= =?utf-8?B?MEJHa1ZBOVowQ3FsbU96RTdLNVlXVStSWC9YbWEwTlBsOEp3KzN5SlZCNzNP?= =?utf-8?B?K0sybkZZS0ZUTFhwZldXS2JoTWVrN21Uc2FnMGdiQTM3SldLQnMwbVRKbU1V?= =?utf-8?B?VkM3WjZ1c3ZEOStZSEtvOGVUVGJOTkV6S0lnT050Q2JGemp6MGNRMmEvRTUw?= =?utf-8?B?cjYyK0QrNFlMZjluc3h6bGJkTkhBdTduYVl4cHlocU5ucmdQTDRZclg5S0Ny?= =?utf-8?B?N1J4MDlLU1FTbVpCczU1Q2JKQnhMTzgybmlvQytoMUw3d3o1cXJNc2wxYkNy?= =?utf-8?B?VUExV1pOMUJ3RUMra3hMR3daNFpvcHlIeENmeHU0clpUK1ZQTTNTRkdiU2Jx?= =?utf-8?B?N3lKZWppWityS2gvT0VZb1dnbXJoUUs5VnNRQWkwWkRzMEM3dXJVWE1VVXBp?= =?utf-8?B?Z3IzYXNOTEgrdXNhR3R5VFc1d1RMQzJmaWpiazBuZUNna2l3cGlmS2dXeGJS?= =?utf-8?B?TXdrb0JrU0piUmc3RnJ3T0Q0UEJBTWNPYWVMdkFnaGFUVUJTZVY5ZEV1bTBu?= =?utf-8?B?ay9rY2VYbFNjaUhXZyt1bEczR1VKTHBMNWRCZDEveE1IODh2U0pULzVjNWJ6?= =?utf-8?B?YnJKU3NKVk82eisyU1J4SmtPTDExVWUxOVk2WUtqTDM0d2MyT2RCVTIyaE5X?= =?utf-8?B?MTh4enRZRGFPSENLaFBWNkl6UWpFZVo5WjU5eVhMeGFKZkxFUGFWcG55cmZR?= =?utf-8?B?TXpmSTlnMjZxcWx1M2VyU1YvTFRQZXpJckg0QUxldXViZFE0dmJBVlZaS294?= =?utf-8?B?T2ZFdFpWOW5hTjkwOFpmczI4RWNSZ05YcC9uQ3VncVQ5US92eXNpbjZDU2Y4?= =?utf-8?B?VE9vOFhScnB5cTYxckJsd1VvazhJRnh0NDd1YzdhVjE0WXRFR0VKd3VGM3Q1?= =?utf-8?B?VmY3bEd3akVtRCtKTXNUcE5ab3lZSHNPbXYrR2JiTldaVW01c2VLM2xiS09F?= =?utf-8?B?aTRWQTZHRTJNKy95dFhsS0lKT3cwSXQxOXhrUXcxNG1Jcnloc1l4SEpUNE9W?= =?utf-8?B?QnFqaDVOQzl2REJyQmFVWHdia2lkNzlOSlYyVnkzS016NFUwaEs0RUJqWFVT?= =?utf-8?B?WG0zajZLck5saG82N2hjaGEzV2krYlNnU0h0OG1iV1M2ZllIbmM2U1Z3WW94?= =?utf-8?B?czBhd29teURKUXlKbTlJT2JUUmNkQXZjQ2h5eEhobVpVenVLTEVRa0NjeWM0?= =?utf-8?B?bFllb2hOTVVlSjJKYjROVHc5M09lYW80bFp4N0tvRkNHS2R6Mkp1OXNPS1RR?= =?utf-8?B?QzJPT1VKQ002ZDN6UU9zUHhPTnNxVWtpdnpMaFV2UnRqYkRlQWdTZWpNRzRB?= =?utf-8?B?ckVHQ09wR2NWQmhPdGNnSU9JeG9VNVIvOWVwQkh3ZmZ6VFhQZUVxc0JldzAr?= =?utf-8?B?VFZRcjhORHdBZzF5TmdhSHlYdFg1T2F2THEvWHRsaU1kVHlXL3h2aW1YczB0?= =?utf-8?B?YnhoSzNmZWM1ang1ajVMZVZPcTRYK2pTREFhL2FsS2hya2tvNHVPSUtSSisx?= =?utf-8?B?S2dtaFB1eElPZVVXbklCRitSNUxvNy8wSmdxN1QxSjh0MFhUZ29EL29YbW53?= =?utf-8?B?blBDZnpTd1EvRmhLcjBHZGZOSmpsT1VOc3dZWDJ0bThVRDdLUHd2aXI2NEh5?= =?utf-8?B?MGN0ZmZ0SU9KK1k2dGMxZlZNTjYzS3V5aGRXRU9HcjJZTTVTRkpHUU01NXJ3?= =?utf-8?B?T2dNRFFiRlF5amY1VWc2VC9Db2JzdTVBM3dHa1A1SU9MVmN0MDZuem5nbTdJ?= =?utf-8?B?ODF0bVN5Z2hYTU05Y2doNnNTWDdKVGFFU3M3ZXU3a1J4dHBKSE5FTk42MXdW?= =?utf-8?B?cDF6T1BOSHduRnZ3WGlJOWpEZUFIRmtwWDJCV0RuTHQweDRkRm0wb2NGWkQ0?= =?utf-8?Q?fhSt/Cl0h7EQ9q2v0K7EJtUIO?= Content-Type: text/plain; charset="utf-8" Content-ID: <01539B12466D674DAC90A12BA907B61C@namprd12.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM6PR12MB4202.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4a66cb68-da78-4dd9-e7a2-08dafa3a5b3a X-MS-Exchange-CrossTenant-originalarrivaltime: 19 Jan 2023 16:29:37.1355 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: QnuD07sW1PU/wSXni/Z5ftzBZVQgzkg6KaxdKlqT2/6Rw85u3dvDk968RvcreArgFxMX3k24K977LOVSw528XQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR12MB6297 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org DQpPbiAxLzE5LzIzIDE0OjUxLCBMdWNlcm8gUGFsYXUsIEFsZWphbmRybyB3cm90ZToNCj4gT24g MS8xOS8yMyAxMjoxNCwgSmlyaSBQaXJrbyB3cm90ZToNCj4+IFRodSwgSmFuIDE5LCAyMDIzIGF0 IDEyOjMxOjM0UE0gQ0VULCBhbGVqYW5kcm8ubHVjZXJvLXBhbGF1QGFtZC5jb20gd3JvdGU6DQo+ Pj4gRnJvbTogQWxlamFuZHJvIEx1Y2VybyA8YWxlamFuZHJvLmx1Y2Vyby1wYWxhdUBhbWQuY29t Pg0KPj4+DQo+Pj4gQmFzaWMgc3VwcG9ydCBmb3IgZGV2bGluayBpbmZvIGNvbW1hbmQuDQo+Pj4N Cj4+PiBTaWduZWQtb2ZmLWJ5OiBBbGVqYW5kcm8gTHVjZXJvIDxhbGVqYW5kcm8ubHVjZXJvLXBh bGF1QGFtZC5jb20+DQo+Pj4gLS0tDQo+Pj4gZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL0tjb25m aWcgICAgICAgfCAgIDEgKw0KPj4+IGRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9NYWtlZmlsZSAg ICAgIHwgICAzICstDQo+Pj4gZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL2VmMTAwX25pYy5jICAg fCAgIDYgKw0KPj4+IGRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZnhfZGV2bGluay5jIHwgNDI3 ICsrKysrKysrKysrKysrKysrKysrKysrKysNCj4+PiBkcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMv ZWZ4X2RldmxpbmsuaCB8ICAyMCArKw0KPj4+IGRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9tY2Rp LmMgICAgICAgIHwgIDcyICsrKysrDQo+Pj4gZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL21jZGku aCAgICAgICAgfCAgIDMgKw0KPj4+IGRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9uZXRfZHJpdmVy LmggIHwgICAyICsNCj4+PiA4IGZpbGVzIGNoYW5nZWQsIDUzMyBpbnNlcnRpb25zKCspLCAxIGRl bGV0aW9uKC0pDQo+Pj4gY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbmV0L2V0aGVybmV0L3Nm Yy9lZnhfZGV2bGluay5jDQo+Pj4gY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbmV0L2V0aGVy bmV0L3NmYy9lZnhfZGV2bGluay5oDQo+PiBDb3VsZCB5b3UgcGxlYXNlIHNwbGl0Pw0KPj4NCj4+ IEF0IGxlYXN0IHRoZSBkZXZsaW5rIGludHJvZHVjdGlvbiBwYXJ0IGFuZCBpbmZvIGltcGxlbWVu dGF0aW9uLg0KPj4NCj4gU3VyZS4NCg0KSnVzdCBmb3IgYmVpbmcgc3VyZSwgd291bGQgaXQgYmUg ZmluZSB0byBoYXZlIGEgc2ltcGxlIGluZm8gDQppbXBsZW1lbnRhdGlvbiBmaXJzdCBhbG9uZyB3 aXRoIHRoZSBkZXZsaW5rIGluZnJhc3RydWN0dXJlIHRoZW4gYSBzZWNvbmQgDQpwYXRjaCBhZGRp bmcgdGhlIG1vcmUgY29tcGxleCBkZXZsaW5rIGluZm8gc3VwcG9ydD8gSSBndWVzcyBJIG5lZWQg YXQgDQpsZWFzdCBvbmUgb3BlcmF0aW9uIHN1cHBvcnRlZCBpbml0aWFsbHkuDQoNCj4+PiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL0tjb25maWcgYi9kcml2ZXJzL25ldC9l dGhlcm5ldC9zZmMvS2NvbmZpZw0KPj4+IGluZGV4IDA5NTBlNmIwNTA4Zi4uNGFmMzZiYTg5MDZi IDEwMDY0NA0KPj4+IC0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9LY29uZmlnDQo+Pj4g KysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL0tjb25maWcNCj4+PiBAQCAtMjIsNiArMjIs NyBAQCBjb25maWcgU0ZDDQo+Pj4gCWRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUwN Cj4+PiAJc2VsZWN0IE1ESU8NCj4+PiAJc2VsZWN0IENSQzMyDQo+Pj4gKwlzZWxlY3QgTkVUX0RF VkxJTksNCj4+PiAJaGVscA0KPj4+IAkgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIDEwLzQwLWdpZ2Fi aXQgRXRoZXJuZXQgY2FyZHMgYmFzZWQgb24NCj4+PiAJICB0aGUgU29sYXJmbGFyZSBTRkM5MTAw LWZhbWlseSBjb250cm9sbGVycy4NCj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJu ZXQvc2ZjL01ha2VmaWxlIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL01ha2VmaWxlDQo+Pj4g aW5kZXggNzEyYTQ4ZDAwMDY5Li41NWI5YzczY2Q4ZWYgMTAwNjQ0DQo+Pj4gLS0tIGEvZHJpdmVy cy9uZXQvZXRoZXJuZXQvc2ZjL01ha2VmaWxlDQo+Pj4gKysrIGIvZHJpdmVycy9uZXQvZXRoZXJu ZXQvc2ZjL01ha2VmaWxlDQo+Pj4gQEAgLTYsNyArNiw4IEBAIHNmYy15CQkJKz0gZWZ4Lm8gZWZ4 X2NvbW1vbi5vIGVmeF9jaGFubmVscy5vIG5pYy5vIFwNCj4+PiAJCQkgICBtY2RpLm8gbWNkaV9w b3J0Lm8gbWNkaV9wb3J0X2NvbW1vbi5vIFwNCj4+PiAJCQkgICBtY2RpX2Z1bmN0aW9ucy5vIG1j ZGlfZmlsdGVycy5vIG1jZGlfbW9uLm8gXA0KPj4+IAkJCSAgIGVmMTAwLm8gZWYxMDBfbmljLm8g ZWYxMDBfbmV0ZGV2Lm8gXA0KPj4+IC0JCQkgICBlZjEwMF9ldGh0b29sLm8gZWYxMDBfcngubyBl ZjEwMF90eC5vDQo+Pj4gKwkJCSAgIGVmMTAwX2V0aHRvb2wubyBlZjEwMF9yeC5vIGVmMTAwX3R4 Lm8gXA0KPj4+ICsJCQkgICBlZnhfZGV2bGluay5vDQo+Pj4gc2ZjLSQoQ09ORklHX1NGQ19NVEQp CSs9IG10ZC5vDQo+Pj4gc2ZjLSQoQ09ORklHX1NGQ19TUklPVikJKz0gc3Jpb3YubyBlZjEwX3Ny aW92Lm8gZWYxMDBfc3Jpb3YubyBlZjEwMF9yZXAubyBcDQo+Pj4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBtYWUubyB0Yy5vIHRjX2JpbmRpbmdzLm8gdGNfY291bnRlcnMubw0KPj4+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWYxMDBfbmljLmMgYi9kcml2ZXJz L25ldC9ldGhlcm5ldC9zZmMvZWYxMDBfbmljLmMNCj4+PiBpbmRleCBhZDY4NmM2NzFhYjguLjE0 YWY4ZjMxNGI4MyAxMDA2NDQNCj4+PiAtLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWYx MDBfbmljLmMNCj4+PiArKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWYxMDBfbmljLmMN Cj4+PiBAQCAtMjcsNiArMjcsNyBAQA0KPj4+ICNpbmNsdWRlICJ0Yy5oIg0KPj4+ICNpbmNsdWRl ICJtYWUuaCINCj4+PiAjaW5jbHVkZSAicnhfY29tbW9uLmgiDQo+Pj4gKyNpbmNsdWRlICJlZnhf ZGV2bGluay5oIg0KPj4+DQo+Pj4gI2RlZmluZSBFRjEwMF9NQVhfVklTIDQwOTYNCj4+PiAjZGVm aW5lIEVGMTAwX05VTV9NQ0RJX0JVRkZFUlMJMQ0KPj4+IEBAIC0xMTI0LDYgKzExMjUsMTAgQEAg aW50IGVmMTAwX3Byb2JlX25ldGRldl9wZihzdHJ1Y3QgZWZ4X25pYyAqZWZ4KQ0KPj4+IAkJbmV0 aWZfd2FybihlZngsIHByb2JlLCBuZXRfZGV2LA0KPj4+IAkJCSAgICJGYWlsZWQgdG8gcHJvYmUg YmFzZSBtcG9ydCByYyAlZDsgcmVwcmVzZW50b3JzIHdpbGwgbm90IGZ1bmN0aW9uXG4iLA0KPj4+ IAkJCSAgIHJjKTsNCj4+PiArCX0gZWxzZSB7DQo+Pj4gKwkJaWYgKGVmeF9wcm9iZV9kZXZsaW5r KGVmeCkpDQo+PiBJIGRvbid0IHVuZGVyc3RhbmQgd2h5IHRoZSBkZXZsaW5rIHJlZ2lzdGVyIGNh bGwgaXMgaGVyZS4NCj4+IDEpIFlvdSBjYW4gcmVnaXN0ZXJzIGl0IGZvciBQRiBhbmQgVkYuIEkg ZG9uJ3QgZm9sbG93IHdoeSB5b3UgZG8gaXQgb25seQ0KPj4gICAgICBmb3IgUEYuDQo+IFdlIGRp c2N1c3MgdGhlIHBvc3NpYmlsaXR5IG9mIGNyZWF0aW5nIHRoZSBkZXZsaW5rIGludGVyZmFjZSBm b3IgVkZzLA0KPiBidXQgd2UgZGVjaWRlZCBub3QgdG8uIEFyZ3VhYmx5LCB0aGlzIHNob3VsZCBu b3QgYmUgYXZhaWxhYmxlIGZvciBWRnMNCj4gb3duZWQgYnkgVk1zL2NvbnRhaW5lcnMsIG9yIGF0 IGxlYXN0IGluIG91ciBjYXNlLCBzaW5jZSB0aGUgaW50ZXJmYWNlIGlzDQo+IGJlaW5nIHVzZWQg Zm9yIGdldHRpbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHdob2xlIGRldmljZSBvciBmb3INCj4g Z2V0dGluZy9zZXR0aW5nIHRoZSBNQUMgYWRkcmVzcy4gV2UgcGxhbiB0byBzdXBwb3J0IG1vcmUg ZGV2bGluaw0KPiBmdW5jdGlvbmFsaXRpZXMgaW4gdGhlIG5lYXIgZnV0dXJlLCBzbyBtYXliZSB3 ZSBhZGQgc3VjaCBzdXBwb3J0IHRoZW4gaWYNCj4gd2UgY29uc2lkZXIgaXQgaXMgbmVlZGVkLg0K Pg0KPj4gMikgSXQgc2hvdWxkIGJlIGRvbmUgYXMgdGhlIGZpcnN0IHRoaW5nIGluIHRoZSBwcm9i ZSBmbG93LiBUaGVuIGRldmxpbmsNCj4+ICAgICAgcG9ydCByZWdpc3Rlciwgb25seSBhZnRlciB0 aGF0IG5ldGRldi4gSXQgbWFrZXMgc2Vuc2UgZnJvbSB0aGUNCj4+ICAgICAgcGVyc3BlY3RpdmUg b2Ygb2JqZWN0IGhpZXJhcmNoeS4NCj4gSSBjYW4gbm90IHNlZSBhIHByb2JsZW0gaGVyZS4gSXQg aXMgbm90IHRoZSBmaXJzdCB0aGluZyBkb25lIGluIHRoZQ0KPiBwcm9iZSBmdW5jdGlvbiwgYnV0 IEkgY2FuIG5vdCBzZWUgYW55IGRlcGVuZGVuY3kgZm9yIGJlaW5nIHNvLiBBbmQgaXQgaXMNCj4g ZG9uZSBiZWZvcmUgdGhlIGRldmxpbmsgcG9ydCByZWdpc3RyYXRpb24gYW5kIGJlZm9yZSB0aGUg bmV0ZGV2DQo+IHJlZ2lzdHJhdGlvbiB3aGF0IHNlZW1zIHRvIGJlIHdoYXQgb3RoZXIgZHJpdmVy cyBkby4gV2hhdCBhbSBJIG1pc3NpbmcNCj4gaGVyZT8NCj4NCj4+ICAgICAgSXQgaXMgYWxzbyB1 c3VhbCB0byBoYXZlIHRoZSBkZXZsaW5rIHByaXYgYXMgdGhlICJtYWluIiBkcml2ZXINCj4+ICAg ICAgc3RydWN0dXJlIHN0b3JhZ2UsIHNlZSBob3cgdGhhdCBpcyBkb25lIGluIG1seDUgb2YgbWx4 c3cgZm9yIGV4YW1wbGUuDQo+IEkgd2lsbCBjaGVjayB0aGUgd2F5IG90aGVycyBkcml2ZXJzIHVz ZSB0aGUgZGV2bGluayBwcml2Lg0KDQoNCkludGVyZXN0aW5nbHksIHRoZXJlIGFyZSAyNiBjYWxs cyB0byBkZXZsaW5rX2FsbG9jIHdpdGggaGFsZiBvZiB0aGVtIA0KdXNpbmcgdGhlIG1haW4gZHJp dmVyIHN0cnVjdHVyZSBhbmQgdGhlIG90aGVyIGhhbGYgdXNpbmcgYSBzcGVjaWZpYyANCmRldmxp bmsgcHJpdmF0ZSBzdHJ1Y3QuIFRoaXMgaXMgYSBodWdlIHJlc3BvbnNpYmlsaXR5IG5vdyBmb3Ig bWUhDQoNCkknbSBhZnJhaWQsIGZvciB0aGUgc2hha2Ugb2YgaGF2aW5nIHRoaXMgbWVyZ2VkIGFz IHNvb24gYXMgcG9zc2libGUsIA0KSSdsbCBrZWVwIHRoZSBjdXJyZW50IGFsbG9jYXRpb24uIEkg ZGlkIG5vdCBzdWZmZXIgYW55IHByb2JsZW0gd2l0aCB0aGlzIA0KYXBwcm9hY2ggd2hpbGUgaW1w bGVtZW50aW5nIHRoZSBjdXJyZW50IHN1cHBvcnQuIElmLCBmb3IgdGhlIGZ1cnRoZXIgDQpkZXZs aW5rIHN1cHBvcnQgd2UgcGxhbiB0byBhZGQsIGl0IHR1cm5zIG91dCB0byBiZSBhbiBpc3N1ZSwg d2Ugd2lsbCB0byANCnRoZSBjaGFuZ2VzIHRoZW4uIEkgd291bGQgc2F5IGl0IGlzIGEgbWFpbiBj aGFuZ2Ugbm93IG9yIHRoZW4sIGFuZCANCmN1cnJlbnQgd29yayBkb2VzIG5vdCBqdXN0aWZ5IGl0 IG5vdy4NCg0KDQo+Pg0KPj4+ICsJCQluZXRpZl93YXJuKGVmeCwgcHJvYmUsIG5ldF9kZXYsDQo+ Pj4gKwkJCQkgICAiRmFpbGVkIHRvIHJlZ2lzdGVyIGRldmxpbmtcbiIpOw0KPj4+IAl9DQo+Pj4N Cj4+PiAJcmMgPSBlZnhfaW5pdF90YyhlZngpOw0KPj4+IEBAIC0xMTU3LDYgKzExNjIsNyBAQCB2 b2lkIGVmMTAwX3JlbW92ZShzdHJ1Y3QgZWZ4X25pYyAqZWZ4KQ0KPj4+IHsNCj4+PiAJc3RydWN0 IGVmMTAwX25pY19kYXRhICpuaWNfZGF0YSA9IGVmeC0+bmljX2RhdGE7DQo+Pj4NCj4+PiArCWVm eF9maW5pX2RldmxpbmsoZWZ4KTsNCj4+PiAJZWZ4X21jZGlfZGV0YWNoKGVmeCk7DQo+Pj4gCWVm eF9tY2RpX2ZpbmkoZWZ4KTsNCj4+PiAJaWYgKG5pY19kYXRhKQ0KPj4+IGRpZmYgLS1naXQgYS9k cml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWZ4X2RldmxpbmsuYyBiL2RyaXZlcnMvbmV0L2V0aGVy bmV0L3NmYy9lZnhfZGV2bGluay5jDQo+Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4+PiBpbmRl eCAwMDAwMDAwMDAwMDAuLmM1MDZmOGYzNWQyNQ0KPj4+IC0tLSAvZGV2L251bGwNCj4+PiArKysg Yi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWZ4X2RldmxpbmsuYw0KPj4+IEBAIC0wLDAgKzEs NDI3IEBADQo+Pj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkNCj4+ PiArLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioNCj4+PiArICogRHJpdmVyIGZvciBBTUQgbmV0d29yayBj b250cm9sbGVycyBhbmQgYm9hcmRzDQo+Pj4gKyAqIENvcHlyaWdodCAoQykgMjAyMywgQWR2YW5j ZWQgTWljcm8gRGV2aWNlcywgSW5jLg0KPj4+ICsgKg0KPj4+ICsgKiBUaGlzIHByb2dyYW0gaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdA0K Pj4+ICsgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IHZlcnNpb24gMiBhcyBwdWJsaXNoZWQNCj4+PiArICogYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgaW5jb3Jwb3JhdGVkIGhlcmVpbiBieSByZWZlcmVuY2UuDQo+Pj4gKyAqLw0KPj4+ ICsNCj4+PiArI2luY2x1ZGUgPGxpbnV4L3J0Yy5oPg0KPj4+ICsjaW5jbHVkZSAibmV0X2RyaXZl ci5oIg0KPj4+ICsjaW5jbHVkZSAiZWYxMDBfbmljLmgiDQo+Pj4gKyNpbmNsdWRlICJlZnhfZGV2 bGluay5oIg0KPj4+ICsjaW5jbHVkZSAibmljLmgiDQo+Pj4gKyNpbmNsdWRlICJtY2RpLmgiDQo+ Pj4gKyNpbmNsdWRlICJtY2RpX2Z1bmN0aW9ucy5oIg0KPj4+ICsjaW5jbHVkZSAibWNkaV9wY29s LmgiDQo+Pj4gKw0KPj4+ICsvKiBDdXN0b20gZGV2bGluay1pbmZvIHZlcnNpb24gb2JqZWN0IG5h bWVzIGZvciBkZXRhaWxzIHRoYXQgZG8gbm90IG1hcCB0byB0aGUNCj4+PiArICogZ2VuZXJpYyBz dGFuZGFyZGl6ZWQgbmFtZXMuDQo+Pj4gKyAqLw0KPj4+ICsjZGVmaW5lIEVGWF9ERVZMSU5LX0lO Rk9fVkVSU0lPTl9GV19NR01UX1NVQwkiZncubWdtdC5zdWMiDQo+Pj4gKyNkZWZpbmUgRUZYX0RF VkxJTktfSU5GT19WRVJTSU9OX0ZXX01HTVRfQ01DCSJmdy5tZ210LmNtYyINCj4+PiArI2RlZmlu ZSBFRlhfREVWTElOS19JTkZPX1ZFUlNJT05fRlBHQV9SRVYJImZwZ2EucmV2Ig0KPj4+ICsjZGVm aW5lIEVGWF9ERVZMSU5LX0lORk9fVkVSU0lPTl9EQVRBUEFUSF9IVwkiZnBnYS5hcHAiDQo+Pj4g KyNkZWZpbmUgRUZYX0RFVkxJTktfSU5GT19WRVJTSU9OX0RBVEFQQVRIX0ZXCURFVkxJTktfSU5G T19WRVJTSU9OX0dFTkVSSUNfRldfQVBQDQo+Pj4gKyNkZWZpbmUgRUZYX0RFVkxJTktfSU5GT19W RVJTSU9OX1NPQ19CT09UCSJjb3Byb2MuYm9vdCINCj4+PiArI2RlZmluZSBFRlhfREVWTElOS19J TkZPX1ZFUlNJT05fU09DX1VCT09UCSJjb3Byb2MudWJvb3QiDQo+Pj4gKyNkZWZpbmUgRUZYX0RF VkxJTktfSU5GT19WRVJTSU9OX1NPQ19NQUlOCSJjb3Byb2MubWFpbiINCj4+PiArI2RlZmluZSBF RlhfREVWTElOS19JTkZPX1ZFUlNJT05fU09DX1JFQ09WRVJZCSJjb3Byb2MucmVjb3ZlcnkiDQo+ Pj4gKyNkZWZpbmUgRUZYX0RFVkxJTktfSU5GT19WRVJTSU9OX0ZXX0VYUFJPTQkiZncuZXhwcm9t Ig0KPj4+ICsjZGVmaW5lIEVGWF9ERVZMSU5LX0lORk9fVkVSU0lPTl9GV19VRUZJCSJmdy51ZWZp Ig0KPj4+ICsNCj4+PiArI2RlZmluZSBFRlhfTUFYX1ZFUlNJT05fSU5GT19MRU4JNjQNCj4+PiAr DQo+Pj4gK3N0YXRpYyBpbnQgZWZ4X2RldmxpbmtfaW5mb19udnJhbV9wYXJ0aXRpb24oc3RydWN0 IGVmeF9uaWMgKmVmeCwNCj4+PiArCQkJCQkgICAgc3RydWN0IGRldmxpbmtfaW5mb19yZXEgKnJl cSwNCj4+PiArCQkJCQkgICAgdW5zaWduZWQgaW50IHBhcnRpdGlvbl90eXBlLA0KPj4+ICsJCQkJ CSAgICBjb25zdCBjaGFyICp2ZXJzaW9uX25hbWUpDQo+Pj4gK3sNCj4+PiArCWNoYXIgYnVmW0VG WF9NQVhfVkVSU0lPTl9JTkZPX0xFTl07DQo+Pj4gKwl1MTYgdmVyc2lvbls0XTsNCj4+PiArCWlu dCByYzsNCj4+PiArDQo+Pj4gKwlyYyA9IGVmeF9tY2RpX252cmFtX21ldGFkYXRhKGVmeCwgcGFy dGl0aW9uX3R5cGUsIE5VTEwsIHZlcnNpb24sIE5VTEwsDQo+Pj4gKwkJCQkgICAgIDApOw0KPj4+ ICsJaWYgKHJjKQ0KPj4+ICsJCXJldHVybiByYzsNCj4+PiArDQo+Pj4gKwlzbnByaW50ZihidWYs IEVGWF9NQVhfVkVSU0lPTl9JTkZPX0xFTiwgIiV1LiV1LiV1LiV1IiwgdmVyc2lvblswXSwNCj4+ PiArCQkgdmVyc2lvblsxXSwgdmVyc2lvblsyXSwgdmVyc2lvblszXSk7DQo+Pj4gKwlkZXZsaW5r X2luZm9fdmVyc2lvbl9zdG9yZWRfcHV0KHJlcSwgdmVyc2lvbl9uYW1lLCBidWYpOw0KPj4+ICsN Cj4+PiArCXJldHVybiAwOw0KPj4+ICt9DQo+Pj4gKw0KPj4+ICtzdGF0aWMgdm9pZCBlZnhfZGV2 bGlua19pbmZvX3N0b3JlZF92ZXJzaW9ucyhzdHJ1Y3QgZWZ4X25pYyAqZWZ4LA0KPj4+ICsJCQkJ CSAgICAgc3RydWN0IGRldmxpbmtfaW5mb19yZXEgKnJlcSkNCj4+PiArew0KPj4+ICsJZWZ4X2Rl dmxpbmtfaW5mb19udnJhbV9wYXJ0aXRpb24oZWZ4LCByZXEsIE5WUkFNX1BBUlRJVElPTl9UWVBF X0JVTkRMRSwNCj4+PiArCQkJCQkgREVWTElOS19JTkZPX1ZFUlNJT05fR0VORVJJQ19GV19CVU5E TEVfSUQpOw0KPj4+ICsJZWZ4X2RldmxpbmtfaW5mb19udnJhbV9wYXJ0aXRpb24oZWZ4LCByZXEs DQo+Pj4gKwkJCQkJIE5WUkFNX1BBUlRJVElPTl9UWVBFX01DX0ZJUk1XQVJFLA0KPj4+ICsJCQkJ CSBERVZMSU5LX0lORk9fVkVSU0lPTl9HRU5FUklDX0ZXX01HTVQpOw0KPj4+ICsJZWZ4X2Rldmxp bmtfaW5mb19udnJhbV9wYXJ0aXRpb24oZWZ4LCByZXEsDQo+Pj4gKwkJCQkJIE5WUkFNX1BBUlRJ VElPTl9UWVBFX1NVQ19GSVJNV0FSRSwNCj4+PiArCQkJCQkgRUZYX0RFVkxJTktfSU5GT19WRVJT SU9OX0ZXX01HTVRfU1VDKTsNCj4+PiArCWVmeF9kZXZsaW5rX2luZm9fbnZyYW1fcGFydGl0aW9u KGVmeCwgcmVxLA0KPj4+ICsJCQkJCSBOVlJBTV9QQVJUSVRJT05fVFlQRV9FWFBBTlNJT05fUk9N LA0KPj4+ICsJCQkJCSBFRlhfREVWTElOS19JTkZPX1ZFUlNJT05fRldfRVhQUk9NKTsNCj4+PiAr CWVmeF9kZXZsaW5rX2luZm9fbnZyYW1fcGFydGl0aW9uKGVmeCwgcmVxLA0KPj4+ICsJCQkJCSBO VlJBTV9QQVJUSVRJT05fVFlQRV9FWFBBTlNJT05fVUVGSSwNCj4+PiArCQkJCQkgRUZYX0RFVkxJ TktfSU5GT19WRVJTSU9OX0ZXX1VFRkkpOw0KPj4+ICt9DQo+Pj4gKw0KPj4+ICsjZGVmaW5lIEVG WF9NQVhfU0VSSUFMTlVNX0xFTgkoRVRIX0FMRU4gKiAyICsgMSkNCj4+PiArDQo+Pj4gK3N0YXRp YyB2b2lkIGVmeF9kZXZsaW5rX2luZm9fYm9hcmRfY2ZnKHN0cnVjdCBlZnhfbmljICplZngsDQo+ Pj4gKwkJCQkgICAgICAgc3RydWN0IGRldmxpbmtfaW5mb19yZXEgKnJlcSkNCj4+PiArew0KPj4+ ICsJY2hhciBzbltFRlhfTUFYX1NFUklBTE5VTV9MRU5dOw0KPj4+ICsJdTggbWFjX2FkZHJlc3Nb RVRIX0FMRU5dOw0KPj4+ICsJaW50IHJjOw0KPj4+ICsNCj4+PiArCXJjID0gZWZ4X21jZGlfZ2V0 X2JvYXJkX2NmZyhlZngsICh1OCAqKW1hY19hZGRyZXNzLCBOVUxMLCBOVUxMKTsNCj4+PiArCWlm ICghcmMpIHsNCj4+PiArCQlzbnByaW50ZihzbiwgRUZYX01BWF9TRVJJQUxOVU1fTEVOLCAiJXBt IiwgbWFjX2FkZHJlc3MpOw0KPj4+ICsJCWRldmxpbmtfaW5mb19zZXJpYWxfbnVtYmVyX3B1dChy ZXEsIHNuKTsNCj4+PiArCX0NCj4+PiArfQ0KPj4+ICsNCj4+PiArI2RlZmluZSBFRlhfVkVSX0ZM QUcoX2YpCVwNCj4+PiArCShNQ19DTURfR0VUX1ZFUlNJT05fVjVfT1VUXyAjIyBfZiAjIyBfUFJF U0VOVF9MQk4pDQo+Pj4gKw0KPj4+ICtzdGF0aWMgdm9pZCBlZnhfZGV2bGlua19pbmZvX3J1bm5p bmdfdmVyc2lvbnMoc3RydWN0IGVmeF9uaWMgKmVmeCwNCj4+PiArCQkJCQkgICAgICBzdHJ1Y3Qg ZGV2bGlua19pbmZvX3JlcSAqcmVxKQ0KPj4+ICt7DQo+Pj4gKwlNQ0RJX0RFQ0xBUkVfQlVGKG91 dGJ1ZiwgTUNfQ01EX0dFVF9WRVJTSU9OX1Y1X09VVF9MRU4pOw0KPj4+ICsJTUNESV9ERUNMQVJF X0JVRihpbmJ1ZiwgTUNfQ01EX0dFVF9WRVJTSU9OX0VYVF9JTl9MRU4pOw0KPj4+ICsJY2hhciBi dWZbRUZYX01BWF9WRVJTSU9OX0lORk9fTEVOXTsNCj4+PiArCXVuc2lnbmVkIGludCBmbGFncywg YnVpbGRfaWQ7DQo+Pj4gKwl1bmlvbiB7DQo+Pj4gKwkJY29uc3QgX19sZTMyICpkd29yZHM7DQo+ Pj4gKwkJY29uc3QgX19sZTE2ICp3b3JkczsNCj4+PiArCQljb25zdCBjaGFyICpzdHI7DQo+Pj4g Kwl9IHZlcjsNCj4+PiArCXN0cnVjdCBydGNfdGltZSBidWlsZF9kYXRlOw0KPj4+ICsJc2l6ZV90 IG91dGxlbmd0aCwgb2Zmc2V0Ow0KPj4+ICsJdTY0IHRzdGFtcDsNCj4+PiArCWludCByYzsNCj4+ PiArDQo+Pj4gKwlyYyA9IGVmeF9tY2RpX3JwYyhlZngsIE1DX0NNRF9HRVRfVkVSU0lPTiwgaW5i dWYsIHNpemVvZihpbmJ1ZiksDQo+Pj4gKwkJCSAgb3V0YnVmLCBzaXplb2Yob3V0YnVmKSwgJm91 dGxlbmd0aCk7DQo+Pj4gKwlpZiAocmMgfHwgb3V0bGVuZ3RoIDwgTUNfQ01EX0dFVF9WRVJTSU9O X09VVF9MRU4pDQo+Pj4gKwkJcmV0dXJuOw0KPj4+ICsNCj4+PiArCS8qIEhhbmRsZSBwcmV2aW91 cyBvdXRwdXQgKi8NCj4+PiArCWlmIChvdXRsZW5ndGggPCBNQ19DTURfR0VUX1ZFUlNJT05fVjJf T1VUX0xFTikgew0KPj4+ICsJCXZlci53b3JkcyA9IChfX2xlMTYgKilNQ0RJX1BUUihvdXRidWYs DQo+Pj4gKwkJCQkJICAgICAgIEdFVF9WRVJTSU9OX0VYVF9PVVRfVkVSU0lPTik7DQo+Pj4gKwkJ b2Zmc2V0ID0gc25wcmludGYoYnVmLCBFRlhfTUFYX1ZFUlNJT05fSU5GT19MRU4sICIldS4ldS4l dS4ldSIsDQo+Pj4gKwkJCQkgIGxlMTZfdG9fY3B1KHZlci53b3Jkc1swXSksDQo+Pj4gKwkJCQkg IGxlMTZfdG9fY3B1KHZlci53b3Jkc1sxXSksDQo+Pj4gKwkJCQkgIGxlMTZfdG9fY3B1KHZlci53 b3Jkc1syXSksDQo+Pj4gKwkJCQkgIGxlMTZfdG9fY3B1KHZlci53b3Jkc1szXSkpOw0KPj4+ICsN Cj4+PiArCQlkZXZsaW5rX2luZm9fdmVyc2lvbl9ydW5uaW5nX3B1dChyZXEsDQo+Pj4gKwkJCQkJ CSBERVZMSU5LX0lORk9fVkVSU0lPTl9HRU5FUklDX0ZXX01HTVQsDQo+Pj4gKwkJCQkJCSBidWYp Ow0KPj4+ICsJCXJldHVybjsNCj4+PiArCX0NCj4+PiArDQo+Pj4gKwkvKiBIYW5kbGUgVjIgYWRk aXRpb25zICovDQo+Pj4gKwlmbGFncyA9IE1DRElfRFdPUkQob3V0YnVmLCBHRVRfVkVSU0lPTl9W Ml9PVVRfRkxBR1MpOw0KPj4+ICsJaWYgKGZsYWdzICYgQklUKEVGWF9WRVJfRkxBRyhCT0FSRF9F WFRfSU5GTykpKSB7DQo+Pj4gKwkJc25wcmludGYoYnVmLCBFRlhfTUFYX1ZFUlNJT05fSU5GT19M RU4sICIlcyIsDQo+Pj4gKwkJCSBNQ0RJX1BUUihvdXRidWYsIEdFVF9WRVJTSU9OX1YyX09VVF9C T0FSRF9OQU1FKSk7DQo+Pj4gKwkJZGV2bGlua19pbmZvX3ZlcnNpb25fZml4ZWRfcHV0KHJlcSwN Cj4+PiArCQkJCQkgICAgICAgREVWTElOS19JTkZPX1ZFUlNJT05fR0VORVJJQ19CT0FSRF9JRCwN Cj4+PiArCQkJCQkgICAgICAgYnVmKTsNCj4+PiArDQo+Pj4gKwkJLyogRmF2b3VyIGZ1bGwgYm9h cmQgdmVyc2lvbiBpZiBwcmVzZW50IChpbiBWNSBvciBsYXRlcikgKi8NCj4+PiArCQlpZiAofmZs YWdzICYgQklUKEVGWF9WRVJfRkxBRyhCT0FSRF9WRVJTSU9OKSkpIHsNCj4+PiArCQkJc25wcmlu dGYoYnVmLCBFRlhfTUFYX1ZFUlNJT05fSU5GT19MRU4sICIldSIsDQo+Pj4gKwkJCQkgTUNESV9E V09SRChvdXRidWYsDQo+Pj4gKwkJCQkJICAgIEdFVF9WRVJTSU9OX1YyX09VVF9CT0FSRF9SRVZJ U0lPTikpOw0KPj4+ICsJCQlkZXZsaW5rX2luZm9fdmVyc2lvbl9maXhlZF9wdXQocmVxLA0KPj4+ ICsJCQkJCQkgICAgICAgREVWTElOS19JTkZPX1ZFUlNJT05fR0VORVJJQ19CT0FSRF9SRVYsDQo+ Pj4gKwkJCQkJCSAgICAgICBidWYpOw0KPj4+ICsJCX0NCj4+PiArDQo+Pj4gKwkJdmVyLnN0ciA9 IE1DRElfUFRSKG91dGJ1ZiwgR0VUX1ZFUlNJT05fVjJfT1VUX0JPQVJEX1NFUklBTCk7DQo+Pj4g KwkJaWYgKHZlci5zdHJbMF0pDQo+Pj4gKwkJCWRldmxpbmtfaW5mb19ib2FyZF9zZXJpYWxfbnVt YmVyX3B1dChyZXEsIHZlci5zdHIpOw0KPj4+ICsJfQ0KPj4+ICsNCj4+PiArCWlmIChmbGFncyAm IEJJVChFRlhfVkVSX0ZMQUcoRlBHQV9FWFRfSU5GTykpKSB7DQo+Pj4gKwkJdmVyLmR3b3JkcyA9 IChfX2xlMzIgKilNQ0RJX1BUUihvdXRidWYsDQo+Pj4gKwkJCQkJCUdFVF9WRVJTSU9OX1YyX09V VF9GUEdBX1ZFUlNJT04pOw0KPj4+ICsJCW9mZnNldCA9IHNucHJpbnRmKGJ1ZiwgRUZYX01BWF9W RVJTSU9OX0lORk9fTEVOLCAiJXVfJWMldSIsDQo+Pj4gKwkJCQkgIGxlMzJfdG9fY3B1KHZlci5k d29yZHNbMF0pLA0KPj4+ICsJCQkJICAnQScgKyBsZTMyX3RvX2NwdSh2ZXIuZHdvcmRzWzFdKSwN Cj4+PiArCQkJCSAgbGUzMl90b19jcHUodmVyLmR3b3Jkc1syXSkpOw0KPj4+ICsNCj4+PiArCQl2 ZXIuc3RyID0gTUNESV9QVFIob3V0YnVmLCBHRVRfVkVSU0lPTl9WMl9PVVRfRlBHQV9FWFRSQSk7 DQo+Pj4gKwkJaWYgKHZlci5zdHJbMF0pDQo+Pj4gKwkJCXNucHJpbnRmKCZidWZbb2Zmc2V0XSwg RUZYX01BWF9WRVJTSU9OX0lORk9fTEVOIC0gb2Zmc2V0LA0KPj4+ICsJCQkJICIgKCVzKSIsIHZl ci5zdHIpOw0KPj4+ICsNCj4+PiArCQlkZXZsaW5rX2luZm9fdmVyc2lvbl9ydW5uaW5nX3B1dChy ZXEsDQo+Pj4gKwkJCQkJCSBFRlhfREVWTElOS19JTkZPX1ZFUlNJT05fRlBHQV9SRVYsDQo+Pj4g KwkJCQkJCSBidWYpOw0KPj4+ICsJfQ0KPj4+ICsNCj4+PiArCWlmIChmbGFncyAmIEJJVChFRlhf VkVSX0ZMQUcoQ01DX0VYVF9JTkZPKSkpIHsNCj4+PiArCQl2ZXIuZHdvcmRzID0gKF9fbGUzMiAq KU1DRElfUFRSKG91dGJ1ZiwNCj4+PiArCQkJCQkJR0VUX1ZFUlNJT05fVjJfT1VUX0NNQ0ZXX1ZF UlNJT04pOw0KPj4+ICsJCW9mZnNldCA9IHNucHJpbnRmKGJ1ZiwgRUZYX01BWF9WRVJTSU9OX0lO Rk9fTEVOLCAiJXUuJXUuJXUuJXUiLA0KPj4+ICsJCQkJICBsZTMyX3RvX2NwdSh2ZXIuZHdvcmRz WzBdKSwNCj4+PiArCQkJCSAgbGUzMl90b19jcHUodmVyLmR3b3Jkc1sxXSksDQo+Pj4gKwkJCQkg IGxlMzJfdG9fY3B1KHZlci5kd29yZHNbMl0pLA0KPj4+ICsJCQkJICBsZTMyX3RvX2NwdSh2ZXIu ZHdvcmRzWzNdKSk7DQo+Pj4gKw0KPj4+ICsJCXRzdGFtcCA9IE1DRElfUVdPUkQob3V0YnVmLA0K Pj4+ICsJCQkJICAgIEdFVF9WRVJTSU9OX1YyX09VVF9DTUNGV19CVUlMRF9EQVRFKTsNCj4+PiAr CQlpZiAodHN0YW1wKSB7DQo+Pj4gKwkJCXJ0Y190aW1lNjRfdG9fdG0odHN0YW1wLCAmYnVpbGRf ZGF0ZSk7DQo+Pj4gKwkJCXNucHJpbnRmKCZidWZbb2Zmc2V0XSwgRUZYX01BWF9WRVJTSU9OX0lO Rk9fTEVOIC0gb2Zmc2V0LA0KPj4+ICsJCQkJICIgKCVwdFJkKSIsICZidWlsZF9kYXRlKTsNCj4+ PiArCQl9DQo+Pj4gKw0KPj4+ICsJCWRldmxpbmtfaW5mb192ZXJzaW9uX3J1bm5pbmdfcHV0KHJl cSwNCj4+PiArCQkJCQkJIEVGWF9ERVZMSU5LX0lORk9fVkVSU0lPTl9GV19NR01UX0NNQywNCj4+ PiArCQkJCQkJIGJ1Zik7DQo+Pj4gKwl9DQo+Pj4gKw0KPj4+ICsJdmVyLndvcmRzID0gKF9fbGUx NiAqKU1DRElfUFRSKG91dGJ1ZiwgR0VUX1ZFUlNJT05fVjJfT1VUX1ZFUlNJT04pOw0KPj4+ICsJ b2Zmc2V0ID0gc25wcmludGYoYnVmLCBFRlhfTUFYX1ZFUlNJT05fSU5GT19MRU4sICIldS4ldS4l dS4ldSIsDQo+Pj4gKwkJCSAgbGUxNl90b19jcHUodmVyLndvcmRzWzBdKSwgbGUxNl90b19jcHUo dmVyLndvcmRzWzFdKSwNCj4+PiArCQkJICBsZTE2X3RvX2NwdSh2ZXIud29yZHNbMl0pLCBsZTE2 X3RvX2NwdSh2ZXIud29yZHNbM10pKTsNCj4+PiArCWlmIChmbGFncyAmIEJJVChFRlhfVkVSX0ZM QUcoTUNGV19FWFRfSU5GTykpKSB7DQo+Pj4gKwkJYnVpbGRfaWQgPSBNQ0RJX0RXT1JEKG91dGJ1 ZiwgR0VUX1ZFUlNJT05fVjJfT1VUX01DRldfQlVJTERfSUQpOw0KPj4+ICsJCXNucHJpbnRmKCZi dWZbb2Zmc2V0XSwgRUZYX01BWF9WRVJTSU9OX0lORk9fTEVOIC0gb2Zmc2V0LA0KPj4+ICsJCQkg IiAoJXgpICVzIiwgYnVpbGRfaWQsDQo+Pj4gKwkJCSBNQ0RJX1BUUihvdXRidWYsIEdFVF9WRVJT SU9OX1YyX09VVF9NQ0ZXX0JVSUxEX05BTUUpKTsNCj4+PiArCX0NCj4+PiArCWRldmxpbmtfaW5m b192ZXJzaW9uX3J1bm5pbmdfcHV0KHJlcSwNCj4+PiArCQkJCQkgREVWTElOS19JTkZPX1ZFUlNJ T05fR0VORVJJQ19GV19NR01ULA0KPj4+ICsJCQkJCSBidWYpOw0KPj4+ICsNCj4+PiArCWlmIChm bGFncyAmIEJJVChFRlhfVkVSX0ZMQUcoU1VDRldfRVhUX0lORk8pKSkgew0KPj4+ICsJCXZlci5k d29yZHMgPSAoX19sZTMyICopTUNESV9QVFIob3V0YnVmLA0KPj4+ICsJCQkJCQlHRVRfVkVSU0lP Tl9WMl9PVVRfU1VDRldfVkVSU0lPTik7DQo+Pj4gKwkJdHN0YW1wID0gTUNESV9RV09SRChvdXRi dWYsDQo+Pj4gKwkJCQkgICAgR0VUX1ZFUlNJT05fVjJfT1VUX1NVQ0ZXX0JVSUxEX0RBVEUpOw0K Pj4+ICsJCXJ0Y190aW1lNjRfdG9fdG0odHN0YW1wLCAmYnVpbGRfZGF0ZSk7DQo+Pj4gKwkJYnVp bGRfaWQgPSBNQ0RJX0RXT1JEKG91dGJ1ZiwgR0VUX1ZFUlNJT05fVjJfT1VUX1NVQ0ZXX0NISVBf SUQpOw0KPj4+ICsNCj4+PiArCQlzbnByaW50ZihidWYsIEVGWF9NQVhfVkVSU0lPTl9JTkZPX0xF TiwNCj4+PiArCQkJICIldS4ldS4ldS4ldSB0eXBlICV4ICglcHRSZCkiLA0KPj4+ICsJCQkgbGUz Ml90b19jcHUodmVyLmR3b3Jkc1swXSksIGxlMzJfdG9fY3B1KHZlci5kd29yZHNbMV0pLA0KPj4+ ICsJCQkgbGUzMl90b19jcHUodmVyLmR3b3Jkc1syXSksIGxlMzJfdG9fY3B1KHZlci5kd29yZHNb M10pLA0KPj4+ICsJCQkgYnVpbGRfaWQsICZidWlsZF9kYXRlKTsNCj4+PiArDQo+Pj4gKwkJZGV2 bGlua19pbmZvX3ZlcnNpb25fcnVubmluZ19wdXQocmVxLA0KPj4+ICsJCQkJCQkgRUZYX0RFVkxJ TktfSU5GT19WRVJTSU9OX0ZXX01HTVRfU1VDLA0KPj4+ICsJCQkJCQkgYnVmKTsNCj4+PiArCX0N Cj4+PiArDQo+Pj4gKwlpZiAob3V0bGVuZ3RoIDwgTUNfQ01EX0dFVF9WRVJTSU9OX1YzX09VVF9M RU4pDQo+Pj4gKwkJcmV0dXJuOw0KPj4+ICsNCj4+PiArCS8qIEhhbmRsZSBWMyBhZGRpdGlvbnMg Ki8NCj4+PiArCWlmIChmbGFncyAmIEJJVChFRlhfVkVSX0ZMQUcoREFUQVBBVEhfSFdfVkVSU0lP TikpKSB7DQo+Pj4gKwkJdmVyLmR3b3JkcyA9IChfX2xlMzIgKilNQ0RJX1BUUihvdXRidWYsDQo+ Pj4gKwkJCQkJCUdFVF9WRVJTSU9OX1YzX09VVF9EQVRBUEFUSF9IV19WRVJTSU9OKTsNCj4+PiAr DQo+Pj4gKwkJc25wcmludGYoYnVmLCBFRlhfTUFYX1ZFUlNJT05fSU5GT19MRU4sICIldS4ldS4l dSIsDQo+Pj4gKwkJCSBsZTMyX3RvX2NwdSh2ZXIuZHdvcmRzWzBdKSwgbGUzMl90b19jcHUodmVy LmR3b3Jkc1sxXSksDQo+Pj4gKwkJCSBsZTMyX3RvX2NwdSh2ZXIuZHdvcmRzWzJdKSk7DQo+Pj4g Kw0KPj4+ICsJCWRldmxpbmtfaW5mb192ZXJzaW9uX3J1bm5pbmdfcHV0KHJlcSwNCj4+PiArCQkJ CQkJIEVGWF9ERVZMSU5LX0lORk9fVkVSU0lPTl9EQVRBUEFUSF9IVywNCj4+PiArCQkJCQkJIGJ1 Zik7DQo+Pj4gKwl9DQo+Pj4gKw0KPj4+ICsJaWYgKGZsYWdzICYgQklUKEVGWF9WRVJfRkxBRyhE QVRBUEFUSF9GV19WRVJTSU9OKSkpIHsNCj4+PiArCQl2ZXIuZHdvcmRzID0gKF9fbGUzMiAqKU1D RElfUFRSKG91dGJ1ZiwNCj4+PiArCQkJCQkJR0VUX1ZFUlNJT05fVjNfT1VUX0RBVEFQQVRIX0ZX X1ZFUlNJT04pOw0KPj4+ICsNCj4+PiArCQlzbnByaW50ZihidWYsIEVGWF9NQVhfVkVSU0lPTl9J TkZPX0xFTiwgIiV1LiV1LiV1IiwNCj4+PiArCQkJIGxlMzJfdG9fY3B1KHZlci5kd29yZHNbMF0p LCBsZTMyX3RvX2NwdSh2ZXIuZHdvcmRzWzFdKSwNCj4+PiArCQkJIGxlMzJfdG9fY3B1KHZlci5k d29yZHNbMl0pKTsNCj4+PiArDQo+Pj4gKwkJZGV2bGlua19pbmZvX3ZlcnNpb25fcnVubmluZ19w dXQocmVxLA0KPj4+ICsJCQkJCQkgRUZYX0RFVkxJTktfSU5GT19WRVJTSU9OX0RBVEFQQVRIX0ZX LA0KPj4+ICsJCQkJCQkgYnVmKTsNCj4+PiArCX0NCj4+PiArDQo+Pj4gKwlpZiAob3V0bGVuZ3Ro IDwgTUNfQ01EX0dFVF9WRVJTSU9OX1Y0X09VVF9MRU4pDQo+Pj4gKwkJcmV0dXJuOw0KPj4+ICsN Cj4+PiArCS8qIEhhbmRsZSBWNCBhZGRpdGlvbnMgKi8NCj4+PiArCWlmIChmbGFncyAmIEJJVChF RlhfVkVSX0ZMQUcoU09DX0JPT1RfVkVSU0lPTikpKSB7DQo+Pj4gKwkJdmVyLmR3b3JkcyA9IChf X2xlMzIgKilNQ0RJX1BUUihvdXRidWYsDQo+Pj4gKwkJCQkJCUdFVF9WRVJTSU9OX1Y0X09VVF9T T0NfQk9PVF9WRVJTSU9OKTsNCj4+PiArDQo+Pj4gKwkJc25wcmludGYoYnVmLCBFRlhfTUFYX1ZF UlNJT05fSU5GT19MRU4sICIldS4ldS4ldS4ldSIsDQo+Pj4gKwkJCSBsZTMyX3RvX2NwdSh2ZXIu ZHdvcmRzWzBdKSwgbGUzMl90b19jcHUodmVyLmR3b3Jkc1sxXSksDQo+Pj4gKwkJCSBsZTMyX3Rv X2NwdSh2ZXIuZHdvcmRzWzJdKSwNCj4+PiArCQkJIGxlMzJfdG9fY3B1KHZlci5kd29yZHNbM10p KTsNCj4+PiArDQo+Pj4gKwkJZGV2bGlua19pbmZvX3ZlcnNpb25fcnVubmluZ19wdXQocmVxLA0K Pj4+ICsJCQkJCQkgRUZYX0RFVkxJTktfSU5GT19WRVJTSU9OX1NPQ19CT09ULA0KPj4+ICsJCQkJ CQkgYnVmKTsNCj4+PiArCX0NCj4+PiArDQo+Pj4gKwlpZiAoZmxhZ3MgJiBCSVQoRUZYX1ZFUl9G TEFHKFNPQ19VQk9PVF9WRVJTSU9OKSkpIHsNCj4+PiArCQl2ZXIuZHdvcmRzID0gKF9fbGUzMiAq KU1DRElfUFRSKG91dGJ1ZiwNCj4+PiArCQkJCQkJR0VUX1ZFUlNJT05fVjRfT1VUX1NPQ19VQk9P VF9WRVJTSU9OKTsNCj4+PiArDQo+Pj4gKwkJc25wcmludGYoYnVmLCBFRlhfTUFYX1ZFUlNJT05f SU5GT19MRU4sICIldS4ldS4ldS4ldSIsDQo+Pj4gKwkJCSBsZTMyX3RvX2NwdSh2ZXIuZHdvcmRz WzBdKSwgbGUzMl90b19jcHUodmVyLmR3b3Jkc1sxXSksDQo+Pj4gKwkJCSBsZTMyX3RvX2NwdSh2 ZXIuZHdvcmRzWzJdKSwNCj4+PiArCQkJIGxlMzJfdG9fY3B1KHZlci5kd29yZHNbM10pKTsNCj4+ PiArDQo+Pj4gKwkJZGV2bGlua19pbmZvX3ZlcnNpb25fcnVubmluZ19wdXQocmVxLA0KPj4+ICsJ CQkJCQkgRUZYX0RFVkxJTktfSU5GT19WRVJTSU9OX1NPQ19VQk9PVCwNCj4+PiArCQkJCQkJIGJ1 Zik7DQo+Pj4gKwl9DQo+Pj4gKw0KPj4+ICsJaWYgKGZsYWdzICYgQklUKEVGWF9WRVJfRkxBRyhT T0NfTUFJTl9ST09URlNfVkVSU0lPTikpKSB7DQo+Pj4gKwkJdmVyLmR3b3JkcyA9IChfX2xlMzIg KilNQ0RJX1BUUihvdXRidWYsDQo+Pj4gKwkJCQkJCUdFVF9WRVJTSU9OX1Y0X09VVF9TT0NfTUFJ Tl9ST09URlNfVkVSU0lPTik7DQo+Pj4gKw0KPj4+ICsJCXNucHJpbnRmKGJ1ZiwgRUZYX01BWF9W RVJTSU9OX0lORk9fTEVOLCAiJXUuJXUuJXUuJXUiLA0KPj4+ICsJCQkgbGUzMl90b19jcHUodmVy LmR3b3Jkc1swXSksIGxlMzJfdG9fY3B1KHZlci5kd29yZHNbMV0pLA0KPj4+ICsJCQkgbGUzMl90 b19jcHUodmVyLmR3b3Jkc1syXSksDQo+Pj4gKwkJCSBsZTMyX3RvX2NwdSh2ZXIuZHdvcmRzWzNd KSk7DQo+Pj4gKw0KPj4+ICsJCWRldmxpbmtfaW5mb192ZXJzaW9uX3J1bm5pbmdfcHV0KHJlcSwN Cj4+PiArCQkJCQkJIEVGWF9ERVZMSU5LX0lORk9fVkVSU0lPTl9TT0NfTUFJTiwNCj4+PiArCQkJ CQkJIGJ1Zik7DQo+Pj4gKwl9DQo+Pj4gKw0KPj4+ICsJaWYgKGZsYWdzICYgQklUKEVGWF9WRVJf RkxBRyhTT0NfUkVDT1ZFUllfQlVJTERST09UX1ZFUlNJT04pKSkgew0KPj4+ICsJCXZlci5kd29y ZHMgPSAoX19sZTMyICopTUNESV9QVFIob3V0YnVmLA0KPj4+ICsJCQkJCQlHRVRfVkVSU0lPTl9W NF9PVVRfU09DX1JFQ09WRVJZX0JVSUxEUk9PVF9WRVJTSU9OKTsNCj4+PiArDQo+Pj4gKwkJc25w cmludGYoYnVmLCBFRlhfTUFYX1ZFUlNJT05fSU5GT19MRU4sICIldS4ldS4ldS4ldSIsDQo+Pj4g KwkJCSBsZTMyX3RvX2NwdSh2ZXIuZHdvcmRzWzBdKSwgbGUzMl90b19jcHUodmVyLmR3b3Jkc1sx XSksDQo+Pj4gKwkJCSBsZTMyX3RvX2NwdSh2ZXIuZHdvcmRzWzJdKSwNCj4+PiArCQkJIGxlMzJf dG9fY3B1KHZlci5kd29yZHNbM10pKTsNCj4+PiArDQo+Pj4gKwkJZGV2bGlua19pbmZvX3ZlcnNp b25fcnVubmluZ19wdXQocmVxLA0KPj4+ICsJCQkJCQkgRUZYX0RFVkxJTktfSU5GT19WRVJTSU9O X1NPQ19SRUNPVkVSWSwNCj4+PiArCQkJCQkJIGJ1Zik7DQo+Pj4gKwl9DQo+Pj4gKw0KPj4+ICsJ aWYgKGZsYWdzICYgQklUKEVGWF9WRVJfRkxBRyhTVUNGV19WRVJTSU9OKSkgJiYNCj4+PiArCSAg ICB+ZmxhZ3MgJiBCSVQoRUZYX1ZFUl9GTEFHKFNVQ0ZXX0VYVF9JTkZPKSkpIHsNCj4+PiArCQl2 ZXIuZHdvcmRzID0gKF9fbGUzMiAqKU1DRElfUFRSKG91dGJ1ZiwNCj4+PiArCQkJCQkJR0VUX1ZF UlNJT05fVjRfT1VUX1NVQ0ZXX1ZFUlNJT04pOw0KPj4+ICsNCj4+PiArCQlzbnByaW50ZihidWYs IEVGWF9NQVhfVkVSU0lPTl9JTkZPX0xFTiwgIiV1LiV1LiV1LiV1IiwNCj4+PiArCQkJIGxlMzJf dG9fY3B1KHZlci5kd29yZHNbMF0pLCBsZTMyX3RvX2NwdSh2ZXIuZHdvcmRzWzFdKSwNCj4+PiAr CQkJIGxlMzJfdG9fY3B1KHZlci5kd29yZHNbMl0pLA0KPj4+ICsJCQkgbGUzMl90b19jcHUodmVy LmR3b3Jkc1szXSkpOw0KPj4+ICsNCj4+PiArCQlkZXZsaW5rX2luZm9fdmVyc2lvbl9ydW5uaW5n X3B1dChyZXEsDQo+Pj4gKwkJCQkJCSBFRlhfREVWTElOS19JTkZPX1ZFUlNJT05fRldfTUdNVF9T VUMsDQo+Pj4gKwkJCQkJCSBidWYpOw0KPj4+ICsJfQ0KPj4+ICsNCj4+PiArCWlmIChvdXRsZW5n dGggPCBNQ19DTURfR0VUX1ZFUlNJT05fVjVfT1VUX0xFTikNCj4+PiArCQlyZXR1cm47DQo+Pj4g Kw0KPj4+ICsJLyogSGFuZGxlIFY1IGFkZGl0aW9ucyAqLw0KPj4+ICsNCj4+PiArCWlmIChmbGFn cyAmIEJJVChFRlhfVkVSX0ZMQUcoQk9BUkRfVkVSU0lPTikpKSB7DQo+Pj4gKwkJdmVyLmR3b3Jk cyA9IChfX2xlMzIgKilNQ0RJX1BUUihvdXRidWYsDQo+Pj4gKwkJCQkJCUdFVF9WRVJTSU9OX1Y1 X09VVF9CT0FSRF9WRVJTSU9OKTsNCj4+PiArDQo+Pj4gKwkJc25wcmludGYoYnVmLCBFRlhfTUFY X1ZFUlNJT05fSU5GT19MRU4sICIldS4ldS4ldS4ldSIsDQo+Pj4gKwkJCSBsZTMyX3RvX2NwdSh2 ZXIuZHdvcmRzWzBdKSwgbGUzMl90b19jcHUodmVyLmR3b3Jkc1sxXSksDQo+Pj4gKwkJCSBsZTMy X3RvX2NwdSh2ZXIuZHdvcmRzWzJdKSwNCj4+PiArCQkJIGxlMzJfdG9fY3B1KHZlci5kd29yZHNb M10pKTsNCj4+PiArDQo+Pj4gKwkJZGV2bGlua19pbmZvX3ZlcnNpb25fcnVubmluZ19wdXQocmVx LA0KPj4+ICsJCQkJCQkgREVWTElOS19JTkZPX1ZFUlNJT05fR0VORVJJQ19CT0FSRF9SRVYsDQo+ Pj4gKwkJCQkJCSBidWYpOw0KPj4+ICsJfQ0KPj4+ICsNCj4+PiArCWlmIChmbGFncyAmIEJJVChF RlhfVkVSX0ZMQUcoQlVORExFX1ZFUlNJT04pKSkgew0KPj4+ICsJCXZlci5kd29yZHMgPSAoX19s ZTMyICopTUNESV9QVFIob3V0YnVmLA0KPj4+ICsJCQkJCQlHRVRfVkVSU0lPTl9WNV9PVVRfQlVO RExFX1ZFUlNJT04pOw0KPj4+ICsNCj4+PiArCQlzbnByaW50ZihidWYsIEVGWF9NQVhfVkVSU0lP Tl9JTkZPX0xFTiwgIiV1LiV1LiV1LiV1IiwNCj4+PiArCQkJIGxlMzJfdG9fY3B1KHZlci5kd29y ZHNbMF0pLCBsZTMyX3RvX2NwdSh2ZXIuZHdvcmRzWzFdKSwNCj4+PiArCQkJIGxlMzJfdG9fY3B1 KHZlci5kd29yZHNbMl0pLA0KPj4+ICsJCQkgbGUzMl90b19jcHUodmVyLmR3b3Jkc1szXSkpOw0K Pj4+ICsNCj4+PiArCQlkZXZsaW5rX2luZm9fdmVyc2lvbl9ydW5uaW5nX3B1dChyZXEsDQo+Pj4g KwkJCQkJCSBERVZMSU5LX0lORk9fVkVSU0lPTl9HRU5FUklDX0ZXX0JVTkRMRV9JRCwNCj4+PiAr CQkJCQkJIGJ1Zik7DQo+Pj4gKwl9DQo+Pj4gK30NCj4+PiArDQo+Pj4gKyN1bmRlZiBFRlhfVkVS X0ZMQUcNCj4+PiArDQo+Pj4gK3N0YXRpYyB2b2lkIGVmeF9kZXZsaW5rX2luZm9fcXVlcnlfYWxs KHN0cnVjdCBlZnhfbmljICplZngsDQo+Pj4gKwkJCQkgICAgICAgc3RydWN0IGRldmxpbmtfaW5m b19yZXEgKnJlcSkNCj4+PiArew0KPj4+ICsJZWZ4X2RldmxpbmtfaW5mb19ib2FyZF9jZmcoZWZ4 LCByZXEpOw0KPj4+ICsJZWZ4X2RldmxpbmtfaW5mb19zdG9yZWRfdmVyc2lvbnMoZWZ4LCByZXEp Ow0KPj4+ICsJZWZ4X2RldmxpbmtfaW5mb19ydW5uaW5nX3ZlcnNpb25zKGVmeCwgcmVxKTsNCj4+ PiArfQ0KPj4+ICsNCj4+PiArc3RydWN0IGVmeF9kZXZsaW5rIHsNCj4+PiArCXN0cnVjdCBlZnhf bmljICplZng7DQo+Pj4gK307DQo+Pj4gKw0KPj4+ICtzdGF0aWMgaW50IGVmeF9kZXZsaW5rX2lu Zm9fZ2V0KHN0cnVjdCBkZXZsaW5rICpkZXZsaW5rLA0KPj4+ICsJCQkJc3RydWN0IGRldmxpbmtf aW5mb19yZXEgKnJlcSwNCj4+PiArCQkJCXN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaykN Cj4+PiArew0KPj4+ICsJc3RydWN0IGVmeF9kZXZsaW5rICpkZXZsaW5rX3ByaXZhdGUgPSBkZXZs aW5rX3ByaXYoZGV2bGluayk7DQo+Pj4gKwlzdHJ1Y3QgZWZ4X25pYyAqZWZ4ID0gZGV2bGlua19w cml2YXRlLT5lZng7DQo+Pj4gKw0KPj4+ICsJZWZ4X2RldmxpbmtfaW5mb19xdWVyeV9hbGwoZWZ4 LCByZXEpOw0KPj4gSSBkb24ndCB1bmRlcnN0YW5kIHRoZSByZWFzb24gZm9yIGhhdmluZyBlZnhf ZGV2bGlua19pbmZvX3F1ZXJ5X2FsbCgpIGFzDQo+PiBhIHNlcGFyYXRlIGZ1bmN0aW9uIGluIGNv bXBhcmUgdG8gaW5saW5lIGl0cyBjb2RlIGhlcmUuDQo+Pg0KPiBZZXMsIGl0IGNvdWxkIGJlIGRv IGFzIHlvdSBzYXkuIEknbGwgZG8uDQo+DQo+IFRoYW5rcw0KPg0KPj4+ICsJcmV0dXJuIDA7DQo+ Pj4gK30NCj4+PiArDQo+Pj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2bGlua19vcHMgc2ZjX2Rl dmxpbmtfb3BzID0gew0KPj4+ICsJLmluZm9fZ2V0CQkJPSBlZnhfZGV2bGlua19pbmZvX2dldCwN Cj4+PiArfTsNCj4+PiArDQo+Pj4gK3ZvaWQgZWZ4X2ZpbmlfZGV2bGluayhzdHJ1Y3QgZWZ4X25p YyAqZWZ4KQ0KPj4+ICt7DQo+Pj4gKwlpZiAoZWZ4LT5kZXZsaW5rKSB7DQo+Pj4gKwkJc3RydWN0 IGVmeF9kZXZsaW5rICpkZXZsaW5rX3ByaXZhdGU7DQo+Pj4gKw0KPj4+ICsJCWRldmxpbmtfcHJp dmF0ZSA9IGRldmxpbmtfcHJpdihlZngtPmRldmxpbmspOw0KPj4+ICsNCj4+PiArCQlkZXZsaW5r X3VucmVnaXN0ZXIoZWZ4LT5kZXZsaW5rKTsNCj4+PiArCQlkZXZsaW5rX2ZyZWUoZWZ4LT5kZXZs aW5rKTsNCj4+PiArCQllZngtPmRldmxpbmsgPSBOVUxMOw0KPj4+ICsJfQ0KPj4+ICt9DQo+Pj4g Kw0KPj4+ICtpbnQgZWZ4X3Byb2JlX2Rldmxpbmsoc3RydWN0IGVmeF9uaWMgKmVmeCkNCj4+PiAr ew0KPj4+ICsJc3RydWN0IGVmeF9kZXZsaW5rICpkZXZsaW5rX3ByaXZhdGU7DQo+Pj4gKw0KPj4+ ICsJZWZ4LT5kZXZsaW5rID0gZGV2bGlua19hbGxvYygmc2ZjX2Rldmxpbmtfb3BzLA0KPj4+ICsJ CQkJICAgICBzaXplb2Yoc3RydWN0IGVmeF9kZXZsaW5rKSwNCj4+PiArCQkJCSAgICAgJmVmeC0+ cGNpX2Rldi0+ZGV2KTsNCj4+PiArCWlmICghZWZ4LT5kZXZsaW5rKQ0KPj4+ICsJCXJldHVybiAt RU5PTUVNOw0KPj4+ICsJZGV2bGlua19wcml2YXRlID0gZGV2bGlua19wcml2KGVmeC0+ZGV2bGlu ayk7DQo+Pj4gKwlkZXZsaW5rX3ByaXZhdGUtPmVmeCA9IGVmeDsNCj4+PiArDQo+Pj4gKwlkZXZs aW5rX3JlZ2lzdGVyKGVmeC0+ZGV2bGluayk7DQo+Pj4gKw0KPj4+ICsJcmV0dXJuIDA7DQo+Pj4g K30NCj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL2VmeF9kZXZsaW5r LmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWZ4X2RldmxpbmsuaA0KPj4+IG5ldyBmaWxl IG1vZGUgMTAwNjQ0DQo+Pj4gaW5kZXggMDAwMDAwMDAwMDAwLi45OTdmODc4YWVhOTMNCj4+PiAt LS0gL2Rldi9udWxsDQo+Pj4gKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL2VmeF9kZXZs aW5rLmgNCj4+PiBAQCAtMCwwICsxLDIwIEBADQo+Pj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyOiBHUEwtMi4wLW9ubHkgKi8NCj4+PiArLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCj4+PiArICog RHJpdmVyIGZvciBBTUQgbmV0d29yayBjb250cm9sbGVycyBhbmQgYm9hcmRzDQo+Pj4gKyAqIENv cHlyaWdodCAoQykgMjAyMywgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLg0KPj4+ICsgKg0K Pj4+ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeSBpdA0KPj4+ICsgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcyBwdWJsaXNoZWQNCj4+PiArICog YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgaW5jb3Jwb3JhdGVkIGhlcmVpbiBieSBy ZWZlcmVuY2UuDQo+Pj4gKyAqLw0KPj4+ICsNCj4+PiArI2lmbmRlZiBfRUZYX0RFVkxJTktfSA0K Pj4+ICsjZGVmaW5lIF9FRlhfREVWTElOS19IDQo+Pj4gKw0KPj4+ICsjaW5jbHVkZSAibmV0X2Ry aXZlci5oIg0KPj4+ICsjaW5jbHVkZSA8bmV0L2RldmxpbmsuaD4NCj4+PiArDQo+Pj4gK2ludCBl ZnhfcHJvYmVfZGV2bGluayhzdHJ1Y3QgZWZ4X25pYyAqZWZ4KTsNCj4+PiArdm9pZCBlZnhfZmlu aV9kZXZsaW5rKHN0cnVjdCBlZnhfbmljICplZngpOw0KPj4+ICsNCj4+PiArI2VuZGlmCS8qIF9F RlhfREVWTElOS19IICovDQo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Nm Yy9tY2RpLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvbWNkaS5jDQo+Pj4gaW5kZXggYWYz MzgyMDhlYWU5Li4zMjhjYWU4MmE3ZDggMTAwNjQ0DQo+Pj4gLS0tIGEvZHJpdmVycy9uZXQvZXRo ZXJuZXQvc2ZjL21jZGkuYw0KPj4+ICsrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9tY2Rp LmMNCj4+PiBAQCAtMjMwOCw2ICsyMzA4LDc4IEBAIHN0YXRpYyBpbnQgZWZ4X21jZGlfbnZyYW1f dXBkYXRlX2ZpbmlzaChzdHJ1Y3QgZWZ4X25pYyAqZWZ4LCB1bnNpZ25lZCBpbnQgdHlwZSkNCj4+ PiAJcmV0dXJuIHJjOw0KPj4+IH0NCj4+Pg0KPj4+ICtpbnQgZWZ4X21jZGlfbnZyYW1fbWV0YWRh dGEoc3RydWN0IGVmeF9uaWMgKmVmeCwgdW5zaWduZWQgaW50IHR5cGUsDQo+Pj4gKwkJCSAgICB1 MzIgKnN1YnR5cGUsIHUxNiB2ZXJzaW9uWzRdLCBjaGFyICpkZXNjLA0KPj4+ICsJCQkgICAgc2l6 ZV90IGRlc2NzaXplKQ0KPj4+ICt7DQo+Pj4gKwlNQ0RJX0RFQ0xBUkVfQlVGKGluYnVmLCBNQ19D TURfTlZSQU1fTUVUQURBVEFfSU5fTEVOKTsNCj4+PiArCWVmeF9kd29yZF90ICpvdXRidWY7DQo+ Pj4gKwlzaXplX3Qgb3V0bGVuOw0KPj4+ICsJdTMyIGZsYWdzOw0KPj4+ICsJaW50IHJjOw0KPj4+ ICsNCj4+PiArCW91dGJ1ZiA9IGt6YWxsb2MoTUNfQ01EX05WUkFNX01FVEFEQVRBX09VVF9MRU5N QVhfTUNESTIsIEdGUF9LRVJORUwpOw0KPj4+ICsJaWYgKCFvdXRidWYpDQo+Pj4gKwkJcmV0dXJu IC1FTk9NRU07DQo+Pj4gKw0KPj4+ICsJTUNESV9TRVRfRFdPUkQoaW5idWYsIE5WUkFNX01FVEFE QVRBX0lOX1RZUEUsIHR5cGUpOw0KPj4+ICsNCj4+PiArCXJjID0gZWZ4X21jZGlfcnBjX3F1aWV0 KGVmeCwgTUNfQ01EX05WUkFNX01FVEFEQVRBLCBpbmJ1ZiwNCj4+PiArCQkJCXNpemVvZihpbmJ1 ZiksIG91dGJ1ZiwNCj4+PiArCQkJCU1DX0NNRF9OVlJBTV9NRVRBREFUQV9PVVRfTEVOTUFYX01D REkyLA0KPj4+ICsJCQkJJm91dGxlbik7DQo+Pj4gKwlpZiAocmMpDQo+Pj4gKwkJZ290byBvdXRf ZnJlZTsNCj4+PiArCWlmIChvdXRsZW4gPCBNQ19DTURfTlZSQU1fTUVUQURBVEFfT1VUX0xFTk1J Tikgew0KPj4+ICsJCXJjID0gLUVJTzsNCj4+PiArCQlnb3RvIG91dF9mcmVlOw0KPj4+ICsJfQ0K Pj4+ICsNCj4+PiArCWZsYWdzID0gTUNESV9EV09SRChvdXRidWYsIE5WUkFNX01FVEFEQVRBX09V VF9GTEFHUyk7DQo+Pj4gKw0KPj4+ICsJaWYgKGRlc2MgJiYgZGVzY3NpemUgPiAwKSB7DQo+Pj4g KwkJaWYgKGZsYWdzICYgQklUKE1DX0NNRF9OVlJBTV9NRVRBREFUQV9PVVRfREVTQ1JJUFRJT05f VkFMSURfTEJOKSkgew0KPj4+ICsJCQlpZiAoZGVzY3NpemUgPD0NCj4+PiArCQkJICAgIE1DX0NN RF9OVlJBTV9NRVRBREFUQV9PVVRfREVTQ1JJUFRJT05fTlVNKG91dGxlbikpIHsNCj4+PiArCQkJ CXJjID0gLUUyQklHOw0KPj4+ICsJCQkJZ290byBvdXRfZnJlZTsNCj4+PiArCQkJfQ0KPj4+ICsN Cj4+PiArCQkJc3RybmNweShkZXNjLA0KPj4+ICsJCQkJTUNESV9QVFIob3V0YnVmLCBOVlJBTV9N RVRBREFUQV9PVVRfREVTQ1JJUFRJT04pLA0KPj4+ICsJCQkJTUNfQ01EX05WUkFNX01FVEFEQVRB X09VVF9ERVNDUklQVElPTl9OVU0ob3V0bGVuKSk7DQo+Pj4gKwkJCWRlc2NbTUNfQ01EX05WUkFN X01FVEFEQVRBX09VVF9ERVNDUklQVElPTl9OVU0ob3V0bGVuKV0gPSAnXDAnOw0KPj4+ICsJCX0g ZWxzZSB7DQo+Pj4gKwkJCWRlc2NbMF0gPSAnXDAnOw0KPj4+ICsJCX0NCj4+PiArCX0NCj4+PiAr DQo+Pj4gKwlpZiAoc3VidHlwZSkgew0KPj4+ICsJCWlmIChmbGFncyAmIEJJVChNQ19DTURfTlZS QU1fTUVUQURBVEFfT1VUX1NVQlRZUEVfVkFMSURfTEJOKSkNCj4+PiArCQkJKnN1YnR5cGUgPSBN Q0RJX0RXT1JEKG91dGJ1ZiwgTlZSQU1fTUVUQURBVEFfT1VUX1NVQlRZUEUpOw0KPj4+ICsJCWVs c2UNCj4+PiArCQkJKnN1YnR5cGUgPSAwOw0KPj4+ICsJfQ0KPj4+ICsNCj4+PiArCWlmICh2ZXJz aW9uKSB7DQo+Pj4gKwkJaWYgKGZsYWdzICYgQklUKE1DX0NNRF9OVlJBTV9NRVRBREFUQV9PVVRf VkVSU0lPTl9WQUxJRF9MQk4pKSB7DQo+Pj4gKwkJCXZlcnNpb25bMF0gPSBNQ0RJX1dPUkQob3V0 YnVmLCBOVlJBTV9NRVRBREFUQV9PVVRfVkVSU0lPTl9XKTsNCj4+PiArCQkJdmVyc2lvblsxXSA9 IE1DRElfV09SRChvdXRidWYsIE5WUkFNX01FVEFEQVRBX09VVF9WRVJTSU9OX1gpOw0KPj4+ICsJ CQl2ZXJzaW9uWzJdID0gTUNESV9XT1JEKG91dGJ1ZiwgTlZSQU1fTUVUQURBVEFfT1VUX1ZFUlNJ T05fWSk7DQo+Pj4gKwkJCXZlcnNpb25bM10gPSBNQ0RJX1dPUkQob3V0YnVmLCBOVlJBTV9NRVRB REFUQV9PVVRfVkVSU0lPTl9aKTsNCj4+PiArCQl9IGVsc2Ugew0KPj4+ICsJCQl2ZXJzaW9uWzBd ID0gMDsNCj4+PiArCQkJdmVyc2lvblsxXSA9IDA7DQo+Pj4gKwkJCXZlcnNpb25bMl0gPSAwOw0K Pj4+ICsJCQl2ZXJzaW9uWzNdID0gMDsNCj4+PiArCQl9DQo+Pj4gKwl9DQo+Pj4gKw0KPj4+ICtv dXRfZnJlZToNCj4+PiArCWtmcmVlKG91dGJ1Zik7DQo+Pj4gKwlyZXR1cm4gcmM7DQo+Pj4gK30N Cj4+PiArDQo+Pj4gaW50IGVmeF9tY2RpX210ZF9yZWFkKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBs b2ZmX3Qgc3RhcnQsDQo+Pj4gCQkgICAgICBzaXplX3QgbGVuLCBzaXplX3QgKnJldGxlbiwgdTgg KmJ1ZmZlcikNCj4+PiB7DQo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Nm Yy9tY2RpLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvbWNkaS5oDQo+Pj4gaW5kZXggN2Uz NWZlYzlkYTM1Li42M2IwOTA1ODdmN2EgMTAwNjQ0DQo+Pj4gLS0tIGEvZHJpdmVycy9uZXQvZXRo ZXJuZXQvc2ZjL21jZGkuaA0KPj4+ICsrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9tY2Rp LmgNCj4+PiBAQCAtMzc5LDYgKzM3OSw5IEBAIGludCBlZnhfbWNkaV9udnJhbV9pbmZvKHN0cnVj dCBlZnhfbmljICplZngsIHVuc2lnbmVkIGludCB0eXBlLA0KPj4+IAkJCWJvb2wgKnByb3RlY3Rl ZF9vdXQpOw0KPj4+IGludCBlZnhfbmV3X21jZGlfbnZyYW1fdGVzdF9hbGwoc3RydWN0IGVmeF9u aWMgKmVmeCk7DQo+Pj4gaW50IGVmeF9tY2RpX252cmFtX3Rlc3RfYWxsKHN0cnVjdCBlZnhfbmlj ICplZngpOw0KPj4+ICtpbnQgZWZ4X21jZGlfbnZyYW1fbWV0YWRhdGEoc3RydWN0IGVmeF9uaWMg KmVmeCwgdW5zaWduZWQgaW50IHR5cGUsDQo+Pj4gKwkJCSAgICB1MzIgKnN1YnR5cGUsIHUxNiB2 ZXJzaW9uWzRdLCBjaGFyICpkZXNjLA0KPj4+ICsJCQkgICAgc2l6ZV90IGRlc2NzaXplKTsNCj4+ PiBpbnQgZWZ4X21jZGlfaGFuZGxlX2Fzc2VydGlvbihzdHJ1Y3QgZWZ4X25pYyAqZWZ4KTsNCj4+ PiBpbnQgZWZ4X21jZGlfc2V0X2lkX2xlZChzdHJ1Y3QgZWZ4X25pYyAqZWZ4LCBlbnVtIGVmeF9s ZWRfbW9kZSBtb2RlKTsNCj4+PiBpbnQgZWZ4X21jZGlfd29sX2ZpbHRlcl9zZXRfbWFnaWMoc3Ry dWN0IGVmeF9uaWMgKmVmeCwgY29uc3QgdTggKm1hYywNCj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9uZXQvZXRoZXJuZXQvc2ZjL25ldF9kcml2ZXIuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Nm Yy9uZXRfZHJpdmVyLmgNCj4+PiBpbmRleCAzYjQ5ZTIxNjc2OGIuLmQwMzY2NDFkYzA0MyAxMDA2 NDQNCj4+PiAtLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvbmV0X2RyaXZlci5oDQo+Pj4g KysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL25ldF9kcml2ZXIuaA0KPj4+IEBAIC05OTQs NiArOTk0LDcgQEAgZW51bSBlZnhfeGRwX3R4X3F1ZXVlc19tb2RlIHsNCj4+PiAgICAqICAgICAg eGRwX3J4cV9pbmZvIHN0cnVjdHVyZXM/DQo+Pj4gICAgKiBAbmV0ZGV2X25vdGlmaWVyOiBOZXRk ZXZpY2Ugbm90aWZpZXIuDQo+Pj4gICAgKiBAdGM6IHN0YXRlIGZvciBUQyBvZmZsb2FkIChFRjEw MCkuDQo+Pj4gKyAqIEBkZXZsaW5rOiByZWZlcmVuY2UgdG8gZGV2bGluayBzdHJ1Y3R1cmUgb3du ZWQgYnkgdGhpcyBkZXZpY2UNCj4+PiAgICAqIEBtZW1fYmFyOiBUaGUgQkFSIHRoYXQgaXMgbWFw cGVkIGludG8gbWVtYmFzZS4NCj4+PiAgICAqIEByZWdfYmFzZTogT2Zmc2V0IGZyb20gdGhlIHN0 YXJ0IG9mIHRoZSBiYXIgdG8gdGhlIGZ1bmN0aW9uIGNvbnRyb2wgd2luZG93Lg0KPj4+ICAgICog QG1vbml0b3Jfd29yazogSGFyZHdhcmUgbW9uaXRvciB3b3JraXRlbQ0KPj4+IEBAIC0xMTc5LDYg KzExODAsNyBAQCBzdHJ1Y3QgZWZ4X25pYyB7DQo+Pj4gCXN0cnVjdCBub3RpZmllcl9ibG9jayBu ZXRkZXZfbm90aWZpZXI7DQo+Pj4gCXN0cnVjdCBlZnhfdGNfc3RhdGUgKnRjOw0KPj4+DQo+Pj4g KwlzdHJ1Y3QgZGV2bGluayAqZGV2bGluazsNCj4+PiAJdW5zaWduZWQgaW50IG1lbV9iYXI7DQo+ Pj4gCXUzMiByZWdfYmFzZTsNCj4+Pg0KPj4+IC0tIA0KPj4+IDIuMTcuMQ0KPj4+DQoNCg==