ZGlmZiAtLWdpdCBhL3BsYW5ldHN0YWNrL2NvcmUvc3RhdGljL3BhZ2VfYW5hbHl0aWNzLmpzIGIvcGxhbmV0c3RhY2svY29yZS9zdGF0aWMvcGFnZV9hbmFseXRpY3MuanMKaW5kZXggYjlkMGMzNS4uNWY2NWZiMiAxMDA2NDQKLS0tIGEvcGxhbmV0c3RhY2svY29yZS9zdGF0aWMvcGFnZV9hbmFseXRpY3MuanMKKysrIGIvcGxhbmV0c3RhY2svY29yZS9zdGF0aWMvcGFnZV9hbmFseXRpY3MuanMKQEAgLTEsNyArMSw0IEBACi1mdW5jdGlvbiBnZXRPYmplY3RBbmRFdmVudFF1ZXJ5KCkgewotICAgIHZhciBzZWxlY3RlZE5vZGVUeHQgPSAkKCcjY3VycmVudE9yaWdpbmFsTm9kZScpLnRleHQoKTsKLSAgICBzZWxlY3RlZE5vZGVUeHQgPSBzZWxlY3RlZE5vZGVUeHQudHJpbSgpOwotICAgIHNlbGVjdGVkTm9kZVR4dCA9IHNlbGVjdGVkTm9kZVR4dC5zcGxpdCgnICcpLmpvaW4oJycpOy8vc2VsZWN0ZWROb2RlVHh0LnJlcGxhY2UoIiAiLCAiIikKK2Z1bmN0aW9uIGdldFBhZ2VLaW5kKCkgewogICAgIHZhciBwYXJlbnROb2RlVHh0ID0gJCgnI3NlbGVjdGVkTWFpbk5hdicpLnRleHQoKTsKICAgICBwYXJlbnROb2RlVHh0ID0gcGFyZW50Tm9kZVR4dC5yZXBsYWNlKCIvXG4iLCIiKTsKICAgICBwYXJlbnROb2RlVHh0ID0gcGFyZW50Tm9kZVR4dC5yZXBsYWNlKCK7IiwiIik7CkBAIC05LDE1ICs2LDIzIEBACiAgICAgaWYgKHBhcmVudE5vZGVUeHQubGVuZ3RoID4gMCAmJiBwYXJlbnROb2RlVHh0LmNoYXJBdChwYXJlbnROb2RlVHh0Lmxlbmd0aC0xKT09J3MnKSB7CiAgICAgICAgICAgICBwYXJlbnROb2RlVHh0ID0gcGFyZW50Tm9kZVR4dC5zdWJzdHJpbmcoMCwgcGFyZW50Tm9kZVR4dC5sZW5ndGgtMSk7CiAgICAgfQorICAgIHJldHVybiBwYXJlbnROb2RlVHh0OworfQorCitmdW5jdGlvbiBnZXRPYmplY3RRdWVyeSgpIHsKKyAgICB2YXIgc2VsZWN0ZWROb2RlVHh0ID0gJCgnI2N1cnJlbnRPcmlnaW5hbE5vZGUnKS50ZXh0KCk7CisgICAgc2VsZWN0ZWROb2RlVHh0ID0gc2VsZWN0ZWROb2RlVHh0LnRyaW0oKTsKKyAgICBzZWxlY3RlZE5vZGVUeHQgPSBzZWxlY3RlZE5vZGVUeHQuc3BsaXQoJyAnKS5qb2luKCcnKTsvL3NlbGVjdGVkTm9kZVR4dC5yZXBsYWNlKCIgIiwgIiIpCisgICAgcGFyZW50Tm9kZVR4dCA9IGdldFBhZ2VLaW5kKCk7CiAKICAgICBpZiAocGFyZW50Tm9kZVR4dCA9PSAiU2xpY2UiKSB7Ci0gICAgICAgIHJldHVybiAiJmV2ZW50PWxpYnZpcnRfaGVhcnRiZWF0JnNsaWNlPSIgKyBzZWxlY3RlZE5vZGVUeHQ7CisgICAgICAgIHJldHVybiAiJnNsaWNlPSIgKyBzZWxlY3RlZE5vZGVUeHQ7CiAgICAgfSBlbHNlIGlmIChwYXJlbnROb2RlVHh0ID09ICJTaXRlIikgewotICAgICAgICByZXR1cm4gIiZldmVudD1ub2RlX2hlYXJ0YmVhdCZzaXRlPSIgKyBzZWxlY3RlZE5vZGVUeHQ7CisgICAgICAgIHJldHVybiAiJnNpdGU9IiArIHNlbGVjdGVkTm9kZVR4dDsKICAgICB9IGVsc2UgaWYgKHBhcmVudE5vZGVUeHQgPT0gIk5vZGUiKSB7Ci0gICAgICAgIHJldHVybiAiJmV2ZW50PW5vZGVfaGVhcnRiZWF0Jm5vZGU9IiArIHNlbGVjdGVkTm9kZVR4dDsKKyAgICAgICAgcmV0dXJuICImbm9kZT0iICsgc2VsZWN0ZWROb2RlVHh0OwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHJldHVybiAiJmV2ZW50PW5vZGVfaGVhcnRiZWF0IjsKKyAgICAgICAgcmV0dXJuICIiOwogICAgIH0KIH0KIApAQCAtNDgsNyArNTMsNyBAQAogfQogCiBmdW5jdGlvbiB1cGRhdGVQYWdlQW5hbHl0aWNzKCkgewotICAgIHZhciB1cmw9ICcvYW5hbHl0aWNzL2JpZ3F1ZXJ5Lz9hdmc9JWNwdSZjb3VudD0laG9zdG5hbWUmY2FjaGVkPTEnICsgZ2V0T2JqZWN0QW5kRXZlbnRRdWVyeSgpOworICAgIHZhciB1cmw9ICcvYW5hbHl0aWNzL2JpZ3F1ZXJ5Lz9hdmc9JWNwdSZjb3VudD0laG9zdG5hbWUmY2FjaGVkPWRlZmF1bHQnICsgZ2V0T2JqZWN0UXVlcnkoKTsKICAgICBjb25zb2xlLmxvZyh1cmwpOwogICAgICQuYWpheCh7CiAgICAgdXJsOiB1cmwsCkBAIC03NSw3ICs4MCwxMSBAQAogfQogCiBmdW5jdGlvbiB1cGRhdGVQYWdlQmFuZHdpZHRoKCkgewotICAgIHZhciB1cmw9Jy9hbmFseXRpY3MvYmlncXVlcnkvP2NvbXB1dGVkPSVieXRlc19zZW50LyVlbGFwc2VkJmNhY2hlZD0xJyArIGdldE9iamVjdEFuZEV2ZW50UXVlcnkoKTsKKyAgICB2YXIgdXJsPScvYW5hbHl0aWNzL2JpZ3F1ZXJ5Lz9jb21wdXRlZD0lYnl0ZXNfc2VudC8lZWxhcHNlZCZjYWNoZWQ9ZGVmYXVsdCcgKyBnZXRPYmplY3RRdWVyeSgpOworCisgICAgaWYgKGdldFBhZ2VLaW5kKCkhPSJTbGljZSIpIHsKKyAgICAgICAgdXJsID0gdXJsICsgIiZldmVudD1ub2RlX2hlYXJ0YmVhdCI7CisgICAgfQogCiAgICAgJC5hamF4KHsKICAgICB1cmwgOiB1cmwsCg==