Advertisement
xiaomianao666

邀您一起看:200TB 分享

Mar 28th, 2024
504
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:二级页面详情¥page_detail¥200TB 分享@@eyJkYXRhIjoie1wiYXNzb2NpYXRlZE1vZGVsc01hcEZvckpvaW5UYWJsZVwiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhGS1wiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhvdXRGS1wiOnt9LFwiZmllbGRzVG9TZXRUb0RlZmF1bHRcIjpbXSxcImdtdE1vZGlmaWVkXCI6MCxcImlkXCI6MCxcImxhc3RfY2hhcHRlcl9ydWxlXCI6XCJcIixcImxpc3RUb0NsZWFyQXNzb2NpYXRlZEZLXCI6W10sXCJsaXN0VG9DbGVhclNlbGZGS1wiOltdLFwicGFnZUxpc3RcIjpbe1wiY29sX3R5cGVcIjpcInRleHRfMVwiLFwibmFtZVwiOlwi5Li76aG1XCIsXCJwYXRoXCI6XCJob21lXCIsXCJydWxlXCI6XCJqczpcXG52YXIgZCA9IFtdO1xcbmlmICghZmlsZUV4aXN0KFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL0pvZS9hbGkuanNvblxcXCIpKSB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIueZu+mZhuS7peW8gOWQr1xcXCIsXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL3BhZ2UvbG9naW5cXFwiLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIlxcbiAgICB9KVxcbn0gZWxzZSB7XFxuICAgIGZ1bmN0aW9uIGZvcm1hdERhdGUodGltZSkge1xcbiAgICAgICAgdmFyIGRhdGUgPSBuZXcgRGF0ZSh0aW1lKTtcXG4gICAgICAgIHZhciBZWSA9IGRhdGUuZ2V0RnVsbFllYXIoKSArICctJztcXG4gICAgICAgIHZhciBNTSA9IChkYXRlLmdldE1vbnRoKCkgKyAxIDwgMTAgPyAnMCcgKyAoZGF0ZS5nZXRNb250aCgpICsgMSkgOiBkYXRlLmdldE1vbnRoKCkgKyAxKSArICctJztcXG4gICAgICAgIHZhciBERCA9IChkYXRlLmdldERhdGUoKSA8IDEwID8gJzAnICsgKGRhdGUuZ2V0RGF0ZSgpKSA6IGRhdGUuZ2V0RGF0ZSgpKTtcXG4gICAgICAgIHZhciBoaCA9IChkYXRlLmdldEhvdXJzKCkgPCAxMCA/ICcwJyArIGRhdGUuZ2V0SG91cnMoKSA6IGRhdGUuZ2V0SG91cnMoKSkgKyAnOic7XFxuICAgICAgICB2YXIgbW0gPSAoZGF0ZS5nZXRNaW51dGVzKCkgPCAxMCA/ICcwJyArIGRhdGUuZ2V0TWludXRlcygpIDogZGF0ZS5nZXRNaW51dGVzKCkpICsgJzonO1xcbiAgICAgICAgdmFyIHNzID0gKGRhdGUuZ2V0U2Vjb25kcygpIDwgMTAgPyAnMCcgKyBkYXRlLmdldFNlY29uZHMoKSA6IGRhdGUuZ2V0U2Vjb25kcygpKTtcXG4gICAgICAgIHJldHVybiBZWSArIE1NICsgREQgKyBcXFwiIFxcXCIgKyBoaCArIG1tICsgc3M7XFxuICAgIH1cXG5cXG4gICAgaWYgKE1ZX1BBR0UgPT0gMSkge1xcbiAgICAgICAgbGV0IGNvbmZpZyA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvSm9lL2FsaS5qc29uXFxcIikpXFxuICAgICAgICBpZihuZXcgRGF0ZSgpLmdldFRpbWUoKT49Y29uZmlnLnRpbWVfZXhwaXJlKXtcXG4gICAgICAgICAgICAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9hcGlcXFwiKS5yZWZyZXNoVG9rZW4oKTtcXG4gICAgICAgICAgICBsb2coJ+WIt+aWsHRva2VuJyk7XFxuICAgICAgICAgICAgY29uZmlnID0gSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9Kb2UvYWxpLmpzb25cXFwiKSlcXG4gICAgICAgIH1cXG4gICAgICAgIGQudW5zaGlmdCh7XFxuICAgICAgICAgICAgdGl0bGU6IGNvbmZpZy5uaWNrX25hbWUsXFxuICAgICAgICAgICAgaW1nOiBjb25maWcuYXZhdGFyLFxcbiAgICAgICAgICAgIHVybDogJChcXFwi56Gu6K6k6YCA5Ye655m76ZmG77yfXFxcIikuY29uZmlybSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgIGRlbGV0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvSm9lL2FsaS5qc29uXFxcIilcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKVxcbiAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiYXZhdGFyXFxcIlxcbiAgICAgICAgfSwge1xcbiAgICAgICAgICAgIGRlc2M6IFxcXCLmkJzntKLmiJHnmoTmlofku7bmiJbovpPlhaXliIbkuqvpk77mjqVcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiaW5wdXRcXFwiLFxcbiAgICAgICAgICAgIHVybDogXFxcIidoaWtlcjovL3BhZ2Uvc2VhcmNoP2t3PScraW5wdXQrJyZwPWZ5cGFnZSNub1JlZnJlc2gjJ1xcXCIsXFxuICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgdGl0bGVWaXNpYmxlOiBmYWxzZSxcXG4gICAgICAgICAgICAgICAgb25DaGFuZ2U6IFxcXCJwdXRNeVZhcigna3cnLGlucHV0KVxcXCJcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KVxcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogXFxcIuWIh+aNouagt+W8j1xcXCIsXFxuICAgICAgICAgICAgdXJsOiAkKFtcXFwibW92aWVfMV9sZWZ0X3BpY1xcXCIsIFxcXCJjYXJkX3BpY18zXFxcIiwgXFxcImF2YXRhclxcXCJdKS5zZWxlY3QoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICBzZXRJdGVtKFxcXCJzdHlsZVxcXCIsIGlucHV0KVxcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpXFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/lt7LliIfmjaJcXFwiXFxuICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0XzJcXFwiXFxuICAgICAgICB9LCB7XFxuICAgICAgICAgICAgdGl0bGU6IFxcXCLmjpLluo86XFxcIiArIChnZXRNeVZhcihcXFwib3JkZXJcXFwiLCBcXFwibmFtZVxcXCIpID09IFxcXCJuYW1lXFxcIiA/IFxcXCLlkI3np7BcXFwiIDogXFxcIuaXtumXtFxcXCIpLFxcbiAgICAgICAgICAgIHVybDogJChcXFwiI25vUmVjb3JkSGlzdG9yeSMjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgdmFyIG8gPSBnZXRNeVZhcihcXFwib3JkZXJcXFwiLCBcXFwibmFtZVxcXCIpXFxuICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXCJvcmRlclxcXCIsIChvID09IFxcXCJuYW1lXFxcIiA/IFxcXCJ1cGRhdGVkX2F0XFxcIiA6IFxcXCJuYW1lXFxcIikpXFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKClcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+WIh+aNouaIkOWKn1xcXCJcXG4gICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfMlxcXCJcXG4gICAgICAgIH0sIHtcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcImJsYW5rX2Jsb2NrXFxcIlxcbiAgICAgICAgfSlcXG4gICAgfVxcblxcbiAgICB2YXIgcGF0aCA9IE1ZX1BBUkFNUy5wYXRoIHx8IFxcXCJyb290XFxcIlxcbiAgICBcXG4gICAgXFxuICAgIHZhciBmaWxlcz0kLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9hcGlcXFwiKS5nZXRGaWxlcyhwYXRoKVxcbiAgICBcXG4gICAgaWYgKGZpbGVzLml0ZW1zIT11bmRlZmluZWQpIHtcXG4gICAgICAgIHB1dE15VmFyKHBhdGggKyBcXFwibWFya2VyXFxcIiwgZmlsZXMubmV4dF9tYXJrZXIpXFxuICAgICAgICB2YXIgbGlzdCA9IGZpbGVzLml0ZW1zXFxuICAgICAgICBsaXN0LmZvckVhY2goKGl0ZW0sIGkpID0+IHtcXG4gICAgICAgICAgICBsZXQgZmlsZU5hbWUgPSBpdGVtLm5hbWVcXG4gICAgICAgICAgICBsZXQgbGVuID0gNDA7XFxuICAgICAgICAgICAgbGV0IGxlbjIgPSBsZW4gLyAyO1xcbiAgICAgICAgICAgIGlmIChmaWxlTmFtZS5sZW5ndGggPj0gbGVuKSB7XFxuICAgICAgICAgICAgICAgIGZpbGVOYW1lID0gZmlsZU5hbWUuc3Vic3RyKDAsIGxlbjIpICsgJy4uLicgKyBmaWxlTmFtZS5zdWJzdHIoZmlsZU5hbWUubGVuZ3RoIC0gbGVuMik7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBmaWxlTmFtZSxcXG4gICAgICAgICAgICAgICAgaW1nOiAoaXRlbS50aHVtYm5haWwgPyBpdGVtLnRodW1ibmFpbCA6IChpdGVtLnR5cGUgPT0gXFxcImZvbGRlclxcXCIgPyBcXFwiaHR0cHM6Ly9naXRjb2RlLm5ldC9xcV8zMjM5NDM1MS9kci8tL3Jhdy9tYXN0ZXIvaW1nL+aWh+S7tuexu+WeizIv5paH5Lu25aS5LnN2Z1xcXCIgOiAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9hcGlcXFwiKS5nZXRJY29uKGl0ZW0ubmFtZSkpKSxcXG4gICAgICAgICAgICAgICAgdXJsOiAoaXRlbS50eXBlID09IFxcXCJmb2xkZXJcXFwiID8gXFxcImhpa2VyOi8vcGFnZS9ob21lP3BhZ2U9ZnlwYWdlXFxcIiA6ICQoKS5sYXp5UnVsZSgoaWQsIG5hbWUsIHVybCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXCIpLmNodWxpKGlkLCBuYW1lLCB1cmwpXFxuICAgICAgICAgICAgICAgIH0sIGl0ZW0uZmlsZV9pZCwgaXRlbS5uYW1lLCBpdGVtLnVybCkpLFxcbiAgICAgICAgICAgICAgICBkZXNjOiBmb3JtYXREYXRlKERhdGUucGFyc2UoaXRlbS51cGRhdGVkX2F0KSksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBnZXRJdGVtKFxcXCJzdHlsZVxcXCIsIFxcXCJtb3ZpZV8zXFxcIiksXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICBwYXRoOiBpdGVtLmZpbGVfaWRcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9KVxcbiAgICB9ZWxzZXtcXG4gICAgICAgIGlmKGZpbGVzPT1mYWxzZSl7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOifigJzigJzigJ3igJ08c21hbGw+PGZvbnQgY29sb3I9XFxcImdyZXlcXFwiPuWIq+WIkuS6huWIsOW6leS6hjwvZm9udD48L3NtYWxsPicsXFxuICAgICAgICAgICAgY29sX3R5cGU6J3RleHRfY2VudGVyXzEnLFxcbiAgICAgICAgICAgIHVybDonaGlrZXI6Ly9lbXB0eScsICAgICAgICAgICAgXFxuICAgICAgICAgIH0pXFxuICAgICAgICB9ZWxzZXtcXG4gICAgICAgICAgICAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9hcGlcXFwiKS5yZWZyZXNoVG9rZW4oKTtcXG4gICAgICAgICAgICBsb2coJ+WIt+aWsHRva2VuJyk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOifigJzigJzigJ3igJ08c21hbGw+PGZvbnQgY29sb3I9XFxcImdyZXlcXFwiPuiOt+WPluWksei0peivt+mHjeivlTwvZm9udD48L3NtYWxsPicsXFxuICAgICAgICAgICAgY29sX3R5cGU6J3RleHRfY2VudGVyXzEnLFxcbiAgICAgICAgICAgIHVybDonaGlrZXI6Ly9lbXB0eScsICAgICAgICAgICAgXFxuICAgICAgICAgIH0pXFxuICAgICAgICB9XFxuICAgIH1cXG59XFxuc2V0UmVzdWx0KGQpO1xcblwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi55m76ZmGXCIsXCJwYXRoXCI6XCJsb2dpblwiLFwicnVsZVwiOlwianM6XFxudmFyIGQgPSBbXTtcXG5sZXQgdXJsID0gJ2h0dHBzOi8vYXV0aC5hbGl5dW5kcml2ZS5jb20vdjIvb2F1dGgvYXV0aG9yaXplP2xvZ2luX3R5cGU9Y3VzdG9tJnJlc3BvbnNlX3R5cGU9Y29kZSZyZWRpcmVjdF91cmk9aHR0cHMlM0ElMkYlMkZ3d3cuYWxpeXVuZHJpdmUuY29tJTJGc2lnbiUyRmNhbGxiYWNrJmNsaWVudF9pZD0yNWR6WDN2Yllxa3RWeHlYJnN0YXRlPSU3QiUyMm9yaWdpbiUyMiUzQSUyMiolMjIlN0QjL2xvZ2luJ1xcbnZhciBqcyA9ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICBjb25zdCB0b2tlbkZ1bmN0aW9uID0gZnVuY3Rpb24oKSB7XFxuICAgICAgICB2YXIgdG9rZW4gPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0b2tlbicpKVxcbiAgICAgICAgaWYgKHRva2VuICYmIHRva2VuLnVzZXJfaWQpIHtcXG4gICAgICAgICAgICBsZXQgdG9rZW5fdXJsID0gJ2hpa2VyOi8vZmlsZXMvcnVsZXMvSm9lL2FsaS5qc29uJztcXG4gICAgICAgICAgICBmeV9icmlkZ2VfYXBwLndyaXRlRmlsZSh0b2tlbl91cmwsIEpTT04uc3RyaW5naWZ5KHRva2VuKSlcXG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2UuY2xlYXIoKTtcXG4gICAgICAgICAgICBhbGVydCgnVE9LRU7ojrflj5bmiJDlip/vvIzor7fli7/ms4TmvI/kuKrkurrpmpDnp4Eh6YCA5Ye66K+l6aG16Z2i5ZCO5Yi35paw6YeN6K+V77yBJyk7XFxuICAgICAgICAgICAgZnlfYnJpZGdlX2FwcC5iYWNrKCk7XFxuICAgICAgICAgICAgcmV0dXJuO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICB0b2tlbl90aW1lcigpO1xcbiAgICAgICAgfVxcbiAgICB9XFxuICAgIHZhciB0b2tlbl90aW1lciA9IGZ1bmN0aW9uKCkge1xcbiAgICAgICAgc2V0VGltZW91dCh0b2tlbkZ1bmN0aW9uLCAzMDApXFxuICAgIH07XFxuICAgIHRva2VuX3RpbWVyKCk7XFxuICAgIHRva2VuRnVuY3Rpb24oKTtcXG59KVxcbmQucHVzaCh7XFxuICAgIHVybDogdXJsLFxcbiAgICBjb2xfdHlwZTogJ3g1X3dlYnZpZXdfc2luZ2xlJyxcXG4gICAgZGVzYzogJzEwMCUmJmZsb2F0JyxcXG4gICAgZXh0cmE6IHtcXG4gICAgICAgIGNhbkJhY2s6IHRydWUsXFxuICAgICAgICBqczoganNcXG4gICAgfVxcbn0pXFxuc2V0UmVzdWx0KGQpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwiYXBpXCIsXCJwYXRoXCI6XCJhcGlcIixcInJ1bGVcIjpcInZhciByZWZyZXNoVG9rZW4gPSBmdW5jdGlvbigpIHtcXG4gICAgdmFyIHVybCA9IFxcXCJodHRwczovL2F1dGguYWxpeXVuZHJpdmUuY29tL3YyL2FjY291bnQvdG9rZW5cXFwiXFxuICAgIHZhciBjb25maWcgPSBKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL0pvZS9hbGkuanNvblxcXCIpKVxcbiAgICB2YXIgcmVzID0gSlNPTi5wYXJzZShwb3N0KHVybCwge1xcbiAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xcbiAgICAgICAgICAgIFxcXCJyZWZyZXNoX3Rva2VuXFxcIjogY29uZmlnLnJlZnJlc2hfdG9rZW4sXFxuICAgICAgICAgICAgXFxcImdyYW50X3R5cGVcXFwiOiBcXFwicmVmcmVzaF90b2tlblxcXCJcXG4gICAgICAgIH0pXFxuICAgIH0pKVxcbiAgICBjb25maWdbXFxcInJlZnJlc2hfdG9rZW5cXFwiXSA9IHJlcy5yZWZyZXNoX3Rva2VuXFxuICAgIGNvbmZpZ1tcXFwiYWNjZXNzX3Rva2VuXFxcIl0gPSByZXMuYWNjZXNzX3Rva2VuXFxuICAgIGNvbmZpZ1tcXFwiZXhwaXJlX3RpbWVcXFwiXSA9IHJlcy5leHBpcmVfdGltZVxcbiAgICBjb25maWdbXFxcInRpbWVfZXhwaXJlXFxcIl0gPSBuZXcgRGF0ZSgpLmdldFRpbWUoKSArIDcyMDAgKiAxMDAwXFxuICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9Kb2UvYWxpLmpzb25cXFwiLCBKU09OLnN0cmluZ2lmeShjb25maWcpKVxcbn1cXG52YXIgZ2V0RmlsZXMgPSBmdW5jdGlvbihpZCwgZGlkKSB7XFxuICAgIHZhciB1cmwgPSBcXFwiaHR0cHM6Ly9hcGkuYWxpeXVuZHJpdmUuY29tL2Fkcml2ZS92My9maWxlL2xpc3RcXFwiXFxuICAgIHZhciBjb25maWcgPSBKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL0pvZS9hbGkuanNvblxcXCIpKVxcbiAgICB2YXIgZGVmID0gZGlkID8gZGlkIDogY29uZmlnLmRlZmF1bHRfZHJpdmVfaWRcXG4gICAgLy9sb2coaWQpXFxuICAgIHZhciBkYXRhID0ge1xcbiAgICAgICAgXFxcImRyaXZlX2lkXFxcIjogZGVmLFxcbiAgICAgICAgXFxcInBhcmVudF9maWxlX2lkXFxcIjogaWQsXFxuICAgICAgICBcXFwidG9rZW5fdHlwZVxcXCI6ICdCZWFyZXInLFxcbiAgICAgICAgXFxcImxpbWl0XFxcIjogMTAwLFxcbiAgICAgICAgXFxcImFsbFxcXCI6IHRydWUsXFxuICAgICAgICBcXFwidXJsX2V4cGlyZV9zZWNcXFwiOiAxNjAwLFxcbiAgICAgICAgXFxcImltYWdlX3RodW1ibmFpbF9wcm9jZXNzXFxcIjogXFxcImltYWdlL3Jlc2l6ZSx3XzQwMC9mb3JtYXQsanBlZ1xcXCIsXFxuICAgICAgICBcXFwiaW1hZ2VfdXJsX3Byb2Nlc3NcXFwiOiBcXFwiaW1hZ2UvcmVzaXplLHdfMTkyMC9mb3JtYXQsanBlZ1xcXCIsXFxuICAgICAgICBcXFwidmlkZW9fdGh1bWJuYWlsX3Byb2Nlc3NcXFwiOiBcXFwidmlkZW8vc25hcHNob3QsdF8xMDAwLGZfanBnLGFyX2F1dG8sd18zMDBcXFwiLFxcbiAgICAgICAgXFxcImZpZWxkc1xcXCI6IFxcXCIqXFxcIixcXG4gICAgICAgIFxcXCJvcmRlcl9ieVxcXCI6IGdldE15VmFyKFxcXCJvcmRlclxcXCIsIFxcXCJuYW1lXFxcIiksXFxuICAgICAgICBcXFwib3JkZXJfZGlyZWN0aW9uXFxcIjogXFxcIkFTQ1xcXCJcXG4gICAgfVxcbiAgICAvL2xvZyhnZXRNeVZhcihpZCArIFxcXCJtYXJrZXJcXFwiKSlcXG4gICAgaWYgKE1ZX1BBR0UgIT0gMSAmJiBnZXRNeVZhcihpZCArIFxcXCJtYXJrZXJcXFwiLCBcXFwiXFxcIikgPT0gXFxcIlxcXCIpIHtcXG5cXG4gICAgICAgIHJldHVybiBmYWxzZVxcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgZGF0YS5tYXJrZXIgPSBnZXRNeVZhcihpZCArIFxcXCJtYXJrZXJcXFwiKSAhPSAndW5kZWZpbmVkJyA/IGdldE15VmFyKGlkICsgXFxcIm1hcmtlclxcXCIpIDogJydcXG4gICAgICAgIGNsZWFyTXlWYXIoaWQgKyBcXFwibWFya2VyXFxcIilcXG4gICAgICAgIGxldCByZXMgPSBwb3N0KHVybCwge1xcbiAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KGRhdGEpLFxcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgXFxcImF1dGhvcml6YXRpb25cXFwiOiBjb25maWcuYWNjZXNzX3Rva2VuXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSlcXG4gICAgICAgIHJldHVybiBKU09OLnBhcnNlKHJlcylcXG4gICAgfVxcbn1cXG52YXIgY2h1bGkgPSBmdW5jdGlvbihpZCwgbmFtZSwgdXJsLCBkaWQpIHtcXG4gICAgdmFyIGNvbmZpZyA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvSm9lL2FsaS5qc29uXFxcIikpXFxuICAgIHZhciBkaWQgPSBkaWQgPyBkaWQgOiBjb25maWcuZGVmYXVsdF9kcml2ZV9pZFxcbiAgICBsZXQge1xcbiAgICAgICAgZ2V0SHptLFxcbiAgICAgICAgcHVzaFxcbiAgICB9ID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcIilcXG4gICAgdmFyIEh6bSA9IGdldEh6bShuYW1lKVxcbiAgICBpZiAoJC5tb3ZpZS5pbmNsdWRlcyhIem0pKSB7XFxuICAgICAgICBsZXQgcHVybCA9IFxcXCJodHRwczovL2FwaS5hbGl5dW5kcml2ZS5jb20vYWRyaXZlL3YyL2ZpbGUvZ2V0X3ZpZGVvX3ByZXZpZXdfcGxheV9pbmZvXFxcIlxcbiAgICAgICAgdmFyIHVybHMgPSBbXVxcbiAgICAgICAgdmFyIG5hbWVzID0gW1xcXCLljp/nlLtcXFwiXVxcbiAgICAgICAgdXJscy5wdXNoKHVybCArIFxcXCIjaXNWaWRlbz10cnVlI1xcXCIpXFxuICAgICAgICBsZXQgcHUgPSBwb3N0KHB1cmwsIHtcXG4gICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgIFxcXCJhdXRob3JpemF0aW9uXFxcIjogY29uZmlnLmFjY2Vzc190b2tlblxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xcbiAgICAgICAgICAgICAgICBcXFwiZHJpdmVfaWRcXFwiOiBkaWQsXFxuICAgICAgICAgICAgICAgIFxcXCJjYXRlZ29yeVxcXCI6IFxcXCJsaXZlX3RyYW5zY29kaW5nXFxcIixcXG4gICAgICAgICAgICAgICAgXFxcImZpbGVfaWRcXFwiOiBpZCxcXG4gICAgICAgICAgICAgICAgXFxcInRlbXBsYXRlX2lkXFxcIjogXFxcIlxcXCJcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfSlcXG4gICAgICAgIGNvbnN0IHRyYW5zY29kaW5nID0ge1xcbiAgICAgICAgICAgIFVIRDogXFxcIjRLIOi2hea4hVxcXCIsXFxuICAgICAgICAgICAgUUhEOiBcXFwiMksg6LaF5riFXFxcIixcXG4gICAgICAgICAgICBGSEQ6IFxcXCIxMDgwIOWFqOmrmOa4hVxcXCIsXFxuICAgICAgICAgICAgSEQ6IFxcXCI3MjAg6auY5riFXFxcIixcXG4gICAgICAgICAgICBTRDogXFxcIjU0MCDmoIfmuIVcXFwiLFxcbiAgICAgICAgICAgIExEOiBcXFwiMzYwIOa1geeVhVxcXCJcXG4gICAgICAgIH07XFxuICAgICAgICBsZXQgYXJyMSA9IEpTT04ucGFyc2UocHUpLnZpZGVvX3ByZXZpZXdfcGxheV9pbmZvLmxpdmVfdHJhbnNjb2RpbmdfdGFza19saXN0LmZpbHRlcihpdCA9PiBpdC51cmwgIT0gXFxcIlxcXCIpO1xcbiAgICAgICAgZm9yIChsZXQgayBvZiBPYmplY3Qua2V5cyh0cmFuc2NvZGluZykpIHtcXG4gICAgICAgICAgICBmb3IgKGxldCBpdCBvZiBhcnIxKSB7XFxuICAgICAgICAgICAgICAgIGlmIChpdC50ZW1wbGF0ZV9pZCA9PSBrKSB7XFxuICAgICAgICAgICAgICAgICAgICB1cmxzLnB1c2goaXQudXJsICsgXFxcIiNpc1ZpZGVvPXRydWUjXFxcIilcXG4gICAgICAgICAgICAgICAgICAgIG5hbWVzLnB1c2godHJhbnNjb2Rpbmdba10pO1xcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9XFxuXFxuICAgICAgICB9XFxuICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoe1xcbiAgICAgICAgICAgIHVybHM6IHVybHMsXFxuICAgICAgICAgICAgbmFtZXM6IG5hbWVzLFxcbiAgICAgICAgICAgIGhlYWRlcnM6IFt7XFxuICAgICAgICAgICAgICAgIFxcXCJSZWZlcmVyXFxcIjogXFxcImh0dHBzOi8vd3d3LmFsaXl1bmRyaXZlLmNvbS9cXFwiXFxuICAgICAgICAgICAgfV1cXG4gICAgICAgIH0pXFxuICAgIH0gZWxzZSB7XFxuICAgICAgICBsZXQgcmVzID0gcmVxdWVzdChidWlsZFVybChcXFwiaHR0cHM6Ly9hcGkuYWxpeXVuZHJpdmUuY29tL3YyL2ZpbGUvZG93bmxvYWRcXFwiLCB7XFxuICAgICAgICAgICAgXFxcImRyaXZlX2lkXFxcIjogZGlkLFxcbiAgICAgICAgICAgIFxcXCJmaWxlX2lkXFxcIjogaWQsXFxuICAgICAgICAgICAgXFxcImltYWdlX3RodW1ibmFpbF9wcm9jZXNzXFxcIjogXFxcImltYWdlL3Jlc2l6ZSxtX2xmaXQsd18yNTYsbGltaXRfMC9mb3JtYXQsanBnfGltYWdlL2Zvcm1hdCx3ZWJwXFxcIlxcbiAgICAgICAgfSksIHtcXG4gICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgIFxcXCJhdXRob3JpemF0aW9uXFxcIjogY29uZmlnLmFjY2Vzc190b2tlblxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgcmVkaXJlY3Q6IGZhbHNlXFxuICAgICAgICB9KVxcbiAgICAgICAgdmFyIHVybCA9IHBkZmgocmVzLCBcXFwiYSYmaHJlZlxcXCIpXFxuICAgICAgICBpZiAoJC5pbWcuaW5jbHVkZXMoSHptKSkge1xcbiAgICAgICAgICAgIHJldHVybiB1cmwgKyBcXFwiIy5qcGdcXFwiXFxuICAgICAgICB9IGVsc2UgaWYgKCQuYXVkaW8uaW5jbHVkZXMoSHptKSkge1xcbiAgICAgICAgICAgIHJldHVybiB1cmwgKyBcXFwiI2lzTXVzaWM9dHJ1ZSNcXFwiXFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIHJldHVybiBcXFwiZG93bmxvYWQ6Ly9cXFwiICsgdXJsXFxuICAgICAgICB9XFxuICAgIH1cXG59XFxuJC5leHBvcnRzLnNoYXJlZ2V0ZmlsZXMgPSBmdW5jdGlvbihpZCwgcGF0aCwgcykge1xcbiAgICB2YXIgZGF0YSA9IHtcXG4gICAgICAgIFxcXCJhbGxcXFwiOiB0cnVlLFxcbiAgICAgICAgXFxcInNoYXJlX2lkXFxcIjogaWQsXFxuICAgICAgICBcXFwicGFyZW50X2ZpbGVfaWRcXFwiOiBwYXRoLFxcbiAgICAgICAgXFxcImxpbWl0XFxcIjogMjAwLFxcbiAgICAgICAgXFxcImltYWdlX3RodW1ibmFpbF9wcm9jZXNzXFxcIjogXFxcImltYWdlL3Jlc2l6ZSx3XzE2MC9mb3JtYXQsanBlZ1xcXCIsXFxuICAgICAgICBcXFwiaW1hZ2VfdXJsX3Byb2Nlc3NcXFwiOiBcXFwiaW1hZ2UvcmVzaXplLHdfMTkyMC9mb3JtYXQsanBlZ1xcXCIsXFxuICAgICAgICBcXFwidmlkZW9fdGh1bWJuYWlsX3Byb2Nlc3NcXFwiOiBcXFwidmlkZW8vc25hcHNob3QsdF8xMDAwLGZfanBnLGFyX2F1dG8sd18zMDBcXFwiLFxcbiAgICAgICAgXFxcIm9yZGVyX2J5XFxcIjogZ2V0SXRlbShcXFwib3JkZXJcXFwiLCBcXFwibmFtZVxcXCIpLFxcbiAgICAgICAgXFxcIm9yZGVyX2RpcmVjdGlvblxcXCI6IFxcXCJBU0NcXFwiXFxuICAgIH1cXG4gICAgaWYgKE1ZX1BBR0UgPT0gMSB8fCBnZXRNeVZhcihpZCArIFxcXCJtYXJrZXJcXFwiLCBcXFwiXFxcIikgIT0gXFxcIlxcXCIpIHtcXG4gICAgICAgIGRhdGEubWFya2VyID0gZ2V0TXlWYXIoaWQgKyBcXFwibWFya2VyXFxcIikgIT0gJ3VuZGVmaW5lZCcgPyBnZXRNeVZhcihpZCArIFxcXCJtYXJrZXJcXFwiKSA6ICcnXFxuICAgICAgICBjbGVhck15VmFyKGlkICsgXFxcIm1hcmtlclxcXCIpXFxuICAgICAgICB2YXIgZmlsZXMgPSBKU09OLnBhcnNlKHBvc3QoXFxcImh0dHBzOi8vYXBpLmFsaXl1bmRyaXZlLmNvbS9hZHJpdmUvdjMvZmlsZS9saXN0XFxcIiwge1xcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgXFxcIngtc2hhcmUtdG9rZW5cXFwiOiBzXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeShkYXRhKVxcbiAgICAgICAgfSkpXFxuICAgICAgICByZXR1cm4gZmlsZXNcXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIHJldHVybiBmYWxzZVxcbiAgICB9XFxufVxcbiQuZXhwb3J0cy5zaGFyZWNodWxpID0gZnVuY3Rpb24oc2hhcmVfaWQsIGlkLCBuYW1lLCBzKSB7XFxuICAgIHZhciBjb25maWcgPSBKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL0pvZS9hbGkuanNvblxcXCIpKVxcbiAgICBsZXQge1xcbiAgICAgICAgZ2V0SHptLFxcbiAgICAgICAgcHVzaFxcbiAgICB9ID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcIilcXG4gICAgdmFyIEh6bSA9IGdldEh6bShuYW1lKVxcbiAgICBpZiAoJC5tb3ZpZS5pbmNsdWRlcyhIem0pKSB7XFxuICAgICAgICBsZXQgdXJsID0gSlNPTi5wYXJzZShwb3N0KFxcXCJodHRwczovL2FwaS5hbGl5dW5kcml2ZS5jb20vdjIvZmlsZS9nZXRfc2hhcmVfbGlua19kb3dubG9hZF91cmxcXFwiLCB7XFxuICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICBcXFwieC1zaGFyZS10b2tlblxcXCI6IHMsXFxuICAgICAgICAgICAgICAgIFxcXCJhdXRob3JpemF0aW9uXFxcIjogY29uZmlnLmFjY2Vzc190b2tlblxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xcbiAgICAgICAgICAgICAgICBcXFwiZXhwaXJlX3NlY1xcXCI6IDYwMCxcXG4gICAgICAgICAgICAgICAgXFxcImZpbGVfaWRcXFwiOiBpZCxcXG4gICAgICAgICAgICAgICAgXFxcInNoYXJlX2lkXFxcIjogc2hhcmVfaWRcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfSkpLmRvd25sb2FkX3VybFxcbiAgICAgICAgbGV0IHB1ID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvYWxpbGF6eVxcXCIpKHNoYXJlX2lkLCBpZCwgdXJsKVxcbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHB1KVxcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgbGV0IHVybCA9IEpTT04ucGFyc2UocG9zdChcXFwiaHR0cHM6Ly9hcGkuYWxpeXVuZHJpdmUuY29tL3YyL2ZpbGUvZ2V0X3NoYXJlX2xpbmtfZG93bmxvYWRfdXJsXFxcIiwge1xcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgXFxcIngtc2hhcmUtdG9rZW5cXFwiOiBzLFxcbiAgICAgICAgICAgICAgICBcXFwiYXV0aG9yaXphdGlvblxcXCI6IGNvbmZpZy5hY2Nlc3NfdG9rZW5cXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcXG4gICAgICAgICAgICAgICAgXFxcImV4cGlyZV9zZWNcXFwiOiA2MDAsXFxuICAgICAgICAgICAgICAgIFxcXCJmaWxlX2lkXFxcIjogaWQsXFxuICAgICAgICAgICAgICAgIFxcXCJzaGFyZV9pZFxcXCI6IHNoYXJlX2lkXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH0pKS51cmxcXG4gICAgICAgIGlmICgkLmltZy5pbmNsdWRlcyhIem0pKSB7XFxuICAgICAgICAgICAgcmV0dXJuIHVybCArIFxcXCIjLmpwZ1xcXCJcXG4gICAgICAgIH0gZWxzZSBpZiAoJC5hdWRpby5pbmNsdWRlcyhIem0pKSB7XFxuICAgICAgICAgICAgcmV0dXJuIHVybCArIFxcXCIjaXNNdXNpYz10cnVlI1xcXCJcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJkb3dubG9hZDovL1xcXCIgKyB1cmxcXG4gICAgICAgIH1cXG4gICAgfVxcbn1cXG4kLmV4cG9ydHMuZ2V0SWNvbiA9IGZ1bmN0aW9uKGZpbGVOYW1lKSB7XFxuICAgIGxldCB7XFxuICAgICAgICBnZXRIem1cXG4gICAgfSA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXCIpXFxuICAgIGxldCByb290ID0gXFxcImh0dHBzOi8vZ2l0Y29kZS5uZXQvcXFfMzIzOTQzNTEvZHIvLS9yYXcvbWFzdGVyL2ltZy/mlofku7bnsbvlnosyL1xcXCI7XFxuICAgIGxldCBmaWxlcyA9ICdhaXxhcGt8YXZpfGNzc3xkbWd8ZXhlfGZsdnxnaWZ8aGlrZXJ8aHRtbHxpc298anBnfGpzfGpzb258bG9nfG1vdnxtcDN8bXA0fG90ZnxwaHB8cG5nfHBwdHxwc2R8dGFibGV8dHh0fHdhdnx4bHN8emlwfGNzc3xkb2N8ZXB1YnxleGN8aHRtfHhsc3gnLnNwbGl0KCd8Jyk7XFxuICAgIGxldCBoem0gPSBnZXRIem0oZmlsZU5hbWUpXFxuICAgIGlmIChmaWxlcy5pbmNsdWRlcyhoem0pKSB7XFxuICAgICAgICBpbWcgPSByb290ICsgaHptICsgJy5zdmcnO1xcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgaW1nID0gcm9vdCArIFxcXCLmlofku7Yuc3ZnXFxcIlxcbiAgICB9XFxuICAgIHJldHVybiBpbWdcXG59XFxuJC5leHBvcnRzLmdldEh6bSA9IGZ1bmN0aW9uKGZpbGVOYW1lKSB7XFxuICAgIHJldHVybiBmaWxlTmFtZS5zdWJzdHIoZmlsZU5hbWUubGFzdEluZGV4T2YoXFxcIi5cXFwiKSArIDEpLnRvTG93ZXJDYXNlKClcXG59XFxuJC5leHBvcnRzLnJlZnJlc2hUb2tlbiA9IHJlZnJlc2hUb2tlblxcbiQuZXhwb3J0cy5nZXRGaWxlcyA9IGdldEZpbGVzXFxuJC5leHBvcnRzLmNodWxpID0gY2h1bGlcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuWIhuS6q1wiLFwicGF0aFwiOlwic2hhcmVcIixcInJ1bGVcIjpcImpzOlxcbnZhciBkID0gW107XFxuXFxuJC5leHRlbmQoe1xcbiAgICB0ZXh0OiBbXFxcImh0bVxcXCIsIFxcXCJodG1sXFxcIiwgXFxcInhtbFxcXCIsIFxcXCJqYXZhXFxcIiwgXFxcInByb3BlcnRpZXNcXFwiLCBcXFwic3FsXFxcIiwgXFxcImpzXFxcIiwgXFxcIm1kXFxcIiwgXFxcImpzb25cXFwiLCBcXFwiY29uZlxcXCIsIFxcXCJpbmlcXFwiLCBcXFwidnVlXFxcIiwgXFxcInBocFxcXCIsIFxcXCJweVxcXCIsIFxcXCJiYXRcXFwiLCBcXFwiZ2l0aWdub3JlXFxcIiwgXFxcInltbFxcXCIsIFxcXCJnb1xcXCIsIFxcXCJzaFxcXCIsIFxcXCJjXFxcIiwgXFxcImNwcFxcXCIsIFxcXCJoXFxcIiwgXFxcImhwcFxcXCIsIFxcXCJ0c3hcXFwiXSxcXG4gICAgYXVkaW86IFtcXFwibXAzXFxcIiwgXFxcImZsYWNcXFwiLCBcXFwib2dnXFxcIiwgXFxcIm00YVxcXCIsIFxcXCJ3YXZcXFwiLCBcXFwib3B1c1xcXCJdLFxcbiAgICBtb3ZpZTogW1xcXCJtcDRcXFwiLCBcXFwibWt2XFxcIiwgXFxcImF2aVxcXCIsIFxcXCJtb3ZcXFwiLCBcXFwicm12YlxcXCIsIFxcXCJ3ZWJtXFxcIiwgXFxcImZsdlxcXCIsIFxcXCJtNHZcXFwiLCBcXFwibTN1OFxcXCIsIFxcXCJ0c1xcXCJdLFxcbiAgICBpbWc6IFtcXFwianBnXFxcIiwgXFxcInBuZ1xcXCIsIFxcXCJqcGVnXFxcIiwgXFxcImdpZlxcXCIsIFxcXCJzdmdcXFwiLCBcXFwicmF3XFxcIl0sXFxuICAgIHN1YnRpdGxlOiBbXFxcInZ0dFxcXCIsIFxcXCJzcnRcXFwiLCBcXFwiYXNzXFxcIl1cXG59KVxcblxcbmZ1bmN0aW9uIGZvcm1hdERhdGUodGltZSkge1xcbiAgICB2YXIgZGF0ZSA9IG5ldyBEYXRlKHRpbWUpO1xcbiAgICB2YXIgWVkgPSBkYXRlLmdldEZ1bGxZZWFyKCkgKyAnLSc7XFxuICAgIHZhciBNTSA9IChkYXRlLmdldE1vbnRoKCkgKyAxIDwgMTAgPyAnMCcgKyAoZGF0ZS5nZXRNb250aCgpICsgMSkgOiBkYXRlLmdldE1vbnRoKCkgKyAxKSArICctJztcXG4gICAgdmFyIEREID0gKGRhdGUuZ2V0RGF0ZSgpIDwgMTAgPyAnMCcgKyAoZGF0ZS5nZXREYXRlKCkpIDogZGF0ZS5nZXREYXRlKCkpO1xcbiAgICB2YXIgaGggPSAoZGF0ZS5nZXRIb3VycygpIDwgMTAgPyAnMCcgKyBkYXRlLmdldEhvdXJzKCkgOiBkYXRlLmdldEhvdXJzKCkpICsgJzonO1xcbiAgICB2YXIgbW0gPSAoZGF0ZS5nZXRNaW51dGVzKCkgPCAxMCA/ICcwJyArIGRhdGUuZ2V0TWludXRlcygpIDogZGF0ZS5nZXRNaW51dGVzKCkpICsgJzonO1xcbiAgICB2YXIgc3MgPSAoZGF0ZS5nZXRTZWNvbmRzKCkgPCAxMCA/ICcwJyArIGRhdGUuZ2V0U2Vjb25kcygpIDogZGF0ZS5nZXRTZWNvbmRzKCkpO1xcbiAgICByZXR1cm4gWVkgKyBNTSArIEREICsgXFxcIiBcXFwiICsgaGggKyBtbSArIHNzO1xcbn1cXG5pZiAoZ2V0UGFyYW0oXFxcInNoYXJlX3VybFxcXCIpLnN0YXJ0c1dpdGgoXFxcImh0dHBzOi8vd3d3LmFsaXl1bmRyaXZlLmNvbS9zL1xcXCIpKSB7XFxuICAgIHZhciBzaGFyZVVybCA9IGdldFBhcmFtKFxcXCJzaGFyZV91cmxcXFwiKVxcbiAgICB2YXIgc2hhcmVfaWQgPSBzaGFyZVVybC5zcGxpdCgnY29tL3MvJylbMV0uc3BsaXQoXFxcIi9cXFwiKVswXVxcbiAgICBpZiAoZ2V0SXRlbShzaGFyZV9pZCwgXFxcIlxcXCIpICE9IFxcXCJcXFwiKSB7XFxuICAgICAgICB2YXIgcGFzc3dvcmQgPSBnZXRJdGVtKHNoYXJlX2lkKVxcbiAgICB9IGVsc2UgaWYgKGdldFBhcmFtKFxcXCJwYXNzd29yZFxcXCIpKSB7XFxuICAgICAgICB2YXIgcGFzc3dvcmQgPSBnZXRQYXJhbShcXFwicGFzc3dvcmRcXFwiKVxcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgdmFyIHBhc3N3b3JkID0gXFxcIlxcXCJcXG4gICAgfVxcbiAgICB2YXIgcmVzID0gSlNPTi5wYXJzZShwb3N0KFxcXCJodHRwczovL2FwaS5hbGl5dW5kcml2ZS5jb20vYWRyaXZlL3YzL3NoYXJlX2xpbmsvZ2V0X3NoYXJlX2J5X2Fub255bW91cz9zaGFyZV9pZD1cXFwiICsgc2hhcmVfaWQsIHtcXG4gICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcXG4gICAgICAgICAgICBcXFwic2hhcmVfaWRcXFwiOiBzaGFyZV9pZFxcbiAgICAgICAgfSlcXG4gICAgfSkpXFxuICAgIHZhciBzYSA9IEpTT04ucGFyc2UocG9zdChcXFwiaHR0cHM6Ly9hcGkuYWxpeXVuZHJpdmUuY29tL3YyL3NoYXJlX2xpbmsvZ2V0X3NoYXJlX3Rva2VuXFxcIiwge1xcbiAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xcbiAgICAgICAgICAgIFxcXCJzaGFyZV9wd2RcXFwiOiBwYXNzd29yZCxcXG4gICAgICAgICAgICBcXFwic2hhcmVfaWRcXFwiOiBzaGFyZV9pZFxcbiAgICAgICAgfSlcXG4gICAgfSkpXFxuICAgIGlmIChzYS5zaGFyZV90b2tlbikge1xcbiAgICAgICAgdmFyIHMgPSBzYS5zaGFyZV90b2tlblxcbiAgICAgICAgc2V0UGFnZVRpdGxlKHJlcy5zaGFyZV9uYW1lKVxcbiAgICAgICAgdmFyIHBhdGggPSBNWV9QQVJBTVMucGF0aCB8fCBcXFwicm9vdFxcXCJcXG4gICAgICAgIGlmIChNWV9QQUdFID09IDEpIHtcXG4gICAgICAgICAgICBkLnVuc2hpZnQoe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogcmVzLmNyZWF0b3JfbmFtZSxcXG4gICAgICAgICAgICAgICAgaW1nOiByZXMuYXZhdGFyLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImF2YXRhclxcXCJcXG4gICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi4oCc4oCc4oCd4oCdPHNtYWxsPlxcXCIgKyBmb3JtYXREYXRlKERhdGUucGFyc2UocmVzLnVwZGF0ZWRfYXQpKSArIFxcXCI8L3NtYWxsPlxcXCIsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF8xXFxcIlxcbiAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLkv53lrZjliLDmiJHnmoTnvZHnm5hcXFwiLFxcbiAgICAgICAgICAgICAgICB1cmw6IGBzbWFydGRyaXZlOi8vc2hhcmUvYnJvd3NlP3NoYXJlSWQ9JHtzaGFyZV9pZH0mc2hhcmVQd2Q9JHtwYXNzd29yZH1gLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogXFxcIuWIh+aNouagt+W8j1xcXCIsXFxuICAgICAgICAgICAgICAgIHVybDogJChbXFxcIm1vdmllXzFfbGVmdF9waWNcXFwiLCBcXFwiY2FyZF9waWNfM1xcXCIsIFxcXCJhdmF0YXJcXFwiXSkuc2VsZWN0KCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHNldEl0ZW0oXFxcInN0eWxlXFxcIiwgaW5wdXQpXFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5bey5YiH5o2iXFxcIlxcbiAgICAgICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0XzJcXFwiXFxuICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICB0aXRsZTogXFxcIuaOkuW6j++8mlxcXCIgKyAoZ2V0TXlWYXIoXFxcIm9yZGVyXFxcIiwgXFxcIm5hbWVcXFwiKSA9PSBcXFwibmFtZVxcXCIgPyBcXFwi5ZCN56ewXFxcIiA6IFxcXCLml7bpl7RcXFwiKSxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKFxcXCIjbm9SZWNvcmRIaXN0b3J5IyNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBnZXRNeVZhcihcXFwib3JkZXJcXFwiLCBcXFwibmFtZVxcXCIpXFxuICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwib3JkZXJcXFwiLCAobyA9PSBcXFwibmFtZVxcXCIgPyBcXFwidXBkYXRlZF9hdFxcXCIgOiBcXFwibmFtZVxcXCIpKVxcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKVxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+WIh+aNouaIkOWKn1xcXCJcXG4gICAgICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF8yXFxcIlxcbiAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJibGFua19ibG9ja1xcXCJcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfVxcblxcbiAgICAgICAgdmFyIGZpbGVzID0gJC5yZXF1aXJlKFxcXCJhcGlcXFwiKS5zaGFyZWdldGZpbGVzKHNoYXJlX2lkLCBwYXRoLCBzKVxcbiAgICAgICAgaWYgKGZpbGVzKSB7XFxuICAgICAgICAgICAgcHV0TXlWYXIocGF0aCArIFxcXCJtYXJrZXJcXFwiLCBmaWxlcy5uZXh0X21hcmtlcilcXG4gICAgICAgICAgICBsaXN0ID0gZmlsZXMuaXRlbXNcXG4gICAgICAgICAgICBsaXN0LmZvckVhY2goKGl0ZW0sIGkpID0+IHtcXG4gICAgICAgICAgICAgICAgbGV0IGZpbGVOYW1lID0gaXRlbS5uYW1lXFxuICAgICAgICAgICAgICAgIGxldCBsZW4gPSA0MDtcXG4gICAgICAgICAgICAgICAgbGV0IGxlbjIgPSBsZW4gLyAyO1xcbiAgICAgICAgICAgICAgICBpZiAoZmlsZU5hbWUubGVuZ3RoID49IGxlbikge1xcbiAgICAgICAgICAgICAgICAgICAgZmlsZU5hbWUgPSBmaWxlTmFtZS5zdWJzdHIoMCwgbGVuMikgKyAnLi4uJyArIGZpbGVOYW1lLnN1YnN0cihmaWxlTmFtZS5sZW5ndGggLSBsZW4yKTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGZpbGVOYW1lLFxcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogZm9ybWF0RGF0ZShEYXRlLnBhcnNlKGl0ZW0udXBkYXRlZF9hdCkpLFxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiAoaXRlbS50aHVtYm5haWwgPyBpdGVtLnRodW1ibmFpbCA6IChpdGVtLnR5cGUgPT0gXFxcImZvbGRlclxcXCIgPyBcXFwiaHR0cHM6Ly9naXRjb2RlLm5ldC9xcV8zMjM5NDM1MS9kci8tL3Jhdy9tYXN0ZXIvaW1nL+aWh+S7tuexu+WeizIv5paH5Lu25aS5LnN2Z1xcXCIgOiAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9hcGlcXFwiKS5nZXRJY29uKGl0ZW0ubmFtZSkpKSxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogKGl0ZW0udHlwZSA9PSBcXFwiZm9sZGVyXFxcIiA/IFxcXCJoaWtlcjovL3BhZ2Uvc2hhcmU/cGFnZT1meXBhZ2Umc2hhcmVfdXJsPVxcXCIgKyBnZXRQYXJhbShcXFwic2hhcmVfdXJsXFxcIikgOiAkKCkubGF6eVJ1bGUoKHNoYXJlX2lkLCBpZCwgbmFtZSwgcykgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9hcGlcXFwiKS5zaGFyZWNodWxpKHNoYXJlX2lkLCBpZCwgbmFtZSwgcylcXG4gICAgICAgICAgICAgICAgICAgIH0sIHNoYXJlX2lkLCBpdGVtLmZpbGVfaWQsIGl0ZW0ubmFtZSwgcykpLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IGdldEl0ZW0oXFxcInN0eWxlXFxcIiwgXFxcIm1vdmllXzNcXFwiKSxcXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogaXRlbS5maWxlX2lkXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH1cXG4gICAgfSBlbHNlIGlmIChzYS5jb2RlID09IFxcXCJTaGFyZUxpbmsuQ2FuY2VsbGVkXFxcIikge1xcbiAgICAgICAgc2V0UmVzdWx0KFt7XFxuICAgICAgICAgICAgdGl0bGU6IFxcXCLmnaXmmZrkuobvvIzliIbkuqvooqvlj5bmtojkuobgsqBf4LKgXFxcIixcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiXFxuICAgICAgICB9XSlcXG4gICAgfSBlbHNlIGlmIChzYS5jb2RlID09IFxcXCJTaGFyZUxpbmsuRm9yYmlkZGVuXFxcIikge1xcbiAgICAgICAgc2V0UmVzdWx0KFt7XFxuICAgICAgICAgICAgdGl0bGU6IFxcXCLmnaXmmZrkuobvvIzliIbkuqvooqvlsIHnpoHkuobgsqBf4LKgXFxcIixcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiXFxuICAgICAgICB9XSlcXG4gICAgfSBlbHNlIGlmIChzYS5jb2RlID09IFxcXCJTaGFyZUxpbmsuRXhwaXJlZFxcXCIpIHtcXG4gICAgICAgIHNldFJlc3VsdChbe1xcbiAgICAgICAgICAgIHRpdGxlOiBcXFwi5p2l5pma5LqG77yM5YiG5Lqr6L+H5pyf5LqG4LKgX+CyoFxcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIlxcbiAgICAgICAgfV0pXFxuICAgIH0gZWxzZSB7XFxuICAgICAgICBzZXRSZXN1bHQoW3tcXG4gICAgICAgICAgICB0aXRsZTogXFxcIuivt+i+k+WFpeaPkOWPlueggVxcXCIsXFxuICAgICAgICAgICAgdXJsOiAkKFxcXCJcXFwiKS5pbnB1dCgoc2hhcmVfaWQpID0+IHtcXG4gICAgICAgICAgICAgICAgc2V0SXRlbShzaGFyZV9pZCwgaW5wdXQpXFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKClcXG4gICAgICAgICAgICB9LCBzaGFyZV9pZCksXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIlxcbiAgICAgICAgfV0pXFxuICAgIH1cXG59XFxuc2V0UmVzdWx0KGQpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5pCc57SiXCIsXCJwYXRoXCI6XCJzZWFyY2hcIixcInJ1bGVcIjpcImpzOlxcbnZhciBkID0gW107XFxuYWRkTGlzdGVuZXIoJ29uQ2xvc2UnLCAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgY2xlYXJNeVZhcignc2VhcmNobWFya2VyJylcXG4gICAgY2xlYXJNeVZhcignc2VyYWNoZW5kJylcXG59KSlcXG5cXG5hZGRMaXN0ZW5lcignb25SZWZyZXNoJywgJC50b1N0cmluZygoKSA9PiB7XFxuICAgIGNsZWFyTXlWYXIoJ3NlYXJjaG1hcmtlcicpXFxuICAgIGNsZWFyTXlWYXIoJ3NlcmFjaGVuZCcpXFxufSkpXFxuXFxuXFxuZnVuY3Rpb24gZm9ybWF0RGF0ZSh0aW1lKSB7XFxuICAgIHZhciBkYXRlID0gbmV3IERhdGUodGltZSk7XFxuICAgIHZhciBZWSA9IGRhdGUuZ2V0RnVsbFllYXIoKSArICctJztcXG4gICAgdmFyIE1NID0gKGRhdGUuZ2V0TW9udGgoKSArIDEgPCAxMCA/ICcwJyArIChkYXRlLmdldE1vbnRoKCkgKyAxKSA6IGRhdGUuZ2V0TW9udGgoKSArIDEpICsgJy0nO1xcbiAgICB2YXIgREQgPSAoZGF0ZS5nZXREYXRlKCkgPCAxMCA/ICcwJyArIChkYXRlLmdldERhdGUoKSkgOiBkYXRlLmdldERhdGUoKSk7XFxuICAgIHZhciBoaCA9IChkYXRlLmdldEhvdXJzKCkgPCAxMCA/ICcwJyArIGRhdGUuZ2V0SG91cnMoKSA6IGRhdGUuZ2V0SG91cnMoKSkgKyAnOic7XFxuICAgIHZhciBtbSA9IChkYXRlLmdldE1pbnV0ZXMoKSA8IDEwID8gJzAnICsgZGF0ZS5nZXRNaW51dGVzKCkgOiBkYXRlLmdldE1pbnV0ZXMoKSkgKyAnOic7XFxuICAgIHZhciBzcyA9IChkYXRlLmdldFNlY29uZHMoKSA8IDEwID8gJzAnICsgZGF0ZS5nZXRTZWNvbmRzKCkgOiBkYXRlLmdldFNlY29uZHMoKSk7XFxuICAgIHJldHVybiBZWSArIE1NICsgREQgKyBcXFwiIFxcXCIgKyBoaCArIG1tICsgc3M7XFxufVxcblxcbmxldCBrdyA9IGdldFBhcmFtKFxcXCJrd1xcXCIpO1xcbmxldCBwYWdlID0gTVlfUEFHRTtcXG5cXG5mdW5jdGlvbiBnZXRfU2VhcmNoKGFyciwga3csIHBhZ2UpIHtcXG4gICAgdmFyIGxpbmtzID0ga3cubWF0Y2goL2h0dHBzOlxcXFwvXFxcXC8od3d3XFxcXC5hbGl5dW5kcml2ZVxcXFwuY29tXFxcXC9zfGFseXdwXFxcXC5uZXQpXFxcXC9cXFxcdyovZylcXG4gICAgaWYgKGxpbmtzKSB7XFxuICAgICAgICBhcnIucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IFxcXCLor4bliKvliLDpk77mjqVcXFwiLFxcbiAgICAgICAgICAgIHVybDogXFxcInRvYXN0Oi8v44O9KCrijJLiiIfijJIqKe++iVxcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIlxcbiAgICAgICAgfSlcXG4gICAgICAgIGxpbmtzLmZvckVhY2goaXRlbSA9PiB7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0sXFxuICAgICAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vcGFnZS9zaGFyZT9wYWdlPWZ5cGFnZSZzaGFyZV91cmw9XFxcIiArIGl0ZW0sXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF8xXFxcIlxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9KVxcbiAgICAgICAgcmV0dXJuIGFyclxcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgdmFyIHBhdGhzID0gTVlfUEFSQU1TLnBhdGggfHwgXFxcInJvb3RcXFwiXFxuICAgICAgICBsZXQgdSA9IFxcXCJodHRwczovL2FwaS5hbGl5dW5kcml2ZS5jb20vYWRyaXZlL3YzL2ZpbGUvc2VhcmNoXFxcIlxcbiAgICAgICAgdmFyIGNvbmZpZyA9IEpTT04ucGFyc2UocmVxdWVzdChcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9Kb2UvYWxpLmpzb25cXFwiKSlcXG4gICAgICAgIHZhciBtYXJrID0gZ2V0TXlWYXIoJ3NlYXJjaG1hcmtlcicpIHx8ICcnO1xcbiAgICAgICAgdmFyIGJvZHkgPSB7XFxuICAgICAgICAgICAgXFxcImRyaXZlX2lkXFxcIjogY29uZmlnLmRlZmF1bHRfZHJpdmVfaWQsXFxuICAgICAgICAgICAgXFxcImxpbWl0XFxcIjogMTAwLFxcbiAgICAgICAgICAgICdtYXJrZXInOiBtYXJrLFxcbiAgICAgICAgICAgIFxcXCJpbWFnZV90aHVtYm5haWxfcHJvY2Vzc1xcXCI6IFxcXCJpbWFnZS9yZXNpemUsd180MDAvZm9ybWF0LGpwZWdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWFnZV91cmxfcHJvY2Vzc1xcXCI6IFxcXCJpbWFnZS9yZXNpemUsd18xOTIwL2Zvcm1hdCxqcGVnXFxcIixcXG4gICAgICAgICAgICBcXFwidmlkZW9fdGh1bWJuYWlsX3Byb2Nlc3NcXFwiOiBcXFwidmlkZW8vc25hcHNob3QsdF8xMDAwLGZfanBnLGFyX2F1dG8sd18zMDBcXFwiLFxcbiAgICAgICAgICAgIFxcXCJxdWVyeVxcXCI6IGBuYW1lIG1hdGNoIFxcXFxcXFwiJHtrd31cXFxcXFxcImAsXFxuICAgICAgICAgICAgXFxcIm9yZGVyX2J5XFxcIjogXFxcIm5hbWUgQVNDXFxcIlxcbiAgICAgICAgfVxcbiAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKHBvc3QodSwge1xcbiAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KGJvZHkpLFxcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgXFxcImF1dGhvcml6YXRpb25cXFwiOiBjb25maWcuYWNjZXNzX3Rva2VuXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSkpXFxuICAgICAgICB2YXIgbGlzdCA9IGpzb24uaXRlbXM7XFxuICAgICAgICBpZihsaXN0Lmxlbmd0aD09MCl7XFxuICAgICAgICAgICAgYXJyLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+KAnOKAnOKAneKAnTxzbWFsbD48Zm9udCBjb2xvcj1cXFwiZ3JleVxcXCI+5peg56ym5ZCI57uT5p6cPC9mb250Pjwvc21hbGw+JyxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJyxcXG4gICAgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9lbXB0eScsXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICByZXR1cm4gYXJyO1xcbiAgICAgICAgfVxcbiAgICAgICAgaWYgKGpzb24ubmV4dF9tYXJrZXIgIT0gJycpIHtcXG4gICAgICAgICAgICBwdXRNeVZhcignc2VhcmNobWFya2VyJywganNvbi5uZXh0X21hcmtlcik7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIHB1dE15VmFyKCdzZXJhY2hlbmQnLCAnMScpXFxuICAgICAgICB9XFxuICAgICAgICBpZiAoZ2V0TXlWYXIoJ3NlcmFjaGVuZCcsICcwJykgPT0gJzEnICYmIHBhZ2UgPiAxKSB7XFxuICAgICAgICAgICAgYXJyLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+KAnOKAnOKAneKAnTxzbWFsbD48Zm9udCBjb2xvcj1cXFwiZ3JleVxcXCI+5Yir5YiS5LqG5Yiw5bqV5LqGPC9mb250Pjwvc21hbGw+JyxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJyxcXG4gICAgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9lbXB0eScsXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICByZXR1cm4gYXJyO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBsaXN0LmZvckVhY2goaXRlbSA9PiB7XFxuICAgICAgICAgICAgICAgIGxldCBmaWxlTmFtZSA9IGl0ZW0ubmFtZVxcbiAgICAgICAgICAgICAgICBsZXQgbGVuID0gNDA7XFxuICAgICAgICAgICAgICAgIGxldCBsZW4yID0gbGVuIC8gMjtcXG4gICAgICAgICAgICAgICAgaWYgKGZpbGVOYW1lLmxlbmd0aCA+PSBsZW4pIHtcXG4gICAgICAgICAgICAgICAgICAgIGZpbGVOYW1lID0gZmlsZU5hbWUuc3Vic3RyKDAsIGxlbjIpICsgJy4uLicgKyBmaWxlTmFtZS5zdWJzdHIoZmlsZU5hbWUubGVuZ3RoIC0gbGVuMik7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgYXJyLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGZpbGVOYW1lLFxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiAoaXRlbS50aHVtYm5haWwgPyBpdGVtLnRodW1ibmFpbCA6IChpdGVtLnR5cGUgPT0gXFxcImZvbGRlclxcXCIgPyBcXFwiaHR0cHM6Ly9naXRjb2RlLm5ldC9xcV8zMjM5NDM1MS9kci8tL3Jhdy9tYXN0ZXIvaW1nL+aWh+S7tuexu+WeizIv5paH5Lu25aS5LnN2Z1xcXCIgOiAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9hcGlcXFwiKS5nZXRJY29uKGl0ZW0ubmFtZSkpKSxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogKGl0ZW0udHlwZSA9PSBcXFwiZm9sZGVyXFxcIiA/IFxcXCJoaWtlcjovL3BhZ2UvaG9tZVxcXCIgOiAkKCkubGF6eVJ1bGUoKGlkLCBuYW1lLCB1cmwpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcIikuY2h1bGkoaWQsIG5hbWUsIHVybClcXG4gICAgICAgICAgICAgICAgICAgIH0sIGl0ZW0uZmlsZV9pZCwgaXRlbS5uYW1lLCBpdGVtLnVybCkpLFxcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogZm9ybWF0RGF0ZShEYXRlLnBhcnNlKGl0ZW0udXBkYXRlZF9hdCkpLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJhdmF0YXJcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBpdGVtLmZpbGVfaWRcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIHJldHVybiBhcnJcXG4gICAgICAgIH1cXG4gICAgfVxcbn1cXG5cXG5nZXRfU2VhcmNoKGQsa3cscGFnZSlcXG5cXG5zZXRSZXN1bHQoZCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLpmL/ph4xsYXp5XCIsXCJwYXRoXCI6XCJhbGlsYXp5XCIsXCJydWxlXCI6XCJldmFsUHJpdmF0ZUpTKFxcXCJyTyszN3VHK2IySmJsOTFKWGUxQUxmWnpEbElRZ1BGSEM2Y1EzK1dPUHhsV2VtMy9jKzkzOUVBOGgxN1VvZXVCTHpsbUQvS2FlWFJ2SUpXUHh2UnZzbm93L1kwMmU1Y21QMmowcW9JOXBmeFhzTDE2QlVVS05NS3lacHB4Z1dDcnBmakRXeXZIakhsL1ZhSEJTVC8xTUR1blVhMlcyUHlTWlViVXEyNk95dUJZVmovWXpJajJ6bHFMZXBQWmVqandrTjcxU0pQK0tuM0w2RFpibWVwZFZVMlVncCtTWkNmbEJIdXlQSDJ5MldXeDMrMmpNYm5RNERJSVptQktwdzc2cCs4WXBNVTFsVm5vdGU4bW1FbzE2MmJMOUMrQjFRU1lkT2hvdDRDSXMxMmhRTENCV3lYdGhlUTFwbW9ZeGJub2xYdktSYnY1WVl0cEZNVDVPWkNnOXByRWphZ1laLy91ZEt6eSt4QlNoQTB1SzBMOFNka2tjaDJOVGlrU1dkQTNjS2tMRHJRbm5UTHUzNFhxVkdmK01xVEZndUFrRFlRRjZ0Nm1zRVlQMXFycmtCc21EeW5Bd2FFTjUyL3RNb3lYSC9GWGJ2YkdEOXVzZnE3azNjU1N5My9XaFNET2g5TVMydytrUCtsNEtTSm9qd3ZwMnhmQ3dESEtsSkFOendWaGlhRDN6WE95VVpzQnFCdEVvTC83ek9LR2hNa0ZHVWJ2bFN4MnJ6a0ZwYVpQdXBsL3pWalUwZVA3VC9hQ2VjV3pXMVYyNm9pbEZZeVhGWit2N0VIRThIUXlDaWVabXlMb211VnRnbmR5SGNkQzF2cVd4RmVYcm55amVsWFRYVE5xTFlUdzI4clp6RENSVWt3UDZkRG41ekR0TXZ4QzNQTWVRMFdkS0d5bXN3RWVucFlRQXFHelBvbHpMNE1MaDhtZ0ZhazIxalN5V0FrS0VkdGpPTVA2MDZVaGh5TlBZaEMxcmQxeFc5bmo5M0FmQ2ZxQm1RdEZEaVQzRnFOUEZIWGtaNFdNYzhWS2MvdjhhamdSWnZib2x4ckVWcW1GU3Ywb1FSWGs5ZGMvRVNMeXBQaUM2RzR2MGFDdk5BR2VpTFcrb2Z6bVJDeDEzWkM4MFNwbCtUajlnYWxneFBMUjZ5N3h6UHpodytjWDFuYmc5MU9Ud09xVXlhN2J2VG05UEk0TnlxR0FWbDNtZ0ZJUlhKcmJuQVk4RndWK3hlRGE1Z1dZekpQSGlFNG1uQjFDZlo2QnZXZWorbUpJbnhxa0IzL016RTN1SDJVenlYVXgrNFloMUZBQ2NPODdZc1IwNS9wNlhtbm1PK1NOYlQ3alAvM25hVzZheDBUL1I1Y0FBbTYyVnczQS9hYVduelBpTExyd2cyZUZIVWt2QUFuR0FVek1MWUlZbE00dG81RktGT1VsZDAzLzRIdHp6RytaVEtYNzRyRC9kK3A2VkRsTzlNTkVacEFQdk5GaHBlSERkNkFxcUVjYUtOK2R6UmFvS2c2NnU1VkhCTWFEVDczK0drMHVoSnNTWWJ3TVhzUExLdE4wUzVYUDcxbUZpM2hTQmdFSTJjVHdqd1QramNMNmdPRzIyWHhoU0NEWEhsYXM5ajEyU2hUbEpYZE4vK0I3Yzh4dm1VeWwrM2JPR0ZTUzBZRktsbmMrOGFUcUhRb3doWmo3NS9NNTNzS1lYMnpSZ09TVGFEMzFSb1FLU0VjUERpTkVzWjJUb21Oa0FtdmYwMzErZlczY2htMVJ3S3crWDlHeGZtSFE3cmlEb1NSaW9VYVp3SGVsRDFsb0Vlc0N5RDUwMUg3Ulk5WnlRVTZxTVplZmtlR1VCT1FaQ2Fac0F3RW5TRCtpN0NxRWhnMi9XY2Z0b3ppUkl4aFhZMkY3bFU1cEVsSUd5V3BuRFZnWnlOY0VheGhuR1FMbE1DUTBPRklKSGpZRG0yalhCdFV2RmtwSi9kK0NnZURENG82ZU5IeE1sQUpSdXNuQWhLcGtNTStVZWc2OVdQbHZESGc4clphNVFuY3pwTjEyM0YvQUs0SnlXMVYyNm9pbEZZeVhGWit2N0VIRThCcE1raCs5WTAvRHpIRG9PT1BnUHpYZ3hxWkFZYkFDV2Ewa0kvQVpMa0QvZWw2QjVCSWppWUhnMUFJbUtsWFhRbWNMUzBzd0doWjJDb1V6Y0JTa0V2UE9sREw3RHZ6enNPUW5LKy9iQ2M0bjlzN2tmRWg1R0grbVY0RTM3NzFwNmlrOUIranZIcjdqYTBTZ3ZRbkNRTTlIZHNsWlNROVd5c3RXSzNkYTg3SW1GKzB5SExsN3JpeEtVNDdXZ3dTVFcwNmxBbWRoalNJVWg2RkswMXpGRk93TlNaZE11MHBxdUU3a3l4ZkZvMXpGSEhWL3k4ZzRPdU12bUozcVBFZXVhRUJGeFE3RVBpUDMvbnhhMGxpOXFhMnR4Y2h5b2dVZDFIL1o5QTRCeGplVnpFc0ZBMkt1QVdHVGYrUGZyajR1OXRYUi9MNXd3VTVGS2tnelRKNVh0NXVkV1hSSDZ0VkpPK05HQmpHSGMxblB0TmtDalR4emExRm5KWUc5RmdHTWsweGpIWXprVE0wb0IwSWdlZjc3T2U4blBRRmEyNkVZcVFHaXM4YUVxVUJXUVA3THZLNTRpejhwOThjdGg2SklNRllwS2lHZ0ZpWmliRlEzclAzdERGd3NzRDJ1NTF2NktQM1M3TlRnVXBidGljbG5rQ21Rc3M5Zy9IMGVMbDF1RTg2VU12c08vUE93NUNjcjc5c0p6aWNQT3lUMkFYNG9GcTh0anY0TXBwSnRqb2pOdUIyeDNwRjRNS1AzWDJrbWZZR2hGdExsU2M1aFphRFNOd0hTdmZ6bEVHYXNLNnVFQ05nU2JoM3dNZGFFZnJTNkxJMjhiQkdHdndKVVF4bXVmeWh5VkRPUk1zcTlTMDEvbHpyK04yb1dLelBEK2NTOGNmTFpJV3RlYmV0VzhBTW93cGlSZ1FZdGpRNEZMTklBKzhHWGo0QmVwTXMrdTdWZFdaY25nZjlFVkxaQVBSMmlkL2tUVUwwdFdXNDBUd0cyWmNpRzNydmRkRzFzTi91SU9peVRNUE81U244RkNQSWpJZGhFZ3FmYkxxR2xvQUdGZU5TRW9GQjBSWXUwaFZtYlhjd1JES1VZaTBYVEw3YkRRdUI2TVJOU3ZkcWJ1ZjdscmVrMTJZQ1J5cGhxZldQRmtmS2ZPYjRWY3ZwYXY1VTByWVczSUhocVJyM25rUFg4YjAweHNTeEJEMVpHSlBLcEVmbHFod3dvTmxJRlhVOHhwWHdGSzJrU2hBTHZhZnZqTDdHNitpd3NlR0tIcW94VkxoNUNGNWRzU0I0RWFCc3kxVU5tNWRwUm1GS1BMdFBvZGJoamhMdGxid3IxNGt0eXI4Qzk2YnhXck1wTnNVazNIekM5Tk5ZUG1rQkk3OWpqQitBZ3JUUFJWMXIvSHNHcHp5TTN0K3dFdmQrSWppU05zZXNoTit6c2liWUF0N1FPenA0Tzhrd2NwK0dRSkVOd3dRdVU5bnhwRE9FMW9mWmlNbUY4a3Z1WExZbkNFbUNlTHI4SHlSdDZGT3JRVDhQYzV0UWI5akQ1MGVrRUlObHcvVnNmRmJSZXk1NWJmT0V2S1BYT1lYVlhxZkh0MFBoMDlWRldGYW9KT0ZTL0pTOTltK0ZTdklEbjBncHpvWGhJUnF3N0I3bkplNHJoVXdSLzIzNnBDbFVqa1dLZEtzMVpGdy8xVXZkTjN3ZHBRN3A5S2YrT1VzalhDMzgwMk9lZnBRb25VNzZ5c3lLVG1WNDE0YmNYek9IZ21HSFRKMVFrNkQ3ZGE4dGRHUlp5bGxxV0RzNlVNdnNPL1BPdzVDY3I3OXNKemljYWl4QWQzQ2V0VUF0c2tRVnhZSmh2Wk9UZXVKYUxhNDVaQlpnK2xYbStZYWNoQU8reUI2YkRmMG9aNXk0L0dmNDFpSGY4REJvUG0yMk5vMUdRalBBQ0k2Q2h5N05BK3QwbFdTRG1ZNlJiZGp6dmN1WElFcmdyMUQvUHVnRm1oT1ZrVTFBTXphd0YyZmh4OWlDUm5GSmpRZXFQeGdaUzkvWi90NEIzV1hQSUIwd0FxVHJ6bjZvUjNEWktORGEyajNuZFhCUjhZSlNVaU96NWNwNGRoQkd2OWEzT0o5YVcybi9yd0FnYzVtcUpueXJDekMzS09nMWRWSWwzekFhbW5ic0wxcE1lQ3JnVkhmbUY3STkvY2Z2TU9WY0tXVWtoTkVqbWtINzl6ek96NURtdktwYVNHZFFocXhjeWdqQnpuVjRueHNUTnNCWmwxSzBVVGsvd0FTOFh5eXZMU05aV2Mvc0luL3ZXU0FIVTl2Yk81SHhJZVJoL3BsZUJOKys5YWVyT2FkUWgydFRVc1lpcXIxYWNidGZabHM4WGhscDlrem5RR0dHTCtPUmdkcHc5dHB2MlRwK2UxMTIySG1nOGIxNVlZN0s3c3p4aGlJeUl1bTR5a0R2Vk03b1A3ZjJkQWJabitmTS9pSVRic09rMlA0dGJpdHhzdW9BZXJwNDF0ZmxZWUtDL2tXODd1L1k0aXZBUUZuNFJoN2FuTjdPL1RSeVRPNHY0SlZKVHMzOUJuZklNd1JGZGplWUFRZTlHUGJtZ1VaTGREUS9Gb2FrZXhYRkxKQ3NwMkRxN1ZhbXFhOFRUMER6RmR0ME5OZVd5N3NNTVhtbTVDUDROOUZ4NTIxYlAwbDdzTXp3WVJTZWhIVU1aLzBOSDlQbTN4Y2ZJZTJBWU5OQURMT25JaW03Wm1tS2hrdFJkdExTdmpHWUUxVVVlQksvbkRsMFF1cWRDaWovWUJaT1hzTWhPQ25zRVVjUjg4R3lsbTViUDRkOGI0aWI2eC9pREFQY3lUSDV4NzhoTnlhUmJhaC9ZdVM0ajA1Wm5KWXBJTzlnUHpUeWJiSS93SE5yNW9ES0NscDZGb0pWemZ6VWpVN1lCcGRabU04OWhOMUc4OW9hTEFFdml4dm9Oci85bjAwZk1RS0twTmgvbXRGQXF1ajhxZ3kxNTJtUnpnTnBHeTc2TFZqZXF3cTZqWFhUWGxYUlBKbEJTSTJCeEVTNUIwVmRhL3g3QnFjOGpON2ZzQkwzZmlIVmRUemc2QksrdEZkSXBPNzk0SFJyaWhvVEpCUmxHNzVVc2RxODVCYVdtUjRNV0l2a1hMd1ZqRDkxZTJHcEhEbjZ6eUNqb2o5eXk2ZEtZSHhnWnFCZXBWNUFZdi9tbzlpcWVraXRXUHRLU3Y1VTByWVczSUhocVJyM25rUFg4YjltTXRxMmxwQmtaRjUyWEViZHk5eFNBaWl5V0R1aEVhOEdITkQ4cTdvUERqUGEvMXpWK0VpTnpBamd4a0N3Rmo0aTFsSmNIbXJlWUxZREZNNkdSWFJCNFJoeWRwbS9RVDJWYkVzV2I5aCtsNzZMMjJndFk3ZDJDbElMM0NobDV3c3NyeTBqV1ZuUDdDSi83MWtnQjFQWVA3bU9NZHdWbHdQL0Eyem9aWUt5d0cybUhZNlNMZXByMVA1VitEME1GdUZMVm1kTmJ3SjZ3Yjd0WmhrTEVZNy9MSzh0STFsWnord2lmKzlaSUFkVDJaNThGRFJ4Vjd1WlpWVzY5VFY4QUFJdjdKSTZJWWZjUU1uSjZpL3Bqa1lpR2RvV2MvYVdnQVBldWNrUWtVK2hVazhRT0xYeE1nODNkNU5qQTJ0Vmh1OUpxYjhhKzNsMWN5ZzZ1VzA0bVpvRUJiSXBiY053eU1IamozMG1GdDdKd1dOWGpVcnhVbkE1NXFsb0k4Z2RPUWNzcnkwaldWblA3Q0ovNzFrZ0IxUFp2bHF4SmVUVlpKNUJ2QlB3OEtSUXB3Rml0SFNoK0VLSkdDTW9VdUZJMjFCcEJaWnJ1TW5jRW1LbldtVytPTkIzMVY3aFlpVWFXNUpuVXFZOWh6OENRb3ozeFRvVlhHeDJ5QzMwcWFlRlhLb2RXMTRLSFJSRjlJcHUrZ0dDb0xBa3BwUGNFWVlCS0FDc0FQN0EzWWdrVVJxdFVnRmhrMDJUUXNsZE8yVG9uSU1OZjlQS1Q3REdvby9KVHJybGp4b2VtSnhLTEhSZEs2SmlsZlA4b1NRV2tvTEp2N3RyQVpmeVpldmdkKzg1RS9tdUd6OGJjMEt4MTlNaHU2UFBuOVNxa0R2MXRndElsMFprYW00ZGIzMUhzTGZtNHZjS0p3cW5rZkhIL2xDdjU3ZlovZTdEVFdzNVRHeU5KaVBLZmw5RWFmT2dFc0RHMnIxQTcyUlVnWWpVbDlrWVZpVUgvd09mQ1VJSlFqNW5SRmpOWkp2bkkxRE5aVnpJa2R6bXJ3SE9takVtVHY3Q1NnVkVpM1NNbUhZRjZzK1VNaWgzdW82Z1BiUmhPZnMwVWp6eDJJamk0Q1dkVlBBcU9NYVpjdHhsUzNUdmp2bGFXMFRJM3lJR2JFOVJySUhJaDFqcmEzQXBZejk3TWcvREhYRGMyT2FuRDFWakVkc3lhSlpPc0tRUHRzaWo1cGp0WVlRV01WMlRzN0FvWUQ5d0tRQkRqUXcvSnJ4blFOUStMTmM4WkhMMVd2clpEWXNtQ2p3VEdIWndMckNDRUU4SnNGYjEvajhFc1pUMWZJT1hjcTdzYjZVMzNwUGcwNDk2OS9wTzlKTUZwNmRNcU1UTVFIbzkzWDJPbHdwOVRvcmlXcUJicXVGZC84M1lUa2YraDRXRW04SldDbk9GTnlzWWtqNEtKbUNhZEE3T1JNbWlTeUt6ZE9rVlNkbVRRbU0xV2cwN205akdMcHE0ZGFlWE5ObGRSUW9saThudG1wWDN5NW9Zd3FwanBQV2ExRE9IUGx3WXlUNHg3QSs1Q3VYV2d5aDIwcFg2RVJUakxuY0ZXZ0FjS05Camc3NysxYndkVkQxTTlCdVpEMlladjhxZFdibXNodkdzbFErTnVNcjZEbUNUTkM4NWZpMHVMRFhsdzZMT0FRUGhNeFQ2NWkwcmhsVEpGRUptSEdDeU5WSi9kUFVJbjArbjVpYzEwQ2RFeWl2anlNTWxoTkY0VlRqOUpCZ0Z1MVVKUVgrM3Y0UjhITVZ0VmR1cUlwUldNbHhXZnIreEJ4UEJiRlZZRGltbHVDTzBBSkdranJYVlRQTzl5NWNnU3VDdlVQOCs2QVdhRTVRaXVIbllaekNUSzN3bGd1WmgyTlJacHFMUkVlWlZnV2hLMXZBNHVsREFBOGNFbzE5RzY3WUxtVFFKb3pwWTNYY3NyeTBqV1ZuUDdDSi83MWtnQjFQWXhjZFNTT2ZBTjJBOEE0cExMd1ZjMFlUdWZldXYreDZrLzVRNTRVOGdIVU1zcnkwaldWblA3Q0ovNzFrZ0IxUGJSSmtEajJTVUo0aTNObHZ4Rm5FWi9HS1ZRWDNvcXJwWm0xZU5WeVB0b0lKYVVwT3BZU3pncjEyTGJIRlI1azkvTEs4dEkxbFp6K3dpZis5WklBZFQyZzJCa09rYVFJQWV4ZFNBU0c5UE5Sa3hUUUpDc0pPN2VpcWRGSHh1cmFNdWtIKzNWQ3JhMjIzWWhmZ04vTTQrSUVnTUg2QnlJL2x6eUNvSHM4OGVzK0ZQVk5TOU5IM3BwYWdCdGEwUW1hUktkdXBJeUx4MlZ3dzc5bG9FUUI2UUp5eXZMU05aV2Mvc0luL3ZXU0FIVTlwS24zc2NJTHNZb3R5bXpKUVVsV1JqOE91YUdvb1lHOVNRQWhFRkNvdVFEeXl2TFNOWldjL3NJbi92V1NBSFU5Z1d0dVArR2lDTFZhRnR3MTVoMFBLTE5Nc2NBVTQrUlR3R1VSYnlzVlBhUkNUNGFSZXZ0azdxZnJJRzBQcHZTM2NzcnkwaldWblA3Q0ovNzFrZ0IxUFpjQWhjUzR5eWhEYjFCL3JTcTJWTDMxR0ovY1h1YXlEN0xmRjlpcWhteG9Yd2N0dlVyb3laZ20vSFIrZ0p6MDB1ZkgwNGsydGtEVjFEZXhBWHIvNjlKV0xobGZwa3pIOXo5UCs4MUlwQkVIcERuclhyeDlDd0hBZnM2elVnTFNscVJueEdxZ1prSjVVSUYzRVBqVFVKQ2FBR2ZyNlpXbGpINmdlSFpkSTlOSkV6QzZMZzQ3RDh0L3J2SC9jLzlLN0xMSzh0STFsWnord2lmKzlaSUFkVDJiNWFzU1hrMVdTZVFid1Q4UENrVUtTZ3FJZVU4RFpFUWttZTNGWGVGVEw3MURnUTZKQklMTWhFSVY3cHlrQzdLMmhOMEFVQVhVNWNJQklqOXZadEdwODZVTXZzTy9QT3c1Q2NyNzlzSnppZTdmOTdrS3BETnpDazZjQlgxR2tCMGkzcEFOc2o4c2NzSm9IaFQ2MFNpNGM2VU12c08vUE93NUNjcjc5c0p6aWRtaTBVL3FJa3pSb0lXUlEwZ09UeEUxeVJXMWU5Z1VKWThGQ3ZlaGxkMmtETkREbHMvVE1pVTY2UDlCZXNQMWtQNkVBdGZBbFB4cHk3TG9VcXJCeTU5MmNZajdJa1pMbG1FdjlsaWdGWUJ6NTl3WHdJWGdQZG81NGdJTDZSU242YTE4TVdUQytEUUo4ZWtrcllKR1g2bjlqS041bklPRjN6ekcxT0ZBbW5lV1BVcENiT0lmUkxGWW5wbEdZaHFteUNqQ25Lc3luc1I3elhEbTdpeFVrWHdsdVdoVlNISURTRW00S20yampXZWNwazVHWGFIbzhEaDZGSzFCMS9uUHN4anRYUlZHMmNaOXY5QXliMG40aTJMeG9MbU5sUUo0eDRYdDNsNkl2MWNOL1F4cXhrNXdxSFZvKzV2blFJNHFGVlA2VFVob3BrV1VUY0JxbHhIOXpudFVkczE1dUxvYnlmSjFmcXMva0V2RnRJKzZpS1RTY1pyQWNvT1hVT2Q4MmY2N3cvZ3M2aWw4N3c2VENPOWgxMkdNVTRvMXBFR082SXFhd2MwYU9HWTF3S2xHSXh6ZjZFOHlmNk45RWFIUEFrRktVR3F2YitSMUNIMExhdlZuNWxoUXJpdFpwTEFYZytZcGYyaldzcGsxbHNYemVFMGl4ZVk4UmtidUtGdUdhelJObzlDRHQ2VVpVejUxK2JmQlVhaUVyTEhaMWoxcnFXaUExVmt3bWIyTGJLN2cxK3V6OFJTK2Y1L21vTDNEdVJrZHBaYkFyYXBOTnl3ZDlZQms2Qnk2aEJwWUJBQU9pa0l4bkVIM3JVQy8xM1NVeUlKelhSbnBXWnJzL3MzL2x3OFNNeUxvV0RVQkdpNHk0bVl2T21sUWE5RGxsNlEwQi95eUhXbTVaTm82V29nYkRJLzhkOWR2aG5FcjJUSmVSdzFXbm9GSm1hSy8zbmQ2WUhta2lqOUgzbm5OVldEdUJZbUZaam93b0FwRVk4VjU4S2wycWRNVFhiMlozWU1XVlhSVEVmRFgwZDRLNVdnNFV0M1o2NFEySmVaWmV3aTNNeThTRmZxSGxGVHRteVM5VU01N3lESWh5Z05lTC84aHBmWklzM2tWS2x6NVZzVFhwRGFaNmN5TS9CMFU1cVRleVBKaXNQaGs2cDlPd2ppTnhpaDdLUVVqTnVKUEJMMHBoSTFDbVV0WWpXek1pbE1RVGRrQWFYUlBuWUxVUkRiWWJjMlV2RDBJSzI2Ull4YUhJTDBlRlRGMk5FcE9rbG5sOEZDTklabkY1WC90RHI4akNPaTJ5RkpBMnVLa2hXMW5taEl2OEx3S1pWbnA1OEFZSXNEQTh4Z3Z4TWEwQ0VHL25GZ2xxRGxOV2dzWWhsRmpGZDdwUEhvS1k5akg2WnhNNzRjZFlxYlRSK3RWdDdnNTNIVnJ3ZkxpTUw4cnVocWRGTUVOOGlkYTFRZWU4WGY2cGdsbzFkS2NZYnc2Qm1uOGVRUHN1RHQvay90OS83b1R1WXYzRmdwdXowbHRhRUZNWldwR3Bzd29hVXN2dDIrekh5Um5tM2kvODI4Lzc0S0UzQlBWcXhpUWY3NFhJMG5tbVlkU0xCNGJKL1hOWUc3WGg3MCtiZkZ4OGg3WUJnMDBBTXM2Y2lLWG1BMENxZUtFeGhmVnY1cEpLMUEyVzZlR0ZhTGtVQ2h4RnJaemo0RktMU3Q1S3Jpa0c1RGh6ZnNtbWdkSmhYR0pubENwR1N0b0JIOCt5aERVMVpjSjNUSDkvMEE1T0hZMlQxb3BvTlBsc2VzaWdlbTZ2bzBuM1Fzc2RacExscWsyRTlGQ1dDVG9Oa1NvY0tuQW9nMTAzWmVkUTNOOStINUpqMSs4S1htZDJGazhMVkczZjNtNitzQVVJenAxVk9LOXN0TDJVcHZ4cHNIYnFNQ3haVmR1ZXdqUCtML285YXVEYWdhNHZsZWFLLzhwL01EL1R6SmltWFEvbHdUbG53bWlWU24yWDZPSzkwUmZFcWprQy9ySVZLcW5hemRSSTFuV1labmlYSmU2TXZMSzh0STFsWnord2lmKzlaSUFkVDJ1SHF2NnVIT1pCODlwb0ROeW5KeHlzc3J5MGpXVm5QN0NKLzcxa2dCMVBZMjhMQ1lUUVM0eVJYdjB6VkdKVTFWeXl2TFNOWldjL3NJbi92V1NBSFU5clBSUHhJa1VBT09GZFBqYUEzUitwTGl0QWNUYVcwOWdCT1RCSEFkeGwzanNEMWN4UCtrYThFRnEwVy9ObEtYejRsVXA5bCtqaXZkRVh4S281QXY2eUcrTnZEdktmdTNhZHhHdERDelBNcmV3RXFabDZOQllUUi9nN1NSUzVEVDNJeE1jSlBkTCtlYlJaQ3p4UWlLMnNzUFRZOTRsTGZ0bzJxcFp6RWh4Z1IxNFhrZmRFekZ1bitPdmhONEVwdkpWaDZyRnE1eC9zdXJ5b2xjL0tnVElVRlp3K29oVE9FWDFDZGwyNDRaS1h2YXl5dkxTTlpXYy9zSW4vdldTQUhVOWwvSC9heUhuVWpDcEFTWG5lUjhhNlRhRjJRTmRrdFl6bE16bnl4NjkyZlVPODdjajhyNml5Z2JwbEpIdThScEg4c3J5MGpXVm5QN0NKLzcxa2dCMVBhV0s3b1ZPYURJMEFkc3A4cjlCRUEzU3h6eUx3cG8zcEVTeDRLTmwwbzgzZk9GdzUyeTcvdk8vczlaSTA3VnBBbEd1eUk2STBrOUpxbUpJVExobi9FVXFDVzFvYU10SzdFbnRTdmlNMjMySlMydmdiOXI0T2Fod1IwNFdwZTM1RlZVZXZlc0kxemxKREdNbCtVRVFtSmRmQ0RhUFhvbWxkTVIydTJMYVRoOEZSS0tNMUk5RkJmNW5JaVZOZkZkOHZud1VDeWthK1l3SDhTTmNKQ3dOQWt2eXl2TFNOWldjL3NJbi92V1NBSFU5aUhxZmpVbU1tR2s1bzhrQlhudjZkV25MNElDMWRGY1RseE92VjhHYlN5L3l5dkxTTlpXYy9zSW4vdldTQUhVOWdSQ3dhU1dPU3RJTUlEazFsT2hwejNXQ2xuZ2UvQmY0MytyZWN0cmNrWWFCTGwxV1Q3UVVsWDVxNkVHRjNpMnRpSGYxWisvanc4Y0c3YXZTTFpCMUxneGtaNG1rbjQrMndEbms3Y2dWYzh1R0t4ZlZjQmxHdmsrMHd2UWNSVzJsOG1PRTNraE44TTFDNGMwUDl2cGpPQnNDb2E5RVhnN3NaanZZQ21vSUx3bTJrRmFDSEk1c3ZKbE9VS29PdExmZGNzcnkwaldWblA3Q0ovNzFrZ0IxUFpEbUtJSUxwZU9NeUdldFM2NkJZRnlobmFGblAybG9BRDNybkpFSkZQb1ZJL0p4bGtvM3hxcHovSnQwTzdISmZKWi91MzVvMTVPWmpkQ0o5dXh4TUI1M3RCTHlWWHEyQWZWcFh6ai9GQWZZcC93eSt3bUk5alFEaldMSllyWXlJbkxLOHRJMWxaeit3aWYrOVpJQWRUMmVJS0FFWEFZdXo3bTlpdlUxNDVnTUtISG53MDYxaklRN3FXc0Q2a0YwaFM4TFVNNjNrcmR3dkpGdWRaQXhGZld5eXZMU05aV2Mvc0luL3ZXU0FIVTlsNVhETG5wTDVJdHBpNkRkMWw1bkJVSGhVK054am5Hb29OTURidklJSFNuRjkwdDRrOVBGSkJHNUp4eEhDRzkwSHBMZkUxQTVjdUwvVkhqejE0RFJObW9rNnFWQ1dYdURxeENGMnovTlV2TjJaTUFZZWs5eFY0eU1MejF1NnBTVnB6UURoQzlrTlNDZXZQelJaajNoT3lhbTVxZCtLZWdra0VTT0c4a1FRZXByMmhBbGswOGVYOS9oc3pnUGdvRzhaVjdOYStnK0xDUjJJZXZ1OGQ1RDBLZzJoalVCeXd5Z1VFRnEzWmV4VzdSNHNqMzFpc0VFSFdtaWhRUEJ1NXBEQ3ZTcVJLVkZZOWlBOTQ5V09jRTF5RzlhNjFLN01zTEtBcUtvRkR6R3JBNEtEZFFvcU9XOVptWE9XM0R6ZlF6Yi9IVEpCZ0RsTk5JeG9GMHhuSEFtd01ZQXNOTlhUV1cxWjZzLzcvaUpkZmFsWHMxcjZENHNKSFloNis3eDNrUFFyUXBqQlNqdWtrTTRXcC9XaEZ5M3dkaUkzeko3eTF0THo3eVo2ZmVTc2JKS0YxSHRpK1p3WVBtdWUzN3ZzZlBxNEF6Ry9oNWMrU2RhM0VQU1hBNjBYVGNQTzJXNGZ2RUJNcjJrVkpEY0xONHVhM0NnZ0tNMmZiSTM4b0hSZ21EL2Rzam5SSWZ3c0hMaFdOalJGR2c3aUJUZWdvQk00YklPcVZqQ0dUbUVuZEdmK1hJbncrczdwMDVKSEtRamxna1VHTWtwUENOZlFiUHc4QmhRZFR4MGsrMjMzNXhEK3FHOUVJRSthUWNFbm1qTjB1ZTRhejNOY1pCeWVCVzY1MlJSTXpDZ2FzZTNQU0pMUjZZTjFQVmNmL2tRdUY4eW1tLzRWSEVVVmdaS2Flb1k1MExYUjBzOExldTQxTk9MaTIzT1hKbmE1Nk1oSHRqSGhUM1hydTQwd3Z1OVNjRTdLdXV6cnBUT0FkUGVlYVpROG9ENnVqclVZYjlreE5ScUNBYW1nOGl1a1dEUVlSS2lRQ2Z6cjE0SGlKZnhSU01KcFNkUkJHYzlrMUcxY2p5WnlCL01rUGd5bVRmQWJmQmV3Z2V3SlorejQ0dHVudWdwWTZ3bHRWTmZiWS9iRUhuNzhNd0hLeFVNQjZVamlsaDhwWk96NnFrcUoxOG9EQVRmR2JPS0V5NThtZWtQZVRlR2JZYlR6WHFZU1JHVzNFSktSS0xEelpjV2FBMFlQdHNwckozMzJCbWFLcGJEY1BiYTIrd2FoWGJieTMvb0ZHMFFwWnhybG9paDcvUGVyYkpLQklVWVhic0NXLzJScE03b3pVTmw5RXJ4Vk1NZEtGbUM1S0s0WmNMUHpQWmxIRWRIdDUvZGVkSm5Uenh2MGpsdWlnL084dlRVaUw2UUJxR3l5dkxTTlpXYy9zSW4vdldTQUhVOXFERGVTRXhzMjN0WXBXYzU0YnZqTHYxNDhJSkR4cG1iREpPa2RKTkk3NUg2dGo5RHk3V0svUWYydEVkNHZDTWpXamtkU2pjTmRXckwxV0RrVGZsNGxjNzZHeTVheHI2byttUEdsZ0lvNWdId3prVHJpbzRqQVJINlp3VFhwUmxIM2dtL1JPTTI3TVBxVHZDOEFiZmd6YmE1Z3pWd3I0VjYxTk96YVFLMU03cHZPdDNQSVRZb0Z2bUNmZGhiN1NRaWpmZGw5T3hOY29Odk1aWVdnKzF6TG5MSzh0STFsWnord2lmKzlaSUFkVDJ3RXJVSmtrQUxOSDVQWXRpSFBHQThtYzE2YUc4cW00bldWUlJFZjQrYUpleERBdkgzUHlVeFdEMUVGc0I3OTV2eXl2TFNOWldjL3NJbi92V1NBSFU5dkg3L3ZTWDFNVnRwNWpNMG1xSWRLd08xaGZ6VEZDWFp4ZG5aUW5lKzFiR3l5dkxTTlpXYy9zSW4vdldTQUhVOWo4blJtZHlQOS9hQ3ZsbWpXTnEvR3F4Z0xQRnpBaHBROUE1M1JEVWtBbXJHK1V3aHNBTklZWWVNMlZNRE5wa01Nc3J5MGpXVm5QN0NKLzcxa2dCMVBZSTRqY1lvZXlrRkl6YmlUd1M5S1lTWE5XR1M2M1FFc2laM20xazNGQXpOc3NyeTBqV1ZuUDdDSi83MWtnQjFQYVdMTVZhT1ZHNC9lMVZQVFNBelk5SDg3T0NKWGV4K2lBT29XK0tBbnJpQjNKbmE1Nk1oSHRqSGhUM1hydTQwd3RtK0NFV1h1b1k4WEVKRmR2Y0ZjSDd5eXZMU05aV2Mvc0luL3ZXU0FIVTlsTE9MZnJPUU1wQ3hRbERnMDJZSkFUTEs4dEkxbFp6K3dpZis5WklBZFQyazZndnRjMXo1YUltQnFGZ25iUTBOVEU5R0xmYk9DU0VoZCtycFk2a3l3L0xLOHRJMWxaeit3aWYrOVpJQWRUMkNWdjNvWXRNMHpNQVMxeDRYdHkrenNlYkdWNHVGbW9jUzBuTzM0ZXc4TFBMSzh0STFsWnord2lmKzlaSUFkVDJ1TEo5NktYUjM2eHl5cG1HaXBGekZPU1A1SUdDRTJsS3FzSXo2V0F2dHVUTEs4dEkxbFp6K3dpZis5WklBZFQyMXgvd0hwellicW5UQjZNQk9uT29Xa0U4ZzlXK3BaWGt5N0ZaSTNKakh5bkxLOHRJMWxaeit3aWYrOVpJQWRUMjAvM2F3b0QxSXI3ODBleXAvWGNJNjlsRVNGeDE3SFVvd3R6NkRnajZOekhMSzh0STFsWnord2lmKzlaSUFkVDJmb2tQRjZ1NmEwZWdYU0N0bExEd2N4T09jY1llcjlkZzM0V21pOWlINVY0N28yS1E2Yk5pQ08wMnBONTFHZm9PeXl2TFNOWldjL3NJbi92V1NBSFU5dmhDWWdhWCt6SjVZUGlGdS9nbjEwdzIrN2M5cG16a1ZZbW9FazBuR3FpYnl5dkxTTlpXYy9zSW4vdldTQUhVOWhQMVNrbUk1YllCbDdSR25KK1c3U2JMSzh0STFsWnord2lmKzlaSUFkVDJsaXpGV2psUnVQM3RWVDAwZ00yUFIvT3pnaVYzc2ZvZ0RxRnZpZ0o2NGdkeVoydWVqSVI3WXg0VTkxNjd1Tk1MWnZnaEZsN3FHUEZ4Q1JYYjNCWEIrd2srR2tYcjdaTzZuNnlCdEQ2YjB0M0xLOHRJMWxaeit3aWYrOVpJQWRUMmVJS0FFWEFZdXo3bTlpdlUxNDVnTUtISG53MDYxaklRN3FXc0Q2a0YwaFFlQUUvZUNyR1ViRjJiVmhOL2U4ZFRXUjh0bzd5UjR1NWhReXZVQ2NnYjhWTTlCdVpEMlladjhxZFdibXNodkdzVzIxT245WGcycDRzRHRtZEZ6SXViVzFWMjZvaWxGWXlYRlordjdFSEU4T0JFYlRhb0V3Y3ZVU0xyOFAyVXlVNGh4cGN3ZkdTM3Ftc2N1YlBNbkh1cXUrS3gxZkVpVEVrVlR6NnN6clZGZE1zcnkwaldWblA3Q0ovNzFrZ0IxUFkzR0hrM3ZUcWY3dk56OGdFc1BkY0M1clNWKzVMaWJETWtBcnRxcmVudnBPbC9Tcld3QnpkZ1ZzK3lnTStUNlRjMStnS2owRC82NG9mNWhxZkVPRHdFb2hNamswL0krUktkaTA4OURnb01iOHNyeTBqV1ZuUDdDSi83MWtnQjFQWWtZMnVSM2NHR2VORXF4Z0hmaWVpV0NmdDhZaG5rclZBRlJjN3dab2phRnUydFpJSnBPVFBqdTA2UWdVT0VFVFZSVjlTK3EwSDZsZmpuQlRuWlZ0UTl2UDNzY0ZIYmpXUmY4RlJKREtJVlEzaTJpa1FwUmRPN0l4dGs5L2ptaFNFZnFlRU9sSlN1VWpGK1Q2MERmSy9YTVdwYjZBVjIzZXBvK2haSlVkM21jMW5LMGVEeDJFZHZJczRuWXR0WlJmN0xLOHRJMWxaeit3aWYrOVpJQWRUMlcwTmlFanVCZEFoNDVJT2cvZ2lPUXBxYm1wMzRwNkNTUVJJNGJ5UkJCNm5PbERMN0R2enpzT1FuSysvYkNjNG5kMXZubG50VU52ZFVDVnRaTGVjanBCUkpkaTdLZmtyS1oyTlhTQzdieG1CY2JkQ0tTMS9TWFphRXoydzhxUDdyWU9EMTZFUFBVUVphWnA1VmVoK0dWTS96Ry9qZFRBUktvOHdkZHJtcW5IQmJWWGJxaUtVVmpKY1ZuNi9zUWNUd1FQUGI0MHErZ3c5aEFlSG5FZS82djJlU0lwQXN5dVc0WlJMVi9IM0h0N3o1R2lEa0FKb1EzUFlZMzdkSzJTSkRVZHMxNXVMb2J5ZkoxZnFzL2tFdkZvUTVtUU1UWUlwajhkVHNYUndrWmRMQmZOcGlGazhNOVE2TU5yeHBJVmVxVW9VUmFKWDJmdHBJMndoa09ETGhFeU03aDloYit6eU1lZWpZNVlIc3psR1J0QllZZ3JWM2JCWFN3L1pMZXJWeEk1U3hkZndVRENvc3hKaGcvKytFU3pCMEhOcHlnS0FaY3BvUW0veWl1VDl1WEoycnNqM3hFeTFiZ3pGelFuYnl5eXZMU05aV2Mvc0luL3ZXU0FIVTlwNmlrRVkrU3BIOURDMmUreUNtSjF6YTZXa3VndXM1N1h5bXVuOWxPUlcrUFBUQi9nc3lvdS9wbHp3aFExNlZMTXNyeTBqV1ZuUDdDSi83MWtnQjFQYVB6bVJER1hMamxtL1RVYnMyS2F2MUI2ck01WmljdXN4S1hXS3JWRDlPL1FHNEtPT3crdW1FYXRIVGhxZnY5eFBMMDk4N3BCV0U4YmlKNnN3QklvOXU5ZU9QZDRMUG5CeHVCaFoyZXUxSVhBMHErTG91RUxJeUVCTGlubGxzRFBNMGtINW4wVTU3OThWMTJCSVRGcWhXRFFtczVjOUhETnBXb0t1WVM2SkNtTGxJRWhGdHZ4WnZ2cTE0Tno2dG5xRm9ZZHNLZ3owYWpGaWcrN0ZpbWFVOXJjU1VFR2E1RjBxSWhwNGtNTXFnZnQzcVhHMCtXZWV6ZlFaOHJ1b0dQV0lSajhiOGVuR2RnUFFGMWhNd05PbGhrblpjUFBwWmo0MVZVNlQrR3psTnljc3J5MGpXVm5QN0NKLzcxa2dCMVBiK1BlMmFSZmxmM3dPdDZhNW4rNE1oWW9obk1YN09qSVJPVjVFenM0QVVDOHNyeTBqV1ZuUDdDSi83MWtnQjFQYWJCNDk3alVkTWpveUVtVUJWMzRYVjF5UlcxZTlnVUpZOEZDdmVobGQya01zcnkwaldWblA3Q0ovNzFrZ0IxUFo5NnZlRmY1bzA2SGxGaEZrRWJqVk5ydEd2a1Z2VnZObGJVbElEaStFaitPS0ZXUVYyS0h3N3hINzRFdkxKZ2lSOTNpbGNFWExBNDVOWDFmR016Zmc1S1ZMQXFUZnFpaVNqRTUzblNGUU5aaE1VaGE4dlFFUjVJV1dBQXdUZVd1dnh3MEo5Z1ovelNROVB5VzJMbVhLK3QzSFR4SkNuSzNjenVNYUFMVlY5K0l2cTI5K284MmNxRkgrODlib29YcmVLK2dwMmVPVnA2cFJlNklMMldJbll6cFF5K3c3ODg3RGtKeXZ2MnduT0oxRkkvNlp2TXdxK2RVRXREZWJXaEVuVysrRjIzYTFQemZ3L21DS1h3bDVQeXl2TFNOWldjL3NJbi92V1NBSFU5bm9HZHpWdGRhWTBFUGJiRndIbGx0VVV4VTFJeksvNWJVWVFqTjc0QlRQdFd2WkJYK1Z3OVlFTkZLdGwxMUJrenJMSEViNGJGSVlCQ3FIVGlIQUUyYWlnSEo4bW11NW5TR1R2Q1RkTzJhUTJQM1NYRFh2NkJRY1F6cTQ2aFlPdTFRQTEvTkpRTkRwb0hEMHdOU2dKclRwQ0hrbjgwYUxqRGkvL0pMaWlXVjFqckdQRXdycUlsaEsxNmNXYnZYSktiTXNyeTBqV1ZuUDdDSi83MWtnQjFQYnBUZjhCU0JIT3NFQmRBZWdibU5QRU4xR0pGcU5qL0I4VkNMUVdUR1VRRkVPQjJsb0FreElrMTUzYjhNaU5CZ1hMSzh0STFsWnord2lmKzlaSUFkVDJBOGZrWWdTeDZaMnlPbnFycVl4WngrWmpFcFNsMnFWRk1hTkV3SDMwV0ZqTEs4dEkxbFp6K3dpZis5WklBZFQyaVY3eklOMGVOemp3OXQxb3JIWmlVQXAvVC9PdzNGWEFkRkpBSzBMTG5ZaS9VZzhNc0lwZE1qWDl3OVdxazZxVnl5dkxTTlpXYy9zSW4vdldTQUhVOXBqakFmVi83L3BlMU1PSzFKQnVxWkc0VDh1RlpqaVF5NnI1MGVDVytTWS9GZmI5UjJvQmJqdFNpRzFEaUJnSFQzQVd5QVBkQXc1Yy92eUpKN0hFNmFuaFJXVFNCTXBvRXZ1a1l0Y2ZpVWgveXl2TFNOWldjL3NJbi92V1NBSFU5b0RXdWVsQXFmak03ZkNKZk9hc3dRZ2tscFdVVXlqQXN3b0R3Nk5YSDdpMFBsek5xb1pHU0R3VEtQQXVtelloSDBXU2NnZWpHRnRhYVgyV3NWTU1oRmVHajlQSG9qUXpoUFMvaHdGMSsraWxvZ2FZNWt4ZHJMRFVkVHU0K01FemxZejdQS3lROEtqeSt6d21jeVYzUzhkRSttY2FqREJRRC9GZmI4dC9oc3ZuenBReSt3Nzg4N0RrSnl2djJ3bk9KOHNyeTBqV1ZuUDdDSi83MWtnQjFQWWlES2ExazNDRm03VXNGalowV21wenpwUXkrdzc4ODdEa0p5dnYyd25PSjhzcnkwaldWblA3Q0ovNzFrZ0IxUFliMm51QkF6NUI3SHFGelRPK2NUWnltcHVhbmZpbm9KSkJFamh2SkVFSHFjNlVNdnNPL1BPdzVDY3I3OXNKemllN3Z6bE5pS2RrbU1BenZiWlA5OVVKeXl2TFNOWldjL3NJbi92V1NBSFU5bytuZmJrTzFZOXRQRDE5aFc3Y0F4dmxHaWp1dzNCYVAxSzN2b2hvN0E1Z0dxUHdkckJQZTdvODJ2NlVidmpzU3d5T0JUcGp6SzRlN3piOU1aY1NQaUd6VmNBby9LdUY2ZTZDcWczZmpUZjFmWXpYcXplTS9YN0FqQ0VjVVdLdGljc3J5MGpXVm5QN0NKLzcxa2dCMVBaYkZWWURpbWx1Q08wQUpHa2pyWFZUUE85eTVjZ1N1Q3ZVUDgrNkFXYUU1ZC9nMmFhZXBRNHFvK1dRdUJvb0FwT3g4N3dJYzZhM09BTmVwbXhKSGJ3b3l5dkxTTlpXYy9zSW4vdldTQUhVOXN0ckVYam9iWHo4ZjJHWlVVQXJxOTRUVU5FSUtMUXZ1REFsRVJEUFBVWHVjb1VmRFdYdnFBU0RHSjc0QXgwRUcrRVhNd0RxNGp4cnZXTUlUWjY2bVVWQmVIQlVMYW5nNnJ5Ky9kUlY1TjNFeXl2TFNOWldjL3NJbi92V1NBSFU5dGhHRVJ2ZlBGTHdOUkRWWmF6UTNZNHhWWENwdjl1eG01eXdOcVgrandtd3l5dkxTTlpXYy9zSW4vdldTQUhVOW56TW9CNXpSc3RmcU1US3U4UjJvbEhNSWNFR2VWTi9qTGtJY3A1ZGF0ZWxkdkdoS3JMSWp5YTExeUJwMkxNdHpQOWFJN1FodGpwUFhJUUwzWFBXNys2elJFb2toUHZkUmNKSTJUWGxIQkVab2huWm1HbWlXQzdVNG8wdWtreVBBeEVhT05uSVZ3bEQ5RHBvbHUvUXVrU01OMjNrbW1sYmdTbStJeW9mNmwxRjk0cDQ2VXMvZytpdVdIQTJzZEh1RUE3bkoydnVsaUZ4WTFPMmpmWGxLdzZXeWtTZnlhRWF1TzMvWEluWmJoOWc4OUhjaWU4eUZpQ2tqcE5KUWpMUTc1NEE1TVZIUXJBOExKbzRjZEZ5VVRwenRScVpWZnhodEM2Y3llSTRXQVlmL0VoY01INlZ0K2VLeUt2b3cyYUljN2FFcDhuYWNscHEzQ21lSmVwRWk3ajF6UitWRkU2OVF5YlVzZGI1T2dsQ3p6clZQWnJKaHY4dDQ1SmFJTHFJbHpYWHZoUmp4THFkRnFZRzYwcWszcEVQeS8rTC9VRElydlFLaTVENGdvWEZQTzl5NWNnU3VDdlVQOCs2QVdhRTVZUkdqemxFOGV1OUV6bkdKUW9NSGQ3NFMzbFZ4VStXUVMwZGdJRjBvZHJKUE85eTVjZ1N1Q3ZVUDgrNkFXYUU1VDQrUGRTQWdCTzJjSGZ1ZGw2S3lLSlI2d1B3UEZwOHBndmIydmFnVWMwVmxhM0F0NEtqQjlISmlhbkJSb216Y1RDSUJ4U1VEREVwVjF0aHBJTW1vVEZjSmk5R2t1RGZZVDJQbkx0Q3dpcERDOUE1d1MxY2hCV29FMGYyZ3hrcmRxZksydkcvL2JabzNVSkVhNnhBSW02RWUrZ1VUTmp1VkJBV0VyUFNRQnNIbk81MjlmRVR6YUdvcmNoYmJkRHpWbUdXeEJtU0JtODdqVnVoeG9jWUdER2M3bmIxOFJQTm9haXR5RnR0MFBOV2tSSVgrQlRKWU5GKzVkVjFVeEtMbTRXUWJkbVhZWWg4MlVQN05ON3BTUURPbERMN0R2enpzT1FuSysvYkNjNG51ckhVMHhEZGV1Vm1xNS9XRFQxdWhEenZjdVhJRXJncjFEL1B1Z0ZtaE9XRzk1U1dXRk9LdktueXJwSlVLVVBtN0djRzVRby9wMFB5SkFOaEovaGNLU2xabTlLUVdtKzBMVWhER1Z6V1Fac3k5UkM5SGZna3ZSVDZtbHZITHVLWVZGYXE5SGVtUnR2V2VsVmFDOXpoQVpvZVVLbmE1cDJJQXdjdHloNElSblVuMTlRUnhJZGErVHgrbktmRDRHUmdCWnhLUGFtQjZpcE02L05ub05MbGJ5cklFQkgvSHFYTUtCL0FLUlZ6bHhXbnlyQkZNM2tWQzdSemdZN3RTVkJxY0VSTUdzZ1JURUpnOHJUTk44U0ZXSCtRdTFYc0xjMDVUYTNXQ2JucFZaMXh6cWc1RktNc0IzNzdmK0xNOW9tQm9sRDBKMnBRQVRORjZQWWIvSG9DSU9PNmY0V2FwT2pZQ3d5UnF2Z1dkcjV2elcyMVNuVGREM2hZMitvU2pUb1dqL0RNYVNGeFZjWjdNb1dsMm9uOEd0R1F6R3REQUo1K1QzaGdNY2NvYzc4eFZTazRkc1lpZ3dla0cwU1hKWkk2TTN2TnJESVo4ci9aVStlV1BwdmFnZXV3aDVsSkFHejdlMmFTMlFrblZvM2ZyNzNqd2c4TlAxSXNPQjE5LytpYTA1b0pRL0FQdDdFMmFObHYwenpXNjNsQzFtQ0lia2xSYW1KcVpxYXljWUZvcUErNks2eTJheXhCdWhmdzYyMG9wY0UyeDE2OFFORE5OTGUrcVhqTWFEYW16Ym9tUE9nK2tuUEVKRW9adHVGam1Qem1yZ2pOR0NOdDNYK0ErTUdCS1Q3REZWRXU2bXpHYVFpQ2F1aDNRM0VKK1pnUG40TjJJNzZtSkZORXliWVJHampaeUZjSlEvUTZhSmJ2MExwRTR1SDlLckVxLzhjOVBsSzE4VHRUODVncDNNQ1ZkT1l6SndRSDR2ZDkrTUYrMGt5Zmd3djJZa1NGaE5mS1hxTzRmVTVzUlE2Rk5MMEE1VmdYamlUa2p5NE1DdGFDa2krZUlDRFgrVkNCTTY1VjlxZHFHei9MU0puRnhJdlE4a0J4XFxcIilcIn1dLFwicGFyYW1zXCI6XCJ7XFxcInBhdGhcXFwiOlxcXCI2NDI0ZjY0ZTc1ODIyZGFkYTdlOTRjZTk4NDU2ODdkODExYzQzMzFmXFxcIn1cIixcInNhdmVkXCI6ZmFsc2UsXCJ0aXRsZVwiOlwi6Zi/6YeM5LqR55uYXCIsXCJ2ZXJzaW9uXCI6MCxcInVybFwiOlwiaGlrZXI6Ly9wYWdlL3NoYXJlP3BhZ2U9ZnlwYWdlJnNoYXJlX3VybD1odHRwczovL3d3dy5hbGl5dW5kcml2ZS5jb20vcy9laHhXZDJDVlh2VVwiLFwiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcImZpbmRfcnVsZVwiOlwianM6XFxudmFyIGQgPSBbXTtcXG5cXG4kLmV4dGVuZCh7XFxuICAgIHRleHQ6IFtcXFwiaHRtXFxcIiwgXFxcImh0bWxcXFwiLCBcXFwieG1sXFxcIiwgXFxcImphdmFcXFwiLCBcXFwicHJvcGVydGllc1xcXCIsIFxcXCJzcWxcXFwiLCBcXFwianNcXFwiLCBcXFwibWRcXFwiLCBcXFwianNvblxcXCIsIFxcXCJjb25mXFxcIiwgXFxcImluaVxcXCIsIFxcXCJ2dWVcXFwiLCBcXFwicGhwXFxcIiwgXFxcInB5XFxcIiwgXFxcImJhdFxcXCIsIFxcXCJnaXRpZ25vcmVcXFwiLCBcXFwieW1sXFxcIiwgXFxcImdvXFxcIiwgXFxcInNoXFxcIiwgXFxcImNcXFwiLCBcXFwiY3BwXFxcIiwgXFxcImhcXFwiLCBcXFwiaHBwXFxcIiwgXFxcInRzeFxcXCJdLFxcbiAgICBhdWRpbzogW1xcXCJtcDNcXFwiLCBcXFwiZmxhY1xcXCIsIFxcXCJvZ2dcXFwiLCBcXFwibTRhXFxcIiwgXFxcIndhdlxcXCIsIFxcXCJvcHVzXFxcIl0sXFxuICAgIG1vdmllOiBbXFxcIm1wNFxcXCIsIFxcXCJta3ZcXFwiLCBcXFwiYXZpXFxcIiwgXFxcIm1vdlxcXCIsIFxcXCJybXZiXFxcIiwgXFxcIndlYm1cXFwiLCBcXFwiZmx2XFxcIiwgXFxcIm00dlxcXCIsIFxcXCJtM3U4XFxcIiwgXFxcInRzXFxcIl0sXFxuICAgIGltZzogW1xcXCJqcGdcXFwiLCBcXFwicG5nXFxcIiwgXFxcImpwZWdcXFwiLCBcXFwiZ2lmXFxcIiwgXFxcInN2Z1xcXCIsIFxcXCJyYXdcXFwiXSxcXG4gICAgc3VidGl0bGU6IFtcXFwidnR0XFxcIiwgXFxcInNydFxcXCIsIFxcXCJhc3NcXFwiXVxcbn0pXFxuXFxuZnVuY3Rpb24gZm9ybWF0RGF0ZSh0aW1lKSB7XFxuICAgIHZhciBkYXRlID0gbmV3IERhdGUodGltZSk7XFxuICAgIHZhciBZWSA9IGRhdGUuZ2V0RnVsbFllYXIoKSArICctJztcXG4gICAgdmFyIE1NID0gKGRhdGUuZ2V0TW9udGgoKSArIDEgPCAxMCA/ICcwJyArIChkYXRlLmdldE1vbnRoKCkgKyAxKSA6IGRhdGUuZ2V0TW9udGgoKSArIDEpICsgJy0nO1xcbiAgICB2YXIgREQgPSAoZGF0ZS5nZXREYXRlKCkgPCAxMCA/ICcwJyArIChkYXRlLmdldERhdGUoKSkgOiBkYXRlLmdldERhdGUoKSk7XFxuICAgIHZhciBoaCA9IChkYXRlLmdldEhvdXJzKCkgPCAxMCA/ICcwJyArIGRhdGUuZ2V0SG91cnMoKSA6IGRhdGUuZ2V0SG91cnMoKSkgKyAnOic7XFxuICAgIHZhciBtbSA9IChkYXRlLmdldE1pbnV0ZXMoKSA8IDEwID8gJzAnICsgZGF0ZS5nZXRNaW51dGVzKCkgOiBkYXRlLmdldE1pbnV0ZXMoKSkgKyAnOic7XFxuICAgIHZhciBzcyA9IChkYXRlLmdldFNlY29uZHMoKSA8IDEwID8gJzAnICsgZGF0ZS5nZXRTZWNvbmRzKCkgOiBkYXRlLmdldFNlY29uZHMoKSk7XFxuICAgIHJldHVybiBZWSArIE1NICsgREQgKyBcXFwiIFxcXCIgKyBoaCArIG1tICsgc3M7XFxufVxcbmlmIChnZXRQYXJhbShcXFwic2hhcmVfdXJsXFxcIikuc3RhcnRzV2l0aChcXFwiaHR0cHM6Ly93d3cuYWxpeXVuZHJpdmUuY29tL3MvXFxcIikpIHtcXG4gICAgdmFyIHNoYXJlVXJsID0gZ2V0UGFyYW0oXFxcInNoYXJlX3VybFxcXCIpXFxuICAgIHZhciBzaGFyZV9pZCA9IHNoYXJlVXJsLnNwbGl0KCdjb20vcy8nKVsxXS5zcGxpdChcXFwiL1xcXCIpWzBdXFxuICAgIGlmIChnZXRJdGVtKHNoYXJlX2lkLCBcXFwiXFxcIikgIT0gXFxcIlxcXCIpIHtcXG4gICAgICAgIHZhciBwYXNzd29yZCA9IGdldEl0ZW0oc2hhcmVfaWQpXFxuICAgIH0gZWxzZSBpZiAoZ2V0UGFyYW0oXFxcInBhc3N3b3JkXFxcIikpIHtcXG4gICAgICAgIHZhciBwYXNzd29yZCA9IGdldFBhcmFtKFxcXCJwYXNzd29yZFxcXCIpXFxuICAgIH0gZWxzZSB7XFxuICAgICAgICB2YXIgcGFzc3dvcmQgPSBcXFwiXFxcIlxcbiAgICB9XFxuICAgIHZhciByZXMgPSBKU09OLnBhcnNlKHBvc3QoXFxcImh0dHBzOi8vYXBpLmFsaXl1bmRyaXZlLmNvbS9hZHJpdmUvdjMvc2hhcmVfbGluay9nZXRfc2hhcmVfYnlfYW5vbnltb3VzP3NoYXJlX2lkPVxcXCIgKyBzaGFyZV9pZCwge1xcbiAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xcbiAgICAgICAgICAgIFxcXCJzaGFyZV9pZFxcXCI6IHNoYXJlX2lkXFxuICAgICAgICB9KVxcbiAgICB9KSlcXG4gICAgdmFyIHNhID0gSlNPTi5wYXJzZShwb3N0KFxcXCJodHRwczovL2FwaS5hbGl5dW5kcml2ZS5jb20vdjIvc2hhcmVfbGluay9nZXRfc2hhcmVfdG9rZW5cXFwiLCB7XFxuICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XFxuICAgICAgICAgICAgXFxcInNoYXJlX3B3ZFxcXCI6IHBhc3N3b3JkLFxcbiAgICAgICAgICAgIFxcXCJzaGFyZV9pZFxcXCI6IHNoYXJlX2lkXFxuICAgICAgICB9KVxcbiAgICB9KSlcXG4gICAgaWYgKHNhLnNoYXJlX3Rva2VuKSB7XFxuICAgICAgICB2YXIgcyA9IHNhLnNoYXJlX3Rva2VuXFxuICAgICAgICBzZXRQYWdlVGl0bGUocmVzLnNoYXJlX25hbWUpXFxuICAgICAgICB2YXIgcGF0aCA9IE1ZX1BBUkFNUy5wYXRoIHx8IFxcXCJyb290XFxcIlxcbiAgICAgICAgaWYgKE1ZX1BBR0UgPT0gMSkge1xcbiAgICAgICAgICAgIGQudW5zaGlmdCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiByZXMuY3JlYXRvcl9uYW1lLFxcbiAgICAgICAgICAgICAgICBpbWc6IHJlcy5hdmF0YXIsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiYXZhdGFyXFxcIlxcbiAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLigJzigJzigJ3igJ08c21hbGw+XFxcIiArIGZvcm1hdERhdGUoRGF0ZS5wYXJzZShyZXMudXBkYXRlZF9hdCkpICsgXFxcIjwvc21hbGw+XFxcIixcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0XzFcXFwiXFxuICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICB0aXRsZTogXFxcIuS/neWtmOWIsOaIkeeahOe9keebmFxcXCIsXFxuICAgICAgICAgICAgICAgIHVybDogYHNtYXJ0ZHJpdmU6Ly9zaGFyZS9icm93c2U/c2hhcmVJZD0ke3NoYXJlX2lkfSZzaGFyZVB3ZD0ke3Bhc3N3b3JkfWAsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCJcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi5YiH5o2i5qC35byPXFxcIixcXG4gICAgICAgICAgICAgICAgdXJsOiAkKFtcXFwibW92aWVfMV9sZWZ0X3BpY1xcXCIsIFxcXCJjYXJkX3BpY18zXFxcIiwgXFxcImF2YXRhclxcXCJdKS5zZWxlY3QoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgc2V0SXRlbShcXFwic3R5bGVcXFwiLCBpbnB1dClcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKClcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/lt7LliIfmjaJcXFwiXFxuICAgICAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfMlxcXCJcXG4gICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi5o6S5bqP77yaXFxcIiArIChnZXRNeVZhcihcXFwib3JkZXJcXFwiLCBcXFwibmFtZVxcXCIpID09IFxcXCJuYW1lXFxcIiA/IFxcXCLlkI3np7BcXFwiIDogXFxcIuaXtumXtFxcXCIpLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoXFxcIiNub1JlY29yZEhpc3RvcnkjI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IGdldE15VmFyKFxcXCJvcmRlclxcXCIsIFxcXCJuYW1lXFxcIilcXG4gICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXCJvcmRlclxcXCIsIChvID09IFxcXCJuYW1lXFxcIiA/IFxcXCJ1cGRhdGVkX2F0XFxcIiA6IFxcXCJuYW1lXFxcIikpXFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5YiH5o2i5oiQ5YqfXFxcIlxcbiAgICAgICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0XzJcXFwiXFxuICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImJsYW5rX2Jsb2NrXFxcIlxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9XFxuXFxuICAgICAgICB2YXIgZmlsZXMgPSAkLnJlcXVpcmUoXFxcImFwaVxcXCIpLnNoYXJlZ2V0ZmlsZXMoc2hhcmVfaWQsIHBhdGgsIHMpXFxuICAgICAgICBpZiAoZmlsZXMpIHtcXG4gICAgICAgICAgICBwdXRNeVZhcihwYXRoICsgXFxcIm1hcmtlclxcXCIsIGZpbGVzLm5leHRfbWFya2VyKVxcbiAgICAgICAgICAgIGxpc3QgPSBmaWxlcy5pdGVtc1xcbiAgICAgICAgICAgIGxpc3QuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xcbiAgICAgICAgICAgICAgICBsZXQgZmlsZU5hbWUgPSBpdGVtLm5hbWVcXG4gICAgICAgICAgICAgICAgbGV0IGxlbiA9IDQwO1xcbiAgICAgICAgICAgICAgICBsZXQgbGVuMiA9IGxlbiAvIDI7XFxuICAgICAgICAgICAgICAgIGlmIChmaWxlTmFtZS5sZW5ndGggPj0gbGVuKSB7XFxuICAgICAgICAgICAgICAgICAgICBmaWxlTmFtZSA9IGZpbGVOYW1lLnN1YnN0cigwLCBsZW4yKSArICcuLi4nICsgZmlsZU5hbWUuc3Vic3RyKGZpbGVOYW1lLmxlbmd0aCAtIGxlbjIpO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogZmlsZU5hbWUsXFxuICAgICAgICAgICAgICAgICAgICBkZXNjOiBmb3JtYXREYXRlKERhdGUucGFyc2UoaXRlbS51cGRhdGVkX2F0KSksXFxuICAgICAgICAgICAgICAgICAgICBpbWc6IChpdGVtLnRodW1ibmFpbCA/IGl0ZW0udGh1bWJuYWlsIDogKGl0ZW0udHlwZSA9PSBcXFwiZm9sZGVyXFxcIiA/IFxcXCJodHRwczovL2dpdGNvZGUubmV0L3FxXzMyMzk0MzUxL2RyLy0vcmF3L21hc3Rlci9pbWcv5paH5Lu257G75Z6LMi/mlofku7blpLkuc3ZnXFxcIiA6ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXCIpLmdldEljb24oaXRlbS5uYW1lKSkpLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAoaXRlbS50eXBlID09IFxcXCJmb2xkZXJcXFwiID8gXFxcImhpa2VyOi8vcGFnZS9zaGFyZT9wYWdlPWZ5cGFnZSZzaGFyZV91cmw9XFxcIiArIGdldFBhcmFtKFxcXCJzaGFyZV91cmxcXFwiKSA6ICQoKS5sYXp5UnVsZSgoc2hhcmVfaWQsIGlkLCBuYW1lLCBzKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXCIpLnNoYXJlY2h1bGkoc2hhcmVfaWQsIGlkLCBuYW1lLCBzKVxcbiAgICAgICAgICAgICAgICAgICAgfSwgc2hhcmVfaWQsIGl0ZW0uZmlsZV9pZCwgaXRlbS5uYW1lLCBzKSksXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogZ2V0SXRlbShcXFwic3R5bGVcXFwiLCBcXFwibW92aWVfM1xcXCIpLFxcbiAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBpdGVtLmZpbGVfaWRcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfVxcbiAgICB9IGVsc2UgaWYgKHNhLmNvZGUgPT0gXFxcIlNoYXJlTGluay5DYW5jZWxsZWRcXFwiKSB7XFxuICAgICAgICBzZXRSZXN1bHQoW3tcXG4gICAgICAgICAgICB0aXRsZTogXFxcIuadpeaZmuS6hu+8jOWIhuS6q+iiq+WPlua2iOS6huCyoF/gsqBcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCJcXG4gICAgICAgIH1dKVxcbiAgICB9IGVsc2UgaWYgKHNhLmNvZGUgPT0gXFxcIlNoYXJlTGluay5Gb3JiaWRkZW5cXFwiKSB7XFxuICAgICAgICBzZXRSZXN1bHQoW3tcXG4gICAgICAgICAgICB0aXRsZTogXFxcIuadpeaZmuS6hu+8jOWIhuS6q+iiq+WwgeemgeS6huCyoF/gsqBcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCJcXG4gICAgICAgIH1dKVxcbiAgICB9IGVsc2UgaWYgKHNhLmNvZGUgPT0gXFxcIlNoYXJlTGluay5FeHBpcmVkXFxcIikge1xcbiAgICAgICAgc2V0UmVzdWx0KFt7XFxuICAgICAgICAgICAgdGl0bGU6IFxcXCLmnaXmmZrkuobvvIzliIbkuqvov4fmnJ/kuobgsqBf4LKgXFxcIixcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiXFxuICAgICAgICB9XSlcXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIHNldFJlc3VsdChbe1xcbiAgICAgICAgICAgIHRpdGxlOiBcXFwi6K+36L6T5YWl5o+Q5Y+W56CBXFxcIixcXG4gICAgICAgICAgICB1cmw6ICQoXFxcIlxcXCIpLmlucHV0KChzaGFyZV9pZCkgPT4ge1xcbiAgICAgICAgICAgICAgICBzZXRJdGVtKHNoYXJlX2lkLCBpbnB1dClcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKVxcbiAgICAgICAgICAgIH0sIHNoYXJlX2lkKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiXFxuICAgICAgICB9XSlcXG4gICAgfVxcbn1cXG5zZXRSZXN1bHQoZCk7XCIsXCJncm91cFwiOlwi6KeG6aKRXCIsXCJ1YVwiOlwibW9iaWxlXCIsXCJwcmVSdWxlXCI6XCIkLmV4dGVuZCh7XFxuICAgIHRleHQ6IFtcXFwiaHRtXFxcIiwgXFxcImh0bWxcXFwiLCBcXFwieG1sXFxcIiwgXFxcImphdmFcXFwiLCBcXFwicHJvcGVydGllc1xcXCIsIFxcXCJzcWxcXFwiLCBcXFwianNcXFwiLCBcXFwibWRcXFwiLCBcXFwianNvblxcXCIsIFxcXCJjb25mXFxcIiwgXFxcImluaVxcXCIsIFxcXCJ2dWVcXFwiLCBcXFwicGhwXFxcIiwgXFxcInB5XFxcIiwgXFxcImJhdFxcXCIsIFxcXCJnaXRpZ25vcmVcXFwiLCBcXFwieW1sXFxcIiwgXFxcImdvXFxcIiwgXFxcInNoXFxcIiwgXFxcImNcXFwiLCBcXFwiY3BwXFxcIiwgXFxcImhcXFwiLCBcXFwiaHBwXFxcIiwgXFxcInRzeFxcXCJdLFxcbiAgICBhdWRpbzogW1xcXCJtcDNcXFwiLCBcXFwiZmxhY1xcXCIsIFxcXCJvZ2dcXFwiLCBcXFwibTRhXFxcIiwgXFxcIndhdlxcXCIsIFxcXCJvcHVzXFxcIl0sXFxuICAgIG1vdmllOiBbXFxcIm1wNFxcXCIsIFxcXCJta3ZcXFwiLCBcXFwiYXZpXFxcIiwgXFxcIm1vdlxcXCIsIFxcXCJybXZiXFxcIiwgXFxcIndlYm1cXFwiLCBcXFwiZmx2XFxcIiwgXFxcIm00dlxcXCIsIFxcXCJtM3U4XFxcIiwgXFxcInRzXFxcIl0sXFxuICAgIGltZzogW1xcXCJqcGdcXFwiLCBcXFwicG5nXFxcIiwgXFxcImpwZWdcXFwiLCBcXFwiZ2lmXFxcIiwgXFxcInN2Z1xcXCIsIFxcXCJyYXdcXFwiXSxcXG4gICAgc3VidGl0bGU6IFtcXFwidnR0XFxcIiwgXFxcInNydFxcXCIsIFxcXCJhc3NcXFwiXVxcbn0pXCIsXCJwYWdlc1wiOlwiW3tcXFwiY29sX3R5cGVcXFwiOlxcXCJ0ZXh0XzFcXFwiLFxcXCJuYW1lXFxcIjpcXFwi5Li76aG1XFxcIixcXFwicGF0aFxcXCI6XFxcImhvbWVcXFwiLFxcXCJydWxlXFxcIjpcXFwianM6XFxcXG52YXIgZCA9IFtdO1xcXFxuaWYgKCFmaWxlRXhpc3QoXFxcXFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL0pvZS9hbGkuanNvblxcXFxcXFwiKSkge1xcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiBcXFxcXFxcIueZu+mZhuS7peW8gOWQr1xcXFxcXFwiLFxcXFxuICAgICAgICB1cmw6IFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2xvZ2luXFxcXFxcXCIsXFxcXG4gICAgICAgIGNvbF90eXBlOiBcXFxcXFxcInRleHRfY2VudGVyXzFcXFxcXFxcIlxcXFxuICAgIH0pXFxcXG59IGVsc2Uge1xcXFxuICAgIGZ1bmN0aW9uIGZvcm1hdERhdGUodGltZSkge1xcXFxuICAgICAgICB2YXIgZGF0ZSA9IG5ldyBEYXRlKHRpbWUpO1xcXFxuICAgICAgICB2YXIgWVkgPSBkYXRlLmdldEZ1bGxZZWFyKCkgKyAnLSc7XFxcXG4gICAgICAgIHZhciBNTSA9IChkYXRlLmdldE1vbnRoKCkgKyAxIDwgMTAgPyAnMCcgKyAoZGF0ZS5nZXRNb250aCgpICsgMSkgOiBkYXRlLmdldE1vbnRoKCkgKyAxKSArICctJztcXFxcbiAgICAgICAgdmFyIEREID0gKGRhdGUuZ2V0RGF0ZSgpIDwgMTAgPyAnMCcgKyAoZGF0ZS5nZXREYXRlKCkpIDogZGF0ZS5nZXREYXRlKCkpO1xcXFxuICAgICAgICB2YXIgaGggPSAoZGF0ZS5nZXRIb3VycygpIDwgMTAgPyAnMCcgKyBkYXRlLmdldEhvdXJzKCkgOiBkYXRlLmdldEhvdXJzKCkpICsgJzonO1xcXFxuICAgICAgICB2YXIgbW0gPSAoZGF0ZS5nZXRNaW51dGVzKCkgPCAxMCA/ICcwJyArIGRhdGUuZ2V0TWludXRlcygpIDogZGF0ZS5nZXRNaW51dGVzKCkpICsgJzonO1xcXFxuICAgICAgICB2YXIgc3MgPSAoZGF0ZS5nZXRTZWNvbmRzKCkgPCAxMCA/ICcwJyArIGRhdGUuZ2V0U2Vjb25kcygpIDogZGF0ZS5nZXRTZWNvbmRzKCkpO1xcXFxuICAgICAgICByZXR1cm4gWVkgKyBNTSArIEREICsgXFxcXFxcXCIgXFxcXFxcXCIgKyBoaCArIG1tICsgc3M7XFxcXG4gICAgfVxcXFxuXFxcXG4gICAgaWYgKE1ZX1BBR0UgPT0gMSkge1xcXFxuICAgICAgICBsZXQgY29uZmlnID0gSlNPTi5wYXJzZShmZXRjaChcXFxcXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvSm9lL2FsaS5qc29uXFxcXFxcXCIpKVxcXFxuICAgICAgICBpZihuZXcgRGF0ZSgpLmdldFRpbWUoKT49Y29uZmlnLnRpbWVfZXhwaXJlKXtcXFxcbiAgICAgICAgICAgICQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vcGFnZS9hcGlcXFxcXFxcIikucmVmcmVzaFRva2VuKCk7XFxcXG4gICAgICAgICAgICBsb2coJ+WIt+aWsHRva2VuJyk7XFxcXG4gICAgICAgICAgICBjb25maWcgPSBKU09OLnBhcnNlKGZldGNoKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9Kb2UvYWxpLmpzb25cXFxcXFxcIikpXFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgZC51bnNoaWZ0KHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiBjb25maWcubmlja19uYW1lLFxcXFxuICAgICAgICAgICAgaW1nOiBjb25maWcuYXZhdGFyLFxcXFxuICAgICAgICAgICAgdXJsOiAkKFxcXFxcXFwi56Gu6K6k6YCA5Ye655m76ZmG77yfXFxcXFxcXCIpLmNvbmZpcm0oKCkgPT4ge1xcXFxuICAgICAgICAgICAgICAgIGRlbGV0ZUZpbGUoXFxcXFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL0pvZS9hbGkuanNvblxcXFxcXFwiKVxcXFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKClcXFxcbiAgICAgICAgICAgIH0pLFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwiYXZhdGFyXFxcXFxcXCJcXFxcbiAgICAgICAgfSwge1xcXFxuICAgICAgICAgICAgZGVzYzogXFxcXFxcXCLmkJzntKLmiJHnmoTmlofku7bmiJbovpPlhaXliIbkuqvpk77mjqVcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFxcXFxcImlucHV0XFxcXFxcXCIsXFxcXG4gICAgICAgICAgICB1cmw6IFxcXFxcXFwiJ2hpa2VyOi8vcGFnZS9zZWFyY2g/a3c9JytpbnB1dCsnJnA9ZnlwYWdlI25vUmVmcmVzaCMnXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICBleHRyYToge1xcXFxuICAgICAgICAgICAgICAgIHRpdGxlVmlzaWJsZTogZmFsc2UsXFxcXG4gICAgICAgICAgICAgICAgb25DaGFuZ2U6IFxcXFxcXFwicHV0TXlWYXIoJ2t3JyxpbnB1dClcXFxcXFxcIlxcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICB9KVxcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgdGl0bGU6IFxcXFxcXFwi5YiH5o2i5qC35byPXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICB1cmw6ICQoW1xcXFxcXFwibW92aWVfMV9sZWZ0X3BpY1xcXFxcXFwiLCBcXFxcXFxcImNhcmRfcGljXzNcXFxcXFxcIiwgXFxcXFxcXCJhdmF0YXJcXFxcXFxcIl0pLnNlbGVjdCgoKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgc2V0SXRlbShcXFxcXFxcInN0eWxlXFxcXFxcXCIsIGlucHV0KVxcXFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKClcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL+W3suWIh+aNolxcXFxcXFwiXFxcXG4gICAgICAgICAgICB9KSxcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFxcXFxcInRleHRfMlxcXFxcXFwiXFxcXG4gICAgICAgIH0sIHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiBcXFxcXFxcIuaOkuW6jzpcXFxcXFxcIiArIChnZXRNeVZhcihcXFxcXFxcIm9yZGVyXFxcXFxcXCIsIFxcXFxcXFwibmFtZVxcXFxcXFwiKSA9PSBcXFxcXFxcIm5hbWVcXFxcXFxcIiA/IFxcXFxcXFwi5ZCN56ewXFxcXFxcXCIgOiBcXFxcXFxcIuaXtumXtFxcXFxcXFwiKSxcXFxcbiAgICAgICAgICAgIHVybDogJChcXFxcXFxcIiNub1JlY29yZEhpc3RvcnkjI25vTG9hZGluZyNcXFxcXFxcIikubGF6eVJ1bGUoKCkgPT4ge1xcXFxuICAgICAgICAgICAgICAgIHZhciBvID0gZ2V0TXlWYXIoXFxcXFxcXCJvcmRlclxcXFxcXFwiLCBcXFxcXFxcIm5hbWVcXFxcXFxcIilcXFxcbiAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFxcXFxcIm9yZGVyXFxcXFxcXCIsIChvID09IFxcXFxcXFwibmFtZVxcXFxcXFwiID8gXFxcXFxcXCJ1cGRhdGVkX2F0XFxcXFxcXCIgOiBcXFxcXFxcIm5hbWVcXFxcXFxcIikpXFxcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKVxcXFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcInRvYXN0Oi8v5YiH5o2i5oiQ5YqfXFxcXFxcXCJcXFxcbiAgICAgICAgICAgIH0pLFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwidGV4dF8yXFxcXFxcXCJcXFxcbiAgICAgICAgfSwge1xcXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwiYmxhbmtfYmxvY2tcXFxcXFxcIlxcXFxuICAgICAgICB9KVxcXFxuICAgIH1cXFxcblxcXFxuICAgIHZhciBwYXRoID0gTVlfUEFSQU1TLnBhdGggfHwgXFxcXFxcXCJyb290XFxcXFxcXCJcXFxcbiAgICBcXFxcbiAgICBcXFxcbiAgICB2YXIgZmlsZXM9JC5yZXF1aXJlKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXFxcXFwiKS5nZXRGaWxlcyhwYXRoKVxcXFxuICAgIFxcXFxuICAgIGlmIChmaWxlcy5pdGVtcyE9dW5kZWZpbmVkKSB7XFxcXG4gICAgICAgIHB1dE15VmFyKHBhdGggKyBcXFxcXFxcIm1hcmtlclxcXFxcXFwiLCBmaWxlcy5uZXh0X21hcmtlcilcXFxcbiAgICAgICAgdmFyIGxpc3QgPSBmaWxlcy5pdGVtc1xcXFxuICAgICAgICBsaXN0LmZvckVhY2goKGl0ZW0sIGkpID0+IHtcXFxcbiAgICAgICAgICAgIGxldCBmaWxlTmFtZSA9IGl0ZW0ubmFtZVxcXFxuICAgICAgICAgICAgbGV0IGxlbiA9IDQwO1xcXFxuICAgICAgICAgICAgbGV0IGxlbjIgPSBsZW4gLyAyO1xcXFxuICAgICAgICAgICAgaWYgKGZpbGVOYW1lLmxlbmd0aCA+PSBsZW4pIHtcXFxcbiAgICAgICAgICAgICAgICBmaWxlTmFtZSA9IGZpbGVOYW1lLnN1YnN0cigwLCBsZW4yKSArICcuLi4nICsgZmlsZU5hbWUuc3Vic3RyKGZpbGVOYW1lLmxlbmd0aCAtIGxlbjIpO1xcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogZmlsZU5hbWUsXFxcXG4gICAgICAgICAgICAgICAgaW1nOiAoaXRlbS50aHVtYm5haWwgPyBpdGVtLnRodW1ibmFpbCA6IChpdGVtLnR5cGUgPT0gXFxcXFxcXCJmb2xkZXJcXFxcXFxcIiA/IFxcXFxcXFwiaHR0cHM6Ly9naXRjb2RlLm5ldC9xcV8zMjM5NDM1MS9kci8tL3Jhdy9tYXN0ZXIvaW1nL+aWh+S7tuexu+WeizIv5paH5Lu25aS5LnN2Z1xcXFxcXFwiIDogJC5yZXF1aXJlKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXFxcXFwiKS5nZXRJY29uKGl0ZW0ubmFtZSkpKSxcXFxcbiAgICAgICAgICAgICAgICB1cmw6IChpdGVtLnR5cGUgPT0gXFxcXFxcXCJmb2xkZXJcXFxcXFxcIiA/IFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2hvbWU/cGFnZT1meXBhZ2VcXFxcXFxcIiA6ICQoKS5sYXp5UnVsZSgoaWQsIG5hbWUsIHVybCkgPT4ge1xcXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJC5yZXF1aXJlKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXFxcXFwiKS5jaHVsaShpZCwgbmFtZSwgdXJsKVxcXFxuICAgICAgICAgICAgICAgIH0sIGl0ZW0uZmlsZV9pZCwgaXRlbS5uYW1lLCBpdGVtLnVybCkpLFxcXFxuICAgICAgICAgICAgICAgIGRlc2M6IGZvcm1hdERhdGUoRGF0ZS5wYXJzZShpdGVtLnVwZGF0ZWRfYXQpKSxcXFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogZ2V0SXRlbShcXFxcXFxcInN0eWxlXFxcXFxcXCIsIFxcXFxcXFwibW92aWVfM1xcXFxcXFwiKSxcXFxcbiAgICAgICAgICAgICAgICBleHRyYToge1xcXFxuICAgICAgICAgICAgICAgICAgICBwYXRoOiBpdGVtLmZpbGVfaWRcXFxcbiAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICB9KVxcXFxuICAgICAgICB9KVxcXFxuICAgIH1lbHNle1xcXFxuICAgICAgICBpZihmaWxlcz09ZmFsc2Upe1xcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgdGl0bGU6J+KAnOKAnOKAneKAnTxzbWFsbD48Zm9udCBjb2xvcj1cXFxcXFxcImdyZXlcXFxcXFxcIj7liKvliJLkuobliLDlupXkuoY8L2ZvbnQ+PC9zbWFsbD4nLFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6J3RleHRfY2VudGVyXzEnLFxcXFxuICAgICAgICAgICAgdXJsOidoaWtlcjovL2VtcHR5JywgICAgICAgICAgICBcXFxcbiAgICAgICAgICB9KVxcXFxuICAgICAgICB9ZWxzZXtcXFxcbiAgICAgICAgICAgICQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vcGFnZS9hcGlcXFxcXFxcIikucmVmcmVzaFRva2VuKCk7XFxcXG4gICAgICAgICAgICBsb2coJ+WIt+aWsHRva2VuJyk7XFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICB0aXRsZTon4oCc4oCc4oCd4oCdPHNtYWxsPjxmb250IGNvbG9yPVxcXFxcXFwiZ3JleVxcXFxcXFwiPuiOt+WPluWksei0peivt+mHjeivlTwvZm9udD48L3NtYWxsPicsXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTondGV4dF9jZW50ZXJfMScsXFxcXG4gICAgICAgICAgICB1cmw6J2hpa2VyOi8vZW1wdHknLCAgICAgICAgICAgIFxcXFxuICAgICAgICAgIH0pXFxcXG4gICAgICAgIH1cXFxcbiAgICB9XFxcXG59XFxcXG5zZXRSZXN1bHQoZCk7XFxcXG5cXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLnmbvpmYZcXFwiLFxcXCJwYXRoXFxcIjpcXFwibG9naW5cXFwiLFxcXCJydWxlXFxcIjpcXFwianM6XFxcXG52YXIgZCA9IFtdO1xcXFxubGV0IHVybCA9ICdodHRwczovL2F1dGguYWxpeXVuZHJpdmUuY29tL3YyL29hdXRoL2F1dGhvcml6ZT9sb2dpbl90eXBlPWN1c3RvbSZyZXNwb25zZV90eXBlPWNvZGUmcmVkaXJlY3RfdXJpPWh0dHBzJTNBJTJGJTJGd3d3LmFsaXl1bmRyaXZlLmNvbSUyRnNpZ24lMkZjYWxsYmFjayZjbGllbnRfaWQ9MjVkelgzdmJZcWt0Vnh5WCZzdGF0ZT0lN0IlMjJvcmlnaW4lMjIlM0ElMjIqJTIyJTdEIy9sb2dpbidcXFxcbnZhciBqcyA9ICQudG9TdHJpbmcoKCkgPT4ge1xcXFxuICAgIGNvbnN0IHRva2VuRnVuY3Rpb24gPSBmdW5jdGlvbigpIHtcXFxcbiAgICAgICAgdmFyIHRva2VuID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndG9rZW4nKSlcXFxcbiAgICAgICAgaWYgKHRva2VuICYmIHRva2VuLnVzZXJfaWQpIHtcXFxcbiAgICAgICAgICAgIGxldCB0b2tlbl91cmwgPSAnaGlrZXI6Ly9maWxlcy9ydWxlcy9Kb2UvYWxpLmpzb24nO1xcXFxuICAgICAgICAgICAgZnlfYnJpZGdlX2FwcC53cml0ZUZpbGUodG9rZW5fdXJsLCBKU09OLnN0cmluZ2lmeSh0b2tlbikpXFxcXG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2UuY2xlYXIoKTtcXFxcbiAgICAgICAgICAgIGFsZXJ0KCdUT0tFTuiOt+WPluaIkOWKn++8jOivt+WLv+azhOa8j+S4quS6uumakOengSHpgIDlh7ror6XpobXpnaLlkI7liLfmlrDph43or5XvvIEnKTtcXFxcbiAgICAgICAgICAgIGZ5X2JyaWRnZV9hcHAuYmFjaygpO1xcXFxuICAgICAgICAgICAgcmV0dXJuO1xcXFxuICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgdG9rZW5fdGltZXIoKTtcXFxcbiAgICAgICAgfVxcXFxuICAgIH1cXFxcbiAgICB2YXIgdG9rZW5fdGltZXIgPSBmdW5jdGlvbigpIHtcXFxcbiAgICAgICAgc2V0VGltZW91dCh0b2tlbkZ1bmN0aW9uLCAzMDApXFxcXG4gICAgfTtcXFxcbiAgICB0b2tlbl90aW1lcigpO1xcXFxuICAgIHRva2VuRnVuY3Rpb24oKTtcXFxcbn0pXFxcXG5kLnB1c2goe1xcXFxuICAgIHVybDogdXJsLFxcXFxuICAgIGNvbF90eXBlOiAneDVfd2Vidmlld19zaW5nbGUnLFxcXFxuICAgIGRlc2M6ICcxMDAlJiZmbG9hdCcsXFxcXG4gICAgZXh0cmE6IHtcXFxcbiAgICAgICAgY2FuQmFjazogdHJ1ZSxcXFxcbiAgICAgICAganM6IGpzXFxcXG4gICAgfVxcXFxufSlcXFxcbnNldFJlc3VsdChkKTtcXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCJhcGlcXFwiLFxcXCJwYXRoXFxcIjpcXFwiYXBpXFxcIixcXFwicnVsZVxcXCI6XFxcInZhciByZWZyZXNoVG9rZW4gPSBmdW5jdGlvbigpIHtcXFxcbiAgICB2YXIgdXJsID0gXFxcXFxcXCJodHRwczovL2F1dGguYWxpeXVuZHJpdmUuY29tL3YyL2FjY291bnQvdG9rZW5cXFxcXFxcIlxcXFxuICAgIHZhciBjb25maWcgPSBKU09OLnBhcnNlKGZldGNoKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9Kb2UvYWxpLmpzb25cXFxcXFxcIikpXFxcXG4gICAgdmFyIHJlcyA9IEpTT04ucGFyc2UocG9zdCh1cmwsIHtcXFxcbiAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xcXFxuICAgICAgICAgICAgXFxcXFxcXCJyZWZyZXNoX3Rva2VuXFxcXFxcXCI6IGNvbmZpZy5yZWZyZXNoX3Rva2VuLFxcXFxuICAgICAgICAgICAgXFxcXFxcXCJncmFudF90eXBlXFxcXFxcXCI6IFxcXFxcXFwicmVmcmVzaF90b2tlblxcXFxcXFwiXFxcXG4gICAgICAgIH0pXFxcXG4gICAgfSkpXFxcXG4gICAgY29uZmlnW1xcXFxcXFwicmVmcmVzaF90b2tlblxcXFxcXFwiXSA9IHJlcy5yZWZyZXNoX3Rva2VuXFxcXG4gICAgY29uZmlnW1xcXFxcXFwiYWNjZXNzX3Rva2VuXFxcXFxcXCJdID0gcmVzLmFjY2Vzc190b2tlblxcXFxuICAgIGNvbmZpZ1tcXFxcXFxcImV4cGlyZV90aW1lXFxcXFxcXCJdID0gcmVzLmV4cGlyZV90aW1lXFxcXG4gICAgY29uZmlnW1xcXFxcXFwidGltZV9leHBpcmVcXFxcXFxcIl0gPSBuZXcgRGF0ZSgpLmdldFRpbWUoKSArIDcyMDAgKiAxMDAwXFxcXG4gICAgd3JpdGVGaWxlKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9Kb2UvYWxpLmpzb25cXFxcXFxcIiwgSlNPTi5zdHJpbmdpZnkoY29uZmlnKSlcXFxcbn1cXFxcbnZhciBnZXRGaWxlcyA9IGZ1bmN0aW9uKGlkLCBkaWQpIHtcXFxcbiAgICB2YXIgdXJsID0gXFxcXFxcXCJodHRwczovL2FwaS5hbGl5dW5kcml2ZS5jb20vYWRyaXZlL3YzL2ZpbGUvbGlzdFxcXFxcXFwiXFxcXG4gICAgdmFyIGNvbmZpZyA9IEpTT04ucGFyc2UoZmV0Y2goXFxcXFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL0pvZS9hbGkuanNvblxcXFxcXFwiKSlcXFxcbiAgICB2YXIgZGVmID0gZGlkID8gZGlkIDogY29uZmlnLmRlZmF1bHRfZHJpdmVfaWRcXFxcbiAgICAvL2xvZyhpZClcXFxcbiAgICB2YXIgZGF0YSA9IHtcXFxcbiAgICAgICAgXFxcXFxcXCJkcml2ZV9pZFxcXFxcXFwiOiBkZWYsXFxcXG4gICAgICAgIFxcXFxcXFwicGFyZW50X2ZpbGVfaWRcXFxcXFxcIjogaWQsXFxcXG4gICAgICAgIFxcXFxcXFwidG9rZW5fdHlwZVxcXFxcXFwiOiAnQmVhcmVyJyxcXFxcbiAgICAgICAgXFxcXFxcXCJsaW1pdFxcXFxcXFwiOiAxMDAsXFxcXG4gICAgICAgIFxcXFxcXFwiYWxsXFxcXFxcXCI6IHRydWUsXFxcXG4gICAgICAgIFxcXFxcXFwidXJsX2V4cGlyZV9zZWNcXFxcXFxcIjogMTYwMCxcXFxcbiAgICAgICAgXFxcXFxcXCJpbWFnZV90aHVtYm5haWxfcHJvY2Vzc1xcXFxcXFwiOiBcXFxcXFxcImltYWdlL3Jlc2l6ZSx3XzQwMC9mb3JtYXQsanBlZ1xcXFxcXFwiLFxcXFxuICAgICAgICBcXFxcXFxcImltYWdlX3VybF9wcm9jZXNzXFxcXFxcXCI6IFxcXFxcXFwiaW1hZ2UvcmVzaXplLHdfMTkyMC9mb3JtYXQsanBlZ1xcXFxcXFwiLFxcXFxuICAgICAgICBcXFxcXFxcInZpZGVvX3RodW1ibmFpbF9wcm9jZXNzXFxcXFxcXCI6IFxcXFxcXFwidmlkZW8vc25hcHNob3QsdF8xMDAwLGZfanBnLGFyX2F1dG8sd18zMDBcXFxcXFxcIixcXFxcbiAgICAgICAgXFxcXFxcXCJmaWVsZHNcXFxcXFxcIjogXFxcXFxcXCIqXFxcXFxcXCIsXFxcXG4gICAgICAgIFxcXFxcXFwib3JkZXJfYnlcXFxcXFxcIjogZ2V0TXlWYXIoXFxcXFxcXCJvcmRlclxcXFxcXFwiLCBcXFxcXFxcIm5hbWVcXFxcXFxcIiksXFxcXG4gICAgICAgIFxcXFxcXFwib3JkZXJfZGlyZWN0aW9uXFxcXFxcXCI6IFxcXFxcXFwiQVNDXFxcXFxcXCJcXFxcbiAgICB9XFxcXG4gICAgLy9sb2coZ2V0TXlWYXIoaWQgKyBcXFxcXFxcIm1hcmtlclxcXFxcXFwiKSlcXFxcbiAgICBpZiAoTVlfUEFHRSAhPSAxICYmIGdldE15VmFyKGlkICsgXFxcXFxcXCJtYXJrZXJcXFxcXFxcIiwgXFxcXFxcXCJcXFxcXFxcIikgPT0gXFxcXFxcXCJcXFxcXFxcIikge1xcXFxuXFxcXG4gICAgICAgIHJldHVybiBmYWxzZVxcXFxuICAgIH0gZWxzZSB7XFxcXG4gICAgICAgIGRhdGEubWFya2VyID0gZ2V0TXlWYXIoaWQgKyBcXFxcXFxcIm1hcmtlclxcXFxcXFwiKSAhPSAndW5kZWZpbmVkJyA/IGdldE15VmFyKGlkICsgXFxcXFxcXCJtYXJrZXJcXFxcXFxcIikgOiAnJ1xcXFxuICAgICAgICBjbGVhck15VmFyKGlkICsgXFxcXFxcXCJtYXJrZXJcXFxcXFxcIilcXFxcbiAgICAgICAgbGV0IHJlcyA9IHBvc3QodXJsLCB7XFxcXG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeShkYXRhKSxcXFxcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcXFxcbiAgICAgICAgICAgICAgICBcXFxcXFxcImF1dGhvcml6YXRpb25cXFxcXFxcIjogY29uZmlnLmFjY2Vzc190b2tlblxcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICB9KVxcXFxuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShyZXMpXFxcXG4gICAgfVxcXFxufVxcXFxudmFyIGNodWxpID0gZnVuY3Rpb24oaWQsIG5hbWUsIHVybCwgZGlkKSB7XFxcXG4gICAgdmFyIGNvbmZpZyA9IEpTT04ucGFyc2UoZmV0Y2goXFxcXFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL0pvZS9hbGkuanNvblxcXFxcXFwiKSlcXFxcbiAgICB2YXIgZGlkID0gZGlkID8gZGlkIDogY29uZmlnLmRlZmF1bHRfZHJpdmVfaWRcXFxcbiAgICBsZXQge1xcXFxuICAgICAgICBnZXRIem0sXFxcXG4gICAgICAgIHB1c2hcXFxcbiAgICB9ID0gJC5yZXF1aXJlKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXFxcXFwiKVxcXFxuICAgIHZhciBIem0gPSBnZXRIem0obmFtZSlcXFxcbiAgICBpZiAoJC5tb3ZpZS5pbmNsdWRlcyhIem0pKSB7XFxcXG4gICAgICAgIGxldCBwdXJsID0gXFxcXFxcXCJodHRwczovL2FwaS5hbGl5dW5kcml2ZS5jb20vYWRyaXZlL3YyL2ZpbGUvZ2V0X3ZpZGVvX3ByZXZpZXdfcGxheV9pbmZvXFxcXFxcXCJcXFxcbiAgICAgICAgdmFyIHVybHMgPSBbXVxcXFxuICAgICAgICB2YXIgbmFtZXMgPSBbXFxcXFxcXCLljp/nlLtcXFxcXFxcIl1cXFxcbiAgICAgICAgdXJscy5wdXNoKHVybCArIFxcXFxcXFwiI2lzVmlkZW89dHJ1ZSNcXFxcXFxcIilcXFxcbiAgICAgICAgbGV0IHB1ID0gcG9zdChwdXJsLCB7XFxcXG4gICAgICAgICAgICBoZWFkZXJzOiB7XFxcXG4gICAgICAgICAgICAgICAgXFxcXFxcXCJhdXRob3JpemF0aW9uXFxcXFxcXCI6IGNvbmZpZy5hY2Nlc3NfdG9rZW5cXFxcbiAgICAgICAgICAgIH0sXFxcXG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XFxcXG4gICAgICAgICAgICAgICAgXFxcXFxcXCJkcml2ZV9pZFxcXFxcXFwiOiBkaWQsXFxcXG4gICAgICAgICAgICAgICAgXFxcXFxcXCJjYXRlZ29yeVxcXFxcXFwiOiBcXFxcXFxcImxpdmVfdHJhbnNjb2RpbmdcXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICBcXFxcXFxcImZpbGVfaWRcXFxcXFxcIjogaWQsXFxcXG4gICAgICAgICAgICAgICAgXFxcXFxcXCJ0ZW1wbGF0ZV9pZFxcXFxcXFwiOiBcXFxcXFxcIlxcXFxcXFwiXFxcXG4gICAgICAgICAgICB9KVxcXFxuICAgICAgICB9KVxcXFxuICAgICAgICBjb25zdCB0cmFuc2NvZGluZyA9IHtcXFxcbiAgICAgICAgICAgIFVIRDogXFxcXFxcXCI0SyDotoXmuIVcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIFFIRDogXFxcXFxcXCIySyDotoXmuIVcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIEZIRDogXFxcXFxcXCIxMDgwIOWFqOmrmOa4hVxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgSEQ6IFxcXFxcXFwiNzIwIOmrmOa4hVxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgU0Q6IFxcXFxcXFwiNTQwIOagh+a4hVxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgTEQ6IFxcXFxcXFwiMzYwIOa1geeVhVxcXFxcXFwiXFxcXG4gICAgICAgIH07XFxcXG4gICAgICAgIGxldCBhcnIxID0gSlNPTi5wYXJzZShwdSkudmlkZW9fcHJldmlld19wbGF5X2luZm8ubGl2ZV90cmFuc2NvZGluZ190YXNrX2xpc3QuZmlsdGVyKGl0ID0+IGl0LnVybCAhPSBcXFxcXFxcIlxcXFxcXFwiKTtcXFxcbiAgICAgICAgZm9yIChsZXQgayBvZiBPYmplY3Qua2V5cyh0cmFuc2NvZGluZykpIHtcXFxcbiAgICAgICAgICAgIGZvciAobGV0IGl0IG9mIGFycjEpIHtcXFxcbiAgICAgICAgICAgICAgICBpZiAoaXQudGVtcGxhdGVfaWQgPT0gaykge1xcXFxuICAgICAgICAgICAgICAgICAgICB1cmxzLnB1c2goaXQudXJsICsgXFxcXFxcXCIjaXNWaWRlbz10cnVlI1xcXFxcXFwiKVxcXFxuICAgICAgICAgICAgICAgICAgICBuYW1lcy5wdXNoKHRyYW5zY29kaW5nW2tdKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxcXG4gICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgfVxcXFxuXFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHtcXFxcbiAgICAgICAgICAgIHVybHM6IHVybHMsXFxcXG4gICAgICAgICAgICBuYW1lczogbmFtZXMsXFxcXG4gICAgICAgICAgICBoZWFkZXJzOiBbe1xcXFxuICAgICAgICAgICAgICAgIFxcXFxcXFwiUmVmZXJlclxcXFxcXFwiOiBcXFxcXFxcImh0dHBzOi8vd3d3LmFsaXl1bmRyaXZlLmNvbS9cXFxcXFxcIlxcXFxuICAgICAgICAgICAgfV1cXFxcbiAgICAgICAgfSlcXFxcbiAgICB9IGVsc2Uge1xcXFxuICAgICAgICBsZXQgcmVzID0gcmVxdWVzdChidWlsZFVybChcXFxcXFxcImh0dHBzOi8vYXBpLmFsaXl1bmRyaXZlLmNvbS92Mi9maWxlL2Rvd25sb2FkXFxcXFxcXCIsIHtcXFxcbiAgICAgICAgICAgIFxcXFxcXFwiZHJpdmVfaWRcXFxcXFxcIjogZGlkLFxcXFxuICAgICAgICAgICAgXFxcXFxcXCJmaWxlX2lkXFxcXFxcXCI6IGlkLFxcXFxuICAgICAgICAgICAgXFxcXFxcXCJpbWFnZV90aHVtYm5haWxfcHJvY2Vzc1xcXFxcXFwiOiBcXFxcXFxcImltYWdlL3Jlc2l6ZSxtX2xmaXQsd18yNTYsbGltaXRfMC9mb3JtYXQsanBnfGltYWdlL2Zvcm1hdCx3ZWJwXFxcXFxcXCJcXFxcbiAgICAgICAgfSksIHtcXFxcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcXFxcbiAgICAgICAgICAgICAgICBcXFxcXFxcImF1dGhvcml6YXRpb25cXFxcXFxcIjogY29uZmlnLmFjY2Vzc190b2tlblxcXFxuICAgICAgICAgICAgfSxcXFxcbiAgICAgICAgICAgIHJlZGlyZWN0OiBmYWxzZVxcXFxuICAgICAgICB9KVxcXFxuICAgICAgICB2YXIgdXJsID0gcGRmaChyZXMsIFxcXFxcXFwiYSYmaHJlZlxcXFxcXFwiKVxcXFxuICAgICAgICBpZiAoJC5pbWcuaW5jbHVkZXMoSHptKSkge1xcXFxuICAgICAgICAgICAgcmV0dXJuIHVybCArIFxcXFxcXFwiIy5qcGdcXFxcXFxcIlxcXFxuICAgICAgICB9IGVsc2UgaWYgKCQuYXVkaW8uaW5jbHVkZXMoSHptKSkge1xcXFxuICAgICAgICAgICAgcmV0dXJuIHVybCArIFxcXFxcXFwiI2lzTXVzaWM9dHJ1ZSNcXFxcXFxcIlxcXFxuICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwiZG93bmxvYWQ6Ly9cXFxcXFxcIiArIHVybFxcXFxuICAgICAgICB9XFxcXG4gICAgfVxcXFxufVxcXFxuJC5leHBvcnRzLnNoYXJlZ2V0ZmlsZXMgPSBmdW5jdGlvbihpZCwgcGF0aCwgcykge1xcXFxuICAgIHZhciBkYXRhID0ge1xcXFxuICAgICAgICBcXFxcXFxcImFsbFxcXFxcXFwiOiB0cnVlLFxcXFxuICAgICAgICBcXFxcXFxcInNoYXJlX2lkXFxcXFxcXCI6IGlkLFxcXFxuICAgICAgICBcXFxcXFxcInBhcmVudF9maWxlX2lkXFxcXFxcXCI6IHBhdGgsXFxcXG4gICAgICAgIFxcXFxcXFwibGltaXRcXFxcXFxcIjogMjAwLFxcXFxuICAgICAgICBcXFxcXFxcImltYWdlX3RodW1ibmFpbF9wcm9jZXNzXFxcXFxcXCI6IFxcXFxcXFwiaW1hZ2UvcmVzaXplLHdfMTYwL2Zvcm1hdCxqcGVnXFxcXFxcXCIsXFxcXG4gICAgICAgIFxcXFxcXFwiaW1hZ2VfdXJsX3Byb2Nlc3NcXFxcXFxcIjogXFxcXFxcXCJpbWFnZS9yZXNpemUsd18xOTIwL2Zvcm1hdCxqcGVnXFxcXFxcXCIsXFxcXG4gICAgICAgIFxcXFxcXFwidmlkZW9fdGh1bWJuYWlsX3Byb2Nlc3NcXFxcXFxcIjogXFxcXFxcXCJ2aWRlby9zbmFwc2hvdCx0XzEwMDAsZl9qcGcsYXJfYXV0byx3XzMwMFxcXFxcXFwiLFxcXFxuICAgICAgICBcXFxcXFxcIm9yZGVyX2J5XFxcXFxcXCI6IGdldEl0ZW0oXFxcXFxcXCJvcmRlclxcXFxcXFwiLCBcXFxcXFxcIm5hbWVcXFxcXFxcIiksXFxcXG4gICAgICAgIFxcXFxcXFwib3JkZXJfZGlyZWN0aW9uXFxcXFxcXCI6IFxcXFxcXFwiQVNDXFxcXFxcXCJcXFxcbiAgICB9XFxcXG4gICAgaWYgKE1ZX1BBR0UgPT0gMSB8fCBnZXRNeVZhcihpZCArIFxcXFxcXFwibWFya2VyXFxcXFxcXCIsIFxcXFxcXFwiXFxcXFxcXCIpICE9IFxcXFxcXFwiXFxcXFxcXCIpIHtcXFxcbiAgICAgICAgZGF0YS5tYXJrZXIgPSBnZXRNeVZhcihpZCArIFxcXFxcXFwibWFya2VyXFxcXFxcXCIpICE9ICd1bmRlZmluZWQnID8gZ2V0TXlWYXIoaWQgKyBcXFxcXFxcIm1hcmtlclxcXFxcXFwiKSA6ICcnXFxcXG4gICAgICAgIGNsZWFyTXlWYXIoaWQgKyBcXFxcXFxcIm1hcmtlclxcXFxcXFwiKVxcXFxuICAgICAgICB2YXIgZmlsZXMgPSBKU09OLnBhcnNlKHBvc3QoXFxcXFxcXCJodHRwczovL2FwaS5hbGl5dW5kcml2ZS5jb20vYWRyaXZlL3YzL2ZpbGUvbGlzdFxcXFxcXFwiLCB7XFxcXG4gICAgICAgICAgICBoZWFkZXJzOiB7XFxcXG4gICAgICAgICAgICAgICAgXFxcXFxcXCJ4LXNoYXJlLXRva2VuXFxcXFxcXCI6IHNcXFxcbiAgICAgICAgICAgIH0sXFxcXG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeShkYXRhKVxcXFxuICAgICAgICB9KSlcXFxcbiAgICAgICAgcmV0dXJuIGZpbGVzXFxcXG4gICAgfSBlbHNlIHtcXFxcbiAgICAgICAgcmV0dXJuIGZhbHNlXFxcXG4gICAgfVxcXFxufVxcXFxuJC5leHBvcnRzLnNoYXJlY2h1bGkgPSBmdW5jdGlvbihzaGFyZV9pZCwgaWQsIG5hbWUsIHMpIHtcXFxcbiAgICB2YXIgY29uZmlnID0gSlNPTi5wYXJzZShmZXRjaChcXFxcXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvSm9lL2FsaS5qc29uXFxcXFxcXCIpKVxcXFxuICAgIGxldCB7XFxcXG4gICAgICAgIGdldEh6bSxcXFxcbiAgICAgICAgcHVzaFxcXFxuICAgIH0gPSAkLnJlcXVpcmUoXFxcXFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcXFxcXCIpXFxcXG4gICAgdmFyIEh6bSA9IGdldEh6bShuYW1lKVxcXFxuICAgIGlmICgkLm1vdmllLmluY2x1ZGVzKEh6bSkpIHtcXFxcbiAgICAgICAgbGV0IHVybCA9IEpTT04ucGFyc2UocG9zdChcXFxcXFxcImh0dHBzOi8vYXBpLmFsaXl1bmRyaXZlLmNvbS92Mi9maWxlL2dldF9zaGFyZV9saW5rX2Rvd25sb2FkX3VybFxcXFxcXFwiLCB7XFxcXG4gICAgICAgICAgICBoZWFkZXJzOiB7XFxcXG4gICAgICAgICAgICAgICAgXFxcXFxcXCJ4LXNoYXJlLXRva2VuXFxcXFxcXCI6IHMsXFxcXG4gICAgICAgICAgICAgICAgXFxcXFxcXCJhdXRob3JpemF0aW9uXFxcXFxcXCI6IGNvbmZpZy5hY2Nlc3NfdG9rZW5cXFxcbiAgICAgICAgICAgIH0sXFxcXG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XFxcXG4gICAgICAgICAgICAgICAgXFxcXFxcXCJleHBpcmVfc2VjXFxcXFxcXCI6IDYwMCxcXFxcbiAgICAgICAgICAgICAgICBcXFxcXFxcImZpbGVfaWRcXFxcXFxcIjogaWQsXFxcXG4gICAgICAgICAgICAgICAgXFxcXFxcXCJzaGFyZV9pZFxcXFxcXFwiOiBzaGFyZV9pZFxcXFxuICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgfSkpLmRvd25sb2FkX3VybFxcXFxuICAgICAgICBsZXQgcHUgPSAkLnJlcXVpcmUoXFxcXFxcXCJoaWtlcjovL3BhZ2UvYWxpbGF6eVxcXFxcXFwiKShzaGFyZV9pZCwgaWQsIHVybClcXFxcbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHB1KVxcXFxuICAgIH0gZWxzZSB7XFxcXG4gICAgICAgIGxldCB1cmwgPSBKU09OLnBhcnNlKHBvc3QoXFxcXFxcXCJodHRwczovL2FwaS5hbGl5dW5kcml2ZS5jb20vdjIvZmlsZS9nZXRfc2hhcmVfbGlua19kb3dubG9hZF91cmxcXFxcXFxcIiwge1xcXFxuICAgICAgICAgICAgaGVhZGVyczoge1xcXFxuICAgICAgICAgICAgICAgIFxcXFxcXFwieC1zaGFyZS10b2tlblxcXFxcXFwiOiBzLFxcXFxuICAgICAgICAgICAgICAgIFxcXFxcXFwiYXV0aG9yaXphdGlvblxcXFxcXFwiOiBjb25maWcuYWNjZXNzX3Rva2VuXFxcXG4gICAgICAgICAgICB9LFxcXFxuICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xcXFxuICAgICAgICAgICAgICAgIFxcXFxcXFwiZXhwaXJlX3NlY1xcXFxcXFwiOiA2MDAsXFxcXG4gICAgICAgICAgICAgICAgXFxcXFxcXCJmaWxlX2lkXFxcXFxcXCI6IGlkLFxcXFxuICAgICAgICAgICAgICAgIFxcXFxcXFwic2hhcmVfaWRcXFxcXFxcIjogc2hhcmVfaWRcXFxcbiAgICAgICAgICAgIH0pXFxcXG4gICAgICAgIH0pKS51cmxcXFxcbiAgICAgICAgaWYgKCQuaW1nLmluY2x1ZGVzKEh6bSkpIHtcXFxcbiAgICAgICAgICAgIHJldHVybiB1cmwgKyBcXFxcXFxcIiMuanBnXFxcXFxcXCJcXFxcbiAgICAgICAgfSBlbHNlIGlmICgkLmF1ZGlvLmluY2x1ZGVzKEh6bSkpIHtcXFxcbiAgICAgICAgICAgIHJldHVybiB1cmwgKyBcXFxcXFxcIiNpc011c2ljPXRydWUjXFxcXFxcXCJcXFxcbiAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgIHJldHVybiBcXFxcXFxcImRvd25sb2FkOi8vXFxcXFxcXCIgKyB1cmxcXFxcbiAgICAgICAgfVxcXFxuICAgIH1cXFxcbn1cXFxcbiQuZXhwb3J0cy5nZXRJY29uID0gZnVuY3Rpb24oZmlsZU5hbWUpIHtcXFxcbiAgICBsZXQge1xcXFxuICAgICAgICBnZXRIem1cXFxcbiAgICB9ID0gJC5yZXF1aXJlKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXFxcXFwiKVxcXFxuICAgIGxldCByb290ID0gXFxcXFxcXCJodHRwczovL2dpdGNvZGUubmV0L3FxXzMyMzk0MzUxL2RyLy0vcmF3L21hc3Rlci9pbWcv5paH5Lu257G75Z6LMi9cXFxcXFxcIjtcXFxcbiAgICBsZXQgZmlsZXMgPSAnYWl8YXBrfGF2aXxjc3N8ZG1nfGV4ZXxmbHZ8Z2lmfGhpa2VyfGh0bWx8aXNvfGpwZ3xqc3xqc29ufGxvZ3xtb3Z8bXAzfG1wNHxvdGZ8cGhwfHBuZ3xwcHR8cHNkfHRhYmxlfHR4dHx3YXZ8eGxzfHppcHxjc3N8ZG9jfGVwdWJ8ZXhjfGh0bXx4bHN4Jy5zcGxpdCgnfCcpO1xcXFxuICAgIGxldCBoem0gPSBnZXRIem0oZmlsZU5hbWUpXFxcXG4gICAgaWYgKGZpbGVzLmluY2x1ZGVzKGh6bSkpIHtcXFxcbiAgICAgICAgaW1nID0gcm9vdCArIGh6bSArICcuc3ZnJztcXFxcbiAgICB9IGVsc2Uge1xcXFxuICAgICAgICBpbWcgPSByb290ICsgXFxcXFxcXCLmlofku7Yuc3ZnXFxcXFxcXCJcXFxcbiAgICB9XFxcXG4gICAgcmV0dXJuIGltZ1xcXFxufVxcXFxuJC5leHBvcnRzLmdldEh6bSA9IGZ1bmN0aW9uKGZpbGVOYW1lKSB7XFxcXG4gICAgcmV0dXJuIGZpbGVOYW1lLnN1YnN0cihmaWxlTmFtZS5sYXN0SW5kZXhPZihcXFxcXFxcIi5cXFxcXFxcIikgKyAxKS50b0xvd2VyQ2FzZSgpXFxcXG59XFxcXG4kLmV4cG9ydHMucmVmcmVzaFRva2VuID0gcmVmcmVzaFRva2VuXFxcXG4kLmV4cG9ydHMuZ2V0RmlsZXMgPSBnZXRGaWxlc1xcXFxuJC5leHBvcnRzLmNodWxpID0gY2h1bGlcXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLliIbkuqtcXFwiLFxcXCJwYXRoXFxcIjpcXFwic2hhcmVcXFwiLFxcXCJydWxlXFxcIjpcXFwianM6XFxcXG52YXIgZCA9IFtdO1xcXFxuXFxcXG4kLmV4dGVuZCh7XFxcXG4gICAgdGV4dDogW1xcXFxcXFwiaHRtXFxcXFxcXCIsIFxcXFxcXFwiaHRtbFxcXFxcXFwiLCBcXFxcXFxcInhtbFxcXFxcXFwiLCBcXFxcXFxcImphdmFcXFxcXFxcIiwgXFxcXFxcXCJwcm9wZXJ0aWVzXFxcXFxcXCIsIFxcXFxcXFwic3FsXFxcXFxcXCIsIFxcXFxcXFwianNcXFxcXFxcIiwgXFxcXFxcXCJtZFxcXFxcXFwiLCBcXFxcXFxcImpzb25cXFxcXFxcIiwgXFxcXFxcXCJjb25mXFxcXFxcXCIsIFxcXFxcXFwiaW5pXFxcXFxcXCIsIFxcXFxcXFwidnVlXFxcXFxcXCIsIFxcXFxcXFwicGhwXFxcXFxcXCIsIFxcXFxcXFwicHlcXFxcXFxcIiwgXFxcXFxcXCJiYXRcXFxcXFxcIiwgXFxcXFxcXCJnaXRpZ25vcmVcXFxcXFxcIiwgXFxcXFxcXCJ5bWxcXFxcXFxcIiwgXFxcXFxcXCJnb1xcXFxcXFwiLCBcXFxcXFxcInNoXFxcXFxcXCIsIFxcXFxcXFwiY1xcXFxcXFwiLCBcXFxcXFxcImNwcFxcXFxcXFwiLCBcXFxcXFxcImhcXFxcXFxcIiwgXFxcXFxcXCJocHBcXFxcXFxcIiwgXFxcXFxcXCJ0c3hcXFxcXFxcIl0sXFxcXG4gICAgYXVkaW86IFtcXFxcXFxcIm1wM1xcXFxcXFwiLCBcXFxcXFxcImZsYWNcXFxcXFxcIiwgXFxcXFxcXCJvZ2dcXFxcXFxcIiwgXFxcXFxcXCJtNGFcXFxcXFxcIiwgXFxcXFxcXCJ3YXZcXFxcXFxcIiwgXFxcXFxcXCJvcHVzXFxcXFxcXCJdLFxcXFxuICAgIG1vdmllOiBbXFxcXFxcXCJtcDRcXFxcXFxcIiwgXFxcXFxcXCJta3ZcXFxcXFxcIiwgXFxcXFxcXCJhdmlcXFxcXFxcIiwgXFxcXFxcXCJtb3ZcXFxcXFxcIiwgXFxcXFxcXCJybXZiXFxcXFxcXCIsIFxcXFxcXFwid2VibVxcXFxcXFwiLCBcXFxcXFxcImZsdlxcXFxcXFwiLCBcXFxcXFxcIm00dlxcXFxcXFwiLCBcXFxcXFxcIm0zdThcXFxcXFxcIiwgXFxcXFxcXCJ0c1xcXFxcXFwiXSxcXFxcbiAgICBpbWc6IFtcXFxcXFxcImpwZ1xcXFxcXFwiLCBcXFxcXFxcInBuZ1xcXFxcXFwiLCBcXFxcXFxcImpwZWdcXFxcXFxcIiwgXFxcXFxcXCJnaWZcXFxcXFxcIiwgXFxcXFxcXCJzdmdcXFxcXFxcIiwgXFxcXFxcXCJyYXdcXFxcXFxcIl0sXFxcXG4gICAgc3VidGl0bGU6IFtcXFxcXFxcInZ0dFxcXFxcXFwiLCBcXFxcXFxcInNydFxcXFxcXFwiLCBcXFxcXFxcImFzc1xcXFxcXFwiXVxcXFxufSlcXFxcblxcXFxuZnVuY3Rpb24gZm9ybWF0RGF0ZSh0aW1lKSB7XFxcXG4gICAgdmFyIGRhdGUgPSBuZXcgRGF0ZSh0aW1lKTtcXFxcbiAgICB2YXIgWVkgPSBkYXRlLmdldEZ1bGxZZWFyKCkgKyAnLSc7XFxcXG4gICAgdmFyIE1NID0gKGRhdGUuZ2V0TW9udGgoKSArIDEgPCAxMCA/ICcwJyArIChkYXRlLmdldE1vbnRoKCkgKyAxKSA6IGRhdGUuZ2V0TW9udGgoKSArIDEpICsgJy0nO1xcXFxuICAgIHZhciBERCA9IChkYXRlLmdldERhdGUoKSA8IDEwID8gJzAnICsgKGRhdGUuZ2V0RGF0ZSgpKSA6IGRhdGUuZ2V0RGF0ZSgpKTtcXFxcbiAgICB2YXIgaGggPSAoZGF0ZS5nZXRIb3VycygpIDwgMTAgPyAnMCcgKyBkYXRlLmdldEhvdXJzKCkgOiBkYXRlLmdldEhvdXJzKCkpICsgJzonO1xcXFxuICAgIHZhciBtbSA9IChkYXRlLmdldE1pbnV0ZXMoKSA8IDEwID8gJzAnICsgZGF0ZS5nZXRNaW51dGVzKCkgOiBkYXRlLmdldE1pbnV0ZXMoKSkgKyAnOic7XFxcXG4gICAgdmFyIHNzID0gKGRhdGUuZ2V0U2Vjb25kcygpIDwgMTAgPyAnMCcgKyBkYXRlLmdldFNlY29uZHMoKSA6IGRhdGUuZ2V0U2Vjb25kcygpKTtcXFxcbiAgICByZXR1cm4gWVkgKyBNTSArIEREICsgXFxcXFxcXCIgXFxcXFxcXCIgKyBoaCArIG1tICsgc3M7XFxcXG59XFxcXG5pZiAoZ2V0UGFyYW0oXFxcXFxcXCJzaGFyZV91cmxcXFxcXFxcIikuc3RhcnRzV2l0aChcXFxcXFxcImh0dHBzOi8vd3d3LmFsaXl1bmRyaXZlLmNvbS9zL1xcXFxcXFwiKSkge1xcXFxuICAgIHZhciBzaGFyZVVybCA9IGdldFBhcmFtKFxcXFxcXFwic2hhcmVfdXJsXFxcXFxcXCIpXFxcXG4gICAgdmFyIHNoYXJlX2lkID0gc2hhcmVVcmwuc3BsaXQoJ2NvbS9zLycpWzFdLnNwbGl0KFxcXFxcXFwiL1xcXFxcXFwiKVswXVxcXFxuICAgIGlmIChnZXRJdGVtKHNoYXJlX2lkLCBcXFxcXFxcIlxcXFxcXFwiKSAhPSBcXFxcXFxcIlxcXFxcXFwiKSB7XFxcXG4gICAgICAgIHZhciBwYXNzd29yZCA9IGdldEl0ZW0oc2hhcmVfaWQpXFxcXG4gICAgfSBlbHNlIGlmIChnZXRQYXJhbShcXFxcXFxcInBhc3N3b3JkXFxcXFxcXCIpKSB7XFxcXG4gICAgICAgIHZhciBwYXNzd29yZCA9IGdldFBhcmFtKFxcXFxcXFwicGFzc3dvcmRcXFxcXFxcIilcXFxcbiAgICB9IGVsc2Uge1xcXFxuICAgICAgICB2YXIgcGFzc3dvcmQgPSBcXFxcXFxcIlxcXFxcXFwiXFxcXG4gICAgfVxcXFxuICAgIHZhciByZXMgPSBKU09OLnBhcnNlKHBvc3QoXFxcXFxcXCJodHRwczovL2FwaS5hbGl5dW5kcml2ZS5jb20vYWRyaXZlL3YzL3NoYXJlX2xpbmsvZ2V0X3NoYXJlX2J5X2Fub255bW91cz9zaGFyZV9pZD1cXFxcXFxcIiArIHNoYXJlX2lkLCB7XFxcXG4gICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcXFxcbiAgICAgICAgICAgIFxcXFxcXFwic2hhcmVfaWRcXFxcXFxcIjogc2hhcmVfaWRcXFxcbiAgICAgICAgfSlcXFxcbiAgICB9KSlcXFxcbiAgICB2YXIgc2EgPSBKU09OLnBhcnNlKHBvc3QoXFxcXFxcXCJodHRwczovL2FwaS5hbGl5dW5kcml2ZS5jb20vdjIvc2hhcmVfbGluay9nZXRfc2hhcmVfdG9rZW5cXFxcXFxcIiwge1xcXFxuICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XFxcXG4gICAgICAgICAgICBcXFxcXFxcInNoYXJlX3B3ZFxcXFxcXFwiOiBwYXNzd29yZCxcXFxcbiAgICAgICAgICAgIFxcXFxcXFwic2hhcmVfaWRcXFxcXFxcIjogc2hhcmVfaWRcXFxcbiAgICAgICAgfSlcXFxcbiAgICB9KSlcXFxcbiAgICBpZiAoc2Euc2hhcmVfdG9rZW4pIHtcXFxcbiAgICAgICAgdmFyIHMgPSBzYS5zaGFyZV90b2tlblxcXFxuICAgICAgICBzZXRQYWdlVGl0bGUocmVzLnNoYXJlX25hbWUpXFxcXG4gICAgICAgIHZhciBwYXRoID0gTVlfUEFSQU1TLnBhdGggfHwgXFxcXFxcXCJyb290XFxcXFxcXCJcXFxcbiAgICAgICAgaWYgKE1ZX1BBR0UgPT0gMSkge1xcXFxuICAgICAgICAgICAgZC51bnNoaWZ0KHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogcmVzLmNyZWF0b3JfbmFtZSxcXFxcbiAgICAgICAgICAgICAgICBpbWc6IHJlcy5hdmF0YXIsXFxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwiYXZhdGFyXFxcXFxcXCJcXFxcbiAgICAgICAgICAgIH0sIHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogXFxcXFxcXCLigJzigJzigJ3igJ08c21hbGw+XFxcXFxcXCIgKyBmb3JtYXREYXRlKERhdGUucGFyc2UocmVzLnVwZGF0ZWRfYXQpKSArIFxcXFxcXFwiPC9zbWFsbD5cXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcXFxcXCJ0ZXh0XzFcXFxcXFxcIlxcXFxuICAgICAgICAgICAgfSwge1xcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiBcXFxcXFxcIuS/neWtmOWIsOaIkeeahOe9keebmFxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgIHVybDogYHNtYXJ0ZHJpdmU6Ly9zaGFyZS9icm93c2U/c2hhcmVJZD0ke3NoYXJlX2lkfSZzaGFyZVB3ZD0ke3Bhc3N3b3JkfWAsXFxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwidGV4dF9jZW50ZXJfMVxcXFxcXFwiXFxcXG4gICAgICAgICAgICB9KVxcXFxuICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogXFxcXFxcXCLliIfmjaLmoLflvI9cXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoW1xcXFxcXFwibW92aWVfMV9sZWZ0X3BpY1xcXFxcXFwiLCBcXFxcXFxcImNhcmRfcGljXzNcXFxcXFxcIiwgXFxcXFxcXCJhdmF0YXJcXFxcXFxcIl0pLnNlbGVjdCgoKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgIHNldEl0ZW0oXFxcXFxcXCJzdHlsZVxcXFxcXFwiLCBpbnB1dClcXFxcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKVxcXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL+W3suWIh+aNolxcXFxcXFwiXFxcXG4gICAgICAgICAgICAgICAgfSksXFxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwidGV4dF8yXFxcXFxcXCJcXFxcbiAgICAgICAgICAgIH0sIHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogXFxcXFxcXCLmjpLluo/vvJpcXFxcXFxcIiArIChnZXRNeVZhcihcXFxcXFxcIm9yZGVyXFxcXFxcXCIsIFxcXFxcXFwibmFtZVxcXFxcXFwiKSA9PSBcXFxcXFxcIm5hbWVcXFxcXFxcIiA/IFxcXFxcXFwi5ZCN56ewXFxcXFxcXCIgOiBcXFxcXFxcIuaXtumXtFxcXFxcXFwiKSxcXFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoXFxcXFxcXCIjbm9SZWNvcmRIaXN0b3J5IyNub0xvYWRpbmcjXFxcXFxcXCIpLmxhenlSdWxlKCgpID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBnZXRNeVZhcihcXFxcXFxcIm9yZGVyXFxcXFxcXCIsIFxcXFxcXFwibmFtZVxcXFxcXFwiKVxcXFxuICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFxcXFxcIm9yZGVyXFxcXFxcXCIsIChvID09IFxcXFxcXFwibmFtZVxcXFxcXFwiID8gXFxcXFxcXCJ1cGRhdGVkX2F0XFxcXFxcXCIgOiBcXFxcXFxcIm5hbWVcXFxcXFxcIikpXFxcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKClcXFxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/liIfmjaLmiJDlip9cXFxcXFxcIlxcXFxuICAgICAgICAgICAgICAgIH0pLFxcXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFxcXFxcInRleHRfMlxcXFxcXFwiXFxcXG4gICAgICAgICAgICB9LCB7XFxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwiYmxhbmtfYmxvY2tcXFxcXFxcIlxcXFxuICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgfVxcXFxuXFxcXG4gICAgICAgIHZhciBmaWxlcyA9ICQucmVxdWlyZShcXFxcXFxcImFwaVxcXFxcXFwiKS5zaGFyZWdldGZpbGVzKHNoYXJlX2lkLCBwYXRoLCBzKVxcXFxuICAgICAgICBpZiAoZmlsZXMpIHtcXFxcbiAgICAgICAgICAgIHB1dE15VmFyKHBhdGggKyBcXFxcXFxcIm1hcmtlclxcXFxcXFwiLCBmaWxlcy5uZXh0X21hcmtlcilcXFxcbiAgICAgICAgICAgIGxpc3QgPSBmaWxlcy5pdGVtc1xcXFxuICAgICAgICAgICAgbGlzdC5mb3JFYWNoKChpdGVtLCBpKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgbGV0IGZpbGVOYW1lID0gaXRlbS5uYW1lXFxcXG4gICAgICAgICAgICAgICAgbGV0IGxlbiA9IDQwO1xcXFxuICAgICAgICAgICAgICAgIGxldCBsZW4yID0gbGVuIC8gMjtcXFxcbiAgICAgICAgICAgICAgICBpZiAoZmlsZU5hbWUubGVuZ3RoID49IGxlbikge1xcXFxuICAgICAgICAgICAgICAgICAgICBmaWxlTmFtZSA9IGZpbGVOYW1lLnN1YnN0cigwLCBsZW4yKSArICcuLi4nICsgZmlsZU5hbWUuc3Vic3RyKGZpbGVOYW1lLmxlbmd0aCAtIGxlbjIpO1xcXFxuICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogZmlsZU5hbWUsXFxcXG4gICAgICAgICAgICAgICAgICAgIGRlc2M6IGZvcm1hdERhdGUoRGF0ZS5wYXJzZShpdGVtLnVwZGF0ZWRfYXQpKSxcXFxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiAoaXRlbS50aHVtYm5haWwgPyBpdGVtLnRodW1ibmFpbCA6IChpdGVtLnR5cGUgPT0gXFxcXFxcXCJmb2xkZXJcXFxcXFxcIiA/IFxcXFxcXFwiaHR0cHM6Ly9naXRjb2RlLm5ldC9xcV8zMjM5NDM1MS9kci8tL3Jhdy9tYXN0ZXIvaW1nL+aWh+S7tuexu+WeizIv5paH5Lu25aS5LnN2Z1xcXFxcXFwiIDogJC5yZXF1aXJlKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXFxcXFwiKS5nZXRJY29uKGl0ZW0ubmFtZSkpKSxcXFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAoaXRlbS50eXBlID09IFxcXFxcXFwiZm9sZGVyXFxcXFxcXCIgPyBcXFxcXFxcImhpa2VyOi8vcGFnZS9zaGFyZT9wYWdlPWZ5cGFnZSZzaGFyZV91cmw9XFxcXFxcXCIgKyBnZXRQYXJhbShcXFxcXFxcInNoYXJlX3VybFxcXFxcXFwiKSA6ICQoKS5sYXp5UnVsZSgoc2hhcmVfaWQsIGlkLCBuYW1lLCBzKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJC5yZXF1aXJlKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXFxcXFwiKS5zaGFyZWNodWxpKHNoYXJlX2lkLCBpZCwgbmFtZSwgcylcXFxcbiAgICAgICAgICAgICAgICAgICAgfSwgc2hhcmVfaWQsIGl0ZW0uZmlsZV9pZCwgaXRlbS5uYW1lLCBzKSksXFxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBnZXRJdGVtKFxcXFxcXFwic3R5bGVcXFxcXFxcIiwgXFxcXFxcXCJtb3ZpZV8zXFxcXFxcXCIpLFxcXFxuICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogaXRlbS5maWxlX2lkXFxcXG4gICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICB9KVxcXFxuICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgfVxcXFxuICAgIH0gZWxzZSBpZiAoc2EuY29kZSA9PSBcXFxcXFxcIlNoYXJlTGluay5DYW5jZWxsZWRcXFxcXFxcIikge1xcXFxuICAgICAgICBzZXRSZXN1bHQoW3tcXFxcbiAgICAgICAgICAgIHRpdGxlOiBcXFxcXFxcIuadpeaZmuS6hu+8jOWIhuS6q+iiq+WPlua2iOS6huCyoF/gsqBcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFxcXFxcInRleHRfY2VudGVyXzFcXFxcXFxcIlxcXFxuICAgICAgICB9XSlcXFxcbiAgICB9IGVsc2UgaWYgKHNhLmNvZGUgPT0gXFxcXFxcXCJTaGFyZUxpbmsuRm9yYmlkZGVuXFxcXFxcXCIpIHtcXFxcbiAgICAgICAgc2V0UmVzdWx0KFt7XFxcXG4gICAgICAgICAgICB0aXRsZTogXFxcXFxcXCLmnaXmmZrkuobvvIzliIbkuqvooqvlsIHnpoHkuobgsqBf4LKgXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcXFxcXCJ0ZXh0X2NlbnRlcl8xXFxcXFxcXCJcXFxcbiAgICAgICAgfV0pXFxcXG4gICAgfSBlbHNlIGlmIChzYS5jb2RlID09IFxcXFxcXFwiU2hhcmVMaW5rLkV4cGlyZWRcXFxcXFxcIikge1xcXFxuICAgICAgICBzZXRSZXN1bHQoW3tcXFxcbiAgICAgICAgICAgIHRpdGxlOiBcXFxcXFxcIuadpeaZmuS6hu+8jOWIhuS6q+i/h+acn+S6huCyoF/gsqBcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFxcXFxcInRleHRfY2VudGVyXzFcXFxcXFxcIlxcXFxuICAgICAgICB9XSlcXFxcbiAgICB9IGVsc2Uge1xcXFxuICAgICAgICBzZXRSZXN1bHQoW3tcXFxcbiAgICAgICAgICAgIHRpdGxlOiBcXFxcXFxcIuivt+i+k+WFpeaPkOWPlueggVxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgdXJsOiAkKFxcXFxcXFwiXFxcXFxcXCIpLmlucHV0KChzaGFyZV9pZCkgPT4ge1xcXFxuICAgICAgICAgICAgICAgIHNldEl0ZW0oc2hhcmVfaWQsIGlucHV0KVxcXFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKClcXFxcbiAgICAgICAgICAgIH0sIHNoYXJlX2lkKSxcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFxcXFxcInRleHRfY2VudGVyXzFcXFxcXFxcIlxcXFxuICAgICAgICB9XSlcXFxcbiAgICB9XFxcXG59XFxcXG5zZXRSZXN1bHQoZCk7XFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi5pCc57SiXFxcIixcXFwicGF0aFxcXCI6XFxcInNlYXJjaFxcXCIsXFxcInJ1bGVcXFwiOlxcXCJqczpcXFxcbnZhciBkID0gW107XFxcXG5hZGRMaXN0ZW5lcignb25DbG9zZScsICQudG9TdHJpbmcoKCkgPT4ge1xcXFxuICAgIGNsZWFyTXlWYXIoJ3NlYXJjaG1hcmtlcicpXFxcXG4gICAgY2xlYXJNeVZhcignc2VyYWNoZW5kJylcXFxcbn0pKVxcXFxuXFxcXG5hZGRMaXN0ZW5lcignb25SZWZyZXNoJywgJC50b1N0cmluZygoKSA9PiB7XFxcXG4gICAgY2xlYXJNeVZhcignc2VhcmNobWFya2VyJylcXFxcbiAgICBjbGVhck15VmFyKCdzZXJhY2hlbmQnKVxcXFxufSkpXFxcXG5cXFxcblxcXFxuZnVuY3Rpb24gZm9ybWF0RGF0ZSh0aW1lKSB7XFxcXG4gICAgdmFyIGRhdGUgPSBuZXcgRGF0ZSh0aW1lKTtcXFxcbiAgICB2YXIgWVkgPSBkYXRlLmdldEZ1bGxZZWFyKCkgKyAnLSc7XFxcXG4gICAgdmFyIE1NID0gKGRhdGUuZ2V0TW9udGgoKSArIDEgPCAxMCA/ICcwJyArIChkYXRlLmdldE1vbnRoKCkgKyAxKSA6IGRhdGUuZ2V0TW9udGgoKSArIDEpICsgJy0nO1xcXFxuICAgIHZhciBERCA9IChkYXRlLmdldERhdGUoKSA8IDEwID8gJzAnICsgKGRhdGUuZ2V0RGF0ZSgpKSA6IGRhdGUuZ2V0RGF0ZSgpKTtcXFxcbiAgICB2YXIgaGggPSAoZGF0ZS5nZXRIb3VycygpIDwgMTAgPyAnMCcgKyBkYXRlLmdldEhvdXJzKCkgOiBkYXRlLmdldEhvdXJzKCkpICsgJzonO1xcXFxuICAgIHZhciBtbSA9IChkYXRlLmdldE1pbnV0ZXMoKSA8IDEwID8gJzAnICsgZGF0ZS5nZXRNaW51dGVzKCkgOiBkYXRlLmdldE1pbnV0ZXMoKSkgKyAnOic7XFxcXG4gICAgdmFyIHNzID0gKGRhdGUuZ2V0U2Vjb25kcygpIDwgMTAgPyAnMCcgKyBkYXRlLmdldFNlY29uZHMoKSA6IGRhdGUuZ2V0U2Vjb25kcygpKTtcXFxcbiAgICByZXR1cm4gWVkgKyBNTSArIEREICsgXFxcXFxcXCIgXFxcXFxcXCIgKyBoaCArIG1tICsgc3M7XFxcXG59XFxcXG5cXFxcbmxldCBrdyA9IGdldFBhcmFtKFxcXFxcXFwia3dcXFxcXFxcIik7XFxcXG5sZXQgcGFnZSA9IE1ZX1BBR0U7XFxcXG5cXFxcbmZ1bmN0aW9uIGdldF9TZWFyY2goYXJyLCBrdywgcGFnZSkge1xcXFxuICAgIHZhciBsaW5rcyA9IGt3Lm1hdGNoKC9odHRwczpcXFxcXFxcXC9cXFxcXFxcXC8od3d3XFxcXFxcXFwuYWxpeXVuZHJpdmVcXFxcXFxcXC5jb21cXFxcXFxcXC9zfGFseXdwXFxcXFxcXFwubmV0KVxcXFxcXFxcL1xcXFxcXFxcdyovZylcXFxcbiAgICBpZiAobGlua3MpIHtcXFxcbiAgICAgICAgYXJyLnB1c2goe1xcXFxuICAgICAgICAgICAgdGl0bGU6IFxcXFxcXFwi6K+G5Yir5Yiw6ZO+5o6lXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICB1cmw6IFxcXFxcXFwidG9hc3Q6Ly/jg70oKuKMkuKIh+KMkiop776JXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcXFxcXCJ0ZXh0X2NlbnRlcl8xXFxcXFxcXCJcXFxcbiAgICAgICAgfSlcXFxcbiAgICAgICAgbGlua3MuZm9yRWFjaChpdGVtID0+IHtcXFxcbiAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0sXFxcXG4gICAgICAgICAgICAgICAgdXJsOiBcXFxcXFxcImhpa2VyOi8vcGFnZS9zaGFyZT9wYWdlPWZ5cGFnZSZzaGFyZV91cmw9XFxcXFxcXCIgKyBpdGVtLFxcXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFxcXFxcInRleHRfMVxcXFxcXFwiXFxcXG4gICAgICAgICAgICB9KVxcXFxuICAgICAgICB9KVxcXFxuICAgICAgICByZXR1cm4gYXJyXFxcXG4gICAgfSBlbHNlIHtcXFxcbiAgICAgICAgdmFyIHBhdGhzID0gTVlfUEFSQU1TLnBhdGggfHwgXFxcXFxcXCJyb290XFxcXFxcXCJcXFxcbiAgICAgICAgbGV0IHUgPSBcXFxcXFxcImh0dHBzOi8vYXBpLmFsaXl1bmRyaXZlLmNvbS9hZHJpdmUvdjMvZmlsZS9zZWFyY2hcXFxcXFxcIlxcXFxuICAgICAgICB2YXIgY29uZmlnID0gSlNPTi5wYXJzZShyZXF1ZXN0KFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9Kb2UvYWxpLmpzb25cXFxcXFxcIikpXFxcXG4gICAgICAgIHZhciBtYXJrID0gZ2V0TXlWYXIoJ3NlYXJjaG1hcmtlcicpIHx8ICcnO1xcXFxuICAgICAgICB2YXIgYm9keSA9IHtcXFxcbiAgICAgICAgICAgIFxcXFxcXFwiZHJpdmVfaWRcXFxcXFxcIjogY29uZmlnLmRlZmF1bHRfZHJpdmVfaWQsXFxcXG4gICAgICAgICAgICBcXFxcXFxcImxpbWl0XFxcXFxcXCI6IDEwMCxcXFxcbiAgICAgICAgICAgICdtYXJrZXInOiBtYXJrLFxcXFxuICAgICAgICAgICAgXFxcXFxcXCJpbWFnZV90aHVtYm5haWxfcHJvY2Vzc1xcXFxcXFwiOiBcXFxcXFxcImltYWdlL3Jlc2l6ZSx3XzQwMC9mb3JtYXQsanBlZ1xcXFxcXFwiLFxcXFxuICAgICAgICAgICAgXFxcXFxcXCJpbWFnZV91cmxfcHJvY2Vzc1xcXFxcXFwiOiBcXFxcXFxcImltYWdlL3Jlc2l6ZSx3XzE5MjAvZm9ybWF0LGpwZWdcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIFxcXFxcXFwidmlkZW9fdGh1bWJuYWlsX3Byb2Nlc3NcXFxcXFxcIjogXFxcXFxcXCJ2aWRlby9zbmFwc2hvdCx0XzEwMDAsZl9qcGcsYXJfYXV0byx3XzMwMFxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgXFxcXFxcXCJxdWVyeVxcXFxcXFwiOiBgbmFtZSBtYXRjaCBcXFxcXFxcXFxcXFxcXFwiJHtrd31cXFxcXFxcXFxcXFxcXFwiYCxcXFxcbiAgICAgICAgICAgIFxcXFxcXFwib3JkZXJfYnlcXFxcXFxcIjogXFxcXFxcXCJuYW1lIEFTQ1xcXFxcXFwiXFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKHBvc3QodSwge1xcXFxuICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoYm9keSksXFxcXG4gICAgICAgICAgICBoZWFkZXJzOiB7XFxcXG4gICAgICAgICAgICAgICAgXFxcXFxcXCJhdXRob3JpemF0aW9uXFxcXFxcXCI6IGNvbmZpZy5hY2Nlc3NfdG9rZW5cXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgfSkpXFxcXG4gICAgICAgIHZhciBsaXN0ID0ganNvbi5pdGVtcztcXFxcbiAgICAgICAgaWYobGlzdC5sZW5ndGg9PTApe1xcXFxuICAgICAgICAgICAgYXJyLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn4oCc4oCc4oCd4oCdPHNtYWxsPjxmb250IGNvbG9yPVxcXFxcXFwiZ3JleVxcXFxcXFwiPuaXoOespuWQiOe7k+aenDwvZm9udD48L3NtYWxsPicsXFxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJyxcXFxcbiAgICAgICAgICAgICAgICB1cmw6ICdoaWtlcjovL2VtcHR5JyxcXFxcbiAgICAgICAgICAgIH0pXFxcXG4gICAgICAgICAgICByZXR1cm4gYXJyO1xcXFxuICAgICAgICB9XFxcXG4gICAgICAgIGlmIChqc29uLm5leHRfbWFya2VyICE9ICcnKSB7XFxcXG4gICAgICAgICAgICBwdXRNeVZhcignc2VhcmNobWFya2VyJywganNvbi5uZXh0X21hcmtlcik7XFxcXG4gICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICBwdXRNeVZhcignc2VyYWNoZW5kJywgJzEnKVxcXFxuICAgICAgICB9XFxcXG4gICAgICAgIGlmIChnZXRNeVZhcignc2VyYWNoZW5kJywgJzAnKSA9PSAnMScgJiYgcGFnZSA+IDEpIHtcXFxcbiAgICAgICAgICAgIGFyci5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+KAnOKAnOKAneKAnTxzbWFsbD48Zm9udCBjb2xvcj1cXFxcXFxcImdyZXlcXFxcXFxcIj7liKvliJLkuobliLDlupXkuoY8L2ZvbnQ+PC9zbWFsbD4nLFxcXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXFxcXG4gICAgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9lbXB0eScsXFxcXG4gICAgICAgICAgICB9KVxcXFxuICAgICAgICAgICAgcmV0dXJuIGFycjtcXFxcbiAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgIGxpc3QuZm9yRWFjaChpdGVtID0+IHtcXFxcbiAgICAgICAgICAgICAgICBsZXQgZmlsZU5hbWUgPSBpdGVtLm5hbWVcXFxcbiAgICAgICAgICAgICAgICBsZXQgbGVuID0gNDA7XFxcXG4gICAgICAgICAgICAgICAgbGV0IGxlbjIgPSBsZW4gLyAyO1xcXFxuICAgICAgICAgICAgICAgIGlmIChmaWxlTmFtZS5sZW5ndGggPj0gbGVuKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgIGZpbGVOYW1lID0gZmlsZU5hbWUuc3Vic3RyKDAsIGxlbjIpICsgJy4uLicgKyBmaWxlTmFtZS5zdWJzdHIoZmlsZU5hbWUubGVuZ3RoIC0gbGVuMik7XFxcXG4gICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgIGFyci5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGZpbGVOYW1lLFxcXFxuICAgICAgICAgICAgICAgICAgICBpbWc6IChpdGVtLnRodW1ibmFpbCA/IGl0ZW0udGh1bWJuYWlsIDogKGl0ZW0udHlwZSA9PSBcXFxcXFxcImZvbGRlclxcXFxcXFwiID8gXFxcXFxcXCJodHRwczovL2dpdGNvZGUubmV0L3FxXzMyMzk0MzUxL2RyLy0vcmF3L21hc3Rlci9pbWcv5paH5Lu257G75Z6LMi/mlofku7blpLkuc3ZnXFxcXFxcXCIgOiAkLnJlcXVpcmUoXFxcXFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcXFxcXCIpLmdldEljb24oaXRlbS5uYW1lKSkpLFxcXFxuICAgICAgICAgICAgICAgICAgICB1cmw6IChpdGVtLnR5cGUgPT0gXFxcXFxcXCJmb2xkZXJcXFxcXFxcIiA/IFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2hvbWVcXFxcXFxcIiA6ICQoKS5sYXp5UnVsZSgoaWQsIG5hbWUsIHVybCkgPT4ge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vcGFnZS9hcGlcXFxcXFxcIikuY2h1bGkoaWQsIG5hbWUsIHVybClcXFxcbiAgICAgICAgICAgICAgICAgICAgfSwgaXRlbS5maWxlX2lkLCBpdGVtLm5hbWUsIGl0ZW0udXJsKSksXFxcXG4gICAgICAgICAgICAgICAgICAgIGRlc2M6IGZvcm1hdERhdGUoRGF0ZS5wYXJzZShpdGVtLnVwZGF0ZWRfYXQpKSxcXFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwiYXZhdGFyXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBpdGVtLmZpbGVfaWRcXFxcbiAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgIH0pXFxcXG4gICAgICAgICAgICB9KVxcXFxuICAgICAgICAgICAgcmV0dXJuIGFyclxcXFxuICAgICAgICB9XFxcXG4gICAgfVxcXFxufVxcXFxuXFxcXG5nZXRfU2VhcmNoKGQsa3cscGFnZSlcXFxcblxcXFxuc2V0UmVzdWx0KGQpO1xcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIumYv+mHjGxhenlcXFwiLFxcXCJwYXRoXFxcIjpcXFwiYWxpbGF6eVxcXCIsXFxcInJ1bGVcXFwiOlxcXCJldmFsUHJpdmF0ZUpTKFxcXFxcXFwick8rMzd1RytiMkpibDkxSlhlMUFMZlp6RGxJUWdQRkhDNmNRMytXT1B4bFdlbTMvYys5MzlFQThoMTdVb2V1Qkx6bG1EL0thZVhSdklKV1B4dlJ2c25vdy9ZMDJlNWNtUDJqMHFvSTlwZnhYc0wxNkJVVUtOTUt5WnBweGdXQ3JwZmpEV3l2SGpIbC9WYUhCU1QvMU1EdW5VYTJXMlB5U1pVYlVxMjZPeXVCWVZqL1l6SWoyemxxTGVwUFplamp3a043MVNKUCtLbjNMNkRaYm1lcGRWVTJVZ3ArU1pDZmxCSHV5UEgyeTJXV3gzKzJqTWJuUTRESUlabUJLcHc3NnArOFlwTVUxbFZub3RlOG1tRW8xNjJiTDlDK0IxUVNZZE9ob3Q0Q0lzMTJoUUxDQld5WHRoZVExcG1vWXhibm9sWHZLUmJ2NVlZdHBGTVQ1T1pDZzlwckVqYWdZWi8vdWRLenkreEJTaEEwdUswTDhTZGtrY2gyTlRpa1NXZEEzY0trTERyUW5uVEx1MzRYcVZHZitNcVRGZ3VBa0RZUUY2dDZtc0VZUDFxcnJrQnNtRHluQXdhRU41Mi90TW95WEgvRlhidmJHRDl1c2ZxN2szY1NTeTMvV2hTRE9oOU1TMncra1ArbDRLU0pvand2cDJ4ZkN3REhLbEpBTnp3VmhpYUQzelhPeVVac0JxQnRFb0wvN3pPS0doTWtGR1VidmxTeDJyemtGcGFaUHVwbC96VmpVMGVQN1QvYUNlY1d6VzFWMjZvaWxGWXlYRlordjdFSEU4SFF5Q2llWm15TG9tdVZ0Z25keUhjZEMxdnFXeEZlWHJueWplbFhUWFROcUxZVHcyOHJaekRDUlVrd1A2ZERuNXpEdE12eEMzUE1lUTBXZEtHeW1zd0VlbnBZUUFxR3pQb2x6TDRNTGg4bWdGYWsyMWpTeVdBa0tFZHRqT01QNjA2VWhoeU5QWWhDMXJkMXhXOW5qOTNBZkNmcUJtUXRGRGlUM0ZxTlBGSFhrWjRXTWM4VktjL3Y4YWpnUlp2Ym9seHJFVnFtRlN2MG9RUlhrOWRjL0VTTHlwUGlDNkc0djBhQ3ZOQUdlaUxXK29mem1SQ3gxM1pDODBTcGwrVGo5Z2FsZ3hQTFI2eTd4elB6aHcrY1gxbmJnOTFPVHdPcVV5YTdidlRtOVBJNE55cUdBVmwzbWdGSVJYSnJibkFZOEZ3Vit4ZURhNWdXWXpKUEhpRTRtbkIxQ2ZaNkJ2V2VqK21KSW54cWtCMy9NekUzdUgyVXp5WFV4KzRZaDFGQUNjTzg3WXNSMDUvcDZYbW5tTytTTmJUN2pQLzNuYVc2YXgwVC9SNWNBQW02MlZ3M0EvYWFXbnpQaUxMcndnMmVGSFVrdkFBbkdBVXpNTFlJWWxNNHRvNUZLRk9VbGQwMy80SHR6ekcrWlRLWDc0ckQvZCtwNlZEbE85TU5FWnBBUHZORmhwZUhEZDZBcXFFY2FLTitkelJhb0tnNjZ1NVZIQk1hRFQ3MytHazB1aEpzU1lid01Yc1BMS3ROMFM1WFA3MW1GaTNoU0JnRUkyY1R3andUK2pjTDZnT0cyMlh4aFNDRFhIbGFzOWoxMlNoVGxKWGROLytCN2M4eHZtVXlsKzNiT0dGU1MwWUZLbG5jKzhhVHFIUW93aFpqNzUvTTUzc0tZWDJ6UmdPU1RhRDMxUm9RS1NFY1BEaU5Fc1oyVG9tTmtBbXZmMDMxK2ZXM2NobTFSd0t3K1g5R3hmbUhRN3JpRG9TUmlvVWFad0hlbEQxbG9FZXNDeUQ1MDFIN1JZOVp5UVU2cU1aZWZrZUdVQk9RWkNhWnNBd0VuU0QraTdDcUVoZzIvV2NmdG96aVJJeGhYWTJGN2xVNXBFbElHeVdwbkRWZ1p5TmNFYXhobkdRTGxNQ1EwT0ZJSkhqWURtMmpYQnRVdkZrcEovZCtDZ2VERDRvNmVOSHhNbEFKUnVzbkFoS3BrTU0rVWVnNjlXUGx2REhnOHJaYTVRbmN6cE4xMjNGL0FLNEp5VzFWMjZvaWxGWXlYRlordjdFSEU4QnBNa2grOVkwL0R6SERvT09QZ1B6WGd4cVpBWWJBQ1dhMGtJL0FaTGtEL2VsNkI1QklqaVlIZzFBSW1LbFhYUW1jTFMwc3dHaFoyQ29VemNCU2tFdlBPbERMN0R2enpzT1FuSysvYkNjNG45czdrZkVoNUdIK21WNEUzNzcxcDZpazlCK2p2SHI3amEwU2d2UW5DUU05SGRzbFpTUTlXeXN0V0szZGE4N0ltRisweUhMbDdyaXhLVTQ3V2d3U1RXMDZsQW1kaGpTSVVoNkZLMDF6RkZPd05TWmRNdTBwcXVFN2t5eGZGbzF6RkhIVi95OGc0T3VNdm1KM3FQRWV1YUVCRnhRN0VQaVAzL254YTBsaTlxYTJ0eGNoeW9nVWQxSC9aOUE0QnhqZVZ6RXNGQTJLdUFXR1RmK1Bmcmo0dTl0WFIvTDV3d1U1RktrZ3pUSjVYdDV1ZFdYUkg2dFZKTytOR0JqR0hjMW5QdE5rQ2pUeHphMUZuSllHOUZnR01rMHhqSFl6a1RNMG9CMElnZWY3N09lOG5QUUZhMjZFWXFRR2lzOGFFcVVCV1FQN0x2SzU0aXo4cDk4Y3RoNkpJTUZZcEtpR2dGaVppYkZRM3JQM3RERndzc0QydTUxdjZLUDNTN05UZ1VwYnRpY2xua0NtUXNzOWcvSDBlTGwxdUU4NlVNdnNPL1BPdzVDY3I3OXNKemljUE95VDJBWDRvRnE4dGp2NE1wcEp0am9qTnVCMngzcEY0TUtQM1gya21mWUdoRnRMbFNjNWhaYURTTndIU3ZmemxFR2FzSzZ1RUNOZ1NiaDN3TWRhRWZyUzZMSTI4YkJHR3Z3SlVReG11ZnloeVZET1JNc3E5UzAxL2x6citOMm9XS3pQRCtjUzhjZkxaSVd0ZWJldFc4QU1vd3BpUmdRWXRqUTRGTE5JQSs4R1hqNEJlcE1zK3U3VmRXWmNuZ2Y5RVZMWkFQUjJpZC9rVFVMMHRXVzQwVHdHMlpjaUczcnZkZEcxc04vdUlPaXlUTVBPNVNuOEZDUElqSWRoRWdxZmJMcUdsb0FHRmVOU0VvRkIwUll1MGhWbWJYY3dSREtVWWkwWFRMN2JEUXVCNk1STlN2ZHFidWY3bHJlazEyWUNSeXBocWZXUEZrZktmT2I0VmN2cGF2NVUwcllXM0lIaHFScjNua1BYOGIwMHhzU3hCRDFaR0pQS3BFZmxxaHd3b05sSUZYVTh4cFh3Rksya1NoQUx2YWZ2akw3RzYraXdzZUdLSHFveFZMaDVDRjVkc1NCNEVhQnN5MVVObTVkcFJtRktQTHRQb2RiaGpoTHRsYndyMTRrdHlyOEM5NmJ4V3JNcE5zVWszSHpDOU5OWVBta0JJNzlqakIrQWdyVFBSVjFyL0hzR3B6eU0zdCt3RXZkK0lqaVNOc2VzaE4renNpYllBdDdRT3pwNE84a3djcCtHUUpFTnd3UXVVOW54cERPRTFvZlppTW1GOGt2dVhMWW5DRW1DZUxyOEh5UnQ2Rk9yUVQ4UGM1dFFiOWpENTBla0VJTmx3L1ZzZkZiUmV5NTViZk9FdktQWE9ZWFZYcWZIdDBQaDA5VkZXRmFvSk9GUy9KUzk5bStGU3ZJRG4wZ3B6b1hoSVJxdzdCN25KZTRyaFV3Ui8yMzZwQ2xVamtXS2RLczFaRncvMVV2ZE4zd2RwUTdwOUtmK09Vc2pYQzM4MDJPZWZwUW9uVTc2eXN5S1RtVjQxNGJjWHpPSGdtR0hUSjFRazZEN2RhOHRkR1JaeWxscVdEczZVTXZzTy9QT3c1Q2NyNzlzSnppY2FpeEFkM0NldFVBdHNrUVZ4WUpodlpPVGV1SmFMYTQ1WkJaZytsWG0rWWFjaEFPK3lCNmJEZjBvWjV5NC9HZjQxaUhmOERCb1BtMjJObzFHUWpQQUNJNkNoeTdOQSt0MGxXU0RtWTZSYmRqenZjdVhJRXJncjFEL1B1Z0ZtaE9Wa1UxQU16YXdGMmZoeDlpQ1JuRkpqUWVxUHhnWlM5L1ovdDRCM1dYUElCMHdBcVRyem42b1IzRFpLTkRhMmozbmRYQlI4WUpTVWlPejVjcDRkaEJHdjlhM09KOWFXMm4vcndBZ2M1bXFKbnlyQ3pDM0tPZzFkVklsM3pBYW1uYnNMMXBNZUNyZ1ZIZm1GN0k5L2Nmdk1PVmNLV1VraE5Fam1rSDc5enpPejVEbXZLcGFTR2RRaHF4Y3lnakJ6blY0bnhzVE5zQlpsMUswVVRrL3dBUzhYeXl2TFNOWldjL3NJbi92V1NBSFU5dmJPNUh4SWVSaC9wbGVCTisrOWFlck9hZFFoMnRUVXNZaXFyMWFjYnRmWmxzOFhobHA5a3puUUdHR0wrT1JnZHB3OXRwdjJUcCtlMTEyMkhtZzhiMTVZWTdLN3N6eGhpSXlJdW00eWtEdlZNN29QN2YyZEFiWm4rZk0vaUlUYnNPazJQNHRiaXR4c3VvQWVycDQxdGZsWVlLQy9rVzg3dS9ZNGl2QVFGbjRSaDdhbk43Ty9UUnlUTzR2NEpWSlRzMzlCbmZJTXdSRmRqZVlBUWU5R1BibWdVWkxkRFEvRm9ha2V4WEZMSkNzcDJEcTdWYW1xYThUVDBEekZkdDBOTmVXeTdzTU1YbW01Q1A0TjlGeDUyMWJQMGw3c016d1lSU2VoSFVNWi8wTkg5UG0zeGNmSWUyQVlOTkFETE9uSWltN1ptbUtoa3RSZHRMU3ZqR1lFMVVVZUJLL25EbDBRdXFkQ2lqL1lCWk9Yc01oT0Nuc0VVY1I4OEd5bG01YlA0ZDhiNGliNngvaURBUGN5VEg1eDc4aE55YVJiYWgvWXVTNGowNVpuSllwSU85Z1B6VHliYkkvd0hOcjVvREtDbHA2Rm9KVnpmelVqVTdZQnBkWm1NODloTjFHODlvYUxBRXZpeHZvTnIvOW4wMGZNUUtLcE5oL210RkFxdWo4cWd5MTUybVJ6Z05wR3k3NkxWamVxd3E2alhYVFhsWFJQSmxCU0kyQnhFUzVCMFZkYS94N0JxYzhqTjdmc0JMM2ZpSFZkVHpnNkJLK3RGZElwTzc5NEhScmlob1RKQlJsRzc1VXNkcTg1QmFXbVI0TVdJdmtYTHdWakQ5MWUyR3BIRG42enlDam9qOXl5NmRLWUh4Z1pxQmVwVjVBWXYvbW85aXFla2l0V1B0S1N2NVUwcllXM0lIaHFScjNua1BYOGI5bU10cTJscEJrWkY1MlhFYmR5OXhTQWlpeVdEdWhFYThHSE5EOHE3b1BEalBhLzF6VitFaU56QWpneGtDd0ZqNGkxbEpjSG1yZVlMWURGTTZHUlhSQjRSaHlkcG0vUVQyVmJFc1diOWgrbDc2TDIyZ3RZN2QyQ2xJTDNDaGw1d3NzcnkwaldWblA3Q0ovNzFrZ0IxUFlQN21PTWR3Vmx3UC9BMnpvWllLeXdHMm1IWTZTTGVwcjFQNVYrRDBNRnVGTFZtZE5id0o2d2I3dFpoa0xFWTcvTEs4dEkxbFp6K3dpZis5WklBZFQyWjU4RkRSeFY3dVpaVlc2OVRWOEFBSXY3Skk2SVlmY1FNbko2aS9wamtZaUdkb1djL2FXZ0FQZXVja1FrVStoVWs4UU9MWHhNZzgzZDVOakEydFZodTlKcWI4YSszbDFjeWc2dVcwNG1ab0VCYklwYmNOd3lNSGpqMzBtRnQ3SndXTlhqVXJ4VW5BNTVxbG9JOGdkT1Fjc3J5MGpXVm5QN0NKLzcxa2dCMVBadmxxeEplVFZaSjVCdkJQdzhLUlFwd0ZpdEhTaCtFS0pHQ01vVXVGSTIxQnBCWlpydU1uY0VtS25XbVcrT05CMzFWN2hZaVVhVzVKblVxWTloejhDUW96M3hUb1ZYR3gyeUMzMHFhZUZYS29kVzE0S0hSUkY5SXB1K2dHQ29MQWtwcFBjRVlZQktBQ3NBUDdBM1lna1VScXRVZ0ZoazAyVFFzbGRPMlRvbklNTmY5UEtUN0RHb28vSlRycmxqeG9lbUp4S0xIUmRLNkppbGZQOG9TUVdrb0xKdjd0ckFaZnlaZXZnZCs4NUUvbXVHejhiYzBLeDE5TWh1NlBQbjlTcWtEdjF0Z3RJbDBaa2FtNGRiMzFIc0xmbTR2Y0tKd3Fua2ZISC9sQ3Y1N2ZaL2U3RFRXczVUR3lOSmlQS2ZsOUVhZk9nRXNERzJyMUE3MlJVZ1lqVWw5a1lWaVVIL3dPZkNVSUpRajVuUkZqTlpKdm5JMUROWlZ6SWtkem1yd0hPbWpFbVR2N0NTZ1ZFaTNTTW1IWUY2cytVTWloM3VvNmdQYlJoT2ZzMFVqengySWppNENXZFZQQXFPTWFaY3R4bFMzVHZqdmxhVzBUSTN5SUdiRTlScklISWgxanJhM0FwWXo5N01nL0RIWERjMk9hbkQxVmpFZHN5YUpaT3NLUVB0c2lqNXBqdFlZUVdNVjJUczdBb1lEOXdLUUJEalF3L0pyeG5RTlErTE5jOFpITDFXdnJaRFlzbUNqd1RHSFp3THJDQ0VFOEpzRmIxL2o4RXNaVDFmSU9YY3E3c2I2VTMzcFBnMDQ5NjkvcE85Sk1GcDZkTXFNVE1RSG85M1gyT2x3cDlUb3JpV3FCYnF1RmQvODNZVGtmK2g0V0VtOEpXQ25PRk55c1lrajRLSm1DYWRBN09STW1pU3lLemRPa1ZTZG1UUW1NMVdnMDdtOWpHTHBxNGRhZVhOTmxkUlFvbGk4bnRtcFgzeTVvWXdxcGpwUFdhMURPSFBsd1l5VDR4N0ErNUN1WFdneWgyMHBYNkVSVGpMbmNGV2dBY0tOQmpnNzcrMWJ3ZFZEMU05QnVaRDJZWnY4cWRXYm1zaHZHc2xRK051TXI2RG1DVE5DODVmaTB1TERYbHc2TE9BUVBoTXhUNjVpMHJobFRKRkVKbUhHQ3lOVkovZFBVSW4wK241aWMxMENkRXlpdmp5TU1saE5GNFZUajlKQmdGdTFVSlFYKzN2NFI4SE1WdFZkdXFJcFJXTWx4V2ZyK3hCeFBCYkZWWURpbWx1Q08wQUpHa2pyWFZUUE85eTVjZ1N1Q3ZVUDgrNkFXYUU1UWl1SG5ZWnpDVEszd2xndVpoMk5SWnBxTFJFZVpWZ1doSzF2QTR1bERBQThjRW8xOUc2N1lMbVRRSm96cFkzWGNzcnkwaldWblA3Q0ovNzFrZ0IxUFl4Y2RTU09mQU4yQThBNHBMTHdWYzBZVHVmZXV2K3g2ay81UTU0VThnSFVNc3J5MGpXVm5QN0NKLzcxa2dCMVBiUkprRGoyU1VKNGkzTmx2eEZuRVovR0tWUVgzb3FycFptMWVOVnlQdG9JSmFVcE9wWVN6Z3IxMkxiSEZSNWs5L0xLOHRJMWxaeit3aWYrOVpJQWRUMmcyQmtPa2FRSUFleGRTQVNHOVBOUmt4VFFKQ3NKTzdlaXFkRkh4dXJhTXVrSCszVkNyYTIyM1loZmdOL000K0lFZ01INkJ5SS9senlDb0hzODhlcytGUFZOUzlOSDNwcGFnQnRhMFFtYVJLZHVwSXlMeDJWd3c3OWxvRVFCNlFKeXl2TFNOWldjL3NJbi92V1NBSFU5cEtuM3NjSUxzWW90eW16SlFVbFdSajhPdWFHb29ZRzlTUUFoRUZDb3VRRHl5dkxTTlpXYy9zSW4vdldTQUhVOWdXdHVQK0dpQ0xWYUZ0dzE1aDBQS0xOTXNjQVU0K1JUd0dVUmJ5c1ZQYVJDVDRhUmV2dGs3cWZySUcwUHB2UzNjc3J5MGpXVm5QN0NKLzcxa2dCMVBaY0FoY1M0eXloRGIxQi9yU3EyVkwzMUdKL2NYdWF5RDdMZkY5aXFobXhvWHdjdHZVcm95WmdtL0hSK2dKejAwdWZIMDRrMnRrRFYxRGV4QVhyLzY5SldMaGxmcGt6SDl6OVArODFJcEJFSHBEbnJYcng5Q3dIQWZzNnpVZ0xTbHFSbnhHcWdaa0o1VUlGM0VQalRVSkNhQUdmcjZaV2xqSDZnZUhaZEk5TkpFekM2TGc0N0Q4dC9ydkgvYy85SzdMTEs4dEkxbFp6K3dpZis5WklBZFQyYjVhc1NYazFXU2VRYndUOFBDa1VLU2dxSWVVOERaRVFrbWUzRlhlRlRMNzFEZ1E2SkJJTE1oRUlWN3B5a0M3SzJoTjBBVUFYVTVjSUJJajl2WnRHcDg2VU12c08vUE93NUNjcjc5c0p6aWU3Zjk3a0twRE56Q2s2Y0JYMUdrQjBpM3BBTnNqOHNjc0pvSGhUNjBTaTRjNlVNdnNPL1BPdzVDY3I3OXNKemlkbWkwVS9xSWt6Um9JV1JRMGdPVHhFMXlSVzFlOWdVSlk4RkN2ZWhsZDJrRE5ERGxzL1RNaVU2NlA5QmVzUDFrUDZFQXRmQWxQeHB5N0xvVXFyQnk1OTJjWWo3SWtaTGxtRXY5bGlnRllCejU5d1h3SVhnUGRvNTRnSUw2UlNuNmExOE1XVEMrRFFKOGVra3JZSkdYNm45aktONW5JT0YzenpHMU9GQW1uZVdQVXBDYk9JZlJMRllucGxHWWhxbXlDakNuS3N5bnNSN3pYRG03aXhVa1h3bHVXaFZTSElEU0VtNEttMmpqV2VjcGs1R1hhSG84RGg2RksxQjEvblBzeGp0WFJWRzJjWjl2OUF5YjBuNGkyTHhvTG1ObFFKNHg0WHQzbDZJdjFjTi9ReHF4azV3cUhWbys1dm5RSTRxRlZQNlRVaG9wa1dVVGNCcWx4SDl6bnRVZHMxNXVMb2J5ZkoxZnFzL2tFdkZ0SSs2aUtUU2NackFjb09YVU9kODJmNjd3L2dzNmlsODd3NlRDTzloMTJHTVU0bzFwRUdPNklxYXdjMGFPR1kxd0tsR0l4emY2RTh5ZjZOOUVhSFBBa0ZLVUdxdmIrUjFDSDBMYXZWbjVsaFFyaXRacExBWGcrWXBmMmpXc3BrMWxzWHplRTBpeGVZOFJrYnVLRnVHYXpSTm85Q0R0NlVaVXo1MStiZkJVYWlFckxIWjFqMXJxV2lBMVZrd21iMkxiSzdnMSt1ejhSUytmNS9tb0wzRHVSa2RwWmJBcmFwTk55d2Q5WUJrNkJ5NmhCcFlCQUFPaWtJeG5FSDNyVUMvMTNTVXlJSnpYUm5wV1pycy9zMy9sdzhTTXlMb1dEVUJHaTR5NG1Zdk9tbFFhOURsbDZRMEIveXlIV201Wk5vNldvZ2JESS84ZDlkdmhuRXIyVEplUncxV25vRkptYUsvM25kNllIbWtpajlIM25uTlZXRHVCWW1GWmpvd29BcEVZOFY1OEtsMnFkTVRYYjJaM1lNV1ZYUlRFZkRYMGQ0SzVXZzRVdDNaNjRRMkplWlpld2kzTXk4U0ZmcUhsRlR0bXlTOVVNNTd5REloeWdOZUwvOGhwZlpJczNrVktsejVWc1RYcERhWjZjeU0vQjBVNXFUZXlQSmlzUGhrNnA5T3dqaU54aWg3S1FVak51SlBCTDBwaEkxQ21VdFlqV3pNaWxNUVRka0FhWFJQbllMVVJEYlliYzJVdkQwSUsyNlJZeGFISUwwZUZURjJORXBPa2xubDhGQ05JWm5GNVgvdERyOGpDT2kyeUZKQTJ1S2toVzFubWhJdjhMd0taVm5wNThBWUlzREE4eGd2eE1hMENFRy9uRmdscURsTldnc1lobEZqRmQ3cFBIb0tZOWpINlp4TTc0Y2RZcWJUUit0VnQ3ZzUzSFZyd2ZMaU1MOHJ1aHFkRk1FTjhpZGExUWVlOFhmNnBnbG8xZEtjWWJ3NkJtbjhlUVBzdUR0L2svdDkvN29UdVl2M0ZncHV6MGx0YUVGTVpXcEdwc3dvYVVzdnQyK3pIeVJubTNpLzgyOC83NEtFM0JQVnF4aVFmNzRYSTBubW1ZZFNMQjRiSi9YTllHN1hoNzArYmZGeDhoN1lCZzAwQU1zNmNpS1htQTBDcWVLRXhoZlZ2NXBKSzFBMlc2ZUdGYUxrVUNoeEZyWnpqNEZLTFN0NUtyaWtHNURoemZzbW1nZEpoWEdKbmxDcEdTdG9CSDgreWhEVTFaY0ozVEg5LzBBNU9IWTJUMW9wb05QbHNlc2lnZW02dm8wbjNRc3NkWnBMbHFrMkU5RkNXQ1RvTmtTb2NLbkFvZzEwM1plZFEzTjkrSDVKajErOEtYbWQyRms4TFZHM2YzbTYrc0FVSXpwMVZPSzlzdEwyVXB2eHBzSGJxTUN4WlZkdWV3alArTC9vOWF1RGFnYTR2bGVhSy84cC9NRC9UekppbVhRL2x3VGxud21pVlNuMlg2T0s5MFJmRXFqa0MvcklWS3FuYXpkUkkxbldZWm5pWEplNk12TEs4dEkxbFp6K3dpZis5WklBZFQydUhxdjZ1SE9aQjg5cG9ETnluSnh5c3NyeTBqV1ZuUDdDSi83MWtnQjFQWTI4TENZVFFTNHlSWHYwelZHSlUxVnl5dkxTTlpXYy9zSW4vdldTQUhVOXJQUlB4SWtVQU9PRmRQamFBM1IrcExpdEFjVGFXMDlnQk9UQkhBZHhsM2pzRDFjeFAra2E4RUZxMFcvTmxLWHo0bFVwOWwraml2ZEVYeEtvNUF2NnlHK052RHZLZnUzYWR4R3REQ3pQTXJld0VxWmw2TkJZVFIvZzdTUlM1RFQzSXhNY0pQZEwrZWJSWkN6eFFpSzJzc1BUWTk0bExmdG8ycXBaekVoeGdSMTRYa2ZkRXpGdW4rT3ZoTjRFcHZKVmg2ckZxNXgvc3VyeW9sYy9LZ1RJVUZadytvaFRPRVgxQ2RsMjQ0WktYdmF5eXZMU05aV2Mvc0luL3ZXU0FIVTlsL0gvYXlIblVqQ3BBU1huZVI4YTZUYUYyUU5ka3RZemxNem55eDY5MmZVTzg3Y2o4cjZpeWdicGxKSHU4UnBIOHNyeTBqV1ZuUDdDSi83MWtnQjFQYVdLN29WT2FESTBBZHNwOHI5QkVBM1N4enlMd3BvM3BFU3g0S05sMG84M2ZPRnc1Mnk3L3ZPL3M5WkkwN1ZwQWxHdXlJNkkwazlKcW1KSVRMaG4vRVVxQ1cxb2FNdEs3RW50U3ZpTTIzMkpTMnZnYjlyNE9haHdSMDRXcGUzNUZWVWV2ZXNJMXpsSkRHTWwrVUVRbUpkZkNEYVBYb21sZE1SMnUyTGFUaDhGUktLTTFJOUZCZjVuSWlWTmZGZDh2bndVQ3lrYStZd0g4U05jSkN3TkFrdnl5dkxTTlpXYy9zSW4vdldTQUhVOWlIcWZqVW1NbUdrNW84a0JYbnY2ZFduTDRJQzFkRmNUbHhPdlY4R2JTeS95eXZMU05aV2Mvc0luL3ZXU0FIVTlnUkN3YVNXT1N0SU1JRGsxbE9ocHozV0NsbmdlL0JmNDMrcmVjdHJja1lhQkxsMVdUN1FVbFg1cTZFR0YzaTJ0aUhmMVorL2p3OGNHN2F2U0xaQjFMZ3hrWjRta240KzJ3RG5rN2NnVmM4dUdLeGZWY0JsR3ZrKzB3dlFjUlcybDhtT0Uza2hOOE0xQzRjMFA5dnBqT0JzQ29hOUVYZzdzWmp2WUNtb0lMd20ya0ZhQ0hJNXN2SmxPVUtvT3RMZmRjc3J5MGpXVm5QN0NKLzcxa2dCMVBaRG1LSUlMcGVPTXlHZXRTNjZCWUZ5aG5hRm5QMmxvQUQzcm5KRUpGUG9WSS9KeGxrbzN4cXB6L0p0ME83SEpmSlovdTM1bzE1T1pqZENKOXV4eE1CNTN0Qkx5VlhxMkFmVnBYemovRkFmWXAvd3krd21JOWpRRGpXTEpZcll5SW5MSzh0STFsWnord2lmKzlaSUFkVDJlSUtBRVhBWXV6N205aXZVMTQ1Z01LSEhudzA2MWpJUTdxV3NENmtGMGhTOExVTTYza3Jkd3ZKRnVkWkF4RmZXeXl2TFNOWldjL3NJbi92V1NBSFU5bDVYRExucEw1SXRwaTZEZDFsNW5CVUhoVStOeGpuR29vTk1EYnZJSUhTbkY5MHQ0azlQRkpCRzVKeHhIQ0c5MEhwTGZFMUE1Y3VML1ZIanoxNERSTm1vazZxVkNXWHVEcXhDRjJ6L05Vdk4yWk1BWWVrOXhWNHlNTHoxdTZwU1ZwelFEaEM5a05TQ2V2UHpSWmozaE95YW01cWQrS2Vna2tFU09HOGtRUWVwcjJoQWxrMDhlWDkvaHN6Z1Bnb0c4WlY3TmErZytMQ1IySWV2dThkNUQwS2cyaGpVQnl3eWdVRUZxM1pleFc3UjRzajMxaXNFRUhXbWloUVBCdTVwREN2U3FSS1ZGWTlpQTk0OVdPY0UxeUc5YTYxSzdNc0xLQXFLb0ZEekdyQTRLRGRRb3FPVzlabVhPVzNEemZRemIvSFRKQmdEbE5OSXhvRjB4bkhBbXdNWUFzTk5YVFdXMVo2cy83L2lKZGZhbFhzMXI2RDRzSkhZaDYrN3gza1BRclFwakJTanVra000V3AvV2hGeTN3ZGlJM3pKN3kxdEx6N3laNmZlU3NiSktGMUh0aStad1lQbXVlMzd2c2ZQcTRBekcvaDVjK1NkYTNFUFNYQTYwWFRjUE8yVzRmdkVCTXIya1ZKRGNMTjR1YTNDZ2dLTTJmYkkzOG9IUmdtRC9kc2puUklmd3NITGhXTmpSRkdnN2lCVGVnb0JNNGJJT3FWakNHVG1FbmRHZitYSW53K3M3cDA1SkhLUWpsZ2tVR01rcFBDTmZRYlB3OEJoUWRUeDBrKzIzMzV4RCtxRzlFSUUrYVFjRW5tak4wdWU0YXozTmNaQnllQlc2NTJSUk16Q2dhc2UzUFNKTFI2WU4xUFZjZi9rUXVGOHltbS80VkhFVVZnWkthZW9ZNTBMWFIwczhMZXU0MU5PTGkyM09YSm5hNTZNaEh0akhoVDNYcnU0MHd2dTlTY0U3S3V1enJwVE9BZFBlZWFaUThvRDZ1anJVWWI5a3hOUnFDQWFtZzhpdWtXRFFZUktpUUNmenIxNEhpSmZ4UlNNSnBTZFJCR2M5azFHMWNqeVp5Qi9Na1BneW1UZkFiZkJld2dld0paK3o0NHR1bnVncFk2d2x0Vk5mYlkvYkVIbjc4TXdIS3hVTUI2VWppbGg4cFpPejZxa3FKMThvREFUZkdiT0tFeTU4bWVrUGVUZUdiWWJUelhxWVNSR1czRUpLUktMRHpaY1dhQTBZUHRzcHJKMzMyQm1hS3BiRGNQYmEyK3dhaFhiYnkzL29GRzBRcFp4cmxvaWg3L1BlcmJKS0JJVVlYYnNDVy8yUnBNN296VU5sOUVyeFZNTWRLRm1DNUtLNFpjTFB6UFpsSEVkSHQ1L2RlZEpuVHp4djBqbHVpZy9POHZUVWlMNlFCcUd5eXZMU05aV2Mvc0luL3ZXU0FIVTlxRERlU0V4czIzdFlwV2M1NGJ2akx2MTQ4SUpEeHBtYkRKT2tkSk5JNzVINnRqOUR5N1dLL1FmMnRFZDR2Q01qV2prZFNqY05kV3JMMVdEa1RmbDRsYzc2R3k1YXhyNm8rbVBHbGdJbzVnSHd6a1RyaW80akFSSDZad1RYcFJsSDNnbS9ST00yN01QcVR2QzhBYmZnemJhNWd6VndyNFY2MU5PemFRSzFNN3B2T3QzUElUWW9Gdm1DZmRoYjdTUWlqZmRsOU94TmNvTnZNWllXZysxekxuTEs4dEkxbFp6K3dpZis5WklBZFQyd0VyVUpra0FMTkg1UFl0aUhQR0E4bWMxNmFHOHFtNG5XVlJSRWY0K2FKZXhEQXZIM1B5VXhXRDFFRnNCNzk1dnl5dkxTTlpXYy9zSW4vdldTQUhVOXZINy92U1gxTVZ0cDVqTTBtcUlkS3dPMWhmelRGQ1haeGRuWlFuZSsxYkd5eXZMU05aV2Mvc0luL3ZXU0FIVTlqOG5SbWR5UDkvYUN2bG1qV05xL0dxeGdMUEZ6QWhwUTlBNTNSRFVrQW1yRytVd2hzQU5JWVllTTJWTUROcGtNTXNyeTBqV1ZuUDdDSi83MWtnQjFQWUk0amNZb2V5a0ZJemJpVHdTOUtZU1hOV0dTNjNRRXNpWjNtMWszRkF6TnNzcnkwaldWblA3Q0ovNzFrZ0IxUGFXTE1WYU9WRzQvZTFWUFRTQXpZOUg4N09DSlhleCtpQU9vVytLQW5yaUIzSm5hNTZNaEh0akhoVDNYcnU0MHd0bStDRVdYdW9ZOFhFSkZkdmNGY0g3eXl2TFNOWldjL3NJbi92V1NBSFU5bExPTGZyT1FNcEN4UWxEZzAyWUpBVExLOHRJMWxaeit3aWYrOVpJQWRUMms2Z3Z0YzF6NWFJbUJxRmduYlEwTlRFOUdMZmJPQ1NFaGQrcnBZNmt5dy9MSzh0STFsWnord2lmKzlaSUFkVDJDVnYzb1l0TTB6TUFTMXg0WHR5K3pzZWJHVjR1Rm1vY1Mwbk8zNGV3OExQTEs4dEkxbFp6K3dpZis5WklBZFQydUxKOTZLWFIzNnh5eXBtR2lwRnpGT1NQNUlHQ0UybEtxc0l6NldBdnR1VExLOHRJMWxaeit3aWYrOVpJQWRUMjF4L3dIcHpZYnFuVEI2TUJPbk9vV2tFOGc5VytwWlhreTdGWkkzSmpIeW5MSzh0STFsWnord2lmKzlaSUFkVDIwLzNhd29EMUlyNzgwZXlwL1hjSTY5bEVTRngxN0hVb3d0ejZEZ2o2TnpITEs4dEkxbFp6K3dpZis5WklBZFQyZm9rUEY2dTZhMGVnWFNDdGxMRHdjeE9PY2NZZXI5ZGczNFdtaTlpSDVWNDdvMktRNmJOaUNPMDJwTjUxR2ZvT3l5dkxTTlpXYy9zSW4vdldTQUhVOXZoQ1lnYVgreko1WVBpRnUvZ24xMHcyKzdjOXBtemtWWW1vRWswbkdxaWJ5eXZMU05aV2Mvc0luL3ZXU0FIVTloUDFTa21JNWJZQmw3UkduSitXN1NiTEs4dEkxbFp6K3dpZis5WklBZFQybGl6RldqbFJ1UDN0VlQwMGdNMlBSL096Z2lWM3Nmb2dEcUZ2aWdKNjRnZHlaMnVlaklSN1l4NFU5MTY3dU5NTFp2Z2hGbDdxR1BGeENSWGIzQlhCK3drK0drWHI3Wk82bjZ5QnRENmIwdDNMSzh0STFsWnord2lmKzlaSUFkVDJlSUtBRVhBWXV6N205aXZVMTQ1Z01LSEhudzA2MWpJUTdxV3NENmtGMGhRZUFFL2VDckdVYkYyYlZoTi9lOGRUV1I4dG83eVI0dTVoUXl2VUNjZ2I4Vk05QnVaRDJZWnY4cWRXYm1zaHZHc1cyMU9uOVhnMnA0c0R0bWRGekl1YlcxVjI2b2lsRll5WEZaK3Y3RUhFOE9CRWJUYW9Fd2N2VVNMcjhQMlV5VTRoeHBjd2ZHUzNxbXNjdWJQTW5IdXF1K0t4MWZFaVRFa1ZUejZzenJWRmRNc3J5MGpXVm5QN0NKLzcxa2dCMVBZM0dIazN2VHFmN3ZOejhnRXNQZGNDNXJTVis1TGliRE1rQXJ0cXJlbnZwT2wvU3JXd0J6ZGdWcyt5Z00rVDZUYzErZ0tqMEQvNjRvZjVocWZFT0R3RW9oTWprMC9JK1JLZGkwODlEZ29NYjhzcnkwaldWblA3Q0ovNzFrZ0IxUFlrWTJ1UjNjR0dlTkVxeGdIZmllaVdDZnQ4WWhua3JWQUZSYzd3Wm9qYUZ1MnRaSUpwT1RQanUwNlFnVU9FRVRWUlY5UytxMEg2bGZqbkJUblpWdFE5dlAzc2NGSGJqV1JmOEZSSkRLSVZRM2kyaWtRcFJkTzdJeHRrOS9qbWhTRWZxZUVPbEpTdVVqRitUNjBEZksvWE1XcGI2QVYyM2VwbytoWkpVZDNtYzFuSzBlRHgyRWR2SXM0bll0dFpSZjdMSzh0STFsWnord2lmKzlaSUFkVDJXME5pRWp1QmRBaDQ1SU9nL2dpT1FwcWJtcDM0cDZDU1FSSTRieVJCQjZuT2xETDdEdnp6c09RbksrL2JDYzRuZDF2bmxudFVOdmRVQ1Z0WkxlY2pwQlJKZGk3S2ZrcktaMk5YU0M3YnhtQmNiZENLUzEvU1haYUV6Mnc4cVA3cllPRDE2RVBQVVFaYVpwNVZlaCtHVk0vekcvamRUQVJLbzh3ZGRybXFuSEJiVlhicWlLVVZqSmNWbjYvc1FjVHdRUFBiNDBxK2d3OWhBZUhuRWUvNnYyZVNJcEFzeXVXNFpSTFYvSDNIdDd6NUdpRGtBSm9RM1BZWTM3ZEsyU0pEVWRzMTV1TG9ieWZKMWZxcy9rRXZGb1E1bVFNVFlJcGo4ZFRzWFJ3a1pkTEJmTnBpRms4TTlRNk1OcnhwSVZlcVVvVVJhSlgyZnRwSTJ3aGtPRExoRXlNN2g5aGIrenlNZWVqWTVZSHN6bEdSdEJZWWdyVjNiQlhTdy9aTGVyVnhJNVN4ZGZ3VURDb3N4SmhnLysrRVN6QjBITnB5Z0tBWmNwb1FtL3lpdVQ5dVhKMnJzajN4RXkxYmd6RnpRbmJ5eXl2TFNOWldjL3NJbi92V1NBSFU5cDZpa0VZK1NwSDlEQzJlK3lDbUoxemE2V2t1Z3VzNTdYeW11bjlsT1JXK1BQVEIvZ3N5b3UvcGx6d2hRMTZWTE1zcnkwaldWblA3Q0ovNzFrZ0IxUGFQem1SREdYTGpsbS9UVWJzMkthdjFCNnJNNVppY3VzeEtYV0tyVkQ5Ty9RRzRLT093K3VtRWF0SFRocWZ2OXhQTDA5ODdwQldFOGJpSjZzd0JJbzl1OWVPUGQ0TFBuQnh1QmhaMmV1MUlYQTBxK0xvdUVMSXlFQkxpbmxsc0RQTTBrSDVuMFU1Nzk4VjEyQklURnFoV0RRbXM1YzlIRE5wV29LdVlTNkpDbUxsSUVoRnR2eFp2dnExNE56NnRucUZvWWRzS2d6MGFqRmlnKzdGaW1hVTlyY1NVRUdhNUYwcUlocDRrTU1xZ2Z0M3FYRzArV2VlemZRWjhydW9HUFdJUmo4YjhlbkdkZ1BRRjFoTXdOT2xoa25aY1BQcFpqNDFWVTZUK0d6bE55Y3NyeTBqV1ZuUDdDSi83MWtnQjFQYitQZTJhUmZsZjN3T3Q2YTVuKzRNaFlvaG5NWDdPaklST1Y1RXpzNEFVQzhzcnkwaldWblA3Q0ovNzFrZ0IxUGFiQjQ5N2pVZE1qb3lFbVVCVjM0WFYxeVJXMWU5Z1VKWThGQ3ZlaGxkMmtNc3J5MGpXVm5QN0NKLzcxa2dCMVBaOTZ2ZUZmNW8wNkhsRmhGa0VialZOcnRHdmtWdlZ2TmxiVWxJRGkrRWorT0tGV1FWMktIdzd4SDc0RXZMSmdpUjkzaWxjRVhMQTQ1TlgxZkdNemZnNUtWTEFxVGZxaWlTakU1M25TRlFOWmhNVWhhOHZRRVI1SVdXQUF3VGVXdXZ4dzBKOWdaL3pTUTlQeVcyTG1YSyt0M0hUeEpDbkszY3p1TWFBTFZWOStJdnEyOStvODJjcUZIKzg5Ym9vWHJlSytncDJlT1ZwNnBSZTZJTDJXSW5ZenBReSt3Nzg4N0RrSnl2djJ3bk9KMUZJLzZadk13cStkVUV0RGViV2hFblcrK0YyM2ExUHpmdy9tQ0tYd2w1UHl5dkxTTlpXYy9zSW4vdldTQUhVOW5vR2R6VnRkYVkwRVBiYkZ3SGxsdFVVeFUxSXpLLzViVVlRak43NEJUUHRXdlpCWCtWdzlZRU5GS3RsMTFCa3pyTEhFYjRiRklZQkNxSFRpSEFFMmFpZ0hKOG1tdTVuU0dUdkNUZE8yYVEyUDNTWERYdjZCUWNRenE0NmhZT3UxUUExL05KUU5EcG9IRDB3TlNnSnJUcENIa244MGFMakRpLy9KTGlpV1YxanJHUEV3cnFJbGhLMTZjV2J2WEpLYk1zcnkwaldWblA3Q0ovNzFrZ0IxUGJwVGY4QlNCSE9zRUJkQWVnYm1OUEVOMUdKRnFOai9COFZDTFFXVEdVUUZFT0IybG9Ba3hJazE1M2I4TWlOQmdYTEs4dEkxbFp6K3dpZis5WklBZFQyQThma1lnU3g2WjJ5T25xcnFZeFp4K1pqRXBTbDJxVkZNYU5Fd0gzMFdGakxLOHRJMWxaeit3aWYrOVpJQWRUMmlWN3pJTjBlTnpqdzl0MW9ySFppVUFwL1QvT3czRlhBZEZKQUswTExuWWkvVWc4TXNJcGRNalg5dzlXcWs2cVZ5eXZMU05aV2Mvc0luL3ZXU0FIVTlwampBZlYvNy9wZTFNT0sxSkJ1cVpHNFQ4dUZaamlReTZyNTBlQ1crU1kvRmZiOVIyb0JianRTaUcxRGlCZ0hUM0FXeUFQZEF3NWMvdnlKSjdIRTZhbmhSV1RTQk1wb0V2dWtZdGNmaVVoL3l5dkxTTlpXYy9zSW4vdldTQUhVOW9EV3VlbEFxZmpNN2ZDSmZPYXN3UWdrbHBXVVV5akFzd29EdzZOWEg3aTBQbHpOcW9aR1NEd1RLUEF1bXpZaEgwV1NjZ2VqR0Z0YWFYMldzVk1NaEZlR2o5UEhvalF6aFBTL2h3RjErK2lsb2dhWTVreGRyTERVZFR1NCtNRXpsWXo3UEt5UThLankrendtY3lWM1M4ZEUrbWNhakRCUUQvRmZiOHQvaHN2bnpwUXkrdzc4ODdEa0p5dnYyd25PSjhzcnkwaldWblA3Q0ovNzFrZ0IxUFlpREthMWszQ0ZtN1VzRmpaMFdtcHp6cFF5K3c3ODg3RGtKeXZ2MnduT0o4c3J5MGpXVm5QN0NKLzcxa2dCMVBZYjJudUJBejVCN0hxRnpUTytjVFp5bXB1YW5maW5vSkpCRWpodkpFRUhxYzZVTXZzTy9QT3c1Q2NyNzlzSnppZTd2emxOaUtka21NQXp2YlpQOTlVSnl5dkxTTlpXYy9zSW4vdldTQUhVOW8rbmZia08xWTl0UEQxOWhXN2NBeHZsR2lqdXczQmFQMUszdm9obzdBNWdHcVB3ZHJCUGU3bzgydjZVYnZqc1N3eU9CVHBqeks0ZTd6YjlNWmNTUGlHelZjQW8vS3VGNmU2Q3FnM2ZqVGYxZll6WHF6ZU0vWDdBakNFY1VXS3RpY3NyeTBqV1ZuUDdDSi83MWtnQjFQWmJGVllEaW1sdUNPMEFKR2tqclhWVFBPOXk1Y2dTdUN2VVA4KzZBV2FFNWQvZzJhYWVwUTRxbytXUXVCb29BcE94ODd3SWM2YTNPQU5lcG14Skhid295eXZMU05aV2Mvc0luL3ZXU0FIVTlzdHJFWGpvYlh6OGYyR1pVVUFycTk0VFVORUlLTFF2dURBbEVSRFBQVVh1Y29VZkRXWHZxQVNER0o3NEF4MEVHK0VYTXdEcTRqeHJ2V01JVFo2Nm1VVkJlSEJVTGFuZzZyeSsvZFJWNU4zRXl5dkxTTlpXYy9zSW4vdldTQUhVOXRoR0VSdmZQRkx3TlJEVlphelEzWTR4VlhDcHY5dXhtNXl3TnFYK2p3bXd5eXZMU05aV2Mvc0luL3ZXU0FIVTluek1vQjV6UnN0ZnFNVEt1OFIyb2xITUljRUdlVk4vakxrSWNwNWRhdGVsZHZHaEtyTElqeWExMXlCcDJMTXR6UDlhSTdRaHRqcFBYSVFMM1hQVzcrNnpSRW9raFB2ZFJjSkkyVFhsSEJFWm9oblptR21pV0M3VTRvMHVra3lQQXhFYU9ObklWd2xEOURwb2x1L1F1a1NNTjIza21tbGJnU20rSXlvZjZsMUY5NHA0NlVzL2craXVXSEEyc2RIdUVBN25KMnZ1bGlGeFkxTzJqZlhsS3c2V3lrU2Z5YUVhdU8zL1hJblpiaDlnODlIY2llOHlGaUNranBOSlFqTFE3NTRBNU1WSFFyQThMSm80Y2RGeVVUcHp0UnFaVmZ4aHRDNmN5ZUk0V0FZZi9FaGNNSDZWdCtlS3lLdm93MmFJYzdhRXA4bmFjbHBxM0NtZUplcEVpN2oxelIrVkZFNjlReWJVc2RiNU9nbEN6enJWUFpySmh2OHQ0NUphSUxxSWx6WFh2aFJqeExxZEZxWUc2MHFrM3BFUHkvK0wvVURJcnZRS2k1RDRnb1hGUE85eTVjZ1N1Q3ZVUDgrNkFXYUU1WVJHanpsRThldTlFem5HSlFvTUhkNzRTM2xWeFUrV1FTMGRnSUYwb2RySlBPOXk1Y2dTdUN2VVA4KzZBV2FFNVQ0K1BkU0FnQk8yY0hmdWRsNkt5S0pSNndQd1BGcDhwZ3ZiMnZhZ1VjMFZsYTNBdDRLakI5SEppYW5CUm9temNUQ0lCeFNVRERFcFYxdGhwSU1tb1RGY0ppOUdrdURmWVQyUG5MdEN3aXBEQzlBNXdTMWNoQldvRTBmMmd4a3JkcWZLMnZHLy9iWm8zVUpFYTZ4QUltNkVlK2dVVE5qdVZCQVdFclBTUUJzSG5PNTI5ZkVUemFHb3JjaGJiZER6Vm1HV3hCbVNCbTg3alZ1aHhvY1lHREdjN25iMThSUE5vYWl0eUZ0dDBQTldrUklYK0JUSllORis1ZFYxVXhLTG00V1FiZG1YWVloODJVUDdOTjdwU1FET2xETDdEdnp6c09RbksrL2JDYzRudXJIVTB4RGRldVZtcTUvV0RUMXVoRHp2Y3VYSUVyZ3IxRC9QdWdGbWhPV0c5NVNXV0ZPS3ZLbnlycEpVS1VQbTdHY0c1UW8vcDBQeUpBTmhKL2hjS1NsWm05S1FXbSswTFVoREdWeldRWnN5OVJDOUhmZ2t2UlQ2bWx2SEx1S1lWRmFxOUhlbVJ0dldlbFZhQzl6aEFab2VVS25hNXAySUF3Y3R5aDRJUm5VbjE5UVJ4SWRhK1R4K25LZkQ0R1JnQlp4S1BhbUI2aXBNNi9Obm9OTGxieXJJRUJIL0hxWE1LQi9BS1JWemx4V255ckJGTTNrVkM3UnpnWTd0U1ZCcWNFUk1Hc2dSVEVKZzhyVE5OOFNGV0grUXUxWHNMYzA1VGEzV0NibnBWWjF4enFnNUZLTXNCMzc3ZitMTTlvbUJvbEQwSjJwUUFUTkY2UFliL0hvQ0lPTzZmNFdhcE9qWUN3eVJxdmdXZHI1dnpXMjFTblRkRDNoWTIrb1NqVG9Xai9ETWFTRnhWY1o3TW9XbDJvbjhHdEdRekd0REFKNStUM2hnTWNjb2M3OHhWU2s0ZHNZaWd3ZWtHMFNYSlpJNk0zdk5yRElaOHIvWlUrZVdQcHZhZ2V1d2g1bEpBR3o3ZTJhUzJRa25WbzNmcjczandnOE5QMUlzT0IxOS8raWEwNW9KUS9BUHQ3RTJhTmx2MHp6VzYzbEMxbUNJYmtsUmFtSnFacWF5Y1lGb3FBKzZLNnkyYXl4QnVoZnc2MjBvcGNFMngxNjhRTkROTkxlK3FYak1hRGFtemJvbVBPZytrblBFSkVvWnR1RmptUHptcmdqTkdDTnQzWCtBK01HQktUN0RGVkV1Nm16R2FRaUNhdWgzUTNFSitaZ1BuNE4ySTc2bUpGTkV5YllSR2pqWnlGY0pRL1E2YUpidjBMcEU0dUg5S3JFcS84YzlQbEsxOFR0VDg1Z3AzTUNWZE9Zekp3UUg0dmQ5K01GKzBreWZnd3YyWWtTRmhOZktYcU80ZlU1c1JRNkZOTDBBNVZnWGppVGtqeTRNQ3RhQ2tpK2VJQ0RYK1ZDQk02NVY5cWRxR3ovTFNKbkZ4SXZROGtCeFxcXFxcXFwiKVxcXCJ9XVwiLFwicHJveHlcIjpcIlwifSIsInBpY1VybCI6Imh0dHBzOi8vZ2l0Y29kZS5uZXQvcXFfMzIzOTQzNTEvZHIvLS9yYXcvbWFzdGVyL2ltZy/mlofku7bnsbvlnosyL+aWh+S7tuWkuS5zdmciLCJ0aXRsZSI6IjIwMFRCIOWIhuS6qyJ9
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement