From mboxrd@z Thu Jan 1 00:00:00 1970 From: Juergen Gross Subject: [PATCH v7 06/11] xen: factor out p2m list allocation into separate function Date: Thu, 3 Mar 2016 10:38:11 +0100 Message-ID: <1456997896-14063-7-git-send-email-jgross__36961.6029937335$1456997979$gmane$org@suse.com> References: <1456997896-14063-1-git-send-email-jgross@suse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1456997896-14063-1-git-send-email-jgross@suse.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: grub-devel@gnu.org Cc: Juergen Gross , phcoder@gmail.com, daniel.kiper@oracle.com, mchang@suse.com, xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org RG8gdGhlIHAybSBsaXN0IGFsbG9jYXRpb24gb2YgdGhlIHRvIGJlIGxvYWRlZCBrZXJuZWwgaW4g YSBzZXBhcmF0ZQpmdW5jdGlvbi4gVGhpcyB3aWxsIGFsbG93IGRvaW5nIHRoZSBwMm0gbGlzdCBh bGxvY2F0aW9uIGF0IGRpZmZlcmVudAp0aW1lcyBvZiB0aGUgYm9vdCBwcmVwYXJhdGlvbnMgZGVw ZW5kaW5nIG9uIHRoZSBmZWF0dXJlcyB0aGUga2VybmVsCmlzIHN1cHBvcnRpbmcuCgpXaGlsZSBh dCB0aGlzIHJlbW92ZSBzdXBlcmZsdW91cyBzZXR0aW5nIG9mIGZpcnN0X3AybV9wZm4gYW5kCm5y X3AybV9mcmFtZXMgYXMgdGhvc2UgYXJlIG5lZWRlZCBvbmx5IGluIGNhc2Ugb2YgdGhlIHAybSBs aXN0IG5vdApiZWluZyBtYXBwZWQgYnkgdGhlIGluaXRpYWwga2VybmVsIG1hcHBpbmcuCgpTaWdu ZWQtb2ZmLWJ5OiBKdWVyZ2VuIEdyb3NzIDxqZ3Jvc3NAc3VzZS5jb20+ClJldmlld2VkLWJ5OiBE YW5pZWwgS2lwZXIgPGRhbmllbC5raXBlckBvcmFjbGUuY29tPgotLS0KIGdydWItY29yZS9sb2Fk ZXIvaTM4Ni94ZW4uYyB8IDg3ICsrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0t LS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDUwIGluc2VydGlvbnMoKyksIDM3IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2dydWItY29yZS9sb2FkZXIvaTM4Ni94ZW4uYyBiL2dydWItY29yZS9s b2FkZXIvaTM4Ni94ZW4uYwppbmRleCA2OTFjMjJlLi5hMmZkMWY2IDEwMDY0NAotLS0gYS9ncnVi LWNvcmUvbG9hZGVyL2kzODYveGVuLmMKKysrIGIvZ3J1Yi1jb3JlL2xvYWRlci9pMzg2L3hlbi5j CkBAIC00NCw4ICs0NCwxMCBAQCBHUlVCX01PRF9MSUNFTlNFICgiR1BMdjMrIik7CiAKIHN0cnVj dCB4ZW5fbG9hZGVyX3N0YXRlIHsKICAgc3RydWN0IGdydWJfcmVsb2NhdG9yICpyZWxvY2F0b3I7 CisgIHN0cnVjdCBncnViX3JlbG9jYXRvcl94ZW5fc3RhdGUgc3RhdGU7CiAgIHN0cnVjdCBzdGFy dF9pbmZvIG5leHRfc3RhcnQ7CiAgIHN0cnVjdCBncnViX3hlbl9maWxlX2luZm8geGVuX2luZjsK KyAgZ3J1Yl94ZW5fbWZuX3QgKnZpcnRfbWZuX2xpc3Q7CiAgIGdydWJfdWludDY0X3QgbWF4X2Fk ZHI7CiAgIHN0cnVjdCB4ZW5fbXVsdGlib290X21vZF9saXN0ICptb2R1bGVfaW5mb19wYWdlOwog ICBncnViX3VpbnQ2NF90IG1vZHVsZXNfdGFyZ2V0X3N0YXJ0OwpAQCAtMTcwLDcgKzE3Miw3IEBA IGdlbmVyYXRlX3BhZ2VfdGFibGUgKGdydWJfdWludDY0X3QgKndoZXJlLCBncnViX3VpbnQ2NF90 IHBhZ2luZ19zdGFydCwKIH0KIAogc3RhdGljIGdydWJfZXJyX3QKLXNldF9tZm5zIChncnViX3hl bl9tZm5fdCAqIG5ld19tZm5fbGlzdCwgZ3J1Yl94ZW5fbWZuX3QgcGZuKQorc2V0X21mbnMgKGdy dWJfeGVuX21mbl90IHBmbikKIHsKICAgZ3J1Yl94ZW5fbWZuX3QgaSwgdDsKICAgZ3J1Yl94ZW5f bWZuX3QgY25fcGZuID0gLTEsIHN0X3BmbiA9IC0xOwpAQCAtMTc5LDMyICsxODEsMzQgQEAgc2V0 X21mbnMgKGdydWJfeGVuX21mbl90ICogbmV3X21mbl9saXN0LCBncnViX3hlbl9tZm5fdCBwZm4p CiAKICAgZm9yIChpID0gMDsgaSA8IGdydWJfeGVuX3N0YXJ0X3BhZ2VfYWRkci0+bnJfcGFnZXM7 IGkrKykKICAgICB7Ci0gICAgICBpZiAobmV3X21mbl9saXN0W2ldID09IGdydWJfeGVuX3N0YXJ0 X3BhZ2VfYWRkci0+Y29uc29sZS5kb21VLm1mbikKKyAgICAgIGlmICh4ZW5fc3RhdGUudmlydF9t Zm5fbGlzdFtpXSA9PQorCSAgZ3J1Yl94ZW5fc3RhcnRfcGFnZV9hZGRyLT5jb25zb2xlLmRvbVUu bWZuKQogCWNuX3BmbiA9IGk7Ci0gICAgICBpZiAobmV3X21mbl9saXN0W2ldID09IGdydWJfeGVu X3N0YXJ0X3BhZ2VfYWRkci0+c3RvcmVfbWZuKQorICAgICAgaWYgKHhlbl9zdGF0ZS52aXJ0X21m bl9saXN0W2ldID09IGdydWJfeGVuX3N0YXJ0X3BhZ2VfYWRkci0+c3RvcmVfbWZuKQogCXN0X3Bm biA9IGk7CiAgICAgfQogICBpZiAoY25fcGZuID09IChncnViX3hlbl9tZm5fdCktMSkKICAgICBy ZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQlVHLCAibm8gY29uc29sZSIpOwogICBpZiAoc3Rf cGZuID09IChncnViX3hlbl9tZm5fdCktMSkKICAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9F UlJfQlVHLCAibm8gc3RvcmUiKTsKLSAgdCA9IG5ld19tZm5fbGlzdFtwZm5dOwotICBuZXdfbWZu X2xpc3RbcGZuXSA9IG5ld19tZm5fbGlzdFtjbl9wZm5dOwotICBuZXdfbWZuX2xpc3RbY25fcGZu XSA9IHQ7Ci0gIHQgPSBuZXdfbWZuX2xpc3RbcGZuICsgMV07Ci0gIG5ld19tZm5fbGlzdFtwZm4g KyAxXSA9IG5ld19tZm5fbGlzdFtzdF9wZm5dOwotICBuZXdfbWZuX2xpc3Rbc3RfcGZuXSA9IHQ7 CisgIHQgPSB4ZW5fc3RhdGUudmlydF9tZm5fbGlzdFtwZm5dOworICB4ZW5fc3RhdGUudmlydF9t Zm5fbGlzdFtwZm5dID0geGVuX3N0YXRlLnZpcnRfbWZuX2xpc3RbY25fcGZuXTsKKyAgeGVuX3N0 YXRlLnZpcnRfbWZuX2xpc3RbY25fcGZuXSA9IHQ7CisgIHQgPSB4ZW5fc3RhdGUudmlydF9tZm5f bGlzdFtwZm4gKyAxXTsKKyAgeGVuX3N0YXRlLnZpcnRfbWZuX2xpc3RbcGZuICsgMV0gPSB4ZW5f c3RhdGUudmlydF9tZm5fbGlzdFtzdF9wZm5dOworICB4ZW5fc3RhdGUudmlydF9tZm5fbGlzdFtz dF9wZm5dID0gdDsKIAotICBtMnBfdXBkYXRlc1swXS5wdHIgPSBwYWdlMm9mZnNldCAobmV3X21m bl9saXN0W3Bmbl0pIHwgTU1VX01BQ0hQSFlTX1VQREFURTsKKyAgbTJwX3VwZGF0ZXNbMF0ucHRy ID0KKyAgICBwYWdlMm9mZnNldCAoeGVuX3N0YXRlLnZpcnRfbWZuX2xpc3RbcGZuXSkgfCBNTVVf TUFDSFBIWVNfVVBEQVRFOwogICBtMnBfdXBkYXRlc1swXS52YWwgPSBwZm47CiAgIG0ycF91cGRh dGVzWzFdLnB0ciA9Ci0gICAgcGFnZTJvZmZzZXQgKG5ld19tZm5fbGlzdFtwZm4gKyAxXSkgfCBN TVVfTUFDSFBIWVNfVVBEQVRFOworICAgIHBhZ2Uyb2Zmc2V0ICh4ZW5fc3RhdGUudmlydF9tZm5f bGlzdFtwZm4gKyAxXSkgfCBNTVVfTUFDSFBIWVNfVVBEQVRFOwogICBtMnBfdXBkYXRlc1sxXS52 YWwgPSBwZm4gKyAxOwogICBtMnBfdXBkYXRlc1syXS5wdHIgPQotICAgIHBhZ2Uyb2Zmc2V0IChu ZXdfbWZuX2xpc3RbY25fcGZuXSkgfCBNTVVfTUFDSFBIWVNfVVBEQVRFOworICAgIHBhZ2Uyb2Zm c2V0ICh4ZW5fc3RhdGUudmlydF9tZm5fbGlzdFtjbl9wZm5dKSB8IE1NVV9NQUNIUEhZU19VUERB VEU7CiAgIG0ycF91cGRhdGVzWzJdLnZhbCA9IGNuX3BmbjsKICAgbTJwX3VwZGF0ZXNbM10ucHRy ID0KLSAgICBwYWdlMm9mZnNldCAobmV3X21mbl9saXN0W3N0X3Bmbl0pIHwgTU1VX01BQ0hQSFlT X1VQREFURTsKKyAgICBwYWdlMm9mZnNldCAoeGVuX3N0YXRlLnZpcnRfbWZuX2xpc3Rbc3RfcGZu XSkgfCBNTVVfTUFDSFBIWVNfVVBEQVRFOwogICBtMnBfdXBkYXRlc1szXS52YWwgPSBzdF9wZm47 CiAKICAgZ3J1Yl94ZW5fbW11X3VwZGF0ZSAobTJwX3VwZGF0ZXMsIDQsIE5VTEwsIERPTUlEX1NF TEYpOwpAQCAtMjEzLDQzICsyMTcsNTIgQEAgc2V0X21mbnMgKGdydWJfeGVuX21mbl90ICogbmV3 X21mbl9saXN0LCBncnViX3hlbl9tZm5fdCBwZm4pCiB9CiAKIHN0YXRpYyBncnViX2Vycl90Citn cnViX3hlbl9wMm1fYWxsb2MgKHZvaWQpCit7CisgIGdydWJfcmVsb2NhdG9yX2NodW5rX3QgY2g7 CisgIGdydWJfc2l6ZV90IHAybXNpemU7CisgIGdydWJfZXJyX3QgZXJyOworCisgIHhlbl9zdGF0 ZS5zdGF0ZS5tZm5fbGlzdCA9IHhlbl9zdGF0ZS5tYXhfYWRkcjsKKyAgeGVuX3N0YXRlLm5leHRf c3RhcnQubWZuX2xpc3QgPQorICAgIHhlbl9zdGF0ZS5tYXhfYWRkciArIHhlbl9zdGF0ZS54ZW5f aW5mLnZpcnRfYmFzZTsKKyAgcDJtc2l6ZSA9IHNpemVvZiAoZ3J1Yl94ZW5fbWZuX3QpICogZ3J1 Yl94ZW5fc3RhcnRfcGFnZV9hZGRyLT5ucl9wYWdlczsKKyAgZXJyID0gZ3J1Yl9yZWxvY2F0b3Jf YWxsb2NfY2h1bmtfYWRkciAoeGVuX3N0YXRlLnJlbG9jYXRvciwgJmNoLAorCQkJCQkgeGVuX3N0 YXRlLm1heF9hZGRyLCBwMm1zaXplKTsKKyAgaWYgKGVycikKKyAgICByZXR1cm4gZXJyOworICB4 ZW5fc3RhdGUudmlydF9tZm5fbGlzdCA9IGdldF92aXJ0dWFsX2N1cnJlbnRfYWRkcmVzcyAoY2gp OworICBncnViX21lbWNweSAoeGVuX3N0YXRlLnZpcnRfbWZuX2xpc3QsCisJICAgICAgICh2b2lk ICopIGdydWJfeGVuX3N0YXJ0X3BhZ2VfYWRkci0+bWZuX2xpc3QsIHAybXNpemUpOworICB4ZW5f c3RhdGUubWF4X2FkZHIgPSBBTElHTl9VUCAoeGVuX3N0YXRlLm1heF9hZGRyICsgcDJtc2l6ZSwg UEFHRV9TSVpFKTsKKworICByZXR1cm4gR1JVQl9FUlJfTk9ORTsKK30KKworc3RhdGljIGdydWJf ZXJyX3QKIGdydWJfeGVuX2Jvb3QgKHZvaWQpCiB7Ci0gIHN0cnVjdCBncnViX3JlbG9jYXRvcl94 ZW5fc3RhdGUgc3RhdGU7CiAgIGdydWJfcmVsb2NhdG9yX2NodW5rX3QgY2g7CiAgIGdydWJfZXJy X3QgZXJyOwotICBncnViX3NpemVfdCBwZ3RzaXplOwogICBzdHJ1Y3Qgc3RhcnRfaW5mbyAqbnN0 OwogICBncnViX3VpbnQ2NF90IG5yX2luZm9fcGFnZXM7CiAgIGdydWJfdWludDY0X3QgbnJfcGFn ZXMsIG5yX3B0X3BhZ2VzLCBucl9uZWVkX3BhZ2VzOwogICBzdHJ1Y3QgZ250dGFiX3NldF92ZXJz aW9uIGdudHRhYl9zZXR2ZXI7Ci0gIGdydWJfeGVuX21mbl90ICpuZXdfbWZuX2xpc3Q7CiAgIGdy dWJfc2l6ZV90IGk7CiAKICAgaWYgKGdydWJfeGVuX25fYWxsb2NhdGVkX3NoYXJlZF9wYWdlcykK ICAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQlVHLCAiYWN0aXZlIGdyYW50cyIpOwog Ci0gIHN0YXRlLm1mbl9saXN0ID0geGVuX3N0YXRlLm1heF9hZGRyOwotICB4ZW5fc3RhdGUubmV4 dF9zdGFydC5tZm5fbGlzdCA9Ci0gICAgeGVuX3N0YXRlLm1heF9hZGRyICsgeGVuX3N0YXRlLnhl bl9pbmYudmlydF9iYXNlOwotICB4ZW5fc3RhdGUubmV4dF9zdGFydC5maXJzdF9wMm1fcGZuID0g eGVuX3N0YXRlLm1heF9hZGRyID4+IFBBR0VfU0hJRlQ7Ci0gIHBndHNpemUgPSBzaXplb2YgKGdy dWJfeGVuX21mbl90KSAqIGdydWJfeGVuX3N0YXJ0X3BhZ2VfYWRkci0+bnJfcGFnZXM7Ci0gIGVy ciA9IGdydWJfcmVsb2NhdG9yX2FsbG9jX2NodW5rX2FkZHIgKHhlbl9zdGF0ZS5yZWxvY2F0b3Is ICZjaCwKLQkJCQkJIHhlbl9zdGF0ZS5tYXhfYWRkciwgcGd0c2l6ZSk7Ci0gIHhlbl9zdGF0ZS5u ZXh0X3N0YXJ0Lm5yX3AybV9mcmFtZXMgPSAocGd0c2l6ZSArIFBBR0VfU0laRSAtIDEpID4+IFBB R0VfU0hJRlQ7CisgIGVyciA9IGdydWJfeGVuX3AybV9hbGxvYyAoKTsKICAgaWYgKGVycikKICAg ICByZXR1cm4gZXJyOwotICBuZXdfbWZuX2xpc3QgPSBnZXRfdmlydHVhbF9jdXJyZW50X2FkZHJl c3MgKGNoKTsKLSAgZ3J1Yl9tZW1jcHkgKG5ld19tZm5fbGlzdCwKLQkgICAgICAgKHZvaWQgKikg Z3J1Yl94ZW5fc3RhcnRfcGFnZV9hZGRyLT5tZm5fbGlzdCwgcGd0c2l6ZSk7Ci0gIHhlbl9zdGF0 ZS5tYXhfYWRkciA9IEFMSUdOX1VQICh4ZW5fc3RhdGUubWF4X2FkZHIgKyBwZ3RzaXplLCBQQUdF X1NJWkUpOwogCiAgIGVyciA9IGdydWJfcmVsb2NhdG9yX2FsbG9jX2NodW5rX2FkZHIgKHhlbl9z dGF0ZS5yZWxvY2F0b3IsICZjaCwKIAkJCQkJIHhlbl9zdGF0ZS5tYXhfYWRkciwKIAkJCQkJIHNp emVvZiAoeGVuX3N0YXRlLm5leHRfc3RhcnQpKTsKICAgaWYgKGVycikKICAgICByZXR1cm4gZXJy OwotICBzdGF0ZS5zdGFydF9pbmZvID0geGVuX3N0YXRlLm1heF9hZGRyICsgeGVuX3N0YXRlLnhl bl9pbmYudmlydF9iYXNlOworICB4ZW5fc3RhdGUuc3RhdGUuc3RhcnRfaW5mbyA9IHhlbl9zdGF0 ZS5tYXhfYWRkciArIHhlbl9zdGF0ZS54ZW5faW5mLnZpcnRfYmFzZTsKICAgbnN0ID0gZ2V0X3Zp cnR1YWxfY3VycmVudF9hZGRyZXNzIChjaCk7CiAgIHhlbl9zdGF0ZS5tYXhfYWRkciA9CiAgICAg QUxJR05fVVAgKHhlbl9zdGF0ZS5tYXhfYWRkciArIHNpemVvZiAoeGVuX3N0YXRlLm5leHRfc3Rh cnQpLCBQQUdFX1NJWkUpOwpAQCAtMjYyLDE0ICsyNzUsMTQgQEAgZ3J1Yl94ZW5fYm9vdCAodm9p ZCkKICAgeGVuX3N0YXRlLm5leHRfc3RhcnQuY29uc29sZS5kb21VID0gZ3J1Yl94ZW5fc3RhcnRf cGFnZV9hZGRyLT5jb25zb2xlLmRvbVU7CiAgIHhlbl9zdGF0ZS5uZXh0X3N0YXJ0LnNoYXJlZF9p bmZvID0gZ3J1Yl94ZW5fc3RhcnRfcGFnZV9hZGRyLT5zaGFyZWRfaW5mbzsKIAotICBlcnIgPSBz ZXRfbWZucyAobmV3X21mbl9saXN0LCB4ZW5fc3RhdGUubWF4X2FkZHIgPj4gUEFHRV9TSElGVCk7 CisgIGVyciA9IHNldF9tZm5zICh4ZW5fc3RhdGUubWF4X2FkZHIgPj4gUEFHRV9TSElGVCk7CiAg IGlmIChlcnIpCiAgICAgcmV0dXJuIGVycjsKICAgeGVuX3N0YXRlLm1heF9hZGRyICs9IDIgKiBQ QUdFX1NJWkU7CiAKICAgeGVuX3N0YXRlLm5leHRfc3RhcnQucHRfYmFzZSA9CiAgICAgeGVuX3N0 YXRlLm1heF9hZGRyICsgeGVuX3N0YXRlLnhlbl9pbmYudmlydF9iYXNlOwotICBzdGF0ZS5wYWdp bmdfc3RhcnQgPSB4ZW5fc3RhdGUubWF4X2FkZHIgPj4gUEFHRV9TSElGVDsKKyAgeGVuX3N0YXRl LnN0YXRlLnBhZ2luZ19zdGFydCA9IHhlbl9zdGF0ZS5tYXhfYWRkciA+PiBQQUdFX1NISUZUOwog CiAgIG5yX2luZm9fcGFnZXMgPSB4ZW5fc3RhdGUubWF4X2FkZHIgPj4gUEFHRV9TSElGVDsKICAg bnJfcGFnZXMgPSBucl9pbmZvX3BhZ2VzOwpAQCAtMjk4LDE1ICszMTEsMTUgQEAgZ3J1Yl94ZW5f Ym9vdCAodm9pZCkKIAogICBnZW5lcmF0ZV9wYWdlX3RhYmxlIChnZXRfdmlydHVhbF9jdXJyZW50 X2FkZHJlc3MgKGNoKSwKIAkJICAgICAgIHhlbl9zdGF0ZS5tYXhfYWRkciA+PiBQQUdFX1NISUZU LCBucl9wYWdlcywKLQkJICAgICAgIHhlbl9zdGF0ZS54ZW5faW5mLnZpcnRfYmFzZSwgbmV3X21m bl9saXN0KTsKKwkJICAgICAgIHhlbl9zdGF0ZS54ZW5faW5mLnZpcnRfYmFzZSwgeGVuX3N0YXRl LnZpcnRfbWZuX2xpc3QpOwogCiAgIHhlbl9zdGF0ZS5tYXhfYWRkciArPSBwYWdlMm9mZnNldCAo bnJfcHRfcGFnZXMpOwotICBzdGF0ZS5zdGFjayA9IHhlbl9zdGF0ZS5tYXhfYWRkciArIFNUQUNL X1NJWkUgKyB4ZW5fc3RhdGUueGVuX2luZi52aXJ0X2Jhc2U7Ci0gIHN0YXRlLmVudHJ5X3BvaW50 ID0geGVuX3N0YXRlLnhlbl9pbmYuZW50cnlfcG9pbnQ7CisgIHhlbl9zdGF0ZS5zdGF0ZS5zdGFj ayA9CisgICAgeGVuX3N0YXRlLm1heF9hZGRyICsgU1RBQ0tfU0laRSArIHhlbl9zdGF0ZS54ZW5f aW5mLnZpcnRfYmFzZTsKKyAgeGVuX3N0YXRlLnN0YXRlLmVudHJ5X3BvaW50ID0geGVuX3N0YXRl Lnhlbl9pbmYuZW50cnlfcG9pbnQ7CiAKLSAgeGVuX3N0YXRlLm5leHRfc3RhcnQubnJfcDJtX2Zy YW1lcyArPSBucl9wdF9wYWdlczsKICAgeGVuX3N0YXRlLm5leHRfc3RhcnQubnJfcHRfZnJhbWVz ID0gbnJfcHRfcGFnZXM7Ci0gIHN0YXRlLnBhZ2luZ19zaXplID0gbnJfcHRfcGFnZXM7CisgIHhl bl9zdGF0ZS5zdGF0ZS5wYWdpbmdfc2l6ZSA9IG5yX3B0X3BhZ2VzOwogCiAgICpuc3QgPSB4ZW5f c3RhdGUubmV4dF9zdGFydDsKIApAQCAtMzE4LDcgKzMzMSw3IEBAIGdydWJfeGVuX2Jvb3QgKHZv aWQpCiAgIGZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFIChncnViX3hlbl9zaGFyZWRfaW5mby0+ ZXZ0Y2huX3BlbmRpbmcpOyBpKyspCiAgICAgZ3J1Yl94ZW5fc2hhcmVkX2luZm8tPmV2dGNobl9w ZW5kaW5nW2ldID0gMDsKIAotICByZXR1cm4gZ3J1Yl9yZWxvY2F0b3JfeGVuX2Jvb3QgKHhlbl9z dGF0ZS5yZWxvY2F0b3IsIHN0YXRlLCBucl9wYWdlcywKKyAgcmV0dXJuIGdydWJfcmVsb2NhdG9y X3hlbl9ib290ICh4ZW5fc3RhdGUucmVsb2NhdG9yLCB4ZW5fc3RhdGUuc3RhdGUsIG5yX3BhZ2Vz LAogCQkJCSAgeGVuX3N0YXRlLnhlbl9pbmYudmlydF9iYXNlIDwKIAkJCQkgIFBBR0VfU0laRSA/ IHBhZ2Uyb2Zmc2V0IChucl9wYWdlcykgOiAwLAogCQkJCSAgbnJfcGFnZXMgLSAxLAotLSAKMi42 LjIKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4t ZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54 ZW4ub3JnL3hlbi1kZXZlbAo=