From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by dpdk.org (Postfix) with ESMTP id DC5DA3238 for ; Thu, 3 May 2018 07:59:10 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga105.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 02 May 2018 22:59:09 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.49,356,1520924400"; d="scan'208";a="52803291" Received: from fmsmsx104.amr.corp.intel.com ([10.18.124.202]) by orsmga001.jf.intel.com with ESMTP; 02 May 2018 22:59:09 -0700 Received: from fmsmsx121.amr.corp.intel.com (10.18.125.36) by fmsmsx104.amr.corp.intel.com (10.18.124.202) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 2 May 2018 22:59:09 -0700 Received: from bgsmsx102.gar.corp.intel.com (10.223.4.172) by fmsmsx121.amr.corp.intel.com (10.18.125.36) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 2 May 2018 22:59:08 -0700 Received: from bgsmsx101.gar.corp.intel.com ([169.254.1.242]) by BGSMSX102.gar.corp.intel.com ([169.254.2.150]) with mapi id 14.03.0319.002; Thu, 3 May 2018 11:29:05 +0530 From: "Varghese, Vipin" To: "Yigit, Ferruh" , Ophir Munk , "dev@dpdk.org" , "pascal.mazon@6wind.com" , Thomas Monjalon , Olga Shern , Shahaf Shuler Thread-Topic: [dpdk-dev] [PATCH 1/2] net/tap: add tun support Thread-Index: AQHTypsdhempI7P0FUC67o3nf5WGVaP8tx0AgAFX1FCAC+KLgIAAAneAgAF1StCAAwYMAP//0qKAgA9wI8A= Date: Thu, 3 May 2018 05:59:05 +0000 Message-ID: <4C9E0AB70F954A408CC4ADDBF0F8FA7D4D1E7B9C@BGSMSX101.gar.corp.intel.com> References: <1519625719-10443-1-git-send-email-vipin.varghese@intel.com> <1522705068-18198-1-git-send-email-vipin.varghese@intel.com> <4C9E0AB70F954A408CC4ADDBF0F8FA7D4D1C8BAB@BGSMSX101.gar.corp.intel.com> <4C9E0AB70F954A408CC4ADDBF0F8FA7D4D1DFD5A@BGSMSX101.gar.corp.intel.com> <4C9E0AB70F954A408CC4ADDBF0F8FA7D4D1E3338@BGSMSX101.gar.corp.intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ctpclassification: CTP_NT x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiY2NlZDU1ZjUtZjZlNi00NDk4LTkyYWQtYWE4NzlhODljYTVmIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjIuNS4xOCIsIlRydXN0ZWRMYWJlbEhhc2giOiI1eDhGM016b2RmUUp2R0U2VmRCeDFDMVRramVQanM2d0s0bjFSRXNmckkrS1pnUytiMG1vcmpudmFCMHFZMm02In0= dlp-product: dlpe-windows dlp-version: 11.0.200.100 dlp-reaction: no-action x-originating-ip: [10.223.10.10] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH 1/2] net/tap: add tun support X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 May 2018 05:59:11 -0000 SGkgT3BoaXIsDQoNClNoYWxsIEkgaW52ZXN0aWdhdGUgYW5kIGltcGxlbWVudCB0aGUgc3VnZ2Vz dGlvbiBmcm9tIEZlcnJ1aCB0byB1c2UgdmFyaWFibGUgbG9naWM/DQoNClRoYW5rcw0KVmlwaW4g VmFyZ2hlc2UNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBZaWdpdCwg RmVycnVoDQo+IFNlbnQ6IE1vbmRheSwgQXByaWwgMjMsIDIwMTggOToxMiBQTQ0KPiBUbzogVmFy Z2hlc2UsIFZpcGluIDx2aXBpbi52YXJnaGVzZUBpbnRlbC5jb20+OyBPcGhpciBNdW5rDQo+IDxv cGhpcm11QG1lbGxhbm94LmNvbT47IGRldkBkcGRrLm9yZzsgcGFzY2FsLm1hem9uQDZ3aW5kLmNv bTsNCj4gVGhvbWFzIE1vbmphbG9uIDx0aG9tYXNAbW9uamFsb24ubmV0PjsgT2xnYSBTaGVybg0K PiA8b2xnYXNAbWVsbGFub3guY29tPjsgU2hhaGFmIFNodWxlciA8c2hhaGFmc0BtZWxsYW5veC5j b20+DQo+IFN1YmplY3Q6IFJlOiBbZHBkay1kZXZdIFtQQVRDSCAxLzJdIG5ldC90YXA6IGFkZCB0 dW4gc3VwcG9ydA0KPiANCj4gT24gNC8yMy8yMDE4IDE6NTggUE0sIFZhcmdoZXNlLCBWaXBpbiB3 cm90ZToNCj4gPiBIaSBPcGhpciwNCj4gPg0KPiA+IENhbiB5b3UgaGVscCBtZSB3aXRoIHRoZSBp bnZlc3RpZ2F0aW9uIHdpdGggdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbj8NCj4gPiAxKSBUaGUg a2VybmVsIG9yIGRpc3RybyBpbiB3aGljaCB0aGUgVEFQIHByb3RvIGZsYWcgc2V0IGJyZWFrcyB0 aGUgbG9naWM/DQo+IA0KPiBIaSBWaXBpbiwNCj4gDQo+IEkgZ3Vlc3MgT3BoaXIncyBwb2ludCBp cyBub3QgdGhpcyBpcyBicm9rZW4gd2l0aCBzb21lIGtlcm5lbHMgYnV0IGEgdmFsaWQgZmllbGQN Cj4gc2V0IHdyb25nIGZvciB0YXAsIHBlcmhhcHMgc29tZW9uZSBjYW4gYmUgdXNpbmcgYSBjdXN0 b20ga2VybmVsIG1vZHVsZSB0bw0KPiB1c2UgdGhvc2UgZmllbGRzLCB3ZSBjYW4ndCBrbm93IGl0 Lg0KPiANCj4gSW5zdGVhZCBvZiBkdXBsaWNhdGluZyBbcnRdeF9idXJzdCgpIGZ1bmN0aW9ucywg SSBzdWdnZXN0IGNyZWF0aW5nIGEgdmFyaWFibGUgdG8NCj4gc2V0IGlmIHRoaXMgaXMgdHVuIG9y IHRhcCBhbmQgc2V0IHBpLnByb3RvIG9ubHkgZm9yIHR1biwgdGhpcyB3aWxsIGxlYWQgbGVzcw0K PiBjb21wYXJpc29uIGZvciB0YXAgYW5kIGNvcnJlY3QgcHJvdG8gdmFsdWUuDQo+IA0KPiA+IDIp IElzIHRoZSBhYm92ZSBzdGlsbCB2YWxpZCBldmVuIGFmdGVyIGFwcGx5aW5nIHRoZSBwYXRjaCAn DQo+IGh0dHBzOi8vZHBkay5vcmcvZGV2L3BhdGNod29yay9wYXRjaC8zNzk4Ni8nPw0KPiANCj4g SSBndWVzcyBoaXMgY29uY2VybiBpcyBmb3IgdGFwLCB0aGF0IHNvbWUgTUFDIGFkZHJlc3NlcyBj YXVzZSB3cm9uZw0KPiBwaS5wcm90bywgbm90IGZvciB0dW4gd2hpY2ggeW91ciBwYXRjaCBmaXhl cy4NCj4gDQo+ID4NCj4gPiBOb3RlOiBJIGFtIHRlc3Rpbmcgd2l0aCAzLjEzLjAsIDQuNC4wIGFu ZCA0LjEzLjAuDQo+ID4NCj4gPiBUaGFua3MNCj4gPiBWaXBpbiBWYXJnaGVzZQ0KPiA+DQo+ID4+ IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+IEZyb206IGRldiBbbWFpbHRvOmRldi1i b3VuY2VzQGRwZGsub3JnXSBPbiBCZWhhbGYgT2YgVmFyZ2hlc2UsIFZpcGluDQo+ID4+IFNlbnQ6 IFNhdHVyZGF5LCBBcHJpbCAyMSwgMjAxOCA4OjQwIFBNDQo+ID4+IFRvOiBPcGhpciBNdW5rIDxv cGhpcm11QG1lbGxhbm94LmNvbT47IGRldkBkcGRrLm9yZzsNCj4gPj4gcGFzY2FsLm1hem9uQDZ3 aW5kLmNvbTsgWWlnaXQsIEZlcnJ1aCA8ZmVycnVoLnlpZ2l0QGludGVsLmNvbT47DQo+ID4+IFRo b21hcyBNb25qYWxvbiA8dGhvbWFzQG1vbmphbG9uLm5ldD47IE9sZ2EgU2hlcm4NCj4gPj4gPG9s Z2FzQG1lbGxhbm94LmNvbT47IFNoYWhhZiBTaHVsZXIgPHNoYWhhZnNAbWVsbGFub3guY29tPg0K PiA+PiBTdWJqZWN0OiBSZTogW2RwZGstZGV2XSBbUEFUQ0ggMS8yXSBuZXQvdGFwOiBhZGQgdHVu IHN1cHBvcnQNCj4gPj4NCj4gPj4gSGkgT3BoaXIsDQo+ID4+DQo+ID4+IDxTbmlwPg0KPiA+Pg0K PiA+Pj4gSGkgVmlwaW4sDQo+ID4+PiBJIG1pc3NlZCB5b3VyIHBvaW50Og0KPiA+Pj4gWW91IGNs YWltIHRoYXQgVEFQIHNob3VsZCB3b3JrIHJlZ2FyZGxlc3Mgb2YgYW55IHBpLnByb3RvIHZhbHVl cy4NCj4gPj4+IENhbiB5b3UgY29uZmlybSB0aGF0IGZvciBBTEwga2VybmVscyB2ZXJzaW9ucyAo cGFzdCBhbmQgZnV0dXJlKT8NCj4gPj4NCj4gPj4gSSBoYXZlIHRlc3RlZCB3aXRoIDMuMTMuMCAs IDQuNC4wIHdpdGggcGF0Y2ggZml4Lg0KPiA+Pg0KPiA+Pj4NCj4gPj4+PiAtLS0tLU9yaWdpbmFs IE1lc3NhZ2UtLS0tLQ0KPiA+Pj4+IEZyb206IE9waGlyIE11bmsNCj4gPj4+PiBTZW50OiBTYXR1 cmRheSwgQXByaWwgMjEsIDIwMTggMTI6NDkgQU0NCj4gPj4+PiBUbzogVmFyZ2hlc2UsIFZpcGlu IDx2aXBpbi52YXJnaGVzZUBpbnRlbC5jb20+OyBkZXZAZHBkay5vcmc7DQo+ID4+Pj4gcGFzY2Fs Lm1hem9uQDZ3aW5kLmNvbTsgWWlnaXQsIEZlcnJ1aCA8ZmVycnVoLnlpZ2l0QGludGVsLmNvbT47 DQo+ID4+Pj4gVGhvbWFzIE1vbmphbG9uIDx0aG9tYXNAbW9uamFsb24ubmV0PjsgT2xnYSBTaGVy bg0KPiA+Pj4+IDxvbGdhc0BtZWxsYW5veC5jb20+OyBTaGFoYWYgU2h1bGVyIDxzaGFoYWZzQG1l bGxhbm94LmNvbT4NCj4gPj4+PiBTdWJqZWN0OiBSRTogW2RwZGstZGV2XSBbUEFUQ0ggMS8yXSBu ZXQvdGFwOiBhZGQgdHVuIHN1cHBvcnQNCj4gPj4+Pg0KPiA+Pj4+IEhpIFZpcGluLA0KPiA+Pj4+ DQo+ID4+Pj4gUGxlYXNlIGZpbmQgY29tbWVudHMgaW5saW5lLg0KPiA+Pj4+DQo+ID4+Pj4+IC0t LS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+Pj4+IEZyb206IFZhcmdoZXNlLCBWaXBpbiBb bWFpbHRvOnZpcGluLnZhcmdoZXNlQGludGVsLmNvbV0NCj4gPj4+Pj4gU2VudDogRnJpZGF5LCBB cHJpbCAxMywgMjAxOCA2OjE4IEFNDQo+ID4+Pj4+IFRvOiBPcGhpciBNdW5rIDxvcGhpcm11QG1l bGxhbm94LmNvbT47IGRldkBkcGRrLm9yZzsNCj4gPj4+Pj4gcGFzY2FsLm1hem9uQDZ3aW5kLmNv bTsgWWlnaXQsIEZlcnJ1aCA8ZmVycnVoLnlpZ2l0QGludGVsLmNvbT47DQo+ID4+Pj4+IFRob21h cyBNb25qYWxvbiA8dGhvbWFzQG1vbmphbG9uLm5ldD47IE9sZ2EgU2hlcm4NCj4gPj4+Pj4gPG9s Z2FzQG1lbGxhbm94LmNvbT47IFNoYWhhZiBTaHVsZXIgPHNoYWhhZnNAbWVsbGFub3guY29tPg0K PiA+Pj4+PiBTdWJqZWN0OiBSRTogW2RwZGstZGV2XSBbUEFUQ0ggMS8yXSBuZXQvdGFwOiBhZGQg dHVuIHN1cHBvcnQNCj4gPj4+Pj4NCj4gPj4NCj4gPj4gPFNuaXA+DQo+ID4+DQo+ID4+Pj4+PiAx LiBBY2Nlc3NpbmcgdGhlIGZpcnN0IGJ5dGUgaGVyZSBhc3N1bWVzIGl0IGlzIHRoZSBmaXJzdCBJ UA0KPiA+Pj4+Pj4gaGVhZGVyIGJ5dGUgKGxheWVyIDMpIHdoaWNoIGlzIGNvcnJlY3QgZm9yIFRV Ti4NCj4gPj4+Pj4+IEZvciBUQVAgaG93ZXZlciB0aGUgZmlyc3QgYnl0ZSBiZWxvbmdzIHRvIEV0 aGVybmV0IGRlc3RpbmF0aW9uDQo+ID4+Pj4+PiBhZGRyZXNzIChsYXllciAyKS4NCj4gPj4+Pj4+ IFBsZWFzZSBleHBsYWluIGhvdyB0aGlzIGxvZ2ljIHdpbGwgd29yayBmb3IgVEFQLg0KPiA+Pj4+ Pg0KPiA+Pj4+PiBCYXNlZCBvbiBsaW51eCBjb2RlIGJhc2UgJy9kcml2ZXIvbmV0L3RhcC5jJyBh bmQgJy9kcml2ZXIvbmV0L3R1bi5jJw0KPiA+Pj4+PiBmcm9tIDMuMTMuIHRvICA0LjE2LA0KPiA+ Pj4+Pg0KPiA+Pj4+PiBQbGVhc2UgZmluZCBteSBvYnNlcnZhdGlvbiBiZWxvdw0KPiA+Pj4+PiAx LiBGaWxlOiB0dW4uYywgZnVuY3Rpb246IHR1bl9nZXRfdXNlciwgY2hlY2sgZm9yICd0dW4tPmZs YWdzICYNCj4gPj4+Pj4gVFVOX1RZUEVfTUFTSycgaXMgZG9uZSBhbmQgaWYgbm9uIGlwIGlzIHRh a2VuIGNvdW50ZXIgJ3J4X2Ryb3BwZWQnDQo+ID4+Pj4+IGlzIHVwZGF0ZWQuDQo+ID4+Pj4+IDIu IEZpbGU6IHRhcC5jLCB0aGVyZSBhcmUgbm8gY2hlY2tzIGZvciAndGFwLT5mbGFncycgZm9yIElG Rl9OT19QSQ0KPiA+Pj4+PiBpbiByeCBkYXRhIHBhdGguIENvdW50ZXIgJ3J4X2Ryb3BwZWQnIGlz IHVwZGF0ZWQgaW4NCj4gJ3RhcF9oYW5kbGVfZnJhbWUnLg0KPiA+Pj4+Pg0KPiA+Pj4+DQo+ID4+ Pj4gSSB1bmRlcnN0YW5kIHRoYXQgaW4ga2VybmVsIGltcGxlbWVudGF0aW9uIHRoZXJlIGlzIG5v IGNoZWNrIGZvcg0KPiA+Pj4+IHRhcC0+ZmxhZ3MgaW4gZmlsZSB0YXAuYywgaG93ZXZlciBJIHRo aW5rIHRoZXJlIGlzIGEgYnVnIGluIGRwZGsNCj4gPj4+PiB0YXAtPnJ0ZV9ldGhfdGFwLmMNCj4g Pj4+IGZpbGUuDQo+ID4+Pj4gUGxlYXNlIGZpbmQgYmVsb3cgYW4gZXhhbXBsZSB3aGljaCBkZW1v bnN0cmF0ZXMgdGhpcyBjbGFpbS4NCj4gPj4+Pg0KPiA+Pj4+PiBQbGVhc2UgZmluZCBteSByZWFz b25pbmcgYmVsb3cNCj4gPj4+Pj4gMS4gRmlyc3QgYXBwcm9hY2ggd2FzIHRvIGhhdmUgc2VwYXJh dGUgZnVuY3Rpb24gZm9yIHRhcCBhbmQgdHVuIFRYDQo+ID4+Pj4+IGFuZA0KPiA+PiBSWC4NCj4g Pj4+Pj4gQnV0IHRoaXMgd2lsbCBpbnRyb2R1Y2UgY29kZSBkdXBsaWNhdGlvbiwgaGVuY2UgcmV3 b3JrZWQgdGhlIGNvZGUNCj4gPj4+Pj4gYXMNCj4gPj4+PiBhYm92ZS4NCj4gPj4+Pg0KPiA+Pj4+ IEkgYWdyZWUuIEF2b2lkaW5nIGNvZGUgZHVwbGljYXRpb24gaXMgYSBnb29kIGFwcHJvYWNoLg0K PiA+Pj4+DQo+ID4+Pj4+IDIuIER1cmluZyBteSBpbnRlcm5hbCB0ZXN0aW5nIGFzc2lnbmluZyBk dW1teSB2YWx1ZSBmb3IgcHJvdG9jb2wNCj4gPj4+Pj4gZmllbGQgaW4gVEFQIHBhY2tldHMsIGRp ZCBub3Qgc2hvdyBhIGRpZmZlcmVuY2UgaW4gYmVoYXZpb3VyLiBNYXkNCj4gPj4+Pj4gYmUgdGhl cmUgYXJlIHNvbWUgc3BlY2lmaWMgY2FzZXMgdGhpcyBmYWlsaW5nLg0KPiA+Pj4+Pg0KPiA+Pj4+ PiBJZiB0aGVyZSBkaWZmZXJlbmNlIGluIGJlaGF2aW91ciwgY2FuIHBsZWFzZSBzaGFyZSB0aGUg c2FtZT8NCj4gPj4+Pj4NCj4gPj4+Pg0KPiA+Pj4+IFBsZWFzZSBjb25zaWRlciB0aGUgZm9sbG93 aW5nIGV4YW1wbGU6DQo+ID4+Pj4gSSBhbSBydW5uaW5nIHRlc3RwbWQgd2l0aCBhIFRBUCBkZXZp Y2UsIC0tZm9yd2FyZC1tb2RlPWNzdW0uDQo+ID4+Pj4gSSBhbSBpbmplY3RpbmcgYSBUQ1AgcGFj a2V0LCB3aGljaCBpcyBmb3J3YXJkZWQgYmFjayAobWFjIGFkZHJlc3Nlcw0KPiA+Pj4+IHN3YXBw ZWQpIHRvIHRoZSBzZW5kZXIuDQo+ID4+Pj4gVXNpbmcgZ2RiIEkgc2V0IGEgYnJlYWtwb2ludCBh dCBwbWRfdHhfYnVyc3QoKSBpbiBmaWxlDQo+ID4+Pj4gcnRlX2V0aF90YXAuYw0KPiA+Pj4+DQo+ ID4+Pj4gTG9va2luZyBhdCB0aGUgZm9sbG93aW5nIGNvZGUgaW5zaWRlIHBtZF90eF9idXJzdCgp Og0KPiA+Pj4+DQo+ID4+Pj4gNTI3ICAgICAgICAgICAgICAgICBjaGFyICpidWZmX2RhdGEgPSBy dGVfcGt0bWJ1Zl9tdG9kKHNlZywgdm9pZCAqKTsNCj4gPj4+PiA1MjggICAgICAgICAgICAgICAg IGogPSAoKmJ1ZmZfZGF0YSAmIDB4ZjApOw0KPiA+Pj4+IDUyOSAgICAgICAgICAgICAgICAgcGku cHJvdG8gPSAoaiA9PSAweDQwKSA/IDB4MDAwOCA6DQo+ID4+Pj4gNTMwICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGogPT0gMHg2MCkgPyAweGRkODYgOiAweDAwOw0KPiA+Pj4+DQo+ ID4+Pj4gSSBhbSBwcmludGluZyB0aGUgZmlyc3QgMjAgYnl0ZXMgb2YgYnVmZl9kYXRhIGluIGxp bmUgNTI3Og0KPiA+Pj4+DQo+ID4+Pj4gKGdkYikgcC94ICoodW5zaWduZWQgY2hhciAqKWJ1ZmZf ZGF0YUAyMA0KPiA+Pj4+ICQzID0gezB4MCwgMHgyNSwgMHg4OCwgMHgxMCwgMHg2NiwgMHgyLCAw eGY0LCAweDUyLCAweDE0LCAweDdhLA0KPiA+Pj4+IDB4NTksIDB4ODEsIDB4OCwgMHgwLCAweDQ1 LCAweDAsIDB4NCwgMHhkZiwgMHgwLCAweDF9DQo+ID4+Pj4NCj4gPj4+PiBUaGUgZ2RiIHByaW50 b3V0IHJlZmVycyB0bzoNCj4gPj4+PiA2IGJ5dGVzIG9mIGRlc3RpbmF0aW9uIE1BQyBhZGRyZXNz OiAweDAsIDB4MjUsIDB4ODgsIDB4MTAsIDB4NjYsDQo+ID4+Pj4gMHgyDQo+ID4+Pj4gNiBieXRl cyBvZiBzb3VyY2UgTUFDIGFkZHJlc3M6IDB4ZjQsIDB4NTIsIDB4MTQsIDB4N2EsIDB4NTksIDB4 ODENCj4gPj4+PiAyIGJ5dGVzIG9mIEV0aGVybmV0IHR5cGU6IDB4OCwgMHgwIC0gKElQdjQpIElQ IGhlYWRlciBzdGFydGluZyB3aXRoIDB4NDUsDQo+IC4uLg0KPiA+Pj4+IHdoaWNoIGlzIHRoZSBi eXRlICgweDQ1KSB0aGF0ICJqIiBzaG91bGQgaGF2ZSBsb29rZWQgYXQNCj4gPj4+Pg0KPiA+Pj4+ IEluIHRoZSBjYXNlIG9mIFRBUCAtIGJ1ZmZfZGF0YSBzdGFydHMgd2l0aCB0aGUgZGVzdGluYXRp b24gTUFDDQo+ID4+Pj4gYWRkcmVzcyBvZiB0aGUgc2VuZGVyICgweDAsIC4uLikuDQo+ID4+Pj4g VGhlIGNvZGUgaW4gbGluZSA1MjggZXhwZWN0cyB0aGF0IGJ1ZmZfZGF0YSB3b3VsZCBzdGFydCB3 aXRoIGFuIElQDQo+ID4+Pj4gaGVhZGVyIHByb3RvY29sIChlLmcuIDB4NDUpLCBidXQgaXQgaXMg bm90IHRoZSBjYXNlIGZvciBUQVAuDQo+ID4+Pj4gSW4gbXkgY2FzZSBqPTB4MCAobGluZSA1Mjgp IHdoaWNoIGlzIGhhcm1sZXNzIChhcyBpdCBlbmRzIHVwIHdpdGgNCj4gPj4+PiBzZXR0aW5nIHBp LnByb3RvPTB4MDAsIHdoaWNoIGlzIGNvcnJlY3QgZm9yIFRBUCkuDQo+ID4+Pj4gSG93ZXZlciwg aWYgdGhlIHNlbmRlciBoYWQgYW4gSW50ZWwgTklDIC0gdGhlIGRlc3RpbmF0aW9uIE1BQw0KPiA+ Pj4+IGFkZHJlc3MgY291bGQgaGF2ZSBzdGFydGVkIHdpdGg6DQo+ID4+Pj4gJDMgPSB7MHg0MCwg MHgyNSwgMHhDMiwgLi4uDQo+ID4+Pj4gT3ItDQo+ID4+Pj4gJDMgPSB7MHg2NCwgMHhENCwgMHhE QSwgLi4uDQo+ID4+Pj4NCj4gPj4+PiBhcyA0MDI1QzIgYW5kIDY0RDREQSBhcmUgcmVzZXJ2ZWQg cHJlZml4ZXMgZm9yIEludGVsIEV0aGVybmV0IE1BQw0KPiA+Pj4+IGFkZHJlc3Nlcywgc2VlOiBo dHRwOi8vd3d3LmNvZmZlci5jb20vbWFjX2ZpbmQvP3N0cmluZz1pbnRlbA0KPiA+Pj4+DQo+ID4+ Pj4gSW4gdGhpcyBjYXNlIHBpLnByb3RvIGNvdWxkIGVuZCB1cCB3aXRoIDB4MDAwOCBvciAweGRk ODYgaW5zdGVhZCBvZg0KPiA+Pj4+IDB4MCBhcyBleHBlY3RlZCBmb3IgVEFQLg0KPiA+Pj4+DQo+ ID4+Pj4gSSBob3BlIHRoYXQgdGhpcyBleGFtcGxlIGNsYXJpZmllcyB0aGUgYnVnIEkgYW0gcmVm ZXJyaW5nIHRvLg0KPiA+Pj4+DQo+ID4+DQo+ID4+IFRoYW5rcyBmb3Igc2hhcmluZyBkZXRhaWxl ZCBleGFtcGxlIG92ZXJ2aWV3LiBCdXQgYXMgeW91IG1lbnRpb25lZA0KPiA+PiB0aGlzIHdpbGwg YnJlYWsgJyA0MDI1QzInIGFuZCAnIDY0RDREQScsIFRoaXMgd2lsbCBub3Qgc29sdmUgZm9yIHRo ZSBjb3JyZWN0aW9uDQo+IHBhdGNoICAnDQo+ID4+IGh0dHBzOi8vZHBkay5vcmcvZGV2L3BhdGNo d29yay9wYXRjaC8zNzk4Ni8nLg0KPiA+Pg0KPiA+PiBPbmx5IGNob2ljZSBsZWZ0IGlzIHNlcGFy YXRlIHR4X2J1cnN0IGZvciBUQVAgYW5kIFRVTiBQTUQsIGFzIHdlIGRvDQo+ID4+IG5vdCB3YW50 IHRvIGNoZWNrIFBNRCB0eXBlIG9uIGVhY2ggY2FsbC4NCj4gPj4NCj4gPj4gUXVlc3Rpb25zOg0K PiA+PiAxKSBJcyB0aGlzIG9rIHRvIHNwbGl0IHR4X2J1cnN0IGFuZCBoYXZlIHJlZHVuZGFudCBj b2RlPw0KPiA+PiAyKSBEb2VzIGFwcGxpY2F0aW9ucyB0cmFuc3BhcmVudGx5IHNlbmQgcGFja2V0 cyBjb21pbmcgZnJvbSBQaHlzaWNhbA0KPiA+PiBOSUMgdG8gVEFQIGludGVyZmFjZT8gRG9lcyBu b3QgdGhlIGFwcGxpY2F0aW9uIE1vZGlmaWVzIHRoZSBERVNUIE1BQw0KPiA+PiBhZGRyIHRvIFRB UCBpbnRlcmZhY2U/DQo+ID4+DQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gMi4gSWYgdGhlIGZpcnN0IFRV TiBieXRlIGNvbnRhaW5zIDB4MlggKHdoaWNoIGlzIG5laXRoZXIgSVB2NCBub3INCj4gPj4+Pj4+ IElQdjYpIGl0IHdpbGwgZW5kIHVwIGJ5IHNldHRpbmcgaXAucHJvdG8gYXMgMHhkZDg2Lg0KPiA+ Pj4+Pj4gUGxlYXNlIGV4cGxhaW4gaG93IHRoaXMgbG9naWMgd2lsbCB3b3JrIGZvciBub24tSVAg cGFja2V0cyBpbiBUVU4NCj4gPj4+Pj4NCj4gPj4+Pj4gSSBzZWUgeW91ciBwb2ludC4gWW91IGFy ZSBjb3JyZWN0IGFib3V0IHRoaXMuIFRoYW5rcyBmb3IgcG9pbnRpbmcNCj4gPj4+Pj4gb3V0LCBt YXkgSSBzZW5kIGNvcnJlY3Rpb24gZm9yIHRoaXMgYXMNCj4gPj4+Pj4NCj4gPj4+Pj4gIiIiDQo+ ID4+Pj4+IC0JCWlmIChqICYgKDB4NDAgfCAweDYwKSkNCj4gPj4+Pj4gLQkJCXBpLnByb3RvID0g KGogPT0gMHg0MCkgPyAweDAwMDggOiAweGRkODY7DQo+ID4+Pj4+ICsJCXBpLnByb3RvID0gKGog PT0gMHg0MCkgPyAweDAwMDggOg0KPiA+Pj4+PiArCQkJCQkoaiA9PSAweDYwKSA/IDB4ZGQ4NiA6 DQo+ID4+Pj4+ICsJCQkJCTB4MDA7DQo+ID4+Pj4+ICIiIg0KDQo=