From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 0FC65A0350; Sun, 21 Jun 2020 13:18:45 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id D013E1C038; Sun, 21 Jun 2020 13:18:43 +0200 (CEST) Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-eopbgr00050.outbound.protection.outlook.com [40.107.0.50]) by dpdk.org (Postfix) with ESMTP id CDA8C1C036 for ; Sun, 21 Jun 2020 13:18:42 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=F/N0d1NMRFOPw2th33tQTeILS2V0m9ZnEVTcl/BECTtWKGjapnmGxoHv53eeY2NJG8ns2Yk/X2ChEXJeZ4aTx+rNl24hZNkVv1x5L60+0rmw+cj+nG4bIapl+Ai7VQ/MkS/2raiggbU5as5mRolW3zuvB+HIwjIYtvl/dWR4nJ4DC0uJT3q0gOfsxWJonYmMkUknnGguHwaN0SLSeqA1OdlfzR3HJ5DbubV8oblGgHQ2aJApa4mGXqNTVdwH7YFrqoZ2QS04mG5a2aUIesbl976D9qqiEAadPUiqeDHXnuNTckLymgK8j7Uz5RO5stqTIIlj3CWHBiENk53hzwe7uw== 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=LPkr86mqWd2aIKJsDbSFuUDdy5rQ3ivfEgn+eBvdR1I=; b=DlQuSISLS5+vCJZJj6QtjhOdudrtx3QeAt9ff1XODCaYUogKYXvLDeb+P85VBRIIHKxbwBeZVUkZ7k/WzkK3Ib+L/4vWVI4pSpiCN/BYul0+Td9tOdnyoTmseBWPsWx/Z9QC/7Tp59mlYYd1ZpBpMrJTmAuNMjToahMb7OL3RVznGTQp3n1avedJ9yjKeG0OxDMAmNYGdkJv7l6Q1hwo/5N5TmspwIfAko7vsiU2TXSnunPLZtpO9r8LE/Thrwvre7n+z7abONt+hYlPVDx+MpdnJZr+p4dgw6sCNpiVD1pcWedD7fDkDAXjW1kLm2WSn6choygkqf2K1WsyYL9mIg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=LPkr86mqWd2aIKJsDbSFuUDdy5rQ3ivfEgn+eBvdR1I=; b=JCNgHy6tmimN4RHbOziZ0sa41oz12WnwPlJm/u1k2cbKwI1c8E7+L+ZY7eeGDCUcqcPh+MCzpDCJ3BLiA1E4d5Ubcy1qXML5Cs+PPIAXTALIPamtJIOizPZ+MTJXN4avOO5KbbfDWu/1w/an63S1UvTBUJr/8Ya+/kQy9ljuwMg= Received: from AM6PR05MB5176.eurprd05.prod.outlook.com (2603:10a6:20b:63::30) by AM6PR05MB6472.eurprd05.prod.outlook.com (2603:10a6:20b:be::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3109.22; Sun, 21 Jun 2020 11:18:40 +0000 Received: from AM6PR05MB5176.eurprd05.prod.outlook.com ([fe80::9024:accb:4d6b:805f]) by AM6PR05MB5176.eurprd05.prod.outlook.com ([fe80::9024:accb:4d6b:805f%3]) with mapi id 15.20.3109.025; Sun, 21 Jun 2020 11:18:40 +0000 From: Ori Kam To: Ori Kam , "jerinj@marvell.com" , "xiang.w.wang@intel.com" CC: "guyk@marvell.com" , "dev@dpdk.org" , "pbhagavatula@marvell.com" , Shahaf Shuler , "hemant.agrawal@nxp.com" , Opher Reviv , Alex Rosenbaum , "dovrat@marvell.com" , "pkapoor@marvell.com" , "nipun.gupta@nxp.com" , "bruce.richardson@intel.com" , "yang.a.hong@intel.com" , "harry.chang@intel.com" , "gu.jian1@zte.com.cn" , "shanjiangh@chinatelecom.cn" , "zhangy.yun@chinatelecom.cn" , "lixingfu@huachentel.com" , "wushuai@inspur.com" , "yuyingxia@yxlink.com" , "fanchenggang@sunyainfo.com" , "davidfgao@tencent.com" , "liuzhong1@chinaunicom.cn" , "zhaoyong11@huawei.com" , "oc@yunify.com" , "jim@netgate.com" , "hongjun.ni@intel.com" , "j.bromhead@titan-ic.com" , "deri@ntop.org" , "fc@napatech.com" , "arthur.su@lionic.com" , Thomas Monjalon Thread-Topic: [dpdk-dev] [PATCH v3 1/4] regexdev: introduce regexdev subsystem Thread-Index: AQHWJFRmhC67jP00s0eAXmO6TTWIyqjjMmaQ Date: Sun, 21 Jun 2020 11:18:39 +0000 Message-ID: References: <1585464438-111285-1-git-send-email-orika@mellanox.com> <1588844756-10086-1-git-send-email-orika@mellanox.com> <1588844756-10086-2-git-send-email-orika@mellanox.com> In-Reply-To: <1588844756-10086-2-git-send-email-orika@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: mellanox.com; dkim=none (message not signed) header.d=none;mellanox.com; dmarc=none action=none header.from=mellanox.com; x-originating-ip: [147.236.152.129] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 9b9f19e3-f045-41da-c208-08d815d4d995 x-ms-traffictypediagnostic: AM6PR05MB6472: x-ld-processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:7219; x-forefront-prvs: 04410E544A x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: pHWx7nB7Q9aJIa/ggc7HRZd1haLJqOe7rkEhB/jRKoAVvKWiTODXHPjeJSvqNAlo5ZxoonZXZJQrecG5158uA59KJp+5TLjDZyto3dgxfuQvyWAQeUCFJW5ZXGyQpXTlBJ54RS8eUDzZk6ZBchYgjmrS1M3hlYInf0okq8tYoaDuWvFne8Ezhh7ZJodry5MQnX3tH0Zfj4Mm7xBtDEgGhPTs8WJO3A0bxyB3BD9RqdQ80bd++St2CpHipAAl6t5+pfZyHUO8errh/QA51hMj34n/pft0E/dy5znGUMXV1NG9trUBj1uMWCHkUSinQq2aIvVmignrAauDG0reNme4PmAC2HG2GpRuOo2rIMmC494= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM6PR05MB5176.eurprd05.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(4636009)(39860400002)(366004)(396003)(136003)(346002)(376002)(5660300002)(8936002)(966005)(66946007)(110136005)(45080400002)(52536014)(8676002)(76116006)(66476007)(66556008)(64756008)(316002)(66446008)(7416002)(7406005)(54906003)(26005)(86362001)(9686003)(33656002)(478600001)(186003)(4326008)(83380400001)(71200400001)(7696005)(53546011)(55016002)(6506007)(2906002)(30864003)(559001)(579004); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: lPjAER4sPbYbQEjSkvjMLjXIaTfUgqLu37bmzlcAe0AIMyFKlFBnJEISEjJKiqGbTj/bjte0KraNTJ6kMMTlUpbaXCURfiUEvj3fUBQIeeLdS9LmIAYGZaX5HMTmfItrGpm7tbO605rQ3YfRSzoWHYo7IsV8YlFFu7ofSvowGrCJ7Qohh18mmuCoDnB5LC10d5Sf+YRq3EpSK9BpLizHsApRo5e3aXq4zfQ9N8jhT9XTzQHZPh/VY7ItviavleKimNvCkoT1AGngaLxh4zd+9IIk1JPqfKWEd/V9ijqYPu48GUl6j7m5JSM9fM7FVVvpuK/+xvF3k5LiUZjFwd/Hm1J8cvX2f7BJKweiKPXaTQS+VWkSrXMYsu+EjkwDVA6jECbvdaIfXOZph7N8s4mKIDnXEkhNDFIWrdfLBK5VXBatWv9aV/HW3pxwJsUpKV+zSg129W8AQhE6iVKOTQ/EMv6RdAZCK5d4DgJnla14pPELGOK/HlOweNWd0hq95FZN Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9b9f19e3-f045-41da-c208-08d815d4d995 X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Jun 2020 11:18:39.9116 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: mLiM52+8+KZKeOvDRZiqcECHo//XmgmCQqHp5j2qq0/RV+UFXPAcdymBvgYzkhSO4rGj0+p0MuMw48oHfzuf2Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR05MB6472 Subject: Re: [dpdk-dev] [PATCH v3 1/4] regexdev: introduce regexdev subsystem X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" SGkgQWxsLA0KDQpUaGlzIGlzIHRoZSBvbmx5IHBhdGNoIHRoYXQgaXMgbWlzc2luZyBhbiBhY2ss DQoNCkkgcGxhbiB0byBzdWJtaXQgdGhlIFBNRCBjb2RlIG5leHQgd2Vlaywgc28gcGxlYXNlIHJl dmlldyBhbmQgYWNrIHRoaXMgcGF0Y2guDQoNClRoYW5rcywNCk9yaQ0KDQo+IC0tLS0tT3JpZ2lu YWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IGRldiA8ZGV2LWJvdW5jZXNAZHBkay5vcmc+IE9uIEJl aGFsZiBPZiBPcmkgS2FtDQo+IFNlbnQ6IFRodXJzZGF5LCBNYXkgNywgMjAyMCAxMjo0NiBQTQ0K PiBUbzogamVyaW5qQG1hcnZlbGwuY29tOyB4aWFuZy53LndhbmdAaW50ZWwuY29tDQo+IENjOiBn dXlrQG1hcnZlbGwuY29tOyBkZXZAZHBkay5vcmc7IHBiaGFnYXZhdHVsYUBtYXJ2ZWxsLmNvbTsg U2hhaGFmDQo+IFNodWxlciA8c2hhaGFmc0BtZWxsYW5veC5jb20+OyBoZW1hbnQuYWdyYXdhbEBu eHAuY29tOyBPcGhlciBSZXZpdg0KPiA8b3BoZXJAbWVsbGFub3guY29tPjsgQWxleCBSb3NlbmJh dW0gPGFsZXhyQG1lbGxhbm94LmNvbT47DQo+IGRvdnJhdEBtYXJ2ZWxsLmNvbTsgcGthcG9vckBt YXJ2ZWxsLmNvbTsgbmlwdW4uZ3VwdGFAbnhwLmNvbTsNCj4gYnJ1Y2UucmljaGFyZHNvbkBpbnRl bC5jb207IHlhbmcuYS5ob25nQGludGVsLmNvbTsgaGFycnkuY2hhbmdAaW50ZWwuY29tOw0KPiBn dS5qaWFuMUB6dGUuY29tLmNuOyBzaGFuamlhbmdoQGNoaW5hdGVsZWNvbS5jbjsNCj4gemhhbmd5 Lnl1bkBjaGluYXRlbGVjb20uY247IGxpeGluZ2Z1QGh1YWNoZW50ZWwuY29tOyB3dXNodWFpQGlu c3B1ci5jb207DQo+IHl1eWluZ3hpYUB5eGxpbmsuY29tOyBmYW5jaGVuZ2dhbmdAc3VueWFpbmZv LmNvbTsNCj4gZGF2aWRmZ2FvQHRlbmNlbnQuY29tOyBsaXV6aG9uZzFAY2hpbmF1bmljb20uY247 DQo+IHpoYW95b25nMTFAaHVhd2VpLmNvbTsgb2NAeXVuaWZ5LmNvbTsgamltQG5ldGdhdGUuY29t Ow0KPiBob25nanVuLm5pQGludGVsLmNvbTsgai5icm9taGVhZEB0aXRhbi1pYy5jb207IGRlcmlA bnRvcC5vcmc7DQo+IGZjQG5hcGF0ZWNoLmNvbTsgYXJ0aHVyLnN1QGxpb25pYy5jb207IFRob21h cyBNb25qYWxvbg0KPiA8dGhvbWFzQG1vbmphbG9uLm5ldD47IE9yaSBLYW0gPG9yaWthQG1lbGxh bm94LmNvbT4NCj4gU3ViamVjdDogW2RwZGstZGV2XSBbUEFUQ0ggdjMgMS80XSByZWdleGRldjog aW50cm9kdWNlIHJlZ2V4ZGV2IHN1YnN5c3RlbQ0KPiANCj4gRnJvbTogSmVyaW4gSmFjb2IgPGpl cmluakBtYXJ2ZWxsLmNvbT4NCj4gDQo+IEFzIFJlZ0V4IHVzYWdlIGJlY29tZSBtb3JlIHVzZWQg YnkgRFBESyBhcHBsaWNhdGlvbnMsIGZvciBleGFtcGxlOg0KPiAqIE5leHQgR2VuZXJhdGlvbiBG aXJld2FsbHMgKE5HRlcpDQo+ICogRGVlcCBQYWNrZXQgYW5kIEZsb3cgSW5zcGVjdGlvbiAoRFBJ KQ0KPiAqIEludHJ1c2lvbiBQcmV2ZW50aW9uIFN5c3RlbXMgKElQUykNCj4gKiBERG9TIE1pdGln YXRpb24NCj4gKiBOZXR3b3JrIE1vbml0b3JpbmcNCj4gKiBEYXRhIExvc3MgUHJldmVudGlvbiAo RExQKQ0KPiAqIFNtYXJ0IE5JQ3MNCj4gKiBHcmFtbWFyIGJhc2VkIGNvbnRlbnQgcHJvY2Vzc2lu Zw0KPiAqIFVSTCwgc3BhbSBhbmQgYWR3YXJlIGZpbHRlcmluZw0KPiAqIEFkdmFuY2VkIGF1ZGl0 aW5nIGFuZCBwb2xpY2luZyBvZiB1c2VyL2FwcGxpY2F0aW9uIHNlY3VyaXR5IHBvbGljaWVzDQo+ ICogRmluYW5jaWFsIGRhdGEgbWluaW5nIC0gcGFyc2luZyBvZiBzdHJlYW1lZCBmaW5hbmNpYWwg ZmVlZHMNCj4gKiBBcHBsaWNhdGlvbiByZWNvZ25pdGlvbi4NCj4gKiBEbWVtb3J5IGludHJvc3Bl Y3Rpb24uDQo+ICogTmF0dXJhbCBMYW5ndWFnZSBQcm9jZXNzaW5nIChOTFApDQo+ICogU2VudGlt ZW50IEFuYWx5c2lzLg0KPiAqIEJpZyBkYXRhIGRhdGFic2UgYWNjZWxlcmF0aW9uLg0KPiAqIENv bXB1dGF0aW9uYWwgc3RvcmFnZS4NCj4gDQo+IE51bWJlciBvZiBQTUQgcHJvdmlkZXJzIHN0YXJ0 ZWQgdG8gd29yayBvbiBIVyBpbXBsZW1lbnRhdGlvbiwNCj4gYWxvbmcgc2lkZSB3aXRoIFNXIGlt cGxlbWVudGF0aW9ucy4NCj4gDQo+IFRoaXMgbGliIGFkZHMgdGhlIHN1cHBvcnQgZm9yIHRob3Nl IGtpbmQgb2YgZGV2aWNlcy4NCj4gDQo+IFRoZSBSZWdFeCBEZXZpY2UgQVBJIGlzIGNvbXBvc2Vk IG9mIHR3byBwYXJ0czoNCj4gLSBUaGUgYXBwbGljYXRpb24tb3JpZW50ZWQgUmVnRXggQVBJIHRo YXQgaW5jbHVkZXMgZnVuY3Rpb25zIHRvIHNldHVwDQo+ICAgYSBSZWdFeCBkZXZpY2UgKGNvbmZp Z3VyZSBpdCwgc2V0dXAgaXRzIHF1ZXVlIHBhaXJzIGFuZCBzdGFydCBpdCksDQo+ICAgdXBkYXRl IHRoZSBydWxlIGRhdGFiYXNlIGFuZCBzbyBvbi4NCj4gDQo+IC0gVGhlIGRyaXZlci1vcmllbnRl ZCBSZWdFeCBBUEkgdGhhdCBleHBvcnRzIGEgZnVuY3Rpb24gYWxsb3dpbmcNCj4gICBhIFJlZ0V4 IHBvbGwgTW9kZSBEcml2ZXIgKFBNRCkgdG8gc2ltdWx0YW5lb3VzbHkgcmVnaXN0ZXIgaXRzZWxm IGFzDQo+ICAgYSBSZWdFeCBkZXZpY2UgZHJpdmVyLg0KPiANCj4gUmVnRXggZGV2aWNlIGNvbXBv bmVudHMgYW5kIGRlZmluaXRpb25zOg0KPiANCj4gICAgICstLS0tLS0tLS0tLS0tLS0tLSsNCj4g ICAgIHwgICAgICAgICAgICAgICAgIHwNCj4gICAgIHwgICAgICAgICAgICAgICAgIG8tLS0tLS0t LS0rICAgIHJ0ZV9yZWdleGRldl9bZW58ZGVdcXVldWVfYnVyc3QoKQ0KPiAgICAgfCAgIFBDUkUg YmFzZWQgICAgby0tLS0tLSsgIHwgICAgICAgICAgICAgICB8DQo+ICAgICB8ICBSZWdFeCBwYXR0 ZXJuICB8ICAgICAgfCAgfCAgKy0tLS0tLS0tKyAgIHwNCj4gICAgIHwgbWF0Y2hpbmcgZW5naW5l IG8tLS0tLS0rLS0rLS1vICAgICAgICB8ICAgfCAgICArLS0tLS0tKw0KPiAgICAgfCAgICAgICAg ICAgICAgICAgfCAgICAgIHwgIHwgIHwgcXVldWUgIHw8PT1vPT09PnxDb3JlIDB8DQo+ICAgICB8 ICAgICAgICAgICAgICAgICBvLS0tLSsgfCAgfCAgfCBwYWlyIDAgfCAgICAgICAgfCAgICAgIHwN Cj4gICAgIHwgICAgICAgICAgICAgICAgIHwgICAgfCB8ICB8ICArLS0tLS0tLS0rICAgICAgICAr LS0tLS0tKw0KPiAgICAgKy0tLS0tLS0tLS0tLS0tLS0tKyAgICB8IHwgIHwNCj4gICAgICAgICAg ICBeICAgICAgICAgICAgICAgfCB8ICB8ICArLS0tLS0tLS0rDQo+ICAgICAgICAgICAgfCAgICAg ICAgICAgICAgIHwgfCAgfCAgfCAgICAgICAgfCAgICAgICAgKy0tLS0tLSsNCj4gICAgICAgICAg ICB8ICAgICAgICAgICAgICAgfCArLS0rLS1vIHF1ZXVlICB8PD09PT09PT58Q29yZSAxfA0KPiAg ICAgICAgUnVsZXxEYXRhYmFzZSAgICAgICB8ICAgIHwgIHwgcGFpciAxIHwgICAgICAgIHwgICAg ICB8DQo+ICAgICArLS0tLS0tKy0tLS0tLS0tLS0rICAgIHwgICAgfCAgKy0tLS0tLS0tKyAgICAg ICAgKy0tLS0tLSsNCj4gICAgIHwgICAgIEdyb3VwIDAgICAgIHwgICAgfCAgICB8DQo+ICAgICB8 ICstLS0tLS0tLS0tLS0tKyB8ICAgIHwgICAgfCAgKy0tLS0tLS0tKyAgICAgICAgKy0tLS0tLSsN Cj4gICAgIHwgfCBSdWxlcyAwLi5uICB8IHwgICAgfCAgICB8ICB8ICAgICAgICB8ICAgICAgICB8 Q29yZSAyfA0KPiAgICAgfCArLS0tLS0tLS0tLS0tLSsgfCAgICB8ICAgICstLW8gcXVldWUgIHw8 PT09PT09PnwgICAgICB8DQo+ICAgICB8ICAgICBHcm91cCAxICAgICB8ICAgIHwgICAgICAgfCBw YWlyIDIgfCAgICAgICAgKy0tLS0tLSsNCj4gICAgIHwgKy0tLS0tLS0tLS0tLS0rIHwgICAgfCAg ICAgICArLS0tLS0tLS0rDQo+ICAgICB8IHwgUnVsZXMgMC4ubiAgfCB8ICAgIHwNCj4gICAgIHwg Ky0tLS0tLS0tLS0tLS0rIHwgICAgfCAgICAgICArLS0tLS0tLS0rDQo+ICAgICB8ICAgICBHcm91 cCAyICAgICB8ICAgIHwgICAgICAgfCAgICAgICAgfCAgICAgICAgKy0tLS0tLSsNCj4gICAgIHwg Ky0tLS0tLS0tLS0tLS0rIHwgICAgfCAgICAgICB8IHF1ZXVlICB8PD09PT09PT58Q29yZSBufA0K PiAgICAgfCB8IFJ1bGVzIDAuLm4gIHwgfCAgICArLS0tLS0tLW8gcGFpciBuIHwgICAgICAgIHwg ICAgICB8DQo+ICAgICB8ICstLS0tLS0tLS0tLS0tKyB8ICAgICAgICAgICAgKy0tLS0tLS0tKyAg ICAgICAgKy0tLS0tLSsNCj4gICAgIHwgICAgIEdyb3VwIG4gICAgIHwNCj4gICAgIHwgKy0tLS0t LS0tLS0tLS0rIHw8LS0tLS0tLXJ0ZV9yZWdleGRldl9ydWxlX2RiX3VwZGF0ZSgpDQo+ICAgICB8 IHwgICAgICAgICAgICAgfCB8PC0tLS0tLS1ydGVfcmVnZXhkZXZfcnVsZV9kYl9jb21waWxlX2Fj dGl2YXRlKCkNCj4gICAgIHwgfCBSdWxlcyAwLi5uICB8IHw8LS0tLS0tLXJ0ZV9yZWdleGRldl9y dWxlX2RiX2ltcG9ydCgpDQo+ICAgICB8ICstLS0tLS0tLS0tLS0tKyB8LS0tLS0tLT5ydGVfcmVn ZXhkZXZfcnVsZV9kYl9leHBvcnQoKQ0KPiAgICAgKy0tLS0tLS0tLS0tLS0tLS0tKw0KPiANCj4g UmVnRXg6IEEgcmVndWxhciBleHByZXNzaW9uIGlzIGEgY29uY2lzZSBhbmQgZmxleGlibGUgbWVh bnMgZm9yIG1hdGNoaW5nDQo+IHN0cmluZ3Mgb2YgdGV4dCwgc3VjaCBhcyBwYXJ0aWN1bGFyIGNo YXJhY3RlcnMsIHdvcmRzLCBvciBwYXR0ZXJucyBvZg0KPiBjaGFyYWN0ZXJzLiBBIGNvbW1vbiBh YmJyZXZpYXRpb24gZm9yIHRoaXMgaXMgw6J+QH5cUmVnRXjDon5Afl0uDQo+IA0KPiBSZWdFeCBk ZXZpY2U6IEEgaGFyZHdhcmUgb3Igc29mdHdhcmUtYmFzZWQgaW1wbGVtZW50YXRpb24gb2YgUmVn RXgNCj4gZGV2aWNlIEFQSSBmb3IgUENSRSBiYXNlZCBwYXR0ZXJuIG1hdGNoaW5nIHN5bnRheCBh bmQgc2VtYW50aWNzLg0KPiANCj4gUENSRSBSZWdFeCBzeW50YXggYW5kIHNlbWFudGljcyBzcGVj aWZpY2F0aW9uOg0KPiBodHRwczovL2V1cjAzLnNhZmVsaW5rcy5wcm90ZWN0aW9uLm91dGxvb2su Y29tLz91cmw9aHR0cCUzQSUyRiUyRnJlZ2V4a2l0LnNvDQo+IHVyY2Vmb3JnZS5uZXQlMkZEb2N1 bWVudGF0aW9uJTJGcGNyZSUyRnBjcmVwYXR0ZXJuLmh0bWwmYW1wO2RhdGE9MDIlDQo+IDdDMDEl N0NvcmlrYSU0MG1lbGxhbm94LmNvbSU3QzM5ZjU3NjVlNDA1YzQ2YjE4YmEzMDhkN2YyNmI4NDgw JTdDDQo+IGE2NTI5NzFjN2QyZTRkOWJhNmE0ZDE0OTI1NmY0NjFiJTdDMCU3QzAlN0M2MzcyNDQ0 MTU5NjExNDQ5NjgmYQ0KPiBtcDtzZGF0YT1OV1lqYTNnNW5UZXJTZTh2SUZTSHBUZUs4aXBLT2hN blhtbU5CdUp0V3FZJTNEJmFtcDtyZXMNCj4gZXJ2ZWQ9MA0KPiANCj4gUmVnRXggcXVldWUgcGFp cjogRWFjaCBSZWdFeCBkZXZpY2Ugc2hvdWxkIGhhdmUgb25lIG9yIG1vcmUgcXVldWUgcGFpciB0 bw0KPiB0cmFuc21pdCBhIGJ1cnN0IG9mIHBhdHRlcm4gbWF0Y2hpbmcgcmVxdWVzdCBhbmQgcmVj ZWl2ZSBhIGJ1cnN0IG9mDQo+IHJlY2VpdmUgdGhlIHBhdHRlcm4gbWF0Y2hpbmcgcmVzcG9uc2Uu IFRoZSBwYXR0ZXJuIG1hdGNoaW5nDQo+IHJlcXVlc3QvcmVzcG9uc2UgZW1iZWRkZWQgaW4gKnJ0 ZV9yZWdleF9vcHMqIHN0cnVjdHVyZS4NCj4gDQo+IFJ1bGU6IEEgcGF0dGVybiBtYXRjaGluZyBy dWxlIGV4cHJlc3NlZCBpbiBQQ1JFIFJlZ0V4IHN5bnRheCBhbG9uZyB3aXRoDQo+IE1hdGNoIElE IGFuZCBHcm91cCBJRCB0byBpZGVudGlmeSB0aGUgcnVsZSB1cG9uIHRoZSBtYXRjaC4NCj4gDQo+ IFJ1bGUgZGF0YWJhc2U6IFRoZSBSZWdFeCBkZXZpY2UgYWNjZXB0cyByZWd1bGFyIGV4cHJlc3Np b25zIGFuZCBjb252ZXJ0cw0KPiB0aGVtIGludG8gYSBjb21waWxlZCBydWxlIGRhdGFiYXNlIHRo YXQgY2FuIHRoZW4gYmUgdXNlZCB0byBzY2FuIGRhdGEuDQo+IENvbXBpbGF0aW9uIGFsbG93cyB0 aGUgZGV2aWNlIHRvIGFuYWx5emUgdGhlIGdpdmVuIHBhdHRlcm4ocykgYW5kDQo+IHByZS1kZXRl cm1pbmUgaG93IHRvIHNjYW4gZm9yIHRoZXNlIHBhdHRlcm5zIGluIGFuIG9wdGltaXplZCBmYXNo aW9uIHRoYXQNCj4gd291bGQgYmUgZmFyIHRvbyBleHBlbnNpdmUgdG8gY29tcHV0ZSBhdCBydW4t dGltZS4gQSBydWxlIGRhdGFiYXNlDQo+IGNvbnRhaW5zIGEgc2V0IG9mIHJ1bGVzIHRoYXQgY29t cGlsZWQgaW4gZGV2aWNlIHNwZWNpZmljIGJpbmFyeSBmb3JtLg0KPiANCj4gTWF0Y2ggSUQgb3Ig UnVsZSBJRDogQSB1bmlxdWUgaWRlbnRpZmllciBwcm92aWRlZCBhdCB0aGUgdGltZSBvZiBydWxl DQo+IGNyZWF0aW9uIGZvciB0aGUgYXBwbGljYXRpb24gdG8gaWRlbnRpZnkgdGhlIHJ1bGUgdXBv biBtYXRjaC4NCj4gDQo+IEdyb3VwIElEOiBHcm91cCBvZiBydWxlcyBjYW4gYmUgZ3JvdXBlZCB1 bmRlciBvbmUgZ3JvdXAgSUQgdG8gZW5hYmxlDQo+IHJ1bGUgaXNvbGF0aW9uIGFuZCBlZmZlY3Rp dmUgcGF0dGVybiBtYXRjaGluZy4gQSB1bmlxdWUgZ3JvdXAgaWRlbnRpZmllcg0KPiBwcm92aWRl ZCBhdCB0aGUgdGltZSBvZiBydWxlIGNyZWF0aW9uIGZvciB0aGUgYXBwbGljYXRpb24gdG8gaWRl bnRpZnkNCj4gdGhlIHJ1bGUgdXBvbiBtYXRjaC4NCj4gDQo+IFNjYW46IEEgcGF0dGVybiBtYXRj aGluZyByZXF1ZXN0IHRocm91Z2ggKmVucXVldWUqIEFQSS4NCj4gDQo+IEl0IG1heSBwb3NzaWJs ZSB0aGF0IGEgZ2l2ZW4gUmVnRXggZGV2aWNlIG1heSBub3Qgc3VwcG9ydCBhbGwgdGhlDQo+IGZl YXR1cmVzDQo+IG9mIFBDUkUuIFRoZSBhcHBsaWNhdGlvbiBtYXkgcHJvYmUgdW5zdXBwb3J0ZWQg ZmVhdHVyZXMgdGhyb3VnaA0KPiBzdHJ1Y3QgcnRlX3JlZ2V4ZGV2X2luZm86OnBjcmVfdW5zdXBf ZmxhZ3MNCj4gDQo+IEJ5IGRlZmF1bHQsIGFsbCB0aGUgZnVuY3Rpb25zIG9mIHRoZSBSZWdFeCBE ZXZpY2UgQVBJIGV4cG9ydGVkIGJ5IGEgUE1EDQo+IGFyZSBsb2NrLWZyZWUgZnVuY3Rpb25zIHdo aWNoIGFzc3VtZSB0byBub3QgYmUgaW52b2tlZCBpbiBwYXJhbGxlbCBvbg0KPiBkaWZmZXJlbnQg bG9naWNhbCBjb3JlcyB0byB3b3JrIG9uIHRoZSBzYW1lIHRhcmdldCBvYmplY3QuIEZvciBpbnN0 YW5jZSwNCj4gdGhlIGRlcXVldWUgZnVuY3Rpb24gb2YgYSBQTUQgY2Fubm90IGJlIGludm9rZWQg aW4gcGFyYWxsZWwgb24gdHdvIGxvZ2ljYWwNCj4gY29yZXMgdG8gb3BlcmF0ZXMgb24gc2FtZSBS ZWdFeCBxdWV1ZSBwYWlyLiBPZiBjb3Vyc2UsIHRoaXMgZnVuY3Rpb24NCj4gY2FuIGJlIGludm9r ZWQgaW4gcGFyYWxsZWwgYnkgZGlmZmVyZW50IGxvZ2ljYWwgY29yZSBvbiBkaWZmZXJlbnQgcXVl dWUNCj4gcGFpci4gSXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSB1cHBlciBsZXZlbCBh cHBsaWNhdGlvbiB0bw0KPiBlbmZvcmNlIHRoaXMgcnVsZS4NCj4gDQo+IEluIGFsbCBmdW5jdGlv bnMgb2YgdGhlIFJlZ0V4IEFQSSwgdGhlIFJlZ0V4IGRldmljZSBpcw0KPiBkZXNpZ25hdGVkIGJ5 IGFuIGludGVnZXIgPj0gMCBuYW1lZCB0aGUgZGV2aWNlIGlkZW50aWZpZXIgKmRldl9pZCoNCj4g DQo+IEF0IHRoZSBSZWdFeCBkcml2ZXIgbGV2ZWwsIFJlZ0V4IGRldmljZXMgYXJlIHJlcHJlc2Vu dGVkIGJ5IGEgZ2VuZXJpYw0KPiBkYXRhIHN0cnVjdHVyZSBvZiB0eXBlICpydGVfcmVnZXhkZXYq Lg0KPiBSZWdFeCBkZXZpY2VzIGFyZSBkeW5hbWljYWxseSByZWdpc3RlcmVkIGR1cmluZyB0aGUg UENJL1NvQyBkZXZpY2UNCj4gcHJvYmluZyBwaGFzZSBwZXJmb3JtZWQgYXQgRUFMIGluaXRpYWxp emF0aW9uIHRpbWUuDQo+IFdoZW4gYSBSZWdFeCBkZXZpY2UgaXMgYmVpbmcgcHJvYmVkLCBhICpy dGVfcmVnZXhkZXYqIHN0cnVjdHVyZSBhbmQNCj4gYSBuZXcgZGV2aWNlIGlkZW50aWZpZXIgYXJl IGFsbG9jYXRlZCBmb3IgdGhhdCBkZXZpY2UuIFRoZW4sIHRoZQ0KPiByZWdleGRldl9pbml0KCkg ZnVuY3Rpb24gc3VwcGxpZWQgYnkgdGhlIFJlZ0V4IGRyaXZlciBtYXRjaGluZyB0aGUNCj4gcHJv YmVkIGRldmljZSBpcyBpbnZva2VkIHRvIHByb3Blcmx5IGluaXRpYWxpemUgdGhlIGRldmljZS4N Cj4gDQo+IFRoZSByb2xlIG9mIHRoZSBkZXZpY2UgaW5pdCBmdW5jdGlvbiBjb25zaXN0cyBvZiBy ZXNldHRpbmcgdGhlIGhhcmR3YXJlDQo+IG9yIHNvZnR3YXJlIFJlZ0V4IGRyaXZlciBpbXBsZW1l bnRhdGlvbnMuDQo+IA0KPiBJZiB0aGUgZGV2aWNlIGluaXQgb3BlcmF0aW9uIGlzIHN1Y2Nlc3Nm dWwsIHRoZSBjb3JyZXNwb25kZW5jZSBiZXR3ZWVuDQo+IHRoZSBkZXZpY2UgaWRlbnRpZmllciBh c3NpZ25lZCB0byB0aGUgbmV3IGRldmljZSBhbmQgaXRzIGFzc29jaWF0ZWQNCj4gKnJ0ZV9yZWdl eGRldiogc3RydWN0dXJlIGlzIGVmZmVjdGl2ZWx5IHJlZ2lzdGVyZWQuDQo+IE90aGVyd2lzZSwg Ym90aCB0aGUgKnJ0ZV9yZWdleGRldiogc3RydWN0dXJlIGFuZCB0aGUgZGV2aWNlIGlkZW50aWZp ZXINCj4gYXJlIGZyZWVkLg0KPiANCj4gVGhlIGZ1bmN0aW9ucyBleHBvcnRlZCBieSB0aGUgYXBw bGljYXRpb24gUmVnRXggQVBJIHRvIHNldHVwIGEgZGV2aWNlDQo+IGRlc2lnbmF0ZWQgYnkgaXRz IGRldmljZSBpZGVudGlmaWVyIG11c3QgYmUgaW52b2tlZCBpbiB0aGUgZm9sbG93aW5nDQo+IG9y ZGVyOg0KPiAgICAgLSBydGVfcmVnZXhkZXZfY29uZmlndXJlKCkNCj4gICAgIC0gcnRlX3JlZ2V4 ZGV2X3F1ZXVlX3BhaXJfc2V0dXAoKQ0KPiAgICAgLSBydGVfcmVnZXhkZXZfc3RhcnQoKQ0KPiAN Cj4gVGhlbiwgdGhlIGFwcGxpY2F0aW9uIGNhbiBpbnZva2UsIGluIGFueSBvcmRlciwgdGhlIGZ1 bmN0aW9ucw0KPiBleHBvcnRlZCBieSB0aGUgUmVnRXggQVBJIHRvIGVucXVldWUgcGF0dGVybiBt YXRjaGluZyBqb2IsIGRlcXVldWUNCj4gcGF0dGVybiBtYXRjaGluZyByZXNwb25zZSwgZ2V0IHRo ZSBzdGF0cywgdXBkYXRlIHRoZSBydWxlIGRhdGFiYXNlLA0KPiBnZXQvc2V0IGRldmljZSBhdHRy aWJ1dGVzIGFuZCBzbyBvbg0KPiANCj4gSWYgdGhlIGFwcGxpY2F0aW9uIHdhbnRzIHRvIGNoYW5n ZSB0aGUgY29uZmlndXJhdGlvbiAoaS5lLiBjYWxsDQo+IHJ0ZV9yZWdleGRldl9jb25maWd1cmUo KSBvciBydGVfcmVnZXhkZXZfcXVldWVfcGFpcl9zZXR1cCgpKSwgaXQgbXVzdA0KPiBjYWxsIHJ0 ZV9yZWdleGRldl9zdG9wKCkgZmlyc3QgdG8gc3RvcCB0aGUgZGV2aWNlIGFuZCB0aGVuIGRvIHRo ZQ0KPiByZWNvbmZpZ3VyYXRpb24gYmVmb3JlIGNhbGxpbmcgcnRlX3JlZ2V4ZGV2X3N0YXJ0KCkg YWdhaW4uIFRoZSBlbnF1ZXVlIGFuZA0KPiBkZXF1ZXVlIGZ1bmN0aW9ucyBzaG91bGQgbm90IGJl IGludm9rZWQgd2hlbiB0aGUgZGV2aWNlIGlzIHN0b3BwZWQuDQo+IA0KPiBGaW5hbGx5LCBhbiBh cHBsaWNhdGlvbiBjYW4gY2xvc2UgYSBSZWdFeCBkZXZpY2UgYnkgaW52b2tpbmcgdGhlDQo+IHJ0 ZV9yZWdleGRldl9jbG9zZSgpIGZ1bmN0aW9uLg0KPiANCj4gRWFjaCBmdW5jdGlvbiBvZiB0aGUg YXBwbGljYXRpb24gUmVnRXggQVBJIGludm9rZXMgYSBzcGVjaWZpYyBmdW5jdGlvbg0KPiBvZiB0 aGUgUE1EIHRoYXQgY29udHJvbHMgdGhlIHRhcmdldCBkZXZpY2UgZGVzaWduYXRlZCBieSBpdHMg ZGV2aWNlDQo+IGlkZW50aWZpZXIuDQo+IA0KPiBGb3IgdGhpcyBwdXJwb3NlLCBhbGwgZGV2aWNl LXNwZWNpZmljIGZ1bmN0aW9ucyBvZiBhIFJlZ0V4IGRyaXZlciBhcmUNCj4gc3VwcGxpZWQgdGhy b3VnaCBhIHNldCBvZiBwb2ludGVycyBjb250YWluZWQgaW4gYSBnZW5lcmljIHN0cnVjdHVyZSBv Zg0KPiB0eXBlICpyZWdleGRldl9vcHMqLg0KPiBUaGUgYWRkcmVzcyBvZiB0aGUgKnJlZ2V4ZGV2 X29wcyogc3RydWN0dXJlIGlzIHN0b3JlZCBpbiB0aGUNCj4gKnJ0ZV9yZWdleGRldiogc3RydWN0 dXJlIGJ5IHRoZSBkZXZpY2UgaW5pdCBmdW5jdGlvbiBvZiB0aGUgUmVnRXggZHJpdmVyLA0KPiB3 aGljaCBpcyBpbnZva2VkIGR1cmluZyB0aGUgUENJL1NvQyBkZXZpY2UgcHJvYmluZyBwaGFzZSwg YXMgZXhwbGFpbmVkDQo+IGVhcmxpZXIuDQo+IA0KPiBJbiBvdGhlciB3b3JkcywgZWFjaCBmdW5j dGlvbiBvZiB0aGUgUmVnRXggQVBJIHNpbXBseSByZXRyaWV2ZXMgdGhlDQo+ICpydGVfcmVnZXhk ZXYqIHN0cnVjdHVyZSBhc3NvY2lhdGVkIHdpdGggdGhlIGRldmljZSBpZGVudGlmaWVyIGFuZA0K PiBwZXJmb3JtcyBhbiBpbmRpcmVjdCBpbnZvY2F0aW9uIG9mIHRoZSBjb3JyZXNwb25kaW5nIGRy aXZlciBmdW5jdGlvbg0KPiBzdXBwbGllZCBpbiB0aGUgKnJlZ2V4ZGV2X29wcyogc3RydWN0dXJl IG9mIHRoZSAqcnRlX3JlZ2V4ZGV2Kg0KPiBzdHJ1Y3R1cmUuDQo+IA0KPiBGb3IgcGVyZm9ybWFu Y2UgcmVhc29ucywgdGhlIGFkZHJlc3Mgb2YgdGhlIGZhc3QtcGF0aCBmdW5jdGlvbnMgb2YgdGhl DQo+IFJlZ0V4IGRyaXZlciBpcyBub3QgY29udGFpbmVkIGluIHRoZSAqcmVnZXhkZXZfb3BzKiBz dHJ1Y3R1cmUuDQo+IEluc3RlYWQsIHRoZXkgYXJlIGRpcmVjdGx5IHN0b3JlZCBhdCB0aGUgYmVn aW5uaW5nIG9mIHRoZSAqcnRlX3JlZ2V4ZGV2Kg0KPiBzdHJ1Y3R1cmUgdG8gYXZvaWQgYW4gZXh0 cmEgaW5kaXJlY3QgbWVtb3J5IGFjY2VzcyBkdXJpbmcgdGhlaXINCj4gaW52b2NhdGlvbi4NCj4g DQo+IFJURSBSZWdFeCBkZXZpY2UgZHJpdmVycyBkbyBub3QgdXNlIGludGVycnVwdHMgZm9yIGVu cXVldWUgb3IgZGVxdWV1ZQ0KPiBvcGVyYXRpb24uIEluc3RlYWQsIFJlZ0V4IGRyaXZlcnMgZXhw b3J0IFBvbGwtTW9kZSBlbnF1ZXVlIGFuZCBkZXF1ZXVlDQo+IGZ1bmN0aW9ucyB0byBhcHBsaWNh dGlvbnMuDQo+IA0KPiBUaGUgKmVucXVldWUqIG9wZXJhdGlvbiBzdWJtaXRzIGEgYnVyc3Qgb2Yg UmVnRXggcGF0dGVybiBtYXRjaGluZw0KPiByZXF1ZXN0IHRvIHRoZSBSZWdFeCBkZXZpY2UgYW5k IHRoZSAqZGVxdWV1ZSogb3BlcmF0aW9uIGdldHMgYSBidXJzdCBvZg0KPiBwYXR0ZXJuIG1hdGNo aW5nIHJlc3BvbnNlIGZvciB0aGUgb25lcyBzdWJtaXR0ZWQgdGhyb3VnaCAqZW5xdWV1ZSoNCj4g b3BlcmF0aW9uLg0KPiANCj4gVHlwaWNhbCBhcHBsaWNhdGlvbiB1dGlsaXNhdGlvbiBvZiB0aGUg UmVnRXggZGV2aWNlIEFQSSB3aWxsIGZvbGxvdyB0aGUNCj4gZm9sbG93aW5nIHByb2dyYW1taW5n IGZsb3cuDQo+IA0KPiAtIHJ0ZV9yZWdleGRldl9jb25maWd1cmUoKQ0KPiAtIHJ0ZV9yZWdleGRl dl9xdWV1ZV9wYWlyX3NldHVwKCkNCj4gLSBydGVfcmVnZXhkZXZfcnVsZV9kYl91cGRhdGUoKSBO ZWVkcyB0byBpbnZva2UgaWYgcHJlY29tcGlsZWQgcnVsZQ0KPiAgIGRhdGFiYXNlIG5vdA0KPiAg IHByb3ZpZGVkIGluIHJ0ZV9yZWdleGRldl9jb25maWc6OnJ1bGVfZGIgZm9yIHJ0ZV9yZWdleGRl dl9jb25maWd1cmUoKQ0KPiAgIGFuZC9vciBhcHBsaWNhdGlvbiBuZWVkcyB0byB1cGRhdGUgcnVs ZSBkYXRhYmFzZS4NCj4gLSBydGVfcmVnZXhkZXZfcnVsZV9kYl9jb21waWxlX2FjdGl2YXRlKCkg TmVlZHMgdG8gaW52b2tlIGlmDQo+ICAgcnRlX3JlZ2V4ZGV2X3J1bGVfZGJfdXBkYXRlIGZ1bmN0 aW9uIHdhcyB1c2VkLg0KPiAtIENyZWF0ZSBvciByZXVzZSBleGl0aW5nIG1lbXBvb2wgZm9yICpy dGVfcmVnZXhfb3BzKiBvYmplY3RzLg0KPiAtIHJ0ZV9yZWdleGRldl9zdGFydCgpDQo+IC0gcnRl X3JlZ2V4ZGV2X2VucXVldWVfYnVyc3QoKQ0KPiAtIHJ0ZV9yZWdleGRldl9kZXF1ZXVlX2J1cnN0 KCkNCj4gDQo+IFNpZ25lZC1vZmYtYnk6IEplcmluIEphY29iIDxqZXJpbmpAbWFydmVsbC5jb20+ DQo+IFNpZ25lZC1vZmYtYnk6IFBhdmFuIE5pa2hpbGVzaCA8cGJoYWdhdmF0dWxhQG1hcnZlbGwu Y29tPg0KPiBTaWduZWQtb2ZmLWJ5OiBPcmkgS2FtIDxvcmlrYUBtZWxsYW5veC5jb20+DQo+IC0t LQ0KPiB2MzoNCj4gKiBObyBjaGFuZ2VzLg0KPiANCj4gdjI6DQo+ICogTW92ZSB1bnVzZWQgZGVm aW5lIHRvIG90aGVyIHBhdGNoLg0KPiAtLS0NCj4gIGNvbmZpZy9jb21tb25fYmFzZSAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAgNiArDQo+ICBkb2MvYXBpL2RveHktYXBpLWluZGV4Lm1k ICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKw0KPiAgZG9jL2FwaS9kb3h5LWFwaS5jb25mLmlu ICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsNCj4gIGRvYy9ndWlkZXMvcHJvZ19ndWlkZS9p bmRleC5yc3QgICAgICAgICAgICAgIHwgICAgMSArDQo+ICBkb2MvZ3VpZGVzL3Byb2dfZ3VpZGUv cmVnZXhkZXZfbGliLnJzdCAgICAgICB8ICAxNzcgKysrKw0KPiAgbGliL01ha2VmaWxlICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICsNCj4gIGxpYi9saWJydGVfcmVnZXhk ZXYvTWFrZWZpbGUgICAgICAgICAgICAgICAgIHwgICAzMSArDQo+ICBsaWIvbGlicnRlX3JlZ2V4 ZGV2L21lc29uLmJ1aWxkICAgICAgICAgICAgICB8ICAgIDcgKw0KPiAgbGliL2xpYnJ0ZV9yZWdl eGRldi9ydGVfcmVnZXhkZXYuYyAgICAgICAgICAgfCAgICA2ICsNCj4gIGxpYi9saWJydGVfcmVn ZXhkZXYvcnRlX3JlZ2V4ZGV2LmggICAgICAgICAgIHwgMTQ3Mw0KPiArKysrKysrKysrKysrKysr KysrKysrKysrKw0KPiAgbGliL2xpYnJ0ZV9yZWdleGRldi9ydGVfcmVnZXhkZXZfdmVyc2lvbi5t YXAgfCAgIDI2ICsNCj4gIGxpYi9tZXNvbi5idWlsZCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgMiArLQ0KPiAgMTIgZmlsZXMgY2hhbmdlZCwgMTczMiBpbnNlcnRpb25zKCspLCAx IGRlbGV0aW9uKC0pDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZG9jL2d1aWRlcy9wcm9nX2d1aWRl L3JlZ2V4ZGV2X2xpYi5yc3QNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvbGlicnRlX3JlZ2V4 ZGV2L01ha2VmaWxlDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2xpYnJ0ZV9yZWdleGRldi9t ZXNvbi5idWlsZA0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9saWJydGVfcmVnZXhkZXYvcnRl X3JlZ2V4ZGV2LmMNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvbGlicnRlX3JlZ2V4ZGV2L3J0 ZV9yZWdleGRldi5oDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2xpYnJ0ZV9yZWdleGRldi9y dGVfcmVnZXhkZXZfdmVyc2lvbi5tYXANCj4gDQo+IGRpZmYgLS1naXQgYS9jb25maWcvY29tbW9u X2Jhc2UgYi9jb25maWcvY29tbW9uX2Jhc2UNCj4gaW5kZXggMTQwMDBiYS4uMjdmY2FiMSAxMDA2 NDQNCj4gLS0tIGEvY29uZmlnL2NvbW1vbl9iYXNlDQo+ICsrKyBiL2NvbmZpZy9jb21tb25fYmFz ZQ0KPiBAQCAtODMyLDYgKzgzMiwxMSBAQA0KPiBDT05GSUdfUlRFX0xJQlJURV9QTURfT0NURU9O VFgyX0VQX1JBV0RFVj15DQo+ICBDT05GSUdfUlRFX0xJQlJURV9QTURfTlRCX1JBV0RFVj15DQo+ IA0KPiAgIw0KPiArIyBDb21waWxlIHJlZ2V4IGRldmljZSBzdXBwb3J0DQo+ICsjDQo+ICtDT05G SUdfUlRFX0xJQlJURV9SRUdFWERFVj15DQo+ICsNCj4gKyMNCj4gICMgQ29tcGlsZSBsaWJydGVf cmluZw0KPiAgIw0KPiAgQ09ORklHX1JURV9MSUJSVEVfUklORz15DQo+IEBAIC0xMTI0LDMgKzEx MjksNCBAQCBDT05GSUdfUlRFX0FQUF9DUllQVE9fUEVSRj15DQo+ICAjIENvbXBpbGUgdGhlIGV2 ZW50ZGV2IGFwcGxpY2F0aW9uDQo+ICAjDQo+ICBDT05GSUdfUlRFX0FQUF9FVkVOVERFVj15DQo+ ICsNCj4gZGlmZiAtLWdpdCBhL2RvYy9hcGkvZG94eS1hcGktaW5kZXgubWQgYi9kb2MvYXBpL2Rv eHktYXBpLWluZGV4Lm1kDQo+IGluZGV4IDg0NWE1MzQuLjcwMjU5MWIgMTAwNjQ0DQo+IC0tLSBh L2RvYy9hcGkvZG94eS1hcGktaW5kZXgubWQNCj4gKysrIGIvZG9jL2FwaS9kb3h5LWFwaS1pbmRl eC5tZA0KPiBAQCAtMjYsNiArMjYsNyBAQCBUaGUgcHVibGljIEFQSSBoZWFkZXJzIGFyZSBncm91 cGVkIGJ5IHRvcGljczoNCj4gICAgW2V2ZW50X3RpbWVyX2FkYXB0ZXJdICAgIChAcmVmIHJ0ZV9l dmVudF90aW1lcl9hZGFwdGVyLmgpLA0KPiAgICBbZXZlbnRfY3J5cHRvX2FkYXB0ZXJdICAgKEBy ZWYgcnRlX2V2ZW50X2NyeXB0b19hZGFwdGVyLmgpLA0KPiAgICBbcmF3ZGV2XSAgICAgICAgICAg ICAoQHJlZiBydGVfcmF3ZGV2LmgpLA0KPiArICBbcmVnZXhkZXZdICAgICAgICAgICAoQHJlZiBy dGVfcmVnZXhkZXYuaCksDQo+ICAgIFttZXRyaWNzXSAgICAgICAgICAgIChAcmVmIHJ0ZV9tZXRy aWNzLmgpLA0KPiAgICBbYml0cmF0ZV0gICAgICAgICAgICAoQHJlZiBydGVfYml0cmF0ZS5oKSwN Cj4gICAgW2xhdGVuY3ldICAgICAgICAgICAgKEByZWYgcnRlX2xhdGVuY3lzdGF0cy5oKSwNCj4g ZGlmZiAtLWdpdCBhL2RvYy9hcGkvZG94eS1hcGkuY29uZi5pbiBiL2RvYy9hcGkvZG94eS1hcGku Y29uZi5pbg0KPiBpbmRleCA2NWU4MTQ2Li44NDYyMWJhIDEwMDY0NA0KPiAtLS0gYS9kb2MvYXBp L2RveHktYXBpLmNvbmYuaW4NCj4gKysrIGIvZG9jL2FwaS9kb3h5LWFwaS5jb25mLmluDQo+IEBA IC01OCw2ICs1OCw3IEBAIElOUFVUICAgICAgICAgICAgICAgICAgID0gQFRPUERJUkAvZG9jL2Fw aS9kb3h5LWFwaS0NCj4gaW5kZXgubWQgXA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICBA VE9QRElSQC9saWIvbGlicnRlX3JjdSBcDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBU T1BESVJAL2xpYi9saWJydGVfcmVvcmRlciBcDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAg IEBUT1BESVJAL2xpYi9saWJydGVfcmliIFwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg QFRPUERJUkAvbGliL2xpYnJ0ZV9yZWdleGRldiBcDQo+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEBUT1BESVJAL2xpYi9saWJydGVfcmluZyBcDQo+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEBUT1BESVJAL2xpYi9saWJydGVfc2NoZWQgXA0KPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICBAVE9QRElSQC9saWIvbGlicnRlX3NlY3VyaXR5IFwNCj4gZGlmZiAtLWdpdCBhL2RvYy9n dWlkZXMvcHJvZ19ndWlkZS9pbmRleC5yc3QgYi9kb2MvZ3VpZGVzL3Byb2dfZ3VpZGUvaW5kZXgu cnN0DQo+IGluZGV4IDFkMGNkNDkuLmZhODUzNmMgMTAwNjQ0DQo+IC0tLSBhL2RvYy9ndWlkZXMv cHJvZ19ndWlkZS9pbmRleC5yc3QNCj4gKysrIGIvZG9jL2d1aWRlcy9wcm9nX2d1aWRlL2luZGV4 LnJzdA0KPiBAQCAtNzEsMyArNzEsNCBAQCBQcm9ncmFtbWVyJ3MgR3VpZGUNCj4gICAgICBsdG8N Cj4gICAgICBwcm9maWxlX2FwcA0KPiAgICAgIGdsb3NzYXJ5DQo+ICsgICAgcmVnZXhkZXZfbGli DQo+IGRpZmYgLS1naXQgYS9kb2MvZ3VpZGVzL3Byb2dfZ3VpZGUvcmVnZXhkZXZfbGliLnJzdA0K PiBiL2RvYy9ndWlkZXMvcHJvZ19ndWlkZS9yZWdleGRldl9saWIucnN0DQo+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAuLjFlY2JmMWMNCj4gLS0tIC9kZXYvbnVsbA0KPiAr KysgYi9kb2MvZ3VpZGVzL3Byb2dfZ3VpZGUvcmVnZXhkZXZfbGliLnJzdA0KPiBAQCAtMCwwICsx LDE3NyBAQA0KPiArLi4gIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UNCj4g KyAgICBDb3B5cmlnaHQoYykgMjAyMCBNZWxsYW5veCBDb3Jwb3JhdGlvbi4NCj4gKw0KPiArUmVn RXggRGV2aWNlIExpYnJhcnkNCj4gKz09PT09PT09PT09PT09PT09PT09PQ0KPiArDQo+ICtUaGUg UmVnRXggbGlicmFyeSBwcm92aWRlcyBhIFJlZ0V4IGRldmljZSBmcmFtZXdvcmsgZm9yIG1hbmFn ZW1lbnQgYW5kDQo+ICtwcm92aXNpb25pbmcgb2YgaGFyZHdhcmUgYW5kIHNvZnR3YXJlIFJlZ0V4 IHBvbGwgbW9kZSBkcml2ZXJzLCBkZWZpbmluZw0KPiBnZW5lcmljDQo+ICtBUElzIHdoaWNoIHN1 cHBvcnQgYSBudW1iZXIgb2YgZGlmZmVyZW50IFJlZ0V4IG9wZXJhdGlvbnMuDQo+ICsNCj4gKw0K PiArRGVzaWduIFByaW5jaXBsZXMNCj4gKy0tLS0tLS0tLS0tLS0tLS0tDQo+ICsNCj4gK1RoZSBS ZWdFeCBsaWJyYXJ5IGZvbGxvd3MgdGhlIHNhbWUgYmFzaWMgcHJpbmNpcGxlcyBhcyB0aG9zZSB1 c2VkIGluIERQREsncw0KPiArRXRoZXJuZXQgRGV2aWNlIGZyYW1ld29yayBhbmQgdGhlIENyeXB0 byBmcmFtZXdvcmsuIFRoZSBSZWdFeCBmcmFtZXdvcmsNCj4gcHJvdmlkZXMNCj4gK2EgZ2VuZXJp YyBDcnlwdG8gZGV2aWNlIGZyYW1ld29yayB3aGljaCBzdXBwb3J0cyBib3RoIHBoeXNpY2FsICho YXJkd2FyZSkNCj4gK2FuZCB2aXJ0dWFsIChzb2Z0d2FyZSkgUmVnRXggZGV2aWNlcyBhcyB3ZWxs IGFzIGEgZ2VuZXJpYyBSZWdFeCBBUEkgd2hpY2gNCj4gYWxsb3dzDQo+ICtSZWdFeCBkZXZpY2Vz IHRvIGJlIG1hbmFnZWQgYW5kIGNvbmZpZ3VyZWQgYW5kIHN1cHBvcnRzIFJlZ0V4IG9wZXJhdGlv bnMNCj4gdG8gYmUNCj4gK3Byb3Zpc2lvbmVkIG9uIFJlZ0V4IHBvbGwgbW9kZSBkcml2ZXIuDQo+ ICsNCj4gKw0KPiArRGV2aWNlIE1hbmFnZW1lbnQNCj4gKy0tLS0tLS0tLS0tLS0tLS0tDQo+ICsN Cj4gK0RldmljZSBDcmVhdGlvbg0KPiArfn5+fn5+fn5+fn5+fn5+DQo+ICsNCj4gK1BoeXNpY2Fs IFJlZ0V4IGRldmljZXMgYXJlIGRpc2NvdmVyZWQgZHVyaW5nIHRoZSBQQ0kgcHJvYmUvZW51bWVy YXRpb24gb2YNCj4gdGhlDQo+ICtFQUwgZnVuY3Rpb24gd2hpY2ggaXMgZXhlY3V0ZWQgYXQgRFBE SyBpbml0aWFsaXphdGlvbiwgYmFzZWQgb24NCj4gK3RoZWlyIFBDSSBkZXZpY2UgaWRlbnRpZmll ciwgZWFjaCB1bmlxdWUgUENJIEJERiAoYnVzL2JyaWRnZSwgZGV2aWNlLA0KPiArZnVuY3Rpb24p LiBTcGVjaWZpYyBwaHlzaWNhbCBSZUV4IGRldmljZXMsIGxpa2Ugb3RoZXIgcGh5c2ljYWwgZGV2 aWNlcyBpbiBEUERLDQo+ICtjYW4gYmUgd2hpdGUtbGlzdGVkIG9yIGJsYWNrLWxpc3RlZCB1c2lu ZyB0aGUgRUFMIGNvbW1hbmQgbGluZSBvcHRpb25zLg0KPiArDQo+ICsNCj4gK0RldmljZSBJZGVu dGlmaWNhdGlvbg0KPiArfn5+fn5+fn5+fn5+fn5+fn5+fn5+DQo+ICsNCj4gK0VhY2ggZGV2aWNl LCB3aGV0aGVyIHZpcnR1YWwgb3IgcGh5c2ljYWwgaXMgdW5pcXVlbHkgZGVzaWduYXRlZCBieSB0 d28NCj4gK2lkZW50aWZpZXJzOg0KPiArDQo+ICstIEEgdW5pcXVlIGRldmljZSBpbmRleCB1c2Vk IHRvIGRlc2lnbmF0ZSB0aGUgUmVnRXggZGV2aWNlIGluIGFsbCBmdW5jdGlvbnMNCj4gKyAgZXhw b3J0ZWQgYnkgdGhlIHJlZ2V4ZGV2IEFQSS4NCj4gKw0KPiArLSBBIGRldmljZSBuYW1lIHVzZWQg dG8gZGVzaWduYXRlIHRoZSBSZWdFeCBkZXZpY2UgaW4gY29uc29sZSBtZXNzYWdlcywgZm9yDQo+ ICsgIGFkbWluaXN0cmF0aW9uIG9yIGRlYnVnZ2luZyBwdXJwb3Nlcy4NCj4gKw0KPiArDQo+ICtE ZXZpY2UgQ29uZmlndXJhdGlvbg0KPiArfn5+fn5+fn5+fn5+fn5+fn5+fn4NCj4gKw0KPiArVGhl IGNvbmZpZ3VyYXRpb24gb2YgZWFjaCBSZWdFeCBkZXZpY2UgaW5jbHVkZXMgdGhlIGZvbGxvd2lu ZyBvcGVyYXRpb25zOg0KPiArDQo+ICstIEFsbG9jYXRpb24gb2YgcmVzb3VyY2VzLCBpbmNsdWRp bmcgaGFyZHdhcmUgcmVzb3VyY2VzIGlmIGEgcGh5c2ljYWwgZGV2aWNlLg0KPiArLSBSZXNldHRp bmcgdGhlIGRldmljZSBpbnRvIGEgd2VsbC1rbm93biBkZWZhdWx0IHN0YXRlLg0KPiArLSBJbml0 aWFsaXphdGlvbiBvZiBzdGF0aXN0aWNzIGNvdW50ZXJzLg0KPiArDQo+ICtUaGUgcnRlX3JlZ2V4 ZGV2X2NvbmZpZ3VyZSBBUEkgaXMgdXNlZCB0byBjb25maWd1cmUgYSBSZWdFeCBkZXZpY2UuDQo+ ICsNCj4gKy4uIGNvZGUtYmxvY2s6OiBjDQo+ICsNCj4gKyAgIGludCBydGVfcmVnZXhkZXZfY29u ZmlndXJlKHVpbnQ4X3QgZGV2X2lkLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3Qgc3RydWN0IHJ0ZV9yZWdleGRldl9jb25maWcgKmNmZyk7DQo+ICsNCj4gK1RoZSBgYHJ0 ZV9yZWdleGRldl9jb25maWdgYCBzdHJ1Y3R1cmUgaXMgdXNlZCB0byBwYXNzIHRoZSBjb25maWd1 cmF0aW9uDQo+ICtwYXJhbWV0ZXJzIGZvciB0aGUgUmVnRXggZGV2aWNlIGZvciBleGFtcGxlICBu dW1iZXIgb2YgcXVldWUgcGFpcnMsDQo+IG51bWJlciBvZg0KPiArZ3JvdXBzLCBtYXggbnVtYmVy IG9mIG1hdGNoZXMgYW5kIHNvIG9uLg0KPiArDQo+ICsuLiBjb2RlLWJsb2NrOjogYw0KPiArDQo+ ICsgICBzdHJ1Y3QgcnRlX3JlZ2V4ZGV2X2NvbmZpZyB7DQo+ICsgICAgICAgIHVpbnQxNl90IG5i X21heF9tYXRjaGVzOw0KPiArICAgICAgICAvKio8IE1heGltdW0gbWF0Y2hlcyBwZXIgc2NhbiBj b25maWd1cmVkIG9uIHRoaXMgZGV2aWNlLg0KPiArICAgICAgICAgKiBUaGlzIHZhbHVlIGNhbm5v dCBleGNlZWQgdGhlICptYXhfbWF0Y2hlcyoNCj4gKyAgICAgICAgICogd2hpY2ggcHJldmlvdXNs eSBwcm92aWRlZCBpbiBydGVfcmVnZXhkZXZfaW5mb19nZXQoKS4NCj4gKyAgICAgICAgICogVGhl IHZhbHVlIDAgaXMgYWxsb3dlZCwgaW4gd2hpY2ggY2FzZSwgdmFsdWUgMSB1c2VkLg0KPiArICAg ICAgICAgKiBAc2VlIHN0cnVjdCBydGVfcmVnZXhkZXZfaW5mbzo6bWF4X21hdGNoZXMNCj4gKyAg ICAgICAgICovDQo+ICsgICAgICAgIHVpbnQxNl90IG5iX3F1ZXVlX3BhaXJzOw0KPiArICAgICAg ICAvKio8IE51bWJlciBvZiBSZWdFeCBxdWV1ZSBwYWlycyB0byBjb25maWd1cmUgb24gdGhpcyBk ZXZpY2UuDQo+ICsgICAgICAgICAqIFRoaXMgdmFsdWUgY2Fubm90IGV4Y2VlZCB0aGUgKm1heF9x dWV1ZV9wYWlycyogd2hpY2ggcHJldmlvdXNseQ0KPiArICAgICAgICAgKiBwcm92aWRlZCBpbiBy dGVfcmVnZXhkZXZfaW5mb19nZXQoKS4NCj4gKyAgICAgICAgICogQHNlZSBzdHJ1Y3QgcnRlX3Jl Z2V4ZGV2X2luZm86Om1heF9xdWV1ZV9wYWlycw0KPiArICAgICAgICAgKi8NCj4gKyAgICAgICAg dWludDMyX3QgbmJfcnVsZXNfcGVyX2dyb3VwOw0KPiArICAgICAgICAvKio8IE51bWJlciBvZiBy dWxlcyBwZXIgZ3JvdXAgdG8gY29uZmlndXJlIG9uIHRoaXMgZGV2aWNlLg0KPiArICAgICAgICAg KiBUaGlzIHZhbHVlIGNhbm5vdCBleGNlZWQgdGhlICptYXhfcnVsZXNfcGVyX2dyb3VwKg0KPiAr ICAgICAgICAgKiB3aGljaCBwcmV2aW91c2x5IHByb3ZpZGVkIGluIHJ0ZV9yZWdleGRldl9pbmZv X2dldCgpLg0KPiArICAgICAgICAgKiBUaGUgdmFsdWUgMCBpcyBhbGxvd2VkLCBpbiB3aGljaCBj YXNlLA0KPiArICAgICAgICAgKiBzdHJ1Y3QgcnRlX3JlZ2V4ZGV2X2luZm86Om1heF9ydWxlc19w ZXJfZ3JvdXAgdXNlZC4NCj4gKyAgICAgICAgICogQHNlZSBzdHJ1Y3QgcnRlX3JlZ2V4ZGV2X2lu Zm86Om1heF9ydWxlc19wZXJfZ3JvdXANCj4gKyAgICAgICAgICovDQo+ICsgICAgICAgIHVpbnQx Nl90IG5iX2dyb3VwczsNCj4gKyAgICAgICAgLyoqPCBOdW1iZXIgb2YgZ3JvdXBzIHRvIGNvbmZp Z3VyZSBvbiB0aGlzIGRldmljZS4NCj4gKyAgICAgICAgICogVGhpcyB2YWx1ZSBjYW5ub3QgZXhj ZWVkIHRoZSAqbWF4X2dyb3VwcyoNCj4gKyAgICAgICAgICogd2hpY2ggcHJldmlvdXNseSBwcm92 aWRlZCBpbiBydGVfcmVnZXhkZXZfaW5mb19nZXQoKS4NCj4gKyAgICAgICAgICogQHNlZSBzdHJ1 Y3QgcnRlX3JlZ2V4ZGV2X2luZm86Om1heF9ncm91cHMNCj4gKyAgICAgICAgICovDQo+ICsgICAg ICAgIGNvbnN0IGNoYXIgKnJ1bGVfZGI7DQo+ICsgICAgICAgIC8qKjwgSW1wb3J0IGluaXRpYWwg c2V0IG9mIHByZWJ1aWx0IHJ1bGUgZGF0YWJhc2Ugb24gdGhpcyBkZXZpY2UuDQo+ICsgICAgICAg ICAqIFRoZSB2YWx1ZSBOVUxMIGlzIGFsbG93ZWQsIGluIHdoaWNoIGNhc2UsIHRoZSBkZXZpY2Ug d2lsbCBub3QNCj4gKyAgICAgICAgICogYmUgY29uZmlndXJlZCBwcmVidWlsdCBydWxlIGRhdGFi YXNlLiBBcHBsaWNhdGlvbiBtYXkgdXNlDQo+ICsgICAgICAgICAqIHJ0ZV9yZWdleGRldl9ydWxl X2RiX3VwZGF0ZSgpIG9yIHJ0ZV9yZWdleGRldl9ydWxlX2RiX2ltcG9ydCgpIEFQSQ0KPiArICAg ICAgICAgKiB0byB1cGRhdGUgb3IgaW1wb3J0IHJ1bGUgZGF0YWJhc2UgYWZ0ZXIgdGhlDQo+ICsg ICAgICAgICAqIHJ0ZV9yZWdleGRldl9jb25maWd1cmUoKS4NCj4gKyAgICAgICAgICogQHNlZSBy dGVfcmVnZXhkZXZfcnVsZV9kYl91cGRhdGUoKSwgcnRlX3JlZ2V4ZGV2X3J1bGVfZGJfaW1wb3J0 KCkNCj4gKyAgICAgICAgICovDQo+ICsgICAgICAgIHVpbnQzMl90IHJ1bGVfZGJfbGVuOw0KPiAr ICAgICAgICAvKio8IExlbmd0aCBvZiAqcnVsZV9kYiogYnVmZmVyLiAqLw0KPiArICAgICAgICB1 aW50MzJfdCBkZXZfY2ZnX2ZsYWdzOw0KPiArICAgICAgICAvKio8IFJlZ0V4IGRldmljZSBjb25m aWd1cmF0aW9uIGZsYWdzLCBTZWUgUlRFX1JFR0VYREVWX0NGR18qICAqLw0KPiArICAgIH07DQo+ ICsNCj4gKw0KPiArQ29uZmlndXJhdGlvbiBvZiBSdWxlcyBEYXRhYmFzZQ0KPiArfn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fg0KPiArDQo+ICtFYWNoIFJlZ2V4IGRldmljZSBzaG91bGQg YmUgY29uZmlndXJlZCB3aXRoIHRoZSBydWxlIGRhdGFiYXNlLg0KPiArVGhlcmUgYXJlIHR3byBt b2RlcyBvZiBzZXR0aW5nIHRoZSBydWxlIGRhdGFiYXNlLCBvbmxpbmUgb3Igb2ZmbGluZS4NCj4g K1RoZSBvbmxpbmUgbW9kZSBtZWFucywgdGhhdCB0aGUgcnVsZSBkYXRhYmFzZSBpbiBiZWluZyBj b21waWxlZCBieSB0aGUNCj4gK1JlZ0V4IFBNRCB3aGlsZSBpbiB0aGUgb2ZmbGluZSBtb2RlIHRo ZSBydWxlIGRhdGFiYXNlIGlzIGNvbXBpbGVkIGJ5DQo+IGV4dGVybmFsDQo+ICtjb21waWxlciwg YW5kIGlzIGJlaW5nIGxvYWRlZCB0byB0aGUgUE1EIGFzIGEgYnVmZmVyLg0KPiArVGhlIGNvbmZp Z3VyYXRpb24gbW9kZSBpcyBkZXBlbmRlZCBvbiB0aGUgUE1EIGNhcGFiaWxpdGllcy4NCj4gKw0K PiArT25saW5lIHJ1bGUgY29uZmlndXJhdGlvbiBpcyBkb25lIHVzaW5nIHRoZSBmb2xsb3dpbmcg QVBJIGZ1bmN0aW9uczoNCj4gK2BgcnRlX3JlZ2V4ZGV2X3J1bGVfZGJfdXBkYXRlYGAgd2hpY2gg YWRkIC8gcmVtb3ZlIHJ1bGVzIGZyb20gdGhlIHJ1bGVzDQo+ICtwcmVjb21wbGllZCBsaXN0LCBh bmQgYGBydGVfcmVnZXhkZXZfcnVsZV9kYl9jb21waWxlX2FjdGl2YXRlYGANCj4gK3doaWNoIGNv bXBpbGUgdGhlIHJ1bGVzIGFuZCBsb2FkcyB0aGVtIHRvIHRoZSBSZWdFeCBIVy4NCj4gKw0KPiAr T2ZmbGluZSBydWxlIGNvbmZpZ3VyYXRpb24gY2FuIGJlIGRvbmUgYnkgYWRkaW5nIGEgcG9pbnRl ciB0byB0aGUgY29tcGlsZWQNCj4gK3J1bGUgZGF0YWJhc2UgaW4gdGhlIGNvbmZpZ3VyYXRpb24g c3RlcCwgb3IgYnkgdXNpbmcNCj4gK2BgcnRlX3JlZ2V4ZGV2X3J1bGVfZGJfaW1wb3J0YGAgQVBJ Lg0KPiArDQo+ICsNCj4gK0NvbmZpZ3VyYXRpb24gb2YgUXVldWUgUGFpcnMNCj4gK35+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn4NCj4gKw0KPiArRWFjaCBSZWdFeCBkZXZpY2UgY2FuIGJlIGNv bmZpZ3VyZWQgd2l0aCBudW1iZXIgb2YgcXVldWUgcGFpcnMuDQo+ICtFYWNoIHF1ZXVlIHBhaXIg aXMgY29uZmlndXJlZCB1c2luZyBgYHJ0ZV9yZWdleGRldl9xdWV1ZV9wYWlyX3NldHVwYGANCj4g Kw0KPiArDQo+ICtMb2dpY2FsIENvcmVzLCBNZW1vcnkgYW5kIFF1ZXVlcyBQYWlyIFJlbGF0aW9u c2hpcHMNCj4gK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fg0KPiArDQo+ICtNdWx0aXBsZSBsb2dpY2FsIGNvcmVzIHNob3VsZCBuZXZlciBzaGFyZSB0 aGUgc2FtZSBxdWV1ZSBwYWlyIGZvciBlbnF1ZXVpbmcNCj4gK29wZXJhdGlvbnMgb3IgZGVxdWV1 aW5nIG9wZXJhdGlvbnMgb24gdGhlIHNhbWUgUmVnRXggZGV2aWNlIHNpbmNlIHRoaXMNCj4gd291 bGQNCj4gK3JlcXVpcmUgZ2xvYmFsIGxvY2tzIGFuZCBoaW5kZXIgcGVyZm9ybWFuY2UuDQo+ICsN Cj4gKw0KPiArRGV2aWNlIEZlYXR1cmVzIGFuZCBDYXBhYmlsaXRpZXMNCj4gKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiArDQo+ICtSZWdFeCBkZXZpY2VzIG1heSBzdXBwb3J0 IGRpZmZlcmVudCBmZWF0dXJlIHNldC4NCj4gK0luIG9yZGVyIHRvIGdldCB0aGUgc3VwcG9ydGVk IFBNRCBmZWF0dXJlIGBgcnRlX3JlZ2V4ZGV2X2luZm9fZ2V0YGANCj4gK0FQSSB3aGljaCByZXR1 cm4gdGhlIGluZm8gb2YgdGhlIGRldmljZSBhbmQgaXQncyBzdXBwb3J0ZWQgZmVhdHVyZXMuDQo+ ICsNCj4gKw0KPiArRW5xdWV1ZSAvIERlcXVldWUgQnVyc3QgQVBJcw0KPiArfn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fg0KPiArDQo+ICtUaGUgYnVyc3QgZW5xdWV1ZSBBUEkgdXNlcyBhIFJl Z0V4IGRldmljZSBpZGVudGlmaWVyIGFuZCBhIHF1ZXVlIHBhaXINCj4gK2lkZW50aWZpZXIgdG8g c3BlY2lmeSB0aGUgZGV2aWNlIHF1ZXVlIHBhaXIgdG8gc2NoZWR1bGUgdGhlIHByb2Nlc3Npbmcg b24uDQo+ICtUaGUgYGBuYl9vcHNgYCBwYXJhbWV0ZXIgaXMgdGhlIG51bWJlciBvZiBvcGVyYXRp b25zIHRvIHByb2Nlc3Mgd2hpY2ggYXJlDQo+ICtzdXBwbGllZCBpbiB0aGUgYGBvcHNgYCBhcnJh eSBvZiBgYHJ0ZV9yZWdleF9vcHNgYCBzdHJ1Y3R1cmVzLg0KPiArVGhlIGVucXVldWUgZnVuY3Rp b24gcmV0dXJucyB0aGUgbnVtYmVyIG9mIG9wZXJhdGlvbnMgaXQgYWN0dWFsbHkgZW5xdWV1ZWQN Cj4gZm9yDQo+ICtwcm9jZXNzaW5nLCBhIHJldHVybiB2YWx1ZSBlcXVhbCB0byBgYG5iX29wc2Bg IG1lYW5zIHRoYXQgYWxsIHBhY2tldHMgaGF2ZQ0KPiBiZWVuDQo+ICtlbnF1ZXVlZC4NCj4gKw0K PiArRGF0YSBwb2ludGVkIGluIGVhY2ggb3AsIHNob3VsZCBub3QgYmUgcmVsZWFzZWQgdW50aWwg dGhlIGRlcXVldWUgb2YgZm9yIHRoYXQNCj4gK29wLg0KPiArDQo+ICtUaGUgZGVxdWV1ZSBBUEkg dXNlcyB0aGUgc2FtZSBmb3JtYXQgYXMgdGhlIGVucXVldWUgQVBJIG9mIHByb2Nlc3NlZCBidXQN Cj4gK3RoZSBgYG5iX29wc2BgIGFuZCBgYG9wc2BgIHBhcmFtZXRlcnMgYXJlIG5vdyB1c2VkIHRv IHNwZWNpZnkgdGhlIG1heA0KPiBwcm9jZXNzZWQNCj4gK29wZXJhdGlvbnMgdGhlIHVzZXIgd2lz aGVzIHRvIHJldHJpZXZlIGFuZCB0aGUgbG9jYXRpb24gaW4gd2hpY2ggdG8gc3RvcmUgdGhlbS4N Cj4gK1RoZSBBUEkgY2FsbCByZXR1cm5zIHRoZSBhY3R1YWwgbnVtYmVyIG9mIHByb2Nlc3NlZCBv cGVyYXRpb25zIHJldHVybmVkLCB0aGlzDQo+ICtjYW4gbmV2ZXIgYmUgbGFyZ2VyIHRoYW4gYGBu Yl9vcHNgYC4NCj4gKw0KPiBkaWZmIC0tZ2l0IGEvbGliL01ha2VmaWxlIGIvbGliL01ha2VmaWxl DQo+IGluZGV4IGQwZWMzOTEuLjZhM2Q0ZTMgMTAwNjQ0DQo+IC0tLSBhL2xpYi9NYWtlZmlsZQ0K PiArKysgYi9saWIvTWFrZWZpbGUNCj4gQEAgLTQ0LDYgKzQ0LDggQEAgREVQRElSUy1saWJydGVf ZXZlbnRkZXYgOj0gbGlicnRlX2VhbCBsaWJydGVfcmluZw0KPiBsaWJydGVfZXRoZGV2IGxpYnJ0 ZV9oYXNoIFwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJ0ZV9tZW1wb29sIGxp YnJ0ZV90aW1lciBsaWJydGVfY3J5cHRvZGV2DQo+ICBESVJTLSQoQ09ORklHX1JURV9MSUJSVEVf UkFXREVWKSArPSBsaWJydGVfcmF3ZGV2DQo+ICBERVBESVJTLWxpYnJ0ZV9yYXdkZXYgOj0gbGli cnRlX2VhbCBsaWJydGVfZXRoZGV2DQo+ICtESVJTLSQoQ09ORklHX1JURV9MSUJSVEVfUkVHRVhE RVYpICs9IGxpYnJ0ZV9yZWdleGRldg0KPiArREVQRElSUy1saWJydGVfcmVnZXhkZXYgOj0gbGli cnRlX2VhbCBsaWJydGVfbWJ1Zg0KPiAgRElSUy0kKENPTkZJR19SVEVfTElCUlRFX1ZIT1NUKSAr PSBsaWJydGVfdmhvc3QNCj4gIERFUERJUlMtbGlicnRlX3Zob3N0IDo9IGxpYnJ0ZV9lYWwgbGli cnRlX21lbXBvb2wgbGlicnRlX21idWYgbGlicnRlX2V0aGRldiBcDQo+ICAJCQlsaWJydGVfbmV0 IGxpYnJ0ZV9oYXNoIGxpYnJ0ZV9jcnlwdG9kZXYNCj4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVf cmVnZXhkZXYvTWFrZWZpbGUgYi9saWIvbGlicnRlX3JlZ2V4ZGV2L01ha2VmaWxlDQo+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAuLjZmNGNjNjMNCj4gLS0tIC9kZXYvbnVs bA0KPiArKysgYi9saWIvbGlicnRlX3JlZ2V4ZGV2L01ha2VmaWxlDQo+IEBAIC0wLDAgKzEsMzEg QEANCj4gKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQ0KPiArIyBDb3B5 cmlnaHQoQykgMjAxOSBNYXJ2ZWxsIEludGVybmF0aW9uYWwgTHRkLg0KPiArIyBDb3B5cmlnaHQo QykgMjAyMCBNZWxsYW5veCBJbnRlcm5hdGlvbmFsIEx0ZC4NCj4gKyMNCj4gKw0KPiAraW5jbHVk ZSAkKFJURV9TREspL21rL3J0ZS52YXJzLm1rDQo+ICsNCj4gKyMgbGlicmFyeSBuYW1lDQo+ICtM SUIgPSBsaWJydGVfcmVnZXhkZXYuYQ0KPiArDQo+ICtFWFBPUlRfTUFQIDo9IHJ0ZV9yZWdleF92 ZXJzaW9uLm1hcA0KPiArDQo+ICsjIGxpYnJhcnkgdmVyc2lvbg0KPiArTElCQUJJVkVSIDo9IDEN Cj4gKw0KPiArIyBidWlsZCBmbGFncw0KPiArQ0ZMQUdTICs9IC1PMw0KPiArQ0ZMQUdTICs9ICQo V0VSUk9SX0ZMQUdTKQ0KPiArTERMSUJTICs9IC1scnRlX2VhbCAtbHJ0ZV9tYnVmDQo+ICsNCj4g KyMgbGlicmFyeSBzb3VyY2UgZmlsZXMNCj4gKyMgYWxsIHNvdXJjZSBhcmUgc3RvcmVkIGluIFNS Q1MteQ0KPiArU1JDUy0kKENPTkZJR19SVEVfTElCUlRFX1JFR0VYREVWKSA6PSBydGVfcmVnZXhk ZXYuYw0KPiArDQo+ICsjIGV4cG9ydCBpbmNsdWRlIGZpbGVzDQo+ICtTWU1MSU5LLSQoQ09ORklH X1JURV9MSUJSVEVfUkVHRVhERVYpLWluY2x1ZGUgKz0gcnRlX3JlZ2V4ZGV2LmgNCj4gKw0KPiAr IyB2ZXJzaW9uaW5nIGV4cG9ydCBtYXANCj4gK0VYUE9SVF9NQVAgOj0gcnRlX3JlZ2V4ZGV2X3Zl cnNpb24ubWFwDQo+ICsNCj4gK2luY2x1ZGUgJChSVEVfU0RLKS9tay9ydGUubGliLm1rDQo+IGRp ZmYgLS1naXQgYS9saWIvbGlicnRlX3JlZ2V4ZGV2L21lc29uLmJ1aWxkIGIvbGliL2xpYnJ0ZV9y ZWdleGRldi9tZXNvbi5idWlsZA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAw MDAwLi5mNGRiNzQ4DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvbGliL2xpYnJ0ZV9yZWdleGRl di9tZXNvbi5idWlsZA0KPiBAQCAtMCwwICsxLDcgQEANCj4gKyMgU1BEWC1MaWNlbnNlLUlkZW50 aWZpZXI6IEJTRC0zLUNsYXVzZQ0KPiArIyBDb3B5cmlnaHQoYykgMjAyMCBNZWxsYW5veCBDb3Jw b3JhdGlvbg0KPiArDQo+ICthbGxvd19leHBlcmltZW50YWxfYXBpcyA9IHRydWUNCj4gK3NvdXJj ZXMgPSBmaWxlcygncnRlX3JlZ2V4ZGV2LmMnKQ0KPiAraGVhZGVycyA9IGZpbGVzKCdydGVfcmVn ZXhkZXYuaCcpDQo+ICtkZXBzICs9IFsnbWJ1ZiddDQo+IGRpZmYgLS1naXQgYS9saWIvbGlicnRl X3JlZ2V4ZGV2L3J0ZV9yZWdleGRldi5jDQo+IGIvbGliL2xpYnJ0ZV9yZWdleGRldi9ydGVfcmVn ZXhkZXYuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwLi5iOTAxODc3 DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvbGliL2xpYnJ0ZV9yZWdleGRldi9ydGVfcmVnZXhk ZXYuYw0KPiBAQCAtMCwwICsxLDYgQEANCj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBC U0QtMy1DbGF1c2UNCj4gKyAqIENvcHlyaWdodChDKSAyMDE5IE1hcnZlbGwgSW50ZXJuYXRpb25h bCBMdGQuDQo+ICsgKiBDb3B5cmlnaHQoQykgMjAyMCBNZWxsYW5veCBJbnRlcm5hdGlvbmFsIEx0 ZC4NCj4gKyAqLw0KPiArDQo+ICsjaW5jbHVkZSA8cnRlX3JlZ2V4ZGV2Lmg+DQo+IGRpZmYgLS1n aXQgYS9saWIvbGlicnRlX3JlZ2V4ZGV2L3J0ZV9yZWdleGRldi5oDQo+IGIvbGliL2xpYnJ0ZV9y ZWdleGRldi9ydGVfcmVnZXhkZXYuaA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAw MDAwMDAwLi43ZTY4OGQ5DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvbGliL2xpYnJ0ZV9yZWdl eGRldi9ydGVfcmVnZXhkZXYuaA0KPiBAQCAtMCwwICsxLDE0NzMgQEANCj4gKy8qIFNQRFgtTGlj ZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UNCj4gKyAqIENvcHlyaWdodChDKSAyMDE5IE1h cnZlbGwgSW50ZXJuYXRpb25hbCBMdGQuDQo+ICsgKiBDb3B5cmlnaHQoQykgMjAyMCBNZWxsYW5v eCBJbnRlcm5hdGlvbmFsIEx0ZC4NCj4gKyAqIENvcHlyaWdodChDKSAyMDIwIEludGVsIEludGVy bmF0aW9uYWwgTHRkLg0KPiArICovDQo+ICsNCj4gKyNpZm5kZWYgX1JURV9SRUdFWERFVl9IXw0K PiArI2RlZmluZSBfUlRFX1JFR0VYREVWX0hfDQo+ICsNCj4gKy8qKg0KPiArICogQGZpbGUNCj4g KyAqDQo+ICsgKiBSVEUgUmVnRXggRGV2aWNlIEFQSQ0KPiArICoNCj4gKyAqIERlZmluZXMgUlRF IFJlZ0V4IERldmljZSBBUElzIGZvciBSZWdFeCBvcGVyYXRpb25zIGFuZCBpdHMgcHJvdmlzaW9u aW5nLg0KPiArICoNCj4gKyAqIFRoZSBSZWdFeCBEZXZpY2UgQVBJIGlzIGNvbXBvc2VkIG9mIHR3 byBwYXJ0czoNCj4gKyAqDQo+ICsgKiAtIFRoZSBhcHBsaWNhdGlvbi1vcmllbnRlZCBSZWdFeCBB UEkgdGhhdCBpbmNsdWRlcyBmdW5jdGlvbnMgdG8gc2V0dXANCj4gKyAqICAgYSBSZWdFeCBkZXZp Y2UgKGNvbmZpZ3VyZSBpdCwgc2V0dXAgaXRzIHF1ZXVlIHBhaXJzIGFuZCBzdGFydCBpdCksDQo+ ICsgKiAgIHVwZGF0ZSB0aGUgcnVsZSBkYXRhYmFzZSBhbmQgc28gb24uDQo+ICsgKg0KPiArICog LSBUaGUgZHJpdmVyLW9yaWVudGVkIFJlZ0V4IEFQSSB0aGF0IGV4cG9ydHMgYSBmdW5jdGlvbiBh bGxvd2luZw0KPiArICogICBhIFJlZ0V4IHBvbGwgTW9kZSBEcml2ZXIgKFBNRCkgdG8gc2ltdWx0 YW5lb3VzbHkgcmVnaXN0ZXIgaXRzZWxmIGFzDQo+ICsgKiAgIGEgUmVnRXggZGV2aWNlIGRyaXZl ci4NCj4gKyAqDQo+ICsgKiBSZWdFeCBkZXZpY2UgY29tcG9uZW50cyBhbmQgZGVmaW5pdGlvbnM6 DQo+ICsgKg0KPiArICogICAgICstLS0tLS0tLS0tLS0tLS0tLSsNCj4gKyAqICAgICB8ICAgICAg ICAgICAgICAgICB8DQo+ICsgKiAgICAgfCAgICAgICAgICAgICAgICAgby0tLS0tLS0tLSsgICAg cnRlX3JlZ2V4ZGV2X1tlbnxkZV1xdWV1ZV9idXJzdCgpDQo+ICsgKiAgICAgfCAgIFBDUkUgYmFz ZWQgICAgby0tLS0tLSsgIHwgICAgICAgICAgICAgICB8DQo+ICsgKiAgICAgfCAgUmVnRXggcGF0 dGVybiAgfCAgICAgIHwgIHwgICstLS0tLS0tLSsgICB8DQo+ICsgKiAgICAgfCBtYXRjaGluZyBl bmdpbmUgby0tLS0tLSstLSstLW8gICAgICAgIHwgICB8ICAgICstLS0tLS0rDQo+ICsgKiAgICAg fCAgICAgICAgICAgICAgICAgfCAgICAgIHwgIHwgIHwgcXVldWUgIHw8PT1vPT09PnxDb3JlIDB8 DQo+ICsgKiAgICAgfCAgICAgICAgICAgICAgICAgby0tLS0rIHwgIHwgIHwgcGFpciAwIHwgICAg ICAgIHwgICAgICB8DQo+ICsgKiAgICAgfCAgICAgICAgICAgICAgICAgfCAgICB8IHwgIHwgICst LS0tLS0tLSsgICAgICAgICstLS0tLS0rDQo+ICsgKiAgICAgKy0tLS0tLS0tLS0tLS0tLS0tKyAg ICB8IHwgIHwNCj4gKyAqICAgICAgICAgICAgXiAgICAgICAgICAgICAgIHwgfCAgfCAgKy0tLS0t LS0tKw0KPiArICogICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCB8ICB8ICB8ICAgICAgICB8 ICAgICAgICArLS0tLS0tKw0KPiArICogICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCArLS0r LS1vIHF1ZXVlICB8PD09PT09PT58Q29yZSAxfA0KPiArICogICAgICAgIFJ1bGV8RGF0YWJhc2Ug ICAgICAgfCAgICB8ICB8IHBhaXIgMSB8ICAgICAgICB8ICAgICAgfA0KPiArICogICAgICstLS0t LS0rLS0tLS0tLS0tLSsgICAgfCAgICB8ICArLS0tLS0tLS0rICAgICAgICArLS0tLS0tKw0KPiAr ICogICAgIHwgICAgIEdyb3VwIDAgICAgIHwgICAgfCAgICB8DQo+ICsgKiAgICAgfCArLS0tLS0t LS0tLS0tLSsgfCAgICB8ICAgIHwgICstLS0tLS0tLSsgICAgICAgICstLS0tLS0rDQo+ICsgKiAg ICAgfCB8IFJ1bGVzIDAuLm4gIHwgfCAgICB8ICAgIHwgIHwgICAgICAgIHwgICAgICAgIHxDb3Jl IDJ8DQo+ICsgKiAgICAgfCArLS0tLS0tLS0tLS0tLSsgfCAgICB8ICAgICstLW8gcXVldWUgIHw8 PT09PT09PnwgICAgICB8DQo+ICsgKiAgICAgfCAgICAgR3JvdXAgMSAgICAgfCAgICB8ICAgICAg IHwgcGFpciAyIHwgICAgICAgICstLS0tLS0rDQo+ICsgKiAgICAgfCArLS0tLS0tLS0tLS0tLSsg fCAgICB8ICAgICAgICstLS0tLS0tLSsNCj4gKyAqICAgICB8IHwgUnVsZXMgMC4ubiAgfCB8ICAg IHwNCj4gKyAqICAgICB8ICstLS0tLS0tLS0tLS0tKyB8ICAgIHwgICAgICAgKy0tLS0tLS0tKw0K PiArICogICAgIHwgICAgIEdyb3VwIDIgICAgIHwgICAgfCAgICAgICB8ICAgICAgICB8ICAgICAg ICArLS0tLS0tKw0KPiArICogICAgIHwgKy0tLS0tLS0tLS0tLS0rIHwgICAgfCAgICAgICB8IHF1 ZXVlICB8PD09PT09PT58Q29yZSBufA0KPiArICogICAgIHwgfCBSdWxlcyAwLi5uICB8IHwgICAg Ky0tLS0tLS1vIHBhaXIgbiB8ICAgICAgICB8ICAgICAgfA0KPiArICogICAgIHwgKy0tLS0tLS0t LS0tLS0rIHwgICAgICAgICAgICArLS0tLS0tLS0rICAgICAgICArLS0tLS0tKw0KPiArICogICAg IHwgICAgIEdyb3VwIG4gICAgIHwNCj4gKyAqICAgICB8ICstLS0tLS0tLS0tLS0tKyB8PC0tLS0t LS1ydGVfcmVnZXhkZXZfcnVsZV9kYl91cGRhdGUoKQ0KPiArICogICAgIHwgfCAgICAgICAgICAg ICB8IHw8LS0tLS0tLXJ0ZV9yZWdleGRldl9ydWxlX2RiX2NvbXBpbGVfYWN0aXZhdGUoKQ0KPiAr ICogICAgIHwgfCBSdWxlcyAwLi5uICB8IHw8LS0tLS0tLXJ0ZV9yZWdleGRldl9ydWxlX2RiX2lt cG9ydCgpDQo+ICsgKiAgICAgfCArLS0tLS0tLS0tLS0tLSsgfC0tLS0tLS0+cnRlX3JlZ2V4ZGV2 X3J1bGVfZGJfZXhwb3J0KCkNCj4gKyAqICAgICArLS0tLS0tLS0tLS0tLS0tLS0rDQo+ICsgKg0K PiArICogUmVnRXg6IEEgcmVndWxhciBleHByZXNzaW9uIGlzIGEgY29uY2lzZSBhbmQgZmxleGli bGUgbWVhbnMgZm9yIG1hdGNoaW5nDQo+ICsgKiBzdHJpbmdzIG9mIHRleHQsIHN1Y2ggYXMgcGFy dGljdWxhciBjaGFyYWN0ZXJzLCB3b3Jkcywgb3IgcGF0dGVybnMgb2YNCj4gKyAqIGNoYXJhY3Rl cnMuIEEgY29tbW9uIGFiYnJldmlhdGlvbiBmb3IgdGhpcyBpcyDigJxSZWdFeOKAnS4NCj4gKyAq DQo+ICsgKiBSZWdFeCBkZXZpY2U6IEEgaGFyZHdhcmUgb3Igc29mdHdhcmUtYmFzZWQgaW1wbGVt ZW50YXRpb24gb2YgUmVnRXgNCj4gKyAqIGRldmljZSBBUEkgZm9yIFBDUkUgYmFzZWQgcGF0dGVy biBtYXRjaGluZyBzeW50YXggYW5kIHNlbWFudGljcy4NCj4gKyAqDQo+ICsgKiBQQ1JFIFJlZ0V4 IHN5bnRheCBhbmQgc2VtYW50aWNzIHNwZWNpZmljYXRpb246DQo+ICsgKg0KPiBodHRwczovL2V1 cjAzLnNhZmVsaW5rcy5wcm90ZWN0aW9uLm91dGxvb2suY29tLz91cmw9aHR0cCUzQSUyRiUyRnJl Z2V4a2l0LnNvDQo+IHVyY2Vmb3JnZS5uZXQlMkZEb2N1bWVudGF0aW9uJTJGcGNyZSUyRnBjcmVw YXR0ZXJuLmh0bWwmYW1wO2RhdGE9MDIlDQo+IDdDMDElN0NvcmlrYSU0MG1lbGxhbm94LmNvbSU3 QzM5ZjU3NjVlNDA1YzQ2YjE4YmEzMDhkN2YyNmI4NDgwJTdDDQo+IGE2NTI5NzFjN2QyZTRkOWJh NmE0ZDE0OTI1NmY0NjFiJTdDMCU3QzAlN0M2MzcyNDQ0MTU5NjExNDQ5NjgmYQ0KPiBtcDtzZGF0 YT1OV1lqYTNnNW5UZXJTZTh2SUZTSHBUZUs4aXBLT2hNblhtbU5CdUp0V3FZJTNEJmFtcDtyZXMN Cj4gZXJ2ZWQ9MA0KPiArICoNCj4gKyAqIFJlZ0V4IHF1ZXVlIHBhaXI6IEVhY2ggUmVnRXggZGV2 aWNlIHNob3VsZCBoYXZlIG9uZSBvciBtb3JlIHF1ZXVlIHBhaXINCj4gdG8NCj4gKyAqIHRyYW5z bWl0IGEgYnVyc3Qgb2YgcGF0dGVybiBtYXRjaGluZyByZXF1ZXN0IGFuZCByZWNlaXZlIGEgYnVy c3Qgb2YNCj4gKyAqIHJlY2VpdmUgdGhlIHBhdHRlcm4gbWF0Y2hpbmcgcmVzcG9uc2UuIFRoZSBw YXR0ZXJuIG1hdGNoaW5nDQo+IHJlcXVlc3QvcmVzcG9uc2UNCj4gKyAqIGVtYmVkZGVkIGluICpy dGVfcmVnZXhfb3BzKiBzdHJ1Y3R1cmUuDQo+ICsgKg0KPiArICogUnVsZTogQSBwYXR0ZXJuIG1h dGNoaW5nIHJ1bGUgZXhwcmVzc2VkIGluIFBDUkUgUmVnRXggc3ludGF4IGFsb25nIHdpdGgNCj4g KyAqIE1hdGNoIElEIGFuZCBHcm91cCBJRCB0byBpZGVudGlmeSB0aGUgcnVsZSB1cG9uIHRoZSBt YXRjaC4NCj4gKyAqDQo+ICsgKiBSdWxlIGRhdGFiYXNlOiBUaGUgUmVnRXggZGV2aWNlIGFjY2Vw dHMgcmVndWxhciBleHByZXNzaW9ucyBhbmQgY29udmVydHMNCj4gdGhlbQ0KPiArICogaW50byBh IGNvbXBpbGVkIHJ1bGUgZGF0YWJhc2UgdGhhdCBjYW4gdGhlbiBiZSB1c2VkIHRvIHNjYW4gZGF0 YS4NCj4gKyAqIENvbXBpbGF0aW9uIGFsbG93cyB0aGUgZGV2aWNlIHRvIGFuYWx5emUgdGhlIGdp dmVuIHBhdHRlcm4ocykgYW5kDQo+ICsgKiBwcmUtZGV0ZXJtaW5lIGhvdyB0byBzY2FuIGZvciB0 aGVzZSBwYXR0ZXJucyBpbiBhbiBvcHRpbWl6ZWQgZmFzaGlvbiB0aGF0DQo+ICsgKiB3b3VsZCBi ZSBmYXIgdG9vIGV4cGVuc2l2ZSB0byBjb21wdXRlIGF0IHJ1bi10aW1lLiBBIHJ1bGUgZGF0YWJh c2UNCj4gY29udGFpbnMNCj4gKyAqIGEgc2V0IG9mIHJ1bGVzIHRoYXQgY29tcGlsZWQgaW4gZGV2 aWNlIHNwZWNpZmljIGJpbmFyeSBmb3JtLg0KPiArICoNCj4gKyAqIE1hdGNoIElEIG9yIFJ1bGUg SUQ6IEEgdW5pcXVlIGlkZW50aWZpZXIgcHJvdmlkZWQgYXQgdGhlIHRpbWUgb2YgcnVsZQ0KPiAr ICogY3JlYXRpb24gZm9yIHRoZSBhcHBsaWNhdGlvbiB0byBpZGVudGlmeSB0aGUgcnVsZSB1cG9u IG1hdGNoLg0KPiArICoNCj4gKyAqIEdyb3VwIElEOiBHcm91cCBvZiBydWxlcyBjYW4gYmUgZ3Jv dXBlZCB1bmRlciBvbmUgZ3JvdXAgSUQgdG8gZW5hYmxlDQo+ICsgKiBydWxlIGlzb2xhdGlvbiBh bmQgZWZmZWN0aXZlIHBhdHRlcm4gbWF0Y2hpbmcuIEEgdW5pcXVlIGdyb3VwIGlkZW50aWZpZXIN Cj4gKyAqIHByb3ZpZGVkIGF0IHRoZSB0aW1lIG9mIHJ1bGUgY3JlYXRpb24gZm9yIHRoZSBhcHBs aWNhdGlvbiB0byBpZGVudGlmeSB0aGUNCj4gKyAqIHJ1bGUgdXBvbiBtYXRjaC4NCj4gKyAqDQo+ ICsgKiBTY2FuOiBBIHBhdHRlcm4gbWF0Y2hpbmcgcmVxdWVzdCB0aHJvdWdoICplbnF1ZXVlKiBB UEkuDQo+ICsgKg0KPiArICogSXQgbWF5IHBvc3NpYmxlIHRoYXQgYSBnaXZlbiBSZWdFeCBkZXZp Y2UgbWF5IG5vdCBzdXBwb3J0IGFsbCB0aGUgZmVhdHVyZXMNCj4gKyAqIG9mIFBDUkUuIFRoZSBh cHBsaWNhdGlvbiBtYXkgcHJvYmUgdW5zdXBwb3J0ZWQgZmVhdHVyZXMgdGhyb3VnaA0KPiArICog c3RydWN0IHJ0ZV9yZWdleGRldl9pbmZvOjpwY3JlX3Vuc3VwX2ZsYWdzDQo+ICsgKg0KPiArICog QnkgZGVmYXVsdCwgYWxsIHRoZSBmdW5jdGlvbnMgb2YgdGhlIFJlZ0V4IERldmljZSBBUEkgZXhw b3J0ZWQgYnkgYSBQTUQNCj4gKyAqIGFyZSBsb2NrLWZyZWUgZnVuY3Rpb25zIHdoaWNoIGFzc3Vt ZSB0byBub3QgYmUgaW52b2tlZCBpbiBwYXJhbGxlbCBvbg0KPiArICogZGlmZmVyZW50IGxvZ2lj YWwgY29yZXMgdG8gd29yayBvbiB0aGUgc2FtZSB0YXJnZXQgb2JqZWN0LiBGb3IgaW5zdGFuY2Us DQo+ICsgKiB0aGUgZGVxdWV1ZSBmdW5jdGlvbiBvZiBhIFBNRCBjYW5ub3QgYmUgaW52b2tlZCBp biBwYXJhbGxlbCBvbiB0d28gbG9naWNhbA0KPiArICogY29yZXMgdG8gb3BlcmF0ZXMgb24gc2Ft ZSBSZWdFeCBxdWV1ZSBwYWlyLiBPZiBjb3Vyc2UsIHRoaXMgZnVuY3Rpb24NCj4gKyAqIGNhbiBi ZSBpbnZva2VkIGluIHBhcmFsbGVsIGJ5IGRpZmZlcmVudCBsb2dpY2FsIGNvcmUgb24gZGlmZmVy ZW50IHF1ZXVlIHBhaXIuDQo+ICsgKiBJdCBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIHVw cGVyIGxldmVsIGFwcGxpY2F0aW9uIHRvIGVuZm9yY2UgdGhpcyBydWxlLg0KPiArICoNCj4gKyAq IEluIGFsbCBmdW5jdGlvbnMgb2YgdGhlIFJlZ0V4IEFQSSwgdGhlIFJlZ0V4IGRldmljZSBpcw0K PiArICogZGVzaWduYXRlZCBieSBhbiBpbnRlZ2VyID49IDAgbmFtZWQgdGhlIGRldmljZSBpZGVu dGlmaWVyICpkZXZfaWQqDQo+ICsgKg0KPiArICogQXQgdGhlIFJlZ0V4IGRyaXZlciBsZXZlbCwg UmVnRXggZGV2aWNlcyBhcmUgcmVwcmVzZW50ZWQgYnkgYSBnZW5lcmljDQo+ICsgKiBkYXRhIHN0 cnVjdHVyZSBvZiB0eXBlICpydGVfcmVnZXhkZXYqLg0KPiArICoNCj4gKyAqIFJlZ0V4IGRldmlj ZXMgYXJlIGR5bmFtaWNhbGx5IHJlZ2lzdGVyZWQgZHVyaW5nIHRoZSBQQ0kvU29DIGRldmljZQ0K PiBwcm9iaW5nDQo+ICsgKiBwaGFzZSBwZXJmb3JtZWQgYXQgRUFMIGluaXRpYWxpemF0aW9uIHRp bWUuDQo+ICsgKiBXaGVuIGEgUmVnRXggZGV2aWNlIGlzIGJlaW5nIHByb2JlZCwgYSAqcnRlX3Jl Z2V4ZGV2KiBzdHJ1Y3R1cmUgYW5kDQo+ICsgKiBhIG5ldyBkZXZpY2UgaWRlbnRpZmllciBhcmUg YWxsb2NhdGVkIGZvciB0aGF0IGRldmljZS4gVGhlbiwgdGhlDQo+ICsgKiByZWdleGRldl9pbml0 KCkgZnVuY3Rpb24gc3VwcGxpZWQgYnkgdGhlIFJlZ0V4IGRyaXZlciBtYXRjaGluZyB0aGUgcHJv YmVkDQo+ICsgKiBkZXZpY2UgaXMgaW52b2tlZCB0byBwcm9wZXJseSBpbml0aWFsaXplIHRoZSBk ZXZpY2UuDQo+ICsgKg0KPiArICogVGhlIHJvbGUgb2YgdGhlIGRldmljZSBpbml0IGZ1bmN0aW9u IGNvbnNpc3RzIG9mIHJlc2V0dGluZyB0aGUgaGFyZHdhcmUgb3INCj4gKyAqIHNvZnR3YXJlIFJl Z0V4IGRyaXZlciBpbXBsZW1lbnRhdGlvbnMuDQo+ICsgKg0KPiArICogSWYgdGhlIGRldmljZSBp bml0IG9wZXJhdGlvbiBpcyBzdWNjZXNzZnVsLCB0aGUgY29ycmVzcG9uZGVuY2UgYmV0d2Vlbg0K PiArICogdGhlIGRldmljZSBpZGVudGlmaWVyIGFzc2lnbmVkIHRvIHRoZSBuZXcgZGV2aWNlIGFu ZCBpdHMgYXNzb2NpYXRlZA0KPiArICogKnJ0ZV9yZWdleGRldiogc3RydWN0dXJlIGlzIGVmZmVj dGl2ZWx5IHJlZ2lzdGVyZWQuDQo+ICsgKiBPdGhlcndpc2UsIGJvdGggdGhlICpydGVfcmVnZXhk ZXYqIHN0cnVjdHVyZSBhbmQgdGhlIGRldmljZSBpZGVudGlmaWVyIGFyZQ0KPiArICogZnJlZWQu DQo+ICsgKg0KPiArICogVGhlIGZ1bmN0aW9ucyBleHBvcnRlZCBieSB0aGUgYXBwbGljYXRpb24g UmVnRXggQVBJIHRvIHNldHVwIGEgZGV2aWNlDQo+ICsgKiBkZXNpZ25hdGVkIGJ5IGl0cyBkZXZp Y2UgaWRlbnRpZmllciBtdXN0IGJlIGludm9rZWQgaW4gdGhlIGZvbGxvd2luZyBvcmRlcjoNCj4g KyAqICAgICAtIHJ0ZV9yZWdleGRldl9jb25maWd1cmUoKQ0KPiArICogICAgIC0gcnRlX3JlZ2V4 ZGV2X3F1ZXVlX3BhaXJfc2V0dXAoKQ0KPiArICogICAgIC0gcnRlX3JlZ2V4ZGV2X3N0YXJ0KCkN Cj4gKyAqDQo+ICsgKiBUaGVuLCB0aGUgYXBwbGljYXRpb24gY2FuIGludm9rZSwgaW4gYW55IG9y ZGVyLCB0aGUgZnVuY3Rpb25zDQo+ICsgKiBleHBvcnRlZCBieSB0aGUgUmVnRXggQVBJIHRvIGVu cXVldWUgcGF0dGVybiBtYXRjaGluZyBqb2IsIGRlcXVldWUNCj4gcGF0dGVybg0KPiArICogbWF0 Y2hpbmcgcmVzcG9uc2UsIGdldCB0aGUgc3RhdHMsIHVwZGF0ZSB0aGUgcnVsZSBkYXRhYmFzZSwN Cj4gKyAqIGdldC9zZXQgZGV2aWNlIGF0dHJpYnV0ZXMgYW5kIHNvIG9uDQo+ICsgKg0KPiArICog SWYgdGhlIGFwcGxpY2F0aW9uIHdhbnRzIHRvIGNoYW5nZSB0aGUgY29uZmlndXJhdGlvbiAoaS5l LiBjYWxsDQo+ICsgKiBydGVfcmVnZXhkZXZfY29uZmlndXJlKCkgb3IgcnRlX3JlZ2V4ZGV2X3F1 ZXVlX3BhaXJfc2V0dXAoKSksIGl0IG11c3QNCj4gY2FsbA0KPiArICogcnRlX3JlZ2V4ZGV2X3N0 b3AoKSBmaXJzdCB0byBzdG9wIHRoZSBkZXZpY2UgYW5kIHRoZW4gZG8gdGhlIHJlY29uZmlndXJh dGlvbg0KPiArICogYmVmb3JlIGNhbGxpbmcgcnRlX3JlZ2V4ZGV2X3N0YXJ0KCkgYWdhaW4uIFRo ZSBlbnF1ZXVlIGFuZCBkZXF1ZXVlDQo+ICsgKiBmdW5jdGlvbnMgc2hvdWxkIG5vdCBiZSBpbnZv a2VkIHdoZW4gdGhlIGRldmljZSBpcyBzdG9wcGVkLg0KPiArICoNCj4gKyAqIEZpbmFsbHksIGFu IGFwcGxpY2F0aW9uIGNhbiBjbG9zZSBhIFJlZ0V4IGRldmljZSBieSBpbnZva2luZyB0aGUNCj4g KyAqIHJ0ZV9yZWdleGRldl9jbG9zZSgpIGZ1bmN0aW9uLg0KPiArICoNCj4gKyAqIEVhY2ggZnVu Y3Rpb24gb2YgdGhlIGFwcGxpY2F0aW9uIFJlZ0V4IEFQSSBpbnZva2VzIGEgc3BlY2lmaWMgZnVu Y3Rpb24NCj4gKyAqIG9mIHRoZSBQTUQgdGhhdCBjb250cm9scyB0aGUgdGFyZ2V0IGRldmljZSBk ZXNpZ25hdGVkIGJ5IGl0cyBkZXZpY2UNCj4gKyAqIGlkZW50aWZpZXIuDQo+ICsgKg0KPiArICog Rm9yIHRoaXMgcHVycG9zZSwgYWxsIGRldmljZS1zcGVjaWZpYyBmdW5jdGlvbnMgb2YgYSBSZWdF eCBkcml2ZXIgYXJlDQo+ICsgKiBzdXBwbGllZCB0aHJvdWdoIGEgc2V0IG9mIHBvaW50ZXJzIGNv bnRhaW5lZCBpbiBhIGdlbmVyaWMgc3RydWN0dXJlIG9mIHR5cGUNCj4gKyAqICpyZWdleGRldl9v cHMqLg0KPiArICogVGhlIGFkZHJlc3Mgb2YgdGhlICpyZWdleGRldl9vcHMqIHN0cnVjdHVyZSBp cyBzdG9yZWQgaW4gdGhlDQo+ICpydGVfcmVnZXhkZXYqDQo+ICsgKiBzdHJ1Y3R1cmUgYnkgdGhl IGRldmljZSBpbml0IGZ1bmN0aW9uIG9mIHRoZSBSZWdFeCBkcml2ZXIsIHdoaWNoIGlzDQo+ICsg KiBpbnZva2VkIGR1cmluZyB0aGUgUENJL1NvQyBkZXZpY2UgcHJvYmluZyBwaGFzZSwgYXMgZXhw bGFpbmVkIGVhcmxpZXIuDQo+ICsgKg0KPiArICogSW4gb3RoZXIgd29yZHMsIGVhY2ggZnVuY3Rp b24gb2YgdGhlIFJlZ0V4IEFQSSBzaW1wbHkgcmV0cmlldmVzIHRoZQ0KPiArICogKnJ0ZV9yZWdl eGRldiogc3RydWN0dXJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZGV2aWNlIGlkZW50aWZpZXIgYW5k DQo+ICsgKiBwZXJmb3JtcyBhbiBpbmRpcmVjdCBpbnZvY2F0aW9uIG9mIHRoZSBjb3JyZXNwb25k aW5nIGRyaXZlciBmdW5jdGlvbg0KPiArICogc3VwcGxpZWQgaW4gdGhlICpyZWdleGRldl9vcHMq IHN0cnVjdHVyZSBvZiB0aGUgKnJ0ZV9yZWdleGRldiogc3RydWN0dXJlLg0KPiArICoNCj4gKyAq IEZvciBwZXJmb3JtYW5jZSByZWFzb25zLCB0aGUgYWRkcmVzcyBvZiB0aGUgZmFzdC1wYXRoIGZ1 bmN0aW9ucyBvZiB0aGUNCj4gKyAqIFJlZ0V4IGRyaXZlciBpcyBub3QgY29udGFpbmVkIGluIHRo ZSAqcmVnZXhkZXZfb3BzKiBzdHJ1Y3R1cmUuDQo+ICsgKiBJbnN0ZWFkLCB0aGV5IGFyZSBkaXJl Y3RseSBzdG9yZWQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgKnJ0ZV9yZWdleGRldioNCj4gKyAq IHN0cnVjdHVyZSB0byBhdm9pZCBhbiBleHRyYSBpbmRpcmVjdCBtZW1vcnkgYWNjZXNzIGR1cmlu ZyB0aGVpciBpbnZvY2F0aW9uLg0KPiArICoNCj4gKyAqIFJURSBSZWdFeCBkZXZpY2UgZHJpdmVy cyBkbyBub3QgdXNlIGludGVycnVwdHMgZm9yIGVucXVldWUgb3IgZGVxdWV1ZQ0KPiArICogb3Bl cmF0aW9uLiBJbnN0ZWFkLCBSZWdFeCBkcml2ZXJzIGV4cG9ydCBQb2xsLU1vZGUgZW5xdWV1ZSBh bmQgZGVxdWV1ZQ0KPiArICogZnVuY3Rpb25zIHRvIGFwcGxpY2F0aW9ucy4NCj4gKyAqDQo+ICsg KiBUaGUgKmVucXVldWUqIG9wZXJhdGlvbiBzdWJtaXRzIGEgYnVyc3Qgb2YgUmVnRXggcGF0dGVy biBtYXRjaGluZw0KPiByZXF1ZXN0DQo+ICsgKiB0byB0aGUgUmVnRXggZGV2aWNlIGFuZCB0aGUg KmRlcXVldWUqIG9wZXJhdGlvbiBnZXRzIGEgYnVyc3Qgb2YgcGF0dGVybg0KPiArICogbWF0Y2hp bmcgcmVzcG9uc2UgZm9yIHRoZSBvbmVzIHN1Ym1pdHRlZCB0aHJvdWdoICplbnF1ZXVlKiBvcGVy YXRpb24uDQo+ICsgKg0KPiArICogVHlwaWNhbCBhcHBsaWNhdGlvbiB1dGlsaXNhdGlvbiBvZiB0 aGUgUmVnRXggZGV2aWNlIEFQSSB3aWxsIGZvbGxvdyB0aGUNCj4gKyAqIGZvbGxvd2luZyBwcm9n cmFtbWluZyBmbG93Lg0KPiArICoNCj4gKyAqIC0gcnRlX3JlZ2V4ZGV2X2NvbmZpZ3VyZSgpDQo+ ICsgKiAtIHJ0ZV9yZWdleGRldl9xdWV1ZV9wYWlyX3NldHVwKCkNCj4gKyAqIC0gcnRlX3JlZ2V4 ZGV2X3J1bGVfZGJfdXBkYXRlKCkgTmVlZHMgdG8gaW52b2tlIGlmIHByZWNvbXBpbGVkIHJ1bGUN Cj4gZGF0YWJhc2UNCj4gKyAqICAgbm90IHByb3ZpZGVkIGluIHJ0ZV9yZWdleGRldl9jb25maWc6 OnJ1bGVfZGIgZm9yDQo+IHJ0ZV9yZWdleGRldl9jb25maWd1cmUoKQ0KPiArICogICBhbmQvb3Ig YXBwbGljYXRpb24gbmVlZHMgdG8gdXBkYXRlIHJ1bGUgZGF0YWJhc2UuDQo+ICsgKiAtIHJ0ZV9y ZWdleGRldl9ydWxlX2RiX2NvbXBpbGVfYWN0aXZhdGUoKSBOZWVkcyB0byBpbnZva2UgaWYNCj4g KyAqICAgcnRlX3JlZ2V4ZGV2X3J1bGVfZGJfdXBkYXRlIGZ1bmN0aW9uIHdhcyB1c2VkLg0KPiAr ICogLSBDcmVhdGUgb3IgcmV1c2UgZXhpdGluZyBtZW1wb29sIGZvciAqcnRlX3JlZ2V4X29wcyog b2JqZWN0cy4NCj4gKyAqIC0gcnRlX3JlZ2V4ZGV2X3N0YXJ0KCkNCj4gKyAqIC0gcnRlX3JlZ2V4 ZGV2X2VucXVldWVfYnVyc3QoKQ0KPiArICogLSBydGVfcmVnZXhkZXZfZGVxdWV1ZV9idXJzdCgp DQo+ICsgKg0KPiArICovDQo+ICsNCj4gKyNpZmRlZiBfX2NwbHVzcGx1cw0KPiArZXh0ZXJuICJD IiB7DQo+ICsjZW5kaWYNCj4gKw0KPiArI2luY2x1ZGUgPHJ0ZV9jb21tb24uaD4NCj4gKyNpbmNs dWRlIDxydGVfY29uZmlnLmg+DQo+ICsjaW5jbHVkZSA8cnRlX2Rldi5oPg0KPiArI2luY2x1ZGUg PHJ0ZV9lcnJuby5oPg0KPiArI2luY2x1ZGUgPHJ0ZV9tYnVmLmg+DQo+ICsjaW5jbHVkZSA8cnRl X21lbW9yeS5oPg0KPiArDQo+ICsvKioNCj4gKyAqIEB3YXJuaW5nDQo+ICsgKiBAYiBFWFBFUklN RU5UQUw6IHRoaXMgQVBJIG1heSBjaGFuZ2Ugd2l0aG91dCBwcmlvciBub3RpY2UuDQo+ICsgKg0K PiArICogR2V0IHRoZSB0b3RhbCBudW1iZXIgb2YgUmVnRXggZGV2aWNlcyB0aGF0IGhhdmUgYmVl biBzdWNjZXNzZnVsbHkNCj4gKyAqIGluaXRpYWxpc2VkLg0KPiArICoNCj4gKyAqIEByZXR1cm4N Cj4gKyAqICAgVGhlIHRvdGFsIG51bWJlciBvZiB1c2FibGUgUmVnRXggZGV2aWNlcy4NCj4gKyAq Lw0KPiArX19ydGVfZXhwZXJpbWVudGFsDQo+ICt1aW50OF90DQo+ICtydGVfcmVnZXhkZXZfY291 bnQodm9pZCk7DQo+ICsNCj4gKy8qKg0KPiArICogQHdhcm5pbmcNCj4gKyAqIEBiIEVYUEVSSU1F TlRBTDogdGhpcyBBUEkgbWF5IGNoYW5nZSB3aXRob3V0IHByaW9yIG5vdGljZS4NCj4gKyAqDQo+ ICsgKiBHZXQgdGhlIGRldmljZSBpZGVudGlmaWVyIGZvciB0aGUgbmFtZWQgUmVnRXggZGV2aWNl Lg0KPiArICoNCj4gKyAqIEBwYXJhbSBuYW1lDQo+ICsgKiAgIFJlZ0V4IGRldmljZSBuYW1lIHRv IHNlbGVjdCB0aGUgUmVnRXggZGV2aWNlIGlkZW50aWZpZXIuDQo+ICsgKg0KPiArICogQHJldHVy bg0KPiArICogICBSZXR1cm5zIFJlZ0V4IGRldmljZSBpZGVudGlmaWVyIG9uIHN1Y2Nlc3MuDQo+ ICsgKiAgIC0gPDA6IEZhaWx1cmUgdG8gZmluZCBuYW1lZCBSZWdFeCBkZXZpY2UuDQo+ICsgKi8N Cj4gK19fcnRlX2V4cGVyaW1lbnRhbA0KPiAraW50DQo+ICtydGVfcmVnZXhkZXZfZ2V0X2Rldl9p ZChjb25zdCBjaGFyICpuYW1lKTsNCj4gKw0KPiArLyogRW51bWVyYXRlcyBSZWdFeCBkZXZpY2Ug Y2FwYWJpbGl0aWVzICovDQo+ICsjZGVmaW5lIFJURV9SRUdFWERFVl9DQVBBX1JVTlRJTUVfQ09N UElMQVRJT05fRiAoMVVMTCA8PCAwKQ0KPiArLyoqPCBSZWdFeCBkZXZpY2UgZG9lcyBzdXBwb3J0 IGNvbXBpbGluZyB0aGUgcnVsZXMgYXQgcnVudGltZSB1bmxpa2UNCj4gKyAqIGxvYWRpbmcgb25s eSB0aGUgcHJlLWJ1aWx0IHJ1bGUgZGF0YWJhc2UgdXNpbmcNCj4gKyAqIHN0cnVjdCBydGVfcmVn ZXhkZXZfY29uZmlnOjpydWxlX2RiIGluIHJ0ZV9yZWdleGRldl9jb25maWd1cmUoKQ0KPiArICoN Cj4gKyAqIEBzZWUgc3RydWN0IHJ0ZV9yZWdleGRldl9jb25maWc6OnJ1bGVfZGIsIHJ0ZV9yZWdl eGRldl9jb25maWd1cmUoKQ0KPiArICogQHNlZSBzdHJ1Y3QgcnRlX3JlZ2V4ZGV2X2luZm86OnJl Z2V4ZGV2X2NhcGENCj4gKyAqLw0KPiArDQo+ICsjZGVmaW5lIFJURV9SRUdFWERFVl9DQVBBX1NV UFBfUENSRV9TVEFSVF9BTkNIT1JfRiAoMVVMTCA8PCAxKQ0KPiArLyoqPCBSZWdFeCBkZXZpY2Ug c3VwcG9ydCBQQ1JFIEFuY2hvciB0byBzdGFydCBvZiBtYXRjaCBmbGFnLg0KPiArICogRXhhbXBs ZSBSZWdFeCBpcyAnL1xHZm9vXGQvJy4gSGVyZSAnXEcnIGFzc2VydHMgcG9zaXRpb24gYXQgdGhl IGVuZCBvZiB0aGUNCj4gKyAqIHByZXZpb3VzIG1hdGNoIG9yIHRoZSBzdGFydCBvZiB0aGUgc3Ry aW5nIGZvciB0aGUgZmlyc3QgbWF0Y2guDQo+ICsgKiBUaGlzIHBvc2l0aW9uIHdpbGwgY2hhbmdl IGVhY2ggdGltZSB0aGUgUmVnRXggaXMgYXBwbGllZCB0byB0aGUgc3ViamVjdA0KPiArICogc3Ry aW5nLiBJZiB0aGUgUmVnRXggaXMgYXBwbGllZCB0byAnZm9vMWZvbzJaZm9vMycgdGhlIGZpcnN0 IHR3byBtYXRjaGVzIHdpbGwNCj4gKyAqIGJlIHN1Y2Nlc3NmdWwgZm9yICdmb28xZm9vMicgYW5k IGZhaWwgZm9yICdaZm9vMycuDQo+ICsgKg0KPiArICogQHNlZSBzdHJ1Y3QgcnRlX3JlZ2V4ZGV2 X2luZm86OnJlZ2V4ZGV2X2NhcGENCj4gKyAqLw0KPiArDQo+ICsjZGVmaW5lIFJURV9SRUdFWERF Vl9DQVBBX1NVUFBfUENSRV9BVE9NSUNfR1JPVVBJTkdfRiAoMVVMTCA8PA0KPiAyKQ0KPiArLyoq PCBSZWdFeCBkZXZpY2Ugc3VwcG9ydCBQQ1JFIEF0b21pYyBncm91cGluZy4NCj4gKyAqIEF0b21p YyBncm91cHMgYXJlIHJlcHJlc2VudGVkIGJ5ICcoPz4pJy4gQW4gYXRvbWljIGdyb3VwIGlzIGEg Z3JvdXAgdGhhdCwNCj4gKyAqIHdoZW4gdGhlIFJlZ0V4IGVuZ2luZSBleGl0cyBmcm9tIGl0LCBh dXRvbWF0aWNhbGx5IHRocm93cyBhd2F5IGFsbA0KPiArICogYmFja3RyYWNraW5nIHBvc2l0aW9u cyByZW1lbWJlcmVkIGJ5IGFueSB0b2tlbnMgaW5zaWRlIHRoZSBncm91cC4NCj4gKyAqIEV4YW1w bGUgUmVnRXggaXMgJ2EoPz5iY3xiKWMnIGlmIHRoZSBnaXZlbiBwYXR0ZXJucyBhcmUgJ2FiYycg YW5kICdhYmNjJyB0aGVuDQo+ICsgKiAnYShiY3xiKWMnIG1hdGNoZXMgYm90aCB3aGVyZSBhcyAn YSg/PmJjfGIpYycgbWF0Y2hlcyBvbmx5IGFiY2MgYmVjYXVzZQ0KPiArICogYXRvbWljIGdyb3Vw cyBkb24ndCBhbGxvdyBiYWNrdHJhY2luZyBiYWNrIHRvICdiJy4NCj4gKyAqDQo+ICsgKiBAc2Vl IHN0cnVjdCBydGVfcmVnZXhkZXZfaW5mbzo6cmVnZXhkZXZfY2FwYQ0KPiArICovDQo+ICsNCj4g KyNkZWZpbmUgUlRFX1JFR0VYREVWX1NVUFBfUENSRV9CQUNLVFJBQ0tJTkdfQ1RSTF9GICgxVUxM IDw8IDMpDQo+ICsvKio8IFJlZ0V4IGRldmljZSBzdXBwb3J0IFBDUkUgYmFja3RyYWNraW5nIGNv bnRyb2wgdmVyYnMuDQo+ICsgKiBTb21lIGV4YW1wbGVzIG9mIGJhY2t0cmFjaW5nIHZlcmJzIGFy ZSAoKkNPTU1JVCksICgqQUNDRVBUKSwgKCpGQUlMKSwNCj4gKyAqICgqU0tJUCksICgqUFJVTkUp Lg0KPiArICoNCj4gKyAqIEBzZWUgc3RydWN0IHJ0ZV9yZWdleGRldl9pbmZvOjpyZWdleGRldl9j YXBhDQo+ICsgKi8NCj4gKw0KPiArI2RlZmluZSBSVEVfUkVHRVhERVZfU1VQUF9QQ1JFX0NBTExP VVRTX0YgKDFVTEwgPDwgNCkNCj4gKy8qKjwgUmVnRXggZGV2aWNlIHN1cHBvcnQgUENSRSBjYWxs b3V0cy4NCj4gKyAqIFBDUkUgc3VwcG9ydHMgY2FsbGluZyBleHRlcm5hbCBmdW5jdGlvbiBpbiBi ZXR3ZWVuIG1hdGNoZXMgYnkgdXNpbmcgJyg/QyknLg0KPiArICogRXhhbXBsZSBSZWdFeCAnQUJD KD9DKUQnIGlmIGEgZ2l2ZW4gcGF0dGVyIGlzICdBQkNEJyB0aGVuIHRoZSBSZWdFeA0KPiBlbmdp bmUNCj4gKyAqIHdpbGwgcGFyc2UgQUJDIHBlcmZvcm0gYSB1c2VyZGVmaW5lZCBjYWxsb3V0IGFu ZCByZXR1cm4gYSBzdWNjZXNzZnVsIG1hdGNoDQo+IGF0DQo+ICsgKiBELg0KPiArICoNCj4gKyAq IEBzZWUgc3RydWN0IHJ0ZV9yZWdleGRldl9pbmZvOjpyZWdleGRldl9jYXBhDQo+ICsgKi8NCj4g Kw0KPiArI2RlZmluZSBSVEVfUkVHRVhERVZfU1VQUF9QQ1JFX0JBQ0tSRUZFUkVOQ0VfRiAoMVVM TCA8PCA1KQ0KPiArLyoqPCBSZWdFeCBkZXZpY2Ugc3VwcG9ydCBQQ1JFIGJhY2tyZWZlcmVuY2Uu DQo+ICsgKiBFeGFtcGxlIFJlZ0V4IGlzICcoXDJBQkN8KEdISSkpKycgXDIgbWF0Y2hlcyB0aGUg c2FtZSB0ZXh0IGFzIG1vc3QNCj4gcmVjZW50bHkNCj4gKyAqIG1hdGNoZWQgYnkgdGhlIDJuZCBj YXB0dXJpbmcgZ3JvdXAgaS5lLiAnR0hJJy4NCj4gKyAqDQo+ICsgKiBAc2VlIHN0cnVjdCBydGVf cmVnZXhkZXZfaW5mbzo6cmVnZXhkZXZfY2FwYQ0KPiArICovDQo+ICsNCj4gKyNkZWZpbmUgUlRF X1JFR0VYREVWX1NVUFBfUENSRV9HUkVFRFlfRiAoMVVMTCA8PCA2KQ0KPiArLyoqPCBSZWdFeCBk ZXZpY2Ugc3VwcG9ydCBQQ1JFIEdyZWVkeSBtb2RlLg0KPiArICogRm9yIGV4YW1wbGUgaWYgdGhl IFJlZ0V4IGlzICdBQlxkKj8nIHRoZW4gJyo/JyByZXByZXNlbnRzIHplcm8gb3IgdW5saW1pdGVk DQo+ICsgKiBtYXRjaGVzLiBJbiBncmVlZHkgbW9kZSB0aGUgcGF0dGVybiAnQUIxMjM0NScgd2ls bCBiZSBtYXRjaGVkDQo+IGNvbXBsZXRlbHkNCj4gKyAqIHdoZXJlIGFzIHRoZSB1bmdyZWVkeSBt b2RlICdBQicgd2lsbCBiZSByZXR1cm5lZCBhcyB0aGUgbWF0Y2guDQo+ICsgKg0KPiArICogQHNl ZSBzdHJ1Y3QgcnRlX3JlZ2V4ZGV2X2luZm86OnJlZ2V4ZGV2X2NhcGENCj4gKyAqLw0KPiArDQo+ ICsjZGVmaW5lIFJURV9SRUdFWERFVl9TVVBQX1BDUkVfTUFUQ0hfQUxMX0YgKDFVTEwgPDwgNykN Cj4gKy8qKjwgUmVnRXggZGV2aWNlIHN1cHBvcnQgbWF0Y2ggYWxsIG1vZGUuDQo+ICsgKiBGb3Ig ZXhhbXBsZSBpZiB0aGUgUmVnRXggaXMgJ0FCXGQqPycgdGhlbiAnKj8nIHJlcHJlc2VudHMgemVy byBvciB1bmxpbWl0ZWQNCj4gKyAqIG1hdGNoZXMuIEluIG1hdGNoIGFsbCBtb2RlIHRoZSBwYXR0 ZXJuICdBQjEyMzQ1JyB3aWxsIHJldHVybiA2IG1hdGNoZXMuDQo+ICsgKiBBQiwgQUIxLCBBQjEy LCBBQjEyMywgQUIxMjM0LCBBQjEyMzQ1Lg0KPiArICoNCj4gKyAqIEBzZWUgc3RydWN0IHJ0ZV9y ZWdleGRldl9pbmZvOjpyZWdleGRldl9jYXBhDQo+ICsgKi8NCj4gKw0KPiArI2RlZmluZSBSVEVf UkVHRVhERVZfU1VQUF9QQ1JFX0xPT0tBUk9VTkRfQVNSVF9GICgxVUxMIDw8IDgpDQo+ICsvKio8 IFJlZ0V4IGRldmljZSBzdXBwb3J0IFBDUkUgTG9va2Fyb3VuZCBhc3NlcnRpb25zDQo+ICsgKiAo WmVyby13aWR0aCBhc3NlcnRpb25zKS4gRXhhbXBsZSBSZWdFeCBpcyAnW2Etel0rXGQrKD89IXsz LH0pJyBpZg0KPiArICogdGhlIGdpdmVuIHBhdHRlcm4gaXMgJ2R3YWQxMjM0IScgdGhlIFJlZ0V4 IGVuZ2luZSBkb2Vzbid0IHJlcG9ydCBhbnkNCj4gbWF0Y2hlcw0KPiArICogYmVjYXVzZSB0aGUg YXNzZXJ0ICcoPz0hezMsfSknIGZhaWxzLiBUaGUgcGF0dGVybiAnZHdhZDEyMyEhIScgd291bGQg cmV0dXJuIGENCj4gKyAqIHN1Y2Nlc3NmdWwgbWF0Y2guDQo+ICsgKg0KPiArICogQHNlZSBzdHJ1 Y3QgcnRlX3JlZ2V4ZGV2X2luZm86OnJlZ2V4ZGV2X2NhcGENCj4gKyAqLw0KPiArDQo+ICsjZGVm aW5lIFJURV9SRUdFWERFVl9TVVBQX1BDUkVfTUFUQ0hfUE9JTlRfUlNUX0YgKDFVTEwgPDwgOSkN Cj4gKy8qKjwgUmVnRXggZGV2aWNlIGRvZXNuJ3Qgc3VwcG9ydCBQQ1JFIG1hdGNoIHBvaW50IHJl c2V0IGRpcmVjdGl2ZS4NCj4gKyAqIEV4YW1wbGUgUmVnRXggaXMgJ1thLXpdK1xLXGQrJyBpZiB0 aGUgcGF0dGVybiBpcyAnZHdhZDEyMycNCj4gKyAqIHRoZW4gZXZlbiB0aG91Z2ggdGhlIGVudGly ZSBwYXR0ZXJuIG1hdGNoZXMgb25seSAnMTIzJw0KPiArICogaXMgcmVwb3J0ZWQgYXMgYSBtYXRj aC4NCj4gKyAqDQo+ICsgKiBAc2VlIHN0cnVjdCBydGVfcmVnZXhkZXZfaW5mbzo6cmVnZXhkZXZf Y2FwYQ0KPiArICovDQo+ICsNCj4gKyNkZWZpbmUgUlRFX1JFR0VYREVWX1NVUFBfTkVXTElORV9D T05WRU5USU9OU19GICgxVUxMIDw8IDEwKQ0KPiArLyoqPCBSZWdFeCBzdXBwb3J0IFBDUkUgbmV3 bGluZSBjb252ZW50aW9uLg0KPiArICogTmV3bGluZSBjb252ZW50aW9ucyBhcmUgcmVwcmVzZW50 ZWQgYXMgZm9sbG93czoNCj4gKyAqICgqQ1IpICAgICAgICBjYXJyaWFnZSByZXR1cm4NCj4gKyAq ICgqTEYpICAgICAgICBsaW5lZmVlZA0KPiArICogKCpDUkxGKSAgICAgIGNhcnJpYWdlIHJldHVy biwgZm9sbG93ZWQgYnkgbGluZWZlZWQNCj4gKyAqICgqQU5ZQ1JMRikgICBhbnkgb2YgdGhlIHRo cmVlIGFib3ZlDQo+ICsgKiAoKkFOWSkgICAgICAgYWxsIFVuaWNvZGUgbmV3bGluZSBzZXF1ZW5j ZXMNCj4gKyAqDQo+ICsgKiBAc2VlIHN0cnVjdCBydGVfcmVnZXhkZXZfaW5mbzo6cmVnZXhkZXZf Y2FwYQ0KPiArICovDQo+ICsNCj4gKyNkZWZpbmUgUlRFX1JFR0VYREVWX1NVUFBfUENSRV9ORVdM SU5FX1NFUV9GICgxVUxMIDw8IDExKQ0KPiArLyoqPCBSZWdFeCBkZXZpY2Ugc3VwcG9ydCBQQ1JF IG5ld2xpbmUgc2VxdWVuY2UuDQo+ICsgKiBUaGUgZXNjYXBlIHNlcXVlbmNlICdcUicgd2lsbCBt YXRjaCBhbnkgbmV3bGluZSBzZXF1ZW5jZS4NCj4gKyAqIEl0IGlzIGVxdWl2YWxlbnQgdG86ICco Pz5cclxufFxufFx4MGJ8XGZ8XHJ8XHg4NSknLg0KPiArICoNCj4gKyAqIEBzZWUgc3RydWN0IHJ0 ZV9yZWdleGRldl9pbmZvOjpyZWdleGRldl9jYXBhDQo+ICsgKi8NCj4gKw0KPiArI2RlZmluZSBS VEVfUkVHRVhERVZfU1VQUF9QQ1JFX1BPU1NFU1NJVkVfUVVBTElGSUVSU19GICgxVUxMIDw8IDEy KQ0KPiArLyoqPCBSZWdFeCBkZXZpY2Ugc3VwcG9ydCBQQ1JFIHBvc3Nlc3NpdmUgcXVhbGlmaWVy cy4NCj4gKyAqIEV4YW1wbGUgUmVnRXggcG9zc2Vzc2l2ZSBxdWFsaWZpZXJzICcqKycsICcrKycs ICc/KycsICd7bSxufSsnLg0KPiArICogUG9zc2Vzc2l2ZSBxdWFudGlmaWVyIHJlcGVhdHMgdGhl IHRva2VuIGFzIG1hbnkgdGltZXMgYXMgcG9zc2libGUgYW5kIGl0DQo+IGRvZXMNCj4gKyAqIG5v dCBnaXZlIHVwIG1hdGNoZXMgYXMgdGhlIGVuZ2luZSBiYWNrdHJhY2tzLiBXaXRoIGEgcG9zc2Vz c2l2ZSBxdWFudGlmaWVyLA0KPiArICogdGhlIGRlYWwgaXMgYWxsIG9yIG5vdGhpbmcuDQo+ICsg Kg0KPiArICogQHNlZSBzdHJ1Y3QgcnRlX3JlZ2V4ZGV2X2luZm86OnJlZ2V4ZGV2X2NhcGENCj4g KyAqLw0KPiArDQo+ICsjZGVmaW5lIFJURV9SRUdFWERFVl9TVVBQX1BDUkVfU1VCUk9VVElORV9S RUZFUkVOQ0VTX0YgKDFVTEwgPDwNCj4gMTMpDQo+ICsvKio8IFJlZ0V4IGRldmljZSBzdXBwb3J0 IFBDUkUgU3Vicm91dGluZSByZWZlcmVuY2VzLg0KPiArICogUENSRSBTdWJyb3V0aW5lIHJlZmVy ZW5jZXMgYWxsb3cgZm9yIHN1YiBwYXR0ZXJucyB0byBiZSBhc3Nlc3NlZA0KPiArICogYXMgcGFy dCBvZiB0aGUgUmVnRXguIEV4YW1wbGUgUmVnRXggaXMgJyhmb298ZnV6eilcZzwxPitiYXInIG1h dGNoZXMgdGhlDQo+ICsgKiBwYXR0ZXJuICdmb29mb29mdXp6Zm9vZnV6emJhcicuDQo+ICsgKg0K PiArICogQHNlZSBzdHJ1Y3QgcnRlX3JlZ2V4ZGV2X2luZm86OnJlZ2V4ZGV2X2NhcGENCj4gKyAq Lw0KPiArDQo+ICsjZGVmaW5lIFJURV9SRUdFWERFVl9TVVBQX1BDUkVfVVRGXzhfRiAoMVVMTCA8 PCAxNCkNCj4gKy8qKjwgUmVnRXggZGV2aWNlIHN1cHBvcnQgVVRGLTggY2hhcmFjdGVyIGVuY29k aW5nLg0KPiArICoNCj4gKyAqIEBzZWUgc3RydWN0IHJ0ZV9yZWdleGRldl9pbmZvOjpwY3JlX3Vu c3VwX2ZsYWdzDQo+ICsgKi8NCj4gKw0KPiArI2RlZmluZSBSVEVfUkVHRVhERVZfU1VQUF9QQ1JF X1VURl8xNl9GICgxVUxMIDw8IDE1KQ0KPiArLyoqPCBSZWdFeCBkZXZpY2Ugc3VwcG9ydCBVVEYt MTYgY2hhcmFjdGVyIGVuY29kaW5nLg0KPiArICoNCj4gKyAqIEBzZWUgc3RydWN0IHJ0ZV9yZWdl eGRldl9pbmZvOjpyZWdleGRldl9jYXBhDQo+ICsgKi8NCj4gKw0KPiArI2RlZmluZSBSVEVfUkVH RVhERVZfU1VQUF9QQ1JFX1VURl8zMl9GICgxVUxMIDw8IDE2KQ0KPiArLyoqPCBSZWdFeCBkZXZp Y2Ugc3VwcG9ydCBVVEYtMzIgY2hhcmFjdGVyIGVuY29kaW5nLg0KPiArICoNCj4gKyAqIEBzZWUg c3RydWN0IHJ0ZV9yZWdleGRldl9pbmZvOjpyZWdleGRldl9jYXBhDQo+ICsgKi8NCj4gKw0KPiAr I2RlZmluZSBSVEVfUkVHRVhERVZfU1VQUF9QQ1JFX1dPUkRfQk9VTkRBUllfRiAoMVVMTCA8PCAx NykNCj4gKy8qKjwgUmVnRXggZGV2aWNlIHN1cHBvcnQgd29yZCBib3VuZGFyaWVzLg0KPiArICog VGhlIG1ldGEgY2hhcmFjdGVyICdcYicgcmVwcmVzZW50cyB3b3JkIGJvdW5kYXJ5IGFuY2hvci4N Cj4gKyAqDQo+ICsgKiBAc2VlIHN0cnVjdCBydGVfcmVnZXhkZXZfaW5mbzo6cmVnZXhkZXZfY2Fw YQ0KPiArICovDQo+ICsNCj4gKyNkZWZpbmUgUlRFX1JFR0VYREVWX1NVUFBfUENSRV9GT1JXQVJE X1JFRkVSRU5DRVNfRiAoMVVMTCA8PCAxOCkNCj4gKy8qKjwgUmVnRXggZGV2aWNlIHN1cHBvcnQg Rm9yd2FyZCByZWZlcmVuY2VzLg0KPiArICogRm9yd2FyZCByZWZlcmVuY2VzIGFsbG93IHlvdSB0 byB1c2UgYSBiYWNrIHJlZmVyZW5jZSB0byBhIGdyb3VwIHRoYXQNCj4gYXBwZWFycw0KPiArICog bGF0ZXIgaW4gdGhlIFJlZ0V4LiBFeGFtcGxlIFJlZ0V4IGlzICcoXDNBQkN8KERFRnwoR0hJKSkp KycgbWF0Y2hlcyB0aGUNCj4gKyAqIGZvbGxvd2luZyBzdHJpbmcgJ0dISUdISUFCQ0RFRicuDQo+ ICsgKg0KPiArICogQHNlZSBzdHJ1Y3QgcnRlX3JlZ2V4ZGV2X2luZm86OnJlZ2V4ZGV2X2NhcGEN Cj4gKyAqLw0KPiArDQo+ICsjZGVmaW5lIFJURV9SRUdFWERFVl9TVVBQX01BVENIX0FTX0VORF9G ICgxVUxMIDw8IDE5KQ0KPiArLyoqPCBSZWdFeCBkZXZpY2Ugc3VwcG9ydCBtYXRjaCBhcyBlbmQu DQo+ICsgKiBNYXRjaCBhcyBlbmQgbWVhbnMgdGhhdCB0aGUgbWF0Y2ggcmVzdWx0IGhvbGRzIHRo ZSBlbmQgb2Zmc2V0IG9mIHRoZQ0KPiArICogZGV0ZWN0ZWQgbWF0Y2guIE5vIGxlbiB2YWx1ZSBp cyBzZXQuDQo+ICsgKiBJZiB0aGUgZGV2aWNlIGRvZXNuJ3Qgc3VwcG9ydCB0aGlzIGZlYXR1cmUg aXQgbWVhbnMgdGhlIG1hdGNoDQo+ICsgKiByZXN1bHQgaG9sZHMgdGhlIHN0YXJ0aW5nIHBvc2l0 aW9uIG9mIG1hdGNoIGFuZCB0aGUgbGVuZ3RoIG9mIHRoZSBtYXRjaC4NCj4gKyAqDQo+ICsgKiBA c2VlIHN0cnVjdCBydGVfcmVnZXhkZXZfaW5mbzo6cmVnZXhkZXZfY2FwYQ0KPiArICovDQo+ICsN Cj4gKyNkZWZpbmUgUlRFX1JFR0VYREVWX1NVUFBfQ1JPU1NfQlVGRkVSX0YgKDFVTEwgPDwgMjAp DQo+ICsvKio8IFJlZ0V4IGRldmljZSBzdXBwb3J0IGNyb3NzIGJ1ZmZlciBtYXRjaC4NCj4gKyAq IENyb3NzIGJ1ZmZlciBtYXRjaGluZyBtZWFucyB0aGF0IHRoZSBtYXRjaCBjYW4gYmUgZGV0ZWN0 ZWQgZXZlbiBpZiB0aGUNCj4gKyAqIHN0cmluZyB3YXMgc3RhcnRlZCBpbiBwcmV2aW91cyBidWZm ZXIuDQo+ICsgKiBJbiBjYXNlIHRoZSBkZXZpY2UgaXMgY29uZmlndXJlZCBhcyBSVEVfUkVHRVhE RVZfQ0ZHX01BVENIX0FTX0VORA0KPiArICogdGhlIGVuZCBvZmZzZXQgd2lsbCBiZSByZWxhdGl2 ZSBmb3IgdGhlIGZpcnN0IHBhY2tldC4NCj4gKyAqIEZvciBleGFtcGxlIFJlZ0V4IGlzIEFCQyB0 aGUgZmlyc3QgYnVmZmVyIGlzIHh4eHggc2Vjb25kIGJ1ZmZlciB5eXlBIGFuZA0KPiArICogdGhl IGxhc3QgYnVmZmVyIEJDenouDQo+ICsgKiBJbiBjYXNlIHRoZSBtYXRjaCBhcyBlbmQgaXMgY29u ZmlndXJlZCB0aGUgZW5kIG9mZnNldCB3aWxsIGJlIDEwLg0KPiArICoNCj4gKyAqIEBzZWUgUlRF X1JFR0VYREVWX0NGR19NQVRDSF9BU19FTkRfRg0KPiArICogQHNlZSBSVEVfUkVHRVhERVZfQ0ZH X0NST1NTX0JVRkZFUl9TQ0FOX0YNCj4gKyAqIEBzZWUgUlRFX1JFR0VYX09QU19SU1BfUE1JX1NP Sl9GDQo+ICsgKiBAc2VlIFJURV9SRUdFWF9PUFNfUlNQX1BNSV9FT0pfRg0KPiArICovDQo+ICsN Cj4gKyNkZWZpbmUgUlRFX1JFR0VYREVWX1NVUFBfTUFUQ0hfQUxMX0YgKDFVTEwgPDwgMjEpDQo+ ICsvKio8IFJlZ0V4IGRldmljZSBzdXBwb3J0IG1hdGNoIGFsbC4NCj4gKyAqIE1hdGNoIGFsbCBt ZWFucyB0aGF0IHRoZSBSZWdFeCBlbmdpbmUgd2lsbCByZXR1cm4gYWxsIHBvc3NpYmxlIG1hdGNo ZXMuDQo+ICsgKiBGb3IgZXhhbXBsZSwgYXNzdW1lIHRoZSBSZWdFeCBpcyAnQStiJywgZ2l2ZW4g dGhlIGlucHV0IEFBQWIgdGhlDQo+ICsgKiByZXR1cm5lZCBtYXRjaGVzIHdpbGwgYmU6IEFiLCBB QWIgYW5kIEFBQWIuDQo+ICsgKg0KPiArICogQHNlZSBSVEVfUkVHRVhERVZfQ0ZHX01BVENIX0FM TF9GDQo+ICsgKi8NCj4gKw0KPiArLyogRW51bWVyYXRlcyBQQ1JFIHJ1bGUgZmxhZ3MgKi8NCj4g KyNkZWZpbmUgUlRFX1JFR0VYX1BDUkVfUlVMRV9BTExPV19FTVBUWV9GICgxVUxMIDw8IDApDQo+ ICsvKio8IFdoZW4gdGhpcyBmbGFnIGlzIHNldCwgdGhlIHBhdHRlcm4gdGhhdCBjYW4gbWF0Y2gg YWdhaW5zdCBhbiBlbXB0eSBzdHJpbmcsDQo+ICsgKiBzdWNoIGFzICcuKicgYXJlIGFsbG93ZWQu DQo+ICsgKg0KPiArICogQHNlZSBzdHJ1Y3QgcnRlX3JlZ2V4ZGV2X2luZm86OnJ1bGVfZmxhZ3MN Cj4gKyAqIEBzZWUgc3RydWN0IHJ0ZV9yZWdleGRldl9ydWxlOjpydWxlX2ZsYWdzDQo+ICsgKi8N Cj4gKw0KPiArI2RlZmluZSBSVEVfUkVHRVhfUENSRV9SVUxFX0FOQ0hPUkVEX0YgKDFVTEwgPDwg MSkNCj4gKy8qKjwgV2hlbiB0aGlzIGZsYWcgaXMgc2V0LCB0aGUgcGF0dGVybiBpcyBmb3JjZWQg dG8gYmUgImFuY2hvcmVkIiwgdGhhdCBpcywgaXQNCj4gKyAqIGlzIGNvbnN0cmFpbmVkIHRvIG1h dGNoIG9ubHkgYXQgdGhlIGZpcnN0IG1hdGNoaW5nIHBvaW50IGluIHRoZSBzdHJpbmcgdGhhdA0K PiArICogaXMgYmVpbmcgc2VhcmNoZWQuIFNpbWlsYXIgdG8gJ14nIGFuZCByZXByZXNlbnRlZCBi eSBcQS4NCj4gKyAqDQo+ICsgKiBAc2VlIHN0cnVjdCBydGVfcmVnZXhkZXZfaW5mbzo6cnVsZV9m bGFncw0KPiArICogQHNlZSBzdHJ1Y3QgcnRlX3JlZ2V4ZGV2X3J1bGU6OnJ1bGVfZmxhZ3MNCj4g KyAqLw0KPiArDQo+ICsjZGVmaW5lIFJURV9SRUdFWF9QQ1JFX1JVTEVfQ0FTRUxFU1NfRiAoMVVM TCA8PCAyKQ0KPiArLyoqPCBXaGVuIHRoaXMgZmxhZyBpcyBzZXQsIGxldHRlcnMgaW4gdGhlIHBh dHRlcm4gbWF0Y2ggYm90aCB1cHBlciBhbmQgbG93ZXINCj4gKyAqIGNhc2UgbGV0dGVycyBpbiB0 aGUgc3ViamVjdC4NCj4gKyAqDQo+ICsgKiBAc2VlIHN0cnVjdCBydGVfcmVnZXhkZXZfaW5mbzo6 cnVsZV9mbGFncw0KPiArICogQHNlZSBzdHJ1Y3QgcnRlX3JlZ2V4ZGV2X3J1bGU6OnJ1bGVfZmxh Z3MNCj4gKyAqLw0KPiArDQo+ICsjZGVmaW5lIFJURV9SRUdFWF9QQ1JFX1JVTEVfRE9UQUxMX0Yg KDFVTEwgPDwgMykNCj4gKy8qKjwgV2hlbiB0aGlzIGZsYWcgaXMgc2V0LCBhIGRvdCBtZXRhY2hh cmFjdGVyIGluIHRoZSBwYXR0ZXJuIG1hdGNoZXMgYW55DQo+ICsgKiBjaGFyYWN0ZXIsIGluY2x1 ZGluZyBvbmUgdGhhdCBpbmRpY2F0ZXMgYSBuZXdsaW5lLg0KPiArICoNCj4gKyAqIEBzZWUgc3Ry dWN0IHJ0ZV9yZWdleGRldl9pbmZvOjpydWxlX2ZsYWdzDQo+ICsgKiBAc2VlIHN0cnVjdCBydGVf cmVnZXhkZXZfcnVsZTo6cnVsZV9mbGFncw0KPiArICovDQo+ICsNCj4gKyNkZWZpbmUgUlRFX1JF R0VYX1BDUkVfUlVMRV9EVVBOQU1FU19GICgxVUxMIDw8IDQpDQo+ICsvKio8IFdoZW4gdGhpcyBm bGFnIGlzIHNldCwgbmFtZXMgdXNlZCB0byBpZGVudGlmeSBjYXB0dXJlIGdyb3VwcyBuZWVkIG5v dCBiZQ0KPiArICogdW5pcXVlLg0KPiArICoNCj4gKyAqIEBzZWUgc3RydWN0IHJ0ZV9yZWdleGRl dl9pbmZvOjpydWxlX2ZsYWdzDQo+ICsgKiBAc2VlIHN0cnVjdCBydGVfcmVnZXhkZXZfcnVsZTo6 cnVsZV9mbGFncw0KPiArICovDQo+ICsNCj4gKyNkZWZpbmUgUlRFX1JFR0VYX1BDUkVfUlVMRV9F WFRFTkRFRF9GICgxVUxMIDw8IDUpDQo+ICsvKio8IFdoZW4gdGhpcyBmbGFnIGlzIHNldCwgbW9z dCB3aGl0ZSBzcGFjZSBjaGFyYWN0ZXJzIGluIHRoZSBwYXR0ZXJuIGFyZQ0KPiArICogdG90YWxs eSBpZ25vcmVkIGV4Y2VwdCB3aGVuIGVzY2FwZWQgb3IgaW5zaWRlIGEgY2hhcmFjdGVyIGNsYXNz Lg0KPiArICoNCj4gKyAqIEBzZWUgc3RydWN0IHJ0ZV9yZWdleGRldl9pbmZvOjpydWxlX2ZsYWdz DQo+ICsgKiBAc2VlIHN0cnVjdCBydGVfcmVnZXhkZXZfcnVsZTo6cnVsZV9mbGFncw0KPiArICov DQo+ICsNCj4gKyNkZWZpbmUgUlRFX1JFR0VYX1BDUkVfUlVMRV9NQVRDSF9VTlNFVF9CQUNLUkVG X0YgKDFVTEwgPDwgNikNCj4gKy8qKjwgV2hlbiB0aGlzIGZsYWcgaXMgc2V0LCBhIGJhY2tyZWZl cmVuY2UgdG8gYW4gdW5zZXQgY2FwdHVyZSBncm91cCBtYXRjaGVzDQo+IGFuDQo+ICsgKiBlbXB0 eSBzdHJpbmcuDQo+ICsgKg0KPiArICogQHNlZSBzdHJ1Y3QgcnRlX3JlZ2V4ZGV2X2luZm86OnJ1 bGVfZmxhZ3MNCj4gKyAqIEBzZWUgc3RydWN0IHJ0ZV9yZWdleGRldl9ydWxlOjpydWxlX2ZsYWdz DQo+ICsgKi8NCj4gKw0KPiArI2RlZmluZSBSVEVfUkVHRVhfUENSRV9SVUxFX01VTFRJTElORV9G ICgxVUxMIDw8IDcpDQo+ICsvKio8IFdoZW4gdGhpcyBmbGFnICBpcyBzZXQsIHRoZSAnXicgYW5k ICckJyBjb25zdHJ1Y3RzIG1hdGNoIGltbWVkaWF0ZWx5DQo+ICsgKiBmb2xsb3dpbmcgb3IgaW1t ZWRpYXRlbHkgYmVmb3JlIGludGVybmFsIG5ld2xpbmVzIGluIHRoZSBzdWJqZWN0IHN0cmluZywN Cj4gKyAqIHJlc3BlY3RpdmVseSwgYXMgd2VsbCBhcyBhdCB0aGUgdmVyeSBzdGFydCBhbmQgZW5k Lg0KPiArICoNCj4gKyAqIEBzZWUgc3RydWN0IHJ0ZV9yZWdleGRldl9pbmZvOjpydWxlX2ZsYWdz DQo+ICsgKiBAc2VlIHN0cnVjdCBydGVfcmVnZXhkZXZfcnVsZTo6cnVsZV9mbGFncw0KPiArICov DQo+ICsNCj4gKyNkZWZpbmUgUlRFX1JFR0VYX1BDUkVfUlVMRV9OT19BVVRPX0NBUFRVUkVfRiAo MVVMTCA8PCA4KQ0KPiArLyoqPCBXaGVuIHRoaXMgRmxhZyBpcyBzZXQsIGl0IGRpc2FibGVzIHRo ZSB1c2Ugb2YgbnVtYmVyZWQgY2FwdHVyaW5nDQo+ICsgKiBwYXJlbnRoZXNlcyBpbiB0aGUgcGF0 dGVybi4gUmVmZXJlbmNlcyB0byBjYXB0dXJlIGdyb3VwcyAoYmFja3JlZmVyZW5jZXMNCj4gb3IN Cj4gKyAqIHJlY3Vyc2lvbi9zdWJyb3V0aW5lIGNhbGxzKSBtYXkgb25seSByZWZlciB0byBuYW1l ZCBncm91cHMsIHRob3VnaCB0aGUNCj4gKyAqIHJlZmVyZW5jZSBjYW4gYmUgYnkgbmFtZSBvciBi eSBudW1iZXIuDQo+ICsgKg0KPiArICogQHNlZSBzdHJ1Y3QgcnRlX3JlZ2V4ZGV2X2luZm86OnJ1 bGVfZmxhZ3MNCj4gKyAqIEBzZWUgc3RydWN0IHJ0ZV9yZWdleGRldl9ydWxlOjpydWxlX2ZsYWdz DQo+ICsgKi8NCj4gKw0KPiArI2RlZmluZSBSVEVfUkVHRVhfUENSRV9SVUxFX1VDUF9GICgxVUxM IDw8IDkpDQo+ICsvKio8IEJ5IGRlZmF1bHQsIG9ubHkgQVNDSUkgY2hhcmFjdGVycyBhcmUgcmVj b2duaXplZCwgV2hlbiB0aGlzIGZsYWcgaXMgc2V0LA0KPiArICogVW5pY29kZSBwcm9wZXJ0aWVz IGFyZSB1c2VkIGluc3RlYWQgdG8gY2xhc3NpZnkgY2hhcmFjdGVycy4NCj4gKyAqDQo+ICsgKiBA c2VlIHN0cnVjdCBydGVfcmVnZXhkZXZfaW5mbzo6cnVsZV9mbGFncw0KPiArICogQHNlZSBzdHJ1 Y3QgcnRlX3JlZ2V4ZGV2X3J1bGU6OnJ1bGVfZmxhZ3MNCj4gKyAqLw0KPiArDQo+ICsjZGVmaW5l IFJURV9SRUdFWF9QQ1JFX1JVTEVfVU5HUkVFRFlfRiAoMVVMTCA8PCAxMCkNCj4gKy8qKjwgV2hl biB0aGlzIGZsYWcgaXMgc2V0LCB0aGUgImdyZWVkaW5lc3MiIG9mIHRoZSBxdWFudGlmaWVycyBp cyBpbnZlcnRlZA0KPiArICogc28gdGhhdCB0aGV5IGFyZSBub3QgZ3JlZWR5IGJ5IGRlZmF1bHQs IGJ1dCBiZWNvbWUgZ3JlZWR5IGlmIGZvbGxvd2VkIGJ5DQo+ICsgKiAnPycuDQo+ICsgKg0KPiAr ICogQHNlZSBzdHJ1Y3QgcnRlX3JlZ2V4ZGV2X2luZm86OnJ1bGVfZmxhZ3MNCj4gKyAqIEBzZWUg c3RydWN0IHJ0ZV9yZWdleGRldl9ydWxlOjpydWxlX2ZsYWdzDQo+ICsgKi8NCj4gKw0KPiArI2Rl ZmluZSBSVEVfUkVHRVhfUENSRV9SVUxFX1VURl9GICgxVUxMIDw8IDExKQ0KPiArLyoqPCBXaGVu IHRoaXMgZmxhZyBpcyBzZXQsIFJlZ0V4IGVuZ2luZSBoYXMgdG8gcmVnYXJkIGJvdGggdGhlIHBh dHRlcm4gYW5kDQo+IHRoZQ0KPiArICogc3ViamVjdCBzdHJpbmdzIHRoYXQgYXJlIHN1YnNlcXVl bnRseSBwcm9jZXNzZWQgYXMgc3RyaW5ncyBvZiBVVEYgY2hhcmFjdGVycw0KPiArICogaW5zdGVh ZCBvZiBzaW5nbGUtY29kZS11bml0IHN0cmluZ3MuDQo+ICsgKg0KPiArICogQHNlZSBzdHJ1Y3Qg cnRlX3JlZ2V4ZGV2X2luZm86OnJ1bGVfZmxhZ3MNCj4gKyAqIEBzZWUgc3RydWN0IHJ0ZV9yZWdl eGRldl9ydWxlOjpydWxlX2ZsYWdzDQo+ICsgKi8NCj4gKw0KPiArI2RlZmluZSBSVEVfUkVHRVhf UENSRV9SVUxFX05FVkVSX0JBQ0tTTEFTSF9DX0YgKDFVTEwgPDwgMTIpDQo+ICsvKio8IFRoaXMg ZmxhZyBsb2NrcyBvdXQgdGhlIHVzZSBvZiAnXEMnIGluIHRoZSBwYXR0ZXJuIHRoYXQgaXMgYmVp bmcgY29tcGlsZWQuDQo+ICsgKiBUaGlzIGVzY2FwZSBtYXRjaGVzIG9uZSBkYXRhIHVuaXQsIGV2 ZW4gaW4gVVRGIG1vZGUgd2hpY2ggY2FuIGNhdXNlDQo+ICsgKiB1bnByZWRpY3RhYmxlIGJlaGF2 aW9yIGluIFVURi04IG9yIFVURi0xNiBtb2RlcywgYmVjYXVzZSBpdCBtYXkgbGVhdmUgdGhlDQo+ ICsgKiBjdXJyZW50IG1hdGNoaW5nIHBvaW50IGluIHRoZSBtaTpzZXQgaGxzZWFyY2hkZGxlIG9m IGEgbXVsdGktY29kZS11bml0DQo+ICsgKiBjaGFyYWN0ZXIuDQo+ICsgKg0KPiArICogQHNlZSBz dHJ1Y3QgcnRlX3JlZ2V4ZGV2X2luZm86OnJ1bGVfZmxhZ3MNCj4gKyAqIEBzZWUgc3RydWN0IHJ0 ZV9yZWdleGRldl9ydWxlOjpydWxlX2ZsYWdzDQo+ICsgKi8NCj4gKw0KPiArLyoqDQo+ICsgKiBS ZWdFeCBkZXZpY2UgaW5mb3JtYXRpb24NCj4gKyAqLw0KPiArc3RydWN0IHJ0ZV9yZWdleGRldl9p bmZvIHsNCj4gKwljb25zdCBjaGFyICpkcml2ZXJfbmFtZTsgLyoqPCBSZWdFeCBkcml2ZXIgbmFt ZS4gKi8NCj4gKwlzdHJ1Y3QgcnRlX2RldmljZSAqZGV2OwkvKio8IERldmljZSBpbmZvcm1hdGlv bi4gKi8NCj4gKwl1aW50MTZfdCBtYXhfbWF0Y2hlczsNCj4gKwkvKio8IE1heGltdW0gbWF0Y2hl cyBwZXIgc2NhbiBzdXBwb3J0ZWQgYnkgdGhpcyBkZXZpY2UuICovDQo+ICsJdWludDE2X3QgbWF4 X3F1ZXVlX3BhaXJzOw0KPiArCS8qKjwgTWF4aW11bSBxdWV1ZSBwYWlycyBzdXBwb3J0ZWQgYnkg dGhpcyBkZXZpY2UuICovDQo+ICsJdWludDE2X3QgbWF4X3BheWxvYWRfc2l6ZTsNCj4gKwkvKio8 IE1heGltdW0gcGF5bG9hZCBzaXplIGZvciBhIHBhdHRlcm4gbWF0Y2ggcmVxdWVzdCBvciBzY2Fu Lg0KPiArCSAqIEBzZWUgUlRFX1JFR0VYREVWX0NGR19DUk9TU19CVUZGRVJfU0NBTl9GDQo+ICsJ ICovDQo+ICsJdWludDMyX3QgbWF4X3J1bGVzX3Blcl9ncm91cDsNCj4gKwkvKio8IE1heGltdW0g cnVsZXMgc3VwcG9ydGVkIHBlciBncm91cCBieSB0aGlzIGRldmljZS4gKi8NCj4gKwl1aW50MTZf dCBtYXhfZ3JvdXBzOw0KPiArCS8qKjwgTWF4aW11bSBncm91cHMgc3VwcG9ydGVkIGJ5IHRoaXMg ZGV2aWNlLiAqLw0KPiArCXVpbnQzMl90IHJlZ2V4ZGV2X2NhcGE7DQo+ICsJLyoqPCBSZWdFeCBk ZXZpY2UgY2FwYWJpbGl0aWVzLiBAc2VlIFJURV9SRUdFWERFVl9DQVBBXyogKi8NCj4gKwl1aW50 NjRfdCBydWxlX2ZsYWdzOw0KPiArCS8qKjwgU3VwcG9ydGVkIGNvbXBpbGVyIHJ1bGUgZmxhZ3Mu DQo+ICsJICogQHNlZSBSVEVfUkVHRVhfUENSRV9SVUxFXyosIHN0cnVjdA0KPiBydGVfcmVnZXhk ZXZfcnVsZTo6cnVsZV9mbGFncw0KPiArCSAqLw0KPiArfTsNCj4gKw0KPiArLyoqDQo+ICsgKiBA d2FybmluZw0KPiArICogQGIgRVhQRVJJTUVOVEFMOiB0aGlzIEFQSSBtYXkgY2hhbmdlIHdpdGhv dXQgcHJpb3Igbm90aWNlLg0KPiArICoNCj4gKyAqIFJldHJpZXZlIHRoZSBjb250ZXh0dWFsIGlu Zm9ybWF0aW9uIG9mIGEgUmVnRXggZGV2aWNlLg0KPiArICoNCj4gKyAqIEBwYXJhbSBkZXZfaWQN Cj4gKyAqICAgVGhlIGlkZW50aWZpZXIgb2YgdGhlIGRldmljZS4NCj4gKyAqDQo+ICsgKiBAcGFy YW1bb3V0XSBkZXZfaW5mbw0KPiArICogICBBIHBvaW50ZXIgdG8gYSBzdHJ1Y3R1cmUgb2YgdHlw ZSAqcnRlX3JlZ2V4ZGV2X2luZm8qIHRvIGJlIGZpbGxlZCB3aXRoIHRoZQ0KPiArICogICBjb250 ZXh0dWFsIGluZm9ybWF0aW9uIG9mIHRoZSBkZXZpY2UuDQo+ICsgKg0KPiArICogQHJldHVybg0K PiArICogICAtIDA6IFN1Y2Nlc3MsIGRyaXZlciB1cGRhdGVzIHRoZSBjb250ZXh0dWFsIGluZm9y bWF0aW9uIG9mIHRoZSBSZWdFeCBkZXZpY2UNCj4gKyAqICAgLSA8MDogRXJyb3IgY29kZSByZXR1 cm5lZCBieSB0aGUgZHJpdmVyIGluZm8gZ2V0IGZ1bmN0aW9uLg0KPiArICovDQo+ICtfX3J0ZV9l eHBlcmltZW50YWwNCj4gK2ludA0KPiArcnRlX3JlZ2V4ZGV2X2luZm9fZ2V0KHVpbnQ4X3QgZGV2 X2lkLCBzdHJ1Y3QgcnRlX3JlZ2V4ZGV2X2luZm8gKmRldl9pbmZvKTsNCj4gKw0KPiArLyogRW51 bWVyYXRlcyBSZWdFeCBkZXZpY2UgY29uZmlndXJhdGlvbiBmbGFncyAqLw0KPiArI2RlZmluZSBS VEVfUkVHRVhERVZfQ0ZHX0NST1NTX0JVRkZFUl9TQ0FOX0YgKDFVTEwgPDwgMCkNCj4gKy8qKjwg Q3Jvc3MgYnVmZmVyIHNjYW4gcmVmZXJzIHRvIHRoZSBhYmlsaXR5IHRvIGJlIGFibGUgdG8gZGV0 ZWN0DQo+ICsgKiBtYXRjaGVzIHRoYXQgb2NjdXIgYWNyb3NzIGJ1ZmZlciBib3VuZGFyaWVzLCB3 aGVyZSB0aGUgYnVmZmVycyBhcmUgcmVsYXRlZA0KPiArICogdG8gZWFjaCBvdGhlciBpbiBzb21l IHdheS4gRW5hYmxlIHRoaXMgZmxhZyB3aGVuIHRvIHNjYW4gcGF5bG9hZCBzaXplDQo+ICsgKiBn cmVhdGVyIHRoYW4gc3RydWN0IHJ0ZV9yZWdleGRldl9pbmZvOjptYXhfcGF5bG9hZF9zaXplIGFu ZC9vcg0KPiArICogbWF0Y2hlcyBjYW4gcHJlc2VudCBhY3Jvc3Mgc2NhbiBidWZmZXIgYm91bmRh cmllcy4NCj4gKyAqDQo+ICsgKiBAc2VlIHN0cnVjdCBydGVfcmVnZXhkZXZfaW5mbzo6bWF4X3Bh eWxvYWRfc2l6ZQ0KPiArICogQHNlZSBzdHJ1Y3QgcnRlX3JlZ2V4ZGV2X2NvbmZpZzo6ZGV2X2Nm Z19mbGFncywgcnRlX3JlZ2V4ZGV2X2NvbmZpZ3VyZSgpDQo+ICsgKiBAc2VlIFJURV9SRUdFWF9P UFNfUlNQX1BNSV9TT0pfRg0KPiArICogQHNlZSBSVEVfUkVHRVhfT1BTX1JTUF9QTUlfRU9KX0YN Cj4gKyAqLw0KPiArDQo+ICsjZGVmaW5lIFJURV9SRUdFWERFVl9DRkdfTUFUQ0hfQVNfRU5EX0Yg KDFVTEwgPDwgMSkNCj4gKy8qKjwgTWF0Y2ggYXMgZW5kIGlzIHRoZSBhYmlsaXR5IHRvIHJldHVy biB0aGUgcmVzdWx0IGFzIGVuZGluZyBvZmZzZXQuDQo+ICsgKiBXaGVuIHRoaXMgZmxhZyBpcyBz ZXQsIHRoZSByZXN1bHQgZm9yIGVhY2ggbWF0Y2ggd2lsbCBob2xkIHRoZSBlbmRpbmcNCj4gKyAq IG9mZnNldCBvZiB0aGUgbWF0Y2ggaW4gZW5kX29mZnNldC4NCj4gKyAqIElmIHRoaXMgZmxhZyBp cyBub3Qgc2V0LCB0aGVuIHRoZSBtYXRjaCByZXN1bHQgd2lsbCBob2xkIHRoZSBzdGFydGluZyBv ZmZzZXQNCj4gKyAqIGluIHN0YXJ0X29mZnNldCwgYW5kIHRoZSBsZW5ndGggb2YgdGhlIG1hdGNo IGluIGxlbi4NCj4gKyAqDQo+ICsgKiBAc2VlIFJURV9SRUdFWERFVl9TVVBQX01BVENIX0FTX0VO RF9GDQo+ICsgKi8NCj4gKw0KPiArI2RlZmluZSBSVEVfUkVHRVhERVZfQ0ZHX01BVENIX0FMTF9G ICgxVUxMIDw8IDIpDQo+ICsvKio8IE1hdGNoIGFsbCBpcyB0aGUgYWJpbGl0eSB0byByZXR1cm4g YWxsIHBvc3NpYmxlIHJlc3VsdHMuDQo+ICsgKg0KPiArICogQHNlZSBSVEVfUkVHRVhERVZfU1VQ UF9NQVRDSF9BTExfRg0KPiArICovDQo+ICsNCj4gKy8qKiBSZWdFeCBkZXZpY2UgY29uZmlndXJh dGlvbiBzdHJ1Y3R1cmUgKi8NCj4gK3N0cnVjdCBydGVfcmVnZXhkZXZfY29uZmlnIHsNCj4gKwl1 aW50MTZfdCBuYl9tYXhfbWF0Y2hlczsNCj4gKwkvKio8IE1heGltdW0gbWF0Y2hlcyBwZXIgc2Nh biBjb25maWd1cmVkIG9uIHRoaXMgZGV2aWNlLg0KPiArCSAqIFRoaXMgdmFsdWUgY2Fubm90IGV4 Y2VlZCB0aGUgKm1heF9tYXRjaGVzKg0KPiArCSAqIHdoaWNoIHByZXZpb3VzbHkgcHJvdmlkZWQg aW4gcnRlX3JlZ2V4ZGV2X2luZm9fZ2V0KCkuDQo+ICsJICogVGhlIHZhbHVlIDAgaXMgYWxsb3dl ZCwgaW4gd2hpY2ggY2FzZSwgdmFsdWUgMSB1c2VkLg0KPiArCSAqIEBzZWUgc3RydWN0IHJ0ZV9y ZWdleGRldl9pbmZvOjptYXhfbWF0Y2hlcw0KPiArCSAqLw0KPiArCXVpbnQxNl90IG5iX3F1ZXVl X3BhaXJzOw0KPiArCS8qKjwgTnVtYmVyIG9mIFJlZ0V4IHF1ZXVlIHBhaXJzIHRvIGNvbmZpZ3Vy ZSBvbiB0aGlzIGRldmljZS4NCj4gKwkgKiBUaGlzIHZhbHVlIGNhbm5vdCBleGNlZWQgdGhlICpt YXhfcXVldWVfcGFpcnMqIHdoaWNoIHByZXZpb3VzbHkNCj4gKwkgKiBwcm92aWRlZCBpbiBydGVf cmVnZXhkZXZfaW5mb19nZXQoKS4NCj4gKwkgKiBAc2VlIHN0cnVjdCBydGVfcmVnZXhkZXZfaW5m bzo6bWF4X3F1ZXVlX3BhaXJzDQo+ICsJICovDQo+ICsJdWludDMyX3QgbmJfcnVsZXNfcGVyX2dy b3VwOw0KPiArCS8qKjwgTnVtYmVyIG9mIHJ1bGVzIHBlciBncm91cCB0byBjb25maWd1cmUgb24g dGhpcyBkZXZpY2UuDQo+ICsJICogVGhpcyB2YWx1ZSBjYW5ub3QgZXhjZWVkIHRoZSAqbWF4X3J1 bGVzX3Blcl9ncm91cCoNCj4gKwkgKiB3aGljaCBwcmV2aW91c2x5IHByb3ZpZGVkIGluIHJ0ZV9y ZWdleGRldl9pbmZvX2dldCgpLg0KPiArCSAqIFRoZSB2YWx1ZSAwIGlzIGFsbG93ZWQsIGluIHdo aWNoIGNhc2UsDQo+ICsJICogc3RydWN0IHJ0ZV9yZWdleGRldl9pbmZvOjptYXhfcnVsZXNfcGVy X2dyb3VwIHVzZWQuDQo+ICsJICogQHNlZSBzdHJ1Y3QgcnRlX3JlZ2V4ZGV2X2luZm86Om1heF9y dWxlc19wZXJfZ3JvdXANCj4gKwkgKi8NCj4gKwl1aW50MTZfdCBuYl9ncm91cHM7DQo+ICsJLyoq PCBOdW1iZXIgb2YgZ3JvdXBzIHRvIGNvbmZpZ3VyZSBvbiB0aGlzIGRldmljZS4NCj4gKwkgKiBU aGlzIHZhbHVlIGNhbm5vdCBleGNlZWQgdGhlICptYXhfZ3JvdXBzKg0KPiArCSAqIHdoaWNoIHBy ZXZpb3VzbHkgcHJvdmlkZWQgaW4gcnRlX3JlZ2V4ZGV2X2luZm9fZ2V0KCkuDQo+ICsJICogQHNl ZSBzdHJ1Y3QgcnRlX3JlZ2V4ZGV2X2luZm86Om1heF9ncm91cHMNCj4gKwkgKi8NCj4gKwljb25z dCBjaGFyICpydWxlX2RiOw0KPiArCS8qKjwgSW1wb3J0IGluaXRpYWwgc2V0IG9mIHByZWJ1aWx0 IHJ1bGUgZGF0YWJhc2Ugb24gdGhpcyBkZXZpY2UuDQo+ICsJICogVGhlIHZhbHVlIE5VTEwgaXMg YWxsb3dlZCwgaW4gd2hpY2ggY2FzZSwgdGhlIGRldmljZSB3aWxsIG5vdA0KPiArCSAqIGJlIGNv bmZpZ3VyZWQgcHJlYnVpbHQgcnVsZSBkYXRhYmFzZS4gQXBwbGljYXRpb24gbWF5IHVzZQ0KPiAr CSAqIHJ0ZV9yZWdleGRldl9ydWxlX2RiX3VwZGF0ZSgpIG9yIHJ0ZV9yZWdleGRldl9ydWxlX2Ri X2ltcG9ydCgpDQo+IEFQSQ0KPiArCSAqIHRvIHVwZGF0ZSBvciBpbXBvcnQgcnVsZSBkYXRhYmFz ZSBhZnRlciB0aGUNCj4gKwkgKiBydGVfcmVnZXhkZXZfY29uZmlndXJlKCkuDQo+ICsJICogQHNl ZSBydGVfcmVnZXhkZXZfcnVsZV9kYl91cGRhdGUoKSwNCj4gcnRlX3JlZ2V4ZGV2X3J1bGVfZGJf aW1wb3J0KCkNCj4gKwkgKi8NCj4gKwl1aW50MzJfdCBydWxlX2RiX2xlbjsNCj4gKwkvKio8IExl bmd0aCBvZiAqcnVsZV9kYiogYnVmZmVyLiAqLw0KPiArCXVpbnQzMl90IGRldl9jZmdfZmxhZ3M7 DQo+ICsJLyoqPCBSZWdFeCBkZXZpY2UgY29uZmlndXJhdGlvbiBmbGFncywgU2VlIFJURV9SRUdF WERFVl9DRkdfKiAgKi8NCj4gK307DQo+ICsNCj4gKy8qKg0KPiArICogQHdhcm5pbmcNCj4gKyAq IEBiIEVYUEVSSU1FTlRBTDogdGhpcyBBUEkgbWF5IGNoYW5nZSB3aXRob3V0IHByaW9yIG5vdGlj ZS4NCj4gKyAqDQo+ICsgKiBDb25maWd1cmUgYSBSZWdFeCBkZXZpY2UuDQo+ICsgKg0KPiArICog VGhpcyBmdW5jdGlvbiBtdXN0IGJlIGludm9rZWQgZmlyc3QgYmVmb3JlIGFueSBvdGhlciBmdW5j dGlvbiBpbiB0aGUNCj4gKyAqIEFQSS4gVGhpcyBmdW5jdGlvbiBjYW4gYWxzbyBiZSByZS1pbnZv a2VkIHdoZW4gYSBkZXZpY2UgaXMgaW4gdGhlDQo+ICsgKiBzdG9wcGVkIHN0YXRlLg0KPiArICoN Cj4gKyAqIFRoZSBjYWxsZXIgbWF5IHVzZSBydGVfcmVnZXhkZXZfaW5mb19nZXQoKSB0byBnZXQg dGhlIGNhcGFiaWxpdHkgb2YgZWFjaA0KPiArICogcmVzb3VyY2VzIGF2YWlsYWJsZSBmb3IgdGhp cyByZWdleCBkZXZpY2UuDQo+ICsgKg0KPiArICogQHBhcmFtIGRldl9pZA0KPiArICogICBUaGUg aWRlbnRpZmllciBvZiB0aGUgZGV2aWNlIHRvIGNvbmZpZ3VyZS4NCj4gKyAqIEBwYXJhbSBjZmcN Cj4gKyAqICAgVGhlIFJlZ0V4IGRldmljZSBjb25maWd1cmF0aW9uIHN0cnVjdHVyZS4NCj4gKyAq DQo+ICsgKiBAcmV0dXJuDQo+ICsgKiAgIC0gMDogU3VjY2VzcywgZGV2aWNlIGNvbmZpZ3VyZWQu IE90aGVyd2lzZSBuZWdhdGl2ZSBlcnJubyBpcyByZXR1cm5lZC4NCj4gKyAqLw0KPiArX19ydGVf ZXhwZXJpbWVudGFsDQo+ICtpbnQNCj4gK3J0ZV9yZWdleGRldl9jb25maWd1cmUodWludDhfdCBk ZXZfaWQsIGNvbnN0IHN0cnVjdCBydGVfcmVnZXhkZXZfY29uZmlnDQo+ICpjZmcpOw0KPiArDQo+ ICsvKiBFbnVtZXJhdGVzIFJlZ0V4IHF1ZXVlIHBhaXIgY29uZmlndXJhdGlvbiBmbGFncyAqLw0K PiArI2RlZmluZSBSVEVfUkVHRVhfUVVFVUVfUEFJUl9DRkdfT09TX0YgKDFVTEwgPDwgMCkNCj4g Ky8qKjwgT3V0IG9mIG9yZGVyIHNjYW4sIElmIG5vdCBzZXQsIGEgc2NhbiBtdXN0IHJldGlyZSBh ZnRlciBwcmV2aW91c2x5IGlzc3VlZA0KPiArICogaW4tb3JkZXIgc2NhbnMgdG8gdGhpcyBxdWV1 ZSBwYWlyLiBJZiBzZXQsIHRoaXMgc2NhbiBjYW4gYmUgcmV0aXJlZCBhcyBzb29uDQo+ICsgKiBh cyBkZXZpY2UgcmV0dXJucyBjb21wbGV0aW9uLiBBcHBsaWNhdGlvbiBzaG91bGQgbm90IHNldCBv dXQgb2Ygb3JkZXIgc2Nhbg0KPiArICogZmxhZyBpZiBpdCBuZWVkcyB0byBtYWludGFpbiB0aGUg aW5ncmVzcyBvcmRlciBvZiBzY2FuIHJlcXVlc3QuDQo+ICsgKg0KPiArICogQHNlZSBzdHJ1Y3Qg cnRlX3JlZ2V4ZGV2X3FwX2NvbmY6OnFwX2NvbmZfZmxhZ3MNCj4gKyAqIEBzZWUgcnRlX3JlZ2V4 ZGV2X3F1ZXVlX3BhaXJfc2V0dXAoKQ0KPiArICovDQo+ICsNCj4gK3N0cnVjdCBydGVfcmVnZXhf b3BzOw0KPiArdHlwZWRlZiB2b2lkICgqcmVnZXhkZXZfc3RvcF9mbHVzaF90KSh1aW50OF90IGRl dl9pZCwgdWludDE2X3QgcXBfaWQsDQo+ICsJCQkJICAgICAgc3RydWN0IHJ0ZV9yZWdleF9vcHMg Km9wKTsNCj4gKy8qKjwgQ2FsbGJhY2sgZnVuY3Rpb24gY2FsbGVkIGR1cmluZyBydGVfcmVnZXhk ZXZfc3RvcCgpLCBpbnZva2VkIG9uY2UgcGVyDQo+ICsgKiBmbHVzaGVkIFJlZ0V4IG9wLg0KPiAr ICovDQo+ICsNCj4gKy8qKiBSZWdFeCBxdWV1ZSBwYWlyIGNvbmZpZ3VyYXRpb24gc3RydWN0dXJl ICovDQo+ICtzdHJ1Y3QgcnRlX3JlZ2V4ZGV2X3FwX2NvbmYgew0KPiArCXVpbnQzMl90IHFwX2Nv bmZfZmxhZ3M7DQo+ICsJLyoqPCBRdWV1ZSBwYWlyIGNvbmZpZyBmbGFncywgU2VlIFJURV9SRUdF WF9RVUVVRV9QQUlSX0NGR18qICovDQo+ICsJdWludDE2X3QgbmJfZGVzYzsNCj4gKwkvKio8IFRo ZSBudW1iZXIgb2YgZGVzY3JpcHRvcnMgdG8gYWxsb2NhdGUgZm9yIHRoaXMgcXVldWUgcGFpci4g Ki8NCj4gKwlyZWdleGRldl9zdG9wX2ZsdXNoX3QgY2I7DQo+ICsJLyoqPCBDYWxsYmFjayBmdW5j dGlvbiBjYWxsZWQgZHVyaW5nIHJ0ZV9yZWdleGRldl9zdG9wKCksIGludm9rZWQNCj4gKwkgKiBv bmNlIHBlciBmbHVzaGVkIHJlZ2V4IG9wLiBWYWx1ZSBOVUxMIGlzIGFsbG93ZWQsIGluIHdoaWNo IGNhc2UNCj4gKwkgKiBjYWxsYmFjayB3aWxsIG5vdCBiZSBpbnZva2VkLiBUaGlzIGZ1bmN0aW9u IGNhbiBiZSB1c2VkIHRvIHByb3Blcmx5DQo+ICsJICogZGlzcG9zZSBvZiBvdXRzdGFuZGluZyBy ZWdleCBvcHMgZnJvbSByZXNwb25zZSBxdWV1ZSwNCj4gKwkgKiBmb3IgZXhhbXBsZSBvcHMgY29u dGFpbmluZyBtZW1vcnkgcG9pbnRlcnMuDQo+ICsJICogQHNlZSBydGVfcmVnZXhkZXZfc3RvcCgp DQo+ICsJICovDQo+ICt9Ow0KPiArDQo+ICsvKioNCj4gKyAqIEB3YXJuaW5nDQo+ICsgKiBAYiBF WFBFUklNRU5UQUw6IHRoaXMgQVBJIG1heSBjaGFuZ2Ugd2l0aG91dCBwcmlvciBub3RpY2UuDQo+ ICsgKg0KPiArICogQWxsb2NhdGUgYW5kIHNldCB1cCBhIFJlZ0V4IHF1ZXVlIHBhaXIgZm9yIGEg UmVnRXggZGV2aWNlLg0KPiArICoNCj4gKyAqIEBwYXJhbSBkZXZfaWQNCj4gKyAqICAgVGhlIGlk ZW50aWZpZXIgb2YgdGhlIGRldmljZS4NCj4gKyAqIEBwYXJhbSBxdWV1ZV9wYWlyX2lkDQo+ICsg KiAgIFRoZSBpbmRleCBvZiB0aGUgUmVnRXggcXVldWUgcGFpciB0byBzZXR1cC4gVGhlIHZhbHVl IG11c3QgYmUgaW4gdGhlDQo+IHJhbmdlDQo+ICsgKiAgIFswLCBuYl9xdWV1ZV9wYWlycyAtIDFd IHByZXZpb3VzbHkgc3VwcGxpZWQgdG8gcnRlX3JlZ2V4ZGV2X2NvbmZpZ3VyZSgpLg0KPiArICog QHBhcmFtIHFwX2NvbmYNCj4gKyAqICAgVGhlIHBvaW50ZXIgdG8gdGhlIGNvbmZpZ3VyYXRpb24g ZGF0YSB0byBiZSB1c2VkIGZvciB0aGUgUmVnRXggcXVldWUgcGFpci4NCj4gKyAqICAgTlVMTCB2 YWx1ZSBpcyBhbGxvd2VkLCBpbiB3aGljaCBjYXNlIGRlZmF1bHQgY29uZmlndXJhdGlvbgl1c2Vk Lg0KPiArICoNCj4gKyAqIEByZXR1cm4NCj4gKyAqICAgMCBvbiBzdWNjZXNzLiBPdGhlcndpc2Ug bmVnYXRpdmUgZXJybm8gaXMgcmV0dXJuZWQuDQo+ICsgKi8NCj4gK19fcnRlX2V4cGVyaW1lbnRh bA0KPiAraW50DQo+ICtydGVfcmVnZXhkZXZfcXVldWVfcGFpcl9zZXR1cCh1aW50OF90IGRldl9p ZCwgdWludDE2X3QgcXVldWVfcGFpcl9pZCwNCj4gKwkJCSAgICAgIGNvbnN0IHN0cnVjdCBydGVf cmVnZXhkZXZfcXBfY29uZiAqcXBfY29uZik7DQo+ICsNCj4gKy8qKg0KPiArICogQHdhcm5pbmcN Cj4gKyAqIEBiIEVYUEVSSU1FTlRBTDogdGhpcyBBUEkgbWF5IGNoYW5nZSB3aXRob3V0IHByaW9y IG5vdGljZS4NCj4gKyAqDQo+ICsgKiBTdGFydCBhIFJlZ0V4IGRldmljZS4NCj4gKyAqDQo+ICsg KiBUaGUgZGV2aWNlIHN0YXJ0IHN0ZXAgaXMgdGhlIGxhc3Qgb25lIGFuZCBjb25zaXN0cyBvZiBz ZXR0aW5nIHRoZSBSZWdFeA0KPiArICogcXVldWVzIHRvIHN0YXJ0IGFjY2VwdGluZyB0aGUgcGF0 dGVybiBtYXRjaGluZyBzY2FuIHJlcXVlc3RzLg0KPiArICoNCj4gKyAqIE9uIHN1Y2Nlc3MsIGFs bCBiYXNpYyBmdW5jdGlvbnMgZXhwb3J0ZWQgYnkgdGhlIEFQSSAoUmVnRXggZW5xdWV1ZSwNCj4g KyAqIFJlZ0V4IGRlcXVldWUgYW5kIHNvIG9uKSBjYW4gYmUgaW52b2tlZC4NCj4gKyAqDQo+ICsg KiBAcGFyYW0gZGV2X2lkDQo+ICsgKiAgIFJlZ0V4IGRldmljZSBpZGVudGlmaWVyLg0KPiArICoN Cj4gKyAqIEByZXR1cm4NCj4gKyAqICAgMCBvbiBzdWNjZXNzLiBPdGhlcndpc2UgbmVnYXRpdmUg ZXJybm8gaXMgcmV0dXJuZWQuDQo+ICsgKi8NCj4gK19fcnRlX2V4cGVyaW1lbnRhbA0KPiAraW50 DQo+ICtydGVfcmVnZXhkZXZfc3RhcnQodWludDhfdCBkZXZfaWQpOw0KPiArDQo+ICsvKioNCj4g KyAqIEB3YXJuaW5nDQo+ICsgKiBAYiBFWFBFUklNRU5UQUw6IHRoaXMgQVBJIG1heSBjaGFuZ2Ug d2l0aG91dCBwcmlvciBub3RpY2UuDQo+ICsgKg0KPiArICogU3RvcCBhIFJlZ0V4IGRldmljZS4N Cj4gKyAqDQo+ICsgKiBTdG9wIGEgUmVnRXggZGV2aWNlLiBUaGUgZGV2aWNlIGNhbiBiZSByZXN0 YXJ0ZWQgd2l0aCBhIGNhbGwgdG8NCj4gKyAqIHJ0ZV9yZWdleGRldl9zdGFydCgpLg0KPiArICoN Cj4gKyAqIFRoaXMgZnVuY3Rpb24gY2F1c2VzIGFsbCBxdWV1ZWQgcmVzcG9uc2UgcmVnZXggb3Bz IHRvIGJlIGRyYWluZWQgaW4gdGhlDQo+ICsgKiByZXNwb25zZSBxdWV1ZS4gV2hpbGUgZHJhaW5p bmcgb3BzIG91dCBvZiB0aGUgZGV2aWNlLA0KPiArICogc3RydWN0IHJ0ZV9yZWdleGRldl9xcF9j b25mOjpjYiB3aWxsIGJlIGludm9rZWQgZm9yIGVhY2ggb3BzLg0KPiArICoNCj4gKyAqIEBwYXJh bSBkZXZfaWQNCj4gKyAqICAgUmVnRXggZGV2aWNlIGlkZW50aWZpZXIuDQo+ICsgKg0KPiArICog QHNlZSBzdHJ1Y3QgcnRlX3JlZ2V4ZGV2X3FwX2NvbmY6OmNiLCBydGVfcmVnZXhkZXZfcXVldWVf cGFpcl9zZXR1cCgpDQo+ICsgKi8NCj4gK19fcnRlX2V4cGVyaW1lbnRhbA0KPiArdm9pZA0KPiAr cnRlX3JlZ2V4ZGV2X3N0b3AodWludDhfdCBkZXZfaWQpOw0KPiArDQo+ICsvKioNCj4gKyAqIEB3 YXJuaW5nDQo+ICsgKiBAYiBFWFBFUklNRU5UQUw6IHRoaXMgQVBJIG1heSBjaGFuZ2Ugd2l0aG91 dCBwcmlvciBub3RpY2UuDQo+ICsgKg0KPiArICogQ2xvc2UgYSBSZWdFeCBkZXZpY2UuIFRoZSBk ZXZpY2UgY2Fubm90IGJlIHJlc3RhcnRlZCENCj4gKyAqDQo+ICsgKiBAcGFyYW0gZGV2X2lkDQo+ ICsgKiAgIFJlZ0V4IGRldmljZSBpZGVudGlmaWVyDQo+ICsgKg0KPiArICogQHJldHVybg0KPiAr ICogICAwIG9uIHN1Y2Nlc3MuIE90aGVyd2lzZSBuZWdhdGl2ZSBlcnJubyBpcyByZXR1cm5lZC4N Cj4gKyAqLw0KPiArX19ydGVfZXhwZXJpbWVudGFsDQo+ICtpbnQNCj4gK3J0ZV9yZWdleGRldl9j bG9zZSh1aW50OF90IGRldl9pZCk7DQo+ICsNCj4gKy8qIERldmljZSBnZXQvc2V0IGF0dHJpYnV0 ZXMgKi8NCj4gKw0KPiArLyoqIEVudW1lcmF0ZXMgUmVnRXggZGV2aWNlIGF0dHJpYnV0ZSBpZGVu dGlmaWVyICovDQo+ICtlbnVtIHJ0ZV9yZWdleGRldl9hdHRyX2lkIHsNCj4gKwlSVEVfUkVHRVhE RVZfQVRUUl9TT0NLRVRfSUQsDQo+ICsJLyoqPCBUaGUgTlVNQSBzb2NrZXQgaWQgdG8gd2hpY2gg dGhlIGRldmljZSBpcyBjb25uZWN0ZWQgb3INCj4gKwkgKiBhIGRlZmF1bHQgb2YgemVybyBpZiB0 aGUgc29ja2V0IGNvdWxkIG5vdCBiZSBkZXRlcm1pbmVkLg0KPiArCSAqIGRhdGF0eXBlOiAqaW50 Kg0KPiArCSAqIG9wZXJhdGlvbjogKmdldCoNCj4gKwkgKi8NCj4gKwlSVEVfUkVHRVhERVZfQVRU Ul9NQVhfTUFUQ0hFUywNCj4gKwkvKio8IE1heGltdW0gbnVtYmVyIG9mIG1hdGNoZXMgcGVyIHNj YW4uDQo+ICsJICogZGF0YXR5cGU6ICp1aW50OF90Kg0KPiArCSAqIG9wZXJhdGlvbjogKmdldCog YW5kICpzZXQqDQo+ICsJICogQHNlZSBSVEVfUkVHRVhfT1BTX1JTUF9NQVhfTUFUQ0hfRg0KPiAr CSAqLw0KPiArCVJURV9SRUdFWERFVl9BVFRSX01BWF9TQ0FOX1RJTUVPVVQsDQo+ICsJLyoqPCBV cHBlciBib3VuZCBzY2FuIHRpbWUgaW4gbnMuDQo+ICsJICogZGF0YXR5cGU6ICp1aW50MTZfdCoN Cj4gKwkgKiBvcGVyYXRpb246ICpnZXQqIGFuZCAqc2V0Kg0KPiArCSAqIEBzZWUgUlRFX1JFR0VY X09QU19SU1BfTUFYX1NDQU5fVElNRU9VVF9GDQo+ICsJICovDQo+ICsJUlRFX1JFR0VYREVWX0FU VFJfTUFYX1BSRUZJWCwNCj4gKwkvKio8IE1heGltdW0gbnVtYmVyIG9mIHByZWZpeCBkZXRlY3Rl ZCBwZXIgc2Nhbi4NCj4gKwkgKiBUaGlzIHdvdWxkIGJlIHVzZWZ1bCBmb3IgZGVuaWFsIG9mIHNl cnZpY2UgZGV0ZWN0aW9uLg0KPiArCSAqIGRhdGF0eXBlOiAqdWludDE2X3QqDQo+ICsJICogb3Bl cmF0aW9uOiAqZ2V0KiBhbmQgKnNldCoNCj4gKwkgKiBAc2VlIFJURV9SRUdFWF9PUFNfUlNQX01B WF9QUkVGSVhfRg0KPiArCSAqLw0KPiArfTsNCj4gKw0KPiArLyoqDQo+ICsgKiBAd2FybmluZw0K PiArICogQGIgRVhQRVJJTUVOVEFMOiB0aGlzIEFQSSBtYXkgY2hhbmdlIHdpdGhvdXQgcHJpb3Ig bm90aWNlLg0KPiArICoNCj4gKyAqIEdldCBhbiBhdHRyaWJ1dGUgZnJvbSBhIFJlZ0V4IGRldmlj ZS4NCj4gKyAqDQo+ICsgKiBAcGFyYW0gZGV2X2lkDQo+ICsgKiAgIFJlZ0V4IGRldmljZSBpZGVu dGlmaWVyLg0KPiArICogQHBhcmFtIGF0dHJfaWQNCj4gKyAqICAgVGhlIGF0dHJpYnV0ZSBJRCB0 byByZXRyaWV2ZS4NCj4gKyAqIEBwYXJhbSBhdHRyX3ZhbHVlDQo+ICsgKiAgIEEgcG9pbnRlciB0 aGF0IHdpbGwgYmUgZmlsbGVkIGluIHdpdGggdGhlIGF0dHJpYnV0ZQ0KPiArICogICB2YWx1ZSBp ZiBzdWNjZXNzZnVsLg0KPiArICoNCj4gKyAqIEByZXR1cm4NCj4gKyAqICAgLSAwOiBTdWNjZXNz ZnVsbHkgcmV0cmlldmVkIGF0dHJpYnV0ZSB2YWx1ZS4NCj4gKyAqICAgLSAtRUlOVkFMOiBJbnZh bGlkIGRldmljZSBvciAgKmF0dHJfaWQqIHByb3ZpZGVkLCBvciAqYXR0cl92YWx1ZSogaXMgTlVM TC4NCj4gKyAqICAgLSAtRU5PVFNVUDogaWYgdGhlIGRldmljZSBkb2Vzbid0IHN1cHBvcnQgc3Bl Y2lmaWMgKmF0dHJfaWQqLg0KPiArICovDQo+ICtfX3J0ZV9leHBlcmltZW50YWwNCj4gK2ludA0K PiArcnRlX3JlZ2V4ZGV2X2F0dHJfZ2V0KHVpbnQ4X3QgZGV2X2lkLCBlbnVtIHJ0ZV9yZWdleGRl dl9hdHRyX2lkIGF0dHJfaWQsDQo+ICsJCSAgICAgIHZvaWQgKmF0dHJfdmFsdWUpOw0KPiArDQo+ ICsvKioNCj4gKyAqIEB3YXJuaW5nDQo+ICsgKiBAYiBFWFBFUklNRU5UQUw6IHRoaXMgQVBJIG1h eSBjaGFuZ2Ugd2l0aG91dCBwcmlvciBub3RpY2UuDQo+ICsgKg0KPiArICogU2V0IGFuIGF0dHJp YnV0ZSB0byBhIFJlZ0V4IGRldmljZS4NCj4gKyAqDQo+ICsgKiBAcGFyYW0gZGV2X2lkDQo+ICsg KiAgIFJlZ0V4IGRldmljZSBpZGVudGlmaWVyLg0KPiArICogQHBhcmFtIGF0dHJfaWQNCj4gKyAq ICAgVGhlIGF0dHJpYnV0ZSBJRCB0byByZXRyaWV2ZS4NCj4gKyAqIEBwYXJhbSBhdHRyX3ZhbHVl DQo+ICsgKiAgIFBvaW50ZXIgdGhhdCB3aWxsIGJlIGZpbGxlZCBpbiB3aXRoIHRoZSBhdHRyaWJ1 dGUgdmFsdWUNCj4gKyAqICAgYnkgdGhlIGFwcGxpY2F0aW9uLg0KPiArICoNCj4gKyAqIEByZXR1 cm4NCj4gKyAqICAgLSAwOiBTdWNjZXNzZnVsbHkgYXBwbGllZCB0aGUgYXR0cmlidXRlIHZhbHVl Lg0KPiArICogICAtIC1FSU5WQUw6IEludmFsaWQgZGV2aWNlIG9yICAqYXR0cl9pZCogcHJvdmlk ZWQsIG9yICphdHRyX3ZhbHVlKiBpcyBOVUxMLg0KPiArICogICAtIC1FTk9UU1VQOiBpZiB0aGUg ZGV2aWNlIGRvZXNuJ3Qgc3VwcG9ydCBzcGVjaWZpYyAqYXR0cl9pZCouDQo+ICsgKi8NCj4gK19f cnRlX2V4cGVyaW1lbnRhbA0KPiAraW50DQo+ICtydGVfcmVnZXhkZXZfYXR0cl9zZXQodWludDhf dCBkZXZfaWQsIGVudW0gcnRlX3JlZ2V4ZGV2X2F0dHJfaWQgYXR0cl9pZCwNCj4gKwkJICAgICAg Y29uc3Qgdm9pZCAqYXR0cl92YWx1ZSk7DQo+ICsNCj4gKy8qIFJ1bGUgcmVsYXRlZCBBUElzICov DQo+ICsvKiogRW51bWVyYXRlcyBSZWdFeCBydWxlIG9wZXJhdGlvbi4gKi8NCj4gK2VudW0gcnRl X3JlZ2V4ZGV2X3J1bGVfb3Agew0KPiArCVJURV9SRUdFWF9SVUxFX09QX0FERCwNCj4gKwkvKio8 IEFkZCBSZWdFeCBydWxlIHRvIHJ1bGUgZGF0YWJhc2UuICovDQo+ICsJUlRFX1JFR0VYX1JVTEVf T1BfUkVNT1ZFDQo+ICsJLyoqPCBSZW1vdmUgUmVnRXggcnVsZSBmcm9tIHJ1bGUgZGF0YWJhc2Uu ICovDQo+ICt9Ow0KPiArDQo+ICsvKiogU3RydWN0dXJlIHRvIGhvbGQgYSBSZWdFeCBydWxlIGF0 dHJpYnV0ZXMuICovDQo+ICtzdHJ1Y3QgcnRlX3JlZ2V4ZGV2X3J1bGUgew0KPiArCWVudW0gcnRl X3JlZ2V4ZGV2X3J1bGVfb3Agb3A7DQo+ICsJLyoqPCBPUCB0eXBlIG9mIHRoZSBydWxlIGVpdGhl ciBhIE9QX0FERCBvciBPUF9ERUxFVEUuICovDQo+ICsJdWludDE2X3QgZ3JvdXBfaWQ7DQo+ICsJ LyoqPCBHcm91cCBpZGVudGlmaWVyIHRvIHdoaWNoIHRoZSBydWxlIGJlbG9uZ3MgdG8uICovDQo+ ICsJdWludDMyX3QgcnVsZV9pZDsNCj4gKwkvKio8IFJ1bGUgaWRlbnRpZmllciB3aGljaCBpcyBy ZXR1cm5lZCBvbiBzdWNjZXNzZnVsIG1hdGNoLiAqLw0KPiArCWNvbnN0IGNoYXIgKnBjcmVfcnVs ZTsNCj4gKwkvKio8IEJ1ZmZlciB0byBob2xkIHRoZSBQQ1JFIHJ1bGUuICovDQo+ICsJdWludDE2 X3QgcGNyZV9ydWxlX2xlbjsNCj4gKwkvKio8IExlbmd0aCBvZiB0aGUgUENSRSBydWxlLiAqLw0K PiArCXVpbnQ2NF90IHJ1bGVfZmxhZ3M7DQo+ICsJLyogUENSRSBydWxlIGZsYWdzLiBTdXBwb3J0 ZWQgZGV2aWNlIHNwZWNpZmljIFBDUkUgcnVsZXMgZW51bWVyYXRlZA0KPiArCSAqIGluIHN0cnVj dCBydGVfcmVnZXhkZXZfaW5mbzo6cnVsZV9mbGFncy4gRm9yIHN1Y2Nlc3NmdWwgcnVsZQ0KPiAr CSAqIGRhdGFiYXNlIHVwZGF0ZSwgYXBwbGljYXRpb24gbmVlZHMgdG8gcHJvdmlkZSBvbmx5IHN1 cHBvcnRlZA0KPiArCSAqIHJ1bGUgZmxhZ3MuDQo+ICsJICogQFNlZSBSVEVfUkVHRVhfUENSRV9S VUxFXyosIHN0cnVjdA0KPiBydGVfcmVnZXhkZXZfaW5mbzo6cnVsZV9mbGFncw0KPiArCSAqLw0K PiArfTsNCj4gKw0KPiArLyoqDQo+ICsgKiBAd2FybmluZw0KPiArICogQGIgRVhQRVJJTUVOVEFM OiB0aGlzIEFQSSBtYXkgY2hhbmdlIHdpdGhvdXQgcHJpb3Igbm90aWNlLg0KPiArICoNCj4gKyAq IFVwZGF0ZSB0aGUgbG9jYWwgcnVsZSBzZXQuDQo+ICsgKiBUaGlzIGZ1bmN0aW9ucyBvbmx5IG1v ZGlmeSB0aGUgcnVsZSBzZXQgaW4gbWVtb3J5Lg0KPiArICogSW4gb3JkZXIgZm9yIHRoZSBjaGFu Z2VzIHRvIHRha2UgZWZmZWN0LCB0aGUgZnVuY3Rpb24NCj4gKyAqIHJ0ZV9yZWdleGRldl9ydWxl X2RiX2NvbXBpbGVfYWN0aXZlIG11c3QgYmUgY2FsbGVkLg0KPiArICoNCj4gKyAqIEBwYXJhbSBk ZXZfaWQNCj4gKyAqICAgUmVnRXggZGV2aWNlIGlkZW50aWZpZXIuDQo+ICsgKiBAcGFyYW0gcnVs ZXMNCj4gKyAqICAgUG9pbnRzIHRvIGFuIGFycmF5IG9mICpuYl9ydWxlcyogb2JqZWN0cyBvZiB0 eXBlICpydGVfcmVnZXhkZXZfcnVsZSoNCj4gKyAqICAgc3RydWN0dXJlIHdoaWNoIGNvbnRhaW4g dGhlIHJlZ2V4IHJ1bGVzIGF0dHJpYnV0ZXMgdG8gYmUgdXBkYXRlZA0KPiArICogICBpbiBydWxl IGRhdGFiYXNlLg0KPiArICogQHBhcmFtIG5iX3J1bGVzDQo+ICsgKiAgIFRoZSBudW1iZXIgb2Yg UENSRSBydWxlcyB0byB1cGRhdGUgdGhlIHJ1bGUgZGF0YWJhc2UuDQo+ICsgKg0KPiArICogQHJl dHVybg0KPiArICogICBUaGUgbnVtYmVyIG9mIHJlZ2V4IHJ1bGVzIGFjdHVhbGx5IHVwZGF0ZWQg b24gdGhlIHJlZ2V4IGRldmljZSdzIHJ1bGUNCj4gKyAqICAgZGF0YWJhc2UuIFRoZSByZXR1cm4g dmFsdWUgY2FuIGJlIGxlc3MgdGhhbiB0aGUgdmFsdWUgb2YgdGhlICpuYl9ydWxlcyoNCj4gKyAq ICAgcGFyYW1ldGVyIHdoZW4gdGhlIHJlZ2V4IGRldmljZXMgZmFpbHMgdG8gdXBkYXRlIHRoZSBy dWxlIGRhdGFiYXNlIG9yDQo+ICsgKiAgIGlmIGludmFsaWQgcGFyYW1ldGVycyBhcmUgc3BlY2lm aWVkIGluIGEgKnJ0ZV9yZWdleGRldl9ydWxlKi4NCj4gKyAqICAgSWYgdGhlIHJldHVybiB2YWx1 ZSBpcyBsZXNzIHRoYW4gKm5iX3J1bGVzKiwgdGhlIHJlbWFpbmluZyBQQ1JFIHJ1bGVzDQo+ICsg KiAgIGF0IHRoZSBlbmQgb2YgKnJ1bGVzKiBhcmUgbm90IGNvbnN1bWVkIGFuZCB0aGUgY2FsbGVy IGhhcyB0byB0YWtlDQo+ICsgKiAgIGNhcmUgb2YgdGhlbSBhbmQgcnRlX2Vycm5vIGlzIHNldCBh Y2NvcmRpbmdseS4NCj4gKyAqICAgUG9zc2libGUgZXJybm8gdmFsdWVzIGluY2x1ZGU6DQo+ICsg KiAgIC0gLUVJTlZBTDogIEludmFsaWQgZGV2aWNlIElEIG9yIHJ1bGVzIGlzIE5VTEwNCj4gKyAq ICAgLSAtRU5PVFNVUDogVGhlIGxhc3QgcHJvY2Vzc2VkIHJ1bGUgaXMgbm90IHN1cHBvcnRlZCBv biB0aGlzIGRldmljZS4NCj4gKyAqICAgLSAtRU5PU1BDOiBObyBzcGFjZSBhdmFpbGFibGUgaW4g cnVsZSBkYXRhYmFzZS4NCj4gKyAqDQo+ICsgKiBAc2VlIHJ0ZV9yZWdleGRldl9ydWxlX2RiX2lt cG9ydCgpLCBydGVfcmVnZXhkZXZfcnVsZV9kYl9leHBvcnQoKSwNCj4gKyAqICAgcnRlX3JlZ2V4 ZGV2X3J1bGVfZGJfY29tcGlsZV9hY3RpdmF0ZSgpDQo+ICsgKi8NCj4gK19fcnRlX2V4cGVyaW1l bnRhbA0KPiAraW50DQo+ICtydGVfcmVnZXhkZXZfcnVsZV9kYl91cGRhdGUodWludDhfdCBkZXZf aWQsDQo+ICsJCQkgICAgY29uc3Qgc3RydWN0IHJ0ZV9yZWdleGRldl9ydWxlICpydWxlcywNCj4g KwkJCSAgICB1aW50MzJfdCBuYl9ydWxlcyk7DQo+ICsNCj4gKy8qKg0KPiArICogQHdhcm5pbmcN Cj4gKyAqIEBiIEVYUEVSSU1FTlRBTDogdGhpcyBBUEkgbWF5IGNoYW5nZSB3aXRob3V0IHByaW9y IG5vdGljZS4NCj4gKyAqDQo+ICsgKiBDb21waWxlIGxvY2FsIHJ1bGUgc2V0IGFuZCBidXJuIHRo ZSBjb21wbGllZCByZXN1bHQgdG8gdGhlDQo+ICsgKiBSZWdFeCBkZWl2ZS4NCj4gKyAqDQo+ICsg KiBAcGFyYW0gZGV2X2lkDQo+ICsgKiAgIFJlZ0V4IGRldmljZSBpZGVudGlmaWVyLg0KPiArICoN Cj4gKyAqIEByZXR1cm4NCj4gKyAqICAgMCBvbiBzdWNjZXNzLCBvdGhlcndpc2UgbmVnYXRpdmUg ZXJybm8uDQo+ICsgKg0KPiArICogQHNlZSBydGVfcmVnZXhkZXZfcnVsZV9kYl9pbXBvcnQoKSwg cnRlX3JlZ2V4ZGV2X3J1bGVfZGJfZXhwb3J0KCksDQo+ICsgKiAgIHJ0ZV9yZWdleGRldl9ydWxl X2RiX3VwZGF0ZSgpDQo+ICsgKi8NCj4gK19fcnRlX2V4cGVyaW1lbnRhbA0KPiAraW50DQo+ICty dGVfcmVnZXhkZXZfcnVsZV9kYl9jb21waWxlX2FjdGl2YXRlKHVpbnQ4X3QgZGV2X2lkKTsNCj4g Kw0KPiArLyoqDQo+ICsgKiBAd2FybmluZw0KPiArICogQGIgRVhQRVJJTUVOVEFMOiB0aGlzIEFQ SSBtYXkgY2hhbmdlIHdpdGhvdXQgcHJpb3Igbm90aWNlLg0KPiArICoNCj4gKyAqIEltcG9ydCBh IHByZWJ1aWx0IHJ1bGUgZGF0YWJhc2UgZnJvbSBhIGJ1ZmZlciB0byBhIFJlZ0V4IGRldmljZS4N Cj4gKyAqDQo+ICsgKiBAcGFyYW0gZGV2X2lkDQo+ICsgKiAgIFJlZ0V4IGRldmljZSBpZGVudGlm aWVyLg0KPiArICogQHBhcmFtIHJ1bGVfZGINCj4gKyAqICAgUG9pbnRzIHRvIHByZWJ1aWx0IHJ1 bGUgZGF0YWJhc2UuDQo+ICsgKiBAcGFyYW0gcnVsZV9kYl9sZW4NCj4gKyAqICAgTGVuZ3RoIG9m IHRoZSBydWxlIGRhdGFiYXNlLg0KPiArICoNCj4gKyAqIEByZXR1cm4NCj4gKyAqICAgLSAwOiBT dWNjZXNzZnVsbHkgdXBkYXRlZCB0aGUgcHJlYnVpbHQgcnVsZSBkYXRhYmFzZS4NCj4gKyAqICAg LSAtRUlOVkFMOiAgSW52YWxpZCBkZXZpY2UgSUQgb3IgcnVsZV9kYiBpcyBOVUxMDQo+ICsgKiAg IC0gLUVOT1RTVVA6IFJ1bGUgZGF0YWJhc2UgaW1wb3J0IGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhp cyBkZXZpY2UuDQo+ICsgKiAgIC0gLUVOT1NQQzogTm8gc3BhY2UgYXZhaWxhYmxlIGluIHJ1bGUg ZGF0YWJhc2UuDQo+ICsgKg0KPiArICogQHNlZSBydGVfcmVnZXhkZXZfcnVsZV9kYl91cGRhdGUo KSwgcnRlX3JlZ2V4ZGV2X3J1bGVfZGJfZXhwb3J0KCkNCj4gKyAqLw0KPiArX19ydGVfZXhwZXJp bWVudGFsDQo+ICtpbnQNCj4gK3J0ZV9yZWdleGRldl9ydWxlX2RiX2ltcG9ydCh1aW50OF90IGRl dl9pZCwgY29uc3QgY2hhciAqcnVsZV9kYiwNCj4gKwkJCSAgICB1aW50MzJfdCBydWxlX2RiX2xl bik7DQo+ICsNCj4gKy8qKg0KPiArICogQHdhcm5pbmcNCj4gKyAqIEBiIEVYUEVSSU1FTlRBTDog dGhpcyBBUEkgbWF5IGNoYW5nZSB3aXRob3V0IHByaW9yIG5vdGljZS4NCj4gKyAqDQo+ICsgKiBF eHBvcnQgdGhlIHByZWJ1aWx0IHJ1bGUgZGF0YWJhc2UgZnJvbSBhIFJlZ0V4IGRldmljZSB0byB0 aGUgYnVmZmVyLg0KPiArICoNCj4gKyAqIEBwYXJhbSBkZXZfaWQNCj4gKyAqICAgUmVnRXggZGV2 aWNlIGlkZW50aWZpZXIuDQo+ICsgKiBAcGFyYW1bb3V0XSBydWxlX2RiDQo+ICsgKiAgIEJsb2Nr IG9mIG1lbW9yeSB0byBpbnNlcnQgdGhlIHJ1bGUgZGF0YWJhc2UuIE11c3QgYmUgYXQgbGVhc3Qg c2l6ZSBpbg0KPiArICogICBjYXBhY2l0eS4gSWYgc2V0IHRvIE5VTEwsIGZ1bmN0aW9uIHJldHVy bnMgcmVxdWlyZWQgY2FwYWNpdHkuDQo+ICsgKg0KPiArICogQHJldHVybg0KPiArICogICAtIDA6 IFN1Y2Nlc3NmdWxseSBleHBvcnRlZCB0aGUgcHJlYnVpbHQgcnVsZSBkYXRhYmFzZS4NCj4gKyAq ICAgLSBzaXplOiBJZiBydWxlX2RiIHNldCB0byBOVUxMIHRoZW4gcmVxdWlyZWQgY2FwYWNpdHkg Zm9yICpydWxlX2RiKg0KPiArICogICAtIC1FSU5WQUw6ICBJbnZhbGlkIGRldmljZSBJRA0KPiAr ICogICAtIC1FTk9UU1VQOiBSdWxlIGRhdGFiYXNlIGV4cG9ydCBpcyBub3Qgc3VwcG9ydGVkIG9u IHRoaXMgZGV2aWNlLg0KPiArICoNCj4gKyAqIEBzZWUgcnRlX3JlZ2V4ZGV2X3J1bGVfZGJfdXBk YXRlKCksIHJ0ZV9yZWdleGRldl9ydWxlX2RiX2ltcG9ydCgpDQo+ICsgKi8NCj4gK19fcnRlX2V4 cGVyaW1lbnRhbA0KPiAraW50DQo+ICtydGVfcmVnZXhkZXZfcnVsZV9kYl9leHBvcnQodWludDhf dCBkZXZfaWQsIGNoYXIgKnJ1bGVfZGIpOw0KPiArDQo+ICsvKiBFeHRlbmRlZCBzdGF0aXN0aWNz ICovDQo+ICsvKiogTWF4aW11bSBuYW1lIGxlbmd0aCBmb3IgZXh0ZW5kZWQgc3RhdGlzdGljcyBj b3VudGVycyAqLw0KPiArI2RlZmluZSBSVEVfUkVHRVhERVZfWFNUQVRTX05BTUVfU0laRSA2NA0K PiArDQo+ICsvKioNCj4gKyAqIEEgbmFtZS1rZXkgbG9va3VwIGVsZW1lbnQgZm9yIGV4dGVuZGVk IHN0YXRpc3RpY3MuDQo+ICsgKg0KPiArICogVGhpcyBzdHJ1Y3R1cmUgaXMgdXNlZCB0byBtYXAg YmV0d2VlbiBuYW1lcyBhbmQgSUQgbnVtYmVycw0KPiArICogZm9yIGV4dGVuZGVkIFJlZ0V4IGRl dmljZSBzdGF0aXN0aWNzLg0KPiArICovDQo+ICtzdHJ1Y3QgcnRlX3JlZ2V4ZGV2X3hzdGF0c19t YXAgew0KPiArCXVpbnQxNl90IGlkOw0KPiArCS8qKjwgeHN0YXQgaWRlbnRpZmllciAqLw0KPiAr CWNoYXIgbmFtZVtSVEVfUkVHRVhERVZfWFNUQVRTX05BTUVfU0laRV07DQo+ICsJLyoqPCB4c3Rh dCBuYW1lICovDQo+ICt9Ow0KPiArDQo+ICsvKioNCj4gKyAqIEB3YXJuaW5nDQo+ICsgKiBAYiBF WFBFUklNRU5UQUw6IHRoaXMgQVBJIG1heSBjaGFuZ2Ugd2l0aG91dCBwcmlvciBub3RpY2UuDQo+ ICsgKg0KPiArICogUmV0cmlldmUgbmFtZXMgb2YgZXh0ZW5kZWQgc3RhdGlzdGljcyBvZiBhIHJl Z2V4IGRldmljZS4NCj4gKyAqDQo+ICsgKiBAcGFyYW0gZGV2X2lkDQo+ICsgKiAgIFRoZSBpZGVu dGlmaWVyIG9mIHRoZSByZWdleCBkZXZpY2UuDQo+ICsgKiBAcGFyYW1bb3V0XSB4c3RhdHNfbWFw DQo+ICsgKiAgIEJsb2NrIG9mIG1lbW9yeSB0byBpbnNlcnQgaWQgYW5kIG5hbWVzIGludG8uIE11 c3QgYmUgYXQgbGVhc3Qgc2l6ZSBpbg0KPiArICogICBjYXBhY2l0eS4gSWYgc2V0IHRvIE5VTEws IGZ1bmN0aW9uIHJldHVybnMgcmVxdWlyZWQgY2FwYWNpdHkuDQo+ICsgKiBAcmV0dXJuDQo+ICsg KiAgIC0gUG9zaXRpdmUgdmFsdWUgb24gc3VjY2VzczoNCj4gKyAqICAgICAgICAtVGhlIHJldHVy biB2YWx1ZSBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgZmlsbGVkIGluIHRoZSBzdGF0cyBtYXAu DQo+ICsgKiAgICAgICAgLUlmIHhzdGF0c19tYXAgc2V0IHRvIE5VTEwgdGhlbiByZXF1aXJlZCBj YXBhY2l0eSBmb3IgeHN0YXRzX21hcC4NCj4gKyAqICAgLSBOZWdhdGl2ZSB2YWx1ZSBvbiBlcnJv cjoNCj4gKyAqICAgICAgLUVOT0RFViBmb3IgaW52YWxpZCAqZGV2X2lkKg0KPiArICogICAgICAt RU5PVFNVUCBpZiB0aGUgZGV2aWNlIGRvZXNuJ3Qgc3VwcG9ydCB0aGlzIGZ1bmN0aW9uLg0KPiAr ICovDQo+ICtfX3J0ZV9leHBlcmltZW50YWwNCj4gK2ludA0KPiArcnRlX3JlZ2V4ZGV2X3hzdGF0 c19uYW1lc19nZXQodWludDhfdCBkZXZfaWQsDQo+ICsJCQkgICAgICBzdHJ1Y3QgcnRlX3JlZ2V4 ZGV2X3hzdGF0c19tYXAgKnhzdGF0c19tYXApOw0KPiArDQo+ICsvKioNCj4gKyAqIEB3YXJuaW5n DQo+ICsgKiBAYiBFWFBFUklNRU5UQUw6IHRoaXMgQVBJIG1heSBjaGFuZ2Ugd2l0aG91dCBwcmlv ciBub3RpY2UuDQo+ICsgKg0KPiArICogUmV0cmlldmUgZXh0ZW5kZWQgc3RhdGlzdGljcyBvZiBh biByZWdleCBkZXZpY2UuDQo+ICsgKg0KPiArICogQHBhcmFtIGRldl9pZA0KPiArICogICBUaGUg aWRlbnRpZmllciBvZiB0aGUgZGV2aWNlLg0KPiArICogQHBhcmFtIGlkcw0KPiArICogICBUaGUg aWQgbnVtYmVycyBvZiB0aGUgc3RhdHMgdG8gZ2V0LiBUaGUgaWRzIGNhbiBiZSBnb3QgZnJvbSB0 aGUgc3RhdA0KPiArICogICBwb3NpdGlvbiBpbiB0aGUgc3RhdCBsaXN0IGZyb20gcnRlX3JlZ2V4 ZGV2X3hzdGF0c19uYW1lc19nZXQoKSwgb3INCj4gKyAqICAgYnkgdXNpbmcgcnRlX3JlZ2V4ZGV2 X3hzdGF0c19ieV9uYW1lX2dldCgpLg0KPiArICogQHBhcmFtIHZhbHVlcw0KPiArICogICBUaGUg dmFsdWVzIGZvciBlYWNoIHN0YXRzIHJlcXVlc3QgYnkgSUQuDQo+ICsgKiBAcGFyYW0gbmJfdmFs dWVzDQo+ICsgKiAgIFRoZSBudW1iZXIgb2Ygc3RhdHMgcmVxdWVzdGVkLg0KPiArICogQHJldHVy bg0KPiArICogICAtIFBvc2l0aXZlIHZhbHVlOiBudW1iZXIgb2Ygc3RhdCBlbnRyaWVzIGZpbGxl ZCBpbnRvIHRoZSB2YWx1ZXMgYXJyYXkNCj4gKyAqICAgLSBOZWdhdGl2ZSB2YWx1ZSBvbiBlcnJv cjoNCj4gKyAqICAgICAgLUVOT0RFViBmb3IgaW52YWxpZCAqZGV2X2lkKg0KPiArICogICAgICAt RU5PVFNVUCBpZiB0aGUgZGV2aWNlIGRvZXNuJ3Qgc3VwcG9ydCB0aGlzIGZ1bmN0aW9uLg0KPiAr ICovDQo+ICtfX3J0ZV9leHBlcmltZW50YWwNCj4gK2ludA0KPiArcnRlX3JlZ2V4ZGV2X3hzdGF0 c19nZXQodWludDhfdCBkZXZfaWQsIGNvbnN0IHVpbnQxNl90ICppZHMsDQo+ICsJCQl1aW50NjRf dCAqdmFsdWVzLCB1aW50MTZfdCBuYl92YWx1ZXMpOw0KPiArDQo+ICsvKioNCj4gKyAqIEB3YXJu aW5nDQo+ICsgKiBAYiBFWFBFUklNRU5UQUw6IHRoaXMgQVBJIG1heSBjaGFuZ2Ugd2l0aG91dCBw cmlvciBub3RpY2UuDQo+ICsgKg0KPiArICogUmV0cmlldmUgdGhlIHZhbHVlIG9mIGEgc2luZ2xl IHN0YXQgYnkgcmVxdWVzdGluZyBpdCBieSBuYW1lLg0KPiArICoNCj4gKyAqIEBwYXJhbSBkZXZf aWQNCj4gKyAqICAgVGhlIGlkZW50aWZpZXIgb2YgdGhlIGRldmljZS4NCj4gKyAqIEBwYXJhbSBu YW1lDQo+ICsgKiAgIFRoZSBzdGF0IG5hbWUgdG8gcmV0cmlldmUuDQo+ICsgKiBAcGFyYW0gaWQN Cj4gKyAqICAgSWYgbm9uLU5VTEwsIHRoZSBudW1lcmljYWwgaWQgb2YgdGhlIHN0YXQgd2lsbCBi ZSByZXR1cm5lZCwgc28gdGhhdCBmdXJ0aGVyDQo+ICsgKiAgIHJlcXVlc3RzIGZvciB0aGUgc3Rh dCBjYW4gYmUgZ290IHVzaW5nIHJ0ZV9yZWdleGRldl94c3RhdHNfZ2V0LCB3aGljaCB3aWxsDQo+ ICsgKiAgIGJlIGZhc3RlciBhcyBpdCBkb2Vzbid0IG5lZWQgdG8gc2NhbiBhIGxpc3Qgb2YgbmFt ZXMgZm9yIHRoZSBzdGF0Lg0KPiArICogQHBhcmFtW291dF0gdmFsdWUNCj4gKyAqICAgTXVzdCBi ZSBub24tTlVMTCwgcmV0cmlldmVkIHhzdGF0IHZhbHVlIHdpbGwgYmUgc3RvcmVkIGluIHRoaXMg YWRkcmVzcy4NCj4gKyAqDQo+ICsgKiBAcmV0dXJuDQo+ICsgKiAgIC0gMDogU3VjY2Vzc2Z1bGx5 IHJldHJpZXZlZCB4c3RhdCB2YWx1ZS4NCj4gKyAqICAgLSAtRUlOVkFMOiBpbnZhbGlkIHBhcmFt ZXRlcnMNCj4gKyAqICAgLSAtRU5PVFNVUDogaWYgbm90IHN1cHBvcnRlZC4NCj4gKyAqLw0KPiAr X19ydGVfZXhwZXJpbWVudGFsDQo+ICtpbnQNCj4gK3J0ZV9yZWdleGRldl94c3RhdHNfYnlfbmFt ZV9nZXQodWludDhfdCBkZXZfaWQsIGNvbnN0IGNoYXIgKm5hbWUsDQo+ICsJCQkJdWludDE2X3Qg KmlkLCB1aW50NjRfdCAqdmFsdWUpOw0KPiArDQo+ICsvKioNCj4gKyAqIEB3YXJuaW5nDQo+ICsg KiBAYiBFWFBFUklNRU5UQUw6IHRoaXMgQVBJIG1heSBjaGFuZ2Ugd2l0aG91dCBwcmlvciBub3Rp Y2UuDQo+ICsgKg0KPiArICogUmVzZXQgdGhlIHZhbHVlcyBvZiB0aGUgeHN0YXRzIG9mIHRoZSBz ZWxlY3RlZCBjb21wb25lbnQgaW4gdGhlIGRldmljZS4NCj4gKyAqDQo+ICsgKiBAcGFyYW0gZGV2 X2lkDQo+ICsgKiAgIFRoZSBpZGVudGlmaWVyIG9mIHRoZSBkZXZpY2UuDQo+ICsgKiBAcGFyYW0g aWRzDQo+ICsgKiAgIFNlbGVjdHMgc3BlY2lmaWMgc3RhdGlzdGljcyB0byBiZSByZXNldC4gV2hl biBOVUxMLCBhbGwgc3RhdGlzdGljcyB3aWxsIGJlDQo+ICsgKiAgIHJlc2V0LiBJZiBub24tTlVM TCwgbXVzdCBwb2ludCB0byBhcnJheSBvZiBhdCBsZWFzdCAqbmJfaWRzKiBzaXplLg0KPiArICog QHBhcmFtIG5iX2lkcw0KPiArICogICBUaGUgbnVtYmVyIG9mIGlkcyBhdmFpbGFibGUgZnJvbSB0 aGUgKmlkcyogYXJyYXkuIElnbm9yZWQgd2hlbiBpZHMgaXMNCj4gTlVMTC4NCj4gKyAqDQo+ICsg KiBAcmV0dXJuDQo+ICsgKiAgIC0gMDogU3VjY2Vzc2Z1bGx5IHJlc2V0IHRoZSBzdGF0aXN0aWNz IHRvIHplcm8uDQo+ICsgKiAgIC0gLUVJTlZBTDogaW52YWxpZCBwYXJhbWV0ZXJzLg0KPiArICog ICAtIC1FTk9UU1VQOiBpZiBub3Qgc3VwcG9ydGVkLg0KPiArICovDQo+ICtfX3J0ZV9leHBlcmlt ZW50YWwNCj4gK2ludA0KPiArcnRlX3JlZ2V4ZGV2X3hzdGF0c19yZXNldCh1aW50OF90IGRldl9p ZCwgY29uc3QgdWludDE2X3QgKmlkcywNCj4gKwkJCSAgdWludDE2X3QgbmJfaWRzKTsNCj4gKw0K PiArLyoqDQo+ICsgKiBAd2FybmluZw0KPiArICogQGIgRVhQRVJJTUVOVEFMOiB0aGlzIEFQSSBt YXkgY2hhbmdlIHdpdGhvdXQgcHJpb3Igbm90aWNlLg0KPiArICoNCj4gKyAqIFRyaWdnZXIgdGhl IFJlZ0V4IGRldmljZSBzZWxmIHRlc3QuDQo+ICsgKg0KPiArICogQHBhcmFtIGRldl9pZA0KPiAr ICogICBUaGUgaWRlbnRpZmllciBvZiB0aGUgZGV2aWNlLg0KPiArICogQHJldHVybg0KPiArICog ICAtIDA6IFNlbGZ0ZXN0IHN1Y2Nlc3NmdWwuDQo+ICsgKiAgIC0gLUVOT1RTVVAgaWYgdGhlIGRl dmljZSBkb2Vzbid0IHN1cHBvcnQgc2VsZnRlc3QuDQo+ICsgKiAgIC0gb3RoZXIgdmFsdWVzIDwg MCBvbiBmYWlsdXJlLg0KPiArICovDQo+ICtfX3J0ZV9leHBlcmltZW50YWwNCj4gK2ludA0KPiAr cnRlX3JlZ2V4ZGV2X3NlbGZ0ZXN0KHVpbnQ4X3QgZGV2X2lkKTsNCj4gKw0KPiArLyoqDQo+ICsg KiBAd2FybmluZw0KPiArICogQGIgRVhQRVJJTUVOVEFMOiB0aGlzIEFQSSBtYXkgY2hhbmdlIHdp dGhvdXQgcHJpb3Igbm90aWNlLg0KPiArICoNCj4gKyAqIER1bXAgaW50ZXJuYWwgaW5mb3JtYXRp b24gYWJvdXQgKmRldl9pZCogdG8gdGhlIEZJTEUqIHByb3ZpZGVkIGluICpmKi4NCj4gKyAqDQo+ ICsgKiBAcGFyYW0gZGV2X2lkDQo+ICsgKiAgIFRoZSBpZGVudGlmaWVyIG9mIHRoZSBkZXZpY2Uu DQo+ICsgKiBAcGFyYW0gZg0KPiArICogICBBIHBvaW50ZXIgdG8gYSBmaWxlIGZvciBvdXRwdXQu DQo+ICsgKg0KPiArICogQHJldHVybg0KPiArICogICAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVy cm5vIG9uIGZhaWx1cmUuDQo+ICsgKi8NCj4gK19fcnRlX2V4cGVyaW1lbnRhbA0KPiAraW50DQo+ ICtydGVfcmVnZXhkZXZfZHVtcCh1aW50OF90IGRldl9pZCwgRklMRSAqZik7DQo+ICsNCj4gKy8q IEZhc3QgcGF0aCBBUElzICovDQo+ICsNCj4gKy8qKg0KPiArICogVGhlIGdlbmVyaWMgKnJ0ZV9y ZWdleGRldl9tYXRjaCogc3RydWN0dXJlIHRvIGhvbGQgdGhlIFJlZ0V4IG1hdGNoDQo+ICsgKiBh dHRyaWJ1dGVzLg0KPiArICogQHNlZSBzdHJ1Y3QgcnRlX3JlZ2V4X29wczo6bWF0Y2hlcw0KPiAr ICovDQo+ICtzdHJ1Y3QgcnRlX3JlZ2V4ZGV2X21hdGNoIHsNCj4gKwlSVEVfU1REX0MxMQ0KPiAr CXVuaW9uIHsNCj4gKwkJdWludDY0X3QgdTY0Ow0KPiArCQlzdHJ1Y3Qgew0KPiArCQkJdWludDMy X3QgcnVsZV9pZDoyMDsNCj4gKwkJCS8qKjwgUnVsZSBpZGVudGlmaWVyIHRvIHdoaWNoIHRoZSBw YXR0ZXJuIG1hdGNoZWQuDQo+ICsJCQkgKiBAc2VlIHN0cnVjdCBydGVfcmVnZXhkZXZfcnVsZTo6 cnVsZV9pZA0KPiArCQkJICovDQo+ICsJCQl1aW50MzJfdCBncm91cF9pZDoxMjsNCj4gKwkJCS8q KjwgR3JvdXAgaWRlbnRpZmllciBvZiB0aGUgcnVsZSB3aGljaCB0aGUgcGF0dGVybg0KPiArCQkJ ICogbWF0Y2hlZC4gQHNlZSBzdHJ1Y3QgcnRlX3JlZ2V4ZGV2X3J1bGU6Omdyb3VwX2lkDQo+ICsJ CQkgKi8NCj4gKwkJCXVpbnQxNl90IHN0YXJ0X29mZnNldDsNCj4gKwkJCS8qKjwgU3RhcnRpbmcg Qnl0ZSBQb3NpdGlvbiBmb3IgbWF0Y2hlZCBydWxlLiAqLw0KPiArCQkJUlRFX1NURF9DMTENCj4g KwkJCXVuaW9uIHsNCj4gKwkJCQl1aW50MTZfdCBsZW47DQo+ICsJCQkJLyoqPCBMZW5ndGggb2Yg bWF0Y2ggaW4gYnl0ZXMgKi8NCj4gKwkJCQl1aW50MTZfdCBlbmRfb2Zmc2V0Ow0KPiArCQkJCS8q KjwgVGhlIGVuZCBvZmZzZXQgb2YgdGhlIG1hdGNoLiBJbiBjYXNlDQo+ICsJCQkJICogTUFUQ0hf QVNfRU5EIGNvbmZpZ3VyYXRpb24gaXMgZW5hYmxlZC4NCj4gKwkJCQkgKiBAc2VlDQo+IFJURV9S RUdFWERFVl9DRkdfTUFUQ0hfQVNfRU5EDQo+ICsJCQkJICovDQo+ICsJCQl9Ow0KPiArCQl9Ow0K PiArCX07DQo+ICt9Ow0KPiArDQo+ICsvKiBFbnVtZXJhdGVzIFJlZ0V4IHJlcXVlc3QgZmxhZ3Mu ICovDQo+ICsjZGVmaW5lIFJURV9SRUdFWF9PUFNfUkVRX0dST1VQX0lEMF9WQUxJRF9GICgxIDw8 IDApDQo+ICsvKio8IFNldCB3aGVuIHN0cnVjdCBydGVfcmVnZXhkZXZfcnVsZTo6Z3JvdXBfaWQw IGlzIHZhbGlkLiAqLw0KPiArDQo+ICsjZGVmaW5lIFJURV9SRUdFWF9PUFNfUkVRX0dST1VQX0lE MV9WQUxJRF9GICgxIDw8IDEpDQo+ICsvKio8IFNldCB3aGVuIHN0cnVjdCBydGVfcmVnZXhkZXZf cnVsZTo6Z3JvdXBfaWQxIGlzIHZhbGlkLiAqLw0KPiArDQo+ICsjZGVmaW5lIFJURV9SRUdFWF9P UFNfUkVRX0dST1VQX0lEMl9WQUxJRF9GICgxIDw8IDIpDQo+ICsvKio8IFNldCB3aGVuIHN0cnVj dCBydGVfcmVnZXhkZXZfcnVsZTo6Z3JvdXBfaWQyIGlzIHZhbGlkLiAqLw0KPiArDQo+ICsjZGVm aW5lIFJURV9SRUdFWF9PUFNfUkVRX0dST1VQX0lEM19WQUxJRF9GICgxIDw8IDMpDQo+ICsvKio8 IFNldCB3aGVuIHN0cnVjdCBydGVfcmVnZXhkZXZfcnVsZTo6Z3JvdXBfaWQzIGlzIHZhbGlkLiAq Lw0KPiArDQo+ICsjZGVmaW5lIFJURV9SRUdFWF9PUFNfUkVRX1NUT1BfT05fTUFUQ0hfRiAoMSA8 PCA0KQ0KPiArLyoqPCBUaGUgUmVnRXggZW5naW5lIHdpbGwgc3RvcCBzY2FubmluZyBhbmQgcmV0 dXJuIHRoZSBmaXJzdCBtYXRjaC4gKi8NCj4gKw0KPiArI2RlZmluZSBSVEVfUkVHRVhfT1BTX1JF UV9NQVRDSF9ISUdIX1BSSU9SSVRZX0YgKDEgPDwgNSkNCj4gKy8qKjwgSW4gSGlnaCBQcmlvcml0 eSBtb2RlIGEgbWF4aW11bSBvZiBvbmUgbWF0Y2ggd2lsbCBiZSByZXR1cm5lZCBwZXINCj4gc2Nh biB0bw0KPiArICogcmVkdWNlIHRoZSBwb3N0LXByb2Nlc3NpbmcgcmVxdWlyZWQgYnkgdGhlIGFw cGxpY2F0aW9uLiBUaGUgbWF0Y2ggd2l0aCB0aGUNCj4gKyAqIGxvd2VzdCBSdWxlIGlkLCBsb3dl c3Qgc3RhcnQgcG9pbnRlciBhbmQgbG93ZXN0IG1hdGNoIGxlbmd0aCB3aWxsIGJlDQo+ICsgKiBy ZXR1cm5lZC4NCj4gKyAqDQo+ICsgKiBAc2VlIHN0cnVjdCBydGVfcmVnZXhfb3BzOjpuYl9hY3R1 YWxfbWF0Y2hlcw0KPiArICogQHNlZSBzdHJ1Y3QgcnRlX3JlZ2V4X29wczo6bmJfbWF0Y2hlcw0K PiArICovDQo+ICsNCj4gKw0KPiArLyogRW51bWVyYXRlcyBSZWdFeCByZXNwb25zZSBmbGFncy4g Ki8NCj4gKyNkZWZpbmUgUlRFX1JFR0VYX09QU19SU1BfUE1JX1NPSl9GICgxIDw8IDApDQo+ICsv Kio8IEluZGljYXRlcyB0aGF0IHRoZSBSZWdFeCBkZXZpY2UgaGFzIGVuY291bnRlcmVkIGEgcGFy dGlhbCBtYXRjaCBhdCB0aGUNCj4gKyAqIHN0YXJ0IG9mIHNjYW4gaW4gdGhlIGdpdmVuIGJ1ZmZl ci4NCj4gKyAqDQo+ICsgKiBAc2VlIFJURV9SRUdFWERFVl9DRkdfQ1JPU1NfQlVGRkVSX1NDQU5f Rg0KPiArICovDQo+ICsNCj4gKyNkZWZpbmUgUlRFX1JFR0VYX09QU19SU1BfUE1JX0VPSl9GICgx IDw8IDEpDQo+ICsvKio8IEluZGljYXRlcyB0aGF0IHRoZSBSZWdFeCBkZXZpY2UgaGFzIGVuY291 bnRlcmVkIGEgcGFydGlhbCBtYXRjaCBhdCB0aGUNCj4gKyAqIGVuZCBvZiBzY2FuIGluIHRoZSBn aXZlbiBidWZmZXIuDQo+ICsgKg0KPiArICogQHNlZSBSVEVfUkVHRVhERVZfQ0ZHX0NST1NTX0JV RkZFUl9TQ0FOX0YNCj4gKyAqLw0KPiArDQo+ICsjZGVmaW5lIFJURV9SRUdFWF9PUFNfUlNQX01B WF9TQ0FOX1RJTUVPVVRfRiAoMSA8PCAyKQ0KPiArLyoqPCBJbmRpY2F0ZXMgdGhhdCB0aGUgUmVn RXggZGV2aWNlIGhhcyBleGNlZWRlZCB0aGUgbWF4IHRpbWVvdXQgd2hpbGUNCj4gKyAqIHNjYW5u aW5nIHRoZSBnaXZlbiBidWZmZXIuDQo+ICsgKg0KPiArICogQHNlZSBSVEVfUkVHRVhERVZfQVRU Ul9NQVhfU0NBTl9USU1FT1VUDQo+ICsgKi8NCj4gKw0KPiArI2RlZmluZSBSVEVfUkVHRVhfT1BT X1JTUF9NQVhfTUFUQ0hfRiAoMSA8PCAzKQ0KPiArLyoqPCBJbmRpY2F0ZXMgdGhhdCB0aGUgUmVn RXggZGV2aWNlIGhhcyBleGNlZWRlZCB0aGUgbWF4IG1hdGNoZXMgd2hpbGUNCj4gKyAqIHNjYW5u aW5nIHRoZSBnaXZlbiBidWZmZXIuDQo+ICsgKg0KPiArICogQHNlZSBSVEVfUkVHRVhERVZfQVRU Ul9NQVhfTUFUQ0hFUw0KPiArICovDQo+ICsNCj4gKyNkZWZpbmUgUlRFX1JFR0VYX09QU19SU1Bf TUFYX1BSRUZJWF9GICgxIDw8IDQpDQo+ICsvKio8IEluZGljYXRlcyB0aGF0IHRoZSBSZWdFeCBk ZXZpY2UgaGFzIHJlYWNoZWQgdGhlIG1heCBhbGxvd2VkIHByZWZpeA0KPiBsZW5ndGgNCj4gKyAq IHdoaWxlIHNjYW5uaW5nIHRoZSBnaXZlbiBidWZmZXIuDQo+ICsgKg0KPiArICogQHNlZSBSVEVf UkVHRVhERVZfQVRUUl9NQVhfUFJFRklYDQo+ICsgKi8NCj4gKw0KPiArLyoqDQo+ICsgKiBUaGUg Z2VuZXJpYyAqcnRlX3JlZ2V4X29wcyogc3RydWN0dXJlIHRvIGhvbGQgdGhlIFJlZ0V4IGF0dHJp YnV0ZXMNCj4gKyAqIGZvciBlbnF1ZXVlIGFuZCBkZXF1ZXVlIG9wZXJhdGlvbi4NCj4gKyAqLw0K PiArc3RydWN0IHJ0ZV9yZWdleF9vcHMgew0KPiArCS8qIFcwICovDQo+ICsJdWludDE2X3QgcmVx X2ZsYWdzOw0KPiArCS8qKjwgUmVxdWVzdCBmbGFncyBmb3IgdGhlIFJlZ0V4IG9wcy4NCj4gKwkg KiBAc2VlIFJURV9SRUdFWF9PUFNfUkVRXyoNCj4gKwkgKi8NCj4gKwl1aW50MTZfdCByc3BfZmxh Z3M7DQo+ICsJLyoqPCBSZXNwb25zZSBmbGFncyBmb3IgdGhlIFJlZ0V4IG9wcy4NCj4gKwkgKiBA c2VlIFJURV9SRUdFWF9PUFNfUlNQXyoNCj4gKwkgKi8NCj4gKwl1aW50MTZfdCBuYl9hY3R1YWxf bWF0Y2hlczsNCj4gKwkvKio8IFRoZSB0b3RhbCBudW1iZXIgb2YgYWN0dWFsIG1hdGNoZXMgZGV0 ZWN0ZWQgYnkgdGhlIFJlZ2V4DQo+IGRldmljZS4qLw0KPiArCXVpbnQxNl90IG5iX21hdGNoZXM7 DQo+ICsJLyoqPCBUaGUgdG90YWwgbnVtYmVyIG9mIG1hdGNoZXMgcmV0dXJuZWQgYnkgdGhlIFJl Z0V4IGRldmljZSBmb3INCj4gdGhpcw0KPiArCSAqIHNjYW4uIFRoZSBzaXplIG9mICpydGVfcmVn ZXhfb3BzOjptYXRjaGVzKiB6ZXJvIGxlbmd0aCBhcnJheSB3aWxsIGJlDQo+ICsJICogdGhpcyB2 YWx1ZS4NCj4gKwkgKg0KPiArCSAqIEBzZWUgc3RydWN0IHJ0ZV9yZWdleF9vcHM6Om1hdGNoZXMs IHN0cnVjdCBydGVfcmVnZXhkZXZfbWF0Y2gNCj4gKwkgKi8NCj4gKw0KPiArCS8qIFcxICovDQo+ ICsJc3RydWN0IHJ0ZV9tYnVmICptYnVmOyAvKio8IHNvdXJjZSBtYnVmLCB0byBzZWFyY2ggaW4u ICovDQo+ICsNCj4gKwkvKiBXMiAqLw0KPiArCXVpbnQxNl90IGdyb3VwX2lkMDsNCj4gKwkvKio8 IEZpcnN0IGdyb3VwX2lkIHRvIG1hdGNoIHRoZSBydWxlIGFnYWluc3QuIEF0IG1pbmltdW0gb25l IGdyb3VwDQo+ICsJICogc2hvdWxkIGJlIHZhbGlkLiBCZWhhdmlvdXIgaXMgdW5kZWZpbmVkIG5v biBvZiB0aGUgZ3JvdXBzIGFyZSB2YWxpZC4NCj4gKwkgKg0KPiArCSAqIEBzZWUgUlRFX1JFR0VY X09QU19SRVFfR1JPVVBfSUQwX1ZBTElEX0YNCj4gKwkgKi8NCj4gKwl1aW50MTZfdCBncm91cF9p ZDE7DQo+ICsJLyoqPCBTZWNvbmQgZ3JvdXBfaWQgdG8gbWF0Y2ggdGhlIHJ1bGUgYWdhaW5zdC4N Cj4gKwkgKg0KPiArCSAqIEBzZWUgUlRFX1JFR0VYX09QU19SRVFfR1JPVVBfSUQxX1ZBTElEX0YN Cj4gKwkgKi8NCj4gKwl1aW50MTZfdCBncm91cF9pZDI7DQo+ICsJLyoqPCBUaGlyZCBncm91cF9p ZCB0byBtYXRjaCB0aGUgcnVsZSBhZ2FpbnN0Lg0KPiArCSAqDQo+ICsJICogQHNlZSBSVEVfUkVH RVhfT1BTX1JFUV9HUk9VUF9JRDJfVkFMSURfRg0KPiArCSAqLw0KPiArCXVpbnQxNl90IGdyb3Vw X2lkMzsNCj4gKwkvKio8IEZvcnRoIGdyb3VwX2lkIHRvIG1hdGNoIHRoZSBydWxlIGFnYWluc3Qu DQo+ICsJICoNCj4gKwkgKiBAc2VlIFJURV9SRUdFWF9PUFNfUkVRX0dST1VQX0lEM19WQUxJRF9G DQo+ICsJICovDQo+ICsNCj4gKwkvKiBXMyAqLw0KPiArCVJURV9TVERfQzExDQo+ICsJdW5pb24g ew0KPiArCQl1aW50NjRfdCB1c2VyX2lkOw0KPiArCQkvKio8IEFwcGxpY2F0aW9uIHNwZWNpZmlj IG9wYXF1ZSB2YWx1ZS4gQW4gYXBwbGljYXRpb24gbWF5IHVzZQ0KPiArCQkgKiB0aGlzIGZpZWxk IHRvIGhvbGQgYXBwbGljYXRpb24gc3BlY2lmaWMgdmFsdWUgdG8gc2hhcmUNCj4gKwkJICogYmV0 d2VlbiBkZXF1ZXVlIGFuZCBlbnF1ZXVlIG9wZXJhdGlvbi4NCj4gKwkJICogSW1wbGVtZW50YXRp b24gc2hvdWxkIG5vdCBtb2RpZnkgdGhpcyBmaWVsZC4NCj4gKwkJICovDQo+ICsJCXZvaWQgKnVz ZXJfcHRyOw0KPiArCQkvKio8IFBvaW50ZXIgcmVwcmVzZW50YXRpb24gb2YgKnVzZXJfaWQqICov DQo+ICsJfTsNCj4gKw0KPiArCS8qIFc0ICovDQo+ICsJUlRFX1NURF9DMTENCj4gKwl1bmlvbiB7 DQo+ICsJCXVpbnQ2NF90IGNyb3NzX2J1Zl9pZDsNCj4gKwkJLyoqPCBJRCB1c2VkIGJ5IHRoZSBS ZWdFeCBkZXZpY2UgaW4gb3JkZXIgdG8gc3VwcG9ydCBjcm9zcw0KPiArCQkgKiBwYWNrZXQgZGV0 ZWN0aW9uLg0KPiArCQkgKiBUaGlzIElEIGlzIHJldHVybmVkIGZyb20gdGhlIFJlZ0V4IGRldmlj ZSBvbiB0aGUgZGVxdWV1ZQ0KPiArCQkgKiBmdW5jdGlvbi4gVGhlIGFwcGxpY2F0aW9uIG11c3Qg c2VuZCBpdCBiYWNrIHdoZW4gY2FsbGluZw0KPiArCQkgKiBlbnF1ZXVlIHdpdGggdGhlIGZvbGxv d2luZyBwYWNrZXQuDQo+ICsJCSAqLw0KPiArCQl2b2lkICpjcm9zc19idWZfcHRyOw0KPiArCQkv Kio8IFBvaW50ZXIgcmVwcmVzZW50YXRpb24gb2YgKmNvcnNzX2J1Zl9pZCogKi8NCj4gKwl9Ow0K PiArDQo+ICsJLyogVzUgKi8NCj4gKwlzdHJ1Y3QgcnRlX3JlZ2V4ZGV2X21hdGNoIG1hdGNoZXNb XTsNCj4gKwkvKio8IFplcm8gbGVuZ3RoIGFycmF5IHRvIGhvbGQgdGhlIG1hdGNoIHR1cGxlcy4N Cj4gKwkgKiBUaGUgc3RydWN0IHJ0ZV9yZWdleF9vcHM6Om5iX21hdGNoZXMgdmFsdWUgaG9sZHMg dGhlIG51bWJlciBvZg0KPiArCSAqIGVsZW1lbnRzIGluIHRoaXMgYXJyYXkuDQo+ICsJICoNCj4g KwkgKiBAc2VlIHN0cnVjdCBydGVfcmVnZXhfb3BzOjpuYl9tYXRjaGVzDQo+ICsJICovDQo+ICt9 Ow0KPiArDQo+ICsvKioNCj4gKyAqIEB3YXJuaW5nDQo+ICsgKiBAYiBFWFBFUklNRU5UQUw6IHRo aXMgQVBJIG1heSBjaGFuZ2Ugd2l0aG91dCBwcmlvciBub3RpY2UuDQo+ICsgKg0KPiArICogRW5x dWV1ZSBhIGJ1cnN0IG9mIHNjYW4gcmVxdWVzdCBvbiBhIFJlZ0V4IGRldmljZS4NCj4gKyAqDQo+ ICsgKiBUaGUgcnRlX3JlZ2V4ZGV2X2VucXVldWVfYnVyc3QoKSBmdW5jdGlvbiBpcyBpbnZva2Vk IHRvIHBsYWNlDQo+ICsgKiByZWdleCBvcGVyYXRpb25zIG9uIHRoZSBxdWV1ZSAqcXBfaWQqIG9m IHRoZSBkZXZpY2UgZGVzaWduYXRlZCBieQ0KPiArICogaXRzICpkZXZfaWQqLg0KPiArICoNCj4g KyAqIFRoZSAqbmJfb3BzKiBwYXJhbWV0ZXIgaXMgdGhlIG51bWJlciBvZiBvcGVyYXRpb25zIHRv IHByb2Nlc3Mgd2hpY2ggYXJlDQo+ICsgKiBzdXBwbGllZCBpbiB0aGUgKm9wcyogYXJyYXkgb2Yg KnJ0ZV9yZWdleGRldl9vcCogc3RydWN0dXJlcy4NCj4gKyAqDQo+ICsgKiBUaGUgcnRlX3JlZ2V4 ZGV2X2VucXVldWVfYnVyc3QoKSBmdW5jdGlvbiByZXR1cm5zIHRoZSBudW1iZXIgb2YNCj4gKyAq IG9wZXJhdGlvbnMgaXQgYWN0dWFsbHkgZW5xdWV1ZWQgZm9yIHByb2Nlc3NpbmcuIEEgcmV0dXJu IHZhbHVlIGVxdWFsIHRvDQo+ICsgKiAqbmJfb3BzKiBtZWFucyB0aGF0IGFsbCBwYWNrZXRzIGhh dmUgYmVlbiBlbnF1ZXVlZC4NCj4gKyAqDQo+ICsgKiBAcGFyYW0gZGV2X2lkDQo+ICsgKiAgIFRo ZSBpZGVudGlmaWVyIG9mIHRoZSBkZXZpY2UuDQo+ICsgKiBAcGFyYW0gcXBfaWQNCj4gKyAqICAg VGhlIGluZGV4IG9mIHRoZSBxdWV1ZSBwYWlyIHdoaWNoIHBhY2tldHMgYXJlIHRvIGJlIGVucXVl dWVkIGZvcg0KPiArICogICBwcm9jZXNzaW5nLiBUaGUgdmFsdWUgbXVzdCBiZSBpbiB0aGUgcmFu Z2UgWzAsIG5iX3F1ZXVlX3BhaXJzIC0gMV0NCj4gKyAqICAgcHJldmlvdXNseSBzdXBwbGllZCB0 byBydGVfcmVnZXhkZXZfY29uZmlndXJlKCkuDQo+ICsgKiBAcGFyYW0gb3BzDQo+ICsgKiAgIFRo ZSBhZGRyZXNzIG9mIGFuIGFycmF5IG9mICpuYl9vcHMqIHBvaW50ZXJzIHRvICpydGVfcmVnZXhk ZXZfb3AqDQo+ICsgKiAgIHN0cnVjdHVyZXMgd2hpY2ggY29udGFpbiB0aGUgcmVnZXggb3BlcmF0 aW9ucyB0byBiZSBwcm9jZXNzZWQuDQo+ICsgKiBAcGFyYW0gbmJfb3BzDQo+ICsgKiAgIFRoZSBu dW1iZXIgb2Ygb3BlcmF0aW9ucyB0byBwcm9jZXNzLg0KPiArICoNCj4gKyAqIEByZXR1cm4NCj4g KyAqICAgVGhlIG51bWJlciBvZiBvcGVyYXRpb25zIGFjdHVhbGx5IGVucXVldWVkIG9uIHRoZSBy ZWdleCBkZXZpY2UuIFRoZQ0KPiByZXR1cm4NCj4gKyAqICAgdmFsdWUgY2FuIGJlIGxlc3MgdGhh biB0aGUgdmFsdWUgb2YgdGhlICpuYl9vcHMqIHBhcmFtZXRlciB3aGVuIHRoZQ0KPiArICogICBy ZWdleCBkZXZpY2VzIHF1ZXVlIGlzIGZ1bGwgb3IgaWYgaW52YWxpZCBwYXJhbWV0ZXJzIGFyZSBz cGVjaWZpZWQgaW4NCj4gKyAqICAgYSAqcnRlX3JlZ2V4ZGV2X29wKi4gSWYgdGhlIHJldHVybiB2 YWx1ZSBpcyBsZXNzIHRoYW4gKm5iX29wcyosIHRoZQ0KPiArICogICByZW1haW5pbmcgb3BzIGF0 IHRoZSBlbmQgb2YgKm9wcyogYXJlIG5vdCBjb25zdW1lZCBhbmQgdGhlIGNhbGxlciBoYXMNCj4g KyAqICAgdG8gdGFrZSBjYXJlIG9mIHRoZW0uDQo+ICsgKi8NCj4gK19fcnRlX2V4cGVyaW1lbnRh bA0KPiArdWludDE2X3QNCj4gK3J0ZV9yZWdleGRldl9lbnF1ZXVlX2J1cnN0KHVpbnQ4X3QgZGV2 X2lkLCB1aW50MTZfdCBxcF9pZCwNCj4gKwkJCSAgIHN0cnVjdCBydGVfcmVnZXhfb3BzICoqb3Bz LCB1aW50MTZfdCBuYl9vcHMpOw0KPiArDQo+ICsvKioNCj4gKyAqIEB3YXJuaW5nDQo+ICsgKiBA YiBFWFBFUklNRU5UQUw6IHRoaXMgQVBJIG1heSBjaGFuZ2Ugd2l0aG91dCBwcmlvciBub3RpY2Uu DQo+ICsgKg0KPiArICogRGVxdWV1ZSBhIGJ1cnN0IG9mIHNjYW4gcmVzcG9uc2UgZnJvbSBhIHF1 ZXVlIG9uIHRoZSBSZWdFeCBkZXZpY2UuDQo+ICsgKiBUaGUgZGVxdWV1ZWQgb3BlcmF0aW9uIGFy ZSBzdG9yZWQgaW4gKnJ0ZV9yZWdleGRldl9vcCogc3RydWN0dXJlcw0KPiArICogd2hvc2UgcG9p bnRlcnMgYXJlIHN1cHBsaWVkIGluIHRoZSAqb3BzKiBhcnJheS4NCj4gKyAqDQo+ICsgKiBUaGUg cnRlX3JlZ2V4ZGV2X2RlcXVldWVfYnVyc3QoKSBmdW5jdGlvbiByZXR1cm5zIHRoZSBudW1iZXIg b2Ygb3BzDQo+ICsgKiBhY3R1YWxseSBkZXF1ZXVlZCwgd2hpY2ggaXMgdGhlIG51bWJlciBvZiAq cnRlX3JlZ2V4ZGV2X29wKiBkYXRhDQo+IHN0cnVjdHVyZXMNCj4gKyAqIGVmZmVjdGl2ZWx5IHN1 cHBsaWVkIGludG8gdGhlICpvcHMqIGFycmF5Lg0KPiArICoNCj4gKyAqIEEgcmV0dXJuIHZhbHVl IGVxdWFsIHRvICpuYl9vcHMqIGluZGljYXRlcyB0aGF0IHRoZSBxdWV1ZSBjb250YWluZWQNCj4g KyAqIGF0IGxlYXN0ICpuYl9vcHMqIG9wZXJhdGlvbnMsIGFuZCB0aGlzIGlzIGxpa2VseSB0byBz aWduaWZ5IHRoYXQgb3RoZXINCj4gKyAqIHByb2Nlc3NlZCBvcGVyYXRpb25zIHJlbWFpbiBpbiB0 aGUgZGV2aWNlcyBvdXRwdXQgcXVldWUuIEFwcGxpY2F0aW9ucw0KPiArICogaW1wbGVtZW50aW5n IGEgInJldHJpZXZlIGFzIG1hbnkgcHJvY2Vzc2VkIG9wZXJhdGlvbnMgYXMgcG9zc2libGUiIHBv bGljeQ0KPiArICogY2FuIGNoZWNrIHRoaXMgc3BlY2lmaWMgY2FzZSBhbmQga2VlcCBpbnZva2lu ZyB0aGUNCj4gKyAqIHJ0ZV9yZWdleGRldl9kZXF1ZXVlX2J1cnN0KCkgZnVuY3Rpb24gdW50aWwg YSB2YWx1ZSBsZXNzIHRoYW4NCj4gKyAqICpuYl9vcHMqIGlzIHJldHVybmVkLg0KPiArICoNCj4g KyAqIFRoZSBydGVfcmVnZXhkZXZfZGVxdWV1ZV9idXJzdCgpIGZ1bmN0aW9uIGRvZXMgbm90IHBy b3ZpZGUgYW55IGVycm9yDQo+ICsgKiBub3RpZmljYXRpb24gdG8gYXZvaWQgdGhlIGNvcnJlc3Bv bmRpbmcgb3ZlcmhlYWQuDQo+ICsgKg0KPiArICogQHBhcmFtIGRldl9pZA0KPiArICogICBUaGUg UmVnRXggZGV2aWNlIGlkZW50aWZpZXINCj4gKyAqIEBwYXJhbSBxcF9pZA0KPiArICogICBUaGUg aW5kZXggb2YgdGhlIHF1ZXVlIHBhaXIgZnJvbSB3aGljaCB0byByZXRyaWV2ZSBwcm9jZXNzZWQg cGFja2V0cy4NCj4gKyAqICAgVGhlIHZhbHVlIG11c3QgYmUgaW4gdGhlIHJhbmdlIFswLCBuYl9x dWV1ZV9wYWlycyAtIDFdIHByZXZpb3VzbHkNCj4gKyAqICAgc3VwcGxpZWQgdG8gcnRlX3JlZ2V4 ZGV2X2NvbmZpZ3VyZSgpLg0KPiArICogQHBhcmFtIG9wcw0KPiArICogICBUaGUgYWRkcmVzcyBv ZiBhbiBhcnJheSBvZiBwb2ludGVycyB0byAqcnRlX3JlZ2V4ZGV2X29wKiBzdHJ1Y3R1cmVzDQo+ ICsgKiAgIHRoYXQgbXVzdCBiZSBsYXJnZSBlbm91Z2ggdG8gc3RvcmUgKm5iX29wcyogcG9pbnRl cnMgaW4gaXQuDQo+ICsgKiBAcGFyYW0gbmJfb3BzDQo+ICsgKiAgIFRoZSBtYXhpbXVtIG51bWJl ciBvZiBvcGVyYXRpb25zIHRvIGRlcXVldWUuDQo+ICsgKg0KPiArICogQHJldHVybg0KPiArICog ICBUaGUgbnVtYmVyIG9mIG9wZXJhdGlvbnMgYWN0dWFsbHkgZGVxdWV1ZWQsIHdoaWNoIGlzIHRo ZSBudW1iZXINCj4gKyAqICAgb2YgcG9pbnRlcnMgdG8gKnJ0ZV9yZWdleGRldl9vcCogc3RydWN0 dXJlcyBlZmZlY3RpdmVseSBzdXBwbGllZCB0byB0aGUNCj4gKyAqICAgKm9wcyogYXJyYXkuIElm IHRoZSByZXR1cm4gdmFsdWUgaXMgbGVzcyB0aGFuICpuYl9vcHMqLCB0aGUgcmVtYWluaW5nDQo+ ICsgKiAgIG9wcyBhdCB0aGUgZW5kIG9mICpvcHMqIGFyZSBub3QgY29uc3VtZWQgYW5kIHRoZSBj YWxsZXIgaGFzIHRvIHRha2UgY2FyZQ0KPiArICogICBvZiB0aGVtLg0KPiArICovDQo+ICtfX3J0 ZV9leHBlcmltZW50YWwNCj4gK3VpbnQxNl90DQo+ICtydGVfcmVnZXhkZXZfZGVxdWV1ZV9idXJz dCh1aW50OF90IGRldl9pZCwgdWludDE2X3QgcXBfaWQsDQo+ICsJCQkgICBzdHJ1Y3QgcnRlX3Jl Z2V4X29wcyAqKm9wcywgdWludDE2X3QgbmJfb3BzKTsNCj4gKw0KPiArI2lmZGVmIF9fY3BsdXNw bHVzDQo+ICt9DQo+ICsjZW5kaWYNCj4gKw0KPiArI2VuZGlmIC8qIF9SVEVfUkVHRVhERVZfSF8g Ki8NCj4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfcmVnZXhkZXYvcnRlX3JlZ2V4ZGV2X3ZlcnNp b24ubWFwDQo+IGIvbGliL2xpYnJ0ZV9yZWdleGRldi9ydGVfcmVnZXhkZXZfdmVyc2lvbi5tYXAN Cj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMC4uZDQwMDYyNA0KPiAtLS0g L2Rldi9udWxsDQo+ICsrKyBiL2xpYi9saWJydGVfcmVnZXhkZXYvcnRlX3JlZ2V4ZGV2X3ZlcnNp b24ubWFwDQo+IEBAIC0wLDAgKzEsMjYgQEANCj4gK0VYUEVSSU1FTlRBTCB7DQo+ICsJZ2xvYmFs Og0KPiArDQo+ICsJcnRlX3JlZ2V4ZGV2X2NvdW50Ow0KPiArCXJ0ZV9yZWdleGRldl9nZXRfZGV2 X2lkOw0KPiArCXJ0ZV9yZWdleGRldl9pbmZvX2dldDsNCj4gKwlydGVfcmVnZXhkZXZfY29uZmln dXJlOw0KPiArCXJ0ZV9yZWdleGRldl9xdWV1ZV9wYWlyX3NldHVwOw0KPiArCXJ0ZV9yZWdleGRl dl9zdGFydDsNCj4gKwlydGVfcmVnZXhkZXZfc3RvcDsNCj4gKwlydGVfcmVnZXhkZXZfY2xvc2U7 DQo+ICsJcnRlX3JlZ2V4ZGV2X2F0dHJfZ2V0Ow0KPiArCXJ0ZV9yZWdleGRldl9hdHRyX3NldDsN Cj4gKwlydGVfcmVnZXhkZXZfcnVsZV9kYl91cGRhdGU7DQo+ICsJcnRlX3JlZ2V4ZGV2X3J1bGVf ZGJfY29tcGlsZV9hY3RpdmF0ZTsNCj4gKwlydGVfcmVnZXhkZXZfcnVsZV9kYl9pbXBvcnQ7DQo+ ICsJcnRlX3JlZ2V4ZGV2X3J1bGVfZGJfZXhwb3J0Ow0KPiArCXJ0ZV9yZWdleGRldl94c3RhdHNf bmFtZXNfZ2V0Ow0KPiArCXJ0ZV9yZWdleGRldl94c3RhdHNfZ2V0Ow0KPiArCXJ0ZV9yZWdleGRl dl94c3RhdHNfYnlfbmFtZV9nZXQ7DQo+ICsJcnRlX3JlZ2V4ZGV2X3hzdGF0c19yZXNldDsNCj4g KwlydGVfcmVnZXhkZXZfc2VsZnRlc3Q7DQo+ICsJcnRlX3JlZ2V4ZGV2X2R1bXA7DQo+ICsJcnRl X3JlZ2V4ZGV2X2VucXVldWVfYnVyc3Q7DQo+ICsJcnRlX3JlZ2V4ZGV2X2RlcXVldWVfYnVyc3Q7 DQo+ICt9Ow0KPiBkaWZmIC0tZ2l0IGEvbGliL21lc29uLmJ1aWxkIGIvbGliL21lc29uLmJ1aWxk DQo+IGluZGV4IDA3YTY1YTYuLjc5YWU1Y2IgMTAwNjQ0DQo+IC0tLSBhL2xpYi9tZXNvbi5idWls ZA0KPiArKysgYi9saWIvbWVzb24uYnVpbGQNCj4gQEAgLTI0LDcgKzI0LDcgQEAgbGlicmFyaWVz ID0gWw0KPiAgCSdncm8nLCAnZ3NvJywgJ2lwX2ZyYWcnLCAnam9ic3RhdHMnLA0KPiAgCSdrbmkn LCAnbGF0ZW5jeXN0YXRzJywgJ2xwbScsICdtZW1iZXInLA0KPiAgCSdwb3dlcicsICdwZHVtcCcs ICdyYXdkZXYnLA0KPiAtCSdyaWInLCAncmVvcmRlcicsICdzY2hlZCcsICdzZWN1cml0eScsICdz dGFjaycsICd2aG9zdCcsDQo+ICsJJ3JlZ2V4ZGV2JywgJ3JpYicsICdyZW9yZGVyJywgJ3NjaGVk JywgJ3NlY3VyaXR5JywgJ3N0YWNrJywgJ3Zob3N0JywNCj4gIAkjIGlwc2VjIGxpYiBkZXBlbmRz IG9uIG5ldCwgY3J5cHRvIGFuZCBzZWN1cml0eQ0KPiAgCSdpcHNlYycsDQo+ICAJI2ZpYiBsaWIg ZGVwZW5kcyBvbiByaWINCj4gLS0NCj4gMS44LjMuMQ0KDQo=