From mboxrd@z Thu Jan 1 00:00:00 1970 From: ville.syrjala@linux.intel.com Subject: [PATCH v2 05/29] drm/i915: Add dev_priv->psr_mmio_base Date: Wed, 4 Nov 2015 23:19:53 +0200 Message-ID: <1446672017-24497-6-git-send-email-ville.syrjala@linux.intel.com> References: <1446672017-24497-1-git-send-email-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id 0C07572106 for ; Wed, 4 Nov 2015 13:20:36 -0800 (PST) In-Reply-To: <1446672017-24497-1-git-send-email-ville.syrjala@linux.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 RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KCkRy b3AgdGhlIEVEUF9QU1JfQkFTRSgpIHRoaW5nLCBhbmQganVzdCBzdGljayB0aGUgUFNSIHJlZ2lz dGVyIG9mZnNldAp1bmRlciBkZXZfcHJpdiwgbGlrZSB3ZSBmb3IgRFNJIGFuZCBHUElPIGZvciBl eGFtcGxlLgoKVE9ETzogY291bGQgcHJvYmFibHkgbW92ZSBhIGJ1bmNoIG9mIHRoaXMga2luZCBv ZiBzdHVmZiBpbnRvIHRoZSBkZXZpY2UKaW5mbyBpbnN0ZWFkLi4uCgp2MjogRHJvcCB0aGUgc3B1 cmlvdXMgd2hpdGVzcGFjZSBjaGFuZ2UgKEphbmkpCgpSZXZpZXdlZC1ieTogSmFuaSBOaWt1bGEg PGphbmkubmlrdWxhQGludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogVmlsbGUgU3lyasOkbMOkIDx2 aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2RlYnVnZnMuYyB8ICA0ICsrLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2Lmgg ICAgIHwgIDIgKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggICAgIHwgMTUgKysr KysrKystLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wc3IuYyAgICB8IDI3ICsr KysrKysrKysrKysrKy0tLS0tLS0tLS0tLQogNCBmaWxlcyBjaGFuZ2VkLCAyNyBpbnNlcnRpb25z KCspLCAyMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCmluZGV4 IDU2NTlkNGMuLmEwMzhkNjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZGVidWdmcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCkBAIC0y NTYwLDcgKzI1NjAsNyBAQCBzdGF0aWMgaW50IGk5MTVfZWRwX3Bzcl9zdGF0dXMoc3RydWN0IHNl cV9maWxlICptLCB2b2lkICpkYXRhKQogCQkgICB5ZXNubyh3b3JrX2J1c3koJmRldl9wcml2LT5w c3Iud29yay53b3JrKSkpOwogCiAJaWYgKEhBU19EREkoZGV2KSkKLQkJZW5hYmxlZCA9IEk5MTVf UkVBRChFRFBfUFNSX0NUTChkZXYpKSAmIEVEUF9QU1JfRU5BQkxFOworCQllbmFibGVkID0gSTkx NV9SRUFEKEVEUF9QU1JfQ1RMKSAmIEVEUF9QU1JfRU5BQkxFOwogCWVsc2UgewogCQlmb3JfZWFj aF9waXBlKGRldl9wcml2LCBwaXBlKSB7CiAJCQlzdGF0W3BpcGVdID0gSTkxNV9SRUFEKFZMVl9Q U1JTVEFUKHBpcGUpKSAmCkBAIC0yNTgyLDcgKzI1ODIsNyBAQCBzdGF0aWMgaW50IGk5MTVfZWRw X3Bzcl9zdGF0dXMoc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQogCiAJLyogQ0hWIFBT UiBoYXMgbm8ga2luZCBvZiBwZXJmb3JtYW5jZSBjb3VudGVyICovCiAJaWYgKEhBU19EREkoZGV2 KSkgewotCQlwc3JwZXJmID0gSTkxNV9SRUFEKEVEUF9QU1JfUEVSRl9DTlQoZGV2KSkgJgorCQlw c3JwZXJmID0gSTkxNV9SRUFEKEVEUF9QU1JfUEVSRl9DTlQpICYKIAkJCUVEUF9QU1JfUEVSRl9D TlRfTUFTSzsKIAogCQlzZXFfcHJpbnRmKG0sICJQZXJmb3JtYW5jZV9Db3VudGVyOiAldVxuIiwg cHNycGVyZik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCBkMmE1NDZhLi5jZjAzNjdhIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTE3MjEsNiArMTcyMSw4IEBAIHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlIHsKIAkvKiBNTUlPIGJhc2UgYWRkcmVzcyBmb3IgTUlQSSByZWdzICovCiAJ dWludDMyX3QgbWlwaV9tbWlvX2Jhc2U7CiAKKwl1aW50MzJfdCBwc3JfbW1pb19iYXNlOworCiAJ d2FpdF9xdWV1ZV9oZWFkX3QgZ21idXNfd2FpdF9xdWV1ZTsKIAogCXN0cnVjdCBwY2lfZGV2ICpi cmlkZ2VfZGV2OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKaW5kZXggMGI2Yzg3ZS4uNTI2OGVlOCAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAorKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCkBAIC0zMDc1LDggKzMwNzUsOSBAQCBlbnVtIHNrbF9k aXNwX3Bvd2VyX3dlbGxzIHsKICNkZWZpbmUgVkxWX1BTUlNUQVQocGlwZSkgX1BJUEUocGlwZSwg X1BTUlNUQVRBLCBfUFNSU1RBVEIpCiAKIC8qIEhTVysgZURQIFBTUiByZWdpc3RlcnMgKi8KLSNk ZWZpbmUgRURQX1BTUl9CQVNFKGRldikgICAgICAgICAgICAgICAgICAgICAgIChJU19IQVNXRUxM KGRldikgPyAweDY0ODAwIDogMHg2ZjgwMCkKLSNkZWZpbmUgRURQX1BTUl9DVEwoZGV2KQkJCShF RFBfUFNSX0JBU0UoZGV2KSArIDApCisjZGVmaW5lIEhTV19FRFBfUFNSX0JBU0UJMHg2NDgwMAor I2RlZmluZSBCRFdfRURQX1BTUl9CQVNFCTB4NmY4MDAKKyNkZWZpbmUgRURQX1BTUl9DVEwJCQkJ KGRldl9wcml2LT5wc3JfbW1pb19iYXNlICsgMCkKICNkZWZpbmUgICBFRFBfUFNSX0VOQUJMRQkJ CSgxPDwzMSkKICNkZWZpbmUgICBCRFdfUFNSX1NJTkdMRV9GUkFNRQkJCSgxPDwzMCkKICNkZWZp bmUgICBFRFBfUFNSX0xJTktfU1RBTkRCWQkJCSgxPDwyNykKQEAgLTMwOTksMTAgKzMxMDAsMTAg QEAgZW51bSBza2xfZGlzcF9wb3dlcl93ZWxscyB7CiAjZGVmaW5lICAgRURQX1BTUl9UUDFfVElN RV8wdXMJCQkoMzw8NCkKICNkZWZpbmUgICBFRFBfUFNSX0lETEVfRlJBTUVfU0hJRlQJCTAKIAot I2RlZmluZSBFRFBfUFNSX0FVWF9DVEwoZGV2KQkJCShFRFBfUFNSX0JBU0UoZGV2KSArIDB4MTAp Ci0jZGVmaW5lIEVEUF9QU1JfQVVYX0RBVEEoZGV2LCBpKQkJKEVEUF9QU1JfQkFTRShkZXYpICsg MHgxNCArIChpKSAqIDQpIC8qIDUgcmVnaXN0ZXJzICovCisjZGVmaW5lIEVEUF9QU1JfQVVYX0NU TAkJCQkoZGV2X3ByaXYtPnBzcl9tbWlvX2Jhc2UgKyAweDEwKQorI2RlZmluZSBFRFBfUFNSX0FV WF9EQVRBKGkpCQkJKGRldl9wcml2LT5wc3JfbW1pb19iYXNlICsgMHgxNCArIChpKSAqIDQpIC8q IDUgcmVnaXN0ZXJzICovCiAKLSNkZWZpbmUgRURQX1BTUl9TVEFUVVNfQ1RMKGRldikJCQkoRURQ X1BTUl9CQVNFKGRldikgKyAweDQwKQorI2RlZmluZSBFRFBfUFNSX1NUQVRVU19DVEwJCQkoZGV2 X3ByaXYtPnBzcl9tbWlvX2Jhc2UgKyAweDQwKQogI2RlZmluZSAgIEVEUF9QU1JfU1RBVFVTX1NU QVRFX01BU0sJCSg3PDwyOSkKICNkZWZpbmUgICBFRFBfUFNSX1NUQVRVU19TVEFURV9JRExFCQko MDw8MjkpCiAjZGVmaW5lICAgRURQX1BTUl9TVEFUVVNfU1RBVEVfU1JET05BQ0sJCSgxPDwyOSkK QEAgLTMxMjYsMTAgKzMxMjcsMTAgQEAgZW51bSBza2xfZGlzcF9wb3dlcl93ZWxscyB7CiAjZGVm aW5lICAgRURQX1BTUl9TVEFUVVNfU0VORElOR19UUDEJCSgxPDw0KQogI2RlZmluZSAgIEVEUF9Q U1JfU1RBVFVTX0lETEVfTUFTSwkJMHhmCiAKLSNkZWZpbmUgRURQX1BTUl9QRVJGX0NOVChkZXYp CQkoRURQX1BTUl9CQVNFKGRldikgKyAweDQ0KQorI2RlZmluZSBFRFBfUFNSX1BFUkZfQ05UCQko ZGV2X3ByaXYtPnBzcl9tbWlvX2Jhc2UgKyAweDQ0KQogI2RlZmluZSAgIEVEUF9QU1JfUEVSRl9D TlRfTUFTSwkJMHhmZmZmZmYKIAotI2RlZmluZSBFRFBfUFNSX0RFQlVHX0NUTChkZXYpCQkoRURQ X1BTUl9CQVNFKGRldikgKyAweDYwKQorI2RlZmluZSBFRFBfUFNSX0RFQlVHX0NUTAkJKGRldl9w cml2LT5wc3JfbW1pb19iYXNlICsgMHg2MCkKICNkZWZpbmUgICBFRFBfUFNSX0RFQlVHX01BU0tf TFBTUAkoMTw8MjcpCiAjZGVmaW5lICAgRURQX1BTUl9ERUJVR19NQVNLX01FTVVQCSgxPDwyNikK ICNkZWZpbmUgICBFRFBfUFNSX0RFQlVHX01BU0tfSFBECSgxPDwyNSkKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bzci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcHNyLmMKaW5kZXggZmY2NjcxOC4uM2M5NzNjNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcHNyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcHNy LmMKQEAgLTE4Myw5ICsxODMsOSBAQCBzdGF0aWMgdm9pZCBoc3dfcHNyX2VuYWJsZV9zaW5rKHN0 cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCiAJCQkJRFBfQVVYX0ZSQU1FX1NZTkNfRU5BQkxFKTsK IAogCWF1eF9kYXRhX3JlZyA9IChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA5KSA/Ci0JCURQX0FV WF9DSF9EQVRBKHBvcnQsIDApIDogRURQX1BTUl9BVVhfREFUQShkZXYsIDApOworCQlEUF9BVVhf Q0hfREFUQShwb3J0LCAwKSA6IEVEUF9QU1JfQVVYX0RBVEEoMCk7CiAJYXV4X2N0bF9yZWcgPSAo SU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOSkgPwotCQlEUF9BVVhfQ0hfQ1RMKHBvcnQpIDogRURQ X1BTUl9BVVhfQ1RMKGRldik7CisJCURQX0FVWF9DSF9DVEwocG9ydCkgOiBFRFBfUFNSX0FVWF9D VEw7CiAKIAkvKiBTZXR1cCBBVVggcmVnaXN0ZXJzICovCiAJZm9yIChpID0gMDsgaSA8IHNpemVv ZihhdXhfbXNnKTsgaSArPSA0KQpAQCAtMjc3LDcgKzI3Nyw3IEBAIHN0YXRpYyB2b2lkIGhzd19w c3JfZW5hYmxlX3NvdXJjZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQogCQlpZGxlX2ZyYW1l cyArPSA0OwogCX0KIAotCUk5MTVfV1JJVEUoRURQX1BTUl9DVEwoZGV2KSwgdmFsIHwKKwlJOTE1 X1dSSVRFKEVEUF9QU1JfQ1RMLCB2YWwgfAogCQkgICAoSVNfQlJPQURXRUxMKGRldikgPyAwIDog bGlua19lbnRyeV90aW1lKSB8CiAJCSAgIG1heF9zbGVlcF90aW1lIDw8IEVEUF9QU1JfTUFYX1NM RUVQX1RJTUVfU0hJRlQgfAogCQkgICBpZGxlX2ZyYW1lcyA8PCBFRFBfUFNSX0lETEVfRlJBTUVf U0hJRlQgfApAQCAtMzQxLDcgKzM0MSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3Bzcl9hY3RpdmF0 ZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBp bnRlbF9kaWdfcG9ydC0+YmFzZS5iYXNlLmRldjsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwogCi0JV0FSTl9PTihJOTE1X1JFQUQoRURQX1BT Ul9DVEwoZGV2KSkgJiBFRFBfUFNSX0VOQUJMRSk7CisJV0FSTl9PTihJOTE1X1JFQUQoRURQX1BT Ul9DVEwpICYgRURQX1BTUl9FTkFCTEUpOwogCVdBUk5fT04oZGV2X3ByaXYtPnBzci5hY3RpdmUp OwogCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmRldl9wcml2LT5wc3IubG9jayk7CiAKQEAgLTQwNSw3 ICs0MDUsNyBAQCB2b2lkIGludGVsX3Bzcl9lbmFibGUoc3RydWN0IGludGVsX2RwICppbnRlbF9k cCkKIAkJfQogCiAJCS8qIEF2b2lkIGNvbnRpbnVvdXMgUFNSIGV4aXQgYnkgbWFza2luZyBtZW11 cCBhbmQgaHBkICovCi0JCUk5MTVfV1JJVEUoRURQX1BTUl9ERUJVR19DVEwoZGV2KSwgRURQX1BT Ul9ERUJVR19NQVNLX01FTVVQIHwKKwkJSTkxNV9XUklURShFRFBfUFNSX0RFQlVHX0NUTCwgRURQ X1BTUl9ERUJVR19NQVNLX01FTVVQIHwKIAkJCSAgIEVEUF9QU1JfREVCVUdfTUFTS19IUEQpOwog CiAJCS8qIEVuYWJsZSBQU1Igb24gdGhlIHBhbmVsICovCkBAIC00NjcsMTcgKzQ2NywxNyBAQCBz dGF0aWMgdm9pZCBoc3dfcHNyX2Rpc2FibGUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKIAlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwogCiAJ aWYgKGRldl9wcml2LT5wc3IuYWN0aXZlKSB7Ci0JCUk5MTVfV1JJVEUoRURQX1BTUl9DVEwoZGV2 KSwKLQkJCSAgIEk5MTVfUkVBRChFRFBfUFNSX0NUTChkZXYpKSAmIH5FRFBfUFNSX0VOQUJMRSk7 CisJCUk5MTVfV1JJVEUoRURQX1BTUl9DVEwsCisJCQkgICBJOTE1X1JFQUQoRURQX1BTUl9DVEwp ICYgfkVEUF9QU1JfRU5BQkxFKTsKIAogCQkvKiBXYWl0IHRpbGwgUFNSIGlzIGlkbGUgKi8KLQkJ aWYgKF93YWl0X2ZvcigoSTkxNV9SRUFEKEVEUF9QU1JfU1RBVFVTX0NUTChkZXYpKSAmCisJCWlm IChfd2FpdF9mb3IoKEk5MTVfUkVBRChFRFBfUFNSX1NUQVRVU19DVEwpICYKIAkJCSAgICAgICBF RFBfUFNSX1NUQVRVU19TVEFURV9NQVNLKSA9PSAwLCAyMDAwLCAxMCkpCiAJCQlEUk1fRVJST1Io IlRpbWVkIG91dCB3YWl0aW5nIGZvciBQU1IgSWRsZSBTdGF0ZVxuIik7CiAKIAkJZGV2X3ByaXYt PnBzci5hY3RpdmUgPSBmYWxzZTsKIAl9IGVsc2UgewotCQlXQVJOX09OKEk5MTVfUkVBRChFRFBf UFNSX0NUTChkZXYpKSAmIEVEUF9QU1JfRU5BQkxFKTsKKwkJV0FSTl9PTihJOTE1X1JFQUQoRURQ X1BTUl9DVEwpICYgRURQX1BTUl9FTkFCTEUpOwogCX0KIH0KIApAQCAtNTI0LDcgKzUyNCw3IEBA IHN0YXRpYyB2b2lkIGludGVsX3Bzcl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAkg KiBhbmQgYmUgcmVhZHkgZm9yIHJlLWVuYWJsZS4KIAkgKi8KIAlpZiAoSEFTX0RESShkZXZfcHJp di0+ZGV2KSkgewotCQlpZiAod2FpdF9mb3IoKEk5MTVfUkVBRChFRFBfUFNSX1NUQVRVU19DVEwo ZGV2X3ByaXYtPmRldikpICYKKwkJaWYgKHdhaXRfZm9yKChJOTE1X1JFQUQoRURQX1BTUl9TVEFU VVNfQ1RMKSAmCiAJCQkgICAgICBFRFBfUFNSX1NUQVRVU19TVEFURV9NQVNLKSA9PSAwLCA1MCkp IHsKIAkJCURSTV9FUlJPUigiVGltZWQgb3V0IHdhaXRpbmcgZm9yIFBTUiBJZGxlIGZvciByZS1l bmFibGVcbiIpOwogCQkJcmV0dXJuOwpAQCAtNTY3LDExICs1NjcsMTEgQEAgc3RhdGljIHZvaWQg aW50ZWxfcHNyX2V4aXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAkJcmV0dXJuOwogCiAJaWYg KEhBU19EREkoZGV2KSkgewotCQl2YWwgPSBJOTE1X1JFQUQoRURQX1BTUl9DVEwoZGV2KSk7CisJ CXZhbCA9IEk5MTVfUkVBRChFRFBfUFNSX0NUTCk7CiAKIAkJV0FSTl9PTighKHZhbCAmIEVEUF9Q U1JfRU5BQkxFKSk7CiAKLQkJSTkxNV9XUklURShFRFBfUFNSX0NUTChkZXYpLCB2YWwgJiB+RURQ X1BTUl9FTkFCTEUpOworCQlJOTE1X1dSSVRFKEVEUF9QU1JfQ1RMLCB2YWwgJiB+RURQX1BTUl9F TkFCTEUpOwogCX0gZWxzZSB7CiAJCXZhbCA9IEk5MTVfUkVBRChWTFZfUFNSQ1RMKHBpcGUpKTsK IApAQCAtNzUyLDYgKzc1Miw5IEBAIHZvaWQgaW50ZWxfcHNyX2luaXQoc3RydWN0IGRybV9kZXZp Y2UgKmRldikKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRl dl9wcml2YXRlOwogCisJZGV2X3ByaXYtPnBzcl9tbWlvX2Jhc2UgPSBJU19IQVNXRUxMKGRldl9w cml2KSA/CisJCUhTV19FRFBfUFNSX0JBU0UgOiBCRFdfRURQX1BTUl9CQVNFOworCiAJSU5JVF9E RUxBWUVEX1dPUksoJmRldl9wcml2LT5wc3Iud29yaywgaW50ZWxfcHNyX3dvcmspOwogCW11dGV4 X2luaXQoJmRldl9wcml2LT5wc3IubG9jayk7CiB9Ci0tIAoyLjQuMTAKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QK SW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==