From mboxrd@z Thu Jan 1 00:00:00 1970 From: Juergen Gross Subject: [PATCH v2 1/6] x86/xpti: avoid copying L4 page table contents when possible Date: Fri, 2 Mar 2018 09:13:58 +0100 Message-ID: <20180302081403.16953-2-jgross@suse.com> References: <20180302081403.16953-1-jgross@suse.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.84_2) (envelope-from ) id 1erfpS-0004HW-Im for xen-devel@lists.xenproject.org; Fri, 02 Mar 2018 08:14:10 +0000 In-Reply-To: <20180302081403.16953-1-jgross@suse.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Juergen Gross , andrew.cooper3@citrix.com, wei.liu2@citrix.com, jbeulich@suse.com, dfaggioli@suse.com List-Id: xen-devel@lists.xenproject.org Rm9yIG1pdGlnYXRpb24gb2YgTWVsdGRvd24gdGhlIGN1cnJlbnQgTDQgcGFnZSB0YWJsZSBpcyBj b3BpZWQgdG8gdGhlCmNwdSBsb2NhbCByb290IHBhZ2UgdGFibGUgZWFjaCB0aW1lIGEgNjQgYml0 IHB2IGd1ZXN0IGlzIGVudGVyZWQuCgpDb3B5aW5nIGNhbiBiZSBhdm9pZGVkIGluIGNhc2VzIHdo ZXJlIHRoZSBndWVzdCBMNCBwYWdlIHRhYmxlIGhhc24ndApiZWVuIG1vZGlmaWVkIHdoaWxlIHJ1 bm5pbmcgdGhlIGh5cGVydmlzb3IsIGUuZy4gd2hlbiBoYW5kbGluZwppbnRlcnJ1cHRzIG9yIGFu eSBoeXBlcmNhbGwgbm90IG1vZGlmeWluZyB0aGUgTDQgcGFnZSB0YWJsZSBvciAlY3IzLgoKU28g YWRkIGEgcGVyLWNwdSBmbGFnIHdoZXRoZXIgdGhlIGNvcHlpbmcgc2hvdWxkIGJlIHBlcmZvcm1l ZCBhbmQgc2V0CnRoYXQgZmxhZyBvbmx5IHdoZW4gbG9hZGluZyBhIG5ldyAlY3IzIG9yIG1vZGlm eWluZyB0aGUgTDQgcGFnZSB0YWJsZS4KVGhpcyBpbmNsdWRlcyBzeW5jaHJvbml6YXRpb24gb2Yg dGhlIGNwdSBsb2NhbCByb290IHBhZ2UgdGFibGUgd2l0aApvdGhlciBjcHVzLCBzbyBhZGQgYSBz cGVjaWFsIHN5bmNocm9uaXphdGlvbiBmbGFnIGZvciB0aGF0IGNhc2UuCgpBIHNpbXBsZSBwZXJm b3JtYW5jZSBjaGVjayAoY29tcGlsaW5nIHRoZSBoeXBlcnZpc29yIHZpYSAibWFrZSAtaiA0IikK aW4gZG9tMCB3aXRoIDQgdmNwdXMgc2hvd3MgYSBzaWduaWZpY2FudCBpbXByb3ZlbWVudDoKCi0g cmVhbCB0aW1lIGRyb3BzIGZyb20gMTEyIHNlY29uZHMgdG8gMTAzIHNlY29uZHMKLSBzeXN0ZW0g dGltZSBkcm9wcyBmcm9tIDE0MiBzZWNvbmRzIHRvIDEzMSBzZWNvbmRzCgpTaWduZWQtb2ZmLWJ5 OiBKdWVyZ2VuIEdyb3NzIDxqZ3Jvc3NAc3VzZS5jb20+Ci0tLQpUbyBiZSBhcHBsaWVkIG9uIHRv cCBvZiBKYW4ncyAiTWVsdGRvd24gYmFuZC1haWQgb3ZlcmhlYWQgcmVkdWN0aW9uIgpzZXJpZXMK LS0tCiB4ZW4vYXJjaC94ODYvbW0uYyAgICAgICAgICAgICAgICAgfCAzMiArKysrKysrKysrKysr KysrKysrLS0tLS0tLS0tLS0tLQogeGVuL2FyY2gveDg2L3B2L2RvbWFpbi5jICAgICAgICAgIHwg IDEgKwogeGVuL2FyY2gveDg2L3NtcC5jICAgICAgICAgICAgICAgIHwgIDIgKysKIHhlbi9hcmNo L3g4Ni94ODZfNjQvYXNtLW9mZnNldHMuYyB8ICAxICsKIHhlbi9hcmNoL3g4Ni94ODZfNjQvZW50 cnkuUyAgICAgICB8ICA4ICsrKysrKy0tCiB4ZW4vaW5jbHVkZS9hc20teDg2L2N1cnJlbnQuaCAg ICAgfCAgOCArKysrKysrKwogeGVuL2luY2x1ZGUvYXNtLXg4Ni9mbHVzaHRsYi5oICAgIHwgIDIg KysKIDcgZmlsZXMgY2hhbmdlZCwgMzkgaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tLmMgYi94ZW4vYXJjaC94ODYvbW0uYwppbmRleCBk OGQzZWUyZWNkLi5mZGMxNjM2ODE3IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvbW0uYworKysg Yi94ZW4vYXJjaC94ODYvbW0uYwpAQCAtNTA5LDYgKzUwOSw4IEBAIHZvaWQgbWFrZV9jcjMoc3Ry dWN0IHZjcHUgKnYsIG1mbl90IG1mbikKIAogdm9pZCB3cml0ZV9wdGJhc2Uoc3RydWN0IHZjcHUg KnYpCiB7CisgICAgZ2V0X2NwdV9pbmZvKCktPnJvb3RfcGd0X2NoYW5nZWQgPSB0aGlzX2NwdShy b290X3BndCkgJiYgaXNfcHZfdmNwdSh2KSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIWlzX3B2XzMyYml0X3ZjcHUodik7CiAgICAgd3JpdGVfY3IzKHYtPmFyY2gu Y3IzKTsKIH0KIApAQCAtMzcwNCwxOCArMzcwNiwyMiBAQCBsb25nIGRvX21tdV91cGRhdGUoCiAg ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgcmMgPSBt b2RfbDRfZW50cnkodmEsIGw0ZV9mcm9tX2ludHB0ZShyZXEudmFsKSwgbWZuLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWQgPT0gTU1VX1BUX1VQREFURV9QUkVTRVJW RV9BRCwgdik7Ci0gICAgICAgICAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgICAgICAgICAq IE5vIG5lZWQgdG8gc3luYyBpZiBhbGwgdXNlcyBvZiB0aGUgcGFnZSBjYW4gYmUgYWNjb3VudGVk Ci0gICAgICAgICAgICAgICAgICAgICAqIHRvIHRoZSBwYWdlIGxvY2sgd2UgaG9sZCwgaXRzIHBp bm5lZCBzdGF0dXMsIGFuZCB1c2VzIG9uCi0gICAgICAgICAgICAgICAgICAgICAqIHRoaXMgKHYp Q1BVLgotICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICAgICAgaWYgKCAh cmMgJiYgIWNwdV9oYXNfbm9feHB0aSAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICgocGFn ZS0+dS5pbnVzZS50eXBlX2luZm8gJiBQR1RfY291bnRfbWFzaykgPgotICAgICAgICAgICAgICAg ICAgICAgICAgICAoMSArICEhKHBhZ2UtPnUuaW51c2UudHlwZV9pbmZvICYgUEdUX3Bpbm5lZCkg KwotICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhZ2V0YWJsZV9nZXRfcGZuKGN1cnItPmFy Y2guZ3Vlc3RfdGFibGUpID09IG1mbikgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBh Z2V0YWJsZV9nZXRfcGZuKGN1cnItPmFyY2guZ3Vlc3RfdGFibGVfdXNlcikgPT0KLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICBtZm4pKSkgKQotICAgICAgICAgICAgICAgICAgICAgICAgc3lu Y19ndWVzdCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGlmICggIXJjICYmICFjcHVfaGFz X25vX3hwdGkgKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAg ICBnZXRfY3B1X2luZm8oKS0+cm9vdF9wZ3RfY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAg ICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAgICAgICAgICogTm8gbmVlZCB0byBzeW5j IGlmIGFsbCB1c2VzIG9mIHRoZSBwYWdlIGNhbiBiZQorICAgICAgICAgICAgICAgICAgICAgICAg ICogYWNjb3VudGVkIHRvIHRoZSBwYWdlIGxvY2sgd2UgaG9sZCwgaXRzIHBpbm5lZAorICAgICAg ICAgICAgICAgICAgICAgICAgICogc3RhdHVzLCBhbmQgdXNlcyBvbiB0aGlzICh2KUNQVS4KKyAg ICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAo cGFnZS0+dS5pbnVzZS50eXBlX2luZm8gJiBQR1RfY291bnRfbWFzaykgPgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoMSArICEhKHBhZ2UtPnUuaW51c2UudHlwZV9pbmZvICYgUEdUX3Bp bm5lZCkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhZ2V0YWJsZV9nZXRfcGZu KGN1cnItPmFyY2guZ3Vlc3RfdGFibGUpID09CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbWZuKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFnZXRhYmxlX2dldF9w Zm4oY3Vyci0+YXJjaC5ndWVzdF90YWJsZV91c2VyKSA9PQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG1mbikpICkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW5jX2d1ZXN0 ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBicmVh azsKIAogICAgICAgICAgICAgICAgIGNhc2UgUEdUX3dyaXRhYmxlX3BhZ2U6CkBAIC0zODMwLDcg KzM4MzYsNyBAQCBsb25nIGRvX21tdV91cGRhdGUoCiAKICAgICAgICAgY3B1bWFza19hbmRub3Qo bWFzaywgcHRfb3duZXItPmRpcnR5X2NwdW1hc2ssIGNwdW1hc2tfb2YoY3B1KSk7CiAgICAgICAg IGlmICggIWNwdW1hc2tfZW1wdHkobWFzaykgKQotICAgICAgICAgICAgZmx1c2hfbWFzayhtYXNr LCBGTFVTSF9UTEJfR0xPQkFMKTsKKyAgICAgICAgICAgIGZsdXNoX21hc2sobWFzaywgRkxVU0hf VExCX0dMT0JBTCB8IEZMVVNIX1JPT1RfUEdUQkwpOwogICAgIH0KIAogICAgIHBlcmZjX2FkZChu dW1fcGFnZV91cGRhdGVzLCBpKTsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9wdi9kb21haW4u YyBiL3hlbi9hcmNoL3g4Ni9wdi9kb21haW4uYwppbmRleCA4NjhhMjNmZDdlLi43NzQyZDUyMmY1 IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvcHYvZG9tYWluLmMKKysrIGIveGVuL2FyY2gveDg2 L3B2L2RvbWFpbi5jCkBAIC0yMzgsNiArMjM4LDcgQEAgc3RhdGljIHZvaWQgX3RvZ2dsZV9ndWVz dF9wdChzdHJ1Y3QgdmNwdSAqdiwgYm9vbCBmb3JjZV9jcjMpCiAKICAgICAvKiBEb24ndCBmbHVz aCB1c2VyIGdsb2JhbCBtYXBwaW5ncyBmcm9tIHRoZSBUTEIuIERvbid0IHRpY2sgVExCIGNsb2Nr LiAqLwogICAgIGFzbSB2b2xhdGlsZSAoICJtb3YgJTAsICUlY3IzIiA6IDogInIiICh2LT5hcmNo LmNyMykgOiAibWVtb3J5IiApOworICAgIGdldF9jcHVfaW5mbygpLT5yb290X3BndF9jaGFuZ2Vk ID0gdHJ1ZTsKIAogICAgIGlmICggISh2LT5hcmNoLmZsYWdzICYgVEZfa2VybmVsX21vZGUpICkK ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3NtcC5jIGIveGVuL2Fy Y2gveDg2L3NtcC5jCmluZGV4IDAzM2RkMDU5NTguLjYwYjA2NTdhYjcgMTAwNjQ0Ci0tLSBhL3hl bi9hcmNoL3g4Ni9zbXAuYworKysgYi94ZW4vYXJjaC94ODYvc21wLmMKQEAgLTIwNyw2ICsyMDcs OCBAQCB2b2lkIGludmFsaWRhdGVfaW50ZXJydXB0KHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdz KQogICAgIHVuc2lnbmVkIGludCBmbGFncyA9IGZsdXNoX2ZsYWdzOwogICAgIGFja19BUElDX2ly cSgpOwogICAgIHBlcmZjX2luY3IoaXBpcyk7CisgICAgaWYgKCBmbGFncyAmIEZMVVNIX1JPT1Rf UEdUQkwgKQorICAgICAgICBnZXRfY3B1X2luZm8oKS0+cm9vdF9wZ3RfY2hhbmdlZCA9IHRydWU7 CiAgICAgaWYgKCAoZmxhZ3MgJiBGTFVTSF9WQ1BVX1NUQVRFKSAmJiBfX3N5bmNfbG9jYWxfZXhl Y3N0YXRlKCkgKQogICAgICAgICBmbGFncyAmPSB+KEZMVVNIX1RMQiB8IEZMVVNIX1RMQl9HTE9C QUwpOwogICAgIGlmICggZmxhZ3MgJiB+KEZMVVNIX1ZDUFVfU1RBVEUgfCBGTFVTSF9PUkRFUl9N QVNLKSApCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYveDg2XzY0L2FzbS1vZmZzZXRzLmMgYi94 ZW4vYXJjaC94ODYveDg2XzY0L2FzbS1vZmZzZXRzLmMKaW5kZXggZTkyNWU2NTg5Yy4uYzkyMjVi MDZjMSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3g4Nl82NC9hc20tb2Zmc2V0cy5jCisrKyBi L3hlbi9hcmNoL3g4Ni94ODZfNjQvYXNtLW9mZnNldHMuYwpAQCAtMTQ0LDYgKzE0NCw3IEBAIHZv aWQgX19kdW1teV9fKHZvaWQpCiAgICAgT0ZGU0VUKENQVUlORk9fc2hhZG93X3NwZWNfY3RybCwg c3RydWN0IGNwdV9pbmZvLCBzaGFkb3dfc3BlY19jdHJsKTsKICAgICBPRkZTRVQoQ1BVSU5GT191 c2Vfc2hhZG93X3NwZWNfY3RybCwgc3RydWN0IGNwdV9pbmZvLCB1c2Vfc2hhZG93X3NwZWNfY3Ry bCk7CiAgICAgT0ZGU0VUKENQVUlORk9fYnRpX2lzdF9pbmZvLCBzdHJ1Y3QgY3B1X2luZm8sIGJ0 aV9pc3RfaW5mbyk7CisgICAgT0ZGU0VUKENQVUlORk9fcm9vdF9wZ3RfY2hhbmdlZCwgc3RydWN0 IGNwdV9pbmZvLCByb290X3BndF9jaGFuZ2VkKTsKICAgICBERUZJTkUoQ1BVSU5GT19zaXplb2Ys IHNpemVvZihzdHJ1Y3QgY3B1X2luZm8pKTsKICAgICBCTEFOSygpOwogCmRpZmYgLS1naXQgYS94 ZW4vYXJjaC94ODYveDg2XzY0L2VudHJ5LlMgYi94ZW4vYXJjaC94ODYveDg2XzY0L2VudHJ5LlMK aW5kZXggM2I1NzhiNDM5Mi4uODI4ZjljY2ZlOCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3g4 Nl82NC9lbnRyeS5TCisrKyBiL3hlbi9hcmNoL3g4Ni94ODZfNjQvZW50cnkuUwpAQCAtNDgsMTAg KzQ4LDEzIEBAIHJlc3RvcmVfYWxsX2d1ZXN0OgogLkxyYWdfY3IzX3N0YXJ0OgogICAgICAgICBt b3YgICBWQ1BVX2NyMyglcmJ4KSwgJXI5CiAgICAgICAgIEdFVF9TVEFDS19FTkQoZHgpCi0gICAg ICAgIG1vdiAgIFNUQUNLX0NQVUlORk9fRklFTEQocHZfY3IzKSglcmR4KSwgJXJkaQorICAgICAg ICBtb3YgICBTVEFDS19DUFVJTkZPX0ZJRUxEKHB2X2NyMykoJXJkeCksICVyYXgKKyAgICAgICAg Y21wYiAgJDAsIFNUQUNLX0NQVUlORk9fRklFTEQocm9vdF9wZ3RfY2hhbmdlZCkoJXJkeCkKKyAg ICAgICAgamUgICAgLkxyYWdfY29weV9kb25lCisgICAgICAgIG1vdmIgICQwLCBTVEFDS19DUFVJ TkZPX0ZJRUxEKHJvb3RfcGd0X2NoYW5nZWQpKCVyZHgpCiAgICAgICAgIG1vdmFicyAkUEFERFJf TUFTSyAmIFBBR0VfTUFTSywgJXJzaQogICAgICAgICBtb3ZhYnMgJERJUkVDVE1BUF9WSVJUX1NU QVJULCAlcmN4Ci0gICAgICAgIG1vdiAgICVyZGksICVyYXgKKyAgICAgICAgbW92ICAgJXJheCwg JXJkaQogICAgICAgICBhbmQgICAlcnNpLCAlcmRpCiAgICAgICAgIGFuZCAgICVyOSwgJXJzaQog ICAgICAgICBhZGQgICAlcmN4LCAlcmRpCkBAIC02Nyw2ICs3MCw3IEBAIHJlc3RvcmVfYWxsX2d1 ZXN0OgogICAgICAgICBzdWIgICAkKFJPT1RfUEFHRVRBQkxFX0ZJUlNUX1hFTl9TTE9UIC0gXAog ICAgICAgICAgICAgICAgIFJPT1RfUEFHRVRBQkxFX0xBU1RfWEVOX1NMT1QgLSAxKSAqIDgsICVy ZGkKICAgICAgICAgcmVwIG1vdnNxCisuTHJhZ19jb3B5X2RvbmU6CiAgICAgICAgIG1vdiAgIFNU QUNLX0NQVUlORk9fRklFTEQoY3I0KSglcmR4KSwgJXJkaQogICAgICAgICBtb3YgICAlcjksIFNU QUNLX0NQVUlORk9fRklFTEQoeGVuX2NyMykoJXJkeCkKICAgICAgICAgbW92ICAgJXJkaSwgJXJz aQpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9jdXJyZW50LmggYi94ZW4vaW5jbHVk ZS9hc20teDg2L2N1cnJlbnQuaAppbmRleCA0Njc4YTBmY2Y1Li4zYzk2YzE3M2MyIDEwMDY0NAot LS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L2N1cnJlbnQuaAorKysgYi94ZW4vaW5jbHVkZS9hc20t eDg2L2N1cnJlbnQuaApAQCAtNTksNiArNTksMTQgQEAgc3RydWN0IGNwdV9pbmZvIHsKICAgICBi b29sICAgICAgICAgdXNlX3NoYWRvd19zcGVjX2N0cmw7CiAgICAgdWludDhfdCAgICAgIGJ0aV9p c3RfaW5mbzsKIAorICAgIC8qCisgICAgICogVGhlIGZvbGxvd2luZyBmaWVsZCBjb250cm9scyBj b3B5aW5nIG9mIHRoZSBMNCBwYWdlIHRhYmxlIG9mIDY0LWJpdAorICAgICAqIFBWIGd1ZXN0cyB0 byB0aGUgcGVyLWNwdSByb290IHBhZ2UgdGFibGUgb24gZW50ZXJpbmcgdGhlIGd1ZXN0IGNvbnRl eHQuCisgICAgICogSWYgc2V0IHRoZSBMNCBwYWdlIHRhYmxlIGlzIGJlaW5nIGNvcGllZCB0byB0 aGUgcm9vdCBwYWdlIHRhYmxlIGFuZAorICAgICAqIHRoZSBmaWVsZCB3aWxsIGJlIHJlc2V0Lgor ICAgICAqLworICAgIGJvb2wgICAgICAgICByb290X3BndF9jaGFuZ2VkOworCiAgICAgdW5zaWdu ZWQgbG9uZyBfX3BhZDsKICAgICAvKiBnZXRfc3RhY2tfYm90dG9tKCkgbXVzdCBiZSAxNi1ieXRl IGFsaWduZWQgKi8KIH07CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L2ZsdXNodGxi LmggYi94ZW4vaW5jbHVkZS9hc20teDg2L2ZsdXNodGxiLmgKaW5kZXggMmNhZGU5Y2JmYi4uMDUy ZjBmYTQwMyAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9mbHVzaHRsYi5oCisrKyBi L3hlbi9pbmNsdWRlL2FzbS14ODYvZmx1c2h0bGIuaApAQCAtMTAzLDYgKzEwMyw4IEBAIHZvaWQg d3JpdGVfY3IzKHVuc2lnbmVkIGxvbmcgY3IzKTsKICNkZWZpbmUgRkxVU0hfVkFfVkFMSUQgICAw eDgwMAogIC8qIEZsdXNoIENQVSBzdGF0ZSAqLwogI2RlZmluZSBGTFVTSF9WQ1BVX1NUQVRFIDB4 MTAwMAorIC8qIEZsdXNoIHRoZSBwZXItY3B1IHJvb3QgcGFnZSB0YWJsZSAqLworI2RlZmluZSBG TFVTSF9ST09UX1BHVEJMIDB4MjAwMAogCiAvKiBGbHVzaCBsb2NhbCBUTEJzL2NhY2hlcy4gKi8K IHVuc2lnbmVkIGludCBmbHVzaF9hcmVhX2xvY2FsKGNvbnN0IHZvaWQgKnZhLCB1bnNpZ25lZCBp bnQgZmxhZ3MpOwotLSAKMi4xMy42CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVu cHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZv L3hlbi1kZXZlbA==