xiaomianao666

小程序:哔哩Ⓡ

Aug 15th, 2022
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@哔哩Ⓡ@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6ImpzOlxubGV0IGh0bWwgPSBnZXRSZXNDb2RlKClcbi8vIGxvZyhodG1sKVxubGV0IHJlZ2V4ID0gL3dpbmRvd1xcLl9fSU5JVElBTF9TVEFURV9fPSguKj8pO1xcKGZ1bmN0aW9uXFwoXFwpXFx7L1xuLy8gbG9nKE1ZX1VSTClcbmlmKE1ZX1VSTC5zdGFydHNXaXRoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWlsJykpIHtcbiAgICBsZXQgY29kZSA9IEpTT04ucGFyc2UoaHRtbClcbiAgICB0cnkge1xuICAgICAgICBpZiAoY29kZS5kYXRhLlZpZXdbJ3JlZGlyZWN0X3VybCddKSB7XG4gICAgICAgICAgICBNWV9VUkwgPSBjb2RlLmRhdGEuVmlld1sncmVkaXJlY3RfdXJsJ107XG4gICAgICAgICAgICBodG1sID0gZmV0Y2goTVlfVVJMLCB7fSk7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGxvZyAoZS5tZXNzYWdlKVxuICAgIH1cbn1cbi8vIGxvZyhodG1sKVxuaWYgKE1ZX1VSTC5zdGFydHNXaXRoKCdodHRwczovL3d3dy5iaWxpYmlsaS5jb20vYmFuZ3VtaS9wbGF5LycpICYmIHJlZ2V4LnRlc3QoaHRtbCkpIHtcbiAgICAvLyDnlarliadcbiAgICAvLyBsb2coJ+WMuemFje+8micgKyBSZWdFeHAuJDEpXG4gICAgbGV0IHJlcyA9IEpTT04ucGFyc2UoUmVnRXhwLiQxKVxuICAgIGxldCByZXN1bHQgPSByZXMubmV3ZXN0RXBcbiAgICBpZighcmVzdWx0KSB7XG4gICAgICAgIHJlc3VsdCA9IHJlcy5tZWRpYUluZm8ubmV3X2VwXG4gICAgfVxuICAgIHNldFJlc3VsdChcIuabtOaWsOiHs++8muesrFwiICsgcmVzdWx0LnRpdGxlICsgXCLor51cIilcbn0gZWxzZSBpZiAoTVlfVVJMLnN0YXJ0c1dpdGgoJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FyYy9zZWFyY2gnKSkge1xuICAgIC8vIFVQIOS4u1xuICAgIGxldCByZXMgPSBKU09OLnBhcnNlKGh0bWwpXG4gICAgbGV0IHJlc3VsdCA9IHJlcy5kYXRhLmxpc3Qudmxpc3RbMF0udGl0bGVcbiAgICBzZXRSZXN1bHQoXCLmm7TmlrDoh7PvvJpcIiArIHJlc3VsdClcbn0gZWxzZSB7XG4gICAgc2V0UmVzdWx0KFwiXCIpXG59IiwidGl0bGUiOiLlk5Tlk6nik4ciLCJhdXRob3IiOiIxNjA2MTQyJlJ4JlJlYm9ybiIsInVybCI6Imhpa2VyOi8vZW1wdHkjZnlwYWdlIiwidmVyc2lvbiI6MjIwMzI2MDEsImNvbF90eXBlIjoibW92aWVfMSIsImNsYXNzX25hbWUiOiIiLCJ0eXBlIjoidmlkZW8iLCJjbGFzc191cmwiOiIiLCJhcmVhX25hbWUiOiIiLCJhcmVhX3VybCI6IiIsInNvcnRfbmFtZSI6IiIsInllYXJfbmFtZSI6IiIsInNvcnRfdXJsIjoiIiwieWVhcl91cmwiOiIiLCJmaW5kX3J1bGUiOiJqczpcbnZhciBfdHlwZSA9IGZldGNoKCdoaWtlcjovL2ZpbGVzL2JpbGkv5qC35byPLnR4dCcsIHt9KTtcbmlmIChfdHlwZSA9PSBcIuaWsOeJiFwiKSB7XG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFwiaGlrZXI6Ly9wYWdlL2NvbW1vblwiKSkucnVsZSk7XG59IGVsc2UgaWYgKF90eXBlID09IFwi5pen54mIXCIpe1xuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcImhpa2VyOi8vcGFnZS9jb21tb24yXCIpKS5ydWxlKTtcbn0iLCJzZWFyY2hfdXJsIjoiaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS9zZWFyY2gvYWxsL3YyP2tleXdvcmQ9KiomcGFnZT1meXBhZ2UmcGFnZXNpemU9MjA7Z2V0O3V0Zi04O3tVc2VyLUFnZW50QE1vemlsbGEvNS4wIChMaW51eO+8m++8myBBbmRyb2lkIDcuMO+8m++8myB3diBsaXRlIGJhaWR1Ym94YXBwKSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzQuMCBDaHJvbWUvNzguMC4zOTA0Ljk2IE1vYmlsZSBTYWZhcmkvNTM3LjM2IFQ3LzEwLjMgU2VhcmNoQ3JhZnQvMi42LjIgKEJhaWR177yb77ybIFAxIDcuMCl9IiwiZ3JvdXAiOiLikaDmjqjojZAiLCJzZWFyY2hGaW5kIjoianM6XG5ldmFsKEpTT04ucGFyc2UoZmV0Y2goXCJoaWtlcjovL3BhZ2Uvc1wiKSkucnVsZSk7IiwiZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMiIsImRldGFpbF9maW5kX3J1bGUiOiIiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoianM6XG5ldmFsKEpTT04ucGFyc2UoZmV0Y2goXCJoaWtlcjovL3BhZ2UveWNsXCIpKS5ydWxlKTtcbi8v6YCa6L+H5pCc57Si5p+l55yL6Ieq5bex55qEdWlk77yM54S25ZCO5pu/5o2i5Y2z5Y+vXG5pZiAoIWZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc3RhcmlkLnR4dCcse30pKXtcbnB1dFZhcignc3RhcmlkJywnOTI4MTIzJyk7XG59ZWxzZXtcbnB1dFZhcignc3RhcmlkJyxmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3N0YXJpZC50eHQnLHt9KSk7XG59XG5wdXRWYXIoXCJhY2Nlc3Nfa2V5XCIsZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9hY2Nlc3Nfa2V5LnR4dCcpKTtcbi8v6Ieq5bex5Y67YuermeWuouaIt+err+mmlumhteaKk+WMhe+8jOaJvuWIsGFwcC5iaWxpYmlsaS5jb23lvIDlpLTnmoTpk77mjqXvvIznhLblkI7miophY2Nlc3Nfa2V555qE5YC85aGr5YWl5LiK5pa5Jz0n5ZCO6Z2i5Y2z5Y+vXG5pZiAoIWZldGNoKCdoaWtlcjovL2ZpbGVzL2JpbGkv5qC35byPLnR4dCcsIHt9KSl7XG4gICAgd3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5qC35byPLnR4dCcsXCLmlrDniYhcIik7XG4gICAgfSIsInBhZ2VzIjoiW3tcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIEt5LiA57qnXCIsXCJwYXRoXCI6XCJjb21tb25cIixcInJ1bGVcIjpcInZhciByZXMgPSB7fTtcXG52YXIgZCA9IFtdO1xcbmlmIChNWV9VUkwuc3BsaXQoJyMnKVsxXSA9PSAnMScpIHtcXG4gICAgLy8ucmVwbGFjZSgnbS5iaWxpYmlsaS5jb20nLCAnd3d3LmJpbGliaWxpLmNvbScpLnJlcGxhY2UoL1xcXFw/L2csICfvvJ/vvJ8nKS5yZXBsYWNlKC9cXFxcJi9nLCAn77yG77yGJylcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn6Kej5p6QJyxcXG4gICAgICAgIHVybDogXFxcIidoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD0nKydodHRwczovLycraW5wdXQuc3BsaXQoJ2h0dHBzOi8vJylbMV0rJyNpbW1lcnNpdmVUaGVtZSMnXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAnaW5wdXQnLFxcbiAgICAgICAgZGVzYzogJ+ivt+i+k+WFpee9keWdgOaIluiAhWLnq5nlpI3liLbnmoTpk77mjqUnXFxuICAgIH0pO1xcblxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdXJsOiAkKFxcXCLmm7TlpJpcXFwiKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dFxcXCIsIGlucHV0KTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL3BhZ2UvbmV3ZGV0aWFsP3VybD1oaWtlcjovL2VtcHR5I2Z5cGFnZVxcXCI7XFxuICAgICAgICB9LCApLFxcbiAgICAgICAgLy9waWNfdXJsOiAnaHR0cHM6Ly9pbWcwLmJhaWR1LmNvbS9pdC91PTE2MTIxMDE0MjMsMTE0NTk4MjE2MyZmbT0yNTMmYXBwPTEzOCZmPUpQRUc/dz01MDAmaD00MjQnLFxcbiAgICAgICAgaW1nOlxcXCJodHRwczovL3d3dy5oZWxsb2ltZy5jb20vaW1hZ2VzLzIwMjIvMDMvMDEvR1lQeWFBLmpwZ1xcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ2NhcmRfcGljXzEnLFxcbiAgICAgICAgZGVzYzpcXFwiMFxcXCJcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+aOkuihjOamnCcsXFxuICAgICAgICB1cmw6ICQoXFxcIuaOkuihjOamnFxcXCIpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0XFxcIiwgaW5wdXQpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vcGFnZS9uZXdkZXRpYWw/dXJsPWhpa2VyOi8vZW1wdHkjZnlwYWdlXFxcIjtcXG4gICAgICAgIH0sICksXFxuICAgICAgICBwaWNfdXJsOiAnaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL3EvNTAucG5nJyxcXG4gICAgICAgIGNvbF90eXBlOiAnaWNvbl8yJ1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn55u05pKtJyxcXG4gICAgICAgIHVybDogJChcXFwi55u05pKtXFxcIikubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHRcXFwiLCBpbnB1dCk7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9wYWdlL25ld2RldGlhbD91cmw9aGlrZXI6Ly9lbXB0eSNmeXBhZ2VcXFwiO1xcbiAgICAgICAgfSwgKSxcXG4gICAgICAgIHBpY191cmw6ICdodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8vcS8yMi5wbmcnLFxcbiAgICAgICAgY29sX3R5cGU6ICdpY29uXzInXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfml7blhYnmnLonLFxcbiAgICAgICAgdXJsOiAkKFxcXCLml7blhYnmnLpcXFwiKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dFxcXCIsIGlucHV0KTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL3BhZ2UvbmV3ZGV0aWFsP3VybD1oaWtlcjovL2VtcHR5I2Z5cGFnZVxcXCI7XFxuICAgICAgICB9LCApLFxcbiAgICAgICAgcGljX3VybDogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9xLzU2LnBuZycsXFxuICAgICAgICBjb2xfdHlwZTogJ2ljb25fMidcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ1VQJyxcXG4gICAgICAgIHVybDogJChcXFwiVVDkuLtcXFwiKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dFxcXCIsIGlucHV0KTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL3BhZ2UvbmV3ZGV0aWFsP3VybD1oaWtlcjovL2VtcHR5I2Z5cGFnZVxcXCI7XFxuICAgICAgICB9LCApLFxcbiAgICAgICAgcGljX3VybDogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9xLzk4LnBuZycsXFxuICAgICAgICBjb2xfdHlwZTogJ2ljb25fMidcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+e0ouW8lScsXFxuICAgICAgICB1cmw6ICQoXFxcIue0ouW8lVxcXCIpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0XFxcIiwgaW5wdXQpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vcGFnZS9uZXdkZXRpYWw/dXJsPWhpa2VyOi8vZW1wdHkjZnlwYWdlXFxcIjtcXG4gICAgICAgIH0sICksXFxuICAgICAgICBwaWNfdXJsOiAnaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL3EvNDcucG5nJyxcXG4gICAgICAgIGNvbF90eXBlOiAnaWNvbl8yJ1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn5paw55WqJyxcXG4gICAgICAgIHVybDogJChcXFwi5paw55WqXFxcIikubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHRcXFwiLCBpbnB1dCk7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9wYWdlL25ld2RldGlhbD91cmw9aGlrZXI6Ly9lbXB0eSNmeXBhZ2VcXFwiO1xcbiAgICAgICAgfSwgKSxcXG4gICAgICAgIHBpY191cmw6ICdodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8vcS8yMy5wbmcnLFxcbiAgICAgICAgY29sX3R5cGU6ICdpY29uXzInXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfmvKvmuLgnLFxcbiAgICAgICAgdXJsOiAkKFxcXCLmvKvmuLhcXFwiKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dFxcXCIsIGlucHV0KTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL3BhZ2UvbmV3ZGV0aWFsP3VybD1oaWtlcjovL2VtcHR5I2Z5cGFnZVxcXCI7XFxuICAgICAgICB9LCApLFxcbiAgICAgICAgcGljX3VybDogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9xLzgzLnBuZycsXFxuICAgICAgICBjb2xfdHlwZTogJ2ljb25fMidcXG4gICAgfSk7XFxuXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+eZu+W9lScsXFxuICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvbmV3bG9naW4nLFxcbiAgICAgICAgcGljX3VybDogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9xLzIucG5nJyxcXG4gICAgICAgIGNvbF90eXBlOiAnaWNvbl8yJ1xcbiAgICB9KTtcXG59XFxucmVzLmRhdGEgPSBkO1xcbnNldFJlc3VsdChyZXMpXCJ9LHtcImNvbF90eXBlXCI6XCJwaWNfMV9jYXJkXCIsXCJuYW1lXCI6XCLku6PnoIEt5o6S6KGM5qacXCIsXCJwYXRoXCI6XCJwaGJcIixcInJ1bGVcIjpcIi8v5YiG57G7XFxuXFxuaWYgKE1ZX1VSTC5zcGxpdCgnIycpWzFdID09ICcxJykge1xcbnZhciBjMSA9ICdhbGwmYmFuZ3VtaSZndW9jaGFuJmRvdWdhJm11c2ljJmtub3dsZWRnZSZ0ZWNoJmNhciZsaWZlJmZvb2Qma2ljaGlrdSZmYXNoaW9uJmNpbmVwaGlsZSZvcmlnaW4mcm9va2llJmdhbWUmZW50JmRhbmNlJm1vdmllJnR2JmRvY3VtZW50YXJ5JmFuaW1hbCZndW9jaHVhbmcnO1xcbnZhciB3MSA9ICflhajpg6gm55Wq5YmnJuWbveWImybliqjnlLsm6Z+z5LmQJuefpeivhibnp5HmioAm5rG96L2mJueUn+a0uybnvo7po58m6ay855WcJuaXtuWwmiblvbHop4Ym5Y6f5YibJuaWsOS6uibmuLjmiI8m5aix5LmQJuiInui5iCbnlLXlvbEm55S16KeG5YmnJue6quW9leeJhybliqjnianlnIgm5Zu95Yib55u45YWzJztcXG52YXIgd29yZDEgPSB3MS5zcGxpdCgnJicpO1xcbnZhciBjbGFzczEgPSBjMS5zcGxpdCgnJicpO1xcbnZhciBsYWIxID0gZ2V0VmFyKCdsYWIxJywgJ+WFqOmDqCcpO1xcbnZhciBrZXkxID0gZ2V0VmFyKCdrZXkxJywgJ2FsbCcpO1xcblxcbiAgICBmb3IgKHZhciBpIGluIHdvcmQxKSB7XFxuICAgICAgICB2YXIgYSA9IHdvcmQxW2ldO1xcbiAgICAgICAgdmFyIGIgPSBjbGFzczFbaV07XFxuICAgICAgICB2YXIgYyA9IGEgKyAnJicgKyBiO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogIGEgPT0gbGFiMSA/IGdldEhlYWQoYSkgOiBhLFxcbiAgICAgICAgICAgIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgoYykgPT4ge1xcbiAgICAgICAgICAgICAgICBwdXRWYXIoXFxcImxhYjFcXFwiLCBjLnNwbGl0KCcmJylbMF0pO1xcbiAgICAgICAgICAgICAgICBwdXRWYXIoXFxcImtleTFcXFwiLCBjLnNwbGl0KCcmJylbMV0pO1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgICAgICAgICB9LCBjKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgICAgICB9KTtcXG4gICAgfVxcbn1cXG4vL+WIhuexu1xcbi8vbG9nKE1ZX1BBR0UpXFxuXFxudmFyIHVybCA9ICdodHRwczovL3d3dy5iaWxpYmlsaS5jb20vdi9wb3B1bGFyL3JhbmsvYWxsJztcXG5cXG5NWV9VUkwgPSB1cmwucmVwbGFjZSgnYWxsJywgZ2V0VmFyKCdrZXkxJykpO1xcblxcbnZhciB5bSA9IHJlcXVlc3QoTVlfVVJMLCB7fSkucmVwbGFjZSgvXFxcXFxcXFx1MDAyRi9nLCAnLycpO1xcbmlmICh5bS5pbmNsdWRlcygncmFuay10aXBzJykpIHtcXG5cXG4gICAgLyrmj5DnpLrkv6Hmga9cXG4gICAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6J+KAnOKAnCcrcGFyc2VEb21Gb3JIdG1sKHltLCcucmFuay10aXBzJiZUZXh0JykrJ+KAneKAnScsXFxuICAgICAgICBjb2xfdHlwZTondGV4dF8xJ1xcbiAgICAgIH0pO1xcbiAgICDmj5DnpLrkv6Hmga8qL1xcblxcbiAgICB2YXIgcGkgPSBKU09OLnBhcnNlKHltLnNwbGl0KCdcXFwicmFua0xpc3RcXFwiOicpWzFdLnNwbGl0KCcsXFxcInJhbmtOb3RlXFxcIicpWzBdKTtcXG4gICAgZm9yICh2YXIgaSA9IDA7IHBpICE9IG51bGwgJiYgaSA8IHBpLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICB2YXIgbnVtID0gaSArIDE7XFxuICAgICAgICB2YXIgcSA9IEpTT04uc3RyaW5naWZ5KHBpW2ldKTtcXG4gICAgICAgIGlmICghcGlbaV0udXJsKSB7XFxuICAgICAgICAgICAgdmFyIHJ1cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbO+8n++8n2FpZD3vvIbvvIZidmlkPScgKyBwaVtpXS5idmlkO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICB2YXIgcnVybCA9IHBpW2ldLnVybDtcXG4gICAgICAgIH1cXG4gICAgICAgIFxcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogcGlbaV0udGl0bGUsXFxuICAgICAgICAgICAgcGljX3VybDogcGlbaV0ucGljICsgUmVmZXJlcixcXG4gICAgICAgICAgICBkZXNjOiAoIXEuaW5jbHVkZXMoJ25hbWUnKSA/IHBpW2ldLm5ld19lcC5pbmRleF9zaG93IDogKCd1cDogJyArIHBpW2ldLm93bmVyLm5hbWUpKSxcXG4gICAgICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD0nICsgcnVybCArICcjaW1tZXJzaXZlVGhlbWUjJyxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3BpY18xX2NhcmQnXFxuICAgICAgICB9KTtcXG4gICAgICAgIC8qXFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTonTm8uJytudW0rJ1xcXFxuXFxcXG7igJjigJg8c21hbGw+JytwaVtpXS50aXRsZSsnXFxcXG4nKyghcS5pbmNsdWRlcygnbmFtZScpP3BpW2ldLm5ld19lcC5pbmRleF9zaG93OigndXA6ICcrcGlbaV0ub3duZXIubmFtZSkpKyc8L3NtYWxsPicsXFxuICAgICAgICAgICAgICAgIHBpY191cmw6cGlbaV0ucGljK1JlZmVyZXIsXFxuICAgICAgICAgICAgICAgIGRlc2M6JzAnLFxcbiAgICAgICAgICAgICAgICB1cmw6J2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPScrcnVybCsnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOidwaWNfMV9jYXJkJ1xcbiAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAqL1xcbiAgICB9XFxufSBlbHNlIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn4oCc4oCc6IqC5Yi25LiA54K577yM5LyR5oGv5ZWm77yB4oCd4oCdJyxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXG4gICAgfSk7XFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Luj56CBLXVw8J+Qt1wiLFwicGF0aFwiOlwidXBcIixcInJ1bGVcIjpcImNvbnN0IGhlYWRDb2xvciA9IFxcXCIjMzU4Y2NkXFxcIjtcXG5cXG4vL+aXtumXtOaIs+i9rOaNouaWueazlVxcbi8qXFxuZnVuY3Rpb24gZ2V0TG9jYWxUaW1lKG5TKSB7IFxcbiAgICAgdmFyIHNzcyA9IG5ldyBEYXRlKHBhcnNlSW50KG5TKSkudG9Mb2NhbGVTdHJpbmcoKS5zdWJzdHIoMCwxNyk7XFxuICAgICB2YXIgWU1EID0gc3NzLnNwbGl0KCfml6UnKVswXS5yZXBsYWNlKCflubQnLCctJykucmVwbGFjZSgn5pyIJywnLScpO1xcbiAgICAgcmV0dXJuIChZTUQpXFxufVxcbiovXFxuZnVuY3Rpb24gZ2V0TG9jYWxUaW1lKG5TKSB7XFxuICAgIHZhciBkYXRlID0gbmV3IERhdGUoblMpO1xcbiAgICB2YXIgWVkgPSBkYXRlLmdldEZ1bGxZZWFyKCkgKyAnLSc7XFxuICAgIHZhciBNTSA9IChkYXRlLmdldE1vbnRoKCkgKyAxIDwgMTAgPyAnMCcgKyAoZGF0ZS5nZXRNb250aCgpICsgMSkgOiBkYXRlLmdldE1vbnRoKCkgKyAxKSArICctJztcXG4gICAgdmFyIEREID0gKGRhdGUuZ2V0RGF0ZSgpIDwgMTAgPyAnMCcgKyAoZGF0ZS5nZXREYXRlKCkpIDogZGF0ZS5nZXREYXRlKCkpO1xcbiAgICB2YXIgdGltZSA9IFlZICsgTU0gKyBERDtcXG4gICAgcmV0dXJuIHRpbWVcXG59XFxudmFyIHNyID0gYEBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkv5pS26JePLnR4dFxcXCIsaW5wdXQpO3B1dFZhcigndXAnLCcnKTtwdXRWYXIoJ1VQJywnJyk7cHV0VmFyKCdzZXQnLCcnKTtyZWZyZXNoUGFnZShmYWxzZSk7XFxcInRvYXN0Oi8v5YiH5o2i5oiQ5YqfXFxcImA7XFxuLy/ml7bpl7TmiLPovazmjaJcXG5cXG52YXIgdWlkID0gZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cF9jYWNoZS50eHRcXFwiLCB7fSk7XFxudmFyIFVQX1VSTCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hcmMvc2VhcmNoP21pZD11aWQmcHM9MzAmdGlkPTAma2V5d29yZD0manNvbnA9anNvbnAmcG49JyArIHBhZ2VudW0gKyAnJm9yZGVyPXB1YmRhdGUnO1xcbnZhciB1cF91cmwgPSBVUF9VUkwucmVwbGFjZShcXFwidWlkXFxcIiwgdWlkKTtcXG52YXIgeHggPSBnZXRWYXIoJ2xiMicpLnNwbGl0KCdcXFxcbicpO1xcbi8v5pu05paw5aS05YOPXFxuZm9yICh2YXIgayBpbiB4eCkge1xcbiAgICBpZiAoIXh4W2tdLnNwbGl0KCcjIycpWzFdKSB7XFxuICAgICAgICB0cnkge1xcbiAgICAgICAgICAgIHZhciBwaWMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hY2MvaW5mbz9taWQ9JyArIHh4W2tdLnNwbGl0KCcmJicpWzFdICsgJyZqc29ucD1qc29ucCcsIHt9KSkuZGF0YS5mYWNlO1xcbiAgICAgICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgICAgIHZhciBwaWMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS52Yy5iaWxpYmlsaS5jb20vZHluYW1pY19zdnIvdjEvZHluYW1pY19zdnIvc3BhY2VfaGlzdG9yeT9ob3N0X3VpZD0nICsgeHhba10uc3BsaXQoJyYmJylbMV0gKyAnJm5lZWRfdG9wPTEnLCB7fSkpLmRhdGEuY2FyZHNbMF0uZGVzYy51c2VyX3Byb2ZpbGUuaW5mby5mYWNlO1xcbiAgICAgICAgfVxcbiAgICAgICAgdmFyIGZhY2UgPSB4eFtrXSArICcjIycgKyBwaWM7XFxuICAgICAgICB2YXIgZmFjZSA9IGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXAudHh0XFxcIiwge30pLnJlcGxhY2UoeHhba10sIGZhY2UpO1xcbiAgICAgICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXAudHh0XFxcIiwgZmFjZSk7XFxuICAgIH1cXG59XFxuXFxuXFxuXFxuaWYgKE1ZX1VSTC5zcGxpdCgnIycpWzFdID09ICcxJykge1xcbiAgICB2YXIgc190YWIgPSBmZXRjaCgnaGlrZXI6Ly9maWxlcy9iaWxpL+aUtuiXjy50eHQnLCB7fSk7XFxuICAgIGlmIChnZXRWYXIoXFxcImFjY2Vzc19rZXlcXFwiKSAmJiBnZXRWYXIoJ3N0YXJpZCcpKSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBzX3RhYiA9PSAn5o6o6I2QJyA/ICfwn5S0JyArIGdldEhlYWQoc190YWIpIDogJ+Kaqu+4j+aOqOiNkCcsXFxuICAgICAgICAgICAgdXJsOiAn5o6o6I2QJyArIHNyLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBzX3RhYiA9PSAn5pS26JePJyA/ICfwn5S0JyArIGdldEhlYWQoc190YWIpIDogJ+Kaqu+4j+aUtuiXjycsXFxuICAgICAgICAgICAgdXJsOiAn5pS26JePJyArIHNyLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBzX3RhYiA9PSAn6L+955WqJyA/ICfwn5S0JyArIGdldEhlYWQoc190YWIpIDogJ+Kaqu+4j+i/veeVqicsXFxuICAgICAgICAgICAgdXJsOiAn6L+955WqJyArIHNyLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBzX3RhYiA9PSAn6L+95YmnJyA/ICfwn5S0JyArIGdldEhlYWQoc190YWIpIDogJ+Kaqu+4j+i/veWJpycsXFxuICAgICAgICAgICAgdXJsOiAn6L+95YmnJyArIHNyLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICAgICAgfSk7XFxuICAgIH1cXG4gICAgLy/oh6rlt7HnmoTlhbPms6hcXG4gICAgdmFyIHN0YXJqc29uID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYWNjL2luZm8/bWlkPScgKyBnZXRWYXIoJ3N0YXJpZCcpICsgJyZqc29ucD1qc29ucCcsIHt9KSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogKGdldFZhcignVVAnKSA9PSAn5YWz5rOoJyA/ICfimLrvuI8nIDogJycpICsgc3Rhcmpzb24uZGF0YS5uYW1lLFxcbiAgICAgICAgcGljX3VybDogc3Rhcmpzb24uZGF0YS5mYWNlICsgUmVmZXJlcixcXG4gICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignVVAnLCBnZXRWYXIoJ1VQJyk9PSflhbPms6gnPyfmipjlj6AnOiflhbPms6gnKTtwdXRWYXIoJ3NldCcsJycpO2NsZWFyVmFyKCdodG0nKTt3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS/mlLbol48udHh0JywnJyk7cmVmcmVzaFBhZ2UoZmFsc2UpOyd0b2FzdDovLycrZ2V0VmFyKCdVUCcsJ+S4k+azqCcpXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAnaWNvbl8yX3JvdW5kJ1xcbiAgICB9KTtcXG4gICAgLy/oh6rlt7HnmoTlhbPms6hcXG5cXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAnPHN0cm9uZz4nICsgJ+KAmOKAmFVQ4oCZ4oCZJyArICc8L3N0cm9uZz4nICsgKGdldFZhcigndXAnLCAn5oqY5Y+gJykgPT0gJ+WxleW8gCcgPyAn8J+ZiScgOiAn8J+ZiCcpLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCd1cCcsIGdldFZhcigndXAnKT09J+WxleW8gCc/J+aKmOWPoCc6J+WxleW8gCcpO3B1dFZhcignc2V0JywnJyk7d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5pS26JePLnR4dCcsJycpO3JlZnJlc2hQYWdlKGZhbHNlKTsndG9hc3Q6Ly/lt7InK2dldFZhcigndXAnLCflsZXlvIAnKTtcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxuICAgIH0pO1xcblxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IGdldFZhcignc2V0JykgIT0gJycgPyAoZ2V0VmFyKCdzZXQnKSA9PSAn572u6aG2JyA/ICc8c3Ryb25nPicgKyAn4oCc4oCc572u6aG2JyArICc8L3N0cm9uZz4nIDogJzxzdHJvbmc+JyArICfigJzigJzlj5blhbPigJ3igJ0nICsgJzwvc3Ryb25nPicpIDogJ+iuvue9ricsXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ3NldCcsIGdldFZhcignc2V0Jywn5bGV5byAJyk9PSflj5blhbMnPyfnva7pobYnOiflj5blhbMnKTtwdXRWYXIoJ3VwJywnJyk7cHV0VmFyKCdVUCcsJycpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+aUtuiXjy50eHQnLCcnKTtyZWZyZXNoUGFnZShmYWxzZSk7J3RvYXN0Oi8vJytnZXRWYXIoJ3NldCcsJ+WxleW8gCcpKydpbmd+J1xcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgfSk7XFxuXFxuICAgIGlmIChnZXRWYXIoJ1VQJykgPT0gJ+WFs+azqCcpIHtcXG4gICAgICAgIGlmIChnZXRWYXIoJ2h0bScpID09ICcnIHx8IGdldFZhcigndXAnKSA9PSAn5bGV5byAJykge1xcbiAgICAgICAgICAgIHZhciB1cmxzID0gW107XFxuICAgICAgICAgICAgdmFyIHN1cmwgPSAnaHR0cHM6Ly9zcGFjZS5iaWxpYmlsaS5jb20vaDUvZm9sbG93P3R5cGU9Zm9sbG93Jm1pZD0nICsgZ2V0VmFyKCdzdGFyaWQnKTtcXG4gICAgICAgICAgICB2YXIgaWQgPSBzdXJsLnNwbGl0KCdtaWQ9JylbMV07XFxuICAgICAgICAgICAgdmFyIGNvZGUgPSBmZXRjaChzdXJsLCB7fSk7XFxuICAgICAgICAgICAgdmFyIHN0YXJsaXN0ID0gSlNPTi5wYXJzZSgne1xcXCJteScgKyBjb2RlLnNwbGl0KCd7XFxcIm15JylbMV0uc3BsaXQoJ319OycpWzBdICsgJ319Jyk7XFxuXFxuICAgICAgICAgICAgdmFyIHN0YXJscyA9IHN0YXJsaXN0WydsaXN0J11bJ2dldEZvbGxvd0xpc3QtcGFnZS1taWQtJyArIGlkXVsncmVzdWx0J107XFxuICAgICAgICAgICAgZm9yICh4IGluIHN0YXJscykge1xcbiAgICAgICAgICAgICAgICB2YXIgeXVybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hcmMvc2VhcmNoP21pZD0nICsgc3RhcmxzW3hdLm1pZCArICcmcHM9MzAmdGlkPTAma2V5d29yZD0manNvbnA9anNvbnAmcG49ZnlwYWdlJm9yZGVyPXB1YmRhdGUnO1xcbiAgICAgICAgICAgICAgICB1cmxzLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdXJsOiB5dXJsLnJlcGxhY2UoL2Z5cGFnZS9nLCAnMScpXFxuICAgICAgICAgICAgICAgIH0pO1xcblxcbiAgICAgICAgICAgICAgICBpZiAoZ2V0VmFyKCd1cCcpID09ICflsZXlvIAnKVxcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogc3RhcmxzW3hdLnVuYW1lLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzogc3RhcmxzW3hdLmZhY2UgKyBSZWZlcmVyLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9nejI/dXJsPScgKyB5dXJsLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnaWNvbl9yb3VuZF80J1xcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICB9XFxuICAgIC8v5YWz5rOo5YiX6KGoXFxuXFxuICAgIGlmIChnZXRWYXIoJ3VwJykgPT0gJ+WxleW8gCcgJiYgZ2V0VmFyKCdVUCcpICE9ICflhbPms6gnKSB7XFxuICAgICAgICBmb3IgKHZhciBrIGluIHh4KSB7XFxuICAgICAgICAgICAgdmFyIHN0ID0gdWlkID09IHh4W2tdLnNwbGl0KCcmJicpWzFdLnNwbGl0KCcjIycpWzBdID8gJ+KckycgOiAnJztcXG4gICAgICAgICAgICB2YXIgcGljID0geHhba10uc3BsaXQoJyMjJylbMV07XFxuICAgICAgICAgICAgLyrlpLTlg4/ojrflj5ZcXG4gICAgICAgICAgICAgICAgdHJ5e1xcbiAgICAgICAgICAgICAgICAgdmFyIHBpYyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FjYy9pbmZvP21pZD0nK3h4W2tdLnNwbGl0KCcmJicpWzFdKycmanNvbnA9anNvbnAnLHt9KSkuZGF0YS5mYWNlO1xcbiAgICAgICAgICAgICAgICB9Y2F0Y2goZSl7XFxuICAgICAgICAgICAgICAgICAgIHZhciBwaWMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS52Yy5iaWxpYmlsaS5jb20vZHluYW1pY19zdnIvdjEvZHluYW1pY19zdnIvc3BhY2VfaGlzdG9yeT9ob3N0X3VpZD0nK3h4W2tdLnNwbGl0KCcmJicpWzFdKycmbmVlZF90b3A9MScse30pKS5kYXRhLmNhcmRzWzBdLmRlc2MudXNlcl9wcm9maWxlLmluZm8uZmFjZTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICovXFxuICAgICAgICAgICAgaWYgKCFwaWMpIHtcXG4gICAgICAgICAgICAgICAgdmFyIHBpYyA9ICdodHRwczovL2dpdGVlLmNvbS9DaGVyaXNoUngvaW1hZ2V3YXJlaG91c2UvcmF3L21hc3Rlci9pbWFnZS8xMzA5NjcyNWZlNTZjZTljZjY0M2EwZTRjZDBjMTU5Yy5naWYnO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogc3QgKyB4eFtrXS5zcGxpdCgnJiYnKVswXSxcXG4gICAgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9lbXB0eSMnICsgeHhba10uc3BsaXQoJyYmJylbMV0gKyBgQGxhenlSdWxlPS5qczppbnB1dD1pbnB1dC5zcGxpdCgnIycpWzFdO3B1dFZhcjIoJ3VpZCcsaW5wdXQpO3dyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwX2NhY2hlLnR4dFxcXCIsaW5wdXQpO3B1dFZhcigndXAnLCfmipjlj6AnKTtyZWZyZXNoUGFnZShmYWxzZSk7XFxcInRvYXN0Oi8v5YiH5o2i5oiQ5YqfXFxcIjtgLFxcbiAgICAgICAgICAgICAgICBwaWNfdXJsOiBwaWMgKyBSZWZlcmVyLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2ljb25fcm91bmRfNCdcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG4gICAgfVxcblxcbiAgICAvL+WPluWFs+ebuOWFs1xcblxcbiAgICBpZiAoZ2V0VmFyKCdzZXQnKSA9PSAn5Y+W5YWzJykge1xcblxcbiAgICAgICAgZm9yICh2YXIgayBpbiB4eCkge1xcbiAgICAgICAgICAgIHZhciBzdCA9IHVpZCA9PSB4eFtrXS5zcGxpdCgnJiYnKVsxXSA/ICfinJMnIDogJyc7XFxuICAgICAgICAgICAgdmFyIHBpYyA9IHh4W2tdLnNwbGl0KCcjIycpWzFdO1xcbiAgICAgICAgICAgIC8q5aS05YOP6I635Y+WXFxuICAgICAgICAgICAgICAgIHRyeXtcXG4gICAgICAgICAgICAgICAgIHZhciBwaWMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hY2MvaW5mbz9taWQ9Jyt4eFtrXS5zcGxpdCgnJiYnKVsxXSsnJmpzb25wPWpzb25wJyx7fSkpLmRhdGEuZmFjZTtcXG4gICAgICAgICAgICAgICAgfWNhdGNoKGUpe1xcbiAgICAgICAgICAgICAgICAgICB2YXIgcGljID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkudmMuYmlsaWJpbGkuY29tL2R5bmFtaWNfc3ZyL3YxL2R5bmFtaWNfc3ZyL3NwYWNlX2hpc3Rvcnk/aG9zdF91aWQ9Jyt4eFtrXS5zcGxpdCgnJiYnKVsxXSsnJm5lZWRfdG9wPTEnLHt9KSkuZGF0YS5jYXJkc1swXS5kZXNjLnVzZXJfcHJvZmlsZS5pbmZvLmZhY2U7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAqL1xcbiAgICAgICAgICAgIGlmICghcGljKSB7XFxuICAgICAgICAgICAgICAgIHZhciBwaWMgPSAnaHR0cHM6Ly9naXRlZS5jb20vQ2hlcmlzaFJ4L2ltYWdld2FyZWhvdXNlL3Jhdy9tYXN0ZXIvaW1hZ2UvMTMwOTY3MjVmZTU2Y2U5Y2Y2NDNhMGU0Y2QwYzE1OWMuZ2lmJztcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfinYwnICsgc3QgKyB4eFtrXS5zcGxpdCgnJiYnKVswXSxcXG4gICAgICAgICAgICAgICAgdXJsOiB4eFtrXSArIGBAbGF6eVJ1bGU9LmpzOnZhciBzYz1pbnB1dCsnXFxcXFxcXFxuJzt2YXIgeHI9Z2V0VmFyKCdsYjInKSsnXFxcXFxcXFxuJzt2YXIgeHo9eHIucmVwbGFjZShzYywnJyk7d3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2pzL3VwLmpzXFxcIix4eik7cmVmcmVzaFBhZ2UoZmFsc2UpOyd0b2FzdDovL+WPluWFs+aIkOWKn++8gemTgeWtkOWGjeingfCfpoYnYCxcXG4gICAgICAgICAgICAgICAgcGljX3VybDogcGljICsgUmVmZXJlcixcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdpY29uX3JvdW5kXzQnXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgIH1cXG5cXG4gICAgLy/nva7pobbnm7jlhbNcXG5cXG4gICAgaWYgKGdldFZhcignc2V0JykgPT0gJ+e9rumhticpIHtcXG5cXG4gICAgICAgIGZvciAodmFyIGsgaW4geHgpIHtcXG4gICAgICAgICAgICB2YXIgc3QgPSB1aWQgPT0geHhba10uc3BsaXQoJyYmJylbMV0gPyAn4pyTJyA6ICcnO1xcbiAgICAgICAgICAgIHZhciBwaWMgPSB4eFtrXS5zcGxpdCgnIyMnKVsxXTtcXG4gICAgICAgICAgICAvKuWktOWDj+iOt+WPllxcbiAgICAgICAgICAgICAgICB0cnl7XFxuICAgICAgICAgICAgICAgICB2YXIgcGljID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYWNjL2luZm8/bWlkPScreHhba10uc3BsaXQoJyYmJylbMV0rJyZqc29ucD1qc29ucCcse30pKS5kYXRhLmZhY2U7XFxuICAgICAgICAgICAgICAgIH1jYXRjaChlKXtcXG4gICAgICAgICAgICAgICAgICAgdmFyIHBpYyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLnZjLmJpbGliaWxpLmNvbS9keW5hbWljX3N2ci92MS9keW5hbWljX3N2ci9zcGFjZV9oaXN0b3J5P2hvc3RfdWlkPScreHhba10uc3BsaXQoJyYmJylbMV0rJyZuZWVkX3RvcD0xJyx7fSkpLmRhdGEuY2FyZHNbMF0uZGVzYy51c2VyX3Byb2ZpbGUuaW5mby5mYWNlO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgKi9cXG4gICAgICAgICAgICBpZiAoIXBpYykge1xcbiAgICAgICAgICAgICAgICB2YXIgcGljID0gJ2h0dHBzOi8vZ2l0ZWUuY29tL0NoZXJpc2hSeC9pbWFnZXdhcmVob3VzZS9yYXcvbWFzdGVyL2ltYWdlLzEzMDk2NzI1ZmU1NmNlOWNmNjQzYTBlNGNkMGMxNTljLmdpZic7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn8J+UnScgKyBzdCArIHh4W2tdLnNwbGl0KCcmJicpWzBdLFxcbiAgICAgICAgICAgICAgICB1cmw6IHh4W2tdICsgYEBsYXp5UnVsZT0uanM6dmFyIHNjPWlucHV0KydcXFxcXFxcXG4nO3ZhciB4cj1nZXRWYXIoJ2xiMicpKydcXFxcXFxcXG4nO3ZhciB4ej14ci5yZXBsYWNlKHNjLCcnKTt3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvanMvdXAuanNcXFwiLHNjK3h6KTtyZWZyZXNoUGFnZShmYWxzZSk7J3RvYXN0Oi8v572u6aG25oiQ5Yqf8J+UnSdgLFxcbiAgICAgICAgICAgICAgICBwaWNfdXJsOiBwaWMgKyBSZWZlcmVyLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2ljb25fcm91bmRfNCdcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG4gICAgfVxcblxcblxcbn1cXG4vL2QucHVzaCh7dGl0bGU6eHh9KTtcXG5pZiAoc190YWIgPT0gJ+aOqOiNkCcpIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvZmVlZFxcXCIpKS5ydWxlKTtcXG59IGVsc2UgaWYgKHNfdGFiID09ICfmlLbol48nKSB7XFxuICAgIGlmIChNWV9VUkwuc3BsaXQoJyMnKVsxXSA9PSAnMScpIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL3ZpZGVvXFxcIikpLnJ1bGUpO1xcbn0gZWxzZSBpZiAoc190YWIgPT0gJ+i/veWJpycpIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvZHNqXFxcIikpLnJ1bGUpXFxufSBlbHNlIGlmIChzX3RhYiA9PSAn6L+955WqJykge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9mYW5qdVxcXCIpKS5ydWxlKVxcbn0gZWxzZSBpZiAoZ2V0VmFyKCdVUCcpICE9ICflhbPms6gnICYmIGdldFZhcigndXAnKSAhPSAn5bGV5byAJyAmJiBnZXRWYXIoJ3NldCcpID09ICcnKSB7XFxuICAgIHZhciBqc29uID0ge307XFxuICAgIGV2YWwoJ2pzb249JyArIGZldGNoKHVwX3VybCwge30pKTtcXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBqc29uLmRhdGEubGlzdC52bGlzdC5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgdmFyIHIgPSB7fTtcXG4gICAgICAgIHZhciBqID0ganNvbi5kYXRhLmxpc3Qudmxpc3RbaV07XFxuICAgICAgICB2YXIgdCA9IE51bWJlcihqLmNyZWF0ZWQpICogMTAwMDtcXG5cXG5cXG4gICAgICAgIHZhciB0aW1lID0gZ2V0TG9jYWxUaW1lKHQpO1xcblxcbiAgICAgICAgaWYgKGoucGxheSA+IDEwMDAwKVxcbiAgICAgICAgICAgIHZhciBwbGF5ID0gKGoucGxheSAvIDEwMDAwKS50b0ZpeGVkKDEpICsgJ+S4hyc7XFxuICAgICAgICBlbHNlXFxuICAgICAgICAgICAgdmFyIHBsYXkgPSBqLnBsYXk7XFxuXFxuICAgICAgICB2YXIgcGljcyA9IChqLnBpYy5pbmRleE9mKCc6JykgIT0gLTEpID8gai5waWMgOiAnaHR0cHM6JyArIGoucGljO1xcblxcbiAgICAgICAgci5waWNfdXJsID0gcGljcyArIFJlZmVyZXI7XFxuICAgICAgICByLnVybCA9ICdoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD1odHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWls77yf77yfYWlkPe+8hu+8hmJ2aWQ9JyArIGouYnZpZCArICcjaW1tZXJzaXZlVGhlbWUjJztcXG4gICAgICAgIHIudGl0bGUgPSBqLnRpdGxlO1xcbiAgICAgICAgci5jb2xfdHlwZSA9ICdtb3ZpZV8xX3ZlcnRpY2FsX3BpYyc7XFxuICAgICAgICByLmRlc2MgPSAn5pe26ZW/77yaJyArIGoubGVuZ3RoICsgJyAg5pKt5pS+6YeP77yaJyArIHBsYXkgKyAnICDlj5HluIPml6XmnJ/vvJonICsgdGltZTtcXG4gICAgICAgIGlmIChqLmxlbmd0aCAhPSBcXFwiMDA6MDBcXFwiKSB7XFxuICAgICAgICAgICAgZC5wdXNoKHIpXFxuICAgICAgICB9O1xcbiAgICB9XFxufSBlbHNlIGlmIChnZXRWYXIoJ1VQJykgPT0gJ+WFs+azqCcgJiYgZ2V0VmFyKCd1cCcpICE9ICflsZXlvIAnKSB7XFxuXFxuICAgIGlmIChnZXRWYXIoJ2h0bScpID09ICcnKSB7XFxuICAgICAgICBodG0gPSBbXTtcXG4gICAgICAgIHZhciB5bSA9IGJhdGNoRmV0Y2godXJscykubWFwKGZ1bmN0aW9uKGEpIHtcXG4gICAgICAgICAgICB2YXIgaCA9IEpTT04ucGFyc2UoYSkuZGF0YS5saXN0LnZsaXN0O1xcbiAgICAgICAgICAgIGh0bSA9IGh0bS5jb25jYXQoaCk7XFxuICAgICAgICB9KTtcXG4gICAgICAgIGh0bSA9IGh0bS5zb3J0KGZ1bmN0aW9uKGEsIGIpIHtcXG4gICAgICAgICAgICByZXR1cm4gYi5jcmVhdGVkIC0gYS5jcmVhdGVkO1xcbiAgICAgICAgfSkubWFwKGZ1bmN0aW9uKGEpIHtcXG4gICAgICAgICAgICBhLmNyZWF0ZWQgPSBnZXRMb2NhbFRpbWUoTnVtYmVyKGEuY3JlYXRlZCkgKiAxMDAwKTtcXG4gICAgICAgICAgICByZXR1cm4gYVxcbiAgICAgICAgfSk7XFxuICAgICAgICBwdXRWYXIoJ2h0bScsIEpTT04uc3RyaW5naWZ5KGh0bSkpO1xcbiAgICB9IGVsc2UgaHRtID0gSlNPTi5wYXJzZShnZXRWYXIoJ2h0bScpKTtcXG4gICAgdmFyIGkgPSAwO1xcbiAgICB2YXIgayA9IDA7XFxuICAgIHZhciByID0gbmV3IERhdGUoKTtcXG4gICAgdmFyIE0gPSByLmdldE1vbnRoKCkgKyAxO1xcbiAgICB2YXIgdEQgPSByLmdldEZ1bGxZZWFyKCkgKyAnLScgKyAoTSA8IDEwID8gKCcwJyArIE0pIDogTSkgKyAnLScgKyAoci5nZXREYXRlKCkgPCAxMCA/ICgnMCcgKyByLmdldERhdGUoKSkgOiByLmdldERhdGUoKSk7XFxuXFxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgaHRtLmxlbmd0aDsgaisrKSB7XFxuICAgICAgICB0cnkge1xcblxcbiAgICAgICAgICAgIGlmIChqICE9IDAgJiYgaHRtW2ogLSAxXS5jcmVhdGVkICE9IGh0bVtqXS5jcmVhdGVkKSBpKys7XFxuXFxuICAgICAgICAgICAgaWYgKGkgKyAxID09IE1ZX1VSTC5zcGxpdCgnIycpWzFdKSB7XFxuICAgICAgICAgICAgICAgIGlmIChrID09IDApIHtcXG4gICAgICAgICAgICAgICAgICAgIHZhciBkYXRlID0gaHRtW2pdLmNyZWF0ZWQ7XFxuICAgICAgICAgICAgICAgICAgICBrKys7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoZGF0ZSA9PSB0RCkgZGF0ZSA9ICc8c3Ryb25nPuS7iuWkqTwvc3Ryb25nPic7XFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn4oCc4oCc4oCd4oCdPGZvbnQgY29sb3I9XFxcIiMzNThjY2RcXFwiPicgKyBkYXRlICsgJzxcXFxcZm9udD4nLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXFxuICAgICAgICAgICAgICAgICAgICAgICAgLy91cmw6YEBsYXp5UnVsZT0uanM6Y2xlYXJWYXIoJ2h0bScpO3JlZnJlc2hQYWdlKGZhbHNlKTsndG9hc3Q6Ly/liLfmlrDmiJDlip8nO2BcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIGlmIChodG1bal0ucGxheSA+IDEwMDAwKVxcbiAgICAgICAgICAgICAgICAgICAgdmFyIHBsYXkgPSAoaHRtW2pdLnBsYXkgLyAxMDAwMCkudG9GaXhlZCgxKSArICfkuIcnO1xcbiAgICAgICAgICAgICAgICBlbHNlXFxuICAgICAgICAgICAgICAgICAgICB2YXIgcGxheSA9IGh0bVtqXS5wbGF5O1xcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGh0bVtqXS50aXRsZSxcXG4gICAgICAgICAgICAgICAgICAgIGltZzogKChodG1bal0ucGljLmluZGV4T2YoJzonKSAhPSAtMSkgPyBodG1bal0ucGljIDogKCdodHRwczonICsgaHRtW2pdLnBpYykpICsgUmVmZXJlcixcXG4gICAgICAgICAgICAgICAgICAgIGRlc2M6ICdVUDonICsgaHRtW2pdLmF1dGhvciArICcgIOaXtumVv++8micgKyBodG1bal0ubGVuZ3RoICsgJ1xcXFxu5pKt5pS+6YeP77yaJyArIHBsYXkgKyAnICDlj5HluIPml6XmnJ/vvJonICsgaHRtW2pdLmNyZWF0ZWQsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD1odHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWls77yf77yfYWlkPe+8hu+8hmJ2aWQ9JyArIGh0bVtqXS5idmlkICsgJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX3ZlcnRpY2FsX3BpYydcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfSBlbHNlIGlmIChpICsgMSA+IE1ZX1VSTC5zcGxpdCgnIycpWzFdKSB7XFxuICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0gY2F0Y2ggKGUpIHt9XFxuICAgIH1cXG5cXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIEt5pe25YWJ8J+QlFwiLFwicGF0aFwiOlwic2dqXCIsXCJydWxlXCI6XCIvL+WIhuexu1xcbnZhciBwYWdlbnVtID0gTVlfVVJMLnNwbGl0KCcjJylbMV07XFxuaWYgKE1ZX1VSTC5zcGxpdCgnIycpWzFdPT0nMScpe1xcbnZhciBjMiA9ICcyMiYyMTImNzEmMTgyJjEzOCYyOCYzMyYxODUnO1xcblxcbnZhciB3MiA9ICfprLznlZwm576O6aOfJue7vOiJuiblvbHop4Ym55Sf5rS7Jumfs+S5kCbnlarliacm55S16KeG5YmnJztcXG5cXG52YXIgd29yZDIgPSB3Mi5zcGxpdCgnJicpO1xcbnZhciBjbGFzczIgPSBjMi5zcGxpdCgnJicpO1xcbnZhciBsYWIyID0gZ2V0VmFyKCdsYWIyJywgJ+msvOeVnCcpO1xcbnZhciBrZXkyID0gZ2V0VmFyKCdrZXkyJywgJzIyJyk7XFxuZm9yICh2YXIgaSBpbiB3b3JkMil7XFxuICAgIHZhciBhID0gd29yZDJbaV07XFxuICAgIHZhciBiID0gY2xhc3MyW2ldO1xcbiAgICB2YXIgYyA9IGEgKyAnJicgKyBiO1xcbiAgICBkLnB1c2goe1xcbiAgICB0aXRsZTogYT09bGFiMj8gZ2V0SGVhZChhKTphLFxcbiAgICB1cmw6ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKGMpPT57XFxuICAgICAgICBwdXRWYXIoXFxcImxhYjJcXFwiLGMuc3BsaXQoJyYnKVswXSk7XFxuICAgICAgICBwdXRWYXIoXFxcImtleTJcXFwiLGMuc3BsaXQoJyYnKVsxXSk7XFxuICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgIH0sIGMpLFxcbiAgICBjb2xfdHlwZTonc2Nyb2xsX2J1dHRvbidcXG4gICAgfSk7XFxufVxcbn1cXG4vL+WIhuexu1xcblxcbnZhciBtID0gTnVtYmVyKGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvbW91dGhzLnR4dFxcXCIse30pKTtcXG52YXIgdCA9IG08MD8wOm07XFxudmFyIG51bTEgPSBOdW1iZXIodCktMTI7XFxudmFyIG51bTIgPSBOdW1iZXIodCkrMTI7XFxudmFyIG51bTMgPSBOdW1iZXIodCktMTtcXG52YXIgbnVtNCA9IE51bWJlcih0KSsxO1xcbi8vdmFyIHRpbWVzdGFtcCA9IERhdGUucGFyc2UobmV3IERhdGUoKSk7XFxudmFyIHRpbWVzdGFtcCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcbnZhciBzdGFtcDEgPSB0aW1lc3RhbXAgLSB0KjMwKjI0KjYwKjYwKjEwMDA7XFxudmFyIHN0YW1wMiA9IHRpbWVzdGFtcCAtICh0KzEpKjMwKjI0KjYwKjYwKjEwMDA7XFxuLypcXG5mdW5jdGlvbiBnZXRMb2NhbFRpbWUoblMpIHsgXFxuICAgICB2YXIgc3NzID0gbmV3IERhdGUocGFyc2VJbnQoblMpKS50b0xvY2FsZVN0cmluZygpLnN1YnN0cigwLDE3KTtcXG4gICAgIHZhciBtbSA9IHNzcy5zcGxpdCgn5bm0JylbMV0uc3BsaXQoJ+aciCcpWzBdO1xcbiAgICAgdmFyIGRkID0gc3NzLnNwbGl0KCfmnIgnKVsxXS5zcGxpdCgn5pelJylbMF07XFxuICAgICB2YXIgWVkgPSBzc3Muc3BsaXQoJ+W5tCcpWzBdO1xcbiAgICAgdmFyIE1NID0gKG1tPCAxMCA/ICcwJyArIG1tOm1tKTtcXG4gICAgIHZhciBERCA9IChkZDwgMTAgPyAnMCcgKyBkZDpkZCk7XFxuICAgICByZXR1cm4gKFlZK01NK0REKVxcbn1cXG4qL1xcbmZ1bmN0aW9uIGdldExvY2FsVGltZShuUykgeyBcXG52YXIgZGF0ZSA9IG5ldyBEYXRlKG5TKTtcXG52YXIgWVkgPSBTdHJpbmcoZGF0ZS5nZXRGdWxsWWVhcigpKTsgXFxudmFyIE1NID0gU3RyaW5nKChkYXRlLmdldE1vbnRoKCkgKyAxIDwgMTAgPyAnMCcgKyAoZGF0ZS5nZXRNb250aCgpICsgMSkgOiBkYXRlLmdldE1vbnRoKCkgKyAxKSk7IFxcbnZhciBERCA9IFN0cmluZygoZGF0ZS5nZXREYXRlKCkgPCAxMCA/ICcwJyArIChkYXRlLmdldERhdGUoKSkgOiBkYXRlLmdldERhdGUoKSkpOyBcXG52YXIgdGltZSA9IFlZICsgTU0gKyBERDtcXG5yZXR1cm4gdGltZVxcbn1cXG4vL+aXtumXtOaIs+i9rOaNolxcbnZhciB0aW1lMSA9IGdldExvY2FsVGltZShzdGFtcDEpO1xcbnZhciB0aW1lMiA9IGdldExvY2FsVGltZShzdGFtcDIpO1xcbnZhciBTR0pfVVJMID0gJ2h0dHBzOi8vcy5zZWFyY2guYmlsaWJpbGkuY29tL2NhdGUvc2VhcmNoP21haW5fdmVyPXYzJnNlYXJjaF90eXBlPXZpZGVvJnZpZXdfdHlwZT1ob3RfcmFuayZvcmRlcj1jbGljayZjb3B5X3JpZ2h0PS0xJmNhdGVfaWQ9MjImcGFnZT0nK3BhZ2VudW0rJyZwYWdlc2l6ZT0xMCZ0aW1lX2Zyb209dGltZTImdGltZV90bz10aW1lMSc7XFxudmFyIFVSTCA9IFNHSl9VUkwucmVwbGFjZSgndGltZTEnLHRpbWUxKS5yZXBsYWNlKCd0aW1lMicsdGltZTIpLnJlcGxhY2UoJzIyJyxnZXRWYXIoJ2tleTInKSE9Jyc/Z2V0VmFyKCdrZXkyJyk6JzIyJyk7XFxudmFyIGpzb24gPSBKU09OLnBhcnNlKHJlcXVlc3QoVVJMLHt9KSk7XFxuXFxuaWYgKE1ZX1VSTC5zcGxpdCgnIycpWzFdPT0nMScpe1xcbmQucHVzaCh7XFxuICAgICAgICAgIHRpdGxlOicrMeW5tCcsXFxuICAgICAgICAgIHVybDpcXG5udW0xK2BAbGF6eVJ1bGU9LmpzOndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL21vdXRocy50eHQnLGlucHV0KTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+WIh+aNouaIkOWKnyAnYCxcXG4gICAgICAgICAgY29sX3R5cGU6J3RleHRfNCdcXG4gICAgICAgfSk7XFxuZC5wdXNoKHtcXG4gICAgICAgICAgdGl0bGU6Jy0x5bm0JyxcXG4gICAgICAgICAgdXJsOlxcbm51bTIrYEBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkvbW91dGhzLnR4dCcsaW5wdXQpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5YiH5o2i5oiQ5YqfICdgLFxcbiAgICAgICAgICBjb2xfdHlwZTondGV4dF80J1xcbiAgICAgICB9KTtcXG5kLnB1c2goe1xcbiAgICAgICAgICB0aXRsZTonKzHmnIgnLFxcbiAgICAgICAgICB1cmw6XFxubnVtMytgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS9tb3V0aHMudHh0JyxpbnB1dCk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/liIfmjaLmiJDlip8gJ2AsXFxuICAgICAgICAgIGNvbF90eXBlOid0ZXh0XzQnXFxuICAgICAgIH0pO1xcbmQucHVzaCh7XFxuICAgICAgICAgIHRpdGxlOictMeaciCcsXFxuICAgICAgICAgIHVybDpcXG5udW00K2BAbGF6eVJ1bGU9LmpzOndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL21vdXRocy50eHQnLGlucHV0KTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+WIh+aNouaIkOWKnyAnYCxcXG4gICAgICAgICAgY29sX3R5cGU6J3RleHRfNCdcXG4gICAgICAgfSk7XFxuZC5wdXNoKHtcXG4gICAgICAgICAgdGl0bGU6Z2V0SGVhZCgoJ+W9k+WJjeaXtumXtOe6vzogJyt0aW1lMisnficrdGltZTEpKSxcXG4gICAgICAgICAgXFxuICAgICAgICAgIGNvbF90eXBlOid0ZXh0X2NlbnRlcl8xJ1xcbiAgICAgICB9KTtcXG4vKlxcbmQucHVzaCh7XFxuICAgICAgICAgIHRpdGxlOiBnZXRMb2NhbFRpbWUodGltZXN0YW1wKS4gc3BsaXQoJ+aXpScpWzBdLFxcbiAgICAgICAgICBcXG4gICAgICAgICAgY29sX3R5cGU6J3RleHRfY2VudGVyXzEnXFxuICAgICAgIH0pO1xcbiovXFxufVxcbi8qXFxuZC5wdXNoKHtcXG4gICAgICAgICAgdGl0bGU6IGdldExvY2FsVGltZShzc3MpLFxcbiAgICAgICAgICBcXG4gICAgICAgICAgY29sX3R5cGU6J3RleHRfY2VudGVyXzEnXFxuICAgICAgIH0pO1xcbiovXFxuZm9yICh2YXIgaSBpbiBqc29uLnJlc3VsdClcXG57XFxuIHZhciByID0ge307XFxuIHZhciBqID0ganNvbi5yZXN1bHRbaV07XFxuIGlmIChqLnBsYXk+MTAwMDApXFxuICAgIHZhciBwbGF5ID0gKGoucGxheS8xMDAwMCkudG9GaXhlZCgxKSsn5LiHJztcXG4gZWxzZVxcbiAgICB2YXIgcGxheSA9IGoucGxheTtcXG4gZC5wdXNoKHtcXG4gICAgICAgICAgdGl0bGU6ai50aXRsZSxcXG4gICAgICAgICAgaW1nOidodHRwczonK2oucGljK1JlZmVyZXIsXFxuICAgICAgICAgIGRlc2M6J3Vw8J+QtzonK2ouYXV0aG9yKydcXFxcbuaSreaUvumHjzogJytwbGF5KycgICAgICAgIOWPkeW4g+aXpeacnzogJytqLnB1YmRhdGUvKisnXFxcXG7mj4/ov7A6JytqLmRlc2NyaXB0aW9uKi8sXFxuICAgICAgICAgIHVybDpcXG4naGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9aHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbO+8n++8n2FpZD3vvIbvvIZidmlkPScgKyBqLmJ2aWQrJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgICAgICBjb2xfdHlwZTonbW92aWVfMidcXG4gICAgICAgfSk7XFxufVxcblwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6aG16Z2iLeS6jOe6p1wiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG52YXIgcmVzID0ge307XFxudmFyIGQgPSBbXTtcXG4vL2xvZyhNWV9SVUxFLnRpdGxlKVxcbnZhciBSZWZlcmVyID0gJ0BSZWZlcmVyPWh0dHA6Ly93d3cuYmlsaWJpbGkuY29tJztcXG4vL+minOiJslxcbnZhciBDb2xvcnMgPSBbXFxcIjRcXFwiLCBcXFwiNVxcXCIsIFxcXCIwXFxcIiwgXFxcIjFcXFwiLCBcXFwiQVxcXCIsIFxcXCIzXFxcIiwgXFxcIjhcXFwiLCBcXFwiOVxcXCIsIFxcXCJCXFxcIiwgXFxcIkNcXFwiLCBcXFwiRFxcXCIsIFxcXCJFXFxcIiwgXFxcIjZcXFwiLCBcXFwiN1xcXCIsIFxcXCJGXFxcIl07XFxudmFyIENvbG9yID0gJyMnO1xcbmlmIChnZXRWYXIoJ1lTJykgPT0gJ+maj+acuicpIHtcXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKyspIHtcXG4gICAgICAgIHZhciBudW0gPSBNYXRoLmNlaWwoKE1hdGgucmFuZG9tKCkgKiAxNSkpIC0gMTtcXG4gICAgICAgIHZhciBDb2xvciA9IENvbG9yICsgQ29sb3JzW251bV07XFxuICAgIH1cXG59IGVsc2Uge1xcbiAgICB2YXIgQ29sb3IgPSBcXFwiI0ZBNzI5OFxcXCI7XFxufVxcblxcbmZ1bmN0aW9uIGdldEhlYWQodGl0bGUpIHtcXG4gICAgcmV0dXJuICfigJjigJjigJnigJk8c3Ryb25nPjxmb250IGNvbG9yPVxcXCInICsgQ29sb3IgKyAnXFxcIj4nICsgdGl0bGUgKyAnPC9mcm9udD48L3N0cm9uZz4nO1xcbn1cXG5cXG5kLnB1c2goe1xcbiAgICBkZXNjOiAnMjU4JiZmbG9hdCcsXFxuICAgIGNvbF90eXBlOiAneDVfd2Vidmlld19zaW5nbGUnXFxufSk7XFxudmFyIGJhbmd1bWkgPSBnZXRSZXNDb2RlKCk7XFxuaWYgKE1ZX1VSTC5pbmRleE9mKCdhcGkuYmlsaScpID09IC0xKSB7XFxuICAgIHRyeSB7XFxuICAgICAgICB2YXIgYSA9IGZldGNoKE1ZX1VSTCwge30pO1xcbiAgICAgICAgdmFyIGIgPSBKU09OLnBhcnNlKGEuc3BsaXQoJ1xcXCJlcExpc3RcXFwiOicpWzFdLnNwbGl0KCd9XScpWzBdICsgJ31dJyk7XFxuICAgICAgICAvL2xvZyhiKVxcbiAgICAgICAgdmFyIHJ1cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbD9haWQ9JmJ2aWQ9JyArIGJbMF0uYnZpZDtcXG4gICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgdmFyIGEgPSBmZXRjaChNWV9VUkwsIHtcXG4gICAgICAgICAgICByZWRpcmVjdDogZmFsc2VcXG4gICAgICAgIH0pO1xcbiAgICAgICAgdmFyIGIgPSBhLnNwbGl0KCd2aWRlby8nKVsxXS5zcGxpdCgnXFxcIicpWzBdLnNwbGl0KFxcXCI/XFxcIilbMF07XFxuICAgICAgICB2YXIgcnVybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWlsP2FpZD0mYnZpZD0nICsgYjtcXG4gICAgfVxcbiAgICB2YXIgYmFuZ3VtaSA9IGZldGNoKHJ1cmwsIHt9KTtcXG59XFxudmFyIGpzb24gPSBKU09OLnBhcnNlKGJhbmd1bWkpO1xcbnZhciB2ID0ganNvbi5kYXRhLlZpZXc7XFxudmFyIHAgPSB2LnBhZ2VzO1xcbnZhciBjYXJkID0ganNvbi5kYXRhLkNhcmQuY2FyZDtcXG52YXIgcmVsYXRlZCA9IGpzb24uZGF0YS5SZWxhdGVkO1xcbnZhciB0cyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcbnZhciBsaWtlX3VybCA9ICdodHRwczovL2FwcC5iaWxpYmlsaS5jb20veC92Mi92aWV3L2xpa2UnO1xcbnZhciBjb2luX3VybCA9ICdodHRwczovL2FwcC5iaWxpYmlsaS5jb20veC92Mi92aWV3L2NvaW4vYWRkJztcXG52YXIgYWRkX3VybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20vcGdjL2FwcC9mb2xsb3cvYWRkJztcXG52YXIgZGVsX3VybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20vcGdjL2FwcC9mb2xsb3cvZGVsJztcXG52YXIgY29udGVudF90eXBlID0gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD11dGYtOCc7XFxudmFyIGNfYm9keV90eHQgPSAnYWNjZXNzX2tleT0nICsgZ2V0VmFyKCdhY2Nlc3Nfa2V5JykgKyAnJmFpZD0nICsgZ2V0VmFyKCdhaWQnKSArICcmYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYXZ0eXBlPTEmYnVpbGQ9NjEzMDQwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZmcm9tPTcmZnJvbV9zcG1pZD10bS5yZWNvbW1lbmQuMC4wJm1vYmlfYXBwPWFuZHJvaWQmbXVsdGlwbHk9MSZwbGF0Zm9ybT1hbmRyb2lkJnNfbG9jYWxlPXpoX0NOJnNlbGVjdF9saWtlPTEmc3BtaWQ9bWFpbi51Z2MtdmlkZW8tZGV0YWlsLjAuMCZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjEzLjAlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0QmdHM9JyArIHRzICsgJyZ1cGlkPTAmc2lnbj04YWJiZGRkODdhNmJkODJlMWU0MmNiM2NmZmQzMmJiOSc7XFxudmFyIGxfYm9keV90eHQgPSAnYWNjZXNzX2tleT0nICsgZ2V0VmFyKCdhY2Nlc3Nfa2V5JykgKyAnJmFpZD0nICsgZ2V0VmFyKCdhaWQnKSArICcmYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYnVpbGQ9NjEzMDQwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZsaWtlPTAmbW9iaV9hcHA9YW5kcm9pZCZwbGF0Zm9ybT1hbmRyb2lkJnNfbG9jYWxlPXpoX0NOJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMTMuMCUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCZ0cz0nICsgdHMgKyAnJnNpZ249NGEwODY0NWMyOTk0ZWI2OTJhYzBjZmIwYmQ3NTY5YzYnO1xcbnZhciB4bHh6ID0gXFxcImhpa2VyOi8vZW1wdHkjbm9SZWNvcmRIaXN0b3J5I0BydWxlPWpzOnRoaXMuZD1bXTtyZXF1aXJlKCdodHRwczovL2dpdGVhLmNvbS9BSTk1Ny9IaWtlci9yYXcvbS92L1JvdXRlLmpzJyk7Um91dGUuc2V0UGFyc2UoKTtzZXRSZXN1bHQoZCk7XFxcIjtcXG52YXIganhnbCA9IFxcXCJoaWtlcjovL2VtcHR5I25vUmVjb3JkSGlzdG9yeSNAcnVsZT1qczp0aGlzLmQ9W107cmVxdWlyZSgnaHR0cHM6Ly9naXRlYS5jb20vQUk5NTcvSGlrZXIvcmF3L20vdi9qeEl0ZW0uanMnKTtqeEl0ZW0uanhMaXN0KCk7c2V0UmVzdWx0KGQpXFxcIjtcXG5pZiAodlsncmVkaXJlY3RfdXJsJ10pIHtcXG4gICAgdmFyIHJlZGlyZWN0ID0gdlsncmVkaXJlY3RfdXJsJ107XFxuICAgIHZhciB5bSA9IGZldGNoKHJlZGlyZWN0LCB7fSk7XFxuXFxufVxcblxcbmV2YWxQcml2YXRlSlMoXFxcIlhVaUZUMXZYWVdyVXcrVmhwbnFsZzBOMHZBV2dwZ2xoOE1oWis5dlBEOTlOSjVWZ2VGZEhtd2FLYXdJeTZDMGg2RkZRaEVRNVJoSm1WMEVRSG5MOXh5YlBIQWNoQUw3aFpFWmQraGJHSFY1amVHK25LNVEzaWU3OHB1R0RiMVRKNGZBSTdnNmV6TElqUU1CeE4vMlhNOTJZTk5QS0RIZGhMSU1RR1Y2OU1xOGNUT1dqS3BaUXAwL3ZnTnV4YVBRS0V6U2RIUUp1ZTd0VHhkU0V2RHQzcy90eGRFaC9vR3pGQ0NOV2VaQ1VVNTN6aEVoQzA2cTZaRmpaQ00rZDhGc1o1Y1hsTkplbXRlZ01nSlVMZFRxYVZkUndWaFZYKzF1QlE5TnkwRHBzTkd4Mkx3SGdPamxzOWh3MTRMaEVxdGhFZTczeVBCR3ZTZ0tFQmRTWWdHN2NLN2hZVlRFTmVHVGlSQXpLUFE3akdFcUVKOGFhZEhPSEFlU2EyNWFCYnpjODFoaHhnWHRpYWxYOFVxZXBuN2s0ZzJHa3Nxb0czSlZJK3FUZldaeFBXcU5NLzBqVVhiclVUQ1JabnJ6R1ZvdzZOd1BRWEtxM0NES2w5aSthWnZlV3o1SWY1RU5FWkdpV2xXNXo0YUpTRWNleENEc2labG8xL1FKSWoycldvbkUwdTU0YWgyL1paLy9aR29NQkorZDE5R21lcGtMQkQzbjJxb2dLbmpaajJyaldxZ1BhZEVlZTFaSWhaM1NHYm1UbEpmMUE0QllJdXVQd3Y0ZEdaZFJvRFc2NEJoQzVqdUNuNndEbTdZbXk3QlhmMXNRYUZpbUVuclNJaUhHaE0rV0tnM0l5V2VjdWgvR2srK01tTjZBeHhjdk5BeXA4YkM0aHpCTXZaSi9sNXRSeWFwb21kQ1Y1QnBpWGZqa1dSbmJvcElqSStXS0IzZkNhWXlSZGVOTEVSS25FbHNjRGl6N1VlbkxwcmhZYy9hNExzR2VNTUZWWjhZbzgvd0dZSDM4SlxcXCIpXFxuXFxudmFyIHB1cmwgPSAnaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL3ZpZGVvLycgKyB2LmJ2aWQ7XFxudmFyIG1vZGUgPSBmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9jYWNoZS9iaWxpYmlsaS50eHRcXFwiLCB7fSk7XFxudmFyIG1vZGVfdXJsID0gYEBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2NhY2hlL2JpbGliaWxpLnR4dCcsaW5wdXQpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5YiH5o2i5oiQ5YqfLCDngrnkuKrop4bpopHor5Xor5XlkKcoXl9eKSAnYDtcXG52YXIgemwgPSBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdwYWdlJywgZ2V0VmFyKCdwYWdlJyk9PSfnm7Tpk74nPyflhbPpl60nOifnm7Tpk74nKTtyZWZyZXNoUGFnZSgpO2lmKGdldFZhcigncGFnZScpPT0n55u06ZO+Jyl7J3RvYXN0Oi8v54K55Ye75LiL5pa55YiH5o2i5riF5pmw5bqm8J+knyd9ZWxzZXsndG9hc3Q6Ly/lt7LlhbPpl60nfVxcXCI7XFxuaWYgKG1vZGUgPT0gJ3loYycpIHtcXG4gICAgdmFyIGxhenkgPSB5aGNcXG59XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IHYudGl0bGUsXFxuICAgIGRlc2M6ICfmj4/ov7A6ICcgKyB2LmRlc2MgKyAn44CA57G75Z6LOiAnICsgdi50bmFtZSxcXG4gICAgdXJsOiBwdXJsLFxcbiAgICBpbWc6IHYucGljICsgUmVmZXJlcixcXG4gICAgY29sX3R5cGU6ICdtb3ZpZV8xX3ZlcnRpY2FsX3BpY19ibHVyJ1xcbn0pO1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOiAnICAnICsgY2FyZC5uYW1lLFxcbiAgICBwaWNfdXJsOiBjYXJkLmZhY2UgKyBSZWZlcmVyLFxcbiAgICAvL3VybDogJ2hpa2VyOi8vcGFnZS9nejE/dXJsPWh0dHBzOi8vc3BhY2UuYmlsaWJpbGkuY29tL2g1L2ZvbGxvd++8n++8n3R5cGU9Zm9sbG9377yG77yGbWlkPScgKyBjYXJkLm1pZCxcXG4gICAgdXJsOiAnaGlrZXI6Ly9wYWdlL3NzP3VybD1odHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hcmMvc2VhcmNo77yf77yfbWlkPScgKyBjYXJkLm1pZCArICfvvIbvvIZwcz0zMO+8hu+8hnRpZD0w77yG77yGa2V5d29yZD3vvIbvvIZqc29ucD1qc29ucO+8hu+8hnBuPWZ5cGFnZe+8hu+8hm9yZGVyPXB1YmRhdGUnLFxcbiAgICBjb2xfdHlwZTogJ2ljb25fMl9yb3VuZCdcXG59KTtcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogJ+KAnOKAnOKtkO+4j1N0YXLigJ3igJ0nLFxcbiAgICB1cmw6ICdoaWtlcjovL2VtcHR5IycgKyBjYXJkLm5hbWUgKyAnJiYnICsgY2FyZC5taWQgKyBgQGxhenlSdWxlPS5qczppbnB1dD1pbnB1dC5zcGxpdCgnIycpWzFdO3ZhciBwaWMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hY2MvaW5mbz9taWQ9JytpbnB1dC5zcGxpdChcXFwiJiZcXFwiKVsxXSsnJmpzb25wPWpzb25wJyx7fSkpLmRhdGEuZmFjZTtpZighZ2V0VmFyKCdsYjInKS5pbmNsdWRlcyhpbnB1dC5zcGxpdCgnJiYnKVsxXS5zcGxpdCgnIyMnKVswXSkpe3ZhciB4cj1nZXRWYXIoJ2xiMicpKydcXFxcXFxcXG4nK2lucHV0KycjIycrcGljO3dyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9qcy91cC5qc1xcXCIseHIpOyd0b2FzdDovL+WFs+azqOaIkOWKnyd9ZWxzZXsndG9hc3Q6Ly/lubTovbvkurrvvIzogJflrZDlsL7msYEnfWAsXFxuICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbn0pO1xcblxcbmZ1bmN0aW9uIHJlcXVlc3RfYmlsaV9hcGkoYmFzZVVybCwgU2VjcmV0SWQsIFNlY3JldEtleSkge1xcbiAgICBpZiAoIVNlY3JldElkIHx8ICFTZWNyZXRLZXkpIHJldHVybiByZXF1ZXN0KGJhc2VVcmwpXFxuICAgIGV2YWwoZ2V0Q3J5cHRvSlMoKSlcXG4gICAgbGV0IG5vd0RhdGUgPSBuZXcgRGF0ZSgpO1xcbiAgICBsZXQgZGF0ZVRpbWUgPSBub3dEYXRlLnRvVVRDU3RyaW5nKCk7XFxuICAgIGxldCBzb3VyY2UgPSAnYmlsaS1hcGknO1xcbiAgICBsZXQgYXV0aCA9IFxcXCJobWFjIGlkPVxcXFxcXFwiXFxcIiArIFNlY3JldElkICsgXFxcIlxcXFxcXFwiLCBhbGdvcml0aG09XFxcXFxcXCJobWFjLXNoYTFcXFxcXFxcIiwgaGVhZGVycz1cXFxcXFxcIngtZGF0ZSBzb3VyY2VcXFxcXFxcIiwgc2lnbmF0dXJlPVxcXFxcXFwiXFxcIjtcXG4gICAgbGV0IHNpZ25TdHIgPSBcXFwieC1kYXRlOiBcXFwiICsgZGF0ZVRpbWUgKyBcXFwiXFxcXG5cXFwiICsgXFxcInNvdXJjZTogXFxcIiArIHNvdXJjZTtcXG4gICAgbGV0IHNpZ24gPSBDcnlwdG9KUy5IbWFjU0hBMShzaWduU3RyLCBTZWNyZXRLZXkpXFxuICAgIHNpZ24gPSBDcnlwdG9KUy5lbmMuQmFzZTY0LnN0cmluZ2lmeShzaWduKVxcbiAgICBzaWduID0gYXV0aCArIHNpZ24gKyBcXFwiXFxcXFxcXCJcXFwiXFxuICAgIHJldHVybiByZXF1ZXN0KGJhc2VVcmwsIHtcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICBcXFwiU291cmNlXFxcIjogc291cmNlLFxcbiAgICAgICAgICAgIFxcXCJYLURhdGVcXFwiOiBkYXRlVGltZSxcXG4gICAgICAgICAgICBcXFwiQXV0aG9yaXphdGlvblxcXCI6IHNpZ25cXG4gICAgICAgIH1cXG4gICAgfSlcXG59XFxuXFxuZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcIikpLnJ1bGUpXFxuXFxuLy/oh6rlrprkuYlhcGnpoblcXG52YXIgbUFwaSA9IHtcXG4gICAgYXV0aG9yOiAnJyxcXG4gICAgdHlwZTogJycsXFxuICAgIGlkOiAnJyxcXG4gICAgYmFzZVVybDogJycsXFxuICAgIHNlY3JldElkOiAnJyxcXG4gICAgc2VjcmV0S2V5OiAnJ1xcbn1cXG5pZiAobUFwaS5iYXNlVXJsICYmIG1BcGkuc2VjcmV0SWQgJiYgbUFwaS5zZWNyZXRLZXkpIHtcXG4gICAgcHV0VmFyKCdhcGknLCBKU09OLnN0cmluZ2lmeShtQXBpKSlcXG59XFxuXFxudmFyIGFwaUluZGV4U3RyID0gZ2V0VmFyKCdhcGlJbmRleCcsICcnKVxcbnZhciBhcGlJbmRleCA9IHBhcnNlSW50KGFwaUluZGV4U3RyKVxcblxcblxcbnRyeSB7XFxuICAgIGlmICh2WydyZWRpcmVjdF91cmwnXSkge1xcbiAgICAgICAgdmFyIGVwID0gSlNPTi5wYXJzZSh5bS5zcGxpdCgnXFxcImVwTGlzdFxcXCI6JylbMV0uc3BsaXQoJ31dJylbMF0gKyAnfV0nKTtcXG4gICAgICAgIHZhciBzZWFzb25faWQgPSB5bS5zcGxpdCgnXFxcInNlYXNvbl9pZFxcXCI6JylbMV0uc3BsaXQoJywnKVswXTtcXG4gICAgICAgIC8vbG9nKHNlYXNvbl9pZClcXG4gICAgICAgIHB1dFZhcignYWlkJywgU3RyaW5nKGVwWzBdLmFpZCkpO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogbW9kZSA9PSAn55u06ZO+JyA/IGdldEhlYWQoJ+ebtOmTvicpIDogJ+ebtOmTvicsXFxuICAgICAgICAgICAgdXJsOiAn55u06ZO+JyArIG1vZGVfdXJsLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBtb2RlID09ICfmlq3mj5InID8gZ2V0SGVhZCgn5pat5o+SJykgOiAn5pat5o+SJyxcXG4gICAgICAgICAgICB1cmw6IChtb2RlID09ICfmlq3mj5InID8geGx4eiA6ICfmlq3mj5InICsgbW9kZV91cmwpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBpZiAoZ2V0VmFyKCdsaWtlX3R5cGUnKSA9PT0gJ+W8gOWQrycgJiYgZ2V0VmFyKCdhY2Nlc3Nfa2V5JykpIHtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+eCuei1nicsXFxuICAgICAgICAgICAgICAgIHVybDogJChsaWtlX3VybCkubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgY29udGVudF90eXBlID0gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD11dGYtOCc7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgbF9ib2R5X3R4dCA9ICdhY2Nlc3Nfa2V5PScgKyBnZXRWYXIoJ2FjY2Vzc19rZXknKSArICcmYWlkPScgKyBnZXRWYXIoJ2FpZCcpICsgJyZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZidWlsZD02MTMwNDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJmxpa2U9MCZtb2JpX2FwcD1hbmRyb2lkJnBsYXRmb3JtPWFuZHJvaWQmc19sb2NhbGU9emhfQ04mc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4xMy4wJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnRzPScgKyB0cyArICcmc2lnbj00YTA4NjQ1YzI5OTRlYjY5MmFjMGNmYjBiZDc1NjljNic7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgbF9jb2RlID0gSlNPTi5wYXJzZShyZXF1ZXN0KGlucHV0LCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogY29udGVudF90eXBlXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBib2R5OiBsX2JvZHlfdHh0LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnXFxuICAgICAgICAgICAgICAgICAgICB9KSk7XFxuICAgICAgICAgICAgICAgICAgICAvL2xvZyhsX2NvZGUpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovLycgKyBsX2NvZGUuZGF0YS50b2FzdDtcXG4gICAgICAgICAgICAgICAgfSwgKSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfmipXluIEnLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoY29pbl91cmwpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHZhciB0cyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNvbnRlbnRfdHlwZSA9ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9dXRmLTgnO1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNfYm9keV90eHQgPSAnYWNjZXNzX2tleT0nICsgZ2V0VmFyKCdhY2Nlc3Nfa2V5JykgKyAnJmFpZD0nICsgZ2V0VmFyKCdhaWQnKSArICcmYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYXZ0eXBlPTEmYnVpbGQ9NjEzMDQwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZmcm9tPTcmZnJvbV9zcG1pZD10bS5yZWNvbW1lbmQuMC4wJm1vYmlfYXBwPWFuZHJvaWQmbXVsdGlwbHk9MSZwbGF0Zm9ybT1hbmRyb2lkJnNfbG9jYWxlPXpoX0NOJnNlbGVjdF9saWtlPTEmc3BtaWQ9bWFpbi51Z2MtdmlkZW8tZGV0YWlsLjAuMCZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjEzLjAlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0QmdHM9JyArIHRzICsgJyZ1cGlkPTAmc2lnbj04YWJiZGRkODdhNmJkODJlMWU0MmNiM2NmZmQzMmJiOSc7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgY19jb2RlID0gSlNPTi5wYXJzZShyZXF1ZXN0KGlucHV0LCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogY29udGVudF90eXBlXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBib2R5OiBjX2JvZHlfdHh0LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnXFxuICAgICAgICAgICAgICAgICAgICB9KSk7XFxuICAgICAgICAgICAgICAgICAgICAvL2xvZyhjX2NvZGUpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+aKleS6hjHkuKrluIEnO1xcbiAgICAgICAgICAgICAgICB9LCApLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+i/veeVqicsXFxuICAgICAgICAgICAgICAgIHVybDogJChhZGRfdXJsKS5sYXp5UnVsZSgoc2Vhc29uX2lkKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgdHMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcXG4gICAgICAgICAgICAgICAgICAgIHZhciBjb250ZW50X3R5cGUgPSAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PXV0Zi04JztcXG4gICAgICAgICAgICAgICAgICAgIHZhciBhZGRfYm9keV90eHQgPSAnYWNjZXNzX2tleT0nICsgZ2V0VmFyKCdhY2Nlc3Nfa2V5JykgKyAnJmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmJ1aWxkPTYwOTEwMDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImbW9iaV9hcHA9YW5kcm9pZCZwbGF0Zm9ybT1hbmRyb2lkJnNfbG9jYWxlPXpoX0NOJnNlYXNvbl9pZD0nICsgc2Vhc29uX2lkICsgJyZzdGF0aXN0aWNzPXtcXFwiYXBwSWRcXFwiOjEsXFxcInBsYXRmb3JtXFxcIjozLFxcXCJ2ZXJzaW9uXFxcIjpcXFwiNi45LjFcXFwiLFxcXCJhYnRlc3RcXFwiOlxcXCJcXFwifSZ0cz0nICsgdHMgKyAnJnNpZ249YzY0YjRjNTA4MzJkMjllNDBhM2RkZWRlZDM2NjcxMzUnO1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIGFkZF9jb2RlID0gSlNPTi5wYXJzZShyZXF1ZXN0KGlucHV0LCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogY29udGVudF90eXBlXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBib2R5OiBhZGRfYm9keV90eHQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCdcXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcXG4gICAgICAgICAgICAgICAgICAgIC8vbG9nKGFkZF9jb2RlKTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly8nICsgYWRkX2NvZGUucmVzdWx0LnRvYXN0O1xcbiAgICAgICAgICAgICAgICB9LCBzZWFzb25faWQpLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+WPlua2iCcsXFxuICAgICAgICAgICAgICAgIHVybDogJChkZWxfdXJsKS5sYXp5UnVsZSgoc2Vhc29uX2lkKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgdHMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcXG4gICAgICAgICAgICAgICAgICAgIHZhciBjb250ZW50X3R5cGUgPSAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PXV0Zi04JztcXG4gICAgICAgICAgICAgICAgICAgIHZhciBkZWxfYm9keV90eHQgPSAnYWNjZXNzX2tleT0nICsgZ2V0VmFyKCdhY2Nlc3Nfa2V5JykgKyAnJmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmJ1aWxkPTYwOTEwMDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImbW9iaV9hcHA9YW5kcm9pZCZwbGF0Zm9ybT1hbmRyb2lkJnNfbG9jYWxlPXpoX0NOJnNlYXNvbl9pZD0nICsgc2Vhc29uX2lkICsgJyZzdGF0aXN0aWNzPXtcXFwiYXBwSWRcXFwiOjEsXFxcInBsYXRmb3JtXFxcIjozLFxcXCJ2ZXJzaW9uXFxcIjpcXFwiNi45LjFcXFwiLFxcXCJhYnRlc3RcXFwiOlxcXCJcXFwifSZ0cz0nICsgdHMgKyAnJnNpZ249YzY0YjRjNTA4MzJkMjllNDBhM2RkZWRlZDM2NjcxMzUnO1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRlbF9jb2RlID0gSlNPTi5wYXJzZShyZXF1ZXN0KGlucHV0LCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogY29udGVudF90eXBlXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBib2R5OiBkZWxfYm9keV90eHQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCdcXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcXG4gICAgICAgICAgICAgICAgICAgIC8vbG9nKGRlbF9jb2RlKTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly8nICsgZGVsX2NvZGUucmVzdWx0LnRvYXN0O1xcbiAgICAgICAgICAgICAgICB9LCBzZWFzb25faWQpLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICcnLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnYmxhbmtfYmxvY2snXFxuICAgICAgICB9KTtcXG4gICAgICAgIFxcblxcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlcC5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgIHZhciBiYWRnZVR5cGUgPSBlcFtpXVsnYmFkZ2VUeXBlJ10gPT09IDAgPyAoKGVwW2ldWydiYWRnZSddICE9ICcnKSA/ICfwn5KwJyA6ICfwn4aTJykgOiAn8J+Toic7XFxuICAgICAgICAgICAgdmFyIGJhZGdlID0gZXBbaV1bJ2JhZGdlJ10gPyAnWycgKyBlcFtpXVsnYmFkZ2UnXSArICddJyA6ICcnO1xcbiAgICAgICAgICAgIFxcbiAgICAgICAgICAgIFxcbiAgICAgICAgICAgIGlmIChtb2RlID09ICdYNScpIHtcXG4gICAgICAgICAgICAgICAgdmFyIHB1cmwgPSAneDVSdWxlOi8vJyArIGp4ICsgJ2h0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS9iYW5ndW1pL3BsYXkvZXAnICsgZXBbaV1bJ2lkJ10gKyAnQCc7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgdmFyIHB1cmwgPSAnaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL2Jhbmd1bWkvcGxheS9lcCcgKyBlcFtpXVsnaWQnXTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgdmFyIHBpY3MgPSAoZXBbaV1bJ2NvdmVyJ10uaW5kZXhPZignOicpICE9IC0xKSA/IGVwW2ldWydjb3ZlciddIDogJ2h0dHBzOicgKyBlcFtpXVsnY292ZXInXTtcXG4gICAgICAgICAgICB2YXIgdGl0bGVzID0gKGVwW2ldWyd0aXRsZUZvcm1hdCddKSA/IGVwW2ldWyd0aXRsZUZvcm1hdCddIDogZXBbaV1bJ3RpdGxlJ107XFxuICAgICAgICAgICAgdmFyIGRlc2MgPSAoZXBbaV1bJ2xvbmdUaXRsZSddKSA/IGVwW2ldWydsb25nVGl0bGUnXSA6IChlcFtpXVsnbG9uZ190aXRsZSddID8gZXBbaV1bJ2xvbmdfdGl0bGUnXSA6ICcnKTtcXG4gICAgICAgICAgICBldmFsUHJpdmF0ZUpTKFxcXCJpZm56cWFOcU5Sa042TnFHMGZaeDVNZXk0NzdPc01KT1RiVGQ5U2FqTWtmRE9ST3VLamlNQkVmcG5CTmVsR1VmNDM5QXVKcGUwdVJOMXRiRTFpVTUwNVNqa1VBUThPWnVWa0RubEJTOWc5RTkvVmFuQWFva0lXWmF2UUV2cWJLaU5pTWtlMU1jTkRNZDBqRGhGZlZGWnArUUY0S0E4UEdrQ3VEUEpweWJwR3pFODBFTlAyNVlETDJ5bS9VVFVyb1c4UFNOMDlPbGlIM0djV242SmZOTVpFNEJ2UW9GSmZnMld2djRRV0NFQ0cxRkhES09aeW5zWWYxY3NWSXViZThGNjVkdFJFN2d1UjU4NzgvUFVKWFFnRG9iNXQyWVVPNVF6ek1ja3JFMXdzM3dhRzBwbkQ2NHFrTkgyRXNJbENjQ3ZCejdZaWdDOUlwSDFxbTZwOGkraVgzeEJQcEI2NkxEOTFnUHl6cHJ6TU8vc2EzUlhWV09MdGVnTC9mQklrVkhhZmxTWmNLemI3SFYyNzIwbnppek5oU3lzTmVFSzk3cXM2ZzFCNnc1VGNkU1Q3bUVYeDU1TE5UdWYvMjRvMHl5Q3J2NFNKTHVYV0V2TzlSeDBqYXpqbHlXaWFoRTA4eHp3elI4a3lqcmRMMWcyMkNaU1BLYlRPckhJZDVMYkpRZFZzRXYwV0RsL3h0SU5SUzNWWUtaL25IdUdQRjhRTEFsQU5Qem90REdra2Q5R3BKRE1zWGpubVVPV0lQZ213QWpGQmsvVzJFM1dTYmlYbDhFdEpQZ1F6M0Y0VmRrTmR2cG9XOThyWE1lTTRDUmtTN1RuLzVLSUZFajdyRjMvL2Nwa2F3a0NEenJnbkdjSXNGTitTMVVlY0hraHk0NzRUVHhXSDFGTXk4blA2ZWRLamFDeDg3VWY3Ritrbi9ubjZNcFZHZnd3ei95UDNZRzNvSlZHbEV2K1drdUZBZVFNWFk0UW5SeXdjSEVlUStzMnUxM05BV2N2VUk2TW55T3FJd3F5QzRQNGxERW1JWm5XRFhqVUdZdXppL0w1bTAzbUQ2VGl3aEZ6cnRkK2gzNm1nTHRlcFNmM1RWQW91M09kYnh4MDMybWRVRWo1UEZEVHhrRWFHMnJlb1pCRU9UbWlDMzQ5T3d1WFhRZTFmd0dId2VHKzY5cjZkK0tOV2pFTllVRk5wL2M3Rm1lZHN1endoZXJKMVR4Nkx6NDFhb2ZPdkw1NFI5bHVnckMzMnRiVlhicWlLVVZqSmNWbjYvc1FjVHdBTFNab3Bpdk1NNEhWTkYzbVkyWEw4WittcFdrbnFEQi9Id05JYUNtS043TEs4dEkxbFp6K3dpZis5WklBZFQyUyt2Vk54NGdzVU1tc1hWeG8zR09zMnFBK3hyUCtqeHhNU2FSVEdLTnVZYk5TWHpMYWNveDlSTzhjcFZSRHF6b29UT3RvZkZVQWYwbytaRFc2bHMwbmNzcnkwaldWblA3Q0ovNzFrZ0IxUFpZU1hUdUN1ZW9mYTZVMS9XSkFITmhuckJPYi9YTnBTRUFxbnc5VkFGU3lqNjZJeVQ3N0VHd3ZXRjcrWVFPTE9JbWowM2VQVElVRDVaUTFCMzZCVTdCQVVjUUxERjd1VlhiRDF2RmdFLytSVE9TQngvR2N3bGpJbFhTOWxBQWsyRlNUN21FWHg1NUxOVHVmLzI0bzB5eU94ZGl1V3VKZk1nODJCWGRFanVRdlJrdHpvSlFBOWhqZjFJdHB1V21pcUJ3ZGYvTDBLT3gyNnIyTThwalNoOUV3emtUcmlvNGpBUkg2WndUWHBSbEgwTWdVTmc3MEFoMFdJZlFRdXArY1Z4NmsvM0NiV3F3SXMrQWJ6OUZGMnVoOWVPUGQ0TFBuQnh1QmhaMmV1MUlYQnJpTWFEaW9zNk1NRlNnVU53cURBY0VnbVlGSjN5M0dKM0xGOFNBbHREalpoWnVScEFVM1I5dUZOc2FhQ3NmWlFaSlV6MTF6MFM0aVFQNERETFUwQ1RMSzh0STFsWnord2lmKzlaSUFkVDIyNkJ6NmNvQS9Fd29xSmgvUm02ZTJtNEQ4OW5RZUtVc0RZTnFLTk1vbFJuOFVGUjc1RVc2UkVDVHZteDVFSWQ4eXc4ZjFIbTNhWStMZEpRWlhlRDM5WjZTWTEwNldPaS9OZ1U2OFlxcXVIcTZNMnpqQWp3UVIvOU1XV0R5Q3FBSjFSeHo3UVM4ckFRSUtITjF3MWZsZGF0VSt4ZGRpaGcyT3NWeHpwMi9qSUtDaGF4Q20xTDRnOE9CUjlsdVFoWlNjM3BtVW9uTnN4d0R4ZnAxYktPaVVaQjF3YU1yaFh1UzFaYjFYWEhUdnA0dWpNd1dtZVpDTjBVSks0UGlGVThWdUE5ZXlkQmJlb0ErNCtGWC9VZFFkN0E3bXlVVitpQTJUODQvTGNFT2tuTE1UUXBHQ1MxRVhlM0Jaa1RXektqU3dlQVF4WkMyZGtqaUtNL3kvN290S01zbFcwSTM0dXE1eDE2WmdOMVZlMURhbEgrbXZRSnlXVXkxbFhVKzE3c3N6cFF5K3c3ODg3RGtKeXZ2MnduT0o1SC9vZUZoSnZDVmdwemhUY3JHSkkremRhcjg4Q3daRnExYUxzZXNIODJFUmVYUHEwT2lwVTFhZ0Z1NlB6Njk5dDdOM3M0M21qOUlQMXlkemlkc1NDM0xLOHRJMWxaeit3aWYrOVpJQWRUMmdMcCs5NVRDRDZGOUlPZmtpL1R1QkZnamZDQThubGtnY1NkUW4vemJQZDIxNUhoanVNMG1yUDl5bzl1K1NNb255eXZMU05aV2Mvc0luL3ZXU0FIVTl1OFo3L1Z0TDJJb3dhdHQzV3NVSEhWY2FJa04wbXhQWnFid0ozZ29zL0dYeXl2TFNOWldjL3NJbi92V1NBSFU5clBjd2RoWlo0clBFbXJ5UW5aUW04bFh3WWpLQTR4NExzZC9iM0xjTWI1M3pwUXkrdzc4ODdEa0p5dnYyd25PSi95QXhCUlBpejRKVjZXdjFvalFwTDlmdEgySDlLRXpsamRkMUR5RTZPZnJ5eXZMU05aV2Mvc0luL3ZXU0FIVTluZlBob0ZuQk9Lb1g2dFhVMVowcEt1TXFlR0JPaWd1dDNscDlOZWlqM2ZyeXl2TFNOWldjL3NJbi92V1NBSFU5aUMvKzJMLzVuM0hJZjNzQk5iTWdkWUN2UFl1RXhDdExGUzJsYXhjTkpQdXl5dkxTTlpXYy9zSW4vdldTQUhVOWdNTkVIWGFyWHJoeDVoY0VmNTlaNmF5QzJRcG1nL2tYNDNIMFY4bEhoMmU3VG83OENSN04zeVAwZzRPNGdzN1FNc3J5MGpXVm5QN0NKLzcxa2dCMVBZNDk5bXA4U3MvQzN4OG1XaWpjVWVocStRYnpoZ0ZhVXUvbXRydUprZjFGOHNyeTBqV1ZuUDdDSi83MWtnQjFQWWIybnVCQXo1QjdIcUZ6VE8rY1RaeWhTSTdLSVAxeUUxUWhOR3JGbmgxZFlraVJPZkdOQUlSeEM5YU8vc1o4UXM4eWJLS0NhNkFiVWtpRm9oME5TQ096cFF5K3c3ODg3RGtKeXZ2MnduT0oyWllQK2szR1FLMTNtVHdmajR4RzhDUmF6ZHlLZU1RTWpTN3ZnQW05U25rdm9XSy9MYVN5ZkhlZ2lDait2d3F0aWdlSVJ6K09IbW5LTG0vK1dDUGEwN1FSSGQ5czI5M1RCT1M0WkdYTVFXQ0xmY1dMLzI2M3IydkpPRTVMQzFTTDVjMmtaMmdvMW9BRDdqME4rTGo4MkFBalVJUmpJaDNEdUE2Q0Nva1hrNUVvVERqenVKcVRGejhkTWJkcWx4U1VuNjNld1FydzBwQ3BUTWFkay9takNjV0ZyUjJOUXBzMXFsODdpSmp6aFVLSVBZdE9BUHhKRGVjWFZOa2lpZUVEUmZ2WG9ydWUrMGkvTnRhcmpYV2tWc0FqVUlSakloM0R1QTZDQ29rWGs1RVlmdi9MSWplVG04S1F3MXcrbWNxYlNnZUlSeitPSG1uS0xtLytXQ1BhMDVzY1A0VmM4NHVRSnhNSTMzM1Z1RTJ5eXZMU05aV2Mvc0luL3ZXU0FIVTlqc0tLMk9YU0FjRkpyemNqa3ptRi84SldVRWhFRVRFbTNKQk9Kc0d0RUlJblE2NmVvVEtZekNMSkZTQitsZ2FybmJ4b1NxeXlJOG10ZGNnYWRpekxjeGdKWjFaRTNuSzhzYU4rNFJtTGZIL3l5dkxTTlpXYy9zSW4vdldTQUhVOXNFQ2E4a0QyV0lmNXNKS29TV3p4L3ZoK2RjYmJkODZCZlExTDFmckNSQmF4bDc4Q0h5MW82d0pZRWJPWTJrQzRzNlVNdnNPL1BPdzVDY3I3OXNKemlkNnlzL1U0RzJZbzNkYVNCSEJKS1FZeXl2TFNOWldjL3NJbi92V1NBSFU5aGEvVDJ1T2tQMlN1R1ZTTWw5ck81NGNRdi9WWFR0Q21ueVRhSTNPYlFvRGI3T3hWMUJOMEVIcmUvUW4zcWF4TWVRYjdLSnlzWVpxRUJrbDJwL2lPVlpnb2Z5N0NnemdOREdOL3ZHTitnRi82eWFlcCtDcXEydUVOb3BnMER6eFQ2ZHFMQkVXM1lFZTZQMkNWbkZvVDRzYWZya0d4UkxUekthWUxJc2U2SkhaVnFRaGRZUVJPUUU5dWgwMzA1SkdxVnRWZHVxSXBSV01seFdmcit4QnhQRHJxcWlqeWRpSEVvRVBnSHRXYmNHZFZJaFpuaHZzTkJCMi9BY3RXdW54YVFvYzllc2xGY0F0a3g0MDVEYTBTbWcrUXg1bXZEMEc0cjEzeUxkaHNaajJjb0UxUDByaWg1a3pVSXVmaGdtYzZ4YjJwSlpJUlcrdjViZVc4WHRCOFpYTEs4dEkxbFp6K3dpZis5WklBZFQycFh5T0lhUENFNXA1Wml4NDZuazlESHVQakQ2RjB3SDBPc29wYlpwS1JZbENxaC84bWZjcGt2azlEUWlpTFMrRHl5dkxTTlpXYy9zSW4vdldTQUhVOWhyY2Y2dEQvcFZmQi9DMVZlYWRXVDhLdXo5OGV6YkhVWEl2UzJORjZ2MjQxeVJXMWU5Z1VKWThGQ3ZlaGxkMmtNc3J5MGpXVm5QN0NKLzcxa2dCMVBZN0huV2dYSnhXSElUNzNjQzQ3N1NIUzRoaGN0TUNBQnp3bVRub0ZHZVRiZE55SktnbDdrS1NBc0YvR29VK01STEFZd05OWEdGMzB5M0Q2WmVNdjhET012c1ZHZFhIdGoyNFpVZndEV3NKTXNzcnkwaldWblA3Q0ovNzFrZ0IxUGFlNk96KzRxNkFBMGh3ZS9pMlc2dXdOMHJlakNWNGdzbG1haXNUQys5NlZNc3J5MGpXVm5QN0NKLzcxa2dCMVBacXJ2cEkxU3pUajFMb0pnSVZFT1oxeXl2TFNOWldjL3NJbi92V1NBSFU5dVBXMnd2eUNaQnBETlYyeW1VU3BUNzJHdnp6MVBCTnB4cDB4MURXWSs1RTl0UitmcGhJdVVXbnRTSTdVZVNqakErMG9FTVRyaTU0THVlVHY3Q2dlZ215MzcrQVlsUXVGMUNiYW9IL0YrUUppVlNuMlg2T0s5MFJmRXFqa0MvcklTWXovN3VjcDZhTTNUMTljSnB4RXJITEs4dEkxbFp6K3dpZis5WklBZFQyTklpTWlGR1NDbkZQOG95L3FJZnlXVlljblcyUHo5Rk1JWFFLWFovcGJCTnNVbGh3eG9XV2VZeUt6WUF0VTQwK3pwUXkrdzc4ODdEa0p5dnYyd25PSi9MbmE1V3NMeFpOY2lncnAwYlVCT2d5K1RNVTI0bmxnQnp5b0ZzSllCWmZIL1lvMVZnTzdNRGFnNFd6TzBYS3c3bzhBY1JsUmE0cTRNb3BOc2crK3dQTEs4dEkxbFp6K3dpZis5WklBZFQyOUF1QjRqUGNYMWQvM0FsK0pFdWVEM0JuamtKYzBiSDVMdzQxRzdSeEJqSVQxeXpQaFhjZVhRbUVjbWN3djhZc21hM2RVYUQyZHJ2dEVMVzdDdHJvRWFjME9PdlpaM2FTWWE4R25zb2ZxQnpETHRpWXdjQU9TeTZZM2tldU9WWGdJTlZBTkdiR01EMVlRbHBjby9yM0E4NlVNdnNPL1BPdzVDY3I3OXNKemlkOWVPd1FBZUxObjFuYlJOMzU3UlNuVjljYnZQWDRSbWFjQ1BNcWtLZWZYUXFzQUxzb2M3VHNBTmNZUFdCNzNVdXd0S1NQT1F0Q1NmSnBKMUxUUmFRZW52MXJWbklPUFdpMnR1b09JU1ZON0hieG9TcXl5SThtdGRjZ2FkaXpMY3djdHpsZE05NG1Nc0xIdEhwNUZRTTNQY1hoVjJRMTIrbWhiM3l0Y3g0emdKR1JMdE9mL2tvZ1VTUHVzWGYvOXltUnJDUUlQT3VDY1p3aXdVMzVMVlI1d2VTSExqdmhOUEZZZlVVekx5Yy9wNVFQNHMzVmNLVDBrTHI4bGtHRWxqcUlScmdXbXV6Wms1Y2NnMFJ0Q1E4MFZka2NRYURtWjNrblppRVlHZjNhMlpnZXFiNlVwdGlBUkNaeFVXbGducENqcG1wNndja28wS0MxenNMZVNmRStmRzhJdUplU3FZamNiTFBYMm1CMWs0M2cwRzlTUlJpRDVJN29NOFozQzhTWWtMZmEzdzIrNnpyMUdYZytXbU1xckZRVVpzNFdYY0g0UURJeHRjNjBuTVVYNkwxV1hPVVV4bk01ZkxZZ2lFQThBTHNJaXJ0QmwrRU8xT0w5OWxHOFJLN3Vsb2IvL01Bays3RFFEVW5ucE5VbGd1OGlMOHdPbys1YWlvSUtzcG9Sa21zR3prSHhrTUdTTnA5RGl4R2x6L2xyQTBOSmRlZlBHR0hPY3RiOGx1SUZNY3R5b3U4aFFENFhTcThnaWY0WTAwU1VIRXc1MnVzajBuN0hnZzdhNHh5UWxad0hZMlQ5N0pLZ3NGLzdzWTF1c3ZTNXV3R2Y0TXVkcjloei9PNTI4YUVxc3NpUEpyWFhJR25Zc3kzTTJUYTczdjAzOGFLbnZSbXhscXV0L1FFQ2tZOEg1YTM4TFcrRE5yYk54OWRwOEt1TlNsSzVNWXVoQ3dNcEVBcGJmYUE1eXlCei91TzVOQkdMdkFoc0lSY2xxbmYveEJUem9YT1NSWm1mZ1JkU3ZhSmhzRXFSbG1LbTN6bnlkMGdFYUYwL1hvVm9tQW4xbEZGRTkwQ0lTYTNyMDJEWWtGTk0vUjNiVkN1bkwrRHQ3d3BlRExBSWY3VndZUGVYWDVGYUxHajRUOHZzNUpOODRETFA0a3VHOWRneDl6TXBkelVBakFuT2FndlJPRVJmRytPOEdPWjZVSXB6VGMwTkhCUnhhMjNvTmZaalowQUh4M3hvVithVEJ2RDI1U2RuTmJVcEtYN1NDK0NQZnc0VUZ5WWl2N00rekI0T2hDSUVSeWVCclBETE1XNzhKK0ZUZ3RiMjFEOGx3T1BxMGtYcDBtTWhKV0g5dEtnUVV1VVRldzNiQnZ3VzB2VFJYOU9Eby9ycmkwTng5TW1HSWkxMHViWmkwQnRQU2dhenhLRjBNM3EwQi96bTZpSmx5WWQ2ckJVRGdVdUt1SktFYU8zU1NYc3RJL3pjMEpxWHd2aGRsUGcra3FpSXArUHEwa1hwMG1NaEpXSDl0S2dRVXVVVGV3M2JCdndXMHZUUlg5T0RvL3JyWUFyOGp5bDE1YlFlV2ExSTFGOUJpL0QyNVNkbk5iVXBLWDdTQytDUGZ3NXRaSlBNYWRzQlFrTkpKaFZINmNXYWMrVktTM0wvd3BPWVYxa01KWmkzRnBYaWdPaEVFWDV6OFpBU3kzNDVHaE1xTjlFdzRUT3ZvdWVCaFlRam42OXNmcmQ3QkN2RFNrS2xNeHAyVCthTUo4Yzlja0lWM0k0RStZK2ZhdGpOalZBdDl4WXYvYnJldmE4azRUa3NMVkl2VXZXenpuVkVHbmtSNmJFT3Y1Y29VUUNOUWhHTWlIY080RG9JS2lSZVRrU2U3aytvU0JBeDZnL0RsY2p2UzhpTktCNGhIUDQ0ZWFjb3ViLzVZSTlyVGh4S09uVkU2R3VBSUtnL1llV2hERnpMSzh0STFsWnord2lmKzlaSUFkVDJ1b25EdGVmc01mbWVpT1RVRTNuUnJkaTJCaHM0SzQ3N3lWaHBJZDI0eWcxamtIN2ZYK2RUUkFub0NpVUZrNlBreXl2TFNOWldjL3NJbi92V1NBSFU5cGtXVkhSZ1ZZY2greXZHdHhHYkhreDhid2k0bDVLcGlOeHNzOWZhWUhXVHJDSS9yTGpuendOcW1vZ2UrVkxYTGNzcnkwaldWblA3Q0ovNzFrZ0IxUGJCNDkxRmlnRUU4aW9XVWpGV2wvcUJCYVI5RDR1K2luQm02R0lObTB6MnRpZ1RWN3BkR29EbnRxU0NFbkpyQnlnL3Vnc3NKRGtmM05TQkgvTDczb0p6VGpEdTN5cS9lV1krQnJ6TVZ6blhQRkNjYXUyb3dYTEIyeGRaSURFczZ6R1E0TW9tMm95NW9rK0MrRkt4MFV5ZnVlRWZRanFxOWN2UDBVTDFnWmRiZnFOZ0J0NXUrdXAzTU91cGNVTTRTcnZMSzh0STFsWnord2lmKzlaSUFkVDJHOXA3Z1FNK1FleDZoYzB6dm5FMmNwclFoalV2K3E2bDV3bmlTbWpSVFNzQyt3Z0hjbjJzaW9YZ3Qrb2FNenQyeXl2TFNOWldjL3NJbi92V1NBSFU5bG9VVUc2K0NGYXdPMHFEOTZHTFJ4Z2JhWWRqcEl0Nm12VS9sWDRQUXdXNFNveDg3bUl4QUxaM1NEb3VuREQ5WEoxOXlaTXVMeUlNVldzdUhWNG9YdzVHWGRHQzFRK05GMFpYZ05vd3ovQWlQZFN4TW44UlZHU1lZbDFhSjczNDg5a2RqR0s2bzBTMGhwdTFBb0tjKzVMTEs4dEkxbFp6K3dpZis5WklBZFQybXl0VTk1QnNNRWUyNXNDbytyb3E4TXNyeTBqV1ZuUDdDSi83MWtnQjFQWmVqUXQySlFDMkpuVlNXWGZpdnVUTGdua0ZtdklRYTB5bS9SUnpEUHRvZ1pnOHpGWS9NZW1Ic20wQi9mbjNHcDlxWU41bVQyM1VocDFyT3RySWp0akF5eXZMU05aV2Mvc0luL3ZXU0FIVTl0RW1RT1BaSlFuaUxjMlcvRVdjUm44dExPanFLc1RUcUNCZldWcHh1WTZmWTFLc2pCTVZNOENDemppM2NHTWVsOHNyeTBqV1ZuUDdDSi83MWtnQjFQWkZiSGw2Z2docDFVNFZVelNOUEN4Tnl5dkxTTlpXYy9zSW4vdldTQUhVOWlKR2lNQ2ViWWdpd2paSXJOOGdMaTNjYTNacFZnN085YWFJRzFyRkM3T2RNWFJhbnBzZEh0ekxBUzg3SlRkdE1USU5uVnUreWJMaTYrek5mNHEvUEhmTEs4dEkxbFp6K3dpZis5WklBZFQyMG5PS1B0NG1aV2tycDJGS1Z4ajBkVzY0a3A5cnpHY280WlhsZlhrRSt3WnorUFBBaVpISml0UFFMTHY0YU1nSjhvT3RFYkJneDBIcTlSdDJTNGdEb3c9PVxcXCIpXFxuICAgICAgICAgICAgXFxuICAgICAgICAgICAgdmFyIGRjID0gJChwdXJsKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgIGV2YWwoXFxcInZhciBjb25maWcgPVxcXCIgKyBmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9EdWFuTmlhbi9NeVBhcnNlLmpzb25cXFwiKSk7XFxuICAgICAgICAgICAgICAgIGV2YWwocmVxdWVzdChjb25maWcuc2V0dGluZ3MuY2opKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIGF5dG1QYXJzZShpbnB1dCk7XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRpdGxlcyArIGJhZGdlVHlwZSxcXG4gICAgICAgICAgICAgICAgaW1nOiBwaWNzICsgUmVmZXJlcixcXG4gICAgICAgICAgICAgICAgZGVzYzogYmFkZ2UgKyBkZXNjLFxcbiAgICAgICAgICAgICAgICB1cmw6IChtb2RlID09ICfnm7Tpk74nID8gdHJ1ZV91cmwgOiAobW9kZSA9PSAn5pat5o+SJyA/IGRjIDogcHVybCArIGxhenkpKSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8yJ1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICAgICAgXFxuICAgIH0gZWxzZSB7XFxuICAgICAgICBwdXRWYXIoJ2FpZCcsIFN0cmluZyh2LmFpZCkpO1xcblxcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogbW9kZSA9PSAn55u06ZO+JyA/IGdldEhlYWQoJ+ebtOmTvicpIDogJ+ebtOmTvicsIC8vJ+ebtOmTvuaSreaUvicsXFxuICAgICAgICAgICAgdXJsOiAn55u06ZO+JyArIG1vZGVfdXJsLCAvL2xhenkxLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICAgICAgfSk7XFxuXFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBtb2RlID09ICd5aGMnID8gZ2V0SGVhZCgn6JCk54Gr6JmrJykgOiBtb2RlID09ICfmlq3mj5InID8gZ2V0SGVhZCgn5pat5o+SJykgOiAn6JCk54Gr6JmrJyxcXG4gICAgICAgICAgICB1cmw6IG1vZGUgPT0gJ+aWreaPkicgPyAneWhjJyArIG1vZGVfdXJsIDogJ+aWreaPkicgKyBtb2RlX3VybCxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgIH0pO1xcbiAgICAgICAgaWYgKGdldFZhcignbGlrZV90eXBlJykgPT09ICflvIDlkK8nKSB7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfngrnotZ4nLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQobGlrZV91cmwpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHZhciB0cyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNvbnRlbnRfdHlwZSA9ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9dXRmLTgnO1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIGxfYm9keV90eHQgPSAnYWNjZXNzX2tleT0nICsgZ2V0VmFyKCdhY2Nlc3Nfa2V5JykgKyAnJmFpZD0nICsgZ2V0VmFyKCdhaWQnKSArICcmYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYnVpbGQ9NjEzMDQwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZsaWtlPTAmbW9iaV9hcHA9YW5kcm9pZCZwbGF0Zm9ybT1hbmRyb2lkJnNfbG9jYWxlPXpoX0NOJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMTMuMCUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCZ0cz0nICsgdHMgKyAnJnNpZ249NGEwODY0NWMyOTk0ZWI2OTJhYzBjZmIwYmQ3NTY5YzYnO1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIGxfY29kZSA9IEpTT04ucGFyc2UocmVxdWVzdChpbnB1dCwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6IGNvbnRlbnRfdHlwZVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9keTogbF9ib2R5X3R4dCxcXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xcbiAgICAgICAgICAgICAgICAgICAgLy9sb2cobF9jb2RlKTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly8nICsgbF9jb2RlLmRhdGEudG9hc3Q7XFxuICAgICAgICAgICAgICAgIH0sICksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn5oqV5biBJyxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKGNvaW5fdXJsKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgdHMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcXG4gICAgICAgICAgICAgICAgICAgIHZhciBjb250ZW50X3R5cGUgPSAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PXV0Zi04JztcXG4gICAgICAgICAgICAgICAgICAgIHZhciBjX2JvZHlfdHh0ID0gJ2FjY2Vzc19rZXk9JyArIGdldFZhcignYWNjZXNzX2tleScpICsgJyZhaWQ9JyArIGdldFZhcignYWlkJykgKyAnJmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmF2dHlwZT0xJmJ1aWxkPTYxMzA0MDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImZnJvbT03JmZyb21fc3BtaWQ9dG0ucmVjb21tZW5kLjAuMCZtb2JpX2FwcD1hbmRyb2lkJm11bHRpcGx5PTEmcGxhdGZvcm09YW5kcm9pZCZzX2xvY2FsZT16aF9DTiZzZWxlY3RfbGlrZT0xJnNwbWlkPW1haW4udWdjLXZpZGVvLWRldGFpbC4wLjAmc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4xMy4wJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnRzPScgKyB0cyArICcmdXBpZD0wJnNpZ249OGFiYmRkZDg3YTZiZDgyZTFlNDJjYjNjZmZkMzJiYjknO1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNfY29kZSA9IEpTT04ucGFyc2UocmVxdWVzdChpbnB1dCwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6IGNvbnRlbnRfdHlwZVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9keTogY19ib2R5X3R4dCxcXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xcbiAgICAgICAgICAgICAgICAgICAgLy9sb2coY19jb2RlKTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/mipXkuoYx5Liq5biBJztcXG4gICAgICAgICAgICAgICAgfSwgKSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAnJyxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ2JsYW5rX2Jsb2NrJ1xcbiAgICAgICAgfSk7XFxuXFxuXFxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHAubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICB2YXIgcGFydCA9IHYudmlkZW9zICE9IDEgPyBwW2ldLnBhcnQgOiAn5b2T5YmN6KeG6aKR5peg6YCJ6ZuG77yM54K55Ye75q2k5aSE5pKt5pS+JztcXG4gICAgICAgICAgICBwdXRWYXIoJ1VBJywgJzt7VXNlci1BZ2VudEBNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wXFxcXFxcXFzvvJtcXFxcXFxcXO+8myBXT1c2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzQ5LjAuMjYyMy44NyBTYWZhcmkvNTM3LjM277yG77yG77yG77yGUmVmZXJlckBodHRwczovL3d3dy5iaWxpYmlsaS5jb20vdmlkZW99Jyk7XFxuICAgICAgICAgICAgZXZhbFByaXZhdGVKUyhcXFwiaWZuenFhTnFOUmtONk5xRzBmWng1TWV5NDc3T3NNSk9UYlRkOVNhak1rZjVSNU8zOTZKMjJGeGtiUWJrWFhDcGdnZnVhZDVvKzNwOTdMSFdiSXB0b3c0bytNUlF0YVAwLzh3aXlKQ3JaQ2FaWVc2NHdVMUI2MHhSQlF0YmRKQ0VnUnVIaG9ac2JHQVpCQTQzL1RYeEd3SWtDY2tiVjZuekhobTkzRGs1RGlDNUk1SG4rQ2ZpQk1FNHlRbzM5T1VKeTNwR0FXbGpEMXNucHpHaEJqMWIzSHJUdnlrakZhU1BnblMvTVVkSk1mMFFaSVNOR1U4ejVvdmFuUHNIK0Y1V3NRZ0hnSXF4VzlldlYzK3RneWZMVWRGUjBONERsdExZcnc3dkNQZ3pQUVgvdndCTVB5NlljVnRTVktqYjZRekZhdVROK0oySVJZcnBheTE1YWtBa29mYStZeC9mTlRlZjQrNlphVnptWGVaYUVhajBiUS9IUFppYnhUejNTK0RtVVZkZ1l1MEhYTXkwQ0ZDWFN0MytlT1VOOWMrRW1WQUxyTk44T3FXclBla3J2RjFxTjFVS3Y2a0JjQkVQL1N3a3VmczN2TTA3Zld2L1JOSllCN2hFaHNvSXh5dkhRT2lQWUNURCtlVXMrZmgrVTliUlJBVXpSU2xYQ3poV1hqRGZDSmpZLzlCMmw0UnBoL253b3BFTXFpaTVwSkNKVVBUYy9INFVmdzlGT0xabXhNSGJFaVdmZnAwcmdicEhvS25Sbnp3WWZnL1JLN245ekxBZEdBSy84dUdhMHNsWjVJVDFYVWVxclBzQ3F0M01INUcybXl4QkRscUQwWVFVYjZOV2hJN3BqanBpbjZiVzJ0aHd6SDROVC9UcDRDV3BIbFZ5Y0JWV3NTZ2hHeVNCRVFScEJRS0xPVHYxRXZPeGdGeGg5R1ljdTlUNldQdWZiRW5EZy9MSzlyZ3IycHdvSTNZSWowcDJCYkJtWDd2TWhQeEtLTHB4Wmk0M0p3VmY5SHhuMzFOYVlRaS8wUzF6VENnOVMyNnRVZ0FxNDhyaStFaTNNSFVrSTZXc01iQTczTG5mZ0JqNzdEQWxRbDVRT2tVdi9wSGh5WWxpaVEyWFlhWXhTSCtoRzQrdEErSzZ1UDBoREtlUUxrL2Y5dDdpKzZZTzBVKzhHaS9Yd0hBc3Q2Q0w3SS9LaUJmRlBuTllMeFpCeDlFMHNRZXJJKzhZS0YySmZUb3R2SGZjOWlTZjNMZUFjVXpXeS9Hc1lyMjBxekUxKzJocVVueFFicWlFamxhTXFlci8vUW81OE93K0ZtcFFwMXd1KzdoZ2ZyNlJrSzRZd3hrZXdlWGhPUmZDQk5xSUJKenR3WjFmQjBtYnBSTjNja256RGljcmFtbTNqV2tEaVl6Zi9KTTNoWXMzY3J5bGRHeVhxcjI4SjZ1OHhMYVNEWEYveVVRd2JTRldKTXN0NCtpalMzSDdEVTV3WWpna2hFemhCVkt4NzI0TFVta3BVVGFSVGowMEpnQ01zbEhEeXl2TFNOWldjL3NJbi92V1NBSFU5cTJDWVI3QzlDSWtHdUkwa09LSDBud0tLaTF4V2Y5WncxaXZnTHhrVWxPRUlGTnBROFhkNFJ2aWpqR0xyeFFSMnptc3JxTGpUaGpwblI5cnlsMnF1VG0rSG11aWVqc0dNV0dJWEtreXBkTFlQbnZjSGZIMmNsV2dVNzFWSnhXcno2S2s3TGpJR3o2bUZvajQ1Wlo3Ri9qMXRqWE1oOGxyWUJsS2RYanpsRGNzMmhzOUo5dUFjeEtXalJYbXk4dUtDNFp1N01mVkswa2NEZnZ0QWZja25lblJnd2haRktwU0h5Nkg4ZklsMFduSFBiVVNONS9RMUlpazhrYWFDME1TYlI4S1Y0NnZoRWV2UWRQb2V4WDdDanBTalprRkFLU0YvMmt1RFh5R3N6THoyaE5Pa0cwaTFCbWt4aGpjNjMvQVFseUtpemszME1KQmZOUFZFNnk5cURFc2RYbUxNc291SDhwNzBIeUgvS29lbHlBa2krVWZkbEtRTmoxN0hvWUdTaW5Ra2JiMmlGV0c5TkRPV3dyajhaUXVYVGlOS1RYSk9ySDhsVDErMTY0RUdqWGU1K2Z6ZlVtQU0wQ0xSTVRSL05xNXpOVmdlOVBGL1ZQTmZVMGROVmNvTG1ZUDZEVFU1T3pnMGJzb3gxYThTZ25keEZSOWJTTlJ6Wm56UEdKbzZIS0djZmJWYVNVRlFDVGQ2VWJ6VGRjcExEVFFxdVp3UEZiZGRTb1lqZHNGdWtuUENFMlVwNnJrL2UxZGg5S3I4bWFFOEZZOENPbkJ1N0IxV2RQZHl1V2V6N3hQdHNoekFJd1Jla0lPbUcwb21TbGJ4dVh3MGI5V3RQQVhSTVRlUGdhYkR1OEJyejAvNHMwZW9CQ1I2Y3ZYaXdLQVg4REZJOXZ6NGZudXJOTGQ3aFpJa0N2QW5UM1J3L3RTdHNTKzhyRlVtRzAzaWFRbUpuM3lYYWladzFNU0hrUlZxV3REWjh6U0FrcnFvWUE3UTN1eVhkSk02TXFDWEViQ2ZnWGxnUDRDQThnTHI4dHZ3aDRuWEZtWVNhYUdsRU1ZQ2hoVnNQMFRvbnNneUdjNlpIckYra0gybERHU3F4TU5lQitRVE5zTkhnckVScmh4NjZ4T3lsc0laRXdMQ2V2bmZtUXAvQ0x6NE1jQ3QwRld6aG5KUTJOQWg4MTFtT3diNDJpM1hPam50a3RIVDJ0UU1RUUtCZ2RUbllqR1lLdzBCNDE0MXVlQk5hd0dhWjNsTGFYV1Q3WXVHUWFGS3BYZHprbWk1c09kalZSeVNralZwQTlZZEVhblNRNTY4NFNqTFozQnV0V05reElwM2VReTQzayt4b2toUHZ3alRWWXBHa2JiQkdvQ004eklCRHhlcTIyTDlBa2NOWVh1ekpheS9OZzNUdVhXV0tBdjArOHpLZENSdHZhSVZZYjAwTTViQ3VQeGxDRElnVkNqVkNIWGlicXN1UDdqS3lSejN0cjluQ1pJWCsrWUNBYStaZFhLMFAyZWcxdGxKemVXZzIwelVnRWpPa25zSUZrazJ1QmZMMlVFak54ZGxsRE9JUzc0R3I0QkhicVRGT3ZGQmExalpsUGJyZnh1TlkxcS9KelNkY1ZHOTIxZTQ3T3o4ckZEUHVWRTdOZnRhMm1EZlFsN00wSlRON1RpZUJZamRhQVhQUzlET1lPUHNPVldVbE8xUXhjZXR2NWd3Z0kwZ0lWaHBhWFRJNkF5QzJuWTR2TGhmaFVaV3Jia2U2c2FHditOK1FjckFTL1hxek5WTzE4bnRiZk11ZWxGaVNuVEZTaXJZQk55TmJKMnl0T2s1SHFNSHh2TzdjRHpNUTdFMnplSkhqOFJ5dlNCbXZUcTBqQmRMQmlJQWg3ZUoreDJKb0VXLzNDYnJUYmZPeVp6K0hGUHNPN2hzeVR6S2FyRHBEdndkNkdsT0tnWDJTVmwzU1RENGFMdVhkMHZOd1ZacUg2RWlScmw4YWhTekx3QURjWU1JVUJEUndlR1kzbG50bXZDWDIxd0tWdGRlQkdUb1RLUnpET0FSTmZwR05iRkJLMHJ3cVB3SzN1WTR0aVh6aG1teUpsRDZLMm9XVTRnOVhZVzgyQUJsazUyTWxPZVFZZDFoV0hyYXdwR3BiSENFYzRpcXM4TjJTZGFhNUI5cU40VFlCM1hOTnRpK3JOSXRHZzlPcGFzdTVvZmZDRkZJYk5abWpUYzlFbEs0TXduT1c5OUNHbTQwMk1hNC9lazBsVUhQa3JNOFVXNk5DQURJb3ZDMGttclZVb3huUzBIUXhzZmdXUUlsa05QRDlGVWZPNGlKZjJmM2lUZ3p0OWhFMk9nVDJDakt3S3A4SENqdWhjYTVGY3MxU2xEbGhTQUtlSE1IOXcyVWYvbjV1UTZuQjBXVVdDTnNSdjlETjBNV2ZDeFY3Rk54VWxhMndjUEliVXRZUk5qb0U5Z295c0NxZkJ3bzdvWEdnQ1pGbHFtNzh2dHFDYmVLMjhpWHpqRmN0KzQ4dDBrYzZiRWlxUDI4S25ZRjhuQVZuRlFJMk9JZVF2S2JJSEFzL1RYbHMyNjNRbGFqZEhVcE1LWk5rL0FCS0cvK3FrVzJkV1FFOVdtUENlUE92ZFZtQWFQTXgyeTdMbjNqMjdVVlJQbElwbmlPNnI2V1AyZFQ0YW1mcGE0RFQ5dzhEa3RIMGozOVphNUtiQmpxWVQzMDhFYVgyN3hSdS9xL05YY1hoa1hQOUlEWnlSU0NjdVpreGY2VFo0UUtwSG41dnpqb3VJYWNTUE1UdGFTdHB5RkR2TkdIVCt4VjZFWXVCcTVyL2dDZDZPaFNiTERLcUh6dmNCQ0RCTE0yT1A0L0VSMnNodjdHckwySWJzd0tYUVk1U1VJRTF4OW5lSDJyNUd4NDFQMGJmT1ZwbWxMdEJOTVJFUGxNNGpUME9Kak11aEQvT3VHMmg0OVF4ZUpxVUtxQ3FyVzhyQVdiS0lxRjdESHhEMWx6MHpObTRqRWZzUzYvWUxTbFRwNHIzYytGZWREdmFSaUdTaUxuR0U4N3E1YkVkd0s3WWJuVkJZTVg2YmRDSXNLOFEwN1FKa095Y1VNZm1kQ2txVmU5N1JhQ25sYWNIUWFnMDI0ZUZuV0hHRk8vcngvdFV2VVppYzJ3QnE2L3g2ajhBSjhEMmxuZ244WDdhYUFyOVFWc25USldZVmtzMGh0MzRTWU9NZWsvaW5DbU10RHNrU3JPNytXVEVmQ3VDS2tpcDdWR3o1MkpNcTJ2enptbXlLeW8ycWE4UmhVY2N5WGh5bThXR3g2b3UrK1NpSnF1NmZNenN3TUc0VHRYL2pMUmZYMjRUOGFvWXBaM285M2k5U3hrUW8wdDNPUTIwTkgrNGxvQnJXeWt3QVNHRnFXT1gvNTU1SG5vS2pHdWhjKzZiTVZGZy9qUzNwREpzWG4rZk11N2VpZEphdnlaNlVaamgwQThLTDVyN2p6QVhuV2U2RWk1LzRQNlZwT1VIWVhLQTVzckVjekZwSFVQOVJkVjNJdWlLNzZHUHE2cGo1TTVMaktkd041S0JOWHVsMGFnT2UycElJU2Ntc0hLUE1yYjFNNDJzRGxvUlFobmVwTmlvOEFSdjBZRDJROUdKUE9jQkhVNkVUSFdZejJJaXluOVBpalpSN1lTcDJwN3lpUUJOR3FqV1lHV3U2TE1sUUlkWVJDSjlwVFJ6eHVVOHJuenh4azhQUUNENXBETVJFQzRaZE1vU1hjbWNWY0h5TUNtQVVHbWlUUitPckFDckxwZ3lkdnRMK2tNSFV0Wkh2SDRNYVI3SXh2aUhGQUVRY3p2cUo2TFVrc2kxRWRPTE1JL1JzUGNOK1A1RXhNcjJ4azE3NlBzZC91ZGp1aDVTU1lzaGZkQ3Fma285Tnhhemk3eVlJNW9sR0VFNEtpWFVxVWtGZDNxd2t2SElWVUlhUDA3NVFUMnlYd1Zwc0xUSGFEeHo2RmUzbzBoNExrbGlPOGdHV2EvaXFrRC9Ebm04c3J5MGpXVm5QN0NKLzcxa2dCMVBaWHdwZ2EwMXJEZllhVlRNVnl4R1NJeXl2TFNOWldjL3NJbi92V1NBSFU5alNJakloUmtncHhUL0tNdjZpSDhsbFdISjF0ajgvUlRDRjBDbDJmNld3VGJGSlljTWFGbG5tTWlzMkFMVk9OUHM2VU12c08vUE93NUNjcjc5c0p6aWVXTE1WYU9WRzQvZTFWUFRTQXpZOUg4N09DSlhleCtpQU9vVytLQW5yaUJ6QVZCZEZ3eVVxSWVuTEpWc1JIN1Z2M05WNzNNcXJxbi9wa3pBWHRraVVBWHdwS21WemRiZU5MbGVib2tEa29tc3NyeTBqV1ZuUDdDSi83MWtnQjFQWTNtVFJtU3RTa0hieEEvRnRjZmhiMzM0Qm96MVl1WDQrWm5wQmxSU3d5VFRFMXVHTFlmZXBaYTBKOXBUYzhZL0diRTZ6WHVhK2ZkM09Za2s0Q3BZNWhJTlZBTkdiR01EMVlRbHBjby9yM0E2djhIN3NkTzVLN1NqWjhJVDVKU0xWc3BCRlUzeXlxalBjZFZHOWR5RC9McEd4YlcyN1FCby84dTJWaHBrbTlMY013M2g4aGlwNkN6QjZUbHB3VDFUNjdYSGtHejhVYTFDK1NML0VFemVxOUs5OFZUU1c0RlB5ZWNGWTdJVWM0MEFYUG1wcUtJcXRhN1NjakFZdkQ4aFpIM2QzVTFVNTMvU29jSkhLRGo0WnYxamJuRlRzam9kalYwZkhlWU9kdDUwUEZXY094WFlhejhqZ2dkbDA0QkVGRlVrMFNwZnYyenJkTjI1NUtGcjFtNGdVeHkzS2k3eUZBUGhkS3J5Q0ovaGpUUkpRY1REbmE2eVBTZnNlQ0R0b1JrbUd2MHlOZEUwYmk5YzRwV1BRZ3JWaTBRamR6SDI1WDBObkpBa2w1WVVpa1BsbEZaWGhuMmRRekxtTWpLUDJSSzZMS1JBNUFwSGdPWFpXbkd0MEFtY2ZVeXV0dzBHWVJHOWV3b0tBWVEzOEp0S3ZSc2RWSWk2RmM0TXlqZTJCYnd1TG90K2w2WXh4UDJGZWtVa2tpOThnYlFxMENscHZiaFoybjV2YzVxSVoxZnZiU050ZU5IaTJOc0RXK2hVWEU4T1loM0F4OXdBSzZCaE0wRGlueG82T1ZvejhhbHhxNDR0dHFraUFSN0c4SFh6bXVNTmpMcythOStRSTlxZTZEU2JBQlFqN1VGRWhQY1YxZS9nUFQvd1IvczVveVNTTHYzMzB0anJ6d283cGxMb3VuYy9zYTdVZUF4QmVyUVVxeTJBbDQxRGF3RkxlSyttYSthT01iT2VaOGRJQmJHWmpXUko2alhaSWVNNWRrV29hWTVjUlJjQ3AwOXFGbW1obC9jV3NRVjIvS2ZxL0RhMnUzOFNmWHJJMVZLMmVnN0MyT3ZrNVNTY3Nsc1JOUTBRZ290Qys0TUNVUkVNODlSZTdJQjkvaXdXdis3OXFJM1MvSG5LZnhydUZ2T1dONC93V0hSNjlvY2FoR3hPLzF0OXVaUXNLTDhOaDRtRitMQUZZamhaK1I0SXBCVnRlWHk2ZkdsVzhhUVExc3ptL1M5aUlrK2pZY2trU25vVmlZWnRtMnZHc1pWQ0lPY2wwdnJMSG1aTVZ5aS9HSjhUOWwvaVNRcSs5TkFEbVdTd1JzVzlqcktSMnV5d0dzOUJoRmVzYlY0WEpYRXZ4TU1Lakhwd2h0WkRRQUZLS0xmalU0bEx1UDFrRzFHejNmUWdWRzBDS2dRckd4d3lnOUpORng4bEswcGRFT08rRGFYelRySG9YeE0wYklzZmNMWUN3SzVsbElDS0FrOFpNVDZNdGFITXYweTdldk1qQlovMVlsdlE5ZWtMMGY2KzdoVzdiR1RoRU95N3g5SXl5YmJvOXhVOGtHUTBJd1N5c2JINzk5ZXlmS25sWlpYZFUvbng0V24xYTFDUHlnSzE0S3RpWFRkRkRRMkxnQ09uMnFvUFpmN050SUZ4ZEw2eWFlcCtDcXEydUVOb3BnMER6eFR6SGJxWDZEbWNQN1B5ZWpITk9WVWczd0RGMlJ3ZDNJa3lZQ3FnWm5ONkVyVzFWMjZvaWxGWXlYRlordjdFSEU4QjZNaExueHRMR2tSWlowK0ZGSTZLbitYb2U3TEwrMlphRG80L3l5bmtWUjdCRnVTcWh0S0x2empkYnlZb1Rvd2ltODVjNlJxL1JDWHR3ZzlSZzRxU0VSR2pqWnlGY0pRL1E2YUpidjBMcEV5Um4zcXBwNzV1VDN6Y2JUU1JSVFZqenZjdVhJRXJncjFEL1B1Z0ZtaE9XZS8ycEIxNWpVNDBpZSszYzg5b3lpYWVJTy81c2tkd1FQemc2L1lITlYvMXNWVmdPS2FXNEk3UUFrYVNPdGRWUG02SDZ3dmx5WEVDQU52aENNR2VsRkFlMWpXdmRCTXVuVlI4TjJSRlNBTzhNa0lKNm84THZVb3pLRGtNUUJ0NXAvY1dzUVYyL0tmcS9EYTJ1MzhTZlhENTJnS0Q2SDhYVktGZm1ESGFvU2hNc3J5MGpXVm5QN0NKLzcxa2dCMVBhbWIwcWFiVDgzRDZxbi9hM0dsSHlHeGFtWmdSSGFLMTZ2bVpFemFudVRET3pHMWFVcHZFQ3RSQjhFTWdhcGFRWExLOHRJMWxaeit3aWYrOVpJQWRUMjZ2RnBnYTBaUkxXUlAzakgwdHlyTllBNzVlQ1RmOWRJcWpZR2NBQTFyc1UwemVlcGRNWjhNSlhkNSt4YkFhWEEvdUpmc0dqUEk3cHNRYzhKbitmbTNNTGsrTkNFRjhMc1EwT3RnbElYTCs2M0ZSdnlHN25NY2V2SDRpL1hUMEIxQlhOUEw2cjhpNmJuYmUrUUpLWU1BOTNQZGJCY0RzR1RWYUxpSmxZZEVPVGZqWWJwTFVSQ2RseDlLL3B1RVhXK1xcXCIpXFxuXFxuXFxuICAgICAgICAgICAgaWYgKHYudmlkZW9zICE9IDEpIHtcXG4gICAgICAgICAgICAgICAgdmFyIHJ1cmwgPSBwdXJsICsgJz9wPScgKyBwW2ldLnBhZ2U7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgdmFyIHJ1cmwgPSBwdXJsXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIHZhciBkYyA9ICQocnVybCkubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICBldmFsKFxcXCJ2YXIgY29uZmlnID1cXFwiICsgZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvRHVhbk5pYW4vTXlQYXJzZS5qc29uXFxcIikpO1xcbiAgICAgICAgICAgICAgICBldmFsKHJlcXVlc3QoY29uZmlnLnNldHRpbmdzLmNqKSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiBheXRtUGFyc2UoaW5wdXQpO1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwYXJ0LFxcbiAgICAgICAgICAgICAgICBwaWNfdXJsOiAnaHR0cHM6Ly9naXRlZS5jb20vQ2hlcmlzaFJ4L2ltYWdld2FyZWhvdXNlL3Jhdy9tYXN0ZXIvaW1hZ2UvMTMwOTY3MjVmZTU2Y2U5Y2Y2NDNhMGU0Y2QwYzE1OWMuZ2lmJyxcXG4gICAgICAgICAgICAgICAgdXJsOiAvKm1vZGUgPT0gJ1g1JyA/ICd4NVJ1bGU6Ly8nICsganggKyBydXJsICsgJ0AnICsgbGF6eSA6ICgqLyBtb2RlID09ICfnm7Tpk74nID8gbGF6eTEgOiBtb2RlID09ICfmlq3mj5InID8gZGMgOiBydXJsICsgbGF6eSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IHYudmlkZW9zICE9IDEgPyB2LnZpZGVvcyA+PSA1ID8gJ3RleHRfNScgOiAndGV4dF9jZW50ZXJfMScgOiAnYXZhdGFyJ1xcbiAgICAgICAgICAgIH0pO1xcblxcblxcbiAgICAgICAgfVxcbiAgICB9XFxuXFxuICAgIGQucHVzaCh7XFxuICAgICAgICBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnXFxuICAgIH0pO1xcbiAgICBpZiAoZ2V0VmFyKCdyZXBseV90eXBlJykgPT09ICflvIDlkK8nKSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAnPHN0cm9uZz4nICsgJ+KAnOKAnOivhOiuuuWMuuKAneKAnScgKyAoZ2V0VmFyKCdsYWJlbCcpID09ICfor4TorronID8gJ+KAnOKAnCDiipnigJ3igJ0nIDogJ+KAnOKAnCDiipXigJ3igJ0nKSArICc8L3N0cm9uZz4nLFxcbiAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignbGFiZWwnLCBnZXRWYXIoJ2xhYmVsJyk9PSfor4TorronPyflhbPpl60nOifor4TorronKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovLycrZ2V0VmFyKCdsYWJlbCcsJ+ivhOiuuicpXFxcIixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgIH0pO1xcblxcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJzxzdHJvbmc+JyArICfigJzigJzmjqjojZDljLrigJ3igJ0nICsgKGdldFZhcignbGFiZWwnKSA9PSAn5o6o6I2QJyA/ICfigJzigJwg4oqZ4oCd4oCdJyA6ICfigJzigJwg4oqV4oCd4oCdJykgKyAnPC9zdHJvbmc+JyxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ2xhYmVsJywgZ2V0VmFyKCdsYWJlbCcpPT0n5o6o6I2QJz8n5YWz6ZetJzon5o6o6I2QJyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly8nK2dldFZhcignbGFiZWwnLCfmjqjojZAnKVxcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICB9KTtcXG5cXG5cXG4gICAgICAgIGlmIChnZXRWYXIoXFxcImxhYmVsXFxcIikgPT0gJ+ivhOiuuicpIHtcXG4gICAgICAgICAgICB2YXIgcmVseSA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3YyL3JlcGx5L21haW4/b2lkPScgKyB2LmFpZCArICcmdHlwZT0xJywge30pKTtcXG4gICAgICAgICAgICB2YXIgY291bnRzID0gcmVseVsnZGF0YSddWydjdXJzb3InXVsnYWxsX2NvdW50J107XFxuICAgICAgICAgICAgdmFyIHJlcGxpZXMgPSByZWx5LmRhdGEucmVwbGllcztcXG4gICAgICAgICAgICBmb3IgKHZhciB4IGluIHJlcGxpZXMpIHtcXG4gICAgICAgICAgICAgICAgdmFyIHJlcGxpZXN4ID0gcmVwbGllc1t4XTtcXG4gICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSByZXBsaWVzW3hdLmNvbnRlbnQubWVzc2FnZTtcXG4gICAgICAgICAgICAgICAgdmFyIG1lbWJlciA9IHJlcGxpZXNbeF0ubWVtYmVyO1xcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IG1lbWJlci51bmFtZSxcXG4gICAgICAgICAgICAgICAgICAgIGltZzogbWVtYmVyLmF2YXRhcixcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnYXZhdGFyJ1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAnPHNtYWxsPjxzdHJvbmc+JyArIG1lc3NhZ2UgKyAnPC9zdHJvbmc+PC9zbWFsbD4nLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdyaWNoX3RleHQnXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICB2YXIgcmVwbHkgPSByZXBsaWVzW3hdLnJlcGxpZXM7XFxuICAgICAgICAgICAgICAgIGZvciAodmFyIHogaW4gcmVwbHkpIHtcXG4gICAgICAgICAgICAgICAgICAgIHZhciBtZXNzID0gcmVwbHlbel0uY29udGVudC5tZXNzYWdlO1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIG1lbSA9IHJlcGx5W3pdLm1lbWJlci51bmFtZTtcXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICc8c21hbGw+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7JyArIG1lbSArICc6JyArIG1lc3MgKyAnPC9zbWFsbD4nLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0J1xcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuXFxuICAgICAgICBpZiAoZ2V0VmFyKFxcXCJsYWJlbFxcXCIpID09ICfmjqjojZAnKSB7XFxuICAgICAgICAgICAgZm9yICh2YXIgciBpbiByZWxhdGVkKSB7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogcmVsYXRlZFtyXS50aXRsZSxcXG4gICAgICAgICAgICAgICAgICAgIGltZzogcmVsYXRlZFtyXS5waWMsXFxuICAgICAgICAgICAgICAgICAgICBkZXNjOiByZWxhdGVkW3JdLmRlc2MsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD1odHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWls77yf77yfYWlkPe+8hu+8hmJ2aWQ9JyArIHJlbGF0ZWRbcl0uYnZpZCArICcjaW1tZXJzaXZlVGhlbWUjJyxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMidcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICB9XFxufSBjYXRjaCAoZSkge31cXG5cXG5yZXMuZGF0YSA9IGQ7XFxuc2V0UmVzdWx0KHJlcyk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLpobXpnaIt5YWz5rOoMVwiLFwicGF0aFwiOlwiZ3oxXCIsXCJydWxlXCI6XCJqczpcXG52YXIgcmVzID0ge307dmFyIGQgPSBbXTtcXG52YXIgaWQgPSBNWV9VUkwuc3BsaXQoJ21pZD0nKVsxXTtcXG52YXIgc3VybCA9IE1ZX1VSTDtcXG52YXIgY29kZSA9IGZldGNoKHN1cmwse30pO1xcbnZhciB5bSA9IEpTT04ucGFyc2UoJ3tcXFwibXknK2NvZGUuc3BsaXQoJ3tcXFwibXknKVsxXS5zcGxpdCgnfX07JylbMF0rJ319Jyk7XFxuXFxudmFyIGVwID0geW1bJ2xpc3QnXVsnZ2V0Rm9sbG93TGlzdC1wYWdlLW1pZC0nK2lkXVsncmVzdWx0J107XFxuZm9yICggeCBpbiBlcCl7XFxuICB2YXIgeXVybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hcmMvc2VhcmNo77yf77yfbWlkPScrZXBbeF0ubWlkKyfvvIbvvIZwcz0zMO+8hu+8hnRpZD0w77yG77yGa2V5d29yZD3vvIbvvIZqc29ucD1qc29ucO+8hu+8hnBuPWZ5cGFnZe+8hu+8hm9yZGVyPXB1YmRhdGUnO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICB0aXRsZTplcFt4XS51bmFtZSxcXG4gICAgICAgaW1nOmVwW3hdLmZhY2UsXFxuICAgICAgIHVybDonaGlrZXI6Ly9wYWdlL2d6Mj91cmw9Jyt5dXJsLFxcbiAgICAgICBjb2xfdHlwZTonaWNvbl9yb3VuZF80J1xcbiAgICAgICB9KTtcXG59XFxucmVzLmRhdGEgPSBkO1xcbnNldFJlc3VsdChyZXMpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6aG16Z2iLeWFs+azqDJcIixcInBhdGhcIjpcImd6MlwiLFwicnVsZVwiOlwianM6XFxudmFyIHJlcyA9IHt9O3ZhciBkID0gW107XFxuY29uc3QgaGVhZENvbG9yPVxcXCIjMzU4Y2NkXFxcIjtcXG52YXIganNvbiA9IHt9O1xcbmV2YWwoJ2pzb249JyArIGZldGNoKE1ZX1VSTCx7fSkpO1xcbmZvciAodmFyIGkgPSAwOyBpIDwganNvbi5kYXRhLmxpc3Qudmxpc3QubGVuZ3RoOyBpKyspXFxue1xcbiB2YXIgciA9IHt9O1xcbiB2YXIgaiA9IGpzb24uZGF0YS5saXN0LnZsaXN0W2ldO1xcbiB2YXIgdCA9IE51bWJlcihqLmNyZWF0ZWQpKjEwMDA7XFxuIFxcbiAvL+aXtumXtOaIs+i9rOaNouaWueazlVxcbiAvKlxcbmZ1bmN0aW9uIGdldExvY2FsVGltZShuUykgeyBcXG4gICAgIHZhciBzc3MgPSBuZXcgRGF0ZShwYXJzZUludChuUykpLnRvTG9jYWxlU3RyaW5nKCkuc3Vic3RyKDAsMTcpO1xcbiAgICAgdmFyIFlNRCA9IHNzcy5zcGxpdCgn5pelJylbMF0ucmVwbGFjZSgn5bm0JywnLScpLnJlcGxhY2UoJ+aciCcsJy0nKTtcXG4gICAgIHJldHVybiAoWU1EKVxcbn1cXG4qL1xcbmZ1bmN0aW9uIGdldExvY2FsVGltZShuUykgeyBcXG52YXIgZGF0ZSA9IG5ldyBEYXRlKG5TKTtcXG52YXIgWVkgPSBkYXRlLmdldEZ1bGxZZWFyKCkrJy0nOyBcXG52YXIgTU0gPSAoZGF0ZS5nZXRNb250aCgpICsgMSA8IDEwID8gJzAnICsgKGRhdGUuZ2V0TW9udGgoKSArIDEpIDogZGF0ZS5nZXRNb250aCgpICsgMSkrJy0nOyBcXG52YXIgREQgPSAoZGF0ZS5nZXREYXRlKCkgPCAxMCA/ICcwJyArIChkYXRlLmdldERhdGUoKSkgOiBkYXRlLmdldERhdGUoKSk7IFxcbnZhciB0aW1lID0gWVkgKyBNTSArIEREO1xcbnJldHVybiB0aW1lXFxufVxcbi8v5pe26Ze05oiz6L2s5o2iXFxudmFyIHRpbWUgPSBnZXRMb2NhbFRpbWUodCk7XFxuXFxuaWYgKGoucGxheT4xMDAwMClcXG4gICAgdmFyIHBsYXkgPSAoai5wbGF5LzEwMDAwKS50b0ZpeGVkKDEpKyfkuIcnO1xcbmVsc2VcXG4gICAgdmFyIHBsYXkgPSBqLnBsYXk7XFxuXFxudmFyIHBpY3MgPSAoai5waWMuaW5kZXhPZignOicpIT0tMSk/ai5waWM6J2h0dHBzOicgKyBqLnBpYztcXG5cXG4gaWYgKGoubGVuZ3RoIT1cXFwiMDA6MDBcXFwiKXtcXG4gICAgZC5wdXNoKHtcXG4gICAgIHBpY191cmwgOiBwaWNzLFxcbiAgICAgdXJsIDogJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWzvvJ/vvJ9haWQ977yG77yGYnZpZD0nICsgai5idmlkKycjaW1tZXJzaXZlVGhlbWUjJyxcXG4gICAgIHRpdGxlIDogai50aXRsZSxcXG4gICAgIGNvbF90eXBlIDogJ21vdmllXzFfbGVmdF9waWMnLFxcbiAgICAgZGVzYyA6ICfml7bplb/vvJonICsgai5sZW5ndGggKyAnICDmkq3mlL7ph4/vvJonICsgcGxheSArICcgIOaXpeacn++8micgKyB0aW1lXFxuICAgIFxcbiAgICB9KTtcXG59XFxufVxcbnJlcy5kYXRhID0gZDtcXG5zZXRSZXN1bHQocmVzKVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Luj56CB5Z2XLeaQnOe0ouS4gOe6p1wiLFwicGF0aFwiOlwic1wiLFwicnVsZVwiOlwidHJ5IHtcXG4gICAgdmFyIHJlcyA9IHt9O1xcbiAgICB2YXIgZCA9IFtdO1xcbiAgICB2YXIgY29kZSA9IGdldFJlc0NvZGUoKTtcXG4gICAgdmFyIHhzID0gSlNPTi5wYXJzZShjb2RlLnNwbGl0KCd2aWRlb1xcXCIsXFxcImRhdGFcXFwiOicpWzFdLnNwbGl0KCd9XScpWzBdICsgJ31dJyk7XFxuICAgIC8vaWYoTVlfVVJMLnNwbGl0KCdwYWdlPScpWzFdPT0nMSZwYWdlc2l6ZT0yMCcpe1xcbiAgICB2YXIgcGFnZSA9IE1ZX1VSTC5zcGxpdCgncGFnZT0nKVsxXS5zcGxpdCgnJnBhZ2VzaXplPScpWzBdO1xcbiAgICB0cnkge1xcbiAgICAgICAgdmFyIHcgPVxcbiAgICAgICAgICAgIEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvc2VhcmNoL3R5cGU/a2V5d29yZD0nICsgTVlfVVJMLnNwbGl0KCdrZXl3b3JkPScpWzFdLnNwbGl0KCcmJylbMF0gKyAnJnBhZ2U9JyArIHBhZ2UgKyAnJnNlYXJjaF90eXBlPWJpbGlfdXNlciZvcmRlcj10b3RhbHJhbmsmcGFnZXNpemU9MjAnLCB7fSkpLmRhdGEucmVzdWx0O1xcbiAgICAgICAgZm9yIChpaSA9IDA7IGlpIDwgdy5sZW5ndGggJiYgaWkgPCAyOyBpaSsrKSB7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICd1cO+8micgKyB3W2lpXS51bmFtZSxcXG4gICAgICAgICAgICAgICAgaW1nOiAnaHR0cHM6JyArIHdbaWldLnVwaWMsXFxuICAgICAgICAgICAgICAgIGRlc2M6ICflhbPms6jvvJonICsgd1tpaV0uZmFucyxcXG4gICAgICAgICAgICAgICAgY29udGVudDogJ+inhumikeaVsO+8micgKyB3W2lpXS52aWRlb3MsXFxuICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9zcz91cmw9aHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYXJjL3NlYXJjaO+8n++8n21pZD0nICsgd1tpaV0ubWlkICsgJ++8hu+8hnBzPTMw77yG77yGdGlkPTDvvIbvvIZrZXl3b3JkPe+8hu+8hmpzb25wPWpzb25w77yG77yGcG49ZnlwYWdl77yG77yGb3JkZXI9cHViZGF0ZSMnICsgd1tpaV0udW5hbWUgKyAnIycsXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICfigJjigJjmib7kuI3liLDkvaDmg7PopoHnmoTllYrvvIzopoHkuI3mjaLkuKrlhbPplK7or43vvJ/igJnigJknLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXG4gICAgICAgIH0pO1xcbiAgICB9XFxuICAgIHZhciBmYW4gPSBKU09OLnBhcnNlKGNvZGUuc3BsaXQoJ21lZGlhX2Jhbmd1bWlcXFwiLFxcXCJkYXRhXFxcIjonKVsxXS5zcGxpdCgnfSx7XFxcInJlc3VsdF90eXBlJylbMF0pO1xcbiAgICBmb3IgKHggaW4gZmFuKSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBmYW5beF0udGl0bGUucmVwbGFjZSgvPGVtIGNsYXNzPVxcXCJrZXl3b3JkXFxcIj58PFxcXFwvZW0+L2csICcnKSxcXG4gICAgICAgICAgICBpbWc6IGZhblt4XS5jb3ZlcixcXG4gICAgICAgICAgICBkZXNjOiBmYW5beF0uZGVzYyxcXG4gICAgICAgICAgICBjb250ZW50OiBmYW5beF0uY3YucmVwbGFjZSgvPGVtIGNsYXNzPVxcXCJrZXl3b3JkXFxcIj58PFxcXFwvZW0+L2csICcnKSxcXG4gICAgICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD0nICsgZmFuW3hdLmdvdG9fdXJsICsgJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV9sZWZ0X3BpYydcXG4gICAgICAgIH0pO1xcbiAgICB9XFxuICAgIHZhciBmYW4yID0gSlNPTi5wYXJzZShjb2RlLnNwbGl0KCdtZWRpYV9mdFxcXCIsXFxcImRhdGFcXFwiOicpWzFdLnNwbGl0KCd9LHtcXFwicmVzdWx0X3R5cGUnKVswXSk7XFxuICAgIGZvciAoeCBpbiBmYW4yKSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBmYW4yW3hdLnRpdGxlLnJlcGxhY2UoLzxlbSBjbGFzcz1cXFwia2V5d29yZFxcXCI+fDxcXFxcL2VtPi9nLCAnJyksXFxuICAgICAgICAgICAgaW1nOiBmYW4yW3hdLmNvdmVyLFxcbiAgICAgICAgICAgIGRlc2M6IGZhbjJbeF0uZGVzYyxcXG4gICAgICAgICAgICBjb250ZW50OiBmYW4yW3hdLmN2LnJlcGxhY2UoLzxlbSBjbGFzcz1cXFwia2V5d29yZFxcXCI+fDxcXFxcL2VtPi9nLCAnJyksXFxuICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9JyArIGZhbjJbeF0uZ290b191cmwgKyAnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX2xlZnRfcGljJ1xcbiAgICAgICAgfSk7XFxuICAgIH1cXG4gICAgLy99XFxuXFxuICAgIGZvciAoeCBpbiB4cykge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogeHNbeF0udGl0bGUucmVwbGFjZSgvPGVtIGNsYXNzPVxcXCJrZXl3b3JkXFxcIj58PFxcXFwvZW0+L2csICcnKSxcXG4gICAgICAgICAgICBpbWc6ICdodHRwOicgKyB4c1t4XS5waWMsXFxuICAgICAgICAgICAgZGVzYzogeHNbeF0uZGVzY3JpcHRpb24sXFxuICAgICAgICAgICAgY29udGVudDogeHNbeF0uYXV0aG9yLFxcbiAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWzvvJ/vvJ9haWQ977yG77yGYnZpZD0nICsgeHNbeF0uYnZpZCArICcjaW1tZXJzaXZlVGhlbWUjJyxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnXFxuICAgICAgICB9KTtcXG4gICAgfVxcblxcbiAgICByZXMuZGF0YSA9IGQ7XFxuICAgIHNldFJlc3VsdChyZXMpO1xcbn0gY2F0Y2ggKGUpIHtcXG4gICAgdmFyIHJlcyA9IHt9O1xcbiAgICB2YXIgZCA9IFtdO1xcbiAgICB2YXIga2V5d29yZCA9IE1ZX1VSTC5zcGxpdCgna2V5d29yZD0nKVsxXS5zcGxpdCgnJnBhZ2U9JylbMF07XFxuICAgIHZhciB1cmwgPSAnaHR0cHM6Ly9hcHAuYmlsaWJpbGkuY29tL3gvdjIvc2VhcmNoL3R5cGU/YXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYnVpbGQ9NjI3MDIwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPXhpYW9taSZoaWdobGlnaHQ9MSZrZXl3b3JkPScgKyBrZXl3b3JkICsgJyZtb2JpX2FwcD1hbmRyb2lkJm9yZGVyPXRvdGFscmFuayZwbGF0Zm9ybT1hbmRyb2lkJnBuPTEmcHM9MjAmc19sb2NhbGU9emhfQ04mc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4yNy4wJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnRzPTE2MjMwNzYxNDAmdHlwZT0yJnVzZXJfdHlwZT0wJnNpZ249NTA2NjIxNmZlYmIyOGE2MTk4MTJlODhlNWZmMWEwMzQnO1xcbiAgICB2YXIgY29kZSA9IEpTT04ucGFyc2UocmVxdWVzdCh1cmwsIHt9KSk7XFxuICAgIHZhciBsaXN0ID0gY29kZS5kYXRhLml0ZW1zO1xcbiAgICBmb3IgKGxldCB4IG9mIGxpc3QpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHgudGl0bGUsXFxuICAgICAgICAgICAgaW1nOiB4LmNvdmVyLFxcbiAgICAgICAgICAgIGRlc2M6IHguc2lnbixcXG4gICAgICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2Uvc3M/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FyYy9zZWFyY2g/bWlkPScgKyB4LnBhcmFtICsgJ++8hu+8hnBzPTMw77yG77yGdGlkPTDvvIbvvIZrZXl3b3JkPe+8hu+8hmpzb25wPWpzb25w77yG77yGcG49ZnlwYWdl77yG77yGb3JkZXI9cHViZGF0ZSMnICsgeC50aXRsZSArICcjJyArIGdldFZhcigndWEnKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnXFxuICAgICAgICB9KTtcXG4gICAgfVxcbiAgICBzZXRSZXN1bHQoZCk7XFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV92ZXJ0aWNhbF9waWNcIixcIm5hbWVcIjpcIumhtemdoi3mkJzntKLkuoznuqdcIixcInBhdGhcIjpcInNzXCIsXCJydWxlXCI6XCJqczpcXG52YXIganNvbiA9IHt9O1xcbmV2YWwoJ2pzb249JyArIGdldFJlc0NvZGUoKSk7XFxudmFyIHJlcyA9IHt9O1xcbnZhciBkID0gW107XFxuaWYgKE1ZX1VSTC5pbmRleE9mKCdwbj0xJicpIT0tMSl7XFxuZC5wdXNoKHtcXG50aXRsZTon4oCc4oCc5YWz5rOo4oCd4oCdJyxcXG51cmw6J2hpa2VyOi8vZW1wdHkjJytNWV9VUkwuc3BsaXQoJyMnKVsxXSsnJiYnK01ZX1VSTC5zcGxpdCgnbWlkPScpWzFdLnNwbGl0KCcmJylbMF0rYEBsYXp5UnVsZT0uanM6aW5wdXQ9aW5wdXQuc3BsaXQoJyMnKVsxXTt2YXIgcGljID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYWNjL2luZm8/bWlkPScraW5wdXQuc3BsaXQoXFxcIiYmXFxcIilbMV0rJyZqc29ucD1qc29ucCcse30pKS5kYXRhLmZhY2U7aWYoIWdldFZhcignbGIyJykuaW5jbHVkZXMoaW5wdXQuc3BsaXQoJyYmJylbMV0uc3BsaXQoJyYmJylbMF0pKXt2YXIgeHI9Z2V0VmFyKCdsYjInKSsnXFxcXFxcXFxuJytpbnB1dCsnIyMnK3BpYzt3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvanMvdXAuanNcXFwiLHhyKTsndG9hc3Q6Ly/lhbPms6jmiJDlip8nfWVsc2V7J3RvYXN0Oi8v5bm06L275Lq677yM6ICX5a2Q5bC+5rGBJ31gLFxcbmNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXG59KTtcXG59XFxuXFxuZm9yICh2YXIgaSA9IDA7IGkgPCBqc29uLmRhdGEubGlzdC52bGlzdC5sZW5ndGg7IGkrKylcXG57XFxuIHZhciByID0ge307XFxuIHZhciBqID0ganNvbi5kYXRhLmxpc3Qudmxpc3RbaV07XFxuIHZhciB0ID0gTnVtYmVyKGouY3JlYXRlZCkqMTAwMDtcXG4gXFxuIC8v5pe26Ze05oiz6L2s5o2i5pa55rOVXFxuZnVuY3Rpb24gZ2V0TG9jYWxUaW1lKG5TKSB7IFxcbiAgICAgdmFyIHNzcyA9IG5ldyBEYXRlKHBhcnNlSW50KG5TKSkudG9Mb2NhbGVTdHJpbmcoKS5zdWJzdHIoMCwxNyk7XFxuICAgICB2YXIgWU1EID0gc3NzLnNwbGl0KCfml6UnKVswXS5yZXBsYWNlKCflubQnLCctJykucmVwbGFjZSgn5pyIJywnLScpO1xcbiAgICAgcmV0dXJuIChZTUQpXFxufVxcblxcbi8v5pe26Ze05oiz6L2s5o2iXFxudmFyIHRpbWUgPSBnZXRMb2NhbFRpbWUodCk7XFxuXFxuaWYgKGoucGxheT4xMDAwMClcXG4gICAgdmFyIHBsYXkgPSAoai5wbGF5LzEwMDAwKS50b0ZpeGVkKDEpKyfkuIcnO1xcbmVsc2VcXG4gICAgdmFyIHBsYXkgPSBqLnBsYXk7XFxuXFxudmFyIHBpY3MgPSAoai5waWMuaW5kZXhPZignOicpIT0tMSk/ai5waWM6J2h0dHBzOicgKyBqLnBpYztcXG5cXG4gci5waWNfdXJsID0gcGljcztcXG4gci51cmwgPSAnaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9aHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbO+8n++8n2FpZD3vvIbvvIZidmlkPScrai5idmlkKycjaW1tZXJzaXZlVGhlbWUjJyxcXG4gICAgICAgXFxuXFxuIHIudGl0bGUgPSBqLnRpdGxlO1xcbiByLmRlc2MgPSAn5pe26ZW/77yaJyArIGoubGVuZ3RoICsgJyAg5pKt5pS+6YeP77yaJyArIHBsYXkgKyAnICDml6XmnJ/vvJonICsgdGltZTtcXG4gaWYgKGoubGVuZ3RoIT1cXFwiMDA6MDBcXFwiKXtkLnB1c2gocil9O1xcbn1cXG5yZXMuZGF0YSA9IGQ7XFxuc2V0UmVzdWx0KHJlcylcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS7o+eggS3pooTlpITnkIZcIixcInBhdGhcIjpcInljbFwiLFwicnVsZVwiOlwicHV0VmFyMigndWEnLCc7Z2V0O3V0Zi04O3tVc2VyLUFnZW50QE1vemlsbGEvNS4wIChMaW51eO+8m++8myBBbmRyb2lkIDcuMO+8m++8myB3diBsaXRlIGJhaWR1Ym94YXBwKSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzQuMCBDaHJvbWUvNzguMC4zOTA0Ljk2IE1vYmlsZSBTYWZhcmkvNTM3LjM2IFQ3LzEwLjMgU2VhcmNoQ3JhZnQvMi42LjIgKEJhaWR177yb77ybIFAxIDcuMCl9Jyk7XFxuXFxucHV0VmFyKCdrZXknLGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkva2V5LnR4dCcpKTtcXG5cXG5wdXRWYXIoJ1g1JyxcXFwiQGxhenlSdWxlPS5qczp2YXIganggPSBmZXRjaCgnaGlrZXI6Ly9maWxlcy9iaWxpL3VwX2p4Y2FjaGUudHh0Jyx7fSk7cmVmcmVzaFg1V2ViVmlldyhqeCtpbnB1dCk7J3RvYXN0Oi8v5pKt5pS+5LitJ1xcXCIpO1xcblxcbmlmICghZmV0Y2goJ2hpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0JykpIHtcXG4gICB3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0JywnVVDkuLsnKTtcXG4gICB9XFxuXFxuaWYgKCFmZXRjaCgnaGlrZXI6Ly9maWxlcy9iaWxpL+aUtuiXjy50eHQnKSkge1xcbiAgIHdyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+aUtuiXjy50eHQnLCfop4bpopEnKTtcXG4gICB9XFxuXFxuaWYgKGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2pzL3VwLmpzXFxcIiwge30pPT0nJyl7XFxuICAgIGlmIChmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwLnR4dFxcXCIsIHt9KSE9Jycpe1xcbiAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvanMvdXAuanNcXFwiLGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXAudHh0XFxcIiwge30pKTtcXG4gICAgfVxcbiAgICBlbHNle1xcbiAgICAgIHZhciBwaWMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hY2MvaW5mbz9taWQ9MTAzMjU2ODgwJmpzb25wPWpzb25wJyx7fSkpLmRhdGEuZmFjZTtcXG4gICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvanMvdXAuanNcXFwiLCBcXFwi5YyX5Z+OJiYxMDMyNTY4ODAjI1xcXCIrcGljKTtcXG4gICAgICB9XFxufVxcblxcbmlmICghZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cF9jYWNoZS50eHRcXFwiLCB7fSkpIHtcXG4gIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwX2NhY2hlLnR4dFxcXCIsIFxcXCIxMDMyNTY4ODBcXFwiKTtcXG59XFxuXFxucHV0VmFyMignbGIyJyxmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9qcy91cC5qc1xcXCIse30pKTtcXG5cXG4vKlxcbnB1dFZhcihcXFwi6Kej5p6Q5Y+jXFxcIixgaGlrZXI6Ly9lbXB0eSNub0hpc3RvcnkjQHJ1bGU9anM6dmFyIGQgPSBbXTtkLnB1c2goe2Rlc2M6ICcyMDAnLHVybDogJ2ZpbGU6Ly8vc3RvcmFnZS9lbXVsYXRlZC8wL0FuZHJvaWQvZGF0YS9jb20uZXhhbXBsZS5oaWtlcnZpZXcvZmlsZXMvRG9jdW1lbnRzL2JpbGkvdXBqeC5odG1sJyxjb2xfdHlwZTogJ3g1X3dlYnZpZXdfc2luZ2xlJ30pO3ZhciB0aXRsZXMgPSBmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwangudHh0XFxcIiwge30pLnNwbGl0KC9cXFxcXFxcXG4vKTtmb3IodmFyIGkgPSAwOyBpIDwgdGl0bGVzLmxlbmd0aDsgaSsrKXt2YXIgdCA9IHRpdGxlc1tpXS5zcGxpdChcXFwiJiZcXFwiKTtkLnB1c2goe3RpdGxlOmZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBfanhjYWNoZS50eHRcXFwiLHt9KSA9PSB0WzFdID8gdFswXSArIFxcXCLigJjigJjvvIjlvZPliY3vvInigJnigJlcXFwiIDogdFswXSxkZXNjOnRbMV0sdXJsOnRbMV0gKyAnQGxhenlSdWxlPS5qczpwdXRWYXIyKFxcXCJ1aWRcXFwiLGlucHV0KTt3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cF9qeGNhY2hlLnR4dFxcXCIsaW5wdXQpO2JhY2soKTtcXFwidG9hc3Q6Ly/kv67mlLnmiJDlip9cXFwiJyxjb2xfdHlwZTogJ3RleHRfMSd9KTt9c2V0UmVzdWx0KGQpO2ApO1xcblxcbmlmICghZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cGp4LnR4dFxcXCIsIHt9KSkge1xcbiAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBqeC50eHRcXFwiLCBcXFwi5YWo572RVklQJiZodHRwczovL2p4eC5zbXlzOC5jbi9pbmRleC5waHA/dXJsPVxcXFxu5Yqg6YCfJiZodHRwczovL3d3dy5jdWFuLmxhL20zdTgucGhwP3VybD1cXFwiKTtcXG59XFxuXFxuXFxubGV0IGxvY2FsSHRtbDIgPSBmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwanguaHRtbFxcXCIsIHt9KTtcXG5sZXQgZ2l0SHRtbDIgPSBmZXRjaChcXFwiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L2doL1pydWlyeS9oaWtlcnZpZXcvaHRtbC9qaWV4aS5odG1sXFxcIiwge30pLnJlcGxhY2UoL2ppZXhpXFxcXC9qaWV4aS9nLFxcXCJiaWxpL3VwanhcXFwiKTtcXG5pZiAoIWxvY2FsSHRtbDIpIHtcXG4gIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwanguaHRtbFxcXCIsIGdpdEh0bWwyKTtcXG4gIHZhciB0aXRsZXMgPSBmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwangudHh0XFxcIiwge30pO1xcbiAgdmFyIHQgPSB0aXRsZXMuc3BsaXQoXFxcIiYmXFxcIilbMV07XFxuICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cF9qeGNhY2hlLnR4dFxcXCIsdCk7XFxufVxcbiovXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIEt5o6o6I2QXCIsXCJwYXRoXCI6XCJmZWVkXCIsXCJydWxlXCI6XCJ2YXIgdXJsID0gJ2h0dHBzOi8vYXBwLmJpbGliaWxpLmNvbS94L2ludGwvZmVlZC9pbmRleD9hY2Nlc3Nfa2V5PScgKyBnZXRWYXIoXFxcImFjY2Vzc19rZXlcXFwiKSArICcmYXV0b3BsYXlfY2FyZD0yJmJ1aWxkPTYyMjUzMDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImY29sdW1uPTImZGV2aWNlX25hbWU9JmRldmljZV90eXBlPTAmZmx1c2g9OCZmbnZhbD00NjQmZm52ZXI9MCZmb3JjZV9ob3N0PTAmZm91cms9MSZndWlkYW5jZT0wJmh0dHBzX3VybF9yZXE9MCZtb2JpX2FwcD1hbmRyb2lkJm5ldHdvcms9d2lmaSZwbGF0Zm9ybT1hbmRyb2lkJnBsYXllcl9uZXQ9MSZwdWxsPWZhbHNlJnFuPTgwJnNfbG9jYWxlPXpoX0NOJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMjIuNSUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCc7XFxudmFyIGxpc3QgPSBKU09OLnBhcnNlKHJlcXVlc3QodXJsLCB7fSkpLmRhdGEuaXRlbXM7XFxuZm9yIChsZXQgeCBvZiBsaXN0KSB7XFxuICAgIHZhciB1cmwgPSB4LmdvdG8gPT0gXFxcImJhbmd1bWlcXFwiID8gXFxcImhpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPVxcXCIgKyB4LnVyaS5zcGxpdChcXFwiP1xcXCIpWzBdICsgJyNpbW1lcnNpdmVUaGVtZSMnIDogXFxcImhpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWzvvJ/vvJ9haWQ9XFxcIiArIHgucGFyYW0gKyBcXFwi77yG77yGYnZpZD1cXFwiICsgJyNpbW1lcnNpdmVUaGVtZSMnO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IHguZ290byA9PSBcXFwiYmFuZ3VtaVxcXCIgPyBcXFwi8J+SsFxcXCIgKyB4LnRpdGxlIDogeC50aXRsZSxcXG4gICAgICAgIGRlc2M6IHguY292ZXJfbGVmdF8xX2NvbnRlbnRfZGVzY3JpcHRpb24gKyBcXFwiIFxcXCIgKyB4LmNvdmVyX2xlZnRfMl9jb250ZW50X2Rlc2NyaXB0aW9uICsgXFxcIiAgXFxcIiArIHguY292ZXJfcmlnaHRfdGV4dCxcXG4gICAgICAgIHBpYzogeC5jb3ZlciArIFxcXCJAUmVmZXJlcj1odHRwczovL3d3dy5iaWxpYmlsaS5jb20vXFxcIixcXG4gICAgICAgIHVybDogdXJsLFxcbiAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8yJ1xcbiAgICB9KTtcXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIEt5paw55WqXCIsXCJwYXRoXCI6XCJuZXdiZ21cIixcInJ1bGVcIjpcImlmIChNWV9VUkwuc3BsaXQoJyMnKVsxXT09JzEnKSB7XFxuXFxuICAgIGxldCB1cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3BnYy9hcHAvdGltZWxpbmU/YWNjZXNzX2tleT0mYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYnVpbGQ9NjEzMDQwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZmaWx0ZXJfdHlwZT0wJm1vYmlfYXBwPWFuZHJvaWQmbmlnaHRfbW9kZT0wJnBsYXRmb3JtPWFuZHJvaWQmc19sb2NhbGU9emhfQ04mc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4xMy4wJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnRzPTE2MzU5NTI4NDAmc2lnbj02ZTRkZjQ1NDJkMzhlZWUyZmFiZjIxMjg4NWI5MGM2NCc7XFxuICAgIHRyeSB7XFxuICAgICAgICB2YXIgc291cmNlX2NvZGUgPSBKU09OLnBhcnNlKHJlcXVlc3QodXJsLCB7fSkpO1xcbiAgICAgICAgdmFyIGRhdGVsaW5lID0gW3tcXG4gICAgICAgICAgICBcXFwiY29kZVxcXCI6IHNvdXJjZV9jb2RlLnJlc3VsdC5kYXRhWzRdLFxcbiAgICAgICAgICAgIFxcXCJuYW1lXFxcIjogXFxcIuWJjeaXpVxcXCIsXFxuICAgICAgICAgICAgXFxcImlkXFxcIjogXFxcIjBcXFwiXFxuICAgICAgICB9LHtcXG4gICAgICAgICAgICBcXFwiY29kZVxcXCI6IHNvdXJjZV9jb2RlLnJlc3VsdC5kYXRhWzVdLFxcbiAgICAgICAgICAgIFxcXCJuYW1lXFxcIjogXFxcIuaYqOaXpVxcXCIsXFxuICAgICAgICAgICAgXFxcImlkXFxcIjogXFxcIjFcXFwiXFxuICAgICAgICB9LCB7XFxuICAgICAgICAgICAgXFxcImNvZGVcXFwiOiBzb3VyY2VfY29kZS5yZXN1bHQuZGF0YVs2XSxcXG4gICAgICAgICAgICBcXFwibmFtZVxcXCI6IFxcXCLku4rml6VcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpZFxcXCI6IFxcXCIyXFxcIlxcbiAgICAgICAgfSwge1xcbiAgICAgICAgICAgIFxcXCJjb2RlXFxcIjogc291cmNlX2NvZGUucmVzdWx0LmRhdGFbN10sXFxuICAgICAgICAgICAgXFxcIm5hbWVcXFwiOiBcXFwi5piO5pelXFxcIixcXG4gICAgICAgICAgICBcXFwiaWRcXFwiOiBcXFwiM1xcXCJcXG4gICAgICAgIH0se1xcbiAgICAgICAgICAgIFxcXCJjb2RlXFxcIjogc291cmNlX2NvZGUucmVzdWx0LmRhdGFbOF0sXFxuICAgICAgICAgICAgXFxcIm5hbWVcXFwiOiBcXFwi5ZCO5pelXFxcIixcXG4gICAgICAgICAgICBcXFwiaWRcXFwiOiBcXFwiNFxcXCJcXG4gICAgICAgIH1dO1xcbiAgICAgICAgaWYgKCFnZXRWYXIoJ2lkJykpIHtcXG4gICAgICAgICAgICBwdXRWYXIoJ2lkJywgJzInKTtcXG4gICAgICAgIH1cXG4gICAgICAgIGxldCBpZCA9IGdldFZhcignaWQnKTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGlkID09ICcwJyA/IGdldEhlYWQoJ+WJjeaXpScpIDogJ+WJjeaXpScsXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdpZCcsICcwJyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly9zdWNjZXNzISdcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF81J1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBpZCA9PSAnMScgPyBnZXRIZWFkKCfmmKjml6UnKSA6ICfmmKjml6UnLFxcbiAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignaWQnLCAnMScpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8vc3VjY2VzcyEnXFxcIixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNSdcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogaWQgPT0gJzInID8gZ2V0SGVhZCgn5LuK5pelJykgOiAn5LuK5pelJyxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ2lkJywgJzInKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL3N1Y2Nlc3MhJ1xcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzUnXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGlkID09ICczJyA/IGdldEhlYWQoJ+aYjuaXpScpIDogJ+aYjuaXpScsXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdpZCcsICczJyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly9zdWNjZXNzISdcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF81J1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBpZCA9PSAnNCcgPyBnZXRIZWFkKCflkI7ml6UnKSA6ICflkI7ml6UnLFxcbiAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignaWQnLCAnNCcpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8vc3VjY2VzcyEnXFxcIixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNSdcXG4gICAgICAgIH0pO1xcbiAgICAgICAgbGV0IGxpc3QgPSBkYXRlbGluZVtpZF0uY29kZS5lcGlzb2RlcztcXG4gICAgICAgIGZvciAobGV0IHggb2YgbGlzdCkge1xcbiAgICAgICAgICAgIGxldCB0eXBlID0gKHgucHVibGlzaGVkID09ICcxJyA/ICflt7Llj5HluIMnIDogJ+acquWPkeW4gycpO1xcbiAgICAgICAgICAgIGxvZyh0eXBlKVxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiB4LnRpdGxlLFxcbiAgICAgICAgICAgICAgICBkZXNjOiAn4oCY4oCYJyArIHR5cGUgKyAn4oCZ4oCZXFxcXG4nICsgeC5wdWJfaW5kZXggKyAnXFxcXG7mm7TmlrDml7bpl7TvvJonICsgZ2V0SGVhZCh4LnB1Yl90aW1lKSxcXG4gICAgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9JyArIHgudXJsICsgJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgICAgICAgICAgICBpbWc6IHguY292ZXIrUmVmZXJlcixcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6J21vdmllXzFfdmVydGljYWxfcGljJ1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBnZXRIZWFkKCfpk77mjqXngrjkuobvvIznrYnkv67lpI0nKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxuICAgICAgICB9KTtcXG4gICAgfVxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS7o+eggS3nlarliafntKLlvJVcIixcInBhdGhcIjpcInN5XCIsXCJydWxlXCI6XCJjb25zdCB7IENhdGVnb3JpZXNIZWFkZXIgfSA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2NhdGVnb3JpZXMtaGVhZGVyXFxcIilcXG5cXG4vKipcXG4gKiDojrflj5bliIbnsbvmlbDmja7mupDvvIzlj6/liqjmgIHlj6/pnZnmgIHvvIzoh6rlt7HmoLnmja7lrp7pmYXmg4XlhrXlpITnkIZcXG4gKiBodHRwczovL3d3dy5iaWxpYmlsaS5jb20vYW5pbWUvaW5kZXgvXFxuICovXFxubGV0IG1DYXRlZ29yaWVzID0ge31cXG5sZXQgY2F0SW5WYXIgPSBnZXRWYXIoTVlfUlVMRS51cmwgKyBcXFwiI2NhdGVnb3JpZXNcXFwiLCAnJylcXG5pZiAoZ2V0VmFyKE1ZX1JVTEUudXJsICsgXFxcIiNjYXRlZ29yaWVzXFxcIiwgJycpKSB7XFxuICAgIG1DYXRlZ29yaWVzID0gSlNPTi5wYXJzZShjYXRJblZhcilcXG59IGVsc2Uge1xcbiAgICBsZXQgY2F0VXJsID0gJ2h0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS9hbmltZS9pbmRleC8nXFxuICAgIGxldCBjYXRTcmMgPSByZXF1ZXN0KGNhdFVybClcXG4gICAgLy8gbG9nKGNhdFNyYylcXG4gICAgbGV0IGNhdFJlZ2V4ID0gL3dpbmRvd1xcXFwuX19JTklUSUFMX1NUQVRFX189KC4qPyk7XFxcXChmdW5jdGlvblxcXFwoXFxcXClcXFxcey9cXG4gICAgaWYgKGNhdFJlZ2V4LnRlc3QoY2F0U3JjKSkge1xcbiAgICAgICAgLy8gbG9nKFJlZ0V4cC4kMSlcXG4gICAgICAgIGxldCBjYXRlZ29yeSA9IEpTT04ucGFyc2UoUmVnRXhwLiQxKVxcbiAgICAgICAgbGV0IG1GaWx0ZXJzID0gY2F0ZWdvcnkuZmlsdGVycztcXG4gICAgICAgIC8vIGxvZyhtRmlsdGVycylcXG4gICAgICAgIG1GaWx0ZXJzLm1hcChmaWx0ZXIgPT4gbUNhdGVnb3JpZXNbZmlsdGVyLmtleV0gPSBmaWx0ZXIubGlzdClcXG4gICAgICAgIGxldCBvcmRlcnMgPSBjYXRlZ29yeS5vcmRlcnNcXG4gICAgICAgIGxldCBtT3JkZXJzID0gW11cXG4gICAgICAgIG9yZGVycy5tYXAob3JkZXIgPT4ge1xcbiAgICAgICAgICAgIGxldCBtT3JkZXIgPSB7fVxcbiAgICAgICAgICAgIG1PcmRlci5uYW1lID0gb3JkZXIudGl0bGVcXG4gICAgICAgICAgICBtT3JkZXIudmFsdWUgPSBvcmRlci5rZXlcXG4gICAgICAgICAgICBtT3JkZXJzLnB1c2gobU9yZGVyKVxcbiAgICAgICAgfSlcXG4gICAgICAgIC8vIGxvZyhtT3JkZXJzKVxcbiAgICAgICAgbUNhdGVnb3JpZXNbJ29yZGVyJ10gPSBtT3JkZXJzXFxuICAgIH1cXG4gICAgcHV0VmFyKE1ZX1JVTEUudXJsICsgXFxcIiNjYXRlZ29yaWVzXFxcIiwgSlNPTi5zdHJpbmdpZnkobUNhdGVnb3JpZXMpKVxcbn1cXG5sZXQga2V5cyA9IE9iamVjdC5rZXlzKG1DYXRlZ29yaWVzKVxcbi8vIGxvZyhtQ2F0ZWdvcmllcylcXG4vLyBsb2coa2V5cylcXG4vKipcXG4gKiDnu4TlkIjlvZPliY3liIbnsbvpk77mjqVcXG4gKi9cXG5sZXQgdHJ1ZV91cmwgPSBnZXRWYXIoTVlfUlVMRS51cmwsIE1ZX1VSTClcXG50cnVlX3VybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20vcGdjL3NlYXNvbi9pbmRleC9yZXN1bHQ/J1xcbmZvciAobGV0IGl0IG9mIGtleXMpIHtcXG4gICAgbGV0IGNhdF91cmwgPSBnZXRWYXIoTVlfUlVMRS51cmwgKyBcXFwiI1xcXCIgKyBpdCwgaXQgPT09ICdvcmRlcnMnID8gJzMnIDogJy0xJylcXG4gICAgdHJ1ZV91cmwgKz0gKGNhdF91cmwgPyAnJicgKyBpdCArICc9JyArIGNhdF91cmwgOiAnJylcXG59XFxuLy8gbGV0IHBhZ2UgPSAxXFxuY29uc3QgcGFnZSA9IE1ZX1VSTC5zcGxpdCgnIycpWzFdXFxuaWYocGFnZT09MSl7XFxuICAgIFxcbn1cXG50cnVlX3VybCA9IHRydWVfdXJsICtcXG4gICAgJyZzdD0xJnNvcnQ9MCZzZWFzb25fdHlwZT0xJnBhZ2VzaXplPTIwJnR5cGU9MScgK1xcbiAgICAnJnBhZ2U9JyArIHBhZ2VcXG4vLyBsb2codHJ1ZV91cmwpXFxuXFxuY29uc3QgZW1wdHkgPSBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG5cXG5DYXRlZ29yaWVzSGVhZGVyXFxuICAgIC5zZXRTdWJDYXRlZ29yaWVzSXRlbUtleSgnbmFtZScsICd2YWx1ZScpXFxuICAgIC5nZXQoZCwgbUNhdGVnb3JpZXMsIHBhZ2UpXFxuLyoqXFxuICog6I635Y+W5b2T5YmN5YiG57G76aG16Z2i5rqQ56CBXFxuICovXFxudHJ5IHtcXG4gICAgdmFyIHN5bGlzdCA9IEpTT04ucGFyc2UocmVxdWVzdCh0cnVlX3VybCwge30pKS5kYXRhLmxpc3Q7XFxuXFxuICAgIC8qKlxcbiAgICAgKiDliJfooajmlbDmja7mupBcXG4gICAgICovXFxuICAgIGZvciAobGV0IGRhdGEgb2Ygc3lsaXN0KSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBkYXRhLnRpdGxlIC8qKyAnLycgKyBkYXRhLmluZGV4X3Nob3cqLyAsXFxuICAgICAgICAgICAgZGVzYzogZGF0YS5vcmRlcixcXG4gICAgICAgICAgICBpbWc6IGRhdGEuY292ZXIrUmVmZXJlcixcXG4gICAgICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD0nICsgZGF0YS5saW5rICsgJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMydcXG4gICAgICAgIH0pO1xcbiAgICB9XFxufSBjYXRjaCAoZSkge31cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS7o+eggS3liqjmgIHliIbnsbvmqKHlnZdcIixcInBhdGhcIjpcImNhdGVnb3JpZXMtaGVhZGVyXCIsXCJydWxlXCI6XCJqczpcXG4vKipcXG4gKiDkvb/nlKjor7TmmI7vvJpcXG4gKiAxLuaPkOWJjeW7uueri+WlvSDliIbnsbvmiYDlsZ7nsbvlnovlkozliIbnsbvliJfooagg55qE5a+55bqU5YWz57O777yM5Y2zIGdldCDlh73mlbDkuK3nmoQgY2F0ZWdvcmllc1xcbiAqIDIu6K6+572u5a2Q5YiG57G75pWw5o2u55qEIGtlee+8jOiwg+eUqCBzZXRTdWJDYXRlZ29yaWVzSXRlbUtleSh0aXRsZUtleSwgdXJsS2V5KVxcbiAqIDMu54S25ZCO6LCD55SoIENhdGVnb3JpZXNIZWFkZXIuZ2V0KGxheW91dCwgY2F0ZWdvcmllcywgcGFnZSlcXG4gKlxcbiAqIOaUr+aMgemTvuW8j+iwg+eUqO+8jOS4gOWPpeivneWNs+WPr+iwg+eUqOeUn+aIkOWIhuexu++8jOWNs++8mlxcbiAqIENhdGVnb3JpZXNIZWFkZXJcXG4gKiAgICAuc2V0U3ViQ2F0ZWdvcmllc0l0ZW1LZXkodGl0bGVLZXksIHVybEtleSlcXG4gKiAgICAuZ2V0KGxheW91dCwgY2F0ZWdvcmllcywgcGFnZSlcXG4gKlxcbiAqIEB0eXBlIHt7c2V0U3ViQ2F0ZWdvcmllc0l0ZW1LZXk6IENhdGVnb3JpZXNIZWFkZXIuc2V0U3ViQ2F0ZWdvcmllc0l0ZW1LZXksIGdldDogQ2F0ZWdvcmllc0hlYWRlci5nZXQsIGNhdGVnb3JpZXNLZXk6IHt0aXRsZTogc3RyaW5nLCB1cmw6IHN0cmluZ319fVxcbiAqL1xcbmxldCBDYXRlZ29yaWVzSGVhZGVyID0ge1xcbiAgICBjYXRlZ29yaWVzS2V5OiB7XFxuICAgICAgICBzdWJfY2F0ZWdvcmllczogJycsXFxuICAgICAgICB0aXRsZTogJycsXFxuICAgICAgICB1cmw6ICcnLFxcbiAgICB9LFxcbiAgICAvKipcXG4gICAgICogMS7orr7nva7ku47liIbnsbvliJfooajkuK3mi7/nmoTlrZDliIbnsbvnmoTmlbDmja4ga2V577yMXFxuICAgICAqICAg5qC55o2uIGtleSDmi7/liLDmlbDmja7lkI7vvIxcXG4gICAgICogICDkvJroh6rliqjotYvlgLznu5kgc2Nyb2xsX2J1dHRvbiDnmoQgeyB0aXRsZTogaXRlbVt0aXRsZUtleV0sIHVybDogaXRlbVt1cmxLZXldIH1cXG4gICAgICpcXG4gICAgICogQHBhcmFtIHRpdGxlX2tleSB0aXRsZSDnmoQga2V5XFxuICAgICAqIEBwYXJhbSB1cmxfa2V5IHVybCDnmoQga2V5XFxuICAgICAqL1xcbiAgICBzZXRTdWJDYXRlZ29yaWVzSXRlbUtleSA6ICh0aXRsZV9rZXksIHVybF9rZXkpID0+IHtcXG4gICAgICAgIENhdGVnb3JpZXNIZWFkZXIuY2F0ZWdvcmllc0tleS50aXRsZSA9IHRpdGxlX2tleVxcbiAgICAgICAgQ2F0ZWdvcmllc0hlYWRlci5jYXRlZ29yaWVzS2V5LnVybCA9IHVybF9rZXlcXG4gICAgICAgIHJldHVybiBDYXRlZ29yaWVzSGVhZGVyO1xcbiAgICB9LFxcbiAgICBzZXRTdWJDYXRlZ29yaWVzS2V5OiAoc3ViX2NhdGVnb3JpZXNfa2V5KSA9PiB7XFxuICAgICAgICBDYXRlZ29yaWVzSGVhZGVyLmNhdGVnb3JpZXNLZXkuc3ViX2NhdGVnb3JpZXMgPSBzdWJfY2F0ZWdvcmllc19rZXlcXG4gICAgICAgIHJldHVybiBDYXRlZ29yaWVzSGVhZGVyO1xcbiAgICB9LFxcbiAgICAvKipcXG4gICAgICogMi7ojrflj5bliIbnsbvlpLTpg6hcXG4gICAgICpcXG4gICAgICogQHBhcmFtIGxheW91dCDlvZPliY3nlYzpnaLvvIzljbPluLjnlKjnmoQgZC5wdXNoIOeahCBkXFxuICAgICAqIEBwYXJhbSBjYXRlZ29yaWVzIOWIhuexu+aJgOWxnuexu+Wei+WSjOWIhuexu+WIl+ihqOeahOWvueW6lOWFs+ezu+ihqO+8jFxcbiAgICAgKiAgICAgICAg5aaC77yaXFxuICAgICAqICAgICAgICB7XFxuICAgICAqICAgICAgICAgICBcXFwi5bm05Lu9XFxcIjogW3sgXFxcIm5hbWVcXFwiOiBcXFwiMjAyMVxcXCIsIFxcXCJ2YWx1ZVxcXCI6IFxcXCIyMDIxXFxcIiB9LCB7IFxcXCJuYW1lXFxcIjogXFxcIjIwMjBcXFwiLCBcXFwidmFsdWVcXFwiOiBcXFwiMjAyMFxcXCIgfS4uLl0sXFxuICAgICAqICAgICAgICAgICBcXFwi5o6S5bqPXFxcIjogW3sgXFxcIm5hbWVcXFwiOiBcXFwi54Ot5bqmXFxcIiwgXFxcInZhbHVlXFxcIjogXFxcImhvdFxcXCIgfSwgeyBcXFwibmFtZVxcXCI6IFxcXCLml7bpl7RcXFwiLCBcXFwidmFsdWVcXFwiOiBcXFwidGltZVxcXCIgfS4uLl0sXFxuICAgICAqICAgICAgICB9XFxuICAgICAqIEBwYXJhbSBwYWdlIOmhteeggVxcbiAgICAgKiBAcGFyYW0gdXJsTGlzdGVuZXIg6aKd5aSW5aSE55CGIGJ1dHRvbiDnmoQgdXJs77yM6ZyA6KaBIHJldHVyblxcbiAgICAgKi9cXG4gICAgZ2V0OiAobGF5b3V0LCBjYXRlZ29yaWVzLCBwYWdlLCB1cmxMaXN0ZW5lcikgPT4ge1xcbiAgICAgICAgLy8gbG9nKGNhdGVnb3JpZXMpXFxuICAgICAgICAvLyDliIbnsbvmiYDlsZ7nsbvlnovnmoTliJfooajvvIzlpoLvvJpbIFxcXCLlubTku71cXFwiLCBcXFwi5o6S5bqPXFxcIiBdXFxuICAgICAgICBsZXQgY2F0ZWdvcnlfbmFtZXMgPSBPYmplY3Qua2V5cyhjYXRlZ29yaWVzKVxcbiAgICAgICAgbGV0IHR5cGVzID0gW11cXG4gICAgICAgIC8vIOagueaNruWvueW6lOWFs+ezu+ihqOaLv+WIhuexu+WIl+ihqFxcbiAgICAgICAgY2F0ZWdvcnlfbmFtZXMubWFwKGNhdGVnb3J5X25hbWUgPT4ge1xcbiAgICAgICAgICAgIC8vIOi/memHjOS8muaLv+WIsCDlubTku70g5o6S5bqPLi4uIOWFtuS4reS4gOS4qlxcbiAgICAgICAgICAgIHR5cGVzLnB1c2goY2F0ZWdvcmllc1tjYXRlZ29yeV9uYW1lXSk7XFxuICAgICAgICAgICAgLy8g6L+Z6YeM5LiL6Z2i5a+5IHR5cGVzIOeahOWAvOi/m+ihjOWkhOeQhlxcbiAgICAgICAgfSlcXG4gICAgICAgIGNhdGVnb3JpZXMgPSB0eXBlcztcXG4gICAgICAgIGxldCBpbml0X2NhdGUgPSBbXVxcblxcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAyMDsgaSsrKSB7XFxuICAgICAgICAgICAgaW5pdF9jYXRlLnB1c2goXFxcIjBcXFwiKVxcbiAgICAgICAgfVxcblxcbiAgICAgICAgY29uc3QgY2F0ZV90ZW1wX2pzb24gPSBnZXRWYXIoTVlfUlVMRS50aXRsZSwgSlNPTi5zdHJpbmdpZnkoaW5pdF9jYXRlKSlcXG4gICAgICAgIGNvbnN0IGNhdGVfdGVtcCA9IEpTT04ucGFyc2UoY2F0ZV90ZW1wX2pzb24pXFxuXFxuICAgICAgICBpZiAocGFyc2VJbnQocGFnZSkgPT09IDEpIHtcXG4gICAgICAgICAgICAvKipcXG4gICAgICAgICAgICAgKiDpgY3ljobnrKwgaW5kZXgg5bGC5YiG57G7XFxuICAgICAgICAgICAgICovXFxuICAgICAgICAgICAgY2F0ZWdvcmllcy5mb3JFYWNoKChjYXRlZ29yeSwgaW5kZXgpID0+IHtcXG4gICAgICAgICAgICAgICAgbGV0IHN1Yl9jYXRlZ29yeV9uYW1lID0gY2F0ZWdvcnlfbmFtZXNbaW5kZXhdXFxuICAgICAgICAgICAgICAgIGxldCBzdWJfY2F0ZWdvcmllc19rZXkgPSBDYXRlZ29yaWVzSGVhZGVyLmNhdGVnb3JpZXNLZXkuc3ViX2NhdGVnb3JpZXNcXG4gICAgICAgICAgICAgICAgbGV0IHN1Yl9jYXRlZ29yaWVzID0gc3ViX2NhdGVnb3JpZXNfa2V5ID8gY2F0ZWdvcnlbc3ViX2NhdGVnb3JpZXNfa2V5XSA6IGNhdGVnb3J5O1xcbiAgICAgICAgICAgICAgICAvLyBsb2coY2F0ZWdvcnkpXFxuICAgICAgICAgICAgICAgIC8qKlxcbiAgICAgICAgICAgICAgICAgKiDlnKjnrKwgaW5kZXgg5bGC5YiG57G75Lit6YGN5Y6G6K+l5bGC5omA5pyJ5a2Q5YiG57G7XFxuICAgICAgICAgICAgICAgICAqL1xcbiAgICAgICAgICAgICAgICBzdWJfY2F0ZWdvcmllcy5mb3JFYWNoKChpdGVtLCBrZXkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGxldCB0aXRsZSA9IGl0ZW1bQ2F0ZWdvcmllc0hlYWRlci5jYXRlZ29yaWVzS2V5LnRpdGxlXVxcbiAgICAgICAgICAgICAgICAgICAgbGV0IHVybCA9IGVzY2FwZShpdGVtW0NhdGVnb3JpZXNIZWFkZXIuY2F0ZWdvcmllc0tleS51cmxdKVxcbiAgICAgICAgICAgICAgICAgICAgaWYgKHVybExpc3RlbmVyKSB1cmwgPSB1cmxMaXN0ZW5lci5vbkRlYWwoaXRlbSwgc3ViX2NhdGVnb3J5X25hbWUsIHVybClcXG4gICAgICAgICAgICAgICAgICAgIGxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZToga2V5LnRvU3RyaW5nKCkgPT09IGNhdGVfdGVtcFtpbmRleF0gPyAn4oCc4oCc4oCd4oCdPGI+PHNwYW4gc3R5bGU9XFxcImNvbG9yOiAjMDk4QUMxXFxcIj4nICsgdGl0bGUgKyAnPC9zcGFuPjwvYj4nIDogdGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKHVybCkubGF6eVJ1bGUoKHBhcmFtcykgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuY2F0ZV90ZW1wW3BhcmFtcy5pbmRleF0gPSBwYXJhbXMua2V5LnRvU3RyaW5nKClcXG5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0VmFyKE1ZX1JVTEUudGl0bGUsIEpTT04uc3RyaW5naWZ5KHBhcmFtcy5jYXRlX3RlbXApKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoTVlfUlVMRS51cmwgKyBcXFwiI1xcXCIgKyBwYXJhbXMuc3ViX2NhdGVnb3J5X25hbWUsIGlucHV0KVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlX3RlbXA6IGNhdGVfdGVtcCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGluZGV4LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGtleSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZTogcGFnZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViX2NhdGVnb3J5X25hbWU6IHN1Yl9jYXRlZ29yeV9uYW1lXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcXG4gICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgIGxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiYmxhbmtfYmxvY2tcXFwiXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9XFxuICAgIH1cXG59XFxuJC5leHBvcnRzLkNhdGVnb3JpZXNIZWFkZXI9Q2F0ZWdvcmllc0hlYWRlclwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5oiR55qE5pS26JePLeinhumikVwiLFwicGF0aFwiOlwidmlkZW9cIixcInJ1bGVcIjpcInZhciB0cyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcbnZhciB2aWRlb191cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvdjMvZmF2L2ZvbGRlci9zcGFjZT9hY2Nlc3Nfa2V5PScgKyBnZXRWYXIoJ2FjY2Vzc19rZXknKSArICcmYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYnVpbGQ9NjEzMDQwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZtb2JpX2FwcD1hbmRyb2lkJnBsYXRmb3JtPWFuZHJvaWQmc19sb2NhbGU9emhfQ04mc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4xMy4wJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnRzPScgKyB0cyArICcmdXBfbWlkPScgKyBnZXRWYXIoJ3N0YXJpZCcpICsgJyZzaWduPTBhNTFiNzcyZjgxZGM3ODEyY2Q2NjIyNmE4MzI1MzgzJztcXG52YXIgbGlzdCA9IEpTT04ucGFyc2UocmVxdWVzdCh2aWRlb191cmwpKS5kYXRhO1xcbmZvciAodmFyIHggb2YgbGlzdCkge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IHgubmFtZSxcXG4gICAgICAgIGltZzogJ2h0dHBzOi8vZ2l0ZWUuY29tL0NoZXJpc2hSeC9pbWFnZXdhcmVob3VzZS9yYXcvbWFzdGVyL2ltYWdlLzEzMDk2NzI1ZmU1NmNlOWNmNjQzYTBlNGNkMGMxNTljLmdpZicsXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5I1xcXCIreC5pZCtcXFwiQGxhenlSdWxlPS5qczpwdXRWYXIoJ2NoYW5nZScsZ2V0VmFyKCdjaGFuZ2UnKT09aW5wdXQuc3BsaXQoJyMnKVsxXT8nMCc6aW5wdXQuc3BsaXQoJyMnKVsxXSk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/lt7LliLfmlrAnXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAnYXZhdGFyJ1xcbiAgICB9KTtcXG4gICAgaWYgKGdldFZhcignY2hhbmdlJykgPT0geC5pZCkge1xcbiAgICAgICAgdmFyIGxpc3QyID0geC5tZWRpYUxpc3RSZXNwb25zZS5saXN0O1xcbiAgICAgICAgbG9nKGxpc3QyKVxcbiAgICAgICAgZm9yICh2YXIgYSBpbiBsaXN0Mikge1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBsaXN0MlthXS50aXRsZSxcXG4gICAgICAgICAgICAgICAgaW1nOiBsaXN0MlthXS5jb3ZlcitSZWZlcmVyLFxcbiAgICAgICAgICAgICAgICB1cmw6J2hpa2VyOi8vcGFnZS9jb2xsZWN0aW9uP3VybD1odHRwczovL2FwaS5iaWxpYmlsaS5jb20veC92My9mYXYvcmVzb3VyY2UvaWRz77yf77yfYWNjZXNzX2tleT0nK2dldFZhcignYWNjZXNzX2tleScpKyfvvIbvvIZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNu+8hu+8hmJ1aWxkPTYxMzA0MDDvvIbvvIZjX2xvY2FsZT16aF9DTu+8hu+8hmNoYW5uZWw9bWFzdGVy77yG77yGbWVkaWFfaWQ9JytsaXN0MlthXS5pZCsn77yG77yGbWlkPScrZ2V0VmFyKCdzdGFyaWQnKSsn77yG77yGbW9iaV9hcHA9YW5kcm9pZO+8hu+8hnBsYXRmb3JtPWFuZHJvaWTvvIbvvIZzX2xvY2FsZT16aF9DTu+8hu+8hnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMTMuMCUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RO+8hu+8hnRzPScrdHMrJ++8hu+8hnNpZ249N2UwZjFiOTJmM2VmMzgyOGIxOWJlNjY4Mzg5MTUwMDcnLFxcbiAgICAgICAgICAgICAgIC8vIGRlc2M6IGFbJ21lZGlhX2NvdW50J10sXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMydcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG5cXG4gICAgfVxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuaIkeeahOaUtuiXjy3ov73nlapcIixcInBhdGhcIjpcImZhbmp1XCIsXCJydWxlXCI6XCJ2YXIgdHMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcXG52YXIgdmlkZW9fdXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS9wZ2MvYXBwL2ZvbGxvdy92Mi9iYW5ndW1pP2FjY2Vzc19rZXk9JyArIGdldFZhcignYWNjZXNzX2tleScpICsgJyZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZidWlsZD02MDkxMDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJm1vYmlfYXBwPWFuZHJvaWQmcGxhdGZvcm09YW5kcm9pZCZwbj0nICsgcGFnZW51bSArICcmcHM9MjAmc19sb2NhbGU9emhfQ04mc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi45LjElMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0Qmc3RhdHVzPTImdHM9JyArIHRzICsgJyZzaWduPTE2MjRmOTU5OGRjYTA2ZWIxMjk1MzRlNDc2NWY5YjFhJztcXG50cnkge1xcbiAgICB2YXIgbGlzdCA9IEpTT04ucGFyc2UocmVxdWVzdCh2aWRlb191cmwpKS5yZXN1bHQuZm9sbG93X2xpc3Q7XFxuICAgIGZvciAodmFyIHggb2YgbGlzdCkge1xcbiAgICAgICAgdmFyIOexu+WeiyA9IHguaXNfZmluaXNoID09IDEgPyBcXFwi5a6M57uTXFxcIiA6IFxcXCLov57ovb1cXFwiO1xcbiAgICAgICAgdmFyIOagh+ivhiA9IHhbJ3NlYXNvbl90eXBlX25hbWUnXSArIFxcXCIgfCBcXFwiICsgeC5iYWRnZTtcXG4gICAgICAgIHZhciBkZXNjID0geC5wcm9ncmVzcyA/IOagh+ivhiArIFxcXCJcXFxcbuKAnOKAnFxcXCIgKyB4Lm5ld19lcC5pbmRleF9zaG93ICsgXFxcIuKAneKAnVxcXFxuXFxcIiArIHgucHJvZ3Jlc3MuaW5kZXhfc2hvdyA6IOagh+ivhiArIFxcXCJcXFxcbuKAnOKAnFxcXCIgKyB4Lm5ld19lcC5pbmRleF9zaG93ICsgXFxcIuKAneKAnVxcXFxuXFxcIjtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHgudGl0bGUgKyBcXFwiXFxcXHRcXFwiICsgZ2V0SGVhZCjnsbvlnospLFxcbiAgICAgICAgICAgIGltZzogeC5uZXdfZXAuY292ZXIgKyBSZWZlcmVyLFxcbiAgICAgICAgICAgIGRlc2M6IGRlc2MsXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9XFxcIiArIHgudXJsICsgJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV92ZXJ0aWNhbF9waWMnXFxuICAgICAgICB9KTtcXG4gICAgfVxcbn0gY2F0Y2ggKGUpIHt9XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLmiJHnmoTmlLbol48t6L+95YmnXCIsXCJwYXRoXCI6XCJkc2pcIixcInJ1bGVcIjpcInZhciB0cyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcbnZhciB2aWRlb191cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3BnYy9hcHAvZm9sbG93L3YyL2NpbmVtYT9hY2Nlc3Nfa2V5PScgKyBnZXRWYXIoJ2FjY2Vzc19rZXknKSArICcmYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYnVpbGQ9NjA5MTAwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZtb2JpX2FwcD1hbmRyb2lkJnBsYXRmb3JtPWFuZHJvaWQmcG49JyArIHBhZ2VudW0gKyAnJnBzPTIwJnNfbG9jYWxlPXpoX0NOJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuOS4xJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnN0YXR1cz0yJnRzPScgKyB0cyArICcmc2lnbj0xNjI0Zjk1OThkY2EwNmViMTI5NTM0ZTQ3NjVmOWIxYSc7XFxudHJ5IHtcXG4gICAgdmFyIGxpc3QgPSBKU09OLnBhcnNlKHJlcXVlc3QodmlkZW9fdXJsKSkucmVzdWx0LmZvbGxvd19saXN0O1xcbiAgICBmb3IgKHZhciB4IG9mIGxpc3QpIHtcXG4gICAgICAgIHZhciDnsbvlnosgPSB4LmlzX2ZpbmlzaCA9PSAxID8gXFxcIuWujOe7k1xcXCIgOiBcXFwi6L+e6L29XFxcIjtcXG4gICAgICAgIHZhciDmoIfor4YgPSB4WydzZWFzb25fdHlwZV9uYW1lJ10gKyBcXFwiIHwgXFxcIiArIHguYXJlYXNbMF0ubmFtZTtcXG4gICAgICAgIHZhciBkZXNjID0geC5wcm9ncmVzcyA/IOagh+ivhiArIFxcXCJcXFxcbuKAnOKAnFxcXCIgKyB4Lm5ld19lcC5pbmRleF9zaG93ICsgXFxcIuKAneKAnVxcXFxuXFxcIiArIHgucHJvZ3Jlc3MuaW5kZXhfc2hvdyA6IOagh+ivhiArIFxcXCJcXFxcbuKAnOKAnFxcXCIgKyB4Lm5ld19lcC5pbmRleF9zaG93ICsgXFxcIuKAneKAnVxcXFxuXFxcIjtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHgudGl0bGUgKyBcXFwiXFxcXHRcXFwiICsgZ2V0SGVhZCjnsbvlnospLFxcbiAgICAgICAgICAgIGltZzogeC5uZXdfZXAuY292ZXIgKyBSZWZlcmVyLFxcbiAgICAgICAgICAgIGRlc2M6IGRlc2MsXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9XFxcIiArIHgudXJsICsgJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV92ZXJ0aWNhbF9waWMnXFxuICAgICAgICB9KTtcXG4gICAgfVxcbn0gY2F0Y2ggKGUpIHt9XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLmiJHnmoTmlLbol48t5pS26JePXCIsXCJwYXRoXCI6XCJjb2xsZWN0aW9uXCIsXCJydWxlXCI6XCJqczp2YXIgcmVzID0ge307dmFyIGQgPSBbXTtcXG52YXIgdHMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcXG52YXIgY29kZSA9IEpTT04ucGFyc2UocmVxdWVzdChNWV9VUkwpKS5kYXRhO1xcbnZhciByZXNvdXJjZXMgPSAnJztcXG5mb3IgKHZhciB4IG9mIGNvZGUpe1xcbiAgICB2YXIgcmVzb3VyY2VzID0gcmVzb3VyY2VzICsgeC5pZCArICc6JyArIHgudHlwZSArICcsJztcXG59XFxudmFyIHJlc291cmNlcyA9IHJlc291cmNlcy5zbGljZSgwLHJlc291cmNlcy5sZW5ndGgtMSk7XFxudmFyIHVybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC92My9mYXYvcmVzb3VyY2UvaW5mb3M/YWNjZXNzX2tleT0nK2dldFZhcignYWNjZXNzX2tleScpKycmYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYnVpbGQ9NjEzMDQwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlJm1pZD0nK2dldFZhcignc3RhcmlkJykrJyZtb2JpX2FwcD1hbmRyb2lkJnBsYXRmb3JtPWFuZHJvaWQmcmVzb3VyY2VzPScrcmVzb3VyY2VzKycmc19sb2NhbGU9emhfQ04mc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4xMy4wJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnRzPScrdHMrJyZzaWduPTdlMGYxYjkyZjNlZjM4MjhiMTliZTY2ODM4OTE1MDA3JztcXG52YXIgbGlzdCA9IEpTT04ucGFyc2UocmVxdWVzdCh1cmwse30pKS5kYXRhO1xcbmZvciAodmFyIHkgb2YgbGlzdCApe1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOnkudGl0bGUsXFxuICAgIGltZzp5LmNvdmVyLFxcbiAgICBkZXNjOifmkq3mlL7ph486ICcreS5jbnRfaW5mby5wbGF5KycgIOW8ueW5lTogJyt5LmNudF9pbmZvLmRhbm1ha3UsXFxuICAgIHVybDonaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9aHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbO+8n++8n2FpZD3vvIbvvIZidmlkPScgKyB5LmJ2aWQgKycjaW1tZXJzaXZlVGhlbWUjJyxcXG4gICAgY29sX3R5cGU6J21vdmllXzMnXFxuICAgIH0pO1xcbn1cXG5yZXMuZGF0YSA9IGQ7XFxuc2V0UmVzdWx0KHJlcyk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIEt55m75b2VXCIsXCJwYXRoXCI6XCJsb2dpblwiLFwicnVsZVwiOlwiZXZhbFByaXZhdGVKUygnTGxlMG5heWRzelEyNTBJaE95ZFJBMWtKcjBYbk5hL3JGbHNqaUVLWlc3cmV0WkZldUhOSmxQS1dNRTRhOUJjZkI5QjBoVGF3WU04ditoRXd6RjNSVk4yc1IvaUg4TnZ5SFk2dXpLTmdqTWJKODVHTEVnMEp5alBJdGZHR1Jnd0pGVVZOTDFJTGVSTmJhZTM5WFZyb0Q3V0tVS0JQZnY3SHdxajJIWUZINXVRTHBPVlp2RzRVY1lPekFzN2o4TmlhUEVVSk1TNDI0QmtibnMxTmY2RklEWGxma05JSXNXQkhXUmRPNm1wNzNWeTJ2dTVoZzFhRzBBVmVrNStwUWNxYWt4RU05Y1dHZ0NKQzVtS3BVaVpTRXRQOTJzS0E5U0srL05Ic3FmMTNDT3RRUmlpeDZnRmh5RmhMZXo3K0dwdVNiTEgxM2sxRkRVWmtpbFk3T0JQOHlDWlArWW00MVloaS95SVR4M0VsTG1namlCZXhqMHFUTGpyS0lYbng0RERYaWlwU3cvWXBVTmRxdGdVWEhOaTk4YTdjR3RMRSs5NUFxazJEY1YvSDNPRzVocHN3U0hDMitpbHJSTFA4K1R5TFRvZ3JGVWFKWU14T21yV3dBalVNMUZmTHMvTVN4NjAxVy91ZUZEQW1oTy9aWm9VWndmM01ZYmh0a3YrQnhneUcvNzZXZkRBUWJHQVJKOTROYWpaOXB6enZjdVhJRXJncjFEL1B1Z0ZtaE9XSGsvTVNkRkRsQnFNRHBFOHg5NVlqNnRMNHdGc3cyT2FHT29lOE1oc25pRllFRjhCcU1QUmVkMHo3Y0JDNFJHeEQ1TmdWMUZLV0hBUGdaUFlGS2pnTzlnbE5KdjcxSVNnSW85U0tSQkVqS21FNGNFdmIva0pFT0NFRExqQlFyVnNPVDExT3VaY1p1ZENaRU9Uem1yaUdIZFBmZmxLQnJGc0VoN3lsVXRQWllFY0VwQ3kxV2gxZTFZeE5LWmhiT3VrMDJ3dEE3RmZITlAwRHFJWjgzRjhSRkczOFJZMzZmRkkvL3pMcENNRU04VVhoemxqdzVxb1NQdnpmaGVSMS9HRjNNampGZnN6WFozVUN2Y0JnMndDMU9rQVZLcDB1U2NHTG1lcTZRYUViUU4ydW56MDJwcEZWN2VLOUg3M3lEMUVFbE5LQ1FDa2ttQjZkeHBxdGtWNkpoUnN4aWdNY2VYbjRkVUd0K0F0ZmtBMkt2eW1lNXJrdXBwQmNlRnZNZmhJRnN4WUdSMlVFOStveDZrZmxZQnRQcDU1UTZ1bElLeWRocms1VEFUek0yaXY5Zjl4cVlwSklJQm50SVZJb2YzT2FuSEpXckV0eFEyYzFnY3ZPdC9XYkUvbGtOZHJRMzNJT1lyT0ZiMmNiWjRNL2xoNW5WdHppanZwWWUwTTZPNXYrSW9aTXBPaVZxc2U3eU5pWGhBSHhFMDV6aWlWY2o5cGl6cFd6SWViek80ZytLa2FxSnJCUzZ5ejVRWG1pRmNXVkVTSUlJb3ZZSGVDS1JETGdCb2pxSmRUZUlYYVIvS2U0OXN0MDNYMkhSdzJyMEIwTW5pZjh0RVBkYTFnbGNCTHNURVpFVzJoYmtkdG9FaWNJUkZ2a2k1NXg5SFF0UVQ0enAyVFdwM2F1N1RJendEaXRDVWJiRE9WMXpGZ1NIaDA4NzNMbHlCSzRLOVEvejdvQlpvVGxoNVB6RW5SUTVRYWpBNlJQTWZlV0krclMrTUJiTU5qbWhqcUh2REliSjRpQnAreFhoamMrMnJ2aURhQU95RkM5dWx2a3h6YStUVzRNYXQwaHh0WURySWwrRHBvdWVqeUlNVFc4RHN2WHhQWENBUWJtd0dsREVBZk9peXF0cUxROUhmOGdEWEUzNVE3YXkweUFCRWVqMXFLV2dyai9ZbkJiWS9kWUFPUFNIcG1sZGRGTEpuS3BBcGRNWHZZQnN3cldGMENSUlNiMXM3Q1pSZ01mT1F6SzZJejYvdGVoYXNtT3M3TWw5dy9IcG41bktoMTArbjBpR1hNdng1SUkrU0dwb0x1ZUN0Um1KN1VWVkN0REc2eGV2eFlNbTA0c0FHR0dKYUNEQWhHSDhpY2JoSUUyYitvcURGRXBtVTBlWTdSdEc3OWhQaEwrZ1hZT3lZTlV2SnFlamxiWjEvT2R2TDVuWXk2bTMwR3dsM3o3dzVlc2xaQ1VBMGthUnM1a21VT0x2TDBRUVBENzRmYWdBZHFHc0xIVUdEV2I0QnpDTEYyTVlMSHkrRHNja0szRllKTXcwVTVxTjdMNzAwc1ZTYWxmNnRLOTZkV3F6bjVlSXJld2YxaUdvODNJY3d6OW84MUptdUtBMUxwSVNTOTA5OG53QXgxcVAxRnpQY3dJaFRTVnVSOCtBb28xcDNEaTBXTHdOS1FOT0k4eDc1RG1hRTZCTFBpRGthRExLSnljK2J6WDBoSUMzc1BiMitkZnZsa3NDbksyMmNHaEsyNUZzOU9GUjNyRi9WRlZTUmJERzcrN0FxT2tFMjRib2tFVWpkOG5TNUhqcXAzRC91ayswWHpCeTkyMjJYNmJKbUpod0ZsS3o0NlRCVlhlenptM2R6UVc3T2wrME9xZi9FeDJBWStyd1ArTTZ4RlJIVVgvajJHY0dhNW1oYkpVelJSQmRPNUlwclUyTnM2SHRTWEM5SXFjeFcxVmw1YkNPYk1HOStIdnZ6dTBzRzdBV05ndVpKQ3N4a0pYaGhnd2YyR0I2RlB1NitvRlJ6NkQ0QTA1c3NEc0xMVnltWjVjZ1RiRGNiZXExOVVtaVlhbTNQbjdxV0ljanVoOU9zTjR0aUZUcnJVRVBaSVJYOVhrMFVHRFlmYWJRMXBYZnhNLyt5U2g4cTdkd25WSi9nN2x1aWhHT2VlTndIWEFGQXk0bjNhY1BIMlhCYy9tc3g1WEtnSXJlT1JNVlkvY0ZiOUtjbTNvV1p6eks2K0hTUDg1dGtGS0ttNTVoZzhNeHdpNUl4OVJRRS9wR0F4MWNzb3ZTcDNqUlAwaDYybzZOaEZrdENES1d6akVVbDlibWEyOGZaeWlZNGRYQkVzSEJPcEt2QnpBQTBsUmtlelRuRXZ2WHM5WjU1VXJBYThaaEFGdXg2WkVOdzRjTVRJdVNrVmZ3K1YvVS9tb21sdEo5dkdQZ2lxYjVuWmw5S3U3ZDBST1YxNUozUUFzYmhPeFQ2U2drSVZ1Z3VWYVRWUmNqMEhXK21NTllLYlF5bnJOUkFxS0RlSnF1VnhjOUhsUE02TDhxUG5aSVdiYkhBZlVmR2J3MGxSbHdTdU9wRjcrQTJXSkxaNFh6U2dIYmNNWGt1bHpQUERQOS9jYVJJQjhlMlZrekVaU1BuVWlaQXBXUDZ3V3VzSHVCMzlXQU03OCtOQmk0QnAybXhXakxLSExXUU1EZUlYWGhkeGVjSzVxVVVmWUxnSVRpaDlEZUZwZ0xOV2NCTEdRRmJkU05rSjNOV3BjRzU2RGFqREl1TFVhOGswMGk5NGNKd0F6TWtKQnhOSmI1ZWhCUmtWdldYb3NtdEpCTWRSZjZORWJzVjl1OHZwWmpORW9nVWtubWx0Sjl2R1BnaXFiNW5abDlLdTdkMVpxVFB6b3B3WmhoK2l0RHBVYjBMcjI3YzV3TkFBRWpycGhPcWZlME5qMzlDTlcwTEg0V3hqZjJsd2x4TXRPS1IxSFFML0NQdzUxeXlZSi9MVnJReitpZjNpSUJOVTRuQ2dPYnVXNUpVTFR2c1FzczJSbmVMQ3c2cnBoeGdNc2Rhd01FZ1o5cUNyQ003eVRNMEV5bEZ4ZmppSVpLcWJLMTBCYWUyTm9IRCtHdW9VS0FRcDVTdTRBcVhTZktMem14NGhXYm1TaU5WN21DQi9yZHcxeWJzUHZnQUZjRzg1TjUza05qemNQdmJLTE9PeEhYSFlWV0NsQm1KcHJ3SnRIQTZCMVdacEdXUng1TS9nRG1zR3pWUm1WdUJEdm1TQVpNd0llVnI1YnpERTg2bTBOcWNtZ1ROZXB4d3FCK3lCQnA1S3pkNDJFQVFodDJFSzVUMnpNeHZnVHplUy96M0svcTVsUkhsMXpLMEovc1F3THg5ejhsTVZnOVJCYkFlL2ViMjBWb3d6Y3FQZGUvcWkwakhNd0djTWFDOWR1eVc1NndsR09zbmtiZXlCUS9QZlJTU3JrVUcvdmNhQ2JUYTRJVDg0Wnp0cE5RUnZiZVVuSUFvUGtXL2VaNndPVWlhNEpzeWF3OTlXYTgrRTRMakRtWjB6UmhuU0hnVXlDL3liOXJaVDJsRTFTN0pCSWs3WVpQWHlBMDBhMkxnS0ZHODhZelY4MGhpK0FWVHdSWlBrOXdsTzdnUlMyTlIvNTc3bkl4RzBIMjJsbEZzY21OMUxoSTkxRkQyVmJWWGJxaUtVVmpKY1ZuNi9zUWNUd3d6N3R2QjZ6OXlNbXJEbHlDTXZ5VWR3R0k2dXI5RWFjNHFXNkVVejF4SDJ5NVRJOEFmaHh4eE9yQVFabkVSYlRNSUNkZktHUUdESmUvVGRLUktRdGdicGI1TWMydmsxdURHcmRJY2JXQTZ6RFB1MjhIclAzSXlhc09YSUl5L0pSTmR2c1g2RGxLZFl3TG5GVVFqMnQ2SFFIaHRqa09saSt0Y09uUmxqQWEzMm9yZng3OVZPdXZpTnErbU9xUjFOK0NHUkYyYm1LVTFrcERBcng0VnpEZFdKZGRFcmErT2tGbk9ORUd6NFllY3dFUlpVZDc3K25uUEwyTW9DTW1FRFljdlhJczJFdVpIZGtUZm4xaXdlb2dEMDFRZndxWkhORjhIdmxCV01VL2Y2RWR6WEtMcUlnUksyaXBBTUZnS1J2bFJiYXNIUGxSdXNTZzBwUk5WVUNRUjVlYk55eHFGWGhMYzIrb2VkSzhKRW9Mb01FUTVEM2ZKYXJZZ2Q5ank2Zk9pQmtHOEM5SUlUQjhteXR5eXN3Y0t0d2h5MS8xV2JITzdDei9SZHFWY3lKMzRBMnEyWjN5dWkxUTVhMW9QbU8wTldMZm55YTQrc1JOUXJrc2lRNEh1TzI2R2FaVVI4a1d6RjFPeGRkdWFQVnhJTk1iNjU4Y3NYVnVER1o1TVlwV2RiY2tGVzZlWVBGaXUreFNEQy9lRHpzWEFINkZMM1BWOE9wRFVQQm1wVGVrMlhYZmVLZHFVMnBTOW03U0NpQ0I1dTJxYmlLQzJjOXZCVjI0TTZzOFJhNGhtZCtQYWo0RlR5dHYzNlNIMWJMSzh0STFsWnord2lmKzlaSUFkVDIyY3I1N2pxK3lwTVBlTjF5NTlEcXY3cHNoRCtKVEk4VWdkUzRRVmxDd0YxN1lydkpIUEQ0MktGRWJnUVkrKzBqMGRhbHlIWWNnZjU4UXlBbDkrbm5CSlpWVVZsSWlsUTZxRVBzSHpiNnJNYlY2N1lTcVpIY0x2ZkNUb2JSaTRwYUJDRVV4Y3lOTFF2SlNLY0twWkF1ZjIrOEs4MXpLeXozTWRFY3VydHNobnN4UUErb2NEQzJPeTU4aXlDSzZkU2pJclRQaUZGUTgwQm1wYTJEM2xzY0xWbVk1SVI0b2s5dGdkQmVYSTZYWjh1Mms5S0xKV2QrRnFzZjhZT1FHeE82RUgyY0NLTzJ1MCszRi9HT3o2Ky9PcnV0TGFocVIybWtWR0lkSkt1WGVZR3NabkRCZ2VKZ0JKWjhySUhDMEMwTldMTHhpakxMRkpmemkwcHpHSVJIVzRMQUpBaE8vZkxwU0w1MFJscmhNWXZiUXM0b1p1MXBlKzc5WFQ1UlI4OGRsWHMxcjZENHNKSFloNis3eDNrUFF1TWxzOXJjMW55d3pCZGwzNUNJWnhFdzZjQUNqUDhZNGRuNnp3TllQbnQ5UW1HMklWNFo0ck1Wd0k1cFpRaW1WNGNCMUp5cC95SzN2T2NGZXBXYmEwaU5MN3hBaEVHRHRzOEk3aEsvNU5IU0N6d3M2N1RTa0o4VUh5d0drdFNUSkNUMDE1eXBRQ2FTbkttT09xVWlteENhaGZTNGU0ZjlYdGZCbFNsR1djWit5eXZMU05aV2Mvc0luL3ZXU0FIVTlqeHNDUDJwSzhJcEg4alJ5YUR4YWlHRkx4TW1ReGM1a0RnZzZ2R2RQNkt5MjRBMkEwZUJpZVhiZ1BmWHlIczgyUjQ1NjkyMkp6MHBWQUdzalA0NDNteGlFK282V3YzTG5kbm0wK0YvUTFIa3Y3NFBkdkltSERONHVyR0Y4dEVCK0RsQ0ZRK2xGU3FoK2JDUEl2aHpoZTZOeHpxOERoK2lvenVuWklvZkl6cmlvMWdjckJmQjBRWWRqWEcwRlRSN3BkTjU0bTJNcHZFSDB5ZnRFbzE5bnJ2TEs4dEkxbFp6K3dpZis5WklBZFQydEhWL0NQU3NLdDd6d2N5dGFHckxhYW80MkQyMnNzd1RSTFBhRy9xNkdpN0RqRWhod0tsQnhqanc3SU15dElJM05rTThjYitKdEV5Zjh3RmtURUZpRkxVWWltUS9oUFhJOTN6clhrKyt2cW9nTHJ1MHRhWGd0bE0xN3F0QWZ6R1F1OHlVZEk0cXFZemVKeFh4ZjBOTloyb0JqZURyMkRpd0k5T1hQVXVCSGJzTDRjMy9udzEwRW0yVTZNRkJVY3Jaai9ETWFTRnhWY1o3TW9XbDJvbjhHbTBWb3d6Y3FQZGUvcWkwakhNd0djTWY5ejQ5ZWdaUlF6TDdoS1NVTTVUUHQzN0FtazM3OWNjd3BMdFBUVDIzQmg3VWhua2RHMEdVb0h2SHN5OTlHeG1RYVI0bmF5Ty9yUUZib3F1c3RTRkxyTzgwL1B0bkg4RUpjd1FhUVlaSnpOMWI5YkQ2UnJKbDZ6UUlvbXdNZll1dSttOEZzTzd6ZDQvY2ZyNmhpT2ViSFNLWm1EUEZkM1hSSmUvOUNObkxHTFlYSkxyWXZFdnRGendEOEEzbjNkaFhXUGlta0Fpc0YwUis3UGhROVZKTFdjR2g4dHFLZ29Wb1o3a3pCR3VEN1NoOWMrMlNyK1NBR0g2YUhCVDRGdDFlc3dVbmIrZm5KR2hhSFNDL1N2b3pLQ0xtV05yUFE5NGFadVl5T092MGZsUFU5UHY5S09RVXkrNVV1ZGxNdnRxbDdCSUpmbzRQaWgvbEs4ZTFORzlKTjBEOU1MdTJmNytVQkJjZ25jQjlFaHVjS1FDSnNSaFBMZ1pwWC9yK3NMZ25iUzFIY0JLNTZ2N3FObVBRWXpsTUx3Z1VGUUY3QWRld1RvZS9ZaXVBYnFjS2NNMU13TGZJNGJlL2duRzRjOFI0VTlCUDFHbDgxWjVUTFpmV2ZlMXg2VjhHekpJOTg3VnVLMlk3MTBubEVzSVVBQ3AwREErcDNiNnF3L2JFVUcwYm9MUHpvTnJJVEd0T0l3RWJ1WGlBanhrdmhzL0pBdndJRzY1djZvTlNrN1l4Slp6Rk5vK2oxZklhejArRkJqVzVjV2Yrc2lPcDN2WWhrWFdvNVNsNmFDN25RcjlEemhONzBUT2k5bkJ6SFFSRmxSM3Z2NmVjOHZZeWdJeVlRTmh5OWNpellTNWtkMlJOK2ZXTEI2aUFkUS9ERjd3eUg5OXpJcHJJTlU0TnhldmI2SHlWSlBrNTFYRkIxU0lnU0lycnB6M0VqM0orVmlncGdFYmhWWjZxc0ZsOEFuMlVZcEFsM3hMeTF1Y0JGMnhCdXFaS1licEpVdEQ5RndHZVJrVnlFMXRHcWpIdFFZaC9JTWdxdmZheUxaQnhpTytWM1RDMlZQRnoycm9DeHhOOElMenlLQ2NjeElZNkVZc2cyd0xiMWI5QityV0g0RzhOL3JnQzlEMHJYcm5RS0ViWXArbFhYbHR3RVNRZ1B6cmI1RW9SUHR5OWRpYmxTQmJ4cjRQd0VsL0dueFJsRlpwWWs4RHlmRkpkdU44MTIxWDVtUldLVTY2OW11RzNqSTRMc1hyaGw2QlZWTWNYTjlrYXE5cXpPcjJ2VGY2SXM1T3pWK3hnUU5CRHNNaWRzSjUvOCtVK1pMWG9va3RTN3pCOURqeUVuVFF4V1hPbmhJdzRrN1d6ajZwbStaSTVXMU4zMFFiVkIrUWZPSWZGemtBOFIza3NvRHVJeGZrZytzWTZrUEdzN01jclNXRTJ3MFdaWlRjaURvbVROei9hL0FBUkdhS0xFL2U0a2cxcjBwU0VkNUxxZnYyR1BEMENWRytJSVJzcTk1SE1GclhESWZmL3c5YkxLOHRJMWxaeit3aWYrOVpJQWRUMng5SmNkeDgvK0VNTDZzRitSQmhaT0lpemRuVUNjdmpMdkUzZHZqVDJYQmljZFFGejcxR1NPZWdqZytIZnlzVGE5NHA0NlVzL2craXVXSEEyc2RIdUVHWVNFblFsLzFYa3JHSTF3T3FMYzR4Vy9UeGZjSk9TQlkxZk9JMldOQXlwS1NKM1hMcTFiNGJIbHE2QlZ4Umw3WkdwWElBKzRUamhqY05XRDNoVzBoUXJvMDY4MXRIdGc3K2Jqd0NzUGt2TVV6MEc1a1BaaG0veXAxWnVheUc4YStobkxBc3Z1L01sS25QWXdybFRGUEVMUEN6cnROS1FueFFmTEFhUzFKTWtSeUNHdnhhVGtrUS9pZkY3S2R6Vm54eVEyYzg4eFF3R2NKd2I1aUZ3VElyTEs4dEkxbFp6K3dpZis5WklBZFQyZW1XdTRXRDVKTDlwWVF5czZ1dVRqcFVueTNHQ0JxdG1sU0Y3V0FxYi9TRE5OR3p5TlE3ZmE4Y3o2bzJCdWVIN25zZXd0THJXSTgxMzlrRFk3YnV3SUpsWlBOclFPMTRuS0M0RlJkWVRkNnRHTFJ6ZHpwUlEzWVNOMWVib3FMeURhaUR0dDJFZW8yU3VPTlNYREtrRFBVdEROL3lFWGhDUWNnVU43b0xKMHA5VFRnc0E0SW05M1JML0hYbkVadnF1ZWVoRU4wUmd1eWlFazZ4ZnFqdEcvL3Fyb2RmWFlkWjJYZXZVQTBlM1ExT0RxdXNvZ1o2OU5QVHdjTUlJRUI5T2psQ2RDWHREbEdGaXdZaDluc0thV1laMmhaejlwYUFBOTY1eVJDUlQ2RlNPTHhhblJobzJFc2xJL2V4ZFkzbTZobmFGblAybG9BRDNybkpFSkZQb1ZLU2VWNEhjMksrUEhwZG1BVTdsQ2kwbkM4d1M2TFZwTVNTMTJCNHptMkppeS8vcjNyRnJDajg5d0NWTTRyV01lSGpHTkVxSU9rY0FLSXBoVG44TiszdFdyTHVldkpDVzh1Q1BtUnFOQkl4M281dTlBZ2cyQ294QmNiZUtoU2tneGNzcnkwaldWblA3Q0ovNzFrZ0IxUFpzOFFYMHczMzBSYnQrbitxZkdPS2dsdFRpOVRVSUUrbmFrT3dCVXdsR3pHQ292Y2pGL2VzZVlmaXNUMWtBVFphNUNCcFJFaCtmbmMzTGV0TGg2bEp6YlJ6Q09VN2h2WW1mcUNmUUlFRTJMSy93bnVvN3hLRk01eHU3d2RjYllsN0xLOHRJMWxaeit3aWYrOVpJQWRUMitpRndEMDg3ZW5TOVFtbmMrNlR0R3d5cWNzenV6NmowMEJGSVMvU2JNVmhuSkFDK1pRV1NvT1lTc3prZW5QWW1rUzl5RmNQbEZmakJabWhEaWR5S25zc3J5MGpXVm5QN0NKLzcxa2dCMVBiR2EySUwydjBKTCswNXlxcEVrMVJYUnNQZGRxdTlHL2daQndZdGIwMi82NExKVWM3bVp0dzVLdi80VTg0b2YvWndsNGJwcUY5YXo1TkpyS0trRi94aXl5dkxTTlpXYy9zSW4vdldTQUhVOWgrdGw5UXhpODdLMmgrNS9COVdIZ3pIN1gxaXkyOU9aQ29NZWxYRCtDbFZ5eXZMU05aV2Mvc0luL3ZXU0FIVTlpRVNNT292TWtCN2F2V2FncWRWQVpYemMvZ2JwT2x4MGdzRmpoUHduMHVoTGUxMmVmYTBtb1U1Wit4YXNkWkwvR0NqNDN0Q1ZCVG1GVUxydlRpeWdwYUdkb1djL2FXZ0FQZXVja1FrVStoVUdoRzdMakFNWGhrdEVYYnVyR1Fabm1jdEJMYVQvM2s4dE5iSEFwVmdLWGpMSzh0STFsWnord2lmKzlaSUFkVDIzbHdLcjZjaEJhMFYwQnp0UHpHdUl6RlhibFB4OUNQamlhV1hIaC9zaU1ETEs4dEkxbFp6K3dpZis5WklBZFQyUDRsMDJCdUtCREUzMGt2OUJiRjNTbi94STh6czQ5cjhYSUUyVG5HVFFYakxLOHRJMWxaeit3aWYrOVpJQWRUMlQ5ZTZsUHF1QVRlL3d4VjNYVFNUaVVETkc1T3pteTFuek9NU3IwSWJqczcwK2JmRng4aDdZQmcwMEFNczZjaUt6NG1uVzdicnVPSG1DNDRuWGtmc3dybDVFTGg0RXRaV1Nxcmhma2FwQ29LaWYzaUlCTlU0bkNnT2J1VzVKVUxUdzFBSUNaeUFDRXhuOXc2VzJpQlZJcTJVVWNXRjZONWRrRU9ER0FJd0lXcDRZUUI2d3JTMGJUd1pML1hvR1Y5WHNKdzNyei9FMjRWenNBTVlKMWpwS0F4STEyZDcwbC96QUNZQ2tsVS9kdFJBZ1VuS2ZDQ3h3Y0xRcTRLUXFBTGR1bXhRd3UrZE5CQlVvWDRtUHBEemhUbnBVY05XZXVkbFRmdmRBNlZhZldGeHkwR21McmhiZU1xQ09xNlRIcDdWT1pTVlVEcDU2bm5LOE9qMGJycm05QWQzSHplNGFpdFRzZzJVL2ZjSCs3ejFyY0VGUXJ3QVN1TUVnRlQvRGJnKzBuMCtvY0dEWG9nendzeEFaRHlhU3ViUnNtdFYwNUJRRlRKL0JOdnYvdWY1a1NZOWkvOTdLVTdJRm1ZeGw4c3B3emtUcmlvNGpBUkg2WndUWHBSbEg5NlRaZGQ5NHAycFRhbEwyYnRJS0lLNVdrNzRLNXdIMzJTWVRzaFZPZi9peXl2TFNOWldjL3NJbi92V1NBSFU5c1FzVkp6bS9wWUFmTmZWaFhHUk1KNlNvRDJvZmtIOUorWlNuTGZESkU4MGo4bkdXU2pmR3FuUDhtM1E3c2NsOGdkY0VzVlNEVnhxUVN4d2FpUlV3REJoNU9UQ2w3RHZvWnFEd29peHAwTzVWcUt2eXg4V0NVeU9PZmZ5T3JBZjU1b2VVS25hNXAySUF3Y3R5aDRJUm5VbjE5UVJ4SWRhK1R4K25LZkQ0R1JnRU1QNUs3OGZiL21lb1BrYkFkSFBVYkNmNnlCOHlPNCs5NldtUU1xckVpYXpLZXladGpidmxpa2JPZU1QNWZDOG03TzFPL0NCbmhmbk9yR1l6SFp3SGtDcWN3eEFxckI5V2tiTEx5SE1adnA1Z0dncklvS0doRkhENWJuZjlmQXp6cFF5K3c3ODg3RGtKeXZ2MnduT0orS3FsbVpBb3lIVmlINDNGejBYYUEwUm1tQmJwSEpmQUJjSmwycEFrS29IVlVjYmQ2eDVDelJSOC9PQXRucU92TnRDemlobTdXbDc3djFkUGxGSHp4M0xLOHRJMWxaeit3aWYrOVpJQWRUMmxoQkYzSDBQbzlGRVdDQXgrdjBuZmdVc1lXZDJpd2g4OXlBTXI2YXFSZHdiTVpmY2FJUHJmTUdpaDhRNlJVU2RHTnQ5cjJhVytRODVxSEZKdGk5QWZXTStuK2xzZ2x3MnljV0ptOEhCQmtGTG1RMFdwc05nRUFqZFNqLyt3OEJsMVVVd2h4bkxrYy96c2l0S0xSdHJIQ3JOV1JjUDlWTDNUZDhIYVVPNmZTbHFoMzZSdWNmdzhUUTFCMU1Xb3VwamhQUjhPVHorQ1VrZHlLUGJFN1VqMVVEcGg5a1lhcVhQTWwxLzZtcHEwMmJMSzh0STFsWnord2lmKzlaSUFkVDJPUGZacWZFclB3dDhmSmxvbzNGSG9ac0hqM3VOUjB5T2pJU1pRRlhmaGRXWWd0VW1iM1hOSURIb0hHeFducTVNNmRSL2hCQm81VjRpK1RMWnZNVXFlRkpjUjRueTFURFJkOHRPM2RCZDkwNlJ3bi9CQ3FIS09PMEdLTXZ4RkE5djhmVG0xTVBmeXJnTmxzd1hBdVpqeUg5c3ErNTB3bFpocW9KTVZsSzFVcSt0MUI4SUtZZVkyZDMvdzUzdGVlOWdTN3RRSUVTS1ZMUlJTTWV5Y3VMZ29vTUhKSGdoTFpkYnlKcDBZKytrRXFxMXJBTHZFS2NmdWRPdVMwMmExTzZFMzFBOVl5bVFQeVYrb2dBNVJhN1lNaUxnUTYwVDBlb1NrK2NpaTRoUEtKeGUvNGJlL1gzMk44cElJQkxIbkdxVHRqRWxuTVUyajZQVjhoclBUNFVHTmJseFovNnlJNm5lOWlHUmRhamxLWHBvTHVkQ3YwUE9FM3ZSTTZMMmNITWRCRVdWSGUrL3A1enk5aktBakpoQTJITDF5TE5oTG1SM1pFMzU5WXNIcUlBZVB5Q05yREozNWR6VXE4c3I3NWs1cDlzZnNOOWY2ZHp2eEFvRWdOemd3VnpLUEZseFdxd3pVd2F6V3lkR0NTV3BEbEhLZ09JTFlIaUx6WmRmSDVwdGNsNlBpQ0RiVWd0eE5yUVBLTmdYVUJZQXBLNEYvSjl4Wmw5SlB3MU1yWUkxazRVcDdHTVVhYWNYdHoyaWxEUEY2VHhQQmJyU0N5aU1Udm9GWnlyeTZRNW00OXZjVktna1JPUC9QQjEwNnpncXpWa1hEL1ZTOTAzZkIybER1bjBwMnlPZEVoL0N3Y3VGWTJORVVhRHVJQm9neWJDb0FTcEdTdi9kUC9OYTk5YWFmQiszdkE2eEM3c2c5MWdHUm14dGxYTnZZaUNNbUREekNaaE1mbmYvcWh4MWY4dklPRHJqTDVpZDZqeEhybWhBUmNVT3hENGo5LzU4V3RKWXZhbXRDendzNjdUU2tKOFVIeXdHa3RTVEpNcGdadGl6b0FYTjU5aFErVTVDaElRMFVUaklwQ0NoY0F2V3A5L0NIeW80Umc5L2lxaU5MU0JPVzQxcFl2Z0dVN3RIMWlQdWhleDE5YlhNNW84RTZXQ2pPeW5wN05nQUNWMytSQXo0cmFsMWhuYUZuUDJsb0FEM3JuSkVKRlBvVkMxUU9DR0RPL28xeFhiNjhnR2lIaUJDc3NIN1drVHN4VGZQVHFpdVhHMk5pV3N1b05jUC84NDQ3VE9Ed0J3UWh4YTFmM1JGTDBxVnlscUdyYlBlcWZnd1FYMFROdUJxOUQvTlRISXloZVR1d0FvVllHOHY0bE1qN29ydm51blV3d2drNlVYKzNVVWJMYUFaNEttdGRSM2hUc3hLaWlLNFJyaUVwMDc1RUg1MmxkalJKYjR1YkkvUVgrcWRyVEx4RndJZFllUC93aWlrTlZPWFBNQ203dUh2cmNJcHZocWNWdFZFWCtHOWFMOHZQbnpjK2hIbnhBNzA4YkQ2TGZKTmdhM0Z5SEtpQlIzVWY5bjBEZ0hHTjVYMWh4R2xRYm04VVRMOUxJQnZpRDk2MFY3SlF2bXFBaC9rNHBkZ0c5cXc0VWdoT2hqRXk1RG1DcCtkdjRSV09VT2FtNXFkK0tlZ2trRVNPRzhrUVFlcHpwUXkrdzc4ODdEa0p5dnYyd25PSjhDSlJsMUVPRE0wUVl6a3pNdHY4WEhMSzh0STFsWnord2lmKzlaSUFkVDJDb3Ryb1JQcjlMQUwxS3QrZDdEM01kdHhOYXNMVHVKZERJK3FOYmI4UFR0UHV0L3REcU9QWGkxMXl1NHpWMzNuUlk2RmovWlI1b0s4b3c3a1dtYnMwK0U4R09oaEdqRjVhN3NiL1FYdzJRT0RxdXNvZ1o2OU5QVHdjTUlJRUI5T0RDV09LQisxdnJGS1RGaDhmV29PQmdMUkpyRTc1MWswU2FERGxWTjNpc05KQU9zZlhqekd2b1l6VzJiYXBqR2xxeWpqNmZ5QlUrNUl3TjhGcTRsQnZnTjhZSThWTWQ4YmJ3SWp2SjV2S1dBU2ZBQUVCeStMRFZjNnNYdGNzUHZXdDMrc3VzOUkyMnpLMlRqN2hTNnA2TXNyeTBqV1ZuUDdDSi83MWtnQjFQYngvYUx6U0xRbXR3TzRXUm9OMjJLWVZKQTMvWHpTRWdiZ25lZ3hxcU5PQmkzdGRubjJ0SnFGT1dmc1dySFdTL3p2N3EyVTBIQW1TSGNiK250dGxzVkxqTWpSd2phT2dBdFJlajNkRXZTUFZGdy9pMGFDSzB4TVFiTEtoV2J4dFFDQmtsZkZhWVZGTFBaWkUwbjNTL3hqMUJQVG1GZGFVR3laUloyNlFER2hPTXNyeTBqV1ZuUDdDSi83MWtnQjFQWXpMTklUNjdzd2hKMVRFbklBTGNVcys1Smx3SnU3bXhUUlU0V1hBbkJQMTNnZTVnVmpqMU5hSjY4d3VhUGlWaDdBZDZVUFdXZ1I2d0xJUG5UVWZ0RmowcDZWWFNKUHVUZWF3UlJRNGMzY3JYZVFtdENIQ3BVZ1hLVm90Y0RkeldBVFRuT0tKVnlQMm1MT2xiTWg1dk03K3U0Zkw3TTE2ejg3U0pFSFRUVG1tK0s5TkhOcG1TbXdKYmhhc1p3ZGd4L0FkNlVQV1dnUjZ3TElQblRVZnRGak9JaWhGL0MzMWdzSzRFdnR1dXNtVWs4OWNja0FQNWl2bXB5R1JMNjZ4S1QzYkJBLzU0bFZPaXJWeHJaUUIvdzdUUzdsL0VlLzJvMUtFVUw4cDdEdG8vYzVzblFKbENTVWZERERPdWV4bVhqQU9iUWdzMzdiTER5RTc0WUtLYkxSZHd4SmVFa0NqRGR3THZNdUpHcnNDT3oyT3RqQVBJUVRrakNoTkp5V0N6U0VkelhLTHFJZ1JLMmlwQU1GZ0tSdmxSYmFzSFBsUnVzU2cwcFJOVlVDUVozWFBnbDNxVElsYU1Ib2JCUVJuUDAxMXZvaDV5NkRCTUtDMTZsWU5EOFVmbXlnY2xUWXNaQ2VkZXA3VWxvRHF3Y2pIYTZLSDhXMVdGWjlEWHhQM1d2WUYwUkRyWVRiNGpvUW1JVlYvY0puZWQzY1AyVXJ2cGxyNkxuZFRya05xQllBcEs0Ri9KOXhabDlKUHcxTXJZSTFrNFVwN0dNVWFhY1h0ejJpbERQRjZUeFBCYnJTQ3lpTVR2b0ZaeXJ5NlE1bTQ5dmNWS2drUk9QL1BCMTA2emdxelZrWEQvVlM5MDNmQjJsRHVuMHAyeU9kRWgvQ3djdUZZMk5FVWFEdUlPcno1c21adUx2SVhtV09wRVhXaUdvSWxpeWtwbkhjbWxaWkhsSnBWdXZvVXowRzVrUFpobS95cDFadWF5RzhhOXFSb3JWWEl0L2hhOTRLYzJ3ZlRjdkxLOHRJMWxaeit3aWYrOVpJQWRUMnp1WmhGcUhWRlJKVWNqME8vZVRHTGwzQllMVlBEVVFhTDlmSHQzNVN2Nm1GSWkyRUJWN2xma3BqbFNMUlhRTzlDendzNjdUU2tKOFVIeXdHa3RTVEpJSElhdzNnWGtxQW8wZWp3SlhyMjJLcmJZZko5RzVYODlQbUNIaXlwekdKQW8wM2NJMjB3TDJFd1czalRlWTdiL1lXWUNwbHJOcU1DRW44R29rNG42V2ZiL212YzN1aVN6MlNkbTc5VWlYakpqZkwzMDVoVTFiK0JIangyS3JTQ0tnRVZvL0JHUllSdC91dHlrdHJpNlpCZUhCVUxhbmc2cnkrL2RSVjVOM0VzRHViSlJYNklEWlB6ajh0d1E2U2N2a3ZuNGNLQzFRWitUcE1VUnJNL1JUaEJNRUVUcFRmcXlPNFpNYXpWc2JJZVIwNGVMRzJxWmJsR1hyVHY0VUVheFQzSnlodE5HWmVTaGJnK1BkNzkvMjQzelhiVmZtWkZZcFRycjJhNGJlTVp0eXlnM3lhVE45enVSaXI0TFZ6b2x0VmR1cUlwUldNbHhXZnIreEJ4UEJSUmhaQUFMZU1VQWdiNXhVRHoxU3hzdGNZdTZtcmZFaFBpOCtqaitHZGtLYmlRbTJWeWM3ZEpaVlA4VU9RN0R2YXg5OFRvM2p4UUFEdTlieVlEaVF1ZEgrTGxHYnRyUFBrMUJHNXN0SjFTMnAvbm1SWFo0SU9BTkxvRURuMnpTQkYzRE1DNmRzNzZqZ3YzNWI0eUZUeHl5dkxTTlpXYy9zSW4vdldTQUhVOWhRdjNyc3dzQkg1WW5OQk8rMDEvQm5PbERMN0R2enpzT1FuSysvYkNjNG40V0V4cmlTN0RMQ1pkdWlFT0prWE12ZnlucEVyMWRNOHBrTzZ3OXpZK1RzdGZnRDRjUWtwVEl5NVkrR3lwU25Ib0RMaW5SMGlmclNqd0JSeDgvY1luTTZVTXZzTy9QT3c1Q2NyNzlzSnppZHlTNmxidmNkWXlVOGI4RzZIYXoyU2Fzdmc1RmVOVnVtbWNlaWpvaTh6RFYxdUh6bHBKOWJ1VUFibUxQMU53ZU5ldXFLNllWdnA2dkNlRTRHaGZIeUhZS2k5eU1YOTZ4NWgrS3hQV1FCTmx2VHYzNGJKR3dzaDdjVVlYeTMxd1pUT2xETDdEdnp6c09RbksrL2JDYzRuaWNmbklybnltTStSaGNWTmZadXV1MTVSVnlHYTY0S1BtNDVRS0FXZXUwbmhUQkRRWXdGRnNILzlUWk1STjJsYkh0NFloL2NWRWgzSG9DWUZqMkFnTVVvYjhLbjFLVmlET3N2ZThqbWg2OHVwVWhtSDZJN0hlWGkxWWRUSFVqNkpobmFGblAybG9BRDNybkpFSkZQb1ZLSmZQd2gyR2tYRDdGcUY1MEdSOUdiandYOGZiZmpZd29yZGtYczM1RG9wQTg4K1l1NCtTYnpnekpLRXdpSmZxMW9KUzhDbWVodWNPc0xGclJUV21ucUF6QjhEMDhUWXQ0TG9sQkttT0ZEcDFYVlhTVnFtYXhwSGt4enNvRzk3aHMvOXB3VzVUbEtERnVhd0YrM1NQZ3RoOGJCbFF4NmpJYVhlUm9TWXY0ajdram5oY3pxL0JGMitweWZEd1NBalNCalhOK0E0azRGOTVJSFgrZVBFd0Z6dUp0bVRDTGY5dlRBeFdFOG9jUzVlQlBlTytzRDRRdy9CMi8xbzdGQmhCeVlzdG9EM2pUYitzeDhnWS9jOUl2dnIzS09qWmdPU0R6VHVmeThNN1ZYaFB1Mlo3UFNOckw5L2ttQTZ5czV2MXRLbStqUWF3djMvUUhYNDJKOXk4aEEydUxrRmFOeU80WHhDVjB1clRwaUVXY0dNTXIrbE9FSnlkNytuTm1Ld2o4WkRFVit6UG1MSExsQ0hJQnRNdTR2TEs4dEkxbFp6K3dpZis5WklBZFQyY3ZJN2NPTk9VeHZubi9oZTFJRVBrNllhY2oycmUzaEtzcm1jSTgrbU80akxLOHRJMWxaeit3aWYrOVpJQWRUMlZvVDVQWDdUblZvTDMzS2VxclI3YnFjekYvRjdoY0UvMDRIbDBOMXZJczJWOEZaUS91aGN1U2JzTmpjeEJRYi9Ibkg5Nit2UC9sL2JIMDJRdjN0VmhIUXY5Y0Z1cUpVRWFzclR5ekNYYTBJcjFqa0xGOC9yaHZqY3Eyank2aTE1cjZJMTdlaWZDaXkrZFlXNnI2dlFYV085cFliTzJzbmlYWDJ5VHhWc29rRXlUTEJnODFVRC9jQ2NTbWZrNnF1d2NHUXRxeno5U2JxNjI0b3J5UTZ1MlpGWW5vNS8rRnFiaEhScXZOcExld0lFUXNHa2xqa3JTRENBNU5aVG9hYzk1RTVOemVod2g4U0NreW9oS09oUWExZkNadUhkdlc5RGVCcVU4WGlzMUx2YUVYVEJ3MDBHZ2RvS09PQ1NxcVZXZHZHaEtyTElqeWExMXlCcDJMTXR6T3JzOG8zLzlrbmx4U1ZhRVJ5cFdaZHNwQXpNc0V5anl6Z2dJVFBqWlRUK3ZrQk15ZHdtMHU2NU5MZVNqZUtJZmV4MjRUTjBodW4wSGxXaUhRSVUrM1l4NllwcmkxdERod3ozODNRcGhFeUtGaHcwaFpnMXI3bEd2MG5wVW9welF2dVNaY0NidTVzVTBWT0Zsd0p3VDlkN3Bnb1JuUWh1ZkZEQnlFZC9qazBLTStGNStFNms5SlZ1dDVBcXFxSWpEcU5UaWxrVGNaY2gzejErWW5OM1lzSGJQK0FqV0hqVmNZcUhNUGVNNjF1aXFlUWRxUEJSVURBS3FIeVh6RW9SeUxKQ0dubjM1MHVhSXM4ZHhQeFhjZ284Ui80UTZpTXBZVGFWSElPcEhKbldoSm1Jcng1SDJiY0xiZlQ1L1FtTUlNVzVMZ291czE1eS9BSnJSMG5WbWVWY01KaXhVcjh4Qjh3T2Flc3FZYWRGeXl2TFNOWldjL3NJbi92V1NBSFU5a09Zb2dndWw0NHpJWjYxTHJvRmdYS0dkb1djL2FXZ0FQZXVja1FrVStoVVBiVmMwODBha2toTFhPcjdjZzhWRVV2WmJ6MEhYOGhQRnNhYlVENnIrYTJNTGwwRk55WjJFSFlrVjd6QUIvV05BRVpMcTNhdXYrcDdPYnZYN3MvcExsUjRZZ0tWQ1JPQlZ4bE44ZzNYV0tuMzY5TjFqbG9zcVJCZERNZkpCQmJEVHpjazg4M0RZSjJOTmRWUVlqT3Fnc2JLbmxxOFkrUGoyN2Q1d0MrYVpLUzVDLzdDZVN1OGZySWdiZ2luaGY3USt3MjE4aDlBdEtUWENRaWxnZXVSTEk2b2ZKVGRXdHlIQkNjYU5yN1g5aGdwclIrWmtSRWV3UW0wamltTjduQzd5eXZMU05aV2Mvc0luL3ZXU0FIVTlrOHVaRVVQckIyVjFMbThsT3kzYzgzSEljUlc0RTE2QjdsY3BMSHFaYWVwRGhrd29DL01hdVFMTm81aUVXMmV1Y2VqbWZnYVpOTEcxbEVRUzlvR1pCTUR4aG5RZ3Evam83bkpZeFdHaHBERkU2U3NoU05wa2MrM3VrWG5nYWRmaUg5TjgwQVBYSVh2dThxais3NGNITGZPbERMN0R2enpzT1FuSysvYkNjNG5oQTAxa3NOV1BpTGprQWI4VXRLSnE0aU5PTCtFREV6NnJmWW5hNkVEWUQ3bnRzL1NPTE4zUzV4VVF3RlFSLytMVFRwN1JidWdaMis2Yk1xQXlacVllOHNyeTBqV1ZuUDdDSi83MWtnQjFQYjVyT2FSd20xSGZncmxjZzFaRWczUlVubk9oRjBZWUJ5VVlYZEJPRGs3cFBNbDZTMWFsOVNySGZneW1UT2RJTWJYSkZiVjcyQlFsandVSzk2R1YzYVFvaE1qazAvSStSS2RpMDg5RGdvTWJ3QTMrVmMvL2VIcWg3NzZZTmVGaHdrTnE5QWRESjRuL0xSRDNXdFlKWEFTdDNpdkM0dTlRQlRmYi92Q21OSmkvZnphZXM0b0pBS3VTYzBDbythdTZSWnlweDVENWpMTm1YTTNGOFlacGc4eVZnUVh3R293OUY1M1RQdHdFTGhFYkNkVUpPZyszV3ZMWFJrV2NwWmFsZzRLMTU5YUVNL3Z3WXdDcTM0bHhrU0ZobEt5VFVnNVJzWGZSTHBhTWhtMGVaU0hkdW9ESE5mNFoxb2dnWkd6aWtvR29wOGMvenJvV0JvTi9hVkttbjhzNFR5RStVQlFlenYxZkxCZVV5QkdiSDhKWEEvNXUyMThFWkJCUXR3M29xRXY4eUoyRGNWZEtOeG16dEI4TG1uSCcpXFxuXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLpobXpnaIt55m75b2VXCIsXCJwYXRoXCI6XCJwd2QtbG9naW5cIixcInJ1bGVcIjpcImpzOlxcbnZhciByZXMgPSB7fTtcXG52YXIgZCA9IFtdO1xcbnZhciBpc2xvZ2luID0gZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9pc2xvZ2luLnR4dCcsIHt9KTtcXG5pZiAoaXNsb2dpbiA9PT0gXFxcIjFcXFwiKSB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB1cmw6IFxcXCJwdXRWYXIoJ215X2FjY291bnQnLGlucHV0KTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+S9oOeahOi0puWPt+aYrycgKyBpbnB1dDtcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICdpbnB1dCcsXFxuICAgICAgICB0aXRsZTogJ+i0puWPtycsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIG9uQ2hhbmdlOiBcXFwicHV0VmFyKCdteV9hY2NvdW50JyxpbnB1dClcXFwiLFxcbiAgICAgICAgICAgIHR5cGU6ICd0ZXh0YXJlYScsXFxuICAgICAgICAgICAgaGVpZ2h0OiAxLFxcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZ2V0VmFyKCdteV9hY2NvdW50JylcXG4gICAgICAgIH1cXG4gICAgfSk7XFxuXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB1cmw6IFxcXCJwdXRWYXIoJ215X3Bhc3N3b3JkJyxpbnB1dCk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/kvaDnmoTlr4bnoIHmmK8nICsgaW5wdXRcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICdpbnB1dCcsXFxuICAgICAgICB0aXRsZTogJ+WvhueggScsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIG9uQ2hhbmdlOiBcXFwicHV0VmFyKCdteV9wYXNzd29yZCcsaW5wdXQpXFxcIixcXG4gICAgICAgICAgICB0eXBlOiAndGV4dGFyZWEnLFxcbiAgICAgICAgICAgIGhlaWdodDogMSxcXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IGdldFZhcignbXlfcGFzc3dvcmQnKVxcbiAgICAgICAgfVxcbiAgICB9KVxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLigJzigJzlpKfkvJrlkZjvvJ8o5YWI54K55oiRKeKAneKAnVxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiLFxcbiAgICAgICAgdXJsOiAkKFxcXCLkuI3mmK/lpKfkvJrlkZjliKvngrnnoa7orqTvvIzlkKbliJnlkI7mnpzoh6rotJ9cXFwiKS5jb25maXJtKCgpID0+IHtcXG4gICAgICAgICAgICBwdXRWYXIoXFxcImlzdmlwXFxcIiwgXFxcIjFcXFwiKTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/kvaDpgInmi6nkuoblpKfkvJrlkZjjgILnpZ3lpb3ov5Ao4pyq4pa94pyqKVxcXCJcXG4gICAgICAgIH0pXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLigJzigJznmbvlvZUo5YaN54K55oiRKeKAneKAnVxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiLFxcbiAgICAgICAgdXJsOiAkKFxcXCLnoa7orqTnmbvlvZXvvJ9cXFwiKS5jb25maXJtKCgpID0+IHtcXG4gICAgICAgICAgICBwdXRWYXIoXFxcImxvZ2luaW5nXFxcIiwgXFxcIjFcXFwiKTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/kvaDpgInmi6nkuobnmbvlvZXjgILnpZ3lpb3ov5Ao4pyq4pa94pyqKVxcXCJcXG4gICAgICAgIH0pXFxuICAgIH0pO1xcbiAgICBpZiAoZ2V0VmFyKFxcXCJsb2dpbmluZ1xcXCIpID09PSBcXFwiMVxcXCIpIHtcXG4gICAgICAgIGlmIChnZXRWYXIoJ215X2FjY291bnQnKSAhPSAnJyAmJiBnZXRWYXIoJ215X3Bhc3N3b3JkJykgIT0gJycpIHtcXG4gICAgICAgICAgICAvLyBUT0RPIOWQkOS9rOivtOi/memHjOWPr+S7peaUueaIkCAkLnJlcXVpcmUg55So5rOVICAgICAgICAgIFxcbiAgICAgICAgICAgIGV2YWxQcml2YXRlSlMoXFxcImR0ZDFQM2RURUlUb25zZ3JORmZvQmlnaTVsamF6MFBlR21ibU1qanI5SDVuZnZzbkJ3N0pGcDM3Y24zZWdxdTB5LzB3VFcyb1U3cXRNd1FJQWlMaEVTVktCbEtrUnZXMHBuUERkSGw3UEd3d0RUNUdNMXZCc29nYjdZRHB3bXdWOHJ0dGFkME81WUpCdnBqWDI5aFVCcFNzaWFvN2wzVWVienhOQVdZaWo3WXdIV2h0MGpWYmg1U0w3UFhWbzE0OWZQU1R1eGw4QSt2TFVXaSsyV3hHck9aK1F2dHJZSW4yOEJxUzhQUzd6ZjBSMHlyOWhYempiTU9PWDJDT2RWWUtQZGJHc3h6a2xWNVgyTExtS2JQZ0VmUUVsQ2dNWnBZdW5lMEk4T3lJNTVITEs4dEkxbFp6K3dpZis5WklBZFQyZFRRdkNCYitpSGpwUjZLME1yMGRmYy9qclRkLytubXNtV3Jraml0dXE4eDJoN1UzYlptYXhrcVlyeFNvcHJMaVp2bkJrU3ZFb0lpcVVVT0tpbUN5MDFmM3RSZlNRQmVSNWxnVDVBL3hxZ2QyOGFFcXNzaVBKclhYSUduWXN5M01MWlJoU0x3NWtkU1UzWStkeUNhNlpjSUR4bE9HZVNGTG1JME9DRmJwWmU5Ylk3bktVT2FpMytUSHNhRmlFRXFwZC82blVRRjRUWlJCZ1ZxallFRndXSnlLQUs2REFxb1J2QjJUMGlmMndVdk9sREw3RHZ6enNPUW5LKy9iQ2M0bnlaeGREZlFYTjZScUIraTZOZ1RiQ2pOZDRURlg1ZldCdkhhNXBIclRTWkFoVFc5d0ZBNXdzQURCOTV5K0p4Mlg5UWs0R0xDR3N0Z0djbUhtOTZhcDF1V3ErSzh2R0VaRWJFamtVNTJ0TVM1eno2Z203WWhYZjhlQllCbUVhaUx1TWVVNzVHZTJxUzZ1T29qMjJJVEVVY3NyeTBqV1ZuUDdDSi83MWtnQjFQWVpOeW5YTGwxdGZvRFkzSFpnUGFrZjZEK0FEelFZcXhxUktaQ3RsTkl5YTlrOEM0SDdmYmhMRFhkV0Ezb1Y1eVVPZ2FTWEsxT000MEZ4TnlOWHBBL1pLUzZnWTNCMS9WMit6cHorUTdDbXVlNStxYU8wWHJEUDE1aGpTNGJ4bldyT2xETDdEdnp6c09RbksrL2JDYzRuWHhla3VvVFZVUlk3ZWgrZElGNFFPYVhtYk5qWU5raXFuQWQ4NUZyWEtYb2VnSlpDODVCNEpWcU9XY3VlaXBOYUh5L2R3QWhLcG5LLzVKTzdaNnlhMmxzMi9KdlBPQ1A5MWU2ZzRITytZcUVwTHFCamNIWDlYYjdPblA1RHNLYTVucHJia0lQMmtuRFhYcXRNWUdSZGNpZ2VJUnorT0htbktMbS8rV0NQYTA2MThFcXZNc0dnOWZwdnRVbzIvdG0wUnpZWWk4a3VGR29wVHlvaWtEd2kzY3NyeTBqV1ZuUDdDSi83MWtnQjFQYTFBRGt2aXZrbmNFaFBXUDR3WENhVHd3cFowRzYrWVR2eXA2OHRoRmRBTDV4eDkrblVhNWpXbUpVeXlRK3IxVXNENXNNcWluWTViL2VEVW54UktLQlR6cFF5K3c3ODg3RGtKeXZ2MnduT0p5ZEhQTTJhaDc4ZUF0dFNhaFZDRWIvbDNacWkyaEZraVpKOGd4UEMwUFk3L3F0Mk4wbjhsSEQ4KzcyS1RVRElxdVg1NjVDSVFuY0RXNUtmWFVaTE9uWmJzNlJUcVIwMEx1UEhBeFBJSGhpYWJqa052U1ZRT3p2M2F3ZXJhbWVTTzhzcnkwaldWblA3Q0ovNzFrZ0IxUGJaZkFBKzdnK1lkVE5wZXU5TFJSb29pRndWLzljdTVIcEVnWjJYNndhV2Rvb1kxZzVwQ1hLcE11L2Q3YzNoZFFmTEs4dEkxbFp6K3dpZis5WklBZFQyWTk2c2tCdE5sdk5BeDZJR3B6S044ZU4wT0pDbTJJcXNKSm5IWEpkMWZyeUNNbUVDRkVlYVZicHVLRzNWMDl3QUM3U1lpN2ovYkNCK0RDMTFCU2FadjhCM3BROVphQkhyQXNnK2ROUiswV010WmpLNFFsZnpzTXRnR3FkbmwvRCtcXFwiKVxcbiAgICAgICAgfVxcbiAgICB9XFxufSBlbHNlIGlmIChpc2xvZ2luID09PSBcXFwiMlxcXCIpIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwi4oCc4oCc5bey55m75b2V77yB4oCd4oCdXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuICAgICAgICB1cmw6ICQoXFxcIuehruiupOmHjeaWsOeZu+W9le+8nyjor7fkuI3opoHlsJ3or5XlpJrmrKHnmbvlvZXvvIzlkKbliJnotKblj7flvILluLgpXFxcIikuY29uZmlybSgoKSA9PiB7XFxuICAgICAgICAgICAgcHV0VmFyKFxcXCJpc2xvZ2luXFxcIiwgXFxcIjFcXFwiKTtcXG4gICAgICAgICAgICB3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9pc2xvZ2luLnR4dCcsIFxcXCIxXFxcIik7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5L2g6YCJ5oup5LqG55m75b2V44CC56Wd5aW96L+QKOKcquKWveKcqilcXFwiXFxuICAgICAgICB9KVxcbiAgICB9KTtcXG59IGVsc2UgaWYgKGlzbG9naW4gPT09IFxcXCIzXFxcIikge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLigJzigJzkvaDpnIDopoHljrvlrqLmiLfnq6/mlLnkuIvlr4bnoIHmiY3og73nmbvlvZXvvIHvvIHvvIHigJ3igJ1cXFwiLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG4gICAgICAgIHVybDogJChcXFwi56Gu6K6k55m75b2V77yfKOivt+S4jeimgeWwneivleWkmuasoeeZu+W9le+8jOWQpuWImei0puWPt+W8guW4uClcXFwiKS5jb25maXJtKCgpID0+IHtcXG4gICAgICAgICAgICBwdXRWYXIoXFxcImlzbG9naW5cXFwiLCBcXFwiMVxcXCIpO1xcbiAgICAgICAgICAgIHdyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2lzbG9naW4udHh0JywgXFxcIjFcXFwiKTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/kvaDpgInmi6nkuobnmbvlvZXjgILnpZ3lpb3ov5Ao4pyq4pa94pyqKVxcXCJcXG4gICAgICAgIH0pXFxuICAgIH0pO1xcbn0gZWxzZSB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIuKAnOKAnOeCueWHu+i/m+WFpeeZu+W9lemhtemdouKAneKAnVxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiLFxcbiAgICAgICAgdXJsOiAkKFxcXCLnoa7orqTnmbvlvZXvvJ8o6K+35LiN6KaB5bCd6K+V5aSa5qyh55m75b2V77yM5ZCm5YiZ6LSm5Y+35byC5bi4KVxcXCIpLmNvbmZpcm0oKCkgPT4ge1xcbiAgICAgICAgICAgIHB1dFZhcihcXFwiaXNsb2dpblxcXCIsIFxcXCIxXFxcIik7XFxuICAgICAgICAgICAgd3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvaXNsb2dpbi50eHQnLCBcXFwiMVxcXCIpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+S9oOmAieaLqeS6hueZu+W9leOAguelneWlvei/kCjinKrilr3inKopXFxcIlxcbiAgICAgICAgfSlcXG4gICAgfSk7XFxufVxcbnJlcy5kYXRhID0gZDtcXG5zZXRSZXN1bHQocmVzKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIueZu+W9lemhtemdolwiLFwicGF0aFwiOlwibmV3bG9naW5cIixcInJ1bGVcIjpcImpzOlxcbnZhciByZXMgPSB7fTtcXG52YXIgZCA9IFtdO1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBcXFwi4oCc4oCc5pa55rOV5LiA4oCd4oCdXFxcIixcXG4gICAgdXJsOiAnaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKFxcXCJsX2lkXFxcIixcXFwiMVxcXCIpO3JlZnJlc2hQYWdlKCk7XFxcInRvYXN0Oi8v5Yi35paw5oiQ5YqfXFxcIicsXFxuICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbn0pO1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBcXFwi4oCc4oCc5pa55rOV5LqM4oCd4oCdXFxcIixcXG4gICAgdXJsOiAnaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKFxcXCJsX2lkXFxcIixcXFwiMlxcXCIpO3JlZnJlc2hQYWdlKCk7XFxcInRvYXN0Oi8v5Yi35paw5oiQ5YqfXFxcIicsXFxuICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbn0pO1xcbmlmIChnZXRWYXIoXFxcImxfaWRcXFwiKSA9PSBcXFwiMVxcXCIpIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn5pON5L2c5oyH5byVIOKRoOWFiOeCueWHu+S4i+aWueesrOS4gOatpei/m+WOu+WTlOWTqeaJi+acuueJiOe9kemhteeZu+W9lei0puWPtyDikaHov5Tlm57nm7TmjqXngrnnrKzkuozmraXnmbvlvZXnhLblkI7mjInmj5DnpLrnmbvlvZUg4oCc4oCc5rOoOuaWueazleS4gOS4jeWPr+eUqOWGjemHh+eUqOaWueazleS6jOKAneKAnScsXFxuICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCdcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIuKAnOKAnDEuIOeCueaIkeWOu+e9kemhteeZu+W9leWQjuiHquWKqOiOt+WPlmNvb2tpZeKAneKAnVxcXCIsXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL3BhZ2UvY2tcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwi4oCc4oCcMi4g5YaN54K55oiR55m75b2V4oCd4oCdXFxcIixcXG4gICAgICAgIHVybDogXFxcImhpa2VyOi8vcGFnZS93ZWJsb2dpblxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxuICAgIH0pO1xcbn1cXG5pZiAoZ2V0VmFyKFxcXCJsX2lkXFxcIikgPT0gXFxcIjJcXFwiKSB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIuaTjeS9nOaMh+W8lSDikaDlhYjngrnlh7vkuIvmlrnnrKzkuIDmraXov5vljrvlk5Tlk6nmiYvmnLrniYjnvZHpobXnmbvlvZXotKblj7cg4pGh54K55Ye75Y+z5LiL6KeS6K6+572u4oaS5p+l55yL5rqQ56CB4oaS5Y6f55Sf55WM6Z2iIOKRouWkjeWItuacgOS4iuaWuei+k+WFpeahhumHjOeahOmTvuaOpSDikaPov5Tlm57pppbpobXmiorpk77mjqXovpPlhaXmoYblhoUg4pGk54K55Ye756ys5LqM5q2l77yM5oyJ5o+Q56S655m75b2V5Y2z5Y+vXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0J1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn5L+d5a2YJyxcXG4gICAgICAgIHVybDogXFxcInZhciBjayA9ICdTRVNTREFUQScraW5wdXQuc3BsaXQoJ1NFU1NEQVRBJylbMV0uc3BsaXQoJ3NpZCcpWzBdLnJlcGxhY2UoJ++8m++8mycsJzsgJyk7d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvYmlsaWNrLnR4dCcsY2sucmVwbGFjZSgn77yb77ybJywnOyAnKSk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/mgqjnmoRjb29raWXmmK86Jytja1xcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ2lucHV0JyxcXG4gICAgICAgIGRlc2M6ICfor7fovpPlhaXpk77mjqUnXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLigJzigJwxLiDngrnmiJHljrvnvZHpobXnmbvlvZXlkI7miYvliqjojrflj5Zjb29raWXigJ3igJ1cXFwiLFxcbiAgICAgICAgdXJsOiBcXFwiaHR0cHM6Ly9tLmJpbGliaWxpLmNvbS9cXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwi4oCc4oCcMi4g54K55oiR55m75b2V4oCd4oCdXFxcIixcXG4gICAgICAgIHVybDogXFxcImhpa2VyOi8vcGFnZS93ZWJsb2dpblxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxuICAgIH0pO1xcbn1cXG5yZXMuZGF0YSA9IGQ7XFxuc2V0UmVzdWx0KHJlcyk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCJjb29raWXojrflj5ZcIixcInBhdGhcIjpcImNrXCIsXCJydWxlXCI6XCJqczpcXG5zZXRSZXN1bHQoW3tcXG4gICAgY29sX3R5cGU6IFxcXCJ4NV93ZWJ2aWV3X3NpbmdsZVxcXCIsXFxuICAgIHVybDogXFxcImh0dHBzOi8vbS5iaWxpYmlsaS5jb20vXFxcIixcXG4gICAgZGVzYzogXFxcImZsb2F0JiYxMDAlXFxcIixcXG4gICAgZXh0cmE6IHtcXG4gICAgICAgIGpzOiAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgICAgICBmYmEubG9nKGRvY3VtZW50LmNvb2tpZSlcXG4gICAgICAgICAgICBmeV9icmlkZ2VfYXBwLndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2JpbGljay50eHQnLCBmeV9icmlkZ2VfYXBwLmdldENvb2tpZSgnaHR0cHM6Ly9tLmJpbGliaWxpLmNvbS8nKSk7XFxuICAgICAgICB9KVxcbiAgICB9XFxufV0pXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLpobXpnaItd2Vi55m75b2VXCIsXCJwYXRoXCI6XCJ3ZWJsb2dpblwiLFwicnVsZVwiOlwianM6XFxudmFyIHJlcyA9IHt9O1xcbnZhciBkID0gW107XFxudmFyIGNrID0gZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9iaWxpY2sudHh0XFxcIikucmVwbGFjZSgv77yb77ybIC9nLCc7ICcpO1xcbmxvZyhjaylcXG52YXIgbG9naW5fdXJsID0gXFxcImh0dHBzOi8vcGFzc3BvcnQuYmlsaWJpbGkuY29tL2xvZ2luL2FwcC90aGlyZD9hcHBrZXk9MjdlYjUzZmM5MDU4ZjhjMyZhcGk9aHR0cCUzQSUyRiUyRmxpbmsuYWNnLnR2JTJGZm9ydW0ucGhwJnNpZ249NjdlYzc5ODAwNDM3MzI1M2Q2MDExNGNhYWFkODlhOGNcXFwiO1xcbnZhciBsb2NhdGlvbiA9IEpTT04ucGFyc2UoZmV0Y2gobG9naW5fdXJsLCB7XFxuICAgIGhlYWRlcnM6IHtcXG4gICAgICAgIFxcXCJ1c2VyLWFnZW50XFxcIjogXFxcIk1vemlsbGEvNS4wIChMaW51eDsgQW5kcm9pZCAxMDsgTTIwMDdKM1NDIEJ1aWxkL1FLUTEuMjAwNDE5LjAwMjsgd3YpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vNC4wIENocm9tZS84My4wLjQxMDMuMTAxIE1vYmlsZSBTYWZhcmkvNTM3LjM2XFxcIixcXG4gICAgICAgIFxcXCJjb29raWVcXFwiOiBja1xcbiAgICB9LFxcbiAgICBtZXRob2Q6ICdHRVQnXFxufSkpLmRhdGFbJ2NvbmZpcm1fdXJpJ107XFxuLy9sb2cobG9jYXRpb24pO1xcblxcbnZhciBpbmZvID0gSlNPTi5wYXJzZShmZXRjaChsb2NhdGlvbiwge1xcbiAgICBoZWFkZXJzOiB7XFxuICAgICAgICBcXFwidXNlci1hZ2VudFxcXCI6IFxcXCJNb3ppbGxhLzUuMCAoTGludXg7IEFuZHJvaWQgMTA7IE0yMDA3SjNTQyBCdWlsZC9RS1ExLjIwMDQxOS4wMDI7IHd2KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzQuMCBDaHJvbWUvODMuMC40MTAzLjEwMSBNb2JpbGUgU2FmYXJpLzUzNy4zNlxcXCIsXFxuICAgICAgICBcXFwiY29va2llXFxcIjogY2tcXG4gICAgfSxcXG4gICAgbWV0aG9kOiAnR0VUJyxcXG4gICAgb25seUhlYWRlcnM6IHRydWUsXFxuICAgIHJlZGlyZWN0OiBmYWxzZVxcbn0pKS5oZWFkZXJzLmxvY2F0aW9uWzBdLnNwbGl0KFxcXCI/XFxcIilbMV0uc3BsaXQoXFxcIiZcXFwiKTtcXG5wdXRWYXIoXFxcIm15a2V5XFxcIixpbmZvWzBdLnNwbGl0KFxcXCI9XFxcIilbMV0pO1xcbnB1dFZhcihcXFwibXltaWRcXFwiLGluZm9bMV0uc3BsaXQoXFxcIj1cXFwiKVsxXSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogaW5mb1swXSxcXG4gICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0J1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBpbmZvWzFdLFxcbiAgICAgICAgY29sX3R5cGU6ICdyaWNoX3RleHQnXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLigJzigJzlpKfkvJrlkZjngrnmiJHigJ3igJ1cXFwiLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0XzJcXFwiLFxcbiAgICAgICAgdXJsOiAkKFxcXCLkuI3mmK/lpKfkvJrlkZjliKvngrnnoa7orqTvvIzlkKbliJnlkI7mnpzoh6rotJ9cXFwiKS5jb25maXJtKCgpID0+IHtcXG4gICAgICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9hY2Nlc3Nfa2V5LnR4dFxcXCIsZ2V0VmFyKFxcXCJteWtleVxcXCIpKTtcXG4gICAgICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9rZXkudHh0XFxcIixnZXRWYXIoXFxcIm15a2V5XFxcIikpO1xcbiAgICAgICAgICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3N0YXJpZC50eHRcXFwiLGdldFZhcihcXFwibXltaWRcXFwiKSk7XFxuICAgICAgICAgICAgLy9yZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/lpKfkvJrlkZjnmbvlvZXmiJDlip9cXFwiXFxuICAgICAgICB9KVxcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwi4oCc4oCc5peg5Lya5ZGY54K55oiR4oCd4oCdXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF8yXFxcIixcXG4gICAgICAgIHVybDogJChcXFwi54K55Ye755m75b2VXFxcIikuY29uZmlybSgoKSA9PiB7XFxuICAgICAgICAgICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvYWNjZXNzX2tleS50eHRcXFwiLGdldFZhcihcXFwibXlrZXlcXFwiKSk7XFxuICAgICAgICAgICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc3RhcmlkLnR4dFxcXCIsZ2V0VmFyKFxcXCJteW1pZFxcXCIpKTtcXG4gICAgICAgICAgICAvL3JlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+eZu+W9leaIkOWKn1xcXCJcXG4gICAgICAgIH0pXFxuICAgIH0pO1xcbiAgICBcXG5yZXMuZGF0YSA9IGQ7XFxuc2V0UmVzdWx0KHJlcyk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIEt55u05pKtXCIsXCJwYXRoXCI6XCJ6YlwiLFwicnVsZVwiOlwiaWYgKE1ZX1VSTC5zcGxpdCgnIycpWzFdID09ICcxJykge1xcbnZhciB6YmMxID0gJ2FsbCYyJjMmNiYxJjUmOSYxMCYxMSc7XFxudmFyIHpidzEgPSAn5YWo6YOoJue9kea4uCbmiYvmuLgm5Y2V5py6JuWoseS5kCbnlLXlj7Am6Jma5ouf5Li75pKtJueUn+a0uyblrabkuaAnO1xcbnZhciB6YmMyID0gJzAmMzMnO1xcbnZhciB6YncyID0gJ+m7mOiupOWwj+WIhuexuyblvbHpn7PppobvvIjnlJ/mtLvvvIknO1xcbnZhciB6YndvcmQxID0gemJ3MS5zcGxpdCgnJicpO1xcbnZhciB6YmNsYXNzMSA9IHpiYzEuc3BsaXQoJyYnKTtcXG52YXIgemJsYWIxID0gZ2V0VmFyKCd6YmxhYjEnLCAn5YWo6YOoJyk7XFxudmFyIHpia2V5MSA9IGdldFZhcignemJrZXkxJywgJ2FsbCcpO1xcblxcbnZhciB6YndvcmQyID0gemJ3Mi5zcGxpdCgnJicpO1xcbnZhciB6YmNsYXNzMiA9IHpiYzIuc3BsaXQoJyYnKTtcXG52YXIgemJsYWIyID0gZ2V0VmFyKCd6YmxhYjInLCAn6buY6K6k5bCP5YiG57G7Jyk7XFxudmFyIHpia2V5MiA9IGdldFZhcignemJrZXkyJywgJzAnKTtcXG5cXG4gICAgLypmb3IgKHZhciBpIGluIHpid29yZDEpIHtcXG4gICAgICAgIHZhciBhID0gemJ3b3JkMVtpXTtcXG4gICAgICAgIHZhciBiID0gemJjbGFzczFbaV07XFxuICAgICAgICB2YXIgYyA9IGEgKyAnJicgKyBiO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogYSA9PSB6YmxhYjEgPyBnZXRIZWFkKGEpIDogYSxcXG4gICAgICAgICAgICB1cmw6ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKGMpID0+IHtcXG4gICAgICAgICAgICAgICAgcHV0VmFyKFxcXCJ6YmxhYjFcXFwiLCBjLnNwbGl0KCcmJylbMF0pO1xcbiAgICAgICAgICAgICAgICBwdXRWYXIoXFxcInpia2V5MVxcXCIsIGMuc3BsaXQoJyYnKVsxXSk7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICAgICAgICAgIH0sIGMpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnZmxleF9idXR0b24nXFxuICAgICAgICB9KTtcXG4gICAgfSovXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+aQnOe0oicsXFxuICAgICAgICB1cmw6IFxcXCJwdXRWYXIoJ3piaycsaW5wdXQpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5q2j5Zyo5pCc57SiJztcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICdpbnB1dCcsXFxuICAgICAgICBkZXNjOiAn5L2g5oOz55yL5LuA5LmI55u05pKt77yfJ1xcbiAgICB9KTtcXG5cXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIGNvbF90eXBlOiAnYmlnX2JsYW5rX2Jsb2NrJ1xcbiAgICB9KTtcXG5cXG4gICAgZm9yICh2YXIgaSBpbiB6YndvcmQxKSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiB6YndvcmQxW2ldID09IHpibGFiMSA/IGdldEhlYWQoemJ3b3JkMVtpXSkgOiB6YndvcmQxW2ldLFxcbiAgICAgICAgICAgIHVybDogJCgpLmxhenlSdWxlKChuYW1lLCBrZXkpID0+IHtcXG4gICAgICAgICAgICAgICAgcHV0VmFyKCd6YmxhYjEnLCBuYW1lKTtcXG4gICAgICAgICAgICAgICAgcHV0VmFyKCd6YmtleTEnLCBrZXkpO1xcbiAgICAgICAgICAgICAgICBjbGVhclZhcignemJrJywgaW5wdXQpO1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcbiAgICAgICAgICAgIH0sIHpid29yZDFbaV0sIHpiY2xhc3MxW2ldKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgICAgICB9KTtcXG4gICAgfVxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgY29sX3R5cGU6ICdibGFua19ibG9jaydcXG4gICAgfSk7XFxuICAgIGZvciAodmFyIGkgaW4gemJ3b3JkMikge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogemJ3b3JkMltpXSA9PSB6YmxhYjIgPyBnZXRIZWFkKHpid29yZDJbaV0pIDogemJ3b3JkMltpXSxcXG4gICAgICAgICAgICB1cmw6ICQoKS5sYXp5UnVsZSgobmFtZSwga2V5KSA9PiB7XFxuICAgICAgICAgICAgICAgIHB1dFZhcignemJsYWIyJywgbmFtZSk7XFxuICAgICAgICAgICAgICAgIHB1dFZhcignemJrZXkyJywga2V5KTtcXG4gICAgICAgICAgICAgICAgY2xlYXJWYXIoJ3piaycsIGlucHV0KTtcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgICAgICAgICB9LCB6YndvcmQyW2ldLCB6YmNsYXNzMltpXSksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICAgICAgfSk7XFxuICAgIH1cXG59XFxuaWYgKGdldFZhcignemJrJykgIT0gJycpIHtcXG4gICAgdmFyIHpidXJsID0gXFxcImh0dHBzOi8vc2VhcmNoLmJpbGliaWxpLmNvbS9saXZlP2tleXdvcmQ9XFxcIiArIGdldFZhcignemJrJyk7XFxuICAgIGxvZyh6YnVybClcXG4gICAgdmFyIHF6ID0gXFxcImh0dHBzOi8vc2VhcmNoLmJpbGliaWxpLmNvbVxcXCI7XFxuICAgIHZhciBsaXZlID0gcXogKyBwYXJzZURvbUZvckh0bWwoZmV0Y2goemJ1cmwsIHtcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICBcXFwiVXNlci1BZ2VudFxcXCI6IFxcXCJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXT1c2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzQ5LjAuMjYyMy44NyBTYWZhcmkvNTM3LjM2XFxcIixcXG4gICAgICAgICAgICBcXFwiQ29va2llXFxcIjogXFxcIl91dWlkPTgyNDY3MzczLUM2QTEtNTdCQS1BRTAyLUE5QTZEMTc3Qzg4Nzk3MjQ4aW5mb2M7IGJ1dmlkMz0xN0M5QTJDQi04NTBCLTRDNzMtQjlERS02NERCMEU2REJBQkIxNDMxMDVpbmZvYzsgc2lkPWN5OTYxZnE3OyBycGRpZD18KHV8SkopfGt+bHwwSid1WXxZfHVrdW0pOyBMSVZFX0JVVklEPUFVVE84ODE2MDYxMDIyMTkzNDIwOyBic291cmNlPXNlYXJjaF9iYWlkdTsgUFZJRD0yMzsgZmluZ2VyPTE5ODQ5ODk1MDE7IGFycmFuZ2U9bWF0cml4XFxcIlxcbiAgICAgICAgfVxcbiAgICB9KSwgJ2JvZHkmJi5oZWFkbGluZS1saXZlJiZhJiZocmVmJyk7XFxuICAgIGxvZyhcXFwiMTIzOjo6XFxcIiArIGxpdmUpXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+S4u+aSrScsXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL3BhZ2UvemIyP3VybD1cXFwiK2xpdmUucmVwbGFjZShcXFwiP1xcXCIsXFxcIu+8n++8n1xcXCIpLnJlcGxhY2UoXFxcIiZcXFwiLFxcXCLvvIbvvIZcXFwiKSArICfvvIbvvIZwYWdlPWZ5cGFnZScsXFxuICAgICAgICBkZXNjOiAn5YWx5pyJJyArIHBhcnNlRG9tRm9ySHRtbChmZXRjaCh6YnVybCwge1xcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgXFxcIlVzZXItQWdlbnRcXFwiOiBcXFwiTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV09XNjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS80OS4wLjI2MjMuODcgU2FmYXJpLzUzNy4zNlxcXCIsXFxuICAgICAgICAgICAgICAgIFxcXCJDb29raWVcXFwiOiBcXFwiX3V1aWQ9ODI0NjczNzMtQzZBMS01N0JBLUFFMDItQTlBNkQxNzdDODg3OTcyNDhpbmZvYzsgYnV2aWQzPTE3QzlBMkNCLTg1MEItNEM3My1COURFLTY0REIwRTZEQkFCQjE0MzEwNWluZm9jOyBzaWQ9Y3k5NjFmcTc7IHJwZGlkPXwodXxKSil8a35sfDBKJ3VZfFl8dWt1bSk7IExJVkVfQlVWSUQ9QVVUTzg4MTYwNjEwMjIxOTM0MjA7IGJzb3VyY2U9c2VhcmNoX2JhaWR1OyBQVklEPTIzOyBmaW5nZXI9MTk4NDk4OTUwMTsgYXJyYW5nZT1tYXRyaXhcXFwiXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSksICdib2R5JiYuZmxvdy1sb2FkZXImJi5oZWFkbGluZS1saXZlJiYubnVtLXR4dCYmc3BhbiYmVGV4dCcpLnJlcGxhY2UoXFxcIlxcXFwoXFxcIiwgXFxcIlxcXCIpLnJlcGxhY2UoXFxcIlxcXFwpXFxcIiwgXFxcIlxcXCIpICsgJ+S4u+aSrScsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxuICAgIH0pO1xcbiAgICB0cnkge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+ebtOaSreS4rScsXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL3piMj91cmw9XFxcIitsaXZlLnJlcGxhY2UoXFxcIj9cXFwiLFxcXCLvvJ/vvJ9cXFwiKS5yZXBsYWNlKFxcXCImXFxcIixcXFwi77yG77yGXFxcIikucmVwbGFjZShcXFwic2VhcmNoX3R5cGU9bGl2ZV91c2VyXFxcIiwgXFxcIlxcXCIpICsgJ3BhZ2U9ZnlwYWdlJyxcXG4gICAgICAgICAgICBkZXNjOiAn5YWx5pyJJyArIHBhcnNlRG9tRm9ySHRtbChmZXRjaCh6YnVybCwge1xcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICBcXFwiVXNlci1BZ2VudFxcXCI6IFxcXCJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXT1c2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzQ5LjAuMjYyMy44NyBTYWZhcmkvNTM3LjM2XFxcIixcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJDb29raWVcXFwiOiBcXFwiX3V1aWQ9ODI0NjczNzMtQzZBMS01N0JBLUFFMDItQTlBNkQxNzdDODg3OTcyNDhpbmZvYzsgYnV2aWQzPTE3QzlBMkNCLTg1MEItNEM3My1COURFLTY0REIwRTZEQkFCQjE0MzEwNWluZm9jOyBzaWQ9Y3k5NjFmcTc7IHJwZGlkPXwodXxKSil8a35sfDBKJ3VZfFl8dWt1bSk7IExJVkVfQlVWSUQ9QVVUTzg4MTYwNjEwMjIxOTM0MjA7IGJzb3VyY2U9c2VhcmNoX2JhaWR1OyBQVklEPTIzOyBmaW5nZXI9MTk4NDk4OTUwMTsgYXJyYW5nZT1tYXRyaXhcXFwiXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KSwgJ2JvZHkmJi5oZWFkbGluZS1yb29tJiYubnVtLXR4dCYmc3BhbiYmVGV4dCcpLnJlcGxhY2UoXFxcIlxcXFwoXFxcIiwgXFxcIlxcXCIpLnJlcGxhY2UoXFxcIlxcXFwpXFxcIiwgXFxcIlxcXCIpICsgJ+ebtOaSremXtCcsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbiAgICAgICAgfSk7XFxuICAgIH0gY2F0Y2ggKGUpIHt9XFxufSBlbHNlIHtcXG4gICAgdmFyIHBhZ2UgPSBNWV9VUkwuc3BsaXQoJyMnKVsxXTtcXG4gICAgdmFyIHVybCA9IFxcXCJodHRwczovL2FwaS5saXZlLmJpbGliaWxpLmNvbS9yb29tL3YzL2FyZWEvZ2V0Um9vbUxpc3Q/cGxhdGZvcm09d2ViJnBhcmVudF9hcmVhX2lkPVxcXCIgKyB6YmtleTEgKyBcXFwiJmNhdGVfaWQ9MCZhcmVhX2lkPVxcXCIgKyB6YmtleTIgKyBcXFwiJnBhZ2U9XFxcIiArIHBhZ2UgKyBcXFwiJnBhZ2Vfc2l6ZT0zMCZ0YWdfdmVyc2lvbj0xXFxcIjtcXG4gICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKHJlcXVlc3QodXJsKSk7XFxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwganNvbi5kYXRhLmxpc3QubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgIHZhciByID0ge307XFxuICAgICAgICB2YXIgaiA9IGpzb24uZGF0YS5saXN0W2ldO1xcbiAgICAgICAgci5waWNfdXJsID0gai5zeXN0ZW1fY292ZXIgKyBSZWZlcmVyO1xcbiAgICAgICAgci51cmwgPSAnaHR0cHM6Ly9hcGkubGl2ZS5iaWxpYmlsaS5jb20veGxpdmUvd2ViLXJvb20vdjEvcGxheVVybC9wbGF5VXJsP2NpZD0nICsgai5yb29taWQgKyAnJnBsYXRmb3JtPWg1Jm90eXBlPWpzb24mcXVhbGl0eT0wJyArIGBAbGF6eVJ1bGU9VGV4dC5qczpKU09OLnBhcnNlKGlucHV0KS5kYXRhLmR1cmxbMF0udXJsYDtcXG4gICAgICAgIHIudGl0bGUgPSBqLnRpdGxlO1xcbiAgICAgICAgci5kZXNjID0gJ1VQ8J+Qt++8micgKyBqLnVuYW1lO1xcbiAgICAgICAgci5jb2xfdHlwZSA9IFxcXCJtb3ZpZV8yXFxcIjtcXG4gICAgICAgIGQucHVzaChyKTtcXG4gICAgfVxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIumhtemdoi3nm7Tmkq1cIixcInBhdGhcIjpcInpiMlwiLFwicnVsZVwiOlwianM6XFxudmFyIHJlcyA9IHt9O1xcbnZhciBkID0gW107XFxudmFyIFJlZmVyZXIgPSBcXFwiQFJlZmVyZXI9aHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tXFxcIjtcXG5pZiAoTVlfVVJMLmluZGV4T2YoXFxcInNlYXJjaF90eXBlPWxpdmVfdXNlclxcXCIpICE9IC0xKSB7XFxuICAgIHZhciBsaXZlID0gcGFyc2VEb21Gb3JBcnJheShmZXRjaChNWV9VUkwsIHtcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICBcXFwiVXNlci1BZ2VudFxcXCI6IFxcXCJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXT1c2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzQ5LjAuMjYyMy44NyBTYWZhcmkvNTM3LjM2XFxcIixcXG4gICAgICAgICAgICBcXFwiQ29va2llXFxcIjogXFxcIl91dWlkPTgyNDY3MzczLUM2QTEtNTdCQS1BRTAyLUE5QTZEMTc3Qzg4Nzk3MjQ4aW5mb2M7IGJ1dmlkMz0xN0M5QTJDQi04NTBCLTRDNzMtQjlERS02NERCMEU2REJBQkIxNDMxMDVpbmZvYzsgc2lkPWN5OTYxZnE3OyBycGRpZD18KHV8SkopfGt+bHwwSid1WXxZfHVrdW0pOyBMSVZFX0JVVklEPUFVVE84ODE2MDYxMDIyMTkzNDIwOyBic291cmNlPXNlYXJjaF9iYWlkdTsgUFZJRD0yMzsgZmluZ2VyPTE5ODQ5ODk1MDE7IGFycmFuZ2U9bWF0cml4XFxcIlxcbiAgICAgICAgfVxcbiAgICB9KSwgJ2JvZHkmJi5saXZlLXVzZXItd3JhcCYmbGknKTtcXG4gICAgZm9yICh2YXIgaSBpbiBsaXZlKSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBwYXJzZURvbUZvckh0bWwobGl2ZVtpXSwgJy5pdGVtLXJpZ2h0JiZQJiZUZXh0JyksXFxuICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly9hcGkubGl2ZS5iaWxpYmlsaS5jb20veGxpdmUvd2ViLXJvb20vdjEvcGxheVVybC9wbGF5VXJsP2NpZD0nICsgcGFyc2VEb20obGl2ZVtpXSwgJ2EmJmhyZWYnKS5zcGxpdChcXFwibGl2ZS5iaWxpYmlsaS5jb20vXFxcIilbMV0uc3BsaXQoXFxcIj9mcm9tXFxcIilbMF0gKyAnJnBsYXRmb3JtPWg1Jm90eXBlPWpzb24mcXVhbGl0eT0wJyArIGBAbGF6eVJ1bGU9VGV4dC5qczpKU09OLnBhcnNlKGlucHV0KS5kYXRhLmR1cmxbMF0udXJsYCxcXG4gICAgICAgICAgICAvL2ltZzogcGFyc2VEb21Gb3JIdG1sKGxpdmVbaV0sICcubGF6eS1pbWcmJmltZyYmc3JjJykgKyBSZWZlcmVyLFxcbiAgICAgICAgICAgIGRlc2M6IHBhcnNlRG9tRm9ySHRtbChsaXZlW2ldLCAnLml0ZW0tcmlnaHQmJi5zdGF0dXMmJlRleHQnKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3BpY18xJ1xcbiAgICAgICAgfSk7XFxuICAgIH1cXG59IGVsc2Uge1xcbiAgICB2YXIgbGl2ZSA9IHBhcnNlRG9tRm9yQXJyYXkoZmV0Y2goTVlfVVJMLCB7XFxuICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgXFxcIlVzZXItQWdlbnRcXFwiOiBcXFwiTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV09XNjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS80OS4wLjI2MjMuODcgU2FmYXJpLzUzNy4zNlxcXCIsXFxuICAgICAgICAgICAgXFxcIkNvb2tpZVxcXCI6IFxcXCJfdXVpZD04MjQ2NzM3My1DNkExLTU3QkEtQUUwMi1BOUE2RDE3N0M4ODc5NzI0OGluZm9jOyBidXZpZDM9MTdDOUEyQ0ItODUwQi00QzczLUI5REUtNjREQjBFNkRCQUJCMTQzMTA1aW5mb2M7IHNpZD1jeTk2MWZxNzsgcnBkaWQ9fCh1fEpKKXxrfmx8MEondVl8WXx1a3VtKTsgTElWRV9CVVZJRD1BVVRPODgxNjA2MTAyMjE5MzQyMDsgYnNvdXJjZT1zZWFyY2hfYmFpZHU7IFBWSUQ9MjM7IGZpbmdlcj0xOTg0OTg5NTAxOyBhcnJhbmdlPW1hdHJpeFxcXCJcXG4gICAgICAgIH1cXG4gICAgfSksICdib2R5JiYubGl2ZS1yb29tLXdyYXAmJmxpJyk7XFxuICAgIGZvciAodmFyIGkgaW4gbGl2ZSkge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogcGFyc2VEb21Gb3JIdG1sKGxpdmVbaV0sICdwJiZUZXh0JyksXFxuICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly9hcGkubGl2ZS5iaWxpYmlsaS5jb20veGxpdmUvd2ViLXJvb20vdjEvcGxheVVybC9wbGF5VXJsP2NpZD0nICsgcGFyc2VEb20obGl2ZVtpXSwgJ2EmJmhyZWYnKS5zcGxpdChcXFwibGl2ZS5iaWxpYmlsaS5jb20vXFxcIilbMV0uc3BsaXQoXFxcIj9mcm9tXFxcIilbMF0gKyAnJnBsYXRmb3JtPWg1Jm90eXBlPWpzb24mcXVhbGl0eT0wJyArIGBAbGF6eVJ1bGU9VGV4dC5qczpKU09OLnBhcnNlKGlucHV0KS5kYXRhLmR1cmxbMF0udXJsYCxcXG4gICAgICAgICAgICAvL2ltZzogcGFyc2VEb20obGl2ZVtpXSwgJy5sYXp5LWltZyYmaW1nJiZzcmMnKSArIFJlZmVyZXIsXFxuICAgICAgICAgICAgZGVzYzogJ1VQ8J+Qt++8micgKyBwYXJzZURvbUZvckh0bWwobGl2ZVtpXSwgJy51bmFtZSYmc3BhbiYmVGV4dCcpICsgJ8K35Lq65rCUJyArIHBhcnNlRG9tRm9ySHRtbChsaXZlW2ldLCAnLmxpdmUtbnVtJiZzcGFuJiZUZXh0JyksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdwaWNfMSdcXG4gICAgICAgIH0pO1xcbiAgICB9XFxufVxcbnJlcy5kYXRhID0gZDtcXG5zZXRSZXN1bHQocmVzKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIkFQSVwiLFwicGF0aFwiOlwiYXBpXCIsXCJydWxlXCI6XCJldmFsUHJpdmF0ZUpTKFxcXCJMN0F2SjQxQysra2xsQk1QRzlKUlRVelF2RWpKWHdScmZSaUptRUJ1ZlVRQTJISFd0UUxSaEF3cVNNek1VZElBcld1V0ZUTjQ3MVE3dnVraFhiUGJlUndoZGZpUU0rZmR0S0czTktoUXpLZGQ3clNCd2lwWTl0MG1KMHFPOUR4M010ZjFkWDNrMXkvOFd1b1hQTVFuQ1hYRE1ROTdod2V6b3Q1MklPeUtzRzY0T3E1YUdGTjVkaXFUMXRtMjlTcC9HcnRWSlg4Znlqb05xNFRycGZ4aUhnOFlIU0JsQVBEa0VsWmovdG1qL2FDN0tSekljbnd0T29MamVCK0FraW9tL1NadXMvKzFScm5ZcHltYnRrSk5yWTcyUHpPdGRZTkwxak9vUTUvNFlrVDJaWVpwbExtSTBjVmdXNktCU1FqcUoxTklhd1FnMGg0cVJOVzBhWU1XRFUzL0ZHanVjNURCU3NoMFc2bUs4R0UzNFNZbFI0RGdrbU1SbXlHdnF5aGNSeW9GZURhSGQ3aklpaGRqY3lWZzRrLytkZnF2dzdmcldaV3VJMXZjOVlNPVxcXCIpXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLpobXpnaIt5LiA57qn77yI5ouT5bGV77yJXCIsXCJwYXRoXCI6XCJuZXdkZXRpYWxcIixcInJ1bGVcIjpcImpzOlxcbnZhciByZXMgPSB7fTtcXG52YXIgZCA9IFtdO1xcbnZhciBSZWZlcmVyID0gJ0BSZWZlcmVyPWh0dHA6Ly93d3cuYmlsaWJpbGkuY29tJztcXG5pZiAoIWZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc2V0dGluZy50eHQnKSkge1xcbiAgICB3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zZXR0aW5nLnR4dCcsICflvIDlkK8s5YWz6ZetJyk7XFxufVxcbnZhciBzX3R5cGUgPSBmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3NldHRpbmcudHh0Jyk7XFxucHV0VmFyKCdyZXBseV90eXBlJywgc190eXBlLnNwbGl0KCcsJylbMF0pO1xcbnB1dFZhcignbGlrZV90eXBlJywgc190eXBlLnNwbGl0KCcsJylbMV0pO1xcbi8v6aKc6ImyXFxudmFyIENvbG9ycyA9IFtcXFwiNFxcXCIsIFxcXCI1XFxcIiwgXFxcIjBcXFwiLCBcXFwiMVxcXCIsIFxcXCJBXFxcIiwgXFxcIjNcXFwiLCBcXFwiOFxcXCIsIFxcXCI5XFxcIiwgXFxcIkJcXFwiLCBcXFwiQ1xcXCIsIFxcXCJEXFxcIiwgXFxcIkVcXFwiLCBcXFwiNlxcXCIsIFxcXCI3XFxcIiwgXFxcIkZcXFwiXTtcXG52YXIgQ29sb3IgPSAnIyc7XFxuaWYgKGdldFZhcignWVMnKSA9PSAn6ZqP5py6Jykge1xcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkrKykge1xcbiAgICAgICAgdmFyIG51bSA9IE1hdGguY2VpbCgoTWF0aC5yYW5kb20oKSAqIDE1KSkgLSAxO1xcbiAgICAgICAgdmFyIENvbG9yID0gQ29sb3IgKyBDb2xvcnNbbnVtXTtcXG4gICAgfVxcbn0gZWxzZSB7XFxuICAgIHZhciBDb2xvciA9IFxcXCIjRkE3Mjk4XFxcIjtcXG59XFxuXFxuZnVuY3Rpb24gZ2V0SGVhZCh0aXRsZSkge1xcbiAgICByZXR1cm4gJ+KAmOKAmOKAmeKAmTxzdHJvbmc+PGZvbnQgY29sb3I9XFxcIicgKyBDb2xvciArICdcXFwiPicgKyB0aXRsZSArICc8L2Zyb250Pjwvc3Ryb25nPic7XFxufVxcbnZhciBwYWdlbnVtID0gTVlfVVJMLnNwbGl0KCcjJylbMV07XFxudmFyIHJ4ID0gZmV0Y2goJ2hpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0Jywge30pO1xcbnZhciB3ciA9IGBAbGF6eVJ1bGU9LmpzOndyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHRcXFwiLGlucHV0KTtyZWZyZXNoUGFnZShmYWxzZSk7XFxcInRvYXN0Oi8v5YiH5o2i5oiQ5YqfXFxcImA7XFxudmFyIHNfdGFiID0gZmV0Y2goJ2hpa2VyOi8vZmlsZXMvYmlsaS/mlLbol48udHh0Jywge30pO1xcbnZhciBzciA9IGBAbGF6eVJ1bGU9LmpzOndyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL+aUtuiXjy50eHRcXFwiLGlucHV0KTtyZWZyZXNoUGFnZShmYWxzZSk7XFxcInRvYXN0Oi8v5YiH5o2i5oiQ5YqfXFxcImA7XFxuXFxuaWYgKHJ4ID09ICfmjpLooYzmppwnKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL3BoYlxcXCIpKS5ydWxlKVxcbn1cXG5cXG5pZiAocnggPT0gJ1VQ5Li7Jykge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS91cFxcXCIpKS5ydWxlKVxcbn1cXG5cXG5pZiAocnggPT0gJ+aXtuWFieacuicpIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2Uvc2dqXFxcIikpLnJ1bGUpXFxufVxcblxcbmlmIChyeCA9PSAn5paw55WqJykge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9uZXdiZ21cXFwiKSkucnVsZSlcXG59XFxuXFxuaWYgKHJ4ID09ICfntKLlvJUnKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL3N5XFxcIikpLnJ1bGUpXFxufVxcblxcbmlmIChyeCA9PSAn55u05pKtJykge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS96YlxcXCIpKS5ydWxlKVxcbn1cXG5cXG5pZiAocnggPT0gJ+abtOWkmicpIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvbW9yZVxcXCIpKS5ydWxlKVxcbn1cXG5cXG5pZiAocnggPT0gXFxcIua8q+a4uFxcXCIpIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwi5LuA5LmI5Lmf5rKh5pyJ6K+2XFxcIixcXG4gICAgICAgIHVybDogXFxcInRvYXN0Oi8v55yf55qE5LuA5LmI5Lmf5rKh5pyJXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCJcXG4gICAgfSk7XFxufVxcbnJlcy5kYXRhID0gZDtcXG5zZXRSZXN1bHQocmVzKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS7o+eggS3mm7TlpJpcIixcInBhdGhcIjpcIm1vcmVcIixcInJ1bGVcIjpcImlmIChNWV9VUkwuc3BsaXQoJyMnKVsxXSA9PSAnMScpIHtcXG4gICAgdmFyIF90eXBlID0gZmV0Y2goJ2hpa2VyOi8vZmlsZXMvYmlsaS/moLflvI8udHh0Jywge30pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IHJ4ID09ICfmvKvmuLgnID8gZ2V0SGVhZChyeCkgOiAn5ryr5ri4JyxcXG4gICAgICAgIHVybDogJ+a8q+a4uCcgKyB3cixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBnZXRWYXIoJ1lTJykgPT0gJ+maj+acuicgPyBnZXRIZWFkKCfpmo/mnLonKSA6IGdldEhlYWQoJ+mqmueyiScpLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdZUycsIGdldFZhcignWVMnKT09J+maj+acuic/J+mqmueyiSc6J+maj+acuicpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v6aKc6ImyLS0nK2dldFZhcignWVMnLCfpmo/mnLonKVxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogX3R5cGU9PVxcXCLmlrDniYhcXFwiP2dldEhlYWQoXFxcIuaWsOeJiFxcXCIpOlxcXCLmlrDniYhcXFwiLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5qC35byPLnR4dCcsJ+aWsOeJiCcpO3JlZnJlc2hQYWdlKCk7YmFjayh0cnVlKTsndG9hc3Q6Ly/liIfmjaLmiJDlip8nO1xcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogX3R5cGU9PVxcXCLml6fniYhcXFwiP2dldEhlYWQoXFxcIuaXp+eJiFxcXCIpOlxcXCLml6fniYhcXFwiLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5qC35byPLnR4dCcsJ+aXp+eJiCcpO3JlZnJlc2hQYWdlKCk7YmFjayh0cnVlKTsndG9hc3Q6Ly/liIfmjaLmiJDlip8nO1xcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgfSk7XFxuICAgIGlmIChyeCAhPSAn5pe25YWJ5py6JyAmJiByeCAhPSAn57Si5byVJykge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+iHquWumlVJRCcsXFxuICAgICAgICAgICAgdXJsOiBgaW5wdXQ6Ly97XFxcInZhbHVlXFxcIjpcXFwiXFxcIiwgXFxcImpzXFxcIjogXFxcIndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3N0YXJpZC50eHQnLGlucHV0KTt3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0JywnVVDkuLsnKTtjbGVhclZhcignaHRtJyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/kvaDovpPlhaXnmoTmmK8nK2lucHV0XFxcIiwgXFxcImhpbnRcXFwiOiBcXFwi6K+35Zyo5LiL5pa56L6T5YWlVUlEXFxcXG7kuI3nn6XpgZPmgI7kuYjmn6XvvJ9i56uZ54K55byA6Ieq5bex55qE5L+h5oGv77yM6ZW/5oyJdWlk5Y2z5Y+v77yM6K+35aGr5YWl57qv5pWw5a2XXFxcIn1gLFxcbiAgICAgICAgICAgIGRlc2M6ICfigJjigJjlt7LovpPlhaU6IOKAmeKAmScgKyBnZXRIZWFkKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc3RhcmlkLnR4dCcpKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMSdcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+eCuei1nmtleScsXFxuICAgICAgICAgICAgdXJsOiBgaW5wdXQ6Ly97XFxcInZhbHVlXFxcIjpcXFwiXFxcIiwgXFxcImpzXFxcIjogXFxcIndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2FjY2Vzc19rZXkudHh0JyxpbnB1dCk7d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dCcsJ1VQ5Li7Jyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/kvaDovpPlhaXnmoTmmK8nK2lucHV0XFxcIiwgXFxcImhpbnRcXFwiOiBcXFwi6K+35Zyo5LiL5pa56L6T5YWla2V5KOeUqOS6jueCuei1nuaKleW4gSlcXFxcbuS4jeefpemBk+aAjuS5iOaKk++8n+mCo+Wwseeul+S6hlxcXCJ9YCxcXG4gICAgICAgICAgICBkZXNjOiAn4oCY4oCY5bey6L6T5YWlOiDigJnigJknICsgZ2V0SGVhZChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2FjY2Vzc19rZXkudHh0JykpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn6Kej5p6Qa2V5JyxcXG4gICAgICAgICAgICB1cmw6IGBpbnB1dDovL3tcXFwidmFsdWVcXFwiOlxcXCJcXFwiLCBcXFwianNcXFwiOiBcXFwid3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkva2V5LnR4dCcsaW5wdXQpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHQnLCdVUOS4uycpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5L2g6L6T5YWl55qE5pivJytpbnB1dFxcXCIsIFxcXCJoaW50XFxcIjogXFxcIuivt+WcqOS4i+aWuei+k+WFpWtleSjnlKjkuo7op6PmnpApXFxcXG7kuI3nn6XpgZPmgI7kuYjmipPvvJ/pgqPlsLHnrpfkuoZcXFwifWAsXFxuICAgICAgICAgICAgZGVzYzogJ+KAmOKAmOW3sui+k+WFpTog4oCZ4oCZJyArIGdldEhlYWQoZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9rZXkudHh0JykpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIGNvbF90eXBlOiAnYmxhbmtfYmxvY2snXFxuICAgICAgICB9KTtcXG5cXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICfor4TorrrljLo6IOKAnOKAnOW3sicgKyBnZXRWYXIoJ3JlcGx5X3R5cGUnKSxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ3JlcGx5X3R5cGUnLCBnZXRWYXIoJ3JlcGx5X3R5cGUnKT09J+WFs+mXrSc/J+W8gOWQryc6J+WFs+mXrScpO3JlZnJlc2hQYWdlKCk7d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc2V0dGluZy50eHQnLGdldFZhcigncmVwbHlfdHlwZScpKycsJytnZXRWYXIoJ2xpa2VfdHlwZScpKTsndG9hc3Q6Ly/lt7InK2dldFZhcigncmVwbHlfdHlwZScpO1xcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICfngrnotZ4m5oqV5biBOiDigJzigJzlt7InICsgZ2V0VmFyKCdsaWtlX3R5cGUnKSxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ2xpa2VfdHlwZScsIGdldFZhcignbGlrZV90eXBlJyk9PSflhbPpl60nPyflvIDlkK8nOiflhbPpl60nKTtyZWZyZXNoUGFnZSgpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3NldHRpbmcudHh0JyxnZXRWYXIoJ3JlcGx5X3R5cGUnKSsnLCcrZ2V0VmFyKCdsaWtlX3R5cGUnKSk7J3RvYXN0Oi8v5beyJytnZXRWYXIoJ2xpa2VfdHlwZScpO1xcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICB9KTtcXG4gICAgfVxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS7o+eggS3kuIDnuqcyXCIsXCJwYXRoXCI6XCJjb21tb24yXCIsXCJydWxlXCI6XCJ2YXIgcmVzID0ge307XFxudmFyIGQgPSBbXTtcXG52YXIgcGFnZW51bSA9IE1ZX1VSTC5zcGxpdCgnIycpWzFdO1xcbnZhciBSZWZlcmVyID0gJ0BSZWZlcmVyPWh0dHA6Ly93d3cuYmlsaWJpbGkuY29tJztcXG5pZiAoIWZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc2V0dGluZy50eHQnKSkge1xcbiAgICB3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zZXR0aW5nLnR4dCcsICflvIDlkK8s5YWz6ZetJyk7XFxufVxcbnZhciBzX3R5cGUgPSBmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3NldHRpbmcudHh0Jyk7XFxucHV0VmFyKCdyZXBseV90eXBlJywgc190eXBlLnNwbGl0KCcsJylbMF0pO1xcbnB1dFZhcignbGlrZV90eXBlJywgc190eXBlLnNwbGl0KCcsJylbMV0pO1xcbi8v6aKc6ImyXFxudmFyIENvbG9ycyA9IFtcXFwiNFxcXCIsIFxcXCI1XFxcIiwgXFxcIjBcXFwiLCBcXFwiMVxcXCIsIFxcXCJBXFxcIiwgXFxcIjNcXFwiLCBcXFwiOFxcXCIsIFxcXCI5XFxcIiwgXFxcIkJcXFwiLCBcXFwiQ1xcXCIsIFxcXCJEXFxcIiwgXFxcIkVcXFwiLCBcXFwiNlxcXCIsIFxcXCI3XFxcIiwgXFxcIkZcXFwiXTtcXG52YXIgQ29sb3IgPSAnIyc7XFxuaWYgKGdldFZhcignWVMnKSA9PSAn6ZqP5py6Jykge1xcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkrKykge1xcbiAgICAgICAgdmFyIG51bSA9IE1hdGguY2VpbCgoTWF0aC5yYW5kb20oKSAqIDE1KSkgLSAxO1xcbiAgICAgICAgdmFyIENvbG9yID0gQ29sb3IgKyBDb2xvcnNbbnVtXTtcXG4gICAgfVxcbn0gZWxzZSB7XFxuICAgIHZhciBDb2xvciA9IFxcXCIjRkE3Mjk4XFxcIjtcXG59XFxuXFxuZnVuY3Rpb24gZ2V0SGVhZCh0aXRsZSkge1xcbiAgICByZXR1cm4gJ+KAmOKAmOKAmeKAmTxzdHJvbmc+PGZvbnQgY29sb3I9XFxcIicgKyBDb2xvciArICdcXFwiPicgKyB0aXRsZSArICc8L2Zyb250Pjwvc3Ryb25nPic7XFxufVxcblxcbnZhciBjMSA9ICdhbGwmYmFuZ3VtaSZndW9jaGFuJmRvdWdhJm11c2ljJmtub3dsZWRnZSZ0ZWNoJmNhciZsaWZlJmZvb2Qma2ljaGlrdSZmYXNoaW9uJmNpbmVwaGlsZSZvcmlnaW4mcm9va2llJmdhbWUmZW50JmRhbmNlJm1vdmllJnR2JmRvY3VtZW50YXJ5JmFuaW1hbCZndW9jaHVhbmcnO1xcblxcbnZhciB3MSA9ICflhajpg6gm55Wq5YmnJuWbveWImybliqjnlLsm6Z+z5LmQJuefpeivhibnp5HmioAm5rG96L2mJueUn+a0uybnvo7po58m6ay855WcJuaXtuWwmiblvbHop4Ym5Y6f5YibJuaWsOS6uibmuLjmiI8m5aix5LmQJuiInui5iCbnlLXlvbEm55S16KeG5YmnJue6quW9leeJhybliqjnianlnIgm5Zu95Yib55u45YWzJztcXG5cXG52YXIgYzIgPSAnMjImMjEyJjcxJjE4MiYxMzgmMjgmMzMmMTg1JztcXG5cXG52YXIgdzIgPSAn6ay855WcJue+jumjnybnu7zoibom5b2x6KeGJueUn+a0uybpn7PkuZAm55Wq5YmnJueUteinhuWJpyc7XFxuXFxudmFyIHdvcmQxID0gdzEuc3BsaXQoJyYnKTtcXG52YXIgY2xhc3MxID0gYzEuc3BsaXQoJyYnKTtcXG52YXIgbGFiMSA9IGdldFZhcignbGFiMScsICflhajpg6gnKTtcXG52YXIga2V5MSA9IGdldFZhcigna2V5MScsICdhbGwnKTtcXG5cXG52YXIgd29yZDIgPSB3Mi5zcGxpdCgnJicpO1xcbnZhciBjbGFzczIgPSBjMi5zcGxpdCgnJicpO1xcbnZhciBsYWIyID0gZ2V0VmFyKCdsYWIyJywgJ+msvOeVnCcpO1xcbnZhciBrZXkyID0gZ2V0VmFyKCdrZXkyJywgJzIyJyk7XFxuXFxudmFyIHpiYzEgPSAnYWxsJjImMyY2JjEmNSY5JjEwJjExJztcXG52YXIgemJ3MSA9ICflhajpg6gm572R5ri4JuaJi+a4uCbljZXmnLom5aix5LmQJueUteWPsCbomZrmi5/kuLvmkq0m55Sf5rS7JuWtpuS5oCc7XFxudmFyIHpiYzIgPSAnMCYzMyc7XFxudmFyIHpidzIgPSAn6buY6K6k5bCP5YiG57G7JuW9semfs+mmhu+8iOeUn+a0u++8iSc7XFxudmFyIHpid29yZDEgPSB6YncxLnNwbGl0KCcmJyk7XFxudmFyIHpiY2xhc3MxID0gemJjMS5zcGxpdCgnJicpO1xcbnZhciB6YmxhYjEgPSBnZXRWYXIoJ3pibGFiMScsICflhajpg6gnKTtcXG52YXIgemJrZXkxID0gZ2V0VmFyKCd6YmtleTEnLCAnYWxsJyk7XFxuXFxudmFyIHpid29yZDIgPSB6YncyLnNwbGl0KCcmJyk7XFxudmFyIHpiY2xhc3MyID0gemJjMi5zcGxpdCgnJicpO1xcbnZhciB6YmxhYjIgPSBnZXRWYXIoJ3pibGFiMicsICfpu5jorqTlsI/liIbnsbsnKTtcXG52YXIgemJrZXkyID0gZ2V0VmFyKCd6YmtleTInLCAnMCcpO1xcblxcblxcblxcbi8v5LiJ5ZCI5LiAXFxudmFyIHJ4ID0gZmV0Y2goJ2hpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0Jywge30pO1xcbnZhciB3ciA9IGBAbGF6eVJ1bGU9LmpzOndyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHRcXFwiLGlucHV0KTtyZWZyZXNoUGFnZShmYWxzZSk7XFxcInRvYXN0Oi8v5YiH5o2i5oiQ5YqfXFxcImA7XFxudmFyIHNfdGFiID0gZmV0Y2goJ2hpa2VyOi8vZmlsZXMvYmlsaS/mlLbol48udHh0Jywge30pO1xcbnZhciBzciA9IGBAbGF6eVJ1bGU9LmpzOndyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL+aUtuiXjy50eHRcXFwiLGlucHV0KTtyZWZyZXNoUGFnZShmYWxzZSk7XFxcInRvYXN0Oi8v5YiH5o2i5oiQ5YqfXFxcImA7XFxuXFxuaWYgKE1ZX1VSTC5zcGxpdCgnIycpWzFdID09ICcxJykge1xcbiAgICAvLy5yZXBsYWNlKCdtLmJpbGliaWxpLmNvbScsICd3d3cuYmlsaWJpbGkuY29tJykucmVwbGFjZSgvXFxcXD8vZywgJ++8n++8nycpLnJlcGxhY2UoL1xcXFwmL2csICfvvIbvvIYnKVxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfop6PmnpAnLFxcbiAgICAgICAgdXJsOiBcXFwiJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPScrJ2h0dHBzOi8vJytpbnB1dC5zcGxpdCgnaHR0cHM6Ly8nKVsxXSsnI2ltbWVyc2l2ZVRoZW1lIydcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICdpbnB1dCcsXFxuICAgICAgICBkZXNjOiAn6K+36L6T5YWl572R5Z2A5oiW6ICFYuermeWkjeWItueahOmTvuaOpSdcXG4gICAgfSk7XFxuXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogcnggPT0gJ1VQ5Li7JyA/IGdldEhlYWQoJ+mmlumhtScpIDogJ+mmlumhtScsXFxuICAgICAgICB1cmw6ICdVUOS4uycgKyB3cixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF81J1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiByeCA9PSAn5o6S6KGM5qacJyA/IGdldEhlYWQocngpIDogJ+aOkuihjOamnCcsXFxuICAgICAgICB1cmw6ICfmjpLooYzmppwnICsgd3IsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNSdcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogcnggPT0gJ+aWsOeVqicgPyBnZXRIZWFkKHJ4KSA6ICfmlrDnlaonLFxcbiAgICAgICAgdXJsOiAn5paw55WqJyArIHdyLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzUnXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IHJ4ID09ICfnm7Tmkq0nID8gZ2V0SGVhZChyeCkgOiAn55u05pKtJyxcXG4gICAgICAgIHVybDogJ+ebtOaSrScgKyB3cixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF81J1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiByeCA9PSAn5pu05aSaJyA/IGdldEhlYWQocngpIDogJ+abtOWkmicsXFxuICAgICAgICB1cmw6ICfmm7TlpJonICsgd3IsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNSdcXG4gICAgfSk7XFxuICAgIC8qXFxuICAgICAgICBpZiAocnggPT0gJ+aUtuiXjycpIHtcXG4gICAgICAgICAgICBcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogc190YWIgPT0gJ+i/veeVqicgPyBnZXRIZWFkKHNfdGFiKSA6ICfov73nlaonLFxcbiAgICAgICAgICAgICAgICB1cmw6ICfov73nlaonICsgc3IsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8zJ1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBzX3RhYiA9PSAn6L+95YmnJyA/IGdldEhlYWQoc190YWIpIDogJ+i/veWJpycsXFxuICAgICAgICAgICAgICAgIHVybDogJ+i/veWJpycgKyBzcixcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzMnXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgXFxuICAgICAgICAgICAgaWYgKHNfdGFiID09ICfov73nlaonKSB7XFxuICAgICAgICAgICAgICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL2Zhbmp1XFxcIikpLnJ1bGUpXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGlmIChzX3RhYiA9PSAn6L+95YmnJykge1xcbiAgICAgICAgICAgICAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9kc2pcXFwiKSkucnVsZSlcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICovXFxufVxcblxcbmlmIChyeCA9PSAn5o6S6KGM5qacJykge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9waGJcXFwiKSkucnVsZSlcXG59XFxuXFxuaWYgKHJ4ID09ICdVUOS4uycpIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvdXBcXFwiKSkucnVsZSlcXG59XFxuXFxuaWYgKHJ4ID09ICfml7blhYnmnLonKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL3NnalxcXCIpKS5ydWxlKVxcbn1cXG5cXG5pZiAocnggPT0gJ+aWsOeVqicpIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvbmV3YmdtXFxcIikpLnJ1bGUpXFxufVxcblxcbmlmIChyeCA9PSAn57Si5byVJykge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9zeVxcXCIpKS5ydWxlKVxcbn1cXG5cXG5pZiAocnggPT0gJ+ebtOaSrScpIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvemJcXFwiKSkucnVsZSlcXG59XFxuXFxuaWYgKHJ4ID09ICfmm7TlpJonKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL21vcmUyXFxcIikpLnJ1bGUpXFxufVxcblxcbmlmIChyeCA9PSBcXFwi5ryr5ri4XFxcIikge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLku4DkuYjkuZ/msqHmnInor7ZcXFwiLFxcbiAgICAgICAgdXJsOiBcXFwidG9hc3Q6Ly/nnJ/nmoTku4DkuYjkuZ/msqHmnIlcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIlxcbiAgICB9KTtcXG59XFxuLy/kuInlkIjkuIBcXG5cXG5yZXMuZGF0YSA9IGQ7XFxuc2V0UmVzdWx0KHJlcylcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS7o+eggS3mm7TlpJoyXCIsXCJwYXRoXCI6XCJtb3JlMlwiLFwicnVsZVwiOlwiaWYgKE1ZX1VSTC5zcGxpdCgnIycpWzFdID09ICcxJykge1xcbiAgICB2YXIgX3R5cGUgPSBmZXRjaCgnaGlrZXI6Ly9maWxlcy9iaWxpL+agt+W8jy50eHQnLCB7fSk7XFxuICAgIFxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IHJ4ID09ICfml7blhYnmnLonID8gZ2V0SGVhZChyeCkgOiAn5pe25YWJ8J+QpScsXFxuICAgICAgICB1cmw6ICfml7blhYnmnLonICsgd3IsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNSdcXG4gICAgfSk7XFxuICAgIC8qXFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn6L+955WqJyxcXG4gICAgICAgICAgICB1cmw6ICdoaWtlcjovL2NvbGxlY3Rpb24/Z3JvdXA94pGg6L+955WqJyxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgICAgIH0pO1xcbiAgICAqL1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IHJ4ID09ICfntKLlvJUnID8gZ2V0SGVhZChyeCkgOiAn57Si5byVJyxcXG4gICAgICAgIHVybDogJ+e0ouW8lScgKyB3cixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF81J1xcbiAgICB9KTtcXG4gICAgLypcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHJ4ID09ICfmlLbol48nID8gZ2V0SGVhZChyeCkgOiAn5pS26JePJyxcXG4gICAgICAgICAgICB1cmw6ICfmlLbol48nICsgd3IsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxuICAgICAgICB9KTtcXG4gICAgKi9cXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn55m75b2VJyxcXG4gICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9uZXdsb2dpbicsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNSdcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogcnggPT0gJ+a8q+a4uCcgPyBnZXRIZWFkKHJ4KSA6ICfmvKvmuLgnLFxcbiAgICAgICAgdXJsOiAn5ryr5ri4JyArIHdyLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzUnXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IGdldFZhcignWVMnKSA9PSAn6ZqP5py6JyA/IGdldEhlYWQoJ+maj+acuicpIDogZ2V0SGVhZCgn6aqa57KJJyksXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ1lTJywgZ2V0VmFyKCdZUycpPT0n6ZqP5py6Jz8n6aqa57KJJzon6ZqP5py6Jyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/popzoibItLScrZ2V0VmFyKCdZUycsJ+maj+acuicpXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF81J1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBfdHlwZT09XFxcIuaWsOeJiFxcXCI/Z2V0SGVhZChcXFwi5paw54mIXFxcIik6XFxcIuaWsOeJiFxcXCIsXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczp3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS/moLflvI8udHh0Jywn5paw54mIJyk7cmVmcmVzaFBhZ2UoKTtiYWNrKHRydWUpOyd0b2FzdDovL+WIh+aNouaIkOWKnyc7XFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBfdHlwZT09XFxcIuaXp+eJiFxcXCI/Z2V0SGVhZChcXFwi5pen54mIXFxcIik6XFxcIuaXp+eJiFxcXCIsXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczp3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS/moLflvI8udHh0Jywn5pen54mIJyk7cmVmcmVzaFBhZ2UoKTtiYWNrKHRydWUpOyd0b2FzdDovL+WIh+aNouaIkOWKnyc7XFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICB9KTtcXG4gICAgXFxuICAgIGlmIChyeCAhPSAn5pe25YWJ5py6JyAmJiByeCAhPSAn57Si5byVJykge1xcblxcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+iHquWumlVJRCcsXFxuICAgICAgICAgICAgdXJsOiBgaW5wdXQ6Ly97XFxcInZhbHVlXFxcIjpcXFwiXFxcIiwgXFxcImpzXFxcIjogXFxcIndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3N0YXJpZC50eHQnLGlucHV0KTt3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0JywnVVDkuLsnKTtjbGVhclZhcignaHRtJyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/kvaDovpPlhaXnmoTmmK8nK2lucHV0XFxcIiwgXFxcImhpbnRcXFwiOiBcXFwi6K+35Zyo5LiL5pa56L6T5YWlVUlEXFxcXG7kuI3nn6XpgZPmgI7kuYjmn6XvvJ9i56uZ54K55byA6Ieq5bex55qE5L+h5oGv77yM6ZW/5oyJdWlk5Y2z5Y+v77yM6K+35aGr5YWl57qv5pWw5a2XXFxcIn1gLFxcbiAgICAgICAgICAgIGRlc2M6ICfigJjigJjlt7LovpPlhaU6IOKAmeKAmScgKyBnZXRIZWFkKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc3RhcmlkLnR4dCcpKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMSdcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+eCuei1nmtleScsXFxuICAgICAgICAgICAgdXJsOiBgaW5wdXQ6Ly97XFxcInZhbHVlXFxcIjpcXFwiXFxcIiwgXFxcImpzXFxcIjogXFxcIndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2FjY2Vzc19rZXkudHh0JyxpbnB1dCk7d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dCcsJ1VQ5Li7Jyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/kvaDovpPlhaXnmoTmmK8nK2lucHV0XFxcIiwgXFxcImhpbnRcXFwiOiBcXFwi6K+35Zyo5LiL5pa56L6T5YWla2V5KOeUqOS6jueCuei1nuaKleW4gSlcXFxcbuS4jeefpemBk+aAjuS5iOaKk++8n+mCo+Wwseeul+S6hlxcXCJ9YCxcXG4gICAgICAgICAgICBkZXNjOiAn4oCY4oCY5bey6L6T5YWlOiDigJnigJknICsgZ2V0SGVhZChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2FjY2Vzc19rZXkudHh0JykpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn6Kej5p6Qa2V5JyxcXG4gICAgICAgICAgICB1cmw6IGBpbnB1dDovL3tcXFwidmFsdWVcXFwiOlxcXCJcXFwiLCBcXFwianNcXFwiOiBcXFwid3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkva2V5LnR4dCcsaW5wdXQpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHQnLCdVUOS4uycpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5L2g6L6T5YWl55qE5pivJytpbnB1dFxcXCIsIFxcXCJoaW50XFxcIjogXFxcIuivt+WcqOS4i+aWuei+k+WFpWtleSjnlKjkuo7op6PmnpApXFxcXG7kuI3nn6XpgZPmgI7kuYjmipPvvJ/pgqPlsLHnrpfkuoZcXFwifWAsXFxuICAgICAgICAgICAgZGVzYzogJ+KAmOKAmOW3sui+k+WFpTog4oCZ4oCZJyArIGdldEhlYWQoZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9rZXkudHh0JykpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIGNvbF90eXBlOiAnYmxhbmtfYmxvY2snXFxuICAgICAgICB9KTtcXG5cXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICfor4TorrrljLo6IOKAnOKAnOW3sicgKyBnZXRWYXIoJ3JlcGx5X3R5cGUnKSxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ3JlcGx5X3R5cGUnLCBnZXRWYXIoJ3JlcGx5X3R5cGUnKT09J+WFs+mXrSc/J+W8gOWQryc6J+WFs+mXrScpO3JlZnJlc2hQYWdlKCk7d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc2V0dGluZy50eHQnLGdldFZhcigncmVwbHlfdHlwZScpKycsJytnZXRWYXIoJ2xpa2VfdHlwZScpKTsndG9hc3Q6Ly/lt7InK2dldFZhcigncmVwbHlfdHlwZScpO1xcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICfngrnotZ4m5oqV5biBOiDigJzigJzlt7InICsgZ2V0VmFyKCdsaWtlX3R5cGUnKSxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ2xpa2VfdHlwZScsIGdldFZhcignbGlrZV90eXBlJyk9PSflhbPpl60nPyflvIDlkK8nOiflhbPpl60nKTtyZWZyZXNoUGFnZSgpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3NldHRpbmcudHh0JyxnZXRWYXIoJ3JlcGx5X3R5cGUnKSsnLCcrZ2V0VmFyKCdsaWtlX3R5cGUnKSk7J3RvYXN0Oi8v5beyJytnZXRWYXIoJ2xpa2VfdHlwZScpO1xcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICB9KTtcXG4gICAgfVxcbn1cIn1dIiwiaWNvbiI6Imh0dHBzOi8vZ2l0ZWUuY29tL0NoZXJpc2hSeC9pbWFnZXdhcmVob3VzZS9yYXcvbWFzdGVyL2ltYWdlLzEzMDk2NzI1ZmU1NmNlOWNmNjQzYTBlNGNkMGMxNTljLmdpZiJ9
Add Comment
Please, Sign In to add comment