Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@哔哩Ⓡ@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6ImpzOlxubGV0IGh0bWwgPSBnZXRSZXNDb2RlKClcbi8vIGxvZyhodG1sKVxubGV0IHJlZ2V4ID0gL3dpbmRvd1xcLl9fSU5JVElBTF9TVEFURV9fPSguKj8pO1xcKGZ1bmN0aW9uXFwoXFwpXFx7L1xuLy8gbG9nKE1ZX1VSTClcbmlmKE1ZX1VSTC5zdGFydHNXaXRoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWlsJykpIHtcbiAgICBsZXQgY29kZSA9IEpTT04ucGFyc2UoaHRtbClcbiAgICB0cnkge1xuICAgICAgICBpZiAoY29kZS5kYXRhLlZpZXdbJ3JlZGlyZWN0X3VybCddKSB7XG4gICAgICAgICAgICBNWV9VUkwgPSBjb2RlLmRhdGEuVmlld1sncmVkaXJlY3RfdXJsJ107XG4gICAgICAgICAgICBodG1sID0gZmV0Y2goTVlfVVJMLCB7fSk7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGxvZyAoZS5tZXNzYWdlKVxuICAgIH1cbn1cbi8vIGxvZyhodG1sKVxuaWYgKE1ZX1VSTC5zdGFydHNXaXRoKCdodHRwczovL3d3dy5iaWxpYmlsaS5jb20vYmFuZ3VtaS9wbGF5LycpICYmIHJlZ2V4LnRlc3QoaHRtbCkpIHtcbiAgICAvLyDnlarliadcbiAgICAvLyBsb2coJ+WMuemFje+8micgKyBSZWdFeHAuJDEpXG4gICAgbGV0IHJlcyA9IEpTT04ucGFyc2UoUmVnRXhwLiQxKVxuICAgIGxldCByZXN1bHQgPSByZXMubmV3ZXN0RXBcbiAgICBpZighcmVzdWx0KSB7XG4gICAgICAgIHJlc3VsdCA9IHJlcy5tZWRpYUluZm8ubmV3X2VwXG4gICAgfVxuICAgIHNldFJlc3VsdChcIuabtOaWsOiHs++8muesrFwiICsgcmVzdWx0LnRpdGxlICsgXCLor51cIilcbn0gZWxzZSBpZiAoTVlfVVJMLnN0YXJ0c1dpdGgoJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FyYy9zZWFyY2gnKSkge1xuICAgIC8vIFVQIOS4u1xuICAgIGxldCByZXMgPSBKU09OLnBhcnNlKGh0bWwpXG4gICAgbGV0IHJlc3VsdCA9IHJlcy5kYXRhLmxpc3Qudmxpc3RbMF0udGl0bGVcbiAgICBzZXRSZXN1bHQoXCLmm7TmlrDoh7PvvJpcIiArIHJlc3VsdClcbn0gZWxzZSB7XG4gICAgc2V0UmVzdWx0KFwiXCIpXG59IiwidGl0bGUiOiLlk5Tlk6nik4ciLCJhdXRob3IiOiIxNjA2MTQyJlJ4JlJlYm9ybiIsInVybCI6Imhpa2VyOi8vZW1wdHkjZnlwYWdlIiwidmVyc2lvbiI6MjExMjA0MTQxNSwiY29sX3R5cGUiOiJtb3ZpZV8xIiwiY2xhc3NfbmFtZSI6IiIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChKU09OLnBhcnNlKGZldGNoKFwiaGlrZXI6Ly9wYWdlL2NvbW1vblwiKSkucnVsZSk7Iiwic2VhcmNoX3VybCI6Imh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvc2VhcmNoL2FsbC92Mj9rZXl3b3JkPSoqJnBhZ2U9ZnlwYWdlJnBhZ2VzaXplPTIwO2dldDt1dGYtODt7VXNlci1BZ2VudEBNb3ppbGxhLzUuMCAoTGludXjvvJvvvJsgQW5kcm9pZCA3LjDvvJvvvJsgd3YgbGl0ZSBiYWlkdWJveGFwcCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi80LjAgQ2hyb21lLzc4LjAuMzkwNC45NiBNb2JpbGUgU2FmYXJpLzUzNy4zNiBUNy8xMC4zIFNlYXJjaENyYWZ0LzIuNi4yIChCYWlkde+8m++8myBQMSA3LjApfSIsImdyb3VwIjoiI++4j+KDo+W4uOeUqCIsInNlYXJjaEZpbmQiOiJqczpcbmV2YWwoSlNPTi5wYXJzZShmZXRjaChcImhpa2VyOi8vcGFnZS9zXCIpKS5ydWxlKTsiLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8yIiwiZGV0YWlsX2ZpbmRfcnVsZSI6IiIsInNkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwic2RldGFpbF9maW5kX3J1bGUiOiIiLCJ1YSI6Im1vYmlsZSIsInByZVJ1bGUiOiJqczpcbmV2YWwoSlNPTi5wYXJzZShmZXRjaChcImhpa2VyOi8vcGFnZS95Y2xcIikpLnJ1bGUpO1xuLy/pgJrov4fmkJzntKLmn6XnnIvoh6rlt7HnmoR1aWTvvIznhLblkI7mm7/mjaLljbPlj69cbmlmICghZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zdGFyaWQudHh0Jyx7fSkpe1xucHV0VmFyKCdzdGFyaWQnLCc5MjgxMjMnKTtcbn1lbHNle1xuXG5wdXRWYXIoJ3N0YXJpZCcsZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zdGFyaWQudHh0Jyx7fSkpO1xufVxucHV0VmFyKFwiYWNjZXNzX2tleVwiLGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvYWNjZXNzX2tleS50eHQnKSk7XG4vL+iHquW3seWOu2Lnq5nlrqLmiLfnq6/pppbpobXmipPljIXvvIzmib7liLBhcHAuYmlsaWJpbGkuY29t5byA5aS055qE6ZO+5o6l77yM54S25ZCO5oqKYWNjZXNzX2tleeeahOWAvOWhq+WFpeS4iuaWuSc9J+WQjumdouWNs+WPryIsInBhZ2VzIjoiW3tcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIEt5LiA57qnXCIsXCJwYXRoXCI6XCJjb21tb25cIixcInJ1bGVcIjpcInZhciByZXMgPSB7fTtcXG52YXIgZCA9IFtdO1xcbnZhciBwYWdlbnVtID0gTVlfVVJMLnNwbGl0KCcjJylbMV07XFxudmFyIFJlZmVyZXIgPSAnQFJlZmVyZXI9aHR0cDovL3d3dy5iaWxpYmlsaS5jb20nO1xcbmlmICghZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zZXR0aW5nLnR4dCcpKSB7XFxuICAgIHdyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3NldHRpbmcudHh0JywgJ+W8gOWQryzlhbPpl60nKTtcXG59XFxudmFyIHNfdHlwZSA9IGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc2V0dGluZy50eHQnKTtcXG5wdXRWYXIoJ3JlcGx5X3R5cGUnLCBzX3R5cGUuc3BsaXQoJywnKVswXSk7XFxucHV0VmFyKCdsaWtlX3R5cGUnLCBzX3R5cGUuc3BsaXQoJywnKVsxXSk7XFxuLy/popzoibJcXG52YXIgQ29sb3JzID0gW1xcXCI0XFxcIiwgXFxcIjVcXFwiLCBcXFwiMFxcXCIsIFxcXCIxXFxcIiwgXFxcIkFcXFwiLCBcXFwiM1xcXCIsIFxcXCI4XFxcIiwgXFxcIjlcXFwiLCBcXFwiQlxcXCIsIFxcXCJDXFxcIiwgXFxcIkRcXFwiLCBcXFwiRVxcXCIsIFxcXCI2XFxcIiwgXFxcIjdcXFwiLCBcXFwiRlxcXCJdO1xcbnZhciBDb2xvciA9ICcjJztcXG5pZiAoZ2V0VmFyKCdZUycpID09ICfpmo/mnLonKSB7XFxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNjsgaSsrKSB7XFxuICAgICAgICB2YXIgbnVtID0gTWF0aC5jZWlsKChNYXRoLnJhbmRvbSgpICogMTUpKSAtIDE7XFxuICAgICAgICB2YXIgQ29sb3IgPSBDb2xvciArIENvbG9yc1tudW1dO1xcbiAgICB9XFxufSBlbHNlIHtcXG4gICAgdmFyIENvbG9yID0gXFxcIiNGQTcyOThcXFwiO1xcbn1cXG5cXG5mdW5jdGlvbiBnZXRIZWFkKHRpdGxlKSB7XFxuICAgIHJldHVybiAn4oCY4oCY4oCZ4oCZPHN0cm9uZz48Zm9udCBjb2xvcj1cXFwiJyArIENvbG9yICsgJ1xcXCI+JyArIHRpdGxlICsgJzwvZnJvbnQ+PC9zdHJvbmc+JztcXG59XFxuXFxudmFyIGMxID0gJ2FsbCZiYW5ndW1pJmd1b2NoYW4mZG91Z2EmbXVzaWMma25vd2xlZGdlJnRlY2gmY2FyJmxpZmUmZm9vZCZraWNoaWt1JmZhc2hpb24mY2luZXBoaWxlJm9yaWdpbiZyb29raWUmZ2FtZSZlbnQmZGFuY2UmbW92aWUmdHYmZG9jdW1lbnRhcnkmYW5pbWFsJmd1b2NodWFuZyc7XFxuXFxudmFyIHcxID0gJ+WFqOmDqCbnlarliacm5Zu95YibJuWKqOeUuybpn7PkuZAm55+l6K+GJuenkeaKgCbmsb3ovaYm55Sf5rS7Jue+jumjnybprLznlZwm5pe25bCaJuW9seinhibljp/liJsm5paw5Lq6Jua4uOaIjyblqLHkuZAm6Iie6LmIJueUteW9sSbnlLXop4bliacm57qq5b2V54mHJuWKqOeJqeWciCblm73liJvnm7jlhbMnO1xcblxcbnZhciBjMiA9ICcyMiYyMTImNzEmMTgyJjEzOCYyOCYzMyYxODUnO1xcblxcbnZhciB3MiA9ICfprLznlZwm576O6aOfJue7vOiJuiblvbHop4Ym55Sf5rS7Jumfs+S5kCbnlarliacm55S16KeG5YmnJztcXG5cXG52YXIgd29yZDEgPSB3MS5zcGxpdCgnJicpO1xcbnZhciBjbGFzczEgPSBjMS5zcGxpdCgnJicpO1xcbnZhciBsYWIxID0gZ2V0VmFyKCdsYWIxJywgJ+WFqOmDqCcpO1xcbnZhciBrZXkxID0gZ2V0VmFyKCdrZXkxJywgJ2FsbCcpO1xcblxcbnZhciB3b3JkMiA9IHcyLnNwbGl0KCcmJyk7XFxudmFyIGNsYXNzMiA9IGMyLnNwbGl0KCcmJyk7XFxudmFyIGxhYjIgPSBnZXRWYXIoJ2xhYjInLCAn6ay855WcJyk7XFxudmFyIGtleTIgPSBnZXRWYXIoJ2tleTInLCAnMjInKTtcXG5cXG4vL+S4ieWQiOS4gFxcbnZhciByeCA9IGZldGNoKCdoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dCcsIHt9KTtcXG52YXIgd3IgPSBgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0XFxcIixpbnB1dCk7cmVmcmVzaFBhZ2UoZmFsc2UpO1xcXCJ0b2FzdDovL+WIh+aNouaIkOWKn1xcXCJgO1xcbnZhciBzX3RhYiA9IGZldGNoKCdoaWtlcjovL2ZpbGVzL2JpbGkv5pS26JePLnR4dCcsIHt9KTtcXG52YXIgc3IgPSBgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS/mlLbol48udHh0XFxcIixpbnB1dCk7cmVmcmVzaFBhZ2UoZmFsc2UpO1xcXCJ0b2FzdDovL+WIh+aNouaIkOWKn1xcXCJgO1xcblxcbmlmIChNWV9VUkwuc3BsaXQoJyMnKVsxXSA9PSAnMScpIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiByeCA9PSAnVVDkuLsnID8gZ2V0SGVhZChyeCkgOiAnVVDkuLsnLFxcbiAgICAgICAgdXJsOiAnVVDkuLsnICsgd3IsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogcnggPT0gJ+aOkuihjOamnCcgPyBnZXRIZWFkKHJ4KSA6ICfmjpLooYzmppwnLFxcbiAgICAgICAgdXJsOiAn5o6S6KGM5qacJyArIHdyLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IHJ4ID09ICfmlrDnlaonID8gZ2V0SGVhZChyeCkgOiAn5paw55WqJyxcXG4gICAgICAgIHVybDogJ+aWsOeVqicgKyB3cixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiByeCA9PSAn5pu05aSaJyA/IGdldEhlYWQocngpIDogJ+abtOWkmicsXFxuICAgICAgICB1cmw6ICfmm7TlpJonICsgd3IsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgfSk7XFxuXFxuICAgIGlmIChyeCA9PSAn5pS26JePJykge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogc190YWIgPT0gJ+inhumikScgPyBnZXRIZWFkKHNfdGFiKSA6ICfop4bpopEnLFxcbiAgICAgICAgICAgIHVybDogJ+inhumikScgKyBzcixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMydcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogc190YWIgPT0gJ+i/veeVqicgPyBnZXRIZWFkKHNfdGFiKSA6ICfov73nlaonLFxcbiAgICAgICAgICAgIHVybDogJ+i/veeVqicgKyBzcixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMydcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogc190YWIgPT0gJ+i/veWJpycgPyBnZXRIZWFkKHNfdGFiKSA6ICfov73liacnLFxcbiAgICAgICAgICAgIHVybDogJ+i/veWJpycgKyBzcixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMydcXG4gICAgICAgIH0pO1xcbiAgICAgICAgaWYgKHNfdGFiID09ICfop4bpopEnKSB7XFxuICAgICAgICAgICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvdmlkZW9cXFwiKSkucnVsZSlcXG4gICAgICAgIH1cXG4gICAgICAgIGlmIChzX3RhYiA9PSAn6L+955WqJykge1xcbiAgICAgICAgICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL2Zhbmp1XFxcIikpLnJ1bGUpXFxuICAgICAgICB9XFxuICAgICAgICBpZiAoc190YWIgPT0gJ+i/veWJpycpIHtcXG4gICAgICAgICAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9kc2pcXFwiKSkucnVsZSlcXG4gICAgICAgIH1cXG4gICAgfVxcblxcbn1cXG5cXG5pZiAocnggPT0gJ+aOqOiNkCcpIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvZmVlZFxcXCIpKS5ydWxlKVxcbn1cXG5cXG5pZiAocnggPT0gJ+aOkuihjOamnCcpIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvcGhiXFxcIikpLnJ1bGUpXFxufVxcblxcbmlmIChyeCA9PSAnVVDkuLsnKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL3VwXFxcIikpLnJ1bGUpXFxufVxcblxcbmlmIChyeCA9PSAn5pe25YWJ5py6Jykge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9zZ2pcXFwiKSkucnVsZSlcXG59XFxuXFxuaWYgKHJ4ID09ICfmlrDnlaonKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL25ld2JnbVxcXCIpKS5ydWxlKVxcbn1cXG5cXG5pZiAocnggPT0gJ+e0ouW8lScpIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2Uvc3lcXFwiKSkucnVsZSlcXG59XFxuXFxuaWYgKHJ4ID09ICfmm7TlpJonKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL21vcmVcXFwiKSkucnVsZSlcXG59XFxuXFxuXFxuLy/kuInlkIjkuIBcXG5cXG5yZXMuZGF0YSA9IGQ7XFxuc2V0UmVzdWx0KHJlcylcIn0se1wiY29sX3R5cGVcIjpcInBpY18xX2NhcmRcIixcIm5hbWVcIjpcIuS7o+eggS3mjpLooYzmppxcIixcInBhdGhcIjpcInBoYlwiLFwicnVsZVwiOlwiLy/liIbnsbtcXG4gaWYgKE1ZX1VSTC5zcGxpdCgnIycpWzFdPT0nMScpe1xcbmZvciAodmFyIGkgaW4gd29yZDEpe1xcbiAgICB2YXIgYSA9IHdvcmQxW2ldO1xcbiAgICB2YXIgYiA9IGNsYXNzMVtpXTtcXG4gICAgdmFyIGMgPSBhICsgJyYnICsgYjtcXG4gICAgZC5wdXNoKHtcXG4gICAgdGl0bGU6IGE9PWxhYjE/IGdldEhlYWQoYSk6YSxcXG4gICAgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKChjKT0+e1xcbiAgICAgICAgcHV0VmFyKFxcXCJsYWIxXFxcIixjLnNwbGl0KCcmJylbMF0pO1xcbiAgICAgICAgcHV0VmFyKFxcXCJrZXkxXFxcIixjLnNwbGl0KCcmJylbMV0pO1xcbiAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICB9LCBjKSxcXG4gICAgY29sX3R5cGU6J2ZsZXhfYnV0dG9uJ1xcbiAgICB9KTtcXG59XFxufVxcbi8v5YiG57G7XFxuXFxuZC5wdXNoKHtcXG4gICAgZGVzYzonMjU4JiZmbG9hdCcsXFxuICAgXFx0XFx0Y29sX3R5cGU6ICd4NV93ZWJ2aWV3X3NpbmdsZSdcXG59KTtcXG52YXIgdXJsID0gJ2h0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS92L3BvcHVsYXIvcmFuay9hbGwnO1xcblxcbnZhciBNWV9VUkwgPSB1cmwucmVwbGFjZSgnYWxsJyxnZXRWYXIoJ2tleTEnKSk7XFxuXFxudmFyIHltPXJlcXVlc3QoTVlfVVJMLHt9KS5yZXBsYWNlKC9cXFxcXFxcXHUwMDJGL2csJy8nKTtcXG5pZih5bS5pbmNsdWRlcygncmFuay10aXBzJykpe1xcblxcbi8q5o+Q56S65L+h5oGvXFxuICBkLnB1c2goe1xcbiAgICB0aXRsZTon4oCc4oCcJytwYXJzZURvbUZvckh0bWwoeW0sJy5yYW5rLXRpcHMmJlRleHQnKSsn4oCd4oCdJyxcXG4gICAgY29sX3R5cGU6J3RleHRfMSdcXG4gIH0pO1xcbuaPkOekuuS/oeaBryovXFxuXFxuICB2YXIgcGk9SlNPTi5wYXJzZSh5bS5zcGxpdCgnXFxcInJhbmtMaXN0XFxcIjonKVsxXS5zcGxpdCgnLFxcXCJyYW5rTm90ZVxcXCInKVswXSk7XFxuICBmb3IodmFyIGk9MDtwaSE9bnVsbCYmaTxwaS5sZW5ndGg7aSsrKXtcXG4gICAgdmFyIG51bSA9IGkrMTtcXG4gICAgdmFyIHE9SlNPTi5zdHJpbmdpZnkocGlbaV0pO1xcbiAgICBpZiAoIXBpW2ldLnVybCl7XFxuICAgICAgIHZhciBydXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWzvvJ/vvJ9haWQ977yG77yGYnZpZD0nICsgcGlbaV0uYnZpZDtcXG4gICAgICAgfWVsc2V7XFxuICAgICAgICAgICB2YXIgcnVybCA9IHBpW2ldLnVybDtcXG4gICAgfVxcblxcbiAgICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTonTm8uJytudW0rJyAgICAgJytwaVtpXS50aXRsZSxcXG4gICAgICAgIHBpY191cmw6cGlbaV0ucGljK1JlZmVyZXIsXFxuICAgICAgICBkZXNjOighcS5pbmNsdWRlcygnbmFtZScpP3BpW2ldLm5ld19lcC5pbmRleF9zaG93OigndXA6ICcrcGlbaV0ub3duZXIubmFtZSkpLFxcbiAgICAgICAgdXJsOidoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD0nK3J1cmwrJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgICAgY29sX3R5cGU6J3BpY18xX2NhcmQnXFxuICAgICAgfSk7XFxuLypcXG5kLnB1c2goe1xcbiAgICAgICAgdGl0bGU6J05vLicrbnVtKydcXFxcblxcXFxu4oCY4oCYPHNtYWxsPicrcGlbaV0udGl0bGUrJ1xcXFxuJysoIXEuaW5jbHVkZXMoJ25hbWUnKT9waVtpXS5uZXdfZXAuaW5kZXhfc2hvdzooJ3VwOiAnK3BpW2ldLm93bmVyLm5hbWUpKSsnPC9zbWFsbD4nLFxcbiAgICAgICAgcGljX3VybDpwaVtpXS5waWMrUmVmZXJlcixcXG4gICAgICAgIGRlc2M6JzAnLFxcbiAgICAgICAgdXJsOidoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD0nK3J1cmwrJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgICAgY29sX3R5cGU6J2NhcmRfcGljXzEnXFxuICAgICAgfSk7XFxuKi9cXG4gICAgIH1cXG4gICB9ZWxzZXtcXG4gICAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6J+KAnOKAnOiKguWItuS4gOeCue+8jOS8keaBr+WVpu+8geKAneKAnScsXFxuICAgICAgICBjb2xfdHlwZTondGV4dF9jZW50ZXJfMSdcXG4gICAgICB9KTtcXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIEtdXDwn5C3XCIsXCJwYXRoXCI6XCJ1cFwiLFwicnVsZVwiOlwiY29uc3QgaGVhZENvbG9yPVxcXCIjMzU4Y2NkXFxcIjtcXG52YXIgdWlkID0gZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cF9jYWNoZS50eHRcXFwiLHt9KTtcXG52YXIgVVBfVVJMID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FyYy9zZWFyY2g/bWlkPXVpZCZwcz0zMCZ0aWQ9MCZrZXl3b3JkPSZqc29ucD1qc29ucCZwbj0nK3BhZ2VudW0rJyZvcmRlcj1wdWJkYXRlJztcXG52YXIgdXBfdXJsID0gVVBfVVJMLnJlcGxhY2UoXFxcInVpZFxcXCIsdWlkKTtcXG52YXIgeHg9Z2V0VmFyKCdsYjInKS5zcGxpdCgnXFxcXG4nKTtcXG4vL+abtOaWsOWktOWDj1xcbmZvciAodmFyIGsgaW4geHgpe1xcbiAgaWYgKCF4eFtrXS5zcGxpdCgnIyMnKVsxXSl7XFxuICAgICAgdHJ5e1xcbiAgICAgICB2YXIgcGljID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYWNjL2luZm8/bWlkPScreHhba10uc3BsaXQoJyYmJylbMV0rJyZqc29ucD1qc29ucCcse30pKS5kYXRhLmZhY2U7XFxuICAgICAgIH1jYXRjaChlKXtcXG4gICAgICAgdmFyIHBpYyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLnZjLmJpbGliaWxpLmNvbS9keW5hbWljX3N2ci92MS9keW5hbWljX3N2ci9zcGFjZV9oaXN0b3J5P2hvc3RfdWlkPScreHhba10uc3BsaXQoJyYmJylbMV0rJyZuZWVkX3RvcD0xJyx7fSkpLmRhdGEuY2FyZHNbMF0uZGVzYy51c2VyX3Byb2ZpbGUuaW5mby5mYWNlO1xcbiAgICAgICB9XFxuICAgICAgdmFyIGZhY2UgPSB4eFtrXSsnIyMnK3BpYztcXG4gICAgICB2YXIgZmFjZSA9IGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXAudHh0XFxcIix7fSkucmVwbGFjZSh4eFtrXSxmYWNlKTtcXG4gICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cC50eHRcXFwiLGZhY2UpO1xcbiAgfVxcbn1cXG5cXG5cXG5cXG5pZiAoTVlfVVJMLnNwbGl0KCcjJylbMV09PScxJyl7XFxuXFxuZC5wdXNoKHtcXG4gICAgICAgICAgdGl0bGU6JzxzdHJvbmc+Jysn4oCY4oCYVVDigJnigJknKyc8L3N0cm9uZz4nKyAoZ2V0VmFyKCdVUCcsJ+aKmOWPoCcpPT0n5bGV5byAJz8n8J+ZiSc6J/CfmYgnKSxcXG4gICAgICAgICAgdXJsOiAgXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignVVAnLCBnZXRWYXIoJ1VQJyk9PSflsZXlvIAnPyfmipjlj6AnOiflsZXlvIAnKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+W3sicrZ2V0VmFyKCdVUCcsJ+WxleW8gCcpO1xcXCIsXFxuICAgICAgICAgIGNvbF90eXBlOid0ZXh0XzQnXFxuICAgICAgICAgIH0pO1xcblxcbmQucHVzaCh7XFxuICAgICAgICAgIHRpdGxlOihnZXRWYXIoJ1VQJyk9PSfnva7pobYnPyc8c3Ryb25nPicrJ+KAnOKAnOe9rumhticrJzwvc3Ryb25nPic6JzxzdHJvbmc+Jysn4oCc4oCc5Y+W5YWz4oCd4oCdJysnPC9zdHJvbmc+JyksXFxuICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignVVAnLCBnZXRWYXIoJ1VQJywn5bGV5byAJyk9PSflj5blhbMnPyfnva7pobYnOiflj5blhbMnKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovLycrZ2V0VmFyKCdVUCcsJ+WxleW8gCcpKydpbmd+J1xcXCIsXFxuICAgICAgICAgIGNvbF90eXBlOid0ZXh0XzQnXFxuICAgICAgICAgIH0pO1xcbi8v6Ieq5bex55qE5YWz5rOoXFxudmFyIHN0YXJqc29uID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYWNjL2luZm8/bWlkPScrZ2V0VmFyKCdzdGFyaWQnKSsnJmpzb25wPWpzb25wJyx7fSkpO1xcbmQucHVzaCh7XFxuICAgICAgICB0aXRsZTpzdGFyanNvbi5kYXRhLm5hbWUsXFxuICAgICAgICBwaWNfdXJsOnN0YXJqc29uLmRhdGEuZmFjZStSZWZlcmVyLFxcbiAgICAgICAgdXJsOlxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ1VQJywgZ2V0VmFyKCdVUCcpPT0n5YWz5rOoJz8n5oqY5Y+gJzon5YWz5rOoJyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly8nK2dldFZhcignVVAnLCfkuJPms6gnKVxcXCIsXFxuICAgICAgICBjb2xfdHlwZTonaWNvbl8yX3JvdW5kJ1xcbn0pO1xcbi8v6Ieq5bex55qE5YWz5rOoXFxuXFxuaWYgIChnZXRWYXIoJ1VQJyk9PSflhbPms6gnKXtcXG4gIHZhciBzdXJsID0gJ2h0dHBzOi8vc3BhY2UuYmlsaWJpbGkuY29tL2g1L2ZvbGxvdz90eXBlPWZvbGxvdyZtaWQ9JytnZXRWYXIoJ3N0YXJpZCcpO1xcbnZhciBpZCA9IHN1cmwuc3BsaXQoJ21pZD0nKVsxXTtcXG52YXIgY29kZSA9IGZldGNoKHN1cmwse30pO1xcbnZhciBzdGFybGlzdCA9IEpTT04ucGFyc2UoJ3tcXFwibXknK2NvZGUuc3BsaXQoJ3tcXFwibXknKVsxXS5zcGxpdCgnfX07JylbMF0rJ319Jyk7XFxuXFxudmFyIHN0YXJscyA9IHN0YXJsaXN0WydsaXN0J11bJ2dldEZvbGxvd0xpc3QtcGFnZS1taWQtJytpZF1bJ3Jlc3VsdCddO1xcbmZvciAoIHggaW4gc3RhcmxzKXtcXG4gIHZhciB5dXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FyYy9zZWFyY2jvvJ/vvJ9taWQ9JytzdGFybHNbeF0ubWlkKyfvvIbvvIZwcz0zMO+8hu+8hnRpZD0w77yG77yGa2V5d29yZD3vvIbvvIZqc29ucD1qc29ucO+8hu+8hnBuPWZ5cGFnZe+8hu+8hm9yZGVyPXB1YmRhdGUnO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICB0aXRsZTpzdGFybHNbeF0udW5hbWUsXFxuICAgICAgIGltZzpzdGFybHNbeF0uZmFjZStSZWZlcmVyLFxcbiAgICAgICB1cmw6J2hpa2VyOi8vcGFnZS9nejI/dXJsPScreXVybCxcXG4gICAgICAgY29sX3R5cGU6J2ljb25fcm91bmRfNCdcXG4gICAgICAgfSk7XFxufVxcbn1cXG4vL+WFs+azqOWIl+ihqFxcblxcbiBpZiAgKGdldFZhcignVVAnKT09J+WxleW8gCcpe1xcbiAgZm9yICh2YXIgayBpbiB4eCl7XFxuICAgIHZhciBzdD11aWQ9PXh4W2tdLnNwbGl0KCcmJicpWzFdLnNwbGl0KCcjIycpWzBdPyfinJMnOicnO1xcbiAgICB2YXIgcGljID0geHhba10uc3BsaXQoJyMjJylbMV07XFxuLyrlpLTlg4/ojrflj5ZcXG4gICAgdHJ5e1xcbiAgICAgdmFyIHBpYyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FjYy9pbmZvP21pZD0nK3h4W2tdLnNwbGl0KCcmJicpWzFdKycmanNvbnA9anNvbnAnLHt9KSkuZGF0YS5mYWNlO1xcbiAgICB9Y2F0Y2goZSl7XFxuICAgICAgIHZhciBwaWMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS52Yy5iaWxpYmlsaS5jb20vZHluYW1pY19zdnIvdjEvZHluYW1pY19zdnIvc3BhY2VfaGlzdG9yeT9ob3N0X3VpZD0nK3h4W2tdLnNwbGl0KCcmJicpWzFdKycmbmVlZF90b3A9MScse30pKS5kYXRhLmNhcmRzWzBdLmRlc2MudXNlcl9wcm9maWxlLmluZm8uZmFjZTtcXG4gICAgfVxcbiovXFxuICAgaWYgKCFwaWMpe1xcbiAgICAgdmFyIHBpYyA9ICdodHRwczovL2dpdGVlLmNvbS9DaGVyaXNoUngvaW1hZ2V3YXJlaG91c2UvcmF3L21hc3Rlci9pbWFnZS8xMzA5NjcyNWZlNTZjZTljZjY0M2EwZTRjZDBjMTU5Yy5naWYnO1xcbiAgIH1cXG4gICAgZC5wdXNoKHtcXG4gICAgIHRpdGxlOnN0K3h4W2tdLnNwbGl0KCcmJicpWzBdLFxcbiAgICAgdXJsOlxcbidoaWtlcjovL2VtcHR5IycreHhba10uc3BsaXQoJyYmJylbMV0rYEBsYXp5UnVsZT0uanM6aW5wdXQ9aW5wdXQuc3BsaXQoJyMnKVsxXTtwdXRWYXIyKCd1aWQnLGlucHV0KTt3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cF9jYWNoZS50eHRcXFwiLGlucHV0KTtwdXRWYXIoJ1VQJywn5oqY5Y+gJyk7cmVmcmVzaFBhZ2UoZmFsc2UpO1xcXCJ0b2FzdDovL+WIh+aNouaIkOWKn1xcXCI7YCxcXG4gICAgIHBpY191cmw6cGljK1JlZmVyZXIsXFxuICAgICBjb2xfdHlwZTonaWNvbl9yb3VuZF80J1xcbiAgICB9KTtcXG4gIH1cXG4gfVxcblxcbi8v5Y+W5YWz55u45YWzXFxuXFxuIGlmICAoZ2V0VmFyKCdVUCcpPT0n5Y+W5YWzJyl7XFxuICBmb3IodmFyIGsgaW4geHgpe1xcbiAgICB2YXIgc3Q9dWlkPT14eFtrXS5zcGxpdCgnJiYnKVsxXT8n4pyTJzonJztcXG4gICAgdmFyIHBpYyA9IHh4W2tdLnNwbGl0KCcjIycpWzFdO1xcbi8q5aS05YOP6I635Y+WXFxuICAgIHRyeXtcXG4gICAgIHZhciBwaWMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hY2MvaW5mbz9taWQ9Jyt4eFtrXS5zcGxpdCgnJiYnKVsxXSsnJmpzb25wPWpzb25wJyx7fSkpLmRhdGEuZmFjZTtcXG4gICAgfWNhdGNoKGUpe1xcbiAgICAgICB2YXIgcGljID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkudmMuYmlsaWJpbGkuY29tL2R5bmFtaWNfc3ZyL3YxL2R5bmFtaWNfc3ZyL3NwYWNlX2hpc3Rvcnk/aG9zdF91aWQ9Jyt4eFtrXS5zcGxpdCgnJiYnKVsxXSsnJm5lZWRfdG9wPTEnLHt9KSkuZGF0YS5jYXJkc1swXS5kZXNjLnVzZXJfcHJvZmlsZS5pbmZvLmZhY2U7XFxuICAgIH1cXG4qL1xcbiAgIGlmICghcGljKXtcXG4gICAgIHZhciBwaWMgPSAnaHR0cHM6Ly9naXRlZS5jb20vQ2hlcmlzaFJ4L2ltYWdld2FyZWhvdXNlL3Jhdy9tYXN0ZXIvaW1hZ2UvMTMwOTY3MjVmZTU2Y2U5Y2Y2NDNhMGU0Y2QwYzE1OWMuZ2lmJztcXG4gICB9XFxuICAgIGQucHVzaCh7XFxuICAgICB0aXRsZTon4p2MJytzdCt4eFtrXS5zcGxpdCgnJiYnKVswXSxcXG4gICAgIHVybDp4eFtrXSsgYEBsYXp5UnVsZT0uanM6dmFyIHNjPWlucHV0KydcXFxcXFxcXG4nO3ZhciB4cj1nZXRWYXIoJ2xiMicpKydcXFxcXFxcXG4nO3ZhciB4ej14ci5yZXBsYWNlKHNjLCcnKTt3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvanMvdXAuanNcXFwiLHh6KTtyZWZyZXNoUGFnZShmYWxzZSk7J3RvYXN0Oi8v5Y+W5YWz5oiQ5Yqf77yB6ZOB5a2Q5YaN6KeB8J+mhidgLFxcbiAgICAgcGljX3VybDpwaWMrUmVmZXJlcixcXG4gICAgIGNvbF90eXBlOidpY29uX3JvdW5kXzQnXFxuICAgIH0pO1xcbiAgfVxcbiB9XFxuXFxuLy/nva7pobbnm7jlhbNcXG5cXG4gaWYgIChnZXRWYXIoJ1VQJyk9PSfnva7pobYnKXtcXG4gIGZvciAodmFyIGsgaW4geHgpe1xcbiAgICB2YXIgc3Q9dWlkPT14eFtrXS5zcGxpdCgnJiYnKVsxXT8n4pyTJzonJztcXG4gICAgdmFyIHBpYyA9IHh4W2tdLnNwbGl0KCcjIycpWzFdO1xcbi8q5aS05YOP6I635Y+WXFxuICAgIHRyeXtcXG4gICAgIHZhciBwaWMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hY2MvaW5mbz9taWQ9Jyt4eFtrXS5zcGxpdCgnJiYnKVsxXSsnJmpzb25wPWpzb25wJyx7fSkpLmRhdGEuZmFjZTtcXG4gICAgfWNhdGNoKGUpe1xcbiAgICAgICB2YXIgcGljID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkudmMuYmlsaWJpbGkuY29tL2R5bmFtaWNfc3ZyL3YxL2R5bmFtaWNfc3ZyL3NwYWNlX2hpc3Rvcnk/aG9zdF91aWQ9Jyt4eFtrXS5zcGxpdCgnJiYnKVsxXSsnJm5lZWRfdG9wPTEnLHt9KSkuZGF0YS5jYXJkc1swXS5kZXNjLnVzZXJfcHJvZmlsZS5pbmZvLmZhY2U7XFxuICAgIH1cXG4qL1xcbiAgIGlmICghcGljKXtcXG4gICAgIHZhciBwaWMgPSAnaHR0cHM6Ly9naXRlZS5jb20vQ2hlcmlzaFJ4L2ltYWdld2FyZWhvdXNlL3Jhdy9tYXN0ZXIvaW1hZ2UvMTMwOTY3MjVmZTU2Y2U5Y2Y2NDNhMGU0Y2QwYzE1OWMuZ2lmJztcXG4gICB9XFxuICAgIGQucHVzaCh7XFxuICAgICB0aXRsZTon8J+UnScrc3QreHhba10uc3BsaXQoJyYmJylbMF0sXFxuICAgICB1cmw6eHhba10rIGBAbGF6eVJ1bGU9LmpzOnZhciBzYz1pbnB1dCsnXFxcXFxcXFxuJzt2YXIgeHI9Z2V0VmFyKCdsYjInKSsnXFxcXFxcXFxuJzt2YXIgeHo9eHIucmVwbGFjZShzYywnJyk7d3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2pzL3VwLmpzXFxcIixzYyt4eik7cmVmcmVzaFBhZ2UoZmFsc2UpOyd0b2FzdDovL+e9rumhtuaIkOWKn/CflJ0nYCxcXG4gICAgIHBpY191cmw6cGljK1JlZmVyZXIsXFxuICAgICBjb2xfdHlwZTonaWNvbl9yb3VuZF80J1xcbiAgICB9KTtcXG4gIH1cXG4gfVxcblxcblxcbn1cXG4vL2QucHVzaCh7dGl0bGU6eHh9KTtcXG5cXG52YXIganNvbiA9IHt9O1xcbmV2YWwoJ2pzb249JyArIGZldGNoKHVwX3VybCx7fSkpO1xcbmZvciAodmFyIGkgPSAwOyBpIDwganNvbi5kYXRhLmxpc3Qudmxpc3QubGVuZ3RoOyBpKyspXFxue1xcbiB2YXIgciA9IHt9O1xcbiB2YXIgaiA9IGpzb24uZGF0YS5saXN0LnZsaXN0W2ldO1xcbiB2YXIgdCA9IE51bWJlcihqLmNyZWF0ZWQpKjEwMDA7XFxuIFxcbiAvL+aXtumXtOaIs+i9rOaNouaWueazlVxcbi8qXFxuZnVuY3Rpb24gZ2V0TG9jYWxUaW1lKG5TKSB7IFxcbiAgICAgdmFyIHNzcyA9IG5ldyBEYXRlKHBhcnNlSW50KG5TKSkudG9Mb2NhbGVTdHJpbmcoKS5zdWJzdHIoMCwxNyk7XFxuICAgICB2YXIgWU1EID0gc3NzLnNwbGl0KCfml6UnKVswXS5yZXBsYWNlKCflubQnLCctJykucmVwbGFjZSgn5pyIJywnLScpO1xcbiAgICAgcmV0dXJuIChZTUQpXFxufVxcbiovXFxuZnVuY3Rpb24gZ2V0TG9jYWxUaW1lKG5TKSB7IFxcbnZhciBkYXRlID0gbmV3IERhdGUoblMpO1xcbnZhciBZWSA9IGRhdGUuZ2V0RnVsbFllYXIoKSsnLSc7IFxcbnZhciBNTSA9IChkYXRlLmdldE1vbnRoKCkgKyAxIDwgMTAgPyAnMCcgKyAoZGF0ZS5nZXRNb250aCgpICsgMSkgOiBkYXRlLmdldE1vbnRoKCkgKyAxKSsnLSc7IFxcbnZhciBERCA9IChkYXRlLmdldERhdGUoKSA8IDEwID8gJzAnICsgKGRhdGUuZ2V0RGF0ZSgpKSA6IGRhdGUuZ2V0RGF0ZSgpKTsgXFxudmFyIHRpbWUgPSBZWSArIE1NICsgREQ7XFxucmV0dXJuIHRpbWVcXG59XFxuLy/ml7bpl7TmiLPovazmjaJcXG52YXIgdGltZSA9IGdldExvY2FsVGltZSh0KTtcXG5cXG5pZiAoai5wbGF5PjEwMDAwKVxcbiAgICB2YXIgcGxheSA9IChqLnBsYXkvMTAwMDApLnRvRml4ZWQoMSkrJ+S4hyc7XFxuZWxzZVxcbiAgICB2YXIgcGxheSA9IGoucGxheTtcXG5cXG52YXIgcGljcyA9IChqLnBpYy5pbmRleE9mKCc6JykhPS0xKT9qLnBpYzonaHR0cHM6JyArIGoucGljO1xcblxcbiByLnBpY191cmwgPSBwaWNzK1JlZmVyZXI7XFxuci51cmw9J2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWzvvJ/vvJ9haWQ977yG77yGYnZpZD0nICsgai5idmlkICsnI2ltbWVyc2l2ZVRoZW1lIyc7XFxuIHIudGl0bGUgPSBqLnRpdGxlO1xcbiByLmNvbF90eXBlID0gJ21vdmllXzFfdmVydGljYWxfcGljJztcXG4gci5kZXNjID0gJ+aXtumVv++8micgKyBqLmxlbmd0aCArICcgIOaSreaUvumHj++8micgKyBwbGF5ICsgJyAg5pel5pyf77yaJyArIHRpbWU7XFxuIGlmIChqLmxlbmd0aCE9XFxcIjAwOjAwXFxcIil7ZC5wdXNoKHIpfTtcXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIEt5pe25YWJ8J+QlFwiLFwicGF0aFwiOlwic2dqXCIsXCJydWxlXCI6XCIvL+WIhuexu1xcbmlmIChNWV9VUkwuc3BsaXQoJyMnKVsxXT09JzEnKXtcXG5mb3IgKHZhciBpIGluIHdvcmQyKXtcXG4gICAgdmFyIGEgPSB3b3JkMltpXTtcXG4gICAgdmFyIGIgPSBjbGFzczJbaV07XFxuICAgIHZhciBjID0gYSArICcmJyArIGI7XFxuICAgIGQucHVzaCh7XFxuICAgIHRpdGxlOiBhPT1sYWIyPyBnZXRIZWFkKGEpOmEsXFxuICAgIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgoYyk9PntcXG4gICAgICAgIHB1dFZhcihcXFwibGFiMlxcXCIsYy5zcGxpdCgnJicpWzBdKTtcXG4gICAgICAgIHB1dFZhcihcXFwia2V5MlxcXCIsYy5zcGxpdCgnJicpWzFdKTtcXG4gICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgfSwgYyksXFxuICAgIGNvbF90eXBlOidmbGV4X2J1dHRvbidcXG4gICAgfSk7XFxufVxcbn1cXG4vL+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+JztcXG59XFxuXFxuZC5wdXNoKHtcXG4gICAgZGVzYzogJzI1OCYmZmxvYXQnLFxcbiAgICBjb2xfdHlwZTogJ3g1X3dlYnZpZXdfc2luZ2xlJ1xcbn0pO1xcbnZhciBiYW5ndW1pID0gZ2V0UmVzQ29kZSgpO1xcbmlmIChNWV9VUkwuaW5kZXhPZignYXBpLmJpbGknKSA9PSAtMSkge1xcbiAgICB2YXIgYSA9IGZldGNoKE1ZX1VSTCwge30pO1xcbiAgICB2YXIgYiA9IEpTT04ucGFyc2UoYS5zcGxpdCgnXFxcImVwTGlzdFxcXCI6JylbMV0uc3BsaXQoJ31dJylbMF0gKyAnfV0nKTtcXG4gICAgdmFyIHJ1cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbD9haWQ9JmJ2aWQ9JyArIGJbMF0uYnZpZDtcXG4gICAgdmFyIGJhbmd1bWkgPSBmZXRjaChydXJsLCB7fSk7XFxufVxcbnZhciBqc29uID0gSlNPTi5wYXJzZShiYW5ndW1pKTtcXG52YXIgdiA9IGpzb24uZGF0YS5WaWV3O1xcbnZhciBwID0gdi5wYWdlcztcXG52YXIgY2FyZCA9IGpzb24uZGF0YS5DYXJkLmNhcmQ7XFxudmFyIHJlbGF0ZWQgPSBqc29uLmRhdGEuUmVsYXRlZDtcXG52YXIgdGFncyA9IGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL2NhY2hlL2JpbGliaWxpMi50eHRcXFwiLCB7fSk7XFxudmFyIHNldHRpbmcxID0gYEBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2NhY2hlL2JpbGliaWxpMi50eHQnLGlucHV0KTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+ato+W4uOmhtemdouWIh+aNouaIkOWKn/CfkYzlj6/og73lubbmsqHmnInku4DkuYjlj5jljJYnYDtcXG52YXIgc2V0dGluZzIgPSBgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvY2FjaGUvYmlsaWJpbGkyLnR4dCcsaW5wdXQpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v6ZqQ6JeP6aG16Z2i5YiH5o2i5oiQ5Yqf8J+RjOWPr+iDveW5tuayoeacieS7gOS5iOWPmOWMlidgO1xcbnZhciB0cyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcbnZhciBsaWtlX3VybCA9ICdodHRwczovL2FwcC5iaWxpYmlsaS5jb20veC92Mi92aWV3L2xpa2UnO1xcbnZhciBjb2luX3VybCA9ICdodHRwczovL2FwcC5iaWxpYmlsaS5jb20veC92Mi92aWV3L2NvaW4vYWRkJztcXG52YXIgY29udGVudF90eXBlID0gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD11dGYtOCc7XFxudmFyIGNfYm9keV90eHQgPSAnYWNjZXNzX2tleT0nICsgZ2V0VmFyKCdhY2Nlc3Nfa2V5JykgKyAnJmFpZD0nICsgZ2V0VmFyKCdhaWQnKSArICcmYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYXZ0eXBlPTEmYnVpbGQ9NjEzMDQwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZmcm9tPTcmZnJvbV9zcG1pZD10bS5yZWNvbW1lbmQuMC4wJm1vYmlfYXBwPWFuZHJvaWQmbXVsdGlwbHk9MSZwbGF0Zm9ybT1hbmRyb2lkJnNfbG9jYWxlPXpoX0NOJnNlbGVjdF9saWtlPTEmc3BtaWQ9bWFpbi51Z2MtdmlkZW8tZGV0YWlsLjAuMCZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjEzLjAlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0QmdHM9JyArIHRzICsnJnVwaWQ9MCZzaWduPThhYmJkZGQ4N2E2YmQ4MmUxZTQyY2IzY2ZmZDMyYmI5JztcXG52YXIgbF9ib2R5X3R4dCA9ICdhY2Nlc3Nfa2V5PScgKyBnZXRWYXIoJ2FjY2Vzc19rZXknKSArICcmYWlkPScgKyBnZXRWYXIoJ2FpZCcpICsgJyZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZidWlsZD02MTMwNDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJmxpa2U9MCZtb2JpX2FwcD1hbmRyb2lkJnBsYXRmb3JtPWFuZHJvaWQmc19sb2NhbGU9emhfQ04mc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4xMy4wJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnRzPScgKyB0cyArJyZzaWduPTRhMDg2NDVjMjk5NGViNjkyYWMwY2ZiMGJkNzU2OWM2JztcXG5cXG5pZiAodlsncmVkaXJlY3RfdXJsJ10pIHtcXG4gICAgdmFyIHJlZGlyZWN0ID0gdlsncmVkaXJlY3RfdXJsJ107XFxuICAgIHZhciB5bSA9IGZldGNoKHJlZGlyZWN0LCB7fSk7XFxuXFxufVxcblxcbmV2YWxQcml2YXRlSlMoXFxcIlhVaUZUMXZYWVdyVXcrVmhwbnFsZzBOMHZBV2dwZ2xoOE1oWis5dlBEOTlOSjVWZ2VGZEhtd2FLYXdJeTZDMGg2RkZRaEVRNVJoSm1WMEVRSG5MOXh5YlBIQWNoQUw3aFpFWmQraGJHSFY1amVHK25LNVEzaWU3OHB1R0RiMVRKNGZBSTdnNmV6TElqUU1CeE4vMlhNOTJZTk5QS0RIZGhMSU1RR1Y2OU1xOGNUT1dqS3BaUXAwL3ZnTnV4YVBRS0V6U2RIUUp1ZTd0VHhkU0V2RHQzcy90eGRFaC9vR3pGQ0NOV2VaQ1VVNTN6aEVoQzA2cTZaRmpaQ00rZDhGc1o1Y1hsTkplbXRlZ01nSlVMZFRxYVZkUndWaFZYKzF1QlE5TnkwRHBzTkd4Mkx3SGdPamxzOWh3MTRMaEVxdGhFZTczeVBCR3ZTZ0tFQmRTWWdHN2NLN2hZVlRFTmVHVGlSQXpLUFE3akdFcUVKOGFhZEhPSEFlU2EyNWFCYnpjODFoaHhnWHRpYWxYOFVxZXBuN2s0ZzJHa3Nxb0czSlZJK3FUZldaeFBXcU5NLzBqVVhiclVUQ1JabnJ6R1ZvdzZOd1BRWEtxM0NES2w5aSthWnZlV3o1SWY1RU5FWkdpV2xXNXo0YUpTRWNleENEc2labG8xL1FKSWoycldvbkUwdTU0YWgyL1paLy9aR29NQkorZDE5R21lcGtMQkQzbjJxb2dLbmpaajJyaldxZ1BhZEVlZTFaSWhaM1NHYm1UbEpmMUE0QllJdXVQd3Y0ZEdaZFJvRFc2NEJoQzVqdUNuNndEbTdZbXk3QlhmMXNRYUZpbUVuclNJaUhHaE0rV0tnM0l5V2VjdWgvR2srK01tTjZBeHhjdk5BeXA4YkM0aHpCTXZaSi9sNXRSeWFwb21kQ1Y1QnBpWGZqa1dSbmJvcElqSStXS0IzZkNhWXlSZGVOTEVSS25FbHNjRGl6N1VlbkxwcmhZYy9hNExzR2VNTUZWWjhZbzgvd0dZSDM4SlxcXCIpXFxuXFxudmFyIHB1cmwgPSAnaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL3ZpZGVvLycgKyB2LmJ2aWQ7XFxudmFyIG1vZGUgPSBmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9jYWNoZS9iaWxpYmlsaS50eHRcXFwiLCB7fSk7XFxudmFyIG1vZGVfdXJsID0gYEBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2NhY2hlL2JpbGliaWxpLnR4dCcsaW5wdXQpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5YiH5o2i5oiQ5YqfLCDngrnkuKrop4bpopHor5Xor5XlkKcoXl9eKSAnYDtcXG52YXIgemwgPSBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdwYWdlJywgZ2V0VmFyKCdwYWdlJyk9PSfnm7Tpk74nPyflhbPpl60nOifnm7Tpk74nKTtyZWZyZXNoUGFnZSgpO2lmKGdldFZhcigncGFnZScpPT0n55u06ZO+Jyl7J3RvYXN0Oi8v54K55Ye75LiL5pa55YiH5o2i5riF5pmw5bqm8J+knyd9ZWxzZXsndG9hc3Q6Ly/lt7LlhbPpl60nfVxcXCI7XFxuaWYgKG1vZGUgPT0gJ3loYycpIHtcXG4gICAgdmFyIGxhenkgPSB5aGNcXG59XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IHYudGl0bGUsXFxuICAgIGRlc2M6ICfmj4/ov7A6ICcgKyB2LmRlc2MgKyAn44CA57G75Z6LOiAnICsgdi50bmFtZSxcXG4gICAgdXJsOiB0YWdzID09ICd1cCcgPyAnZmFuJyArIHNldHRpbmcyIDogJ3VwJyArIHNldHRpbmcxLFxcbiAgICBpbWc6IHYucGljLFxcbiAgICBjb2xfdHlwZTogJ21vdmllXzFfdmVydGljYWxfcGljX2JsdXInXFxufSk7XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6ICcgICcgKyBjYXJkLm5hbWUsXFxuICAgIHBpY191cmw6IGNhcmQuZmFjZSxcXG4gICAgdXJsOiAnaGlrZXI6Ly9wYWdlL2d6MT91cmw9aHR0cHM6Ly9zcGFjZS5iaWxpYmlsaS5jb20vaDUvZm9sbG9377yf77yfdHlwZT1mb2xsb3fvvIbvvIZtaWQ9JyArIGNhcmQubWlkLFxcbiAgICBjb2xfdHlwZTogJ2ljb25fMl9yb3VuZCdcXG59KTtcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogJ+KAnOKAnOKtkO+4j1N0YXLigJ3igJ0nLFxcbiAgICB1cmw6ICdoaWtlcjovL2VtcHR5IycgKyBjYXJkLm5hbWUgKyAnJiYnICsgY2FyZC5taWQgKyBgQGxhenlSdWxlPS5qczppbnB1dD1pbnB1dC5zcGxpdCgnIycpWzFdO3ZhciBwaWMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hY2MvaW5mbz9taWQ9JytpbnB1dC5zcGxpdChcXFwiJiZcXFwiKVsxXSsnJmpzb25wPWpzb25wJyx7fSkpLmRhdGEuZmFjZTtpZighZ2V0VmFyKCdsYjInKS5pbmNsdWRlcyhpbnB1dC5zcGxpdCgnJiYnKVsxXS5zcGxpdCgnIyMnKVswXSkpe3ZhciB4cj1nZXRWYXIoJ2xiMicpKydcXFxcXFxcXG4nK2lucHV0KycjIycrcGljO3dyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9qcy91cC5qc1xcXCIseHIpOyd0b2FzdDovL+WFs+azqOaIkOWKnyd9ZWxzZXsndG9hc3Q6Ly/lubTovbvkurrvvIzogJflrZDlsL7msYEnfWAsXFxuICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbn0pO1xcblxcbmZ1bmN0aW9uIHJlcXVlc3RfYmlsaV9hcGkoYmFzZVVybCwgU2VjcmV0SWQsIFNlY3JldEtleSkge1xcbiAgICBpZiAoIVNlY3JldElkIHx8ICFTZWNyZXRLZXkpIHJldHVybiByZXF1ZXN0KGJhc2VVcmwpXFxuICAgIGV2YWwoZ2V0Q3J5cHRvSlMoKSlcXG4gICAgbGV0IG5vd0RhdGUgPSBuZXcgRGF0ZSgpO1xcbiAgICBsZXQgZGF0ZVRpbWUgPSBub3dEYXRlLnRvVVRDU3RyaW5nKCk7XFxuICAgIGxldCBzb3VyY2UgPSAnYmlsaS1hcGknO1xcbiAgICBsZXQgYXV0aCA9IFxcXCJobWFjIGlkPVxcXFxcXFwiXFxcIiArIFNlY3JldElkICsgXFxcIlxcXFxcXFwiLCBhbGdvcml0aG09XFxcXFxcXCJobWFjLXNoYTFcXFxcXFxcIiwgaGVhZGVycz1cXFxcXFxcIngtZGF0ZSBzb3VyY2VcXFxcXFxcIiwgc2lnbmF0dXJlPVxcXFxcXFwiXFxcIjtcXG4gICAgbGV0IHNpZ25TdHIgPSBcXFwieC1kYXRlOiBcXFwiICsgZGF0ZVRpbWUgKyBcXFwiXFxcXG5cXFwiICsgXFxcInNvdXJjZTogXFxcIiArIHNvdXJjZTtcXG4gICAgbGV0IHNpZ24gPSBDcnlwdG9KUy5IbWFjU0hBMShzaWduU3RyLCBTZWNyZXRLZXkpXFxuICAgIHNpZ24gPSBDcnlwdG9KUy5lbmMuQmFzZTY0LnN0cmluZ2lmeShzaWduKVxcbiAgICBzaWduID0gYXV0aCArIHNpZ24gKyBcXFwiXFxcXFxcXCJcXFwiXFxuICAgIHJldHVybiByZXF1ZXN0KGJhc2VVcmwsIHtcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICBcXFwiU291cmNlXFxcIjogc291cmNlLFxcbiAgICAgICAgICAgIFxcXCJYLURhdGVcXFwiOiBkYXRlVGltZSxcXG4gICAgICAgICAgICBcXFwiQXV0aG9yaXphdGlvblxcXCI6IHNpZ25cXG4gICAgICAgIH1cXG4gICAgfSlcXG59XFxuXFxuZXZhbFByaXZhdGVKUyhcXFwiTDdBdko0MUMrK2tsbEJNUEc5SlJUVXpRdkVqSlh3UnJmUmlKbUVCdWZVVHBMcGh3aGw2bTRxRWZKR05GY1RxdkROb1RaaStYV3o4SHh1N1UyVTU3c3NBb0JNZm8vZUE2OHp1VkRrWDgvTVZvcGxUek9xalVPNlY1cEVMWFlpRldYUnhGMnZvM1Y2cTJEQ05zWFJRMHl6NHZoMVRxeUxHbVFhS1pSRlhweTVBUWRLUlBrLzZVcDl2czk5YnZhbDRlVElZSnFZWWZZcytyUG14YUg4bWkzMjRBOEZaN1A2Rkp3ZStRb0EyN1lWK1cwOTNkSElVLzhHaG9VL1c2a3EwTCtnaURLQTRYTzNBQ0NFcTlraXFXTi9ERDVZaXVPSVdCdzFnb3pVZ05Ld1dRVGRGZ0xzTVpOay9qM1dBN2hLb0ZnOFNHREV6dGJCRGhmZ1d3QWJwUWlWcS9Lc2UxU2Vob0NTN3ltMk0xRWFoSnR4U2JtTE80RWd3d2JNL2dzTnhDbEhyZDdzcDMxVys0K21CTjZ3bnBZS29yYVZsa1NUNWlUU3VMYTI3M2NNOU5ubU5mZlIyOVFHZys3eE9XN25xOHkwSm41L2JQTDBCU1o1QXRScUxydnJzNk5YOVFhWFRpeVlDUVJVL0dSa3BzbzRkNkhNdktNTFdhaHhqT25GQ1JtdU1CK2tHNUFYNFJ2Y3JxVnh6TmVBSnVLQzVubEVmWGpEUlhvRTVsTThVS2JLU3VOZFJqSFRQRHBpRzA4Vm5yajRNZnExYVdvRHNuZFBZVWlJSjVPU3AyWlpMTzgrS1lJVmVHV3lJVlFhK2Rpa3JFUzcrYW5FVWJPc0xDeGZmZEFlVEtyY1RXNThVNmlsYUtwSUdabUFKSkk5NnFLOVpSc015TXVZWm5RRTVHcEtleCsydDR3OVk1cUZkd2lEMWRMNWFGb2o2YWVmY1pHR1Z3L1k5Z1UrWXZscGhiSVJQNlNFSXNsVjlhSC9xTkxQcms2MFZmdkxPbE01NU12bE1adHlOREpCZkNWWll2U3JBSFlIeDkxVjkyaG1PWSswUWVWRVVlQUxsK0hBVUpOdTNXa2NtRjNPTFhZb05NSHd6V1xcXCIpXFxuXFxuXFxuLy/oh6rlrprkuYlhcGnpoblcXG52YXIgbUFwaSA9IHtcXG4gICAgYXV0aG9yOiAnJyxcXG4gICAgdHlwZTonJyxcXG4gICAgaWQ6JycsXFxuICAgIGJhc2VVcmw6ICcnLFxcbiAgICBzZWNyZXRJZDogJycsXFxuICAgIHNlY3JldEtleTogJydcXG59XFxuaWYgKG1BcGkuYmFzZVVybCAmJiBtQXBpLnNlY3JldElkICYmIG1BcGkuc2VjcmV0S2V5KSB7XFxuICAgIHB1dFZhcignYXBpJywgSlNPTi5zdHJpbmdpZnkobUFwaSkpXFxufVxcblxcbnZhciBhcGlJbmRleFN0ciA9IGdldFZhcignYXBpSW5kZXgnLCAnJylcXG52YXIgYXBpSW5kZXggPSBwYXJzZUludChhcGlJbmRleFN0cilcXG5cXG5cXG50cnkge1xcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHAubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgIHZhciBwYXJ0ID0gdi52aWRlb3MgIT0gMSA/IHBbaV0ucGFydCA6ICflvZPliY3op4bpopHml6DpgInpm4bvvIzngrnlh7vmraTlpITmkq3mlL4nO1xcbiAgICAgICAgcHV0VmFyKCdVQScsICc7e1VzZXItQWdlbnRATW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMFxcXFxcXFxc77ybXFxcXFxcXFzvvJsgV09XNjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS80OS4wLjI2MjMuODcgU2FmYXJpLzUzNy4zNu+8hu+8hu+8hu+8hlJlZmVyZXJAaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL3ZpZGVvfScpO1xcbiAgICAgICAgZXZhbFByaXZhdGVKUyhcXFwiaWZuenFhTnFOUmtONk5xRzBmWng1TWV5NDc3T3NNSk9UYlRkOVNhak1rZjVSNU8zOTZKMjJGeGtiUWJrWFhDcGdnZnVhZDVvKzNwOTdMSFdiSXB0b3c0bytNUlF0YVAwLzh3aXlKQ3JaQ2FaWVc2NHdVMUI2MHhSQlF0YmRKQ0VnUnVIaG9ac2JHQVpCQTQzL1RYeEd3SWtDY2tiVjZuekhobTkzRGs1RGlDNUk1SG4rQ2ZpQk1FNHlRbzM5T1VKeTNwR0FXbGpEMXNucHpHaEJqMWIzSHJUdnlrakZhU1BnblMvTVVkSk1mMFFaSVNOR1U4ejVvdmFuUHNIK0Y1V3NRZ0hnSXF4VzlldlYzK3RneWZMVWRGUjBONERsdExZcnc3dkNQZ3pQUVgvdndCTVB5NlljVnRTVktqYjZRekZhdVROK0oySVJZcnBheTE1YWtBa29mYStZeC9mTlRlZjQrNlphVnptWGVaYUVhajBiUS9IUFppYnhUejNTK0RtVVZkZ1l1MEhYTXkwQ0ZDWFN0MytlT1VOOWMrRW1WQUxyTk44T3FXclBla3J2RjFxTjFVS3Y2a0JjQkVQL1N3a3VmczN2TTA3Zld2L1JOSllCN2hFaHNvSXh5dkhRT2lQWUNURCtlVXMrZmgrVTliUlJBVXpSU2xYQ3poV1hqRGZDSmpZLzlCMmw0UnBoL253b3BFTXFpaTVwSkNKVVBUYy9INFVmdzlGT0xabXhNSGJFaVdmZnAwcmdicEhvS25Sbnp3WWZnL1JLN245ekxBZEdBSy84dUdhMHNsWjVJVDFYVWVxclBzQ3F0M01INUcybXl4QkRscUQwWVFVYjZOV2hJN3BqanBpbjZiVzJ0aHd6SDROVC9UcDRDV3BIbFZ5Y0JWV3NTZ2hHeVNCRVFScEJRS0xPVHYxRXZPeGdGeGg5R1ljdTlUNldQdWZiRW5EZy9MSzlyZ3IycHdvSTNZSWowcDJCYkJtWDd2TWhQeEtLTHB4Wmk0M0p3VmY5SHhuMzFOYVlRaS8wUzF6VENnOVMyNnRVZ0FxNDhyaStFaTNNSFVrSTZXc01iQTczTG5mZ0JqNzdEQWxRbDVRT2tVdi9wSGh5WWxpaVEyWFlhWXhTSCtoRzQrdEErSzZ1UDBoREtlUUxrL2Y5dDdpKzZZTzBVKzhHaS9Yd0hBc3Q2Q0w3SS9LaUJmRlBuTllMeFpCeDlFMHNRZXJJKzhZS0YySmZUb3R2SGZjOWlTZjNMZUFjVXpXeS9Hc1lyMjBxekUxKzJocVVueFFicWlFamxhTXFlci8vUW81OE93K0ZtcFFwMXd1KzdoZ2ZyNlJrSzRZd3hrZXdlWGhPUmZDQk5xSUJKenR3WjFmQjBtYnBSTjNja256RGljcmFtbTNqV2tEaVl6Zi9KTTNoWXMzY3J5bGRHeVhxcjI4SjZ1OHhMYVNEWEYveVVRd2JTRldKTXN0NCtpalMzSDdEVTV3WWpna2hFemhCVkt4NzI0TFVta3BVVGFSVGowMEpnQ01zbEhEeXl2TFNOWldjL3NJbi92V1NBSFU5cTJDWVI3QzlDSWtHdUkwa09LSDBud0tLaTF4V2Y5WncxaXZnTHhrVWxPRUlGTnBROFhkNFJ2aWpqR0xyeFFSMnptc3JxTGpUaGpwblI5cnlsMnF1VG0rSG11aWVqc0dNV0dJWEtreXBkTFlQbnZjSGZIMmNsV2dVNzFWSnhXcno2S2s3TGpJR3o2bUZvajQ1Wlo3Ri9qMXRqWE1oOGxyWUJsS2RYanpsRGNzMmhzOUo5dUFjeEtXalJYbXk4dUtDNFp1N01mVkswa2NEZnZ0QWZja25lblJnd2haRktwU0h5Nkg4ZklsMFduSFBiVVNONS9RMUlpazhrYWFDME1TYlI4S1Y0NnZoRWV2UWRQb2V4WDdDanBTalprRkFLU0YvMmt1RFh5R3N6THoyaE5Pa0cwaTFCbWt4aGpjNjMvQVFseUtpemszME1KQmZOUFZFNnk5cURFc2RYbUxNc291SDhwNzBIeUgvS29lbHlBa2krVWZkbEtRTmoxN0hvWUdTaW5Ra2JiMmlGV0c5TkRPV3dyajhaUXVYVGlOS1RYSk9ySDhsVDErMTY0RUdqWGU1K2Z6ZlVtQU0wQ0xSTVRSL05xNXpOVmdlOVBGL1ZQTmZVMGROVmNvTG1ZUDZEVFU1T3pnMGJzb3gxYThTZ25keEZSOWJTTlJ6Wm56UEdKbzZIS0djZmJWYVNVRlFDVGQ2VWJ6VGRjcExEVFFxdVp3UEZiZGRTb1lqZHNGdWtuUENFMlVwNnJrL2UxZGg5S3I4bWFFOEZZOENPbkJ1N0IxV2RQZHl1V2V6N3hQdHNoekFJd1Jla0lPbUcwb21TbGJ4dVh3MGI5V3RQQVhSTVRlUGdhYkR1OEJyejAvNHMwZW9CQ1I2Y3ZYaXdLQVg4REZJOXZ6NGZudXJOTGQ3aFpJa0N2QW5UM1J3L3RTdHNTKzhyRlVtRzAzaWFRbUpuM3lYYWladzFNU0hrUlZxV3REWjh6U0FrcnFvWUE3UTN1eVhkSk02TXFDWEViQ2ZnWGxnUDRDQThnTHI4dHZ3aDRuWEZtWVNhYUdsRU1ZQ2hoVnNQMFRvbnNneUdjNlpIckYra0gybERHU3F4TU5lQitRVE5zTkhnckVScmh4NjZ4T3lsc0laRXdMQ2V2bmZtUXAvQ0x6NE1jQ3QwRld6aG5KUTJOQWg4MTFtT3diNDJpM1hPam50a3RIVDJ0UU1RUUtCZ2RUbllqR1lLdzBCNDE0MXVlQk5hd0dhWjNsTGFYV1Q3WXVHUWFGS3BYZHprbWk1c09kalZSeVNralZwQTlZZEVhblNRNTY4NFNqTFozQnV0V05reElwM2VReTQzayt4b2toUHZ3alRWWXBHa2JiQkdvQ004eklCRHhlcTIyTDlBa2NOWVh1ekpheS9OZzNUdVhXV0tBdjArOHpLZENSdHZhSVZZYjAwTTViQ3VQeGxDRElnVkNqVkNIWGlicXN1UDdqS3lSejN0cjluQ1pJWCsrWUNBYStaZFhLMFAyZWcxdGxKemVXZzIwelVnRWpPa25zSUZrazJ1QmZMMlVFak54ZGxsRE9JUzc0R3I0QkhicVRGT3ZGQmExalpsUGJyZnh1TlkxcS9KelNkY1ZHOTIxZTQ3T3o4ckZEUHVWRTdOZnRhMm1EZlFsN00wSlRON1RpZUJZamRhQVhQUzlET1lPUHNPVldVbE8xUXhjZXR2NWd3Z0kwZ0lWaHBhWFRJNkF5QzJuWTR2TGhmaFVaV3Jia2U2c2FHditOK1FjckFTL1hxek5WTzE4bnRiZk11ZWxGaVNuVEZTaXJZQk55TmJKMnl0T2s1SHFNSHh2TzdjRHpNUTdFMnplSkhqOFJ5dlNCbXZUcTBqQmRMQmlJQWg3ZUoreDJKb0VXLzNDYnJUYmZPeVp6K0hGUHNPN2hzeVR6S2FyRHBEdndkNkdsT0tnWDJTVmwzU1RENGFMdVhkMHZOd1ZacUg2RWlScmw4YWhTekx3QURjWU1JVUJEUndlR1kzbG50bXZDWDIxd0tWdGRlQkdUb1RLUnpET0FSTmZwR05iRkJLMHJ3cVB3SzN1WTR0aVh6aG1teUpsRDZLMm9XVTRnOVhZVzgyQUJsazUyTWxPZVFZZDFoV0hyYXdwR3BiSENFYzRpcXM4TjJTZGFhNUI5cU40VFlCM1hOTnRpK3JOSXRHZzlPcGFzdTVvZmZDRkZJYk5abWpUYzlFbEs0TXduT1c5OUNHbTQwMk1hNC9lazBsVUhQa3JNOFVXNk5DQURJb3ZDMGttclZVb3huUzBIUXhzZmdXUUlsa05QRDlGVWZPNGlKZjJmM2lUZ3p0OWhFMk9nVDJDakt3S3A4SENqdWhjYTVGY3MxU2xEbGhTQUtlSE1IOXcyVWYvbjV1UTZuQjBXVVdDTnNSdjlETjBNV2ZDeFY3Rk54VWxhMndjUEliVXRZUk5qb0U5Z295c0NxZkJ3bzdvWEdnQ1pGbHFtNzh2dHFDYmVLMjhpWHpqRmN0KzQ4dDBrYzZiRWlxUDI4S25ZRjhuQVZuRlFJMk9JZVF2S2JJSEFzL1RYbHMyNjNRbGFqZEhVcE1LWk5rL0FCS0cvK3FrVzJkV1FFOVdtUENlUE92ZFZtQWFQTXgyeTdMbjNqMjdVVlJQbElwbmlPNnI2V1AyZFQ0YW1mcGE0RFQ5dzhEa3RIMGozOVphNUtiQmpxWVQzMDhFYVgyN3hSdS9xL05YY1hoa1hQOUlEWnlSU0NjdVpreGY2VFo0UUtwSG41dnpqb3VJYWNTUE1UdGFTdHB5RkR2TkdIVCt4VjZFWXVCcTVyL2dDZDZPaFNiTERLcUh6dmNCQ0RCTE0yT1A0L0VSMnNodjdHckwySWJzd0tYUVk1U1VJRTF4OW5lSDJyNUd4NDFQMGJmT1ZwbWxMdEJOTVJFUGxNNGpUME9Kak11aEQvT3VHMmg0OVF4ZUpxVUtxQ3FyVzhyQVdiS0lxRjdESHhEMWx6MHpObTRqRWZzUzYvWUxTbFRwNHIzYytGZWREdmFSaUdTaUxuR0U4N3E1YkVkd0s3WWJuVkJZTVg2YmRDSXNLOFEwN1FKa095Y1VNZm1kQ2txVmU5N1JhQ25sYWNIUWFnMDI0ZUZuV0hHRk8vcngvdFV2VVppYzJ3QnE2L3g2ajhBSjhEMmxuZ244WDdhYUFyOVFWc25USldZVmtzMGh0MzRTWU9NZWsvaW5DbU10RHNrU3JPNytXVEVmQ3VDS2tpcDdWR3o1MkpNcTJ2enptbXlLeW8ycWE4UmhVY2N5WGh5bThXR3g2b3UrK1NpSnF1NmZNenN3TUc0VHRYL2pMUmZYMjRUOGFvWXBaM285M2k5U3hrUW8wdDNPUTIwTkgrNGxvQnJXeWt3QVNHRnFXT1gvNTU1SG5vS2pHdWhjKzZiTVZGZy9qUzNwREpzWG4rZk11N2VpZEphdnlaNlVaamgwQThLTDVyN2p6QVhuV2U2RWk1LzRQNlZwT1VIWVhLQTVzckVjekZwSFVQOVJkVjNJdWlLNzZHUHE2cGo1TTVMaktkd041S0JOWHVsMGFnT2UycElJU2Ntc0hLUE1yYjFNNDJzRGxvUlFobmVwTmlvOEFSdjBZRDJROUdKUE9jQkhVNkVUSFdZejJJaXluOVBpalpSN1lTcDJwN3lpUUJOR3FqV1lHV3U2TE1sUUlkWVJDSjlwVFJ6eHVVOHJuenh4azhQUUNENXBETVJFQzRaZE1vU1hjbWNWY0h5TUNtQVVHbWlUUitPckFDckxwZ3lkdnRMK2tNSFV0Wkh2SDRNYVI3SXh2aUhGQUVRY3p2cUo2TFVrc2kxRWRPTE1JL1JzUGNOK1A1RXhNcjJ4azE3NlBzZC91ZGp1aDVTU1lzaGZkQ3Fma285Tnhhemk3eVlJNW9sR0VFNEtpWFVxVWtGZDNxd2t2SElWVUlhUDA3NVFUMnlYd1Zwc0xUSGFEeHo2RmUzbzBoNExrbGlPOGdHV2EvaXFrRC9Ebm04c3J5MGpXVm5QN0NKLzcxa2dCMVBaWHdwZ2EwMXJEZllhVlRNVnl4R1NJeXl2TFNOWldjL3NJbi92V1NBSFU5alNJakloUmtncHhUL0tNdjZpSDhsbFdISjF0ajgvUlRDRjBDbDJmNld3VGJGSlljTWFGbG5tTWlzMkFMVk9OUHM2VU12c08vUE93NUNjcjc5c0p6aWVXTE1WYU9WRzQvZTFWUFRTQXpZOUg4N09DSlhleCtpQU9vVytLQW5yaUJ6QVZCZEZ3eVVxSWVuTEpWc1JIN1Z2M05WNzNNcXJxbi9wa3pBWHRraVVBWHdwS21WemRiZU5MbGVib2tEa29tc3NyeTBqV1ZuUDdDSi83MWtnQjFQWTNtVFJtU3RTa0hieEEvRnRjZmhiMzM0Qm96MVl1WDQrWm5wQmxSU3d5VFRFMXVHTFlmZXBaYTBKOXBUYzhZL0diRTZ6WHVhK2ZkM09Za2s0Q3BZNWhJTlZBTkdiR01EMVlRbHBjby9yM0E2djhIN3NkTzVLN1NqWjhJVDVKU0xWc3BCRlUzeXlxalBjZFZHOWR5RC9McEd4YlcyN1FCby84dTJWaHBrbTlMY013M2g4aGlwNkN6QjZUbHB3VDFUNjdYSGtHejhVYTFDK1NML0VFemVxOUs5OFZUU1c0RlB5ZWNGWTdJVWM0MEFYUG1wcUtJcXRhN1NjakFZdkQ4aFpIM2QzVTFVNTMvU29jSkhLRGo0WnYxamJuRlRzam9kalYwZkhlWU9kdDUwUEZXY094WFlhejhqZ2dkbDA0QkVGRlVrMFNwZnYyenJkTjI1NUtGcjFtNGdVeHkzS2k3eUZBUGhkS3J5Q0ovaGpUUkpRY1REbmE2eVBTZnNlQ0R0b1JrbUd2MHlOZEUwYmk5YzRwV1BRZ3JWaTBRamR6SDI1WDBObkpBa2w1WVVpa1BsbEZaWGhuMmRRekxtTWpLUDJSSzZMS1JBNUFwSGdPWFpXbkd0MEFtY2ZVeXV0dzBHWVJHOWV3b0tBWVEzOEp0S3ZSc2RWSWk2RmM0TXlqZTJCYnd1TG90K2w2WXh4UDJGZWtVa2tpOThnYlFxMENscHZiaFoybjV2YzVxSVoxZnZiU050ZU5IaTJOc0RXK2hVWEU4T1loM0F4OXdBSzZCaE0wRGlueG82T1ZvejhhbHhxNDR0dHFraUFSN0c4SFh6bXVNTmpMcythOStRSTlxZTZEU2JBQlFqN1VGRWhQY1YxZS9nUFQvd1IvczVveVNTTHYzMzB0anJ6d283cGxMb3VuYy9zYTdVZUF4QmVyUVVxeTJBbDQxRGF3RkxlSyttYSthT01iT2VaOGRJQmJHWmpXUko2alhaSWVNNWRrV29hWTVjUlJjQ3AwOXFGbW1obC9jV3NRVjIvS2ZxL0RhMnUzOFNmWHJJMVZLMmVnN0MyT3ZrNVNTY3Nsc1JOUTBRZ290Qys0TUNVUkVNODlSZTdJQjkvaXdXdis3OXFJM1MvSG5LZnhydUZ2T1dONC93V0hSNjlvY2FoR3hPLzF0OXVaUXNLTDhOaDRtRitMQUZZamhaK1I0SXBCVnRlWHk2ZkdsVzhhUVExc3ptL1M5aUlrK2pZY2trU25vVmlZWnRtMnZHc1pWQ0lPY2wwdnJMSG1aTVZ5aS9HSjhUOWwvaVNRcSs5TkFEbVdTd1JzVzlqcktSMnV5d0dzOUJoRmVzYlY0WEpYRXZ4TU1Lakhwd2h0WkRRQUZLS0xmalU0bEx1UDFrRzFHejNmUWdWRzBDS2dRckd4d3lnOUpORng4bEswcGRFT08rRGFYelRySG9YeE0wYklzZmNMWUN3SzVsbElDS0FrOFpNVDZNdGFITXYweTdldk1qQlovMVlsdlE5ZWtMMGY2KzdoVzdiR1RoRU95N3g5SXl5YmJvOXhVOGtHUTBJd1N5c2JINzk5ZXlmS25sWlpYZFUvbng0V24xYTFDUHlnSzE0S3RpWFRkRkRRMkxnQ09uMnFvUFpmN050SUZ4ZEw2eWFlcCtDcXEydUVOb3BnMER6eFR6SGJxWDZEbWNQN1B5ZWpITk9WVWczd0RGMlJ3ZDNJa3lZQ3FnWm5ONkVyVzFWMjZvaWxGWXlYRlordjdFSEU4QjZNaExueHRMR2tSWlowK0ZGSTZLbitYb2U3TEwrMlphRG80L3l5bmtWUjdCRnVTcWh0S0x2empkYnlZb1Rvd2ltODVjNlJxL1JDWHR3ZzlSZzRxU0VSR2pqWnlGY0pRL1E2YUpidjBMcEV5Um4zcXBwNzV1VDN6Y2JUU1JSVFZqenZjdVhJRXJncjFEL1B1Z0ZtaE9XZS8ycEIxNWpVNDBpZSszYzg5b3lpYWVJTy81c2tkd1FQemc2L1lITlYvMXNWVmdPS2FXNEk3UUFrYVNPdGRWUG02SDZ3dmx5WEVDQU52aENNR2VsRkFlMWpXdmRCTXVuVlI4TjJSRlNBTzhNa0lKNm84THZVb3pLRGtNUUJ0NXAvY1dzUVYyL0tmcS9EYTJ1MzhTZlhENTJnS0Q2SDhYVktGZm1ESGFvU2hNc3J5MGpXVm5QN0NKLzcxa2dCMVBhbWIwcWFiVDgzRDZxbi9hM0dsSHlHeGFtWmdSSGFLMTZ2bVpFemFudVRET3pHMWFVcHZFQ3RSQjhFTWdhcGFRWExLOHRJMWxaeit3aWYrOVpJQWRUMjZ2RnBnYTBaUkxXUlAzakgwdHlyTllBNzVlQ1RmOWRJcWpZR2NBQTFyc1UwemVlcGRNWjhNSlhkNSt4YkFhWEEvdUpmc0dqUEk3cHNRYzhKbitmbTNNTGsrTkNFRjhMc1EwT3RnbElYTCs2M0ZSdnlHN25NY2V2SDRpL1hUMEIxQlhOUEw2cjhpNmJuYmUrUUpLWU1BOTNQZGJCY0RzR1RWYUxpSmxZZEVPVGZqWWJwTFVSQ2RseDlLL3B1RVhXK1xcXCIpXFxuICAgICAgICBcXG4gICAgICAgIGlmICh2WydyZWRpcmVjdF91cmwnXSkge1xcbiAgICAgICAgICAgIFxcbiAgICAgICAgICAgIHZhciBlcCA9IEpTT04ucGFyc2UoeW0uc3BsaXQoJ1xcXCJlcExpc3RcXFwiOicpWzFdLnNwbGl0KCd9XScpWzBdICsgJ31dJyk7XFxuICAgICAgICAgICAgcHV0VmFyKCdhaWQnLFN0cmluZyhlcFswXS5haWQpKTtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogbW9kZSA9PSAn55u06ZO+JyA/IGdldEhlYWQoJ+ebtOmTvicpIDogJ+ebtOmTvicsXFxuICAgICAgICAgICAgICAgIHVybDogJ+ebtOmTvicgKyBtb2RlX3VybCxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfnvZHpobUnLFxcbiAgICAgICAgICAgICAgICB1cmw6IHB1cmwsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGlmIChnZXRWYXIoJ2xpa2VfdHlwZScpPT09J+W8gOWQrycpe1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn54K56LWeJyxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKGxpa2VfdXJsKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgdHMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcXG4gICAgICAgICAgICAgICAgICAgIHZhciBjb250ZW50X3R5cGUgPSAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PXV0Zi04JztcXG4gICAgICAgICAgICAgICAgICAgIHZhciBsX2JvZHlfdHh0ID0gJ2FjY2Vzc19rZXk9JyArIGdldFZhcignYWNjZXNzX2tleScpICsgJyZhaWQ9JyArIGdldFZhcignYWlkJykgKyAnJmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmJ1aWxkPTYxMzA0MDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImbGlrZT0wJm1vYmlfYXBwPWFuZHJvaWQmcGxhdGZvcm09YW5kcm9pZCZzX2xvY2FsZT16aF9DTiZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjEzLjAlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0QmdHM9JyArIHRzICsnJnNpZ249NGEwODY0NWMyOTk0ZWI2OTJhYzBjZmIwYmQ3NTY5YzYnO1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIGxfY29kZSA9IEpTT04ucGFyc2UocmVxdWVzdChpbnB1dCx7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczp7J0NvbnRlbnQtVHlwZSc6Y29udGVudF90eXBlfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBib2R5OmxfYm9keV90eHQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOidQT1NUJ1xcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xcbiAgICAgICAgICAgICAgICAgICAgbG9nKGxfY29kZSk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8vJytsX2NvZGUuZGF0YS50b2FzdDtcXG4gICAgICAgICAgICAgICAgfSwgKSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfmipXluIEnLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoY29pbl91cmwpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHZhciB0cyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNvbnRlbnRfdHlwZSA9ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9dXRmLTgnO1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNfYm9keV90eHQgPSAnYWNjZXNzX2tleT0nICsgZ2V0VmFyKCdhY2Nlc3Nfa2V5JykgKyAnJmFpZD0nICsgZ2V0VmFyKCdhaWQnKSArICcmYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYXZ0eXBlPTEmYnVpbGQ9NjEzMDQwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZmcm9tPTcmZnJvbV9zcG1pZD10bS5yZWNvbW1lbmQuMC4wJm1vYmlfYXBwPWFuZHJvaWQmbXVsdGlwbHk9MSZwbGF0Zm9ybT1hbmRyb2lkJnNfbG9jYWxlPXpoX0NOJnNlbGVjdF9saWtlPTEmc3BtaWQ9bWFpbi51Z2MtdmlkZW8tZGV0YWlsLjAuMCZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjEzLjAlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0QmdHM9JyArIHRzICsnJnVwaWQ9MCZzaWduPThhYmJkZGQ4N2E2YmQ4MmUxZTQyY2IzY2ZmZDMyYmI5JztcXG4gICAgICAgICAgICAgICAgICAgIHZhciBjX2NvZGUgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQse1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6eydDb250ZW50LVR5cGUnOmNvbnRlbnRfdHlwZX0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9keTpjX2JvZHlfdHh0LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDonUE9TVCdcXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcXG4gICAgICAgICAgICAgICAgICAgIGxvZyhjX2NvZGUpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+aKleS6hjHkuKrluIEnO1xcbiAgICAgICAgICAgICAgICB9LCApLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICcnLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2JsYW5rX2Jsb2NrJ1xcbiAgICAgICAgICAgIH0pO1xcblxcbiAgICAgICAgICAgIFxcblxcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXAubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICAgICAgdmFyIGJhZGdlVHlwZSA9IGVwW2ldWydiYWRnZVR5cGUnXSA9PT0gMCA/ICgoZXBbaV1bJ2JhZGdlJ10gIT0gJycpID8gJ/CfkrAnIDogJ/CfhpMnKSA6ICfwn5OiJztcXG4gICAgICAgICAgICAgICAgdmFyIGJhZGdlID0gZXBbaV1bJ2JhZGdlJ10gPyAnWycgKyBlcFtpXVsnYmFkZ2UnXSArICddJyA6ICcnXFxuICAgICAgICAgICAgICAgIGlmIChtb2RlID09ICdYNScpIHtcXG4gICAgICAgICAgICAgICAgICAgIHZhciBwdXJsID0gJ3g1UnVsZTovLycgKyBqeCArICdodHRwczovL3d3dy5iaWxpYmlsaS5jb20vYmFuZ3VtaS9wbGF5L2VwJyArIGVwW2ldWydpZCddICsgJ0AnO1xcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIHB1cmwgPSAnaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL2Jhbmd1bWkvcGxheS9lcCcgKyBlcFtpXVsnaWQnXTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB2YXIgcGljcyA9IChlcFtpXVsnY292ZXInXS5pbmRleE9mKCc6JykgIT0gLTEpID8gZXBbaV1bJ2NvdmVyJ10gOiAnaHR0cHM6JyArIGVwW2ldWydjb3ZlciddO1xcbiAgICAgICAgICAgICAgICB2YXIgdGl0bGVzID0gKGVwW2ldWyd0aXRsZUZvcm1hdCddKSA/IGVwW2ldWyd0aXRsZUZvcm1hdCddIDogZXBbaV1bJ3RpdGxlJ107XFxuICAgICAgICAgICAgICAgIHZhciBkZXNjID0gKGVwW2ldWydsb25nVGl0bGUnXSkgPyBlcFtpXVsnbG9uZ1RpdGxlJ10gOiggZXBbaV1bJ2xvbmdfdGl0bGUnXT9lcFtpXVsnbG9uZ190aXRsZSddOicnKTtcXG4gICAgICAgICAgICAgICAgZXZhbFByaXZhdGVKUyhcXFwiaWZuenFhTnFOUmtONk5xRzBmWng1TWV5NDc3T3NNSk9UYlRkOVNhak1rZkxLOHRJMWxaeit3aWYrOVpJQWRUMk5LWE94TUwzNHRQc0pjYkZnWXEySXdlcVJXbGN0bm5uNDZkSkhHQW9RNlMrVHhzV0paM0VMYlVBRWYxVnYyeG9NcmtsM0tvcVd0bzF1N3U5U1V2TnRqMXV4QzRlbnVaSUUzSU9WSllmdWxyU0l1cW5NRTgraGxWMzhCU3RaQ2tKZjBpVzNIZEYyaXNCSEV4VFpmNGxwQzJLZjR1QXNQZlJxVThOOWpiUDQrcXpQcllyRytZYVd0K2ludzlaYUdOYTYwN0Z1dkxnSCs0dlpibWYvdEduUnphUXZmMHJodlBuZkJlRXlhTUF6bW12QU14NHUwbzQycnhIbU5LU3gvMlZabElxK1JxQ1p4SkozYktjUUg0K0YvZDBHNVltWHlPUFpSTllNN1JvQno4emVRRS9ocUJyVWJyU2RiM1Z3OFNEc0V4VTJoV09Fci8wNTJuNzRTRWRXV2RjMzdrOUJMYVZQSnJkUEZxM3IrWmg4ZjZpV2c2TlhCckIrdFVsR1NWVGpaZnNMRDJyQmZwdVBlUVFXZEFFclFKaElGTTk1UHhoM1M0Qkh0VW9kWjNGMjJtaXRMRWY4NklQbzE4eXJnSE1XVmFRYTR1UUE0Wk1EVDFhaE04NWs2KzdMVG1QdHo2T05BeHZ5SVQ3NXNDeFNjazBYc0xsaEc5Z1Y4clUwZmxEM2UraVdla2prMVh5cm1kY0tmRkhHeXZJZnFXRDZ6TVJBZEZJSXlYeE4zc3RidE5pM2JRTVVaZ2JZbW1yM1FsZTBqQUhvWlJNSGRsMUJyUzFzZG1MZXBXeHlIQzhyNlUzNUhtQlFOSHBkdnppNzdXR0dyNDRRNE1ndjVSWGJKOWVKT0ZHemxoclRzRFF6M3dBU1d6UzdKeEc4Y2s1ZlYwdVRSY2pnSlBGQ0k4NmV4RDY0VDh0bXNrZWtXWE10WlVqbE5JVFA5Uk9QTktHbnd6cmhGVjJSdlZxTkcwRUZJc1cxV3ViYXRhc2lKNmZYbUJURjBndE1tQksxYXMzSkhXUmhLcmdZZ0ZBU2QrRTRLVUF1TVBMdFFiMGZ0bHlRaUFUVnNhUnJGemJrcHVZbE1BczFQOVZpVWovRXhvWHFBTWFROFpKem90c1B2ancrS1BGTWZudzhCOUVRY3ZaN2NBb0tLTzYrbkRTeUhlTTFldy91b1dIMlhKTkdMMVBVYzlzMVRVYmFLdFViUzI2aFdOR01yR3pHMnUxNm9UbERmeHpCN0tMam15SWlDaEI3NDZDTzNUblp6WHA0cyt2MS9yZmdQWXlBU0dqRWpSTjlxTWF6N0lsL21MUGlFVURhanJOK0FVKzZVWmxTVUtaYWFtemovNHRKdGxtcEEzaTE5RDdJc3cxa0R6SHdMc1lmbUhNU2trdi84REpwUDJWRFBHMkZBb1Jaa2xSY2M5ZVVkYXV5TCtRaENSelJBQnF2cHplMklZVVRNTUdrV21XMnpVRnJkN1ZTc3NyeTBqV1ZuUDdDSi83MWtnQjFQWTVZbzgxcWk4aFhXRkcvc2tWaTFZVHBjMFY2NVVnWjZKTElCNktwMk9vczgzb2dpU0ZNREppc1QyT0VDNkdVeGhiVlhicWlLVVZqSmNWbjYvc1FjVHd5KzMyd0tUeldWLzAzaDJSb1dkSjJub2wwdUNNR1k5YURDUFViWldVZWFmTEs4dEkxbFp6K3dpZis5WklBZFQyQUxTWm9waXZNTTRIVk5GM21ZMlhMMUEzamVzSUF0eERSL3ZCOC9BSWwvV0xyR0xia1AyU0p4OEJLbTFoU05vZ1d5ZDR6WjF3YUpxcE5jTGIwbHBmdHpqM0J3MWtneU1ZcFMvbkY1LzRkNTJaTGtHR3phVU1PM0t4aWhQSTB2VjQvNlZlbWZGT0x3elhrUldyeFJ5aEZ4UE1jc0dBNmVBcEhvMWhjMWs5bTFWL0NWdVdXY3lncStSMXB6NGFXb3FKS3B0dlRSdWd2MTRod0pUKzdyd0dXaXRPRlZ1SzNOMTBhclFLVlo2a1Q5VUN2R0s0R1JrdVpqbC9kYkpmNEF4YWM4RmZNK3RPL29LTllCODUwaDZnQ2JUbUwzVFcyRXVGdVNEb1k1cWtNeTIyaTF1MmVLT3l0UjRTUkxGTDRMditwRXFmSGNzb0xtajcveklVcU9OQ2twaFNGTTZkZnlkQ0c5YzRWNUFzb204cU9Cb3V6dGdCektVSFQwbzcwYlEzVVRpdDE3QlpvVmNxY2JlSmV5ZHZXM0hDYVZaeTJ3aHd3TjNiMTZWSGwvL0g0ZzBnaUtmRjU3aEplNHppU1ZuRjJwV3NHclI1ZHpyTzBwZXF3QWdadG9CRG8vbWFMWGhvem1HZllBYzd3eldtYlhRZUp2L1FCcm91MjdPS01GREFYUC9janlFRUJnREhiMXIxVlhNQ2ltVTB3dzJWWDBDajVYVitmMEo1VzU3S1VPU2VDamJ2citWVXhxbzE2eHc5a3I4dG5RMlF6NWtNSXdLa01JUGlPSmhKMkJBcCtKYVhsZ01YSWk2cnp0N0ljWWRieWJvYzdFamR2TStzcTBBNUJnVExZNkVDOUJuZEhlaGh2MGFqOXVOenZvanZrZ3Q4ZDIrNXhNWWJkWEJHWG1keXRoNXBBeW44b0xCQ1dVRGJXZTgwLzk5ZXQxaUgvR0RKRWZvRExEZjlwK2s0KzBRYnVXZEVxdVRPMWpDSkY1MWg3VHhIbC9VWWEvbUp3dWQwL1k4RDRmRVlaWC9WM2hHcE9EOVIyWm1qZzRJcnBQcHdlZmo4dzB3Z2NmeUx6OVpNbXMxUG9NbjBxQ25uTStWdTZuNnN4Q2xQYjh5V3hLa3pNaDBld0U0bkpvY2hXYkRrNXJjZnJFMDJreWtGWEZ0dSt6ajhISmdBSE1iV1Zuam55WEk3NlVncURSZWpBSHlGbVdtVks2V2hHazdtNlpzSnFqSmkyRTUzNGVCMGpBVllmNkpiczdoQXFKUGdFbGVPZUFPVTR6Sk1zQVZyaXN0NjNpUkpNYUVNVGpPNDk4K2FtTU9yNzhXcktEemh3NlJnQitPOVVoTFBLMDQyWUU3TmZ6akNiNzk5ODd1OXdRVjRRY3JodGxLT1hjbDhNYlp0SDBibWJOYkFPdVh1SUY1ZHJKVXJqWVN3VlFCREFhVWFMWWV6ZVN1dnJRd0ZTQ2J3ZVRVSkd6MWo3dUJVcTNtYUI0T2ZLMm43RzJOMWZDSzFlRWF3OTJVbmxWRE8wVGYxTElJMDhIRnRzUkluNlkxcDNzOVYrTEpROWlVZDVaRzBMd1U5MDRFNzVQcHVWTFJPQllIUzRtckIzUnZyTWhBV0M2amR0U1RGa2x1bXYrYzJFSlJyYlVyanI0QStZNDBrQU5OMVV0MXJkdk1iLzBwUk9KWFZzRGZjL0F5TTVuM0NmbHZEVnFTZ1BJOWJsSEZlMW1aNzVDbUlMUzZLemRGMFlsMU1WSGlQVzBqdm9kbnhLWVRwczhoSk4rYUkraDFXUkd6ckpLWkppY0F0TmRzV1ZoTGZyVnhWRVBTZW05akd6c0FhV1BrVkJHUk82alcyU1c3bStiVkR2UlBiVnBiNmdTQkk4b0NVWU9vNy9RMEhhYnFtN1JQTWNzR0E2ZUFwSG8xaGMxazltMVh3NTBJUnZuN1Z5UEorckRCMUdhZEs5cW83SXVEdjF0L1dqejdkdnA0ZDRScHVHdnk0WlFrOVB3VjV0VHRrWDJER0F0UThmYWl2RUlINzBPaGtwdUN0bkhrYm96UUM5QllMeFVkZklMdlA4cUU5N3JaWWsrWGNxYTdodmxCRzZuM0pnNTZzNHJxV2VaTmxCL2NHNTVDU3RSUEVJNlJqckFEcHkvc1luUTRSRU42VWxBeW1TcmVzMllYUkxUYUVjWVdrSlc5ODJDL3NmWXNja2JpemxPc1lzS0FGcDNYc2dEUVJEYWFvK3lITkpBcGVWUksxbTdoMThxL0tiUXhGY3BuRGJHWDJNUnVjVTVQVVBKcGt5dkNsRXZSSzdrMXgybjB6YXpBUTRnWmZEd3NNL2ludk1RVEtlUWV0eklyNi9ad1R6SExCZ09uZ0tSNk5ZWE5aUFp0Vi9xSE01dFlVMWh3UlNyZDg1S0gyTXBkdDdNUHRXZnE0TmRPWVdiTmhQUDh4bEw2TGdIQVdsTXlCRFpzdUd5SHpFOHh5d1lEcDRDa2VqV0Z6V1QyYlZiMldITTFNVlBlTlAySnpXS25VMEhRdWJhby80MVBxSWgrQ1dCUjNIVUZZUnhpcEVCUWJLQS9tQXBCTjFwSEN3QlBNY3NHQTZlQXBIbzFoYzFrOW0xVUNSNjdodjU5ZW00blZQWm1qVTVrMUI5YklkeklsN1dySjFmL1NVbXd2cThqeU1HbThUSlhpS2dGRXk2MjJlbmtUekhMQmdPbmdLUjZOWVhOWlBadFZDcmxSbmdURUpCcVYyaXlzNnF5TFRKMUNwYm41MWNLdGU1OGVOS1JrbENEdVhGYzNHcWxZMENlRzZGM1FNVnVxQk1FTjlwWHNtbndLeHNFNjUvYStlbHFlZkxLeWw3SStPWnYrS0JIbllYNzlXakJiMzJCR2hHWm5kMVFreTJ4SFB2ZjRTeCsvdFlOMnpuY21wUXFTd3hQTWNzR0E2ZUFwSG8xaGMxazltMVZVdVVHeFJPWlMzS0NFOTZuYVVGNzRtUm1yZE8vanB0SUhnTWpDK0c2VjdCeFpUSml0TkVMc3QwRkNKK24rQU1ZVHpITEJnT25nS1I2TllYTlpQWnRWQkNTK0xmWXFyU0JHSGtlWWxhcWdid0lNeEVkMU9WUHlKaHVWeEFVbkR0cktXMENudnVwOHpBM0NVK2lNVGxUUmYyTmZKY3hlajhkaWpZNXkzZjFuUldSRU9wWW1yWVh6dGZzUjhSK1krVGVZeEFldXU3c2d3dWlUQ0dxeGN4cThjWEYyTyt6bGFYZW01SHdITlc5Ry8vM2VudWs2TUsyQnR0Q1FCSHJpcFlvR0ExK3ZVK2RKL0YrTFIxaUJMdDR5L0ZzUHhySlAxeHZ2MDBaRmtYZ2N5R0VpYXVhbUd3WWRsbjMvOCt0RmdYUkk4MnI5Z2NzR1hUeWdJT1RGOXlpRjBnb0NoNE5OeXJhNVNQelN3Z29uM2NzbitOaEFRUkp2U0ZzTFhMSDhGL2ZDU0Nqd2wvcGkyR0dZNG5CVWVrM3dLNmNRR1c2QitvTzNqS1NXOVFFRzAvT2dIVGJ5eGJSOUVzcG9sbU5sQi9HcVNMNEtPTVlhd05DMHZnVlpkSkI1YkhsdXRnam5UdnY3b1l5ZmVhK21JTzFqR2JZK2pVOFZMeDFZWlNIRU5TVGppMjc0UWoyS09yRkV6cFhxaVEySktabG1EaGI5TEo4T3hWTHg4QUhIY1A2bnlXT2hpWWNGdVFNRndmOVVSSUdIcnpyanpwcGY3Z3NLbkpsdFRia2xsMWxzZlVIU2Q1WlNBRjZRRTNiOG9iNXg1SG1aRlVRUmtVOTRQbENIdFc1RUZ3d0hxTHdzMXczR3h6R01odHFmRTh4eXdZRHA0Q2tlaldGeldUMmJWZUU3eU03THhxdzc3MS8zbk5iNzhPdnA0dWJGY2lSdjZCdlhjVjkxWC93bEFiNjZnRHF5eG03QytqRGw4NVBMSndkSVJCa2VxMFVwbUtSdmxqQUdVSW9MUDBvQ25qRnhQVmlucXptQW1QeWx4UmZvdlZaYzVSVEdjemw4dGlDSVFGS2U3aFBuejhQVWVUeEwyR1VTOTc1M3hQMHVnYkpOSDBrdE1GR3FYTFFyTjIwaHl4anlGS05PeTVHUUwxZGwzMlY5NmNqVlFldWwyazVYSVJPUGFXeGw2MGo1WHo2R1BXMHZzQ0lwSyt4aXl5dkxTTlpXYy9zSW4vdldTQUhVOXVTd0JNdlB4Z2oyVFdPRDkxTlpsNUtvSmMrenUzanBWUUJFZ3lIR3h0aTdTejBPeXNVdFpnTEVJVzlhZFNmeWkydy9zcm1UbThIME02S3pHdG5TYzhhMFZWd1QycVFvbm5nU1I1SzZRVDJzRVpKckJzNUI4WkRCa2phZlE0c1JwUkVhT05uSVZ3bEQ5RHBvbHUvUXVrVEpHZmVxbW52bTVQZk54dE5KRkZOV1BPOXk1Y2dTdUN2VVA4KzZBV2FFNWVpbk9JN1VBemxkOEhJUytMVTA3b0xoRHVWSWFzSTdBZ2JmWWNidjh5WkJ5eXZMU05aV2Mvc0luL3ZXU0FIVTlsc1ZWZ09LYVc0STdRQWthU090ZFZQbTZINnd2bHlYRUNBTnZoQ01HZWxGeXl2TFNOWldjL3NJbi92V1NBSFU5dDVYYnFQZkxHNUFBVUV2cmNoUzRXWmhjbGZOMFZxMDAxRUMvK1VBWGFHUzViMGhrSlZPVUN0Q3dzelZ1eUFlVU1zcnkwaldWblA3Q0ovNzFrZ0IxUGJMSzh0STFsWnord2lmKzlaSUFkVDJwbTlLbW0wL053K3FwLzJ0eHBSOGhzV3BtWUVSMml0ZXI1bVJNMnA3a3d6c3h0V2xLYnhBclVRZkJESUdxV2tGeXl2TFNOWldjL3NJbi92V1NBSFU5bk15R0xJSGxCMlFSSVk2RHRBZzRsekxLOHRJMWxaeit3aWYrOVpJQWRUMmdEdmw0Sk4vMTBpcU5nWndBRFd1eFRUTjU2bDB4bnd3bGQzbjdGc0JwY0QrNGwrd2FNOGp1bXhCendtZjUrYmN3dVQ0MElRWHd1eERRNjJDVWhjdjdyY1ZHL0lidWN4eDY4ZmlMOWRQUUhYWlJFaGNkZXgxS01MYytnNEkramN4eXl2TFNOWldjL3NJbi92V1NBSFU5Z1R0Vk9GRjZrd2FubXNHU2RIMmlhR2MxWW41SzdrSDVWWEQ2eXRncTZvM0oxUWs2RDdkYTh0ZEdSWnlsbHFXRHM2VU12c08vUE93NUNjcjc5c0p6aWRiazM1NDJtakxSS3R5aUVleXYxdHM2eWFlcCtDcXEydUVOb3BnMER6eFR6cUgxcjgzSnl1dlFzNHNWWGtyM0NmTEs4dEkxbFp6K3dpZis5WklBZFQyeUFJdU13RHh2SWZVSUc5T1p1RHNJOXFBbkJXMUZpMHVkZmJUOWhnNlU0QjRsbFJ2dUt5UzdaRVJ6RWJlL0pmdjhnTkVkOFRTWUI5KzcydnlwaWwyclRiN3k2V0ZsWlFhMCtmQjQ0VEU2cXp4a3hQb3kxb2N5L1RMdDY4eU1Gbi9WaVc5RDE2UXZSL3I3dUZidHNaT0VRN0x2SDBqTEp0dWozRlR5UVpEUWpCTEt4c2Z2MzE3SjhxZVZsbGQxVCtmSGhhZlZyVUkvS0FyWGdxMkpkTjBVQ1B5MGROcmlzeXNLT011VU1QNEZwWWxJbEN4QXQ5UUZhSWFJb1V0bEFhaVlDcTNRbk0rUll3aC82dEp3M2NTcWhtSFdrOXJCYWo3MU5rQUNVdk9YcjREVVg5QVpXMm00a29pWGQxWEp1RTJLeDd6RWpXMGFtZ2Z6QlpESm8vWUtSK2pTQnZwSThBQlk2MkpOTlVMYTNtdHFXRE8xWGdMMlVsc2RPREpsSXZUVXEzejJsdCtpbnVrTGxsYW1aZWZCK0p2cXNxditOZVliT0p4eEdtdG5QN3E5cFYwclJtZisxTmUrMU8rUjVVc3JhSktYUFV5WVJiMHk3b29Ua0xHMWg0aEdBZ0V0UmpUT2t0a1huRjVCWlRHTTlSeVFSdWF3YzBiQk9tdEhYMWhjVDdydDN0RGtzWEpmZmxQeXlzV3poUFhMTStGZHg1ZENZUnlaekMveGl5WnJkMVJvUFoydSswUXRic0sydWdScHpRNDY5bG5kcEpocndhZXloK29IQlM4Rnl3K3MvWEIzMU1IOUtKQW8wSkVBWVpLMjI1MmlFWUhnbzNYdU4xWjhiOUk1Ym9vUHp2TDAxSWkra0FhaHNzcnkwaldWblA3Q0ovNzFrZ0IxUGFqcnVxWS9iTDZ2MTIwMDJtYTYwU3paaFRueXlRWmRYOU01Mm9DQWtpajIvWU51K0hwWDY3OWRsWlMrV2FodVFFamp2NC9STWFKU2ZTS0REUjZ5bHhOaE1Zd2drekZwV1FUUTBHcUxxZndMSUl6VnMyZ1IzTk9Pd3NsOXlrYUN4aWZFNDVPU0xRYVkrc0VCMjFMWEtmMlJXSXFhYktpN1ZsQld1VnF6Sy9NeGJDbWpLUFdLVUZwSnphODBnTVhVbkY0SW0zeXFFZnQxcmZzS1U3U2c2ZTRoWnF6Um1iUVlkdkU3Y2V6RitmOHhjRDZ5UmNreE9SZEc2clBPQktpRE1mZzYzZUh2WmlVanVsUEU1SXZKRHhvS0JOWHVsMGFnT2UycElJU2Ntc0hLQWdURkZqYnRiQ2ZlMVRqK2l4MkdVVE53ckhVenFZSjNJcXh5SHRPYXIySEYxbUw1Sy91cFNZM3pUMGJLamNId2NzcnkwaldWblA3Q0ovNzFrZ0IxUFpQeGQrelhCaElsaDhwdjR5VXJYYk1nb3NNTmlZREJiVVptR3ZVVkI5WS9VcTVReVlSOGpCYTNUNnFxcWQ5UGNER2pyVEk2WWJoRWE0bXRpdlZGMW4xSjlmVUVjU0hXdms4ZnB5bncrQmtZT2V6aElZd2JoY1hyS0pOM1hqNFhBQS9qdDZIMzI1NEZjNG1Sb3U3ZFlsWXl5dkxTTlpXYy9zSW4vdldTQUhVOWtLQXJVS1ZGMk9tQUVPdFJQVExvVXJMSzh0STFsWnord2lmKzlaSUFkVDJpVlNuMlg2T0s5MFJmRXFqa0MvcklTWXovN3VjcDZhTTNUMTljSnB4RXJITEs4dEkxbFp6K3dpZis5WklBZFQyc01pZHNKNS84K1UrWkxYb29rdFM3L1puYTAyZnZBaEpnbjlnUmpTendDOWRDQnlvVXQ5cFlYUGxOdWRmN2g2QnB6NnF3V3ZNR25yMWZaWWEwN2JmcjhzcnkwaldWblA3Q0ovNzFrZ0IxUGFqdnVjenJRUVUwSTJVQWE4VUpkUHVNakJIelltV09CbWpsOEtoMjMrVDZybHdXUlZnRjQ3SEd5d1ZuVnpwR0NiT2xETDdEdnp6c09RbksrL2JDYzRuSmZqcmd0NkVuUGpYWi9uQ0pNUHZXTTZVTXZzTy9QT3c1Q2NyNzlzSnppZHdaNDVDWE5HeCtTOE9OUnUwY1FZeUU5Y3N6NFYzSGwwSmhISm5NTC9HTEptdDNWR2c5bmE3N1JDMXV3cmE2QkduTkRqcjJXZDJrbUd2QnA3S0g2Z2N3eTdZbU1IQURrc3VtTjVIcmpsVjRNc3J5MGpXVm5QN0NKLzcxa2dCMVBaOTZ2ZUZmNW8wNkhsRmhGa0VialZOYUhoVldnSDRmVE10a3V6NWJEbitBSGduanB3eUcvaElMNTBHSVBYbyt2cllUQWFCeUFCUVdvNVAxcFZ1S0RaY1xcXCIpXFxuICAgICAgICAgICAgICAgIFxcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRpdGxlcyArIGJhZGdlVHlwZSxcXG4gICAgICAgICAgICAgICAgICAgIGltZzogcGljcytSZWZlcmVyLFxcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogYmFkZ2UrZGVzYyxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogbW9kZSA9PSAn55u06ZO+JyA/IHRydWVfdXJsIDogcHVybCArIGxhenksXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzInXFxuICAgICAgICAgICAgICAgIH0pO1xcblxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgcHV0VmFyKCdhaWQnLFN0cmluZyh2LmFpZCkpO1xcbiAgICAgICAgICAgIFxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOm1vZGUgPT0gJ+ebtOmTvicgPyBnZXRIZWFkKCfnm7Tpk74nKSA6ICfnm7Tpk74nLCAvLyfnm7Tpk77mkq3mlL4nLFxcbiAgICAgICAgICAgICAgICB1cmw6ICfnm7Tpk74nK21vZGVfdXJsLC8vbGF6eTEsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICAgICAgICAgIH0pO1xcblxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBtb2RlID09ICd5aGMnID8gZ2V0SGVhZCgn6JCk54Gr6JmrJykgOiAn6JCk54Gr6JmrJyxcXG4gICAgICAgICAgICAgICAgdXJsOiAneWhjJyArIG1vZGVfdXJsLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBpZiAoZ2V0VmFyKCdsaWtlX3R5cGUnKT09PSflvIDlkK8nKXtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+eCuei1nicsXFxuICAgICAgICAgICAgICAgIHVybDogJChsaWtlX3VybCkubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgY29udGVudF90eXBlID0gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD11dGYtOCc7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgbF9ib2R5X3R4dCA9ICdhY2Nlc3Nfa2V5PScgKyBnZXRWYXIoJ2FjY2Vzc19rZXknKSArICcmYWlkPScgKyBnZXRWYXIoJ2FpZCcpICsgJyZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZidWlsZD02MTMwNDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJmxpa2U9MCZtb2JpX2FwcD1hbmRyb2lkJnBsYXRmb3JtPWFuZHJvaWQmc19sb2NhbGU9emhfQ04mc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4xMy4wJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnRzPScgKyB0cyArJyZzaWduPTRhMDg2NDVjMjk5NGViNjkyYWMwY2ZiMGJkNzU2OWM2JztcXG4gICAgICAgICAgICAgICAgICAgIHZhciBsX2NvZGUgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQse1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6eydDb250ZW50LVR5cGUnOmNvbnRlbnRfdHlwZX0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9keTpsX2JvZHlfdHh0LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDonUE9TVCdcXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcXG4gICAgICAgICAgICAgICAgICAgIGxvZyhsX2NvZGUpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovLycrbF9jb2RlLmRhdGEudG9hc3Q7XFxuICAgICAgICAgICAgICAgIH0sICksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn5oqV5biBJyxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKGNvaW5fdXJsKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgdHMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcXG4gICAgICAgICAgICAgICAgICAgIHZhciBjb250ZW50X3R5cGUgPSAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PXV0Zi04JztcXG4gICAgICAgICAgICAgICAgICAgIHZhciBjX2JvZHlfdHh0ID0gJ2FjY2Vzc19rZXk9JyArIGdldFZhcignYWNjZXNzX2tleScpICsgJyZhaWQ9JyArIGdldFZhcignYWlkJykgKyAnJmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmF2dHlwZT0xJmJ1aWxkPTYxMzA0MDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImZnJvbT03JmZyb21fc3BtaWQ9dG0ucmVjb21tZW5kLjAuMCZtb2JpX2FwcD1hbmRyb2lkJm11bHRpcGx5PTEmcGxhdGZvcm09YW5kcm9pZCZzX2xvY2FsZT16aF9DTiZzZWxlY3RfbGlrZT0xJnNwbWlkPW1haW4udWdjLXZpZGVvLWRldGFpbC4wLjAmc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4xMy4wJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnRzPScgKyB0cyArJyZ1cGlkPTAmc2lnbj04YWJiZGRkODdhNmJkODJlMWU0MmNiM2NmZmQzMmJiOSc7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgY19jb2RlID0gSlNPTi5wYXJzZShyZXF1ZXN0KGlucHV0LHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOnsnQ29udGVudC1UeXBlJzpjb250ZW50X3R5cGV9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6Y19ib2R5X3R4dCxcXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6J1BPU1QnXFxuICAgICAgICAgICAgICAgICAgICB9KSk7XFxuICAgICAgICAgICAgICAgICAgICBsb2coY19jb2RlKTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/mipXkuoYx5Liq5biBJztcXG4gICAgICAgICAgICAgICAgfSwgKSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAnJyxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdibGFua19ibG9jaydcXG4gICAgICAgICAgICB9KTtcXG5cXG4gICAgICAgICAgICBcXG4gICAgICAgICAgICBpZiAodi52aWRlb3MgIT0gMSkge1xcbiAgICAgICAgICAgICAgICB2YXIgcnVybCA9IHB1cmwgKyAnP3A9JyArIHBbaV0ucGFnZTtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICB2YXIgcnVybCA9IHB1cmxcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHBhcnQsXFxuICAgICAgICAgICAgICAgIHBpY191cmw6ICdodHRwczovL2dpdGVlLmNvbS9DaGVyaXNoUngvaW1hZ2V3YXJlaG91c2UvcmF3L21hc3Rlci9pbWFnZS8xMzA5NjcyNWZlNTZjZTljZjY0M2EwZTRjZDBjMTU5Yy5naWYnLFxcbiAgICAgICAgICAgICAgICB1cmw6IC8qbW9kZSA9PSAnWDUnID8gJ3g1UnVsZTovLycgKyBqeCArIHJ1cmwgKyAnQCcgKyBsYXp5IDogKCovbW9kZSA9PSAn55u06ZO+JyA/IGxhenkxIDogcnVybCArIGxhenksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiB2LnZpZGVvcyAhPSAxID8gJ3RleHRfY2VudGVyXzEnIDogJ2F2YXRhcidcXG4gICAgICAgICAgICB9KTtcXG5cXG5cXG4gICAgICAgIH1cXG4gICAgfVxcbiAgICBcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXG4gICAgfSk7XFxuICAgIGlmIChnZXRWYXIoJ3JlcGx5X3R5cGUnKT09PSflvIDlkK8nKXtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAnPHN0cm9uZz4nICsgJ+KAnOKAnOivhOiuuuWMuuKAneKAnScgKyAoZ2V0VmFyKCdsYWJlbCcpID09ICfor4TorronID8gJ+KAnOKAnCDiipnigJ3igJ0nIDogJ+KAnOKAnCDiipXigJ3igJ0nKSArICc8L3N0cm9uZz4nLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdsYWJlbCcsIGdldFZhcignbGFiZWwnKT09J+ivhOiuuic/J+WFs+mXrSc6J+ivhOiuuicpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8vJytnZXRWYXIoJ2xhYmVsJywn6K+E6K66JylcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgIH0pO1xcblxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICc8c3Ryb25nPicgKyAn4oCc4oCc5o6o6I2Q5Yy64oCd4oCdJyArIChnZXRWYXIoJ2xhYmVsJykgPT0gJ+aOqOiNkCcgPyAn4oCc4oCcIOKKmeKAneKAnScgOiAn4oCc4oCcIOKKleKAneKAnScpICsgJzwvc3Ryb25nPicsXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ2xhYmVsJywgZ2V0VmFyKCdsYWJlbCcpPT0n5o6o6I2QJz8n5YWz6ZetJzon5o6o6I2QJyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly8nK2dldFZhcignbGFiZWwnLCfmjqjojZAnKVxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgfSk7XFxuXFxuICAgIFxcbiAgICBpZiAoZ2V0VmFyKFxcXCJsYWJlbFxcXCIpID09ICfor4TorronKSB7XFxuICAgICAgICB2YXIgcmVseSA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3YyL3JlcGx5L21haW4/b2lkPScgKyB2LmFpZCArICcmdHlwZT0xJywge30pKTtcXG4gICAgICAgIHZhciBjb3VudHMgPSByZWx5WydkYXRhJ11bJ2N1cnNvciddWydhbGxfY291bnQnXTtcXG4gICAgICAgIHZhciByZXBsaWVzID0gcmVseS5kYXRhLnJlcGxpZXM7XFxuICAgICAgICBmb3IgKHZhciB4IGluIHJlcGxpZXMpIHtcXG4gICAgICAgICAgICB2YXIgcmVwbGllc3ggPSByZXBsaWVzW3hdO1xcbiAgICAgICAgICAgIHZhciBtZXNzYWdlID0gcmVwbGllc1t4XS5jb250ZW50Lm1lc3NhZ2U7XFxuICAgICAgICAgICAgdmFyIG1lbWJlciA9IHJlcGxpZXNbeF0ubWVtYmVyO1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBtZW1iZXIudW5hbWUsXFxuICAgICAgICAgICAgICAgIGltZzogbWVtYmVyLmF2YXRhcixcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdhdmF0YXInXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICc8c21hbGw+PHN0cm9uZz4nICsgbWVzc2FnZSArICc8L3N0cm9uZz48L3NtYWxsPicsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0J1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIHZhciByZXBseSA9IHJlcGxpZXNbeF0ucmVwbGllcztcXG4gICAgICAgICAgICBmb3IgKHZhciB6IGluIHJlcGx5KSB7XFxuICAgICAgICAgICAgICAgIHZhciBtZXNzID0gcmVwbHlbel0uY29udGVudC5tZXNzYWdlO1xcbiAgICAgICAgICAgICAgICB2YXIgbWVtID0gcmVwbHlbel0ubWVtYmVyLnVuYW1lO1xcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICc8c21hbGw+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7JyArIG1lbSArICc6JyArIG1lc3MgKyAnPC9zbWFsbD4nLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdyaWNoX3RleHQnXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgfSBcXG5cXG4gICAgaWYgKGdldFZhcihcXFwibGFiZWxcXFwiKSA9PSAn5o6o6I2QJykge1xcbiAgICAgICAgZm9yICh2YXIgciBpbiByZWxhdGVkKSB7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHJlbGF0ZWRbcl0udGl0bGUsXFxuICAgICAgICAgICAgICAgIGltZzogcmVsYXRlZFtyXS5waWMsXFxuICAgICAgICAgICAgICAgIGRlc2M6IHJlbGF0ZWRbcl0uZGVzYyxcXG4gICAgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9aHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbO+8n++8n2FpZD3vvIbvvIZidmlkPScgKyByZWxhdGVkW3JdLmJ2aWQgKyAnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMidcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG4gICAgfVxcbiAgICB9XFxufSBjYXRjaCAoZSkge31cXG5cXG5yZXMuZGF0YSA9IGQ7XFxuc2V0UmVzdWx0KHJlcyk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLpobXpnaIt5YWz5rOoMVwiLFwicGF0aFwiOlwiZ3oxXCIsXCJydWxlXCI6XCJqczpcXG52YXIgcmVzID0ge307dmFyIGQgPSBbXTtcXG52YXIgaWQgPSBNWV9VUkwuc3BsaXQoJ21pZD0nKVsxXTtcXG52YXIgc3VybCA9IE1ZX1VSTDtcXG52YXIgY29kZSA9IGZldGNoKHN1cmwse30pO1xcbnZhciB5bSA9IEpTT04ucGFyc2UoJ3tcXFwibXknK2NvZGUuc3BsaXQoJ3tcXFwibXknKVsxXS5zcGxpdCgnfX07JylbMF0rJ319Jyk7XFxuXFxudmFyIGVwID0geW1bJ2xpc3QnXVsnZ2V0Rm9sbG93TGlzdC1wYWdlLW1pZC0nK2lkXVsncmVzdWx0J107XFxuZm9yICggeCBpbiBlcCl7XFxuICB2YXIgeXVybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hcmMvc2VhcmNo77yf77yfbWlkPScrZXBbeF0ubWlkKyfvvIbvvIZwcz0zMO+8hu+8hnRpZD0w77yG77yGa2V5d29yZD3vvIbvvIZqc29ucD1qc29ucO+8hu+8hnBuPWZ5cGFnZe+8hu+8hm9yZGVyPXB1YmRhdGUnO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICB0aXRsZTplcFt4XS51bmFtZSxcXG4gICAgICAgaW1nOmVwW3hdLmZhY2UsXFxuICAgICAgIHVybDonaGlrZXI6Ly9wYWdlL2d6Mj91cmw9Jyt5dXJsLFxcbiAgICAgICBjb2xfdHlwZTonaWNvbl9yb3VuZF80J1xcbiAgICAgICB9KTtcXG59XFxucmVzLmRhdGEgPSBkO1xcbnNldFJlc3VsdChyZXMpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6aG16Z2iLeWFs+azqDJcIixcInBhdGhcIjpcImd6MlwiLFwicnVsZVwiOlwianM6XFxudmFyIHJlcyA9IHt9O3ZhciBkID0gW107XFxuY29uc3QgaGVhZENvbG9yPVxcXCIjMzU4Y2NkXFxcIjtcXG52YXIganNvbiA9IHt9O1xcbmV2YWwoJ2pzb249JyArIGZldGNoKE1ZX1VSTCx7fSkpO1xcbmZvciAodmFyIGkgPSAwOyBpIDwganNvbi5kYXRhLmxpc3Qudmxpc3QubGVuZ3RoOyBpKyspXFxue1xcbiB2YXIgciA9IHt9O1xcbiB2YXIgaiA9IGpzb24uZGF0YS5saXN0LnZsaXN0W2ldO1xcbiB2YXIgdCA9IE51bWJlcihqLmNyZWF0ZWQpKjEwMDA7XFxuIFxcbiAvL+aXtumXtOaIs+i9rOaNouaWueazlVxcbiAvKlxcbmZ1bmN0aW9uIGdldExvY2FsVGltZShuUykgeyBcXG4gICAgIHZhciBzc3MgPSBuZXcgRGF0ZShwYXJzZUludChuUykpLnRvTG9jYWxlU3RyaW5nKCkuc3Vic3RyKDAsMTcpO1xcbiAgICAgdmFyIFlNRCA9IHNzcy5zcGxpdCgn5pelJylbMF0ucmVwbGFjZSgn5bm0JywnLScpLnJlcGxhY2UoJ+aciCcsJy0nKTtcXG4gICAgIHJldHVybiAoWU1EKVxcbn1cXG4qL1xcbmZ1bmN0aW9uIGdldExvY2FsVGltZShuUykgeyBcXG52YXIgZGF0ZSA9IG5ldyBEYXRlKG5TKTtcXG52YXIgWVkgPSBkYXRlLmdldEZ1bGxZZWFyKCkrJy0nOyBcXG52YXIgTU0gPSAoZGF0ZS5nZXRNb250aCgpICsgMSA8IDEwID8gJzAnICsgKGRhdGUuZ2V0TW9udGgoKSArIDEpIDogZGF0ZS5nZXRNb250aCgpICsgMSkrJy0nOyBcXG52YXIgREQgPSAoZGF0ZS5nZXREYXRlKCkgPCAxMCA/ICcwJyArIChkYXRlLmdldERhdGUoKSkgOiBkYXRlLmdldERhdGUoKSk7IFxcbnZhciB0aW1lID0gWVkgKyBNTSArIEREO1xcbnJldHVybiB0aW1lXFxufVxcbi8v5pe26Ze05oiz6L2s5o2iXFxudmFyIHRpbWUgPSBnZXRMb2NhbFRpbWUodCk7XFxuXFxuaWYgKGoucGxheT4xMDAwMClcXG4gICAgdmFyIHBsYXkgPSAoai5wbGF5LzEwMDAwKS50b0ZpeGVkKDEpKyfkuIcnO1xcbmVsc2VcXG4gICAgdmFyIHBsYXkgPSBqLnBsYXk7XFxuXFxudmFyIHBpY3MgPSAoai5waWMuaW5kZXhPZignOicpIT0tMSk/ai5waWM6J2h0dHBzOicgKyBqLnBpYztcXG5cXG4gaWYgKGoubGVuZ3RoIT1cXFwiMDA6MDBcXFwiKXtcXG4gICAgZC5wdXNoKHtcXG4gICAgIHBpY191cmwgOiBwaWNzLFxcbiAgICAgdXJsIDogJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWzvvJ/vvJ9haWQ977yG77yGYnZpZD0nICsgai5idmlkKycjaW1tZXJzaXZlVGhlbWUjJyxcXG4gICAgIHRpdGxlIDogai50aXRsZSxcXG4gICAgIGNvbF90eXBlIDogJ21vdmllXzFfbGVmdF9waWMnLFxcbiAgICAgZGVzYyA6ICfml7bplb/vvJonICsgai5sZW5ndGggKyAnICDmkq3mlL7ph4/vvJonICsgcGxheSArICcgIOaXpeacn++8micgKyB0aW1lXFxuICAgIFxcbiAgICB9KTtcXG59XFxufVxcbnJlcy5kYXRhID0gZDtcXG5zZXRSZXN1bHQocmVzKVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Luj56CB5Z2XLeaQnOe0ouS4gOe6p1wiLFwicGF0aFwiOlwic1wiLFwicnVsZVwiOlwidHJ5e1xcbnZhciByZXMgPSB7fTt2YXIgZCA9IFtdO1xcbnZhciBjb2RlID0gZ2V0UmVzQ29kZSgpO1xcbnZhciB4cz1KU09OLnBhcnNlKGNvZGUuc3BsaXQoJ3ZpZGVvXFxcIixcXFwiZGF0YVxcXCI6JylbMV0uc3BsaXQoJ31dJylbMF0rJ31dJyk7XFxuLy9pZihNWV9VUkwuc3BsaXQoJ3BhZ2U9JylbMV09PScxJnBhZ2VzaXplPTIwJyl7XFxudmFyIHBhZ2UgPSBNWV9VUkwuc3BsaXQoJ3BhZ2U9JylbMV0uc3BsaXQoJyZwYWdlc2l6ZT0nKVswXTtcXG4gIHRyeXtcXG4gIHZhciB3PVxcbkpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvc2VhcmNoL3R5cGU/a2V5d29yZD0nK01ZX1VSTC5zcGxpdCgna2V5d29yZD0nKVsxXS5zcGxpdCgnJicpWzBdKycmcGFnZT0nK3BhZ2UrJyZzZWFyY2hfdHlwZT1iaWxpX3VzZXImb3JkZXI9dG90YWxyYW5rJnBhZ2VzaXplPTIwJyx7fSkpLmRhdGEucmVzdWx0O1xcbiAgICBmb3IoaWk9MDtpaTx3Lmxlbmd0aCYmaWk8MjtpaSsrKXtcXG4gICAgICBkLnB1c2goe1xcbiAgICAgIHRpdGxlOid1cO+8micrd1tpaV0udW5hbWUsXFxuICAgICAgaW1nOidodHRwczonK3dbaWldLnVwaWMsXFxuICAgICAgZGVzYzon5YWz5rOo77yaJyt3W2lpXS5mYW5zLFxcbiAgICAgIGNvbnRlbnQ6J+inhumikeaVsO+8micrd1tpaV0udmlkZW9zLFxcbiAgICAgIHVybDpcXG4naGlrZXI6Ly9wYWdlL3NzP3VybD1odHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hcmMvc2VhcmNo77yf77yfbWlkPScrd1tpaV0ubWlkKyfvvIbvvIZwcz0zMO+8hu+8hnRpZD0w77yG77yGa2V5d29yZD3vvIbvvIZqc29ucD1qc29ucO+8hu+8hnBuPWZ5cGFnZe+8hu+8hm9yZGVyPXB1YmRhdGUjJyt3W2lpXS51bmFtZSsnIycsXFxuICAgICAgICAgfSk7XFxuICAgIH1cXG4gIH1jYXRjaChlKXtcXG4gICAgICBkLnB1c2goe1xcbiAgICAgIHRpdGxlOifigJjigJjmib7kuI3liLDkvaDmg7PopoHnmoTllYrvvIzopoHkuI3mjaLkuKrlhbPplK7or43vvJ/igJnigJknLFxcbiAgICAgIGNvbF90eXBlOid0ZXh0X2NlbnRlcl8xJ1xcbiAgICAgIH0pO1xcbiAgfVxcbnZhciBmYW4gPSBKU09OLnBhcnNlKGNvZGUuc3BsaXQoJ21lZGlhX2Jhbmd1bWlcXFwiLFxcXCJkYXRhXFxcIjonKVsxXS5zcGxpdCgnfSx7XFxcInJlc3VsdF90eXBlJylbMF0pO1xcbiAgIGZvciAoIHggaW4gZmFuKXtcXG4gICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgIHRpdGxlOmZhblt4XS50aXRsZS5yZXBsYWNlKC88ZW0gY2xhc3M9XFxcImtleXdvcmRcXFwiPnw8XFxcXC9lbT4vZywnJyksXFxuICAgICAgICAgICBpbWc6ZmFuW3hdLmNvdmVyLFxcbiAgICAgICAgICAgZGVzYzpmYW5beF0uZGVzYyxcXG4gICAgICAgICAgIGNvbnRlbnQ6ZmFuW3hdLmN2LnJlcGxhY2UoLzxlbSBjbGFzcz1cXFwia2V5d29yZFxcXCI+fDxcXFxcL2VtPi9nLCcnKSxcXG4gICAgICAgICAgIHVybDonaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9JytmYW5beF0uZ290b191cmwrJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgICAgICAgY29sX3R5cGU6J21vdmllXzFfbGVmdF9waWMnXFxuICAgICAgICAgICB9KTtcXG4gICB9XFxudmFyIGZhbjIgPSBKU09OLnBhcnNlKGNvZGUuc3BsaXQoJ21lZGlhX2Z0XFxcIixcXFwiZGF0YVxcXCI6JylbMV0uc3BsaXQoJ30se1xcXCJyZXN1bHRfdHlwZScpWzBdKTtcXG4gICBmb3IgKCB4IGluIGZhbjIpe1xcbiAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgdGl0bGU6ZmFuMlt4XS50aXRsZS5yZXBsYWNlKC88ZW0gY2xhc3M9XFxcImtleXdvcmRcXFwiPnw8XFxcXC9lbT4vZywnJyksXFxuICAgICAgICAgICBpbWc6ZmFuMlt4XS5jb3ZlcixcXG4gICAgICAgICAgIGRlc2M6ZmFuMlt4XS5kZXNjLFxcbiAgICAgICAgICAgY29udGVudDpmYW4yW3hdLmN2LnJlcGxhY2UoLzxlbSBjbGFzcz1cXFwia2V5d29yZFxcXCI+fDxcXFxcL2VtPi9nLCcnKSxcXG4gICAgICAgICAgIHVybDonaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9JytmYW4yW3hdLmdvdG9fdXJsKycjaW1tZXJzaXZlVGhlbWUjJyxcXG4gICAgICAgICAgIGNvbF90eXBlOidtb3ZpZV8xX2xlZnRfcGljJ1xcbiAgICAgICAgICAgfSk7XFxuICAgfVxcbi8vfVxcblxcbiBmb3IgKCB4IGluIHhzKXtcXG4gICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgIHRpdGxlOnhzW3hdLnRpdGxlLnJlcGxhY2UoLzxlbSBjbGFzcz1cXFwia2V5d29yZFxcXCI+fDxcXFxcL2VtPi9nLCcnKSxcXG4gICAgICAgICAgIGltZzonaHR0cDonK3hzW3hdLnBpYyxcXG4gICAgICAgICAgIGRlc2M6eHNbeF0uZGVzY3JpcHRpb24sXFxuICAgICAgICAgICBjb250ZW50OnhzW3hdLmF1dGhvcixcXG4gICAgICAgICAgIHVybDonaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9aHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbO+8n++8n2FpZD3vvIbvvIZidmlkPScreHNbeF0uYnZpZCsnI2ltbWVyc2l2ZVRoZW1lIycsXFxuY29sX3R5cGU6J21vdmllXzFfbGVmdF9waWMnXFxuICAgICAgICAgICB9KTtcXG4gICAgfVxcblxcbnJlcy5kYXRhID0gZDtcXG5zZXRSZXN1bHQocmVzKTt9Y2F0Y2goZSl7XFxudmFyIHJlcyA9IHt9O3ZhciBkID0gW107XFxudmFyIGtleXdvcmQgPSBNWV9VUkwuc3BsaXQoJ2tleXdvcmQ9JylbMV0uc3BsaXQoJyZwYWdlPScpWzBdO1xcbnZhciB1cmwgPSAnaHR0cHM6Ly9hcHAuYmlsaWJpbGkuY29tL3gvdjIvc2VhcmNoL3R5cGU/YXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYnVpbGQ9NjI3MDIwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPXhpYW9taSZoaWdobGlnaHQ9MSZrZXl3b3JkPScra2V5d29yZCsnJm1vYmlfYXBwPWFuZHJvaWQmb3JkZXI9dG90YWxyYW5rJnBsYXRmb3JtPWFuZHJvaWQmcG49MSZwcz0yMCZzX2xvY2FsZT16aF9DTiZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjI3LjAlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0QmdHM9MTYyMzA3NjE0MCZ0eXBlPTImdXNlcl90eXBlPTAmc2lnbj01MDY2MjE2ZmViYjI4YTYxOTgxMmU4OGU1ZmYxYTAzNCc7XFxudmFyIGNvZGUgPSBKU09OLnBhcnNlKHJlcXVlc3QodXJsLHt9KSk7XFxudmFyIGxpc3QgPSBjb2RlLmRhdGEuaXRlbXM7XFxuZm9yIChsZXQgeCBvZiBsaXN0KXtcXG5kLnB1c2goe1xcbiAgICB0aXRsZTp4LnRpdGxlLFxcbiAgICBpbWc6eC5jb3ZlcixcXG4gICAgZGVzYzp4LnNpZ24sXFxuICAgIHVybDpcXG4naGlrZXI6Ly9wYWdlL3NzP3VybD1odHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hcmMvc2VhcmNoP21pZD0nK3gucGFyYW0rJ++8hu+8hnBzPTMw77yG77yGdGlkPTDvvIbvvIZrZXl3b3JkPe+8hu+8hmpzb25wPWpzb25w77yG77yGcG49ZnlwYWdl77yG77yGb3JkZXI9cHViZGF0ZSMnK3gudGl0bGUrJyMnK2dldFZhcigndWEnKSxcXG4gICAgY29sX3R5cGU6J21vdmllXzFfbGVmdF9waWMnfSk7XFxufVxcbnNldFJlc3VsdChkKTt9XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8xX3ZlcnRpY2FsX3BpY1wiLFwibmFtZVwiOlwi6aG16Z2iLeaQnOe0ouS6jOe6p1wiLFwicGF0aFwiOlwic3NcIixcInJ1bGVcIjpcImpzOlxcbnZhciBqc29uID0ge307XFxuZXZhbCgnanNvbj0nICsgZ2V0UmVzQ29kZSgpKTtcXG52YXIgcmVzID0ge307XFxudmFyIGQgPSBbXTtcXG5pZiAoTVlfVVJMLmluZGV4T2YoJ3BuPTEmJykhPS0xKXtcXG5kLnB1c2goe1xcbnRpdGxlOifigJzigJzlhbPms6jigJ3igJ0nLFxcbnVybDonaGlrZXI6Ly9lbXB0eSMnK01ZX1VSTC5zcGxpdCgnIycpWzFdKycmJicrTVlfVVJMLnNwbGl0KCdtaWQ9JylbMV0uc3BsaXQoJyYnKVswXStgQGxhenlSdWxlPS5qczppbnB1dD1pbnB1dC5zcGxpdCgnIycpWzFdO3ZhciBwaWMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hY2MvaW5mbz9taWQ9JytpbnB1dC5zcGxpdChcXFwiJiZcXFwiKVsxXSsnJmpzb25wPWpzb25wJyx7fSkpLmRhdGEuZmFjZTtpZighZ2V0VmFyKCdsYjInKS5pbmNsdWRlcyhpbnB1dC5zcGxpdCgnJiYnKVsxXS5zcGxpdCgnJiYnKVswXSkpe3ZhciB4cj1nZXRWYXIoJ2xiMicpKydcXFxcXFxcXG4nK2lucHV0KycjIycrcGljO3dyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9qcy91cC5qc1xcXCIseHIpOyd0b2FzdDovL+WFs+azqOaIkOWKnyd9ZWxzZXsndG9hc3Q6Ly/lubTovbvkurrvvIzogJflrZDlsL7msYEnfWAsXFxuY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbn0pO1xcbn1cXG5cXG5mb3IgKHZhciBpID0gMDsgaSA8IGpzb24uZGF0YS5saXN0LnZsaXN0Lmxlbmd0aDsgaSsrKVxcbntcXG4gdmFyIHIgPSB7fTtcXG4gdmFyIGogPSBqc29uLmRhdGEubGlzdC52bGlzdFtpXTtcXG4gdmFyIHQgPSBOdW1iZXIoai5jcmVhdGVkKSoxMDAwO1xcbiBcXG4gLy/ml7bpl7TmiLPovazmjaLmlrnms5VcXG5mdW5jdGlvbiBnZXRMb2NhbFRpbWUoblMpIHsgXFxuICAgICB2YXIgc3NzID0gbmV3IERhdGUocGFyc2VJbnQoblMpKS50b0xvY2FsZVN0cmluZygpLnN1YnN0cigwLDE3KTtcXG4gICAgIHZhciBZTUQgPSBzc3Muc3BsaXQoJ+aXpScpWzBdLnJlcGxhY2UoJ+W5tCcsJy0nKS5yZXBsYWNlKCfmnIgnLCctJyk7XFxuICAgICByZXR1cm4gKFlNRClcXG59XFxuXFxuLy/ml7bpl7TmiLPovazmjaJcXG52YXIgdGltZSA9IGdldExvY2FsVGltZSh0KTtcXG5cXG5pZiAoai5wbGF5PjEwMDAwKVxcbiAgICB2YXIgcGxheSA9IChqLnBsYXkvMTAwMDApLnRvRml4ZWQoMSkrJ+S4hyc7XFxuZWxzZVxcbiAgICB2YXIgcGxheSA9IGoucGxheTtcXG5cXG52YXIgcGljcyA9IChqLnBpYy5pbmRleE9mKCc6JykhPS0xKT9qLnBpYzonaHR0cHM6JyArIGoucGljO1xcblxcbiByLnBpY191cmwgPSBwaWNzO1xcbiByLnVybCA9ICdoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD1odHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWls77yf77yfYWlkPe+8hu+8hmJ2aWQ9JytqLmJ2aWQrJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgICBcXG5cXG4gci50aXRsZSA9IGoudGl0bGU7XFxuIHIuZGVzYyA9ICfml7bplb/vvJonICsgai5sZW5ndGggKyAnICDmkq3mlL7ph4/vvJonICsgcGxheSArICcgIOaXpeacn++8micgKyB0aW1lO1xcbiBpZiAoai5sZW5ndGghPVxcXCIwMDowMFxcXCIpe2QucHVzaChyKX07XFxufVxcbnJlcy5kYXRhID0gZDtcXG5zZXRSZXN1bHQocmVzKVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Luj56CBLemihOWkhOeQhlwiLFwicGF0aFwiOlwieWNsXCIsXCJydWxlXCI6XCJwdXRWYXIyKCd1YScsJztnZXQ7dXRmLTg7e1VzZXItQWdlbnRATW96aWxsYS81LjAgKExpbnV477yb77ybIEFuZHJvaWQgNy4w77yb77ybIHd2IGxpdGUgYmFpZHVib3hhcHApIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vNC4wIENocm9tZS83OC4wLjM5MDQuOTYgTW9iaWxlIFNhZmFyaS81MzcuMzYgVDcvMTAuMyBTZWFyY2hDcmFmdC8yLjYuMiAoQmFpZHXvvJvvvJsgUDEgNy4wKX0nKTtcXG5cXG5wdXRWYXIoJ2tleScsZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9rZXkudHh0JykpO1xcblxcbnB1dFZhcignWDUnLFxcXCJAbGF6eVJ1bGU9LmpzOnZhciBqeCA9IGZldGNoKCdoaWtlcjovL2ZpbGVzL2JpbGkvdXBfanhjYWNoZS50eHQnLHt9KTtyZWZyZXNoWDVXZWJWaWV3KGp4K2lucHV0KTsndG9hc3Q6Ly/mkq3mlL7kuK0nXFxcIik7XFxuXFxuaWYgKCFmZXRjaCgnaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHQnKSkge1xcbiAgIHdyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHQnLCdVUOS4uycpO1xcbiAgIH1cXG5cXG5pZiAoIWZldGNoKCdoaWtlcjovL2ZpbGVzL2JpbGkv5pS26JePLnR4dCcpKSB7XFxuICAgd3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5pS26JePLnR4dCcsJ+inhumikScpO1xcbiAgIH1cXG5cXG5pZiAoZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvanMvdXAuanNcXFwiLCB7fSk9PScnKXtcXG4gICAgaWYgKGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXAudHh0XFxcIiwge30pIT0nJyl7XFxuICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9qcy91cC5qc1xcXCIsZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cC50eHRcXFwiLCB7fSkpO1xcbiAgICB9XFxuICAgIGVsc2V7XFxuICAgICAgdmFyIHBpYyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FjYy9pbmZvP21pZD0xMDMyNTY4ODAmanNvbnA9anNvbnAnLHt9KSkuZGF0YS5mYWNlO1xcbiAgICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9qcy91cC5qc1xcXCIsIFxcXCLljJfln44mJjEwMzI1Njg4MCMjXFxcIitwaWMpO1xcbiAgICAgIH1cXG59XFxuXFxuaWYgKCFmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwX2NhY2hlLnR4dFxcXCIsIHt9KSkge1xcbiAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBfY2FjaGUudHh0XFxcIiwgXFxcIjEwMzI1Njg4MFxcXCIpO1xcbn1cXG5cXG5wdXRWYXIyKCdsYjInLGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2pzL3VwLmpzXFxcIix7fSkpO1xcblxcbnB1dFZhcihcXFwi6Kej5p6Q5Y+jXFxcIixgaGlrZXI6Ly9lbXB0eSNub0hpc3RvcnkjQHJ1bGU9anM6dmFyIGQgPSBbXTtkLnB1c2goe2Rlc2M6ICcyMDAnLHVybDogJ2ZpbGU6Ly8vc3RvcmFnZS9lbXVsYXRlZC8wL0FuZHJvaWQvZGF0YS9jb20uZXhhbXBsZS5oaWtlcnZpZXcvZmlsZXMvRG9jdW1lbnRzL2JpbGkvdXBqeC5odG1sJyxjb2xfdHlwZTogJ3g1X3dlYnZpZXdfc2luZ2xlJ30pO3ZhciB0aXRsZXMgPSBmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwangudHh0XFxcIiwge30pLnNwbGl0KC9cXFxcXFxcXG4vKTtmb3IodmFyIGkgPSAwOyBpIDwgdGl0bGVzLmxlbmd0aDsgaSsrKXt2YXIgdCA9IHRpdGxlc1tpXS5zcGxpdChcXFwiJiZcXFwiKTtkLnB1c2goe3RpdGxlOmZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBfanhjYWNoZS50eHRcXFwiLHt9KSA9PSB0WzFdID8gdFswXSArIFxcXCLigJjigJjvvIjlvZPliY3vvInigJnigJlcXFwiIDogdFswXSxkZXNjOnRbMV0sdXJsOnRbMV0gKyAnQGxhenlSdWxlPS5qczpwdXRWYXIyKFxcXCJ1aWRcXFwiLGlucHV0KTt3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cF9qeGNhY2hlLnR4dFxcXCIsaW5wdXQpO2JhY2soKTtcXFwidG9hc3Q6Ly/kv67mlLnmiJDlip9cXFwiJyxjb2xfdHlwZTogJ3RleHRfMSd9KTt9c2V0UmVzdWx0KGQpO2ApO1xcblxcbmlmICghZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cGp4LnR4dFxcXCIsIHt9KSkge1xcbiAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBqeC50eHRcXFwiLCBcXFwi5YWo572RVklQJiZodHRwczovL2p4eC5zbXlzOC5jbi9pbmRleC5waHA/dXJsPVxcXFxu5Yqg6YCfJiZodHRwczovL3d3dy5jdWFuLmxhL20zdTgucGhwP3VybD1cXFwiKTtcXG59XFxuXFxuXFxubGV0IGxvY2FsSHRtbDIgPSBmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwanguaHRtbFxcXCIsIHt9KTtcXG5sZXQgZ2l0SHRtbDIgPSBmZXRjaChcXFwiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L2doL1pydWlyeS9oaWtlcnZpZXcvaHRtbC9qaWV4aS5odG1sXFxcIiwge30pLnJlcGxhY2UoL2ppZXhpXFxcXC9qaWV4aS9nLFxcXCJiaWxpL3VwanhcXFwiKTtcXG5pZiAoIWxvY2FsSHRtbDIpIHtcXG4gIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwanguaHRtbFxcXCIsIGdpdEh0bWwyKTtcXG4gIHZhciB0aXRsZXMgPSBmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwangudHh0XFxcIiwge30pO1xcbiAgdmFyIHQgPSB0aXRsZXMuc3BsaXQoXFxcIiYmXFxcIilbMV07XFxuICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cF9qeGNhY2hlLnR4dFxcXCIsdCk7XFxufVxcblwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Luj56CBLeaOqOiNkFwiLFwicGF0aFwiOlwiZmVlZFwiLFwicnVsZVwiOlwidmFyIHVybCA9ICdodHRwczovL2FwcC5iaWxpYmlsaS5jb20veC9pbnRsL2ZlZWQvaW5kZXg/YWNjZXNzX2tleT0nK2dldFZhcihcXFwiYWNjZXNzX2tleVxcXCIpKycmYXV0b3BsYXlfY2FyZD0yJmJ1aWxkPTYyMjUzMDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImY29sdW1uPTImZGV2aWNlX25hbWU9JmRldmljZV90eXBlPTAmZmx1c2g9OCZmbnZhbD00NjQmZm52ZXI9MCZmb3JjZV9ob3N0PTAmZm91cms9MSZndWlkYW5jZT0wJmh0dHBzX3VybF9yZXE9MCZtb2JpX2FwcD1hbmRyb2lkJm5ldHdvcms9d2lmaSZwbGF0Zm9ybT1hbmRyb2lkJnBsYXllcl9uZXQ9MSZwdWxsPWZhbHNlJnFuPTgwJnNfbG9jYWxlPXpoX0NOJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMjIuNSUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCc7XFxudmFyIGxpc3QgPSBKU09OLnBhcnNlKHJlcXVlc3QodXJsLHt9KSkuZGF0YS5pdGVtcztcXG5mb3IgKGxldCB4IG9mIGxpc3Qpe1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOngudGl0bGUsXFxuICAgIGRlc2M6eC5jb3Zlcl9sZWZ0XzFfY29udGVudF9kZXNjcmlwdGlvbitcXFwiIFxcXCIreC5jb3Zlcl9sZWZ0XzJfY29udGVudF9kZXNjcmlwdGlvbitcXFwiICBcXFwiK3guY292ZXJfcmlnaHRfdGV4dCxcXG4gICAgcGljOnguY292ZXIrXFxcIkBSZWZlcmVyPWh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS9cXFwiLFxcbiAgICB1cmw6XFxcImhpa2VyOi8vcGFnZS9kZXRhaWw/cnVsZT3lk5Tlk6nihJsmdXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWzvvJ/vvJ9haWQ9XFxcIit4LnBhcmFtK1xcXCLvvIbvvIZidmlkPVxcXCIrJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICBjb2xfdHlwZTonbW92aWVfMidcXG4gICAgfSk7XFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Luj56CBLeabtOWkmlwiLFwicGF0aFwiOlwibW9yZVwiLFwicnVsZVwiOlwiaWYgKE1ZX1VSTC5zcGxpdCgnIycpWzFdPT0nMScpIHtcXG5cXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiByeCA9PSAn5o6o6I2QJyA/IGdldEhlYWQocngpIDogJ+aOqOiNkCcsXFxuICAgICAgICB1cmw6ICfmjqjojZAnICsgd3IsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogcnggPT0gJ+aXtuWFieacuicgPyBnZXRIZWFkKHJ4KSA6ICfml7blhYnwn5ClJyxcXG4gICAgICAgIHVybDogJ+aXtuWFieacuicgKyB3cixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn6L+955WqJyxcXG4gICAgICAgIHVybDogJ2hpa2VyOi8vY29sbGVjdGlvbj9ncm91cD3ikaDov73nlaonLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IGdldFZhcignWVMnKSA9PSAn6ZqP5py6JyA/IGdldEhlYWQoJ+maj+acuicpIDogZ2V0SGVhZCgn6aqa57KJJyksXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ1lTJywgZ2V0VmFyKCdZUycpPT0n6ZqP5py6Jz8n6aqa57KJJzon6ZqP5py6Jyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/popzoibItLScrZ2V0VmFyKCdZUycsJ+maj+acuicpXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiByeCA9PSAn57Si5byVJyA/IGdldEhlYWQocngpIDogJ+e0ouW8lScsXFxuICAgICAgICB1cmw6ICfntKLlvJUnICsgd3IsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfMydcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogcnggPT0gJ+aUtuiXjycgPyBnZXRIZWFkKHJ4KSA6ICfmlLbol48nLFxcbiAgICAgICAgdXJsOiAn5pS26JePJyArIHdyLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzMnXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfnmbvlvZUnLFxcbiAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL3B3ZC1sb2dpbicsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfMydcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+iHquWumlVJRCcsXFxuICAgICAgICB1cmw6IGBpbnB1dDovL3tcXFwidmFsdWVcXFwiOlxcXCJcXFwiLCBcXFwianNcXFwiOiBcXFwid3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc3RhcmlkLnR4dCcsaW5wdXQpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHQnLCdVUOS4uycpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5L2g6L6T5YWl55qE5pivJytpbnB1dFxcXCIsIFxcXCJoaW50XFxcIjogXFxcIuivt+WcqOS4i+aWuei+k+WFpVVJRFxcXFxu5LiN55+l6YGT5oCO5LmI5p+l77yfYuermeeCueW8gOiHquW3seeahOS/oeaBr++8jOmVv+aMiXVpZOWNs+WPr++8jOivt+Whq+WFpee6r+aVsOWtl1xcXCJ9YCxcXG4gICAgICAgIGRlc2M6ICfigJjigJjlt7LovpPlhaU6IOKAmeKAmScrZ2V0SGVhZChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3N0YXJpZC50eHQnKSksXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfMSdcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+eCuei1nmtleScsXFxuICAgICAgICB1cmw6IGBpbnB1dDovL3tcXFwidmFsdWVcXFwiOlxcXCJcXFwiLCBcXFwianNcXFwiOiBcXFwid3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvYWNjZXNzX2tleS50eHQnLGlucHV0KTt3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0JywnVVDkuLsnKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+S9oOi+k+WFpeeahOaYrycraW5wdXRcXFwiLCBcXFwiaGludFxcXCI6IFxcXCLor7flnKjkuIvmlrnovpPlhaVrZXko55So5LqO54K56LWe5oqV5biBKVxcXFxu5LiN55+l6YGT5oCO5LmI5oqT77yf6YKj5bCx566X5LqGXFxcIn1gLFxcbiAgICAgICAgZGVzYzogJ+KAmOKAmOW3sui+k+WFpTog4oCZ4oCZJytnZXRIZWFkKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvYWNjZXNzX2tleS50eHQnKSksXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfMSdcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+ino+aekGtleScsXFxuICAgICAgICB1cmw6IGBpbnB1dDovL3tcXFwidmFsdWVcXFwiOlxcXCJcXFwiLCBcXFwianNcXFwiOiBcXFwid3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkva2V5LnR4dCcsaW5wdXQpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHQnLCdVUOS4uycpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5L2g6L6T5YWl55qE5pivJytpbnB1dFxcXCIsIFxcXCJoaW50XFxcIjogXFxcIuivt+WcqOS4i+aWuei+k+WFpWtleSjnlKjkuo7op6PmnpApXFxcXG7kuI3nn6XpgZPmgI7kuYjmipPvvJ/pgqPlsLHnrpfkuoZcXFwifWAsXFxuICAgICAgICBkZXNjOiAn4oCY4oCY5bey6L6T5YWlOiDigJnigJknK2dldEhlYWQoZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9rZXkudHh0JykpLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgY29sX3R5cGU6ICdibGFua19ibG9jaydcXG4gICAgfSk7XFxuXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTon6K+E6K665Yy6OiDigJzigJzlt7InKyBnZXRWYXIoJ3JlcGx5X3R5cGUnKSxcXG4gICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcigncmVwbHlfdHlwZScsIGdldFZhcigncmVwbHlfdHlwZScpPT0n5YWz6ZetJz8n5byA5ZCvJzon5YWz6ZetJyk7cmVmcmVzaFBhZ2UoKTt3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zZXR0aW5nLnR4dCcsZ2V0VmFyKCdyZXBseV90eXBlJykrJywnK2dldFZhcignbGlrZV90eXBlJykpOyd0b2FzdDovL+W3sicrZ2V0VmFyKCdyZXBseV90eXBlJyk7XFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn54K56LWeJuaKleW4gTog4oCc4oCc5beyJytnZXRWYXIoJ2xpa2VfdHlwZScpLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdsaWtlX3R5cGUnLCBnZXRWYXIoJ2xpa2VfdHlwZScpPT0n5YWz6ZetJz8n5byA5ZCvJzon5YWz6ZetJyk7cmVmcmVzaFBhZ2UoKTt3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zZXR0aW5nLnR4dCcsZ2V0VmFyKCdyZXBseV90eXBlJykrJywnK2dldFZhcignbGlrZV90eXBlJykpOyd0b2FzdDovL+W3sicrZ2V0VmFyKCdsaWtlX3R5cGUnKTtcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgIH0pO1xcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS7o+eggS3mlrDnlapcIixcInBhdGhcIjpcIm5ld2JnbVwiLFwicnVsZVwiOlwiaWYgKE1ZX1VSTC5zcGxpdCgnIycpWzFdPT0nMScpIHtcXG5cXG4gICAgbGV0IHVybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20vcGdjL2FwcC90aW1lbGluZT9hY2Nlc3Nfa2V5PSZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZidWlsZD02MTMwNDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJmZpbHRlcl90eXBlPTAmbW9iaV9hcHA9YW5kcm9pZCZuaWdodF9tb2RlPTAmcGxhdGZvcm09YW5kcm9pZCZzX2xvY2FsZT16aF9DTiZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjEzLjAlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0QmdHM9MTYzNTk1Mjg0MCZzaWduPTZlNGRmNDU0MmQzOGVlZTJmYWJmMjEyODg1YjkwYzY0JztcXG4gICAgdHJ5IHtcXG4gICAgICAgIHZhciBzb3VyY2VfY29kZSA9IEpTT04ucGFyc2UocmVxdWVzdCh1cmwsIHt9KSk7XFxuICAgICAgICB2YXIgZGF0ZWxpbmUgPSBbe1xcbiAgICAgICAgICAgIFxcXCJjb2RlXFxcIjogc291cmNlX2NvZGUucmVzdWx0LmRhdGFbNF0sXFxuICAgICAgICAgICAgXFxcIm5hbWVcXFwiOiBcXFwi5YmN5pelXFxcIixcXG4gICAgICAgICAgICBcXFwiaWRcXFwiOiBcXFwiMFxcXCJcXG4gICAgICAgIH0se1xcbiAgICAgICAgICAgIFxcXCJjb2RlXFxcIjogc291cmNlX2NvZGUucmVzdWx0LmRhdGFbNV0sXFxuICAgICAgICAgICAgXFxcIm5hbWVcXFwiOiBcXFwi5pio5pelXFxcIixcXG4gICAgICAgICAgICBcXFwiaWRcXFwiOiBcXFwiMVxcXCJcXG4gICAgICAgIH0sIHtcXG4gICAgICAgICAgICBcXFwiY29kZVxcXCI6IHNvdXJjZV9jb2RlLnJlc3VsdC5kYXRhWzZdLFxcbiAgICAgICAgICAgIFxcXCJuYW1lXFxcIjogXFxcIuS7iuaXpVxcXCIsXFxuICAgICAgICAgICAgXFxcImlkXFxcIjogXFxcIjJcXFwiXFxuICAgICAgICB9LCB7XFxuICAgICAgICAgICAgXFxcImNvZGVcXFwiOiBzb3VyY2VfY29kZS5yZXN1bHQuZGF0YVs3XSxcXG4gICAgICAgICAgICBcXFwibmFtZVxcXCI6IFxcXCLmmI7ml6VcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpZFxcXCI6IFxcXCIzXFxcIlxcbiAgICAgICAgfSx7XFxuICAgICAgICAgICAgXFxcImNvZGVcXFwiOiBzb3VyY2VfY29kZS5yZXN1bHQuZGF0YVs4XSxcXG4gICAgICAgICAgICBcXFwibmFtZVxcXCI6IFxcXCLlkI7ml6VcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpZFxcXCI6IFxcXCI0XFxcIlxcbiAgICAgICAgfV07XFxuICAgICAgICBpZiAoIWdldFZhcignaWQnKSkge1xcbiAgICAgICAgICAgIHB1dFZhcignaWQnLCAnMicpO1xcbiAgICAgICAgfVxcbiAgICAgICAgbGV0IGlkID0gZ2V0VmFyKCdpZCcpO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogaWQgPT0gJzAnID8gZ2V0SGVhZCgn5YmN5pelJykgOiAn5YmN5pelJyxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ2lkJywgJzAnKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL3N1Y2Nlc3MhJ1xcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzUnXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGlkID09ICcxJyA/IGdldEhlYWQoJ+aYqOaXpScpIDogJ+aYqOaXpScsXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdpZCcsICcxJyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly9zdWNjZXNzISdcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF81J1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBpZCA9PSAnMicgPyBnZXRIZWFkKCfku4rml6UnKSA6ICfku4rml6UnLFxcbiAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignaWQnLCAnMicpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8vc3VjY2VzcyEnXFxcIixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNSdcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogaWQgPT0gJzMnID8gZ2V0SGVhZCgn5piO5pelJykgOiAn5piO5pelJyxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ2lkJywgJzMnKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL3N1Y2Nlc3MhJ1xcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzUnXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGlkID09ICc0JyA/IGdldEhlYWQoJ+WQjuaXpScpIDogJ+WQjuaXpScsXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdpZCcsICc0Jyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly9zdWNjZXNzISdcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF81J1xcbiAgICAgICAgfSk7XFxuICAgICAgICBsZXQgbGlzdCA9IGRhdGVsaW5lW2lkXS5jb2RlLmVwaXNvZGVzO1xcbiAgICAgICAgZm9yIChsZXQgeCBvZiBsaXN0KSB7XFxuICAgICAgICAgICAgbGV0IHR5cGUgPSAoeC5wdWJsaXNoZWQgPT0gJzEnID8gJ+W3suWPkeW4gycgOiAn5pyq5Y+R5biDJyk7XFxuICAgICAgICAgICAgbG9nKHR5cGUpXFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHgudGl0bGUsXFxuICAgICAgICAgICAgICAgIGRlc2M6ICfigJjigJgnICsgdHlwZSArICfigJnigJlcXFxcbicgKyB4LnB1Yl9pbmRleCArICdcXFxcbuabtOaWsOaXtumXtO+8micgKyBnZXRIZWFkKHgucHViX3RpbWUpLFxcbiAgICAgICAgICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD0nICsgeC51cmwgKyAnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICAgICAgICAgICAgIGltZzogeC5jb3ZlcitSZWZlcmVyLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTonbW92aWVfMV92ZXJ0aWNhbF9waWMnXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGdldEhlYWQoJ+mTvuaOpeeCuOS6hu+8jOetieS/ruWkjScpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXG4gICAgICAgIH0pO1xcbiAgICB9XFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Luj56CBLeeVquWJp+e0ouW8lVwiLFwicGF0aFwiOlwic3lcIixcInJ1bGVcIjpcImNvbnN0IHsgQ2F0ZWdvcmllc0hlYWRlciB9ID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvY2F0ZWdvcmllcy1oZWFkZXJcXFwiKVxcblxcbi8qKlxcbiAqIOiOt+WPluWIhuexu+aVsOaNrua6kO+8jOWPr+WKqOaAgeWPr+mdmeaAge+8jOiHquW3seagueaNruWunumZheaDheWGteWkhOeQhlxcbiAqIGh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS9hbmltZS9pbmRleC9cXG4gKi9cXG5sZXQgbUNhdGVnb3JpZXMgPSB7fVxcbmxldCBjYXRJblZhciA9IGdldFZhcihNWV9SVUxFLnVybCArIFxcXCIjY2F0ZWdvcmllc1xcXCIsICcnKVxcbmlmIChnZXRWYXIoTVlfUlVMRS51cmwgKyBcXFwiI2NhdGVnb3JpZXNcXFwiLCAnJykpIHtcXG4gICAgbUNhdGVnb3JpZXMgPSBKU09OLnBhcnNlKGNhdEluVmFyKVxcbn0gZWxzZSB7XFxuICAgIGxldCBjYXRVcmwgPSAnaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL2FuaW1lL2luZGV4LydcXG4gICAgbGV0IGNhdFNyYyA9IHJlcXVlc3QoY2F0VXJsKVxcbiAgICAvLyBsb2coY2F0U3JjKVxcbiAgICBsZXQgY2F0UmVnZXggPSAvd2luZG93XFxcXC5fX0lOSVRJQUxfU1RBVEVfXz0oLio/KTtcXFxcKGZ1bmN0aW9uXFxcXChcXFxcKVxcXFx7L1xcbiAgICBpZiAoY2F0UmVnZXgudGVzdChjYXRTcmMpKSB7XFxuICAgICAgICAvLyBsb2coUmVnRXhwLiQxKVxcbiAgICAgICAgbGV0IGNhdGVnb3J5ID0gSlNPTi5wYXJzZShSZWdFeHAuJDEpXFxuICAgICAgICBsZXQgbUZpbHRlcnMgPSBjYXRlZ29yeS5maWx0ZXJzO1xcbiAgICAgICAgLy8gbG9nKG1GaWx0ZXJzKVxcbiAgICAgICAgbUZpbHRlcnMubWFwKGZpbHRlciA9PiBtQ2F0ZWdvcmllc1tmaWx0ZXIua2V5XSA9IGZpbHRlci5saXN0KVxcbiAgICAgICAgbGV0IG9yZGVycyA9IGNhdGVnb3J5Lm9yZGVyc1xcbiAgICAgICAgbGV0IG1PcmRlcnMgPSBbXVxcbiAgICAgICAgb3JkZXJzLm1hcChvcmRlciA9PiB7XFxuICAgICAgICAgICAgbGV0IG1PcmRlciA9IHt9XFxuICAgICAgICAgICAgbU9yZGVyLm5hbWUgPSBvcmRlci50aXRsZVxcbiAgICAgICAgICAgIG1PcmRlci52YWx1ZSA9IG9yZGVyLmtleVxcbiAgICAgICAgICAgIG1PcmRlcnMucHVzaChtT3JkZXIpXFxuICAgICAgICB9KVxcbiAgICAgICAgLy8gbG9nKG1PcmRlcnMpXFxuICAgICAgICBtQ2F0ZWdvcmllc1snb3JkZXInXSA9IG1PcmRlcnNcXG4gICAgfVxcbiAgICBwdXRWYXIoTVlfUlVMRS51cmwgKyBcXFwiI2NhdGVnb3JpZXNcXFwiLCBKU09OLnN0cmluZ2lmeShtQ2F0ZWdvcmllcykpXFxufVxcbmxldCBrZXlzID0gT2JqZWN0LmtleXMobUNhdGVnb3JpZXMpXFxuLy8gbG9nKG1DYXRlZ29yaWVzKVxcbi8vIGxvZyhrZXlzKVxcbi8qKlxcbiAqIOe7hOWQiOW9k+WJjeWIhuexu+mTvuaOpVxcbiAqL1xcbmxldCB0cnVlX3VybCA9IGdldFZhcihNWV9SVUxFLnVybCwgTVlfVVJMKVxcbnRydWVfdXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS9wZ2Mvc2Vhc29uL2luZGV4L3Jlc3VsdD8nXFxuZm9yIChsZXQgaXQgb2Yga2V5cykge1xcbiAgICBsZXQgY2F0X3VybCA9IGdldFZhcihNWV9SVUxFLnVybCArIFxcXCIjXFxcIiArIGl0LCBpdCA9PT0gJ29yZGVycycgPyAnMycgOiAnLTEnKVxcbiAgICB0cnVlX3VybCArPSAoY2F0X3VybCA/ICcmJyArIGl0ICsgJz0nICsgY2F0X3VybCA6ICcnKVxcbn1cXG4vLyBsZXQgcGFnZSA9IDFcXG5jb25zdCBwYWdlID0gTVlfVVJMLnNwbGl0KCcjJylbMV1cXG50cnVlX3VybCA9IHRydWVfdXJsICtcXG4gICAgJyZzdD0xJnNvcnQ9MCZzZWFzb25fdHlwZT0xJnBhZ2VzaXplPTIwJnR5cGU9MScgK1xcbiAgICAnJnBhZ2U9JyArIHBhZ2VcXG4vLyBsb2codHJ1ZV91cmwpXFxuXFxuY29uc3QgZW1wdHkgPSBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG5cXG5DYXRlZ29yaWVzSGVhZGVyXFxuICAgIC5zZXRTdWJDYXRlZ29yaWVzSXRlbUtleSgnbmFtZScsICd2YWx1ZScpXFxuICAgIC5nZXQoZCwgbUNhdGVnb3JpZXMsIHBhZ2UpXFxuLyoqXFxuICog6I635Y+W5b2T5YmN5YiG57G76aG16Z2i5rqQ56CBXFxuICovXFxudHJ5IHtcXG4gICAgdmFyIHN5bGlzdCA9IEpTT04ucGFyc2UocmVxdWVzdCh0cnVlX3VybCwge30pKS5kYXRhLmxpc3Q7XFxuXFxuICAgIC8qKlxcbiAgICAgKiDliJfooajmlbDmja7mupBcXG4gICAgICovXFxuICAgIGZvciAobGV0IGRhdGEgb2Ygc3lsaXN0KSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBkYXRhLnRpdGxlIC8qKyAnLycgKyBkYXRhLmluZGV4X3Nob3cqLyAsXFxuICAgICAgICAgICAgZGVzYzogZGF0YS5vcmRlcixcXG4gICAgICAgICAgICBpbWc6IGRhdGEuY292ZXIrUmVmZXJlcixcXG4gICAgICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD0nICsgZGF0YS5saW5rICsgJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMydcXG4gICAgICAgIH0pO1xcbiAgICB9XFxufSBjYXRjaCAoZSkge31cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS7o+eggS3liqjmgIHliIbnsbvmqKHlnZdcIixcInBhdGhcIjpcImNhdGVnb3JpZXMtaGVhZGVyXCIsXCJydWxlXCI6XCJqczpcXG4vKipcXG4gKiDkvb/nlKjor7TmmI7vvJpcXG4gKiAxLuaPkOWJjeW7uueri+WlvSDliIbnsbvmiYDlsZ7nsbvlnovlkozliIbnsbvliJfooagg55qE5a+55bqU5YWz57O777yM5Y2zIGdldCDlh73mlbDkuK3nmoQgY2F0ZWdvcmllc1xcbiAqIDIu6K6+572u5a2Q5YiG57G75pWw5o2u55qEIGtlee+8jOiwg+eUqCBzZXRTdWJDYXRlZ29yaWVzSXRlbUtleSh0aXRsZUtleSwgdXJsS2V5KVxcbiAqIDMu54S25ZCO6LCD55SoIENhdGVnb3JpZXNIZWFkZXIuZ2V0KGxheW91dCwgY2F0ZWdvcmllcywgcGFnZSlcXG4gKlxcbiAqIOaUr+aMgemTvuW8j+iwg+eUqO+8jOS4gOWPpeivneWNs+WPr+iwg+eUqOeUn+aIkOWIhuexu++8jOWNs++8mlxcbiAqIENhdGVnb3JpZXNIZWFkZXJcXG4gKiAgICAuc2V0U3ViQ2F0ZWdvcmllc0l0ZW1LZXkodGl0bGVLZXksIHVybEtleSlcXG4gKiAgICAuZ2V0KGxheW91dCwgY2F0ZWdvcmllcywgcGFnZSlcXG4gKlxcbiAqIEB0eXBlIHt7c2V0U3ViQ2F0ZWdvcmllc0l0ZW1LZXk6IENhdGVnb3JpZXNIZWFkZXIuc2V0U3ViQ2F0ZWdvcmllc0l0ZW1LZXksIGdldDogQ2F0ZWdvcmllc0hlYWRlci5nZXQsIGNhdGVnb3JpZXNLZXk6IHt0aXRsZTogc3RyaW5nLCB1cmw6IHN0cmluZ319fVxcbiAqL1xcbmxldCBDYXRlZ29yaWVzSGVhZGVyID0ge1xcbiAgICBjYXRlZ29yaWVzS2V5OiB7XFxuICAgICAgICBzdWJfY2F0ZWdvcmllczogJycsXFxuICAgICAgICB0aXRsZTogJycsXFxuICAgICAgICB1cmw6ICcnLFxcbiAgICB9LFxcbiAgICAvKipcXG4gICAgICogMS7orr7nva7ku47liIbnsbvliJfooajkuK3mi7/nmoTlrZDliIbnsbvnmoTmlbDmja4ga2V577yMXFxuICAgICAqICAg5qC55o2uIGtleSDmi7/liLDmlbDmja7lkI7vvIxcXG4gICAgICogICDkvJroh6rliqjotYvlgLznu5kgc2Nyb2xsX2J1dHRvbiDnmoQgeyB0aXRsZTogaXRlbVt0aXRsZUtleV0sIHVybDogaXRlbVt1cmxLZXldIH1cXG4gICAgICpcXG4gICAgICogQHBhcmFtIHRpdGxlX2tleSB0aXRsZSDnmoQga2V5XFxuICAgICAqIEBwYXJhbSB1cmxfa2V5IHVybCDnmoQga2V5XFxuICAgICAqL1xcbiAgICBzZXRTdWJDYXRlZ29yaWVzSXRlbUtleSA6ICh0aXRsZV9rZXksIHVybF9rZXkpID0+IHtcXG4gICAgICAgIENhdGVnb3JpZXNIZWFkZXIuY2F0ZWdvcmllc0tleS50aXRsZSA9IHRpdGxlX2tleVxcbiAgICAgICAgQ2F0ZWdvcmllc0hlYWRlci5jYXRlZ29yaWVzS2V5LnVybCA9IHVybF9rZXlcXG4gICAgICAgIHJldHVybiBDYXRlZ29yaWVzSGVhZGVyO1xcbiAgICB9LFxcbiAgICBzZXRTdWJDYXRlZ29yaWVzS2V5OiAoc3ViX2NhdGVnb3JpZXNfa2V5KSA9PiB7XFxuICAgICAgICBDYXRlZ29yaWVzSGVhZGVyLmNhdGVnb3JpZXNLZXkuc3ViX2NhdGVnb3JpZXMgPSBzdWJfY2F0ZWdvcmllc19rZXlcXG4gICAgICAgIHJldHVybiBDYXRlZ29yaWVzSGVhZGVyO1xcbiAgICB9LFxcbiAgICAvKipcXG4gICAgICogMi7ojrflj5bliIbnsbvlpLTpg6hcXG4gICAgICpcXG4gICAgICogQHBhcmFtIGxheW91dCDlvZPliY3nlYzpnaLvvIzljbPluLjnlKjnmoQgZC5wdXNoIOeahCBkXFxuICAgICAqIEBwYXJhbSBjYXRlZ29yaWVzIOWIhuexu+aJgOWxnuexu+Wei+WSjOWIhuexu+WIl+ihqOeahOWvueW6lOWFs+ezu+ihqO+8jFxcbiAgICAgKiAgICAgICAg5aaC77yaXFxuICAgICAqICAgICAgICB7XFxuICAgICAqICAgICAgICAgICBcXFwi5bm05Lu9XFxcIjogW3sgXFxcIm5hbWVcXFwiOiBcXFwiMjAyMVxcXCIsIFxcXCJ2YWx1ZVxcXCI6IFxcXCIyMDIxXFxcIiB9LCB7IFxcXCJuYW1lXFxcIjogXFxcIjIwMjBcXFwiLCBcXFwidmFsdWVcXFwiOiBcXFwiMjAyMFxcXCIgfS4uLl0sXFxuICAgICAqICAgICAgICAgICBcXFwi5o6S5bqPXFxcIjogW3sgXFxcIm5hbWVcXFwiOiBcXFwi54Ot5bqmXFxcIiwgXFxcInZhbHVlXFxcIjogXFxcImhvdFxcXCIgfSwgeyBcXFwibmFtZVxcXCI6IFxcXCLml7bpl7RcXFwiLCBcXFwidmFsdWVcXFwiOiBcXFwidGltZVxcXCIgfS4uLl0sXFxuICAgICAqICAgICAgICB9XFxuICAgICAqIEBwYXJhbSBwYWdlIOmhteeggVxcbiAgICAgKiBAcGFyYW0gdXJsTGlzdGVuZXIg6aKd5aSW5aSE55CGIGJ1dHRvbiDnmoQgdXJs77yM6ZyA6KaBIHJldHVyblxcbiAgICAgKi9cXG4gICAgZ2V0OiAobGF5b3V0LCBjYXRlZ29yaWVzLCBwYWdlLCB1cmxMaXN0ZW5lcikgPT4ge1xcbiAgICAgICAgLy8gbG9nKGNhdGVnb3JpZXMpXFxuICAgICAgICAvLyDliIbnsbvmiYDlsZ7nsbvlnovnmoTliJfooajvvIzlpoLvvJpbIFxcXCLlubTku71cXFwiLCBcXFwi5o6S5bqPXFxcIiBdXFxuICAgICAgICBsZXQgY2F0ZWdvcnlfbmFtZXMgPSBPYmplY3Qua2V5cyhjYXRlZ29yaWVzKVxcbiAgICAgICAgbGV0IHR5cGVzID0gW11cXG4gICAgICAgIC8vIOagueaNruWvueW6lOWFs+ezu+ihqOaLv+WIhuexu+WIl+ihqFxcbiAgICAgICAgY2F0ZWdvcnlfbmFtZXMubWFwKGNhdGVnb3J5X25hbWUgPT4ge1xcbiAgICAgICAgICAgIC8vIOi/memHjOS8muaLv+WIsCDlubTku70g5o6S5bqPLi4uIOWFtuS4reS4gOS4qlxcbiAgICAgICAgICAgIHR5cGVzLnB1c2goY2F0ZWdvcmllc1tjYXRlZ29yeV9uYW1lXSk7XFxuICAgICAgICAgICAgLy8g6L+Z6YeM5LiL6Z2i5a+5IHR5cGVzIOeahOWAvOi/m+ihjOWkhOeQhlxcbiAgICAgICAgfSlcXG4gICAgICAgIGNhdGVnb3JpZXMgPSB0eXBlcztcXG4gICAgICAgIGxldCBpbml0X2NhdGUgPSBbXVxcblxcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAyMDsgaSsrKSB7XFxuICAgICAgICAgICAgaW5pdF9jYXRlLnB1c2goXFxcIjBcXFwiKVxcbiAgICAgICAgfVxcblxcbiAgICAgICAgY29uc3QgY2F0ZV90ZW1wX2pzb24gPSBnZXRWYXIoTVlfUlVMRS50aXRsZSwgSlNPTi5zdHJpbmdpZnkoaW5pdF9jYXRlKSlcXG4gICAgICAgIGNvbnN0IGNhdGVfdGVtcCA9IEpTT04ucGFyc2UoY2F0ZV90ZW1wX2pzb24pXFxuXFxuICAgICAgICBpZiAocGFyc2VJbnQocGFnZSkgPT09IDEpIHtcXG4gICAgICAgICAgICAvKipcXG4gICAgICAgICAgICAgKiDpgY3ljobnrKwgaW5kZXgg5bGC5YiG57G7XFxuICAgICAgICAgICAgICovXFxuICAgICAgICAgICAgY2F0ZWdvcmllcy5mb3JFYWNoKChjYXRlZ29yeSwgaW5kZXgpID0+IHtcXG4gICAgICAgICAgICAgICAgbGV0IHN1Yl9jYXRlZ29yeV9uYW1lID0gY2F0ZWdvcnlfbmFtZXNbaW5kZXhdXFxuICAgICAgICAgICAgICAgIGxldCBzdWJfY2F0ZWdvcmllc19rZXkgPSBDYXRlZ29yaWVzSGVhZGVyLmNhdGVnb3JpZXNLZXkuc3ViX2NhdGVnb3JpZXNcXG4gICAgICAgICAgICAgICAgbGV0IHN1Yl9jYXRlZ29yaWVzID0gc3ViX2NhdGVnb3JpZXNfa2V5ID8gY2F0ZWdvcnlbc3ViX2NhdGVnb3JpZXNfa2V5XSA6IGNhdGVnb3J5O1xcbiAgICAgICAgICAgICAgICAvLyBsb2coY2F0ZWdvcnkpXFxuICAgICAgICAgICAgICAgIC8qKlxcbiAgICAgICAgICAgICAgICAgKiDlnKjnrKwgaW5kZXgg5bGC5YiG57G75Lit6YGN5Y6G6K+l5bGC5omA5pyJ5a2Q5YiG57G7XFxuICAgICAgICAgICAgICAgICAqL1xcbiAgICAgICAgICAgICAgICBzdWJfY2F0ZWdvcmllcy5mb3JFYWNoKChpdGVtLCBrZXkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGxldCB0aXRsZSA9IGl0ZW1bQ2F0ZWdvcmllc0hlYWRlci5jYXRlZ29yaWVzS2V5LnRpdGxlXVxcbiAgICAgICAgICAgICAgICAgICAgbGV0IHVybCA9IGVzY2FwZShpdGVtW0NhdGVnb3JpZXNIZWFkZXIuY2F0ZWdvcmllc0tleS51cmxdKVxcbiAgICAgICAgICAgICAgICAgICAgaWYgKHVybExpc3RlbmVyKSB1cmwgPSB1cmxMaXN0ZW5lci5vbkRlYWwoaXRlbSwgc3ViX2NhdGVnb3J5X25hbWUsIHVybClcXG4gICAgICAgICAgICAgICAgICAgIGxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZToga2V5LnRvU3RyaW5nKCkgPT09IGNhdGVfdGVtcFtpbmRleF0gPyAn4oCc4oCc4oCd4oCdPGI+PHNwYW4gc3R5bGU9XFxcImNvbG9yOiAjMDk4QUMxXFxcIj4nICsgdGl0bGUgKyAnPC9zcGFuPjwvYj4nIDogdGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKHVybCkubGF6eVJ1bGUoKHBhcmFtcykgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuY2F0ZV90ZW1wW3BhcmFtcy5pbmRleF0gPSBwYXJhbXMua2V5LnRvU3RyaW5nKClcXG5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0VmFyKE1ZX1JVTEUudGl0bGUsIEpTT04uc3RyaW5naWZ5KHBhcmFtcy5jYXRlX3RlbXApKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoTVlfUlVMRS51cmwgKyBcXFwiI1xcXCIgKyBwYXJhbXMuc3ViX2NhdGVnb3J5X25hbWUsIGlucHV0KVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlX3RlbXA6IGNhdGVfdGVtcCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGluZGV4LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGtleSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZTogcGFnZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViX2NhdGVnb3J5X25hbWU6IHN1Yl9jYXRlZ29yeV9uYW1lXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcXG4gICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgIGxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiYmxhbmtfYmxvY2tcXFwiXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9XFxuICAgIH1cXG59XFxuJC5leHBvcnRzLkNhdGVnb3JpZXNIZWFkZXI9Q2F0ZWdvcmllc0hlYWRlclwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5oiR55qE5pS26JePLeinhumikVwiLFwicGF0aFwiOlwidmlkZW9cIixcInJ1bGVcIjpcInZhciB0cyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcbnZhciB2aWRlb191cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvdjMvZmF2L2ZvbGRlci9zcGFjZT9hY2Nlc3Nfa2V5PScgKyBnZXRWYXIoJ2FjY2Vzc19rZXknKSArICcmYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYnVpbGQ9NjEzMDQwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZtb2JpX2FwcD1hbmRyb2lkJnBsYXRmb3JtPWFuZHJvaWQmc19sb2NhbGU9emhfQ04mc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4xMy4wJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnRzPScgKyB0cyArICcmdXBfbWlkPScgKyBnZXRWYXIoJ3N0YXJpZCcpICsgJyZzaWduPTBhNTFiNzcyZjgxZGM3ODEyY2Q2NjIyNmE4MzI1MzgzJztcXG52YXIgbGlzdCA9IEpTT04ucGFyc2UocmVxdWVzdCh2aWRlb191cmwpKS5kYXRhO1xcbmZvciAodmFyIHggb2YgbGlzdCkge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IHgubmFtZSxcXG4gICAgICAgIGltZzogJ2h0dHBzOi8vZ2l0ZWUuY29tL0NoZXJpc2hSeC9pbWFnZXdhcmVob3VzZS9yYXcvbWFzdGVyL2ltYWdlLzEzMDk2NzI1ZmU1NmNlOWNmNjQzYTBlNGNkMGMxNTljLmdpZicsXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5I1xcXCIreC5pZCtcXFwiQGxhenlSdWxlPS5qczpwdXRWYXIoJ2NoYW5nZScsZ2V0VmFyKCdjaGFuZ2UnKT09aW5wdXQuc3BsaXQoJyMnKVsxXT8nMCc6aW5wdXQuc3BsaXQoJyMnKVsxXSk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/lt7LliLfmlrAnXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAnYXZhdGFyJ1xcbiAgICB9KTtcXG4gICAgaWYgKGdldFZhcignY2hhbmdlJykgPT0geC5pZCkge1xcbiAgICAgICAgdmFyIGxpc3QyID0geC5tZWRpYUxpc3RSZXNwb25zZS5saXN0O1xcbiAgICAgICAgbG9nKGxpc3QyKVxcbiAgICAgICAgZm9yICh2YXIgYSBpbiBsaXN0Mikge1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBsaXN0MlthXS50aXRsZSxcXG4gICAgICAgICAgICAgICAgaW1nOiBsaXN0MlthXS5jb3ZlcitSZWZlcmVyLFxcbiAgICAgICAgICAgICAgICB1cmw6J2hpa2VyOi8vcGFnZS9jb2xsZWN0aW9uP3VybD1odHRwczovL2FwaS5iaWxpYmlsaS5jb20veC92My9mYXYvcmVzb3VyY2UvaWRz77yf77yfYWNjZXNzX2tleT0nK2dldFZhcignYWNjZXNzX2tleScpKyfvvIbvvIZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNu+8hu+8hmJ1aWxkPTYxMzA0MDDvvIbvvIZjX2xvY2FsZT16aF9DTu+8hu+8hmNoYW5uZWw9bWFzdGVy77yG77yGbWVkaWFfaWQ9JytsaXN0MlthXS5pZCsn77yG77yGbWlkPScrZ2V0VmFyKCdzdGFyaWQnKSsn77yG77yGbW9iaV9hcHA9YW5kcm9pZO+8hu+8hnBsYXRmb3JtPWFuZHJvaWTvvIbvvIZzX2xvY2FsZT16aF9DTu+8hu+8hnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMTMuMCUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RO+8hu+8hnRzPScrdHMrJ++8hu+8hnNpZ249N2UwZjFiOTJmM2VmMzgyOGIxOWJlNjY4Mzg5MTUwMDcnLFxcbiAgICAgICAgICAgICAgIC8vIGRlc2M6IGFbJ21lZGlhX2NvdW50J10sXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV92ZXJ0aWNhbF9waWMnXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuXFxuICAgIH1cXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLmiJHnmoTmlLbol48t6L+955WqXCIsXCJwYXRoXCI6XCJmYW5qdVwiLFwicnVsZVwiOlwiICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogcnggPT0gJ+e0ouW8lScgPyBnZXRIZWFkKHJ4KSA6ICfntKLlvJUnLFxcbiAgICAgICAgdXJsOiAn57Si5byVJyArIHdyLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzMnXFxuICAgIH0pO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5oiR55qE5pS26JePLei/veWJp1wiLFwicGF0aFwiOlwiZHNqXCIsXCJydWxlXCI6XCIgICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiByeCA9PSAn57Si5byVJyA/IGdldEhlYWQocngpIDogJ+e0ouW8lScsXFxuICAgICAgICB1cmw6ICfntKLlvJUnICsgd3IsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfMydcXG4gICAgfSk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLmiJHnmoTmlLbol48t5pS26JePXCIsXCJwYXRoXCI6XCJjb2xsZWN0aW9uXCIsXCJydWxlXCI6XCJqczp2YXIgcmVzID0ge307dmFyIGQgPSBbXTtcXG52YXIgdHMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcXG52YXIgY29kZSA9IEpTT04ucGFyc2UocmVxdWVzdChNWV9VUkwpKS5kYXRhO1xcbnZhciByZXNvdXJjZXMgPSAnJztcXG5mb3IgKHZhciB4IG9mIGNvZGUpe1xcbiAgICB2YXIgcmVzb3VyY2VzID0gcmVzb3VyY2VzICsgeC5pZCArICc6JyArIHgudHlwZSArICcsJztcXG59XFxudmFyIHJlc291cmNlcyA9IHJlc291cmNlcy5zbGljZSgwLHJlc291cmNlcy5sZW5ndGgtMSk7XFxudmFyIHVybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC92My9mYXYvcmVzb3VyY2UvaW5mb3M/YWNjZXNzX2tleT0nK2dldFZhcignYWNjZXNzX2tleScpKycmYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYnVpbGQ9NjEzMDQwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlJm1pZD0nK2dldFZhcignc3RhcmlkJykrJyZtb2JpX2FwcD1hbmRyb2lkJnBsYXRmb3JtPWFuZHJvaWQmcmVzb3VyY2VzPScrcmVzb3VyY2VzKycmc19sb2NhbGU9emhfQ04mc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4xMy4wJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnRzPScrdHMrJyZzaWduPTdlMGYxYjkyZjNlZjM4MjhiMTliZTY2ODM4OTE1MDA3JztcXG52YXIgbGlzdCA9IEpTT04ucGFyc2UocmVxdWVzdCh1cmwse30pKS5kYXRhO1xcbmZvciAodmFyIHkgb2YgbGlzdCApe1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOnkudGl0bGUsXFxuICAgIGltZzp5LmNvdmVyLFxcbiAgICBkZXNjOifmkq3mlL7ph486ICcreS5jbnRfaW5mby5wbGF5KycgIOW8ueW5lTogJyt5LmNudF9pbmZvLmRhbm1ha3UsXFxuICAgIHVybDonaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9aHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbO+8n++8n2FpZD3vvIbvvIZidmlkPScgKyB5LmJ2aWQgKycjaW1tZXJzaXZlVGhlbWUjJyxcXG4gICAgY29sX3R5cGU6J21vdmllXzFfdmVydGljYWxfcGljJ1xcbiAgICB9KTtcXG59XFxucmVzLmRhdGEgPSBkO1xcbnNldFJlc3VsdChyZXMpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Luj56CBLeeZu+W9lVwiLFwicGF0aFwiOlwibG9naW5cIixcInJ1bGVcIjpcImV2YWxQcml2YXRlSlMoJ0xsZTBuYXlkc3pRMjUwSWhPeWRSQTFrSnIwWG5OYS9yRmxzamlFS1pXN3JldFpGZXVITkpsUEtXTUU0YTlCY2ZCOUIwaFRhd1lNOHYraEV3ekYzUlZOMnNSL2lIOE52eUhZNnV6S05nak1iSjg1R0xFZzBKeWpQSXRmR0dSZ3dKRlVWTkwxSUxlUk5iYWUzOVhWcm9EN1dLVUtCUGZ2N0h3cWoySFlGSDV1UUxwT1Zadkc0VWNZT3pBczdqOE5pYVBFVUpNUzQyNEJrYm5zMU5mNkZJRFhsZmtOSUlzV0JIV1JkTzZtcDczVnkydnU1aGcxYUcwQVZlazUrcFFjcWFreEVNOWNXR2dDSkM1bUtwVWlaU0V0UDkyc0tBOVNLKy9OSHNxZjEzQ090UVJpaXg2Z0ZoeUZoTGV6NytHcHVTYkxIMTNrMUZEVVpraWxZN09CUDh5Q1pQK1ltNDFZaGkveUlUeDNFbExtZ2ppQmV4ajBxVExqcktJWG54NEREWGlpcFN3L1lwVU5kcXRnVVhITmk5OGE3Y0d0TEUrOTVBcWsyRGNWL0gzT0c1aHBzd1NIQzIraWxyUkxQOCtUeUxUb2dyRlVhSllNeE9tcld3QWpVTTFGZkxzL01TeDYwMVcvdWVGREFtaE8vWlpvVVp3ZjNNWWJodGt2K0J4Z3lHLzc2V2ZEQVFiR0FSSjk0TmFqWjlwenp2Y3VYSUVyZ3IxRC9QdWdGbWhPV0hrL01TZEZEbEJxTURwRTh4OTVZajZ0TDR3RnN3Mk9hR09vZThNaHNuaUZZRUY4QnFNUFJlZDB6N2NCQzRSR3hENU5nVjFGS1dIQVBnWlBZRktqZ085Z2xOSnY3MUlTZ0lvOVNLUkJFakttRTRjRXZiL2tKRU9DRURMakJRclZzT1QxMU91WmNadWRDWkVPVHptcmlHSGRQZmZsS0JyRnNFaDd5bFV0UFpZRWNFcEN5MVdoMWUxWXhOS1poYk91azAyd3RBN0ZmSE5QMERxSVo4M0Y4UkZHMzhSWTM2ZkZJLy96THBDTUVNOFVYaHpsanc1cW9TUHZ6ZmhlUjEvR0YzTWpqRmZzelhaM1VDdmNCZzJ3QzFPa0FWS3AwdVNjR0xtZXE2UWFFYlFOMnVuejAycHBGVjdlSzlINzN5RDFFRWxOS0NRQ2trbUI2ZHhwcXRrVjZKaFJzeGlnTWNlWG40ZFVHdCtBdGZrQTJLdnltZTVya3VwcEJjZUZ2TWZoSUZzeFlHUjJVRTkrb3g2a2ZsWUJ0UHA1NVE2dWxJS3lkaHJrNVRBVHpNMml2OWY5eHFZcEpJSUJudElWSW9mM09hbkhKV3JFdHhRMmMxZ2N2T3QvV2JFL2xrTmRyUTMzSU9Zck9GYjJjYlo0TS9saDVuVnR6aWp2cFllME02TzV2K0lvWk1wT2lWcXNlN3lOaVhoQUh4RTA1emlpVmNqOXBpenBXekllYnpPNGcrS2thcUpyQlM2eXo1UVhtaUZjV1ZFU0lJSW92WUhlQ0tSRExnQm9qcUpkVGVJWGFSL0tlNDlzdDAzWDJIUncycjBCME1uaWY4dEVQZGExZ2xjQkxzVEVaRVcyaGJrZHRvRWljSVJGdmtpNTV4OUhRdFFUNHpwMlRXcDNhdTdUSXp3RGl0Q1ViYkRPVjF6RmdTSGgwODczTGx5Qks0SzlRL3o3b0Jab1RsaDVQekVuUlE1UWFqQTZSUE1mZVdJK3JTK01CYk1Oam1oanFIdkRJYko0aUJwK3hYaGpjKzJydmlEYUFPeUZDOXVsdmt4emErVFc0TWF0MGh4dFlEcklsK0Rwb3VlanlJTVRXOERzdlh4UFhDQVFibXdHbERFQWZPaXlxdHFMUTlIZjhnRFhFMzVRN2F5MHlBQkVlajFxS1dncmovWW5CYlkvZFlBT1BTSHBtbGRkRkxKbktwQXBkTVh2WUJzd3JXRjBDUlJTYjFzN0NaUmdNZk9Reks2SXo2L3RlaGFzbU9zN01sOXcvSHBuNW5LaDEwK24waUdYTXZ4NUlJK1NHcG9MdWVDdFJtSjdVVlZDdERHNnhldnhZTW0wNHNBR0dHSmFDREFoR0g4aWNiaElFMmIrb3FERkVwbVUwZVk3UnRHNzloUGhMK2dYWU95WU5VdkpxZWpsYloxL09kdkw1bll5Nm0zMEd3bDN6N3c1ZXNsWkNVQTBrYVJzNWttVU9MdkwwUVFQRDc0ZmFnQWRxR3NMSFVHRFdiNEJ6Q0xGMk1ZTEh5K0RzY2tLM0ZZSk13MFU1cU43TDcwMHNWU2FsZjZ0Szk2ZFdxem41ZUlyZXdmMWlHbzgzSWN3ejlvODFKbXVLQTFMcElTUzkwOThud0F4MXFQMUZ6UGN3SWhUU1Z1UjgrQW9vMXAzRGkwV0x3TktRTk9JOHg3NURtYUU2QkxQaURrYURMS0p5YytielgwaElDM3NQYjIrZGZ2bGtzQ25LMjJjR2hLMjVGczlPRlIzckYvVkZWU1JiREc3KzdBcU9rRTI0Ym9rRVVqZDhuUzVIanFwM0QvdWsrMFh6Qnk5MjIyWDZiSm1KaHdGbEt6NDZUQlZYZXp6bTNkelFXN09sKzBPcWYvRXgyQVkrcndQK002eEZSSFVYL2oyR2NHYTVtaGJKVXpSUkJkTzVJcHJVMk5zNkh0U1hDOUlxY3hXMVZsNWJDT2JNRzkrSHZ2enUwc0c3QVdOZ3VaSkNzeGtKWGhoZ3dmMkdCNkZQdTYrb0ZSejZENEEwNXNzRHNMTFZ5bVo1Y2dUYkRjYmVxMTlVbWlZYW0zUG43cVdJY2p1aDlPc040dGlGVHJyVUVQWklSWDlYazBVR0RZZmFiUTFwWGZ4TS8reVNoOHE3ZHduVkovZzdsdWloR09lZU53SFhBRkF5NG4zYWNQSDJYQmMvbXN4NVhLZ0lyZU9STVZZL2NGYjlLY20zb1daenpLNitIU1A4NXRrRktLbTU1aGc4TXh3aTVJeDlSUUUvcEdBeDFjc292U3AzalJQMGg2Mm82TmhGa3RDREtXempFVWw5Ym1hMjhmWnlpWTRkWEJFc0hCT3BLdkJ6QUEwbFJrZXpUbkV2dlhzOVo1NVVyQWE4WmhBRnV4NlpFTnc0Y01USXVTa1ZmdytWL1UvbW9tbHRKOXZHUGdpcWI1blpsOUt1N2QwUk9WMTVKM1FBc2JoT3hUNlNna0lWdWd1VmFUVlJjajBIVyttTU5ZS2JReW5yTlJBcUtEZUpxdVZ4YzlIbFBNNkw4cVBuWklXYmJIQWZVZkdidzBsUmx3U3VPcEY3K0EyV0pMWjRYelNnSGJjTVhrdWx6UFBEUDkvY2FSSUI4ZTJWa3pFWlNQblVpWkFwV1A2d1d1c0h1QjM5V0FNNzgrTkJpNEJwMm14V2pMS0hMV1FNRGVJWFhoZHhlY0s1cVVVZllMZ0lUaWg5RGVGcGdMTldjQkxHUUZiZFNOa0ozTldwY0c1NkRhakRJdUxVYThrMDBpOTRjSndBek1rSkJ4TkpiNWVoQlJrVnZXWG9zbXRKQk1kUmY2TkVic1Y5dTh2cFpqTkVvZ1Vrbm1sdEo5dkdQZ2lxYjVuWmw5S3U3ZDFacVRQem9wd1poaCtpdERwVWIwTHIyN2M1d05BQUVqcnBoT3FmZTBOajM5Q05XMExINFd4amYybHdseE10T0tSMUhRTC9DUHc1MXl5WUovTFZyUXoraWYzaUlCTlU0bkNnT2J1VzVKVUxUdnNRc3MyUm5lTEN3NnJwaHhnTXNkYXdNRWdaOXFDckNNN3lUTTBFeWxGeGZqaUlaS3FiSzEwQmFlMk5vSEQrR3VvVUtBUXA1U3U0QXFYU2ZLTHpteDRoV2JtU2lOVjdtQ0IvcmR3MXlic1B2Z0FGY0c4NU41M2tOanpjUHZiS0xPT3hIWEhZVldDbEJtSnByd0p0SEE2QjFXWnBHV1J4NU0vZ0Rtc0d6VlJtVnVCRHZtU0FaTXdJZVZyNWJ6REU4Nm0wTnFjbWdUTmVweHdxQit5QkJwNUt6ZDQyRUFRaHQyRUs1VDJ6TXh2Z1R6ZVMvejNLL3E1bFJIbDF6SzBKL3NRd0x4OXo4bE1WZzlSQmJBZS9lYjIwVm93emNxUGRlL3FpMGpITXdHY01hQzlkdXlXNTZ3bEdPc25rYmV5QlEvUGZSU1Nya1VHL3ZjYUNiVGE0SVQ4NFp6dHBOUVJ2YmVVbklBb1BrVy9lWjZ3T1VpYTRKc3lhdzk5V2E4K0U0TGpEbVowelJoblNIZ1V5Qy95YjlyWlQybEUxUzdKQklrN1laUFh5QTAwYTJMZ0tGRzg4WXpWODBoaStBVlR3UlpQazl3bE83Z1JTMk5SLzU3N25JeEcwSDIybGxGc2NtTjFMaEk5MUZEMlZiVlhicWlLVVZqSmNWbjYvc1FjVHd3ejd0dkI2ejl5TW1yRGx5Q012eVVkd0dJNnVyOUVhYzRxVzZFVXoxeEgyeTVUSThBZmh4eHhPckFRWm5FUmJUTUlDZGZLR1FHREplL1RkS1JLUXRnYnBiNU1jMnZrMXVER3JkSWNiV0E2ekRQdTI4SHJQM0l5YXNPWElJeS9KUk5kdnNYNkRsS2RZd0xuRlVRajJ0NkhRSGh0amtPbGkrdGNPblJsakFhMzJvcmZ4NzlWT3V2aU5xK21PcVIxTitDR1JGMmJtS1Uxa3BEQXJ4NFZ6RGRXSmRkRXJhK09rRm5PTkVHejRZZWN3RVJaVWQ3NytublBMMk1vQ01tRURZY3ZYSXMyRXVaSGRrVGZuMWl3ZW9nRDAxUWZ3cVpITkY4SHZsQldNVS9mNkVkelhLTHFJZ1JLMmlwQU1GZ0tSdmxSYmFzSFBsUnVzU2cwcFJOVlVDUVI1ZWJOeXhxRlhoTGMyK29lZEs4SkVvTG9NRVE1RDNmSmFyWWdkOWp5NmZPaUJrRzhDOUlJVEI4bXl0eXlzd2NLdHdoeTEvMVdiSE83Q3ovUmRxVmN5SjM0QTJxMlozeXVpMVE1YTFvUG1PME5XTGZueWE0K3NSTlFya3NpUTRIdU8yNkdhWlVSOGtXekYxT3hkZHVhUFZ4SU5NYjY1OGNzWFZ1REdaNU1ZcFdkYmNrRlc2ZVlQRml1K3hTREMvZUR6c1hBSDZGTDNQVjhPcERVUEJtcFRlazJYWGZlS2RxVTJwUzltN1NDaUNCNXUycWJpS0MyYzl2QlYyNE02czhSYTRobWQrUGFqNEZUeXR2MzZTSDFiTEs4dEkxbFp6K3dpZis5WklBZFQyMmNyNTdqcSt5cE1QZU4xeTU5RHF2N3BzaEQrSlRJOFVnZFM0UVZsQ3dGMTdZcnZKSFBENDJLRkViZ1FZKyswajBkYWx5SFljZ2Y1OFF5QWw5K25uQkpaVlVWbElpbFE2cUVQc0h6YjZyTWJWNjdZU3FaSGNMdmZDVG9iUmk0cGFCQ0VVeGN5TkxRdkpTS2NLcFpBdWYyKzhLODF6S3l6M01kRWN1cnRzaG5zeFFBK29jREMyT3k1OGl5Q0s2ZFNqSXJUUGlGRlE4MEJtcGEyRDNsc2NMVm1ZNUlSNG9rOXRnZEJlWEk2WFo4dTJrOUtMSldkK0Zxc2Y4WU9RR3hPNkVIMmNDS08ydTArM0YvR096NisvT3J1dExhaHFSMm1rVkdJZEpLdVhlWUdzWm5EQmdlSmdCSlo4cklIQzBDME5XTEx4aWpMTEZKZnppMHB6R0lSSFc0TEFKQWhPL2ZMcFNMNTBSbHJoTVl2YlFzNG9adTFwZSs3OVhUNVJSODhkbFhzMXI2RDRzSkhZaDYrN3gza1BRdU1sczlyYzFueXd6QmRsMzVDSVp4RXc2Y0FDalA4WTRkbjZ6d05ZUG50OVFtRzJJVjRaNHJNVndJNXBaUWltVjRjQjFKeXAveUszdk9jRmVwV2JhMGlOTDd4QWhFR0R0czhJN2hLLzVOSFNDendzNjdUU2tKOFVIeXdHa3RTVEpDVDAxNXlwUUNhU25LbU9PcVVpbXhDYWhmUzRlNGY5WHRmQmxTbEdXY1oreXl2TFNOWldjL3NJbi92V1NBSFU5anhzQ1AycEs4SXBIOGpSeWFEeGFpR0ZMeE1tUXhjNWtEZ2c2dkdkUDZLeTI0QTJBMGVCaWVYYmdQZlh5SHM4MlI0NTY5MjJKejBwVkFHc2pQNDQzbXhpRStvNld2M0xuZG5tMCtGL1ExSGt2NzRQZHZJbUhETjR1ckdGOHRFQitEbENGUStsRlNxaCtiQ1BJdmh6aGU2Tnh6cThEaCtpb3p1blpJb2ZJenJpbzFnY3JCZkIwUVlkalhHMEZUUjdwZE41NG0yTXB2RUgweWZ0RW8xOW5ydkxLOHRJMWxaeit3aWYrOVpJQWRUMnRIVi9DUFNzS3Q3endjeXRhR3JMYWFvNDJEMjJzc3dUUkxQYUcvcTZHaTdEakVoaHdLbEJ4amp3N0lNeXRJSTNOa004Y2IrSnRFeWY4d0ZrVEVGaUZMVVlpbVEvaFBYSTkzenJYaysrdnFvZ0xydTB0YVhndGxNMTdxdEFmekdRdTh5VWRJNHFxWXplSnhYeGYwTk5aMm9CamVEcjJEaXdJOU9YUFV1Qkhic0w0YzMvbncxMEVtMlU2TUZCVWNyWmovRE1hU0Z4VmNaN01vV2wyb244R20wVm93emNxUGRlL3FpMGpITXdHY01mOXo0OWVnWlJRekw3aEtTVU01VFB0MzdBbWszNzljY3dwTHRQVFQyM0JoN1VobmtkRzBHVW9IdkhzeTk5R3htUWFSNG5heU8vclFGYm9xdXN0U0ZMck84MC9QdG5IOEVKY3dRYVFZWkp6TjFiOWJENlJySmw2elFJb213TWZZdXUrbThGc083emQ0L2NmcjZoaU9lYkhTS1ptRFBGZDNYUkplLzlDTm5MR0xZWEpMcll2RXZ0Rnp3RDhBM24zZGhYV1BpbWtBaXNGMFIrN1BoUTlWSkxXY0doOHRxS2dvVm9aN2t6Qkd1RDdTaDljKzJTcitTQUdINmFIQlQ0RnQxZXN3VW5iK2ZuSkdoYUhTQy9Tdm96S0NMbVdOclBROTRhWnVZeU9PdjBmbFBVOVB2OUtPUVV5KzVVdWRsTXZ0cWw3QklKZm80UGloL2xLOGUxTkc5Sk4wRDlNTHUyZjcrVUJCY2duY0I5RWh1Y0tRQ0pzUmhQTGdacFgvcitzTGduYlMxSGNCSzU2djdxTm1QUVl6bE1Md2dVRlFGN0FkZXdUb2UvWWl1QWJxY0tjTTFNd0xmSTRiZS9nbkc0YzhSNFU5QlAxR2w4MVo1VExaZldmZTF4NlY4R3pKSTk4N1Z1SzJZNzEwbmxFc0lVQUNwMERBK3AzYjZxdy9iRVVHMGJvTFB6b05ySVRHdE9Jd0VidVhpQWp4a3Zocy9KQXZ3SUc2NXY2b05TazdZeEpaekZObytqMWZJYXowK0ZCalc1Y1dmK3NpT3Azdlloa1hXbzVTbDZhQzduUXI5RHpoTjcwVE9pOW5CekhRUkZsUjN2djZlYzh2WXlnSXlZUU5oeTljaXpZUzVrZDJSTitmV0xCNmlBZFEvREY3d3lIOTl6SXBySU5VNE54ZXZiNkh5VkpQazUxWEZCMVNJZ1NJcnJwejNFajNKK1ZpZ3BnRWJoVlo2cXNGbDhBbjJVWXBBbDN4THkxdWNCRjJ4QnVxWktZYnBKVXREOUZ3R2VSa1Z5RTF0R3FqSHRRWWgvSU1ncXZmYXlMWkJ4aU8rVjNUQzJWUEZ6MnJvQ3h4TjhJTHp5S0NjY3hJWTZFWXNnMndMYjFiOUIrcldINEc4Ti9yZ0M5RDByWHJuUUtFYllwK2xYWGx0d0VTUWdQenJiNUVvUlB0eTlkaWJsU0JieHI0UHdFbC9HbnhSbEZacFlrOER5ZkZKZHVOODEyMVg1bVJXS1U2NjltdUczakk0THNYcmhsNkJWVk1jWE45a2FxOXF6T3IydlRmNklzNU96Vit4Z1FOQkRzTWlkc0o1LzgrVStaTFhvb2t0Uzd6QjlEanlFblRReFdYT25oSXc0azdXemo2cG0rWkk1VzFOMzBRYlZCK1FmT0lmRnprQThSM2tzb0R1SXhma2crc1k2a1BHczdNY3JTV0UydzBXWlpUY2lEb21UTnovYS9BQVJHYUtMRS9lNGtnMXIwcFNFZDVMcWZ2MkdQRDBDVkcrSUlSc3E5NUhNRnJYRElmZi93OWJMSzh0STFsWnord2lmKzlaSUFkVDJ4OUpjZHg4LytFTUw2c0YrUkJoWk9JaXpkblVDY3ZqTHZFM2R2alQyWEJpY2RRRno3MUdTT2VnamcrSGZ5c1RhOTRwNDZVcy9nK2l1V0hBMnNkSHVFR1lTRW5RbC8xWGtyR0kxd09xTGM0eFcvVHhmY0pPU0JZMWZPSTJXTkF5cEtTSjNYTHExYjRiSGxxNkJWeFJsN1pHcFhJQSs0VGpoamNOV0QzaFcwaFFybzA2ODF0SHRnNytiandDc1Brdk1VejBHNWtQWmhtL3lwMVp1YXlHOGEraG5MQXN2dS9NbEtuUFl3cmxURlBFTFBDenJ0TktRbnhRZkxBYVMxSk1rUnlDR3Z4YVRra1EvaWZGN0tkelZueHlRMmM4OHhRd0djSndiNWlGd1RJckxLOHRJMWxaeit3aWYrOVpJQWRUMmVtV3U0V0Q1Skw5cFlReXM2dXVUanBVbnkzR0NCcXRtbFNGN1dBcWIvU0ROTkd6eU5RN2ZhOGN6Nm8yQnVlSDduc2V3dExyV0k4MTM5a0RZN2J1d0lKbFpQTnJRTzE0bktDNEZSZFlUZDZ0R0xSemR6cFJRM1lTTjFlYm9xTHlEYWlEdHQyRWVvMlN1T05TWERLa0RQVXRETi95RVhoQ1FjZ1VON29MSjBwOVRUZ3NBNEltOTNSTC9IWG5FWnZxdWVlaEVOMFJndXlpRWs2eGZxanRHLy9xcm9kZlhZZFoyWGV2VUEwZTNRMU9EcXVzb2daNjlOUFR3Y01JSUVCOU9qbENkQ1h0RGxHRml3WWg5bnNLYVdZWjJoWno5cGFBQTk2NXlSQ1JUNkZTT0x4YW5SaG8yRXNsSS9leGRZM202aG5hRm5QMmxvQUQzcm5KRUpGUG9WS1NlVjRIYzJLK1BIcGRtQVU3bENpMG5DOHdTNkxWcE1TUzEyQjR6bTJKaXkvL3IzckZyQ2o4OXdDVk00cldNZUhqR05FcUlPa2NBS0lwaFRuOE4rM3RXckx1ZXZKQ1c4dUNQbVJxTkJJeDNvNXU5QWdnMkNveEJjYmVLaFNrZ3hjc3J5MGpXVm5QN0NKLzcxa2dCMVBaczhRWDB3MzMwUmJ0K24rcWZHT0tnbHRUaTlUVUlFK25ha093QlV3bEd6R0NvdmNqRi9lc2VZZmlzVDFrQVRaYTVDQnBSRWgrZm5jM0xldExoNmxKemJSekNPVTdodlltZnFDZlFJRUUyTEsvd251bzd4S0ZNNXh1N3dkY2JZbDdMSzh0STFsWnord2lmKzlaSUFkVDIraUZ3RDA4N2VuUzlRbW5jKzZUdEd3eXFjc3p1ejZqMDBCRklTL1NiTVZobkpBQytaUVdTb09ZU3N6a2VuUFlta1M5eUZjUGxGZmpCWm1oRGlkeUtuc3NyeTBqV1ZuUDdDSi83MWtnQjFQYkdhMklMMnYwSkwrMDV5cXBFazFSWFJzUGRkcXU5Ry9nWkJ3WXRiMDIvNjRMSlVjN21adHc1S3YvNFU4NG9mL1p3bDRicHFGOWF6NU5KcktLa0YveGl5eXZMU05aV2Mvc0luL3ZXU0FIVTloK3RsOVF4aTg3SzJoKzUvQjlXSGd6SDdYMWl5MjlPWkNvTWVsWEQrQ2xWeXl2TFNOWldjL3NJbi92V1NBSFU5aUVTTU9vdk1rQjdhdldhZ3FkVkFaWHpjL2dicE9seDBnc0ZqaFB3bjB1aExlMTJlZmEwbW9VNVoreGFzZFpML0dDajQzdENWQlRtRlVMcnZUaXlncGFHZG9XYy9hV2dBUGV1Y2tRa1UraFVHaEc3TGpBTVhoa3RFWGJ1ckdRWm5tY3RCTGFULzNrOHROYkhBcFZnS1hqTEs4dEkxbFp6K3dpZis5WklBZFQyM2x3S3I2Y2hCYTBWMEJ6dFB6R3VJekZYYmxQeDlDUGppYVdYSGgvc2lNRExLOHRJMWxaeit3aWYrOVpJQWRUMlA0bDAyQnVLQkRFMzBrdjlCYkYzU24veEk4enM0OXI4WElFMlRuR1RRWGpMSzh0STFsWnord2lmKzlaSUFkVDJUOWU2bFBxdUFUZS93eFYzWFRTVGlVRE5HNU96bXkxbnpPTVNyMElianM3MCtiZkZ4OGg3WUJnMDBBTXM2Y2lLejRtblc3YnJ1T0htQzQ0blhrZnN3cmw1RUxoNEV0WldTcXJoZmthcENvS2lmM2lJQk5VNG5DZ09idVc1SlVMVHcxQUlDWnlBQ0V4bjl3NlcyaUJWSXEyVVVjV0Y2TjVka0VPREdBSXdJV3A0WVFCNndyUzBiVHdaTC9Yb0dWOVhzSnczcnovRTI0VnpzQU1ZSjFqcEtBeEkxMmQ3MGwvekFDWUNrbFUvZHRSQWdVbktmQ0N4d2NMUXE0S1FxQUxkdW14UXd1K2ROQkJVb1g0bVBwRHpoVG5wVWNOV2V1ZGxUZnZkQTZWYWZXRnh5MEdtTHJoYmVNcUNPcTZUSHA3Vk9aU1ZVRHA1Nm5uSzhPajBicnJtOUFkM0h6ZTRhaXRUc2cyVS9mY0grN3oxcmNFRlFyd0FTdU1FZ0ZUL0RiZyswbjArb2NHRFhvZ3p3c3hBWkR5YVN1YlJzbXRWMDVCUUZUSi9CTnZ2L3VmNWtTWTlpLzk3S1U3SUZtWXhsOHNwd3prVHJpbzRqQVJINlp3VFhwUmxIOTZUWmRkOTRwMnBUYWxMMmJ0SUtJSzVXazc0SzV3SDMyU1lUc2hWT2YvaXl5dkxTTlpXYy9zSW4vdldTQUhVOXNRc1ZKem0vcFlBZk5mVmhYR1JNSjZTb0Qyb2ZrSDlKK1pTbkxmREpFODBqOG5HV1NqZkdxblA4bTNRN3NjbDhnZGNFc1ZTRFZ4cVFTeHdhaVJVd0RCaDVPVENsN0R2b1pxRHdvaXhwME81VnFLdnl4OFdDVXlPT2ZmeU9yQWY1NW9lVUtuYTVwMklBd2N0eWg0SVJuVW4xOVFSeElkYStUeCtuS2ZENEdSZ0VNUDVLNzhmYi9tZW9Qa2JBZEhQVWJDZjZ5Qjh5TzQrOTZXbVFNcXJFaWF6S2V5WnRqYnZsaWtiT2VNUDVmQzhtN08xTy9DQm5oZm5PckdZekhad0hrQ3Fjd3hBcXJCOVdrYkxMeUhNWnZwNWdHZ3JJb0tHaEZIRDVibmY5ZkF6enBReSt3Nzg4N0RrSnl2djJ3bk9KK0txbG1aQW95SFZpSDQzRnowWGFBMFJtbUJicEhKZkFCY0psMnBBa0tvSFZVY2JkNng1Q3pSUjgvT0F0bnFPdk50Q3ppaG03V2w3N3YxZFBsRkh6eDNMSzh0STFsWnord2lmKzlaSUFkVDJsaEJGM0gwUG85RkVXQ0F4K3YwbmZnVXNZV2QyaXdoODl5QU1yNmFxUmR3Yk1aZmNhSVByZk1HaWg4UTZSVVNkR050OXIyYVcrUTg1cUhGSnRpOUFmV00rbitsc2dsdzJ5Y1dKbThIQkJrRkxtUTBXcHNOZ0VBamRTai8rdzhCbDFVVXdoeG5Ma2MvenNpdEtMUnRySENyTldSY1A5VkwzVGQ4SGFVTzZmU2xxaDM2UnVjZnc4VFExQjFNV291cGpoUFI4T1R6K0NVa2R5S1BiRTdVajFVRHBoOWtZYXFYUE1sMS82bXBxMDJiTEs4dEkxbFp6K3dpZis5WklBZFQyT1BmWnFmRXJQd3Q4Zkpsb28zRkhvWnNIajN1TlIweU9qSVNaUUZYZmhkV1lndFVtYjNYTklESG9IR3hXbnE1TTZkUi9oQkJvNVY0aStUTFp2TVVxZUZKY1I0bnkxVERSZDh0TzNkQmQ5MDZSd24vQkNxSEtPTzBHS012eEZBOXY4ZlRtMU1QZnlyZ05sc3dYQXVaanlIOXNxKzUwd2xaaHFvSk1WbEsxVXErdDFCOElLWWVZMmQzL3c1M3RlZTlnUzd0UUlFU0tWTFJSU01leWN1TGdvb01ISkhnaExaZGJ5SnAwWSsra0VxcTFyQUx2RUtjZnVkT3VTMDJhMU82RTMxQTlZeW1RUHlWK29nQTVSYTdZTWlMZ1E2MFQwZW9TaytjaWk0aFBLSnhlLzRiZS9YMzJOOHBJSUJMSG5HcVR0akVsbk1VMmo2UFY4aHJQVDRVR05ibHhaLzZ5STZuZTlpR1JkYWpsS1hwb0x1ZEN2MFBPRTN2Uk02TDJjSE1kQkVXVkhlKy9wNXp5OWpLQWpKaEEySEwxeUxOaExtUjNaRTM1OVlzSHFJQWVQeUNOckRKMzVkelVxOHNyNzVrNXA5c2ZzTjlmNmR6dnhBb0VnTnpnd1Z6S1BGbHhXcXd6VXdheld5ZEdDU1dwRGxIS2dPSUxZSGlMelpkZkg1cHRjbDZQaUNEYlVndHhOclFQS05nWFVCWUFwSzRGL0o5eFpsOUpQdzFNcllJMWs0VXA3R01VYWFjWHR6MmlsRFBGNlR4UEJiclNDeWlNVHZvRlp5cnk2UTVtNDl2Y1ZLZ2tST1AvUEIxMDZ6Z3F6VmtYRC9WUzkwM2ZCMmxEdW4wcDJ5T2RFaC9Dd2N1RlkyTkVVYUR1SUJvZ3liQ29BU3BHU3YvZFAvTmE5OWFhZkIrM3ZBNnhDN3NnOTFnR1JteHRsWE52WWlDTW1ERHpDWmhNZm5mL3FoeDFmOHZJT0Ryakw1aWQ2anhIcm1oQVJjVU94RDRqOS81OFd0Sll2YW10Q3p3czY3VFNrSjhVSHl3R2t0U1RKTXBnWnRpem9BWE41OWhRK1U1Q2hJUTBVVGpJcENDaGNBdldwOS9DSHlvNFJnOS9pcWlOTFNCT1c0MXBZdmdHVTd0SDFpUHVoZXgxOWJYTTVvOEU2V0NqT3lucDdOZ0FDVjMrUkF6NHJhbDFobmFGblAybG9BRDNybkpFSkZQb1ZDMVFPQ0dETy9vMXhYYjY4Z0dpSGlCQ3NzSDdXa1RzeFRmUFRxaXVYRzJOaVdzdW9OY1AvODQ0N1RPRHdCd1FoeGExZjNSRkwwcVZ5bHFHcmJQZXFmZ3dRWDBUTnVCcTlEL05USEl5aGVUdXdBb1ZZRzh2NGxNajdvcnZudW5Vd3dnazZVWCszVVViTGFBWjRLbXRkUjNoVHN4S2lpSzRScmlFcDA3NUVINTJsZGpSSmI0dWJJL1FYK3FkclRMeEZ3SWRZZVAvd2lpa05WT1hQTUNtN3VIdnJjSXB2aHFjVnRWRVgrRzlhTDh2UG56YytoSG54QTcwOGJENkxmSk5nYTNGeUhLaUJSM1VmOW4wRGdIR041WDFoeEdsUWJtOFVUTDlMSUJ2aUQ5NjBWN0pRdm1xQWgvazRwZGdHOXF3NFVnaE9oakV5NURtQ3ArZHY0UldPVU9hbTVxZCtLZWdra0VTT0c4a1FRZXB6cFF5K3c3ODg3RGtKeXZ2MnduT0o4Q0pSbDFFT0RNMFFZemt6TXR2OFhITEs4dEkxbFp6K3dpZis5WklBZFQyQ290cm9SUHI5TEFMMUt0K2Q3RDNNZHR4TmFzTFR1SmRESStxTmJiOFBUdFB1dC90RHFPUFhpMTF5dTR6VjMzblJZNkZqL1pSNW9LOG93N2tXbWJzMCtFOEdPaGhHakY1YTdzYi9RWHcyUU9EcXVzb2daNjlOUFR3Y01JSUVCOU9EQ1dPS0IrMXZyRktURmg4ZldvT0JnTFJKckU3NTFrMFNhRERsVk4zaXNOSkFPc2ZYanpHdm9ZelcyYmFwakdscXlqajZmeUJVKzVJd044RnE0bEJ2Z044WUk4Vk1kOGJid0lqdko1dktXQVNmQUFFQnkrTERWYzZzWHRjc1B2V3QzK3N1czlJMjJ6SzJUajdoUzZwNk1zcnkwaldWblA3Q0ovNzFrZ0IxUGJ4L2FMelNMUW10d080V1JvTjIyS1lWSkEzL1h6U0VnYmduZWd4cXFOT0JpM3Rkbm4ydEpxRk9XZnNXckhXUy96djdxMlUwSEFtU0hjYitudHRsc1ZMak1qUndqYU9nQXRSZWozZEV2U1BWRncvaTBhQ0sweE1RYkxLaFdieHRRQ0JrbGZGYVlWRkxQWlpFMG4zUy94ajFCUFRtRmRhVUd5WlJaMjZRREdoT01zcnkwaldWblA3Q0ovNzFrZ0IxUFl6TE5JVDY3c3doSjFURW5JQUxjVXMrNUpsd0p1N214VFJVNFdYQW5CUDEzZ2U1Z1ZqajFOYUo2OHd1YVBpVmg3QWQ2VVBXV2dSNndMSVBuVFVmdEZqMHA2VlhTSlB1VGVhd1JSUTRjM2NyWGVRbXRDSENwVWdYS1ZvdGNEZHpXQVRUbk9LSlZ5UDJtTE9sYk1oNXZNNyt1NGZMN00xNno4N1NKRUhUVFRtbStLOU5ITnBtU213SmJoYXNad2RneC9BZDZVUFdXZ1I2d0xJUG5UVWZ0RmpPSWloRi9DMzFnc0s0RXZ0dXVzbVVrODljY2tBUDVpdm1weUdSTDY2eEtUM2JCQS81NGxWT2lyVnhyWlFCL3c3VFM3bC9FZS8ybzFLRVVMOHA3RHRvL2M1c25RSmxDU1VmRERET3VleG1YakFPYlFnczM3YkxEeUU3NFlLS2JMUmR3eEplRWtDakRkd0x2TXVKR3JzQ096Mk90akFQSVFUa2pDaE5KeVdDelNFZHpYS0xxSWdSSzJpcEFNRmdLUnZsUmJhc0hQbFJ1c1NnMHBSTlZVQ1FaM1hQZ2wzcVRJbGFNSG9iQlFSblAwMTF2b2g1eTZEQk1LQzE2bFlORDhVZm15Z2NsVFlzWkNlZGVwN1Vsb0Rxd2NqSGE2S0g4VzFXRlo5RFh4UDNXdllGMFJEcllUYjRqb1FtSVZWL2NKbmVkM2NQMlVydnBscjZMbmRUcmtOcUJZQXBLNEYvSjl4Wmw5SlB3MU1yWUkxazRVcDdHTVVhYWNYdHoyaWxEUEY2VHhQQmJyU0N5aU1Udm9GWnlyeTZRNW00OXZjVktna1JPUC9QQjEwNnpncXpWa1hEL1ZTOTAzZkIybER1bjBwMnlPZEVoL0N3Y3VGWTJORVVhRHVJT3J6NXNtWnVMdklYbVdPcEVYV2lHb0lsaXlrcG5IY21sWlpIbEpwVnV2b1V6MEc1a1BaaG0veXAxWnVheUc4YTlxUm9yVlhJdC9oYTk0S2Myd2ZUY3ZMSzh0STFsWnord2lmKzlaSUFkVDJ6dVpoRnFIVkZSSlVjajBPL2VUR0xsM0JZTFZQRFVRYUw5Zkh0MzVTdjZtRklpMkVCVjdsZmtwamxTTFJYUU85Q3p3czY3VFNrSjhVSHl3R2t0U1RKSUhJYXczZ1hrcUFvMGVqd0pYcjIyS3JiWWZKOUc1WDg5UG1DSGl5cHpHSkFvMDNjSTIwd0wyRXdXM2pUZVk3Yi9ZV1lDcGxyTnFNQ0VuOEdvazRuNldmYi9tdmMzdWlTejJTZG03OVVpWGpKamZMMzA1aFUxYitCSGp4MktyU0NLZ0VWby9CR1JZUnQvdXR5a3RyaTZaQmVIQlVMYW5nNnJ5Ky9kUlY1TjNFc0R1YkpSWDZJRFpQemo4dHdRNlNjdmt2bjRjS0MxUVorVHBNVVJyTS9SVGhCTUVFVHBUZnF5TzRaTWF6VnNiSWVSMDRlTEcycVpibEdYclR2NFVFYXhUM0p5aHROR1plU2hiZytQZDc5LzI0M3pYYlZmbVpGWXBUcnIyYTRiZU1adHl5ZzN5YVROOXp1UmlyNExWem9sdFZkdXFJcFJXTWx4V2ZyK3hCeFBCUlJoWkFBTGVNVUFnYjV4VUR6MVN4c3RjWXU2bXJmRWhQaTgramorR2RrS2JpUW0yVnljN2RKWlZQOFVPUTdEdmF4OThUbzNqeFFBRHU5YnlZRGlRdWRIK0xsR2J0clBQazFCRzVzdEoxUzJwL25tUlhaNElPQU5Mb0VEbjJ6U0JGM0RNQzZkczc2amd2MzViNHlGVHh5eXZMU05aV2Mvc0luL3ZXU0FIVTloUXYzcnN3c0JINVluTkJPKzAxL0JuT2xETDdEdnp6c09RbksrL2JDYzRuNFdFeHJpUzdETENaZHVpRU9Ka1hNdmZ5bnBFcjFkTThwa082dzl6WStUc3RmZ0Q0Y1FrcFRJeTVZK0d5cFNuSG9ETGluUjBpZnJTandCUng4L2NZbk02VU12c08vUE93NUNjcjc5c0p6aWR5UzZsYnZjZFl5VThiOEc2SGF6MlNhc3ZnNUZlTlZ1bW1jZWlqb2k4ekRWMXVIemxwSjlidVVBYm1MUDFOd2VOZXVxSzZZVnZwNnZDZUU0R2hmSHlIWUtpOXlNWDk2eDVoK0t4UFdRQk5sdlR2MzRiSkd3c2g3Y1VZWHkzMXdaVE9sREw3RHZ6enNPUW5LKy9iQ2M0bmljZm5Jcm55bU0rUmhjVk5mWnV1dTE1UlZ5R2E2NEtQbTQ1UUtBV2V1MG5oVEJEUVl3RkZzSC85VFpNUk4ybGJIdDRZaC9jVkVoM0hvQ1lGajJBZ01Vb2I4S24xS1ZpRE9zdmU4am1oNjh1cFVobUg2STdIZVhpMVlkVEhVajZKaG5hRm5QMmxvQUQzcm5KRUpGUG9WS0pmUHdoMkdrWEQ3RnFGNTBHUjlHYmp3WDhmYmZqWXdvcmRrWHMzNURvcEE4OCtZdTQrU2J6Z3pKS0V3aUpmcTFvSlM4Q21laHVjT3NMRnJSVFdtbnFBekI4RDA4VFl0NExvbEJLbU9GRHAxWFZYU1ZxbWF4cEhreHpzb0c5N2hzLzlwd1c1VGxLREZ1YXdGKzNTUGd0aDhiQmxReDZqSWFYZVJvU1l2NGo3a2puaGN6cS9CRjIrcHlmRHdTQWpTQmpYTitBNGs0Rjk1SUhYK2VQRXdGenVKdG1UQ0xmOXZUQXhXRThvY1M1ZUJQZU8rc0Q0UXcvQjIvMW83RkJoQnlZc3RvRDNqVGIrc3g4Z1kvYzlJdnZyM0tPalpnT1NEelR1Znk4TTdWWGhQdTJaN1BTTnJMOS9rbUE2eXM1djF0S20ralFhd3YzL1FIWDQySjl5OGhBMnVMa0ZhTnlPNFh4Q1YwdXJUcGlFV2NHTU1yK2xPRUp5ZDcrbk5tS3dqOFpERVYrelBtTEhMbENISUJ0TXU0dkxLOHRJMWxaeit3aWYrOVpJQWRUMmN2STdjT05PVXh2bm4vaGUxSUVQazZZYWNqMnJlM2hLc3JtY0k4K21PNGpMSzh0STFsWnord2lmKzlaSUFkVDJWb1Q1UFg3VG5Wb0wzM0tlcXJSN2JxY3pGL0Y3aGNFLzA0SGwwTjF2SXMyVjhGWlEvdWhjdVNic05qY3hCUWIvSG5IOTYrdlAvbC9iSDAyUXYzdFZoSFF2OWNGdXFKVUVhc3JUeXpDWGEwSXIxamtMRjgvcmh2amNxMmp5NmkxNXI2STE3ZWlmQ2l5K2RZVzZyNnZRWFdPOXBZYk8yc25pWFgyeVR4VnNva0V5VExCZzgxVUQvY0NjU21mazZxdXdjR1F0cXp6OVNicTYyNG9yeVE2dTJaRllubzUvK0ZxYmhIUnF2TnBMZXdJRVFzR2tsamtyU0RDQTVOWlRvYWM5NUU1TnplaHdoOFNDa3lvaEtPaFFhMWZDWnVIZHZXOURlQnFVOFhpczFMdmFFWFRCdzAwR2dkb0tPT0NTcXFWV2R2R2hLckxJanlhMTF5QnAyTE10ek9yczhvMy85a25seFNWYUVSeXBXWmRzcEF6TXNFeWp5emdnSVRQalpUVCt2a0JNeWR3bTB1NjVOTGVTamVLSWZleDI0VE4waHVuMEhsV2lIUUlVKzNZeDZZcHJpMXREaHd6MzgzUXBoRXlLRmh3MGhaZzFyN2xHdjBucFVvcHpRdnVTWmNDYnU1c1UwVk9GbHdKd1Q5ZDdwZ29SblFodWZGREJ5RWQvamswS00rRjUrRTZrOUpWdXQ1QXFxcUlqRHFOVGlsa1RjWmNoM3oxK1luTjNZc0hiUCtBaldIalZjWXFITVBlTTYxdWlxZVFkcVBCUlVEQUtxSHlYekVvUnlMSkNHbm4zNTB1YUlzOGR4UHhYY2dvOFIvNFE2aU1wWVRhVkhJT3BISm5XaEptSXJ4NUgyYmNMYmZUNS9RbU1JTVc1TGdvdXMxNXkvQUpyUjBuVm1lVmNNSml4VXI4eEI4d09hZXNxWWFkRnl5dkxTTlpXYy9zSW4vdldTQUhVOWtPWW9nZ3VsNDR6SVo2MUxyb0ZnWEtHZG9XYy9hV2dBUGV1Y2tRa1UraFVQYlZjMDgwYWtraExYT3I3Y2c4VkVVdlpiejBIWDhoUEZzYWJVRDZyK2EyTUxsMEZOeVoyRUhZa1Y3ekFCL1dOQUVaTHEzYXV2K3A3T2J2WDdzL3BMbFI0WWdLVkNST0JWeGxOOGczWFdLbjM2OU4xamxvc3FSQmRETWZKQkJiRFR6Y2s4ODNEWUoyTk5kVlFZak9xZ3NiS25scThZK1BqMjdkNXdDK2FaS1M1Qy83Q2VTdThmcklnYmdpbmhmN1ErdzIxOGg5QXRLVFhDUWlsZ2V1UkxJNm9mSlRkV3R5SEJDY2FOcjdYOWhncHJSK1prUkVld1FtMGppbU43bkM3eXl2TFNOWldjL3NJbi92V1NBSFU5azh1WkVVUHJCMlYxTG04bE95M2M4M0hJY1JXNEUxNkI3bGNwTEhxWmFlcERoa3dvQy9NYXVRTE5vNWlFVzJldWNlam1mZ2FaTkxHMWxFUVM5b0daQk1EeGhuUWdxL2pvN25KWXhXR2hwREZFNlNzaFNOcGtjKzN1a1huZ2FkZmlIOU44MEFQWElYdnU4cWorNzRjSExmT2xETDdEdnp6c09RbksrL2JDYzRuaEEwMWtzTldQaUxqa0FiOFV0S0pxNGlOT0wrRURFejZyZlluYTZFRFlEN250cy9TT0xOM1M1eFVRd0ZRUi8rTFRUcDdSYnVnWjIrNmJNcUF5WnFZZThzcnkwaldWblA3Q0ovNzFrZ0IxUGI1ck9hUndtMUhmZ3JsY2cxWkVnM1JVbm5PaEYwWVlCeVVZWGRCT0RrN3BQTWw2UzFhbDlTckhmZ3ltVE9kSU1iWEpGYlY3MkJRbGp3VUs5NkdWM2FRb2hNamswL0krUktkaTA4OURnb01id0EzK1ZjLy9lSHFoNzc2WU5lRmh3a05xOUFkREo0bi9MUkQzV3RZSlhBU3QzaXZDNHU5UUJUZmIvdkNtTkppL2Z6YWVzNG9KQUt1U2MwQ28rYXU2Ulp5cHg1RDVqTE5tWE0zRjhZWnBnOHlWZ1FYd0dvdzlGNTNUUHR3RUxoRWJDZFVKT2crM1d2TFhSa1djcFphbGc0SzE1OWFFTS92d1l3Q3EzNGx4a1NGaGxLeVRVZzVSc1hmUkxwYU1obTBlWlNIZHVvREhOZjRaMW9nZ1pHemlrb0dvcDhjL3pyb1dCb04vYVZLbW44czRUeUUrVUJRZXp2MWZMQmVVeUJHYkg4SlhBLzV1MjE4RVpCQlF0dzNvcUV2OHlKMkRjVmRLTnhtenRCOExtbkgnKVxcblwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6aG16Z2iLeeZu+W9lVwiLFwicGF0aFwiOlwicHdkLWxvZ2luXCIsXCJydWxlXCI6XCJqczpcXG52YXIgcmVzID0ge307XFxudmFyIGQgPSBbXTtcXG52YXIgaXNsb2dpbiA9IGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvaXNsb2dpbi50eHQnLCB7fSk7XFxuaWYgKGlzbG9naW4gPT09IFxcXCIxXFxcIikge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdXJsOiBcXFwicHV0VmFyKCdteV9hY2NvdW50JyxpbnB1dCk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/kvaDnmoTotKblj7fmmK8nICsgaW5wdXQ7XFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAnaW5wdXQnLFxcbiAgICAgICAgdGl0bGU6ICfotKblj7cnLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBvbkNoYW5nZTogXFxcInB1dFZhcignbXlfYWNjb3VudCcsaW5wdXQpXFxcIixcXG4gICAgICAgICAgICB0eXBlOiAndGV4dGFyZWEnLFxcbiAgICAgICAgICAgIGhlaWdodDogMSxcXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IGdldFZhcignbXlfYWNjb3VudCcpXFxuICAgICAgICB9XFxuICAgIH0pO1xcblxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdXJsOiBcXFwicHV0VmFyKCdteV9wYXNzd29yZCcsaW5wdXQpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5L2g55qE5a+G56CB5pivJyArIGlucHV0XFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAnaW5wdXQnLFxcbiAgICAgICAgdGl0bGU6ICflr4bnoIEnLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBvbkNoYW5nZTogXFxcInB1dFZhcignbXlfcGFzc3dvcmQnLGlucHV0KVxcXCIsXFxuICAgICAgICAgICAgdHlwZTogJ3RleHRhcmVhJyxcXG4gICAgICAgICAgICBoZWlnaHQ6IDEsXFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBnZXRWYXIoJ215X3Bhc3N3b3JkJylcXG4gICAgICAgIH1cXG4gICAgfSlcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwi4oCc4oCc5aSn5Lya5ZGY77yfKOWFiOeCueaIkSnigJ3igJ1cXFwiLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG4gICAgICAgIHVybDogJChcXFwi5LiN5piv5aSn5Lya5ZGY5Yir54K556Gu6K6k77yM5ZCm5YiZ5ZCO5p6c6Ieq6LSfXFxcIikuY29uZmlybSgoKSA9PiB7XFxuICAgICAgICAgICAgcHV0VmFyKFxcXCJpc3ZpcFxcXCIsIFxcXCIxXFxcIik7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5L2g6YCJ5oup5LqG5aSn5Lya5ZGY44CC56Wd5aW96L+QKOKcquKWveKcqilcXFwiXFxuICAgICAgICB9KVxcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwi4oCc4oCc55m75b2VKOWGjeeCueaIkSnigJ3igJ1cXFwiLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG4gICAgICAgIHVybDogJChcXFwi56Gu6K6k55m75b2V77yfXFxcIikuY29uZmlybSgoKSA9PiB7XFxuICAgICAgICAgICAgcHV0VmFyKFxcXCJsb2dpbmluZ1xcXCIsIFxcXCIxXFxcIik7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5L2g6YCJ5oup5LqG55m75b2V44CC56Wd5aW96L+QKOKcquKWveKcqilcXFwiXFxuICAgICAgICB9KVxcbiAgICB9KTtcXG4gICAgaWYgKGdldFZhcihcXFwibG9naW5pbmdcXFwiKSA9PT0gXFxcIjFcXFwiKSB7XFxuICAgICAgICBpZiAoZ2V0VmFyKCdteV9hY2NvdW50JykgIT0gJycgJiYgZ2V0VmFyKCdteV9wYXNzd29yZCcpICE9ICcnKSB7XFxuICAgICAgICAgICAgLy8gVE9ETyDlkJDkvazor7Tov5nph4zlj6/ku6XmlLnmiJAgJC5yZXF1aXJlIOeUqOazlSAgICAgICAgICBcXG4gICAgICAgICAgICBldmFsUHJpdmF0ZUpTKFxcXCJkdGQxUDNkVEVJVG9uc2dyTkZmb0JpZ2k1bGphejBQZUdtYm1NampyOUg1bmZ2c25CdzdKRnAzN2NuM2VncXUweS8wd1RXMm9VN3F0TXdRSUFpTGhFU1ZLQmxLa1J2VzBwblBEZEhsN1BHd3dEVDVHTTF2QnNvZ2I3WURwd213VjhydHRhZDBPNVlKQnZwalgyOWhVQnBTc2lhbzdsM1VlYnp4TkFXWWlqN1l3SFdodDBqVmJoNVNMN1BYVm8xNDlmUFNUdXhsOEErdkxVV2krMld4R3JPWitRdnRyWUluMjhCcVM4UFM3emYwUjB5cjloWHpqYk1PT1gyQ09kVllLUGRiR3N4emtsVjVYMkxMbUtiUGdFZlFFbENnTVpwWXVuZTBJOE95STU1SExLOHRJMWxaeit3aWYrOVpJQWRUMmRUUXZDQmIraUhqcFI2SzBNcjBkZmMvanJUZC8rbm1zbVdya2ppdHVxOHgyaDdVM2JabWF4a3FZcnhTb3ByTGladm5Ca1N2RW9JaXFVVU9LaW1DeTAxZjN0UmZTUUJlUjVsZ1Q1QS94cWdkMjhhRXFzc2lQSnJYWElHbllzeTNNTFpSaFNMdzVrZFNVM1krZHlDYTZaY0lEeGxPR2VTRkxtSTBPQ0ZicFplOWJZN25LVU9haTMrVEhzYUZpRUVxcGQvNm5VUUY0VFpSQmdWcWpZRUZ3V0p5S0FLNkRBcW9SdkIyVDBpZjJ3VXZPbERMN0R2enpzT1FuSysvYkNjNG55WnhkRGZRWE42UnFCK2k2TmdUYkNqTmQ0VEZYNWZXQnZIYTVwSHJUU1pBaFRXOXdGQTV3c0FEQjk1eStKeDJYOVFrNEdMQ0dzdGdHY21IbTk2YXAxdVdxK0s4dkdFWkViRWprVTUydE1TNXp6NmdtN1loWGY4ZUJZQm1FYWlMdU1lVTc1R2UycVM2dU9vajIySVRFVWNzcnkwaldWblA3Q0ovNzFrZ0IxUFlaTnluWExsMXRmb0RZM0haZ1Bha2Y2RCtBRHpRWXF4cVJLWkN0bE5JeWE5azhDNEg3ZmJoTERYZFdBM29WNXlVT2dhU1hLMU9NNDBGeE55TlhwQS9aS1M2Z1kzQjEvVjIrenB6K1E3Q211ZTUrcWFPMFhyRFAxNWhqUzRieG5Xck9sREw3RHZ6enNPUW5LKy9iQ2M0blh4ZWt1b1RWVVJZN2VoK2RJRjRRT2FYbWJOallOa2lxbkFkODVGclhLWG9lZ0paQzg1QjRKVnFPV2N1ZWlwTmFIeS9kd0FoS3BuSy81Sk83WjZ5YTJsczIvSnZQT0NQOTFlNmc0SE8rWXFFcExxQmpjSFg5WGI3T25QNURzS2E1bnByYmtJUDJrbkRYWHF0TVlHUmRjaWdlSVJ6K09IbW5LTG0vK1dDUGEwNjE4RXF2TXNHZzlmcHZ0VW8yL3RtMFJ6WVlpOGt1RkdvcFR5b2lrRHdpM2NzcnkwaldWblA3Q0ovNzFrZ0IxUGExQURrdml2a25jRWhQV1A0d1hDYVR3d3BaMEc2K1lUdnlwNjh0aEZkQUw1eHg5K25VYTVqV21KVXl5UStyMVVzRDVzTXFpblk1Yi9lRFVueFJLS0JUenBReSt3Nzg4N0RrSnl2djJ3bk9KeWRIUE0yYWg3OGVBdHRTYWhWQ0ViL2wzWnFpMmhGa2laSjhneFBDMFBZNy9xdDJOMG44bEhEOCs3MktUVURJcXVYNTY1Q0lRbmNEVzVLZlhVWkxPblpiczZSVHFSMDBMdVBIQXhQSUhoaWFiamtOdlNWUU96djNhd2VyYW1lU084c3J5MGpXVm5QN0NKLzcxa2dCMVBiWmZBQSs3ZytZZFROcGV1OUxSUm9vaUZ3Vi85Y3U1SHBFZ1oyWDZ3YVdkb29ZMWc1cENYS3BNdS9kN2MzaGRRZkxLOHRJMWxaeit3aWYrOVpJQWRUMlk5NnNrQnRObHZOQXg2SUdwektOOGVOME9KQ20ySXFzSkpuSFhKZDFmcnlDTW1FQ0ZFZWFWYnB1S0czVjA5d0FDN1NZaTdqL2JDQitEQzExQlNhWnY4QjNwUTlaYUJIckFzZytkTlIrMFdNdFpqSzRRbGZ6c010Z0dxZG5sL0QrXFxcIilcXG4gICAgICAgIH1cXG4gICAgfVxcbn0gZWxzZSBpZiAoaXNsb2dpbiA9PT0gXFxcIjJcXFwiKSB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIuKAnOKAnOW3sueZu+W9le+8geKAneKAnVxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiLFxcbiAgICAgICAgdXJsOiAkKFxcXCLnoa7orqTph43mlrDnmbvlvZXvvJ8o6K+35LiN6KaB5bCd6K+V5aSa5qyh55m75b2V77yM5ZCm5YiZ6LSm5Y+35byC5bi4KVxcXCIpLmNvbmZpcm0oKCkgPT4ge1xcbiAgICAgICAgICAgIHB1dFZhcihcXFwiaXNsb2dpblxcXCIsIFxcXCIxXFxcIik7XFxuICAgICAgICAgICAgd3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvaXNsb2dpbi50eHQnLCBcXFwiMVxcXCIpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+S9oOmAieaLqeS6hueZu+W9leOAguelneWlvei/kCjinKrilr3inKopXFxcIlxcbiAgICAgICAgfSlcXG4gICAgfSk7XFxufSBlbHNlIGlmIChpc2xvZ2luID09PSBcXFwiM1xcXCIpIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwi4oCc4oCc5L2g6ZyA6KaB5Y675a6i5oi356uv5pS55LiL5a+G56CB5omN6IO955m75b2V77yB77yB77yB4oCd4oCdXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuICAgICAgICB1cmw6ICQoXFxcIuehruiupOeZu+W9le+8nyjor7fkuI3opoHlsJ3or5XlpJrmrKHnmbvlvZXvvIzlkKbliJnotKblj7flvILluLgpXFxcIikuY29uZmlybSgoKSA9PiB7XFxuICAgICAgICAgICAgcHV0VmFyKFxcXCJpc2xvZ2luXFxcIiwgXFxcIjFcXFwiKTtcXG4gICAgICAgICAgICB3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9pc2xvZ2luLnR4dCcsIFxcXCIxXFxcIik7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5L2g6YCJ5oup5LqG55m75b2V44CC56Wd5aW96L+QKOKcquKWveKcqilcXFwiXFxuICAgICAgICB9KVxcbiAgICB9KTtcXG59IGVsc2Uge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLigJzigJzngrnlh7vov5vlhaXnmbvlvZXpobXpnaLigJ3igJ1cXFwiLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG4gICAgICAgIHVybDogJChcXFwi56Gu6K6k55m75b2V77yfKOivt+S4jeimgeWwneivleWkmuasoeeZu+W9le+8jOWQpuWImei0puWPt+W8guW4uClcXFwiKS5jb25maXJtKCgpID0+IHtcXG4gICAgICAgICAgICBwdXRWYXIoXFxcImlzbG9naW5cXFwiLCBcXFwiMVxcXCIpO1xcbiAgICAgICAgICAgIHdyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2lzbG9naW4udHh0JywgXFxcIjFcXFwiKTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/kvaDpgInmi6nkuobnmbvlvZXjgILnpZ3lpb3ov5Ao4pyq4pa94pyqKVxcXCJcXG4gICAgICAgIH0pXFxuICAgIH0pO1xcbn1cXG5yZXMuZGF0YSA9IGQ7XFxuc2V0UmVzdWx0KHJlcyk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9DaGVyaXNoUngvaW1hZ2V3YXJlaG91c2UvcmF3L21hc3Rlci9pbWFnZS8xMzA5NjcyNWZlNTZjZTljZjY0M2EwZTRjZDBjMTU5Yy5naWYifQ==
Add Comment
Please, Sign In to add comment