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 X-Spam-Level: X-Spam-Status: No, score=-7.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B16E7C04EB8 for ; Sun, 2 Dec 2018 20:34:41 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 22B5A20881 for ; Sun, 2 Dec 2018 20:34:41 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=cadence.com header.i=@cadence.com header.b="KBv5U18T"; dkim=pass (1024-bit key) header.d=cadence.com header.i=@cadence.com header.b="qAf6yKt5" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 22B5A20881 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=cadence.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1725806AbeLBUel (ORCPT ); Sun, 2 Dec 2018 15:34:41 -0500 Received: from mx0b-0014ca01.pphosted.com ([208.86.201.193]:39948 "EHLO mx0a-0014ca01.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1725773AbeLBUek (ORCPT ); Sun, 2 Dec 2018 15:34:40 -0500 Received: from pps.filterd (m0042333.ppops.net [127.0.0.1]) by mx0b-0014ca01.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id wB2KY7Mx012200; Sun, 2 Dec 2018 12:34:22 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cadence.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=proofpoint; bh=PeNFJlkzAYQhJMC3anmhTS0JaRpCr8MYtFn2AZ/7Zro=; b=KBv5U18TirPVhfojhIFAl6W9e8x1zZxWD/TPZR1j8aohdRL5Zy5EdkLBrLu0kHm7PrKQ /exA3bW9nnjwkX16lgU0L8wQR0Yd4wZN5xXM4u/JQVQlDg1v6LO7Vtgf9YhZYYAxed/j emS3Ml3IA59/56JcYuUDOc+h/WsxQrQpKD2RUQ2HCLtoE1KfhTkA343+Xk9YDXkdCMA4 nUDlS5LArnzqwxk0UbJPtKPdBf/EeLxs16Q9bZfi7b3Ak9qeH5cDAH4UhfJeSK1gjWLs Kr6u+jih5tK/MSB1L7+j9KdA2cF5XhOV9NvPbOFWKYLnzuXgQK7utgHcbr9o66/yuT89 eQ== Authentication-Results: cadence.com; spf=pass smtp.mailfrom=pawell@cadence.com Received: from nam03-dm3-obe.outbound.protection.outlook.com (mail-dm3nam03lp2053.outbound.protection.outlook.com [104.47.41.53]) by mx0b-0014ca01.pphosted.com with ESMTP id 2p3ps2f72r-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Sun, 02 Dec 2018 12:34:21 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cadence.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=PeNFJlkzAYQhJMC3anmhTS0JaRpCr8MYtFn2AZ/7Zro=; b=qAf6yKt5P250PVkG3XMtDLlGoZRwm2+uDE+rqOhW7im3E8qk2pCEh/fqnHoBmaxm6zkcpt+EzfGpJ9NWFzhSDPFtZxAMF8XH2i4vk0hou1Yx3LdXg08fRGtIUQhNsDHyyko8oQDjDsr6VijKcYNTaApr64RllUzjGcj6ZCgABaE= Received: from BYAPR07MB4709.namprd07.prod.outlook.com (52.135.204.159) by BYAPR07MB5206.namprd07.prod.outlook.com (20.176.254.223) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1382.22; Sun, 2 Dec 2018 20:34:18 +0000 Received: from BYAPR07MB4709.namprd07.prod.outlook.com ([fe80::e0dc:ebd5:e248:d644]) by BYAPR07MB4709.namprd07.prod.outlook.com ([fe80::e0dc:ebd5:e248:d644%6]) with mapi id 15.20.1382.020; Sun, 2 Dec 2018 20:34:17 +0000 From: Pawel Laszczak To: Peter Chen CC: "devicetree@vger.kernel.org" , Greg Kroah-Hartman , "linux-usb@vger.kernel.org" , "rogerq@ti.com" , lkml , Alan Douglas , "jbergsagel@ti.com" , "nsekhar@ti.com" , "nm@ti.com" , Suresh Punnoose , "peter.chen@nxp.com" , Pawel Jez , Rahul Kumar Subject: RE: [RFC PATCH v2 04/15] usb:cdns3: Driver initialization code. Thread-Topic: [RFC PATCH v2 04/15] usb:cdns3: Driver initialization code. Thread-Index: AQHUfycKfg2nmnNwYkGzkCY+37gGkqVn/0mAgAP0wLA= Date: Sun, 2 Dec 2018 20:34:17 +0000 Message-ID: References: <1542535751-16079-1-git-send-email-pawell@cadence.com> <1542535751-16079-5-git-send-email-pawell@cadence.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-dg-tag-bcast: x-dg-ref: PG1ldGE+PGF0IG5tPSJib2R5LnR4dCIgcD0iYzpcdXNlcnNccGF3ZWxsXGFwcGRhdGFccm9hbWluZ1wwOWQ4NDliNi0zMmQzLTRhNDAtODVlZS02Yjg0YmEyOWUzNWJcbXNnc1xtc2ctYTI5NjdhZWYtZjY3MS0xMWU4LTg3MjYtMWM0ZDcwMWRmYmE0XGFtZS10ZXN0XGEyOTY3YWYwLWY2NzEtMTFlOC04NzI2LTFjNGQ3MDFkZmJhNGJvZHkudHh0IiBzej0iMjA2MjIiIHQ9IjEzMTg4MjU2NDU2NTY4NzYxMSIgaD0iYjZQQVJteDRPZUFySnBDSUlqaTRBRUpibmlrPSIgaWQ9IiIgYmw9IjAiIGJvPSIxIi8+PC9tZXRhPg== x-dg-paste: x-dg-rorf: x-originating-ip: [185.217.253.59] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;BYAPR07MB5206;20:R97StS1M2HcGiyAwJ6rJ0b/aFUl3JsVLs4pZIFm6ukV8r1lJhSJAY/aTbsQAHf4yrSPegxv8AHdXyiellm0oI3YRTtv1R/VRbUZr4u8F23XaF/03/eeFHPYz5V14vEDfKtqvRUwEJs8tUPFzlYxo+xlqm1CYiGGFnpQyhBX794YMSs7ioaI/eONg6INNtOuhufgTL7BKqCEKF9qx4uIIAOR6u7adWVWIfzOkzJz0DOBb5OdM+42DylLiz2yWKtCY x-ms-exchange-antispam-srfa-diagnostics: SOS;SOR; x-forefront-antispam-report: SFV:SKI;SCL:-1;SFV:NSPM;SFS:(10009020)(136003)(376002)(366004)(346002)(39850400004)(396003)(36092001)(199004)(189003)(8676002)(102836004)(54906003)(6436002)(9686003)(99286004)(6246003)(53946003)(33656002)(7696005)(107886003)(1411001)(55016002)(53936002)(316002)(106356001)(105586002)(71190400001)(71200400001)(97736004)(68736007)(26005)(6916009)(76176011)(81156014)(4744004)(229853002)(11346002)(486006)(5660300001)(4326008)(14454004)(7416002)(81166006)(86362001)(478600001)(217873002)(476003)(256004)(14444005)(186003)(446003)(305945005)(7736002)(2906002)(6506007)(6116002)(74316002)(39060400002)(3846002)(66066001)(8936002)(25786009)(579004);DIR:OUT;SFP:1101;SCL:1;SRVR:BYAPR07MB5206;H:BYAPR07MB4709.namprd07.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; x-ms-office365-filtering-correlation-id: 04b17b26-11ed-4d49-639d-08d6589587d7 x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390098)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(2017052603328)(7153060)(7193020);SRVR:BYAPR07MB5206; x-ms-traffictypediagnostic: BYAPR07MB5206: x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(3002001)(93006095)(93001095)(3231455)(999002)(944501492)(52105112)(148016)(149066)(150057)(6041310)(20161123560045)(20161123562045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(201708071742011)(7699051)(76991095);SRVR:BYAPR07MB5206;BCL:0;PCL:0;RULEID:;SRVR:BYAPR07MB5206; x-forefront-prvs: 087474FBFA received-spf: None (protection.outlook.com: cadence.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: SpG8ywt7JU7a75grCSrRWSf5fnyoPurTAb0WcYVNfxQKlLDOZLfmxVgwU9Qjs5C56MnwR6QLjJU9apE4LH7khNmEd1cGLcO1UTdMH5C6D312v3xLlebNfBkPtuXQWZ1Bl0cyX24V5+7P3WWfkl+ZNKV18g+1EB4BCZYTBclsmCQ+4FSxzQVL/nIw5g1UrYQHfYVWTnaFF4arUd7ya5Om+oyRHZE/Gptiopy9SLjWPZW/H3eX+RYk2PrM182xX0cBKbUEw4BOqIT72Ot0Hsi6h+uZttGZ7HU6PQgwGtsC5vicvjaPKj/nsXBtoics1B/Iul0s0978tXJ1kN36pWO959YA6ibB3uivk35i2fb91N0= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: cadence.com X-MS-Exchange-CrossTenant-Network-Message-Id: 04b17b26-11ed-4d49-639d-08d6589587d7 X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Dec 2018 20:34:17.0974 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: d36035c5-6ce6-4662-a3dc-e762e61ae4c9 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR07MB5206 X-Proofpoint-SPF-Result: pass X-Proofpoint-SPF-Record: v=spf1 include:_spf.salesforce.com include:mktomail.com include:spf-0014ca01.pphosted.com include:spf.protection.outlook.com include:auth.msgapp.com include:spf.mandrillapp.com ~all X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2018-12-02_11:,, signatures=0 X-Proofpoint-Spam-Details: rule=outbound_check_notspam policy=outbound_check score=0 priorityscore=1501 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1810050000 definitions=main-1812020198 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Pj4NCj4+IFBhdGNoIGFkZHMgY29yZS5jIGFuZCBjb3JlLmggZmlsZSB0aGF0IGltcGxlbWVudHMg aW5pdGlhbGl6YXRpb24NCj4+IG9mIHBsYXRmb3JtIGRyaXZlciBhbmQgYWRkcyBmdW5jdGlvbiBy ZXNwb25zaWJsZSBmb3Igc2VsZWN0aW5nLA0KPj4gc3dpdGNoaW5nIGFuZCBydW5uaW5nIGFwcHJv cHJpYXRlIERldmljZS9Ib3N0IG1vZGUuDQo+Pg0KPj4gU2lnbmVkLW9mZi1ieTogUGF3ZWwgTGFz emN6YWsgPHBhd2VsbEBjYWRlbmNlLmNvbT4NCj4+IC0tLQ0KPj4gIGRyaXZlcnMvdXNiL2NkbnMz L01ha2VmaWxlIHwgICAyICsNCj4+ICBkcml2ZXJzL3VzYi9jZG5zMy9jb3JlLmMgICB8IDQxMyAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+PiAgZHJpdmVycy91c2IvY2Ru czMvY29yZS5oICAgfCAxMDAgKysrKysrKysrDQo+PiAgMyBmaWxlcyBjaGFuZ2VkLCA1MTUgaW5z ZXJ0aW9ucygrKQ0KPj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3VzYi9jZG5zMy9jb3Jl LmMNCj4+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy91c2IvY2RuczMvY29yZS5oDQo+Pg0K Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NkbnMzL01ha2VmaWxlIGIvZHJpdmVycy91c2Iv Y2RuczMvTWFrZWZpbGUNCj4+IGluZGV4IGRjZGQ2MjAwM2M2YS4uMDJkMjViMjNjNWQzIDEwMDY0 NA0KPj4gLS0tIGEvZHJpdmVycy91c2IvY2RuczMvTWFrZWZpbGUNCj4+ICsrKyBiL2RyaXZlcnMv dXNiL2NkbnMzL01ha2VmaWxlDQo+PiBAQCAtMSwzICsxLDUgQEANCj4+ICtvYmotJChDT05GSUdf VVNCX0NETlMzKSAgICAgICAgICAgICAgICAgICAgICAgICs9IGNkbnMzLm8NCj4+ICBvYmotJChD T05GSUdfVVNCX0NETlMzX1BDSV9XUkFQKSAgICAgICArPSBjZG5zMy1wY2kubw0KPj4NCj4+ICtj ZG5zMy15ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo9IGNvcmUubw0K Pj4gIGNkbnMzLXBjaS15ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo9IGNkbnMzLXBjaS13 cmFwLm8NCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jZG5zMy9jb3JlLmMgYi9kcml2ZXJz L3VzYi9jZG5zMy9jb3JlLmMNCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+PiBpbmRleCAwMDAw MDAwMDAwMDAuLmY5MDU1ZDRkYTY3Zg0KPj4gLS0tIC9kZXYvbnVsbA0KPj4gKysrIGIvZHJpdmVy cy91c2IvY2RuczMvY29yZS5jDQo+PiBAQCAtMCwwICsxLDQxMyBAQA0KPj4gKy8vIFNQRFgtTGlj ZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wDQo+PiArLyoNCj4+ICsgKiBDYWRlbmNlIFVTQlNTIERS RCBEcml2ZXIuDQo+PiArICoNCj4+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTggQ2FkZW5jZS4NCj4+ ICsgKg0KPg0KPlBsZWFzZSBhZGQgTlhQIGNvcHlyaWdodCB0b28uDQoNCk9rLCBJIGRvbid0IGtu b3cgd2h5IEkgb21pdHRlZCB0aGlzLiANCkkga25vdyB0aGF0IHlvdSBhcmUgdGhlIG1haW4gYXV0 aG9yIG9mIHRoaXMgZmlsZSANClNvcnJ5IGZvciB0aGF0Lg0KDQpPbmUgYWRkaXRpb25hbCBxdWVz dGlvbi4gV2hhdCB5ZWFyIEkgc2hvdWxkIGFkZCBpbiBDb3B5cmlnaHQgZm9yIE5YUD8uIA0KVGhl IG9yaWdpbmFsIHllYXIgMjAxNyBvciBJIHNob3VsZCBtb2RpZmllZCBhbGwgdG8gMjAxOC4gDQoN Cj4+ICsgKiBBdXRob3I6IFBldGVyIENoZW4gPHBldGVyLmNoZW5AbnhwLmNvbT4NCj4+ICsgKiAg ICAgICAgIFBhd2VsIExhc3pjemFrIDxwYXdlbGxAY2FkZW5jZS5jb20+DQo+PiArICovDQo+PiAr DQo+PiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPg0KPj4gKyNpbmNsdWRlIDxsaW51eC9rZXJu ZWwuaD4NCj4+ICsjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+DQo+PiArI2luY2x1 ZGUgPGxpbnV4L2ludGVycnVwdC5oPg0KPj4gKyNpbmNsdWRlIDxsaW51eC9pby5oPg0KPj4gKyNp bmNsdWRlIDxsaW51eC9wbV9ydW50aW1lLmg+DQo+PiArDQo+PiArI2luY2x1ZGUgImdhZGdldC5o Ig0KPj4gKyNpbmNsdWRlICJjb3JlLmgiDQo+PiArDQo+PiArc3RhdGljIGlubGluZSBzdHJ1Y3Qg Y2RuczNfcm9sZV9kcml2ZXIgKmNkbnMzX2dldF9jdXJyZW50X3JvbGVfZHJpdmVyKHN0cnVjdCBj ZG5zMyAqY2RucykNCj4+ICt7DQo+PiArICAgICAgIFdBUk5fT04oY2Rucy0+cm9sZSA+PSBDRE5T M19ST0xFX0VORCB8fCAhY2Rucy0+cm9sZXNbY2Rucy0+cm9sZV0pOw0KPj4gKyAgICAgICByZXR1 cm4gY2Rucy0+cm9sZXNbY2Rucy0+cm9sZV07DQo+PiArfQ0KPj4gKw0KPg0KPkNhbiB3ZSBkZWxl dGUgImN1cnJlbnQiLCBhbmQgdXNlIGNkbnMzX2dldF9yb2xlX2RyaXZlciBkaXJlY3RseT8NCg0K WWVzLCBzdXJlLiBSb2xlIGlzIGFsd2F5cyBjdXJyZW50Lg0KPj4gK3N0YXRpYyBpbmxpbmUgaW50 IGNkbnMzX3JvbGVfc3RhcnQoc3RydWN0IGNkbnMzICpjZG5zLCBlbnVtIGNkbnMzX3JvbGVzIHJv bGUpDQo+PiArew0KPj4gKyAgICAgICBpbnQgcmV0Ow0KPj4gKw0KPj4gKyAgICAgICBpZiAocm9s ZSA+PSBDRE5TM19ST0xFX0VORCkNCj4+ICsgICAgICAgICAgICAgICByZXR1cm4gMDsNCj4+ICsN Cj4+ICsgICAgICAgaWYgKCFjZG5zLT5yb2xlc1tyb2xlXSkNCj4+ICsgICAgICAgICAgICAgICBy ZXR1cm4gLUVOWElPOw0KPj4gKw0KPj4gKyAgICAgICBtdXRleF9sb2NrKCZjZG5zLT5tdXRleCk7 DQo+PiArICAgICAgIGNkbnMtPnJvbGUgPSByb2xlOw0KPj4gKyAgICAgICByZXQgPSBjZG5zLT5y b2xlc1tyb2xlXS0+c3RhcnQoY2Rucyk7DQo+PiArICAgICAgIG11dGV4X3VubG9jaygmY2Rucy0+ bXV0ZXgpOw0KPj4gKyAgICAgICByZXR1cm4gcmV0Ow0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMg aW5saW5lIHZvaWQgY2RuczNfcm9sZV9zdG9wKHN0cnVjdCBjZG5zMyAqY2RucykNCj4+ICt7DQo+ PiArICAgICAgIGVudW0gY2RuczNfcm9sZXMgcm9sZSA9IGNkbnMtPnJvbGU7DQo+PiArDQo+PiAr ICAgICAgIGlmIChyb2xlID09IENETlMzX1JPTEVfRU5EKQ0KPj4gKyAgICAgICAgICAgICAgIHJl dHVybjsNCj4+ICsNCj4+ICsgICAgICAgbXV0ZXhfbG9jaygmY2Rucy0+bXV0ZXgpOw0KPj4gKyAg ICAgICBjZG5zLT5yb2xlc1tyb2xlXS0+c3RvcChjZG5zKTsNCj4+ICsgICAgICAgY2Rucy0+cm9s ZSA9IENETlMzX1JPTEVfRU5EOw0KPj4gKyAgICAgICBtdXRleF91bmxvY2soJmNkbnMtPm11dGV4 KTsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGVudW0gY2RuczNfcm9sZXMgY2RuczNfZ2V0X3Jv bGUoc3RydWN0IGNkbnMzICpjZG5zKQ0KPj4gK3sNCj4+ICsgICAgICAgaWYgKGNkbnMtPnJvbGVz W0NETlMzX1JPTEVfSE9TVF0gJiYgY2Rucy0+cm9sZXNbQ0ROUzNfUk9MRV9HQURHRVRdKSB7DQo+ PiArICAgICAgICAgICAgICAgLy9UT0RPOiBpbXBsZW1lbnRzIHNlbGVjdGluZyBkZXZpY2UvaG9z dCBtb2RlDQo+PiArICAgICAgICAgICAgICAgcmV0dXJuIENETlMzX1JPTEVfSE9TVDsNCj4+ICsg ICAgICAgfQ0KPj4gKyAgICAgICByZXR1cm4gY2Rucy0+cm9sZXNbQ0ROUzNfUk9MRV9IT1NUXQ0K Pj4gKyAgICAgICAgICAgICAgID8gQ0ROUzNfUk9MRV9IT1NUDQo+PiArICAgICAgICAgICAgICAg OiBDRE5TM19ST0xFX0dBREdFVDsNCj4+ICt9DQo+PiArDQo+PiArLyoqDQo+PiArICogY2RuczNf Y29yZV9pbml0X3JvbGUgLSBpbml0aWFsaXplIHJvbGUgb2Ygb3BlcmF0aW9uDQo+PiArICogQGNk bnM6IFBvaW50ZXIgdG8gY2RuczMgc3RydWN0dXJlDQo+PiArICoNCj4+ICsgKiBSZXR1cm5zIDAg b24gc3VjY2VzcyBvdGhlcndpc2UgbmVnYXRpdmUgZXJybm8NCj4+ICsgKi8NCj4+ICtzdGF0aWMg aW50IGNkbnMzX2NvcmVfaW5pdF9yb2xlKHN0cnVjdCBjZG5zMyAqY2RucykNCj4+ICt7DQo+PiAr ICAgICAgIHN0cnVjdCBkZXZpY2UgKmRldiA9IGNkbnMtPmRldjsNCj4+ICsgICAgICAgZW51bSB1 c2JfZHJfbW9kZSBkcl9tb2RlOw0KPj4gKw0KPj4gKyAgICAgICBkcl9tb2RlID0gdXNiX2dldF9k cl9tb2RlKGRldik7DQo+PiArICAgICAgIGNkbnMtPnJvbGUgPSBDRE5TM19ST0xFX0VORDsNCj4+ ICsNCj4+ICsgICAgICAgLyoNCj4+ICsgICAgICAgICogSWYgZHJpdmVyIGNhbid0IHJlYWQgbW9k ZSBieSBtZWFucyBvZiB1c2JfZ2V0X2RyX21kb2UgZnVuY3Rpb24gdGhlbg0KPj4gKyAgICAgICAg KiBjaG9vc2VzIG1vZGUgYWNjb3JkaW5nIHdpdGggS2VybmVsIGNvbmZpZ3VyYXRpb24uIFRoaXMg c2V0dGluZw0KPj4gKyAgICAgICAgKiBjYW4gYmUgcmVzdHJpY3RlZCBsYXRlciBkZXBlbmRpbmcg b24gc3RyYXAgcGluIGNvbmZpZ3VyYXRpb24uDQo+PiArICAgICAgICAqLw0KPj4gKyAgICAgICBp ZiAoZHJfbW9kZSA9PSBVU0JfRFJfTU9ERV9VTktOT1dOKSB7DQo+PiArICAgICAgICAgICAgICAg aWYgKElTX0VOQUJMRUQoQ09ORklHX1VTQl9DRE5TM19IT1NUKSAmJg0KPj4gKyAgICAgICAgICAg ICAgICAgICBJU19FTkFCTEVEKENPTkZJR19VU0JfQ0ROUzNfR0FER0VUKSkNCj4+ICsgICAgICAg ICAgICAgICAgICAgICAgIGRyX21vZGUgPSBVU0JfRFJfTU9ERV9PVEc7DQo+PiArICAgICAgICAg ICAgICAgZWxzZSBpZiAoSVNfRU5BQkxFRChDT05GSUdfVVNCX0NETlMzX0hPU1QpKQ0KPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgZHJfbW9kZSA9IFVTQl9EUl9NT0RFX0hPU1Q7DQo+PiArICAg ICAgICAgICAgICAgZWxzZSBpZiAoSVNfRU5BQkxFRChDT05GSUdfVVNCX0NETlMzX0dBREdFVCkp DQo+PiArICAgICAgICAgICAgICAgICAgICAgICBkcl9tb2RlID0gVVNCX0RSX01PREVfUEVSSVBI RVJBTDsNCj4+ICsgICAgICAgfQ0KPj4gKw0KPj4gKyAgICAgICBpZiAoZHJfbW9kZSA9PSBVU0Jf RFJfTU9ERV9PVEcgfHwgZHJfbW9kZSA9PSBVU0JfRFJfTU9ERV9IT1NUKSB7DQo+PiArICAgICAg ICAgICAgICAgLy9UT0RPOiBpbXBsZW1lbnRzIGhvc3QgaW5pdGlhbGl6YXRpb24NCj4+ICsgICAg ICAgfQ0KPj4gKw0KPj4gKyAgICAgICBpZiAoZHJfbW9kZSA9PSBVU0JfRFJfTU9ERV9PVEcgfHwg ZHJfbW9kZSA9PSBVU0JfRFJfTU9ERV9QRVJJUEhFUkFMKSB7DQo+PiArICAgICAgICAgICAgICAg Ly9UT0RPOiBpbXBsZW1lbnRzIGRldmljZSBpbml0aWFsaXphdGlvbg0KPj4gKyAgICAgICB9DQo+ PiArDQo+PiArICAgICAgIGlmICghY2Rucy0+cm9sZXNbQ0ROUzNfUk9MRV9IT1NUXSAmJiAhY2Ru cy0+cm9sZXNbQ0ROUzNfUk9MRV9HQURHRVRdKSB7DQo+PiArICAgICAgICAgICAgICAgZGV2X2Vy cihkZXYsICJubyBzdXBwb3J0ZWQgcm9sZXNcbiIpOw0KPj4gKyAgICAgICAgICAgICAgIHJldHVy biAtRU5PREVWOw0KPj4gKyAgICAgICB9DQo+PiArDQo+PiArICAgICAgIGNkbnMtPmRyX21vZGUg PSBkcl9tb2RlOw0KPj4gKyAgICAgICByZXR1cm4gMDsNCj4+ICt9DQo+PiArDQo+PiArLyoqDQo+ PiArICogY2RuczNfaXJxIC0gaW50ZXJydXB0IGhhbmRsZXIgZm9yIGNkbnMzIGNvcmUgZGV2aWNl DQo+PiArICoNCj4+ICsgKiBAaXJxOiBpcnEgbnVtYmVyIGZvciBjZG5zMyBjb3JlIGRldmljZQ0K Pj4gKyAqIEBkYXRhOiBzdHJ1Y3R1cmUgb2YgY2RuczMNCj4+ICsgKg0KPj4gKyAqIFJldHVybnMg SVJRX0hBTkRMRUQgb3IgSVJRX05PTkUNCj4+ICsgKi8NCj4+ICtzdGF0aWMgaXJxcmV0dXJuX3Qg Y2RuczNfaXJxKGludCBpcnEsIHZvaWQgKmRhdGEpDQo+PiArew0KPj4gKyAgICAgICBzdHJ1Y3Qg Y2RuczMgKmNkbnMgPSBkYXRhOw0KPj4gKyAgICAgICBpcnFyZXR1cm5fdCByZXQgPSBJUlFfTk9O RTsNCj4+ICsNCj4+ICsgICAgICAgLyogSGFuZGxlIGRldmljZS9ob3N0IGludGVycnVwdCAqLw0K Pj4gKyAgICAgICBpZiAoY2Rucy0+cm9sZSAhPSBDRE5TM19ST0xFX0VORCkNCj4+ICsgICAgICAg ICAgICAgICByZXQgPSBjZG5zM19nZXRfY3VycmVudF9yb2xlX2RyaXZlcihjZG5zKS0+aXJxKGNk bnMpOw0KPj4gKw0KPj4gKyAgICAgICByZXR1cm4gcmV0Ow0KPj4gK30NCj4+ICsNCj4+ICtzdGF0 aWMgdm9pZCBjZG5zM19yZW1vdmVfcm9sZXMoc3RydWN0IGNkbnMzICpjZG5zKQ0KPj4gK3sNCj4+ ICsgICAgICAgLy9UT0RPOiBpbXBsZW1lbnRzIHRoaXMgZnVuY3Rpb24NCj4+ICt9DQo+PiArDQo+ PiArc3RhdGljIGludCBjZG5zM19kb19yb2xlX3N3aXRjaChzdHJ1Y3QgY2RuczMgKmNkbnMsIGVu dW0gY2RuczNfcm9sZXMgcm9sZSkNCj4+ICt7DQo+PiArICAgICAgIGVudW0gY2RuczNfcm9sZXMg Y3VycmVudF9yb2xlOw0KPj4gKyAgICAgICBpbnQgcmV0ID0gMDsNCj4+ICsNCj4+ICsgICAgICAg Y3VycmVudF9yb2xlID0gY2Rucy0+cm9sZTsNCj4+ICsNCj4+ICsgICAgICAgaWYgKHJvbGUgPT0g Q0ROUzNfUk9MRV9FTkQpDQo+PiArICAgICAgICAgICAgICAgcmV0dXJuIDA7DQo+PiArDQo+PiAr ICAgICAgIGRldl9kYmcoY2Rucy0+ZGV2LCAiU3dpdGNoaW5nIHJvbGUiKTsNCj4+ICsNCj4+ICsg ICAgICAgcmV0ID0gY2RuczNfcm9sZV9zdGFydChjZG5zLCByb2xlKTsNCj4+ICsgICAgICAgaWYg KHJldCkgew0KPj4gKyAgICAgICAgICAgICAgIC8qIEJhY2sgdG8gY3VycmVudCByb2xlICovDQo+ PiArICAgICAgICAgICAgICAgZGV2X2VycihjZG5zLT5kZXYsICJzZXQgJWQgaGFzIGZhaWxlZCwg YmFjayB0byAlZFxuIiwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHJvbGUsIGN1cnJlbnRf cm9sZSk7DQo+PiArICAgICAgICAgICAgICAgcmV0ID0gY2RuczNfcm9sZV9zdGFydChjZG5zLCBj dXJyZW50X3JvbGUpOw0KPj4gKyAgICAgICB9DQo+PiArDQo+PiArICAgICAgIHJldHVybiByZXQ7 DQo+PiArfQ0KPj4gKw0KPj4gKy8qKg0KPj4gKyAqIGNkbnMzX3JvbGVfc3dpdGNoIC0gd29yayBx dWV1ZSBoYW5kbGVyIGZvciByb2xlIHN3aXRjaA0KPj4gKyAqDQo+PiArICogQHdvcms6IHdvcmsg cXVldWUgaXRlbSBzdHJ1Y3R1cmUNCj4+ICsgKg0KPj4gKyAqIEhhbmRsZXMgYmVsb3cgZXZlbnRz Og0KPj4gKyAqIC0gUm9sZSBzd2l0Y2ggZm9yIGR1YWwtcm9sZSBkZXZpY2VzDQo+PiArICogLSBD RE5TM19ST0xFX0dBREdFVCA8LS0+IENETlMzX1JPTEVfRU5EIGZvciBwZXJpcGhlcmFsLW9ubHkg ZGV2aWNlcw0KPj4gKyAqLw0KPj4gK3N0YXRpYyB2b2lkIGNkbnMzX3JvbGVfc3dpdGNoKHN0cnVj dCB3b3JrX3N0cnVjdCAqd29yaykNCj4+ICt7DQo+PiArICAgICAgIGVudW0gY2RuczNfcm9sZXMg cm9sZSA9IENETlMzX1JPTEVfRU5EOw0KPj4gKyAgICAgICBzdHJ1Y3QgY2RuczMgKmNkbnM7DQo+ PiArICAgICAgIGJvb2wgZGV2aWNlLCBob3N0Ow0KPj4gKw0KPj4gKyAgICAgICBjZG5zID0gY29u dGFpbmVyX29mKHdvcmssIHN0cnVjdCBjZG5zMywgcm9sZV9zd2l0Y2hfd3EpOw0KPj4gKw0KPj4g KyAgICAgICAvL1RPRE86IGltcGxlbWVudHMgdGhpcyBmdW5jdGlvbnMuDQo+PiArICAgICAgIC8v aG9zdCA9IGNkbnMzX2lzX2hvc3QoY2Rucyk7DQo+PiArICAgICAgIC8vZGV2aWNlID0gY2RuczNf aXNfZGV2aWNlKGNkbnMpOw0KPg0KPllvdSBtYXkgaW1wcm92ZSB1c2UgQyBjb21tZW50Lg0KWWVz LCBJIGtub3cuIEkndmUgYWxyZWFkeSBkb25lIHRoYXQuIA0KPg0KPj4gKyAgICAgICBob3N0ID0g MTsNCj4+ICsgICAgICAgZGV2aWNlID0gMDsNCj4+ICsNCj4+ICsgICAgICAgaWYgKGhvc3QpDQo+ PiArICAgICAgICAgICAgICAgcm9sZSA9IENETlMzX1JPTEVfSE9TVDsNCj4+ICsgICAgICAgZWxz ZSBpZiAoZGV2aWNlKQ0KPj4gKyAgICAgICAgICAgICAgIHJvbGUgPSBDRE5TM19ST0xFX0dBREdF VDsNCj4+ICsNCj4+ICsgICAgICAgaWYgKGNkbnMtPmRlc2lyZWRfZHJfbW9kZSA9PSBjZG5zLT5j dXJyZW50X2RyX21vZGUgJiYNCj4+ICsgICAgICAgICAgIGNkbnMtPnJvbGUgPT0gcm9sZSkNCj4+ ICsgICAgICAgICAgICAgICByZXR1cm47DQo+PiArDQo+PiArICAgICAgIHBtX3J1bnRpbWVfZ2V0 X3N5bmMoY2Rucy0+ZGV2KTsNCj4+ICsgICAgICAgY2RuczNfcm9sZV9zdG9wKGNkbnMpOw0KPj4g Kw0KPj4gKyAgICAgICBpZiAoaG9zdCkgew0KPj4gKyAgICAgICAgICAgICAgIGlmIChjZG5zLT5y b2xlc1tDRE5TM19ST0xFX0hPU1RdKQ0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgY2RuczNf ZG9fcm9sZV9zd2l0Y2goY2RucywgQ0ROUzNfUk9MRV9IT1NUKTsNCj4+ICsgICAgICAgICAgICAg ICBwbV9ydW50aW1lX3B1dF9zeW5jKGNkbnMtPmRldik7DQo+PiArICAgICAgICAgICAgICAgcmV0 dXJuOw0KPj4gKyAgICAgICB9DQo+PiArDQo+PiArICAgICAgIGlmIChkZXZpY2UpDQo+PiArICAg ICAgICAgICAgICAgY2RuczNfZG9fcm9sZV9zd2l0Y2goY2RucywgQ0ROUzNfUk9MRV9HQURHRVQp Ow0KPj4gKyAgICAgICBlbHNlDQo+PiArICAgICAgICAgICAgICAgY2RuczNfZG9fcm9sZV9zd2l0 Y2goY2RucywgQ0ROUzNfUk9MRV9FTkQpOw0KPj4gKw0KPj4gKyAgICAgICBwbV9ydW50aW1lX3B1 dF9zeW5jKGNkbnMtPmRldik7DQo+PiArfQ0KPj4gKw0KPj4gKy8qKg0KPj4gKyAqIGNkbnMzX3By b2JlIC0gcHJvYmUgZm9yIGNkbnMzIGNvcmUgZGV2aWNlDQo+PiArICogQHBkZXY6IFBvaW50ZXIg dG8gY2RuczMgY29yZSBwbGF0Zm9ybSBkZXZpY2UNCj4+ICsgKg0KPj4gKyAqIFJldHVybnMgMCBv biBzdWNjZXNzIG90aGVyd2lzZSBuZWdhdGl2ZSBlcnJubw0KPj4gKyAqLw0KPj4gK3N0YXRpYyBp bnQgY2RuczNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4+ICt7DQo+PiAr ICAgICAgIHN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5kZXY7DQo+PiArICAgICAgIHN0cnVj dCByZXNvdXJjZSAqcmVzOw0KPj4gKyAgICAgICBzdHJ1Y3QgY2RuczMgKmNkbnM7DQo+PiArICAg ICAgIHZvaWQgX19pb21lbSAqcmVnczsNCj4+ICsgICAgICAgaW50IHJldDsNCj4+ICsNCj4+ICsg ICAgICAgY2RucyA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqY2RucyksIEdGUF9LRVJORUwp Ow0KPj4gKyAgICAgICBpZiAoIWNkbnMpDQo+PiArICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9N RU07DQo+PiArDQo+PiArICAgICAgIGNkbnMtPmRldiA9IGRldjsNCj4+ICsNCj4+ICsgICAgICAg cGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgY2Rucyk7DQo+PiArDQo+PiArICAgICAgIHJlcyA9 IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2LCBJT1JFU09VUkNFX0lSUSwgMCk7DQo+PiArICAg ICAgIGlmICghcmVzKSB7DQo+PiArICAgICAgICAgICAgICAgZGV2X2VycihkZXYsICJtaXNzaW5n IElSUVxuIik7DQo+PiArICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9ERVY7DQo+PiArICAgICAg IH0NCj4+ICsgICAgICAgY2Rucy0+aXJxID0gcmVzLT5zdGFydDsNCj4+ICsNCj4+ICsgICAgICAg LyoNCj4+ICsgICAgICAgICogUmVxdWVzdCBtZW1vcnkgcmVnaW9uDQo+PiArICAgICAgICAqIHJl Z2lvbi0wOiB4SENJDQo+PiArICAgICAgICAqIHJlZ2lvbi0xOiBQZXJpcGhlcmFsDQo+PiArICAg ICAgICAqIHJlZ2lvbi0yOiBPVEcgcmVnaXN0ZXJzDQo+PiArICAgICAgICAqLw0KPj4gKyAgICAg ICByZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9NRU0sIDApOw0K Pj4gKyAgICAgICByZWdzID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKGRldiwgcmVzKTsNCj4+ICsN Cj4+ICsgICAgICAgaWYgKElTX0VSUihyZWdzKSkNCj4+ICsgICAgICAgICAgICAgICByZXR1cm4g UFRSX0VSUihyZWdzKTsNCj4+ICsgICAgICAgY2Rucy0+eGhjaV9yZWdzID0gcmVnczsNCj4+ICsg ICAgICAgY2Rucy0+eGhjaV9yZXMgPSByZXM7DQo+PiArDQo+PiArICAgICAgIHJlcyA9IHBsYXRm b3JtX2dldF9yZXNvdXJjZShwZGV2LCBJT1JFU09VUkNFX01FTSwgMSk7DQo+PiArICAgICAgIHJl Z3MgPSBkZXZtX2lvcmVtYXBfcmVzb3VyY2UoZGV2LCByZXMpOw0KPj4gKyAgICAgICBpZiAoSVNf RVJSKHJlZ3MpKQ0KPj4gKyAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKHJlZ3MpOw0KPj4g KyAgICAgICBjZG5zLT5kZXZfcmVncyAgPSByZWdzOw0KPj4gKw0KPj4gKyAgICAgICByZXMgPSBw bGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9NRU0sIDIpOw0KPj4gKyAgICAg ICByZWdzID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKGRldiwgcmVzKTsNCj4+ICsgICAgICAgaWYg KElTX0VSUihyZWdzKSkNCj4+ICsgICAgICAgICAgICAgICByZXR1cm4gUFRSX0VSUihyZWdzKTsN Cj4+ICsgICAgICAgY2Rucy0+b3RnX3JlZ3MgPSByZWdzOw0KPj4gKw0KPj4gKyAgICAgICBtdXRl eF9pbml0KCZjZG5zLT5tdXRleCk7DQo+PiArDQo+PiArICAgICAgIGNkbnMtPnBoeSA9IGRldm1f cGh5X2dldChkZXYsICJjZG5zMyx1c2JwaHkiKTsNCj4+ICsgICAgICAgaWYgKElTX0VSUihjZG5z LT5waHkpKSB7DQo+PiArICAgICAgICAgICAgICAgZGV2X2luZm8oZGV2LCAibm8gZ2VuZXJpYyBw aHkgZm91bmRcbiIpOw0KPj4gKyAgICAgICAgICAgICAgIGNkbnMtPnBoeSA9IE5VTEw7DQo+PiAr ICAgICAgICAgICAgICAgLyoNCj4+ICsgICAgICAgICAgICAgICAgKiBmYWxsIHRocm91Z2ggaGVy ZSENCj4+ICsgICAgICAgICAgICAgICAgKiBpZiBubyBnZW5lcmljIHBoeSBmb3VuZCwgcGh5IGlu aXQNCj4+ICsgICAgICAgICAgICAgICAgKiBzaG91bGQgYmUgZG9uZSB1bmRlciBib290IQ0KPj4g KyAgICAgICAgICAgICAgICAqLw0KPg0KPklmIHRoZSBwaHkgZHJpdmVyIGlzIGRlZmVyLXByb2Jl ZCwgaXQgd2lsbCBiZSBoZXJlLCBpdCBpcyBub3QgYW4gZXJyb3IuDQo+SSB0aGluayB5b3UgY291 bGQgaGF2ZSBhIGdlbmVyaWMgcGh5IGRyaXZlciBvciB1c2IgZ2VuZXJpYyBwaHkgZHJpdmVyDQo+ KGRyaXZlcnMvdXNiL3BoeS9waHktZ2VuZXJpYy5jKSBldmVuIHlvdSBkb24ndCBuZWVkIGFueSBv cGVyYXRpb25zIGZvcg0KPlBIWS4gSXQgd2lsbCBiZSBlYXN5IGZvciBvdGhlciBwbGF0Zm9ybXMu DQoNClllcywgUm9nZXIgYXNrIG1lIHRvIG1vZGlmeSB0aGlzIGZyYWdtZW50LiBJbiBuZXh0IHZl cnNpb24gaXQgd2lsbCBsb29rIGxpa2U6DQoJY2Rucy0+cGh5ID0gZGV2bV9waHlfZ2V0KGRldiwg ImNkbnMzLHVzYnBoeSIpOw0KCWlmIChJU19FUlIoY2Rucy0+cGh5KSkgew0KCQlyZXQgPSBQVFJf RVJSKGNkbnMtPnBoeSk7DQoJCWlmIChyZXQgPT0gLUVOT1NZUyB8fCByZXQgPT0gLUVOT0RFVikg ew0KCQkJY2Rucy0+cGh5ID0gTlVMTDsNCgkJfSBlbHNlIGlmIChyZXQgPT0gLUVQUk9CRV9ERUZF Uikgew0KCQkJcmV0dXJuIHJldDsNCgkJfSBlbHNlIHsNCgkJCWRldl9lcnIoZGV2LCAibm8gcGh5 IGZvdW5kXG4iKTsNCgkJCWdvdG8gZXJyMDsNCgkJfQ0KCX0NCg0KCXBoeV9pbml0KGNkbnMtPnBo eSk7DQoNCldlIGFyZSBnb2luZyB0byB1c2UgcGh5IGRyaXZlci4gSSBkb24ndCBrbm93IGlmIGl0 IGNvcnJlY3QuIA0KSSBkb24ndCBoYXZlIGV4cGVyaWVuY2UgaW4gdGhpcyBmaWxlZC4gIA0KV2Ug bmVlZCBwaHkgaW5pdGlhbGl6YXRpb24gYnV0IEkgZG9uJ3QgaGF2ZSB0ZXN0aW5nIHBsYXRmb3Jt IG5vdy4gIA0KSW4gbW9zdCB1c2IgZHJpdmVycyBJIHNlZSB0aGF0IHRoZXJlIGFyZSB1c2VkIHVz YiBwaHkgZHJpdmVyZCBpbnN0ZWFkIHBoeSBkaXJ2ZXJkLg0KDQo+PiArICAgICAgIH0gZWxzZSB7 DQo+PiArICAgICAgICAgICAgICAgcGh5X2luaXQoY2Rucy0+cGh5KTsNCj4+ICsgICAgICAgfQ0K Pj4gKw0KPj4gKyAgICAgICByZXQgPSBjZG5zM19jb3JlX2luaXRfcm9sZShjZG5zKTsNCj4+ICsg ICAgICAgaWYgKHJldCkNCj4+ICsgICAgICAgICAgICAgICBnb3RvIGVycjE7DQo+PiArDQo+PiAr ICAgICAgIElOSVRfV09SSygmY2Rucy0+cm9sZV9zd2l0Y2hfd3EsIGNkbnMzX3JvbGVfc3dpdGNo KTsNCj4+ICsgICAgICAgaWYgKHJldCkNCj4+ICsgICAgICAgICAgICAgICBnb3RvIGVycjI7DQo+ PiArDQo+PiArICAgICAgIGlmIChyZXQpDQo+PiArICAgICAgICAgICAgICAgZ290byBlcnIyOw0K Pj4gKw0KPj4gKyAgICAgICBjZG5zLT5yb2xlID0gY2RuczNfZ2V0X3JvbGUoY2Rucyk7DQo+PiAr DQo+PiArICAgICAgIHJldCA9IGRldm1fcmVxdWVzdF9pcnEoZGV2LCBjZG5zLT5pcnEsIGNkbnMz X2lycSwgSVJRRl9TSEFSRUQsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2 X25hbWUoZGV2KSwgY2Rucyk7DQo+PiArDQo+PiArICAgICAgIGlmIChyZXQpDQo+PiArICAgICAg ICAgICAgICAgZ290byBlcnIyOw0KPj4gKw0KPj4gKyAgICAgICByZXQgPSBjZG5zM19yb2xlX3N0 YXJ0KGNkbnMsIGNkbnMtPnJvbGUpOw0KPj4gKyAgICAgICBpZiAocmV0KSB7DQo+PiArICAgICAg ICAgICAgICAgZGV2X2VycihkZXYsICJjYW4ndCBzdGFydCAlcyByb2xlXG4iLA0KPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgY2RuczNfZ2V0X2N1cnJlbnRfcm9sZV9kcml2ZXIoY2RucyktPm5h bWUpOw0KPj4gKyAgICAgICAgICAgICAgIGdvdG8gZXJyMjsNCj4+ICsgICAgICAgfQ0KPj4gKw0K Pj4gKyAgICAgICBkZXZpY2Vfc2V0X3dha2V1cF9jYXBhYmxlKGRldiwgdHJ1ZSk7DQo+PiArICAg ICAgIHBtX3J1bnRpbWVfc2V0X2FjdGl2ZShkZXYpOw0KPj4gKyAgICAgICBwbV9ydW50aW1lX2Vu YWJsZShkZXYpOw0KPj4gKw0KPj4gKyAgICAgICAvKg0KPj4gKyAgICAgICAgKiBUaGUgY29udHJv bGxlciBuZWVkcyBsZXNzIHRpbWUgYmV0d2VlbiBidXMgYW5kIGNvbnRyb2xsZXIgc3VzcGVuZCwN Cj4+ICsgICAgICAgICogYW5kIHdlIGFsc28gbmVlZHMgYSBzbWFsbCBkZWxheSB0byBhdm9pZCBm cmVxdWVudGx5IGVudGVyaW5nIGxvdw0KPj4gKyAgICAgICAgKiBwb3dlciBtb2RlLg0KPj4gKyAg ICAgICAgKi8NCj4+ICsgICAgICAgcG1fcnVudGltZV9zZXRfYXV0b3N1c3BlbmRfZGVsYXkoZGV2 LCAyMCk7DQo+PiArICAgICAgIHBtX3J1bnRpbWVfbWFya19sYXN0X2J1c3koZGV2KTsNCj4+ICsg ICAgICAgcG1fcnVudGltZV91c2VfYXV0b3N1c3BlbmQoZGV2KTsNCj4+ICsgICAgICAgZGV2X2Ri ZyhkZXYsICJDYWRlbmNlIFVTQjMgY29yZTogcHJvYmUgc3VjY2VlZFxuIik7DQo+PiArDQo+PiAr ICAgICAgIHJldHVybiAwOw0KPj4gKw0KPj4gK2VycjI6DQo+PiArICAgICAgIGNkbnMzX3JlbW92 ZV9yb2xlcyhjZG5zKTsNCj4+ICtlcnIxOg0KPj4gKyAgICAgICByZXR1cm4gcmV0Ow0KPj4gK30N Cj4+ICsNCj4+ICsvKioNCj4+ICsgKiBjZG5zM19yZW1vdmUgLSB1bmJpbmQgZHJkIGRyaXZlciBh bmQgY2xlYW4gdXANCj4+ICsgKiBAcGRldjogUG9pbnRlciB0byBMaW51eCBwbGF0Zm9ybSBkZXZp Y2UNCj4+ICsgKg0KPj4gKyAqIFJldHVybnMgMCBvbiBzdWNjZXNzIG90aGVyd2lzZSBuZWdhdGl2 ZSBlcnJubw0KPj4gKyAqLw0KPj4gK3N0YXRpYyBpbnQgY2RuczNfcmVtb3ZlKHN0cnVjdCBwbGF0 Zm9ybV9kZXZpY2UgKnBkZXYpDQo+PiArew0KPj4gKyAgICAgICBzdHJ1Y3QgY2RuczMgKmNkbnMg PSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsNCj4+ICsNCj4+ICsgICAgICAgcG1fcnVudGlt ZV9nZXRfc3luYygmcGRldi0+ZGV2KTsNCj4+ICsgICAgICAgcG1fcnVudGltZV9kaXNhYmxlKCZw ZGV2LT5kZXYpOw0KPj4gKyAgICAgICBwbV9ydW50aW1lX3B1dF9ub2lkbGUoJnBkZXYtPmRldik7 DQo+PiArICAgICAgIGNkbnMzX3JlbW92ZV9yb2xlcyhjZG5zKTsNCj4+ICsNCj4+ICsgICAgICAg cmV0dXJuIDA7DQo+PiArfQ0KPj4gKw0KPj4gKyNpZmRlZiBDT05GSUdfT0YNCj4+ICtzdGF0aWMg Y29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBvZl9jZG5zM19tYXRjaFtdID0gew0KPj4gKyAgICAg ICB7IC5jb21wYXRpYmxlID0gImNkbnMsdXNiMyIgfSwNCj4+ICsgICAgICAgeyB9LA0KPj4gK307 DQo+PiArTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgb2ZfY2RuczNfbWF0Y2gpOw0KPj4gKyNlbmRp Zg0KPj4gKw0KPj4gKyNpZmRlZiBDT05GSUdfUE0NCj4+ICsNCj4+ICsjaWZkZWYgQ09ORklHX1BN X1NMRUVQDQo+PiArc3RhdGljIGludCBjZG5zM19zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldikN Cj4+ICt7DQo+PiArICAgICAgIC8vVE9ETzogaW1wbGVtZW50cyB0aGlzIGZ1bmN0aW9uDQo+PiAr ICAgICAgIHJldHVybiAwOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW50IGNkbnMzX3Jlc3Vt ZShzdHJ1Y3QgZGV2aWNlICpkZXYpDQo+PiArew0KPj4gKyAgICAgICAvL1RPRE86IGltcGxlbWVu dHMgdGhpcyBmdW5jdGlvbg0KPj4gKyAgICAgICByZXR1cm4gMDsNCj4+ICt9DQo+PiArI2VuZGlm IC8qIENPTkZJR19QTV9TTEVFUCAqLw0KPj4gK3N0YXRpYyBpbnQgY2RuczNfcnVudGltZV9zdXNw ZW5kKHN0cnVjdCBkZXZpY2UgKmRldikNCj4+ICt7ICAgICAgLy9UT0RPOiBpbXBsZW1lbnRzIHRo aXMgZnVuY3Rpb24NCj4+ICsgICAgICAgcmV0dXJuIDA7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRp YyBpbnQgY2RuczNfcnVudGltZV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQ0KPj4gK3sNCj4+ ICsgICAgICAgLy9UT0RPOiBpbXBsZW1lbnRzIHRoaXMgZnVuY3Rpb24NCj4+ICsgICAgICAgcmV0 dXJuIDA7DQo+PiArfQ0KPj4gKyNlbmRpZiAvKiBDT05GSUdfUE0gKi8NCj4+ICsNCj4+ICtzdGF0 aWMgY29uc3Qgc3RydWN0IGRldl9wbV9vcHMgY2RuczNfcG1fb3BzID0gew0KPj4gKyAgICAgICBT RVRfU1lTVEVNX1NMRUVQX1BNX09QUyhjZG5zM19zdXNwZW5kLCBjZG5zM19yZXN1bWUpDQo+PiAr ICAgICAgIFNFVF9SVU5USU1FX1BNX09QUyhjZG5zM19ydW50aW1lX3N1c3BlbmQsIGNkbnMzX3J1 bnRpbWVfcmVzdW1lLCBOVUxMKQ0KPj4gK307DQo+PiArDQo+PiArc3RhdGljIHN0cnVjdCBwbGF0 Zm9ybV9kcml2ZXIgY2RuczNfZHJpdmVyID0gew0KPj4gKyAgICAgICAucHJvYmUgICAgICAgICAg PSBjZG5zM19wcm9iZSwNCj4+ICsgICAgICAgLnJlbW92ZSAgICAgICAgID0gY2RuczNfcmVtb3Zl LA0KPj4gKyAgICAgICAuZHJpdmVyICAgICAgICAgPSB7DQo+PiArICAgICAgICAgICAgICAgLm5h bWUgICA9ICJjZG5zLXVzYjMiLA0KPj4gKyAgICAgICAgICAgICAgIC5vZl9tYXRjaF90YWJsZSA9 IG9mX21hdGNoX3B0cihvZl9jZG5zM19tYXRjaCksDQo+PiArICAgICAgICAgICAgICAgLnBtICAg ICA9ICZjZG5zM19wbV9vcHMsDQo+PiArICAgICAgIH0sDQo+PiArfTsNCj4+ICsNCj4+ICtzdGF0 aWMgaW50IF9faW5pdCBjZG5zM19kcml2ZXJfcGxhdGZvcm1fcmVnaXN0ZXIodm9pZCkNCj4+ICt7 DQo+PiArICAgICAgIHJldHVybiBwbGF0Zm9ybV9kcml2ZXJfcmVnaXN0ZXIoJmNkbnMzX2RyaXZl cik7DQo+PiArfQ0KPj4gK21vZHVsZV9pbml0KGNkbnMzX2RyaXZlcl9wbGF0Zm9ybV9yZWdpc3Rl cik7DQo+PiArDQo+PiArc3RhdGljIHZvaWQgX19leGl0IGNkbnMzX2RyaXZlcl9wbGF0Zm9ybV91 bnJlZ2lzdGVyKHZvaWQpDQo+PiArew0KPj4gKyAgICAgICBwbGF0Zm9ybV9kcml2ZXJfdW5yZWdp c3RlcigmY2RuczNfZHJpdmVyKTsNCj4+ICt9DQo+PiArbW9kdWxlX2V4aXQoY2RuczNfZHJpdmVy X3BsYXRmb3JtX3VucmVnaXN0ZXIpOw0KPj4gKw0KPj4gK01PRFVMRV9BTElBUygicGxhdGZvcm06 Y2RuczMiKTsNCj4+ICtNT0RVTEVfQVVUSE9SKCJQYXdlbCBMYXN6Y3phayA8cGF3ZWxsQGNhZGVu Y2UuY29tPiIpOw0KPj4gK01PRFVMRV9MSUNFTlNFKCJHUEwgdjIiKTsNCj4+ICtNT0RVTEVfREVT Q1JJUFRJT04oIkNhZGVuY2UgVVNCMyBEUkQgQ29udHJvbGxlciBEcml2ZXIiKTsNCj4+IGRpZmYg LS1naXQgYS9kcml2ZXJzL3VzYi9jZG5zMy9jb3JlLmggYi9kcml2ZXJzL3VzYi9jZG5zMy9jb3Jl LmgNCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+PiBpbmRleCAwMDAwMDAwMDAwMDAuLjdjODIw NGZlNGQzZA0KPj4gLS0tIC9kZXYvbnVsbA0KPj4gKysrIGIvZHJpdmVycy91c2IvY2RuczMvY29y ZS5oDQo+PiBAQCAtMCwwICsxLDEwMCBAQA0KPj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBHUEwtMi4wICovDQo+PiArLyoNCj4+ICsgKiBDYWRlbmNlIFVTQlNTIERSRCBEcml2ZXIuDQo+ PiArICoNCj4NCj5IZWFkZXIgZmlsZQ0KSSBkb24ndCB1bmRlcnN0YW5kLiBXaGF0IGlzIHdyb25n ID8NCj4NCj4+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTcgTlhQDQo+PiArICogQ29weXJpZ2h0IChD KSAyMDE4IENhZGVuY2UuDQo+PiArICoNCj4+ICsgKiBBdXRob3JzOiBQZXRlciBDaGVuIDxwZXRl ci5jaGVuQG54cC5jb20+DQo+PiArICogICAgICAgICAgUGF3ZWwgTGFzemN6YWsgPHBhd2VsbEBj YWRlbmNlLmNvbT4NCj4+ICsgKi8NCj4+ICsjaW5jbHVkZSA8bGludXgvdXNiL290Zy5oPg0KPj4g Kw0KPj4gKyNpZm5kZWYgX19MSU5VWF9DRE5TM19DT1JFX0gNCj4+ICsjZGVmaW5lIF9fTElOVVhf Q0ROUzNfQ09SRV9IDQo+PiArDQo+PiArc3RydWN0IGNkbnMzOw0KPj4gK2VudW0gY2RuczNfcm9s ZXMgew0KPj4gKyAgICAgICBDRE5TM19ST0xFX0hPU1QgPSAwLA0KPj4gKyAgICAgICBDRE5TM19S T0xFX0dBREdFVCwNCj4+ICsgICAgICAgQ0ROUzNfUk9MRV9FTkQsDQo+PiArfTsNCj4+ICsNCj4+ ICsvKioNCj4+ICsgKiBzdHJ1Y3QgY2RuczNfcm9sZV9kcml2ZXIgLSBob3N0L2dhZGdldCByb2xl IGRyaXZlcg0KPj4gKyAqIEBzdGFydDogc3RhcnQgdGhpcyByb2xlDQo+PiArICogQHN0b3A6IHN0 b3AgdGhpcyByb2xlDQo+PiArICogQHN1c3BlbmQ6IHN1c3BlbmQgY2FsbGJhY2sgZm9yIHRoaXMg cm9sZQ0KPj4gKyAqIEByZXN1bWU6IHJlc3VtZSBjYWxsYmFjayBmb3IgdGhpcyByb2xlDQo+PiAr ICogQGlycTogaXJxIGhhbmRsZXIgZm9yIHRoaXMgcm9sZQ0KPj4gKyAqIEBuYW1lOiByb2xlIG5h bWUgc3RyaW5nIChob3N0L2dhZGdldCkNCj4+ICsgKi8NCj4+ICtzdHJ1Y3QgY2RuczNfcm9sZV9k cml2ZXIgew0KPj4gKyAgICAgICBpbnQgKCpzdGFydCkoc3RydWN0IGNkbnMzICpjZG5zKTsNCj4+ ICsgICAgICAgdm9pZCAoKnN0b3ApKHN0cnVjdCBjZG5zMyAqY2Rucyk7DQo+PiArICAgICAgIGlu dCAoKnN1c3BlbmQpKHN0cnVjdCBjZG5zMyAqY2RucywgYm9vbCBkb193YWtldXApOw0KPj4gKyAg ICAgICBpbnQgKCpyZXN1bWUpKHN0cnVjdCBjZG5zMyAqY2RucywgYm9vbCBoaWJlcm5hdGVkKTsN Cj4+ICsgICAgICAgaXJxcmV0dXJuX3QgKCppcnEpKHN0cnVjdCBjZG5zMyAqY2Rucyk7DQo+PiAr ICAgICAgIGNvbnN0IGNoYXIgKm5hbWU7DQo+PiArfTsNCj4+ICsNCj4+ICsjZGVmaW5lIENETlMz X05VTV9PRl9DTEtTICAgICAgNQ0KPj4gKy8qKg0KPj4gKyAqIHN0cnVjdCBjZG5zMyAtIFJlcHJl c2VudGF0aW9uIG9mIENhZGVuY2UgVVNCMyBEUkQgY29udHJvbGxlci4NCj4+ICsgKiBAZGV2OiBw b2ludGVyIHRvIENhZGVuY2UgZGV2aWNlIHN0cnVjdA0KPj4gKyAqIEB4aGNpX3JlZ3M6IHBvaW50 ZXIgdG8gYmFzZSBvZiB4aGNpIHJlZ2lzdGVycw0KPj4gKyAqIEB4aGNpX3JlczogdGhlIHJlc291 cmNlIGZvciB4aGNpDQo+PiArICogQGRldl9yZWdzOiBwb2ludGVyIHRvIGJhc2Ugb2YgZGV2IHJl Z2lzdGVycw0KPj4gKyAqIEBvdGdfcmVnczogcG9pbnRlciB0byBiYXNlIG9mIG90ZyByZWdpc3Rl cnMNCj4+ICsgKiBAaXJxOiBpcnEgbnVtYmVyIGZvciBjb250cm9sbGVyDQo+PiArICogQHJvbGVz OiBhcnJheSBvZiBzdXBwb3J0ZWQgcm9sZXMgZm9yIHRoaXMgY29udHJvbGxlcg0KPj4gKyAqIEBy b2xlOiBjdXJyZW50IHJvbGUNCj4+ICsgKiBAaG9zdF9kZXY6IHRoZSBjaGlsZCBob3N0IGRldmlj ZSBwb2ludGVyIGZvciBjZG5zMyBjb3JlDQo+PiArICogQGdhZGdldF9kZXY6IHRoZSBjaGlsZCBn YWRnZXQgZGV2aWNlIHBvaW50ZXIgZm9yIGNkbnMzIGNvcmUNCj4+ICsgKiBAdXNiOiBwaHkgZm9y IHRoaXMgY29udHJvbGxlcg0KPj4gKyAqIEByb2xlX3N3aXRjaF93cTogd29yayBxdWV1ZSBpdGVt IGZvciByb2xlIHN3aXRjaA0KPj4gKyAqIEBpbl9scG06IHRoZSBjb250cm9sbGVyIGluIGxvdyBw b3dlciBtb2RlDQo+PiArICogQHdha2V1cF9pbnQ6IHRoZSB3YWtldXAgaW50ZXJydXB0DQo+PiAr ICogQG11dGV4OiB0aGUgbXV0ZXggZm9yIGNvbmN1cnJlbnQgY29kZSBhdCBkcml2ZXINCj4+ICsg KiBAZHJfbW9kZTogc3VwcG9ydGVkIG1vZGUgb2Ygb3BlcmF0aW9uIGl0IGNhbiBiZSBvbmx5IEhv c3QsIG9ubHkgRGV2aWNlDQo+PiArICogICAgICAgICAgIG9yIE9URyBtb2RlIHRoYXQgYWxsb3cg dG8gc3dpdGNoIGJldHdlZW4gRGV2aWNlIGFuZCBIb3N0IG1vZGUuDQo+PiArICogICAgICAgICAg IFRoaXMgZmllbGQgYmFzZWQgb24gaGFyZHdhcmUgY29uZmlndXJhdGlvbiBhbmQgY2FudCd0IGJl IGNoYW5nZWQuDQo+DQo+QmFzZWQgb24gZmlybXdhcmUgc2V0dGluZywga2VybmVsIGNvbmZpZ3Vy YXRpb24gYW5kIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24uDQpJIHJlbW92ZWQgdGhpcyBsaW5lIGJ1 dCB0aGlzIHdpbGwgYmUgYmV0dGVyLiANClRoYW5rcy4NCj4NCj4+ICsgKiBAY3VycmVudF9kcl9y b2xlOiBjdXJyZW50IG1vZGUgb2Ygb3BlcmF0aW9uIHdoZW4gaW4gZHVhbC1yb2xlIG1vZGUNCj4+ ICsgKiBAZGVzaXJlZF9kcl9yb2xlOiBkZXNpcmVkIG1vZGUgb2Ygb3BlcmF0aW9uIHdoZW4gaW4g ZHVhbC1yb2xlIG1vZGUuDQo+PiArICogICAgICAgICAgIFRoaXMgdmFsdWUgY2FuIGJlIGNoYW5n ZWQgZHVyaW5nIHJ1bnRpbWUuDQo+PiArICogICAgICAgICAgIEF2YWlsYWJsZSBvcHRpb25zIGRl cGVuZHMgb24gIGRyX21vZGU6DQo+PiArICogICAgICAgICAgIGRyX21vZGUgICAgICAgICAgICAg ICAgIHwgIGRlc2lyZWRfZHJfcm9sZSBhbmQgY3VycmVudF9kcl9yb2xlDQo+PiArICogICAgICAg ICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0NCj4+ICsgKiAgICAgICAgICAgVVNCX0RSX01PREVfSE9TVCAgICAgICAgfCBv bmx5IFVTQl9EUl9NT0RFX0hPU1QNCj4+ICsgKiAgICAgICAgICAgVVNCX0RSX01PREVfUEVSSVBI RVJBTCAgfCBvbmx5IFVTQl9EUl9NT0RFX1BFUklQSEVSQUwNCj4+ICsgKiAgICAgICAgICAgVVNC X0RSX01PREVfT1RHICAgICAgICAgfCBvbmx5IFVTQl9EUl9NT0RFX0hPU1QNCj4+ICsgKiAgICAg ICAgICAgVVNCX0RSX01PREVfT1RHICAgICAgICAgfCBvbmx5IFVTQl9EUl9NT0RFX1BFUklQSEVS QUwNCj4+ICsgKiAgICAgICAgICAgVVNCX0RSX01PREVfT1RHICAgICAgICAgfCBVU0JfRFJfTU9E RV9PVEcNCj4+ICsgKg0KPj4gKyAqICAgICAgICAgICBEZXNpcmVkX2RyX3JvbGUgY2FuIGJlIGNo YW5nZWQgYnkgbWVhbnMgb2YgZGVidWdmcy4NCj4+ICsgKiBAcm9vdDogZGVidWdmcyByb290IGZv bGRlciBwb2ludGVyDQo+PiArICovDQo+PiArc3RydWN0IGNkbnMzIHsNCj4+ICsgICAgICAgc3Ry dWN0IGRldmljZSAgICAgICAgICAgICAgICAgICAqZGV2Ow0KPj4gKyAgICAgICB2b2lkIF9faW9t ZW0gICAgICAgICAgICAgICAgICAgICp4aGNpX3JlZ3M7DQo+PiArICAgICAgIHN0cnVjdCByZXNv dXJjZSAgICAgICAgICAgICAgICAgKnhoY2lfcmVzOw0KPj4gKyAgICAgICBzdHJ1Y3QgY2RuczNf dXNiX3JlZ3MgX19pb21lbSAgICpkZXZfcmVnczsNCj4+ICsgICAgICAgc3RydWN0IGNkbnMzX290 Z19yZWdzICAgICAgICAgICAqb3RnX3JlZ3M7DQo+PiArICAgICAgIGludCBpcnE7DQo+PiArICAg ICAgIHN0cnVjdCBjZG5zM19yb2xlX2RyaXZlciAgICAgICAgKnJvbGVzW0NETlMzX1JPTEVfRU5E XTsNCj4+ICsgICAgICAgZW51bSBjZG5zM19yb2xlcyAgICAgICAgICAgICAgICByb2xlOw0KPj4g KyAgICAgICBzdHJ1Y3QgZGV2aWNlICAgICAgICAgICAgICAgICAgICpob3N0X2RldjsNCj4+ICsg ICAgICAgc3RydWN0IGRldmljZSAgICAgICAgICAgICAgICAgICAqZ2FkZ2V0X2RldjsNCj4+ICsg ICAgICAgc3RydWN0IHBoeSAgICAgICAgICAgICAgICAgICAgICAqcGh5Ow0KPj4gKyAgICAgICBz dHJ1Y3Qgd29ya19zdHJ1Y3QgICAgICAgICAgICAgIHJvbGVfc3dpdGNoX3dxOw0KPj4gKyAgICAg ICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluX2xwbToxOw0KPj4gKyAgICAgICBp bnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdha2V1cF9pbnQ6MTsNCj4+ICsgICAgICAg LyogbXV0ZXh0IHVzZWQgaW4gd29ya3F1ZXVlKi8NCj4+ICsgICAgICAgc3RydWN0IG11dGV4ICAg ICAgICAgICAgICAgICAgICBtdXRleDsNCj4+ICsgICAgICAgZW51bSB1c2JfZHJfbW9kZSAgICAg ICAgICAgICAgICBkcl9tb2RlOw0KPj4gKyAgICAgICBlbnVtIHVzYl9kcl9tb2RlICAgICAgICAg ICAgICAgIGN1cnJlbnRfZHJfbW9kZTsNCj4+ICsgICAgICAgZW51bSB1c2JfZHJfbW9kZSAgICAg ICAgICAgICAgICBkZXNpcmVkX2RyX21vZGU7DQo+PiArICAgICAgIHN0cnVjdCBkZW50cnkgICAg ICAgICAgICAgICAgICAgKnJvb3Q7DQo+PiArfTsNCj4+ICsNCj4+ICsjZW5kaWYgLyogX19MSU5V WF9DRE5TM19DT1JFX0ggKi8NCj4+IC0tDQo+PiAyLjE3LjENCj4+DQpUaGFuayANCkNoZWVycw0K UGF3ZWwNCg0K