From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Chris Wilson Date: Mon, 21 Oct 2019 10:57:43 +0100 Message-Id: <20191021095743.7355-1-chris@chris-wilson.co.uk> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t] i915: Start putting the mmio_base to wider use List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: intel-gfx@lists.freedesktop.org Cc: igt-dev@lists.freedesktop.org List-ID: U2V2ZXJhbCB0ZXN0cyBkZXBlbmQgdXBvbiB0aGUgaW1wbGljaXQgZW5naW5lLT5tbWlvX2Jhc2Ug YnV0IGhhdmUgbm8KbWVhbnMgb2YgZGV0ZXJtaW5pbmcgdGhlIHBoeXNpY2FsIGxheW91dC4gU2lu Y2UgdGhlIGtlcm5lbCBoYXMgc3RhcnRlZApwcm92aWRpbmcgdGhpcyBpbmZvcm1hdGlvbiwgc3Rh cnQgcHV0dGluZyBpdCB0byB1c2UuCgpTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlz QGNocmlzLXdpbHNvbi5jby51az4KLS0tCiBsaWIvaTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5LmMg fCA4NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBsaWIvaTkxNS9nZW1fZW5n aW5lX3RvcG9sb2d5LmggfCAgNSArKwogdGVzdHMvaTkxNS9nZW1fY3R4X3NoYXJlZC5jICAgIHwg NDAgKysrKysrLS0tLS0tLS0tLQogdGVzdHMvaTkxNS9nZW1fZXhlY19sYXRlbmN5LmMgIHwgMTcg KysrKy0tLQogNCBmaWxlcyBjaGFuZ2VkLCAxMTMgaW5zZXJ0aW9ucygrKSwgMzMgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvbGliL2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5jIGIvbGliL2k5 MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5jCmluZGV4IDc5MGQ0NTVmZi4uZjUwMzMzMThiIDEwMDY0 NAotLS0gYS9saWIvaTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5LmMKKysrIGIvbGliL2k5MTUvZ2Vt X2VuZ2luZV90b3BvbG9neS5jCkBAIC0yMSw3ICsyMSwxMiBAQAogICogSU4gVEhFIFNPRlRXQVJF LgogICovCiAKKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorCiAjaW5j bHVkZSAiZHJtdGVzdC5oIgorI2luY2x1ZGUgImlndF9zeXNmcy5oIgorI2luY2x1ZGUgImludGVs X2NoaXBzZXQuaCIKICNpbmNsdWRlICJpb2N0bF93cmFwcGVycy5oIgogCiAjaW5jbHVkZSAiaTkx NS9nZW1fZW5naW5lX3RvcG9sb2d5LmgiCkBAIC0zMzcsMyArMzQyLDgyIEBAIGJvb2wgZ2VtX2Vu Z2luZV9pc19lcXVhbChjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUxLAog ewogCXJldHVybiBlMS0+Y2xhc3MgPT0gZTItPmNsYXNzICYmIGUxLT5pbnN0YW5jZSA9PSBlMi0+ aW5zdGFuY2U7CiB9CisKK3N0YXRpYyBpbnQgc3ViZGlyKGludCBkaXIsIGNvbnN0IGNoYXIgKnBh dGgpCit7CisJaW50IGZkOworCisJZmQgPSBvcGVuYXQoZGlyLCBwYXRoLCBPX1JET05MWSk7CisJ Y2xvc2UoZGlyKTsKKworCXJldHVybiBmZDsKK30KKworaW50IGdlbV9lbmdpbmVfcHJvcGVydHlf c2NhbmYoaW50IGk5MTUsIGNvbnN0IGNoYXIgKmVuZ2luZSwgY29uc3QgY2hhciAqYXR0ciwKKwkJ CSAgICAgIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQoreworCWludCBkaXIsIGZkOworCUZJTEUgKmZp bGU7CisJdmFfbGlzdCBhcDsKKwlpbnQgcmV0OworCisJZGlyID0gaWd0X3N5c2ZzX29wZW4oaTkx NSk7CisJaWYgKGRpciA8IDApCisJCXJldHVybiBkaXI7CisKKwlkaXIgPSBzdWJkaXIoZGlyLCAi ZW5naW5lIik7CisJaWYgKGRpciA8IDApCisJCXJldHVybiBkaXI7CisKKwlkaXIgPSBzdWJkaXIo ZGlyLCBlbmdpbmUpOworCWlmIChkaXIgPCAwKQorCQlyZXR1cm4gZGlyOworCisJZmQgPSBvcGVu YXQoZGlyLCBhdHRyLCBPX1JET05MWSk7CisJaWYgKGZkIDwgMCkKKwkJcmV0dXJuIGZkOworCisJ ZmlsZSA9IGZkb3BlbihmZCwgInIiKTsKKwlpZiAoIWZpbGUpIHsKKwkJY2xvc2UoZmQpOworCQly ZXR1cm4gLTE7CisJfQorCisJdmFfc3RhcnQoYXAsIGZtdCk7CisJcmV0ID0gdmZzY2FuZihmaWxl LCBmbXQsIGFwKTsKKwl2YV9lbmQoYXApOworCisJZmNsb3NlKGZpbGUpOworCXJldHVybiByZXQ7 Cit9CisKK3VpbnQzMl90IGdlbV9lbmdpbmVfbW1pb19iYXNlKGludCBpOTE1LCBjb25zdCBjaGFy ICplbmdpbmUpCit7CisJdW5zaWduZWQgaW50IG1taW8gPSAwOworCisJaWYgKGdlbV9lbmdpbmVf cHJvcGVydHlfc2NhbmYoaTkxNSwgZW5naW5lLCAibW1pb19iYXNlIiwKKwkJCQkgICAgICAiJXgi LCAmbW1pbykgPCAwKSB7CisJCWludCBnZW4gPSBpbnRlbF9nZW4oaW50ZWxfZ2V0X2RybV9kZXZp ZChpOTE1KSk7CisKKwkJLyogVGhlIGxheW91dCBvZiB4Y3MxKyBpcyB1bnJlbGlhYmxlIC0tIGhl bmNlIHRoZSBwcm9wZXJ0eSEgKi8KKwkJaWYgKCFzdHJjbXAoZW5naW5lLCAicmNzMCIpKSB7CisJ CQltbWlvID0gMHgyMDAwOworCQl9IGVsc2UgaWYgKCFzdHJjbXAoZW5naW5lLCAiYmNzMCIpKSB7 CisJCQltbWlvID0gMHgyMjAwMDsKKwkJfSBlbHNlIGlmICghc3RyY21wKGVuZ2luZSwgInZjczAi KSkgeworCQkJaWYgKGdlbiA8IDYpCisJCQkJbW1pbyA9IDB4NDAwMDsKKwkJCWVsc2UgaWYgKGdl biA8IDExKQorCQkJCW1taW8gPSAweDEyMDAwOworCQkJZWxzZQorCQkJCW1taW8gPSAweDFjMDAw MDsKKwkJfSBlbHNlIGlmICghc3RyY21wKGVuZ2luZSwgInZlY3MwIikpIHsKKwkJCWlmIChnZW4g PCAxMSkKKwkJCQltbWlvID0gMHgxYTAwMDsKKwkJCWVsc2UKKwkJCQltbWlvID0gMHgxYzgwMDA7 CisJCX0KKwl9CisKKwlyZXR1cm4gbW1pbzsKK30KZGlmZiAtLWdpdCBhL2xpYi9pOTE1L2dlbV9l bmdpbmVfdG9wb2xvZ3kuaCBiL2xpYi9pOTE1L2dlbV9lbmdpbmVfdG9wb2xvZ3kuaAppbmRleCBk OTg3NzNlMDYuLmU3MjhlYmQ5MyAxMDA2NDQKLS0tIGEvbGliL2k5MTUvZ2VtX2VuZ2luZV90b3Bv bG9neS5oCisrKyBiL2xpYi9pOTE1L2dlbV9lbmdpbmVfdG9wb2xvZ3kuaApAQCAtNzQsNCArNzQs OSBAQCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgZ2VtX2ViX2ZsYWdzX3RvX2VuZ2lu ZSh1bnNpZ25lZCBpbnQgZmxhZ3MpOwogCSAgICAgKChlX18pID0gaW50ZWxfZ2V0X2N1cnJlbnRf cGh5c2ljYWxfZW5naW5lKCZpX18pKTsgXAogCSAgICAgaW50ZWxfbmV4dF9lbmdpbmUoJmlfXykp CiAKK19fYXR0cmlidXRlX18oKGZvcm1hdChzY2FuZiwgNCwgNSkpKQoraW50IGdlbV9lbmdpbmVf cHJvcGVydHlfc2NhbmYoaW50IGk5MTUsIGNvbnN0IGNoYXIgKmVuZ2luZSwgY29uc3QgY2hhciAq YXR0ciwKKwkJCSAgICAgIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKK3VpbnQzMl90IGdlbV9lbmdp bmVfbW1pb19iYXNlKGludCBpOTE1LCBjb25zdCBjaGFyICplbmdpbmUpOworCiAjZW5kaWYgLyog R0VNX0VOR0lORV9UT1BPTE9HWV9IICovCmRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dlbV9jdHhf c2hhcmVkLmMgYi90ZXN0cy9pOTE1L2dlbV9jdHhfc2hhcmVkLmMKaW5kZXggZjc4NTI0ODIyLi41 MmI5MTk2M2EgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2k5MTUvZ2VtX2N0eF9zaGFyZWQuYworKysgYi90 ZXN0cy9pOTE1L2dlbV9jdHhfc2hhcmVkLmMKQEAgLTM4LDYgKzM4LDcgQEAKIAogI2luY2x1ZGUg PGRybS5oPgogCisjaW5jbHVkZSAiaTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5LmgiCiAjaW5jbHVk ZSAiaWd0X3JhbmQuaCIKICNpbmNsdWRlICJpZ3RfdmdlbS5oIgogI2luY2x1ZGUgInN5bmNfZmls ZS5oIgpAQCAtNTU4LDYgKzU1OSwxNiBAQCBzdGF0aWMgdWludDMyX3Qgc3RvcmVfdGltZXN0YW1w KGludCBpOTE1LAogCXJldHVybiBvYmouaGFuZGxlOwogfQogCitzdGF0aWMgdWludDMyX3Qgcmlu Z19iYXNlKGludCBpOTE1LCB1bnNpZ25lZCByaW5nKQoreworCXN0cnVjdCBpbnRlbF9leGVjdXRp b25fZW5naW5lMiBlOworCisJaWYgKHJpbmcgPT0gSTkxNV9FWEVDX0RFRkFVTFQpCisJCXJpbmcg PSBJOTE1X0VYRUNfUkVOREVSOyAvKiBYWFggKi8KKworCXJldHVybiBnZW1fZW5naW5lX21taW9f YmFzZShpOTE1LCBnZW1fZWJfZmxhZ3NfdG9fZW5naW5lKHJpbmcpLm5hbWUpOworfQorCiBzdGF0 aWMgdm9pZCBpbmRlcGVuZGVudChpbnQgaTkxNSwgdW5zaWduZWQgcmluZywgdW5zaWduZWQgZmxh Z3MpCiB7CiAJY29uc3QgaW50IFRJTUVTVEFNUCA9IDEwMjM7CkBAIC01NjUsMzMgKzU3Niw4IEBA IHN0YXRpYyB2b2lkIGluZGVwZW5kZW50KGludCBpOTE1LCB1bnNpZ25lZCByaW5nLCB1bnNpZ25l ZCBmbGFncykKIAlpZ3Rfc3Bpbl90ICpzcGluW01BWF9FTFNQX1FMRU5dOwogCXVuc2lnbmVkIGlu dCBtbWlvX2Jhc2U7CiAKLQkvKiBYWFggaTkxNV9xdWVyeSgpISAqLwotCXN3aXRjaCAocmluZykg ewotCWNhc2UgSTkxNV9FWEVDX0RFRkFVTFQ6Ci0JY2FzZSBJOTE1X0VYRUNfUkVOREVSOgotCQlt bWlvX2Jhc2UgPSAweDIwMDA7Ci0JCWJyZWFrOwotI2lmIDAKLQljYXNlIEk5MTVfRVhFQ19CU0Q6 Ci0JCW1taW9fYmFzZSA9IDB4MTIwMDA7Ci0JCWJyZWFrOwotI2VuZGlmCi0JY2FzZSBJOTE1X0VY RUNfQkxUOgotCQltbWlvX2Jhc2UgPSAweDIyMDAwOwotCQlicmVhazsKLQotI2RlZmluZSBHRU4x MV9WRUNTMF9CQVNFIDB4MWM4MDAwCi0jZGVmaW5lIEdFTjExX1ZFQ1MxX0JBU0UgMHgxZDgwMDAK LQljYXNlIEk5MTVfRVhFQ19WRUJPWDoKLQkJaWYgKGludGVsX2dlbihpbnRlbF9nZXRfZHJtX2Rl dmlkKGk5MTUpKSA+PSAxMSkKLQkJCW1taW9fYmFzZSA9IEdFTjExX1ZFQ1MwX0JBU0U7Ci0JCWVs c2UKLQkJCW1taW9fYmFzZSA9IDB4MWEwMDA7Ci0JCWJyZWFrOwotCi0JZGVmYXVsdDoKLQkJaWd0 X3NraXAoIm1taW8gYmFzZSBub3Qga25vd25cbiIpOwotCX0KKwltbWlvX2Jhc2UgPSByaW5nX2Jh c2UoaTkxNSwgcmluZyk7CisJaWd0X3JlcXVpcmVfZihtbWlvX2Jhc2UsICJtbWlvIGJhc2Ugbm90 IGtub3duXG4iKTsKIAogCWZvciAoaW50IG4gPSAwOyBuIDwgQVJSQVlfU0laRShzcGluKTsgbisr KSB7CiAJCWNvbnN0IHN0cnVjdCBpZ3Rfc3Bpbl9mYWN0b3J5IG9wdHMgPSB7CmRpZmYgLS1naXQg YS90ZXN0cy9pOTE1L2dlbV9leGVjX2xhdGVuY3kuYyBiL3Rlc3RzL2k5MTUvZ2VtX2V4ZWNfbGF0 ZW5jeS5jCmluZGV4IDlkZGIzNDhjMC4uZWExZWVlMGFhIDEwMDY0NAotLS0gYS90ZXN0cy9pOTE1 L2dlbV9leGVjX2xhdGVuY3kuYworKysgYi90ZXN0cy9pOTE1L2dlbV9leGVjX2xhdGVuY3kuYwpA QCAtMTA5LDcgKzEwOSw3IEBAIHBvbGxfcmluZyhpbnQgZmQsIHVuc2lnbmVkIHJpbmcsIGNvbnN0 IGNoYXIgKm5hbWUpCiAJaWd0X3NwaW5fZnJlZShmZCwgc3BpblswXSk7CiB9CiAKLSNkZWZpbmUg UkNTX1RJTUVTVEFNUCAoMHgyMDAwICsgMHgzNTgpCisjZGVmaW5lIFRJTUVTVEFNUCAoMHgzNTgp CiBzdGF0aWMgdm9pZCBsYXRlbmN5X29uX3JpbmcoaW50IGZkLAogCQkJICAgIHVuc2lnbmVkIHJp bmcsIGNvbnN0IGNoYXIgKm5hbWUsCiAJCQkgICAgdW5zaWduZWQgZmxhZ3MpCkBAIC0xMTksNiAr MTE5LDcgQEAgc3RhdGljIHZvaWQgbGF0ZW5jeV9vbl9yaW5nKGludCBmZCwKIAlzdHJ1Y3QgZHJt X2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiBvYmpbM107CiAJc3RydWN0IGRybV9pOTE1X2dlbV9yZWxv Y2F0aW9uX2VudHJ5IHJlbG9jOwogCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIgZXhl Y2J1ZjsKKwljb25zdCB1aW50MzJfdCBtbWlvX2Jhc2UgPSBnZW1fZW5naW5lX21taW9fYmFzZShm ZCwgbmFtZSk7CiAJaWd0X3NwaW5fdCAqc3BpbiA9IE5VTEw7CiAJSUdUX0NPUktfSEFORExFKGMp OwogCXZvbGF0aWxlIHVpbnQzMl90ICpyZWc7CkBAIC0xMjgsNyArMTI5LDggQEAgc3RhdGljIHZv aWQgbGF0ZW5jeV9vbl9yaW5nKGludCBmZCwKIAlkb3VibGUgZ3B1X2xhdGVuY3k7CiAJaW50IGks IGo7CiAKLQlyZWcgPSAodm9sYXRpbGUgdWludDMyX3QgKikoKHZvbGF0aWxlIGNoYXIgKilpZ3Rf Z2xvYmFsX21taW8gKyBSQ1NfVElNRVNUQU1QKTsKKwlpZ3RfcmVxdWlyZShtbWlvX2Jhc2UpOwor CXJlZyA9ICh2b2xhdGlsZSB1aW50MzJfdCAqKSgodm9sYXRpbGUgY2hhciAqKWlndF9nbG9iYWxf bW1pbyArIG1taW9fYmFzZSArIFRJTUVTVEFNUCk7CiAKIAltZW1zZXQoJmV4ZWNidWYsIDAsIHNp emVvZihleGVjYnVmKSk7CiAJZXhlY2J1Zi5idWZmZXJzX3B0ciA9IHRvX3VzZXJfcG9pbnRlcigm b2JqWzFdKTsKQEAgLTE3Niw3ICsxNzgsNyBAQCBzdGF0aWMgdm9pZCBsYXRlbmN5X29uX3Jpbmco aW50IGZkLAogCQltYXBbaSsrXSA9IDB4MjQgPDwgMjMgfCAxOwogCQlpZiAoaGFzXzY0Yml0X3Jl bG9jKQogCQkJbWFwW2ktMV0rKzsKLQkJbWFwW2krK10gPSBSQ1NfVElNRVNUQU1QOyAvKiByaW5n IGxvY2FsISAqLworCQltYXBbaSsrXSA9IG1taW9fYmFzZSArIFRJTUVTVEFNUDsKIAkJbWFwW2kr K10gPSBvZmZzZXQ7CiAJCWlmIChoYXNfNjRiaXRfcmVsb2MpCiAJCQltYXBbaSsrXSA9IG9mZnNl dCA+PiAzMjsKQEAgLTI2NiwxMiArMjY4LDE1IEBAIHN0YXRpYyB2b2lkIGxhdGVuY3lfZnJvbV9y aW5nKGludCBmZCwKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiBvYmpbM107CiAJ c3RydWN0IGRybV9pOTE1X2dlbV9yZWxvY2F0aW9uX2VudHJ5IHJlbG9jOwogCXN0cnVjdCBkcm1f aTkxNV9nZW1fZXhlY2J1ZmZlcjIgZXhlY2J1ZjsKKwljb25zdCB1aW50MzJfdCBtbWlvX2Jhc2Ug PSBnZW1fZW5naW5lX21taW9fYmFzZShmZCwgbmFtZSk7CiAJY29uc3QgdW5zaWduZWQgaW50IHJl cGVhdHMgPSByaW5nX3NpemUgLyAyOwogCXVuc2lnbmVkIGludCBvdGhlcjsKIAl1aW50MzJfdCAq bWFwLCAqcmVzdWx0czsKIAl1aW50MzJfdCBjdHhbMl0gPSB7fTsKIAlpbnQgaSwgajsKIAorCWln dF9yZXF1aXJlKG1taW9fYmFzZSk7CisKIAlpZiAoZmxhZ3MgJiBQUkVFTVBUKSB7CiAJCWN0eFsw XSA9IGdlbV9jb250ZXh0X2NyZWF0ZShmZCk7CiAJCWdlbV9jb250ZXh0X3NldF9wcmlvcml0eShm ZCwgY3R4WzBdLCAtMTAyMyk7CkBAIC0zNTIsNyArMzU3LDcgQEAgc3RhdGljIHZvaWQgbGF0ZW5j eV9mcm9tX3JpbmcoaW50IGZkLAogCQkJbWFwW2krK10gPSAweDI0IDw8IDIzIHwgMTsKIAkJCWlm IChoYXNfNjRiaXRfcmVsb2MpCiAJCQkJbWFwW2ktMV0rKzsKLQkJCW1hcFtpKytdID0gUkNTX1RJ TUVTVEFNUDsgLyogcmluZyBsb2NhbCEgKi8KKwkJCW1hcFtpKytdID0gbW1pb19iYXNlICsgVElN RVNUQU1QOwogCQkJbWFwW2krK10gPSBvZmZzZXQ7CiAJCQlpZiAoaGFzXzY0Yml0X3JlbG9jKQog CQkJCW1hcFtpKytdID0gb2Zmc2V0ID4+IDMyOwpAQCAtMzc3LDcgKzM4Miw3IEBAIHN0YXRpYyB2 b2lkIGxhdGVuY3lfZnJvbV9yaW5nKGludCBmZCwKIAkJCW1hcFtpKytdID0gMHgyNCA8PCAyMyB8 IDE7CiAJCQlpZiAoaGFzXzY0Yml0X3JlbG9jKQogCQkJCW1hcFtpLTFdKys7Ci0JCQltYXBbaSsr XSA9IFJDU19USU1FU1RBTVA7IC8qIHJpbmcgbG9jYWwhICovCisJCQltYXBbaSsrXSA9IG1taW9f YmFzZSArIFRJTUVTVEFNUDsKIAkJCW1hcFtpKytdID0gb2Zmc2V0OwogCQkJaWYgKGhhc182NGJp dF9yZWxvYykKIAkJCQltYXBbaSsrXSA9IG9mZnNldCA+PiAzMjsKQEAgLTY3MCw3ICs2NzUsNyBA QCBpZ3RfbWFpbgogCQkJcmluZ19zaXplID0gMTAyNDsKIAogCQlpbnRlbF9yZWdpc3Rlcl9hY2Nl c3NfaW5pdCgmbW1pb19kYXRhLCBpbnRlbF9nZXRfcGNpX2RldmljZSgpLCBmYWxzZSwgZGV2aWNl KTsKLQkJcmNzX2Nsb2NrID0gY2xvY2tyYXRlKGRldmljZSwgUkNTX1RJTUVTVEFNUCk7CisJCXJj c19jbG9jayA9IGNsb2NrcmF0ZShkZXZpY2UsIDB4MjAwMCArIFRJTUVTVEFNUCk7CiAJCWlndF9p bmZvKCJSQ1MgdGltZXN0YW1wIGNsb2NrOiAlLjBmS0h6LCAlLjFmbnNcbiIsCiAJCQkgcmNzX2Ns b2NrIC8gMWUzLCAxZTkgLyByY3NfY2xvY2spOwogCQlyY3NfY2xvY2sgPSAxZTkgLyByY3NfY2xv Y2s7Ci0tIAoyLjI0LjAucmMwCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1k ZXY=