From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by dpdk.org (Postfix) with ESMTP id AC8522B94 for ; Mon, 26 Dec 2016 01:52:25 +0100 (CET) Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga101.jf.intel.com with ESMTP; 25 Dec 2016 16:52:24 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.33,404,1477983600"; d="scan'208,217";a="916108415" Received: from fmsmsx105.amr.corp.intel.com ([10.18.124.203]) by orsmga003.jf.intel.com with ESMTP; 25 Dec 2016 16:52:24 -0800 Received: from fmsmsx116.amr.corp.intel.com (10.18.116.20) by FMSMSX105.amr.corp.intel.com (10.18.124.203) with Microsoft SMTP Server (TLS) id 14.3.248.2; Sun, 25 Dec 2016 16:52:23 -0800 Received: from shsmsx104.ccr.corp.intel.com (10.239.4.70) by fmsmsx116.amr.corp.intel.com (10.18.116.20) with Microsoft SMTP Server (TLS) id 14.3.248.2; Sun, 25 Dec 2016 16:52:23 -0800 Received: from shsmsx103.ccr.corp.intel.com ([169.254.4.20]) by SHSMSX104.ccr.corp.intel.com ([10.239.4.70]) with mapi id 14.03.0248.002; Mon, 26 Dec 2016 08:52:21 +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//qtGAgAEIHQCAAdGkgIAJ2fkAgAFIMYD//40SAIAAglkAgAKt1yA= Date: Mon, 26 Dec 2016 00:52:20 +0000 Message-ID: <88A92D351643BA4CB23E30315517062662F595DF@SHSMSX103.ccr.corp.intel.com> References: 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: Mon, 26 Dec 2016 00:52:27 -0000 U2VhcmNoaW5nIOKAnGh1Z2VwYWdlc+KAnSBpbiBodHRwczovL2xpYnZpcnQub3JnL2Zvcm1hdGRv bWFpbi5odG1sDQoNCklmIHlvdSBhcmUgbG9va2luZyBmb3IgdG8gbWVhc3VyZSBpbiBhbmQgb3V0 IHBhY2tldHMgdGhyb3VnaCBob3N0LCBtYXliZSB5b3UgY2FuIGxvb2sgYXQgdmhvc3QvdmlydGlv IGludGVyZmFjZSBhbHNvLg0KDQpBZnRlciB5b3VyIHRlc3RpbmcsIGlmIHlvdSBjYW4gcmVwb3J0 IHRoZSBwZXJmb3JtYWNlIG91dCB3aXRoIG1hY3Z0YXAsIHRoYXQgYWxzbyBoZWxwcyB1cy4g4pi6 DQoNCg0KRnJvbTogZWRnYXIgaGVsbXV0IFttYWlsdG86aGVsbXV0LmVkZ2FyMTAwQGdtYWlsLmNv bV0NClNlbnQ6IFNhdHVyZGF5LCBEZWNlbWJlciAyNCwgMjAxNiAxMTo1MyBQTQ0KVG86IEh1LCBY dWVrdW4gPHh1ZWt1bi5odUBpbnRlbC5jb20+DQpDYzogV2lsZXMsIEtlaXRoIDxrZWl0aC53aWxl c0BpbnRlbC5jb20+OyB1c2Vyc0BkcGRrLm9yZw0KU3ViamVjdDogUmU6IFtkcGRrLXVzZXJzXSBE cGRrIHBvb3IgcGVyZm9ybWFuY2Ugb24gdmlydHVhbCBtYWNoaW5lDQoNCmFueSBpZGVhIGhvdyB0 byByZXNlcnZlIGh1Z2VwYWdlcyBmb3IgYSBndWVzdCAoYW5kIG5vdCB0cmFuc3BhcmVudC9hbm9u eW1vdXMgaHVnZXBhZ2VzKSA/DQppIGFtIHVzaW5nIGxpYnZpcnQgYW5kIGFueSBiYWNraW5nIG1l dGhvZCBJIGFtIHRyeWluZyByZXN1bHRzIHdpdGggYW5vbnltb3VzIGh1Z2VwYWdlLg0KZGlzYWJs aW5nIHRoZSB0cmFuc3BhcmVudCBodWdlcGFnZXMgcmVzdWx0ZWQgd2l0aG91dCBhbnkgaHVnZXBh Z2VzLg0KVGhhbmtzDQoNCk9uIFNhdCwgRGVjIDI0LCAyMDE2IGF0IDEwOjA2IEFNIGVkZ2FyIGhl bG11dCA8aGVsbXV0LmVkZ2FyMTAwQGdtYWlsLmNvbTxtYWlsdG86aGVsbXV0LmVkZ2FyMTAwQGdt YWlsLmNvbT4+IHdyb3RlOg0KSSBhbSBsb29raW5nIGZvciBhIG1lYW4gdG8gbWVhc3VyZSBpbiBh bmQgb3V0IHBhY2tldHMgdG8gYW5kIGZyb20gdGhlIHZtICh3aXRob3V0IGFza2luZyB0aGUgdm0g aXRzZWxmKS4gV2hpbGUgcHVyZSBwYXNzdGhyb3VnaCBkb2Vzbid0IGV4cG9zZSBhbiBpbnRlcmZh Y2UgdG8gcXVlcnkgZm9yIGluL291dCBwa3RzIHRoZSBtYWN2dGFwIGV4cG9zZXMgc3VjaCBhbiBp bnRlcmZhY2UuDQpBcyBmb3IgdGhlIGFub255bW91cyBodWdlcGFnZXMgSSB3YXMgbG9va2luZyBm b3IgYSBtb3JlIGZsZXhpYmxlIG1ldGhvZCBhbmQgSSBhc3N1bWVkIHRoZXJlIGlzIG5vIG11Y2gg ZGlmZmVyZW5jZS4NCkkgd2lsbCBtYWtlIHRoZSB0ZXN0IHdpdGggcmVzZXJ2ZWQgaHVnZXBhZ2Vz Lg0KSG93ZXZlciBpcyB0aGVyZSBhbnkga25vd2xlZGdlIGFib3V0IG1hY3Z0YXAgcGVyZm9ybWFu Y2UgaXNzdWVzIHdoZW4gZGVsaXZlcmluZyA1LTYgZ2Jwcz8NCg0KVGhhbmtzDQoNCg0KT24gMjQg RGVjIDIwMTYgOTowNiBBTSwgIkh1LCBYdWVrdW4iIDx4dWVrdW4uaHVAaW50ZWwuY29tPG1haWx0 bzp4dWVrdW4uaHVAaW50ZWwuY29tPj4gd3JvdGU6DQpOb3cgeW91ciBzZXR1cCBoYXMgYSBuZXcg dGhpbmcsIOKAnG1hY3Z0YXDigJ0uIEkgZG9u4oCZdCBrbm93IHdoYXTigJlzIHRoZSBwZXJmb3Jt YW5jZSBvZiB1c2luZyBtYWN2dGFwLiBJIG9ubHkga25vdyBpdCBoYXMgbXVjaCB3b3JzZSBwZXJm IHRoYW4gdGhlIOKAnHJlYWzigJ0gcGNpIHBhc3MtdGhyb3VnaC4NCg0KSSBhbHNvIGRvbuKAmXQg a25vdyB3aHkgeW91IHNlbGVjdCBzdWNoIGNvbmZpZyBmb3IgeW91ciBzZXR1cCwgYW5vbnltb3Vz IGh1Z2UgcGFnZXMgYW5kIG1hY3Z0YXAuIEFueSBzcGVjaWZpYyBwdXJwb3NlPw0KDQpJIHRoaW5r IHlvdSBzaG91bGQgZ2V0IGEgYmFzZWxpbmUgZmlyc3QsIHRoZW4gdG8gZ2V0IGhvdyBtdWNoIHBl cmYgZHJvcHBlZCBpZiB1c2luZyBhbm9ueW1vdXMgaHVnZXBhZ2VzIG9yIG1hY3Z0YXDjgIINCg0K MS4gICAgICBCYXNlbGluZTogcmVhbCBodWdlcGFnZSArIHJlYWwgcGNpIHBhc3MtdGhyb3VnaA0K DQoyLiAgICAgIEFub24gaHVnZXBhZ2VzIHZzIGh1Z2VwYWdlcw0KDQozLiAgICAgIFJlYWwgcGNp IHBhc3MtdGhyb3VnaCB2cy4gbWFjdnRhcA0KDQpGcm9tOiBlZGdhciBoZWxtdXQgW21haWx0bzpo ZWxtdXQuZWRnYXIxMDBAZ21haWwuY29tPG1haWx0bzpoZWxtdXQuZWRnYXIxMDBAZ21haWwuY29t Pl0NClNlbnQ6IFNhdHVyZGF5LCBEZWNlbWJlciAyNCwgMjAxNiAzOjIzIEFNDQpUbzogSHUsIFh1 ZWt1biA8eHVla3VuLmh1QGludGVsLmNvbTxtYWlsdG86eHVla3VuLmh1QGludGVsLmNvbT4+DQpD YzogV2lsZXMsIEtlaXRoIDxrZWl0aC53aWxlc0BpbnRlbC5jb208bWFpbHRvOmtlaXRoLndpbGVz QGludGVsLmNvbT4+OyB1c2Vyc0BkcGRrLm9yZzxtYWlsdG86dXNlcnNAZHBkay5vcmc+DQoNClN1 YmplY3Q6IFJlOiBbZHBkay11c2Vyc10gRHBkayBwb29yIHBlcmZvcm1hbmNlIG9uIHZpcnR1YWwg bWFjaGluZQ0KDQpIZWxsbywNCkkgY2hhbmdlZCB0aGUgc2V0dXAgYnV0IHN0aWxsIHBlcmZvcm1h bmNlIGFyZSBwb29yIDooIGFuZCBJIG5lZWQgeW91ciBoZWxwIHRvIHVuZGVyc3RhbmQgdGhlIHJv b3QgY2F1c2UuDQp0aGUgc2V0dXAgaXMgKHNvcnJ5IGZvciBsb25nIGRlc2NyaXB0aW9uKToNCih0 ZXN0IGVxdWlwbWVudCBpcyBwa3RnZW4gdXNpbmcgZHBkayBpbnN0YWxsZWQgb24gYSBzZWNvbmQg cGh5c2ljYWwgbWFjaGluZSBjb29uZWN0ZWQgd2l0aCA4MjU5OSBOSUNzKQ0KaG9zdDogSW50ZWwo UikgWGVvbihSKSBDUFUgRTUtMjY0MCB2NCBAIDIuNDBHSHogd2l0aCBzaW5nbGUgc29ja2V0ICwg dWJ1bnR1IDE2LjA0LCB3aXRoIDQgaHVnZXBhZ2VzIG9mIDFHIGVhY2guDQpoeXBlcnZpem9yIChr dm0pOiBRRU1VIGVtdWxhdG9yIHZlcnNpb24gMi41LjANCmd1ZXN0OiBzYW1lIGNwdSBhcyBob3N0 LCBjcmVhdGVkIHdpdGggMyB2Y3B1cywgdXNpbmcgdWJ1bnR1IDE2LjA0DQpkcGRrOiB0cmllZCAy LjIsIDE2LjA0LCAxNi4wNywgMTYuMTEgLSB1c2luZyB0ZXN0cG1kIGFuZCA1MTIgcGFnZXMgb2Yg Mk0gZWFjaC4NCmd1ZXN0IHRvdGFsIG1lbW9yeSBpcyAyRyBhbmQgYWxsIG9mIGl0IGlzIGJhY2tl ZCBieSB0aGUgaG9zdCB3aXRoIHRyYW5zcGFyZW50IGh1Z2VwYWdlcyAoSSBjYW4gc2VlIHRoZSBB bm9uSHVnZVBhZ2VzIGNvbnN1bWVkIGF0IGd1ZXN0IGNyZWF0aW9uKS4gVGhpcyBtZW1vcnkgaW5j bHVkZXMgdGhlIDUxMiBodWdlcGFnZXMgZm9yIHRoZSB0ZXN0cG1kIGFwcGxpY2F0aW9uLg0KSSBw aW5uZWQgYW5kIGlzb2xhdGVkIHRoZSBndWVzdCdzIHZjcHVzICh1c2luZyBrZXJuZWwgb3B0aW9u IGlzb2xjYXB1KSwgYW5kIGNvdWxkIHNlZSBjbGVhcmx5IHRoYXQgdGhlIGlzb2xhdGlvbiBmdW5j dGlvbnMgd2VsbC4NCg0KMiB4IDgyNTk5IE5JQ3MgY29ubmVjdGVkIGFzIHBhc3N0aHJvdWdoIHVz aW5nIG1hY3Z0YXAgaW50ZXJmYWNlcyB0byB0aGUgZ3Vlc3QsIHNvIHRoZSBndWVzdCByZWNlaXZl cyBhbmQgZm9yd2FyZHMgcGFja2V0cyBmcm9tIG9uZSBpbnRlcmZhY2UgdG8gdGhlIHNlY29uZCBh bmQgdmljZSB2ZXJzYS4NCmF0IHRoZSBndWVzdCBJIGJpbmQgaXRzIGludGVyZmFjZXMgdXNpbmcg aWdiX3Vpby4NCnRoZSB0ZXN0cG1kIGF0IGd1ZXN0IHN0YXJ0cyBkcm9wcGluZyBwYWNrZXRzIGF0 IGFib3V0IH44MDBtYnBzIGJldHdlZW4gYm90aCBwb3J0cyBiaS1kaXJlY3Rpb25hbCB1c2luZyB0 d28gdmNwdXMgZm9yIGZvcndhcmRpbmcgKG9uZSBmb3IgdGhlIGFwcGxpY2F0aW9uIG1hbmFnZW1l bnQgYW5kIHR3byBmb3IgZm9yd2FyZGluZykuDQphdCAxLjIgZ2JwcyBpdCBkcm9wcyBhIGxvdCBv ZiBwYWNrZXRzLg0KdGhlIHNhbWUgdGVzdHBtZCBjb25maWd1cmF0aW9uIG9uIHRoZSBob3N0IChi ZXR3ZWVuIGJvdGggODI1OTkgTklDcykgZm9yd2FyZHMgYWJvdXQgNS02Z2JwcyBvbiBib3RoIHBv cnRzIGJpLWRpcmVjdGlvbmFsLg0KDQpJIGFzc3VtZWQgdGhhdCBmb3J3YXJkaW5nIH41LTYgZ2Jw cyBiZXR3ZWVuIHR3byBwb3J0cyBzaG91bGQgYmUgdHJpdmlhbCwgc28gaXQgd2lsbCBiZSBncmVh dCBpZiBzb21lb25lIGNhbiBzaGFyZSBpdHMgY29uZmlndXJhdGlvbiBmb3IgYSB0ZXN0ZWQgc2V0 dXAuDQpBbnkgZnVydGhlciBpZGVhIHdpbGwgYmUgaGlnaGx5IGFwcHJlY2lhdGVkLg0KDQpUaGFu a3MuDQoNCk9uIFNhdCwgRGVjIDE3LCAyMDE2IGF0IDI6NTYgUE0gZWRnYXIgaGVsbXV0IDxoZWxt dXQuZWRnYXIxMDBAZ21haWwuY29tPG1haWx0bzpoZWxtdXQuZWRnYXIxMDBAZ21haWwuY29tPj4g d3JvdGU6DQpUaGF0J3Mgd2hhdCBJIGFmcmFpZC4NCkluIGZhY3QgaSBuZWVkIHRoZSBob3N0IHRv IGJhY2sgdGhlIGVudGlyZSBndWVzdCdzIG1lbW9yeSB3aXRoIGh1Z2VwYWdlcy4NCkkgd2lsbCBm aW5kIHRoZSB3YXkgdG8gZG8gdGhhdCBhbmQgbWFrZSB0aGUgdGVzdGluZyBhZ2Fpbi4NCg0KDQpP biAxNiBEZWMgMjAxNiAzOjE0IEFNLCAiSHUsIFh1ZWt1biIgPHh1ZWt1bi5odUBpbnRlbC5jb208 bWFpbHRvOnh1ZWt1bi5odUBpbnRlbC5jb20+PiB3cm90ZToNCllvdSBzYWlkIFZN4oCZcyBtZW1v cnkgd2FzIDZHLCB3aGlsZSB0cmFuc3BhcmVudCBodWdlcGFnZXMgd2FzIG9ubHkgdXNlZCB+NEcg KDQzNjAxOTJLQikuIFNvIHNvbWUgd2VyZSBtYXBwZWQgdG8gNEsgcGFnZXMuDQoNCkJUVywgdGhl IG1lbW9yeSB1c2VkIGJ5IHRyYW5zcGFyZW50IGh1Z2VwYWdlIGlzIG5vdCB0aGUgaHVnZXBhZ2Ug eW91IHJlc2VydmVkIGluIGtlcm5lbCBib290IG9wdGlvbi4NCg0KRnJvbTogZWRnYXIgaGVsbXV0 IFttYWlsdG86aGVsbXV0LmVkZ2FyMTAwQGdtYWlsLmNvbTxtYWlsdG86aGVsbXV0LmVkZ2FyMTAw QGdtYWlsLmNvbT5dDQpTZW50OiBGcmlkYXksIERlY2VtYmVyIDE2LCAyMDE2IDE6MjQgQU0NClRv OiBIdSwgWHVla3VuDQpDYzogV2lsZXMsIEtlaXRoOyB1c2Vyc0BkcGRrLm9yZzxtYWlsdG86dXNl cnNAZHBkay5vcmc+DQpTdWJqZWN0OiBSZTogW2RwZGstdXNlcnNdIERwZGsgcG9vciBwZXJmb3Jt YW5jZSBvbiB2aXJ0dWFsIG1hY2hpbmUNCg0KaW4gZmFjdCB0aGUgdm0gd2FzIGNyZWF0ZWQgd2l0 aCA2RyBSQU0sIGl0cyBrZXJuZWwgYm9vdCBhcmdzIGFyZSBkZWZpbmVkIHdpdGggNCBodWdlcGFn ZXMgb2YgMUcgZWFjaCwgdGhvdWdoIHdoZW4gc3RhcnRpbmcgdGhlIHZtIGkgbm90ZWQgdGhhdCBh bm9uaHVnZXBhZ2VzIGluY3JlYXNlZC4NClRoZSByZWxldmFudCBxZW11IHByb2Nlc3MgaWQgaXMg NjA3NCwgYW5kIHRoZSBmb2xsb3dpbmcgc3VtcyB0aGUgYW1vdW50IG9mIGFsbG9jYXRlZCBBbm9u SHVnZVBhZ2VzOg0Kc3VkbyBncmVwIC1lIEFub25IdWdlUGFnZXMgIC9wcm9jLzYwNzQvc21hcHMg fCBhd2sgICd7IGlmKCQyPjApIHByaW50ICQyfSAnfGF3ayAne3MrPSQxfSBFTkQge3ByaW50IHN9 Jw0Kd2hpY2ggcmVzdWx0cyB3aXRoIDQzNjAxOTINCnNvIG5vdCBhbGwgdGhlIG1lbW9yeSBpcyBi YWNrZWQgd2l0aCB0cmFuc3BhcmVudCBodWdlcGFnZXMgdGhvdWdoIGl0IGlzIG1vcmUgdGhhbiB0 aGUgYW1vdW50IG9mIGh1Z2VwYWdlcyB0aGUgZ3Vlc3Qgc3VwcG9zZWQgdG8gYm9vdCB3aXRoLg0K SG93IGNhbiBJIGJlIHN1cmUgdGhhdCB0aGUgcmVxdWlyZWQgNEcgaHVnZXBhZ2VzIGFyZSByZWFs bHkgYWxsb2NhdGVkPywgYW5kIG5vdCwgZm9yIGV4YW1wbGUsIG9ubHkgMkcgb3V0IG9mIHRoZSA0 RyBhcmUgYWxsb2NhdGVkIChhbmQgdGhlIHJlc3QgMiBhcmUgbWFwcGluZyBvZiB0aGUgZGVmYXVs dCA0Syk/DQoNCnRoYW5rcw0KDQpPbiBUaHUsIERlYyAxNSwgMjAxNiBhdCA0OjMzIFBNLCBIdSwg WHVla3VuIDx4dWVrdW4uaHVAaW50ZWwuY29tPG1haWx0bzp4dWVrdW4uaHVAaW50ZWwuY29tPj4g d3JvdGU6DQpBcmUgeW91IHN1cmUgdGhlIGFub25odWdlcGFnZXMgc2l6ZSB3YXMgZXF1YWwgdG8g dGhlIHRvdGFsIFZNJ3MgbWVtb3J5IHNpemU/DQpTb21ldGltZXMsIHRyYW5zcGFyZW50IGh1Z2Ug cGFnZSBtZWNoYW5pc20gZG9lc24ndCBncmFudGVlIHRoZSBhcHAgaXMgdXNpbmcNCnRoZSByZWFs IGh1Z2UgcGFnZXMuDQoNCg0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IHVzZXJz IFttYWlsdG86dXNlcnMtYm91bmNlc0BkcGRrLm9yZzxtYWlsdG86dXNlcnMtYm91bmNlc0BkcGRr Lm9yZz5dIE9uIEJlaGFsZiBPZiBlZGdhciBoZWxtdXQNClNlbnQ6IFRodXJzZGF5LCBEZWNlbWJl ciAxNSwgMjAxNiA5OjMyIFBNDQpUbzogV2lsZXMsIEtlaXRoDQpDYzogdXNlcnNAZHBkay5vcmc8 bWFpbHRvOnVzZXJzQGRwZGsub3JnPg0KU3ViamVjdDogUmU6IFtkcGRrLXVzZXJzXSBEcGRrIHBv b3IgcGVyZm9ybWFuY2Ugb24gdmlydHVhbCBtYWNoaW5lDQoNCkkgaGF2ZSBvbmUgc2luZ2xlIHNv Y2tldCB3aGljaCBpcyBJbnRlbChSKSBYZW9uKFIpIENQVSBFNS0yNjQwIHY0IEAgMi40MEdIei4N Cg0KSSBqdXN0IG1hZGUgdHdvIG1vcmUgc3RlcHM6DQoxLiBzZXR0aW5nIGlvbW11PXB0IGZvciBi ZXR0ZXIgdXNhZ2Ugb2YgdGhlIGlnYl91aW8NCjIuIHVzaW5nIHRhc2tzZXQgYW5kIGlzb2xjcHUg c28gbm93IGl0IGxvb2tzIGxpa2UgdGhlIHJlbGV2YW50IGRwZGsgY29yZXMNCnVzZSBkZWRpY2F0 ZWQgY29yZXMuDQoNCkl0IGltcHJvdmVkIHRoZSBwZXJmb3JtYW5jZSB0aG91Z2ggSSBzdGlsbCBz ZWUgc2lnbmlmaWNhbnQgZGlmZmVyZW5jZQ0KYmV0d2VlbiB0aGUgdm0gYW5kIHRoZSBob3N0IHdo aWNoIEkgY2FuJ3QgZnVsbHkgZXhwbGFpbi4NCg0KYW55IGZ1cnRoZXIgaWRlYT8NCg0KUmVnYXJk cywNCkVkZ2FyDQoNCg0KT24gVGh1LCBEZWMgMTUsIDIwMTYgYXQgMjo1NCBQTSwgV2lsZXMsIEtl aXRoIDxrZWl0aC53aWxlc0BpbnRlbC5jb208bWFpbHRvOmtlaXRoLndpbGVzQGludGVsLmNvbT4+ IHdyb3RlOg0KDQo+DQo+ID4gT24gRGVjIDE1LCAyMDE2LCBhdCAxOjIwIEFNLCBlZGdhciBoZWxt dXQgPGhlbG11dC5lZGdhcjEwMEBnbWFpbC5jb208bWFpbHRvOmhlbG11dC5lZGdhcjEwMEBnbWFp bC5jb20+Pg0KPiB3cm90ZToNCj4gPg0KPiA+IEhpLg0KPiA+IFNvbWUgaGVscCBpcyBuZWVkZWQg dG8gdW5kZXJzdGFuZCBwZXJmb3JtYW5jZSBpc3N1ZSBvbiB2aXJ0dWFsIG1hY2hpbmUuDQo+ID4N Cj4gPiBSdW5uaW5nIHRlc3RwbWQgb3ZlciB0aGUgaG9zdCBmdW5jdGlvbnMgd2VsbCAodGVzdHBt ZCBmb3J3YXJkcyAxMGcNCj4gYmV0d2Vlbg0KPiA+IHR3byA4MjU5OSBwb3J0cykuDQo+ID4gSG93 ZXZlciBzYW1lIGFwcGxpY2F0aW9uIHJ1bm5pbmcgb24gYSB2aXJ0dWFsIG1hY2hpbmUgb3ZlciBz YW1lIGhvc3QNCj4gPiByZXN1bHRzIHdpdGggaHVnZSBkZWdyYWRhdGlvbiBpbiBwZXJmb3JtYW5j ZS4NCj4gPiBUaGUgdGVzdHBtZCB0aGVuIGlzIG5vdCBldmVuIGFibGUgdG8gcmVhZCAxMDBtYnBz IGZyb20gbmljIHdpdGhvdXQgZHJvcHMsDQo+ID4gYW5kIGZyb20gYSBwcm9maWxlIGkgbWFkZSBp dCBsb29rcyBsaWtlIGEgZHBkayBhcHBsaWNhdGlvbiBydW5zIG1vcmUgdGhhbg0KPiA+IDEwIHRp bWVzIHNsb3dlciB0aGFuIG92ZXIgaG9zdOKApg0KPg0KPiBOb3Qgc3VyZSBJIHVuZGVyc3RhbmQg dGhlIG92ZXJhbGwgc2V0dXAsIGJ1dCBkaWQgeW91IG1ha2Ugc3VyZSB0aGUgTklDL1BDSQ0KPiBi dXMgaXMgb24gdGhlIHNhbWUgc29ja2V0IGFzIHRoZSBWTS4gSWYgeW91IGhhdmUgbXVsdGlwbGUg c29ja2V0cyBvbiB5b3VyDQo+IHBsYXRmb3JtLiBJZiB5b3UgaGF2ZSB0byBhY2Nlc3MgdGhlIE5J QyBhY3Jvc3MgdGhlIFFQSSBpdCBjb3VsZCBleHBsYWluDQo+IHNvbWUgb2YgdGhlIHBlcmZvcm1h bmNlIGRyb3AuIE5vdCBzdXJlIHRoYXQgbXVjaCBkcm9wIGlzIHRoaXMgcHJvYmxlbS4NCj4NCj4g Pg0KPiA+IFNldHVwIGlzIHVidW50dSAxNi4wNCBmb3IgaG9zdCBhbmQgdWJ1bnR1IDE0LjA0IGZv ciBndWVzdC4NCj4gPiBRZW11IGlzIDIuMy4wICh0aG91Z2ggSSB0cmllZCB3aXRoIGEgbmV3ZXIg YXMgd2VsbCkuDQo+ID4gTklDcyBhcmUgY29ubmVjdGVkIHRvIGd1ZXN0IHVzaW5nIHBjaSBwYXNz dGhyb3VnaCwgYW5kIGd1ZXN0J3MgY3B1IGlzIHNldA0KPiA+IGFzIHBhc3N0aHJvdWdoIChzYW1l IGFzIGhvc3QpLg0KPiA+IE9uIGd1ZXN0IHN0YXJ0IHRoZSBob3N0IGFsbG9jYXRlcyB0cmFuc3Bh cmVudCBodWdlcGFnZXMgKEFub25IdWdlUGFnZXMpDQo+IHNvDQo+ID4gaSBhc3N1bWUgdGhlIGd1 ZXN0IG1lbW9yeSBpcyBiYWNrZWQgd2l0aCByZWFsIGh1Z2VwYWdlcyBvbiB0aGUgaG9zdC4NCj4g PiBJIHRyaWVkIGJpbmRpbmcgd2l0aCBpZ2JfdWlvIGFuZCB3aXRoIHVpb19wY2lfZ2VuZXJpYyBi dXQgYm90aCByZXN1bHRzDQo+IHdpdGgNCj4gPiBzYW1lIHBlcmZvcm1hbmNlLg0KPiA+DQo+ID4g RHVlIHRvIHRoZSBwZXJmb3JtYW5jZSBkaWZmZXJlbmNlIGkgZ3Vlc3MgaSBtaXNzIHNvbWV0aGlu Zy4NCj4gPg0KPiA+IFBsZWFzZSBhZHZpc2Ugd2hhdCBtYXkgaSBtaXNzIGhlcmU/DQo+ID4gSXMg dGhpcyBhIG5hdGl2ZSBwZW5hbHR5IG9mIHFlbXU/Pw0KPiA+DQo+ID4gVGhhbmtzDQo+ID4gRWRn YXINCj4NCj4gUmVnYXJkcywNCj4gS2VpdGgNCj4NCj4NCg0KDQo=