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 55191A04FD for ; Wed, 22 Jun 2022 08:02:14 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 4DC464014F; Wed, 22 Jun 2022 08:02:14 +0200 (CEST) Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on2046.outbound.protection.outlook.com [40.107.20.46]) by mails.dpdk.org (Postfix) with ESMTP id A964A40150; Mon, 20 Jun 2022 12:37:42 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FMUV/jw9XRA68wcfJkg4gmhHDSpRK6B9zbkf+rFnaCQKbgQXiHIRecDwYfZ37DIXn1NHIX29bPDLRmFZVpXez7+QUHkDTXfZRypdbCWSOg0VXhWYRPO6i9TZpB5THVshT5lOx9YR4Sl3JNPiwMagVsdGKGCAoqds6/xjgkY35zKul5rJTrE42JvCigKZPAdjt2nIX3Dlfpkgng7PB0OwnjcR3YDYSjLNx2Qrv1ul9ZFe2SfnbeJmj2K1KLvweRZI+SPdb+3a1Zwdu9aNIYh1bk2um6LJzUrGXgHPF2eRXTIz6ek+IfWN7WbJwC5oIgRs112QH/7DIbOs7kCG00fHpg== 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=zQPH2YsH+1gqt8U3G7tNimNjxVBLW4Vx3PslhUgJwQ0=; b=M/yY2tY1HDmjdT273B7M1KOcxwEJoqhNVNRMe1a61bVPnlMUBg8qUaqgNfvmNnYJ7LA3vdBsDGoFu9qyN7WqTWDS7lJfEmjY0VonMDNSDr+p4Vvr6ceIU2Jd/+UxJRypU8HL5hgAWNXkLcI4OQd4R76gVU5SJakwGez/SR4Km7nWML/CuyPA/9cOoOTP6MuMktimTyf64vQawMlpgE7A7qr6S/d8icLoVB/uorF9foHE9+j1KWyV1Xg4Reg5wL1I3WV/MfxBRhAVmywhWRVh3nCmVN6KZ0ZNArg6H5JRH6bkpJGU+yuzK8/v9IuUUlmOO9tDaKlRz3W4uECOaOdzng== 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=zQPH2YsH+1gqt8U3G7tNimNjxVBLW4Vx3PslhUgJwQ0=; b=NNVoed4D7HvKs0L2q8Vp97b7iOi51iMGPy1XI7I979t74IK6+kBWP6IZW0MPhz9Zb7Am6IjrOFM1/U9DGFuYmmH757QSp+f0rT1bAiRFRU5L+qT7TBiYbxJ8Iz89c1ehet0uH/037s+3OI1Wr8DlBt19ryVb2wLHLUjUXtMOBnY= Received: from AM8PR07MB7666.eurprd07.prod.outlook.com (2603:10a6:20b:240::23) by AM0PR0702MB3715.eurprd07.prod.outlook.com (2603:10a6:208:1c::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5373.13; Mon, 20 Jun 2022 10:37:41 +0000 Received: from AM8PR07MB7666.eurprd07.prod.outlook.com ([fe80::188:e139:774e:cea1]) by AM8PR07MB7666.eurprd07.prod.outlook.com ([fe80::188:e139:774e:cea1%7]) with mapi id 15.20.5373.013; Mon, 20 Jun 2022 10:37:41 +0000 From: Emil Berg To: =?utf-8?B?TW9ydGVuIEJyw7hydXA=?= CC: "stable@dpdk.org" , "bugzilla@dpdk.org" , "hofors@lysator.liu.se" , "olivier.matz@6wind.com" , "dev@dpdk.org" Subject: RE: [PATCH] net: fix checksum with unaligned buffer Thread-Topic: [PATCH] net: fix checksum with unaligned buffer Thread-Index: AQHYgiaa5HfwvbWOiEyQ5g/wygBtSq1TTuaAgATMtJA= Date: Mon, 20 Jun 2022 10:37:41 +0000 Message-ID: References: <98CBD80474FA8B44BF855DF32C47DC35D87139@smartserver.smartshare.dk> <20220617084505.62071-1-mb@smartsharesystems.com> <98CBD80474FA8B44BF855DF32C47DC35D8713A@smartserver.smartshare.dk> In-Reply-To: <98CBD80474FA8B44BF855DF32C47DC35D8713A@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: 838876bb-1bd1-4911-f36a-08da52a8e71c x-ms-traffictypediagnostic: AM0PR0702MB3715:EE_ x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: VgEJxLPWmghzL/ctwcyCl2RHNQ7bNQ9mFVqpJ5gN4GSEgIuMIdvzD9e1QVU5SdF6XsoFVuNY8pR2s9Uqmbl36h4RMfl1wSxVswJjC7bBjgqogKiqWENHzRRmXK2u2HXnBCYX+hdCAb5eCbsbM3Afe9uuTspIT8XU0LcKY4MAFM9eqvjFUigB+WL48poHrAcB1Njuo76/za1Gey/7ZDs/HU74AwrH90EeIGn91kl0CajKnMtAd9tV/nX+lE+TeNIsus2YbOmkLvrVnGzU64IbhtSxcrrwYFad9CZmuQYOTxZmp3W0CNntWcIIX7VP813qwo1BjhrVxsZzsSNTMMy04HX2galHs9FT8KFUVjXd8trK+93f8Gr888kX+xGiCjz2Yw+P782yuBAa3UqGCJlwAmTrTYYN0g0jMZXn8rHi8d1GrkLldhpTSvpoydx5iHQOC3+hgMRK3KYMyZ0kgRfPWsKk5KMGyAwVzhW9IS4n+cOfoZfmTH3HGhVIK2N0XSmdGVeHcROmtuVCtay5s19xKOTz43KqKbC6R5GDM5XBefom/GSM2lbDWAIXIoYdopvw/sgXe4wPowBGaz6ehDKRXiw1JzPqbmbI6bjhhzmvkhyxCfO8vOAdwdL1IgsFgGMfm/elDCWfF84Xc8gSC1BkmHdEjvYA+nz9ji16lsHjGnB3o+AFNdEMuajCsOJqvX/PH+HQ9jcygOtPaBpN2Tf5Pg== 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)(366004)(83380400001)(33656002)(498600001)(5660300002)(71200400001)(8936002)(38070700005)(52536014)(53546011)(7696005)(86362001)(6506007)(44832011)(186003)(26005)(9686003)(66574015)(122000001)(38100700002)(6916009)(54906003)(316002)(82960400001)(66556008)(66476007)(4326008)(66946007)(64756008)(76116006)(66446008)(8676002)(2906002)(55016003); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?c1JyNXNVSDExMVRlODU4OXBkZllEaWxCYVF3ZmJ3OEtvd24wYWs3bzFIeTFL?= =?utf-8?B?TkZiaGM5OUhQMnp0TFdiaVltOXNCMm9DUmh0eDUzbjlJa1YwWk1CT21nT2wy?= =?utf-8?B?NFVVVEMyN1VmNzVleW9xclpGQmlCVk5rejJJMHU0WklYSmxvTjhOSUs5RW9X?= =?utf-8?B?eERQT2dZSGJtTEJSL0w0TkxhdzJlRWQxdm44YWsxZ3JaNTBCNHVrdENUNTlm?= =?utf-8?B?U08vTmpqUzZaMDk4Z0RKanhnaDBkRjdEaG1WTEVwQVBuV0cyam5KczNDcnNT?= =?utf-8?B?RGdEZ0gydVhOOXZJQ1ZVS0J2dlg5SnVLSUk3Q3lqeXNxdndpWmlZdlN6UVdS?= =?utf-8?B?Zkk3angxVjQ2UWNualkwNVZoSDVYV29KdWVYUWJFSU5mbFQ0WGtZM215R0NI?= =?utf-8?B?aGdLdk5SaVV5U3pIWTJuNWJPNFY4cGtyUHZ2YVVhdE5LQXNLemplcENJNDdH?= =?utf-8?B?bGI5WnNYdzYzM28zN2xERDVsY1VPRGJvTW92bEluZXA4UEdqZ3ltZ3hCMUhu?= =?utf-8?B?SnFzTnZhMTZsdmxTNGZFNFFnY0JxWWsvN2REVEpPcndPd2pCc3RrTW9hR285?= =?utf-8?B?WDZET01wNEtzMEdQNGk0eC9zK3ZlbGpIZzEyQkIrWm1OOVFXNWFzbDhhTVZB?= =?utf-8?B?WEpwKzFwZHowS08wcGIwc2VKc3puK3BnVTF2TWNOZmROVGRpa09KUmx1Q2hv?= =?utf-8?B?Kzh2VDh3aW1ud0VmaDVjRDR2Y2VnTG8yNitzdjJiZ0J4Ny8yMWE0STN6RHVX?= =?utf-8?B?T29sUVpYTW1LU2JxREl2UWEycHRRU1J0NnZ6SWtFRGFSYkpXcXdjeDA1bGpQ?= =?utf-8?B?OUlaNWNZS0xsbFd1OWgvTlZmbHdpY1E4SWtKNTkzeHM3UHNCYXFHempDemxJ?= =?utf-8?B?eXo1amhuZGt2cktFZUJ0RWIyM2N3eTFaNG1ubzVHR1ZKQVAvT1lva1pWYjJj?= =?utf-8?B?N0Z2NVY0UjU1VW40T0h3N0Z2VUcxOFRwVWJkMGY3V1hUZnBVU1llSEdvUVlp?= =?utf-8?B?UC9Ta0lkVDBrZWhpN1R3OTJyOTNaSUpzaDVwMVc2ZzFHMDJlMVBlbUs1bEZP?= =?utf-8?B?ajhoTDY1NWx2Mk9sZ0tqcjYzZDBBZ2owTk9ZMXAzc3VuV2thZnlRVXF6eDFK?= =?utf-8?B?cDF2Mm05S1BuMWFpMFBCWHU0NzhoRGxtNWVPMmlUcTJCUHNZLzJWSmMzNC9E?= =?utf-8?B?VmFUWVVJMGg5a0ZkWTRuYW1EUHBtUFRTdWVCK2JJMS85cmxUQzA2cmU0K2xz?= =?utf-8?B?M2dTSGpMSDZtaHBLNWxTRmVCTEFaVVlGcUk0R2U0bTJuK0lBOGlTUGFkMmFU?= =?utf-8?B?allSVldRdWRlbkd5TzYvdlZhME1hKzhrOUFCK0dOa2R6eEU4QnFZY1FzdVM3?= =?utf-8?B?SStCRW1BSGM1Q09qWnVHUnlkczI0b0ExRExyK0MvZWtqcWNnWGVrdmJsQ1Bq?= =?utf-8?B?bTJhK0lmRnBocS9yMUpJVTZ1SjlVSGZKalpnVFZ0d2FzMVF1VHZwUUl3SURH?= =?utf-8?B?SnlIZlQ0TXIzWjBFSkFudmtYcnlsWVFRSmo3aHMrM1B5Z0NaaVZlMXphYXh5?= =?utf-8?B?V0x4Vkl4S0h6VXNUeS9IUjVDTTMrVGNxYTdML20wL2Q4b0dpZjNUbExibnJP?= =?utf-8?B?ZEoxQVAvcUpRdGpNSHVGRzhmN3hsdDZoSWNQOVFTY0xISHAvNGVtZThORUhH?= =?utf-8?B?ZW0rMUg2dkZFTW15K25JNUljUTRGTUQ4N0hxNGN5ODU2czA0L2ZOekpQOUQy?= =?utf-8?B?QlorSWxoVGtlcXZwMXhQUm12ODMvd0FFTmlndHZjbVhlMzRTa2E3R2V0Nm5T?= =?utf-8?B?bC9sYnB0d1RXNDdOKzFXczNUWXRweU9tUS9FQ3ZMakxLNEZkK1IzeXU4V25r?= =?utf-8?B?OGVYaFQwWFc2TkkwSi9jMlBoMnVBVlhsdkhnT0NZVWRQb1JLQWxERDZISHV3?= =?utf-8?B?Wm9kM2tsOTBScjRHVmxqeEJDSmlQNTI2a3RqTFViQ08zTjA3Q3hVcEZ6alpK?= =?utf-8?B?R2MxL1FkQ3hhMjVXZzRIUDJjdDNVNC9HT2VTSThjSkt3dlRkeEIvVXd6NWt5?= =?utf-8?B?bk9XdE05blhrRjcvTkpoNGY5eHc0eWZNaHA4WlYwRWhQbit4S3g3alkzb0NR?= =?utf-8?B?YVFyQWgwSEZ1OUN4YytGMVRCNW5BSjFrUzRVK21XNC84MFVLcmFuOFlxY3Jw?= =?utf-8?B?TytyN1ZRODhJcmMydFNPZkdBVVljdkZaUlgxbmRQbFhNdTlIUGFGNlBrUHBO?= =?utf-8?B?ZDJFUkJGUE9WS1pLTmU1SE1tSGllTmVla2pwVFpLbE1mYWE0MjgwWlRXSWZT?= =?utf-8?B?TVdycEVrdzErcGJRNjc0bVhNOEtqSVJuTEVlVUtjU0phMzBsNnk1QT09?= 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: 838876bb-1bd1-4911-f36a-08da52a8e71c X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Jun 2022 10:37:41.1295 (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: wM8JrcezxQCcs+IL6uYDPwAiYzTLhG5hXq1tm5N44Y3EsfwkkZhSqiMMTEcZGF4CB2pT9swBX00EwjGNnFNUGA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR0702MB3715 X-Mailman-Approved-At: Wed, 22 Jun 2022 08:02:13 +0200 X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBNb3J0ZW4gQnLDuHJ1cCA8bWJA c21hcnRzaGFyZXN5c3RlbXMuY29tPg0KPiBTZW50OiBkZW4gMTcganVuaSAyMDIyIDExOjA3DQo+ IFRvOiBFbWlsIEJlcmcgPGVtaWwuYmVyZ0Blcmljc3Nvbi5jb20+DQo+IENjOiBzdGFibGVAZHBk ay5vcmc7IGJ1Z3ppbGxhQGRwZGsub3JnOyBob2ZvcnNAbHlzYXRvci5saXUuc2U7DQo+IG9saXZp ZXIubWF0ekA2d2luZC5jb207IGRldkBkcGRrLm9yZw0KPiBTdWJqZWN0OiBSRTogW1BBVENIXSBu ZXQ6IGZpeCBjaGVja3N1bSB3aXRoIHVuYWxpZ25lZCBidWZmZXINCj4gDQo+ID4gRnJvbTogTW9y dGVuIEJyw7hydXAgW21haWx0bzptYkBzbWFydHNoYXJlc3lzdGVtcy5jb21dDQo+ID4gU2VudDog RnJpZGF5LCAxNyBKdW5lIDIwMjIgMTAuNDUNCj4gPg0KPiA+IFdpdGggdGhpcyBwYXRjaCwgdGhl IGNoZWNrc3VtIGNhbiBiZSBjYWxjdWxhdGVkIG9uIGFuIHVubGlnbmVkIHBhcnQgb2YNCj4gPiBh IHBhY2tldCBidWZmZXIuDQo+ID4gSS5lLiB0aGUgYnVmIHBhcmFtZXRlciBpcyBubyBsb25nZXIg cmVxdWlyZWQgdG8gYmUgMTYgYml0IGFsaWduZWQuDQo+ID4NCj4gPiBUaGUgRFBESyBpbnZhcmlh bnQgdGhhdCBwYWNrZXQgYnVmZmVycyBtdXN0IGJlIDE2IGJpdCBhbGlnbmVkIHJlbWFpbnMNCj4g PiB1bmNoYW5nZWQuDQo+ID4gVGhpcyBpbnZhcmlhbnQgYWxzbyBkZWZpbmVzIGhvdyB0byBjYWxj dWxhdGUgdGhlIDE2IGJpdCBjaGVja3N1bSBvbiBhbg0KPiA+IHVuYWxpZ25lZCBwYXJ0IG9mIGEg cGFja2V0IGJ1ZmZlci4NCj4gPg0KPiA+IEJ1Z3ppbGxhIElEOiAxMDM1DQo+ID4gQ2M6IHN0YWJs ZUBkcGRrLm9yZw0KPiA+DQo+ID4gU2lnbmVkLW9mZi1ieTogTW9ydGVuIEJyw7hydXAgPG1iQHNt YXJ0c2hhcmVzeXN0ZW1zLmNvbT4NCj4gPiAtLS0NCj4gPiAgbGliL25ldC9ydGVfaXAuaCB8IDE3 ICsrKysrKysrKysrKysrKy0tDQo+ID4gIDEgZmlsZSBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCsp LCAyIGRlbGV0aW9ucygtKQ0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL2xpYi9uZXQvcnRlX2lwLmgg Yi9saWIvbmV0L3J0ZV9pcC5oIGluZGV4DQo+ID4gYjUwMjQ4MTY3MC4uOGUzMDFkOWMyNiAxMDA2 NDQNCj4gPiAtLS0gYS9saWIvbmV0L3J0ZV9pcC5oDQo+ID4gKysrIGIvbGliL25ldC9ydGVfaXAu aA0KPiA+IEBAIC0xNjIsOSArMTYyLDIyIEBAIF9fcnRlX3Jhd19ja3N1bShjb25zdCB2b2lkICpi dWYsIHNpemVfdCBsZW4sDQo+ID4gdWludDMyX3Qgc3VtKSAgew0KPiA+ICAJLyogZXh0ZW5kIHN0 cmljdC1hbGlhc2luZyBydWxlcyAqLw0KPiA+ICAJdHlwZWRlZiB1aW50MTZfdCBfX2F0dHJpYnV0 ZV9fKChfX21heV9hbGlhc19fKSkgdTE2X3A7DQo+ID4gLQljb25zdCB1MTZfcCAqdTE2X2J1ZiA9 IChjb25zdCB1MTZfcCAqKWJ1ZjsNCj4gPiAtCWNvbnN0IHUxNl9wICplbmQgPSB1MTZfYnVmICsg bGVuIC8gc2l6ZW9mKCp1MTZfYnVmKTsNCj4gPiArCWNvbnN0IHUxNl9wICp1MTZfYnVmOw0KPiA+ ICsJY29uc3QgdTE2X3AgKmVuZDsNCj4gPiArDQo+ID4gKwkvKiBpZiBidWZmZXIgaXMgdW5hbGln bmVkLCBrZWVwaW5nIGl0IGJ5dGUgb3JkZXIgaW5kZXBlbmRlbnQgKi8NCj4gPiArCWlmICh1bmxp a2VseSgodWludHB0cl90KWJ1ZiAmIDEpKSB7DQo+ID4gKwkJdWludDE2X3QgZmlyc3QgPSAwOw0K PiA+ICsJCWlmICh1bmxpa2VseShsZW4gPT0gMCkpDQo+ID4gKwkJCXJldHVybiAwOw0KPiA+ICsJ CSgodW5zaWduZWQgY2hhciAqKSZmaXJzdClbMV0gPSAqKGNvbnN0IHVuc2lnbmVkDQo+IGNoYXIg KilidWY7DQo+ID4gKwkJc3VtICs9IGZpcnN0Ow0KPiA+ICsJCWJ1ZiA9IChjb25zdCB2b2lkICop KCh1aW50cHRyX3QpYnVmICsgMSk7DQo+ID4gKwkJbGVuLS07DQo+ID4gKwl9DQo+ID4NCj4gPiAr CXUxNl9idWYgPSAoY29uc3QgdTE2X3AgKilidWY7DQo+ID4gKwllbmQgPSB1MTZfYnVmICsgbGVu IC8gc2l6ZW9mKCp1MTZfYnVmKTsNCj4gPiAgCWZvciAoOyB1MTZfYnVmICE9IGVuZDsgKyt1MTZf YnVmKQ0KPiA+ICAJCXN1bSArPSAqdTE2X2J1ZjsNCj4gPg0KPiA+IC0tDQo+ID4gMi4xNy4xDQo+ IA0KPiBARW1pbCwgY2FuIHlvdSBwbGVhc2UgdGVzdCB0aGlzIHBhdGNoIHdpdGggYW4gdW5hbGln bmVkIGJ1ZmZlciBvbiB5b3VyDQo+IGFwcGxpY2F0aW9uIHRvIGNvbmZpcm0gdGhhdCBpdCBwcm9k dWNlcyB0aGUgZXhwZWN0ZWQgcmVzdWx0Lg0KDQpIaSENCg0KSSB0ZXN0ZWQgdGhlIHBhdGNoLiBJ dCBkb2Vzbid0IHNlZW0gdG8gcHJvZHVjZSB0aGUgc2FtZSByZXN1bHRzLiBJIHRoaW5rIHRoZSBw cm9ibGVtIGlzIHRoYXQgaXQgYWx3YXlzIHN0YXJ0cyBzdW1taW5nIGZyb20gYW4gZXZlbiBhZGRy ZXNzLCB0aGUgc3VtIHNob3VsZCBhbHdheXMgc3RhcnQgZnJvbSB0aGUgZmlyc3QgYnl0ZSBhY2Nv cmRpbmcgdG8gdGhlIGNoZWNrc3VtIHNwZWNpZmljYXRpb24uIENhbiBJIGluc3RlYWQgcHJvcG9z ZSBzb21ldGhpbmcgTWF0dGlhcyBSw7ZubmJsb20gc2VudCBtZT8NCi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpjb25zdCB2b2lkICplbmQgPSBS VEVfUFRSX0FERChidWYsIChsZW4gLyBzaXplb2YodWludDE2X3QpKSAqIHNpemVvZih1aW50MTZf dCkpOw0KDQpmb3IgKDsgYnVmICE9IGVuZDsgYnVmID0gUlRFX1BUUl9BREQoYnVmLCBzaXplb2Yo dWludDE2X3QpKSkgew0KICAgIHVpbnQxNl90IHY7DQogICAgbWVtY3B5KCZ2LCBidWYsIHNpemVv Zih1aW50MTZfdCkpOw0KICAgIHN1bSArPSB2Ow0KfQ0KDQovKiBpZiBsZW5ndGggaXMgb2RkLCBr ZWVwaW5nIGl0IGJ5dGUgb3JkZXIgaW5kZXBlbmRlbnQgKi8NCmlmICh1bmxpa2VseShsZW4gJSAy KSkgew0KICAgIHVpbnQxNl90IGxlZnQgPSAwOw0KICAgICoodW5zaWduZWQgY2hhciAqKSZsZWZ0 ID0gKihjb25zdCB1bnNpZ25lZCBjaGFyICopZW5kOw0KICAgIHN1bSArPSBsZWZ0Ow0KfQ0KLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCk5vdGUg dGhhdCB0aGUgbGFzdCBibG9jayBpcyB0aGUgc2FtZSBhcyBiZWZvcmUuIEFtYXppbmdseSBJIHNl ZSBubyBtZWFzdXJhYmxlIHBlcmZvcm1hbmNlIGhpdCBmcm9tIHRoaXMgY29tcGFyZWQgdG8gdGhl IHByZXZpb3VzIG9uZSAoLU8zLCBtYXJjaD1uYXRpdmUpLiBMb29raW5nIGF0IHRoZSBwcmV2aW91 cyB0aGUgbG9vcCBib2R5IG1heSBjb21waWxlIHRvICh4ODYpOg0KLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnZtb3ZkcWEgKCVyZHgpLCV4bW0x DQp2cG1vdnp4d2QgJXhtbTEsJXhtbTANCnZwc3JsZHEgJDB4OCwleG1tMSwleG1tMQ0KdnBtb3Z6 eHdkICV4bW0xLCV4bW0xDQp2cGFkZGQgJXhtbTEsJXhtbTAsJXhtbTANCmNtcCAgICAkMHhmLCVy YXgNCmpiZSAgICAweDdmZjdhMGRmYjFhOQ0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCndoaWxlIE1hdHRpYXMnIG1lbWNweSBzb2x1dGlvbjoN Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQp2 bW92ZHF1ICglcmN4KSwleW1tMA0KYWRkICAgICQweDIwLCVyY3gNCnZwbW92enh3ZCAleG1tMCwl eW1tMQ0KdmV4dHJhY3RpMTI4ICQweDEsJXltbTAsJXhtbTANCnZwbW92enh3ZCAleG1tMCwleW1t MA0KdnBhZGRkICV5bW0wLCV5bW0xLCV5bW0wDQp2cGFkZGQgJXltbTAsJXltbTIsJXltbTINCmNt cCAgICAlcjksJXJjeA0Kam5lICAgIDB4NTU1NTU1NTU2MzgwDQotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KVGh1cyB0d28gZXh0cmEgaW5zdHJ1 Y3Rpb25zIGluIHRoZSBsb29wLCBidXQgSSBzdXNwZWN0IGl0IG1heSBiZSBtZW1vcnkgYm91bmQs IGxlYWRpbmcgdG8gbm8gbWVhc3VyYWJsZSBwZXJmb3JtYW5jZSBkaWZmZXJlbmNlLiANCg0KQW55 IGNvbW1lbnRzPw0KDQovRW1pbA0K