From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by dpdk.org (Postfix) with ESMTP id 997E82B86 for ; Sat, 24 Dec 2016 08:06:34 +0100 (CET) Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga105.jf.intel.com with ESMTP; 23 Dec 2016 23:06:33 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.33,398,1477983600"; d="scan'208,217";a="46377534" Received: from fmsmsx108.amr.corp.intel.com ([10.18.124.206]) by fmsmga005.fm.intel.com with ESMTP; 23 Dec 2016 23:06:33 -0800 Received: from fmsmsx125.amr.corp.intel.com (10.18.125.40) by FMSMSX108.amr.corp.intel.com (10.18.124.206) with Microsoft SMTP Server (TLS) id 14.3.248.2; Fri, 23 Dec 2016 23:06:32 -0800 Received: from shsmsx102.ccr.corp.intel.com (10.239.4.154) by FMSMSX125.amr.corp.intel.com (10.18.125.40) with Microsoft SMTP Server (TLS) id 14.3.248.2; Fri, 23 Dec 2016 23:06:32 -0800 Received: from shsmsx103.ccr.corp.intel.com ([169.254.4.20]) by shsmsx102.ccr.corp.intel.com ([169.254.2.88]) with mapi id 14.03.0248.002; Sat, 24 Dec 2016 15:06:28 +0800 From: "Hu, Xuekun" To: edgar helmut CC: "Wiles, Keith" , "users@dpdk.org" Thread-Topic: [dpdk-users] Dpdk poor performance on virtual machine Thread-Index: AQHSVqPT402ynWaMe0SdBlzAezNCNaEIcVOAgAAKhwCAAJYdsP//qtGAgAEIHQCAAdGkgIAJ2fkAgAFIMYA= Date: Sat, 24 Dec 2016 07:06:28 +0000 Message-ID: <88A92D351643BA4CB23E30315517062662F58599@SHSMSX103.ccr.corp.intel.com> References: <88A92D351643BA4CB23E30315517062662F3C939@SHSMSX103.ccr.corp.intel.com> <88A92D351643BA4CB23E30315517062662F3D4FF@SHSMSX103.ccr.corp.intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: Re: [dpdk-users] Dpdk poor performance on virtual machine X-BeenThere: users@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK usage discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 24 Dec 2016 07:06:35 -0000 Tm93IHlvdXIgc2V0dXAgaGFzIGEgbmV3IHRoaW5nLCDigJxtYWN2dGFw4oCdLiBJIGRvbuKAmXQg a25vdyB3aGF04oCZcyB0aGUgcGVyZm9ybWFuY2Ugb2YgdXNpbmcgbWFjdnRhcC4gSSBvbmx5IGtu b3cgaXQgaGFzIG11Y2ggd29yc2UgcGVyZiB0aGFuIHRoZSDigJxyZWFs4oCdIHBjaSBwYXNzLXRo cm91Z2guDQoNCkkgYWxzbyBkb27igJl0IGtub3cgd2h5IHlvdSBzZWxlY3Qgc3VjaCBjb25maWcg Zm9yIHlvdXIgc2V0dXAsIGFub255bW91cyBodWdlIHBhZ2VzIGFuZCBtYWN2dGFwLiBBbnkgc3Bl Y2lmaWMgcHVycG9zZT8NCg0KSSB0aGluayB5b3Ugc2hvdWxkIGdldCBhIGJhc2VsaW5lIGZpcnN0 LCB0aGVuIHRvIGdldCBob3cgbXVjaCBwZXJmIGRyb3BwZWQgaWYgdXNpbmcgYW5vbnltb3VzIGh1 Z2VwYWdlcyBvciBtYWN2dGFw44CCDQoNCjEuICAgICAgQmFzZWxpbmU6IHJlYWwgaHVnZXBhZ2Ug KyByZWFsIHBjaSBwYXNzLXRocm91Z2gNCg0KMi4gICAgICBBbm9uIGh1Z2VwYWdlcyB2cyBodWdl cGFnZXMNCg0KMy4gICAgICBSZWFsIHBjaSBwYXNzLXRocm91Z2ggdnMuIG1hY3Z0YXANCg0KRnJv bTogZWRnYXIgaGVsbXV0IFttYWlsdG86aGVsbXV0LmVkZ2FyMTAwQGdtYWlsLmNvbV0NClNlbnQ6 IFNhdHVyZGF5LCBEZWNlbWJlciAyNCwgMjAxNiAzOjIzIEFNDQpUbzogSHUsIFh1ZWt1biA8eHVl a3VuLmh1QGludGVsLmNvbT4NCkNjOiBXaWxlcywgS2VpdGggPGtlaXRoLndpbGVzQGludGVsLmNv bT47IHVzZXJzQGRwZGsub3JnDQpTdWJqZWN0OiBSZTogW2RwZGstdXNlcnNdIERwZGsgcG9vciBw ZXJmb3JtYW5jZSBvbiB2aXJ0dWFsIG1hY2hpbmUNCg0KSGVsbG8sDQpJIGNoYW5nZWQgdGhlIHNl dHVwIGJ1dCBzdGlsbCBwZXJmb3JtYW5jZSBhcmUgcG9vciA6KCBhbmQgSSBuZWVkIHlvdXIgaGVs cCB0byB1bmRlcnN0YW5kIHRoZSByb290IGNhdXNlLg0KdGhlIHNldHVwIGlzIChzb3JyeSBmb3Ig bG9uZyBkZXNjcmlwdGlvbik6DQoodGVzdCBlcXVpcG1lbnQgaXMgcGt0Z2VuIHVzaW5nIGRwZGsg aW5zdGFsbGVkIG9uIGEgc2Vjb25kIHBoeXNpY2FsIG1hY2hpbmUgY29vbmVjdGVkIHdpdGggODI1 OTkgTklDcykNCmhvc3Q6IEludGVsKFIpIFhlb24oUikgQ1BVIEU1LTI2NDAgdjQgQCAyLjQwR0h6 IHdpdGggc2luZ2xlIHNvY2tldCAsIHVidW50dSAxNi4wNCwgd2l0aCA0IGh1Z2VwYWdlcyBvZiAx RyBlYWNoLg0KaHlwZXJ2aXpvciAoa3ZtKTogUUVNVSBlbXVsYXRvciB2ZXJzaW9uIDIuNS4wDQpn dWVzdDogc2FtZSBjcHUgYXMgaG9zdCwgY3JlYXRlZCB3aXRoIDMgdmNwdXMsIHVzaW5nIHVidW50 dSAxNi4wNA0KZHBkazogdHJpZWQgMi4yLCAxNi4wNCwgMTYuMDcsIDE2LjExIC0gdXNpbmcgdGVz dHBtZCBhbmQgNTEyIHBhZ2VzIG9mIDJNIGVhY2guDQpndWVzdCB0b3RhbCBtZW1vcnkgaXMgMkcg YW5kIGFsbCBvZiBpdCBpcyBiYWNrZWQgYnkgdGhlIGhvc3Qgd2l0aCB0cmFuc3BhcmVudCBodWdl cGFnZXMgKEkgY2FuIHNlZSB0aGUgQW5vbkh1Z2VQYWdlcyBjb25zdW1lZCBhdCBndWVzdCBjcmVh dGlvbikuIFRoaXMgbWVtb3J5IGluY2x1ZGVzIHRoZSA1MTIgaHVnZXBhZ2VzIGZvciB0aGUgdGVz dHBtZCBhcHBsaWNhdGlvbi4NCkkgcGlubmVkIGFuZCBpc29sYXRlZCB0aGUgZ3Vlc3QncyB2Y3B1 cyAodXNpbmcga2VybmVsIG9wdGlvbiBpc29sY2FwdSksIGFuZCBjb3VsZCBzZWUgY2xlYXJseSB0 aGF0IHRoZSBpc29sYXRpb24gZnVuY3Rpb25zIHdlbGwuDQoNCjIgeCA4MjU5OSBOSUNzIGNvbm5l Y3RlZCBhcyBwYXNzdGhyb3VnaCB1c2luZyBtYWN2dGFwIGludGVyZmFjZXMgdG8gdGhlIGd1ZXN0 LCBzbyB0aGUgZ3Vlc3QgcmVjZWl2ZXMgYW5kIGZvcndhcmRzIHBhY2tldHMgZnJvbSBvbmUgaW50 ZXJmYWNlIHRvIHRoZSBzZWNvbmQgYW5kIHZpY2UgdmVyc2EuDQphdCB0aGUgZ3Vlc3QgSSBiaW5k IGl0cyBpbnRlcmZhY2VzIHVzaW5nIGlnYl91aW8uDQp0aGUgdGVzdHBtZCBhdCBndWVzdCBzdGFy dHMgZHJvcHBpbmcgcGFja2V0cyBhdCBhYm91dCB+ODAwbWJwcyBiZXR3ZWVuIGJvdGggcG9ydHMg YmktZGlyZWN0aW9uYWwgdXNpbmcgdHdvIHZjcHVzIGZvciBmb3J3YXJkaW5nIChvbmUgZm9yIHRo ZSBhcHBsaWNhdGlvbiBtYW5hZ2VtZW50IGFuZCB0d28gZm9yIGZvcndhcmRpbmcpLg0KYXQgMS4y IGdicHMgaXQgZHJvcHMgYSBsb3Qgb2YgcGFja2V0cy4NCnRoZSBzYW1lIHRlc3RwbWQgY29uZmln dXJhdGlvbiBvbiB0aGUgaG9zdCAoYmV0d2VlbiBib3RoIDgyNTk5IE5JQ3MpIGZvcndhcmRzIGFi b3V0IDUtNmdicHMgb24gYm90aCBwb3J0cyBiaS1kaXJlY3Rpb25hbC4NCg0KSSBhc3N1bWVkIHRo YXQgZm9yd2FyZGluZyB+NS02IGdicHMgYmV0d2VlbiB0d28gcG9ydHMgc2hvdWxkIGJlIHRyaXZp YWwsIHNvIGl0IHdpbGwgYmUgZ3JlYXQgaWYgc29tZW9uZSBjYW4gc2hhcmUgaXRzIGNvbmZpZ3Vy YXRpb24gZm9yIGEgdGVzdGVkIHNldHVwLg0KQW55IGZ1cnRoZXIgaWRlYSB3aWxsIGJlIGhpZ2hs eSBhcHByZWNpYXRlZC4NCg0KVGhhbmtzLg0KDQpPbiBTYXQsIERlYyAxNywgMjAxNiBhdCAyOjU2 IFBNIGVkZ2FyIGhlbG11dCA8aGVsbXV0LmVkZ2FyMTAwQGdtYWlsLmNvbTxtYWlsdG86aGVsbXV0 LmVkZ2FyMTAwQGdtYWlsLmNvbT4+IHdyb3RlOg0KVGhhdCdzIHdoYXQgSSBhZnJhaWQuDQpJbiBm YWN0IGkgbmVlZCB0aGUgaG9zdCB0byBiYWNrIHRoZSBlbnRpcmUgZ3Vlc3QncyBtZW1vcnkgd2l0 aCBodWdlcGFnZXMuDQpJIHdpbGwgZmluZCB0aGUgd2F5IHRvIGRvIHRoYXQgYW5kIG1ha2UgdGhl IHRlc3RpbmcgYWdhaW4uDQoNCg0KT24gMTYgRGVjIDIwMTYgMzoxNCBBTSwgIkh1LCBYdWVrdW4i IDx4dWVrdW4uaHVAaW50ZWwuY29tPG1haWx0bzp4dWVrdW4uaHVAaW50ZWwuY29tPj4gd3JvdGU6 DQpZb3Ugc2FpZCBWTeKAmXMgbWVtb3J5IHdhcyA2Rywgd2hpbGUgdHJhbnNwYXJlbnQgaHVnZXBh Z2VzIHdhcyBvbmx5IHVzZWQgfjRHICg0MzYwMTkyS0IpLiBTbyBzb21lIHdlcmUgbWFwcGVkIHRv IDRLIHBhZ2VzLg0KDQpCVFcsIHRoZSBtZW1vcnkgdXNlZCBieSB0cmFuc3BhcmVudCBodWdlcGFn ZSBpcyBub3QgdGhlIGh1Z2VwYWdlIHlvdSByZXNlcnZlZCBpbiBrZXJuZWwgYm9vdCBvcHRpb24u DQoNCkZyb206IGVkZ2FyIGhlbG11dCBbbWFpbHRvOmhlbG11dC5lZGdhcjEwMEBnbWFpbC5jb208 bWFpbHRvOmhlbG11dC5lZGdhcjEwMEBnbWFpbC5jb20+XQ0KU2VudDogRnJpZGF5LCBEZWNlbWJl ciAxNiwgMjAxNiAxOjI0IEFNDQpUbzogSHUsIFh1ZWt1bg0KQ2M6IFdpbGVzLCBLZWl0aDsgdXNl cnNAZHBkay5vcmc8bWFpbHRvOnVzZXJzQGRwZGsub3JnPg0KU3ViamVjdDogUmU6IFtkcGRrLXVz ZXJzXSBEcGRrIHBvb3IgcGVyZm9ybWFuY2Ugb24gdmlydHVhbCBtYWNoaW5lDQoNCmluIGZhY3Qg dGhlIHZtIHdhcyBjcmVhdGVkIHdpdGggNkcgUkFNLCBpdHMga2VybmVsIGJvb3QgYXJncyBhcmUg ZGVmaW5lZCB3aXRoIDQgaHVnZXBhZ2VzIG9mIDFHIGVhY2gsIHRob3VnaCB3aGVuIHN0YXJ0aW5n IHRoZSB2bSBpIG5vdGVkIHRoYXQgYW5vbmh1Z2VwYWdlcyBpbmNyZWFzZWQuDQpUaGUgcmVsZXZh bnQgcWVtdSBwcm9jZXNzIGlkIGlzIDYwNzQsIGFuZCB0aGUgZm9sbG93aW5nIHN1bXMgdGhlIGFt b3VudCBvZiBhbGxvY2F0ZWQgQW5vbkh1Z2VQYWdlczoNCnN1ZG8gZ3JlcCAtZSBBbm9uSHVnZVBh Z2VzICAvcHJvYy82MDc0L3NtYXBzIHwgYXdrICAneyBpZigkMj4wKSBwcmludCAkMn0gJ3xhd2sg J3tzKz0kMX0gRU5EIHtwcmludCBzfScNCndoaWNoIHJlc3VsdHMgd2l0aCA0MzYwMTkyDQpzbyBu b3QgYWxsIHRoZSBtZW1vcnkgaXMgYmFja2VkIHdpdGggdHJhbnNwYXJlbnQgaHVnZXBhZ2VzIHRo b3VnaCBpdCBpcyBtb3JlIHRoYW4gdGhlIGFtb3VudCBvZiBodWdlcGFnZXMgdGhlIGd1ZXN0IHN1 cHBvc2VkIHRvIGJvb3Qgd2l0aC4NCkhvdyBjYW4gSSBiZSBzdXJlIHRoYXQgdGhlIHJlcXVpcmVk IDRHIGh1Z2VwYWdlcyBhcmUgcmVhbGx5IGFsbG9jYXRlZD8sIGFuZCBub3QsIGZvciBleGFtcGxl LCBvbmx5IDJHIG91dCBvZiB0aGUgNEcgYXJlIGFsbG9jYXRlZCAoYW5kIHRoZSByZXN0IDIgYXJl IG1hcHBpbmcgb2YgdGhlIGRlZmF1bHQgNEspPw0KDQp0aGFua3MNCg0KT24gVGh1LCBEZWMgMTUs IDIwMTYgYXQgNDozMyBQTSwgSHUsIFh1ZWt1biA8eHVla3VuLmh1QGludGVsLmNvbTxtYWlsdG86 eHVla3VuLmh1QGludGVsLmNvbT4+IHdyb3RlOg0KQXJlIHlvdSBzdXJlIHRoZSBhbm9uaHVnZXBh Z2VzIHNpemUgd2FzIGVxdWFsIHRvIHRoZSB0b3RhbCBWTSdzIG1lbW9yeSBzaXplPw0KU29tZXRp bWVzLCB0cmFuc3BhcmVudCBodWdlIHBhZ2UgbWVjaGFuaXNtIGRvZXNuJ3QgZ3JhbnRlZSB0aGUg YXBwIGlzIHVzaW5nDQp0aGUgcmVhbCBodWdlIHBhZ2VzLg0KDQoNCi0tLS0tT3JpZ2luYWwgTWVz c2FnZS0tLS0tDQpGcm9tOiB1c2VycyBbbWFpbHRvOnVzZXJzLWJvdW5jZXNAZHBkay5vcmc8bWFp bHRvOnVzZXJzLWJvdW5jZXNAZHBkay5vcmc+XSBPbiBCZWhhbGYgT2YgZWRnYXIgaGVsbXV0DQpT ZW50OiBUaHVyc2RheSwgRGVjZW1iZXIgMTUsIDIwMTYgOTozMiBQTQ0KVG86IFdpbGVzLCBLZWl0 aA0KQ2M6IHVzZXJzQGRwZGsub3JnPG1haWx0bzp1c2Vyc0BkcGRrLm9yZz4NClN1YmplY3Q6IFJl OiBbZHBkay11c2Vyc10gRHBkayBwb29yIHBlcmZvcm1hbmNlIG9uIHZpcnR1YWwgbWFjaGluZQ0K DQpJIGhhdmUgb25lIHNpbmdsZSBzb2NrZXQgd2hpY2ggaXMgSW50ZWwoUikgWGVvbihSKSBDUFUg RTUtMjY0MCB2NCBAIDIuNDBHSHouDQoNCkkganVzdCBtYWRlIHR3byBtb3JlIHN0ZXBzOg0KMS4g c2V0dGluZyBpb21tdT1wdCBmb3IgYmV0dGVyIHVzYWdlIG9mIHRoZSBpZ2JfdWlvDQoyLiB1c2lu ZyB0YXNrc2V0IGFuZCBpc29sY3B1IHNvIG5vdyBpdCBsb29rcyBsaWtlIHRoZSByZWxldmFudCBk cGRrIGNvcmVzDQp1c2UgZGVkaWNhdGVkIGNvcmVzLg0KDQpJdCBpbXByb3ZlZCB0aGUgcGVyZm9y bWFuY2UgdGhvdWdoIEkgc3RpbGwgc2VlIHNpZ25pZmljYW50IGRpZmZlcmVuY2UNCmJldHdlZW4g dGhlIHZtIGFuZCB0aGUgaG9zdCB3aGljaCBJIGNhbid0IGZ1bGx5IGV4cGxhaW4uDQoNCmFueSBm dXJ0aGVyIGlkZWE/DQoNClJlZ2FyZHMsDQpFZGdhcg0KDQoNCk9uIFRodSwgRGVjIDE1LCAyMDE2 IGF0IDI6NTQgUE0sIFdpbGVzLCBLZWl0aCA8a2VpdGgud2lsZXNAaW50ZWwuY29tPG1haWx0bzpr ZWl0aC53aWxlc0BpbnRlbC5jb20+PiB3cm90ZToNCg0KPg0KPiA+IE9uIERlYyAxNSwgMjAxNiwg YXQgMToyMCBBTSwgZWRnYXIgaGVsbXV0IDxoZWxtdXQuZWRnYXIxMDBAZ21haWwuY29tPG1haWx0 bzpoZWxtdXQuZWRnYXIxMDBAZ21haWwuY29tPj4NCj4gd3JvdGU6DQo+ID4NCj4gPiBIaS4NCj4g PiBTb21lIGhlbHAgaXMgbmVlZGVkIHRvIHVuZGVyc3RhbmQgcGVyZm9ybWFuY2UgaXNzdWUgb24g dmlydHVhbCBtYWNoaW5lLg0KPiA+DQo+ID4gUnVubmluZyB0ZXN0cG1kIG92ZXIgdGhlIGhvc3Qg ZnVuY3Rpb25zIHdlbGwgKHRlc3RwbWQgZm9yd2FyZHMgMTBnDQo+IGJldHdlZW4NCj4gPiB0d28g ODI1OTkgcG9ydHMpLg0KPiA+IEhvd2V2ZXIgc2FtZSBhcHBsaWNhdGlvbiBydW5uaW5nIG9uIGEg dmlydHVhbCBtYWNoaW5lIG92ZXIgc2FtZSBob3N0DQo+ID4gcmVzdWx0cyB3aXRoIGh1Z2UgZGVn cmFkYXRpb24gaW4gcGVyZm9ybWFuY2UuDQo+ID4gVGhlIHRlc3RwbWQgdGhlbiBpcyBub3QgZXZl biBhYmxlIHRvIHJlYWQgMTAwbWJwcyBmcm9tIG5pYyB3aXRob3V0IGRyb3BzLA0KPiA+IGFuZCBm cm9tIGEgcHJvZmlsZSBpIG1hZGUgaXQgbG9va3MgbGlrZSBhIGRwZGsgYXBwbGljYXRpb24gcnVu cyBtb3JlIHRoYW4NCj4gPiAxMCB0aW1lcyBzbG93ZXIgdGhhbiBvdmVyIGhvc3TigKYNCj4NCj4g Tm90IHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBvdmVyYWxsIHNldHVwLCBidXQgZGlkIHlvdSBtYWtl IHN1cmUgdGhlIE5JQy9QQ0kNCj4gYnVzIGlzIG9uIHRoZSBzYW1lIHNvY2tldCBhcyB0aGUgVk0u IElmIHlvdSBoYXZlIG11bHRpcGxlIHNvY2tldHMgb24geW91cg0KPiBwbGF0Zm9ybS4gSWYgeW91 IGhhdmUgdG8gYWNjZXNzIHRoZSBOSUMgYWNyb3NzIHRoZSBRUEkgaXQgY291bGQgZXhwbGFpbg0K PiBzb21lIG9mIHRoZSBwZXJmb3JtYW5jZSBkcm9wLiBOb3Qgc3VyZSB0aGF0IG11Y2ggZHJvcCBp cyB0aGlzIHByb2JsZW0uDQo+DQo+ID4NCj4gPiBTZXR1cCBpcyB1YnVudHUgMTYuMDQgZm9yIGhv c3QgYW5kIHVidW50dSAxNC4wNCBmb3IgZ3Vlc3QuDQo+ID4gUWVtdSBpcyAyLjMuMCAodGhvdWdo IEkgdHJpZWQgd2l0aCBhIG5ld2VyIGFzIHdlbGwpLg0KPiA+IE5JQ3MgYXJlIGNvbm5lY3RlZCB0 byBndWVzdCB1c2luZyBwY2kgcGFzc3Rocm91Z2gsIGFuZCBndWVzdCdzIGNwdSBpcyBzZXQNCj4g PiBhcyBwYXNzdGhyb3VnaCAoc2FtZSBhcyBob3N0KS4NCj4gPiBPbiBndWVzdCBzdGFydCB0aGUg aG9zdCBhbGxvY2F0ZXMgdHJhbnNwYXJlbnQgaHVnZXBhZ2VzIChBbm9uSHVnZVBhZ2VzKQ0KPiBz bw0KPiA+IGkgYXNzdW1lIHRoZSBndWVzdCBtZW1vcnkgaXMgYmFja2VkIHdpdGggcmVhbCBodWdl cGFnZXMgb24gdGhlIGhvc3QuDQo+ID4gSSB0cmllZCBiaW5kaW5nIHdpdGggaWdiX3VpbyBhbmQg d2l0aCB1aW9fcGNpX2dlbmVyaWMgYnV0IGJvdGggcmVzdWx0cw0KPiB3aXRoDQo+ID4gc2FtZSBw ZXJmb3JtYW5jZS4NCj4gPg0KPiA+IER1ZSB0byB0aGUgcGVyZm9ybWFuY2UgZGlmZmVyZW5jZSBp IGd1ZXNzIGkgbWlzcyBzb21ldGhpbmcuDQo+ID4NCj4gPiBQbGVhc2UgYWR2aXNlIHdoYXQgbWF5 IGkgbWlzcyBoZXJlPw0KPiA+IElzIHRoaXMgYSBuYXRpdmUgcGVuYWx0eSBvZiBxZW11Pz8NCj4g Pg0KPiA+IFRoYW5rcw0KPiA+IEVkZ2FyDQo+DQo+IFJlZ2FyZHMsDQo+IEtlaXRoDQo+DQo+DQoN Cg==