From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr1-x441.google.com (mail-wr1-x441.google.com [IPv6:2a00:1450:4864:20::441]) by gabe.freedesktop.org (Postfix) with ESMTPS id 81D9C6E45A for ; Wed, 3 Oct 2018 12:07:29 +0000 (UTC) Received: by mail-wr1-x441.google.com with SMTP id z4-v6so5845770wrb.1 for ; Wed, 03 Oct 2018 05:07:29 -0700 (PDT) From: Tvrtko Ursulin Date: Wed, 3 Oct 2018 13:07:16 +0100 Message-Id: <20181003120718.6898-5-tvrtko.ursulin@linux.intel.com> In-Reply-To: <20181003120718.6898-1-tvrtko.ursulin@linux.intel.com> References: <20181003120718.6898-1-tvrtko.ursulin@linux.intel.com> Subject: [igt-dev] [RFC i-g-t 4/6] tests/perf_pmu: Add tests for engine queued/runnable/running stats List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: igt-dev@lists.freedesktop.org Cc: Intel-gfx@lists.freedesktop.org, Tvrtko Ursulin List-ID: RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KClNpbXBsZSB0 ZXN0cyB0byBjaGVjayByZXBvcnRlZCBxdWV1ZSBkZXB0aHMgYXJlIGNvcnJlY3QuCgp2MjoKICog SW1wcm92ZW1lbnRzIHNpbWlsYXIgdG8gb25lcyBmcm9tIGk5MTVfcXVlcnkuYy4KCnYzOgogKiBS ZWJhc2UgZm9yIF9faWd0X3NwaW5fYmF0Y2hfbmV3LgoKU2lnbmVkLW9mZi1ieTogVHZydGtvIFVy c3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KLS0tCiB0ZXN0cy9wZXJmX3BtdS5jIHwg MjU5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAxIGZp bGUgY2hhbmdlZCwgMjU5IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS90ZXN0cy9wZXJmX3Bt dS5jIGIvdGVzdHMvcGVyZl9wbXUuYwppbmRleCA2YWIyNTk1YjExNGQuLjZmMDY0YjYwNWE0YyAx MDA2NDQKLS0tIGEvdGVzdHMvcGVyZl9wbXUuYworKysgYi90ZXN0cy9wZXJmX3BtdS5jCkBAIC0x NjksNiArMTY5LDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBlMnJpbmcoaW50IGdlbV9mZCwgY29u c3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQogI2RlZmluZSBURVNUX1JVTlRJ TUVfUE0gKDgpCiAjZGVmaW5lIEZMQUdfTE9ORyAoMTYpCiAjZGVmaW5lIEZMQUdfSEFORyAoMzIp CisjZGVmaW5lIFRFU1RfQ09OVEVYVFMgKDY0KQogCiBzdGF0aWMgaWd0X3NwaW5fdCAqIF9fc3Bp bl9wb2xsKGludCBmZCwgdWludDMyX3QgY3R4LCB1bnNpZ25lZCBsb25nIGZsYWdzKQogewpAQCAt OTU5LDYgKzk2MCwyMjQgQEAgbXVsdGlfY2xpZW50KGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBp bnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkKIAlhc3NlcnRfd2l0aGluX2Vwc2lsb24odmFsWzFd LCBwZXJmX3NsZXB0WzFdLCB0b2xlcmFuY2UpOwogfQogCitzdGF0aWMgZG91YmxlIGNhbGNfcXVl dWVkKHVpbnQ2NF90IGRfdmFsLCB1aW50NjRfdCBkX25zKQoreworCXJldHVybiAoZG91YmxlKWRf dmFsICogMWU5IC8gSTkxNV9TQU1QTEVfUVVFVUVEX0RJVklTT1IgLyBkX25zOworfQorCitzdGF0 aWMgdm9pZAorcXVldWVkKGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25f ZW5naW5lMiAqZSwgdW5zaWduZWQgaW50IGZsYWdzKQoreworCWNvbnN0IHVuc2lnbmVkIGxvbmcg ZW5naW5lID0gZTJyaW5nKGdlbV9mZCwgZSk7CisJY29uc3QgdWludDMyX3QgYmJlID0gTUlfQkFU Q0hfQlVGRkVSX0VORDsKKwljb25zdCB1bnNpZ25lZCBpbnQgbWF4X3JxID0gMTA7CisJZG91Ymxl IHF1ZXVlZFttYXhfcnEgKyAxXTsKKwl1bnNpZ25lZCBpbnQgbiwgaTsKKwl1aW50NjRfdCB2YWxb Ml07CisJdWludDY0X3QgdHNbMl07CisJdWludDMyX3QgYm87CisJaW50IGZkOworCisJaWd0X3Jl cXVpcmVfc3dfc3luYygpOworCWlmIChmbGFncyAmIFRFU1RfQ09OVEVYVFMpCisJCWdlbV9yZXF1 aXJlX2NvbnRleHRzKGdlbV9mZCk7CisKKwltZW1zZXQocXVldWVkLCAwLCBzaXplb2YocXVldWVk KSk7CisKKwlibyA9IGdlbV9jcmVhdGUoZ2VtX2ZkLCA0MDk2KTsKKwlnZW1fd3JpdGUoZ2VtX2Zk LCBibywgNDA5MiwgJmJiZSwgc2l6ZW9mKGJiZSkpOworCisJZmQgPSBvcGVuX3BtdShJOTE1X1BN VV9FTkdJTkVfUVVFVUVEKGUtPmNsYXNzLCBlLT5pbnN0YW5jZSkpOworCisJZm9yIChuID0gMDsg biA8PSBtYXhfcnE7IG4rKykgeworCQlJR1RfQ09SS19GRU5DRShjb3JrKTsKKwkJaW50IGZlbmNl ID0gLTE7CisKKwkJZ2VtX3F1aWVzY2VudF9ncHUoZ2VtX2ZkKTsKKworCQlpZiAobikKKwkJCWZl bmNlID0gaWd0X2NvcmtfcGx1ZygmY29yaywgLTEpOworCisJCWZvciAoaSA9IDA7IGkgPCBuOyBp KyspIHsKKwkJCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyIG9iaiA9IHsgfTsKKwkJ CXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIgZWIgPSB7IH07CisKKwkJCW9iai5oYW5k bGUgPSBibzsKKworCQkJZWIuYnVmZmVyX2NvdW50ID0gMTsKKwkJCWViLmJ1ZmZlcnNfcHRyID0g dG9fdXNlcl9wb2ludGVyKCZvYmopOworCisJCQllYi5mbGFncyA9IGVuZ2luZSB8IEk5MTVfRVhF Q19GRU5DRV9JTjsKKwkJCWlmIChmbGFncyAmIFRFU1RfQ09OVEVYVFMpCisJCQkJZWIucnN2ZDEg PSBnZW1fY29udGV4dF9jcmVhdGUoZ2VtX2ZkKTsKKwkJCWViLnJzdmQyID0gZmVuY2U7CisKKwkJ CWdlbV9leGVjYnVmKGdlbV9mZCwgJmViKTsKKworCQkJaWYgKGZsYWdzICYgVEVTVF9DT05URVhU UykKKwkJCQlnZW1fY29udGV4dF9kZXN0cm95KGdlbV9mZCwgZWIucnN2ZDEpOworCQl9CisKKwkJ dmFsWzBdID0gX19wbXVfcmVhZF9zaW5nbGUoZmQsICZ0c1swXSk7CisJCXVzbGVlcChiYXRjaF9k dXJhdGlvbl9ucyAvIDEwMDApOworCQl2YWxbMV0gPSBfX3BtdV9yZWFkX3NpbmdsZShmZCwgJnRz WzFdKTsKKworCQlxdWV1ZWRbbl0gPSBjYWxjX3F1ZXVlZCh2YWxbMV0gLSB2YWxbMF0sIHRzWzFd IC0gdHNbMF0pOworCQlpZ3RfaW5mbygibj0ldSBxdWV1ZWQ9JS4yZlxuIiwgbiwgcXVldWVkW25d KTsKKworCQlpZiAoZmVuY2UgPj0gMCkKKwkJCWlndF9jb3JrX3VucGx1ZygmY29yayk7CisKKwkJ Zm9yIChpID0gMDsgaSA8IG47IGkrKykKKwkJCWdlbV9zeW5jKGdlbV9mZCwgYm8pOworCX0KKwor CWNsb3NlKGZkKTsKKworCWdlbV9jbG9zZShnZW1fZmQsIGJvKTsKKworCWZvciAoaSA9IDA7IGkg PD0gbWF4X3JxOyBpKyspCisJCWFzc2VydF93aXRoaW5fZXBzaWxvbihxdWV1ZWRbaV0sIGksIHRv bGVyYW5jZSk7Cit9CisKK3N0YXRpYyB1bnNpZ25lZCBsb25nIF9fcXVlcnlfd2FpdChpZ3Rfc3Bp bl90ICpzcGluLCB1bnNpZ25lZCBpbnQgbikKK3sKKwlzdHJ1Y3QgdGltZXNwZWMgdHMgPSB7IH07 CisJdW5zaWduZWQgbG9uZyB0OworCisJaWd0X25zZWNfZWxhcHNlZCgmdHMpOworCisJaWYgKHNw aW4tPnJ1bm5pbmcpIHsKKwkJaWd0X3NwaW5fYnVzeXdhaXRfdW50aWxfcnVubmluZyhzcGluKTsK Kwl9IGVsc2UgeworCQlpZ3RfZGVidWcoIl9fc3Bpbl93YWl0IC0gdXNsZWVwIG1vZGVcbiIpOwor CQl1c2xlZXAoNTAwZTMpOyAvKiBCZXR0ZXIgdGhhbiBub3RoaW5nISAqLworCX0KKworCXQgPSBp Z3RfbnNlY19lbGFwc2VkKCZ0cyk7CisKKwlyZXR1cm4gc3Bpbi0+cnVubmluZyA/IHQgOiA1MDBl NiAvIG47Cit9CisKK3N0YXRpYyB2b2lkCitydW5uYWJsZShpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1 Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpCit7CisJY29uc3QgdW5zaWduZWQgbG9uZyBl bmdpbmUgPSBlMnJpbmcoZ2VtX2ZkLCBlKTsKKwlib29sIGNvbnRleHRzID0gZ2VtX2hhc19jb250 ZXh0cyhnZW1fZmQpOworCWNvbnN0IHVuc2lnbmVkIGludCBtYXhfcnEgPSAxMDsKKwlpZ3Rfc3Bp bl90ICpzcGluW21heF9ycSArIDFdOworCWRvdWJsZSBydW5uYWJsZVttYXhfcnEgKyAxXTsKKwl1 aW50MzJfdCBjdHhbbWF4X3JxXTsKKwl1bnNpZ25lZCBpbnQgbiwgaTsKKwl1aW50NjRfdCB2YWxb Ml07CisJdWludDY0X3QgdHNbMl07CisJaW50IGZkOworCisJbWVtc2V0KHJ1bm5hYmxlLCAwLCBz aXplb2YocnVubmFibGUpKTsKKworCWlmIChjb250ZXh0cykgeworCQlmb3IgKGkgPSAwOyBpIDwg bWF4X3JxOyBpKyspCisJCQljdHhbaV0gPSBnZW1fY29udGV4dF9jcmVhdGUoZ2VtX2ZkKTsKKwl9 CisKKwlmZCA9IG9wZW5fcG11KEk5MTVfUE1VX0VOR0lORV9SVU5OQUJMRShlLT5jbGFzcywgZS0+ aW5zdGFuY2UpKTsKKworCWZvciAobiA9IDA7IG4gPD0gbWF4X3JxOyBuKyspIHsKKwkJZ2VtX3F1 aWVzY2VudF9ncHUoZ2VtX2ZkKTsKKworCQlmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisJCQl1 aW50MzJfdCBjdHhfID0gY29udGV4dHMgPyBjdHhbaV0gOiAwOworCisJCQlpZiAoaSA9PSAwKQor CQkJCXNwaW5baV0gPSBfX3NwaW5fcG9sbChnZW1fZmQsIGN0eF8sIGVuZ2luZSk7CisJCQllbHNl CisJCQkJc3BpbltpXSA9IF9faWd0X3NwaW5fYmF0Y2hfbmV3KGdlbV9mZCwKKwkJCQkJCQkgICAg ICAgLmN0eCA9IGN0eF8sCisJCQkJCQkJICAgICAgIC5lbmdpbmUgPSBlbmdpbmUpOworCQl9CisK KwkJaWYgKG4pCisJCQl1c2xlZXAoX19xdWVyeV93YWl0KHNwaW5bMF0sIG4pICogbik7CisKKwkJ dmFsWzBdID0gX19wbXVfcmVhZF9zaW5nbGUoZmQsICZ0c1swXSk7CisJCXVzbGVlcChiYXRjaF9k dXJhdGlvbl9ucyAvIDEwMDApOworCQl2YWxbMV0gPSBfX3BtdV9yZWFkX3NpbmdsZShmZCwgJnRz WzFdKTsKKworCQlydW5uYWJsZVtuXSA9IGNhbGNfcXVldWVkKHZhbFsxXSAtIHZhbFswXSwgdHNb MV0gLSB0c1swXSk7CisJCWlndF9pbmZvKCJuPSV1IHJ1bm5hYmxlPSUuMmZcbiIsIG4sIHJ1bm5h YmxlW25dKTsKKworCQlmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisJCQllbmRfc3BpbihnZW1f ZmQsIHNwaW5baV0sIEZMQUdfU1lOQyk7CisJCQlpZ3Rfc3Bpbl9iYXRjaF9mcmVlKGdlbV9mZCwg c3BpbltpXSk7CisJCX0KKwl9CisKKwlpZiAoY29udGV4dHMpIHsKKwkJZm9yIChpID0gMDsgaSA8 IG1heF9ycTsgaSsrKQorCQkJZ2VtX2NvbnRleHRfZGVzdHJveShnZW1fZmQsIGN0eFtpXSk7CisJ fQorCisJY2xvc2UoZmQpOworCisJYXNzZXJ0X3dpdGhpbl9lcHNpbG9uKHJ1bm5hYmxlWzBdLCAw LCB0b2xlcmFuY2UpOworCWlndF9hc3NlcnQocnVubmFibGVbbWF4X3JxXSA+IDAuMCk7CisKKwlp ZiAoY29udGV4dHMpCisJCWFzc2VydF93aXRoaW5fZXBzaWxvbihydW5uYWJsZVttYXhfcnFdIC0g cnVubmFibGVbbWF4X3JxIC0gMV0sCisJCQkJICAgICAgMSwgdG9sZXJhbmNlKTsKK30KKworc3Rh dGljIHZvaWQKK3J1bm5pbmcoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlv bl9lbmdpbmUyICplKQoreworCWNvbnN0IHVuc2lnbmVkIGxvbmcgZW5naW5lID0gZTJyaW5nKGdl bV9mZCwgZSk7CisJY29uc3QgdW5zaWduZWQgaW50IG1heF9ycSA9IDEwOworCWlndF9zcGluX3Qg KnNwaW5bbWF4X3JxICsgMV07CisJZG91YmxlIHJ1bm5pbmdbbWF4X3JxICsgMV07CisJdW5zaWdu ZWQgaW50IG4sIGk7CisJdWludDY0X3QgdmFsWzJdOworCXVpbnQ2NF90IHRzWzJdOworCWludCBm ZDsKKworCW1lbXNldChydW5uaW5nLCAwLCBzaXplb2YocnVubmluZykpOworCW1lbXNldChzcGlu LCAwLCBzaXplb2Yoc3BpbikpOworCisJZmQgPSBvcGVuX3BtdShJOTE1X1BNVV9FTkdJTkVfUlVO TklORyhlLT5jbGFzcywgZS0+aW5zdGFuY2UpKTsKKworCWZvciAobiA9IDA7IG4gPD0gbWF4X3Jx OyBuKyspIHsKKwkJZ2VtX3F1aWVzY2VudF9ncHUoZ2VtX2ZkKTsKKworCQlmb3IgKGkgPSAwOyBp IDwgbjsgaSsrKSB7CisJCQlpZiAoaSA9PSAwKQorCQkJCXNwaW5baV0gPSBfX3NwaW5fcG9sbChn ZW1fZmQsIDAsIGVuZ2luZSk7CisJCQllbHNlCisJCQkJc3BpbltpXSA9IF9faWd0X3NwaW5fYmF0 Y2hfbmV3KGdlbV9mZCwKKwkJCQkJCQkgICAgICAgLmVuZ2luZSA9IGVuZ2luZSk7CisJCX0KKwor CQlpZiAobikKKwkJCXVzbGVlcChfX3F1ZXJ5X3dhaXQoc3BpblswXSwgbikgKiBuKTsKKworCQl2 YWxbMF0gPSBfX3BtdV9yZWFkX3NpbmdsZShmZCwgJnRzWzBdKTsKKwkJdXNsZWVwKGJhdGNoX2R1 cmF0aW9uX25zIC8gMTAwMCk7CisJCXZhbFsxXSA9IF9fcG11X3JlYWRfc2luZ2xlKGZkLCAmdHNb MV0pOworCisJCXJ1bm5pbmdbbl0gPSBjYWxjX3F1ZXVlZCh2YWxbMV0gLSB2YWxbMF0sIHRzWzFd IC0gdHNbMF0pOworCQlpZ3RfaW5mbygibj0ldSBydW5uaW5nPSUuMmZcbiIsIG4sIHJ1bm5pbmdb bl0pOworCisJCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKwkJCWVuZF9zcGluKGdlbV9mZCwg c3BpbltpXSwgRkxBR19TWU5DKTsKKwkJCWlndF9zcGluX2JhdGNoX2ZyZWUoZ2VtX2ZkLCBzcGlu W2ldKTsKKwkJfQorCX0KKworCWNsb3NlKGZkKTsKKworCWFzc2VydF93aXRoaW5fZXBzaWxvbihy dW5uaW5nWzBdLCAwLCB0b2xlcmFuY2UpOworCWZvciAoaSA9IDE7IGkgPD0gbWF4X3JxOyBpKysp CisJCWlndF9hc3NlcnQocnVubmluZ1tpXSA+IDApOworfQorCiAvKioKICAqIFRlc3RzIHRoYXQg aTkxNSBQTVUgY29yZWN0bHkgZXJyb3JzIG91dCBpbiBpbnZhbGlkIGluaXRpYWxpemF0aW9uLgog ICogaTkxNSBQTVUgaXMgdW5jb3JlIFBNVSwgdGh1czoKQEAgLTE3MDksNiArMTkyOCwxNSBAQCBp Z3RfbWFpbgogCQlpZ3Rfc3VidGVzdF9mKCJpbml0LXNlbWEtJXMiLCBlLT5uYW1lKQogCQkJaW5p dChmZCwgZSwgSTkxNV9TQU1QTEVfU0VNQSk7CiAKKwkJaWd0X3N1YnRlc3RfZigiaW5pdC1xdWV1 ZWQtJXMiLCBlLT5uYW1lKQorCQkJaW5pdChmZCwgZSwgSTkxNV9TQU1QTEVfUVVFVUVEKTsKKwor CQlpZ3Rfc3VidGVzdF9mKCJpbml0LXJ1bm5hYmxlLSVzIiwgZS0+bmFtZSkKKwkJCWluaXQoZmQs IGUsIEk5MTVfU0FNUExFX1JVTk5BQkxFKTsKKworCQlpZ3Rfc3VidGVzdF9mKCJpbml0LXJ1bm5p bmctJXMiLCBlLT5uYW1lKQorCQkJaW5pdChmZCwgZSwgSTkxNV9TQU1QTEVfUlVOTklORyk7CisK IAkJaWd0X3N1YnRlc3RfZ3JvdXAgewogCQkJaWd0X2ZpeHR1cmUgewogCQkJCWdlbV9yZXF1aXJl X2VuZ2luZShmZCwgZS0+Y2xhc3MsIGUtPmluc3RhbmNlKTsKQEAgLTE4MTQsNiArMjA0MiwyNyBA QCBpZ3RfbWFpbgogCiAJCQlpZ3Rfc3VidGVzdF9mKCJidXN5LWhhbmctJXMiLCBlLT5uYW1lKQog CQkJCXNpbmdsZShmZCwgZSwgVEVTVF9CVVNZIHwgRkxBR19IQU5HKTsKKworCQkJLyoqCisJCQkg KiBUZXN0IHRoYXQgcXVldWVkIG1ldHJpYyB3b3Jrcy4KKwkJCSAqLworCQkJaWd0X3N1YnRlc3Rf ZigicXVldWVkLSVzIiwgZS0+bmFtZSkKKwkJCQlxdWV1ZWQoZmQsIGUsIDApOworCisJCQlpZ3Rf c3VidGVzdF9mKCJxdWV1ZWQtY29udGV4dHMtJXMiLCBlLT5uYW1lKQorCQkJCXF1ZXVlZChmZCwg ZSwgVEVTVF9DT05URVhUUyk7CisKKwkJCS8qKgorCQkJICogVGVzdCB0aGF0IHJ1bm5hYmxlIG1l dHJpYyB3b3Jrcy4KKwkJCSAqLworCQkJaWd0X3N1YnRlc3RfZigicnVubmFibGUtJXMiLCBlLT5u YW1lKQorCQkJCXJ1bm5hYmxlKGZkLCBlKTsKKworCQkJLyoqCisJCQkgKiBUZXN0IHRoYXQgcnVu bmluZyBtZXRyaWMgd29ya3MuCisJCQkgKi8KKwkJCWlndF9zdWJ0ZXN0X2YoInJ1bm5pbmctJXMi LCBlLT5uYW1lKQorCQkJCXJ1bm5pbmcoZmQsIGUpOwogCQl9CiAKIAkJLyoqCkBAIC0xOTA2LDYg KzIxNTUsMTYgQEAgaWd0X21haW4KIAkJCQkJICAgICAgZS0+bmFtZSkKIAkJCQkJc2luZ2xlKHJl bmRlcl9mZCwgZSwKIAkJCQkJICAgICAgIFRFU1RfQlVTWSB8IFRFU1RfVFJBSUxJTkdfSURMRSk7 CisJCQkJaWd0X3N1YnRlc3RfZigicmVuZGVyLW5vZGUtcXVldWVkLSVzIiwgZS0+bmFtZSkKKwkJ CQkJcXVldWVkKHJlbmRlcl9mZCwgZSwgMCk7CisJCQkJaWd0X3N1YnRlc3RfZigicmVuZGVyLW5v ZGUtcXVldWVkLWNvbnRleHRzLSVzIiwKKwkJCQkJICAgICAgZS0+bmFtZSkKKwkJCQkJcXVldWVk KHJlbmRlcl9mZCwgZSwgVEVTVF9DT05URVhUUyk7CisJCQkJaWd0X3N1YnRlc3RfZigicmVuZGVy LW5vZGUtcnVubmFibGUtJXMiLAorCQkJCQkgICAgICBlLT5uYW1lKQorCQkJCQlydW5uYWJsZShy ZW5kZXJfZmQsIGUpOworCQkJCWlndF9zdWJ0ZXN0X2YoInJlbmRlci1ub2RlLXJ1bm5pbmctJXMi LCBlLT5uYW1lKQorCQkJCQlydW5uaW5nKHJlbmRlcl9mZCwgZSk7CiAJCQl9CiAJCX0KIAotLSAK Mi4xNy4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpp Z3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXYK