From mboxrd@z Thu Jan 1 00:00:00 1970 From: Imre Deak Subject: [PATCH 2/3] drm/i915: Fold sandybridge_pcode_read() into snb_pcode_request() Date: Tue, 30 Jan 2018 13:47:11 +0200 Message-ID: <20180130114712.2644-2-imre.deak@intel.com> References: <20180130114712.2644-1-imre.deak@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id E48A16E5FF for ; Tue, 30 Jan 2018 11:47:16 +0000 (UTC) In-Reply-To: <20180130114712.2644-1-imre.deak@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org VGhlc2UgdHdvIGZ1bmN0aW9ucyBhcmUgdmVyeSBzaW1pbGFyIHNvIHNpbXBsaWZ5IHRoaW5ncyBi eSByZW1vdmluZyB0aGUKZHVwbGljYXRpb24uCgpBZGQgYSBzZXBlcmF0ZSBzbGVlcGluZyBwb2xs IHRpbWVvdXQgcGFyYW1ldGVyLCB1c2VmdWwgZm9yIGxvbmdlciBwb2xscwpsaWtlIHRoZSBDRENM SyBjaGFuZ2Ugb24gQlhUL0dMSy4gVGhlIG5leHQgcGF0Y2ggd2lsbCB0YWtlIHRoYXQgaW50byB1 c2UuCgpXaGlsZSBhdCBpdCBkb2N1bWVudCBzbmJfcGNvZGVfcmVxdWVzdCgpIGFuZCBjbGVhbiB1 cCBhIGJpdCB0aGUKZXJyb3IvZGVidWcgcHJpbnRzLiBPdGhlciB0aGFuIHRoYXQgbm8gZnVuY3Rp b25hbCBjaGFuZ2VzLgoKQ2M6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVr PgpDYzogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KU2ln bmVkLW9mZi1ieTogSW1yZSBEZWFrIDxpbXJlLmRlYWtAaW50ZWwuY29tPgotLS0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgfCAxMCArKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9jZGNsay5jIHwgIDQgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMg ICAgfCA5NyArKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMyBmaWxlcyBj aGFuZ2VkLCA0NCBpbnNlcnRpb25zKCspLCA2NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaAppbmRleCA1ZTI5M2JlNGU1MWQuLjFlOTkxMWY2NjMzOSAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oCkBAIC0zNzIyLDExICszNzIyLDEzIEBAIGludGVsX2Rpc3BsYXlfY2FwdHVyZV9l cnJvcl9zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogZXh0ZXJuIHZv aWQgaW50ZWxfZGlzcGxheV9wcmludF9lcnJvcl9zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jf c3RhdGVfYnVmICplLAogCQkJCQkgICAgc3RydWN0IGludGVsX2Rpc3BsYXlfZXJyb3Jfc3RhdGUg KmVycm9yKTsKIAotaW50IHNhbmR5YnJpZGdlX3Bjb2RlX3JlYWQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LCB1MzIgbWJveCwgdTMyICp2YWwpOwotaW50IHNuYl9wY29kZV9yZXF1 ZXN0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIG1ib3gsIHUzMiB2YWws Ci0JCSAgICAgIGludCB0aW1lb3V0X3VzKTsKK2ludCBzbmJfcGNvZGVfcmVxdWVzdChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBtYm94LAorCQkgICAgICB1MzIgc2VuZF92 YWwsIHUzMiAqcmVjdl92YWwsCisJCSAgICAgIGludCBmYXN0X3RpbWVvdXRfdXMsIGludCBzbG93 X3RpbWVvdXRfbXMpOworI2RlZmluZSBzYW5keWJyaWRnZV9wY29kZV9yZWFkKGRldl9wcml2LCBt Ym94LCB2YWwpCVwKKwlzbmJfcGNvZGVfcmVxdWVzdChkZXZfcHJpdiwgbWJveCwgKnZhbCwgdmFs LCA1MDAsIDApCiAjZGVmaW5lIHNhbmR5YnJpZGdlX3Bjb2RlX3dyaXRlKGRldl9wcml2LCBtYm94 LCB2YWwpCVwKLQlzbmJfcGNvZGVfcmVxdWVzdChkZXZfcHJpdiwgbWJveCwgdmFsLCA1MDApCisJ c25iX3Bjb2RlX3JlcXVlc3QoZGV2X3ByaXYsIG1ib3gsIHZhbCwgTlVMTCwgNTAwLCAwKQogCiBp bnQgc2tsX3Bjb2RlX3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1 MzIgbWJveCwgdTMyIHJlcXVlc3QsCiAJCSAgICAgIHUzMiByZXBseV9tYXNrLCB1MzIgcmVwbHks IGludCB0aW1lb3V0X2Jhc2VfbXMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfY2RjbGsuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NkY2xrLmMKaW5kZXgg NTA1NzMzNmM0MGJhLi44ZDA2YTZmNjZmMjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2NkY2xrLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY2RjbGsu YwpAQCAtMTM3Nyw3ICsxMzc3LDcgQEAgc3RhdGljIHZvaWQgYnh0X3NldF9jZGNsayhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJICovCiAJbXV0ZXhfbG9jaygmZGV2X3ByaXYt PnBjdV9sb2NrKTsKIAlyZXQgPSBzbmJfcGNvZGVfcmVxdWVzdChkZXZfcHJpdiwgSFNXX1BDT0RF X0RFX1dSSVRFX0ZSRVFfUkVRLAotCQkJCTB4ODAwMDAwMDAsIDIwMDApOworCQkJCTB4ODAwMDAw MDAsIE5VTEwsIDIwMDAsIDApOwogCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBjdV9sb2NrKTsK IAogCWlmIChyZXQpIHsKQEAgLTE0MTUsNyArMTQxNSw3IEBAIHN0YXRpYyB2b2lkIGJ4dF9zZXRf Y2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCSAqIHRoZSBuZXh0IFBD T0RFIHJlcXVlc3QgYmFzZWQgb24gQlNwZWMuCiAJICovCiAJcmV0ID0gc25iX3Bjb2RlX3JlcXVl c3QoZGV2X3ByaXYsIEhTV19QQ09ERV9ERV9XUklURV9GUkVRX1JFUSwKLQkJCQljZGNsa19zdGF0 ZS0+dm9sdGFnZV9sZXZlbCwgMjAwMCk7CisJCQkJY2RjbGtfc3RhdGUtPnZvbHRhZ2VfbGV2ZWws IE5VTEwsIDIwMDAsIDApOwogCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBjdV9sb2NrKTsKIAog CWlmIChyZXQpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCmluZGV4IGY2ZjRkYmFjYjlhZi4uNWE2 ZTVkY2I2ZmY4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKQEAgLTkxMjMsNyArOTEyMywyOSBA QCBzdGF0aWMgaW5saW5lIGludCBnZW43X2NoZWNrX21haWxib3hfc3RhdHVzKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAl9CiB9CiAKLWludCBzYW5keWJyaWRnZV9wY29kZV9y ZWFkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIG1ib3gsIHUzMiAqdmFs KQorLyoqCisgKiBzbmJfcGNvZGVfcmVxdWVzdCAtIHNlbmQgUENPREUgcmVxdWVzdAorICogQGRl dl9wcml2OiBkZXZpY2UgcHJpdmF0ZQorICogQG1ib3g6IFBDT0RFIG1haWxib3ggSUQgdGhlIHJl cXVlc3QgaXMgdGFyZ2V0ZWQgZm9yCisgKiBAc2VuZF92YWw6IHJlcXVlc3QtSUQgb3IgZGF0YSB0 byBzZW5kCisgKiBAcmVwbHlfdmFsOiBidWZmZXIgdG8gc3RvcmUgdGhlIHJlcGx5IGluCisgKiBA ZmFzdF90aW1lb3V0X3VzOiB0aW1lb3V0IGZvciB0aGUgcmVxdWVzdCBjb21wbGV0aW9uIGF0b21p YyB3YWl0CisgKiBAc2xvd190aW1lb3V0X21zOiB0aW1lb3V0IGZvciB0aGUgcmVxdWVzdCBjb21w bGV0aW9uIHNsZWVwaW5nIHdhaXQKKyAqCisgKiBTZW5kIGEgUENPREUgcmVxdWVzdCB3aXRoIEBz ZW5kX3ZhbCBhcyB0aGUgcmVxdWVzdC1JRCBvciBkYXRhIGFzIHBhcmFtZXRlci4KKyAqIFdhaXQg QGZhc3RfdGltZW91dF91cyBhdG9taWNhbGx5IHRoZW4gQHNsb3dfdGltZW91dF9tcyB3aXRoIHNs ZWVwaW5nIHdhaXQKKyAqIGZvciB0aGUgcmVxdWVzdCBjb21wbGV0aW9uIHRoZW4gaWYgQHJlcGx5 X3ZhbCBpcyBub3QgTlVMTCBzdG9yZSB0aGUgcmVwbHkKKyAqIHJldHVybmVkIGJ5IFBDT0RFIGlu IGl0LgorICoKKyAqIFJldHVybnMKKyAqIC0gMCBvbiBzdWNjZXNzCisgKiAtICUtRUFHQUlOIGlm IFBDT0RFIGlzIHN0aWxsIGJ1c3kgd2l0aCB0aGUgcHJldmlvdXMgcmVxdWVzdAorICogLSAlLUVU SU1FRE9VVCBpbiBjYXNlIG9mIGEgdGltZW91dAorICogLSA8MCBpbiBjYXNlIG9mIHNvbWUgb3Ro ZXIgZXJyb3IgYXMgcmVwb3J0ZWQgYnkgUENPREUKKyAqLworaW50IHNuYl9wY29kZV9yZXF1ZXN0 KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIG1ib3gsCisJCSAgICAgIHUz MiBzZW5kX3ZhbCwgdTMyICpyZWN2X3ZhbCwKKwkJICAgICAgaW50IGZhc3RfdGltZW91dF91cywg aW50IHNsb3dfdGltZW91dF9tcykKIHsKIAlpbnQgc3RhdHVzOwogCkBAIC05MTMzLDI2ICs5MTU1 LDI3IEBAIGludCBzYW5keWJyaWRnZV9wY29kZV9yZWFkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwgdTMyIG1ib3gsIHUzMiAqdmFsCiAJICogdXNlIHRlIGZ3IEk5MTVfUkVBRCB2 YXJpYW50cyB0byByZWR1Y2UgdGhlIGFtb3VudCBvZiB3b3JrCiAJICogcmVxdWlyZWQgd2hlbiBy ZWFkaW5nL3dyaXRpbmcuCiAJICovCi0KIAlpZiAoSTkxNV9SRUFEX0ZXKEdFTjZfUENPREVfTUFJ TEJPWCkgJiBHRU42X1BDT0RFX1JFQURZKSB7Ci0JCURSTV9ERUJVR19EUklWRVIoIndhcm5pbmc6 IHBjb2RlIChyZWFkIGZyb20gbWJveCAleCkgbWFpbGJveCBhY2Nlc3MgZmFpbGVkIGZvciAlcHNc biIsCi0JCQkJIG1ib3gsIF9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcygwKSk7CisJCURSTV9ERUJV R19EUklWRVIoIndhcm5pbmc6IHBjb2RlIG5vdCByZWFkeSBmb3IgcmVxdWVzdCAweCUwOHggdG8g bWJveCAweCV4IGZvciAlcHNcbiIsCisJCQkJIHNlbmRfdmFsLCBtYm94LCBfX2J1aWx0aW5fcmV0 dXJuX2FkZHJlc3MoMCkpOwogCQlyZXR1cm4gLUVBR0FJTjsKIAl9CiAKLQlJOTE1X1dSSVRFX0ZX KEdFTjZfUENPREVfREFUQSwgKnZhbCk7CisJSTkxNV9XUklURV9GVyhHRU42X1BDT0RFX0RBVEEs IHNlbmRfdmFsKTsKIAlJOTE1X1dSSVRFX0ZXKEdFTjZfUENPREVfREFUQTEsIDApOwogCUk5MTVf V1JJVEVfRlcoR0VONl9QQ09ERV9NQUlMQk9YLCBHRU42X1BDT0RFX1JFQURZIHwgbWJveCk7CiAK IAlpZiAoX19pbnRlbF93YWl0X2Zvcl9yZWdpc3Rlcl9mdyhkZXZfcHJpdiwKIAkJCQkJIEdFTjZf UENPREVfTUFJTEJPWCwgR0VONl9QQ09ERV9SRUFEWSwgMCwKLQkJCQkJIDUwMCwgMCwgTlVMTCkp IHsKLQkJRFJNX0VSUk9SKCJ0aW1lb3V0IHdhaXRpbmcgZm9yIHBjb2RlIHJlYWQgKGZyb20gbWJv eCAleCkgdG8gZmluaXNoIGZvciAlcHNcbiIsCi0JCQkgIG1ib3gsIF9fYnVpbHRpbl9yZXR1cm5f YWRkcmVzcygwKSk7CisJCQkJCSBmYXN0X3RpbWVvdXRfdXMsIHNsb3dfdGltZW91dF9tcywKKwkJ CQkJIE5VTEwpKSB7CisJCURSTV9FUlJPUigidGltZW91dCB3YWl0aW5nIGZvciBwY29kZSByZXF1 ZXN0IDB4JTA4eCB0byBtYm94IDB4JXggdG8gZmluaXNoIGZvciAlcHNcbiIsCisJCQkgIHNlbmRf dmFsLCBtYm94LCBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMCkpOwogCQlyZXR1cm4gLUVUSU1F RE9VVDsKIAl9CiAKLQkqdmFsID0gSTkxNV9SRUFEX0ZXKEdFTjZfUENPREVfREFUQSk7CisJaWYg KHJlY3ZfdmFsKQorCQkqcmVjdl92YWwgPSBJOTE1X1JFQURfRlcoR0VONl9QQ09ERV9EQVRBKTsK IAlJOTE1X1dSSVRFX0ZXKEdFTjZfUENPREVfREFUQSwgMCk7CiAKIAlpZiAoSU5URUxfR0VOKGRl dl9wcml2KSA+IDYpCkBAIC05MTYwLDU5ICs5MTgzLDExIEBAIGludCBzYW5keWJyaWRnZV9wY29k ZV9yZWFkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIG1ib3gsIHUzMiAq dmFsCiAJZWxzZQogCQlzdGF0dXMgPSBnZW42X2NoZWNrX21haWxib3hfc3RhdHVzKGRldl9wcml2 KTsKIAotCWlmIChzdGF0dXMpIHsKLQkJRFJNX0RFQlVHX0RSSVZFUigid2FybmluZzogcGNvZGUg KHJlYWQgZnJvbSBtYm94ICV4KSBtYWlsYm94IGFjY2VzcyBmYWlsZWQgZm9yICVwczogJWRcbiIs Ci0JCQkJIG1ib3gsIF9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcygwKSwgc3RhdHVzKTsKLQkJcmV0 dXJuIHN0YXR1czsKLQl9CisJaWYgKHN0YXR1cykKKwkJRFJNX0RFQlVHX0RSSVZFUigid2Fybmlu ZzogcGNvZGUgcmVxdWVzdCAlMDh4IHRvIG1ib3ggMHgleCBmYWlsZWQgZm9yICVwczogJWRcbiIs CisJCQkJIHNlbmRfdmFsLCBtYm94LCBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMCksIHN0YXR1 cyk7CiAKLQlyZXR1cm4gMDsKLX0KLQotaW50IHNuYl9wY29kZV9yZXF1ZXN0KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKLQkJICAgICAgdTMyIG1ib3gsIHUzMiB2YWwsIGludCB0 aW1lb3V0X3VzKQotewotCWludCBzdGF0dXM7Ci0KLQlXQVJOX09OKCFtdXRleF9pc19sb2NrZWQo JmRldl9wcml2LT5wY3VfbG9jaykpOwotCi0JLyogR0VONl9QQ09ERV8qIGFyZSBvdXRzaWRlIG9m IHRoZSBmb3JjZXdha2UgZG9tYWluLCB3ZSBjYW4KLQkgKiB1c2UgdGUgZncgSTkxNV9SRUFEIHZh cmlhbnRzIHRvIHJlZHVjZSB0aGUgYW1vdW50IG9mIHdvcmsKLQkgKiByZXF1aXJlZCB3aGVuIHJl YWRpbmcvd3JpdGluZy4KLQkgKi8KLQotCWlmIChJOTE1X1JFQURfRlcoR0VONl9QQ09ERV9NQUlM Qk9YKSAmIEdFTjZfUENPREVfUkVBRFkpIHsKLQkJRFJNX0RFQlVHX0RSSVZFUigid2FybmluZzog cGNvZGUgKHdyaXRlIG9mIDB4JTA4eCB0byBtYm94ICV4KSBtYWlsYm94IGFjY2VzcyBmYWlsZWQg Zm9yICVwc1xuIiwKLQkJCQkgdmFsLCBtYm94LCBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMCkp OwotCQlyZXR1cm4gLUVBR0FJTjsKLQl9Ci0KLQlJOTE1X1dSSVRFX0ZXKEdFTjZfUENPREVfREFU QSwgdmFsKTsKLQlJOTE1X1dSSVRFX0ZXKEdFTjZfUENPREVfREFUQTEsIDApOwotCUk5MTVfV1JJ VEVfRlcoR0VONl9QQ09ERV9NQUlMQk9YLCBHRU42X1BDT0RFX1JFQURZIHwgbWJveCk7Ci0KLQlp ZiAoX19pbnRlbF93YWl0X2Zvcl9yZWdpc3Rlcl9mdyhkZXZfcHJpdiwKLQkJCQkJIEdFTjZfUENP REVfTUFJTEJPWCwgR0VONl9QQ09ERV9SRUFEWSwgMCwKLQkJCQkJIHRpbWVvdXRfdXMsIDAsIE5V TEwpKSB7Ci0JCURSTV9FUlJPUigidGltZW91dCB3YWl0aW5nIGZvciBwY29kZSB3cml0ZSBvZiAw eCUwOHggdG8gbWJveCAleCB0byBmaW5pc2ggZm9yICVwc1xuIiwKLQkJCSAgdmFsLCBtYm94LCBf X2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMCkpOwotCQlyZXR1cm4gLUVUSU1FRE9VVDsKLQl9Ci0K LQlJOTE1X1dSSVRFX0ZXKEdFTjZfUENPREVfREFUQSwgMCk7Ci0KLQlpZiAoSU5URUxfR0VOKGRl dl9wcml2KSA+IDYpCi0JCXN0YXR1cyA9IGdlbjdfY2hlY2tfbWFpbGJveF9zdGF0dXMoZGV2X3By aXYpOwotCWVsc2UKLQkJc3RhdHVzID0gZ2VuNl9jaGVja19tYWlsYm94X3N0YXR1cyhkZXZfcHJp dik7Ci0KLQlpZiAoc3RhdHVzKSB7Ci0JCURSTV9ERUJVR19EUklWRVIoIndhcm5pbmc6IHBjb2Rl ICh3cml0ZSBvZiAweCUwOHggdG8gbWJveCAleCkgbWFpbGJveCBhY2Nlc3MgZmFpbGVkIGZvciAl cHM6ICVkXG4iLAotCQkJCSB2YWwsIG1ib3gsIF9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcygwKSwg c3RhdHVzKTsKLQkJcmV0dXJuIHN0YXR1czsKLQl9Ci0KLQlyZXR1cm4gMDsKKwlyZXR1cm4gc3Rh dHVzOwogfQogCiBzdGF0aWMgYm9vbCBza2xfcGNvZGVfdHJ5X3JlcXVlc3Qoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgbWJveCwKLS0gCjIuMTMuMgoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlz dApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==