From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 9ED6A432E6; Fri, 10 Nov 2023 14:18:30 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 4B89040695; Fri, 10 Nov 2023 14:18:30 +0100 (CET) Received: from dkmailrelay1.smartsharesystems.com (smartserver.smartsharesystems.com [77.243.40.215]) by mails.dpdk.org (Postfix) with ESMTP id EC37E40291 for ; Fri, 10 Nov 2023 14:18:28 +0100 (CET) Received: from smartserver.smartsharesystems.com (smartserver.smartsharesys.local [192.168.4.10]) by dkmailrelay1.smartsharesystems.com (Postfix) with ESMTP id ACD4520E53; Fri, 10 Nov 2023 14:18:28 +0100 (CET) Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Subject: RE: [dpdk-dev] [PATCH] ring: fix unaligned memory access on aarch32 X-MimeOLE: Produced By Microsoft Exchange V6.5 Date: Fri, 10 Nov 2023 14:18:26 +0100 Message-ID: <98CBD80474FA8B44BF855DF32C47DC35E9F012@smartserver.smartshare.dk> In-Reply-To: <98CBD80474FA8B44BF855DF32C47DC35E9F010@smartserver.smartshare.dk> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [dpdk-dev] [PATCH] ring: fix unaligned memory access on aarch32 Thread-Index: AdX2Nvy5Gi0oTfcnRCSjjFjXwwOPtYgw8JBwAT50woAAAePYAAACTyQgAABPRNAABmfxYA== References: <1583774395-10233-1-git-send-email-phil.yang@arm.com><98CBD80474FA8B44BF855DF32C47DC35E9EFD1@smartserver.smartshare.dk> <98CBD80474FA8B44BF855DF32C47DC35E9F00F@smartserver.smartshare.dk> <98CBD80474FA8B44BF855DF32C47DC35E9F010@smartserver.smartshare.dk> From: =?utf-8?B?TW9ydGVuIEJyw7hydXA=?= To: "Ruifeng Wang" Cc: , , , , , , "Gavin Hu" , "Konstantin Ananyev" , , "Min Zhou" , "David Christensen" , "Stanislaw Kardach" , "Bruce Richardson" , X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org RGVhciBSdWlmZW5nLA0KK0NDOiBhbGwgQ1BVIGFyY2hpdGVjdHVyZSBtYWludGFpbmVycywNCg0K SSdtIHRyeWluZyB0byBmaWd1cmUgb3V0IHRoZSByZXF1aXJlbWVudHMgZm9yIHN1cHBvcnRpbmcg dW5hbGlnbmVkIG1lbW9yeSBhY2Nlc3MgaW4gRFBESyAoc3BlY2lmaWNhbGx5IHRoZSByaW5nIGxp YnJhcnkpLCBhbmQgbmVlZCB5b3VyIGV4cGVydCBmZWVkYmFjay4NCg0KVGhlICNkZWZpbmUgUlRF X0FSQ0hfU1RSSUNUX0FMSUdOIC0gd2hpY2ggaXMgdW5kb2N1bWVudGVkLCBidXQgcHJvYmFibHkg bWVhbnMgdGhhdCBDUFUgbWVtb3J5IGFjY2VzcyBtdXN0IGJlIGFsaWduZWQgLSBpcyBvbmx5IHNl dCBieSAiZ2VuZXJpY19hYXJjaDMyIi4NCg0KU28gd2Ugd2lsbCBhc3N1bWUgdGhhdCBhbGwgb3Ro ZXIgQ1BVIGFyY2hpdGVjdHVyZXMgc3VwcG9ydGVkIGJ5IERQREsgY2FuIGFjY2VzcyB1bmFsaWdu ZWQgbWVtb3J5Lg0KDQpBcyBkaXNjdXNzZWQgaW4gdGhpcyB0aHJlYWQsICJnZW5lcmljX2FhcmNo MzIiIGhhcyBzcGVjaWFsIHJlcXVpcmVtZW50cyBmb3IgcGVyZm9ybWluZyA2NC1iaXQgbG9hZC9z dG9yZSBhdCB1bmFsaWduZWQgYWRkcmVzc2VzLg0KDQpOb3cgY29tZXMgdGhlIGJpZyBxdWVzdGlv bjogQ2FuICJnZW5lcmljX2FhcmNoMzIiIHBlcmZvcm0gMzItYml0IGxvYWQvc3RvcmUgYXQgdW5h bGlnbmVkIGFkZHJlc3NlcyB3aXRob3V0IHNpbWlsYXIgc3BlY2lhbCByZXF1aXJlbWVudHM/IFRo ZW4gdGhlIHJpbmcgbGlicmFyeSBhbHJlYWR5IHN1cHBvcnRzIHVuYWxpZ25lZCAzMi1iaXQgb2Jq ZWN0cywgYW5kIGRvZXNuJ3QgbmVlZCB0byBiZSBmaXhlZCBpbiB0aGlzIHJlZ2FyZC4NCg0KDQpN ZWQgdmVubGlnIGhpbHNlbiAvIEtpbmQgcmVnYXJkcywNCi1Nb3J0ZW4gQnLDuHJ1cA0KDQoNCj4g RnJvbTogTW9ydGVuIEJyw7hydXAgW21haWx0bzptYkBzbWFydHNoYXJlc3lzdGVtcy5jb21dDQo+ IFNlbnQ6IEZyaWRheSwgMTAgTm92ZW1iZXIgMjAyMyAxMS40NA0KPiANCj4gPiBGcm9tOiBLb25z dGFudGluIEFuYW55ZXYgW21haWx0bzprb25zdGFudGluLmFuYW55ZXZAaHVhd2VpLmNvbV0NCj4g PiBTZW50OiBGcmlkYXksIDEwIE5vdmVtYmVyIDIwMjMgMTAuNDUNCj4gPg0KPiA+ID4gRnJvbTog TW9ydGVuIEJyw7hydXAgPG1iQHNtYXJ0c2hhcmVzeXN0ZW1zLmNvbT4NCj4gPiA+IFNlbnQ6IEZy aWRheSwgTm92ZW1iZXIgMTAsIDIwMjMgOTozNCBBTQ0KPiA+ID4NCj4gPiA+ICtDQyBHYXZpbiwg cmV2aWV3ZWQgdGhlIHRlc3QgY2FzZQ0KPiA+ID4NCj4gPiA+ID4gRnJvbTogUnVpZmVuZyBXYW5n IFttYWlsdG86UnVpZmVuZy5XYW5nQGFybS5jb21dDQo+ID4gPiA+IFNlbnQ6IEZyaWRheSwgMTAg Tm92ZW1iZXIgMjAyMyAwOS40MA0KPiA+ID4gPg0KPiA+ID4gPiBPbiAyMDIzLzExLzQgODowNCBB TSwgTW9ydGVuIEJyw7hydXAgd3JvdGU6DQo+ID4gPiA+ID4gSSBoYXZlIGZvciBhIGxvbmcgdGlt ZSBub3cgd29uZGVyZWQgd2h5IHRoZSByaW5nIGZ1bmN0aW9ucyBmb3INCj4gPiA+ID4gZW5xdWV1 ZS9kZXF1ZXVlIG9mIDY0LWJpdCBvYmplY3RzIHN1cHBvcnRzIHVuYWxpZ25lZCBhZGRyZXNzZXMs DQo+IGFuZA0KPiA+IG5vdw0KPiA+ID4gPiBJIGZpbmFsbHkgZm91bmQgdGhlIHBhdGNoIGludHJv ZHVjaW5nIGl0Lg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4+IEZyb206IGRldiBbbWFpbHRvOmRldi1i b3VuY2VzQGRwZGsub3JnXSBPbiBCZWhhbGYgT2YgUGhpbCBZYW5nDQo+ID4gPiA+ID4+IFNlbnQ6 IE1vbmRheSwgOSBNYXJjaCAyMDIwIDE4LjIwDQo+ID4gPiA+ID4+DQo+ID4gPiA+ID4+IFRoZSAz Mi1iaXQgYXJtIG1hY2hpbmUgZG9lc24ndCBzdXBwb3J0IHVuYWxpZ25lZCBtZW1vcnkNCj4gYWNj ZXNzLg0KPiA+IEl0DQo+ID4gPiA+ID4+IHdpbGwgY2F1c2UgYSBidXMgZXJyb3Igb24gYWFyY2gz MiB3aXRoIHRoZSBjdXN0b20gZWxlbWVudCBzaXplDQo+ID4gcmluZy4NCj4gPiA+ID4gPj4NCj4g PiA+ID4gPj4gVGhyZWFkIDEgInRlc3QiIHJlY2VpdmVkIHNpZ25hbCBTSUdCVVMsIEJ1cyBlcnJv ci4NCj4gPiA+ID4gPj4gX19ydGVfcmluZ19lbnF1ZXVlX2VsZW1zXzY0IChuPTEsIG9ial90YWJs ZT0weGY1ZWRmZTQxLA0KPiA+IHByb2RfaGVhZD0wLA0KPiA+ID4gPiBcDQo+ID4gPiA+ID4+IHI9 MHhmNWVkZmI4MCkgYXQgL2J1aWxkL2RwZGsvYnVpbGQvaW5jbHVkZS9ydGVfcmluZ19lbGVtLmg6 MTc3DQo+ID4gPiA+ID4+IDE3NyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmluZ1tpZHgr K10gPSBvYmpbaSsrXTsNCj4gPiA+ID4gPg0KPiA+ID4gPiA+IFdoaWNoIHRlc3QgaXMgdGhpcz8g V2h5IGlzIGl0IHVzaW5nIGFuIHVuYWxpZ25lZCBhcnJheSBvZiA2NC0NCj4gYml0DQo+ID4gPiA+ IG9iamVjdHM/IChOb3RpY2UgdGhhdCBvYmpfdGFibGU9MHhmNWVkZmU0MS4pDQo+ID4gPiA+DQo+ ID4gPiA+IFRoZSB0ZXN0IGNhc2UgaXM6DQo+ID4gPiA+DQo+ID4NCj4gaHR0cHM6Ly9lbGl4aXIu Ym9vdGxpbi5jb20vZHBkay9sYXRlc3Qvc291cmNlL2FwcC90ZXN0L3Rlc3RfcmluZy5jI0wxMTIN Cj4gPiA+ID4gMQ0KPiA+ID4gPiBUaGlzIGNhc2UgZGVsaWJlcmF0ZWx5IHVzZSB1bmFsaWduZWQg b2JqZWN0cy4NCj4gPiA+DQo+ID4gPiBUaGFuayB5b3UsIFJ1aWZlbmcuDQo+ID4gPg0KPiA+ID4g SG9ubmFwcGEsIEkgc2VlIHlvdSBzaWduZWQgb2ZmIG9uIHRoZSBwYXRjaCBpbnRyb2R1Y2luZyB0 aGUgdGVzdA0KPiBmb3INCj4gPiB1bmFsaWduZWQgb2JqZWN0czoNCj4gPiA+DQo+ID4NCj4gaHR0 cDovL2dpdC5kcGRrLm9yZy9kcGRrL2NvbW1pdC9hcHAvdGVzdC90ZXN0X3JpbmcuYz9pZD1hOWZl MTUyMzYzZTI4M2QNCj4gPiA0YzU5MGFiOGU4ZDUxMzk2ZjJmZmFiOWZmDQo+ID4gPg0KPiA+ID4g V2hhdCB3YXMgdGhlIHJhdGlvbmFsZSBiZWhpbmQgdGVzdGluZyBzdXBwb3J0IGZvciB1bmFsaWdu ZWQgb2JqZWN0DQo+ID4gcG9pbnRlcnM/IERpZCBhbnkgYXBwbGljYXRpb25zL2N1c3RvbWVycyB1 c2UgdW5hbGlnbmVkIG9iamVjdA0KPiA+ID4gcG9pbnRlcnMsIG9yIGlzIGl0IGEgcHVyZWx5IGFj YWRlbWljIHRlc3QgY2FzZT8NCj4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBO b2JvZHkgaW4gdGhlaXIgcmlnaHQgbWluZCB3b3VsZCB1c2UgYW4gdW5hbGlnbmVkIGFycmF5IG9m IDY0LQ0KPiBiaXQNCj4gPiA+ID4gb2JqZWN0cy4gWW91IGNhbiBvbmx5IGNyZWF0ZSBzdWNoIGFu IGFycmF5IGlmIHlvdSBmb3JjZSB0aGUNCj4gPiBjb21waWxlciB0bw0KPiA+ID4gPiBwcmV2ZW50 IGF1dG9tYXRpYyBhbGlnbm1lbnQhIEFuZCBhbGwgdGhlIGZ1bmN0aW9ucyBpbiB5b3VyDQo+ID4g YXBwbGljYXRpb24NCj4gPiA+ID4gdXNpbmcgdGhpcyBhcnJheSB3b3VsZCBhbHNvIG5lZWQgdG8g c3VwcG9ydCB1bmFsaWduZWQgYWRkcmVzc2luZw0KPiBvZg0KPiA+ID4gPiB0aGVzZSBvYmplY3Rz Lg0KPiA+DQo+ID4gSXQgY291bGQgYmUganVzdCBvbmUgZWxlbSwgbm90IGFuIGFycmF5Lg0KPiA+ IEFuZCB0aGUgdXNlciBjYW4gdXNlICdwYWNrZWQnIHN0cnVjdCBvciBzby4uLg0KPiA+IEFncmVl LCBub3QgYSBjb21tb24gY2FzZSwgYnV0IHByb2JhYmx5IHN0aWxsIHBvc3NpYmxlLg0KPiANCj4g VmVyeSBnb29kIHBvaW50LCBLb25zdGFudGluLiBBIHNpbmdsZSB1bmFsaWduZWQgb2JqZWN0IGlu IGEgcGFja2VkDQo+IHN0cnVjdHVyZSBpcyBub3QgYXMgZXhvdGljIGFzIGFuIHVuYWxpZ25lZCBh cnJheSBvZiBvYmplY3RzICh3aGljaCBJDQo+IGNvbnNpZGVyIGNvbXBsZXRlbHkgdW5yZWFsaXN0 aWMpLg0KPiANCj4gSWYgYW55b25lIGlzIHVzaW5nIGFuIGFyY2hpdGVjdHVyZSB3aGljaCBkb2Vz bid0IHN1cHBvcnQgdW5hbGlnbmVkDQo+IGFjY2Vzc2VzLCBJIHdvdWxkIGV4cGVjdCB0aGVtIHRv IGNvbXBsZXRlbHkgYXZvaWQgdXNpbmcgdW5hbGlnbmVkDQo+IG9iamVjdHMuIEJ1dCBwZXJoYXBz IHlvdSBhcmUgcmlnaHQ7IGhvd2V2ZXIgdW5saWtlbHksIGl0IG1pZ2h0IGhhcHBlbi4NCj4gDQo+ IElmIHdlIHRoaW5rIHRoaXMgaXMgYSByZWFsIHVzZSBjYXNlLCBzaG91bGQgd2UgYWRkIHN1cHBv cnQgZm9yDQo+IHVuYWxpZ25lZCAzMiBiaXQgb2JqZWN0cz8NCj4gKDEyOCBiaXQgb2JqZWN0cyBh bHJlYWR5IHN1cHBvcnQgdW5hbGlnbmVkIGFjY2VzczsgdGhleSBhcmUgdHlwZSBjYXN0ZWQNCj4g dG8gdm9pZCBwb2ludGVyIGFuZCBhY2Nlc3NlZCB1c2luZyBtZW1jcHkoKS4pDQo+IA0KPiBBbmQg aG93IGFib3V0IHRoZSBzdGFjayBsaWJyYXJ5LCBzaG91bGQgaXQgc3VwcG9ydCB1bmFsaWduZWQg b2JqZWN0cw0KPiB0b28/DQo+IA0KPiA+DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBUaGlzIHNlZW1z IGV4dHJlbWVseSBleG90aWMsIGFuZCBub3Qgc29tZXRoaW5nIGFueSByZWFsDQo+ID4gYXBwbGlj YXRpb24NCj4gPiA+ID4gd291bGQgZG8hDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBJIHdvdWxkIGxp a2UgdG8gcmV2ZXJ0IHRoaXMgcGF0Y2ggZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuDQo+ID4NCj4g PiBNb3J0ZW4sIGNvdWxkIHlvdSBwcm9iYWJseSBleHBsYWluIGZpcnN0IHRoZSBwcm9ibGVtcyB5 b3UgZW5jb3VudGVyZWQNCj4gPiB3aXRoIHRoaXMgcGF0Y2g/DQo+ID4gWW91IG1lbnRpb24gYWJv dXQgJ3BlcmZvcm1hbmNlIHJlYXNvbnMnLCBzbyBkaWQgeW91IG5vdGljZSBhbnkgcmVhbA0KPiA+ IHNsb3dkb3duPw0KPiANCj4gUGxlYXNlIGNoZWNrIG15IHJlcGx5IHRvIHRoZSBzYW1lIHF1ZXN0 aW9uIGhlcmU6DQo+IGh0dHA6Ly9pbmJveC5kcGRrLm9yZy9kZXYvOThDQkQ4MDQ3NEZBOEI0NEJG ODU1REYzMkM0N0RDMzVFOUVGRDNAc21hcnRzDQo+IGVydmVyLnNtYXJ0c2hhcmUuZGsvDQo+IA0K PiA+DQo+ID4gPg0KPiA+ID4gSSBjb3VsZCBhZGQgYW4gUlRFX0FTU0VSVCgpIHRvIHZlcmlmeSB0 aGF0IHRoZSBwb2ludGVyIGlzIGFsaWduZWQsDQo+ID4gZm9yIGRlYnVnZ2luZyBwdXJwb3Nlcy4N Cj4gPiA+DQo+ID4gPiA+ID4NCj4gPiA+ID4gPj4NCj4gPiA+ID4gPj4gRml4ZXM6IGNjNGIyMTg3 OTBmNiAoInJpbmc6IHN1cHBvcnQgY29uZmlndXJhYmxlIGVsZW1lbnQNCj4gc2l6ZSIpDQo+ID4g PiA+ID4+DQo+ID4gPiA+ID4+IFNpZ25lZC1vZmYtYnk6IFBoaWwgWWFuZyA8cGhpbC55YW5nQGFy bS5jb20+DQo+ID4gPiA+ID4+IFJldmlld2VkLWJ5OiBSdWlmZW5nIFdhbmcgPHJ1aWZlbmcud2Fu Z0Bhcm0uY29tPg0KPiA+ID4gPiA+PiBSZXZpZXdlZC1ieTogSG9ubmFwcGEgTmFnYXJhaGFsbGkN Cj4gPGhvbm5hcHBhLm5hZ2FyYWhhbGxpQGFybS5jb20+DQo+ID4gPiA+ID4+IC0tLQ0KPiA+ID4g PiA+PiAgIGxpYi9saWJydGVfcmluZy9ydGVfcmluZ19lbGVtLmggfCA0ICsrLS0NCj4gPiA+ID4g Pj4gICAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQ0KPiA+ ID4gPiA+Pg0KPiA+ID4gPiA+PiBkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV9yaW5nL3J0ZV9yaW5n X2VsZW0uaA0KPiA+ID4gPiA+PiBiL2xpYi9saWJydGVfcmluZy9ydGVfcmluZ19lbGVtLmgNCj4g PiA+ID4gPj4gaW5kZXggMzk3Njc1Ny4uNjYzYWRkYyAxMDA2NDQNCj4gPiA+ID4gPj4gLS0tIGEv bGliL2xpYnJ0ZV9yaW5nL3J0ZV9yaW5nX2VsZW0uaA0KPiA+ID4gPiA+PiArKysgYi9saWIvbGli cnRlX3JpbmcvcnRlX3JpbmdfZWxlbS5oDQo+ID4gPiA+ID4+IEBAIC0xNjAsNyArMTYwLDcgQEAg X19ydGVfcmluZ19lbnF1ZXVlX2VsZW1zXzY0KHN0cnVjdA0KPiBydGVfcmluZw0KPiA+ICpyLA0K PiA+ID4gPiA+PiB1aW50MzJfdCBwcm9kX2hlYWQsDQo+ID4gPiA+ID4+ICAgCWNvbnN0IHVpbnQz Ml90IHNpemUgPSByLT5zaXplOw0KPiA+ID4gPiA+PiAgIAl1aW50MzJfdCBpZHggPSBwcm9kX2hl YWQgJiByLT5tYXNrOw0KPiA+ID4gPiA+PiAgIAl1aW50NjRfdCAqcmluZyA9ICh1aW50NjRfdCAq KSZyWzFdOw0KPiA+ID4gPiA+PiAtCWNvbnN0IHVpbnQ2NF90ICpvYmogPSAoY29uc3QgdWludDY0 X3QgKilvYmpfdGFibGU7DQo+ID4gPiA+ID4+ICsJY29uc3QgdW5hbGlnbmVkX3VpbnQ2NF90ICpv YmogPSAoY29uc3QgdW5hbGlnbmVkX3VpbnQ2NF90DQo+ID4gPiA+ID4+ICopb2JqX3RhYmxlOw0K PiA+ID4gPiA+PiAgIAlpZiAobGlrZWx5KGlkeCArIG4gPCBzaXplKSkgew0KPiA+ID4gPiA+PiAg IAkJZm9yIChpID0gMDsgaSA8IChuICYgfjB4Myk7IGkgKz0gNCwgaWR4ICs9IDQpIHsNCj4gPiA+ ID4gPj4gICAJCQlyaW5nW2lkeF0gPSBvYmpbaV07DQo+ID4gPiA+ID4+IEBAIC0yOTQsNyArMjk0 LDcgQEAgX19ydGVfcmluZ19kZXF1ZXVlX2VsZW1zXzY0KHN0cnVjdA0KPiBydGVfcmluZw0KPiA+ ICpyLA0KPiA+ID4gPiA+PiB1aW50MzJfdCBwcm9kX2hlYWQsDQo+ID4gPiA+ID4+ICAgCWNvbnN0 IHVpbnQzMl90IHNpemUgPSByLT5zaXplOw0KPiA+ID4gPiA+PiAgIAl1aW50MzJfdCBpZHggPSBw cm9kX2hlYWQgJiByLT5tYXNrOw0KPiA+ID4gPiA+PiAgIAl1aW50NjRfdCAqcmluZyA9ICh1aW50 NjRfdCAqKSZyWzFdOw0KPiA+ID4gPiA+PiAtCXVpbnQ2NF90ICpvYmogPSAodWludDY0X3QgKilv YmpfdGFibGU7DQo+ID4gPiA+ID4+ICsJdW5hbGlnbmVkX3VpbnQ2NF90ICpvYmogPSAodW5hbGln bmVkX3VpbnQ2NF90ICopb2JqX3RhYmxlOw0KPiA+ID4gPiA+PiAgIAlpZiAobGlrZWx5KGlkeCAr IG4gPCBzaXplKSkgew0KPiA+ID4gPiA+PiAgIAkJZm9yIChpID0gMDsgaSA8IChuICYgfjB4Myk7 IGkgKz0gNCwgaWR4ICs9IDQpIHsNCj4gPiA+ID4gPj4gICAJCQlvYmpbaV0gPSByaW5nW2lkeF07 DQo+ID4gPiA+ID4+IC0tDQo+ID4gPiA+ID4+IDIuNy40DQo+ID4gPiA+ID4+DQo+ID4gPiA+ID4N Cj4gPiA+ID4gPiBSZWZlcmVuY2VzOg0KPiA+ID4gPiA+DQo+ID4gPiA+DQo+ID4NCj4gaHR0cHM6 Ly9naXQuZHBkay5vcmcvZHBkay9jb21taXQvbGliL2xpYnJ0ZV9yaW5nL3J0ZV9yaW5nX2VsZW0u aD9pZD0zYmENCj4gPiA+ID4gNTE0NzhhM2FiMzEzMmMzM2VmZmM4YjEzMjY0MTIzMzI3NWIzNg0K PiA+ID4gPiA+IGh0dHBzOi8vcGF0Y2h3b3JrLmRwZGsub3JnL3Byb2plY3QvZHBkay9wYXRjaC8x NTgzNzc0Mzk1LTEwMjMzLQ0KPiAxLQ0KPiA+IGdpdC0NCj4gPiA+ID4gc2VuZC1lbWFpbC1waGls LnlhbmdAYXJtLmNvbS8NCj4gPiA+ID4gPg0K