From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: [PATCH v7 15/24] xsplice: Add support for exception tables. Date: Sun, 10 Apr 2016 17:14:47 -0400 Message-ID: <1460322896-1115-16-git-send-email-konrad.wilk@oracle.com> References: <1460322896-1115-1-git-send-email-konrad.wilk@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([85.158.143.247]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1apMhR-00084d-O9 for xen-devel@lists.xenproject.org; Sun, 10 Apr 2016 21:15:17 +0000 In-Reply-To: <1460322896-1115-1-git-send-email-konrad.wilk@oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org, konrad@kernel.org, sasha.levin@oracle.com, andrew.cooper3@citrix.com, ross.lagerwall@citrix.com, mpohlack@amazon.de Cc: Keir Fraser , Jan Beulich , Konrad Rzeszutek Wilk List-Id: xen-devel@lists.xenproject.org RnJvbTogUm9zcyBMYWdlcndhbGwgPHJvc3MubGFnZXJ3YWxsQGNpdHJpeC5jb20+CgpBZGQgc3Vw cG9ydCBmb3IgZXhjZXB0aW9uIHRhYmxlcyBjb250YWluZWQgd2l0aGluIHhTcGxpY2UgcGF5bG9h ZHMuIElmIGFuCmV4Y2VwdGlvbiBvY2N1cnMgc2VhcmNoIGVpdGhlciB0aGUgbWFpbiBleGNlcHRp b24gdGFibGUgb3IgYSBwYXJ0aWN1bGFyCmFjdGl2ZSBwYXlsb2FkJ3MgZXhjZXB0aW9uIHRhYmxl IGRlcGVuZGluZyBvbiB0aGUgaW5zdHJ1Y3Rpb24gcG9pbnRlci4KCkFsc28gd2UgYWRkIGFuIHRl c3QtY2FzZSB0byBtYWtlIHN1cmUgd2UgaGF2ZSBhbiBleGNlcHRpb24gdGhhdAppcyBoYW5kbGVk LgoKVG8gbm90IGdyb3cgdGhlIGNvZGUtYmFzZSBpZiB4U3BsaWNlIGlzIG5vdCBjb21waWxlZCBp biB3ZSBhZGQKY2VydGFpbiAjZGVmaW5lIHRvIGhlbHAgaW4gZGV0ZXJtaW5pbmcgaWYgY29kZSBu ZWVkcyB0byBiZSBfX2luaXQKb3Igbm90LgoKU2lnbmVkLW9mZi1ieTogUm9zcyBMYWdlcndhbGwg PHJvc3MubGFnZXJ3YWxsQGNpdHJpeC5jb20+ClNpZ25lZC1vZmYtYnk6IEtvbnJhZCBSemVzenV0 ZWsgV2lsayA8a29ucmFkLndpbGtAb3JhY2xlLmNvbT4KUmV2aWV3ZWQtYnk6IEFuZHJldyBDb29w ZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+Ci0tLQpDYzogS2VpciBGcmFzZXIgPGtlaXJA eGVuLm9yZz4KQ2M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KQ2M6IEFuZHJldyBD b29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+Cgp2MzoKIC0gcy9tb2R1bGUvcGF5bG9h ZC8KIC0gc2FuaXR5IGNoZWNrcy4KIC0gTW92ZSBjb2RlIGFyb3VuZC4KIC0gcy9tb2R1bGUvcGF5 bG9hZC8KdjQ6IFVzZSAnc3RydWN0IHZpcnR1YWxfcmVnaW9uJwp2NToKICAtIEV4cGFuZCB0ZXN0 LWNhc2UuCiAgLSBEZWFsIHdpdGggc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSBiZWluZyBj b25zdC4KdjY6CiAtIE1ha2UgdGhlIGNvZGUgaGF2ZSBfX2luaXQgaWYgbm90IGNvbXBpbGVkIHdp dGggeFNwbGljZQogLSBSZW1vdmUgbm90IG5lZWRlZCBkZWNsYXJhdGlvbnMuCnY3OgogLSBNYWtl IHRoZSBub25fY2Fub25pY2FsX2FkZHIgYmUgMHhkZWFkMDAwMDAwMDAwMDAwVUxMCiAtIFJlbW92 ZSBjYXN0cwogLSBBZGQgUmV2aWV3ZWQtYnkgZnJvbSBBbmRyZXcKIC0gQ2hhbmdlIGlmZGVmIHRv IGJlICFBUk0KLS0tCi0tLQogeGVuL2FyY2gveDg2L2V4dGFibGUuYyAgICAgICAgICAgICAgICAg ICB8IDMxICsrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KIHhlbi9hcmNoL3g4Ni90ZXN0 L3hlbl9oZWxsb193b3JsZF9mdW5jLmMgfCAxMSArKysrKysrKysrKwogeGVuL2NvbW1vbi94c3Bs aWNlLmMgICAgICAgICAgICAgICAgICAgICB8IDI1ICsrKysrKysrKysrKysrKysrKysrKysrKysK IHhlbi9pbmNsdWRlL2FzbS14ODYvdWFjY2Vzcy5oICAgICAgICAgICAgfCAgMiArKwogeGVuL2lu Y2x1ZGUveGVuL3hzcGxpY2UuaCAgICAgICAgICAgICAgICB8IDE3ICsrKysrKysrKysrKysrKysr CiA1IGZpbGVzIGNoYW5nZWQsIDczIGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9leHRhYmxlLmMgYi94ZW4vYXJjaC94ODYvZXh0YWJsZS5j CmluZGV4IDJhMDZjY2EuLmUwYmEzNWYgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9leHRhYmxl LmMKKysrIGIveGVuL2FyY2gveDg2L2V4dGFibGUuYwpAQCAtNyw2ICs3LDcgQEAKICNpbmNsdWRl IDx4ZW4vc3BpbmxvY2suaD4KICNpbmNsdWRlIDxhc20vdWFjY2Vzcy5oPgogI2luY2x1ZGUgPHhl bi92aXJ0dWFsX3JlZ2lvbi5oPgorI2luY2x1ZGUgPHhlbi94c3BsaWNlLmg+CiAKICNkZWZpbmUg RVhfRklFTEQocHRyLCBmaWVsZCkgKCh1bnNpZ25lZCBsb25nKSYocHRyKS0+ZmllbGQgKyAocHRy KS0+ZmllbGQpCiAKQEAgLTIwLDcgKzIxLDcgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25n IGV4X2NvbnQoY29uc3Qgc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqeCkKIAlyZXR1cm4g RVhfRklFTEQoeCwgY29udCk7CiB9CiAKLXN0YXRpYyBpbnQgX19pbml0IGNtcF9leChjb25zdCB2 b2lkICphLCBjb25zdCB2b2lkICpiKQorc3RhdGljIGludCBfX0lOSVQgY21wX2V4KGNvbnN0IHZv aWQgKmEsIGNvbnN0IHZvaWQgKmIpCiB7CiAJY29uc3Qgc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9l bnRyeSAqbCA9IGEsICpyID0gYjsKIAl1bnNpZ25lZCBsb25nIGxpcCA9IGV4X2FkZHIobCk7CkBA IC0zNSw3ICszNiw3IEBAIHN0YXRpYyBpbnQgX19pbml0IGNtcF9leChjb25zdCB2b2lkICphLCBj b25zdCB2b2lkICpiKQogfQogCiAjaWZuZGVmIHN3YXBfZXgKLXN0YXRpYyB2b2lkIF9faW5pdCBz d2FwX2V4KHZvaWQgKmEsIHZvaWQgKmIsIGludCBzaXplKQorc3RhdGljIHZvaWQgX19JTklUIHN3 YXBfZXgodm9pZCAqYSwgdm9pZCAqYiwgaW50IHNpemUpCiB7CiAJc3RydWN0IGV4Y2VwdGlvbl90 YWJsZV9lbnRyeSAqbCA9IGEsICpyID0gYiwgdG1wOwogCWxvbmcgZGVsdGEgPSBiIC0gYTsKQEAg LTQ4LDE5ICs0OSwyMyBAQCBzdGF0aWMgdm9pZCBfX2luaXQgc3dhcF9leCh2b2lkICphLCB2b2lk ICpiLCBpbnQgc2l6ZSkKIH0KICNlbmRpZgogCi12b2lkIF9faW5pdCBzb3J0X2V4Y2VwdGlvbl90 YWJsZXModm9pZCkKK3ZvaWQgX19JTklUIHNvcnRfZXhjZXB0aW9uX3RhYmxlKHN0cnVjdCBleGNl cHRpb25fdGFibGVfZW50cnkgKnN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpzdG9wKQogewotICAgIHNvcnQoX19zdGFydF9fX2V4 X3RhYmxlLCBfX3N0b3BfX19leF90YWJsZSAtIF9fc3RhcnRfX19leF90YWJsZSwKLSAgICAgICAg IHNpemVvZihzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5KSwgY21wX2V4LCBzd2FwX2V4KTsK LSAgICBzb3J0KF9fc3RhcnRfX19wcmVfZXhfdGFibGUsCi0gICAgICAgICBfX3N0b3BfX19wcmVf ZXhfdGFibGUgLSBfX3N0YXJ0X19fcHJlX2V4X3RhYmxlLAorICAgIHNvcnQoc3RhcnQsIHN0b3Ag LSBzdGFydCwKICAgICAgICAgIHNpemVvZihzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5KSwg Y21wX2V4LCBzd2FwX2V4KTsKIH0KIAotc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nCi1zZWFy Y2hfb25lX3RhYmxlKGNvbnN0IHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkgKmZpcnN0LAot ICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpsYXN0 LAotICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHZhbHVlKQordm9pZCBfX2luaXQgc29y dF9leGNlcHRpb25fdGFibGVzKHZvaWQpCit7CisgICAgc29ydF9leGNlcHRpb25fdGFibGUoX19z dGFydF9fX2V4X3RhYmxlLCBfX3N0b3BfX19leF90YWJsZSk7CisgICAgc29ydF9leGNlcHRpb25f dGFibGUoX19zdGFydF9fX3ByZV9leF90YWJsZSwgX19zdG9wX19fcHJlX2V4X3RhYmxlKTsKK30K KwordW5zaWduZWQgbG9uZworc2VhcmNoX29uZV9leHRhYmxlKGNvbnN0IHN0cnVjdCBleGNlcHRp b25fdGFibGVfZW50cnkgKmZpcnN0LAorICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBl eGNlcHRpb25fdGFibGVfZW50cnkgKmxhc3QsCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg bG9uZyB2YWx1ZSkKIHsKICAgICBjb25zdCBzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpt aWQ7CiAgICAgbG9uZyBkaWZmOwpAQCAtODUsNyArOTAsNyBAQCBzZWFyY2hfZXhjZXB0aW9uX3Rh YmxlKHVuc2lnbmVkIGxvbmcgYWRkcikKICAgICBjb25zdCBzdHJ1Y3QgdmlydHVhbF9yZWdpb24g KnJlZ2lvbiA9IGZpbmRfdGV4dF9yZWdpb24oYWRkcik7CiAKICAgICBpZiAoIHJlZ2lvbiAmJiBy ZWdpb24tPmV4ICkKLSAgICAgICAgcmV0dXJuIHNlYXJjaF9vbmVfdGFibGUocmVnaW9uLT5leCwg cmVnaW9uLT5leF9lbmQgLSAxLCBhZGRyKTsKKyAgICAgICAgcmV0dXJuIHNlYXJjaF9vbmVfZXh0 YWJsZShyZWdpb24tPmV4LCByZWdpb24tPmV4X2VuZCAtIDEsIGFkZHIpOwogCiAgICAgcmV0dXJu IDA7CiB9CkBAIC05NCw3ICs5OSw3IEBAIHVuc2lnbmVkIGxvbmcKIHNlYXJjaF9wcmVfZXhjZXB0 aW9uX3RhYmxlKHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQogewogICAgIHVuc2lnbmVkIGxv bmcgYWRkciA9ICh1bnNpZ25lZCBsb25nKXJlZ3MtPmVpcDsKLSAgICB1bnNpZ25lZCBsb25nIGZp eHVwID0gc2VhcmNoX29uZV90YWJsZSgKKyAgICB1bnNpZ25lZCBsb25nIGZpeHVwID0gc2VhcmNo X29uZV9leHRhYmxlKAogICAgICAgICBfX3N0YXJ0X19fcHJlX2V4X3RhYmxlLCBfX3N0b3BfX19w cmVfZXhfdGFibGUtMSwgYWRkcik7CiAgICAgaWYgKCBmaXh1cCApCiAgICAgewpkaWZmIC0tZ2l0 IGEveGVuL2FyY2gveDg2L3Rlc3QveGVuX2hlbGxvX3dvcmxkX2Z1bmMuYyBiL3hlbi9hcmNoL3g4 Ni90ZXN0L3hlbl9oZWxsb193b3JsZF9mdW5jLmMKaW5kZXggMWFkMDAyYS4uNDMyOTU0ZiAxMDA2 NDQKLS0tIGEveGVuL2FyY2gveDg2L3Rlc3QveGVuX2hlbGxvX3dvcmxkX2Z1bmMuYworKysgYi94 ZW4vYXJjaC94ODYvdGVzdC94ZW5faGVsbG9fd29ybGRfZnVuYy5jCkBAIC01LDkgKzUsMjAgQEAK IAogI2luY2x1ZGUgPHhlbi90eXBlcy5oPgogCitzdGF0aWMgdW5zaWduZWQgbG9uZyAqbm9uX2Nh bm9uaWNhbF9hZGRyID0gKHVuc2lnbmVkIGxvbmcgKikoMHhkZWFkMDAwMDAwMDAwMDAwVUxMKTsK KwogLyogT3VyIHJlcGxhY2VtZW50IGZ1bmN0aW9uIGZvciB4ZW5fZXh0cmFfdmVyc2lvbi4gKi8K IGNvbnN0IGNoYXIgKnhlbl9oZWxsb193b3JsZCh2b2lkKQogeworICAgIHVuc2lnbmVkIGxvbmcg dG1wOworICAgIGludCByYzsKKyAgICAvKgorICAgICAqIEFueSBCVUcsIG9yIFdBUk5fT04gd2ls bCBjb250YWluIHN5bWJvbCBhbmQgcGF5bG9hZCBuYW1lLiBGdXJ0aGVybW9yZQorICAgICAqIGV4 Y2VwdGlvbnMgd2lsbCBiZSBjYXVnaHQgYW5kIHByb2Nlc3NlZCBwcm9wZXJseS4KKyAgICAgKi8K KyAgICByYyA9IF9fZ2V0X3VzZXIodG1wLCBub25fY2Fub25pY2FsX2FkZHIpOworICAgIEJVR19P TihyYyAhPSAtRUZBVUxUKTsKKwogICAgIHJldHVybiAiSGVsbG8gV29ybGQiOwogfQogCmRpZmYg LS1naXQgYS94ZW4vY29tbW9uL3hzcGxpY2UuYyBiL3hlbi9jb21tb24veHNwbGljZS5jCmluZGV4 IDg0MjRjMGYuLmM3ZjcwYzMgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24veHNwbGljZS5jCisrKyBi L3hlbi9jb21tb24veHNwbGljZS5jCkBAIC01MjksNiArNTI5LDMxIEBAIHN0YXRpYyBpbnQgcHJl cGFyZV9wYXlsb2FkKHN0cnVjdCBwYXlsb2FkICpwYXlsb2FkLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzaXplb2YoKnJlZ2lvbi0+ZnJhbWVbaV0uYnVncyk7CiAgICAg fQogCisjaWZuZGVmIENPTkZJR19BUk0KKyAgICBzZWMgPSB4c3BsaWNlX2VsZl9zZWNfYnlfbmFt ZShlbGYsICIuZXhfdGFibGUiKTsKKyAgICBpZiAoIHNlYyApCisgICAgeworICAgICAgICBzdHJ1 Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpzLCAqZTsKKworICAgICAgICBpZiAoICFzZWMtPnNl Yy0+c2hfc2l6ZSB8fAorICAgICAgICAgICAgIChzZWMtPnNlYy0+c2hfc2l6ZSAlIHNpemVvZigq cmVnaW9uLT5leCkpICkKKyAgICAgICAgeworICAgICAgICAgICAgZHByaW50ayhYRU5MT0dfREVC VUcsIFhTUExJQ0UgIiVzOiBXcm9uZyBzaXplIG9mIC5leF90YWJsZSAoZXhwOiVsdSB2cyAlbHUp IVxuIiwKKyAgICAgICAgICAgICAgICAgICAgZWxmLT5uYW1lLCBzaXplb2YoKnJlZ2lvbi0+ZXgp LAorICAgICAgICAgICAgICAgICAgICBzZWMtPnNlYy0+c2hfc2l6ZSk7CisgICAgICAgICAgICBy ZXR1cm4gLUVJTlZBTDsKKyAgICAgICAgfQorCisgICAgICAgIHMgPSBzZWMtPmxvYWRfYWRkcjsK KyAgICAgICAgZSA9IHNlYy0+bG9hZF9hZGRyICsgc2VjLT5zZWMtPnNoX3NpemU7CisKKyAgICAg ICAgc29ydF9leGNlcHRpb25fdGFibGUocyAsZSk7CisKKyAgICAgICAgcmVnaW9uLT5leCA9IHM7 CisgICAgICAgIHJlZ2lvbi0+ZXhfZW5kID0gZTsKKyAgICB9CisjZW5kaWYKKwogICAgIHJldHVy biAwOwogfQogCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L3VhY2Nlc3MuaCBiL3hl bi9pbmNsdWRlL2FzbS14ODYvdWFjY2Vzcy5oCmluZGV4IDk0NzQ3MGQuLjJjODM5YTkgMTAwNjQ0 Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvdWFjY2Vzcy5oCisrKyBiL3hlbi9pbmNsdWRlL2Fz bS14ODYvdWFjY2Vzcy5oCkBAIC0yNzcsNSArMjc3LDcgQEAgZXh0ZXJuIHN0cnVjdCBleGNlcHRp b25fdGFibGVfZW50cnkgX19zdG9wX19fcHJlX2V4X3RhYmxlW107CiAKIGV4dGVybiB1bnNpZ25l ZCBsb25nIHNlYXJjaF9leGNlcHRpb25fdGFibGUodW5zaWduZWQgbG9uZyk7CiBleHRlcm4gdm9p ZCBzb3J0X2V4Y2VwdGlvbl90YWJsZXModm9pZCk7CitleHRlcm4gdm9pZCBzb3J0X2V4Y2VwdGlv bl90YWJsZShzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpzdGFydCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkgKnN0b3Ap OwogCiAjZW5kaWYgLyogX19YODZfVUFDQ0VTU19IX18gKi8KZGlmZiAtLWdpdCBhL3hlbi9pbmNs dWRlL3hlbi94c3BsaWNlLmggYi94ZW4vaW5jbHVkZS94ZW4veHNwbGljZS5oCmluZGV4IDNhYjM5 MTEuLjkzYjMzNzQgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3hlbi94c3BsaWNlLmgKKysrIGIv eGVuL2luY2x1ZGUveGVuL3hzcGxpY2UuaApAQCAtNTQsNiArNTQsMTUgQEAgc3RydWN0IHhzcGxp Y2VfcGF0Y2hfZnVuY19pbnRlcm5hbCB7CiB9OwogI2VuZGlmCiAKKy8qCisgKiBXZSB1c2UgYWx0 ZXJuYXRpdmUgYW5kIGV4Y2VwdGlvbiB0YWJsZSBjb2RlIC0gd2hpY2ggYnkgZGVmYXVsdCBhcmUg X19pbml0CisgKiBvbmx5LCBob3dldmVyIHdlIG5lZWQgdGhlbSBkdXJpbmcgcnVudGltZS4gVGhl c2UgbWFjcm9zIGFsbG93cyB1cyB0byBidWlsZAorICogdGhlIGltYWdlIHdpdGggdGhlc2UgZnVu Y3Rpb25zIGJ1aWx0LWluLiAoU2VlIHRoZSAjZWxzZSBiZWxvdykuCisgKi8KKyNkZWZpbmUgX19J TklUQ09OU1QKKyNkZWZpbmUgX19JTklUREFUQQorI2RlZmluZSBfX0lOSVQKKwogLyogQ29udmVu aWVuY2UgZGVmaW5lIGZvciBwcmludGsuICovCiAjZGVmaW5lIFhTUExJQ0UgInhzcGxpY2U6ICIK IApAQCAtMTEyLDYgKzEyMSwxNCBAQCB2b2lkIGFyY2hfeHNwbGljZV9tYXNrKHZvaWQpOwogdm9p ZCBhcmNoX3hzcGxpY2VfdW5tYXNrKHZvaWQpOwogI2Vsc2UKIAorLyoKKyAqIElmIG5vdCBjb21w aWxpbmcgd2l0aCB4U3BsaWNlIGNlcnRhaW4gZnVuY3Rpb25hbGl0eSBzaG91bGQgc3RheSBhcwor ICogX19pbml0LgorICovCisjZGVmaW5lIF9fSU5JVENPTlNUICAgIF9faW5pdGNvbnN0CisjZGVm aW5lIF9fSU5JVERBVEEgICAgIF9faW5pdGRhdGEKKyNkZWZpbmUgX19JTklUICAgICAgICAgX19p bml0CisKICNpbmNsdWRlIDx4ZW4vZXJybm8uaD4gLyogRm9yIC1FTk9TWVMgKi8KIHN0YXRpYyBp bmxpbmUgaW50IHhzcGxpY2Vfb3Aoc3RydWN0IHhlbl9zeXNjdGxfeHNwbGljZV9vcCAqb3ApCiB7 Ci0tIAoyLjUuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cDov L2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==