From mboxrd@z Thu Jan 1 00:00:00 1970 From: Subject: [RFC v2 4/5] drm/mediatek: add shadow register support Date: Fri, 20 May 2016 23:05:35 +0800 Message-ID: <1463756736-46573-5-git-send-email-yt.shen@mediatek.com> References: <1463756736-46573-1-git-send-email-yt.shen@mediatek.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1463756736-46573-1-git-send-email-yt.shen@mediatek.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org, Philipp Zabel Cc: Mark Rutland , devicetree@vger.kernel.org, Russell King , srv_heupstream@mediatek.com, Pawel Moll , Ian Campbell , emil.l.velikov@gmail.com, linux-kernel@vger.kernel.org, Mao Huang , YT Shen , Rob Herring , linux-mediatek@lists.infradead.org, Kumar Gala , Matthias Brugger , yingjoe.chen@mediatek.com, Sascha Hauer , linux-arm-kernel@lists.infradead.org List-Id: linux-mediatek@lists.infradead.org RnJvbTogWVQgU2hlbiA8eXQuc2hlbkBtZWRpYXRlay5jb20+CgpXZSBuZWVkIHRvIGFjcXVpcmUg bXV0ZXggYmVmb3JlIHVzaW5nIHRoZSByZXNvdXJjZXMsCmFuZCBuZWVkIHRvIHJlbGVhc2UgaXQg YWZ0ZXIgZmluaXNoZWQuClNvIHdlIGRvbid0IG5lZWQgdG8gd3JpdGUgcmVnaXN0ZXJzIGluIHRo ZSBibGFua2luZyBwZXJpb2QuCgpTaWduZWQtb2ZmLWJ5OiBZVCBTaGVuIDx5dC5zaGVuQG1lZGlh dGVrLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9jcnRjLmMgfCAg IDc1ICsrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9tZWRp YXRlay9tdGtfZHJtX2RkcC5jICB8ICAgMjYgKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9t ZWRpYXRlay9tdGtfZHJtX2RkcC5oICB8ICAgIDIgKwogZHJpdmVycy9ncHUvZHJtL21lZGlhdGVr L210a19kcm1fZHJ2LmMgIHwgICAgMiArCiBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2Ry bV9kcnYuaCAgfCAgICAxICsKIDUgZmlsZXMgY2hhbmdlZCwgNzcgaW5zZXJ0aW9ucygrKSwgMjkg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19k cm1fY3J0Yy5jIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fY3J0Yy5jCmluZGV4 IDMwOTVmYzEuLjVmMWVlYTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9t dGtfZHJtX2NydGMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9jcnRj LmMKQEAgLTMxNSw2ICszMTUsNDIgQEAgc3RhdGljIHZvaWQgbXRrX2NydGNfZGRwX2h3X2Zpbmko c3RydWN0IG10a19kcm1fY3J0YyAqbXRrX2NydGMpCiAJcG1fcnVudGltZV9wdXQoZHJtLT5kZXYp OwogfQogCitzdGF0aWMgdm9pZCBtdGtfY3J0Y19kZHBfY29uZmlnKHN0cnVjdCBkcm1fY3J0YyAq Y3J0YykKK3sKKwlzdHJ1Y3QgbXRrX2RybV9jcnRjICptdGtfY3J0YyA9IHRvX210a19jcnRjKGNy dGMpOworCXN0cnVjdCBtdGtfY3J0Y19zdGF0ZSAqc3RhdGUgPSB0b19tdGtfY3J0Y19zdGF0ZSht dGtfY3J0Yy0+YmFzZS5zdGF0ZSk7CisJc3RydWN0IG10a19kZHBfY29tcCAqb3ZsID0gbXRrX2Ny dGMtPmRkcF9jb21wWzBdOworCXVuc2lnbmVkIGludCBpOworCisJLyoKKwkgKiBUT0RPOiBpbnN0 ZWFkIG9mIHVwZGF0aW5nIHRoZSByZWdpc3RlcnMgaGVyZSwgd2Ugc2hvdWxkIHByZXBhcmUKKwkg KiB3b3JraW5nIHJlZ2lzdGVycyBpbiBhdG9taWNfY29tbWl0IGFuZCBsZXQgdGhlIGhhcmR3YXJl IGNvbW1hbmQKKwkgKiBxdWV1ZSB1cGRhdGUgbW9kdWxlIHJlZ2lzdGVycyBvbiB2YmxhbmsuCisJ ICovCisJaWYgKHN0YXRlLT5wZW5kaW5nX2NvbmZpZykgeworCQltdGtfZGRwX2NvbXBfY29uZmln KG92bCwgc3RhdGUtPnBlbmRpbmdfd2lkdGgsCisJCQkJICAgIHN0YXRlLT5wZW5kaW5nX2hlaWdo dCwKKwkJCQkgICAgc3RhdGUtPnBlbmRpbmdfdnJlZnJlc2gpOworCisJCXN0YXRlLT5wZW5kaW5n X2NvbmZpZyA9IGZhbHNlOworCX0KKworCWlmIChtdGtfY3J0Yy0+cGVuZGluZ19wbGFuZXMpIHsK KwkJZm9yIChpID0gMDsgaSA8IE9WTF9MQVlFUl9OUjsgaSsrKSB7CisJCQlzdHJ1Y3QgZHJtX3Bs YW5lICpwbGFuZSA9ICZtdGtfY3J0Yy0+cGxhbmVzW2ldLmJhc2U7CisJCQlzdHJ1Y3QgbXRrX3Bs YW5lX3N0YXRlICpwbGFuZV9zdGF0ZTsKKworCQkJcGxhbmVfc3RhdGUgPSB0b19tdGtfcGxhbmVf c3RhdGUocGxhbmUtPnN0YXRlKTsKKworCQkJaWYgKHBsYW5lX3N0YXRlLT5wZW5kaW5nLmNvbmZp ZykgeworCQkJCW10a19kZHBfY29tcF9sYXllcl9jb25maWcob3ZsLCBpLCBwbGFuZV9zdGF0ZSk7 CisJCQkJcGxhbmVfc3RhdGUtPnBlbmRpbmcuY29uZmlnID0gZmFsc2U7CisJCQl9CisJCX0KKwkJ bXRrX2NydGMtPnBlbmRpbmdfcGxhbmVzID0gZmFsc2U7CisJfQorfQorCiBzdGF0aWMgdm9pZCBt dGtfZHJtX2NydGNfZW5hYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIHsKIAlzdHJ1Y3QgbXRr X2RybV9jcnRjICptdGtfY3J0YyA9IHRvX210a19jcnRjKGNydGMpOwpAQCAtMzkxLDYgKzQyNyw3 IEBAIHN0YXRpYyB2b2lkIG10a19kcm1fY3J0Y19hdG9taWNfZmx1c2goc3RydWN0IGRybV9jcnRj ICpjcnRjLAogCQkJCSAgICAgIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUp CiB7CiAJc3RydWN0IG10a19kcm1fY3J0YyAqbXRrX2NydGMgPSB0b19tdGtfY3J0YyhjcnRjKTsK KwlzdHJ1Y3QgbXRrX2RybV9wcml2YXRlICpwcml2ID0gY3J0Yy0+ZGV2LT5kZXZfcHJpdmF0ZTsK IAl1bnNpZ25lZCBpbnQgcGVuZGluZ19wbGFuZXMgPSAwOwogCWludCBpOwogCkBAIC00MDksNiAr NDQ2LDEyIEBAIHN0YXRpYyB2b2lkIG10a19kcm1fY3J0Y19hdG9taWNfZmx1c2goc3RydWN0IGRy bV9jcnRjICpjcnRjLAogCX0KIAlpZiAocGVuZGluZ19wbGFuZXMpCiAJCW10a19jcnRjLT5wZW5k aW5nX3BsYW5lcyA9IHRydWU7CisKKwlpZiAocHJpdi0+ZGF0YS0+c2hhZG93X3JlZ2lzdGVyKSB7 CisJCW10a19kaXNwX211dGV4X2FjcXVpcmUobXRrX2NydGMtPm11dGV4KTsKKwkJbXRrX2NydGNf ZGRwX2NvbmZpZyhjcnRjKTsKKwkJbXRrX2Rpc3BfbXV0ZXhfcmVsZWFzZShtdGtfY3J0Yy0+bXV0 ZXgpOworCX0KIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY3J0Y19mdW5jcyBtdGtfY3J0 Y19mdW5jcyA9IHsKQEAgLTQ1MywzNiArNDk2LDEwIEBAIGVycl9jbGVhbnVwX2NydGM6CiB2b2lk IG10a19jcnRjX2RkcF9pcnEoc3RydWN0IGRybV9jcnRjICpjcnRjLCBzdHJ1Y3QgbXRrX2RkcF9j b21wICpvdmwpCiB7CiAJc3RydWN0IG10a19kcm1fY3J0YyAqbXRrX2NydGMgPSB0b19tdGtfY3J0 YyhjcnRjKTsKLQlzdHJ1Y3QgbXRrX2NydGNfc3RhdGUgKnN0YXRlID0gdG9fbXRrX2NydGNfc3Rh dGUobXRrX2NydGMtPmJhc2Uuc3RhdGUpOwotCXVuc2lnbmVkIGludCBpOworCXN0cnVjdCBtdGtf ZHJtX3ByaXZhdGUgKnByaXYgPSBjcnRjLT5kZXYtPmRldl9wcml2YXRlOwogCi0JLyoKLQkgKiBU T0RPOiBpbnN0ZWFkIG9mIHVwZGF0aW5nIHRoZSByZWdpc3RlcnMgaGVyZSwgd2Ugc2hvdWxkIHBy ZXBhcmUKLQkgKiB3b3JraW5nIHJlZ2lzdGVycyBpbiBhdG9taWNfY29tbWl0IGFuZCBsZXQgdGhl IGhhcmR3YXJlIGNvbW1hbmQKLQkgKiBxdWV1ZSB1cGRhdGUgbW9kdWxlIHJlZ2lzdGVycyBvbiB2 YmxhbmsuCi0JICovCi0JaWYgKHN0YXRlLT5wZW5kaW5nX2NvbmZpZykgewotCQltdGtfZGRwX2Nv bXBfY29uZmlnKG92bCwgc3RhdGUtPnBlbmRpbmdfd2lkdGgsCi0JCQkJICAgIHN0YXRlLT5wZW5k aW5nX2hlaWdodCwKLQkJCQkgICAgc3RhdGUtPnBlbmRpbmdfdnJlZnJlc2gpOwotCi0JCXN0YXRl LT5wZW5kaW5nX2NvbmZpZyA9IGZhbHNlOwotCX0KLQotCWlmIChtdGtfY3J0Yy0+cGVuZGluZ19w bGFuZXMpIHsKLQkJZm9yIChpID0gMDsgaSA8IE9WTF9MQVlFUl9OUjsgaSsrKSB7Ci0JCQlzdHJ1 Y3QgZHJtX3BsYW5lICpwbGFuZSA9ICZtdGtfY3J0Yy0+cGxhbmVzW2ldLmJhc2U7Ci0JCQlzdHJ1 Y3QgbXRrX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZTsKLQotCQkJcGxhbmVfc3RhdGUgPSB0b19t dGtfcGxhbmVfc3RhdGUocGxhbmUtPnN0YXRlKTsKLQotCQkJaWYgKHBsYW5lX3N0YXRlLT5wZW5k aW5nLmNvbmZpZykgewotCQkJCW10a19kZHBfY29tcF9sYXllcl9jb25maWcob3ZsLCBpLCBwbGFu ZV9zdGF0ZSk7Ci0JCQkJcGxhbmVfc3RhdGUtPnBlbmRpbmcuY29uZmlnID0gZmFsc2U7Ci0JCQl9 Ci0JCX0KLQkJbXRrX2NydGMtPnBlbmRpbmdfcGxhbmVzID0gZmFsc2U7Ci0JfQorCWlmICghcHJp di0+ZGF0YS0+c2hhZG93X3JlZ2lzdGVyKQorCQltdGtfY3J0Y19kZHBfY29uZmlnKGNydGMpOwog CiAJbXRrX2RybV9maW5pc2hfcGFnZV9mbGlwKG10a19jcnRjKTsKIH0KZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2RkcC5jIGIvZHJpdmVycy9ncHUvZHJtL21l ZGlhdGVrL210a19kcm1fZGRwLmMKaW5kZXggNTI5NTY5ZC4uZjA5YTQxNCAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZGRwLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL21lZGlhdGVrL210a19kcm1fZGRwLmMKQEAgLTEyLDYgKzEyLDcgQEAKICAqLwogCiAjaW5j bHVkZSA8bGludXgvY2xrLmg+CisjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KICNpbmNsdWRlIDxs aW51eC9tb2R1bGUuaD4KICNpbmNsdWRlIDxsaW51eC9vZl9kZXZpY2UuaD4KICNpbmNsdWRlIDxs aW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KQEAgLTM2LDYgKzM3LDcgQEAKICNkZWZpbmUgRElTUF9S RUdfQ09ORklHX0RTSV9TRUwJCQkweDA1MAogCiAjZGVmaW5lIERJU1BfUkVHX01VVEVYX0VOKG4p CSgweDIwICsgMHgyMCAqIChuKSkKKyNkZWZpbmUgRElTUF9SRUdfTVVURVgobikJKDB4MjQgKyAw eDIwICogKG4pKQogI2RlZmluZSBESVNQX1JFR19NVVRFWF9SU1QobikJKDB4MjggKyAweDIwICog KG4pKQogI2RlZmluZSBESVNQX1JFR19NVVRFWF9NT0QobikJKDB4MmMgKyAweDIwICogKG4pKQog I2RlZmluZSBESVNQX1JFR19NVVRFWF9TT0YobikJKDB4MzAgKyAweDIwICogKG4pKQpAQCAtMzQx LDYgKzM0MywzMCBAQCB2b2lkIG10a19kaXNwX211dGV4X2Rpc2FibGUoc3RydWN0IG10a19kaXNw X211dGV4ICptdXRleCkKIAl3cml0ZWwoMCwgZGRwLT5yZWdzICsgRElTUF9SRUdfTVVURVhfRU4o bXV0ZXgtPmlkKSk7CiB9CiAKK3ZvaWQgbXRrX2Rpc3BfbXV0ZXhfYWNxdWlyZShzdHJ1Y3QgbXRr X2Rpc3BfbXV0ZXggKm11dGV4KQoreworCXN0cnVjdCBtdGtfZGRwICpkZHAgPSBjb250YWluZXJf b2YobXV0ZXgsIHN0cnVjdCBtdGtfZGRwLAorCQkJCQkgICBtdXRleFttdXRleC0+aWRdKTsKKwor CXVuc2lnbmVkIGludCBjbnQgPSAwOworCisJd3JpdGVsKDEsIGRkcC0+cmVncyArIERJU1BfUkVH X01VVEVYX0VOKG11dGV4LT5pZCkpOworCXdyaXRlbCgxLCBkZHAtPnJlZ3MgKyBESVNQX1JFR19N VVRFWChtdXRleC0+aWQpKTsKKwl3aGlsZSAoIShyZWFkbChkZHAtPnJlZ3MgKyBESVNQX1JFR19N VVRFWChtdXRleC0+aWQpKSAmIDB4MikpIHsKKwkJaWYgKGNudCsrID4gMTAwMDApCisJCQlicmVh azsKKwkJdWRlbGF5KDEpOworCX0KK30KKwordm9pZCBtdGtfZGlzcF9tdXRleF9yZWxlYXNlKHN0 cnVjdCBtdGtfZGlzcF9tdXRleCAqbXV0ZXgpCit7CisJc3RydWN0IG10a19kZHAgKmRkcCA9IGNv bnRhaW5lcl9vZihtdXRleCwgc3RydWN0IG10a19kZHAsCisJCQkJCSAgIG11dGV4W211dGV4LT5p ZF0pOworCisJd3JpdGVsKDAsIGRkcC0+cmVncyArIERJU1BfUkVHX01VVEVYKG11dGV4LT5pZCkp OworfQorCiBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBkZHBfZHJpdmVyX2R0X21h dGNoW10gPSB7CiAJeyAuY29tcGF0aWJsZSA9ICJtZWRpYXRlayxtdDI3MDEtZGlzcC1tdXRleCIs IC5kYXRhID0gbXV0ZXhfbW9kX210MjcwMX0sCiAJeyAuY29tcGF0aWJsZSA9ICJtZWRpYXRlayxt dDgxNzMtZGlzcC1tdXRleCIsIC5kYXRhID0gbXV0ZXhfbW9kX210ODE3M30sCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kZHAuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9tZWRpYXRlay9tdGtfZHJtX2RkcC5oCmluZGV4IDkyYzExNzUuLmY5YTc5OTEgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2RkcC5oCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2RkcC5oCkBAIC0zNyw1ICszNyw3IEBAIHZvaWQgbXRr X2Rpc3BfbXV0ZXhfcmVtb3ZlX2NvbXAoc3RydWN0IG10a19kaXNwX211dGV4ICptdXRleCwKIAkJ CQllbnVtIG10a19kZHBfY29tcF9pZCBpZCk7CiB2b2lkIG10a19kaXNwX211dGV4X3VucHJlcGFy ZShzdHJ1Y3QgbXRrX2Rpc3BfbXV0ZXggKm11dGV4KTsKIHZvaWQgbXRrX2Rpc3BfbXV0ZXhfcHV0 KHN0cnVjdCBtdGtfZGlzcF9tdXRleCAqbXV0ZXgpOwordm9pZCBtdGtfZGlzcF9tdXRleF9hY3F1 aXJlKHN0cnVjdCBtdGtfZGlzcF9tdXRleCAqbXV0ZXgpOwordm9pZCBtdGtfZGlzcF9tdXRleF9y ZWxlYXNlKHN0cnVjdCBtdGtfZGlzcF9tdXRleCAqbXV0ZXgpOwogCiAjZW5kaWYgLyogTVRLX0RS TV9ERFBfSCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1f ZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuYwppbmRleCA4YjU2 MmFiLi44ZjlmYjdlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2Ry bV9kcnYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuYwpAQCAt MTQ2LDYgKzE0Niw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXRrX21tc3lzX2RyaXZlcl9kYXRh IG10MjcwMV9tbXN5c19kcml2ZXJfZGF0YSA9IHsKIAkubWFpbl9sZW4gPSBBUlJBWV9TSVpFKG10 a19kZHBfbWFpbl8yNzAxKSwKIAkuZXh0X3BhdGggPSBtdGtfZGRwX2V4dF8yNzAxLAogCS5leHRf bGVuID0gQVJSQVlfU0laRShtdGtfZGRwX2V4dF8yNzAxKSwKKwkuc2hhZG93X3JlZ2lzdGVyID0g dHJ1ZSwKIH07CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXRrX21tc3lzX2RyaXZlcl9kYXRhIG10 ODE3M19tbXN5c19kcml2ZXJfZGF0YSA9IHsKQEAgLTE1Myw2ICsxNTQsNyBAQCBzdGF0aWMgY29u c3Qgc3RydWN0IG10a19tbXN5c19kcml2ZXJfZGF0YSBtdDgxNzNfbW1zeXNfZHJpdmVyX2RhdGEg PSB7CiAJLm1haW5fbGVuID0gQVJSQVlfU0laRShtdGtfZGRwX21haW5fODE3MyksCiAJLmV4dF9w YXRoID0gbXRrX2RkcF9leHRfODE3MywKIAkuZXh0X2xlbiA9IEFSUkFZX1NJWkUobXRrX2RkcF9l eHRfODE3MyksCisJLnNoYWRvd19yZWdpc3RlciA9IGZhbHNlLAogfTsKIAogc3RhdGljIGludCBt dGtfZHJtX2ttc19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkcm0pCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9tZWRp YXRlay9tdGtfZHJtX2Rydi5oCmluZGV4IGZhMGIxMDYuLjk0ZjhiNjYgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9tZWRpYXRlay9tdGtfZHJtX2Rydi5oCkBAIC0zMyw2ICszMyw3IEBAIHN0cnVjdCBtdGtfbW1z eXNfZHJpdmVyX2RhdGEgewogCXVuc2lnbmVkIGludCBtYWluX2xlbjsKIAljb25zdCBlbnVtIG10 a19kZHBfY29tcF9pZCAqZXh0X3BhdGg7CiAJdW5zaWduZWQgaW50IGV4dF9sZW47CisJYm9vbCBz aGFkb3dfcmVnaXN0ZXI7CiB9OwogCiBzdHJ1Y3QgbXRrX2RybV9wcml2YXRlIHsKLS0gCjEuNy45 LjUKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1k ZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=