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 BC937A00C5; Fri, 8 Jul 2022 15:52:16 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 67139406B4; Fri, 8 Jul 2022 15:52:16 +0200 (CEST) Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-eopbgr80051.outbound.protection.outlook.com [40.107.8.51]) by mails.dpdk.org (Postfix) with ESMTP id 3EFB14021E; Fri, 8 Jul 2022 15:52:14 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UyYtVtUELsMDtqctyS+iYeAG20OZS+o3ypBPVzytawKQ1zf9TDk+SKigwzUbU4/3YqRc7cEEcnGHMFBhxR1OAckrA+mg1lb1j6v+cPY3c6kh3FL7/zgzCArP4nvVXL9GZiEP/LgKHsFyI7g+78qjnwBzFXUaLHEVMqhIDqi7WhGmZJa0KvJVPM5f58Ty0QSBpCv4SfQv6qPNlBL0uPxxtSioo5CI+ge0C2M57PBQ/FM+vcrEwzOGVXmWQhjb0zSMAvbUWxbf9oEawewlCs2/gMYddmntCV+UGBI6Sbd4fwbb8sj9gNRvLSv3l3dW0ps9v099a+Vp1cBvOEtkh9Rqvg== 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=6aSNXjzXihzD7NbybDo50nVQDcX3Dx6KeOYhs60Twls=; b=fSPewOlptnh2JHB9n3OSRxaACvG6PA68pfgMp7Xp8QlLGy+uvMnPAj7spSJJQafzeYBYnaOwIxh10BtbKOLwelvoWplDYi5rQalc9fyUvF+dRqzYIeqqDHvUJ1qT6ZxP5V9bgnp2qSpXN5/MMrT2EDNKNXo1WQ4mo+uakNXUB4OTd3Nb+KH8Gmut/5hlp29bXyGHEEqfsNl0fmu9Gu7FlclTNGk1OUT0WOOZpGytfmnhWi0g9wLXcB4RcVN4sqBHEnfTDGD/TemOeWrj5UABfRqU1eHEIqsLdbKtmst8Ib3qbGC1Z8n5qjVJNHPf3ezS8ITUyiKtc0pj/EmVd5KXTA== 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=6aSNXjzXihzD7NbybDo50nVQDcX3Dx6KeOYhs60Twls=; b=hxCmVeU+SMjLXYXXXKkw7QCBHELnxEs8UJ4U/OPNLjNbM67CQPY94BbZniEDsAByY3Tw3uCYgevFeK3bqBbvOoIdMX5Qdss01ucMBnv/OfVwXNIuiXrUFqqBw5/mfwuAu2zsrFIMbcfcnRTkP0WD5N4CXq6wSs5EJGepGg8Cjfk= Received: from DB7PR07MB5978.eurprd07.prod.outlook.com (2603:10a6:10:80::15) by DB6PR0701MB2566.eurprd07.prod.outlook.com (2603:10a6:4:24::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5417.16; Fri, 8 Jul 2022 13:52:12 +0000 Received: from DB7PR07MB5978.eurprd07.prod.outlook.com ([fe80::45fc:aa82:15fd:875f]) by DB7PR07MB5978.eurprd07.prod.outlook.com ([fe80::45fc:aa82:15fd:875f%7]) with mapi id 15.20.5417.015; Fri, 8 Jul 2022 13:52:12 +0000 From: =?utf-8?B?TWF0dGlhcyBSw7ZubmJsb20=?= To: =?utf-8?B?TW9ydGVuIEJyw7hydXA=?= , =?utf-8?B?TWF0dGlhcyBSw7ZubmJsb20=?= , "olivier.matz@6wind.com" CC: Emil Berg , "bruce.richardson@intel.com" , "stephen@networkplumber.org" , "stable@dpdk.org" , "bugzilla@dpdk.org" , "dev@dpdk.org" , Onar Olsen Subject: Re: [PATCH 2/2] net: have checksum routines accept unaligned data Thread-Topic: [PATCH 2/2] net: have checksum routines accept unaligned data Thread-Index: AQHYkjBQspW89wI+1ka6BCnnbZPHfa1zcSqAgAD7PQCAAAE2EIAAEdsA Date: Fri, 8 Jul 2022 13:52:12 +0000 Message-ID: References: <98CBD80474FA8B44BF855DF32C47DC35D87189@smartserver.smartshare.dk> <20220707183450.3203361-1-hofors@lysator.liu.se> <20220707183450.3203361-2-hofors@lysator.liu.se> <98CBD80474FA8B44BF855DF32C47DC35D871B1@smartserver.smartshare.dk> <6839721a-8050-0e11-0c66-0f735ec8c56d@ericsson.com> <98CBD80474FA8B44BF855DF32C47DC35D871B4@smartserver.smartshare.dk> In-Reply-To: <98CBD80474FA8B44BF855DF32C47DC35D871B4@smartserver.smartshare.dk> Accept-Language: en-US, sv-SE Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.11.0 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: 2be34ab7-628d-422a-eb7c-08da60e90f3b x-ms-traffictypediagnostic: DB6PR0701MB2566:EE_ x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: iW9zc3c9/RsqBobsZmRvLQdndsRLx1+LHYYI6OcQnFYURGWY/zPAz/vCKHLVvcl8xsDcT7etjAFUJ4GDiDwFAAwCSeLP4pWlA8TC2UWEBgC+lfko4k5z77KYDuBBSftN2KfKSHvTzLFEYTRgt6UJvuLl34m4b0t1NrcIe7G3zk8GZHSM5FFkUq476M9zmIGXNZnT7oR5tmzYC1jxfW3r2JlnAYwV4Hab77mPKpjnnwIliOt9qaqQQ3A73P/4gTPRLYFd42dmfvSo8gJTeKhQJi+MDfESvqkNjDxh1n1maUp+M0fgYPlCKDQ8Qg18OYgJh2JnP+2TSG9Cmy2bJrpLORGPo56mPLoceGhH8FdbeYhTC24h8tSdxXQxYnxEY1JPI4uTDWwWeIVVBAD+PDeU1//K7LP1HU/q0NsHQTaroilbB1LL94N1kamYvnMfoeAj4FOqdNKuyumzQ7zSgZfQwvQ5yv/DzSvYo7+pl6Zl/3xwaZkj7vNjOf0CiIFdsDKgJw1kUUc0w5cdVlOlCQADDlC5ZiJkpHjjAesmnVNTPOq6a3/3Eo/5m83otXMFUCxpHJsMpVhW3hFmrsmQ+bOesF+skCJkRlEOYJCd3h9zEn9FeC27LBQSHyYXzQXw46ZDO0/94bJQiGdQY4i+7YTVyYW+r8RrhjsSBQgdComKm1WG/3BAiow33d14LJ1YzIrPKt+PPCCJbyIizz50AwrvKuvnm3jnvEi/qIBQmyQ00bjM7+ppgWQhp6vx8HmZBORcwroLqOQZUnashAxXpB4KPiHqIoCBq8QIMyyclyDSnAePinQvcSRcUt89TpfTjgTwFUww68OICmbZ/zZfBupFMAVLCIlqT0rs4xVwWtSD6bXhhmnYQWd/HX1lgQoh6Lj+ x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB7PR07MB5978.eurprd07.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230016)(4636009)(376002)(346002)(39860400002)(136003)(396003)(366004)(66574015)(110136005)(66946007)(4326008)(6486002)(316002)(54906003)(66476007)(91956017)(76116006)(86362001)(85182001)(26005)(122000001)(36756003)(71200400001)(41300700001)(6506007)(85202003)(8676002)(31696002)(478600001)(31686004)(107886003)(66556008)(53546011)(38100700002)(66446008)(64756008)(186003)(2616005)(6512007)(8936002)(5660300002)(82960400001)(2906002)(38070700005)(83380400001)(45980500001)(43740500002); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?R1ExUXlTdXRZaTRReUJYbktSTFJLWjRCL1Bpa3J0ZmEwTXJjcUFzcHY0NWxy?= =?utf-8?B?NmJSQUJrN2lpOUE4T2xIcXVjd3dwelJyclU0aFA0U1pnaFRrZCs2bEdaVDFt?= =?utf-8?B?Vm91Q2tSODRtYmtKZ2NOV2UvM3lDbVRhSng3U2o1M1pNaTdKdWprQ0UwWHlX?= =?utf-8?B?aUVUUnA5RHYzTHZwb1Z5bitFaDcxODc0NEVFaXdFcWgxVFJrZ2NVWXBNb2NB?= =?utf-8?B?WXBlY2NwTWtuSmhIQ0dwcmlZNVl3ZWpyUnM5OFh5M3R3bkhENXk3aXJ6c2VS?= =?utf-8?B?aStUZlFCbDV6MDlhcFVieE9ZeUExdTZkNXhxeWdqMWF0dnlkbUdMUWFjTUxT?= =?utf-8?B?R0J5VUNjc28rV3hXYzh0am9zaVM1NG1KLzZmcHFDT2piSVAvcXpHRlp1clJH?= =?utf-8?B?UXc5ZDI1SHg3YkVqT0FDaVIrZTlVZFVpMzVuZUlwd2p2aGRWK3d2NjU0RWNL?= =?utf-8?B?QzFyTW0xOGhvakE3bUR0NFprRkRFSzBRZVlteFpDZ3kyeStvSFdmTjBPdmV5?= =?utf-8?B?K3UzeHNpQWhveDFNUE5QS3BKOFZ1V21NRVM5NHJZZkpwREZISUxNTXVnODBm?= =?utf-8?B?TjFhb1VtRVlBa3h5alNTTHlvbU5uYy9tN205My9OQlZXOVkwaEU0NFdUbWtD?= =?utf-8?B?OVE4UTJ6R2Nud1Ixa00xbFpnWmdvdVpRTEVTaWFwWVRSSWNrYVBwT01rajdt?= =?utf-8?B?Rkhia3kxRmNXR3hyTXJITzc5MXEwU0pKb3VLVitYWURNOHdnQ3JoUmhaYWV6?= =?utf-8?B?aTgvNU1lSHZ6RHE0MS9KSDFhSk1odlJTWFl4dC9ad002b1cvVHdPZXNWYWRs?= =?utf-8?B?WDlBdys3QS9lTGVwVmJDVTRkQlIyTi9uem51TEZRekFNR1FPUC9jM1dXczRD?= =?utf-8?B?UVViZnp3STcyeTFxRm9SM3ZCajN5M2ZCV2ZXd0ltb2FhT2NyRHhiMXMyWkR3?= =?utf-8?B?WUtqanE1QWtIM3h0VkYzUXdRb2JxNk1qRno2c1hZNnhZYmU2SEdwREQ1ZkhG?= =?utf-8?B?QlQzWGt1Q1NaWWJlRmxHSU10UU5BVGFtZDBmT0JVMEtkSXAxOERZWkptWS9X?= =?utf-8?B?TGFWelNzS2o1YzF4OUsrQVRWWVdZeW5qcXVWRU9ORnByTWdaa29hUUpqSHBF?= =?utf-8?B?T2NxRjNIKzRlcG15aUd5cUwrMnNFWnVWSTQwbjczUWVkTW1DY2xPZDN2Wkw2?= =?utf-8?B?MnBOTVpHOW5BWmZmMVEwRU14NXgweE1jbGdFNUl4dExMTWE3ampZT0VseFRL?= =?utf-8?B?ckM5SkZab2xJRlB6b21yWjY5QnFYMVNGTXdhY2ZwUWZnYy9oUUw1c2NSZS9V?= =?utf-8?B?dTVDM1Y3dDVFVnB5ZXlxRCtlSk9YSEF1SWNHbERuSitoRHNEdDJKWUZEUmFn?= =?utf-8?B?WStMVnBFUXZHL0V2WFpPcmNDUWFtVWV0dU4zNGZjR250Qk1EWTZGOUxwK25C?= =?utf-8?B?cEFLWjJXdFhDN3UxTHBVK3lCNElQUGJPQzU1eWxaVzQ1N0I2UXp3RTRsTG9p?= =?utf-8?B?RVpLZmJpQTR6ekNuZGxudmEyQTE1Y2FpekJiRmlyRjh3MndTM01aWGVrbU0y?= =?utf-8?B?WEc2WlBqQWJMTWRPSDJIY3h4blh4SnB0RVhVcjdTK0s5R3NYdjMyMUpZbzdL?= =?utf-8?B?akxtQ0FnWDVkUkg3VzhBclpvam9SdDVQZUU0TVBrNUx5NTl5bGx4dFJqVVhB?= =?utf-8?B?Z1I5VHJJWUF4c2R4cU1WYTRZOTEzRHk1NHpVRlQ2WkRmaFBzZ255U3NYb0lT?= =?utf-8?B?MC9zMEtHUDRPVTZUcEdOWncvZkpvUE00M09Jb1U3NW9WSFhnanVXL0FndnZh?= =?utf-8?B?TURXckkrRmRuQ2VBQ1lPNElNNGowbGFlUkllMmp2R2g4ZVRKRTdpWVYrNm0y?= =?utf-8?B?amFtUC81L2hVWThhTmlGYzFZTExpRUZuc2h0VGlaSmJSaXo2T2xtWHBWcFBk?= =?utf-8?B?eVVqVFdiazdVU1FkVmI2bDlZRGlVZ0N1eU1pV00yQ3B1Q3YvSkp6Y2FaODIr?= =?utf-8?B?MWwydjN4cXNyZk16ekJ6ZXpVRzk3ZytsdWwwWjRJK0RrcUxPUTRCSUx0R2R1?= =?utf-8?B?bFFiOHIzL3Vmc3VON25QdmIxNWRGREJqRTI5bDdMNVpPVEJrOC92bGozOHRl?= =?utf-8?B?TWlhU3JaL0lGcFJTMDI3UlVSem5ld2p0MlpRcVZYNGtESlRFTjJPeEhXTEIr?= =?utf-8?B?N3c9PQ==?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: ericsson.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DB7PR07MB5978.eurprd07.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2be34ab7-628d-422a-eb7c-08da60e90f3b X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Jul 2022 13:52:12.5265 (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: NTtnYSDAhiRHPYGhtTwriG4C3ofV547nttykr6JnpCxwl+Q27qexbnr4qppKr8hM6M70OJmRctxPCZpRIX9DSvimK1Qqu5IkekkEXMpcs5U= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0701MB2566 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 T24gMjAyMi0wNy0wOCAxNTowMiwgTW9ydGVuIEJyw7hydXAgd3JvdGU6DQo+PiBGcm9tOiBNYXR0 aWFzIFLDtm5uYmxvbSBbbWFpbHRvOm1hdHRpYXMucm9ubmJsb21AZXJpY3Nzb24uY29tXQ0KPj4g U2VudDogRnJpZGF5LCA4IEp1bHkgMjAyMiAxNC40NA0KPj4NCj4+IE9uIDIwMjItMDctMDcgMjM6 NDQsIE1vcnRlbiBCcsO4cnVwIHdyb3RlOg0KPj4+PiBGcm9tOiBNYXR0aWFzIFLDtm5uYmxvbSBb bWFpbHRvOmhvZm9yc0BseXNhdG9yLmxpdS5zZV0NCj4+Pj4gU2VudDogVGh1cnNkYXksIDcgSnVs eSAyMDIyIDIwLjM1DQo+Pj4+DQo+Pj4+IEZyb206IE1hdHRpYXMgUsO2bm5ibG9tIDxtYXR0aWFz LnJvbm5ibG9tQGVyaWNzc29uLmNvbT4NCj4+Pj4NCj4+Pj4gX19ydGVfcmF3X2Nrc3VtKCkgKHVz ZWQgYnkgcnRlX3Jhd19ja3N1bSgpIGFtb25nIG90aGVycykgYWNjZXNzZWQNCj4+IGl0cw0KPj4+ PiBkYXRhIHRocm91Z2ggYW4gdWludDE2X3QgcG9pbnRlciwgd2hpY2ggYWxsb3dlZCB0aGUgY29t cGlsZXIgdG8NCj4+IGFzc3VtZQ0KPj4+PiB0aGUgZGF0YSB3YXMgMTYtYml0IGFsaWduZWQuIFRo aXMgaW4gdHVybiB3b3VsZCwgd2l0aCBjZXJ0YWluDQo+Pj4+IGFyY2hpdGVjdHVyZXMgYW5kIGNv bXBpbGVyIGZsYWcgY29tYmluYXRpb25zLCByZXN1bHQgaW4gY29kZSB3aXRoDQo+PiBTSU1EDQo+ Pj4+IGxvYWQgb3Igc3RvcmUgaW5zdHJ1Y3Rpb25zIHdpdGggcmVzdHJpY3Rpb25zIG9uIGRhdGEg YWxpZ25tZW50Lg0KPj4+Pg0KPj4+PiBUaGlzIHBhdGNoIGtlZXBzIHRoZSBvbGQgYWxnb3JpdGht LCBidXQgZGF0YSBpcyByZWFkIHVzaW5nIG1lbWNweSgpDQo+Pj4+IGluc3RlYWQgb2YgZGlyZWN0 IHBvaW50ZXIgYWNjZXNzLCBmb3JjaW5nIHRoZSBjb21waWxlciB0byBhbHdheXMNCj4+Pj4gZ2Vu ZXJhdGUgY29kZSB0aGF0IGhhbmRsZXMgdW5hbGlnbmVkIGlucHV0LiBUaGUgX19tYXlfYWxpYXNf XyBHQ0MNCj4+Pj4gYXR0cmlidXRlIGlzIG5vIGxvbmdlciBuZWVkZWQuDQo+Pj4+DQo+Pj4+IFRo ZSBkYXRhIG9uIHdoaWNoIHRoZSBJbnRlcm5ldCBjaGVja3N1bSBmdW5jdGlvbnMgb3BlcmF0ZXMg YXJlDQo+PiBhbG1vc3QNCj4+Pj4gYWx3YXlzIDE2LWJpdCBhbGlnbmVkLCBidXQgdGhlcmUgYXJl IGV4Y2VwdGlvbnMuIEluIHBhcnRpY3VsYXIsIHRoZQ0KPj4+PiBQRENQIHByb3RvY29sIGhlYWRl ciBtYXkgKGxpdGVyYWxseSkgaGF2ZSBhbiBvZGQgc2l6ZS4NCj4+Pj4NCj4+Pj4gUGVyZm9ybWFu Y2UgaW1wYWN0IHNlZW1zIHRvIHJhbmdlIGZyb20gbm9uZSB0byBhIHZlcnkgc2xpZ2h0DQo+Pj4+ IHJlZ3Jlc3Npb24uDQo+Pj4+DQo+Pj4+IEJ1Z3ppbGxhIElEOiAxMDM1DQo+Pj4+IENjOiBzdGFi bGVAZHBkay5vcmcNCj4+Pj4NCj4+Pj4gU2lnbmVkLW9mZi1ieTogTWF0dGlhcyBSw7ZubmJsb20g PG1hdHRpYXMucm9ubmJsb21AZXJpY3Nzb24uY29tPg0KPj4+PiAtLS0NCj4+Pj4gICAgbGliL25l dC9ydGVfaXAuaCB8IDE5ICsrKysrKysrKysrKy0tLS0tLS0NCj4+Pj4gICAgMSBmaWxlIGNoYW5n ZWQsIDEyIGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pDQo+Pj4+DQo+Pj4+IGRpZmYgLS1n aXQgYS9saWIvbmV0L3J0ZV9pcC5oIGIvbGliL25ldC9ydGVfaXAuaA0KPj4+PiBpbmRleCBiNTAy NDgxNjcwLi5hOWU2MjUxZjE0IDEwMDY0NA0KPj4+PiAtLS0gYS9saWIvbmV0L3J0ZV9pcC5oDQo+ Pj4+ICsrKyBiL2xpYi9uZXQvcnRlX2lwLmgNCj4+Pj4gQEAgLTE2MCwxOCArMTYwLDIzIEBAIHJ0 ZV9pcHY0X2hkcl9sZW4oY29uc3Qgc3RydWN0IHJ0ZV9pcHY0X2hkcg0KPj4+PiAqaXB2NF9oZHIp DQo+Pj4+ICAgIHN0YXRpYyBpbmxpbmUgdWludDMyX3QNCj4+Pj4gICAgX19ydGVfcmF3X2Nrc3Vt KGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGxlbiwgdWludDMyX3Qgc3VtKQ0KPj4+PiAgICB7DQo+ Pj4+IC0JLyogZXh0ZW5kIHN0cmljdC1hbGlhc2luZyBydWxlcyAqLw0KPj4+PiAtCXR5cGVkZWYg dWludDE2X3QgX19hdHRyaWJ1dGVfXygoX19tYXlfYWxpYXNfXykpIHUxNl9wOw0KPj4+PiAtCWNv bnN0IHUxNl9wICp1MTZfYnVmID0gKGNvbnN0IHUxNl9wICopYnVmOw0KPj4+PiAtCWNvbnN0IHUx Nl9wICplbmQgPSB1MTZfYnVmICsgbGVuIC8gc2l6ZW9mKCp1MTZfYnVmKTsNCj4+Pj4gKwljb25z dCB2b2lkICplbmQ7DQo+Pj4NCj4+PiBJIHdvdWxkIHNldCAiZW5kIiBoZXJlIGluc3RlYWQsIHBv c3NpYmx5IG1ha2luZyB0aGUgcG9pbnRlciBjb25zdA0KPj4gdG9vLiBBbmQgYWRkIHNwYWNlcyBh cm91bmQgJy8nLg0KPj4+IGNvbnN0IHZvaWQgKiBjb25zdCBlbmQgPSBSVEVfUFRSX0FERChidWYs IChsZW4gLyBzaXplb2YodWludDE2X3QpKSAqDQo+PiBzaXplb2YodWludDE2X3QpKTsNCj4+Pg0K Pj4NCj4+IEkgZG9uJ3QgdGhpbmsgdGhhdCBtYWtlcyB0aGUgY29kZSBtb3JlIHJlYWRhYmxlLg0K PiANCj4gSXQncyBvbmx5IGEgbWF0dGVyIG9mIHRhc3RlLi4uIFlvdXIgY29kZSwgeW91ciBkZWNp c2lvbi4gOi0pDQo+IA0KPiBJIHRoaW5rIHRoZSBzcGFjZXMgYXJlIHJlcXVpcmVkIGJ5IHRoZSBj b2Rpbmcgc3RhbmRhcmQ7IG5vdCBzdXJlLCB0aG91Z2guDQo+IA0KDQpJZiBpdCBpc24ndCBpbiB0 aGUgY29kaW5nIHN0YW5kYXJkLCBpdCBzaG91bGQgYmUuIEJ1dCBpZiB5b3UgYWRkIHNwYWNlcywg DQp5b3UgaGF2ZSB0byBicmVhayB0aGUgbGluZSwgdG8gZml0IGludG8gODAgY2hhcmFjdGVycy4g QSBuZXQgbG9zcywgSU1PLg0KDQo+Pg0KPj4+Pg0KPj4+PiAtCWZvciAoOyB1MTZfYnVmICE9IGVu ZDsgKyt1MTZfYnVmKQ0KPj4+PiAtCQlzdW0gKz0gKnUxNl9idWY7DQo+Pj4+ICsJZm9yIChlbmQg PSBSVEVfUFRSX0FERChidWYsIChsZW4vc2l6ZW9mKHVpbnQxNl90KSkgKg0KPj4+PiBzaXplb2Yo dWludDE2X3QpKTsNCj4+Pj4gKwkgICAgIGJ1ZiAhPSBlbmQ7IGJ1ZiA9IFJURV9QVFJfQUREKGJ1 Ziwgc2l6ZW9mKHVpbnQxNl90KSkpIHsNCj4+Pj4gKwkJdWludDE2X3QgdjsNCj4+Pj4gKw0KPj4+ PiArCQltZW1jcHkoJnYsIGJ1Ziwgc2l6ZW9mKHVpbnQxNl90KSk7DQo+Pj4+ICsJCXN1bSArPSB2 Ow0KPj4+PiArCX0NCj4+Pj4NCj4+Pj4gICAgCS8qIGlmIGxlbmd0aCBpcyBvZGQsIGtlZXBpbmcg aXQgYnl0ZSBvcmRlciBpbmRlcGVuZGVudCAqLw0KPj4+PiAgICAJaWYgKHVubGlrZWx5KGxlbiAl IDIpKSB7DQo+Pj4+ICsJCXVpbnQ4X3QgbGFzdDsNCj4+Pj4gICAgCQl1aW50MTZfdCBsZWZ0ID0g MDsNCj4+Pj4gLQkJKih1bnNpZ25lZCBjaGFyICopJmxlZnQgPSAqKGNvbnN0IHVuc2lnbmVkIGNo YXIgKillbmQ7DQo+Pj4+ICsNCj4+Pj4gKwkJbWVtY3B5KCZsYXN0LCBlbmQsIDEpOw0KPj4+PiAr CQkqKHVuc2lnbmVkIGNoYXIgKikmbGVmdCA9IGxhc3Q7DQo+Pj4NCj4+PiBDb3VsZG4ndCB5b3Ug anVzdCBtZW1jcHkoJmxlZnQsIGVuZCwgMSksIGFuZCBvbWl0IHRoZSB0ZW1wb3JhcnkNCj4+IHZh cmlhYmxlICJsYXN0Ij8NCj4+Pg0KPj4NCj4+IEdvb2QgcG9pbnQuDQo+Pg0KPj4gSSBkb24ndCBs aWtlIGhvdyB0aGlzIGNvZGUgaXMgY2xldmVyIHZpcy3DoC12aXMgYnl0ZSBvcmRlciwgYnV0IHRo ZW4gSQ0KPj4gYWxzbyBkb24ndCBoYXZlIGEgYmV0dGVyIHN1Z2dlc3Rpb24uDQo+IA0KPiBUaGUg Ynl0ZSBvcmRlcmluZyBjbGV2ZXJuZXNzIGhhcyBpdHMgcm9vdHMgaW4gUkZDIDEwNzEuDQo+IA0K PiBTdGVwaGVuIHN1Z2dlc3RlZCB1c2luZyBhIHVuaW9uLCBhbHRob3VnaCBpbiBhIHNsaWdodGx5 IGRpZmZlcmVudCBjb250ZXh0LiBJJ20gbm90IHN1cmUgaXQgd2lsbCBiZSBtb3JlIHJlYWRhYmxl IGhlcmUsIGJlY2F1c2UgaXQgd2lsbCByZXF1aXJlICNpZmRlZiB0byBzdXBwb3J0IGJ5dGUgb3Jk ZXJpbmcuIEp1c3QgdGhvdWdodCBJJ2QgbWVudGlvbiBpdCwgZm9yIHlvdXIgY29uc2lkZXJhdGlv bi4NCj4gDQo+IFlvdXIgcGF0Y2ggdjIganVzdCByZWFjaGVkIG15IGluYm94LCBhbmQgaXQgbG9v a3MgZ29vZC4gTm8gZnVydGhlciByZXNwb25zZSB0byB0aGlzIGVtYWlsIGlzIGV4cGVjdGVkLg0K PiANCg0K