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=-1.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_PASS 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 226D0C43381 for ; Tue, 26 Feb 2019 13:35:17 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id DA79021841 for ; Tue, 26 Feb 2019 13:35:16 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=Mellanox.com header.i=@Mellanox.com header.b="lH06ATgz" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726624AbfBZNfP (ORCPT ); Tue, 26 Feb 2019 08:35:15 -0500 Received: from mail-eopbgr40058.outbound.protection.outlook.com ([40.107.4.58]:56736 "EHLO EUR03-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1725977AbfBZNfP (ORCPT ); Tue, 26 Feb 2019 08:35:15 -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=ac6CY8OVaS3UJRwKiTd715TvsXmpgYkn6BxY5Kz/B6k=; b=lH06ATgzuFGEDxK7qXWfTKPsDWcIKXCt71l4Zg4NPgznu5jyvKNuLZ7nEMiQyluXT+DP9bX7uBCw9mlai2TWA2myetp6lLeDkzPu9JIkXVnhghsGu3kYm3x5+rkbiT/nB9ZSRLn4TMRWwIbzeBdy+I+g1fVsleGwnl5q7JzJAqE= Received: from VI1PR05MB5085.eurprd05.prod.outlook.com (20.177.52.86) by VI1PR05MB6478.eurprd05.prod.outlook.com (20.179.26.151) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1643.16; Tue, 26 Feb 2019 13:35:09 +0000 Received: from VI1PR05MB5085.eurprd05.prod.outlook.com ([fe80::cd57:7e12:16e:bec7]) by VI1PR05MB5085.eurprd05.prod.outlook.com ([fe80::cd57:7e12:16e:bec7%2]) with mapi id 15.20.1643.019; Tue, 26 Feb 2019 13:35:09 +0000 From: Yossi Kuperman To: Marcelo Leitner CC: Guy Shattah , Aaron Conole , John Hurley , Simon Horman , Justin Pettit , Gregory Rose , Eelco Chaudron , Flavio Leitner , Florian Westphal , Jiri Pirko , Rashid Khan , Sushil Kulkarni , Andy Gospodarek , Roi Dayan , Or Gerlitz , Rony Efraim , "davem@davemloft.net" , Paul Blakey , "netdev@vger.kernel.org" , Oz Shlomo Subject: Re: Yet another approach for implementing connection tracking offload Thread-Topic: Yet another approach for implementing connection tracking offload Thread-Index: AQHUx7wxmwNHJesb1k2crdFOpXhXn6Xsax4AgAW1kgA= Date: Tue, 26 Feb 2019 13:35:08 +0000 Message-ID: References: <65CD6CF6-C50F-47F7-85DB-12D480FA4712@mellanox.com> <20190222222354.GV10660@localhost.localdomain> In-Reply-To: <20190222222354.GV10660@localhost.localdomain> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: AM6PR06CA0032.eurprd06.prod.outlook.com (2603:10a6:20b:14::45) To VI1PR05MB5085.eurprd05.prod.outlook.com (2603:10a6:803:61::22) authentication-results: spf=none (sender IP is ) smtp.mailfrom=yossiku@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [193.47.165.251] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 7155b2eb-6d19-4346-7885-08d69bef39ae x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600127)(711020)(4605104)(4618075)(2017052603328)(7153060)(7193020);SRVR:VI1PR05MB6478; x-ms-traffictypediagnostic: VI1PR05MB6478: x-microsoft-exchange-diagnostics: =?utf-8?B?MTtWSTFQUjA1TUI2NDc4OzIzOit3S1ZBREJCVkhkWCtHcE1udGFlZmRJd2xk?= =?utf-8?B?Zk1aVmU1cTJZNW1sKzY5Z1ZBMXE0L3BvQjhySkRtWGFWNmQ1WW53SzREdE0x?= =?utf-8?B?L3JCZlR2T2ZtQ29mQjB6L0h2bXVrZVZxRTZMSURwS2tLclJVcWg5N0JxYXFX?= =?utf-8?B?SElOZGtad2Y1M2VkdW9CTTlqN0kwdzUyU20xUjFDMXZ5Q2tsdUx3eThIZnFT?= =?utf-8?B?bHExU3Z4WGxwQnJmMlNlZm1KdVhsY3g2cVBoaitNS2o0c1M5SXBhbDh6MGpZ?= =?utf-8?B?K3UxM1ZMOGxxaCthV0NsS0puRXAxNkxMakdxS0cwTEU1VVljNFBBREtPQ1JS?= =?utf-8?B?S21PZHFiL1c1ZGNjQ09vM3lvVTJhYWsycldUNjJyNmVwTTZBQW9nSlVaMUg2?= =?utf-8?B?SkdTOUFEUDdvTGMrNnQwaUhnRTN0V0xYTHFzR3hJaVc2OXl2WkpxVFZkMWli?= =?utf-8?B?dUhzNzBGQVZJZGFyb3U5azZIanFuZS9oL1pMamtUMEhwZXQ0bk9GcFpCUXFn?= =?utf-8?B?bmpzdEVxbmRDY1FxOHlZaGtqQitBVzExSllkaHdjRTA4bUl4N3FwZVRmTk5z?= =?utf-8?B?a1JBcEhSMGJFVk5LWkcxMzc1a3J3VmZOa2FIVmtMNlp0dkI4SnVHcGZUMXgx?= =?utf-8?B?dmlVdksrRGtNcnNFai9RRlNzMUw1d0FENlMyak1iZFVKNEQ0aGZDYVZaMTI1?= =?utf-8?B?aSszN1orbjlKQWhHYlowbnhmVTJhMTE0RFBMdnljVFJGa2RYTlU0RDBuby9q?= =?utf-8?B?dmhGZnl2MG5uSlpnd3lhcHNCTitrWnd4bVRDRUNyMmlIbG5pZG9JdFUrSVJS?= =?utf-8?B?M2dmSHdLWU5xb2lVeHU3STl0ZWxpdytkbmVCSG5wcG1uSFVHZW1pM2puWnlW?= =?utf-8?B?cFY3WW9weWNhVmRlZVVnUHRaTlpUNVhaZTR5YllOeVQ4djFFNkIvN0dNY1Va?= =?utf-8?B?ZmF2U0U1MTJmNFRtZjNjbGhQUHJRUnFvYkZMaWZIamRLWE0veFJFNlQwaDlq?= =?utf-8?B?M3ZIYXBScXd0RkY0dTd0bnNLZ0hPbEUxRHhBbVBLTjhkNitZZjl2bGpkRWhQ?= =?utf-8?B?YnhHVjRnSXRYVzNxTHptUU5NT1A0WmZJKzdlUlZEUGJReUthb3dpVWpTLzRo?= =?utf-8?B?MnN6akdTdStZWHpJbncxOEo2eTVvYXpUcEJZVk81TElQY05zOERqVmxOcHcr?= =?utf-8?B?QTVCR2gzZ1F1Mmh1UERJYnBPd2dvTTBxWnpVYVNiVDVsVHY3MmxDNUEydGNT?= =?utf-8?B?VnhOdjdzQUVsUm9KZG5PM202aUpEbDZVaElRUXhlbHR5NUFteGkwMWFIMThl?= =?utf-8?B?UGVhSW94NmVNeDhTaWdvdE1MR1N6Y2o2OFFocUtxenVGR0hUQlp1S3VDQ2cw?= =?utf-8?B?dUxoUXBWVmYyWFpDYVFrRC9vY0ROQXNmYk92VGtidncwM3hSVG5wRHJXbytt?= =?utf-8?B?RmtRMGcvYTIreXE4RGZ5UUZFckJRRzAxTE5IbEFIdjNRZU56MEpsWlJWYnVC?= =?utf-8?B?QTBrd1EwSlRCVGNUY1dML1NKb2RlVHU2bW54YlRPKzkwV2hPbWdlcmUzYWJ4?= =?utf-8?B?K0UrRmdPKzliaGhLMGVlcGdWbG5FZEJnbzJyZndIY2lJZzY1bFVCTlh5dCtT?= =?utf-8?B?bC9JN3BRS29vdXJlTWdTWDl1OHVtS3lEWVdpWnE4QitCSnJRQjVPRTlmbVFQ?= =?utf-8?B?T2E0eHpVOTV3aTdhdUdBWlZYcGcvUzIzd1liL0dBM0xqNTg1T0pHYTNvOXBJ?= =?utf-8?B?cUR3MjJKeVhPK2Z1ZHdoRVVhM3B4QXhuOUs1bDUxNGdGOU9ZVGU0Z0g3NDNS?= =?utf-8?B?dWx1TUlwUElndTNlMC9CbHpFTjBEWDEweWViMTd1cnU3YUE9PQ==?= x-microsoft-antispam-prvs: x-forefront-prvs: 096029FF66 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(346002)(376002)(39860400002)(366004)(136003)(396003)(53754006)(199004)(189003)(102836004)(5660300002)(3846002)(14444005)(8936002)(6116002)(256004)(71190400001)(6506007)(386003)(53546011)(31686004)(6246003)(229853002)(6512007)(71200400001)(14454004)(81156014)(81166006)(6436002)(26005)(2906002)(107886003)(99286004)(86362001)(31696002)(7416002)(6916009)(486006)(4326008)(446003)(11346002)(54906003)(66066001)(316002)(476003)(106356001)(53936002)(478600001)(105586002)(7736002)(305945005)(6486002)(8676002)(68736007)(52116002)(25786009)(2616005)(186003)(36756003)(76176011)(97736004);DIR:OUT;SFP:1101;SCL:1;SRVR:VI1PR05MB6478;H:VI1PR05MB5085.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: rNhqwgq48HKlU1bykNgG8C1sJdvD8Mqv4I6DexTFGLwylVSvEoKLPbmVMuYO8ZDMxlquvu/1uG89UvjH40Bhen0XYE7yN58pFQwVjW96KOymUQuAO9Hq0DfbFPsO4+4h3MUK6r56xNYLNvD1vRZW9xC7CKuhXzsiwTUFeO2BZ+69gpSVAUhCWIGhw+2Ebm68sOiUIPn9IVlFw/xaV+OBI7Yh3Ru19Gwohdkbm1daqolAl2Ub0xW3heDPwgoX31WZ5kJ2YuBUoig8/jHrFhC8F/QL2lCUu5GDAdXBMNWskaF7r6UKw5JKuqfGFgqu3rR7fiz5L9yVhxMFsI/p7aeuhEOiuBrYqV1gIuA1XtGnJJXMOQ/68EUVD8uDXbbn1R+YF9qYcmP/9zTX3KM9omK2vxUAZt6GJrVdAu32kEntPIY= Content-Type: text/plain; charset="utf-8" Content-ID: <3F2873F557B7A146BF67CB6467754C3A@eurprd05.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7155b2eb-6d19-4346-7885-08d69bef39ae X-MS-Exchange-CrossTenant-originalarrivaltime: 26 Feb 2019 13:35:06.1230 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB6478 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org DQpPbiAyMy8wMi8yMDE5IDA6MjMsIE1hcmNlbG8gTGVpdG5lciB3cm90ZToNCj4gT24gTW9uLCBG ZWIgMTgsIDIwMTkgYXQgMDc6MDA6MTlQTSArMDAwMCwgWW9zc2kgS3VwZXJtYW4gd3JvdGU6DQo+ PiBIZWxsbyBBbGwsDQo+Pg0KPj4gRm9sbG93aW5nIGlzIGEgZGVzY3JpcHRpb24gb2YgeWV0IGFu b3RoZXIgcG9zc2libGUgYXBwcm9hY2ggdG8NCj4+IGltcGxlbWVudCBjb25uZWN0aW9uIHRyYWNr aW5nIG9mZmxvYWQuIFdlIHdvdWxkIGxpa2UgdG8gaGVhciB5b3VyDQo+PiBvcGluaW9uLiBUaGVy ZSBpcyB0aGUg4oCcbmF0aXZl4oCdIHdheSBvZiBpbXBsZW1lbnRpbmcgc3VjaCBhbiBvZmZsb2Fk DQo+PiBieSBtaXJyb3JpbmcgdGhlIHNvZnR3YXJlIHRhYmxlcyB0byBoYXJkd2FyZS4gVGhpcyB3 YXkgc2VlbXMNCj4+IHN0cmFpZ2h0Zm9yd2FyZCBhbmQgc2ltcGxlLCBidXQgcmVhbCBsaWZlIGlz IG11Y2ggbW9yZSBjb21wbGljYXRlZA0KPj4gdGhhbiB0aGF0LiBBbHRlcm5hdGl2ZWx5LCB3ZSBj YW4gbWVyZ2UgdGhlIGRhdGEtcGF0aCBmbG93cw0KPj4gKHNlcGFyYXRlZCBieSByZWNpcmNfaWQp IGFuZCBvZmZsb2FkIGEgc2luZ2xlIGZsb3cgdG8gaGFyZHdhcmUuDQo+PiAgIA0KPj4gVGhlIGdl bmVyYWwgaWRlYSBpcyBxdWl0ZSBzaW1wbGUuIFdoZW4gT1ZTLWRhZW1vbiBjb25maWd1cmVzIFRD IHdpdGgNCj4+IGEgZmlsdGVyIHRoYXQgcmVjaXJjdWxhdGUsIHRoZSBkcml2ZXIgbWVyZWx5IHBy ZXRlbmRzIHRvIG9mZmxvYWQgaXQNCj4+IGFuZCByZXR1cm4gc3VjY2Vzcy4gVXBvbiBwYWNrZXQg YXJyaXZhbCAoaW4gc29mdHdhcmUpIHdlIGxldCBpdA0KPiBUaGlzIGhhcyBwb3RlbnRpYWwgdG8g YmUgYSBzdXBwb3J0IG5pZ2h0bWFyZTogdGhpbmdzIHRoYXQgc2hvdWxkIGFuZA0KPiBzZWVtcyB0 byBiZSBidXQgYXJlIGFjdHVhbGx5IG5vdCBhbmQgZXhwZWN0ZWQgbm90IHRvIGJlLg0KPiBJT1cs IG5vdF9pbl9odyBzaG91bGQgc3RpbGwgYmUgdGhlcmUgc29tZWhvdy4NCg0KQWdyZWUsIHdlIHNo b3VsZCBoYW5kbGUgdGhpcyBwcm9wZXJseS4NCg0KUGxlYXNlIG5vdGUgd2UgaGF2ZSBhIHNpbWls YXIgYmVoYXZpb3Igd2l0aCBNVC4gRnJvbSBUQyBwZXJzcGVjdGl2ZSBpdA0KDQptYXkgc2VlbSB0 aGF0IGV2ZXJ5dGhpbmcgaXMgb2ZmbG9hZGVkIChpbl9odyksIGJ1dCB3ZSB3aWxsIGVuY291bnRl ciBhDQoNCm1pc3MgZm9yIGV2ZXJ5IG5ldyBjb25uZWN0aW9uLg0KDQoNCj4+IHRyYXZlcnNlIFRD IGFzIHVzdWFsLCBleGNlcHQgZm9yIG5vdyB3ZSBub3RpZnkgdGhlIGRyaXZlciBvbiBlYWNoDQo+ PiBzdWNjZXNzZnVsIG1hdGNoLiBCeSBkb2luZyB0aGlzLCB0aGUgZHJpdmVyIGhhcyBhbGwgdGhl IG5lY2Vzc2FyeQ0KPj4gaW5mb3JtYXRpb24gdG8gbWVyZ2UgdGhlIHBhcnRpY2lwYXRpbmcgZmxv d3MtLS1pbmNsdWRpbmcgY29ubmVjdGlvbg0KPj4gdHJhY2tpbmcgNS10dXBsZS0tLWludG8gb25l IGVxdWl2YWxlbnQgZmxvdy4gV2UgZG8gc3VjaCBhIG1lcmdlIGFuZA0KPj4gb2ZmbG9hZCBvbmx5 IGlmIHRoZSBjb25uZWN0aW9uIGlzIGVzdGFibGlzaGVkLiBOb3RlOiB0aGUgc2FtZQ0KPj4gbWVj aGFuaXNtIHRvIGNvbW11bmljYXRlIGEgNS10dXBsZSB0byB0aGUgZHJpdmVyIGNhbiBiZSB1c2Vk IHRvDQo+PiBub3RpZnkgb24gYSBmaWx0ZXIgbWF0Y2guDQo+PiAgIA0KPj4gSXQgaXMgdGhlIGRy aXZlciByZXNwb25zaWJpbGl0eSB0byBidWlsZCBhbmQgbWFpbnRhaW4gdGhlIGxpc3Qgb2YNCj4+ IGZpbHRlcnMgYSAoc3BlY2lmaWMpIHBhY2tldCBoaXQgYWxvbmcgdGhlIFRDIHdhbGsuIE9uY2Ug d2UgcmVhY2ggdGhlDQo+IEknbSBhc3N1bWluZyB0aGlzIGNvdWxkIGJlIGEgc2hhcmVkIGNvZGUg YW1vbmdzdCB0aGUgZHJpdmVycywgbGlrZQ0KPiBESU0uIFdlIHJlYWxseSBkb24ndCB3YW50IGRp ZmZlcmVudCBhbGdvcml0aG1zIGZvciB0aGlzLg0KPiBXaXRoIHRoYXQsIHdlIHdvdWxkIGJlIHVz aW5nIHRoZSBkcml2ZXIgYXMganVzdCBhIHRlbXBvcmFyeSBzdG9yYWdlLA0KPiBmb3IgdGhlIG1h dGNoZXMvYWN0aW9ucy4gTWF5YmUgd2UgY2FuIGRvIHRoYXQgd2l0aCBza2IgZXh0ZW5zaW9ucz8N Cj4NCj4gTGlrZSwgdHVybiBvbiBhIGZsaWdodCByZWNvcmRlciBleHRlbnRpb24gYW5kIGhhdmUg b25lIGVzcGVjaWFsIGxhc3QNCj4gdGMgYWN0aW9uIChvciBldmVuIGVtYmVkIGl0IGludG8gY29y ZSB0YykgdG8gcHJvY2VzcyBpdCB3aGVuIHRoZQ0KPiB0cmF2ZXJzaW5nIGZpbmlzaGVzLiBBbmQg b25seSB0aGVuIGNhbGwgdGhlIGRyaXZlciB0byB1cGRhdGUgd2hhdGV2ZXINCj4gaXMgbmVlZGVk Lg0KPg0KSXQgaXMgYSBwb3NzaWJpbGl0eS4NCg0KDQo+PiBsYXN0IGZpbHRlciAoYSB0ZXJtaW5h dGluZyBvbmUsIGUuZy4sIGZvcndhcmQpIHRoZSBkcml2ZXIgcG9zdHMgYQ0KPj4gd29yayBvbiBh IGRlZGljYXRlZCB3b3JrLXF1ZXVlLiBJbiB0aGlzIHdvcmstcXVldWUgY29udGV4dCwgd2UgbWVy Z2UNCj4+IHRoZSBwYXJ0aWNpcGF0aW5nIGZpbHRlcnMgYW5kIGNyZWF0ZSBhIG5ldyBmaWx0ZXIg dGhhdCBpcyBsb2dpY2FsbHkNCj4+IGVxdWFsIChtYXRjaCArIGFjdGlvbnMpLiBUaGUgbWVyZ2Ug aXRzZWxmIGlzIG5vdCBjb21wbGljYXRlZCBhcyBpdA0KPj4gbWlnaHQgc2VlbXPigJRUQyBkb2Vz IGFsbCB0aGUgaGVhdnkgbGlmdGluZywgdGhpcyBpcyBub3QgYSByYW5kb20gbGlzdA0KPj4gb2Yg ZmlsdGVycy4gQXQgdGhpcyBwb2ludCwgd2UgY29uZmlndXJlIHRoZSBoYXJkd2FyZSB3aXRoIG9u ZQ0KPj4gZmlsdGVyLCBlaXRoZXIgd2UgaGF2ZSBhIG1hdGNoIGFuZCB0aGUgcGFja2V0IGlzIGhh bmRsZWQgYnkgdGhlDQo+PiBoYXJkd2FyZSwgb3Igd2UgZG9u4oCZdCBhbmQgdGhlIHBhY2tldCBn b2VzIHRvIHNvZnR3YXJlIHVubW9kaWZpZWQuDQo+PiAgIA0KPj4gR29pbmcgYWxvbmcgdGhpcyBw YXRoIHdlIG11c3QgdGFja2xlIHR3byB0aGluZ3M6IDEpIGNvdW50ZXJzIGFuZCAyKQ0KPj4gVEMg ZmlsdGVyIGRlbGV0aW9uLiAxKSBXZSBtdXN0IG1haW50YWluIFRDIGNvdW50ZXJzIGFzIHRoZSB1 c2VyDQo+PiBleHBlY3QuIEVhY2ggbWVyZ2VkIGZpbHRlciBob2xkcyBhIGxpc3Qgb2YgZmlsdGVy cyBpdCBpcyBkZXJpdmVkDQo+PiBmcm9tLCBwYXJlbnRzLiBPbmNlIGFuIHVwZGF0ZSBpcyBhdmFp bGFibGUgZm9yIGEgbWVyZ2VkIGZpbHRlcg0KPj4gY291bnRlciwgdGhlIGRyaXZlciBtdXN0IHVw ZGF0ZSB0aGUgY29ycmVzcG9uZGluZyBwYXJlbnRzDQo+PiBhcHByb3ByaWF0ZWx5LiAyKSBVcG9u IFRDIGZpbGVyIGRlbGV0aW9uIGl0IGlzIG1hbmRhdG9yeSB0byByZW1vdmUNCj4+IGFsbCB0aGUg ZGVyaXZlZCAobWVyZ2VkKSBmaWx0ZXJzIGZyb20gdGhlIGhhcmR3YXJlIGFzIGNvbnNlcXVlbmNl Lg0KPiBJJ20gZmFpbGluZyB0byBzZWUgaG93IHRoaXMgd291bGQgYWRkcmVzcyB0d28gZmVhdHVy ZXMgb2YgQ1Q6DQo+DQo+IC0gd2luZG93IHZhbGlkYXRpb24uIEhvdyB3b3VsZCB0aGUgY2FyZCBr bm93IHRoYXQgaXQgc2hvdWxkIHBlcmZvcm0NCj4gICAgd2luZG93IHZhbGlkYXRpb24gb24gdGhl c2UgcGFja2V0cz8NCg0KVGhlIGRyaXZlciBzaG91bGQgYWxsb2NhdGUgYSBjb250ZXh0IGFuZCBt YXBwZWQgaXQgYXBwcm9wcmlhdGVseSwgc2ltaWxhcg0KDQp3YXkgb25lIHNob3VsZCBkbyBmb3Ig dGhlIE1UIGFwcHJvYWNoLiBJdCBpcyBwb3NzaWJsZSB0aGF0IG9uZSBjb250ZXh0DQoNCmlzIHNo YXJlZCBiZXR3ZWVuIHR3byBvciBtb3JlIG1lcmdlZCBmbG93cy4gQ29udGV4dCBob2xkcyBUQ1Ag c3RhdGUNCg0KaW4gaGFyZHdhcmUuDQoNCj4gLSBmbG93IHN0YXRzLiBJZiBpdCBvZmZsb2FkcyB0 aGUgcmVzdWx0IG9mIGEgbWVyZ2UsIGhvdyBjYW4gaXQNCj4gICAgcmV0cmlldmUgdGhlIHNwZWNp ZmljIHN0YXRzIGZvciBlYWNoIDUtdHVwbGU/IEV2ZW4gd2l0aCB0aGUgbGlzdHMNCj4gICAgeW91 IG1lbnRpb25lZCwgb25jZSB0aGUgNS10dXBsZXMgYXJlIGFnZ3JlZ2F0ZWQsIHdlIGNhbid0IHNl cGFyYXRlDQo+ICAgIHRoZW0gYW55bW9yZS4NCg0KRWFjaCBtZXJnZWQgZmxvdyBtYWludGFpbnMg YSBsaXN0IG9mIGZsb3dzIGl0IGlzIGRlcml2ZWQgZnJvbSwgaW5jbHVkaW5nDQoNCmFueSA1LXR1 cGxlIGludm9sdmVkLiBXZSBzdGlsbCBoYXZlIGFuIGVudHJ5IGZvciBlYWNoIDUtdHVwbGUgaW4g dGhlIGRyaXZlciwNCg0KYW5kIHdlIGtlZXAgaXQgdXAtdG8tZGF0ZSBiYXNlZCBvbiBzdGF0aXN0 aWNzIGZyb20gcmVsYXRlZCBtZXJnZWQgZmxvd3MuDQoNClVwcGVyIGxheWVycyBjYW4gcXVlcnkg dGhlIGRyaXZlciBmb3IgdGhlIHJlbGV2YW50IGluZm9ybWF0aW9uIGdpdmVuIGEgDQo1LXR1cGxl Lg0KDQoNCkFtIEkgbWlzc2luZyBzb21ldGhpbmc/DQoNCj4+ICAgDQo+PiAgIA0KPj4gUHJvcyAm IENvbnMNCj4+ICAgDQo+PiBQcm9zOiAxKSBDaXJjdW12ZW50IHRoZSBjb21wbGV4aXR5IGludm9s dmVkIHdpdGggY29udGludWF0aW9uIGluDQo+PiBzb2Z0d2FyZSB3aGVyZSB0aGUgaGFyZHdhcmUg bGVmdCBvZmYuIDIpIFNpbXBsaWZpZXMgdGhlIGhhcmR3YXJlDQo+PiBwaXBlbGluZSB3aXRoIG9u bHkgb25lIGZpbHRlciBhbmQgbWlnaHQgaW1wcm92ZSB0aGUgb3ZlcmFsbA0KPj4gcGVyZm9ybWFu Y2UuDQo+PiAgIA0KPj4gQ29uczogMSkgT25seSBhcHBsaWNhYmxlIHRvIE9WUy1vcmllbnRlZCBm aWx0ZXJzLCB3aWxsIG5vdCBzdXBwb3J0DQo+PiBwcmlvcml0aWVzIGFuZCBvdmVybGFwcGluZyBm aWx0ZXJzLiAyKSBNZXJnZXIgbG9naWMgbWlnaHQgY29uc3VtZQ0KPj4gQ1BVIGN5Y2xlcyB3aGlj aCBtaWdodCBpbXBhY3QgdGhlIHJhdGUgb2YgZmlsdGVycyB3ZSBjYW4gb2ZmbG9hZC4NCj4+IEhv d2V2ZXIsIHRoaXMgb3ZlcmhlYWQgaXMgYmVsaWV2ZWQgdG8gYmUgbmVnbGlnaWJsZSwgaWYgaW1w bGVtZW50ZWQNCj4+IGNhcmVmdWxseS4gMykgUmVxdWlyZXMgVEMvZmxvd2VyIHRvIG5vdGlmeSB0 aGUgZHJpdmVyIG9uIGVhY2ggZmlsdGVyDQo+PiBtYXRjaCAodGhhdCBpcyB0aGUgb25seSBjaGFu Z2UgbmVlZGVkIGFib3ZlIHRoZSBkcml2ZXIpLg0KPiBPbiBtb3JlIGdlbmVyYWwgY29tbWVudHMs IEkgaGF2ZSB0aGUgZmVlbGluZyB0aGF0IHRoaXMgd291bGQgYmUgYmVzdA0KPiBkb25lIGluIE92 UzoNCj4gLSBpdCBoYXMgMiBmbG93ICJ0cmFuc2xhdGlvbnMiOiBvbmUgZnJvbSBPcGVuRmxvdyB0 byBPdlMvdGMgc3cNCj4gICAgZGF0YXBhdGgsIGFuZCB0aGVuIE92Uy90YyBzdyB0byBody4gSWYg dGhlIHJlc3VsdGluZyBmbG93cyBhcmUNCj4gICAgYmV0dGVyIGZvciB0aGUgaHcsIGFyZW4ndCB0 aGVtIGJldHRlciBmb3Igc3cgZGF0YXBhdGggdG9vPw0KDQpBIHZhbGlkIHBvaW50LiBJJ20gbm90 IHN1cmUgYnkgaG93IG11Y2ggaXQgd2lsbCBpbXByb3ZlIHRoZSBzbG93LXBhdGgNCg0KcGVyZm9y bWFuY2UsIGJ1dCBpdCB3aWxsIHN1cmVseSBjb21wbGljYXRlIHRoZSBjb2RlLiBEb2luZyB0aGlz ICJ0cmljayINCg0KZGVmaW5pdGVseSBpbXByb3ZlcyB0aGUgaGFyZHdhcmUgcGVyZm9ybWFuY2Uu DQoNCj4gLSBpZiB0aGlzIGlzIGZvciBPdlMtb3JpZW50ZWQgZmlsdGVycywgd2h5IGNhbid0L3No b3VsZG4ndCBPdlMgZG8gdGhpcw0KPiAgICBwcm9jZXNzaW5nIGluc3RlYWQ/DQo+DQpJdCBpcyBz b21ldGhpbmcgd2UgaGF2ZSBjb25zaWRlcmVkIGJlZm9yZSwgYXMgaXQgbWFrZXMgc2Vuc2UuIEhv d2V2ZXIsDQoNCmdvaW5nIHRoaXMgd2F5IG1lYW5zIGZvciBldmVyeSBuZXcgY29ubmVjdGlvbiAo ZGlmZmVyZW50IDUtdHVwbGUpIGEgY29zdGx5DQoNCiJ0cmF2ZWwiIHRvIE9WUyB1c2VyLXNwYWNl Lg0KDQo+IFNvbWVob3cgSSBrZWVwIHRoaW5raW5nIHRoaXMgaXMgcmVwbGFjaW5nIGNvbm50cmFj ayAoYXMgaW4gdGhlDQo+IGNvbm50cmFjayBzdWJzeXN0ZW0pIHdpdGggaXBzZXQgb2ZmbG9hZGlu Zy4NCj4NCj4gQWxsIGluIGFsbCwgYW55IGFwcHJvYWNoIGlzIHByb2JhYmx5IGZpbmUgYnV0IEkn bSBzdHJ1Z2dsaW5nIHRvIHNlZSBhDQo+IHBhdGggZm9yd2FyZCBmcm9tIHRoaXMgdG8gYWN0dWFs IENUIG9mZmxvYWRpbmcuIE1heWJlIEkgbWlzc2VkDQo+IHNvbWV0aGluZy4NCj4gQ2hlZXJzLA0K PiBNYXJjZWxvDQo+DQo+PiAgIA0KPj4gICANCj4+IEJvdGggYXBwcm9hY2hlcyBzaGFyZSB0aGUg c2FtZSBzb2Z0d2FyZSBtb2RlbCwgbW9zdCBvZiB0aGUgY29kZQ0KPj4gYWJvdmUgdGhlIGRyaXZl ciBpcyBzaGFyZWQuIFRoaXMgYXBwcm9hY2ggY2FuIGJlIGNvbnNpZGVyZWQNCj4+IHRlbXBvcmFy eSB1bnRpbCB0aGUgaGFyZHdhcmUgd2lsbCBtYXR1cmUuDQo+PiAgIA0KPj4gV2hhdCBkbyB5b3Ug dGhpbmsgYWJvdXQgdGhpcyBhcHByb2FjaD8NCj4+ICAgDQo+PiBJZiBzb21ldGhpbmcgaXMgbm90 IGNsZWFyIHBsZWFzZSBsZXQgbWUga25vdyBhbmQgSSB3aWxsIGRvIG15IGJlc3QNCj4+IHRvIGNs YXJpZnkuDQo+PiAgIA0KPj4gQ2hlZXJzLCBLdXBlcm1hbg0KPj4NCg==