ZGlmZiAtLWdpdCBhL3NyYy9lcnJvcnMuaCBiL3NyYy9lcnJvcnMuaAppbmRleCBmMjYyNGRmLi43NTI0YjgwIDEwMDY0NAotLS0gYS9zcmMvZXJyb3JzLmgKKysrIGIvc3JjL2Vycm9ycy5oCkBAIC00ODgsMyArNDg4LDUgQEAKIAlJTklUKD0gTl8oIkUxMjAyOiBObyB3aGl0ZSBzcGFjZSBhbGxvd2VkIGFmdGVyICclcyc6ICVzIikpOwogRVhURVJOIGNoYXIgZV9kb3RfY2FuX29ubHlfYmVfdXNlZF9vbl9kaWN0aW9uYXJ5X3N0cltdCiAJSU5JVCg9IE5fKCJFMTIwMzogRG90IGNhbiBvbmx5IGJlIHVzZWQgb24gYSBkaWN0aW9uYXJ5OiAlcyIpKTsKK0VYVEVSTiBjaGFyIGVfcmVnZXhwX251bWJlcl9hZnRlcl9kb3RfcG9zX3NlYXJjaFtdCisJSU5JVCg9IE5fKCJFMTIwNDogTm8gTnVtYmVyIGFsbG93ZWQgYWZ0ZXIgLjogJ1xcJSUlYyciKSk7CmRpZmYgLS1naXQgYS9zcmMvcmVnZXhwX2J0LmMgYi9zcmMvcmVnZXhwX2J0LmMKaW5kZXggNzBkZGZlOS4uZGFlNmQ1MSAxMDA2NDQKLS0tIGEvc3JjL3JlZ2V4cF9idC5jCisrKyBiL3NyYy9yZWdleHBfYnQuYwpAQCAtMTYyOCwxNCArMTYyOCwyMCBAQAogCiAJCWRlZmF1bHQ6CiAJCQkgIGlmIChWSU1fSVNESUdJVChjKSB8fCBjID09ICc8JyB8fCBjID09ICc+JwotCQkJCQkJCQkgfHwgYyA9PSAnXCcnKQorCQkJCQkJfHwgYyA9PSAnXCcnIHx8IGMgPT0gJy4nKQogCQkJICB7CiAJCQkgICAgICBsb25nX3UJbiA9IDA7CiAJCQkgICAgICBpbnQJY21wOworCQkJICAgICAgaW50CWN1ciA9IEZBTFNFOwogCiAJCQkgICAgICBjbXAgPSBjOwogCQkJICAgICAgaWYgKGNtcCA9PSAnPCcgfHwgY21wID09ICc+JykKIAkJCQkgIGMgPSBnZXRjaHIoKTsKKwkJCSAgICAgIGlmIChub19NYWdpYyhjKSA9PSAnLicpCisJCQkgICAgICB7CisJCQkJICBjdXIgPSBUUlVFOworCQkJCSAgYyA9IGdldGNocigpOworCQkJICAgICAgfQogCQkJICAgICAgd2hpbGUgKFZJTV9JU0RJR0lUKGMpKQogCQkJICAgICAgewogCQkJCSAgbiA9IG4gKiAxMCArIChjIC0gJzAnKTsKQEAgLTE2NTcsMTYgKzE2NjMsNDIgQEAKIAkJCSAgICAgIH0KIAkJCSAgICAgIGVsc2UgaWYgKGMgPT0gJ2wnIHx8IGMgPT0gJ2MnIHx8IGMgPT0gJ3YnKQogCQkJICAgICAgeworCQkJCSAgaWYgKGN1ciAmJiBuKQorCQkJCSAgeworCQkJCSAgICBzZW1zZyhfKGVfcmVnZXhwX251bWJlcl9hZnRlcl9kb3RfcG9zX3NlYXJjaCksIG5vX01hZ2ljKGMpKTsKKwkJCQkgICAgcmNfZGlkX2Vtc2cgPSBUUlVFOworCQkJCSAgICByZXR1cm4gTlVMTDsKKwkJCQkgIH0KIAkJCQkgIGlmIChjID09ICdsJykKIAkJCQkgIHsKKwkJCQkgICAgICBpZiAoY3VyKQorCQkJCQkgIG4gPSBjdXJ3aW4tPndfY3Vyc29yLmxudW07CiAJCQkJICAgICAgcmV0ID0gcmVnbm9kZShSRV9MTlVNKTsKIAkJCQkgICAgICBpZiAoc2F2ZV9wcmV2X2F0X3N0YXJ0KQogCQkJCQkgIGF0X3N0YXJ0ID0gVFJVRTsKIAkJCQkgIH0KIAkJCQkgIGVsc2UgaWYgKGMgPT0gJ2MnKQorCQkJCSAgeworCQkJCSAgICAgIGlmIChjdXIpCisJCQkJICAgICAgeworCQkJCQkgIG4gPSBjdXJ3aW4tPndfY3Vyc29yLmNvbDsKKwkJCQkJICBuKys7CisJCQkJICAgICAgfQogCQkJCSAgICAgIHJldCA9IHJlZ25vZGUoUkVfQ09MKTsKKwkJCQkgIH0KIAkJCQkgIGVsc2UKKwkJCQkgIHsKKwkJCQkgICAgICBpZiAoY3VyKQorCQkJCSAgICAgIHsKKwkJCQkJICBjb2xucl9UIHZjb2wgPSAwOworCisJCQkJCSAgZ2V0dnZjb2woY3Vyd2luLCAmY3Vyd2luLT53X2N1cnNvciwKKwkJCQkJCQkgICAgTlVMTCwgTlVMTCwgJnZjb2wpOworCQkJCQkgICsrdmNvbDsKKwkJCQkJICBuID0gdmNvbDsKKwkJCQkgICAgICB9CiAJCQkJICAgICAgcmV0ID0gcmVnbm9kZShSRV9WQ09MKTsKKwkJCQkgIH0KIAkJCQkgIGlmIChyZXQgPT0gSlVTVF9DQUxDX1NJWkUpCiAJCQkJICAgICAgcmVnc2l6ZSArPSA1OwogCQkJCSAgZWxzZQpkaWZmIC0tZ2l0IGEvc3JjL3JlZ2V4cF9uZmEuYyBiL3NyYy9yZWdleHBfbmZhLmMKaW5kZXggMmVkMTg2OC4uN2RmZjE5NSAxMDA2NDQKLS0tIGEvc3JjL3JlZ2V4cF9uZmEuYworKysgYi9zcmMvcmVnZXhwX25mYS5jCkBAIC0xNzA3LDEyICsxNzA3LDIzIEBACiAJCSAgICB7CiAJCQlsb25nX3UJbiA9IDA7CiAJCQlpbnQJY21wID0gYzsKKwkJCWludAljdXIgPSBGQUxTRTsKIAogCQkJaWYgKGMgPT0gJzwnIHx8IGMgPT0gJz4nKQogCQkJICAgIGMgPSBnZXRjaHIoKTsKKwkJCWlmIChub19NYWdpYyhjKSA9PSAnLicpCisJCQl7CisJCQkgICAgY3VyID0gVFJVRTsKKwkJCSAgICBjID0gZ2V0Y2hyKCk7CisJCQl9CiAJCQl3aGlsZSAoVklNX0lTRElHSVQoYykpCiAJCQl7Ci0JCQkgICAgbG9uZ191IHRtcCA9IG4gKiAxMCArIChjIC0gJzAnKTsKKwkJCSAgICBsb25nX3UgdG1wOworCisJCQkgICAgaWYgKGN1cikKKwkJCQlzZW1zZyhfKGVfcmVnZXhwX251bWJlcl9hZnRlcl9kb3RfcG9zX3NlYXJjaCksCisJCQkJCQkJCSBub19NYWdpYyhjKSk7CisJCQkgICAgdG1wID0gbiAqIDEwICsgKGMgLSAnMCcpOwogCiAJCQkgICAgaWYgKHRtcCA8IG4pCiAJCQkgICAgewpAQCAtMTcyOSw2ICsxNzQwLDggQEAKIAogCQkJICAgIGlmIChjID09ICdsJykKIAkJCSAgICB7CisJCQkJaWYgKGN1cikKKwkJCQkgICAgbiA9IGN1cndpbi0+d19jdXJzb3IubG51bTsKIAkJCQkvLyBcJXtufWwgIFwle259PGwgIFwle259PmwKIAkJCQlFTUlUKGNtcCA9PSAnPCcgPyBORkFfTE5VTV9MVCA6CiAJCQkJICAgICBjbXAgPT0gJz4nID8gTkZBX0xOVU1fR1QgOiBORkFfTE5VTSk7CkBAIC0xNzM2LDExICsxNzQ5LDI2IEBACiAJCQkJICAgIGF0X3N0YXJ0ID0gVFJVRTsKIAkJCSAgICB9CiAJCQkgICAgZWxzZSBpZiAoYyA9PSAnYycpCisJCQkgICAgeworCQkJCWlmIChjdXIpCisJCQkJeworCQkJCSAgICBuID0gY3Vyd2luLT53X2N1cnNvci5jb2w7CisJCQkJICAgIG4rKzsKKwkJCQl9CiAJCQkJLy8gXCV7bn1jICBcJXtufTxjICBcJXtufT5jCiAJCQkJRU1JVChjbXAgPT0gJzwnID8gTkZBX0NPTF9MVCA6CiAJCQkJICAgICBjbXAgPT0gJz4nID8gTkZBX0NPTF9HVCA6IE5GQV9DT0wpOworCQkJICAgIH0KIAkJCSAgICBlbHNlCiAJCQkgICAgeworCQkJCWlmIChjdXIpCisJCQkJeworCQkJCSAgICBjb2xucl9UIHZjb2wgPSAwOworCisJCQkJICAgIGdldHZ2Y29sKGN1cndpbiwgJmN1cndpbi0+d19jdXJzb3IsCisJCQkJCQkJICAgIE5VTEwsIE5VTEwsICZ2Y29sKTsKKwkJCQkgICAgbiA9ICsrdmNvbDsKKwkJCQl9CiAJCQkJLy8gXCV7bn12ICBcJXtufTx2ICBcJXtufT52CiAJCQkJRU1JVChjbXAgPT0gJzwnID8gTkZBX1ZDT0xfTFQgOgogCQkJCSAgICAgY21wID09ICc+JyA/IE5GQV9WQ09MX0dUIDogTkZBX1ZDT0wpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3RkaXIvdGVzdF9yZWdleHBfbGF0aW4udmltIGIvc3JjL3Rlc3RkaXIvdGVzdF9yZWdleHBfbGF0aW4udmltCmluZGV4IGU1M2E4ZGEuLmM0ODdiMjcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0ZGlyL3Rlc3RfcmVnZXhwX2xhdGluLnZpbQorKysgYi9zcmMvdGVzdGRpci90ZXN0X3JlZ2V4cF9sYXRpbi52aW0KQEAgLTk0Nyw0ICs5NDcsOTQgQEAKICAgY2xvc2UhCiBlbmRmdW5jCiAKKyIgQ2hlY2sgcGF0dGVybnMgbWF0Y2hpbmcgY3Vyc29yIHBvc2l0aW9uLgorZnVuYyBzOmN1cnBvc190ZXN0MigpCisgIG5ldworICBjYWxsIHNldGxpbmUoMSwgWycxJywgJzIgZm9vYmFyIGVpbnMgendlaSBkcmVpIHZpZXIgZvxuZiBzZWNoc2UnLAorICAgICAgICBcICczIGZvb2JhciBlaW5zIHp3ZWkgZHJlaSB2aWVyIGb8bmYgc2VjaHNlJywKKyAgICAgICAgXCAnNCBmb29iYXIgZWlucyB6d2VpIGRyZWkgdmllciBm/G5mIHNlY2hzZScsCisgICAgICAgIFwgJzUJZm9vYmFyIGVpbnMgendlaSBkcmVpIHZpZXIgZvxuZiBzZWNoc2UnLAorICAgICAgICBcICc2CWZvb2JhciBlaW5zIHp3ZWkgZHJlaSB2aWVyIGb8bmYgc2VjaHNlJywKKyAgICAgICAgXCAnNwlmb29iYXIgZWlucyB6d2VpIGRyZWkgdmllciBm/G5mIHNlY2hzZSddKQorICBjYWxsIHNldHBvcygnLicsIFswLCAyLCAxMCwgMF0pCisgIHMvXCUuYy4qLy9nCisgIGNhbGwgc2V0cG9zKCcuJywgWzAsIDMsIDE1LCAwXSkKKyAgcy9cJS5sLiovL2cKKyAgY2FsbCBzZXRwb3MoJy4nLCBbMCwgNSwgMywgMF0pCisgIHMvXCUudi4qL18vZworICBjYWxsIGFzc2VydF9lcXVhbChbJzEnLAorICAgICAgICBcICcyIGZvb2JhciAnLAorICAgICAgICBcICcnLAorICAgICAgICBcICc0IGZvb2JhciBlaW5zIHp3ZWkgZHJlaSB2aWVyIGb8bmYgc2VjaHNlJywKKyAgICAgICAgXCAnNQlfJywKKyAgICAgICAgXCAnNglmb29iYXIgZWlucyB6d2VpIGRyZWkgdmllciBm/G5mIHNlY2hzZScsCisgICAgICAgIFwgJzcJZm9vYmFyIGVpbnMgendlaSBkcmVpIHZpZXIgZvxuZiBzZWNoc2UnXSwKKyAgICAgICAgXCBnZXRsaW5lKDEsICckJykpCisgIGNhbGwgYXNzZXJ0X2ZhaWxzKCdjYWxsIHNlYXJjaCgiXFwlLjFsIiknLCAnRTEyMDQ6JykKKyAgY2FsbCBhc3NlcnRfZmFpbHMoJ2NhbGwgc2VhcmNoKCJcXCUuMWMiKScsICdFMTIwNDonKQorICBjYWxsIGFzc2VydF9mYWlscygnY2FsbCBzZWFyY2goIlxcJS4xdiIpJywgJ0UxMjA0OicpCisgIGJ3aXBlIQorZW5kZnVuYworCisiIENoZWNrIHBhdHRlcm5zIG1hdGNoaW5nIGJlZm9yZSBvciBhZnRlciBjdXJzb3IgcG9zaXRpb24uCitmdW5jIHM6Y3VycG9zX3Rlc3QzKCkKKyAgbmV3CisgIGNhbGwgc2V0bGluZSgxLCBbJzEnLCAnMiBmb29iYXIgZWlucyB6d2VpIGRyZWkgdmllciBm/G5mIHNlY2hzZScsCisgICAgICAgIFwgJzMgZm9vYmFyIGVpbnMgendlaSBkcmVpIHZpZXIgZvxuZiBzZWNoc2UnLAorICAgICAgICBcICc0IGZvb2JhciBlaW5zIHp3ZWkgZHJlaSB2aWVyIGb8bmYgc2VjaHNlJywKKyAgICAgICAgXCAnNQlmb29iYXIgZWlucyB6d2VpIGRyZWkgdmllciBm/G5mIHNlY2hzZScsCisgICAgICAgIFwgJzYJZm9vYmFyIGVpbnMgendlaSBkcmVpIHZpZXIgZvxuZiBzZWNoc2UnLAorICAgICAgICBcICc3CWZvb2JhciBlaW5zIHp3ZWkgZHJlaSB2aWVyIGb8bmYgc2VjaHNlJ10pCisgIGNhbGwgc2V0cG9zKCcuJywgWzAsIDIsIDEwLCAwXSkKKyAgIiBOb3RlOiBUaGlzIHJlbW92ZXMgYWxsIGNvbHVtbnMsIGV4Y2VwdCBmb3IgdGhlIGNvbHVtbiBkaXJlY3RseSBpbiBmcm9udCBvZgorICAiIHRoZSBjdXJzb3IuIEJ1Zz8/Pz8KKyAgOnMvXi4qXCU8LmMvLworICBjYWxsIHNldHBvcygnLicsIFswLCAzLCAxMCwgMF0pCisgIDpzL1wlPi5jLiokLy8KKyAgY2FsbCBzZXRwb3MoJy4nLCBbMCwgNSwgNCwgMF0pCisgICIgTm90ZTogVGhpcyByZW1vdmVzIGFsbCBjb2x1bW5zLCBleGNlcHQgZm9yIHRoZSBjb2x1bW4gZGlyZWN0bHkgaW4gZnJvbnQgb2YKKyAgIiB0aGUgY3Vyc29yLiBCdWc/Pz8/CisgIDpzL14uKlwlPC52L18vCisgIGNhbGwgc2V0cG9zKCcuJywgWzAsIDYsIDQsIDBdKQorICA6cy9cJT4udi4qJC9fLworICBjYWxsIGFzc2VydF9lcXVhbChbJzEnLAorICAgICAgICBcICcgZWlucyB6d2VpIGRyZWkgdmllciBm/G5mIHNlY2hzZScsCisgICAgICAgIFwgJzMgZm9vYmFyIGUnLAorICAgICAgICBcICc0IGZvb2JhciBlaW5zIHp3ZWkgZHJlaSB2aWVyIGb8bmYgc2VjaHNlJywKKyAgICAgICAgXCAnX2Zvb2JhciBlaW5zIHp3ZWkgZHJlaSB2aWVyIGb8bmYgc2VjaHNlJywKKyAgICAgICAgXCAnNglmb18nLAorICAgICAgICBcICc3CWZvb2JhciBlaW5zIHp3ZWkgZHJlaSB2aWVyIGb8bmYgc2VjaHNlJ10sCisgICAgICAgIFwgZ2V0bGluZSgxLCAnJCcpKQorICBzaWwgJWQKKyAgY2FsbCBzZXRsaW5lKDEsIFsnMScsICcyIGZvb2JhciBlaW5zIHp3ZWkgZHJlaSB2aWVyIGb8bmYgc2VjaHNlJywKKyAgICAgICAgXCAnMyBmb29iYXIgZWlucyB6d2VpIGRyZWkgdmllciBm/G5mIHNlY2hzZScsCisgICAgICAgIFwgJzQgZm9vYmFyIGVpbnMgendlaSBkcmVpIHZpZXIgZvxuZiBzZWNoc2UnLAorICAgICAgICBcICc1CWZvb2JhciBlaW5zIHp3ZWkgZHJlaSB2aWVyIGb8bmYgc2VjaHNlJywKKyAgICAgICAgXCAnNglmb29iYXIgZWlucyB6d2VpIGRyZWkgdmllciBm/G5mIHNlY2hzZScsCisgICAgICAgIFwgJzcJZm9vYmFyIGVpbnMgendlaSBkcmVpIHZpZXIgZvxuZiBzZWNoc2UnXSkKKyAgY2FsbCBzZXRwb3MoJy4nLCBbMCwgNCwgNCwgMF0pCisgICVzL1wlPC5sLiovLworICBjYWxsIHNldHBvcygnLicsIFswLCA1LCA0LCAwXSkKKyAgJXMvXCU+LmwuKi8vCisgIGNhbGwgYXNzZXJ0X2VxdWFsKFsnJywgJycsICcnLAorICAgICAgICBcICc0IGZvb2JhciBlaW5zIHp3ZWkgZHJlaSB2aWVyIGb8bmYgc2VjaHNlJywKKyAgICAgICAgXCAnNQlmb29iYXIgZWlucyB6d2VpIGRyZWkgdmllciBm/G5mIHNlY2hzZScsCisgICAgICAgIFwgJycsICcnXSwKKyAgICAgICAgXCBnZXRsaW5lKDEsICckJykpCisgIGJ3aXBlIQorZW5kZnVuYworCisiIFRlc3QgdGhhdCBtYXRjaGluZyBiZWxvdywgYXQgb3IgYWZ0ZXIgdGhlCisiIGN1cnNvciBwb3NpdGlvbiB3b3JrCitmdW5jIFRlc3RfbWF0Y2hpbmdfcG9zKCkKKyAgZm9yIHZhbCBpbiByYW5nZSgzKQorICAgIGV4ZSAic2V0IHJlPSIgLi4gdmFsCisgICAgIiBNYXRjaCBhdCBjdXJzb3IgcG9zaXRpb24KKyAgICBjYWxsIHM6Y3VycG9zX3Rlc3QyKCkKKyAgICAiIE1hdGNoIGJlZm9yZSBvciBhZnRlciBjdXJzb3IgcG9zaXRpb24KKyAgICBjYWxsIHM6Y3VycG9zX3Rlc3QzKCkKKyAgZW5kZm9yCisgIHNldCByZSYKK2VuZGZ1bmMKKwogIiB2aW06IHNoaWZ0d2lkdGg9MiBzdHM9MiBleHBhbmR0YWIKZGlmZiAtLWdpdCBhL3NyYy92ZXJzaW9uLmMgYi9zcmMvdmVyc2lvbi5jCmluZGV4IGEzNmVjODAuLmI0NDg4MjIgMTAwNjQ0Ci0tLSBhL3NyYy92ZXJzaW9uLmMKKysrIGIvc3JjL3ZlcnNpb24uYwpAQCAtNzU2LDYgKzc1Niw4IEBACiBzdGF0aWMgaW50IGluY2x1ZGVkX3BhdGNoZXNbXSA9CiB7ICAgLyogQWRkIG5ldyBwYXRjaCBudW1iZXIgYmVsb3cgdGhpcyBsaW5lICovCiAvKiovCisgICAgMzExMCwKKy8qKi8KICAgICAzMTA5LAogLyoqLwogICAgIDMxMDgsCg==