From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <dev-bounces@dpdk.org>
Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124])
	by inbox.dpdk.org (Postfix) with ESMTP id F0CE5A0544;
	Wed, 29 Jun 2022 16:55:12 +0200 (CEST)
Received: from [217.70.189.124] (localhost [127.0.0.1])
	by mails.dpdk.org (Postfix) with ESMTP id 9091F400D7;
	Wed, 29 Jun 2022 16:55:12 +0200 (CEST)
Received: from EUR04-HE1-obe.outbound.protection.outlook.com
 (mail-eopbgr70045.outbound.protection.outlook.com [40.107.7.45])
 by mails.dpdk.org (Postfix) with ESMTP id A8D44400D5;
 Mon, 27 Jun 2022 09:56:58 +0200 (CEST)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=L1cCJ8HSnJ1mBCo3pPm2D+7d8jkVQuIjEHwJrhwJb8wnqYCLi0kxxgZSw9q+Ym24zGvpt7Qvf+wXNHB1sLY+JpbFWmbyE8ChQV3ncc34CgLcmLK6TB8YzteqjFhDQrB8oQp2td3MQ95fe0SydD8PeLOCBIAt+2svjkMgEbJ3oFP7/8UF+glD72EBi4JEboNWtQ+ka1o9XaetSG6Ge7so4Fe8DRC8bIc6ixGgM2a2cH6I71EYK4OVBat+kqddMqWjSrM8jJs4mrvHXqUdeMP6zTC2Toq4cdZwGyE3rUB/W+jzvSrkKgFiT53HfrAW57sx80trkoMU+bvTLcfD5qLa9g==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; 
 s=arcselector9901;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=FzKyaGyIxE8+29ymxMf2Lag4VkpAdqOHwr1A14tWXA0=;
 b=D3TE17Y7xSRYiGz/LbEUimWZz83lgC70uF7z57uX+FIiUcx73czK3lrVqww1xNcc4SYuqOUhgHS2yFHHGbxOzOsTprSxPyDO0tlId3RSqllrHLXdW+WQlCgPSVlgCKfGis+rNRkawxc/XEOewIhPd2OaxAw5f+q28a78KaD+4ZhJqJh47j/FxfyoQH0nju9X16GzCAiCJyh7+UCtpny6oeKTgylJ3CEWpi83kcGaHdfNgsugsjyiPFLkR3J72KxfDubdokDuuQnfOEPyrAblMraWxy8VDIUNRi6hKf3cLL3/VcQkBUi9YsAeKERLGMCDPSA1qaCvv5hlm0jcnFeAiQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=ericsson.com; dmarc=pass action=none header.from=ericsson.com;
 dkim=pass header.d=ericsson.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ericsson.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=FzKyaGyIxE8+29ymxMf2Lag4VkpAdqOHwr1A14tWXA0=;
 b=Rq/qEHALZ4o21b7in50sYxRQtgSk2B993XtkKyN0hjaBkLgSGcZUlT9s8KeHf2SnUnzln4S2pi5gK92IWAPN7L3+2PE+N5ovX+NpybCrPdzIbYOInY4zywmzAdlw4ezUCty634FX0xXKs6C4lw/Zm+8x2uPX0WqxfWKmbJdvstI=
Received: from AM8PR07MB7666.eurprd07.prod.outlook.com (2603:10a6:20b:240::23)
 by VI1PR0701MB2638.eurprd07.prod.outlook.com (2603:10a6:801:4::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5395.11; Mon, 27 Jun
 2022 07:56:56 +0000
Received: from AM8PR07MB7666.eurprd07.prod.outlook.com
 ([fe80::188:e139:774e:cea1]) by AM8PR07MB7666.eurprd07.prod.outlook.com
 ([fe80::188:e139:774e:cea1%9]) with mapi id 15.20.5395.011; Mon, 27 Jun 2022
 07:56:56 +0000
From: Emil Berg <emil.berg@ericsson.com>
To: =?utf-8?B?TW9ydGVuIEJyw7hydXA=?= <mb@smartsharesystems.com>,
 "bruce.richardson@intel.com" <bruce.richardson@intel.com>, "dev@dpdk.org"
 <dev@dpdk.org>
CC: "stephen@networkplumber.org" <stephen@networkplumber.org>,
 "stable@dpdk.org" <stable@dpdk.org>, "bugzilla@dpdk.org" <bugzilla@dpdk.org>, 
 "hofors@lysator.liu.se" <hofors@lysator.liu.se>, "olivier.matz@6wind.com"
 <olivier.matz@6wind.com>
Subject: RE: [PATCH v4] net: fix checksum with unaligned buffer
Thread-Topic: [PATCH v4] net: fix checksum with unaligned buffer
Thread-Index: AQHYhv48fmD0p9rOd0KzPCydzCSkQq1c8dgAgAX15KA=
Date: Mon, 27 Jun 2022 07:56:56 +0000
Message-ID: <AM8PR07MB7666B71943BABF8E31DB376898B99@AM8PR07MB7666.eurprd07.prod.outlook.com>
References: <98CBD80474FA8B44BF855DF32C47DC35D87139@smartserver.smartshare.dk>
 <20220623123900.38283-1-mb@smartsharesystems.com>
 <98CBD80474FA8B44BF855DF32C47DC35D87169@smartserver.smartshare.dk>
In-Reply-To: <98CBD80474FA8B44BF855DF32C47DC35D87169@smartserver.smartshare.dk>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=ericsson.com;
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 359ca86e-902d-4721-3681-08da58129b76
x-ms-traffictypediagnostic: VI1PR0701MB2638:EE_
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: yuMjauxEad42wwzvktmQPdq1L6GUnCL+DUGdvCdNMcuJW18LhngTVMFJOVElZ2/dNaOnXkAG1ze6/D6fberWTqLndYr8Yl0Kcm1irbEapWBDonRlPLK/mhNMJzWOroHJH9u/uMEXtGzMBr41mUBvSGcgjnEQywgYtcSJF7XA+qBH++k+6pXNQmCL1YR3QjEFfBVtzhhrgGP87ibod50eelPvviyrcgH5WZnhpJIvR/EdQ5HHUQpO2m6AJVppWHuWD+NehIB35oC6aEThhl1lvsbQyX+6IL+eSU6FpprtLvReYmYbpXUefSbCRqw0OdgIwoyQef4nN7iHh6KZGTQpr74U3FTDh6y0snaT10Dl/d5WWUJMWFgOPM1FGuCRBIb2CDYO02jGJDOtsckQfggdAKEhwJtZ1b9VvY4+6FiavZbL6JmanBer9L7G0bKexgQwq9pBPuUknbJsT2ki+Df7Y5maHYq18VEAd7WAR2p9vOfdFyI05EQIcxcyX0olDj/PR39ciuZYxMUqMKJonuyrT3NnVnb0Iyoc/ait9diVXsdIiUFWUq3eoBvOC9VgkcQYbdQ35nPBuO7jKRxDddpp8hJjbEjtEiEmlHlLgDQu7MVkFWcyBhLwTvpD4vhEI8FJTbTDo1UQ4+dZtYd8i5WF47ySEMMqj+uzU7cXupmswgCRMH+BxMJG3Yf34m25J2keSSek0Qk62yT2/qdujbRzVQ1ayBe2Ju48hFHvRS70mKOO86D0xgbCHnQybKJpKkpuBNYED8jxgPpcpU+VtvNxFolWGvrPXcsFPgLhZ5v/SoY=
x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;
 IPV:NLI; SFV:NSPM; H:AM8PR07MB7666.eurprd07.prod.outlook.com; PTR:; CAT:NONE;
 SFS:(13230016)(4636009)(346002)(39860400002)(376002)(396003)(366004)(136003)(6506007)(53546011)(71200400001)(478600001)(41300700001)(82960400001)(54906003)(83380400001)(26005)(9686003)(5660300002)(8936002)(7696005)(316002)(186003)(38070700005)(4326008)(110136005)(122000001)(86362001)(33656002)(66574015)(8676002)(66946007)(66446008)(64756008)(66556008)(52536014)(66476007)(44832011)(55016003)(38100700002)(2906002)(76116006);
 DIR:OUT; SFP:1101; 
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: =?utf-8?B?VWFGcU1UMWNCdzRhaVMrSUZvSDg3RHBQL2kvd0UydnVwRGhHMG9qbVJ3b1pF?=
 =?utf-8?B?VWplMVM5R2tuSzNqdXRPeHNkdlczVnl6bFZMMzhtSllYdnZNazdvcldQYUhV?=
 =?utf-8?B?T3BSU3R2eW5CdTFUeXcwWkc0blRQZjlWbEh1SWJQOGlicDE3UWJCc0QxU1hY?=
 =?utf-8?B?ZThLaDFKVUJUUGtUM2VyUk1ETG5pSURjTXhOV1c0MGpheXlkQWFWTC9lZmJk?=
 =?utf-8?B?alZQYzFjcmtaU1paMzdrQWRQbG5BUmlkYzcrWWthQUF5TE5CRlVSRVVEMG0w?=
 =?utf-8?B?WEN2blYzT2lrMnNwcWh4QjZMY0N5a2VrR1pYbDN0K1BIdFBQWkFiM1dmeGp2?=
 =?utf-8?B?Z0R6OHF6VHFSem56TUsrZVM4bzdmRitqYTZmZDVFTFprM2Rwc2JQSHVGQjRZ?=
 =?utf-8?B?WjRlS1NHUzAySEZmSXBmNENVdWJjdmtVc2JWUnFuLytscGFDRmpJUXh4U3pU?=
 =?utf-8?B?NmVzRmE4N1RUc2hlV3dCQ01xbWd6andkdFJqZXg0TkhvTThDTy9iZEtQYldm?=
 =?utf-8?B?aHl1dWdkMUtmQVE0dzQ1ZkgvWFkxNWxCRklNdVF5QnNhZXRFYURpajFCVnU4?=
 =?utf-8?B?RjJ2Qy9VYTlsOXJlcjVkVDd4UFNIejAvd2pSVUpmdklmdGpocGl0Z1AyY21R?=
 =?utf-8?B?T3h3eFlhcVFOcWltWHo3bVJUYXJjUldzVXY1aWxEWHFqVXM5MnJ5VG9tSHRO?=
 =?utf-8?B?bUZiUEJVbnl0V2c3TDJoZFlCQ1NZdG54R292Y3NIVDMzVkk0NmErR3Jjay9i?=
 =?utf-8?B?STJsdVhiKzJvY0ZVSURJZ3JnbURLZVI5UHFTcUNaTGFEdXVEbndjWWVaWWFj?=
 =?utf-8?B?WVcwZ2NudzYzRFhlU3krTXh5MTB5RHpHSVBpV0I1c2RiSDNhMFNZMFBIRjgr?=
 =?utf-8?B?QklXaXVaNnBsemEyTHVEaFR5S0swUHUxWnZGOEllTHh1a2RoZkptWlVVYm9L?=
 =?utf-8?B?SGhiWVl6bUU0V0JXWDVZUkZBYmtuczN6dzNpd2ZHN09jWGd1WTR5V1NzK3Z5?=
 =?utf-8?B?UHFKOFBSWUJvUFZMekZzQ04xMkx6SGd2WTZjNmZDdVoyUWQzN3NhWXZHQlQ5?=
 =?utf-8?B?cW5CMUxReFQ1VVdqakpYQ3RCUEJ2cWxCaWlvTWFxRUpVNUU5YnV3eHNQa1ph?=
 =?utf-8?B?Z0t5WTZnNVhMYllvSG1xSWsyTnk3NUVFL0V3SGVZbjRGdWY3Q0VneUNEMGVj?=
 =?utf-8?B?RnRFQitKSEthWUlIUkg3NlFYVTJEaXBaRGVoNjNkcVJkTVhweG1iek5VYy84?=
 =?utf-8?B?ZGdzd05KeGQ4MnQvMHJMVjFDbzc4UUcrUjR3NjFIMHJlb3FaVWNUeFM4TTZj?=
 =?utf-8?B?YytIbkRYSkJ4Nm1IWkRPdjF2akZNRlUyZ2dqSGxoZUFibkdKNVQ3RFB0cEps?=
 =?utf-8?B?cFdtejRwMUVxYTNKVFFKWjZ3aWNDT0xEaGIxTDZmMXVMbnNpQThnamdWdlQr?=
 =?utf-8?B?WDNFeS9HR0xOeEkrQ0dtSmI3bUtKR3BSV0I0VzNFWWlGcDhhSXNlY1RtNFVm?=
 =?utf-8?B?YnFvK2dXbnU2UFp6NGZzM3Y1OUxpWlVoYTVYTVRYUHVESUhaVmJ5RXloUy9R?=
 =?utf-8?B?TUt0VlgxYSsrMCtmQjFIQjhZRHlGVm5lVlRHV2I3bzNnbDNBSzFhbHFIMHdZ?=
 =?utf-8?B?dU42TFlqMUo0TDNCdVo5RFNvWlhjRlJQTHBjbjMvS1BtUDVod2R0NGJxcmJs?=
 =?utf-8?B?eHJJa2pJbzM3WWNmRXE2ciszUDY4Q2RCTnRBS0c5N1F1b1YwTXFjYnJ6SXpa?=
 =?utf-8?B?WDBVWWNYOWNmMmFNa2RQOFBlU2daTTNHa1lOOUgyamUrMXZwU2wxTkRRZmxz?=
 =?utf-8?B?T0Uxckg0cnhMYkxlY2VHS0lYVmdWclorUTFxTVlab0NaazcrZWh2S1dKSTQw?=
 =?utf-8?B?amVwdlZ3MmlUcmZxKytXMUJJN0JsMWdmRkpOcUp3NzJ4QkhTUTNRZFlHZmRW?=
 =?utf-8?B?MVhTUjVlbnFsK3VoNkxpTEVLS1o4YTlCOE10dDJUcko2VVJiVGZrdEdqTGFE?=
 =?utf-8?B?b2E0RXJBNlNsa05zaUdCNU5MaXM2Q0dMdzFiTkd0bE90V2ZDUVQ0SlEraXpN?=
 =?utf-8?B?eUFPSjNPbHE1ckRRSkdBSTMzSGhETEJRSUhxRFJZaktqWlZFV25hTVp3L24r?=
 =?utf-8?Q?vXP0XH6aNu257HOv+cirQA3Ln?=
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: ericsson.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: AM8PR07MB7666.eurprd07.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 359ca86e-902d-4721-3681-08da58129b76
X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Jun 2022 07:56:56.7061 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 92e84ceb-fbfd-47ab-be52-080c6b87953f
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: RIVWRpeSAyFVSkTF0IQ2yjP1KYPcX3buq+Jvo8vrQJv/PuMqpCjP6s4sCv64GHchG+1xD90u6BwrpaEcpzDhuA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0701MB2638
X-Mailman-Approved-At: Wed, 29 Jun 2022 16:55:11 +0200
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <https://mails.dpdk.org/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://mails.dpdk.org/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <https://mails.dpdk.org/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
Errors-To: dev-bounces@dpdk.org

DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTW9ydGVuIEJyw7hydXAg
PG1iQHNtYXJ0c2hhcmVzeXN0ZW1zLmNvbT4NCj4gU2VudDogZGVuIDIzIGp1bmkgMjAyMiAxNDo1
MQ0KPiBUbzogRW1pbCBCZXJnIDxlbWlsLmJlcmdAZXJpY3Nzb24uY29tPjsgYnJ1Y2UucmljaGFy
ZHNvbkBpbnRlbC5jb207DQo+IGRldkBkcGRrLm9yZw0KPiBDYzogc3RlcGhlbkBuZXR3b3JrcGx1
bWJlci5vcmc7IHN0YWJsZUBkcGRrLm9yZzsgYnVnemlsbGFAZHBkay5vcmc7DQo+IGhvZm9yc0Bs
eXNhdG9yLmxpdS5zZTsgb2xpdmllci5tYXR6QDZ3aW5kLmNvbQ0KPiBTdWJqZWN0OiBSRTogW1BB
VENIIHY0XSBuZXQ6IGZpeCBjaGVja3N1bSB3aXRoIHVuYWxpZ25lZCBidWZmZXINCj4gDQo+ID4g
RnJvbTogTW9ydGVuIEJyw7hydXAgW21haWx0bzptYkBzbWFydHNoYXJlc3lzdGVtcy5jb21dDQo+
ID4gU2VudDogVGh1cnNkYXksIDIzIEp1bmUgMjAyMiAxNC4zOQ0KPiA+DQo+ID4gV2l0aCB0aGlz
IHBhdGNoLCB0aGUgY2hlY2tzdW0gY2FuIGJlIGNhbGN1bGF0ZWQgb24gYW4gdW5hbGlnbmVkIGJ1
ZmZlci4NCj4gPiBJLmUuIHRoZSBidWYgcGFyYW1ldGVyIGlzIG5vIGxvbmdlciByZXF1aXJlZCB0
byBiZSAxNiBiaXQgYWxpZ25lZC4NCj4gPg0KPiA+IFRoZSBjaGVja3N1bSBpcyBzdGlsbCBjYWxj
dWxhdGVkIHVzaW5nIGEgMTYgYml0IGFsaWduZWQgcG9pbnRlciwgc28NCj4gPiB0aGUgY29tcGls
ZXIgY2FuIGF1dG8tdmVjdG9yaXplIHRoZSBmdW5jdGlvbidzIGlubmVyIGxvb3AuDQo+ID4NCj4g
PiBXaGVuIHRoZSBidWZmZXIgaXMgdW5hbGlnbmVkLCB0aGUgZmlyc3QgYnl0ZSBvZiB0aGUgYnVm
ZmVyIGlzIGhhbmRsZWQNCj4gPiBzZXBhcmF0ZWx5LiBGdXJ0aGVybW9yZSwgdGhlIGNhbGN1bGF0
ZWQgY2hlY2tzdW0gb2YgdGhlIGJ1ZmZlciBpcyBieXRlDQo+ID4gc2hpZnRlZCBiZWZvcmUgYmVp
bmcgYWRkZWQgdG8gdGhlIGluaXRpYWwgY2hlY2tzdW0sIHRvIGNvbXBlbnNhdGUgZm9yDQo+ID4g
dGhlIGNoZWNrc3VtIGhhdmluZyBiZWVuIGNhbGN1bGF0ZWQgb24gdGhlIGJ1ZmZlciBzaGlmdGVk
IGJ5IG9uZSBieXRlLg0KPiA+DQo+ID4gdjQ6DQo+ID4gKiBBZGQgY29weXJpZ2h0IG5vdGljZS4N
Cj4gPiAqIEluY2x1ZGUgc3RkYm9vbC5oIChFbWlsIEJlcmcpLg0KPiA+ICogVXNlIFJURV9QVFJf
QUREIChFbWlsIEJlcmcpLg0KPiA+ICogRml4IG9uZSBtb3JlIHR5cG8gaW4gY29tbWl0IG1lc3Nh
Z2UuIElzICd1bmxpZ25lZCcgZXZlbiBhIHdvcmQ/DQo+ID4gdjM6DQo+ID4gKiBSZW1vdmUgYnJh
Y2VzIGZyb20gc2luZ2xlIHN0YXRlbWVudCBibG9jay4NCj4gPiAqIEZpeCB0eXBvIGluIGNvbW1p
dCBtZXNzYWdlLg0KPiA+IHYyOg0KPiA+ICogRG8gbm90IGFzc3VtZSB0aGF0IHRoZSBidWZmZXIg
aXMgcGFydCBvZiBhbiBhbGlnbmVkIHBhY2tldCBidWZmZXIuDQo+ID4NCj4gPiBCdWd6aWxsYSBJ
RDogMTAzNQ0KPiA+IENjOiBzdGFibGVAZHBkay5vcmcNCj4gPg0KPiA+IFNpZ25lZC1vZmYtYnk6
IE1vcnRlbiBCcsO4cnVwIDxtYkBzbWFydHNoYXJlc3lzdGVtcy5jb20+DQo+ID4gVGVzdGVkLWJ5
OiBFbWlsIEJlcmcgPGVtaWwuYmVyZ0Blcmljc3Nvbi5jb20+DQo+ID4gLS0tDQo+ID4gIGxpYi9u
ZXQvcnRlX2lwLmggfCAzMiArKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLQ0KPiA+ICAx
IGZpbGUgY2hhbmdlZCwgMjcgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkNCj4gPg0KPiA+
IGRpZmYgLS1naXQgYS9saWIvbmV0L3J0ZV9pcC5oIGIvbGliL25ldC9ydGVfaXAuaCBpbmRleA0K
PiA+IGI1MDI0ODE2NzAuLjczOGQ2NDNkYTAgMTAwNjQ0DQo+ID4gLS0tIGEvbGliL25ldC9ydGVf
aXAuaA0KPiA+ICsrKyBiL2xpYi9uZXQvcnRlX2lwLmgNCj4gPiBAQCAtMyw2ICszLDcgQEANCj4g
PiAgICogICAgICBUaGUgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLg0K
PiA+ICAgKiBDb3B5cmlnaHQoYykgMjAxMC0yMDE0IEludGVsIENvcnBvcmF0aW9uLg0KPiA+ICAg
KiBDb3B5cmlnaHQoYykgMjAxNCA2V0lORCBTLkEuDQo+ID4gKyAqIENvcHlyaWdodChjKSAyMDIy
IFNtYXJ0U2hhcmUgU3lzdGVtcy4NCj4gPiAgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gPiAg
ICovDQo+ID4NCj4gPiBAQCAtMTUsNiArMTYsNyBAQA0KPiA+ICAgKiBJUC1yZWxhdGVkIGRlZmlu
ZXMNCj4gPiAgICovDQo+ID4NCj4gPiArI2luY2x1ZGUgPHN0ZGJvb2wuaD4NCj4gPiAgI2luY2x1
ZGUgPHN0ZGludC5oPg0KPiA+DQo+ID4gICNpZmRlZiBSVEVfRVhFQ19FTlZfV0lORE9XUw0KPiA+
IEBAIC0xNjIsMjAgKzE2NCw0MCBAQCBfX3J0ZV9yYXdfY2tzdW0oY29uc3Qgdm9pZCAqYnVmLCBz
aXplX3QgbGVuLA0KPiA+IHVpbnQzMl90IHN1bSkgIHsNCj4gPiAgCS8qIGV4dGVuZCBzdHJpY3Qt
YWxpYXNpbmcgcnVsZXMgKi8NCj4gPiAgCXR5cGVkZWYgdWludDE2X3QgX19hdHRyaWJ1dGVfXygo
X19tYXlfYWxpYXNfXykpIHUxNl9wOw0KPiA+IC0JY29uc3QgdTE2X3AgKnUxNl9idWYgPSAoY29u
c3QgdTE2X3AgKilidWY7DQo+ID4gLQljb25zdCB1MTZfcCAqZW5kID0gdTE2X2J1ZiArIGxlbiAv
IHNpemVvZigqdTE2X2J1Zik7DQo+ID4gKwljb25zdCB1MTZfcCAqdTE2X2J1ZjsNCj4gPiArCWNv
bnN0IHUxNl9wICplbmQ7DQo+ID4gKwl1aW50MzJfdCBic3VtID0gMDsNCj4gPiArCWNvbnN0IGJv
b2wgdW5hbGlnbmVkID0gKHVpbnRwdHJfdClidWYgJiAxOw0KPiA+ICsNCj4gPiArCS8qIGlmIGJ1
ZmZlciBpcyB1bmFsaWduZWQsIGtlZXBpbmcgaXQgYnl0ZSBvcmRlciBpbmRlcGVuZGVudCAqLw0K
PiA+ICsJaWYgKHVubGlrZWx5KHVuYWxpZ25lZCkpIHsNCj4gPiArCQl1aW50MTZfdCBmaXJzdCA9
IDA7DQo+ID4gKwkJaWYgKHVubGlrZWx5KGxlbiA9PSAwKSkNCj4gPiArCQkJcmV0dXJuIDA7DQo+
ID4gKwkJKCh1bnNpZ25lZCBjaGFyICopJmZpcnN0KVsxXSA9ICooY29uc3QgdW5zaWduZWQNCj4g
Y2hhciAqKWJ1ZjsNCj4gPiArCQlic3VtICs9IGZpcnN0Ow0KPiA+ICsJCWJ1ZiA9IFJURV9QVFJf
QUREKGJ1ZiwgMSk7DQo+ID4gKwkJbGVuLS07DQo+ID4gKwl9DQo+ID4NCj4gPiArCS8qIGFsaWdu
ZWQgYWNjZXNzIGZvciBjb21waWxlciBhdXRvLXZlY3Rvcml6YXRpb24gKi8NCj4gPiArCXUxNl9i
dWYgPSAoY29uc3QgdTE2X3AgKilidWY7DQo+ID4gKwllbmQgPSB1MTZfYnVmICsgbGVuIC8gc2l6
ZW9mKCp1MTZfYnVmKTsNCj4gPiAgCWZvciAoOyB1MTZfYnVmICE9IGVuZDsgKyt1MTZfYnVmKQ0K
PiA+IC0JCXN1bSArPSAqdTE2X2J1ZjsNCj4gPiArCQlic3VtICs9ICp1MTZfYnVmOw0KPiA+DQo+
ID4gIAkvKiBpZiBsZW5ndGggaXMgb2RkLCBrZWVwaW5nIGl0IGJ5dGUgb3JkZXIgaW5kZXBlbmRl
bnQgKi8NCj4gPiAgCWlmICh1bmxpa2VseShsZW4gJSAyKSkgew0KPiA+ICAJCXVpbnQxNl90IGxl
ZnQgPSAwOw0KPiA+ICAJCSoodW5zaWduZWQgY2hhciAqKSZsZWZ0ID0gKihjb25zdCB1bnNpZ25l
ZCBjaGFyDQo+ICopZW5kOw0KPiA+IC0JCXN1bSArPSBsZWZ0Ow0KPiA+ICsJCWJzdW0gKz0gbGVm
dDsNCj4gPiAgCX0NCj4gPg0KPiA+IC0JcmV0dXJuIHN1bTsNCj4gPiArCS8qIGlmIGJ1ZmZlciBp
cyB1bmFsaWduZWQsIHN3YXAgdGhlIGNoZWNrc3VtIGJ5dGVzICovDQo+ID4gKwlpZiAodW5saWtl
bHkodW5hbGlnbmVkKSkNCj4gPiArCQlic3VtID0gKGJzdW0gJiAweEZGMDBGRjAwKSA+PiA4IHwg
KGJzdW0gJg0KPiAweDAwRkYwMEZGKSA8PCA4Ow0KPiA+ICsNCj4gPiArCXJldHVybiBzdW0gKyBi
c3VtOw0KPiA+ICB9DQo+ID4NCj4gPiAgLyoqDQo+ID4gLS0NCj4gPiAyLjE3LjENCj4gDQo+IEBF
bWlsLCB0aGFuayB5b3UgZm9yIHRob3JvdWdobHkgcmV2aWV3aW5nIHRoZSBwcmV2aW91cyB2ZXJz
aW9ucy4NCj4gDQo+IElmIHlvdXIgdGVzdCBzdWNjZWVkcyBhbmQgeW91IGFyZSBzYXRpc2ZpZWQg
d2l0aCB0aGUgcGF0Y2gsIHJlbWVtYmVyIHRvIHJlcGx5DQo+IHdpdGggYSAiVGVzdGVkLWJ5IiB0
YWcgZm9yIHBhdGNod29yay4NCg0KVGhlIHRlc3Qgc3VjY2VlZGVkIGFuZCBJJ20gc2F0aXNmaWVk
IHdpdGggdGhlIHBhdGNoLiBJIGFkZGVkICdUZXN0ZWQtYnk6IEVtaWwgQmVyZyA8ZW1pbC5iZXJn
QGVyaWNzc29uLmNvbT4nIHRvIHRoZSBwYXRjaCBhYm92ZSwgaG9wZWZ1bGx5IGFzIHlvdSBpbnRl
bmRlZC4NCg==