From: Lyude Paul Subject: [PATCH v8 07/10] drm/i915: Only use one link bw config for MST topologies Date: Wed, 11 Apr 2018 19:42:46 -0400 Message-ID: <20180411234302.2896-8-lyude@redhat.com> References: <20180411234302.2896-1-lyude@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180411234302.2896-1-lyude@redhat.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 Cc: David Airlie , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Rodrigo Vivi List-Id: dri-devel@lists.freedesktop.org V2hlbiBhIERQIE1TVCBsaW5rIG5lZWRzIHJldHJhaW5pbmcsIHNvbWV0aW1lcyB0aGUgaHViIHdp bGwgZGV0ZWN0IHRoYXQKdGhlIGN1cnJlbnQgbGluayBidyBjb25maWcgaXMgaW1wb3NzaWJsZSBh bmQgd2lsbCB1cGRhdGUgaXQncyBSWCBjYXBzIGluCnRoZSBEUENEIHRvIHJlZmxlY3QgdGhlIG5l dyBtYXhpbXVtIGxpbmsgcmF0ZS4gQ3VycmVudGx5LCB3ZSBtYWtlIHRoZQphc3N1bXB0aW9uIHRo YXQgdGhlIFJYIGNhcHMgaW4gdGhlIGRwY2Qgd2lsbCBuZXZlciBjaGFuZ2UgbGlrZSB0aGlzLgpU aGlzIG1lYW5zIGlmIHRoZSBzaW5rIGNoYW5nZXMgaXQncyBSWCBjYXBzIGFmdGVyIHdlJ3ZlIGFs cmVhZHkgc2V0IHVwCmFuIE1TVCBsaW5rIGFuZCB3ZSBhdHRlbXB0IHRvIGFkZCBvciByZW1vdmUg YW5vdGhlciBzaW5rIGZyb20gdGhlCnRvcG9sb2d5LCB3ZSBjb3VsZCBwdXQgb3Vyc2VsdmVzIGlu dG8gYW4gaW52YWxpZCBzdGF0ZSB3aGVyZSB3ZSd2ZSB0cmllZAp0byBjb25maWd1cmUgZGlmZmVy ZW50IHNpbmtzIG9uIHRoZSBzYW1lIE1TVCB0b3BvbG9neSB3aXRoIGRpZmZlcmVudApsaW5rIHJh dGVzLiBXZSBjb3VsZCBhbHNvIHJ1biBpbnRvIHRoaXMgc2l0dWF0aW9uIGlmIGEgc2luayByZXBv cnRzIGEKaGlnaGVyIGxpbmsgcmF0ZSBhZnRlciBzdXNwZW5kLCB1c3VhbGx5IGZyb20gdXMgaGF2 aW5nIHRyYWluZWQgaXQgd2l0aCBhCmZhbGxiYWNrIGJ3IGNvbmZpZ3VyYXRpb24gYmVmb3JlIHN1 c3BlbmRpbmcuCgpTbzoga2VlcCB0aGUgbGluayByYXRlIGNvbnNpc3RlbnQgYnkgc3ViY2xhc3Np bmcKZHJtX2RwX21zdF90b3BvbG9neV9zdGF0ZSwgYW5kIHRyYWNraW5nIGl0IHRoZXJlLiBGb3Ig dGhlIHRpbWUgYmVpbmcsIHdlCm9ubHkgYWxsb3cgdGhlIGxpbmsgcmF0ZSB0byBjaGFuZ2Ugd2hl biB0aGUgZW50aXJlIHRvcG9sb2d5IGhhcyBiZWVuCmRpc2Nvbm5lY3RlZC4KClY0OgogLSBUcmFj ayBsaW5rIHJhdGUvbGFuZSBjb3VudCBpbiB0aGUgYXRvbWljIHRvcG9sb2d5IHN0YXRlIGluc3Rl YWQgb2YgaW4KICAgaW50ZWxfZHAuClY3OgogLSBGaXggQ0hFQ0tQQVRDSCBlcnJvcnMKClNpZ25l ZC1vZmYtYnk6IEx5dWRlIFBhdWwgPGx5dWRlQHJlZGhhdC5jb20+CkNjOiBNYW5hc2kgTmF2YXJl IDxtYW5hc2kuZC5uYXZhcmVAaW50ZWwuY29tPgpDYzogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5z eXJqYWxhQGxpbnV4LmludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cF9tc3QuYyB8IDc5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0KIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgIHwgIDcgKysrKwogMiBmaWxlcyBjaGFuZ2Vk LCA3MCBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9tc3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2RwX21zdC5jCmluZGV4IGNmODQ0Y2ZkMmJiMC4uMTlkZTBiNWE3YTQwIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9tc3QuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcF9tc3QuYwpAQCAtNDEsOCArNDEsMTEgQEAgc3RhdGljIGJvb2wgaW50ZWxf ZHBfbXN0X2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogCXN0 cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciA9CiAJCXRvX2ludGVsX2Nvbm5lY3Rvcihj b25uX3N0YXRlLT5jb25uZWN0b3IpOwogCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSA9 IHBpcGVfY29uZmlnLT5iYXNlLnN0YXRlOworCXN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X3N0 YXRlICptc3Rfc3RhdGUgPQorCQlkcm1fYXRvbWljX2RwX21zdF9nZXRfdG9wb2xvZ3lfc3RhdGUo c3RhdGUsICZpbnRlbF9kcC0+bXN0X21ncik7CisJc3RydWN0IGludGVsX2RwX21zdF90b3BvbG9n eV9zdGF0ZSAqaW50ZWxfbXN0X3N0YXRlOwogCWludCBicHA7Ci0JaW50IGxhbmVfY291bnQsIHNs b3RzOworCWludCBzbG90czsKIAljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0 ZWRfbW9kZSA9ICZwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlOwogCWludCBtc3RfcGJu OwogCWJvb2wgcmVkdWNlX21fbiA9IGRybV9kcF9oYXNfcXVpcmsoJmludGVsX2RwLT5kZXNjLApA QCAtNTUsMTggKzU4LDIyIEBAIHN0YXRpYyBib29sIGludGVsX2RwX21zdF9jb21wdXRlX2NvbmZp ZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAkJRFJNX0RFQlVHX0tNUygiU2V0dGlu ZyBwaXBlIGJwcCB0byAlZFxuIiwKIAkJCSAgICAgIGJwcCk7CiAJfQorCisJaW50ZWxfbXN0X3N0 YXRlID0KKwkJdG9faW50ZWxfZHBfbXN0X3RvcG9sb2d5X3N0YXRlKG1zdF9zdGF0ZSk7CiAJLyoK IAkgKiBmb3IgTVNUIHdlIGFsd2F5cyBjb25maWd1cmUgbWF4IGxpbmsgYncgLSB0aGUgc3BlYyBk b2Vzbid0CiAJICogc2VlbSB0byBzdWdnZXN0IHdlIHNob3VsZCBkbyBvdGhlcndpc2UuCiAJICov Ci0JbGFuZV9jb3VudCA9IGludGVsX2RwX21heF9sYW5lX2NvdW50KGludGVsX2RwKTsKLQotCXBp cGVfY29uZmlnLT5sYW5lX2NvdW50ID0gbGFuZV9jb3VudDsKKwlpZiAoIWludGVsX21zdF9zdGF0 ZS0+bGlua19yYXRlIHx8ICFpbnRlbF9tc3Rfc3RhdGUtPmxhbmVfY291bnQpIHsKKwkJaW50ZWxf bXN0X3N0YXRlLT5saW5rX3JhdGUgPSBpbnRlbF9kcF9tYXhfbGlua19yYXRlKGludGVsX2RwKTsK KwkJaW50ZWxfbXN0X3N0YXRlLT5sYW5lX2NvdW50ID0gaW50ZWxfZHBfbWF4X2xhbmVfY291bnQo aW50ZWxfZHApOworCX0KIAorCXBpcGVfY29uZmlnLT5sYW5lX2NvdW50ID0gaW50ZWxfbXN0X3N0 YXRlLT5sYW5lX2NvdW50OworCXBpcGVfY29uZmlnLT5wb3J0X2Nsb2NrID0gaW50ZWxfbXN0X3N0 YXRlLT5saW5rX3JhdGU7CiAJcGlwZV9jb25maWctPnBpcGVfYnBwID0gYnBwOwogCi0JcGlwZV9j b25maWctPnBvcnRfY2xvY2sgPSBpbnRlbF9kcF9tYXhfbGlua19yYXRlKGludGVsX2RwKTsKLQog CWlmIChkcm1fZHBfbXN0X3BvcnRfaGFzX2F1ZGlvKCZpbnRlbF9kcC0+bXN0X21nciwgY29ubmVj dG9yLT5wb3J0KSkKIAkJcGlwZV9jb25maWctPmhhc19hdWRpbyA9IHRydWU7CiAKQEAgLTgwLDcg Kzg3LDcgQEAgc3RhdGljIGJvb2wgaW50ZWxfZHBfbXN0X2NvbXB1dGVfY29uZmlnKHN0cnVjdCBp bnRlbF9lbmNvZGVyICplbmNvZGVyLAogCQlyZXR1cm4gZmFsc2U7CiAJfQogCi0JaW50ZWxfbGlu a19jb21wdXRlX21fbihicHAsIGxhbmVfY291bnQsCisJaW50ZWxfbGlua19jb21wdXRlX21fbihi cHAsIGludGVsX21zdF9zdGF0ZS0+bGFuZV9jb3VudCwKIAkJCSAgICAgICBhZGp1c3RlZF9tb2Rl LT5jcnRjX2Nsb2NrLAogCQkJICAgICAgIHBpcGVfY29uZmlnLT5wb3J0X2Nsb2NrLAogCQkJICAg ICAgICZwaXBlX2NvbmZpZy0+ZHBfbV9uLApAQCAtNTMwLDExICs1MzcsNTUgQEAgc3RhdGljIHZv aWQgaW50ZWxfZHBfbXN0X2hvdHBsdWcoc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyICpt Z3IpCiAJZHJtX2ttc19oZWxwZXJfaG90cGx1Z19ldmVudChkZXYpOwogfQogCitzdGF0aWMgdm9p ZCBpbnRlbF9tc3RfcmVzZXRfc3RhdGUoc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfc3RhdGUg KnN0YXRlKQoreworCXN0cnVjdCBpbnRlbF9kcF9tc3RfdG9wb2xvZ3lfc3RhdGUgKmludGVsX21z dF9zdGF0ZSA9CisJCXRvX2ludGVsX2RwX21zdF90b3BvbG9neV9zdGF0ZShzdGF0ZSk7CisKKwlp bnRlbF9tc3Rfc3RhdGUtPmxpbmtfcmF0ZSA9IDA7CisJaW50ZWxfbXN0X3N0YXRlLT5sYW5lX2Nv dW50ID0gMDsKK30KKwogc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X2Ni cyBtc3RfY2JzID0gewogCS5hZGRfY29ubmVjdG9yID0gaW50ZWxfZHBfYWRkX21zdF9jb25uZWN0 b3IsCiAJLnJlZ2lzdGVyX2Nvbm5lY3RvciA9IGludGVsX2RwX3JlZ2lzdGVyX21zdF9jb25uZWN0 b3IsCiAJLmRlc3Ryb3lfY29ubmVjdG9yID0gaW50ZWxfZHBfZGVzdHJveV9tc3RfY29ubmVjdG9y LAogCS5ob3RwbHVnID0gaW50ZWxfZHBfbXN0X2hvdHBsdWcsCisJLnJlc2V0X3N0YXRlID0gaW50 ZWxfbXN0X3Jlc2V0X3N0YXRlLAorfTsKKworc3RhdGljIHN0cnVjdCBkcm1fcHJpdmF0ZV9zdGF0 ZSAqCitpbnRlbF9kcF9tc3RfZHVwbGljYXRlX3N0YXRlKHN0cnVjdCBkcm1fcHJpdmF0ZV9vYmog Km9iaikKK3sKKwlzdHJ1Y3QgaW50ZWxfZHBfbXN0X3RvcG9sb2d5X3N0YXRlICpzdGF0ZTsKKwlz dHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9tZ3IgKm1nciA9IHRvX2RwX21zdF90b3BvbG9neV9t Z3Iob2JqKTsKKworCXN0YXRlID0ga21lbWR1cChvYmotPnN0YXRlLCBzaXplb2YoKnN0YXRlKSwg R0ZQX0tFUk5FTCk7CisJaWYgKCFzdGF0ZSkKKwkJcmV0dXJuIE5VTEw7CisKKwlfX2RybV9hdG9t aWNfZHBfbXN0X2R1cGxpY2F0ZV90b3BvbG9neV9zdGF0ZShtZ3IsICZzdGF0ZS0+YmFzZSk7CisK KwlyZXR1cm4gJnN0YXRlLT5iYXNlLmJhc2U7Cit9CisKK3N0YXRpYyB2b2lkCitpbnRlbF9kcF9t c3RfZGVzdHJveV9zdGF0ZShzdHJ1Y3QgZHJtX3ByaXZhdGVfb2JqICpvYmosCisJCQkgICBzdHJ1 Y3QgZHJtX3ByaXZhdGVfc3RhdGUgKnN0YXRlKQoreworCXN0cnVjdCBkcm1fZHBfbXN0X3RvcG9s b2d5X3N0YXRlICptc3Rfc3RhdGUgPQorCQl0b19kcF9tc3RfdG9wb2xvZ3lfc3RhdGUoc3RhdGUp OworCXN0cnVjdCBpbnRlbF9kcF9tc3RfdG9wb2xvZ3lfc3RhdGUgKmludGVsX21zdF9zdGF0ZSA9 CisJCXRvX2ludGVsX2RwX21zdF90b3BvbG9neV9zdGF0ZShtc3Rfc3RhdGUpOworCisJX19kcm1f YXRvbWljX2RwX21zdF9kZXN0cm95X3RvcG9sb2d5X3N0YXRlKG1zdF9zdGF0ZSk7CisKKwlrZnJl ZShpbnRlbF9tc3Rfc3RhdGUpOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9wcml2YXRl X3N0YXRlX2Z1bmNzIG1zdF9zdGF0ZV9mdW5jcyA9IHsKKwkuYXRvbWljX2R1cGxpY2F0ZV9zdGF0 ZSA9IGludGVsX2RwX21zdF9kdXBsaWNhdGVfc3RhdGUsCisJLmF0b21pY19kZXN0cm95X3N0YXRl ID0gaW50ZWxfZHBfbXN0X2Rlc3Ryb3lfc3RhdGUsCiB9OwogCiBzdGF0aWMgc3RydWN0IGludGVs X2RwX21zdF9lbmNvZGVyICoKQEAgLTU4NywyMSArNjM4LDE2IEBAIGludGVsX2RwX2NyZWF0ZV9m YWtlX21zdF9lbmNvZGVycyhzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9y dCkKIAlyZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcHJpdmF0ZV9z dGF0ZV9mdW5jcyBtc3Rfc3RhdGVfZnVuY3MgPSB7Ci0JLmF0b21pY19kZXN0cm95X3N0YXRlID0g ZHJtX2F0b21pY19kcF9tc3RfZGVzdHJveV90b3BvbG9neV9zdGF0ZSwKLQkuYXRvbWljX2R1cGxp Y2F0ZV9zdGF0ZSA9IGRybV9hdG9taWNfZHBfbXN0X2R1cGxpY2F0ZV90b3BvbG9neV9zdGF0ZSwK LX07Ci0KIGludAogaW50ZWxfZHBfbXN0X2VuY29kZXJfaW5pdChzdHJ1Y3QgaW50ZWxfZGlnaXRh bF9wb3J0ICppbnRlbF9kaWdfcG9ydCwgaW50IGNvbm5fYmFzZV9pZCkKIHsKIAlzdHJ1Y3QgaW50 ZWxfZHAgKmludGVsX2RwID0gJmludGVsX2RpZ19wb3J0LT5kcDsKLQlzdHJ1Y3QgZHJtX2RwX21z dF90b3BvbG9neV9zdGF0ZSAqbXN0X3N0YXRlOworCXN0cnVjdCBpbnRlbF9kcF9tc3RfdG9wb2xv Z3lfc3RhdGUgKmludGVsX21zdF9zdGF0ZTsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gaW50 ZWxfZGlnX3BvcnQtPmJhc2UuYmFzZS5kZXY7CiAJaW50IHJldDsKIAotCW1zdF9zdGF0ZSA9IGt6 YWxsb2Moc2l6ZW9mKCptc3Rfc3RhdGUpLCBHRlBfS0VSTkVMKTsKLQlpZiAoIW1zdF9zdGF0ZSkK KwlpbnRlbF9tc3Rfc3RhdGUgPSBremFsbG9jKHNpemVvZigqaW50ZWxfbXN0X3N0YXRlKSwgR0ZQ X0tFUk5FTCk7CisJaWYgKCFpbnRlbF9tc3Rfc3RhdGUpCiAJCXJldHVybiAtRU5PTUVNOwogCiAJ aW50ZWxfZHAtPmNhbl9tc3QgPSB0cnVlOwpAQCAtNjEwLDcgKzY1Niw4IEBAIGludGVsX2RwX21z dF9lbmNvZGVyX2luaXQoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQs IGludCBjb25uX2JhCiAKIAkvKiBjcmVhdGUgZW5jb2RlcnMgKi8KIAlpbnRlbF9kcF9jcmVhdGVf ZmFrZV9tc3RfZW5jb2RlcnMoaW50ZWxfZGlnX3BvcnQpOwotCXJldCA9IGRybV9kcF9tc3RfdG9w b2xvZ3lfbWdyX2luaXQoJmludGVsX2RwLT5tc3RfbWdyLCBtc3Rfc3RhdGUsIGRldiwKKwlyZXQg PSBkcm1fZHBfbXN0X3RvcG9sb2d5X21ncl9pbml0KCZpbnRlbF9kcC0+bXN0X21nciwKKwkJCQkJ ICAgJmludGVsX21zdF9zdGF0ZS0+YmFzZSwgZGV2LAogCQkJCQkgICAmaW50ZWxfZHAtPmF1eCwg MTYsIDMsIGNvbm5fYmFzZV9pZCk7CiAJaWYgKHJldCkgewogCQlpbnRlbF9kcC0+Y2FuX21zdCA9 IGZhbHNlOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAppbmRleCA3NDJkNTM0OTU5NzQuLmVjY2I0 YmQwNDJjMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKQEAgLTk4NSw2ICs5ODUsMTIgQEAg c3RydWN0IGN4c3JfbGF0ZW5jeSB7CiAJdTE2IGN1cnNvcl9ocGxsX2Rpc2FibGU7CiB9OwogCitz dHJ1Y3QgaW50ZWxfZHBfbXN0X3RvcG9sb2d5X3N0YXRlIHsKKwlzdHJ1Y3QgZHJtX2RwX21zdF90 b3BvbG9neV9zdGF0ZSBiYXNlOworCWludCBsaW5rX3JhdGU7CisJaW50IGxhbmVfY291bnQ7Cit9 OworCiAjZGVmaW5lIHRvX2ludGVsX2F0b21pY19zdGF0ZSh4KSBjb250YWluZXJfb2YoeCwgc3Ry dWN0IGludGVsX2F0b21pY19zdGF0ZSwgYmFzZSkKICNkZWZpbmUgdG9faW50ZWxfY3J0Yyh4KSBj b250YWluZXJfb2YoeCwgc3RydWN0IGludGVsX2NydGMsIGJhc2UpCiAjZGVmaW5lIHRvX2ludGVs X2NydGNfc3RhdGUoeCkgY29udGFpbmVyX29mKHgsIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlLCBi YXNlKQpAQCAtOTkzLDYgKzk5OSw3IEBAIHN0cnVjdCBjeHNyX2xhdGVuY3kgewogI2RlZmluZSB0 b19pbnRlbF9mcmFtZWJ1ZmZlcih4KSBjb250YWluZXJfb2YoeCwgc3RydWN0IGludGVsX2ZyYW1l YnVmZmVyLCBiYXNlKQogI2RlZmluZSB0b19pbnRlbF9wbGFuZSh4KSBjb250YWluZXJfb2YoeCwg c3RydWN0IGludGVsX3BsYW5lLCBiYXNlKQogI2RlZmluZSB0b19pbnRlbF9wbGFuZV9zdGF0ZSh4 KSBjb250YWluZXJfb2YoeCwgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlLCBiYXNlKQorI2RlZmlu ZSB0b19pbnRlbF9kcF9tc3RfdG9wb2xvZ3lfc3RhdGUoeCkgY29udGFpbmVyX29mKHgsIHN0cnVj dCBpbnRlbF9kcF9tc3RfdG9wb2xvZ3lfc3RhdGUsIGJhc2UpCiAjZGVmaW5lIGludGVsX2ZiX29i aih4KSAoeCA/IHRvX2ludGVsX2ZyYW1lYnVmZmVyKHgpLT5vYmogOiBOVUxMKQogCiBzdHJ1Y3Qg aW50ZWxfaGRtaSB7Ci0tIAoyLjE0LjMKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2ludGVsLWdmeAo=