From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v6 15/16] tools: implement new generic set value interface and MBA set value command Date: Sun, 8 Oct 2017 15:24:00 +0800 Message-ID: <1507447441-5422-16-git-send-email-yi.y.sun@linux.intel.com> References: <1507447441-5422-1-git-send-email-yi.y.sun@linux.intel.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 1e16Gy-0002iP-4A for xen-devel@lists.xenproject.org; Sun, 08 Oct 2017 07:45:16 +0000 In-Reply-To: <1507447441-5422-1-git-send-email-yi.y.sun@linux.intel.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: Wei Liu , Chao Peng , Yi Sun , Ian Jackson , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBpbXBsZW1lbnRzIG5ldyBnZW5lcmljIHNldCB2YWx1ZSBpbnRlcmZhY2VzIGlu IGxpYnhjIGFuZCBsaWJ4bC4KVGhlc2UgaW50ZXJmYWNlcyBhcmUgc3VpdGFibGUgZm9yIGFsbCBh bGxvY2F0aW9uIGZlYXR1cmVzLiBJdCBhbHNvIGFkZHMgYQpuZXcgTUJBIHNldCB2YWx1ZSBjb21t YW5kIGluIHhsLgoKU2lnbmVkLW9mZi1ieTogWWkgU3VuIDx5aS55LnN1bkBsaW51eC5pbnRlbC5j b20+ClJldmlld2VkLWJ5OiBSb2dlciBQYXUgTW9ubsOpIDxyb2dlci5wYXVAY2l0cml4LmNvbT4K QWNrZWQtYnk6IFdlaSBMaXUgPHdlaS5saXUyQGNpdHJpeC5jb20+Ci0tLQpDQzogV2VpIExpdSA8 d2VpLmxpdTJAY2l0cml4LmNvbT4KQ0M6IElhbiBKYWNrc29uIDxpYW4uamFja3NvbkBldS5jaXRy aXguY29tPgpDQzogUm9nZXIgUGF1IE1vbm7DqSA8cm9nZXIucGF1QGNpdHJpeC5jb20+CkNDOiBD aGFvIFBlbmcgPGNoYW8ucC5wZW5nQGxpbnV4LmludGVsLmNvbT4KCnY1OgogICAgLSBtb3ZlIHhj X3R5cGUgZGVmaW5pdGlvbiBhbmQgdmFsdWUgZ2V0IG91dCBvZiB0aGUgbG9vcC4KICAgICAgKHN1 Z2dlc3RlZCBieSBSb2dlciBQYXUgTW9ubsOpKQp2NDoKICAgIC0gcmVtb3ZlICdBTExPQ18nIGZy b20gbWFjcm8gbmFtZS4KICAgICAgKHN1Z2dlc3RlZCBieSBSb2dlciBQYXUgTW9ubsOpKQogICAg LSBhZGp1c3QgcGxhY2Ugb2YgYXJnYyBjaGVjayBhbmQgcmV0dXJuIEVYSVRfRkFJTFVSRS4KICAg ICAgKHN1Z2dlc3RlZCBieSBSb2dlciBQYXUgTW9ubsOpKQogICAgLSBmaXggaW5kZW50YXRpb24g aXNzdWUuCiAgICAgIChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1IE1vbm7DqSkKICAgIC0gbW92ZSBz YW1lIHR5cGUgbG9jYWwgdmFyaWFibGVzIGRlY2xhcmF0aW9uIHRvIGEgc2luZ2xlIGxpbmUuCiAg ICAgIChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1IE1vbm7DqSkKdjM6CiAgICAtIGFkZCAnY29uc3Qn IGZvciAnb3B0c1tdJyBpbiAnbWFpbl9wc3JfbWJhX3NldCcuCiAgICAgIChzdWdnZXN0ZWQgYnkg Um9nZXIgUGF1IE1vbm7DqSkKICAgIC0gcmVwbGFjZSAnbGlieGxfcHNyX2NibV90eXBlJyB0byAn bGlieGxfcHNyX3R5cGUnIGZvciBuZXdseSBkZWZpbmVkCiAgICAgIGludGVyZmFjZXMuCiAgICAg IChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1IE1vbm7DqSkKLS0tCiB0b29scy9saWJ4Yy9pbmNsdWRl L3hlbmN0cmwuaCB8ICA2ICsrLS0tCiB0b29scy9saWJ4Yy94Y19wc3IuYyAgICAgICAgICB8ICA5 ICsrKystLS0KIHRvb2xzL2xpYnhsL2xpYnhsX3Bzci5jICAgICAgIHwgNTIgKysrKysrKysrKysr KysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLQogdG9vbHMveGwveGwuaCAgICAgICAgICAgICAg ICAgfCAgMSArCiB0b29scy94bC94bF9jbWR0YWJsZS5jICAgICAgICB8ICA2ICsrKysrCiB0b29s cy94bC94bF9wc3IuYyAgICAgICAgICAgICB8IDU1ICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysKIDYgZmlsZXMgY2hhbmdlZCwgOTYgaW5zZXJ0aW9ucygrKSwgMzMg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmgg Yi90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaAppbmRleCBkY2VhMDllLi5mMjQ2M2Y5IDEw MDY0NAotLS0gYS90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaAorKysgYi90b29scy9saWJ4 Yy9pbmNsdWRlL3hlbmN0cmwuaApAQCAtMjUxMiw5ICsyNTEyLDkgQEAgaW50IHhjX3Bzcl9jbXRf Z2V0X2RhdGEoeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90IHJtaWQsIHVpbnQzMl90IGNwdSwK ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90ICp0c2MpOwogaW50IHhjX3Bzcl9jbXRf ZW5hYmxlZCh4Y19pbnRlcmZhY2UgKnhjaCk7CiAKLWludCB4Y19wc3JfY2F0X3NldF9kb21haW5f ZGF0YSh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMyX3QgZG9taWQsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgeGNfcHNyX3R5cGUgdHlwZSwgdWludDMyX3QgdGFyZ2V0LAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IGRhdGEpOworaW50IHhjX3Bzcl9zZXRf ZG9tYWluX2RhdGEoeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90IGRvbWlkLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgeGNfcHNyX3R5cGUgdHlwZSwgdWludDMyX3QgdGFyZ2V0LAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgZGF0YSk7CiBpbnQgeGNfcHNyX2dldF9k b21haW5fZGF0YSh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMyX3QgZG9taWQsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICB4Y19wc3JfdHlwZSB0eXBlLCB1aW50MzJfdCB0YXJnZXQsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCAqZGF0YSk7CmRpZmYgLS1naXQgYS90b29s cy9saWJ4Yy94Y19wc3IuYyBiL3Rvb2xzL2xpYnhjL3hjX3Bzci5jCmluZGV4IDE5MWRlOTcuLjE2 MDkxODUgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhjL3hjX3Bzci5jCisrKyBiL3Rvb2xzL2xpYnhj L3hjX3Bzci5jCkBAIC0yNDgsOSArMjQ4LDkgQEAgaW50IHhjX3Bzcl9jbXRfZW5hYmxlZCh4Y19p bnRlcmZhY2UgKnhjaCkKIAogICAgIHJldHVybiAwOwogfQotaW50IHhjX3Bzcl9jYXRfc2V0X2Rv bWFpbl9kYXRhKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBkb21pZCwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB4Y19wc3JfdHlwZSB0eXBlLCB1aW50MzJfdCB0YXJnZXQsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgZGF0YSkKK2ludCB4Y19wc3Jf c2V0X2RvbWFpbl9kYXRhKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBkb21pZCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIHhjX3Bzcl90eXBlIHR5cGUsIHVpbnQzMl90IHRhcmdldCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IGRhdGEpCiB7CiAgICAgREVDTEFS RV9ET01DVEw7CiAgICAgdWludDMyX3QgY21kOwpAQCAtMjY5LDYgKzI2OSw5IEBAIGludCB4Y19w c3JfY2F0X3NldF9kb21haW5fZGF0YSh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMyX3QgZG9taWQs CiAgICAgY2FzZSBYQ19QU1JfQ0FUX0wyX0NCTToKICAgICAgICAgY21kID0gWEVOX0RPTUNUTF9Q U1JfU0VUX0wyX0NCTTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBYQ19QU1JfTUJBX1RIUlRM OgorICAgICAgICBjbWQgPSBYRU5fRE9NQ1RMX1BTUl9TRVRfTUJBX1RIUlRMOworICAgICAgICBi cmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBlcnJubyA9IEVJTlZBTDsKICAgICAgICAgcmV0 dXJuIC0xOwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGxfcHNyLmMgYi90b29scy9saWJ4 bC9saWJ4bF9wc3IuYwppbmRleCA3YzU2MGJjLi45Y2VkN2QxIDEwMDY0NAotLS0gYS90b29scy9s aWJ4bC9saWJ4bF9wc3IuYworKysgYi90b29scy9saWJ4bC9saWJ4bF9wc3IuYwpAQCAtMzI4LDMy ICszMjgsNyBAQCBpbnQgbGlieGxfcHNyX2NhdF9zZXRfY2JtKGxpYnhsX2N0eCAqY3R4LCB1aW50 MzJfdCBkb21pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfcHNyX2NibV90eXBl IHR5cGUsIGxpYnhsX2JpdG1hcCAqdGFyZ2V0X21hcCwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgdWludDY0X3QgY2JtKQogewotICAgIEdDX0lOSVQoY3R4KTsKLSAgICBpbnQgcmM7Ci0gICAg aW50IHNvY2tldGlkLCBucl9zb2NrZXRzOwotCi0gICAgcmMgPSBsaWJ4bF9fY291bnRfcGh5c2lj YWxfc29ja2V0cyhnYywgJm5yX3NvY2tldHMpOwotICAgIGlmIChyYykgewotICAgICAgICBMT0dF RChFUlJPUiwgZG9taWQsICJmYWlsZWQgdG8gZ2V0IHN5c3RlbSBzb2NrZXQgY291bnQiKTsKLSAg ICAgICAgZ290byBvdXQ7Ci0gICAgfQotCi0gICAgbGlieGxfZm9yX2VhY2hfc2V0X2JpdChzb2Nr ZXRpZCwgKnRhcmdldF9tYXApIHsKLSAgICAgICAgeGNfcHNyX3R5cGUgeGNfdHlwZSA9IGxpYnhs X19wc3JfdHlwZV90b19saWJ4Y19wc3JfdHlwZSh0eXBlKTsKLQotICAgICAgICBpZiAoc29ja2V0 aWQgPj0gbnJfc29ja2V0cykKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGlmICh4Y19w c3JfY2F0X3NldF9kb21haW5fZGF0YShjdHgtPnhjaCwgZG9taWQsIHhjX3R5cGUsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXRpZCwgY2JtKSkgewotICAgICAg ICAgICAgbGlieGxfX3Bzcl9hbGxvY19sb2dfZXJyX21zZyhnYywgZXJybm8sIHR5cGUpOwotICAg ICAgICAgICAgcmMgPSBFUlJPUl9GQUlMOwotICAgICAgICB9Ci0gICAgfQotCi1vdXQ6Ci0gICAg R0NfRlJFRTsKLSAgICByZXR1cm4gcmM7CisgICAgcmV0dXJuIGxpYnhsX3Bzcl9zZXRfdmFsKGN0 eCwgZG9taWQsIHR5cGUsIHRhcmdldF9tYXAsIGNibSk7CiB9CiAKIGludCBsaWJ4bF9wc3JfY2F0 X2dldF9jYm0obGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLApAQCAtNDUzLDcgKzQyOCwz MCBAQCBpbnQgbGlieGxfcHNyX3NldF92YWwobGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlk LAogICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX3Bzcl90eXBlIHR5cGUsIGxpYnhsX2JpdG1h cCAqdGFyZ2V0X21hcCwKICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCB2YWwpCiB7Ci0g ICAgcmV0dXJuIEVSUk9SX0ZBSUw7CisgICAgR0NfSU5JVChjdHgpOworICAgIGludCByYywgc29j a2V0aWQsIG5yX3NvY2tldHM7CisgICAgeGNfcHNyX3R5cGUgeGNfdHlwZSA9IGxpYnhsX19wc3Jf dHlwZV90b19saWJ4Y19wc3JfdHlwZSh0eXBlKTsKKworICAgIHJjID0gbGlieGxfX2NvdW50X3Bo eXNpY2FsX3NvY2tldHMoZ2MsICZucl9zb2NrZXRzKTsKKyAgICBpZiAocmMpIHsKKyAgICAgICAg TE9HKEVSUk9SLCAiZmFpbGVkIHRvIGdldCBzeXN0ZW0gc29ja2V0IGNvdW50Iik7CisgICAgICAg IGdvdG8gb3V0OworICAgIH0KKworICAgIGxpYnhsX2Zvcl9lYWNoX3NldF9iaXQoc29ja2V0aWQs ICp0YXJnZXRfbWFwKSB7CisgICAgICAgIGlmIChzb2NrZXRpZCA+PSBucl9zb2NrZXRzKQorICAg ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgaWYgKHhjX3Bzcl9zZXRfZG9tYWluX2RhdGEoY3R4 LT54Y2gsIGRvbWlkLCB4Y190eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzb2NrZXRpZCwgdmFsKSkgeworICAgICAgICAgICAgbGlieGxfX3Bzcl9hbGxvY19sb2dfZXJy X21zZyhnYywgZXJybm8sIHR5cGUpOworICAgICAgICAgICAgcmMgPSBFUlJPUl9GQUlMOworICAg ICAgICB9CisgICAgfQorCitvdXQ6CisgICAgR0NfRlJFRTsKKyAgICByZXR1cm4gcmM7CiB9CiAK IGludCBsaWJ4bF9wc3JfZ2V0X3ZhbChsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQsCmRp ZmYgLS1naXQgYS90b29scy94bC94bC5oIGIvdG9vbHMveGwveGwuaAppbmRleCBhNzI0NThiLi40 ZTc4NGZmIDEwMDY0NAotLS0gYS90b29scy94bC94bC5oCisrKyBiL3Rvb2xzL3hsL3hsLmgKQEAg LTIwOCw2ICsyMDgsNyBAQCBpbnQgbWFpbl9wc3JfY210X2RldGFjaChpbnQgYXJnYywgY2hhciAq KmFyZ3YpOwogaW50IG1haW5fcHNyX2NtdF9zaG93KGludCBhcmdjLCBjaGFyICoqYXJndik7CiBp bnQgbWFpbl9wc3JfY2F0X2NibV9zZXQoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKIGludCBtYWlu X3Bzcl9jYXRfc2hvdyhpbnQgYXJnYywgY2hhciAqKmFyZ3YpOworaW50IG1haW5fcHNyX21iYV9z ZXQoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKIGludCBtYWluX3Bzcl9tYmFfc2hvdyhpbnQgYXJn YywgY2hhciAqKmFyZ3YpOwogI2VuZGlmCiBpbnQgbWFpbl9xZW11X21vbml0b3JfY29tbWFuZChp bnQgYXJnYywgY2hhciAqKmFyZ3YpOwpkaWZmIC0tZ2l0IGEvdG9vbHMveGwveGxfY21kdGFibGUu YyBiL3Rvb2xzL3hsL3hsX2NtZHRhYmxlLmMKaW5kZXggY2FjMjAxNC4uMzMzOTMxMSAxMDA2NDQK LS0tIGEvdG9vbHMveGwveGxfY21kdGFibGUuYworKysgYi90b29scy94bC94bF9jbWR0YWJsZS5j CkBAIC01ODUsNiArNTg1LDEyIEBAIHN0cnVjdCBjbWRfc3BlYyBjbWRfdGFibGVbXSA9IHsKICAg ICAgICJbb3B0aW9uc10gPERvbWFpbj4iLAogICAgICAgIi1sIDxsZXZlbD4gICAgICAgIFNwZWNp ZnkgdGhlIGNhY2hlIGxldmVsIHRvIHByb2Nlc3MsIG90aGVyd2lzZSBMMyBjYWNoZSBpcyBwcm9j ZXNzZWRcbiIKICAgICB9LAorICAgIHsgInBzci1tYmEtc2V0IiwKKyAgICAgICZtYWluX3Bzcl9t YmFfc2V0LCAwLCAxLAorICAgICAgIlNldCB0aHJvdHRsaW5nIHZhbHVlIChUSFJUTCkgZm9yIGEg ZG9tYWluIiwKKyAgICAgICJbb3B0aW9uc10gPERvbWFpbj4gPFRIUlRMPiIsCisgICAgICAiLXMg PHNvY2tldD4gICAgICAgU3BlY2lmeSB0aGUgc29ja2V0IHRvIHByb2Nlc3MsIG90aGVyd2lzZSBh bGwgc29ja2V0cyBhcmUgcHJvY2Vzc2VkXG4iCisgICAgfSwKICAgICB7ICJwc3ItbWJhLXNob3ci LAogICAgICAgJm1haW5fcHNyX21iYV9zaG93LCAwLCAxLAogICAgICAgIlNob3cgTWVtb3J5IEJh bmR3aWR0aCBBbGxvY2F0aW9uIGluZm9ybWF0aW9uIiwKZGlmZiAtLWdpdCBhL3Rvb2xzL3hsL3hs X3Bzci5jIGIvdG9vbHMveGwveGxfcHNyLmMKaW5kZXggMGVlZGJjNy4uMTgxZDMwMCAxMDA2NDQK LS0tIGEvdG9vbHMveGwveGxfcHNyLmMKKysrIGIvdG9vbHMveGwveGxfcHNyLmMKQEAgLTU1Miw2 ICs1NTIsNjEgQEAgaW50IG1haW5fcHNyX21iYV9zaG93KGludCBhcmdjLCBjaGFyICoqYXJndikK ICAgICByZXR1cm4gcHNyX3ZhbF9zaG93KGRvbWlkLCBMSUJYTF9QU1JfRkVBVF9UWVBFX01CQSwg MCk7CiB9CiAKK2ludCBtYWluX3Bzcl9tYmFfc2V0KGludCBhcmdjLCBjaGFyICoqYXJndikKK3sK KyAgICB1aW50MzJfdCBkb21pZDsKKyAgICBsaWJ4bF9wc3JfdHlwZSB0eXBlOworICAgIHVpbnQ2 NF90IHRocnRsOworICAgIGludCByZXQsIG9wdCA9IDA7CisgICAgbGlieGxfYml0bWFwIHRhcmdl dF9tYXA7CisgICAgY2hhciAqdmFsdWU7CisgICAgbGlieGxfc3RyaW5nX2xpc3Qgc29ja2V0X2xp c3Q7CisgICAgdW5zaWduZWQgbG9uZyBzdGFydCwgZW5kOworICAgIHVuc2lnbmVkIGludCBpLCBq LCBsZW47CisKKyAgICBzdGF0aWMgY29uc3Qgc3RydWN0IG9wdGlvbiBvcHRzW10gPSB7CisgICAg ICAgIHsic29ja2V0IiwgMSwgMCwgJ3MnfSwKKyAgICAgICAgQ09NTU9OX0xPTkdfT1BUUworICAg IH07CisKKyAgICBpZiAoYXJnYyAhPSBvcHRpbmQgKyAyKSB7CisgICAgICAgIGhlbHAoInBzci1t YmEtc2V0Iik7CisgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CisgICAgfQorCisgICAgbGli eGxfc29ja2V0X2JpdG1hcF9hbGxvYyhjdHgsICZ0YXJnZXRfbWFwLCAwKTsKKyAgICBsaWJ4bF9i aXRtYXBfc2V0X25vbmUoJnRhcmdldF9tYXApOworCisgICAgU1dJVENIX0ZPUkVBQ0hfT1BUKG9w dCwgInM6Iiwgb3B0cywgInBzci1tYmEtc2V0IiwgMCkgeworICAgIGNhc2UgJ3MnOgorICAgICAg ICB0cmltKGlzc3BhY2UsIG9wdGFyZywgJnZhbHVlKTsKKyAgICAgICAgc3BsaXRfc3RyaW5nX2lu dG9fc3RyaW5nX2xpc3QodmFsdWUsICIsIiwgJnNvY2tldF9saXN0KTsKKyAgICAgICAgbGVuID0g bGlieGxfc3RyaW5nX2xpc3RfbGVuZ3RoKCZzb2NrZXRfbGlzdCk7CisgICAgICAgIGZvciAoaSA9 IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICAgICAgcGFyc2VfcmFuZ2Uoc29ja2V0X2xpc3Rb aV0sICZzdGFydCwgJmVuZCk7CisgICAgICAgICAgICBmb3IgKGogPSBzdGFydDsgaiA8PSBlbmQ7 IGorKykKKyAgICAgICAgICAgICAgICBsaWJ4bF9iaXRtYXBfc2V0KCZ0YXJnZXRfbWFwLCBqKTsK KyAgICAgICAgfQorCisgICAgICAgIGxpYnhsX3N0cmluZ19saXN0X2Rpc3Bvc2UoJnNvY2tldF9s aXN0KTsKKyAgICAgICAgZnJlZSh2YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAg IHR5cGUgPSBMSUJYTF9QU1JfQ0JNX1RZUEVfTUJBX1RIUlRMOworCisgICAgaWYgKGxpYnhsX2Jp dG1hcF9pc19lbXB0eSgmdGFyZ2V0X21hcCkpCisgICAgICAgIGxpYnhsX2JpdG1hcF9zZXRfYW55 KCZ0YXJnZXRfbWFwKTsKKworICAgIGRvbWlkID0gZmluZF9kb21haW4oYXJndltvcHRpbmRdKTsK KyAgICB0aHJ0bCA9IHN0cnRvbGwoYXJndltvcHRpbmQgKyAxXSwgTlVMTCAsIDApOworCisgICAg cmV0ID0gbGlieGxfcHNyX3NldF92YWwoY3R4LCBkb21pZCwgdHlwZSwgJnRhcmdldF9tYXAsIHRo cnRsKTsKKworICAgIGxpYnhsX2JpdG1hcF9kaXNwb3NlKCZ0YXJnZXRfbWFwKTsKKyAgICByZXR1 cm4gcmV0OworfQorCiBzdGF0aWMgaW50IHBzcl9tYmFfaHdpbmZvKHZvaWQpCiB7CiAgICAgaW50 IHJjOwotLSAKMS45LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0 dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK