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=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=unavailable 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 137E9C4332B for ; Thu, 18 Mar 2021 14:43:29 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id D500C64F24 for ; Thu, 18 Mar 2021 14:43:28 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231408AbhCROm5 (ORCPT ); Thu, 18 Mar 2021 10:42:57 -0400 Received: from mail-co1nam11on2040.outbound.protection.outlook.com ([40.107.220.40]:5729 "EHLO NAM11-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S229745AbhCROmY (ORCPT ); Thu, 18 Mar 2021 10:42:24 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=F3R2fhfW+x56yYaGiep8jBxOetOEJWoN+pn4qaXC0sBSsBIhnu77b5BkUc2Rv/E/rzjEatXqeU6VWzcJHV5ylKkenbbOrGvC54iVPug/9XfB3ZFmv6c1qRRsdyz9zQ1Ik8HaqgvPXCz7103xd2WiLKmTXCmDqSgeC2pZE517pyDtKSZESkgaMDnSYJq8aBEgdaDERMka0xNQVRMnYgBrr0ar+E1Z3EwvsC0wsh5Hnescf5cV+O8WlFEj3ZgOYaT1Q6/8R9tifhvD5eOiiE7uK8IHuU0yiIQjPPG0YleCJMFEU3CcRddKDkwsAM2KdqHO8GHiQIcB1J6ylv/4esL4mw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=G3feZnWYqNH1Pol1r+4f8DvpSuIMq09GIl23AwkAEqo=; b=R+e4kfyY7VF4wyhFCG0T+QMkaOpEdFVD2ze+AFdVkKyI6uLQ8+UfQNHlnkZ5s+MLaDpNbXcRzwkHfCqiwXgDEQHm/NevSTbxXyy7DMB3V22sJ1WAUpX7Yr4hdeBlHqBJytuPtRkuwIYqUNQafsZAYXU5/lPem6K8/sm9SJf2GofODkwJw/Lyfkmv+aNzbjgvcbIFLlKQN/V0s7nEeXKOLuy6Wf0ELrHeElZtOeAqM/RFHwGhuEqURrcTM3xRiGr/Ue6k3Wjvpbndh6DxD8B4i3oc57V484afJD96Yu/yW4QJqGjhkblauN4OC67dUvny/B+/GRYoOwdDnLHZ4xb1GA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=xilinx.com; dmarc=pass action=none header.from=xilinx.com; dkim=pass header.d=xilinx.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=xilinx.onmicrosoft.com; s=selector2-xilinx-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=G3feZnWYqNH1Pol1r+4f8DvpSuIMq09GIl23AwkAEqo=; b=Lk2F850UaYe4SIMpG87CboxSyiHcNqZIUdaMAHTZn2IjD60vgG5uH6y99j6rq26OETRxmpBidBcprCgtMsyaKnUDaYbP+teZFZncjM7eYpvzBMkUMNaDncwHz7QVaI5s/VXy5WFdCaGZmYRqN3IxOSrCzyGOqsB/DwaP46bhDBo= Received: from SN6PR02MB3917.namprd02.prod.outlook.com (2603:10b6:805:2e::26) by SA2PR02MB7594.namprd02.prod.outlook.com (2603:10b6:806:140::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3955.18; Thu, 18 Mar 2021 14:42:20 +0000 Received: from SN6PR02MB3917.namprd02.prod.outlook.com ([fe80::68cc:492b:dd78:daba]) by SN6PR02MB3917.namprd02.prod.outlook.com ([fe80::68cc:492b:dd78:daba%4]) with mapi id 15.20.3890.042; Thu, 18 Mar 2021 14:42:20 +0000 From: Sai Krishna Potthuri To: Andy Shevchenko CC: Linus Walleij , Rob Herring , Michal Simek , Greg Kroah-Hartman , linux-arm Mailing List , Linux Kernel Mailing List , devicetree , "open list:GPIO SUBSYSTEM" , git , "saikrishna12468@gmail.com" Subject: RE: [PATCH v4 3/3] pinctrl: Add Xilinx ZynqMP pinctrl driver support Thread-Topic: [PATCH v4 3/3] pinctrl: Add Xilinx ZynqMP pinctrl driver support Thread-Index: AQHXGwdloppct9WdF06D8lw8GDUKq6qII6IAgAEUy/A= Date: Thu, 18 Mar 2021 14:42:20 +0000 Message-ID: References: <1615969516-87663-1-git-send-email-lakshmi.sai.krishna.potthuri@xilinx.com> <1615969516-87663-4-git-send-email-lakshmi.sai.krishna.potthuri@xilinx.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-MS-TNEF-Correlator: authentication-results: gmail.com; dkim=none (message not signed) header.d=none;gmail.com; dmarc=none action=none header.from=xilinx.com; x-originating-ip: [149.199.50.130] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 15fa493f-2ec7-4c3b-d64a-08d8ea1c092f x-ms-traffictypediagnostic: SA2PR02MB7594: x-ld-processed: 657af505-d5df-48d0-8300-c31994686c5c,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:113; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: PsQiqx2Sa8APIZSdPVWTTY57By4ME170uwVBzymNYYv1GOBY07NBu/A5OzOiA1nQULIa40eXGCEzAB0qBOK3MP59+63J1rYCFSu8LTusBfbIW2y/fLUEE7f5xZHW9DhT7Y/f5hre2mz8S+C2V0z4dEUbNwnGQRlHq0JYMHYXv4TLETKNxHFXY+JE5BagrNOL6M54VsFxOGABfMQVrEAy9fkzokrg3iM+Qoe5i7wrU63M6Bri8TVBEzDzAne8X2hUgG1SJtB4uRsRPCfzFLjDoSjKgOsOCeA2kLVeV0WtGG2nTrWFXTeEA6NG+zunsAtQtjtV71Y2sU6t4YJPNhaXzqviEF2zdPKoKE5e3W9KSiEv5JteeZ++sGyAGQcw/JbKmwQRP+jJZ34TL5fQD1o52oWkL53ZRsbHBBDJ8JsUmVPv3gCS6f5UQ5IjnQLouxY7xMeXk2RAwlOtNk6F3iGhSuIgyW4OvXTHNmQZULh9e6PdBvbiDP9EznXPN1c39PiQBUPj32D9BBndIWgFwcEidTXqRbwuPwggJDzQh1orKXLd9XqE/GFpCm0J6mgpLOtFzbgehLa5p88Y6jdjtfhYg8+H1P0e1Trs+LXlA3DqeXJhQBB0RwlsFGaJcoJAo6YY x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN6PR02MB3917.namprd02.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(376002)(396003)(366004)(136003)(346002)(39860400002)(64756008)(26005)(66446008)(66556008)(186003)(76116006)(66946007)(66476007)(7416002)(478600001)(83380400001)(5660300002)(8676002)(53546011)(52536014)(7696005)(30864003)(6506007)(38100700001)(2906002)(6916009)(54906003)(86362001)(316002)(33656002)(8936002)(9686003)(55016002)(71200400001)(4326008)(579004)(559001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata: =?utf-8?B?MVcranhKYXBKT3BlYnEwZ2NpTHc0enJRRm5TS2FrcHBtUDgzQW9OMHExWjd3?= =?utf-8?B?YktnczMvU2JmVTQrNlJKMEZza29iM0JWdmhLWVZDM1ZyT1F0c0ZQUGtzWEEr?= =?utf-8?B?SXZUKzNXb1JkbCs5YUR0THNuWFphV25YbmNzRE4vYzdGSWFHcW9ONFJxYW9p?= =?utf-8?B?ZEd2ZnYzQ0Nrc0MxMm43YzY3S3RTYTVtWndZdjRFRzVZM3JJa3E4VUkzYTgv?= =?utf-8?B?UHhuMDRmakxOckpCTUVYWWw2M2lzbkZoUEhFUVBQWnRnNWQyS3E1S0Y4L3Ry?= =?utf-8?B?UVNVajM4RklaeGlkVGdzaU8yODhqQXpCNlBnclA0dEh2OXhiMndGdzdOaHVm?= =?utf-8?B?WWpxVFBEaU9LM25ib1FxaEp2bnZKSjBVakhmb2hwT0I4eExHbmdiOUJVNkgw?= =?utf-8?B?MGRRWnZXZWtwQks3OFFvdkNqcUVBaXFnc3pGTXZKWCtIeVduQVluZ2tHNEhE?= =?utf-8?B?TGJ3anBFMlJWMGM0aGpNWEY0c2xXemtRUldMUjZDQzlpV1dpd00rWFJNc2VF?= =?utf-8?B?Wk5ING9lZXNTZy9zR2ZPUVF3L0I3d2dhNTJmdmc2WmMzb1VjelBVZUY0WUgw?= =?utf-8?B?YmtzQXZmSGhnUnVxTzJPNFBUNEQzVld6WnBwU0thUElSU1dPMUlNb21Ob25L?= =?utf-8?B?M2ZoNXAvN256RHJrak9KRnY0YlJNNVdNQ3hSYXZ0eUpOWEhZN25uR2JSRzN1?= =?utf-8?B?Z3VzU0JCOGFzTk9CdUErazkyZjArcHJGemNWVDEyL1RoSmFMamF2RGRFU0NR?= =?utf-8?B?NlR6QmppR3liY0JnT2MwalJnaGsrK2wxbTg2T2krNjNRMzRaSHduQ1RkZ1lp?= =?utf-8?B?djZNMmpiTGN4T1lJUjJvL3NzdHdWbDFJdUxBQ1EwUncwaWcyYTNiME42QW9i?= =?utf-8?B?dW1HZERWY3VqdUsrSklJU3FEUC9DdkZIektzemFMZTJZVEV4WGtyYUFlVDhO?= =?utf-8?B?S1NIL1oreTFteVdmYzRxQ0Y3emE3NUNrMGorbVNGUml5R3E2Zm9MNWFpUDgv?= =?utf-8?B?UTZ1Rmd5R2pmZ3ZydmwzMVRoK085VGxIK21ma3F2ZW55eUx3b3MzeENWdmk2?= =?utf-8?B?UmdObk5qNTNza2liTTNQZ2VjbS9kTzZtUU9GUFZiN2g1ZTdqQTF0L09jbzMv?= =?utf-8?B?elIwaVdXZmVpd1QyYlNmeWdyck53dURRNEg1L2ZvVlJUaWRyUFlpcG1veUxP?= =?utf-8?B?QlRrcUlkekhLQm9EcEhtNDZGb0thN3d4V1AyaVJBVkVoSmthMStMZ1BpK2JL?= =?utf-8?B?MHVINWN1eE85cXk4Z0FLZ3g0NlRYemJWdDRTRkp5QVhMb0wweFp1YVZFWEwv?= =?utf-8?B?Z2JyRTZoN1dkUXJmZE5TL0hVcHNaY1V2cVU0R0VOSVhZZy9mSTNJMUIxaEtG?= =?utf-8?B?UG9VU0NYd0VrTndUZy9mVVBCQ3IraElxZ1VlOHI1R01VTWRwSHdGVzBEWGdB?= =?utf-8?B?c00yaDl3bVk0R0RQOUpiNjR0bnFLVlVnZTZ3WjlRS2drajNWL3hsK2h6aFk0?= =?utf-8?B?RUhFZEYrR054L29tWWZmK2NtWGwxZUJNVS9SeXNvS1ZORDc0WGxwMzV0OHdJ?= =?utf-8?B?eFM3NkxLczlrZlR1RVE2YnJPU3hIUlpzN2tTdzI3eE9CNU5iWFBCazFlNFUr?= =?utf-8?B?VC9ZMlNieGt3dlZWMEVhdWROb3hKQ21GQVFVbEJ0L3JuekVqSWhBQ3FRdUxa?= =?utf-8?B?TlZyYk5KUVdleHllOVZRSU5lMjZnREcvcjdtS0ZXdmpYY0dEY0xhaTBUT1RC?= =?utf-8?Q?WjjlfeP5ibd7+fkcxLUUQj8/ffILTuw083AIR7B?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: xilinx.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SN6PR02MB3917.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 15fa493f-2ec7-4c3b-d64a-08d8ea1c092f X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Mar 2021 14:42:20.5469 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 657af505-d5df-48d0-8300-c31994686c5c X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: hpxkDsNJ6p0dIkElGRcftcrXHfOIMXeSDGjky68YD1wUDXydazD4nCMV00Cc5SI/9C3YKdAkS0zsQ4brTlvgAw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA2PR02MB7594 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGkgQW5keSBTaGV2Y2hlbmtvLA0KDQpUaGFua3MgZm9yIHRoZSByZXZpZXcuDQoNCj4gLS0tLS1P cmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogQW5keSBTaGV2Y2hlbmtvIDxhbmR5LnNoZXZj aGVua29AZ21haWwuY29tPg0KPiBTZW50OiBXZWRuZXNkYXksIE1hcmNoIDE3LCAyMDIxIDY6MjYg UE0NCj4gVG86IFNhaSBLcmlzaG5hIFBvdHRodXJpIDxsYWtzaG1pc0B4aWxpbnguY29tPg0KPiBD YzogTGludXMgV2FsbGVpaiA8bGludXMud2FsbGVpakBsaW5hcm8ub3JnPjsgUm9iIEhlcnJpbmcN Cj4gPHJvYmgrZHRAa2VybmVsLm9yZz47IE1pY2hhbCBTaW1layA8bWljaGFsc0B4aWxpbnguY29t PjsgR3JlZyBLcm9haC0NCj4gSGFydG1hbiA8Z3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5vcmc+OyBs aW51eC1hcm0gTWFpbGluZyBMaXN0IDxsaW51eC1hcm0tDQo+IGtlcm5lbEBsaXN0cy5pbmZyYWRl YWQub3JnPjsgTGludXggS2VybmVsIE1haWxpbmcgTGlzdCA8bGludXgtDQo+IGtlcm5lbEB2Z2Vy Lmtlcm5lbC5vcmc+OyBkZXZpY2V0cmVlIDxkZXZpY2V0cmVlQHZnZXIua2VybmVsLm9yZz47IG9w ZW4NCj4gbGlzdDpHUElPIFNVQlNZU1RFTSA8bGludXgtZ3Bpb0B2Z2VyLmtlcm5lbC5vcmc+OyBn aXQgPGdpdEB4aWxpbnguY29tPjsNCj4gc2Fpa3Jpc2huYTEyNDY4QGdtYWlsLmNvbQ0KPiBTdWJq ZWN0OiBSZTogW1BBVENIIHY0IDMvM10gcGluY3RybDogQWRkIFhpbGlueCBaeW5xTVAgcGluY3Ry bCBkcml2ZXIgc3VwcG9ydA0KPiANCj4gT24gV2VkLCBNYXIgMTcsIDIwMjEgYXQgMTA6MjcgQU0g U2FpIEtyaXNobmEgUG90dGh1cmkNCj4gPGxha3NobWkuc2FpLmtyaXNobmEucG90dGh1cmlAeGls aW54LmNvbT4gd3JvdGU6DQo+ID4NCj4gPiBBZGRpbmcgcGluY3RybCBkcml2ZXIgZm9yIFhpbGlu eCBaeW5xTVAgcGxhdGZvcm0uDQo+ID4gVGhpcyBkcml2ZXIgcXVlcmllcyBwaW4gaW5mb3JtYXRp b24gZnJvbSBmaXJtd2FyZSBhbmQgcmVnaXN0ZXJzIHBpbg0KPiA+IGNvbnRyb2wgYWNjb3JkaW5n bHkuDQo+ID4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBTYWkgS3Jpc2huYSBQb3R0aHVyaQ0KPiA+IDxs YWtzaG1pLnNhaS5rcmlzaG5hLnBvdHRodXJpQHhpbGlueC5jb20+DQo+ID4gLS0tDQo+ID4gIGRy aXZlcnMvcGluY3RybC9LY29uZmlnICAgICAgICAgIHwgICAxMyArDQo+ID4gIGRyaXZlcnMvcGlu Y3RybC9NYWtlZmlsZSAgICAgICAgIHwgICAgMSArDQo+ID4gIGRyaXZlcnMvcGluY3RybC9waW5j dHJsLXp5bnFtcC5jIHwgMTAzMA0KPiA+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0K PiA+ICAzIGZpbGVzIGNoYW5nZWQsIDEwNDQgaW5zZXJ0aW9ucygrKQ0KPiA+ICBjcmVhdGUgbW9k ZSAxMDA2NDQgZHJpdmVycy9waW5jdHJsL3BpbmN0cmwtenlucW1wLmMNCj4gPg0KPiA+IGRpZmYg LS1naXQgYS9kcml2ZXJzL3BpbmN0cmwvS2NvbmZpZyBiL2RyaXZlcnMvcGluY3RybC9LY29uZmln IGluZGV4DQo+ID4gODE1MDk1MzI2ZTJkLi4yNWQzYzcyMDg5NzUgMTAwNjQ0DQo+ID4gLS0tIGEv ZHJpdmVycy9waW5jdHJsL0tjb25maWcNCj4gPiArKysgYi9kcml2ZXJzL3BpbmN0cmwvS2NvbmZp Zw0KPiA+IEBAIC0zNDEsNiArMzQxLDE5IEBAIGNvbmZpZyBQSU5DVFJMX1pZTlENCj4gPiAgICAg ICAgIGhlbHANCj4gPiAgICAgICAgICAgVGhpcyBzZWxlY3RzIHRoZSBwaW5jdHJsIGRyaXZlciBm b3IgWGlsaW54IFp5bnEuDQo+ID4NCj4gPiArY29uZmlnIFBJTkNUUkxfWllOUU1QDQo+ID4gKyAg ICAgICBib29sICJQaW5jdHJsIGRyaXZlciBmb3IgWGlsaW54IFp5bnFNUCINCj4gDQo+IFdoeSBu b3QgbW9kdWxlPw0KQXMgbW9zdCBvZiB0aGUgWGlsaW54IGRyaXZlcnMgZGVwZW5kaW5nIG9uIHRo ZSBwaW4gY29udHJvbGxlciBkcml2ZXIgZm9yDQpjb25maWd1cmluZyB0aGUgTUlPIHBpbnMsIHdl IGFyZSBub3Qgc3VwcG9ydGluZyB0byBidWlsZCB0aGlzIGRyaXZlciBhcw0KYSBtb2R1bGUuIA0K PiANCj4gPiArICAgICAgIGRlcGVuZHMgb24gQVJDSF9aWU5RTVANCj4gPiArICAgICAgIHNlbGVj dCBQSU5NVVgNCj4gPiArICAgICAgIHNlbGVjdCBHRU5FUklDX1BJTkNPTkYNCj4gPiArICAgICAg IGhlbHANCj4gPiArICAgICAgICAgVGhpcyBzZWxlY3RzIHRoZSBwaW5jdHJsIGRyaXZlciBmb3Ig WGlsaW54IFp5bnFNUCBwbGF0Zm9ybS4NCj4gPiArICAgICAgICAgVGhpcyBkcml2ZXIgd2lsbCBx dWVyeSB0aGUgcGluIGluZm9ybWF0aW9uIGZyb20gdGhlIGZpcm13YXJlDQo+ID4gKyAgICAgICAg IGFuZCBhbGxvdyBjb25maWd1cmluZyB0aGUgcGlucy4NCj4gPiArICAgICAgICAgQ29uZmlndXJh dGlvbiBjYW4gaW5jbHVkZSB0aGUgbXV4IGZ1bmN0aW9uIHRvIHNlbGVjdCBvbiB0aG9zZQ0KPiA+ ICsgICAgICAgICBwaW4ocykvZ3JvdXAocyksIGFuZCB2YXJpb3VzIHBpbiBjb25maWd1cmF0aW9u IHBhcmFtZXRlcnMNCj4gPiArICAgICAgICAgc3VjaCBhcyBwdWxsLXVwLCBzbGV3IHJhdGUsIGV0 Yy4NCj4gPiArDQo+ID4gIGNvbmZpZyBQSU5DVFJMX0lOR0VOSUMNCj4gPiAgICAgICAgIGJvb2wg IlBpbmN0cmwgZHJpdmVyIGZvciB0aGUgSW5nZW5pYyBKWjQ3eHggU29DcyINCj4gPiAgICAgICAg IGRlZmF1bHQgTUFDSF9JTkdFTklDDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGluY3RybC9N YWtlZmlsZSBiL2RyaXZlcnMvcGluY3RybC9NYWtlZmlsZSBpbmRleA0KPiA+IGY1MzkzM2IyZmYw Mi4uN2UwNTg3MzlmMGQ1IDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvcGluY3RybC9NYWtlZmls ZQ0KPiA+ICsrKyBiL2RyaXZlcnMvcGluY3RybC9NYWtlZmlsZQ0KPiA+IEBAIC00Myw2ICs0Myw3 IEBAIG9iai0kKENPTkZJR19QSU5DVFJMX1RCMTBYKSAgICs9IHBpbmN0cmwtdGIxMHgubw0KPiA+ ICBvYmotJChDT05GSUdfUElOQ1RSTF9TVCkgICAgICAgKz0gcGluY3RybC1zdC5vDQo+ID4gIG9i ai0kKENPTkZJR19QSU5DVFJMX1NUTUZYKSAgICArPSBwaW5jdHJsLXN0bWZ4Lm8NCj4gPiAgb2Jq LSQoQ09ORklHX1BJTkNUUkxfWllOUSkgICAgICs9IHBpbmN0cmwtenlucS5vDQo+ID4gK29iai0k KENPTkZJR19QSU5DVFJMX1pZTlFNUCkgICAgKz0gcGluY3RybC16eW5xbXAubw0KPiA+ICBvYmot JChDT05GSUdfUElOQ1RSTF9JTkdFTklDKSAgKz0gcGluY3RybC1pbmdlbmljLm8NCj4gPiAgb2Jq LSQoQ09ORklHX1BJTkNUUkxfUks4MDUpICAgICs9IHBpbmN0cmwtcms4MDUubw0KPiA+ICBvYmot JChDT05GSUdfUElOQ1RSTF9PQ0VMT1QpICAgKz0gcGluY3RybC1vY2Vsb3Qubw0KPiA+IGRpZmYg LS1naXQgYS9kcml2ZXJzL3BpbmN0cmwvcGluY3RybC16eW5xbXAuYw0KPiA+IGIvZHJpdmVycy9w aW5jdHJsL3BpbmN0cmwtenlucW1wLmMNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGlu ZGV4IDAwMDAwMDAwMDAwMC4uNjNlZGRlNDAwZTg1DQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsr KyBiL2RyaXZlcnMvcGluY3RybC9waW5jdHJsLXp5bnFtcC5jDQo+ID4gQEAgLTAsMCArMSwxMDMw IEBADQo+ID4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wDQo+ID4gKy8qDQo+ ID4gKyAqIFp5bnFNUCBwaW4gY29udHJvbGxlcg0KPiA+ICsgKg0KPiA+ICsgKiAgQ29weXJpZ2h0 IChDKSAyMDIwIFhpbGlueCwgSW5jLg0KPiA+ICsgKg0KPiA+ICsgKiAgU2FpIEtyaXNobmEgUG90 dGh1cmkgPGxha3NobWkuc2FpLmtyaXNobmEucG90dGh1cmlAeGlsaW54LmNvbT4NCj4gPiArICog IFJhamFuIFZhamEgPHJhamFudkB4aWxpbnguY29tPg0KPiA+ICsgKi8NCj4gPiArDQo+ID4gKyNp bmNsdWRlIDxsaW51eC9pbml0Lmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9vZl9hZGRyZXNzLmg+ DQo+IA0KPiA+ICsjaW5jbHVkZSA8bGludXgvcGluY3RybC9waW5tdXguaD4NCj4gPiArI2luY2x1 ZGUgPGxpbnV4L3BpbmN0cmwvcGluY29uZi1nZW5lcmljLmg+DQo+IA0KPiBDYW4geW91IG1vdmUg dGhpcyBncm91cCBvZiBoZWFkZXJzIGFmdGVyIGxpbnV4LyogPw0KPiANCj4gPiArI2luY2x1ZGUg PGR0LWJpbmRpbmdzL3BpbmN0cmwvcGluY3RybC16eW5xbXAuaD4NCj4gDQo+IENhbiBpdCBiZSBt b3ZlZCBvdXRzaWRlIG9mIHRoZXNlIGhlYWRlcnMNCj4gDQo+ID4gKyNpbmNsdWRlIDxsaW51eC9w bGF0Zm9ybV9kZXZpY2UuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L2Zpcm13YXJlL3hsbngtenlu cW1wLmg+DQo+IA0KPiBPcmRlcmluZyAoZm9yIGFsbCBncm91cHMgb2YgaGVhZGVycyk/DQpPaywg SSB3aWxsIG9yZGVyIHRoZSBoZWFkZXJzIGluIHRoZSBiZWxvdyBvcmRlcg0KI2luY2x1ZGUgPGxp bnV4Lyo+DQojaW5jbHVkZSA8bGludXgvZmlybXdhcmUveGxueC16eW5xbXAuaD4NCiNpbmNsdWRl IDxsaW51eC9waW5jdHJsLyo+DQojaW5jbHVkZSA8ZHQtYmluZGluZ3MvcGluY3RybC9waW5jdHJs LXp5bnFtcC5oPg0KPiANCj4gPiArI2luY2x1ZGUgImNvcmUuaCINCj4gPiArI2luY2x1ZGUgInBp bmN0cmwtdXRpbHMuaCINCj4gPiArDQo+ID4gKyNkZWZpbmUgWllOUU1QX1BJTl9QUkVGSVggICAg ICAgICAgICAgICAgICAgICAgIk1JTyINCj4gPiArI2RlZmluZSBQSU5DVFJMX0dFVF9GVU5DX05B TUVfUkVTUF9MRU4gICAgICAgICAxNg0KPiA+ICsjZGVmaW5lIE1BWF9GVU5DX05BTUVfTEVOICAg ICAgICAgICAgICAgICAgICAgIDE2DQo+ID4gKyNkZWZpbmUgTUFYX0dST1VQX1BJTiAgICAgICAg ICAgICAgICAgICAgICAgICAgNTANCj4gPiArI2RlZmluZSBFTkRfT0ZfRlVOQ1RJT05TICAgICAg ICAgICAgICAgICAgICAgICAiRU5EX09GX0ZVTkNUSU9OUyINCj4gPiArI2RlZmluZSBOVU1fR1JP VVBTX1BFUl9SRVNQICAgICAgICAgICAgICAgICAgICA2DQo+ID4gKw0KPiA+ICsjZGVmaW5lIFBJ TkNUUkxfR0VUX0ZVTkNfR1JPVVBTX1JFU1BfTEVOICAgICAgIDEyDQo+ID4gKyNkZWZpbmUgUElO Q1RSTF9HRVRfUElOX0dST1VQU19SRVNQX0xFTiAgICAgICAgICAgICAgICAxMg0KPiA+ICsjZGVm aW5lIE5BX0dST1VQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xDQo+ID4gKyNkZWZp bmUgUkVTRVJWRURfR1JPVVAgICAgICAgICAgICAgICAgICAgICAgICAgLTINCj4gPiArDQo+ID4g KyNkZWZpbmUgRFJJVkVfU1RSRU5HVEhfMk1BICAgICAyDQo+ID4gKyNkZWZpbmUgRFJJVkVfU1RS RU5HVEhfNE1BICAgICA0DQo+ID4gKyNkZWZpbmUgRFJJVkVfU1RSRU5HVEhfOE1BICAgICA4DQo+ ID4gKyNkZWZpbmUgRFJJVkVfU1RSRU5HVEhfMTJNQSAgICAxMg0KPiA+ICsNCj4gPiArLyoqDQo+ ID4gKyAqIHN0cnVjdCB6eW5xbXBfcG11eF9mdW5jdGlvbiAtIGEgcGlubXV4IGZ1bmN0aW9uDQo+ ID4gKyAqIEBuYW1lOiAgICAgIE5hbWUgb2YgdGhlIHBpbm11eCBmdW5jdGlvbg0KPiA+ICsgKiBA Z3JvdXBzOiAgICBMaXN0IG9mIHBpbmdyb3VwcyBmb3IgdGhpcyBmdW5jdGlvbg0KPiA+ICsgKiBA bmdyb3VwczogICBOdW1iZXIgb2YgZW50cmllcyBpbiBAZ3JvdXBzDQo+IA0KPiA+ICsgKiBAbm9k ZTpgICAgICBGaXJtd2FyZSBub2RlIG1hdGNoaW5nIHdpdGggZm9yIGZ1bmN0aW9uDQo+IA0KPiBU eXBvDQo+IA0KPiA+ICsgKg0KPiA+ICsgKiBUaGlzIHN0cnVjdHVyZSBob2xkcyBpbmZvcm1hdGlv biBhYm91dCBwaW4gY29udHJvbCBmdW5jdGlvbg0KPiA+ICsgKiBhbmQgZnVuY3Rpb24gZ3JvdXAg bmFtZXMgc3VwcG9ydGluZyB0aGF0IGZ1bmN0aW9uLg0KPiA+ICsgKi8NCj4gPiArc3RydWN0IHp5 bnFtcF9wbXV4X2Z1bmN0aW9uIHsNCj4gPiArICAgICAgIGNoYXIgbmFtZVtNQVhfRlVOQ19OQU1F X0xFTl07DQo+ID4gKyAgICAgICBjb25zdCBjaGFyICogY29uc3QgKmdyb3VwczsNCj4gPiArICAg ICAgIHVuc2lnbmVkIGludCBuZ3JvdXBzOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArLyoqDQo+ID4g KyAqIHN0cnVjdCB6eW5xbXBfcGluY3RybCAtIGRyaXZlciBkYXRhDQo+ID4gKyAqIEBwY3RybDog ICAgIFBpbmN0cmwgZGV2aWNlDQo+IA0KPiBQaW4gY29udHJvbA0KPiANCj4gPiArICogQGdyb3Vw czogICAgUGluZ3JvdXBzDQo+IA0KPiBQaW4gZ3JvdXBzDQo+IA0KPiA+ICsgKiBAbmdyb3Vwczog ICBOdW1iZXIgb2YgQGdyb3Vwcw0KPiA+ICsgKiBAZnVuY3M6ICAgICBQaW5tdXggZnVuY3Rpb25z DQo+IA0KPiBQaW4gbXV4IGZ1bmN0aW9ucw0KSSB3aWxsIGZpeCBhbGwgb2YgdGhlbSBpbiB0aGUg bmV4dCB2ZXJzaW9uLg0KPiANCj4gPiArICogQG5mdW5jczogICAgTnVtYmVyIG9mIEBmdW5jcw0K PiA+ICsgKg0KPiA+ICsgKiBUaGlzIHN0cnVjdCBpcyBzdG9yZWQgYXMgZHJpdmVyIGRhdGEgYW5k IHVzZWQgdG8gcmV0cmlldmUNCj4gPiArICogaW5mb3JtYXRpb24gcmVnYXJkaW5nIHBpbiBjb250 cm9sIGZ1bmN0aW9ucywgZ3JvdXBzIGFuZA0KPiA+ICsgKiBncm91cCBwaW5zLg0KPiA+ICsgKi8N Cj4gPiArc3RydWN0IHp5bnFtcF9waW5jdHJsIHsNCj4gPiArICAgICAgIHN0cnVjdCBwaW5jdHJs X2RldiAqcGN0cmw7DQo+ID4gKyAgICAgICBjb25zdCBzdHJ1Y3QgenlucW1wX3BjdHJsX2dyb3Vw ICpncm91cHM7DQo+ID4gKyAgICAgICB1bnNpZ25lZCBpbnQgbmdyb3VwczsNCj4gPiArICAgICAg IGNvbnN0IHN0cnVjdCB6eW5xbXBfcG11eF9mdW5jdGlvbiAqZnVuY3M7DQo+ID4gKyAgICAgICB1 bnNpZ25lZCBpbnQgbmZ1bmNzOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIHN0 cnVjdCB6eW5xbXBfcGN0cmxfZ3JvdXAgLSBQaW4gY29udHJvbCBncm91cCBpbmZvDQo+ID4gKyAq IEBuYW1lOiAgICAgIEdyb3VwIG5hbWUNCj4gPiArICogQHBpbnM6ICAgICAgR3JvdXAgcGluIG51 bWJlcnMNCj4gPiArICogQG5waW5zOiAgICAgTnVtYmVyIG9mIHBpbnMgaW4gZ3JvdXANCj4gPiAr ICovDQo+ID4gK3N0cnVjdCB6eW5xbXBfcGN0cmxfZ3JvdXAgew0KPiA+ICsgICAgICAgY29uc3Qg Y2hhciAqbmFtZTsNCj4gPiArICAgICAgIHVuc2lnbmVkIGludCBwaW5zW01BWF9HUk9VUF9QSU5d Ow0KPiA+ICsgICAgICAgdW5zaWduZWQgaW50IG5waW5zOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiAr LyoqDQo+ID4gKyAqIGVudW0genlucW1wX3Bpbl9jb25maWdfcGFyYW0gLSBwb3NzaWJsZSBwaW4g Y29uZmlndXJhdGlvbg0KPiBwYXJhbWV0ZXJzDQo+ID4gKyAqIEBQSU5fQ09ORklHX0lPU1RBTkRB UkQ6ICAgICBpZiB0aGUgcGluIGNhbiBzZWxlY3QgYW4gSU8gc3RhbmRhcmQsDQo+ID4gKyAqICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYXJndW1lbnQgdG8gdGhpcyBwYXJhbWV0ZXIg KG9uIGENCj4gPiArICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbSBmb3JtYXQp IHRlbGxzIHRoZSBkcml2ZXIgd2hpY2gNCj4gPiArICogICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGFsdGVybmF0aXZlIElPIHN0YW5kYXJkIHRvIHVzZQ0KPiA+ICsgKi8NCj4gPiArZW51bSB6 eW5xbXBfcGluX2NvbmZpZ19wYXJhbSB7DQo+ID4gKyAgICAgICBQSU5fQ09ORklHX0lPU1RBTkRB UkQgPSBQSU5fQ09ORklHX0VORCArIDEsIH07DQo+IA0KPiBJJ20gbG9zdCBoZXJlLiBXaGF0IGlz IElPIHN0YW5kYXJkIGV4YWN0bHk/IFdoeSBpdCBjYW4ndCBiZSBpbiBnZW5lcmljDQo+IGhlYWRl cnM/DQpJdCByZXByZXNlbnRzIExWQ01PUyAzLjMgdm9sdHMvIExWQ01PUyAxLjggdm9sdHMuDQpT aW5jZSB0aGlzIGlzIHNwZWNpZmljIHRvIFhpbGlueCBaeW5xTVAgcGxhdGZvcm0sIGNvbnNpZGVy ZWQgdG8gYmUgYWRkZWQgaW4NCnRoZSBkcml2ZXIgZmlsZS4NCj4gDQo+ID4gK3N0YXRpYyBjb25z dCBzdHJ1Y3QgcGluY29uZl9nZW5lcmljX3BhcmFtcyB6eW5xbXBfZHRfcGFyYW1zW10gPSB7DQo+ ID4gKyAgICAgICB7ImlvLXN0YW5kYXJkIiwgUElOX0NPTkZJR19JT1NUQU5EQVJELA0KPiBJT19T VEFOREFSRF9MVkNNT1MxOH0sDQo+ID4gK307DQo+ID4gKw0KPiA+ICsjaWZkZWYgQ09ORklHX0RF QlVHX0ZTDQo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QNCj4gPiArcGluX2NvbmZpZ19pdGVtIHp5 bnFtcF9jb25mX2l0ZW1zW0FSUkFZX1NJWkUoenlucW1wX2R0X3BhcmFtcyldID0NCj4gew0KPiA+ ICsgICAgICAgUENPTkZEVU1QKFBJTl9DT05GSUdfSU9TVEFOREFSRCwgImlvLXN0YW5kYXJkIiwg TlVMTCwgdHJ1ZSksDQo+ID4gK307ICNlbmRpZg0KPiA+ICsNCj4gPiArc3RhdGljIHN0cnVjdCBw aW5jdHJsX2Rlc2MgenlucW1wX2Rlc2M7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogenlucW1w X3BjdHJsX2dldF9ncm91cHNfY291bnQoKSAtIGdldCBncm91cCBjb3VudA0KPiA+ICsgKiBAcGN0 bGRldjogICBQaW5jb250cm9sIGRldmljZSBwb2ludGVyLg0KPiA+ICsgKg0KPiA+ICsgKiBHZXQg dG90YWwgZ3JvdXBzIGNvdW50Lg0KPiA+ICsgKg0KPiA+ICsgKiBSZXR1cm46IGdyb3VwIGNvdW50 Lg0KPiA+ICsgKi8NCj4gPiArc3RhdGljIGludCB6eW5xbXBfcGN0cmxfZ2V0X2dyb3Vwc19jb3Vu dChzdHJ1Y3QgcGluY3RybF9kZXYgKnBjdGxkZXYpDQo+ID4gK3sNCj4gPiArICAgICAgIHN0cnVj dCB6eW5xbXBfcGluY3RybCAqcGN0cmwgPQ0KPiA+ICtwaW5jdHJsX2Rldl9nZXRfZHJ2ZGF0YShw Y3RsZGV2KTsNCj4gPiArDQo+ID4gKyAgICAgICByZXR1cm4gcGN0cmwtPm5ncm91cHM7DQo+ID4g K30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiB6eW5xbXBfcGN0cmxfZ2V0X2dyb3VwX25hbWUo KSAtIGdldCBncm91cCBuYW1lDQo+ID4gKyAqIEBwY3RsZGV2OiAgIFBpbmNvbnRyb2wgZGV2aWNl IHBvaW50ZXIuDQo+ID4gKyAqIEBzZWxlY3RvcjogIEdyb3VwIElELg0KPiANCj4gPiArICoNCj4g PiArICogR2V0IGdvcnVwJ3MgbmFtZS4NCj4gPiArICoNCj4gPiArICogUmV0dXJuOiBncm91cCBu YW1lLg0KPiANCj4gSXNuJ3QgdG9vIG11Y2ggZHVwbGljYXRpb24gd2l0aG91dCBhbnkgYWRkZWQg dmFsdWUgZm9yIHRoZSByZWFkZXI/DQpJIHdpbGwgcmVtb3ZlIHRoZSBrZXJuZWwgZG9jIGZvciB0 aGUgb2J2aW91cyBvbmVzICBpbiB0aGUgbmV4dCBzZXJpZXMuDQo+IA0KPiA+ICsgKi8NCj4gPiAr c3RhdGljIGNvbnN0IGNoYXIgKnp5bnFtcF9wY3RybF9nZXRfZ3JvdXBfbmFtZShzdHJ1Y3QgcGlu Y3RybF9kZXYNCj4gKnBjdGxkZXYsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc2VsZWN0b3IpDQo+ID4gK3sNCj4gPiArICAg ICAgIHN0cnVjdCB6eW5xbXBfcGluY3RybCAqcGN0cmwgPQ0KPiA+ICtwaW5jdHJsX2Rldl9nZXRf ZHJ2ZGF0YShwY3RsZGV2KTsNCj4gPiArDQo+ID4gKyAgICAgICByZXR1cm4gcGN0cmwtPmdyb3Vw c1tzZWxlY3Rvcl0ubmFtZTsgfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIHp5bnFtcF9wY3Ry bF9nZXRfZ3JvdXBfcGlucygpIC0gZ2V0IGdyb3VwIHBpbnMNCj4gPiArICogQHBjdGxkZXY6ICAg UGluY29udHJvbCBkZXZpY2UgcG9pbnRlci4NCj4gPiArICogQHNlbGVjdG9yOiAgR3JvdXAgSUQu DQo+ID4gKyAqIEBwaW5zOiAgICAgIFBpbiBudW1iZXJzLg0KPiA+ICsgKiBAbnBpbnM6ICAgICBO dW1iZXIgb2YgcGlucyBpbiBncm91cC4NCj4gPiArICoNCj4gPiArICogR2V0IGdvcnVwJ3MgcGlu IGNvdW50IGFuZCBwaW4gbnVtYmVyLg0KPiANCj4gPiArICogUmV0dXJuOiBTdWNjZXNzLg0KPiAN Cj4gQ2xlYW4gdXAgYWxsIHlvdXIga2VybmVsIGRvY3MgZnJvbSBub2lzZSBsaWtlIHRoaXMuDQpJ IHdpbGwgcmVtb3ZlIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgb2J2aW91cyBvbmVzIGluIHRo ZSBuZXh0DQpzZXJpZXMuDQo+IA0KPiA+ICsgKi8NCj4gPiArc3RhdGljIGludCB6eW5xbXBfcGN0 cmxfZ2V0X2dyb3VwX3BpbnMoc3RydWN0IHBpbmN0cmxfZGV2ICpwY3RsZGV2LA0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzZWxlY3RvciwN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25l ZCBpbnQgKipwaW5zLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVuc2lnbmVkIGludCAqbnBpbnMpIHsNCj4gPiArICAgICAgIHN0cnVjdCB6eW5xbXBfcGluY3Ry bCAqcGN0cmwgPQ0KPiA+ICtwaW5jdHJsX2Rldl9nZXRfZHJ2ZGF0YShwY3RsZGV2KTsNCj4gPiAr DQo+ID4gKyAgICAgICAqcGlucyA9IHBjdHJsLT5ncm91cHNbc2VsZWN0b3JdLnBpbnM7DQo+ID4g KyAgICAgICAqbnBpbnMgPSBwY3RybC0+Z3JvdXBzW3NlbGVjdG9yXS5ucGluczsNCj4gPiArDQo+ ID4gKyAgICAgICByZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGNvbnN0IHN0 cnVjdCBwaW5jdHJsX29wcyB6eW5xbXBfcGN0cmxfb3BzID0gew0KPiA+ICsgICAgICAgLmdldF9n cm91cHNfY291bnQgPSB6eW5xbXBfcGN0cmxfZ2V0X2dyb3Vwc19jb3VudCwNCj4gPiArICAgICAg IC5nZXRfZ3JvdXBfbmFtZSA9IHp5bnFtcF9wY3RybF9nZXRfZ3JvdXBfbmFtZSwNCj4gPiArICAg ICAgIC5nZXRfZ3JvdXBfcGlucyA9IHp5bnFtcF9wY3RybF9nZXRfZ3JvdXBfcGlucywNCj4gPiAr ICAgICAgIC5kdF9ub2RlX3RvX21hcCA9IHBpbmNvbmZfZ2VuZXJpY19kdF9ub2RlX3RvX21hcF9h bGwsDQo+ID4gKyAgICAgICAuZHRfZnJlZV9tYXAgPSBwaW5jdHJsX3V0aWxzX2ZyZWVfbWFwLCB9 Ow0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIHp5bnFtcF9waW5tdXhfcmVxdWVzdF9waW4oKSAt IFJlcXVlc3QgYSBwaW4gZm9yIG11eGluZw0KPiA+ICsgKiBAcGN0bGRldjogICBQaW5jb250cm9s IGRldmljZSBwb2ludGVyLg0KPiA+ICsgKiBAcGluOiAgICAgICBQaW4gbnVtYmVyLg0KPiA+ICsg Kg0KPiA+ICsgKiBSZXF1ZXN0IGEgcGluIGZyb20gZmlybXdhcmUgZm9yIG11eGluZy4NCj4gPiAr ICoNCj4gPiArICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MgZWxzZSBlcnJvciBjb2RlLg0KPiA+ICsg Ki8NCj4gPiArc3RhdGljIGludCB6eW5xbXBfcGlubXV4X3JlcXVlc3RfcGluKHN0cnVjdCBwaW5j dHJsX2RldiAqcGN0bGRldiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdW5zaWduZWQgaW50IHBpbikgew0KPiA+ICsgICAgICAgaW50IHJldDsNCj4gPiArDQo+ID4g KyAgICAgICByZXQgPSB6eW5xbXBfcG1fcGluY3RybF9yZXF1ZXN0KHBpbik7DQo+ID4gKyAgICAg ICBpZiAocmV0KSB7DQo+ID4gKyAgICAgICAgICAgICAgIGRldl9lcnIocGN0bGRldi0+ZGV2LCAi cmVxdWVzdCBmYWlsZWQgZm9yIHBpbiAldVxuIiwNCj4gPiArIHBpbik7DQo+IA0KPiA+ICsgICAg ICAgICAgICAgICByZXR1cm4gLUVJTzsNCj4gDQo+IFdoeSBzaGFkb3dpbmcgZXJyb3IgY29kZT8g U2luY2UgaXQncyB0aGUgb25seSBwb3NzaWJsZSBlcnJvciwgd2h5IGlzIGl0IG5vdA0KPiByZWZs ZWN0ZWQgaW4gdGhlIGtlcm5lbCBkb2M/DQpJIHdpbGwgdXBkYXRlIHRoZSBrZXJuZWwgZG9jIHdp dGggdGhlIGVycm9yIHZhbHVlIGZvciBzdWNoIGNhc2VzLg0KPiANCj4gPiArICAgICAgIH0NCj4g PiArDQo+ID4gKyAgICAgICByZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4g KyAqIHp5bnFtcF9wbXV4X2dldF9mdW5jdGlvbnNfY291bnQoKSAtIGdldCBudW1iZXIgb2YgZnVu Y3Rpb25zDQo+ID4gKyAqIEBwY3RsZGV2OiAgIFBpbmNvbnRyb2wgZGV2aWNlIHBvaW50ZXIuDQo+ ID4gKyAqDQo+ID4gKyAqIEdldCB0b3RhbCBmdW5jdGlvbiBjb3VudC4NCj4gPiArICoNCj4gPiAr ICogUmV0dXJuOiBmdW5jdGlvbiBjb3VudC4NCj4gPiArICovDQo+ID4gK3N0YXRpYyBpbnQgenlu cW1wX3BtdXhfZ2V0X2Z1bmN0aW9uc19jb3VudChzdHJ1Y3QgcGluY3RybF9kZXYNCj4gPiArKnBj dGxkZXYpIHsNCj4gPiArICAgICAgIHN0cnVjdCB6eW5xbXBfcGluY3RybCAqcGN0cmwgPQ0KPiA+ ICtwaW5jdHJsX2Rldl9nZXRfZHJ2ZGF0YShwY3RsZGV2KTsNCj4gPiArDQo+ID4gKyAgICAgICBy ZXR1cm4gcGN0cmwtPm5mdW5jczsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIHp5 bnFtcF9wbXV4X2dldF9mdW5jdGlvbl9uYW1lKCkgLSBnZXQgZnVuY3Rpb24gbmFtZQ0KPiA+ICsg KiBAcGN0bGRldjogICBQaW5jb250cm9sIGRldmljZSBwb2ludGVyLg0KPiA+ICsgKiBAc2VsZWN0 b3I6ICBGdW5jdGlvbiBJRC4NCj4gPiArICoNCj4gPiArICogR2V0IGZ1bmN0aW9uJ3MgbmFtZS4N Cj4gPiArICoNCj4gPiArICogUmV0dXJuOiBmdW5jdGlvbiBuYW1lLg0KPiA+ICsgKi8NCj4gPiAr c3RhdGljIGNvbnN0IGNoYXIgKnp5bnFtcF9wbXV4X2dldF9mdW5jdGlvbl9uYW1lKHN0cnVjdCBw aW5jdHJsX2Rldg0KPiAqcGN0bGRldiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50DQo+ID4gK3NlbGVjdG9yKSB7DQo+ID4g KyAgICAgICBzdHJ1Y3QgenlucW1wX3BpbmN0cmwgKnBjdHJsID0NCj4gPiArcGluY3RybF9kZXZf Z2V0X2RydmRhdGEocGN0bGRldik7DQo+ID4gKw0KPiA+ICsgICAgICAgcmV0dXJuIHBjdHJsLT5m dW5jc1tzZWxlY3Rvcl0ubmFtZTsgfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIHp5bnFtcF9w bXV4X2dldF9mdW5jdGlvbl9ncm91cHMoKSAtIEdldCBncm91cHMgZm9yIHRoZSBmdW5jdGlvbg0K PiA+ICsgKiBAcGN0bGRldjogICBQaW5jb250cm9sIGRldmljZSBwb2ludGVyLg0KPiA+ICsgKiBA c2VsZWN0b3I6ICBGdW5jdGlvbiBJRA0KPiA+ICsgKiBAZ3JvdXBzOiAgICBHcm91cCBuYW1lcy4N Cj4gPiArICogQG51bV9ncm91cHM6ICAgICAgICBOdW1iZXIgb2YgZnVuY3Rpb24gZ3JvdXBzLg0K PiA+ICsgKg0KPiA+ICsgKiBHZXQgZnVuY3Rpb24ncyBncm91cCBjb3VudCBhbmQgZ3JvdXAgbmFt ZXMuDQo+ID4gKyAqDQo+ID4gKyAqIFJldHVybjogU3VjY2Vzcy4NCj4gPiArICovDQo+ID4gK3N0 YXRpYyBpbnQgenlucW1wX3BtdXhfZ2V0X2Z1bmN0aW9uX2dyb3VwcyhzdHJ1Y3QgcGluY3RybF9k ZXYgKnBjdGxkZXYsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVuc2lnbmVkIGludCBzZWxlY3RvciwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqIGNvbnN0ICoqZ3JvdXBzLA0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCAqIGNvbnN0DQo+ ID4gK251bV9ncm91cHMpIHsNCj4gPiArICAgICAgIHN0cnVjdCB6eW5xbXBfcGluY3RybCAqcGN0 cmwgPQ0KPiA+ICtwaW5jdHJsX2Rldl9nZXRfZHJ2ZGF0YShwY3RsZGV2KTsNCj4gPiArDQo+ID4g KyAgICAgICAqZ3JvdXBzID0gcGN0cmwtPmZ1bmNzW3NlbGVjdG9yXS5ncm91cHM7DQo+ID4gKyAg ICAgICAqbnVtX2dyb3VwcyA9IHBjdHJsLT5mdW5jc1tzZWxlY3Rvcl0ubmdyb3VwczsNCj4gPiAr DQo+ID4gKyAgICAgICByZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAq IHp5bnFtcF9waW5tdXhfc2V0X211eCgpIC0gU2V0IHJlcXVlc3RlZCBmdW5jdGlvbiBmb3IgdGhl IGdyb3VwDQo+ID4gKyAqIEBwY3RsZGV2OiAgIFBpbmNvbnRyb2wgZGV2aWNlIHBvaW50ZXIuDQo+ ID4gKyAqIEBmdW5jdGlvbjogIEZ1bmN0aW9uIElELg0KPiA+ICsgKiBAZ3JvdXA6ICAgICBHcm91 cCBJRC4NCj4gPiArICoNCj4gPiArICogTG9vcCB0aG91Z2ggYWxsIHBpbnMgb2YgZ3JvdXAgYW5k IGNhbGwgZmlybXdhcmUgQVBJDQo+ID4gKyAqIHRvIHNldCByZXF1ZXN0ZWQgZnVuY3Rpb24gZm9y IGFsbCBwaW5zIGluIGdyb3VwLg0KPiANCj4gdGhyb3VnaA0KPiBvZiB0aGUgZ3JvdXANCj4gaW4g dGhlIGdyb3VwDQo+IA0KPiA+ICsgKg0KPiA+ICsgKiBSZXR1cm46IDAgb24gc3VjY2VzcyBlbHNl IGVycm9yIGNvZGUuDQo+ID4gKyAqLw0KPiA+ICtzdGF0aWMgaW50IHp5bnFtcF9waW5tdXhfc2V0 X211eChzdHJ1Y3QgcGluY3RybF9kZXYgKnBjdGxkZXYsDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGZ1bmN0aW9uLA0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBncm91cCkgew0KPiA+ICsgICAgICAgc3Ry dWN0IHp5bnFtcF9waW5jdHJsICpwY3RybCA9IHBpbmN0cmxfZGV2X2dldF9kcnZkYXRhKHBjdGxk ZXYpOw0KPiA+ICsgICAgICAgY29uc3Qgc3RydWN0IHp5bnFtcF9wY3RybF9ncm91cCAqcGdycCA9 ICZwY3RybC0+Z3JvdXBzW2dyb3VwXTsNCj4gPiArICAgICAgIGludCByZXQsIGk7DQo+ID4gKw0K PiA+ICsgICAgICAgZm9yIChpID0gMDsgaSA8IHBncnAtPm5waW5zOyBpKyspIHsNCj4gPiArICAg ICAgICAgICAgICAgdW5zaWduZWQgaW50IHBpbiA9IHBncnAtPnBpbnNbaV07DQo+ID4gKw0KPiA+ ICsgICAgICAgICAgICAgICByZXQgPSB6eW5xbXBfcG1fcGluY3RybF9zZXRfZnVuY3Rpb24ocGlu LCBmdW5jdGlvbik7DQo+ID4gKyAgICAgICAgICAgICAgIGlmIChyZXQpIHsNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICBkZXZfZXJyKHBjdGxkZXYtPmRldiwgInNldCBtdXggZmFpbGVkIGZv ciBwaW4gJXVcbiIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaW4pOw0K PiANCj4gPiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVJTzsNCj4gDQo+IFNhbWUg YXMgYWJvdmUuDQo+IEFuZCBhcHBsaWVzIHRvIGFsbCBzaW1pbGFyIGNhc2VzLg0KPiANCj4gPiAr ICAgICAgICAgICAgICAgfQ0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgIHJldHVy biAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogenlucW1wX3Bpbm11eF9yZWxl YXNlX3BpbigpIC0gUmVsZWFzZSBhIHBpbg0KPiA+ICsgKiBAcGN0bGRldjogICBQaW5jb250cm9s IGRldmljZSBwb2ludGVyLg0KPiA+ICsgKiBAcGluOiAgICAgICBQaW4gbnVtYmVyLg0KPiA+ICsg Kg0KPiA+ICsgKiBSZWxlYXNlIGEgcGluIGZyb20gZmlybXdhcmUuDQo+ID4gKyAqDQo+ID4gKyAq IFJldHVybjogMCBvbiBzdWNjZXNzIGVsc2UgZXJyb3IgY29kZS4NCj4gPiArICovDQo+ID4gK3N0 YXRpYyBpbnQgenlucW1wX3Bpbm11eF9yZWxlYXNlX3BpbihzdHJ1Y3QgcGluY3RybF9kZXYgKnBj dGxkZXYsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk IGludCBwaW4pIHsNCj4gPiArICAgICAgIGludCByZXQ7DQo+ID4gKw0KPiA+ICsgICAgICAgcmV0 ID0genlucW1wX3BtX3BpbmN0cmxfcmVsZWFzZShwaW4pOw0KPiA+ICsgICAgICAgaWYgKHJldCkg ew0KPiA+ICsgICAgICAgICAgICAgICBkZXZfZXJyKHBjdGxkZXYtPmRldiwgImZyZWUgcGluIGZh aWxlZCBmb3IgcGluICV1XG4iLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHBpbik7DQo+ ID4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUlPOw0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4g PiArICAgICAgIHJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgY29uc3Qgc3Ry dWN0IHBpbm11eF9vcHMgenlucW1wX3Bpbm11eF9vcHMgPSB7DQo+ID4gKyAgICAgICAucmVxdWVz dCA9IHp5bnFtcF9waW5tdXhfcmVxdWVzdF9waW4sDQo+ID4gKyAgICAgICAuZ2V0X2Z1bmN0aW9u c19jb3VudCA9IHp5bnFtcF9wbXV4X2dldF9mdW5jdGlvbnNfY291bnQsDQo+ID4gKyAgICAgICAu Z2V0X2Z1bmN0aW9uX25hbWUgPSB6eW5xbXBfcG11eF9nZXRfZnVuY3Rpb25fbmFtZSwNCj4gPiAr ICAgICAgIC5nZXRfZnVuY3Rpb25fZ3JvdXBzID0genlucW1wX3BtdXhfZ2V0X2Z1bmN0aW9uX2dy b3VwcywNCj4gPiArICAgICAgIC5zZXRfbXV4ID0genlucW1wX3Bpbm11eF9zZXRfbXV4LA0KPiA+ ICsgICAgICAgLmZyZWUgPSB6eW5xbXBfcGlubXV4X3JlbGVhc2VfcGluLCB9Ow0KPiA+ICsNCj4g PiArLyoqDQo+ID4gKyAqIHp5bnFtcF9waW5jb25mX2NmZ19nZXQoKSAtIGdldCBjb25maWcgdmFs dWUgZm9yIHRoZSBwaW4NCj4gPiArICogQHBjdGxkZXY6ICAgUGluIGNvbnRyb2wgZGV2aWNlIHBv aW50ZXIuDQo+ID4gKyAqIEBwaW46ICAgICAgIFBpbiBudW1iZXIuDQo+ID4gKyAqIEBjb25maWc6 ICAgIFZhbHVlIG9mIGNvbmZpZyBwYXJhbS4NCj4gPiArICoNCj4gPiArICogR2V0IHZhbHVlIG9m IHRoZSByZXF1ZXN0ZWQgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgZm9yIHRoZQ0KPiA+ICsgKiBn aXZlbiBwaW4uDQo+ID4gKyAqDQo+ID4gKyAqIFJldHVybjogMCBvbiBzdWNjZXNzIGVsc2UgZXJy b3IgY29kZS4NCj4gPiArICovDQo+ID4gK3N0YXRpYyBpbnQgenlucW1wX3BpbmNvbmZfY2ZnX2dl dChzdHJ1Y3QgcGluY3RybF9kZXYgKnBjdGxkZXYsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVuc2lnbmVkIGludCBwaW4sDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgKmNvbmZpZykgew0KPiA+ICsgICAgICAgaW50IHJl dDsNCj4gPiArICAgICAgIHVuc2lnbmVkIGludCBhcmcgPSAwLCBwYXJhbSA9DQo+ID4gK3BpbmNv bmZfdG9fY29uZmlnX3BhcmFtKCpjb25maWcpOw0KPiANCj4gUmV2ZXJzZWQgeG1hcyB0cmVlIG9y ZGVyPw0KPiBBc3NpZ25tZW50IG9mIGFyZyBBRkFJQ1MgaXMgcmVkdW5kYW50Lg0KSSB3aWxsIHVw ZGF0ZSB0aGlzIGluIHRoZSBuZXh0IHZlcnNpb24uDQo+IA0KPiA+ICsgICAgICAgaWYgKHBpbiA+ PSB6eW5xbXBfZGVzYy5ucGlucykNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FT1BOT1RT VVBQOw0KPiA+ICsNCj4gPiArICAgICAgIHN3aXRjaCAocGFyYW0pIHsNCj4gPiArICAgICAgIGNh c2UgUElOX0NPTkZJR19TTEVXX1JBVEU6DQo+ID4gKyAgICAgICAgICAgICAgIHBhcmFtID0gUE1f UElOQ1RSTF9DT05GSUdfU0xFV19SQVRFOw0KPiA+ICsgICAgICAgICAgICAgICByZXQgPSB6eW5x bXBfcG1fcGluY3RybF9nZXRfY29uZmlnKHBpbiwgcGFyYW0sICZhcmcpOw0KPiA+ICsgICAgICAg ICAgICAgICBicmVhazsNCj4gPiArICAgICAgIGNhc2UgUElOX0NPTkZJR19CSUFTX1BVTExfVVA6 DQo+ID4gKyAgICAgICAgICAgICAgIHBhcmFtID0gUE1fUElOQ1RSTF9DT05GSUdfUFVMTF9DVFJM Ow0KPiA+ICsgICAgICAgICAgICAgICByZXQgPSB6eW5xbXBfcG1fcGluY3RybF9nZXRfY29uZmln KHBpbiwgcGFyYW0sICZhcmcpOw0KPiA+ICsgICAgICAgICAgICAgICBpZiAoYXJnICE9IFBNX1BJ TkNUUkxfQklBU19QVUxMX1VQKQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAt RUlOVkFMOw0KPiA+ICsNCj4gPiArICAgICAgICAgICAgICAgYXJnID0gMTsNCj4gPiArICAgICAg ICAgICAgICAgYnJlYWs7DQo+ID4gKyAgICAgICBjYXNlIFBJTl9DT05GSUdfQklBU19QVUxMX0RP V046DQo+ID4gKyAgICAgICAgICAgICAgIHBhcmFtID0gUE1fUElOQ1RSTF9DT05GSUdfUFVMTF9D VFJMOw0KPiA+ICsgICAgICAgICAgICAgICByZXQgPSB6eW5xbXBfcG1fcGluY3RybF9nZXRfY29u ZmlnKHBpbiwgcGFyYW0sICZhcmcpOw0KPiA+ICsgICAgICAgICAgICAgICBpZiAoYXJnICE9IFBN X1BJTkNUUkxfQklBU19QVUxMX0RPV04pDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIC1FSU5WQUw7DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgICBhcmcgPSAxOw0KPiA+ICsg ICAgICAgICAgICAgICBicmVhazsNCj4gPiArICAgICAgIGNhc2UgUElOX0NPTkZJR19CSUFTX0RJ U0FCTEU6DQo+ID4gKyAgICAgICAgICAgICAgIHBhcmFtID0gUE1fUElOQ1RSTF9DT05GSUdfQklB U19TVEFUVVM7DQo+ID4gKyAgICAgICAgICAgICAgIHJldCA9IHp5bnFtcF9wbV9waW5jdHJsX2dl dF9jb25maWcocGluLCBwYXJhbSwgJmFyZyk7DQo+ID4gKyAgICAgICAgICAgICAgIGlmIChhcmcg IT0gUE1fUElOQ1RSTF9CSUFTX0RJU0FCTEUpDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg cmV0dXJuIC1FSU5WQUw7DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgICBhcmcgPSAxOw0KPiA+ ICsgICAgICAgICAgICAgICBicmVhazsNCj4gPiArICAgICAgIGNhc2UgUElOX0NPTkZJR19JT1NU QU5EQVJEOg0KPiA+ICsgICAgICAgICAgICAgICBwYXJhbSA9IFBNX1BJTkNUUkxfQ09ORklHX1ZP TFRBR0VfU1RBVFVTOw0KPiA+ICsgICAgICAgICAgICAgICByZXQgPSB6eW5xbXBfcG1fcGluY3Ry bF9nZXRfY29uZmlnKHBpbiwgcGFyYW0sICZhcmcpOw0KPiA+ICsgICAgICAgICAgICAgICBicmVh azsNCj4gPiArICAgICAgIGNhc2UgUElOX0NPTkZJR19JTlBVVF9TQ0hNSVRUX0VOQUJMRToNCj4g PiArICAgICAgICAgICAgICAgcGFyYW0gPSBQTV9QSU5DVFJMX0NPTkZJR19TQ0hNSVRUX0NNT1M7 DQo+ID4gKyAgICAgICAgICAgICAgIHJldCA9IHp5bnFtcF9wbV9waW5jdHJsX2dldF9jb25maWco cGluLCBwYXJhbSwgJmFyZyk7DQo+ID4gKyAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICsgICAg ICAgY2FzZSBQSU5fQ09ORklHX0RSSVZFX1NUUkVOR1RIOg0KPiA+ICsgICAgICAgICAgICAgICBw YXJhbSA9IFBNX1BJTkNUUkxfQ09ORklHX0RSSVZFX1NUUkVOR1RIOw0KPiA+ICsgICAgICAgICAg ICAgICByZXQgPSB6eW5xbXBfcG1fcGluY3RybF9nZXRfY29uZmlnKHBpbiwgcGFyYW0sICZhcmcp Ow0KPiA+ICsgICAgICAgICAgICAgICBzd2l0Y2ggKGFyZykgew0KPiA+ICsgICAgICAgICAgICAg ICBjYXNlIFBNX1BJTkNUUkxfRFJJVkVfU1RSRU5HVEhfMk1BOg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgIGFyZyA9IERSSVZFX1NUUkVOR1RIXzJNQTsNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICBicmVhazsNCj4gPiArICAgICAgICAgICAgICAgY2FzZSBQTV9QSU5DVFJMX0RSSVZF X1NUUkVOR1RIXzRNQToNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBhcmcgPSBEUklWRV9T VFJFTkdUSF80TUE7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ID4gKyAg ICAgICAgICAgICAgIGNhc2UgUE1fUElOQ1RSTF9EUklWRV9TVFJFTkdUSF84TUE6DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgYXJnID0gRFJJVkVfU1RSRU5HVEhfOE1BOw0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICsgICAgICAgICAgICAgICBjYXNlIFBNX1BJ TkNUUkxfRFJJVkVfU1RSRU5HVEhfMTJNQToNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBh cmcgPSBEUklWRV9TVFJFTkdUSF8xMk1BOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGJy ZWFrOw0KPiA+ICsgICAgICAgICAgICAgICBkZWZhdWx0Og0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgIC8qIEludmFsaWQgZHJpdmUgc3RyZW5ndGggKi8NCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICBkZXZfd2FybihwY3RsZGV2LT5kZXYsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIkludmFsaWQgZHJpdmUgc3RyZW5ndGggZm9yIHBpbiAlZFxuIiwNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaW4pOw0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiA+ICsgICAgICAgICAgICAgICB9DQo+ID4gKyAg ICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICsgICAgICAgZGVmYXVsdDoNCj4gPiArICAgICAgICAg ICAgICAgcmV0ID0gLUVPUE5PVFNVUFA7DQo+ID4gKyAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ ICsgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgIHBhcmFtID0gcGluY29uZl90b19jb25maWdf cGFyYW0oKmNvbmZpZyk7DQo+ID4gKyAgICAgICAqY29uZmlnID0gcGluY29uZl90b19jb25maWdf cGFja2VkKHBhcmFtLCBhcmcpOw0KPiA+ICsNCj4gPiArICAgICAgIHJldHVybiByZXQ7DQo+IA0K PiBUaGlzIGlzIHdyb25nLiBZb3UgaGF2ZSB0byByZXR1cm4gdGhlIGVycm9yIGNvZGVzIGRpcmVj dGx5IGFuZCBkbyBub3QgdG91Y2gNCj4gKmNvbmZpZyBhcyBsb25nIGFzIGVycm9yIGhhcHBlbnMu DQpJIHdpbGwgdXBkYXRlIHRoZSAqY29uZmlnIGFuZCBwYXJhbSB1bmRlciBpZiAoIXJldCkgY29u ZGl0aW9uLg0KPiANCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIHp5bnFtcF9waW5j b25mX2NmZ19zZXQoKSAtIFNldCByZXF1ZXN0ZWQgY29uZmlnIGZvciB0aGUgcGluDQo+ID4gKyAq IEBwY3RsZGV2OiAgICAgICAgICAgUGluY29udHJvbCBkZXZpY2UgcG9pbnRlci4NCj4gPiArICog QHBpbjogICAgICAgICAgICAgICBQaW4gbnVtYmVyLg0KPiA+ICsgKiBAY29uZmlnczogICAgICAg ICAgIENvbmZpZ3VyYXRpb24gdG8gc2V0Lg0KPiA+ICsgKiBAbnVtX2NvbmZpZ3M6ICAgICAgIE51 bWJlciBvZiBjb25maWd1cmF0aW9ucy4NCj4gPiArICoNCj4gDQo+ID4gKyAqIExvb3AgdGhvdWdo IGFsbCBjb25maWd1cmF0aW9ucyBhbmQgY2FsbCBmaXJtd2FyZSBBUEkNCj4gDQo+IHRocm91Z2gN Cj4gDQo+ID4gKyAqIHRvIHNldCByZXF1ZXN0ZWQgY29uZmlndXJhdGlvbnMgZm9yIHRoZSBwaW4u DQo+ID4gKyAqDQo+ID4gKyAqIFJldHVybjogMCBvbiBzdWNjZXNzIGVsc2UgZXJyb3IgY29kZS4N Cj4gPiArICovDQo+ID4gK3N0YXRpYyBpbnQgenlucW1wX3BpbmNvbmZfY2ZnX3NldChzdHJ1Y3Qg cGluY3RybF9kZXYgKnBjdGxkZXYsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVuc2lnbmVkIGludCBwaW4sIHVuc2lnbmVkIGxvbmcgKmNvbmZpZ3MsDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBudW1fY29uZmlncykgew0K PiA+ICsgICAgICAgaW50IGksIHJldDsNCj4gPiArDQo+ID4gKyAgICAgICBpZiAocGluID49IHp5 bnFtcF9kZXNjLm5waW5zKQ0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVPUE5PVFNVUFA7 DQo+ID4gKw0KPiA+ICsgICAgICAgZm9yIChpID0gMDsgaSA8IG51bV9jb25maWdzOyBpKyspIHsN Cj4gPiArICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHBhcmFtID0gcGluY29uZl90b19jb25m aWdfcGFyYW0oY29uZmlnc1tpXSk7DQo+ID4gKyAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBh cmcgPSBwaW5jb25mX3RvX2NvbmZpZ19hcmd1bWVudChjb25maWdzW2ldKTsNCj4gPiArICAgICAg ICAgICAgICAgdW5zaWduZWQgaW50IHZhbHVlOw0KPiA+ICsNCj4gPiArICAgICAgICAgICAgICAg c3dpdGNoIChwYXJhbSkgew0KPiA+ICsgICAgICAgICAgICAgICBjYXNlIFBJTl9DT05GSUdfU0xF V19SQVRFOg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtID0gUE1fUElOQ1RSTF9D T05GSUdfU0xFV19SQVRFOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IHp5bnFt cF9wbV9waW5jdHJsX3NldF9jb25maWcocGluLCBwYXJhbSwgYXJnKTsNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICBicmVhazsNCj4gPiArICAgICAgICAgICAgICAgY2FzZSBQSU5fQ09ORklH X0JJQVNfUFVMTF9VUDoNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBwYXJhbSA9IFBNX1BJ TkNUUkxfQ09ORklHX1BVTExfQ1RSTDsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBhcmcg PSBQTV9QSU5DVFJMX0JJQVNfUFVMTF9VUDsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBy ZXQgPSB6eW5xbXBfcG1fcGluY3RybF9zZXRfY29uZmlnKHBpbiwgcGFyYW0sIGFyZyk7DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ID4gKyAgICAgICAgICAgICAgIGNhc2Ug UElOX0NPTkZJR19CSUFTX1BVTExfRE9XTjoNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBw YXJhbSA9IFBNX1BJTkNUUkxfQ09ORklHX1BVTExfQ1RSTDsNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICBhcmcgPSBQTV9QSU5DVFJMX0JJQVNfUFVMTF9ET1dOOw0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgIHJldCA9IHp5bnFtcF9wbV9waW5jdHJsX3NldF9jb25maWcocGluLCBwYXJh bSwgYXJnKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4gPiArICAgICAg ICAgICAgICAgY2FzZSBQSU5fQ09ORklHX0JJQVNfRElTQUJMRToNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICBwYXJhbSA9IFBNX1BJTkNUUkxfQ09ORklHX0JJQVNfU1RBVFVTOw0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgIGFyZyA9IFBNX1BJTkNUUkxfQklBU19ESVNBQkxFOw0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IHp5bnFtcF9wbV9waW5jdHJsX3NldF9jb25m aWcocGluLCBwYXJhbSwgYXJnKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBicmVhazsN Cj4gPiArICAgICAgICAgICAgICAgY2FzZSBQSU5fQ09ORklHX0lOUFVUX1NDSE1JVFRfRU5BQkxF Og0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtID0gUE1fUElOQ1RSTF9DT05GSUdf U0NITUlUVF9DTU9TOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IHp5bnFtcF9w bV9waW5jdHJsX3NldF9jb25maWcocGluLCBwYXJhbSwgYXJnKTsNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICBicmVhazsNCj4gPiArICAgICAgICAgICAgICAgY2FzZSBQSU5fQ09ORklHX0RS SVZFX1NUUkVOR1RIOg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoYXJnKSB7 DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBEUklWRV9TVFJFTkdUSF8yTUE6DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IFBNX1BJTkNUUkxfRFJJ VkVfU1RSRU5HVEhfMk1BOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJl YWs7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBEUklWRV9TVFJFTkdUSF80TUE6 DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IFBNX1BJTkNUUkxf RFJJVkVfU1RSRU5HVEhfNE1BOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg YnJlYWs7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBEUklWRV9TVFJFTkdUSF84 TUE6DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IFBNX1BJTkNU UkxfRFJJVkVfU1RSRU5HVEhfOE1BOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYnJlYWs7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBEUklWRV9TVFJFTkdU SF8xMk1BOg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBQTV9Q SU5DVFJMX0RSSVZFX1NUUkVOR1RIXzEyTUE7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBicmVhazsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0Og0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSW52YWxpZCBkcml2ZSBzdHJlbmd0 aCAqLw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2X3dhcm4ocGN0bGRl di0+ZGV2LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIklu dmFsaWQgZHJpdmUgc3RyZW5ndGggZm9yIHBpbiAlZFxuIiwNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHBpbik7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICB9 DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtID0gUE1fUElOQ1RSTF9D T05GSUdfRFJJVkVfU1RSRU5HVEg7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0g enlucW1wX3BtX3BpbmN0cmxfc2V0X2NvbmZpZyhwaW4sIHBhcmFtLCB2YWx1ZSk7DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ID4gKyAgICAgICAgICAgICAgIGNhc2UgUElO X0NPTkZJR19JT1NUQU5EQVJEOg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtID0g UE1fUElOQ1RSTF9DT05GSUdfVk9MVEFHRV9TVEFUVVM7DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgcmV0ID0genlucW1wX3BtX3BpbmN0cmxfZ2V0X2NvbmZpZyhwaW4sIHBhcmFtLA0KPiA+ ICsgJnZhbHVlKTsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFyZyAh PSB2YWx1ZSkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldl93YXJuKHBj dGxkZXYtPmRldiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJJbnZhbGlkIElPIFN0YW5kYXJkIHJlcXVlc3RlZCBmb3IgcGluICVkXG4iLA0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGluKTsNCj4gPiArDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ID4gKyAgICAgICAgICAgICAgIGNhc2UgUElO X0NPTkZJR19CSUFTX0hJR0hfSU1QRURBTkNFOg0KPiA+ICsgICAgICAgICAgICAgICBjYXNlIFBJ Tl9DT05GSUdfTE9XX1BPV0VSX01PREU6DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgLyoN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgKiBUaGVzZSBjYXNlcyBhcmUgbWVudGlvbmVk IGluIGR0cyBidXQgY29uZmlndXJhYmxlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICog cmVnaXN0ZXJzIGFyZSB1bmtub3duLiBTbyBmYWxsaW5nIHRocm91Z2ggdG8gaWdub3JlDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICogYm9vdCB0aW1lIHdhcm5pbmdzIGFzIG9mIG5vdy4N Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgKi8NCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICByZXQgPSAwOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICsg ICAgICAgICAgICAgICBkZWZhdWx0Og0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGRldl93 YXJuKHBjdGxkZXYtPmRldiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi dW5zdXBwb3J0ZWQgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgJyV1J1xuIiwNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbSk7DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgcmV0ID0gLUVPUE5PVFNVUFA7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgYnJl YWs7DQo+ID4gKyAgICAgICAgICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICAgICAgICAgIHBh cmFtID0gcGluY29uZl90b19jb25maWdfcGFyYW0oY29uZmlnc1tpXSk7DQo+ID4gKyAgICAgICAg ICAgICAgIGFyZyA9IHBpbmNvbmZfdG9fY29uZmlnX2FyZ3VtZW50KGNvbmZpZ3NbaV0pOw0KPiA+ ICsgICAgICAgICAgICAgICBpZiAocmV0KQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGRl dl93YXJuKHBjdGxkZXYtPmRldiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAiJXMgZmFpbGVkOiBwaW4gJXUgcGFyYW0gJXUgdmFsdWUgJXVcbiIsDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgX19mdW5jX18sIHBpbiwgcGFyYW0sIGFyZyk7DQo+ID4g KyAgICAgICB9DQo+IA0KPiBSZW1vdmUgYWxsIHRoZXNlIF9fZnVuY19fLiBJbiBhIHByb3Blcmx5 IGZvcm1lZCAodW5pcXVlKSBtZXNzYWdlIGJhc2UgeW91DQo+IGRvbid0IG5lZWQgaXQuIEZvciB0 aGUgZGVidWdnaW5nIER5bmFtaWMgZGVidWcgYW5kIG90aGVyIG1lY2hhbmlzbXMgYWxsb3cNCj4g dG8gZ2V0IGl0IGF0IHJ1bi10aW1lIHcvbyBjb2RlIHJlY29tcGlsYXRpb24uDQpJIHdpbGwgcmVt b3ZlIHVzaW5nICAnX19mdW5jX18nIGluIHRoZSBuZXh0IHNlcmllcy4NCiANCj4gDQo+ID4gKyAg ICAgICByZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIHp5bnFtcF9w aW5jb25mX2dyb3VwX3NldCgpIC0gU2V0IHJlcXVlc3RlZCBjb25maWcgZm9yIHRoZSBncm91cA0K PiA+ICsgKiBAcGN0bGRldjogICAgICAgICAgIFBpbmNvbnRyb2wgZGV2aWNlIHBvaW50ZXIuDQo+ ID4gKyAqIEBzZWxlY3RvcjogICAgICAgICAgR3JvdXAgSUQuDQo+ID4gKyAqIEBjb25maWdzOiAg ICAgICAgICAgQ29uZmlndXJhdGlvbiB0byBzZXQuDQo+ID4gKyAqIEBudW1fY29uZmlnczogICAg ICAgTnVtYmVyIG9mIGNvbmZpZ3VyYXRpb25zLg0KPiA+ICsgKg0KPiA+ICsgKiBDYWxsIGZ1bmN0 aW9uIHRvIHNldCBjb25maWdzIGZvciBlYWNoIHBpbiBpbiBncm91cC4NCj4gDQo+IGluIHRoZSBn cm91cA0KSSB3aWxsIHVwZGF0ZSBpbiBuZXh0IHNlcmllcy4NCj4gDQo+ID4gKyAqDQo+ID4gKyAq IFJldHVybjogMCBvbiBzdWNjZXNzIGVsc2UgZXJyb3IgY29kZS4NCj4gPiArICovDQo+ID4gK3N0 YXRpYyBpbnQgenlucW1wX3BpbmNvbmZfZ3JvdXBfc2V0KHN0cnVjdCBwaW5jdHJsX2RldiAqcGN0 bGRldiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp bnQgc2VsZWN0b3IsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z aWduZWQgbG9uZyAqY29uZmlncywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1bnNpZ25lZCBpbnQgbnVtX2NvbmZpZ3MpIHsNCj4gPiArICAgICAgIGludCBpLCByZXQ7 DQo+ID4gKyAgICAgICBzdHJ1Y3QgenlucW1wX3BpbmN0cmwgKnBjdHJsID0gcGluY3RybF9kZXZf Z2V0X2RydmRhdGEocGN0bGRldik7DQo+ID4gKyAgICAgICBjb25zdCBzdHJ1Y3QgenlucW1wX3Bj dHJsX2dyb3VwICpwZ3JwID0NCj4gPiArJnBjdHJsLT5ncm91cHNbc2VsZWN0b3JdOw0KPiA+ICsN Cj4gPiArICAgICAgIGZvciAoaSA9IDA7IGkgPCBwZ3JwLT5ucGluczsgaSsrKSB7DQo+ID4gKyAg ICAgICAgICAgICAgIHJldCA9IHp5bnFtcF9waW5jb25mX2NmZ19zZXQocGN0bGRldiwgcGdycC0+ cGluc1tpXSwgY29uZmlncywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBudW1fY29uZmlncyk7DQo+ID4gKyAgICAgICAgICAgICAgIGlmIChyZXQpDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4gPiArICAgICAgIH0NCj4g PiArDQo+ID4gKyAgICAgICByZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGNv bnN0IHN0cnVjdCBwaW5jb25mX29wcyB6eW5xbXBfcGluY29uZl9vcHMgPSB7DQo+ID4gKyAgICAg ICAuaXNfZ2VuZXJpYyA9IHRydWUsDQo+ID4gKyAgICAgICAucGluX2NvbmZpZ19nZXQgPSB6eW5x bXBfcGluY29uZl9jZmdfZ2V0LA0KPiA+ICsgICAgICAgLnBpbl9jb25maWdfc2V0ID0genlucW1w X3BpbmNvbmZfY2ZnX3NldCwNCj4gPiArICAgICAgIC5waW5fY29uZmlnX2dyb3VwX3NldCA9IHp5 bnFtcF9waW5jb25mX2dyb3VwX3NldCwgfTsNCj4gPiArDQo+ID4gK3N0YXRpYyBzdHJ1Y3QgcGlu Y3RybF9kZXNjIHp5bnFtcF9kZXNjID0gew0KPiA+ICsgICAgICAgLm5hbWUgPSAienlucW1wX3Bp bmN0cmwiLA0KPiA+ICsgICAgICAgLm93bmVyID0gVEhJU19NT0RVTEUsDQo+ID4gKyAgICAgICAu cGN0bG9wcyA9ICZ6eW5xbXBfcGN0cmxfb3BzLA0KPiA+ICsgICAgICAgLnBteG9wcyA9ICZ6eW5x bXBfcGlubXV4X29wcywNCj4gPiArICAgICAgIC5jb25mb3BzID0gJnp5bnFtcF9waW5jb25mX29w cywgI2lmZGVmIENPTkZJR19ERUJVR19GUw0KPiA+ICsgICAgICAgLmN1c3RvbV9jb25mX2l0ZW1z ID0genlucW1wX2NvbmZfaXRlbXMsICNlbmRpZiB9Ow0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAq IHp5bnFtcF9waW5jdHJsX2dldF9mdW5jdGlvbl9ncm91cHMoKSAtIGdldCBncm91cHMgZm9yIHRo ZSBmdW5jdGlvbg0KPiA+ICsgKiBAZmlkOiAgICAgICBGdW5jdGlvbiBJRC4NCj4gPiArICogQGlu ZGV4OiAgICAgR3JvdXAgaW5kZXguDQo+ID4gKyAqIEBncm91cHM6ICAgIEdyb3VwcyBkYXRhLg0K PiA+ICsgKg0KPiA+ICsgKiBDYWxsIGZpcm13YXJlIEFQSSB0byBnZXQgZ3JvdXBzIGZvciB0aGUg Z2l2ZW4gZnVuY3Rpb24uDQo+ID4gKyAqDQo+ID4gKyAqIFJldHVybjogMCBvbiBzdWNjZXNzIGVs c2UgZXJyb3IgY29kZS4NCj4gPiArICovDQo+ID4gK3N0YXRpYyBpbnQgenlucW1wX3BpbmN0cmxf Z2V0X2Z1bmN0aW9uX2dyb3Vwcyh1MzIgZmlkLCB1MzIgaW5kZXgsIHUxNg0KPiA+ICsqZ3JvdXBz KSB7DQo+ID4gKyAgICAgICBzdHJ1Y3QgenlucW1wX3BtX3F1ZXJ5X2RhdGEgcWRhdGEgPSB7MH07 DQo+ID4gKyAgICAgICB1MzIgcmV0X3BheWxvYWRbUEFZTE9BRF9BUkdfQ05UXTsNCj4gDQo+IHJl dF8gaXMgY29uZnVzaW5nLiBEcm9wIGl0Lg0KT2ssIHdpbGwganVzdCBkcm9wICdyZXRfJyBwcmVm aXggYW5kIHNpbXBseSB1c2UgcGF5bG9kIGluIG5leHQgdmVyc2lvbi4NCg0KPiANCj4gPiArICAg ICAgIGludCByZXQ7DQo+ID4gKw0KPiA+ICsgICAgICAgcWRhdGEucWlkID0gUE1fUUlEX1BJTkNU UkxfR0VUX0ZVTkNUSU9OX0dST1VQUzsNCj4gPiArICAgICAgIHFkYXRhLmFyZzEgPSBmaWQ7DQo+ ID4gKyAgICAgICBxZGF0YS5hcmcyID0gaW5kZXg7DQo+ID4gKw0KPiA+ICsgICAgICAgcmV0ID0g enlucW1wX3BtX3F1ZXJ5X2RhdGEocWRhdGEsIHJldF9wYXlsb2FkKTsNCj4gPiArICAgICAgIGlm IChyZXQpDQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+ID4gKw0KPiA+ICsgICAg ICAgbWVtY3B5KGdyb3VwcywgJnJldF9wYXlsb2FkWzFdLA0KPiA+ICsgUElOQ1RSTF9HRVRfRlVO Q19HUk9VUFNfUkVTUF9MRU4pOw0KPiA+ICsNCj4gPiArICAgICAgIHJldHVybiByZXQ7DQo+ID4g K30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiB6eW5xbXBfcGluY3RybF9nZXRfZnVuY19udW1f Z3JvdXBzKCkgLSBnZXQgbnVtYmVyIG9mIGdyb3VwcyBpbg0KPiBmdW5jdGlvbg0KPiA+ICsgKiBA ZmlkOiAgICAgICBGdW5jdGlvbiBJRC4NCj4gPiArICogQG5ncm91cHM6ICAgTnVtYmVyIG9mIGdy b3VwcyBpbiBmdW5jdGlvbi4NCj4gPiArICoNCj4gPiArICogQ2FsbCBmaXJtd2FyZSBBUEkgdG8g Z2V0IG51bWJlciBvZiBncm91cCBpbiBmdW5jdGlvbi4NCj4gPiArICoNCj4gPiArICogUmV0dXJu OiAwIG9uIHN1Y2Nlc3MgZWxzZSBlcnJvciBjb2RlLg0KPiA+ICsgKi8NCj4gPiArc3RhdGljIGlu dCB6eW5xbXBfcGluY3RybF9nZXRfZnVuY19udW1fZ3JvdXBzKHUzMiBmaWQsIHVuc2lnbmVkIGlu dA0KPiA+ICsqbmdyb3Vwcykgew0KPiA+ICsgICAgICAgc3RydWN0IHp5bnFtcF9wbV9xdWVyeV9k YXRhIHFkYXRhID0gezB9Ow0KPiA+ICsgICAgICAgdTMyIHJldF9wYXlsb2FkW1BBWUxPQURfQVJH X0NOVF07DQo+ID4gKyAgICAgICBpbnQgcmV0Ow0KPiA+ICsNCj4gPiArICAgICAgIHFkYXRhLnFp ZCA9IFBNX1FJRF9QSU5DVFJMX0dFVF9OVU1fRlVOQ1RJT05fR1JPVVBTOw0KPiA+ICsgICAgICAg cWRhdGEuYXJnMSA9IGZpZDsNCj4gPiArDQo+ID4gKyAgICAgICByZXQgPSB6eW5xbXBfcG1fcXVl cnlfZGF0YShxZGF0YSwgcmV0X3BheWxvYWQpOw0KPiA+ICsgICAgICAgaWYgKHJldCkNCj4gPiAr ICAgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4gPiArDQo+ID4gKyAgICAgICAqbmdyb3VwcyA9 IHJldF9wYXlsb2FkWzFdOw0KPiA+ICsNCj4gPiArICAgICAgIHJldHVybiByZXQ7DQo+ID4gK30N Cj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiB6eW5xbXBfcGluY3RybF9wcmVwYXJlX2Z1bmNfZ3Jv dXBzKCkgLSBwcmVwYXJlIGZ1bmN0aW9uIGFuZCBncm91cHMNCj4gZGF0YQ0KPiA+ICsgKiBAZGV2 OiAgICAgICBEZXZpY2UgcG9pbnRlci4NCj4gPiArICogQGZpZDogICAgICAgRnVuY3Rpb24gSUQu DQo+ID4gKyAqIEBmdW5jOiAgICAgIEZ1bmN0aW9uIGRhdGEuDQo+ID4gKyAqIEBncm91cHM6ICAg IEdyb3VwcyBkYXRhLg0KPiA+ICsgKg0KPiA+ICsgKiBRdWVyeSBmaXJtd2FyZSB0byBnZXQgZ3Jv dXAgSURzIGZvciBlYWNoIGZ1bmN0aW9uLiBGaXJtd2FyZQ0KPiA+ICtyZXR1cm5zDQo+ID4gKyAq IGdyb3VwIElEcy4gQmFzZWQgb24gZ29ydXAgaW5kZXggZm9yIHRoZSBmdW5jdGlvbiwgZ3JvdXAg bmFtZXMgaW4NCj4gDQo+IGdyb3VwDQo+IA0KPiA+ICsgKiBmdW5jdGlvbiBhcmUgc3RvcmVkLiBG b3IgZXhhbXBsZSwgZmlyc3QgZ29ydXAgaW4gImV0aDAiIGZ1bmN0aW9uDQo+IA0KPiB0aGUgZnVu Y3Rpb24NCj4gdGhlIGZpcnN0DQo+IGdyb3VwDQo+IA0KPiA+ICsgKiBpcyBuYW1lZCBhcyAiZXRo MF8wIiwgc2Vjb25kIGFzICJldGgwXzEiIGFuZCBzbyBvbi4NCj4gDQo+IFNwZWxsIGNoZWNrIHlv dXIgY29tbWVudHMuDQpXaWxsIGNoZWNrIGFuZCBmaXggaW4gdGhlIG5leHQgdmVyc2lvbi4NCj4g DQo+ID4gKyAqDQo+ID4gKyAqIEJhc2VkIG9uIGdyb3VwIElEIHJlY2VpdmVkIGZyb20gZmlybXdh cmUsIGZ1bmN0aW9uIHN0b3JlcyBuYW1lIG9mDQo+ID4gKyAqIGdyb3VwIGZvciB0aGF0IGdyb3Vw IElELiBGb3IgYW4gZXhhbXBsZSwgaWYgImV0aDAiIGZpcnN0IGdyb3VwIElEDQo+ID4gKyAqIGlz IHgsIGdyb3Vwc1t4XSBuYW1lIHdpbGwgYmUgc3RvcmVkIGFzICJldGgwXzAiLg0KPiA+ICsgKg0K PiA+ICsgKiBPbmNlIGRvbmUgZm9yIGVhY2ggZnVuY3Rpb24sIGVhY2ggZnVuY3Rpb24gd291bGQg aGF2ZSBpdHMgZ3JvdXANCj4gPiArbmFtZXMsDQo+ID4gKyAqIGFuZCBlYWNoIGdyb3VwcyB3b3Vs ZCBhbHNvIGhhdmUgdGhlaXIgbmFtZXMuDQo+ID4gKyAqDQo+ID4gKyAqIFJldHVybjogMCBvbiBz dWNjZXNzIGVsc2UgZXJyb3IgY29kZS4NCj4gPiArICovDQo+ID4gK3N0YXRpYyBpbnQgenlucW1w X3BpbmN0cmxfcHJlcGFyZV9mdW5jX2dyb3VwcyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHUzMg0KPiBm aWQsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 cnVjdCB6eW5xbXBfcG11eF9mdW5jdGlvbiAqZnVuYywNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0DQo+ID4gK3p5bnFtcF9wY3RybF9ncm91 cCAqZ3JvdXBzKSB7DQo+ID4gKyAgICAgICB1MTYgcmVzcFtOVU1fR1JPVVBTX1BFUl9SRVNQXSA9 IHswfTsNCj4gPiArICAgICAgIGNvbnN0IGNoYXIgKipmZ3JvdXBzOw0KPiA+ICsgICAgICAgaW50 IHJldCA9IDAsIGluZGV4LCBpOw0KPiANCj4gPiArICAgICAgIGZncm91cHMgPSBkZXZtX2t6YWxs b2MoZGV2LCBzaXplb2YoKmZncm91cHMpICogZnVuYy0+bmdyb3VwcywNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgR0ZQX0tFUk5FTCk7DQo+IA0KPiBPbmUgbGluZQ0KV2l0aCBz aW5nbGUgbGluZSBpdCBpcyBjcm9zc2luZyA4MCBsaW5lIGJhciBhbmQgZ2V0dGluZyB0aGUgY2hl Y2twYXRjaCB3YXJuaW5nLA0KaGVuY2Ugc3BsaXQgaW50byB0d28gbGluZXMuDQo+IA0KPiA+ICsg ICAgICAgaWYgKCFmZ3JvdXBzKQ0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsN Cj4gPiArDQo+ID4gKyAgICAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBmdW5jLT5uZ3JvdXBz OyBpbmRleCArPQ0KPiBOVU1fR1JPVVBTX1BFUl9SRVNQKSB7DQo+ID4gKyAgICAgICAgICAgICAg IHJldCA9IHp5bnFtcF9waW5jdHJsX2dldF9mdW5jdGlvbl9ncm91cHMoZmlkLCBpbmRleCwgcmVz cCk7DQo+ID4gKyAgICAgICAgICAgICAgIGlmIChyZXQpDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgcmV0dXJuIHJldDsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICAgIGZvciAoaSA9IDA7 IGkgPCBOVU1fR1JPVVBTX1BFUl9SRVNQOyBpKyspIHsNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICBpZiAocmVzcFtpXSA9PSAodTE2KU5BX0dST1VQKQ0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZ290byBkb25lOw0KPiA+ICsNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICBpZiAocmVzcFtpXSA9PSAodTE2KVJFU0VSVkVEX0dST1VQKQ0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgIGZncm91cHNbaW5kZXggKyBpXSA9IGRldm1fa2FzcHJpbnRmKGRldiwgR0ZQX0tF Uk5FTCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAiJXNfJWRfZ3JwIiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jLT5uYW1lLA0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu ZGV4ICsgaSk7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBzW3Jlc3BbaV1dLm5h bWUgPSBkZXZtX2thc3ByaW50ZihkZXYsIEdGUF9LRVJORUwsDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXNfJWRfZ3Jw IiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGZ1bmMtPm5hbWUsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCArDQo+ID4gKyBpKTsNCj4g DQo+IE5vIE5VTEwgY2hlY2tzPyENCkkgd2lsbCB1cGRhdGUgaW4gdGhlIG5leHQgc2VyaWVzLg0K PiANCj4gPiArICAgICAgICAgICAgICAgfQ0KPiA+ICsgICAgICAgfQ0KPiA+ICtkb25lOg0KPiA+ ICsgICAgICAgZnVuYy0+Z3JvdXBzID0gZmdyb3VwczsNCj4gPiArDQo+ID4gKyAgICAgICByZXR1 cm4gcmV0Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogenlucW1wX3BpbmN0cmxf Z2V0X2Z1bmN0aW9uX25hbWUoKSAtIGdldCBmdW5jdGlvbiBuYW1lDQo+ID4gKyAqIEBmaWQ6ICAg ICAgIEZ1bmN0aW9uIElELg0KPiA+ICsgKiBAbmFtZTogICAgICBGdW5jdGlvbiBuYW1lDQo+ID4g KyAqDQo+ID4gKyAqIENhbGwgZmlybXdhcmUgQVBJIHRvIGdldCBuYW1lIG9mIGdpdmVuIGZ1bmN0 aW9uLg0KPiA+ICsgKi8NCj4gPiArc3RhdGljIHZvaWQgenlucW1wX3BpbmN0cmxfZ2V0X2Z1bmN0 aW9uX25hbWUodTMyIGZpZCwgY2hhciAqbmFtZSkgew0KPiA+ICsgICAgICAgc3RydWN0IHp5bnFt cF9wbV9xdWVyeV9kYXRhIHFkYXRhID0gezB9Ow0KPiA+ICsgICAgICAgdTMyIHJldF9wYXlsb2Fk W1BBWUxPQURfQVJHX0NOVF07DQo+ID4gKw0KPiA+ICsgICAgICAgcWRhdGEucWlkID0gUE1fUUlE X1BJTkNUUkxfR0VUX0ZVTkNUSU9OX05BTUU7DQo+ID4gKyAgICAgICBxZGF0YS5hcmcxID0gZmlk Ow0KPiA+ICsNCj4gPiArICAgICAgIC8qDQo+ID4gKyAgICAgICAgKiBOYW1lIG9mIHRoZSBmdW5j dGlvbiBpcyBtYXhpbXVtIDE2IGJ5dGVzIGFuZCBjYW5ub3QNCj4gPiArICAgICAgICAqIGFjY29t bW9kYXRlIHRoZSByZXR1cm4gdmFsdWUgaW4gU01DIGJ1ZmZlcnMsIGhlbmNlIGlnbm9yaW5nDQo+ ID4gKyAgICAgICAgKiB0aGUgcmV0dXJuIHZhbHVlIGZvciB0aGlzIHNwZWNpZmljIHFpZC4NCj4g PiArICAgICAgICAqLw0KPiA+ICsgICAgICAgenlucW1wX3BtX3F1ZXJ5X2RhdGEocWRhdGEsIHJl dF9wYXlsb2FkKTsNCj4gPiArICAgICAgIG1lbWNweShuYW1lLCByZXRfcGF5bG9hZCwgUElOQ1RS TF9HRVRfRlVOQ19OQU1FX1JFU1BfTEVOKTsNCj4gfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAq IHp5bnFtcF9waW5jdHJsX2dldF9udW1fZnVuY3Rpb25zKCkgLSBnZXQgbnVtYmVyIG9mIHN1cHBv cnRlZA0KPiBmdW5jdGlvbnMNCj4gPiArICogQG5mdW5jczogICAgTnVtYmVyIG9mIGZ1bmN0aW9u cy4NCj4gPiArICoNCj4gPiArICogQ2FsbCBmaXJtd2FyZSBBUEkgdG8gZ2V0IG51bWJlciBvZiBm dW5jdGlvbnMgc3VwcG9ydGVkIGJ5DQo+IHN5c3RlbS9ib2FyZC4NCj4gPiArICoNCj4gPiArICog UmV0dXJuOiAwIG9uIHN1Y2Nlc3MgZWxzZSBlcnJvciBjb2RlLg0KPiA+ICsgKi8NCj4gPiArc3Rh dGljIGludCB6eW5xbXBfcGluY3RybF9nZXRfbnVtX2Z1bmN0aW9ucyh1bnNpZ25lZCBpbnQgKm5m dW5jcykgew0KPiANCj4gPiArICAgICAgIHN0cnVjdCB6eW5xbXBfcG1fcXVlcnlfZGF0YSBxZGF0 YSA9IHswfTsNCj4gPiArICAgICAgIHUzMiByZXRfcGF5bG9hZFtQQVlMT0FEX0FSR19DTlRdOw0K PiANCj4gRHJvcCBpbiBhbGwgY2FzZXMgdGhvc2UgcmVkdW5kYW50IHByZWZpeGVzLg0KPiANCj4g PiArICAgICAgIGludCByZXQ7DQo+ID4gKw0KPiA+ICsgICAgICAgcWRhdGEucWlkID0gUE1fUUlE X1BJTkNUUkxfR0VUX05VTV9GVU5DVElPTlM7DQo+ID4gKw0KPiA+ICsgICAgICAgcmV0ID0genlu cW1wX3BtX3F1ZXJ5X2RhdGEocWRhdGEsIHJldF9wYXlsb2FkKTsNCj4gPiArICAgICAgIGlmIChy ZXQpDQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+ID4gKw0KPiA+ICsgICAgICAg Km5mdW5jcyA9IHJldF9wYXlsb2FkWzFdOw0KPiA+ICsNCj4gPiArICAgICAgIHJldHVybiByZXQ7 DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiB6eW5xbXBfcGluY3RybF9nZXRfcGlu X2dyb3VwcygpIC0gZ2V0IGdyb3VwcyBmb3IgdGhlIHBpbg0KPiA+ICsgKiBAcGluOiAgICAgICBQ aW4gbnVtYmVyLg0KPiA+ICsgKiBAaW5kZXg6ICAgICBHcm91cCBpbmRleC4NCj4gPiArICogQGdy b3VwczogICAgR3JvdXBzIGRhdGEuDQo+ID4gKyAqDQo+ID4gKyAqIENhbGwgZmlybXdhcmUgQVBJ IHRvIGdldCBncm91cHMgZm9yIHRoZSBnaXZlbiBwaW4uDQo+ID4gKyAqDQo+ID4gKyAqIFJldHVy bjogMCBvbiBzdWNjZXNzIGVsc2UgZXJyb3IgY29kZS4NCj4gPiArICovDQo+ID4gK3N0YXRpYyBp bnQgenlucW1wX3BpbmN0cmxfZ2V0X3Bpbl9ncm91cHModTMyIHBpbiwgdTMyIGluZGV4LCB1MTYN Cj4gPiArKmdyb3Vwcykgew0KPiA+ICsgICAgICAgc3RydWN0IHp5bnFtcF9wbV9xdWVyeV9kYXRh IHFkYXRhID0gezB9Ow0KPiA+ICsgICAgICAgdTMyIHJldF9wYXlsb2FkW1BBWUxPQURfQVJHX0NO VF07DQo+ID4gKyAgICAgICBpbnQgcmV0Ow0KPiA+ICsNCj4gPiArICAgICAgIHFkYXRhLnFpZCA9 IFBNX1FJRF9QSU5DVFJMX0dFVF9QSU5fR1JPVVBTOw0KPiA+ICsgICAgICAgcWRhdGEuYXJnMSA9 IHBpbjsNCj4gPiArICAgICAgIHFkYXRhLmFyZzIgPSBpbmRleDsNCj4gPiArDQo+ID4gKyAgICAg ICByZXQgPSB6eW5xbXBfcG1fcXVlcnlfZGF0YShxZGF0YSwgcmV0X3BheWxvYWQpOw0KPiA+ICsg ICAgICAgaWYgKHJldCkNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4gPiArDQo+ ID4gKyAgICAgICBtZW1jcHkoZ3JvdXBzLCAmcmV0X3BheWxvYWRbMV0sDQo+ID4gKyBQSU5DVFJM X0dFVF9QSU5fR1JPVVBTX1JFU1BfTEVOKTsNCj4gPiArDQo+ID4gKyAgICAgICByZXR1cm4gcmV0 Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogenlucW1wX3BpbmN0cmxfZ3JvdXBf YWRkX3BpbigpIC0gYWRkIHBpbiB0byBnaXZlbiBncm91cA0KPiA+ICsgKiBAZ3JvdXA6ICAgICBH cm91cCBkYXRhLg0KPiA+ICsgKiBAcGluOiAgICAgICBQaW4gbnVtYmVyLg0KPiA+ICsgKg0KPiA+ ICsgKiBBZGQgcGluIG51bWJlciB0byByZXNwZWN0aXZlIGdyb3VwJ3MgcGluIGFycmF5IGF0IGVu ZCBhbmQNCj4gPiArICogaW5jcmVtZW50IHBpbiBjb3VudCBmb3IgdGhlIGdyb3VwLg0KPiA+ICsg Ki8NCj4gPiArc3RhdGljIHZvaWQgenlucW1wX3BpbmN0cmxfZ3JvdXBfYWRkX3BpbihzdHJ1Y3Qg enlucW1wX3BjdHJsX2dyb3VwDQo+ICpncm91cCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBwaW4pIHsNCj4gPiArICAgICAgIGdyb3Vw LT5waW5zW2dyb3VwLT5ucGlucysrXSA9IHBpbjsgfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAq IHp5bnFtcF9waW5jdHJsX2NyZWF0ZV9waW5fZ3JvdXBzKCkgLSBhc3NpZ24gcGlucyB0byByZXNw ZWN0aXZlIGdyb3Vwcw0KPiA+ICsgKiBAZGV2OiAgICAgICBEZXZpY2UgcG9pbnRlci4NCj4gPiAr ICogQGdyb3VwczogICAgR3JvdXBzIGRhdGEuDQo+ID4gKyAqIEBwaW46ICAgICAgIFBpbiBudW1i ZXIuDQo+ID4gKyAqDQo+ID4gKyAqIFF1ZXJ5IGZpcm13YXJlIHRvIGdldCBncm91cHMgYXZhaWxh YmxlIGZvciB0aGUgZ2l2ZW4gcGluLg0KPiA+ICsgKiBCYXNlZCBvbiBmaXJtd2FyZSByZXNwb25z ZShncm91cCBJRHMgZm9yIHRoZSBwaW4pLCBhZGQNCj4gPiArICogcGluIG51bWJlciB0byByZXNw ZWN0aXZlIGdyb3VwJ3MgcGluIGFycmF5Lg0KPiA+ICsgKg0KPiA+ICsgKiBPbmNlIGFsbCBwaW5z IGFyZSBxdWVyaWVzLCBlYWNoIGdyb3VwcyB3b3VsZCBoYXZlIGl0cyBudW1iZXINCj4gPiArICog b2YgcGlucyBhbmQgcGluIG51bWJlcnMgZGF0YS4NCj4gPiArICoNCj4gPiArICogUmV0dXJuOiAw IG9uIHN1Y2Nlc3MgZWxzZSBlcnJvciBjb2RlLg0KPiA+ICsgKi8NCj4gPiArc3RhdGljIGludCB6 eW5xbXBfcGluY3RybF9jcmVhdGVfcGluX2dyb3VwcyhzdHJ1Y3QgZGV2aWNlICpkZXYsDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgenlucW1w X3BjdHJsX2dyb3VwICpncm91cHMsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgcGluKSB7DQo+ID4gKyAgICAgICBpbnQgcmV0LCBp LCBpbmRleCA9IDA7DQo+ID4gKyAgICAgICB1MTYgcmVzcFtOVU1fR1JPVVBTX1BFUl9SRVNQXSA9 IHswfTsNCj4gPiArDQo+ID4gKyAgICAgICBkbyB7DQo+ID4gKyAgICAgICAgICAgICAgIHJldCA9 IHp5bnFtcF9waW5jdHJsX2dldF9waW5fZ3JvdXBzKHBpbiwgaW5kZXgsIHJlc3ApOw0KPiA+ICsg ICAgICAgICAgICAgICBpZiAocmV0KQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVy biByZXQ7DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgTlVNX0dS T1VQU19QRVJfUkVTUDsgaSsrKSB7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJl c3BbaV0gPT0gKHUxNilOQV9HUk9VUCkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHJldHVybiByZXQ7DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmIChy ZXNwW2ldID09ICh1MTYpUkVTRVJWRURfR1JPVVApDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb250aW51ZTsNCj4gDQo+IEluIHRoZSBlbnRpcmUgZHJpdmVyIHJlbW92ZSBh bGwgZXhwbGljaXQgY2FzdGluZ3Mgd2hlcmUgaXQncyBub3QgbmVlZGVkLCBsaWtlDQo+IGFib3Zl LiBJZiBzb21ldGhpbmcgaXMgbm90IG9rYXkgd2l0aCBpdCwgZml4IHRoZSByb290IGNhdXNlLg0K T2ssIEkgd2lsbCBjaGVjayB0aGlzIGFuZCBmaXggaW4gbmV4dCB2ZXJzaW9uLg0KPiANCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICB6eW5xbXBfcGluY3RybF9ncm91cF9hZGRfcGluKCZncm91 cHNbcmVzcFtpXV0sIHBpbik7DQo+ID4gKyAgICAgICAgICAgICAgIH0NCj4gPiArICAgICAgICAg ICAgICAgaW5kZXggKz0gTlVNX0dST1VQU19QRVJfUkVTUDsNCj4gPiArICAgICAgIH0gd2hpbGUg KDEpOw0KPiANCj4gVHJ5IHRvIHJlZmFjdG9yIHRvIGF2b2lkIGluZmluaXRlIGxvb3BzLg0KSSB3 aWxsIGNoZWNrIGFuZCB1cGRhdGUgdGhpcyBpbiBuZXh0IHZlcnNpb24uDQo+IA0KPiA+ICsNCj4g PiArICAgICAgIHJldHVybiByZXQ7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiB6 eW5xbXBfcGluY3RybF9wcmVwYXJlX2dyb3VwX3BpbnMoKSAtIHByZXBhcmUgZWFjaCBncm91cCdz IHBpbiBkYXRhDQo+ID4gKyAqIEBkZXY6ICAgICAgIERldmljZSBwb2ludGVyLg0KPiA+ICsgKiBA Z3JvdXBzOiAgICBHcm91cHMgZGF0YS4NCj4gPiArICogQG5ncm91cHM6ICAgTnVtYmVyIG9mIGdy b3Vwcy4NCj4gPiArICoNCj4gPiArICogUHJlcGFyZSBwaW4gbnVtYmVyIGFuZCBudW1iZXIgb2Yg cGlucyBkYXRhIGZvciBlYWNoIHBpbnMuDQo+ID4gKyAqDQo+ID4gKyAqIFJldHVybjogMCBvbiBz dWNjZXNzIGVsc2UgZXJyb3IgY29kZS4NCj4gPiArICovDQo+ID4gK3N0YXRpYyBpbnQgenlucW1w X3BpbmN0cmxfcHJlcGFyZV9ncm91cF9waW5zKHN0cnVjdCBkZXZpY2UgKmRldiwNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgenlucW1wX3Bj dHJsX2dyb3VwICpncm91cHMsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdW5zaWduZWQgaW50IG5ncm91cHMpIHsNCj4gPiArICAgICAgIHVuc2lnbmVk IGludCBwaW47DQo+ID4gKyAgICAgICBpbnQgcmV0ID0gMDsNCj4gDQo+IFJlZHVuZGFudCBhc3Np Z25tZW50Lg0KU3RhdGljIGFuYWx5emVyIHRvb2wgd2lsbCB0aHJvdyB3YXJuaW5nIGFzIGl0IGV4 cGVjdHMgdGhlIHZhcmlhYmxlIHRvIGJlDQpJbml0aWFsaXplZCBpbiBhbGwgcG9zc2libGUgcGF0 aHMuDQpJIHdpbGwgY3Jvc3MgY2hlY2sgb24gdGhpcyBhbmQgcmVtb3ZlIGlmIGl0IGlzIG5vdCB0 aGUgY2FzZS4NCj4gDQo+ID4gKyAgICAgICBmb3IgKHBpbiA9IDA7IHBpbiA8IHp5bnFtcF9kZXNj Lm5waW5zOyBwaW4rKykgew0KPiA+ICsgICAgICAgICAgICAgICByZXQgPSB6eW5xbXBfcGluY3Ry bF9jcmVhdGVfcGluX2dyb3VwcyhkZXYsIGdyb3VwcywgcGluKTsNCj4gPiArICAgICAgICAgICAg ICAgaWYgKHJldCkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KPiA+ ICsgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgIHJldHVybiByZXQ7DQo+ID4gK30NCj4gPiAr DQo+ID4gKy8qKg0KPiA+ICsgKiB6eW5xbXBfcGluY3RybF9wcmVwYXJlX2Z1bmN0aW9uX2luZm8o KSAtIHByZXBhcmUgZnVuY3Rpb24gaW5mbw0KPiA+ICsgKiBAZGV2OiAgICAgICBEZXZpY2UgcG9p bnRlci4NCj4gPiArICogQHBjdHJsOiAgICAgUGluIGNvbnRyb2wgZHJpdmVyIGRhdGEuDQo+ID4g KyAqDQo+ID4gKyAqIFF1ZXJ5IGZpcm13YXJlIGZvciBmdW5jdGlvbnMsIGdyb3VwcyBhbmQgcGlu IGluZm9ybWF0aW9uIGFuZA0KPiA+ICsgKiBwcmVwYXJlIHBpbiBjb250cm9sIGRyaXZlciBkYXRh Lg0KPiA+ICsgKg0KPiA+ICsgKiBRdWVyeSBudW1iZXIgb2YgZnVuY3Rpb25zIGFuZCBudW1iZXIg b2YgZnVuY3Rpb24gZ3JvdXBzIChudW1iZXINCj4gPiArICogb2YgZ3JvdXBzIGluIGdpdmVuIGZ1 bmN0aW9uKSB0byBhbGxvY2F0ZSByZXF1aXJlZCBtZW1vcnkgYnVmZmVycw0KPiA+ICsgKiBmb3Ig ZnVuY3Rpb25zIGFuZCBncm91cHMuIE9uY2UgYnVmZmVycyBhcmUgYWxsb2NhdGVkIHRvIHN0b3Jl DQo+ID4gKyAqIGZ1bmN0aW9ucyBhbmQgZ3JvdXBzIGRhdGEsIHF1ZXJ5IGFuZCBzdG9yZSByZXF1 aXJlZCBpbmZvcm1hdGlvbg0KPiA+ICsgKiAobnVtYmUgb2YgZ3JvdXBzIGFuZCBncm91cCBuYW1l cyBmb3IgZWFjaCBmdW5jdGlvbiwgbnVtYmVyIG9mDQo+IA0KPiBudW1iZXINCj4gDQo+ID4gKyAq IHBpbnMgYW5kIHBpbiBudW1iZXJzIGZvciBlYWNoIGdyb3VwKS4NCj4gPiArICoNCj4gPiArICog UmV0dXJuOiAwIG9uIHN1Y2Nlc3MgZWxzZSBlcnJvciBjb2RlLg0KPiA+ICsgKi8NCj4gPiArc3Rh dGljIGludCB6eW5xbXBfcGluY3RybF9wcmVwYXJlX2Z1bmN0aW9uX2luZm8oc3RydWN0IGRldmlj ZSAqZGV2LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdCB6eW5xbXBfcGluY3RybA0KPiA+ICsqcGN0cmwpIHsNCj4gPiArICAgICAgIHN0 cnVjdCB6eW5xbXBfcG11eF9mdW5jdGlvbiAqZnVuY3M7DQo+ID4gKyAgICAgICBzdHJ1Y3Qgenlu cW1wX3BjdHJsX2dyb3VwICpncm91cHM7DQo+ID4gKyAgICAgICBpbnQgcmV0LCBpOw0KPiA+ICsN Cj4gPiArICAgICAgIHJldCA9IHp5bnFtcF9waW5jdHJsX2dldF9udW1fZnVuY3Rpb25zKCZwY3Ry bC0+bmZ1bmNzKTsNCj4gPiArICAgICAgIGlmIChyZXQpDQo+ID4gKyAgICAgICAgICAgICAgIHJl dHVybiByZXQ7DQo+ID4gKw0KPiA+ICsgICAgICAgZnVuY3MgPSBkZXZtX2t6YWxsb2MoZGV2LCBz aXplb2YoKmZ1bmNzKSAqIHBjdHJsLT5uZnVuY3MsDQo+IEdGUF9LRVJORUwpOw0KPiA+ICsgICAg ICAgaWYgKCFmdW5jcykNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07DQo+ID4g Kw0KPiA+ICsgICAgICAgZm9yIChpID0gMDsgaSA8IHBjdHJsLT5uZnVuY3M7IGkrKykgew0KPiA+ ICsgICAgICAgICAgICAgICB6eW5xbXBfcGluY3RybF9nZXRfZnVuY3Rpb25fbmFtZShpLCBmdW5j c1tpXS5uYW1lKTsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICAgIHJldCA9IHp5bnFtcF9waW5j dHJsX2dldF9mdW5jX251bV9ncm91cHMoaSwNCj4gJmZ1bmNzW2ldLm5ncm91cHMpOw0KPiA+ICsg ICAgICAgICAgICAgICBpZiAocmV0KQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVy biByZXQ7DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgICBwY3RybC0+bmdyb3VwcyArPSBmdW5j c1tpXS5uZ3JvdXBzOw0KPiA+ICsgICAgICAgfQ0KPiANCj4gPiArICAgICAgIGdyb3VwcyA9IGRl dm1fa3phbGxvYyhkZXYsIHNpemVvZigqZ3JvdXBzKSAqIHBjdHJsLT5uZ3JvdXBzLA0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdGUF9LRVJORUwpOw0KPiANCj4gT25lIGxpbmUu DQpJdCB3aWxsIGNyb3NzIDgwIGxpbmUgbWFyayBpZiB3ZSBtYWtlIGl0IHRvIGEgc2luZ2xlIGxp bmUuDQo+IA0KPiA+ICsgICAgICAgaWYgKCFncm91cHMpDQo+ID4gKyAgICAgICAgICAgICAgIHJl dHVybiAtRU5PTUVNOw0KPiA+ICsNCj4gPiArICAgICAgIGZvciAoaSA9IDA7IGkgPCBwY3RybC0+ bmZ1bmNzOyBpKyspIHsNCj4gPiArICAgICAgICAgICAgICAgcmV0ID0genlucW1wX3BpbmN0cmxf cHJlcGFyZV9mdW5jX2dyb3VwcyhkZXYsIGksICZmdW5jc1tpXSwNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cHMpOw0KPiA+ ICsgICAgICAgICAgICAgICBpZiAocmV0KQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJl dHVybiByZXQ7DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAgcmV0ID0genlucW1w X3BpbmN0cmxfcHJlcGFyZV9ncm91cF9waW5zKGRldiwgZ3JvdXBzLCBwY3RybC0NCj4gPm5ncm91 cHMpOw0KPiA+ICsgICAgICAgaWYgKHJldCkNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIHJl dDsNCj4gPiArDQo+ID4gKyAgICAgICBwY3RybC0+ZnVuY3MgPSBmdW5jczsNCj4gPiArICAgICAg IHBjdHJsLT5ncm91cHMgPSBncm91cHM7DQo+ID4gKw0KPiA+ICsgICAgICAgcmV0dXJuIHJldDsN Cj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIHp5bnFtcF9waW5jdHJsX2dldF9udW1f cGlucygpIC0gZ2V0IG51bWJlciBvZiBwaW5zIGluIHN5c3RlbQ0KPiA+ICsgKiBAbnBpbnM6ICAg ICBOdW1iZXIgb2YgcGlucyBpbiBzeXN0ZW0vYm9hcmQuDQo+ID4gKyAqDQo+ID4gKyAqIENhbGwg ZmlybXdhcmUgQVBJIHRvIGdldCBudW1iZXIgb2YgcGlucy4NCj4gPiArICoNCj4gPiArICogUmV0 dXJuOiAwIG9uIHN1Y2Nlc3MgZWxzZSBlcnJvciBjb2RlLg0KPiA+ICsgKi8NCj4gPiArc3RhdGlj IGludCB6eW5xbXBfcGluY3RybF9nZXRfbnVtX3BpbnModW5zaWduZWQgaW50ICpucGlucykgew0K PiA+ICsgICAgICAgc3RydWN0IHp5bnFtcF9wbV9xdWVyeV9kYXRhIHFkYXRhID0gezB9Ow0KPiA+ ICsgICAgICAgdTMyIHJldF9wYXlsb2FkW1BBWUxPQURfQVJHX0NOVF07DQo+ID4gKyAgICAgICBp bnQgcmV0Ow0KPiA+ICsNCj4gPiArICAgICAgIHFkYXRhLnFpZCA9IFBNX1FJRF9QSU5DVFJMX0dF VF9OVU1fUElOUzsNCj4gPiArDQo+ID4gKyAgICAgICByZXQgPSB6eW5xbXBfcG1fcXVlcnlfZGF0 YShxZGF0YSwgcmV0X3BheWxvYWQpOw0KPiA+ICsgICAgICAgaWYgKHJldCkNCj4gPiArICAgICAg ICAgICAgICAgcmV0dXJuIHJldDsNCj4gPiArDQo+ID4gKyAgICAgICAqbnBpbnMgPSByZXRfcGF5 bG9hZFsxXTsNCj4gPiArDQo+ID4gKyAgICAgICByZXR1cm4gcmV0Ow0KPiA+ICt9DQo+ID4gKw0K PiA+ICsvKioNCj4gPiArICogenlucW1wX3BpbmN0cmxfcHJlcGFyZV9waW5fZGVzYygpIC0gcHJl cGFyZSBwaW4gZGVzY3JpcHRpb24gaW5mbw0KPiA+ICsgKiBAZGV2OiAgICAgICAgICAgICAgIERl dmljZSBwb2ludGVyLg0KPiA+ICsgKiBAenlucW1wX3BpbnM6ICAgICAgIFBpbiBpbmZvcm1hdGlv bi4NCj4gPiArICogQG5waW5zOiAgICAgICAgICAgICBOdW1iZXIgb2YgcGlucy4NCj4gPiArICoN Cj4gPiArICogUXVlcnkgbnVtYmVyIG9mIHBpbnMgaW5mb3JtYXRpb24gZnJvbSBmaXJtd2FyZSBh bmQgcHJlcGFyZSBwaW4NCj4gPiArICogZGVzY3JpcHRpb24gY29udGFpbmluZyBwaW4gbnVtYmVy IGFuZCBwaW4gbmFtZS4NCj4gPiArICoNCj4gPiArICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MgZWxz ZSBlcnJvciBjb2RlLg0KPiA+ICsgKi8NCj4gPiArc3RhdGljIGludCB6eW5xbXBfcGluY3RybF9w cmVwYXJlX3Bpbl9kZXNjKHN0cnVjdCBkZXZpY2UgKmRldiwNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHBpbmN0cmxfcGluX2Rlc2MN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKip6eW5xbXBf cGlucywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z aWduZWQgaW50ICpucGlucykgew0KPiA+ICsgICAgICAgc3RydWN0IHBpbmN0cmxfcGluX2Rlc2Mg KnBpbnMsICpwaW47DQo+ID4gKyAgICAgICBpbnQgcmV0Ow0KPiA+ICsgICAgICAgaW50IGk7DQo+ ID4gKw0KPiA+ICsgICAgICAgcmV0ID0genlucW1wX3BpbmN0cmxfZ2V0X251bV9waW5zKG5waW5z KTsNCj4gPiArICAgICAgIGlmIChyZXQpDQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiByZXQ7 DQo+ID4gKw0KPiA+ICsgICAgICAgcGlucyA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqcGlu cykgKiAqbnBpbnMsIEdGUF9LRVJORUwpOw0KPiA+ICsgICAgICAgaWYgKCFwaW5zKQ0KPiA+ICsg ICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsNCj4gPiArDQo+ID4gKyAgICAgICBmb3IgKGkg PSAwOyBpIDwgKm5waW5zOyBpKyspIHsNCj4gPiArICAgICAgICAgICAgICAgcGluID0gJnBpbnNb aV07DQo+ID4gKyAgICAgICAgICAgICAgIHBpbi0+bnVtYmVyID0gaTsNCj4gPiArICAgICAgICAg ICAgICAgcGluLT5uYW1lID0gZGV2bV9rYXNwcmludGYoZGV2LCBHRlBfS0VSTkVMLCAiJXMlZCIs DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFpZTlFNUF9Q SU5fUFJFRklYLCBpKTsNCj4gDQo+IG5vIE5VTEwgY2hlY2s/IQ0KSSB3aWxsIHVwZGF0ZSBpbiB0 aGUgbmV4dCBzZXJpZXMuDQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAgKnp5bnFt cF9waW5zID0gcGluczsNCj4gPiArDQo+ID4gKyAgICAgICByZXR1cm4gMDsNCj4gPiArfQ0KPiA+ ICsNCj4gPiArc3RhdGljIGludCB6eW5xbXBfcGluY3RybF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1f ZGV2aWNlICpwZGV2KSB7DQo+ID4gKyAgICAgICBzdHJ1Y3QgenlucW1wX3BpbmN0cmwgKnBjdHJs Ow0KPiA+ICsgICAgICAgaW50IHJldDsNCj4gPiArDQo+ID4gKyAgICAgICBwY3RybCA9IGRldm1f a3phbGxvYygmcGRldi0+ZGV2LCBzaXplb2YoKnBjdHJsKSwgR0ZQX0tFUk5FTCk7DQo+ID4gKyAg ICAgICBpZiAoIXBjdHJsKQ0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsNCj4g PiArDQo+ID4gKyAgICAgICByZXQgPSB6eW5xbXBfcGluY3RybF9wcmVwYXJlX3Bpbl9kZXNjKCZw ZGV2LT5kZXYsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICZ6eW5xbXBfZGVzYy5waW5zLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAmenlucW1wX2Rlc2MubnBpbnMpOw0KPiA+ICsgICAgICAgaWYgKHJl dCkgew0KPiA+ICsgICAgICAgICAgICAgICBkZXZfZXJyKCZwZGV2LT5kZXYsICIlcygpIHBpbiBk ZXNjIHByZXBhcmUgZmFpbCB3aXRoICVkXG4iLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg IF9fZnVuY19fLCByZXQpOw0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KPiA+ICsg ICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgIHJldCA9IHp5bnFtcF9waW5jdHJsX3ByZXBhcmVf ZnVuY3Rpb25faW5mbygmcGRldi0+ZGV2LCBwY3RybCk7DQo+ID4gKyAgICAgICBpZiAocmV0KSB7 DQo+ID4gKyAgICAgICAgICAgICAgIGRldl9lcnIoJnBkZXYtPmRldiwgIiVzKCkgZnVuY3Rpb24g aW5mbyBwcmVwYXJlIGZhaWwgd2l0aCAlZFxuIiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICBfX2Z1bmNfXywgcmV0KTsNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4gPiAr ICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICBwY3RybC0+cGN0cmwgPSBwaW5jdHJsX3JlZ2lz dGVyKCZ6eW5xbXBfZGVzYywgJnBkZXYtPmRldiwgcGN0cmwpOw0KPiA+ICsgICAgICAgaWYgKElT X0VSUihwY3RybC0+cGN0cmwpKSB7DQo+IA0KPiA+ICsgICAgICAgICAgICAgICByZXQgPSBQVFJf RVJSKHBjdHJsLT5wY3RybCk7DQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+IA0K PiBGb2xkIGl0IGFuZCBkcm9wIHt9Lg0KSSB3aWxsIGNoYW5nZSB0aGlzIHRvICdyZXR1cm4gUFRS X0VSUihwY3RybC0+cGN0cmwpOycgaW4gbmV4dCB2ZXJzaW9uLg0KPiANCj4gPiArICAgICAgIH0N Cj4gPiArDQo+ID4gKyAgICAgICBwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBwY3RybCk7DQo+ IA0KPiA+ICsgICAgICAgZGV2X2luZm8oJnBkZXYtPmRldiwgInp5bnFtcCBwaW5jdHJsIGluaXRp YWxpemVkXG4iKTsNCj4gDQo+IFVubmVlZGVkIG5vaXNlLg0KSSB3aWxsIHJlbW92ZSB0aGlzIGlu IG5leHQgdmVyc2lvbi4NCj4gDQo+ID4gKyAgICAgICByZXR1cm4gcmV0Ow0KPiA+ICt9DQo+ID4g Kw0KPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCB6eW5xbXBfcGluY3RybF9v Zl9tYXRjaFtdID0gew0KPiA+ICsgICAgICAgeyAuY29tcGF0aWJsZSA9ICJ4bG54LHp5bnFtcC1w aW5jdHJsIiB9LA0KPiA+ICsgICAgICAgeyB9DQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdGF0aWMg c3RydWN0IHBsYXRmb3JtX2RyaXZlciB6eW5xbXBfcGluY3RybF9kcml2ZXIgPSB7DQo+ID4gKyAg ICAgICAuZHJpdmVyID0gew0KPiA+ICsgICAgICAgICAgICAgICAubmFtZSA9ICJ6eW5xbXAtcGlu Y3RybCIsDQo+ID4gKyAgICAgICAgICAgICAgIC5vZl9tYXRjaF90YWJsZSA9IHp5bnFtcF9waW5j dHJsX29mX21hdGNoLA0KPiA+ICsgICAgICAgfSwNCj4gPiArICAgICAgIC5wcm9iZSA9IHp5bnFt cF9waW5jdHJsX3Byb2JlLCB9Ow0KPiA+ICtidWlsdGluX3BsYXRmb3JtX2RyaXZlcih6eW5xbXBf cGluY3RybF9kcml2ZXIpOw0KPiANCj4gSSBiZWxpZXZlIHRoZSBjb2RlIGJhc2UgY2FuIGJlIGVh c2lseSBzaHJpbmtlZCBieSAxMCUuIFNvLCBuZXh0IHZlcnNpb24gSQ0KPiB3b3VsZCBleHBlY3Qg c29tZXRoaW5nIGxpa2UgPCAxMDAwIExPQ3MgaW4gdGhlIHN0YXQuDQpCeSByZW1vdmluZyB0aGUg a2VybmVsIGRvY3MgZm9yIHRoZSBvYnZpb3VzIG9uZXMgd2lsbCBkZWZpbml0ZWx5IHJlYWNoLg0K DQpSZWdhcmRzDQpTYWkgS3Jpc2huYQ0KPiANCj4gLS0NCj4gV2l0aCBCZXN0IFJlZ2FyZHMsDQo+ IEFuZHkgU2hldmNoZW5rbw0K