xiaomianao666

小程序:云动听书APP

Jan 21st, 2025
583
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@云动听书APP@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR5Yqo5ZCs5LmmQVBQIiwiYXV0aG9yIjoiemhhbyIsInVybCI6Imhpa2VyOi8vZW1wdHkjI2Z5cGFnZSIsInZlcnNpb24iOjEsImNvbF90eXBlIjoibW92aWVfMyIsImNsYXNzX25hbWUiOiIiLCJ0eXBlIjoibXVzaWMiLCJjbGFzc191cmwiOiIiLCJhcmVhX25hbWUiOiIiLCJhcmVhX3VybCI6IiIsInNvcnRfbmFtZSI6IiIsInllYXJfbmFtZSI6IiIsInNvcnRfdXJsIjoiIiwieWVhcl91cmwiOiIiLCJmaW5kX3J1bGUiOiJqczpcblxudmFyIGQgPSBbXVxudmFyIGdldFJhbmdlQ29sb3JzID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuICgnMDAwMDAnICsgKE1hdGgucmFuZG9tKCkgKiAweDEwMDAwMDAgPDwgMCkudG9TdHJpbmcoMTYpKS5zdWJzdHIoLTYpO1xufVxuLy8g5b2T5YmN6YCJ5Lit55qE6aG16Z2i57Si5byVXG52YXIgdGluZGV4ID0gc3RvcmFnZTAuZ2V0TXlWYXIoJ3RpbmRleCcsIDApO1xuLy8g6aG16Z2i5qCH6aKY5pWw57uEXG52YXIgdGl0bGVzID0gW1wi6aaW6aG1XCIsIFwi5YiG57G7XCIsIFwi5Lmm5p62XCJdO1xuLy8g5Zu+54mH5pWw57uEXG52YXIgaW1ncyA9IFtcbiAgICBcImh0dHBzOi8vaW1nLnZpbnVhLmNuL2ltYWdlcy9JZEhoQy50aC5wbmdcIixcbiAgICBcImh0dHBzOi8vaW1nLnZpbnVhLmNuL2ltYWdlcy9JZERRSy50aC5wbmdcIixcbiAgICBcImh0dHBzOi8vaW1nLnZpbnVhLmNuL2ltYWdlcy9JZFZ0RS50aC5wbmdcIixcbiAgICBcImh0dHBzOi8vaW1nLnZpbnVhLmNuL2ltYWdlcy9JZGxVdi50aC5wbmdcIixcbiAgICBcImh0dHBzOi8vaW1nLnZpbnVhLmNuL2ltYWdlcy9JZHFsay50aC5wbmdcIixcbiAgICBcImh0dHBzOi8vaW1nLnZpbnVhLmNuL2ltYWdlcy9JZDI5Si50aC5wbmdcIlxuXTtcbi8vIOavj+S4qumhtemdouWvueW6lOeahOWbvueJh+e0ouW8le+8iOWumuS5ieS4jeWQjOmhtemdouWvueW6lOeahOWbvueJh+mAu+i+ke+8iVxudmFyIHBhZ2VJbWdNYXBwaW5nID0ge1xuICAgIDA6IFszLCAxLCAyXSwgLy8g6aaW6aG1XG4gICAgMTogWzAsIDQsIDJdLCAvLyDliIbnsbtcbiAgICAyOiBbMCwgMSwgNV0gLy8g5Lmm5p62XG59O1xuLy8g5qC55o2u5b2T5YmN6YCJ5Lit55qE6aG16Z2i77yM5Y+W5Ye65a+55bqU55qE5Zu+54mH57Si5byVXG52YXIgY3VycmVudEltZ0luZGljZXMgPSBwYWdlSW1nTWFwcGluZ1t0aW5kZXhdIHx8IFtdO1xuLy8g5Yqo5oCB5pu05paw5qCH6aKY5ZKM5Zu+54mHXG50aXRsZXMgPSB0aXRsZXMubWFwKCh0aXRsZSwgaSkgPT4gaSA9PSB0aW5kZXggPyBgPGI+PGZvbnQgY29sb3I9XCIjOTM3MERCXCI+JHt0aXRsZX08L2ZvbnQ+PC9iPmAgOiB0aXRsZSk7XG5pbWdzID0gY3VycmVudEltZ0luZGljZXMubWFwKGluZGV4ID0+IGltZ3NbaW5kZXhdKTtcbi8vIOa4suafk+mhtemdouWGheWuuVxuaWYgKE1ZX1BBR0UgPT09IDEpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRpdGxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBkLnB1c2goe1xuICAgICAgICAgICAgdGl0bGU6IHRpdGxlc1tpXSxcbiAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoaSkgPT4ge1xuICAgICAgICAgICAgICAgIHN0b3JhZ2UwLnB1dE15VmFyKCd0aW5kZXgnLCBpKTsgLy8g5L+d5a2Y5b2T5YmN6aG16Z2i57Si5byVXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTsgLy8g5Yi35paw6aG16Z2iXG4gICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcbiAgICAgICAgICAgIH0sIGkpLFxuICAgICAgICAgICAgaW1nOiBpbWdzW2ldLCAvLyDkvb/nlKjlr7nlupTnmoTlm77niYdcbiAgICAgICAgICAgIGNvbF90eXBlOiBcImljb25fc21hbGxfM1wiIC8vIOagt+W8j1xuICAgICAgICB9KTtcbiAgICB9XG59XG50cnl7XG52YXIgYXBpdmlldyA9ICQucmVxdWlyZShcImhhbnNodVwiKTtcbnN3aXRjaCAocGFyc2VJbnQodGluZGV4KSkge1xuICAgIGNhc2UgMDpcbiAgICAgICAgZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vcGFnZS9ob21lJykpLnJ1bGUpXG4gICAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTpcbiAgICAgICAgZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vcGFnZS9jbGEnKSkucnVsZSlcbiAgICAgICAgYnJlYWs7XG4gICAgY2FzZSAyOlxuICAgICAgICBldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL2NsYTEnKSkucnVsZSlcbiAgICAgICAgYnJlYWs7XG59XG59Y2F0Y2goZSl7XG4gICAgbG9nKGUubWVzc2FnZSlcbiAgICAvL2xvZyhnZXRNeVZhcignYScpKVxuICAgIGlmKGdldE15VmFyKCdhJykgPT0gJycpe1xuICAgICAgICB2YXIgaHRtbCA9IGFwaXZpZXcuZ2V0aHRtbCgnaHR0cHM6Ly9iY2Vib3NvcmcuZ3ouYmNlYm9zLmNvbS9jbG91ZC9hcHAvc2VydmVyaW5mby5qc29uP3Q9MTczMjE3MTQzMzE0OScpIFxuICAgICAgICB2YXIgc3RhdGljX2FkZHJlc3MgPSBodG1sLnN0YXRpY19hZGRyZXNzOyBsb2coc3RhdGljX2FkZHJlc3MpXG4gICAgICAgIHZhciBzZWFyY2hfYWRkcmVzcyA9IGh0bWwuc2VhcmNoX2FkZHJlc3M7IGxvZyhzZWFyY2hfYWRkcmVzcylcbiAgICAgICAgc2V0SXRlbSgnc3RhdGljX2FkZHJlc3MnLHN0YXRpY19hZGRyZXNzKVxuICAgICAgICBzZXRJdGVtKCdzZWFyY2hfYWRkcmVzcycsc2VhcmNoX2FkZHJlc3MpXG4gICAgICAgIHB1dE15VmFyKCdhJywnMScpXG4gICAgICAgIHJlZnJlc2hQYWdlKClcbiAgICAgICAgdG9hc3QoJ+Wfn+WQjeW3suabtOaWsCcpXG4gICAgfVxufVxuXG5zZXRSZXN1bHQoZCkiLCJzZWFyY2hfdXJsIjoiaGlrZXI6Ly9lbXB0eSMjZnlwYWdlIyMqKiIsImdyb3VwIjoiRumfs+mikSIsInNlYXJjaEZpbmQiOiJqczpcbnZhciBhcGl2aWV3ID0gJC5yZXF1aXJlKFwiaGFuc2h1XCIpXG52YXIgaHRtbCA9IGFwaXZpZXcuZ2V0c2VhcmNoaHRtbChhcGl2aWV3LnNlYXJjaF9hZGRyZXNzKydhcGkvbm92ZWwvc2VhcmNoL2Jvb2tzJyxNWV9LRVlXT1JELE1ZX1BBR0UpIFxudmFyIGxpc3QgPSBodG1sLml0ZW1zXG52YXIgZCA9IFtdO1xubGlzdC5mb3JFYWNoKCBpdGVtID0+IHtcbiAgICBkLnB1c2goe1xuICAgICAgICB0aXRsZTogaXRlbS5ib29rTmFtZS5yZXBsYWNlKC88d29yZD4vZywnJykucmVwbGFjZSgvPFxcL3dvcmQ+L2csJycpLFxuICAgICAgICBkZXNjOiBpdGVtLmF1dGhvck5hbWUrJyAgICcraXRlbS5jYXRlZ29yeU5hbWUsXG4gICAgICAgIGNvbnRlbnQ6IGl0ZW0uaW50cm8sXG4gICAgICAgIGltZzogYXBpdmlldy5zdGF0aWNfYWRkcmVzcysnLycraXRlbS5jb3ZlclVybCxcbiAgICAgICAgdXJsOiBgaGlrZXI6Ly9wYWdlL2Vyamk/Ym9va0lkPSR7aXRlbS5ib29rSWR9I2ltbWVyc2l2ZVRoZW1lI2AsXG4gICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV92ZXJ0aWNhbF9waWMnLFxuICAgICAgICBleHRyYToge1xuICAgICAgICAgICAgYm9va0lkOiBpdGVtLmJvb2tJZCxcbiAgICAgICAgICAgIHBhZ2VUaXRsZTogaXRlbS5ib29rTmFtZS5yZXBsYWNlKC88d29yZD4vZywnJykucmVwbGFjZSgvPFxcL3dvcmQ+L2csJycpXG4gICAgICAgIH1cbiAgICB9KVxufSlcbnNldFJlc3VsdChkKSIsImRldGFpbF9jb2xfdHlwZSI6Im1vdmllXzEiLCJkZXRhaWxfZmluZF9ydWxlIjoiIiwic2RldGFpbF9jb2xfdHlwZSI6Im1vdmllXzEiLCJzZGV0YWlsX2ZpbmRfcnVsZSI6IiIsInVhIjoibW9iaWxlIiwicHJlUnVsZSI6IiIsInBhZ2VzIjoiW3tcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLpppbpobVcIixcInBhdGhcIjpcImhvbWVcIixcInJ1bGVcIjpcImlmKE1ZX1BBR0UgPT0gJzEnKXtcXG52YXIgaW1nID0gJ2h0dHBzOi8vaWNvbmZvbnQudHlyYW50Zy5jb20vYXBpL2lsbHVzdHJhdGUuc3ZnP3N2Z19zdHJpbmc9JTNDc3ZnJTIwY2xhc3MlM0QlMjJpY29uJTIyJTIwc3R5bGUlM0QlMjJ3aWR0aCUzQSUyMDFlbSUzQmhlaWdodCUzQSUyMDFlbSUzQnZlcnRpY2FsLWFsaWduJTNBJTIwbWlkZGxlJTNCZmlsbCUzQSUyMGN1cnJlbnRDb2xvciUzQm92ZXJmbG93JTNBJTIwaGlkZGVuJTNCJTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMTAyNCUyMDEwMjQlMjIlMjB2ZXJzaW9uJTNEJTIyMS4xJTIyJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlM0UlM0NwYXRoJTIwZCUzRCUyMk01MDguMjg4JTIwNjEuMDU2QTQ1MS4zOTIlMjA0NTEuMzkyJTIwMCUyMDAlMjAwJTIwNTcuNDA4JTIwNTEyYTQ1MS40NTYlMjA0NTEuNDU2JTIwMCUyMDAlMjAwJTIwNDUwLjg4JTIwNDUwLjk0NGMyNDguNjQlMjAwJTIwNDUwLjk0NC0yMDIuMzA0JTIwNDUwLjk0NC00NTAuOTQ0QTQ1MS40NTYlMjA0NTEuNDU2JTIwMCUyMDAlMjAwJTIwNTA4LjI4OCUyMDYxLjA1NnolMjBtMCUyMDgzOC41OTJBMzg4LjA5NiUyMDM4OC4wOTYlMjAwJTIwMCUyMDElMjAxMjAuNjQlMjA1MTJhMzg4LjAzMiUyMDM4OC4wMzIlMjAwJTIwMCUyMDElMjAzODcuNjQ4LTM4Ny42NDhBMzg4LjA5NiUyMDM4OC4wOTYlMjAwJTIwMCUyMDElMjA4OTYlMjA1MTJhMzg4LjA5NiUyMDM4OC4wOTYlMjAwJTIwMCUyMDEtMzg3LjY0OCUyMDM4Ny42NDh6TTMxMy4xNTIlMjA0NTIuNjcyYTU5LjMyOCUyMDU5LjMyOCUyMDAlMjAxJTIwMCUyMDAlMjAxMTguNjU2JTIwNTkuMzI4JTIwNTkuMzI4JTIwMCUyMDAlMjAwJTIwMC0xMTguNjU2eiUyMG0xOTUuMiUyMDBhNTkuMzI4JTIwNTkuMzI4JTIwMCUyMDElMjAwLTAuMDY0JTIwMTE4LjY1NiUyMDU5LjMyOCUyMDU5LjMyOCUyMDAlMjAwJTIwMCUyMDAtMTE4LjY1NnolMjBtMTk1LjA3MiUyMDBhNTkuMzI4JTIwNTkuMzI4JTIwMCUyMDElMjAwJTIwMCUyMDExOC42NTYlMjA1OS4zMjglMjA1OS4zMjglMjAwJTIwMCUyMDAlMjAwLTExOC42NTZ6JTIyJTIwZmlsbCUzRCUyMiUyM0I3QkFDOCUyMiUyMCUyRiUzRSUzQyUyRnN2ZyUzRSc7IFxcbnZhciBodG1sID0gYXBpdmlldy5nZXRodG1sKGFwaXZpZXcuc3RhdGljX2FkZHJlc3MrJ2FwaS9ub3ZlbC9saWIvdXBkYXRlZC9saXN0LzUuanNvbicpOyBcXG52YXIgbGlzdCA9IGh0bWwuaXRlbXNcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogJ+acgOi/keabtOaWsCcsXFxuICAgIGltZzogaW1nLFxcbiAgICB1cmw6ICdoaWtlcjovL3BhZ2UvY2tnZD9wYWdlPWZ5cGFnZSNub0hpc3RvcnkjJyxcXG4gICAgY29sX3R5cGU6ICd0ZXh0X2ljb24nLFxcbiAgICBleHRyYToge1xcbiAgICAgICAgaWQ6ICd1cGRhdGVkJ1xcbiAgICB9XFxufSlcXG5saXN0LnNsaWNlKDAsNikuZm9yRWFjaCggaXRlbSA9PiB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogaXRlbS5ib29rTmFtZSxcXG4gICAgICAgIGRlc2M6IGl0ZW0uY2F0ZWdvcnlOYW1lLFxcbiAgICAgICAgaW1nOiBhcGl2aWV3LnN0YXRpY19hZGRyZXNzK2l0ZW0uY292ZXJVcmwsXFxuICAgICAgICB1cmw6IGBoaWtlcjovL3BhZ2UvZXJqaT9ib29rSWQ9JHtpdGVtLmJvb2tJZH0jaW1tZXJzaXZlVGhlbWUjYCxcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgYm9va0lkOiBpdGVtLmJvb2tJZCxcXG4gICAgICAgICAgICBwYWdlVGl0bGU6IGl0ZW0uYm9va05hbWVcXG4gICAgICAgIH1cXG4gICAgfSlcXG59KVxcbnZhciBodG1sID0gYXBpdmlldy5nZXRodG1sKGFwaXZpZXcuc3RhdGljX2FkZHJlc3MrJ2FwaS9ub3ZlbC9saWIvaG90L2xpc3QvMS5qc29uJyk7IFxcbnZhciBsaXN0ID0gaHRtbC5pdGVtc1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOiAn54Ot6Zeo5qac5Y2VJyxcXG4gICAgaW1nOiBpbWcsXFxuICAgIHVybDogJ2hpa2VyOi8vcGFnZS9ja2dkP3BhZ2U9ZnlwYWdlI25vSGlzdG9yeSMnLFxcbiAgICBjb2xfdHlwZTogJ3RleHRfaWNvbicsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICBpZDogJ2hvdCdcXG4gICAgfVxcbn0pXFxubGlzdC5zbGljZSgwLDYpLmZvckVhY2goIGl0ZW0gPT4ge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IGl0ZW0uYm9va05hbWUsXFxuICAgICAgICBkZXNjOiBpdGVtLmNhdGVnb3J5TmFtZSxcXG4gICAgICAgIGltZzogYXBpdmlldy5zdGF0aWNfYWRkcmVzcytpdGVtLmNvdmVyVXJsLFxcbiAgICAgICAgdXJsOiBgaGlrZXI6Ly9wYWdlL2Vyamk/Ym9va0lkPSR7aXRlbS5ib29rSWR9I2ltbWVyc2l2ZVRoZW1lI2AsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIGJvb2tJZDogaXRlbS5ib29rSWQsXFxuICAgICAgICAgICAgcGFnZVRpdGxlOiBpdGVtLmJvb2tOYW1lXFxuICAgICAgICB9XFxuICAgIH0pXFxufSlcXG52YXIgaHRtbCA9IGFwaXZpZXcuZ2V0aHRtbChhcGl2aWV3LnN0YXRpY19hZGRyZXNzKydhcGkvbm92ZWwvbGliL3N0b3J5dGVsbGluZy9saXN0LzEuanNvbicpOyBcXG52YXIgbGlzdCA9IGh0bWwuaXRlbXNcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogJ+ivhOS5pue7j+WFuCcsXFxuICAgIGltZzogaW1nLFxcbiAgICB1cmw6ICdoaWtlcjovL3BhZ2UvY2tnZD9wYWdlPWZ5cGFnZSNub0hpc3RvcnkjJyxcXG4gICAgY29sX3R5cGU6ICd0ZXh0X2ljb24nLFxcbiAgICBleHRyYToge1xcbiAgICAgICAgaWQ6ICdzdG9yeXRlbGxpbmcnXFxuICAgIH1cXG59KVxcbmxpc3Quc2xpY2UoMCw2KS5mb3JFYWNoKCBpdGVtID0+IHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBpdGVtLmJvb2tOYW1lLFxcbiAgICAgICAgZGVzYzogaXRlbS5jYXRlZ29yeU5hbWUsXFxuICAgICAgICBpbWc6IGFwaXZpZXcuc3RhdGljX2FkZHJlc3MraXRlbS5jb3ZlclVybCxcXG4gICAgICAgIHVybDogYGhpa2VyOi8vcGFnZS9lcmppP2Jvb2tJZD0ke2l0ZW0uYm9va0lkfSNpbW1lcnNpdmVUaGVtZSNgLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBib29rSWQ6IGl0ZW0uYm9va0lkLFxcbiAgICAgICAgICAgIHBhZ2VUaXRsZTogaXRlbS5ib29rTmFtZVxcbiAgICAgICAgfVxcbiAgICB9KVxcbn0pXFxudmFyIGh0bWwgPSBhcGl2aWV3LmdldGh0bWwoYXBpdmlldy5zdGF0aWNfYWRkcmVzcysnYXBpL25vdmVsL2xpYi92b2ljZW5vdmVsL2xpc3QvMS5qc29uJyk7IFxcbnZhciBsaXN0ID0gaHRtbC5pdGVtc1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOiAn5pyJ5aOw5bCP6K+0JyxcXG4gICAgaW1nOiBpbWcsXFxuICAgIHVybDogJ2hpa2VyOi8vcGFnZS9ja2dkP3BhZ2U9ZnlwYWdlI25vSGlzdG9yeSMnLFxcbiAgICBjb2xfdHlwZTogJ3RleHRfaWNvbicsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICBpZDogJ3ZvaWNlbm92ZWwnXFxuICAgIH1cXG59KVxcbmxpc3QucmV2ZXJzZSgpLnNsaWNlKDAsNikuZm9yRWFjaCggaXRlbSA9PiB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogaXRlbS5ib29rTmFtZSxcXG4gICAgICAgIGRlc2M6IGl0ZW0uY2F0ZWdvcnlOYW1lLFxcbiAgICAgICAgaW1nOiBhcGl2aWV3LnN0YXRpY19hZGRyZXNzK2l0ZW0uY292ZXJVcmwsXFxuICAgICAgICB1cmw6IGBoaWtlcjovL3BhZ2UvZXJqaT9ib29rSWQ9JHtpdGVtLmJvb2tJZH0jaW1tZXJzaXZlVGhlbWUjYCxcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgYm9va0lkOiBpdGVtLmJvb2tJZCxcXG4gICAgICAgICAgICBwYWdlVGl0bGU6IGl0ZW0uYm9va05hbWVcXG4gICAgICAgIH1cXG4gICAgfSlcXG59KVxcbn1cXG50cnl7XFxudmFyIGh0bWwgPSBhcGl2aWV3LmdldGh0bWwoYXBpdmlldy5zdGF0aWNfYWRkcmVzcysnYXBpL25vdmVsL2xpYi9yZWNvbW1lbmQvbGlzdC8nK01ZX1BBR0UrJy5qc29uJyk7IFxcbnZhciBsaXN0ID0gaHRtbC5pdGVtc1xcbmlmKE1ZX1BBR0UgPT0gJzEnKXtcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogJ+abtOWkmuaOqOiNkCcsXFxuICAgIGltZzogaW1nLFxcbiAgICB1cmw6ICdoaWtlcjovL3BhZ2UvY2tnZD9wYWdlPWZ5cGFnZSNub0hpc3RvcnkjJyxcXG4gICAgY29sX3R5cGU6ICd0ZXh0X2ljb24nLFxcbiAgICBleHRyYToge1xcbiAgICAgICAgaWQ6ICdyZWNvbW1lbmQnXFxuICAgIH1cXG59KVxcbn1cXG5saXN0LmZvckVhY2goIGl0ZW0gPT4ge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IGl0ZW0uYm9va05hbWUrJ1xcXFxuJytpdGVtLmNhdGVnb3J5TmFtZSxcXG4gICAgICAgIGRlc2M6IGl0ZW0uYXV0aG9yTmFtZSsnXFxcXG4nK2l0ZW0ubGF0ZXN0Q2hhcHRlck5hbWUsXFxuICAgICAgICBpbWc6IGFwaXZpZXcuc3RhdGljX2FkZHJlc3MraXRlbS5jb3ZlclVybCxcXG4gICAgICAgIHVybDogYGhpa2VyOi8vcGFnZS9lcmppP2Jvb2tJZD0ke2l0ZW0uYm9va0lkfSNpbW1lcnNpdmVUaGVtZSNgLFxcbiAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX3ZlcnRpY2FsX3BpYycsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIGJvb2tJZDogaXRlbS5ib29rSWQsXFxuICAgICAgICAgICAgcGFnZVRpdGxlOiBpdGVtLmJvb2tOYW1lXFxuICAgICAgICB9XFxuICAgIH0pXFxufSlcXG59Y2F0Y2goZSl7fVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Ye95pWwXCIsXCJwYXRoXCI6XCJoYW5zaHVcIixcInJ1bGVcIjpcImNvbnN0IGFwaXZpZXcgPSB7XFxuICAgIGNvbG9yOiAodGVzdCkgPT4ge1xcbiAgICAgICAgcmV0dXJuICc8Zm9udCBjb2xvcj1cXFwiI0ZBNzI5OFxcXCI+JyArIHRlc3QgKyAnPC9mcm9udD4nO1xcbiAgICB9LFxcbiAgICBzdHJvbmc6ICh0ZXN0KSA9PiB7XFxuICAgICAgICByZXR1cm4gJzxzdHJvbmc+JyArIHRlc3QgKyAnPC9zdHJvbmc+JztcXG4gICAgfSxcXG4gICAgc21hbGw6ICh0ZXN0KSA9PiB7XFxuICAgICAgICByZXR1cm4gJzxzbWFsbD4nICsgdGVzdCArICc8L3NtYWxsPic7XFxuICAgIH0sXFxuICAgIGNlbnRlcjogKHRlc3QpID0+IHtcXG4gICAgICAgIHJldHVybiAnPHAgc3R5bGU9XFxcInRleHQtYWxpZ246IGNlbnRlcjtcXFwiPicgKyB0ZXN0ICsgJzwvcD4nXFxuICAgIH0sXFxuICAgIGJpZzogKHRlc3QpID0+IHtcXG4gICAgICAgIHJldHVybiAnPGJpZz4nICsgdGVzdCArICc8L2JpZz4nO1xcbiAgICB9LFxcbiAgICBncmV5OiAodGV4dCkgPT4ge1xcbiAgICAgICAgcmV0dXJuIFxcXCI8Zm9udCBjb2xvcj0nZ3JleSc+XFxcIiArIHRleHQgKyBcXFwiPC9mb250PlxcXCI7XFxuXFxuICAgIH0sXFxuICAgIGdyYXk6ICh0ZXN0KSA9PiB7XFxuICAgICAgICByZXR1cm4gXFxcIjxmb250IGNvbG9yPSdncmF5Jz5cXFwiICsgdGVzdCArIFxcXCI8L2ZvbnQ+XFxcIjtcXG4gICAgfSxcXG4gICAgcmljaDogKHRlc3QpID0+IHtcXG4gICAgICAgIHJldHVybiBcXFwi4oCY4oCY4oCZ4oCZXFxcIiArIHRlc3Q7XFxuICAgIH0sXFxuICAgIGFkZHJlc3NUYWc6ICh1cmwsIHRleHQpID0+IHtcXG4gICAgICAgIHJldHVybiBcXFwiPGEgaHJlZj0nXFxcIiArIHVybCArIFxcXCInPlxcXCIgKyB0ZXh0ICsgXFxcIjwvYT5cXFwiXFxuICAgIH0sXFxuICAgIGVtcHR5OiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCIsXFxuICAgIG5vTG9hZDogXFxcIiNub0xvYWRpbmcjXFxcIixcXG4gICAga2V5OiBcXFwiQ0NERVBHQU1cXFwiLFxcbiAgICBrZXkxOiBcXFwiTzBCWE1TUklcXFwiLFxcbiAgICBrZXkyOiBcXFwiQVBMR1RZNkRcXFwiLFxcbiAgICBrZXkzOiBcXFwiT1Q3SExRSFJcXFwiLFxcbiAgICBrZXk0OiBcXFwiRVJHN0Y1S1BcXFwiLFxcbiAgICBrZXk1OiBcXFwiTjBFMzUxNTBcXFwiLFxcbiAgICBzdGF0aWNfYWRkcmVzczogZ2V0SXRlbShcXFwic3RhdGljX2FkZHJlc3NcXFwiKSxcXG4gICAgc2VhcmNoX2FkZHJlc3M6IGdldEl0ZW0oXFxcInNlYXJjaF9hZGRyZXNzXFxcIiksXFxuICAgIHRpbWVzdGFtcDogKCkgPT4gTWF0aC5mbG9vcihuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApLFxcbiAgICB0MTA6ICgpID0+IGFwaXZpZXcudGltZXN0YW1wKCkudG9TdHJpbmcoKSxcXG4gICAgdDEzOiAoKSA9PiBhcGl2aWV3LnQxMCgpICsgJzAwMCcsXFxuICAgIC8qKlxcbiAgICAgKiDmoLzlvI/ljJbml7bpl7TmiLPkuLrmoIflh4bml7bpl7RcXG4gICAgICogQHBhcmFtIHtudW1iZXJ8c3RyaW5nfSB0aW1lc3RhbXAgLSDnp5LnuqfmiJbmr6vnp5Lnuqfml7bpl7TmiLPvvIjmlK/mjIHnp5HlraborqHmlbDms5XvvIlcXG4gICAgICogQHJldHVybnMge3N0cmluZ30gLSDov5Tlm57moLzlvI/ljJblkI7nmoTml7bpl7QgXFxcIllZWVktTU0tREQgSEg6TU06U1NcXFwiXFxuICAgICAqL1xcbiAgICBmb3JtYXRUaW1lc3RhbXA6ICh0aW1lc3RhbXApID0+IHtcXG4gICAgICAgIC8vIOe7n+S4gOWwhuaXtumXtOaIs+ino+aekOS4uuaVsOWtl1xcbiAgICAgICAgY29uc3QgdHMgPSBOdW1iZXIodGltZXN0YW1wKTtcXG4gICAgICAgIGlmIChpc05hTih0cykpIHtcXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXFxcIkludmFsaWQgdGltZXN0YW1wIGZvcm1hdFxcXCIpO1xcbiAgICAgICAgfVxcblxcbiAgICAgICAgLy8g5Yik5pat5pe26Ze05oiz5piv56eS57qn77yIMTDkvY3vvInov5jmmK/mr6vnp5LnuqfvvIgxM+S9je+8iVxcbiAgICAgICAgY29uc3QgbWlsbGlzID0gdHMgPCAxZTEyID8gdHMgKiAxMDAwIDogdHM7XFxuXFxuICAgICAgICAvLyDliJvlu7rml6XmnJ/lr7nosaFcXG4gICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShtaWxsaXMpO1xcblxcbiAgICAgICAgLy8g5qC85byP5YyW5pel5pyf5ZKM5pe26Ze077yM56Gu5L+d6KGl6Zu2XFxuICAgICAgICBjb25zdCBwYWQgPSAobnVtKSA9PiBTdHJpbmcobnVtKS5wYWRTdGFydCgyLCAnMCcpO1xcbiAgICAgICAgcmV0dXJuIGAke2RhdGUuZ2V0RnVsbFllYXIoKX0tJHtwYWQoZGF0ZS5nZXRNb250aCgpICsgMSl9LSR7cGFkKGRhdGUuZ2V0RGF0ZSgpKX0gYCArXFxuICAgICAgICAgICAgYCR7cGFkKGRhdGUuZ2V0SG91cnMoKSl9OiR7cGFkKGRhdGUuZ2V0TWludXRlcygpKX06JHtwYWQoZGF0ZS5nZXRTZWNvbmRzKCkpfWA7XFxuICAgIH0sXFxuICAgIERlY3J5cHQ6ICh3b3JkLGtleXkpID0+IHtcXG4gICAgICAgIGxldCBDcnlwdG9VdGlsID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL2Fzc2V0cy9jcnlwdG8tamF2YS5qc1xcXCIpO1xcbiAgICAgICAgbGV0IGtleSA9IENyeXB0b1V0aWwuRGF0YS5wYXJzZVVURjgoa2V5eSk7XFxuICAgICAgICBsZXQgZGVjcnlwdGVkID0gQ3J5cHRvVXRpbC5ERVMuZGVjcnlwdCh3b3JkLCBrZXksIHtcXG4gICAgICAgICAgICBtb2RlOiBcXFwiREVTL0VDQi9QS0NTN1BhZGRpbmdcXFwiXFxuICAgICAgICB9KTtcXG4gICAgICAgIHJldHVybiBkZWNyeXB0ZWQudG9TdHJpbmcoKTtcXG4gICAgfSxcXG4gICAgZ2V0aHRtbDogKHVybCkgPT4ge1xcbiAgICAgICAgdmFyIGh0bWwgPSBmZXRjaCh1cmwse1xcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgIFxcXCJ1c2VyLWFnZW50XFxcIjogXFxcIkRhcnQvMy4zIChkYXJ0OmlvKVxcXCIsXFxuICAgICAgICAgICAgICBcXFwidXNlcmlkXFxcIjogXFxcIlxcXCIsXFxuICAgICAgICAgICAgICAvL1xcXCJhY2NlcHQtZW5jb2RpbmdcXFwiOiBcXFwiZ3ppcFxcXCIsXFxuICAgICAgICAgICAgICBcXFwiY2hhbm5lbFxcXCI6IFxcXCJcXFwiLFxcbiAgICAgICAgICAgICAgXFxcInV1aWRcXFwiOiBcXFwiZGU1YWVlYjQ5MDhhZGRhM1xcXCIsXFxuICAgICAgICAgICAgICBcXFwicnRpbWVcXFwiOiBcXFwiMTczMjE3MTQzMjg2MVxcXCIsXFxuICAgICAgICAgICAgICAvL1xcXCJydGltZVxcXCI6IGFwaXZpZXcudDEzKCksXFxuICAgICAgICAgICAgICBcXFwidmVyc2lvbmNvZGVcXFwiOiBcXFwiMzhcXFwiLFxcbiAgICAgICAgICAgICAgXFxcInNpZ25cXFwiOiBcXFwiMzA1MWQyNGRkNzE0YmM0MGFiZTdhNTU3Yzg4OTM2NWJcXFwiLFxcbiAgICAgICAgICAgICAgLy9cXFwic2lnblxcXCI6IG1kNSgnY29tLnZvLmljZWEnK2FwaXZpZXcudDEzKCkrYXBpdmlldy50MTMoKSksXFxuICAgICAgICAgICAgICBcXFwiY3RpbWVcXFwiOiBcXFwiMTczMjE3MTQzMzE0OVxcXCIsXFxuICAgICAgICAgICAgICAvL1xcXCJjdGltZVxcXCI6IGFwaXZpZXcudDEzKCksXFxuICAgICAgICAgICAgICBcXFwicGFja2FnZXNpZ25cXFwiOiBcXFwiMDdkYWQ2YWQxY2JmNjVhNGFhNTY1OTU1MThlNThiYmQzYzZlMGNlYVxcXCIsXFxuICAgICAgICAgICAgICBcXFwicGFja2FnZW5hbWVcXFwiOiBcXFwiY29tLnZvLmljZWFcXFwiLFxcbiAgICAgICAgICAgICAgXFxcImhvc3RcXFwiOiBcXFwiYmNlYm9zb3JnLmd6LmJjZWJvcy5jb21cXFwiLFxcbiAgICAgICAgICAgICAgXFxcInZlcnNpb25uYW1lXFxcIjogXFxcIjEuMy44XFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgbWV0aG9kOiAnR0VUJ1xcbiAgICAgICAgfSk7IC8vbG9nKGh0bWwpXFxuICAgICAgICB2YXIgaHRtbDEgPSBKU09OLnBhcnNlKGh0bWwpXFxuICAgICAgICB2YXIgdG9rZW4gPSBodG1sMS5zYWZldHkudG9rZW47IC8vbG9nKHRva2VuKVxcbiAgICAgICAgdmFyIHNhZmV0eURhdGEgPSBodG1sMS5zYWZldHlEYXRhOyAvL2xvZyhzYWZldHlEYXRhKVxcbiAgICAgICAgaWYoL2FwcC8udGVzdCh1cmwpKXtcXG4gICAgICAgICAgICB2YXIga2V5ID0gYXBpdmlldy5rZXlcXG4gICAgICAgIH1lbHNlIGlmKC9saXN0Ly50ZXN0KHVybCkpe1xcbiAgICAgICAgICAgIHZhciBrZXkgPSBhcGl2aWV3LmtleTFcXG4gICAgICAgIH1lbHNlIGlmKC9hbGwvLnRlc3QodXJsKSl7XFxuICAgICAgICAgICAgdmFyIGtleSA9IGFwaXZpZXcua2V5MlxcbiAgICAgICAgfWVsc2UgaWYoL2luZm8vLnRlc3QodXJsKSl7XFxuICAgICAgICAgICAgdmFyIGtleSA9IGFwaXZpZXcua2V5M1xcbiAgICAgICAgfWVsc2UgaWYoL2NoYXB0ZXJzLy50ZXN0KHVybCkpe1xcbiAgICAgICAgICAgIHZhciBrZXkgPSBhcGl2aWV3LmtleTRcXG4gICAgICAgIH1lbHNlIGlmKC9jYXRlZ29yeS8udGVzdCh1cmwpKXtcXG4gICAgICAgICAgICB2YXIga2V5ID0gYXBpdmlldy5rZXk1XFxuICAgICAgICB9XFxuICAgICAgICB2YXIgaHRtbDIgPSBhcGl2aWV3LkRlY3J5cHQoc2FmZXR5RGF0YSxrZXkpO1xcbiAgICAgICAgdmFyIGh0bWwzID0gSlNPTi5wYXJzZShodG1sMik7IC8vbG9nKGh0bWwzKVxcbiAgICAgICAgcmV0dXJuIGh0bWwzXFxuICAgIH0sXFxuICAgIGdldHNlYXJjaGh0bWw6ICh1cmwsd29yZCxwYWdlKSA9PiB7XFxuICAgICAgICB2YXIgaHRtbCA9IGZldGNoKHVybCx7XFxuICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgXFxcInVzZXItYWdlbnRcXFwiOiBcXFwiRGFydC8zLjMgKGRhcnQ6aW8pXFxcIixcXG4gICAgICAgICAgICAgIFxcXCJ1c2VyaWRcXFwiOiBcXFwiXFxcIixcXG4gICAgICAgICAgICAgIC8vXFxcImFjY2VwdC1lbmNvZGluZ1xcXCI6IFxcXCJnemlwXFxcIixcXG4gICAgICAgICAgICAgIFxcXCJjaGFubmVsXFxcIjogXFxcIlxcXCIsXFxuICAgICAgICAgICAgICBcXFwidXVpZFxcXCI6IFxcXCJkZTVhZWViNDkwOGFkZGEzXFxcIixcXG4gICAgICAgICAgICAgIFxcXCJydGltZVxcXCI6IFxcXCIxNzMyMTcxNDMyODYxXFxcIixcXG4gICAgICAgICAgICAgIC8vXFxcInJ0aW1lXFxcIjogYXBpdmlldy50MTMoKSxcXG4gICAgICAgICAgICAgIFxcXCJ2ZXJzaW9uY29kZVxcXCI6IFxcXCIzOFxcXCIsXFxuICAgICAgICAgICAgICBcXFwic2lnblxcXCI6IFxcXCIzMDUxZDI0ZGQ3MTRiYzQwYWJlN2E1NTdjODg5MzY1YlxcXCIsXFxuICAgICAgICAgICAgICAvL1xcXCJzaWduXFxcIjogbWQ1KCdjb20udm8uaWNlYScrYXBpdmlldy50MTMoKSthcGl2aWV3LnQxMygpKSxcXG4gICAgICAgICAgICAgIFxcXCJjdGltZVxcXCI6IFxcXCIxNzMyMTcxNDMzMTQ5XFxcIixcXG4gICAgICAgICAgICAgIC8vXFxcImN0aW1lXFxcIjogYXBpdmlldy50MTMoKSxcXG4gICAgICAgICAgICAgIFxcXCJwYWNrYWdlc2lnblxcXCI6IFxcXCIwN2RhZDZhZDFjYmY2NWE0YWE1NjU5NTUxOGU1OGJiZDNjNmUwY2VhXFxcIixcXG4gICAgICAgICAgICAgIFxcXCJwYWNrYWdlbmFtZVxcXCI6IFxcXCJjb20udm8uaWNlYVxcXCIsXFxuICAgICAgICAgICAgICBcXFwiaG9zdFxcXCI6IFxcXCJiY2Vib3NvcmcuZ3ouYmNlYm9zLmNvbVxcXCIsXFxuICAgICAgICAgICAgICBcXFwidmVyc2lvbm5hbWVcXFwiOiBcXFwiMS4zLjhcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XFxcInJlbGF0aW9uVHlwZVxcXCI6MSxcXFwicmVsYXRpb25JZFxcXCI6XFxcIlxcXCIsXFxcImtleVxcXCI6d29yZCxcXFwicGFnZVxcXCI6cGFnZSxcXFwiYXBwVmVyc2lvblxcXCI6XFxcIjEuMy44XFxcIixcXFwiYXBwQ2hhbm5lbFxcXCI6XFxcIlxcXCIsXFxcImFwcEtleVxcXCI6XFxcImNvbS52by5pY2VhXFxcIixcXFwiY2xpZW50VGltZVxcXCI6MTczMjE3MTQzMzE0OSxcXFwiZGV2aWNlQnJhbmRcXFwiOlxcXCJSZWRtaVxcXCIsXFxcImRldmljZVR5cGVcXFwiOlxcXCIyMjAyMTIxMVJDXFxcIixcXFwiaXBBZGRyXFxcIjpcXFwiMTkyLjE2OC41MC4yMDJcXFwiLFxcXCJuZXRUeXBlXFxcIjpcXFwibW9iaWxlXFxcIixcXFwicGxhdGZvcm1cXFwiOjAsXFxcInN5c3RlbVZlcnNpb25cXFwiOlxcXCJBbmRyb2lkIDEyXFxcIixcXFwidXVpZFxcXCI6XFxcImRlNWFlZWI0OTA4YWRkYTNcXFwiLFxcXCJ1c2VySWRcXFwiOlxcXCJcXFwifSksXFxuICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCdcXG4gICAgICAgIH0pOyAvL2xvZyhodG1sKVxcbiAgICAgICAgdmFyIGh0bWwxID0gSlNPTi5wYXJzZShodG1sKVxcbiAgICAgICAgdmFyIHRva2VuID0gaHRtbDEuc2FmZXR5LnRva2VuOyAvL2xvZyh0b2tlbilcXG4gICAgICAgIHZhciBzYWZldHlEYXRhID0gaHRtbDEuc2FmZXR5RGF0YTsgLy9sb2coc2FmZXR5RGF0YSlcXG4gICAgICAgIHZhciBodG1sMiA9IGFwaXZpZXcuRGVjcnlwdChzYWZldHlEYXRhLCdPMEJYTVNSSScpO1xcbiAgICAgICAgdmFyIGh0bWwzID0gSlNPTi5wYXJzZShodG1sMik7IC8vbG9nKGh0bWwzKVxcbiAgICAgICAgcmV0dXJuIGh0bWwzXFxuICAgIH0sXFxuICAgIGdldGh0bWwxOiAodXJsLHBhcmFtcykgPT4ge1xcbiAgICAgICAgdmFyIGh0bWwgPSBmZXRjaCh1cmwse1xcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgIC8vXFxcInVzZXItYWdlbnRcXFwiOiBcXFwiTW96aWxsYS81LjAgKE1hY2ludG9zaDsgSW50ZWwgTWFjIE9TIFggMTBfMTVfNykgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzEwNi4wLjAuMCBTYWZhcmkvNTM3LjM2XFxcIixcXG4gICAgICAgICAgICAgIC8vXFxcImNvbnRlbnQtdHlwZVxcXCI6IFxcXCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRcXFwiLFxcbiAgICAgICAgICAgICAgLy9cXFwiYWNjZXB0LWVuY29kaW5nXFxcIjogXFxcImd6aXBcXFwiLFxcbiAgICAgICAgICAgICAgLy9cXFwiY29udGVudC1sZW5ndGhcXFwiOiBcXFwiMzg3XFxcIixcXG4gICAgICAgICAgICAgIFxcXCJyZWZlcmVyXFxcIjogXFxcImh0dHBzOi8vYXBrLWxiLmlpc3pnLmNvbS9cXFwiLFxcbiAgICAgICAgICAgICAgLy9cXFwiaG9zdFxcXCI6IFxcXCJhcGstbGItcGxheS5mb2RleGluLmNvbVxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIGJvZHk6ICd2ZXJzaW9uPTEuMS43JnBhcmFtcz0nK3BhcmFtcyxcXG4gICAgICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcbiAgICAgICAgfSk7IGxvZyhodG1sKVxcbiAgICAgICAgdmFyIGh0bWwxID0gSlNPTi5wYXJzZShodG1sKVxcbiAgICAgICAgcmV0dXJuIGh0bWwxXFxuICAgIH0sXFxuICAgIGxhenk6IChpbnB1dCkgPT4ge1xcbiAgICAgICAgdmFyIGxhenkgPSAkKGlucHV0KS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgZnVuY3Rpb24gZ2V0VW5peFRpbWVzdGFtcCgpIHtcXG4gICAgICAgICAgICAgICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcXG4gICAgICAgICAgICAgICAgLy8g6I635Y+W5bm05pyI5pel5pe25YiG77yM56Gu5L+d56eS5ZKM5q+r56eS6YO95Li6IDBcXG4gICAgICAgICAgICAgICAgbm93LnNldFNlY29uZHMoMCwgMCk7XFxuICAgICAgICAgICAgICAgIC8vIOiOt+WPliAxMCDkvY0gVW5peCDml7bpl7TmiLNcXG4gICAgICAgICAgICAgICAgY29uc3QgdGltZXN0YW1wID0gTWF0aC5mbG9vcihub3cuZ2V0VGltZSgpIC8gMTAwMCk7XFxuICAgICAgICAgICAgICAgIC8vIOW8uuWItui9rOaNouS4uuWtl+espuS4suWQjui/lOWbnlxcbiAgICAgICAgICAgICAgICByZXR1cm4gdGltZXN0YW1wLnRvU3RyaW5nKCk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIHZhciBwYXJhbXMxID0gSlNPTi5zdHJpbmdpZnkoe1xcXCJtXFxcIjpcXFwicGxheVxcXCIsXFxcImFpZFxcXCI6YmFzZTY0RGVjb2RlKGlucHV0KS5zcGxpdCgnXycpWzJdLFxcXCJwaWRcXFwiOmJhc2U2NERlY29kZShpbnB1dCkuc3BsaXQoJ18nKVszXSxcXFwidFxcXCI6bWQ1KG1kNSgncGxheScrYmFzZTY0RGVjb2RlKGlucHV0KS5zcGxpdCgnXycpWzJdK2Jhc2U2NERlY29kZShpbnB1dCkuc3BsaXQoJ18nKVszXSkrJzE0NDk2ODI5NDknK2dldFVuaXhUaW1lc3RhbXAoKSl9KTsgLy9sb2cocGFyYW1zMSkgXFxuICAgICAgICAgICAgdmFyIHJzYWtleSA9ICdNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXRTd290YnU3VUVvblVDekNzSlhQU3BZT3JrdU1ucHlrMjRQQlFza2tjd1lac1VUd2JoOFk5dkh1UEllcmgzQWZaWjFsdUZWOXlQQzI4MnhpTlgrLytJQXpXSFdHNk0rZFdtSm5EeXliZVVWVGg3SDdZVk0zMWVTUjlURlQ0VkFTcjdOZnRnQ3Y3aGZTMm1WTkwwc3hSck1TUFNYYTZTYmprSWVXNEdUcFlwV0tlaEtmYXFyZ0R3VmZGQ3U2N29nTDlKTElkRHh2V3RoSWU0MnVVTW56NElJMS9wZHJQdFdSdTBDRGpheHZzTHoyNlVkTUdTTDNnRkVsb2FKaHA0S3VJUEs0UmxJeCs5dDI4SDAwKzNJcGVWaXJtaWF5RFlKUWUxY2ppREtvRVJTa0x1YkpSRDJ5ajVYM3RyR21nWGV4M1FrY1J0eDVVTlhZa0xFdUVNTkdpd0lEQVFBQic7IFxcbiAgICAgICAgICAgIHZhciBwYXJhbXMgPSByc2FFbmNyeXB0KHBhcmFtczEsIHJzYWtleSk7IC8vbG9nKHBhcmFtcylcXG4gICAgICAgICAgICB2YXIgaHRtbCA9ICQucmVxdWlyZShcXFwiaGFuc2h1XFxcIikuZ2V0aHRtbDEoJ2h0dHBzOi8vYXBrLWxiLXBsYXkuZm9kZXhpbi5jb20vYXBpMi93ZWIvaW5kZXgucGhwLz9yPWFwaScscGFyYW1zKVxcbiAgICAgICAgICAgIHZhciBwbGF5ID0gaHRtbC5kYXRhLnVybFxcbiAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7XFxuICAgICAgICAgICAgICAgIHVybHM6IFtwbGF5XSxcXG4gICAgICAgICAgICAgICAgaGVhZGVyczogW3tcXFwicmVmZXJlclxcXCI6IFxcXCJodHRwczovL2Fway1sYi5paXN6Zy5jb20vXFxcIn1dXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH0pXFxuICAgICAgICByZXR1cm4gbGF6eVxcbiAgICB9LFxcbiAgICBzZXREZXNjOiAoZCwgZGVzYywgbnVtKSA9PiB7XFxuICAgICAgICAvL2xvZyhkZXNjKVxcbiAgICAgICAgaWYgKGRlc2MgPT0gdW5kZWZpbmVkKSB7XFxuICAgICAgICAgICAgcmV0dXJuO1xcbiAgICAgICAgfVxcbiAgICAgICAgZGVzYyA9IGRlc2MuY29uc3RydWN0b3IgPT0gQXJyYXkgPyBkZXNjLmpvaW4oJzxicj4nKSA6IGRlc2M7XFxuICAgICAgICBpZiAoZGVzYy5yZXBsYWNlKC8oPGJyPnxcXFxccyt8PFxcXFwvP3A+fCZuYnNwOykvZywgJycpLmxlbmd0aCA9PSAwKSB7XFxuICAgICAgICAgICAgcmV0dXJuO1xcbiAgICAgICAgfVxcbiAgICAgICAgY29uc3QgbWFyayA9ICdkZXNjJztcXG4gICAgICAgIG51bSA9IHR5cGVvZihudW0pID09ICd1bmRlZmluZWQnID8gMTAwIDogbnVtXFxuICAgICAgICBkZXNjID0gZGVzYy5zdGFydHNXaXRoKCfjgIDjgIAnKSA/IGRlc2MgOiAn44CA44CAJyArIGRlc2M7XFxuICAgICAgICBkZXNjID0gZGVzYy5yZXBsYWNlKC8nL2csIFxcXCImIzM5O1xcXCIpO1xcbiAgICAgICAgZGVzYyA9IGRlc2MucmVwbGFjZSgvXFxcXHJcXFxcbi9nLCBcXFwiPGJyPlxcXCIpO1xcbiAgICAgICAgZGVzYyA9IGRlc2MucmVwbGFjZSgvXFxcXHIvZywgXFxcIjxicj5cXFwiKTtcXG4gICAgICAgIGRlc2MgPSBkZXNjLnJlcGxhY2UoL1xcXFxuL2csIFxcXCI8YnI+XFxcIik7XFxuXFxuICAgICAgICBmdW5jdGlvbiBzdWJzdHIoc3RyLCBtYXhMZW5ndGgpIHtcXG4gICAgICAgICAgICBsZXQgbGVuID0gMDtcXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0ci5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgICAgICBpZiAoc3RyLmNoYXJDb2RlQXQoaSkgPiAyNTUpIHtcXG4gICAgICAgICAgICAgICAgICAgIGxlbiArPSAyO1xcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgbGVuKys7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgaWYgKGxlbiA+IG1heExlbmd0aCkge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ci5zbGljZSgwLCBpKSArICcuLi4nO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIHJldHVybiBzdHI7XFxuICAgICAgICB9XFxuICAgICAgICBsZXQgc2Rlc2MgPSBzdWJzdHIoZGVzYywgbnVtKTtcXG4gICAgICAgIHZhciBjb2xvcnMgPSB7XFxuICAgICAgICAgICAgc2hvdzogXFxcImJsYWNrXFxcIixcXG4gICAgICAgICAgICBoaWRlOiBcXFwiZ3JleVxcXCJcXG4gICAgICAgIH1cXG4gICAgICAgIHZhciBsYXp5ID0gJChgI25vTG9hZGluZyNgKS5sYXp5UnVsZSgoZGMsIHNkYywgbSwgY3MpID0+IHtcXG4gICAgICAgICAgICB2YXIgc2hvdyA9IHN0b3JhZ2UwLmdldEl0ZW0obSwgJzAnKTtcXG4gICAgICAgICAgICB2YXIgdGl0bGUgPSBmaW5kSXRlbSgnZGVzYycpLnRpdGxlO1xcbiAgICAgICAgICAgIHZhciByZSA9IC8oPFxcXFwvc21hbGw+PGJyPi4qPz4pLisvZztcXG4gICAgICAgICAgICB2YXIgZXhwID0gJ+WxleW8gDonO1xcbiAgICAgICAgICAgIHZhciByZXQgPSAn5pS26LW3Oic7XFxuICAgICAgICAgICAgaWYgKHNob3cgPT0gJzEnKSB7XFxuICAgICAgICAgICAgICAgIHVwZGF0ZUl0ZW0oJ2Rlc2MnLCB7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGl0bGVcXG4gICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZShyZXQsIGV4cClcXG4gICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZShyZSwgJyQxJyArIHNkYyArICc8L3NtYWxsPicpXFxuICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoLyg8XFxcXC9zbWFsbD48YnI+XFxcXDxmb250IGNvbG9yPVxcXCIpLio/KFxcXCI+KS8sICckMScgKyBjcy5oaWRlICsgJyQyJylcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgc3RvcmFnZTAuc2V0SXRlbShtLCAnMCcpO1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIHVwZGF0ZUl0ZW0oJ2Rlc2MnLCB7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGl0bGVcXG4gICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZShleHAsIHJldClcXG4gICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZShyZSwgJyQxJyArIGRjICsgJzwvc21hbGw+JylcXG4gICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvKDxcXFxcL3NtYWxsPjxicj5cXFxcPGZvbnQgY29sb3I9XFxcIikuKj8oXFxcIj4pLywgJyQxJyArIGNzLnNob3cgKyAnJDInKVxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICBzdG9yYWdlMC5zZXRJdGVtKG0sICcxJyk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIHJldHVybiBgaGlrZXI6Ly9lbXB0eWBcXG4gICAgICAgIH0sIGRlc2MsIHNkZXNjLCBtYXJrLCBjb2xvcnMpXFxuICAgICAgICB2YXIgc2MgPSBzdG9yYWdlMC5nZXRJdGVtKG1hcmssICcwJykgPT0gJzAnID8gJ+WxleW8gDonIDogJ+aUtui1tzonO1xcbiAgICAgICAgdmFyIGRjID0gc3RvcmFnZTAuZ2V0SXRlbShtYXJrLCAnMCcpID09ICcwJyA/IHNkZXNjIDogZGVzYztcXG4gICAgICAgIHZhciBjcyA9IHN0b3JhZ2UwLmdldEl0ZW0obWFyaywgJzAnKSA9PSAnMCcgPyBjb2xvcnMuaGlkZSA6IGNvbG9ycy5zaG93O1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJycgKyAnPGI+PGZvbnQgY29sb3I9XFxcIiMwOThBQzFcXFwiPuKIt+WJp+aDheeugOS7i1xcdDwvZm9udD48L2I+JyArIFxcXCI8c21hbGw+PGEgc3R5bGU9J3RleHQtZGVjb3JhdGlvbjogbm9uZTsnIGhyZWY9J1xcXCIgKyBsYXp5ICsgXFxcIic+XFxcIiArIHNjICsgJzwvYT48L3NtYWxsPjxicj48Zm9udCBjb2xvcj1cXFwiJyArIGNzICsgJ1xcXCI+JyArIGAke2RjfWAgKyAnPC9zbWFsbD4nLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0JyxcXG4gICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICBpZDogJ2Rlc2MnLFxcbiAgICAgICAgICAgICAgICBsaW5lU3BhY2luZzogNixcXG4gICAgICAgICAgICAgICAgdGV4dFNpemU6IDE1LFxcbiAgICAgICAgICAgICAgICBsaW5lVmlzaWJsZTogdHJ1ZSxcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KVxcbiAgICB9XFxufVxcblxcbiQuZXhwb3J0cyA9IGFwaXZpZXc7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLliIbnsbtcIixcInBhdGhcIjpcImNsYVwiLFwicnVsZVwiOlwidmFyIGh0bWwgPSBhcGl2aWV3LmdldGh0bWwoYXBpdmlldy5zdGF0aWNfYWRkcmVzcysnYXBpL25vdmVsL2xpYi9jYXRlZ29yeS9jb25kaXRpb24uanNvbicpOyAvL2xvZyhodG1sKSBcXG4vKlxcbmxvZyhnZXRNeVZhcignYScsJzAnKSlcXG5sb2coZ2V0TXlWYXIoJ2InLCcwJykpXFxubG9nKGdldE15VmFyKCdjJyxodG1sW2dldE15VmFyKCdhJywnMCcpXS5jYXRlZ29yeXNbMF0ua2V5KSlcXG4qL1xcbmlmKE1ZX1BBR0UgPT0gJzEnKXtcXG5kLnB1c2goe1xcbiAgICBjb2xfdHlwZTpcXFwiYmxhbmtfYmxvY2tcXFwiXFxufSlcXG5odG1sLmZvckVhY2goIChpdGVtLGluZGV4KSA9PiB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogZ2V0TXlWYXIoJ2EnLCcwJyk9PWluZGV4PyBcXFwi4oCc4oCcXFxcIitpdGVtLnRpdGxlK1xcXCLigJ3igJ1cXFwiOml0ZW0udGl0bGUsXFxuICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKGluZGV4KSA9PiB7XFxuICAgICAgICAgICAgcHV0TXlWYXIoJ2EnLGluZGV4KVxcbiAgICAgICAgICAgIGNsZWFyTXlWYXIoJ2InKVxcbiAgICAgICAgICAgIGNsZWFyTXlWYXIoJ2MnKVxcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKClcXG4gICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgICAgICB9LGluZGV4KSxcXG4gICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgfSlcXG59KVxcbmQucHVzaCh7XFxuICAgIGNvbF90eXBlOlxcXCJibGFua19ibG9ja1xcXCJcXG59KVxcbmh0bWxbZ2V0TXlWYXIoJ2EnLCcwJyldLmNhdGVnb3J5cy5mb3JFYWNoKCAoaXRlbSxpbmRleCkgPT4ge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IGdldE15VmFyKCdiJywnMCcpPT1pbmRleD8gXFxcIuKAnOKAnFxcXCIraXRlbS5uYW1lK1xcXCLigJ3igJ1cXFwiOml0ZW0ubmFtZSxcXG4gICAgICAgIHVybDogJChpdGVtLmtleSsnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoaW5kZXgpID0+IHtcXG4gICAgICAgICAgICBwdXRNeVZhcignYicsaW5kZXgpXFxuICAgICAgICAgICAgcHV0TXlWYXIoJ2MnLGlucHV0KVxcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKClcXG4gICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgICAgICB9LGluZGV4KSxcXG4gICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgfSlcXG59KVxcbn1cXG50cnl7XFxudmFyIGh0bWwgPSBhcGl2aWV3LmdldGh0bWwoYXBpdmlldy5zdGF0aWNfYWRkcmVzcysnYXBpL25vdmVsL2xpYi9ib29rcy8nK2dldE15VmFyKCdjJyxodG1sW2dldE15VmFyKCdhJywnMCcpXS5jYXRlZ29yeXNbMF0ua2V5KSsnL2FsbC9ob3QvJytNWV9QQUdFKycuanNvbicpOyAvL2xvZyhodG1sKSBcXG52YXIgbGlzdCA9IGh0bWwuaXRlbXNcXG5saXN0LmZvckVhY2goIGl0ZW0gPT4ge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IGl0ZW0uYm9va05hbWUrJ1xcXFxuJytpdGVtLmF1dGhvck5hbWUsXFxuICAgICAgICBkZXNjOiBpdGVtLmludHJvLFxcbiAgICAgICAgaW1nOiBhcGl2aWV3LnN0YXRpY19hZGRyZXNzK2l0ZW0uY292ZXJVcmwsXFxuICAgICAgICB1cmw6IGBoaWtlcjovL3BhZ2UvZXJqaT9ib29rSWQ9JHtpdGVtLmJvb2tJZH0jaW1tZXJzaXZlVGhlbWUjYCxcXG4gICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV92ZXJ0aWNhbF9waWMnLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBib29rSWQ6IGl0ZW0uYm9va0lkLFxcbiAgICAgICAgICAgIHBhZ2VUaXRsZTogaXRlbS5ib29rTmFtZVxcbiAgICAgICAgfVxcbiAgICB9KVxcbn0pXFxufWNhdGNoKGUpe31cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS5puaetlwiLFwicGF0aFwiOlwiY2xhMVwiLFwicnVsZVwiOlwiaWYoTVlfUEFHRSA9PSAnMScpe1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOiAn5pS26JePJyxcXG4gICAgdXJsOiAnaGlrZXI6Ly9jb2xsZWN0aW9uP3J1bGU9JytNWV9SVUxFLnRpdGxlLFxcbiAgICBjb2xfdHlwZTogJ3RleHRfMidcXG59KVxcbmQucHVzaCh7XFxuICAgIHRpdGxlOiAn5Y6G5Y+yJyxcXG4gICAgdXJsOiAnaGlrZXI6Ly9oaXN0b3J5P3J1bGU9JytNWV9SVUxFLnRpdGxlLFxcbiAgICBjb2xfdHlwZTogJ3RleHRfMidcXG59KVxcbnZhciBodG1sID0gcmVxdWVzdCgnaGlrZXI6Ly9jb2xsZWN0aW9uP3J1bGU9JytNWV9SVUxFLnRpdGxlKTsgLy9sb2coaHRtbCkgXFxudmFyIGh0bWwxID0gSlNPTi5wYXJzZShodG1sKTsgLy9sb2coaHRtbDEpXFxuLy8g5L2/55SoIGZpbHRlciDnrZvpgInnrKblkIjmnaHku7bnmoTpoblcXG52YXIgZmlsdGVyZWRJdGVtcyA9IGh0bWwxLmZpbHRlcihpdGVtID0+IHtcXG4gICAgLy8g6Kej5p6QIGl0ZW0ucGFyYW1zXFxuICAgIGxldCBwYXJzZWRQYXJhbXMgPSBKU09OLnBhcnNlKGl0ZW0ucGFyYW1zKTtcXG4gICAgLy8g562b6YCJ5p2h5Lu277yacGFyc2VkUGFyYW1zLnRpdGxlID09PSBNWV9SVUxFLnRpdGxlICYmIGl0ZW0ubGFzdENsaWNrIOWtmOWcqFxcbiAgICByZXR1cm4gcGFyc2VkUGFyYW1zLnRpdGxlID09PSBNWV9SVUxFLnRpdGxlO1xcbn0pO1xcbi8vIOmBjeWOhuetm+mAieWQjueahOe7k+aenFxcbmZpbHRlcmVkSXRlbXMuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgbGV0IGxhc3RDbGljayA9IGl0ZW0ubGFzdENsaWNrID09IHVuZGVmaW5lZCA/ICfml6DotrPov7knIDogaXRlbS5sYXN0Q2xpY2suc3BsaXQoJ0BAJylbMF1cXG4gICAgbGV0IHBhcnNlZFBhcmFtcyA9IEpTT04ucGFyc2UoaXRlbS5wYXJhbXMpOyAvLyDlho3mrKHop6PmnpBcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBpdGVtLm1UaXRsZSxcXG4gICAgICAgIGRlc2M6IGxhc3RDbGljayArICdcXFxcbicgKyBhcGl2aWV3LmZvcm1hdFRpbWVzdGFtcChpdGVtLnRpbWUpLCAvLyDmmL7npLrml7bpl7TmiLNcXG4gICAgICAgIGltZzogaXRlbS5waWNVcmwsXFxuICAgICAgICB1cmw6IGBoaWtlcjovL3BhZ2UvZXJqaT9ib29rSWQ9JHtKU09OLnBhcnNlKHBhcnNlZFBhcmFtcy5wYXJhbXMpLmJvb2tJZH0jaW1tZXJzaXZlVGhlbWUjYCxcXG4gICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV92ZXJ0aWNhbF9waWMnLFxcbiAgICAgICAgZXh0cmE6IHBhcnNlZFBhcmFtcy5wYXJhbXMgLy8g5pC65bimIGV4dHJhIOWPguaVsFxcbiAgICB9KTtcXG59KTtcXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuoznuqdcIixcInBhdGhcIjpcImVyamlcIixcInJ1bGVcIjpcImpzOlxcbi8qXFxuYWRkTGlzdGVuZXIoXFxcIm9uQ2xvc2VcXFwiLCAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgbGV0IGtleXMgPSBsaXN0TXlWYXJLZXlzKCk7IC8vbG9nKGtleXMpXFxuICAgIGZvciAobGV0IGl0IG9mIGtleXMpIHtcXG4gICAgICAgIGNsZWFyTXlWYXIoXFxcImhpa2VyOi8vcGFnZS9lcmppI2ltbWVyc2l2ZVRoZW1lI1xcXCIpO1xcbiAgICB9XFxufSkpXFxuKi9cXG52YXIgYXBpdmlldyA9ICQucmVxdWlyZShcXFwiaGFuc2h1XFxcIik7XFxudmFyIGRhdGEgPSBhcGl2aWV3LmdldGh0bWwoYXBpdmlldy5zdGF0aWNfYWRkcmVzcysnYXBpL25vdmVsL2Jvb2svaW5mby8nK01ZX1BBUkFNUy5ib29rSWQrJy5qc29uJyk7XFxudmFyIGQgPSBbXTtcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogZGF0YS5ib29rTmFtZSArICdcXFxcbuS9nOiAhe+8micgKyBkYXRhLmF1dGhvck5hbWUsXFxuICAgIGRlc2M6ICfnsbvlnovvvJonICsgZGF0YS5jYXRlZ29yeU5hbWUgKyAnXFxcXG7mnIDmlrDvvJonICsgZGF0YS5sYXRlc3RDaGFwdGVyTmFtZSxcXG4gICAgcGljX3VybDogYXBpdmlldy5zdGF0aWNfYWRkcmVzcyArIGRhdGEuY292ZXJVcmwsXFxuICAgIHVybDogJ2hpa2VyOi8vZW1wdHknLFxcbiAgICBjb2xfdHlwZTogJ21vdmllXzFfdmVydGljYWxfcGljX2JsdXInLFxcbiAgICBleHRyYToge1xcbiAgICAgICAgZ3JhZGllbnQ6IHRydWVcXG4gICAgfVxcbn0pXFxuYXBpdmlldy5zZXREZXNjKGQsZGF0YS5pbnRybylcXG52YXIgaHRtbCA9IGFwaXZpZXcuZ2V0aHRtbChhcGl2aWV3LnN0YXRpY19hZGRyZXNzKycvYXBpL25vdmVsL2Jvb2svY2hhcHRlcnMvJytNWV9QQVJBTVMuYm9va0lkKycuanNvbicpOyBcXG52YXIgbGlzdCA9IGh0bWwuY2hhcHRlcnNcXG5cXG4vKipcXG4gKiDliIbpobXlh73mlbDvvIzlsIbmlbDnu4TmjInmjIflrprmlbDph4/liIbmiJDlpJrkuKrpobVcXG4gKiBAcGFyYW0ge0FycmF5fSBkYXRhIC0g6ZyA6KaB5YiG6aG155qE5pWw57uEXFxuICogQHBhcmFtIHtudW1iZXJ9IGl0ZW1zUGVyUGFnZSAtIOavj+mhteaYvuekuueahOmhueebruaVsOmHj1xcbiAqIEByZXR1cm5zIHtBcnJheX0gLSDliIbpobXlkI7nmoTkuoznu7TmlbDnu4TvvIzmr4/kuKrlrZDmlbDnu4TkuLrkuIDpobVcXG4gKi9cXG5mdW5jdGlvbiBwYWdpbmF0ZUFycmF5KGRhdGEsIGl0ZW1zUGVyUGFnZSkge1xcbiAgICBjb25zdCB0b3RhbFBhZ2VzID0gTWF0aC5jZWlsKGRhdGEubGVuZ3RoIC8gaXRlbXNQZXJQYWdlKTtcXG4gICAgY29uc3QgcGFnaW5hdGVkQXJyYXkgPSBbXTtcXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0b3RhbFBhZ2VzOyBpKyspIHtcXG4gICAgICAgIHBhZ2luYXRlZEFycmF5LnB1c2goZGF0YS5zbGljZShpICogaXRlbXNQZXJQYWdlLCAoaSArIDEpICogaXRlbXNQZXJQYWdlKSk7XFxuICAgIH1cXG4gICAgcmV0dXJuIHBhZ2luYXRlZEFycmF5O1xcbn1cXG5cXG4vLyDnpLrkvovnlKjms5VcXG52YXIgaXRlbXNQZXJQYWdlID0gNTA7IC8vIOavj+mhteaYvuekuueahOaVsOmHj1xcbnZhciBsaXN0cyA9IHBhZ2luYXRlQXJyYXkobGlzdCwgaXRlbXNQZXJQYWdlKTsgLy8g5YiG6aG15ZCO55qE57uT5p6cXFxuXFxudmFyIHRhYnMgPSBbXVxcbi8vIOmBjeWOhuavj+S4gOmhteeahOaVsOaNrlxcbmxpc3RzLmZvckVhY2goKHBhZ2UsIGluZGV4KSA9PiB7XFxuICAgIHRhYnMucHVzaChg56ysJHtpbmRleCArIDF96aG1YCk7XFxufSlcXG5cXG5mdW5jdGlvbiBzZXRUYWJzKHRhYnMsIHZhcmkpIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAoZ2V0VmFyKCdzaHNvcnQnKSA9PSAnMScpID8gJ+KAnOKAnOKAneKAnTxiPjxzcGFuIHN0eWxlPVxcXCJjb2xvcjogI0ZGMDAwMFxcXCI+6YCG5bqPPC9zcGFuPjwvYj4nIDogJ+KAnOKAnOKAneKAnTxiPjxzcGFuIHN0eWxlPVxcXCJjb2xvcjogIzFhYWQxOVxcXCI+5q2j5bqPPC9zcGFuPjwvYj4nLFxcbiAgICAgICAgdXJsOiBgQGxhenlSdWxlPS5qczpsZXQgY29uZiA9IGdldFZhcignc2hzb3J0Jyk7aWYoY29uZj09JzEnKXtwdXRWYXIoe2tleTonc2hzb3J0JywgdmFsdWU6JzAnfSk7fWVsc2V7cHV0VmFyKHtrZXk6J3Noc29ydCcsIHZhbHVlOicxJ30pfTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+WIh+aNouaOkuW6j+aIkOWKnydgLFxcbiAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICB9KVxcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRhYnMubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgIHZhciB1cmwgPSBcXFwiI25vTG9hZGluZyNAbGF6eVJ1bGU9LmpzOnB1dE15VmFyKCdcXFwiICsgdmFyaSArIFxcXCInLCAnXFxcIiArIGkgKyBcXFwiJyk7cmVmcmVzaFBhZ2UoZmFsc2UpOyd0b2FzdDovL+WIh+aNouaIkOWKn++8gSc7JyNub0hpc3RvcnkjaGlrZXI6Ly9lbXB0eSdcXFwiO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogZ2V0TXlWYXIodmFyaSwgJzAnKSA9PSBpID8gJ+KAnOKAnCcgKyB0YWJzW2ldICsgJ+KAneKAnScgOiB0YWJzW2ldLFxcbiAgICAgICAgICAgIHVybDogdXJsLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgICAgIH0pXFxuICAgIH1cXG59XFxuXFxuZnVuY3Rpb24gc2V0TGlzdHMobGlzdHMsIGluZGV4KSB7XFxuICAgIHZhciBsaXN0ID0gbGlzdHNbaW5kZXhdO1xcbiAgICBpZiAoZ2V0VmFyKCdzaHNvcnQnKSA9PSAnMScpIHtcXG4gICAgICAgIHZhciBsaXN0ID0gbGlzdHNbaW5kZXhdLnJldmVyc2UoKTtcXG4gICAgfVxcbiAgICBmb3IgKHZhciBqIGluIGxpc3QpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGxpc3Rbal0uY2hhcHRlck5hbWUsXFxuICAgICAgICAgICAgdXJsOiBhcGl2aWV3LmxhenkobGlzdFtqXS5jaGFwdGVySWQpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJyxcXG4gICAgICAgIH0pXFxuICAgIH1cXG59XFxuXFxuc2V0VGFicyh0YWJzLCBNWV9VUkwpO1xcbnNldExpc3RzKGxpc3RzLCBnZXRNeVZhcihNWV9VUkwsICcwJykpO1xcblxcbnNldFJlc3VsdChkKVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5p+l55yL5pu05aSaXCIsXCJwYXRoXCI6XCJja2dkXCIsXCJydWxlXCI6XCJqczpcXG52YXIgZCA9IFtdO1xcbnZhciBhcGl2aWV3ID0gJC5yZXF1aXJlKFxcXCJoYW5zaHVcXFwiKTtcXG52YXIgaHRtbCA9IGFwaXZpZXcuZ2V0aHRtbChhcGl2aWV3LnN0YXRpY19hZGRyZXNzKydhcGkvbm92ZWwvbGliLycrTVlfUEFSQU1TLmlkKycvbGlzdC8nK01ZX1BBR0UrJy5qc29uJyk7IFxcbnZhciBsaXN0ID0gaHRtbC5pdGVtc1xcbmxpc3QuZm9yRWFjaCggaXRlbSA9PiB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogaXRlbS5ib29rTmFtZSsnXFxcXG4nK2l0ZW0uY2F0ZWdvcnlOYW1lLFxcbiAgICAgICAgZGVzYzogaXRlbS5hdXRob3JOYW1lKydcXFxcbicraXRlbS5sYXRlc3RDaGFwdGVyTmFtZSxcXG4gICAgICAgIGltZzogYXBpdmlldy5zdGF0aWNfYWRkcmVzcytpdGVtLmNvdmVyVXJsLFxcbiAgICAgICAgdXJsOiBgaGlrZXI6Ly9wYWdlL2Vyamk/Ym9va0lkPSR7aXRlbS5ib29rSWR9I2ltbWVyc2l2ZVRoZW1lI2AsXFxuICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfdmVydGljYWxfcGljJyxcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgYm9va0lkOiBpdGVtLmJvb2tJZCxcXG4gICAgICAgICAgICBwYWdlVGl0bGU6IGl0ZW0uYm9va05hbWVcXG4gICAgICAgIH1cXG4gICAgfSlcXG59KVxcbnNldFJlc3VsdChkKVwifSx7XCJjb2xfdHlwZVwiOlwidGV4dF8xXCIsXCJuYW1lXCI6XCLojrflj5bliIbnsbvlpLTpg6hcIixcInBhdGhcIjpcImNsYXNzaWNIZWFkZXJcIixcInJ1bGVcIjpcImpzOlxcbmxldCBkID0gW107XFxuXFxuZnVuY3Rpb24gcHV0S2V5SW50b01hcChrZXksIHZhbHVlKSB7XFxuICAgIGNvbnN0IGtleU1hcCA9IEpTT04ucGFyc2UoZ2V0VmFyKFxcXCJjcnlwdG9yX2FsbF9rZXlfTWFwXFxcIiwgXFxcInt9XFxcIikpO1xcbiAgICBrZXlNYXBba2V5XSA9IHZhbHVlO1xcbiAgICBwdXRWYXIoXFxcImNyeXB0b3JfYWxsX2tleV9NYXBcXFwiLCBKU09OLnN0cmluZ2lmeShrZXlNYXApKTtcXG59XFxuXFxuZnVuY3Rpb24gZ2V0SGVhZGVyRnJvbUpTT05PYmplY3Qob2JqKSB7XFxuXFxuICAgIHZhciBnZXRSYW5nZUNvbG9ycyA9IGZ1bmN0aW9uKCkge1xcbiAgICAgICAgcmV0dXJuICgnMDAwMDAnICsgKE1hdGgucmFuZG9tKCkgKiAweDEwMDAwMDAgPDwgMCkudG9TdHJpbmcoMTYpKS5zdWJzdHIoLTYpO1xcbiAgICB9XFxuICAgIHZhciB0aW5kZXggPSBzdG9yYWdlMC5nZXRNeVZhcigndGluZGV4JywgMClcXG4gICAgdmFyIHRpdGxlcyA9IFtcXFwi6aaW6aG1XFxcIiwgXFxcIuWIhuexu1xcXCIsIFxcXCLkuabmnrZcXFwiXVxcbiAgICB2YXIgaW1ncyA9IFtcXFwiaHR0cHM6Ly9pbWcudmludWEuY24vaW1hZ2VzL0lkbFV2LnRoLnBuZ1xcXCIsIFxcXCJodHRwczovL2ltZy52aW51YS5jbi9pbWFnZXMvSWRxbGsudGgucG5nXFxcIiwgXFxcImh0dHBzOi8vaW1nLnZpbnVhLmNuL2ltYWdlcy9JZDI5Si50aC5wbmdcXFwiXVxcbiAgICB0aXRsZXMgPSB0aXRsZXMubWFwKCh4LCBpKSA9PiB7XFxuICAgICAgICB2YXIgdGl0bGUgPSBpID09IHRpbmRleCA/IGA8Yj48Zm9udCBjb2xvcj1cXFwiIzkzNzBEQlxcXCI+JHt4fTwvZm9udD48L2I+YCA6IHhcXG4gICAgICAgIHJldHVybiB0aXRsZVxcbiAgICB9KVxcbiAgICBpZiAoTVlfUEFHRSA9PSAxKSB7XFxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRpdGxlcy5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgIHZhciBteXRpdGxlID0gdGl0bGVzW2ldO1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBteXRpdGxlLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKGkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHN0b3JhZ2UwLnB1dE15VmFyKCd0aW5kZXgnLCBpKVxcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKVxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcbiAgICAgICAgICAgICAgICB9LCBpKSxcXG4gICAgICAgICAgICAgICAgaW1nOiBpbWdzW2ldLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImljb25fc21hbGxfM1xcXCJcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG4gICAgfVxcbiAgICBcXG4gICAgZm9yIChsZXQga2V5IGluIG9iaikge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZToga2V5ID09IGdldFZhcihcXFwiY3J5cHRvclxcXCIsIE9iamVjdC5rZXlzKG9iailbMF0pID8gXFxcIuKAnOKAnFxcXCIgKyBrZXkgKyBcXFwi4oCd4oCdXFxcIiA6IGtleSxcXG4gICAgICAgICAgICB1cmw6ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKGtleSkgPT4ge1xcbiAgICAgICAgICAgICAgICBwdXRWYXIoXFxcImNyeXB0b3JcXFwiLCBrZXkpO1xcbiAgICAgICAgICAgICAgICBwdXRWYXIoXFxcImNyeXB0b3JfY3VyX2luZGV4XFxcIiwga2V5KTtcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgICAgICAgICAgfSwga2V5KSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcInNjcm9sbF9idXR0b25cXFwiXFxuICAgICAgICB9KTtcXG4gICAgfVxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgY29sX3R5cGU6IFxcXCJibGFua19ibG9ja1xcXCJcXG4gICAgfSk7XFxuICAgIGxldCBrZXkgPSBnZXRWYXIoXFxcImNyeXB0b3JcXFwiLCBPYmplY3Qua2V5cyhvYmopWzBdKTtcXG4gICAgcHV0VmFyKFxcXCJjcnlwdG9yX2N1cl9pbmRleFxcXCIsIGtleSk7XFxuICAgIGdldE5leHRIZWFkZXJGcm9tSlNPTkFycmF5KGtleSwgb2JqW2tleV0pO1xcbiAgICByZXR1cm4gZDtcXG59XFxuXFxuZnVuY3Rpb24gZ2V0TmV4dEhlYWRlckZyb21KU09OQXJyYXkoa2V5LCBhcnJheSkge1xcbiAgICBpZiAoYXJyYXkgPT0gdW5kZWZpbmVkIHx8IGFycmF5Lmxlbmd0aCA9PSAwKSB7XFxuICAgICAgICByZXR1cm47XFxuICAgIH1cXG4gICAgbGV0IG5leHRIZWFkZXIgPSB7fTtcXG4gICAgbGV0IGRlZmF1bHRWYWx1ZSA9IFxcXCJcXFwiO1xcbiAgICBkZWZhdWx0VmFsdWUgPSBhcnJheVswXTtcXG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhcnJheVswXSkgPT09ICdbb2JqZWN0IE9iamVjdF0nKSB7XFxuICAgICAgICBkZWZhdWx0VmFsdWUgPSBPYmplY3Qua2V5cyhhcnJheVswXSlbMF07XFxuICAgIH1cXG4gICAgcHV0S2V5SW50b01hcChcXFwiY3J5cHRvckBAXFxcIiArIGtleSwgZ2V0VmFyKFxcXCJjcnlwdG9yQEBcXFwiICsga2V5LCBkZWZhdWx0VmFsdWUpKVxcbiAgICBwdXRWYXIoXFxcImNyeXB0b3JfY3VyX2luZGV4XFxcIiwga2V5ICsgXFxcIkBAXFxcIiArIGdldFZhcihcXFwiY3J5cHRvckBAXFxcIiArIGtleSwgZGVmYXVsdFZhbHVlKSk7XFxuICAgIGZvciAobGV0IHZhbHVlIG9mIGFycmF5KSB7XFxuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKSA9PT0gJ1tvYmplY3QgT2JqZWN0XScpIHtcXG4gICAgICAgICAgICAvLyBsb2coXFxcInZhbHVlS2V5czogXFxcIitKU09OLnN0cmluZ2lmeShPYmplY3Qua2V5cyh2YWx1ZSlbMF0pKVxcbiAgICAgICAgICAgIGxldCB2YWx1ZUtleSA9IE9iamVjdC5rZXlzKHZhbHVlKVswXTtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogdmFsdWVLZXkgPT0gZ2V0VmFyKFxcXCJjcnlwdG9yQEBcXFwiICsga2V5LCBkZWZhdWx0VmFsdWUpID8gXFxcIuKAnOKAnFxcXCIgKyB2YWx1ZUtleSArIFxcXCLigJ3igJ1cXFwiIDogdmFsdWVLZXksXFxuICAgICAgICAgICAgICAgIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgodmFsdWVLZXksIGtleSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gcHV0S2V5SW50b01hcChrZXksIHZhbHVlKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qga2V5TWFwID0gSlNPTi5wYXJzZShnZXRWYXIoXFxcImNyeXB0b3JfYWxsX2tleV9NYXBcXFwiLCBcXFwie31cXFwiKSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAga2V5TWFwW2tleV0gPSB2YWx1ZTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoXFxcImNyeXB0b3JfYWxsX2tleV9NYXBcXFwiLCBKU09OLnN0cmluZ2lmeShrZXlNYXApKTtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIHB1dFZhcihcXFwiY3J5cHRvckBAXFxcIiArIGtleSwgdmFsdWVLZXkpO1xcbiAgICAgICAgICAgICAgICAgICAgcHV0VmFyKFxcXCJjcnlwdG9yX2N1cl9pbmRleFxcXCIsIGtleSArIFxcXCJAQFxcXCIgKyB2YWx1ZUtleSk7XFxuICAgICAgICAgICAgICAgICAgICBwdXRLZXlJbnRvTWFwKFxcXCJjcnlwdG9yQEBcXFwiICsga2V5LCBnZXRWYXIoXFxcImNyeXB0b3JAQFxcXCIgKyBrZXksIFxcXCJkZWZhdWx0VmFsdWVcXFwiKSlcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgICAgICAgICAgICAgfSwgdmFsdWVLZXksIGtleSksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwic2Nyb2xsX2J1dHRvblxcXCJcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBuZXh0SGVhZGVyW3ZhbHVlS2V5XSA9IHZhbHVlW3ZhbHVlS2V5XTtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHZhbHVlID09IGdldFZhcihcXFwiY3J5cHRvckBAXFxcIiArIGtleSwgZGVmYXVsdFZhbHVlKSA/IFxcXCLigJzigJxcXFwiICsgdmFsdWUgKyBcXFwi4oCd4oCdXFxcIiA6IHZhbHVlLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKHZhbHVlLCBrZXkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHB1dEtleUludG9NYXAoa2V5LCB2YWx1ZSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleU1hcCA9IEpTT04ucGFyc2UoZ2V0VmFyKFxcXCJjcnlwdG9yX2FsbF9rZXlfTWFwXFxcIiwgXFxcInt9XFxcIikpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleU1hcFtrZXldID0gdmFsdWU7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcHV0VmFyKFxcXCJjcnlwdG9yX2FsbF9rZXlfTWFwXFxcIiwgSlNPTi5zdHJpbmdpZnkoa2V5TWFwKSk7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICBwdXRWYXIoXFxcImNyeXB0b3JAQFxcXCIgKyBrZXksIHZhbHVlKTtcXG4gICAgICAgICAgICAgICAgICAgIHB1dEtleUludG9NYXAoXFxcImNyeXB0b3JAQFxcXCIgKyBrZXksIGdldFZhcihcXFwiY3J5cHRvckBAXFxcIiArIGtleSwgXFxcImRlZmF1bHRWYWx1ZVxcXCIpKVxcbiAgICAgICAgICAgICAgICAgICAgcHV0VmFyKFxcXCJjcnlwdG9yX2N1cl9pbmRleFxcXCIsIGtleSArIFxcXCJAQFxcXCIgKyB2YWx1ZSk7XFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgICAgICAgICAgICAgIH0sIHZhbHVlLCBrZXkpLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcInNjcm9sbF9idXR0b25cXFwiXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgIH1cXG5cXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIGNvbF90eXBlOiBcXFwiYmxhbmtfYmxvY2tcXFwiXFxuICAgIH0pO1xcbiAgICBpZiAobmV4dEhlYWRlciAhPT0gdW5kZWZpbmVkICYmIG5leHRIZWFkZXIubGVuZ3RoICE9IDApIHtcXG4gICAgICAgIGdldE5leHRIZWFkZXJGcm9tSlNPTkFycmF5KGtleSArIFxcXCJAQFxcXCIgKyBnZXRWYXIoXFxcImNyeXB0b3JAQFxcXCIgKyBrZXksIGRlZmF1bHRWYWx1ZSksIG5leHRIZWFkZXJbZ2V0VmFyKFxcXCJjcnlwdG9yQEBcXFwiICsga2V5LCBkZWZhdWx0VmFsdWUpXSk7XFxuICAgIH1cXG59XFxuXFxubGV0IGhlYWRlciA9IHtcXG4gICAgLyoqXFxuICAgICAqIOiOt+WPluWIhuexu+WktOmDqO+8jOi/lOWbnuinhueVjCBzZXRSZXN1bHQg55So55qE5pWw57uEXFxuICAgICAqL1xcbiAgICBnZXQ6IGZ1bmN0aW9uKG9iaikge1xcbiAgICAgICAgbGV0IHJlc3VsdCA9IGdldEhlYWRlckZyb21KU09OT2JqZWN0KG9iaik7XFxuICAgICAgICAvL2xvZyhcXFwi44CQ5a2Q6aG16Z2i44CRXFxcIiArIEpTT04uc3RyaW5naWZ5KHJlc3VsdCkpXFxuICAgICAgICByZXR1cm4gcmVzdWx0O1xcbiAgICB9LFxcbiAgICAvKipcXG5cXHQgICAqIOmhtemdouWFs+mXreaXtumcgOimgeazqOWGjOeahOeUn+WRveWRqOacn++8jOW8leWFpeS+nei1luWQjuWcqCBhZGRMaXN0ZW5lciDkuK3osIPnlKjljbPlj69cXG5cXHQgICAqIOS+i++8mlxcblxcdCAgICAgY29uc3QgeyBoZWFkZXIgfSA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2NsYXNzaWNIZWFkZXJcXFwiKTtcXG5cXHQgICAgIGFkZExpc3RlbmVyKFxcXCJvbkNsb3NlXFxcIiwgJC50b1N0cmluZygoaGVhZGVyKSA9PiB7XFxuICAgICAgICAgIGhlYWRlci5vbkNsb3NlKCk7XFxuICAgICAgICB9LCBoZWFkZXIpKTtcXG5cXHQgICAqL1xcbiAgICBvbkNsb3NlOiBmdW5jdGlvbigpIHtcXG4gICAgICAgIC8vIHB1dFZhcihcXFwiY3J5cHRvclxcXCIsIFxcXCLnvJbnoIFcXFwiKTtcXG4gICAgICAgIC8vIHB1dFZhcihcXFwiY3J5cHRvckBA57yW56CBXFxcIiwgXFxcIuS9m+absFxcXCIpO1xcbiAgICAgICAgbGV0IGFsbEtleUFyciA9IE9iamVjdC5rZXlzKEpTT04ucGFyc2UoZ2V0VmFyKFxcXCJjcnlwdG9yX2FsbF9rZXlfTWFwXFxcIiwgXFxcInt9XFxcIikpKTtcXG4gICAgICAgIGZvciAobGV0IGkgaW4gYWxsS2V5QXJyKSB7XFxuICAgICAgICAgICAgY2xlYXJWYXIoYWxsS2V5QXJyW2ldKTtcXG4gICAgICAgICAgICAvLyBsb2coXFxcIuOAkOa4heeQhuWQjuOAkVxcXCIrIGFsbEtleUFycltpXSArIFxcXCI6IFxcXCIrSlNPTi5zdHJpbmdpZnkoZ2V0VmFyKGFsbEtleUFycltpXSwgXFxcIlxcXCIpKSlcXG4gICAgICAgIH1cXG4gICAgICAgIGNsZWFyVmFyKFxcXCJjcnlwdG9yXFxcIilcXG4gICAgICAgIGNsZWFyVmFyKFxcXCJjcnlwdG9yX2FsbF9rZXlfTWFwXFxcIilcXG4gICAgfSxcXG4gICAgLyoqXFxuICAgICAqIOiOt+WPluW9k+WJjeW3sumAieWkmue6p+WIhuexu++8jOi/lOWbnueahOaVsOaNruagvOW8j+S4uu+8muS4gOe6p+WIhuexu0BA5LqM57qn5YiG57G7QEAuLi7vvIzlj6/oh6rooYzlgZrmmKDlsITojrflj5YgdXJsXFxuICAgICAqL1xcbiAgICBnZXRDdXJyZW50SW5kZXg6IGZ1bmN0aW9uKCkge1xcbiAgICAgICAgcmV0dXJuIGdldFZhcihcXFwiY3J5cHRvcl9jdXJfaW5kZXhcXFwiLCBcXFwiXFxcIik7XFxuICAgIH1cXG59XFxuJC5leHBvcnRzLmhlYWRlciA9IGhlYWRlclxcblxcblxcblxcblxcblxcblxcblxcblxcbi8qKlxcbiAqIDEuIOW8leWFpeWktOmDqOS+nei1llxcbiAqL1xcbmNvbnN0IHsgaGVhZGVyIH0gPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9jbGFzc2ljSGVhZGVyXFxcIik7XFxuLyoqXFxuICogMi4g5rOo5YaM5YWz6Zet6aG16Z2i55Sf5ZG95ZGo5pyfXFxuICovXFxuYWRkTGlzdGVuZXIoXFxcIm9uQ2xvc2VcXFwiLCAkLnRvU3RyaW5nKChoZWFkZXIpID0+IHtcXG4gIGhlYWRlci5vbkNsb3NlKCk7XFxufSwgaGVhZGVyKSk7XFxuXFxuLyoqXFxuICogMy4g5YeG5aSH5aW95YiG57G75pWw5o2uXFxuICovXFxubGV0IGNsYXNzaWMgPSB7XFxuICAgIFxcXCLnvJbnoIFcXFwiOiBbXFxcIuS9m+absFxcXCIsIFxcXCJVbmljb2RlXFxcIiwgXFxcIkJhc2U2NFxcXCIsIFxcXCJBU0NJSVxcXCJdLFxcbiAgICBcXFwi5Yqg5a+GXFxcIjogW3tcXG4gICAgICAgICAgICBcXFwiQUVTXFxcIjogW1xcXCJQa2NzN1xcXCIsIFxcXCJQa2NzNVxcXCJdXFxuICAgICAgICB9LFxcbiAgICAgICAgXFxcIlJTQVxcXCIsXFxuICAgICAgICB7XFxuICAgICAgICAgICAgXFxcIkRFU1xcXCI6IFtcXFwiUGtjczVcXFwiXVxcbiAgICAgICAgfSxcXG4gICAgXVxcbn1cXG5cXG4vKipcXG4gKiA0LiDojrflj5bop4bnlYzliIbnsbvlpLTpg6hcXG4gKi9cXG5kID0gaGVhZGVyLmdldChjbGFzc2ljKVxcbi8qKlxcbiAqIDUuIOiOt+WPluW9k+WJjemAieaLqeeahOWkmue6p+WIhuexu1xcbiAqL1xcbmxvZyhoZWFkZXIuZ2V0Q3VycmVudEluZGV4KCkpXCJ9XSIsImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUlvQUFBQ0tDQVlBQUFCMWg5SmtBQUFBQVhOU1IwSUFyczRjNlFBQUFBUnpRa2xVQ0FnSVxuQ0h3SVpJZ0FBQnFWU1VSQlZIaWM3WjE1a0J6WGVkaC8zK3Z1bWIwWHV6Z1hBQWtRQkhnQWtIakxQQ0lKbEd6UlBFMkNvaUxKZGltV1xuWE9VNFJ5VnlKZVc0VXBXa2tqaVdaVmVpcXNTU0tvbExpbEpSMlZTS29IbEtNaVZScG1oU1pDaUNOMFdLQkVEY3UxZ3NGcnM3VjNlL1xuTDMrODJkMlpuZG1qWjJmMk1QdFhCUzZucDk4eC9iNyszdmUrOTczM0lDVWxKU1VsSlNVbEpTVWxKU1VsSlNWbElYakxYWUdVT2VrR1xuZGdKdHdQbGxya3ZLS21BZHNCZklMbmRGVWxZK0dlQXluSlpKU1ptWFhTeURzTWhTRnpnWCtjZnYzbTRqYnpmQ05pdTZ3WUJZQ3lMMFxuZ200RXMwSFYrbUlFTEdCQXJiSTZQMnVFbUVIUTA2S01Xc0FZMUZvOWJURHZHVDkrdmYzV0J3L1A4cWgyQTBlQnNkYTJ5RFRMS2loalxuajl5elY1QmJGTDFSa0p1QWpjdFpueFhJYVVHZVZ1VnBGZnY5N2pzT3ZGcngzUzdnRkVza0xFc3VLUG1IN3Jzbzl1SlBvM3dXWjZDbFxuTEJTUlY4QisyNHY5djJ5LzZ6dUhnTXVCZDRGaXk0dHVkUUVBK3FOOS92aEUzMTJDZkFHNGhYUll2bGdpZ1lmUGpZZi9hKzhYdnZmdVxueUVUcGxWWVgyUElHRzM3czFoNHQ5WHdabFQ5QnVBUXdyUzd6ZllBQkxtL1ArSi82L0czYmc1UG5TMisvK3M2NU02MHNzS1VhWmVLeFxudTI5VmEvNG5zTG1WNWJ6ZmlTSTdPSnF6djdIdHN3LzlkYXZLYUltZ2pCeTRlMDBReUZkQVB0ZUsvRlBxb1NwaXZ0cmhkL3krM1BLL1xuSjVxZGU5TUZ4ZGtqL2ZjTDNOUHN2RlBtUitCQVIrZlpUOG5OVDBiTnpMZXA5b0wrYUo4L1BwNEt5WEtpY0U5dW92OSsvZEUrdjVuNVxuTmxWUUppYjZ2aVdTQ3NseW8zQlBMcmYySzgzTXMybUNNdjdJL2krQmZLWlorYVVzRGxYOXg2NU5ta05UYkpUeFIvYi9NdkE5MHFIdlxueWtLeHh1T21qdHNlZUhheFdTMWFVTTQ5Y251ZlQ5dnJvSnNXbTFkSzgxRjRONlo0N1pvN0hoMVpURDZMMWdBZTJUOUtoV1RsSXJERFxudGRHaTgybWNpVWZ1dmtZeFB5VjF5YTlvQkdJc04zVGU5Y0R6amVheEtJMmltRDhrRlpJVmo0S25odit3bUR3YTFpam4vK3F1U3ozZlxuZjBOMVpjVzBwTXlHcXNLZTdqc092TkZJNm9ZMWl1ZjVYMHlGWkRVaEF2TFBHazNkc0tBby9HcWphVk9XQjdPSU5tdElVTTQvZk85bFxud0xaR0MwMVpIaFMyNVIrL2Uzc2phUnNTRkdQMCtrYlNwU3cvc1RYN0drblhXTmVqMmxCaEtjdVBLZzI5NUkwSmlwaFVvNnhTaEtVVVxuRkUwOXNhc1dZV2xzbFBGSDc5c0U5RFpTV01vS1FPa2RPWEQzbXFUSkd0QW9ZYXBOVmpsQkpybFdhU0FLU2xKQmFTbUN0UFhoOWU5QlxuL0N6UjBFRW9ERHUvYXZQS1NOeUdxYUNzTUtSalBlMGYramRJcDN2TVFmRWMrYWYvQVBKRFRTdERsZFozUFdxMUxXbWFKVWQ4OExKSVxuMEFtbXFhR2pMY2YwWElSMER1Q200UVRKOXVHdDJkWGNNc1FrRnBURVQxR01XVU5UMWVDOEpaYW5LUXhnRUJGVURHSjg4TnFRb0JNSlxudXBCTU53U2RTS1lIQ2JxZGtQaWQ2TVFKd3NPUG9jVkZ4ZTBzR1dLQzJvdGVjN2RGVVd6ckJRVzBMM21hZVJCQk1yM3VuOGtpMlM3d1xuTzF6ait4MUkwQVZCSnliVEJaNzdxMzY3ZTZqaUljWkh5MzhSenduV1pHMDFSdHJXVUh6NTY2QngwNnUrTkRSMzdsV1F6cVJwR2hHVVxuYkRNckxuNDd3WTY3OERaZGozaHRydEc5QURFWk1FRlprOVJKTjgvbnFldmlZWG92ZG5uRnEwQlFwTTR2YWJJR1Z6VHgvaXJKQmNYU1xuVkFFM2EvY1M3THF2S3RPbXZqK3E2TmhSc0dFemMyMFo5V1ZpK1FVOHNhQ29TRnN6RzFMOFRob1ZEVldMb09XbmE5MFFVaTNFQmJRMFxuaGhaR2lNOGNKRHIyNVBKMU93SWtVQWhpYWdNRzFUYTM3cXFTZUVDUzNKaEYyNXI1enNmbmZvN21Ua0cyM3htcTVjWjNEeWRHdzRKclxuK0NpUHhFVnNtSU80aUliamFIZ2VMWTVDNlR4YVBJZVd6bU9MSXhBWG02NnVIYzZvRnVPaENtSU1pdnVNK0lqZlVSNXR0VHREMjNkL1xuaVhKRVoxNkJhSHorZWtsdGs1aHNMOXAvT1dJQ2JEZ0doUkcwTk5hdzhBdExJQ2h1Uk4yOFJ0Q0pVK1NmK2JmNEc2OURCU2lPb3NXUlxucVlaSHk1b0M2N1RGcE5ab1loMFdpdW5haXJmeFdxUmpJK0psSU5PTGFldHpJeTB2NjRSbWNvUW1oa25CUW1QOFU4OVJlUG5QSU1yUFxubXIvNEhaajIvcHJybWN0K2M5cDJVWXVXeG9nT1AwWjQ5QWswYkdROXVrMmNvZ0ZCYWJLUmdxS0ZNNFJISG05aW5zMUhPamFTdmZLZlxuWW5wM01OdnZuL1dwaUlkWmZ5VmUrenJpc2FOdWxCZjBZRHJXUWJZZnIvdENwSHNicG1NRHRLK3ZUZTlscXJOcnorSmYraG5NbWgwVVxuWHY3dkVDVVZsdVF6TjZ2TEc3V01lSDI3TUQwWDBmQkxvbkc1T3hYTW1sMWtMdnNOVE9jV0pOdERJdzBuSnNEYmRDUFpPS0w0eXRmQVxuSnRtOElMbEdTWmVBTGdqQkZzK0RMVFdXUEM0UXZ2TWdtaDhDTDB2YlZWL0U2OXVOWk5ld3FDWVFnN2ZsSTNocmRpWk11Q1FhcGJrMlxueXRJaEVIUmd5czQ3Q1RyQmE4ZU9IVUZ6cCtkSnE5aVJueE8rOXdUK0JUZTd2S0lDR3VXbS84WjVOTXhEbE1lRzR4Qk9vS1h6YUdrVVxuelEraHVkT29qWkJNRnNuMjEvZVgxQzA2Smo3ektuYjhLRm80aTdmaFdyeTF1NmQvbFJqTTJpdUl6NzZaNEZtc1NodGxMc3BqUzVIeVxuSDNHR3JVaVZSOVlZcit5WkRWQ3ZEYTl6QU9uWWdPbllCTzBiOERvM0ltM3JhdnA2QUkxRGlqLzdNdkhneithdVNseWs5UG8zS0wzK1xualVYOUlnMXpSTWVleE45NnM5dFlWaFhCWXFNaVlrc1FkRHNQOCtUOXVVR0tMLzRwR3VZQWlBWmZwT09tL3dSKys5UTlYdmRXa25tSlxuVnJPTlluem5ramRCK2YrZFoxWXluWkJaZzJuclI5cjZrR3o1WDlBQkp1c2Ezd3NRTCt2U0pKd1hFUzhnMkg0YjhkREI4bWlxeGFpbFxuK1BvM2lNKytnWFFPb1BsQjdNUkpLSTJpY1VqN2pmOFIydFpPMzU0ZlJHMUZ2VFRFUm5sTWhhQWsxKzlMb2xIcURQVG5UV0tRN0pyeVxuYks2YjFSVy9yVHlIMDQzSjlxQkJGeWJUQTBFWGt1a0N2eE9UNlM3UC9yWllnMFdGRnZsZFppRXVFQjEvc3VheVpIdVJvTnE3YnNkUFxuSUdxbmhVRU1adWJMRUJjU1ZxQ09WMjhlbGtTaitGcytTckRyazVqMmRWU3JQU25Md0hJdE9GVHMrY09VZnZFQUs4SHVrbzVOTmQyalxublRpRzZ2U0l4czJhVnd1S1JrbjNJMTRLalRKcEl5d1E2UmdndS9lM25ZZXk1U2dhRmNxRzVCakVPV3dwaDhSNWJEZ0IwWVFidlVRVFxuYUdIRUdackZVYlIwcmltbFM5QUpRUThtMncyKzA1cDRXU1RUQzVrdVRMWVB5ZlNpMFFUaEx3NWd4NDVVcGZkNkxwcnhjMkxpaWRQVlxuWFdLNWE2NGlUaW9vUzJHakpCQVN3TmtZelJRU0cyTEhqNkhGVVd4aEJJcG55MzlIbkVjM3pLRzI1Q1lCNHhMWUNMWGg0dVo2SnQzeFxueG5jZVdhOE5hVnVMNmRpQXRLMUQydnBkdDVIcExRdEhCa3ltN05vdi81dUJaSG9wL094UG9HeWtBbTZXdXdLTjhsQ3FQczlKNmp4TFxubmNQYlc1OGxzVkdTWWMrL2grWk9PYlZhRndVYllRdG4wZnlRTSt6eWc4UVRwL0EzMzRDLzZjYXF1Nk9UejFKNjlldG9ITHJCVUhtbFxudk9ya2FFeVJ0clY0NjYvR2pyNkRQWDlvRWJVWC9LMzd5Rng4TjJxeWlGODJzRTBHeFExTjNXMXVWSlpJMDNadXdldmNRbnp1N2ZJRlxuZyttK29QcW1LSWN0alZaZFVxOU9ZRk5pUVZtSm94NWJJdmZVdnlEWThoRlVmR2ZkRjBmUmNCUXRUVUNVYzkzRkRCdEJPZ2Z3UHZBN1xuVmRjMFAwVHByVytYNzUrMlA2ZFRLcWIzSXRxdSs5ZEl0ZytOaXBSZSt4OXU5cmdCRzBUYStzaGMvamtrMHoxLy9Fc2lSYXRvN2lTMlxud244alhodGtlcXJ1c3NYelVLbytQRU5NN2FoT3cvRWtoYk1pYlJRQW9qemhrZTh0L0g3akVlejROVGNxcWlnM092NWpORGM0WjlKZ1xuKysxSTFnWGhpWjhsdVBnZTdNaWJUbE1seEhSc3F2SlhMQVJWZFkrbmJGZW9qY3V6NFNXSWltaVVRL05ERk4vOFAyN1NjeEsvdzQzeVxuS3BrNFVSdEhVeThHMlA0ZHNGRWF3ZXZmUTdEbHcxWFg3Tmk3aEVkL09HOWFPMzdVTlZLNVd6QmRtL0cyZmd6NzFsOGt0bFBzeEhFSVxueHlDN3NPaFBqUXJZa1Rld2hXRW9uRU9MWjEyWFdoaHhtdE9HWUVQblBKc3hIV0I2dHRXTVp1THpSNmpSdEhVRVYrT2tVd3NyMEVaSlxuakhnRTIyK3RmbWkyUkhqb2NUZFhNZy9SMFIvaGIvMFlwbXZyWklZRVcvNGVVUU1CMWxvYW8vamFuNWU3VFcvS0xVOXBGRHEzRW16OVxuYU9YZDJPR1hLQno4YnhEbFpzMXpOcndOMTFTRmZXcGNRc2VQMXZoMzZnbEs4dWk5bFdpakpNUmZmeFZtN1I0cU8vMzQzQytJQjE5WVxua09kVXd6SGlFei9CWFBMcHFXdlN0aDV2NEFhaXc0OGxxNHhhNHBQUEVKOThwdWFyN0FmLzBZeDdJVHI1WEVOQ2dwZkZXL2RCS24relxuRnM1VTJUQlQrQjIxMStLa2dySVVzOGN0OUdCS3RnOS81NzNsOE1oeWNhVXhva09QT0wvSVFsQWxPdjRVZHV4b1JjWkNadGQ5U0Z0elxuRmhCSXBodXp0dnJ3TXBzN2pSMlpzVDJhQ0V5dUZwZ0RyK2RDWklZaHF4TW4wVUx0RVR4U2I0b2k4YXgyOG1adklCQ2lSVGFLQ1A3QVxuRFRWVDV2SHdLMFNubnlmSnFNWG1UcGRkNU5OcEpOT0RQM0RqN0lrV1hsSDhDejZHcVppUFFTM3hxV2VjYlRKNWw5OU9jTWxuNkxqNVxuYTdUZCtJZDQ2ejlZMTU4Q0lEMFh1N21ycWZ3VU8zcG9hblJYZFc4ZFFWa0tHMlhGeEtPWXJxMEUyMityWHA0UjVRa1BQZDdBWkowU1xublh3V0xaNnR1dXB2dmJtaHFhcEtKT2dpR0xpcGF2U2h4WE5FeDUrcUNoN3lCajVNWnVkK3AzMTZMeVo3MWIrY05XN0VYN2VYNnZHMVxuSlQ1YmYvTkdyYWVkVnFSR2FRWGk0MS93eTFQcmJRRlFTM2pzaDloelAyOGdQd054anVqazgxVkNaanEzNEcvZHgyTG1scncxTzVIT1xuTFZYWDR2T0huT0ZaZ2VsY1gxV09CQjM0dSs1em50dktxcmF2UmJxck54ZXd1VUUwZDZKTzZjWjVobWVnUzJDakxJMGZaUjVNOTlaeVxudHpDZHJ5MmNKWHJud2ZwRFdqSGxlSlRBeGFNRUhaRHRjNEhKbVRXWTl2Vkl4d2E4bmhuN0VYb1pnbTJmSUI1ODNrWHZKMFJNZ0JtNFxuSHZ3SzlhOHhkdWlsc21kNG12amNPd1FhVjNVMy92cXJpUHIzT01NY0YxL2pyYnNhMDFZUlVLMFdIWDNIVFV2VWxHL3FhOFFWT2VwcFxudG8zaXRSSHMvT1FNUTFPSkRqOCsvYkM4TEtaOW5adFhhVitIdEs5M243UDk3bzNNZElFRTVTV2xQcGh5Qkh3ZFRQY0ZlT3V2S250clxua3lHZG0vSFdmYUFxYnkwTUV3MVZCRDJaRE43YVBmZ2Jyd01iZzFkdGwvZ0ROMDRKQ2w0Ny9xYnJxbDBCY1pIdytGUDFHMSs4K2hvbFxuVWJ3c3JFby9pcmQyTC82bUQxSDE4S01jWkhySWZ2QjNuV0JrKzhCcnd3VHRiczZsenNOYU1CTGdiL2tvMGVEUGFpYmM1cTNydXIyWVxudHNvb2VTVTY5VHdVaHBIdWJmanJyOERiY0MybSswTG5WYTd6VWtublFIa0poOFYwYjhHc3VhVHFlNXM3alIydVBwM1dkRzFHTW11Y1xuRDJlbWphS0thSnh3Z21MVitWR0V6STQ3YWtZRDRuZVN1ZmpYWmtuUkNEcWRVZ1RUZnhsZTMrWEVwMythcUs3ZXVpdXFqVzBib1lVaFxuTWxmK0h0N2F5OTJ3Zmg2TkswRjU2QzhlM3Nicm5UYXNJQjUrQmEwSUcvRFhYVUh3Z2Q5MXdWMmw4Um9iQnkzUGppZGlsZGtvL3RaOVxubVA0OVRjbkxMUTZ6TG9EWmxvZ25UcURqeDRoSEQwRmNJTFA3QzFORFVERVp2QTFYSmhNVU1UV05pZ25JWFBxYmMzWjFkVEp5LyszYVxuU3JEMUk5VmZ4UVdpNDM4emZXZW1HMy9YMzhkME9DMG03ZGthUDFZOVcyWitWcG1ONHEyL3N2b05uWTNKbFlJMmR0RmVjUWpoR0xaNFxuenNXZ0ZFYW1RaFJzN2lTYVAxTzl6c1VFK0pzL2pMZitDa0NjVUNWZFlhY1d6UTNCbWt1cnI4OFdWV2hEMTFXSVYxNldVU1l1QUVMbVxuZ3BzaFc3MHFNRHI5QW5iMDNjck1hN3ZabWMrL29hQ3JWV2FqeEtlZXhSKzRvZFlScGRaTm5SZlBZWXVqYURpRzVzK2dFeWVJeDk1RFxueDQ4N093WXEzckE1ZW1rYlVuemw2N1JkL1h1WXppM0VJMjhTdnZlRGhMVlZvc0VYTUJzL05LZU5wRGFDOGZjb0hYdUsrTVRmNEcyNlxubnV6dWZ6QmxXOFRuM25hK2xZM1hWYWVMUzRTSC9xbzZzM0NNNk1SVFpMb0daZzMrc29WR0JHV1YyU2pScWVlUTEvNGMwM2M1MkNJMlxuTitTaXp2Tm4wSEFDRGNjZ3pLRjI4WXZPTlQ5RTRma3ZJVzE5YU9FTVdrb2F3d0hSNmYrSDZYcklUVnBXVGpQRVJkZk5uWDJEZU9nZ1xuZHZSZHRCeHdGSjM0TWRnU1h1OU9iTzRVMGZHbkVMKzlla2dNTGhSaTdGaDFuZFVTSG40VURTZklYUHJwcWZDSkt1cTQrZWRubGRrb1xuYU96aVZKTEVxaXltdU5Mb1ZBTTJSSlNqOVBiL3hZNjhoZGx3TFY3WFpteCtpSGpvSU5IdzY2NGJtT2xGRHZORVIzOUlWQmtpSVgzWVxuL0RDbWM2Qjh6d1NsdCs2djcyRzFFZEhSSDZDRk0yUjNmeDdwM0Z6MS9LT3FybXFockRJYlpWVmlRNkxCRitETVMxUERYR3hNa3Jrb1xuTFp5ajlQbzNDWGJlaStuY1JQaUxCN0NqYjgraE5aWDR6TXNVWHZneW1UMmZkNk12UVBObnNFTXZOdklqRXFkWWRqL0txaVd4azZzU1xuSlI1OEFUdnlPbUNjZ1R0ZmZtcXg0OGNwSHZ5ditCdXVnYUFUTy93S1dud2YyQ2p2YjNScW1XaWlOTVVSd3FOUExMTHNWUjZQa3JKVVxuck9aNGxKUWxaQlhIbzZRc0phczFIaVZsaVZrU2phS0xNZmRUVmdRbThmcmFWS084TDBsdGxKUUZzU1EyU2lwYnE1K2xzVkZTUjhxcVxuUnhLM1lTT0NzbkljS1NhQW1SRmZ5NG5mWGh1cXVDSkozb1lyeTRWdnZQTGNtcDFYY1VsYkg5bmRuMGROUVBUMi9jUU56YUxPemVTZVxuOS9NdWJoZkI5TzRpYzhtbjBQd3dwVGUrVVhmeDFzcGhGZTh6YTdvMnUyaDh2OTF0Q1RGK2JNNzd2ZjdkZUJ0L3lXM0JtVC9qdGc1dlxuNGxFcnBtTUR3U1dmQlM5RCtQYjkyUE9INTZoTWxtRDdyK0t0dXhLSUNkLzdManE2bUExOFdzMFN6QjRyV21oNjN5TUdiL00rL0MxdVxuZHdCLzdDamh6Nzg5ZHhvdk14V0c2QUtXRzYrVm1BQ3RQSlFCOEFadXhOL3lZVUFoSEtmNDhsZG5UeThlZUIzbDZRMGY4Wkx0cVZMRFxuNUNwRWpWdGlFZ3FTV04wbFA0WkZ0TkFLTTZVeWNGbjg5dWxZajlsVE1CVmRQNzFuY1dKTTd3NnlWLzV6dERoQzhjV3ZURzJOTWIxUVxuWHR3T0FtNGZzTHA1S0ZUTmdTM202Rm5UdVpuczFWK0V1RVR4NWE5aXg0ODNuTmRzcUdoaVFVbmVXYlZnejE2aHVwVUZGdkFtVlM3QlxubUw1ZC9IWXlsM3lhNE9MOTAwc2paaTFZQ0xiZmp1bmFndGUvcDd5K3FPNXRjMHJoelBxS1ZDd042ZDFCWnZkdjRXM1poOVRiZjIwR1xuM3Fick1UMDdNSDJYdWJYU0xkbGFkU2xzRkNQRlpwc29pbFk5ajZrM2RFNWhxZFlvayttOWRYc0pkdDZMeGlWc2ZwRDR4RS9tS25oNlxubll3SXpOWmxUT1kvUzNWbWFwU3BlcHVBNE9MOStBTTNFRVFUNU0rOWhVN1VXMU04L1p1cU5zcngyaGZ3SEJyQTJxUzdBellnV3JHMlxuNEZ6WU9ocGxRZEk0clZHbWJzLzJ1MjdMZUhnejloeXBTUzFTMVFhelJsQWsxQ2lUR1lsNFV4djRxZmkxaTdmcW9KVmJkU1E4Wm03QlxuR0pNNGNMZ1JqZEtDY1Y4ZGpUSzVGYWpmZ2JmMVkwalFRWFQwQ2JSd2R1cmJlamJLcE5vWFpnaEIwRWx3MFoxdU0rQWpmKzJPbjV2Y1xubUcreTNOazBSb1ZHa1V3My9yWmJ3RnJDZHg5eUsvV2dybzJpVE9jL3M4Mjl2c3Z3Tm42SStPeXJ4RU12VFEzQnBYSnA3VHlhckZIVVxuMnNUeGs4bEhQYW9GYVhMd1VxMk5NcTF1VGQ5bFpIZC9EaEN3UmNKMzNOb1huY1ZHbWQ1U3RGcjR2QXMvUWJEclByY2gzL2xEeEdkZVxuaFJrYVpUWnpvUExOOXRaZlEyYm5KMEU4ZE93STBlQUxzOW9vbGNKYVVWc3dQdjdPL2ZnYnJzSGJkQjNGbi81N2JIbC91aHFOMGdxRVxueElLU3VPc1J3eHdPaGNiUUdhK01UcW9JY0Z0YWlBR1JxaTI3cWw2MTZxWEY1VytyaFc5eWh5UXg1YUVzdUFYZWxZMHhpOUJvWmY2WlxuTHFCOFptQjVCV0NOalZMT3FGSmpWU29HRVRPOXZEWG9kaHNKVGhVN1E2TzBBRmtLUVFFOWxUek5mRWp0cDBuMVhkVjRNeHVqdGhWbVxuMHloVHFWU24zL2k1YkpTWjF5c1hKRTRKNWFUbXFLbG9UZjVWR3FXcW9qTzZ2NlhRS0EyMFlXSkJDVXZOMXloMWJaVEtWN0g2RzZhL1xubUc0RnFhTlJxdC9JeXNhcmZlUGQ1MWxxVjluS1FvVVFUOW9pa05SR3FWU0JWY0s2QkJxbGtUWk1MQ2g5OXp4NERwRkZMTGVyWlU0L1xueXF3UGEzNGJSZW9JV2FWR21WSHNnbXlVeWozdlo5TW84OW9vTTM1WXBjM1hjbzJpZXJydm5nZGIwdlYwMTF4UlRYS0EzYndvQ3ZFRVxuVTQwWjVhZWVxbXBZY2IxaUsyOGJNdVc1alhKVDl4RG5BVVZVcS9ZWmNkZkxiL2JrTG9wS3hSRW1XbjM0UUpTZkxqZXN1SzZsYVkxU1xuWHBlakdvTXQ3K2V2Rm8wbjkrcTM3dmczS05lbkhFV3FkbnJCbHkyNTlPVTZTRVdkazUrYXNRQ01OTlIyQ3huMVhBaThWbmxCNEtEQ1xuTHpWU1lGMVVDWS8vR0s5M0IrcTFFNTk0ZXFveDRwRzNpRTgrQzVrZTdPRHpVMG5pNFRlSWgxNEV2OTF0ZlY2ZUVJeUhEaElQdndwUlxuQVZ1eFpWWjQrTHQ0L1h1d2hXSHMrWGZjN3hBSUR6K0c2ZHFDTFo2YjNqSUxDRS8rTGQ2NkQ2QmV0bndtczZ0UE5IZ1FmK0JOYkZ4eVxueDh1QjIwN3I4T040blFQRTR5ZlFjZWRVRXh0U092dzQyZXdhNHFHWDBiemJ4MTl0VEhqMGgwaTJqL0RvRDZCaXRWOTQ2bG04OVZlaFxuY2NudGxkTGs0K3RVYVVoUUZxTGN0Z0lGWUdyWi9OakQ5L3hERWZsYUl3WE9YaE54SjBlSXpEaHRROXlaZ1dMS0dxWHllc2ExZHRWMVxucHM2MDBSbEhxSW5mNXV5SFNrMGo0ZzVmbXFtQkVQQ3pydnVZVVIrMzErdU0rOFc0NjJwcnJ1TmxFVHRqWnlUeFhQMXRPR001YWJrK1xuMEpSZEhHb1FmcXZyOWdlK21UVFpRalRLTVdBdk1BWVVBWHhmdnh2SFRlNUFWV3NhdHZ3RnhLVTZwb3JPZXZKVi9YeW9IeU9pNm82a1xuclpmL0xOZnI1cSsyZmxlaEZxSjhiVDRhejNMT2pqcG5ZTjFmc0hnOFk1UHZjc2pDamRtM2dSMlRIOXB2ZmZBd2NHVDIyMU5XS0VmS1xuYlplWWhRcEtFYWRaZGsxZjBvWWtNMlg1RU9HN2phWk5NandlQTA0QnV3RVUvcGc1QnE4cEt3eEJZK1A5bDBhVEovV2pqQUZIZ1YzZFxuZHh4NEEvaCtvd1duTERISzkzdHUvVTREKzhVN0dsbWtNNmxaTGo4eld2empSZ3RPV1ZxTTRkOHRLbjJENmNhQWQ3Zi8rcU5EK1ZMMFxuK0dJcWtMSUVDSC9aY2RzRHp5NG1pOFVzK3lzQ3J6NzIzTW4vREN6aVVPR1VGaE43OFB1THpXVFI2ME0vOTZYbm44aVg0bisxMkh4U1xuV29PcS9wUDIyeDlZdEN1amFWNno4VWZ2L1I2cW4yaFdmaWxONFltdU94NzRsV1prMUxRVjUva28vS1RBYzgzS0wyV1JLTS9uNDJoL1xuczdKcnFoLysvQVAzclBVeThsT0ZpNXVaYjBwQ2xOZHNxQi90Mlg5Z2VQNmJGMFpUOTdEbzJYOWdPTmJ3ZW9FNTFraWt0QkpWL1VtcFxuemJ1cG1VSUNMZGpzcE9mT2g4OTA1THlQSTN5cjJYbW56SVB3cmE2OC8vSCtYL2xPVXdQTFhOWXRaT0xSL2IrdGxqOURXTVNSWFNuelxuSVZCUzRYY2FDUjlJVUVacnlUMjIvM3ByK1F0ZzI3dzNwelRDZTBidGZSMTNQdGpTZ1VUTEJXV1NzWWZ2M21lTStTTlZybCtxTXY4dVxubytpVG5wRS9XS3pIZGFFc21hQk1rbnY0dmkyVytOY3g4bkZWdlVIcXhlU20xR01NMVdkQWZxQVovV2IzTFFjR2w3THdKUmVVbVV3OFxudFA5cWE3aEowQnRFNUViVnRJc3Fjd1RrYnhYOWlhZyszWFhuZ1plV3N6TExMaWd6MFlmdjdCZ2pjNkY0ZGlPeEp3REd4TDJvYkVUWVxuWUswTDN6UWlvbUo3VVZrSHJFV1kzZ2JBVWoyZVc4N1BTaDRZUm1WWW1WN2diMFJDMUE0aWN0cXFjZWZxYXF3WUJyczBPaUozUHB6MFxuNkkyVWxKU1VsSlNVbEpTVWxKU1VsSlNVbEpTVWxKU1VsSlNVbExyOGZ4L0NDS3NNUWF5c0FBQUFBRWxGVGtTdVFtQ0MiLCJwcm94eSI6IiJ9
Add Comment
Please, Sign In to add comment