From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM03-BY2-obe.outbound.protection.outlook.com (mail-by2nam03on0045.outbound.protection.outlook.com [104.47.42.45]) by dpdk.org (Postfix) with ESMTP id BCA1928F3 for ; Thu, 1 Feb 2018 12:36:52 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=8JW3wKvtWtumpbmjwyNvi6KtduvWmLnq+H27m1DzKYQ=; b=H8ciFi02j9JL3s/lhiyJ0n+vgK02439njtHkiRaBtyJSoDKPdH27tzRapMr40Rn58yMr6P8Hp0rpyflQU8wd4BCYHFESfExc6xlGlBRM1reHhpfUaJtJKDR5jEejImzzt0YgTqgOAzlo9TlARZ2bBbrq0c+koaCLKnxQeETkmFo= Received: from CY4PR0701MB3634.namprd07.prod.outlook.com (52.132.101.164) by CY4PR0701MB3763.namprd07.prod.outlook.com (52.132.102.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.444.14; Thu, 1 Feb 2018 11:36:48 +0000 Received: from CY4PR0701MB3634.namprd07.prod.outlook.com ([fe80::a90e:9fcd:9ebd:8cad]) by CY4PR0701MB3634.namprd07.prod.outlook.com ([fe80::a90e:9fcd:9ebd:8cad%13]) with mapi id 15.20.0444.016; Thu, 1 Feb 2018 11:36:48 +0000 From: "Verma, Shally" To: "De Lara Guarch, Pablo" , "Trahe, Fiona" , "Doherty, Declan" CC: "Athreya, Narayana Prasad" , "dev@dpdk.org" , "Gupta, Ashish" , "Sahu, Sunila" , "Murthy, Nidadavolu" Thread-Topic: [RFC v1 1/1] lib/cryptodev: add support of asymmetric crypto Thread-Index: AQHTlDBUbNdx16i52kSm3pBJYdjj3KOPeNzA Date: Thu, 1 Feb 2018 11:36:48 +0000 Message-ID: References: <1516701263-13154-1-git-send-email-shally.verma@caviumnetworks.com> <1516701263-13154-2-git-send-email-shally.verma@caviumnetworks.com> In-Reply-To: <1516701263-13154-2-git-send-email-shally.verma@caviumnetworks.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Shally.Verma@cavium.com; x-originating-ip: [115.113.156.2] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; CY4PR0701MB3763; 6:oFb2ogvLzXrAc1HE5/Z1oJXQniFi0rTfqhyaoimXf1lmV6CgT/HUM61r5rzxB2h9GhuayDgxf4xQDHqQ87niOO8v/ftC45slv3Iq9H9Mncg3I4yLMLxijvPulK2MWTBEhUz8E8vLxtXVi2MkNbc6fwe/uYhyHQPRFjtRNqoqmD/luxtoBGrKWO/wS2kgctCftE7XcIT3gJv3zn63Y8XS0WdgH/b534dok0FNsQHwonVFqYPh3rOLQ7T56Zu6Q9w8koQ1jwT3Ac8whdsMx5h76BpqVVc9m4jODeQ1A7XxPQbkFXwH5JF8hTfVtMVyvAjCbgw05pQvtAbjJcEYmZLNUGbLrQSMJbJm3BlMQuYNKjTl1eeT2SZ0Ak2Ah7Bl3R+s; 5:3qXyvKqKMJ4CZ+pxx9xQUsmeFF0l2/hnW+sVQhBf4JQiigy9eKeLD0eBJ72mwapktofqAScZyI7TRqa8aFWYkB63FIMtbv5zctFpSldTUVfuPXcUfV97KU7v+rjrIsC0m2ldU2YHP6bEi7uOI5TAEVKSHvt1KUwf04Oy8J7YGak=; 24:2ub/3fTB5uXcRPJp1jCAly7YSpvddvwZgf/Y8K0pwpTx52zgcqaJFcGFkRjW6VT8JAHwbqGlOPfQiC6rsh7fieZgJWfv51moXHC0lHkBCEg=; 7:TnR5PTfV69bljbRSoSTxuG0lJ4LszUE+n6onMZwuAfC2tPgJSq9Uo0HdKcRBMi38ALJTOFGkzIW5L4PhbN3/CjiyN0pddPQJWb+SP35q8KgsrEdE/x/vNk3BOY3C664WTmX2JbCpK4wDkJNSHdnRaGjbXwZ6o0wTOBtwG39kuzcxvhYevesbRiE2pQMf7K1Z3ykSbTSby4KOC6M7RppqKVS0CN8NXZV3TaMG5EdA3/JNti9DCOdS1kMfLhY/Xtmv x-ms-exchange-antispam-srfa-diagnostics: SSOS;SSOR; x-forefront-antispam-report: SFV:SKI; SCL:-1; SFV:NSPM; SFS:(10009020)(39380400002)(39860400002)(396003)(366004)(376002)(346002)(189003)(199004)(13464003)(5890100001)(5660300001)(2950100002)(53376002)(81166006)(68736007)(105586002)(99286004)(6436002)(6306002)(3280700002)(55016002)(2473003)(7696005)(3660700001)(316002)(107886003)(9686003)(229853002)(8676002)(5250100002)(575784001)(6506007)(55236004)(110136005)(3846002)(81156014)(54906003)(102836004)(6116002)(26005)(76176011)(59450400001)(478600001)(53546011)(186003)(86362001)(2900100001)(53936002)(72206003)(97736004)(4326008)(8936002)(14454004)(966005)(106356001)(25786009)(561944003)(74316002)(53946003)(16200700003)(7736002)(66066001)(33656002)(305945005)(2906002)(21314002)(559001)(579004)(569006); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR0701MB3763; H:CY4PR0701MB3634.namprd07.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; x-ms-office365-filtering-correlation-id: d5e99874-8c27-46a3-517a-08d569681472 x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(5600026)(4604075)(3008032)(2017052603307)(7153060)(7193020); SRVR:CY4PR0701MB3763; x-ms-traffictypediagnostic: CY4PR0701MB3763: x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(228905959029699); x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(6040501)(2401047)(5005006)(8121501046)(93006095)(93001095)(3002001)(10201501046)(3231101)(2400082)(944501161)(6041288)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123558120)(20161123564045)(6072148)(201708071742011); SRVR:CY4PR0701MB3763; BCL:0; PCL:0; RULEID:; SRVR:CY4PR0701MB3763; x-forefront-prvs: 0570F1F193 received-spf: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: l4rL3kwO7uggK1DzZ1R43dlTPwcUHT3ZluF0wVfDWuQZTGZhHW/EcQuXS/3cIoVOOZq9kyCeAtrS92CogJJIbQ== spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-Network-Message-Id: d5e99874-8c27-46a3-517a-08d569681472 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Feb 2018 11:36:48.1938 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR0701MB3763 Subject: [dpdk-dev] FW: [RFC v1 1/1] lib/cryptodev: add support of asymmetric crypto 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: , X-List-Received-Date: Thu, 01 Feb 2018 11:36:54 -0000 SGkgUGFibG8vRmlvbmENCg0KQ291bGQgeW91IHBsZWFzZSBwcm92aWRlIHlvdXIgaW5wdXQgb24g dGhpcyBSRkMuIFlvdXIgZmVlZGJhY2sgaXMgYXdhaXRlZC4NCg0KVGhhbmtzDQpTaGFsbHkNCg0K LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IFZlcm1hLCBTaGFsbHkgDQpTZW50OiAy MyBKYW51YXJ5IDIwMTggMTU6MjQNClRvOiBkZWNsYW4uZG9oZXJ0eUBpbnRlbC5jb20NCkNjOiBk ZXZAZHBkay5vcmc7IEF0aHJleWEsIE5hcmF5YW5hIFByYXNhZCA8TmFyYXlhbmFQcmFzYWQuQXRo cmV5YUBjYXZpdW0uY29tPjsgTXVydGh5LCBOaWRhZGF2b2x1IDxOaWRhZGF2b2x1Lk11cnRoeUBj YXZpdW0uY29tPjsgU2FodSwgU3VuaWxhIDxTdW5pbGEuU2FodUBjYXZpdW0uY29tPjsgR3VwdGEs IEFzaGlzaCA8QXNoaXNoLkd1cHRhQGNhdml1bS5jb20+OyBWZXJtYSwgU2hhbGx5IDxTaGFsbHku VmVybWFAY2F2aXVtLmNvbT4NClN1YmplY3Q6IFtSRkMgdjEgMS8xXSBsaWIvY3J5cHRvZGV2OiBh ZGQgc3VwcG9ydCBvZiBhc3ltbWV0cmljIGNyeXB0bw0KDQpGcm9tOiBTaGFsbHkgVmVybWEgPHN2 ZXJtYUBjYXZpdW1uZXR3b3Jrcy5jb20+DQoNCkFkZCBzdXBwb3J0IGZvciBhc3ltbWV0cmljIGNy eXB0byBvcGVyYXRpb25zIGluIERQREsgbGliIGNyeXB0b2Rldg0KDQpLZXkgZmVhdHVyZSBpbmNs dWRlOg0KLSBPbmx5IHNlc3Npb24gYmFzZWQgYXN5bW1ldHJpYyBjcnlwdG8gb3BlcmF0aW9ucw0K LSBuZXcgZ2V0IGFuZCBzZXQgQVBJcyBmb3Igc3ltbWV0cmljIGFuZCBhc3ltbWV0cmljIHNlc3Np b24gcHJpdmF0ZQ0KICBkYXRhIGFuZCBvdGhlciBpbmZvcm1hdGlvbnMNCi0gQVBJcyB0byBjcmVh dGUsIGNvbmZpZ3VyZSBhbmQgYXR0Y2ggcXVldWUgcGFpciB0byBhc3ltbWV0cmljIHNlc3Npb25z DQotIG5ldyBjYXBhYmlsaXRpZXMgaW4gc3RydWN0IGRldmljZV9pbmZvIHRvIGluZGljYXRlDQog IC0tIG51bWJlciBvZiBkZWRpY2F0ZWQgcXVldWUgcGFpcnMgYXZhaWxhYmxlIGZvciBzeW1tZXRy aWMgYW5kDQogICAgIGFzeW1tZXRyaWMgb3BlcmF0aW9ucywgaWYgYW55DQogIC0tIG51bWJlciBv ZiBhc3ltbWV0cmljIHNlc3Npb25zIHBvc3NpYmxlIHBlciBxcA0KDQpQcm9wb3NlZCBhc3ltbWV0 cmljIGNyeXB0b2dyYXBoaWMgb3BlcmF0aW9ucyBhcmU6DQotIHJzYQ0KLSBkc2ENCi0gZGVmZmll LWhlbGxtYW4ga2V5IHBhaXIgZ2VuZXJhdGlvbiBhbmQgc2hhcmVkIGtleSBjb21wdXRhdGlvbg0K LSBlY2RlZmZpZS1oZWxsbWFuDQotIGZ1bmRhbWVudGFsIGVsbGlwdGljIGN1cnZlIG9wZXJhdGlv bnMNCi0gZWxsaXB0aWMgY3VydmUgRFNBDQotIG1vZHVsYXIgZXhwb25lbnRpYXRpb24gYW5kIGlu dmVyc2lvbg0KDQpUaGlzIHBhdGNoIHByaW1hcmlseSBkZWZpbmVzIFBNRCBvcGVyYXRpb25zIGFu ZCBkZXZpY2UgY2FwYWJpbGl0aWVzDQp0byBwZXJmb3JtIGFzeW1tZXRyaWMgY3J5cHRvIG9wcyBv biBxdWV1ZSBwYWlycyBhbmQgaW50ZW5kIHRvDQppbnZpdGUgZmVlZGJhY2tzIG9uIGN1cnJlbnQg cHJvcG9zYWwgc28gYXMgdG8gZW5zdXJlIGl0IGVuY29tcGFzcw0KYWxsIGtpbmQgb2YgY3J5cHRv IGRldmljZXMgd2l0aCBkaWZmZXJlbnQgY2FwYWJpbGl0aWVzIGFuZCBxdWV1ZQ0KcGFpciBtYW5h Z2VtZW50Lg0KDQpMaXN0IG9mIFRCRHM6DQotIEN1cnJlbnRseSwgcGF0Y2ggb25seSB1cGRhdGVk IGZvciBSU0EgeGZvcm0gYW5kIGFzc29jaWF0ZWQgcGFyYW1zLg0KICBPdGhlciBhbGdvcml0bXMg dG8gYmUgYWRkZWQgaW4gc3Vic2VxdWVudCB2ZXJzaW9ucy4NCi0gcGVyLXNlcnZpY2Ugc3RhdHMg dXBkYXRlDQoNClNpZ25lZC1vZmYtYnk6IFNoYWxseSBWZXJtYSA8c3Zlcm1hQGNhdml1bW5ldHdv cmtzLmNvbT4NCi0tLQ0KDQpJdCBpcyBkZXJpdmF0aXZlIG9mIFJGQyB2MiBhc3ltbWV0cmljIGNy eXB0byBwYXRjaCBzZXJpZXMgaW5pdGlhdGVkIGJ5IA0KVW1lc2ggS2FydGhhKG1haWx0bzp1bWVz aC5rYXJ0aGFAY2F2aXVtbmV0d29ya3MuY29tKToNCg0KIGh0dHA6Ly9kcGRrLm9yZy9kZXYvcGF0 Y2h3b3JrL3BhdGNoLzI0MjQ1Lw0KIGh0dHA6Ly9kcGRrLm9yZy9kZXYvcGF0Y2h3b3JrL3BhdGNo LzI0MjQ2Lw0KIGh0dHA6Ly9kcGRrLm9yZy9kZXYvcGF0Y2h3b3JrL3BhdGNoLzI0MjQ3Lw0KDQpB bmQgaW5jbHVzaXZlIG9mIGFsbCByZXZpZXcgY29tbWVudHMgZ2l2ZW4gb24gUkZDIHYyLg0KICgg U2VlIGNvbXBsZXRlIGRpc2N1c3Npb24gdGhyZWFkIGhlcmU6DQpodHRwOi8vZGV2LmRwZGsubmFy a2l2ZS5jb20veXFURkZMSHcvZHBkay1kZXYtcmZjLXNwZWNpZmljYXRpb25zLWZvci1hc3ltbWV0 cmljLWNyeXB0by1hbGdvcml0aG1zI3Bvc3QxMikNCg0KU29tZSBvZiB0aGUgUkZDdjIgUmV2aWV3 IGNvbW1lbnRzIHBlbmRpbmcgZm9yIGNsb3N1cmU6DQo+ICIgW0Zpb25hXSBUaGUgY291bnQgZm4g aXNuJ3QgdXNlZCBhdCBhbGwgZm9yIHN5bSAtIHByb2JhYmx5IG5vIG5lZWQgdG8gYWRkIGZvciBh c3ltDQogICAgIGJldHRlciBpbnN0ZWFkIHRvIHJlbW92ZSB0aGUgc3ltIGZuLiIgDQoNCiAgICAg SXQgaXMgc3RpbGwgcHJlc2VudCBpbiBkcGRrLW5leHQtY3J5cHRvIGZvciBzeW0sIHNvIHdoYXQg aGFzIGJlZW4gZGVjaXNpb24NCiAgICAgb24gaXQ/DQoNCj4iW0Zpb25hXSBpZiBlYWNoIHFwIGNh biBoYW5kbGUgb25seSBhIHNwZWNpZmljIHNlcnZpY2UsIGkuZS4gYSBzdWJzZXQgb2ZmIHRoZSBj YXBhYmlsaXRpZXMNCiAgICBJbmRpY2F0ZWQgYnkgdGhlIGRldmljZSBjYXBhYmlsaXR5IGxpc3Qs IHRoZXJlJ3MgYSBuZWVkIGZvciBhIG5ldyBBUEkgdG8gcXVlcnkNCiAgICB0aGUgY2FwYWJpbGl0 eSBvZiBhIHFwLiINCg0KICAgIEN1cnJlbnQgcHJvcG9zYWwgZG9lc27igJl0IGRpc3Rpbmd1aXNo IGJldHdlZW4gZGV2aWNlIGNhcGFiaWxpdHkgYW5kIHFwIGNhcGFiaWxpdHkuDQogICAgSXQgcmF0 aGVyIGxlYXZlIHN1Y2ggZGlmZmVyZW5jZXMgaGFuZGxpbmcgaW50ZXJuYWwgdG8gUE1Ecy4gVGh1 cyBubyBjYXBhYmlsaXR5DQogICAgb3IgQVBJIGFkZGVkIGZvciBxcCBpbiBjdXJyZW50IHZlcnNp b24uIEl0IGlzIHN1YmplY3QgdG8gcmV2aXNpdCBiYXNlZCBvbiByZXZpZXcNCiAgICBmZWVkYmFj ayBvbiBjdXJyZW50IHByb3Bvc2FsLg0KDQotIFNlc3Npb25sZXNzIFN1cHBvcnQuDQogICAgQ3Vy cmVudCBwcm9wb3NhbCBvbmx5IHN1cHBvcnQgU2Vzc2lvbi1iYXNlZCBiZWNhdXNlOg0KICAgICAx LiBBbGwgb25lLXRpbWUgc2V0dXAgaS5lLiAgYWxnb3MgYW5kIGFzc29jaWF0ZWQgcGFyYW1zLCBz dWNoIGFzLCBwdWJsaWMtcHJpdmF0ZSBrZXlzIA0KICAgICAgICBvciBtb2R1bHVzIGxlbmd0aCBj YW4gYmUgZG9uZSBpbiBjb250cm9sIHBhdGggdXNpbmcgc2Vzc2lvbi1pbml0IEFQSSANCiAgICAg Mi4gaXTigJlzIGFuIGVhc2llciB3YXkgdG8gZGVkaWNhdGUgcXAgdG8gZG8gc3BlY2lmaWMgc2Vy dmljZSAodXNpbmcgcXVldWVfcGFpcl9hdHRhY2goKSkNCiAgICAgICAgd2hpY2ggY2Fubm90IGJl IGNhc2UgaW4gc2Vzc2lvbmxlc3MgIA0KICAgICAzLiBDb3VsZG7igJl0IGZpbmQgYW55IHNpZ25p ZmljYW50IGFkdmFudGFnZSBnb2luZyBzZXNzaW9ubGVzcyB3YXkuIEFsc28gZXhpc3RpbmcgbW9z dCBvZiBQTURzIGFyZSBzZXNzaW9uLWJhc2VkLiANCg0KICAgIEl0IGNvdWxkIGJlIGFkZGVkIGlu IHN1YnNlcXVlbnQgdmVyc2lvbnMsIGlmIHJlcXVpcmVtZW50IGlzIGlkZW50aWZpZWQsIGJhc2Vk IG9uIHJldmlldyBjb21tZW50DQogICAgb24gdGhpcyBSRkMuDQoNClN1bW1hcnkNCi0tLS0tLS0N Cg0KVGhpcyBzZWN0aW9uIHByb3ZpZGVzIGFuIG92ZXJ2aWV3IG9mIGtleSBmZWF0dXJlIGVuYWJs ZWQgaW4gY3VycmVudCBzcGVjaWZpY2F0aW9uLg0KSXQgY29tcHJpc2Ugb2Yga2V5IGRlc2lnbiBj aGFsbGVuZ2VzIGFzIGhhdmUgYmVlbiBpZGVudGlmaWVkIG9uIFJGQ3YyIGFuZCANCnN1bW1hcnkg ZGVzY3JpcHRpb24gb2YgbmV3IGludGVyZmFjZXMgYW5kIGRlZmluaXRpb25zIGFkZGVkIHRvIGhh bmRsZSBzYW1lLg0KDQpEZXNjcmlwdGlvbg0KLS0tLS0tLS0tLS0NCg0KVGhpcyBBUEkgc2V0IGFz c3VtZXMgdGhhdCB0aGUgbWF4X25iX3F1ZXVlX3BhaXJzIG9uIGENCmRldmljZSBjYW4gYmUgYWxs b2NhdGVkIHRvIGFueSBtaXggb2Ygc3ltIG9yIGFzeW0uIFNvbWUgZGV2aWNlcw0KbWF5IGhhdmUg YSBmaXhlZCBtYXggcGVyIHNlcnZpY2UuIFRodXMsIHJ0ZV9jcnlwdG9kZXZfaW5mbyANCmlzIHVw ZGF0ZWQgd2l0aCBtYXhfc3ltX25iX3F1ZXVlcyBhbmQgbWF4X2FzeW1fbmJfcXVldWVzIHdpdGgg cnVsZToNCg0KbWF4X25iX3F1ZXVlX3BhaXIgPSBtYXhfbmJfc3ltX3FwICsgbWF4X25iX2FzeW1f cXAuDQoNCklmIGRldmljZSBoYXMgbm8gcmVzdHJpY3Rpb25zIG9uIHFwIHRvIGJlIHVzZWQgcGVy IHNlcnZpY2UsIHN1Y2ggUE1EcyBjYW4gbGVhdmUNCm1heF9uYl9zeW1fcXAgPSBtYXhfbmJfYXN5 bV9xcCA9IDAuIEluIHN1Y2ggY2FzZSwgYXBwbGljYXRpb24gY2FuIHNldHVwIGFueSBvZg0KdGhl IHNlcnZpY2UgdXB0byBsaW1pdCBkZWZpbmVkIGJ5IG1heF9uYl9xdWV1ZV9wYWlyLg0KDQpIZXJl LCBtYXhfbmJfc3ltX3FwIGFuZCBtYXhfbmJfYXN5bV9xcCwgaWYgbm9uLXplcm8sIGp1c3QgZGVm aW5lIGxpbWl0IG9uIHFwIHdoaWNoIGFyZQ0KYXZhaWxhYmxlIGZvciBlYWNoIHNlcnZpY2UgYW5k ICphcmUgbm90KiBpZHMgdG8gYmUgdXNlZCBkdXJpbmcgcXAgc2V0dXAgYW5kIGVucXVldWUgaS5l Lg0KaWYgZGV2aWNlIHN1cHBvcnRzIGJvdGggc3ltbWV0cmljIGFuZCBhc3ltbWV0cmljIHdpdGgg biBxcCwgdGhlbiBhbnkgb2YgdGhlbQ0KY2FuIGJlIGNvbmZpZ3VyZWQgZm9yIHN5bW1ldHJpYyBv ciBhc3ltbWV0cmljIHN1YmplY3QgdG8gbGltaXQgZGVmaW5lZCBieQ0KbWF4X25iX3N5bV9xcCBh bmQgbWF4X25iX2FzeW1fcXAuIEZvciBleGFtcGxlLA0KaWYgZGV2aWNlIGhhcyA2IHF1ZXVlcyBh bmQgNSBmb3Igc3ltbWV0cmljIGFuZCAxIGZvciBhc3ltbWV0cmljIHRoYXQgaW1wbHkNCmFwcGxp Y2F0aW9uIGNhbiBzZXR1cCBvbmx5IDEgb3V0IG9mIGFueSA2IHFwIGZvciBhc3ltbWV0cmljIGFu ZCByZXN0IGZvcg0Kc3ltbWV0cmljLg0KDQpBZGRpdGlvbmFsbHksIGFwcGxpY2F0aW9uIGNhbiBk ZWRpY2F0ZSBxcCB0byBwZXJmb3JtIHNwZWNpZmljIHNlcnZpY2UgdmlhIG9wdGlvbmFsIA0KcXVl dWVfcGFpcl9hdHRhY2hfc3ltL2FzeW1fc2Vzc2lvbigpIEFQSS4NCg0KRXhjZXB0IHRoZSBvbmVz IG1lbnRpb25lZCBhYm92ZSwgc3BlY2lmaWNhdGlvbiBkb2Vzbid0IGRlZmluZSBhbnkgcmVzdHJp Y3Rpb25zIG9uIA0KZW5xdWV1ZS9kZXF1ZXVlIEFQSSBmb3IgZGlmZmVyZW50IGNyeXB0byBzZXJ2 aWNlcy4gQXBwbGljYXRpb24gY2FuIGVucXVldWUgYm90aCBzeW1tZXRyaWMNCmFuZCBhc3ltbWV0 cmljIG9wZXJhdGlvbnMgdG8gc2FtZSBkZXZpY2UgYW5kIHFwIGlmIGRldmljZSBpbmZvIGluZGlj YXRlIHN1cHBvcnQgb2YgYm90aA0Kc3ltbWV0cmljIGFuZCBhc3ltbWV0cmljIGFuZCBxcCBpcyBu b3QgZGVkaWNhdGVkIHRvIGFueS4gSG93ZXZlciBpbiBwcmFjdGljZSwgaXQgY291bGQgDQpyZXN1 bHQgaW4gaGVhZC1vZi1saW5lIGJsb2NraW5nIGR1ZSB0byB0aGUgYXN5bSBvcHMgdGFraW5nIGxv bmdlciB0aGFuIHRoZSBzeW1tZXRyaWMgb3BzLg0KDQpTb21lIEhXIGFjY2VsZXJhdG9ycyBhdm9p ZCB0aGlzIGlzc3VlIGJ5IHN1cHBvcnRpbmcgc3ltIGFuZCBhc3ltIG9wcw0Kb24gZGlmZmVyZW50 IHFwcyBvbiB0aGUgc2FtZSBkZXZpY2UuICBTdWNoIGRldmljZXMgY2FuIHNldCBtYXhfbmJfc3lt X3FwIGFuZA0KbWF4X25iX2FzeW1fcXAgdG8gbnVtYmVyIG9mIHF1ZXVlcyBhdmFpbGFibGUgZm9y IGVhY2ggcmVzcGVjdGl2ZSBzZXJ2aWNlLg0KDQpUaGlzIG1heSBnaXZlIHByb2JsZW0gaW4gaW5k ZXhpbmcgb24gZW5xdWV1ZS9kZXF1ZXVlIGkuZS4NCmlmIDIgYXN5bSBxcHMgYW5kIDIgc3ltIHFw cyBhcmUgY3JlYXRlZCBvbiB0aGUgc2FtZSBkZXZpY2UsDQp0aGUgcXVldWVfcGFpcl9pZHMgYXJl IGR1cGxpY2F0ZWQuIFRvIGhhbmRsZSBzdWNoIHNjZW5hcmlvLA0KMiBhbHRlcm5hdGl2ZXMgYXJl IHByb3Bvc2VkIGZvciBQTUQgZGVzaWduOg0KDQoxLiBBbGxvdyBhbGwgcXAgdG8gaW5wdXQgYW55 IG9wZXJhdGlvbiB0eXBlIHZpcnR1YWxseS4gU2F5LA0KDQogICAgQ29uc2lkZXIgZGV2aWNlIHdp dGggc3ltbWV0cmljIGFuZCBhc3ltbWV0cmljIGNhcGFiaWxpdHkgaGF2aW5nIA0KICAgIG1heF9u Yl9xdWV1ZV9wYWlyIGFzIDYsIHRoZW4gYnkgZGVzaWduLCBhbGwgNiBhcmUgY2FwYWJsZSB0byBp bnB1dA0KICAgIGJvdGggb3AgdHlwZXMuDQoNCiAgICBJZiBQTUQgdXNlcyBmaXhlZCBzZXQgb2Yg cXAsIHRoZW4gaW50ZXJuYWxseSwgY2FuIG1hcCBxcCBpZCB0bw0KICAgIGFjdHVhbCBwaHlzaWNh bCBxcCBpZCB0byBiZSB1c2VkIGFjY29yZGluZyB0byBzZXNzaW9uL29wIHR5cGUuDQogICAgSWYg c3VjaCBtYXBwaW5nIGlzIGRvbmUgb24gZGF0YSBwYXRoLCBtYXkgaW1wYWN0IHBlcmZvcm1hbmNl IG9mIFBNRHMuDQogICAgVGh1cywgdG8gaGFuZGxlIHN1Y2ggbWFwcGluZyBvdXQgb2YgZGF0YSBw YXRoLCBsaWJyYXJ5IHByb3ZpZGVzIGFuIEFQSQ0KICAgIHF1ZXVlX3BhaXJfYXR0YWNoX3N5bS9h c3ltX3Nlc3Npb24oKSB3aGljaCBmYWNpbGl0YXRlIGFwcGxpY2F0aW9uIHRvIA0KICAgIGRlZGlj YXRlIHFwIGlkIHRvIHBlcmZvcm0gc3BlY2lmaWMgKHN5bS9hc3ltKSBzZXJ2aWNlIGluIGNvbnRy b2wgcGF0aA0KICAgIGFuZCBzaG91bGQgYmUgY2FsbGVkIGJlZm9yZSAxc3QgY2FsbCB0byBlbnF1 ZXVlX2J1cnN0KCkuDQogICAgSGVyZSBQTUQgY2FuIGJpbmQgYXBwIHByb3ZpZGVkIGxvZ2ljYWwg cXAgaWQgdG8gYWN0dWFsIHBoeXNpY2FsIHFwIGlkIHRvIHVzZQ0KICAgIGRlcGVuZGluZyBvbiBz ZXNzaW9uIHR5cGUgLCBPUiBhbHRlcm5hdGl2ZWx5IA0KDQoyLiBQTURzIGNhbiBzcGxpdCBpdCBp bnRvIHR3byBQTURzLCBvbmUgd2l0aCBzeW1tZXRyaWMgT05MWSBjYXBhYmlsaXR5IGFuZCBvdGhl ciANCiAgICB3aXRoIGFzeW1tZXRyaWMgT05MWSBjYXBhYmlsaXR5IChhbHNvIHByb3Bvc2VkIGJ5 IEZpb25hIGluIFJGQ3YyKS4NCiAgICBUaGlzIG1heSByZXF1aXJlIHNvbWUgIGNoYW5nZXMgdG8g RUFMIHRvIGZhY2lsaXRhdGUgcGNpIGRldmljZSBzaGFyaW5nIGJldHdlZW4gDQogICAgUE1Ecywg ZW5hYmxpbmcgc2VwYXJhdGlvbiBvZiBzeW0gYW5kICBhc3ltIHNlcnZpY2VzIG9udG8gZGlmZmVy ZW50IFBNRHMuIA0KICAgIEFzIHBlciBSRkN2MiBmZWVkYmFjaywgSW50ZWwgIHByb3Bvc2VkIHRv IHN1Ym1pdCBhIHBhdGNoIHRvICBlbmFibGUgdGhpcy4NCg0KMy4gU29tZSBvZiB0aGUgb3RoZXIg YWx0ZXJuYXRpdmVzIHdlcmUgYWxzbyBzdWdnZXN0ZWQgb24gUkZDdjIgYXMgc3VtbWFyaXNlZCBo ZXJlOg0KICAgICJbRmlvbmFdIE9uZSBhbHRlcm5hdGl2ZSBpcyB0byB1c2UgZGlmZmVyZW50IHFw X2lkcyBmb3Igc3ltIGFuZCBhc3ltLg0KICAgICAgUmVtb3ZlIHRoZSBxdWV1ZV9wYWlyX2lkIGZy b20gdGhlIHh4eF9xdWV1ZV9wYWlyX3NldHVwIGZucw0KICAgICAgYW5kIGluc3RlYWQgcmV0dXJu IHRoZSBpZC4gU28gZS5nLiBpZiBzeW1fcXVldWVfcGFpcl9zZXR1cCgpIGlzIGNhbGxlZCwgdGhl bg0KICAgICAgYXN5bV9xdWV1ZV9wYWlyX3NldHVwKCksIHRoZW4gc3ltX3F1ZXVlX3BhaXJfc2V0 dXAoKSBxcF9pZCAwIGFuZCAyIHdvdWxkIGJlDQogICAgICBzeW0gcXBzIGFuZCBxcF9pZCAxIHdv dWxkIGJlIGFuIGFzeW0gcXAuIEluc3RlYWQgb2Ygc2VwYXJhdGUgDQogICAgICBkZXYtPmRhdGEt PmFzeW1fcXVldWVfcGFpcnMgYW5kIGRldi0+ZGF0YS0+c3ltX3F1ZXVlX3BhaXJzIGFycmF5cyB0 aGVyZSANCiAgICAgIHdvdWxkIGJlIG9uZSBjb21tb24gYXJyYXkuIEFub3RoZXIgYWx0ZXJuYXRp dmUgaXMgdG8gdXNlIHNlcGFyYXRlIEFQSXMgaS5lLg0KICAgICAgcnRlX2NyeXB0b2Rldl9zeW1f ZW5xdWV1ZV9idXJzdCBydGVfY3J5cHRvZGV2X2FzeW1fZW5xdWV1ZV9idXJzdC4iDQoNCiAgICAg V2UgYmVsaWV2ZSBlaXRociBvZiBhYm92ZSBwcm9wb3NlZCAxc3QgdHdvIHNvbHV0aW9ucyhhZ2Fp bnN0IHBvaW50IDEgYW5kIDIpIHN1ZmZpY2UgdG8gYWNoaWV2ZSBwdXJwb3NlLiANCiAgICAgVGh1 cywgd2UgZG9u4oCZdCByZWFsaXplIG5lZWQgdG8gY2hhbmdlIG5vdGlvbiBvZiBxcF9zZXR1cCgp IG9yIGFkZCBuZXcgZW5xdWV1ZV9idXJzdCgpIHZhcmlhbnQgDQogICAgIGZvciBhc3ltIGF0IGN1 cnJlbnQgc3RhZ2UuIEhvd2V2ZXIgaXQgaXMgc3ViamVjdCB0byByZXZpc2l0LCBpZiBhbnkgcmVx dWlyZW1lbnQgaXMgaWRlbnRpZmllZC4NCg0KLS0tDQogbGliL2xpYnJ0ZV9jcnlwdG9kZXYvTWFr ZWZpbGUgICAgICAgICAgICAgICAgICB8ICAgMSArDQogbGliL2xpYnJ0ZV9jcnlwdG9kZXYvcnRl X2NyeXB0by5oICAgICAgICAgICAgICB8ICAzOSArLQ0KIGxpYi9saWJydGVfY3J5cHRvZGV2L3J0 ZV9jcnlwdG9fYXN5bS5oICAgICAgICAgfCA5NDkgKysrKysrKysrKysrKysrKysrKysrKysrKw0K IGxpYi9saWJydGVfY3J5cHRvZGV2L3J0ZV9jcnlwdG9kZXYuYyAgICAgICAgICAgfCAyODcgKysr KysrKysNCiBsaWIvbGlicnRlX2NyeXB0b2Rldi9ydGVfY3J5cHRvZGV2LmggICAgICAgICAgIHwg MzU4ICsrKysrKysrKy0NCiBsaWIvbGlicnRlX2NyeXB0b2Rldi9ydGVfY3J5cHRvZGV2X3BtZC5j ICAgICAgIHwgIDE5ICstDQogbGliL2xpYnJ0ZV9jcnlwdG9kZXYvcnRlX2NyeXB0b2Rldl9wbWQu aCAgICAgICB8IDE1NCArKystDQogbGliL2xpYnJ0ZV9jcnlwdG9kZXYvcnRlX2NyeXB0b2Rldl92 ZXJzaW9uLm1hcCB8ICAyMSArDQogOCBmaWxlcyBjaGFuZ2VkLCAxODExIGluc2VydGlvbnMoKyks IDE3IGRlbGV0aW9ucygtKQ0KDQpkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV9jcnlwdG9kZXYvTWFr ZWZpbGUgYi9saWIvbGlicnRlX2NyeXB0b2Rldi9NYWtlZmlsZQ0KaW5kZXggYmJhOGRlZS4uZGVj MzI1YiAxMDA2NDQNCi0tLSBhL2xpYi9saWJydGVfY3J5cHRvZGV2L01ha2VmaWxlDQorKysgYi9s aWIvbGlicnRlX2NyeXB0b2Rldi9NYWtlZmlsZQ0KQEAgLTIxLDYgKzIxLDcgQEAgU1JDUy15ICs9 IHJ0ZV9jcnlwdG9kZXYuYyBydGVfY3J5cHRvZGV2X3BtZC5jDQogIyBleHBvcnQgaW5jbHVkZSBm aWxlcw0KIFNZTUxJTksteS1pbmNsdWRlICs9IHJ0ZV9jcnlwdG8uaA0KIFNZTUxJTksteS1pbmNs dWRlICs9IHJ0ZV9jcnlwdG9fc3ltLmgNCitTWU1MSU5LLXktaW5jbHVkZSArPSBydGVfY3J5cHRv X2FzeW0uaA0KIFNZTUxJTksteS1pbmNsdWRlICs9IHJ0ZV9jcnlwdG9kZXYuaA0KIFNZTUxJTkst eS1pbmNsdWRlICs9IHJ0ZV9jcnlwdG9kZXZfcG1kLmgNCiANCmRpZmYgLS1naXQgYS9saWIvbGli cnRlX2NyeXB0b2Rldi9ydGVfY3J5cHRvLmggYi9saWIvbGlicnRlX2NyeXB0b2Rldi9ydGVfY3J5 cHRvLmgNCmluZGV4IDk1Y2Y4NjEuLmU4YzBiYWMgMTAwNjQ0DQotLS0gYS9saWIvbGlicnRlX2Ny eXB0b2Rldi9ydGVfY3J5cHRvLmgNCisrKyBiL2xpYi9saWJydGVfY3J5cHRvZGV2L3J0ZV9jcnlw dG8uaA0KQEAgLTIzLDYgKzIzLDcgQEANCiAjaW5jbHVkZSA8cnRlX2NvbW1vbi5oPg0KIA0KICNp bmNsdWRlICJydGVfY3J5cHRvX3N5bS5oIg0KKyNpbmNsdWRlICJydGVfY3J5cHRvX2FzeW0uaCIN CiANCiAvKiogQ3J5cHRvIG9wZXJhdGlvbiB0eXBlcyAqLw0KIGVudW0gcnRlX2NyeXB0b19vcF90 eXBlIHsNCkBAIC0zMCw2ICszMSw4IEBAIGVudW0gcnRlX2NyeXB0b19vcF90eXBlIHsNCiAJLyoq PCBVbmRlZmluZWQgb3BlcmF0aW9uIHR5cGUgKi8NCiAJUlRFX0NSWVBUT19PUF9UWVBFX1NZTU1F VFJJQywNCiAJLyoqPCBTeW1tZXRyaWMgb3BlcmF0aW9uICovDQorCVJURV9DUllQVE9fT1BfVFlQ RV9BU1lNTUVUUklDDQorCS8qKjwgQXN5bW1ldHJpYyBvcGVyYXRpb24gKi8NCiB9Ow0KIA0KIC8q KiBTdGF0dXMgb2YgY3J5cHRvIG9wZXJhdGlvbiAqLw0KQEAgLTk3LDYgKzEwMCwxMCBAQCBzdHJ1 Y3QgcnRlX2NyeXB0b19vcCB7DQogCXVuaW9uIHsNCiAJCXN0cnVjdCBydGVfY3J5cHRvX3N5bV9v cCBzeW1bMF07DQogCQkvKio8IFN5bW1ldHJpYyBvcGVyYXRpb24gcGFyYW1ldGVycyAqLw0KKw0K KwkJc3RydWN0IHJ0ZV9jcnlwdG9fYXN5bV9vcCBhc3ltWzBdOw0KKwkJLyoqPCBBc3ltbWV0cmlj IG9wZXJhdGlvbiBwYXJhbWV0ZXJzICovDQorDQogCX07IC8qKjwgb3BlcmF0aW9uIHNwZWNpZmlj IHBhcmFtZXRlcnMgKi8NCiB9Ow0KIA0KQEAgLTExNyw2ICsxMjQsOSBAQCBzdHJ1Y3QgcnRlX2Ny eXB0b19vcCB7DQogCWNhc2UgUlRFX0NSWVBUT19PUF9UWVBFX1NZTU1FVFJJQzoNCiAJCV9fcnRl X2NyeXB0b19zeW1fb3BfcmVzZXQob3AtPnN5bSk7DQogCQlicmVhazsNCisJY2FzZSBSVEVfQ1JZ UFRPX09QX1RZUEVfQVNZTU1FVFJJQzoNCisJCV9fcnRlX2NyeXB0b19hc3ltX29wX3Jlc2V0KG9w LT5hc3ltKTsNCisJCWJyZWFrOw0KIAljYXNlIFJURV9DUllQVE9fT1BfVFlQRV9VTkRFRklORUQ6 DQogCWRlZmF1bHQ6DQogCQlicmVhazsNCkBAIC0xMjQsNyArMTM0LDcgQEAgc3RydWN0IHJ0ZV9j cnlwdG9fb3Agew0KIH0NCiANCiAvKioNCi0gKiBQcml2YXRlIGRhdGEgc3RydWN0dXJlIGJlbG9u Z2luZyB0byBhIGNyeXB0byBzeW1tZXRyaWMgb3BlcmF0aW9uIHBvb2wuDQorICogUHJpdmF0ZSBk YXRhIHN0cnVjdHVyZSBiZWxvbmdpbmcgdG8gYSBjcnlwdG8gb3BlcmF0aW9uIHBvb2wuDQogICov DQogc3RydWN0IHJ0ZV9jcnlwdG9fb3BfcG9vbF9wcml2YXRlIHsNCiAJZW51bSBydGVfY3J5cHRv X29wX3R5cGUgdHlwZTsNCkBAIC0yODMsOSArMjkzLDE0IEBAIHN0cnVjdCBydGVfY3J5cHRvX29w X3Bvb2xfcHJpdmF0ZSB7DQogCWlmIChsaWtlbHkob3AtPm1lbXBvb2wgIT0gTlVMTCkpIHsNCiAJ CXByaXZfc2l6ZSA9IF9fcnRlX2NyeXB0b19vcF9nZXRfcHJpdl9kYXRhX3NpemUob3AtPm1lbXBv b2wpOw0KIA0KLQkJaWYgKGxpa2VseShwcml2X3NpemUgPj0gc2l6ZSkpDQotCQkJcmV0dXJuICh2 b2lkICopKCh1aW50OF90ICopKG9wICsgMSkgKw0KKwkJaWYgKGxpa2VseShwcml2X3NpemUgPj0g c2l6ZSkpIHsNCisJCQlpZiAob3AtPnR5cGUgPT0gUlRFX0NSWVBUT19PUF9UWVBFX1NZTU1FVFJJ QykNCisJCQkJcmV0dXJuICh2b2lkICopKCh1aW50OF90ICopKG9wICsgMSkgKw0KIAkJCQkJc2l6 ZW9mKHN0cnVjdCBydGVfY3J5cHRvX3N5bV9vcCkpOw0KKwkJCWlmIChvcC0+dHlwZSA9PSBSVEVf Q1JZUFRPX09QX1RZUEVfQVNZTU1FVFJJQykNCisJCQkJcmV0dXJuICh2b2lkICopKCh1aW50OF90 ICopKG9wKzEpICsNCisJCQkJCXNpemVvZihzdHJ1Y3QgcnRlX2NyeXB0b19hc3ltX29wKSk7DQor CQl9DQogCX0NCiANCiAJcmV0dXJuIE5VTEw7DQpAQCAtMzg4LDYgKzQwMywyNCBAQCBzdHJ1Y3Qg cnRlX2NyeXB0b19vcF9wb29sX3ByaXZhdGUgew0KIAlyZXR1cm4gX19ydGVfY3J5cHRvX3N5bV9v cF9hdHRhY2hfc3ltX3Nlc3Npb24ob3AtPnN5bSwgc2Vzcyk7DQogfQ0KIA0KKy8qKg0KKyAqIEF0 dGFjaCBhIGFzeW1tZXRyaWMgc2Vzc2lvbiB0byBhIGNyeXB0byBvcGVyYXRpb24NCisgKg0KKyAq IEBwYXJhbQlvcAljcnlwdG8gb3BlcmF0aW9uLCBtdXN0IGJlIG9mIHR5cGUgYXN5bW1ldHJpYw0K KyAqIEBwYXJhbQlzZXNzCWNyeXB0b2RldiBzZXNzaW9uDQorICovDQorc3RhdGljIGlubGluZSBp bnQNCitydGVfY3J5cHRvX29wX2F0dGFjaF9hc3ltX3Nlc3Npb24oc3RydWN0IHJ0ZV9jcnlwdG9f b3AgKm9wLA0KKwkJc3RydWN0IHJ0ZV9jcnlwdG9kZXZfYXN5bV9zZXNzaW9uICpzZXNzKQ0KK3sN CisJaWYgKHVubGlrZWx5KG9wLT50eXBlICE9IFJURV9DUllQVE9fT1BfVFlQRV9BU1lNTUVUUklD KSkNCisJCXJldHVybiAtMTsNCisNCisJb3AtPnNlc3NfdHlwZSA9IFJURV9DUllQVE9fT1BfV0lU SF9TRVNTSU9OOw0KKw0KKwlyZXR1cm4gX19ydGVfY3J5cHRvX29wX2F0dGFjaF9hc3ltX3Nlc3Np b24ob3AtPmFzeW0sIHNlc3MpOw0KK30NCisNCiAjaWZkZWYgX19jcGx1c3BsdXMNCiB9DQogI2Vu ZGlmDQpkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV9jcnlwdG9kZXYvcnRlX2NyeXB0b19hc3ltLmgg Yi9saWIvbGlicnRlX2NyeXB0b2Rldi9ydGVfY3J5cHRvX2FzeW0uaA0KbmV3IGZpbGUgbW9kZSAx MDA2NDQNCmluZGV4IDAwMDAwMDAuLjI3Y2FmNTUNCi0tLSAvZGV2L251bGwNCisrKyBiL2xpYi9s aWJydGVfY3J5cHRvZGV2L3J0ZV9jcnlwdG9fYXN5bS5oDQpAQCAtMCwwICsxLDk0OSBAQA0KKy8q DQorICogICBCU0QgTElDRU5TRQ0KKyAqDQorICogICBDb3B5cmlnaHQgKEMpIENhdml1bSBuZXR3 b3JrcyBMdGQuIDIwMTcuDQorICoNCisgKiAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291 cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KKyAqICAgbW9kaWZpY2F0aW9u LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zDQor ICogICBhcmUgbWV0Og0KKyAqDQorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCisgKiAgICAgICBub3RpY2UsIHRo aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQorICog ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh Ym92ZSBjb3B5cmlnaHQNCisgKiAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4NCisgKiAgICAgICB0aGUgZG9jdW1lbnRh dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlDQorICogICAgICAg ZGlzdHJpYnV0aW9uLg0KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgQ2F2aXVtIE5ldHdv cmtzIG5vciB0aGUgbmFtZXMgb2YgaXRzDQorICogICAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1 c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkDQorICogICAgICAgZnJv bSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u Lg0KKyAqDQorICogICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTDQorICogICAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVA0KKyAqICAgTElNSVRFRCBU TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg Rk9SDQorICogICBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF TlQgU0hBTEwgVEhFIENPUFlSSUdIVA0KKyAqICAgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsDQorICogICBTUEVDSUFM LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U DQorICogICBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF UlZJQ0VTOyBMT1NTIE9GIFVTRSwNCisgKiAgIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQ0KKyAqICAgVEhFT1JZIE9G IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S VA0KKyAqICAgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB TlkgV0FZIE9VVCBPRiBUSEUgVVNFDQorICogICBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KKyAqLw0KKw0KKyNpZm5k ZWYgX1JURV9DUllQVE9fQVNZTV9IXw0KKyNkZWZpbmUgX1JURV9DUllQVE9fQVNZTV9IXw0KKw0K Ky8qKg0KKyAqIEBmaWxlIHJ0ZV9jcnlwdG9fYXN5bS5oDQorICoNCisgKiBSVEUgRGVmaW5pdGlv bnMgZm9yIEFzeW1tZXRyaWMgQ3J5cHRvZ3JhcGh5DQorICoNCisgKiBEZWZpbmVzIGFzeW1tZXRy aWMgYWxnb3JpdGhtcyBhbmQgbW9kZXMsIGFzIHdlbGwgYXMgc3VwcG9ydGVkDQorICogYXN5bW1l dHJpYyBjcnlwdG8gb3BlcmF0aW9ucy4NCisgKi8NCisNCisjaWZkZWYgX19jcGx1c3BsdXMNCitl eHRlcm4gIkMiIHsNCisjZW5kaWYNCisNCisjaW5jbHVkZSA8c3RyaW5nLmg+DQorI2luY2x1ZGUg PHN0ZGludC5oPg0KKyNpbmNsdWRlIDxydGVfbWJ1Zi5oPg0KKyNpbmNsdWRlIDxydGVfbWVtb3J5 Lmg+DQorI2luY2x1ZGUgPHJ0ZV9tZW1wb29sLmg+DQorI2luY2x1ZGUgPHJ0ZV9jb21tb24uaD4N CisNCit0eXBlZGVmIHN0cnVjdCBydGVfY3J5cHRvX3hmb3JtX3BhcmFtX3Qgew0KKwl1aW50OF90 ICpkYXRhOw0KKwlwaHlzX2FkZHJfdCBwaHlzX2FkZHI7DQorCXNpemVfdCBsZW5ndGg7DQorfSBy dGVfY3J5cHRvX3hmb3JtX3BhcmFtOw0KKw0KK3R5cGVkZWYgc3RydWN0IHJ0ZV9jcnlwdG9fb3Bf cGFyYW1fdCB7DQorCXVpbnQ4X3QgKmRhdGE7DQorCXBoeXNfYWRkcl90IHBoeXNfYWRkcjsNCisJ c2l6ZV90IGxlbmd0aDsNCit9IHJ0ZV9jcnlwdG9fb3BfcGFyYW07DQorDQorLyoqDQorICogQXN5 bW1ldHJpYyBjcnlwdG8gdHJhbnNmb3JtYXRpb24gdHlwZXMuDQorICogRWFjaCB4Zm9ybSB0eXBl IG1hcHMgdG8gb25lIGFzeW1tZXRyaWMgYWxnb3JpdGhtDQorICogcGVyZm9ybWluZyBzcGVjaWZp YyBvcGVyYXRpb24NCisgKg0KKyAqLw0KK2VudW0gcnRlX2NyeXB0b19hc3ltX3hmb3JtX3R5cGUg ew0KKwlSVEVfQ1JZUFRPX0FTWU1fWEZPUk1fTk9ORSA9IDAsDQorCS8qKjwgWGZvcm0gdHlwZSBO b25lLiBNYXkgYmUgc3VwcG9ydGVkIGJ5DQorCSAqIFBNRCB0byBzdXBwb3J0IHBhc3N0aHJvdWdo IG9wIGZvciBkZWJ1Z2dpbmcNCisJICogcHVycG9zZS4NCisJICogaWYgeGZvcm1fdHlwZSBub25l ICwgb3BfdHlwZSBpcyBkaXNyZWdhcmRlZC4NCisJICovDQorCVJURV9DUllQVE9fQVNZTV9YRk9S TV9SU0EsDQorCS8qKjwgUlNBLiBQZXJmb3JtcyBFbmNyeXB0LCBEZWNyeXB0LCBTaWduIGFuZCBW ZXJpZnkNCisJICogUmVmZXIgdG8gcnRlX2NyeXB0b19hc3ltX29wX3R5cGUNCisJICovDQorCVJU RV9DUllQVE9fQVNZTV9YRk9STV9NT0RFWCwNCisJLyoqPCBNb2R1bGFyIEV4cG9uZW50aWF0aW9u DQorCSAqIFJlZmVyIHRvIHJ0ZV9jcnlwdG9fYXN5bV9vcF90eXBlDQorCSAqLw0KKwlSVEVfQ1JZ UFRPX0FTWU1fWEZPUk1fREgsDQorCS8qKjwgRGVmZmllLUhlbGxtYW4uIFBlcmZvcm0gS2V5IEdl bmVyYXRlLCBLZXkgQ29tcHV0ZQ0KKwkgKiBSZWZlciB0byBydGVfY3J5cHRvX2FzeW1fb3BfdHlw ZQ0KKwkgKi8NCisJUlRFX0NSWVBUT19BU1lNX1hGT1JNX0VDREgsDQorCS8qKjwgRWxsaXB0aWMg Q3VydmUgRGVmZmllLUhlbGxtYW4uDQorCSAqIFBlcmZvcm0gS2V5IEdlbmVhcmF0ZSwgS2V5IENo ZWNrIGFuZCBLZXkgQ29tcHV0ZQ0KKwkgKiBSZWZlciB0byBydGVfY3J5cHRvX2FzeW1fb3BfdHlw ZQ0KKwkgKi8NCisJUlRFX0NSWVBUT19BU1lNX1hGT1JNX0RTQSwNCisJLyoqPCBEaWdpdGFsIFNp Z25hdHVyZSBBbGdvcml0aG0NCisJICogUGVyZm9ybXMgU2lnbmF0dXJlIHZlcmlmaWNhdGlvbiBh bmQgR2VuZXJhdGlvbg0KKwkgKiBSZWZlciB0byBydGVfY3J5cHRvX2FzeW1fb3BfdHlwZQ0KKwkg Ki8NCisJUlRFX0NSWVBUT19BU1lNX1hGT1JNX0VDRFNBLA0KKwkvKio8IEVsbGlwdGljIEN1cnZl IERpZ2l0YWwgU2lnbmF0dXJlIEFsZ29yaXRobS4NCisJICogUGVyZm9ybXMgU2lnbmF0dXJlIEdl bmVyYXRpb24sIGFuZCBWZXJpZmljYXRpb24uDQorCSAqIFJlZmVyIHRvIHJ0ZV9jcnlwdG9fYXN5 bV9vcF90eXBlDQorCSAqLw0KKwlSVEVfQ1JZUFRPX0FTWU1fWEZPUk1fRkVDQywNCisJLyoqPCBG dW5kYW1lbnRhbCBFbGxpcHRpYyBjdXJ2ZSBvcGVyYXRpb25zLg0KKwkgKiBQZXJmb3JtIGVsbGlw dGljIGN1cnZlIG9wZXJhdGlvbjoNCisJICogYWRkLCBkb3VibGUgcG9pbnQsIG11bHRpcGxpY2F0 aW9uDQorCSAqIFJlZmVyIHRvIGVudW0gcnRlX2NyeXB0b19mZWNjX29wdHlwZQ0KKwkgKi8NCisJ UlRFX0NSWVBUT19BU1lNX1hGT1JNX01PRElOViwNCisJLyoqPCBNb2R1bGFyIEludmVyc2UgKi8N CisJUlRFX0NSWVBUT19BU1lNX1hGT1JNX1RZUEVfTElTVF9FTkQNCisJLyoqPCBFbmQgb2YgbGlz dCAqLw0KK307DQorDQorLyoqDQorICogQXN5bW1ldHJpYyBjcnlwdG9nciBvcGVyYXRpb24gdHlw ZSB2YXJpYW50cw0KKyAqLw0KK2VudW0gcnRlX2NyeXB0b19hc3ltX29wX3R5cGUgew0KKwlSVEVf Q1JZUFRPX0FTWU1fT1BfTk9UX1NQRUNJRklFRCA9IDEsDQorCS8qKjwgT3BlcmF0aW9uIHVuc3Bl Y2lmaWVkICovDQorCVJURV9DUllQVE9fQVNZTV9PUF9FTkNSWVBULA0KKwkvKio8IEFzeW1tZXRy aWMgZW5jcnlwdCBvcGVyYXRpb24gKi8NCisJUlRFX0NSWVBUT19BU1lNX09QX0RFQ1JZUFQsDQor CS8qKjwgQXN5bW1ldHJpYyBEZWNyeXB0IG9wZXJhdGlvbiAqLw0KKwlSVEVfQ1JZUFRPX0FTWU1f T1BfU0lHTiwNCisJLyoqPCBTaWduYXR1cmUgZ2VuZXJhdGlvbiBvcGVyYXRpb24gKi8NCisJUlRF X0NSWVBUT19BU1lNX09QX1ZFUklGWSwNCisJLyoqPCBTaWduYXR1cmUgdmVyaWZpY2F0aW9uIG9w ZXJhdGlvbiAqLw0KKwlSVEVfQ1JZUFRPX0FTWU1fT1BfS0VZX1BBSVJfR0VORVJBVElPTiwNCisJ LyoqPCBQdWJsaWMvUHJpdmF0ZSBrZXkgcGFpciBnZW5lcmF0aW9uIG9wZXJhdGlvbiAqLw0KKwlS VEVfQ1JZUFRPX0FTWU1fT1BfU0hBUkVEX0tFWV9DT01QVVRBVElPTiwNCisJLyoqPCBESCBwcml2 YXRlIGtleSBjb21wdXRhdGlvbiBvcGVyYXRpb24gKi8NCisJUlRFX0NSWVBUT19BU1lNX09QX0VD REhfT1BfS0VZX0NIRUNLLA0KKwkvKio8IEVDREggcHVibGljIGtleSB2YWxpZGl0eSBjaGVjayBv cGVyYXRpb24gKi8NCisJUlRFX0NSWVBUT19BU1lNX09QX0xJU1RfRU5EDQorfTsNCisNCisvKioN CisgKiBQYWRkaW5nIHR5cGVzIGZvciBSU0Egc2lnbmF0dXJlLg0KKyAqLw0KK2VudW0gcnRlX2Ny eXB0b19yc2FfcGFkZGluZ190eXBlIHsNCisJUlRFX0NSWVBUT19SU0FfUEFERElOR19OT1RfU1BF Q0lGSUVEID0gMSwNCisJLyoqPCBSU0Egbm8gcGFkZGluZyBzY2hlbWUgKi8NCisJUlRFX0NSWVBU T19SU0FfUEFERElOR19CVDEsDQorCS8qKjwgUlNBIFBLQ1MjMSBwYWRkaW5nIEJUMSBzY2hlbWUg Ki8NCisJUlRFX0NSWVBUT19SU0FfUEFERElOR19CVDIsDQorCS8qKjwgUlNBIFBLQ1MjMSBwYWRk aW5nIEJUMiBzY2hlbWUgKi8NCisJUlRFX0NSWVBUT19SU0FfUEFERElOR19PQUVQLA0KKwkvKio8 IFJTQSBQS0NTIzEgT0FFUCBwYWRkaW5nIHNjaGVtZSAqLw0KKwlSVEVfQ1JZUFRPX1JTQV9QQURE SU5HX1BTUywNCisJLyoqPCBSU0EgUEtDUyMxIFBTUyBwYWRkaW5nIHNjaGVtZSAqLw0KKwlSVEVf Q1JZUFRPX1JTQV9QQURESU5HX1RZUEVfTElTVF9FTkQNCit9Ow0KKw0KKw0KKy8qKg0KKyAqIEZ1 bmRhbWVudGFsIEVDQyBvcGVyYXRpb24gdHlwZSB2YXJpYW50cy4NCisgKi8NCitlbnVtIHJ0ZV9j cnlwdG9fZmVjY19vcHR5cGUgew0KKwlSVEVfQ1JZUFRPX0ZFQ0NfT1BfTk9UX1NQRUNJRklFRCA9 IDEsDQorCS8qKjwgRkVDQyBvcGVyYXRpb24gdHlwZSB1bnNwZWNpZmllZCAqLw0KKwlSVEVfQ1JZ UFRPX0ZFQ0NfT1BfUE9JTlRfQURELA0KKwkvKio8IEZ1bmRhbWVudGFsIEVDQyBwb2ludCBhZGRp dGlvbiBvcGVyYXRpb24gKi8NCisJUlRFX0NSWVBUT19GRUNDX09QX1BPSU5UX0RCTCwNCisJLyoq PCBGdW5kYW1lbnRhbCBFQ0MgcG9pbnQgZG91Ymxpbmcgb3BlcmF0aW9uICovDQorCVJURV9DUllQ VE9fRkVDQ19PUF9QT0lOVF9NVUxUSVBMWSwNCisJLyoqPCBGdW5kYW1lbnRhbCBFQ0MgcG9pbnQg bXVsdGlwbGljYXRpb24gb3BlcmF0aW9uICovDQorCVJURV9DUllQVE9fRkVDQ19PUF9MSVNUX0VO RA0KK307DQorDQorI2RlZmluZSBSVEVfQ1JZUFRPX0VDX0NVUlZFX05PVF9TUEVDSUZJRUQgIC0x DQorLyoqDQorICogRUNDIGxpc3Qgb2YgY3VydmVzLg0KKyAqLw0KK2VudW0gcnRlX2NyeXB0b19l Y19wcmltZV9jdXJ2ZSB7DQorCS8qKjwgVW5zcGVjaWZpZWQgb3IgZW1wdHkgY3VydmUgaWQgKi8N CisJUlRFX0NSWVBUT19FQ19DVVJWRV9zZWNwMTEycjEsDQorCS8qKjwgU0VDRy9XVExTIGN1cnZl IG92ZXIgYSAxMTIgYml0IHByaW1lIGZpZWxkICovDQorCVJURV9DUllQVE9fRUNfQ1VSVkVfc2Vj cDExMnIyLA0KKwkvKio8IFNFQ0cgY3VydmUgb3ZlciBhIDExMiBiaXQgcHJpbWUgZmllbGQgKi8N CisJUlRFX0NSWVBUT19FQ19DVVJWRV9zZWNwMTI4cjEsDQorCS8qKjwgU0VDRyBjdXJ2ZSBvdmVy IGEgMTI4IGJpdCBwcmltZSBmaWVsZCAqLw0KKwlSVEVfQ1JZUFRPX0VDX0NVUlZFX3NlY3AxMjhy MiwNCisJLyoqPCBTRUNHIGN1cnZlIG92ZXIgYSAxMjggYml0IHByaW1lIGZpZWxkICovDQorCVJU RV9DUllQVE9fRUNfQ1VSVkVfc2VjcDE2MGsxLA0KKwkvKio8IFNFQ0cgY3VydmUgb3ZlciBhIDE2 MCBiaXQgcHJpbWUgZmllbGQgKi8NCisJUlRFX0NSWVBUT19FQ19DVVJWRV9zZWNwMTYwcjEsDQor CS8qKjwgU0VDRyBjdXJ2ZSBvdmVyIGEgMTYwIGJpdCBwcmltZSBmaWVsZCAqLw0KKwlSVEVfQ1JZ UFRPX0VDX0NVUlZFX3NlY3AxNjByMiwNCisJLyoqPCBTRUNHL1dUTFMgY3VydmUgb3ZlciBhIDE2 MCBiaXQgcHJpbWUgZmllbGQgKi8NCisJUlRFX0NSWVBUT19FQ19DVVJWRV9zZWNwMTkyazEsDQor CS8qKjwgU0VDRyBjdXJ2ZSBvdmVyIGEgMTkyIGJpdCBwcmltZSBmaWVsZCAqLw0KKwlSVEVfQ1JZ UFRPX0VDX0NVUlZFX3NlY3AyMjRrMSwNCisJLyoqPCBTRUNHIGN1cnZlIG92ZXIgYSAyMjQgYml0 IHByaW1lIGZpZWxkICovDQorCVJURV9DUllQVE9fRUNfQ1VSVkVfc2VjcDIyNHIxLA0KKwkvKio8 IE5JU1QvU0VDRyBjdXJ2ZSBvdmVyIGEgMjI0IGJpdCBwcmltZSBmaWVsZCAqLw0KKwlSVEVfQ1JZ UFRPX0VDX0NVUlZFX3NlY3AyNTZrMSwNCisJLyoqPCBTRUNHIGN1cnZlIG92ZXIgYSAyNTYgYml0 IHByaW1lIGZpZWxkICovDQorCVJURV9DUllQVE9fRUNfQ1VSVkVfc2VjcDM4NHIxLA0KKwkvKio8 IE5JU1QvU0VDRyBjdXJ2ZSBvdmVyIGEgMzg0IGJpdCBwcmltZSBmaWVsZCAqLw0KKwlSVEVfQ1JZ UFRPX0VDX0NVUlZFX3NlY3A1MjFyMSwNCisJLyoqPCBOSVNUL1NFQ0cgY3VydmUgb3ZlciBhIDUy MSBiaXQgcHJpbWUgZmllbGQgKi8NCisJUlRFX0NSWVBUT19FQ19DVVJWRV9wcmltZTE5MnYxLA0K KwkvKio8IE5JU1QvWDkuNjIvU0VDRyBjdXJ2ZSBvdmVyIGEgMTkyIGJpdCBwcmltZSBmaWVsZCAq Lw0KKwlSVEVfQ1JZUFRPX0VDX0NVUlZFX3ByaW1lMTkydjIsDQorCS8qKjwgWDkuNjIgY3VydmUg b3ZlciBhIDE5MiBiaXQgcHJpbWUgZmllbGQgKi8NCisJUlRFX0NSWVBUT19FQ19DVVJWRV9wcmlt ZTE5MnYzLA0KKwkvKio8IFg5LjYyIGN1cnZlIG92ZXIgYSAxOTIgYml0IHByaW1lIGZpZWxkICov DQorCVJURV9DUllQVE9fRUNfQ1VSVkVfcHJpbWUyMzl2MSwNCisJLyoqPCBYOS42MiBjdXJ2ZSBv dmVyIGEgMjM5IGJpdCBwcmltZSBmaWVsZCAqLw0KKwlSVEVfQ1JZUFRPX0VDX0NVUlZFX3ByaW1l MjM5djIsDQorCS8qKjwgWDkuNjIgY3VydmUgb3ZlciBhIDIzOSBiaXQgcHJpbWUgZmllbGQgKi8N CisJUlRFX0NSWVBUT19FQ19DVVJWRV9wcmltZTIzOXYzLA0KKwkvKio8IFg5LjYyIGN1cnZlIG92 ZXIgYSAyMzkgYml0IHByaW1lIGZpZWxkICovDQorCVJURV9DUllQVE9fRUNfQ1VSVkVfcHJpbWUy NTZ2MSwNCisJLyoqPCBYOS42Mi9TRUNHIGN1cnZlIG92ZXIgYSAyNTYgYml0IHByaW1lIGZpZWxk ICovDQorCVJURV9DUllQVE9fRUNfQ1VSVkVfd2FwX3dzZ19pZG1fZWNpZF93dGxzNiwNCisJLyoq PCBTRUNHL1dUTFMgY3VydmUgb3ZlciBhIDExMiBiaXQgcHJpbWUgZmllbGQgKi8NCisJUlRFX0NS WVBUT19FQ19DVVJWRV93YXBfd3NnX2lkbV9lY2lkX3d0bHM3LA0KKwkvKio8IFNFQ0cvV1RMUyBj dXJ2ZSBvdmVyIGEgMTYwIGJpdCBwcmltZSBmaWVsZCAqLw0KKwlSVEVfQ1JZUFRPX0VDX0NVUlZF X3dhcF93c2dfaWRtX2VjaWRfd3RsczgsDQorCS8qKjwgV1RMUyBjdXJ2ZSBvdmVyIGEgMTEyIGJp dCBwcmltZSBmaWVsZCAqLw0KKwlSVEVfQ1JZUFRPX0VDX0NVUlZFX3dhcF93c2dfaWRtX2VjaWRf d3RsczksDQorCS8qKjwgV1RMUyBjdXJ2ZSBvdmVyIGEgMTYwIGJpdCBwcmltZSBmaWVsZCAqLw0K KwlSVEVfQ1JZUFRPX0VDX0NVUlZFX3dhcF93c2dfaWRtX2VjaWRfd3RsczEyLA0KKwkvKio8IFdU TFMgY3VydmUgb3ZlciBhIDIyNCBiaXQgcHJpbWUgZmllbGQgKi8NCisJUlRFX0NSWVBUT19FQ19D VVJWRV9icmFpbnBvb2xQMTYwcjEsDQorCS8qKjwgUkZDIDU2MzkgY3VydmUgb3ZlciBhIDE2MCBi aXQgcHJpbWUgZmllbGQgKi8NCisJUlRFX0NSWVBUT19FQ19DVVJWRV9icmFpbnBvb2xQMTYwdDEs DQorCS8qKjwgUkZDIDU2MzkgY3VydmUgb3ZlciBhIDE2MCBiaXQgcHJpbWUgZmllbGQgKi8NCisJ UlRFX0NSWVBUT19FQ19DVVJWRV9icmFpbnBvb2xQMTkycjEsDQorCS8qKjwgUkZDIDU2MzkgY3Vy dmUgb3ZlciBhIDE5MiBiaXQgcHJpbWUgZmllbGQgKi8NCisJUlRFX0NSWVBUT19FQ19DVVJWRV9i cmFpbnBvb2xQMTkydDEsDQorCS8qKjwgUkZDIDU2MzkgY3VydmUgb3ZlciBhIDE5MiBiaXQgcHJp bWUgZmllbGQgKi8NCisJUlRFX0NSWVBUT19FQ19DVVJWRV9icmFpbnBvb2xQMjI0cjEsDQorCS8q KjwgUkZDIDU2MzkgY3VydmUgb3ZlciBhIDIyNCBiaXQgcHJpbWUgZmllbGQgKi8NCisJUlRFX0NS WVBUT19FQ19DVVJWRV9icmFpbnBvb2xQMjI0dDEsDQorCS8qKjwgUkZDIDU2MzkgY3VydmUgb3Zl ciBhIDIyNCBiaXQgcHJpbWUgZmllbGQgKi8NCisJUlRFX0NSWVBUT19FQ19DVVJWRV9icmFpbnBv b2xQMjU2cjEsDQorCS8qKjwgUkZDIDU2MzkgY3VydmUgb3ZlciBhIDI1NiBiaXQgcHJpbWUgZmll bGQgKi8NCisJUlRFX0NSWVBUT19FQ19DVVJWRV9icmFpbnBvb2xQMjU2dDEsDQorCS8qKjwgUkZD IDU2MzkgY3VydmUgb3ZlciBhIDI1NiBiaXQgcHJpbWUgZmllbGQgKi8NCisJUlRFX0NSWVBUT19F Q19DVVJWRV9icmFpbnBvb2xQMzIwcjEsDQorCS8qKjwgUkZDIDU2MzkgY3VydmUgb3ZlciBhIDMy MCBiaXQgcHJpbWUgZmllbGQgKi8NCisJUlRFX0NSWVBUT19FQ19DVVJWRV9icmFpbnBvb2xQMzIw dDEsDQorCS8qKjwgUkZDIDU2MzkgY3VydmUgb3ZlciBhIDMyMCBiaXQgcHJpbWUgZmllbGQgKi8N CisJUlRFX0NSWVBUT19FQ19DVVJWRV9icmFpbnBvb2xQMzg0cjEsDQorCS8qKjwgUkZDIDU2Mzkg Y3VydmUgb3ZlciBhIDM4NCBiaXQgcHJpbWUgZmllbGQgKi8NCisJUlRFX0NSWVBUT19FQ19DVVJW RV9icmFpbnBvb2xQMzg0dDEsDQorCS8qKjwgUkZDIDU2MzkgY3VydmUgb3ZlciBhIDM4NCBiaXQg cHJpbWUgZmllbGQgKi8NCisJUlRFX0NSWVBUT19FQ19DVVJWRV9icmFpbnBvb2xQNTEycjEsDQor CS8qKjwgUkZDIDU2MzkgY3VydmUgb3ZlciBhIDUxMiBiaXQgcHJpbWUgZmllbGQgKi8NCisJUlRF X0NSWVBUT19FQ19DVVJWRV9icmFpbnBvb2xQNTEydDEsDQorCS8qKjwgUkZDIDU2MzkgY3VydmUg b3ZlciBhIDUxMiBiaXQgcHJpbWUgZmllbGQgKi8NCisJUlRFX0NSWVBUT19FQ19DVVJWRV94MjU1 MTksDQorCS8qKjwgQ3VydmUgMjU1MTkgKi8NCisJUlRFX0NSWVBUT19FQ19QQ1VSVkVfTElTVF9F TkQNCit9Ow0KKw0KK2VudW0gcnRlX2NyeXB0b19lY19iaW5hcnlfY3VydmUgew0KKwkvKio8IFVu c3BlY2lmaWVkIG9yIGVtcHR5IGN1cnZlIGlkICovDQorCVJURV9DUllQVE9fRUNfQ1VSVkVfc2Vj dDExM3IxLA0KKwkvKio8IFNFQ0cgY3VydmUgb3ZlciBhIDExMyBiaXQgYmluYXJ5IGZpZWxkICov DQorCVJURV9DUllQVE9fRUNfQ1VSVkVfc2VjdDExM3IyLA0KKwkvKio8IFNFQ0cgY3VydmUgb3Zl ciBhIDExMyBiaXQgYmluYXJ5IGZpZWxkICovDQorCVJURV9DUllQVE9fRUNfQ1VSVkVfc2VjdDEz MXIxLA0KKwkvKio8IFNFQ0cvV1RMUyBjdXJ2ZSBvdmVyIGEgMTMxIGJpdCBiaW5hcnkgZmllbGQg Ki8NCisJUlRFX0NSWVBUT19FQ19DVVJWRV9zZWN0MTMxcjIsDQorCS8qKjwgU0VDRyBjdXJ2ZSBv dmVyIGEgMTMxIGJpdCBiaW5hcnkgZmllbGQgKi8NCisJUlRFX0NSWVBUT19FQ19DVVJWRV9zZWN0 MTYzazEsDQorCS8qKjwgTklTVC9TRUNHL1dUTFMgY3VydmUgb3ZlciBhIDE2MyBiaXQgYmluYXJ5 IGZpZWxkICovDQorCVJURV9DUllQVE9fRUNfQ1VSVkVfc2VjdDE2M3IxLA0KKwkvKio8IFNFQ0cg Y3VydmUgb3ZlciBhIDE2MyBiaXQgYmluYXJ5IGZpZWxkICovDQorCVJURV9DUllQVE9fRUNfQ1VS VkVfc2VjdDE2M3IyLA0KKwkvKio8IE5JU1QvU0VDRyBjdXJ2ZSBvdmVyIGEgMTYzIGJpdCBiaW5h cnkgZmllbGQgKi8NCisJUlRFX0NSWVBUT19FQ19DVVJWRV9zZWN0MTkzcjEsDQorCS8qKjwgU0VD RyBjdXJ2ZSBvdmVyIGEgMTkzIGJpdCBiaW5hcnkgZmllbGQgKi8NCisJUlRFX0NSWVBUT19FQ19D VVJWRV9zZWN0MTkzcjIsDQorCS8qKjwgU0VDRyBjdXJ2ZSBvdmVyIGEgMTkzIGJpdCBiaW5hcnkg ZmllbGQgKi8NCisJUlRFX0NSWVBUT19FQ19DVVJWRV9zZWN0MjMzazEsDQorCS8qKjwgTklTVC9T RUNHL1dUTFMgY3VydmUgb3ZlciBhIDIzMyBiaXQgYmluYXJ5IGZpZWxkICovDQorCVJURV9DUllQ VE9fRUNfQ1VSVkVfc2VjdDIzM3IxLA0KKwkvKio8IE5JU1QvU0VDRy9XVExTIGN1cnZlIG92ZXIg YSAyMzMgYml0IGJpbmFyeSBmaWVsZCAqLw0KKwlSVEVfQ1JZUFRPX0VDX0NVUlZFX3NlY3QyMzlr MSwNCisJLyoqPCBTRUNHIGN1cnZlIG92ZXIgYSAyMzkgYml0IGJpbmFyeSBmaWVsZCAqLw0KKwlS VEVfQ1JZUFRPX0VDX0NVUlZFX3NlY3QyODNrMSwNCisJLyoqPCBOSVNUL1NFQ0cgY3VydmUgb3Zl ciBhIDI4MyBiaXQgYmluYXJ5IGZpZWxkICovDQorCVJURV9DUllQVE9fRUNfQ1VSVkVfc2VjdDI4 M3IxLA0KKwkvKio8IE5JU1QvU0VDRyBjdXJ2ZSBvdmVyIGEgMjgzIGJpdCBiaW5hcnkgZmllbGQg Ki8NCisJUlRFX0NSWVBUT19FQ19DVVJWRV9zZWN0NDA5azEsDQorCS8qKjwgTklTVC9TRUNHIGN1 cnZlIG92ZXIgYSA0MDkgYml0IGJpbmFyeSBmaWVsZCAqLw0KKwlSVEVfQ1JZUFRPX0VDX0NVUlZF X3NlY3Q0MDlyMSwNCisJLyoqPCBOSVNUL1NFQ0cgY3VydmUgb3ZlciBhIDQwOSBiaXQgYmluYXJ5 IGZpZWxkICovDQorCVJURV9DUllQVE9fRUNfQ1VSVkVfc2VjdDU3MWsxLA0KKwkvKio8IE5JU1Qv U0VDRyBjdXJ2ZSBvdmVyIGEgNTcxIGJpdCBiaW5hcnkgZmllbGQgKi8NCisJUlRFX0NSWVBUT19F Q19DVVJWRV9zZWN0NTcxcjEsDQorCS8qKjwgTklTVC9TRUNHIGN1cnZlIG92ZXIgYSA1NzEgYml0 IGJpbmFyeSBmaWVsZCAqLw0KKwlSVEVfQ1JZUFRPX0VDX0NVUlZFX2MycG5iMTYzdjEsDQorCS8q KjwgWDkuNjIgY3VydmUgb3ZlciBhIDE2MyBiaXQgYmluYXJ5IGZpZWxkICovDQorCVJURV9DUllQ VE9fRUNfQ1VSVkVfYzJwbmIxNjN2MiwNCisJLyoqPCBYOS42MiBjdXJ2ZSBvdmVyIGEgMTYzIGJp dCBiaW5hcnkgZmllbGQgKi8NCisJUlRFX0NSWVBUT19FQ19DVVJWRV9jMnBuYjE2M3YzLA0KKwkv Kio8IFg5LjYyIGN1cnZlIG92ZXIgYSAxNjMgYml0IGJpbmFyeSBmaWVsZCAqLw0KKwlSVEVfQ1JZ UFRPX0VDX0NVUlZFX2MycG5iMTc2djEsDQorCS8qKjwgWDkuNjIgY3VydmUgb3ZlciBhIDE3NiBi aXQgYmluYXJ5IGZpZWxkICovDQorCVJURV9DUllQVE9fRUNfQ1VSVkVfYzJ0bmIxOTF2MSwNCisJ LyoqPCBYOS42MiBjdXJ2ZSBvdmVyIGEgMTkxIGJpdCBiaW5hcnkgZmllbGQgKi8NCisJUlRFX0NS WVBUT19FQ19DVVJWRV9jMnRuYjE5MXYyLA0KKwkvKio8IFg5LjYyIGN1cnZlIG92ZXIgYSAxOTEg Yml0IGJpbmFyeSBmaWVsZCAqLw0KKwlSVEVfQ1JZUFRPX0VDX0NVUlZFX2MydG5iMTkxdjMsDQor CS8qKjwgWDkuNjIgY3VydmUgb3ZlciBhIDE5MSBiaXQgYmluYXJ5IGZpZWxkICovDQorCVJURV9D UllQVE9fRUNfQ1VSVkVfYzJwbmIyMDh3MSwNCisJLyoqPCBYOS42MiBjdXJ2ZSBvdmVyIGEgMjA4 IGJpdCBiaW5hcnkgZmllbGQgKi8NCisJUlRFX0NSWVBUT19FQ19DVVJWRV9jMnRuYjIzOXYxLA0K KwkvKio8IFg5LjYyIGN1cnZlIG92ZXIgYSAyMzkgYml0IGJpbmFyeSBmaWVsZCAqLw0KKwlSVEVf Q1JZUFRPX0VDX0NVUlZFX2MydG5iMjM5djIsDQorCS8qKjwgWDkuNjIgY3VydmUgb3ZlciBhIDIz OSBiaXQgYmluYXJ5IGZpZWxkICovDQorCVJURV9DUllQVE9fRUNfQ1VSVkVfYzJ0bmIyMzl2MywN CisJLyoqPCBYOS42MiBjdXJ2ZSBvdmVyIGEgMjM5IGJpdCBiaW5hcnkgZmllbGQgKi8NCisJUlRF X0NSWVBUT19FQ19DVVJWRV9jMnBuYjI3MncxLA0KKwkvKio8IFg5LjYyIGN1cnZlIG92ZXIgYSAy NzIgYml0IGJpbmFyeSBmaWVsZCAqLw0KKwlSVEVfQ1JZUFRPX0VDX0NVUlZFX2MycG5iMzA0dzEs DQorCS8qKjwgWDkuNjIgY3VydmUgb3ZlciBhIDMwNCBiaXQgYmluYXJ5IGZpZWxkICovDQorCVJU RV9DUllQVE9fRUNfQ1VSVkVfYzJ0bmIzNTl2MSwNCisJLyoqPCBYOS42MiBjdXJ2ZSBvdmVyIGEg MzU5IGJpdCBiaW5hcnkgZmllbGQgKi8NCisJUlRFX0NSWVBUT19FQ19DVVJWRV9jMnBuYjM2OHcx LA0KKwkvKio8IFg5LjYyIGN1cnZlIG92ZXIgYSAzNjggYml0IGJpbmFyeSBmaWVsZCAqLw0KKwlS VEVfQ1JZUFRPX0VDX0NVUlZFX2MydG5iNDMxcjEsDQorCS8qKjwgWDkuNjIgY3VydmUgb3ZlciBh IDQzMSBiaXQgYmluYXJ5IGZpZWxkICovDQorCVJURV9DUllQVE9fRUNfQ1VSVkVfd2FwX3dzZ19p ZG1fZWNpZF93dGxzMSwNCisJLyoqPCBXVExTIGN1cnZlIG92ZXIgYSAxMTMgYml0IGJpbmFyeSBm aWVsZCAqLw0KKwlSVEVfQ1JZUFRPX0VDX0NVUlZFX3dhcF93c2dfaWRtX2VjaWRfd3RsczMsDQor CS8qKjwgTklTVC9TRUNHL1dUTFMgY3VydmUgb3ZlciBhIDE2MyBiaXQgYmluYXJ5IGZpZWxkICov DQorCVJURV9DUllQVE9fRUNfQ1VSVkVfd2FwX3dzZ19pZG1fZWNpZF93dGxzNCwNCisJLyoqPCBT RUNHIGN1cnZlIG92ZXIgYSAxMTMgYml0IGJpbmFyeSBmaWVsZCAqLw0KKwlSVEVfQ1JZUFRPX0VD X0NVUlZFX3dhcF93c2dfaWRtX2VjaWRfd3RsczUsDQorCS8qKjwgWDkuNjIgY3VydmUgb3ZlciBh IDE2MyBiaXQgYmluYXJ5IGZpZWxkICovDQorCVJURV9DUllQVE9fRUNfQ1VSVkVfd2FwX3dzZ19p ZG1fZWNpZF93dGxzMTAsDQorCS8qKjwgTklTVC9TRUNHL1dUTFMgY3VydmUgb3ZlciBhIDIzMyBi aXQgYmluYXJ5IGZpZWxkICovDQorCVJURV9DUllQVE9fRUNfQ1VSVkVfd2FwX3dzZ19pZG1fZWNp ZF93dGxzMTEsDQorCS8qKjwgTklTVC9TRUNHL1dUTFMgY3VydmUgb3ZlciBhIDIzMyBiaXQgYmlu YXJ5IGZpZWxkICovDQorCVJURV9DUllQVE9fRUNfQkNVUlZFX0xJU1RfRU5EDQorfTsNCisNCisv KioNCisgKiBFbGxpcHRpYyBjdXJ2ZSBwb2ludCBmb3JtYXQNCisgKi8NCitzdHJ1Y3QgcnRlX2Ny eXB0b19lY19wb2ludCB7DQorCXN0cnVjdCB7DQorCQlpbnQgbGVuZ3RoOw0KKwkJdWludDhfdCAq ZGF0YTsNCisJCXBoeXNfYWRkcl90IHBoeXNfYWRkcjsNCisJCS8qKjwgcGh5c19hZGRyIGlzIHVz ZWQgb25seSBmb3IgcG9pbnRzIHBhc3NlZCBpbiB0aGUNCisJCSAqIGFzeW1fb3Agc3RydWN0dXJl Lg0KKwkJICovDQorCX0geDsNCisJLyoqPCBYIGNvLW9yZGluYXRlICovDQorDQorCXN0cnVjdCB7 DQorCQlpbnQgbGVuZ3RoOw0KKwkJdWludDhfdCAqZGF0YTsNCisJCXBoeXNfYWRkcl90IHBoeXNf YWRkcjsNCisJCS8qKjwgcGh5c19hZGRyIGlzIHVzZWQgb25seSBmb3IgcG9pbnRzIHBhc3NlZCBp biB0aGUNCisJCSAqIG9wZXJhdGlvbiBzdHJ1Y3R1cmUNCisJCSAqLw0KKwl9IHk7DQorCS8qKjwg WSBjby1vcmRpbmF0ZSAqLw0KK307DQorDQorLyoqDQorICogRWxsaXB0aWMgY3VydmUgdHlwZQ0K KyAqLw0KK2VudW0gcnRlX2NyeXB0b19lY19jdXJ2ZV90eXBlIHsNCisJUlRFX0NSWVBUT19FQ19D VVJWRV9UWVBFX1VOREVGSU5FRCwNCisJLyoqPCBDdXJ2ZSB0eXBlIHVuZGVmaW5lZCAqLw0KKwlS VEVfQ1JZUFRPX0VDX0NVUlZFX1RZUEVfUFJJTUVfRklFTEQsDQorCS8qKjwgRUMgY3VydmUgZGVm aW5lZCBvdmVyIGEgcHJpbWUgZmllbGQgKi8NCisJUlRFX0NSWVBUT19FQ19DVVJWRV9UWVBFX0JJ TkFSWV9GSUVMRCwNCisJLyoqPCBFQyBjdXJ2ZSBkZWZpbmVkIG92ZXIgYSBiaW5hcnkgZmllbGQg Ki8NCisJUlRFX0NSWVBUT19FQ19DVVJWRV9MSVNUX0VORA0KK307DQorDQorLyoqIGFzeW0geGZv cm0gdHlwZSBuYW1lIHN0cmluZ3MgKi8NCitleHRlcm4gY29uc3QgY2hhciAqDQorcnRlX2NyeXB0 b19hc3ltX3hmb3JtX3N0cmluZ3NbXTsNCisNCisvKiogYXN5bSBvcGVyYXRpb25zIHR5cGUgbmFt ZSBzdHJpbmdzICovDQorZXh0ZXJuIGNvbnN0IGNoYXIgKg0KK3J0ZV9jcnlwdG9fYXN5bV9vcF9z dHJpbmdzW107DQorDQorLyoqDQorICogRWxsaXB0aWMgY3VydmUgaWQNCisgKi8NCitzdHJ1Y3Qg cnRlX2NyeXB0b19lY19jdXJ2ZV9pZCB7DQorCVJURV9TVERfQzExDQorCXVuaW9uIHsNCisJCWVu dW0gcnRlX2NyeXB0b19lY19wcmltZV9jdXJ2ZSBwY3VydmU7DQorCQllbnVtIHJ0ZV9jcnlwdG9f ZWNfYmluYXJ5X2N1cnZlIGJjdXJ2ZTsNCisJfTsNCit9Ow0KKw0KKy8qKg0KKyAqIEFzeW1tZXRy aWMgUlNBIHRyYW5zZm9ybSBkYXRhDQorICoNCisgKiBUaGlzIHN0cnVjdHVyZSBjb250YWlucyBk YXRhIHJlcXVpcmVkIHRvIHBlcmZvcm0gUlNBIGNyeXB0bw0KKyAqIHRyYW5zZm9ybS4NCisgKg0K KyAqLw0KK3N0cnVjdCBydGVfY3J5cHRvX3JzYV94Zm9ybSB7DQorDQorCXJ0ZV9jcnlwdG9feGZv cm1fcGFyYW0gbjsNCisJLyoqPCBuIC0gUHJpbWUgbW9kdWx1cw0KKwkgKiBQcmltZSBtb2R1bHVz IGRhdGEgb2YgUlNBIG9wZXJhdGlvbiBpbiBPY3RldC1zdHJpbmcgbmV0d29yaw0KKwkgKiBieXRl IG9yZGVyIGZvcm1hdC4NCisJICovDQorDQorCXJ0ZV9jcnlwdG9feGZvcm1fcGFyYW0gZTsNCisJ LyoqPCBlIC0gUHVibGljIGtleSBleHBvbmVudA0KKwkgKiBQdWJsaWMga2V5IGV4cG9uZW50IHVz ZWQgZm9yIFJTQSBwdWJsaWMga2V5IG9wZXJhdGlvbnMgaW4gT2N0ZXQtDQorCSAqIHN0cmluZyBu ZXR3b3JrIGJ5dGUgb3JkZXIgZm9ybWF0Lg0KKwkgKi8NCisNCisJcnRlX2NyeXB0b194Zm9ybV9w YXJhbSBkOw0KKwkvKio8IGQgLSBQcml2YXRlIGtleSBleHBvbmVudA0KKwkgKiBQcml2YXRlIGtl eSBleHBvbmVudCB1c2VkIGZvciBSU0EgcHJpdmF0ZSBrZXkgb3BlcmF0aW9ucyBpbg0KKwkgKiBP Y3RldC1zdHJpbmcgIG5ldHdvcmsgYnl0ZSBvcmRlciBmb3JtYXQuDQorCSAqLw0KKw0KKwlydGVf Y3J5cHRvX3hmb3JtX3BhcmFtIHA7DQorCS8qKjwgcCAtIFByaXZhdGUga2V5IGNvbXBvbmVudCBQ DQorCSAqIFByaXZhdGUga2V5IGNvbXBvbmVudCBvZiBSU0EgcGFyYW1ldGVyICByZXF1aXJlZCBm b3IgQ1JUIG1ldGhvZA0KKwkgKiBvZiBwcml2YXRlIGtleSBvcGVyYXRpb25zIGluIE9jdGV0LXN0 cmluZyBuZXR3b3JrIGJ5dGUgb3JkZXINCisJICogZm9ybWF0Lg0KKwkgKi8NCisNCisJcnRlX2Ny eXB0b194Zm9ybV9wYXJhbSBxOw0KKwkvKio8IHEgLSBQcml2YXRlIGtleSBjb21wb25lbnQgUQ0K KwkgKiBQcml2YXRlIGtleSBjb21wb25lbnQgb2YgUlNBIHBhcmFtZXRlciAgcmVxdWlyZWQgZm9y IENSVCBtZXRob2QNCisJICogb2YgcHJpdmF0ZSBrZXkgb3BlcmF0aW9ucyBpbiBPY3RldC1zdHJp bmcgbmV0d29yayBieXRlIG9yZGVyDQorCSAqIGZvcm1hdC4NCisJICovDQorDQorCXJ0ZV9jcnlw dG9feGZvcm1fcGFyYW0gZFA7DQorCS8qKjwgZFAgLSBQcml2YXRlIENSVCBjb21wb25lbnQNCisJ ICogUHJpdmF0ZSBDUlQgY29tcG9uZW50IG9mIFJTQSBwYXJhbWV0ZXIgIHJlcXVpcmVkIGZvciBD UlQgbWV0aG9kDQorCSAqIFJTQSBwcml2YXRlIGtleSBvcGVyYXRpb25zIGluIE9jdGV0LXN0cmlu ZyBuZXR3b3JrIGJ5dGUgb3JkZXINCisJICogZm9ybWF0Lg0KKwkgKiBkUCA9IGQgbW9kICggcCAt IDEgKQ0KKwkgKi8NCisNCisJcnRlX2NyeXB0b194Zm9ybV9wYXJhbSBkUTsNCisJLyoqPCBkUSAt IFByaXZhdGUgQ1JUIGNvbXBvbmVudA0KKwkgKiBQcml2YXRlIENSVCBjb21wb25lbnQgb2YgUlNB IHBhcmFtZXRlciAgcmVxdWlyZWQgZm9yIENSVCBtZXRob2QNCisJICogUlNBIHByaXZhdGUga2V5 IG9wZXJhdGlvbnMgaW4gT2N0ZXQtc3RyaW5nIG5ldHdvcmsgYnl0ZSBvcmRlcg0KKwkgKiBmb3Jt YXQuDQorCSAqIGRRID0gZCBtb2QgKCBxIC0gMSApDQorCSAqLw0KKw0KKwlydGVfY3J5cHRvX3hm b3JtX3BhcmFtIHFJbnY7DQorCS8qKjwgcUludiAtIFByaXZhdGUgQ1JUIGNvbXBvbmVudA0KKwkg KiBQcml2YXRlIENSVCBjb21wb25lbnQgb2YgUlNBIHBhcmFtZXRlciAgcmVxdWlyZWQgZm9yIENS VCBtZXRob2QNCisJICogUlNBIHByaXZhdGUga2V5IG9wZXJhdGlvbnMgaW4gT2N0ZXQtc3RyaW5n IG5ldHdvcmsgYnl0ZSBvcmRlcg0KKwkgKiBmb3JtYXQuDQorCSAqIHFJbnYgPSBpbnYgcSBtb2Qg cA0KKwkgKi8NCit9Ow0KKw0KKy8qKg0KKyAqIEFzeW1tZXRyaWMgTW9kdWxhciBleHBvbmVudGlh dGlvbiB0cmFuc2Zvcm0gZGF0YQ0KKyAqDQorICogVGhpcyBzdHJ1Y3R1cmUgY29udGFpbnMgZGF0 YSByZXF1aXJlZCB0byBwZXJmb3JtIG1vZHVsYXIgZXhwb25lbnRhdGlvbg0KKyAqIGNyeXB0byB0 cmFuc2Zvcm0uDQorICoNCisgKi8NCitzdHJ1Y3QgcnRlX2NyeXB0b19tb2RleF94Zm9ybSB7DQor DQorCXJ0ZV9jcnlwdG9feGZvcm1fcGFyYW0gbW9kdWx1czsNCisJLyoqPCBtb2R1bHVzDQorCSAq IFByaW1lIG1vZHVsdXMgb2YgdGhlIG1vZGV4cCB0cmFuc2Zvcm0gb3BlcmF0aW9uIGluIE9jdGV0 LXN0cmluZw0KKwkgKiBuZXR3b3JrIGJ5dGUgb3JkZXIgZm9ybWF0Lg0KKwkgKi8NCisNCisJcnRl X2NyeXB0b194Zm9ybV9wYXJhbSBleHBvbmVudDsNCisJLyoqPCBleHBvbmVudA0KKwkgKiBQcml2 YXRlIGV4cG9uZW50IG9mIHRoZSBtb2RleHAgdHJhbnNmb3JtIG9wZXJhdGlvbiBpbg0KKwkgKiBP Y3RldC1zdHJpbmcgbmV0d29yayBieXRlIG9yZGVyIGZvcm1hdC4NCisJICovDQorfTsNCisNCisv KioNCisgKiBBc3ltbWV0cmljIERIIHRyYW5zZm9ybSBkYXRhDQorICoNCisgKiBUaGlzIHN0cnVj dHVyZSBjb250YWlucyBkYXRhIHVzZWQgdG8gcGVyZm9ybSBESCBrZXkNCisgKiBvcGVyYXRpb25z Lg0KKyAqDQorICovDQorc3RydWN0IHJ0ZV9jcnlwdG9fZGhfeGZvcm0gew0KKwlydGVfY3J5cHRv X3hmb3JtX3BhcmFtIHA7DQorCS8qKjwgcCA6IFByaW1lIG1vZHVsdXMgZGF0YQ0KKwkgKiBESCBw cmltZSBtb2R1bG91cyBkYXRhIGluIE9jdGV0LXN0cmluZyBuZXR3b3JrIGJ5dGUgb3JkZXIgZm9y bWF0Lg0KKwkgKi8NCisNCisJcnRlX2NyeXB0b194Zm9ybV9wYXJhbSBnOw0KKwkvKio8IGcgOiBH ZW5lcmF0b3INCisJICogREggZ3JvdXAgZ2VuZXJhdG9yIGRhdGEgaW4gT2N0ZXQtc3RyaW5nIG5l dHdvcmsgYnl0ZSBvcmRlcg0KKwkgKiBmb3JtYXQuDQorCSAqLw0KK307DQorDQorLyoqDQorICog QXN5bW1ldHJpYyBFQ0RIIHRyYW5zZm9ybSBkYXRhDQorICoNCisgKiBUaGlzIHN0cnVjdHVyZSBj b250YWlucyBkYXRhIHJlcXVpcmVkIHRvIHBlcmZvcm0gRUNESCBjcnlwdG8NCisgKiB0cmFuc2Zv cm0uDQorICoNCisgKi8NCitzdHJ1Y3QgcnRlX2NyeXB0b19lY2RoX3hmb3JtIHsNCisNCisJZW51 bSBydGVfY3J5cHRvX2VjX2N1cnZlX3R5cGUgY3VydmVfdHlwZTsNCisJLyoqPCBFQ0RIIGN1cnZl IHR5cGU6IFByaW1lIHZzIEJpbmFyeSAqLw0KKw0KKwlzdHJ1Y3QgcnRlX2NyeXB0b19lY19jdXJ2 ZV9pZCBjdXJ2ZV9pZDsNCisNCisJcnRlX2NyeXB0b194Zm9ybV9wYXJhbSBwOw0KKwkvKio8IHA6 DQorCSAqIElmIHRoZSBjdXJ2ZV90eXBlIGlzIEByZWYgUlRFX0NSWVBUT19FQ19DVVJWRV9UWVBF X1BSSU1FX0ZJRUxEOg0KKwkgKiBwIGhvbGRzIHRoZSBwcmltZSBtb2R1bHVzIGRhdGEgaW4gT2N0 ZXQgc3RyaW5nIGZvcm1hdC4NCisJICoNCisJICogSWYgdGhlIGN1cnZlX3R5cGUgaXMgQHJlZiBS VEVfQ1JZUFRPX0VDX0NVUlZFX1RZUEVfQklOQVJZX0ZJRUxEOg0KKwkgKiBwIGhvbGRzIHJlZHVj dGlvbiBwb2x5bm9taWFsIGNvLWVmZmljaWVudHMgYW5kIGRlZ3JlZS4NCisJICovDQorDQorCXJ0 ZV9jcnlwdG9feGZvcm1fcGFyYW0gYTsNCisJLyoqPCBDdXJ2ZSBQYXJhbWV0ZXIgQ28tZWZmaWNp ZW50ICdhJyBvZiBjdXJ2ZSBlcXVhdGlvbiBkYXRhIGluDQorCSAqIE9jdGV0LXN0cmluZyBuZXR3 b3JrIGJ5dGUgb3JkZXIgZm9ybWF0Lg0KKwkgKi8NCisNCisJcnRlX2NyeXB0b194Zm9ybV9wYXJh bSBiOw0KKwkvKio8IEN1cnZlIFBhcmFtZXRlciBDby1lZmZpY2llbnQgJ2InIG9mIGN1cnZlIGVx dWF0aW9uIGRhdGEgaW4NCisJICogT2N0ZXQtc3RyaW5nIG5ldHdvcmsgYnl0ZSBvcmRlciBmb3Jt YXQuDQorCSAqLw0KKw0KKwlzdHJ1Y3QgIHJ0ZV9jcnlwdG9fZWNfcG9pbnQgRzsNCisJLyoqPCBH OiBFQyBjdXJ2ZSBnZW5lcmF0b3IgcG9pbnQNCisJICogRUMgY3VydmUgZ2VuZXJhdG9yIHBvaW50 IGRhdGEgaW4gT2N0ZXQtc3RyaW5nIG5ldHdvcmsgYnl0ZSBvcmRlcg0KKwkgKiBmb3JtYXQuDQor CSAqLw0KKw0KKwlydGVfY3J5cHRvX3hmb3JtX3BhcmFtIG47DQorCS8qKjwgbiA6IG9yZGVyIG9m IEcNCisJICogRUNESCBjdXJ2ZSBvcmRlciBkYXRhIGluIE9jdGV0LXN0cmluZyBuZXR3b3JrIGJ5 dGUgb3JkZXIgZm9ybWF0Lg0KKwkgKi8NCisNCisJaW50IGg7DQorCS8qKjwgQ28tZmFjdG9yIG9m IHRoZSBjdXJ2ZSAqLw0KKw0KKwlydGVfY3J5cHRvX3hmb3JtX3BhcmFtIHBrZXk7DQorCS8qKjwg cGtleTogUHJpdmF0ZSBrZXkNCisJICogUHJpdmF0ZSBrZXkgZGF0YSBmb3IgRUNESCBvcGVyYXRp b24gaW4gT2N0ZXQtc3RyaW5nIG5ldHdvcmsgYnl0ZQ0KKwkgKiBvcmRlciBmb3JtYXQuDQorCSAq Lw0KKw0KKwlzdHJ1Y3QgcnRlX2NyeXB0b19lY19wb2ludCBROw0KKwkvKio8IFE6IFB1YmxpYyBr ZXkgcG9pbnQNCisJICogUHVibGljIGtleSBwb2ludCBkYXRhIG9mIEVDREggb3BlcmF0aW9uIGlu IE9jdGV0LXN0cmluZyBuZXR3b3JrDQorCSAqIGJ5dGUgb3JkZXIgZm9ybWF0Lg0KKwkgKi8NCit9 Ow0KKw0KKy8qKg0KKyAqIEFzeW1tZXRyaWMgRGlnaXRhbCBTaWduYXR1cmUgdHJhbnNmb3JtIG9w ZXJhdGlvbg0KKyAqDQorICogVGhpcyBzdHJ1Y3R1cmUgY29udGFpbiBzaWduZXIga2V5IGluZm9y bWF0aW9uIGZvciBEU0Egc2lnbmF0dXJlDQorICogZ2VuZXJhdGlvbiBhbmQgdmVyaWZpY2F0aW9u Lg0KKyAqIEFwcCB3aGljaCBkb2VzIGJvdGggU2lnbmF0dXJlIEdlbmVyYXRpb24gYW5kIFZlcmlm aWNhdGlvbiBzaG91bGQNCisgKiBjcmVhdGUgdHdvIHNlcGFyYXRlIHNlc3Npb24gY2Fycnlpbmcg aXRzIG93biBhbmQgcGVlciBrZXkgaW5mb3JtYXRpb24NCisgKg0KKyAqLw0KK3N0cnVjdCBydGVf Y3J5cHRvX2RzYV94Zm9ybSB7DQorCXJ0ZV9jcnlwdG9feGZvcm1fcGFyYW0gcDsNCisJLyoqPCBw IC0gUHJpbWUgbW9kdWx1cw0KKwkgKiBQcmltZSBtb2R1bHVzIGRhdGEgZm9yIERTQSBvcGVyYXRp b24gaW4gT2N0ZXQtc3RyaW5nIG5ldHdvcmsgYnl0ZQ0KKwkgKiBvcmRlciBmb3JtYXQuDQorCSAq Lw0KKwlydGVfY3J5cHRvX3hmb3JtX3BhcmFtIHE7DQorCS8qKjwgcSA6IE9yZGVyIG9mIHRoZSBz dWJncm91cC4NCisJICogT3JkZXIgb2YgdGhlIHN1Ymdyb3VwIGRhdGEgaW4gT2N0ZXQtc3RyaW5n IG5ldHdvcmsgYnl0ZSBvcmRlcg0KKwkgKiBmb3JtYXQuDQorCSAqIChwLTEpICUgcSA9IDANCisJ ICovDQorCXJ0ZV9jcnlwdG9feGZvcm1fcGFyYW0gZzsNCisJLyoqPCBnOiBHZW5lcmF0b3Igb2Yg dGhlIHN1Ymdyb3VwDQorCSAqIEdlbmVyYXRvciAgZGF0YSBpbiBPY3RldC1zdHJpbmcgbmV0d29y ayBieXRlIG9yZGVyIGZvcm1hdC4NCisJICovDQorCXJ0ZV9jcnlwdG9feGZvcm1fcGFyYW0geDsN CisJLyoqPCB4OiBQcml2YXRlIGtleSBvZiB0aGUgc2lnbmVyDQorCSAqIFByaXZhdGUga2V5IGRh dGEgaW4gT2N0ZXQtc3RyaW5nIG5ldHdvcmsgYnl0ZSBvcmRlciBmb3JtYXQuDQorCSAqIFByaXZh dGUga2V5IGlzIHZhbGlkIG9ubHkgZm9yIHNpZ25hdHVyZSBnZW5lcmF0aW9uIG9wZXJhdGlvbi4N CisJICovDQorCXJ0ZV9jcnlwdG9feGZvcm1fcGFyYW0geTsNCisJLyoqPCB5IDogUHVibGljIGtl eSBvZiB0aGUgc2lnbmVyLg0KKwkgKiBQdWJsaWMga2V5IGRhdGEgb2YgdGhlIHNpZ25lciBpbiBP Y3RldC1zdHJpbmcgbmV0d29yayBieXRlIG9yZGVyDQorCSAqIGZvcm1hdC4NCisJICogeSA9IGde eCBtb2QgcA0KKwkgKi8NCit9Ow0KKw0KKy8qKiANCisgKiBBc3ltbWV0cmljIEVDRFNBIHRyYW5z Zm9ybSBkYXRhDQorICoNCisgKiBUaGlzIHN0cnVjdHVyZSBjb250YWlucyBkYXRhIHJlcXVpcmVk IHRvIHBlcmZvcm0gRUNEU0EgY3J5cHRvDQorICogdHJhbnNmb3JtLg0KKyAqLw0KK3N0cnVjdCBy dGVfY3J5cHRvX2VjZHNhX3hmb3JtIHsNCisJLyoqIFRCRCAqLw0KK307DQorDQorLyoqDQorICog QXN5bW1ldHJpYyBtb2R1bGFyIGludmVyc2UgdHJhbnNmb3JtIG9wZXJhdGlvbg0KKyAqDQorICog VGhpcyBzdHJ1Y3R1cmUgY29udGFpbnMgZGF0YSByZXF1aXJlZCB0byBwZXJmb3JtDQorICogYXN5 bW1ldHJpYyBtb2R1bGFyIGludmVyc2UgY3J5cHRvIHRyYW5zZm9ybQ0KKyAqLw0KK3N0cnVjdCBy dGVfY3J5cHRvX21vZGludl94Zm9ybSB7DQorCS8qKiBUQkQgKi8NCit9Ow0KKw0KKy8qKiBBc3lt bWV0cmljIEZ1bmRhbWVudGFsIEVDQyB0cmFuc2Zvcm0gb3BlcmF0aW9uDQorICoNCisgKiBUaGlz IHN0cnVjdHVyZSBjb250YWlucyBkYXRhIHJlcXVpcmVkIHRvIHBlcmZvcm0gYXN5bW1ldHJpYw0K KyAqIGZ1bmRhbWVudGFsIEVDQyBjcnlwdG8gdHJhbnNmb3JtLg0KKyAqLw0KK3N0cnVjdCBydGVf Y3J5cHRvX2ZlY2NfeGZvcm0gew0KKw0KKwllbnVtIHJ0ZV9jcnlwdG9fZWNfY3VydmVfdHlwZSBj dXJ2ZV90eXBlOw0KKwkvKio8IEZFQ0MgY3VydmUgdHlwZTogUHJpbWUgdnMgQmluYXJ5ICovDQor DQorCXN0cnVjdCBydGVfY3J5cHRvX2VjX2N1cnZlX2lkIGN1cnZlX2lkOw0KKwkvKio8IEVDIGN1 cnZlIElEICovDQorDQorCXJ0ZV9jcnlwdG9feGZvcm1fcGFyYW0gb3JkZXI7DQorCS8qKjwgb3Jk ZXIgOiBFQ0MgY3VydmUgb3JkZXINCisJICogQ3VydmUgb3JkZXIgZGF0YSBpbiBPY3RldC1zdHJp bmcgbmV0d29yayBieXRlIG9yZGVyIGZvcm1hdC4NCisJICovDQorDQorCXJ0ZV9jcnlwdG9feGZv cm1fcGFyYW0gcHJpbWU7DQorCS8qKjwgcHJpbWUgOiBDdXJ2ZSBwcmltZSBtb2R1bHVzIGRhdGEN CisJICogUHJpbWUgbW9kdWx1cyBkYXRhIGluIE9jdGV0LXN0cmluZyBuZXR3b3JrIGJ5dGUgb3Jk ZXIgZm9ybWF0Lg0KKwkgKi8NCisNCisJc3RydWN0IHJ0ZV9jcnlwdG9fZWNfcG9pbnQgRzsNCisJ LyoqPCBHOiBjdXJ2ZSBnZW5lcmF0b3IgcG9pbnQNCisJICogQ3VydmUgZ2VuZXJhdG9yIHBvaW50 IGRhdGEgaW4gT2N0ZXQtc3RyaW5nIG5ldHdvcmsgYnl0ZSBvcmRlcg0KKwkgKiBmb3JtYXQuDQor CSAqLw0KKw0KKwlydGVfY3J5cHRvX3hmb3JtX3BhcmFtIGE7DQorCS8qKjwgQ28tZWZmaWNpZW50 ICdhJyBvZiBjdXJ2ZSBlcXVhdGlvbiBkYXRhIGluIE9jdGV0LXN0cmluZyBuZXR3b3JrDQorCSAq IGJ5dGUgb3JkZXIgZm9ybWF0Lg0KKwkgKi8NCisNCisJcnRlX2NyeXB0b194Zm9ybV9wYXJhbSBi Ow0KKwkvKio8IENvLWVmZmljaWVudCAnYScgb2YgY3VydmUgZXF1YXRpb24gZGF0YSBpbiBPY3Rl dC1zdHJpbmcgbmV0d29yaw0KKwkgKiBieXRlIG9yZGVyIGZvcm1hdC4NCisJICovDQorDQorCWlu dCBoOw0KKwkvKio8IENvLWZhY3RvciBvZiB0aGUgY3VydmUgKi8NCisNCit9Ow0KKw0KKy8qKg0K KyAqIEFzeW1tZXRyaWMgY3J5cHRvIHRyYW5zZm9ybSBkYXRhDQorICoNCisgKiBUaGlzIHN0cnVj dHVyZSBjb250YWlucyB0aGUgZGF0YSByZXF1aXJlZCB0byBwZXJmb3JtIHRoZQ0KKyAqIGFzeW1t ZXRyaWMgY3J5cHRvIHRyYW5zZm9ybWF0aW9uIG9wZXJhdGlvbi4gVGhlIGZpZWxkIG9wDQorICog ZGV0ZXJtaW5lcyB0aGUgYXN5bW1ldHJpYyBhbGdvcml0aG0gZm9yIHRyYW5zZm9ybWF0aW9uLg0K KyAqLw0KK3N0cnVjdCBydGVfY3J5cHRvX2FzeW1feGZvcm0gew0KKwlzdHJ1Y3QgcnRlX2NyeXB0 b19hc3ltX3hmb3JtICpuZXh0Ow0KKwllbnVtIHJ0ZV9jcnlwdG9fYXN5bV94Zm9ybV90eXBlIHhm b3JtX3R5cGU7DQorCS8qKjwgQXN5bW1ldHJpYyBhbGdvcml0aG0gZm9yIGNyeXB0byB0cmFuc2Zv cm0gKi8NCisNCisJUlRFX1NURF9DMTENCisJdW5pb24gew0KKwkJc3RydWN0IHJ0ZV9jcnlwdG9f cnNhX3hmb3JtIHJzYTsNCisJCS8qKjwgUlNBIHhmb3JtIHBhcmFtZXRlcnMgKi8NCisNCisJCXN0 cnVjdCBydGVfY3J5cHRvX2ZlY2NfeGZvcm0gZmVjYzsNCisJCS8qKjwgRnVuZGFtZW50YWwgRWxs aXB0aWMgQ3VydmUgeGZvcm0gcGFyYW1ldGVycyAqLw0KKw0KKwkJc3RydWN0IHJ0ZV9jcnlwdG9f bW9kZXhfeGZvcm0gbW9kZXg7DQorCQkvKio8IE1vZHVsYXIgRXhwb25lbnRpYXRpb24geGZvcm0g cGFyYW1ldGVycyAqLw0KKw0KKwkJc3RydWN0IHJ0ZV9jcnlwdG9fbW9kaW52X3hmb3JtIG1vZGlu djsNCisJCS8qKjwgTW9kdWx1cyBJbnZlcnNlIHhmb3JtIHBhcmFtZXRlcnMgKi8NCisNCisJCXN0 cnVjdCBydGVfY3J5cHRvX2VjZHNhX3hmb3JtIGVjZHNhOw0KKwkJLyoqPCBFQ0RTQSB4Zm9ybSBw YXJhbWV0ZXJzICovDQorDQorCQlzdHJ1Y3QgcnRlX2NyeXB0b19lY2RoX3hmb3JtIGVjZGg7DQor CQkvKio8IEVDREggeGZvcm0gcGFyYW1ldGVycyAqLw0KKw0KKwkJc3RydWN0IHJ0ZV9jcnlwdG9f ZHNhX3hmb3JtIGRzYTsNCisJCS8qKjwgRFNBIHhmb3JtIHBhcmFtZXRlcnMgKi8NCisJfTsNCit9 Ow0KKw0KK3N0cnVjdCBydGVfY3J5cHRvZGV2X2FzeW1fc2Vzc2lvbjsNCisNCisvKioNCisgKiBS U0Egb3BlcmF0aW9uIHBhcmFtcw0KKyAqDQorICovDQorc3RydWN0IHJ0ZV9jcnlwdG9fcnNhX29w X3BhcmFtIHsNCisJZW51bSBydGVfY3J5cHRvX2FzeW1fb3BfdHlwZSBvcF90eXBlOw0KKwkvKio8 IFR5cGUgb2YgUlNBIG9wZXJhdGlvbiBmb3IgdHJhbnNmb3JtICovOw0KKw0KKwlydGVfY3J5cHRv X29wX3BhcmFtIG1lc3NhZ2U7DQorCS8qKjwNCisJICogUG9pbnRlciB0byBkYXRhDQorCSAqIC0g dG8gYmUgZW5jcnlwdGVkIGZvciBSU0EgcHVibGljIGVuY3J5cHQuDQorCSAqIC0gdG8gYmUgZGVj cnlwdGVkIGZvciBSU0EgcHJpdmF0ZSBkZWNyeXB0Lg0KKwkgKiAtIHRvIGJlIHNpZ25lZCBmb3Ig UlNBIHNpZ24gZ2VuZXJhdGlvbi4NCisJICogLSB0byBiZSBhdXRoZW50aWNhdGVkIGZvciBSU0Eg c2lnbiB2ZXJpZmljYXRpb24uDQorCSAqLw0KKw0KKwlydGVfY3J5cHRvX29wX3BhcmFtIHNpZ247 DQorCS8qKjwNCisJICogUG9pbnRlciB0byBSU0Egc2lnbmF0dXJlIGRhdGEuIElmIG9wZXJhdGlv biBpcyBSU0ENCisJICogc2lnbiBAcmVmIFJURV9DUllQVE9fUlNBX09QX1NJR04sIGJ1ZmZlciB3 aWxsIGJlDQorCSAqIG92ZXItd3JpdHRlbiB3aXRoIGdlbmVyYXRlZCBzaWduYXR1cmUuDQorCSAq DQorCSAqIExlbmd0aCBvZiB0aGUgc2lnbmF0dXJlIGRhdGEgd2lsbCBiZSBlcXVhbCB0byB0aGUN CisJICogUlNBIHByaW1lIG1vZHVsdXMgbGVuZ3RoLg0KKwkgKi8NCisNCisJZW51bSBydGVfY3J5 cHRvX3JzYV9wYWRkaW5nX3R5cGUgcGFkOw0KKwkvKio8IFJTQSBwYWRkaW5nIHNjaGVtZSB0byBi ZSB1c2VkIGZvciB0cmFuc2Zvcm0gKi8NCisNCisJZW51bSBydGVfY3J5cHRvX2F1dGhfYWxnb3Jp dGhtIG1kOw0KKwkvKio8IEhhc2ggYWxnb3JpdGhtIHRvIGJlIHVzZWQgZm9yIGRhdGEgaGFzaCBp ZiBwYWRkaW5nDQorCSAqIHNjaGVtZSBpcyBlaXRoZXIgT0FFUCBvciBQU1MuIFZhbGlkIGhhc2gg YWxnb3JpdGhtcw0KKwkgKiBhcmU6DQorCSAqIE1ENSwgU0hBMSwgU0hBMjI0LCBTSEEyNTYsIFNI QTM4NCwgU0hBNTEyDQorCSAqLw0KKw0KKwllbnVtIHJ0ZV9jcnlwdG9fYXV0aF9hbGdvcml0aG0g bWdmMW1kOw0KKwkvKio8DQorCSAqIEhhc2ggYWxnb3JpdGhtIHRvIGJlIHVzZWQgZm9yIG1hc2sg Z2VuZXJhdGlvbiBpZg0KKwkgKiBwYWRkaW5nIHNjaGVtZSBpcyBlaXRoZXIgT0FFUCBvciBQU1Mu IElmIHBhZGRpbmcNCisJICogc2NoZW1lIGlzIHVuc3BlY2lmaWVkIGRhdGEgaGFzaCBhbGdvcml0 aG0gaXMgdXNlZA0KKwkgKiBmb3IgbWFzayBnZW5lcmF0aW9uLiBWYWxpZCBoYXNoIGFsZ29yaXRo bXMgYXJlOg0KKwkgKiBNRDUsIFNIQTEsIFNIQTIyNCwgU0hBMjU2LCBTSEEzODQsIFNIQTUxMg0K KwkgKi8NCit9Ow0KKw0KKy8qKg0KKyAqIERlZmZpZS1IZWxsbWFuIE9wZXJhdGlvbnMgcGFyYW1z DQorICoNCisgKi8NCitzdHJ1Y3QgcnRlX2NyeXB0b19kaF9vcF9wYXJhbSB7DQorCWVudW0gcnRl X2NyeXB0b19hc3ltX29wX3R5cGUgb3BfdHlwZTsNCisJLyoqPCBBc3ltbWV0cmljIG9wIHR5cGU6 IEtleSBHZW5lcmF0aW9uIC8gQ29tcHV0YXRpb24gKi8NCisNCisJcnRlX2NyeXB0b19vcF9wYXJh bSBwdWJfa2V5Ow0KKwkvKio8DQorCSAqIE91dHB1dCBuYXRpdmUgYXBwIHB1YmxpYyBrZXkgd2hl biBESCBvcGVyYXRpb24gdHlwZSBpcw0KKwkgKiBLRVlfR0VORVJBVElPTi4NCisJICogSW5wdXQg cGVlciBwdWJsaWMga2V5IHdoZW4gREggb3BlcmF0aW9uIGlzIHNoYXJlZCBrZXkNCisJICogS0VZ X0NPTVBVVEFUSU9ODQorCSAqIEFuIE9jdGV0LXN0cmluZyBuZXR3b3JrIGJ5dGUgb3JkZXIgZm9y bWF0Lg0KKwkgKg0KKwkgKi8NCisNCisJcnRlX2NyeXB0b19vcF9wYXJhbSBwcml2X2tleTsNCisJ LyoqPA0KKwkgKiBPdXRwdXQgbmF0aXZlIGFwcCBwcml2YXRlIGtleSBpZiBvcGVyYXRpb24gdHlw ZQ0KKwkgKiBLRVlfR0VORVJBVElPTi4NCisJICogSW5wdXQgbmF0aXZlIGFwcCBwcml2YXRlIGtl eSB3aGVuIG9wZXJhdGlvbiB0eXBlDQorCSAqIGlzIEtFWV9DT01QVVRBVElPTi4gcHJpdl9rZXkg aXMgaW4NCisJICogaW4gT2N0ZXQtc3RyaW5nIG5ldHdvcmsgYnl0ZSBvcmRlciBmb3JtYXQuDQor CSAqLw0KKw0KKwlydGVfY3J5cHRvX29wX3BhcmFtIHNoYXJlZF9rZXk7DQorCS8qDQorCSAqIE91 dHB1dCB3aGVuIERIIG9wZXJhdGlvbiB0eXBlIGlzIEtFWV9DT01QVVRBVElPTjoNCisJICogY29t cHV0ZWQuIHNoYXJlZF9rZXkgaXMgd3JpdHRlbiBhcw0KKwkgKiBPY3RldC1zdHJpbmcgbmV0d29y ayBieXRlIG9yZGVyIGZvcm1hdC4NCisJICogSWdub3JlZCBmb3IgS0VZX0dFTkVSQVRJT04uDQor CSAqLw0KK307DQorDQorLyoqDQorICogRFNBIE9wZXJhdGlvbnMgcGFyYW1zDQorICoNCisgKi8N CitzdHJ1Y3QgcnRlX2NyeXB0b19kc2Ffb3BfcGFyYW0gew0KKwkvKiogVEJEICovDQorfTsNCisN CisvKioNCisgKiBNb2QgRXhwIE9wZXJhdGlvbnMgcGFyYW1zDQorICoNCisgKi8NCitzdHJ1Y3Qg cnRlX2NyeXB0b19tb2RleF9vcF9wYXJhbSB7DQorCXJ0ZV9jcnlwdG9fb3BfcGFyYW0gYmFzZTsN CisJLyoqPA0KKwkgKiBQb2ludGVyIHRvIGJhc2Ugb2YgbW9kdWxhciBleHBvbmVudGlhdGlvbiBk YXRhIGluDQorCSAqIE9jdGV0LXN0cmluZyBuZXR3b3JrIGJ5dGUgb3JkZXIgZm9ybWF0Lg0KKwkg Ki8NCit9Ow0KKw0KKy8qKg0KKyAqIEVsbGlwdGljIGN1cnZlIERlZmZpZS1IZWxsbWFuIE9wZXJh dGlvbnMgcGFyYW1zDQorICoNCisgKi8NCitzdHJ1Y3QgcnRlX2NyeXB0b19lY2RoX29wX3BhcmFt IHsNCisJZW51bSBydGVfY3J5cHRvX2FzeW1fb3BfdHlwZSBvcF90eXBlOw0KKwkvKio8IEFzeW1t ZXRyaWMgb3BlcmF0aW9uOiBrZXkgZ2VuZXJhdGlvbiwgY29tcHV0YXRpb24gKi8NCisNCisJcnRl X2NyeXB0b19vcF9wYXJhbSBwcml2X2tleTsNCisJLyoqPA0KKwkgKiBPdXRwdXQgaWYgb3BlcmF0 aW9uIHR5cGUgaXMgS0VZX1BBSVJfR0VORVJBVElPTiwNCisJICogb3V0cHV0IG5hdGl2ZSBhcHAg cHJpdmF0ZSBrZXkuDQorCSAqIElucHV0IGFuZCBvdXRwdXQsIElmIEVDREggb3BlcmF0aW9uIHR5 cGUgaXMgU0hBUkVEX0tFWV9DT01QVVRBVElPTiwNCisJICogcHJpdl9rZXkgd2lsbCBob2xkIHRo ZSAnWCcgY28tb3JkaW5hdGUgb2YgdGhlIHNoYXJlZA0KKwkgKiBzZWNyZXQgRUMgcG9pbnQuIHBy aXZfa2V5IGlzIGluIE9jdGV0LXN0cmluZyBuZXR3b3JrDQorCSAqIGJ5dGUgb3JkZXIuDQorCSAq Lw0KKw0KKwlzdHJ1Y3QgcnRlX2NyeXB0b19lY19wb2ludCBwdWJfa2V5Ow0KKwkvKio8DQorCSAq IE91dHB1dCBpZiBvcGVyYXRpb24gdHlwZSBpcyBLRVlfUEFJUl9HRU5FUkFUSU9OLA0KKwkgKiBz dG9yZSBuYXRpdmUgYXBwIHB1YmxpYyBrZXkuDQorCSAqIElucHV0IGlmIG9wZXJhdGlvbiB0eXBl IGlzIFNIQVJFRF9LRVlfQ09NUFVUQVRJT04sDQorCSAqIA0KKwkgKiBLRVlfQ09NUFVUQVRJT046 DQorCSAqICBwdWJfa2V5IGlzIGluIE9jdGV0LXN0cmluZyBuZXR3b3JrIGJ5dGUgb3JkZXIuDQor CSAqLw0KK307DQorDQorLyoqDQorICogRWxsaXB0aWMgQ3VydmUgRFNBIE9wZXJhdGlvbnMgcGFy YW1zDQorICoNCisgKi8NCitzdHJ1Y3QgcnRlX2NyeXB0b19lY2RzYV9vcF9wYXJhbSB7DQorDQor CWVudW0gcnRlX2NyeXB0b19hc3ltX29wX3R5cGUgZWNkc2Ffb3A7DQorCS8qKjwgRUNEU0EgY3J5 cHRvIHhmb3JtIG9wZXJhdGlvbiB0eXBlOiBTaWduYXR1cmUNCisJICogIGdlbmVyYXRpb24vVmVy aWZpY2F0aW9uDQorCSAqLw0KKwkvKiogVEJEICovDQorfTsNCisNCisvKioNCisgKiBGdW5kYW1l bnRhbCBFbGxpcHRpYyBDdXJ2ZSBPcGVyYXRpb25zIHBhcmFtcw0KKyAqDQorICovDQorc3RydWN0 IHJ0ZV9jcnlwdG9fZmVjY19vcF9wYXJhbSB7DQorCWVudW0gcnRlX2NyeXB0b19mZWNjX29wdHlw ZSBmZWNjX29wOw0KKwkvKio8IEZFQ0MgY3J5cHRvIHhmb3JtIG9wZXJhdGlvbiB0eXBlICovDQor DQorCS8qKiBUQkQgKi8NCit9Ow0KKw0KKy8qKg0KKyAqIE1vZCBJbnYgT3BlcmF0aW9ucyBwYXJh bXMNCisgKg0KKyAqLw0KK3N0cnVjdCBydGVfY3J5cHRvX21vZGludl9vcF9wYXJhbSB7DQorCXJ0 ZV9jcnlwdG9fb3BfcGFyYW0gcHJpbWU7DQorCS8qKjwNCisJICogUG9pbnRlciB0byB0aGUgcHJp bWUgbW9kdWx1cyBkYXRhIGZvciBtb2R1bGFyDQorCSAqIGludmVyc2Ugb3BlcmF0aW9uIGluIE9j dGV0LXN0cmluZyBuZXR3b3JrIGJ5dGUNCisJICogb3JkZXIgZm9ybWF0Lg0KKwkgKi8NCisNCisJ cnRlX2NyeXB0b19vcF9wYXJhbSBiYXNlOw0KKwkvKio8DQorCSAqIFBvaW50ZXIgdG8gdGhlIGJh c2UgZm9yIHRoZSBtb2R1bGFyIGludmVyc2UNCisJICogb3BlcmF0aW9uIGluIE9jdGV0LXN0cmlu ZyBuZXR3b3JrIGJ5dGUgb3JkZXINCisJICogZm9ybWF0Lg0KKwkgKi8NCit9Ow0KKw0KKy8qKg0K KyAqIEFzeW1tZXRyaWMgQ3J5cHRvZ3JhcGhpYyBPcGVyYXRpb24uDQorICoNCisgKiBUaGlzIHN0 cnVjdHVyZSBjb250YWlucyBkYXRhIHJlbGF0aW5nIHRvIHBlcmZvcm1pbmcgYXN5bW1ldHJpYyBj cnlwdG9ncmFwaGljDQorICogb3BlcmF0aW9uLg0KKyAqDQorICovDQorc3RydWN0IHJ0ZV9jcnlw dG9fYXN5bV9vcCB7DQorCWVudW0gcnRlX2NyeXB0b19hc3ltX3hmb3JtX3R5cGUgdHlwZTsNCisJ LyoqPCBSU0EsIERILCBFQ0RILCBEU0EgZXRjICovDQorDQorCXN0cnVjdCBydGVfY3J5cHRvZGV2 X2FzeW1fc2Vzc2lvbiAqc2Vzc2lvbjsNCisJLyoqPCBIYW5kbGUgZm9yIHRoZSBpbml0aWFsaXNl ZCBzZXNzaW9uIGNvbnRleHQgKi8NCisNCisJUlRFX1NURF9DMTENCisJdW5pb24gew0KKwkJc3Ry dWN0IHJ0ZV9jcnlwdG9fcnNhX29wX3BhcmFtIHJzYTsNCisJCXN0cnVjdCBydGVfY3J5cHRvX2Ro X29wX3BhcmFtIGRoOw0KKwkJc3RydWN0IHJ0ZV9jcnlwdG9fbW9kZXhfb3BfcGFyYW0gbW9kZXg7 DQorCQlzdHJ1Y3QgcnRlX2NyeXB0b19lY2RoX29wX3BhcmFtIGVjZGg7DQorCQlzdHJ1Y3QgcnRl X2NyeXB0b19lY2RzYV9vcF9wYXJhbSBlY2RzYTsNCisJCXN0cnVjdCBydGVfY3J5cHRvX2RzYV9v cF9wYXJhbSBkc2E7DQorCQlzdHJ1Y3QgcnRlX2NyeXB0b19mZWNjX29wX3BhcmFtIGZlY2M7DQor CQlzdHJ1Y3QgcnRlX2NyeXB0b19tb2RpbnZfb3BfcGFyYW0gbW9kaW52Ow0KKwl9Ow0KK30gX19y dGVfY2FjaGVfYWxpZ25lZDsNCisNCisvKioNCisgKiBSZXNldCB0aGUgZmllbGRzIG9mIGFuIGFz eW1tZXRyaWMgb3BlcmF0aW9uIHRvIHRoZWlyIGRlZmF1bHQgdmFsdWVzLg0KKyAqDQorICogQHBh cmFtCW9wCVRoZSBjcnlwdG8gb3BlcmF0aW9uIHRvIGJlIHJlc2V0Lg0KKyAqLw0KK3N0YXRpYyBp bmxpbmUgdm9pZA0KK19fcnRlX2NyeXB0b19hc3ltX29wX3Jlc2V0KHN0cnVjdCBydGVfY3J5cHRv X2FzeW1fb3AgKm9wKQ0KK3sNCisJbWVtc2V0KG9wLCAwLCBzaXplb2YoKm9wKSk7DQorfQ0KKw0K Kw0KKy8qKg0KKyAqIEF0dGFjaCBhIHNlc3Npb24gdG8gYW4gYXN5bW1ldHJpYyBjcnlwdG8gb3Bl cmF0aW9uDQorICoNCisgKiBAcGFyYW0JYXN5bV9vcAljcnlwdG8gb3BlcmF0aW9uDQorICogQHBh cmFtCXNlc3MJY3J5cHRvZGV2IHNlc3Npb24NCisgKi8NCitzdGF0aWMgaW5saW5lIGludA0KK19f cnRlX2NyeXB0b19vcF9hdHRhY2hfYXN5bV9zZXNzaW9uKHN0cnVjdCBydGVfY3J5cHRvX2FzeW1f b3AgKmFzeW1fb3AsDQorCQlzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9hc3ltX3Nlc3Npb24gKnNlc3Mp DQorew0KKwlhc3ltX29wLT5zZXNzaW9uID0gc2VzczsNCisJcmV0dXJuIDA7DQorfQ0KKw0KKyNp ZmRlZiBfX2NwbHVzcGx1cw0KK30NCisjZW5kaWYNCisNCisjZW5kaWYgLyogX1JURV9DUllQVE9f QVNZTV9IXyAqLw0KZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfY3J5cHRvZGV2L3J0ZV9jcnlwdG9k ZXYuYyBiL2xpYi9saWJydGVfY3J5cHRvZGV2L3J0ZV9jcnlwdG9kZXYuYw0KaW5kZXggNzcyNmQx NS4uYmFkMThjMyAxMDA2NDQNCi0tLSBhL2xpYi9saWJydGVfY3J5cHRvZGV2L3J0ZV9jcnlwdG9k ZXYuYw0KKysrIGIvbGliL2xpYnJ0ZV9jcnlwdG9kZXYvcnRlX2NyeXB0b2Rldi5jDQpAQCAtMTY2 LDYgKzE2NiwzMyBAQCBzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9jYWxsYmFjayB7DQogCVtSVEVfQ1JZ UFRPX0FFQURfT1BfREVDUllQVF0JPSAiZGVjcnlwdCINCiB9Ow0KIA0KKy8qKg0KKyAqIEFzeW1t ZXRyaWMgY3J5cHRvIHRyYW5zZm9ybSBvcGVyYXRpb24gc3RyaW5ncyBpZGVudGlmaWVycy4NCisg Ki8NCitjb25zdCBjaGFyICpydGVfY3J5cHRvX2FzeW1feGZvcm1fc3RyaW5nc1tdID0gew0KKwlb UlRFX0NSWVBUT19BU1lNX1hGT1JNX1JTQV0JPSAicnNhIiwNCisJW1JURV9DUllQVE9fQVNZTV9Y Rk9STV9NT0RFWF0JPSAibW9kZXhwIiwNCisJW1JURV9DUllQVE9fQVNZTV9YRk9STV9ESF0JPSAi ZGgiLA0KKwlbUlRFX0NSWVBUT19BU1lNX1hGT1JNX0VDREhdCT0gImVjZGgiLA0KKwlbUlRFX0NS WVBUT19BU1lNX1hGT1JNX0RTQV0JPSAiZHNhIiwNCisJW1JURV9DUllQVE9fQVNZTV9YRk9STV9F Q0RTQV0JPSAiZWNkc2EiLA0KKwlbUlRFX0NSWVBUT19BU1lNX1hGT1JNX01PRElOVl0JPSAibW9k aW52IiwNCisJW1JURV9DUllQVE9fQVNZTV9YRk9STV9GRUNDXQk9ICJmZWNjIg0KK307DQorDQor LyoqDQorICogQXN5bW1ldHJpYyBjcnlwdG8gb3BlcmF0aW9uIHN0cmluZ3MgaWRlbnRpZmllcnMu DQorICovDQorY29uc3QgY2hhciAqcnRlX2NyeXB0b19hc3ltX29wX3N0cmluZ3NbXSA9IHsNCisJ W1JURV9DUllQVE9fQVNZTV9PUF9FTkNSWVBUXQk9ICJlbmNyeXB0IiwNCisJW1JURV9DUllQVE9f QVNZTV9PUF9ERUNSWVBUXQk9ICJkZWNyeXB0IiwNCisJW1JURV9DUllQVE9fQVNZTV9PUF9TSUdO XQk9ICJzaWduIiwNCisJW1JURV9DUllQVE9fQVNZTV9PUF9WRVJJRlldCT0gInZlcmlmeSIsDQor CVtSVEVfQ1JZUFRPX0FTWU1fT1BfS0VZX1BBSVJfR0VORVJBVElPTl0JPSAia2V5cGFpcl9nZW5l cmF0ZSIsDQorCVtSVEVfQ1JZUFRPX0FTWU1fT1BfU0hBUkVEX0tFWV9DT01QVVRBVElPTl0gPSAi c2hhcmVka2V5X2NvbXB1dGF0aW9uIiwNCisJW1JURV9DUllQVE9fQVNZTV9PUF9FQ0RIX09QX0tF WV9DSEVDS10JPSAiZWNkaF9rZXljaGVjayIsDQorfTsNCisNCiBpbnQNCiBydGVfY3J5cHRvZGV2 X2dldF9jaXBoZXJfYWxnb19lbnVtKGVudW0gcnRlX2NyeXB0b19jaXBoZXJfYWxnb3JpdGhtICph bGdvX2VudW0sDQogCQljb25zdCBjaGFyICphbGdvX3N0cmluZykNCkBAIC0yMTcsNiArMjQ0LDI0 IEBAIHN0cnVjdCBydGVfY3J5cHRvZGV2X2NhbGxiYWNrIHsNCiAJcmV0dXJuIC0xOw0KIH0NCiAN CitpbnQNCitydGVfY3J5cHRvZGV2X2dldF9hc3ltX3hmb3JtX2VudW0oZW51bSBydGVfY3J5cHRv X2FzeW1feGZvcm1fdHlwZSAqeGZvcm1fZW51bSwNCisJCWNvbnN0IGNoYXIgKnhmb3JtX3N0cmlu ZykNCit7DQorCXVuc2lnbmVkIGludCBpOw0KKw0KKwlmb3IgKGkgPSAxOyBpIDwgUlRFX0RJTShy dGVfY3J5cHRvX2FzeW1feGZvcm1fc3RyaW5ncyk7IGkrKykgew0KKwkJaWYgKHN0cmNtcCh4Zm9y bV9zdHJpbmcsDQorCQkJICAgcnRlX2NyeXB0b19hc3ltX3hmb3JtX3N0cmluZ3NbaV0pID09IDAp IHsNCisJCQkqeGZvcm1fZW51bSA9IChlbnVtIHJ0ZV9jcnlwdG9fYXN5bV94Zm9ybV90eXBlKSBp Ow0KKwkJCXJldHVybiAwOw0KKwkJfQ0KKwl9DQorDQorCS8qIEludmFsaWQgc3RyaW5nICovDQor CXJldHVybiAtMTsNCit9DQorDQogLyoqDQogICogVGhlIGNyeXB0byBhdXRoIG9wZXJhdGlvbiBz dHJpbmdzIGlkZW50aWZpZXJzLg0KICAqIEl0IGNvdWxkIGJlIHVzZWQgaW4gYXBwbGljYXRpb24g Y29tbWFuZCBsaW5lLg0KQEAgLTI2Miw2ICszMDcsMjggQEAgc3RydWN0IHJ0ZV9jcnlwdG9kZXZf Y2FsbGJhY2sgew0KIA0KIH0NCiANCitjb25zdCBzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9hc3ltbWV0 cmljX2NhcGFiaWxpdHkgKg0KK3J0ZV9jcnlwdG9kZXZfYXN5bV9jYXBhYmlsaXR5X2dldCh1aW50 OF90IGRldl9pZCwNCisJCWNvbnN0IHN0cnVjdCBydGVfY3J5cHRvZGV2X2FzeW1fY2FwYWJpbGl0 eV9pZHggKmlkeCkNCit7DQorCWNvbnN0IHN0cnVjdCBydGVfY3J5cHRvZGV2X2NhcGFiaWxpdGll cyAqY2FwYWJpbGl0eTsNCisJc3RydWN0IHJ0ZV9jcnlwdG9kZXZfaW5mbyBkZXZfaW5mbzsNCisJ dW5zaWduZWQgaW50IGkgPSAwOw0KKw0KKwltZW1zZXQoJmRldl9pbmZvLCAwLCBzaXplb2YocnRl X2NyeXB0b2Rldl9pbmZvKSk7DQorCXJ0ZV9jcnlwdG9kZXZfaW5mb19nZXQoZGV2X2lkLCAmZGV2 X2luZm8pOw0KKw0KKwl3aGlsZSAoKGNhcGFiaWxpdHkgPSAmZGV2X2luZm8uY2FwYWJpbGl0aWVz W2krK10pLT5vcCAhPQ0KKwkJCVJURV9DUllQVE9fT1BfVFlQRV9VTkRFRklORUQpIHsNCisJCWlm IChjYXBhYmlsaXR5LT5vcCAhPSBSVEVfQ1JZUFRPX09QX1RZUEVfQVNZTU1FVFJJQykNCisJCQlj b250aW51ZTsNCisNCisJCWlmIChjYXBhYmlsaXR5LT5hc3ltLnhmb3JtX3R5cGUgPT0gaWR4LT50 eXBlKQ0KKwkJCXJldHVybiAmY2FwYWJpbGl0eS0+YXN5bTsNCisJfQ0KKwlyZXR1cm4gTlVMTDsN Cit9Ow0KKw0KICNkZWZpbmUgcGFyYW1fcmFuZ2VfY2hlY2soeCwgeSkgXA0KIAkoKCh4IDwgeS5t aW4pIHx8ICh4ID4geS5tYXgpKSB8fCBcDQogCSh5LmluY3JlbWVudCAhPSAwICYmICh4ICUgeS5p bmNyZW1lbnQpICE9IDApKQ0KQEAgLTYwMSw2ICs2NjgsMjQgQEAgc3RydWN0IHJ0ZV9jcnlwdG9k ZXYgKg0KIAlyZXR1cm4gZGV2LT5kYXRhLT5uYl9xdWV1ZV9wYWlyczsNCiB9DQogDQordWludDE2 X3QNCitydGVfY3J5cHRvZGV2X2FzeW1fcXVldWVfcGFpcl9jb3VudCh1aW50OF90IGRldl9pZCkN Cit7DQorCXN0cnVjdCBydGVfY3J5cHRvZGV2ICpkZXY7DQorDQorCWRldiA9ICZydGVfY3J5cHRv X2RldmljZXNbZGV2X2lkXTsNCisJcmV0dXJuIGRldi0+ZGF0YS0+bmJfYXN5bV9xcDsNCit9DQor DQordWludDE2X3QNCitydGVfY3J5cHRvZGV2X3N5bV9xdWV1ZV9wYWlyX2NvdW50KHVpbnQ4X3Qg ZGV2X2lkKQ0KK3sNCisJc3RydWN0IHJ0ZV9jcnlwdG9kZXYgKmRldjsNCisNCisJZGV2ID0gJnJ0 ZV9jcnlwdG9fZGV2aWNlc1tkZXZfaWRdOw0KKwlyZXR1cm4gZGV2LT5kYXRhLT5uYl9zeW1fcXA7 DQorfQ0KKw0KIHN0YXRpYyBpbnQNCiBydGVfY3J5cHRvZGV2X3F1ZXVlX3BhaXJzX2NvbmZpZyhz dHJ1Y3QgcnRlX2NyeXB0b2RldiAqZGV2LCB1aW50MTZfdCBuYl9xcGFpcnMsDQogCQlpbnQgc29j a2V0X2lkKQ0KQEAgLTEwODgsNiArMTE3MywzOCBAQCBzdHJ1Y3QgcnRlX2NyeXB0b2RldiAqDQog CXJldHVybiAwOw0KIH0NCiANCitpbnQNCitydGVfY3J5cHRvZGV2X2FzeW1fc2Vzc2lvbl9pbml0 KHVpbnQ4X3QgZGV2X2lkLA0KKwkJc3RydWN0IHJ0ZV9jcnlwdG9kZXZfYXN5bV9zZXNzaW9uICpz ZXNzLA0KKwkJc3RydWN0IHJ0ZV9jcnlwdG9fYXN5bV94Zm9ybSAqeGZvcm1zLA0KKwkJc3RydWN0 IHJ0ZV9tZW1wb29sICptcCkNCit7DQorCXN0cnVjdCBydGVfY3J5cHRvZGV2ICpkZXY7DQorCXVp bnQ4X3QgaW5kZXg7DQorCWludCByZXQ7DQorDQorCWRldiA9IHJ0ZV9jcnlwdG9kZXZfcG1kX2dl dF9kZXYoZGV2X2lkKTsNCisNCisJaWYgKHNlc3MgPT0gTlVMTCB8fCB4Zm9ybXMgPT0gTlVMTCB8 fCBkZXYgPT0gTlVMTCkNCisJCXJldHVybiAtRUlOVkFMOw0KKw0KKwlpbmRleCA9IGRldi0+ZHJp dmVyX2lkOw0KKw0KKwlpZiAoc2Vzcy0+c2Vzc19wcml2YXRlX2RhdGFbaW5kZXhdID09IE5VTEwp IHsNCisJCXJldCA9IGRldi0+ZGV2X29wcy0+YXN5bV9zZXNzaW9uX2NvbmZpZ3VyZShkZXYsDQor CQkJCQkJCSAgIHhmb3JtcywNCisJCQkJCQkJICAgc2VzcywgbXApOw0KKwkJaWYgKHJldCA8IDAp IHsNCisJCQlDREVWX0xPR19FUlIoDQorCQkJCSJkZXZfaWQgJWQgZmFpbGVkIHRvIGNvbmZpZ3Vy ZSBzZXNzaW9uIGRldGFpbHMiLA0KKwkJCQlkZXZfaWQpOw0KKwkJCXJldHVybiByZXQ7DQorCQl9 DQorCX0NCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KIHN0cnVjdCBydGVfY3J5cHRvZGV2X3N5bV9z ZXNzaW9uICoNCiBydGVfY3J5cHRvZGV2X3N5bV9zZXNzaW9uX2NyZWF0ZShzdHJ1Y3QgcnRlX21l bXBvb2wgKm1wKQ0KIHsNCkBAIC0xMTA1LDYgKzEyMjIsMjMgQEAgc3RydWN0IHJ0ZV9jcnlwdG9k ZXZfc3ltX3Nlc3Npb24gKg0KIAlyZXR1cm4gc2VzczsNCiB9DQogDQorc3RydWN0IHJ0ZV9jcnlw dG9kZXZfYXN5bV9zZXNzaW9uICoNCitydGVfY3J5cHRvZGV2X2FzeW1fc2Vzc2lvbl9jcmVhdGUo c3RydWN0IHJ0ZV9tZW1wb29sICptcCkNCit7DQorCXN0cnVjdCBydGVfY3J5cHRvZGV2X2FzeW1f c2Vzc2lvbiAqc2VzczsNCisNCisJLyogQWxsb2NhdGUgYSBzZXNzaW9uIHN0cnVjdHVyZSBmcm9t IHRoZSBzZXNzaW9uIHBvb2wgKi8NCisJaWYgKHJ0ZV9tZW1wb29sX2dldChtcCwgKHZvaWQgKikm c2VzcykpIHsNCisJCUNERVZfTE9HX0VSUigiY291bGRuJ3QgZ2V0IG9iamVjdCBmcm9tIHNlc3Np b24gbWVtcG9vbCIpOw0KKwkJcmV0dXJuIE5VTEw7DQorCX0NCisNCisJLyogQ2xlYXIgZGV2aWNl IHNlc3Npb24gcG9pbnRlciAqLw0KKwltZW1zZXQoc2VzcywgMCwgKHNpemVvZih2b2lkICopICog bmJfZHJpdmVycykpOw0KKw0KKwlyZXR1cm4gc2VzczsNCit9DQorDQogaW50DQogcnRlX2NyeXB0 b2Rldl9xdWV1ZV9wYWlyX2F0dGFjaF9zeW1fc2Vzc2lvbih1aW50OF90IGRldl9pZCwgdWludDE2 X3QgcXBfaWQsDQogCQlzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9zeW1fc2Vzc2lvbiAqc2VzcykNCkBA IC0xMTYwLDYgKzEyOTQsNjAgQEAgc3RydWN0IHJ0ZV9jcnlwdG9kZXZfc3ltX3Nlc3Npb24gKg0K IH0NCiANCiBpbnQNCitydGVfY3J5cHRvZGV2X3F1ZXVlX3BhaXJfYXR0YWNoX2FzeW1fc2Vzc2lv bih1aW50OF90IGRldl9pZCwgdWludDE2X3QgcXBfaWQsDQorCQlzdHJ1Y3QgcnRlX2NyeXB0b2Rl dl9hc3ltX3Nlc3Npb24gKnNlc3MpDQorew0KKwlzdHJ1Y3QgcnRlX2NyeXB0b2RldiAqZGV2Ow0K Kw0KKwlpZiAoIXJ0ZV9jcnlwdG9kZXZfcG1kX2lzX3ZhbGlkX2RldihkZXZfaWQpKSB7DQorCQlD REVWX0xPR19FUlIoIkludmFsaWQgZGV2X2lkPSVkIiwgZGV2X2lkKTsNCisJCXJldHVybiAtRUlO VkFMOw0KKwl9DQorDQorCWRldiA9ICZydGVfY3J5cHRvX2RldmljZXNbZGV2X2lkXTsNCisNCisJ LyogVGhlIEFQSSBpcyBvcHRpb25hbCwgbm90IHJldHVybmluZyBlcnJvciBpZiBkcml2ZXIgZG8g bm90IHN1dXBvcnQgKi8NCisJUlRFX0ZVTkNfUFRSX09SX0VSUl9SRVQoKmRldi0+ZGV2X29wcy0+ YXN5bV9xcF9hdHRhY2hfc2Vzc2lvbiwgMCk7DQorDQorCXZvaWQgKnNlc3NfcHJpdiA9IGdldF9h c3ltX3Nlc3Npb25fcHJpdmF0ZV9kYXRhKHNlc3MsIGRldi0+ZHJpdmVyX2lkKTsNCisNCisJaWYg KGRldi0+ZGV2X29wcy0+YXN5bV9xcF9hdHRhY2hfc2Vzc2lvbihkZXYsIHFwX2lkLCBzZXNzX3By aXYpKSB7DQorCQlDREVWX0xPR19FUlIoImRldl9pZCAlZCBmYWlsZWQgdG8gYXR0YWNoIHFwOiAl ZCB3aXRoIHNlc3Npb24iLA0KKwkJCQlkZXZfaWQsIHFwX2lkKTsNCisJCXJldHVybiAtRVBFUk07 DQorCX0NCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KK2ludA0KK3J0ZV9jcnlwdG9kZXZfcXVldWVf cGFpcl9kZXRhY2hfYXN5bV9zZXNzaW9uKHVpbnQ4X3QgZGV2X2lkLCB1aW50MTZfdCBxcF9pZCwN CisJCXN0cnVjdCBydGVfY3J5cHRvZGV2X2FzeW1fc2Vzc2lvbiAqc2VzcykNCit7DQorCXN0cnVj dCBydGVfY3J5cHRvZGV2ICpkZXY7DQorDQorCWlmICghcnRlX2NyeXB0b2Rldl9wbWRfaXNfdmFs aWRfZGV2KGRldl9pZCkpIHsNCisJCUNERVZfTE9HX0VSUigiSW52YWxpZCBkZXZfaWQ9JWQiLCBk ZXZfaWQpOw0KKwkJcmV0dXJuIC1FSU5WQUw7DQorCX0NCisNCisJZGV2ID0gJnJ0ZV9jcnlwdG9f ZGV2aWNlc1tkZXZfaWRdOw0KKw0KKwkvKiBUaGUgQVBJIGlzIG9wdGlvbmFsLCBub3QgcmV0dXJu aW5nIGVycm9yIGlmIGRyaXZlciBkbyBub3Qgc3V1cG9ydCAqLw0KKwlSVEVfRlVOQ19QVFJfT1Jf RVJSX1JFVCgqZGV2LT5kZXZfb3BzLT5hc3ltX3FwX2RldGFjaF9zZXNzaW9uLCAwKTsNCisNCisJ dm9pZCAqc2Vzc19wcml2ID0gZ2V0X2FzeW1fc2Vzc2lvbl9wcml2YXRlX2RhdGEoc2VzcywgZGV2 LT5kcml2ZXJfaWQpOw0KKw0KKwlpZiAoZGV2LT5kZXZfb3BzLT5hc3ltX3FwX2RldGFjaF9zZXNz aW9uKGRldiwgcXBfaWQsIHNlc3NfcHJpdikpIHsNCisJCUNERVZfTE9HX0VSUigiZGV2X2lkICVk IGZhaWxlZCB0byBkZXRhY2ggcXA6ICVkIGZyb20gc2Vzc2lvbiIsDQorCQkJCWRldl9pZCwgcXBf aWQpOw0KKwkJcmV0dXJuIC1FUEVSTTsNCisJfQ0KKw0KKwlyZXR1cm4gMDsNCit9DQorDQoraW50 DQogcnRlX2NyeXB0b2Rldl9zeW1fc2Vzc2lvbl9jbGVhcih1aW50OF90IGRldl9pZCwNCiAJCXN0 cnVjdCBydGVfY3J5cHRvZGV2X3N5bV9zZXNzaW9uICpzZXNzKQ0KIHsNCkBAIC0xMTc2LDYgKzEz NjQsMjIgQEAgc3RydWN0IHJ0ZV9jcnlwdG9kZXZfc3ltX3Nlc3Npb24gKg0KIH0NCiANCiBpbnQN CitydGVfY3J5cHRvZGV2X2FzeW1fc2Vzc2lvbl9jbGVhcih1aW50OF90IGRldl9pZCwNCisJCXN0 cnVjdCBydGVfY3J5cHRvZGV2X2FzeW1fc2Vzc2lvbiAqc2VzcykNCit7DQorCXN0cnVjdCBydGVf Y3J5cHRvZGV2ICpkZXY7DQorDQorCWRldiA9IHJ0ZV9jcnlwdG9kZXZfcG1kX2dldF9kZXYoZGV2 X2lkKTsNCisNCisJaWYgKGRldiA9PSBOVUxMIHx8IHNlc3MgPT0gTlVMTCkNCisJCXJldHVybiAt RUlOVkFMOw0KKw0KKwlkZXYtPmRldl9vcHMtPmFzeW1fc2Vzc2lvbl9jbGVhcihkZXYsIHNlc3Mp Ow0KKw0KKwlyZXR1cm4gMDsNCit9DQorDQoraW50DQogcnRlX2NyeXB0b2Rldl9zeW1fc2Vzc2lv bl9mcmVlKHN0cnVjdCBydGVfY3J5cHRvZGV2X3N5bV9zZXNzaW9uICpzZXNzKQ0KIHsNCiAJdWlu dDhfdCBpOw0KQEAgLTExOTksNiArMTQwMywzMSBAQCBzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9zeW1f c2Vzc2lvbiAqDQogCXJldHVybiAwOw0KIH0NCiANCitpbnQNCitydGVfY3J5cHRvZGV2X2FzeW1f c2Vzc2lvbl9mcmVlKHN0cnVjdCBydGVfY3J5cHRvZGV2X2FzeW1fc2Vzc2lvbiAqc2VzcykNCit7 DQorCXVpbnQ4X3QgaTsNCisJdm9pZCAqc2Vzc19wcml2Ow0KKwlzdHJ1Y3QgcnRlX21lbXBvb2wg KnNlc3NfbXA7DQorDQorCWlmIChzZXNzID09IE5VTEwpDQorCQlyZXR1cm4gLUVJTlZBTDsNCisN CisJLyogQ2hlY2sgdGhhdCBhbGwgZGV2aWNlIHByaXZhdGUgZGF0YSBoYXMgYmVlbiBmcmVlZCAq Lw0KKwlmb3IgKGkgPSAwOyBpIDwgbmJfZHJpdmVyczsgaSsrKSB7DQorCQlzZXNzX3ByaXYgPSBn ZXRfYXN5bV9zZXNzaW9uX3ByaXZhdGVfZGF0YShzZXNzLCBpKTsNCisJCWlmIChzZXNzX3ByaXYg IT0gTlVMTCkNCisJCQlyZXR1cm4gLUVCVVNZOw0KKwl9DQorDQorCS8qIFJldHVybiBzZXNzaW9u IHRvIG1lbXBvb2wgKi8NCisJc2Vzc19tcCA9IHJ0ZV9tZW1wb29sX2Zyb21fb2JqKHNlc3MpOw0K KwlydGVfbWVtcG9vbF9wdXQoc2Vzc19tcCwgc2Vzcyk7DQorDQorCXJldHVybiAwOw0KK30NCisN CisNCiB1bnNpZ25lZCBpbnQNCiBydGVfY3J5cHRvZGV2X2dldF9oZWFkZXJfc2Vzc2lvbl9zaXpl KHZvaWQpDQogew0KQEAgLTEyMzUsNiArMTQ2NCw1NyBAQCBzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9z eW1fc2Vzc2lvbiAqDQogCQlyZXR1cm4gaGVhZGVyX3NpemU7DQogDQogCXJldHVybiBwcml2X3Nl c3Nfc2l6ZTsNCit9DQorDQordW5zaWduZWQgaW50DQorcnRlX2NyeXB0b2Rldl9nZXRfc3ltX3Nl c3Npb25fcHJpdmF0ZV9zaXplKHVpbnQ4X3QgZGV2X2lkKQ0KK3sNCisJc3RydWN0IHJ0ZV9jcnlw dG9kZXYgKmRldjsNCisJdW5zaWduZWQgaW50IGhlYWRlcl9zaXplID0gc2l6ZW9mKHZvaWQgKikg KiBuYl9kcml2ZXJzOw0KKwl1bnNpZ25lZCBpbnQgcHJpdl9zZXNzX3NpemU7DQorDQorCWlmICgh cnRlX2NyeXB0b2Rldl9wbWRfaXNfdmFsaWRfZGV2KGRldl9pZCkpDQorCQlyZXR1cm4gMDsNCisN CisJZGV2ID0gcnRlX2NyeXB0b2Rldl9wbWRfZ2V0X2RldihkZXZfaWQpOw0KKw0KKwlpZiAoKmRl di0+ZGV2X29wcy0+c3ltX3Nlc3Npb25fZ2V0X3NpemUgPT0gTlVMTCkNCisJCXJldHVybiAwOw0K Kw0KKwlwcml2X3Nlc3Nfc2l6ZSA9ICgqZGV2LT5kZXZfb3BzLT5zeW1fc2Vzc2lvbl9nZXRfc2l6 ZSkoZGV2KTsNCisNCisJLyoNCisJICogSWYgc2l6ZSBpcyBsZXNzIHRoYW4gc2Vzc2lvbiBoZWFk ZXIgc2l6ZSwNCisJICogcmV0dXJuIHRoZSBsYXR0ZXIsIGFzIHRoaXMgZ3VhcmFudGVlcyB0aGF0 DQorCSAqIHNlc3Npb25sZXNzIG9wZXJhdGlvbnMgd2lsbCB3b3JrDQorCSAqLw0KKwlpZiAocHJp dl9zZXNzX3NpemUgPCBoZWFkZXJfc2l6ZSkNCisJCXJldHVybiBoZWFkZXJfc2l6ZTsNCisNCisJ cmV0dXJuIHByaXZfc2Vzc19zaXplOw0KK30NCisNCisNCit1bnNpZ25lZCBpbnQNCitydGVfY3J5 cHRvZGV2X2dldF9hc3ltX3Nlc3Npb25fcHJpdmF0ZV9zaXplKHVpbnQ4X3QgZGV2X2lkKQ0KK3sN CisJc3RydWN0IHJ0ZV9jcnlwdG9kZXYgKmRldjsNCisJdW5zaWduZWQgaW50IGhlYWRlcl9zaXpl ID0gc2l6ZW9mKHZvaWQgKikgKiBuYl9kcml2ZXJzOw0KKwl1bnNpZ25lZCBpbnQgcHJpdl9zZXNz X3NpemU7DQorDQorCWlmICghcnRlX2NyeXB0b2Rldl9wbWRfaXNfdmFsaWRfZGV2KGRldl9pZCkp DQorCQlyZXR1cm4gMDsNCisNCisJZGV2ID0gcnRlX2NyeXB0b2Rldl9wbWRfZ2V0X2RldihkZXZf aWQpOw0KKw0KKwlpZiAoKmRldi0+ZGV2X29wcy0+YXN5bV9zZXNzaW9uX2dldF9zaXplID09IE5V TEwpDQorCQlyZXR1cm4gMDsNCisNCisJcHJpdl9zZXNzX3NpemUgPSAoKmRldi0+ZGV2X29wcy0+ YXN5bV9zZXNzaW9uX2dldF9zaXplKShkZXYpOw0KKwlpZiAocHJpdl9zZXNzX3NpemUgPCBoZWFk ZXJfc2l6ZSkNCisJCXJldHVybiBoZWFkZXJfc2l6ZTsNCisNCisJcmV0dXJuIHByaXZfc2Vzc19z aXplOw0KIA0KIH0NCiANCkBAIC0xMjY4LDYgKzE1NDgsMTMgQEAgc3RydWN0IHJ0ZV9tZW1wb29s ICoNCiAJCQlzaXplb2Yoc3RydWN0IHJ0ZV9jcnlwdG9fc3ltX29wKSArDQogCQkJcHJpdl9zaXpl Ow0KIA0KKwlpZiAodHlwZSA9PSBSVEVfQ1JZUFRPX09QX1RZUEVfQVNZTU1FVFJJQykgew0KKwkJ Lyogb3ZlcnJpZGUgc2l6ZSBieSBzaXplIG9mIGFzeW0gb3AgKi8NCisJCWVsdF9zaXplID0gc2l6 ZW9mKHN0cnVjdCBydGVfY3J5cHRvX29wKSArDQorCQkJICAgc2l6ZW9mKHN0cnVjdCBydGVfY3J5 cHRvX2FzeW1fb3ApICsNCisJCQkgICBwcml2X3NpemU7DQorCX0NCisNCiAJLyogbG9va3VwIG1l bXBvb2wgaW4gY2FzZSBhbHJlYWR5IGFsbG9jYXRlZCAqLw0KIAlzdHJ1Y3QgcnRlX21lbXBvb2wg Km1wID0gcnRlX21lbXBvb2xfbG9va3VwKG5hbWUpOw0KIA0KZGlmZiAtLWdpdCBhL2xpYi9saWJy dGVfY3J5cHRvZGV2L3J0ZV9jcnlwdG9kZXYuaCBiL2xpYi9saWJydGVfY3J5cHRvZGV2L3J0ZV9j cnlwdG9kZXYuaA0KaW5kZXggYzhmYTY4OS4uNzI4NDgzYyAxMDA2NDQNCi0tLSBhL2xpYi9saWJy dGVfY3J5cHRvZGV2L3J0ZV9jcnlwdG9kZXYuaA0KKysrIGIvbGliL2xpYnJ0ZV9jcnlwdG9kZXYv cnRlX2NyeXB0b2Rldi5oDQpAQCAtMTc4LDE1ICsxNzgsNDEgQEAgc3RydWN0IHJ0ZV9jcnlwdG9k ZXZfc3ltbWV0cmljX2NhcGFiaWxpdHkgew0KIAl9Ow0KIH07DQogDQorLyoqDQorICogQXN5bW1l dHJpYyBDcnlwdG8gQ2FwYWJpbGl0eQ0KKyAqDQorICovDQorc3RydWN0IHJ0ZV9jcnlwdG9kZXZf YXN5bW1ldHJpY19jYXBhYmlsaXR5IHsNCisJZW51bSBydGVfY3J5cHRvX2FzeW1feGZvcm1fdHlw ZSB4Zm9ybV90eXBlOw0KKwkvKio8IFRyYW5zZm9ybSB0eXBlOiBSU0EvTU9ERVhQL0RIL0VDREgv RFNBL0VDRFNBL0ZFQ0MvTU9ESU5WICovDQorCVJURV9TVERfQzExDQorCXVuaW9uIHsNCisJCXN0 cnVjdCBydGVfY3J5cHRvX3BhcmFtX3JhbmdlIG1vZGxlbjsNCisJCS8qKjwgUmFuZ2Ugb2YgbW9k dWx1cyBsZW5ndGggc3VwcG9ydGVkIGZvciBtb2R1bHVzIGJhc2VkDQorCQkgKiBhbGdvczoNCisJ CSAqIFJTQQ0KKwkJICogTU9ERVhQDQorCQkgKiBNT0RJTlYNCisJCSAqIERIDQorCQkgKg0KKwkJ ICogVmFsdWUgMCB0byBtaW4gYW5kL29yIG1heCBtZWFucyBubyBzcGVjaWZpYyBsaW1pdCBhbmQg bGltaXQNCisJCSAqIGlzIGltcGxlbWVudGF0aW9uIGRlcGVuZGVudA0KKwkJICoNCisJCSAqLw0K Kwl9Ow0KK307DQorDQogLyoqIFN0cnVjdHVyZSB1c2VkIHRvIGNhcHR1cmUgYSBjYXBhYmlsaXR5 IG9mIGEgY3J5cHRvIGRldmljZSAqLw0KIHN0cnVjdCBydGVfY3J5cHRvZGV2X2NhcGFiaWxpdGll cyB7DQogCWVudW0gcnRlX2NyeXB0b19vcF90eXBlIG9wOw0KLQkvKio8IE9wZXJhdGlvbiB0eXBl ICovDQorCS8qKjwgT3BlcmF0aW9uIHR5cGU6IHN5bW1ldHJpYy9hc3ltbWV0cmljICovDQogDQog CVJURV9TVERfQzExDQogCXVuaW9uIHsNCiAJCXN0cnVjdCBydGVfY3J5cHRvZGV2X3N5bW1ldHJp Y19jYXBhYmlsaXR5IHN5bTsNCiAJCS8qKjwgU3ltbWV0cmljIG9wZXJhdGlvbiBjYXBhYmlsaXR5 IHBhcmFtZXRlcnMgKi8NCisJCXN0cnVjdCBydGVfY3J5cHRvZGV2X2FzeW1tZXRyaWNfY2FwYWJp bGl0eSBhc3ltOw0KKwkJLyoqPCBBc3ltbWV0cmljIG9wZXJhdGlvbiBjYXBhYmlsaXR5IHBhcmFt ZXRlcnMgKi8NCiAJfTsNCiB9Ow0KIA0KQEAgLTIwMSw3ICsyMjcsMTcgQEAgc3RydWN0IHJ0ZV9j cnlwdG9kZXZfc3ltX2NhcGFiaWxpdHlfaWR4IHsNCiB9Ow0KIA0KIC8qKg0KLSAqICBQcm92aWRl IGNhcGFiaWxpdGllcyBhdmFpbGFibGUgZm9yIGRlZmluZWQgZGV2aWNlIGFuZCBhbGdvcml0aG0N CisgKiBTdHJ1Y3R1cmUgdXNlZCB0byBkZXNjcmliZSBhc3ltbWV0cmljIGNyeXB0byB4Zm9ybXMN CisgKiBFYWNoIHhmb3JtIG1hcHMgdG8gb25lIGFzeW0gYWxnb3JpdGhtLg0KKyAqDQorICovDQor c3RydWN0IHJ0ZV9jcnlwdG9kZXZfYXN5bV9jYXBhYmlsaXR5X2lkeCB7DQorCWVudW0gcnRlX2Ny eXB0b19hc3ltX3hmb3JtX3R5cGUgdHlwZTsNCisJLyoqPCBBc3ltbWV0cmljIHhmb3JtIChhbGdv KSB0eXBlICovDQorfTsNCisNCisvKioNCisgKiBQcm92aWRlIGNhcGFiaWxpdGllcyBhdmFpbGFi bGUgZm9yIGRlZmluZWQgZGV2aWNlIGFuZCBhbGdvcml0aG0NCiAgKg0KICAqIEBwYXJhbQlkZXZf aWQJCVRoZSBpZGVudGlmaWVyIG9mIHRoZSBkZXZpY2UuDQogICogQHBhcmFtCWlkeAkJRGVzY3Jp cHRpb24gb2YgY3J5cHRvIGFsZ29yaXRobXMuDQpAQCAtMjE1LDYgKzI1MSwyMCBAQCBzdHJ1Y3Qg cnRlX2NyeXB0b2Rldl9zeW1fY2FwYWJpbGl0eV9pZHggew0KIAkJY29uc3Qgc3RydWN0IHJ0ZV9j cnlwdG9kZXZfc3ltX2NhcGFiaWxpdHlfaWR4ICppZHgpOw0KIA0KIC8qKg0KKyAqICBQcm92aWRl IGNhcGFiaWxpdGllcyBhdmFpbGFibGUgZm9yIGRlZmluZWQgZGV2aWNlIGFuZCBhbGdvcml0aG0N CisgKg0KKyAqIEBwYXJhbQlkZXZfaWQJCVRoZSBpZGVudGlmaWVyIG9mIHRoZSBkZXZpY2UuDQor ICogQHBhcmFtCWFsZ28JCURlc2NyaXB0aW9uIG9mIGNyeXB0byBhbGdvcml0aG1zLg0KKyAqDQor ICogQHJldHVybg0KKyAqICAgLSBSZXR1cm4gZGVzY3JpcHRpb24gb2YgdGhlIGFzeW1tZXRyaWMg Y3J5cHRvIGNhcGFiaWxpdHkgaWYgZXhpc3QuDQorICogICAtIFJldHVybiBOVUxMIGlmIHRoZSBj YXBhYmlsaXR5IG5vdCBleGlzdC4NCisgKi8NCitjb25zdCBzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9h c3ltbWV0cmljX2NhcGFiaWxpdHkgKg0KK3J0ZV9jcnlwdG9kZXZfYXN5bV9jYXBhYmlsaXR5X2dl dCh1aW50OF90IGRldl9pZCwNCisJCWNvbnN0IHN0cnVjdCBydGVfY3J5cHRvZGV2X2FzeW1fY2Fw YWJpbGl0eV9pZHggKmlkeCk7DQorDQorLyoqDQogICogQ2hlY2sgaWYga2V5IHNpemUgYW5kIGlu aXRpYWwgdmVjdG9yIGFyZSBzdXBwb3J0ZWQNCiAgKiBpbiBjcnlwdG8gY2lwaGVyIGNhcGFiaWxp dHkNCiAgKg0KQEAgLTI3MCw2ICszMjAsMjEgQEAgc3RydWN0IHJ0ZV9jcnlwdG9kZXZfc3ltX2Nh cGFiaWxpdHlfaWR4IHsNCiAJCXVpbnQxNl90IGl2X3NpemUpOw0KIA0KIC8qKg0KKyAqIENoZWNr IGlmIG1vZHVsdXMgbGVuZ3RoIGlzIGluIHN1cHBvcnRlZCByYW5nZQ0KKyAqDQorICogQHBhcmFt CWNhcGFiaWxpdHkJRGVzY3JpcHRpb24gb2YgdGhlIGFzeW1tZXRyaWMgY3J5cHRvIGNhcGFiaWxp dHkuDQorICogQHBhcmFtCW1vZGxlbgkJbW9kdWx1cyBsZW5ndGguDQorICoNCisgKiBAcmV0dXJu DQorICogICAtIFJldHVybiAwIGlmIHRoZSBwYXJhbWV0ZXJzIGFyZSBpbiByYW5nZSBvZiB0aGUg Y2FwYWJpbGl0eS4NCisgKiAgIC0gUmV0dXJuIC0xIGlmIHRoZSBwYXJhbWV0ZXJzIGFyZSBvdXQg b2YgcmFuZ2Ugb2YgdGhlIGNhcGFiaWxpdHkuDQorICovDQoraW50DQorcnRlX2NyeXB0b2Rldl9h c3ltX2NhcGFiaWxpdHlfY2hlY2tfbW9kbGVuKA0KKwkJY29uc3Qgc3RydWN0IHJ0ZV9jcnlwdG9k ZXZfYXN5bW1ldHJpY19jYXBhYmlsaXR5ICpjYXBhYmlsaXR5LA0KKwkJdWludDE2X3QgbW9kbGVu KTsNCisNCisvKioNCiAgKiBQcm92aWRlIHRoZSBjaXBoZXIgYWxnb3JpdGhtIGVudW0sIGdpdmVu IGFuIGFsZ29yaXRobSBzdHJpbmcNCiAgKg0KICAqIEBwYXJhbQlhbGdvX2VudW0JQSBwb2ludGVy IHRvIHRoZSBjaXBoZXIgYWxnb3JpdGhtDQpAQCAtMzE0LDYgKzM3OSwyMiBAQCBzdHJ1Y3QgcnRl X2NyeXB0b2Rldl9zeW1fY2FwYWJpbGl0eV9pZHggew0KIHJ0ZV9jcnlwdG9kZXZfZ2V0X2FlYWRf YWxnb19lbnVtKGVudW0gcnRlX2NyeXB0b19hZWFkX2FsZ29yaXRobSAqYWxnb19lbnVtLA0KIAkJ Y29uc3QgY2hhciAqYWxnb19zdHJpbmcpOw0KIA0KKy8qKg0KKyAqIFByb3ZpZGUgdGhlIEFzeW1t ZXRyaWMgeGZvcm0gZW51bSwgZ2l2ZW4gYW4geGZvcm0gc3RyaW5nDQorICoNCisgKiBAcGFyYW0J eGZvcm1fZW51bQlBIHBvaW50ZXIgdG8gdGhlIHhmb3JtIHR5cGUNCisgKgkJCQllbnVtIHRvIGJl IGZpbGxlZA0KKyAqIEBwYXJhbQl4Zm9ybV9zdHJpbmcJeGZvcm0gc3RyaW5nDQorICoNCisgKiBA cmV0dXJuDQorICogLSBSZXR1cm4gLTEgaWYgc3RyaW5nIGlzIG5vdCB2YWxpZA0KKyAqIC0gUmV0 dXJuIDAgaXMgdGhlIHN0cmluZyBpcyB2YWxpZA0KKyAqLw0KK2ludA0KK3J0ZV9jcnlwdG9kZXZf Z2V0X2FzeW1feGZvcm1fZW51bShlbnVtIHJ0ZV9jcnlwdG9fYXN5bV94Zm9ybV90eXBlICp4Zm9y bV9lbnVtLA0KKwkJY29uc3QgY2hhciAqeGZvcm1fc3RyaW5nKTsNCisNCisNCiAvKiogTWFjcm8g dXNlZCBhdCBlbmQgb2YgY3J5cHRvIFBNRCBsaXN0ICovDQogI2RlZmluZSBSVEVfQ1JZUFRPREVW X0VORF9PRl9DQVBBQklMSVRJRVNfTElTVCgpIFwNCiAJeyBSVEVfQ1JZUFRPX09QX1RZUEVfVU5E RUZJTkVEIH0NCkBAIC0zNzksMTYgKzQ2MCw5OSBAQCBzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9pbmZv IHsNCiAJLyoqPCBBcnJheSBvZiBkZXZpY2VzIHN1cHBvcnRlZCBjYXBhYmlsaXRpZXMgKi8NCiAN CiAJdW5zaWduZWQgbWF4X25iX3F1ZXVlX3BhaXJzOw0KLQkvKio8IE1heGltdW0gbnVtYmVyIG9m IHF1ZXVlcyBwYWlycyBzdXBwb3J0ZWQgYnkgZGV2aWNlLiAqLw0KKwkvKio8IE1heGltdW0gbnVt YmVyIG9mIHF1ZXVlcyBwYWlycyBzdXBwb3J0ZWQgYnkgZGV2aWNlLg0KKwkgKg0KKwkgKiBUaGlz IGlzIHRvdGFsIG51bWJlciBvZiBxdWV1ZXMgc3VwcG9ydGVkIGJ5IGRldmljZSBhbmQgaW5jbHVz aXZlDQorCSAqIG9mIG51bWJlcnMgdXNlZCBmb3IgYm90aCBzeW1tZXRyaWMgYW5kIGFzeW1tZXRy aWMgZm9yIFBNRCB0aGF0DQorCSAqIHN1cHBvcnQgc3ltbWV0cmljIGFuZCBhc3ltbWV0cmljIG9w IGkuZS4NCisJICoNCisJICogbWF4X25iX3F1ZXVlX3BhaXJzID0gbWF4X25iX3N5bW1fcXAgKyBt YXhfbmJfYXN5bW1fcXANCisJICoNCisJICogRm9sbG93aW5nIHRhYmxlIGRlbW9uc3RhcnRlIHdo YXQgdGhlIHZhbHVlcyBzaG91bGQgYmUgZm9yIGRldmljZQ0KKwkgKiB3aXRoIG1heCBudW0gb2Yg J24nIHF1ZXVlIHBhaXIgKHggPSBkb24ndCBjYXJlKToNCisJICoNCisJICogIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N CisJICogfGRldl9jYXBhICAgICAgICAgICAgICAgIHwgbWF4X25iX2FzeW1tX3FwfCBtYXhfbmJf c3ltbV9xcCB8IG1heF9xcHwNCisJICogIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisJICogfCBTeW1tIG9ubHkgICAg ICAgICAgICAgIHwgICAgeCAgICAgICAgICAgfCAwICAgICAgICAgICAgICB8IG4gICAgIHwNCisJ ICogfCBBc3ltbSBvbmx5ICAgICAgICAgICAgIHwgICAgMCAgICAgICAgICAgfCB4ICAgICAgICAg ICAgICB8IG4gICAgIHwNCisJICogfCBzeW1tK2FzeW1tIHcvIGZpeGVkIHFwIHwgICAgcCAgICAg ICAgICAgfCBuLXAgICAgICAgICAgICB8IG4gICAgIHwNCisJICogfCBzeW1tK2FzeW1tIHcvIGFs bCBxcCAgIHwgICAgMCAgICAgICAgICAgfCAwICAgICAgICAgICAgICB8IG4gICAgIHwNCisJICog IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0NCisJICoNCisJICogLSBpZiBkZXZpY2Ugc3VwcG9ydHMgb25seSBhc3ltbWV0 cmljLCB0aGVuIG1heF9uYl9xdWV1ZV9wYWlyDQorCSAqICAgaW5kaWNhdGVzIG1heCBxcCBhdmFp bGFibGUgZm9yIGFzeW1tZXRyaWMgb3BlcmF0aW9ucy4NCisJICoNCisJICogLSBpZiBkZXZpY2Ug c3VwcG9ydCBvbmx5IHN5bW1ldHJpYywgdGhlbiBtYXhfbmJfcXVldWVfcGFpcg0KKwkgKiAgIGlu ZGljYXRlcyBtYXggcXAgYXZhaWxhYmxlIGZvciBzeW1tZXRyaWMgb3BlcmF0aW9ucy4NCisJICoN CisJICogLSBpZiBkZXZpY2Ugc3VwcG9ydCBib3RoIHN5bW1ldHJpYyBhbmQgYXN5bW1ldHJpYyBj cnlwdG8gb3AsDQorCSAqICAgdGhlbiBtYXhfbmJfcXVldWVfcGFpciBpbmRpY2F0ZXMgdG90YWwg bnVtYmVyIG9mIGF2YWlsYWJsZQ0KKwkgKiAgIHFwIGZvciBib3RoIG9wZXJhdGlvbnMuDQorCSAq DQorCSAqICoqU3BlY2lhbCBub3RlIG9uIGRldmljZXMgc3VwcG9ydGluZyBzeW1tIGFuZCBhc3lt bToNCisJICoNCisJICogU3VjaCBkdWFsIGZ1bmN0aW9uIGRldmljZXMgbWF5IG1hbmFnZSBxcCBp biB2YXJpb3VzIHBvc3NpYmxlIHdheXMuDQorCSAqIFRoZXkgY2FuIGVpdGhlcjoNCisJICoNCisJ ICogMS4gVXNlIGFsbCBtYXhfbmJfcXVldWVfcGFpciBmb3IgYW55IG9wZXJhdGlvbiB0eXBlLg0K KwkgKiAgICBJbiBzdWNoIGNhc2UsIGFwcCBjYW4gY29uZmlndXJlIGFueSBvZiB0aGUgYXZhaWxh YmxlIHFwDQorCSAqICAgIGZvciBhbnkgb3BlcmFpdG9uLiBUaHVzLA0KKwkgKiAgICBkZXZfaW5m byBzaG91bGQgcmV0dXJuIG51bSBxdWV1ZSBwYWlyIGRpc3RyaWJ1dGlvbiBhcyBtZW50aW9uZWQN CisJICogICAgaW4gcm93ICdzeW1tK2FzeW1tIHcvIGFsbCBxcCcgaW4gdGFibGUgYWJvdmUNCisJ ICoNCisJICogMi4gT3IsIHVzZSBkZWRpY2F0ZWQgc2V0IG9mIHFwIGZvciBlYWNoIG9wDQorCSAq ICAgIFN1Y2ggZGV2aWNlIFBNRHMsIGNhbiB0YWtlIDIgYXBwcm9hY2hlczoNCisJICogICAgMS4g RWl0aGVyLCBpdCBjYW4gc2hvdyB1cCBhcyAyIHNlcGFyYXRlIFBNRHMgd2hlcmUgb25lIGFzDQor CSAqCSBzeW1tZXRyaWMgb25seSBhbmQgb3RoZXIgYXN5bW1ldHJpYyBvbmx5LiBpbiBzdWNoIGNh c2UsDQorCSAqCSBkZXZpY2UgaW5mbyB3aWxsIHJldHVybiBudW0gcXVldWUgcGFpciBkaXN0cmli dXRpb24gYXMNCisJICoJIG1lbnRpb25lZCBpbiByb3cgJ3N5bW1ldHJpYy9hc3ltbWV0cmljIG9u bHknIGRldmljZQ0KKwkgKg0KKwkgKiAgICAyLiBPciwgY2FuIGFwcGVhciBhcyBvbmUgUE1EIHdp dGggbnVtYmVyIG9mIHF1ZXVlIHBhaXIgZGVkaWNhdGVkDQorCSAqCSB0byBlYWNoIG9wZXJhdGlv biBpbiBtYXhfbmJfc3ltbV9xcCBhbmQgbWF4X25iX2FzeW1tX3FwDQorCSAqDQorCSAqLw0KIA0K IAlzdHJ1Y3Qgew0KIAkJdW5zaWduZWQgbWF4X25iX3Nlc3Npb25zOw0KLQkJLyoqPCBNYXhpbXVt IG51bWJlciBvZiBzZXNzaW9ucyBzdXBwb3J0ZWQgYnkgZGV2aWNlLiAqLw0KKwkJLyoqPCBNYXhp bXVtIG51bWJlciBvZiBzZXNzaW9ucyBzdXBwb3J0ZWQNCisJCSAqIGZvciBzeW1tZXRyaWMgb3Bl cmF0aW9ucy4NCisJCSAqLw0KIAkJdW5zaWduZWQgaW50IG1heF9uYl9zZXNzaW9uc19wZXJfcXA7 DQotCQkvKio8IE1heGltdW0gbnVtYmVyIG9mIHNlc3Npb25zIHBlciBxdWV1ZSBwYWlyLg0KKwkJ LyoqPCBNYXhpbXVtIG51bWJlciBvZiBzeW1tZXRyaWMgc2Vzc2lvbnMNCisJCSAqIHBlciBxdWV1 ZSBwYWlyLg0KIAkJICogRGVmYXVsdCAwIGZvciBpbmZpbml0ZSBzZXNzaW9ucw0KIAkJICovDQor CQkgdW5zaWduZWQgaW50IG1heF9uYl9zeW1fcXA7DQorCQkvKio8IE1heGltdW0gbnVtIG9mIHFw IGRlZGljYXRlZCB0byBzeW1tZXRyaWMgb3AuDQorCQkgKiBOQSBmb3IgZGV2aWNlIHRoYXQgc3Vw cG9ydCBzeW1tZXRyaWMgb25seS4NCisJCSAqIDAgbWVhbnMgZGV2aWNlIGNhbiB1c2UgYWxsIG1h eF9uYl9xdWV1ZV9wYWlyDQorCQkgKiBmb3Igc3ltbSBvcC4NCisJCSAqIFBsZWFzZSBub3RlLCB0 aGlzIHZhcmlhYmxlIG9ubHkgdGVsbHMgbnVtYmVyIG9mIHF1ZXVlIHBhaXJzDQorCQkgKiB0aGF0 IGNhbiBiZSBlbnF1ZXVlZCB3aXRoIHN5bW1ldHJpYyBvcHMgYW5kIGRvZXNuJ3QgcmV2ZWFsDQor CQkgKiBzcGVjaWZpYyBJRHMgdXNlZCBieSBQTURzIGZvciB0aGlzIG9wZXJhdGlvbg0KKwkJICoN CisJCSAqLw0KIAl9IHN5bTsNCisNCisJc3RydWN0IHsNCisJCXVuc2lnbmVkIGludCBtYXhfbmJf YXN5bV9zZXNzaW9uczsNCisJCS8qKjwgTWF4aW11bSBudW1iZXIgb2YgYXN5bW1ldHJpYyBzZXNz aW9ucyBzdXBwb3J0ZWQgYnkgZGV2aWNlLg0KKwkJICogMCBpbmZpbml0ZSBhcyBsb25nIGFzIHJl c291cmNlcyBhcmUgYXZhaWxhYmxlDQorCQkgKi8NCisJCXVuc2lnbmVkIGludCBtYXhfbmJfYXN5 bV9zZXNzaW9uc19wZXJfcXA7DQorCQkvKio8IE1heGltdW0gbnVtYmVyIG9mIGFzeW1tZXRyaWMg c2Vzc2lvbnMgcGVyIHF1ZXVlIHBhaXIuDQorCQkgKiAwIG1lYW5zIGluZmluaXRlIGFzIGxvbmcg YXMgcmVzb3VyY2VzIGFyZSBhdmFpbGFibGUNCisJCSAqLw0KKwkJdW5zaWduZWQgaW50IG1heF9u Yl9hc3ltX3FwOw0KKwkJLyoqPCBNYXhpbXVtIG51bWJlciBvZiBxcCBkZWRpY2F0ZWQgZm9yIGFz eW1tIG9wZXJhdGlvbi4NCisJCSAqIDAgbWVhbnMgZGV2aWNlIGNhbiB1c2UgYWxsIG1heF9uYl9x dWV1ZV9wYWlyIGZvciBhc3ltbSBvcC4NCisJCSAqIFBsZWFzZSBub3RlLCB0aGlzIHZhcmlhYmxl IG9ubHkgdGVsbHMgbnVtYmVyIG9mIHF1ZXVlIHBhaXJzDQorCQkgKiB0aGF0IGNhbiBiZSBlbnF1 ZXVlZCB3aXRoIGFzeW1tZXRyaWMgb3BzIGFuZCBkb2Vzbid0IHJldmVhbA0KKwkJICogc3BlY2lm aWMgSURzIHVzZWQgYnkgUE1EcyBmb3IgdGhpcyBvcGVyYXRpb24NCisJCSAqDQorCQkgKi8NCisJ fSBhc3ltOw0KIH07DQogDQogI2RlZmluZSBSVEVfQ1JZUFRPREVWX0RFVEFDSEVEICAoMCkNCkBA IC01MTMsNiArNjc3LDI0IEBAIHN0cnVjdCBydGVfY3J5cHRvZGV2X2NvbmZpZyB7DQogCWludCBz b2NrZXRfaWQ7CQkJLyoqPCBTb2NrZXQgdG8gYWxsb2NhdGUgcmVzb3VyY2VzIG9uICovDQogCXVp bnQxNl90IG5iX3F1ZXVlX3BhaXJzOw0KIAkvKio8IE51bWJlciBvZiBxdWV1ZSBwYWlycyB0byBj b25maWd1cmUgb24gZGV2aWNlICovDQorDQorCXVpbnQxNl90IG5iX3N5bW1fcXA7DQorCS8qKjwg TnVtYmVyIG9mIHF1ZXVlIHBhaXIgdG8gYmUgdXNlZCBmb3Igc3ltbWV0cmljIG9wZXJhdGlvbnMu DQorCSAqIE9wdGlvbmFsIGlucHV0Lg0KKwkgKiBWYWxpZCBmb3IgZGV2aWNlIHN1cHBvcnRpbmcg Ym90aCBzeW1tZXRyaWMgYW5kIGFzeW1tZXRyaWMuDQorCSAqIFNob3VsZCBiZSBsZXNzIHRoYW4g ZXF1YWwgdG8gcnRlX2NyeXB0b2Rldl9pbmZvOm1heF9uYl9zeW1tX3FwLg0KKwkgKiBwbGVhc2Ug bm90ZSB0aGlzIG51bWJlciBvbmx5IHRlbGxzIGhvdyBtYW55IHF1ZXVlIHBhaXIgdG8gYmUgdXNl ZA0KKwkgKiBmb3Igc3ltbWV0cmljIG9wIGFuZCBkb2VzICpub3QqIHRlbGwgc3BlY2lmaWMgSURz IHRvIGJlIHVzZWQuDQorCSAqLw0KKw0KKwl1aW50MTZfdCBuYl9hc3ltbV9xcDsNCisJLyoqPCBO dW1iZXIgb2YgcXVldWUgcGFpciB0byBiZSB1c2VkIGZvciBhc3ltbWV0cmljIG9wZXJhdGlvbnMu DQorCSAqIE9wdGlvbmFsIGlucHV0Lg0KKwkgKiBWYWxpZCBmb3IgZGV2aWNlIHN1cHBvcnRpbmcg Ym90aCBhc3ltbWV0cmljIGFuZCBzeW1tZXRyaWMuDQorCSAqIFNob3VsZCBiZSBsZXNzIHRoYW4g ZXF1YWwgdG8gcnRlX2NyeXB0b2Rldl9pbmZvOm1heF9uYl9hc3ltbV9xcA0KKwkgKiBQbGVhc2Ug bm90ZSB0aGlzIG51bWJlciBvbmx5IHRlbGxzIGhvdyBtYW55IHF1ZXVlIHBhaXIgdG8gYmUNCisJ ICogdXNlZCBmb3IgYXN5bW1ldHJpYyBhbmQgZG9lcyAqbm90KiBzcGVjaWZpY2FsbHkgdGVsbCBx cCBJRA0KKwkgKi8NCiB9Ow0KIA0KIC8qKg0KQEAgLTU5NSw2ICs3NzcsOSBAQCBzdHJ1Y3QgcnRl X2NyeXB0b2Rldl9jb25maWcgew0KICAqIEByZXR1cm4NCiAgKiAgIC0gMDogU3VjY2VzcywgcXVl dWUgcGFpciBjb3JyZWN0bHkgc2V0IHVwLg0KICAqICAgLSA8MDogUXVldWUgcGFpciBjb25maWd1 cmF0aW9uIGZhaWxlZA0KKyAqDQorICogQG5vdGU6IHF1ZXVlIHBhaXIgdG8gYmUgc2V0dXAgaW5k ZXBlbmRlbnQgb2Ygb3BlcmF0aW9uIHR5cGUuDQorICoNCiAgKi8NCiBleHRlcm4gaW50DQogcnRl X2NyeXB0b2Rldl9xdWV1ZV9wYWlyX3NldHVwKHVpbnQ4X3QgZGV2X2lkLCB1aW50MTZfdCBxdWV1 ZV9wYWlyX2lkLA0KQEAgLTY0NCw2ICs4MjksMjYgQEAgc3RydWN0IHJ0ZV9jcnlwdG9kZXZfY29u ZmlnIHsNCiBleHRlcm4gdWludDE2X3QNCiBydGVfY3J5cHRvZGV2X3F1ZXVlX3BhaXJfY291bnQo dWludDhfdCBkZXZfaWQpOw0KIA0KKy8qKg0KKyAqIEdldCB0aGUgbnVtYmVyIG9mIHN5bW1ldHJp YyBxdWV1ZSBwYWlycyBvbiB0aGlzIGNyeXB0byBkZXZpY2UNCisgKg0KKyAqIEBwYXJhbQlkZXZf aWQJCUNyeXB0byBkZXZpY2UgaWRlbnRpZmllci4NCisgKiBAcmV0dXJuDQorICogICAtIFRoZSBu dW1iZXIgb2YgY29uZmlndXJlZCBzeW1tZXRyaWMgcXVldWUgcGFpcnMuDQorICovDQorZXh0ZXJu IHVpbnQxNl90DQorcnRlX2NyeXB0b2Rldl9zeW1fcXVldWVfcGFpcl9jb3VudCh1aW50OF90IGRl dl9pZCk7DQorDQorDQorLyoqDQorICogR2V0IHRoZSBudW1iZXIgb2YgYXN5bW1ldHJpYyBxdWV1 ZSBwYWlycyBvbiB0aGlzIGNyeXB0byBkZXZpY2UNCisgKg0KKyAqIEBwYXJhbQlkZXZfaWQJCUNy eXB0byBkZXZpY2UgaWRlbnRpZmllci4NCisgKiBAcmV0dXJuDQorICogICAtIFRoZSBudW1iZXIg b2YgY29uZmlndXJlZCBhc3ltbWV0cmljIHF1ZXVlIHBhaXJzLg0KKyAqLw0KK2V4dGVybiB1aW50 MTZfdA0KK3J0ZV9jcnlwdG9kZXZfYXN5bV9xdWV1ZV9wYWlyX2NvdW50KHVpbnQ4X3QgZGV2X2lk KTsNCiANCiAvKioNCiAgKiBSZXRyaWV2ZSB0aGUgZ2VuZXJhbCBJL08gc3RhdGlzdGljcyBvZiBh IGRldmljZS4NCkBAIC03OTUsNiArMTAwMCwxMCBAQCBzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9kYXRh IHsNCiAJLyoqPCBBcnJheSBvZiBwb2ludGVycyB0byBxdWV1ZSBwYWlycy4gKi8NCiAJdWludDE2 X3QgbmJfcXVldWVfcGFpcnM7DQogCS8qKjwgTnVtYmVyIG9mIGRldmljZSBxdWV1ZSBwYWlycy4g Ki8NCisJdWludDE2X3QgbmJfc3ltX3FwOw0KKwkvKio8IE51bWJlciBvZiBzeW1tZXRyaWMgcXVl dWUgcGFpcnMuICovDQorCXVpbnQxNl90IG5iX2FzeW1fcXA7DQorCS8qKjwgTnVtYmVyIG9mIGFz eW1tZXRyaWMgcXVldWUgcGFpcnMuICovDQogDQogCXZvaWQgKmRldl9wcml2YXRlOw0KIAkvKio8 IFBNRC1zcGVjaWZpYyBwcml2YXRlIGRhdGEgKi8NCkBAIC05MDAsNiArMTEwOSwxMSBAQCBzdHJ1 Y3QgcnRlX2NyeXB0b2Rldl9zeW1fc2Vzc2lvbiB7DQogCS8qKjwgUHJpdmF0ZSBzZXNzaW9uIG1h dGVyaWFsICovDQogfTsNCiANCisvKiogQ3J5cHRvZGV2IGFzeW1tZXRyaWMgY3J5cHRvIHNlc3Np b24gKi8NCitzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9hc3ltX3Nlc3Npb24gew0KKwlfX2V4dGVuc2lv bl9fIHZvaWQgKnNlc3NfcHJpdmF0ZV9kYXRhWzBdOw0KKwkvKio8IFByaXZhdGUgYXN5bW1ldHJp YyBzZXNzaW9uIG1hdGVyaWFsICovDQorfTsNCiANCiAvKioNCiAgKiBDcmVhdGUgc3ltbWV0cmlj IGNyeXB0byBzZXNzaW9uIGhlYWRlciAoZ2VuZXJpYyB3aXRoIG5vIHByaXZhdGUgZGF0YSkNCkBA IC05MTQsNiArMTEyOCwxOCBAQCBzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9zeW1fc2Vzc2lvbiAqDQog cnRlX2NyeXB0b2Rldl9zeW1fc2Vzc2lvbl9jcmVhdGUoc3RydWN0IHJ0ZV9tZW1wb29sICptZW1w b29sKTsNCiANCiAvKioNCisgKiBDcmVhdGUgYXN5bW1ldHJpYyBjcnlwdG8gc2Vzc2lvbiBoZWFk ZXIgKGdlbmVyaWMgd2l0aCBubyBwcml2YXRlIGRhdGEpDQorICoNCisgKiBAcGFyYW0gICBtZW1w b29sICAgIG1lbXBvb2wgdG8gYWxsb2NhdGUgYXN5bW1ldHJpYyBzZXNzaW9uDQorICogICAgICAg ICAgICAgICAgICAgICBvYmplY3RzIGZyb20NCisgKiBAcmV0dXJuDQorICogIC0gT24gc3VjY2Vz cyByZXR1cm4gcG9pbnRlciB0byBhc3ltLXNlc3Npb24NCisgKiAgLSBPbiBmYWlsdXJlIHJldHVy bnMgTlVMTA0KKyAqLw0KK3N0cnVjdCBydGVfY3J5cHRvZGV2X2FzeW1fc2Vzc2lvbiAqDQorcnRl X2NyeXB0b2Rldl9hc3ltX3Nlc3Npb25fY3JlYXRlKHN0cnVjdCBydGVfbWVtcG9vbCAqbWVtcG9v bCk7DQorDQorLyoqDQogICogRnJlZXMgc3ltbWV0cmljIGNyeXB0byBzZXNzaW9uIGhlYWRlciwg YWZ0ZXIgY2hlY2tpbmcgdGhhdCBhbGwNCiAgKiB0aGUgZGV2aWNlIHByaXZhdGUgZGF0YSBoYXMg YmVlbiBmcmVlZCwgcmV0dXJuaW5nIGl0DQogICogdG8gaXRzIG9yaWdpbmFsIG1lbXBvb2wuDQpA QCAtOTI5LDYgKzExNTUsMjEgQEAgc3RydWN0IHJ0ZV9jcnlwdG9kZXZfc3ltX3Nlc3Npb24gKg0K IHJ0ZV9jcnlwdG9kZXZfc3ltX3Nlc3Npb25fZnJlZShzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9zeW1f c2Vzc2lvbiAqc2Vzcyk7DQogDQogLyoqDQorICogRnJlZXMgYXN5bW1ldHJpYyBjcnlwdG8gc2Vz c2lvbiBoZWFkZXIsIGFmdGVyIGNoZWNraW5nIHRoYXQgYWxsDQorICogdGhlIGRldmljZSBwcml2 YXRlIGRhdGEgaGFzIGJlZW4gZnJlZWQsIHJldHVybmluZyBpdA0KKyAqIHRvIGl0cyBvcmlnaW5h bCBtZW1wb29sLg0KKyAqDQorICogQHBhcmFtICAgc2VzcyAgICAgU2Vzc2lvbiBoZWFkZXIgdG8g YmUgZnJlZWQuDQorICoNCisgKiBAcmV0dXJuDQorICogIC0gMCBpZiBzdWNjZXNzZnVsLg0KKyAq ICAtIC1FSU5WQUwgaWYgc2Vzc2lvbiBpcyBOVUxMLg0KKyAqICAtIC1FQlVTWSBpZiBub3QgYWxs IGRldmljZSBwcml2YXRlIGRhdGEgaGFzIGJlZW4gZnJlZWQuDQorICovDQoraW50DQorcnRlX2Ny eXB0b2Rldl9hc3ltX3Nlc3Npb25fZnJlZShzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9hc3ltX3Nlc3Np b24gKnNlc3MpOw0KKw0KKy8qKg0KICAqIEZpbGwgb3V0IHByaXZhdGUgZGF0YSBmb3IgdGhlIGRl dmljZSBpZCwgYmFzZWQgb24gaXRzIGRldmljZSB0eXBlLg0KICAqDQogICogQHBhcmFtICAgZGV2 X2lkICAgSUQgb2YgZGV2aWNlIHRoYXQgd2Ugd2FudCB0aGUgc2Vzc2lvbiB0byBiZSB1c2VkIG9u DQpAQCAtOTUwLDYgKzExOTEsMjcgQEAgc3RydWN0IHJ0ZV9jcnlwdG9kZXZfc3ltX3Nlc3Npb24g Kg0KIAkJCXN0cnVjdCBydGVfbWVtcG9vbCAqbWVtcG9vbCk7DQogDQogLyoqDQorICogSW5pdGlh bGl6ZSBhc3ltbWV0cmljIHNlc3Npb24gb24gYSBkZXZpY2Ugd2l0aCBzcGVjaWZpYyBhc3ltbWV0 cmljIHhmb3JtDQorICoNCisgKiBAcGFyYW0gICBkZXZfaWQgICBJRCBvZiBkZXZpY2UgdGhhdCB3 ZSB3YW50IHRoZSBzZXNzaW9uIHRvIGJlIHVzZWQgb24NCisgKiBAcGFyYW0gICBzZXNzICAgICBT ZXNzaW9uIHRvIGJlIHNldCB1cCBvbiBhIGRldmljZQ0KKyAqIEBwYXJhbSAgIHhmb3JtcyAgIEFz eW1tZXRyaWMgY3J5cHRvIHRyYW5zZm9ybSBvcGVyYXRpb25zIHRvIGFwcGx5IG9uIGZsb3cNCisg KiAgICAgICAgICAgICAgICAgICBwcm9jZXNzZWQgd2l0aCB0aGlzIHNlc3Npb24NCisgKiBAcGFy YW0gICBtZW1wb29sICBNZW1wb29sIHRvIGJlIHVzZWQgZm9yIGludGVybmFsIGFsbG9jYXRpb24u DQorICoNCisgKiBAcmV0dXJuDQorICogIC0gT24gc3VjY2VzcywgemVyby4NCisgKiAgLSAtRUlO VkFMIGlmIGlucHV0IHBhcmFtZXRlcnMgYXJlIGludmFsaWQuDQorICogIC0gLUVOT1RTVVAgaWYg Y3J5cHRvIGRldmljZSBkb2VzIG5vdCBzdXBwb3J0IHRoZSBjcnlwdG8gdHJhbnNmb3JtLg0KKyAq ICAtIC1FTk9NRU0gaWYgdGhlIHByaXZhdGUgc2Vzc2lvbiBjb3VsZCBub3QgYmUgYWxsb2NhdGVk Lg0KKyAqLw0KK2ludA0KK3J0ZV9jcnlwdG9kZXZfYXN5bV9zZXNzaW9uX2luaXQodWludDhfdCBk ZXZfaWQsDQorCQkJc3RydWN0IHJ0ZV9jcnlwdG9kZXZfYXN5bV9zZXNzaW9uICpzZXNzLA0KKwkJ CXN0cnVjdCBydGVfY3J5cHRvX2FzeW1feGZvcm0gKnhmb3JtcywNCisJCQlzdHJ1Y3QgcnRlX21l bXBvb2wgKm1lbXBvb2wpOw0KKw0KKy8qKg0KICAqIEZyZWVzIHByaXZhdGUgZGF0YSBmb3IgdGhl IGRldmljZSBpZCwgYmFzZWQgb24gaXRzIGRldmljZSB0eXBlLA0KICAqIHJldHVybmluZyBpdCB0 byBpdHMgbWVtcG9vbC4NCiAgKg0KQEAgLTk2NSw3ICsxMjI3LDIzIEBAIHN0cnVjdCBydGVfY3J5 cHRvZGV2X3N5bV9zZXNzaW9uICoNCiAJCQlzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9zeW1fc2Vzc2lv biAqc2Vzcyk7DQogDQogLyoqDQorICogRnJlZXMgcmVzb3VyY2VzIGhlbGQgYnkgYXN5bW1ldHJp YyBzZXNzaW9uIGR1cmluZyBydGVfY3J5cHRvZGV2X3Nlc3Npb25faW5pdA0KKyAqDQorICogQHBh cmFtICAgZGV2X2lkICAgSUQgb2YgZGV2aWNlIHRoYXQgdXNlcyB0aGUgYXN5bW1ldHJpYyBzZXNz aW9uLg0KKyAqIEBwYXJhbSAgIHNlc3MgICAgIEFzeW1tZXRyaWMgc2Vzc2lvbiBzZXR1cCBvbiBk ZXZpY2UgdXNpbmcNCisgKgkJCQkJIHJ0ZV9jcnlwdG9kZXZfc2Vzc2lvbl9pbml0DQorICogQHJl dHVybg0KKyAqICAtIDAgaWYgc3VjY2Vzc2Z1bC4NCisgKiAgLSAtRUlOVkFMIGlmIGRldmljZSBp cyBpbnZhbGlkIG9yIHNlc3Npb24gaXMgTlVMTC4NCisgKi8NCitpbnQNCitydGVfY3J5cHRvZGV2 X2FzeW1fc2Vzc2lvbl9jbGVhcih1aW50OF90IGRldl9pZCwNCisJCQlzdHJ1Y3QgcnRlX2NyeXB0 b2Rldl9hc3ltX3Nlc3Npb24gKnNlc3MpOw0KKw0KKy8qKg0KICAqIEdldCB0aGUgc2l6ZSBvZiB0 aGUgaGVhZGVyIHNlc3Npb24sIGZvciBhbGwgcmVnaXN0ZXJlZCBkcml2ZXJzLg0KKyAqIEZvciBk ZXZpY2VzIHN1cHBvcnRpbmcgYm90aCBzeW1tZXRyaWMgYW5kIGFzeW1tZXRyaWMsIGl0IHNob3Vs ZA0KKyAqIHJldHVybiBoZWFkZXIgc2l6ZSBpbmNsdXNpdmUgb2YgYm90aA0KICAqDQogICogQHJl dHVybg0KICAqICAgU2l6ZSBvZiB0aGUgaGVhZGVyIHNlc3Npb24uDQpAQCAtOTc1LDYgKzEyNTMs OCBAQCBzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9zeW1fc2Vzc2lvbiAqDQogDQogLyoqDQogICogR2V0 IHRoZSBzaXplIG9mIHRoZSBwcml2YXRlIHNlc3Npb24gZGF0YSBmb3IgYSBkZXZpY2UuDQorICog aWYgZGV2aWNlIHN1cHBvcnQgYm90aCBzeW1tZXRyaWMgYW5kIGFzeW1tZXRyaWMsIGl0DQorICog cmV0dXJuIHNpemUgaW5jbHVzaXZlIG9mIGJvdGgNCiAgKg0KICAqIEBwYXJhbQlkZXZfaWQJCVRo ZSBkZXZpY2UgaWRlbnRpZmllci4NCiAgKg0KQEAgLTk4Niw2ICsxMjY2LDMyIEBAIHN0cnVjdCBy dGVfY3J5cHRvZGV2X3N5bV9zZXNzaW9uICoNCiBydGVfY3J5cHRvZGV2X2dldF9wcml2YXRlX3Nl c3Npb25fc2l6ZSh1aW50OF90IGRldl9pZCk7DQogDQogLyoqDQorICogR2V0IHRoZSBzaXplIG9m IHRoZSBwcml2YXRlIGRhdGEgZm9yIHN5bW1ldHJpYyBzZXNzaW9uDQorICogb24gZGV2aWNlDQor ICoNCisgKiBAcGFyYW0JZGV2X2lkCQlUaGUgZGV2aWNlIGlkZW50aWZpZXIuDQorICoNCisgKiBA cmV0dXJuDQorICogICAtIFNpemUgb2YgdGhlIHN5bW1ldHJpYyBzZXNzaW9uIHByaXZhdGUgZGF0 YSwgaWYgc3VjY2Vzc2Z1bA0KKyAqICAgLSAwIGlmIGRldmljZSBpcyBpbnZhbGlkIG9yIGRvZXMg bm90IGhhdmUgcHJpdmF0ZSBzZXNzaW9uDQorICovDQordW5zaWduZWQgaW50DQorcnRlX2NyeXB0 b2Rldl9nZXRfc3ltX3Nlc3Npb25fcHJpdmF0ZV9zaXplKHVpbnQ4X3QgZGV2X2lkKTsNCisNCisv KioNCisgKiBHZXQgdGhlIHNpemUgb2YgdGhlIHByaXZhdGUgZGF0YSBmb3IgYXN5bW1ldHJpYyBz ZXNzaW9uDQorICogb24gZGV2aWNlDQorICoNCisgKiBAcGFyYW0JZGV2X2lkCQlUaGUgZGV2aWNl IGlkZW50aWZpZXIuDQorICoNCisgKiBAcmV0dXJuDQorICogICAtIFNpemUgb2YgdGhlIGFzeW1t ZXRyaWMgcHJpdmF0ZSBkYXRhLCBpZiBzdWNjZXNzZnVsDQorICogICAtIDAgaWYgZGV2aWNlIGlz IGludmFsaWQgb3IgZG9lcyBub3QgaGF2ZSBwcml2YXRlIHNlc3Npb24NCisgKi8NCit1bnNpZ25l ZCBpbnQNCitydGVfY3J5cHRvZGV2X2dldF9hc3ltX3Nlc3Npb25fcHJpdmF0ZV9zaXplKHVpbnQ4 X3QgZGV2X2lkKTsNCisNCisvKioNCiAgKiBBdHRhY2ggcXVldWUgcGFpciB3aXRoIHN5bSBzZXNz aW9uLg0KICAqDQogICogQHBhcmFtCWRldl9pZAkJRGV2aWNlIHRvIHdoaWNoIHRoZSBzZXNzaW9u IHdpbGwgYmUgYXR0YWNoZWQuDQpAQCAtMTAwMiw2ICsxMzA4LDMxIEBAIHN0cnVjdCBydGVfY3J5 cHRvZGV2X3N5bV9zZXNzaW9uICoNCiAJCXN0cnVjdCBydGVfY3J5cHRvZGV2X3N5bV9zZXNzaW9u ICpzZXNzaW9uKTsNCiANCiAvKioNCisgKiBBdHRhY2ggcXVldWUgcGFpciB3aXRoIGFzeW0gc2Vz c2lvbi4NCisgKg0KKyAqIEBwYXJhbQlkZXZfaWQJCURldmljZSB0byB3aGljaCB0aGUgc2Vzc2lv biBpcyBhdHRhY2hlZC4NCisgKiBAcGFyYW0JcXBfaWQJCVF1ZXVlIHBhaXIgdG8gd2hpY2ggdGhl IHNlc3Npb24gd2lsbCBiZQ0KKyAqCQkJCWF0dGFjaGVkLg0KKyAqIEBwYXJhbQlzZXNzaW9uCQlB c3ltbWV0cmljIFNlc3Npb24gcG9pbnRlciBwcmV2aW91c2x5DQorICoJCQkJYWxsb2NhdGVkIGJ5 DQorICoJCQkJKnJ0ZV9jcnlwdG9kZXZfYXN5bV9zZXNzaW9uX2NyZWF0ZSouDQorICoNCisgKiBA cmV0dXJuDQorICogIC0gT24gc3VjY2VzcywgemVyby4NCisgKiAgLSBPbiBmYWlsdXJlLCBhIG5l Z2F0aXZlIHZhbHVlLg0KKyAqDQorICogQG5vdGUgOiBhcHAgY2FuIGRlZGljYXRlIGEgcXBfaWQg dG8gc3BlY2lmaWMgb3BlcmF0aW9uIHR5cGU6c3ltbS9hc3ltbQ0KKyAqIGJ5IGNhbGxpbmcgcnRl X2NyeXB0b2Rldl9xdWV1ZV9wYWlyX2F0dGFjaF9zeW0vYXN5bV9zZXNzaW9uKCkgYmVmb3JlDQor ICogZW5xdWV1ZV9idXJzdCgpIGNhbGwuIFBNRCB3aXRoIFNZTU1FVFJJQyAmIEFTWU1NRVRSSUMg ZmVhdHVyZSBmbGFnIHNldCwNCisgKiBjYW4gaW50ZXJuYWxseSBiaW5kIHRoZSBsb2dpY2FsIHFw X2lkIHRvIGFjdHVhbCBwaHlzaWNhbCBxcF9pZCBoZXJlIGFuZA0KKyAqIGRlZGljYXRlIHNwZWNp ZmljIHFwX2lkIHRvIHBlcmZvcm0gc3BlY2lmaWMgb3BfdHlwZShzeW1tZXRyaWMgb3INCisgKiBh c3ltbWV0cmljKS4NCisgKi8NCitpbnQNCitydGVfY3J5cHRvZGV2X3F1ZXVlX3BhaXJfYXR0YWNo X2FzeW1fc2Vzc2lvbih1aW50OF90IGRldl9pZCwgdWludDE2X3QgcXBfaWQsDQorCQlzdHJ1Y3Qg cnRlX2NyeXB0b2Rldl9hc3ltX3Nlc3Npb24gKnNlc3Npb24pOw0KKw0KKy8qKg0KICAqIERldGFj aCBxdWV1ZSBwYWlyIHdpdGggc3ltIHNlc3Npb24uDQogICoNCiAgKiBAcGFyYW0JZGV2X2lkCQlE ZXZpY2UgdG8gd2hpY2ggdGhlIHNlc3Npb24gaXMgYXR0YWNoZWQuDQpAQCAtMTAxOCw2ICsxMzQ5 LDIzIEBAIHN0cnVjdCBydGVfY3J5cHRvZGV2X3N5bV9zZXNzaW9uICoNCiAJCXN0cnVjdCBydGVf Y3J5cHRvZGV2X3N5bV9zZXNzaW9uICpzZXNzaW9uKTsNCiANCiAvKioNCisgKiBEZXRhY2ggcXVl dWUgcGFpciBmcm9tIGFzeW0gc2Vzc2lvbi4NCisgKg0KKyAqIEBwYXJhbQlkZXZfaWQJCURldmlj ZSB0byB3aGljaCB0aGUgc2Vzc2lvbiBpcyBhdHRhY2hlZC4NCisgKiBAcGFyYW0JcXBfaWQJCVF1 ZXVlIHBhaXIgdG8gd2hpY2ggdGhlIHNlc3Npb24gaXMgYXR0YWNoZWQuDQorICogQHBhcmFtCXNl c3Npb24JCUFzeW1tZXRyaWMgU2Vzc2lvbiBwb2ludGVyIHByZXZpb3VzbHkgYXR0YWNoZWQNCisg KgkJCQlieSBjYWxsaW5nDQorICoJCQkJKnJ0ZV9jcnlwdG9kZXZfcXVldWVfcGFpcl9hdHRhY2hf YXN5bV9zZXNzaW9uKi4NCisgKg0KKyAqIEByZXR1cm4NCisgKiAgLSBPbiBzdWNjZXNzLCB6ZXJv Lg0KKyAqICAtIE9uIGZhaWx1cmUsIGEgbmVnYXRpdmUgdmFsdWUuDQorICovDQoraW50DQorcnRl X2NyeXB0b2Rldl9xdWV1ZV9wYWlyX2RldGFjaF9hc3ltX3Nlc3Npb24odWludDhfdCBkZXZfaWQs IHVpbnQxNl90IHFwX2lkLA0KKwkJc3RydWN0IHJ0ZV9jcnlwdG9kZXZfYXN5bV9zZXNzaW9uICpz ZXNzaW9uKTsNCisNCisvKioNCiAgKiBQcm92aWRlIGRyaXZlciBpZGVudGlmaWVyLg0KICAqDQog ICogQHBhcmFtIG5hbWUNCmRpZmYgLS1naXQgYS9saWIvbGlicnRlX2NyeXB0b2Rldi9ydGVfY3J5 cHRvZGV2X3BtZC5jIGIvbGliL2xpYnJ0ZV9jcnlwdG9kZXYvcnRlX2NyeXB0b2Rldl9wbWQuYw0K aW5kZXggZjJhYWMyNC4uNDQzOWE4ZSAxMDA2NDQNCi0tLSBhL2xpYi9saWJydGVfY3J5cHRvZGV2 L3J0ZV9jcnlwdG9kZXZfcG1kLmMNCisrKyBiL2xpYi9saWJydGVfY3J5cHRvZGV2L3J0ZV9jcnlw dG9kZXZfcG1kLmMNCkBAIC02Niw2ICs2NiwyMCBAQA0KIAkJCWdvdG8gZnJlZV9rdmxpc3Q7DQog DQogCQlyZXQgPSBydGVfa3ZhcmdzX3Byb2Nlc3Moa3ZsaXN0LA0KKwkJCQlSVEVfQ1JZUFRPREVW X1BNRF9NQVhfTkJfQVNZTV9RUF9BUkcsDQorCQkJCSZydGVfY3J5cHRvZGV2X3BtZF9wYXJzZV91 aW50X2FyZywNCisJCQkJJnBhcmFtcy0+bWF4X25iX2FzeW1fcXApOw0KKwkJaWYgKHJldCA8IDAp DQorCQkJZ290byBmcmVlX2t2bGlzdDsNCisNCisJCXJldCA9IHJ0ZV9rdmFyZ3NfcHJvY2Vzcyhr dmxpc3QsDQorCQkJCVJURV9DUllQVE9ERVZfUE1EX01BWF9OQl9TWU1fUVBfQVJHLA0KKwkJCQkm cnRlX2NyeXB0b2Rldl9wbWRfcGFyc2VfdWludF9hcmcsDQorCQkJCSZwYXJhbXMtPm1heF9uYl9z eW1fcXApOw0KKwkJaWYgKHJldCA8IDApDQorCQkJZ290byBmcmVlX2t2bGlzdDsNCisNCisJCXJl dCA9IHJ0ZV9rdmFyZ3NfcHJvY2Vzcyhrdmxpc3QsDQogCQkJCVJURV9DUllQVE9ERVZfUE1EX01B WF9OQl9TRVNTX0FSRywNCiAJCQkJJnJ0ZV9jcnlwdG9kZXZfcG1kX3BhcnNlX3VpbnRfYXJnLA0K IAkJCQkmcGFyYW1zLT5tYXhfbmJfc2Vzc2lvbnMpOw0KQEAgLTEwOSw5ICsxMjMsMTIgQEAgc3Ry dWN0IHJ0ZV9jcnlwdG9kZXYgKg0KIAkJCWRldmljZS0+ZHJpdmVyLT5uYW1lLCBuYW1lKTsNCiAN CiAJQ0RFVl9MT0dfSU5GTygiWyVzXSAtIEluaXRpYWxpc2F0aW9uIHBhcmFtZXRlcnMgLSBuYW1l OiAlcywiDQotCQkJInNvY2tldCBpZDogJWQsIG1heCBxdWV1ZSBwYWlyczogJXUsIG1heCBzZXNz aW9uczogJXUiLA0KKwkJCSJzb2NrZXQgaWQ6ICVkLCBtYXggcXVldWUgcGFpcnM6ICV1LCAiDQor CQkJIm1heCBzeW0gcXVldWUgcGFpZDogJXUsIG1heCBhc3ltIHF1ZXVlIHBhaXIgJXUsICINCisJ CQkibWF4IHNlc3Npb25zOiAldSIsDQogCQkJZGV2aWNlLT5kcml2ZXItPm5hbWUsIG5hbWUsDQog CQkJcGFyYW1zLT5zb2NrZXRfaWQsIHBhcmFtcy0+bWF4X25iX3F1ZXVlX3BhaXJzLA0KKwkJCXBh cmFtcy0+bWF4X25iX2FzeW1fcXAsIHBhcmFtcy0+bWF4X25iX3N5bV9xcCwNCiAJCQlwYXJhbXMt Pm1heF9uYl9zZXNzaW9ucyk7DQogDQogCS8qIGFsbG9jYXRlIGRldmljZSBzdHJ1Y3R1cmUgKi8N CmRpZmYgLS1naXQgYS9saWIvbGlicnRlX2NyeXB0b2Rldi9ydGVfY3J5cHRvZGV2X3BtZC5oIGIv bGliL2xpYnJ0ZV9jcnlwdG9kZXYvcnRlX2NyeXB0b2Rldl9wbWQuaA0KaW5kZXggMDg5ODQ4ZS4u MjcyYjQ4OSAxMDA2NDQNCi0tLSBhL2xpYi9saWJydGVfY3J5cHRvZGV2L3J0ZV9jcnlwdG9kZXZf cG1kLmgNCisrKyBiL2xpYi9saWJydGVfY3J5cHRvZGV2L3J0ZV9jcnlwdG9kZXZfcG1kLmgNCkBA IC02MCwxOCArNjAsMjUgQEANCiANCiAjZGVmaW5lIFJURV9DUllQVE9ERVZfUE1EX0RFRkFVTFRf TUFYX05CX1FVRVVFX1BBSVJTCTgNCiAjZGVmaW5lIFJURV9DUllQVE9ERVZfUE1EX0RFRkFVTFRf TUFYX05CX1NFU1NJT05TCTIwNDgNCisvKiBBbGxvdyBhbGwgcXAgdG8gYmUgdXNlZCBmb3Igc3lt ICovDQorI2RlZmluZSBSVEVfQ1JZUFRPREVWX1BNRF9ERUZBVUxUX01BWF9OQl9TWU1fUVAJCTAN CisvKiBBbGxvdyBhbGwgcXAgdG8gYmUgdXNlZCBmb3IgYXN5bSAqLw0KKyNkZWZpbmUgUlRFX0NS WVBUT0RFVl9QTURfREVGQVVMVF9NQVhfTkJfQVNZTV9RUAkwDQogDQogI2RlZmluZSBSVEVfQ1JZ UFRPREVWX1BNRF9OQU1FX0FSRwkJCSgibmFtZSIpDQogI2RlZmluZSBSVEVfQ1JZUFRPREVWX1BN RF9NQVhfTkJfUVBfQVJHCQkJKCJtYXhfbmJfcXVldWVfcGFpcnMiKQ0KICNkZWZpbmUgUlRFX0NS WVBUT0RFVl9QTURfTUFYX05CX1NFU1NfQVJHCQkoIm1heF9uYl9zZXNzaW9ucyIpDQogI2RlZmlu ZSBSVEVfQ1JZUFRPREVWX1BNRF9TT0NLRVRfSURfQVJHCQkJKCJzb2NrZXRfaWQiKQ0KLQ0KKyNk ZWZpbmUgUlRFX0NSWVBUT0RFVl9QTURfTUFYX05CX0FTWU1fUVBfQVJHCQkoIm1heF9uYl9hc3lt X3FwIikNCisjZGVmaW5lIFJURV9DUllQVE9ERVZfUE1EX01BWF9OQl9TWU1fUVBfQVJHCQkoIm1h eF9uYl9zeW1fcXAiKQ0KIA0KIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgY3J5cHRvZGV2X3Bt ZF92YWxpZF9wYXJhbXNbXSA9IHsNCiAJUlRFX0NSWVBUT0RFVl9QTURfTkFNRV9BUkcsDQogCVJU RV9DUllQVE9ERVZfUE1EX01BWF9OQl9RUF9BUkcsDQogCVJURV9DUllQVE9ERVZfUE1EX01BWF9O Ql9TRVNTX0FSRywNCi0JUlRFX0NSWVBUT0RFVl9QTURfU09DS0VUX0lEX0FSRw0KKwlSVEVfQ1JZ UFRPREVWX1BNRF9TT0NLRVRfSURfQVJHLA0KKwlSVEVfQ1JZUFRPREVWX1BNRF9NQVhfTkJfQVNZ TV9RUF9BUkcsDQorCVJURV9DUllQVE9ERVZfUE1EX01BWF9OQl9TWU1fUVBfQVJHDQogfTsNCiAN CiAvKioNCkBAIC04NCw2ICs5MSwxMCBAQCBzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9wbWRfaW5pdF9w YXJhbXMgew0KIAlpbnQgc29ja2V0X2lkOw0KIAl1bnNpZ25lZCBpbnQgbWF4X25iX3F1ZXVlX3Bh aXJzOw0KIAl1bnNpZ25lZCBpbnQgbWF4X25iX3Nlc3Npb25zOw0KKwl1bnNpZ25lZCBpbnQgbWF4 X25iX2FzeW1fcXA7DQorCS8qKjwgbWF4aW11bSBudW1iZXIgb2YgcXAgdG8gYmUgdXNlZCBmb3Ig YXN5bW1ldHJpYyBvcHMgKi8NCisJdW5zaWduZWQgaW50IG1heF9uYl9zeW1fcXA7DQorCS8qKjwg bWF4aW11bSBudW1iZXIgb2YgcXAgdG8gYmUgdXNlZCBmb3Igc3ltbWV0cmljIG9wcyAqLw0KIH07 DQogDQogLyoqIEdsb2JhbCBzdHJ1Y3R1cmUgdXNlZCBmb3IgbWFpbnRhaW5pbmcgc3RhdGUgb2Yg YWxsb2NhdGVkIGNyeXB0byBkZXZpY2VzICovDQpAQCAtMjc1LDcgKzI4NiwyOSBAQCB0eXBlZGVm IGludCAoKmNyeXB0b2Rldl9xdWV1ZV9wYWlyX3JlbGVhc2VfdCkoc3RydWN0IHJ0ZV9jcnlwdG9k ZXYgKmRldiwNCiB0eXBlZGVmIHVpbnQzMl90ICgqY3J5cHRvZGV2X3F1ZXVlX3BhaXJfY291bnRf dCkoc3RydWN0IHJ0ZV9jcnlwdG9kZXYgKmRldik7DQogDQogLyoqDQotICogQ3JlYXRlIGEgc2Vz c2lvbiBtZW1wb29sIHRvIGFsbG9jYXRlIHNlc3Npb25zIGZyb20NCisgKiBHZXQgbnVtYmVyIG9m IGF2YWlsYWJsZSBzeW1tZXRyaWMgcXVldWUgcGFpcnMgb2YgYSBkZXZpY2UuDQorICoNCisgKiBA cGFyYW0JZGV2CUNyeXB0byBkZXZpY2UgcG9pbnRlcg0KKyAqDQorICogQHJldHVybg0KKyAqIC0g UmV0dXJucyBudW1iZXIgb2Ygc3ltbWV0cmljIHF1ZXVlIHBhaXJzDQorICovDQordHlwZWRlZiB1 aW50MzJfdCAoKmNyeXB0b2Rldl9zeW1fcXVldWVfcGFpcl9jb3VudF90KSgNCisJCQlzdHJ1Y3Qg cnRlX2NyeXB0b2RldiAqZGV2KTsNCisNCisvKioNCisgKiBHZXQgbnVtYmVyIG9mIGF2YWlsYWJs ZSBhc3ltbWV0cmljIHF1ZXVlIHBhaXJzIG9mIGEgZGV2aWNlLg0KKyAqDQorICogQHBhcmFtCWRl dglDcnlwdG8gZGV2aWNlIHBvaW50ZXINCisgKg0KKyAqIEByZXR1cm4NCisgKiAtIFJldHVybnMg bnVtYmVyIG9mIHN5bW1ldHJpYyBxdWV1ZSBwYWlycw0KKyAqLw0KK3R5cGVkZWYgdWludDMyX3Qg KCpjcnlwdG9kZXZfYXN5bV9xdWV1ZV9wYWlyX2NvdW50X3QpKA0KKwkJCXN0cnVjdCBydGVfY3J5 cHRvZGV2ICpkZXYpOw0KKw0KKy8qKg0KKyAqIENyZWF0ZSBhIHN5bW1ldHJpYyBzZXNzaW9uIG1l bXBvb2wgdG8gYWxsb2NhdGUgc2Vzc2lvbnMgZnJvbQ0KICAqDQogICogQHBhcmFtCWRldgkJQ3J5 cHRvIGRldmljZSBwb2ludGVyDQogICogQHBhcmFtCW5iX29ianMJCW51bWJlciBvZiBzZXNzaW9u cyBvYmplY3RzIGluIG1lbXBvb2wNCkBAIC0yOTAsNiArMzIzLDIxIEBAIHR5cGVkZWYgaW50ICgq Y3J5cHRvZGV2X3N5bV9jcmVhdGVfc2Vzc2lvbl9wb29sX3QpKA0KIAkJc3RydWN0IHJ0ZV9jcnlw dG9kZXYgKmRldiwgdW5zaWduZWQgbmJfb2JqcywNCiAJCXVuc2lnbmVkIG9ial9jYWNoZV9zaXpl LCBpbnQgc29ja2V0X2lkKTsNCiANCisvKioNCisgKiBDcmVhdGUgYSBhc3ltbWV0cmljIHNlc3Np b24gbWVtcG9vbCB0byBhbGxvY2F0ZSBzZXNzaW9ucyBmcm9tDQorICoNCisgKiBAcGFyYW0JZGV2 CQlDcnlwdG8gZGV2aWNlIHBvaW50ZXINCisgKiBAcGFyYW0JbmJfb2JqcwkJTnVtYmVyIG9mIGFz eW1tZXRyaWMgc2Vzc2lvbnMgb2JqZWN0cyBpbiBtZW1wb29sDQorICogQHBhcmFtCW9ial9jYWNo ZQlsLWNvcmUgb2JqZWN0IGNhY2hlIHNpemUsIHNlZSAqcnRlX3JpbmdfY3JlYXRlKg0KKyAqIEBw YXJhbQlzb2NrZXRfaWQJU29ja2V0IElkIHRvIGFsbG9jYXRlICBtZW1wb29sIG9uLg0KKyAqDQor ICogQHJldHVybg0KKyAqIC0gT24gc3VjY2VzcyByZXR1cm5zIGEgcG9pbnRlciB0byBhIHJ0ZV9t ZW1wb29sDQorICogLSBPbiBmYWlsdXJlIHJldHVybnMgYSBOVUxMIHBvaW50ZXINCisgKi8NCit0 eXBlZGVmIGludCAoKmNyeXB0b2Rldl9hc3ltX2NyZWF0ZV9zZXNzaW9uX3Bvb2xfdCkoDQorCQlz dHJ1Y3QgcnRlX2NyeXB0b2RldiAqZGV2LCB1bnNpZ25lZCBuYl9vYmpzLA0KKwkJdW5zaWduZWQg b2JqX2NhY2hlX3NpemUsIGludCBzb2NrZXRfaWQpOw0KIA0KIC8qKg0KICAqIEdldCB0aGUgc2l6 ZSBvZiBhIGNyeXB0b2RldiBzZXNzaW9uDQpAQCAtMzAyLDYgKzM1MCwxNyBAQCB0eXBlZGVmIGlu dCAoKmNyeXB0b2Rldl9zeW1fY3JlYXRlX3Nlc3Npb25fcG9vbF90KSgNCiAgKi8NCiB0eXBlZGVm IHVuc2lnbmVkICgqY3J5cHRvZGV2X3N5bV9nZXRfc2Vzc2lvbl9wcml2YXRlX3NpemVfdCkoDQog CQlzdHJ1Y3QgcnRlX2NyeXB0b2RldiAqZGV2KTsNCisvKioNCisgKiBHZXQgdGhlIHNpemUgb2Yg YSBhc3ltbWV0cmljIGNyeXB0b2RldiBzZXNzaW9uDQorICoNCisgKiBAcGFyYW0JZGV2CQlDcnlw dG8gZGV2aWNlIHBvaW50ZXINCisgKg0KKyAqIEByZXR1cm4NCisgKiAgLSBPbiBzdWNjZXNzIHJl dHVybnMgdGhlIHNpemUgb2YgdGhlIHNlc3Npb24gc3RydWN0dXJlIGZvciBkZXZpY2UNCisgKiAg LSBPbiBmYWlsdXJlIHJldHVybnMgMA0KKyAqLw0KK3R5cGVkZWYgdW5zaWduZWQgKCpjcnlwdG9k ZXZfYXN5bV9nZXRfc2Vzc2lvbl9wcml2YXRlX3NpemVfdCkoDQorCQlzdHJ1Y3QgcnRlX2NyeXB0 b2RldiAqZGV2KTsNCiANCiAvKioNCiAgKiBDb25maWd1cmUgYSBDcnlwdG8gc2Vzc2lvbiBvbiBh IGRldmljZS4NCkBAIC0zMjEsNyArMzgwLDI0IEBAIHR5cGVkZWYgaW50ICgqY3J5cHRvZGV2X3N5 bV9jb25maWd1cmVfc2Vzc2lvbl90KShzdHJ1Y3QgcnRlX2NyeXB0b2RldiAqZGV2LA0KIAkJc3Ry dWN0IHJ0ZV9jcnlwdG9fc3ltX3hmb3JtICp4Zm9ybSwNCiAJCXN0cnVjdCBydGVfY3J5cHRvZGV2 X3N5bV9zZXNzaW9uICpzZXNzaW9uLA0KIAkJc3RydWN0IHJ0ZV9tZW1wb29sICptcCk7DQotDQor LyoqDQorICogQ29uZmlndXJlIGEgQ3J5cHRvIGFzeW1tZXRyaWMgc2Vzc2lvbiBvbiBhIGRldmlj ZS4NCisgKg0KKyAqIEBwYXJhbQlkZXYJCUNyeXB0byBkZXZpY2UgcG9pbnRlcg0KKyAqIEBwYXJh bQl4Zm9ybQkJU2luZ2xlIG9yIGNoYWluIG9mIGNyeXB0byB4Zm9ybXMNCisgKiBAcGFyYW0JcHJp dl9zZXNzCVBvaW50ZXIgdG8gY3J5cHRvZGV2J3MgcHJpdmF0ZSBzZXNzaW9uIHN0cnVjdHVyZQ0K KyAqIEBwYXJhbQltcAkJTWVtcG9vbCB3aGVyZSB0aGUgcHJpdmF0ZSBzZXNzaW9uIGlzIGFsbG9j YXRlZA0KKyAqDQorICogQHJldHVybg0KKyAqICAtIFJldHVybnMgMCBpZiBwcml2YXRlIHNlc3Np b24gc3RydWN0dXJlIGhhdmUgYmVlbiBjcmVhdGVkIHN1Y2Nlc3NmdWxseS4NCisgKiAgLSBSZXR1 cm5zIC1FSU5WQUwgaWYgaW5wdXQgcGFyYW1ldGVycyBhcmUgaW52YWxpZC4NCisgKiAgLSBSZXR1 cm5zIC1FTk9UU1VQIGlmIGNyeXB0byBkZXZpY2UgZG9lcyBub3Qgc3VwcG9ydCB0aGUgY3J5cHRv IHRyYW5zZm9ybS4NCisgKiAgLSBSZXR1cm5zIC1FTk9NRU0gaWYgdGhlIHByaXZhdGUgc2Vzc2lv biBjb3VsZCBub3QgYmUgYWxsb2NhdGVkLg0KKyAqLw0KK3R5cGVkZWYgaW50ICgqY3J5cHRvZGV2 X2FzeW1fY29uZmlndXJlX3Nlc3Npb25fdCkoc3RydWN0IHJ0ZV9jcnlwdG9kZXYgKmRldiwNCisJ CXN0cnVjdCBydGVfY3J5cHRvX2FzeW1feGZvcm0gKnhmb3JtLA0KKwkJc3RydWN0IHJ0ZV9jcnlw dG9kZXZfYXN5bV9zZXNzaW9uICpzZXNzaW9uLA0KKwkJc3RydWN0IHJ0ZV9tZW1wb29sICptcCk7 DQogLyoqDQogICogRnJlZSBkcml2ZXIgcHJpdmF0ZSBzZXNzaW9uIGRhdGEuDQogICoNCkBAIC0z MzIsNiArNDA4LDE1IEBAIHR5cGVkZWYgdm9pZCAoKmNyeXB0b2Rldl9zeW1fZnJlZV9zZXNzaW9u X3QpKHN0cnVjdCBydGVfY3J5cHRvZGV2ICpkZXYsDQogCQlzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9z eW1fc2Vzc2lvbiAqc2Vzcyk7DQogDQogLyoqDQorICogRnJlZSBhc3ltbWV0cmljIHNlc3Npb24g cHJpdmF0ZSBkYXRhLg0KKyAqDQorICogQHBhcmFtCWRldgkJQ3J5cHRvIGRldmljZSBwb2ludGVy DQorICogQHBhcmFtCXNlc3MJCUNyeXB0b2RldiBzZXNzaW9uIHN0cnVjdHVyZQ0KKyAqLw0KK3R5 cGVkZWYgdm9pZCAoKmNyeXB0b2Rldl9hc3ltX2ZyZWVfc2Vzc2lvbl90KShzdHJ1Y3QgcnRlX2Ny eXB0b2RldiAqZGV2LA0KKwkJc3RydWN0IHJ0ZV9jcnlwdG9kZXZfYXN5bV9zZXNzaW9uICpzZXNz KTsNCisNCisvKioNCiAgKiBPcHRpb25hbCBBUEkgZm9yIGRyaXZlcnMgdG8gYXR0YWNoIHNlc3Np b25zIHdpdGggcXVldWUgcGFpci4NCiAgKiBAcGFyYW0JZGV2CQlDcnlwdG8gZGV2aWNlIHBvaW50 ZXINCiAgKiBAcGFyYW0JcXBfaWQJCXF1ZXVlIHBhaXIgaWQgZm9yIGF0dGFjaGluZyBzZXNzaW9u DQpAQCAtMzQzLDYgKzQyOCwxOCBAQCB0eXBlZGVmIGludCAoKmNyeXB0b2Rldl9zeW1fcXVldWVf cGFpcl9hdHRhY2hfc2Vzc2lvbl90KSgNCiAJCSAgc3RydWN0IHJ0ZV9jcnlwdG9kZXYgKmRldiwN CiAJCSAgdWludDE2X3QgcXBfaWQsDQogCQkgIHZvaWQgKnNlc3Npb25fcHJpdmF0ZSk7DQorLyoq DQorICogT3B0aW9uYWwgQVBJIGZvciBkcml2ZXJzIHRvIGF0dGFjaCBhc3ltbWV0cmljIHNlc3Np b24gd2l0aCBxdWV1ZSBwYWlyLg0KKyAqIEBwYXJhbQlkZXYJCUNyeXB0byBkZXZpY2UgcG9pbnRl cg0KKyAqIEBwYXJhbQlxcF9pZAkJUXVldWUgcGFpciBpZCBmb3IgYXR0YWNoaW5nIHNlc3Npb24N CisgKiBAcGFyYW0JcHJpdl9zZXNzICAgICAgIFBvaW50ZXIgdG8gY3J5cHRvZGV2J3MgcHJpdmF0 ZSBzZXNzaW9uIHN0cnVjdHVyZQ0KKyAqIEByZXR1cm4NCisgKiAgLSBSZXR1cm4gMCBvbiBzdWNj ZXNzDQorICovDQordHlwZWRlZiBpbnQgKCpjcnlwdG9kZXZfYXN5bV9xdWV1ZV9wYWlyX2F0dGFj aF9zZXNzaW9uX3QpKA0KKwkJICBzdHJ1Y3QgcnRlX2NyeXB0b2RldiAqZGV2LA0KKwkJICB1aW50 MTZfdCBxcF9pZCwNCisJCSAgdm9pZCAqc2Vzc2lvbl9wcml2YXRlKTsNCiANCiAvKioNCiAgKiBP cHRpb25hbCBBUEkgZm9yIGRyaXZlcnMgdG8gZGV0YWNoIHNlc3Npb25zIGZyb20gcXVldWUgcGFp ci4NCkBAIC0zNTcsNiArNDU0LDE5IEBAIHR5cGVkZWYgaW50ICgqY3J5cHRvZGV2X3N5bV9xdWV1 ZV9wYWlyX2RldGFjaF9zZXNzaW9uX3QpKA0KIAkJICB1aW50MTZfdCBxcF9pZCwNCiAJCSAgdm9p ZCAqc2Vzc2lvbl9wcml2YXRlKTsNCiANCisvKioNCisgKiBPcHRpb25hbCBBUEkgZm9yIGRyaXZl cnMgdG8gZGV0YWNoIGFzeW1tZXRyaWMgc2Vzc2lvbiBmcm9tIHF1ZXVlIHBhaXIuDQorICogQHBh cmFtCWRldgkJQ3J5cHRvIGRldmljZSBwb2ludGVyDQorICogQHBhcmFtCXFwX2lkCQlxdWV1ZSBw YWlyIGlkIGZvciBkZXRhY2hpbmcgc2Vzc2lvbg0KKyAqIEBwYXJhbQlwcml2X3Nlc3MgICAgICAg UG9pbnRlciB0byBjcnlwdG9kZXYncyBwcml2YXRlIHNlc3Npb24gc3RydWN0dXJlDQorICogQHJl dHVybg0KKyAqICAtIFJldHVybiAwIG9uIHN1Y2Nlc3MNCisgKi8NCit0eXBlZGVmIGludCAoKmNy eXB0b2Rldl9hc3ltX3F1ZXVlX3BhaXJfZGV0YWNoX3Nlc3Npb25fdCkoDQorCQkgIHN0cnVjdCBy dGVfY3J5cHRvZGV2ICpkZXYsDQorCQkgIHVpbnQxNl90IHFwX2lkLA0KKwkJICB2b2lkICpzZXNz aW9uX3ByaXZhdGUpOw0KKw0KIC8qKiBDcnlwdG8gZGV2aWNlIG9wZXJhdGlvbnMgZnVuY3Rpb24g cG9pbnRlciB0YWJsZSAqLw0KIHN0cnVjdCBydGVfY3J5cHRvZGV2X29wcyB7DQogCWNyeXB0b2Rl dl9jb25maWd1cmVfdCBkZXZfY29uZmlndXJlOwkvKio8IENvbmZpZ3VyZSBkZXZpY2UuICovDQpA QCAtMzgwLDE3ICs0OTAsMzIgQEAgc3RydWN0IHJ0ZV9jcnlwdG9kZXZfb3BzIHsNCiAJY3J5cHRv ZGV2X3F1ZXVlX3BhaXJfc3RvcF90IHF1ZXVlX3BhaXJfc3RvcDsNCiAJLyoqPCBTdG9wIGEgcXVl dWUgcGFpci4gKi8NCiAJY3J5cHRvZGV2X3F1ZXVlX3BhaXJfY291bnRfdCBxdWV1ZV9wYWlyX2Nv dW50Ow0KLQkvKio8IEdldCBjb3VudCBvZiB0aGUgcXVldWUgcGFpcnMuICovDQotDQorCS8qKjwg R2V0IHRvdGFsIGNvdW50IG9mIHRoZSBxdWV1ZSBwYWlycyhzeW1tZXRyaWMrYXN5bW1ldHJpYyku ICovDQorCWNyeXB0b2Rldl9zeW1fcXVldWVfcGFpcl9jb3VudF90IHN5bV9xdWV1ZV9wYWlyX2Nv dW50Ow0KKwkvKio8IEdldCBjb3VudCBvZiB0aGUgc3ltbWV0cmljIHF1ZXVlIHBhaXJzLiAqLw0K KwljcnlwdG9kZXZfYXN5bV9xdWV1ZV9wYWlyX2NvdW50X3QgYXN5bV9xdWV1ZV9wYWlyX2NvdW50 Ow0KKwkvKio8IEdldCBjb3VudCBvZiB0aGUgYXN5bW1ldHJpYyBxdWV1ZSBwYWlycy4gKi8NCiAJ Y3J5cHRvZGV2X3N5bV9nZXRfc2Vzc2lvbl9wcml2YXRlX3NpemVfdCBzZXNzaW9uX2dldF9zaXpl Ow0KLQkvKio8IFJldHVybiBwcml2YXRlIHNlc3Npb24uICovDQorCS8qKjwgUmV0dXJuIHByaXZh dGUgc2l6ZSBmb3IgYSBzZXNzaW9uICovDQorCWNyeXB0b2Rldl9zeW1fZ2V0X3Nlc3Npb25fcHJp dmF0ZV9zaXplX3Qgc3ltX3Nlc3Npb25fZ2V0X3NpemU7DQorCS8qKjwgUmV0dXJuIHByaXZhdGUg c2l6ZSBmb3Igc3ltbWV0cmljIGNyeXB0by4gKi8NCisJY3J5cHRvZGV2X3N5bV9nZXRfc2Vzc2lv bl9wcml2YXRlX3NpemVfdCBhc3ltX3Nlc3Npb25fZ2V0X3NpemU7DQorCS8qKjwgUmV0dXJuIHBy aXZhdGUgc2l6ZSBmb3IgYXN5bW1ldHJpYyBjcnlwdG8uICovDQogCWNyeXB0b2Rldl9zeW1fY29u ZmlndXJlX3Nlc3Npb25fdCBzZXNzaW9uX2NvbmZpZ3VyZTsNCiAJLyoqPCBDb25maWd1cmUgYSBD cnlwdG8gc2Vzc2lvbi4gKi8NCisJY3J5cHRvZGV2X2FzeW1fY29uZmlndXJlX3Nlc3Npb25fdCBh c3ltX3Nlc3Npb25fY29uZmlndXJlOw0KKwkvKio8IENvbmZpZ3VyZSBhc3ltbWV0cmljIENyeXB0 byBzZXNzaW9uLiAqLw0KIAljcnlwdG9kZXZfc3ltX2ZyZWVfc2Vzc2lvbl90IHNlc3Npb25fY2xl YXI7DQogCS8qKjwgQ2xlYXIgYSBDcnlwdG8gc2Vzc2lvbnMgcHJpdmF0ZSBkYXRhLiAqLw0KKwlj cnlwdG9kZXZfYXN5bV9mcmVlX3Nlc3Npb25fdCBhc3ltX3Nlc3Npb25fY2xlYXI7DQorCS8qKjwg Q2xlYXIgYSBDcnlwdG8gc2Vzc2lvbnMgcHJpdmF0ZSBkYXRhLiAqLw0KIAljcnlwdG9kZXZfc3lt X3F1ZXVlX3BhaXJfYXR0YWNoX3Nlc3Npb25fdCBxcF9hdHRhY2hfc2Vzc2lvbjsNCiAJLyoqPCBB dHRhY2ggc2Vzc2lvbiB0byBxdWV1ZSBwYWlyLiAqLw0KLQljcnlwdG9kZXZfc3ltX3F1ZXVlX3Bh aXJfZGV0YWNoX3Nlc3Npb25fdCBxcF9kZXRhY2hfc2Vzc2lvbjsNCisJY3J5cHRvZGV2X2FzeW1f cXVldWVfcGFpcl9hdHRhY2hfc2Vzc2lvbl90IGFzeW1fcXBfYXR0YWNoX3Nlc3Npb247DQorCS8q KjwgQXR0YWNoIGFzeW1tZXRyaWMgc2Vzc2lvbiB0byBxdWV1ZSBwYWlyLiAqLw0KKwljcnlwdG9k ZXZfc3ltX3F1ZXVlX3BhaXJfYXR0YWNoX3Nlc3Npb25fdCBxcF9kZXRhY2hfc2Vzc2lvbjsNCisJ LyoqPCBEZXRhY2ggc2Vzc2lvbiBmcm9tIHF1ZXVlIHBhaXIuICovDQorCWNyeXB0b2Rldl9hc3lt X3F1ZXVlX3BhaXJfYXR0YWNoX3Nlc3Npb25fdCBhc3ltX3FwX2RldGFjaF9zZXNzaW9uOw0KIAkv Kio8IERldGFjaCBzZXNzaW9uIGZyb20gcXVldWUgcGFpci4gKi8NCiB9Ow0KIA0KQEAgLTUzNSw2 ICs2NjAsMTkgQEAgdWludDhfdCBydGVfY3J5cHRvZGV2X2FsbG9jYXRlX2RyaXZlcihzdHJ1Y3Qg Y3J5cHRvZGV2X2RyaXZlciAqY3J5cHRvX2RydiwNCiAJc2Vzcy0+c2Vzc19wcml2YXRlX2RhdGFb ZHJpdmVyX2lkXSA9IHByaXZhdGVfZGF0YTsNCiB9DQogDQorc3RhdGljIGlubGluZSB2b2lkICoN CitnZXRfYXN5bV9zZXNzaW9uX3ByaXZhdGVfZGF0YShjb25zdCBzdHJ1Y3QgcnRlX2NyeXB0b2Rl dl9hc3ltX3Nlc3Npb24gKnNlc3MsDQorCQl1aW50OF90IGRyaXZlcl9pZCkgew0KKwlyZXR1cm4g c2Vzcy0+c2Vzc19wcml2YXRlX2RhdGFbZHJpdmVyX2lkXTsNCit9DQorDQorc3RhdGljIGlubGlu ZSB2b2lkDQorc2V0X2FzeW1fc2Vzc2lvbl9wcml2YXRlX2RhdGEoc3RydWN0IHJ0ZV9jcnlwdG9k ZXZfYXN5bV9zZXNzaW9uICpzZXNzLA0KKwkJdWludDhfdCBkcml2ZXJfaWQsIHZvaWQgKnByaXZh dGVfZGF0YSkNCit7DQorCXNlc3MtPnNlc3NfcHJpdmF0ZV9kYXRhW2RyaXZlcl9pZF0gPSBwcml2 YXRlX2RhdGE7DQorfQ0KKw0KICNpZmRlZiBfX2NwbHVzcGx1cw0KIH0NCiAjZW5kaWYNCmRpZmYg LS1naXQgYS9saWIvbGlicnRlX2NyeXB0b2Rldi9ydGVfY3J5cHRvZGV2X3ZlcnNpb24ubWFwIGIv bGliL2xpYnJ0ZV9jcnlwdG9kZXYvcnRlX2NyeXB0b2Rldl92ZXJzaW9uLm1hcA0KaW5kZXggZWI0 NzMwOC4uMzIzMjk0YSAxMDA2NDQNCi0tLSBhL2xpYi9saWJydGVfY3J5cHRvZGV2L3J0ZV9jcnlw dG9kZXZfdmVyc2lvbi5tYXANCisrKyBiL2xpYi9saWJydGVfY3J5cHRvZGV2L3J0ZV9jcnlwdG9k ZXZfdmVyc2lvbi5tYXANCkBAIC04NSwzICs4NSwyNCBAQCBEUERLXzE3LjExIHsNCiAJcnRlX2Ny eXB0b2Rldl9wbWRfcGFyc2VfaW5wdXRfYXJnczsNCiANCiB9IERQREtfMTcuMDg7DQorDQorRVhQ RVJJTUVOVEFMIHsNCisJZ2xvYmFsOg0KKw0KKwlydGVfY3J5cHRvZGV2X2FzeW1fY2FwYWJpbGl0 eV9nZXQ7DQorCXJ0ZV9jcnlwdG9kZXZfYXN5bV9jYXBhYmlsaXR5X21vZGxlbjsNCisJcnRlX2Ny eXB0b2Rldl9hc3ltX3F1ZXVlX3BhaXJfY291bnQ7DQorCXJ0ZV9jcnlwdG9kZXZfYXN5bV9zZXNz aW9uX2NyZWF0ZTsNCisJcnRlX2NyeXB0b2Rldl9hc3ltX3Nlc3Npb25fY2xlYXI7DQorCXJ0ZV9j cnlwdG9kZXZfYXN5bV9zZXNzaW9uX2ZyZWU7DQorCXJ0ZV9jcnlwdG9kZXZfYXN5bV9zZXNzaW9u X2luaXQ7DQorCXJ0ZV9jcnlwdG9kZXZfZ2V0X2FzeW1fc2Vzc2lvbl9wcml2YXRlX3NpemU7DQor CXJ0ZV9jcnlwdG9kZXZfZ2V0X3N5bV9zZXNzaW9uX3ByaXZhdGVfc2l6ZTsNCisJcnRlX2NyeXB0 b2Rldl9nZXRfeGZvcm1fYWxnb19lbnVtOw0KKwlydGVfY3J5cHRvZGV2X3F1ZXVlX3BhaXJfYXR0 YWNoX2FzeW1fc2Vzc2lvbjsNCisJcnRlX2NyeXB0b2Rldl9xdWV1ZV9wYWlyX2RldGFjaF9hc3lt X3Nlc3Npb247DQorCXJ0ZV9jcnlwdG9kZXZfc3ltX3F1ZXVlX3BhaXJfY291bnQ7DQorCXJ0ZV9j cnlwdG9fYXN5bV94Zm9ybV9zdHJpbmdzOw0KKwlydGVfY3J5cHRvX2FzeW1fb3BlcmF0aW9uX3N0 cmluZ3M7DQorDQorfTsNCi0tIA0KMS45LjENCg0K