From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rodrigo Vivi Subject: Re: [PATCH 2/5] drm/i915: Record platform specific ppGTT size in intel_device_info Date: Thu, 14 Mar 2019 16:56:08 -0700 Message-ID: <20190314235608.GD11873@intel.com> References: <20190314223839.28258-1-chris@chris-wilson.co.uk> <20190314223839.28258-2-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id 05EA96E17F for ; Thu, 14 Mar 2019 23:55:55 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20190314223839.28258-2-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBNYXIgMTQsIDIwMTkgYXQgMTA6Mzg6MzZQTSArMDAwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IEFzIHRoZSBtYXhpbXVtIGFkZHJlc3NhYmxlIGJpdHMgaXMgZGV0ZXJtaW5lZCBieSBw bGF0Zm9ybSwgcmVjb3JkIHRoYXQKPiBpbmZvcm1hdGlvbiBpbiBvdXIgc3RhdGljIGNoaXBzZXQg dGFibGVzLiBUaGlzIGhhcyB0aGUgYWR2YW50YWdlIG9mCj4gYmVpbmcgY2xlYXJseSByZWNvcmRl ZCBpbiBvdXIgY2FwYWJpbGl0eSBkdW1wcyBmb3IgZG1lc2csIGRlYnVnZnMgYW5kCj4gZXJyb3Ig c3RhdGVzLgo+IAo+IEJhc2VkIG9uIGEgcGF0Y2ggYnkgQm9iIFBhYXV3ZSA8Ym9iLmoucGFhdXdl QGludGVsLmNvbT4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlz LXdpbHNvbi5jby51az4KPiBDYzogQm9iIFBhYXV3ZSA8Ym9iLmoucGFhdXdlQGludGVsLmNvbT4K PiBDYzogTWF0dGhldyBBdWxkIDxtYXR0aGV3LndpbGxpYW0uYXVsZEBnbWFpbC5jb20+Cj4gQ2M6 IEpvb25hcyBMYWh0aW5lbiA8am9vbmFzLmxhaHRpbmVuQGxpbnV4LmludGVsLmNvbT4KPiAtLS0K PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAgICB8ICAyICstCj4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jICAgICAgICAgfCAgOCArKy0tLS0t LQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BjaS5jICAgICAgICAgICAgIHwgMTggKysr KysrKysrKysrLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RldmljZV9pbmZv LmMgICAgfCAgMiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZXZpY2VfaW5mby5o ICAgIHwgIDYgKysrKy0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9odWdlX3Bh Z2VzLmMgfCAgMyArKy0KPiAgNiBmaWxlcyBjaGFuZ2VkLCAyMiBpbnNlcnRpb25zKCspLCAxNyBk ZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBpbmRleCBkY2NiNjAwNmFh YmYuLjQ4NjRhMzVkZGFjYSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC0yNDUy LDcgKzI0NTIsNyBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBpOTE1X3NnX3NlZ21lbnRf c2l6ZSh2b2lkKQo+ICAKPiAgI2RlZmluZSBIQVNfRVhFQ0xJU1RTKGRldl9wcml2KSBIQVNfTE9H SUNBTF9SSU5HX0NPTlRFWFRTKGRldl9wcml2KQo+ICAKPiAtI2RlZmluZSBJTlRFTF9QUEdUVChk ZXZfcHJpdikgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5wcGd0dCkKPiArI2RlZmluZSBJTlRFTF9Q UEdUVChkZXZfcHJpdikgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5wcGd0dF90eXBlKQo+ICAjZGVm aW5lIEhBU19QUEdUVChkZXZfcHJpdikgXAo+ICAJKElOVEVMX1BQR1RUKGRldl9wcml2KSAhPSBJ TlRFTF9QUEdUVF9OT05FKQo+ICAjZGVmaW5lIEhBU19GVUxMX1BQR1RUKGRldl9wcml2KSBcCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiBpbmRleCBkYWMwOGQ5YzNmYWIuLjg0NWQw ZWQ1NzU1YiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQu Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4gQEAgLTE1Mzgs MTAgKzE1MzgsNyBAQCBzdGF0aWMgc3RydWN0IGk5MTVfaHdfcHBndHQgKmdlbjhfcHBndHRfY3Jl YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAKPiAgCXBwZ3R0LT52bS5pOTE1 ID0gaTkxNTsKPiAgCXBwZ3R0LT52bS5kbWEgPSAmaTkxNS0+ZHJtLnBkZXYtPmRldjsKPiAtCj4g LQlwcGd0dC0+dm0udG90YWwgPSBIQVNfRlVMTF80OEJJVF9QUEdUVChpOTE1KSA/Cj4gLQkJMVVM TCA8PCA0OCA6Cj4gLQkJMVVMTCA8PCAzMjsKPiArCXBwZ3R0LT52bS50b3RhbCA9IEJJVF9VTEwo SU5URUxfSU5GTyhpOTE1KS0+cHBndHRfc2l6ZSk7Cj4gIAo+ICAJLyogRnJvbSBiZHcsIHRoZXJl IGlzIHN1cHBvcnQgZm9yIHJlYWQtb25seSBwYWdlcyBpbiB0aGUgUFBHVFQuICovCj4gIAlwcGd0 dC0+dm0uaGFzX3JlYWRfb25seSA9IHRydWU7Cj4gQEAgLTE5OTEsOCArMTk4OCw3IEBAIHN0YXRp YyBzdHJ1Y3QgaTkxNV9od19wcGd0dCAqZ2VuNl9wcGd0dF9jcmVhdGUoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUpCj4gIAo+ICAJcHBndHQtPmJhc2Uudm0uaTkxNSA9IGk5MTU7Cj4gIAlw cGd0dC0+YmFzZS52bS5kbWEgPSAmaTkxNS0+ZHJtLnBkZXYtPmRldjsKPiAtCj4gLQlwcGd0dC0+ YmFzZS52bS50b3RhbCA9IEk5MTVfUERFUyAqIEdFTjZfUFRFUyAqIEk5MTVfR1RUX1BBR0VfU0la RTsKPiArCXBwZ3R0LT5iYXNlLnZtLnRvdGFsID0gQklUX1VMTChJTlRFTF9JTkZPKGk5MTUpLT5w cGd0dF9zaXplKTsKCiEgSSB3b3VsZCBzd2VhciB0aGlzIHdhcyAzMiBzbyBJIGhhZCB0byBjaGVj ayBpdCB3aXRoOgoKNTEyICogKCh1bnNpZ25lZCBpbnQpIGdldHBhZ2VzaXplKCkvc2l6ZW9mKGlu dCkpICogQklUX1VMTCgxMik7CnZzCkJJVF9VTEwoMzEpCgoyMTQ3NDgzNjQ4IHZzIDIxNDc0ODM2 NDgKClJldmlld2VkLWJ5OiBSb2RyaWdvIFZpdmkgPHJvZHJpZ28udml2aUBpbnRlbC5jb20+Cgo+ ICAKPiAgCWk5MTVfYWRkcmVzc19zcGFjZV9pbml0KCZwcGd0dC0+YmFzZS52bSwgVk1fQ0xBU1Nf UFBHVFQpOwo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wY2ku YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGNpLmMKPiBpbmRleCAzY2Y2OTdlOGYxZmEu LmExM2FjMGYzZTUyOCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Bj aS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wY2kuYwo+IEBAIC0zNDksNyAr MzQ5LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9kZXZpY2VfaW5mbyBpbnRlbF9pcm9u bGFrZV9tX2luZm8gPSB7Cj4gIAkuaGFzX2xsYyA9IDEsIFwKPiAgCS5oYXNfcmM2ID0gMSwgXAo+ ICAJLmhhc19yYzZwID0gMSwgXAo+IC0JLnBwZ3R0ID0gSU5URUxfUFBHVFRfQUxJQVNJTkcsIFwK PiArCS5wcGd0dF90eXBlID0gSU5URUxfUFBHVFRfQUxJQVNJTkcsIFwKPiArCS5wcGd0dF9zaXpl ID0gMzEsIFwKPiAgCUk5WFhfUElQRV9PRkZTRVRTLCBcCj4gIAlJOVhYX0NVUlNPUl9PRkZTRVRT LCBcCj4gIAlHRU5fREVGQVVMVF9QQUdFX1NJWkVTCj4gQEAgLTM5NCw3ICszOTUsOCBAQCBzdGF0 aWMgY29uc3Qgc3RydWN0IGludGVsX2RldmljZV9pbmZvIGludGVsX3NhbmR5YnJpZGdlX21fZ3Qy X2luZm8gPSB7Cj4gIAkuaGFzX2xsYyA9IDEsIFwKPiAgCS5oYXNfcmM2ID0gMSwgXAo+ICAJLmhh c19yYzZwID0gMSwgXAo+IC0JLnBwZ3R0ID0gSU5URUxfUFBHVFRfRlVMTCwgXAo+ICsJLnBwZ3R0 X3R5cGUgPSBJTlRFTF9QUEdUVF9GVUxMLCBcCj4gKwkucHBndHRfc2l6ZSA9IDMxLCBcCj4gIAlJ VkJfUElQRV9PRkZTRVRTLCBcCj4gIAlJVkJfQ1VSU09SX09GRlNFVFMsIFwKPiAgCUdFTl9ERUZB VUxUX1BBR0VfU0laRVMKPiBAQCAtNDQ3LDcgKzQ0OSw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg aW50ZWxfZGV2aWNlX2luZm8gaW50ZWxfdmFsbGV5dmlld19pbmZvID0gewo+ICAJLmhhc19yYzYg PSAxLAo+ICAJLmRpc3BsYXkuaGFzX2dtY2ggPSAxLAo+ICAJLmRpc3BsYXkuaGFzX2hvdHBsdWcg PSAxLAo+IC0JLnBwZ3R0ID0gSU5URUxfUFBHVFRfRlVMTCwKPiArCS5wcGd0dF90eXBlID0gSU5U RUxfUFBHVFRfRlVMTCwKPiArCS5wcGd0dF9zaXplID0gMzEsCj4gIAkuaGFzX3Nub29wID0gdHJ1 ZSwKPiAgCS5oYXNfY29oZXJlbnRfZ2d0dCA9IGZhbHNlLAo+ICAJLmVuZ2luZV9tYXNrID0gQklU KFJDUzApIHwgQklUKFZDUzApIHwgQklUKEJDUzApLAo+IEBAIC00OTUsNyArNDk4LDggQEAgc3Rh dGljIGNvbnN0IHN0cnVjdCBpbnRlbF9kZXZpY2VfaW5mbyBpbnRlbF9oYXN3ZWxsX2d0M19pbmZv ID0gewo+ICAJLnBhZ2Vfc2l6ZXMgPSBJOTE1X0dUVF9QQUdFX1NJWkVfNEsgfCBcCj4gIAkJICAg ICAgSTkxNV9HVFRfUEFHRV9TSVpFXzJNLCBcCj4gIAkuaGFzX2xvZ2ljYWxfcmluZ19jb250ZXh0 cyA9IDEsIFwKPiAtCS5wcGd0dCA9IElOVEVMX1BQR1RUX0ZVTExfNExWTCwgXAo+ICsJLnBwZ3R0 X3R5cGUgPSBJTlRFTF9QUEdUVF9GVUxMXzRMVkwsIFwKPiArCS5wcGd0dF9zaXplID0gNDgsIFwK PiAgCS5oYXNfNjRiaXRfcmVsb2MgPSAxLCBcCj4gIAkuaGFzX3Jlc2V0X2VuZ2luZSA9IDEKPiAg Cj4gQEAgLTU0MCw3ICs1NDQsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2RldmljZV9p bmZvIGludGVsX2NoZXJyeXZpZXdfaW5mbyA9IHsKPiAgCS5oYXNfcmM2ID0gMSwKPiAgCS5oYXNf bG9naWNhbF9yaW5nX2NvbnRleHRzID0gMSwKPiAgCS5kaXNwbGF5Lmhhc19nbWNoID0gMSwKPiAt CS5wcGd0dCA9IElOVEVMX1BQR1RUX0ZVTEwsCj4gKwkucHBndHRfdHlwZSA9IElOVEVMX1BQR1RU X0ZVTEwsCj4gKwkucHBndHRfc2l6ZSA9IDMyLAo+ICAJLmhhc19yZXNldF9lbmdpbmUgPSAxLAo+ ICAJLmhhc19zbm9vcCA9IHRydWUsCj4gIAkuaGFzX2NvaGVyZW50X2dndHQgPSBmYWxzZSwKPiBA QCAtNjE2LDcgKzYyMSw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfZGV2aWNlX2luZm8g aW50ZWxfc2t5bGFrZV9ndDRfaW5mbyA9IHsKPiAgCS5oYXNfbG9naWNhbF9yaW5nX2NvbnRleHRz ID0gMSwgXAo+ICAJLmhhc19sb2dpY2FsX3JpbmdfcHJlZW1wdGlvbiA9IDEsIFwKPiAgCS5oYXNf Z3VjID0gMSwgXAo+IC0JLnBwZ3R0ID0gSU5URUxfUFBHVFRfRlVMTF80TFZMLCBcCj4gKwkucHBn dHRfdHlwZSA9IElOVEVMX1BQR1RUX0ZVTExfNExWTCwgXAo+ICsJLnBwZ3R0X3NpemUgPSA0OCwg XAo+ICAJLmhhc19yZXNldF9lbmdpbmUgPSAxLCBcCj4gIAkuaGFzX3Nub29wID0gdHJ1ZSwgXAo+ ICAJLmhhc19jb2hlcmVudF9nZ3R0ID0gZmFsc2UsIFwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2luZm8uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RldmljZV9pbmZvLmMKPiBpbmRleCBhYWMxOWIxYzQxOWMuLmVkZGY4MzgwNzk1NyAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZXZpY2VfaW5mby5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2luZm8uYwo+IEBAIC04NDQsNyAr ODQ0LDcgQEAgdm9pZCBpbnRlbF9kZXZpY2VfaW5mb19ydW50aW1lX2luaXQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAKPiAgCWlmIChJU19HRU4oZGV2X3ByaXYsIDYpICYm IGludGVsX3Z0ZF9hY3RpdmUoKSkgewo+ICAJCURSTV9JTkZPKCJEaXNhYmxpbmcgcHBHVFQgZm9y IFZULWQgc3VwcG9ydFxuIik7Cj4gLQkJaW5mby0+cHBndHQgPSBJTlRFTF9QUEdUVF9OT05FOwo+ ICsJCWluZm8tPnBwZ3R0X3R5cGUgPSBJTlRFTF9QUEdUVF9OT05FOwo+ICAJfQo+ICAKPiAgCS8q IEluaXRpYWxpemUgY29tbWFuZCBzdHJlYW0gdGltZXN0YW1wIGZyZXF1ZW5jeSAqLwo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZXZpY2VfaW5mby5oIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2luZm8uaAo+IGluZGV4IDA0N2QxMGJkZDQ1NS4u YjU3YjM0Yzk2YjNkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rl dmljZV9pbmZvLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZXZpY2VfaW5m by5oCj4gQEAgLTc2LDcgKzc2LDcgQEAgZW51bSBpbnRlbF9wbGF0Zm9ybSB7Cj4gIAlJTlRFTF9N QVhfUExBVEZPUk1TCj4gIH07Cj4gIAo+IC1lbnVtIGludGVsX3BwZ3R0IHsKPiArZW51bSBpbnRl bF9wcGd0dF90eXBlIHsKPiAgCUlOVEVMX1BQR1RUX05PTkUgPSBJOTE1X0dFTV9QUEdUVF9OT05F LAo+ICAJSU5URUxfUFBHVFRfQUxJQVNJTkcgPSBJOTE1X0dFTV9QUEdUVF9BTElBU0lORywKPiAg CUlOVEVMX1BQR1RUX0ZVTEwgPSBJOTE1X0dFTV9QUEdUVF9GVUxMLAo+IEBAIC0xNjIsNyArMTYy LDkgQEAgc3RydWN0IGludGVsX2RldmljZV9pbmZvIHsKPiAgCWVudW0gaW50ZWxfcGxhdGZvcm0g cGxhdGZvcm07Cj4gIAl1MzIgcGxhdGZvcm1fbWFzazsKPiAgCj4gLQllbnVtIGludGVsX3BwZ3R0 IHBwZ3R0Owo+ICsJZW51bSBpbnRlbF9wcGd0dF90eXBlIHBwZ3R0X3R5cGU7Cj4gKwl1bnNpZ25l ZCBpbnQgcHBndHRfc2l6ZTsgLyogbG9nMiwgZS5nLiAzMS8zMi80OCBiaXRzICovCj4gKwo+ICAJ dW5zaWduZWQgaW50IHBhZ2Vfc2l6ZXM7IC8qIHBhZ2Ugc2l6ZXMgc3VwcG9ydGVkIGJ5IHRoZSBI VyAqLwo+ICAKPiAgCXUzMiBkaXNwbGF5X21taW9fb2Zmc2V0Owo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaHVnZV9wYWdlcy5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvc2VsZnRlc3RzL2h1Z2VfcGFnZXMuYwo+IGluZGV4IDFlNjZjZmY5ODVmOC4uZThiM2Y0 MTdhMTIyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9odWdl X3BhZ2VzLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaHVnZV9wYWdl cy5jCj4gQEAgLTE3MDksNyArMTcwOSw4IEBAIGludCBpOTE1X2dlbV9odWdlX3BhZ2VfbW9ja19z ZWxmdGVzdHModm9pZCkKPiAgCQlyZXR1cm4gLUVOT01FTTsKPiAgCj4gIAkvKiBQcmV0ZW5kIHRv IGJlIGEgZGV2aWNlIHdoaWNoIHN1cHBvcnRzIHRoZSA0OGIgUFBHVFQgKi8KPiAtCW1rd3JpdGVf ZGV2aWNlX2luZm8oZGV2X3ByaXYpLT5wcGd0dCA9IElOVEVMX1BQR1RUX0ZVTExfNExWTDsKPiAr CW1rd3JpdGVfZGV2aWNlX2luZm8oZGV2X3ByaXYpLT5wcGd0dF90eXBlID0gSU5URUxfUFBHVFRf RlVMTF80TFZMOwo+ICsJbWt3cml0ZV9kZXZpY2VfaW5mbyhkZXZfcHJpdiktPnBwZ3R0X3NpemUg PSA0ODsKPiAgCj4gIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4g IAlwcGd0dCA9IGk5MTVfcHBndHRfY3JlYXRlKGRldl9wcml2LCBFUlJfUFRSKC1FTk9ERVYpKTsK PiAtLSAKPiAyLjIwLjEKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZngKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwt Z2Z4