From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by dpdk.space (Postfix) with ESMTP id B80BBA0096 for ; Sat, 16 Mar 2019 19:22:50 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id BF53E11C5; Sat, 16 Mar 2019 19:22:49 +0100 (CET) Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by dpdk.org (Postfix) with ESMTP id 1BB0EDE0 for ; Sat, 16 Mar 2019 19:22:47 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga104.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 16 Mar 2019 11:22:46 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.58,486,1544515200"; d="scan'208";a="127578851" Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by orsmga006.jf.intel.com with ESMTP; 16 Mar 2019 11:22:46 -0700 Received: from FMSMSX110.amr.corp.intel.com (10.18.116.10) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.408.0; Sat, 16 Mar 2019 11:22:45 -0700 Received: from fmsmsx117.amr.corp.intel.com ([169.254.3.142]) by FMSMSX110.amr.corp.intel.com ([169.254.14.3]) with mapi id 14.03.0415.000; Sat, 16 Mar 2019 11:22:45 -0700 From: "Wiles, Keith" To: Pavan Nikhilesh Bhagavatula CC: "stephen@networkplumber.org" , "thomas@monjalon.net" , "dev@dpdk.org" , Jerin Jacob Kollanukkaran Thread-Topic: [EXT] Re: [dpdk-dev] [PATCH v2 2/2] eal: roundup tsc frequency when estimating it Thread-Index: AQHU28bQlfixTMrl5EytlEBwO8MI46YOyuMAgAAGtQCAACS7AIAACqoAgAAHTQA= Date: Sat, 16 Mar 2019 18:22:44 +0000 Message-ID: References: <20181129083138.23029-1-pbhagavatula@caviumnetworks.com> <20190316070302.32432-1-pbhagavatula@marvell.com> <20190316070302.32432-2-pbhagavatula@marvell.com> <86480C64-4ECD-4F4D-968E-5716D02D7D83@intel.com> <3e56d8dbbddfde0c48a26c6257af9c43a42f99dd.camel@marvell.com> <96FB992B-82D4-4B5D-97B1-5E255DD0621F@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.251.15.51] Content-Type: text/plain; charset="UTF-8" Content-ID: <0B83C938141B3A49B2AA0FBA228872E6@intel.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] [EXT] Re: [PATCH v2 2/2] eal: roundup tsc frequency when estimating it 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Message-ID: <20190316182244.A17Uqx5ZOLv8MBA7IaQGgGwKz0jC6xPebRwuDST_R2A@z> DQoNCj4gT24gTWFyIDE2LCAyMDE5LCBhdCAxMjo1NiBQTSwgUGF2YW4gTmlraGlsZXNoIEJoYWdh dmF0dWxhIDxwYmhhZ2F2YXR1bGFAbWFydmVsbC5jb20+IHdyb3RlOg0KPiANCj4gT24gU2F0LCAy MDE5LTAzLTE2IGF0IDE3OjE4ICswMDAwLCBXaWxlcywgS2VpdGggd3JvdGU6DQo+Pj4gT24gTWFy IDE2LCAyMDE5LCBhdCAxMDowNiBBTSwgUGF2YW4gTmlraGlsZXNoIEJoYWdhdmF0dWxhIDwNCj4+ PiBwYmhhZ2F2YXR1bGFAbWFydmVsbC5jb20+IHdyb3RlOg0KPj4+IA0KPj4+IE9uIFNhdCwgMjAx OS0wMy0xNiBhdCAxNDo0MiArMDAwMCwgV2lsZXMsIEtlaXRoIHdyb3RlOg0KPj4+Pj4gT24gTWFy IDE2LCAyMDE5LCBhdCAyOjAzIEFNLCBQYXZhbiBOaWtoaWxlc2ggQmhhZ2F2YXR1bGEgPA0KPj4+ Pj4gcGJoYWdhdmF0dWxhQG1hcnZlbGwuY29tPiB3cm90ZToNCj4+Pj4+IA0KPj4+Pj4gRnJvbTog UGF2YW4gTmlraGlsZXNoIDxwYmhhZ2F2YXR1bGFAbWFydmVsbC5jb20+DQo+Pj4+PiANCj4+Pj4+ IFdoZW4gZXN0aW1hdGluZyB0c2MgZnJlcXVlbmN5IHVzaW5nIHNsZWVwL2dldHRpbWUgcm91bmQg aXQgdXANCj4+Pj4+IHRvDQo+Pj4+PiB0aGUNCj4+Pj4+IG5lYXJlc3QgbXVsdGlwbGUgb2YgMTBN aHogZm9yIG1vcmUgYWNjdXJhY3kuDQo+PiANCj4+IEhvdyBkb2VzIHJvdW5kaW5nIHVwIHRoZSBU U0MgdmFsdWUgYmVjb21lIG1vcmUgYWNjdXJhdGUsIElmIHRoZSB2YWx1ZQ0KPj4gaXMgMSBjeWNs ZXMgbW9yZSB0aGVuIGl0IHNob3VsZCBiZSB0aGVuIHlvdXIgbWFjcm8gd291bGQgcm91bmQgZG93 bg0KPj4gYW5kIGlmIGl0IGlzIDEgY3ljbGUgZ3JlYXRlciB0aGFuIDFFNyBpdCB3b3VsZCByb3Vu ZCB1cC4NCj4gDQo+IEV4YW1wbGUgaW4gY2FzZSBvZiBSVEVfQVJNX0VBTF9SRFRTQ19VU0VfUE1V IGVuYWJsZWQgDQo+IA0KPiBCZWZvcmUgcm91bmR1cCA6IDE0MDAwMDA5NzkNCj4gQWZ0ZXIgcm91 bmR1cCA6IDE0MDAwMDAwMDANCj4gRUFMOiBUU0MgZnJlcXVlbmN5IGlzIH4xNDAwMDAwMDAwIEh6 DQo+IA0KPiANCj4gQmVmb3JlIHJvdW5kdXAgOiAxMzk5OTk5MDYwDQo+IEFmdGVyIHJvdW5kdXAg OiAxNDAwMDAwMDAwDQo+IEVBTDogVFNDIGZyZXF1ZW5jeSBpcyB+MTQwMDAwMDAwMCBIeg0KPiAN Cj4+Pj4+IFNpZ25lZC1vZmYtYnk6IFBhdmFuIE5pa2hpbGVzaCA8cGJoYWdhdmF0dWxhQG1hcnZl bGwuY29tPg0KPj4+Pj4gLS0tDQo+Pj4+PiBVc2VmdWwgaW4gY2FzZSBvZiBBUk02NCBpZiB3ZSBl bmFibGUgUlRFX0FSTV9FQUxfUkRUU0NfVVNFX1BNVSwNCj4+Pj4+IGdldF90c2NfZnJlcV9hcmNo KCkgd2lsbCByZXR1cm4gMCBhcyB0aGVyZSBpcyBubyBpbnN0cnVjdGlvbiB0bw0KPj4+Pj4gZGV0 ZXJtaW5lDQo+Pj4+PiB0aGUgY2xrIG9mIFBNVSBhbmQgZWFsIGZhbGxzIGJhY2sgdG8gc2xlZXAo MSkuDQo+Pj4+PiANCj4+Pj4+IGxpYi9saWJydGVfZWFsL2NvbW1vbi9lYWxfY29tbW9uX3RpbWVy LmMgfCA0ICsrLS0NCj4+Pj4+IGxpYi9saWJydGVfZWFsL2xpbnV4YXBwL2VhbC9lYWxfdGltZXIu YyAgfCAyICstDQo+Pj4+PiAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxl dGlvbnMoLSkNCj4+IA0KPj4gSXQgYXBwZWFycyB5b3UgZGlkIG5vdCB1c2UgdGhlIGhlYWQgb2Yg dGhlIG1hc3RlciBhcyBsaW51eGFwcCBpcyBub3cNCj4+IGp1c3QgbGludXggYW5kIGZyZWVic2Rh cHAgaXMgZnJlZWJzZC4gWW91IG5lZWQgdG8gcmViYXNlIHRvIHRoZSBoZWFkDQo+PiBvZiBtYXN0 ZXIgYW5kIHNlbmQgYSBuZXcgdmVyc2lvbi4NCj4+Pj4+IGRpZmYgLS1naXQgYS9saWIvbGlicnRl X2VhbC9jb21tb24vZWFsX2NvbW1vbl90aW1lci5jDQo+Pj4+PiBiL2xpYi9saWJydGVfZWFsL2Nv bW1vbi9lYWxfY29tbW9uX3RpbWVyLmMNCj4+Pj4+IGluZGV4IGRjZjI2YmZlYS4uMTM1OGJiZWQw IDEwMDY0NA0KPj4+Pj4gLS0tIGEvbGliL2xpYnJ0ZV9lYWwvY29tbW9uL2VhbF9jb21tb25fdGlt ZXIuYw0KPj4+Pj4gKysrIGIvbGliL2xpYnJ0ZV9lYWwvY29tbW9uL2VhbF9jb21tb25fdGltZXIu Yw0KPj4+Pj4gQEAgLTY5LDcgKzY5LDcgQEAgZXN0aW1hdGVfdHNjX2ZyZXEodm9pZCkNCj4+Pj4+ IAkvKiBhc3N1bWUgdGhhdCB0aGUgc2xlZXAoMSkgd2lsbCBzbGVlcCBmb3IgMSBzZWNvbmQgKi8N Cj4+Pj4+IAl1aW50NjRfdCBzdGFydCA9IHJ0ZV9yZHRzYygpOw0KPj4+Pj4gCXNsZWVwKDEpOw0K Pj4+Pj4gLQlyZXR1cm4gcnRlX3JkdHNjKCkgLSBzdGFydDsNCj4+Pj4+ICsJcmV0dXJuIFJURV9B TElHTl9NVUxfTkVBUihydGVfcmR0c2MoKSAtIHN0YXJ0LCAxRTcpOw0KPj4gDQo+PiBUaGUgMUU3 IGlzIGEgbWFnaWMgbnVtYmVyIGNvbnZlcnQgdGhpcyB0byBhIG1lYW5pbmdmdWwgZGVmaW5lLg0K PiANCj4gMUU3IH4gMTBNaHogd2lsbCBjb252ZXJ0IHRvIGEgbWFjcm8uDQo+IA0KPj4+Pj4gfQ0K Pj4+Pj4gDQo+Pj4+PiB2b2lkDQo+Pj4+PiBAQCAtODMsNyArODMsNyBAQCBzZXRfdHNjX2ZyZXEo dm9pZCkNCj4+Pj4+IAlpZiAoIWZyZXEpDQo+Pj4+PiAJCWZyZXEgPSBlc3RpbWF0ZV90c2NfZnJl cSgpOw0KPj4+Pj4gDQo+Pj4+PiAtCVJURV9MT0coREVCVUcsIEVBTCwgIlRTQyBmcmVxdWVuY3kg aXMgfiUiIFBSSXU2NCAiDQo+Pj4+PiBLSHpcbiIsIGZyZXENCj4+Pj4+IC8gMTAwMCk7DQo+Pj4+ PiArCVJURV9MT0coSU5GTywgRUFMLCAiVFNDIGZyZXF1ZW5jeSBpcyB+JSIgUFJJdTY0ICINCj4+ Pj4+IEh6XG4iLCBmcmVxKTsNCj4+Pj4+IAllYWxfdHNjX3Jlc29sdXRpb25faHogPSBmcmVxOw0K Pj4+IA0KPj4+IEkgbWlzc2VkIHRoaXMgbG9nIHdpbGwgcmVtb3ZlIGl0IGluIHRoZSBuZXh0IHZl cnNpb24uDQo+Pj4gDQo+Pj4+PiB9DQo+Pj4+PiANCj4+Pj4+IGRpZmYgLS1naXQgYS9saWIvbGli cnRlX2VhbC9saW51eGFwcC9lYWwvZWFsX3RpbWVyLmMNCj4+Pj4+IGIvbGliL2xpYnJ0ZV9lYWwv bGludXhhcHAvZWFsL2VhbF90aW1lci5jDQo+Pj4+PiBpbmRleCBiYzhmMDUxOTkuLjg2NGQ2ZWYy OSAxMDA2NDQNCj4+Pj4+IC0tLSBhL2xpYi9saWJydGVfZWFsL2xpbnV4YXBwL2VhbC9lYWxfdGlt ZXIuYw0KPj4+Pj4gKysrIGIvbGliL2xpYnJ0ZV9lYWwvbGludXhhcHAvZWFsL2VhbF90aW1lci5j DQo+Pj4+PiBAQCAtMjQ4LDcgKzI0OCw3IEBAIGdldF90c2NfZnJlcSh2b2lkKQ0KPj4+Pj4gDQo+ Pj4+PiAJCWRvdWJsZSBzZWNzID0gKGRvdWJsZSlucy9OU19QRVJfU0VDOw0KPj4+Pj4gCQl0c2Nf aHogPSAodWludDY0X3QpKChlbmQgLSBzdGFydCkvc2Vjcyk7DQo+Pj4+PiAtCQlyZXR1cm4gdHNj X2h6Ow0KPj4+Pj4gKwkJcmV0dXJuIFJURV9BTElHTl9NVUxfTkVBUih0c2NfaHosIDFFNyk7DQo+ Pj4+IA0KPj4+PiBNYXliZSBJIG1pc3NlZCBhbiBlbWFpbCBhYm91dCB0aGlzLCBidXQgd2h5IHdv dWxkIEkgd2FudCB0aGUgVFNDDQo+Pj4+IGh6DQo+Pj4+IHJvdW5kZWQgaGVyZT8gSSBkbyBub3Qg bWluZCB0aGUgbWFjcm8ganVzdCB0aGUgZmFjdCB0aGF0IHdlIGFyZQ0KPj4+PiBjaGFuZ2luZyBU U0MgaHogdmFsdWUuIElmIHRoZSBUU0MgdmFsdWUgaXMgd3JvbmcgdGhlbiB3ZSBuZWVkIHRvDQo+ Pj4+IGZpeA0KPj4+PiB0aGUgdmFsdWUsIGJ1dCBJIGRvIG5vdCBzZWUgaXQgYmVpbmcgd3Jvbmcg aGVyZS4NCj4+PiANCj4+PiBTaW5jZSBpbiB0aGlzIGZ1bmN0aW9uIG5hbm9zbGVlcCBtaWdodCBu b3QgYmUgY3ljbGUgYWNjdXJhdGUgd2UNCj4+PiBuZWVkIHRvDQo+Pj4gcm91bmQgaXQgdXAuDQo+ Pj4gDQo+Pj4gUGxlYXNlIG5vdGUgdGhhdCBlc3RpbWF0aW9uIG9ubHkgYXBwbGllcyB3aGVuICBn ZXRfdHNjX2ZyZXFfYXJjaCgpDQo+Pj4gZmFpbHMuIGkuZSB0aGVyZSBpcyBubyBDUFUgaW5zdHJ1 Y3Rpb24gdGhhdCBzcGVjaWZpZXMgdGhlIGN5Yy9zZWMuDQo+Pj4gDQo+Pj4gQXMgSSBtZW50aW9u ZWQgaW4gdGhlIHBhdGNoIG5vdGVzDQo+Pj4gIlVzZWZ1bCBpbiBjYXNlIG9mIEFSTTY0IGlmIHdl IGVuYWJsZSBSVEVfQVJNX0VBTF9SRFRTQ19VU0VfUE1VLA0KPj4+IGdldF90c2NfZnJlcV9hcmNo KCkgd2lsbCByZXR1cm4gMCBhcyB0aGVyZSBpcyBubyBpbnN0cnVjdGlvbiB0bw0KPj4+IGRldGVy bWluZSB0aGUgY2xvY2sgb2YgUE1VIGFuZCBlYWwgZmFsbHMgYmFjayB0bw0KPj4+IHNsZWVwKDEp L25hbm9zbGVlcC7igJ0gDQo+PiANCj4+IE9LLCBJIGxvb2tlZCBhdCB0aGUgY2hhbmdlcyBhbmQg dGhlIGNvZGUgZm9yIHNldHRpbmcgdGhlIFRTQyBhZ2Fpbi4gSQ0KPj4gd291bGQgaGF2ZSBub3Qg aGFuZGxlZCB0aGUgc2V0dGluZyBvZiBUU0MgaW4gdGhlIHdheSBpdCB3YXMgZG9uZSwgYnV0DQo+ PiB0aGF0IGlzIG5vdCB5b3VyIHByb2JsZW0uIEkgYWdyZWUgdGhlIGNoYW5nZXMgZG8gbG9vayBv aywgdGhlIG9ubHkNCj4+IHByb2JsZW0gSSBoYXZlIGlzIHRoZSBuZXcgbWFjcm8gd2lsbCByb3Vu ZHVwIG9yIGRvd24gZGVwZW5kaW5nIG9uIHRoZQ0KPj4gdmFsdWUuIEluIHlvdXIgc3RhdGVtZW50 IHlvdSBhcmUgd2FudGluZyB0byByb3VuZHVwIHRoZSB2YWx1ZXMuDQo+PiANCj4+IElmIHRoZSBz bGVlcC9uYW5vc2xlZXAgaXMgbGVzcyB0aGFuIGEgc2Vjb25kIGZvciBzb21lIHJlYXNvbiwgdGhl bg0KPj4geW91ciBtYWNybyB3b3VsZCByb3VuZCBpdCBkb3duIGlzIHRoYXQgd2hhdCB3ZSB3YW50 ZWQ/IEkgZ3Vlc3MgbXkNCj4+IHBvaW50IGlzIHlvdSBhcmUgYXNzdW1pbmcgdGhlIFRTQyBjYWxj dWxhdGlvbiB3aWxsIGFsd2F5cyBiZSBsZXNzDQo+PiB0aGFuIGEgc2Vjb25kICh3aXRoIHNsZWVw KSBhbmQgdGhlIG1hY3JvIHdvdWxkIHJvdW5kIHVwIGRlcGVuZGluZyBvbg0KPj4gdGhlIHZhbHVl IGNhbGN1bGF0ZWQgdXNpbmcgdGhlIHNsZWVwL25hbm9zbGVlcC4NCj4+IA0KPj4gSSB3YXMgcGxh eWluZyB3aXRoIHRoZXNlIE1VTCBtYWNyb3MgYW5kIEkgYW0gbm90IHN1cmUgdGhleSBkbyB3aGF0 IHdlDQo+PiBleHBlY3QgaW4gdGhlIGNhc2Ugb2YgdGhlIG11bHRpcGxlIHZhbHVlIGlzIG11Y2gg Y2xvc2VyIHRvIHRoZSB2YWx1ZQ0KPj4gcGFzc2VkLg0KPj4gDQo+PiBJZiB3ZSBoYXZlIGEgdiA9 IDEwMDAxIGFuZCBtdWx0aXBsZSB0byAxMDAwIHdlIGhhdmUgdGhlIGZvbGxvd2luZzoNCj4+IA0K Pj4gUlRFX0FMSUdOX01VTF9DRUlMKDEwMDAxLCAxMDAwKQ0KPj4gCSgxMDAwMSArICgxMDAwIC0g MSkpIC8gKDEwMDAgKiAxMDAwKQ0KPiAoKDEwMDAxICsgKDEwMDAgLSAxKSkgLyAxMDAwKSAqIDEw MDANCj4+IAkoMTAwMDEgKyA5OTkpICAgICAgICAvIDEwMDAwMDANCj4+IAkyMDAwMCAgICAgICAg ICAgICAgICAvIDEwMDAwMDANCj4+IFJlc3VsdDogMA0KPiANCj4gKCgxMDAwMSArICgxMDAwIC0g MSkgLyAxMDAwKSAqIDEwMDANCj4gKCgxMDAwMSArIDk5OSkgLyAxMDAwKSAqIDEwMDANCj4gKDEx MDAwLzEwMDApICogMTAwMA0KPiAxMSAqIDEwMDAgDQo+IA0KPiBSZXN1bHQgOiAxMTAwMA0KPiAN Cj4+IA0KPj4gUlRFX0FMSUdOX01VTF9GTE9PUigxMDAwMSwgMTAwMCkNCj4+IAkoMTAwMDEgLyAo MTAwMCAqIDEwMDApKQ0KPiAoMTAwMDEgLyAxMDAwKSAqIDEwMDANCj4+IAkoMTAwMDEgLyAxMDAw MDAwKQ0KPj4gUmVzdWx0OiAwDQo+IDEwLjAwMSAqIDEwMDANCj4gDQo+IFJlc3VsdCA6IDEwMDAN Cg0KT29vcHMsIHRvbyBtYW55IHBhcmFucyBhbmQgbWlzc2VkIGl0Lg0KDQpUaGVuIHdlIGNhbiBn ZXQgYSBuZXcgdmVyc2lvbiBhbmQgdGhhdCBzaG91bGQgYmUgT0suDQoNCkkgd2lsbCBhZGQgbXkg JDAuMDIgdGhlbjoNCg0KUmV2aWV3ZWQtYnk6IEtlaXRoIFdpbGVzPGtlaXRoLndpbGVzPg0KDQo+ IA0KPj4gDQo+PiBVbmxlc3MgSSBhbSB3cm9uZyBoZXJlIHRoZSB2YWx1ZSB2IG11c3QgYmUgb3Zl ciBhIDEsMDAwLDAwMCB0byBtYWtlDQo+PiB0aGVzZSBtYWNyb3Mgd29yayBvciB0aGUgdmFsdWUg diB0byBiZSBncmVhdGVyIHRoYW4gKG11bCAqIG11bCkgaW4NCj4+IGFsbCBjYXNlcyBvciB6ZXJv IGlzIHRoZSByZXN1bHQuIEl0IG1heSB3b3JrIGZvciB0aGUgVFNDIHZhbHVlcyBhcyB3ZQ0KPj4g YXJlIHVzaW5nIGEgc21hbGwgbXVsIHZhbHVlIGNvbXBhcmVkIHRvIHRoZSBUU0MgdmFsdWUuIElm IERQREsgd2FzDQo+PiBwb3J0ZWQgdG8gYSBzbG93ZXIgbWFjaGluZSBpdCBjb3VsZCBiZSBhbHNv IHplcm8uDQo+IA0KPiBVbmxlc3Mgd2UgaGF2ZSBtYWNoaW5lcyB0aGF0IHJ1biBhdCBmcmVxIDwg MTBNaHogdGhpcyBzY2hlbWUgd2lsbA0KPiBhbHdheXMgd29yay4NCj4gSWYgd2UgaGF2ZSBzdWNo IG1hY2hpbmVzIGxldHMgaG9wZSB0aGF0IHRoZXkgaGF2ZSBhIENQVSBpbnN0cnVjdGlvbg0KPiB0 aGF0IHRlbGxzIHVzIHRoZSBjeWMvc2VjLg0KPiANCj4+IA0KPj4gSSB0aGluayB3ZSBuZWVkIHRv IGZpeCB0aGUgbWFjcm9zIGFuZCByZXRoaW5rIGhvdyBUU0MgaXMgc2V0IGhlcmUuDQo+PiANCj4+ Pj4+IAl9DQo+Pj4+PiAjZW5kaWYNCj4+Pj4+IAlyZXR1cm4gMDsNCj4+Pj4+IC0tDQo+Pj4+PiAy LjIxLjANCj4+Pj4+IA0KPj4+PiANCj4+Pj4gUmVnYXJkcywNCj4+Pj4gS2VpdGgNCj4+IA0KPj4g UmVnYXJkcywNCj4+IEtlaXRoDQo+PiANCj4gDQo+IFJlZ2FyZHMsDQo+IFBhdmFuLg0KDQpSZWdh cmRzLA0KS2VpdGgNCg0K