From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id E5720A0547; Wed, 29 Sep 2021 00:25:10 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 624844068F; Wed, 29 Sep 2021 00:25:10 +0200 (CEST) Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by mails.dpdk.org (Postfix) with ESMTP id 525484068E for ; Wed, 29 Sep 2021 00:25:08 +0200 (CEST) X-IronPort-AV: E=McAfee;i="6200,9189,10121"; a="285831466" X-IronPort-AV: E=Sophos;i="5.85,330,1624345200"; d="scan'208";a="285831466" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Sep 2021 15:25:07 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.85,330,1624345200"; d="scan'208";a="708088708" Received: from fmsmsx606.amr.corp.intel.com ([10.18.126.86]) by fmsmga005.fm.intel.com with ESMTP; 28 Sep 2021 15:25:07 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx606.amr.corp.intel.com (10.18.126.86) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Tue, 28 Sep 2021 15:25:07 -0700 Received: from fmsmsx603.amr.corp.intel.com (10.18.126.83) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Tue, 28 Sep 2021 15:25:05 -0700 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12 via Frontend Transport; Tue, 28 Sep 2021 15:25:05 -0700 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (104.47.56.176) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.12; Tue, 28 Sep 2021 15:25:05 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=h63keAe1u+JO4XIuYTDizNWwwFEVB+COcA+BP1peqaRaUgPLDCsiCN+KbyFPARw3bCAHbIcWQzVwOtpH3PlKXh7tx2Jnbn2lI9OG7XCNL/04Gp1PpP6ASIbcMcl2mAHsgqD1RROcNoiDr8jiuOxMosPq+e5Ot7OQeEUyv8p9UEweuz+QtOvRcmtmwCIiis/EaAbSp015wwnKSIkYLSZfZfkkJK3yS61+/X/A80LLIQ2d0xaYn+8FrhJIoTAf2zYJJ19+w3Ueo2g1dCrVBPVxbn8JTEEmvdqR6vMzzw/AGfl3SXFnqKjeWMu/HXPabSBvRI7mdiiMfwTUCj81Sk0WzA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=vlCbJk+OmBvpjb6hCM9B/JemCakgnuY73t2UJhnsRCY=; b=Y9D6fJ/NTxGiaLpIJtq5MyXkEZWg5ebO2V1FMdR2mjYuMOeyjEhPC0vu/yHGZEThx1X4ig997iJkOvCDIJk5hXTKfSPmRwbKm1z0pF1SfDwbIixWHbsqiFocRiP2cSDkmA31wHObTJYY/mmSlAAG3IzTXeK55rvhsn4jodMmA3LNoUV1U+cYb5m3tgsYevieQO5lH8g/+WXm6e6LGg4QmSPxZINLGOWQ3Twc47hu6tijigg619rPmJKWmoQFenp5zzVB4O8agqERIeQ3iHUtzdg59nC4xhn5DPFghDu4q6WSIaXB40LZEesbQnE8AeL83Rlx0T5a1A7UXMxb0j5jxg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=vlCbJk+OmBvpjb6hCM9B/JemCakgnuY73t2UJhnsRCY=; b=iIXwtVZWaFxNEmrKBhVK2RBtrNiyC14bmCLwxRbi8nvHF4/mOrN8+fqi9amCYzoHKMl+gy0qOAkZpBnnXJ92iyJEp+U+PAQmnqY/7wptHocouj4p0KaI1M8/VJKMqFXLxZllwH6G4HRsdiVdK7IZztc27WA0/38EI2d7Tnv5QBE= Received: from BY5PR11MB4482.namprd11.prod.outlook.com (2603:10b6:a03:1ca::33) by BY5PR11MB4356.namprd11.prod.outlook.com (2603:10b6:a03:1bf::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4544.15; Tue, 28 Sep 2021 22:25:00 +0000 Received: from BY5PR11MB4482.namprd11.prod.outlook.com ([fe80::a850:4ae9:9444:7334]) by BY5PR11MB4482.namprd11.prod.outlook.com ([fe80::a850:4ae9:9444:7334%5]) with mapi id 15.20.4544.021; Tue, 28 Sep 2021 22:25:00 +0000 From: "Ananyev, Konstantin" To: "Nicolau, Radu" , "Iremonger, Bernard" , "Medvedkin, Vladimir" CC: "dev@dpdk.org" , "mdr@ashroe.eu" , "Richardson, Bruce" , "Zhang, Roy Fan" , "hemant.agrawal@nxp.com" , "gakhil@marvell.com" , "anoobj@marvell.com" , "Doherty, Declan" , "Sinha, Abhijit" , "Buckley, Daniel M" , "marchana@marvell.com" , "ktejasree@marvell.com" , "matan@nvidia.com" Thread-Topic: [PATCH v6 06/10] ipsec: add transmit segmentation offload support Thread-Index: AQHXq6YUQYpEJNTt00+wuXcsUFuulauxqlCAgAf1VACAAHRKAA== Date: Tue, 28 Sep 2021 22:24:58 +0000 Message-ID: References: <20210713133542.3550525-1-radu.nicolau@intel.com> <20210917091747.1528262-1-radu.nicolau@intel.com> <20210917091747.1528262-7-radu.nicolau@intel.com> <7895670d-4b2f-c083-5203-3831f7157972@intel.com> In-Reply-To: <7895670d-4b2f-c083-5203-3831f7157972@intel.com> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.6.200.16 authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 02e4913c-8aa5-4a2a-5c45-08d982cecf9a x-ms-traffictypediagnostic: BY5PR11MB4356: x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 3YI3innY0jYLUCglK1mQpMJn1GK48ldG+t2oFR6gH40HxyZG9qWmmUET9H/cFoM1AfUGMs/gQe+XNALZYHy5O8/EcNhdzdnj7nB9McDggvSV2AW9vzRqUpfROwdJiFeqpGkYQXf3zlYf7fVV4DCq6FYy2Oj8meHgGgOG/gtom0mWJgw9/1l9Ykq3u49WZJ0sQmzqEaSZlz+ipafH0iq+CLECz+3xoEdS461OxbduzoOYah+abS90ARLOjRIpl+OBxn9OKjN+gZZGEUao9+pOAUG1Q9PV251bMg/juZYl8pQf8I4yWEPNIwc+PBcqDgrj81wZb6oNcHQFIMeMU7k+vHit01uUDOAy6XdjHxaoaX+++ny7B2fV/zxqa2dCCEWxJgQwEO3Q8ndU2w7bPksV5Z2EZR/goUYxJ29zsN9KXH1eB6KV6aMVvQYhfwXQBehJoI4BtTXNUQJwBh8sLetqG3sx7h75yI0Z9DwD7A1P/hUR8h1ppdHGtbOqLLau83lPOO/qtKbauCGpMM4e6cEUzmUP/cuzQesPu16Q35Ajr8D76XOXl/Y9lKQPtxKK9zy5A8qTWMsrx5cPV4ufalhlyAPBq/Lyi7eEXKw+6TMzi/sd9+LMgUP1bWGJ4OJkn0POdfRwxCIgfTpC42HPO3JIUV0tscDl5WdO0cbAY7QCj0s8HUBuDSi1Zodq5uEGFggeunA6G38zGLMViZNtk+bK5w== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BY5PR11MB4482.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(64756008)(66556008)(66476007)(7696005)(110136005)(316002)(53546011)(5660300002)(4326008)(30864003)(186003)(76116006)(122000001)(38100700002)(55236004)(6506007)(66946007)(66446008)(54906003)(26005)(8676002)(8936002)(2906002)(83380400001)(9686003)(508600001)(6636002)(55016002)(71200400001)(33656002)(38070700005)(52536014)(86362001); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?UGFKeGRxMmltcC9SZkErVVR6Ty8vbXBsNU5rN2UvaWFuY1E1QjdPTGRhbzlh?= =?utf-8?B?MGZpcjhyYWUwV3VIenFTSklVRWFkRmVCdDB3N2lWM3MzSFdPZUhPb2RmSUlo?= =?utf-8?B?WFJmbENoT2RLQm1nQXJ6ZUFjb2tMRStBNTZlZ0o2UVEwSzZjbU9DdHJFN3g3?= =?utf-8?B?eWhVTGlQbFJZWm1icU5XeHVpakppWEZwVTM5Mk1vZzN6c1hVaHBlcE40aWJT?= =?utf-8?B?S2h3Sm0weERmSHhBd1JkcXh6bjNLa3FrUSs4cGtsSER4aURHY1dqcmlNOEh3?= =?utf-8?B?K0thbGFPdHY1R3MrTUlMaXVIbnJBTGxpbURGbXA3RDNmZjFSU0R2KzdoeXM2?= =?utf-8?B?bDZpbUdQZ21pMXNWYllmZW5mTm9hQ2N5TUdLcFlraGtRelR0MG9PTjZCc1JW?= =?utf-8?B?ekJqbmN5YWZHeEh3ejl2RXJBTUxEVFI0YWxocEVjQ21lQy9WSTBHb3NkcDZh?= =?utf-8?B?Sk1wSGxEaGx3WlMyTE1rTzNhOXFocENiUjNNUEpSMG9aWndZak95d2NwdzQr?= =?utf-8?B?dUJqeWdDQS9WcjBXb3Y2S2JrbUlGbnEvOXFCSGxIQzl0WjRTTkVvVTJLMmFW?= =?utf-8?B?YWJYcjZ3NXVCaEVURWtWdzdaZUpjRDMxL2tURzBtSk80RDRrVGlQTkd0aGVR?= =?utf-8?B?aVkvZlhEbFA2cVVXQXZQYno4R0VhU1A2VlhuV2YraXZrcENLempzZFkxWFJh?= =?utf-8?B?VWZHUFEwZ3Z4aVhpd0Ezb1ZjRUlaelhFZXg2VUpMU2pwYStsWkZpTHNlU2RF?= =?utf-8?B?VFJhZDhMb1J3SzdNVkxDNWNCa2E2U2Q1R1BRU3BNOEM2Szk5VjgzbXlDQXFo?= =?utf-8?B?L3FKSXFnOHZkb2FyVURuUmluNkNMaGlOMDJEWXZTeFZtc1VIR3RtRjZRM1FG?= =?utf-8?B?WG1Jc0hxK0Q2S0paTXVQdFZTTWNydmg2aHFCN1E3OGRwWlJ0YU92NGMyUi9H?= =?utf-8?B?a1NXUVVXR0xmYW0xOXRwcy9USmlLN0l4elFLanJXb2NIK1M3RmtodnhrREVH?= =?utf-8?B?L1NiZUx4S080SlFHNXdIcytrMXlwcXd1L205c0VoMUNSQUQxdDd1c2R5TkdE?= =?utf-8?B?cWhwYUFyM0tTaEp6TXZuRng4T2VNWXBJRnUzUmhkLy8xcE90ZDJiZWlrMC9G?= =?utf-8?B?RCtMclhWV21vUzNVRmRXMW1YSXlsQlJpK3pTa2pEbHdXamVwcVFUM0ZwemIz?= =?utf-8?B?ODZka0IzM3IzUGNnV0J2bWkwNDIyR2d4MDhOcFhMQ3NSRFArNnZ5V1ZYQ0wz?= =?utf-8?B?dWVGNC9kK3lzRWFjTHdHbm42Rk1KaS9oT1NteVFVem9zMXJBYUtJVkNKOWFj?= =?utf-8?B?RFB2REhIL01NS3JsSllpM3hETlhKNkU4aUovUm5kdG55enhzalA2cnlnNnR3?= =?utf-8?B?dnN3SWtsUmY2QkM2aFRRY0o4L0dZZmJ3eWxpYStqUUJJMWQ2Tjc2cTdVWGZO?= =?utf-8?B?RUhDY3Baa3NtMmJUbGtqblNFK1ZGQ05EcFF3TDZQNGIwdlUxWGw3U1pYTnBu?= =?utf-8?B?NWlxZGtIc1ExV2Q2bGtMdFpVQ0Y1NW5wWHk3dDIwZWJZeHdxNXc4eTN5enVO?= =?utf-8?B?dTFDTE9zYTA4OGFMbHhqSytmZEVXZVNZaEVteWE2dEpsdlBJRUpLanI4S25U?= =?utf-8?B?ZVFNRFJEK0tqM21Ic3FSSmpXNys1b1Y4eFQ5SXR2cHNrdWhUb0kxVFlaQUVM?= =?utf-8?B?WE9BNit1Vlh1RmRkc3BFMlJPKzdkaDU5S0VRSGdnRlpoVzM0NTlRT29qMmY5?= =?utf-8?Q?9vLMtM67hRcn2NbgA3qUaDtAMNfuz5bgrHrEGNp?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BY5PR11MB4482.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 02e4913c-8aa5-4a2a-5c45-08d982cecf9a X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Sep 2021 22:25:00.5380 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: HFJg8/gmcce1wnMGSCy7wPs+misiGyaF/XPIieGPYIqolCUKxwyQYdp60CeWSBMy/d411hcDF/tTICRGmL5O/6n/oQF430p/c1YD4nEFKu0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR11MB4356 X-OriginatorOrg: intel.com Subject: Re: [dpdk-dev] [PATCH v6 06/10] ipsec: add transmit segmentation offload support X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" DQo+IE9uIDkvMjMvMjAyMSAzOjA5IFBNLCBBbmFueWV2LCBLb25zdGFudGluIHdyb3RlOg0KPiA+ DQo+ID4+IEFkZCBzdXBwb3J0IGZvciB0cmFuc21pdCBzZWdtZW50YXRpb24gb2ZmbG9hZCB0byBp bmxpbmUgY3J5cHRvIHByb2Nlc3NpbmcNCj4gPj4gbW9kZS4gVGhpcyBvZmZsb2FkIGlzIG5vdCBz dXBwb3J0ZWQgYnkgb3RoZXIgb2ZmbG9hZCBtb2RlcywgYXMgYXQgYQ0KPiA+PiBtaW5pbXVtIGl0 IHJlcXVpcmVzIGlubGluZSBjcnlwdG8gZm9yIElQc2VjIHRvIGJlIHN1cHBvcnRlZCBvbiB0aGUN Cj4gPj4gbmV0d29yayBpbnRlcmZhY2UuDQo+ID4+DQo+ID4+IFNpZ25lZC1vZmYtYnk6IERlY2xh biBEb2hlcnR5IDxkZWNsYW4uZG9oZXJ0eUBpbnRlbC5jb20+DQo+ID4+IFNpZ25lZC1vZmYtYnk6 IFJhZHUgTmljb2xhdSA8cmFkdS5uaWNvbGF1QGludGVsLmNvbT4NCj4gPj4gU2lnbmVkLW9mZi1i eTogQWJoaWppdCBTaW5oYSA8YWJoaWppdC5zaW5oYUBpbnRlbC5jb20+DQo+ID4+IFNpZ25lZC1v ZmYtYnk6IERhbmllbCBNYXJ0aW4gQnVja2xleSA8ZGFuaWVsLm0uYnVja2xleUBpbnRlbC5jb20+ DQo+ID4+IEFja2VkLWJ5OiBGYW4gWmhhbmcgPHJveS5mYW4uemhhbmdAaW50ZWwuY29tPg0KPiA+ PiAtLS0NCj4gPj4gICBsaWIvaXBzZWMvZXNwX2luYi5jICB8ICAgNCArLQ0KPiA+PiAgIGxpYi9p cHNlYy9lc3Bfb3V0Yi5jIHwgMTE1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr LS0tLS0tLS0NCj4gPj4gICBsaWIvaXBzZWMvaXBoLmggICAgICB8ICAxMCArKystDQo+ID4+ICAg bGliL2lwc2VjL3NhLmMgICAgICAgfCAgIDYgKysrDQo+ID4+ICAgbGliL2lwc2VjL3NhLmggICAg ICAgfCAgIDQgKysNCj4gPj4gICA1IGZpbGVzIGNoYW5nZWQsIDExNCBpbnNlcnRpb25zKCspLCAy NSBkZWxldGlvbnMoLSkNCj4gPj4NCj4gPj4gZGlmZiAtLWdpdCBhL2xpYi9pcHNlYy9lc3BfaW5i LmMgYi9saWIvaXBzZWMvZXNwX2luYi5jDQo+ID4+IGluZGV4IGQ2NmM4OGYwNWQuLmE2YWI4ZmJk ZDUgMTAwNjQ0DQo+ID4+IC0tLSBhL2xpYi9pcHNlYy9lc3BfaW5iLmMNCj4gPj4gKysrIGIvbGli L2lwc2VjL2VzcF9pbmIuYw0KPiA+PiBAQCAtNjY4LDggKzY2OCw4IEBAIHRyc19wcm9jZXNzKGNv bnN0IHN0cnVjdCBydGVfaXBzZWNfc2EgKnNhLCBzdHJ1Y3QgcnRlX21idWYgKm1iW10sDQo+ID4+ ICAgCQkJLyogbW9kaWZ5IHBhY2tldCdzIGxheW91dCAqLw0KPiA+PiAgIAkJCW5wID0gdHJzX3By b2Nlc3Nfc3RlcDIobWJbaV0sIG1sW2ldLCBobFtpXSwgY29mcywNCj4gPj4gICAJCQkJdG9baV0s IHRsLCBzcW4gKyBrKTsNCj4gPj4gLQkJCXVwZGF0ZV90cnNfbDNoZHIoc2EsIG5wICsgbDIsIG1i W2ldLT5wa3RfbGVuLA0KPiA+PiAtCQkJCWwyLCBobFtpXSAtIGwyLCBlc3B0W2ldLm5leHRfcHJv dG8pOw0KPiA+PiArCQkJdXBkYXRlX3Ryc19sMzRoZHJzKHNhLCBucCArIGwyLCBtYltpXS0+cGt0 X2xlbiwNCj4gPj4gKwkJCQlsMiwgaGxbaV0gLSBsMiwgZXNwdFtpXS5uZXh0X3Byb3RvLCAwKTsN Cj4gPj4NCj4gPj4gICAJCQkvKiB1cGRhdGUgbWJ1ZidzIG1ldGFkYXRhICovDQo+ID4+ICAgCQkJ dHJzX3Byb2Nlc3Nfc3RlcDMobWJbaV0pOw0KPiA+PiBkaWZmIC0tZ2l0IGEvbGliL2lwc2VjL2Vz cF9vdXRiLmMgYi9saWIvaXBzZWMvZXNwX291dGIuYw0KPiA+PiBpbmRleCBhM2Y3NzQ2OWMzLi45 ZmM3MDc1Nzk2IDEwMDY0NA0KPiA+PiAtLS0gYS9saWIvaXBzZWMvZXNwX291dGIuYw0KPiA+PiAr KysgYi9saWIvaXBzZWMvZXNwX291dGIuYw0KPiA+PiBAQCAtMiw2ICsyLDggQEANCj4gPj4gICAg KiBDb3B5cmlnaHQoYykgMjAxOC0yMDIwIEludGVsIENvcnBvcmF0aW9uDQo+ID4+ICAgICovDQo+ ID4+DQo+ID4+ICsjaW5jbHVkZSA8bWF0aC5oPg0KPiA+PiArDQo+ID4+ICAgI2luY2x1ZGUgPHJ0 ZV9pcHNlYy5oPg0KPiA+PiAgICNpbmNsdWRlIDxydGVfZXNwLmg+DQo+ID4+ICAgI2luY2x1ZGUg PHJ0ZV9pcC5oPg0KPiA+PiBAQCAtMTU2LDExICsxNTgsMjAgQEAgb3V0Yl90dW5fcGt0X3ByZXBh cmUoc3RydWN0IHJ0ZV9pcHNlY19zYSAqc2EsIHJ0ZV9iZTY0X3Qgc3FjLA0KPiA+Pg0KPiA+PiAg IAkvKiBudW1iZXIgb2YgYnl0ZXMgdG8gZW5jcnlwdCAqLw0KPiA+PiAgIAljbGVuID0gcGxlbiAr IHNpemVvZigqZXNwdCk7DQo+ID4+IC0JY2xlbiA9IFJURV9BTElHTl9DRUlMKGNsZW4sIHNhLT5w YWRfYWxpZ24pOw0KPiA+PiArDQo+ID4+ICsJLyogV2UgZG9uJ3QgbmVlZCB0byBwYWQvYWlsZ24g cGFja2V0IHdoZW4gdXNpbmcgVFNPIG9mZmxvYWQgKi8NCj4gPj4gKwlpZiAobGlrZWx5KCEobWIt Pm9sX2ZsYWdzICYgKFBLVF9UWF9UQ1BfU0VHIHwgUEtUX1RYX1VEUF9TRUcpKSkpDQo+ID4+ICsJ CWNsZW4gPSBSVEVfQUxJR05fQ0VJTChjbGVuLCBzYS0+cGFkX2FsaWduKTsNCj4gPj4gKw0KPiA+ IEhlcmUgYW5kIGV2ZXJ5d2hlcmU6DQo+ID4gSXQgZG9lc24ndCBsb29rIG5pY2UgdGhhdCB3ZSBo YXZlIHRvIHBvbGx1dGUgZ2VuZXJpYyBmdW5jdGlvbnMgd2l0aA0KPiA+IGNoZWNraW5nIFRTTyBz cGVjaWZpYyBmbGFncyBhbGwgb3ZlciB0aGUgcGxhY2UuDQo+ID4gQ2FuIHdlIHByb2JhYmx5IGhh dmUgYSBzcGVjaWZpYyBwcmVwYXJlL3Byb2Nlc3MgZnVuY3Rpb24gZm9yIGlubGluZSt0c28gY2Fz ZT8NCj4gPiBBcyB3ZSBkbyBoYXZlIGZvciBjcHUgYW5kIGlubGluZSBjYXNlcyByaWdodCBub3cu DQo+ID4gT3IganVzdCB1cGRhdGUgaW5saW5lIHZlcnNpb24/DQo+IEkgbG9va2VkIGF0IGRvaW5n IHRoaXMgYnV0IHVubGVzcyBJIGNvcHkgdGhlc2UgMiBmdW5jdGlvbnMgSSBjYW4ndCBtb3ZlDQo+ IHRoaXMgb3V0Lg0KPiA+DQo+ID4+ICAgCS8qIHBhZCBsZW5ndGggKyBlc3AgdGFpbCAqLw0KPiA+ PiAgIAlwZGxlbiA9IGNsZW4gLSBwbGVuOw0KPiA+PiAtCXRsZW4gPSBwZGxlbiArIHNhLT5pY3Zf bGVuICsgc3FoX2xlbjsNCj4gPj4gKw0KPiA+PiArCS8qIFdlIGRvbid0IGFwcGVuZCBJQ1YgbGVu Z3RoIHdoZW4gdXNpbmcgVFNPIG9mZmxvYWQgKi8NCj4gPj4gKwlpZiAobGlrZWx5KCEobWItPm9s X2ZsYWdzICYgKFBLVF9UWF9UQ1BfU0VHIHwgUEtUX1RYX1VEUF9TRUcpKSkpDQo+ID4+ICsJCXRs ZW4gPSBwZGxlbiArIHNhLT5pY3ZfbGVuICsgc3FoX2xlbjsNCj4gPj4gKwllbHNlDQo+ID4+ICsJ CXRsZW4gPSBwZGxlbiArIHNxaF9sZW47DQo+ID4+DQo+ID4+ICAgCS8qIGRvIGFwcGVuZCBhbmQg cHJlcGVuZCAqLw0KPiA+PiAgIAltbCA9IHJ0ZV9wa3RtYnVmX2xhc3RzZWcobWIpOw0KPiA+PiBA QCAtMzM3LDYgKzM0OCw3IEBAIG91dGJfdHJzX3BrdF9wcmVwYXJlKHN0cnVjdCBydGVfaXBzZWNf c2EgKnNhLCBydGVfYmU2NF90IHNxYywNCj4gPj4gICAJY2hhciAqcGgsICpwdDsNCj4gPj4gICAJ dWludDY0X3QgKml2Ow0KPiA+PiAgIAl1aW50MzJfdCBsMmxlbiwgbDNsZW47DQo+ID4+ICsJdWlu dDhfdCB0c28gPSBtYi0+b2xfZmxhZ3MgJiAoUEtUX1RYX1RDUF9TRUcgfCBQS1RfVFhfVURQX1NF RykgPyAxIDogMDsNCj4gPj4NCj4gPj4gICAJbDJsZW4gPSBtYi0+bDJfbGVuOw0KPiA+PiAgIAls M2xlbiA9IG1iLT5sM19sZW47DQo+ID4+IEBAIC0zNDksMTEgKzM2MSwxOSBAQCBvdXRiX3Ryc19w a3RfcHJlcGFyZShzdHJ1Y3QgcnRlX2lwc2VjX3NhICpzYSwgcnRlX2JlNjRfdCBzcWMsDQo+ID4+ DQo+ID4+ICAgCS8qIG51bWJlciBvZiBieXRlcyB0byBlbmNyeXB0ICovDQo+ID4+ICAgCWNsZW4g PSBwbGVuICsgc2l6ZW9mKCplc3B0KTsNCj4gPj4gLQljbGVuID0gUlRFX0FMSUdOX0NFSUwoY2xl biwgc2EtPnBhZF9hbGlnbik7DQo+ID4+ICsNCj4gPj4gKwkvKiBXZSBkb24ndCBuZWVkIHRvIHBh ZC9haWxnbiBwYWNrZXQgd2hlbiB1c2luZyBUU08gb2ZmbG9hZCAqLw0KPiA+PiArCWlmIChsaWtl bHkoIXRzbykpDQo+ID4+ICsJCWNsZW4gPSBSVEVfQUxJR05fQ0VJTChjbGVuLCBzYS0+cGFkX2Fs aWduKTsNCj4gPj4NCj4gPj4gICAJLyogcGFkIGxlbmd0aCArIGVzcCB0YWlsICovDQo+ID4+ICAg CXBkbGVuID0gY2xlbiAtIHBsZW47DQo+ID4+IC0JdGxlbiA9IHBkbGVuICsgc2EtPmljdl9sZW4g KyBzcWhfbGVuOw0KPiA+PiArDQo+ID4+ICsJLyogV2UgZG9uJ3QgYXBwZW5kIElDViBsZW5ndGgg d2hlbiB1c2luZyBUU08gb2ZmbG9hZCAqLw0KPiA+PiArCWlmIChsaWtlbHkoIXRzbykpDQo+ID4+ ICsJCXRsZW4gPSBwZGxlbiArIHNhLT5pY3ZfbGVuICsgc3FoX2xlbjsNCj4gPj4gKwllbHNlDQo+ ID4+ICsJCXRsZW4gPSBwZGxlbiArIHNxaF9sZW47DQo+ID4+DQo+ID4+ICAgCS8qIGRvIGFwcGVu ZCBhbmQgaW5zZXJ0ICovDQo+ID4+ICAgCW1sID0gcnRlX3BrdG1idWZfbGFzdHNlZyhtYik7DQo+ ID4+IEBAIC0zNzUsOCArMzk1LDggQEAgb3V0Yl90cnNfcGt0X3ByZXBhcmUoc3RydWN0IHJ0ZV9p cHNlY19zYSAqc2EsIHJ0ZV9iZTY0X3Qgc3FjLA0KPiA+PiAgIAlpbnNlcnRfZXNwaChwaCwgcGgg KyBobGVuLCB1aGxlbik7DQo+ID4+DQo+ID4+ICAgCS8qIHVwZGF0ZSBpcCAgaGVhZGVyIGZpZWxk cyAqLw0KPiA+PiAtCW5wID0gdXBkYXRlX3Ryc19sM2hkcihzYSwgcGggKyBsMmxlbiwgbWItPnBr dF9sZW4gLSBzcWhfbGVuLCBsMmxlbiwNCj4gPj4gLQkJCWwzbGVuLCBJUFBST1RPX0VTUCk7DQo+ ID4+ICsJbnAgPSB1cGRhdGVfdHJzX2wzNGhkcnMoc2EsIHBoICsgbDJsZW4sIG1iLT5wa3RfbGVu IC0gc3FoX2xlbiwgbDJsZW4sDQo+ID4+ICsJCQlsM2xlbiwgSVBQUk9UT19FU1AsIHRzbyk7DQo+ ID4+DQo+ID4+ICAgCS8qIHVwZGF0ZSBzcGksIHNlcW4gYW5kIGl2ICovDQo+ID4+ICAgCWVzcGgg PSAoc3RydWN0IHJ0ZV9lc3BfaGRyICopKHBoICsgdWhsZW4pOw0KPiA+PiBAQCAtNjUxLDYgKzY3 MSwzMyBAQCBpbmxpbmVfb3V0Yl9tYnVmX3ByZXBhcmUoY29uc3Qgc3RydWN0IHJ0ZV9pcHNlY19z ZXNzaW9uICpzcywNCj4gPj4gICAJfQ0KPiA+PiAgIH0NCj4gPj4NCj4gPj4gKy8qIGNoZWNrIGlm IHBhY2tldCB3aWxsIGV4Y2VlZCBNU1MgYW5kIHNlZ21lbnRhdGlvbiBpcyByZXF1aXJlZCAqLw0K PiA+PiArc3RhdGljIGlubGluZSBpbnQNCj4gPj4gK2Vzbl9vdXRiX25iX3NlZ21lbnRzKGNvbnN0 IHN0cnVjdCBydGVfaXBzZWNfc2EgKnNhLCBzdHJ1Y3QgcnRlX21idWYgKm0pIHsNCj4gPj4gKwl1 aW50MTZfdCBzZWdtZW50cyA9IDE7DQo+ID4+ICsJdWludDE2X3QgcGt0X2wzbGVuID0gbS0+cGt0 X2xlbiAtIG0tPmwyX2xlbjsNCj4gPj4gKw0KPiA+PiArCS8qIE9ubHkgc3VwcG9ydCBzZWdtZW50 YXRpb24gZm9yIFVEUC9UQ1AgZmxvd3MgKi8NCj4gPj4gKwlpZiAoIShtLT5wYWNrZXRfdHlwZSAm IChSVEVfUFRZUEVfTDRfVURQIHwgUlRFX1BUWVBFX0w0X1RDUCkpKQ0KPiA+PiArCQlyZXR1cm4g c2VnbWVudHM7DQo+ID4+ICsNCj4gPj4gKwlpZiAoc2EtPnRzby5lbmFibGVkICYmIHBrdF9sM2xl biA+IHNhLT50c28ubXNzKSB7DQo+ID4+ICsJCXNlZ21lbnRzID0gY2VpbCgoZmxvYXQpcGt0X2wz bGVuIC8gc2EtPnRzby5tc3MpOw0KPiA+IEZsb2F0IGNhbGN1bGF0aW9ucyBpbiB0aGUgbWlkZGxl IG9mIGRhdGEtcGF0aD8NCj4gPiBKdXN0IHRvIGNhbGN1bGF0ZSByb3VuZHVwPw0KPiA+IERvZXNu J3QgbG9vayBnb29kIHRvIG1lIGF0IGFsbC4NCj4gSXQgZG9lc24ndCBsb29rIGdvb2QgdG8gbWUg ZWl0aGVyIC0gSSB3aWxsIHJld29yayBpdC4NCj4gPg0KPiA+PiArDQo+ID4+ICsJCWlmICAobS0+ cGFja2V0X3R5cGUgJiBSVEVfUFRZUEVfTDRfVENQKSB7DQo+ID4+ICsJCQltLT5vbF9mbGFncyB8 PSAoUEtUX1RYX1RDUF9TRUcgfCBQS1RfVFhfVENQX0NLU1VNKTsNCj4gPiBUaGF0J3MgcmVhbGx5 IHN0cmFuZ2UgLSB3aHkgaXBzZWMgbGlicmFyeSB3aWxsIHNldCBQS1RfVFhfVENQX1NFRyB1bmNv bmRpdGlvbmFsbHk/DQo+ID4gVGhhdCBzaG91bGQgYmUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIHVw cGVyIGxheWVyLCBJIHRoaW5rLg0KPiA+IEluIHRoZSBsaWIgd2Ugc2hvdWxkIG9ubHkgY2hlY2sg d2FzIHRzbyByZXF1ZXN0ZWQgZm9yIHRoYXQgcGFja2V0IG9yIG5vdC4NCj4gPiBTYW1lIGZvciBV RFAuDQo+IFRoZXNlIGFyZSB1bmRlciBhbiBpZihUU08pIGNvbmRpdGlvbi4NCj4gPg0KPiA+PiAr CQkJbS0+bDRfbGVuID0gc2l6ZW9mKHN0cnVjdCBydGVfdGNwX2hkcik7DQo+ID4gSG1tLCBob3cg ZG8gd2Uga25vdyB0aGVyZSBhcmUgbm8gVENQIG9wdGlvbnMgcHJlc2VudCBmb3IgdGhhdCBwYWNr ZXQ/DQo+ID4gV291bGRuJ3QgaXQgYmUgYmV0dGVyIHRvIGV4cGVjdCB1c2VyIHRvIHByb3ZpZGUg cHJvcGVyIGw0X2xlbiBmb3Igc3VjaCBwYWNrZXRzPw0KPiBZb3UncmUgcmlnaHQsIEkgd2lsbCB1 cGRhdGUgaXQuDQo+IA0KPiA+DQo+ID4+ICsJCX0gZWxzZSB7DQo+ID4+ICsJCQltLT5vbF9mbGFn cyB8PSAoUEtUX1RYX1VEUF9TRUcgfCBQS1RfVFhfVURQX0NLU1VNKTsNCj4gPj4gKwkJCW0tPmw0 X2xlbiA9IHNpemVvZihzdHJ1Y3QgcnRlX3VkcF9oZHIpOw0KPiA+PiArCQl9DQo+ID4+ICsNCj4g Pj4gKwkJbS0+dHNvX3NlZ3N6ID0gc2EtPnRzby5tc3M7DQo+ID4+ICsJfQ0KPiA+PiArDQo+ID4+ ICsJcmV0dXJuIHNlZ21lbnRzOw0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICAgLyoNCj4gPj4gICAg KiBwcm9jZXNzIGdyb3VwIG9mIEVTUCBvdXRib3VuZCB0dW5uZWwgcGFja2V0cyBkZXN0aW5lZCBm b3INCj4gPj4gICAgKiBJTkxJTkVfQ1JZUFRPIHR5cGUgb2YgZGV2aWNlLg0KPiA+PiBAQCAtNjYw LDI0ICs3MDcsMjkgQEAgaW5saW5lX291dGJfdHVuX3BrdF9wcm9jZXNzKGNvbnN0IHN0cnVjdCBy dGVfaXBzZWNfc2Vzc2lvbiAqc3MsDQo+ID4+ICAgCXN0cnVjdCBydGVfbWJ1ZiAqbWJbXSwgdWlu dDE2X3QgbnVtKQ0KPiA+PiAgIHsNCj4gPj4gICAJaW50MzJfdCByYzsNCj4gPj4gLQl1aW50MzJf dCBpLCBrLCBuOw0KPiA+PiArCXVpbnQzMl90IGksIGssIG5iX3NxbiA9IDAsIG5iX3Nxbl9hbGxv YzsNCj4gPj4gICAJdWludDY0X3Qgc3FuOw0KPiA+PiAgIAlydGVfYmU2NF90IHNxYzsNCj4gPj4g ICAJc3RydWN0IHJ0ZV9pcHNlY19zYSAqc2E7DQo+ID4+ICAgCXVuaW9uIHN5bV9vcF9kYXRhIGlj djsNCj4gPj4gICAJdWludDY0X3QgaXZbSVBTRUNfTUFYX0lWX1FXT1JEXTsNCj4gPj4gICAJdWlu dDMyX3QgZHJbbnVtXTsNCj4gPj4gKwl1aW50MTZfdCBuYl9zZWdzW251bV07DQo+ID4+DQo+ID4+ ICAgCXNhID0gc3MtPnNhOw0KPiA+Pg0KPiA+PiAtCW4gPSBudW07DQo+ID4+IC0Jc3FuID0gZXNu X291dGJfdXBkYXRlX3NxbihzYSwgJm4pOw0KPiA+PiAtCWlmIChuICE9IG51bSkNCj4gPj4gKwlm b3IgKGkgPSAwOyBpICE9IG51bTsgaSsrKSB7DQo+ID4+ICsJCW5iX3NlZ3NbaV0gPSBlc25fb3V0 Yl9uYl9zZWdtZW50cyhzYSwgbWJbaV0pOw0KPiA+PiArCQluYl9zcW4gKz0gbmJfc2Vnc1tpXTsN Cj4gPj4gKwl9DQo+ID4+ICsNCj4gPj4gKwluYl9zcW5fYWxsb2MgPSBuYl9zcW47DQo+ID4+ICsJ c3FuID0gZXNuX291dGJfdXBkYXRlX3NxbihzYSwgJm5iX3Nxbl9hbGxvYyk7DQo+ID4+ICsJaWYg KG5iX3Nxbl9hbGxvYyAhPSBuYl9zcW4pDQo+ID4+ICAgCQlydGVfZXJybm8gPSBFT1ZFUkZMT1c7 DQo+ID4+DQo+ID4+ICAgCWsgPSAwOw0KPiA+PiAtCWZvciAoaSA9IDA7IGkgIT0gbjsgaSsrKSB7 DQo+ID4+IC0NCj4gPj4gKwlmb3IgKGkgPSAwOyBpICE9IG51bTsgaSsrKSB7DQo+ID4+ICAgCQlz cWMgPSBydGVfY3B1X3RvX2JlXzY0KHNxbiArIGkpOw0KPiA+PiAgIAkJZ2VuX2l2KGl2LCBzcWMp Ow0KPiA+Pg0KPiA+PiBAQCAtNjkxLDExICs3NDMsMTggQEAgaW5saW5lX291dGJfdHVuX3BrdF9w cm9jZXNzKGNvbnN0IHN0cnVjdCBydGVfaXBzZWNfc2Vzc2lvbiAqc3MsDQo+ID4+ICAgCQkJZHJb aSAtIGtdID0gaTsNCj4gPj4gICAJCQlydGVfZXJybm8gPSAtcmM7DQo+ID4+ICAgCQl9DQo+ID4+ ICsNCj4gPj4gKwkJLyoqDQo+ID4+ICsJCSAqIElmIHBhY2tldCBpcyB1c2luZyB0c28sIGluY3Jl bWVudCBzcW4gYnkgdGhlIG51bWJlciBvZg0KPiA+PiArCQkgKiBzZWdtZW50cyBmb3IJcGFja2V0 DQo+ID4+ICsJCSAqLw0KPiA+PiArCQlpZiAgKG1iW2ldLT5vbF9mbGFncyAmIChQS1RfVFhfVENQ X1NFRyB8IFBLVF9UWF9VRFBfU0VHKSkNCj4gPj4gKwkJCXNxbiArPSBuYl9zZWdzW2ldIC0gMTsN Cj4gPj4gICAJfQ0KPiA+Pg0KPiA+PiAgIAkvKiBjb3B5IG5vdCBwcm9jZXNzZWQgbWJ1ZnMgYmV5 b25kIGdvb2Qgb25lcyAqLw0KPiA+PiAtCWlmIChrICE9IG4gJiYgayAhPSAwKQ0KPiA+PiAtCQlt b3ZlX2JhZF9tYnVmcyhtYiwgZHIsIG4sIG4gLSBrKTsNCj4gPj4gKwlpZiAoayAhPSBudW0gJiYg ayAhPSAwKQ0KPiA+PiArCQltb3ZlX2JhZF9tYnVmcyhtYiwgZHIsIG51bSwgbnVtIC0gayk7DQo+ ID4+DQo+ID4+ICAgCWlubGluZV9vdXRiX21idWZfcHJlcGFyZShzcywgbWIsIGspOw0KPiA+PiAg IAlyZXR1cm4gazsNCj4gPj4gQEAgLTcxMCwyMyArNzY5LDMwIEBAIGlubGluZV9vdXRiX3Ryc19w a3RfcHJvY2Vzcyhjb25zdCBzdHJ1Y3QgcnRlX2lwc2VjX3Nlc3Npb24gKnNzLA0KPiA+PiAgIAlz dHJ1Y3QgcnRlX21idWYgKm1iW10sIHVpbnQxNl90IG51bSkNCj4gPj4gICB7DQo+ID4+ICAgCWlu dDMyX3QgcmM7DQo+ID4+IC0JdWludDMyX3QgaSwgaywgbjsNCj4gPj4gKwl1aW50MzJfdCBpLCBr LCBuYl9zcW4sIG5iX3Nxbl9hbGxvYzsNCj4gPj4gICAJdWludDY0X3Qgc3FuOw0KPiA+PiAgIAly dGVfYmU2NF90IHNxYzsNCj4gPj4gICAJc3RydWN0IHJ0ZV9pcHNlY19zYSAqc2E7DQo+ID4+ICAg CXVuaW9uIHN5bV9vcF9kYXRhIGljdjsNCj4gPj4gICAJdWludDY0X3QgaXZbSVBTRUNfTUFYX0lW X1FXT1JEXTsNCj4gPj4gICAJdWludDMyX3QgZHJbbnVtXTsNCj4gPj4gKwl1aW50MTZfdCBuYl9z ZWdzW251bV07DQo+ID4+DQo+ID4+ICAgCXNhID0gc3MtPnNhOw0KPiA+Pg0KPiA+PiAtCW4gPSBu dW07DQo+ID4+IC0Jc3FuID0gZXNuX291dGJfdXBkYXRlX3NxbihzYSwgJm4pOw0KPiA+PiAtCWlm IChuICE9IG51bSkNCj4gPj4gKwkvKiBDYWxjdWxhdGUgbnVtYmVyIG9mIHNlcXVlbmNlIG51bWJl cnMgcmVxdWlyZWQgKi8NCj4gPj4gKwlmb3IgKGkgPSAwLCBuYl9zcW4gPSAwOyBpICE9IG51bTsg aSsrKSB7DQo+ID4+ICsJCW5iX3NlZ3NbaV0gPSBlc25fb3V0Yl9uYl9zZWdtZW50cyhzYSwgbWJb aV0pOw0KPiA+PiArCQluYl9zcW4gKz0gbmJfc2Vnc1tpXTsNCj4gPj4gKwl9DQo+ID4+ICsNCj4g Pj4gKwluYl9zcW5fYWxsb2MgPSBuYl9zcW47DQo+ID4+ICsJc3FuID0gZXNuX291dGJfdXBkYXRl X3NxbihzYSwgJm5iX3Nxbl9hbGxvYyk7DQo+ID4+ICsJaWYgKG5iX3Nxbl9hbGxvYyAhPSBuYl9z cW4pDQo+ID4+ICAgCQlydGVfZXJybm8gPSBFT1ZFUkZMT1c7DQo+ID4+DQo+ID4+ICAgCWsgPSAw Ow0KPiA+PiAtCWZvciAoaSA9IDA7IGkgIT0gbjsgaSsrKSB7DQo+ID4+ICsJZm9yIChpID0gMDsg aSAhPSBudW07IGkrKykgew0KPiA+Pg0KPiA+PiAgIAkJc3FjID0gcnRlX2NwdV90b19iZV82NChz cW4gKyBpKTsNCj4gPj4gICAJCWdlbl9pdihpdiwgc3FjKTsNCj4gPj4gQEAgLTc0MSwxMSArODA3 LDE4IEBAIGlubGluZV9vdXRiX3Ryc19wa3RfcHJvY2Vzcyhjb25zdCBzdHJ1Y3QgcnRlX2lwc2Vj X3Nlc3Npb24gKnNzLA0KPiA+PiAgIAkJCWRyW2kgLSBrXSA9IGk7DQo+ID4+ICAgCQkJcnRlX2Vy cm5vID0gLXJjOw0KPiA+PiAgIAkJfQ0KPiA+PiArDQo+ID4+ICsJCS8qKg0KPiA+PiArCQkgKiBJ ZiBwYWNrZXQgaXMgdXNpbmcgdHNvLCBpbmNyZW1lbnQgc3FuIGJ5IHRoZSBudW1iZXIgb2YNCj4g Pj4gKwkJICogc2VnbWVudHMgZm9yCXBhY2tldA0KPiA+PiArCQkgKi8NCj4gPj4gKwkJaWYgICht YltpXS0+b2xfZmxhZ3MgJiAoUEtUX1RYX1RDUF9TRUcgfCBQS1RfVFhfVURQX1NFRykpDQo+ID4+ ICsJCQlzcW4gKz0gbmJfc2Vnc1tpXSAtIDE7DQo+ID4+ICAgCX0NCj4gPj4NCj4gPj4gICAJLyog Y29weSBub3QgcHJvY2Vzc2VkIG1idWZzIGJleW9uZCBnb29kIG9uZXMgKi8NCj4gPj4gLQlpZiAo ayAhPSBuICYmIGsgIT0gMCkNCj4gPj4gLQkJbW92ZV9iYWRfbWJ1ZnMobWIsIGRyLCBuLCBuIC0g ayk7DQo+ID4+ICsJaWYgKGsgIT0gbnVtICYmIGsgIT0gMCkNCj4gPj4gKwkJbW92ZV9iYWRfbWJ1 ZnMobWIsIGRyLCBudW0sIG51bSAtIGspOw0KPiA+Pg0KPiA+PiAgIAlpbmxpbmVfb3V0Yl9tYnVm X3ByZXBhcmUoc3MsIG1iLCBrKTsNCj4gPj4gICAJcmV0dXJuIGs7DQo+ID4+IGRpZmYgLS1naXQg YS9saWIvaXBzZWMvaXBoLmggYi9saWIvaXBzZWMvaXBoLmgNCj4gPj4gaW5kZXggODYxZjE2OTA1 YS4uMmQyMjMxOTlhYyAxMDA2NDQNCj4gPj4gLS0tIGEvbGliL2lwc2VjL2lwaC5oDQo+ID4+ICsr KyBiL2xpYi9pcHNlYy9pcGguaA0KPiA+PiBAQCAtNiw2ICs2LDggQEANCj4gPj4gICAjZGVmaW5l IF9JUEhfSF8NCj4gPj4NCj4gPj4gICAjaW5jbHVkZSA8cnRlX2lwLmg+DQo+ID4+ICsjaW5jbHVk ZSA8cnRlX3VkcC5oPg0KPiA+PiArI2luY2x1ZGUgPHJ0ZV90Y3AuaD4NCj4gPj4NCj4gPj4gICAv KioNCj4gPj4gICAgKiBAZmlsZSBpcGguaA0KPiA+PiBAQCAtMzksOCArNDEsOCBAQCBpbnNlcnRf ZXNwaChjaGFyICpucCwgY2hhciAqb3AsIHVpbnQzMl90IGhsZW4pDQo+ID4+DQo+ID4+ICAgLyog dXBkYXRlIG9yaWdpbmFsIGlwIGhlYWRlciBmaWVsZHMgZm9yIHRyYW5zcG9ydCBjYXNlICovDQo+ ID4+ICAgc3RhdGljIGlubGluZSBpbnQNCj4gPj4gLXVwZGF0ZV90cnNfbDNoZHIoY29uc3Qgc3Ry dWN0IHJ0ZV9pcHNlY19zYSAqc2EsIHZvaWQgKnAsIHVpbnQzMl90IHBsZW4sDQo+ID4+IC0JCXVp bnQzMl90IGwybGVuLCB1aW50MzJfdCBsM2xlbiwgdWludDhfdCBwcm90bykNCj4gPj4gK3VwZGF0 ZV90cnNfbDM0aGRycyhjb25zdCBzdHJ1Y3QgcnRlX2lwc2VjX3NhICpzYSwgdm9pZCAqcCwgdWlu dDMyX3QgcGxlbiwNCj4gPj4gKwkJdWludDMyX3QgbDJsZW4sIHVpbnQzMl90IGwzbGVuLCB1aW50 OF90IHByb3RvLCB1aW50OF90IHRzbykNCj4gPiBIbW0uLi4gd2h5IHRvIGNoYW5nZSBuYW1lIG9m IHRoZSBmdW5jdGlvbj8NCj4gPg0KPiA+PiAgIHsNCj4gPj4gICAJaW50MzJfdCByYzsNCj4gPj4N Cj4gPj4gQEAgLTUxLDYgKzUzLDEwIEBAIHVwZGF0ZV90cnNfbDNoZHIoY29uc3Qgc3RydWN0IHJ0 ZV9pcHNlY19zYSAqc2EsIHZvaWQgKnAsIHVpbnQzMl90IHBsZW4sDQo+ID4+ICAgCQl2NGggPSBw Ow0KPiA+PiAgIAkJcmMgPSB2NGgtPm5leHRfcHJvdG9faWQ7DQo+ID4+ICAgCQl2NGgtPm5leHRf cHJvdG9faWQgPSBwcm90bzsNCj4gPj4gKwkJaWYgKHRzbykgew0KPiA+PiArCQkJdjRoLT5oZHJf Y2hlY2tzdW0gPSAwOw0KPiA+PiArCQkJdjRoLT50b3RhbF9sZW5ndGggPSAwOw0KPiA+IHRvdGFs X2xlbiB3aWxsIGJlIG92ZXJ3cml0dGVuIHVuY29uZGl0aW9uYWxseSBhdCBuZXh0IGxpbmUgYmVs b3cuDQo+ID4NCj4gPiBBbm90aGVyIHF1ZXN0aW9uIC0gd2h5IGl0IGlzIG5lY2Vzc2FyeT8NCj4g PiBJcyBpdCBIVyBzcGVjaWZpYyByZXF1aXJtZW50IG9yIC4uLiA/DQo+IEl0IGxvb2tzIHdyb25n IEkgd2lsbCByZXdyaXRlIHRoaXMuDQo+ID4NCj4gPg0KPiA+PiArCQl9DQo+ID4+ICAgCQl2NGgt PnRvdGFsX2xlbmd0aCA9IHJ0ZV9jcHVfdG9fYmVfMTYocGxlbiAtIGwybGVuKTsNCj4gPg0KPiA+ PiAgIAkvKiBJUHY2ICovDQo+ID4+ICAgCX0gZWxzZSB7DQo+ID4+IGRpZmYgLS1naXQgYS9saWIv aXBzZWMvc2EuYyBiL2xpYi9pcHNlYy9zYS5jDQo+ID4+IGluZGV4IDcyMGUwZjM2NWIuLjJlY2Ji Y2UwYTQgMTAwNjQ0DQo+ID4+IC0tLSBhL2xpYi9pcHNlYy9zYS5jDQo+ID4+ICsrKyBiL2xpYi9p cHNlYy9zYS5jDQo+ID4+IEBAIC01NjUsNiArNTY1LDEyIEBAIHJ0ZV9pcHNlY19zYV9pbml0KHN0 cnVjdCBydGVfaXBzZWNfc2EgKnNhLCBjb25zdCBzdHJ1Y3QgcnRlX2lwc2VjX3NhX3BybSAqcHJt LA0KPiA+PiAgIAlzYS0+dHlwZSA9IHR5cGU7DQo+ID4+ICAgCXNhLT5zaXplID0gc3o7DQo+ID4+ DQo+ID4+ICsNCj4gPj4gKwlpZiAocHJtLT5pcHNlY194Zm9ybS5vcHRpb25zLnRzbyA9PSAxKSB7 DQo+ID4+ICsJCXNhLT50c28uZW5hYmxlZCA9IDE7DQo+ID4+ICsJCXNhLT50c28ubXNzID0gcHJt LT5pcHNlY194Zm9ybS5tc3M7DQo+ID4+ICsJfQ0KPiA+PiArDQo+ID4+ICAgCS8qIGNoZWNrIGZv ciBFU04gZmxhZyAqLw0KPiA+PiAgIAlzYS0+c3FuX21hc2sgPSAocHJtLT5pcHNlY194Zm9ybS5v cHRpb25zLmVzbiA9PSAwKSA/DQo+ID4+ICAgCQlVSU5UMzJfTUFYIDogVUlOVDY0X01BWDsNCj4g Pj4gZGlmZiAtLWdpdCBhL2xpYi9pcHNlYy9zYS5oIGIvbGliL2lwc2VjL3NhLmgNCj4gPj4gaW5k ZXggMTA3ZWJkMTUxOS4uNWUyMzdmMzUyNSAxMDA2NDQNCj4gPj4gLS0tIGEvbGliL2lwc2VjL3Nh LmgNCj4gPj4gKysrIGIvbGliL2lwc2VjL3NhLmgNCj4gPj4gQEAgLTExMyw2ICsxMTMsMTAgQEAg c3RydWN0IHJ0ZV9pcHNlY19zYSB7DQo+ID4+ICAgCXVpbnQ4X3QgaXZfbGVuOw0KPiA+PiAgIAl1 aW50OF90IHBhZF9hbGlnbjsNCj4gPj4gICAJdWludDhfdCB0b3NfbWFzazsNCj4gPj4gKwlzdHJ1 Y3Qgew0KPiA+PiArCQl1aW50OF90IGVuYWJsZWQ6MTsNCj4gPj4gKwkJdWludDE2X3QgbXNzOw0K PiA+PiArCX0gdHNvOw0KPiA+IFdvdWxkbid0IG9uZSBmaWVsZCBiZSBlbm91Z2g/DQo+ID4gdWlu dDE2X3QgdHNvX21zczsNCj4gPiBBbmQgaXQgaXQgaXMgemVybywgdGhlbiB0c28gaXMgZGlzYWJs ZWQuDQo+ID4gSW4gZmFjdCwgZG8gd2UgbmVlZCBpdCBhdCBhbGw/DQo+ID4gV291bGRuJ3QgaXQg YmUgYmV0dGVyIHRvIHJlcXVlc3QgdXNlciB0byBmaWxsIG1idWYtPnRzb19zZWdzeiBwcm9wZXJs eSBmb3IgdXM/DQo+IA0KPiBXZSBhZGRlZCBhbiBvcHRpb24gdG8gcnRlX3NlY3VyaXR5X2lwc2Vj X3NhX29wdGlvbnMgdG8gYWxsb3cgdGhlIHVzZXIgdG8NCj4gZW5hYmxlIFRTTyBwZXIgU0EgYW5k IHNwZWNpZnkgdGhlIE1TUyBpbiB0aGUgc2Vzc2lvbnMgcGFyYW1ldGVycy4NCg0KQWZ0ZXIgYW5v dGhlciB0aG91Z2h0LCBpdCBkb2VzbuKAmXQgbG9vayBsaWtlIGEgZ29vZCBhcHByb2FjaCB0byBt ZToNCmZyb20gb25lIHNpZGUgc2FtZSBTQSBjYW4gYmUgdXNlZCBmb3IgbXVsdGlwbGUgSVAgYWRk cmVzc2VzLA0KZnJvbSBvdGhlciBzaWRlIC0gTVNTIHZhbHVlIGNhbiBkaWZmZXIgb24gYSBwZXIg Y29ubmVjdGlvbiBiYXNpcy4NClNvIGRpZmZlcmVudCBUQ1AgY29ubmVjdGlvbnMgd2l0aGluIHNh bWUgU0EgY2FuIGVhc2lseSBoYXZlIGRpZmZlcmVudCBNU1MgdmFsdWVzLiANClNvIEkgdGhpbmsg d2Ugc2hvdWxkbid0IHNhdmUgbXNzIGluIFNBIGF0IGFsbC4NCkluc3RlYWQsIHdlIHByb2JhYmx5 IG5lZWQgdG8gcmVxdWVzdCB1c2VyIHRvIGZpbGwgbWJ1Zi0+dHNvX3NlZ3N6IGZvciB1cy4NCg0K PiANCj4gV2UgY2FuIHJlcXVlc3QgdXNlciB0byBmaWxsIG1idWYtPnRzb19zZWdzeiwgYnV0IHdp dGggdGhpcyBwYXRjaCB3ZSBhcmUNCj4gZG9pbmcgaXQgZm9yIHRoZSB1c2VyLg0KPiANCj4gPg0K PiA+PiAgIAkvKiB0ZW1wbGF0ZSBmb3IgdHVubmVsIGhlYWRlciAqLw0KPiA+PiAgIAl1aW50OF90 IGhkcltJUFNFQ19NQVhfSERSX1NJWkVdOw0KPiA+PiAtLQ0KPiA+PiAyLjI1LjENCg==