From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: [PATCH v7 36/49] x86emul: support AVX512PF insns Date: Wed, 19 Dec 2018 07:59:17 -0700 Message-ID: <5C1A5CC50200007800207A36@prv1-mh.provo.novell.com> References: <5B6BF83602000078001DC548@prv1-mh.provo.novell.com> <5C1A52ED0200007800207865@prv1-mh.provo.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1gZdJi-0007R9-82 for xen-devel@lists.xenproject.org; Wed, 19 Dec 2018 14:59:22 +0000 In-Reply-To: <5C1A52ED0200007800207865@prv1-mh.provo.novell.com> Content-Disposition: inline List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel Cc: George Dunlap , Andrew Cooper , Wei Liu , Roger Pau Monne List-Id: xen-devel@lists.xenproject.org U29tZSBhZGp1c3RtZW50cyBhcmUgbmVjZXNzYXJ5IHRvIHRoZSBFVkVYIERpc3A4IHNjYWxpbmcg dGVzdCBjb2RlIHRvCmFjY291bnQgZm9yIHRoZSB6ZXJvIGJ5dGUgcmVhZHMvd3JpdGVzLiBJIGhh dmUgdG8gYWRtaXQgdGhvdWdoIHRoYXQgSSdtCm5vdCBmdWxseSBjb252aW5jZWQgdGhlIFNETSBk ZXNjcmliZXMgdGhlIGZhdWx0aW5nIGJlaGF2aW9yIGNvcnJlY3RseToKT3RoZXIgcHJlZmV0Y2gg aW5zbnMsIGluY2x1ZGluZyB0aGUgWGVvbiBQaGkgQ29wcm9jZXNzb3IgUy9HIG9uZXMsIGRvbid0 CnByb2R1Y2UgI0dQLyNTUy4gVW50aWwgcHJvdmVuIG90aGVyd2lzZSB0aGlzIGdldHMgaW1wbGVt ZW50ZWQgYXMKc3BlY2lmaWVkLCBub3QgdGhlIGxlYXN0IGJlY2F1c2UgdGhlIHJlc3BlY3RpdmUg ZXhjZXB0aW9uIHNwZWNpZmljYXRpb24KdGFibGUsIGJlc2lkZXMgbGlzdGluZyAjR1AgYW5kICNT UywgYWxzbyBleHBsaWNpdGx5IHNheXMgIkVWRVgtZW5jb2RlZApwcmVmZXRjaCBpbnN0cnVjdGlv bnMgdGhhdCBkbyBub3QgY2F1c2UgI1BGIGZvbGxvdyBleGNlcHRpb24gY2xhc3MgLi4uIi4KClNp Z25lZC1vZmYtYnk6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KLS0tCnY3OiBSZS1i YXNlLgp2NjogTmV3LgoKLS0tIGEvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL2V2ZXgtZGlzcDgu YworKysgYi90b29scy90ZXN0cy94ODZfZW11bGF0b3IvZXZleC1kaXNwOC5jCkBAIC01MjAsNiAr NTIwLDE3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdGVzdCBhdng1MTJlcl81MTJbXQogICAgIElO U04ocnNxcnQyOCwgNjYsIDBmMzgsIGNkLCBlbCwgc2QsIGVsKSwKIH07CiAKK3N0YXRpYyBjb25z dCBzdHJ1Y3QgdGVzdCBhdng1MTJwZl81MTJbXSA9IHsKKyAgICBJTlNOWChnYXRoZXJwZjBkLCAg NjYsIDBmMzgsIGM2LCAxLCB2bCwgc2QsIGVsKSwKKyAgICBJTlNOWChnYXRoZXJwZjBxLCAgNjYs IDBmMzgsIGM3LCAxLCB2bCwgc2QsIGVsKSwKKyAgICBJTlNOWChnYXRoZXJwZjFkLCAgNjYsIDBm MzgsIGM2LCAyLCB2bCwgc2QsIGVsKSwKKyAgICBJTlNOWChnYXRoZXJwZjFxLCAgNjYsIDBmMzgs IGM3LCAyLCB2bCwgc2QsIGVsKSwKKyAgICBJTlNOWChzY2F0dGVycGYwZCwgNjYsIDBmMzgsIGM2 LCA1LCB2bCwgc2QsIGVsKSwKKyAgICBJTlNOWChzY2F0dGVycGYwcSwgNjYsIDBmMzgsIGM3LCA1 LCB2bCwgc2QsIGVsKSwKKyAgICBJTlNOWChzY2F0dGVycGYxZCwgNjYsIDBmMzgsIGM2LCA2LCB2 bCwgc2QsIGVsKSwKKyAgICBJTlNOWChzY2F0dGVycGYxcSwgNjYsIDBmMzgsIGM3LCA2LCB2bCwg c2QsIGVsKSwKK307CisKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdGVzdCBhdng1MTJfdmJtaV9hbGxb XSA9IHsKICAgICBJTlNOKHBlcm1iLCAgICAgICAgIDY2LCAwZjM4LCA4ZCwgdmwsIGIsIHZsKSwK ICAgICBJTlNOKHBlcm1pMmIsICAgICAgIDY2LCAwZjM4LCA3NSwgdmwsIGIsIHZsKSwKQEAgLTU4 MCw3ICs1OTEsNyBAQCBzdGF0aWMgYm9vbCByZWNvcmRfYWNjZXNzKGVudW0geDg2X3NlZ21lCiBz dGF0aWMgaW50IHJlYWQoZW51bSB4ODZfc2VnbWVudCBzZWcsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0 LCB2b2lkICpwX2RhdGEsCiAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGJ5dGVzLCBzdHJ1 Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCkKIHsKLSAgICBpZiAoICFyZWNvcmRfYWNjZXNzKHNl Zywgb2Zmc2V0LCBieXRlcykgKQorICAgIGlmICggIXJlY29yZF9hY2Nlc3Moc2VnLCBvZmZzZXQs IGJ5dGVzICsgIWJ5dGVzKSApCiAgICAgICAgIHJldHVybiBYODZFTVVMX1VOSEFORExFQUJMRTsK ICAgICBtZW1zZXQocF9kYXRhLCAwLCBieXRlcyk7CiAgICAgcmV0dXJuIFg4NkVNVUxfT0tBWTsK QEAgLTU4OSw3ICs2MDAsNyBAQCBzdGF0aWMgaW50IHJlYWQoZW51bSB4ODZfc2VnbWVudCBzZWcs IHVuCiBzdGF0aWMgaW50IHdyaXRlKGVudW0geDg2X3NlZ21lbnQgc2VnLCB1bnNpZ25lZCBsb25n IG9mZnNldCwgdm9pZCAqcF9kYXRhLAogICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYnl0 ZXMsIHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0KQogewotICAgIGlmICggIXJlY29yZF9h Y2Nlc3Moc2VnLCBvZmZzZXQsIGJ5dGVzKSApCisgICAgaWYgKCAhcmVjb3JkX2FjY2VzcyhzZWcs IG9mZnNldCwgYnl0ZXMgKyAhYnl0ZXMpICkKICAgICAgICAgcmV0dXJuIFg4NkVNVUxfVU5IQU5E TEVBQkxFOwogICAgIHJldHVybiBYODZFTVVMX09LQVk7CiB9CkBAIC01OTcsNyArNjA4LDcgQEAg c3RhdGljIGludCB3cml0ZShlbnVtIHg4Nl9zZWdtZW50IHNlZywgdQogc3RhdGljIHZvaWQgdGVz dF9vbmUoY29uc3Qgc3RydWN0IHRlc3QgKnRlc3QsIGVudW0gdmwgdmwsCiAgICAgICAgICAgICAg ICAgICAgICB1bnNpZ25lZCBjaGFyICppbnN0ciwgc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQgKmN0 eHQpCiB7Ci0gICAgdW5zaWduZWQgaW50IHZzeiwgZXN6LCBpOworICAgIHVuc2lnbmVkIGludCB2 c3osIGVzeiwgaSwgbjsKICAgICBpbnQgcmM7CiAgICAgYm9vbCBzZyA9IHN0cnN0cih0ZXN0LT5t bmVtb25pYywgImdhdGhlciIpIHx8CiAgICAgICAgICAgICAgIHN0cnN0cih0ZXN0LT5tbmVtb25p YywgInNjYXR0ZXIiKTsKQEAgLTcyNSwxMCArNzM2LDIwIEBAIHN0YXRpYyB2b2lkIHRlc3Rfb25l KGNvbnN0IHN0cnVjdCB0ZXN0ICoKICAgICBmb3IgKCBpID0gMDsgaSA8ICh0ZXN0LT5zY2FsZSA9 PSBTQ192bCA/IHZzeiA6IGVzeik7ICsraSApCiAgICAgICAgICBpZiAoIGFjY2Vzc2VkW2ldICkK ICAgICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgZm9yICggOyBpIDwgKHRlc3QtPnNjYWxlID09 IFNDX3ZsID8gdnN6IDogZXN6KSArIChzZyA/IGVzeiA6IHZzeik7ICsraSApCisKKyAgICBuID0g dGVzdC0+c2NhbGUgPT0gU0NfdmwgPyB2c3ogOiBlc3o7CisgICAgaWYgKCAhc2cgKQorICAgICAg ICBuICs9IHZzejsKKyAgICBlbHNlIGlmICggIXN0cnN0cih0ZXN0LT5tbmVtb25pYywgInBmIikg KQorICAgICAgICBuICs9IGVzejsKKyAgICBlbHNlCisgICAgICAgICsrbjsKKworICAgIGZvciAo IDsgaSA8IG47ICsraSApCiAgICAgICAgICBpZiAoIGFjY2Vzc2VkW2ldICE9IChzZyA/ICh2c3og LyBlc3opID4+ICh0ZXN0LT5vcGMgJiAxICYgIWV2ZXgudykKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDogMSkgKQogICAgICAgICAgICAgIGdvdG8gZmFpbDsKKwogICAgIGZvciAo IDsgaSA8IEFSUkFZX1NJWkUoYWNjZXNzZWQpOyArK2kgKQogICAgICAgICAgaWYgKCBhY2Nlc3Nl ZFtpXSApCiAgICAgICAgICAgICAgZ290byBmYWlsOwpAQCAtODg3LDYgKzkwOCw4IEBAIHZvaWQg ZXZleF9kaXNwOF90ZXN0KHZvaWQgKmluc3RyLCBzdHJ1Y3QKICAgICBSVU4oYXZ4NTEyZHEsIG5v MTI4KTsKICAgICBSVU4oYXZ4NTEyZHEsIDUxMik7CiAgICAgUlVOKGF2eDUxMmVyLCA1MTIpOwor I2RlZmluZSBjcHVfaGFzX2F2eDUxMnBmIGNwdV9oYXNfYXZ4NTEyZgorICAgIFJVTihhdng1MTJw ZiwgNTEyKTsKICAgICBSVU4oYXZ4NTEyX3ZibWksIGFsbCk7CiAgICAgUlVOKGF2eDUxMl92Ym1p MiwgYWxsKTsKIH0KLS0tIGEvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL3g4Ni1lbXVsYXRlLmMK KysrIGIvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL3g4Ni1lbXVsYXRlLmMKQEAgLTEzNSwxMiAr MTM1LDEyIEBAIGludCBlbXVsX3Rlc3RfY3B1aWQoCiAgICAgICAgIHJlcy0+YyB8PSAxVSA8PCAy MjsKIAogICAgIC8qCi0gICAgICogVGhlIGVtdWxhdG9yIGRvZXNuJ3QgaXRzZWxmIHVzZSBBRENY L0FET1gvUkRQSUQsIHNvIHdlIGNhbiBhbHdheXMgcnVuCi0gICAgICogdGhlIHJlc3BlY3RpdmUg dGVzdHMuCisgICAgICogVGhlIGVtdWxhdG9yIGRvZXNuJ3QgaXRzZWxmIHVzZSBBRENYL0FET1gv UkRQSUQgbm9yIHRoZSBTL0cgcHJlZmV0Y2gKKyAgICAgKiBpbnNucywgc28gd2UgY2FuIGFsd2F5 cyBydW4gdGhlIHJlc3BlY3RpdmUgdGVzdHMuCiAgICAgICovCiAgICAgaWYgKCBsZWFmID09IDcg JiYgc3VibGVhZiA9PSAwICkKICAgICB7Ci0gICAgICAgIHJlcy0+YiB8PSAxVSA8PCAxOTsKKyAg ICAgICAgcmVzLT5iIHw9ICgxVSA8PCAxOSkgfCAoMVUgPDwgMjYpOwogICAgICAgICByZXMtPmMg fD0gMVUgPDwgMjI7CiAgICAgfQogCi0tLSBhL3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODZf ZW11bGF0ZS5jCisrKyBiL3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5jCkBA IC01MjUsNiArNTI1LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBleHQwZjM4X3RhYmxlIHsKICAg ICBbMHhiZF0gPSB7IC5zaW1kX3NpemUgPSBzaW1kX3NjYWxhcl92ZXh3LCAuZDhzID0gZDhzX2Rx IH0sCiAgICAgWzB4YmVdID0geyAuc2ltZF9zaXplID0gc2ltZF9wYWNrZWRfZnAsIC5kOHMgPSBk OHNfdmwgfSwKICAgICBbMHhiZl0gPSB7IC5zaW1kX3NpemUgPSBzaW1kX3NjYWxhcl92ZXh3LCAu ZDhzID0gZDhzX2RxIH0sCisgICAgWzB4YzYgLi4uIDB4YzddID0geyAuc2ltZF9zaXplID0gc2lt ZF9vdGhlciwgLnZzaWIgPSAxLCAuZDhzID0gZDhzX2RxIH0sCiAgICAgWzB4YzhdID0geyAuc2lt ZF9zaXplID0gc2ltZF9wYWNrZWRfZnAsIC50d29fb3AgPSAxLCAuZDhzID0gZDhzX3ZsIH0sCiAg ICAgWzB4YzldID0geyAuc2ltZF9zaXplID0gc2ltZF9vdGhlciB9LAogICAgIFsweGNhXSA9IHsg LnNpbWRfc2l6ZSA9IHNpbWRfcGFja2VkX2ZwLCAudHdvX29wID0gMSwgLmQ4cyA9IGQ4c192bCB9 LApAQCAtMTkwMyw2ICsxOTA0LDcgQEAgc3RhdGljIGJvb2wgdmNwdV9oYXMoCiAjZGVmaW5lIHZj cHVfaGFzX3NtYXAoKSAgICAgICAgdmNwdV9oYXMoICAgICAgICAgNywgRUJYLCAyMCwgY3R4dCwg b3BzKQogI2RlZmluZSB2Y3B1X2hhc19jbGZsdXNob3B0KCkgIHZjcHVfaGFzKCAgICAgICAgIDcs IEVCWCwgMjMsIGN0eHQsIG9wcykKICNkZWZpbmUgdmNwdV9oYXNfY2x3YigpICAgICAgICB2Y3B1 X2hhcyggICAgICAgICA3LCBFQlgsIDI0LCBjdHh0LCBvcHMpCisjZGVmaW5lIHZjcHVfaGFzX2F2 eDUxMnBmKCkgICAgdmNwdV9oYXMoICAgICAgICAgNywgRUJYLCAyNiwgY3R4dCwgb3BzKQogI2Rl ZmluZSB2Y3B1X2hhc19hdng1MTJlcigpICAgIHZjcHVfaGFzKCAgICAgICAgIDcsIEVCWCwgMjcs IGN0eHQsIG9wcykKICNkZWZpbmUgdmNwdV9oYXNfc2hhKCkgICAgICAgICB2Y3B1X2hhcyggICAg ICAgICA3LCBFQlgsIDI5LCBjdHh0LCBvcHMpCiAjZGVmaW5lIHZjcHVfaGFzX2F2eDUxMmJ3KCkg ICAgdmNwdV9oYXMoICAgICAgICAgNywgRUJYLCAzMCwgY3R4dCwgb3BzKQpAQCAtOTQxNCw2ICs5 NDE2LDgwIEBAIHg4Nl9lbXVsYXRlKAogCiAgICAgICAgIHN0YXRlLT5zaW1kX3NpemUgPSBzaW1k X25vbmU7CiAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgWDg2RU1VTF9PUENfRVZF WF82NigweDBmMzgsIDB4YzYpOgorICAgIGNhc2UgWDg2RU1VTF9PUENfRVZFWF82NigweDBmMzgs IDB4YzcpOgorICAgIHsKKyAgICAgICAgdHlwZW9mKGV2ZXgpICpwZXZleDsKKyAgICAgICAgdW5p b24geworICAgICAgICAgICAgaW50MzJfdCBkd1sxNl07CisgICAgICAgICAgICBpbnQ2NF90IHF3 WzhdOworICAgICAgICB9IGluZGV4OworCisgICAgICAgIEFTU0VSVChlYS50eXBlID09IE9QX01F TSk7CisgICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlvbl9pZigoIWNwdV9oYXNfYXZ4NTEyZiB8fCAh ZXZleC5vcG1zayB8fCBldmV4LmJycyB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGV2ZXgueiB8fCBldmV4LnJlZyAhPSAweGYgfHwgZXZleC5sciAhPSAyKSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEVYQ19VRCk7CisgICAgICAgIHZjcHVfbXVzdF9oYXZlKGF2eDUx MnBmKTsKKworICAgICAgICBzd2l0Y2ggKCBtb2RybV9yZWcgJiA3ICkKKyAgICAgICAgeworICAg ICAgICBjYXNlIDE6IC8qIHZnYXRoZXJwZjB7ZCxxfXB7cyxkfSBtZW17a30gKi8KKyAgICAgICAg Y2FzZSAyOiAvKiB2Z2F0aGVycGYxe2QscX1we3MsZH0gbWVte2t9ICovCisgICAgICAgICAgICBi cmVhazsKKyAgICAgICAgY2FzZSA1OiAvKiB2c2NhdHRlcnBmMHtkLHF9cHtzLGR9IG1lbXtrfSAq LworICAgICAgICBjYXNlIDY6IC8qIHZzY2F0dGVycGYxe2QscX1we3MsZH0gbWVte2t9ICovCisg ICAgICAgICAgICBmYWlsX2lmKCFvcHMtPndyaXRlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uKEVYQ19VRCk7Cisg ICAgICAgIH0KKworICAgICAgICBnZXRfZnB1KFg4NkVNVUxfRlBVX3ptbSk7CisKKyAgICAgICAg LyogUmVhZCBpbmRleCByZWdpc3Rlci4gKi8KKyAgICAgICAgb3BjID0gaW5pdF9ldmV4KHN0dWIp OworICAgICAgICBwZXZleCA9IGNvcHlfRVZFWChvcGMsIGV2ZXgpOworICAgICAgICBwZXZleC0+ b3BjeCA9IHZleF8wZjsKKyAgICAgICAgLyogdm1vdmRxdXszMiw2NH0gKi8KKyAgICAgICAgb3Bj WzBdID0gMHg3ZjsKKyAgICAgICAgcGV2ZXgtPnBmeCA9IHZleF9mMzsKKyAgICAgICAgcGV2ZXgt PncgPSBiICYgMTsKKyAgICAgICAgLyogVXNlICglcmF4KSBhcyBkZXN0aW5hdGlvbiBhbmQgc2li X2luZGV4IGFzIHNvdXJjZS4gKi8KKyAgICAgICAgcGV2ZXgtPmIgPSAxOworICAgICAgICBvcGNb MV0gPSAoc3RhdGUtPnNpYl9pbmRleCAmIDcpIDw8IDM7CisgICAgICAgIHBldmV4LT5yID0gIW1v ZGVfNjRiaXQoKSB8fCAhKHN0YXRlLT5zaWJfaW5kZXggJiAweDA4KTsKKyAgICAgICAgcGV2ZXgt PlIgPSAhbW9kZV82NGJpdCgpIHx8ICEoc3RhdGUtPnNpYl9pbmRleCAmIDB4MTApOworICAgICAg ICBwZXZleC0+UlggPSAxOworICAgICAgICBvcGNbMl0gPSAweGMzOworCisgICAgICAgIGludm9r ZV9zdHViKCIiLCAiIiwgIj1tIiAoaW5kZXgpIDogImEiICgmaW5kZXgpKTsKKyAgICAgICAgcHV0 X3N0dWIoc3R1Yik7CisKKyAgICAgICAgLyogQ2xlYXIgdW50b3VjaGVkIHBhcnRzIG9mIHRoZSBt YXNrIHZhbHVlLiAqLworICAgICAgICBuID0gMSA8PCAoNCAtICgoYiAmIDEpIHwgZXZleC53KSk7 CisgICAgICAgIG9wX21hc2sgJj0gKDEgPDwgbikgLSAxOworCisgICAgICAgIGZvciAoIGkgPSAw OyByYyA9PSBYODZFTVVMX09LQVkgJiYgb3BfbWFzazsgKytpICkKKyAgICAgICAgeworICAgICAg ICAgICAgc2lnbmVkIGxvbmcgaWR4ID0gYiAmIDEgPyBpbmRleC5xd1tpXSA6IGluZGV4LmR3W2ld OworCisgICAgICAgICAgICBpZiAoICEob3BfbWFzayAmICgxIDw8IGkpKSApCisgICAgICAgICAg ICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIHJjID0gKG1vZHJtX3JlZyAmIDQKKyAgICAg ICAgICAgICAgICAgID8gb3BzLT53cml0ZQorICAgICAgICAgICAgICAgICAgOiBvcHMtPnJlYWQp KGVhLm1lbS5zZWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1bmNhdGVfZWEo ZWEubWVtLm9mZiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGlkeCA8PCBzdGF0ZS0+c2liX3NjYWxlKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTlVMTCwgMCwgY3R4dCk7CisKKyAgICAgICAgICAgIG9wX21hc2sgJj0gfigxIDw8IGkpOwor ICAgICAgICB9CisKKyAgICAgICAgc3RhdGUtPnNpbWRfc2l6ZSA9IHNpbWRfbm9uZTsKKyAgICAg ICAgYnJlYWs7CiAgICAgfQogCiAgICAgY2FzZSBYODZFTVVMX09QQygweDBmMzgsIDB4YzgpOiAg ICAgLyogc2hhMW5leHRlIHhtbS9tMTI4LHhtbSAqLwoKCgoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2 ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWls bWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==