From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH v2] drm/i915/pmu: Measure sampler intervals Date: Wed, 30 May 2018 12:55:39 +0100 Message-ID: <20180530115539.27556-1-chris@chris-wilson.co.uk> References: <20180525171111.6812-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id E5F946E370 for ; Wed, 30 May 2018 11:55:52 +0000 (UTC) In-Reply-To: <20180525171111.6812-1-chris@chris-wilson.co.uk> 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 aHJ0aW1lciBpcyBub3QgcmVsaWFibGUgZW5vdWdoIHRvIGFzc3VtZSBmaXhlZCBpbnRlcnZhbHMs IGFuZCBzbyBldmVuCmNvYXJzZSBhY2N1cmFjeSAoaW4gdGhlIGZhY2Ugb2Yga2FzYW4gYW5kIHNp bWlsYXIgaGVhdnkgZGVidWdnaW5nKSB3ZQpuZWVkIHRvIG1lYXN1cmUgdGhlIGFjdHVhbCBpbnRl cnZhbCBiZXR3ZWVuIHNhbXBsZS4KCldoaWxlIHVzaW5nIGEgc2luZ2xlIHRpbWVzdGFtcCB0byBj b21wdXRlIHRoZSBpbnRlcnZhbCBkb2VzIG5vdCBhbGxvdwp2ZXJ5IGZpbmUgYWNjdXJhY3kgKGNv bnNpZGVyIHRoZSBpbXBhY3Qgb2YgYSBzbG93IGZvcmNld2FrZSBiZXR3ZWVuCmRpZmZlcmVudCBz YW1wbGVzIGFmdGVyIHRoZSB0aW1lc3RhbXAgaXMgcmVhZCkgaXMgbXVjaCBiZXR0ZXIgdGhhbgph c3N1bWluZyB0aGUgaW50ZXJ2YWwuCgp2MjogTWFrZSB1c2Ugb2YgdGhlIHNhbXBsZSBwZXJpb2Qg Zm9yIGVzdGltYXRpbmcgdGhlIEdQVSBjbG9jayBjeWNsZXMsCmxlYXZpbmcgdGhlIGZyZXF1ZW5j eSBjYWxjdWxhdGlvbiAodGhlIGF2ZXJhZ2luZykgdG8gdGhlIGNhbGxlci4KSW50cm9kdWNlIG5l dyBzYW1wbGVycyBmb3IgcmVwb3J0aW5nIGN5Y2xlcyBpbnN0ZWFkIG9mIEh6LgoKVGVzdGNhc2U6 IGlndC9wZXJmX3BtdSAjaXZiClNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hy aXMtd2lsc29uLmNvLnVrPgpDYzogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVs LmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BtdS5jIHwgNDQgKysrKysrKysr KysrKysrKysrKysrKysrKystLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BtdS5o IHwgIDYgKysrKysKIGluY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaCAgICAgfCAgMiArKwogMyBm aWxlcyBjaGFuZ2VkLCA0MyBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcG11LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3BtdS5jCmluZGV4IGRjODc3OTdkYjUwMC4uMTIwMzNlNDdlM2I0IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BtdS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfcG11LmMKQEAgLTg2LDYgKzg2LDggQEAgc3RhdGljIGJvb2wgcG11X25lZWRzX3Rp bWVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCBib29sIGdwdV9hY3RpdmUpCiAJICov CiAJZW5hYmxlICY9IGNvbmZpZ19lbmFibGVkX21hc2soSTkxNV9QTVVfQUNUVUFMX0ZSRVFVRU5D WSkgfAogCQkgIGNvbmZpZ19lbmFibGVkX21hc2soSTkxNV9QTVVfUkVRVUVTVEVEX0ZSRVFVRU5D WSkgfAorCQkgIGNvbmZpZ19lbmFibGVkX21hc2soSTkxNV9QTVVfQUNUVUFMX0NMT0NLKSB8CisJ CSAgY29uZmlnX2VuYWJsZWRfbWFzayhJOTE1X1BNVV9SRVFVRVNURURfQ0xPQ0spIHwKIAkJICBF TkdJTkVfU0FNUExFX01BU0s7CiAKIAkvKgpAQCAtMTI3LDYgKzEyOSw3IEBAIHN0YXRpYyB2b2lk IF9faTkxNV9wbXVfbWF5YmVfc3RhcnRfdGltZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUpCiB7CiAJaWYgKCFpOTE1LT5wbXUudGltZXJfZW5hYmxlZCAmJiBwbXVfbmVlZHNfdGltZXIo aTkxNSwgdHJ1ZSkpIHsKIAkJaTkxNS0+cG11LnRpbWVyX2VuYWJsZWQgPSB0cnVlOworCQlpOTE1 LT5wbXUudGltZXN0YW1wID0ga3RpbWVfZ2V0KCk7CiAJCWhydGltZXJfc3RhcnRfcmFuZ2VfbnMo Jmk5MTUtPnBtdS50aW1lciwKIAkJCQkgICAgICAgbnNfdG9fa3RpbWUoUEVSSU9EKSwgMCwKIAkJ CQkgICAgICAgSFJUSU1FUl9NT0RFX1JFTF9QSU5ORUQpOwpAQCAtMTYwLDcgKzE2Myw3IEBAIHVw ZGF0ZV9zYW1wbGUoc3RydWN0IGk5MTVfcG11X3NhbXBsZSAqc2FtcGxlLCB1MzIgdW5pdCwgdTMy IHZhbCkKIAlzYW1wbGUtPmN1ciArPSBtdWxfdTMyX3UzMih2YWwsIHVuaXQpOwogfQogCi1zdGF0 aWMgdm9pZCBlbmdpbmVzX3NhbXBsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp CitzdGF0aWMgdm9pZCBlbmdpbmVzX3NhbXBsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsIHU2NCBwZXJpb2QpCiB7CiAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwog CWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOwpAQCAtMTgzLDcgKzE4Niw3IEBAIHN0YXRpYyB2b2lk IGVuZ2luZXNfc2FtcGxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJdmFs ID0gIWk5MTVfc2Vxbm9fcGFzc2VkKGN1cnJlbnRfc2Vxbm8sIGxhc3Rfc2Vxbm8pOwogCiAJCXVw ZGF0ZV9zYW1wbGUoJmVuZ2luZS0+cG11LnNhbXBsZVtJOTE1X1NBTVBMRV9CVVNZXSwKLQkJCSAg ICAgIFBFUklPRCwgdmFsKTsKKwkJCSAgICAgIHBlcmlvZCwgdmFsKTsKIAogCQlpZiAodmFsICYm IChlbmdpbmUtPnBtdS5lbmFibGUgJgogCQkgICAgKEJJVChJOTE1X1NBTVBMRV9XQUlUKSB8IEJJ VChJOTE1X1NBTVBMRV9TRU1BKSkpKSB7CkBAIC0xOTUsMTAgKzE5OCwxMCBAQCBzdGF0aWMgdm9p ZCBlbmdpbmVzX3NhbXBsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCX0K IAogCQl1cGRhdGVfc2FtcGxlKCZlbmdpbmUtPnBtdS5zYW1wbGVbSTkxNV9TQU1QTEVfV0FJVF0s Ci0JCQkgICAgICBQRVJJT0QsICEhKHZhbCAmIFJJTkdfV0FJVCkpOworCQkJICAgICAgcGVyaW9k LCAhISh2YWwgJiBSSU5HX1dBSVQpKTsKIAogCQl1cGRhdGVfc2FtcGxlKCZlbmdpbmUtPnBtdS5z YW1wbGVbSTkxNV9TQU1QTEVfU0VNQV0sCi0JCQkgICAgICBQRVJJT0QsICEhKHZhbCAmIFJJTkdf V0FJVF9TRU1BUEhPUkUpKTsKKwkJCSAgICAgIHBlcmlvZCwgISEodmFsICYgUklOR19XQUlUX1NF TUFQSE9SRSkpOwogCX0KIAogCWlmIChmdykKQEAgLTIwNywxMCArMjEwLDExIEBAIHN0YXRpYyB2 b2lkIGVuZ2luZXNfc2FtcGxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlp bnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdik7CiB9CiAKLXN0YXRpYyB2b2lkIGZyZXF1ZW5j eV9zYW1wbGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQorc3RhdGljIHZvaWQg ZnJlcXVlbmN5X3NhbXBsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHU2NCBw ZXJpb2QpCiB7CiAJaWYgKGRldl9wcml2LT5wbXUuZW5hYmxlICYKLQkgICAgY29uZmlnX2VuYWJs ZWRfbWFzayhJOTE1X1BNVV9BQ1RVQUxfRlJFUVVFTkNZKSkgeworCSAgICAoY29uZmlnX2VuYWJs ZWRfbWFzayhJOTE1X1BNVV9BQ1RVQUxfQ0xPQ0spIHwKKwkgICAgIGNvbmZpZ19lbmFibGVkX21h c2soSTkxNV9QTVVfQUNUVUFMX0ZSRVFVRU5DWSkpKSB7CiAJCXUzMiB2YWw7CiAKIAkJdmFsID0g ZGV2X3ByaXYtPmd0X3BtLnJwcy5jdXJfZnJlcTsKQEAgLTIyMywxMyArMjI3LDIwIEBAIHN0YXRp YyB2b2lkIGZyZXF1ZW5jeV9zYW1wbGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQogCiAJCXVwZGF0ZV9zYW1wbGUoJmRldl9wcml2LT5wbXUuc2FtcGxlW19fSTkxNV9TQU1QTEVf RlJFUV9BQ1RdLAogCQkJICAgICAgMSwgaW50ZWxfZ3B1X2ZyZXEoZGV2X3ByaXYsIHZhbCkpOwor CQl1cGRhdGVfc2FtcGxlKCZkZXZfcHJpdi0+cG11LnNhbXBsZVtfX0k5MTVfU0FNUExFX0NMT0NL X0FDVF0sCisJCQkgICAgICBwZXJpb2QsIGludGVsX2dwdV9mcmVxKGRldl9wcml2LCB2YWwpKTsK IAl9CiAKIAlpZiAoZGV2X3ByaXYtPnBtdS5lbmFibGUgJgotCSAgICBjb25maWdfZW5hYmxlZF9t YXNrKEk5MTVfUE1VX1JFUVVFU1RFRF9GUkVRVUVOQ1kpKSB7CisJICAgIChjb25maWdfZW5hYmxl ZF9tYXNrKEk5MTVfUE1VX1JFUVVFU1RFRF9DTE9DSykgfAorCSAgICAgY29uZmlnX2VuYWJsZWRf bWFzayhJOTE1X1BNVV9SRVFVRVNURURfRlJFUVVFTkNZKSkpIHsKIAkJdXBkYXRlX3NhbXBsZSgm ZGV2X3ByaXYtPnBtdS5zYW1wbGVbX19JOTE1X1NBTVBMRV9GUkVRX1JFUV0sIDEsCiAJCQkgICAg ICBpbnRlbF9ncHVfZnJlcShkZXZfcHJpdiwKIAkJCQkJICAgICBkZXZfcHJpdi0+Z3RfcG0ucnBz LmN1cl9mcmVxKSk7CisJCXVwZGF0ZV9zYW1wbGUoJmRldl9wcml2LT5wbXUuc2FtcGxlW19fSTkx NV9TQU1QTEVfQ0xPQ0tfUkVRXSwKKwkJCSAgICAgIHBlcmlvZCwKKwkJCSAgICAgIGludGVsX2dw dV9mcmVxKGRldl9wcml2LAorCQkJCQkgICAgIGRldl9wcml2LT5ndF9wbS5ycHMuY3VyX2ZyZXEp KTsKIAl9CiB9CiAKQEAgLTIzNywxMiArMjQ4LDE3IEBAIHN0YXRpYyBlbnVtIGhydGltZXJfcmVz dGFydCBpOTE1X3NhbXBsZShzdHJ1Y3QgaHJ0aW1lciAqaHJ0aW1lcikKIHsKIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSA9CiAJCWNvbnRhaW5lcl9vZihocnRpbWVyLCBzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSwgcG11LnRpbWVyKTsKKwlrdGltZV90IG5vdywgcGVyaW9kOwogCiAJaWYg KCFSRUFEX09OQ0UoaTkxNS0+cG11LnRpbWVyX2VuYWJsZWQpKQogCQlyZXR1cm4gSFJUSU1FUl9O T1JFU1RBUlQ7CiAKLQllbmdpbmVzX3NhbXBsZShpOTE1KTsKLQlmcmVxdWVuY3lfc2FtcGxlKGk5 MTUpOworCW5vdyA9IGt0aW1lX2dldCgpOworCXBlcmlvZCA9IGt0aW1lX3N1Yihub3csIGk5MTUt PnBtdS50aW1lc3RhbXApOworCWk5MTUtPnBtdS50aW1lc3RhbXAgPSBub3c7CisKKwllbmdpbmVz X3NhbXBsZShpOTE1LCBwZXJpb2QpOworCWZyZXF1ZW5jeV9zYW1wbGUoaTkxNSwgcGVyaW9kKTsK IAogCWhydGltZXJfZm9yd2FyZF9ub3coaHJ0aW1lciwgbnNfdG9fa3RpbWUoUEVSSU9EKSk7CiAJ cmV0dXJuIEhSVElNRVJfUkVTVEFSVDsKQEAgLTMxMywxMSArMzI5LDEzIEBAIGNvbmZpZ19zdGF0 dXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHU2NCBjb25maWcpCiB7CiAJc3dpdGNo IChjb25maWcpIHsKIAljYXNlIEk5MTVfUE1VX0FDVFVBTF9GUkVRVUVOQ1k6CisJY2FzZSBJOTE1 X1BNVV9BQ1RVQUxfQ0xPQ0s6CiAJCWlmIChJU19WQUxMRVlWSUVXKGk5MTUpIHx8IElTX0NIRVJS WVZJRVcoaTkxNSkpCiAJCQkvKiBSZXF1aXJlcyBhIG11dGV4IGZvciBzYW1wbGluZyEgKi8KIAkJ CXJldHVybiAtRU5PREVWOwogCQkvKiBGYWxsLXRocm91Z2guICovCiAJY2FzZSBJOTE1X1BNVV9S RVFVRVNURURfRlJFUVVFTkNZOgorCWNhc2UgSTkxNV9QTVVfUkVRVUVTVEVEX0NMT0NLOgogCQlp ZiAoSU5URUxfR0VOKGk5MTUpIDwgNikKIAkJCXJldHVybiAtRU5PREVWOwogCQlicmVhazsKQEAg LTUyNiw2ICs1NDQsMTIgQEAgc3RhdGljIHU2NCBfX2k5MTVfcG11X2V2ZW50X3JlYWQoc3RydWN0 IHBlcmZfZXZlbnQgKmV2ZW50KQogCQkJICAgZGl2X3U2NChpOTE1LT5wbXUuc2FtcGxlW19fSTkx NV9TQU1QTEVfRlJFUV9SRVFdLmN1ciwKIAkJCQkgICBGUkVRVUVOQ1kpOwogCQkJYnJlYWs7CisJ CWNhc2UgSTkxNV9QTVVfQUNUVUFMX0NMT0NLOgorCQkJdmFsID0gaTkxNS0+cG11LnNhbXBsZVtf X0k5MTVfU0FNUExFX0NMT0NLX0FDVF0uY3VyOworCQkJYnJlYWs7CisJCWNhc2UgSTkxNV9QTVVf UkVRVUVTVEVEX0NMT0NLOgorCQkJdmFsID0gaTkxNS0+cG11LnNhbXBsZVtfX0k5MTVfU0FNUExF X0NMT0NLX1JFUV0uY3VyOworCQkJYnJlYWs7CiAJCWNhc2UgSTkxNV9QTVVfSU5URVJSVVBUUzoK IAkJCXZhbCA9IGNvdW50X2ludGVycnVwdHMoaTkxNSk7CiAJCQlicmVhazsKQEAgLTgwMyw2ICs4 MjcsOCBAQCBjcmVhdGVfZXZlbnRfYXR0cmlidXRlcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSkKIAkJX19ldmVudChJOTE1X1BNVV9SRVFVRVNURURfRlJFUVVFTkNZLCAicmVxdWVzdGVk LWZyZXF1ZW5jeSIsICJNSHoiKSwKIAkJX19ldmVudChJOTE1X1BNVV9JTlRFUlJVUFRTLCAiaW50 ZXJydXB0cyIsIE5VTEwpLAogCQlfX2V2ZW50KEk5MTVfUE1VX1JDNl9SRVNJREVOQ1ksICJyYzYt cmVzaWRlbmN5IiwgIm5zIiksCisJCV9fZXZlbnQoSTkxNV9QTVVfQUNUVUFMX0NMT0NLLCAiYWN0 dWFsLWNsb2NrIiwgIk1jeWNsZXMiKSwKKwkJX19ldmVudChJOTE1X1BNVV9SRVFVRVNURURfQ0xP Q0ssICJyZXF1ZXN0ZWQtY2xvY2siLCAiTWN5Y2xlcyIpLAogCX07CiAJc3RhdGljIGNvbnN0IHN0 cnVjdCB7CiAJCWVudW0gZHJtX2k5MTVfcG11X2VuZ2luZV9zYW1wbGUgc2FtcGxlOwpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wbXUuaCBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfcG11LmgKaW5kZXggMmJhNzM1Mjk5ZjdjLi45YzQyNTJkODViNWUgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcG11LmgKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9wbXUuaApAQCAtMTcsNiArMTcsOCBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZTsKIGVudW0gewogCV9fSTkxNV9TQU1QTEVfRlJFUV9BQ1QgPSAwLAogCV9fSTkxNV9TQU1QTEVf RlJFUV9SRVEsCisJX19JOTE1X1NBTVBMRV9DTE9DS19BQ1QsCisJX19JOTE1X1NBTVBMRV9DTE9D S19SRVEsCiAJX19JOTE1X1NBTVBMRV9SQzYsCiAJX19JOTE1X1NBTVBMRV9SQzZfRVNUSU1BVEVE LAogCV9fSTkxNV9OVU1fUE1VX1NBTVBMRVJTCkBAIC01Miw2ICs1NCwxMCBAQCBzdHJ1Y3QgaTkx NV9wbXUgewogCSAqIEB0aW1lcjogVGltZXIgZm9yIGludGVybmFsIGk5MTUgUE1VIHNhbXBsaW5n LgogCSAqLwogCXN0cnVjdCBocnRpbWVyIHRpbWVyOworCS8qKgorCSAqIEB0aW1lc3RhbXA6IFRp bWVzdGFtcCBvZiBsYXN0IGludGVybmFsIGk5MTUgUE1VIHNhbXBsaW5nLgorCSAqLworCWt0aW1l X3QgdGltZXN0YW1wOwogCS8qKgogCSAqIEBlbmFibGU6IEJpdG1hc2sgb2YgYWxsIGN1cnJlbnRs eSBlbmFibGVkIGV2ZW50cy4KIAkgKgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2RybS9pOTE1 X2RybS5oIGIvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oCmluZGV4IDdmNTYzNGNlOGU4OC4u NjFhYjcxOTg2Mjc0IDEwMDY0NAotLS0gYS9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmgKKysr IGIvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oCkBAIC0xMzksNiArMTM5LDggQEAgZW51bSBk cm1faTkxNV9wbXVfZW5naW5lX3NhbXBsZSB7CiAjZGVmaW5lIEk5MTVfUE1VX1JFUVVFU1RFRF9G UkVRVUVOQ1kJX19JOTE1X1BNVV9PVEhFUigxKQogI2RlZmluZSBJOTE1X1BNVV9JTlRFUlJVUFRT CQlfX0k5MTVfUE1VX09USEVSKDIpCiAjZGVmaW5lIEk5MTVfUE1VX1JDNl9SRVNJREVOQ1kJCV9f STkxNV9QTVVfT1RIRVIoMykKKyNkZWZpbmUgSTkxNV9QTVVfQUNUVUFMX0NMT0NLCQlfX0k5MTVf UE1VX09USEVSKDQpCisjZGVmaW5lIEk5MTVfUE1VX1JFUVVFU1RFRF9DTE9DSwlfX0k5MTVfUE1V X09USEVSKDUpCiAKICNkZWZpbmUgSTkxNV9QTVVfTEFTVCBJOTE1X1BNVV9SQzZfUkVTSURFTkNZ CiAKLS0gCjIuMTcuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwt Z2Z4Cg==