Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:二级页面详情¥page_detail¥说明@@eyJkYXRhIjoie1wiYXNzb2NpYXRlZE1vZGVsc01hcEZvckpvaW5UYWJsZVwiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhGS1wiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhvdXRGS1wiOnt9LFwiZmllbGRzVG9TZXRUb0RlZmF1bHRcIjpbXSxcImdtdE1vZGlmaWVkXCI6MCxcImlkXCI6MCxcImxhc3RfY2hhcHRlcl9ydWxlXCI6XCJcIixcImxpc3RUb0NsZWFyQXNzb2NpYXRlZEZLXCI6W10sXCJsaXN0VG9DbGVhclNlbGZGS1wiOltdLFwicGFnZUxpc3RcIjpbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS4u+mhtVwiLFwicGF0aFwiOlwiaG9tZVwiLFwicnVsZVwiOlwidmFyIGQgPSBbXTtcXG50cnkge1xcbiAgICBhZGRMaXN0ZW5lcignb25DbG9zZScsICgpID0+IHtcXG4gICAgICAgIGNsZWFyVmFyKCduYW1lQXJyYXknKTtcXG4gICAgICAgIGNsZWFyVmFyKCd1cmxBcnJheScpO1xcbiAgICAgICAgY2xlYXJWYXIoJ3N3aXRjaCcpO1xcbiAgICB9KVxcbiAgICBhZGRMaXN0ZW5lcignb25SZWZyZXNoJywgKCkgPT4ge1xcbiAgICAgICAgc2V0RmlsZSA9IHJlYWRGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicpO1xcbiAgICAgICAgZXZhbCgnY29uZmlnQXJyYXk9JyArIHNldEZpbGUpO1xcbiAgICAgICAgY2xlYXJWYXIoJ2RlbE51bScpO1xcbiAgICAgICAgY2xlYXJWYXIoJ2RlbEFycmF5Jyk7XFxuICAgICAgICBjbGVhclZhcignc2hhcmVOdW0nKTtcXG4gICAgICAgIGNsZWFyVmFyKCdzaGFyZUFycmF5Jyk7XFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmZpZ0FycmF5Lmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgY2xlYXJWYXIoJ2lzQ2hvb3NlJyArIGkpO1xcbiAgICAgICAgfVxcbiAgICB9KVxcbiAgICBpZiAoIWZpbGVFeGlzdCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nKSkge1xcbiAgICAgICAgY29uZmlnQXJyYXkgPSBbXTtcXG4gICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicsIEpTT04uc3RyaW5naWZ5KGNvbmZpZ0FycmF5KSk7XFxuICAgIH1cXG4gICAgaWYgKCFmaWxlRXhpc3QoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZV9zZWxlY3Rpb24uanNvbicpKSB7XFxuICAgICAgICB0YWdzQXJyYXkgPSBbJ3FxJywgJ21ndHYnLCAnYmlsaScsICdxaXlpJywgJ3lvdWt1J107XFxuICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlX3NlbGVjdGlvbi5qc29uJywgSlNPTi5zdHJpbmdpZnkodGFnc0FycmF5KSk7XFxuICAgIH1cXG4gICAgaWYgKCFmaWxlRXhpc3QoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvZG1Td2l0Y2gudHh0JykpIHtcXG4gICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2RtU3dpdGNoLnR4dCcsICflvIAnKTtcXG4gICAgfVxcbiAgICBpZiAoIWZpbGVFeGlzdCgnaGlrZXI6Ly9maWxlcy9kbeebkuWtkC9zZXR0aW5ncy5qc29uJykpIHtcXG4gICAgICAgIG9yZ1NldHRpbmdzID0gSlNPTi5zdHJpbmdpZnkoe1xcbiAgICAgICAgICAgIGZvbnRTaXplOiAyNSxcXG4gICAgICAgICAgICBkbUZyb206ICdwYXInXFxuICAgICAgICB9KTtcXG4gICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL2Rt55uS5a2QL3NldHRpbmdzLmpzb24nLCBvcmdTZXR0aW5ncyk7XFxuICAgIH1cXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPGJpZz48c3BhbiBzdHlsZT1cXFwiY29sb3I6IzZFQjg5N1xcXCI+5re7IOWKoCDop6Mg5p6QPC9zcGFuPjwvYmlnPicsXFxuICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIGlmIChnZXRWYXIoJ3N3aXRjaCcsICflhbMnKSA9PSAn5byAJykge1xcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDM7IGkrKykge1xcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlSXRlbSgnYWRkJylcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBwdXRWYXIoJ3N3aXRjaCcsICflhbMnKTtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICBhZGRBcnJheSA9IFt7XFxuICAgICAgICAgICAgICAgICAgICBkZXNjOiAn6Kej5p6Q5ZCN56ew77yM5LiA6KGM5LiA5LiqJyxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnaW5wdXQnLFxcbiAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZVZpc2libGU6IGZhbHNlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0YXJlYScsXFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAtMSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHQ6IHRydWUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IFxcXCJwdXRWYXIoJ25hbWVBcnJheScsaW5wdXQpXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ2FkZCdcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogJ+ino+aekO+8jOS4gOihjOS4gOS4qicsXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2lucHV0JyxcXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVWaXNpYmxlOiBmYWxzZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dGFyZWEnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogLTEsXFxuICAgICAgICAgICAgICAgICAgICAgICAgaGlnaGxpZ2h0OiB0cnVlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBcXFwicHV0VmFyKCd1cmxBcnJheScsaW5wdXQpXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ2FkZCdcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfkv53lrZgnLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCkubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVBcnJheSA9IGdldFZhcignbmFtZUFycmF5Jykuc3BsaXQoL1xcXFxyXFxcXG58XFxcXG58XFxcXHIvKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmxBcnJheSA9IGdldFZhcigndXJsQXJyYXknKS5zcGxpdCgvXFxcXHJcXFxcbnxcXFxcbnxcXFxcci8pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMZW5ndGggPSBuYW1lQXJyYXkubGVuZ3RoID4gdXJsQXJyYXkubGVuZ3RoID8gbmFtZUFycmF5Lmxlbmd0aCA6IHVybEFycmF5Lmxlbmd0aDtcXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRGaWxlID0gcmVhZEZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZXZhbCgnY29uZmlnQXJyYXk9JyArIHNldEZpbGUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YUxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppZXhpTmFtZSA9IGkgPiBuYW1lQXJyYXkubGVuZ3RoIC0gMSA/ICfmnKrlkb3lkI0nIDogKG5hbWVBcnJheVtpXSA9PSAnJyA/ICfmnKrlkb3lkI0nIDogbmFtZUFycmF5W2ldKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgamlleGlVcmwgPSBpID4gdXJsQXJyYXkubGVuZ3RoIC0gMSA/ICfnqbrop6PmnpAnIDogKHVybEFycmF5W2ldID09ICcnID8gJ+epuuino+aekCcgOiB1cmxBcnJheVtpXSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ0FycmF5LnVuc2hpZnQoe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogamlleGlOYW1lLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBqaWV4aVVybCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3M6ICflhajpg6gnXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nLCBKU09OLnN0cmluZ2lmeShjb25maWdBcnJheSkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcignc3dpdGNoJywgJ+WFsycpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/kv53lrZjmiJDlip9cXFwiXFxuICAgICAgICAgICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXFxuICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAnYWRkJ1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9XVxcbiAgICAgICAgICAgICAgICBhZGRJdGVtQWZ0ZXIoJ2FkZEZ1bmN0aW9uJywgYWRkQXJyYXkpO1xcbiAgICAgICAgICAgICAgICBwdXRWYXIoJ3N3aXRjaCcsICflvIAnKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+W3suWIh+aNonN3aXRjaOS4ujonICsgZ2V0VmFyKCdzd2l0Y2gnLCAn5byAJylcXG4gICAgICAgIH0pLFxcbiAgICAgICAgZGVzYzogJ+eugOWNleOAgeeLrOeri+eahOino+aekOW3peWFtyB8IOS4jeaPkOS+m+ino+aekCcsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBpZDogJ2FkZEZ1bmN0aW9uJ1xcbiAgICAgICAgfVxcbiAgICB9LCB7XFxuICAgICAgICBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnXFxuICAgIH0sIHtcXG4gICAgICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPGZvbnQgY29sb3I9XFxcIiM2RUI4OTdcXFwiPuivtOaYjjwvZm9udD4nLFxcbiAgICAgICAgdXJsOiAkKCkubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIHJldHVybiAkKCdoaWtlcjovL2VtcHR5JykucnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgIGxldCBkID0gW107XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+aVmeeoi+aWh+ahoycsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICdodHRwczovL3d3dy55dXF1ZS5jb20vY2hlbnlpbmctazczc2MvbGhjdnFkL2JzaDVlMicsXFxuICAgICAgICAgICAgICAgICAgICBkZXNjOiBcXFwiZmxvYXQmJjEwMCVcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd4NV93ZWJ2aWV3X3NpbmdsZSdcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIHNldFJlc3VsdChkKTtcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH0pLFxcbiAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICB9LCB7XFxuICAgICAgICB0aXRsZTogXFxcIuWIh+aNouaPkuS7tlxcXCIsXFxuICAgICAgICB1cmw6ICQoJ2hpa2VyOi8vZW1wdHkjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICByZXR1cm4gJChbJ+aWreaPkuWkjeWOnycsICfmjqXnrqHmlq3mj5InXSwgMiwgJ+ivt+mAieaLqeS9oOimgeaJp+ihjOeahOaTjeS9nCcpLnNlbGVjdCgoKSA9PiB7XFxuICAgICAgICAgICAgICAgIGlmIChpbnB1dCA9PSAn5pat5o+S5aSN5Y6fJykge1xcbiAgICAgICAgICAgICAgICAgICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2NhY2hlL1BhcnNlX0RuLmpzXFxcIiwgSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL1BhcnNlX0RuLmpzP3J1bGU9TXlGaWVsZOG0sOKBv1xcXCIpKS5ydWxlKTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/lvZPliY3mmK/mlq3mj5LmqKHlvI9cXFwiO1xcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2NhY2hlL1BhcnNlX0RuLmpzXFxcIiwgSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL2R1YW4/cnVsZT3phY3nva7liqnmiYtcXFwiKSkucnVsZSk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5b2T5YmN5piv5Yqp5omL5bey5o6l566h6Kej5p6Q5Lu75YqhXFxcIjtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9KSxcXG4gICAgICAgIGNvbF90eXBlOiBcXFwic2Nyb2xsX2J1dHRvblxcXCJcXG4gICAgfSwge1xcbiAgICAgICAgdGl0bGU6IFxcXCJUVmJveOaOqOmAgTpcXFwiICsgKHJlcXVlc3QoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvYm94U3dpdGNoLnR4dCcpID09IFxcXCLlvIBcXFwiID8gXFxcIuW8gFxcXCIgOiBcXFwi5YWzXFxcIiksXFxuICAgICAgICB1cmw6ICQoJ2hpa2VyOi8vZW1wdHkjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvY3kvYm94U3dpdGNoLnR4dFxcXCIsIChyZXF1ZXN0KCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2JveFN3aXRjaC50eHQnKSA9PSBcXFwi5byAXFxcIiA/IFxcXCLlhbNcXFwiIDogXFxcIuW8gFxcXCIpKVxcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKClcXG4gICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5YiH5o2i5oiQ5YqfXFxcIlxcbiAgICAgICAgfSksXFxuICAgICAgICBjb2xfdHlwZTogXFxcInNjcm9sbF9idXR0b25cXFwiXFxuICAgIH0sIHtcXG4gICAgICAgIHRpdGxlOiAn5a+85YWl6L6F5YqpJyxcXG4gICAgICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIGh0bWwgPSByZXF1ZXN0KCdodHRwczovL25ldGN1dC5jbi9wL2E1ZDFjOGUxZWNlZTI4ZDMnKTtcXG4gICAgICAgICAgICBkYXRhID0gaHRtbC5tYXRjaCgvey4qbm90ZV9jb250ZW50Lip1cGRhdGVkX2F0Lip9LylbMF07XFxuICAgICAgICAgICAgY29udGVudCA9IEpTT04ucGFyc2UoZGF0YSkubm90ZV9jb250ZW50O1xcbiAgICAgICAgICAgIHVwRGF0YSA9IEpTT04ucGFyc2UoZGF0YSkudXBkYXRlZF9hdDtcXG4gICAgICAgICAgICBwdXRWYXIoJ2NvbnRlbnQnLCBjb250ZW50KTtcXG4gICAgICAgICAgICBjb25maXJtKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfmmK/lkKblr7zlhaUnLFxcbiAgICAgICAgICAgICAgICBjb250ZW50OiAn6ISa5pys5pu05paw5pel5pyfXFxcXG4nICsgdXBEYXRhLFxcbiAgICAgICAgICAgICAgICBjb25maXJtOiAoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0VmFyKCdjb250ZW50Jyk7XFxuICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgIGNhbmNlbDogKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+W3suWPlua2iOWvvOWFpSc7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxuICAgICAgICB9KSxcXG4gICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgfSwge1xcbiAgICAgICAgdGl0bGU6ICfop6PmnpDmqKHmnb8nLFxcbiAgICAgICAgdXJsOiBgY29weTovL+S/ruaUueKYhemtlOaWremAmueUqOaooeadv+KYhVxcbmZ1bmN0aW9uICh2aXBVcmwpIHtcXG4gICAgLy8g5q2j5bi46LCD55SoLeW8ueW5leW8gOWFs+WcqOmFjee9ruWKqeaJi+mHjOiHquihjOiuvue9ruaYr+WQpuWQr+eUqFxcbiAgICByZXR1cm4gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvbXVsUGFyc2U/cnVsZT3phY3nva7liqnmiYtcXFwiKS5tdWxQYXJzZSh2aXBVcmwpO1xcbiAgICAvKuWFjeWXhemmluWPkeaooeW8j1xcbiAgICDlpoLmnpzmg7PopoHlrp7njrDnsbvkvLzprZTmlq3nmoTll4XmjqLkvJjlhYjvvJrlhY3ll4XliqB4NeOAgUpzb27lpJrnur/ot6/nmoTlvaLlvI/vvIzlj4LogIPms6jph4rnmoTnpLrkvovku6PnoIHmt7vliqDlhY3ll4Xku6PnoIHvvIjlj6rmmK/npLrkvovlubbkuI3lj6/nlKjvvInvvIzlubblnKjmnIDnu4jov5Tlm57nmoTml7blgJnpobrluo/lpJrkvKDlhaXkuKTkuKrlj4LmlbDvvJrkuIDkuKrmmK/lhY3ll4XlvpfliLDnmoTmkq3mlL7lnLDlnYDvvIzkuIDkuKrmmK/ov5nkuKrop6PmnpDmiJbnur/ot6/nmoTlkI3lrZdcXG4gICAgdmFyIHBhcnNlID0gXFxcImh0dHBzOi8vcGxheWVyLmR4eXkuY2YvV25kZXh4WC5waHA/dXJsPVxcXCI7XFxuICAgIGJmdXJsID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvYXBpP3J1bGU9QVBJ55uS5a2QXFxcIikucGFyc2VMTFEocGFyc2UsIHZpcFVybCk7XFxuICAgIHJldHVybiAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9tdWxQYXJzZT9ydWxlPemFjee9ruWKqeaJi1xcXCIpLm11bFBhcnNlKHZpcFVybCwgYmZ1cmwsICdsbHEnKSArIFxcXCI7e1VzZXItQWdlbnRAJiZSZWZlcmVyQH1cXFwiO1xcbiAgICAqL1xcbn1gLFxcbiAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICB9LCB7XFxuICAgICAgICB0aXRsZTogJ+a6kOeggee8lui+kScsXFxuICAgICAgICB1cmw6IFxcXCJlZGl0RmlsZTovL2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgfSwge1xcbiAgICAgICAgdGl0bGU6ICflr7zlh7rphY3nva4nLFxcbiAgICAgICAgdXJsOiAnc2hhcmU6Ly9oaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicsXFxuICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgIH0sIHtcXG4gICAgICAgIHRpdGxlOiAn5LqR5p2/5YiG5LqrJyxcXG4gICAgICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIHNldEZpbGUgPSByZWFkRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nKTtcXG4gICAgICAgICAgICBzZWNyZXRDb250ZW50ID0gYmFzZTY0RW5jb2RlKGJhc2U2NEVuY29kZShzZXRGaWxlKSk7XFxuICAgICAgICAgICAgY29weShcXFwi5Yqp5omL6Kej5p6Q5a+85YWl5Y+j5LukwqXCpVxcXCIgKyBzaGFyZVBhc3RlKHNlY3JldENvbnRlbnQpKTtcXG4gICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcbiAgICAgICAgfSksXFxuICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgIH0sIHtcXG4gICAgICAgIHRpdGxlOiAn5LqR5p2/5a+85YWlJyxcXG4gICAgICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIHJldHVybiAkKCcnLCAn5aKe6YeP5a+85YWl77yM6K+35pS+5b+DJykuaW5wdXQoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQubWF0Y2goL+WKqeaJi+ino+aekOWvvOWFpeWPo+S7pMKlwqUvKSkge1xcbiAgICAgICAgICAgICAgICAgICAgbGluayA9IGlucHV0LnNwbGl0KCfCpcKlJylbMV07XFxuICAgICAgICAgICAgICAgICAgICBzZWNyZXRDb250ZW50ID0gcGFyc2VQYXN0ZShsaW5rKTtcXG4gICAgICAgICAgICAgICAgICAgIGV2YWwoJ3JlbW90ZVNldEZpbGU9JyArIGJhc2U2NERlY29kZShiYXNlNjREZWNvZGUoc2VjcmV0Q29udGVudCkpKTtcXG4gICAgICAgICAgICAgICAgICAgIGV2YWwoJ2NvbmZpZ0FycmF5PScgKyByZWFkRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nKSk7XFxuICAgICAgICAgICAgICAgICAgICBuZXdBcnJheSA9IGNvbmZpZ0FycmF5LmNvbmNhdChyZW1vdGVTZXRGaWxlKTtcXG4gICAgICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicsIEpTT04uc3RyaW5naWZ5KG5ld0FycmF5KSk7XFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/lr7zlhaXmiJDlip9cXFwiXFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5Y+j5Luk6ZSZ6K+vXFxcIlxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH0pLFxcbiAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICB9LCB7XFxuICAgICAgICBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnXFxuICAgIH0sIHtcXG4gICAgICAgIHRpdGxlOiBnZXRWYXIoJ21vZGUnLCAn6YWN572uJykgPT0gJ+mFjee9ricgPyAn4oCc4oCc4oCd4oCdPGZvbnQgY29sb3I9cmVkPumFjee9rjwvZm9udD4nIDogJ+mFjee9ricsXFxuICAgICAgICB1cmw6ICQoJ2hpa2VyOi8vZW1wdHkjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICBwdXRWYXIoJ21vZGUnLCAn6YWN572uJyk7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxuICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXG4gICAgICAgIH0pLFxcbiAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICB9LCB7XFxuICAgICAgICB0aXRsZTogZ2V0VmFyKCdtb2RlJywgJ+mFjee9ricpID09ICfmibnph4/lt6XlhbcnID8gJ+KAnOKAnOKAneKAnTxmb250IGNvbG9yPXJlZD7mibnph4/lt6Xlhbc8L2ZvbnQ+JyA6ICfmibnph4/lt6XlhbcnLFxcbiAgICAgICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5I25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgcmV0dXJuICQoWyfliKDpmaQnLCAn5YiG5LqrJ10sIDIsICfor7fpgInmi6nkvaDopoHmiafooYznmoTmk43kvZwnKS5zZWxlY3QoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICBwdXRWYXIoJ21vZGUnLCAn5om56YeP5bel5YW3Jyk7XFxuICAgICAgICAgICAgICAgIGlmIChpbnB1dCA9PSAn5Yig6ZmkJykge1xcbiAgICAgICAgICAgICAgICAgICAgcHV0VmFyKCd0eXBlJywgJ+aJuemHj+WIoOmZpCcpO1xcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJWYXIoJ2RlbE51bScpO1xcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJWYXIoJ2RlbEFycmF5Jyk7XFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICBwdXRWYXIoJ3R5cGUnLCAn5om56YeP5YiG5LqrJyk7XFxuICAgICAgICAgICAgICAgICAgICBjbGVhclZhcignc2hhcmVOdW0nKTtcXG4gICAgICAgICAgICAgICAgICAgIGNsZWFyVmFyKCdzaGFyZUFycmF5Jyk7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgc2V0RmlsZSA9IHJlYWRGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicpO1xcbiAgICAgICAgICAgICAgICBldmFsKCdjb25maWdBcnJheT0nICsgc2V0RmlsZSk7XFxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlnQXJyYXkubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICAgICAgICAgIGNsZWFyVmFyKCdpc0Nob29zZScgKyBpKTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfSksXFxuICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgIH0sIHtcXG4gICAgICAgIHRpdGxlOiBnZXRWYXIoJ21vZGUnLCAn6YWN572uJykgPT0gJ+ino+aekOa1i+ivlScgPyAn4oCc4oCc4oCd4oCdPGZvbnQgY29sb3I9cmVkPuino+aekOa1i+ivlTwvZm9udD4nIDogJ+ino+aekOa1i+ivlScsXFxuICAgICAgICB1cmw6ICQoJ2hpa2VyOi8vZW1wdHkjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICBwdXRWYXIoJ21vZGUnLCAn6Kej5p6Q5rWL6K+VJyk7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxuICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXG4gICAgICAgIH0pLFxcbiAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICB9LCB7XFxuICAgICAgICB0aXRsZTogcmVxdWVzdCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9kbVN3aXRjaC50eHQnKSA9PSAndHJ1ZScgPyAn5by55bmVOuW8gCcgOiAn5by55bmVOuWFsycsXFxuICAgICAgICB1cmw6ICQoJ2hpa2VyOi8vZW1wdHkjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICB2YXIgZG1Td2l0Y2ggPSByZXF1ZXN0KCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2RtU3dpdGNoLnR4dCcpO1xcbiAgICAgICAgICAgIGlmIChkbVN3aXRjaCA9PSAndHJ1ZScpIHtcXG4gICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvZG1Td2l0Y2gudHh0JywgJ2ZhbHNlJyk7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvZG1Td2l0Y2gudHh0JywgJ3RydWUnKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxuICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXG4gICAgICAgIH0pLFxcbiAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgbG9uZ0NsaWNrOiBbe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+W8ueW5leadpea6kCcsIGpzOiAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS9hcGk/cnVsZT3phY3nva7liqnmiYsnKS5kbVNldHRpbmdzKDApO1xcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICflh73mlbDkvZznlKjln58nLCBqczogJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJC5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvYXBpP3J1bGU96YWN572u5Yqp5omLJykuZG1TZXR0aW5ncygxKTtcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn5by55bmV5aSn5bCPJywganM6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL2FwaT9ydWxlPemFjee9ruWKqeaJiycpLmRtU2V0dGluZ3MoMik7XFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgfV1cXG4gICAgICAgIH1cXG4gICAgfSk7XFxuXFxuICAgIHNldEZpbGUgPSByZWFkRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nKTtcXG4gICAgZXZhbCgnY29uZmlnQXJyYXk9JyArIHNldEZpbGUpO1xcbiAgICBpZiAoZ2V0VmFyKCdtb2RlJywgJ+mFjee9ricpID09ICfphY3nva4nKSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXG4gICAgICAgIH0sIHtcXG4gICAgICAgICAgICB0aXRsZTogJ+WOu+mHjemZpOeZvScsXFxuICAgICAgICAgICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5I25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgIHNldEZpbGUgPSByZWFkRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nKTtcXG4gICAgICAgICAgICAgICAgZXZhbCgnY29uZmlnQXJyYXk9JyArIHNldEZpbGUpO1xcbiAgICAgICAgICAgICAgICBwdXRWYXIoJ2xhc3RDbGVhbicsIGNvbmZpZ0FycmF5KTtcXG4gICAgICAgICAgICAgICAgbmV3QXJyYXkgPSBbXTtcXG4gICAgICAgICAgICAgICAgbnVtID0gMDtcXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb25maWdBcnJheS5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKGdldFZhcihjb25maWdBcnJheVtpXS51cmwsICcwJykgIT0gJzEnICYmIGNvbmZpZ0FycmF5W2ldLnVybCAhPSAn56m66Kej5p6QJyAmJiBjb25maWdBcnJheVtpXS51cmwgIT0gdW5kZWZpbmVkKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3QXJyYXkucHVzaChjb25maWdBcnJheVtpXSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcHV0VmFyKGNvbmZpZ0FycmF5W2ldLnVybCwgJzEnKTtcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtKys7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJywgSlNPTi5zdHJpbmdpZnkobmV3QXJyYXkpKTtcXG4gICAgICAgICAgICAgICAgSlNPTi5wYXJzZShnZXRWYXIoJ2xhc3RDbGVhbicsICdbXScpKS5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJWYXIoaXRlbS51cmwpO1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/mnKzmrKHljrvph43mlbDph4/kuLpcXFxcdFxcXFx0XFxcXHRcXFwiICsgbnVtO1xcbiAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgICAgIH0sIHtcXG4gICAgICAgICAgICB0aXRsZTogJ+WNoOS9jeespuWkhOeQhicsXFxuICAgICAgICAgICAgdXJsOiAkKFsn5re75YqgJywgJ+WOu+mZpCddLCAyLCAn6K+36YCJ5oup5L2g6KaB5omn6KGM55qE5pON5L2cJykuc2VsZWN0KCgpID0+IHtcXG4gICAgICAgICAgICAgICAgc2V0RmlsZSA9IHJlYWRGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicpO1xcbiAgICAgICAgICAgICAgICBldmFsKCdjb25maWdBcnJheT0nICsgc2V0RmlsZSk7XFxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlnQXJyYXkubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dCA9PSAn5re75YqgJykge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25maWdBcnJheVtpXS51cmwubWF0Y2goL1xcXFw/dXJsPS8pKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ0FycmF5W2ldLnVybCA9IGNvbmZpZ0FycmF5W2ldLnVybC5yZXBsYWNlKCc/dXJsPScsICc/cGxhY2Vob2xkZXI9JnVybD0nKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25maWdBcnJheVtpXS51cmwubWF0Y2goL1xcXFw/cGxhY2Vob2xkZXI9JnVybD0vKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdBcnJheVtpXS51cmwgPSBjb25maWdBcnJheVtpXS51cmwucmVwbGFjZSgnP3BsYWNlaG9sZGVyPSZ1cmw9JywgJz91cmw9Jyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicsIEpTT04uc3RyaW5naWZ5KGNvbmZpZ0FycmF5KSk7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5aSE55CG5oiQ5YqfXFxcIjtcXG4gICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgICAgICB9LCB7XFxuICAgICAgICAgICAgY29sX3R5cGU6ICdsaW5lX2JsYW5rJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICB0YWdzQXJyYXkgPSBKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZV9zZWxlY3Rpb24uanNvbicpKTtcXG4gICAgICAgIHRhZ3NBcnJheS5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoKS5ydWxlKChpdGVtKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgZCA9IFtdO1xcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+i/lOWbnuWIt+aWsO+8jOiusOW+l+eCueaIke+8ge+8ge+8gScsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFjayh0cnVlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+WIt+aWsOaIkOWKn35cXFwiO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcbiAgICAgICAgICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPGJpZz48c3BhbiBzdHlsZT1cXFwiY29sb3I6IzZFQjg5N1xcXCI+5re7IOWKoCDop6Mg5p6QPC9zcGFuPjwvYmlnPicsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChpdGVtKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXRWYXIoJ3N3aXRjaDInLCAn5YWzJykgPT0gJ+W8gCcpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMzsgaSsrKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlSXRlbSgnYWRkMicpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoJ3N3aXRjaDInLCAn5YWzJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRBcnJheSA9IFt7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogJ+ino+aekOWQjeensO+8jOS4gOihjOS4gOS4qicsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdpbnB1dCcsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVWaXNpYmxlOiBmYWxzZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHRhcmVhJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAtMSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlnaGxpZ2h0OiB0cnVlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogXFxcInB1dFZhcignbmFtZUFycmF5JyxpbnB1dClcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogJ2FkZDInXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6ICfop6PmnpDvvIzkuIDooYzkuIDkuKonLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnaW5wdXQnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlVmlzaWJsZTogZmFsc2UsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0YXJlYScsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogLTEsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZ2hsaWdodDogdHJ1ZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IFxcXCJwdXRWYXIoJ3VybEFycmF5JyxpbnB1dClcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogJ2FkZDInXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5L+d5a2YJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoKS5sYXp5UnVsZSgoaXRlbSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lQXJyYXkgPSBnZXRWYXIoJ25hbWVBcnJheScpLnNwbGl0KC9cXFxcclxcXFxufFxcXFxufFxcXFxyLyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybEFycmF5ID0gZ2V0VmFyKCd1cmxBcnJheScpLnNwbGl0KC9cXFxcclxcXFxufFxcXFxufFxcXFxyLyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMZW5ndGggPSBuYW1lQXJyYXkubGVuZ3RoID4gdXJsQXJyYXkubGVuZ3RoID8gbmFtZUFycmF5Lmxlbmd0aCA6IHVybEFycmF5Lmxlbmd0aDtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RmlsZSA9IHJlYWRGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmFsKCdjb25maWdBcnJheT0nICsgc2V0RmlsZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YUxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaWV4aU5hbWUgPSBpID4gbmFtZUFycmF5Lmxlbmd0aCAtIDEgPyAn5pyq5ZG95ZCNJyA6IChuYW1lQXJyYXlbaV0gPT0gJycgPyAn5pyq5ZG95ZCNJyA6IG5hbWVBcnJheVtpXSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaWV4aVVybCA9IGkgPiB1cmxBcnJheS5sZW5ndGggLSAxID8gJ+epuuino+aekCcgOiAodXJsQXJyYXlbaV0gPT0gJycgPyAn56m66Kej5p6QJyA6IHVybEFycmF5W2ldKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ0FycmF5LnVuc2hpZnQoe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGppZXhpTmFtZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGppZXhpVXJsLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3M6IGl0ZW1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicsIEpTT04uc3RyaW5naWZ5KGNvbmZpZ0FycmF5KSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcignc3dpdGNoMicsICflhbMnKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/kv53lrZjmiJDlip9cXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaXRlbSksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogJ2FkZDInXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZEl0ZW1BZnRlcignYWRkRnVuY3Rpb24yJywgYWRkQXJyYXkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0VmFyKCdzd2l0Y2gyJywgJ+W8gCcpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/lt7LliIfmjaJzd2l0Y2jkuLo6JyArIGdldFZhcignc3dpdGNoMicsICflvIAnKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGl0ZW0pLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6ICfnroDljZXjgIHml6Dlv6fjgIHni6znq4vnmoTop6PmnpDnrqHnkIblt6XlhbfvvIzlhbvogIHkuJPnlKgnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXFxuICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdhZGRGdW5jdGlvbjInXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICBzZXRGaWxlID0gcmVhZEZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJyk7XFxuICAgICAgICAgICAgICAgICAgICBldmFsKCd2YXIgY29uZmlnQXJyYXk9JyArIHNldEZpbGUpO1xcbiAgICAgICAgICAgICAgICAgICAgZXZhbCgndmFyIHJlZz0vJyArIGl0ZW0gKyAnfOWFqOmDqC87Jyk7XFxuICAgICAgICAgICAgICAgICAgICAvLyDlvZPliY3nur/ot6/nmoTop6PmnpDmjpLluo9cXG4gICAgICAgICAgICAgICAgICAgIGluZGV4ID0gMDtcXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlnQXJyYXkubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29uZmlnQXJyYXlbaV0udGFncyA9PSB1bmRlZmluZWQgfHwgY29uZmlnQXJyYXlbaV0udGFncy5tYXRjaChyZWcpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXCJjb2xvcjpyZWRcXFwiPicgKyBpbmRleCArICc8L3NwYW4+LTxzcGFuIHN0eWxlPVxcXCJjb2xvcjojNkVCODk3XFxcIj4nICsgaSArICc8L3NwYW4+LScgKyBjb25maWdBcnJheVtpXS5uYW1lICsgJ1xcXFx0XFxcXHRcXFxcdOKAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXCJjb2xvcjojOTlDQ0ZGXFxcIj48c21hbGw+I+W6lOeUqDonICsgY29uZmlnQXJyYXlbaV0udGFncyArICc8L3NtYWxsPjwvc3Bhbj4nICsgKGNvbmZpZ0FycmF5W2ldLmpzICE9IHVuZGVmaW5lZCAmJiBjb25maWdBcnJheVtpXS5qcyAhPSAnJyA/ICc8L3NtYWxsPjwvc3Bhbj4nICsgJ1xcXFx0XFxcXHRcXFxcdOKAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXCJjb2xvcjpyZWRcXFwiPjxzbWFsbD4jSlM8L3NtYWxsPjwvc3Bhbj4nIDogJycpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogY29uZmlnQXJyYXlbaV0udXJsLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKFsn57yW6L6RJywgJ+enu+S9jScsICfliKDpmaQnXSwgMywgJ+ivt+mAieaLqeS9oOimgeaJp+ihjOeahOaTjeS9nCcpLnNlbGVjdCgoaSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9hcGk/cnVsZT3phY3nva7liqnmiYtcXFwiKS5vcF9iYXNpYyhpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGkpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nQ2xpY2s6IFt7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5rOo5YWlSlMs6L6F5Yqp5ZeF5o6iJywganM6ICQudG9TdHJpbmcoKGkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9wYWdlL2pzQWRkX1BhZ2U/cnVsZT3phY3nva7liqnmiYsmaW5kZXg9JyArIGk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGkpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCsrO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChkKTtcXG4gICAgICAgICAgICAgICAgfSwgaXRlbSksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+KelScsXFxuICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuICQoJycsICfor7fovpPlhaXpnIDopoHop6PmnpDnmoTmoIfor4bvvIzmr5TlpoLln5/lkI0nKS5pbnB1dCgoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICB0YWdzQXJyYXkgPSBKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZV9zZWxlY3Rpb24uanNvbicpKTtcXG4gICAgICAgICAgICAgICAgICAgIHRhZ3NBcnJheS5wdXNoKGlucHV0KTtcXG4gICAgICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2Vfc2VsZWN0aW9uLmpzb24nLCBKU09OLnN0cmluZ2lmeSh0YWdzQXJyYXkpKTtcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+a3u+WKoOe6v+i3r+aIkOWKn34nXFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICAgICAgfSwge1xcbiAgICAgICAgICAgIHRpdGxlOiAn4p6WJyxcXG4gICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICB0YWdzQXJyYXkgPSBKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZV9zZWxlY3Rpb24uanNvbicpKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuICQodGFnc0FycmF5LCAzLCAn6K+36YCJ5oup5L2g6KaB5Yig6Zmk55qE57q/6LevJykuc2VsZWN0KCh0YWdzQXJyYXkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5pbmRleE9mID0gZnVuY3Rpb24gKHZhbCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpc1tpXSA9PSB2YWwpIHJldHVybiBpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7XFxuICAgICAgICAgICAgICAgICAgICB9O1xcbiAgICAgICAgICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uICh2YWwpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSB0aGlzLmluZGV4T2YodmFsKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNwbGljZShpbmRleCwgMSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICAgICAgICAgIHRhZ3NBcnJheS5yZW1vdmUoaW5wdXQpO1xcbiAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZV9zZWxlY3Rpb24uanNvbicsIEpTT04uc3RyaW5naWZ5KHRhZ3NBcnJheSkpO1xcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5bey56e76Zmk57q/6LevfidcXG4gICAgICAgICAgICAgICAgfSwgdGFnc0FycmF5KVxcbiAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb25maWdBcnJheS5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgIGlmIChjb25maWdBcnJheVtpXS50YWdzID09IHVuZGVmaW5lZCkge1xcbiAgICAgICAgICAgICAgICBjb25maWdBcnJheVtpXS50YWdzID0gJ+WFqOmDqCdcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfigJjigJjigJnigJk8c3BhbiBzdHlsZT1cXFwiY29sb3I6IzZFQjg5N1xcXCI+JyArIGkgKyAnPC9zcGFuPi0nICsgY29uZmlnQXJyYXlbaV0ubmFtZSArICdcXFxcdFxcXFx0XFxcXHTigJjigJjigJnigJk8c3BhbiBzdHlsZT1cXFwiY29sb3I6Izk5Q0NGRlxcXCI+PHNtYWxsPiPlupTnlKg6JyArIGNvbmZpZ0FycmF5W2ldLnRhZ3MgKyAoY29uZmlnQXJyYXlbaV0uanMgIT0gdW5kZWZpbmVkICYmIGNvbmZpZ0FycmF5W2ldLmpzICE9ICcnID8gJzwvc21hbGw+PC9zcGFuPicgKyAnXFxcXHRcXFxcdFxcXFx04oCY4oCY4oCZ4oCZPHNwYW4gc3R5bGU9XFxcImNvbG9yOnJlZFxcXCI+PHNtYWxsPiNKUzwvc21hbGw+PC9zcGFuPicgOiAnJyksXFxuICAgICAgICAgICAgICAgIGRlc2M6IGNvbmZpZ0FycmF5W2ldLnVybCxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKFsn57yW6L6RJywgJ+enu+S9jScsICfliKDpmaQnXSwgMywgJ+ivt+mAieaLqeS9oOimgeaJp+ihjOeahOaTjeS9nCcpLnNlbGVjdCgoaSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2FwaT9ydWxlPemFjee9ruWKqeaJi1xcXCIpLm9wX2Jhc2ljKGkpO1xcbiAgICAgICAgICAgICAgICB9LCBpKSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnLFxcbiAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgbG9uZ0NsaWNrOiBbe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5rOo5YWlSlMs6L6F5Yqp5ZeF5o6iJywganM6ICQudG9TdHJpbmcoKGkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL3BhZ2UvanNBZGRfUGFnZT9ydWxlPemFjee9ruWKqeaJiyZpbmRleD0nICsgaTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBpKSxcXG4gICAgICAgICAgICAgICAgICAgIH1dXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG4gICAgfSBlbHNlIGlmIChnZXRWYXIoJ21vZGUnLCAn6YWN572uJykgPT0gJ+aJuemHj+W3peWFtycpIHtcXG4gICAgICAgIGlmIChnZXRWYXIoJ3R5cGUnLCAn5om56YeP5Yig6ZmkJykgPT0gJ+aJuemHj+WIoOmZpCcpIHtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+ehruiupOWIoOmZpFxcXFx0XFxcXHRcXFxcdOKAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXCJjb2xvcjpyZWRcXFwiPicgKyBnZXRWYXIoJ2RlbE51bScsICcwJykgKyAnPC9zcGFuPlxcXFx0XFxcXHRcXFxcdOadoeino+aekCcsXFxuICAgICAgICAgICAgICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKGdldFZhcignZGVsTnVtJywgJzAnKSA9PSAnMCcpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v6K+35YWI6YCJ5oup6KaB5Yig6Zmk55qE6Kej5p6Q77yBJ1xcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxBcnJheSA9IEpTT04ucGFyc2UoZ2V0VmFyKCdkZWxBcnJheScpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2coZGVsQXJyYXkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldEZpbGUgPSByZWFkRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBldmFsKCdjb25maWdBcnJheT0nICsgc2V0RmlsZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3QXJyYXkgPSBbXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmZpZ0FycmF5Lmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZGVsQXJyYXkuaW5jbHVkZXMoaSkpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0FycmF5LnB1c2goY29uZmlnQXJyYXlbaV0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicsIEpTT04uc3RyaW5naWZ5KG5ld0FycmF5KSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVsTnVtID0gZ2V0VmFyKCdkZWxOdW0nLCAnMCcpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyVmFyKCdkZWxOdW0nKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhclZhcignZGVsQXJyYXknKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmZpZ0FycmF5Lmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyVmFyKCdpc0Nob29zZScgKyBpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+WFseWIoOmZpFxcXCIgKyBkZWxOdW0gKyAn5p2h6Kej5p6QJztcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICBpZDogJ2RlbEJ0bidcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGluZGV4ID0gMDtcXG4gICAgICAgICAgICBjb25maWdBcnJheS5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfigJjigJjigJnigJk8c3BhbiBzdHlsZT1cXFwiY29sb3I6IzZFQjg5N1xcXCI+JyArIGluZGV4ICsgJzwvc3Bhbj4tJyArIGl0ZW0ubmFtZSArIChjb25maWdBcnJheVtpbmRleF0uanMgIT0gdW5kZWZpbmVkICYmIGNvbmZpZ0FycmF5W2luZGV4XS5qcyAhPSAnJyA/ICc8L3NtYWxsPjwvc3Bhbj4nICsgJ1xcXFx0XFxcXHRcXFxcdOKAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXCJjb2xvcjpyZWRcXFwiPjxzbWFsbD4jSlM8L3NtYWxsPjwvc3Bhbj4nIDogJycpLFxcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogaXRlbS51cmwsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJ2hpa2VyOi8vZW1wdHkjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChpbmRleCwgaXRlbSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXRWYXIoJ2lzQ2hvb3NlJyArIGluZGV4LCAnbm8nKSA9PSAneWVzJykge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2coaW5kZXgpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxBcnJheSA9IEpTT04ucGFyc2UoZ2V0VmFyKCdkZWxBcnJheScsICdbXScpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsTnVtID0gTnVtYmVyKGdldFZhcignZGVsTnVtJywgJzAnKSkgLSAxO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxBcnJheS5wb3AoaW5kZXgpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoJ2RlbEFycmF5JywgZGVsQXJyYXkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoJ2RlbE51bScsIGRlbE51bSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUl0ZW0oaW5kZXggKyAnJywge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfigJjigJjigJnigJk8c3BhbiBzdHlsZT1cXFwiY29sb3I6IzZFQjg5N1xcXCI+JyArIGluZGV4ICsgJzwvc3Bhbj4tJyArIGl0ZW0ubmFtZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUl0ZW0oJ2RlbEJ0bicsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn56Gu6K6k5Yig6ZmkXFxcXHRcXFxcdFxcXFx04oCY4oCY4oCZ4oCZPHNwYW4gc3R5bGU9XFxcImNvbG9yOnJlZFxcXCI+JyArIGdldFZhcignZGVsTnVtJywgJzAnKSArICc8L3NwYW4+XFxcXHRcXFxcdFxcXFx05p2h6Kej5p6QJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0VmFyKCdpc0Nob29zZScgKyBpbmRleCwgJ25vJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsQXJyYXkgPSBKU09OLnBhcnNlKGdldFZhcignZGVsQXJyYXknLCAnW10nKSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbE51bSA9IE51bWJlcihnZXRWYXIoJ2RlbE51bScsICcwJykpICsgMTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsQXJyYXkucHVzaChpbmRleCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhkZWxBcnJheSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcignZGVsQXJyYXknLCBkZWxBcnJheSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcignZGVsTnVtJywgZGVsTnVtKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlSXRlbShpbmRleCArICcnLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXCJjb2xvcjpyZWRcXFwiPicgKyBpbmRleCArICctJyArIGl0ZW0ubmFtZSArICc8L3NwYW4+JyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUl0ZW0oJ2RlbEJ0bicsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn56Gu6K6k5Yig6ZmkXFxcXHRcXFxcdFxcXFx04oCY4oCY4oCZ4oCZPHNwYW4gc3R5bGU9XFxcImNvbG9yOnJlZFxcXCI+JyArIGdldFZhcignZGVsTnVtJywgJzAnKSArICc8L3NwYW4+XFxcXHRcXFxcdFxcXFx05p2h6Kej5p6QJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0VmFyKCdpc0Nob29zZScgKyBpbmRleCwgJ3llcycpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH0sIGluZGV4LCBpdGVtKSxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJyxcXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGluZGV4ICsgJycsXFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9uZ0NsaWNrOiBbe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+azqOWFpUpTLOi+heWKqeWXheaOoicsIGpzOiAkLnRvU3RyaW5nKChpbmRleCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL3BhZ2UvanNBZGRfUGFnZT9ydWxlPemFjee9ruWKqeaJiyZpbmRleD0nICsgaW5kZXg7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGluZGV4KSxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XVxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgaW5kZXgrKztcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfnoa7orqTliIbkuqtcXFxcdFxcXFx0XFxcXHTigJjigJjigJnigJk8c3BhbiBzdHlsZT1cXFwiY29sb3I6cmVkXFxcIj4nICsgZ2V0VmFyKCdzaGFyZU51bScsICcwJykgKyAnPC9zcGFuPlxcXFx0XFxcXHRcXFxcdOadoeino+aekCcsXFxuICAgICAgICAgICAgICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKGdldFZhcignc2hhcmVOdW0nLCAnMCcpID09ICcwJykge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/or7flhYjpgInmi6nopoHliIbkuqvnmoTop6PmnpDvvIEnXFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlQXJyYXkgPSBKU09OLnBhcnNlKGdldFZhcignc2hhcmVBcnJheScpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2coc2hhcmVBcnJheSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZXZhbCgnY29uZmlnQXJyYXk9JyArIHJlYWRGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBzaGFyZUZpbGUgPSBbXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmZpZ0FycmF5Lmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzaGFyZUFycmF5LmluY2x1ZGVzKGkpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZUZpbGUucHVzaChjb25maWdBcnJheVtpXSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VjcmV0Q29udGVudCA9IGJhc2U2NEVuY29kZShiYXNlNjRFbmNvZGUoSlNPTi5zdHJpbmdpZnkoc2hhcmVGaWxlKSkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvcHkoXFxcIuWKqeaJi+ino+aekOWvvOWFpeWPo+S7pMKlwqVcXFwiICsgc2hhcmVQYXN0ZShzZWNyZXRDb250ZW50KSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJWYXIoJ3NoYXJlTnVtJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJWYXIoJ3NoYXJlQXJyYXknKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmZpZ0FycmF5Lmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyVmFyKCdpc0Nob29zZScgKyBpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+WIhuS6q+aIkOWKn1xcXCJcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICBpZDogJ3NoYXJlQnRuJ1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgaW5kZXggPSAwO1xcbiAgICAgICAgICAgIGNvbmZpZ0FycmF5LmZvckVhY2goaXRlbSA9PiB7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXCJjb2xvcjojNkVCODk3XFxcIj4nICsgaW5kZXggKyAnPC9zcGFuPi0nICsgaXRlbS5uYW1lICsgKGNvbmZpZ0FycmF5W2luZGV4XS5qcyAhPSB1bmRlZmluZWQgJiYgY29uZmlnQXJyYXlbaW5kZXhdLmpzICE9ICcnID8gJzwvc21hbGw+PC9zcGFuPicgKyAnXFxcXHRcXFxcdFxcXFx04oCY4oCY4oCZ4oCZPHNwYW4gc3R5bGU9XFxcImNvbG9yOnJlZFxcXCI+PHNtYWxsPiNKUzwvc21hbGw+PC9zcGFuPicgOiAnJyksXFxuICAgICAgICAgICAgICAgICAgICBkZXNjOiBpdGVtLnVybCxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNub0xvYWRpbmcjJykubGF6eVJ1bGUoKGluZGV4LCBpdGVtKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdldFZhcignaXNDaG9vc2UnICsgaW5kZXgsICdubycpID09ICd5ZXMnKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhpbmRleCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlQXJyYXkgPSBKU09OLnBhcnNlKGdldFZhcignc2hhcmVBcnJheScsICdbXScpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVOdW0gPSBOdW1iZXIoZ2V0VmFyKCdzaGFyZU51bScsICcwJykpIC0gMTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVBcnJheS5wb3AoaW5kZXgpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoJ3NoYXJlQXJyYXknLCBzaGFyZUFycmF5KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0VmFyKCdzaGFyZU51bScsIHNoYXJlTnVtKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlSXRlbShpbmRleCArICcnLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXCJjb2xvcjojNkVCODk3XFxcIj4nICsgaW5kZXggKyAnPC9zcGFuPi0nICsgaXRlbS5uYW1lLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlSXRlbSgnc2hhcmVCdG4nLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+ehruiupOWIhuS6q1xcXFx0XFxcXHRcXFxcdOKAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXCJjb2xvcjpyZWRcXFwiPicgKyBnZXRWYXIoJ3NoYXJlTnVtJywgJzAnKSArICc8L3NwYW4+XFxcXHRcXFxcdFxcXFx05p2h6Kej5p6QJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcignaXNDaG9vc2UnICsgaW5kZXgsICdubycpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlQXJyYXkgPSBKU09OLnBhcnNlKGdldFZhcignc2hhcmVBcnJheScsICdbXScpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVOdW0gPSBOdW1iZXIoZ2V0VmFyKCdzaGFyZU51bScsICcwJykpICsgMTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVBcnJheS5wdXNoKGluZGV4KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nKHNoYXJlQXJyYXkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoJ3NoYXJlQXJyYXknLCBzaGFyZUFycmF5KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0VmFyKCdzaGFyZU51bScsIHNoYXJlTnVtKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlSXRlbShpbmRleCArICcnLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXCJjb2xvcjpyZWRcXFwiPicgKyBpbmRleCArICctJyArIGl0ZW0ubmFtZSArICc8L3NwYW4+JyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUl0ZW0oJ3NoYXJlQnRuJywge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfnoa7orqTliIbkuqtcXFxcdFxcXFx0XFxcXHTigJjigJjigJnigJk8c3BhbiBzdHlsZT1cXFwiY29sb3I6cmVkXFxcIj4nICsgZ2V0VmFyKCdzaGFyZU51bScsICcwJykgKyAnPC9zcGFuPlxcXFx0XFxcXHRcXFxcdOadoeino+aekCcsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoJ2lzQ2hvb3NlJyArIGluZGV4LCAneWVzJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfSwgaW5kZXgsIGl0ZW0pLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnLFxcbiAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogaW5kZXggKyAnJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICBsb25nQ2xpY2s6IFt7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5rOo5YWlSlMs6L6F5Yqp5ZeF5o6iJywganM6ICQudG9TdHJpbmcoKGluZGV4KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vcGFnZS9qc0FkZF9QYWdlP3J1bGU96YWN572u5Yqp5omLJmluZGV4PScgKyBpbmRleDtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaW5kZXgpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1dXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICBpbmRleCsrO1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICB9IGVsc2UgaWYgKGdldFZhcignbW9kZScsICfphY3nva4nKSA9PSAn6Kej5p6Q5rWL6K+VJykge1xcbiAgICAgICAgc2V0RmlsZSA9IHJlYWRGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicpO1xcbiAgICAgICAgZXZhbCgnY29uZmlnQXJyYXk9JyArIHNldEZpbGUpO1xcbiAgICAgICAgaW5kZXggPSAwO1xcbiAgICAgICAgY29uZmlnQXJyYXkuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgICAgICBqaWV4aSA9IGl0ZW0udXJsO1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLm5hbWUgKyAoY29uZmlnQXJyYXlbaW5kZXhdLmpzICE9IHVuZGVmaW5lZCAmJiBjb25maWdBcnJheVtpbmRleF0uanMgIT0gJycgPyAnPC9zbWFsbD48L3NwYW4+JyArICdcXFxcdFxcXFx0XFxcXHTigJjigJjigJnigJk8c3BhbiBzdHlsZT1cXFwiY29sb3I6cmVkXFxcIj48c21hbGw+I0pTPC9zbWFsbD48L3NwYW4+JyA6ICcnKSArICdcXFxcdFxcXFx0XFxcXHTigJjigJjigJnigJk8Zm9udCBjb2xvcj1cXFwiIzZFQjg5N1xcXCI+PHNtYWxsPuKeruWJjeW+gOa1i+ivlTwvc21hbGw+PC9mb250PicsXFxuICAgICAgICAgICAgICAgIGRlc2M6IGl0ZW0udXJsLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoKS5ydWxlKChqaWV4aSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IGQgPSBbXTtcXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfnvJbovpHmtYvor5Xpk77mjqUnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2VkaXRGaWxlOi8vaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9jZXNoaS5qc29uJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+W8ueW5lTonICsgZ2V0VmFyKCdkbVN3aXRjaCcsICflhbMnKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJ2hpa2VyOi8vZW1wdHkjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdldFZhcignZG1Td2l0Y2gnLCAn5YWzJykgPT0gJ+WFsycpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcignZG1Td2l0Y2gnLCAn5byAJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoJ2RtU3dpdGNoJywgJ+WFsycpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUl0ZW0oJ2RtU3dpdGNoJywge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICflvLnluZU6JyArIGdldFZhcignZG1Td2l0Y2gnLCAn5YWzJyksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogJ2RtU3dpdGNoJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFmaWxlRXhpc3QoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvY2VzaGkuanNvbicpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY2VzaGlEYXRhID0ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAn6IW+6K6v6KeG6aKRJzoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9hbmRyb2lkLWFydHdvcmtzLjI1cHAuY29tL2ZzMDgvMjAyMS8wOS8xNS8zLzEwNl8zYTBkMjEyZTE3Y2I5NWUyMzJmZmUxNTU0NjAzODVjYl9jb25fMTMweDEzMC5wbmcnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly92LnFxLmNvbS94L2NvdmVyL216YzAwMjAwcm1wYWY0MC9uMDAzNmw0dG50Yy5odG1sJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAn5LyY6YW3Jzoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9hbmRyb2lkLWFydHdvcmtzLjI1cHAuY29tL2ZzMDgvMjAyMS8wOS8xNi85LzExMF84ZmYwNmUwYzIzNzc2MGNkNTdkMjUwOGZkOThjODQxNF9jb25fMTMweDEzMC5wbmcnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly92LnlvdWt1LmNvbS92X3Nob3cvaWRfWE5EYzBNREUxTlRrMU1nPT0uaHRtbCdcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ+eIseWlh+iJuic6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vYW5kcm9pZC1hcnR3b3Jrcy4yNXBwLmNvbS9mczA4LzIwMjEvMDkvMDkvOC8xMTBfOTAxZjJlZjM3YWYyZmVhMjVlNWQ5NjQ4ZjU1MWNlMzFfY29uXzEzMHgxMzAucG5nJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2h0dHA6Ly93d3cuaXFpeWkuY29tL3ZfMmdhOHp0czg2eXMuaHRtbCdcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ+iKkuaenFRWJzoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9hbmRyb2lkLWFydHdvcmtzLjI1cHAuY29tL2ZzMDgvMjAyMS8wOS8xNS82LzExMF8xODM0ZDI5NmFhNWI1NjY2YTdkOTRiMWUzNDc5YWU2NF9jb25fMTMweDEzMC5wbmcnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaHR0cDovL3d3dy5tZ3R2LmNvbS9iLzM0OTI1My8xMDQyNDMwMC5odG1sJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAn5ZOU5ZOp5ZOU5ZOpJzoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9hbmRyb2lkLWFydHdvcmtzLjI1cHAuY29tL2ZzMDgvMjAyMS8wOS8yNy80LzExMF84ZTJlM2Q4OGM0NTAyNWIzODBlNjk4MTdkNmZiNTNiMV9jb25fMTMweDEzMC5wbmcnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly9tLmJpbGliaWxpLmNvbS9iYW5ndW1pL3BsYXkvZXA0Mjg5OTMnXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICfmkJzni5Dop4bpopEnOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2FuZHJvaWQtYXJ0d29ya3MuMjVwcC5jb20vZnMwOC8yMDIxLzA5LzE1LzkvMTEwXzUzMmE1MWY4NDMxZWZjMzc3ODA4YzFmZmZmMmRhMzZmX2Nvbl8xMzB4MTMwLnBuZycsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdodHRwczovL20udHYuc29odS5jb20vdjczMjk0NDEuc2h0bWwnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAn6KW/55Oc6KeG6aKRJzoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9hbmRyb2lkLWFydHdvcmtzLjI1cHAuY29tL2ZzMDgvMjAyMS8wOS8yNy81LzExMF9hODYyNjU4ODJlZDE4YzYxOTA1NjZlOWVhMjVmOTY5OF9jb25fMTMweDEzMC5wbmcnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly93d3cuaXhpZ3VhLmNvbS82Njk5MzU2NzkyOTA1Nzk0MDU1J1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAn5LmQ6KeGJzoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9hbmRyb2lkLWFydHdvcmtzLjI1cHAuY29tL2ZzMDgvMjAyMS8wOS8xNS84LzJfMzViNWQ0MzczZjRiY2JhMjhmMzk0ODZlNGYxMTY0ZDlfY29uXzEzMHgxMzAucG5nJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2h0dHBzOi8vbS5sZS5jb20vdnBsYXlfNzY5NTQzMzMuaHRtbD9mcm9tPWFqYXgnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnMTkwNSc6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vYW5kcm9pZC1hcnR3b3Jrcy4yNXBwLmNvbS9mczA4LzIwMjEvMDkvMTgvNC8xMTBfNWYyNGIxMDUyZmVkNGY3ZmM3MzU5M2E4ZWYyNzI3NmRfY29uXzEzMHgxMzAucG5nJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2h0dHBzOi8vdmlwLjE5MDUuY29tL20vcGxheS8xNDI5NzI1LnNodG1sJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAn6aOO6KGM6KeG6aKRJzoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9hbmRyb2lkLWFydHdvcmtzLjI1cHAuY29tL2ZzMDgvMjAyMS8wOS8xNi80LzExMF82ZjZhZjlmOTliMjYyOWU1MWYwYjBhMzNjZGZmMWQ5ZV9jb25fMTMweDEzMC5wbmcnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaHR0cDovL20uZnVuLnR2L21wbGF5Lz9taWQ9OTU3MTknXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQUFRW6KeG6aKRJzoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9hbmRyb2lkLWFydHdvcmtzLjI1cHAuY29tL2ZzMDgvMjAyMS8wOS8yOC81LzExMF9hNDU1YjI5NTEyMjcwNDBlZTYyOTU1ZWRjZmI4OWQ3Ml9jb25fMTMweDEzMC5wbmcnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly92LnBwdHYuY29tL3Nob3cvelZuM2RKWHQxeFY0OWw0Lmh0bWwnXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICfpvpnohb4nOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8va2UvNC5wbmcnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnTFQtMWVjM2Y2NzU0ZjY4NTg2ZWQ3ZjkyYzNlOTk1Y2ZjYTYnXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICfkurrkurrov7cnOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8va2UvNi5wbmcnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAncmVucmVubWktYWI5MjRlMTFkMmQ2OTM5NydcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ+S6lOavkic6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9rZS8zMC5wbmcnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnd3VkdXl1bi0xNjQ5NDMxMzA3MDIxJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAn5aSa5aSaJzoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL2tlLzQ5LnBuZycsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdodHRwczovL20zdTguY2FjaGUuc3VveW8uY2MvbTN1OC8yMDIyMDMvOC9hYWFiZDkyZGEyNjc3NGM2ODg1MGEwMjMxNTNjODBmMWFlNmZhOWJlLm0zdTgnXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICfono3lhbQnOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8va2UvODAucG5nJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ1JvbmdYaW5nVlItNDIxNTY0NTU4MTkzMidcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ+mbquS6uic6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9xLzEzMy5wbmcnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAneHVlcmVuLTE2NDY4MjMwNzInXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICfml4vpo47kupEnOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8va2UvNTQucG5nJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ3hmeS01MjllNjQ1Nzk1M2Q1NDVmJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAn55Ge5Liw6LWE5rqQJzoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL2tlLzcyLnBuZycsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdodHRwczovLzEucnVpZmVuZ2xiLmNvbS9wbGF5LzE2NDQ5MTQ1OTUubTN1OCdcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2Nlc2hpLmpzb24nLCBKU09OLnN0cmluZ2lmeShjZXNoaURhdGEpKTtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIGNlc2hpRGF0YSA9IEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9jZXNoaS5qc29uJykpO1xcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcHJvcCBpbiBjZXNoaURhdGEpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiBjZXNoaURhdGFbcHJvcF0ucGljICsgJ0BSZWZlcmVyPScsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJCgnJykubGF6eVJ1bGUoKGNlc2hpRGF0YSwgcHJvcCwgamlleGkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpcFVybCA9IGNlc2hpRGF0YVtwcm9wXS51cmw7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmxzID0gW1xcXCJ2aWRlbzovL1xcXCIgKyBqaWV4aSArIHZpcFVybF07XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lcyA9IFsn5rWL6K+VJ11cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXRWYXIoJ2RtU3dpdGNoJywgJ+WFsycpID09ICflvIAnKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2xhenlUb0ppZXhpP3J1bGU9ZG3nm5LlrZBcXFwiKS52aWRlb1g1KHZpcFVybCwgdXJscywgbmFtZXMsIFt7IFxcXCJVc2VyLUFnZW50XFxcIjogUENfVUEgfV0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInZpZGVvOi8vXFxcIiArIGppZXhpICsgdmlwVXJsO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBjZXNoaURhdGEsIHByb3AsIGppZXhpKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdpY29uXzQnXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5rWL6K+VJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiAn5L2g6L+Y5Y+v5Lul5Lu75oSP6L6T5YWl5LiA5Liq6KeG6aKR5Zyw5Z2A5rWL6K+V5b2T5YmN6Kej5p6QficsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkLnRvU3RyaW5nKChqaWV4aSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXBVcmwgPSBnZXRWYXIoJ2Nlc2hpTGluaycpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmxzID0gW1xcXCJ2aWRlbzovL1xcXCIgKyBqaWV4aSArIHZpcFVybF07XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVzID0gWyfmtYvor5UnXVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0VmFyKCdkbVN3aXRjaCcsICflhbMnKSA9PSAn5byAJykge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2xhenlUb0ppZXhpP3J1bGU9ZG3nm5LlrZBcXFwiKS52aWRlb1g1KHZpcFVybCwgdXJscywgbmFtZXMsIFt7IFxcXCJVc2VyLUFnZW50XFxcIjogUENfVUEgfV0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ2aWRlbzovL1xcXCIgKyBqaWV4aSArIHZpcFVybDtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGppZXhpKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2lucHV0JyxcXG4gICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dGFyZWEnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IC0xLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogXFxcInB1dFZhcignY2VzaGlMaW5rJyxpbnB1dClcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+WIoOmZpOivpeino+aekCcsXFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogJ+ivt+iupOecn+iAg+iZkX4nLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNub0xvYWRpbmcjJykubGF6eVJ1bGUoKGppZXhpKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5pbmRleE9mID0gZnVuY3Rpb24gKHZhbCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXNbaV0udXJsID09IHZhbCkgcmV0dXJuIGk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5yZW1vdmUgPSBmdW5jdGlvbiAodmFsKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSB0aGlzLmluZGV4T2YodmFsKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA+IC0xKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zcGxpY2UoaW5kZXgsIDEpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRGaWxlID0gcmVhZEZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2YWwoJ2NvbmZpZ0FycmF5PScgKyBzZXRGaWxlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnQXJyYXkucmVtb3ZlKGppZXhpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJywgSlNPTi5zdHJpbmdpZnkoY29uZmlnQXJyYXkpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5YWz6Zet6aG16Z2i5bm25Yi35paw5YmN5LiA5Liq6aG16Z2iXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2sodHJ1ZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/liKDpmaTmiJDlip9+XFxcIjtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBqaWV4aSksXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICBzZXRIb21lUmVzdWx0KGQpO1xcbiAgICAgICAgICAgICAgICB9LCBqaWV4aSksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJyxcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgIGxvbmdDbGljazogW3tcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+azqOWFpUpTLOi+heWKqeWXheaOoicsIGpzOiAkLnRvU3RyaW5nKChpbmRleCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vcGFnZS9qc0FkZF9QYWdlP3J1bGU96YWN572u5Yqp5omLJmluZGV4PScgKyBpbmRleDtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBpbmRleCksXFxuICAgICAgICAgICAgICAgICAgICB9XVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgaW5kZXgrKztcXG4gICAgICAgIH0pO1xcbiAgICB9XFxuICAgIC8vIOato+W4uOWkh+S7veKAlOKAlOiLpeaJp+ihjOWIsOatpOmDveaXoOW8guW4uOWHuueOsOeahOivne+8gVxcbiAgICBzZXRGaWxlID0gcmVhZEZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJyk7XFxuICAgIGV2YWwoJ2NvbmZpZ0FycmF5PScgKyBzZXRGaWxlKTtcXG4gICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZV9iYWNrLmpzb24nLCBKU09OLnN0cmluZ2lmeShjb25maWdBcnJheSkpO1xcbiAgICBsb2coJ+aWh+S7tuaXoOW8guW4uO+8jOWkh+S7veaIkOWKn34nKTtcXG59IGNhdGNoIChlKSB7XFxuICAgIGxvZygn5paH5Lu25byC5bi477yM6K+35oGi5aSNficpO1xcbiAgICAvLyDlvILluLjkuI3lpIfku73vvIzor7fmgaLlpI1cXG4gICAgc2hvd0xvYWRpbmcoJ+mFjee9ruaWh+S7tuW8guW4uO+8ge+8ge+8gScpO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfmgaLlpI3lpIfku70nLFxcbiAgICAgICAgZGVzYzogJ+WmguaenOWboOS4uuS4gOS6m+mUmeivr++8jOaVsOaNruWPkeeUn+S6huaNn+Wdj+S6huWPr+S7peWwneivleaBouWkjX4nLFxcbiAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICBzZXRGaWxlID0gcmVhZEZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZV9iYWNrLmpzb24nKTtcXG4gICAgICAgICAgICBldmFsKCdjb25maWdBcnJheT0nICsgc2V0RmlsZSk7XFxuICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJywgSlNPTi5zdHJpbmdpZnkoY29uZmlnQXJyYXkpKTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5oGi5aSN5oiQ5YqfXFxcIjtcXG4gICAgICAgIH0pLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbiAgICB9KTtcXG4gICAgc2V0UmVzdWx0KGQpO1xcbn1cXG5zZXRSZXN1bHQoZCk7XFxuXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLosIPnlKjot6/nlLFcIixcInBhdGhcIjpcIm11bFBhcnNlXCIsXCJydWxlXCI6XCIvKlxcclxcbiB2aXBVcmw65a6Y572R5Zyw5Z2AO+i/lOWbnuWAvEpTT07moLzlvI/nmoTlpJrnur/ot6/op4bpopHlnLDlnYBcXHJcXG7osIPnlKjmjqXlj6PvvJokLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9tdWxQYXJzZT9ydWxlPemFjee9ruWKqeaJi1xcXCIpLm11bFBhcnNlKHZpcFVybCk7XFxyXFxuICovXFxyXFxuJC5leHBvcnRzLm11bFBhcnNlID0gZnVuY3Rpb24gKHZpcFVybCwgYmZMaW5rLCBqaWV4aU5hbWUsaGVhZGVycykge1xcclxcbiAgICBpZiAodmlwVXJsLmluZGV4T2YoJ2RvdWJhbicpICE9IC0xKSB7XFxyXFxuICAgICAgICB2aXBVcmwgPSB2aXBVcmwuc3BsaXQoJz9wdGFnPScpWzBdXFxyXFxuICAgIH1cXHJcXG4gICAgbG9nKCfop4bpopHljp/lnLDlnYDvvJonICsgdmlwVXJsKTtcXHJcXG4gICAgdmFyIGV4dHJhX2xlbmd0aCA9IDA7XFxyXFxuICAgIGlmIChiZkxpbmsgJiYgamlleGlOYW1lKSB7XFxyXFxuICAgICAgICB2YXIgdXJscyA9IGJmTGluaztcXHJcXG4gICAgICAgIHZhciBuYW1lcyA9IGppZXhpTmFtZTtcXHJcXG4gICAgICAgIGlmIChoZWFkZXJzKSB7XFxyXFxuICAgICAgICAgICAgdmFyIGhlYWRlcnM9aGVhZGVycztcXHJcXG4gICAgICAgIH1lbHNle1xcclxcbiAgICAgICAgICAgIHZhciBoZWFkZXJzPVtdO1xcclxcbiAgICAgICAgfVxcclxcbiAgICAgICAgZXh0cmFfbGVuZ3RoID0gYmZMaW5rLmxlbmd0aDtcXHJcXG4gICAgfSBlbHNlIHtcXHJcXG4gICAgICAgIHZhciB1cmxzID0gW107XFxyXFxuICAgICAgICB2YXIgbmFtZXMgPSBbXTtcXHJcXG4gICAgICAgIHZhciBoZWFkZXJzPVtdO1xcclxcbiAgICB9XFxyXFxuICAgIGxvZyhcXFwi5aSa57q/6Lev6Kej5p6Q5byA5aeLXFxcIilcXHJcXG4gICAgdmFyIGxpc3QgPSBKU09OLnBhcnNlKHJlYWRGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvblxcXCIpKTtcXHJcXG4gICAgdmFyIHRhZ3NBcnJheSA9IEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlX3NlbGVjdGlvbi5qc29uJykpO1xcclxcbiAgICB0YWdzQXJyYXkuZm9yRWFjaChpdGVtID0+IHtcXHJcXG4gICAgICAgIGV2YWwoJ3ZhciByZWcxPS8nICsgaXRlbSArICcvOycpO1xcclxcbiAgICAgICAgZXZhbCgndmFyIHJlZzI9LycgKyBpdGVtICsgJ3zlhajpg6gvOycpO1xcclxcbiAgICAgICAgaWYgKHZpcFVybC5tYXRjaChyZWcxKSkge1xcclxcbiAgICAgICAgICAgIGxvZygn5b2T5YmN57q/6LevOicgKyBpdGVtKVxcclxcbiAgICAgICAgICAgIGxpc3QuZm9yRWFjaChpdGVtID0+IHtcXHJcXG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0udGFncyA9PSB1bmRlZmluZWQgfHwgaXRlbS50YWdzLm1hdGNoKHJlZzIpKSB7XFxyXFxuICAgICAgICAgICAgICAgICAgICB1cmxzLnB1c2goXFxcInZpZGVvOi8vXFxcIiArIGl0ZW0udXJsICsgdmlwVXJsKTtcXHJcXG4gICAgICAgICAgICAgICAgICAgIG5hbWVzLnB1c2goaXRlbS5uYW1lKTtcXHJcXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnMucHVzaCh7fSk7XFxyXFxuICAgICAgICAgICAgICAgIH1cXHJcXG4gICAgICAgICAgICB9KTtcXHJcXG4gICAgICAgIH1cXHJcXG4gICAgfSk7XFxyXFxuICAgIGlmICh1cmxzLmxlbmd0aCA9PSAwIHx8IHVybHMubGVuZ3RoID09IGV4dHJhX2xlbmd0aCkge1xcclxcbiAgICAgICAgbG9nKCflvZPliY3nur/ot686b3RoZXInKVxcclxcbiAgICAgICAgbGlzdC5mb3JFYWNoKGl0ZW0gPT4ge1xcclxcbiAgICAgICAgICAgIHVybHMucHVzaChcXFwidmlkZW86Ly9cXFwiICsgaXRlbS51cmwgKyB2aXBVcmwpO1xcclxcbiAgICAgICAgICAgIG5hbWVzLnB1c2goaXRlbS5uYW1lKTtcXHJcXG4gICAgICAgIH0pO1xcclxcbiAgICB9XFxyXFxuICAgIGxvZyhg5b2T5YmN5ZCv55So6Kej5p6Q77yaJHt1cmxzLmxlbmd0aH3kuKpgKVxcclxcbiAgICB2YXIgZG1Td2l0Y2ggPSByZXF1ZXN0KCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2RtU3dpdGNoLnR4dCcpO1xcclxcbiAgICB2YXIgcyA9IHJlcXVlc3QoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvYm94U3dpdGNoLnR4dCcpXFxyXFxuICAgIGlmIChzID09IFxcXCLlvIBcXFwiKSB7XFxyXFxuICAgICAgICB2YXIgdSA9IFtdXFxyXFxuICAgICAgICBsaXN0LmZvckVhY2goaXRlbSA9PiB7XFxyXFxuICAgICAgICAgICAgdS5wdXNoKHtcXHJcXG4gICAgICAgICAgICAgICAgbmFtZTogaXRlbS5uYW1lLFxcclxcbiAgICAgICAgICAgICAgICB1cmw6IGl0ZW0udXJsICsgdmlwVXJsXFxyXFxuICAgICAgICAgICAgfSlcXHJcXG4gICAgICAgIH0pO1xcclxcbiAgICAgICAgcmVxdWlyZShcXFwiaHR0cHM6Ly9oaWtlcmZhbnMuY29tL0pvZS9UVmJveC5qc1xcXCIpXFxyXFxuICAgICAgICByZXR1cm4g5o6o6YCBdHZib3goe1xcclxcbiAgICAgICAgICAgIG5hbWU6IFxcXCLphY3nva7liqnmiYvmjqjpgIFcXFwiLFxcclxcbiAgICAgICAgICAgIHZvZDogW3tcXHJcXG4gICAgICAgICAgICAgICAgLy9uYW1lOiBcXFwi6buY6K6kXFxcIixcXHJcXG4gICAgICAgICAgICAgICAgdXJsczogdVxcclxcbiAgICAgICAgICAgIH1dXFxyXFxuICAgICAgICB9KVxcclxcbiAgICB9IGVsc2UgaWYgKGRtU3dpdGNoID09ICd0cnVlJykge1xcclxcbiAgICAgICAgcmV0dXJuICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2xhenlUb0ppZXhpP3J1bGU9ZG3nm5LlrZBcXFwiKS52aWRlb1g1KHZpcFVybCwgdXJscywgbmFtZXMsaGVhZGVycyk7XFxyXFxuICAgIH0gZWxzZSB7XFxyXFxuICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoe1xcclxcbiAgICAgICAgICAgIHVybHM6IHVybHMsXFxyXFxuICAgICAgICAgICAgbmFtZXM6IG5hbWVzLFxcclxcbiAgICAgICAgICAgIGhlYWRlcnM6aGVhZGVyc1xcclxcbiAgICAgICAgfSk7XFxyXFxuICAgIH1cXHJcXG59XFxyXFxuXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLmlq3mj5Lmj5Lku7ZcIixcInBhdGhcIjpcImR1YW5cIixcInJ1bGVcIjpcImZ1bmN0aW9uIGF5dG1QYXJzZSh2aXBVcmwpIHtcXHJcXG4gICAgcmV0dXJuICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL211bFBhcnNlP3J1bGU96YWN572u5Yqp5omLXFxcIikubXVsUGFyc2UodmlwVXJsKTtcXHJcXG59XFxyXFxuXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCJKU+azqOWFpVwiLFwicGF0aFwiOlwianNBZGRfUGFnZVwiLFwicnVsZVwiOlwianM6XFxudmFyIGQgPSBbXTtcXG5pbmRleCA9IGdldFBhcmFtKCdpbmRleCcpO1xcbnZhciBjb25maWdBcnJheSA9IEpTT04ucGFyc2UocmVxdWVzdChcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb25cXFwiKSk7XFxuc2hvd0NvbnRlbnQ9Y29uZmlnQXJyYXlbaW5kZXhdLmpzIT11bmRlZmluZWQ/Y29uZmlnQXJyYXlbaW5kZXhdLmpzOicnXFxuZC5wdXNoKHtcXG4gICAgZGVzYzogJ+i+k+WFpeato+ehruagvOW8j+WGheWuuScsXFxuICAgIGNvbF90eXBlOiAnaW5wdXQnLFxcbiAgICBleHRyYToge1xcbiAgICAgICAgdGl0bGVWaXNpYmxlOiBmYWxzZSxcXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogc2hvd0NvbnRlbnQsXFxuICAgICAgICB0eXBlOiAndGV4dGFyZWEnLFxcbiAgICAgICAgaGVpZ2h0OiAtMSxcXG4gICAgICAgIGhpZ2hsaWdodDogdHJ1ZSxcXG4gICAgICAgIG9uQ2hhbmdlOiBcXFwicHV0VmFyKCdqc0FkZCcsaW5wdXQpXFxcIixcXG4gICAgICAgIGlkOiAnanNBZGQnXFxuICAgIH1cXG59LCB7XFxuICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPHNtYWxsPjxzcGFuIHN0eWxlPVxcXCJjb2xvcjojNkVCODk3XFxcIj4x44CB55u05o6l5Lmm5YaZ6YCC55So5LqOeDXnlYzpnaLnmoRqc+S7o+eggeWNs+WPrzxicj4y44CB5Lik56eN5pa55byPOumHjeWumuWQkeaSreaUvumTvuaOpeWSjOi/lOWbnuaSreaUvumTvuaOpeS4pOenjeW9ouW8jzxicj4z44CB5YW35L2T5Y+C6KeB5biu5Yqp5paH5qGjJyxcXG4gICAgZGVzYzon4oCY4oCY4oCZ4oCZPGJpZz48YmlnPjxzcGFuIHN0eWxlPVxcXCJjb2xvcjojMjk4QTA4XFxcIj7kv50g5a2YJyxcXG4gICAgdXJsOiAkKCkubGF6eVJ1bGUoKGluZGV4KSA9PiB7XFxuICAgICAgICBqc0FkZCA9IGdldFZhcignanNBZGQnKTtcXG4gICAgICAgIHZhciBjb25maWdBcnJheSA9IEpTT04ucGFyc2UocmVxdWVzdChcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb25cXFwiKSk7XFxuICAgICAgICBjb25maWdBcnJheVtpbmRleF0uanM9anNBZGQ7XFxuICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nLCBKU09OLnN0cmluZ2lmeShjb25maWdBcnJheSkpO1xcbiAgICAgICAgYmFjayh0cnVlKTtcXG4gICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/lt7Lkv53lrZjkv67mlLlcXFwiXFxuICAgIH0saW5kZXgpLFxcbiAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxufSk7XFxuc2V0UmVzdWx0KGQpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Ye95pWwXCIsXCJwYXRoXCI6XCJhcGlcIixcInJ1bGVcIjpcIiQuZXhwb3J0cy5vcF9iYXNpYyA9IGZ1bmN0aW9uIChpKSB7XFxyXFxuICAgIHNldEZpbGUgPSByZWFkRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nKTtcXHJcXG4gICAgZXZhbCgndmFyIGNvbmZpZ0FycmF5PScgKyBzZXRGaWxlKTtcXHJcXG4gICAgaWYgKGNvbmZpZ0FycmF5W2ldLnRhZ3MgPT0gdW5kZWZpbmVkKSB7XFxyXFxuICAgICAgICBjb25maWdBcnJheVtpXS50YWdzID0gJ+WFqOmDqCdcXHJcXG4gICAgfVxcclxcbiAgICBpZiAoaW5wdXQgPT0gJ+e8lui+kScpIHtcXHJcXG4gICAgICAgIGNvbmZpZyA9IGNvbmZpZ0FycmF5W2ldLm5hbWUgKyAnLCcgKyBjb25maWdBcnJheVtpXS51cmwgKyAnIyMjJyArIGNvbmZpZ0FycmF5W2ldLnRhZ3M7XFxyXFxuICAgICAgICByZXR1cm4gJChjb25maWcpLmlucHV0KChpLCBjb25maWdBcnJheSkgPT4ge1xcclxcbiAgICAgICAgICAgIGl0ZW0gPSB7XFxyXFxuICAgICAgICAgICAgICAgIG5hbWU6IGlucHV0LnNwbGl0KC8sfO+8jC8pWzBdLFxcclxcbiAgICAgICAgICAgICAgICB1cmw6IGlucHV0LnNwbGl0KC8jIyMvKVswXS5zcGxpdCgvLHzvvIwvKVsxXSxcXHJcXG4gICAgICAgICAgICAgICAgdGFnczogaW5wdXQuc3BsaXQoLyMjIy8pWzFdLFxcclxcbiAgICAgICAgICAgICAgICBqczogY29uZmlnQXJyYXlbaV0uanNcXHJcXG4gICAgICAgICAgICB9XFxyXFxuICAgICAgICAgICAgY29uZmlnQXJyYXkuc3BsaWNlKGksIDEsIGl0ZW0pO1xcclxcbiAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicsIEpTT04uc3RyaW5naWZ5KGNvbmZpZ0FycmF5KSk7XFxyXFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcclxcbiAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/mm7TmlrDmiJDlip9cXFwiXFxyXFxuICAgICAgICB9LCBpLCBjb25maWdBcnJheSlcXHJcXG4gICAgfSBlbHNlIGlmIChpbnB1dCA9PSAn56e75L2NJykge1xcclxcbiAgICAgICAgcmV0dXJuICQoJzAnLCAn5L2g5oOz5o6S56ys5Yeg77yf5bqP5Y+35LuOMOW8gOWni34nKS5pbnB1dCgoaSwgY29uZmlnQXJyYXkpID0+IHtcXHJcXG4gICAgICAgICAgICBpZiAoaW5wdXQgPiBjb25maWdBcnJheS5sZW5ndGggLSAxKSB7XFxyXFxuICAgICAgICAgICAgICAgIGlucHV0ID0gY29uZmlnQXJyYXkubGVuZ3RoIC0gMTtcXHJcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlucHV0IDwgMCkge1xcclxcbiAgICAgICAgICAgICAgICBpbnB1dCA9IDA7XFxyXFxuICAgICAgICAgICAgfVxcclxcbiAgICAgICAgICAgIHRlbXAgPSBjb25maWdBcnJheVtpXTtcXHJcXG4gICAgICAgICAgICBpZiAoaSA+IGlucHV0KSB7XFxyXFxuICAgICAgICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gaTsgaW5kZXggPiBpbnB1dDsgaW5kZXgtLSkge1xcclxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlnQXJyYXlbaW5kZXhdID0gY29uZmlnQXJyYXlbaW5kZXggLSAxXTtcXHJcXG4gICAgICAgICAgICAgICAgfVxcclxcbiAgICAgICAgICAgIH0gZWxzZSB7XFxyXFxuICAgICAgICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gaTsgaW5kZXggPCBpbnB1dDsgaW5kZXgrKykge1xcclxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlnQXJyYXlbaW5kZXhdID0gY29uZmlnQXJyYXlbaW5kZXggKyAxXTtcXHJcXG4gICAgICAgICAgICAgICAgfVxcclxcbiAgICAgICAgICAgIH1cXHJcXG4gICAgICAgICAgICBjb25maWdBcnJheVtpbnB1dF0gPSB0ZW1wO1xcclxcbiAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicsIEpTT04uc3RyaW5naWZ5KGNvbmZpZ0FycmF5KSk7XFxyXFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcclxcbiAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/np7vkvY3miJDlip9cXFwiXFxyXFxuICAgICAgICB9LCBpLCBjb25maWdBcnJheSlcXHJcXG4gICAgfSBlbHNlIHtcXHJcXG4gICAgICAgIGNvbmZpZ0FycmF5LnNwbGljZShpLCAxKTtcXHJcXG4gICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicsIEpTT04uc3RyaW5naWZ5KGNvbmZpZ0FycmF5KSk7XFxyXFxuICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxyXFxuICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5Yig6Zmk5oiQ5YqfXFxcIlxcclxcbiAgICB9XFxyXFxufVxcclxcblxcclxcbiQuZXhwb3J0cy5kbVNldHRpbmdzID0gZnVuY3Rpb24gKHRhZykge1xcclxcbiAgICBzd2l0Y2ggKHRhZykge1xcclxcbiAgICAgICAgLy8g5Ye95pWw5YiH5o2iXFxyXFxuICAgICAgICBjYXNlIDA6XFxyXFxuICAgICAgICAgICAgb3B0aW9ucyA9IFsn5bem5bK45a6Y5by5JywgJ2Zj5a6Y5by5JywgJ+S4ieaWueaJtumjjiddO1xcclxcbiAgICAgICAgICAgIHJldHVybiAkKG9wdGlvbnMsIDEpLnNlbGVjdCgoKSA9PiB7XFxyXFxuICAgICAgICAgICAgICAgIGN1clNldHRpbmdzID0gSlNPTi5wYXJzZShyZWFkRmlsZSgnaGlrZXI6Ly9maWxlcy9kbeebkuWtkC9zZXR0aW5ncy5qc29uJykpO1xcclxcbiAgICAgICAgICAgICAgICBjdXJTZXR0aW5ncy5kbUZyb20gPSBpbnB1dDtcXHJcXG4gICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvZG3nm5LlrZAvc2V0dGluZ3MuanNvbicsIEpTT04uc3RyaW5naWZ5KGN1clNldHRpbmdzKSk7XFxyXFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/liIfmjaLmnaXmupDkuLo6XFxcIiArIGlucHV0O1xcclxcbiAgICAgICAgICAgIH0pXFxyXFxuICAgICAgICAgICAgYnJlYWs7XFxyXFxuXFxyXFxuICAgICAgICAvLyDmm7TmlLnlh73mlbDkvZznlKjln59cXHJcXG4gICAgICAgIGNhc2UgMTpcXHJcXG4gICAgICAgICAgICBvcHRpb25zID0gWydnbG9iYWwnLCAnb3RoZXInXTtcXHJcXG4gICAgICAgICAgICByZXR1cm4gJChvcHRpb25zLCAxKS5zZWxlY3QoKCkgPT4ge1xcclxcbiAgICAgICAgICAgICAgICBjdXJTZXR0aW5ncyA9IEpTT04ucGFyc2UocmVhZEZpbGUoJ2hpa2VyOi8vZmlsZXMvZG3nm5LlrZAvc2V0dGluZ3MuanNvbicpKTtcXHJcXG4gICAgICAgICAgICAgICAgY3VyU2V0dGluZ3MuZG1TY29wZSA9IGlucHV0O1xcclxcbiAgICAgICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9kbeebkuWtkC9zZXR0aW5ncy5qc29uJywgSlNPTi5zdHJpbmdpZnkoY3VyU2V0dGluZ3MpKTtcXHJcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+WIh+aNouS9nOeUqOWfn+S4ujpcXFwiICsgaW5wdXQ7XFxyXFxuICAgICAgICAgICAgfSlcXHJcXG4gICAgICAgICAgICBicmVhaztcXHJcXG4gICAgICAgIGNhc2UgMjpcXHJcXG4gICAgICAgICAgICBmb250U2l6ZSA9IEpTT04ucGFyc2UocmVhZEZpbGUoJ2hpa2VyOi8vZmlsZXMvZG3nm5LlrZAvc2V0dGluZ3MuanNvbicpKS5mb250U2l6ZTtcXHJcXG4gICAgICAgICAgICByZXR1cm4gJChmb250U2l6ZSwgJ+ivt+i+k+WFpeS4gOS4quWQiOmAgueahOaVsOWtlycpLmlucHV0KCgpID0+IHtcXHJcXG4gICAgICAgICAgICAgICAgY3VyU2V0dGluZ3MgPSBKU09OLnBhcnNlKHJlYWRGaWxlKCdoaWtlcjovL2ZpbGVzL2Rt55uS5a2QL3NldHRpbmdzLmpzb24nKSk7XFxyXFxuICAgICAgICAgICAgICAgIGN1clNldHRpbmdzLmZvbnRTaXplID0gaW5wdXQ7XFxyXFxuICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL2Rt55uS5a2QL3NldHRpbmdzLmpzb24nLCBKU09OLnN0cmluZ2lmeShjdXJTZXR0aW5ncykpO1xcclxcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5by55bmV5aSn5bCP5bey5L+u5pS55Li6XFxcIiArIGlucHV0O1xcclxcbiAgICAgICAgICAgIH0pXFxyXFxuICAgICAgICAgICAgYnJlYWs7ICAgIFxcclxcbiAgICAgICAgZGVmYXVsdDpcXHJcXG4gICAgICAgICAgICBicmVhaztcXHJcXG4gICAgfVxcclxcbn1cXHJcXG5cIn1dLFwic2F2ZWRcIjpmYWxzZSxcInRpdGxlXCI6XCLphY3nva7liqnmiYtcIixcInZlcnNpb25cIjowLFwidXJsXCI6XCJoaWtlcjovL2VtcHR5O2dldDtVVEYtODt7VXNlci1BZ2VudEBNb3ppbGxhLzUuMCAoTGludXjvvJvvvJsgQW5kcm9pZCAxMe+8m++8myBNaSAxMCBQcm8pIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS84OC4wLjQzMjQuMTUyIE1vYmlsZSBTYWZhcmkvNTM3LjM2fVwiLFwiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcImZpbmRfcnVsZVwiOlwianM6KFxcbigpID0+IHtcXG4gICAgbGV0IGQgPSBbXTtcXG4gICAgZC5wdXNoKHt0aXRsZTogXFxcIlxcXFx1NjU1OVxcXFx1N2EwYlxcXFx1NjU4N1xcXFx1Njg2M1xcXCIsIHVybDogXFxcImh0dHBzOi8vd3d3Lnl1cXVlLmNvbS9jaGVueWluZy1rNzNzYy9saGN2cWQvYnNoNWUyXFxcIiwgZGVzYzogXFxcImZsb2F0JiYxMDAlXFxcIiwgY29sX3R5cGU6IFxcXCJ4NV93ZWJ2aWV3X3NpbmdsZVxcXCJ9KTtcXG4gICAgc2V0UmVzdWx0KGQpO1xcbn1cXG4pKClcIixcImdyb3VwXCI6XCLlt6XlhbdcIixcInVhXCI6XCJtb2JpbGVcIixcInByZVJ1bGVcIjpcIlwiLFwicGFnZXNcIjpcIlt7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLkuLvpobVcXFwiLFxcXCJwYXRoXFxcIjpcXFwiaG9tZVxcXCIsXFxcInJ1bGVcXFwiOlxcXCJ2YXIgZCA9IFtdO1xcXFxudHJ5IHtcXFxcbiAgICBhZGRMaXN0ZW5lcignb25DbG9zZScsICgpID0+IHtcXFxcbiAgICAgICAgY2xlYXJWYXIoJ25hbWVBcnJheScpO1xcXFxuICAgICAgICBjbGVhclZhcigndXJsQXJyYXknKTtcXFxcbiAgICAgICAgY2xlYXJWYXIoJ3N3aXRjaCcpO1xcXFxuICAgIH0pXFxcXG4gICAgYWRkTGlzdGVuZXIoJ29uUmVmcmVzaCcsICgpID0+IHtcXFxcbiAgICAgICAgc2V0RmlsZSA9IHJlYWRGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicpO1xcXFxuICAgICAgICBldmFsKCdjb25maWdBcnJheT0nICsgc2V0RmlsZSk7XFxcXG4gICAgICAgIGNsZWFyVmFyKCdkZWxOdW0nKTtcXFxcbiAgICAgICAgY2xlYXJWYXIoJ2RlbEFycmF5Jyk7XFxcXG4gICAgICAgIGNsZWFyVmFyKCdzaGFyZU51bScpO1xcXFxuICAgICAgICBjbGVhclZhcignc2hhcmVBcnJheScpO1xcXFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmZpZ0FycmF5Lmxlbmd0aDsgaSsrKSB7XFxcXG4gICAgICAgICAgICBjbGVhclZhcignaXNDaG9vc2UnICsgaSk7XFxcXG4gICAgICAgIH1cXFxcbiAgICB9KVxcXFxuICAgIGlmICghZmlsZUV4aXN0KCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicpKSB7XFxcXG4gICAgICAgIGNvbmZpZ0FycmF5ID0gW107XFxcXG4gICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicsIEpTT04uc3RyaW5naWZ5KGNvbmZpZ0FycmF5KSk7XFxcXG4gICAgfVxcXFxuICAgIGlmICghZmlsZUV4aXN0KCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2Vfc2VsZWN0aW9uLmpzb24nKSkge1xcXFxuICAgICAgICB0YWdzQXJyYXkgPSBbJ3FxJywgJ21ndHYnLCAnYmlsaScsICdxaXlpJywgJ3lvdWt1J107XFxcXG4gICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2Vfc2VsZWN0aW9uLmpzb24nLCBKU09OLnN0cmluZ2lmeSh0YWdzQXJyYXkpKTtcXFxcbiAgICB9XFxcXG4gICAgaWYgKCFmaWxlRXhpc3QoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvZG1Td2l0Y2gudHh0JykpIHtcXFxcbiAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvZG1Td2l0Y2gudHh0JywgJ+W8gCcpO1xcXFxuICAgIH1cXFxcbiAgICBpZiAoIWZpbGVFeGlzdCgnaGlrZXI6Ly9maWxlcy9kbeebkuWtkC9zZXR0aW5ncy5qc29uJykpIHtcXFxcbiAgICAgICAgb3JnU2V0dGluZ3MgPSBKU09OLnN0cmluZ2lmeSh7XFxcXG4gICAgICAgICAgICBmb250U2l6ZTogMjUsXFxcXG4gICAgICAgICAgICBkbUZyb206ICdwYXInXFxcXG4gICAgICAgIH0pO1xcXFxuICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9kbeebkuWtkC9zZXR0aW5ncy5qc29uJywgb3JnU2V0dGluZ3MpO1xcXFxuICAgIH1cXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxiaWc+PHNwYW4gc3R5bGU9XFxcXFxcXCJjb2xvcjojNkVCODk3XFxcXFxcXCI+5re7IOWKoCDop6Mg5p6QPC9zcGFuPjwvYmlnPicsXFxcXG4gICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxcXG4gICAgICAgICAgICBpZiAoZ2V0VmFyKCdzd2l0Y2gnLCAn5YWzJykgPT0gJ+W8gCcpIHtcXFxcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDM7IGkrKykge1xcXFxuICAgICAgICAgICAgICAgICAgICBkZWxldGVJdGVtKCdhZGQnKVxcXFxuICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICBwdXRWYXIoJ3N3aXRjaCcsICflhbMnKTtcXFxcbiAgICAgICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICAgICAgYWRkQXJyYXkgPSBbe1xcXFxuICAgICAgICAgICAgICAgICAgICBkZXNjOiAn6Kej5p6Q5ZCN56ew77yM5LiA6KGM5LiA5LiqJyxcXFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdpbnB1dCcsXFxcXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZVZpc2libGU6IGZhbHNlLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHRhcmVhJyxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogLTEsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHQ6IHRydWUsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogXFxcXFxcXCJwdXRWYXIoJ25hbWVBcnJheScsaW5wdXQpXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ2FkZCdcXFxcbiAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgIH0sIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogJ+ino+aekO+8jOS4gOihjOS4gOS4qicsXFxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnaW5wdXQnLFxcXFxuICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVWaXNpYmxlOiBmYWxzZSxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0YXJlYScsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IC0xLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgaGlnaGxpZ2h0OiB0cnVlLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IFxcXFxcXFwicHV0VmFyKCd1cmxBcnJheScsaW5wdXQpXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ2FkZCdcXFxcbiAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgIH0sIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfkv53lrZgnLFxcXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQoKS5sYXp5UnVsZSgoKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lQXJyYXkgPSBnZXRWYXIoJ25hbWVBcnJheScpLnNwbGl0KC9cXFxcXFxcXHJcXFxcXFxcXG58XFxcXFxcXFxufFxcXFxcXFxcci8pO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsQXJyYXkgPSBnZXRWYXIoJ3VybEFycmF5Jykuc3BsaXQoL1xcXFxcXFxcclxcXFxcXFxcbnxcXFxcXFxcXG58XFxcXFxcXFxyLyk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhTGVuZ3RoID0gbmFtZUFycmF5Lmxlbmd0aCA+IHVybEFycmF5Lmxlbmd0aCA/IG5hbWVBcnJheS5sZW5ndGggOiB1cmxBcnJheS5sZW5ndGg7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRGaWxlID0gcmVhZEZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJyk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBldmFsKCdjb25maWdBcnJheT0nICsgc2V0RmlsZSk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGFMZW5ndGg7IGkrKykge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppZXhpTmFtZSA9IGkgPiBuYW1lQXJyYXkubGVuZ3RoIC0gMSA/ICfmnKrlkb3lkI0nIDogKG5hbWVBcnJheVtpXSA9PSAnJyA/ICfmnKrlkb3lkI0nIDogbmFtZUFycmF5W2ldKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaWV4aVVybCA9IGkgPiB1cmxBcnJheS5sZW5ndGggLSAxID8gJ+epuuino+aekCcgOiAodXJsQXJyYXlbaV0gPT0gJycgPyAn56m66Kej5p6QJyA6IHVybEFycmF5W2ldKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdBcnJheS51bnNoaWZ0KHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogamlleGlOYW1lLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGppZXhpVXJsLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdzOiAn5YWo6YOoJ1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJywgSlNPTi5zdHJpbmdpZnkoY29uZmlnQXJyYXkpKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcignc3dpdGNoJywgJ+WFsycpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL+S/neWtmOaIkOWKn1xcXFxcXFwiXFxcXG4gICAgICAgICAgICAgICAgICAgIH0pLFxcXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnLFxcXFxuICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdhZGQnXFxcXG4gICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICB9XVxcXFxuICAgICAgICAgICAgICAgIGFkZEl0ZW1BZnRlcignYWRkRnVuY3Rpb24nLCBhZGRBcnJheSk7XFxcXG4gICAgICAgICAgICAgICAgcHV0VmFyKCdzd2l0Y2gnLCAn5byAJyk7XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5bey5YiH5o2ic3dpdGNo5Li6OicgKyBnZXRWYXIoJ3N3aXRjaCcsICflvIAnKVxcXFxuICAgICAgICB9KSxcXFxcbiAgICAgICAgZGVzYzogJ+eugOWNleOAgeeLrOeri+eahOino+aekOW3peWFtyB8IOS4jeaPkOS+m+ino+aekCcsXFxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXFxcXG4gICAgICAgIGV4dHJhOiB7XFxcXG4gICAgICAgICAgICBpZDogJ2FkZEZ1bmN0aW9uJ1xcXFxuICAgICAgICB9XFxcXG4gICAgfSwge1xcXFxuICAgICAgICBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnXFxcXG4gICAgfSwge1xcXFxuICAgICAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxmb250IGNvbG9yPVxcXFxcXFwiIzZFQjg5N1xcXFxcXFwiPuivtOaYjjwvZm9udD4nLFxcXFxuICAgICAgICB1cmw6ICQoKS5sYXp5UnVsZSgoKSA9PiB7XFxcXG4gICAgICAgICAgICByZXR1cm4gJCgnaGlrZXI6Ly9lbXB0eScpLnJ1bGUoKCkgPT4ge1xcXFxuICAgICAgICAgICAgICAgIGxldCBkID0gW107XFxcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfmlZnnqIvmlofmoaMnLFxcXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICdodHRwczovL3d3dy55dXF1ZS5jb20vY2hlbnlpbmctazczc2MvbGhjdnFkL2JzaDVlMicsXFxcXG4gICAgICAgICAgICAgICAgICAgIGRlc2M6IFxcXFxcXFwiZmxvYXQmJjEwMCVcXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd4NV93ZWJ2aWV3X3NpbmdsZSdcXFxcbiAgICAgICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgICAgICBzZXRSZXN1bHQoZCk7XFxcXG4gICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgfSksXFxcXG4gICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXFxcbiAgICB9LCB7XFxcXG4gICAgICAgIHRpdGxlOiBcXFxcXFxcIuWIh+aNouaPkuS7tlxcXFxcXFwiLFxcXFxuICAgICAgICB1cmw6ICQoJ2hpa2VyOi8vZW1wdHkjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXFxcbiAgICAgICAgICAgIHJldHVybiAkKFsn5pat5o+S5aSN5Y6fJywgJ+aOpeeuoeaWreaPkiddLCAyLCAn6K+36YCJ5oup5L2g6KaB5omn6KGM55qE5pON5L2cJykuc2VsZWN0KCgpID0+IHtcXFxcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQgPT0gJ+aWreaPkuWkjeWOnycpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgd3JpdGVGaWxlKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9jYWNoZS9QYXJzZV9Ebi5qc1xcXFxcXFwiLCBKU09OLnBhcnNlKGZldGNoKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL1BhcnNlX0RuLmpzP3J1bGU9TXlGaWVsZOG0sOKBv1xcXFxcXFwiKSkucnVsZSk7XFxcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcInRvYXN0Oi8v5b2T5YmN5piv5pat5o+S5qih5byPXFxcXFxcXCI7XFxcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgd3JpdGVGaWxlKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9jYWNoZS9QYXJzZV9Ebi5qc1xcXFxcXFwiLCBKU09OLnBhcnNlKGZldGNoKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2R1YW4/cnVsZT3phY3nva7liqnmiYtcXFxcXFxcIikpLnJ1bGUpO1xcXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL+W9k+WJjeaYr+WKqeaJi+W3suaOpeeuoeino+aekOS7u+WKoVxcXFxcXFwiO1xcXFxuICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIH0pXFxcXG4gICAgICAgIH0pLFxcXFxuICAgICAgICBjb2xfdHlwZTogXFxcXFxcXCJzY3JvbGxfYnV0dG9uXFxcXFxcXCJcXFxcbiAgICB9LCB7XFxcXG4gICAgICAgIHRpdGxlOiBcXFxcXFxcIlRWYm945o6o6YCBOlxcXFxcXFwiICsgKHJlcXVlc3QoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvYm94U3dpdGNoLnR4dCcpID09IFxcXFxcXFwi5byAXFxcXFxcXCIgPyBcXFxcXFxcIuW8gFxcXFxcXFwiIDogXFxcXFxcXCLlhbNcXFxcXFxcIiksXFxcXG4gICAgICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcXFxuICAgICAgICAgICAgd3JpdGVGaWxlKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9ib3hTd2l0Y2gudHh0XFxcXFxcXCIsIChyZXF1ZXN0KCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2JveFN3aXRjaC50eHQnKSA9PSBcXFxcXFxcIuW8gFxcXFxcXFwiID8gXFxcXFxcXCLlhbNcXFxcXFxcIiA6IFxcXFxcXFwi5byAXFxcXFxcXCIpKVxcXFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKVxcXFxuICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/liIfmjaLmiJDlip9cXFxcXFxcIlxcXFxuICAgICAgICB9KSxcXFxcbiAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwic2Nyb2xsX2J1dHRvblxcXFxcXFwiXFxcXG4gICAgfSwge1xcXFxuICAgICAgICB0aXRsZTogJ+WvvOWFpei+heWKqScsXFxcXG4gICAgICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcXFxuICAgICAgICAgICAgaHRtbCA9IHJlcXVlc3QoJ2h0dHBzOi8vbmV0Y3V0LmNuL3AvYTVkMWM4ZTFlY2VlMjhkMycpO1xcXFxuICAgICAgICAgICAgZGF0YSA9IGh0bWwubWF0Y2goL3suKm5vdGVfY29udGVudC4qdXBkYXRlZF9hdC4qfS8pWzBdO1xcXFxuICAgICAgICAgICAgY29udGVudCA9IEpTT04ucGFyc2UoZGF0YSkubm90ZV9jb250ZW50O1xcXFxuICAgICAgICAgICAgdXBEYXRhID0gSlNPTi5wYXJzZShkYXRhKS51cGRhdGVkX2F0O1xcXFxuICAgICAgICAgICAgcHV0VmFyKCdjb250ZW50JywgY29udGVudCk7XFxcXG4gICAgICAgICAgICBjb25maXJtKHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+aYr+WQpuWvvOWFpScsXFxcXG4gICAgICAgICAgICAgICAgY29udGVudDogJ+iEmuacrOabtOaWsOaXpeacn1xcXFxcXFxcbicgKyB1cERhdGEsXFxcXG4gICAgICAgICAgICAgICAgY29uZmlybTogKCkgPT4ge1xcXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0VmFyKCdjb250ZW50Jyk7XFxcXG4gICAgICAgICAgICAgICAgfSxcXFxcbiAgICAgICAgICAgICAgICBjYW5jZWw6ICgpID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+W3suWPlua2iOWvvOWFpSc7XFxcXG4gICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxcXG4gICAgICAgIH0pLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxcXG4gICAgfSwge1xcXFxuICAgICAgICB0aXRsZTogJ+ino+aekOaooeadvycsXFxcXG4gICAgICAgIHVybDogYGNvcHk6Ly/kv67mlLnimIXprZTmlq3pgJrnlKjmqKHmnb/imIVcXFxcbmZ1bmN0aW9uICh2aXBVcmwpIHtcXFxcbiAgICAvLyDmraPluLjosIPnlKgt5by55bmV5byA5YWz5Zyo6YWN572u5Yqp5omL6YeM6Ieq6KGM6K6+572u5piv5ZCm5ZCv55SoXFxcXG4gICAgcmV0dXJuICQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vcGFnZS9tdWxQYXJzZT9ydWxlPemFjee9ruWKqeaJi1xcXFxcXFwiKS5tdWxQYXJzZSh2aXBVcmwpO1xcXFxuICAgIC8q5YWN5ZeF6aaW5Y+R5qih5byPXFxcXG4gICAg5aaC5p6c5oOz6KaB5a6e546w57G75Ly86a2U5pat55qE5ZeF5o6i5LyY5YWI77ya5YWN5ZeF5YqgeDXjgIFKc29u5aSa57q/6Lev55qE5b2i5byP77yM5Y+C6ICD5rOo6YeK55qE56S65L6L5Luj56CB5re75Yqg5YWN5ZeF5Luj56CB77yI5Y+q5piv56S65L6L5bm25LiN5Y+v55So77yJ77yM5bm25Zyo5pyA57uI6L+U5Zue55qE5pe25YCZ6aG65bqP5aSa5Lyg5YWl5Lik5Liq5Y+C5pWw77ya5LiA5Liq5piv5YWN5ZeF5b6X5Yiw55qE5pKt5pS+5Zyw5Z2A77yM5LiA5Liq5piv6L+Z5Liq6Kej5p6Q5oiW57q/6Lev55qE5ZCN5a2XXFxcXG4gICAgdmFyIHBhcnNlID0gXFxcXFxcXCJodHRwczovL3BsYXllci5keHl5LmNmL1duZGV4eFgucGhwP3VybD1cXFxcXFxcIjtcXFxcbiAgICBiZnVybCA9ICQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vcGFnZS9hcGk/cnVsZT1BUEnnm5LlrZBcXFxcXFxcIikucGFyc2VMTFEocGFyc2UsIHZpcFVybCk7XFxcXG4gICAgcmV0dXJuICQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vcGFnZS9tdWxQYXJzZT9ydWxlPemFjee9ruWKqeaJi1xcXFxcXFwiKS5tdWxQYXJzZSh2aXBVcmwsIGJmdXJsLCAnbGxxJykgKyBcXFxcXFxcIjt7VXNlci1BZ2VudEAmJlJlZmVyZXJAfVxcXFxcXFwiO1xcXFxuICAgICovXFxcXG59YCxcXFxcbiAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcXFxuICAgIH0sIHtcXFxcbiAgICAgICAgdGl0bGU6ICfmupDnoIHnvJbovpEnLFxcXFxuICAgICAgICB1cmw6IFxcXFxcXFwiZWRpdEZpbGU6Ly9oaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvblxcXFxcXFwiLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxcXG4gICAgfSwge1xcXFxuICAgICAgICB0aXRsZTogJ+WvvOWHuumFjee9ricsXFxcXG4gICAgICAgIHVybDogJ3NoYXJlOi8vaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxcXG4gICAgfSwge1xcXFxuICAgICAgICB0aXRsZTogJ+S6keadv+WIhuS6qycsXFxcXG4gICAgICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcXFxuICAgICAgICAgICAgc2V0RmlsZSA9IHJlYWRGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicpO1xcXFxuICAgICAgICAgICAgc2VjcmV0Q29udGVudCA9IGJhc2U2NEVuY29kZShiYXNlNjRFbmNvZGUoc2V0RmlsZSkpO1xcXFxuICAgICAgICAgICAgY29weShcXFxcXFxcIuWKqeaJi+ino+aekOWvvOWFpeWPo+S7pMKlwqVcXFxcXFxcIiArIHNoYXJlUGFzdGUoc2VjcmV0Q29udGVudCkpO1xcXFxuICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXFxcbiAgICAgICAgfSksXFxcXG4gICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXFxcbiAgICB9LCB7XFxcXG4gICAgICAgIHRpdGxlOiAn5LqR5p2/5a+85YWlJyxcXFxcbiAgICAgICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5I25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxcXG4gICAgICAgICAgICByZXR1cm4gJCgnJywgJ+WinumHj+WvvOWFpe+8jOivt+aUvuW/gycpLmlucHV0KCgpID0+IHtcXFxcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQubWF0Y2goL+WKqeaJi+ino+aekOWvvOWFpeWPo+S7pMKlwqUvKSkge1xcXFxuICAgICAgICAgICAgICAgICAgICBsaW5rID0gaW5wdXQuc3BsaXQoJ8KlwqUnKVsxXTtcXFxcbiAgICAgICAgICAgICAgICAgICAgc2VjcmV0Q29udGVudCA9IHBhcnNlUGFzdGUobGluayk7XFxcXG4gICAgICAgICAgICAgICAgICAgIGV2YWwoJ3JlbW90ZVNldEZpbGU9JyArIGJhc2U2NERlY29kZShiYXNlNjREZWNvZGUoc2VjcmV0Q29udGVudCkpKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgZXZhbCgnY29uZmlnQXJyYXk9JyArIHJlYWRGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicpKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgbmV3QXJyYXkgPSBjb25maWdBcnJheS5jb25jYXQocmVtb3RlU2V0RmlsZSk7XFxcXG4gICAgICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicsIEpTT04uc3RyaW5naWZ5KG5ld0FycmF5KSk7XFxcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpO1xcXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL+WvvOWFpeaIkOWKn1xcXFxcXFwiXFxcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/lj6Pku6TplJnor69cXFxcXFxcIlxcXFxuICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIH0pXFxcXG4gICAgICAgIH0pLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxcXG4gICAgfSwge1xcXFxuICAgICAgICBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnXFxcXG4gICAgfSwge1xcXFxuICAgICAgICB0aXRsZTogZ2V0VmFyKCdtb2RlJywgJ+mFjee9ricpID09ICfphY3nva4nID8gJ+KAnOKAnOKAneKAnTxmb250IGNvbG9yPXJlZD7phY3nva48L2ZvbnQ+JyA6ICfphY3nva4nLFxcXFxuICAgICAgICB1cmw6ICQoJ2hpa2VyOi8vZW1wdHkjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXFxcbiAgICAgICAgICAgIHB1dFZhcignbW9kZScsICfphY3nva4nKTtcXFxcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpO1xcXFxuICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXFxcbiAgICAgICAgfSksXFxcXG4gICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXFxcbiAgICB9LCB7XFxcXG4gICAgICAgIHRpdGxlOiBnZXRWYXIoJ21vZGUnLCAn6YWN572uJykgPT0gJ+aJuemHj+W3peWFtycgPyAn4oCc4oCc4oCd4oCdPGZvbnQgY29sb3I9cmVkPuaJuemHj+W3peWFtzwvZm9udD4nIDogJ+aJuemHj+W3peWFtycsXFxcXG4gICAgICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcXFxuICAgICAgICAgICAgcmV0dXJuICQoWyfliKDpmaQnLCAn5YiG5LqrJ10sIDIsICfor7fpgInmi6nkvaDopoHmiafooYznmoTmk43kvZwnKS5zZWxlY3QoKCkgPT4ge1xcXFxuICAgICAgICAgICAgICAgIHB1dFZhcignbW9kZScsICfmibnph4/lt6XlhbcnKTtcXFxcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQgPT0gJ+WIoOmZpCcpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgcHV0VmFyKCd0eXBlJywgJ+aJuemHj+WIoOmZpCcpO1xcXFxuICAgICAgICAgICAgICAgICAgICBjbGVhclZhcignZGVsTnVtJyk7XFxcXG4gICAgICAgICAgICAgICAgICAgIGNsZWFyVmFyKCdkZWxBcnJheScpO1xcXFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICAgICAgICAgIHB1dFZhcigndHlwZScsICfmibnph4/liIbkuqsnKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJWYXIoJ3NoYXJlTnVtJyk7XFxcXG4gICAgICAgICAgICAgICAgICAgIGNsZWFyVmFyKCdzaGFyZUFycmF5Jyk7XFxcXG4gICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgIHNldEZpbGUgPSByZWFkRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nKTtcXFxcbiAgICAgICAgICAgICAgICBldmFsKCdjb25maWdBcnJheT0nICsgc2V0RmlsZSk7XFxcXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb25maWdBcnJheS5sZW5ndGg7IGkrKykge1xcXFxuICAgICAgICAgICAgICAgICAgICBjbGVhclZhcignaXNDaG9vc2UnICsgaSk7XFxcXG4gICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpO1xcXFxuICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxcXG4gICAgICAgICAgICB9KVxcXFxuICAgICAgICB9KSxcXFxcbiAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcXFxuICAgIH0sIHtcXFxcbiAgICAgICAgdGl0bGU6IGdldFZhcignbW9kZScsICfphY3nva4nKSA9PSAn6Kej5p6Q5rWL6K+VJyA/ICfigJzigJzigJ3igJ08Zm9udCBjb2xvcj1yZWQ+6Kej5p6Q5rWL6K+VPC9mb250PicgOiAn6Kej5p6Q5rWL6K+VJyxcXFxcbiAgICAgICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5I25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxcXG4gICAgICAgICAgICBwdXRWYXIoJ21vZGUnLCAn6Kej5p6Q5rWL6K+VJyk7XFxcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKTtcXFxcbiAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxcXG4gICAgICAgIH0pLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxcXG4gICAgfSwge1xcXFxuICAgICAgICB0aXRsZTogcmVxdWVzdCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9kbVN3aXRjaC50eHQnKSA9PSAndHJ1ZScgPyAn5by55bmVOuW8gCcgOiAn5by55bmVOuWFsycsXFxcXG4gICAgICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcXFxuICAgICAgICAgICAgdmFyIGRtU3dpdGNoID0gcmVxdWVzdCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9kbVN3aXRjaC50eHQnKTtcXFxcbiAgICAgICAgICAgIGlmIChkbVN3aXRjaCA9PSAndHJ1ZScpIHtcXFxcbiAgICAgICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9kbVN3aXRjaC50eHQnLCAnZmFsc2UnKTtcXFxcbiAgICAgICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvZG1Td2l0Y2gudHh0JywgJ3RydWUnKTtcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpO1xcXFxuICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXFxcbiAgICAgICAgfSksXFxcXG4gICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbicsXFxcXG4gICAgICAgIGV4dHJhOiB7XFxcXG4gICAgICAgICAgICBsb25nQ2xpY2s6IFt7XFxcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICflvLnluZXmnaXmupAnLCBqczogJC50b1N0cmluZygoKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS9hcGk/cnVsZT3phY3nva7liqnmiYsnKS5kbVNldHRpbmdzKDApO1xcXFxuICAgICAgICAgICAgICAgIH0pXFxcXG4gICAgICAgICAgICB9LCB7XFxcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICflh73mlbDkvZznlKjln58nLCBqczogJC50b1N0cmluZygoKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS9hcGk/cnVsZT3phY3nva7liqnmiYsnKS5kbVNldHRpbmdzKDEpO1xcXFxuICAgICAgICAgICAgICAgIH0pXFxcXG4gICAgICAgICAgICB9LCB7XFxcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICflvLnluZXlpKflsI8nLCBqczogJC50b1N0cmluZygoKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS9hcGk/cnVsZT3phY3nva7liqnmiYsnKS5kbVNldHRpbmdzKDIpO1xcXFxuICAgICAgICAgICAgICAgIH0pXFxcXG4gICAgICAgICAgICB9XVxcXFxuICAgICAgICB9XFxcXG4gICAgfSk7XFxcXG5cXFxcbiAgICBzZXRGaWxlID0gcmVhZEZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJyk7XFxcXG4gICAgZXZhbCgnY29uZmlnQXJyYXk9JyArIHNldEZpbGUpO1xcXFxuICAgIGlmIChnZXRWYXIoJ21vZGUnLCAn6YWN572uJykgPT0gJ+mFjee9ricpIHtcXFxcbiAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXFxcbiAgICAgICAgfSwge1xcXFxuICAgICAgICAgICAgdGl0bGU6ICfljrvph43pmaTnmb0nLFxcXFxuICAgICAgICAgICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5I25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgc2V0RmlsZSA9IHJlYWRGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicpO1xcXFxuICAgICAgICAgICAgICAgIGV2YWwoJ2NvbmZpZ0FycmF5PScgKyBzZXRGaWxlKTtcXFxcbiAgICAgICAgICAgICAgICBwdXRWYXIoJ2xhc3RDbGVhbicsIGNvbmZpZ0FycmF5KTtcXFxcbiAgICAgICAgICAgICAgICBuZXdBcnJheSA9IFtdO1xcXFxuICAgICAgICAgICAgICAgIG51bSA9IDA7XFxcXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb25maWdBcnJheS5sZW5ndGg7IGkrKykge1xcXFxuICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0VmFyKGNvbmZpZ0FycmF5W2ldLnVybCwgJzAnKSAhPSAnMScgJiYgY29uZmlnQXJyYXlbaV0udXJsICE9ICfnqbrop6PmnpAnICYmIGNvbmZpZ0FycmF5W2ldLnVybCAhPSB1bmRlZmluZWQpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld0FycmF5LnB1c2goY29uZmlnQXJyYXlbaV0pO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcHV0VmFyKGNvbmZpZ0FycmF5W2ldLnVybCwgJzEnKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bSsrO1xcXFxuICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicsIEpTT04uc3RyaW5naWZ5KG5ld0FycmF5KSk7XFxcXG4gICAgICAgICAgICAgICAgSlNPTi5wYXJzZShnZXRWYXIoJ2xhc3RDbGVhbicsICdbXScpKS5mb3JFYWNoKGl0ZW0gPT4ge1xcXFxuICAgICAgICAgICAgICAgICAgICBjbGVhclZhcihpdGVtLnVybCk7XFxcXG4gICAgICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/mnKzmrKHljrvph43mlbDph4/kuLpcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcIiArIG51bTtcXFxcbiAgICAgICAgICAgIH0pLFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcXFxuICAgICAgICB9LCB7XFxcXG4gICAgICAgICAgICB0aXRsZTogJ+WNoOS9jeespuWkhOeQhicsXFxcXG4gICAgICAgICAgICB1cmw6ICQoWyfmt7vliqAnLCAn5Y676ZmkJ10sIDIsICfor7fpgInmi6nkvaDopoHmiafooYznmoTmk43kvZwnKS5zZWxlY3QoKCkgPT4ge1xcXFxuICAgICAgICAgICAgICAgIHNldEZpbGUgPSByZWFkRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nKTtcXFxcbiAgICAgICAgICAgICAgICBldmFsKCdjb25maWdBcnJheT0nICsgc2V0RmlsZSk7XFxcXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb25maWdBcnJheS5sZW5ndGg7IGkrKykge1xcXFxuICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQgPT0gJ+a3u+WKoCcpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25maWdBcnJheVtpXS51cmwubWF0Y2goL1xcXFxcXFxcP3VybD0vKSkge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ0FycmF5W2ldLnVybCA9IGNvbmZpZ0FycmF5W2ldLnVybC5yZXBsYWNlKCc/dXJsPScsICc/cGxhY2Vob2xkZXI9JnVybD0nKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25maWdBcnJheVtpXS51cmwubWF0Y2goL1xcXFxcXFxcP3BsYWNlaG9sZGVyPSZ1cmw9LykpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdBcnJheVtpXS51cmwgPSBjb25maWdBcnJheVtpXS51cmwucmVwbGFjZSgnP3BsYWNlaG9sZGVyPSZ1cmw9JywgJz91cmw9Jyk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJywgSlNPTi5zdHJpbmdpZnkoY29uZmlnQXJyYXkpKTtcXFxcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKTtcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL+WkhOeQhuaIkOWKn1xcXFxcXFwiO1xcXFxuICAgICAgICAgICAgfSksXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxcXG4gICAgICAgIH0sIHtcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgICAgIHRhZ3NBcnJheSA9IEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlX3NlbGVjdGlvbi5qc29uJykpO1xcXFxuICAgICAgICB0YWdzQXJyYXkuZm9yRWFjaChpdGVtID0+IHtcXFxcbiAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0sXFxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKCkucnVsZSgoaXRlbSkgPT4ge1xcXFxuICAgICAgICAgICAgICAgICAgICBsZXQgZCA9IFtdO1xcXFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfov5Tlm57liLfmlrDvvIzorrDlvpfngrnmiJHvvIHvvIHvvIEnLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrKHRydWUpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcInRvYXN0Oi8v5Yi35paw5oiQ5YqfflxcXFxcXFwiO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMSdcXFxcbiAgICAgICAgICAgICAgICAgICAgfSwge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfigJjigJjigJnigJk8YmlnPjxzcGFuIHN0eWxlPVxcXFxcXFwiY29sb3I6IzZFQjg5N1xcXFxcXFwiPua3uyDliqAg6KejIOaekDwvc3Bhbj48L2JpZz4nLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChpdGVtKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdldFZhcignc3dpdGNoMicsICflhbMnKSA9PSAn5byAJykge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDM7IGkrKykge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlSXRlbSgnYWRkMicpXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0VmFyKCdzd2l0Y2gyJywgJ+WFsycpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZEFycmF5ID0gW3tcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6ICfop6PmnpDlkI3np7DvvIzkuIDooYzkuIDkuKonLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdpbnB1dCcsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlVmlzaWJsZTogZmFsc2UsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHRhcmVhJyxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IC0xLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZ2hsaWdodDogdHJ1ZSxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogXFxcXFxcXCJwdXRWYXIoJ25hbWVBcnJheScsaW5wdXQpXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdhZGQyJ1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiAn6Kej5p6Q77yM5LiA6KGM5LiA5LiqJyxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnaW5wdXQnLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZVZpc2libGU6IGZhbHNlLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0YXJlYScsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAtMSxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHQ6IHRydWUsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IFxcXFxcXFwicHV0VmFyKCd1cmxBcnJheScsaW5wdXQpXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdhZGQyJ1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+S/neWtmCcsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoKS5sYXp5UnVsZSgoaXRlbSkgPT4ge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVBcnJheSA9IGdldFZhcignbmFtZUFycmF5Jykuc3BsaXQoL1xcXFxcXFxcclxcXFxcXFxcbnxcXFxcXFxcXG58XFxcXFxcXFxyLyk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsQXJyYXkgPSBnZXRWYXIoJ3VybEFycmF5Jykuc3BsaXQoL1xcXFxcXFxcclxcXFxcXFxcbnxcXFxcXFxcXG58XFxcXFxcXFxyLyk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxlbmd0aCA9IG5hbWVBcnJheS5sZW5ndGggPiB1cmxBcnJheS5sZW5ndGggPyBuYW1lQXJyYXkubGVuZ3RoIDogdXJsQXJyYXkubGVuZ3RoO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEZpbGUgPSByZWFkRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmFsKCdjb25maWdBcnJheT0nICsgc2V0RmlsZSk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhTGVuZ3RoOyBpKyspIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamlleGlOYW1lID0gaSA+IG5hbWVBcnJheS5sZW5ndGggLSAxID8gJ+acquWRveWQjScgOiAobmFtZUFycmF5W2ldID09ICcnID8gJ+acquWRveWQjScgOiBuYW1lQXJyYXlbaV0pO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaWV4aVVybCA9IGkgPiB1cmxBcnJheS5sZW5ndGggLSAxID8gJ+epuuino+aekCcgOiAodXJsQXJyYXlbaV0gPT0gJycgPyAn56m66Kej5p6QJyA6IHVybEFycmF5W2ldKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnQXJyYXkudW5zaGlmdCh7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBqaWV4aU5hbWUsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGppZXhpVXJsLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnczogaXRlbVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJywgSlNPTi5zdHJpbmdpZnkoY29uZmlnQXJyYXkpKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoJ3N3aXRjaDInLCAn5YWzJyk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/kv53lrZjmiJDlip9cXFxcXFxcIlxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaXRlbSksXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogJ2FkZDInXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZEl0ZW1BZnRlcignYWRkRnVuY3Rpb24yJywgYWRkQXJyYXkpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoJ3N3aXRjaDInLCAn5byAJyk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/lt7LliIfmjaJzd2l0Y2jkuLo6JyArIGdldFZhcignc3dpdGNoMicsICflvIAnKVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgaXRlbSksXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiAn566A5Y2V44CB5peg5b+n44CB54us56uL55qE6Kej5p6Q566h55CG5bel5YW377yM5YW76ICB5LiT55SoJyxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAnYWRkRnVuY3Rpb24yJ1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgICAgICAgICAgc2V0RmlsZSA9IHJlYWRGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicpO1xcXFxuICAgICAgICAgICAgICAgICAgICBldmFsKCd2YXIgY29uZmlnQXJyYXk9JyArIHNldEZpbGUpO1xcXFxuICAgICAgICAgICAgICAgICAgICBldmFsKCd2YXIgcmVnPS8nICsgaXRlbSArICd85YWo6YOoLzsnKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgLy8g5b2T5YmN57q/6Lev55qE6Kej5p6Q5o6S5bqPXFxcXG4gICAgICAgICAgICAgICAgICAgIGluZGV4ID0gMDtcXFxcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb25maWdBcnJheS5sZW5ndGg7IGkrKykge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZ0FycmF5W2ldLnRhZ3MgPT0gdW5kZWZpbmVkIHx8IGNvbmZpZ0FycmF5W2ldLnRhZ3MubWF0Y2gocmVnKSkge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPHNwYW4gc3R5bGU9XFxcXFxcXCJjb2xvcjpyZWRcXFxcXFxcIj4nICsgaW5kZXggKyAnPC9zcGFuPi08c3BhbiBzdHlsZT1cXFxcXFxcImNvbG9yOiM2RUI4OTdcXFxcXFxcIj4nICsgaSArICc8L3NwYW4+LScgKyBjb25maWdBcnJheVtpXS5uYW1lICsgJ1xcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdOKAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXFxcXFwiY29sb3I6Izk5Q0NGRlxcXFxcXFwiPjxzbWFsbD4j5bqU55SoOicgKyBjb25maWdBcnJheVtpXS50YWdzICsgJzwvc21hbGw+PC9zcGFuPicgKyAoY29uZmlnQXJyYXlbaV0uanMgIT0gdW5kZWZpbmVkICYmIGNvbmZpZ0FycmF5W2ldLmpzICE9ICcnID8gJzwvc21hbGw+PC9zcGFuPicgKyAnXFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx04oCY4oCY4oCZ4oCZPHNwYW4gc3R5bGU9XFxcXFxcXCJjb2xvcjpyZWRcXFxcXFxcIj48c21hbGw+I0pTPC9zbWFsbD48L3NwYW4+JyA6ICcnKSxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogY29uZmlnQXJyYXlbaV0udXJsLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoWyfnvJbovpEnLCAn56e75L2NJywgJ+WIoOmZpCddLCAzLCAn6K+36YCJ5oup5L2g6KaB5omn6KGM55qE5pON5L2cJykuc2VsZWN0KChpKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJC5yZXF1aXJlKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2FwaT9ydWxlPemFjee9ruWKqeaJi1xcXFxcXFwiKS5vcF9iYXNpYyhpKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaSksXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJyxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmdDbGljazogW3tcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+azqOWFpUpTLOi+heWKqeWXheaOoicsIGpzOiAkLnRvU3RyaW5nKChpKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9wYWdlL2pzQWRkX1BhZ2U/cnVsZT3phY3nva7liqnmiYsmaW5kZXg9JyArIGk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaSksXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXgrKztcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQoZCk7XFxcXG4gICAgICAgICAgICAgICAgfSwgaXRlbSksXFxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcXFxuICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgIH0pO1xcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgdGl0bGU6ICfinpUnLFxcXFxuICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gJCgnJywgJ+ivt+i+k+WFpemcgOimgeino+aekOeahOagh+ivhu+8jOavlOWmguWfn+WQjScpLmlucHV0KCgpID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgdGFnc0FycmF5ID0gSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2Vfc2VsZWN0aW9uLmpzb24nKSk7XFxcXG4gICAgICAgICAgICAgICAgICAgIHRhZ3NBcnJheS5wdXNoKGlucHV0KTtcXFxcbiAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZV9zZWxlY3Rpb24uanNvbicsIEpTT04uc3RyaW5naWZ5KHRhZ3NBcnJheSkpO1xcXFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+a3u+WKoOe6v+i3r+aIkOWKn34nXFxcXG4gICAgICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgICAgIH0pLFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcXFxuICAgICAgICB9LCB7XFxcXG4gICAgICAgICAgICB0aXRsZTogJ+KelicsXFxcXG4gICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcXFxuICAgICAgICAgICAgICAgIHRhZ3NBcnJheSA9IEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlX3NlbGVjdGlvbi5qc29uJykpO1xcXFxuICAgICAgICAgICAgICAgIHJldHVybiAkKHRhZ3NBcnJheSwgMywgJ+ivt+mAieaLqeS9oOimgeWIoOmZpOeahOe6v+i3rycpLnNlbGVjdCgodGFnc0FycmF5KSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5pbmRleE9mID0gZnVuY3Rpb24gKHZhbCkge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXNbaV0gPT0gdmFsKSByZXR1cm4gaTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTtcXFxcbiAgICAgICAgICAgICAgICAgICAgfTtcXFxcbiAgICAgICAgICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uICh2YWwpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IHRoaXMuaW5kZXhPZih2YWwpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNwbGljZShpbmRleCwgMSk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgICAgIH07XFxcXG4gICAgICAgICAgICAgICAgICAgIHRhZ3NBcnJheS5yZW1vdmUoaW5wdXQpO1xcXFxuICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlX3NlbGVjdGlvbi5qc29uJywgSlNPTi5zdHJpbmdpZnkodGFnc0FycmF5KSk7XFxcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpO1xcXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5bey56e76Zmk57q/6LevfidcXFxcbiAgICAgICAgICAgICAgICB9LCB0YWdzQXJyYXkpXFxcXG4gICAgICAgICAgICB9KSxcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlnQXJyYXkubGVuZ3RoOyBpKyspIHtcXFxcbiAgICAgICAgICAgIGlmIChjb25maWdBcnJheVtpXS50YWdzID09IHVuZGVmaW5lZCkge1xcXFxuICAgICAgICAgICAgICAgIGNvbmZpZ0FycmF5W2ldLnRhZ3MgPSAn5YWo6YOoJ1xcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXFxcXFwiY29sb3I6IzZFQjg5N1xcXFxcXFwiPicgKyBpICsgJzwvc3Bhbj4tJyArIGNvbmZpZ0FycmF5W2ldLm5hbWUgKyAnXFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx04oCY4oCY4oCZ4oCZPHNwYW4gc3R5bGU9XFxcXFxcXCJjb2xvcjojOTlDQ0ZGXFxcXFxcXCI+PHNtYWxsPiPlupTnlKg6JyArIGNvbmZpZ0FycmF5W2ldLnRhZ3MgKyAoY29uZmlnQXJyYXlbaV0uanMgIT0gdW5kZWZpbmVkICYmIGNvbmZpZ0FycmF5W2ldLmpzICE9ICcnID8gJzwvc21hbGw+PC9zcGFuPicgKyAnXFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx04oCY4oCY4oCZ4oCZPHNwYW4gc3R5bGU9XFxcXFxcXCJjb2xvcjpyZWRcXFxcXFxcIj48c21hbGw+I0pTPC9zbWFsbD48L3NwYW4+JyA6ICcnKSxcXFxcbiAgICAgICAgICAgICAgICBkZXNjOiBjb25maWdBcnJheVtpXS51cmwsXFxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKFsn57yW6L6RJywgJ+enu+S9jScsICfliKDpmaQnXSwgMywgJ+ivt+mAieaLqeS9oOimgeaJp+ihjOeahOaTjeS9nCcpLnNlbGVjdCgoaSkgPT4ge1xcXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJC5yZXF1aXJlKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2FwaT9ydWxlPemFjee9ruWKqeaJi1xcXFxcXFwiKS5vcF9iYXNpYyhpKTtcXFxcbiAgICAgICAgICAgICAgICB9LCBpKSxcXFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMScsXFxcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgbG9uZ0NsaWNrOiBbe1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfms6jlhaVKUyzovoXliqnll4XmjqInLCBqczogJC50b1N0cmluZygoaSkgPT4ge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9wYWdlL2pzQWRkX1BhZ2U/cnVsZT3phY3nva7liqnmiYsmaW5kZXg9JyArIGk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBpKSxcXFxcbiAgICAgICAgICAgICAgICAgICAgfV1cXFxcbiAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgfVxcXFxuICAgIH0gZWxzZSBpZiAoZ2V0VmFyKCdtb2RlJywgJ+mFjee9ricpID09ICfmibnph4/lt6XlhbcnKSB7XFxcXG4gICAgICAgIGlmIChnZXRWYXIoJ3R5cGUnLCAn5om56YeP5Yig6ZmkJykgPT0gJ+aJuemHj+WIoOmZpCcpIHtcXFxcbiAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfnoa7orqTliKDpmaRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHTigJjigJjigJnigJk8c3BhbiBzdHlsZT1cXFxcXFxcImNvbG9yOnJlZFxcXFxcXFwiPicgKyBnZXRWYXIoJ2RlbE51bScsICcwJykgKyAnPC9zcGFuPlxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdOadoeino+aekCcsXFxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5I25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgIGlmIChnZXRWYXIoJ2RlbE51bScsICcwJykgPT0gJzAnKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v6K+35YWI6YCJ5oup6KaB5Yig6Zmk55qE6Kej5p6Q77yBJ1xcXFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVsQXJyYXkgPSBKU09OLnBhcnNlKGdldFZhcignZGVsQXJyYXknKSk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2coZGVsQXJyYXkpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0RmlsZSA9IHJlYWRGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgZXZhbCgnY29uZmlnQXJyYXk9JyArIHNldEZpbGUpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3QXJyYXkgPSBbXTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlnQXJyYXkubGVuZ3RoOyBpKyspIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWRlbEFycmF5LmluY2x1ZGVzKGkpKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0FycmF5LnB1c2goY29uZmlnQXJyYXlbaV0pO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicsIEpTT04uc3RyaW5naWZ5KG5ld0FycmF5KSk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxOdW0gPSBnZXRWYXIoJ2RlbE51bScsICcwJyk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhclZhcignZGVsTnVtJyk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhclZhcignZGVsQXJyYXknKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlnQXJyYXkubGVuZ3RoOyBpKyspIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhclZhcignaXNDaG9vc2UnICsgaSk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcInRvYXN0Oi8v5YWx5Yig6ZmkXFxcXFxcXCIgKyBkZWxOdW0gKyAn5p2h6Kej5p6QJztcXFxcbiAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgIH0pLFxcXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXFxcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgaWQ6ICdkZWxCdG4nXFxcXG4gICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICBpbmRleCA9IDA7XFxcXG4gICAgICAgICAgICBjb25maWdBcnJheS5mb3JFYWNoKGl0ZW0gPT4ge1xcXFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPHNwYW4gc3R5bGU9XFxcXFxcXCJjb2xvcjojNkVCODk3XFxcXFxcXCI+JyArIGluZGV4ICsgJzwvc3Bhbj4tJyArIGl0ZW0ubmFtZSArIChjb25maWdBcnJheVtpbmRleF0uanMgIT0gdW5kZWZpbmVkICYmIGNvbmZpZ0FycmF5W2luZGV4XS5qcyAhPSAnJyA/ICc8L3NtYWxsPjwvc3Bhbj4nICsgJ1xcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdOKAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXFxcXFwiY29sb3I6cmVkXFxcXFxcXCI+PHNtYWxsPiNKUzwvc21hbGw+PC9zcGFuPicgOiAnJyksXFxcXG4gICAgICAgICAgICAgICAgICAgIGRlc2M6IGl0ZW0udXJsLFxcXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJ2hpa2VyOi8vZW1wdHkjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChpbmRleCwgaXRlbSkgPT4ge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdldFZhcignaXNDaG9vc2UnICsgaW5kZXgsICdubycpID09ICd5ZXMnKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nKGluZGV4KTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxBcnJheSA9IEpTT04ucGFyc2UoZ2V0VmFyKCdkZWxBcnJheScsICdbXScpKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxOdW0gPSBOdW1iZXIoZ2V0VmFyKCdkZWxOdW0nLCAnMCcpKSAtIDE7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsQXJyYXkucG9wKGluZGV4KTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoJ2RlbEFycmF5JywgZGVsQXJyYXkpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcignZGVsTnVtJywgZGVsTnVtKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKGluZGV4ICsgJycsIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfigJjigJjigJnigJk8c3BhbiBzdHlsZT1cXFxcXFxcImNvbG9yOiM2RUI4OTdcXFxcXFxcIj4nICsgaW5kZXggKyAnPC9zcGFuPi0nICsgaXRlbS5uYW1lLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUl0ZW0oJ2RlbEJ0bicsIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfnoa7orqTliKDpmaRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHTigJjigJjigJnigJk8c3BhbiBzdHlsZT1cXFxcXFxcImNvbG9yOnJlZFxcXFxcXFwiPicgKyBnZXRWYXIoJ2RlbE51bScsICcwJykgKyAnPC9zcGFuPlxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdOadoeino+aekCdcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoJ2lzQ2hvb3NlJyArIGluZGV4LCAnbm8nKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxBcnJheSA9IEpTT04ucGFyc2UoZ2V0VmFyKCdkZWxBcnJheScsICdbXScpKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxOdW0gPSBOdW1iZXIoZ2V0VmFyKCdkZWxOdW0nLCAnMCcpKSArIDE7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsQXJyYXkucHVzaChpbmRleCk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nKGRlbEFycmF5KTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoJ2RlbEFycmF5JywgZGVsQXJyYXkpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcignZGVsTnVtJywgZGVsTnVtKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKGluZGV4ICsgJycsIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfigJjigJjigJnigJk8c3BhbiBzdHlsZT1cXFxcXFxcImNvbG9yOnJlZFxcXFxcXFwiPicgKyBpbmRleCArICctJyArIGl0ZW0ubmFtZSArICc8L3NwYW4+JyxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKCdkZWxCdG4nLCB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn56Gu6K6k5Yig6ZmkXFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx04oCY4oCY4oCZ4oCZPHNwYW4gc3R5bGU9XFxcXFxcXCJjb2xvcjpyZWRcXFxcXFxcIj4nICsgZ2V0VmFyKCdkZWxOdW0nLCAnMCcpICsgJzwvc3Bhbj5cXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHTmnaHop6PmnpAnXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0VmFyKCdpc0Nob29zZScgKyBpbmRleCwgJ3llcycpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgICAgIH0sIGluZGV4LCBpdGVtKSxcXFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnLFxcXFxuICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGluZGV4ICsgJycsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBsb25nQ2xpY2s6IFt7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfms6jlhaVKUyzovoXliqnll4XmjqInLCBqczogJC50b1N0cmluZygoaW5kZXgpID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL3BhZ2UvanNBZGRfUGFnZT9ydWxlPemFjee9ruWKqeaJiyZpbmRleD0nICsgaW5kZXg7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaW5kZXgpLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfV1cXFxcbiAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgICAgIGluZGV4Kys7XFxcXG4gICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfnoa7orqTliIbkuqtcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHTigJjigJjigJnigJk8c3BhbiBzdHlsZT1cXFxcXFxcImNvbG9yOnJlZFxcXFxcXFwiPicgKyBnZXRWYXIoJ3NoYXJlTnVtJywgJzAnKSArICc8L3NwYW4+XFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx05p2h6Kej5p6QJyxcXFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoJ2hpa2VyOi8vZW1wdHkjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgaWYgKGdldFZhcignc2hhcmVOdW0nLCAnMCcpID09ICcwJykge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+ivt+WFiOmAieaLqeimgeWIhuS6q+eahOino+aekO+8gSdcXFxcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlQXJyYXkgPSBKU09OLnBhcnNlKGdldFZhcignc2hhcmVBcnJheScpKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhzaGFyZUFycmF5KTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2YWwoJ2NvbmZpZ0FycmF5PScgKyByZWFkRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nKSk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBzaGFyZUZpbGUgPSBbXTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlnQXJyYXkubGVuZ3RoOyBpKyspIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2hhcmVBcnJheS5pbmNsdWRlcyhpKSkge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZUZpbGUucHVzaChjb25maWdBcnJheVtpXSk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VjcmV0Q29udGVudCA9IGJhc2U2NEVuY29kZShiYXNlNjRFbmNvZGUoSlNPTi5zdHJpbmdpZnkoc2hhcmVGaWxlKSkpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29weShcXFxcXFxcIuWKqeaJi+ino+aekOWvvOWFpeWPo+S7pMKlwqVcXFxcXFxcIiArIHNoYXJlUGFzdGUoc2VjcmV0Q29udGVudCkpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJWYXIoJ3NoYXJlTnVtJyk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhclZhcignc2hhcmVBcnJheScpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb25maWdBcnJheS5sZW5ndGg7IGkrKykge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyVmFyKCdpc0Nob29zZScgKyBpKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/liIbkuqvmiJDlip9cXFxcXFxcIlxcXFxuICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgfSksXFxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJyxcXFxcbiAgICAgICAgICAgICAgICBleHRyYToge1xcXFxuICAgICAgICAgICAgICAgICAgICBpZDogJ3NoYXJlQnRuJ1xcXFxuICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgaW5kZXggPSAwO1xcXFxuICAgICAgICAgICAgY29uZmlnQXJyYXkuZm9yRWFjaChpdGVtID0+IHtcXFxcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXFxcXFwiY29sb3I6IzZFQjg5N1xcXFxcXFwiPicgKyBpbmRleCArICc8L3NwYW4+LScgKyBpdGVtLm5hbWUgKyAoY29uZmlnQXJyYXlbaW5kZXhdLmpzICE9IHVuZGVmaW5lZCAmJiBjb25maWdBcnJheVtpbmRleF0uanMgIT0gJycgPyAnPC9zbWFsbD48L3NwYW4+JyArICdcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHTigJjigJjigJnigJk8c3BhbiBzdHlsZT1cXFxcXFxcImNvbG9yOnJlZFxcXFxcXFwiPjxzbWFsbD4jSlM8L3NtYWxsPjwvc3Bhbj4nIDogJycpLFxcXFxuICAgICAgICAgICAgICAgICAgICBkZXNjOiBpdGVtLnVybCxcXFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5I25vTG9hZGluZyMnKS5sYXp5UnVsZSgoaW5kZXgsIGl0ZW0pID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXRWYXIoJ2lzQ2hvb3NlJyArIGluZGV4LCAnbm8nKSA9PSAneWVzJykge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhpbmRleCk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVBcnJheSA9IEpTT04ucGFyc2UoZ2V0VmFyKCdzaGFyZUFycmF5JywgJ1tdJykpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlTnVtID0gTnVtYmVyKGdldFZhcignc2hhcmVOdW0nLCAnMCcpKSAtIDE7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVBcnJheS5wb3AoaW5kZXgpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcignc2hhcmVBcnJheScsIHNoYXJlQXJyYXkpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcignc2hhcmVOdW0nLCBzaGFyZU51bSk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlSXRlbShpbmRleCArICcnLCB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPHNwYW4gc3R5bGU9XFxcXFxcXCJjb2xvcjojNkVCODk3XFxcXFxcXCI+JyArIGluZGV4ICsgJzwvc3Bhbj4tJyArIGl0ZW0ubmFtZSxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKCdzaGFyZUJ0bicsIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfnoa7orqTliIbkuqtcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHTigJjigJjigJnigJk8c3BhbiBzdHlsZT1cXFxcXFxcImNvbG9yOnJlZFxcXFxcXFwiPicgKyBnZXRWYXIoJ3NoYXJlTnVtJywgJzAnKSArICc8L3NwYW4+XFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx05p2h6Kej5p6QJyxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoJ2lzQ2hvb3NlJyArIGluZGV4LCAnbm8nKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZUFycmF5ID0gSlNPTi5wYXJzZShnZXRWYXIoJ3NoYXJlQXJyYXknLCAnW10nKSk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVOdW0gPSBOdW1iZXIoZ2V0VmFyKCdzaGFyZU51bScsICcwJykpICsgMTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZUFycmF5LnB1c2goaW5kZXgpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhzaGFyZUFycmF5KTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoJ3NoYXJlQXJyYXknLCBzaGFyZUFycmF5KTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoJ3NoYXJlTnVtJywgc2hhcmVOdW0pO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUl0ZW0oaW5kZXggKyAnJywge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXFxcXFwiY29sb3I6cmVkXFxcXFxcXCI+JyArIGluZGV4ICsgJy0nICsgaXRlbS5uYW1lICsgJzwvc3Bhbj4nLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUl0ZW0oJ3NoYXJlQnRuJywge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+ehruiupOWIhuS6q1xcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdOKAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXFxcXFwiY29sb3I6cmVkXFxcXFxcXCI+JyArIGdldFZhcignc2hhcmVOdW0nLCAnMCcpICsgJzwvc3Bhbj5cXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHTmnaHop6PmnpAnLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcignaXNDaG9vc2UnICsgaW5kZXgsICd5ZXMnKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICB9LCBpbmRleCwgaXRlbSksXFxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJyxcXFxcbiAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBpbmRleCArICcnLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9uZ0NsaWNrOiBbe1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5rOo5YWlSlMs6L6F5Yqp5ZeF5o6iJywganM6ICQudG9TdHJpbmcoKGluZGV4KSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9wYWdlL2pzQWRkX1BhZ2U/cnVsZT3phY3nva7liqnmiYsmaW5kZXg9JyArIGluZGV4O1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGluZGV4KSxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1dXFxcXG4gICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgICAgICBpbmRleCsrO1xcXFxuICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgIH1cXFxcbiAgICB9IGVsc2UgaWYgKGdldFZhcignbW9kZScsICfphY3nva4nKSA9PSAn6Kej5p6Q5rWL6K+VJykge1xcXFxuICAgICAgICBzZXRGaWxlID0gcmVhZEZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJyk7XFxcXG4gICAgICAgIGV2YWwoJ2NvbmZpZ0FycmF5PScgKyBzZXRGaWxlKTtcXFxcbiAgICAgICAgaW5kZXggPSAwO1xcXFxuICAgICAgICBjb25maWdBcnJheS5mb3JFYWNoKGl0ZW0gPT4ge1xcXFxuICAgICAgICAgICAgamlleGkgPSBpdGVtLnVybDtcXFxcbiAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0ubmFtZSArIChjb25maWdBcnJheVtpbmRleF0uanMgIT0gdW5kZWZpbmVkICYmIGNvbmZpZ0FycmF5W2luZGV4XS5qcyAhPSAnJyA/ICc8L3NtYWxsPjwvc3Bhbj4nICsgJ1xcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdOKAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXFxcXFwiY29sb3I6cmVkXFxcXFxcXCI+PHNtYWxsPiNKUzwvc21hbGw+PC9zcGFuPicgOiAnJykgKyAnXFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx04oCY4oCY4oCZ4oCZPGZvbnQgY29sb3I9XFxcXFxcXCIjNkVCODk3XFxcXFxcXCI+PHNtYWxsPuKeruWJjeW+gOa1i+ivlTwvc21hbGw+PC9mb250PicsXFxcXG4gICAgICAgICAgICAgICAgZGVzYzogaXRlbS51cmwsXFxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKCkucnVsZSgoamlleGkpID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgbGV0IGQgPSBbXTtcXFxcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn57yW6L6R5rWL6K+V6ZO+5o6lJyxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2VkaXRGaWxlOi8vaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9jZXNoaS5qc29uJyxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcXFxuICAgICAgICAgICAgICAgICAgICB9LCB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+W8ueW5lTonICsgZ2V0VmFyKCdkbVN3aXRjaCcsICflhbMnKSxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXRWYXIoJ2RtU3dpdGNoJywgJ+WFsycpID09ICflhbMnKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcignZG1Td2l0Y2gnLCAn5byAJyk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0VmFyKCdkbVN3aXRjaCcsICflhbMnKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlSXRlbSgnZG1Td2l0Y2gnLCB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5by55bmVOicgKyBnZXRWYXIoJ2RtU3dpdGNoJywgJ+WFsycpLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJyxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdkbVN3aXRjaCdcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICAgICAgICAgIGlmICghZmlsZUV4aXN0KCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2Nlc2hpLmpzb24nKSkge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgY2VzaGlEYXRhID0ge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICfohb7orq/op4bpopEnOiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vYW5kcm9pZC1hcnR3b3Jrcy4yNXBwLmNvbS9mczA4LzIwMjEvMDkvMTUvMy8xMDZfM2EwZDIxMmUxN2NiOTVlMjMyZmZlMTU1NDYwMzg1Y2JfY29uXzEzMHgxMzAucG5nJyxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly92LnFxLmNvbS94L2NvdmVyL216YzAwMjAwcm1wYWY0MC9uMDAzNmw0dG50Yy5odG1sJ1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ+S8mOmFtyc6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9hbmRyb2lkLWFydHdvcmtzLjI1cHAuY29tL2ZzMDgvMjAyMS8wOS8xNi85LzExMF84ZmYwNmUwYzIzNzc2MGNkNTdkMjUwOGZkOThjODQxNF9jb25fMTMweDEzMC5wbmcnLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdodHRwczovL3YueW91a3UuY29tL3Zfc2hvdy9pZF9YTkRjME1ERTFOVGsxTWc9PS5odG1sJ1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ+eIseWlh+iJuic6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9hbmRyb2lkLWFydHdvcmtzLjI1cHAuY29tL2ZzMDgvMjAyMS8wOS8wOS84LzExMF85MDFmMmVmMzdhZjJmZWEyNWU1ZDk2NDhmNTUxY2UzMV9jb25fMTMweDEzMC5wbmcnLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdodHRwOi8vd3d3LmlxaXlpLmNvbS92XzJnYTh6dHM4NnlzLmh0bWwnXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAn6IqS5p6cVFYnOiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vYW5kcm9pZC1hcnR3b3Jrcy4yNXBwLmNvbS9mczA4LzIwMjEvMDkvMTUvNi8xMTBfMTgzNGQyOTZhYTViNTY2NmE3ZDk0YjFlMzQ3OWFlNjRfY29uXzEzMHgxMzAucG5nJyxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaHR0cDovL3d3dy5tZ3R2LmNvbS9iLzM0OTI1My8xMDQyNDMwMC5odG1sJ1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ+WTlOWTqeWTlOWTqSc6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9hbmRyb2lkLWFydHdvcmtzLjI1cHAuY29tL2ZzMDgvMjAyMS8wOS8yNy80LzExMF84ZTJlM2Q4OGM0NTAyNWIzODBlNjk4MTdkNmZiNTNiMV9jb25fMTMweDEzMC5wbmcnLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdodHRwczovL20uYmlsaWJpbGkuY29tL2Jhbmd1bWkvcGxheS9lcDQyODk5MydcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICfmkJzni5Dop4bpopEnOiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vYW5kcm9pZC1hcnR3b3Jrcy4yNXBwLmNvbS9mczA4LzIwMjEvMDkvMTUvOS8xMTBfNTMyYTUxZjg0MzFlZmMzNzc4MDhjMWZmZmYyZGEzNmZfY29uXzEzMHgxMzAucG5nJyxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly9tLnR2LnNvaHUuY29tL3Y3MzI5NDQxLnNodG1sJyxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICfopb/nk5zop4bpopEnOiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vYW5kcm9pZC1hcnR3b3Jrcy4yNXBwLmNvbS9mczA4LzIwMjEvMDkvMjcvNS8xMTBfYTg2MjY1ODgyZWQxOGM2MTkwNTY2ZTllYTI1Zjk2OThfY29uXzEzMHgxMzAucG5nJyxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly93d3cuaXhpZ3VhLmNvbS82Njk5MzU2NzkyOTA1Nzk0MDU1J1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ+S5kOinhic6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9hbmRyb2lkLWFydHdvcmtzLjI1cHAuY29tL2ZzMDgvMjAyMS8wOS8xNS84LzJfMzViNWQ0MzczZjRiY2JhMjhmMzk0ODZlNGYxMTY0ZDlfY29uXzEzMHgxMzAucG5nJyxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly9tLmxlLmNvbS92cGxheV83Njk1NDMzMy5odG1sP2Zyb209YWpheCcsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnMTkwNSc6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9hbmRyb2lkLWFydHdvcmtzLjI1cHAuY29tL2ZzMDgvMjAyMS8wOS8xOC80LzExMF81ZjI0YjEwNTJmZWQ0ZjdmYzczNTkzYThlZjI3Mjc2ZF9jb25fMTMweDEzMC5wbmcnLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdodHRwczovL3ZpcC4xOTA1LmNvbS9tL3BsYXkvMTQyOTcyNS5zaHRtbCdcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICfpo47ooYzop4bpopEnOiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vYW5kcm9pZC1hcnR3b3Jrcy4yNXBwLmNvbS9mczA4LzIwMjEvMDkvMTYvNC8xMTBfNmY2YWY5Zjk5YjI2MjllNTFmMGIwYTMzY2RmZjFkOWVfY29uXzEzMHgxMzAucG5nJyxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaHR0cDovL20uZnVuLnR2L21wbGF5Lz9taWQ9OTU3MTknXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUFBUVuinhumikSc6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9hbmRyb2lkLWFydHdvcmtzLjI1cHAuY29tL2ZzMDgvMjAyMS8wOS8yOC81LzExMF9hNDU1YjI5NTEyMjcwNDBlZTYyOTU1ZWRjZmI4OWQ3Ml9jb25fMTMweDEzMC5wbmcnLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdodHRwczovL3YucHB0di5jb20vc2hvdy96Vm4zZEpYdDF4VjQ5bDQuaHRtbCdcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICfpvpnohb4nOiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9rZS80LnBuZycsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ0xULTFlYzNmNjc1NGY2ODU4NmVkN2Y5MmMzZTk5NWNmY2E2J1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ+S6uuS6uui/tyc6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL2tlLzYucG5nJyxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAncmVucmVubWktYWI5MjRlMTFkMmQ2OTM5NydcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICfkupTmr5InOiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9rZS8zMC5wbmcnLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICd3dWR1eXVuLTE2NDk0MzEzMDcwMjEnXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAn5aSa5aSaJzoge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8va2UvNDkucG5nJyxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly9tM3U4LmNhY2hlLnN1b3lvLmNjL20zdTgvMjAyMjAzLzgvYWFhYmQ5MmRhMjY3NzRjNjg4NTBhMDIzMTUzYzgwZjFhZTZmYTliZS5tM3U4J1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ+iejeWFtCc6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL2tlLzgwLnBuZycsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ1JvbmdYaW5nVlItNDIxNTY0NTU4MTkzMidcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICfpm6rkuronOiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9xLzEzMy5wbmcnLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICd4dWVyZW4tMTY0NjgyMzA3MidcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICfml4vpo47kupEnOiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9rZS81NC5wbmcnLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICd4ZnktNTI5ZTY0NTc5NTNkNTQ1ZidcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICfnkZ7kuLDotYTmupAnOiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9rZS83Mi5wbmcnLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdodHRwczovLzEucnVpZmVuZ2xiLmNvbS9wbGF5LzE2NDQ5MTQ1OTUubTN1OCdcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2Nlc2hpLmpzb24nLCBKU09OLnN0cmluZ2lmeShjZXNoaURhdGEpKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICBjZXNoaURhdGEgPSBKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvY2VzaGkuanNvbicpKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcHJvcCBpbiBjZXNoaURhdGEpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHByb3AsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiBjZXNoaURhdGFbcHJvcF0ucGljICsgJ0BSZWZlcmVyPScsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCcnKS5sYXp5UnVsZSgoY2VzaGlEYXRhLCBwcm9wLCBqaWV4aSkgPT4ge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXBVcmwgPSBjZXNoaURhdGFbcHJvcF0udXJsO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmxzID0gW1xcXFxcXFwidmlkZW86Ly9cXFxcXFxcIiArIGppZXhpICsgdmlwVXJsXTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZXMgPSBbJ+a1i+ivlSddXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXRWYXIoJ2RtU3dpdGNoJywgJ+WFsycpID09ICflvIAnKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJC5yZXF1aXJlKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2xhenlUb0ppZXhpP3J1bGU9ZG3nm5LlrZBcXFxcXFxcIikudmlkZW9YNSh2aXBVcmwsIHVybHMsIG5hbWVzLCBbeyBcXFxcXFxcIlVzZXItQWdlbnRcXFxcXFxcIjogUENfVUEgfV0pO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidmlkZW86Ly9cXFxcXFxcIiArIGppZXhpICsgdmlwVXJsO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgY2VzaGlEYXRhLCBwcm9wLCBqaWV4aSksXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdpY29uXzQnXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfmtYvor5UnLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogJ+S9oOi/mOWPr+S7peS7u+aEj+i+k+WFpeS4gOS4quinhumikeWcsOWdgOa1i+ivleW9k+WJjeino+aekH4nLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkLnRvU3RyaW5nKChqaWV4aSkgPT4ge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpcFVybCA9IGdldFZhcignY2VzaGlMaW5rJyk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJscyA9IFtcXFxcXFxcInZpZGVvOi8vXFxcXFxcXCIgKyBqaWV4aSArIHZpcFVybF07XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZXMgPSBbJ+a1i+ivlSddXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdldFZhcignZG1Td2l0Y2gnLCAn5YWzJykgPT0gJ+W8gCcpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vcGFnZS9sYXp5VG9KaWV4aT9ydWxlPWRt55uS5a2QXFxcXFxcXCIpLnZpZGVvWDUodmlwVXJsLCB1cmxzLCBuYW1lcywgW3sgXFxcXFxcXCJVc2VyLUFnZW50XFxcXFxcXCI6IFBDX1VBIH1dKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ2aWRlbzovL1xcXFxcXFwiICsgamlleGkgKyB2aXBVcmw7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgamlleGkpLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdpbnB1dCcsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0YXJlYScsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAtMSxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogXFxcXFxcXCJwdXRWYXIoJ2Nlc2hpTGluaycsaW5wdXQpXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5Yig6Zmk6K+l6Kej5p6QJyxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6ICfor7forqTnnJ/ogIPomZF+JyxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNub0xvYWRpbmcjJykubGF6eVJ1bGUoKGppZXhpKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLmluZGV4T2YgPSBmdW5jdGlvbiAodmFsKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXNbaV0udXJsID09IHZhbCkgcmV0dXJuIGk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uICh2YWwpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5pbmRleE9mKHZhbCk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA+IC0xKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNwbGljZShpbmRleCwgMSk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEZpbGUgPSByZWFkRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmFsKCdjb25maWdBcnJheT0nICsgc2V0RmlsZSk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnQXJyYXkucmVtb3ZlKGppZXhpKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nLCBKU09OLnN0cmluZ2lmeShjb25maWdBcnJheSkpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOWFs+mXremhtemdouW5tuWIt+aWsOWJjeS4gOS4qumhtemdolxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2sodHJ1ZSk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/liKDpmaTmiJDlip9+XFxcXFxcXCI7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBqaWV4aSksXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgICAgICAgICBzZXRIb21lUmVzdWx0KGQpO1xcXFxuICAgICAgICAgICAgICAgIH0sIGppZXhpKSxcXFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMScsXFxcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgbG9uZ0NsaWNrOiBbe1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfms6jlhaVKUyzovoXliqnll4XmjqInLCBqczogJC50b1N0cmluZygoaW5kZXgpID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vcGFnZS9qc0FkZF9QYWdlP3J1bGU96YWN572u5Yqp5omLJmluZGV4PScgKyBpbmRleDtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGluZGV4KSxcXFxcbiAgICAgICAgICAgICAgICAgICAgfV1cXFxcbiAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgIGluZGV4Kys7XFxcXG4gICAgICAgIH0pO1xcXFxuICAgIH1cXFxcbiAgICAvLyDmraPluLjlpIfku73igJTigJToi6XmiafooYzliLDmraTpg73ml6DlvILluLjlh7rnjrDnmoTor53vvIFcXFxcbiAgICBzZXRGaWxlID0gcmVhZEZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJyk7XFxcXG4gICAgZXZhbCgnY29uZmlnQXJyYXk9JyArIHNldEZpbGUpO1xcXFxuICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2VfYmFjay5qc29uJywgSlNPTi5zdHJpbmdpZnkoY29uZmlnQXJyYXkpKTtcXFxcbiAgICBsb2coJ+aWh+S7tuaXoOW8guW4uO+8jOWkh+S7veaIkOWKn34nKTtcXFxcbn0gY2F0Y2ggKGUpIHtcXFxcbiAgICBsb2coJ+aWh+S7tuW8guW4uO+8jOivt+aBouWkjX4nKTtcXFxcbiAgICAvLyDlvILluLjkuI3lpIfku73vvIzor7fmgaLlpI1cXFxcbiAgICBzaG93TG9hZGluZygn6YWN572u5paH5Lu25byC5bi477yB77yB77yBJyk7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6ICfmgaLlpI3lpIfku70nLFxcXFxuICAgICAgICBkZXNjOiAn5aaC5p6c5Zug5Li65LiA5Lqb6ZSZ6K+v77yM5pWw5o2u5Y+R55Sf5LqG5o2f5Z2P5LqG5Y+v5Lul5bCd6K+V5oGi5aSNficsXFxcXG4gICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxcXG4gICAgICAgICAgICBzZXRGaWxlID0gcmVhZEZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZV9iYWNrLmpzb24nKTtcXFxcbiAgICAgICAgICAgIGV2YWwoJ2NvbmZpZ0FycmF5PScgKyBzZXRGaWxlKTtcXFxcbiAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicsIEpTT04uc3RyaW5naWZ5KGNvbmZpZ0FycmF5KSk7XFxcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKTtcXFxcbiAgICAgICAgICAgIHJldHVybiBcXFxcXFxcInRvYXN0Oi8v5oGi5aSN5oiQ5YqfXFxcXFxcXCI7XFxcXG4gICAgICAgIH0pLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxcXG4gICAgfSk7XFxcXG4gICAgc2V0UmVzdWx0KGQpO1xcXFxufVxcXFxuc2V0UmVzdWx0KGQpO1xcXFxuXFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi6LCD55So6Lev55SxXFxcIixcXFwicGF0aFxcXCI6XFxcIm11bFBhcnNlXFxcIixcXFwicnVsZVxcXCI6XFxcIi8qXFxcXHJcXFxcbiB2aXBVcmw65a6Y572R5Zyw5Z2AO+i/lOWbnuWAvEpTT07moLzlvI/nmoTlpJrnur/ot6/op4bpopHlnLDlnYBcXFxcclxcXFxu6LCD55So5o6l5Y+j77yaJC5yZXF1aXJlKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL211bFBhcnNlP3J1bGU96YWN572u5Yqp5omLXFxcXFxcXCIpLm11bFBhcnNlKHZpcFVybCk7XFxcXHJcXFxcbiAqL1xcXFxyXFxcXG4kLmV4cG9ydHMubXVsUGFyc2UgPSBmdW5jdGlvbiAodmlwVXJsLCBiZkxpbmssIGppZXhpTmFtZSxoZWFkZXJzKSB7XFxcXHJcXFxcbiAgICBpZiAodmlwVXJsLmluZGV4T2YoJ2RvdWJhbicpICE9IC0xKSB7XFxcXHJcXFxcbiAgICAgICAgdmlwVXJsID0gdmlwVXJsLnNwbGl0KCc/cHRhZz0nKVswXVxcXFxyXFxcXG4gICAgfVxcXFxyXFxcXG4gICAgbG9nKCfop4bpopHljp/lnLDlnYDvvJonICsgdmlwVXJsKTtcXFxcclxcXFxuICAgIHZhciBleHRyYV9sZW5ndGggPSAwO1xcXFxyXFxcXG4gICAgaWYgKGJmTGluayAmJiBqaWV4aU5hbWUpIHtcXFxcclxcXFxuICAgICAgICB2YXIgdXJscyA9IGJmTGluaztcXFxcclxcXFxuICAgICAgICB2YXIgbmFtZXMgPSBqaWV4aU5hbWU7XFxcXHJcXFxcbiAgICAgICAgaWYgKGhlYWRlcnMpIHtcXFxcclxcXFxuICAgICAgICAgICAgdmFyIGhlYWRlcnM9aGVhZGVycztcXFxcclxcXFxuICAgICAgICB9ZWxzZXtcXFxcclxcXFxuICAgICAgICAgICAgdmFyIGhlYWRlcnM9W107XFxcXHJcXFxcbiAgICAgICAgfVxcXFxyXFxcXG4gICAgICAgIGV4dHJhX2xlbmd0aCA9IGJmTGluay5sZW5ndGg7XFxcXHJcXFxcbiAgICB9IGVsc2Uge1xcXFxyXFxcXG4gICAgICAgIHZhciB1cmxzID0gW107XFxcXHJcXFxcbiAgICAgICAgdmFyIG5hbWVzID0gW107XFxcXHJcXFxcbiAgICAgICAgdmFyIGhlYWRlcnM9W107XFxcXHJcXFxcbiAgICB9XFxcXHJcXFxcbiAgICBsb2coXFxcXFxcXCLlpJrnur/ot6/op6PmnpDlvIDlp4tcXFxcXFxcIilcXFxcclxcXFxuICAgIHZhciBsaXN0ID0gSlNPTi5wYXJzZShyZWFkRmlsZShcXFxcXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uXFxcXFxcXCIpKTtcXFxcclxcXFxuICAgIHZhciB0YWdzQXJyYXkgPSBKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZV9zZWxlY3Rpb24uanNvbicpKTtcXFxcclxcXFxuICAgIHRhZ3NBcnJheS5mb3JFYWNoKGl0ZW0gPT4ge1xcXFxyXFxcXG4gICAgICAgIGV2YWwoJ3ZhciByZWcxPS8nICsgaXRlbSArICcvOycpO1xcXFxyXFxcXG4gICAgICAgIGV2YWwoJ3ZhciByZWcyPS8nICsgaXRlbSArICd85YWo6YOoLzsnKTtcXFxcclxcXFxuICAgICAgICBpZiAodmlwVXJsLm1hdGNoKHJlZzEpKSB7XFxcXHJcXFxcbiAgICAgICAgICAgIGxvZygn5b2T5YmN57q/6LevOicgKyBpdGVtKVxcXFxyXFxcXG4gICAgICAgICAgICBsaXN0LmZvckVhY2goaXRlbSA9PiB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS50YWdzID09IHVuZGVmaW5lZCB8fCBpdGVtLnRhZ3MubWF0Y2gocmVnMikpIHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICB1cmxzLnB1c2goXFxcXFxcXCJ2aWRlbzovL1xcXFxcXFwiICsgaXRlbS51cmwgKyB2aXBVcmwpO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgIG5hbWVzLnB1c2goaXRlbS5uYW1lKTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzLnB1c2goe30pO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgfVxcXFxyXFxcXG4gICAgICAgICAgICB9KTtcXFxcclxcXFxuICAgICAgICB9XFxcXHJcXFxcbiAgICB9KTtcXFxcclxcXFxuICAgIGlmICh1cmxzLmxlbmd0aCA9PSAwIHx8IHVybHMubGVuZ3RoID09IGV4dHJhX2xlbmd0aCkge1xcXFxyXFxcXG4gICAgICAgIGxvZygn5b2T5YmN57q/6LevOm90aGVyJylcXFxcclxcXFxuICAgICAgICBsaXN0LmZvckVhY2goaXRlbSA9PiB7XFxcXHJcXFxcbiAgICAgICAgICAgIHVybHMucHVzaChcXFxcXFxcInZpZGVvOi8vXFxcXFxcXCIgKyBpdGVtLnVybCArIHZpcFVybCk7XFxcXHJcXFxcbiAgICAgICAgICAgIG5hbWVzLnB1c2goaXRlbS5uYW1lKTtcXFxcclxcXFxuICAgICAgICB9KTtcXFxcclxcXFxuICAgIH1cXFxcclxcXFxuICAgIGxvZyhg5b2T5YmN5ZCv55So6Kej5p6Q77yaJHt1cmxzLmxlbmd0aH3kuKpgKVxcXFxyXFxcXG4gICAgdmFyIGRtU3dpdGNoID0gcmVxdWVzdCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9kbVN3aXRjaC50eHQnKTtcXFxcclxcXFxuICAgIHZhciBzID0gcmVxdWVzdCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9ib3hTd2l0Y2gudHh0JylcXFxcclxcXFxuICAgIGlmIChzID09IFxcXFxcXFwi5byAXFxcXFxcXCIpIHtcXFxcclxcXFxuICAgICAgICB2YXIgdSA9IFtdXFxcXHJcXFxcbiAgICAgICAgbGlzdC5mb3JFYWNoKGl0ZW0gPT4ge1xcXFxyXFxcXG4gICAgICAgICAgICB1LnB1c2goe1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgbmFtZTogaXRlbS5uYW1lLFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgdXJsOiBpdGVtLnVybCArIHZpcFVybFxcXFxyXFxcXG4gICAgICAgICAgICB9KVxcXFxyXFxcXG4gICAgICAgIH0pO1xcXFxyXFxcXG4gICAgICAgIHJlcXVpcmUoXFxcXFxcXCJodHRwczovL2hpa2VyZmFucy5jb20vSm9lL1RWYm94LmpzXFxcXFxcXCIpXFxcXHJcXFxcbiAgICAgICAgcmV0dXJuIOaOqOmAgXR2Ym94KHtcXFxcclxcXFxuICAgICAgICAgICAgbmFtZTogXFxcXFxcXCLphY3nva7liqnmiYvmjqjpgIFcXFxcXFxcIixcXFxcclxcXFxuICAgICAgICAgICAgdm9kOiBbe1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgLy9uYW1lOiBcXFxcXFxcIum7mOiupFxcXFxcXFwiLFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgdXJsczogdVxcXFxyXFxcXG4gICAgICAgICAgICB9XVxcXFxyXFxcXG4gICAgICAgIH0pXFxcXHJcXFxcbiAgICB9IGVsc2UgaWYgKGRtU3dpdGNoID09ICd0cnVlJykge1xcXFxyXFxcXG4gICAgICAgIHJldHVybiAkLnJlcXVpcmUoXFxcXFxcXCJoaWtlcjovL3BhZ2UvbGF6eVRvSmlleGk/cnVsZT1kbeebkuWtkFxcXFxcXFwiKS52aWRlb1g1KHZpcFVybCwgdXJscywgbmFtZXMsaGVhZGVycyk7XFxcXHJcXFxcbiAgICB9IGVsc2Uge1xcXFxyXFxcXG4gICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7XFxcXHJcXFxcbiAgICAgICAgICAgIHVybHM6IHVybHMsXFxcXHJcXFxcbiAgICAgICAgICAgIG5hbWVzOiBuYW1lcyxcXFxcclxcXFxuICAgICAgICAgICAgaGVhZGVyczpoZWFkZXJzXFxcXHJcXFxcbiAgICAgICAgfSk7XFxcXHJcXFxcbiAgICB9XFxcXHJcXFxcbn1cXFxcclxcXFxuXFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi5pat5o+S5o+S5Lu2XFxcIixcXFwicGF0aFxcXCI6XFxcImR1YW5cXFwiLFxcXCJydWxlXFxcIjpcXFwiZnVuY3Rpb24gYXl0bVBhcnNlKHZpcFVybCkge1xcXFxyXFxcXG4gICAgcmV0dXJuICQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vcGFnZS9tdWxQYXJzZT9ydWxlPemFjee9ruWKqeaJi1xcXFxcXFwiKS5tdWxQYXJzZSh2aXBVcmwpO1xcXFxyXFxcXG59XFxcXHJcXFxcblxcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIkpT5rOo5YWlXFxcIixcXFwicGF0aFxcXCI6XFxcImpzQWRkX1BhZ2VcXFwiLFxcXCJydWxlXFxcIjpcXFwianM6XFxcXG52YXIgZCA9IFtdO1xcXFxuaW5kZXggPSBnZXRQYXJhbSgnaW5kZXgnKTtcXFxcbnZhciBjb25maWdBcnJheSA9IEpTT04ucGFyc2UocmVxdWVzdChcXFxcXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uXFxcXFxcXCIpKTtcXFxcbnNob3dDb250ZW50PWNvbmZpZ0FycmF5W2luZGV4XS5qcyE9dW5kZWZpbmVkP2NvbmZpZ0FycmF5W2luZGV4XS5qczonJ1xcXFxuZC5wdXNoKHtcXFxcbiAgICBkZXNjOiAn6L6T5YWl5q2j56Gu5qC85byP5YaF5a65JyxcXFxcbiAgICBjb2xfdHlwZTogJ2lucHV0JyxcXFxcbiAgICBleHRyYToge1xcXFxuICAgICAgICB0aXRsZVZpc2libGU6IGZhbHNlLFxcXFxuICAgICAgICBkZWZhdWx0VmFsdWU6IHNob3dDb250ZW50LFxcXFxuICAgICAgICB0eXBlOiAndGV4dGFyZWEnLFxcXFxuICAgICAgICBoZWlnaHQ6IC0xLFxcXFxuICAgICAgICBoaWdobGlnaHQ6IHRydWUsXFxcXG4gICAgICAgIG9uQ2hhbmdlOiBcXFxcXFxcInB1dFZhcignanNBZGQnLGlucHV0KVxcXFxcXFwiLFxcXFxuICAgICAgICBpZDogJ2pzQWRkJ1xcXFxuICAgIH1cXFxcbn0sIHtcXFxcbiAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxzbWFsbD48c3BhbiBzdHlsZT1cXFxcXFxcImNvbG9yOiM2RUI4OTdcXFxcXFxcIj4x44CB55u05o6l5Lmm5YaZ6YCC55So5LqOeDXnlYzpnaLnmoRqc+S7o+eggeWNs+WPrzxicj4y44CB5Lik56eN5pa55byPOumHjeWumuWQkeaSreaUvumTvuaOpeWSjOi/lOWbnuaSreaUvumTvuaOpeS4pOenjeW9ouW8jzxicj4z44CB5YW35L2T5Y+C6KeB5biu5Yqp5paH5qGjJyxcXFxcbiAgICBkZXNjOifigJjigJjigJnigJk8YmlnPjxiaWc+PHNwYW4gc3R5bGU9XFxcXFxcXCJjb2xvcjojMjk4QTA4XFxcXFxcXCI+5L+dIOWtmCcsXFxcXG4gICAgdXJsOiAkKCkubGF6eVJ1bGUoKGluZGV4KSA9PiB7XFxcXG4gICAgICAgIGpzQWRkID0gZ2V0VmFyKCdqc0FkZCcpO1xcXFxuICAgICAgICB2YXIgY29uZmlnQXJyYXkgPSBKU09OLnBhcnNlKHJlcXVlc3QoXFxcXFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvblxcXFxcXFwiKSk7XFxcXG4gICAgICAgIGNvbmZpZ0FycmF5W2luZGV4XS5qcz1qc0FkZDtcXFxcbiAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJywgSlNPTi5zdHJpbmdpZnkoY29uZmlnQXJyYXkpKTtcXFxcbiAgICAgICAgYmFjayh0cnVlKTtcXFxcbiAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/lt7Lkv53lrZjkv67mlLlcXFxcXFxcIlxcXFxuICAgIH0saW5kZXgpLFxcXFxuICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXFxcbn0pO1xcXFxuc2V0UmVzdWx0KGQpO1xcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIuWHveaVsFxcXCIsXFxcInBhdGhcXFwiOlxcXCJhcGlcXFwiLFxcXCJydWxlXFxcIjpcXFwiJC5leHBvcnRzLm9wX2Jhc2ljID0gZnVuY3Rpb24gKGkpIHtcXFxcclxcXFxuICAgIHNldEZpbGUgPSByZWFkRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nKTtcXFxcclxcXFxuICAgIGV2YWwoJ3ZhciBjb25maWdBcnJheT0nICsgc2V0RmlsZSk7XFxcXHJcXFxcbiAgICBpZiAoY29uZmlnQXJyYXlbaV0udGFncyA9PSB1bmRlZmluZWQpIHtcXFxcclxcXFxuICAgICAgICBjb25maWdBcnJheVtpXS50YWdzID0gJ+WFqOmDqCdcXFxcclxcXFxuICAgIH1cXFxcclxcXFxuICAgIGlmIChpbnB1dCA9PSAn57yW6L6RJykge1xcXFxyXFxcXG4gICAgICAgIGNvbmZpZyA9IGNvbmZpZ0FycmF5W2ldLm5hbWUgKyAnLCcgKyBjb25maWdBcnJheVtpXS51cmwgKyAnIyMjJyArIGNvbmZpZ0FycmF5W2ldLnRhZ3M7XFxcXHJcXFxcbiAgICAgICAgcmV0dXJuICQoY29uZmlnKS5pbnB1dCgoaSwgY29uZmlnQXJyYXkpID0+IHtcXFxcclxcXFxuICAgICAgICAgICAgaXRlbSA9IHtcXFxcclxcXFxuICAgICAgICAgICAgICAgIG5hbWU6IGlucHV0LnNwbGl0KC8sfO+8jC8pWzBdLFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgdXJsOiBpbnB1dC5zcGxpdCgvIyMjLylbMF0uc3BsaXQoLyx877yMLylbMV0sXFxcXHJcXFxcbiAgICAgICAgICAgICAgICB0YWdzOiBpbnB1dC5zcGxpdCgvIyMjLylbMV0sXFxcXHJcXFxcbiAgICAgICAgICAgICAgICBqczogY29uZmlnQXJyYXlbaV0uanNcXFxcclxcXFxuICAgICAgICAgICAgfVxcXFxyXFxcXG4gICAgICAgICAgICBjb25maWdBcnJheS5zcGxpY2UoaSwgMSwgaXRlbSk7XFxcXHJcXFxcbiAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicsIEpTT04uc3RyaW5naWZ5KGNvbmZpZ0FycmF5KSk7XFxcXHJcXFxcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXFxcclxcXFxuICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/mm7TmlrDmiJDlip9cXFxcXFxcIlxcXFxyXFxcXG4gICAgICAgIH0sIGksIGNvbmZpZ0FycmF5KVxcXFxyXFxcXG4gICAgfSBlbHNlIGlmIChpbnB1dCA9PSAn56e75L2NJykge1xcXFxyXFxcXG4gICAgICAgIHJldHVybiAkKCcwJywgJ+S9oOaDs+aOkuesrOWHoO+8n+W6j+WPt+S7jjDlvIDlp4t+JykuaW5wdXQoKGksIGNvbmZpZ0FycmF5KSA9PiB7XFxcXHJcXFxcbiAgICAgICAgICAgIGlmIChpbnB1dCA+IGNvbmZpZ0FycmF5Lmxlbmd0aCAtIDEpIHtcXFxcclxcXFxuICAgICAgICAgICAgICAgIGlucHV0ID0gY29uZmlnQXJyYXkubGVuZ3RoIC0gMTtcXFxcclxcXFxuICAgICAgICAgICAgfSBlbHNlIGlmIChpbnB1dCA8IDApIHtcXFxcclxcXFxuICAgICAgICAgICAgICAgIGlucHV0ID0gMDtcXFxcclxcXFxuICAgICAgICAgICAgfVxcXFxyXFxcXG4gICAgICAgICAgICB0ZW1wID0gY29uZmlnQXJyYXlbaV07XFxcXHJcXFxcbiAgICAgICAgICAgIGlmIChpID4gaW5wdXQpIHtcXFxcclxcXFxuICAgICAgICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gaTsgaW5kZXggPiBpbnB1dDsgaW5kZXgtLSkge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZ0FycmF5W2luZGV4XSA9IGNvbmZpZ0FycmF5W2luZGV4IC0gMV07XFxcXHJcXFxcbiAgICAgICAgICAgICAgICB9XFxcXHJcXFxcbiAgICAgICAgICAgIH0gZWxzZSB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IGk7IGluZGV4IDwgaW5wdXQ7IGluZGV4KyspIHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICBjb25maWdBcnJheVtpbmRleF0gPSBjb25maWdBcnJheVtpbmRleCArIDFdO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgfVxcXFxyXFxcXG4gICAgICAgICAgICB9XFxcXHJcXFxcbiAgICAgICAgICAgIGNvbmZpZ0FycmF5W2lucHV0XSA9IHRlbXA7XFxcXHJcXFxcbiAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicsIEpTT04uc3RyaW5naWZ5KGNvbmZpZ0FycmF5KSk7XFxcXHJcXFxcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXFxcclxcXFxuICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/np7vkvY3miJDlip9cXFxcXFxcIlxcXFxyXFxcXG4gICAgICAgIH0sIGksIGNvbmZpZ0FycmF5KVxcXFxyXFxcXG4gICAgfSBlbHNlIHtcXFxcclxcXFxuICAgICAgICBjb25maWdBcnJheS5zcGxpY2UoaSwgMSk7XFxcXHJcXFxcbiAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJywgSlNPTi5zdHJpbmdpZnkoY29uZmlnQXJyYXkpKTtcXFxcclxcXFxuICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxcXHJcXFxcbiAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/liKDpmaTmiJDlip9cXFxcXFxcIlxcXFxyXFxcXG4gICAgfVxcXFxyXFxcXG59XFxcXHJcXFxcblxcXFxyXFxcXG4kLmV4cG9ydHMuZG1TZXR0aW5ncyA9IGZ1bmN0aW9uICh0YWcpIHtcXFxcclxcXFxuICAgIHN3aXRjaCAodGFnKSB7XFxcXHJcXFxcbiAgICAgICAgLy8g5Ye95pWw5YiH5o2iXFxcXHJcXFxcbiAgICAgICAgY2FzZSAwOlxcXFxyXFxcXG4gICAgICAgICAgICBvcHRpb25zID0gWyflt6blsrjlrpjlvLknLCAnZmPlrpjlvLknLCAn5LiJ5pa55om26aOOJ107XFxcXHJcXFxcbiAgICAgICAgICAgIHJldHVybiAkKG9wdGlvbnMsIDEpLnNlbGVjdCgoKSA9PiB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICBjdXJTZXR0aW5ncyA9IEpTT04ucGFyc2UocmVhZEZpbGUoJ2hpa2VyOi8vZmlsZXMvZG3nm5LlrZAvc2V0dGluZ3MuanNvbicpKTtcXFxcclxcXFxuICAgICAgICAgICAgICAgIGN1clNldHRpbmdzLmRtRnJvbSA9IGlucHV0O1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvZG3nm5LlrZAvc2V0dGluZ3MuanNvbicsIEpTT04uc3RyaW5naWZ5KGN1clNldHRpbmdzKSk7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL+WIh+aNouadpea6kOS4ujpcXFxcXFxcIiArIGlucHV0O1xcXFxyXFxcXG4gICAgICAgICAgICB9KVxcXFxyXFxcXG4gICAgICAgICAgICBicmVhaztcXFxcclxcXFxuXFxcXHJcXFxcbiAgICAgICAgLy8g5pu05pS55Ye95pWw5L2c55So5Z+fXFxcXHJcXFxcbiAgICAgICAgY2FzZSAxOlxcXFxyXFxcXG4gICAgICAgICAgICBvcHRpb25zID0gWydnbG9iYWwnLCAnb3RoZXInXTtcXFxcclxcXFxuICAgICAgICAgICAgcmV0dXJuICQob3B0aW9ucywgMSkuc2VsZWN0KCgpID0+IHtcXFxcclxcXFxuICAgICAgICAgICAgICAgIGN1clNldHRpbmdzID0gSlNPTi5wYXJzZShyZWFkRmlsZSgnaGlrZXI6Ly9maWxlcy9kbeebkuWtkC9zZXR0aW5ncy5qc29uJykpO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgY3VyU2V0dGluZ3MuZG1TY29wZSA9IGlucHV0O1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvZG3nm5LlrZAvc2V0dGluZ3MuanNvbicsIEpTT04uc3RyaW5naWZ5KGN1clNldHRpbmdzKSk7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL+WIh+aNouS9nOeUqOWfn+S4ujpcXFxcXFxcIiArIGlucHV0O1xcXFxyXFxcXG4gICAgICAgICAgICB9KVxcXFxyXFxcXG4gICAgICAgICAgICBicmVhaztcXFxcclxcXFxuICAgICAgICBjYXNlIDI6XFxcXHJcXFxcbiAgICAgICAgICAgIGZvbnRTaXplID0gSlNPTi5wYXJzZShyZWFkRmlsZSgnaGlrZXI6Ly9maWxlcy9kbeebkuWtkC9zZXR0aW5ncy5qc29uJykpLmZvbnRTaXplO1xcXFxyXFxcXG4gICAgICAgICAgICByZXR1cm4gJChmb250U2l6ZSwgJ+ivt+i+k+WFpeS4gOS4quWQiOmAgueahOaVsOWtlycpLmlucHV0KCgpID0+IHtcXFxcclxcXFxuICAgICAgICAgICAgICAgIGN1clNldHRpbmdzID0gSlNPTi5wYXJzZShyZWFkRmlsZSgnaGlrZXI6Ly9maWxlcy9kbeebkuWtkC9zZXR0aW5ncy5qc29uJykpO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgY3VyU2V0dGluZ3MuZm9udFNpemUgPSBpbnB1dDtcXFxcclxcXFxuICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL2Rt55uS5a2QL3NldHRpbmdzLmpzb24nLCBKU09OLnN0cmluZ2lmeShjdXJTZXR0aW5ncykpO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/lvLnluZXlpKflsI/lt7Lkv67mlLnkuLpcXFxcXFxcIiArIGlucHV0O1xcXFxyXFxcXG4gICAgICAgICAgICB9KVxcXFxyXFxcXG4gICAgICAgICAgICBicmVhazsgICAgXFxcXHJcXFxcbiAgICAgICAgZGVmYXVsdDpcXFxcclxcXFxuICAgICAgICAgICAgYnJlYWs7XFxcXHJcXFxcbiAgICB9XFxcXHJcXFxcbn1cXFxcclxcXFxuXFxcIn1dXCJ9IiwidGl0bGUiOiLor7TmmI4ifQ==
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement