From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ramalingam C Subject: Re: [PATCH v6 14/35] drm/i915: Implement HDCP2.2 link integrity check Date: Thu, 30 Aug 2018 12:27:48 +0530 Message-ID: <94508631-ea7e-a5b8-8656-c1e236cdc536@intel.com> References: <1531538117-1606-1-git-send-email-ramalingam.c@intel.com> <1531538117-1606-15-git-send-email-ramalingam.c@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Shankar, Uma" , "intel-gfx@lists.freedesktop.org" , "dri-devel@lists.freedesktop.org" , "daniel@ffwll.ch" , "seanpaul@chromium.org" , "Winkler, Tomas" , "Usyskin, Alexander" List-Id: dri-devel@lists.freedesktop.org CgpPbiBXZWRuZXNkYXkgMDEgQXVndXN0IDIwMTggMDQ6MTUgUE0sIFNoYW5rYXIsIFVtYSB3cm90 ZToKPgo+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+PiBGcm9tOiBDLCBSYW1hbGluZ2Ft Cj4+IFNlbnQ6IFNhdHVyZGF5LCBKdWx5IDE0LCAyMDE4IDg6NDUgQU0KPj4gVG86IGludGVsLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmc7IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmc7 Cj4+IGRhbmllbEBmZndsbC5jaDsgc2VhbnBhdWxAY2hyb21pdW0ub3JnOyBXaW5rbGVyLCBUb21h cwo+PiA8dG9tYXMud2lua2xlckBpbnRlbC5jb20+OyBVc3lza2luLCBBbGV4YW5kZXIgPGFsZXhh bmRlci51c3lza2luQGludGVsLmNvbT47Cj4+IFNoYW5rYXIsIFVtYSA8dW1hLnNoYW5rYXJAaW50 ZWwuY29tPgo+PiBDYzogU2hhcm1hLCBTaGFzaGFuayA8c2hhc2hhbmsuc2hhcm1hQGludGVsLmNv bT47IEMsIFJhbWFsaW5nYW0KPj4gPHJhbWFsaW5nYW0uY0BpbnRlbC5jb20+Cj4+IFN1YmplY3Q6 IFtQQVRDSCB2NiAxNC8zNV0gZHJtL2k5MTU6IEltcGxlbWVudCBIRENQMi4yIGxpbmsgaW50ZWdy aXR5IGNoZWNrCj4+Cj4+IEltcGxlbWVudHMgdGhlIGxpbmsgaW50ZWdyaXR5IGNoZWNrIG9uY2Ug aW4gNTAwbVNlYy4KPj4KPj4gT25jZSBlbmNyeXB0aW9uIGlzIGVuYWJsZWQsIGFuIG9uZ29pbmcg TGluayBJbnRlZ3JpdHkgQ2hlY2sgaXMgcGVyZm9ybWVkIGJ5IHRoZQo+PiBIRENQIFJlY2VpdmVy IHRvIGNoZWNrIHRoYXQgY2lwaGVyIHN5bmNocm9uaXphdGlvbiBpcyBtYWludGFpbmVkIGJldHdl ZW4gdGhlCj4+IEhEQ1AgVHJhbnNtaXR0ZXIgYW5kIHRoZSBIRENQIFJlY2VpdmVyLgo+Pgo+PiBP biB0aGUgZGV0ZWN0aW9uIG9mIHN5bmNocm9uaXphdGlvbiBsb3N0LCB0aGUgSERDUCBSZWNlaXZl ciBtdXN0IGFzc2VydCB0aGUKPj4gY29ycmVzcG9uZGluZyBiaXRzIG9mIHRoZSBSeFN0YXR1cyBy ZWdpc3Rlci4gVGhlIFRyYW5zbWl0dGVyIHBvbGxzIHRoZSBSeFN0YXR1cwo+PiByZWdpc3RlciBh bmQgaXQgbWF5IGluaXRpYXRlIHJlLWF1dGhlbnRpY2F0aW9uLgo+Pgo+PiB2MjoKPj4gICBSZWJh c2VkLgo+PiB2MzoKPj4gICBObyBDaGFuZ2VzLgo+PiB2NDoKPj4gICBlbnVtIGNoZWNrX2xpbmtf cmVzcG9uc2UgaXMgdXNlZCBjaGVjayB0aGUgbGluayBzdGF0dXMgW1VtYV0KPj4gdjU6Cj4+ICAg UmViYXNlZCBhcyBwYXJ0IG9mIHBhdGNoIHJlb3JkZXJpbmcuCj4+IHY2Ogo+PiAgIFJlcXVpcmVk IG1lbWJlcnMgb2YgaW50ZWxfaGRjcCBpcyBkZWZpbmVkIFtTZWFuIFBhdWxdCj4+Cj4+IFNpZ25l ZC1vZmYtYnk6IFJhbWFsaW5nYW0gQyA8cmFtYWxpbmdhbS5jQGludGVsLmNvbT4KPj4gLS0tCj4+ IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICB8ICA1ICsrKyAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfaGRjcC5jIHwKPj4gODQgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKystCj4+IGluY2x1ZGUvZHJtL2RybV9oZGNwLmggICAgICAgICAgICB8ICA4ICsr KysKPj4gMyBmaWxlcyBjaGFuZ2VkLCA5NiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCj4+ Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4+IGluZGV4IGVkNDI5YTZmYjlhYi4uY2U0Njc5 YTBiNTMwIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+PiBAQCAtNDAwLDYgKzQw MCw5IEBAIHN0cnVjdCBpbnRlbF9oZGNwX3NoaW0gewo+PiAJICovCj4+IAlpbnQgKCpjb25maWdf c3RyZWFtX3R5cGUpKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAo+ PiAJCQkJICB2b2lkICpidWYsIHNpemVfdCBzaXplKTsKPj4gKwo+PiArCS8qIEhEQ1AyLjIgTGlu ayBJbnRlZ3JpdHkgQ2hlY2sgKi8KPj4gKwlpbnQgKCpjaGVja18yXzJfbGluaykoc3RydWN0IGlu dGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQpOwo+PiB9Owo+Pgo+PiBzdHJ1Y3QgaW50 ZWxfaGRjcCB7Cj4+IEBAIC00NDIsNiArNDQ1LDggQEAgc3RydWN0IGludGVsX2hkY3Agewo+PiAJ ICogb3ZlciByZS1BdXRoIGhhcyB0byBiZSB0cmlnZ2VyZWQuCj4+IAkgKi8KPj4gCXVpbnQzMl90 IHNlcV9udW1fbTsKPj4gKwo+PiArCXN0cnVjdCBkZWxheWVkX3dvcmsgaGRjcDJfY2hlY2tfd29y azsKPj4gfTsKPj4KPj4gc3RydWN0IGludGVsX2Nvbm5lY3RvciB7Cj4+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZGNwLmMKPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9oZGNwLmMKPj4gaW5kZXggYTA4ZDgwYzcxMGQ3Li4wYTE0ZDg3NTczNDYgMTAwNjQ0 Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkY3AuYwo+PiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZGNwLmMKPj4gQEAgLTI1LDYgKzI1LDggQEAKPj4gc3Rh dGljIGludCBpbnRlbF9oZGNwMl9pbml0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rv cik7ICBzdGF0aWMgaW50Cj4+IF9pbnRlbF9oZGNwMl9lbmFibGUoc3RydWN0IGludGVsX2Nvbm5l Y3RvciAqY29ubmVjdG9yKTsgIHN0YXRpYyBpbnQKPj4gX2ludGVsX2hkY3AyX2Rpc2FibGUoc3Ry dWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKTsKPj4gK3N0YXRpYyB2b2lkIGludGVsX2hk Y3AyX2NoZWNrX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTsgc3RhdGljCj4+ICtpbnQg aW50ZWxfaGRjcDJfY2hlY2tfbGluayhzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3Ip Owo+PiBzdGF0aWMKPj4gaW50IGludGVsX2hkY3BfcmVhZF92YWxpZF9ia3N2KHN0cnVjdCBpbnRl bF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAo+PiAJCQkgICAgICAgY29uc3Qgc3RydWN0 IGludGVsX2hkY3Bfc2hpbSAqc2hpbSwgdTggKmJrc3YpOyBAQCAtCj4+IDgyMyw2ICs4MjUsNyBA QCBpbnQgaW50ZWxfaGRjcF9pbml0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwK Pj4gCW11dGV4X2luaXQoJmhkY3AtPm11dGV4KTsKPj4gCUlOSVRfREVMQVlFRF9XT1JLKCZoZGNw LT5jaGVja193b3JrLCBpbnRlbF9oZGNwX2NoZWNrX3dvcmspOwo+PiAJSU5JVF9XT1JLKCZoZGNw LT5wcm9wX3dvcmssIGludGVsX2hkY3BfcHJvcF93b3JrKTsKPj4gKwlJTklUX0RFTEFZRURfV09S SygmaGRjcC0+aGRjcDJfY2hlY2tfd29yaywKPj4gaW50ZWxfaGRjcDJfY2hlY2tfd29yayk7Cj4+ Cj4+IAlpZiAoaGRjcDJfc3VwcG9ydGVkKQo+PiAJCWludGVsX2hkY3AyX2luaXQoY29ubmVjdG9y KTsKPj4gQEAgLTg0NCw4ICs4NDcsMTIgQEAgaW50IGludGVsX2hkY3BfZW5hYmxlKHN0cnVjdCBp bnRlbF9jb25uZWN0b3IKPj4gKmNvbm5lY3RvcikKPj4gCSAqIENvbnNpZGVyaW5nIHRoYXQgSERD UDIuMiBpcyBtb3JlIHNlY3VyZSB0aGFuIEhEQ1AxLjQsIElmIHRoZSBzZXR1cAo+PiAJICogaXMg Y2FwYWJsZSBvZiBIRENQMi4yLCBpdCBpcyBwcmVmZXJyZWQgdG8gdXNlIEhEQ1AyLjIuCj4+IAkg Ki8KPj4gLQlpZiAoaW50ZWxfaGRjcDJfY2FwYWJsZShjb25uZWN0b3IpKQo+PiArCWlmIChpbnRl bF9oZGNwMl9jYXBhYmxlKGNvbm5lY3RvcikpIHsKPj4gCQlyZXQgPSBfaW50ZWxfaGRjcDJfZW5h YmxlKGNvbm5lY3Rvcik7Cj4+ICsJCWlmICghcmV0KQo+PiArCQkJc2NoZWR1bGVfZGVsYXllZF93 b3JrKCZoZGNwLT5oZGNwMl9jaGVja193b3JrLAo+PiArCQkJCQkgICAgICBEUk1fSERDUDJfQ0hF Q0tfUEVSSU9EX01TKTsKPj4gKwl9Cj4+Cj4+IAkvKiBXaGVuIEhEQ1AyLjIgZmFpbHMsIEhEQ1Ax LjQgd2lsbCBiZSBhdHRlbXB0ZWQgKi8KPj4gCWlmIChyZXQgJiYgaW50ZWxfaGRjcF9jYXBhYmxl KGNvbm5lY3RvcikpIHsgQEAgLTE3MjQsMyArMTczMSw3OCBAQAo+PiBzdGF0aWMgaW50IGludGVs X2hkY3AyX2luaXQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+PiBleGl0Ogo+ PiAJcmV0dXJuIHJldDsKPj4gfQo+PiArCj4+ICtzdGF0aWMgaW50IGludGVsX2hkY3AyX2NoZWNr X2xpbmsoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKSB7Cj4+ICsJc3RydWN0IGlu dGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQgPSBjb25uX3RvX2RpZ19wb3J0KGNvbm5l Y3Rvcik7Cj4+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShj b25uZWN0b3ItPmJhc2UuZGV2KTsKPj4gKwlzdHJ1Y3QgaW50ZWxfaGRjcCAqaGRjcCA9ICZjb25u ZWN0b3ItPmhkY3A7Cj4+ICsJZW51bSBwb3J0IHBvcnQgPSBjb25uZWN0b3ItPmVuY29kZXItPnBv cnQ7Cj4+ICsJaW50IHJldCA9IDA7Cj4+ICsKPj4gKwlpZiAoIWhkY3AtPnNoaW0pCj4+ICsJCXJl dHVybiAtRU5PRU5UOwo+PiArCj4+ICsJbXV0ZXhfbG9jaygmaGRjcC0+bXV0ZXgpOwo+PiArCj4+ ICsJaWYgKGhkY3AtPnZhbHVlID09IERSTV9NT0RFX0NPTlRFTlRfUFJPVEVDVElPTl9VTkRFU0lS RUQpCj4+ICsJCWdvdG8gb3V0Owo+PiArCj4+ICsJaWYgKCEoSTkxNV9SRUFEKEhEQ1AyX1NUQVRV U19EREkocG9ydCkpICYKPj4gTElOS19FTkNSWVBUSU9OX1NUQVRVUykpIHsKPj4gKwkJRFJNX0VS Uk9SKCJIRENQIGNoZWNrIGZhaWxlZDogbGluayBpcyBub3QgZW5jcnlwdGVkLCAleFxuIiwKPj4g KwkJCSAgSTkxNV9SRUFEKEhEQ1AyX1NUQVRVU19EREkocG9ydCkpKTsKPj4gKwkJcmV0ID0gLUVO WElPOwo+PiArCQloZGNwLT52YWx1ZSA9IERSTV9NT0RFX0NPTlRFTlRfUFJPVEVDVElPTl9ERVNJ UkVEOwo+PiArCQlzY2hlZHVsZV93b3JrKCZoZGNwLT5wcm9wX3dvcmspOwo+PiArCQlnb3RvIG91 dDsKPj4gKwl9Cj4+ICsKPj4gKwlyZXQgPSBoZGNwLT5zaGltLT5jaGVja18yXzJfbGluayhpbnRl bF9kaWdfcG9ydCk7Cj4+ICsJaWYgKHJldCA9PSBEUk1fSERDUF9MSU5LX1BST1RFQ1RFRCkgewo+ PiArCQlpZiAoaGRjcC0+dmFsdWUgIT0KPj4gRFJNX01PREVfQ09OVEVOVF9QUk9URUNUSU9OX1VO REVTSVJFRCkgewo+PiArCQkJaGRjcC0+dmFsdWUgPQo+PiBEUk1fTU9ERV9DT05URU5UX1BST1RF Q1RJT05fRU5BQkxFRDsKPj4gKwkJCXNjaGVkdWxlX3dvcmsoJmhkY3AtPnByb3Bfd29yayk7Cj4+ ICsJCX0KPj4gKwkJZ290byBvdXQ7Cj4+ICsJfQo+PiArCj4+ICsJRFJNX0VSUk9SKCJbJXM6JWRd IEhEQ1AyLjIgbGluayBmYWlsZWQsIHJldHJ5aW5nIGF1dGhcbiIsCj4+ICsJCSAgY29ubmVjdG9y LT5iYXNlLm5hbWUsIGNvbm5lY3Rvci0+YmFzZS5iYXNlLmlkKTsKPj4gKwo+PiArCXJldCA9IF9p bnRlbF9oZGNwMl9kaXNhYmxlKGNvbm5lY3Rvcik7Cj4+ICsJaWYgKHJldCkgewo+PiArCQlEUk1f RVJST1IoIlslczolZF0gRmFpbGVkIHRvIGRpc2FibGUgaGRjcDIuMiAoJWQpXG4iLAo+PiArCQkJ ICBjb25uZWN0b3ItPmJhc2UubmFtZSwgY29ubmVjdG9yLT5iYXNlLmJhc2UuaWQsIHJldCk7Cj4+ ICsKPj4gKwkJaGRjcC0+dmFsdWUgPSBEUk1fTU9ERV9DT05URU5UX1BST1RFQ1RJT05fREVTSVJF RDsKPj4gKwkJc2NoZWR1bGVfd29yaygmaGRjcC0+cHJvcF93b3JrKTsKPj4gKwkJZ290byBvdXQ7 Cj4+ICsJfQo+PiArCj4+ICsJcmV0ID0gX2ludGVsX2hkY3AyX2VuYWJsZShjb25uZWN0b3IpOwo+ PiArCWlmIChyZXQpIHsKPj4gKwkJRFJNX0VSUk9SKCJbJXM6JWRdIEZhaWxlZCB0byBlbmFibGUg aGRjcDIuMiAoJWQpXG4iLAo+PiArCQkJICBjb25uZWN0b3ItPmJhc2UubmFtZSwgY29ubmVjdG9y LT5iYXNlLmJhc2UuaWQsIHJldCk7Cj4+ICsKPj4gKwkJaGRjcC0+dmFsdWUgPSBEUk1fTU9ERV9D T05URU5UX1BST1RFQ1RJT05fREVTSVJFRDsKPj4gKwkJc2NoZWR1bGVfd29yaygmaGRjcC0+cHJv cF93b3JrKTsKPj4gKwkJZ290byBvdXQ7Cj4+ICsJfQo+PiArCj4+ICtvdXQ6Cj4+ICsJbXV0ZXhf dW5sb2NrKCZoZGNwLT5tdXRleCk7Cj4+ICsKPj4gKwlyZXR1cm4gcmV0Owo+PiArfQo+PiArCj4+ ICtzdGF0aWMgdm9pZCBpbnRlbF9oZGNwMl9jaGVja193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAq d29yaykgewo+PiArCXN0cnVjdCBpbnRlbF9oZGNwICpoZGNwID0gY29udGFpbmVyX29mKHRvX2Rl bGF5ZWRfd29yayh3b3JrKSwKPj4gKwkJCQkJCXN0cnVjdCBpbnRlbF9oZGNwLAo+PiArCQkJCQkJ aGRjcDJfY2hlY2tfd29yayk7Cj4+ICsJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9y ID0gaW50ZWxfaGRjcF90b19jb25uZWN0b3IoaGRjcCk7Cj4+ICsKPj4gKwlpZiAoIWludGVsX2hk Y3AyX2NoZWNrX2xpbmsoY29ubmVjdG9yKSkKPj4gKwkJc2NoZWR1bGVfZGVsYXllZF93b3JrKCZo ZGNwLT5oZGNwMl9jaGVja193b3JrLAo+PiArCQkJCSAgICAgIERSTV9IRENQMl9DSEVDS19QRVJJ T0RfTVMpOwo+PiArfQo+PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2hkY3AuaCBiL2lu Y2x1ZGUvZHJtL2RybV9oZGNwLmggaW5kZXgKPj4gYzAxY2RiMWQ4NDhkLi5jNGFmZjE4NTA3NmQg MTAwNjQ0Cj4+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9oZGNwLmgKPj4gKysrIGIvaW5jbHVkZS9k cm0vZHJtX2hkY3AuaAo+PiBAQCAtMTEsNiArMTEsMTQgQEAKPj4KPj4gLyogUGVyaW9kIG9mIGhk Y3AgY2hlY2tzICh0byBlbnN1cmUgd2UncmUgc3RpbGwgYXV0aGVudGljYXRlZCkgKi8KPj4gI2Rl ZmluZSBEUk1fSERDUF9DSEVDS19QRVJJT0RfTVMJCSgxMjggKiAxNikKPj4gKyNkZWZpbmUgRFJN X0hEQ1AyX0NIRUNLX1BFUklPRF9NUwkJNTAwCj4gSSBmZWVsIHdlIGNhbiBvcHRpbWl6ZSB0aGlz IGZyZXF1ZW5jeSBvZiBsaW5rIGludGVncml0eSBjaGVjay4gQXMgcGVyIHNwZWMsIHdlIHNob3Vs ZAo+IGNoZWNrIG9uY2UgZXZlcnkgMSBzZWMsIGJ1dCBvdXIgZnJlcXVlbmN5IGhlcmUgc2VlbXMg dG8gYmUganVzdCBkb3VibGUgb2YgaXQuClVtYSwKClNwZWMgc2F5cyBMaW5rIGludGVncml0eSBj aGVjayBpcyByZXF1aXJlZCBhdCBsZWFzdCBvbmNlIGluIDFTZWMuIFNvIHdlIApkZWNpZGVkCnRv IGltcGxlbWVudCB0d2ljZSBwZXIgc2Vjb25kLiBJZiBuZWVkZWQgd2UgY291bGQgb3B0aW1pemUg aXQgYXMgYW5kIAp3aGVuIGl0IHJlcXVpcmVzLgoKLS1SYW0KPgo+IE90aGVyIHRoYW4gdGhhdCBs b29rcyBvayB0byBtZS4KPiBSZXZpZXdlZC1ieTogVW1hIFNoYW5rYXIgPHVtYS5zaGFua2FyQGlu dGVsLmNvbT4KPgo+PiArCj4+ICtlbnVtIGNoZWNrX2xpbmtfcmVzcG9uc2Ugewo+PiArCURSTV9I RENQX0xJTktfUFJPVEVDVEVECT0gMCwKPj4gKwlEUk1fSERDUF9UT1BPTE9HWV9DSEFOR0UsCj4+ ICsJRFJNX0hEQ1BfTElOS19JTlRFR1JJVFlfRkFJTFVSRSwKPj4gKwlEUk1fSERDUF9SRUFVVEhf UkVRVUVTVAo+PiArfTsKPj4KPj4gLyogU2hhcmVkIGxlbmd0aHMvbWFza3MgYmV0d2VlbiBIRE1J L0RWSS9EaXNwbGF5UG9ydCAqLwo+PiAjZGVmaW5lIERSTV9IRENQX0FOX0xFTgkJCQk4Cj4+IC0t Cj4+IDIuNy40CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK