From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH 8/8] viridian: introduce struct viridian_page Date: Mon, 29 Oct 2018 18:02:11 +0000 Message-ID: <20181029180211.2155-11-paul.durrant@citrix.com> References: <20181029180211.2155-1-paul.durrant@citrix.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 1gHCHg-0003FB-Fl for xen-devel@lists.xenproject.org; Mon, 29 Oct 2018 18:29:04 +0000 In-Reply-To: <20181029180211.2155-1-paul.durrant@citrix.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: Wei Liu , Paul Durrant , Ian Jackson , Jan Beulich , Andrew Cooper List-Id: xen-devel@lists.xenproject.org VGhlICd2cF9hc3Npc3QnIHBhZ2UgaXMgY3VycmVudGx5IGFuIGV4YW1wbGUgb2YgYSBndWVzdCBw YWdlIHdoaWNoIG5lZWRzIHRvCmJlIGtlcHQgbWFwcGVkIHRocm91Z2hvdXQgdGhlIGxpZmUtdGlt ZSBvZiBhIGd1ZXN0LCBidXQgdGhlcmUgYXJlIG90aGVyCnN1Y2ggZXhhbXBsZXMgaW4gdGhlIHNw ZWNpZmljdGlvbiBbMV0uIFRoaXMgcGF0Y2ggdGhlcmVmb3JlIGludHJvZHVjZXMgYQpnZW5lcmlj ICd2aXJpZGlhbl9wYWdlJyB0eXBlIGFuZCBjb252ZXJ0cyB0aGUgY3VycmVudCB2cF9hc3Npc3Qv YXBpY19hc3Npc3QKcmVsYXRlZCBjb2RlIHRvIHVzZSBpdC4gU3Vic2VxdWVudCBwYXRjaGVzIGlt cGxlbWVudGluZyBvdGhlciBlbmxpZ2h0bWVudHMKY2FuIHRoZW4gYWxzbyBtYWtlIHVzZSBvZiBp dC4KClRoaXMgcGF0Y2ggYWxzbyByZW5hbWVzIHRoZSAndnBfYXNzaXN0X3BlbmRpbmcnIGZpZWxk IGluIHN0cnVjdApodm1fdmlyaWRpYW5fdmNwdV9jb250ZXh0IHRvICdhcGljX2Fzc2lzdF9wZW5k aW5nJyB0byBtb3JlIGFjY3VyYXRlbHkKcmVmbGVjdCBpdHMgbWVhbmluZy4gVGhlIHRlcm0gJ3Zw X2Fzc2lzdCcgYXBwbGllcyB0byB0aGUgd2hvbGUgcGFnZSByYXRoZXIKdGhhbiBqdXN0IHRoZSBF T0ktYXZvaWRhbmNlIGVubGlnaHRlbm1lbnQuIE5ldyB2ZXJzb25zIG9mIHRoZSBzcGVjaWZpY2F0 aW9uCmhhdmUgZGVmaW5lZCBkYXRhIHN0cnVjdHVyZXMgZm9yIG90aGVyIGVubGlnaHRlbm1lbnRz IHdpdGhpbiB0aGUgc2FtZSBwYWdlLgoKTm8gZnVuY3Rpb25hbCBjaGFuZ2UuCgpbMV0gaHR0cHM6 Ly9naXRodWIuY29tL01pY3Jvc29mdERvY3MvVmlydHVhbGl6YXRpb24tRG9jdW1lbnRhdGlvbi9y YXcvbGl2ZS90bGZzL0h5cGVydmlzb3IlMjBUb3AlMjBMZXZlbCUyMEZ1bmN0aW9uYWwlMjBTcGVj aWZpY2F0aW9uJTIwdjUuMEMucGRmCgpTaWduZWQtb2ZmLWJ5OiBQYXVsIER1cnJhbnQgPHBhdWwu ZHVycmFudEBjaXRyaXguY29tPgotLS0KQ2M6IElhbiBKYWNrc29uIDxpYW4uamFja3NvbkBldS5j aXRyaXguY29tPgpDYzogV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KQ2M6IEphbiBCZXVs aWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KQ2M6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIz QGNpdHJpeC5jb20+Ci0tLQogdG9vbHMvbWlzYy94ZW4taHZtY3R4LmMgICAgICAgICAgICAgICAg fCAgNCArLS0KIHhlbi9hcmNoL3g4Ni9odm0vdmlyaWRpYW4vc3luaWMuYyAgICAgIHwgNDcgKysr KysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLQogeGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0v dmlyaWRpYW4uaCAgICAgfCAxMyArKysrKystLS0tCiB4ZW4vaW5jbHVkZS9wdWJsaWMvYXJjaC14 ODYvaHZtL3NhdmUuaCB8ICAyICstCiA0IGZpbGVzIGNoYW5nZWQsIDMzIGluc2VydGlvbnMoKyks IDMzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Rvb2xzL21pc2MveGVuLWh2bWN0eC5jIGIv dG9vbHMvbWlzYy94ZW4taHZtY3R4LmMKaW5kZXggNDBlNzc4NTFiZS4uYTRlZmFkZjMwNyAxMDA2 NDQKLS0tIGEvdG9vbHMvbWlzYy94ZW4taHZtY3R4LmMKKysrIGIvdG9vbHMvbWlzYy94ZW4taHZt Y3R4LmMKQEAgLTM3MCw5ICszNzAsOSBAQCBzdGF0aWMgdm9pZCBkdW1wX3ZpcmlkaWFuX3ZjcHUo dm9pZCkKIHsKICAgICBIVk1fU0FWRV9UWVBFKFZJUklESUFOX1ZDUFUpIHA7CiAgICAgUkVBRChw KTsKLSAgICBwcmludGYoIiAgICBWSVJJRElBTl9WQ1BVOiB2cF9hc3Npc3RfbXNyIDB4JWxseCwg dnBfYXNzaXN0X3BlbmRpbmcgJXNcbiIsCisgICAgcHJpbnRmKCIgICAgVklSSURJQU5fVkNQVTog dnBfYXNzaXN0X21zciAweCVsbHgsIGFwaWNfYXNzaXN0X3BlbmRpbmcgJXNcbiIsCiAJICAgKHVu c2lnbmVkIGxvbmcgbG9uZykgcC52cF9hc3Npc3RfbXNyLAotCSAgIHAudnBfYXNzaXN0X3BlbmRp bmcgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKKwkgICBwLmFwaWNfYXNzaXN0X3BlbmRpbmcgPyAidHJ1 ZSIgOiAiZmFsc2UiKTsKIH0KIAogc3RhdGljIHZvaWQgZHVtcF92bWNlX3ZjcHUodm9pZCkKZGlm ZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vdmlyaWRpYW4vc3luaWMuYyBiL3hlbi9hcmNoL3g4 Ni9odm0vdmlyaWRpYW4vc3luaWMuYwppbmRleCA3MzVjNGM4OTdjLi5mOWFhOGZkODk4IDEwMDY0 NAotLS0gYS94ZW4vYXJjaC94ODYvaHZtL3ZpcmlkaWFuL3N5bmljLmMKKysrIGIveGVuL2FyY2gv eDg2L2h2bS92aXJpZGlhbi9zeW5pYy5jCkBAIC0zNiwxNCArMzYsMTMgQEAgc3RhdGljIHZvaWQg ZHVtcF92cF9hc3Npc3QoY29uc3Qgc3RydWN0IHZjcHUgKnYpCiAgICAgICAgICAgIHYsICh1bnNp Z25lZCBsb25nKXZhLT5maWVsZHMucGZuKTsKIH0KIAotc3RhdGljIHZvaWQgaW5pdGlhbGl6ZV92 cF9hc3Npc3Qoc3RydWN0IHZjcHUgKnYpCitzdGF0aWMgdm9pZCBpbml0aWFsaXplX2d1ZXN0X3Bh Z2Uoc3RydWN0IHZjcHUgKnYsIHN0cnVjdCB2aXJpZGlhbl9wYWdlICp2cCkKIHsKICAgICBzdHJ1 Y3QgZG9tYWluICpkID0gdi0+ZG9tYWluOwotICAgIHVuc2lnbmVkIGxvbmcgZ21mbiA9IHYtPmFy Y2guaHZtLnZpcmlkaWFuLnZwX2Fzc2lzdC5tc3IuZmllbGRzLnBmbjsKKyAgICB1bnNpZ25lZCBs b25nIGdtZm4gPSB2cC0+bXNyLmZpZWxkcy5wZm47CiAgICAgc3RydWN0IHBhZ2VfaW5mbyAqcGFn ZSA9IGdldF9wYWdlX2Zyb21fZ2ZuKGQsIGdtZm4sIE5VTEwsIFAyTV9BTExPQyk7Ci0gICAgSFZf VlBfQVNTSVNUX1BBR0UgKnB0cjsKIAotICAgIEFTU0VSVCghdi0+YXJjaC5odm0udmlyaWRpYW4u dnBfYXNzaXN0LnB0cik7CisgICAgQVNTRVJUKCF2cC0+cHRyKTsKIAogICAgIGlmICggIXBhZ2Ug KQogICAgICAgICBnb3RvIGZhaWw7CkBAIC01NCwxNiArNTMsMTQgQEAgc3RhdGljIHZvaWQgaW5p dGlhbGl6ZV92cF9hc3Npc3Qoc3RydWN0IHZjcHUgKnYpCiAgICAgICAgIGdvdG8gZmFpbDsKICAg ICB9CiAKLSAgICBwdHIgPSBfX21hcF9kb21haW5fcGFnZV9nbG9iYWwocGFnZSk7Ci0gICAgaWYg KCAhcHRyICkKKyAgICB2cC0+cHRyID0gX19tYXBfZG9tYWluX3BhZ2VfZ2xvYmFsKHBhZ2UpOwor ICAgIGlmICggIXZwLT5wdHIgKQogICAgIHsKICAgICAgICAgcHV0X3BhZ2VfYW5kX3R5cGUocGFn ZSk7CiAgICAgICAgIGdvdG8gZmFpbDsKICAgICB9CiAKLSAgICBjbGVhcl9wYWdlKHB0cik7Ci0K LSAgICB2LT5hcmNoLmh2bS52aXJpZGlhbi52cF9hc3Npc3QucHRyID0gcHRyOworICAgIGNsZWFy X3BhZ2UodnAtPnB0cik7CiAgICAgcmV0dXJuOwogCiAgZmFpbDoKQEAgLTcxLDE5ICs2OCwxOCBA QCBzdGF0aWMgdm9pZCBpbml0aWFsaXplX3ZwX2Fzc2lzdChzdHJ1Y3QgdmNwdSAqdikKICAgICAg ICAgICAgICBnbWZuLCBtZm5feChwYWdlID8gcGFnZV90b19tZm4ocGFnZSkgOiBJTlZBTElEX01G TikpOwogfQogCi1zdGF0aWMgdm9pZCB0ZWFyZG93bl92cF9hc3Npc3Qoc3RydWN0IHZjcHUgKnYp CitzdGF0aWMgdm9pZCB0ZWFyZG93bl9ndWVzdF9wYWdlKHN0cnVjdCB2aXJpZGlhbl9wYWdlICp2 cCkKIHsKLSAgICBIVl9WUF9BU1NJU1RfUEFHRSAqcHRyID0gdi0+YXJjaC5odm0udmlyaWRpYW4u dnBfYXNzaXN0LnB0cjsKICAgICBzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlOwogCi0gICAgaWYgKCAh cHRyICkKKyAgICBpZiAoICF2cC0+cHRyICkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdi0+YXJj aC5odm0udmlyaWRpYW4udnBfYXNzaXN0LnB0ciA9IE5VTEw7CisgICAgcGFnZSA9IG1mbl90b19w YWdlKGRvbWFpbl9wYWdlX21hcF90b19tZm4odnAtPnB0cikpOwogCi0gICAgcGFnZSA9IG1mbl90 b19wYWdlKGRvbWFpbl9wYWdlX21hcF90b19tZm4ocHRyKSk7CisgICAgdW5tYXBfZG9tYWluX3Bh Z2VfZ2xvYmFsKHZwLT5wdHIpOworICAgIHZwLT5wdHIgPSBOVUxMOwogCi0gICAgdW5tYXBfZG9t YWluX3BhZ2VfZ2xvYmFsKHB0cik7CiAgICAgcHV0X3BhZ2VfYW5kX3R5cGUocGFnZSk7CiB9CiAK QEAgLTk5LDEwICs5NSwxMCBAQCB2b2lkIHZpcmlkaWFuX2FwaWNfYXNzaXN0X3NldChzdHJ1Y3Qg dmNwdSAqdikKICAgICAgKiB3cm9uZyBhbmQgdGhlIFZNIHdpbGwgbW9zdCBsaWtlbHkgaGFuZyBz byBmb3JjZSBhIGNyYXNoIG5vdwogICAgICAqIHRvIG1ha2UgdGhlIHByb2JsZW0gY2xlYXIuCiAg ICAgICovCi0gICAgaWYgKCB2LT5hcmNoLmh2bS52aXJpZGlhbi52cF9hc3Npc3QucGVuZGluZyAp CisgICAgaWYgKCB2LT5hcmNoLmh2bS52aXJpZGlhbi5hcGljX2Fzc2lzdF9wZW5kaW5nICkKICAg ICAgICAgZG9tYWluX2NyYXNoKHYtPmRvbWFpbik7CiAKLSAgICB2LT5hcmNoLmh2bS52aXJpZGlh bi52cF9hc3Npc3QucGVuZGluZyA9IHRydWU7CisgICAgdi0+YXJjaC5odm0udmlyaWRpYW4uYXBp Y19hc3Npc3RfcGVuZGluZyA9IHRydWU7CiAgICAgcHRyLT5BcGljQXNzaXN0Lm5vX2VvaSA9IDE7 CiB9CiAKQEAgLTExMywxMSArMTA5LDExIEBAIGJvb2wgdmlyaWRpYW5fYXBpY19hc3Npc3RfY29t cGxldGVkKHN0cnVjdCB2Y3B1ICp2KQogICAgIGlmICggIXB0ciApCiAgICAgICAgIHJldHVybiBm YWxzZTsKIAotICAgIGlmICggdi0+YXJjaC5odm0udmlyaWRpYW4udnBfYXNzaXN0LnBlbmRpbmcg JiYKKyAgICBpZiAoIHYtPmFyY2guaHZtLnZpcmlkaWFuLmFwaWNfYXNzaXN0X3BlbmRpbmcgJiYK ICAgICAgICAgICFwdHItPkFwaWNBc3Npc3Qubm9fZW9pICkKICAgICB7CiAgICAgICAgIC8qIEFu IEVPSSBoYXMgYmVlbiBhdm9pZGVkICovCi0gICAgICAgIHYtPmFyY2guaHZtLnZpcmlkaWFuLnZw X2Fzc2lzdC5wZW5kaW5nID0gZmFsc2U7CisgICAgICAgIHYtPmFyY2guaHZtLnZpcmlkaWFuLmFw aWNfYXNzaXN0X3BlbmRpbmcgPSBmYWxzZTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog CkBAIC0xMzIsNyArMTI4LDcgQEAgdm9pZCB2aXJpZGlhbl9hcGljX2Fzc2lzdF9jbGVhcihzdHJ1 Y3QgdmNwdSAqdikKICAgICAgICAgcmV0dXJuOwogCiAgICAgcHRyLT5BcGljQXNzaXN0Lm5vX2Vv aSA9IDA7Ci0gICAgdi0+YXJjaC5odm0udmlyaWRpYW4udnBfYXNzaXN0LnBlbmRpbmcgPSBmYWxz ZTsKKyAgICB2LT5hcmNoLmh2bS52aXJpZGlhbi5hcGljX2Fzc2lzdF9wZW5kaW5nID0gZmFsc2U7 CiB9CiAKIGludCB2aXJpZGlhbl9zeW5pY193cm1zcihzdHJ1Y3QgdmNwdSAqdiwgdWludDMyX3Qg aWR4LCB1aW50NjRfdCB2YWwpCkBAIC0xNTgsMTEgKzE1NCwxMiBAQCBpbnQgdmlyaWRpYW5fc3lu aWNfd3Jtc3Ioc3RydWN0IHZjcHUgKnYsIHVpbnQzMl90IGlkeCwgdWludDY0X3QgdmFsKQogICAg ICAgICBicmVhazsKIAogICAgIGNhc2UgSFZfWDY0X01TUl9WUF9BU1NJU1RfUEFHRToKLSAgICAg ICAgdGVhcmRvd25fdnBfYXNzaXN0KHYpOyAvKiByZWxlYXNlIGFueSBwcmV2aW91cyBtYXBwaW5n ICovCisgICAgICAgIC8qIHJlbGVhc2UgYW55IHByZXZpb3VzIG1hcHBpbmcgKi8KKyAgICAgICAg dGVhcmRvd25fZ3Vlc3RfcGFnZSgmdi0+YXJjaC5odm0udmlyaWRpYW4udnBfYXNzaXN0KTsKICAg ICAgICAgdi0+YXJjaC5odm0udmlyaWRpYW4udnBfYXNzaXN0Lm1zci5yYXcgPSB2YWw7CiAgICAg ICAgIGR1bXBfdnBfYXNzaXN0KHYpOwogICAgICAgICBpZiAoIHYtPmFyY2guaHZtLnZpcmlkaWFu LnZwX2Fzc2lzdC5tc3IuZmllbGRzLmVuYWJsZWQgKQotICAgICAgICAgICAgaW5pdGlhbGl6ZV92 cF9hc3Npc3Qodik7CisgICAgICAgICAgICBpbml0aWFsaXplX2d1ZXN0X3BhZ2UodiwgJnYtPmFy Y2guaHZtLnZpcmlkaWFuLnZwX2Fzc2lzdCk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgZGVmYXVs dDoKQEAgLTIxMSw3ICsyMDgsNyBAQCBpbnQgdmlyaWRpYW5fc3luaWNfcmRtc3IoY29uc3Qgc3Ry dWN0IHZjcHUgKnYsIHVpbnQzMl90IGlkeCwgdWludDY0X3QgKnZhbCkKIHZvaWQgdmlyaWRpYW5f c3luaWNfc2F2ZV92Y3B1X2N0eHQoY29uc3Qgc3RydWN0IHZjcHUgKnYsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBodm1fdmlyaWRpYW5fdmNwdV9jb250ZXh0ICpj dHh0KQogewotICAgIGN0eHQtPnZwX2Fzc2lzdF9wZW5kaW5nID0gdi0+YXJjaC5odm0udmlyaWRp YW4udnBfYXNzaXN0LnBlbmRpbmc7CisgICAgY3R4dC0+YXBpY19hc3Npc3RfcGVuZGluZyA9IHYt PmFyY2guaHZtLnZpcmlkaWFuLmFwaWNfYXNzaXN0X3BlbmRpbmc7CiAgICAgY3R4dC0+dnBfYXNz aXN0X21zciA9IHYtPmFyY2guaHZtLnZpcmlkaWFuLnZwX2Fzc2lzdC5tc3IucmF3OwogfQogCkBA IC0yMjAsOSArMjE3LDkgQEAgdm9pZCB2aXJpZGlhbl9zeW5pY19sb2FkX3ZjcHVfY3R4dChzdHJ1 Y3QgdmNwdSAqdiwKIHsKICAgICB2LT5hcmNoLmh2bS52aXJpZGlhbi52cF9hc3Npc3QubXNyLnJh dyA9IGN0eHQtPnZwX2Fzc2lzdF9tc3I7CiAgICAgaWYgKCB2LT5hcmNoLmh2bS52aXJpZGlhbi52 cF9hc3Npc3QubXNyLmZpZWxkcy5lbmFibGVkICkKLSAgICAgICAgaW5pdGlhbGl6ZV92cF9hc3Np c3Qodik7CisgICAgICAgIGluaXRpYWxpemVfZ3Vlc3RfcGFnZSh2LCAmdi0+YXJjaC5odm0udmly aWRpYW4udnBfYXNzaXN0KTsKIAotICAgIHYtPmFyY2guaHZtLnZpcmlkaWFuLnZwX2Fzc2lzdC5w ZW5kaW5nID0gISFjdHh0LT52cF9hc3Npc3RfcGVuZGluZzsKKyAgICB2LT5hcmNoLmh2bS52aXJp ZGlhbi5hcGljX2Fzc2lzdF9wZW5kaW5nID0gISFjdHh0LT5hcGljX2Fzc2lzdF9wZW5kaW5nOwog fQogCiAvKgpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vdmlyaWRpYW4uaCBi L3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3ZpcmlkaWFuLmgKaW5kZXggNjZhYTI0YzQzZS4uOGQ1 NjkwNTgyZSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vdmlyaWRpYW4uaAor KysgYi94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS92aXJpZGlhbi5oCkBAIC04OCwxMyArODgsMTYg QEAgdW5pb24gdmlyaWRpYW5fcGFnZV9tc3IKICAgICB9IGZpZWxkczsKIH07CiAKK3N0cnVjdCB2 aXJpZGlhbl9wYWdlCit7CisgICAgdW5pb24gdmlyaWRpYW5fcGFnZV9tc3IgbXNyOworICAgIHZv aWQgKnB0cjsKK307CisKIHN0cnVjdCB2aXJpZGlhbl92Y3B1CiB7Ci0gICAgc3RydWN0IHsKLSAg ICAgICAgdW5pb24gdmlyaWRpYW5fcGFnZV9tc3IgbXNyOwotICAgICAgICB2b2lkICpwdHI7Ci0g ICAgICAgIGJvb2wgcGVuZGluZzsKLSAgICB9IHZwX2Fzc2lzdDsKKyAgICBzdHJ1Y3QgdmlyaWRp YW5fcGFnZSB2cF9hc3Npc3Q7CisgICAgYm9vbCBhcGljX2Fzc2lzdF9wZW5kaW5nOwogICAgIHVp bnQ2NF90IGNyYXNoX3BhcmFtWzVdOwogfTsKIApkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvcHVi bGljL2FyY2gteDg2L2h2bS9zYXZlLmggYi94ZW4vaW5jbHVkZS9wdWJsaWMvYXJjaC14ODYvaHZt L3NhdmUuaAppbmRleCA0NjkxZDRkNGFhLi44MGU3NjJjMzM1IDEwMDY0NAotLS0gYS94ZW4vaW5j bHVkZS9wdWJsaWMvYXJjaC14ODYvaHZtL3NhdmUuaAorKysgYi94ZW4vaW5jbHVkZS9wdWJsaWMv YXJjaC14ODYvaHZtL3NhdmUuaApAQCAtNjAwLDcgKzYwMCw3IEBAIERFQ0xBUkVfSFZNX1NBVkVf VFlQRShWSVJJRElBTl9ET01BSU4sIDE1LCBzdHJ1Y3QgaHZtX3ZpcmlkaWFuX2RvbWFpbl9jb250 ZXh0KTsKIAogc3RydWN0IGh2bV92aXJpZGlhbl92Y3B1X2NvbnRleHQgewogICAgIHVpbnQ2NF90 IHZwX2Fzc2lzdF9tc3I7Ci0gICAgdWludDhfdCAgdnBfYXNzaXN0X3BlbmRpbmc7CisgICAgdWlu dDhfdCAgYXBpY19hc3Npc3RfcGVuZGluZzsKICAgICB1aW50OF90ICBfcGFkWzddOwogfTsKIAot LSAKMi4xMS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcK aHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==