From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5585B892CD for ; Fri, 31 May 2019 11:21:53 +0000 (UTC) From: Simon Ser Date: Fri, 31 May 2019 14:21:56 +0300 Message-Id: <20190531112200.22403-2-simon.ser@intel.com> In-Reply-To: <20190531112200.22403-1-simon.ser@intel.com> References: <20190531112200.22403-1-simon.ser@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t 1/5] lib/igt_eld: introduce an ELD library List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: igt-dev@lists.freedesktop.org Cc: martin.peres@intel.com List-ID: VGhlcmUgYXJlIHR3byByZWFzb25zIHdoeSBJIHdhbnQgdG8gaW50cm9kdWNlIHRoaXMgbGlicmFy eToKCi0gSSB3YW50IHRvIHVzZSBpdCBmcm9tIHRoZSBDaGFtZWxpdW0gdGVzdHMgZm9yIERpc3Bs YXlQb3J0Ci0gSSB3YW50IHRvIGV4cGFuZCBpdCB0byBhbHNvIGNoZWNrIHRoYXQgYXVkaW8gcGFy YW1ldGVycyBwYXJzZWQgYnkgQUxTQSBhcmUKICBjb3JyZWN0IChmb3JtYXRzLCBzYW1wbGluZyBy YXRlcywgc2FtcGxlIHNpemVzIGFuZCBzbyBvbikKClNpZ25lZC1vZmYtYnk6IFNpbW9uIFNlciA8 c2ltb24uc2VyQGludGVsLmNvbT4KLS0tCiBsaWIvaWd0X2VsZC5jICAgICAgICAgICB8IDExMSAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBsaWIvaWd0X2VsZC5oICAg ICAgICAgICB8ICAzNSArKysrKysrKysrKysrCiBsaWIvbWVzb24uYnVpbGQgICAgICAgICB8ICAg MSArCiB0ZXN0cy9rbXNfaGRtaV9pbmplY3QuYyB8ICA4MCArKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQogNCBmaWxlcyBjaGFuZ2VkLCAxNTIgaW5zZXJ0aW9ucygrKSwgNzUgZGVsZXRpb25z KC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2lndF9lbGQuYwogY3JlYXRlIG1vZGUgMTAwNjQ0 IGxpYi9pZ3RfZWxkLmgKCmRpZmYgLS1naXQgYS9saWIvaWd0X2VsZC5jIGIvbGliL2lndF9lbGQu YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjhlMGRjYzMwNmU4NQot LS0gL2Rldi9udWxsCisrKyBiL2xpYi9pZ3RfZWxkLmMKQEAgLTAsMCArMSwxMTEgQEAKKy8qCisg KiBDb3B5cmlnaHQgwqkgMjAxOSBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIFBlcm1pc3Npb24g aXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmlu ZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlv biBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0 aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJp Z2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1 YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8g cGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBk byBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFi b3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGlu ZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVz IG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29mdHdhcmUuCisgKgorICogVEhF IFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJ TkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8g VEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisg KiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJ TSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBP RiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBP UiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVB TElOR1MKKyAqIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKiBBdXRob3JzOiBTaW1vbiBTZXIgPHNp bW9uLnNlckBpbnRlbC5jb20+CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVk ZSA8ZGlyZW50Lmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNp bmNsdWRlIDxzdHJpbmcuaD4KKworI2luY2x1ZGUgImlndF9lbGQuaCIKKworLyoqCisgKiBFRElE LUxpa2UgRGF0YSAoRUxEKSBpcyBtZXRhZGF0YSBwYXJzZWQgYW5kIGV4cG9zZWQgYnkgQUxTQSBm b3IgSERNSSBhbmQKKyAqIERpc3BsYXlQb3J0IGNvbm5lY3RvcnMgc3VwcG9ydGluZyBhdWRpby4g VGhpcyBpbmNsdWRlcyB0aGUgbW9uaXRvciBuYW1lIGFuZAorICogdGhlIHN1cHBvcnRlZCBhdWRp byBwYXJhbWV0ZXJzIChmb3JtYXRzLCBzYW1wbGluZyByYXRlcywgc2FtcGxlIHNpemVzIGFuZCBz bworICogb24pLgorICovCisKKy8qKiBlbGRfZW50cnlfaXNfaWd0OiBjaGVja3Mgd2hldGhlciBh biBFTEQgZW50cnkgaXMgbWFwcGVkIHRvIHRoZSBJR1QgRURJRCAqLworc3RhdGljIGJvb2wgZWxk X2VudHJ5X2lzX2lndChjb25zdCBjaGFyICpwYXRoKQoreworCUZJTEUgKmluOworCWNoYXIgYnVm WzEwMjRdOworCXVpbnQ4X3QgZWxkX3ZhbGlkID0gMDsKKwl1aW50OF90IG1vbl92YWxpZCA9IDA7 CisKKwlpbiA9IGZvcGVuKHBhdGgsICJyIik7CisJaWYgKCFpbikKKwkJcmV0dXJuIGZhbHNlOwor CisJbWVtc2V0KGJ1ZiwgMCwgMTAyNCk7CisKKwl3aGlsZSAoKGZnZXRzKGJ1ZiwgMTAyNCwgaW4p KSAhPSBOVUxMKSB7CisJCWNoYXIgKmxpbmUgPSBidWY7CisKKwkJaWYgKCFzdHJuY2FzZWNtcChs aW5lLCAiZWxkX3ZhbGlkIiwgOSkgJiYKKwkJCQlzdHJzdHIobGluZSwgIjEiKSkgeworCQkJZWxk X3ZhbGlkKys7CisJCX0KKworCQlpZiAoIXN0cm5jYXNlY21wKGxpbmUsICJtb25pdG9yX25hbWUi LCAxMikgJiYKKwkJCQlzdHJzdHIobGluZSwgIklHVCIpKSB7CisJCQltb25fdmFsaWQrKzsKKwkJ fQorCX0KKworCWZjbG9zZShpbik7CisJaWYgKG1vbl92YWxpZCAmJiBlbGRfdmFsaWQpCisJCXJl dHVybiB0cnVlOworCisJcmV0dXJuIGZhbHNlOworfQorCisvKiogZWxkX2hhc19pZ3Q6IGNoZWNr IHdoZXRoZXIgQUxTQSBoYXMgZGV0ZWN0ZWQgdGhlIGF1ZGlvLWNhcGFibGUgSUdUIEVESUQgYnkK KyAqIHBhcnNpbmcgRUxEIGVudHJpZXMgKi8KK2Jvb2wgZWxkX2hhc19pZ3Qodm9pZCkKK3sKKwlE SVIgKmRpcjsKKwlzdHJ1Y3QgZGlyZW50ICpzbmRfaGRhOworCWludCBpOworCisJZm9yIChpID0g MDsgaSA8IDg7IGkrKykgeworCQljaGFyIGNhcmRzWzEyOF07CisKKwkJc25wcmludGYoY2FyZHMs IHNpemVvZihjYXJkcyksICIvcHJvYy9hc291bmQvY2FyZCVkIiwgaSk7CisJCWRpciA9IG9wZW5k aXIoY2FyZHMpOworCQlpZiAoIWRpcikKKwkJCWNvbnRpbnVlOworCisJCXdoaWxlICgoc25kX2hk YSA9IHJlYWRkaXIoZGlyKSkpIHsKKwkJCWNoYXIgZnBhdGhbUEFUSF9NQVhdOworCisJCQlpZiAo KnNuZF9oZGEtPmRfbmFtZSA9PSAnLicgfHwKKwkJCSAgICBzdHJzdHIoc25kX2hkYS0+ZF9uYW1l LCAiZWxkIikgPT0gMCkKKwkJCQljb250aW51ZTsKKworCQkJc25wcmludGYoZnBhdGgsIHNpemVv ZihmcGF0aCksICIlcy8lcyIsIGNhcmRzLAorCQkJCSBzbmRfaGRhLT5kX25hbWUpOworCQkJaWYg KGVsZF9lbnRyeV9pc19pZ3QoZnBhdGgpKSB7CisJCQkJY2xvc2VkaXIoZGlyKTsKKwkJCQlyZXR1 cm4gdHJ1ZTsKKwkJCX0KKwkJfQorCQljbG9zZWRpcihkaXIpOworCX0KKworCXJldHVybiBmYWxz ZTsKK30KZGlmZiAtLWdpdCBhL2xpYi9pZ3RfZWxkLmggYi9saWIvaWd0X2VsZC5oCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMjdmODc2ZDlmNjMxCi0tLSAvZGV2L251 bGwKKysrIGIvbGliL2lndF9lbGQuaApAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0 IMKpIDIwMTkgSW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBn cmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29w eSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRo ZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJp Y3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNl LCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAor ICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJz b25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1Ympl Y3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmln aHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQK KyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFu dGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJ UyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNT IE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5U SUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhP UlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMg T1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1Qs IFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVD VElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCisgKiBJ TiBUSEUgU09GVFdBUkUuCisgKgorICogQXV0aG9yczogU2ltb24gU2VyIDxzaW1vbi5zZXJAaW50 ZWwuY29tPgorICovCisKKyNpZm5kZWYgSUdUX0VMRF9ICisjZGVmaW5lIElHVF9FTERfSAorCisj aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlIDxzdGRib29sLmg+CisKK2Jvb2wgZWxkX2hh c19pZ3Qodm9pZCk7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvbGliL21lc29uLmJ1aWxkIGIvbGli L21lc29uLmJ1aWxkCmluZGV4IGNkYjQ1MGUxZTc2Mi4uODQ0ZTBhYmNkOTE5IDEwMDY0NAotLS0g YS9saWIvbWVzb24uYnVpbGQKKysrIGIvbGliL21lc29uLmJ1aWxkCkBAIC01OSw2ICs1OSw3IEBA IGxpYl9zb3VyY2VzID0gWwogCSdpZ3RfcHNyLmMnLAogCSdpZ3RfYW1kLmMnLAogCSdpZ3RfZWRp ZC5jJywKKwknaWd0X2VsZC5jJywKIF0KIAogbGliX2RlcHMgPSBbCmRpZmYgLS1naXQgYS90ZXN0 cy9rbXNfaGRtaV9pbmplY3QuYyBiL3Rlc3RzL2ttc19oZG1pX2luamVjdC5jCmluZGV4IGEyNDA2 MTA0MmMyMC4uZWJhMjUwNDZjZWFkIDEwMDY0NAotLS0gYS90ZXN0cy9rbXNfaGRtaV9pbmplY3Qu YworKysgYi90ZXN0cy9rbXNfaGRtaV9pbmplY3QuYwpAQCAtMjIsOCArMjIsMTIgQEAKICAqCiAg Ki8KIAorI2luY2x1ZGUgImNvbmZpZy5oIgorCiAjaW5jbHVkZSA8ZGlyZW50Lmg+CisKICNpbmNs dWRlICJpZ3QuaCIKKyNpbmNsdWRlICJpZ3RfZWxkLmgiCiAKICNkZWZpbmUgSERJU1BMQVlfNEsJ Mzg0MAogI2RlZmluZSBWRElTUExBWV80SwkyMTYwCkBAIC0xMzQsODAgKzEzOCw2IEBAIGhkbWlf aW5qZWN0XzRrKGludCBkcm1fZmQsIGRybU1vZGVDb25uZWN0b3IgKmNvbm5lY3RvcikKIAlmcmVl KGVkaWQpOwogfQogCi0vKiogZWxkX2VudHJ5X2lzX2lndDogY2hlY2tzIHdoZXRoZXIgYW4gRUxE IGVudHJ5IGlzIG1hcHBlZCB0byB0aGUgSUdUIEVESUQgKi8KLXN0YXRpYyBib29sCi1lbGRfZW50 cnlfaXNfaWd0KGNvbnN0IGNoYXIqIHBhdGgpCi17Ci0JRklMRSAqaW47Ci0JY2hhciBidWZbMTAy NF07Ci0JdWludDhfdCBlbGRfdmFsaWQgPSAwOwotCXVpbnQ4X3QgbW9uX3ZhbGlkID0gMDsKLQot CWluID0gZm9wZW4ocGF0aCwgInIiKTsKLQlpZiAoIWluKQotCQlyZXR1cm4gZmFsc2U7Ci0KLQlt ZW1zZXQoYnVmLCAwLCAxMDI0KTsKLQotCXdoaWxlICgoZmdldHMoYnVmLCAxMDI0LCBpbikpICE9 IE5VTEwpIHsKLQotCQljaGFyICpsaW5lID0gYnVmOwotCi0JCWlmICghc3RybmNhc2VjbXAobGlu ZSwgImVsZF92YWxpZCIsIDkpICYmCi0JCQkJc3Ryc3RyKGxpbmUsICIxIikpIHsKLQkJCWVsZF92 YWxpZCsrOwotCQl9Ci0KLQkJaWYgKCFzdHJuY2FzZWNtcChsaW5lLCAibW9uaXRvcl9uYW1lIiwg MTIpICYmCi0JCQkJc3Ryc3RyKGxpbmUsICJJR1QiKSkgewotCQkJbW9uX3ZhbGlkKys7Ci0JCX0K LQl9Ci0KLQlmY2xvc2UoaW4pOwotCWlmIChtb25fdmFsaWQgJiYgZWxkX3ZhbGlkKQotCQlyZXR1 cm4gdHJ1ZTsKLQotCXJldHVybiBmYWxzZTsKLX0KLQotLyoqIGVsZF9pc192YWxpZDogY2hlY2sg d2hldGhlciBBTFNBIGhhcyBkZXRlY3RlZCB0aGUgYXVkaW8tY2FwYWJsZSBJR1QgRURJRCBieQot ICogcGFyc2luZyBFTEQgZW50cmllcyAqLwotc3RhdGljIGJvb2wKLWVsZF9pc192YWxpZCh2b2lk KQotewotCURJUiAqZGlyOwotCXN0cnVjdCBkaXJlbnQgKnNuZF9oZGE7Ci0JaW50IGk7Ci0KLQlm b3IgKGkgPSAwOyBpIDwgODsgaSsrKSB7Ci0JCWNoYXIgY2FyZHNbMTI4XTsKLQotCQlzbnByaW50 ZihjYXJkcywgc2l6ZW9mKGNhcmRzKSwgIi9wcm9jL2Fzb3VuZC9jYXJkJWQiLCBpKTsKLQkJZGly ID0gb3BlbmRpcihjYXJkcyk7Ci0JCWlmICghZGlyKQotCQkJY29udGludWU7Ci0KLQkJd2hpbGUg KChzbmRfaGRhID0gcmVhZGRpcihkaXIpKSkgewotCQkJY2hhciBmcGF0aFtQQVRIX01BWF07Ci0K LQkJCWlmICgqc25kX2hkYS0+ZF9uYW1lID09ICcuJyB8fAotCQkJICAgIHN0cnN0cihzbmRfaGRh LT5kX25hbWUsICJlbGQiKSA9PSAwKQotCQkJCWNvbnRpbnVlOwotCi0JCQlzbnByaW50ZihmcGF0 aCwgc2l6ZW9mKGZwYXRoKSwgIiVzLyVzIiwgY2FyZHMsCi0JCQkJIHNuZF9oZGEtPmRfbmFtZSk7 Ci0JCQlpZiAoZWxkX2VudHJ5X2lzX2lndChmcGF0aCkpIHsKLQkJCQljbG9zZWRpcihkaXIpOwot CQkJCXJldHVybiB0cnVlOwotCQkJfQotCQl9Ci0JCWNsb3NlZGlyKGRpcik7Ci0JfQotCi0JcmV0 dXJuIGZhbHNlOwotfQotCiBzdGF0aWMgdm9pZAogaGRtaV9pbmplY3RfYXVkaW8oaW50IGRybV9m ZCwgZHJtTW9kZUNvbm5lY3RvciAqY29ubmVjdG9yKQogewpAQCAtMjUyLDcgKzE4Miw3IEBAIGhk bWlfaW5qZWN0X2F1ZGlvKGludCBkcm1fZmQsIGRybU1vZGVDb25uZWN0b3IgKmNvbm5lY3RvcikK IAkgKiBUZXN0IGlmIHdlIGhhdmUgL3Byb2MvYXNvdW5kL0hETUkvZWxkIzAuMCBhbmQgaXMgaXRz IGNvbnRlbnRzIGFyZQogCSAqIHZhbGlkLgogCSAqLwotCWlndF9hc3NlcnQoZWxkX2lzX3ZhbGlk KCkpOworCWlndF9hc3NlcnQoZWxkX2hhc19pZ3QoKSk7CiAKIAlpZ3RfcmVtb3ZlX2ZiKGRybV9m ZCwgJmZiKTsKIAotLSAKMi4yMS4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ln dC1kZXY=