From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v5 15/16] tools: implement new generic set value interface and MBA set value command Date: Sat, 30 Sep 2017 09:39:25 +0800 Message-ID: <1506735566-5706-16-git-send-email-yi.y.sun@linux.intel.com> References: <1506735566-5706-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.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dy743-0004hh-SI for xen-devel@lists.xenproject.org; Sat, 30 Sep 2017 01:59:35 +0000 In-Reply-To: <1506735566-5706-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+Ci0tLQpDQzogV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KQ0M6IElhbiBKYWNrc29u IDxpYW4uamFja3NvbkBldS5jaXRyaXguY29tPgpDQzogUm9nZXIgUGF1IE1vbm7DqSA8cm9nZXIu cGF1QGNpdHJpeC5jb20+CkNDOiBDaGFvIFBlbmcgPGNoYW8ucC5wZW5nQGxpbnV4LmludGVsLmNv bT4KCnY1OgogICAgLSBtb3ZlIHhjX3R5cGUgZGVmaW5pdGlvbiBhbmQgdmFsdWUgZ2V0IG91dCBv ZiB0aGUgbG9vcC4KICAgICAgKHN1Z2dlc3RlZCBieSBSb2dlciBQYXUgTW9ubsOpKQp2NDoKICAg IC0gcmVtb3ZlICdBTExPQ18nIGZyb20gbWFjcm8gbmFtZS4KICAgICAgKHN1Z2dlc3RlZCBieSBS b2dlciBQYXUgTW9ubsOpKQogICAgLSBhZGp1c3QgcGxhY2Ugb2YgYXJnYyBjaGVjayBhbmQgcmV0 dXJuIEVYSVRfRkFJTFVSRS4KICAgICAgKHN1Z2dlc3RlZCBieSBSb2dlciBQYXUgTW9ubsOpKQog ICAgLSBmaXggaW5kZW50YXRpb24gaXNzdWUuCiAgICAgIChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1 IE1vbm7DqSkKICAgIC0gbW92ZSBzYW1lIHR5cGUgbG9jYWwgdmFyaWFibGVzIGRlY2xhcmF0aW9u IHRvIGEgc2luZ2xlIGxpbmUuCiAgICAgIChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1IE1vbm7DqSkK djM6CiAgICAtIGFkZCAnY29uc3QnIGZvciAnb3B0c1tdJyBpbiAnbWFpbl9wc3JfbWJhX3NldCcu CiAgICAgIChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1IE1vbm7DqSkKICAgIC0gcmVwbGFjZSAnbGli eGxfcHNyX2NibV90eXBlJyB0byAnbGlieGxfcHNyX3R5cGUnIGZvciBuZXdseSBkZWZpbmVkCiAg ICAgIGludGVyZmFjZXMuCiAgICAgIChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1IE1vbm7DqSkKLS0t CiB0b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaCB8ICA2ICsrLS0tCiB0b29scy9saWJ4Yy94 Y19wc3IuYyAgICAgICAgICB8ICA5ICsrKystLS0KIHRvb2xzL2xpYnhsL2xpYnhsX3Bzci5jICAg ICAgIHwgNTIgKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLQogdG9vbHMv eGwveGwuaCAgICAgICAgICAgICAgICAgfCAgMSArCiB0b29scy94bC94bF9jbWR0YWJsZS5jICAg ICAgICB8ICA2ICsrKysrCiB0b29scy94bC94bF9wc3IuYyAgICAgICAgICAgICB8IDU1ICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDYgZmlsZXMgY2hhbmdlZCwg OTYgaW5zZXJ0aW9ucygrKSwgMzMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvdG9vbHMvbGli eGMvaW5jbHVkZS94ZW5jdHJsLmggYi90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaAppbmRl eCAwNjI5YTI1Li4xYzcxMTQwIDEwMDY0NAotLS0gYS90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0 cmwuaAorKysgYi90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaApAQCAtMjQ5Nyw5ICsyNDk3 LDkgQEAgaW50IHhjX3Bzcl9jbXRfZ2V0X2RhdGEoeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90 IHJtaWQsIHVpbnQzMl90IGNwdSwKICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90ICp0 c2MpOwogaW50IHhjX3Bzcl9jbXRfZW5hYmxlZCh4Y19pbnRlcmZhY2UgKnhjaCk7CiAKLWludCB4 Y19wc3JfY2F0X3NldF9kb21haW5fZGF0YSh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMyX3QgZG9t aWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGNfcHNyX3R5cGUgdHlwZSwgdWlu dDMyX3QgdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IGRh dGEpOworaW50IHhjX3Bzcl9zZXRfZG9tYWluX2RhdGEoeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQz Ml90IGRvbWlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgeGNfcHNyX3R5cGUgdHlwZSwg dWludDMyX3QgdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgZGF0 YSk7CiBpbnQgeGNfcHNyX2dldF9kb21haW5fZGF0YSh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMy X3QgZG9taWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4Y19wc3JfdHlwZSB0eXBlLCB1 aW50MzJfdCB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCAqZGF0 YSk7CmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy94Y19wc3IuYyBiL3Rvb2xzL2xpYnhjL3hjX3Bz ci5jCmluZGV4IGIwMDE2NjQuLmQzOGU3YmQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhjL3hjX3Bz ci5jCisrKyBiL3Rvb2xzL2xpYnhjL3hjX3Bzci5jCkBAIC0yNDgsOSArMjQ4LDkgQEAgaW50IHhj X3Bzcl9jbXRfZW5hYmxlZCh4Y19pbnRlcmZhY2UgKnhjaCkKIAogICAgIHJldHVybiAwOwogfQot aW50IHhjX3Bzcl9jYXRfc2V0X2RvbWFpbl9kYXRhKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJf dCBkb21pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4Y19wc3JfdHlwZSB0eXBl LCB1aW50MzJfdCB0YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0 X3QgZGF0YSkKK2ludCB4Y19wc3Jfc2V0X2RvbWFpbl9kYXRhKHhjX2ludGVyZmFjZSAqeGNoLCB1 aW50MzJfdCBkb21pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHhjX3Bzcl90eXBlIHR5 cGUsIHVpbnQzMl90IHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90 IGRhdGEpCiB7CiAgICAgREVDTEFSRV9ET01DVEw7CiAgICAgdWludDMyX3QgY21kOwpAQCAtMjY5 LDYgKzI2OSw5IEBAIGludCB4Y19wc3JfY2F0X3NldF9kb21haW5fZGF0YSh4Y19pbnRlcmZhY2Ug KnhjaCwgdWludDMyX3QgZG9taWQsCiAgICAgY2FzZSBYQ19QU1JfQ0FUX0wyX0NCTToKICAgICAg ICAgY21kID0gWEVOX0RPTUNUTF9QU1JfU0VUX0wyX0NCTTsKICAgICAgICAgYnJlYWs7CisgICAg Y2FzZSBYQ19QU1JfTUJBX1RIUlRMOgorICAgICAgICBjbWQgPSBYRU5fRE9NQ1RMX1BTUl9TRVRf TUJBX1RIUlRMOworICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBlcnJubyA9 IEVJTlZBTDsKICAgICAgICAgcmV0dXJuIC0xOwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGli eGxfcHNyLmMgYi90b29scy9saWJ4bC9saWJ4bF9wc3IuYwppbmRleCA5YzQ3ZDM0Li44MjdmZGZh IDEwMDY0NAotLS0gYS90b29scy9saWJ4bC9saWJ4bF9wc3IuYworKysgYi90b29scy9saWJ4bC9s aWJ4bF9wc3IuYwpAQCAtMzI4LDMyICszMjgsNyBAQCBpbnQgbGlieGxfcHNyX2NhdF9zZXRfY2Jt KGxpYnhsX2N0eCAqY3R4LCB1aW50MzJfdCBkb21pZCwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgbGlieGxfcHNyX2NibV90eXBlIHR5cGUsIGxpYnhsX2JpdG1hcCAqdGFyZ2V0X21hcCwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgY2JtKQogewotICAgIEdDX0lOSVQoY3R4 KTsKLSAgICBpbnQgcmM7Ci0gICAgaW50IHNvY2tldGlkLCBucl9zb2NrZXRzOwotCi0gICAgcmMg PSBsaWJ4bF9fY291bnRfcGh5c2ljYWxfc29ja2V0cyhnYywgJm5yX3NvY2tldHMpOwotICAgIGlm IChyYykgewotICAgICAgICBMT0dFRChFUlJPUiwgZG9taWQsICJmYWlsZWQgdG8gZ2V0IHN5c3Rl bSBzb2NrZXQgY291bnQiKTsKLSAgICAgICAgZ290byBvdXQ7Ci0gICAgfQotCi0gICAgbGlieGxf Zm9yX2VhY2hfc2V0X2JpdChzb2NrZXRpZCwgKnRhcmdldF9tYXApIHsKLSAgICAgICAgeGNfcHNy X3R5cGUgeGNfdHlwZSA9IGxpYnhsX19wc3JfdHlwZV90b19saWJ4Y19wc3JfdHlwZSh0eXBlKTsK LQotICAgICAgICBpZiAoc29ja2V0aWQgPj0gbnJfc29ja2V0cykKLSAgICAgICAgICAgIGJyZWFr OwotCi0gICAgICAgIGlmICh4Y19wc3JfY2F0X3NldF9kb21haW5fZGF0YShjdHgtPnhjaCwgZG9t aWQsIHhjX3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2Nr ZXRpZCwgY2JtKSkgewotICAgICAgICAgICAgbGlieGxfX3Bzcl9hbGxvY19sb2dfZXJyX21zZyhn YywgZXJybm8sIHR5cGUpOwotICAgICAgICAgICAgcmMgPSBFUlJPUl9GQUlMOwotICAgICAgICB9 Ci0gICAgfQotCi1vdXQ6Ci0gICAgR0NfRlJFRTsKLSAgICByZXR1cm4gcmM7CisgICAgcmV0dXJu IGxpYnhsX3Bzcl9zZXRfdmFsKGN0eCwgZG9taWQsIHR5cGUsIHRhcmdldF9tYXAsIGNibSk7CiB9 CiAKIGludCBsaWJ4bF9wc3JfY2F0X2dldF9jYm0obGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRv bWlkLApAQCAtNDUxLDcgKzQyNiwzMCBAQCBpbnQgbGlieGxfcHNyX3NldF92YWwobGlieGxfY3R4 ICpjdHgsIHVpbnQzMl90IGRvbWlkLAogICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX3Bzcl90 eXBlIHR5cGUsIGxpYnhsX2JpdG1hcCAqdGFyZ2V0X21hcCwKICAgICAgICAgICAgICAgICAgICAg ICB1aW50NjRfdCB2YWwpCiB7Ci0gICAgcmV0dXJuIEVSUk9SX0ZBSUw7CisgICAgR0NfSU5JVChj dHgpOworICAgIGludCByYywgc29ja2V0aWQsIG5yX3NvY2tldHM7CisgICAgeGNfcHNyX3R5cGUg eGNfdHlwZSA9IGxpYnhsX19wc3JfdHlwZV90b19saWJ4Y19wc3JfdHlwZSh0eXBlKTsKKworICAg IHJjID0gbGlieGxfX2NvdW50X3BoeXNpY2FsX3NvY2tldHMoZ2MsICZucl9zb2NrZXRzKTsKKyAg ICBpZiAocmMpIHsKKyAgICAgICAgTE9HKEVSUk9SLCAiZmFpbGVkIHRvIGdldCBzeXN0ZW0gc29j a2V0IGNvdW50Iik7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIGxpYnhsX2Zvcl9l YWNoX3NldF9iaXQoc29ja2V0aWQsICp0YXJnZXRfbWFwKSB7CisgICAgICAgIGlmIChzb2NrZXRp ZCA+PSBucl9zb2NrZXRzKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgaWYgKHhjX3Bz cl9zZXRfZG9tYWluX2RhdGEoY3R4LT54Y2gsIGRvbWlkLCB4Y190eXBlLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXRpZCwgdmFsKSkgeworICAgICAgICAgICAgbGli eGxfX3Bzcl9hbGxvY19sb2dfZXJyX21zZyhnYywgZXJybm8sIHR5cGUpOworICAgICAgICAgICAg cmMgPSBFUlJPUl9GQUlMOworICAgICAgICB9CisgICAgfQorCitvdXQ6CisgICAgR0NfRlJFRTsK KyAgICByZXR1cm4gcmM7CiB9CiAKIGludCBsaWJ4bF9wc3JfZ2V0X3ZhbChsaWJ4bF9jdHggKmN0 eCwgdWludDMyX3QgZG9taWQsCmRpZmYgLS1naXQgYS90b29scy94bC94bC5oIGIvdG9vbHMveGwv eGwuaAppbmRleCA0NjQ4MzFlLi44OTMwOWU3IDEwMDY0NAotLS0gYS90b29scy94bC94bC5oCisr KyBiL3Rvb2xzL3hsL3hsLmgKQEAgLTIwNSw2ICsyMDUsNyBAQCBpbnQgbWFpbl9wc3JfY210X2Rl dGFjaChpbnQgYXJnYywgY2hhciAqKmFyZ3YpOwogaW50IG1haW5fcHNyX2NtdF9zaG93KGludCBh cmdjLCBjaGFyICoqYXJndik7CiBpbnQgbWFpbl9wc3JfY2F0X2NibV9zZXQoaW50IGFyZ2MsIGNo YXIgKiphcmd2KTsKIGludCBtYWluX3Bzcl9jYXRfc2hvdyhpbnQgYXJnYywgY2hhciAqKmFyZ3Yp OworaW50IG1haW5fcHNyX21iYV9zZXQoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKIGludCBtYWlu X3Bzcl9tYmFfc2hvdyhpbnQgYXJnYywgY2hhciAqKmFyZ3YpOwogI2VuZGlmCiBpbnQgbWFpbl9x ZW11X21vbml0b3JfY29tbWFuZChpbnQgYXJnYywgY2hhciAqKmFyZ3YpOwpkaWZmIC0tZ2l0IGEv dG9vbHMveGwveGxfY21kdGFibGUuYyBiL3Rvb2xzL3hsL3hsX2NtZHRhYmxlLmMKaW5kZXggMzEz NmQ3MC4uZmIyMTMxNyAxMDA2NDQKLS0tIGEvdG9vbHMveGwveGxfY21kdGFibGUuYworKysgYi90 b29scy94bC94bF9jbWR0YWJsZS5jCkBAIC01NjUsNiArNTY1LDEyIEBAIHN0cnVjdCBjbWRfc3Bl YyBjbWRfdGFibGVbXSA9IHsKICAgICAgICJbb3B0aW9uc10gPERvbWFpbj4iLAogICAgICAgIi1s IDxsZXZlbD4gICAgICAgIFNwZWNpZnkgdGhlIGNhY2hlIGxldmVsIHRvIHByb2Nlc3MsIG90aGVy d2lzZSBMMyBjYWNoZSBpcyBwcm9jZXNzZWRcbiIKICAgICB9LAorICAgIHsgInBzci1tYmEtc2V0 IiwKKyAgICAgICZtYWluX3Bzcl9tYmFfc2V0LCAwLCAxLAorICAgICAgIlNldCB0aHJvdHRsaW5n IHZhbHVlIChUSFJUTCkgZm9yIGEgZG9tYWluIiwKKyAgICAgICJbb3B0aW9uc10gPERvbWFpbj4g PFRIUlRMPiIsCisgICAgICAiLXMgPHNvY2tldD4gICAgICAgU3BlY2lmeSB0aGUgc29ja2V0IHRv IHByb2Nlc3MsIG90aGVyd2lzZSBhbGwgc29ja2V0cyBhcmUgcHJvY2Vzc2VkXG4iCisgICAgfSwK ICAgICB7ICJwc3ItbWJhLXNob3ciLAogICAgICAgJm1haW5fcHNyX21iYV9zaG93LCAwLCAxLAog ICAgICAgIlNob3cgTWVtb3J5IEJhbmR3aWR0aCBBbGxvY2F0aW9uIGluZm9ybWF0aW9uIiwKZGlm ZiAtLWdpdCBhL3Rvb2xzL3hsL3hsX3Bzci5jIGIvdG9vbHMveGwveGxfcHNyLmMKaW5kZXggNGZl ZDcxZS4uYjM3ZGZhNyAxMDA2NDQKLS0tIGEvdG9vbHMveGwveGxfcHNyLmMKKysrIGIvdG9vbHMv eGwveGxfcHNyLmMKQEAgLTU1Myw2ICs1NTMsNjEgQEAgaW50IG1haW5fcHNyX21iYV9zaG93KGlu dCBhcmdjLCBjaGFyICoqYXJndikKICAgICByZXR1cm4gcHNyX3ZhbF9zaG93KGRvbWlkLCBMSUJY TF9QU1JfRkVBVF9UWVBFX01CQSwgMCk7CiB9CiAKK2ludCBtYWluX3Bzcl9tYmFfc2V0KGludCBh cmdjLCBjaGFyICoqYXJndikKK3sKKyAgICB1aW50MzJfdCBkb21pZDsKKyAgICBsaWJ4bF9wc3Jf dHlwZSB0eXBlOworICAgIHVpbnQ2NF90IHRocnRsOworICAgIGludCByZXQsIG9wdCA9IDA7Cisg ICAgbGlieGxfYml0bWFwIHRhcmdldF9tYXA7CisgICAgY2hhciAqdmFsdWU7CisgICAgbGlieGxf c3RyaW5nX2xpc3Qgc29ja2V0X2xpc3Q7CisgICAgdW5zaWduZWQgbG9uZyBzdGFydCwgZW5kOwor ICAgIHVuc2lnbmVkIGludCBpLCBqLCBsZW47CisKKyAgICBzdGF0aWMgY29uc3Qgc3RydWN0IG9w dGlvbiBvcHRzW10gPSB7CisgICAgICAgIHsic29ja2V0IiwgMSwgMCwgJ3MnfSwKKyAgICAgICAg Q09NTU9OX0xPTkdfT1BUUworICAgIH07CisKKyAgICBpZiAoYXJnYyAhPSBvcHRpbmQgKyAyKSB7 CisgICAgICAgIGhlbHAoInBzci1tYmEtc2V0Iik7CisgICAgICAgIHJldHVybiBFWElUX0ZBSUxV UkU7CisgICAgfQorCisgICAgbGlieGxfc29ja2V0X2JpdG1hcF9hbGxvYyhjdHgsICZ0YXJnZXRf bWFwLCAwKTsKKyAgICBsaWJ4bF9iaXRtYXBfc2V0X25vbmUoJnRhcmdldF9tYXApOworCisgICAg U1dJVENIX0ZPUkVBQ0hfT1BUKG9wdCwgInM6Iiwgb3B0cywgInBzci1tYmEtc2V0IiwgMCkgewor ICAgIGNhc2UgJ3MnOgorICAgICAgICB0cmltKGlzc3BhY2UsIG9wdGFyZywgJnZhbHVlKTsKKyAg ICAgICAgc3BsaXRfc3RyaW5nX2ludG9fc3RyaW5nX2xpc3QodmFsdWUsICIsIiwgJnNvY2tldF9s aXN0KTsKKyAgICAgICAgbGVuID0gbGlieGxfc3RyaW5nX2xpc3RfbGVuZ3RoKCZzb2NrZXRfbGlz dCk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICAgICAgcGFy c2VfcmFuZ2Uoc29ja2V0X2xpc3RbaV0sICZzdGFydCwgJmVuZCk7CisgICAgICAgICAgICBmb3Ig KGogPSBzdGFydDsgaiA8PSBlbmQ7IGorKykKKyAgICAgICAgICAgICAgICBsaWJ4bF9iaXRtYXBf c2V0KCZ0YXJnZXRfbWFwLCBqKTsKKyAgICAgICAgfQorCisgICAgICAgIGxpYnhsX3N0cmluZ19s aXN0X2Rpc3Bvc2UoJnNvY2tldF9saXN0KTsKKyAgICAgICAgZnJlZSh2YWx1ZSk7CisgICAgICAg IGJyZWFrOworICAgIH0KKworICAgIHR5cGUgPSBMSUJYTF9QU1JfQ0JNX1RZUEVfTUJBX1RIUlRM OworCisgICAgaWYgKGxpYnhsX2JpdG1hcF9pc19lbXB0eSgmdGFyZ2V0X21hcCkpCisgICAgICAg IGxpYnhsX2JpdG1hcF9zZXRfYW55KCZ0YXJnZXRfbWFwKTsKKworICAgIGRvbWlkID0gZmluZF9k b21haW4oYXJndltvcHRpbmRdKTsKKyAgICB0aHJ0bCA9IHN0cnRvbGwoYXJndltvcHRpbmQgKyAx XSwgTlVMTCAsIDApOworCisgICAgcmV0ID0gbGlieGxfcHNyX3NldF92YWwoY3R4LCBkb21pZCwg dHlwZSwgJnRhcmdldF9tYXAsIHRocnRsKTsKKworICAgIGxpYnhsX2JpdG1hcF9kaXNwb3NlKCZ0 YXJnZXRfbWFwKTsKKyAgICByZXR1cm4gcmV0OworfQorCiBzdGF0aWMgaW50IHBzcl9tYmFfaHdp bmZvKHZvaWQpCiB7CiAgICAgaW50IHJjOwotLSAKMS45LjEKCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1k ZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK