xiaomianao666

小程序:配置助手

Mar 2nd, 2024
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@配置助手@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi6YWN572u5Yqp5omLIiwiYXV0aG9yIjoiY3kmSm9lIiwidXJsIjoiaGlrZXI6Ly9lbXB0eSMjIiwidmVyc2lvbiI6MjUsImNvbF90eXBlIjoibW92aWVfMyIsImNsYXNzX25hbWUiOiIiLCJ0eXBlIjoidG9vbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vcGFnZS9ob21lJykpLnJ1bGUpOyIsInNlYXJjaF91cmwiOiIiLCJncm91cCI6IuW3peWFtyIsInNlYXJjaEZpbmQiOiIiLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6IiIsInNkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwic2RldGFpbF9maW5kX3J1bGUiOiIiLCJ1YSI6Im1vYmlsZSIsInByZVJ1bGUiOiIiLCJwYWdlcyI6Ilt7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Li76aG1XCIsXCJwYXRoXCI6XCJob21lXCIsXCJydWxlXCI6XCJ2YXIgZCA9IFtdO1xcbnRyeSB7XFxuICAgIGFkZExpc3RlbmVyKCdvbkNsb3NlJywgKCkgPT4ge1xcbiAgICAgICAgY2xlYXJWYXIoJ25hbWVBcnJheScpO1xcbiAgICAgICAgY2xlYXJWYXIoJ3VybEFycmF5Jyk7XFxuICAgICAgICBjbGVhclZhcignc3dpdGNoJyk7XFxuICAgIH0pXFxuICAgIGFkZExpc3RlbmVyKCdvblJlZnJlc2gnLCAoKSA9PiB7XFxuICAgICAgICBzZXRGaWxlID0gcmVhZEZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJyk7XFxuICAgICAgICBldmFsKCdjb25maWdBcnJheT0nICsgc2V0RmlsZSk7XFxuICAgICAgICBjbGVhclZhcignZGVsTnVtJyk7XFxuICAgICAgICBjbGVhclZhcignZGVsQXJyYXknKTtcXG4gICAgICAgIGNsZWFyVmFyKCdzaGFyZU51bScpO1xcbiAgICAgICAgY2xlYXJWYXIoJ3NoYXJlQXJyYXknKTtcXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlnQXJyYXkubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICBjbGVhclZhcignaXNDaG9vc2UnICsgaSk7XFxuICAgICAgICB9XFxuICAgIH0pXFxuICAgIGlmICghZmlsZUV4aXN0KCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicpKSB7XFxuICAgICAgICBjb25maWdBcnJheSA9IFtdO1xcbiAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJywgSlNPTi5zdHJpbmdpZnkoY29uZmlnQXJyYXkpKTtcXG4gICAgfVxcbiAgICBpZiAoIWZpbGVFeGlzdCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlX3NlbGVjdGlvbi5qc29uJykpIHtcXG4gICAgICAgIHRhZ3NBcnJheSA9IFsncXEnLCAnbWd0dicsICdiaWxpJywgJ3FpeWknLCAneW91a3UnXTtcXG4gICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2Vfc2VsZWN0aW9uLmpzb24nLCBKU09OLnN0cmluZ2lmeSh0YWdzQXJyYXkpKTtcXG4gICAgfVxcbiAgICBpZiAoIWZpbGVFeGlzdCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9kbVN3aXRjaC50eHQnKSkge1xcbiAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvZG1Td2l0Y2gudHh0JywgJ+W8gCcpO1xcbiAgICB9XFxuICAgIGlmICghZmlsZUV4aXN0KCdoaWtlcjovL2ZpbGVzL2Rt55uS5a2QL3NldHRpbmdzLmpzb24nKSkge1xcbiAgICAgICAgb3JnU2V0dGluZ3MgPSBKU09OLnN0cmluZ2lmeSh7XFxuICAgICAgICAgICAgZm9udFNpemU6IDI1LFxcbiAgICAgICAgICAgIGRtRnJvbTogJ3BhcidcXG4gICAgICAgIH0pO1xcbiAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvZG3nm5LlrZAvc2V0dGluZ3MuanNvbicsIG9yZ1NldHRpbmdzKTtcXG4gICAgfVxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfigJjigJjigJnigJk8YmlnPjxzcGFuIHN0eWxlPVxcXCJjb2xvcjojNkVCODk3XFxcIj7mt7sg5YqgIOinoyDmnpA8L3NwYW4+PC9iaWc+JyxcXG4gICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgaWYgKGdldFZhcignc3dpdGNoJywgJ+WFsycpID09ICflvIAnKSB7XFxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMzsgaSsrKSB7XFxuICAgICAgICAgICAgICAgICAgICBkZWxldGVJdGVtKCdhZGQnKVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIHB1dFZhcignc3dpdGNoJywgJ+WFsycpO1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIGFkZEFycmF5ID0gW3tcXG4gICAgICAgICAgICAgICAgICAgIGRlc2M6ICfop6PmnpDlkI3np7DvvIzkuIDooYzkuIDkuKonLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdpbnB1dCcsXFxuICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlVmlzaWJsZTogZmFsc2UsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHRhcmVhJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IC0xLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhpZ2hsaWdodDogdHJ1ZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogXFxcInB1dFZhcignbmFtZUFycmF5JyxpbnB1dClcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAnYWRkJ1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgICAgICBkZXNjOiAn6Kej5p6Q77yM5LiA6KGM5LiA5LiqJyxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnaW5wdXQnLFxcbiAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZVZpc2libGU6IGZhbHNlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0YXJlYScsXFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAtMSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHQ6IHRydWUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IFxcXCJwdXRWYXIoJ3VybEFycmF5JyxpbnB1dClcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAnYWRkJ1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+S/neWtmCcsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQoKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZUFycmF5ID0gZ2V0VmFyKCduYW1lQXJyYXknKS5zcGxpdCgvXFxcXHJcXFxcbnxcXFxcbnxcXFxcci8pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybEFycmF5ID0gZ2V0VmFyKCd1cmxBcnJheScpLnNwbGl0KC9cXFxcclxcXFxufFxcXFxufFxcXFxyLyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxlbmd0aCA9IG5hbWVBcnJheS5sZW5ndGggPiB1cmxBcnJheS5sZW5ndGggPyBuYW1lQXJyYXkubGVuZ3RoIDogdXJsQXJyYXkubGVuZ3RoO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldEZpbGUgPSByZWFkRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBldmFsKCdjb25maWdBcnJheT0nICsgc2V0RmlsZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhTGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgamlleGlOYW1lID0gaSA+IG5hbWVBcnJheS5sZW5ndGggLSAxID8gJ+acquWRveWQjScgOiAobmFtZUFycmF5W2ldID09ICcnID8gJ+acquWRveWQjScgOiBuYW1lQXJyYXlbaV0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaWV4aVVybCA9IGkgPiB1cmxBcnJheS5sZW5ndGggLSAxID8gJ+epuuino+aekCcgOiAodXJsQXJyYXlbaV0gPT0gJycgPyAn56m66Kej5p6QJyA6IHVybEFycmF5W2ldKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnQXJyYXkudW5zaGlmdCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBqaWV4aU5hbWUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGppZXhpVXJsLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnczogJ+WFqOmDqCdcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicsIEpTT04uc3RyaW5naWZ5KGNvbmZpZ0FycmF5KSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcHV0VmFyKCdzd2l0Y2gnLCAn5YWzJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+S/neWtmOaIkOWKn1xcXCJcXG4gICAgICAgICAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJyxcXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdhZGQnXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH1dXFxuICAgICAgICAgICAgICAgIGFkZEl0ZW1BZnRlcignYWRkRnVuY3Rpb24nLCBhZGRBcnJheSk7XFxuICAgICAgICAgICAgICAgIHB1dFZhcignc3dpdGNoJywgJ+W8gCcpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5bey5YiH5o2ic3dpdGNo5Li6OicgKyBnZXRWYXIoJ3N3aXRjaCcsICflvIAnKVxcbiAgICAgICAgfSksXFxuICAgICAgICBkZXNjOiAn566A5Y2V44CB54us56uL55qE6Kej5p6Q5bel5YW3IHwg5LiN5o+Q5L6b6Kej5p6QJyxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIGlkOiAnYWRkRnVuY3Rpb24nXFxuICAgICAgICB9XFxuICAgIH0sIHtcXG4gICAgICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXG4gICAgfSwge1xcbiAgICAgICAgdGl0bGU6ICfigJjigJjigJnigJk8Zm9udCBjb2xvcj1cXFwiIzZFQjg5N1xcXCI+6K+05piOPC9mb250PicsXFxuICAgICAgICB1cmw6ICQoKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgcmV0dXJuICQoJ2hpa2VyOi8vZW1wdHknKS5ydWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgbGV0IGQgPSBbXTtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5pWZ56iL5paH5qGjJyxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJ2h0dHBzOi8vd3d3Lnl1cXVlLmNvbS9jaGVueWluZy1rNzNzYy9saGN2cWQvYnNoNWUyJyxcXG4gICAgICAgICAgICAgICAgICAgIGRlc2M6IFxcXCJmbG9hdCYmMTAwJVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3g1X3dlYnZpZXdfc2luZ2xlJ1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgc2V0UmVzdWx0KGQpO1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfSksXFxuICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgIH0sIHtcXG4gICAgICAgIHRpdGxlOiBcXFwi5YiH5o2i5o+S5Lu2XFxcIixcXG4gICAgICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIHJldHVybiAkKFsn5pat5o+S5aSN5Y6fJywgJ+aOpeeuoeaWreaPkiddLCAyLCAn6K+36YCJ5oup5L2g6KaB5omn6KGM55qE5pON5L2cJykuc2VsZWN0KCgpID0+IHtcXG4gICAgICAgICAgICAgICAgaWYgKGlucHV0ID09ICfmlq3mj5LlpI3ljp8nKSB7XFxuICAgICAgICAgICAgICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvY2FjaGUvUGFyc2VfRG4uanNcXFwiLCBKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvUGFyc2VfRG4uanM/cnVsZT1NeUZpZWxk4bSw4oG/XFxcIikpLnJ1bGUpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+W9k+WJjeaYr+aWreaPkuaooeW8j1xcXCI7XFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvY2FjaGUvUGFyc2VfRG4uanNcXFwiLCBKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvZHVhbj9ydWxlPemFjee9ruWKqeaJi1xcXCIpKS5ydWxlKTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/lvZPliY3mmK/liqnmiYvlt7LmjqXnrqHop6PmnpDku7vliqFcXFwiO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH0pLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJzY3JvbGxfYnV0dG9uXFxcIlxcbiAgICB9LCB7XFxuICAgICAgICB0aXRsZTogXFxcIlRWYm945o6o6YCBOlxcXCIgKyAocmVxdWVzdCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9ib3hTd2l0Y2gudHh0JykgPT0gXFxcIuW8gFxcXCIgPyBcXFwi5byAXFxcIiA6IFxcXCLlhbNcXFwiKSxcXG4gICAgICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9ib3hTd2l0Y2gudHh0XFxcIiwgKHJlcXVlc3QoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvYm94U3dpdGNoLnR4dCcpID09IFxcXCLlvIBcXFwiID8gXFxcIuWFs1xcXCIgOiBcXFwi5byAXFxcIikpXFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKVxcbiAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/liIfmjaLmiJDlip9cXFwiXFxuICAgICAgICB9KSxcXG4gICAgICAgIGNvbF90eXBlOiBcXFwic2Nyb2xsX2J1dHRvblxcXCJcXG4gICAgfSwge1xcbiAgICAgICAgdGl0bGU6ICflr7zlhaXovoXliqknLFxcbiAgICAgICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5I25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgaHRtbCA9IHJlcXVlc3QoJ2h0dHBzOi8vbmV0Y3V0LmNuL3AvYTVkMWM4ZTFlY2VlMjhkMycpO1xcbiAgICAgICAgICAgIGRhdGEgPSBodG1sLm1hdGNoKC97Lipub3RlX2NvbnRlbnQuKnVwZGF0ZWRfYXQuKn0vKVswXTtcXG4gICAgICAgICAgICBjb250ZW50ID0gSlNPTi5wYXJzZShkYXRhKS5ub3RlX2NvbnRlbnQ7XFxuICAgICAgICAgICAgdXBEYXRhID0gSlNPTi5wYXJzZShkYXRhKS51cGRhdGVkX2F0O1xcbiAgICAgICAgICAgIHB1dFZhcignY29udGVudCcsIGNvbnRlbnQpO1xcbiAgICAgICAgICAgIGNvbmZpcm0oe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+aYr+WQpuWvvOWFpScsXFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICfohJrmnKzmm7TmlrDml6XmnJ9cXFxcbicgKyB1cERhdGEsXFxuICAgICAgICAgICAgICAgIGNvbmZpcm06ICgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBnZXRWYXIoJ2NvbnRlbnQnKTtcXG4gICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgY2FuY2VsOiAoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5bey5Y+W5raI5a+85YWlJztcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXG4gICAgICAgIH0pLFxcbiAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICB9LCB7XFxuICAgICAgICB0aXRsZTogJ+ino+aekOaooeadvycsXFxuICAgICAgICB1cmw6IGBjb3B5Oi8v5L+u5pS54piF6a2U5pat6YCa55So5qih5p2/4piFXFxuZnVuY3Rpb24gKHZpcFVybCkge1xcbiAgICAvLyDmraPluLjosIPnlKgt5by55bmV5byA5YWz5Zyo6YWN572u5Yqp5omL6YeM6Ieq6KGM6K6+572u5piv5ZCm5ZCv55SoXFxuICAgIHJldHVybiAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9tdWxQYXJzZT9ydWxlPemFjee9ruWKqeaJi1xcXCIpLm11bFBhcnNlKHZpcFVybCk7XFxuICAgIC8q5YWN5ZeF6aaW5Y+R5qih5byPXFxuICAgIOWmguaenOaDs+imgeWunueOsOexu+S8vOmtlOaWreeahOWXheaOouS8mOWFiO+8muWFjeWXheWKoHg144CBSnNvbuWkmue6v+i3r+eahOW9ouW8j++8jOWPguiAg+azqOmHiueahOekuuS+i+S7o+eggea3u+WKoOWFjeWXheS7o+egge+8iOWPquaYr+ekuuS+i+W5tuS4jeWPr+eUqO+8ie+8jOW5tuWcqOacgOe7iOi/lOWbnueahOaXtuWAmemhuuW6j+WkmuS8oOWFpeS4pOS4quWPguaVsO+8muS4gOS4quaYr+WFjeWXheW+l+WIsOeahOaSreaUvuWcsOWdgO+8jOS4gOS4quaYr+i/meS4quino+aekOaIlue6v+i3r+eahOWQjeWtl1xcbiAgICB2YXIgcGFyc2UgPSBcXFwiaHR0cHM6Ly9wbGF5ZXIuZHh5eS5jZi9XbmRleHhYLnBocD91cmw9XFxcIjtcXG4gICAgYmZ1cmwgPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9hcGk/cnVsZT1BUEnnm5LlrZBcXFwiKS5wYXJzZUxMUShwYXJzZSwgdmlwVXJsKTtcXG4gICAgcmV0dXJuICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL211bFBhcnNlP3J1bGU96YWN572u5Yqp5omLXFxcIikubXVsUGFyc2UodmlwVXJsLCBiZnVybCwgJ2xscScpICsgXFxcIjt7VXNlci1BZ2VudEAmJlJlZmVyZXJAfVxcXCI7XFxuICAgICovXFxufWAsXFxuICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgIH0sIHtcXG4gICAgICAgIHRpdGxlOiAn5rqQ56CB57yW6L6RJyxcXG4gICAgICAgIHVybDogXFxcImVkaXRGaWxlOi8vaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb25cXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICB9LCB7XFxuICAgICAgICB0aXRsZTogJ+WvvOWHuumFjee9ricsXFxuICAgICAgICB1cmw6ICdzaGFyZTovL2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJyxcXG4gICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgfSwge1xcbiAgICAgICAgdGl0bGU6ICfkupHmnb/liIbkuqsnLFxcbiAgICAgICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5I25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgc2V0RmlsZSA9IHJlYWRGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicpO1xcbiAgICAgICAgICAgIHNlY3JldENvbnRlbnQgPSBiYXNlNjRFbmNvZGUoYmFzZTY0RW5jb2RlKHNldEZpbGUpKTtcXG4gICAgICAgICAgICBjb3B5KFxcXCLliqnmiYvop6PmnpDlr7zlhaXlj6Pku6TCpcKlXFxcIiArIHNoYXJlUGFzdGUoc2VjcmV0Q29udGVudCkpO1xcbiAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxuICAgICAgICB9KSxcXG4gICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgfSwge1xcbiAgICAgICAgdGl0bGU6ICfkupHmnb/lr7zlhaUnLFxcbiAgICAgICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5I25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgcmV0dXJuICQoJycsICflop7ph4/lr7zlhaXvvIzor7fmlL7lv4MnKS5pbnB1dCgoKSA9PiB7XFxuICAgICAgICAgICAgICAgIGlmIChpbnB1dC5tYXRjaCgv5Yqp5omL6Kej5p6Q5a+85YWl5Y+j5LukwqXCpS8pKSB7XFxuICAgICAgICAgICAgICAgICAgICBsaW5rID0gaW5wdXQuc3BsaXQoJ8KlwqUnKVsxXTtcXG4gICAgICAgICAgICAgICAgICAgIHNlY3JldENvbnRlbnQgPSBwYXJzZVBhc3RlKGxpbmspO1xcbiAgICAgICAgICAgICAgICAgICAgZXZhbCgncmVtb3RlU2V0RmlsZT0nICsgYmFzZTY0RGVjb2RlKGJhc2U2NERlY29kZShzZWNyZXRDb250ZW50KSkpO1xcbiAgICAgICAgICAgICAgICAgICAgZXZhbCgnY29uZmlnQXJyYXk9JyArIHJlYWRGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicpKTtcXG4gICAgICAgICAgICAgICAgICAgIG5ld0FycmF5ID0gY29uZmlnQXJyYXkuY29uY2F0KHJlbW90ZVNldEZpbGUpO1xcbiAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJywgSlNPTi5zdHJpbmdpZnkobmV3QXJyYXkpKTtcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+WvvOWFpeaIkOWKn1xcXCJcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/lj6Pku6TplJnor69cXFwiXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfSksXFxuICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgIH0sIHtcXG4gICAgICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXG4gICAgfSwge1xcbiAgICAgICAgdGl0bGU6IGdldFZhcignbW9kZScsICfphY3nva4nKSA9PSAn6YWN572uJyA/ICfigJzigJzigJ3igJ08Zm9udCBjb2xvcj1yZWQ+6YWN572uPC9mb250PicgOiAn6YWN572uJyxcXG4gICAgICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIHB1dFZhcignbW9kZScsICfphY3nva4nKTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKTtcXG4gICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcbiAgICAgICAgfSksXFxuICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgIH0sIHtcXG4gICAgICAgIHRpdGxlOiBnZXRWYXIoJ21vZGUnLCAn6YWN572uJykgPT0gJ+aJuemHj+W3peWFtycgPyAn4oCc4oCc4oCd4oCdPGZvbnQgY29sb3I9cmVkPuaJuemHj+W3peWFtzwvZm9udD4nIDogJ+aJuemHj+W3peWFtycsXFxuICAgICAgICB1cmw6ICQoJ2hpa2VyOi8vZW1wdHkjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICByZXR1cm4gJChbJ+WIoOmZpCcsICfliIbkuqsnXSwgMiwgJ+ivt+mAieaLqeS9oOimgeaJp+ihjOeahOaTjeS9nCcpLnNlbGVjdCgoKSA9PiB7XFxuICAgICAgICAgICAgICAgIHB1dFZhcignbW9kZScsICfmibnph4/lt6XlhbcnKTtcXG4gICAgICAgICAgICAgICAgaWYgKGlucHV0ID09ICfliKDpmaQnKSB7XFxuICAgICAgICAgICAgICAgICAgICBwdXRWYXIoJ3R5cGUnLCAn5om56YeP5Yig6ZmkJyk7XFxuICAgICAgICAgICAgICAgICAgICBjbGVhclZhcignZGVsTnVtJyk7XFxuICAgICAgICAgICAgICAgICAgICBjbGVhclZhcignZGVsQXJyYXknKTtcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgIHB1dFZhcigndHlwZScsICfmibnph4/liIbkuqsnKTtcXG4gICAgICAgICAgICAgICAgICAgIGNsZWFyVmFyKCdzaGFyZU51bScpO1xcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJWYXIoJ3NoYXJlQXJyYXknKTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBzZXRGaWxlID0gcmVhZEZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJyk7XFxuICAgICAgICAgICAgICAgIGV2YWwoJ2NvbmZpZ0FycmF5PScgKyBzZXRGaWxlKTtcXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb25maWdBcnJheS5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJWYXIoJ2lzQ2hvb3NlJyArIGkpO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9KSxcXG4gICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgfSwge1xcbiAgICAgICAgdGl0bGU6IGdldFZhcignbW9kZScsICfphY3nva4nKSA9PSAn6Kej5p6Q5rWL6K+VJyA/ICfigJzigJzigJ3igJ08Zm9udCBjb2xvcj1yZWQ+6Kej5p6Q5rWL6K+VPC9mb250PicgOiAn6Kej5p6Q5rWL6K+VJyxcXG4gICAgICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIHB1dFZhcignbW9kZScsICfop6PmnpDmtYvor5UnKTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKTtcXG4gICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcbiAgICAgICAgfSksXFxuICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgIH0sIHtcXG4gICAgICAgIHRpdGxlOiByZXF1ZXN0KCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2RtU3dpdGNoLnR4dCcpID09ICd0cnVlJyA/ICflvLnluZU65byAJyA6ICflvLnluZU65YWzJyxcXG4gICAgICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIHZhciBkbVN3aXRjaCA9IHJlcXVlc3QoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvZG1Td2l0Y2gudHh0Jyk7XFxuICAgICAgICAgICAgaWYgKGRtU3dpdGNoID09ICd0cnVlJykge1xcbiAgICAgICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9kbVN3aXRjaC50eHQnLCAnZmFsc2UnKTtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9kbVN3aXRjaC50eHQnLCAndHJ1ZScpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKTtcXG4gICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcbiAgICAgICAgfSksXFxuICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBsb25nQ2xpY2s6IFt7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn5by55bmV5p2l5rqQJywganM6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL2FwaT9ydWxlPemFjee9ruWKqeaJiycpLmRtU2V0dGluZ3MoMCk7XFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+WHveaVsOS9nOeUqOWfnycsIGpzOiAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS9hcGk/cnVsZT3phY3nva7liqnmiYsnKS5kbVNldHRpbmdzKDEpO1xcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICflvLnluZXlpKflsI8nLCBqczogJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJC5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvYXBpP3J1bGU96YWN572u5Yqp5omLJykuZG1TZXR0aW5ncygyKTtcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICB9XVxcbiAgICAgICAgfVxcbiAgICB9KTtcXG5cXG4gICAgc2V0RmlsZSA9IHJlYWRGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicpO1xcbiAgICBldmFsKCdjb25maWdBcnJheT0nICsgc2V0RmlsZSk7XFxuICAgIGlmIChnZXRWYXIoJ21vZGUnLCAn6YWN572uJykgPT0gJ+mFjee9ricpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgY29sX3R5cGU6ICdsaW5lX2JsYW5rJ1xcbiAgICAgICAgfSwge1xcbiAgICAgICAgICAgIHRpdGxlOiAn5Y676YeN6Zmk55m9JyxcXG4gICAgICAgICAgICB1cmw6ICQoJ2hpa2VyOi8vZW1wdHkjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgc2V0RmlsZSA9IHJlYWRGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicpO1xcbiAgICAgICAgICAgICAgICBldmFsKCdjb25maWdBcnJheT0nICsgc2V0RmlsZSk7XFxuICAgICAgICAgICAgICAgIHB1dFZhcignbGFzdENsZWFuJywgY29uZmlnQXJyYXkpO1xcbiAgICAgICAgICAgICAgICBuZXdBcnJheSA9IFtdO1xcbiAgICAgICAgICAgICAgICBudW0gPSAwO1xcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmZpZ0FycmF5Lmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0VmFyKGNvbmZpZ0FycmF5W2ldLnVybCwgJzAnKSAhPSAnMScgJiYgY29uZmlnQXJyYXlbaV0udXJsICE9ICfnqbrop6PmnpAnICYmIGNvbmZpZ0FycmF5W2ldLnVybCAhPSB1bmRlZmluZWQpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdBcnJheS5wdXNoKGNvbmZpZ0FycmF5W2ldKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoY29uZmlnQXJyYXlbaV0udXJsLCAnMScpO1xcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBudW0rKztcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nLCBKU09OLnN0cmluZ2lmeShuZXdBcnJheSkpO1xcbiAgICAgICAgICAgICAgICBKU09OLnBhcnNlKGdldFZhcignbGFzdENsZWFuJywgJ1tdJykpLmZvckVhY2goaXRlbSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBjbGVhclZhcihpdGVtLnVybCk7XFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+acrOasoeWOu+mHjeaVsOmHj+S4ulxcXFx0XFxcXHRcXFxcdFxcXCIgKyBudW07XFxuICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICAgICAgfSwge1xcbiAgICAgICAgICAgIHRpdGxlOiAn5Y2g5L2N56ym5aSE55CGJyxcXG4gICAgICAgICAgICB1cmw6ICQoWyfmt7vliqAnLCAn5Y676ZmkJ10sIDIsICfor7fpgInmi6nkvaDopoHmiafooYznmoTmk43kvZwnKS5zZWxlY3QoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICBzZXRGaWxlID0gcmVhZEZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJyk7XFxuICAgICAgICAgICAgICAgIGV2YWwoJ2NvbmZpZ0FycmF5PScgKyBzZXRGaWxlKTtcXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb25maWdBcnJheS5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0ID09ICfmt7vliqAnKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZ0FycmF5W2ldLnVybC5tYXRjaCgvXFxcXD91cmw9LykpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnQXJyYXlbaV0udXJsID0gY29uZmlnQXJyYXlbaV0udXJsLnJlcGxhY2UoJz91cmw9JywgJz9wbGFjZWhvbGRlcj0mdXJsPScpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZ0FycmF5W2ldLnVybC5tYXRjaCgvXFxcXD9wbGFjZWhvbGRlcj0mdXJsPS8pKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ0FycmF5W2ldLnVybCA9IGNvbmZpZ0FycmF5W2ldLnVybC5yZXBsYWNlKCc/cGxhY2Vob2xkZXI9JnVybD0nLCAnP3VybD0nKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJywgSlNPTi5zdHJpbmdpZnkoY29uZmlnQXJyYXkpKTtcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/lpITnkIbmiJDlip9cXFwiO1xcbiAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgICAgIH0sIHtcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnXFxuICAgICAgICB9KTtcXG4gICAgICAgIHRhZ3NBcnJheSA9IEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlX3NlbGVjdGlvbi5qc29uJykpO1xcbiAgICAgICAgdGFnc0FycmF5LmZvckVhY2goaXRlbSA9PiB7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0sXFxuICAgICAgICAgICAgICAgIHVybDogJCgpLnJ1bGUoKGl0ZW0pID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGxldCBkID0gW107XFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn6L+U5Zue5Yi35paw77yM6K6w5b6X54K55oiR77yB77yB77yBJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrKHRydWUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5Yi35paw5oiQ5YqfflxcXCI7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnXFxuICAgICAgICAgICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfigJjigJjigJnigJk8YmlnPjxzcGFuIHN0eWxlPVxcXCJjb2xvcjojNkVCODk3XFxcIj7mt7sg5YqgIOinoyDmnpA8L3NwYW4+PC9iaWc+JyxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKGl0ZW0pID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdldFZhcignc3dpdGNoMicsICflhbMnKSA9PSAn5byAJykge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAzOyBpKyspIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGVJdGVtKCdhZGQyJylcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcignc3dpdGNoMicsICflhbMnKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZEFycmF5ID0gW3tcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiAn6Kej5p6Q5ZCN56ew77yM5LiA6KGM5LiA5LiqJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2lucHV0JyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZVZpc2libGU6IGZhbHNlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dGFyZWEnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IC0xLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHQ6IHRydWUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBcXFwicHV0VmFyKCduYW1lQXJyYXknLGlucHV0KVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAnYWRkMidcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogJ+ino+aekO+8jOS4gOihjOS4gOS4qicsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdpbnB1dCcsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVWaXNpYmxlOiBmYWxzZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHRhcmVhJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAtMSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlnaGxpZ2h0OiB0cnVlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogXFxcInB1dFZhcigndXJsQXJyYXknLGlucHV0KVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAnYWRkMidcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfkv53lrZgnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJCgpLmxhenlSdWxlKChpdGVtKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVBcnJheSA9IGdldFZhcignbmFtZUFycmF5Jykuc3BsaXQoL1xcXFxyXFxcXG58XFxcXG58XFxcXHIvKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsQXJyYXkgPSBnZXRWYXIoJ3VybEFycmF5Jykuc3BsaXQoL1xcXFxyXFxcXG58XFxcXG58XFxcXHIvKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxlbmd0aCA9IG5hbWVBcnJheS5sZW5ndGggPiB1cmxBcnJheS5sZW5ndGggPyBuYW1lQXJyYXkubGVuZ3RoIDogdXJsQXJyYXkubGVuZ3RoO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRGaWxlID0gcmVhZEZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2YWwoJ2NvbmZpZ0FycmF5PScgKyBzZXRGaWxlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhTGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppZXhpTmFtZSA9IGkgPiBuYW1lQXJyYXkubGVuZ3RoIC0gMSA/ICfmnKrlkb3lkI0nIDogKG5hbWVBcnJheVtpXSA9PSAnJyA/ICfmnKrlkb3lkI0nIDogbmFtZUFycmF5W2ldKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppZXhpVXJsID0gaSA+IHVybEFycmF5Lmxlbmd0aCAtIDEgPyAn56m66Kej5p6QJyA6ICh1cmxBcnJheVtpXSA9PSAnJyA/ICfnqbrop6PmnpAnIDogdXJsQXJyYXlbaV0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnQXJyYXkudW5zaGlmdCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogamlleGlOYW1lLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogamlleGlVcmwsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnczogaXRlbVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJywgSlNPTi5zdHJpbmdpZnkoY29uZmlnQXJyYXkpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0VmFyKCdzd2l0Y2gyJywgJ+WFsycpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+S/neWtmOaIkOWKn1xcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBpdGVtKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAnYWRkMidcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkSXRlbUFmdGVyKCdhZGRGdW5jdGlvbjInLCBhZGRBcnJheSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoJ3N3aXRjaDInLCAn5byAJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+W3suWIh+aNonN3aXRjaOS4ujonICsgZ2V0VmFyKCdzd2l0Y2gyJywgJ+W8gCcpXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgaXRlbSksXFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogJ+eugOWNleOAgeaXoOW/p+OAgeeLrOeri+eahOino+aekOeuoeeQhuW3peWFt++8jOWFu+iAgeS4k+eUqCcsXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogJ2FkZEZ1bmN0aW9uMidcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIHNldEZpbGUgPSByZWFkRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nKTtcXG4gICAgICAgICAgICAgICAgICAgIGV2YWwoJ3ZhciBjb25maWdBcnJheT0nICsgc2V0RmlsZSk7XFxuICAgICAgICAgICAgICAgICAgICBldmFsKCd2YXIgcmVnPS8nICsgaXRlbSArICd85YWo6YOoLzsnKTtcXG4gICAgICAgICAgICAgICAgICAgIC8vIOW9k+WJjee6v+i3r+eahOino+aekOaOkuW6j1xcbiAgICAgICAgICAgICAgICAgICAgaW5kZXggPSAwO1xcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb25maWdBcnJheS5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25maWdBcnJheVtpXS50YWdzID09IHVuZGVmaW5lZCB8fCBjb25maWdBcnJheVtpXS50YWdzLm1hdGNoKHJlZykpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPHNwYW4gc3R5bGU9XFxcImNvbG9yOnJlZFxcXCI+JyArIGluZGV4ICsgJzwvc3Bhbj4tPHNwYW4gc3R5bGU9XFxcImNvbG9yOiM2RUI4OTdcXFwiPicgKyBpICsgJzwvc3Bhbj4tJyArIGNvbmZpZ0FycmF5W2ldLm5hbWUgKyAnXFxcXHRcXFxcdFxcXFx04oCY4oCY4oCZ4oCZPHNwYW4gc3R5bGU9XFxcImNvbG9yOiM5OUNDRkZcXFwiPjxzbWFsbD4j5bqU55SoOicgKyBjb25maWdBcnJheVtpXS50YWdzICsgJzwvc21hbGw+PC9zcGFuPicgKyAoY29uZmlnQXJyYXlbaV0uanMgIT0gdW5kZWZpbmVkICYmIGNvbmZpZ0FycmF5W2ldLmpzICE9ICcnID8gJzwvc21hbGw+PC9zcGFuPicgKyAnXFxcXHRcXFxcdFxcXFx04oCY4oCY4oCZ4oCZPHNwYW4gc3R5bGU9XFxcImNvbG9yOnJlZFxcXCI+PHNtYWxsPiNKUzwvc21hbGw+PC9zcGFuPicgOiAnJyksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiBjb25maWdBcnJheVtpXS51cmwsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoWyfnvJbovpEnLCAn56e75L2NJywgJ+WIoOmZpCddLCAzLCAn6K+36YCJ5oup5L2g6KaB5omn6KGM55qE5pON5L2cJykuc2VsZWN0KChpKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2FwaT9ydWxlPemFjee9ruWKqeaJi1xcXCIpLm9wX2Jhc2ljKGkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaSksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMScsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmdDbGljazogW3tcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfms6jlhaVKUyzovoXliqnll4XmjqInLCBqczogJC50b1N0cmluZygoaSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL3BhZ2UvanNBZGRfUGFnZT9ydWxlPemFjee9ruWKqeaJiyZpbmRleD0nICsgaTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaSksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4Kys7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgc2V0UmVzdWx0KGQpO1xcbiAgICAgICAgICAgICAgICB9LCBpdGVtKSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn4p6VJyxcXG4gICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gJCgnJywgJ+ivt+i+k+WFpemcgOimgeino+aekOeahOagh+ivhu+8jOavlOWmguWfn+WQjScpLmlucHV0KCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHRhZ3NBcnJheSA9IEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlX3NlbGVjdGlvbi5qc29uJykpO1xcbiAgICAgICAgICAgICAgICAgICAgdGFnc0FycmF5LnB1c2goaW5wdXQpO1xcbiAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZV9zZWxlY3Rpb24uanNvbicsIEpTT04uc3RyaW5naWZ5KHRhZ3NBcnJheSkpO1xcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5re75Yqg57q/6Lev5oiQ5YqffidcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgICAgICB9LCB7XFxuICAgICAgICAgICAgdGl0bGU6ICfinpYnLFxcbiAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgIHRhZ3NBcnJheSA9IEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlX3NlbGVjdGlvbi5qc29uJykpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gJCh0YWdzQXJyYXksIDMsICfor7fpgInmi6nkvaDopoHliKDpmaTnmoTnur/ot68nKS5zZWxlY3QoKHRhZ3NBcnJheSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLmluZGV4T2YgPSBmdW5jdGlvbiAodmFsKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzW2ldID09IHZhbCkgcmV0dXJuIGk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTtcXG4gICAgICAgICAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgICAgICAgICBBcnJheS5wcm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24gKHZhbCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IHRoaXMuaW5kZXhPZih2YWwpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA+IC0xKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3BsaWNlKGluZGV4LCAxKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9O1xcbiAgICAgICAgICAgICAgICAgICAgdGFnc0FycmF5LnJlbW92ZShpbnB1dCk7XFxuICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlX3NlbGVjdGlvbi5qc29uJywgSlNPTi5zdHJpbmdpZnkodGFnc0FycmF5KSk7XFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/lt7Lnp7vpmaTnur/ot69+J1xcbiAgICAgICAgICAgICAgICB9LCB0YWdzQXJyYXkpXFxuICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmZpZ0FycmF5Lmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgaWYgKGNvbmZpZ0FycmF5W2ldLnRhZ3MgPT0gdW5kZWZpbmVkKSB7XFxuICAgICAgICAgICAgICAgIGNvbmZpZ0FycmF5W2ldLnRhZ3MgPSAn5YWo6YOoJ1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXCJjb2xvcjojNkVCODk3XFxcIj4nICsgaSArICc8L3NwYW4+LScgKyBjb25maWdBcnJheVtpXS5uYW1lICsgJ1xcXFx0XFxcXHRcXFxcdOKAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXCJjb2xvcjojOTlDQ0ZGXFxcIj48c21hbGw+I+W6lOeUqDonICsgY29uZmlnQXJyYXlbaV0udGFncyArIChjb25maWdBcnJheVtpXS5qcyAhPSB1bmRlZmluZWQgJiYgY29uZmlnQXJyYXlbaV0uanMgIT0gJycgPyAnPC9zbWFsbD48L3NwYW4+JyArICdcXFxcdFxcXFx0XFxcXHTigJjigJjigJnigJk8c3BhbiBzdHlsZT1cXFwiY29sb3I6cmVkXFxcIj48c21hbGw+I0pTPC9zbWFsbD48L3NwYW4+JyA6ICcnKSxcXG4gICAgICAgICAgICAgICAgZGVzYzogY29uZmlnQXJyYXlbaV0udXJsLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoWyfnvJbovpEnLCAn56e75L2NJywgJ+WIoOmZpCddLCAzLCAn6K+36YCJ5oup5L2g6KaB5omn6KGM55qE5pON5L2cJykuc2VsZWN0KChpKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvYXBpP3J1bGU96YWN572u5Yqp5omLXFxcIikub3BfYmFzaWMoaSk7XFxuICAgICAgICAgICAgICAgIH0sIGkpLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMScsXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICBsb25nQ2xpY2s6IFt7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfms6jlhaVKUyzovoXliqnll4XmjqInLCBqczogJC50b1N0cmluZygoaSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vcGFnZS9qc0FkZF9QYWdlP3J1bGU96YWN572u5Yqp5omLJmluZGV4PScgKyBpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGkpLFxcbiAgICAgICAgICAgICAgICAgICAgfV1cXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICB9IGVsc2UgaWYgKGdldFZhcignbW9kZScsICfphY3nva4nKSA9PSAn5om56YeP5bel5YW3Jykge1xcbiAgICAgICAgaWYgKGdldFZhcigndHlwZScsICfmibnph4/liKDpmaQnKSA9PSAn5om56YeP5Yig6ZmkJykge1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn56Gu6K6k5Yig6ZmkXFxcXHRcXFxcdFxcXFx04oCY4oCY4oCZ4oCZPHNwYW4gc3R5bGU9XFxcImNvbG9yOnJlZFxcXCI+JyArIGdldFZhcignZGVsTnVtJywgJzAnKSArICc8L3NwYW4+XFxcXHRcXFxcdFxcXFx05p2h6Kej5p6QJyxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5I25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0VmFyKCdkZWxOdW0nLCAnMCcpID09ICcwJykge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/or7flhYjpgInmi6nopoHliKDpmaTnmoTop6PmnpDvvIEnXFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbEFycmF5ID0gSlNPTi5wYXJzZShnZXRWYXIoJ2RlbEFycmF5JykpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhkZWxBcnJheSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0RmlsZSA9IHJlYWRGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2YWwoJ2NvbmZpZ0FycmF5PScgKyBzZXRGaWxlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdBcnJheSA9IFtdO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlnQXJyYXkubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFkZWxBcnJheS5pbmNsdWRlcyhpKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3QXJyYXkucHVzaChjb25maWdBcnJheVtpXSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJywgSlNPTi5zdHJpbmdpZnkobmV3QXJyYXkpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxOdW0gPSBnZXRWYXIoJ2RlbE51bScsICcwJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJWYXIoJ2RlbE51bScpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyVmFyKCdkZWxBcnJheScpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlnQXJyYXkubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJWYXIoJ2lzQ2hvb3NlJyArIGkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5YWx5Yig6ZmkXFxcIiArIGRlbE51bSArICfmnaHop6PmnpAnO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJyxcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgIGlkOiAnZGVsQnRuJ1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgaW5kZXggPSAwO1xcbiAgICAgICAgICAgIGNvbmZpZ0FycmF5LmZvckVhY2goaXRlbSA9PiB7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXCJjb2xvcjojNkVCODk3XFxcIj4nICsgaW5kZXggKyAnPC9zcGFuPi0nICsgaXRlbS5uYW1lICsgKGNvbmZpZ0FycmF5W2luZGV4XS5qcyAhPSB1bmRlZmluZWQgJiYgY29uZmlnQXJyYXlbaW5kZXhdLmpzICE9ICcnID8gJzwvc21hbGw+PC9zcGFuPicgKyAnXFxcXHRcXFxcdFxcXFx04oCY4oCY4oCZ4oCZPHNwYW4gc3R5bGU9XFxcImNvbG9yOnJlZFxcXCI+PHNtYWxsPiNKUzwvc21hbGw+PC9zcGFuPicgOiAnJyksXFxuICAgICAgICAgICAgICAgICAgICBkZXNjOiBpdGVtLnVybCxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNub0xvYWRpbmcjJykubGF6eVJ1bGUoKGluZGV4LCBpdGVtKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdldFZhcignaXNDaG9vc2UnICsgaW5kZXgsICdubycpID09ICd5ZXMnKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhpbmRleCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbEFycmF5ID0gSlNPTi5wYXJzZShnZXRWYXIoJ2RlbEFycmF5JywgJ1tdJykpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxOdW0gPSBOdW1iZXIoZ2V0VmFyKCdkZWxOdW0nLCAnMCcpKSAtIDE7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbEFycmF5LnBvcChpbmRleCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcignZGVsQXJyYXknLCBkZWxBcnJheSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcignZGVsTnVtJywgZGVsTnVtKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlSXRlbShpbmRleCArICcnLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXCJjb2xvcjojNkVCODk3XFxcIj4nICsgaW5kZXggKyAnPC9zcGFuPi0nICsgaXRlbS5uYW1lLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlSXRlbSgnZGVsQnRuJywge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfnoa7orqTliKDpmaRcXFxcdFxcXFx0XFxcXHTigJjigJjigJnigJk8c3BhbiBzdHlsZT1cXFwiY29sb3I6cmVkXFxcIj4nICsgZ2V0VmFyKCdkZWxOdW0nLCAnMCcpICsgJzwvc3Bhbj5cXFxcdFxcXFx0XFxcXHTmnaHop6PmnpAnXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoJ2lzQ2hvb3NlJyArIGluZGV4LCAnbm8nKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxBcnJheSA9IEpTT04ucGFyc2UoZ2V0VmFyKCdkZWxBcnJheScsICdbXScpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsTnVtID0gTnVtYmVyKGdldFZhcignZGVsTnVtJywgJzAnKSkgKyAxO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxBcnJheS5wdXNoKGluZGV4KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nKGRlbEFycmF5KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0VmFyKCdkZWxBcnJheScsIGRlbEFycmF5KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0VmFyKCdkZWxOdW0nLCBkZWxOdW0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKGluZGV4ICsgJycsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPHNwYW4gc3R5bGU9XFxcImNvbG9yOnJlZFxcXCI+JyArIGluZGV4ICsgJy0nICsgaXRlbS5uYW1lICsgJzwvc3Bhbj4nLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlSXRlbSgnZGVsQnRuJywge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfnoa7orqTliKDpmaRcXFxcdFxcXFx0XFxcXHTigJjigJjigJnigJk8c3BhbiBzdHlsZT1cXFwiY29sb3I6cmVkXFxcIj4nICsgZ2V0VmFyKCdkZWxOdW0nLCAnMCcpICsgJzwvc3Bhbj5cXFxcdFxcXFx0XFxcXHTmnaHop6PmnpAnXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoJ2lzQ2hvb3NlJyArIGluZGV4LCAneWVzJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfSwgaW5kZXgsIGl0ZW0pLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnLFxcbiAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogaW5kZXggKyAnJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICBsb25nQ2xpY2s6IFt7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5rOo5YWlSlMs6L6F5Yqp5ZeF5o6iJywganM6ICQudG9TdHJpbmcoKGluZGV4KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vcGFnZS9qc0FkZF9QYWdlP3J1bGU96YWN572u5Yqp5omLJmluZGV4PScgKyBpbmRleDtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaW5kZXgpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1dXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICBpbmRleCsrO1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+ehruiupOWIhuS6q1xcXFx0XFxcXHRcXFxcdOKAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXCJjb2xvcjpyZWRcXFwiPicgKyBnZXRWYXIoJ3NoYXJlTnVtJywgJzAnKSArICc8L3NwYW4+XFxcXHRcXFxcdFxcXFx05p2h6Kej5p6QJyxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5I25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0VmFyKCdzaGFyZU51bScsICcwJykgPT0gJzAnKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+ivt+WFiOmAieaLqeimgeWIhuS6q+eahOino+aekO+8gSdcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVBcnJheSA9IEpTT04ucGFyc2UoZ2V0VmFyKCdzaGFyZUFycmF5JykpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhzaGFyZUFycmF5KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBldmFsKCdjb25maWdBcnJheT0nICsgcmVhZEZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJykpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlRmlsZSA9IFtdO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlnQXJyYXkubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNoYXJlQXJyYXkuaW5jbHVkZXMoaSkpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlRmlsZS5wdXNoKGNvbmZpZ0FycmF5W2ldKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWNyZXRDb250ZW50ID0gYmFzZTY0RW5jb2RlKGJhc2U2NEVuY29kZShKU09OLnN0cmluZ2lmeShzaGFyZUZpbGUpKSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY29weShcXFwi5Yqp5omL6Kej5p6Q5a+85YWl5Y+j5LukwqXCpVxcXCIgKyBzaGFyZVBhc3RlKHNlY3JldENvbnRlbnQpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhclZhcignc2hhcmVOdW0nKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhclZhcignc2hhcmVBcnJheScpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlnQXJyYXkubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJWYXIoJ2lzQ2hvb3NlJyArIGkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5YiG5Lqr5oiQ5YqfXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJyxcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgIGlkOiAnc2hhcmVCdG4nXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBpbmRleCA9IDA7XFxuICAgICAgICAgICAgY29uZmlnQXJyYXkuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPHNwYW4gc3R5bGU9XFxcImNvbG9yOiM2RUI4OTdcXFwiPicgKyBpbmRleCArICc8L3NwYW4+LScgKyBpdGVtLm5hbWUgKyAoY29uZmlnQXJyYXlbaW5kZXhdLmpzICE9IHVuZGVmaW5lZCAmJiBjb25maWdBcnJheVtpbmRleF0uanMgIT0gJycgPyAnPC9zbWFsbD48L3NwYW4+JyArICdcXFxcdFxcXFx0XFxcXHTigJjigJjigJnigJk8c3BhbiBzdHlsZT1cXFwiY29sb3I6cmVkXFxcIj48c21hbGw+I0pTPC9zbWFsbD48L3NwYW4+JyA6ICcnKSxcXG4gICAgICAgICAgICAgICAgICAgIGRlc2M6IGl0ZW0udXJsLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5I25vTG9hZGluZyMnKS5sYXp5UnVsZSgoaW5kZXgsIGl0ZW0pID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0VmFyKCdpc0Nob29zZScgKyBpbmRleCwgJ25vJykgPT0gJ3llcycpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nKGluZGV4KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVBcnJheSA9IEpTT04ucGFyc2UoZ2V0VmFyKCdzaGFyZUFycmF5JywgJ1tdJykpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZU51bSA9IE51bWJlcihnZXRWYXIoJ3NoYXJlTnVtJywgJzAnKSkgLSAxO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZUFycmF5LnBvcChpbmRleCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcignc2hhcmVBcnJheScsIHNoYXJlQXJyYXkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoJ3NoYXJlTnVtJywgc2hhcmVOdW0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKGluZGV4ICsgJycsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPHNwYW4gc3R5bGU9XFxcImNvbG9yOiM2RUI4OTdcXFwiPicgKyBpbmRleCArICc8L3NwYW4+LScgKyBpdGVtLm5hbWUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKCdzaGFyZUJ0bicsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn56Gu6K6k5YiG5LqrXFxcXHRcXFxcdFxcXFx04oCY4oCY4oCZ4oCZPHNwYW4gc3R5bGU9XFxcImNvbG9yOnJlZFxcXCI+JyArIGdldFZhcignc2hhcmVOdW0nLCAnMCcpICsgJzwvc3Bhbj5cXFxcdFxcXFx0XFxcXHTmnaHop6PmnpAnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0VmFyKCdpc0Nob29zZScgKyBpbmRleCwgJ25vJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVBcnJheSA9IEpTT04ucGFyc2UoZ2V0VmFyKCdzaGFyZUFycmF5JywgJ1tdJykpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZU51bSA9IE51bWJlcihnZXRWYXIoJ3NoYXJlTnVtJywgJzAnKSkgKyAxO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZUFycmF5LnB1c2goaW5kZXgpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2coc2hhcmVBcnJheSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcignc2hhcmVBcnJheScsIHNoYXJlQXJyYXkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoJ3NoYXJlTnVtJywgc2hhcmVOdW0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKGluZGV4ICsgJycsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPHNwYW4gc3R5bGU9XFxcImNvbG9yOnJlZFxcXCI+JyArIGluZGV4ICsgJy0nICsgaXRlbS5uYW1lICsgJzwvc3Bhbj4nLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlSXRlbSgnc2hhcmVCdG4nLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+ehruiupOWIhuS6q1xcXFx0XFxcXHRcXFxcdOKAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXCJjb2xvcjpyZWRcXFwiPicgKyBnZXRWYXIoJ3NoYXJlTnVtJywgJzAnKSArICc8L3NwYW4+XFxcXHRcXFxcdFxcXFx05p2h6Kej5p6QJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcignaXNDaG9vc2UnICsgaW5kZXgsICd5ZXMnKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9LCBpbmRleCwgaXRlbSksXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMScsXFxuICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBpbmRleCArICcnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvbmdDbGljazogW3tcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfms6jlhaVKUyzovoXliqnll4XmjqInLCBqczogJC50b1N0cmluZygoaW5kZXgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9wYWdlL2pzQWRkX1BhZ2U/cnVsZT3phY3nva7liqnmiYsmaW5kZXg9JyArIGluZGV4O1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBpbmRleCksXFxuICAgICAgICAgICAgICAgICAgICAgICAgfV1cXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIGluZGV4Kys7XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgIH0gZWxzZSBpZiAoZ2V0VmFyKCdtb2RlJywgJ+mFjee9ricpID09ICfop6PmnpDmtYvor5UnKSB7XFxuICAgICAgICBzZXRGaWxlID0gcmVhZEZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJyk7XFxuICAgICAgICBldmFsKCdjb25maWdBcnJheT0nICsgc2V0RmlsZSk7XFxuICAgICAgICBpbmRleCA9IDA7XFxuICAgICAgICBjb25maWdBcnJheS5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICAgICAgICAgIGppZXhpID0gaXRlbS51cmw7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0ubmFtZSArIChjb25maWdBcnJheVtpbmRleF0uanMgIT0gdW5kZWZpbmVkICYmIGNvbmZpZ0FycmF5W2luZGV4XS5qcyAhPSAnJyA/ICc8L3NtYWxsPjwvc3Bhbj4nICsgJ1xcXFx0XFxcXHRcXFxcdOKAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXCJjb2xvcjpyZWRcXFwiPjxzbWFsbD4jSlM8L3NtYWxsPjwvc3Bhbj4nIDogJycpICsgJ1xcXFx0XFxcXHRcXFxcdOKAmOKAmOKAmeKAmTxmb250IGNvbG9yPVxcXCIjNkVCODk3XFxcIj48c21hbGw+4p6u5YmN5b6A5rWL6K+VPC9zbWFsbD48L2ZvbnQ+JyxcXG4gICAgICAgICAgICAgICAgZGVzYzogaXRlbS51cmwsXFxuICAgICAgICAgICAgICAgIHVybDogJCgpLnJ1bGUoKGppZXhpKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgZCA9IFtdO1xcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+e8lui+kea1i+ivlemTvuaOpScsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnZWRpdEZpbGU6Ly9oaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2Nlc2hpLmpzb24nLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICAgICAgICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5by55bmVOicgKyBnZXRWYXIoJ2RtU3dpdGNoJywgJ+WFsycpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0VmFyKCdkbVN3aXRjaCcsICflhbMnKSA9PSAn5YWzJykge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0VmFyKCdkbVN3aXRjaCcsICflvIAnKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcignZG1Td2l0Y2gnLCAn5YWzJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlSXRlbSgnZG1Td2l0Y2gnLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+W8ueW5lTonICsgZ2V0VmFyKCdkbVN3aXRjaCcsICflhbMnKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAnZG1Td2l0Y2gnXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoIWZpbGVFeGlzdCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9jZXNoaS5qc29uJykpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjZXNoaURhdGEgPSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICfohb7orq/op4bpopEnOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2FuZHJvaWQtYXJ0d29ya3MuMjVwcC5jb20vZnMwOC8yMDIxLzA5LzE1LzMvMTA2XzNhMGQyMTJlMTdjYjk1ZTIzMmZmZTE1NTQ2MDM4NWNiX2Nvbl8xMzB4MTMwLnBuZycsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdodHRwczovL3YucXEuY29tL3gvY292ZXIvbXpjMDAyMDBybXBhZjQwL24wMDM2bDR0bnRjLmh0bWwnXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICfkvJjphbcnOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2FuZHJvaWQtYXJ0d29ya3MuMjVwcC5jb20vZnMwOC8yMDIxLzA5LzE2LzkvMTEwXzhmZjA2ZTBjMjM3NzYwY2Q1N2QyNTA4ZmQ5OGM4NDE0X2Nvbl8xMzB4MTMwLnBuZycsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdodHRwczovL3YueW91a3UuY29tL3Zfc2hvdy9pZF9YTkRjME1ERTFOVGsxTWc9PS5odG1sJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAn54ix5aWH6Im6Jzoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9hbmRyb2lkLWFydHdvcmtzLjI1cHAuY29tL2ZzMDgvMjAyMS8wOS8wOS84LzExMF85MDFmMmVmMzdhZjJmZWEyNWU1ZDk2NDhmNTUxY2UzMV9jb25fMTMweDEzMC5wbmcnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaHR0cDovL3d3dy5pcWl5aS5jb20vdl8yZ2E4enRzODZ5cy5odG1sJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAn6IqS5p6cVFYnOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2FuZHJvaWQtYXJ0d29ya3MuMjVwcC5jb20vZnMwOC8yMDIxLzA5LzE1LzYvMTEwXzE4MzRkMjk2YWE1YjU2NjZhN2Q5NGIxZTM0NzlhZTY0X2Nvbl8xMzB4MTMwLnBuZycsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdodHRwOi8vd3d3Lm1ndHYuY29tL2IvMzQ5MjUzLzEwNDI0MzAwLmh0bWwnXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICflk5Tlk6nlk5Tlk6knOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2FuZHJvaWQtYXJ0d29ya3MuMjVwcC5jb20vZnMwOC8yMDIxLzA5LzI3LzQvMTEwXzhlMmUzZDg4YzQ1MDI1YjM4MGU2OTgxN2Q2ZmI1M2IxX2Nvbl8xMzB4MTMwLnBuZycsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdodHRwczovL20uYmlsaWJpbGkuY29tL2Jhbmd1bWkvcGxheS9lcDQyODk5MydcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ+aQnOeLkOinhumikSc6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vYW5kcm9pZC1hcnR3b3Jrcy4yNXBwLmNvbS9mczA4LzIwMjEvMDkvMTUvOS8xMTBfNTMyYTUxZjg0MzFlZmMzNzc4MDhjMWZmZmYyZGEzNmZfY29uXzEzMHgxMzAucG5nJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2h0dHBzOi8vbS50di5zb2h1LmNvbS92NzMyOTQ0MS5zaHRtbCcsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICfopb/nk5zop4bpopEnOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2FuZHJvaWQtYXJ0d29ya3MuMjVwcC5jb20vZnMwOC8yMDIxLzA5LzI3LzUvMTEwX2E4NjI2NTg4MmVkMThjNjE5MDU2NmU5ZWEyNWY5Njk4X2Nvbl8xMzB4MTMwLnBuZycsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdodHRwczovL3d3dy5peGlndWEuY29tLzY2OTkzNTY3OTI5MDU3OTQwNTUnXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICfkuZDop4YnOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2FuZHJvaWQtYXJ0d29ya3MuMjVwcC5jb20vZnMwOC8yMDIxLzA5LzE1LzgvMl8zNWI1ZDQzNzNmNGJjYmEyOGYzOTQ4NmU0ZjExNjRkOV9jb25fMTMweDEzMC5wbmcnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly9tLmxlLmNvbS92cGxheV83Njk1NDMzMy5odG1sP2Zyb209YWpheCcsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICcxOTA1Jzoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9hbmRyb2lkLWFydHdvcmtzLjI1cHAuY29tL2ZzMDgvMjAyMS8wOS8xOC80LzExMF81ZjI0YjEwNTJmZWQ0ZjdmYzczNTkzYThlZjI3Mjc2ZF9jb25fMTMweDEzMC5wbmcnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly92aXAuMTkwNS5jb20vbS9wbGF5LzE0Mjk3MjUuc2h0bWwnXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICfpo47ooYzop4bpopEnOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2FuZHJvaWQtYXJ0d29ya3MuMjVwcC5jb20vZnMwOC8yMDIxLzA5LzE2LzQvMTEwXzZmNmFmOWY5OWIyNjI5ZTUxZjBiMGEzM2NkZmYxZDllX2Nvbl8xMzB4MTMwLnBuZycsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdodHRwOi8vbS5mdW4udHYvbXBsYXkvP21pZD05NTcxOSdcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1BQVFbop4bpopEnOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2FuZHJvaWQtYXJ0d29ya3MuMjVwcC5jb20vZnMwOC8yMDIxLzA5LzI4LzUvMTEwX2E0NTViMjk1MTIyNzA0MGVlNjI5NTVlZGNmYjg5ZDcyX2Nvbl8xMzB4MTMwLnBuZycsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdodHRwczovL3YucHB0di5jb20vc2hvdy96Vm4zZEpYdDF4VjQ5bDQuaHRtbCdcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ+m+meiFvic6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9rZS80LnBuZycsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdMVC0xZWMzZjY3NTRmNjg1ODZlZDdmOTJjM2U5OTVjZmNhNidcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ+S6uuS6uui/tyc6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9rZS82LnBuZycsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdyZW5yZW5taS1hYjkyNGUxMWQyZDY5Mzk3J1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAn5LqU5q+SJzoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL2tlLzMwLnBuZycsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICd3dWR1eXVuLTE2NDk0MzEzMDcwMjEnXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICflpJrlpJonOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8va2UvNDkucG5nJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2h0dHBzOi8vbTN1OC5jYWNoZS5zdW95by5jYy9tM3U4LzIwMjIwMy84L2FhYWJkOTJkYTI2Nzc0YzY4ODUwYTAyMzE1M2M4MGYxYWU2ZmE5YmUubTN1OCdcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ+iejeWFtCc6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9rZS84MC5wbmcnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnUm9uZ1hpbmdWUi00MjE1NjQ1NTgxOTMyJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAn6Zuq5Lq6Jzoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL3EvMTMzLnBuZycsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICd4dWVyZW4tMTY0NjgyMzA3MidcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ+aXi+mjjuS6kSc6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9rZS81NC5wbmcnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAneGZ5LTUyOWU2NDU3OTUzZDU0NWYnXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICfnkZ7kuLDotYTmupAnOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8va2UvNzIucG5nJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2h0dHBzOi8vMS5ydWlmZW5nbGIuY29tL3BsYXkvMTY0NDkxNDU5NS5tM3U4J1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvY2VzaGkuanNvbicsIEpTT04uc3RyaW5naWZ5KGNlc2hpRGF0YSkpO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgY2VzaGlEYXRhID0gSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2Nlc2hpLmpzb24nKSk7XFxuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBwcm9wIGluIGNlc2hpRGF0YSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc6IGNlc2hpRGF0YVtwcm9wXS5waWMgKyAnQFJlZmVyZXI9JyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCcnKS5sYXp5UnVsZSgoY2VzaGlEYXRhLCBwcm9wLCBqaWV4aSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlwVXJsID0gY2VzaGlEYXRhW3Byb3BdLnVybDtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybHMgPSBbXFxcInZpZGVvOi8vXFxcIiArIGppZXhpICsgdmlwVXJsXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVzID0gWyfmtYvor5UnXVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdldFZhcignZG1Td2l0Y2gnLCAn5YWzJykgPT0gJ+W8gCcpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvbGF6eVRvSmlleGk/cnVsZT1kbeebkuWtkFxcXCIpLnZpZGVvWDUodmlwVXJsLCB1cmxzLCBuYW1lcywgW3sgXFxcIlVzZXItQWdlbnRcXFwiOiBQQ19VQSB9XSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidmlkZW86Ly9cXFwiICsgamlleGkgKyB2aXBVcmw7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGNlc2hpRGF0YSwgcHJvcCwgamlleGkpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2ljb25fNCdcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfmtYvor5UnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6ICfkvaDov5jlj6/ku6Xku7vmhI/ovpPlhaXkuIDkuKrop4bpopHlnLDlnYDmtYvor5XlvZPliY3op6PmnpB+JyxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQudG9TdHJpbmcoKGppZXhpKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpcFVybCA9IGdldFZhcignY2VzaGlMaW5rJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybHMgPSBbXFxcInZpZGVvOi8vXFxcIiArIGppZXhpICsgdmlwVXJsXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZXMgPSBbJ+a1i+ivlSddXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXRWYXIoJ2RtU3dpdGNoJywgJ+WFsycpID09ICflvIAnKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvbGF6eVRvSmlleGk/cnVsZT1kbeebkuWtkFxcXCIpLnZpZGVvWDUodmlwVXJsLCB1cmxzLCBuYW1lcywgW3sgXFxcIlVzZXItQWdlbnRcXFwiOiBQQ19VQSB9XSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInZpZGVvOi8vXFxcIiArIGppZXhpICsgdmlwVXJsO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgamlleGkpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnaW5wdXQnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0YXJlYScsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogLTEsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBcXFwicHV0VmFyKCdjZXNoaUxpbmsnLGlucHV0KVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5Yig6Zmk6K+l6Kej5p6QJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiAn6K+36K6k55yf6ICD6JmRficsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5I25vTG9hZGluZyMnKS5sYXp5UnVsZSgoamlleGkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLmluZGV4T2YgPSBmdW5jdGlvbiAodmFsKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpc1tpXS51cmwgPT0gdmFsKSByZXR1cm4gaTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uICh2YWwpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IHRoaXMuaW5kZXhPZih2YWwpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNwbGljZShpbmRleCwgMSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEZpbGUgPSByZWFkRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZhbCgnY29uZmlnQXJyYXk9JyArIHNldEZpbGUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdBcnJheS5yZW1vdmUoamlleGkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nLCBKU09OLnN0cmluZ2lmeShjb25maWdBcnJheSkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDlhbPpl63pobXpnaLlubbliLfmlrDliY3kuIDkuKrpobXpnaJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFjayh0cnVlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+WIoOmZpOaIkOWKn35cXFwiO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGppZXhpKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIHNldEhvbWVSZXN1bHQoZCk7XFxuICAgICAgICAgICAgICAgIH0sIGppZXhpKSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnLFxcbiAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgbG9uZ0NsaWNrOiBbe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5rOo5YWlSlMs6L6F5Yqp5ZeF5o6iJywganM6ICQudG9TdHJpbmcoKGluZGV4KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9wYWdlL2pzQWRkX1BhZ2U/cnVsZT3phY3nva7liqnmiYsmaW5kZXg9JyArIGluZGV4O1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGluZGV4KSxcXG4gICAgICAgICAgICAgICAgICAgIH1dXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBpbmRleCsrO1xcbiAgICAgICAgfSk7XFxuICAgIH1cXG4gICAgLy8g5q2j5bi45aSH5Lu94oCU4oCU6Iul5omn6KGM5Yiw5q2k6YO95peg5byC5bi45Ye6546w55qE6K+d77yBXFxuICAgIHNldEZpbGUgPSByZWFkRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nKTtcXG4gICAgZXZhbCgnY29uZmlnQXJyYXk9JyArIHNldEZpbGUpO1xcbiAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlX2JhY2suanNvbicsIEpTT04uc3RyaW5naWZ5KGNvbmZpZ0FycmF5KSk7XFxuICAgIGxvZygn5paH5Lu25peg5byC5bi477yM5aSH5Lu95oiQ5YqfficpO1xcbn0gY2F0Y2ggKGUpIHtcXG4gICAgbG9nKCfmlofku7blvILluLjvvIzor7fmgaLlpI1+Jyk7XFxuICAgIC8vIOW8guW4uOS4jeWkh+S7ve+8jOivt+aBouWkjVxcbiAgICBzaG93TG9hZGluZygn6YWN572u5paH5Lu25byC5bi477yB77yB77yBJyk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+aBouWkjeWkh+S7vScsXFxuICAgICAgICBkZXNjOiAn5aaC5p6c5Zug5Li65LiA5Lqb6ZSZ6K+v77yM5pWw5o2u5Y+R55Sf5LqG5o2f5Z2P5LqG5Y+v5Lul5bCd6K+V5oGi5aSNficsXFxuICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIGZpbGVQYXRoID0gJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZV9iYWNrLmpzb24nO1xcbiAgICAgICAgICAgIGlmIChmaWxlRXhpc3QoZmlsZVBhdGgpKSB7XFxuICAgICAgICAgICAgICAgIHNldEZpbGUgPSByZWFkRmlsZShmaWxlUGF0aCk7XFxuICAgICAgICAgICAgICAgIGV2YWwoJ2NvbmZpZ0FycmF5PScgKyBzZXRGaWxlKTtcXG4gICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJywgSlNPTi5zdHJpbmdpZnkoY29uZmlnQXJyYXkpKTtcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/mgaLlpI3miJDlip9cXFwiO1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIHNob3dMb2FkaW5nKCfmgI7kuYjlpIfku73kuZ/lnY/kuobllYrvvIznu5nkvaDph43nva7lkKfvvIEnKTtcXG4gICAgICAgICAgICAgICAgY29uZmlnQXJyYXkgPSBbXTtcXG4gICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJywgSlNPTi5zdHJpbmdpZnkoY29uZmlnQXJyYXkpKTtcXG4gICAgICAgICAgICAgICAgdGFnc0FycmF5ID0gWydxcScsICdtZ3R2JywgJ2JpbGknLCAncWl5aScsICd5b3VrdSddO1xcbiAgICAgICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlX3NlbGVjdGlvbi5qc29uJywgSlNPTi5zdHJpbmdpZnkodGFnc0FycmF5KSk7XFxuICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2RtU3dpdGNoLnR4dCcsICflvIAnKTtcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/ph43nva7miJDlip9cXFwiO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbiAgICB9KTtcXG4gICAgc2V0UmVzdWx0KGQpO1xcbn1cXG5zZXRSZXN1bHQoZCk7XFxuXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLosIPnlKjot6/nlLFcIixcInBhdGhcIjpcIm11bFBhcnNlXCIsXCJydWxlXCI6XCIvKlxcclxcbiB2aXBVcmw65a6Y572R5Zyw5Z2AO+i/lOWbnuWAvEpTT07moLzlvI/nmoTlpJrnur/ot6/op4bpopHlnLDlnYBcXHJcXG7osIPnlKjmjqXlj6PvvJokLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9tdWxQYXJzZT9ydWxlPemFjee9ruWKqeaJi1xcXCIpLm11bFBhcnNlKHZpcFVybCk7XFxyXFxuICovXFxyXFxuJC5leHBvcnRzLm11bFBhcnNlID0gZnVuY3Rpb24gKHZpcFVybCwgYmZMaW5rLCBqaWV4aU5hbWUsaGVhZGVycykge1xcclxcbiAgICBpZiAodmlwVXJsLmluZGV4T2YoJ2RvdWJhbicpICE9IC0xKSB7XFxyXFxuICAgICAgICB2aXBVcmwgPSB2aXBVcmwuc3BsaXQoJz9wdGFnPScpWzBdXFxyXFxuICAgIH1cXHJcXG4gICAgbG9nKCfop4bpopHljp/lnLDlnYDvvJonICsgdmlwVXJsKTtcXHJcXG4gICAgdmFyIGV4dHJhX2xlbmd0aCA9IDA7XFxyXFxuICAgIGlmIChiZkxpbmsgJiYgamlleGlOYW1lKSB7XFxyXFxuICAgICAgICB2YXIgdXJscyA9IGJmTGluaztcXHJcXG4gICAgICAgIHZhciBuYW1lcyA9IGppZXhpTmFtZTtcXHJcXG4gICAgICAgIGlmIChoZWFkZXJzKSB7XFxyXFxuICAgICAgICAgICAgdmFyIGhlYWRlcnM9aGVhZGVycztcXHJcXG4gICAgICAgIH1lbHNle1xcclxcbiAgICAgICAgICAgIHZhciBoZWFkZXJzPVtdO1xcclxcbiAgICAgICAgfVxcclxcbiAgICAgICAgZXh0cmFfbGVuZ3RoID0gYmZMaW5rLmxlbmd0aDtcXHJcXG4gICAgfSBlbHNlIHtcXHJcXG4gICAgICAgIHZhciB1cmxzID0gW107XFxyXFxuICAgICAgICB2YXIgbmFtZXMgPSBbXTtcXHJcXG4gICAgICAgIHZhciBoZWFkZXJzPVtdO1xcclxcbiAgICB9XFxyXFxuICAgIGxvZyhcXFwi5aSa57q/6Lev6Kej5p6Q5byA5aeLXFxcIilcXHJcXG4gICAgdmFyIGxpc3QgPSBKU09OLnBhcnNlKHJlYWRGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvblxcXCIpKTtcXHJcXG4gICAgdmFyIHRhZ3NBcnJheSA9IEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlX3NlbGVjdGlvbi5qc29uJykpO1xcclxcbiAgICB0YWdzQXJyYXkuZm9yRWFjaChpdGVtID0+IHtcXHJcXG4gICAgICAgIGV2YWwoJ3ZhciByZWcxPS8nICsgaXRlbSArICcvOycpO1xcclxcbiAgICAgICAgZXZhbCgndmFyIHJlZzI9LycgKyBpdGVtICsgJ3zlhajpg6gvOycpO1xcclxcbiAgICAgICAgaWYgKHZpcFVybC5tYXRjaChyZWcxKSkge1xcclxcbiAgICAgICAgICAgIGxvZygn5b2T5YmN57q/6LevOicgKyBpdGVtKVxcclxcbiAgICAgICAgICAgIGxpc3QuZm9yRWFjaChpdGVtID0+IHtcXHJcXG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0udGFncyA9PSB1bmRlZmluZWQgfHwgaXRlbS50YWdzLm1hdGNoKHJlZzIpKSB7XFxyXFxuICAgICAgICAgICAgICAgICAgICB1cmxzLnB1c2goXFxcInZpZGVvOi8vXFxcIiArIGl0ZW0udXJsICsgdmlwVXJsKTtcXHJcXG4gICAgICAgICAgICAgICAgICAgIG5hbWVzLnB1c2goaXRlbS5uYW1lKTtcXHJcXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnMucHVzaCh7fSk7XFxyXFxuICAgICAgICAgICAgICAgIH1cXHJcXG4gICAgICAgICAgICB9KTtcXHJcXG4gICAgICAgIH1cXHJcXG4gICAgfSk7XFxyXFxuICAgIGlmICh1cmxzLmxlbmd0aCA9PSAwIHx8IHVybHMubGVuZ3RoID09IGV4dHJhX2xlbmd0aCkge1xcclxcbiAgICAgICAgbG9nKCflvZPliY3nur/ot686b3RoZXInKVxcclxcbiAgICAgICAgbGlzdC5mb3JFYWNoKGl0ZW0gPT4ge1xcclxcbiAgICAgICAgICAgIHVybHMucHVzaChcXFwidmlkZW86Ly9cXFwiICsgaXRlbS51cmwgKyB2aXBVcmwpO1xcclxcbiAgICAgICAgICAgIG5hbWVzLnB1c2goaXRlbS5uYW1lKTtcXHJcXG4gICAgICAgIH0pO1xcclxcbiAgICB9XFxyXFxuICAgIGxvZyhg5b2T5YmN5ZCv55So6Kej5p6Q77yaJHt1cmxzLmxlbmd0aH3kuKpgKVxcclxcbiAgICB2YXIgZG1Td2l0Y2ggPSByZXF1ZXN0KCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2RtU3dpdGNoLnR4dCcpO1xcclxcbiAgICB2YXIgcyA9IHJlcXVlc3QoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvYm94U3dpdGNoLnR4dCcpXFxyXFxuICAgIGlmIChzID09IFxcXCLlvIBcXFwiKSB7XFxyXFxuICAgICAgICB2YXIgdSA9IFtdXFxyXFxuICAgICAgICBsaXN0LmZvckVhY2goaXRlbSA9PiB7XFxyXFxuICAgICAgICAgICAgdS5wdXNoKHtcXHJcXG4gICAgICAgICAgICAgICAgbmFtZTogaXRlbS5uYW1lLFxcclxcbiAgICAgICAgICAgICAgICB1cmw6IGl0ZW0udXJsICsgdmlwVXJsXFxyXFxuICAgICAgICAgICAgfSlcXHJcXG4gICAgICAgIH0pO1xcclxcbiAgICAgICAgcmVxdWlyZShcXFwiaHR0cHM6Ly9oaWtlcmZhbnMuY29tL0pvZS9UVmJveC5qc1xcXCIpXFxyXFxuICAgICAgICByZXR1cm4g5o6o6YCBdHZib3goe1xcclxcbiAgICAgICAgICAgIG5hbWU6IFxcXCLphY3nva7liqnmiYvmjqjpgIFcXFwiLFxcclxcbiAgICAgICAgICAgIHZvZDogW3tcXHJcXG4gICAgICAgICAgICAgICAgLy9uYW1lOiBcXFwi6buY6K6kXFxcIixcXHJcXG4gICAgICAgICAgICAgICAgdXJsczogdVxcclxcbiAgICAgICAgICAgIH1dXFxyXFxuICAgICAgICB9KVxcclxcbiAgICB9IGVsc2UgaWYgKGRtU3dpdGNoID09ICd0cnVlJykge1xcclxcbiAgICAgICAgcmV0dXJuICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2xhenlUb0ppZXhpP3J1bGU9ZG3nm5LlrZBcXFwiKS52aWRlb1g1KHZpcFVybCwgdXJscywgbmFtZXMsaGVhZGVycyk7XFxyXFxuICAgIH0gZWxzZSB7XFxyXFxuICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoe1xcclxcbiAgICAgICAgICAgIHVybHM6IHVybHMsXFxyXFxuICAgICAgICAgICAgbmFtZXM6IG5hbWVzLFxcclxcbiAgICAgICAgICAgIGhlYWRlcnM6aGVhZGVyc1xcclxcbiAgICAgICAgfSk7XFxyXFxuICAgIH1cXHJcXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLmlq3mj5Lmj5Lku7ZcIixcInBhdGhcIjpcImR1YW5cIixcInJ1bGVcIjpcImZ1bmN0aW9uIGF5dG1QYXJzZSh2aXBVcmwpIHtcXHJcXG4gICAgcmV0dXJuICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL211bFBhcnNlP3J1bGU96YWN572u5Yqp5omLXFxcIikubXVsUGFyc2UodmlwVXJsKTtcXHJcXG59XFxyXFxuXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCJKU+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+u5pS55Li6XFxcIiArIGlucHV0O1xcclxcbiAgICAgICAgICAgIH0pXFxyXFxuICAgICAgICAgICAgYnJlYWs7ICAgIFxcclxcbiAgICAgICAgZGVmYXVsdDpcXHJcXG4gICAgICAgICAgICBicmVhaztcXHJcXG4gICAgfVxcclxcbn1cXHJcXG5cIn1dIiwiaWNvbiI6Imh0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9tb3JlLzM0LnBuZyIsInByb3h5IjoiIn0=
Add Comment
Please, Sign In to add comment