From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 92A38C282C3 for ; Thu, 24 Jan 2019 07:31:43 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 405AC21855 for ; Thu, 24 Jan 2019 07:31:43 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=Mellanox.com header.i=@Mellanox.com header.b="HFHAKH3E" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726233AbfAXHbm (ORCPT ); Thu, 24 Jan 2019 02:31:42 -0500 Received: from mail-eopbgr140085.outbound.protection.outlook.com ([40.107.14.85]:36613 "EHLO EUR01-VE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1725986AbfAXHbl (ORCPT ); Thu, 24 Jan 2019 02:31:41 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=yNBbgPW/mLb03kaM8jWapDHjXmldh24yOL26na25sHQ=; b=HFHAKH3EZkkHQ+bVJPQCAIk0fAA9zL5H63sXsiF0fm5zt1r7MT0Onkhzi4s4V50UPKNVAye2C+c5V2PRCQMsHQN3v/5hEyArvwIp6Cidj8QBSnTBZSWAkGk+qIv147F4rzwWJCPvvJY2W4tjt2Hn0Hm7yCQEnL05OGhLF4mG2t4= Received: from AM0PR0502MB4068.eurprd05.prod.outlook.com (52.133.41.24) by AM0PR0502MB3681.eurprd05.prod.outlook.com (52.133.46.150) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1558.16; Thu, 24 Jan 2019 07:31:33 +0000 Received: from AM0PR0502MB4068.eurprd05.prod.outlook.com ([fe80::c5a8:ab5d:6acb:408d]) by AM0PR0502MB4068.eurprd05.prod.outlook.com ([fe80::c5a8:ab5d:6acb:408d%4]) with mapi id 15.20.1558.016; Thu, 24 Jan 2019 07:31:33 +0000 From: Eran Ben Elisha To: Jiri Pirko CC: "netdev@vger.kernel.org" , Jiri Pirko , "David S. Miller" , Saeed Mahameed , Moshe Shemesh , Wei Yongjun Subject: Re: [PATCH net-next 1/7] devlink: Add devlink msg API Thread-Topic: [PATCH net-next 1/7] devlink: Add devlink msg API Thread-Index: AQHUsms5WYiowKC+aEeIhkwx+ZWsb6W868YAgAEdB4A= Date: Thu, 24 Jan 2019 07:31:33 +0000 Message-ID: <2d891be2-7c5a-55ae-9cb8-71922444acb1@mellanox.com> References: <1548172644-30862-1-git-send-email-eranbe@mellanox.com> <1548172644-30862-2-git-send-email-eranbe@mellanox.com> <20190123143120.GF2191@nanopsycho> In-Reply-To: <20190123143120.GF2191@nanopsycho> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: AM6PR0502CA0045.eurprd05.prod.outlook.com (2603:10a6:20b:56::22) To AM0PR0502MB4068.eurprd05.prod.outlook.com (2603:10a6:208:12::24) authentication-results: spf=none (sender IP is ) smtp.mailfrom=eranbe@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [193.47.165.251] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;AM0PR0502MB3681;6:jSxzoaXJWrtF6Bd+Zdb8BPNuGmDax+cM8KEhttAE85kfzYPHza9gd2VJcNBu4gjzMSkKtom0fD8n1I0UAtucbVyJvzgmHznAo3uzZfXfcNCD+wvsz3OhORIDF1IZFjiFzosh0TnKD2Sv7huXoSELEHbOVY4X7GPP1rRu7xCsnPdzWn2fY3SFeTHHImwXLCpzSJge1JVJ95MWJlMINnBmTIwemu3njrVDWKtJFhXgLUF/1WQiXO/uZvSTPxkz90HxpPSZs7PeUPBiTxgjrD40ihRFADIVbT7eJcuO6HGBTsmDBSRuEqCcdhRB+6BcyJXf/ngfRp++8vIplfcRe8GA0j9OO1wkMSQWdzfh9k8KLEj7HRbCNYZg4SL3+35mx6PNobR07S04N7XbNegpaCAtdt+XVt7YSedRWFsm4as2cMVW413mQY5oIYO/4Jy/neQxNaytL+wxJPETFa8freGJvg==;5:5JxqJQ4fe7NnwMSTGWIRwCWbUiTYyp0Gl6PSozjMuBfp00lIPbdXu66zlXbClbAW6DRUXI869QzIH2ZU96iVGM8EdNFqfJ//+He/FwACDfsb0rWvDpchRQhhl3yrOo0+lgOt/tRqLuVfybcWhyuH12N44Xh72sePA8+w1OCDdBUdVwAi5+7WK4G/JVtDbloh85jYSbwMjkO9Zmxlu0ewLw==;7:afWHnoCcLxA4VDTTXPjeTRqVWrDeYt3hu80wGckNh3By7eL6x4mnfY7dfL7KzYBU5Qse1AcH+S2fsgNYpErDeU2m9iR1F7YzB77GlUSzB5B3TI9FEPd5qhiBrZJhnecmLOFpmZ7ed9isoxYQfJiCLA== x-ms-office365-filtering-correlation-id: 9a57a73f-3feb-4cb9-39ad-08d681cdf6d9 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600110)(711020)(4605077)(4618075)(2017052603328)(7153060)(7193020);SRVR:AM0PR0502MB3681; x-ms-traffictypediagnostic: AM0PR0502MB3681: x-microsoft-antispam-prvs: x-forefront-prvs: 0927AA37C7 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(376002)(346002)(396003)(366004)(39860400002)(136003)(199004)(189003)(102836004)(2906002)(6486002)(6436002)(229853002)(6512007)(86362001)(30864003)(6916009)(106356001)(31696002)(25786009)(66066001)(14454004)(6246003)(4326008)(53946003)(53936002)(26005)(99286004)(97736004)(105586002)(478600001)(7736002)(305945005)(68736007)(71190400001)(71200400001)(53546011)(476003)(6116002)(3846002)(31686004)(81166006)(6506007)(81156014)(8676002)(486006)(386003)(8936002)(11346002)(2616005)(316002)(54906003)(76176011)(52116002)(14444005)(36756003)(256004)(446003)(186003)(21314003);DIR:OUT;SFP:1101;SCL:1;SRVR:AM0PR0502MB3681;H:AM0PR0502MB4068.eurprd05.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: DjaJ0wuA4xfK1FhR+rtexBiFPPy7+jLIlghrBRPe4YFgIQQ+YME8dnpla18JA2/MPo4J/HV22pP1dmUK0VpL+eB2tlYuPE2bRqhfQhydCjb6UsKWDPJudJr7DqAL+qTK+RQVSuwPrM/koyq+EtJjlj9geqBLr1MV3VWgmBV1sxYsLemdQENlmVfZ7un5hqkRDjOKHNE6jNXWyvcwYz95oVusdYp6bJzFhEifHSLpKBfPAss3QsLTqGduYGpV/9muZMqvRkwnh7vvkgJ9Pu+v9+iLr/2jNtiUBVilKOZ9hJezJdAlTBFABMun3sOmfeqzZcwZ5xdesyfDg1o9NWSRawSjZispGE8/HhFtzf+uXCJQFu6JtrzRyttFL+U3ISKBZwqHbzxhQWQ5b1JteY7+xX3Z83bM8qglXNKTjpo6KU4= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-ID: <1C36E66FFDFBE4409D6B666C08E37045@eurprd05.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9a57a73f-3feb-4cb9-39ad-08d681cdf6d9 X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Jan 2019 07:31:32.2969 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR0502MB3681 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org DQoNCk9uIDEvMjMvMjAxOSA0OjMxIFBNLCBKaXJpIFBpcmtvIHdyb3RlOg0KPiBUdWUsIEphbiAy MiwgMjAxOSBhdCAwNDo1NzoxOFBNIENFVCwgZXJhbmJlQG1lbGxhbm94LmNvbSB3cm90ZToNCj4+ IERldmxpbmsgbXNnIGlzIGEgbWVjaGFuaXNtIHRvIHBhc3MgZGVzY3JpcHRvcnMgYmV0d2VlbiBk cml2ZXJzIGFuZA0KPj4gZGV2bGluaywgaW4ganNvbi1saWtlIGZvcm1hdC4gVGhlIEFQSSBhbGxv d3MgdGhlIGRyaXZlciB0byBhZGQgb2JqZWN0cywNCj4+IG9iamVjdCBwYWlyLCB2YWx1ZSBhcnJh eSAobmVzdGVkIGF0dHJpYnV0ZXMpLCB2YWx1ZSBhbmQgbmFtZS4NCj4+DQo+PiBEcml2ZXIgY2Fu IHVzZSB0aGlzIEFQSSB0byBmaWxsIHRoZSBtc2cgY29udGV4dCBpbiBhIGZvcm1hdCB3aGljaCBj YW4gYmUNCj4+IHRyYW5zbGF0ZWQgYnkgdGhlIGRldmxpbmsgdG8gdGhlIG5ldGxpbmsgbWVzc2Fn ZSBsYXRlci4NCj4+DQo+PiBXaXRoIHRoaXMgQVBJLCBkcml2ZXIgZG9lcyBub3QgbmVlZCB0byBk ZWNsYXJlIHRoZSB0b3RhbCBzaXplIHBlciBtZXNzYWdlDQo+PiBjb250ZXh0LCBhbmQgaXQgZHlu YW1pY2FsbHkgYWRkIG1vcmUgbWVzc2FnZXMgdG8gdGhlIGNvbnRleHQgKGJvdW5kZWQgYnkNCj4+ IHRoZSBzeXN0ZW0gbWVtb3J5IGxpbWl0YXRpb24gb25seSkuDQo+PiBUaGVyZSBpcyBhbiBpbXBs aWNpdCByZXF1ZXN0IHRvIGhhdmUgdGhlIHByZWxpbWluYXJ5IG1haW4gb2JqZWN0cyBzaXplDQo+ PiBjcmVhdGVkIHZpYSB0aGlzIEFQSSB0byBiZSB1cHBlciBib3VuZGVkIGJ5IG5ldGxpbmsgU0tC IHNpemUsIGFzIHRob3NlDQo+PiBvYmplY3RzIGRvIG5vdCBnZXQgZnJhZ21lbnRlZCBiZXR3ZWVu IGRpZmZlcmVudCBTS0JzIHdoZW4gcGFzc2VkIHRvIHRoZQ0KPj4gbmV0bGluayBsYXllci4NCj4+ DQo+PiBEZXZsaW5rIG1zZyB3aWxsIHJlcGxhY2UgZGV2bGluayBidWZmZXJzIGZvciBoZWFsdGgg cmVwb3J0ZXJzLiBEZXZsaW5rDQo+PiBidWZmZXJzIHdoaWNoIHdpbGwgYmUgZGVwcmVjYXRlZCBh bmQgcmVtb3ZlZCBpbiB0aGUgZG93bnN0cmVhbSBwYXRjaC4NCj4+DQo+PiBTaWduZWQtb2ZmLWJ5 OiBFcmFuIEJlbiBFbGlzaGEgPGVyYW5iZUBtZWxsYW5veC5jb20+DQo+PiBDQzogV2VpIFlvbmdq dW4gPHdlaXlvbmdqdW4xQGh1YXdlaS5jb20+DQo+PiBSZXZpZXdlZC1ieTogTW9zaGUgU2hlbWVz aCA8bW9zaGVAbWVsbGFub3guY29tPg0KPj4gLS0tDQo+PiBpbmNsdWRlL25ldC9kZXZsaW5rLmgg ICAgICAgIHwgIDcwICsrKysrKw0KPj4gaW5jbHVkZS91YXBpL2xpbnV4L2RldmxpbmsuaCB8ICAg OCArDQo+PiBuZXQvY29yZS9kZXZsaW5rLmMgICAgICAgICAgIHwgNDU1ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrDQo+PiAzIGZpbGVzIGNoYW5nZWQsIDUzMyBpbnNlcnRpb25z KCspDQo+Pg0KPj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2RldmxpbmsuaCBiL2luY2x1ZGUv bmV0L2RldmxpbmsuaA0KPj4gaW5kZXggYTgxYTFiN2E2N2Q3Li5mZTMyM2U5YjE0ZTEgMTAwNjQ0 DQo+PiAtLS0gYS9pbmNsdWRlL25ldC9kZXZsaW5rLmgNCj4+ICsrKyBiL2luY2x1ZGUvbmV0L2Rl dmxpbmsuaA0KPj4gQEAgLTQyNCw2ICs0MjQsNyBAQCBzdHJ1Y3QgZGV2bGlua19yZWdpb247DQo+ Pg0KPj4gdHlwZWRlZiB2b2lkIGRldmxpbmtfc25hcHNob3RfZGF0YV9kZXN0X3QoY29uc3Qgdm9p ZCAqZGF0YSk7DQo+Pg0KPj4gK3N0cnVjdCBkZXZsaW5rX21zZ19jdHg7DQo+PiBzdHJ1Y3QgZGV2 bGlua19oZWFsdGhfYnVmZmVyOw0KPj4gc3RydWN0IGRldmxpbmtfaGVhbHRoX3JlcG9ydGVyOw0K Pj4NCj4+IEBAIC02MTUsNiArNjE2LDIxIEBAIGludCBkZXZsaW5rX3JlZ2lvbl9zbmFwc2hvdF9j cmVhdGUoc3RydWN0IGRldmxpbmtfcmVnaW9uICpyZWdpb24sIHU2NCBkYXRhX2xlbiwNCj4+IAkJ CQkgICB1OCAqZGF0YSwgdTMyIHNuYXBzaG90X2lkLA0KPj4gCQkJCSAgIGRldmxpbmtfc25hcHNo b3RfZGF0YV9kZXN0X3QgKmRhdGFfZGVzdHJ1Y3Rvcik7DQo+Pg0KPj4gK2ludCBkZXZsaW5rX21z Z19uZXN0X3N0YXJ0KHN0cnVjdCBkZXZsaW5rX21zZ19jdHggKm1zZ19jdHgsIGludCBhdHRydHlw ZSk7DQo+IA0KPiANCj4gZGV2bGlua19tc2dfKigpIGZ1bmN0aW9ucyBzaG91bGQgd29yayB3aXRo IHN0cnVjdCBkZXZsaW5rX21zZy4NCj4gZGV2bGlua19tc2dfY3R4KigpIGZ1bmN0aW9ucyBzaG91 bGQgd29yayB3aXRoIHN0cnVjdCBkZXZsaW5rX21zZ19jdHguDQo+IFBsZWFzZSBiZSBjb25zaXN0 ZW50IHdpdGggdGhlIG5hbWluZy4NCj4gDQo+IEkgdGhpbmsgeW91IGNhbiBjYWxsIHRoaXMganVz dCAic3RydWN0IGRldmxpbmtfbXNnIiBvZiBtYXliZSAiZm1zZyIgYXMNCj4gZm9yICJmb3JtYXR0 ZWQgbWVzc2FnZSIgLSBzbyBpdCBpcyBub3QgY29uZnVzZWQgd2l0aCBhbnkgb3RoZXIgZGV2bGlu aw0KPiBuZXRsaW5rIG1lc3NhZ2UuDQoNCkFjay4NCg0KPiANCj4gDQo+IA0KPj4gK2ludCBkZXZs aW5rX21zZ19uZXN0X2VuZChzdHJ1Y3QgZGV2bGlua19tc2dfY3R4ICptc2dfY3R4KTsNCj4+ICtp bnQgZGV2bGlua19tc2dfcHV0X3ZhbHVlKHN0cnVjdCBkZXZsaW5rX21zZ19jdHggKm1zZ19jdHgs DQo+PiArCQkJICB2b2lkICp2YWx1ZSwgdTE2IHZhbHVlX2xlbiwgdTggdmFsdWVfbmxhX3R5cGUp Ow0KPj4gK2ludCBkZXZsaW5rX21zZ19wdXRfbmFtZShzdHJ1Y3QgZGV2bGlua19tc2dfY3R4ICpt c2dfY3R4LA0KPj4gKwkJCSBjaGFyICpuYW1lKTsNCj4+ICtpbnQgZGV2bGlua19tc2dfcHV0X25h bWVfdmFsdWVfcGFpcihzdHJ1Y3QgZGV2bGlua19tc2dfY3R4ICptc2dfY3R4LA0KPj4gKwkJCQkg ICAgY2hhciAqbmFtZSwgdm9pZCAqdmFsdWUsIHUxNiB2YWx1ZV9sZW4sDQo+PiArCQkJCSAgICB1 OCB2YWx1ZV9ubGFfdHlwZSk7DQo+PiAraW50IGRldmxpbmtfbXNnX3B1dF9uYW1lX3ZhbHVlX2Fy cmF5KHN0cnVjdCBkZXZsaW5rX21zZ19jdHggKm1zZ19jdHgsDQo+PiArCQkJCSAgICAgY2hhciAq bmFtZSwgdm9pZCAqKnZhbHVlLCB1MTYgKnZhbHVlX2xlbiwNCj4+ICsJCQkJICAgICB1OCAqdmFs dWVfbmxhX3R5cGUsIGludCBhcnJheV9zaXplKTsNCj4+ICtpbnQgZGV2bGlua19tc2dfb2JqZWN0 X3N0YXJ0KHN0cnVjdCBkZXZsaW5rX21zZ19jdHggKm1zZ19jdHgsIGNoYXIgKm5hbWUpOw0KPj4g K2ludCBkZXZsaW5rX21zZ19vYmplY3RfZW5kKHN0cnVjdCBkZXZsaW5rX21zZ19jdHggKm1zZ19j dHgsIGNoYXIgKm5hbWUpOw0KPj4gKw0KPj4gaW50IGRldmxpbmtfaGVhbHRoX2J1ZmZlcl9uZXN0 X3N0YXJ0KHN0cnVjdCBkZXZsaW5rX2hlYWx0aF9idWZmZXIgKmJ1ZmZlciwNCj4+IAkJCQkgICAg IGludCBhdHRydHlwZSk7DQo+PiB2b2lkIGRldmxpbmtfaGVhbHRoX2J1ZmZlcl9uZXN0X2VuZChz dHJ1Y3QgZGV2bGlua19oZWFsdGhfYnVmZmVyICpidWZmZXIpOw0KPj4gQEAgLTkwMyw2ICs5MTks NjAgQEAgZGV2bGlua19yZWdpb25fc25hcHNob3RfY3JlYXRlKHN0cnVjdCBkZXZsaW5rX3JlZ2lv biAqcmVnaW9uLCB1NjQgZGF0YV9sZW4sDQo+PiAJcmV0dXJuIDA7DQo+PiB9DQo+Pg0KPj4gK3N0 YXRpYyBpbmxpbmUgaW50DQo+PiArZGV2bGlua19tc2dfbmVzdF9zdGFydChzdHJ1Y3QgZGV2bGlu a19tc2dfY3R4ICptc2dfY3R4LCBpbnQgYXR0cnR5cGUpDQo+PiArew0KPj4gKwlyZXR1cm4gMDsN Cj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGlubGluZSBpbnQNCj4+ICtkZXZsaW5rX21zZ19uZXN0 X2VuZChzdHJ1Y3QgZGV2bGlua19tc2dfY3R4ICptc2dfY3R4KQ0KPj4gK3sNCj4+ICsJcmV0dXJu IDA7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbmxpbmUgaW50DQo+PiArZGV2bGlua19tc2df cHV0X3ZhbHVlKHN0cnVjdCBkZXZsaW5rX21zZ19jdHggKm1zZ19jdHgsDQo+PiArCQkgICAgICB2 b2lkICp2YWx1ZSwgdTE2IHZhbHVlX2xlbiwgdTggdmFsdWVfbmxhX3R5cGUpDQo+PiArew0KPj4g KwlyZXR1cm4gMDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGlubGluZSBpbnQNCj4+ICtkZXZs aW5rX21zZ19wdXRfbmFtZShzdHJ1Y3QgZGV2bGlua19tc2dfY3R4ICptc2dfY3R4LA0KPj4gKwkJ ICAgICBjaGFyICpuYW1lKQ0KPj4gK3sNCj4+ICsJcmV0dXJuIDA7DQo+PiArfQ0KPj4gKw0KPj4g K3N0YXRpYyBpbmxpbmUgaW50DQo+PiArZGV2bGlua19tc2dfcHV0X25hbWVfdmFsdWVfcGFpcihz dHJ1Y3QgZGV2bGlua19tc2dfY3R4ICptc2dfY3R4LA0KPj4gKwkJCQljaGFyICpuYW1lLCB2b2lk ICp2YWx1ZSwgdTE2IHZhbHVlX2xlbiwNCj4+ICsJCQkJdTggdmFsdWVfbmxhX3R5cGUpDQo+PiAr ew0KPj4gKwlyZXR1cm4gMDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGlubGluZSBpbnQNCj4+ ICtkZXZsaW5rX21zZ19wdXRfbmFtZV92YWx1ZV9hcnJheShzdHJ1Y3QgZGV2bGlua19tc2dfY3R4 ICptc2dfY3R4LA0KPj4gKwkJCQkgY2hhciAqbmFtZSwgdm9pZCAqKnZhbHVlLCB1MTYgKnZhbHVl X2xlbiwNCj4+ICsJCQkJIHU4ICp2YWx1ZV9ubGFfdHlwZSwgaW50IGFycmF5X3NpemUpDQo+PiAr ew0KPj4gKwlyZXR1cm4gMDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGlubGluZSBpbnQNCj4+ ICtkZXZsaW5rX21zZ19vYmplY3Rfc3RhcnQoc3RydWN0IGRldmxpbmtfbXNnX2N0eCAqbXNnX2N0 eCwgY2hhciAqbmFtZSkNCj4+ICt7DQo+PiArCXJldHVybiAwOw0KPj4gK30NCj4+ICsNCj4+ICtz dGF0aWMgaW5saW5lIGludA0KPj4gK2RldmxpbmtfbXNnX29iamVjdF9lbmQoc3RydWN0IGRldmxp bmtfbXNnX2N0eCAqbXNnX2N0eCwgY2hhciAqbmFtZSkNCj4+ICt7DQo+PiArCXJldHVybiAwOw0K Pj4gK30NCj4+ICsNCj4+IHN0YXRpYyBpbmxpbmUgaW50DQo+PiBkZXZsaW5rX2hlYWx0aF9idWZm ZXJfbmVzdF9zdGFydChzdHJ1Y3QgZGV2bGlua19oZWFsdGhfYnVmZmVyICpidWZmZXIsDQo+PiAJ CQkJIGludCBhdHRydHlwZSkNCj4+IGRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgvZGV2 bGluay5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2RldmxpbmsuaA0KPj4gaW5kZXggNmIyNmJiMmNl NGRjLi42OGVlZGExZDA0NTUgMTAwNjQ0DQo+PiAtLS0gYS9pbmNsdWRlL3VhcGkvbGludXgvZGV2 bGluay5oDQo+PiArKysgYi9pbmNsdWRlL3VhcGkvbGludXgvZGV2bGluay5oDQo+PiBAQCAtMzAw LDYgKzMwMCwxNCBAQCBlbnVtIGRldmxpbmtfYXR0ciB7DQo+PiAJREVWTElOS19BVFRSX0hFQUxU SF9CVUZGRVJfT0JKRUNUX1ZBTFVFX1RZUEUsCS8qIHU4ICovDQo+PiAJREVWTElOS19BVFRSX0hF QUxUSF9CVUZGRVJfT0JKRUNUX1ZBTFVFX0RBVEEsCS8qIGR5bmFtaWMgKi8NCj4+DQo+PiArCURF VkxJTktfQVRUUl9NU0dfT0JKRUNULAkJLyogbmVzdGVkICovDQo+PiArCURFVkxJTktfQVRUUl9N U0dfT0JKRUNUX1BBSVIsCQkvKiBuZXN0ZWQgKi8NCj4+ICsJREVWTElOS19BVFRSX01TR19PQkpF Q1RfTkFNRSwJCS8qIHN0cmluZyAqLw0KPj4gKwlERVZMSU5LX0FUVFJfTVNHX09CSkVDVF9WQUxV RSwJCS8qIG5lc3RlZCAqLw0KPj4gKwlERVZMSU5LX0FUVFJfTVNHX09CSkVDVF9WQUxVRV9BUlJB WSwJLyogbmVzdGVkICovDQo+PiArCURFVkxJTktfQVRUUl9NU0dfT0JKRUNUX1ZBTFVFX1RZUEUs CS8qIHU4ICovDQo+PiArCURFVkxJTktfQVRUUl9NU0dfT0JKRUNUX1ZBTFVFX0RBVEEsCS8qIGR5 bmFtaWMgKi8NCj4+ICsNCj4+IAlERVZMSU5LX0FUVFJfSEVBTFRIX1JFUE9SVEVSLAkJCS8qIG5l c3RlZCAqLw0KPj4gCURFVkxJTktfQVRUUl9IRUFMVEhfUkVQT1JURVJfTkFNRSwJCS8qIHN0cmlu ZyAqLw0KPj4gCURFVkxJTktfQVRUUl9IRUFMVEhfUkVQT1JURVJfU1RBVEUsCQkvKiB1OCAqLw0K Pj4gZGlmZiAtLWdpdCBhL25ldC9jb3JlL2RldmxpbmsuYyBiL25ldC9jb3JlL2RldmxpbmsuYw0K Pj4gaW5kZXggNjAyNDhhNTNjMGFkLi41N2NhMDk2ODQ5YjMgMTAwNjQ0DQo+PiAtLS0gYS9uZXQv Y29yZS9kZXZsaW5rLmMNCj4+ICsrKyBiL25ldC9jb3JlL2RldmxpbmsuYw0KPj4gQEAgLTQwOTgs NiArNDA5OCw0NjEgQEAgZGV2bGlua19oZWFsdGhfYnVmZmVyX3NuZChzdHJ1Y3QgZ2VubF9pbmZv ICppbmZvLA0KPj4gCXJldHVybiBlcnI7DQo+PiB9DQo+Pg0KPj4gK3N0cnVjdCBkZXZsaW5rX21z ZyB7DQo+IA0KPiBMZXQncyBjYWxsIHRoaXMgInN0cnVjdCBkZXZsaW5rX21zZ19pdGVtIg0KDQpB Y2suDQoNCj4gDQo+IA0KPj4gKwlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7DQo+PiArCWludCBhdHRy dHlwZTsNCj4+ICsJdTggbmxhX3R5cGU7DQo+PiArCXUxNiBsZW47DQo+PiArCWludCB2YWx1ZVsw XTsNCj4+ICt9Ow0KPj4gKw0KPj4gK3N0cnVjdCBkZXZsaW5rX21zZ19jdHggew0KPj4gKwlzdHJ1 Y3QgbGlzdF9oZWFkIG1zZ19saXN0Ow0KPj4gKwlpbnQgbWF4X25lc3RlZF9kZXB0aDsNCj4+ICsJ aW50IGN1cnJfbmVzdDsNCj4+ICt9Ow0KPj4gKw0KPj4gKyNkZWZpbmUgREVWTElOS19NU0dfTUFY X1NJWkUgKDQwOTYgLSBHRU5MX0hEUkxFTikNCj4+ICsNCj4+ICtzdGF0aWMgc3RydWN0IGRldmxp bmtfbXNnX2N0eCAqZGV2bGlua19tc2dfY3R4X2FsbG9jKHZvaWQpDQo+PiArew0KPj4gKwlzdHJ1 Y3QgZGV2bGlua19tc2dfY3R4ICptc2dfY3R4Ow0KPj4gKw0KPj4gKwltc2dfY3R4ID0ga3phbGxv YyhzaXplb2YoKm1zZ19jdHgpLCBHRlBfS0VSTkVMKTsNCj4+ICsJaWYgKCFtc2dfY3R4KQ0KPj4g KwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7DQo+PiArDQo+PiArCUlOSVRfTElTVF9IRUFEKCZt c2dfY3R4LT5tc2dfbGlzdCk7DQo+PiArDQo+PiArCXJldHVybiBtc2dfY3R4Ow0KPj4gK30NCj4+ ICsNCj4+ICtzdGF0aWMgdm9pZCBkZXZsaW5rX21zZ19jdHhfZnJlZShzdHJ1Y3QgZGV2bGlua19t c2dfY3R4ICptc2dfY3R4KQ0KPj4gK3sNCj4+ICsJc3RydWN0IGRldmxpbmtfbXNnICptc2csICp0 bTsNCj4+ICsNCj4+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKG1zZywgdG0sICZtc2dfY3R4 LT5tc2dfbGlzdCwgbGlzdCkgew0KPj4gKwkJbGlzdF9kZWwoJm1zZy0+bGlzdCk7DQo+PiArCQlr ZnJlZShtc2cpOw0KPj4gKwl9DQo+PiArCWtmcmVlKG1zZ19jdHgpOw0KPj4gK30NCj4+ICsNCj4+ ICtpbnQgZGV2bGlua19tc2dfbmVzdF9zdGFydChzdHJ1Y3QgZGV2bGlua19tc2dfY3R4ICptc2df Y3R4LCBpbnQgYXR0cnR5cGUpDQo+PiArew0KPj4gKwlzdHJ1Y3QgZGV2bGlua19tc2cgKm5lc3Rf bXNnOw0KPj4gKw0KPj4gKwlpZiAoYXR0cnR5cGUgIT0gREVWTElOS19BVFRSX01TR19PQkpFQ1Qg JiYNCj4+ICsJICAgIGF0dHJ0eXBlICE9IERFVkxJTktfQVRUUl9NU0dfT0JKRUNUX1BBSVIgJiYN Cj4+ICsJICAgIGF0dHJ0eXBlICE9IERFVkxJTktfQVRUUl9NU0dfT0JKRUNUX1ZBTFVFICYmDQo+ PiArCSAgICBhdHRydHlwZSAhPSBERVZMSU5LX0FUVFJfTVNHX09CSkVDVF9WQUxVRV9BUlJBWSkN Cj4+ICsJCXJldHVybiAtRUlOVkFMOw0KPj4gKw0KPj4gKwluZXN0X21zZyA9IGt6YWxsb2Moc2l6 ZW9mKCpuZXN0X21zZyksIEdGUF9LRVJORUwpOw0KPj4gKwlpZiAoIW5lc3RfbXNnKQ0KPj4gKwkJ cmV0dXJuIC1FTk9NRU07DQo+PiArDQo+PiArCW5lc3RfbXNnLT5hdHRydHlwZSA9IGF0dHJ0eXBl Ow0KPj4gKwltc2dfY3R4LT5jdXJyX25lc3QrKzsNCj4+ICsJbXNnX2N0eC0+bWF4X25lc3RlZF9k ZXB0aCA9IG1heChtc2dfY3R4LT5tYXhfbmVzdGVkX2RlcHRoLA0KPj4gKwkJCQkJbXNnX2N0eC0+ Y3Vycl9uZXN0KTsNCj4+ICsJbGlzdF9hZGRfdGFpbCgmbmVzdF9tc2ctPmxpc3QsICZtc2dfY3R4 LT5tc2dfbGlzdCk7DQo+PiArDQo+PiArCXJldHVybiAwOw0KPj4gK30NCj4+ICtFWFBPUlRfU1lN Qk9MX0dQTChkZXZsaW5rX21zZ19uZXN0X3N0YXJ0KTsNCj4+ICsNCj4+ICtpbnQgZGV2bGlua19t c2dfbmVzdF9lbmQoc3RydWN0IGRldmxpbmtfbXNnX2N0eCAqbXNnX2N0eCkNCj4+ICt7DQo+PiAr CXN0cnVjdCBkZXZsaW5rX21zZyAqbmVzdF9tc2c7DQo+PiArDQo+PiArCVdBUk5fT04oIW1zZ19j dHgtPmN1cnJfbmVzdCk7DQo+PiArCW5lc3RfbXNnID0ga3phbGxvYyhzaXplb2YoKm5lc3RfbXNn KSwgR0ZQX0tFUk5FTCk7DQo+PiArCWlmICghbmVzdF9tc2cpDQo+PiArCQlyZXR1cm4gLUVOT01F TTsNCj4+ICsNCj4+ICsJbXNnX2N0eC0+Y3Vycl9uZXN0LS07DQo+PiArCWxpc3RfYWRkX3RhaWwo Jm5lc3RfbXNnLT5saXN0LCAmbXNnX2N0eC0+bXNnX2xpc3QpOw0KPj4gKw0KPj4gKwlyZXR1cm4g MDsNCj4+ICt9DQo+PiArRVhQT1JUX1NZTUJPTF9HUEwoZGV2bGlua19tc2dfbmVzdF9lbmQpOw0K Pj4gKw0KPj4gK2ludCBkZXZsaW5rX21zZ19wdXRfdmFsdWUoc3RydWN0IGRldmxpbmtfbXNnX2N0 eCAqbXNnX2N0eCwNCj4+ICsJCQkgIHZvaWQgKnZhbHVlLCB1MTYgdmFsdWVfbGVuLCB1OCB2YWx1 ZV9ubGFfdHlwZSkNCj4+ICt7DQo+PiArCXN0cnVjdCBkZXZsaW5rX21zZyAqdmFsdWVfbXNnOw0K Pj4gKw0KPj4gKwlpZiAodmFsdWVfbGVuID4gREVWTElOS19NU0dfTUFYX1NJWkUpDQo+PiArCQly ZXR1cm4gLUVNU0dTSVpFOw0KPj4gKw0KPj4gKwlpZiAodmFsdWVfbmxhX3R5cGUgIT0gTkxBX1U4 ICYmDQo+PiArCSAgICB2YWx1ZV9ubGFfdHlwZSAhPSBOTEFfVTMyICYmDQo+PiArCSAgICB2YWx1 ZV9ubGFfdHlwZSAhPSBOTEFfVTY0ICYmDQo+PiArCSAgICB2YWx1ZV9ubGFfdHlwZSAhPSBOTEFf TlVMX1NUUklORyAmJg0KPj4gKwkgICAgdmFsdWVfbmxhX3R5cGUgIT0gTkxBX0JJTkFSWSkNCj4+ ICsJCXJldHVybiAtRUlOVkFMOw0KPj4gKw0KPj4gKwl2YWx1ZV9tc2cgPSBremFsbG9jKHNpemVv ZigqdmFsdWVfbXNnKSArIHZhbHVlX2xlbiwgR0ZQX0tFUk5FTCk7DQo+IA0KPiBMb29rcyBmaW5l Lg0KPiANCj4gDQo+PiArCWlmICghdmFsdWVfbXNnKQ0KPj4gKwkJcmV0dXJuIC1FTk9NRU07DQo+ PiArDQo+PiArCXZhbHVlX21zZy0+bmxhX3R5cGUgPSB2YWx1ZV9ubGFfdHlwZTsNCj4+ICsJdmFs dWVfbXNnLT5sZW4gPSB2YWx1ZV9sZW47DQo+PiArCXZhbHVlX21zZy0+YXR0cnR5cGUgPSBERVZM SU5LX0FUVFJfTVNHX09CSkVDVF9WQUxVRV9EQVRBOw0KPj4gKwltZW1jcHkoJnZhbHVlX21zZy0+ dmFsdWUsIHZhbHVlLCB2YWx1ZV9sZW4pOw0KPj4gKwlsaXN0X2FkZF90YWlsKCZ2YWx1ZV9tc2ct Pmxpc3QsICZtc2dfY3R4LT5tc2dfbGlzdCk7DQo+PiArDQo+PiArCXJldHVybiAwOw0KPj4gK30N Cj4+ICtFWFBPUlRfU1lNQk9MX0dQTChkZXZsaW5rX21zZ19wdXRfdmFsdWUpOw0KPj4gKw0KPj4g K2ludCBkZXZsaW5rX21zZ19wdXRfbmFtZShzdHJ1Y3QgZGV2bGlua19tc2dfY3R4ICptc2dfY3R4 LCBjaGFyICpuYW1lKQ0KPj4gK3sNCj4+ICsJc3RydWN0IGRldmxpbmtfbXNnICpuYW1lX21zZzsN Cj4+ICsNCj4+ICsJaWYgKHN0cmxlbihuYW1lKSArIDEgPiBERVZMSU5LX01TR19NQVhfU0laRSkN Cj4+ICsJCXJldHVybiAtRU1TR1NJWkU7DQo+PiArDQo+PiArCW5hbWVfbXNnID0ga3phbGxvYyhz aXplb2YoKm5hbWVfbXNnKSArIHN0cmxlbihuYW1lKSArIDEsIEdGUF9LRVJORUwpOw0KPj4gKwlp ZiAoIW5hbWVfbXNnKQ0KPj4gKwkJcmV0dXJuIC1FTk9NRU07DQo+PiArDQo+PiArCW5hbWVfbXNn LT5ubGFfdHlwZSA9IE5MQV9OVUxfU1RSSU5HOw0KPj4gKwluYW1lX21zZy0+bGVuID0gc3RybGVu KG5hbWUpICsgMTsNCj4+ICsJbmFtZV9tc2ctPmF0dHJ0eXBlID0gREVWTElOS19BVFRSX01TR19P QkpFQ1RfTkFNRTsNCj4+ICsJbWVtY3B5KCZuYW1lX21zZy0+dmFsdWUsIG5hbWUsIG5hbWVfbXNn LT5sZW4pOw0KPj4gKwlsaXN0X2FkZF90YWlsKCZuYW1lX21zZy0+bGlzdCwgJm1zZ19jdHgtPm1z Z19saXN0KTsNCj4+ICsNCj4+ICsJcmV0dXJuIDA7DQo+PiArfQ0KPj4gK0VYUE9SVF9TWU1CT0xf R1BMKGRldmxpbmtfbXNnX3B1dF9uYW1lKTsNCj4+ICsNCj4+ICtpbnQgZGV2bGlua19tc2dfcHV0 X25hbWVfdmFsdWVfcGFpcihzdHJ1Y3QgZGV2bGlua19tc2dfY3R4ICptc2dfY3R4LA0KPj4gKwkJ CQkgICAgY2hhciAqbmFtZSwgdm9pZCAqdmFsdWUsIHUxNiB2YWx1ZV9sZW4sDQo+PiArCQkJCSAg ICB1OCB2YWx1ZV9ubGFfdHlwZSkNCj4+ICt7DQo+PiArCWludCBlcnI7DQo+PiArDQo+PiArCWVy ciA9IGRldmxpbmtfbXNnX25lc3Rfc3RhcnQobXNnX2N0eCwgREVWTElOS19BVFRSX01TR19PQkpF Q1RfUEFJUik7DQo+PiArCWlmIChlcnIpDQo+PiArCQlyZXR1cm4gZXJyOw0KPj4gKw0KPj4gKwll cnIgPSBkZXZsaW5rX21zZ19wdXRfbmFtZShtc2dfY3R4LCBuYW1lKTsNCj4+ICsJaWYgKGVycikN Cj4+ICsJCXJldHVybiBlcnI7DQo+PiArDQo+PiArCWVyciA9IGRldmxpbmtfbXNnX25lc3Rfc3Rh cnQobXNnX2N0eCwgREVWTElOS19BVFRSX01TR19PQkpFQ1RfVkFMVUUpOw0KPj4gKwlpZiAoZXJy KQ0KPj4gKwkJcmV0dXJuIGVycjsNCj4+ICsNCj4+ICsJZXJyID0gZGV2bGlua19tc2dfcHV0X3Zh bHVlKG1zZ19jdHgsIHZhbHVlLCB2YWx1ZV9sZW4sIHZhbHVlX25sYV90eXBlKTsNCj4+ICsJaWYg KGVycikNCj4+ICsJCXJldHVybiBlcnI7DQo+PiArDQo+PiArCWVyciA9IGRldmxpbmtfbXNnX25l c3RfZW5kKG1zZ19jdHgpOw0KPj4gKwlpZiAoZXJyKQ0KPj4gKwkJcmV0dXJuIGVycjsNCj4+ICsN Cj4+ICsJZXJyID0gZGV2bGlua19tc2dfbmVzdF9lbmQobXNnX2N0eCk7DQo+PiArCWlmIChlcnIp DQo+PiArCQlyZXR1cm4gZXJyOw0KPj4gKw0KPj4gKwlyZXR1cm4gMDsNCj4+ICt9DQo+PiArRVhQ T1JUX1NZTUJPTF9HUEwoZGV2bGlua19tc2dfcHV0X25hbWVfdmFsdWVfcGFpcik7DQo+PiArDQo+ PiAraW50IGRldmxpbmtfbXNnX3B1dF9uYW1lX3ZhbHVlX2FycmF5KHN0cnVjdCBkZXZsaW5rX21z Z19jdHggKm1zZ19jdHgsDQo+PiArCQkJCSAgICAgY2hhciAqbmFtZSwgdm9pZCAqKnZhbHVlLCB1 MTYgKnZhbHVlX2xlbiwNCj4+ICsJCQkJICAgICB1OCAqdmFsdWVfbmxhX3R5cGUsIGludCBhcnJh eV9zaXplKQ0KPiANCj4gVGhpcyBpcyBsaW1pdHRpbmcgdGhlIGFycmF5cyB0byBwbGFpbiB2YWx1 ZXMuIE9uZSBzaG91bGQgYmUgYWJsZSB0byBuZXN0DQo+IG9iamVjdHMgaW5zaWRlLiBJZiBmYWN0 LCB0aGF0IGlzIHdoYXQgeW91IGNhbiB0byBkbyB3aXRoIHNxczoNCj4gDQo+IG9iamVjdCBzdGFy dA0KPiAgICBuYW1lIHNxcw0KPiAgICBhcnJheSBzdGFydA0KPiAgICAgIG9iamVjdCBzdGFydA0K PiAgICAgICAgaW5kZXggMA0KPiAgICAgICAgeHh4IHl5eQ0KPiAgICAgIG9iamVjdCBlbmQNCj4g ICAgICBvYmplY3Qgc3RhcnQNCj4gICAgICAgIGluZGV4IDENCj4gICAgICAgIHh4eCB5eXkNCj4g ICAgICBvYmplY3QgZW5kDQo+ICAgIGFycmF5IGVuZA0KPiBvYmplY3QgZW5kDQo+IA0KPiBTbyB5 b3UgbmVlZCB0byBoYXZlOg0KPiBkZXZsaW5rX21zZ19wdXRfYXJyYXlfc3RhcnQoKQ0KPiBkZXZs aW5rX21zZ19wdXRfYXJyYXlfZW5kKCkNCg0KU291bmRzIGdvb2QsIHdpbGwgZG8uDQoNCj4gDQo+ IA0KPj4gK3sNCj4+ICsJaW50IGVyciwgaTsNCj4+ICsNCj4+ICsJZXJyID0gZGV2bGlua19tc2df bmVzdF9zdGFydChtc2dfY3R4LCBERVZMSU5LX0FUVFJfTVNHX09CSkVDVF9QQUlSKTsNCj4+ICsJ aWYgKGVycikNCj4+ICsJCXJldHVybiBlcnI7DQo+PiArDQo+PiArCWVyciA9IGRldmxpbmtfbXNn X3B1dF9uYW1lKG1zZ19jdHgsIG5hbWUpOw0KPj4gKwlpZiAoZXJyKQ0KPj4gKwkJcmV0dXJuIGVy cjsNCj4+ICsNCj4+ICsJZXJyID0gZGV2bGlua19tc2dfbmVzdF9zdGFydChtc2dfY3R4LCBERVZM SU5LX0FUVFJfTVNHX09CSkVDVF9WQUxVRSk7DQo+PiArCWlmIChlcnIpDQo+PiArCQlyZXR1cm4g ZXJyOw0KPj4gKw0KPj4gKwllcnIgPSBkZXZsaW5rX21zZ19uZXN0X3N0YXJ0KG1zZ19jdHgsDQo+ PiArCQkJCSAgICAgREVWTElOS19BVFRSX01TR19PQkpFQ1RfVkFMVUVfQVJSQVkpOw0KPj4gKwlp ZiAoZXJyKQ0KPj4gKwkJcmV0dXJuIGVycjsNCj4+ICsNCj4+ICsJZm9yIChpID0gMDsgaSA8IGFy cmF5X3NpemU7IGkrKykgew0KPj4gKwkJZXJyID0gZGV2bGlua19tc2dfbmVzdF9zdGFydChtc2df Y3R4LA0KPj4gKwkJCQkJICAgICBERVZMSU5LX0FUVFJfTVNHX09CSkVDVF9WQUxVRSk7DQo+PiAr CQlpZiAoZXJyKQ0KPj4gKwkJCXJldHVybiBlcnI7DQo+PiArDQo+PiArCQllcnIgPSBkZXZsaW5r X21zZ19wdXRfdmFsdWUobXNnX2N0eCwgdmFsdWVbaV0sDQo+PiArCQkJCQkgICAgdmFsdWVfbGVu W2ldLCB2YWx1ZV9ubGFfdHlwZVtpXSk7DQo+PiArCQlpZiAoZXJyKQ0KPj4gKwkJCXJldHVybiBl cnI7DQo+PiArCQllcnIgPSBkZXZsaW5rX21zZ19uZXN0X2VuZChtc2dfY3R4KTsNCj4+ICsJCWlm IChlcnIpDQo+PiArCQkJcmV0dXJuIGVycjsNCj4+ICsJfQ0KPj4gKw0KPj4gKwllcnIgPSBkZXZs aW5rX21zZ19uZXN0X2VuZChtc2dfY3R4KTsNCj4+ICsJaWYgKGVycikNCj4+ICsJCXJldHVybiBl cnI7DQo+PiArDQo+PiArCWVyciA9IGRldmxpbmtfbXNnX25lc3RfZW5kKG1zZ19jdHgpOw0KPj4g KwlpZiAoZXJyKQ0KPj4gKwkJcmV0dXJuIGVycjsNCj4+ICsNCj4+ICsJZXJyID0gZGV2bGlua19t c2dfbmVzdF9lbmQobXNnX2N0eCk7DQo+PiArCWlmIChlcnIpDQo+PiArCQlyZXR1cm4gZXJyOw0K Pj4gKw0KPj4gKwlyZXR1cm4gMDsNCj4+ICt9DQo+PiArRVhQT1JUX1NZTUJPTF9HUEwoZGV2bGlu a19tc2dfcHV0X25hbWVfdmFsdWVfYXJyYXkpOw0KPj4gKw0KPj4gK2ludCBkZXZsaW5rX21zZ19v YmplY3Rfc3RhcnQoc3RydWN0IGRldmxpbmtfbXNnX2N0eCAqbXNnX2N0eCwgY2hhciAqbmFtZSkN Cj4+ICt7DQo+PiArCWludCBlcnI7DQo+PiArDQo+PiArCWVyciA9IGRldmxpbmtfbXNnX25lc3Rf c3RhcnQobXNnX2N0eCwgREVWTElOS19BVFRSX01TR19PQkpFQ1QpOw0KPj4gKwlpZiAoZXJyKQ0K Pj4gKwkJcmV0dXJuIGVycjsNCj4+ICsNCj4+ICsJaWYgKCFuYW1lKQ0KPj4gKwkJcmV0dXJuIDA7 DQo+PiArDQo+PiArCWVyciA9IGRldmxpbmtfbXNnX25lc3Rfc3RhcnQobXNnX2N0eCwgREVWTElO S19BVFRSX01TR19PQkpFQ1RfUEFJUik7DQo+PiArCWlmIChlcnIpDQo+PiArCQlyZXR1cm4gZXJy Ow0KPj4gKw0KPj4gKwllcnIgPSBkZXZsaW5rX21zZ19wdXRfbmFtZShtc2dfY3R4LCBuYW1lKTsN Cj4+ICsJaWYgKGVycikNCj4+ICsJCXJldHVybiBlcnI7DQo+PiArDQo+PiArCWVyciA9IGRldmxp bmtfbXNnX25lc3Rfc3RhcnQobXNnX2N0eCwgREVWTElOS19BVFRSX01TR19PQkpFQ1RfVkFMVUUp Ow0KPj4gKwlpZiAoZXJyKQ0KPj4gKwkJcmV0dXJuIGVycjsNCj4+ICsNCj4+ICsJcmV0dXJuIDA7 DQo+PiArfQ0KPj4gK0VYUE9SVF9TWU1CT0xfR1BMKGRldmxpbmtfbXNnX29iamVjdF9zdGFydCk7 DQo+PiArDQo+PiAraW50IGRldmxpbmtfbXNnX29iamVjdF9lbmQoc3RydWN0IGRldmxpbmtfbXNn X2N0eCAqbXNnX2N0eCwgY2hhciAqbmFtZSkNCj4+ICt7DQo+PiArCWludCBlcnI7DQo+PiArDQo+ PiArCWlmICghbmFtZSkNCj4+ICsJCWdvdG8gZW5kX29iamVjdDsNCj4+ICsNCj4+ICsJZXJyID0g ZGV2bGlua19tc2dfbmVzdF9lbmQobXNnX2N0eCk7IC8qIERFVkxJTktfQVRUUl9NU0dfT0JKRUNU X1ZBTFVFICovDQo+PiArCWlmIChlcnIpDQo+PiArCQlyZXR1cm4gZXJyOw0KPj4gKw0KPj4gKwll cnIgPSBkZXZsaW5rX21zZ19uZXN0X2VuZChtc2dfY3R4KTsgLyogREVWTElOS19BVFRSX01TR19P QkpFQ1RfUEFJUiAqLw0KPj4gKwlpZiAoZXJyKQ0KPj4gKwkJcmV0dXJuIGVycjsNCj4+ICsNCj4+ ICtlbmRfb2JqZWN0Og0KPj4gKwllcnIgPSBkZXZsaW5rX21zZ19uZXN0X2VuZChtc2dfY3R4KTsg LyogREVWTElOS19BVFRSX01TR19PQkpFQ1QgKi8NCj4+ICsJaWYgKGVycikNCj4+ICsJCXJldHVy biBlcnI7DQo+PiArDQo+PiArCXJldHVybiAwOw0KPj4gK30NCj4+ICtFWFBPUlRfU1lNQk9MX0dQ TChkZXZsaW5rX21zZ19vYmplY3RfZW5kKTsNCj4+ICsNCj4+ICtzdGF0aWMgaW50DQo+PiArZGV2 bGlua19tc2dfZmlsbF9kYXRhKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBkZXZsaW5rX21z ZyAqbXNnKQ0KPj4gK3sNCj4+ICsJaW50IGVycjsNCj4+ICsNCj4+ICsJc3dpdGNoIChtc2ctPm5s YV90eXBlKSB7DQo+PiArCWNhc2UgTkxBX1U4Og0KPj4gKwkJZXJyID0gbmxhX3B1dF91OChza2Is IERFVkxJTktfQVRUUl9NU0dfT0JKRUNUX1ZBTFVFX0RBVEEsDQo+PiArCQkJCSAqKHU4ICopbXNn LT52YWx1ZSk7DQo+PiArCQlicmVhazsNCj4+ICsJY2FzZSBOTEFfVTMyOg0KPj4gKwkJZXJyID0g bmxhX3B1dF91MzIoc2tiLCBERVZMSU5LX0FUVFJfTVNHX09CSkVDVF9WQUxVRV9EQVRBLA0KPj4g KwkJCQkgICoodTMyICopbXNnLT52YWx1ZSk7DQo+PiArCQlicmVhazsNCj4+ICsJY2FzZSBOTEFf VTY0Og0KPj4gKwkJZXJyID0gbmxhX3B1dF91NjRfNjRiaXQoc2tiLA0KPj4gKwkJCQkJREVWTElO S19BVFRSX01TR19PQkpFQ1RfVkFMVUVfREFUQSwNCj4+ICsJCQkJCSoodTY0ICopbXNnLT52YWx1 ZSwgREVWTElOS19BVFRSX1BBRCk7DQo+PiArCQlicmVhazsNCj4+ICsJY2FzZSBOTEFfTlVMX1NU UklORzoNCj4+ICsJCWVyciA9IG5sYV9wdXRfc3RyaW5nKHNrYiwNCj4+ICsJCQkJICAgICBERVZM SU5LX0FUVFJfTVNHX09CSkVDVF9WQUxVRV9EQVRBLA0KPj4gKwkJCQkgICAgIChjaGFyICopJm1z Zy0+dmFsdWUpOw0KPj4gKwkJYnJlYWs7DQo+PiArCWNhc2UgTkxBX0JJTkFSWToNCj4+ICsJCWVy ciA9IG5sYV9wdXQoc2tiLCBERVZMSU5LX0FUVFJfTVNHX09CSkVDVF9WQUxVRV9EQVRBLA0KPj4g KwkJCSAgICAgIG1zZy0+bGVuLCAodm9pZCAqKSZtc2ctPnZhbHVlKTsNCj4+ICsJCWJyZWFrOw0K Pj4gKwlkZWZhdWx0Og0KPj4gKwkJZXJyID0gLUVJTlZBTDsNCj4+ICsJCWJyZWFrOw0KPj4gKwl9 DQo+PiArDQo+PiArCXJldHVybiBlcnI7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbnQNCj4+ ICtkZXZsaW5rX21zZ19maWxsX3R5cGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGRldmxp bmtfbXNnICptc2cpDQo+PiArew0KPj4gKwlpbnQgZXJyOw0KPj4gKw0KPj4gKwlzd2l0Y2ggKG1z Zy0+bmxhX3R5cGUpIHsNCj4+ICsJY2FzZSBOTEFfVTg6DQo+PiArCQllcnIgPSBubGFfcHV0X3U4 KHNrYiwgREVWTElOS19BVFRSX01TR19PQkpFQ1RfVkFMVUVfVFlQRSwNCj4+ICsJCQkJIE5MQV9V OCk7DQo+PiArCQlicmVhazsNCj4+ICsJY2FzZSBOTEFfVTMyOg0KPj4gKwkJZXJyID0gbmxhX3B1 dF91OChza2IsIERFVkxJTktfQVRUUl9NU0dfT0JKRUNUX1ZBTFVFX1RZUEUsDQo+PiArCQkJCSBO TEFfVTMyKTsNCj4+ICsJCWJyZWFrOw0KPj4gKwljYXNlIE5MQV9VNjQ6DQo+PiArCQllcnIgPSBu bGFfcHV0X3U4KHNrYiwgREVWTElOS19BVFRSX01TR19PQkpFQ1RfVkFMVUVfVFlQRSwNCj4+ICsJ CQkJIE5MQV9VNjQpOw0KPj4gKwkJYnJlYWs7DQo+PiArCWNhc2UgTkxBX05VTF9TVFJJTkc6DQo+ PiArCQllcnIgPSBubGFfcHV0X3U4KHNrYiwgREVWTElOS19BVFRSX01TR19PQkpFQ1RfVkFMVUVf VFlQRSwNCj4+ICsJCQkJIE5MQV9OVUxfU1RSSU5HKTsNCj4+ICsJCWJyZWFrOw0KPj4gKwljYXNl IE5MQV9CSU5BUlk6DQo+PiArCQllcnIgPSBubGFfcHV0X3U4KHNrYiwgREVWTElOS19BVFRSX01T R19PQkpFQ1RfVkFMVUVfVFlQRSwNCj4+ICsJCQkJIE5MQV9CSU5BUlkpOw0KPj4gKwkJYnJlYWs7 DQo+PiArCWRlZmF1bHQ6DQo+PiArCQllcnIgPSAtRUlOVkFMOw0KPj4gKwkJYnJlYWs7DQo+PiAr CX0NCj4+ICsNCj4+ICsJcmV0dXJuIGVycjsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGludA0K Pj4gK2RldmxpbmtfbXNnX3ByZXBhcmVfc2tiKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBk ZXZsaW5rX21zZ19jdHggKm1zZ19jdHgsDQo+PiArCQkJaW50ICpzdGFydCkNCj4+ICt7DQo+PiAr CXN0cnVjdCBubGF0dHIgKipubGF0dHJfYXJyOw0KPj4gKwlzdHJ1Y3QgZGV2bGlua19tc2cgKm1z ZzsNCj4+ICsJaW50IGogPSAwLCBpID0gMDsNCj4+ICsJaW50IGVycjsNCj4+ICsNCj4+ICsJbmxh dHRyX2FyciA9IGtjYWxsb2MobXNnX2N0eC0+bWF4X25lc3RlZF9kZXB0aCwNCj4+ICsJCQkgICAg IHNpemVvZigqbmxhdHRyX2FyciksIEdGUF9LRVJORUwpOw0KPj4gKwlpZiAoIW5sYXR0cl9hcnIp DQo+PiArCQlyZXR1cm4gLUVJTlZBTDsNCj4+ICsNCj4+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeSht c2csICZtc2dfY3R4LT5tc2dfbGlzdCwgbGlzdCkgew0KPj4gKwkJaWYgKGogPCAqc3RhcnQpIHsN Cj4+ICsJCQlqKys7DQo+PiArCQkJY29udGludWU7DQo+PiArCQl9DQo+PiArDQo+PiArCQlzd2l0 Y2ggKG1zZy0+YXR0cnR5cGUpIHsNCj4+ICsJCWNhc2UgREVWTElOS19BVFRSX01TR19PQkpFQ1Q6 DQo+PiArCQljYXNlIERFVkxJTktfQVRUUl9NU0dfT0JKRUNUX1BBSVI6DQo+PiArCQljYXNlIERF VkxJTktfQVRUUl9NU0dfT0JKRUNUX1ZBTFVFOg0KPj4gKwkJY2FzZSBERVZMSU5LX0FUVFJfTVNH X09CSkVDVF9WQUxVRV9BUlJBWToNCj4+ICsJCQlubGF0dHJfYXJyW2ldID0gbmxhX25lc3Rfc3Rh cnQoc2tiLCBtc2ctPmF0dHJ0eXBlKTsNCj4+ICsJCQlpZiAoIW5sYXR0cl9hcnJbaV0pIHsNCj4+ ICsJCQkJZXJyID0gLUVNU0dTSVpFOw0KPj4gKwkJCQlnb3RvIG5sYV9wdXRfZmFpbHVyZTsNCj4+ ICsJCQl9DQo+PiArCQkJaSsrOw0KPj4gKwkJCWJyZWFrOw0KPj4gKwkJY2FzZSBERVZMSU5LX0FU VFJfTVNHX09CSkVDVF9WQUxVRV9EQVRBOg0KPj4gKwkJCWVyciA9IGRldmxpbmtfbXNnX2ZpbGxf ZGF0YShza2IsIG1zZyk7DQo+PiArCQkJaWYgKGVycikNCj4+ICsJCQkJZ290byBubGFfcHV0X2Zh aWx1cmU7DQo+PiArCQkJZXJyID0gZGV2bGlua19tc2dfZmlsbF90eXBlKHNrYiwgbXNnKTsNCj4+ ICsJCQlpZiAoZXJyKQ0KPj4gKwkJCQlnb3RvIG5sYV9wdXRfZmFpbHVyZTsNCj4+ICsJCQlicmVh azsNCj4+ICsJCWNhc2UgREVWTElOS19BVFRSX01TR19PQkpFQ1RfTkFNRToNCj4+ICsJCQllcnIg PSBubGFfcHV0X3N0cmluZyhza2IsIG1zZy0+YXR0cnR5cGUsDQo+PiArCQkJCQkgICAgIChjaGFy ICopJm1zZy0+dmFsdWUpOw0KPj4gKwkJCWlmIChlcnIpDQo+PiArCQkJCWdvdG8gbmxhX3B1dF9m YWlsdXJlOw0KPj4gKwkJCWJyZWFrOw0KPj4gKwkJZGVmYXVsdDogLyogTm8gYXR0cnR5cGUgKi8N Cj4+ICsJCQlubGFfbmVzdF9lbmQoc2tiLCBubGF0dHJfYXJyWy0taV0pOw0KPj4gKwkJCWJyZWFr Ow0KPj4gKwkJfQ0KPj4gKwkJaisrOw0KPj4gKwkJaWYgKCFpKQ0KPj4gKwkJCSpzdGFydCA9IGo7 DQo+PiArCX0NCj4+ICsNCj4+ICsJa2ZyZWUobmxhdHRyX2Fycik7DQo+PiArCXJldHVybiAwOw0K Pj4gKw0KPj4gK25sYV9wdXRfZmFpbHVyZToNCj4+ICsJZm9yIChqID0gMDsgaiA8IGk7IGorKykN Cj4+ICsJCW5sYV9uZXN0X2NhbmNlbChza2IsIG5sYXR0cl9hcnJbal0pOw0KPj4gKwlrZnJlZShu bGF0dHJfYXJyKTsNCj4+ICsJcmV0dXJuIGVycjsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGlu dCBkZXZsaW5rX21zZ19zbmQoc3RydWN0IGdlbmxfaW5mbyAqaW5mbywNCj4+ICsJCQkgICBlbnVt IGRldmxpbmtfY29tbWFuZCBjbWQsIGludCBmbGFncywNCj4+ICsJCQkgICBzdHJ1Y3QgZGV2bGlu a19tc2dfY3R4ICptc2dfY3R4KQ0KPj4gK3sNCj4+ICsJc3RydWN0IHNrX2J1ZmYgKnNrYjsNCj4+ ICsJc3RydWN0IG5sbXNnaGRyICpubGg7DQo+PiArCWludCBlcnIsIGluZGV4ID0gMDsNCj4+ICsJ Ym9vbCBsYXN0ID0gZmFsc2U7DQo+PiArCXZvaWQgKmhkcjsNCj4+ICsNCj4+ICsJd2hpbGUgKCFs YXN0KSB7DQo+PiArCQlpbnQgdG1wX2luZGV4ID0gaW5kZXg7DQo+PiArDQo+PiArCQlza2IgPSBn ZW5sbXNnX25ldyhHRU5MTVNHX0RFRkFVTFRfU0laRSwgR0ZQX0tFUk5FTCk7DQo+PiArCQlpZiAo IXNrYikNCj4+ICsJCQlyZXR1cm4gLUVOT01FTTsNCj4+ICsNCj4+ICsJCWhkciA9IGdlbmxtc2df cHV0KHNrYiwgaW5mby0+c25kX3BvcnRpZCwgaW5mby0+c25kX3NlcSwNCj4+ICsJCQkJICAmZGV2 bGlua19ubF9mYW1pbHksIE5MTV9GX01VTFRJLCBjbWQpOw0KPj4gKwkJaWYgKCFoZHIpDQo+PiAr CQkJZ290byBubGFfcHV0X2ZhaWx1cmU7DQo+PiArDQo+PiArCQllcnIgPSBkZXZsaW5rX21zZ19w cmVwYXJlX3NrYihza2IsIG1zZ19jdHgsICZpbmRleCk7DQo+PiArCQlpZiAoIWVycikNCj4+ICsJ CQlsYXN0ID0gdHJ1ZTsNCj4+ICsJCWVsc2UgaWYgKGVyciAhPSAtRU1TR1NJWkUgfHwgdG1wX2lu ZGV4ID09IGluZGV4KQ0KPj4gKwkJCWdvdG8gbmxhX3B1dF9mYWlsdXJlOw0KPj4gKw0KPj4gKwkJ Z2VubG1zZ19lbmQoc2tiLCBoZHIpOw0KPj4gKwkJZXJyID0gZ2VubG1zZ19yZXBseShza2IsIGlu Zm8pOw0KPj4gKwkJaWYgKGVycikNCj4+ICsJCQlyZXR1cm4gZXJyOw0KPiANCj4gDQo+IExvb2tz IGZpbmUuDQo+IA0KPiANCj4+ICsJfQ0KPj4gKw0KPj4gKwlza2IgPSBnZW5sbXNnX25ldyhHRU5M TVNHX0RFRkFVTFRfU0laRSwgR0ZQX0tFUk5FTCk7DQo+PiArCWlmICghc2tiKQ0KPj4gKwkJcmV0 dXJuIC1FTk9NRU07DQo+PiArCW5saCA9IG5sbXNnX3B1dChza2IsIGluZm8tPnNuZF9wb3J0aWQs IGluZm8tPnNuZF9zZXEsDQo+PiArCQkJTkxNU0dfRE9ORSwgMCwgZmxhZ3MgfCBOTE1fRl9NVUxU SSk7DQo+PiArCWVyciA9IGdlbmxtc2dfcmVwbHkoc2tiLCBpbmZvKTsNCj4+ICsJaWYgKGVycikN Cj4+ICsJCXJldHVybiBlcnI7DQo+PiArDQo+PiArCXJldHVybiAwOw0KPj4gKw0KPj4gK25sYV9w dXRfZmFpbHVyZToNCj4+ICsJZXJyID0gLUVJTzsNCj4+ICsJbmxtc2dfZnJlZShza2IpOw0KPj4g KwlyZXR1cm4gZXJyOw0KPj4gK30NCj4+ICsNCj4+IHN0cnVjdCBkZXZsaW5rX2hlYWx0aF9yZXBv cnRlciB7DQo+PiAJc3RydWN0IGxpc3RfaGVhZCBsaXN0Ow0KPj4gCXN0cnVjdCBkZXZsaW5rX2hl YWx0aF9idWZmZXIgKipkdW1wX2J1ZmZlcnNfYXJyYXk7DQo+PiAtLSANCj4+IDIuMTcuMQ0KPj4N Cg==