From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Grytsov Subject: [PATCH v5 03/12] libxl: add vdispl device Date: Mon, 11 Sep 2017 20:14:53 +0300 Message-ID: <1505150102-30806-4-git-send-email-al1img@gmail.com> References: <1505150102-30806-1-git-send-email-al1img@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1drSIu-0001tT-60 for xen-devel@lists.xenproject.org; Mon, 11 Sep 2017 17:15:24 +0000 Received: by mail-lf0-f66.google.com with SMTP id q132so4222797lfe.4 for ; Mon, 11 Sep 2017 10:15:22 -0700 (PDT) In-Reply-To: <1505150102-30806-1-git-send-email-al1img@gmail.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 Cc: ian.jackson@eu.citrix.com, wei.liu2@citrix.com, Oleksandr Grytsov List-Id: xen-devel@lists.xenproject.org RnJvbTogT2xla3NhbmRyIEdyeXRzb3YgPG9sZWtzYW5kcl9ncnl0c292QGVwYW0uY29tPgoKU2ln bmVkLW9mZi1ieTogT2xla3NhbmRyIEdyeXRzb3YgPG9sZWtzYW5kcl9ncnl0c292QGVwYW0uY29t PgotLS0KIHRvb2xzL2xpYnhsL01ha2VmaWxlICAgICAgICAgICAgICAgICB8ICAgMiArLQogdG9v bHMvbGlieGwvbGlieGwuaCAgICAgICAgICAgICAgICAgIHwgIDI0ICsrKwogdG9vbHMvbGlieGwv bGlieGxfY3JlYXRlLmMgICAgICAgICAgIHwgICAxICsKIHRvb2xzL2xpYnhsL2xpYnhsX2ludGVy bmFsLmggICAgICAgICB8ICAgMSArCiB0b29scy9saWJ4bC9saWJ4bF90eXBlcy5pZGwgICAgICAg ICAgfCAgMzYgKysrKysKIHRvb2xzL2xpYnhsL2xpYnhsX3R5cGVzX2ludGVybmFsLmlkbCB8ICAg MSArCiB0b29scy9saWJ4bC9saWJ4bF91dGlscy5oICAgICAgICAgICAgfCAgIDQgKwogdG9vbHMv bGlieGwvbGlieGxfdmRpc3BsLmMgICAgICAgICAgIHwgMjg0ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrCiA4IGZpbGVzIGNoYW5nZWQsIDM1MiBpbnNlcnRpb25zKCspLCAxIGRl bGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgdG9vbHMvbGlieGwvbGlieGxfdmRpc3BsLmMK CmRpZmYgLS1naXQgYS90b29scy9saWJ4bC9NYWtlZmlsZSBiL3Rvb2xzL2xpYnhsL01ha2VmaWxl CmluZGV4IDA4MmFmOGYuLjU2ZjkwZTEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhsL01ha2VmaWxl CisrKyBiL3Rvb2xzL2xpYnhsL01ha2VmaWxlCkBAIC0xMzgsNyArMTM4LDcgQEAgTElCWExfT0JK UyA9IGZsZXhhcnJheS5vIGxpYnhsLm8gbGlieGxfY3JlYXRlLm8gbGlieGxfZG0ubyBsaWJ4bF9w Y2kubyBcCiAJCQlsaWJ4bF9kb21fc3VzcGVuZC5vIGxpYnhsX2RvbV9zYXZlLm8gbGlieGxfdXNi Lm8gXAogCQkJbGlieGxfdnRwbS5vIGxpYnhsX25pYy5vIGxpYnhsX2Rpc2subyBsaWJ4bF9jb25z b2xlLm8gXAogCQkJbGlieGxfY3B1cG9vbC5vIGxpYnhsX21lbS5vIGxpYnhsX3NjaGVkLm8gbGli eGxfdG1lbS5vIFwKLQkJCWxpYnhsXzlwZnMubyBsaWJ4bF9kb21haW4ubyBcCisJCQlsaWJ4bF85 cGZzLm8gbGlieGxfZG9tYWluLm8gbGlieGxfdmRpc3BsLm8gXAogICAgICAgICAgICAgICAgICAg ICAgICAgJChMSUJYTF9PQkpTLXkpCiBMSUJYTF9PQkpTICs9IGxpYnhsX2dlbmlkLm8KIExJQlhM X09CSlMgKz0gX2xpYnhsX3R5cGVzLm8gbGlieGxfZmxhc2subyBfbGlieGxfdHlwZXNfaW50ZXJu YWwubwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGwuaCBiL3Rvb2xzL2xpYnhsL2xpYnhs LmgKaW5kZXggODEyYjdlYS4uZTM4NjM1NyAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwvbGlieGwu aAorKysgYi90b29scy9saWJ4bC9saWJ4bC5oCkBAIC0xODc3LDYgKzE4NzcsMzAgQEAgbGlieGxf ZGV2aWNlX3Z0cG0gKmxpYnhsX2RldmljZV92dHBtX2xpc3QobGlieGxfY3R4ICpjdHgsIHVpbnQz Ml90IGRvbWlkLCBpbnQgKm4KIGludCBsaWJ4bF9kZXZpY2VfdnRwbV9nZXRpbmZvKGxpYnhsX2N0 eCAqY3R4LCB1aW50MzJfdCBkb21pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs aWJ4bF9kZXZpY2VfdnRwbSAqdnRwbSwgbGlieGxfdnRwbWluZm8gKnZ0cG1pbmZvKTsKIAorLyog VmlydHVhbCBkaXNwbGF5cyAqLworaW50IGxpYnhsX2RldmljZV92ZGlzcGxfYWRkKGxpYnhsX2N0 eCAqY3R4LCB1aW50MzJfdCBkb21pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4 bF9kZXZpY2VfdmRpc3BsICpkaXNwbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBsaWJ4bF9hc3luY29wX2hvdyAqYW9faG93KQorICAgICAgICAgICAgICAgICAgICAgICAgICAg IExJQlhMX0VYVEVSTkFMX0NBTExFUlNfT05MWTsKK2ludCBsaWJ4bF9kZXZpY2VfdmRpc3BsX3Jl bW92ZShsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbGlieGxfZGV2aWNlX3ZkaXNwbCAqdmRpc3BsLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IGxpYnhsX2FzeW5jb3BfaG93ICphb19ob3cpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTElCWExfRVhURVJOQUxfQ0FMTEVSU19PTkxZOworaW50 IGxpYnhsX2RldmljZV92ZGlzcGxfZGVzdHJveShsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9t aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX2RldmljZV92ZGlzcGwg KnZkaXNwbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGlieGxfYXN5 bmNvcF9ob3cgKmFvX2hvdykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCWExf RVhURVJOQUxfQ0FMTEVSU19PTkxZOworCitsaWJ4bF9kZXZpY2VfdmRpc3BsICpsaWJ4bF9kZXZp Y2VfdmRpc3BsX2xpc3QobGlieGxfY3R4ICpjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZG9taWQsIGludCAqbnVtKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJQlhMX0VYVEVSTkFMX0NBTExF UlNfT05MWTsKK3ZvaWQgbGlieGxfZGV2aWNlX3ZkaXNwbF9saXN0X2ZyZWUobGlieGxfZGV2aWNl X3ZkaXNwbCogbGlzdCwgaW50IG51bSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTElCWExfRVhURVJOQUxfQ0FMTEVSU19PTkxZOworaW50IGxpYnhsX2RldmljZV92ZGlzcGxf Z2V0aW5mbyhsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGxpYnhsX2RldmljZV92ZGlzcGwgKnZkaXNwbCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbGlieGxfdmRpc3BsaW5mbyAqdmRpc3BsaW5mbykKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCWExfRVhURVJOQUxfQ0FMTEVSU19PTkxZOwor CiAvKiBLZXlib2FyZCAqLwogaW50IGxpYnhsX2RldmljZV92a2JfYWRkKGxpYnhsX2N0eCAqY3R4 LCB1aW50MzJfdCBkb21pZCwgbGlieGxfZGV2aWNlX3ZrYiAqdmtiLAogICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IGxpYnhsX2FzeW5jb3BfaG93ICphb19ob3cpCmRpZmYgLS1naXQgYS90 b29scy9saWJ4bC9saWJ4bF9jcmVhdGUuYyBiL3Rvb2xzL2xpYnhsL2xpYnhsX2NyZWF0ZS5jCmlu ZGV4IGVmZDE0NTkuLmYyMGJiZjkgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhsX2NyZWF0 ZS5jCisrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsX2NyZWF0ZS5jCkBAIC0xNDQ2LDYgKzE0NDYsNyBA QCBjb25zdCBzdHJ1Y3QgbGlieGxfZGV2aWNlX3R5cGUgKmRldmljZV90eXBlX3RibFtdID0gewog ICAgICZsaWJ4bF9fdXNiZGV2X2RldnR5cGUsCiAgICAgJmxpYnhsX19wY2lkZXZfZGV2dHlwZSwK ICAgICAmbGlieGxfX2R0ZGV2X2RldnR5cGUsCisgICAgJmxpYnhsX192ZGlzcGxfZGV2dHlwZSwK ICAgICBOVUxMCiB9OwogCmRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4bF9pbnRlcm5hbC5o IGIvdG9vbHMvbGlieGwvbGlieGxfaW50ZXJuYWwuaAppbmRleCBjOTRhMTE3Li5jNmY1ODY4IDEw MDY0NAotLS0gYS90b29scy9saWJ4bC9saWJ4bF9pbnRlcm5hbC5oCisrKyBiL3Rvb2xzL2xpYnhs L2xpYnhsX2ludGVybmFsLmgKQEAgLTM1NjMsNiArMzU2Myw3IEBAIGV4dGVybiBjb25zdCBzdHJ1 Y3QgbGlieGxfZGV2aWNlX3R5cGUgbGlieGxfX3Z0cG1fZGV2dHlwZTsKIGV4dGVybiBjb25zdCBz dHJ1Y3QgbGlieGxfZGV2aWNlX3R5cGUgbGlieGxfX3VzYmN0cmxfZGV2dHlwZTsKIGV4dGVybiBj b25zdCBzdHJ1Y3QgbGlieGxfZGV2aWNlX3R5cGUgbGlieGxfX3VzYmRldl9kZXZ0eXBlOwogZXh0 ZXJuIGNvbnN0IHN0cnVjdCBsaWJ4bF9kZXZpY2VfdHlwZSBsaWJ4bF9fcGNpZGV2X2RldnR5cGU7 CitleHRlcm4gY29uc3Qgc3RydWN0IGxpYnhsX2RldmljZV90eXBlIGxpYnhsX192ZGlzcGxfZGV2 dHlwZTsKIAogZXh0ZXJuIGNvbnN0IHN0cnVjdCBsaWJ4bF9kZXZpY2VfdHlwZSAqZGV2aWNlX3R5 cGVfdGJsW107CiAKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsX3R5cGVzLmlkbCBiL3Rv b2xzL2xpYnhsL2xpYnhsX3R5cGVzLmlkbAppbmRleCAxNzNkNzBhLi43NTZlMTIwIDEwMDY0NAot LS0gYS90b29scy9saWJ4bC9saWJ4bF90eXBlcy5pZGwKKysrIGIvdG9vbHMvbGlieGwvbGlieGxf dHlwZXMuaWRsCkBAIC03NzksNiArNzc5LDIwIEBAIGxpYnhsX2RldmljZV9jaGFubmVsID0gU3Ry dWN0KCJkZXZpY2VfY2hhbm5lbCIsIFsKICAgICAgICAgICAgXSkpLAogXSkKIAorbGlieGxfY29u bmVjdG9yX3BhcmFtID0gU3RydWN0KCJjb25uZWN0b3JfcGFyYW0iLCBbCisgICAgKCJpZCIsIHN0 cmluZyksCisgICAgKCJ3aWR0aCIsIHVpbnQzMiksCisgICAgKCJoZWlnaHQiLCB1aW50MzIpCisg ICAgXSkKKworbGlieGxfZGV2aWNlX3ZkaXNwbCA9IFN0cnVjdCgiZGV2aWNlX3ZkaXNwbCIsIFsK KyAgICAoImJhY2tlbmRfZG9taWQiLCBsaWJ4bF9kb21pZCksCisgICAgKCJiYWNrZW5kX2RvbW5h bWUiLCBzdHJpbmcpLAorICAgICgiZGV2aWQiLCBsaWJ4bF9kZXZpZCksCisgICAgKCJiZV9hbGxv YyIsIGJvb2wpLAorICAgICgiY29ubmVjdG9ycyIsIEFycmF5KGxpYnhsX2Nvbm5lY3Rvcl9wYXJh bSwgIm51bV9jb25uZWN0b3JzIikpCisgICAgXSkKKwogbGlieGxfZG9tYWluX2NvbmZpZyA9IFN0 cnVjdCgiZG9tYWluX2NvbmZpZyIsIFsKICAgICAoImNfaW5mbyIsIGxpYnhsX2RvbWFpbl9jcmVh dGVfaW5mbyksCiAgICAgKCJiX2luZm8iLCBsaWJ4bF9kb21haW5fYnVpbGRfaW5mbyksCkBAIC03 OTIsNiArODA2LDcgQEAgbGlieGxfZG9tYWluX2NvbmZpZyA9IFN0cnVjdCgiZG9tYWluX2NvbmZp ZyIsIFsKICAgICAoInZrYnMiLCBBcnJheShsaWJ4bF9kZXZpY2VfdmtiLCAibnVtX3ZrYnMiKSks CiAgICAgKCJ2dHBtcyIsIEFycmF5KGxpYnhsX2RldmljZV92dHBtLCAibnVtX3Z0cG1zIikpLAog ICAgICgicDlzIiwgQXJyYXkobGlieGxfZGV2aWNlX3A5LCAibnVtX3A5cyIpKSwKKyAgICAoInZk aXNwbHMiLCBBcnJheShsaWJ4bF9kZXZpY2VfdmRpc3BsLCAibnVtX3ZkaXNwbHMiKSksCiAgICAg IyBhIGNoYW5uZWwgbWFuaWZlc3RzIGFzIGEgY29uc29sZSB3aXRoIGEgbmFtZSwKICAgICAjIHNl ZSBkb2NzL21pc2MvY2hhbm5lbHMudHh0CiAgICAgKCJjaGFubmVscyIsIEFycmF5KGxpYnhsX2Rl dmljZV9jaGFubmVsLCAibnVtX2NoYW5uZWxzIikpLApAQCAtODg4LDYgKzkwMywyNyBAQCBsaWJ4 bF9waHlzaW5mbyA9IFN0cnVjdCgicGh5c2luZm8iLCBbCiAgICAgKCJjYXBfaHZtX2RpcmVjdGlv IiwgYm9vbCksCiAgICAgXSwgZGlyPURJUl9PVVQpCiAKK2xpYnhsX2Nvbm5lY3RvcmluZm8gPSBT dHJ1Y3QoImNvbm5lY3RvcmluZm8iLCBbCisgICAgKCJpZCIsIHN0cmluZyksCisgICAgKCJ3aWR0 aCIsIHVpbnQzMiksCisgICAgKCJoZWlnaHQiLCB1aW50MzIpLAorICAgICgicmVxX2V2dGNoIiwg aW50ZWdlciksCisgICAgKCJyZXFfcnJlZiIsIGludGVnZXIpLAorICAgICgiZXZ0X2V2dGNoIiwg aW50ZWdlciksCisgICAgKCJldnRfcnJlZiIsIGludGVnZXIpLAorICAgIF0sIGRpcj1ESVJfT1VU KQorCitsaWJ4bF92ZGlzcGxpbmZvID0gU3RydWN0KCJ2ZGlzcGxpbmZvIiwgWworICAgICgiYmFj a2VuZCIsIHN0cmluZyksCisgICAgKCJiYWNrZW5kX2lkIiwgdWludDMyKSwKKyAgICAoImZyb250 ZW5kIiwgc3RyaW5nKSwKKyAgICAoImZyb250ZW5kX2lkIiwgdWludDMyKSwKKyAgICAoImRldmlk IiwgbGlieGxfZGV2aWQpLAorICAgICgic3RhdGUiLCBpbnRlZ2VyKSwKKyAgICAoImJlX2FsbG9j IiwgYm9vbCksCisgICAgKCJjb25uZWN0b3JzIiwgQXJyYXkobGlieGxfY29ubmVjdG9yaW5mbywg Im51bV9jb25uZWN0b3JzIikpCisgICAgXSwgZGlyPURJUl9PVVQpCisKICMgTlVNQSBub2RlIGNo YXJhY3RlcmlzdGljczogc2l6ZSBhbmQgZnJlZSBhcmUgaG93IG11Y2ggbWVtb3J5IGl0IGhhcywg YW5kIGhvdwogIyBtdWNoIG9mIGl0IGlzIGZyZWUsIHJlc3BlY3RpdmVseS4gZGlzdHMgaXMgYW4g YXJyYXkgb2YgZGlzdGFuY2VzIGZyb20gdGhpcwogIyBub2RlIHRvIGVhY2ggb3RoZXIgbm9kZS4K ZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsX3R5cGVzX2ludGVybmFsLmlkbCBiL3Rvb2xz L2xpYnhsL2xpYnhsX3R5cGVzX2ludGVybmFsLmlkbAppbmRleCA3ZGM0ZDBmLi42NzNhNmQ1IDEw MDY0NAotLS0gYS90b29scy9saWJ4bC9saWJ4bF90eXBlc19pbnRlcm5hbC5pZGwKKysrIGIvdG9v bHMvbGlieGwvbGlieGxfdHlwZXNfaW50ZXJuYWwuaWRsCkBAIC0yNiw2ICsyNiw3IEBAIGxpYnhs X19kZXZpY2Vfa2luZCA9IEVudW1lcmF0aW9uKCJkZXZpY2Vfa2luZCIsIFsKICAgICAoOSwgIlZV U0IiKSwKICAgICAoMTAsICJRVVNCIiksCiAgICAgKDExLCAiOVBGUyIpLAorICAgICgxMiwgIlZE SVNQTCIpLAogICAgIF0pCiAKIGxpYnhsX19jb25zb2xlX2JhY2tlbmQgPSBFbnVtZXJhdGlvbigi Y29uc29sZV9iYWNrZW5kIiwgWwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGxfdXRpbHMu aCBiL3Rvb2xzL2xpYnhsL2xpYnhsX3V0aWxzLmgKaW5kZXggMjU3NzNkOC4uOWU3NDNkYyAxMDA2 NDQKLS0tIGEvdG9vbHMvbGlieGwvbGlieGxfdXRpbHMuaAorKysgYi90b29scy9saWJ4bC9saWJ4 bF91dGlscy5oCkBAIC03OCw2ICs3OCwxMCBAQCBpbnQgbGlieGxfZGV2aWRfdG9fZGV2aWNlX3Z0 cG0obGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGludCBkZXZpZCwgbGlieGxfZGV2aWNlX3Z0cG0gKnZ0cG0pOwogaW50IGxpYnhs X2RldmlkX3RvX2RldmljZV91c2JjdHJsKGxpYnhsX2N0eCAqY3R4LCB1aW50MzJfdCBkb21pZCwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGV2aWQsIGxpYnhsX2Rldmlj ZV91c2JjdHJsICp1c2JjdHJsKTsKKworaW50IGxpYnhsX2RldmlkX3RvX2RldmljZV92ZGlzcGwo bGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW50IGRldmlkLCBsaWJ4bF9kZXZpY2VfdmRpc3BsICp2ZGlzcGwpOworCiBpbnQg bGlieGxfY3RybHBvcnRfdG9fZGV2aWNlX3VzYmRldihsaWJ4bF9jdHggKmN0eCwgdWludDMyX3Qg ZG9taWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY3RybCwgaW50 IHBvcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9kZXZpY2Vf dXNiZGV2ICp1c2JkZXYpOwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGxfdmRpc3BsLmMg Yi90b29scy9saWJ4bC9saWJ4bF92ZGlzcGwuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi41NzQwYzg5Ci0tLSAvZGV2L251bGwKKysrIGIvdG9vbHMvbGlieGwvbGlieGxfdmRp c3BsLmMKQEAgLTAsMCArMSwyODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgRVBBTSBT eXN0ZW1zIEluYy4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCisgKiBi eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB2ZXJzaW9uIDIuMSBvbmx5LiB3aXRoIHRo ZSBzcGVjaWFsCisgKiBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gZmlsZSBMSUNF TlNFLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBMZXNzZXIgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICovCisKKyNpbmNsdWRlICJs aWJ4bF9pbnRlcm5hbC5oIgorCitzdGF0aWMgaW50IGxpYnhsX19kZXZpY2VfdmRpc3BsX3NldGRl ZmF1bHQobGlieGxfX2djICpnYywgdWludDMyX3QgZG9taWQsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfZGV2aWNlX3ZkaXNwbCAqdmRpc3BsLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaG90cGx1ZykKK3sK KyAgICByZXR1cm4gbGlieGxfX3Jlc29sdmVfZG9taWQoZ2MsIHZkaXNwbC0+YmFja2VuZF9kb21u YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdmRpc3BsLT5iYWNrZW5kX2Rv bWlkKTsKK30KKworc3RhdGljIGludCBsaWJ4bF9fZGV2aWNlX2Zyb21fdmRpc3BsKGxpYnhsX19n YyAqZ2MsIHVpbnQzMl90IGRvbWlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGxpYnhsX2RldmljZV92ZGlzcGwgKnZkaXNwbCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBsaWJ4bF9fZGV2aWNlICpkZXZpY2UpCit7CisgICBkZXZpY2UtPmJhY2tl bmRfZGV2aWQgICA9IHZkaXNwbC0+ZGV2aWQ7CisgICBkZXZpY2UtPmJhY2tlbmRfZG9taWQgICA9 IHZkaXNwbC0+YmFja2VuZF9kb21pZDsKKyAgIGRldmljZS0+YmFja2VuZF9raW5kICAgID0gTElC WExfX0RFVklDRV9LSU5EX1ZESVNQTDsKKyAgIGRldmljZS0+ZGV2aWQgICAgICAgICAgID0gdmRp c3BsLT5kZXZpZDsKKyAgIGRldmljZS0+ZG9taWQgICAgICAgICAgID0gZG9taWQ7CisgICBkZXZp Y2UtPmtpbmQgICAgICAgICAgICA9IExJQlhMX19ERVZJQ0VfS0lORF9WRElTUEw7CisKKyAgIHJl dHVybiAwOworfQorCitzdGF0aWMgaW50IGxpYnhsX192ZGlzcGxfZnJvbV94ZW5zdG9yZShsaWJ4 bF9fZ2MgKmdjLCBjb25zdCBjaGFyICpsaWJ4bF9wYXRoLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbGlieGxfZGV2aWQgZGV2aWQsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBsaWJ4bF9kZXZpY2VfdmRpc3BsICp2ZGlzcGwpCit7CisgICAg Y2hhciAqYmVfcGF0aDsKKworICAgIHZkaXNwbC0+ZGV2aWQgPSBkZXZpZDsKKyAgICBiZV9wYXRo ID0gbGlieGxfX3hzX3JlYWQoZ2MsIFhCVF9OVUxMLCBHQ1NQUklOVEYoIiVzL2JhY2tlbmQiLCBs aWJ4bF9wYXRoKSk7CisKKyAgICByZXR1cm4gbGlieGxfX2JhY2tlbmRwYXRoX3BhcnNlX2RvbWlk KGdjLCBiZV9wYXRoLCAmdmRpc3BsLT5iYWNrZW5kX2RvbWlkKTsKK30KKworc3RhdGljIHZvaWQg bGlieGxfX3VwZGF0ZV9jb25maWdfdmRpc3BsKGxpYnhsX19nYyAqZ2MsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfZGV2aWNlX3ZkaXNwbCAqZHN0LAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX2RldmljZV92ZGlzcGwg KnNyYykKK3sKKyAgICBkc3QtPmRldmlkID0gc3JjLT5kZXZpZDsKKyAgICBkc3QtPmJlX2FsbG9j ID0gc3JjLT5iZV9hbGxvYzsKK30KKworc3RhdGljIGludCBsaWJ4bF9kZXZpY2VfdmRpc3BsX2Nv bXBhcmUobGlieGxfZGV2aWNlX3ZkaXNwbCAqZDEsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBsaWJ4bF9kZXZpY2VfdmRpc3BsICpkMikKK3sKKyAgICByZXR1cm4gQ09N UEFSRV9ERVZJRChkMSwgZDIpOworfQorCitzdGF0aWMgdm9pZCBsaWJ4bF9fZGV2aWNlX3ZkaXNw bF9hZGQobGlieGxfX2VnYyAqZWdjLCB1aW50MzJfdCBkb21pZCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBsaWJ4bF9kZXZpY2VfdmRpc3BsICp2ZGlzcGwsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfX2FvX2RldmljZSAqYW9kZXYpCit7 CisgICAgbGlieGxfX2RldmljZV9hZGRfYXN5bmMoZWdjLCBkb21pZCwgJmxpYnhsX192ZGlzcGxf ZGV2dHlwZSwgdmRpc3BsLCBhb2Rldik7Cit9CisKK3N0YXRpYyBpbnQgbGlieGxfX3NldF94ZW5z dG9yZV92ZGlzcGwobGlieGxfX2djICpnYywgdWludDMyX3QgZG9taWQsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX2RldmljZV92ZGlzcGwgKnZkaXNwbCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleGFycmF5X3QgKmJhY2ssIGZs ZXhhcnJheV90ICpmcm9udCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZmxleGFycmF5X3QgKnJvX2Zyb250KQoreworICAgIGludCBpOworCisgICAgZmxleGFycmF5X2Fw cGVuZF9wYWlyKHJvX2Zyb250LCAiYmUtYWxsb2MiLAorICAgICAgICAgICAgICAgICAgICAgICAg ICBHQ1NQUklOVEYoIiVkIiwgdmRpc3BsLT5iZV9hbGxvYykpOworCisgICAgZm9yIChpID0gMDsg aSA8IHZkaXNwbC0+bnVtX2Nvbm5lY3RvcnM7IGkrKykgeworICAgICAgICBmbGV4YXJyYXlfYXBw ZW5kX3BhaXIocm9fZnJvbnQsIEdDU1BSSU5URigiJWQvcmVzb2x1dGlvbiIsIGkpLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgR0NTUFJJTlRGKCIlZHglZCIsIHZkaXNwbC0+Y29ubmVj dG9yc1tpXS53aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB2ZGlzcGwtPmNvbm5lY3RvcnNbaV0uaGVpZ2h0KSk7CisgICAgICAgIGZsZXhhcnJh eV9hcHBlbmRfcGFpcihyb19mcm9udCwgR0NTUFJJTlRGKCIlZC9pZCIsIGkpLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdmRpc3BsLT5jb25uZWN0b3JzW2ldLmlkKTsKKyAgICB9CisK KyAgICByZXR1cm4gMDsKK30KKworbGlieGxfZGV2aWNlX3ZkaXNwbCAqbGlieGxfZGV2aWNlX3Zk aXNwbF9saXN0KGxpYnhsX2N0eCAqY3R4LCB1aW50MzJfdCBkb21pZCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKm51bSkKK3sKKyAgICBsaWJ4bF9k ZXZpY2VfdmRpc3BsICpyOworCisgICAgR0NfSU5JVChjdHgpOworCisgICAgciA9IGxpYnhsX19k ZXZpY2VfbGlzdChnYywgJmxpYnhsX192ZGlzcGxfZGV2dHlwZSwgZG9taWQsICJ2ZGlzcGwiLCBu dW0pOworCisgICAgR0NfRlJFRTsKKworICAgIHJldHVybiByOworfQorCit2b2lkIGxpYnhsX2Rl dmljZV92ZGlzcGxfbGlzdF9mcmVlKGxpYnhsX2RldmljZV92ZGlzcGwqIGxpc3QsIGludCBudW0p Cit7CisgICAgbGlieGxfX2RldmljZV9saXN0X2ZyZWUoJmxpYnhsX192ZGlzcGxfZGV2dHlwZSwg bGlzdCwgbnVtKTsKK30KKworc3RhdGljIGludCBsaWJ4bF9fZGV2aWNlX3ZkaXNwbF9nZXRjb25u ZWN0b3JzKGxpYnhsX2N0eCAqY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbGlieGxfdmRpc3BsaW5mbyAqaW5mbykKK3sKKyAgICBHQ19J TklUKGN0eCk7CisgICAgY2hhciAqY29ubmVjdG9yID0gTlVMTDsKKyAgICBjaGFyICpjb25uZWN0 b3JfcGF0aDsKKyAgICBpbnQgaSwgcmM7CisKKyAgICBpbmZvLT5udW1fY29ubmVjdG9ycyA9IDA7 CisKKyAgICBjb25uZWN0b3JfcGF0aCA9IEdDU1BSSU5URigiJXMvJWQiLCBwYXRoLCBpbmZvLT5u dW1fY29ubmVjdG9ycyk7CisKKyAgICB3aGlsZSAoKGNvbm5lY3RvciA9IHhzX3JlYWQoY3R4LT54 c2gsIFhCVF9OVUxMLCBjb25uZWN0b3JfcGF0aCwgTlVMTCkpICE9CisgICAgICAgICAgIE5VTEwp IHsKKyAgICAgICAgZnJlZShjb25uZWN0b3IpOworICAgICAgICBjb25uZWN0b3JfcGF0aCA9IEdD U1BSSU5URigiJXMvJWQiLCBwYXRoLCArK2luZm8tPm51bV9jb25uZWN0b3JzKTsKKyAgICB9CisK KyAgICBpbmZvLT5jb25uZWN0b3JzID0gbGlieGxfX2NhbGxvYyhOT0dDLCBpbmZvLT5udW1fY29u bmVjdG9ycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoKmlu Zm8tPmNvbm5lY3RvcnMpKTsKKworICAgIGZvciAoaSA9IDA7IGkgPCBpbmZvLT5udW1fY29ubmVj dG9yczsgaSsrKSB7CisgICAgICAgIGNoYXIgKnZhbHVlOworICAgICAgICBjaGFyICp2YWx1ZV9w YXRoOworCisgICAgICAgIHZhbHVlX3BhdGggPSBHQ1NQUklOVEYoIiVzLyVkL2lkIiwgcGF0aCwg aSk7CisgICAgICAgIGluZm8tPmNvbm5lY3RvcnNbaV0uaWQgPSB4c19yZWFkKGN0eC0+eHNoLCBY QlRfTlVMTCwgdmFsdWVfcGF0aCwgTlVMTCk7CisgICAgICAgIGlmIChpbmZvLT5jb25uZWN0b3Jz W2ldLmlkID09IE5VTEwpIHsgcmMgPSBFUlJPUl9GQUlMOyBnb3RvIG91dDsgfQorCisgICAgICAg IHZhbHVlX3BhdGggPSBHQ1NQUklOVEYoIiVzLyVkL3Jlc29sdXRpb24iLCBwYXRoLCBpKTsKKyAg ICAgICAgdmFsdWUgPSB4c19yZWFkKGN0eC0+eHNoLCBYQlRfTlVMTCwgdmFsdWVfcGF0aCwgTlVM TCk7CisgICAgICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7IHJjID0gRVJST1JfRkFJTDsgZ290byBv dXQ7IH0KKworICAgICAgICByYyA9IHNzY2FuZih2YWx1ZSwgIiV1eCV1IiwgJmluZm8tPmNvbm5l Y3RvcnNbaV0ud2lkdGgsCisgICAgICAgICAgICAgICAgICAgICZpbmZvLT5jb25uZWN0b3JzW2ld LmhlaWdodCk7CisgICAgICAgIGZyZWUodmFsdWUpOworCisgICAgICAgIGlmIChyYyAhPSAyKSB7 CisgICAgICAgICAgICByYyA9IEVSUk9SX0ZBSUw7IGdvdG8gb3V0OworICAgICAgICB9CisKKyAg ICAgICAgdmFsdWVfcGF0aCA9IEdDU1BSSU5URigiJXMvJWQvcmVxLXJpbmctcmVmIiwgcGF0aCwg aSk7CisgICAgICAgIHZhbHVlID0geHNfcmVhZChjdHgtPnhzaCwgWEJUX05VTEwsIHZhbHVlX3Bh dGgsIE5VTEwpOworICAgICAgICBpbmZvLT5jb25uZWN0b3JzW2ldLnJlcV9ycmVmID0gdmFsdWUg PyBzdHJ0b3VsKHZhbHVlLCBOVUxMLCAxMCkgOiAtMTsKKyAgICAgICAgZnJlZSh2YWx1ZSk7CisK KyAgICAgICAgdmFsdWVfcGF0aCA9IEdDU1BSSU5URigiJXMvJWQvcmVxLWV2ZW50LWNoYW5uZWwi LCBwYXRoLCBpKTsKKyAgICAgICAgdmFsdWUgPSB4c19yZWFkKGN0eC0+eHNoLCBYQlRfTlVMTCwg dmFsdWVfcGF0aCwgTlVMTCk7CisgICAgICAgIGluZm8tPmNvbm5lY3RvcnNbaV0ucmVxX2V2dGNo ID0gdmFsdWUgPyBzdHJ0b3VsKHZhbHVlLCBOVUxMLCAxMCkgOiAtMTsKKyAgICAgICAgZnJlZSh2 YWx1ZSk7CisKKyAgICAgICAgdmFsdWVfcGF0aCA9IEdDU1BSSU5URigiJXMvJWQvZXZ0LXJpbmct cmVmIiwgcGF0aCwgaSk7CisgICAgICAgIHZhbHVlID0geHNfcmVhZChjdHgtPnhzaCwgWEJUX05V TEwsIHZhbHVlX3BhdGgsIE5VTEwpOworICAgICAgICBpbmZvLT5jb25uZWN0b3JzW2ldLmV2dF9y cmVmID0gdmFsdWUgPyBzdHJ0b3VsKHZhbHVlLCBOVUxMLCAxMCkgOiAtMTsKKyAgICAgICAgZnJl ZSh2YWx1ZSk7CisKKyAgICAgICAgdmFsdWVfcGF0aCA9IEdDU1BSSU5URigiJXMvJWQvZXZ0LWV2 ZW50LWNoYW5uZWwiLCBwYXRoLCBpKTsKKyAgICAgICAgdmFsdWUgPSB4c19yZWFkKGN0eC0+eHNo LCBYQlRfTlVMTCwgdmFsdWVfcGF0aCwgTlVMTCk7CisgICAgICAgIGluZm8tPmNvbm5lY3RvcnNb aV0uZXZ0X2V2dGNoID0gdmFsdWUgPyBzdHJ0b3VsKHZhbHVlLCBOVUxMLCAxMCkgOiAtMTsKKyAg ICAgICAgZnJlZSh2YWx1ZSk7CisgICAgfQorCisgICAgcmMgPSAwOworCitvdXQ6CisgICAgcmV0 dXJuIHJjOworfQorCitpbnQgbGlieGxfZGV2aWNlX3ZkaXNwbF9nZXRpbmZvKGxpYnhsX2N0eCAq Y3R4LCB1aW50MzJfdCBkb21pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGli eGxfZGV2aWNlX3ZkaXNwbCAqdmRpc3BsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBsaWJ4bF92ZGlzcGxpbmZvICppbmZvKQoreworICAgIEdDX0lOSVQoY3R4KTsKKyAgICBjaGFy ICpsaWJ4bF9wYXRoLCAqZG9tcGF0aCwgKmRldnBhdGg7CisgICAgY2hhciAqdmFsOworICAgIGlu dCByYzsKKworICAgIGxpYnhsX3ZkaXNwbGluZm9faW5pdChpbmZvKTsKKyAgICBkb21wYXRoID0g bGlieGxfX3hzX2dldF9kb21wYXRoKGdjLCBkb21pZCk7CisgICAgaW5mby0+ZGV2aWQgPSB2ZGlz cGwtPmRldmlkOworCisgICAgZGV2cGF0aCA9IEdDU1BSSU5URigiJXMvZGV2aWNlL3ZkaXNwbC8l ZCIsIGRvbXBhdGgsIGluZm8tPmRldmlkKTsKKyAgICBsaWJ4bF9wYXRoID0gR0NTUFJJTlRGKCIl cy9kZXZpY2UvdmRpc3BsLyVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX194 c19saWJ4bF9wYXRoKGdjLCBkb21pZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZv LT5kZXZpZCk7CisgICAgaW5mby0+YmFja2VuZCA9IHhzX3JlYWQoY3R4LT54c2gsIFhCVF9OVUxM LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDU1BSSU5URigiJXMvYmFja2VuZCIsIGxp YnhsX3BhdGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgIGlmICgh aW5mby0+YmFja2VuZCkgeyByYyA9IEVSUk9SX0ZBSUw7IGdvdG8gb3V0OyB9CisKKyAgICByYyA9 IGxpYnhsX19iYWNrZW5kcGF0aF9wYXJzZV9kb21pZChnYywgaW5mby0+YmFja2VuZCwgJmluZm8t PmJhY2tlbmRfaWQpOworICAgIGlmIChyYykgZ290byBvdXQ7CisKKyAgICB2YWwgPSBsaWJ4bF9f eHNfcmVhZChnYywgWEJUX05VTEwsIEdDU1BSSU5URigiJXMvc3RhdGUiLCBkZXZwYXRoKSk7Cisg ICAgaW5mby0+c3RhdGUgPSB2YWwgPyBzdHJ0b3VsKHZhbCwgTlVMTCwgMTApIDogLTE7CisKKyAg ICBpbmZvLT5mcm9udGVuZCA9IHhzX3JlYWQoY3R4LT54c2gsIFhCVF9OVUxMLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBHQ1NQUklOVEYoIiVzL2Zyb250ZW5kIiwgbGlieGxfcGF0aCks CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgIGluZm8tPmZyb250ZW5k X2lkID0gZG9taWQ7CisKKyAgICB2YWwgPSBsaWJ4bF9feHNfcmVhZChnYywgWEJUX05VTEwsIEdD U1BSSU5URigiJXMvYmUtYWxsb2MiLCBkZXZwYXRoKSk7CisgICAgaW5mby0+YmVfYWxsb2MgPSB2 YWwgPyBzdHJ0b3VsKHZhbCwgTlVMTCwgMTApIDogMDsKKworICAgIHJjID0gbGlieGxfX2Rldmlj ZV92ZGlzcGxfZ2V0Y29ubmVjdG9ycyhjdHgsIGRldnBhdGgsIGluZm8pOworICAgIGlmIChyYykg Z290byBvdXQ7CisKKyAgICByYyA9IDA7CisKK291dDoKKyAgICAgR0NfRlJFRTsKKyAgICAgcmV0 dXJuIHJjOworfQorCitpbnQgbGlieGxfZGV2aWRfdG9fZGV2aWNlX3ZkaXNwbChsaWJ4bF9jdHgg KmN0eCwgdWludDMyX3QgZG9taWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp bnQgZGV2aWQsIGxpYnhsX2RldmljZV92ZGlzcGwgKnZkaXNwbCkKK3sKKyAgICBHQ19JTklUKGN0 eCk7CisKKyAgICBsaWJ4bF9kZXZpY2VfdmRpc3BsICp2ZGlzcGxzID0gTlVMTDsKKyAgICBpbnQg biwgaTsKKyAgICBpbnQgcmM7CisKKyAgICBsaWJ4bF9kZXZpY2VfdmRpc3BsX2luaXQodmRpc3Bs KTsKKworICAgIHZkaXNwbHMgPSBsaWJ4bF9fZGV2aWNlX2xpc3QoZ2MsICZsaWJ4bF9fdmRpc3Bs X2RldnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21pZCwgInZkaXNw bCIsICZuKTsKKworICAgIGlmICghdmRpc3BscykgeyByYyA9IEVSUk9SX05PVEZPVU5EOyBnb3Rv IG91dDsgfQorCisgICAgZm9yIChpID0gMDsgaSA8IG47ICsraSkgeworICAgICAgICBpZiAoZGV2 aWQgPT0gdmRpc3Bsc1tpXS5kZXZpZCkgeworICAgICAgICAgICAgbGlieGxfZGV2aWNlX3ZkaXNw bF9jb3B5KGN0eCwgdmRpc3BsLCAmdmRpc3Bsc1tpXSk7CisgICAgICAgICAgICByYyA9IDA7Cisg ICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJjID0gRVJST1Jf Tk9URk9VTkQ7CisKK291dDoKKworICAgIGlmICh2ZGlzcGxzKQorICAgICAgICBsaWJ4bF9fZGV2 aWNlX2xpc3RfZnJlZSgmbGlieGxfX3ZkaXNwbF9kZXZ0eXBlLCB2ZGlzcGxzLCBuKTsKKworICAg IEdDX0ZSRUU7CisgICAgcmV0dXJuIHJjOworfQorCitMSUJYTF9ERUZJTkVfREVWSUNFX0FERCh2 ZGlzcGwpCitzdGF0aWMgTElCWExfREVGSU5FX0RFVklDRVNfQUREKHZkaXNwbCkKK0xJQlhMX0RF RklORV9ERVZJQ0VfUkVNT1ZFKHZkaXNwbCkKK3N0YXRpYyBMSUJYTF9ERUZJTkVfVVBEQVRFX0RF VklEKHZkaXNwbCwgInZkaXNwbCIpCisKK0RFRklORV9ERVZJQ0VfVFlQRV9TVFJVQ1QodmRpc3Bs LAorICAgIC51cGRhdGVfY29uZmlnID0gKHZvaWQgKCopKGxpYnhsX19nYyAqLCB2b2lkICosIHZv aWQgKikpCisgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9fdXBkYXRlX2NvbmZpZ192ZGlzcGws CisgICAgLmZyb21feGVuc3RvcmUgPSAoaW50ICgqKShsaWJ4bF9fZ2MgKiwgY29uc3QgY2hhciAq LCBsaWJ4bF9kZXZpZCwgdm9pZCAqKSkKKyAgICAgICAgICAgICAgICAgICAgIGxpYnhsX192ZGlz cGxfZnJvbV94ZW5zdG9yZSwKKyAgICAuc2V0X3hlbnN0b3JlX2NvbmZpZyA9IChpbnQgKCopKGxp YnhsX19nYyAqLCB1aW50MzJfdCwgdm9pZCAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZmxleGFycmF5X3QgKmJhY2ssIGZsZXhhcnJheV90ICpmcm9udCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXhhcnJheV90ICpyb19mcm9udCkpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9fc2V0X3hlbnN0b3JlX3ZkaXNwbAorKTsKKwor LyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0 CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLwotLSAKMi43LjQKCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFp bGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94 ZW4tZGV2ZWwK