From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sagar Arun Kamble Subject: Re: [PATCH 04/15] drm/i915/guc: Keep GuC interrupts enabled when using GuC Date: Mon, 5 Mar 2018 14:57:39 +0530 Message-ID: <5a1d836f-2f44-dc77-2669-fe364e66c2bc@intel.com> References: <20180227125230.13000-1-michal.winiarski@intel.com> <20180227125230.13000-4-michal.winiarski@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id BD1016E3FB for ; Mon, 5 Mar 2018 09:27:42 +0000 (UTC) In-Reply-To: <20180227125230.13000-4-michal.winiarski@intel.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: =?UTF-8?Q?Micha=c5=82_Winiarski?= , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org CgpPbiAyLzI3LzIwMTggNjoyMiBQTSwgTWljaGHFgiBXaW5pYXJza2kgd3JvdGU6Cj4gVGhlIEd1 QyBsb2cgY29udGFpbnMgYSBzZXBhcmF0ZSBzcGFjZSB1c2VkIGZvciBjcmFzaCBkdW1wLgo+IFdl IGV2ZW4gZ2V0IGEgc2VwYXJhdGUgbm90aWZpY2F0aW9uIGZvciBpdC4gV2hpbGUgd2UncmUgbm90 IGhhbmRsaW5nCj4gY3Jhc2ggZGlmZmVyZW50bHkgeWV0LCBpdCBtYWtlcyBzZW5zZSB0byBkZWNv dXBsZSB0aGUgdHdvIHJpZ2h0IG5vdyB0bwo+IHNpbXBsaWZ5IHRoZSBmb2xsb3dpbmcgcGF0Y2hl cy4KPgo+IFNpZ25lZC1vZmYtYnk6IE1pY2hhxYIgV2luaWFyc2tpIDxtaWNoYWwud2luaWFyc2tp QGludGVsLmNvbT4KPiBDYzogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+ Cj4gQ2M6IERhbmllbGUgQ2VyYW9sbyBTcHVyaW8gPGRhbmllbGUuY2VyYW9sb3NwdXJpb0BpbnRl bC5jb20+Cj4gQ2M6IFNhZ2FyIEFydW4gS2FtYmxlIDxzYWdhci5hLmthbWJsZUBpbnRlbC5jb20+ Cj4gQ2M6IE1pY2hhbCBXYWpkZWN6a28gPG1pY2hhbC53YWpkZWN6a29AaW50ZWwuY29tPgpSZXZp ZXdlZC1ieTogU2FnYXIgQXJ1biBLYW1ibGUgPHNhZ2FyLmEua2FtYmxlQGludGVsLmNvbT4KPiAt LS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5jICAgICB8IDI4ICsrKysrKysr KysrLS0tLS0tLS0tLS0tLS0tLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5o ICAgICB8ICAyICsrCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9nLmMgfCAy OSArKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfdWMuYyAgICAgIHwgMTQgKysrKystLS0tLS0tLS0KPiAgIDQgZmlsZXMgY2hhbmdlZCwg MzYgaW5zZXJ0aW9ucygrKSwgMzcgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9n dWMuYwo+IGluZGV4IGY2MjJkZDYwMDliNi4uNDFmMmMzYjNjNDgyIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZ3VjLmMKPiBAQCAtNjcsNiArNjcsNyBAQCB2b2lkIGludGVsX2d1Y19pbml0X2Vh cmx5KHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKPiAgIAlpbnRlbF9ndWNfbG9nX2luaXRfZWFybHko Z3VjKTsKPiAgIAo+ICAgCW11dGV4X2luaXQoJmd1Yy0+c2VuZF9tdXRleCk7Cj4gKwlzcGluX2xv Y2tfaW5pdCgmZ3VjLT5pcnFfbG9jayk7Cj4gICAJZ3VjLT5zZW5kID0gaW50ZWxfZ3VjX3NlbmRf bm9wOwo+ICAgCWd1Yy0+bm90aWZ5ID0gZ2VuOF9ndWNfcmFpc2VfaXJxOwo+ICAgfQo+IEBAIC0z NjcsNyArMzY4LDcgQEAgaW50IGludGVsX2d1Y19zZW5kX21taW8oc3RydWN0IGludGVsX2d1YyAq Z3VjLCBjb25zdCB1MzIgKmFjdGlvbiwgdTMyIGxlbikKPiAgIHZvaWQgaW50ZWxfZ3VjX25vdGlm aWNhdGlvbl9oYW5kbGVyKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKPiAgIHsKPiAgIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBndWNfdG9faTkxNShndWMpOwo+IC0JdTMyIG1z ZywgZmx1c2g7Cj4gKwl1MzIgbXNnLCB2YWw7Cj4gICAKPiAgIAkvKgo+ICAgCSAqIFNhbXBsZSB0 aGUgbG9nIGJ1ZmZlciBmbHVzaCByZWxhdGVkIGJpdHMgJiBjbGVhciB0aGVtIG91dCBub3cKPiBA QCAtMzgwLDI0ICszODEsMTggQEAgdm9pZCBpbnRlbF9ndWNfbm90aWZpY2F0aW9uX2hhbmRsZXIo c3RydWN0IGludGVsX2d1YyAqZ3VjKQo+ICAgCSAqIGNvdWxkIGhhcHBlbiB0aGF0IEd1QyBzZXRz IHRoZSBiaXQgZm9yIDJuZCBpbnRlcnJ1cHQgYnV0IEhvc3QKPiAgIAkgKiBjbGVhcnMgb3V0IHRo ZSBiaXQgb24gaGFuZGxpbmcgdGhlIDFzdCBpbnRlcnJ1cHQuCj4gICAJICovCj4gLQo+IC0JbXNn ID0gSTkxNV9SRUFEKFNPRlRfU0NSQVRDSCgxNSkpOwo+IC0JZmx1c2ggPSBtc2cgJiAoSU5URUxf R1VDX1JFQ1ZfTVNHX0NSQVNIX0RVTVBfUE9TVEVEIHwKPiAtCQkgICAgICAgSU5URUxfR1VDX1JF Q1ZfTVNHX0ZMVVNIX0xPR19CVUZGRVIpOwo+IC0JaWYgKGZsdXNoKSB7Cj4gLQkJLyogQ2xlYXIg dGhlIG1lc3NhZ2UgYml0cyB0aGF0IGFyZSBoYW5kbGVkICovCj4gLQkJSTkxNV9XUklURShTT0ZU X1NDUkFUQ0goMTUpLCBtc2cgJiB+Zmx1c2gpOwo+IC0KPiAtCQkvKiBIYW5kbGUgZmx1c2ggaW50 ZXJydXB0IGluIGJvdHRvbSBoYWxmICovCj4gKwlzcGluX2xvY2soJmd1Yy0+aXJxX2xvY2spOwo+ ICsJdmFsID0gSTkxNV9SRUFEKFNPRlRfU0NSQVRDSCgxNSkpOwo+ICsJbXNnID0gdmFsICYgZ3Vj LT5tc2dfZW5hYmxlZF9tYXNrOwo+ICsJSTkxNV9XUklURShTT0ZUX1NDUkFUQ0goMTUpLCB2YWwg JiB+bXNnKTsKPiArCXNwaW5fdW5sb2NrKCZndWMtPmlycV9sb2NrKTsKPiArCj4gKwlpZiAobXNn ICYgKElOVEVMX0dVQ19SRUNWX01TR19GTFVTSF9MT0dfQlVGRkVSIHwKPiArCQkgICBJTlRFTF9H VUNfUkVDVl9NU0dfQ1JBU0hfRFVNUF9QT1NURUQpKSB7Cj4gICAJCXF1ZXVlX3dvcmsoZ3VjLT5s b2cucnVudGltZS5mbHVzaF93cSwKPiAgIAkJCSAgICZndWMtPmxvZy5ydW50aW1lLmZsdXNoX3dv cmspOwo+ICAgCj4gICAJCWd1Yy0+bG9nLmZsdXNoX2ludGVycnVwdF9jb3VudCsrOwo+IC0JfSBl bHNlIHsKPiAtCQkvKgo+IC0JCSAqIE5vdCBjbGVhcmluZyBvZiB1bmhhbmRsZWQgZXZlbnQgYml0 cyB3b24ndCByZXN1bHQgaW4KPiAtCQkgKiByZS10cmlnZ2VyaW5nIG9mIHRoZSBpbnRlcnJ1cHQu Cj4gLQkJICovCj4gICAJfQo+ICAgfQo+ICAgCj4gQEAgLTQ5NSw4ICs0OTAsNyBAQCBpbnQgaW50 ZWxfZ3VjX3Jlc3VtZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAJaWYg KGd1Yy0+ZncubG9hZF9zdGF0dXMgIT0gSU5URUxfVUNfRklSTVdBUkVfU1VDQ0VTUykKPiAgIAkJ cmV0dXJuIDA7Cj4gICAKPiAtCWlmIChpOTE1X21vZHBhcmFtcy5ndWNfbG9nX2xldmVsKQo+IC0J CWdlbjlfZW5hYmxlX2d1Y19pbnRlcnJ1cHRzKGRldl9wcml2KTsKPiArCWdlbjlfZW5hYmxlX2d1 Y19pbnRlcnJ1cHRzKGRldl9wcml2KTsKPiAgIAo+ICAgCWRhdGFbMF0gPSBJTlRFTF9HVUNfQUNU SU9OX0VYSVRfU19TVEFURTsKPiAgIAlkYXRhWzFdID0gR1VDX1BPV0VSX0QwOwo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuaCBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2d1Yy5oCj4gaW5kZXggNWI5MDViYWUxODFkLi5kNjI5YmM1ZDVjMGYgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmgKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuaAo+IEBAIC01Myw3ICs1Myw5IEBAIHN0cnVjdCBpbnRl bF9ndWMgewo+ICAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpsb2FkX2Vycl9sb2c7Cj4g ICAKPiAgIAkvKiBpbnRlbF9ndWNfcmVjdiBpbnRlcnJ1cHQgcmVsYXRlZCBzdGF0ZSAqLwo+ICsJ c3BpbmxvY2tfdCBpcnFfbG9jazsKPiAgIAlib29sIGludGVycnVwdHNfZW5hYmxlZDsKPiArCXVu c2lnbmVkIGludCBtc2dfZW5hYmxlZF9tYXNrOwo+ICAgCj4gICAJc3RydWN0IGk5MTVfdm1hICph ZHNfdm1hOwo+ICAgCXN0cnVjdCBpOTE1X3ZtYSAqc3RhZ2VfZGVzY19wb29sOwo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9nLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9ndWNfbG9nLmMKPiBpbmRleCBmMWNhYjQzZDMzNGUuLjA5YmU3MzQwNjUy YiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9nLmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9nLmMKPiBAQCAtNTkwLDYgKzU5 MCwyMiBAQCBpbnQgaW50ZWxfZ3VjX2xvZ19jcmVhdGUoc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+ ICAgCXJldHVybiByZXQ7Cj4gICB9Cj4gICAKPiArc3RhdGljIHZvaWQgZ3VjX2xvZ19mbHVzaF9p cnFfZW5hYmxlKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKPiArewo+ICsJc3Bpbl9sb2NrX2lycSgm Z3VjLT5pcnFfbG9jayk7Cj4gKwlndWMtPm1zZ19lbmFibGVkX21hc2sgfD0gSU5URUxfR1VDX1JF Q1ZfTVNHX0ZMVVNIX0xPR19CVUZGRVIgfAo+ICsJCQkJIElOVEVMX0dVQ19SRUNWX01TR19DUkFT SF9EVU1QX1BPU1RFRDsKPiArCXNwaW5fdW5sb2NrX2lycSgmZ3VjLT5pcnFfbG9jayk7Cj4gK30K PiArCj4gK3N0YXRpYyB2b2lkIGd1Y19sb2dfZmx1c2hfaXJxX2Rpc2FibGUoc3RydWN0IGludGVs X2d1YyAqZ3VjKQo+ICt7Cj4gKwlzcGluX2xvY2tfaXJxKCZndWMtPmlycV9sb2NrKTsKPiArCWd1 Yy0+bXNnX2VuYWJsZWRfbWFzayAmPSB+KElOVEVMX0dVQ19SRUNWX01TR19GTFVTSF9MT0dfQlVG RkVSIHwKPiArCQkJCSAgIElOVEVMX0dVQ19SRUNWX01TR19DUkFTSF9EVU1QX1BPU1RFRCk7Cj4g KwlzcGluX3VubG9ja19pcnEoJmd1Yy0+aXJxX2xvY2spOwo+ICt9Cj4gKwo+ICAgdm9pZCBpbnRl bF9ndWNfbG9nX2Rlc3Ryb3koc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+ICAgewo+ICAgCWd1Y19s b2dfcnVudGltZV9kZXN0cm95KGd1Yyk7Cj4gQEAgLTY4NywxMiArNzAzLDcgQEAgaW50IGludGVs X2d1Y19sb2dfcmVnaXN0ZXIoc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+ICAgCWlmIChyZXQpCj4g ICAJCWdvdG8gZXJyX3J1bnRpbWU7Cj4gICAKPiAtCS8qIEd1QyBsb2dnaW5nIGlzIGN1cnJlbnRs eSB0aGUgb25seSB1c2VyIG9mIEd1YzJIb3N0IGludGVycnVwdHMgKi8KPiAtCW11dGV4X2xvY2so JmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCWludGVsX3J1bnRpbWVfcG1fZ2V0KGRl dl9wcml2KTsKPiAtCWdlbjlfZW5hYmxlX2d1Y19pbnRlcnJ1cHRzKGRldl9wcml2KTsKPiAtCWlu dGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKPiAtCW11dGV4X3VubG9jaygmZGV2X3ByaXYt PmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICsJZ3VjX2xvZ19mbHVzaF9pcnFfZW5hYmxlKGd1Yyk7Cj4g ICAKPiAgIAlyZXR1cm4gMDsKPiAgIAo+IEBAIC03MTcsMTMgKzcyOCw5IEBAIHZvaWQgaW50ZWxf Z3VjX2xvZ191bnJlZ2lzdGVyKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKPiAgIAkgKiBidWZmZXIg c3RhdGUgYW5kIHRoZW4gY29sbGVjdCB0aGUgbGVmdCBvdmVyIGxvZ3MuCj4gICAJICovCj4gICAJ Z3VjX2ZsdXNoX2xvZ3MoZ3VjKTsKPiArCWd1Y19sb2dfZmx1c2hfaXJxX2Rpc2FibGUoZ3VjKTsK PiAgIAo+ICAgCW11dGV4X2xvY2soJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCS8q IEd1QyBsb2dnaW5nIGlzIGN1cnJlbnRseSB0aGUgb25seSB1c2VyIG9mIEd1YzJIb3N0IGludGVy cnVwdHMgKi8KPiAtCWludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKPiAtCWdlbjlfZGlz YWJsZV9ndWNfaW50ZXJydXB0cyhkZXZfcHJpdik7Cj4gLQlpbnRlbF9ydW50aW1lX3BtX3B1dChk ZXZfcHJpdik7Cj4gLQo+ICAgCWd1Y19sb2dfcnVudGltZV9kZXN0cm95KGd1Yyk7Cj4gICAJbXV0 ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gICAKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3VjLmMKPiBpbmRleCAzZjQxZWY1MjVlMjYuLmU5YWJhM2MzNTI2NCAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Yy5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfdWMuYwo+IEBAIC0yMzksNiArMjM5LDggQEAgc3RhdGljIGludCBndWNf ZW5hYmxlX2NvbW11bmljYXRpb24oc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+ICAgewo+ICAgCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGd1Y190b19pOTE1KGd1Yyk7Cj4gICAK PiArCWdlbjlfZW5hYmxlX2d1Y19pbnRlcnJ1cHRzKGRldl9wcml2KTsKPiArCj4gICAJaWYgKEhB U19HVUNfQ1QoZGV2X3ByaXYpKQo+ICAgCQlyZXR1cm4gaW50ZWxfZ3VjX2VuYWJsZV9jdChndWMp Owo+ICAgCj4gQEAgLTI1Myw2ICsyNTUsOCBAQCBzdGF0aWMgdm9pZCBndWNfZGlzYWJsZV9jb21t dW5pY2F0aW9uKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKPiAgIAlpZiAoSEFTX0dVQ19DVChkZXZf cHJpdikpCj4gICAJCWludGVsX2d1Y19kaXNhYmxlX2N0KGd1Yyk7Cj4gICAKPiArCWdlbjlfZGlz YWJsZV9ndWNfaW50ZXJydXB0cyhkZXZfcHJpdik7Cj4gKwo+ICAgCWd1Yy0+c2VuZCA9IGludGVs X2d1Y19zZW5kX25vcDsKPiAgIH0KPiAgIAo+IEBAIC0zOTEsMTIgKzM5NSw5IEBAIGludCBpbnRl bF91Y19pbml0X2h3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIAl9Cj4g ICAKPiAgIAlpZiAoVVNFU19HVUNfU1VCTUlTU0lPTihkZXZfcHJpdikpIHsKPiAtCQlpZiAoaTkx NV9tb2RwYXJhbXMuZ3VjX2xvZ19sZXZlbCkKPiAtCQkJZ2VuOV9lbmFibGVfZ3VjX2ludGVycnVw dHMoZGV2X3ByaXYpOwo+IC0KPiAgIAkJcmV0ID0gaW50ZWxfZ3VjX3N1Ym1pc3Npb25fZW5hYmxl KGd1Yyk7Cj4gICAJCWlmIChyZXQpCj4gLQkJCWdvdG8gZXJyX2ludGVycnVwdHM7Cj4gKwkJCWdv dG8gZXJyX2NvbW11bmljYXRpb247Cj4gICAJfQo+ICAgCj4gICAJZGV2X2luZm8oZGV2X3ByaXYt PmRybS5kZXYsICJHdUMgZmlybXdhcmUgdmVyc2lvbiAldS4ldVxuIiwKPiBAQCAtNDExLDggKzQx Miw2IEBAIGludCBpbnRlbF91Y19pbml0X2h3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKPiAgIAkvKgo+ICAgCSAqIFdlJ3ZlIGZhaWxlZCB0byBsb2FkIHRoZSBmaXJtd2FyZSA6 KAo+ICAgCSAqLwo+IC1lcnJfaW50ZXJydXB0czoKPiAtCWdlbjlfZGlzYWJsZV9ndWNfaW50ZXJy dXB0cyhkZXZfcHJpdik7Cj4gICBlcnJfY29tbXVuaWNhdGlvbjoKPiAgIAlndWNfZGlzYWJsZV9j b21tdW5pY2F0aW9uKGd1Yyk7Cj4gICBlcnJfbG9nX2NhcHR1cmU6Cj4gQEAgLTQ0Miw3ICs0NDEs NCBAQCB2b2lkIGludGVsX3VjX2ZpbmlfaHcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQo+ICAgCQlpbnRlbF9ndWNfc3VibWlzc2lvbl9kaXNhYmxlKGd1Yyk7Cj4gICAKPiAgIAln dWNfZGlzYWJsZV9jb21tdW5pY2F0aW9uKGd1Yyk7Cj4gLQo+IC0JaWYgKFVTRVNfR1VDX1NVQk1J U1NJT04oZGV2X3ByaXYpKQo+IC0JCWdlbjlfZGlzYWJsZV9ndWNfaW50ZXJydXB0cyhkZXZfcHJp dik7Cj4gICB9CgotLSAKVGhhbmtzLApTYWdhcgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaW50ZWwtZ2Z4Cg==