xiaomianao666

小程序:云盘影汇

Feb 27th, 2024
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@云盘影汇@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5b2x5rGHIiwiYXV0aG9yIjoidGVlJk1yRmx5JuWwj+ajieiihPCfjJ4m6aaZ6ZuF5oOFIiwidXJsIjoiaGlrZXI6Ly9lbXB0eSMjZnljbGFzcyIsInZlcnNpb24iOjksImNvbF90eXBlIjoidGV4dF8xIiwiY2xhc3NfbmFtZSI6IuWFqOmDqCblsI/nq5km5bCP57q45p2hJuWWteaQnCbmib7otYTmupAmVVDkupHmkJwm55uY5Z+65ZywJuS6keebmOS4gCbnvZHnm5jotYTmupAmWWHnm5gm5qmY5a2QJuebmOaQnOe0oibkuIfkurrov7cm5pu05aSaJlRH5Za1IiwidHlwZSI6InZpZGVvIiwiY2xhc3NfdXJsIjoiYWxsJmh0dHBzOi8vcGFuNjY2Lm5ldC90L3ZpZGVvP3NvcnQ9bmV3ZXN0Jmh0dHBzOi8vYWxpLmdpdGNhZmUuaW5rLyZodHRwczovL3d3dy5hbGlwYW5zb3UuY29tJmh0dHBzOi8vemhhb3ppeXVhbi5tZS9zbyZodHRwczovL3d3dy51cHl1bnNvLmNvbSZodHRwczovL3d3dy5wYW5qZC5jb20vJmh0dHBzOi8veXVucGFuMS5jb20vP3NvcnQ9bmV3ZXN0Jmh0dHBzOi8vYWxpd3AuY24vJmh0dHBzOi8vcGFuLmNjb2YuY2MvJmh0dHBzOi8vd3d3Lm5tbWUuY2MvJmh0dHBzOi8vcGFuc2VhcmNoLmxvbmcyaWNlLmlvLyZodHRwczovL3d3dy53YW5yZW5taTguY29tLyZodHRwczovL2RhbGFvLnJ1L3cvJmh0dHBzOi8vbWVvdy50ZyIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuXG5sZXQgcmFuZG9tID0gMTtcblxubGV0IHdoaXRlID0gW1xuICAgIFwiLy90eC5tZS9cIixcbl1cbmxldCBkID0gW107XG5sZXQgciA9IGZldGNoKFwiaGlrZXI6Ly9ob21lQOS6keebmOaxh+W9sVwiKTtcbmlmICghciB8fCByLmxlbmd0aCA8PSA1KSB7XG4gICAgbGV0IHJ1ID0gJC50b1N0cmluZygoKSA9PiB7XG4gICAgICAgIHJldHVybiBcIua1t+mYlOinhueVjOinhOWImeWIhuS6q++8jOW9k+WJjeWIhuS6q+eahOaYr++8muWwj+eoi+W6j++/pWhvbWVfcnVsZV92Mu+/pWJhc2U2NDovL0DkupHnm5jmsYflvbFAZXlKc1lYTjBYMk5vWVhCMFpYSmZjblZzWlNJNklpSXNJblJwZEd4bElqb2k1THFSNTV1WTVyR0g1YjJ4SWl3aVlYVjBhRzl5SWpvaVRYSkdiSGtpTENKMWNtd2lPaUpvYVd0bGNqb3ZMMlZ0Y0hSNUpDUWtabmx3WVdkbElpd2lkbVZ5YzJsdmJpSTZOaXdpWTI5c1gzUjVjR1VpT2lKMFpYaDBYekVpTENKamJHRnpjMTl1WVcxbElqb2lJaXdpZEhsd1pTSTZJbUZzYkNJc0ltTnNZWE56WDNWeWJDSTZJaUlzSW1GeVpXRmZibUZ0WlNJNklpSXNJbUZ5WldGZmRYSnNJam9pSWl3aWMyOXlkRjl1WVcxbElqb2lJaXdpZVdWaGNsOXVZVzFsSWpvaUlpd2ljMjl5ZEY5MWNtd2lPaUlpTENKNVpXRnlYM1Z5YkNJNklpSXNJbVpwYm1SZmNuVnNaU0k2SW1wek9seHVaWFpoYkNobVpYUmphQ2duYUdsclpYSTZMeTltYVd4bGN5OXlkV3hsY3k5cFkza3ZZV3hwTG1wekp5a3BPMXh1WVd4cExtaHZiV1ZRWVdkbEtDazdJaXdpYzJWaGNtTm9YM1Z5YkNJNkltaHBhMlZ5T2k4dlpXMXdkSGtrSkNRcUtpUWtKR1o1Y0dGblpTUWtKQ0lzSW1keWIzVndJam9pNHBHZzU3MlI1NXVZSWl3aWMyVmhjbU5vUm1sdVpDSTZJbXB6T2x4dVpYWmhiQ2htWlhSamFDZ25hR2xyWlhJNkx5OW1hV3hsY3k5eWRXeGxjeTlwWTNrdllXeHBMbXB6SnlrcE8xeHVZV3hwTG5ObFlYSmphRkJoWjJVb2RISjFaU2s3WEc0aUxDSmtaWFJoYVd4ZlkyOXNYM1I1Y0dVaU9pSnRiM1pwWlY4eElpd2laR1YwWVdsc1gyWnBibVJmY25Wc1pTSTZJbXB6T2x4dVpYWmhiQ2htWlhSamFDZ25hR2xyWlhJNkx5OW1hV3hsY3k5eWRXeGxjeTlwWTNrdllXeHBMbXB6SnlrcE8xeHVZV3hwTG1SbGRHRnBiRkJoWjJVb0tUc2lMQ0p6WkdWMFlXbHNYMk52YkY5MGVYQmxJam9pYlc5MmFXVmZNU0lzSW5Oa1pYUmhhV3hmWm1sdVpGOXlkV3hsSWpvaUlpd2lkV0VpT2lKdGIySnBiR1VpTENKd2NtVlNkV3hsSWpvaWRtRnlJR0ZzYVdweklEMGdabVYwWTJnb0oyaDBkSEJ6T2k4dloybDBaV1V1WTI5dEwyWnNlVEV6T1RjdmFHbHJaWEl0YVdONUwzSmhkeTl0WVhOMFpYSXZZV3hwTG1wekp5azdYRzVwWmlnaFlXeHBhbk1nZkh3Z0lXRnNhV3B6TG1sdVkyeDFaR1Z6S0NkaGJHa25LU2w3WEc1Y2RHRnNhV3B6SUQwZ1ptVjBZMmdvSjJoMGRIQnpPaTh2WTJSdUxtcHpaR1ZzYVhaeUxtNWxkQzluYUM5bWJIa3hNemszTDJocGEyVnlMV2xqZVM5aGJHa3Vhbk1uS1Z4dWZWeHVhV1lvSVdGc2FXcHpJSHg4SUNGaGJHbHFjeTVwYm1Oc2RXUmxjeWduWVd4cEp5a3BlMXh1WEhSaGJHbHFjeUE5SUdabGRHTm9LQ2RvZEhSd09pOHZiR1pwWTNrdVkyOXRPak13TURBd0wyMXlabXg1TDJocGEyVnlMV2xqZVM5eVlYY3ZiV0Z6ZEdWeUwyRnNhUzVxY3ljcFhHNTlYRzVwWmloaGJHbHFjeWtnZTF4dVhIUjNjbWwwWlVacGJHVW9YQ0pvYVd0bGNqb3ZMMlpwYkdWekwzSjFiR1Z6TDJsamVTOWhiR2t1YW5OY0lpeGhiR2xxY3lrN1hHNWNkR1YyWVd3b1lXeHBhbk1wTzF4dVhIUmhiR2t1Y0hKbFVuVnNaU2dwTzF4dWZWeHVJaXdpY0dGblpYTWlPaUpiZTF3aVkyOXNYM1I1Y0dWY0lqcGNJbTF2ZG1sbFh6TmNJaXhjSW01aGJXVmNJanBjSXVlOWtlZWJtT2l2cHVhRGhWd2lMRndpY0dGMGFGd2lPbHdpWkdWMFlXbHNYQ0lzWENKeWRXeGxYQ0k2WENKcWN6cGNYRzVsZG1Gc0tHWmxkR05vS0Nkb2FXdGxjam92TDJacGJHVnpMM0oxYkdWekwybGplUzloYkdrdWFuTW5LU2s3WEZ4dVlXeHBMbWx1YVhSRGIyNW1hV2NvS1R0Y1hHNWhiR2t1WVd4cFVuVnNaU2dwTzF3aWZTeDdYQ0pqYjJ4ZmRIbHdaVndpT2x3aWJXOTJhV1ZmTVY5c1pXWjBYM0JwWTF3aUxGd2libUZ0WlZ3aU9sd2k2TFdFNXJxUTU3MlI2YUcxNksrbTVvT0ZYQ0lzWENKd1lYUm9YQ0k2WENKemFYUmxMV1JsZEdGcGJGd2lMRndpY25Wc1pWd2lPbHdpYW5NNlhGeHVaWFpoYkNobVpYUmphQ2duYUdsclpYSTZMeTltYVd4bGN5OXlkV3hsY3k5cFkza3ZZV3hwTG1wekp5a3BPMXhjYm1Gc2FTNWtaWFJoYVd4UVlXZGxLQ2s3WENKOUxIdGNJbU52YkY5MGVYQmxYQ0k2WENKdGIzWnBaVjh6WENJc1hDSnVZVzFsWENJNlhDTGt1S3JrdXJybnZaSG5tNWpvcjZibWc0VmNJaXhjSW5CaGRHaGNJanBjSW1SeWFYWmxYQ0lzWENKeWRXeGxYQ0k2WENKcWN6cGNYRzVsZG1Gc0tHWmxkR05vS0Nkb2FXdGxjam92TDJacGJHVnpMM0oxYkdWekwybGplUzloYkdrdWFuTW5LU2s3WEZ4dVlXeHBMbWx1YVhSRGIyNW1hV2NvS1R0Y1hHNWhiR2t1YlhsQmJHbFNkV3hsS0NrN1hDSjlYU0lzSW1samIyNGlPaUpvZEhSd2N6b3ZMMmRwZEdWbExtTnZiUzltYkhreE16azNMMmhwYTJWeUxXbGplUzl5WVhjdmJXRnpkR1Z5TDJGc2FYbDFiaTV3Ym1jaWZRPT1cIlxuICAgIH0pO1xuICAgIGNvbmZpcm0oe1xuICAgICAgICB0aXRsZTogTVlfUlVMRS50aXRsZSArICfmj5DnpLonLFxuICAgICAgICBjb250ZW50OiAn5pys6KeE5YiZ5L6d6LWW5LqR55uY5rGH5b2x6KeE5YiZ77yM54K55Ye75LiL6Z2i55qE56Gu5a6a5oyJ6ZKu5a+85YWlJyxcbiAgICAgICAgY29uZmlybTogcnUsXG4gICAgICAgIGNhbmNlbDogcnVcbiAgICB9KVxufVxubGV0IHUgPSBNWV9VUkwuc3BsaXQoXCIjI1wiKVsxXTtcblxuZnVuY3Rpb24gbG9hZFVybCh1KSB7XG4gICAgbGV0IGRlc2MgPSBcImF1dG9cIjtcbiAgICBmb3IgKGxldCBpdCBvZiB3aGl0ZSkge1xuICAgICAgICBpZiAodS5pbmNsdWRlcyhpdCkpIHtcbiAgICAgICAgICAgIGRlc2MgPSBcIjEwMCUmJmZsb2F0XCI7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGdldEFwcFZlcnNpb24oKSA+PSAzMDE4KSB7XG4gICAgICAgIGRlc2MgPSBcImZsb2F0JiZ0b3BcIjtcbiAgICB9XG4gICAgc2V0UmVzdWx0KFt7XG4gICAgICAgIGNvbF90eXBlOiBcIng1X3dlYnZpZXdfc2luZ2xlXCIsXG4gICAgICAgIHVybDogdSxcbiAgICAgICAgZGVzYzogZGVzYyxcbiAgICAgICAgZXh0cmE6IHtcbiAgICAgICAgICAgIGNhbkJhY2s6IHRydWUsXG4gICAgICAgICAgICB1cmxJbnRlcmNlcHRvcjogJC50b1N0cmluZygobXlydWxlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGlucHV0LnN0YXJ0c1dpdGgoJ2h0dHBzOi8vd3d3LmFsaXl1bmRyaXZlLmNvbS9zLycpIHx8IGlucHV0LnN0YXJ0c1dpdGgoJ21hZ25ldDonKSkge1xuICAgICAgICAgICAgICAgICAgICAvL2ZiYS5mZXRjaChpbnB1dCwge30pO1xuICAgICAgICAgICAgICAgICAgICBjbGVhck15VmFyKCduYW1lJyk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAkLnRvU3RyaW5nKCh1cmwsIG15cnVsZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmJhLm9wZW4oSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGU6IG15cnVsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvcHVzaD9ydWxlPScgKyBteXJ1bGUgKyAnJnVybD1oaWtlcjovL2VtcHR5IyMnICsgZW5jb2RlVVJJQ29tcG9uZW50KHVybCkrJz8/P2Z5cGFnZSdcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgfSwgaW5wdXQsIG15cnVsZSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCBNWV9SVUxFLnRpdGxlKSxcbiAgICAgICAgICAgIHVhOiBNT0JJTEVfVUFcbiAgICAgICAgfVxuICAgIH1dKVxufVxuaWYgKHUgPT0gXCJhbGxcIikge1xuICAgIGxldCBjbHMgPSBnZXRNeVZhcihcImNsc1wiLCBcIlwiKTtcbiAgICBpZiAoY2xzKSB7XG4gICAgICAgIHUgPSBjbHM7XG4gICAgICAgIGxvYWRVcmwodSk7XG4gICAgICAgIGNsZWFyTXlWYXIoXCJjbHNcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IHIgPSBKU09OLnBhcnNlKGZldGNoKFwiaGlrZXI6Ly9ob21lQFwiICsgTVlfUlVMRS50aXRsZSkpO1xuICAgICAgICBsZXQgY24gPSByLmNsYXNzX25hbWUuc3BsaXQoXCImXCIpO1xuICAgICAgICBsZXQgY3UgPSByLmNsYXNzX3VybC5zcGxpdChcIiZcIik7XG4gICAgICAgIGxldCBhcnIgPSBbXTtcbiAgICAgICAgXG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgY24ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGFyci5wdXNoKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogY25baV0sXG4gICAgICAgICAgICAgICAgdXJsOiAkKCkubGF6eVJ1bGUoKHUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoXCJjbHNcIiwgdSk7XG4gICAgICAgICAgICAgICAgICAgIC8vcmVmcmVzaFg1RGVzYyhcInRvcCYmZmxvYXRcIik7XG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcImhpa2VyOi8vZW1wdHlcIjtcbiAgICAgICAgICAgICAgICB9LCBjdVtpXSksXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFwidGV4dF8yXCIsXG4gICAgICAgICAgICAgICAgZGVzYzogXCJcIixcbiAgICAgICAgICAgICAgICBwaWNfdXJsOiBcIlwiXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZWZyZXNoWDVEZXNjKFwiMCYmZmxvYXRcIik7XG4gICAgICAgIHNldFJlc3VsdChhcnIpO1xuICAgIH1cbn0gZWxzZSB7XG4gICAgbG9hZFVybCh1KTtcbn0iLCJzZWFyY2hfdXJsIjoiIiwiZ3JvdXAiOiLikaDmjqjojZAiLCJzZWFyY2hGaW5kIjoiIiwiZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsImRldGFpbF9maW5kX3J1bGUiOiIiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoiaWYgKCFnZXRNeVZhcihcImFsaWFjY2Vzc1RrXCIpKSB7XG4gICAgbGV0IG50b2tlbiA9IFtdO1xuICAgIGlmICghZmlsZUV4aXN0KFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvaWN5LWFsaS10b2tlbi5qc29uXCIpKSB7XG4gICAgICAgIHZhciByZWZ0b2tlbiA9IFwiXCI7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbnRva2VuID0gSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvaWN5LWFsaS10b2tlbi5qc29uJywge30pKTtcbiAgICAgICAgdmFyIHJlZnRva2VuID0gbnRva2VuWzBdLnJlZnJlc2hfdG9rZW47XG4gICAgfVxuICAgIHZhciByZWZyZXNoID0gZmV0Y2goJ2h0dHBzOi8vYXV0aC5hbGl5dW5kcml2ZS5jb20vdjIvYWNjb3VudC90b2tlbicsIHtcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICAgICdVc2VyLUFnZW50JzogUENfVUEsXG4gICAgICAgICAgICAnUmVmZXJlcic6ICdodHRwczovL3d3dy5hbGl5dW5kcml2ZS5jb20vJ1xuICAgICAgICB9LFxuICAgICAgICBib2R5OiAne1wicmVmcmVzaF90b2tlblwiOlwiJyArIHJlZnRva2VuICsgJ1wiLFwiZ3JhbnRfdHlwZVwiOlwicmVmcmVzaF90b2tlblwifScsXG4gICAgICAgIG1ldGhvZDogJ1BPU1QnXG4gICAgfSk7XG4gICAgLy9sb2cocmVmcmVzaCk7XG4gICAgaWYgKCFmaWxlRXhpc3QoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9pY3ktYWxpLXRva2VuLmpzb25cIikgfHwgcmVmcmVzaC5sZW5ndGggPiAzMDApIHtcbiAgICAgICAgbnRva2VuWzBdID0gSlNPTi5wYXJzZShyZWZyZXNoKTtcbiAgICAgICAgd3JpdGVGaWxlKFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvaWN5LWFsaS10b2tlbi5qc29uXCIsIEpTT04uc3RyaW5naWZ5KG50b2tlbikpO1xuICAgIH1cblxuICAgIHZhciByZWZyZXNoID0gZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvaWN5L2ljeS1hbGktdG9rZW4uanNvbicsIHt9KTtcbiAgICB2YXIgYWNjZXNzVGsgPSBKU09OLnBhcnNlKHJlZnJlc2gpWzBdLnRva2VuX3R5cGUgKyAnICcgKyBKU09OLnBhcnNlKHJlZnJlc2gpWzBdLmFjY2Vzc190b2tlbjtcbiAgICBwdXRNeVZhcihcImFsaWFjY2Vzc1RrXCIsIGFjY2Vzc1RrKTtcbn0iLCJwYWdlcyI6Ilt7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5o6o6YCBXCIsXCJwYXRoXCI6XCJwdXNoXCIsXCJydWxlXCI6XCJqczpcXG4vL2xvZyhNWV9VUkwpO1xcbnZhciBpdGVtcyA9IFtdO1xcbnZhciByZWFsdXJsID0gTVlfVVJMLnNwbGl0KCcjIycpWzFdLnNwbGl0KCc/Pz8nKVswXTtcXG5pZiAoTVlfUEFHRSA9PSAxKSB7XFxuICAgIGl0ZW1zLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLwn5O9IOaOqOmAgeWIsFRWQm94IPCfk7pcXFwiLFxcbiAgICAgICAgdXJsOiAkKHJlYWx1cmwpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICBpbnB1dCA9IGRlY29kZVVSSUNvbXBvbmVudChpbnB1dCk7XFxuICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL3BhZ2UvcHVzaD9ydWxlPVhZUeaOqOmAgSZwdXNodXJsPScgKyBlbmNvZGVVUklDb21wb25lbnQoaW5wdXQpO1xcbiAgICAgICAgfSksXFxuICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiLFxcbiAgICAgICAgZGVzYzogXFxcIlxcXCIsXFxuICAgICAgICBwaWNfdXJsOiBcXFwiXFxcIlxcbiAgICB9KTtcXG59XFxuaWYgKGRlY29kZVVSSUNvbXBvbmVudChyZWFsdXJsKS5pbmNsdWRlcygnd3d3LmFsaXl1bmRyaXZlJykgJiYgIXJlYWx1cmwuaW5jbHVkZXMoJyUzQiU3QicpKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9wYWdlL3NoYXJpZCcsIHt9KSkucnVsZSlcXG59XFxuc2V0UmVzdWx0KGl0ZW1zKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuWIhuS6q+i1hOa6kOS4gOe6p1wiLFwicGF0aFwiOlwic2hhcmlkXCIsXCJydWxlXCI6XCJqczpcXG4vL3ZhciBpdGVtcyA9IFtdO1xcbmZ1bmN0aW9uIGZvcm1hdERhdGUoX2RhdGUsIF9mbXQpIHtcXG4gICAgbGV0IGZtdCA9IF9mbXQgfHwgXFxcInl5eXktTU0tZGQgSEg6bW06c3NcXFwiO1xcbiAgICBjb25zdCBkYXRlID0gIWlzTmFOKF9kYXRlKSA/IG5ldyBEYXRlKF9kYXRlICogMTAwMCkgOiBuZXcgRGF0ZShfZGF0ZSk7XFxuICAgIGNvbnN0IG8gPSB7XFxuICAgICAgICBcXFwiTStcXFwiOiBkYXRlLmdldE1vbnRoKCkgKyAxLCAvL+aciOS7vSBcXG4gICAgICAgIFxcXCJkK1xcXCI6IGRhdGUuZ2V0RGF0ZSgpLCAvL+aXpSBcXG4gICAgICAgIFxcXCJoK1xcXCI6IGRhdGUuZ2V0SG91cnMoKSAlIDEyID09IDAgPyAxMiA6IGRhdGUuZ2V0SG91cnMoKSAlIDEyLFxcbiAgICAgICAgXFxcIkgrXFxcIjogZGF0ZS5nZXRIb3VycygpLCAvL+Wwj+aXtiBcXG4gICAgICAgIFxcXCJtK1xcXCI6IGRhdGUuZ2V0TWludXRlcygpLCAvL+WIhiBcXG4gICAgICAgIFxcXCJzK1xcXCI6IGRhdGUuZ2V0U2Vjb25kcygpLCAvL+enkiBcXG4gICAgICAgIFxcXCJxK1xcXCI6IE1hdGguZmxvb3IoKGRhdGUuZ2V0TW9udGgoKSArIDMpIC8gMyksIC8v5a2j5bqmIFxcbiAgICAgICAgXFxcIlNcXFwiOiBkYXRlLmdldE1pbGxpc2Vjb25kcygpIC8v5q+r56eSIFxcbiAgICB9O1xcbiAgICBpZiAoLyh5KykvLnRlc3QoZm10KSkge1xcbiAgICAgICAgZm10ID0gZm10LnJlcGxhY2UoUmVnRXhwLiQxLCAoZGF0ZS5nZXRGdWxsWWVhcigpICsgXFxcIlxcXCIpLnN1YnN0cig0IC0gUmVnRXhwLiQxLmxlbmd0aCkpO1xcbiAgICB9XFxuICAgIGZvciAobGV0IGsgaW4gbykge1xcbiAgICAgICAgaWYgKG5ldyBSZWdFeHAoXFxcIihcXFwiICsgayArIFxcXCIpXFxcIikudGVzdChmbXQpKSB7XFxuICAgICAgICAgICAgZm10ID0gZm10LnJlcGxhY2UoUmVnRXhwLiQxLCAoUmVnRXhwLiQxLmxlbmd0aCA9PSAxKSA/IChvW2tdKSA6ICgoXFxcIjAwXFxcIiArIG9ba10pLnN1YnN0cigoXFxcIlxcXCIgKyBvW2tdKS5sZW5ndGgpKSk7XFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgcmV0dXJuIGZtdDtcXG59O1xcblxcbmZ1bmN0aW9uIGZvcm1hdFNpemUoc2l6ZSkge1xcbiAgICBpZiAoIXNpemUpIHtcXG4gICAgICAgIHJldHVybiAnJztcXG4gICAgfVxcbiAgICBjb25zdCB1bml0cyA9IFsnQicsICdLQicsICdNQicsICdHQicsICdUQicsICdQQicsICdFQicsICdaQicsICdZQiddO1xcbiAgICBsZXQgaSA9IDA7XFxuICAgIHdoaWxlIChzaXplID49IDEwMjQpIHtcXG4gICAgICAgIHNpemUgLz0gMTAyNDtcXG4gICAgICAgIGkrKztcXG4gICAgfVxcbiAgICBzaXplID0gaSA/IE51bWJlcihzaXplLnRvRml4ZWQoMikpIDogc2l6ZTtcXG4gICAgcmV0dXJuIGAke3NpemV9ICR7dW5pdHNbaV19YDtcXG59XFxuLy9sb2cocmVhbHVybCk7XFxuXFxuaWYgKE1ZX1BBR0UgPT0gMSkge1xcbiAgICBjbGVhck15VmFyKCduZXh0cGFnZScpO1xcbn1cXG5pZiAoTVlfUEFHRSA+IDEgJiYgZ2V0TXlWYXIoJ25leHRwYWdlJywgJycpID09ICcnKSB7XFxuICAgIGxvZygn5rKh5pyJ5LiL5LiA6aG1Jyk7XFxufSBlbHNlIHtcXG4gICAgdHJ5IHtcXG4gICAgICAgIC8vdmFyIHJlZnRva2VuID0gSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy94eXEvYWxpdG9rZW4uanNvbicsIHt9KSkucmVmcmVzaF90b2tlbjtcXG4gICAgICAgIHZhciByZWZ0b2tlbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvaWN5L2ljeS1hbGktdG9rZW4uanNvbicsIHt9KSlbMF0ucmVmcmVzaF90b2tlbjtcXG4gICAgICAgIHZhciBzaGFyZUlkID0gZGVjb2RlVVJJQ29tcG9uZW50KHJlYWx1cmwpLnNwbGl0KCdjb20vcy8nKVsxXS5zdWJzdHJpbmcoMCwgMTEpO1xcbiAgICAgICAgbGV0IGdldHNoYXIgPSBmZXRjaCgnaHR0cHM6Ly9hcGkuYWxpeXVuZHJpdmUuY29tL2Fkcml2ZS92My9zaGFyZV9saW5rL2dldF9zaGFyZV9ieV9hbm9ueW1vdXMnLCB7XFxuICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICBib2R5OiAne1xcXCJzaGFyZV9pZFxcXCI6XFxcIicgKyBzaGFyZUlkICsgJ1xcXCJ9JyxcXG4gICAgICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBsZXQgcHVzaG5hbWUgPSBKU09OLnBhcnNlKGdldHNoYXIpLmZpbGVfaW5mb3NbMF0uZmlsZV9uYW1lO1xcbiAgICAgICAgLy92YXIgbGlzdHlwID0gSlNPTi5wYXJzZShnZXRzaGFyKS5maWxlX2luZm9zWzBdLnR5cGU7XFxuICAgICAgICAvL3ZhciBwZmlsZWlkID0gSlNPTi5wYXJzZShnZXRzaGFyKS5maWxlX2luZm9zWzBdLmZpbGVfaWQ7XFxuXFxuICAgICAgICB2YXIgc2hhcmV0b2tlbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLmFsaXl1bmRyaXZlLmNvbS92Mi9zaGFyZV9saW5rL2dldF9zaGFyZV90b2tlbicsIHtcXG4gICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbidcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIGJvZHk6ICd7XFxcInNoYXJlX3B3ZFxcXCI6XFxcIlxcXCIsXFxcInNoYXJlX2lkXFxcIjpcXFwiJyArIHNoYXJlSWQgKyAnXFxcIn0nLFxcbiAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnXFxuICAgICAgICB9KSkuc2hhcmVfdG9rZW47XFxuICAgICAgICAvL2xvZyhzaGFyZXRva2VuKTtcXG5cXG4gICAgICAgIGxldCBuZXh0ID0gZ2V0TXlWYXIoJ25leHRwYWdlJywgJycpICE9ICcnID8gJyxcXFwibWFya2VyXFxcIjpcXFwiJyArIGdldE15VmFyKCduZXh0cGFnZScpICsgJ1xcXCInIDogJyc7XFxuICAgICAgICBpZiAoIWRlY29kZVVSSUNvbXBvbmVudChyZWFsdXJsKS5pbmNsdWRlcygnL2ZvbGRlci8nKSkge1xcbiAgICAgICAgICAgIC8vaWYoIWxpc3R5cCA9PSAnZm9sZGVyJyl7XFxuICAgICAgICAgICAgdmFyIHJlc2NvZCA9IGZldGNoKCdodHRwczovL2FwaS5hbGl5dW5kcml2ZS5jb20vYWRyaXZlL3YzL2ZpbGUvbGlzdCcsIHtcXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcXG4gICAgICAgICAgICAgICAgICAgICdYLVNoYXJlLVRva2VuJzogc2hhcmV0b2tlblxcbiAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICBib2R5OiAne1xcXCJzaGFyZV9pZFxcXCI6XFxcIicgKyBzaGFyZUlkICsgJ1xcXCIsXFxcInBhcmVudF9maWxlX2lkXFxcIjpcXFwicm9vdFxcXCIsXFxcImxpbWl0XFxcIjoxMDAsXFxcImltYWdlX3RodW1ibmFpbF9wcm9jZXNzXFxcIjpcXFwiaW1hZ2UvcmVzaXplLHdfMTYwL2Zvcm1hdCxqcGVnXFxcIixcXFwiaW1hZ2VfdXJsX3Byb2Nlc3NcXFwiOlxcXCJpbWFnZS9yZXNpemUsd18xOTIwL2Zvcm1hdCxqcGVnXFxcIixcXFwidmlkZW9fdGh1bWJuYWlsX3Byb2Nlc3NcXFwiOlxcXCJ2aWRlby9zbmFwc2hvdCx0XzEwMDAsZl9qcGcsYXJfYXV0byx3XzMwMFxcXCIsXFxcIm9yZGVyX2J5XFxcIjpcXFwibmFtZVxcXCIsXFxcIm9yZGVyX2RpcmVjdGlvblxcXCI6XFxcIkFTQ1xcXCInICsgbmV4dCArICd9JyxcXG4gICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCdcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAvL2xvZyhyZXNjb2QpO1xcbiAgICAgICAgICAgIHZhciBsaXN0eXAgPSBKU09OLnBhcnNlKHJlc2NvZCkuaXRlbXNbMF0udHlwZTtcXG4gICAgICAgICAgICB2YXIgcGZpbGVpZCA9IEpTT04ucGFyc2UocmVzY29kKS5pdGVtc1swXS5maWxlX2lkO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICB2YXIgbGlzdHlwID0gJ2ZvbGRlcic7XFxuICAgICAgICAgICAgdmFyIHBmaWxlaWQgPSBkZWNvZGVVUklDb21wb25lbnQocmVhbHVybCkuc3BsaXQoJ2ZvbGRlci8nKVsxXVxcblxcbiAgICAgICAgfVxcbiAgICAgICAgLy9sb2coaHRtbCk7XFxuICAgICAgICBpZiAobGlzdHlwID09ICdmb2xkZXInKSB7XFxuICAgICAgICAgICAgdmFyIHJlc2NvZCA9IGZldGNoKCdodHRwczovL2FwaS5hbGl5dW5kcml2ZS5jb20vYWRyaXZlL3YzL2ZpbGUvbGlzdCcsIHtcXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcXG4gICAgICAgICAgICAgICAgICAgICdYLVNoYXJlLVRva2VuJzogc2hhcmV0b2tlblxcbiAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICBib2R5OiAne1xcXCJzaGFyZV9pZFxcXCI6XFxcIicgKyBzaGFyZUlkICsgJ1xcXCIsXFxcInBhcmVudF9maWxlX2lkXFxcIjpcXFwiJyArIHBmaWxlaWQgKyAnXFxcIixcXFwibGltaXRcXFwiOjEwMCxcXFwiaW1hZ2VfdGh1bWJuYWlsX3Byb2Nlc3NcXFwiOlxcXCJpbWFnZS9yZXNpemUsd18xNjAvZm9ybWF0LGpwZWdcXFwiLFxcXCJpbWFnZV91cmxfcHJvY2Vzc1xcXCI6XFxcImltYWdlXFxcXC9yZXNpemUsd18xOTIwL2Zvcm1hdCxqcGVnXFxcIixcXFwidmlkZW9fdGh1bWJuYWlsX3Byb2Nlc3NcXFwiOlxcXCJ2aWRlby9zbmFwc2hvdCx0XzEwMDAsZl9qcGcsYXJfYXV0byx3XzMwMFxcXCIsXFxcIm9yZGVyX2J5XFxcIjpcXFwibmFtZVxcXCIsXFxcIm9yZGVyX2RpcmVjdGlvblxcXCI6XFxcIkFTQ1xcXCInICsgbmV4dCArICd9JyxcXG4gICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCdcXG4gICAgICAgICAgICB9KTtcXG5cXG4gICAgICAgIH0gLy/lj5bmlofku7blpLlcXG4gICAgICAgIC8vbG9nKHJlc2NvZCk7XFxuXFxuICAgICAgICBpZiAoSlNPTi5wYXJzZShyZXNjb2QpLm5leHRfbWFya2VyKSB7XFxuICAgICAgICAgICAgbGV0IG1hcmtlciA9IEpTT04ucGFyc2UocmVzY29kKS5uZXh0X21hcmtlcjtcXG4gICAgICAgICAgICBpZiAobWFya2VyLmxlbmd0aCA+IDEwKSB7XFxuICAgICAgICAgICAgICAgIHB1dE15VmFyKCduZXh0cGFnZScsIG1hcmtlcik7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgY2xlYXJNeVZhcignbmV4dHBhZ2UnKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgICB2YXIgY29udHMgPSBKU09OLnBhcnNlKHJlc2NvZCkuaXRlbXM7XFxuICAgICAgICB2YXIgZG9uZ3RhaSA9IEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vcGFnZS9sYXp5dXJsJywge30pKS5ydWxlLnRvU3RyaW5nKCk7XFxuICAgICAgICB2YXIgdHVpc29uZyA9IFtdO1xcbiAgICAgICAgdmFyIHppbXUgPSBbXTtcXG4gICAgICAgIGZvciAobGV0IGkgaW4gY29udHMpIHtcXG4gICAgICAgICAgICAvL3ZhciBsaXN0eXAgPSBjb250c1tpXS50eXBlO1xcbiAgICAgICAgICAgIGlmIChjb250c1tpXS50eXBlICE9ICdmb2xkZXInKSB7XFxuICAgICAgICAgICAgICAgIGxldCBmbmFtZSA9IGNvbnRzW2ldLm5hbWU7XFxuICAgICAgICAgICAgICAgIGxldCBjYXRlID0gY29udHNbaV0uY2F0ZWdvcnk7XFxuICAgICAgICAgICAgICAgIGlmIChmbmFtZS5lbmRzV2l0aCgnLnNydCcpIHx8IGZuYW1lLmVuZHNXaXRoKCcudnR0JykgfHwgZm5hbWUuZW5kc1dpdGgoJy5hc3MnKSkge1xcbiAgICAgICAgICAgICAgICAgICAgemltdS5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXQ6IGZuYW1lLnN1YnN0cmluZygwLCBmbmFtZS5sYXN0SW5kZXhPZihcXFwiLlxcXCIpKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBleHQ6IGNvbnRzW2ldLmZpbGVfZXh0ZW5zaW9uLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZDogY29udHNbaV0uZmlsZV9pZFxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgICAgIGlmIChjYXRlID09ICd2aWRlbycgfHwgY2F0ZSA9PSAnYXVkaW8nKSB7XFxuICAgICAgICAgICAgICAgICAgICB0dWlzb25nLnB1c2goXFxuICAgICAgICAgICAgICAgICAgICAgICAgZm5hbWUucmVwbGFjZSgvXFxcXCMvZywgJ18nKS5yZXBsYWNlKC9cXFxcJC9nLCAnXycpICsgJyQnICsgY2F0ZSArICd8JyArIGNvbnRzW2ldLmZpbGVfaWRcXG4gICAgICAgICAgICAgICAgICAgICk7XFxuICAgICAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICAgICAgZm9yICh2YXIgaSBpbiBjb250cykge1xcbiAgICAgICAgICAgIHZhciBsaXN0eXAgPSBjb250c1tpXS50eXBlO1xcbiAgICAgICAgICAgIGlmIChsaXN0eXAgIT0gJ2ZvbGRlcicpIHtcXG4gICAgICAgICAgICAgICAgdmFyIGNhdGUgPSBjb250c1tpXS5jYXRlZ29yeTtcXG4gICAgICAgICAgICAgICAgdmFyIGZuYW1lID0gY29udHNbaV0ubmFtZTtcXG4gICAgICAgICAgICAgICAgaWYgKGNhdGUgPT0gJ3ZpZGVvJykge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRpdGxlID0gJ/Cfk7onICsgY29udHNbaV0ubmFtZTtcXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjYXRlID09ICdkb2MnKSB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgdGl0bGUgPSAn8J+TlicgKyBjb250c1tpXS5uYW1lO1xcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNhdGUgPT0gJ2ltYWdlJykge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRpdGxlID0gJ/CflrwnICsgY29udHNbaV0ubmFtZTtcXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjYXRlID09ICd6aXAnKSB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgdGl0bGUgPSAn8J+TpicgKyBjb250c1tpXS5uYW1lO1xcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRpdGxlID0gY29udHNbaV0ubmFtZVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIGl0ZW1zLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKGNvbnRzW2ldLmZpbGVfaWQpLmxhenlSdWxlKChzaGFyZUlkLCBkb25ndGFpLCBjYXRlLCBmbmFtZSwgcmVmdG9rZW4semltdSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXRJdGVtKCdzaW5nbGVwdXNoJywgJycpID09ICcxJykge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vcGFnZS9wdXNoP3J1bGU9WFlR5o6o6YCBJnB1c2h1cmw9JyArIGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeSh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwibmFtZVxcXCI6IGZuYW1lLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcInJlZnJlc2hfdG9rZW5cXFwiOiByZWZ0b2tlbixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJ1cmxcXFwiOiBmbmFtZS5yZXBsYWNlKC9cXFxcIy9nLCAnXycpLnJlcGxhY2UoL1xcXFwkL2csICdfJykgKyAnJCcgKyBjYXRlICsgJ3wnICsgaW5wdXQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwic2hhcmVfaWRcXFwiOiBzaGFyZUlkXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmFsKGRvbmd0YWkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGxheVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH0sIHNoYXJlSWQsIGRvbmd0YWksIGNhdGUsIGZuYW1lLCByZWZ0b2tlbix6aW11KSxcXG4gICAgICAgICAgICAgICAgICAgIGRlc2M6IGZvcm1hdERhdGUoY29udHNbaV0udXBkYXRlZF9hdCkgKyAnICAnICsgZm9ybWF0U2l6ZShjb250c1tpXS5zaXplKSxcXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9uZ0NsaWNrOiBbe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+aOqOmAgeWIsFRWQm94JyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKHNoYXJlSWQsIGZpbGVpZCwgY2F0ZSwgZm5hbWUsIHJlZnRva2VuKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vcGFnZS9wdXNoP3J1bGU9WFlR5o6o6YCBJnB1c2h1cmw9JyArIGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeSh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcIm5hbWVcXFwiOiBmbmFtZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwicmVmcmVzaF90b2tlblxcXCI6IHJlZnRva2VuLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJ1cmxcXFwiOiBmbmFtZS5yZXBsYWNlKC9cXFxcIy9nLCAnXycpLnJlcGxhY2UoL1xcXFwkL2csICdfJykgKyAnJCcgKyBjYXRlICsgJ3wnICsgZmlsZWlkLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJzaGFyZV9pZFxcXCI6IHNoYXJlSWRcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgc2hhcmVJZCwgY29udHNbaV0uZmlsZV9pZCwgY2F0ZSwgZm5hbWUsIHJlZnRva2VuKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1dLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBjb250c1tpXS5maWxlX2lkXFxuICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnXFxuXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIGl0ZW1zLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfwn5OCJyArIGNvbnRzW2ldLm5hbWUsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJ2hpa2VyOi8vZW1wdHknICsgY29udHNbaV0uZmlsZV9pZCArICc/Pz9meXBhZ2UnKS5ydWxlKChzaGFyZUlkLCBzaGFyZXRva2VuLCBwdXNobmFtZSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9wYWdlL3J1bGVsb29wJywge30pKS5ydWxlKTtcXG4gICAgICAgICAgICAgICAgICAgIH0sIHNoYXJlSWQsIHNoYXJldG9rZW4sIGNvbnRzW2ldLm5hbWUpLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdmbGV4X2J1dHRvbidcXG4gICAgICAgICAgICAgICAgfSk7XFxuXFxuICAgICAgICAgICAgfSAvL2VuZCBpZlxcbiAgICAgICAgfSAvL2VuZCBmb3IgaVxcbiAgICAgICAgLy9sb2codHVpc29uZyk7XFxuICAgICAgICAvL2xldCBwdXNobmFtZSA9IEpTT04ucGFyc2UocmVzY29kKS5pdGVtc1swXS5uYW1lO1xcbiAgICAgICAgZXZhbChKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL3BhZ2UvcHVzaGNvZGUnLCB7fSkpLnJ1bGUpO1xcblxcbiAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICBpdGVtcy5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+asp+asp++8jOaKpemUmeS6huOAgicsXFxuICAgICAgICAgICAgdXJsOiBkZWNvZGVVUklDb21wb25lbnQoZ2V0UmVzQ29kZSgpLnNwbGl0KCcjIycpWzFdKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxuICAgICAgICB9KTtcXG4gICAgfVxcbn1cXG4vKlxcbnNldEhvbWVSZXN1bHQoe1xcbiAgICBkYXRhOiBpdGVtc1xcbn0pO1xcbiovXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLliIbkuqvotYTmupDltYzlpZdcIixcInBhdGhcIjpcInJ1bGVsb29wXCIsXCJydWxlXCI6XCJ2YXIgaXRlbXMgPSBbXTtcXG5cXG5mdW5jdGlvbiBmb3JtYXREYXRlKF9kYXRlLCBfZm10KSB7XFxuICAgIGxldCBmbXQgPSBfZm10IHx8IFxcXCJ5eXl5LU1NLWRkIEhIOm1tOnNzXFxcIjtcXG4gICAgY29uc3QgZGF0ZSA9ICFpc05hTihfZGF0ZSkgPyBuZXcgRGF0ZShfZGF0ZSAqIDEwMDApIDogbmV3IERhdGUoX2RhdGUpO1xcbiAgICBjb25zdCBvID0ge1xcbiAgICAgICAgXFxcIk0rXFxcIjogZGF0ZS5nZXRNb250aCgpICsgMSwgLy/mnIjku70gXFxuICAgICAgICBcXFwiZCtcXFwiOiBkYXRlLmdldERhdGUoKSwgLy/ml6UgXFxuICAgICAgICBcXFwiaCtcXFwiOiBkYXRlLmdldEhvdXJzKCkgJSAxMiA9PSAwID8gMTIgOiBkYXRlLmdldEhvdXJzKCkgJSAxMixcXG4gICAgICAgIFxcXCJIK1xcXCI6IGRhdGUuZ2V0SG91cnMoKSwgLy/lsI/ml7YgXFxuICAgICAgICBcXFwibStcXFwiOiBkYXRlLmdldE1pbnV0ZXMoKSwgLy/liIYgXFxuICAgICAgICBcXFwicytcXFwiOiBkYXRlLmdldFNlY29uZHMoKSwgLy/np5IgXFxuICAgICAgICBcXFwicStcXFwiOiBNYXRoLmZsb29yKChkYXRlLmdldE1vbnRoKCkgKyAzKSAvIDMpLCAvL+Wto+W6piBcXG4gICAgICAgIFxcXCJTXFxcIjogZGF0ZS5nZXRNaWxsaXNlY29uZHMoKSAvL+avq+enkiBcXG4gICAgfTtcXG4gICAgaWYgKC8oeSspLy50ZXN0KGZtdCkpIHtcXG4gICAgICAgIGZtdCA9IGZtdC5yZXBsYWNlKFJlZ0V4cC4kMSwgKGRhdGUuZ2V0RnVsbFllYXIoKSArIFxcXCJcXFwiKS5zdWJzdHIoNCAtIFJlZ0V4cC4kMS5sZW5ndGgpKTtcXG4gICAgfVxcbiAgICBmb3IgKGxldCBrIGluIG8pIHtcXG4gICAgICAgIGlmIChuZXcgUmVnRXhwKFxcXCIoXFxcIiArIGsgKyBcXFwiKVxcXCIpLnRlc3QoZm10KSkge1xcbiAgICAgICAgICAgIGZtdCA9IGZtdC5yZXBsYWNlKFJlZ0V4cC4kMSwgKFJlZ0V4cC4kMS5sZW5ndGggPT0gMSkgPyAob1trXSkgOiAoKFxcXCIwMFxcXCIgKyBvW2tdKS5zdWJzdHIoKFxcXCJcXFwiICsgb1trXSkubGVuZ3RoKSkpO1xcbiAgICAgICAgfVxcbiAgICB9XFxuICAgIHJldHVybiBmbXQ7XFxufTtcXG5cXG5mdW5jdGlvbiBmb3JtYXRTaXplKHNpemUpIHtcXG4gICAgaWYgKCFzaXplKSB7XFxuICAgICAgICByZXR1cm4gJyc7XFxuICAgIH1cXG4gICAgY29uc3QgdW5pdHMgPSBbJ0InLCAnS0InLCAnTUInLCAnR0InLCAnVEInLCAnUEInLCAnRUInLCAnWkInLCAnWUInXTtcXG4gICAgbGV0IGkgPSAwO1xcbiAgICB3aGlsZSAoc2l6ZSA+PSAxMDI0KSB7XFxuICAgICAgICBzaXplIC89IDEwMjQ7XFxuICAgICAgICBpKys7XFxuICAgIH1cXG4gICAgc2l6ZSA9IGkgPyBOdW1iZXIoc2l6ZS50b0ZpeGVkKDIpKSA6IHNpemU7XFxuICAgIHJldHVybiBgJHtzaXplfSAke3VuaXRzW2ldfWA7XFxufVxcbi8vbGV0IHR2aXAgPSBnZXRJdGVtKCdoaWtlcnR2Ym94c2V0JywgJycpO1xcblxcbi8vbG9nKGdldFJlc0NvZGUoKSk7XFxuaWYgKE1ZX1BBR0UgPT0gMSkge1xcbiAgICBjbGVhck15VmFyKCduZXh0cGFnZScpO1xcbiAgICBpdGVtcy51bnNoaWZ0KHtcXG4gICAgICAgIHRpdGxlOiBcXFwi8J+TveaOqOmAgeW9k+WJjeaWh+S7tuWkufCfk7pcXFwiLFxcbiAgICAgICAgdXJsOiAkKCdodHRwczovL3d3dy5hbGl5dW5kcml2ZS5jb20vcy8nICsgc2hhcmVJZCArICcvZm9sZGVyLycgKyBnZXRSZXNDb2RlKCkuc3BsaXQoJz8/PycpWzBdKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL3BhZ2UvcHVzaD9ydWxlPVhZUeaOqOmAgSZwdXNodXJsPScgKyBlbmNvZGVVUklDb21wb25lbnQoaW5wdXQpO1xcbiAgICAgICAgfSksXFxuICAgICAgICBjb2xfdHlwZTogXFxcInNjcm9sbF9idXR0b25cXFwiXFxuICAgIH0pO1xcbn1cXG5pZiAoTVlfUEFHRSA+IDEgJiYgZ2V0TXlWYXIoJ25leHRwYWdlJywgJycpID09ICcnKSB7XFxuICAgIGxvZygn5rKh5pyJ5LiL5LiA6aG1Jyk7XFxufSBlbHNlIHtcXG4gICAgbGV0IHJlZnRva2VuID0gSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvaWN5LWFsaS10b2tlbi5qc29uJywge30pKVswXS5yZWZyZXNoX3Rva2VuO1xcblxcbiAgICBsZXQgbmV4dCA9IGdldE15VmFyKCduZXh0cGFnZScsICcnKSAhPSAnJyA/ICcsXFxcIm1hcmtlclxcXCI6XFxcIicgKyBnZXRNeVZhcignbmV4dHBhZ2UnKSArICdcXFwiJyA6ICcnO1xcblxcbiAgICB2YXIgcmVzY29kID0gZmV0Y2goJ2h0dHBzOi8vYXBpLmFsaXl1bmRyaXZlLmNvbS9hZHJpdmUvdjMvZmlsZS9saXN0Jywge1xcbiAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXFxuICAgICAgICAgICAgJ1gtU2hhcmUtVG9rZW4nOiBzaGFyZXRva2VuXFxuICAgICAgICB9LFxcbiAgICAgICAgYm9keTogJ3tcXFwic2hhcmVfaWRcXFwiOlxcXCInICsgc2hhcmVJZCArICdcXFwiLFxcXCJwYXJlbnRfZmlsZV9pZFxcXCI6XFxcIicgKyBnZXRSZXNDb2RlKCkuc3BsaXQoJz8/PycpWzBdICsgJ1xcXCIsXFxcImxpbWl0XFxcIjoxMDAsXFxcImltYWdlX3RodW1ibmFpbF9wcm9jZXNzXFxcIjpcXFwiaW1hZ2UvcmVzaXplLHdfMTYwL2Zvcm1hdCxqcGVnXFxcIixcXFwiaW1hZ2VfdXJsX3Byb2Nlc3NcXFwiOlxcXCJpbWFnZVxcXFwvcmVzaXplLHdfMTkyMC9mb3JtYXQsanBlZ1xcXCIsXFxcInZpZGVvX3RodW1ibmFpbF9wcm9jZXNzXFxcIjpcXFwidmlkZW8vc25hcHNob3QsdF8xMDAwLGZfanBnLGFyX2F1dG8sd18zMDBcXFwiLFxcXCJvcmRlcl9ieVxcXCI6XFxcIm5hbWVcXFwiLFxcXCJvcmRlcl9kaXJlY3Rpb25cXFwiOlxcXCJBU0NcXFwiJyArIG5leHQgKyAnfScsXFxuICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcbiAgICB9KTtcXG4gICAgLy9sb2cocmVzY29kKTtcXG4gICAgaWYgKEpTT04ucGFyc2UocmVzY29kKS5uZXh0X21hcmtlcikge1xcbiAgICAgICAgbGV0IG1hcmtlciA9IEpTT04ucGFyc2UocmVzY29kKS5uZXh0X21hcmtlcjtcXG4gICAgICAgIGlmIChtYXJrZXIubGVuZ3RoID4gMTApIHtcXG4gICAgICAgICAgICBwdXRNeVZhcignbmV4dHBhZ2UnLCBtYXJrZXIpO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBjbGVhck15VmFyKCduZXh0cGFnZScpO1xcbiAgICAgICAgfVxcbiAgICB9XFxuICAgIHZhciBjb250cyA9IEpTT04ucGFyc2UocmVzY29kKS5pdGVtcztcXG4gICAgdmFyIGRvbmd0YWkgPSBKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL3BhZ2UvbGF6eXVybCcsIHt9KSkucnVsZS50b1N0cmluZygpO1xcbiAgICB2YXIgdHVpc29uZyA9IFtdO1xcbiAgICB2YXIgemltdSA9IFtdO1xcbiAgICBmb3IgKGxldCBpIGluIGNvbnRzKSB7XFxuICAgICAgICAvL3ZhciBsaXN0eXAgPSBjb250c1tpXS50eXBlO1xcbiAgICAgICAgaWYgKGNvbnRzW2ldLnR5cGUgIT0gJ2ZvbGRlcicpIHtcXG4gICAgICAgICAgICBsZXQgZm5hbWUgPSBjb250c1tpXS5uYW1lO1xcbiAgICAgICAgICAgIGxldCBjYXRlID0gY29udHNbaV0uY2F0ZWdvcnk7XFxuICAgICAgICAgICAgaWYgKGZuYW1lLmVuZHNXaXRoKCcuc3J0JykgfHwgZm5hbWUuZW5kc1dpdGgoJy52dHQnKSB8fCBmbmFtZS5lbmRzV2l0aCgnLmFzcycpKSB7XFxuICAgICAgICAgICAgICAgIHppbXUucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXQ6IGZuYW1lLnN1YnN0cmluZygwLCBmbmFtZS5sYXN0SW5kZXhPZihcXFwiLlxcXCIpKSxcXG4gICAgICAgICAgICAgICAgICAgIGV4dDogY29udHNbaV0uZmlsZV9leHRlbnNpb24sXFxuICAgICAgICAgICAgICAgICAgICBmaWQ6IGNvbnRzW2ldLmZpbGVfaWRcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICBpZiAoY2F0ZSA9PSAndmlkZW8nIHx8IGNhdGUgPT0gJ2F1ZGlvJykge1xcbiAgICAgICAgICAgICAgICB0dWlzb25nLnB1c2goXFxuICAgICAgICAgICAgICAgICAgICBmbmFtZS5yZXBsYWNlKC9cXFxcIy9nLCAnXycpLnJlcGxhY2UoL1xcXFwkL2csICdfJykgKyAnJCcgKyBjYXRlICsgJ3wnICsgY29udHNbaV0uZmlsZV9pZFxcbiAgICAgICAgICAgICAgICApO1xcbiAgICAgICAgICAgIH07XFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgZm9yICh2YXIgaSBpbiBjb250cykge1xcblxcbiAgICAgICAgdmFyIGxpc3R5cCA9IGNvbnRzW2ldLnR5cGU7XFxuICAgICAgICBpZiAobGlzdHlwICE9ICdmb2xkZXInKSB7XFxuICAgICAgICAgICAgdmFyIGNhdGUgPSBjb250c1tpXS5jYXRlZ29yeTtcXG4gICAgICAgICAgICB2YXIgZm5hbWUgPSBjb250c1tpXS5uYW1lO1xcbiAgICAgICAgICAgIGlmIChjYXRlID09ICd2aWRlbycpIHtcXG4gICAgICAgICAgICAgICAgdmFyIHRpdGxlID0gJ/Cfk7onICsgY29udHNbaV0ubmFtZTtcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNhdGUgPT0gJ2RvYycpIHtcXG4gICAgICAgICAgICAgICAgdmFyIHRpdGxlID0gJ/Cfk5YnICsgY29udHNbaV0ubmFtZTtcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNhdGUgPT0gJ2ltYWdlJykge1xcbiAgICAgICAgICAgICAgICB2YXIgdGl0bGUgPSAn8J+WvCcgKyBjb250c1tpXS5uYW1lO1xcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2F0ZSA9PSAnemlwJykge1xcbiAgICAgICAgICAgICAgICB2YXIgdGl0bGUgPSAn8J+TpicgKyBjb250c1tpXS5uYW1lO1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIHZhciB0aXRsZSA9IGNvbnRzW2ldLm5hbWVcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgaXRlbXMucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0aXRsZSxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKGNvbnRzW2ldLmZpbGVfaWQpLmxhenlSdWxlKChzaGFyZUlkLCBkb25ndGFpLCBjYXRlLCBmbmFtZSwgcmVmdG9rZW4sIHppbXUpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChnZXRJdGVtKCdzaW5nbGVwdXNoJywgJycpID09ICcxJykge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9wYWdlL3B1c2g/cnVsZT1YWVHmjqjpgIEmcHVzaHVybD0nICsgZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcIm5hbWVcXFwiOiBmbmFtZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcInJlZnJlc2hfdG9rZW5cXFwiOiByZWZ0b2tlbixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcInVybFxcXCI6IGZuYW1lLnJlcGxhY2UoL1xcXFwjL2csICdfJykucmVwbGFjZSgvXFxcXCQvZywgJ18nKSArICckJyArIGNhdGUgKyAnfCcgKyBpbnB1dCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcInNoYXJlX2lkXFxcIjogc2hhcmVJZFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZXZhbChkb25ndGFpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGxheVxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9LCBzaGFyZUlkLCBkb25ndGFpLCBjYXRlLCBmbmFtZSwgcmVmdG9rZW4sIHppbXUpLFxcbiAgICAgICAgICAgICAgICBkZXNjOiBmb3JtYXREYXRlKGNvbnRzW2ldLnVwZGF0ZWRfYXQpICsgJyAgJyArIGZvcm1hdFNpemUoY29udHNbaV0uc2l6ZSksXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICBsb25nQ2xpY2s6IFt7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfmjqjpgIHliLBUVkJveCcsXFxuICAgICAgICAgICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKHNoYXJlSWQsIGZpbGVpZCwgY2F0ZSwgZm5hbWUsIHJlZnRva2VuKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9wYWdlL3B1c2g/cnVsZT1YWVHmjqjpgIEmcHVzaHVybD0nICsgZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJuYW1lXFxcIjogZm5hbWUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwicmVmcmVzaF90b2tlblxcXCI6IHJlZnRva2VuLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcInVybFxcXCI6IGZuYW1lLnJlcGxhY2UoL1xcXFwjL2csICdfJykucmVwbGFjZSgvXFxcXCQvZywgJ18nKSArICckJyArIGNhdGUgKyAnfCcgKyBmaWxlaWQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwic2hhcmVfaWRcXFwiOiBzaGFyZUlkXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBzaGFyZUlkLCBjb250c1tpXS5maWxlX2lkLCBjYXRlLCBmbmFtZSwgcmVmdG9rZW4pXFxuICAgICAgICAgICAgICAgICAgICB9XSxcXG4gICAgICAgICAgICAgICAgICAgIGlkOiBjb250c1tpXS5maWxlX2lkXFxuICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcblxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGlmIChjYXRlID09ICd2aWRlbycgfHwgY2F0ZSA9PSAnYXVkaW8nKSB7XFxuICAgICAgICAgICAgICAgIHR1aXNvbmcucHVzaChcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlLnJlcGxhY2UoL1xcXFwjL2csICdfJykucmVwbGFjZSgvXFxcXCQvZywgJ18nKSArICckJyArIGNhdGUgKyAnfCcgKyBjb250c1tpXS5maWxlX2lkXFxuICAgICAgICAgICAgICAgICk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBpdGVtcy5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfwn5OCJyArIGNvbnRzW2ldLm5hbWUsXFxuICAgICAgICAgICAgICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eScgKyBjb250c1tpXS5maWxlX2lkICsgJz8/P2Z5cGFnZScpLnJ1bGUoKHNoYXJlSWQsIHNoYXJldG9rZW4sIHB1c2huYW1lKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vcGFnZS9ydWxlbG9vcCcsIHt9KSkucnVsZSk7XFxuICAgICAgICAgICAgICAgIH0sIHNoYXJlSWQsIHNoYXJldG9rZW4sIGNvbnRzW2ldLm5hbWUpLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2ZsZXhfYnV0dG9uJ1xcbiAgICAgICAgICAgIH0pO1xcblxcbiAgICAgICAgfSAvL2VuZCBpZlxcblxcblxcbiAgICB9XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9wYWdlL3B1c2hjb2RlJywge30pKS5ydWxlKTtcXG59XFxuc2V0SG9tZVJlc3VsdCh7XFxuICAgIGRhdGE6IGl0ZW1zXFxufSk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLliIbkuqvotYTmupDliqjmgIHop6PmnpBcIixcInBhdGhcIjpcImxhenl1cmxcIixcInJ1bGVcIjpcInZhciBkZWZkcml2ZWlkID0gZ2V0TXlWYXIoJ2RlZmRyaXZlaWQnLCAnJyksXFxuICAgIHJlYWNjZXNzVGsgPSBnZXRNeVZhcihcXFwiYWxpYWNjZXNzVGtcXFwiLCAnJyksXFxuICAgIHRpbWVUb2tlbiA9IGdldE15VmFyKCd0aW1lVG9rZW4nLCAnMCcpLFxcbiAgICBzdFRva2VuID0gZ2V0TXlWYXIoJ3N0VG9rZW4nLCAnMCcpLFxcbiAgICBzaGFyZWlpZCA9IGdldE15VmFyKCdzaGFyZWlpZCcsIHNoYXJlSWQpLFxcbiAgICBzaGFyZXRva2VuID0gZ2V0SXRlbSgnc2hhcmV0b2tlbicsICcnKTtcXG4vL2xvZygocGFyc2VJbnQodGltZVRva2VuKSAtIHBhcnNlSW50KG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCkpLnRvU3RyaW5nKCkpO1xcbmZ1bmN0aW9uIGFjY2Vzc1RrKCkge1xcbiAgICBpZiAocmVhY2Nlc3NUayA9PSAnJyB8fCAocGFyc2VJbnQodGltZVRva2VuKSAtIHBhcnNlSW50KG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCkpLnRvU3RyaW5nKCkgPD0gNjAwKSB7XFxuICAgICAgICBsb2coJ+WIt+aWsHJlYWNjZXNzVGsnKTtcXG4gICAgICAgIGxldCBudG9rZW4gPSBKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9pY3ktYWxpLXRva2VuLmpzb24nLCB7fSkpO1xcbiAgICAgICAgdmFyIHJlZnRva2VuID0gbnRva2VuWzBdLnJlZnJlc2hfdG9rZW47XFxuICAgICAgICBsZXQgcmVmcmVzaCA9IGZldGNoKCdodHRwczovL2F1dGguYWxpeXVuZHJpdmUuY29tL3YyL2FjY291bnQvdG9rZW4nLCB7XFxuICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAnVXNlci1BZ2VudCc6IFBDX1VBLFxcbiAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxcbiAgICAgICAgICAgICAgICAnUmVmZXJlcic6ICdodHRwczovL3d3dy5hbGl5dW5kcml2ZS5jb20vJ1xcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgYm9keTogJ3tcXFwicmVmcmVzaF90b2tlblxcXCI6XFxcIicgKyByZWZ0b2tlbiArICdcXFwiLFxcXCJncmFudF90eXBlXFxcIjpcXFwicmVmcmVzaF90b2tlblxcXCJ9JyxcXG4gICAgICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBudG9rZW5bMF0gPSBKU09OLnBhcnNlKHJlZnJlc2gpO1xcbiAgICAgICAgaWYgKCFmaWxlRXhpc3QoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvaWN5L2ljeS1hbGktdG9rZW4uanNvblxcXCIpIHx8IHJlZnJlc2gubGVuZ3RoID4gMzAwKSB7XFxuICAgICAgICAgICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9pY3ktYWxpLXRva2VuLmpzb25cXFwiLCBKU09OLnN0cmluZ2lmeShudG9rZW4pKTtcXG4gICAgICAgIH1cXG4gICAgICAgIHB1dE15VmFyKCd0aW1lVG9rZW4nLCAocGFyc2VJbnQoSlNPTi5wYXJzZShyZWZyZXNoKS5leHBpcmVzX2luKSArIHBhcnNlSW50KG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCkpLnRvU3RyaW5nKCkpO1xcbiAgICAgICAgZGVmZHJpdmVpZCA9IEpTT04ucGFyc2UocmVmcmVzaCkuZGVmYXVsdF9kcml2ZV9pZDtcXG4gICAgICAgIHB1dE15VmFyKCdkZWZkcml2ZWlkJywgZGVmZHJpdmVpZCk7XFxuICAgICAgICByZWFjY2Vzc1RrID0gSlNPTi5wYXJzZShyZWZyZXNoKS50b2tlbl90eXBlICsgJyAnICsgSlNPTi5wYXJzZShyZWZyZXNoKS5hY2Nlc3NfdG9rZW47XFxuICAgICAgICBwdXRNeVZhcihcXFwiYWxpYWNjZXNzVGtcXFwiLCByZWFjY2Vzc1RrKTtcXG4gICAgfVxcbn07XFxuXFxuYWNjZXNzVGsoKTtcXG4vL+WIt+aWsHNoYXJldG9rZW5cXG5pZiAoc2hhcmVpaWQgIT0gc2hhcmVJZCB8fCAocGFyc2VJbnQoc3RUb2tlbikgLSBwYXJzZUludChuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApKS50b1N0cmluZygpIDw9IDYwMCkge1xcbiAgICB2YXIgc2hhcmV0ayA9IGZldGNoKCdodHRwczovL2FwaS5hbGl5dW5kcml2ZS5jb20vdjIvc2hhcmVfbGluay9nZXRfc2hhcmVfdG9rZW4nLCB7XFxuICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgJ1VzZXItQWdlbnQnOiBQQ19VQSxcXG4gICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nXFxuICAgICAgICB9LFxcbiAgICAgICAgYm9keTogJ3tcXFwic2hhcmVfcHdkXFxcIjpcXFwiXFxcIixcXFwic2hhcmVfaWRcXFwiOlxcXCInICsgc2hhcmVJZCArICdcXFwifScsXFxuICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcbiAgICB9KTtcXG4gICAgbG9nKCfliLfmlrBzaGFyZXRva2VuJyk7XFxuICAgIHNoYXJldG9rZW4gPSBKU09OLnBhcnNlKHNoYXJldGspLnNoYXJlX3Rva2VuO1xcbiAgICBzZXRJdGVtKCdzaGFyZXRva2VuJywgSlNPTi5wYXJzZShzaGFyZXRrKS5zaGFyZV90b2tlbik7XFxuICAgIHB1dE15VmFyKCdzdFRva2VuJywgKHBhcnNlSW50KEpTT04ucGFyc2Uoc2hhcmV0aykuZXhwaXJlc19pbikgKyBwYXJzZUludChuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApKS50b1N0cmluZygpKTtcXG4gICAgcHV0TXlWYXIoJ3NoYXJlaWlkJywgc2hhcmVJZCk7XFxufVxcblxcbmNvbnN0IHRyYW5zY29kaW5nID0ge1xcbiAgICBVSEQ6IFxcXCI0SyDotoXmuIVcXFwiLFxcbiAgICBRSEQ6IFxcXCIySyDotoXmuIVcXFwiLFxcbiAgICBGSEQ6IFxcXCIxMDgwIOWFqOmrmOa4hVxcXCIsXFxuICAgIEhEOiBcXFwiNzIwIOmrmOa4hVxcXCIsXFxuICAgIFNEOiBcXFwiNTQwIOagh+a4hVxcXCIsXFxuICAgIExEOiBcXFwiMzYwIOa1geeVhVxcXCJcXG59O1xcbmlmICghZmlsZUV4aXN0KFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9pY3ktYWxpLU9wZW5Ub2tlbi5qc29uXFxcIikpIHtcXG4gICAgdmFyIE9wZW5Ub2tlbiA9IHtcXG4gICAgICAgICdSZWZyZXNoVG9rZW5PcGVuJzogJycsXFxuICAgICAgICAnQWNjZXNzVG9rZW5PcGVuJzogJydcXG4gICAgfTtcXG59IGVsc2Uge1xcbiAgICB2YXIgT3BlblRva2VuID0gSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvaWN5LWFsaS1PcGVuVG9rZW4uanNvbicsIHt9KSk7XFxufVxcbi8vdmFyIHJlZnRva2VuID0gSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvaWN5LWFsaS10b2tlbi5qc29uJywge30pKVswXS5yZWZyZXNoX3Rva2VuO1xcbmZ1bmN0aW9uIGdldHN1Yih6bWZpZCwgem1leHQpIHtcXG4gICAgdmFyIGpzb24gPSBmZXRjaCgnaHR0cHM6Ly9hcGkuYWxpeXVuZHJpdmUuY29tL3YyL2ZpbGUvZ2V0X3NoYXJlX2xpbmtfZG93bmxvYWRfdXJsJywge1xcbiAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXFxuICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nOiByZWFjY2Vzc1RrLFxcbiAgICAgICAgICAgICdYLVNoYXJlLVRva2VuJzogc2hhcmV0b2tlblxcbiAgICAgICAgfSxcXG4gICAgICAgIGJvZHk6ICd7XFxcInNoYXJlX2lkXFxcIjpcXFwiJyArIHNoYXJlSWQgKyAnXFxcIixcXFwiZmlsZV9pZFxcXCI6XFxcIicgKyB6bWZpZCArICdcXFwifScsXFxuICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcbiAgICB9KTtcXG4gICAgLy9sb2coanNvbik7XFxuICAgIGxldCB6aW11bCA9IEpTT04ucGFyc2UoanNvbikuZG93bmxvYWRfdXJsO1xcbiAgICBkb3dubG9hZEZpbGUoemltdWwsICdoaWtlcjovL2ZpbGVzL2Rvd25sb2FkL3N1YnRpdGxpbmcuJyArIHptZXh0LCB7XFxuICAgICAgICAnUmVmZXJlcic6ICdodHRwczovL3d3dy5hbGl5dW5kcml2ZS5jb20vJ1xcbiAgICB9KTtcXG4gICAgcmV0dXJuIGdldFBhdGgoJ2hpa2VyOi8vZmlsZXMvZG93bmxvYWQvc3VidGl0bGluZy4nICsgem1leHQpXFxufVxcblxcbmZ1bmN0aW9uIGFsaVNoYXJlUGxheVVybChzaGFyZV9pZCwgZmlsZV9pZCwgYWxpdG9rZW4pIHtcXG4gICAgdHJ5IHtcXG4gICAgICAgIGZ1bmN0aW9uIGdldE5vd1RpbWUoKSB7XFxuICAgICAgICAgICAgY29uc3QgeXkgPSBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKClcXG4gICAgICAgICAgICBjb25zdCBNTSA9IChuZXcgRGF0ZSgpLmdldE1vbnRoKCkgKyAxKSA8IDEwID8gJzAnICsgKG5ldyBEYXRlKCkuZ2V0TW9udGgoKSArIDEpIDogKG5ldyBEYXRlKCkuZ2V0TW9udGgoKSArIDEpXFxuICAgICAgICAgICAgY29uc3QgZGQgPSBuZXcgRGF0ZSgpLmdldERhdGUoKSA8IDEwID8gJzAnICsgbmV3IERhdGUoKS5nZXREYXRlKCkgOiBuZXcgRGF0ZSgpLmdldERhdGUoKVxcbiAgICAgICAgICAgIGNvbnN0IEhIID0gbmV3IERhdGUoKS5nZXRIb3VycygpIDwgMTAgPyAnMCcgKyBuZXcgRGF0ZSgpLmdldEhvdXJzKCkgOiBuZXcgRGF0ZSgpLmdldEhvdXJzKClcXG4gICAgICAgICAgICBjb25zdCBtbSA9IG5ldyBEYXRlKCkuZ2V0TWludXRlcygpIDwgMTAgPyAnMCcgKyBuZXcgRGF0ZSgpLmdldE1pbnV0ZXMoKSA6IG5ldyBEYXRlKCkuZ2V0TWludXRlcygpXFxuICAgICAgICAgICAgcmV0dXJuIHl5ICsgJycgKyBkZCArICcnICsgSEggKyAnJyArIE1NICsgJycgKyBtbVxcbiAgICAgICAgfVxcblxcbiAgICAgICAgbGV0IHNoYXJldG9rZW4gPSBKU09OLnBhcnNlKHJlcXVlc3QoJ2h0dHBzOi8vYXBpLmFsaXl1bmRyaXZlLmNvbS92Mi9zaGFyZV9saW5rL2dldF9zaGFyZV90b2tlbicsIHtcXG4gICAgICAgICAgICBib2R5OiB7XFxuICAgICAgICAgICAgICAgIFxcXCJzaGFyZV9wd2RcXFwiOiBcXFwiXFxcIixcXG4gICAgICAgICAgICAgICAgXFxcInNoYXJlX2lkXFxcIjogc2hhcmVfaWRcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxcbiAgICAgICAgICAgIHRpbWVvdXQ6IDMwMDBcXG4gICAgICAgIH0pKS5zaGFyZV90b2tlbjtcXG5cXG4gICAgICAgIGxldCBoZWFkZXJzID0ge1xcbiAgICAgICAgICAgICdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbjtjaGFyc2V0PVVURi04JyxcXG4gICAgICAgICAgICBcXFwib3JpZ2luXFxcIjogXFxcImh0dHBzOi8vd3d3LmFsaXl1bmRyaXZlLmNvbVxcXCIsXFxuICAgICAgICAgICAgXFxcInJlZmVyZXJcXFwiOiBcXFwiaHR0cHM6Ly93d3cuYWxpeXVuZHJpdmUuY29tL1xcXCIsXFxuICAgICAgICAgICAgLy9cXFwidXNlci1hZ2VudFxcXCI6IFxcXCJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTEwLjAuMC4wIFNhZmFyaS81MzcuMzZcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1c2VyLWFnZW50XFxcIjogUENfVUEsXFxuICAgICAgICAgICAgXFxcIngtY2FuYXJ5XFxcIjogXFxcImNsaWVudD13ZWIsYXBwPWFkcml2ZSx2ZXJzaW9uPXYzLjEuMFxcXCJcXG4gICAgICAgIH07XFxuICAgICAgICBsZXQgbm93dGltZSA9IERhdGUubm93KCk7XFxuICAgICAgICBsZXQgb2xkdGltZSA9IHBhcnNlSW50KGdldE15VmFyKCd1c2VyaW5mb0NoZWNrdGltZScsICcwJykucmVwbGFjZSgndGltZScsICcnKSk7XFxuICAgICAgICBsZXQgdXNlcmluZm87XFxuICAgICAgICBsZXQgYWxpdXNlcmluZm8gPSBzdG9yYWdlMC5nZXRNeVZhcignYWxpdXNlcmluZm8nKTtcXG4gICAgICAgIGlmIChhbGl1c2VyaW5mbyAmJiBhbGl1c2VyaW5mby51c2VyX2lkICYmIG5vd3RpbWUgPCAob2xkdGltZSArIDEgKiA2MCAqIDYwICogMTAwMCkpIHtcXG4gICAgICAgICAgICB1c2VyaW5mbyA9IGFsaXVzZXJpbmZvO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICB1c2VyaW5mbyA9IEpTT04ucGFyc2UocmVxdWVzdCgnaHR0cHM6Ly9hdXRoLmFsaXl1bmRyaXZlLmNvbS92Mi9hY2NvdW50L3Rva2VuJywge1xcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiBoZWFkZXJzLFxcbiAgICAgICAgICAgICAgICBib2R5OiB7XFxuICAgICAgICAgICAgICAgICAgICBcXFwicmVmcmVzaF90b2tlblxcXCI6IGFsaXRva2VuLFxcbiAgICAgICAgICAgICAgICAgICAgXFxcImdyYW50X3R5cGVcXFwiOiBcXFwicmVmcmVzaF90b2tlblxcXCJcXG4gICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXFxuICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDMwMDBcXG4gICAgICAgICAgICB9KSk7XFxuICAgICAgICAgICAgc3RvcmFnZTAucHV0TXlWYXIoJ2FsaXVzZXJpbmZvJywgdXNlcmluZm8pO1xcbiAgICAgICAgICAgIHB1dE15VmFyKCd1c2VyaW5mb0NoZWNrdGltZScsIG5vd3RpbWUgKyAndGltZScpO1xcbiAgICAgICAgfVxcbiAgICAgICAgbGV0IGF1dGhvcml6YXRpb24gPSAnQmVhcmVyICcgKyB1c2VyaW5mby5hY2Nlc3NfdG9rZW47XFxuICAgICAgICBsZXQgZGV2aWNlSWQgPSB1c2VyaW5mby5kZXZpY2VfaWQ7XFxuICAgICAgICBsZXQgdXNlcklkID0gdXNlcmluZm8udXNlcl9pZDtcXG4gICAgICAgIGxldCBzaWduYXR1cmU7XFxuXFxuICAgICAgICBsZXQgYXMgPSBqdXN0VGVzdFNpZ24oXFxcIjVkZGU0ZTFiZGY5ZTQ5NjZiMzg3YmE1OGY0YjNmZGMzXFxcIiwgZGV2aWNlSWQsIHVzZXJJZCk7XFxuICAgICAgICAvL2xvZyhhKTtcXG4gICAgICAgIGxldCBicCA9IGFzLnNwbGl0KFxcXCIjI1xcXCIpO1xcbiAgICAgICAgdmFyIHNpZ24gPSBicFswXTtcXG4gICAgICAgIHZhciBwdWJLZXkgPSBicFticC5sZW5ndGggLSAxXTtcXG5cXG4gICAgICAgIGxldCBpID0gMDtcXG4gICAgICAgIGRvIHtcXG5cXG4gICAgICAgICAgICBsZXQgc2VzcyA9IGZldGNoKCdodHRwczovL2FwaS5hbGl5dW5kcml2ZS5jb20vdXNlcnMvdjEvdXNlcnMvZGV2aWNlL2NyZWF0ZV9zZXNzaW9uJywge1xcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxcbiAgICAgICAgICAgICAgICAgICAgJ1VzZXItQWdlbnQnOiBQQ19VQSxcXG4gICAgICAgICAgICAgICAgICAgICdSZWZlcmVyJzogJ2h0dHBzOi8vd3d3LmFsaXl1bmRyaXZlLmNvbS8nLFxcbiAgICAgICAgICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nOiBhdXRob3JpemF0aW9uLFxcbiAgICAgICAgICAgICAgICAgICAgJ1gtU2hhcmUtVG9rZW4nOiBzaGFyZXRva2VuLFxcbiAgICAgICAgICAgICAgICAgICAgJ3gtZGV2aWNlLWlkJzogZGV2aWNlSWQsXFxuICAgICAgICAgICAgICAgICAgICAneC1zaWduYXR1cmUnOiBzaWduXFxuICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgIGJvZHk6ICd7XFxcImRldmljZU5hbWVcXFwiOlxcXCJDaHJvbWXmtY/op4jlmahcXFwiLFxcXCJtb2RlbE5hbWVcXFwiOlxcXCJXaW5kb3dz572R6aG154mIXFxcIixcXFwibm9uY2VcXFwiOjAsXFxcInB1YktleVxcXCI6XFxcIicgKyBwdWJLZXkgKyAnXFxcIixcXFwicmVmcmVzaFRva2VuXFxcIjpcXFwiJyArIGFsaXRva2VuICsgJ1xcXCJ9JyxcXG4gICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCdcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBpZiAoc2Vzcy5pbmNsdWRlcygnc3VjY2VzcycpKSB7XFxuICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBsb2coJ2NyZWF0ZV9zZXNzaW9uICcgKyBzZXNzKTtcXG4gICAgICAgICAgICBhcyA9IGp1c3RUZXN0U2lnbihcXFwiNWRkZTRlMWJkZjllNDk2NmIzODdiYTU4ZjRiM2ZkYzNcXFwiLCBkZXZpY2VJZCwgdXNlcklkKTtcXG4gICAgICAgICAgICAvL2xvZyhhKTtcXG4gICAgICAgICAgICBicCA9IGFzLnNwbGl0KFxcXCIjI1xcXCIpO1xcbiAgICAgICAgICAgIHNpZ24gPSBicFswXTtcXG4gICAgICAgICAgICBwdWJLZXkgPSBicFticC5sZW5ndGggLSAxXTtcXG4gICAgICAgICAgICBpKys7XFxuICAgICAgICB9IHdoaWxlIChpIDwgNSk7XFxuXFxuICAgICAgICBzaWduYXR1cmUgPSBzaWduO1xcbiAgICAgICAgaGVhZGVyc1snYXV0aG9yaXphdGlvbiddID0gYXV0aG9yaXphdGlvbjtcXG4gICAgICAgIGhlYWRlcnNbJ3gtZGV2aWNlLWlkJ10gPSBkZXZpY2VJZDtcXG4gICAgICAgIGhlYWRlcnNbJ3gtc2lnbmF0dXJlJ10gPSBzaWduYXR1cmU7XFxuICAgICAgICBsZXQgYWxpeXVuVXJsID0gW107XFxuICAgICAgICBoZWFkZXJzWyd4LXNoYXJlLXRva2VuJ10gPSBzaGFyZXRva2VuO1xcbiAgICAgICAgaGVhZGVyc1snZmlsZWlkJ10gPSB1c2VySWQ7XFxuICAgICAgICBsZXQgZGF0YSA9IHtcXG4gICAgICAgICAgICBcXFwiY2F0ZWdvcnlcXFwiOiBcXFwibGl2ZV90cmFuc2NvZGluZ1xcXCIsXFxuICAgICAgICAgICAgXFxcImZpbGVfaWRcXFwiOiBmaWxlX2lkLFxcbiAgICAgICAgICAgIFxcXCJnZXRfcHJldmlld191cmxcXFwiOiB0cnVlLFxcbiAgICAgICAgICAgIFxcXCJzaGFyZV9pZFxcXCI6IHNoYXJlX2lkLFxcbiAgICAgICAgICAgIFxcXCJ0ZW1wbGF0ZV9pZFxcXCI6IFxcXCJcXFwiLFxcbiAgICAgICAgICAgIFxcXCJnZXRfc3VidGl0bGVfaW5mb1xcXCI6IHRydWVcXG4gICAgICAgIH1cXG4gICAgICAgIC8vbG9nKGRhdGEpO1xcbiAgICAgICAgbGV0IGpzb24gPSBKU09OLnBhcnNlKHJlcXVlc3QoJ2h0dHBzOi8vYXBpLmFsaXl1bmRyaXZlLmNvbS92Mi9maWxlL2dldF9zaGFyZV9saW5rX3ZpZGVvX3ByZXZpZXdfcGxheV9pbmZvJywge1xcbiAgICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXFxuICAgICAgICAgICAgYm9keTogZGF0YSxcXG4gICAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcXG4gICAgICAgICAgICB0aW1lb3V0OiAzMDAwXFxuICAgICAgICB9KSk7XFxuICAgICAgICBhbGl5dW5VcmwgPSBqc29uLnZpZGVvX3ByZXZpZXdfcGxheV9pbmZvLmxpdmVfdHJhbnNjb2RpbmdfdGFza19saXN0O1xcbiAgICAgICAgYWxpeXVuVXJsLnJldmVyc2UoKTtcXG5cXG4gICAgICAgIHJldHVybiBhbGl5dW5Vcmw7XFxuICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgIGxvZygn5qC55o2u5YWx5Lqr6ZO+5o6l6I635Y+W5pKt5pS+5Zyw5Z2A5aSx6LSlPicgKyBlLm1lc3NhZ2UpO1xcbiAgICAgICAgcmV0dXJuIFxcXCJcXFwiO1xcbiAgICB9XFxufVxcblxcbmZ1bmN0aW9uIGdldEFsaVVybChzaGFyZV9pZCwgZmlsZV9pZCwgYWxpdG9rZW4pIHtcXG4gICAgdHJ5IHtcXG4gICAgICAgIGxldCB1cmxzID0gW107XFxuICAgICAgICBsZXQgbmFtZXMgPSBbXTtcXG4gICAgICAgIGxldCBoZWFkcyA9IFtdO1xcbiAgICAgICAgbGV0IHUgPSBzdGFydFByb3h5U2VydmVyKCQudG9TdHJpbmcoKGFsaVNoYXJlUGxheVVybCwgZmlsZV9pZCwgc2hhcmVfaWQsIGFsaXRva2VuKSA9PiB7XFxuICAgICAgICAgICAgZnVuY3Rpb24gZ2V0dXJsKGZpbGVpZCwgbGluZSkge1xcbiAgICAgICAgICAgICAgICAvL+mihOWKoOi9veaXtuS8muWPmGZpbGVfaWQs5omA5LuldHPov4fmnJ/mm7TmlrDml7bov5jlj5bljp/mnaXnmoRpZFxcbiAgICAgICAgICAgICAgICBsZXQgcGxheVVybExpc3QgPSBhbGlTaGFyZVBsYXlVcmwoc2hhcmVfaWQsIGZpbGVpZCwgYWxpdG9rZW4pIHx8IFtdO1xcbiAgICAgICAgICAgICAgICBsZXQgYWxpdXJsO1xcbiAgICAgICAgICAgICAgICBwbGF5VXJsTGlzdC5mb3JFYWNoKChpdGVtKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbS50ZW1wbGF0ZV9pZCA9PSBsaW5lKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgYWxpdXJsID0gaXRlbS51cmw7XFxuICAgICAgICAgICAgICAgICAgICAgICAgLyphbGl1cmwgPSBKU09OLnBhcnNlKHJlcXVlc3QoaXRlbS51cmwsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1VzZXItQWdlbnQnOiBQQ19VQSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdSZWZlcmVyJzogJ2h0dHBzOi8vd3d3LmFsaXl1bmRyaXZlLmNvbS8nXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ubHlIZWFkZXJzOiB0cnVlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdDogZmFsc2UsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDMwMDBcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSkuaGVhZGVycy5sb2NhdGlvblswXTsqL1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAvL+S4iumdouaYr+iOt+WPlumYv+mHjOeahOaSreaUvuWcsOWdgFxcbiAgICAgICAgICAgICAgICAvL2xvZyhcXFwi5oiR5Zyo5Luj55CGXFxcIiArIGFsaXVybCk7XFxuICAgICAgICAgICAgICAgIGxldCBob21lID0gYWxpdXJsLnNwbGl0KCdtZWRpYS5tM3U4JylbMF07XFxuICAgICAgICAgICAgICAgIGxldCBmID0gZmV0Y2goYWxpdXJsLCB7XFxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgJ1VzZXItQWdlbnQnOiBQQ19VQSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAnUmVmZXJlcic6ICdodHRwczovL3d3dy5hbGl5dW5kcml2ZS5jb20vJ1xcbiAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDMwMDBcXG4gICAgICAgICAgICAgICAgfSkuc3BsaXQoXFxcIlxcXFxuXFxcIik7XFxuICAgICAgICAgICAgICAgIGxldCBmZiA9IGYubWFwKGl0ID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChpdC5zdGFydHNXaXRoKFxcXCJtZWRpYS1cXFwiKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiL3Byb3h5P3VybD1cXFwiICsgYmFzZTY0RW5jb2RlKGhvbWUgKyBpdCk7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXQ7XFxuICAgICAgICAgICAgICAgIH0pLmpvaW4oXFxcIlxcXFxuXFxcIik7XFxuICAgICAgICAgICAgICAgIC8vbG9nKCd1ZmlkLScrZmlsZWlkKTtcXG4gICAgICAgICAgICAgICAgd3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2NhY2hlL19maWxlU2VsZWN0XycgKyBmaWxlaWQgKyAnLm0zdTgnLCBmZik7XFxuICAgICAgICAgICAgICAgIHJldHVybiBmZjtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgbGV0IHVybCA9IGJhc2U2NERlY29kZShNWV9QQVJBTVMudXJsKTtcXG4gICAgICAgICAgICBpZiAodXJsLmluY2x1ZGVzKFxcXCIudHNcXFwiKSkge1xcbiAgICAgICAgICAgICAgICBsZXQgZmlkID0gdXJsLnNwbGl0KCcmZj0nKVsxXS5zcGxpdCgnJicpWzBdO1xcbiAgICAgICAgICAgICAgICAvL2xvZygnc2ZpZC0nK2ZpZCk7XFxuICAgICAgICAgICAgICAgIGxldCBmID0gZmV0Y2goJ2hpa2VyOi8vZmlsZXMvY2FjaGUvX2ZpbGVTZWxlY3RfJyArIGZpZCArICcubTN1OCcpLnNwbGl0KFxcXCJcXFxcblxcXCIpO1xcbiAgICAgICAgICAgICAgICBmLmZvckVhY2goaXQgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKGl0ICYmIGl0LnN0YXJ0c1dpdGgoJy9wcm94eT91cmw9JykpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZnVybCA9IGJhc2U2NERlY29kZShpdC5yZXBsYWNlKCcvcHJveHk/dXJsPScsICcnKSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVybC5zdWJzdHIodXJsLmluZGV4T2YoJy9tZWRpYS0nKSwgdXJsLmluZGV4T2YoJy50cycpKSA9PSBmdXJsLnN1YnN0cihmdXJsLmluZGV4T2YoJy9tZWRpYS0nKSwgZnVybC5pbmRleE9mKCcudHMnKSkpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsID0gZnVybDtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgIGxldCBleHBpcmVzID0gdXJsLnNwbGl0KCd4LW9zcy1leHBpcmVzPScpWzFdLnNwbGl0KCcmJylbMF07XFxuICAgICAgICAgICAgICAgIGNvbnN0IGxhc3R0aW1lID0gcGFyc2VJbnQoZXhwaXJlcykgLSBEYXRlLm5vdygpIC8gMTAwMDtcXG4gICAgICAgICAgICAgICAgaWYgKGxhc3R0aW1lIDwgNjApIHtcXG4gICAgICAgICAgICAgICAgICAgIC8vbG9nKCfov4fmnJ/mm7TmlrAnKVxcbiAgICAgICAgICAgICAgICAgICAgbGV0IGxpbmUgPSB1cmwuc3BsaXQoJy9tZWRpYScpWzBdOyAvL+WPluS5i+WJjeaSreaUvueahHRz5q6157q/6LevXFxuICAgICAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5zdWJzdHJpbmcobGluZS5sYXN0SW5kZXhPZignLycpICsgMSk7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgZiA9IGdldHVybChmaWQsIGxpbmUpLnNwbGl0KFxcXCJcXFxcblxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgZi5mb3JFYWNoKGl0ID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXQgJiYgaXQuc3RhcnRzV2l0aCgnL3Byb3h5P3VybD0nKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZnVybCA9IGJhc2U2NERlY29kZShpdC5yZXBsYWNlKCcvcHJveHk/dXJsPScsICcnKSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1cmwuc3Vic3RyKHVybC5pbmRleE9mKCcvbWVkaWEtJyksIHVybC5pbmRleE9mKCcudHMnKSkgPT0gZnVybC5zdWJzdHIoZnVybC5pbmRleE9mKCcvbWVkaWEtJyksIGZ1cmwuaW5kZXhPZignLnRzJykpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmwgPSBmdXJsO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfSlcXG5cXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgIC8vbG9nKCfmnKrov4fmnJ8nKVxcbiAgICAgICAgICAgICAgICAgICAgLy9sb2coXFxcIuS7o+eQhnRz77yaXFxcIiArIHVybCk7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHtcXG4gICAgICAgICAgICAgICAgICAgIHN0YXR1c0NvZGU6IDMwMixcXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBcXFwiTG9jYXRpb25cXFwiOiB1cmwsXFxuICAgICAgICAgICAgICAgICAgICAgICAgXFxcIlVzZXItQWdlbnRcXFwiOiBQQ19VQSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAnUmVmZXJlcic6ICdodHRwczovL3d3dy5hbGl5dW5kcml2ZS5jb20vJ1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAvL2xvZygn6aaW5qyh5pu05pawJylcXG4gICAgICAgICAgICAgICAgbGV0IGxpbmUgPSB1cmwuc3BsaXQoJ3wnKVsxXTtcXG4gICAgICAgICAgICAgICAgbGV0IGZmID0gZ2V0dXJsKGZpbGVfaWQsIGxpbmUpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gZmY7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSwgYWxpU2hhcmVQbGF5VXJsLCBmaWxlX2lkLCBzaGFyZV9pZCwgYWxpdG9rZW4pKTtcXG5cXG4gICAgICAgIGxldCBwbGF5VXJsTGlzdCA9IGFsaVNoYXJlUGxheVVybChzaGFyZV9pZCwgZmlsZV9pZCwgYWxpdG9rZW4pIHx8IFtdO1xcblxcbiAgICAgICAgaWYgKHBsYXlVcmxMaXN0Lmxlbmd0aCA+IDApIHtcXG4gICAgICAgICAgICBwbGF5VXJsTGlzdC5mb3JFYWNoKChpdGVtKSA9PiB7XFxuICAgICAgICAgICAgICAgIHVybHMucHVzaCh1ICsgXFxcIj91cmw9XFxcIiArIGJhc2U2NEVuY29kZShpdGVtLnVybCArIFxcXCJ8XFxcIiArIGl0ZW0udGVtcGxhdGVfaWQpICsgXFxcIiMubTN1OFxcXCIpO1xcbiAgICAgICAgICAgICAgICBuYW1lcy5wdXNoKHRyYW5zY29kaW5nW2l0ZW0udGVtcGxhdGVfaWRdID8gdHJhbnNjb2RpbmdbaXRlbS50ZW1wbGF0ZV9pZF0gOiBpdGVtLnRlbXBsYXRlX2hlaWdodCk7XFxuICAgICAgICAgICAgICAgIGhlYWRzLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgJ1VzZXItQWdlbnQnOiBQQ19VQSxcXG4gICAgICAgICAgICAgICAgICAgICdSZWZlcmVyJzogJ2h0dHBzOi8vd3d3LmFsaXl1bmRyaXZlLmNvbS8nXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgLypcXG4gICAgICAgICAgICByZXR1cm4ge1xcbiAgICAgICAgICAgICAgICB1cmxzOiB1cmxzLFxcbiAgICAgICAgICAgICAgICBuYW1lczogbmFtZXMsXFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IGhlYWRzXFxuICAgICAgICAgICAgfTsqL1xcbiAgICAgICAgICAgIHZhciBtdWx0ID0ge1xcbiAgICAgICAgICAgICAgICB1cmxzOiB1cmxzLFxcbiAgICAgICAgICAgICAgICBuYW1lczogbmFtZXMsXFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IGhlYWRzXFxuICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICBpZiAoemltdS5sZW5ndGggPiAwKSB7XFxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgaW4gemltdSkge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIHppbXV0ID0gemltdVtpXS50aXQ7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoZm5hbWUuaW5jbHVkZXMoemltdXQpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbXVsdFsnc3VidGl0bGUnXSA9IGdldHN1Yih6aW11W2ldLmZpZCwgemltdVtpXS5leHQpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfVxcblxcbiAgICAgICAgICAgIHJldHVybiBtdWx0O1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBsb2coJ+acquiOt+WPlumYv+mHjOaSreaUvuWcsOWdgO+8jOW7uuiurumHjei/m+i9r+S7tuWGjeivleS4gOasoScpXFxuICAgICAgICAgICAgcmV0dXJuIHt9O1xcbiAgICAgICAgfVxcbiAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICBsb2coJ+iOt+WPluWFseS6q+mTvuaOpeaSreaUvuWcsOWdgOWksei0pT4nICsgZS5tZXNzYWdlKTtcXG4gICAgICAgIHJldHVybiB7fTtcXG4gICAgfVxcbn1cXG5cXG5pZiAoY2F0ZSA9PSAndmlkZW8nKSB7XFxuICAgIGlmIChnZXRJdGVtKCdxdWFsaXR5JywgJycpID09ICcxJykge1xcbiAgICAgICAgLy/ljp/nlLtcXG4gICAgICAgIC8vYWNjZXNzVGsoKTtcXG4gICAgICAgIGZ1bmN0aW9uIG9hdXRoUmVxdWVzdCgpIHtcXG4gICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICBsZXQganNvbiA9IGZldGNoKCdodHRwczovL29wZW4uYWxpeXVuZHJpdmUuY29tL29hdXRoL3VzZXJzL2F1dGhvcml6ZT9jbGllbnRfaWQ9JyArICc3NjkxN2NjY2NkNDQ0MWMzOTQ1N2EwNGY2MDg0ZmIyZicgKyAnJnJlZGlyZWN0X3VyaT1odHRwczovL2FsaXN0Lm5uLmNpL3Rvb2wvYWxpeXVuZHJpdmUvY2FsbGJhY2smc2NvcGU9dXNlcjpiYXNlLGZpbGU6YWxsOnJlYWQsZmlsZTphbGw6d3JpdGUmc3RhdGU9Jywge1xcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICdVc2VyLUFnZW50JzogUENfVUEsXFxuICAgICAgICAgICAgICAgICAgICAgICAgJ1JlZmVyZXInOiAnaHR0cHM6Ly93d3cuYWxpeXVuZHJpdmUuY29tLycsXFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2F1dGhvcml6YXRpb24nOiByZWFjY2Vzc1RrLCAvL2dldEFjY2Vzc1Rva2VuXFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3gtY2FuYXJ5JzogJ2NsaWVudD13ZWIsYXBwPXNoYXJlLHZlcnNpb249djIuMy4xJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAneC1zaGFyZS10b2tlbic6IHNoYXJldG9rZW5cXG5cXG4gICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICBib2R5OiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgXFxcImF1dGhvcml6ZVxcXCI6IDEsXFxuICAgICAgICAgICAgICAgICAgICAgICAgXFxcInNjb3BlXFxcIjogXFxcInVzZXI6YmFzZSxmaWxlOmFsbDpyZWFkLGZpbGU6YWxsOndyaXRlXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAvL2xvZygnb2F1dGhyZXFcXFxcbicgKyBqc29uKTtcXG4gICAgICAgICAgICAgICAgbGV0IGNvZGUgPSBKU09OLnBhcnNlKGpzb24pLnJlZGlyZWN0VXJpLnNwbGl0KFxcXCJjb2RlPVxcXCIpWzFdO1xcbiAgICAgICAgICAgICAgICBvYXV0aFJlZGlyZWN0KGNvZGUpO1xcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICAgICAgcmVhY2Nlc3NUayA9ICcnO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH07XFxuXFxuICAgICAgICBmdW5jdGlvbiBvYXV0aFJlZGlyZWN0KGNvZGUpIHtcXG4gICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICBpZiAoZ2V0TXlWYXIoJ29yZWQnLCAnMScpICE9ICcwJykge1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IGpzb24gPSBmZXRjaCgnaHR0cHM6Ly9hcGkubm4uY2kvYWxpc3QvYWxpX29wZW4vY29kZScsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdVc2VyLUFnZW50JzogUENfVUEsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdSZWZlcmVyJzogJ2h0dHBzOi8vd3d3LmFsaXl1bmRyaXZlLmNvbS8nXFxuXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBib2R5OiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJjb2RlXFxcIjogY29kZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcImdyYW50X3R5cGVcXFwiOiBcXFwiYXV0aG9yaXphdGlvbl9jb2RlXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCdcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcblxcbiAgICAgICAgICAgICAgICAgICAgbG9nKCfojrflj5ZSZWZyZXNoVG9rZW5PcGVuJyk7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoanNvbi5pbmNsdWRlcygnVG9vIE1hbnkgUmVxdWVzdHMnKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCdvcmVkJywgJzAnKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0b2FzdCgn6K+35rGC5aSq6aKR57mB77yM6KKr5bCBSVDkuoYnKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2coJ+ivt+axguWkqumikee5ge+8jOiiq+WwgUlQ5LqGJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcnO1xcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcignb3JlZCcsICcxJyk7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICBsZXQgZ2V0UmVmcmVzaFRva2VuT3BlbiA9IEpTT04ucGFyc2UoanNvbikucmVmcmVzaF90b2tlbjtcXG4gICAgICAgICAgICAgICAgICAgIE9wZW5Ub2tlbi5SZWZyZXNoVG9rZW5PcGVuID0gZ2V0UmVmcmVzaFRva2VuT3BlbjtcXG4gICAgICAgICAgICAgICAgICAgIGxldCBnZXRBY2Nlc3NUb2tlbk9wZW4gPSBKU09OLnBhcnNlKGpzb24pLnRva2VuX3R5cGUgKyAnICcgKyBKU09OLnBhcnNlKGpzb24pLmFjY2Vzc190b2tlbjtcXG4gICAgICAgICAgICAgICAgICAgIE9wZW5Ub2tlbi5BY2Nlc3NUb2tlbk9wZW4gPSBnZXRBY2Nlc3NUb2tlbk9wZW47XFxuICAgICAgICAgICAgICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvaWN5L2ljeS1hbGktT3BlblRva2VuLmpzb25cXFwiLCBKU09OLnN0cmluZ2lmeShPcGVuVG9rZW4pKTtcXG5cXG4gICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCdyZWRpcmVjdCcsICcxJyk7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7fVxcbiAgICAgICAgfTtcXG5cXG4gICAgICAgIGZ1bmN0aW9uIHJlZnJlc2hPcGVuVG9rZW4oKSB7XFxuICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgaWYgKGdldE15VmFyKCdyb3QnLCAnMScpICE9ICcwJykge1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IGpzb24gPSBmZXRjaCgnaHR0cHM6Ly9hcGkubm4uY2kvYWxpc3QvYWxpX29wZW4vdG9rZW4nLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVXNlci1BZ2VudCc6IFBDX1VBLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUmVmZXJlcic6ICdodHRwczovL3d3dy5hbGl5dW5kcml2ZS5jb20vJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9keToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ3JhbnRfdHlwZSc6ICdyZWZyZXNoX3Rva2VuJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlZnJlc2hfdG9rZW4nOiBPcGVuVG9rZW4uQWNjZXNzVG9rZW5PcGVuXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuXFxuICAgICAgICAgICAgICAgICAgICBsb2coJ+iOt+WPlkFjY2Vzc1Rva2VuT3BlbicpO1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKGpzb24uaW5jbHVkZXMoJ1RvbyBNYW55IFJlcXVlc3RzJykpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcigncm90JywgJzAnKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0b2FzdCgn6K+35rGC5aSq6aKR57mB77yM6KKr5bCBSVDkuoYnKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2coJ+ivt+axguWkqumikee5ge+8jOiiq+WwgUlQ5LqGJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcnO1xcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcigncm90JywgJzEnKTtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIGxldCBnZXRSZWZyZXNoVG9rZW5PcGVuID0gSlNPTi5wYXJzZShqc29uKS5yZWZyZXNoX3Rva2VuO1xcbiAgICAgICAgICAgICAgICAgICAgT3BlblRva2VuLlJlZnJlc2hUb2tlbk9wZW4gPSBnZXRSZWZyZXNoVG9rZW5PcGVuO1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IGdldEFjY2Vzc1Rva2VuT3BlbiA9IEpTT04ucGFyc2UoanNvbikudG9rZW5fdHlwZSArICcgJyArIEpTT04ucGFyc2UoanNvbikuYWNjZXNzX3Rva2VuO1xcbiAgICAgICAgICAgICAgICAgICAgT3BlblRva2VuLkFjY2Vzc1Rva2VuT3BlbiA9IGdldEFjY2Vzc1Rva2VuT3BlbjtcXG4gICAgICAgICAgICAgICAgICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvaWN5LWFsaS1PcGVuVG9rZW4uanNvblxcXCIsIEpTT04uc3RyaW5naWZ5KE9wZW5Ub2tlbikpO1xcblxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge31cXG4gICAgICAgIH07XFxuXFxuICAgICAgICBmdW5jdGlvbiBjb3B5KGZpbGVJZCkge1xcbiAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgIGxldCBqc29uID0gZmV0Y2goJ2h0dHBzOi8vYXBpLmFsaXl1bmRyaXZlLmNvbS9hZHJpdmUvdjIvYmF0Y2gnLCB7XFxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgJ1VzZXItQWdlbnQnOiBQQ19VQSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAnUmVmZXJlcic6ICdodHRwczovL3d3dy5hbGl5dW5kcml2ZS5jb20vJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAnYXV0aG9yaXphdGlvbic6IHJlYWNjZXNzVGssXFxuICAgICAgICAgICAgICAgICAgICAgICAgLy9nZXRBY2Nlc3NUb2tlblxcbiAgICAgICAgICAgICAgICAgICAgICAgICd4LWNhbmFyeSc6ICdjbGllbnQ9d2ViLGFwcD1zaGFyZSx2ZXJzaW9uPXYyLjMuMScsXFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3gtc2hhcmUtdG9rZW4nOiBzaGFyZXRva2VuXFxuXFxuICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgYm9keToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJyZXF1ZXN0c1xcXCI6IFt7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJib2R5XFxcIjoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcImZpbGVfaWRcXFwiOiBmaWxlSWQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwic2hhcmVfaWRcXFwiOiBzaGFyZUlkLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcImF1dG9fcmVuYW1lXFxcIjogdHJ1ZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJ0b19wYXJlbnRfZmlsZV9pZFxcXCI6IFxcXCJyb290XFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJ0b19kcml2ZV9pZFxcXCI6IGRlZmRyaXZlaWRcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcImhlYWRlcnNcXFwiOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwiQ29udGVudC1UeXBlXFxcIjogXFxcImFwcGxpY2F0aW9uL2pzb25cXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJpZFxcXCI6IFxcXCIwXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcIm1ldGhvZFxcXCI6IFxcXCJQT1NUXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcInVybFxcXCI6IFxcXCIvZmlsZS9jb3B5XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1dLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJyZXNvdXJjZVxcXCI6IFxcXCJmaWxlXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAvL2xvZygnY29weVxcXFxuJyArIGpzb24pO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShqc29uKS5yZXNwb25zZXNbMF0uYm9keS5maWxlX2lkO1xcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJcXFwiO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH07XFxuXFxuICAgICAgICBmdW5jdGlvbiBvcGVuKGZpbGVJZCkge1xcbiAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgIGxldCBqc29uID0gXFxcIlxcXCI7XFxuICAgICAgICAgICAgICAgIGxldCBudW1iZXIgPSAwO1xcbiAgICAgICAgICAgICAgICBkbyB7XFxuICAgICAgICAgICAgICAgICAgICBqc29uID0gZmV0Y2goJ2h0dHBzOi8vb3Blbi5hbGl5dW5kcml2ZS5jb20vYWRyaXZlL3YxLjAvb3BlbkZpbGUvZ2V0RG93bmxvYWRVcmwnLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVXNlci1BZ2VudCc6IFBDX1VBLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUmVmZXJlcic6ICdodHRwczovL3d3dy5hbGl5dW5kcml2ZS5jb20vJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2F1dGhvcml6YXRpb24nOiBPcGVuVG9rZW4uQWNjZXNzVG9rZW5PcGVuXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vZ2V0QWNjZXNzVG9rZW5PcGVuXFxuXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBib2R5OiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmaWxlX2lkJzogZmlsZUlkLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZHJpdmVfaWQnOiBkZWZkcml2ZWlkXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICAvL2xvZygnb3BlblxcXFxuJyArIGpzb24pO1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKGpzb24uaW5jbHVkZXMoJ1xcXCJ1cmxcXFwiOlxcXCJodHRwJykpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIGlmIChqc29uLmluY2x1ZGVzKFxcXCJUb29NYW55UmVxdWVzdHNcXFwiKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vZGVsZXRlZShmaWxlSWQpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvYXN0KCdUb28gTWFueSBSZXF1ZXN0cycpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZygnVG9vTWFueVJlcXVlc3RzJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgLy9yZXR1cm4gJ3RvYXN0Oi8v6K+35rGC5aSq6aKR57mBJztcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIGlmIChnZXRNeVZhcigncmVkaXJlY3QnLCAnMCcpID09ICcwJykge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIG9hdXRoUmVxdWVzdCgpO1xcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoT3BlblRva2VuKCk7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAvL3JlZnJlc2hPcGVuVG9rZW4oKTtcXG4gICAgICAgICAgICAgICAgICAgIG51bWJlcisrXFxuICAgICAgICAgICAgICAgIH0gd2hpbGUgKG51bWJlciA8IDIpO1xcbiAgICAgICAgICAgICAgICAvL2RlbGV0ZWUoZmlsZUlkKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UoanNvbikudXJsICsgJzt7UmVmZXJlckBodHRwczovL3d3dy5hbGl5dW5kcml2ZS5jb20vfSc7XFxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH07XFxuXFxuICAgICAgICBmdW5jdGlvbiBkZWxldGVlKGZpbGVJZCkge1xcblxcbiAgICAgICAgICAgIGZldGNoKCdodHRwczovL2FwaS5hbGl5dW5kcml2ZS5jb20vYWRyaXZlL3YyL2JhdGNoJywge1xcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICAnVXNlci1BZ2VudCc6IFBDX1VBLFxcbiAgICAgICAgICAgICAgICAgICAgJ1JlZmVyZXInOiAnaHR0cHM6Ly93d3cuYWxpeXVuZHJpdmUuY29tLycsXFxuICAgICAgICAgICAgICAgICAgICAnYXV0aG9yaXphdGlvbic6IHJlYWNjZXNzVGssXFxuICAgICAgICAgICAgICAgICAgICAneC1jYW5hcnknOiAnY2xpZW50PXdlYixhcHA9c2hhcmUsdmVyc2lvbj12Mi4zLjEnLFxcbiAgICAgICAgICAgICAgICAgICAgJ3gtc2hhcmUtdG9rZW4nOiBzaGFyZXRva2VuXFxuXFxuICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgIGJvZHk6IHtcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJyZXF1ZXN0c1xcXCI6IFt7XFxuICAgICAgICAgICAgICAgICAgICAgICAgXFxcImJvZHlcXFwiOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJkcml2ZV9pZFxcXCI6IGRlZmRyaXZlaWQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJmaWxlX2lkXFxcIjogZmlsZUlkXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBcXFwiaGVhZGVyc1xcXCI6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcIkNvbnRlbnQtVHlwZVxcXCI6IFxcXCJhcHBsaWNhdGlvbi9qc29uXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgXFxcImlkXFxcIjogZmlsZUlkLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJtZXRob2RcXFwiOiBcXFwiUE9TVFxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgXFxcInVybFxcXCI6IFxcXCIvZmlsZS9kZWxldGVcXFwiXFxuICAgICAgICAgICAgICAgICAgICB9XSxcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJyZXNvdXJjZVxcXCI6IFxcXCJmaWxlXFxcIlxcbiAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcbiAgICAgICAgICAgIH0pO1xcblxcbiAgICAgICAgICAgIC8qXFxuICAgICAgICAgICAgZmV0Y2goJ2h0dHBzOi8vb3Blbi5hbGl5dW5kcml2ZS5jb20vYWRyaXZlL3YxLjAvb3BlbkZpbGUvZGVsZXRlJywge1xcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICAnVXNlci1BZ2VudCc6IFBDX1VBLFxcbiAgICAgICAgICAgICAgICAgICAgJ1JlZmVyZXInOiAnaHR0cHM6Ly93d3cuYWxpeXVuZHJpdmUuY29tLycsXFxuICAgICAgICAgICAgICAgICAgICAnYXV0aG9yaXphdGlvbic6IGdldEl0ZW0oJ2dldEFjY2Vzc1Rva2VuT3BlbicsICcnKSxcXG4gICAgICAgICAgICAgICAgICAgICd4LXNoYXJlLXRva2VuJzogc2hhcmV0b2tlblxcblxcblxcbiAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICBib2R5OiB7XFxuICAgICAgICAgICAgICAgICAgICBcXFwiZHJpdmVfaWRcXFwiOiBkZWZkcml2ZWlkLFxcbiAgICAgICAgICAgICAgICAgICAgXFxcImZpbGVfaWRcXFwiOiBmaWxlSWRcXG4gICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCdcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAqL1xcbiAgICAgICAgICAgIC8vbG9nKCdkZWxlXFxcXG4nICsganNvbik7XFxuICAgICAgICB9O1xcblxcblxcbiAgICAgICAgLy/lpITnkIbop4bpopEgIFxcbiAgICAgICAgdmFyIGRzaWQgPSBzaGFyZUlkO1xcbiAgICAgICAgdmFyIGRmaWQgPSBpbnB1dDtcXG5cXG4gICAgICAgIGxldCBmaWxlSWQgPSBjb3B5KGRmaWQpO1xcbiAgICAgICAgdmFyIHBsYXkgPSBvcGVuKGZpbGVJZCk7XFxuICAgICAgICBpZiAoZmlsZUlkLmxlbmd0aCA+IDApIHtcXG4gICAgICAgICAgICBkZWxldGVlKGZpbGVJZCk7XFxuICAgICAgICB9XFxuICAgICAgICBpZiAoemltdS5sZW5ndGggPiAwKSB7XFxuICAgICAgICAgICAgZm9yIChsZXQgaSBpbiB6aW11KSB7XFxuICAgICAgICAgICAgICAgIHZhciB6aW11dCA9IHppbXVbaV0udGl0O1xcbiAgICAgICAgICAgICAgICBpZiAoZm5hbWUuaW5jbHVkZXMoemltdXQpKSB7XFxuICAgICAgICAgICAgICAgICAgICBwbGF5ID0gSlNPTi5zdHJpbmdpZnkoe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybHM6IFtwbGF5LnNwbGl0KCc7eycpWzBdXSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiBbe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUmVmZXJlcic6ICdodHRwczovL3d3dy5hbGl5dW5kcml2ZS5jb20vJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1dLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBnZXRzdWIoemltdVtpXS5maWQsIHppbXVbaV0uZXh0KVxcbiAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgLy/mma7nlLsgIFxcbiAgICAgICAgdmFyIGRzaWQgPSBzaGFyZUlkO1xcbiAgICAgICAgdmFyIGRmaWQgPSBpbnB1dDtcXG5cXG4gICAgICAgIHZhciBwbGF5ID0gSlNPTi5zdHJpbmdpZnkoZ2V0QWxpVXJsKFxcbiAgICAgICAgICAgIHNoYXJlSWQsXFxuICAgICAgICAgICAgaW5wdXQsXFxuICAgICAgICAgICAgcmVmdG9rZW5cXG4gICAgICAgICkpO1xcblxcbiAgICB9XFxufVxcbi8qfSBlbHNlIGlmIChjYXRlID09ICdpbWFnZScpIHtcXG4gICAgLy/lpITnkIbmlofmoaNcXG4gICAgYWNjZXNzVGsoKTtcXG5cXG4gICAgdmFyIGpzb24gPSBmZXRjaCgnaHR0cHM6Ly9hcGkuYWxpeXVuZHJpdmUuY29tL3YyL2ZpbGUvZ2V0X3NoYXJlX2xpbmtfZG93bmxvYWRfdXJsJywge1xcbiAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXFxuICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nOiBhY2Nlc3NUaygpLFxcbiAgICAgICAgICAgICdYLVNoYXJlLVRva2VuJzogc2hhcmV0b2tlblxcbiAgICAgICAgfSxcXG4gICAgICAgIGJvZHk6ICd7XFxcInNoYXJlX2lkXFxcIjpcXFwiJyArIHNoYXJlSWQgKyAnXFxcIixcXFwiZXhwaXJlX3NlY1xcXCI6IDYwMCxcXFwiZmlsZV9pZFxcXCI6XFxcIicgKyBpbnB1dCArICdcXFwifScsXFxuICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcbiAgICB9KTtcXG5cXG4gICAgLy9sb2coanNvbik7XFxuXFxuICAgIHZhciBsb2NsaW5rID0gSlNPTi5wYXJzZShmZXRjaChKU09OLnBhcnNlKGpzb24pLnVybCwge1xcbiAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICdVc2VyLUFnZW50JzogTU9CSUxFX1VBLFxcbiAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyxcXG4gICAgICAgICAgICAnUmVmZXJlcic6ICdodHRwczovL3d3dy5hbGl5dW5kcml2ZS5jb20vJ1xcbiAgICAgICAgfSxcXG4gICAgICAgIHJlZGlyZWN0OiBmYWxzZSxcXG4gICAgICAgIHdpdGhTdGF0dXNDb2RlOiB0cnVlXFxuICAgIH0pKS5oZWFkZXJzLmxvY2F0aW9uWzBdO1xcblxcbiAgICAvL2xvZyhsb2NsaW5rKTtcXG4gICAgaWYgKGNhdGUgPT0gJ2ltYWdlJykge1xcbiAgICAgICAgdmFyIHBsYXkgPSAncGljczovLycgKyBsb2NsaW5rICsgJ0BSZWZlcmVyPWh0dHBzOi8vd3d3LmFsaXl1bmRyaXZlLmNvbS8nO1xcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgdmFyIHBsYXkgPSBsb2NsaW5rICsgJzt7UmVmZXJlckBodHRwczovL3d3dy5hbGl5dW5kcml2ZS5jb20vfSc7XFxuICAgIH0qL1xcbmVsc2UgaWYgKGNhdGUgPT0gJ2F1ZGlvJykge1xcbiAgICB2YXIganNvbiA9IGZldGNoKCdodHRwczovL2FwaS5hbGl5dW5kcml2ZS5jb20vdjIvZmlsZS9nZXRfc2hhcmVfbGlua19kb3dubG9hZF91cmwnLCB7XFxuICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcXG4gICAgICAgICAgICAnQXV0aG9yaXphdGlvbic6IHJlYWNjZXNzVGssXFxuICAgICAgICAgICAgJ1gtU2hhcmUtVG9rZW4nOiBzaGFyZXRva2VuXFxuICAgICAgICB9LFxcbiAgICAgICAgYm9keTogJ3tcXFwic2hhcmVfaWRcXFwiOlxcXCInICsgc2hhcmVJZCArICdcXFwiLFxcXCJnZXRfYXVkaW9fcGxheV9pbmZvXFxcIjogdHJ1ZSxcXFwiZmlsZV9pZFxcXCI6XFxcIicgKyBpbnB1dCArICdcXFwifScsXFxuICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcbiAgICB9KTtcXG4gICAgLy9sb2coanNvbik7XFxuICAgIHZhciBwbGF5ID0gSlNPTi5wYXJzZShqc29uKS5kb3dubG9hZF91cmwgKyAnI2lzTXVzaWM9dHJ1ZSM7e1JlZmVyZXJAaHR0cHM6Ly93d3cuYWxpeXVuZHJpdmUuY29tL30nO1xcbn0gZWxzZSBpZiAoZm5hbWUuZW5kc1dpdGgoJy5zcnQnKSB8fCBmbmFtZS5lbmRzV2l0aCgnLnZ0dCcpIHx8IGZuYW1lLmVuZHNXaXRoKCcuYXNzJykpIHtcXG4gICAgdmFyIGpzb24gPSBmZXRjaCgnaHR0cHM6Ly9hcGkuYWxpeXVuZHJpdmUuY29tL3YyL2ZpbGUvZ2V0X3NoYXJlX2xpbmtfZG93bmxvYWRfdXJsJywge1xcbiAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXFxuICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nOiByZWFjY2Vzc1RrLFxcbiAgICAgICAgICAgICdYLVNoYXJlLVRva2VuJzogc2hhcmV0b2tlblxcbiAgICAgICAgfSxcXG4gICAgICAgIGJvZHk6ICd7XFxcInNoYXJlX2lkXFxcIjpcXFwiJyArIHNoYXJlSWQgKyAnXFxcIixcXFwiZmlsZV9pZFxcXCI6XFxcIicgKyBpbnB1dCArICdcXFwifScsXFxuICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcbiAgICB9KTtcXG4gICAgLy9sb2coanNvbik7XFxuICAgIHZhciB6aW11bCA9IEpTT04ucGFyc2UoanNvbikuZG93bmxvYWRfdXJsO1xcbiAgICBkb3dubG9hZEZpbGUoemltdWwsICdoaWtlcjovL2ZpbGVzL2Rvd25sb2FkL3N1YnRpdGxpbmcnICsgZm5hbWUuc3Vic3RyaW5nKGZuYW1lLmxhc3RJbmRleE9mKFxcXCIuXFxcIikpLCB7XFxuICAgICAgICAnUmVmZXJlcic6ICdodHRwczovL3d3dy5hbGl5dW5kcml2ZS5jb20vJ1xcbiAgICB9KTtcXG4gICAgdmFyIHBsYXkgPSAndG9hc3Q6Ly/lrZfluZXmlofku7blt7LkuIvovb3liLBoaWtlcjovL2ZpbGVzL2Rvd25sb2FkL3N1YnRpdGxpbmcnICsgZm5hbWUuc3Vic3RyaW5nKGZuYW1lLmxhc3RJbmRleE9mKFxcXCIuXFxcIikpXFxuICAgIC8vICsgJzt7UmVmZXJlckBodHRwczovL3d3dy5hbGl5dW5kcml2ZS5jb20vfSc7XFxufSBlbHNlIHtcXG4gICAgdmFyIHBsYXkgPSAndG9hc3Q6Ly/or6XmoLzlvI/mmoLmnKrmlK/mjIHvvIznm67liY3lj6rmlK/mjIHop4bpopHjgIInXFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5o6o6YCB5Luj56CBXCIsXCJwYXRoXCI6XCJwdXNoY29kZVwiLFwicnVsZVwiOlwianM6XFxubGV0IHB1c2ggPSBKU09OLnN0cmluZ2lmeSh7XFxuICAgIFxcXCJuYW1lXFxcIjogcHVzaG5hbWUsXFxuICAgIFxcXCJ1cmxcXFwiOiB0dWlzb25nLmpvaW4oJyMnKSxcXG4gICAgXFxcInNoYXJlX2lkXFxcIjogc2hhcmVJZCxcXG4gICAgXFxcInJlZnJlc2hfdG9rZW5cXFwiOiByZWZ0b2tlblxcbn0pLnJlcGxhY2UoL1xcXFwmL2csICfvvIbvvIYnKTtcXG5pZiAodHVpc29uZy5sZW5ndGggPiAwKSB7XFxuICAgIGl0ZW1zLnVuc2hpZnQoe1xcbiAgICAgICAgdGl0bGU6IFxcXCLwn5O95o6o6YCB5b2T5YmN6aG16Z+z6KeG6aKR8J+TulxcXCIsXFxuICAgICAgICB1cmw6ICQocHVzaCkubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9wYWdlL3B1c2g/cnVsZT1YWVHmjqjpgIEmcHVzaHVybD0nICsgZW5jb2RlVVJJQ29tcG9uZW50KGlucHV0KTtcXG4gICAgICAgIH0pLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJzY3JvbGxfYnV0dG9uXFxcIlxcbiAgICB9KTtcXG4gICAgaXRlbXMudW5zaGlmdCh7XFxuICAgICAgICB0aXRsZTogKGdldEl0ZW0oJ3F1YWxpdHknLCAnJykgPT0gJzEnID8gJ+WOn+eUu+aSreKImicgOiAn6L2s56CB5pKt4oiaJyksXFxuICAgICAgICB1cmw6IGBoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpnZXRJdGVtKCdxdWFsaXR5JywnMCcpPT0nMSc/c2V0SXRlbSgncXVhbGl0eScsJzAnKTpzZXRJdGVtKCdxdWFsaXR5JywnMScpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5YiH5o2i5oiQ5Yqf77yBJ2AsXFxuICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgIH0pO1xcbiAgICBpdGVtcy51bnNoaWZ0KHtcXG4gICAgdGl0bGU6IChnZXRJdGVtKCdzaW5nbGVwdXNoJywgJycpID09ICcxJyA/ICfljZXmjqjiiJonIDogJ+WNleaOqOKVsycpLFxcbiAgICB1cmw6IGBoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpnZXRJdGVtKCdzaW5nbGVwdXNoJywnMCcpPT0nMSc/c2V0SXRlbSgnc2luZ2xlcHVzaCcsJzAnKTpzZXRJdGVtKCdzaW5nbGVwdXNoJywnMScpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5YiH5o2i5oiQ5Yqf77yBJ2AsXFxuICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG59KTtcXG59XFxuXCJ9XSIsImljb24iOiJodHRwczovL3d3dy5hbGlwYW5zb3UuY29tL2Zhdmljb24uaWNvIiwicHJveHkiOiIifQ==
Add Comment
Please, Sign In to add comment