From mboxrd@z Thu Jan 1 00:00:00 1970 From: alexdeucher@gmail.com Subject: [PATCH 048/165] drm/radeon: add UVD support for CIK (v3) Date: Wed, 26 Jun 2013 09:22:08 -0400 Message-ID: <1372253045-17042-49-git-send-email-alexdeucher@gmail.com> References: <1372253045-17042-1-git-send-email-alexdeucher@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-qc0-f179.google.com (mail-qc0-f179.google.com [209.85.216.179]) by gabe.freedesktop.org (Postfix) with ESMTP id 22820E6356 for ; Wed, 26 Jun 2013 06:24:46 -0700 (PDT) Received: by mail-qc0-f179.google.com with SMTP id e11so8145188qcx.38 for ; Wed, 26 Jun 2013 06:24:45 -0700 (PDT) In-Reply-To: <1372253045-17042-1-git-send-email-alexdeucher@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org Errors-To: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org To: dri-devel@lists.freedesktop.org Cc: Alex Deucher , =?UTF-8?q?Christian=20K=C3=B6nig?= List-Id: dri-devel@lists.freedesktop.org RnJvbTogQ2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29tPgoKdjI6IGFn ZDVmOiBmaXggY2xvY2sgZGl2aWRlcnMgc2V0dXAgZm9yIGJvbmFpcmUKdjM6IGFnZDVmOiByZWJh c2UKClNpZ25lZC1vZmYtYnk6IENocmlzdGlhbiBLw7ZuaWcgPGNocmlzdGlhbi5rb2VuaWdAYW1k LmNvbT4KU2lnbmVkLW9mZi1ieTogQWxleCBEZXVjaGVyIDxhbGV4YW5kZXIuZGV1Y2hlckBhbWQu Y29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9yYWRlb24vY2lrLmMgICAgICAgICB8ICAxMTEgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9j aWtkLmggICAgICAgIHwgICAyOCArKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFk ZW9uX2FzaWMuaCB8ICAgIDIgKwogZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fdXZkLmMg IHwgICAgOCArKysKIDQgZmlsZXMgY2hhbmdlZCwgMTQ5IGluc2VydGlvbnMoKyksIDAgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9jaWsuYyBiL2RyaXZl cnMvZ3B1L2RybS9yYWRlb24vY2lrLmMKaW5kZXggZThlYTg0NS4uMjllMGNkZCAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9jaWsuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vcmFk ZW9uL2Npay5jCkBAIC0xNDk1LDYgKzE0OTUsOSBAQCBzdGF0aWMgdm9pZCBjaWtfZ3B1X2luaXQo c3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYpCiAJV1JFRzMyKERNSUZfQUREUl9DQUxDLCBnYl9h ZGRyX2NvbmZpZyk7CiAJV1JFRzMyKFNETUEwX1RJTElOR19DT05GSUcgKyBTRE1BMF9SRUdJU1RF Ul9PRkZTRVQsIGdiX2FkZHJfY29uZmlnICYgMHg3MCk7CiAJV1JFRzMyKFNETUEwX1RJTElOR19D T05GSUcgKyBTRE1BMV9SRUdJU1RFUl9PRkZTRVQsIGdiX2FkZHJfY29uZmlnICYgMHg3MCk7CisJ V1JFRzMyKFVWRF9VREVDX0FERFJfQ09ORklHLCBnYl9hZGRyX2NvbmZpZyk7CisJV1JFRzMyKFVW RF9VREVDX0RCX0FERFJfQ09ORklHLCBnYl9hZGRyX2NvbmZpZyk7CisJV1JFRzMyKFVWRF9VREVD X0RCV19BRERSX0NPTkZJRywgZ2JfYWRkcl9jb25maWcpOwogCiAJY2lrX3RpbGluZ19tb2RlX3Rh YmxlX2luaXQocmRldik7CiAKQEAgLTQ5MDYsNiArNDkwOSwxNiBAQCBzdGF0aWMgaW50IGNpa19z dGFydHVwKHN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2KQogCQlyZXR1cm4gcjsKIAl9CiAKKwly ID0gY2lrX3V2ZF9yZXN1bWUocmRldik7CisJaWYgKCFyKSB7CisJCXIgPSByYWRlb25fZmVuY2Vf ZHJpdmVyX3N0YXJ0X3JpbmcocmRldiwKKwkJCQkJCSAgIFI2MDBfUklOR19UWVBFX1VWRF9JTkRF WCk7CisJCWlmIChyKQorCQkJZGV2X2VycihyZGV2LT5kZXYsICJVVkQgZmVuY2VzIGluaXQgZXJy b3IgKCVkKS5cbiIsIHIpOworCX0KKwlpZiAocikKKwkJcmRldi0+cmluZ1tSNjAwX1JJTkdfVFlQ RV9VVkRfSU5ERVhdLnJpbmdfc2l6ZSA9IDA7CisKIAkvKiBFbmFibGUgSVJRICovCiAJaWYgKCFy ZGV2LT5pcnEuaW5zdGFsbGVkKSB7CiAJCXIgPSByYWRlb25faXJxX2ttc19pbml0KHJkZXYpOwpA QCAtNDk1Miw2ICs0OTY1LDE4IEBAIHN0YXRpYyBpbnQgY2lrX3N0YXJ0dXAoc3RydWN0IHJhZGVv bl9kZXZpY2UgKnJkZXYpCiAJaWYgKHIpCiAJCXJldHVybiByOwogCisJcmluZyA9ICZyZGV2LT5y aW5nW1I2MDBfUklOR19UWVBFX1VWRF9JTkRFWF07CisJaWYgKHJpbmctPnJpbmdfc2l6ZSkgewor CQlyID0gcmFkZW9uX3JpbmdfaW5pdChyZGV2LCByaW5nLCByaW5nLT5yaW5nX3NpemUsCisJCQkJ ICAgICBSNjAwX1dCX1VWRF9SUFRSX09GRlNFVCwKKwkJCQkgICAgIFVWRF9SQkNfUkJfUlBUUiwg VVZEX1JCQ19SQl9XUFRSLAorCQkJCSAgICAgMCwgMHhmZmZmZiwgUkFERU9OX0NQX1BBQ0tFVDIp OworCQlpZiAoIXIpCisJCQlyID0gcjYwMF91dmRfaW5pdChyZGV2KTsKKwkJaWYgKHIpCisJCQlE Uk1fRVJST1IoInJhZGVvbjogZmFpbGVkIGluaXRpYWxpemluZyBVVkQgKCVkKS5cbiIsIHIpOwor CX0KKwogCXIgPSByYWRlb25faWJfcG9vbF9pbml0KHJkZXYpOwogCWlmIChyKSB7CiAJCWRldl9l cnIocmRldi0+ZGV2LCAiSUIgaW5pdGlhbGl6YXRpb24gZmFpbGVkICglZCkuXG4iLCByKTsKQEAg LTUwMTMsNiArNTAzOCw4IEBAIGludCBjaWtfc3VzcGVuZChzdHJ1Y3QgcmFkZW9uX2RldmljZSAq cmRldikKIAlyYWRlb25fdm1fbWFuYWdlcl9maW5pKHJkZXYpOwogCWNpa19jcF9lbmFibGUocmRl diwgZmFsc2UpOwogCWNpa19zZG1hX2VuYWJsZShyZGV2LCBmYWxzZSk7CisJcjYwMF91dmRfcmJj X3N0b3AocmRldik7CisJcmFkZW9uX3V2ZF9zdXNwZW5kKHJkZXYpOwogCWNpa19pcnFfc3VzcGVu ZChyZGV2KTsKIAlyYWRlb25fd2JfZGlzYWJsZShyZGV2KTsKIAljaWtfcGNpZV9nYXJ0X2Rpc2Fi bGUocmRldik7CkBAIC01MDk2LDYgKzUxMjMsMTMgQEAgaW50IGNpa19pbml0KHN0cnVjdCByYWRl b25fZGV2aWNlICpyZGV2KQogCXJpbmctPnJpbmdfb2JqID0gTlVMTDsKIAlyNjAwX3JpbmdfaW5p dChyZGV2LCByaW5nLCAyNTYgKiAxMDI0KTsKIAorCXIgPSByYWRlb25fdXZkX2luaXQocmRldik7 CisJaWYgKCFyKSB7CisJCXJpbmcgPSAmcmRldi0+cmluZ1tSNjAwX1JJTkdfVFlQRV9VVkRfSU5E RVhdOworCQlyaW5nLT5yaW5nX29iaiA9IE5VTEw7CisJCXI2MDBfcmluZ19pbml0KHJkZXYsIHJp bmcsIDQwOTYpOworCX0KKwogCXJkZXYtPmloLnJpbmdfb2JqID0gTlVMTDsKIAlyNjAwX2loX3Jp bmdfaW5pdChyZGV2LCA2NCAqIDEwMjQpOwogCkBAIC01MTUwLDYgKzUxODQsNyBAQCB2b2lkIGNp a19maW5pKHN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2KQogCXJhZGVvbl92bV9tYW5hZ2VyX2Zp bmkocmRldik7CiAJcmFkZW9uX2liX3Bvb2xfZmluaShyZGV2KTsKIAlyYWRlb25faXJxX2ttc19m aW5pKHJkZXYpOworCXJhZGVvbl91dmRfZmluaShyZGV2KTsKIAljaWtfcGNpZV9nYXJ0X2Zpbmko cmRldik7CiAJcjYwMF92cmFtX3NjcmF0Y2hfZmluaShyZGV2KTsKIAlyYWRlb25fZ2VtX2Zpbmko cmRldik7CkBAIC01NzE3LDMgKzU3NTIsNzkgQEAgdWludDY0X3QgY2lrX2dldF9ncHVfY2xvY2tf Y291bnRlcihzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldikKIAlyZXR1cm4gY2xvY2s7CiB9CiAK K3N0YXRpYyBpbnQgY2lrX3NldF91dmRfY2xvY2soc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYs IHUzMiBjbG9jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUzMiBjbnRsX3JlZywg dTMyIHN0YXR1c19yZWcpCit7CisJaW50IHIsIGk7CisJc3RydWN0IGF0b21fY2xvY2tfZGl2aWRl cnMgZGl2aWRlcnM7CisJdWludDMyX3QgdG1wOworCisJciA9IHJhZGVvbl9hdG9tX2dldF9jbG9j a19kaXZpZGVycyhyZGV2LCBDT01QVVRFX0dQVUNMS19JTlBVVF9GTEFHX0RFRkFVTFRfR1BVQ0xL LAorCQkJCQkgICBjbG9jaywgZmFsc2UsICZkaXZpZGVycyk7CisJaWYgKHIpCisJCXJldHVybiBy OworCisJdG1wID0gUlJFRzMyX1NNQyhjbnRsX3JlZyk7CisJdG1wICY9IH4oRENMS19ESVJfQ05U TF9FTnxEQ0xLX0RJVklERVJfTUFTSyk7CisJdG1wIHw9IGRpdmlkZXJzLnBvc3RfZGl2aWRlcjsK KwlXUkVHMzJfU01DKGNudGxfcmVnLCB0bXApOworCisJZm9yIChpID0gMDsgaSA8IDEwMDsgaSsr KSB7CisJCWlmIChSUkVHMzJfU01DKHN0YXR1c19yZWcpICYgRENMS19TVEFUVVMpCisJCQlicmVh azsKKwkJbWRlbGF5KDEwKTsKKwl9CisJaWYgKGkgPT0gMTAwKQorCQlyZXR1cm4gLUVUSU1FRE9V VDsKKworCXJldHVybiAwOworfQorCitpbnQgY2lrX3NldF91dmRfY2xvY2tzKHN0cnVjdCByYWRl b25fZGV2aWNlICpyZGV2LCB1MzIgdmNsaywgdTMyIGRjbGspCit7CisJaW50IHIgPSAwOworCisJ ciA9IGNpa19zZXRfdXZkX2Nsb2NrKHJkZXYsIHZjbGssIENHX1ZDTEtfQ05UTCwgQ0dfVkNMS19T VEFUVVMpOworCWlmIChyKQorCQlyZXR1cm4gcjsKKworCXIgPSBjaWtfc2V0X3V2ZF9jbG9jayhy ZGV2LCBkY2xrLCBDR19EQ0xLX0NOVEwsIENHX0RDTEtfU1RBVFVTKTsKKwlyZXR1cm4gcjsKK30K KworaW50IGNpa191dmRfcmVzdW1lKHN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2KQoreworCXVp bnQ2NF90IGFkZHI7CisJdWludDMyX3Qgc2l6ZTsKKwlpbnQgcjsKKworCXIgPSByYWRlb25fdXZk X3Jlc3VtZShyZGV2KTsKKwlpZiAocikKKwkJcmV0dXJuIHI7CisKKwkvKiBwcm9ncmFtbSB0aGUg VkNQVSBtZW1vcnkgY29udHJvbGxlciBiaXRzIDAtMjcgKi8KKwlhZGRyID0gcmRldi0+dXZkLmdw dV9hZGRyID4+IDM7CisJc2l6ZSA9IFJBREVPTl9HUFVfUEFHRV9BTElHTihyZGV2LT51dmRfZnct PnNpemUgKyA0KSA+PiAzOworCVdSRUczMihVVkRfVkNQVV9DQUNIRV9PRkZTRVQwLCBhZGRyKTsK KwlXUkVHMzIoVVZEX1ZDUFVfQ0FDSEVfU0laRTAsIHNpemUpOworCisJYWRkciArPSBzaXplOwor CXNpemUgPSBSQURFT05fVVZEX1NUQUNLX1NJWkUgPj4gMzsKKwlXUkVHMzIoVVZEX1ZDUFVfQ0FD SEVfT0ZGU0VUMSwgYWRkcik7CisJV1JFRzMyKFVWRF9WQ1BVX0NBQ0hFX1NJWkUxLCBzaXplKTsK KworCWFkZHIgKz0gc2l6ZTsKKwlzaXplID0gUkFERU9OX1VWRF9IRUFQX1NJWkUgPj4gMzsKKwlX UkVHMzIoVVZEX1ZDUFVfQ0FDSEVfT0ZGU0VUMiwgYWRkcik7CisJV1JFRzMyKFVWRF9WQ1BVX0NB Q0hFX1NJWkUyLCBzaXplKTsKKworCS8qIGJpdHMgMjgtMzEgKi8KKwlhZGRyID0gKHJkZXYtPnV2 ZC5ncHVfYWRkciA+PiAyOCkgJiAweEY7CisJV1JFRzMyKFVWRF9MTUlfQUREUl9FWFQsIChhZGRy IDw8IDEyKSB8IChhZGRyIDw8IDApKTsKKworCS8qIGJpdHMgMzItMzkgKi8KKwlhZGRyID0gKHJk ZXYtPnV2ZC5ncHVfYWRkciA+PiAzMikgJiAweEZGOworCVdSRUczMihVVkRfTE1JX0VYVDQwX0FE RFIsIGFkZHIgfCAoMHg5IDw8IDE2KSB8ICgweDEgPDwgMzEpKTsKKworCXJldHVybiAwOworfQpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9jaWtkLmggYi9kcml2ZXJzL2dwdS9k cm0vcmFkZW9uL2Npa2QuaAppbmRleCBkMjM4MDlhLi43OWJlMzllIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vcmFkZW9uL2Npa2QuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL2Np a2QuaApAQCAtMTIwNCw0ICsxMjA0LDMyIEBACiAjICAgICAgIGRlZmluZSBTRE1BX1NSQk1fV1JJ VEVfRVhUUkFfQllURV9FTkFCTEUoeCkgICAgICAgKCh4KSA8PCAxMikKICAgICAgICAgICAgICAg ICAvKiBieXRlIG1hc2sgKi8KIAorLyogVVZEICovCisKKyNkZWZpbmUgVVZEX1VERUNfQUREUl9D T05GSUcJCTB4ZWY0YworI2RlZmluZSBVVkRfVURFQ19EQl9BRERSX0NPTkZJRwkJMHhlZjUwCisj ZGVmaW5lIFVWRF9VREVDX0RCV19BRERSX0NPTkZJRwkweGVmNTQKKworI2RlZmluZSBVVkRfTE1J X0VYVDQwX0FERFIJCTB4ZjQ5OAorI2RlZmluZSBVVkRfTE1JX0FERFJfRVhUCQkweGY1OTQKKyNk ZWZpbmUgVVZEX1ZDUFVfQ0FDSEVfT0ZGU0VUMAkJMHhmNjA4CisjZGVmaW5lIFVWRF9WQ1BVX0NB Q0hFX1NJWkUwCQkweGY2MGMKKyNkZWZpbmUgVVZEX1ZDUFVfQ0FDSEVfT0ZGU0VUMQkJMHhmNjEw CisjZGVmaW5lIFVWRF9WQ1BVX0NBQ0hFX1NJWkUxCQkweGY2MTQKKyNkZWZpbmUgVVZEX1ZDUFVf Q0FDSEVfT0ZGU0VUMgkJMHhmNjE4CisjZGVmaW5lIFVWRF9WQ1BVX0NBQ0hFX1NJWkUyCQkweGY2 MWMKKworI2RlZmluZSBVVkRfUkJDX1JCX1JQVFIJCQkweGY2OTAKKyNkZWZpbmUgVVZEX1JCQ19S Ql9XUFRSCQkJMHhmNjk0CisKKy8qIFVWRCBjbG9ja3MgKi8KKworI2RlZmluZSBDR19EQ0xLX0NO VEwJCQkweEMwNTAwMDlDCisjCWRlZmluZSBEQ0xLX0RJVklERVJfTUFTSwkweDdmCisjCWRlZmlu ZSBEQ0xLX0RJUl9DTlRMX0VOCQkoMSA8PCA4KQorI2RlZmluZSBDR19EQ0xLX1NUQVRVUwkJCTB4 QzA1MDAwQTAKKyMJZGVmaW5lIERDTEtfU1RBVFVTCQkoMSA8PCAwKQorI2RlZmluZSBDR19WQ0xL X0NOVEwJCQkweEMwNTAwMEE0CisjZGVmaW5lIENHX1ZDTEtfU1RBVFVTCQkJMHhDMDUwMDBBOAor CiAjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2FzaWMu aCBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2FzaWMuaAppbmRleCA4YzE5ZTM2Li4z NDA1NzQyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9hc2ljLmgK KysrIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fYXNpYy5oCkBAIC01NjAsNSArNTYw LDcgQEAgdWludDY0X3QgY2lrX2dldF9ncHVfY2xvY2tfY291bnRlcihzdHJ1Y3QgcmFkZW9uX2Rl dmljZSAqcmRldik7CiB1MzIgY2lrX2dldF94Y2xrKHN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2 KTsKIHVpbnQzMl90IGNpa19wY2llcF9ycmVnKHN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2LCB1 aW50MzJfdCByZWcpOwogdm9pZCBjaWtfcGNpZXBfd3JlZyhzdHJ1Y3QgcmFkZW9uX2RldmljZSAq cmRldiwgdWludDMyX3QgcmVnLCB1aW50MzJfdCB2KTsKK2ludCBjaWtfc2V0X3V2ZF9jbG9ja3Mo c3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYsIHUzMiB2Y2xrLCB1MzIgZGNsayk7CitpbnQgY2lr X3V2ZF9yZXN1bWUoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYpOwogCiAjZW5kaWYKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX3V2ZC5jIGIvZHJpdmVycy9ncHUv ZHJtL3JhZGVvbi9yYWRlb25fdXZkLmMKaW5kZXggY2FkNzM1ZC4uZmRjNzdkMSAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fdXZkLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL3JhZGVvbi9yYWRlb25fdXZkLmMKQEAgLTQ0LDExICs0NCwxMyBAQAogI2RlZmluZSBGSVJN V0FSRV9DWVBSRVNTCSJyYWRlb24vQ1lQUkVTU191dmQuYmluIgogI2RlZmluZSBGSVJNV0FSRV9T VU1PCQkicmFkZW9uL1NVTU9fdXZkLmJpbiIKICNkZWZpbmUgRklSTVdBUkVfVEFISVRJCQkicmFk ZW9uL1RBSElUSV91dmQuYmluIgorI2RlZmluZSBGSVJNV0FSRV9CT05BSVJFCSJyYWRlb24vQk9O QUlSRV91dmQuYmluIgogCiBNT0RVTEVfRklSTVdBUkUoRklSTVdBUkVfUlY3MTApOwogTU9EVUxF X0ZJUk1XQVJFKEZJUk1XQVJFX0NZUFJFU1MpOwogTU9EVUxFX0ZJUk1XQVJFKEZJUk1XQVJFX1NV TU8pOwogTU9EVUxFX0ZJUk1XQVJFKEZJUk1XQVJFX1RBSElUSSk7CitNT0RVTEVfRklSTVdBUkUo RklSTVdBUkVfQk9OQUlSRSk7CiAKIHN0YXRpYyB2b2lkIHJhZGVvbl91dmRfaWRsZV93b3JrX2hh bmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTsKIApAQCAtMTAwLDYgKzEwMiwxMiBAQCBp bnQgcmFkZW9uX3V2ZF9pbml0KHN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2KQogCQlmd19uYW1l ID0gRklSTVdBUkVfVEFISVRJOwogCQlicmVhazsKIAorCWNhc2UgQ0hJUF9CT05BSVJFOgorCWNh c2UgQ0hJUF9LQUJJTkk6CisJY2FzZSBDSElQX0tBVkVSSToKKwkJZndfbmFtZSA9IEZJUk1XQVJF X0JPTkFJUkU7CisJCWJyZWFrOworCiAJZGVmYXVsdDoKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQot LSAKMS43LjcuNQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK