From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v6 21/24] tools: L2 CAT: support get HW info for L2 CAT. Date: Wed, 8 Feb 2017 16:16:13 +0800 Message-ID: <1486541776-8406-22-git-send-email-yi.y.sun@linux.intel.com> References: <1486541776-8406-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 1cbNTr-0006XW-6Z for xen-devel@lists.xenproject.org; Wed, 08 Feb 2017 08:19:59 +0000 In-Reply-To: <1486541776-8406-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: kevin.tian@intel.com, wei.liu2@citrix.com, andrew.cooper3@citrix.com, dario.faggioli@citrix.com, he.chen@linux.intel.com, ian.jackson@eu.citrix.com, Yi Sun , mengxu@cis.upenn.edu, jbeulich@suse.com, chao.p.peng@linux.intel.com List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBpbXBsZW1lbnRzIHhsL3hjIGNoYW5nZXMgdG8gc3VwcG9ydCBnZXQgSFcgaW5m bwpmb3IgTDIgQ0FULgoKJ3hsIHBzci1od2luZm8nIGlzIHVwZGF0ZWQgdG8gc2hvdyBib3RoIEwz IENBVCBhbmQgTDIgQ0FUCmluZm8uCgpFeGFtcGxlKG9uIG1hY2hpbmUgd2hpY2ggb25seSBzdXBw b3J0cyBMMiBDQVQpOgpDYWNoZSBNb25pdG9yaW5nIFRlY2hub2xvZ3kgKENNVCk6CkVuYWJsZWQg ICAgICAgICA6IDAKQ2FjaGUgQWxsb2NhdGlvbiBUZWNobm9sb2d5IChDQVQpOiBMMgpTb2NrZXQg SUQgICAgICAgOiAwCk1heGltdW0gQ09TICAgICA6IDMKQ0JNIGxlbmd0aCAgICAgIDogOApEZWZh dWx0IENCTSAgICAgOiAweGZmCgpTaWduZWQtb2ZmLWJ5OiBIZSBDaGVuIDxoZS5jaGVuQGxpbnV4 LmludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogWWkgU3VuIDx5aS55LnN1bkBsaW51eC5pbnRlbC5j b20+CkFja2VkLWJ5OiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPgotLS0KIHRvb2xzL2xp YnhjL2luY2x1ZGUveGVuY3RybC5oIHwgIDYgKystLS0KIHRvb2xzL2xpYnhjL3hjX3Bzci5jICAg ICAgICAgIHwgMzkgKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0KIHRvb2xzL2xpYnhs L2xpYnhsLmggICAgICAgICAgIHwgIDkgKysrKysrKysKIHRvb2xzL2xpYnhsL2xpYnhsX3Bzci5j ICAgICAgIHwgMTkgKysrKysrKysrKystLS0tLQogdG9vbHMvbGlieGwvbGlieGxfdHlwZXMuaWRs ICAgfCAgMSArCiB0b29scy9saWJ4bC94bF9jbWRpbXBsLmMgICAgICB8IDUyICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0KIDYgZmlsZXMgY2hhbmdlZCwgOTUgaW5z ZXJ0aW9ucygrKSwgMzEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMvaW5j bHVkZS94ZW5jdHJsLmggYi90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaAppbmRleCA4NWQ3 ZmU1Li43MzA4MzMyIDEwMDY0NAotLS0gYS90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaAor KysgYi90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaApAQCAtMjYzNyw5ICsyNjM3LDkgQEAg aW50IHhjX3Bzcl9jYXRfc2V0X2RvbWFpbl9kYXRhKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJf dCBkb21pZCwKIGludCB4Y19wc3JfY2F0X2dldF9kb21haW5fZGF0YSh4Y19pbnRlcmZhY2UgKnhj aCwgdWludDMyX3QgZG9taWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGNfcHNy X2NhdF90eXBlIHR5cGUsIHVpbnQzMl90IHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1aW50NjRfdCAqZGF0YSk7Ci1pbnQgeGNfcHNyX2NhdF9nZXRfbDNfaW5mbyh4Y19p bnRlcmZhY2UgKnhjaCwgdWludDMyX3Qgc29ja2V0LAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgdWludDMyX3QgKmNvc19tYXgsIHVpbnQzMl90ICpjYm1fbGVuLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgYm9vbCAqY2RwX2VuYWJsZWQpOworaW50IHhjX3Bzcl9jYXRfZ2V0X2luZm8o eGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90IHNvY2tldCwgdW5zaWduZWQgaW50IGx2bCwKKyAg ICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICpjb3NfbWF4LCB1aW50MzJfdCAqY2JtX2xl biwKKyAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgKmNkcF9lbmFibGVkKTsKIAogaW50IHhj X2dldF9jcHVfbGV2ZWxsaW5nX2NhcHMoeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90ICpjYXBz KTsKIGludCB4Y19nZXRfY3B1X2ZlYXR1cmVzZXQoeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90 IGluZGV4LApkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMveGNfcHNyLmMgYi90b29scy9saWJ4Yy94 Y19wc3IuYwppbmRleCA0M2IzMjg2Li5kZTQwNjE1IDEwMDY0NAotLS0gYS90b29scy9saWJ4Yy94 Y19wc3IuYworKysgYi90b29scy9saWJ4Yy94Y19wc3IuYwpAQCAtMzE3LDI0ICszMTcsNDEgQEAg aW50IHhjX3Bzcl9jYXRfZ2V0X2RvbWFpbl9kYXRhKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJf dCBkb21pZCwKICAgICByZXR1cm4gcmM7CiB9CiAKLWludCB4Y19wc3JfY2F0X2dldF9sM19pbmZv KHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBzb2NrZXQsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICB1aW50MzJfdCAqY29zX21heCwgdWludDMyX3QgKmNibV9sZW4sCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICBib29sICpjZHBfZW5hYmxlZCkKK2ludCB4Y19wc3JfY2F0X2dldF9p bmZvKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBzb2NrZXQsIHVuc2lnbmVkIGludCBsdmws CisgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqY29zX21heCwgdWludDMyX3QgKmNi bV9sZW4sIGJvb2wgKmNkcF9lbmFibGVkKQogewotICAgIGludCByYzsKKyAgICBpbnQgcmMgPSAt MTsKICAgICBERUNMQVJFX1NZU0NUTDsKIAogICAgIHN5c2N0bC5jbWQgPSBYRU5fU1lTQ1RMX3Bz cl9jYXRfb3A7Ci0gICAgc3lzY3RsLnUucHNyX2NhdF9vcC5jbWQgPSBYRU5fU1lTQ1RMX1BTUl9D QVRfZ2V0X2wzX2luZm87CiAgICAgc3lzY3RsLnUucHNyX2NhdF9vcC50YXJnZXQgPSBzb2NrZXQ7 CiAKLSAgICByYyA9IHhjX3N5c2N0bCh4Y2gsICZzeXNjdGwpOwotICAgIGlmICggIXJjICkKKyAg ICBzd2l0Y2ggKCBsdmwgKQogICAgIHsKLSAgICAgICAgKmNvc19tYXggPSBzeXNjdGwudS5wc3Jf Y2F0X29wLnUubDNfaW5mby5jb3NfbWF4OwotICAgICAgICAqY2JtX2xlbiA9IHN5c2N0bC51LnBz cl9jYXRfb3AudS5sM19pbmZvLmNibV9sZW47Ci0gICAgICAgICpjZHBfZW5hYmxlZCA9IHN5c2N0 bC51LnBzcl9jYXRfb3AudS5sM19pbmZvLmZsYWdzICYKLSAgICAgICAgICAgICAgICAgICAgICAg WEVOX1NZU0NUTF9QU1JfQ0FUX0wzX0NEUDsKKyAgICBjYXNlIDI6CisgICAgICAgIHN5c2N0bC51 LnBzcl9jYXRfb3AuY21kID0gWEVOX1NZU0NUTF9QU1JfQ0FUX2dldF9sMl9pbmZvOworICAgICAg ICByYyA9IHhjX3N5c2N0bCh4Y2gsICZzeXNjdGwpOworICAgICAgICBpZiAoICFyYyApCisgICAg ICAgIHsKKyAgICAgICAgICAgICpjb3NfbWF4ID0gc3lzY3RsLnUucHNyX2NhdF9vcC51LmwyX2lu Zm8uY29zX21heDsKKyAgICAgICAgICAgICpjYm1fbGVuID0gc3lzY3RsLnUucHNyX2NhdF9vcC51 LmwyX2luZm8uY2JtX2xlbjsKKyAgICAgICAgICAgICpjZHBfZW5hYmxlZCA9IGZhbHNlOworICAg ICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMzoKKyAgICAgICAgc3lzY3RsLnUucHNy X2NhdF9vcC5jbWQgPSBYRU5fU1lTQ1RMX1BTUl9DQVRfZ2V0X2wzX2luZm87CisgICAgICAgIHJj ID0geGNfc3lzY3RsKHhjaCwgJnN5c2N0bCk7CisgICAgICAgIGlmICggIXJjICkKKyAgICAgICAg eworICAgICAgICAgICAgKmNvc19tYXggPSBzeXNjdGwudS5wc3JfY2F0X29wLnUubDNfaW5mby5j b3NfbWF4OworICAgICAgICAgICAgKmNibV9sZW4gPSBzeXNjdGwudS5wc3JfY2F0X29wLnUubDNf aW5mby5jYm1fbGVuOworICAgICAgICAgICAgKmNkcF9lbmFibGVkID0gc3lzY3RsLnUucHNyX2Nh dF9vcC51LmwzX2luZm8uZmxhZ3MgJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgWEVOX1NZ U0NUTF9QU1JfQ0FUX0wzX0NEUDsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBkZWZh dWx0OgorICAgICAgICBlcnJubyA9IEVPUE5PVFNVUFA7CisgICAgICAgIGJyZWFrOwogICAgIH0K IAogICAgIHJldHVybiByYzsKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsLmggYi90b29s cy9saWJ4bC9saWJ4bC5oCmluZGV4IDM5MjQ0NjQuLmM3NWE5MjggMTAwNjQ0Ci0tLSBhL3Rvb2xz L2xpYnhsL2xpYnhsLmgKKysrIGIvdG9vbHMvbGlieGwvbGlieGwuaApAQCAtOTA0LDYgKzkwNCwx MyBAQCB2b2lkIGxpYnhsX21hY19jb3B5KGxpYnhsX2N0eCAqY3R4LCBsaWJ4bF9tYWMgKmRzdCwg Y29uc3QgbGlieGxfbWFjICpzcmMpOwogICogSWYgdGhpcyBpcyBkZWZpbmVkLCB0aGUgQ29kZSBh bmQgRGF0YSBQcmlvcml0aXphdGlvbiBmZWF0dXJlIGlzIHN1cHBvcnRlZC4KICAqLwogI2RlZmlu ZSBMSUJYTF9IQVZFX1BTUl9DRFAgMQorCisvKgorICogTElCWExfSEFWRV9QU1JfTDJfQ0FUCisg KgorICogSWYgdGhpcyBpcyBkZWZpbmVkLCB0aGUgTDIgQ2FjaGUgQWxsb2NhdGlvbiBUZWNobm9s b2d5IGZlYXR1cmUgaXMgc3VwcG9ydGVkLgorICovCisjZGVmaW5lIExJQlhMX0hBVkVfUFNSX0wy X0NBVCAxCiAjZW5kaWYKIAogLyoKQEAgLTIxNjYsNiArMjE3Myw4IEBAIGludCBsaWJ4bF9wc3Jf Y2F0X2dldF9jYm0obGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLAogICogT24gc3VjY2Vz cywgdGhlIGZ1bmN0aW9uIHJldHVybnMgYW4gYXJyYXkgb2YgZWxlbWVudHMgaW4gJ2luZm8nLAog ICogYW5kIHRoZSBsZW5ndGggaW4gJ25yJy4KICAqLworaW50IGxpYnhsX3Bzcl9jYXRfZ2V0X2lu Zm8obGlieGxfY3R4ICpjdHgsIGxpYnhsX3Bzcl9jYXRfaW5mbyAqKmluZm8sCisgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbnQgKm5yLCB1bnNpZ25lZCBpbnQgbHZsKTsKIGludCBsaWJ4bF9w c3JfY2F0X2dldF9sM19pbmZvKGxpYnhsX2N0eCAqY3R4LCBsaWJ4bF9wc3JfY2F0X2luZm8gKipp bmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpucik7CiB2b2lkIGxpYnhs X3Bzcl9jYXRfaW5mb19saXN0X2ZyZWUobGlieGxfcHNyX2NhdF9pbmZvICpsaXN0LCBpbnQgbnIp OwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGxfcHNyLmMgYi90b29scy9saWJ4bC9saWJ4 bF9wc3IuYwppbmRleCBlYzVjNzlkLi42OGM0NWRhIDEwMDY0NAotLS0gYS90b29scy9saWJ4bC9s aWJ4bF9wc3IuYworKysgYi90b29scy9saWJ4bC9saWJ4bF9wc3IuYwpAQCAtMzUyLDggKzM1Miw4 IEBAIGludCBsaWJ4bF9wc3JfY2F0X2dldF9jYm0obGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRv bWlkLAogICAgIHJldHVybiByYzsKIH0KIAotaW50IGxpYnhsX3Bzcl9jYXRfZ2V0X2wzX2luZm8o bGlieGxfY3R4ICpjdHgsIGxpYnhsX3Bzcl9jYXRfaW5mbyAqKmluZm8sCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbnQgKm5yKQoraW50IGxpYnhsX3Bzcl9jYXRfZ2V0X2luZm8obGli eGxfY3R4ICpjdHgsIGxpYnhsX3Bzcl9jYXRfaW5mbyAqKmluZm8sCisgICAgICAgICAgICAgICAg ICAgICAgICAgICBpbnQgKm5yLCB1bnNpZ25lZCBpbnQgbHZsKQogewogICAgIEdDX0lOSVQoY3R4 KTsKICAgICBpbnQgcmM7CkBAIC0zODAsOSArMzgwLDggQEAgaW50IGxpYnhsX3Bzcl9jYXRfZ2V0 X2wzX2luZm8obGlieGxfY3R4ICpjdHgsIGxpYnhsX3Bzcl9jYXRfaW5mbyAqKmluZm8sCiAKICAg ICBsaWJ4bF9mb3JfZWFjaF9zZXRfYml0KHNvY2tldGlkLCBzb2NrZXRtYXApIHsKICAgICAgICAg cHRyW2ldLmlkID0gc29ja2V0aWQ7Ci0gICAgICAgIGlmICh4Y19wc3JfY2F0X2dldF9sM19pbmZv KGN0eC0+eGNoLCBzb2NrZXRpZCwgJnB0cltpXS5jb3NfbWF4LAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAmcHRyW2ldLmNibV9sZW4sICZwdHJbaV0uY2RwX2VuYWJsZWQpKSB7 Ci0gICAgICAgICAgICBsaWJ4bF9fcHNyX2NhdF9sb2dfZXJyX21zZyhnYywgZXJybm8pOworICAg ICAgICBpZiAoeGNfcHNyX2NhdF9nZXRfaW5mbyhjdHgtPnhjaCwgc29ja2V0aWQsIGx2bCwgJnB0 cltpXS5jb3NfbWF4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcHRyW2ldLmNi bV9sZW4sICZwdHJbaV0uY2RwX2VuYWJsZWQpKSB7CiAgICAgICAgICAgICByYyA9IEVSUk9SX0ZB SUw7CiAgICAgICAgICAgICBmcmVlKHB0cik7CiAgICAgICAgICAgICBnb3RvIG91dDsKQEAgLTM5 OCw2ICszOTcsMTYgQEAgb3V0OgogICAgIHJldHVybiByYzsKIH0KIAoraW50IGxpYnhsX3Bzcl9j YXRfZ2V0X2wzX2luZm8obGlieGxfY3R4ICpjdHgsIGxpYnhsX3Bzcl9jYXRfaW5mbyAqKmluZm8s CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKm5yKQoreworICAgIGludCByYzsK KworICAgIHJjID0gbGlieGxfcHNyX2NhdF9nZXRfaW5mbyhjdHgsIGluZm8sIG5yLCAzKTsKKwor ICAgIHJldHVybiByYzsKK30KKwogdm9pZCBsaWJ4bF9wc3JfY2F0X2luZm9fbGlzdF9mcmVlKGxp YnhsX3Bzcl9jYXRfaW5mbyAqbGlzdCwgaW50IG5yKQogewogICAgIGludCBpOwpkaWZmIC0tZ2l0 IGEvdG9vbHMvbGlieGwvbGlieGxfdHlwZXMuaWRsIGIvdG9vbHMvbGlieGwvbGlieGxfdHlwZXMu aWRsCmluZGV4IGE2MTJkMWYuLjVhNDAxYjggMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhs X3R5cGVzLmlkbAorKysgYi90b29scy9saWJ4bC9saWJ4bF90eXBlcy5pZGwKQEAgLTg5OSw2ICs4 OTksNyBAQCBsaWJ4bF9wc3JfY2JtX3R5cGUgPSBFbnVtZXJhdGlvbigicHNyX2NibV90eXBlIiwg WwogICAgICgxLCAiTDNfQ0JNIiksCiAgICAgKDIsICJMM19DQk1fQ09ERSIpLAogICAgICgzLCAi TDNfQ0JNX0RBVEEiKSwKKyAgICAoNCwgIkwyX0NCTSIpLAogICAgIF0pCiAKIGxpYnhsX3Bzcl9j YXRfaW5mbyA9IFN0cnVjdCgicHNyX2NhdF9pbmZvIiwgWwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGli eGwveGxfY21kaW1wbC5jIGIvdG9vbHMvbGlieGwveGxfY21kaW1wbC5jCmluZGV4IDM1ODc1N2Yu LjA2MjcwOWYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhsL3hsX2NtZGltcGwuYworKysgYi90b29s cy9saWJ4bC94bF9jbWRpbXBsLmMKQEAgLTkzMzgsMjEgKzkzMzgsMTkgQEAgaW50IG1haW5fcHNy X2NtdF9zaG93KGludCBhcmdjLCBjaGFyICoqYXJndikKIH0KICNlbmRpZgogCi0jaWZkZWYgTElC WExfSEFWRV9QU1JfQ0FUCi1zdGF0aWMgaW50IHBzcl9jYXRfaHdpbmZvKHZvaWQpCisjaWYgZGVm aW5lZChMSUJYTF9IQVZFX1BTUl9DQVQpIHx8IGRlZmluZWQoTElCWExfSEFWRV9QU1JfTDJfQ0FU KQorc3RhdGljIGludCBwc3JfbDNfY2F0X2h3aW5mbyh2b2lkKQogewotICAgIGludCByYzsKLSAg ICBpbnQgaSwgbnI7CisgICAgaW50IHJjLCBucjsKKyAgICB1bnNpZ25lZCBpbnQgaTsKICAgICB1 aW50MzJfdCBsM19jYWNoZV9zaXplOwogICAgIGxpYnhsX3Bzcl9jYXRfaW5mbyAqaW5mbzsKIAot ICAgIHByaW50ZigiQ2FjaGUgQWxsb2NhdGlvbiBUZWNobm9sb2d5IChDQVQpOlxuIik7Ci0KLSAg ICByYyA9IGxpYnhsX3Bzcl9jYXRfZ2V0X2wzX2luZm8oY3R4LCAmaW5mbywgJm5yKTsKLSAgICBp ZiAocmMpIHsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gZ2V0IGNhdCBpbmZv XG4iKTsKKyAgICByYyA9IGxpYnhsX3Bzcl9jYXRfZ2V0X2luZm8oY3R4LCAmaW5mbywgJm5yLCAz KTsKKyAgICBpZiAocmMpCiAgICAgICAgIHJldHVybiByYzsKLSAgICB9CisKKyAgICBwcmludGYo IkNhY2hlIEFsbG9jYXRpb24gVGVjaG5vbG9neSAoQ0FUKTogTDNcbiIpOwogCiAgICAgZm9yIChp ID0gMDsgaSA8IG5yOyBpKyspIHsKICAgICAgICAgcmMgPSBsaWJ4bF9wc3JfY210X2dldF9sM19j YWNoZV9zaXplKGN0eCwgaW5mb1tpXS5pZCwgJmwzX2NhY2hlX3NpemUpOwpAQCAtOTQ2MSw3ICs5 NDU5LDcgQEAgc3RhdGljIGludCBwc3JfY2F0X3Nob3codWludDMyX3QgZG9taWQpCiAgICAgaW50 IHJjOwogICAgIGxpYnhsX3Bzcl9jYXRfaW5mbyAqaW5mbzsKIAotICAgIHJjID0gbGlieGxfcHNy X2NhdF9nZXRfbDNfaW5mbyhjdHgsICZpbmZvLCAmbnIpOworICAgIHJjID0gbGlieGxfcHNyX2Nh dF9nZXRfaW5mbyhjdHgsICZpbmZvLCAmbnIsIDMpOwogICAgIGlmIChyYykgewogICAgICAgICBm cHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBnZXQgY2F0IGluZm9cbiIpOwogICAgICAgICByZXR1 cm4gcmM7CkBAIC05NDc4LDYgKzk0NzYsMzIgQEAgb3V0OgogICAgIHJldHVybiByYzsKIH0KIAor c3RhdGljIGludCBwc3JfbDJfY2F0X2h3aW5mbyh2b2lkKQoreworICAgIGludCByYzsKKyAgICB1 bnNpZ25lZCBpbnQgaTsKKyAgICBpbnQgbnI7CisgICAgbGlieGxfcHNyX2NhdF9pbmZvICppbmZv OworCisgICAgcmMgPSBsaWJ4bF9wc3JfY2F0X2dldF9pbmZvKGN0eCwgJmluZm8sICZuciwgMik7 CisgICAgaWYgKHJjKQorICAgICAgICByZXR1cm4gcmM7CisKKyAgICBwcmludGYoIkNhY2hlIEFs bG9jYXRpb24gVGVjaG5vbG9neSAoQ0FUKTogTDJcbiIpOworCisgICAgZm9yIChpID0gMDsgaSA8 IG5yOyBpKyspIHsKKyAgICAgICAgLyogVGhlcmUgaXMgbm8gQ01UIG9uIEwyIGNhY2hlIHNvIGZh ci4gKi8KKyAgICAgICAgcHJpbnRmKCIlLTE2czogJXVcbiIsICJTb2NrZXQgSUQiLCBpbmZvW2ld LmlkKTsKKyAgICAgICAgcHJpbnRmKCIlLTE2czogJXVcbiIsICJNYXhpbXVtIENPUyIsIGluZm9b aV0uY29zX21heCk7CisgICAgICAgIHByaW50ZigiJS0xNnM6ICV1XG4iLCAiQ0JNIGxlbmd0aCIs IGluZm9baV0uY2JtX2xlbik7CisgICAgICAgIHByaW50ZigiJS0xNnM6ICUjbGx4XG4iLCAiRGVm YXVsdCBDQk0iLAorICAgICAgICAgICAgICAgKDF1bGwgPDwgaW5mb1tpXS5jYm1fbGVuKSAtIDEp OworICAgIH0KKworICAgIGxpYnhsX3Bzcl9jYXRfaW5mb19saXN0X2ZyZWUoaW5mbywgbnIpOwor ICAgIHJldHVybiByYzsKK30KKwogaW50IG1haW5fcHNyX2NhdF9jYm1fc2V0KGludCBhcmdjLCBj aGFyICoqYXJndikKIHsKICAgICB1aW50MzJfdCBkb21pZDsKQEAgLTk1OTUsNyArOTYxOSwxMSBA QCBpbnQgbWFpbl9wc3JfaHdpbmZvKGludCBhcmdjLCBjaGFyICoqYXJndikKICAgICAgICAgcmV0 ID0gcHNyX2NtdF9od2luZm8oKTsKIAogICAgIGlmICghcmV0ICYmIChhbGwgfHwgY2F0KSkKLSAg ICAgICAgcmV0ID0gcHNyX2NhdF9od2luZm8oKTsKKyAgICAgICAgcmV0ID0gcHNyX2wzX2NhdF9o d2luZm8oKTsKKworICAgIC8qIEwyIENBVCBpcyBpbmRlcGVuZGVudCBvZiBDTVQgYW5kIEwzIENB VCAqLworICAgIGlmIChhbGwgfHwgY2F0KQorICAgICAgICByZXQgPSBwc3JfbDJfY2F0X2h3aW5m bygpOwogCiAgICAgcmV0dXJuIHJldDsKIH0KLS0gCjEuOS4xCgoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4t ZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==