From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v4 09/15] tools: implement the new libxc get hw info interface Date: Sat, 23 Sep 2017 17:48:18 +0800 Message-ID: <1506160104-5890-10-git-send-email-yi.y.sun@linux.intel.com> References: <1506160104-5890-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 1dvhMN-0004jW-IL for xen-devel@lists.xenproject.org; Sat, 23 Sep 2017 10:08:31 +0000 In-Reply-To: <1506160104-5890-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 VGhpcyBwYXRjaCBpbXBsZW1lbnRzIGEgbmV3IGxpYnhjIGdldCBodyBpbmZvIGludGVyZmFjZSBh bmQgY29ycmVzcG9uZGluZwpkYXRhIHN0cnVjdHVyZXMuIEl0IGFsc28gY2hhbmdlcyBsaWJ4bF9w c3IuYyB0byBjYWxsIHRoaXMgbmV3IGludGVyZmFjZS4KClNpZ25lZC1vZmYtYnk6IFlpIFN1biA8 eWkueS5zdW5AbGludXguaW50ZWwuY29tPgotLS0KQ0M6IFdlaSBMaXUgPHdlaS5saXUyQGNpdHJp eC5jb20+CkNDOiBJYW4gSmFja3NvbiA8aWFuLmphY2tzb25AZXUuY2l0cml4LmNvbT4KQ0M6IFJv Z2VyIFBhdSBNb25uw6kgPHJvZ2VyLnBhdUBjaXRyaXguY29tPgpDQzogQ2hhbyBQZW5nIDxjaGFv LnAucGVuZ0BsaW51eC5pbnRlbC5jb20+Cgp2NDoKICAgIC0gcmVtb3ZlICdBTExPQ18nIGZyb20g bWFjcm8gbmFtZXMuCiAgICAgIChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1IE1vbm7DqSkKICAgIC0g cmVtb3ZlICdYQ19QU1JfRkVBVF9VTktOT1dOJyB3aGljaCBpcyBub3QgbmVjZXNzYXJ5LgogICAg ICAoc3VnZ2VzdGVkIGJ5IFJvZ2VyIFBhdSBNb25uw6kpCiAgICAtIHJlbW92ZSAnRkVBVF8nIGZy b20gZW51bSBpdGVtIG5hbWVzLgogICAgICAoc3VnZ2VzdGVkIGJ5IFJvZ2VyIFBhdSBNb25uw6kp CiAgICAtIHJlbW92ZSAneGNfJyBmcm9tIHN0cnVjdCBuYW1lLgogICAgICAoc3VnZ2VzdGVkIGJ5 IFJvZ2VyIFBhdSBNb25uw6kpCiAgICAtIGFkanVzdCBjb2RlcyB0byByZWR1Y2UgaW5kZW50YXRp b24uCiAgICAgIChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1IE1vbm7DqSkKICAgIC0gYXNzZXJ0IGZv ciBub3QgaGFwcGVuZWQgY2FzZS4KICAgICAgKHN1Z2dlc3RlZCBieSBSb2dlciBQYXUgTW9ubsOp KQogICAgLSBhZGQgTE9HRSB0byBzaG93IGVycm5vLgogICAgICAoc3VnZ2VzdGVkIGJ5IFJvZ2Vy IFBhdSBNb25uw6kpCnYzOgogICAgLSByZW5hbWUgJ3Bzcl9jYXQvUFNSX0NBVCcgdG8gJ3Bzcl9h bGxvYy9QU1JfQUxMT0MnIGFuZCByZW1vdmUgJ29wL09QJwogICAgICBmcm9tIG5hbWUuCiAgICAg IChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1IE1vbm7DqSkKICAgIC0gcmVtb3ZlICdpbmZvJyBmcm9t ICd4Y19jYXRfaW5mbycgYW5kICd4Y19tYmFfaW5mbycuCiAgICAgIChzdWdnZXN0ZWQgYnkgUm9n ZXIgUGF1IE1vbm7DqSkKICAgIC0gc2V0IGVycm5vIGluICd4Y19wc3JfZ2V0X2h3X2luZm8nLgog ICAgICAoc3VnZ2VzdGVkIGJ5IFJvZ2VyIFBhdSBNb25uw6kpCiAgICAtIHJlbW92ZSAnaW5saW5l Jy4KICAgICAgKHN1Z2dlc3RlZCBieSBSb2dlciBQYXUgTW9ubsOpKQogICAgLSByZW1vdmUgJ3Bz cicgZnJvbSAnbGlieGxfX3Bzcl9mZWF0X3R5cGVfdG9fbGlieGNfcHNyX2ZlYXRfdHlwZScgdG8g bWFrZQogICAgICBmdW5jdGlvbiBuYW1lIHNob3J0ZXIuCiAgICAgIChzdWdnZXN0ZWQgYnkgUm9n ZXIgUGF1IE1vbm7DqSkKICAgIC0gY2hlY2sgJ3hjX3R5cGUnIGluICdsaWJ4bF9wc3JfY2F0X2dl dF9pbmZvJy4KICAgICAgKHN1Z2dlc3RlZCBieSBSb2dlciBQYXUgTW9ubsOpKQp2MjoKICAgIC0g c3BsaXQgdGhpcyBwYXRjaCBvdXQgZnJvbSBhIGJpZyBwYXRjaCBpbiB2MS4KICAgICAgKHN1Z2dl c3RlZCBieSBXZWkgTGl1KQogICAgLSBjaGFuZ2UgJ0NBVF9JTkZPJyBhbmQgJ01CQV9JTkZPJyB0 byAnQ0FUJyBhbmQgJ01CQScuCiAgICAgIChzdWdnZXN0ZWQgYnkgQ2hhbyBQZW5nKQotLS0KIHRv b2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5oIHwgMjkgKysrKysrKysrKysrKysrKysrKy0tLQog dG9vbHMvbGlieGMveGNfcHNyLmMgICAgICAgICAgfCA1NiArKysrKysrKysrKysrKysrKysrKysr KysrKysrKy0tLS0tLS0tLS0tLS0tCiB0b29scy9saWJ4bC9saWJ4bF9wc3IuYyAgICAgICB8IDM2 ICsrKysrKysrKysrKysrKysrKysrKysrKysrLS0KIDMgZmlsZXMgY2hhbmdlZCwgOTggaW5zZXJ0 aW9ucygrKSwgMjMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMvaW5jbHVk ZS94ZW5jdHJsLmggYi90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaAppbmRleCA0MzE1MWNi Li41OGJhODdjIDEwMDY0NAotLS0gYS90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaAorKysg Yi90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaApAQCAtMjQ1OSw2ICsyNDU5LDMwIEBAIGVu dW0geGNfcHNyX2NhdF90eXBlIHsKIH07CiB0eXBlZGVmIGVudW0geGNfcHNyX2NhdF90eXBlIHhj X3Bzcl9jYXRfdHlwZTsKIAorZW51bSB4Y19wc3JfZmVhdF90eXBlIHsKKyAgICBYQ19QU1JfQ0FU X0wzLAorICAgIFhDX1BTUl9DQVRfTDIsCisgICAgWENfUFNSX01CQSwKK307Cit0eXBlZGVmIGVu dW0geGNfcHNyX2ZlYXRfdHlwZSB4Y19wc3JfZmVhdF90eXBlOworCitzdHJ1Y3QgeGNfcHNyX2h3 X2luZm8geworICAgIHVuaW9uIHsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIHVpbnQz Ml90IGNvc19tYXg7CisgICAgICAgICAgICB1aW50MzJfdCBjYm1fbGVuOworICAgICAgICAgICAg Ym9vbCAgICAgY2RwX2VuYWJsZWQ7CisgICAgICAgIH0gY2F0OworCisgICAgICAgIHN0cnVjdCB7 CisgICAgICAgICAgICB1aW50MzJfdCBjb3NfbWF4OworICAgICAgICAgICAgdWludDMyX3QgdGhy dGxfbWF4OworICAgICAgICAgICAgYm9vbCAgICAgbGluZWFyOworICAgICAgICB9IG1iYTsKKyAg ICB9IHU7Cit9OwordHlwZWRlZiBzdHJ1Y3QgeGNfcHNyX2h3X2luZm8geGNfcHNyX2h3X2luZm87 CisKIGludCB4Y19wc3JfY210X2F0dGFjaCh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMyX3QgZG9t aWQpOwogaW50IHhjX3Bzcl9jbXRfZGV0YWNoKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBk b21pZCk7CiBpbnQgeGNfcHNyX2NtdF9nZXRfZG9tYWluX3JtaWQoeGNfaW50ZXJmYWNlICp4Y2gs IHVpbnQzMl90IGRvbWlkLApAQCAtMjQ4MCw5ICsyNTA0LDggQEAgaW50IHhjX3Bzcl9jYXRfc2V0 X2RvbWFpbl9kYXRhKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBkb21pZCwKIGludCB4Y19w c3JfY2F0X2dldF9kb21haW5fZGF0YSh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMyX3QgZG9taWQs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGNfcHNyX2NhdF90eXBlIHR5cGUsIHVp bnQzMl90IHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCAq ZGF0YSk7Ci1pbnQgeGNfcHNyX2NhdF9nZXRfaW5mbyh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMy X3Qgc29ja2V0LCB1bnNpZ25lZCBpbnQgbHZsLAotICAgICAgICAgICAgICAgICAgICAgICAgdWlu dDMyX3QgKmNvc19tYXgsIHVpbnQzMl90ICpjYm1fbGVuLAotICAgICAgICAgICAgICAgICAgICAg ICAgYm9vbCAqY2RwX2VuYWJsZWQpOworaW50IHhjX3Bzcl9nZXRfaHdfaW5mbyh4Y19pbnRlcmZh Y2UgKnhjaCwgdWludDMyX3Qgc29ja2V0LAorICAgICAgICAgICAgICAgICAgICAgICB4Y19wc3Jf ZmVhdF90eXBlIHR5cGUsIHhjX3Bzcl9od19pbmZvICpod19pbmZvKTsKIAogaW50IHhjX2dldF9j cHVfbGV2ZWxsaW5nX2NhcHMoeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90ICpjYXBzKTsKIGlu dCB4Y19nZXRfY3B1X2ZlYXR1cmVzZXQoeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90IGluZGV4 LApkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMveGNfcHNyLmMgYi90b29scy9saWJ4Yy94Y19wc3Iu YwppbmRleCA2MjNlMjZiLi5mMmI1ZWU2IDEwMDY0NAotLS0gYS90b29scy9saWJ4Yy94Y19wc3Iu YworKysgYi90b29scy9saWJ4Yy94Y19wc3IuYwpAQCAtMzIzLDM3ICszMjMsNTcgQEAgaW50IHhj X3Bzcl9jYXRfZ2V0X2RvbWFpbl9kYXRhKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBkb21p ZCwKICAgICByZXR1cm4gcmM7CiB9CiAKLWludCB4Y19wc3JfY2F0X2dldF9pbmZvKHhjX2ludGVy ZmFjZSAqeGNoLCB1aW50MzJfdCBzb2NrZXQsIHVuc2lnbmVkIGludCBsdmwsCi0gICAgICAgICAg ICAgICAgICAgICAgICB1aW50MzJfdCAqY29zX21heCwgdWludDMyX3QgKmNibV9sZW4sIGJvb2wg KmNkcF9lbmFibGVkKQoraW50IHhjX3Bzcl9nZXRfaHdfaW5mbyh4Y19pbnRlcmZhY2UgKnhjaCwg dWludDMyX3Qgc29ja2V0LAorICAgICAgICAgICAgICAgICAgICAgICB4Y19wc3JfZmVhdF90eXBl IHR5cGUsIHhjX3Bzcl9od19pbmZvICpod19pbmZvKQogewogICAgIGludCByYyA9IC0xOwogICAg IERFQ0xBUkVfU1lTQ1RMOwogCisgICAgaWYgKCAhaHdfaW5mbyApCisgICAgeworICAgICAgICBl cnJubyA9IEVJTlZBTDsKKyAgICAgICAgcmV0dXJuIHJjOworICAgIH0KKwogICAgIHN5c2N0bC5j bWQgPSBYRU5fU1lTQ1RMX3Bzcl9hbGxvYzsKICAgICBzeXNjdGwudS5wc3JfYWxsb2MudGFyZ2V0 ID0gc29ja2V0OwogCi0gICAgc3dpdGNoICggbHZsICkKKyAgICBzd2l0Y2ggKCB0eXBlICkKICAg ICB7Ci0gICAgY2FzZSAyOgorICAgIGNhc2UgWENfUFNSX0NBVF9MMjoKICAgICAgICAgc3lzY3Rs LnUucHNyX2FsbG9jLmNtZCA9IFhFTl9TWVNDVExfUFNSX2dldF9sMl9pbmZvOwogICAgICAgICBy YyA9IHhjX3N5c2N0bCh4Y2gsICZzeXNjdGwpOwotICAgICAgICBpZiAoICFyYyApCi0gICAgICAg IHsKLSAgICAgICAgICAgICpjb3NfbWF4ID0gc3lzY3RsLnUucHNyX2FsbG9jLnUuY2F0X2luZm8u Y29zX21heDsKLSAgICAgICAgICAgICpjYm1fbGVuID0gc3lzY3RsLnUucHNyX2FsbG9jLnUuY2F0 X2luZm8uY2JtX2xlbjsKLSAgICAgICAgICAgICpjZHBfZW5hYmxlZCA9IGZhbHNlOwotICAgICAg ICB9CisgICAgICAgIGlmICggcmMgKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgaHdf aW5mby0+dS5jYXQuY29zX21heCA9IHN5c2N0bC51LnBzcl9hbGxvYy51LmNhdF9pbmZvLmNvc19t YXg7CisgICAgICAgIGh3X2luZm8tPnUuY2F0LmNibV9sZW4gPSBzeXNjdGwudS5wc3JfYWxsb2Mu dS5jYXRfaW5mby5jYm1fbGVuOworICAgICAgICBod19pbmZvLT51LmNhdC5jZHBfZW5hYmxlZCA9 IGZhbHNlOworCiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgMzoKKyAgICBjYXNlIFhDX1BTUl9D QVRfTDM6CiAgICAgICAgIHN5c2N0bC51LnBzcl9hbGxvYy5jbWQgPSBYRU5fU1lTQ1RMX1BTUl9n ZXRfbDNfaW5mbzsKICAgICAgICAgcmMgPSB4Y19zeXNjdGwoeGNoLCAmc3lzY3RsKTsKLSAgICAg ICAgaWYgKCAhcmMgKQotICAgICAgICB7Ci0gICAgICAgICAgICAqY29zX21heCA9IHN5c2N0bC51 LnBzcl9hbGxvYy51LmNhdF9pbmZvLmNvc19tYXg7Ci0gICAgICAgICAgICAqY2JtX2xlbiA9IHN5 c2N0bC51LnBzcl9hbGxvYy51LmNhdF9pbmZvLmNibV9sZW47Ci0gICAgICAgICAgICAqY2RwX2Vu YWJsZWQgPSBzeXNjdGwudS5wc3JfYWxsb2MudS5jYXRfaW5mby5mbGFncyAmCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICBYRU5fU1lTQ1RMX1BTUl9MM19DRFA7Ci0gICAgICAgIH0KKyAgICAg ICAgaWYgKCByYyApCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBod19pbmZvLT51LmNh dC5jb3NfbWF4ID0gc3lzY3RsLnUucHNyX2FsbG9jLnUuY2F0X2luZm8uY29zX21heDsKKyAgICAg ICAgaHdfaW5mby0+dS5jYXQuY2JtX2xlbiA9IHN5c2N0bC51LnBzcl9hbGxvYy51LmNhdF9pbmZv LmNibV9sZW47CisgICAgICAgIGh3X2luZm8tPnUuY2F0LmNkcF9lbmFibGVkID0gc3lzY3RsLnUu cHNyX2FsbG9jLnUuY2F0X2luZm8uZmxhZ3MgJgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFhFTl9TWVNDVExfUFNSX0wzX0NEUDsKKworICAgICAgICBicmVhazsKKyAgICBj YXNlIFhDX1BTUl9NQkE6CisgICAgICAgIHN5c2N0bC51LnBzcl9hbGxvYy5jbWQgPSBYRU5fU1lT Q1RMX1BTUl9nZXRfbWJhX2luZm87CisgICAgICAgIHJjID0geGNfc3lzY3RsKHhjaCwgJnN5c2N0 bCk7CisgICAgICAgIGlmICggcmMgKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgaHdf aW5mby0+dS5tYmEuY29zX21heCA9IHN5c2N0bC51LnBzcl9hbGxvYy51Lm1iYV9pbmZvLmNvc19t YXg7CisgICAgICAgIGh3X2luZm8tPnUubWJhLnRocnRsX21heCA9IHN5c2N0bC51LnBzcl9hbGxv Yy51Lm1iYV9pbmZvLnRocnRsX21heDsKKyAgICAgICAgaHdfaW5mby0+dS5tYmEubGluZWFyID0g c3lzY3RsLnUucHNyX2FsbG9jLnUubWJhX2luZm8uZmxhZ3MgJgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBYRU5fU1lTQ1RMX1BTUl9NQkFfTElORUFSOworCiAgICAgICAgIGJyZWFr OwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGVycm5vID0gRU9QTk9UU1VQUDsKZGlmZiAtLWdpdCBh L3Rvb2xzL2xpYnhsL2xpYnhsX3Bzci5jIGIvdG9vbHMvbGlieGwvbGlieGxfcHNyLmMKaW5kZXgg NGE2OTc4ZS4uNzM0OTQ5MCAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwvbGlieGxfcHNyLmMKKysr IGIvdG9vbHMvbGlieGwvbGlieGxfcHNyLmMKQEAgLTM2MSw2ICszNjEsMjkgQEAgaW50IGxpYnhs X3Bzcl9jYXRfZ2V0X2NibShsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQsCiAgICAgcmV0 dXJuIHJjOwogfQogCitzdGF0aWMgeGNfcHNyX2ZlYXRfdHlwZSBsaWJ4bF9fZmVhdF90eXBlX3Rv X2xpYnhjX2ZlYXRfdHlwZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9wc3Jf ZmVhdF90eXBlIHR5cGUsIHVuc2lnbmVkIGludCBsdmwpCit7CisgICAgeGNfcHNyX2ZlYXRfdHlw ZSB4Y190eXBlOworCisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBMSUJYTF9QU1JfRkVB VF9UWVBFX0NBVDoKKyAgICAgICAgaWYgKGx2bCA9PSAzKQorICAgICAgICAgICAgeGNfdHlwZSA9 IFhDX1BTUl9DQVRfTDM7CisgICAgICAgIGlmIChsdmwgPT0gMikKKyAgICAgICAgICAgIHhjX3R5 cGUgPSBYQ19QU1JfQ0FUX0wyOworICAgICAgICBicmVhazsKKyAgICBjYXNlIExJQlhMX1BTUl9G RUFUX1RZUEVfTUJBOgorICAgICAgICB4Y190eXBlID0gWENfUFNSX01CQTsKKyAgICAgICAgYnJl YWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgLyogQ291bGQgbm90IGhhcHBlbiAqLworICAgICAg ICBhc3NlcnQoMCk7CisgICAgfQorCisgICAgcmV0dXJuIHhjX3R5cGU7Cit9CisKIGludCBsaWJ4 bF9wc3JfY2F0X2dldF9pbmZvKGxpYnhsX2N0eCAqY3R4LCBsaWJ4bF9wc3JfY2F0X2luZm8gKipp bmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICpuciwgdW5zaWdu ZWQgaW50IGx2bCkKIHsKQEAgLTM2OSw2ICszOTIsOCBAQCBpbnQgbGlieGxfcHNyX2NhdF9nZXRf aW5mbyhsaWJ4bF9jdHggKmN0eCwgbGlieGxfcHNyX2NhdF9pbmZvICoqaW5mbywKICAgICBpbnQg aSA9IDAsIHNvY2tldGlkLCBucl9zb2NrZXRzOwogICAgIGxpYnhsX2JpdG1hcCBzb2NrZXRtYXA7 CiAgICAgbGlieGxfcHNyX2NhdF9pbmZvICpwdHI7CisgICAgeGNfcHNyX2h3X2luZm8gaHdfaW5m bzsKKyAgICB4Y19wc3JfZmVhdF90eXBlIHhjX3R5cGU7CiAKICAgICBsaWJ4bF9iaXRtYXBfaW5p dCgmc29ja2V0bWFwKTsKIApAQCAtMzg1LDE2ICs0MTAsMjMgQEAgaW50IGxpYnhsX3Bzcl9jYXRf Z2V0X2luZm8obGlieGxfY3R4ICpjdHgsIGxpYnhsX3Bzcl9jYXRfaW5mbyAqKmluZm8sCiAgICAg ICAgIGdvdG8gb3V0OwogICAgIH0KIAorICAgIHhjX3R5cGUgPSBsaWJ4bF9fZmVhdF90eXBlX3Rv X2xpYnhjX2ZlYXRfdHlwZShMSUJYTF9QU1JfRkVBVF9UWVBFX0NBVCwgbHZsKTsKKwogICAgIHB0 ciA9IGxpYnhsX19tYWxsb2MoTk9HQywgbnJfc29ja2V0cyAqIHNpemVvZihsaWJ4bF9wc3JfY2F0 X2luZm8pKTsKIAogICAgIGxpYnhsX2Zvcl9lYWNoX3NldF9iaXQoc29ja2V0aWQsIHNvY2tldG1h cCkgewogICAgICAgICBwdHJbaV0uaWQgPSBzb2NrZXRpZDsKLSAgICAgICAgaWYgKHhjX3Bzcl9j YXRfZ2V0X2luZm8oY3R4LT54Y2gsIHNvY2tldGlkLCBsdmwsICZwdHJbaV0uY29zX21heCwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnB0cltpXS5jYm1fbGVuLCAmcHRyW2ldLmNk cF9lbmFibGVkKSkgeworICAgICAgICBpZiAoeGNfcHNyX2dldF9od19pbmZvKGN0eC0+eGNoLCBz b2NrZXRpZCwgeGNfdHlwZSwgJmh3X2luZm8pKSB7CisgICAgICAgICAgICBMT0dFKEVSUk9SLCAi ZmFpbGVkIHRvIGdldCBodyBpbmZvIik7CiAgICAgICAgICAgICByYyA9IEVSUk9SX0ZBSUw7CiAg ICAgICAgICAgICBmcmVlKHB0cik7CiAgICAgICAgICAgICBnb3RvIG91dDsKICAgICAgICAgfQor CisgICAgICAgIHB0cltpXS5jb3NfbWF4ID0gaHdfaW5mby51LmNhdC5jb3NfbWF4OworICAgICAg ICBwdHJbaV0uY2JtX2xlbiA9IGh3X2luZm8udS5jYXQuY2JtX2xlbjsKKyAgICAgICAgcHRyW2ld LmNkcF9lbmFibGVkID0gaHdfaW5mby51LmNhdC5jZHBfZW5hYmxlZDsKKwogICAgICAgICBpKys7 CiAgICAgfQogCi0tIAoxLjkuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5v cmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=