Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@哔哩Ⓡ@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6ImpzOlxubGV0IGh0bWwgPSBnZXRSZXNDb2RlKClcbi8vIGxvZyhodG1sKVxubGV0IHJlZ2V4ID0gL3dpbmRvd1xcLl9fSU5JVElBTF9TVEFURV9fPSguKj8pO1xcKGZ1bmN0aW9uXFwoXFwpXFx7L1xuLy8gbG9nKE1ZX1VSTClcbmlmKE1ZX1VSTC5zdGFydHNXaXRoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWlsJykpIHtcbiAgICBsZXQgY29kZSA9IEpTT04ucGFyc2UoaHRtbClcbiAgICB0cnkge1xuICAgICAgICBpZiAoY29kZS5kYXRhLlZpZXdbJ3JlZGlyZWN0X3VybCddKSB7XG4gICAgICAgICAgICBNWV9VUkwgPSBjb2RlLmRhdGEuVmlld1sncmVkaXJlY3RfdXJsJ107XG4gICAgICAgICAgICBodG1sID0gZmV0Y2goTVlfVVJMLCB7fSk7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGxvZyAoZS5tZXNzYWdlKVxuICAgIH1cbn1cbi8vIGxvZyhodG1sKVxuaWYgKE1ZX1VSTC5zdGFydHNXaXRoKCdodHRwczovL3d3dy5iaWxpYmlsaS5jb20vYmFuZ3VtaS9wbGF5LycpICYmIHJlZ2V4LnRlc3QoaHRtbCkpIHtcbiAgICAvLyDnlarliadcbiAgICAvLyBsb2coJ+WMuemFje+8micgKyBSZWdFeHAuJDEpXG4gICAgbGV0IHJlcyA9IEpTT04ucGFyc2UoUmVnRXhwLiQxKVxuICAgIGxldCByZXN1bHQgPSByZXMubmV3ZXN0RXBcbiAgICBpZighcmVzdWx0KSB7XG4gICAgICAgIHJlc3VsdCA9IHJlcy5tZWRpYUluZm8ubmV3X2VwXG4gICAgfVxuICAgIHNldFJlc3VsdChcIuabtOaWsOiHs++8muesrFwiICsgcmVzdWx0LnRpdGxlICsgXCLor51cIilcbn0gZWxzZSBpZiAoTVlfVVJMLnN0YXJ0c1dpdGgoJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FyYy9zZWFyY2gnKSkge1xuICAgIC8vIFVQIOS4u1xuICAgIGxldCByZXMgPSBKU09OLnBhcnNlKGh0bWwpXG4gICAgbGV0IHJlc3VsdCA9IHJlcy5kYXRhLmxpc3Qudmxpc3RbMF0udGl0bGVcbiAgICBzZXRSZXN1bHQoXCLmm7TmlrDoh7PvvJpcIiArIHJlc3VsdClcbn0gZWxzZSB7XG4gICAgc2V0UmVzdWx0KFwiXCIpXG59IiwidGl0bGUiOiLlk5Tlk6nik4ciLCJhdXRob3IiOiIxNjA2MTQyJlJ4JlJlYm9ybiIsInVybCI6Imhpa2VyOi8vZW1wdHkjZnlwYWdlIiwidmVyc2lvbiI6MjExMjExMTY0MywiY29sX3R5cGUiOiJtb3ZpZV8xIiwiY2xhc3NfbmFtZSI6IiIsInR5cGUiOiJ2aWRlbyIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChKU09OLnBhcnNlKGZldGNoKFwiaGlrZXI6Ly9wYWdlL2NvbW1vblwiKSkucnVsZSk7Iiwic2VhcmNoX3VybCI6Imh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvc2VhcmNoL2FsbC92Mj9rZXl3b3JkPSoqJnBhZ2U9ZnlwYWdlJnBhZ2VzaXplPTIwO2dldDt1dGYtODt7VXNlci1BZ2VudEBNb3ppbGxhLzUuMCAoTGludXjvvJvvvJsgQW5kcm9pZCA3LjDvvJvvvJsgd3YgbGl0ZSBiYWlkdWJveGFwcCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi80LjAgQ2hyb21lLzc4LjAuMzkwNC45NiBNb2JpbGUgU2FmYXJpLzUzNy4zNiBUNy8xMC4zIFNlYXJjaENyYWZ0LzIuNi4yIChCYWlkde+8m++8myBQMSA3LjApfSIsImdyb3VwIjoi5b2x5pCcIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChKU09OLnBhcnNlKGZldGNoKFwiaGlrZXI6Ly9wYWdlL3NcIikpLnJ1bGUpOyIsImRldGFpbF9jb2xfdHlwZSI6Im1vdmllXzIiLCJkZXRhaWxfZmluZF9ydWxlIjoiIiwic2RldGFpbF9jb2xfdHlwZSI6Im1vdmllXzEiLCJzZGV0YWlsX2ZpbmRfcnVsZSI6IiIsInVhIjoibW9iaWxlIiwicHJlUnVsZSI6ImpzOlxuZXZhbChKU09OLnBhcnNlKGZldGNoKFwiaGlrZXI6Ly9wYWdlL3ljbFwiKSkucnVsZSk7XG4vL+mAmui/h+aQnOe0ouafpeeci+iHquW3seeahHVpZO+8jOeEtuWQjuabv+aNouWNs+WPr1xuaWYgKCFmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3N0YXJpZC50eHQnLHt9KSl7XG5wdXRWYXIoJ3N0YXJpZCcsJzkyODEyMycpO1xufWVsc2V7XG5cbnB1dFZhcignc3RhcmlkJyxmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3N0YXJpZC50eHQnLHt9KSk7XG59XG5wdXRWYXIoXCJhY2Nlc3Nfa2V5XCIsZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9hY2Nlc3Nfa2V5LnR4dCcpKTtcbi8v6Ieq5bex5Y67YuermeWuouaIt+err+mmlumhteaKk+WMhe+8jOaJvuWIsGFwcC5iaWxpYmlsaS5jb23lvIDlpLTnmoTpk77mjqXvvIznhLblkI7miophY2Nlc3Nfa2V555qE5YC85aGr5YWl5LiK5pa5Jz0n5ZCO6Z2i5Y2z5Y+vIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS7o+eggS3kuIDnuqdcIixcInBhdGhcIjpcImNvbW1vblwiLFwicnVsZVwiOlwidmFyIHJlcyA9IHt9O1xcbnZhciBkID0gW107XFxudmFyIHBhZ2VudW0gPSBNWV9VUkwuc3BsaXQoJyMnKVsxXTtcXG52YXIgUmVmZXJlciA9ICdAUmVmZXJlcj1odHRwOi8vd3d3LmJpbGliaWxpLmNvbSc7XFxuaWYgKCFmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3NldHRpbmcudHh0JykpIHtcXG4gICAgd3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc2V0dGluZy50eHQnLCAn5byA5ZCvLOWFs+mXrScpO1xcbn1cXG52YXIgc190eXBlID0gZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zZXR0aW5nLnR4dCcpO1xcbnB1dFZhcigncmVwbHlfdHlwZScsIHNfdHlwZS5zcGxpdCgnLCcpWzBdKTtcXG5wdXRWYXIoJ2xpa2VfdHlwZScsIHNfdHlwZS5zcGxpdCgnLCcpWzFdKTtcXG4vL+minOiJslxcbnZhciBDb2xvcnMgPSBbXFxcIjRcXFwiLCBcXFwiNVxcXCIsIFxcXCIwXFxcIiwgXFxcIjFcXFwiLCBcXFwiQVxcXCIsIFxcXCIzXFxcIiwgXFxcIjhcXFwiLCBcXFwiOVxcXCIsIFxcXCJCXFxcIiwgXFxcIkNcXFwiLCBcXFwiRFxcXCIsIFxcXCJFXFxcIiwgXFxcIjZcXFwiLCBcXFwiN1xcXCIsIFxcXCJGXFxcIl07XFxudmFyIENvbG9yID0gJyMnO1xcbmlmIChnZXRWYXIoJ1lTJykgPT0gJ+maj+acuicpIHtcXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKyspIHtcXG4gICAgICAgIHZhciBudW0gPSBNYXRoLmNlaWwoKE1hdGgucmFuZG9tKCkgKiAxNSkpIC0gMTtcXG4gICAgICAgIHZhciBDb2xvciA9IENvbG9yICsgQ29sb3JzW251bV07XFxuICAgIH1cXG59IGVsc2Uge1xcbiAgICB2YXIgQ29sb3IgPSBcXFwiI0ZBNzI5OFxcXCI7XFxufVxcblxcbmZ1bmN0aW9uIGdldEhlYWQodGl0bGUpIHtcXG4gICAgcmV0dXJuICfigJjigJjigJnigJk8c3Ryb25nPjxmb250IGNvbG9yPVxcXCInICsgQ29sb3IgKyAnXFxcIj4nICsgdGl0bGUgKyAnPC9mcm9udD48L3N0cm9uZz4nO1xcbn1cXG5cXG52YXIgYzEgPSAnYWxsJmJhbmd1bWkmZ3VvY2hhbiZkb3VnYSZtdXNpYyZrbm93bGVkZ2UmdGVjaCZjYXImbGlmZSZmb29kJmtpY2hpa3UmZmFzaGlvbiZjaW5lcGhpbGUmb3JpZ2luJnJvb2tpZSZnYW1lJmVudCZkYW5jZSZtb3ZpZSZ0diZkb2N1bWVudGFyeSZhbmltYWwmZ3VvY2h1YW5nJztcXG5cXG52YXIgdzEgPSAn5YWo6YOoJueVquWJpyblm73liJsm5Yqo55S7Jumfs+S5kCbnn6Xor4Ym56eR5oqAJuaxvei9pibnlJ/mtLsm576O6aOfJumsvOeVnCbml7blsJom5b2x6KeGJuWOn+WImybmlrDkurom5ri45oiPJuWoseS5kCboiJ7ouYgm55S15b2xJueUteinhuWJpybnuqrlvZXniYcm5Yqo54mp5ZyIJuWbveWIm+ebuOWFsyc7XFxuXFxudmFyIGMyID0gJzIyJjIxMiY3MSYxODImMTM4JjI4JjMzJjE4NSc7XFxuXFxudmFyIHcyID0gJ+msvOeVnCbnvo7po58m57u86Im6JuW9seinhibnlJ/mtLsm6Z+z5LmQJueVquWJpybnlLXop4bliacnO1xcblxcbnZhciB3b3JkMSA9IHcxLnNwbGl0KCcmJyk7XFxudmFyIGNsYXNzMSA9IGMxLnNwbGl0KCcmJyk7XFxudmFyIGxhYjEgPSBnZXRWYXIoJ2xhYjEnLCAn5YWo6YOoJyk7XFxudmFyIGtleTEgPSBnZXRWYXIoJ2tleTEnLCAnYWxsJyk7XFxuXFxudmFyIHdvcmQyID0gdzIuc3BsaXQoJyYnKTtcXG52YXIgY2xhc3MyID0gYzIuc3BsaXQoJyYnKTtcXG52YXIgbGFiMiA9IGdldFZhcignbGFiMicsICfprLznlZwnKTtcXG52YXIga2V5MiA9IGdldFZhcigna2V5MicsICcyMicpO1xcblxcbi8v5LiJ5ZCI5LiAXFxudmFyIHJ4ID0gZmV0Y2goJ2hpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0Jywge30pO1xcbnZhciB3ciA9IGBAbGF6eVJ1bGU9LmpzOndyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHRcXFwiLGlucHV0KTtyZWZyZXNoUGFnZShmYWxzZSk7XFxcInRvYXN0Oi8v5YiH5o2i5oiQ5YqfXFxcImA7XFxudmFyIHNfdGFiID0gZmV0Y2goJ2hpa2VyOi8vZmlsZXMvYmlsaS/mlLbol48udHh0Jywge30pO1xcbnZhciBzciA9IGBAbGF6eVJ1bGU9LmpzOndyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL+aUtuiXjy50eHRcXFwiLGlucHV0KTtyZWZyZXNoUGFnZShmYWxzZSk7XFxcInRvYXN0Oi8v5YiH5o2i5oiQ5YqfXFxcImA7XFxuXFxuaWYgKE1ZX1VSTC5zcGxpdCgnIycpWzFdID09ICcxJykge1xcbiAgICAvLy5yZXBsYWNlKCdtLmJpbGliaWxpLmNvbScsICd3d3cuYmlsaWJpbGkuY29tJykucmVwbGFjZSgvXFxcXD8vZywgJ++8n++8nycpLnJlcGxhY2UoL1xcXFwmL2csICfvvIbvvIYnKVxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfop6PmnpAnLFxcbiAgICAgICAgdXJsOiBcXFwiJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPScrJ2h0dHBzOi8vJytpbnB1dC5zcGxpdCgnaHR0cHM6Ly8nKVsxXSsnI2ltbWVyc2l2ZVRoZW1lIydcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICdpbnB1dCcsXFxuICAgICAgICBkZXNjOifor7fovpPlhaXnvZHlnYDmiJbogIVi56uZ5aSN5Yi255qE6ZO+5o6lJ1xcbiAgICB9KTtcXG5cXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiByeCA9PSAnVVDkuLsnID8gZ2V0SGVhZCgn6aaW6aG1JykgOiAn6aaW6aG1JyxcXG4gICAgICAgIHVybDogJ1VQ5Li7JyArIHdyLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IHJ4ID09ICfmjpLooYzmppwnID8gZ2V0SGVhZChyeCkgOiAn5o6S6KGM5qacJyxcXG4gICAgICAgIHVybDogJ+aOkuihjOamnCcgKyB3cixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiByeCA9PSAn5paw55WqJyA/IGdldEhlYWQocngpIDogJ+aWsOeVqicsXFxuICAgICAgICB1cmw6ICfmlrDnlaonICsgd3IsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogcnggPT0gJ+abtOWkmicgPyBnZXRIZWFkKHJ4KSA6ICfmm7TlpJonLFxcbiAgICAgICAgdXJsOiAn5pu05aSaJyArIHdyLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxuICAgIH0pO1xcbi8qXFxuICAgIGlmIChyeCA9PSAn5pS26JePJykge1xcbiAgICAgICAgXFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBzX3RhYiA9PSAn6L+955WqJyA/IGdldEhlYWQoc190YWIpIDogJ+i/veeVqicsXFxuICAgICAgICAgICAgdXJsOiAn6L+955WqJyArIHNyLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8zJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBzX3RhYiA9PSAn6L+95YmnJyA/IGdldEhlYWQoc190YWIpIDogJ+i/veWJpycsXFxuICAgICAgICAgICAgdXJsOiAn6L+95YmnJyArIHNyLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8zJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBcXG4gICAgICAgIGlmIChzX3RhYiA9PSAn6L+955WqJykge1xcbiAgICAgICAgICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL2Zhbmp1XFxcIikpLnJ1bGUpXFxuICAgICAgICB9XFxuICAgICAgICBpZiAoc190YWIgPT0gJ+i/veWJpycpIHtcXG4gICAgICAgICAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9kc2pcXFwiKSkucnVsZSlcXG4gICAgICAgIH1cXG4gICAgfVxcbiovXFxufVxcblxcbmlmIChyeCA9PSAn5o6S6KGM5qacJykge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9waGJcXFwiKSkucnVsZSlcXG59XFxuXFxuaWYgKHJ4ID09ICdVUOS4uycpIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvdXBcXFwiKSkucnVsZSlcXG59XFxuXFxuaWYgKHJ4ID09ICfml7blhYnmnLonKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL3NnalxcXCIpKS5ydWxlKVxcbn1cXG5cXG5pZiAocnggPT0gJ+aWsOeVqicpIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvbmV3YmdtXFxcIikpLnJ1bGUpXFxufVxcblxcbmlmIChyeCA9PSAn57Si5byVJykge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9zeVxcXCIpKS5ydWxlKVxcbn1cXG5cXG5pZiAocnggPT0gJ+abtOWkmicpIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvbW9yZVxcXCIpKS5ydWxlKVxcbn1cXG5cXG5cXG4vL+S4ieWQiOS4gFxcblxcbnJlcy5kYXRhID0gZDtcXG5zZXRSZXN1bHQocmVzKVwifSx7XCJjb2xfdHlwZVwiOlwicGljXzFfY2FyZFwiLFwibmFtZVwiOlwi5Luj56CBLeaOkuihjOamnFwiLFwicGF0aFwiOlwicGhiXCIsXCJydWxlXCI6XCIvL+WIhuexu1xcbiBpZiAoTVlfVVJMLnNwbGl0KCcjJylbMV09PScxJyl7XFxuZm9yICh2YXIgaSBpbiB3b3JkMSl7XFxuICAgIHZhciBhID0gd29yZDFbaV07XFxuICAgIHZhciBiID0gY2xhc3MxW2ldO1xcbiAgICB2YXIgYyA9IGEgKyAnJicgKyBiO1xcbiAgICBkLnB1c2goe1xcbiAgICB0aXRsZTogYT09bGFiMT8gZ2V0SGVhZChhKTphLFxcbiAgICB1cmw6ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKGMpPT57XFxuICAgICAgICBwdXRWYXIoXFxcImxhYjFcXFwiLGMuc3BsaXQoJyYnKVswXSk7XFxuICAgICAgICBwdXRWYXIoXFxcImtleTFcXFwiLGMuc3BsaXQoJyYnKVsxXSk7XFxuICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgIH0sIGMpLFxcbiAgICBjb2xfdHlwZTonZmxleF9idXR0b24nXFxuICAgIH0pO1xcbn1cXG59XFxuLy/liIbnsbtcXG5cXG5kLnB1c2goe1xcbiAgICBkZXNjOicyNTgmJmZsb2F0JyxcXG4gICBcXHRcXHRjb2xfdHlwZTogJ3g1X3dlYnZpZXdfc2luZ2xlJ1xcbn0pO1xcbnZhciB1cmwgPSAnaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL3YvcG9wdWxhci9yYW5rL2FsbCc7XFxuXFxudmFyIE1ZX1VSTCA9IHVybC5yZXBsYWNlKCdhbGwnLGdldFZhcigna2V5MScpKTtcXG5cXG52YXIgeW09cmVxdWVzdChNWV9VUkwse30pLnJlcGxhY2UoL1xcXFxcXFxcdTAwMkYvZywnLycpO1xcbmlmKHltLmluY2x1ZGVzKCdyYW5rLXRpcHMnKSl7XFxuXFxuLyrmj5DnpLrkv6Hmga9cXG4gIGQucHVzaCh7XFxuICAgIHRpdGxlOifigJzigJwnK3BhcnNlRG9tRm9ySHRtbCh5bSwnLnJhbmstdGlwcyYmVGV4dCcpKyfigJ3igJ0nLFxcbiAgICBjb2xfdHlwZTondGV4dF8xJ1xcbiAgfSk7XFxu5o+Q56S65L+h5oGvKi9cXG5cXG4gIHZhciBwaT1KU09OLnBhcnNlKHltLnNwbGl0KCdcXFwicmFua0xpc3RcXFwiOicpWzFdLnNwbGl0KCcsXFxcInJhbmtOb3RlXFxcIicpWzBdKTtcXG4gIGZvcih2YXIgaT0wO3BpIT1udWxsJiZpPHBpLmxlbmd0aDtpKyspe1xcbiAgICB2YXIgbnVtID0gaSsxO1xcbiAgICB2YXIgcT1KU09OLnN0cmluZ2lmeShwaVtpXSk7XFxuICAgIGlmICghcGlbaV0udXJsKXtcXG4gICAgICAgdmFyIHJ1cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbO+8n++8n2FpZD3vvIbvvIZidmlkPScgKyBwaVtpXS5idmlkO1xcbiAgICAgICB9ZWxzZXtcXG4gICAgICAgICAgIHZhciBydXJsID0gcGlbaV0udXJsO1xcbiAgICB9XFxuXFxuICAgICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOnBpW2ldLnRpdGxlLFxcbiAgICAgICAgcGljX3VybDpwaVtpXS5waWMrUmVmZXJlcixcXG4gICAgICAgIGRlc2M6KCFxLmluY2x1ZGVzKCduYW1lJyk/cGlbaV0ubmV3X2VwLmluZGV4X3Nob3c6KCd1cDogJytwaVtpXS5vd25lci5uYW1lKSksXFxuICAgICAgICB1cmw6J2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPScrcnVybCsnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICAgICBjb2xfdHlwZToncGljXzFfY2FyZCdcXG4gICAgICB9KTtcXG4vKlxcbmQucHVzaCh7XFxuICAgICAgICB0aXRsZTonTm8uJytudW0rJ1xcXFxuXFxcXG7igJjigJg8c21hbGw+JytwaVtpXS50aXRsZSsnXFxcXG4nKyghcS5pbmNsdWRlcygnbmFtZScpP3BpW2ldLm5ld19lcC5pbmRleF9zaG93OigndXA6ICcrcGlbaV0ub3duZXIubmFtZSkpKyc8L3NtYWxsPicsXFxuICAgICAgICBwaWNfdXJsOnBpW2ldLnBpYytSZWZlcmVyLFxcbiAgICAgICAgZGVzYzonMCcsXFxuICAgICAgICB1cmw6J2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPScrcnVybCsnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICAgICBjb2xfdHlwZTonY2FyZF9waWNfMSdcXG4gICAgICB9KTtcXG4qL1xcbiAgICAgfVxcbiAgIH1lbHNle1xcbiAgICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTon4oCc4oCc6IqC5Yi25LiA54K577yM5LyR5oGv5ZWm77yB4oCd4oCdJyxcXG4gICAgICAgIGNvbF90eXBlOid0ZXh0X2NlbnRlcl8xJ1xcbiAgICAgIH0pO1xcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS7o+eggS11cPCfkLdcIixcInBhdGhcIjpcInVwXCIsXCJydWxlXCI6XCJjb25zdCBoZWFkQ29sb3IgPSBcXFwiIzM1OGNjZFxcXCI7XFxuXFxuLy/ml7bpl7TmiLPovazmjaLmlrnms5VcXG4vKlxcbmZ1bmN0aW9uIGdldExvY2FsVGltZShuUykgeyBcXG4gICAgIHZhciBzc3MgPSBuZXcgRGF0ZShwYXJzZUludChuUykpLnRvTG9jYWxlU3RyaW5nKCkuc3Vic3RyKDAsMTcpO1xcbiAgICAgdmFyIFlNRCA9IHNzcy5zcGxpdCgn5pelJylbMF0ucmVwbGFjZSgn5bm0JywnLScpLnJlcGxhY2UoJ+aciCcsJy0nKTtcXG4gICAgIHJldHVybiAoWU1EKVxcbn1cXG4qL1xcbmZ1bmN0aW9uIGdldExvY2FsVGltZShuUykge1xcbiAgICB2YXIgZGF0ZSA9IG5ldyBEYXRlKG5TKTtcXG4gICAgdmFyIFlZID0gZGF0ZS5nZXRGdWxsWWVhcigpICsgJy0nO1xcbiAgICB2YXIgTU0gPSAoZGF0ZS5nZXRNb250aCgpICsgMSA8IDEwID8gJzAnICsgKGRhdGUuZ2V0TW9udGgoKSArIDEpIDogZGF0ZS5nZXRNb250aCgpICsgMSkgKyAnLSc7XFxuICAgIHZhciBERCA9IChkYXRlLmdldERhdGUoKSA8IDEwID8gJzAnICsgKGRhdGUuZ2V0RGF0ZSgpKSA6IGRhdGUuZ2V0RGF0ZSgpKTtcXG4gICAgdmFyIHRpbWUgPSBZWSArIE1NICsgREQ7XFxuICAgIHJldHVybiB0aW1lXFxufVxcbnZhciBzciA9IGBAbGF6eVJ1bGU9LmpzOndyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL+aUtuiXjy50eHRcXFwiLGlucHV0KTtwdXRWYXIoJ3VwJywnJyk7cHV0VmFyKCdVUCcsJycpO3B1dFZhcignc2V0JywnJyk7cmVmcmVzaFBhZ2UoZmFsc2UpO1xcXCJ0b2FzdDovL+WIh+aNouaIkOWKn1xcXCJgO1xcbi8v5pe26Ze05oiz6L2s5o2iXFxuXFxudmFyIHVpZCA9IGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBfY2FjaGUudHh0XFxcIiwge30pO1xcbnZhciBVUF9VUkwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYXJjL3NlYXJjaD9taWQ9dWlkJnBzPTMwJnRpZD0wJmtleXdvcmQ9Jmpzb25wPWpzb25wJnBuPScgKyBwYWdlbnVtICsgJyZvcmRlcj1wdWJkYXRlJztcXG52YXIgdXBfdXJsID0gVVBfVVJMLnJlcGxhY2UoXFxcInVpZFxcXCIsIHVpZCk7XFxudmFyIHh4ID0gZ2V0VmFyKCdsYjInKS5zcGxpdCgnXFxcXG4nKTtcXG4vL+abtOaWsOWktOWDj1xcbmZvciAodmFyIGsgaW4geHgpIHtcXG4gICAgaWYgKCF4eFtrXS5zcGxpdCgnIyMnKVsxXSkge1xcbiAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICB2YXIgcGljID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYWNjL2luZm8/bWlkPScgKyB4eFtrXS5zcGxpdCgnJiYnKVsxXSArICcmanNvbnA9anNvbnAnLCB7fSkpLmRhdGEuZmFjZTtcXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICB2YXIgcGljID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkudmMuYmlsaWJpbGkuY29tL2R5bmFtaWNfc3ZyL3YxL2R5bmFtaWNfc3ZyL3NwYWNlX2hpc3Rvcnk/aG9zdF91aWQ9JyArIHh4W2tdLnNwbGl0KCcmJicpWzFdICsgJyZuZWVkX3RvcD0xJywge30pKS5kYXRhLmNhcmRzWzBdLmRlc2MudXNlcl9wcm9maWxlLmluZm8uZmFjZTtcXG4gICAgICAgIH1cXG4gICAgICAgIHZhciBmYWNlID0geHhba10gKyAnIyMnICsgcGljO1xcbiAgICAgICAgdmFyIGZhY2UgPSBmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwLnR4dFxcXCIsIHt9KS5yZXBsYWNlKHh4W2tdLCBmYWNlKTtcXG4gICAgICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwLnR4dFxcXCIsIGZhY2UpO1xcbiAgICB9XFxufVxcblxcblxcblxcbmlmIChNWV9VUkwuc3BsaXQoJyMnKVsxXSA9PSAnMScpIHtcXG4gICAgdmFyIHNfdGFiID0gZmV0Y2goJ2hpa2VyOi8vZmlsZXMvYmlsaS/mlLbol48udHh0Jywge30pO1xcbiAgICBpZiAoZ2V0VmFyKFxcXCJhY2Nlc3Nfa2V5XFxcIikgJiYgZ2V0VmFyKCdzdGFyaWQnKSkge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogc190YWIgPT0gJ+aOqOiNkCcgPyAn8J+UtCcgKyBnZXRIZWFkKHNfdGFiKSA6ICfimqrvuI/mjqjojZAnLFxcbiAgICAgICAgICAgIHVybDogJ+aOqOiNkCcgKyBzcixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogc190YWIgPT0gJ+aUtuiXjycgPyAn8J+UtCcgKyBnZXRIZWFkKHNfdGFiKSA6ICfimqrvuI/mlLbol48nLFxcbiAgICAgICAgICAgIHVybDogJ+aUtuiXjycgKyBzcixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogc190YWIgPT0gJ+i/veeVqicgPyAn8J+UtCcgKyBnZXRIZWFkKHNfdGFiKSA6ICfimqrvuI/ov73nlaonLFxcbiAgICAgICAgICAgIHVybDogJ+i/veeVqicgKyBzcixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogc190YWIgPT0gJ+i/veWJpycgPyAn8J+UtCcgKyBnZXRIZWFkKHNfdGFiKSA6ICfimqrvuI/ov73liacnLFxcbiAgICAgICAgICAgIHVybDogJ+i/veWJpycgKyBzcixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgICAgIH0pO1xcbiAgICB9XFxuICAgIC8v6Ieq5bex55qE5YWz5rOoXFxuICAgIHZhciBzdGFyanNvbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FjYy9pbmZvP21pZD0nICsgZ2V0VmFyKCdzdGFyaWQnKSArICcmanNvbnA9anNvbnAnLCB7fSkpO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IChnZXRWYXIoJ1VQJykgPT0gJ+WFs+azqCcgPyAn4pi677iPJyA6ICcnKSArIHN0YXJqc29uLmRhdGEubmFtZSxcXG4gICAgICAgIHBpY191cmw6IHN0YXJqc29uLmRhdGEuZmFjZSArIFJlZmVyZXIsXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ1VQJywgZ2V0VmFyKCdVUCcpPT0n5YWz5rOoJz8n5oqY5Y+gJzon5YWz5rOoJyk7cHV0VmFyKCdzZXQnLCcnKTtjbGVhclZhcignaHRtJyk7d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5pS26JePLnR4dCcsJycpO3JlZnJlc2hQYWdlKGZhbHNlKTsndG9hc3Q6Ly8nK2dldFZhcignVVAnLCfkuJPms6gnKVxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ2ljb25fMl9yb3VuZCdcXG4gICAgfSk7XFxuICAgIC8v6Ieq5bex55qE5YWz5rOoXFxuXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJzxzdHJvbmc+JyArICfigJjigJhVUOKAmeKAmScgKyAnPC9zdHJvbmc+JyArIChnZXRWYXIoJ3VwJywgJ+aKmOWPoCcpID09ICflsZXlvIAnID8gJ/CfmYknIDogJ/CfmYgnKSxcXG4gICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcigndXAnLCBnZXRWYXIoJ3VwJyk9PSflsZXlvIAnPyfmipjlj6AnOiflsZXlvIAnKTtwdXRWYXIoJ3NldCcsJycpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+aUtuiXjy50eHQnLCcnKTtyZWZyZXNoUGFnZShmYWxzZSk7J3RvYXN0Oi8v5beyJytnZXRWYXIoJ3VwJywn5bGV5byAJyk7XFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICB9KTtcXG5cXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBnZXRWYXIoJ3NldCcpICE9ICcnID8gKGdldFZhcignc2V0JykgPT0gJ+e9rumhticgPyAnPHN0cm9uZz4nICsgJ+KAnOKAnOe9rumhticgKyAnPC9zdHJvbmc+JyA6ICc8c3Ryb25nPicgKyAn4oCc4oCc5Y+W5YWz4oCd4oCdJyArICc8L3N0cm9uZz4nKSA6ICforr7nva4nLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdzZXQnLCBnZXRWYXIoJ3NldCcsJ+WxleW8gCcpPT0n5Y+W5YWzJz8n572u6aG2Jzon5Y+W5YWzJyk7cHV0VmFyKCd1cCcsJycpO3B1dFZhcignVVAnLCcnKTt3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS/mlLbol48udHh0JywnJyk7cmVmcmVzaFBhZ2UoZmFsc2UpOyd0b2FzdDovLycrZ2V0VmFyKCdzZXQnLCflsZXlvIAnKSsnaW5nfidcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxuICAgIH0pO1xcblxcbiAgICBpZiAoZ2V0VmFyKCdVUCcpID09ICflhbPms6gnKSB7XFxuICAgICAgICBpZiAoZ2V0VmFyKCdodG0nKSA9PSAnJyB8fCBnZXRWYXIoJ3VwJykgPT0gJ+WxleW8gCcpIHtcXG4gICAgICAgICAgICB2YXIgdXJscyA9IFtdO1xcbiAgICAgICAgICAgIHZhciBzdXJsID0gJ2h0dHBzOi8vc3BhY2UuYmlsaWJpbGkuY29tL2g1L2ZvbGxvdz90eXBlPWZvbGxvdyZtaWQ9JyArIGdldFZhcignc3RhcmlkJyk7XFxuICAgICAgICAgICAgdmFyIGlkID0gc3VybC5zcGxpdCgnbWlkPScpWzFdO1xcbiAgICAgICAgICAgIHZhciBjb2RlID0gZmV0Y2goc3VybCwge30pO1xcbiAgICAgICAgICAgIHZhciBzdGFybGlzdCA9IEpTT04ucGFyc2UoJ3tcXFwibXknICsgY29kZS5zcGxpdCgne1xcXCJteScpWzFdLnNwbGl0KCd9fTsnKVswXSArICd9fScpO1xcblxcbiAgICAgICAgICAgIHZhciBzdGFybHMgPSBzdGFybGlzdFsnbGlzdCddWydnZXRGb2xsb3dMaXN0LXBhZ2UtbWlkLScgKyBpZF1bJ3Jlc3VsdCddO1xcbiAgICAgICAgICAgIGZvciAoeCBpbiBzdGFybHMpIHtcXG4gICAgICAgICAgICAgICAgdmFyIHl1cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYXJjL3NlYXJjaD9taWQ9JyArIHN0YXJsc1t4XS5taWQgKyAnJnBzPTMwJnRpZD0wJmtleXdvcmQ9Jmpzb25wPWpzb25wJnBuPWZ5cGFnZSZvcmRlcj1wdWJkYXRlJztcXG4gICAgICAgICAgICAgICAgdXJscy5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHVybDogeXVybC5yZXBsYWNlKC9meXBhZ2UvZywgJzEnKVxcbiAgICAgICAgICAgICAgICB9KTtcXG5cXG4gICAgICAgICAgICAgICAgaWYgKGdldFZhcigndXAnKSA9PSAn5bGV5byAJylcXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHN0YXJsc1t4XS51bmFtZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHN0YXJsc1t4XS5mYWNlICsgUmVmZXJlcixcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvZ3oyP3VybD0nICsgeXVybCxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2ljb25fcm91bmRfNCdcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgfVxcbiAgICAvL+WFs+azqOWIl+ihqFxcblxcbiAgICBpZiAoZ2V0VmFyKCd1cCcpID09ICflsZXlvIAnICYmIGdldFZhcignVVAnKSAhPSAn5YWz5rOoJykge1xcbiAgICAgICAgZm9yICh2YXIgayBpbiB4eCkge1xcbiAgICAgICAgICAgIHZhciBzdCA9IHVpZCA9PSB4eFtrXS5zcGxpdCgnJiYnKVsxXS5zcGxpdCgnIyMnKVswXSA/ICfinJMnIDogJyc7XFxuICAgICAgICAgICAgdmFyIHBpYyA9IHh4W2tdLnNwbGl0KCcjIycpWzFdO1xcbiAgICAgICAgICAgIC8q5aS05YOP6I635Y+WXFxuICAgICAgICAgICAgICAgIHRyeXtcXG4gICAgICAgICAgICAgICAgIHZhciBwaWMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hY2MvaW5mbz9taWQ9Jyt4eFtrXS5zcGxpdCgnJiYnKVsxXSsnJmpzb25wPWpzb25wJyx7fSkpLmRhdGEuZmFjZTtcXG4gICAgICAgICAgICAgICAgfWNhdGNoKGUpe1xcbiAgICAgICAgICAgICAgICAgICB2YXIgcGljID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkudmMuYmlsaWJpbGkuY29tL2R5bmFtaWNfc3ZyL3YxL2R5bmFtaWNfc3ZyL3NwYWNlX2hpc3Rvcnk/aG9zdF91aWQ9Jyt4eFtrXS5zcGxpdCgnJiYnKVsxXSsnJm5lZWRfdG9wPTEnLHt9KSkuZGF0YS5jYXJkc1swXS5kZXNjLnVzZXJfcHJvZmlsZS5pbmZvLmZhY2U7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAqL1xcbiAgICAgICAgICAgIGlmICghcGljKSB7XFxuICAgICAgICAgICAgICAgIHZhciBwaWMgPSAnaHR0cHM6Ly9naXRlZS5jb20vQ2hlcmlzaFJ4L2ltYWdld2FyZWhvdXNlL3Jhdy9tYXN0ZXIvaW1hZ2UvMTMwOTY3MjVmZTU2Y2U5Y2Y2NDNhMGU0Y2QwYzE1OWMuZ2lmJztcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHN0ICsgeHhba10uc3BsaXQoJyYmJylbMF0sXFxuICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHkjJyArIHh4W2tdLnNwbGl0KCcmJicpWzFdICsgYEBsYXp5UnVsZT0uanM6aW5wdXQ9aW5wdXQuc3BsaXQoJyMnKVsxXTtwdXRWYXIyKCd1aWQnLGlucHV0KTt3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cF9jYWNoZS50eHRcXFwiLGlucHV0KTtwdXRWYXIoJ3VwJywn5oqY5Y+gJyk7cmVmcmVzaFBhZ2UoZmFsc2UpO1xcXCJ0b2FzdDovL+WIh+aNouaIkOWKn1xcXCI7YCxcXG4gICAgICAgICAgICAgICAgcGljX3VybDogcGljICsgUmVmZXJlcixcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdpY29uX3JvdW5kXzQnXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgIH1cXG5cXG4gICAgLy/lj5blhbPnm7jlhbNcXG5cXG4gICAgaWYgKGdldFZhcignc2V0JykgPT0gJ+WPluWFsycpIHtcXG5cXG4gICAgICAgIGZvciAodmFyIGsgaW4geHgpIHtcXG4gICAgICAgICAgICB2YXIgc3QgPSB1aWQgPT0geHhba10uc3BsaXQoJyYmJylbMV0gPyAn4pyTJyA6ICcnO1xcbiAgICAgICAgICAgIHZhciBwaWMgPSB4eFtrXS5zcGxpdCgnIyMnKVsxXTtcXG4gICAgICAgICAgICAvKuWktOWDj+iOt+WPllxcbiAgICAgICAgICAgICAgICB0cnl7XFxuICAgICAgICAgICAgICAgICB2YXIgcGljID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYWNjL2luZm8/bWlkPScreHhba10uc3BsaXQoJyYmJylbMV0rJyZqc29ucD1qc29ucCcse30pKS5kYXRhLmZhY2U7XFxuICAgICAgICAgICAgICAgIH1jYXRjaChlKXtcXG4gICAgICAgICAgICAgICAgICAgdmFyIHBpYyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLnZjLmJpbGliaWxpLmNvbS9keW5hbWljX3N2ci92MS9keW5hbWljX3N2ci9zcGFjZV9oaXN0b3J5P2hvc3RfdWlkPScreHhba10uc3BsaXQoJyYmJylbMV0rJyZuZWVkX3RvcD0xJyx7fSkpLmRhdGEuY2FyZHNbMF0uZGVzYy51c2VyX3Byb2ZpbGUuaW5mby5mYWNlO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgKi9cXG4gICAgICAgICAgICBpZiAoIXBpYykge1xcbiAgICAgICAgICAgICAgICB2YXIgcGljID0gJ2h0dHBzOi8vZ2l0ZWUuY29tL0NoZXJpc2hSeC9pbWFnZXdhcmVob3VzZS9yYXcvbWFzdGVyL2ltYWdlLzEzMDk2NzI1ZmU1NmNlOWNmNjQzYTBlNGNkMGMxNTljLmdpZic7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn4p2MJyArIHN0ICsgeHhba10uc3BsaXQoJyYmJylbMF0sXFxuICAgICAgICAgICAgICAgIHVybDogeHhba10gKyBgQGxhenlSdWxlPS5qczp2YXIgc2M9aW5wdXQrJ1xcXFxcXFxcbic7dmFyIHhyPWdldFZhcignbGIyJykrJ1xcXFxcXFxcbic7dmFyIHh6PXhyLnJlcGxhY2Uoc2MsJycpO3dyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9qcy91cC5qc1xcXCIseHopO3JlZnJlc2hQYWdlKGZhbHNlKTsndG9hc3Q6Ly/lj5blhbPmiJDlip/vvIHpk4HlrZDlho3op4Hwn6aGJ2AsXFxuICAgICAgICAgICAgICAgIHBpY191cmw6IHBpYyArIFJlZmVyZXIsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnaWNvbl9yb3VuZF80J1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICB9XFxuXFxuICAgIC8v572u6aG255u45YWzXFxuXFxuICAgIGlmIChnZXRWYXIoJ3NldCcpID09ICfnva7pobYnKSB7XFxuXFxuICAgICAgICBmb3IgKHZhciBrIGluIHh4KSB7XFxuICAgICAgICAgICAgdmFyIHN0ID0gdWlkID09IHh4W2tdLnNwbGl0KCcmJicpWzFdID8gJ+KckycgOiAnJztcXG4gICAgICAgICAgICB2YXIgcGljID0geHhba10uc3BsaXQoJyMjJylbMV07XFxuICAgICAgICAgICAgLyrlpLTlg4/ojrflj5ZcXG4gICAgICAgICAgICAgICAgdHJ5e1xcbiAgICAgICAgICAgICAgICAgdmFyIHBpYyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FjYy9pbmZvP21pZD0nK3h4W2tdLnNwbGl0KCcmJicpWzFdKycmanNvbnA9anNvbnAnLHt9KSkuZGF0YS5mYWNlO1xcbiAgICAgICAgICAgICAgICB9Y2F0Y2goZSl7XFxuICAgICAgICAgICAgICAgICAgIHZhciBwaWMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS52Yy5iaWxpYmlsaS5jb20vZHluYW1pY19zdnIvdjEvZHluYW1pY19zdnIvc3BhY2VfaGlzdG9yeT9ob3N0X3VpZD0nK3h4W2tdLnNwbGl0KCcmJicpWzFdKycmbmVlZF90b3A9MScse30pKS5kYXRhLmNhcmRzWzBdLmRlc2MudXNlcl9wcm9maWxlLmluZm8uZmFjZTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICovXFxuICAgICAgICAgICAgaWYgKCFwaWMpIHtcXG4gICAgICAgICAgICAgICAgdmFyIHBpYyA9ICdodHRwczovL2dpdGVlLmNvbS9DaGVyaXNoUngvaW1hZ2V3YXJlaG91c2UvcmF3L21hc3Rlci9pbWFnZS8xMzA5NjcyNWZlNTZjZTljZjY0M2EwZTRjZDBjMTU5Yy5naWYnO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ/CflJ0nICsgc3QgKyB4eFtrXS5zcGxpdCgnJiYnKVswXSxcXG4gICAgICAgICAgICAgICAgdXJsOiB4eFtrXSArIGBAbGF6eVJ1bGU9LmpzOnZhciBzYz1pbnB1dCsnXFxcXFxcXFxuJzt2YXIgeHI9Z2V0VmFyKCdsYjInKSsnXFxcXFxcXFxuJzt2YXIgeHo9eHIucmVwbGFjZShzYywnJyk7d3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2pzL3VwLmpzXFxcIixzYyt4eik7cmVmcmVzaFBhZ2UoZmFsc2UpOyd0b2FzdDovL+e9rumhtuaIkOWKn/CflJ0nYCxcXG4gICAgICAgICAgICAgICAgcGljX3VybDogcGljICsgUmVmZXJlcixcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdpY29uX3JvdW5kXzQnXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgIH1cXG5cXG5cXG59XFxuLy9kLnB1c2goe3RpdGxlOnh4fSk7XFxuaWYgKHNfdGFiID09ICfmjqjojZAnKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL2ZlZWRcXFwiKSkucnVsZSk7XFxufSBlbHNlIGlmIChzX3RhYiA9PSAn5pS26JePJykge1xcbiAgICBpZiAoTVlfVVJMLnNwbGl0KCcjJylbMV0gPT0gJzEnKSBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS92aWRlb1xcXCIpKS5ydWxlKTtcXG59IGVsc2UgaWYgKHNfdGFiID09ICfov73liacnKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL2RzalxcXCIpKS5ydWxlKVxcbn0gZWxzZSBpZiAoc190YWIgPT0gJ+i/veeVqicpIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvZmFuanVcXFwiKSkucnVsZSlcXG59IGVsc2UgaWYgKGdldFZhcignVVAnKSAhPSAn5YWz5rOoJyAmJiBnZXRWYXIoJ3VwJykgIT0gJ+WxleW8gCcgJiYgZ2V0VmFyKCdzZXQnKSA9PSAnJykge1xcbiAgICB2YXIganNvbiA9IHt9O1xcbiAgICBldmFsKCdqc29uPScgKyBmZXRjaCh1cF91cmwsIHt9KSk7XFxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwganNvbi5kYXRhLmxpc3Qudmxpc3QubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgIHZhciByID0ge307XFxuICAgICAgICB2YXIgaiA9IGpzb24uZGF0YS5saXN0LnZsaXN0W2ldO1xcbiAgICAgICAgdmFyIHQgPSBOdW1iZXIoai5jcmVhdGVkKSAqIDEwMDA7XFxuXFxuXFxuICAgICAgICB2YXIgdGltZSA9IGdldExvY2FsVGltZSh0KTtcXG5cXG4gICAgICAgIGlmIChqLnBsYXkgPiAxMDAwMClcXG4gICAgICAgICAgICB2YXIgcGxheSA9IChqLnBsYXkgLyAxMDAwMCkudG9GaXhlZCgxKSArICfkuIcnO1xcbiAgICAgICAgZWxzZVxcbiAgICAgICAgICAgIHZhciBwbGF5ID0gai5wbGF5O1xcblxcbiAgICAgICAgdmFyIHBpY3MgPSAoai5waWMuaW5kZXhPZignOicpICE9IC0xKSA/IGoucGljIDogJ2h0dHBzOicgKyBqLnBpYztcXG5cXG4gICAgICAgIHIucGljX3VybCA9IHBpY3MgKyBSZWZlcmVyO1xcbiAgICAgICAgci51cmwgPSAnaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9aHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbO+8n++8n2FpZD3vvIbvvIZidmlkPScgKyBqLmJ2aWQgKyAnI2ltbWVyc2l2ZVRoZW1lIyc7XFxuICAgICAgICByLnRpdGxlID0gai50aXRsZTtcXG4gICAgICAgIHIuY29sX3R5cGUgPSAnbW92aWVfMV92ZXJ0aWNhbF9waWMnO1xcbiAgICAgICAgci5kZXNjID0gJ+aXtumVv++8micgKyBqLmxlbmd0aCArICcgIOaSreaUvumHj++8micgKyBwbGF5ICsgJyAg5Y+R5biD5pel5pyf77yaJyArIHRpbWU7XFxuICAgICAgICBpZiAoai5sZW5ndGggIT0gXFxcIjAwOjAwXFxcIikge1xcbiAgICAgICAgICAgIGQucHVzaChyKVxcbiAgICAgICAgfTtcXG4gICAgfVxcbn0gZWxzZSBpZiAoZ2V0VmFyKCdVUCcpID09ICflhbPms6gnICYmIGdldFZhcigndXAnKSAhPSAn5bGV5byAJykge1xcblxcbiAgICBpZiAoZ2V0VmFyKCdodG0nKSA9PSAnJykge1xcbiAgICAgICAgaHRtID0gW107XFxuICAgICAgICB2YXIgeW0gPSBiYXRjaEZldGNoKHVybHMpLm1hcChmdW5jdGlvbihhKSB7XFxuICAgICAgICAgICAgdmFyIGggPSBKU09OLnBhcnNlKGEpLmRhdGEubGlzdC52bGlzdDtcXG4gICAgICAgICAgICBodG0gPSBodG0uY29uY2F0KGgpO1xcbiAgICAgICAgfSk7XFxuICAgICAgICBodG0gPSBodG0uc29ydChmdW5jdGlvbihhLCBiKSB7XFxuICAgICAgICAgICAgcmV0dXJuIGIuY3JlYXRlZCAtIGEuY3JlYXRlZDtcXG4gICAgICAgIH0pLm1hcChmdW5jdGlvbihhKSB7XFxuICAgICAgICAgICAgYS5jcmVhdGVkID0gZ2V0TG9jYWxUaW1lKE51bWJlcihhLmNyZWF0ZWQpICogMTAwMCk7XFxuICAgICAgICAgICAgcmV0dXJuIGFcXG4gICAgICAgIH0pO1xcbiAgICAgICAgcHV0VmFyKCdodG0nLCBKU09OLnN0cmluZ2lmeShodG0pKTtcXG4gICAgfSBlbHNlIGh0bSA9IEpTT04ucGFyc2UoZ2V0VmFyKCdodG0nKSk7XFxuICAgIHZhciBpID0gMDtcXG4gICAgdmFyIGsgPSAwO1xcbiAgICB2YXIgciA9IG5ldyBEYXRlKCk7XFxuICAgIHZhciBNID0gci5nZXRNb250aCgpICsgMTtcXG4gICAgdmFyIHREID0gci5nZXRGdWxsWWVhcigpICsgJy0nICsgKE0gPCAxMCA/ICgnMCcgKyBNKSA6IE0pICsgJy0nICsgKHIuZ2V0RGF0ZSgpIDwgMTAgPyAoJzAnICsgci5nZXREYXRlKCkpIDogci5nZXREYXRlKCkpO1xcblxcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IGh0bS5sZW5ndGg7IGorKykge1xcbiAgICAgICAgdHJ5IHtcXG5cXG4gICAgICAgICAgICBpZiAoaiAhPSAwICYmIGh0bVtqIC0gMV0uY3JlYXRlZCAhPSBodG1bal0uY3JlYXRlZCkgaSsrO1xcblxcbiAgICAgICAgICAgIGlmIChpICsgMSA9PSBNWV9VUkwuc3BsaXQoJyMnKVsxXSkge1xcbiAgICAgICAgICAgICAgICBpZiAoayA9PSAwKSB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgZGF0ZSA9IGh0bVtqXS5jcmVhdGVkO1xcbiAgICAgICAgICAgICAgICAgICAgaysrO1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGUgPT0gdEQpIGRhdGUgPSAnPHN0cm9uZz7ku4rlpKk8L3N0cm9uZz4nO1xcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+KAnOKAnOKAneKAnTxmb250IGNvbG9yPVxcXCIjMzU4Y2NkXFxcIj4nICsgZGF0ZSArICc8XFxcXGZvbnQ+JyxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vdXJsOmBAbGF6eVJ1bGU9LmpzOmNsZWFyVmFyKCdodG0nKTtyZWZyZXNoUGFnZShmYWxzZSk7J3RvYXN0Oi8v5Yi35paw5oiQ5YqfJztgXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBpZiAoaHRtW2pdLnBsYXkgPiAxMDAwMClcXG4gICAgICAgICAgICAgICAgICAgIHZhciBwbGF5ID0gKGh0bVtqXS5wbGF5IC8gMTAwMDApLnRvRml4ZWQoMSkgKyAn5LiHJztcXG4gICAgICAgICAgICAgICAgZWxzZVxcbiAgICAgICAgICAgICAgICAgICAgdmFyIHBsYXkgPSBodG1bal0ucGxheTtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBodG1bal0udGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICBpbWc6ICgoaHRtW2pdLnBpYy5pbmRleE9mKCc6JykgIT0gLTEpID8gaHRtW2pdLnBpYyA6ICgnaHR0cHM6JyArIGh0bVtqXS5waWMpKSArIFJlZmVyZXIsXFxuICAgICAgICAgICAgICAgICAgICBkZXNjOiAnVVA6JyArIGh0bVtqXS5hdXRob3IgKyAnICDml7bplb/vvJonICsgaHRtW2pdLmxlbmd0aCArICdcXFxcbuaSreaUvumHj++8micgKyBwbGF5ICsgJyAg5Y+R5biD5pel5pyf77yaJyArIGh0bVtqXS5jcmVhdGVkLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9aHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbO+8n++8n2FpZD3vvIbvvIZidmlkPScgKyBodG1bal0uYnZpZCArICcjaW1tZXJzaXZlVGhlbWUjJyxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV92ZXJ0aWNhbF9waWMnXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaSArIDEgPiBNWV9VUkwuc3BsaXQoJyMnKVsxXSkge1xcbiAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9IGNhdGNoIChlKSB7fVxcbiAgICB9XFxuXFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Luj56CBLeaXtuWFifCfkJRcIixcInBhdGhcIjpcInNnalwiLFwicnVsZVwiOlwiLy/liIbnsbtcXG5pZiAoTVlfVVJMLnNwbGl0KCcjJylbMV09PScxJyl7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL21vcmVcXFwiKSkucnVsZSlcXG5cXG5mb3IgKHZhciBpIGluIHdvcmQyKXtcXG4gICAgdmFyIGEgPSB3b3JkMltpXTtcXG4gICAgdmFyIGIgPSBjbGFzczJbaV07XFxuICAgIHZhciBjID0gYSArICcmJyArIGI7XFxuICAgIGQucHVzaCh7XFxuICAgIHRpdGxlOiBhPT1sYWIyPyBnZXRIZWFkKGEpOmEsXFxuICAgIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgoYyk9PntcXG4gICAgICAgIHB1dFZhcihcXFwibGFiMlxcXCIsYy5zcGxpdCgnJicpWzBdKTtcXG4gICAgICAgIHB1dFZhcihcXFwia2V5MlxcXCIsYy5zcGxpdCgnJicpWzFdKTtcXG4gICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgfSwgYyksXFxuICAgIGNvbF90eXBlOidmbGV4X2J1dHRvbidcXG4gICAgfSk7XFxufVxcbn1cXG4vL+WIhuexu1xcblxcbnZhciBtID0gTnVtYmVyKGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvbW91dGhzLnR4dFxcXCIse30pKTtcXG52YXIgdCA9IG08MD8wOm07XFxudmFyIG51bTEgPSBOdW1iZXIodCktMTI7XFxudmFyIG51bTIgPSBOdW1iZXIodCkrMTI7XFxudmFyIG51bTMgPSBOdW1iZXIodCktMTtcXG52YXIgbnVtNCA9IE51bWJlcih0KSsxO1xcbi8vdmFyIHRpbWVzdGFtcCA9IERhdGUucGFyc2UobmV3IERhdGUoKSk7XFxudmFyIHRpbWVzdGFtcCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcbnZhciBzdGFtcDEgPSB0aW1lc3RhbXAgLSB0KjMwKjI0KjYwKjYwKjEwMDA7XFxudmFyIHN0YW1wMiA9IHRpbWVzdGFtcCAtICh0KzEpKjMwKjI0KjYwKjYwKjEwMDA7XFxuLypcXG5mdW5jdGlvbiBnZXRMb2NhbFRpbWUoblMpIHsgXFxuICAgICB2YXIgc3NzID0gbmV3IERhdGUocGFyc2VJbnQoblMpKS50b0xvY2FsZVN0cmluZygpLnN1YnN0cigwLDE3KTtcXG4gICAgIHZhciBtbSA9IHNzcy5zcGxpdCgn5bm0JylbMV0uc3BsaXQoJ+aciCcpWzBdO1xcbiAgICAgdmFyIGRkID0gc3NzLnNwbGl0KCfmnIgnKVsxXS5zcGxpdCgn5pelJylbMF07XFxuICAgICB2YXIgWVkgPSBzc3Muc3BsaXQoJ+W5tCcpWzBdO1xcbiAgICAgdmFyIE1NID0gKG1tPCAxMCA/ICcwJyArIG1tOm1tKTtcXG4gICAgIHZhciBERCA9IChkZDwgMTAgPyAnMCcgKyBkZDpkZCk7XFxuICAgICByZXR1cm4gKFlZK01NK0REKVxcbn1cXG4qL1xcbmZ1bmN0aW9uIGdldExvY2FsVGltZShuUykgeyBcXG52YXIgZGF0ZSA9IG5ldyBEYXRlKG5TKTtcXG52YXIgWVkgPSBTdHJpbmcoZGF0ZS5nZXRGdWxsWWVhcigpKTsgXFxudmFyIE1NID0gU3RyaW5nKChkYXRlLmdldE1vbnRoKCkgKyAxIDwgMTAgPyAnMCcgKyAoZGF0ZS5nZXRNb250aCgpICsgMSkgOiBkYXRlLmdldE1vbnRoKCkgKyAxKSk7IFxcbnZhciBERCA9IFN0cmluZygoZGF0ZS5nZXREYXRlKCkgPCAxMCA/ICcwJyArIChkYXRlLmdldERhdGUoKSkgOiBkYXRlLmdldERhdGUoKSkpOyBcXG52YXIgdGltZSA9IFlZICsgTU0gKyBERDtcXG5yZXR1cm4gdGltZVxcbn1cXG4vL+aXtumXtOaIs+i9rOaNolxcbnZhciB0aW1lMSA9IGdldExvY2FsVGltZShzdGFtcDEpO1xcbnZhciB0aW1lMiA9IGdldExvY2FsVGltZShzdGFtcDIpO1xcbnZhciBTR0pfVVJMID0gJ2h0dHBzOi8vcy5zZWFyY2guYmlsaWJpbGkuY29tL2NhdGUvc2VhcmNoP21haW5fdmVyPXYzJnNlYXJjaF90eXBlPXZpZGVvJnZpZXdfdHlwZT1ob3RfcmFuayZvcmRlcj1jbGljayZjb3B5X3JpZ2h0PS0xJmNhdGVfaWQ9MjImcGFnZT0nK3BhZ2VudW0rJyZwYWdlc2l6ZT0xMCZ0aW1lX2Zyb209dGltZTImdGltZV90bz10aW1lMSc7XFxudmFyIFVSTCA9IFNHSl9VUkwucmVwbGFjZSgndGltZTEnLHRpbWUxKS5yZXBsYWNlKCd0aW1lMicsdGltZTIpLnJlcGxhY2UoJzIyJyxnZXRWYXIoJ2tleTInKSE9Jyc/Z2V0VmFyKCdrZXkyJyk6JzIyJyk7XFxudmFyIGpzb24gPSBKU09OLnBhcnNlKHJlcXVlc3QoVVJMLHt9KSk7XFxuXFxuaWYgKE1ZX1VSTC5zcGxpdCgnIycpWzFdPT0nMScpe1xcbmQucHVzaCh7XFxuICAgICAgICAgIHRpdGxlOicrMeW5tCcsXFxuICAgICAgICAgIHVybDpcXG5udW0xK2BAbGF6eVJ1bGU9LmpzOndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL21vdXRocy50eHQnLGlucHV0KTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+WIh+aNouaIkOWKnyAnYCxcXG4gICAgICAgICAgY29sX3R5cGU6J3RleHRfNCdcXG4gICAgICAgfSk7XFxuZC5wdXNoKHtcXG4gICAgICAgICAgdGl0bGU6Jy0x5bm0JyxcXG4gICAgICAgICAgdXJsOlxcbm51bTIrYEBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkvbW91dGhzLnR4dCcsaW5wdXQpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5YiH5o2i5oiQ5YqfICdgLFxcbiAgICAgICAgICBjb2xfdHlwZTondGV4dF80J1xcbiAgICAgICB9KTtcXG5kLnB1c2goe1xcbiAgICAgICAgICB0aXRsZTonKzHmnIgnLFxcbiAgICAgICAgICB1cmw6XFxubnVtMytgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS9tb3V0aHMudHh0JyxpbnB1dCk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/liIfmjaLmiJDlip8gJ2AsXFxuICAgICAgICAgIGNvbF90eXBlOid0ZXh0XzQnXFxuICAgICAgIH0pO1xcbmQucHVzaCh7XFxuICAgICAgICAgIHRpdGxlOictMeaciCcsXFxuICAgICAgICAgIHVybDpcXG5udW00K2BAbGF6eVJ1bGU9LmpzOndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL21vdXRocy50eHQnLGlucHV0KTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+WIh+aNouaIkOWKnyAnYCxcXG4gICAgICAgICAgY29sX3R5cGU6J3RleHRfNCdcXG4gICAgICAgfSk7XFxuZC5wdXNoKHtcXG4gICAgICAgICAgdGl0bGU6Z2V0SGVhZCgoJ+W9k+WJjeaXtumXtOe6vzogJyt0aW1lMisnficrdGltZTEpKSxcXG4gICAgICAgICAgXFxuICAgICAgICAgIGNvbF90eXBlOid0ZXh0X2NlbnRlcl8xJ1xcbiAgICAgICB9KTtcXG4vKlxcbmQucHVzaCh7XFxuICAgICAgICAgIHRpdGxlOiBnZXRMb2NhbFRpbWUodGltZXN0YW1wKS4gc3BsaXQoJ+aXpScpWzBdLFxcbiAgICAgICAgICBcXG4gICAgICAgICAgY29sX3R5cGU6J3RleHRfY2VudGVyXzEnXFxuICAgICAgIH0pO1xcbiovXFxufVxcbi8qXFxuZC5wdXNoKHtcXG4gICAgICAgICAgdGl0bGU6IGdldExvY2FsVGltZShzc3MpLFxcbiAgICAgICAgICBcXG4gICAgICAgICAgY29sX3R5cGU6J3RleHRfY2VudGVyXzEnXFxuICAgICAgIH0pO1xcbiovXFxuZm9yICh2YXIgaSBpbiBqc29uLnJlc3VsdClcXG57XFxuIHZhciByID0ge307XFxuIHZhciBqID0ganNvbi5yZXN1bHRbaV07XFxuIGlmIChqLnBsYXk+MTAwMDApXFxuICAgIHZhciBwbGF5ID0gKGoucGxheS8xMDAwMCkudG9GaXhlZCgxKSsn5LiHJztcXG4gZWxzZVxcbiAgICB2YXIgcGxheSA9IGoucGxheTtcXG4gZC5wdXNoKHtcXG4gICAgICAgICAgdGl0bGU6ai50aXRsZSxcXG4gICAgICAgICAgaW1nOidodHRwczonK2oucGljK1JlZmVyZXIsXFxuICAgICAgICAgIGRlc2M6J3Vw8J+QtzonK2ouYXV0aG9yKydcXFxcbuaSreaUvumHjzogJytwbGF5KycgICAgICAgIOWPkeW4g+aXpeacnzogJytqLnB1YmRhdGUvKisnXFxcXG7mj4/ov7A6JytqLmRlc2NyaXB0aW9uKi8sXFxuICAgICAgICAgIHVybDpcXG4naGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9aHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbO+8n++8n2FpZD3vvIbvvIZidmlkPScgKyBqLmJ2aWQrJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgICAgICBjb2xfdHlwZToncGljXzFfY2FyZCdcXG4gICAgICAgfSk7XFxufVxcblwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6aG16Z2iLeS6jOe6p1wiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG52YXIgcmVzID0ge307XFxudmFyIGQgPSBbXTtcXG52YXIgUmVmZXJlciA9ICdAUmVmZXJlcj1odHRwOi8vd3d3LmJpbGliaWxpLmNvbSc7XFxuLy/popzoibJcXG52YXIgQ29sb3JzID0gW1xcXCI0XFxcIiwgXFxcIjVcXFwiLCBcXFwiMFxcXCIsIFxcXCIxXFxcIiwgXFxcIkFcXFwiLCBcXFwiM1xcXCIsIFxcXCI4XFxcIiwgXFxcIjlcXFwiLCBcXFwiQlxcXCIsIFxcXCJDXFxcIiwgXFxcIkRcXFwiLCBcXFwiRVxcXCIsIFxcXCI2XFxcIiwgXFxcIjdcXFwiLCBcXFwiRlxcXCJdO1xcbnZhciBDb2xvciA9ICcjJztcXG5pZiAoZ2V0VmFyKCdZUycpID09ICfpmo/mnLonKSB7XFxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNjsgaSsrKSB7XFxuICAgICAgICB2YXIgbnVtID0gTWF0aC5jZWlsKChNYXRoLnJhbmRvbSgpICogMTUpKSAtIDE7XFxuICAgICAgICB2YXIgQ29sb3IgPSBDb2xvciArIENvbG9yc1tudW1dO1xcbiAgICB9XFxufSBlbHNlIHtcXG4gICAgdmFyIENvbG9yID0gXFxcIiNGQTcyOThcXFwiO1xcbn1cXG5cXG5mdW5jdGlvbiBnZXRIZWFkKHRpdGxlKSB7XFxuICAgIHJldHVybiAn4oCY4oCY4oCZ4oCZPHN0cm9uZz48Zm9udCBjb2xvcj1cXFwiJyArIENvbG9yICsgJ1xcXCI+JyArIHRpdGxlICsgJzwvZnJvbnQ+PC9zdHJvbmc+JztcXG59XFxuXFxuZC5wdXNoKHtcXG4gICAgZGVzYzogJzI1OCYmZmxvYXQnLFxcbiAgICBjb2xfdHlwZTogJ3g1X3dlYnZpZXdfc2luZ2xlJ1xcbn0pO1xcbnZhciBiYW5ndW1pID0gZ2V0UmVzQ29kZSgpO1xcbmlmIChNWV9VUkwuaW5kZXhPZignYXBpLmJpbGknKSA9PSAtMSkge1xcbiAgICB0cnkge1xcbiAgICAgICAgdmFyIGEgPSBmZXRjaChNWV9VUkwsIHt9KTtcXG4gICAgICAgIHZhciBiID0gSlNPTi5wYXJzZShhLnNwbGl0KCdcXFwiZXBMaXN0XFxcIjonKVsxXS5zcGxpdCgnfV0nKVswXSArICd9XScpO1xcbiAgICAgICAgdmFyIHJ1cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbD9haWQ9JmJ2aWQ9JyArIGJbMF0uYnZpZDtcXG4gICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgdmFyIGEgPSBmZXRjaChNWV9VUkwsIHtcXG4gICAgICAgICAgICByZWRpcmVjdDogZmFsc2VcXG4gICAgICAgIH0pO1xcbiAgICAgICAgdmFyIGIgPSBhLnNwbGl0KCd2aWRlby8nKVsxXS5zcGxpdCgnXFxcIicpWzBdLnNwbGl0KFxcXCI/XFxcIilbMF07XFxuICAgICAgICB2YXIgcnVybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWlsP2FpZD0mYnZpZD0nICsgYjtcXG4gICAgfVxcbiAgICB2YXIgYmFuZ3VtaSA9IGZldGNoKHJ1cmwsIHt9KTtcXG59XFxudmFyIGpzb24gPSBKU09OLnBhcnNlKGJhbmd1bWkpO1xcbnZhciB2ID0ganNvbi5kYXRhLlZpZXc7XFxudmFyIHAgPSB2LnBhZ2VzO1xcbnZhciBjYXJkID0ganNvbi5kYXRhLkNhcmQuY2FyZDtcXG52YXIgcmVsYXRlZCA9IGpzb24uZGF0YS5SZWxhdGVkO1xcbnZhciB0YWdzID0gZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvY2FjaGUvYmlsaWJpbGkyLnR4dFxcXCIsIHt9KTtcXG52YXIgc2V0dGluZzEgPSBgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvY2FjaGUvYmlsaWJpbGkyLnR4dCcsaW5wdXQpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5q2j5bi46aG16Z2i5YiH5o2i5oiQ5Yqf8J+RjOWPr+iDveW5tuayoeacieS7gOS5iOWPmOWMlidgO1xcbnZhciBzZXR0aW5nMiA9IGBAbGF6eVJ1bGU9LmpzOndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9jYWNoZS9iaWxpYmlsaTIudHh0JyxpbnB1dCk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/pmpDol4/pobXpnaLliIfmjaLmiJDlip/wn5GM5Y+v6IO95bm25rKh5pyJ5LuA5LmI5Y+Y5YyWJ2A7XFxudmFyIHRzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XFxudmFyIGxpa2VfdXJsID0gJ2h0dHBzOi8vYXBwLmJpbGliaWxpLmNvbS94L3YyL3ZpZXcvbGlrZSc7XFxudmFyIGNvaW5fdXJsID0gJ2h0dHBzOi8vYXBwLmJpbGliaWxpLmNvbS94L3YyL3ZpZXcvY29pbi9hZGQnO1xcbnZhciBhZGRfdXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS9wZ2MvYXBwL2ZvbGxvdy9hZGQnO1xcbnZhciBkZWxfdXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS9wZ2MvYXBwL2ZvbGxvdy9kZWwnO1xcbnZhciBjb250ZW50X3R5cGUgPSAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PXV0Zi04JztcXG52YXIgY19ib2R5X3R4dCA9ICdhY2Nlc3Nfa2V5PScgKyBnZXRWYXIoJ2FjY2Vzc19rZXknKSArICcmYWlkPScgKyBnZXRWYXIoJ2FpZCcpICsgJyZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZhdnR5cGU9MSZidWlsZD02MTMwNDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJmZyb209NyZmcm9tX3NwbWlkPXRtLnJlY29tbWVuZC4wLjAmbW9iaV9hcHA9YW5kcm9pZCZtdWx0aXBseT0xJnBsYXRmb3JtPWFuZHJvaWQmc19sb2NhbGU9emhfQ04mc2VsZWN0X2xpa2U9MSZzcG1pZD1tYWluLnVnYy12aWRlby1kZXRhaWwuMC4wJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMTMuMCUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCZ0cz0nICsgdHMgKyAnJnVwaWQ9MCZzaWduPThhYmJkZGQ4N2E2YmQ4MmUxZTQyY2IzY2ZmZDMyYmI5JztcXG52YXIgbF9ib2R5X3R4dCA9ICdhY2Nlc3Nfa2V5PScgKyBnZXRWYXIoJ2FjY2Vzc19rZXknKSArICcmYWlkPScgKyBnZXRWYXIoJ2FpZCcpICsgJyZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZidWlsZD02MTMwNDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJmxpa2U9MCZtb2JpX2FwcD1hbmRyb2lkJnBsYXRmb3JtPWFuZHJvaWQmc19sb2NhbGU9emhfQ04mc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4xMy4wJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnRzPScgKyB0cyArICcmc2lnbj00YTA4NjQ1YzI5OTRlYjY5MmFjMGNmYjBiZDc1NjljNic7XFxuXFxuaWYgKHZbJ3JlZGlyZWN0X3VybCddKSB7XFxuICAgIHZhciByZWRpcmVjdCA9IHZbJ3JlZGlyZWN0X3VybCddO1xcbiAgICB2YXIgeW0gPSBmZXRjaChyZWRpcmVjdCwge30pO1xcblxcbn1cXG5cXG5ldmFsUHJpdmF0ZUpTKFxcXCJYVWlGVDF2WFlXclV3K1ZocG5xbGcwTjB2QVdncGdsaDhNaForOXZQRDk5Tko1VmdlRmRIbXdhS2F3SXk2QzBoNkZGUWhFUTVSaEptVjBFUUhuTDl4eWJQSEFjaEFMN2haRVpkK2hiR0hWNWplRytuSzVRM2llNzhwdUdEYjFUSjRmQUk3ZzZlekxJalFNQnhOLzJYTTkyWU5OUEtESGRoTElNUUdWNjlNcThjVE9XaktwWlFwMC92Z051eGFQUUtFelNkSFFKdWU3dFR4ZFNFdkR0M3MvdHhkRWgvb0d6RkNDTldlWkNVVTUzemhFaEMwNnE2WkZqWkNNK2Q4RnNaNWNYbE5KZW10ZWdNZ0pVTGRUcWFWZFJ3VmhWWCsxdUJROU55MERwc05HeDJMd0hnT2psczlodzE0TGhFcXRoRWU3M3lQQkd2U2dLRUJkU1lnRzdjSzdoWVZURU5lR1RpUkF6S1BRN2pHRXFFSjhhYWRIT0hBZVNhMjVhQmJ6YzgxaGh4Z1h0aWFsWDhVcWVwbjdrNGcyR2tzcW9HM0pWSStxVGZXWnhQV3FOTS8walVYYnJVVENSWm5yekdWb3c2TndQUVhLcTNDREtsOWkrYVp2ZVd6NUlmNUVORVpHaVdsVzV6NGFKU0VjZXhDRHNpWmxvMS9RSklqMnJXb25FMHU1NGFoMi9aWi8vWkdvTUJKK2QxOUdtZXBrTEJEM24ycW9nS25qWmoycmpXcWdQYWRFZWUxWkloWjNTR2JtVGxKZjFBNEJZSXV1UHd2NGRHWmRSb0RXNjRCaEM1anVDbjZ3RG03WW15N0JYZjFzUWFGaW1FbnJTSWlIR2hNK1dLZzNJeVdlY3VoL0drKytNbU42QXh4Y3ZOQXlwOGJDNGh6Qk12WkovbDV0UnlhcG9tZENWNUJwaVhmamtXUm5ib3BJakkrV0tCM2ZDYVl5UmRlTkxFUktuRWxzY0RpejdVZW5McHJoWWMvYTRMc0dlTU1GVlo4WW84L3dHWUgzOEpcXFwiKVxcblxcbnZhciBwdXJsID0gJ2h0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS92aWRlby8nICsgdi5idmlkO1xcbnZhciBtb2RlID0gZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvY2FjaGUvYmlsaWJpbGkudHh0XFxcIiwge30pO1xcbnZhciBtb2RlX3VybCA9IGBAbGF6eVJ1bGU9LmpzOndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9jYWNoZS9iaWxpYmlsaS50eHQnLGlucHV0KTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+WIh+aNouaIkOWKnywg54K55Liq6KeG6aKR6K+V6K+V5ZCnKF5fXikgJ2A7XFxudmFyIHpsID0gXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcigncGFnZScsIGdldFZhcigncGFnZScpPT0n55u06ZO+Jz8n5YWz6ZetJzon55u06ZO+Jyk7cmVmcmVzaFBhZ2UoKTtpZihnZXRWYXIoJ3BhZ2UnKT09J+ebtOmTvicpeyd0b2FzdDovL+eCueWHu+S4i+aWueWIh+aNoua4heaZsOW6pvCfpJ8nfWVsc2V7J3RvYXN0Oi8v5bey5YWz6ZetJ31cXFwiO1xcbmlmIChtb2RlID09ICd5aGMnKSB7XFxuICAgIHZhciBsYXp5ID0geWhjXFxufVxcbmQucHVzaCh7XFxuICAgIHRpdGxlOiB2LnRpdGxlLFxcbiAgICBkZXNjOiAn5o+P6L+wOiAnICsgdi5kZXNjICsgJ+OAgOexu+WeizogJyArIHYudG5hbWUsXFxuICAgIHVybDogdGFncyA9PSAndXAnID8gJ2ZhbicgKyBzZXR0aW5nMiA6ICd1cCcgKyBzZXR0aW5nMSxcXG4gICAgaW1nOiB2LnBpYyArIFJlZmVyZXIsXFxuICAgIGNvbF90eXBlOiAnbW92aWVfMV92ZXJ0aWNhbF9waWNfYmx1cidcXG59KTtcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogJyAgJyArIGNhcmQubmFtZSxcXG4gICAgcGljX3VybDogY2FyZC5mYWNlICsgUmVmZXJlcixcXG4gICAgdXJsOiAnaGlrZXI6Ly9wYWdlL2d6MT91cmw9aHR0cHM6Ly9zcGFjZS5iaWxpYmlsaS5jb20vaDUvZm9sbG9377yf77yfdHlwZT1mb2xsb3fvvIbvvIZtaWQ9JyArIGNhcmQubWlkLFxcbiAgICBjb2xfdHlwZTogJ2ljb25fMl9yb3VuZCdcXG59KTtcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogJ+KAnOKAnOKtkO+4j1N0YXLigJ3igJ0nLFxcbiAgICB1cmw6ICdoaWtlcjovL2VtcHR5IycgKyBjYXJkLm5hbWUgKyAnJiYnICsgY2FyZC5taWQgKyBgQGxhenlSdWxlPS5qczppbnB1dD1pbnB1dC5zcGxpdCgnIycpWzFdO3ZhciBwaWMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hY2MvaW5mbz9taWQ9JytpbnB1dC5zcGxpdChcXFwiJiZcXFwiKVsxXSsnJmpzb25wPWpzb25wJyx7fSkpLmRhdGEuZmFjZTtpZighZ2V0VmFyKCdsYjInKS5pbmNsdWRlcyhpbnB1dC5zcGxpdCgnJiYnKVsxXS5zcGxpdCgnIyMnKVswXSkpe3ZhciB4cj1nZXRWYXIoJ2xiMicpKydcXFxcXFxcXG4nK2lucHV0KycjIycrcGljO3dyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9qcy91cC5qc1xcXCIseHIpOyd0b2FzdDovL+WFs+azqOaIkOWKnyd9ZWxzZXsndG9hc3Q6Ly/lubTovbvkurrvvIzogJflrZDlsL7msYEnfWAsXFxuICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbn0pO1xcblxcbmZ1bmN0aW9uIHJlcXVlc3RfYmlsaV9hcGkoYmFzZVVybCwgU2VjcmV0SWQsIFNlY3JldEtleSkge1xcbiAgICBpZiAoIVNlY3JldElkIHx8ICFTZWNyZXRLZXkpIHJldHVybiByZXF1ZXN0KGJhc2VVcmwpXFxuICAgIGV2YWwoZ2V0Q3J5cHRvSlMoKSlcXG4gICAgbGV0IG5vd0RhdGUgPSBuZXcgRGF0ZSgpO1xcbiAgICBsZXQgZGF0ZVRpbWUgPSBub3dEYXRlLnRvVVRDU3RyaW5nKCk7XFxuICAgIGxldCBzb3VyY2UgPSAnYmlsaS1hcGknO1xcbiAgICBsZXQgYXV0aCA9IFxcXCJobWFjIGlkPVxcXFxcXFwiXFxcIiArIFNlY3JldElkICsgXFxcIlxcXFxcXFwiLCBhbGdvcml0aG09XFxcXFxcXCJobWFjLXNoYTFcXFxcXFxcIiwgaGVhZGVycz1cXFxcXFxcIngtZGF0ZSBzb3VyY2VcXFxcXFxcIiwgc2lnbmF0dXJlPVxcXFxcXFwiXFxcIjtcXG4gICAgbGV0IHNpZ25TdHIgPSBcXFwieC1kYXRlOiBcXFwiICsgZGF0ZVRpbWUgKyBcXFwiXFxcXG5cXFwiICsgXFxcInNvdXJjZTogXFxcIiArIHNvdXJjZTtcXG4gICAgbGV0IHNpZ24gPSBDcnlwdG9KUy5IbWFjU0hBMShzaWduU3RyLCBTZWNyZXRLZXkpXFxuICAgIHNpZ24gPSBDcnlwdG9KUy5lbmMuQmFzZTY0LnN0cmluZ2lmeShzaWduKVxcbiAgICBzaWduID0gYXV0aCArIHNpZ24gKyBcXFwiXFxcXFxcXCJcXFwiXFxuICAgIHJldHVybiByZXF1ZXN0KGJhc2VVcmwsIHtcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICBcXFwiU291cmNlXFxcIjogc291cmNlLFxcbiAgICAgICAgICAgIFxcXCJYLURhdGVcXFwiOiBkYXRlVGltZSxcXG4gICAgICAgICAgICBcXFwiQXV0aG9yaXphdGlvblxcXCI6IHNpZ25cXG4gICAgICAgIH1cXG4gICAgfSlcXG59XFxuXFxuZXZhbFByaXZhdGVKUyhcXFwiTDdBdko0MUMrK2tsbEJNUEc5SlJUVXpRdkVqSlh3UnJmUmlKbUVCdWZVVHBMcGh3aGw2bTRxRWZKR05GY1RxdkROb1RaaStYV3o4SHh1N1UyVTU3c3NBb0JNZm8vZUE2OHp1VkRrWDgvTVZvcGxUek9xalVPNlY1cEVMWFlpRldYUnhGMnZvM1Y2cTJEQ05zWFJRMHl6NHZoMVRxeUxHbVFhS1pSRlhweTVBUWRLUlBrLzZVcDl2czk5YnZhbDRlVElZSnFZWWZZcytyUG14YUg4bWkzMjRBOEZaN1A2Rkp3ZStRb0EyN1lWK1cwOTNkSElVLzhHaG9VL1c2a3EwTCtnaURLQTRYTzNBQ0NFcTlraXFXTi9ERDVZaXVPSVdCdzFnb3pVZ05Ld1dRVGRGZ0xzTVpOay9qM1dBN2hLb0ZnOFNHREV6dGJCRGhmZ1d3QWJwUWlWcS9Lc2UxU2Vob0NTN3ltMk0xRWFoSnR4U2JtTE80RWd3d2JNL2dzTnhDbEhyZDdzcDMxVys0K21CTjZ3bnBZS29yYVZsa1NUNWlUU3VMYTI3M2NNOU5ubU5mZlIyOVFHZys3eE9XN25xOHkwSm41L2JQTDBCU1o1QXRScUxydnJzNk5YOVFhWFRpeVlDUVJVL0dSa3BzbzRkNkhNdktNTFdhaHhqT25GQ1JtdU1CK2tHNUFYNFJ2Y3JxVnh6TmVBSnVLQzVubEVmWGpEUlhvRTVsTThVS2JLU3VOZFJqSFRQRHBpRzA4Vm5yajRNZnExYVdvRHNuZFBZVWlJSjVPU3AyWlpMTzgrS1lJVmVHV3lJVlFhK2Rpa3JFUzcrYW5FVWJPc0xDeGZmZEFlVEtyY1RXNThVNmlsYUtwSUdabUFKSkk5NnFLOVpSc015TXVZWm5RRTVHcEtleCsydDR3OVk1cUZkd2lEMWRMNWFGb2o2YWVmY1pHR1Z3L1k5Z1UrWXZscGhiSVJQNlNFSXNsVjlhSC9xTkxQcms2MFZmdkxPbE01NU12bE1adHlOREpCZkNWWll2U3JBSFlIeDkxVjkyaG1PWSswUWVWRVVlQUxsK0hBVUpOdTNXa2NtRjNPTFhZb05NSHd6V1xcXCIpXFxuXFxuLy/oh6rlrprkuYlhcGnpoblcXG52YXIgbUFwaSA9IHtcXG4gICAgYXV0aG9yOiAnJyxcXG4gICAgdHlwZTogJycsXFxuICAgIGlkOiAnJyxcXG4gICAgYmFzZVVybDogJycsXFxuICAgIHNlY3JldElkOiAnJyxcXG4gICAgc2VjcmV0S2V5OiAnJ1xcbn1cXG5pZiAobUFwaS5iYXNlVXJsICYmIG1BcGkuc2VjcmV0SWQgJiYgbUFwaS5zZWNyZXRLZXkpIHtcXG4gICAgcHV0VmFyKCdhcGknLCBKU09OLnN0cmluZ2lmeShtQXBpKSlcXG59XFxuXFxudmFyIGFwaUluZGV4U3RyID0gZ2V0VmFyKCdhcGlJbmRleCcsICcnKVxcbnZhciBhcGlJbmRleCA9IHBhcnNlSW50KGFwaUluZGV4U3RyKVxcblxcblxcbnRyeSB7XFxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcC5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgdmFyIHBhcnQgPSB2LnZpZGVvcyAhPSAxID8gcFtpXS5wYXJ0IDogJ+W9k+WJjeinhumikeaXoOmAiembhu+8jOeCueWHu+atpOWkhOaSreaUvic7XFxuICAgICAgICBwdXRWYXIoJ1VBJywgJzt7VXNlci1BZ2VudEBNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wXFxcXFxcXFzvvJtcXFxcXFxcXO+8myBXT1c2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzQ5LjAuMjYyMy44NyBTYWZhcmkvNTM3LjM277yG77yG77yG77yGUmVmZXJlckBodHRwczovL3d3dy5iaWxpYmlsaS5jb20vdmlkZW99Jyk7XFxuICAgICAgICBldmFsUHJpdmF0ZUpTKFxcXCJpZm56cWFOcU5Sa042TnFHMGZaeDVNZXk0NzdPc01KT1RiVGQ5U2FqTWtmNVI1TzM5NkoyMkZ4a2JRYmtYWENwZ2dmdWFkNW8rM3A5N0xIV2JJcHRvdzRvK01SUXRhUDAvOHdpeUpDclpDYVpZVzY0d1UxQjYweFJCUXRiZEpDRWdSdUhob1pzYkdBWkJBNDMvVFh4R3dJa0Nja2JWNm56SGhtOTNEazVEaUM1STVIbitDZmlCTUU0eVFvMzlPVUp5M3BHQVdsakQxc25wekdoQmoxYjNIclR2eWtqRmFTUGduUy9NVWRKTWYwUVpJU05HVTh6NW92YW5Qc0grRjVXc1FnSGdJcXhXOWV2VjMrdGd5ZkxVZEZSME40RGx0TFlydzd2Q1BnelBRWC92d0JNUHk2WWNWdFNWS2piNlF6RmF1VE4rSjJJUllycGF5MTVha0Frb2ZhK1l4L2ZOVGVmNCs2WmFWem1YZVphRWFqMGJRL0hQWmlieFR6M1MrRG1VVmRnWXUwSFhNeTBDRkNYU3QzK2VPVU45YytFbVZBTHJOTjhPcVdyUGVrcnZGMXFOMVVLdjZrQmNCRVAvU3drdWZzM3ZNMDdmV3YvUk5KWUI3aEVoc29JeHl2SFFPaVBZQ1REK2VVcytmaCtVOWJSUkFVelJTbFhDemhXWGpEZkNKalkvOUIybDRScGgvbndvcEVNcWlpNXBKQ0pVUFRjL0g0VWZ3OUZPTFpteE1IYkVpV2ZmcDByZ2JwSG9LblJuendZZmcvUks3bjl6TEFkR0FLLzh1R2Ewc2xaNUlUMVhVZXFyUHNDcXQzTUg1RzJteXhCRGxxRDBZUVViNk5XaEk3cGpqcGluNmJXMnRod3pINE5UL1RwNENXcEhsVnljQlZXc1NnaEd5U0JFUVJwQlFLTE9UdjFFdk94Z0Z4aDlHWWN1OVQ2V1B1ZmJFbkRnL0xLOXJncjJwd29JM1lJajBwMkJiQm1YN3ZNaFB4S0tMcHhaaTQzSndWZjlIeG4zMU5hWVFpLzBTMXpUQ2c5UzI2dFVnQXE0OHJpK0VpM01IVWtJNldzTWJBNzNMbmZnQmo3N0RBbFFsNVFPa1V2L3BIaHlZbGlpUTJYWWFZeFNIK2hHNCt0QStLNnVQMGhES2VRTGsvZjl0N2krNllPMFUrOEdpL1h3SEFzdDZDTDdJL0tpQmZGUG5OWUx4WkJ4OUUwc1FlckkrOFlLRjJKZlRvdHZIZmM5aVNmM0xlQWNVeld5L0dzWXIyMHF6RTErMmhxVW54UWJxaUVqbGFNcWVyLy9RbzU4T3crRm1wUXAxd3UrN2hnZnI2UmtLNFl3eGtld2VYaE9SZkNCTnFJQkp6dHdaMWZCMG1icFJOM2NrbnpEaWNyYW1tM2pXa0RpWXpmL0pNM2hZczNjcnlsZEd5WHFyMjhKNnU4eExhU0RYRi95VVF3YlNGV0pNc3Q0K2lqUzNIN0RVNXdZamdraEV6aEJWS3g3MjRMVW1rcFVUYVJUajAwSmdDTXNsSER5eXZMU05aV2Mvc0luL3ZXU0FIVTlxMkNZUjdDOUNJa0d1STBrT0tIMG53S0tpMXhXZjladzFpdmdMeGtVbE9FSUZOcFE4WGQ0UnZpampHTHJ4UVIyem1zcnFMalRoanBuUjlyeWwycXVUbStIbXVpZWpzR01XR0lYS2t5cGRMWVBudmNIZkgyY2xXZ1U3MVZKeFdyejZLazdMaklHejZtRm9qNDVaWjdGL2oxdGpYTWg4bHJZQmxLZFhqemxEY3MyaHM5Sjl1QWN4S1dqUlhteTh1S0M0WnU3TWZWSzBrY0RmdnRBZmNrbmVuUmd3aFpGS3BTSHk2SDhmSWwwV25IUGJVU041L1ExSWlrOGthYUMwTVNiUjhLVjQ2dmhFZXZRZFBvZXhYN0NqcFNqWmtGQUtTRi8ya3VEWHlHc3pMejJoTk9rRzBpMUJta3hoamM2My9BUWx5S2l6azMwTUpCZk5QVkU2eTlxREVzZFhtTE1zb3VIOHA3MEh5SC9Lb2VseUFraStVZmRsS1FOajE3SG9ZR1NpblFrYmIyaUZXRzlORE9Xd3JqOFpRdVhUaU5LVFhKT3JIOGxUMSsxNjRFR2pYZTUrZnpmVW1BTTBDTFJNVFIvTnE1ek5WZ2U5UEYvVlBOZlUwZE5WY29MbVlQNkRUVTVPemcwYnNveDFhOFNnbmR4RlI5YlNOUnpabnpQR0pvNkhLR2NmYlZhU1VGUUNUZDZVYnpUZGNwTERUUXF1WndQRmJkZFNvWWpkc0Z1a25QQ0UyVXA2cmsvZTFkaDlLcjhtYUU4Rlk4Q09uQnU3QjFXZFBkeXVXZXo3eFB0c2h6QUl3UmVrSU9tRzBvbVNsYnh1WHcwYjlXdFBBWFJNVGVQZ2FiRHU4QnJ6MC80czBlb0JDUjZjdlhpd0tBWDhERkk5dno0Zm51ck5MZDdoWklrQ3ZBblQzUncvdFN0c1MrOHJGVW1HMDNpYVFtSm4zeVhhaVp3MU1TSGtSVnFXdERaOHpTQWtycW9ZQTdRM3V5WGRKTTZNcUNYRWJDZmdYbGdQNENBOGdMcjh0dndoNG5YRm1ZU2FhR2xFTVlDaGhWc1AwVG9uc2d5R2M2WkhyRitrSDJsREdTcXhNTmVCK1FUTnNOSGdyRVJyaHg2NnhPeWxzSVpFd0xDZXZuZm1RcC9DTHo0TWNDdDBGV3pobkpRMk5BaDgxMW1Pd2I0MmkzWE9qbnRrdEhUMnRRTVFRS0JnZFRuWWpHWUt3MEI0MTQxdWVCTmF3R2FaM2xMYVhXVDdZdUdRYUZLcFhkemttaTVzT2RqVlJ5U2tqVnBBOVlkRWFuU1E1Njg0U2pMWjNCdXRXTmt4SXAzZVF5NDNrK3hva2hQdndqVFZZcEdrYmJCR29DTTh6SUJEeGVxMjJMOUFrY05ZWHV6SmF5L05nM1R1WFdXS0F2MCs4ektkQ1J0dmFJVlliMDBNNWJDdVB4bENESWdWQ2pWQ0hYaWJxc3VQN2pLeVJ6M3RyOW5DWklYKytZQ0FhK1pkWEswUDJlZzF0bEp6ZVdnMjB6VWdFak9rbnNJRmtrMnVCZkwyVUVqTnhkbGxET0lTNzRHcjRCSGJxVEZPdkZCYTFqWmxQYnJmeHVOWTFxL0p6U2RjVkc5MjFlNDdPejhyRkRQdVZFN05mdGEybURmUWw3TTBKVE43VGllQllqZGFBWFBTOURPWU9Qc09WV1VsTzFReGNldHY1Z3dnSTBnSVZocGFYVEk2QXlDMm5ZNHZMaGZoVVpXcmJrZTZzYUd2K04rUWNyQVMvWHF6TlZPMThudGJmTXVlbEZpU25URlNpcllCTnlOYkoyeXRPazVIcU1IeHZPN2NEek1RN0UyemVKSGo4Unl2U0JtdlRxMGpCZExCaUlBaDdlSit4MkpvRVcvM0NiclRiZk95WnorSEZQc083aHN5VHpLYXJEcER2d2Q2R2xPS2dYMlNWbDNTVEQ0YUx1WGQwdk53VlpxSDZFaVJybDhhaFN6THdBRGNZTUlVQkRSd2VHWTNsbnRtdkNYMjF3S1Z0ZGVCR1RvVEtSekRPQVJOZnBHTmJGQkswcndxUHdLM3VZNHRpWHpobW15SmxENksyb1dVNGc5WFlXODJBQmxrNTJNbE9lUVlkMWhXSHJhd3BHcGJIQ0VjNGlxczhOMlNkYWE1QjlxTjRUWUIzWE5OdGkrck5JdEdnOU9wYXN1NW9mZkNGRkliTlptalRjOUVsSzRNd25PVzk5Q0dtNDAyTWE0L2VrMGxVSFBrck04VVc2TkNBRElvdkMwa21yVlVveG5TMEhReHNmZ1dRSWxrTlBEOUZVZk80aUpmMmYzaVRnenQ5aEUyT2dUMkNqS3dLcDhIQ2p1aGNhNUZjczFTbERsaFNBS2VITUg5dzJVZi9uNXVRNm5CMFdVV0NOc1J2OUROME1XZkN4VjdGTnhVbGEyd2NQSWJVdFlSTmpvRTlnb3lzQ3FmQndvN29YR2dDWkZscW03OHZ0cUNiZUsyOGlYempGY3QrNDh0MGtjNmJFaXFQMjhLbllGOG5BVm5GUUkyT0llUXZLYklIQXMvVFhsczI2M1FsYWpkSFVwTUtaTmsvQUJLRy8rcWtXMmRXUUU5V21QQ2VQT3ZkVm1BYVBNeDJ5N0xuM2oyN1VWUlBsSXBuaU82cjZXUDJkVDRhbWZwYTREVDl3OERrdEgwajM5WmE1S2JCanFZVDMwOEVhWDI3eFJ1L3EvTlhjWGhrWFA5SURaeVJTQ2N1Wmt4ZjZUWjRRS3BIbjV2empvdUlhY1NQTVR0YVN0cHlGRHZOR0hUK3hWNkVZdUJxNXIvZ0NkNk9oU2JMREtxSHp2Y0JDREJMTTJPUDQvRVIyc2h2N0dyTDJJYnN3S1hRWTVTVUlFMXg5bmVIMnI1R3g0MVAwYmZPVnBtbEx0Qk5NUkVQbE00alQwT0pqTXVoRC9PdUcyaDQ5UXhlSnFVS3FDcXJXOHJBV2JLSXFGN0RIeEQxbHowek5tNGpFZnNTNi9ZTFNsVHA0cjNjK0ZlZER2YVJpR1NpTG5HRTg3cTViRWR3SzdZYm5WQllNWDZiZENJc0s4UTA3UUprT3ljVU1mbWRDa3FWZTk3UmFDbmxhY0hRYWcwMjRlRm5XSEdGTy9yeC90VXZVWmljMndCcTYveDZqOEFKOEQybG5nbjhYN2FhQXI5UVZzblRKV1lWa3MwaHQzNFNZT01lay9pbkNtTXREc2tTck83K1dURWZDdUNLa2lwN1ZHejUySk1xMnZ6em1teUt5bzJxYThSaFVjY3lYaHltOFdHeDZvdSsrU2lKcXU2Zk16c3dNRzRUdFgvakxSZlgyNFQ4YW9ZcFozbzkzaTlTeGtRbzB0M09RMjBOSCs0bG9Ccld5a3dBU0dGcVdPWC81NTVIbm9Lakd1aGMrNmJNVkZnL2pTM3BESnNYbitmTXU3ZWlkSmF2eVo2VVpqaDBBOEtMNXI3anpBWG5XZTZFaTUvNFA2VnBPVUhZWEtBNXNyRWN6RnBIVVA5UmRWM0l1aUs3NkdQcTZwajVNNUxqS2R3TjVLQk5YdWwwYWdPZTJwSUlTY21zSEtQTXJiMU00MnNEbG9SUWhuZXBOaW84QVJ2MFlEMlE5R0pQT2NCSFU2RVRIV1l6MklpeW45UGlqWlI3WVNwMnA3eWlRQk5HcWpXWUdXdTZMTWxRSWRZUkNKOXBUUnp4dVU4cm56eHhrOFBRQ0Q1cERNUkVDNFpkTW9TWGNtY1ZjSHlNQ21BVUdtaVRSK09yQUNyTHBneWR2dEwra01IVXRaSHZINE1hUjdJeHZpSEZBRVFjenZxSjZMVWtzaTFFZE9MTUkvUnNQY04rUDVFeE1yMnhrMTc2UHNkL3VkanVoNVNTWXNoZmRDcWZrbzlOeGF6aTd5WUk1b2xHRUU0S2lYVXFVa0ZkM3F3a3ZISVZVSWFQMDc1UVQyeVh3VnBzTFRIYUR4ejZGZTNvMGg0TGtsaU84Z0dXYS9pcWtEL0RubThzcnkwaldWblA3Q0ovNzFrZ0IxUFpYd3BnYTAxckRmWWFWVE1WeXhHU0l5eXZMU05aV2Mvc0luL3ZXU0FIVTlqU0lqSWhSa2dweFQvS012NmlIOGxsV0hKMXRqOC9SVENGMENsMmY2V3dUYkZKWWNNYUZsbm1NaXMyQUxWT05QczZVTXZzTy9QT3c1Q2NyNzlzSnppZVdMTVZhT1ZHNC9lMVZQVFNBelk5SDg3T0NKWGV4K2lBT29XK0tBbnJpQnpBVkJkRnd5VXFJZW5MSlZzUkg3VnYzTlY3M01xcnFuL3BrekFYdGtpVUFYd3BLbVZ6ZGJlTkxsZWJva0Rrb21zc3J5MGpXVm5QN0NKLzcxa2dCMVBZM21UUm1TdFNrSGJ4QS9GdGNmaGIzMzRCb3oxWXVYNCtabnBCbFJTd3lUVEUxdUdMWWZlcFphMEo5cFRjOFkvR2JFNnpYdWErZmQzT1lrazRDcFk1aElOVkFOR2JHTUQxWVFscGNvL3IzQTZ2OEg3c2RPNUs3U2paOElUNUpTTFZzcEJGVTN5eXFqUGNkVkc5ZHlEL0xwR3hiVzI3UUJvLzh1MlZocGttOUxjTXczaDhoaXA2Q3pCNlRscHdUMVQ2N1hIa0d6OFVhMUMrU0wvRUV6ZXE5Szk4VlRTVzRGUHllY0ZZN0lVYzQwQVhQbXBxS0lxdGE3U2NqQVl2RDhoWkgzZDNVMVU1My9Tb2NKSEtEajRadjFqYm5GVHNqb2RqVjBmSGVZT2R0NTBQRldjT3hYWWF6OGpnZ2RsMDRCRUZGVWswU3BmdjJ6cmROMjU1S0ZyMW00Z1V4eTNLaTd5RkFQaGRLcnlDSi9oalRSSlFjVERuYTZ5UFNmc2VDRHRvUmttR3YweU5kRTBiaTljNHBXUFFnclZpMFFqZHpIMjVYME5uSkFrbDVZVWlrUGxsRlpYaG4yZFF6TG1NaktQMlJLNkxLUkE1QXBIZ09YWlduR3QwQW1jZlV5dXR3MEdZUkc5ZXdvS0FZUTM4SnRLdlJzZFZJaTZGYzRNeWplMkJid3VMb3QrbDZZeHhQMkZla1Vra2k5OGdiUXEwQ2xwdmJoWjJuNXZjNXFJWjFmdmJTTnRlTkhpMk5zRFcraFVYRThPWWgzQXg5d0FLNkJoTTBEaW54bzZPVm96OGFseHE0NHR0cWtpQVI3RzhIWHptdU1OakxzK2E5K1FJOXFlNkRTYkFCUWo3VUZFaFBjVjFlL2dQVC93Ui9zNW95U1NMdjMzMHRqcnp3bzdwbExvdW5jL3NhN1VlQXhCZXJRVXF5MkFsNDFEYXdGTGVLK21hK2FPTWJPZVo4ZElCYkdaaldSSjZqWFpJZU01ZGtXb2FZNWNSUmNDcDA5cUZtbWhsL2NXc1FWMi9LZnEvRGEydTM4U2ZYckkxVksyZWc3QzJPdms1U1Njc2xzUk5RMFFnb3RDKzRNQ1VSRU04OVJlN0lCOS9pd1d2Kzc5cUkzUy9IbktmeHJ1RnZPV040L3dXSFI2OW9jYWhHeE8vMXQ5dVpRc0tMOE5oNG1GK0xBRllqaForUjRJcEJWdGVYeTZmR2xXOGFRUTFzem0vUzlpSWsrallja2tTbm9WaVladG0ydkdzWlZDSU9jbDB2ckxIbVpNVnlpL0dKOFQ5bC9pU1FxKzlOQURtV1N3UnNXOWpyS1IydXl3R3M5QmhGZXNiVjRYSlhFdnhNTUtqSHB3aHRaRFFBRktLTGZqVTRsTHVQMWtHMUd6M2ZRZ1ZHMENLZ1FyR3h3eWc5Sk5GeDhsSzBwZEVPTytEYVh6VHJIb1h4TTBiSXNmY0xZQ3dLNWxsSUNLQWs4Wk1UNk10YUhNdjB5N2V2TWpCWi8xWWx2UTlla0wwZjYrN2hXN2JHVGhFT3k3eDlJeXliYm85eFU4a0dRMEl3U3lzYkg3OTlleWZLbmxaWlhkVS9ueDRXbjFhMUNQeWdLMTRLdGlYVGRGRFEyTGdDT24ycW9QWmY3TnRJRnhkTDZ5YWVwK0NxcTJ1RU5vcGcwRHp4VHpIYnFYNkRtY1A3UHllakhOT1ZVZzN3REYyUndkM0lreVlDcWdabk42RXJXMVYyNm9pbEZZeVhGWit2N0VIRThCNk1oTG54dExHa1JaWjArRkZJNktuK1hvZTdMTCsyWmFEbzQveXlua1ZSN0JGdVNxaHRLTHZ6amRieVlvVG93aW04NWM2UnEvUkNYdHdnOVJnNHFTRVJHampaeUZjSlEvUTZhSmJ2MExwRXlSbjNxcHA3NXVUM3pjYlRTUlJUVmp6dmN1WElFcmdyMUQvUHVnRm1oT1dlLzJwQjE1alU0MGllKzNjODlveWlhZUlPLzVza2R3UVB6ZzYvWUhOVi8xc1ZWZ09LYVc0STdRQWthU090ZFZQbTZINnd2bHlYRUNBTnZoQ01HZWxGQWUxald2ZEJNdW5WUjhOMlJGU0FPOE1rSUo2bzhMdlVvektEa01RQnQ1cC9jV3NRVjIvS2ZxL0RhMnUzOFNmWEQ1MmdLRDZIOFhWS0ZmbURIYW9TaE1zcnkwaldWblA3Q0ovNzFrZ0IxUGFtYjBxYWJUODNENnFuL2EzR2xIeUd4YW1aZ1JIYUsxNnZtWkV6YW51VERPekcxYVVwdkVDdFJCOEVNZ2FwYVFYTEs4dEkxbFp6K3dpZis5WklBZFQyNnZGcGdhMFpSTFdSUDNqSDB0eXJOWUE3NWVDVGY5ZElxallHY0FBMXJzVTB6ZWVwZE1aOE1KWGQ1K3hiQWFYQS91SmZzR2pQSTdwc1FjOEpuK2ZtM01MaytOQ0VGOExzUTBPdGdsSVhMKzYzRlJ2eUc3bk1jZXZINGkvWFQwQjFCWE5QTDZyOGk2Ym5iZStRSktZTUE5M1BkYkJjRHNHVFZhTGlKbFlkRU9UZmpZYnBMVVJDZGx4OUsvcHVFWFcrXFxcIilcXG5cXG4gICAgICAgIGlmICh2WydyZWRpcmVjdF91cmwnXSkge1xcbiAgICAgICAgICAgIHZhciBlcCA9IEpTT04ucGFyc2UoeW0uc3BsaXQoJ1xcXCJlcExpc3RcXFwiOicpWzFdLnNwbGl0KCd9XScpWzBdICsgJ31dJyk7XFxuICAgICAgICAgICAgdmFyIHNlYXNvbl9pZCA9IHltLnNwbGl0KCdcXFwic2Vhc29uX2lkXFxcIjonKVsxXS5zcGxpdCgnLCcpWzBdO1xcbiAgICAgICAgICAgIGxvZyhzZWFzb25faWQpXFxuICAgICAgICAgICAgcHV0VmFyKCdhaWQnLCBTdHJpbmcoZXBbMF0uYWlkKSk7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IG1vZGUgPT0gJ+ebtOmTvicgPyBnZXRIZWFkKCfnm7Tpk74nKSA6ICfnm7Tpk74nLFxcbiAgICAgICAgICAgICAgICB1cmw6ICfnm7Tpk74nICsgbW9kZV91cmwsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn572R6aG1JyxcXG4gICAgICAgICAgICAgICAgdXJsOiBwdXJsLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBpZiAoZ2V0VmFyKCdsaWtlX3R5cGUnKSA9PT0gJ+W8gOWQrycmJmdldFZhcignYWNjZXNzX2tleScpKSB7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+eCuei1nicsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQobGlrZV91cmwpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdHMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY29udGVudF90eXBlID0gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD11dGYtOCc7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxfYm9keV90eHQgPSAnYWNjZXNzX2tleT0nICsgZ2V0VmFyKCdhY2Nlc3Nfa2V5JykgKyAnJmFpZD0nICsgZ2V0VmFyKCdhaWQnKSArICcmYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYnVpbGQ9NjEzMDQwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZsaWtlPTAmbW9iaV9hcHA9YW5kcm9pZCZwbGF0Zm9ybT1hbmRyb2lkJnNfbG9jYWxlPXpoX0NOJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMTMuMCUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCZ0cz0nICsgdHMgKyAnJnNpZ249NGEwODY0NWMyOTk0ZWI2OTJhYzBjZmIwYmQ3NTY5YzYnO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsX2NvZGUgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6IGNvbnRlbnRfdHlwZVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5OiBsX2JvZHlfdHh0LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2cobF9jb2RlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8vJyArIGxfY29kZS5kYXRhLnRvYXN0O1xcbiAgICAgICAgICAgICAgICAgICAgfSwgKSxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5oqV5biBJyxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJChjb2luX3VybCkubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0cyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb250ZW50X3R5cGUgPSAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PXV0Zi04JztcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY19ib2R5X3R4dCA9ICdhY2Nlc3Nfa2V5PScgKyBnZXRWYXIoJ2FjY2Vzc19rZXknKSArICcmYWlkPScgKyBnZXRWYXIoJ2FpZCcpICsgJyZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZhdnR5cGU9MSZidWlsZD02MTMwNDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJmZyb209NyZmcm9tX3NwbWlkPXRtLnJlY29tbWVuZC4wLjAmbW9iaV9hcHA9YW5kcm9pZCZtdWx0aXBseT0xJnBsYXRmb3JtPWFuZHJvaWQmc19sb2NhbGU9emhfQ04mc2VsZWN0X2xpa2U9MSZzcG1pZD1tYWluLnVnYy12aWRlby1kZXRhaWwuMC4wJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMTMuMCUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCZ0cz0nICsgdHMgKyAnJnVwaWQ9MCZzaWduPThhYmJkZGQ4N2E2YmQ4MmUxZTQyY2IzY2ZmZDMyYmI5JztcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY19jb2RlID0gSlNPTi5wYXJzZShyZXF1ZXN0KGlucHV0LCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiBjb250ZW50X3R5cGVcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keTogY19ib2R5X3R4dCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCdcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9nKGNfY29kZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+aKleS6hjHkuKrluIEnO1xcbiAgICAgICAgICAgICAgICAgICAgfSwgKSxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn6L+955WqJyxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJChhZGRfdXJsKS5sYXp5UnVsZSgoc2Vhc29uX2lkKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNvbnRlbnRfdHlwZSA9ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9dXRmLTgnO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhZGRfYm9keV90eHQgPSAnYWNjZXNzX2tleT0nK2dldFZhcignYWNjZXNzX2tleScpKycmYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYnVpbGQ9NjA5MTAwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZtb2JpX2FwcD1hbmRyb2lkJnBsYXRmb3JtPWFuZHJvaWQmc19sb2NhbGU9emhfQ04mc2Vhc29uX2lkPScrc2Vhc29uX2lkKycmc3RhdGlzdGljcz17XFxcImFwcElkXFxcIjoxLFxcXCJwbGF0Zm9ybVxcXCI6MyxcXFwidmVyc2lvblxcXCI6XFxcIjYuOS4xXFxcIixcXFwiYWJ0ZXN0XFxcIjpcXFwiXFxcIn0mdHM9Jyt0cysnJnNpZ249YzY0YjRjNTA4MzJkMjllNDBhM2RkZWRlZDM2NjcxMzUnO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhZGRfY29kZSA9IEpTT04ucGFyc2UocmVxdWVzdChpbnB1dCwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogY29udGVudF90eXBlXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IGFkZF9ib2R5X3R4dCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCdcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9nKGFkZF9jb2RlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8vJyArIGFkZF9jb2RlLnJlc3VsdC50b2FzdDtcXG4gICAgICAgICAgICAgICAgICAgIH0sIHNlYXNvbl9pZCksXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+WPlua2iCcsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQoZGVsX3VybCkubGF6eVJ1bGUoKHNlYXNvbl9pZCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0cyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb250ZW50X3R5cGUgPSAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PXV0Zi04JztcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGVsX2JvZHlfdHh0ID0gJ2FjY2Vzc19rZXk9JytnZXRWYXIoJ2FjY2Vzc19rZXknKSsnJmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmJ1aWxkPTYwOTEwMDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImbW9iaV9hcHA9YW5kcm9pZCZwbGF0Zm9ybT1hbmRyb2lkJnNfbG9jYWxlPXpoX0NOJnNlYXNvbl9pZD0nK3NlYXNvbl9pZCsnJnN0YXRpc3RpY3M9e1xcXCJhcHBJZFxcXCI6MSxcXFwicGxhdGZvcm1cXFwiOjMsXFxcInZlcnNpb25cXFwiOlxcXCI2LjkuMVxcXCIsXFxcImFidGVzdFxcXCI6XFxcIlxcXCJ9JnRzPScrdHMrJyZzaWduPWM2NGI0YzUwODMyZDI5ZTQwYTNkZGVkZWQzNjY3MTM1JztcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGVsX2NvZGUgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6IGNvbnRlbnRfdHlwZVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5OiBkZWxfYm9keV90eHQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhkZWxfY29kZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovLycgKyBkZWxfY29kZS5yZXN1bHQudG9hc3Q7XFxuICAgICAgICAgICAgICAgICAgICB9LCBzZWFzb25faWQpLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJycsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnYmxhbmtfYmxvY2snXFxuICAgICAgICAgICAgfSk7XFxuXFxuXFxuXFxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlcC5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgICAgICB2YXIgYmFkZ2VUeXBlID0gZXBbaV1bJ2JhZGdlVHlwZSddID09PSAwID8gKChlcFtpXVsnYmFkZ2UnXSAhPSAnJykgPyAn8J+SsCcgOiAn8J+GkycpIDogJ/Cfk6InO1xcbiAgICAgICAgICAgICAgICB2YXIgYmFkZ2UgPSBlcFtpXVsnYmFkZ2UnXSA/ICdbJyArIGVwW2ldWydiYWRnZSddICsgJ10nIDogJydcXG4gICAgICAgICAgICAgICAgaWYgKG1vZGUgPT0gJ1g1Jykge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIHB1cmwgPSAneDVSdWxlOi8vJyArIGp4ICsgJ2h0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS9iYW5ndW1pL3BsYXkvZXAnICsgZXBbaV1bJ2lkJ10gKyAnQCc7XFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgcHVybCA9ICdodHRwczovL3d3dy5iaWxpYmlsaS5jb20vYmFuZ3VtaS9wbGF5L2VwJyArIGVwW2ldWydpZCddO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIHZhciBwaWNzID0gKGVwW2ldWydjb3ZlciddLmluZGV4T2YoJzonKSAhPSAtMSkgPyBlcFtpXVsnY292ZXInXSA6ICdodHRwczonICsgZXBbaV1bJ2NvdmVyJ107XFxuICAgICAgICAgICAgICAgIHZhciB0aXRsZXMgPSAoZXBbaV1bJ3RpdGxlRm9ybWF0J10pID8gZXBbaV1bJ3RpdGxlRm9ybWF0J10gOiBlcFtpXVsndGl0bGUnXTtcXG4gICAgICAgICAgICAgICAgdmFyIGRlc2MgPSAoZXBbaV1bJ2xvbmdUaXRsZSddKSA/IGVwW2ldWydsb25nVGl0bGUnXSA6IChlcFtpXVsnbG9uZ190aXRsZSddID8gZXBbaV1bJ2xvbmdfdGl0bGUnXSA6ICcnKTtcXG4gICAgICAgICAgICAgICAgZXZhbFByaXZhdGVKUyhcXFwiaWZuenFhTnFOUmtONk5xRzBmWng1TWV5NDc3T3NNSk9UYlRkOVNhak1rZkxLOHRJMWxaeit3aWYrOVpJQWRUMk5LWE94TUwzNHRQc0pjYkZnWXEySXdlcVJXbGN0bm5uNDZkSkhHQW9RNlMrVHhzV0paM0VMYlVBRWYxVnYyeG9NcmtsM0tvcVd0bzF1N3U5U1V2TnRqMXV4QzRlbnVaSUUzSU9WSllmdWxyU0l1cW5NRTgraGxWMzhCU3RaQ2tKZjBpVzNIZEYyaXNCSEV4VFpmNGxwQzJLZjR1QXNQZlJxVThOOWpiUDQrcXpQcllyRytZYVd0K2ludzlaYUdOYTYwN0Z1dkxnSCs0dlpibWYvdEduUnphUXZmMHJodlBuZkJlRXlhTUF6bW12QU14NHUwbzQycnhIbU5LU3gvMlZabElxK1JxQ1p4SkozYktjUUg0K0YvZDBHNVltWHlPUFpSTllNN1JvQno4emVRRS9ocUJyVWJyU2RiM1Z3OFNEc0V4VTJoV09Fci8wNTJuNzRTRWRXV2RjMzdrOUJMYVZQSnJkUEZxM3IrWmg4ZjZpV2c2TlhCckIrdFVsR1NWVGpaZnNMRDJyQmZwdVBlUVFXZEFFclFKaElGTTk1UHhoM1M0Qkh0VW9kWjNGMjJtaXRMRWY4NklQbzE4eXJnSE1XVmFRYTR1UUE0Wk1EVDFhaE04NWs2KzdMVG1QdHo2T05BeHZ5SVQ3NXNDeFNjazBYc0xsaEc5Z1Y4clUwZmxEM2UraVdla2prMVh5cm1kY0tmRkhHeXZJZnFXRDZ6TVJBZEZJSXlYeE4zc3RidE5pM2JRTVVaZ2JZbW1yM1FsZTBqQUhvWlJNSGRsMUJyUzFzZG1MZXBXeHlIQzhyNlUzNUhtQlFOSHBkdnppNzdXR0dyNDRRNE1ndjVSWGJKOWVKT0ZHemxoclRzRFF6M3dBU1d6UzdKeEc4Y2s1ZlYwdVRSY2pnSlBGQ0k4NmV4RDY0VDh0bXNrZWtXWE10WlVqbE5JVFA5Uk9QTktHbnd6cmhGVjJSdlZxTkcwRUZJc1cxV3ViYXRhc2lKNmZYbUJURjBndE1tQksxYXMzSkhXUmhLcmdZZ0ZBU2QrRTRLVUF1TVBMdFFiMGZ0bHlRaUFUVnNhUnJGemJrcHVZbE1BczFQOVZpVWovRXhvWHFBTWFROFpKem90c1B2ancrS1BGTWZudzhCOUVRY3ZaN2NBb0tLTzYrbkRTeUhlTTFldy91b1dIMlhKTkdMMVBVYzlzMVRVYmFLdFViUzI2aFdOR01yR3pHMnUxNm9UbERmeHpCN0tMam15SWlDaEI3NDZDTzNUblp6WHA0cyt2MS9yZmdQWXlBU0dqRWpSTjlxTWF6N0lsL21MUGlFVURhanJOK0FVKzZVWmxTVUtaYWFtemovNHRKdGxtcEEzaTE5RDdJc3cxa0R6SHdMc1lmbUhNU2trdi84REpwUDJWRFBHMkZBb1Jaa2xSY2M5ZVVkYXV5TCtRaENSelJBQnF2cHplMklZVVRNTUdrV21XMnpVRnJkN1ZTc3NyeTBqV1ZuUDdDSi83MWtnQjFQWTVZbzgxcWk4aFhXRkcvc2tWaTFZVHBjMFY2NVVnWjZKTElCNktwMk9vczgzb2dpU0ZNREppc1QyT0VDNkdVeGhiVlhicWlLVVZqSmNWbjYvc1FjVHd5KzMyd0tUeldWLzAzaDJSb1dkSjJub2wwdUNNR1k5YURDUFViWldVZWFmTEs4dEkxbFp6K3dpZis5WklBZFQyQUxTWm9waXZNTTRIVk5GM21ZMlhMMUEzamVzSUF0eERSL3ZCOC9BSWwvV0xyR0xia1AyU0p4OEJLbTFoU05vZ1d5ZDR6WjF3YUpxcE5jTGIwbHBmdHpqM0J3MWtneU1ZcFMvbkY1LzRkNTJaTGtHR3phVU1PM0t4aWhQSTB2VjQvNlZlbWZGT0x3elhrUldyeFJ5aEZ4UE1jc0dBNmVBcEhvMWhjMWs5bTFWL0NWdVdXY3lncStSMXB6NGFXb3FKS3B0dlRSdWd2MTRod0pUKzdyd0dXaXRPRlZ1SzNOMTBhclFLVlo2a1Q5VUN2R0s0R1JrdVpqbC9kYkpmNEF4YWM4RmZNK3RPL29LTllCODUwaDZnQ2JUbUwzVFcyRXVGdVNEb1k1cWtNeTIyaTF1MmVLT3l0UjRTUkxGTDRMditwRXFmSGNzb0xtajcveklVcU9OQ2twaFNGTTZkZnlkQ0c5YzRWNUFzb204cU9Cb3V6dGdCektVSFQwbzcwYlEzVVRpdDE3QlpvVmNxY2JlSmV5ZHZXM0hDYVZaeTJ3aHd3TjNiMTZWSGwvL0g0ZzBnaUtmRjU3aEplNHppU1ZuRjJwV3NHclI1ZHpyTzBwZXF3QWdadG9CRG8vbWFMWGhvem1HZllBYzd3eldtYlhRZUp2L1FCcm91MjdPS01GREFYUC9janlFRUJnREhiMXIxVlhNQ2ltVTB3dzJWWDBDajVYVitmMEo1VzU3S1VPU2VDamJ2citWVXhxbzE2eHc5a3I4dG5RMlF6NWtNSXdLa01JUGlPSmhKMkJBcCtKYVhsZ01YSWk2cnp0N0ljWWRieWJvYzdFamR2TStzcTBBNUJnVExZNkVDOUJuZEhlaGh2MGFqOXVOenZvanZrZ3Q4ZDIrNXhNWWJkWEJHWG1keXRoNXBBeW44b0xCQ1dVRGJXZTgwLzk5ZXQxaUgvR0RKRWZvRExEZjlwK2s0KzBRYnVXZEVxdVRPMWpDSkY1MWg3VHhIbC9VWWEvbUp3dWQwL1k4RDRmRVlaWC9WM2hHcE9EOVIyWm1qZzRJcnBQcHdlZmo4dzB3Z2NmeUx6OVpNbXMxUG9NbjBxQ25uTStWdTZuNnN4Q2xQYjh5V3hLa3pNaDBld0U0bkpvY2hXYkRrNXJjZnJFMDJreWtGWEZ0dSt6ajhISmdBSE1iV1Zuam55WEk3NlVncURSZWpBSHlGbVdtVks2V2hHazdtNlpzSnFqSmkyRTUzNGVCMGpBVllmNkpiczdoQXFKUGdFbGVPZUFPVTR6Sk1zQVZyaXN0NjNpUkpNYUVNVGpPNDk4K2FtTU9yNzhXcktEemh3NlJnQitPOVVoTFBLMDQyWUU3TmZ6akNiNzk5ODd1OXdRVjRRY3JodGxLT1hjbDhNYlp0SDBibWJOYkFPdVh1SUY1ZHJKVXJqWVN3VlFCREFhVWFMWWV6ZVN1dnJRd0ZTQ2J3ZVRVSkd6MWo3dUJVcTNtYUI0T2ZLMm43RzJOMWZDSzFlRWF3OTJVbmxWRE8wVGYxTElJMDhIRnRzUkluNlkxcDNzOVYrTEpROWlVZDVaRzBMd1U5MDRFNzVQcHVWTFJPQllIUzRtckIzUnZyTWhBV0M2amR0U1RGa2x1bXYrYzJFSlJyYlVyanI0QStZNDBrQU5OMVV0MXJkdk1iLzBwUk9KWFZzRGZjL0F5TTVuM0NmbHZEVnFTZ1BJOWJsSEZlMW1aNzVDbUlMUzZLemRGMFlsMU1WSGlQVzBqdm9kbnhLWVRwczhoSk4rYUkraDFXUkd6ckpLWkppY0F0TmRzV1ZoTGZyVnhWRVBTZW05akd6c0FhV1BrVkJHUk82alcyU1c3bStiVkR2UlBiVnBiNmdTQkk4b0NVWU9vNy9RMEhhYnFtN1JQTWNzR0E2ZUFwSG8xaGMxazltMVh3NTBJUnZuN1Z5UEorckRCMUdhZEs5cW83SXVEdjF0L1dqejdkdnA0ZDRScHVHdnk0WlFrOVB3VjV0VHRrWDJER0F0UThmYWl2RUlINzBPaGtwdUN0bkhrYm96UUM5QllMeFVkZklMdlA4cUU5N3JaWWsrWGNxYTdodmxCRzZuM0pnNTZzNHJxV2VaTmxCL2NHNTVDU3RSUEVJNlJqckFEcHkvc1luUTRSRU42VWxBeW1TcmVzMllYUkxUYUVjWVdrSlc5ODJDL3NmWXNja2JpemxPc1lzS0FGcDNYc2dEUVJEYWFvK3lITkpBcGVWUksxbTdoMThxL0tiUXhGY3BuRGJHWDJNUnVjVTVQVVBKcGt5dkNsRXZSSzdrMXgybjB6YXpBUTRnWmZEd3NNL2ludk1RVEtlUWV0eklyNi9ad1R6SExCZ09uZ0tSNk5ZWE5aUFp0Vi9xSE01dFlVMWh3UlNyZDg1S0gyTXBkdDdNUHRXZnE0TmRPWVdiTmhQUDh4bEw2TGdIQVdsTXlCRFpzdUd5SHpFOHh5d1lEcDRDa2VqV0Z6V1QyYlZiMldITTFNVlBlTlAySnpXS25VMEhRdWJhby80MVBxSWgrQ1dCUjNIVUZZUnhpcEVCUWJLQS9tQXBCTjFwSEN3QlBNY3NHQTZlQXBIbzFoYzFrOW0xVUNSNjdodjU5ZW00blZQWm1qVTVrMUI5YklkeklsN1dySjFmL1NVbXd2cThqeU1HbThUSlhpS2dGRXk2MjJlbmtUekhMQmdPbmdLUjZOWVhOWlBadFZDcmxSbmdURUpCcVYyaXlzNnF5TFRKMUNwYm41MWNLdGU1OGVOS1JrbENEdVhGYzNHcWxZMENlRzZGM1FNVnVxQk1FTjlwWHNtbndLeHNFNjUvYStlbHFlZkxLeWw3SStPWnYrS0JIbllYNzlXakJiMzJCR2hHWm5kMVFreTJ4SFB2ZjRTeCsvdFlOMnpuY21wUXFTd3hQTWNzR0E2ZUFwSG8xaGMxazltMVZVdVVHeFJPWlMzS0NFOTZuYVVGNzRtUm1yZE8vanB0SUhnTWpDK0c2VjdCeFpUSml0TkVMc3QwRkNKK24rQU1ZVHpITEJnT25nS1I2TllYTlpQWnRWQkNTK0xmWXFyU0JHSGtlWWxhcWdid0lNeEVkMU9WUHlKaHVWeEFVbkR0cktXMENudnVwOHpBM0NVK2lNVGxUUmYyTmZKY3hlajhkaWpZNXkzZjFuUldSRU9wWW1yWVh6dGZzUjhSK1krVGVZeEFldXU3c2d3dWlUQ0dxeGN4cThjWEYyTyt6bGFYZW01SHdITlc5Ry8vM2VudWs2TUsyQnR0Q1FCSHJpcFlvR0ExK3ZVK2RKL0YrTFIxaUJMdDR5L0ZzUHhySlAxeHZ2MDBaRmtYZ2N5R0VpYXVhbUd3WWRsbjMvOCt0RmdYUkk4MnI5Z2NzR1hUeWdJT1RGOXlpRjBnb0NoNE5OeXJhNVNQelN3Z29uM2NzbitOaEFRUkp2U0ZzTFhMSDhGL2ZDU0Nqd2wvcGkyR0dZNG5CVWVrM3dLNmNRR1c2QitvTzNqS1NXOVFFRzAvT2dIVGJ5eGJSOUVzcG9sbU5sQi9HcVNMNEtPTVlhd05DMHZnVlpkSkI1YkhsdXRnam5UdnY3b1l5ZmVhK21JTzFqR2JZK2pVOFZMeDFZWlNIRU5TVGppMjc0UWoyS09yRkV6cFhxaVEySktabG1EaGI5TEo4T3hWTHg4QUhIY1A2bnlXT2hpWWNGdVFNRndmOVVSSUdIcnpyanpwcGY3Z3NLbkpsdFRia2xsMWxzZlVIU2Q1WlNBRjZRRTNiOG9iNXg1SG1aRlVRUmtVOTRQbENIdFc1RUZ3d0hxTHdzMXczR3h6R01odHFmRTh4eXdZRHA0Q2tlaldGeldUMmJWZUU3eU03THhxdzc3MS8zbk5iNzhPdnA0dWJGY2lSdjZCdlhjVjkxWC93bEFiNjZnRHF5eG03QytqRGw4NVBMSndkSVJCa2VxMFVwbUtSdmxqQUdVSW9MUDBvQ25qRnhQVmlucXptQW1QeWx4UmZvdlZaYzVSVEdjemw4dGlDSVFGS2U3aFBuejhQVWVUeEwyR1VTOTc1M3hQMHVnYkpOSDBrdE1GR3FYTFFyTjIwaHl4anlGS05PeTVHUUwxZGwzMlY5NmNqVlFldWwyazVYSVJPUGFXeGw2MGo1WHo2R1BXMHZzQ0lwSyt4aXl5dkxTTlpXYy9zSW4vdldTQUhVOXVTd0JNdlB4Z2oyVFdPRDkxTlpsNUtvSmMrenUzanBWUUJFZ3lIR3h0aTdTejBPeXNVdFpnTEVJVzlhZFNmeWkydy9zcm1UbThIME02S3pHdG5TYzhhMFZWd1QycVFvbm5nU1I1SzZRVDJzRVpKckJzNUI4WkRCa2phZlE0c1JwUkVhT05uSVZ3bEQ5RHBvbHUvUXVrVEpHZmVxbW52bTVQZk54dE5KRkZOV1BPOXk1Y2dTdUN2VVA4KzZBV2FFNWVpbk9JN1VBemxkOEhJUytMVTA3b0xoRHVWSWFzSTdBZ2JmWWNidjh5WkJ5eXZMU05aV2Mvc0luL3ZXU0FIVTlsc1ZWZ09LYVc0STdRQWthU090ZFZQbTZINnd2bHlYRUNBTnZoQ01HZWxGeXl2TFNOWldjL3NJbi92V1NBSFU5dDVYYnFQZkxHNUFBVUV2cmNoUzRXWmhjbGZOMFZxMDAxRUMvK1VBWGFHUzViMGhrSlZPVUN0Q3dzelZ1eUFlVU1zcnkwaldWblA3Q0ovNzFrZ0IxUGJMSzh0STFsWnord2lmKzlaSUFkVDJwbTlLbW0wL053K3FwLzJ0eHBSOGhzV3BtWUVSMml0ZXI1bVJNMnA3a3d6c3h0V2xLYnhBclVRZkJESUdxV2tGeXl2TFNOWldjL3NJbi92V1NBSFU5bk15R0xJSGxCMlFSSVk2RHRBZzRsekxLOHRJMWxaeit3aWYrOVpJQWRUMmdEdmw0Sk4vMTBpcU5nWndBRFd1eFRUTjU2bDB4bnd3bGQzbjdGc0JwY0QrNGwrd2FNOGp1bXhCendtZjUrYmN3dVQ0MElRWHd1eERRNjJDVWhjdjdyY1ZHL0lidWN4eDY4ZmlMOWRQUUhYWlJFaGNkZXgxS01MYytnNEkramN4eXl2TFNOWldjL3NJbi92V1NBSFU5Z1R0Vk9GRjZrd2FubXNHU2RIMmlhR2MxWW41SzdrSDVWWEQ2eXRncTZvM0oxUWs2RDdkYTh0ZEdSWnlsbHFXRHM2VU12c08vUE93NUNjcjc5c0p6aWRiazM1NDJtakxSS3R5aUVleXYxdHM2eWFlcCtDcXEydUVOb3BnMER6eFR6cUgxcjgzSnl1dlFzNHNWWGtyM0NmTEs4dEkxbFp6K3dpZis5WklBZFQyeUFJdU13RHh2SWZVSUc5T1p1RHNJOXFBbkJXMUZpMHVkZmJUOWhnNlU0QjRsbFJ2dUt5UzdaRVJ6RWJlL0pmdjhnTkVkOFRTWUI5KzcydnlwaWwyclRiN3k2V0ZsWlFhMCtmQjQ0VEU2cXp4a3hQb3kxb2N5L1RMdDY4eU1Gbi9WaVc5RDE2UXZSL3I3dUZidHNaT0VRN0x2SDBqTEp0dWozRlR5UVpEUWpCTEt4c2Z2MzE3SjhxZVZsbGQxVCtmSGhhZlZyVUkvS0FyWGdxMkpkTjBVQ1B5MGROcmlzeXNLT011VU1QNEZwWWxJbEN4QXQ5UUZhSWFJb1V0bEFhaVlDcTNRbk0rUll3aC82dEp3M2NTcWhtSFdrOXJCYWo3MU5rQUNVdk9YcjREVVg5QVpXMm00a29pWGQxWEp1RTJLeDd6RWpXMGFtZ2Z6QlpESm8vWUtSK2pTQnZwSThBQlk2MkpOTlVMYTNtdHFXRE8xWGdMMlVsc2RPREpsSXZUVXEzejJsdCtpbnVrTGxsYW1aZWZCK0p2cXNxditOZVliT0p4eEdtdG5QN3E5cFYwclJtZisxTmUrMU8rUjVVc3JhSktYUFV5WVJiMHk3b29Ua0xHMWg0aEdBZ0V0UmpUT2t0a1huRjVCWlRHTTlSeVFSdWF3YzBiQk9tdEhYMWhjVDdydDN0RGtzWEpmZmxQeXlzV3poUFhMTStGZHg1ZENZUnlaekMveGl5WnJkMVJvUFoydSswUXRic0sydWdScHpRNDY5bG5kcEpocndhZXloK29IQlM4Rnl3K3MvWEIzMU1IOUtKQW8wSkVBWVpLMjI1MmlFWUhnbzNYdU4xWjhiOUk1Ym9vUHp2TDAxSWkra0FhaHNzcnkwaldWblA3Q0ovNzFrZ0IxUGFqcnVxWS9iTDZ2MTIwMDJtYTYwU3paaFRueXlRWmRYOU01Mm9DQWtpajIvWU51K0hwWDY3OWRsWlMrV2FodVFFamp2NC9STWFKU2ZTS0REUjZ5bHhOaE1Zd2drekZwV1FUUTBHcUxxZndMSUl6VnMyZ1IzTk9Pd3NsOXlrYUN4aWZFNDVPU0xRYVkrc0VCMjFMWEtmMlJXSXFhYktpN1ZsQld1VnF6Sy9NeGJDbWpLUFdLVUZwSnphODBnTVhVbkY0SW0zeXFFZnQxcmZzS1U3U2c2ZTRoWnF6Um1iUVlkdkU3Y2V6RitmOHhjRDZ5UmNreE9SZEc2clBPQktpRE1mZzYzZUh2WmlVanVsUEU1SXZKRHhvS0JOWHVsMGFnT2UycElJU2Ntc0hLQWdURkZqYnRiQ2ZlMVRqK2l4MkdVVE53ckhVenFZSjNJcXh5SHRPYXIySEYxbUw1Sy91cFNZM3pUMGJLamNId2NzcnkwaldWblA3Q0ovNzFrZ0IxUFpQeGQrelhCaElsaDhwdjR5VXJYYk1nb3NNTmlZREJiVVptR3ZVVkI5WS9VcTVReVlSOGpCYTNUNnFxcWQ5UGNER2pyVEk2WWJoRWE0bXRpdlZGMW4xSjlmVUVjU0hXdms4ZnB5bncrQmtZT2V6aElZd2JoY1hyS0pOM1hqNFhBQS9qdDZIMzI1NEZjNG1Sb3U3ZFlsWXl5dkxTTlpXYy9zSW4vdldTQUhVOWtLQXJVS1ZGMk9tQUVPdFJQVExvVXJMSzh0STFsWnord2lmKzlaSUFkVDJpVlNuMlg2T0s5MFJmRXFqa0MvcklTWXovN3VjcDZhTTNUMTljSnB4RXJITEs4dEkxbFp6K3dpZis5WklBZFQyc01pZHNKNS84K1UrWkxYb29rdFM3L1puYTAyZnZBaEpnbjlnUmpTendDOWRDQnlvVXQ5cFlYUGxOdWRmN2g2QnB6NnF3V3ZNR25yMWZaWWEwN2JmcjhzcnkwaldWblA3Q0ovNzFrZ0IxUGFqdnVjenJRUVUwSTJVQWE4VUpkUHVNakJIelltV09CbWpsOEtoMjMrVDZybHdXUlZnRjQ3SEd5d1ZuVnpwR0NiT2xETDdEdnp6c09RbksrL2JDYzRuSmZqcmd0NkVuUGpYWi9uQ0pNUHZXTTZVTXZzTy9QT3c1Q2NyNzlzSnppZHdaNDVDWE5HeCtTOE9OUnUwY1FZeUU5Y3N6NFYzSGwwSmhISm5NTC9HTEptdDNWR2c5bmE3N1JDMXV3cmE2QkduTkRqcjJXZDJrbUd2QnA3S0g2Z2N3eTdZbU1IQURrc3VtTjVIcmpsVjRNc3J5MGpXVm5QN0NKLzcxa2dCMVBaOTZ2ZUZmNW8wNkhsRmhGa0VialZOYUhoVldnSDRmVE10a3V6NWJEbitBSGduanB3eUcvaElMNTBHSVBYbyt2cllUQWFCeUFCUVdvNVAxcFZ1S0RaY1xcXCIpXFxuXFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGl0bGVzICsgYmFkZ2VUeXBlLFxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiBwaWNzICsgUmVmZXJlcixcXG4gICAgICAgICAgICAgICAgICAgIGRlc2M6IGJhZGdlICsgZGVzYyxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogbW9kZSA9PSAn55u06ZO+JyA/IHRydWVfdXJsIDogcHVybCArIGxhenksXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzInXFxuICAgICAgICAgICAgICAgIH0pO1xcblxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgcHV0VmFyKCdhaWQnLCBTdHJpbmcodi5haWQpKTtcXG5cXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogbW9kZSA9PSAn55u06ZO+JyA/IGdldEhlYWQoJ+ebtOmTvicpIDogJ+ebtOmTvicsIC8vJ+ebtOmTvuaSreaUvicsXFxuICAgICAgICAgICAgICAgIHVybDogJ+ebtOmTvicgKyBtb2RlX3VybCwgLy9sYXp5MSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICAgICAgfSk7XFxuXFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IG1vZGUgPT0gJ3loYycgPyBnZXRIZWFkKCfokKTngavomasnKSA6ICfokKTngavomasnLFxcbiAgICAgICAgICAgICAgICB1cmw6ICd5aGMnICsgbW9kZV91cmwsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGlmIChnZXRWYXIoJ2xpa2VfdHlwZScpID09PSAn5byA5ZCvJykge1xcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfngrnotZ4nLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKGxpa2VfdXJsKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNvbnRlbnRfdHlwZSA9ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9dXRmLTgnO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsX2JvZHlfdHh0ID0gJ2FjY2Vzc19rZXk9JyArIGdldFZhcignYWNjZXNzX2tleScpICsgJyZhaWQ9JyArIGdldFZhcignYWlkJykgKyAnJmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmJ1aWxkPTYxMzA0MDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImbGlrZT0wJm1vYmlfYXBwPWFuZHJvaWQmcGxhdGZvcm09YW5kcm9pZCZzX2xvY2FsZT16aF9DTiZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjEzLjAlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0QmdHM9JyArIHRzICsgJyZzaWduPTRhMDg2NDVjMjk5NGViNjkyYWMwY2ZiMGJkNzU2OWM2JztcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbF9jb2RlID0gSlNPTi5wYXJzZShyZXF1ZXN0KGlucHV0LCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiBjb250ZW50X3R5cGVcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keTogbF9ib2R5X3R4dCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCdcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9nKGxfY29kZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovLycgKyBsX2NvZGUuZGF0YS50b2FzdDtcXG4gICAgICAgICAgICAgICAgICAgIH0sICksXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+aKleW4gScsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQoY29pbl91cmwpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdHMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY29udGVudF90eXBlID0gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD11dGYtOCc7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNfYm9keV90eHQgPSAnYWNjZXNzX2tleT0nICsgZ2V0VmFyKCdhY2Nlc3Nfa2V5JykgKyAnJmFpZD0nICsgZ2V0VmFyKCdhaWQnKSArICcmYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYXZ0eXBlPTEmYnVpbGQ9NjEzMDQwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZmcm9tPTcmZnJvbV9zcG1pZD10bS5yZWNvbW1lbmQuMC4wJm1vYmlfYXBwPWFuZHJvaWQmbXVsdGlwbHk9MSZwbGF0Zm9ybT1hbmRyb2lkJnNfbG9jYWxlPXpoX0NOJnNlbGVjdF9saWtlPTEmc3BtaWQ9bWFpbi51Z2MtdmlkZW8tZGV0YWlsLjAuMCZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjEzLjAlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0QmdHM9JyArIHRzICsgJyZ1cGlkPTAmc2lnbj04YWJiZGRkODdhNmJkODJlMWU0MmNiM2NmZmQzMmJiOSc7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNfY29kZSA9IEpTT04ucGFyc2UocmVxdWVzdChpbnB1dCwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogY29udGVudF90eXBlXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IGNfYm9keV90eHQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhjX2NvZGUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/mipXkuoYx5Liq5biBJztcXG4gICAgICAgICAgICAgICAgICAgIH0sICksXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAnJyxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdibGFua19ibG9jaydcXG4gICAgICAgICAgICB9KTtcXG5cXG5cXG4gICAgICAgICAgICBpZiAodi52aWRlb3MgIT0gMSkge1xcbiAgICAgICAgICAgICAgICB2YXIgcnVybCA9IHB1cmwgKyAnP3A9JyArIHBbaV0ucGFnZTtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICB2YXIgcnVybCA9IHB1cmxcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHBhcnQsXFxuICAgICAgICAgICAgICAgIHBpY191cmw6ICdodHRwczovL2dpdGVlLmNvbS9DaGVyaXNoUngvaW1hZ2V3YXJlaG91c2UvcmF3L21hc3Rlci9pbWFnZS8xMzA5NjcyNWZlNTZjZTljZjY0M2EwZTRjZDBjMTU5Yy5naWYnLFxcbiAgICAgICAgICAgICAgICB1cmw6IC8qbW9kZSA9PSAnWDUnID8gJ3g1UnVsZTovLycgKyBqeCArIHJ1cmwgKyAnQCcgKyBsYXp5IDogKCovIG1vZGUgPT0gJ+ebtOmTvicgPyBsYXp5MSA6IHJ1cmwgKyBsYXp5LFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogdi52aWRlb3MgIT0gMSA/ICd0ZXh0X2NlbnRlcl8xJyA6ICdhdmF0YXInXFxuICAgICAgICAgICAgfSk7XFxuXFxuXFxuICAgICAgICB9XFxuICAgIH1cXG5cXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXG4gICAgfSk7XFxuICAgIGlmIChnZXRWYXIoJ3JlcGx5X3R5cGUnKSA9PT0gJ+W8gOWQrycmJmdldFZhcignYWNjZXNzX2tleScpKSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAnPHN0cm9uZz4nICsgJ+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/dXJsPVxcXFxu5Yqg6YCfJiZodHRwczovL3d3dy5jdWFuLmxhL20zdTgucGhwP3VybD1cXFwiKTtcXG59XFxuXFxuXFxubGV0IGxvY2FsSHRtbDIgPSBmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwanguaHRtbFxcXCIsIHt9KTtcXG5sZXQgZ2l0SHRtbDIgPSBmZXRjaChcXFwiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L2doL1pydWlyeS9oaWtlcnZpZXcvaHRtbC9qaWV4aS5odG1sXFxcIiwge30pLnJlcGxhY2UoL2ppZXhpXFxcXC9qaWV4aS9nLFxcXCJiaWxpL3VwanhcXFwiKTtcXG5pZiAoIWxvY2FsSHRtbDIpIHtcXG4gIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwanguaHRtbFxcXCIsIGdpdEh0bWwyKTtcXG4gIHZhciB0aXRsZXMgPSBmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwangudHh0XFxcIiwge30pO1xcbiAgdmFyIHQgPSB0aXRsZXMuc3BsaXQoXFxcIiYmXFxcIilbMV07XFxuICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cF9qeGNhY2hlLnR4dFxcXCIsdCk7XFxufVxcbiovXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIEt5o6o6I2QXCIsXCJwYXRoXCI6XCJmZWVkXCIsXCJydWxlXCI6XCJ2YXIgdXJsID0gJ2h0dHBzOi8vYXBwLmJpbGliaWxpLmNvbS94L2ludGwvZmVlZC9pbmRleD9hY2Nlc3Nfa2V5PScrZ2V0VmFyKFxcXCJhY2Nlc3Nfa2V5XFxcIikrJyZhdXRvcGxheV9jYXJkPTImYnVpbGQ9NjIyNTMwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZjb2x1bW49MiZkZXZpY2VfbmFtZT0mZGV2aWNlX3R5cGU9MCZmbHVzaD04JmZudmFsPTQ2NCZmbnZlcj0wJmZvcmNlX2hvc3Q9MCZmb3Vyaz0xJmd1aWRhbmNlPTAmaHR0cHNfdXJsX3JlcT0wJm1vYmlfYXBwPWFuZHJvaWQmbmV0d29yaz13aWZpJnBsYXRmb3JtPWFuZHJvaWQmcGxheWVyX25ldD0xJnB1bGw9ZmFsc2UmcW49ODAmc19sb2NhbGU9emhfQ04mc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4yMi41JTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJztcXG52YXIgbGlzdCA9IEpTT04ucGFyc2UocmVxdWVzdCh1cmwse30pKS5kYXRhLml0ZW1zO1xcbmZvciAobGV0IHggb2YgbGlzdCl7XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6eC50aXRsZSxcXG4gICAgZGVzYzp4LmNvdmVyX2xlZnRfMV9jb250ZW50X2Rlc2NyaXB0aW9uK1xcXCIgXFxcIit4LmNvdmVyX2xlZnRfMl9jb250ZW50X2Rlc2NyaXB0aW9uK1xcXCIgIFxcXCIreC5jb3Zlcl9yaWdodF90ZXh0LFxcbiAgICBwaWM6eC5jb3ZlcitcXFwiQFJlZmVyZXI9aHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL1xcXCIsXFxuICAgIHVybDpcXFwiaGlrZXI6Ly9wYWdlL2RldGFpbD9ydWxlPeWTlOWTqeKThyZ1cmw9aHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbO+8n++8n2FpZD1cXFwiK3gucGFyYW0rXFxcIu+8hu+8hmJ2aWQ9XFxcIisnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgIGNvbF90eXBlOidtb3ZpZV8yJ1xcbiAgICB9KTtcXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIEt5pu05aSaXCIsXCJwYXRoXCI6XCJtb3JlXCIsXCJydWxlXCI6XCJpZiAoTVlfVVJMLnNwbGl0KCcjJylbMV09PScxJykge1xcblxcbiAgICBcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiByeCA9PSAn5pe25YWJ5py6JyA/IGdldEhlYWQocngpIDogJ+aXtuWFifCfkKUnLFxcbiAgICAgICAgdXJsOiAn5pe25YWJ5py6JyArIHdyLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxuICAgIH0pO1xcbi8qXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+i/veeVqicsXFxuICAgICAgICB1cmw6ICdoaWtlcjovL2NvbGxlY3Rpb24/Z3JvdXA94pGg6L+955WqJyxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICB9KTtcXG4qLyBcXG5kLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IHJ4ID09ICfntKLlvJUnID8gZ2V0SGVhZChyeCkgOiAn57Si5byVJyxcXG4gICAgICAgIHVybDogJ+e0ouW8lScgKyB3cixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICB9KTtcXG4vKlxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IHJ4ID09ICfmlLbol48nID8gZ2V0SGVhZChyeCkgOiAn5pS26JePJyxcXG4gICAgICAgIHVybDogJ+aUtuiXjycgKyB3cixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICB9KTtcXG4qL1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfnmbvlvZUnLFxcbiAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL3B3ZC1sb2dpbicsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogZ2V0VmFyKCdZUycpID09ICfpmo/mnLonID8gZ2V0SGVhZCgn6ZqP5py6JykgOiBnZXRIZWFkKCfpqprnsoknKSxcXG4gICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignWVMnLCBnZXRWYXIoJ1lTJyk9PSfpmo/mnLonPyfpqprnsoknOifpmo/mnLonKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+minOiJsi0tJytnZXRWYXIoJ1lTJywn6ZqP5py6JylcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxuICAgIH0pO1xcbiAgaWYocnghPSfml7blhYnmnLonJiZyeCE9J+e0ouW8lScpeyBcXG4gICAgXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+iHquWumlVJRCcsXFxuICAgICAgICB1cmw6IGBpbnB1dDovL3tcXFwidmFsdWVcXFwiOlxcXCJcXFwiLCBcXFwianNcXFwiOiBcXFwid3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc3RhcmlkLnR4dCcsaW5wdXQpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHQnLCdVUOS4uycpO2NsZWFyVmFyKCdodG0nKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+S9oOi+k+WFpeeahOaYrycraW5wdXRcXFwiLCBcXFwiaGludFxcXCI6IFxcXCLor7flnKjkuIvmlrnovpPlhaVVSURcXFxcbuS4jeefpemBk+aAjuS5iOafpe+8n2Lnq5nngrnlvIDoh6rlt7HnmoTkv6Hmga/vvIzplb/mjIl1aWTljbPlj6/vvIzor7floavlhaXnuq/mlbDlrZdcXFwifWAsXFxuICAgICAgICBkZXNjOiAn4oCY4oCY5bey6L6T5YWlOiDigJnigJknK2dldEhlYWQoZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zdGFyaWQudHh0JykpLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfngrnotZ5rZXknLFxcbiAgICAgICAgdXJsOiBgaW5wdXQ6Ly97XFxcInZhbHVlXFxcIjpcXFwiXFxcIiwgXFxcImpzXFxcIjogXFxcIndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2FjY2Vzc19rZXkudHh0JyxpbnB1dCk7d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dCcsJ1VQ5Li7Jyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/kvaDovpPlhaXnmoTmmK8nK2lucHV0XFxcIiwgXFxcImhpbnRcXFwiOiBcXFwi6K+35Zyo5LiL5pa56L6T5YWla2V5KOeUqOS6jueCuei1nuaKleW4gSlcXFxcbuS4jeefpemBk+aAjuS5iOaKk++8n+mCo+Wwseeul+S6hlxcXCJ9YCxcXG4gICAgICAgIGRlc2M6ICfigJjigJjlt7LovpPlhaU6IOKAmeKAmScrZ2V0SGVhZChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2FjY2Vzc19rZXkudHh0JykpLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfop6PmnpBrZXknLFxcbiAgICAgICAgdXJsOiBgaW5wdXQ6Ly97XFxcInZhbHVlXFxcIjpcXFwiXFxcIiwgXFxcImpzXFxcIjogXFxcIndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2tleS50eHQnLGlucHV0KTt3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0JywnVVDkuLsnKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+S9oOi+k+WFpeeahOaYrycraW5wdXRcXFwiLCBcXFwiaGludFxcXCI6IFxcXCLor7flnKjkuIvmlrnovpPlhaVrZXko55So5LqO6Kej5p6QKVxcXFxu5LiN55+l6YGT5oCO5LmI5oqT77yf6YKj5bCx566X5LqGXFxcIn1gLFxcbiAgICAgICAgZGVzYzogJ+KAmOKAmOW3sui+k+WFpTog4oCZ4oCZJytnZXRIZWFkKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkva2V5LnR4dCcpKSxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIGNvbF90eXBlOiAnYmxhbmtfYmxvY2snXFxuICAgIH0pO1xcblxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6J+ivhOiuuuWMujog4oCc4oCc5beyJysgZ2V0VmFyKCdyZXBseV90eXBlJyksXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ3JlcGx5X3R5cGUnLCBnZXRWYXIoJ3JlcGx5X3R5cGUnKT09J+WFs+mXrSc/J+W8gOWQryc6J+WFs+mXrScpO3JlZnJlc2hQYWdlKCk7d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc2V0dGluZy50eHQnLGdldFZhcigncmVwbHlfdHlwZScpKycsJytnZXRWYXIoJ2xpa2VfdHlwZScpKTsndG9hc3Q6Ly/lt7InK2dldFZhcigncmVwbHlfdHlwZScpO1xcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+eCuei1nibmipXluIE6IOKAnOKAnOW3sicrZ2V0VmFyKCdsaWtlX3R5cGUnKSxcXG4gICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignbGlrZV90eXBlJywgZ2V0VmFyKCdsaWtlX3R5cGUnKT09J+WFs+mXrSc/J+W8gOWQryc6J+WFs+mXrScpO3JlZnJlc2hQYWdlKCk7d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc2V0dGluZy50eHQnLGdldFZhcigncmVwbHlfdHlwZScpKycsJytnZXRWYXIoJ2xpa2VfdHlwZScpKTsndG9hc3Q6Ly/lt7InK2dldFZhcignbGlrZV90eXBlJyk7XFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICB9KTtcXG4gIH1cXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIEt5paw55WqXCIsXCJwYXRoXCI6XCJuZXdiZ21cIixcInJ1bGVcIjpcImlmIChNWV9VUkwuc3BsaXQoJyMnKVsxXT09JzEnKSB7XFxuXFxuICAgIGxldCB1cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3BnYy9hcHAvdGltZWxpbmU/YWNjZXNzX2tleT0mYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYnVpbGQ9NjEzMDQwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZmaWx0ZXJfdHlwZT0wJm1vYmlfYXBwPWFuZHJvaWQmbmlnaHRfbW9kZT0wJnBsYXRmb3JtPWFuZHJvaWQmc19sb2NhbGU9emhfQ04mc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4xMy4wJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnRzPTE2MzU5NTI4NDAmc2lnbj02ZTRkZjQ1NDJkMzhlZWUyZmFiZjIxMjg4NWI5MGM2NCc7XFxuICAgIHRyeSB7XFxuICAgICAgICB2YXIgc291cmNlX2NvZGUgPSBKU09OLnBhcnNlKHJlcXVlc3QodXJsLCB7fSkpO1xcbiAgICAgICAgdmFyIGRhdGVsaW5lID0gW3tcXG4gICAgICAgICAgICBcXFwiY29kZVxcXCI6IHNvdXJjZV9jb2RlLnJlc3VsdC5kYXRhWzRdLFxcbiAgICAgICAgICAgIFxcXCJuYW1lXFxcIjogXFxcIuWJjeaXpVxcXCIsXFxuICAgICAgICAgICAgXFxcImlkXFxcIjogXFxcIjBcXFwiXFxuICAgICAgICB9LHtcXG4gICAgICAgICAgICBcXFwiY29kZVxcXCI6IHNvdXJjZV9jb2RlLnJlc3VsdC5kYXRhWzVdLFxcbiAgICAgICAgICAgIFxcXCJuYW1lXFxcIjogXFxcIuaYqOaXpVxcXCIsXFxuICAgICAgICAgICAgXFxcImlkXFxcIjogXFxcIjFcXFwiXFxuICAgICAgICB9LCB7XFxuICAgICAgICAgICAgXFxcImNvZGVcXFwiOiBzb3VyY2VfY29kZS5yZXN1bHQuZGF0YVs2XSxcXG4gICAgICAgICAgICBcXFwibmFtZVxcXCI6IFxcXCLku4rml6VcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpZFxcXCI6IFxcXCIyXFxcIlxcbiAgICAgICAgfSwge1xcbiAgICAgICAgICAgIFxcXCJjb2RlXFxcIjogc291cmNlX2NvZGUucmVzdWx0LmRhdGFbN10sXFxuICAgICAgICAgICAgXFxcIm5hbWVcXFwiOiBcXFwi5piO5pelXFxcIixcXG4gICAgICAgICAgICBcXFwiaWRcXFwiOiBcXFwiM1xcXCJcXG4gICAgICAgIH0se1xcbiAgICAgICAgICAgIFxcXCJjb2RlXFxcIjogc291cmNlX2NvZGUucmVzdWx0LmRhdGFbOF0sXFxuICAgICAgICAgICAgXFxcIm5hbWVcXFwiOiBcXFwi5ZCO5pelXFxcIixcXG4gICAgICAgICAgICBcXFwiaWRcXFwiOiBcXFwiNFxcXCJcXG4gICAgICAgIH1dO1xcbiAgICAgICAgaWYgKCFnZXRWYXIoJ2lkJykpIHtcXG4gICAgICAgICAgICBwdXRWYXIoJ2lkJywgJzInKTtcXG4gICAgICAgIH1cXG4gICAgICAgIGxldCBpZCA9IGdldFZhcignaWQnKTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGlkID09ICcwJyA/IGdldEhlYWQoJ+WJjeaXpScpIDogJ+WJjeaXpScsXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdpZCcsICcwJyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly9zdWNjZXNzISdcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF81J1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBpZCA9PSAnMScgPyBnZXRIZWFkKCfmmKjml6UnKSA6ICfmmKjml6UnLFxcbiAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignaWQnLCAnMScpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8vc3VjY2VzcyEnXFxcIixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNSdcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogaWQgPT0gJzInID8gZ2V0SGVhZCgn5LuK5pelJykgOiAn5LuK5pelJyxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ2lkJywgJzInKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL3N1Y2Nlc3MhJ1xcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzUnXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGlkID09ICczJyA/IGdldEhlYWQoJ+aYjuaXpScpIDogJ+aYjuaXpScsXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdpZCcsICczJyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly9zdWNjZXNzISdcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF81J1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBpZCA9PSAnNCcgPyBnZXRIZWFkKCflkI7ml6UnKSA6ICflkI7ml6UnLFxcbiAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignaWQnLCAnNCcpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8vc3VjY2VzcyEnXFxcIixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNSdcXG4gICAgICAgIH0pO1xcbiAgICAgICAgbGV0IGxpc3QgPSBkYXRlbGluZVtpZF0uY29kZS5lcGlzb2RlcztcXG4gICAgICAgIGZvciAobGV0IHggb2YgbGlzdCkge1xcbiAgICAgICAgICAgIGxldCB0eXBlID0gKHgucHVibGlzaGVkID09ICcxJyA/ICflt7Llj5HluIMnIDogJ+acquWPkeW4gycpO1xcbiAgICAgICAgICAgIGxvZyh0eXBlKVxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiB4LnRpdGxlLFxcbiAgICAgICAgICAgICAgICBkZXNjOiAn4oCY4oCYJyArIHR5cGUgKyAn4oCZ4oCZXFxcXG4nICsgeC5wdWJfaW5kZXggKyAnXFxcXG7mm7TmlrDml7bpl7TvvJonICsgZ2V0SGVhZCh4LnB1Yl90aW1lKSxcXG4gICAgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9JyArIHgudXJsICsgJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgICAgICAgICAgICBpbWc6IHguY292ZXIrUmVmZXJlcixcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6J21vdmllXzFfdmVydGljYWxfcGljJ1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBnZXRIZWFkKCfpk77mjqXngrjkuobvvIznrYnkv67lpI0nKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxuICAgICAgICB9KTtcXG4gICAgfVxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS7o+eggS3nlarliafntKLlvJVcIixcInBhdGhcIjpcInN5XCIsXCJydWxlXCI6XCJjb25zdCB7IENhdGVnb3JpZXNIZWFkZXIgfSA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2NhdGVnb3JpZXMtaGVhZGVyXFxcIilcXG5cXG4vKipcXG4gKiDojrflj5bliIbnsbvmlbDmja7mupDvvIzlj6/liqjmgIHlj6/pnZnmgIHvvIzoh6rlt7HmoLnmja7lrp7pmYXmg4XlhrXlpITnkIZcXG4gKiBodHRwczovL3d3dy5iaWxpYmlsaS5jb20vYW5pbWUvaW5kZXgvXFxuICovXFxubGV0IG1DYXRlZ29yaWVzID0ge31cXG5sZXQgY2F0SW5WYXIgPSBnZXRWYXIoTVlfUlVMRS51cmwgKyBcXFwiI2NhdGVnb3JpZXNcXFwiLCAnJylcXG5pZiAoZ2V0VmFyKE1ZX1JVTEUudXJsICsgXFxcIiNjYXRlZ29yaWVzXFxcIiwgJycpKSB7XFxuICAgIG1DYXRlZ29yaWVzID0gSlNPTi5wYXJzZShjYXRJblZhcilcXG59IGVsc2Uge1xcbiAgICBsZXQgY2F0VXJsID0gJ2h0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS9hbmltZS9pbmRleC8nXFxuICAgIGxldCBjYXRTcmMgPSByZXF1ZXN0KGNhdFVybClcXG4gICAgLy8gbG9nKGNhdFNyYylcXG4gICAgbGV0IGNhdFJlZ2V4ID0gL3dpbmRvd1xcXFwuX19JTklUSUFMX1NUQVRFX189KC4qPyk7XFxcXChmdW5jdGlvblxcXFwoXFxcXClcXFxcey9cXG4gICAgaWYgKGNhdFJlZ2V4LnRlc3QoY2F0U3JjKSkge1xcbiAgICAgICAgLy8gbG9nKFJlZ0V4cC4kMSlcXG4gICAgICAgIGxldCBjYXRlZ29yeSA9IEpTT04ucGFyc2UoUmVnRXhwLiQxKVxcbiAgICAgICAgbGV0IG1GaWx0ZXJzID0gY2F0ZWdvcnkuZmlsdGVycztcXG4gICAgICAgIC8vIGxvZyhtRmlsdGVycylcXG4gICAgICAgIG1GaWx0ZXJzLm1hcChmaWx0ZXIgPT4gbUNhdGVnb3JpZXNbZmlsdGVyLmtleV0gPSBmaWx0ZXIubGlzdClcXG4gICAgICAgIGxldCBvcmRlcnMgPSBjYXRlZ29yeS5vcmRlcnNcXG4gICAgICAgIGxldCBtT3JkZXJzID0gW11cXG4gICAgICAgIG9yZGVycy5tYXAob3JkZXIgPT4ge1xcbiAgICAgICAgICAgIGxldCBtT3JkZXIgPSB7fVxcbiAgICAgICAgICAgIG1PcmRlci5uYW1lID0gb3JkZXIudGl0bGVcXG4gICAgICAgICAgICBtT3JkZXIudmFsdWUgPSBvcmRlci5rZXlcXG4gICAgICAgICAgICBtT3JkZXJzLnB1c2gobU9yZGVyKVxcbiAgICAgICAgfSlcXG4gICAgICAgIC8vIGxvZyhtT3JkZXJzKVxcbiAgICAgICAgbUNhdGVnb3JpZXNbJ29yZGVyJ10gPSBtT3JkZXJzXFxuICAgIH1cXG4gICAgcHV0VmFyKE1ZX1JVTEUudXJsICsgXFxcIiNjYXRlZ29yaWVzXFxcIiwgSlNPTi5zdHJpbmdpZnkobUNhdGVnb3JpZXMpKVxcbn1cXG5sZXQga2V5cyA9IE9iamVjdC5rZXlzKG1DYXRlZ29yaWVzKVxcbi8vIGxvZyhtQ2F0ZWdvcmllcylcXG4vLyBsb2coa2V5cylcXG4vKipcXG4gKiDnu4TlkIjlvZPliY3liIbnsbvpk77mjqVcXG4gKi9cXG5sZXQgdHJ1ZV91cmwgPSBnZXRWYXIoTVlfUlVMRS51cmwsIE1ZX1VSTClcXG50cnVlX3VybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20vcGdjL3NlYXNvbi9pbmRleC9yZXN1bHQ/J1xcbmZvciAobGV0IGl0IG9mIGtleXMpIHtcXG4gICAgbGV0IGNhdF91cmwgPSBnZXRWYXIoTVlfUlVMRS51cmwgKyBcXFwiI1xcXCIgKyBpdCwgaXQgPT09ICdvcmRlcnMnID8gJzMnIDogJy0xJylcXG4gICAgdHJ1ZV91cmwgKz0gKGNhdF91cmwgPyAnJicgKyBpdCArICc9JyArIGNhdF91cmwgOiAnJylcXG59XFxuLy8gbGV0IHBhZ2UgPSAxXFxuY29uc3QgcGFnZSA9IE1ZX1VSTC5zcGxpdCgnIycpWzFdXFxuaWYocGFnZT09MSl7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL21vcmVcXFwiKSkucnVsZSlcXG59XFxudHJ1ZV91cmwgPSB0cnVlX3VybCArXFxuICAgICcmc3Q9MSZzb3J0PTAmc2Vhc29uX3R5cGU9MSZwYWdlc2l6ZT0yMCZ0eXBlPTEnICtcXG4gICAgJyZwYWdlPScgKyBwYWdlXFxuLy8gbG9nKHRydWVfdXJsKVxcblxcbmNvbnN0IGVtcHR5ID0gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuXFxuQ2F0ZWdvcmllc0hlYWRlclxcbiAgICAuc2V0U3ViQ2F0ZWdvcmllc0l0ZW1LZXkoJ25hbWUnLCAndmFsdWUnKVxcbiAgICAuZ2V0KGQsIG1DYXRlZ29yaWVzLCBwYWdlKVxcbi8qKlxcbiAqIOiOt+WPluW9k+WJjeWIhuexu+mhtemdoua6kOeggVxcbiAqL1xcbnRyeSB7XFxuICAgIHZhciBzeWxpc3QgPSBKU09OLnBhcnNlKHJlcXVlc3QodHJ1ZV91cmwsIHt9KSkuZGF0YS5saXN0O1xcblxcbiAgICAvKipcXG4gICAgICog5YiX6KGo5pWw5o2u5rqQXFxuICAgICAqL1xcbiAgICBmb3IgKGxldCBkYXRhIG9mIHN5bGlzdCkge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogZGF0YS50aXRsZSAvKisgJy8nICsgZGF0YS5pbmRleF9zaG93Ki8gLFxcbiAgICAgICAgICAgIGRlc2M6IGRhdGEub3JkZXIsXFxuICAgICAgICAgICAgaW1nOiBkYXRhLmNvdmVyK1JlZmVyZXIsXFxuICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9JyArIGRhdGEubGluayArICcjaW1tZXJzaXZlVGhlbWUjJyxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzMnXFxuICAgICAgICB9KTtcXG4gICAgfVxcbn0gY2F0Y2ggKGUpIHt9XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIEt5Yqo5oCB5YiG57G75qih5Z2XXCIsXCJwYXRoXCI6XCJjYXRlZ29yaWVzLWhlYWRlclwiLFwicnVsZVwiOlwianM6XFxuLyoqXFxuICog5L2/55So6K+05piO77yaXFxuICogMS7mj5DliY3lu7rnq4vlpb0g5YiG57G75omA5bGe57G75Z6L5ZKM5YiG57G75YiX6KGoIOeahOWvueW6lOWFs+ezu++8jOWNsyBnZXQg5Ye95pWw5Lit55qEIGNhdGVnb3JpZXNcXG4gKiAyLuiuvue9ruWtkOWIhuexu+aVsOaNrueahCBrZXnvvIzosIPnlKggc2V0U3ViQ2F0ZWdvcmllc0l0ZW1LZXkodGl0bGVLZXksIHVybEtleSlcXG4gKiAzLueEtuWQjuiwg+eUqCBDYXRlZ29yaWVzSGVhZGVyLmdldChsYXlvdXQsIGNhdGVnb3JpZXMsIHBhZ2UpXFxuICpcXG4gKiDmlK/mjIHpk77lvI/osIPnlKjvvIzkuIDlj6Xor53ljbPlj6/osIPnlKjnlJ/miJDliIbnsbvvvIzljbPvvJpcXG4gKiBDYXRlZ29yaWVzSGVhZGVyXFxuICogICAgLnNldFN1YkNhdGVnb3JpZXNJdGVtS2V5KHRpdGxlS2V5LCB1cmxLZXkpXFxuICogICAgLmdldChsYXlvdXQsIGNhdGVnb3JpZXMsIHBhZ2UpXFxuICpcXG4gKiBAdHlwZSB7e3NldFN1YkNhdGVnb3JpZXNJdGVtS2V5OiBDYXRlZ29yaWVzSGVhZGVyLnNldFN1YkNhdGVnb3JpZXNJdGVtS2V5LCBnZXQ6IENhdGVnb3JpZXNIZWFkZXIuZ2V0LCBjYXRlZ29yaWVzS2V5OiB7dGl0bGU6IHN0cmluZywgdXJsOiBzdHJpbmd9fX1cXG4gKi9cXG5sZXQgQ2F0ZWdvcmllc0hlYWRlciA9IHtcXG4gICAgY2F0ZWdvcmllc0tleToge1xcbiAgICAgICAgc3ViX2NhdGVnb3JpZXM6ICcnLFxcbiAgICAgICAgdGl0bGU6ICcnLFxcbiAgICAgICAgdXJsOiAnJyxcXG4gICAgfSxcXG4gICAgLyoqXFxuICAgICAqIDEu6K6+572u5LuO5YiG57G75YiX6KGo5Lit5ou/55qE5a2Q5YiG57G755qE5pWw5o2uIGtlee+8jFxcbiAgICAgKiAgIOagueaNriBrZXkg5ou/5Yiw5pWw5o2u5ZCO77yMXFxuICAgICAqICAg5Lya6Ieq5Yqo6LWL5YC857uZIHNjcm9sbF9idXR0b24g55qEIHsgdGl0bGU6IGl0ZW1bdGl0bGVLZXldLCB1cmw6IGl0ZW1bdXJsS2V5XSB9XFxuICAgICAqXFxuICAgICAqIEBwYXJhbSB0aXRsZV9rZXkgdGl0bGUg55qEIGtleVxcbiAgICAgKiBAcGFyYW0gdXJsX2tleSB1cmwg55qEIGtleVxcbiAgICAgKi9cXG4gICAgc2V0U3ViQ2F0ZWdvcmllc0l0ZW1LZXkgOiAodGl0bGVfa2V5LCB1cmxfa2V5KSA9PiB7XFxuICAgICAgICBDYXRlZ29yaWVzSGVhZGVyLmNhdGVnb3JpZXNLZXkudGl0bGUgPSB0aXRsZV9rZXlcXG4gICAgICAgIENhdGVnb3JpZXNIZWFkZXIuY2F0ZWdvcmllc0tleS51cmwgPSB1cmxfa2V5XFxuICAgICAgICByZXR1cm4gQ2F0ZWdvcmllc0hlYWRlcjtcXG4gICAgfSxcXG4gICAgc2V0U3ViQ2F0ZWdvcmllc0tleTogKHN1Yl9jYXRlZ29yaWVzX2tleSkgPT4ge1xcbiAgICAgICAgQ2F0ZWdvcmllc0hlYWRlci5jYXRlZ29yaWVzS2V5LnN1Yl9jYXRlZ29yaWVzID0gc3ViX2NhdGVnb3JpZXNfa2V5XFxuICAgICAgICByZXR1cm4gQ2F0ZWdvcmllc0hlYWRlcjtcXG4gICAgfSxcXG4gICAgLyoqXFxuICAgICAqIDIu6I635Y+W5YiG57G75aS06YOoXFxuICAgICAqXFxuICAgICAqIEBwYXJhbSBsYXlvdXQg5b2T5YmN55WM6Z2i77yM5Y2z5bi455So55qEIGQucHVzaCDnmoQgZFxcbiAgICAgKiBAcGFyYW0gY2F0ZWdvcmllcyDliIbnsbvmiYDlsZ7nsbvlnovlkozliIbnsbvliJfooajnmoTlr7nlupTlhbPns7vooajvvIxcXG4gICAgICogICAgICAgIOWmgu+8mlxcbiAgICAgKiAgICAgICAge1xcbiAgICAgKiAgICAgICAgICAgXFxcIuW5tOS7vVxcXCI6IFt7IFxcXCJuYW1lXFxcIjogXFxcIjIwMjFcXFwiLCBcXFwidmFsdWVcXFwiOiBcXFwiMjAyMVxcXCIgfSwgeyBcXFwibmFtZVxcXCI6IFxcXCIyMDIwXFxcIiwgXFxcInZhbHVlXFxcIjogXFxcIjIwMjBcXFwiIH0uLi5dLFxcbiAgICAgKiAgICAgICAgICAgXFxcIuaOkuW6j1xcXCI6IFt7IFxcXCJuYW1lXFxcIjogXFxcIueDreW6plxcXCIsIFxcXCJ2YWx1ZVxcXCI6IFxcXCJob3RcXFwiIH0sIHsgXFxcIm5hbWVcXFwiOiBcXFwi5pe26Ze0XFxcIiwgXFxcInZhbHVlXFxcIjogXFxcInRpbWVcXFwiIH0uLi5dLFxcbiAgICAgKiAgICAgICAgfVxcbiAgICAgKiBAcGFyYW0gcGFnZSDpobXnoIFcXG4gICAgICogQHBhcmFtIHVybExpc3RlbmVyIOmineWkluWkhOeQhiBidXR0b24g55qEIHVybO+8jOmcgOimgSByZXR1cm5cXG4gICAgICovXFxuICAgIGdldDogKGxheW91dCwgY2F0ZWdvcmllcywgcGFnZSwgdXJsTGlzdGVuZXIpID0+IHtcXG4gICAgICAgIC8vIGxvZyhjYXRlZ29yaWVzKVxcbiAgICAgICAgLy8g5YiG57G75omA5bGe57G75Z6L55qE5YiX6KGo77yM5aaC77yaWyBcXFwi5bm05Lu9XFxcIiwgXFxcIuaOkuW6j1xcXCIgXVxcbiAgICAgICAgbGV0IGNhdGVnb3J5X25hbWVzID0gT2JqZWN0LmtleXMoY2F0ZWdvcmllcylcXG4gICAgICAgIGxldCB0eXBlcyA9IFtdXFxuICAgICAgICAvLyDmoLnmja7lr7nlupTlhbPns7vooajmi7/liIbnsbvliJfooahcXG4gICAgICAgIGNhdGVnb3J5X25hbWVzLm1hcChjYXRlZ29yeV9uYW1lID0+IHtcXG4gICAgICAgICAgICAvLyDov5nph4zkvJrmi7/liLAg5bm05Lu9IOaOkuW6jy4uLiDlhbbkuK3kuIDkuKpcXG4gICAgICAgICAgICB0eXBlcy5wdXNoKGNhdGVnb3JpZXNbY2F0ZWdvcnlfbmFtZV0pO1xcbiAgICAgICAgICAgIC8vIOi/memHjOS4i+mdouWvuSB0eXBlcyDnmoTlgLzov5vooYzlpITnkIZcXG4gICAgICAgIH0pXFxuICAgICAgICBjYXRlZ29yaWVzID0gdHlwZXM7XFxuICAgICAgICBsZXQgaW5pdF9jYXRlID0gW11cXG5cXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMjA7IGkrKykge1xcbiAgICAgICAgICAgIGluaXRfY2F0ZS5wdXNoKFxcXCIwXFxcIilcXG4gICAgICAgIH1cXG5cXG4gICAgICAgIGNvbnN0IGNhdGVfdGVtcF9qc29uID0gZ2V0VmFyKE1ZX1JVTEUudGl0bGUsIEpTT04uc3RyaW5naWZ5KGluaXRfY2F0ZSkpXFxuICAgICAgICBjb25zdCBjYXRlX3RlbXAgPSBKU09OLnBhcnNlKGNhdGVfdGVtcF9qc29uKVxcblxcbiAgICAgICAgaWYgKHBhcnNlSW50KHBhZ2UpID09PSAxKSB7XFxuICAgICAgICAgICAgLyoqXFxuICAgICAgICAgICAgICog6YGN5Y6G56ysIGluZGV4IOWxguWIhuexu1xcbiAgICAgICAgICAgICAqL1xcbiAgICAgICAgICAgIGNhdGVnb3JpZXMuZm9yRWFjaCgoY2F0ZWdvcnksIGluZGV4KSA9PiB7XFxuICAgICAgICAgICAgICAgIGxldCBzdWJfY2F0ZWdvcnlfbmFtZSA9IGNhdGVnb3J5X25hbWVzW2luZGV4XVxcbiAgICAgICAgICAgICAgICBsZXQgc3ViX2NhdGVnb3JpZXNfa2V5ID0gQ2F0ZWdvcmllc0hlYWRlci5jYXRlZ29yaWVzS2V5LnN1Yl9jYXRlZ29yaWVzXFxuICAgICAgICAgICAgICAgIGxldCBzdWJfY2F0ZWdvcmllcyA9IHN1Yl9jYXRlZ29yaWVzX2tleSA/IGNhdGVnb3J5W3N1Yl9jYXRlZ29yaWVzX2tleV0gOiBjYXRlZ29yeTtcXG4gICAgICAgICAgICAgICAgLy8gbG9nKGNhdGVnb3J5KVxcbiAgICAgICAgICAgICAgICAvKipcXG4gICAgICAgICAgICAgICAgICog5Zyo56ysIGluZGV4IOWxguWIhuexu+S4remBjeWOhuivpeWxguaJgOacieWtkOWIhuexu1xcbiAgICAgICAgICAgICAgICAgKi9cXG4gICAgICAgICAgICAgICAgc3ViX2NhdGVnb3JpZXMuZm9yRWFjaCgoaXRlbSwga2V5KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgdGl0bGUgPSBpdGVtW0NhdGVnb3JpZXNIZWFkZXIuY2F0ZWdvcmllc0tleS50aXRsZV1cXG4gICAgICAgICAgICAgICAgICAgIGxldCB1cmwgPSBlc2NhcGUoaXRlbVtDYXRlZ29yaWVzSGVhZGVyLmNhdGVnb3JpZXNLZXkudXJsXSlcXG4gICAgICAgICAgICAgICAgICAgIGlmICh1cmxMaXN0ZW5lcikgdXJsID0gdXJsTGlzdGVuZXIub25EZWFsKGl0ZW0sIHN1Yl9jYXRlZ29yeV9uYW1lLCB1cmwpXFxuICAgICAgICAgICAgICAgICAgICBsYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGtleS50b1N0cmluZygpID09PSBjYXRlX3RlbXBbaW5kZXhdID8gJ+KAnOKAnOKAneKAnTxiPjxzcGFuIHN0eWxlPVxcXCJjb2xvcjogIzA5OEFDMVxcXCI+JyArIHRpdGxlICsgJzwvc3Bhbj48L2I+JyA6IHRpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJCh1cmwpLmxhenlSdWxlKChwYXJhbXMpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmNhdGVfdGVtcFtwYXJhbXMuaW5kZXhdID0gcGFyYW1zLmtleS50b1N0cmluZygpXFxuXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcihNWV9SVUxFLnRpdGxlLCBKU09OLnN0cmluZ2lmeShwYXJhbXMuY2F0ZV90ZW1wKSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0VmFyKE1ZX1JVTEUudXJsICsgXFxcIiNcXFwiICsgcGFyYW1zLnN1Yl9jYXRlZ29yeV9uYW1lLCBpbnB1dClcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZV90ZW1wOiBjYXRlX3RlbXAsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpbmRleCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBrZXksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2U6IHBhZ2UsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Yl9jYXRlZ29yeV9uYW1lOiBzdWJfY2F0ZWdvcnlfbmFtZVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbicsXFxuICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICBsYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImJsYW5rX2Jsb2NrXFxcIlxcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfVxcbiAgICB9XFxufVxcbiQuZXhwb3J0cy5DYXRlZ29yaWVzSGVhZGVyPUNhdGVnb3JpZXNIZWFkZXJcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuaIkeeahOaUtuiXjy3op4bpopFcIixcInBhdGhcIjpcInZpZGVvXCIsXCJydWxlXCI6XCJ2YXIgdHMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcXG52YXIgdmlkZW9fdXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3YzL2Zhdi9mb2xkZXIvc3BhY2U/YWNjZXNzX2tleT0nICsgZ2V0VmFyKCdhY2Nlc3Nfa2V5JykgKyAnJmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmJ1aWxkPTYxMzA0MDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImbW9iaV9hcHA9YW5kcm9pZCZwbGF0Zm9ybT1hbmRyb2lkJnNfbG9jYWxlPXpoX0NOJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMTMuMCUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCZ0cz0nICsgdHMgKyAnJnVwX21pZD0nICsgZ2V0VmFyKCdzdGFyaWQnKSArICcmc2lnbj0wYTUxYjc3MmY4MWRjNzgxMmNkNjYyMjZhODMyNTM4Myc7XFxudmFyIGxpc3QgPSBKU09OLnBhcnNlKHJlcXVlc3QodmlkZW9fdXJsKSkuZGF0YTtcXG5mb3IgKHZhciB4IG9mIGxpc3QpIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiB4Lm5hbWUsXFxuICAgICAgICBpbWc6ICdodHRwczovL2dpdGVlLmNvbS9DaGVyaXNoUngvaW1hZ2V3YXJlaG91c2UvcmF3L21hc3Rlci9pbWFnZS8xMzA5NjcyNWZlNTZjZTljZjY0M2EwZTRjZDBjMTU5Yy5naWYnLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eSNcXFwiK3guaWQrXFxcIkBsYXp5UnVsZT0uanM6cHV0VmFyKCdjaGFuZ2UnLGdldFZhcignY2hhbmdlJyk9PWlucHV0LnNwbGl0KCcjJylbMV0/JzAnOmlucHV0LnNwbGl0KCcjJylbMV0pO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5bey5Yi35pawJ1xcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ2F2YXRhcidcXG4gICAgfSk7XFxuICAgIGlmIChnZXRWYXIoJ2NoYW5nZScpID09IHguaWQpIHtcXG4gICAgICAgIHZhciBsaXN0MiA9IHgubWVkaWFMaXN0UmVzcG9uc2UubGlzdDtcXG4gICAgICAgIGxvZyhsaXN0MilcXG4gICAgICAgIGZvciAodmFyIGEgaW4gbGlzdDIpIHtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogbGlzdDJbYV0udGl0bGUsXFxuICAgICAgICAgICAgICAgIGltZzogbGlzdDJbYV0uY292ZXIrUmVmZXJlcixcXG4gICAgICAgICAgICAgICAgdXJsOidoaWtlcjovL3BhZ2UvY29sbGVjdGlvbj91cmw9aHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvdjMvZmF2L3Jlc291cmNlL2lkc++8n++8n2FjY2Vzc19rZXk9JytnZXRWYXIoJ2FjY2Vzc19rZXknKSsn77yG77yGYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzbvvIbvvIZidWlsZD02MTMwNDAw77yG77yGY19sb2NhbGU9emhfQ07vvIbvvIZjaGFubmVsPW1hc3Rlcu+8hu+8hm1lZGlhX2lkPScrbGlzdDJbYV0uaWQrJ++8hu+8hm1pZD0nK2dldFZhcignc3RhcmlkJykrJ++8hu+8hm1vYmlfYXBwPWFuZHJvaWTvvIbvvIZwbGF0Zm9ybT1hbmRyb2lk77yG77yGc19sb2NhbGU9emhfQ07vvIbvvIZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjEzLjAlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0TvvIbvvIZ0cz0nK3RzKyfvvIbvvIZzaWduPTdlMGYxYjkyZjNlZjM4MjhiMTliZTY2ODM4OTE1MDA3JyxcXG4gICAgICAgICAgICAgICAvLyBkZXNjOiBhWydtZWRpYV9jb3VudCddLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfdmVydGljYWxfcGljJ1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcblxcbiAgICB9XFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5oiR55qE5pS26JePLei/veeVqlwiLFwicGF0aFwiOlwiZmFuanVcIixcInJ1bGVcIjpcInZhciB0cyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcbnZhciB2aWRlb191cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3BnYy9hcHAvZm9sbG93L3YyL2Jhbmd1bWk/YWNjZXNzX2tleT0nICsgZ2V0VmFyKCdhY2Nlc3Nfa2V5JykgKyAnJmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmJ1aWxkPTYwOTEwMDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImbW9iaV9hcHA9YW5kcm9pZCZwbGF0Zm9ybT1hbmRyb2lkJnBuPScgKyBwYWdlbnVtICsgJyZwcz0yMCZzX2xvY2FsZT16aF9DTiZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjkuMSUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCZzdGF0dXM9MiZ0cz0nICsgdHMgKyAnJnNpZ249MTYyNGY5NTk4ZGNhMDZlYjEyOTUzNGU0NzY1ZjliMWEnO1xcbnRyeSB7XFxuICAgIHZhciBsaXN0ID0gSlNPTi5wYXJzZShyZXF1ZXN0KHZpZGVvX3VybCkpLnJlc3VsdC5mb2xsb3dfbGlzdDtcXG4gICAgZm9yICh2YXIgeCBvZiBsaXN0KSB7XFxuICAgICAgICB2YXIg57G75Z6LID0geC5pc19maW5pc2ggPT0gMSA/IFxcXCLlroznu5NcXFwiIDogXFxcIui/nui9vVxcXCI7XFxuICAgICAgICB2YXIg5qCH6K+GID0geFsnc2Vhc29uX3R5cGVfbmFtZSddICsgXFxcIiB8IFxcXCIgKyB4LmJhZGdlO1xcbiAgICAgICAgdmFyIGRlc2MgPSB4LnByb2dyZXNzID8g5qCH6K+GICsgXFxcIlxcXFxu4oCc4oCcXFxcIiArIHgubmV3X2VwLmluZGV4X3Nob3cgKyBcXFwi4oCd4oCdXFxcXG5cXFwiICsgeC5wcm9ncmVzcy5pbmRleF9zaG93IDog5qCH6K+GICsgXFxcIlxcXFxu4oCc4oCcXFxcIiArIHgubmV3X2VwLmluZGV4X3Nob3cgKyBcXFwi4oCd4oCdXFxcXG5cXFwiO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogeC50aXRsZSArIFxcXCJcXFxcdFxcXCIgKyBnZXRIZWFkKOexu+WeiyksXFxuICAgICAgICAgICAgaW1nOiB4Lm5ld19lcC5jb3ZlciArIFJlZmVyZXIsXFxuICAgICAgICAgICAgZGVzYzogZGVzYyxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD1cXFwiICsgeC51cmwgKyAnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX3ZlcnRpY2FsX3BpYydcXG4gICAgICAgIH0pO1xcbiAgICB9XFxufSBjYXRjaCAoZSkge31cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuaIkeeahOaUtuiXjy3ov73liadcIixcInBhdGhcIjpcImRzalwiLFwicnVsZVwiOlwidmFyIHRzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XFxudmFyIHZpZGVvX3VybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20vcGdjL2FwcC9mb2xsb3cvdjIvY2luZW1hP2FjY2Vzc19rZXk9JyArIGdldFZhcignYWNjZXNzX2tleScpICsgJyZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZidWlsZD02MDkxMDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJm1vYmlfYXBwPWFuZHJvaWQmcGxhdGZvcm09YW5kcm9pZCZwbj0nICsgcGFnZW51bSArICcmcHM9MjAmc19sb2NhbGU9emhfQ04mc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi45LjElMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0Qmc3RhdHVzPTImdHM9JyArIHRzICsgJyZzaWduPTE2MjRmOTU5OGRjYTA2ZWIxMjk1MzRlNDc2NWY5YjFhJztcXG50cnkge1xcbiAgICB2YXIgbGlzdCA9IEpTT04ucGFyc2UocmVxdWVzdCh2aWRlb191cmwpKS5yZXN1bHQuZm9sbG93X2xpc3Q7XFxuICAgIGZvciAodmFyIHggb2YgbGlzdCkge1xcbiAgICAgICAgdmFyIOexu+WeiyA9IHguaXNfZmluaXNoID09IDEgPyBcXFwi5a6M57uTXFxcIiA6IFxcXCLov57ovb1cXFwiO1xcbiAgICAgICAgdmFyIOagh+ivhiA9IHhbJ3NlYXNvbl90eXBlX25hbWUnXSArIFxcXCIgfCBcXFwiICsgeC5hcmVhc1swXS5uYW1lO1xcbiAgICAgICAgdmFyIGRlc2MgPSB4LnByb2dyZXNzID8g5qCH6K+GICsgXFxcIlxcXFxu4oCc4oCcXFxcIiArIHgubmV3X2VwLmluZGV4X3Nob3cgKyBcXFwi4oCd4oCdXFxcXG5cXFwiICsgeC5wcm9ncmVzcy5pbmRleF9zaG93IDog5qCH6K+GICsgXFxcIlxcXFxu4oCc4oCcXFxcIiArIHgubmV3X2VwLmluZGV4X3Nob3cgKyBcXFwi4oCd4oCdXFxcXG5cXFwiO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogeC50aXRsZSArIFxcXCJcXFxcdFxcXCIgKyBnZXRIZWFkKOexu+WeiyksXFxuICAgICAgICAgICAgaW1nOiB4Lm5ld19lcC5jb3ZlciArIFJlZmVyZXIsXFxuICAgICAgICAgICAgZGVzYzogZGVzYyxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD1cXFwiICsgeC51cmwgKyAnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX3ZlcnRpY2FsX3BpYydcXG4gICAgICAgIH0pO1xcbiAgICB9XFxufSBjYXRjaCAoZSkge31cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuaIkeeahOaUtuiXjy3mlLbol49cIixcInBhdGhcIjpcImNvbGxlY3Rpb25cIixcInJ1bGVcIjpcImpzOnZhciByZXMgPSB7fTt2YXIgZCA9IFtdO1xcbnZhciB0cyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcbnZhciBjb2RlID0gSlNPTi5wYXJzZShyZXF1ZXN0KE1ZX1VSTCkpLmRhdGE7XFxudmFyIHJlc291cmNlcyA9ICcnO1xcbmZvciAodmFyIHggb2YgY29kZSl7XFxuICAgIHZhciByZXNvdXJjZXMgPSByZXNvdXJjZXMgKyB4LmlkICsgJzonICsgeC50eXBlICsgJywnO1xcbn1cXG52YXIgcmVzb3VyY2VzID0gcmVzb3VyY2VzLnNsaWNlKDAscmVzb3VyY2VzLmxlbmd0aC0xKTtcXG52YXIgdXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3YzL2Zhdi9yZXNvdXJjZS9pbmZvcz9hY2Nlc3Nfa2V5PScrZ2V0VmFyKCdhY2Nlc3Nfa2V5JykrJyZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZidWlsZD02MTMwNDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGUmbWlkPScrZ2V0VmFyKCdzdGFyaWQnKSsnJm1vYmlfYXBwPWFuZHJvaWQmcGxhdGZvcm09YW5kcm9pZCZyZXNvdXJjZXM9JytyZXNvdXJjZXMrJyZzX2xvY2FsZT16aF9DTiZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjEzLjAlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0QmdHM9Jyt0cysnJnNpZ249N2UwZjFiOTJmM2VmMzgyOGIxOWJlNjY4Mzg5MTUwMDcnO1xcbnZhciBsaXN0ID0gSlNPTi5wYXJzZShyZXF1ZXN0KHVybCx7fSkpLmRhdGE7XFxuZm9yICh2YXIgeSBvZiBsaXN0ICl7XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6eS50aXRsZSxcXG4gICAgaW1nOnkuY292ZXIsXFxuICAgIGRlc2M6J+aSreaUvumHjzogJyt5LmNudF9pbmZvLnBsYXkrJyAg5by55bmVOiAnK3kuY250X2luZm8uZGFubWFrdSxcXG4gICAgdXJsOidoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD1odHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWls77yf77yfYWlkPe+8hu+8hmJ2aWQ9JyArIHkuYnZpZCArJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICBjb2xfdHlwZTonbW92aWVfMV92ZXJ0aWNhbF9waWMnXFxuICAgIH0pO1xcbn1cXG5yZXMuZGF0YSA9IGQ7XFxuc2V0UmVzdWx0KHJlcyk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIEt55m75b2VXCIsXCJwYXRoXCI6XCJsb2dpblwiLFwicnVsZVwiOlwiZXZhbFByaXZhdGVKUygnTGxlMG5heWRzelEyNTBJaE95ZFJBMWtKcjBYbk5hL3JGbHNqaUVLWlc3cmV0WkZldUhOSmxQS1dNRTRhOUJjZkI5QjBoVGF3WU04ditoRXd6RjNSVk4yc1IvaUg4TnZ5SFk2dXpLTmdqTWJKODVHTEVnMEp5alBJdGZHR1Jnd0pGVVZOTDFJTGVSTmJhZTM5WFZyb0Q3V0tVS0JQZnY3SHdxajJIWUZINXVRTHBPVlp2RzRVY1lPekFzN2o4TmlhUEVVSk1TNDI0QmtibnMxTmY2RklEWGxma05JSXNXQkhXUmRPNm1wNzNWeTJ2dTVoZzFhRzBBVmVrNStwUWNxYWt4RU05Y1dHZ0NKQzVtS3BVaVpTRXRQOTJzS0E5U0srL05Ic3FmMTNDT3RRUmlpeDZnRmh5RmhMZXo3K0dwdVNiTEgxM2sxRkRVWmtpbFk3T0JQOHlDWlArWW00MVloaS95SVR4M0VsTG1namlCZXhqMHFUTGpyS0lYbng0RERYaWlwU3cvWXBVTmRxdGdVWEhOaTk4YTdjR3RMRSs5NUFxazJEY1YvSDNPRzVocHN3U0hDMitpbHJSTFA4K1R5TFRvZ3JGVWFKWU14T21yV3dBalVNMUZmTHMvTVN4NjAxVy91ZUZEQW1oTy9aWm9VWndmM01ZYmh0a3YrQnhneUcvNzZXZkRBUWJHQVJKOTROYWpaOXB6enZjdVhJRXJncjFEL1B1Z0ZtaE9XSGsvTVNkRkRsQnFNRHBFOHg5NVlqNnRMNHdGc3cyT2FHT29lOE1oc25pRllFRjhCcU1QUmVkMHo3Y0JDNFJHeEQ1TmdWMUZLV0hBUGdaUFlGS2pnTzlnbE5KdjcxSVNnSW85U0tSQkVqS21FNGNFdmIva0pFT0NFRExqQlFyVnNPVDExT3VaY1p1ZENaRU9Uem1yaUdIZFBmZmxLQnJGc0VoN3lsVXRQWllFY0VwQ3kxV2gxZTFZeE5LWmhiT3VrMDJ3dEE3RmZITlAwRHFJWjgzRjhSRkczOFJZMzZmRkkvL3pMcENNRU04VVhoemxqdzVxb1NQdnpmaGVSMS9HRjNNampGZnN6WFozVUN2Y0JnMndDMU9rQVZLcDB1U2NHTG1lcTZRYUViUU4ydW56MDJwcEZWN2VLOUg3M3lEMUVFbE5LQ1FDa2ttQjZkeHBxdGtWNkpoUnN4aWdNY2VYbjRkVUd0K0F0ZmtBMkt2eW1lNXJrdXBwQmNlRnZNZmhJRnN4WUdSMlVFOStveDZrZmxZQnRQcDU1UTZ1bElLeWRocms1VEFUek0yaXY5Zjl4cVlwSklJQm50SVZJb2YzT2FuSEpXckV0eFEyYzFnY3ZPdC9XYkUvbGtOZHJRMzNJT1lyT0ZiMmNiWjRNL2xoNW5WdHppanZwWWUwTTZPNXYrSW9aTXBPaVZxc2U3eU5pWGhBSHhFMDV6aWlWY2o5cGl6cFd6SWViek80ZytLa2FxSnJCUzZ5ejVRWG1pRmNXVkVTSUlJb3ZZSGVDS1JETGdCb2pxSmRUZUlYYVIvS2U0OXN0MDNYMkhSdzJyMEIwTW5pZjh0RVBkYTFnbGNCTHNURVpFVzJoYmtkdG9FaWNJUkZ2a2k1NXg5SFF0UVQ0enAyVFdwM2F1N1RJendEaXRDVWJiRE9WMXpGZ1NIaDA4NzNMbHlCSzRLOVEvejdvQlpvVGxoNVB6RW5SUTVRYWpBNlJQTWZlV0krclMrTUJiTU5qbWhqcUh2REliSjRpQnAreFhoamMrMnJ2aURhQU95RkM5dWx2a3h6YStUVzRNYXQwaHh0WURySWwrRHBvdWVqeUlNVFc4RHN2WHhQWENBUWJtd0dsREVBZk9peXF0cUxROUhmOGdEWEUzNVE3YXkweUFCRWVqMXFLV2dyai9ZbkJiWS9kWUFPUFNIcG1sZGRGTEpuS3BBcGRNWHZZQnN3cldGMENSUlNiMXM3Q1pSZ01mT1F6SzZJejYvdGVoYXNtT3M3TWw5dy9IcG41bktoMTArbjBpR1hNdng1SUkrU0dwb0x1ZUN0Um1KN1VWVkN0REc2eGV2eFlNbTA0c0FHR0dKYUNEQWhHSDhpY2JoSUUyYitvcURGRXBtVTBlWTdSdEc3OWhQaEwrZ1hZT3lZTlV2SnFlamxiWjEvT2R2TDVuWXk2bTMwR3dsM3o3dzVlc2xaQ1VBMGthUnM1a21VT0x2TDBRUVBENzRmYWdBZHFHc0xIVUdEV2I0QnpDTEYyTVlMSHkrRHNja0szRllKTXcwVTVxTjdMNzAwc1ZTYWxmNnRLOTZkV3F6bjVlSXJld2YxaUdvODNJY3d6OW84MUptdUtBMUxwSVNTOTA5OG53QXgxcVAxRnpQY3dJaFRTVnVSOCtBb28xcDNEaTBXTHdOS1FOT0k4eDc1RG1hRTZCTFBpRGthRExLSnljK2J6WDBoSUMzc1BiMitkZnZsa3NDbksyMmNHaEsyNUZzOU9GUjNyRi9WRlZTUmJERzcrN0FxT2tFMjRib2tFVWpkOG5TNUhqcXAzRC91ayswWHpCeTkyMjJYNmJKbUpod0ZsS3o0NlRCVlhlenptM2R6UVc3T2wrME9xZi9FeDJBWStyd1ArTTZ4RlJIVVgvajJHY0dhNW1oYkpVelJSQmRPNUlwclUyTnM2SHRTWEM5SXFjeFcxVmw1YkNPYk1HOStIdnZ6dTBzRzdBV05ndVpKQ3N4a0pYaGhnd2YyR0I2RlB1NitvRlJ6NkQ0QTA1c3NEc0xMVnltWjVjZ1RiRGNiZXExOVVtaVlhbTNQbjdxV0ljanVoOU9zTjR0aUZUcnJVRVBaSVJYOVhrMFVHRFlmYWJRMXBYZnhNLyt5U2g4cTdkd25WSi9nN2x1aWhHT2VlTndIWEFGQXk0bjNhY1BIMlhCYy9tc3g1WEtnSXJlT1JNVlkvY0ZiOUtjbTNvV1p6eks2K0hTUDg1dGtGS0ttNTVoZzhNeHdpNUl4OVJRRS9wR0F4MWNzb3ZTcDNqUlAwaDYybzZOaEZrdENES1d6akVVbDlibWEyOGZaeWlZNGRYQkVzSEJPcEt2QnpBQTBsUmtlelRuRXZ2WHM5WjU1VXJBYThaaEFGdXg2WkVOdzRjTVRJdVNrVmZ3K1YvVS9tb21sdEo5dkdQZ2lxYjVuWmw5S3U3ZDBST1YxNUozUUFzYmhPeFQ2U2drSVZ1Z3VWYVRWUmNqMEhXK21NTllLYlF5bnJOUkFxS0RlSnF1VnhjOUhsUE02TDhxUG5aSVdiYkhBZlVmR2J3MGxSbHdTdU9wRjcrQTJXSkxaNFh6U2dIYmNNWGt1bHpQUERQOS9jYVJJQjhlMlZrekVaU1BuVWlaQXBXUDZ3V3VzSHVCMzlXQU03OCtOQmk0QnAybXhXakxLSExXUU1EZUlYWGhkeGVjSzVxVVVmWUxnSVRpaDlEZUZwZ0xOV2NCTEdRRmJkU05rSjNOV3BjRzU2RGFqREl1TFVhOGswMGk5NGNKd0F6TWtKQnhOSmI1ZWhCUmtWdldYb3NtdEpCTWRSZjZORWJzVjl1OHZwWmpORW9nVWtubWx0Sjl2R1BnaXFiNW5abDlLdTdkMVpxVFB6b3B3WmhoK2l0RHBVYjBMcjI3YzV3TkFBRWpycGhPcWZlME5qMzlDTlcwTEg0V3hqZjJsd2x4TXRPS1IxSFFML0NQdzUxeXlZSi9MVnJReitpZjNpSUJOVTRuQ2dPYnVXNUpVTFR2c1FzczJSbmVMQ3c2cnBoeGdNc2Rhd01FZ1o5cUNyQ003eVRNMEV5bEZ4ZmppSVpLcWJLMTBCYWUyTm9IRCtHdW9VS0FRcDVTdTRBcVhTZktMem14NGhXYm1TaU5WN21DQi9yZHcxeWJzUHZnQUZjRzg1TjUza05qemNQdmJLTE9PeEhYSFlWV0NsQm1KcHJ3SnRIQTZCMVdacEdXUng1TS9nRG1zR3pWUm1WdUJEdm1TQVpNd0llVnI1YnpERTg2bTBOcWNtZ1ROZXB4d3FCK3lCQnA1S3pkNDJFQVFodDJFSzVUMnpNeHZnVHplUy96M0svcTVsUkhsMXpLMEovc1F3THg5ejhsTVZnOVJCYkFlL2ViMjBWb3d6Y3FQZGUvcWkwakhNd0djTWFDOWR1eVc1NndsR09zbmtiZXlCUS9QZlJTU3JrVUcvdmNhQ2JUYTRJVDg0Wnp0cE5RUnZiZVVuSUFvUGtXL2VaNndPVWlhNEpzeWF3OTlXYTgrRTRMakRtWjB6UmhuU0hnVXlDL3liOXJaVDJsRTFTN0pCSWs3WVpQWHlBMDBhMkxnS0ZHODhZelY4MGhpK0FWVHdSWlBrOXdsTzdnUlMyTlIvNTc3bkl4RzBIMjJsbEZzY21OMUxoSTkxRkQyVmJWWGJxaUtVVmpKY1ZuNi9zUWNUd3d6N3R2QjZ6OXlNbXJEbHlDTXZ5VWR3R0k2dXI5RWFjNHFXNkVVejF4SDJ5NVRJOEFmaHh4eE9yQVFabkVSYlRNSUNkZktHUUdESmUvVGRLUktRdGdicGI1TWMydmsxdURHcmRJY2JXQTZ6RFB1MjhIclAzSXlhc09YSUl5L0pSTmR2c1g2RGxLZFl3TG5GVVFqMnQ2SFFIaHRqa09saSt0Y09uUmxqQWEzMm9yZng3OVZPdXZpTnErbU9xUjFOK0NHUkYyYm1LVTFrcERBcng0VnpEZFdKZGRFcmErT2tGbk9ORUd6NFllY3dFUlpVZDc3K25uUEwyTW9DTW1FRFljdlhJczJFdVpIZGtUZm4xaXdlb2dEMDFRZndxWkhORjhIdmxCV01VL2Y2RWR6WEtMcUlnUksyaXBBTUZnS1J2bFJiYXNIUGxSdXNTZzBwUk5WVUNRUjVlYk55eHFGWGhMYzIrb2VkSzhKRW9Mb01FUTVEM2ZKYXJZZ2Q5ank2Zk9pQmtHOEM5SUlUQjhteXR5eXN3Y0t0d2h5MS8xV2JITzdDei9SZHFWY3lKMzRBMnEyWjN5dWkxUTVhMW9QbU8wTldMZm55YTQrc1JOUXJrc2lRNEh1TzI2R2FaVVI4a1d6RjFPeGRkdWFQVnhJTk1iNjU4Y3NYVnVER1o1TVlwV2RiY2tGVzZlWVBGaXUreFNEQy9lRHpzWEFINkZMM1BWOE9wRFVQQm1wVGVrMlhYZmVLZHFVMnBTOW03U0NpQ0I1dTJxYmlLQzJjOXZCVjI0TTZzOFJhNGhtZCtQYWo0RlR5dHYzNlNIMWJMSzh0STFsWnord2lmKzlaSUFkVDIyY3I1N2pxK3lwTVBlTjF5NTlEcXY3cHNoRCtKVEk4VWdkUzRRVmxDd0YxN1lydkpIUEQ0MktGRWJnUVkrKzBqMGRhbHlIWWNnZjU4UXlBbDkrbm5CSlpWVVZsSWlsUTZxRVBzSHpiNnJNYlY2N1lTcVpIY0x2ZkNUb2JSaTRwYUJDRVV4Y3lOTFF2SlNLY0twWkF1ZjIrOEs4MXpLeXozTWRFY3VydHNobnN4UUErb2NEQzJPeTU4aXlDSzZkU2pJclRQaUZGUTgwQm1wYTJEM2xzY0xWbVk1SVI0b2s5dGdkQmVYSTZYWjh1Mms5S0xKV2QrRnFzZjhZT1FHeE82RUgyY0NLTzJ1MCszRi9HT3o2Ky9PcnV0TGFocVIybWtWR0lkSkt1WGVZR3NabkRCZ2VKZ0JKWjhySUhDMEMwTldMTHhpakxMRkpmemkwcHpHSVJIVzRMQUpBaE8vZkxwU0w1MFJscmhNWXZiUXM0b1p1MXBlKzc5WFQ1UlI4OGRsWHMxcjZENHNKSFloNis3eDNrUFF1TWxzOXJjMW55d3pCZGwzNUNJWnhFdzZjQUNqUDhZNGRuNnp3TllQbnQ5UW1HMklWNFo0ck1Wd0k1cFpRaW1WNGNCMUp5cC95SzN2T2NGZXBXYmEwaU5MN3hBaEVHRHRzOEk3aEsvNU5IU0N6d3M2N1RTa0o4VUh5d0drdFNUSkNUMDE1eXBRQ2FTbkttT09xVWlteENhaGZTNGU0ZjlYdGZCbFNsR1djWit5eXZMU05aV2Mvc0luL3ZXU0FIVTlqeHNDUDJwSzhJcEg4alJ5YUR4YWlHRkx4TW1ReGM1a0RnZzZ2R2RQNkt5MjRBMkEwZUJpZVhiZ1BmWHlIczgyUjQ1NjkyMkp6MHBWQUdzalA0NDNteGlFK282V3YzTG5kbm0wK0YvUTFIa3Y3NFBkdkltSERONHVyR0Y4dEVCK0RsQ0ZRK2xGU3FoK2JDUEl2aHpoZTZOeHpxOERoK2lvenVuWklvZkl6cmlvMWdjckJmQjBRWWRqWEcwRlRSN3BkTjU0bTJNcHZFSDB5ZnRFbzE5bnJ2TEs4dEkxbFp6K3dpZis5WklBZFQydEhWL0NQU3NLdDd6d2N5dGFHckxhYW80MkQyMnNzd1RSTFBhRy9xNkdpN0RqRWhod0tsQnhqanc3SU15dElJM05rTThjYitKdEV5Zjh3RmtURUZpRkxVWWltUS9oUFhJOTN6clhrKyt2cW9nTHJ1MHRhWGd0bE0xN3F0QWZ6R1F1OHlVZEk0cXFZemVKeFh4ZjBOTloyb0JqZURyMkRpd0k5T1hQVXVCSGJzTDRjMy9udzEwRW0yVTZNRkJVY3Jaai9ETWFTRnhWY1o3TW9XbDJvbjhHbTBWb3d6Y3FQZGUvcWkwakhNd0djTWY5ejQ5ZWdaUlF6TDdoS1NVTTVUUHQzN0FtazM3OWNjd3BMdFBUVDIzQmg3VWhua2RHMEdVb0h2SHN5OTlHeG1RYVI0bmF5Ty9yUUZib3F1c3RTRkxyTzgwL1B0bkg4RUpjd1FhUVlaSnpOMWI5YkQ2UnJKbDZ6UUlvbXdNZll1dSttOEZzTzd6ZDQvY2ZyNmhpT2ViSFNLWm1EUEZkM1hSSmUvOUNObkxHTFlYSkxyWXZFdnRGendEOEEzbjNkaFhXUGlta0Fpc0YwUis3UGhROVZKTFdjR2g4dHFLZ29Wb1o3a3pCR3VEN1NoOWMrMlNyK1NBR0g2YUhCVDRGdDFlc3dVbmIrZm5KR2hhSFNDL1N2b3pLQ0xtV05yUFE5NGFadVl5T092MGZsUFU5UHY5S09RVXkrNVV1ZGxNdnRxbDdCSUpmbzRQaWgvbEs4ZTFORzlKTjBEOU1MdTJmNytVQkJjZ25jQjlFaHVjS1FDSnNSaFBMZ1pwWC9yK3NMZ25iUzFIY0JLNTZ2N3FObVBRWXpsTUx3Z1VGUUY3QWRld1RvZS9ZaXVBYnFjS2NNMU13TGZJNGJlL2duRzRjOFI0VTlCUDFHbDgxWjVUTFpmV2ZlMXg2VjhHekpJOTg3VnVLMlk3MTBubEVzSVVBQ3AwREErcDNiNnF3L2JFVUcwYm9MUHpvTnJJVEd0T0l3RWJ1WGlBanhrdmhzL0pBdndJRzY1djZvTlNrN1l4Slp6Rk5vK2oxZklhejArRkJqVzVjV2Yrc2lPcDN2WWhrWFdvNVNsNmFDN25RcjlEemhONzBUT2k5bkJ6SFFSRmxSM3Z2NmVjOHZZeWdJeVlRTmh5OWNpellTNWtkMlJOK2ZXTEI2aUFkUS9ERjd3eUg5OXpJcHJJTlU0TnhldmI2SHlWSlBrNTFYRkIxU0lnU0lycnB6M0VqM0orVmlncGdFYmhWWjZxc0ZsOEFuMlVZcEFsM3hMeTF1Y0JGMnhCdXFaS1licEpVdEQ5RndHZVJrVnlFMXRHcWpIdFFZaC9JTWdxdmZheUxaQnhpTytWM1RDMlZQRnoycm9DeHhOOElMenlLQ2NjeElZNkVZc2cyd0xiMWI5QityV0g0RzhOL3JnQzlEMHJYcm5RS0ViWXArbFhYbHR3RVNRZ1B6cmI1RW9SUHR5OWRpYmxTQmJ4cjRQd0VsL0dueFJsRlpwWWs4RHlmRkpkdU44MTIxWDVtUldLVTY2OW11RzNqSTRMc1hyaGw2QlZWTWNYTjlrYXE5cXpPcjJ2VGY2SXM1T3pWK3hnUU5CRHNNaWRzSjUvOCtVK1pMWG9va3RTN3pCOURqeUVuVFF4V1hPbmhJdzRrN1d6ajZwbStaSTVXMU4zMFFiVkIrUWZPSWZGemtBOFIza3NvRHVJeGZrZytzWTZrUEdzN01jclNXRTJ3MFdaWlRjaURvbVROei9hL0FBUkdhS0xFL2U0a2cxcjBwU0VkNUxxZnYyR1BEMENWRytJSVJzcTk1SE1GclhESWZmL3c5YkxLOHRJMWxaeit3aWYrOVpJQWRUMng5SmNkeDgvK0VNTDZzRitSQmhaT0lpemRuVUNjdmpMdkUzZHZqVDJYQmljZFFGejcxR1NPZWdqZytIZnlzVGE5NHA0NlVzL2craXVXSEEyc2RIdUVHWVNFblFsLzFYa3JHSTF3T3FMYzR4Vy9UeGZjSk9TQlkxZk9JMldOQXlwS1NKM1hMcTFiNGJIbHE2QlZ4Umw3WkdwWElBKzRUamhqY05XRDNoVzBoUXJvMDY4MXRIdGc3K2Jqd0NzUGt2TVV6MEc1a1BaaG0veXAxWnVheUc4YStobkxBc3Z1L01sS25QWXdybFRGUEVMUEN6cnROS1FueFFmTEFhUzFKTWtSeUNHdnhhVGtrUS9pZkY3S2R6Vm54eVEyYzg4eFF3R2NKd2I1aUZ3VElyTEs4dEkxbFp6K3dpZis5WklBZFQyZW1XdTRXRDVKTDlwWVF5czZ1dVRqcFVueTNHQ0JxdG1sU0Y3V0FxYi9TRE5OR3p5TlE3ZmE4Y3o2bzJCdWVIN25zZXd0THJXSTgxMzlrRFk3YnV3SUpsWlBOclFPMTRuS0M0RlJkWVRkNnRHTFJ6ZHpwUlEzWVNOMWVib3FMeURhaUR0dDJFZW8yU3VPTlNYREtrRFBVdEROL3lFWGhDUWNnVU43b0xKMHA5VFRnc0E0SW05M1JML0hYbkVadnF1ZWVoRU4wUmd1eWlFazZ4ZnFqdEcvL3Fyb2RmWFlkWjJYZXZVQTBlM1ExT0RxdXNvZ1o2OU5QVHdjTUlJRUI5T2psQ2RDWHREbEdGaXdZaDluc0thV1laMmhaejlwYUFBOTY1eVJDUlQ2RlNPTHhhblJobzJFc2xJL2V4ZFkzbTZobmFGblAybG9BRDNybkpFSkZQb1ZLU2VWNEhjMksrUEhwZG1BVTdsQ2kwbkM4d1M2TFZwTVNTMTJCNHptMkppeS8vcjNyRnJDajg5d0NWTTRyV01lSGpHTkVxSU9rY0FLSXBoVG44TiszdFdyTHVldkpDVzh1Q1BtUnFOQkl4M281dTlBZ2cyQ294QmNiZUtoU2tneGNzcnkwaldWblA3Q0ovNzFrZ0IxUFpzOFFYMHczMzBSYnQrbitxZkdPS2dsdFRpOVRVSUUrbmFrT3dCVXdsR3pHQ292Y2pGL2VzZVlmaXNUMWtBVFphNUNCcFJFaCtmbmMzTGV0TGg2bEp6YlJ6Q09VN2h2WW1mcUNmUUlFRTJMSy93bnVvN3hLRk01eHU3d2RjYllsN0xLOHRJMWxaeit3aWYrOVpJQWRUMitpRndEMDg3ZW5TOVFtbmMrNlR0R3d5cWNzenV6NmowMEJGSVMvU2JNVmhuSkFDK1pRV1NvT1lTc3prZW5QWW1rUzl5RmNQbEZmakJabWhEaWR5S25zc3J5MGpXVm5QN0NKLzcxa2dCMVBiR2EySUwydjBKTCswNXlxcEVrMVJYUnNQZGRxdTlHL2daQndZdGIwMi82NExKVWM3bVp0dzVLdi80VTg0b2YvWndsNGJwcUY5YXo1TkpyS0trRi94aXl5dkxTTlpXYy9zSW4vdldTQUhVOWgrdGw5UXhpODdLMmgrNS9COVdIZ3pIN1gxaXkyOU9aQ29NZWxYRCtDbFZ5eXZMU05aV2Mvc0luL3ZXU0FIVTlpRVNNT292TWtCN2F2V2FncWRWQVpYemMvZ2JwT2x4MGdzRmpoUHduMHVoTGUxMmVmYTBtb1U1Wit4YXNkWkwvR0NqNDN0Q1ZCVG1GVUxydlRpeWdwYUdkb1djL2FXZ0FQZXVja1FrVStoVUdoRzdMakFNWGhrdEVYYnVyR1Fabm1jdEJMYVQvM2s4dE5iSEFwVmdLWGpMSzh0STFsWnord2lmKzlaSUFkVDIzbHdLcjZjaEJhMFYwQnp0UHpHdUl6RlhibFB4OUNQamlhV1hIaC9zaU1ETEs4dEkxbFp6K3dpZis5WklBZFQyUDRsMDJCdUtCREUzMGt2OUJiRjNTbi94STh6czQ5cjhYSUUyVG5HVFFYakxLOHRJMWxaeit3aWYrOVpJQWRUMlQ5ZTZsUHF1QVRlL3d4VjNYVFNUaVVETkc1T3pteTFuek9NU3IwSWJqczcwK2JmRng4aDdZQmcwMEFNczZjaUt6NG1uVzdicnVPSG1DNDRuWGtmc3dybDVFTGg0RXRaV1Nxcmhma2FwQ29LaWYzaUlCTlU0bkNnT2J1VzVKVUxUdzFBSUNaeUFDRXhuOXc2VzJpQlZJcTJVVWNXRjZONWRrRU9ER0FJd0lXcDRZUUI2d3JTMGJUd1pML1hvR1Y5WHNKdzNyei9FMjRWenNBTVlKMWpwS0F4STEyZDcwbC96QUNZQ2tsVS9kdFJBZ1VuS2ZDQ3h3Y0xRcTRLUXFBTGR1bXhRd3UrZE5CQlVvWDRtUHBEemhUbnBVY05XZXVkbFRmdmRBNlZhZldGeHkwR21McmhiZU1xQ09xNlRIcDdWT1pTVlVEcDU2bm5LOE9qMGJycm05QWQzSHplNGFpdFRzZzJVL2ZjSCs3ejFyY0VGUXJ3QVN1TUVnRlQvRGJnKzBuMCtvY0dEWG9nendzeEFaRHlhU3ViUnNtdFYwNUJRRlRKL0JOdnYvdWY1a1NZOWkvOTdLVTdJRm1ZeGw4c3B3emtUcmlvNGpBUkg2WndUWHBSbEg5NlRaZGQ5NHAycFRhbEwyYnRJS0lLNVdrNzRLNXdIMzJTWVRzaFZPZi9peXl2TFNOWldjL3NJbi92V1NBSFU5c1FzVkp6bS9wWUFmTmZWaFhHUk1KNlNvRDJvZmtIOUorWlNuTGZESkU4MGo4bkdXU2pmR3FuUDhtM1E3c2NsOGdkY0VzVlNEVnhxUVN4d2FpUlV3REJoNU9UQ2w3RHZvWnFEd29peHAwTzVWcUt2eXg4V0NVeU9PZmZ5T3JBZjU1b2VVS25hNXAySUF3Y3R5aDRJUm5VbjE5UVJ4SWRhK1R4K25LZkQ0R1JnRU1QNUs3OGZiL21lb1BrYkFkSFBVYkNmNnlCOHlPNCs5NldtUU1xckVpYXpLZXladGpidmxpa2JPZU1QNWZDOG03TzFPL0NCbmhmbk9yR1l6SFp3SGtDcWN3eEFxckI5V2tiTEx5SE1adnA1Z0dncklvS0doRkhENWJuZjlmQXp6cFF5K3c3ODg3RGtKeXZ2MnduT0orS3FsbVpBb3lIVmlINDNGejBYYUEwUm1tQmJwSEpmQUJjSmwycEFrS29IVlVjYmQ2eDVDelJSOC9PQXRucU92TnRDemlobTdXbDc3djFkUGxGSHp4M0xLOHRJMWxaeit3aWYrOVpJQWRUMmxoQkYzSDBQbzlGRVdDQXgrdjBuZmdVc1lXZDJpd2g4OXlBTXI2YXFSZHdiTVpmY2FJUHJmTUdpaDhRNlJVU2RHTnQ5cjJhVytRODVxSEZKdGk5QWZXTStuK2xzZ2x3MnljV0ptOEhCQmtGTG1RMFdwc05nRUFqZFNqLyt3OEJsMVVVd2h4bkxrYy96c2l0S0xSdHJIQ3JOV1JjUDlWTDNUZDhIYVVPNmZTbHFoMzZSdWNmdzhUUTFCMU1Xb3VwamhQUjhPVHorQ1VrZHlLUGJFN1VqMVVEcGg5a1lhcVhQTWwxLzZtcHEwMmJMSzh0STFsWnord2lmKzlaSUFkVDJPUGZacWZFclB3dDhmSmxvbzNGSG9ac0hqM3VOUjB5T2pJU1pRRlhmaGRXWWd0VW1iM1hOSURIb0hHeFducTVNNmRSL2hCQm81VjRpK1RMWnZNVXFlRkpjUjRueTFURFJkOHRPM2RCZDkwNlJ3bi9CQ3FIS09PMEdLTXZ4RkE5djhmVG0xTVBmeXJnTmxzd1hBdVpqeUg5c3ErNTB3bFpocW9KTVZsSzFVcSt0MUI4SUtZZVkyZDMvdzUzdGVlOWdTN3RRSUVTS1ZMUlJTTWV5Y3VMZ29vTUhKSGdoTFpkYnlKcDBZKytrRXFxMXJBTHZFS2NmdWRPdVMwMmExTzZFMzFBOVl5bVFQeVYrb2dBNVJhN1lNaUxnUTYwVDBlb1NrK2NpaTRoUEtKeGUvNGJlL1gzMk44cElJQkxIbkdxVHRqRWxuTVUyajZQVjhoclBUNFVHTmJseFovNnlJNm5lOWlHUmRhamxLWHBvTHVkQ3YwUE9FM3ZSTTZMMmNITWRCRVdWSGUrL3A1enk5aktBakpoQTJITDF5TE5oTG1SM1pFMzU5WXNIcUlBZVB5Q05yREozNWR6VXE4c3I3NWs1cDlzZnNOOWY2ZHp2eEFvRWdOemd3VnpLUEZseFdxd3pVd2F6V3lkR0NTV3BEbEhLZ09JTFlIaUx6WmRmSDVwdGNsNlBpQ0RiVWd0eE5yUVBLTmdYVUJZQXBLNEYvSjl4Wmw5SlB3MU1yWUkxazRVcDdHTVVhYWNYdHoyaWxEUEY2VHhQQmJyU0N5aU1Udm9GWnlyeTZRNW00OXZjVktna1JPUC9QQjEwNnpncXpWa1hEL1ZTOTAzZkIybER1bjBwMnlPZEVoL0N3Y3VGWTJORVVhRHVJQm9neWJDb0FTcEdTdi9kUC9OYTk5YWFmQiszdkE2eEM3c2c5MWdHUm14dGxYTnZZaUNNbUREekNaaE1mbmYvcWh4MWY4dklPRHJqTDVpZDZqeEhybWhBUmNVT3hENGo5LzU4V3RKWXZhbXRDendzNjdUU2tKOFVIeXdHa3RTVEpNcGdadGl6b0FYTjU5aFErVTVDaElRMFVUaklwQ0NoY0F2V3A5L0NIeW80Umc5L2lxaU5MU0JPVzQxcFl2Z0dVN3RIMWlQdWhleDE5YlhNNW84RTZXQ2pPeW5wN05nQUNWMytSQXo0cmFsMWhuYUZuUDJsb0FEM3JuSkVKRlBvVkMxUU9DR0RPL28xeFhiNjhnR2lIaUJDc3NIN1drVHN4VGZQVHFpdVhHMk5pV3N1b05jUC84NDQ3VE9Ed0J3UWh4YTFmM1JGTDBxVnlscUdyYlBlcWZnd1FYMFROdUJxOUQvTlRISXloZVR1d0FvVllHOHY0bE1qN29ydm51blV3d2drNlVYKzNVVWJMYUFaNEttdGRSM2hUc3hLaWlLNFJyaUVwMDc1RUg1MmxkalJKYjR1YkkvUVgrcWRyVEx4RndJZFllUC93aWlrTlZPWFBNQ203dUh2cmNJcHZocWNWdFZFWCtHOWFMOHZQbnpjK2hIbnhBNzA4YkQ2TGZKTmdhM0Z5SEtpQlIzVWY5bjBEZ0hHTjVYMWh4R2xRYm04VVRMOUxJQnZpRDk2MFY3SlF2bXFBaC9rNHBkZ0c5cXc0VWdoT2hqRXk1RG1DcCtkdjRSV09VT2FtNXFkK0tlZ2trRVNPRzhrUVFlcHpwUXkrdzc4ODdEa0p5dnYyd25PSjhDSlJsMUVPRE0wUVl6a3pNdHY4WEhMSzh0STFsWnord2lmKzlaSUFkVDJDb3Ryb1JQcjlMQUwxS3QrZDdEM01kdHhOYXNMVHVKZERJK3FOYmI4UFR0UHV0L3REcU9QWGkxMXl1NHpWMzNuUlk2RmovWlI1b0s4b3c3a1dtYnMwK0U4R09oaEdqRjVhN3NiL1FYdzJRT0RxdXNvZ1o2OU5QVHdjTUlJRUI5T0RDV09LQisxdnJGS1RGaDhmV29PQmdMUkpyRTc1MWswU2FERGxWTjNpc05KQU9zZlhqekd2b1l6VzJiYXBqR2xxeWpqNmZ5QlUrNUl3TjhGcTRsQnZnTjhZSThWTWQ4YmJ3SWp2SjV2S1dBU2ZBQUVCeStMRFZjNnNYdGNzUHZXdDMrc3VzOUkyMnpLMlRqN2hTNnA2TXNyeTBqV1ZuUDdDSi83MWtnQjFQYngvYUx6U0xRbXR3TzRXUm9OMjJLWVZKQTMvWHpTRWdiZ25lZ3hxcU5PQmkzdGRubjJ0SnFGT1dmc1dySFdTL3p2N3EyVTBIQW1TSGNiK250dGxzVkxqTWpSd2phT2dBdFJlajNkRXZTUFZGdy9pMGFDSzB4TVFiTEtoV2J4dFFDQmtsZkZhWVZGTFBaWkUwbjNTL3hqMUJQVG1GZGFVR3laUloyNlFER2hPTXNyeTBqV1ZuUDdDSi83MWtnQjFQWXpMTklUNjdzd2hKMVRFbklBTGNVcys1Smx3SnU3bXhUUlU0V1hBbkJQMTNnZTVnVmpqMU5hSjY4d3VhUGlWaDdBZDZVUFdXZ1I2d0xJUG5UVWZ0RmowcDZWWFNKUHVUZWF3UlJRNGMzY3JYZVFtdENIQ3BVZ1hLVm90Y0RkeldBVFRuT0tKVnlQMm1MT2xiTWg1dk03K3U0Zkw3TTE2ejg3U0pFSFRUVG1tK0s5TkhOcG1TbXdKYmhhc1p3ZGd4L0FkNlVQV1dnUjZ3TElQblRVZnRGak9JaWhGL0MzMWdzSzRFdnR1dXNtVWs4OWNja0FQNWl2bXB5R1JMNjZ4S1QzYkJBLzU0bFZPaXJWeHJaUUIvdzdUUzdsL0VlLzJvMUtFVUw4cDdEdG8vYzVzblFKbENTVWZERERPdWV4bVhqQU9iUWdzMzdiTER5RTc0WUtLYkxSZHd4SmVFa0NqRGR3THZNdUpHcnNDT3oyT3RqQVBJUVRrakNoTkp5V0N6U0VkelhLTHFJZ1JLMmlwQU1GZ0tSdmxSYmFzSFBsUnVzU2cwcFJOVlVDUVozWFBnbDNxVElsYU1Ib2JCUVJuUDAxMXZvaDV5NkRCTUtDMTZsWU5EOFVmbXlnY2xUWXNaQ2VkZXA3VWxvRHF3Y2pIYTZLSDhXMVdGWjlEWHhQM1d2WUYwUkRyWVRiNGpvUW1JVlYvY0puZWQzY1AyVXJ2cGxyNkxuZFRya05xQllBcEs0Ri9KOXhabDlKUHcxTXJZSTFrNFVwN0dNVWFhY1h0ejJpbERQRjZUeFBCYnJTQ3lpTVR2b0ZaeXJ5NlE1bTQ5dmNWS2drUk9QL1BCMTA2emdxelZrWEQvVlM5MDNmQjJsRHVuMHAyeU9kRWgvQ3djdUZZMk5FVWFEdUlPcno1c21adUx2SVhtV09wRVhXaUdvSWxpeWtwbkhjbWxaWkhsSnBWdXZvVXowRzVrUFpobS95cDFadWF5RzhhOXFSb3JWWEl0L2hhOTRLYzJ3ZlRjdkxLOHRJMWxaeit3aWYrOVpJQWRUMnp1WmhGcUhWRlJKVWNqME8vZVRHTGwzQllMVlBEVVFhTDlmSHQzNVN2Nm1GSWkyRUJWN2xma3BqbFNMUlhRTzlDendzNjdUU2tKOFVIeXdHa3RTVEpJSElhdzNnWGtxQW8wZWp3SlhyMjJLcmJZZko5RzVYODlQbUNIaXlwekdKQW8wM2NJMjB3TDJFd1czalRlWTdiL1lXWUNwbHJOcU1DRW44R29rNG42V2ZiL212YzN1aVN6MlNkbTc5VWlYakpqZkwzMDVoVTFiK0JIangyS3JTQ0tnRVZvL0JHUllSdC91dHlrdHJpNlpCZUhCVUxhbmc2cnkrL2RSVjVOM0VzRHViSlJYNklEWlB6ajh0d1E2U2N2a3ZuNGNLQzFRWitUcE1VUnJNL1JUaEJNRUVUcFRmcXlPNFpNYXpWc2JJZVIwNGVMRzJxWmJsR1hyVHY0VUVheFQzSnlodE5HWmVTaGJnK1BkNzkvMjQzelhiVmZtWkZZcFRycjJhNGJlTVp0eXlnM3lhVE45enVSaXI0TFZ6b2x0VmR1cUlwUldNbHhXZnIreEJ4UEJSUmhaQUFMZU1VQWdiNXhVRHoxU3hzdGNZdTZtcmZFaFBpOCtqaitHZGtLYmlRbTJWeWM3ZEpaVlA4VU9RN0R2YXg5OFRvM2p4UUFEdTlieVlEaVF1ZEgrTGxHYnRyUFBrMUJHNXN0SjFTMnAvbm1SWFo0SU9BTkxvRURuMnpTQkYzRE1DNmRzNzZqZ3YzNWI0eUZUeHl5dkxTTlpXYy9zSW4vdldTQUhVOWhRdjNyc3dzQkg1WW5OQk8rMDEvQm5PbERMN0R2enpzT1FuSysvYkNjNG40V0V4cmlTN0RMQ1pkdWlFT0prWE12ZnlucEVyMWRNOHBrTzZ3OXpZK1RzdGZnRDRjUWtwVEl5NVkrR3lwU25Ib0RMaW5SMGlmclNqd0JSeDgvY1luTTZVTXZzTy9QT3c1Q2NyNzlzSnppZHlTNmxidmNkWXlVOGI4RzZIYXoyU2Fzdmc1RmVOVnVtbWNlaWpvaTh6RFYxdUh6bHBKOWJ1VUFibUxQMU53ZU5ldXFLNllWdnA2dkNlRTRHaGZIeUhZS2k5eU1YOTZ4NWgrS3hQV1FCTmx2VHYzNGJKR3dzaDdjVVlYeTMxd1pUT2xETDdEdnp6c09RbksrL2JDYzRuaWNmbklybnltTStSaGNWTmZadXV1MTVSVnlHYTY0S1BtNDVRS0FXZXUwbmhUQkRRWXdGRnNILzlUWk1STjJsYkh0NFloL2NWRWgzSG9DWUZqMkFnTVVvYjhLbjFLVmlET3N2ZThqbWg2OHVwVWhtSDZJN0hlWGkxWWRUSFVqNkpobmFGblAybG9BRDNybkpFSkZQb1ZLSmZQd2gyR2tYRDdGcUY1MEdSOUdiandYOGZiZmpZd29yZGtYczM1RG9wQTg4K1l1NCtTYnpnekpLRXdpSmZxMW9KUzhDbWVodWNPc0xGclJUV21ucUF6QjhEMDhUWXQ0TG9sQkttT0ZEcDFYVlhTVnFtYXhwSGt4enNvRzk3aHMvOXB3VzVUbEtERnVhd0YrM1NQZ3RoOGJCbFF4NmpJYVhlUm9TWXY0ajdram5oY3pxL0JGMitweWZEd1NBalNCalhOK0E0azRGOTVJSFgrZVBFd0Z6dUp0bVRDTGY5dlRBeFdFOG9jUzVlQlBlTytzRDRRdy9CMi8xbzdGQmhCeVlzdG9EM2pUYitzeDhnWS9jOUl2dnIzS09qWmdPU0R6VHVmeThNN1ZYaFB1Mlo3UFNOckw5L2ttQTZ5czV2MXRLbStqUWF3djMvUUhYNDJKOXk4aEEydUxrRmFOeU80WHhDVjB1clRwaUVXY0dNTXIrbE9FSnlkNytuTm1Ld2o4WkRFVit6UG1MSExsQ0hJQnRNdTR2TEs4dEkxbFp6K3dpZis5WklBZFQyY3ZJN2NPTk9VeHZubi9oZTFJRVBrNllhY2oycmUzaEtzcm1jSTgrbU80akxLOHRJMWxaeit3aWYrOVpJQWRUMlZvVDVQWDdUblZvTDMzS2VxclI3YnFjekYvRjdoY0UvMDRIbDBOMXZJczJWOEZaUS91aGN1U2JzTmpjeEJRYi9Ibkg5Nit2UC9sL2JIMDJRdjN0VmhIUXY5Y0Z1cUpVRWFzclR5ekNYYTBJcjFqa0xGOC9yaHZqY3Eyank2aTE1cjZJMTdlaWZDaXkrZFlXNnI2dlFYV085cFliTzJzbmlYWDJ5VHhWc29rRXlUTEJnODFVRC9jQ2NTbWZrNnF1d2NHUXRxeno5U2JxNjI0b3J5UTZ1MlpGWW5vNS8rRnFiaEhScXZOcExld0lFUXNHa2xqa3JTRENBNU5aVG9hYzk1RTVOemVod2g4U0NreW9oS09oUWExZkNadUhkdlc5RGVCcVU4WGlzMUx2YUVYVEJ3MDBHZ2RvS09PQ1NxcVZXZHZHaEtyTElqeWExMXlCcDJMTXR6T3JzOG8zLzlrbmx4U1ZhRVJ5cFdaZHNwQXpNc0V5anl6Z2dJVFBqWlRUK3ZrQk15ZHdtMHU2NU5MZVNqZUtJZmV4MjRUTjBodW4wSGxXaUhRSVUrM1l4NllwcmkxdERod3ozODNRcGhFeUtGaHcwaFpnMXI3bEd2MG5wVW9welF2dVNaY0NidTVzVTBWT0Zsd0p3VDlkN3Bnb1JuUWh1ZkZEQnlFZC9qazBLTStGNStFNms5SlZ1dDVBcXFxSWpEcU5UaWxrVGNaY2gzejErWW5OM1lzSGJQK0FqV0hqVmNZcUhNUGVNNjF1aXFlUWRxUEJSVURBS3FIeVh6RW9SeUxKQ0dubjM1MHVhSXM4ZHhQeFhjZ284Ui80UTZpTXBZVGFWSElPcEhKbldoSm1Jcng1SDJiY0xiZlQ1L1FtTUlNVzVMZ291czE1eS9BSnJSMG5WbWVWY01KaXhVcjh4Qjh3T2Flc3FZYWRGeXl2TFNOWldjL3NJbi92V1NBSFU5a09Zb2dndWw0NHpJWjYxTHJvRmdYS0dkb1djL2FXZ0FQZXVja1FrVStoVVBiVmMwODBha2toTFhPcjdjZzhWRVV2WmJ6MEhYOGhQRnNhYlVENnIrYTJNTGwwRk55WjJFSFlrVjd6QUIvV05BRVpMcTNhdXYrcDdPYnZYN3MvcExsUjRZZ0tWQ1JPQlZ4bE44ZzNYV0tuMzY5TjFqbG9zcVJCZERNZkpCQmJEVHpjazg4M0RZSjJOTmRWUVlqT3Fnc2JLbmxxOFkrUGoyN2Q1d0MrYVpLUzVDLzdDZVN1OGZySWdiZ2luaGY3USt3MjE4aDlBdEtUWENRaWxnZXVSTEk2b2ZKVGRXdHlIQkNjYU5yN1g5aGdwclIrWmtSRWV3UW0wamltTjduQzd5eXZMU05aV2Mvc0luL3ZXU0FIVTlrOHVaRVVQckIyVjFMbThsT3kzYzgzSEljUlc0RTE2QjdsY3BMSHFaYWVwRGhrd29DL01hdVFMTm81aUVXMmV1Y2VqbWZnYVpOTEcxbEVRUzlvR1pCTUR4aG5RZ3Evam83bkpZeFdHaHBERkU2U3NoU05wa2MrM3VrWG5nYWRmaUg5TjgwQVBYSVh2dThxais3NGNITGZPbERMN0R2enpzT1FuSysvYkNjNG5oQTAxa3NOV1BpTGprQWI4VXRLSnE0aU5PTCtFREV6NnJmWW5hNkVEWUQ3bnRzL1NPTE4zUzV4VVF3RlFSLytMVFRwN1JidWdaMis2Yk1xQXlacVllOHNyeTBqV1ZuUDdDSi83MWtnQjFQYjVyT2FSd20xSGZncmxjZzFaRWczUlVubk9oRjBZWUJ5VVlYZEJPRGs3cFBNbDZTMWFsOVNySGZneW1UT2RJTWJYSkZiVjcyQlFsandVSzk2R1YzYVFvaE1qazAvSStSS2RpMDg5RGdvTWJ3QTMrVmMvL2VIcWg3NzZZTmVGaHdrTnE5QWRESjRuL0xSRDNXdFlKWEFTdDNpdkM0dTlRQlRmYi92Q21OSmkvZnphZXM0b0pBS3VTYzBDbythdTZSWnlweDVENWpMTm1YTTNGOFlacGc4eVZnUVh3R293OUY1M1RQdHdFTGhFYkNkVUpPZyszV3ZMWFJrV2NwWmFsZzRLMTU5YUVNL3Z3WXdDcTM0bHhrU0ZobEt5VFVnNVJzWGZSTHBhTWhtMGVaU0hkdW9ESE5mNFoxb2dnWkd6aWtvR29wOGMvenJvV0JvTi9hVkttbjhzNFR5RStVQlFlenYxZkxCZVV5QkdiSDhKWEEvNXUyMThFWkJCUXR3M29xRXY4eUoyRGNWZEtOeG16dEI4TG1uSCcpXFxuXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLpobXpnaIt55m75b2VXCIsXCJwYXRoXCI6XCJwd2QtbG9naW5cIixcInJ1bGVcIjpcImpzOlxcbnZhciByZXMgPSB7fTtcXG52YXIgZCA9IFtdO1xcbnZhciBpc2xvZ2luID0gZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9pc2xvZ2luLnR4dCcsIHt9KTtcXG5pZiAoaXNsb2dpbiA9PT0gXFxcIjFcXFwiKSB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB1cmw6IFxcXCJwdXRWYXIoJ215X2FjY291bnQnLGlucHV0KTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+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/kCjinKrilr3inKopXFxcIlxcbiAgICAgICAgfSlcXG4gICAgfSk7XFxufVxcbnJlcy5kYXRhID0gZDtcXG5zZXRSZXN1bHQocmVzKTtcIn1dIiwiaWNvbiI6Imh0dHBzOi8vZ2l0ZWUuY29tL0NoZXJpc2hSeC9pbWFnZXdhcmVob3VzZS9yYXcvbWFzdGVyL2ltYWdlLzEzMDk2NzI1ZmU1NmNlOWNmNjQzYTBlNGNkMGMxNTljLmdpZiJ9
Add Comment
Please, Sign In to add comment