Advertisement
xiaomianao666

邀您一起看:伦理电影 - 在线追剧 - 傻傻网

Jul 17th, 2024
519
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:二级页面详情¥page_detail¥伦理电影 - 在线追剧 - 傻傻网@@eyJkYXRhIjoie1wiYXNzb2NpYXRlZE1vZGVsc01hcEZvckpvaW5UYWJsZVwiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhGS1wiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhvdXRGS1wiOnt9LFwiZmllbGRzVG9TZXRUb0RlZmF1bHRcIjpbXSxcImdtdE1vZGlmaWVkXCI6MCxcImlkXCI6MCxcImxhc3RfY2hhcHRlcl9ydWxlXCI6XCJcIixcImxpc3RUb0NsZWFyQXNzb2NpYXRlZEZLXCI6W10sXCJsaXN0VG9DbGVhclNlbGZGS1wiOltdLFwicGFnZUxpc3RcIjpbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcInlzZnhcIixcInBhdGhcIjpcInlzZnhcIixcInJ1bGVcIjpcImpzOlxcbnZhciBkID0gW107XFxubGV0IHJ1bGUgPSBnZXRQYXJhbShcXFwiclxcXCIpLnNwbGl0KFxcXCIjI1xcXCIpWzBdO1xcbmxldCB1cmwgPSBNWV9VUkwuc3BsaXQoXFxcIiMjXFxcIilbMV07XFxubGV0IGl0ZSA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL3VcXFwiKShydWxlLCBnZXRIb21lKHVybCkpO1xcbmxldCBqcyA9ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICB0cnkge1xcbiAgICAgICAgaWYgKGRvY3VtZW50LnRpdGxlICYmIGRvY3VtZW50LnRpdGxlLmxlbmd0aCkge1xcbiAgICAgICAgICAgIGxldCByID0gJCQkKCkubGF6eVJ1bGUoKHQpID0+IHtcXG4gICAgICAgICAgICAgICAgc2V0UGFnZVRpdGxlKHQpO1xcbiAgICAgICAgICAgIH0sIGRvY3VtZW50LnRpdGxlKTtcXG4gICAgICAgICAgICBmeV9icmlkZ2VfYXBwLnBhcnNlTGF6eVJ1bGUocik7XFxuICAgICAgICB9XFxuICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgIGZ5X2JyaWRnZV9hcHAubG9nKGUudG9TdHJpbmcoKSk7XFxuICAgIH1cXG59KTtcXG5sZXQganMyID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UveDVhaVxcXCIpKHJ1bGUsIHVybCk7XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IFxcXCJcXFwiLFxcbiAgICB1cmw6IHVybCxcXG4gICAgY29sX3R5cGU6IFxcXCJ4NV93ZWJ2aWV3X3NpbmdsZVxcXCIsXFxuICAgIGRlc2M6IFxcXCIxMDAlJiZmbG9hdFxcXCIsXFxuICAgIHBpY191cmw6IFxcXCJcXFwiLFxcbiAgICBleHRyYToge1xcbiAgICAgICAgdXJsSW50ZXJjZXB0b3I6IGl0ZSxcXG4gICAgICAgIGpzOiBqcyArIFxcXCI7XFxcXG5cXFwiICsganMyLFxcbiAgICAgICAgY2FuQmFjazogdHJ1ZSxcXG4gICAgICAgIGpzTG9hZGluZ0luamVjdDogdHJ1ZSxcXG4gICAgICAgIGZsb2F0VmlkZW86IHRydWUsXFxuICAgICAgICBibG9ja1J1bGVzOiBbXFxcIi5naWZcXFwiLCBcXFwiL2FkL1xcXCIsIFxcXCIvYWRzL1xcXCIsIFxcXCJnb29nbGVcXFwiLCBcXFwiL3NoL3RvL1xcXCIsIFxcXCIuR0lGXFxcIl1cXG4gICAgfVxcbn0pO1xcbmQucHVzaCh7XFxuICAgIGNvbF90eXBlOiBcXFwibGluZVxcXCIsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICBpZDogdXJsXFxuICAgIH1cXG59KTtcXG5zZXRSZXN1bHQoZCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCJ1XCIsXCJwYXRoXCI6XCJ1XCIsXCJydWxlXCI6XCIkLmV4cG9ydHMgPSBmdW5jdGlvbihydWxlLCBvcmlnaW4pIHtcXG4gICAgcmV0dXJuICQudG9TdHJpbmcoKHJ1bGUsIG9yaWdpbikgPT4ge1xcbiAgICAgICAgbGV0IGhvc3QgPSBvcmlnaW4ucmVwbGFjZShuZXcgUmVnRXhwKFxcXCJodHRwOi8vfGh0dHBzOi8vXFxcIiksIFxcXCJcXFwiKS5zcGxpdChcXFwiL1xcXCIpWzBdO1xcbiAgICAgICAgbGV0IGhvc3RzID0gaG9zdC5zcGxpdChcXFwiLlxcXCIpO1xcbiAgICAgICAgaWYgKGhvc3RzLmxlbmd0aCA+IDIpIHtcXG4gICAgICAgICAgICBob3N0ID0gaG9zdHNbaG9zdHMubGVuZ3RoIC0gMl0gKyBcXFwiLlxcXCIgKyBob3N0c1tob3N0cy5sZW5ndGggLSAxXTtcXG4gICAgICAgIH1cXG4gICAgICAgIGlmIChpbnB1dC5zdGFydHNXaXRoKFxcXCJtYWduZXRcXFwiKSkge1xcbiAgICAgICAgICAgIGNvbmZpcm0oe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogXFxcIua4qemmqOaPkOekulxcXCIsXFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFxcXCLmo4DmtYvliLDmlrDnmoTno4Hpk77lnLDlnYDvvIzngrnlh7vnoa7lrprmjInpkq7ljbPlj6/mkq3mlL7vvIzngrnlh7vlj5bmtojmjInpkq7lj6/ku6XlpI3liLbpk77mjqVcXFwiLFxcbiAgICAgICAgICAgICAgICBjb25maXJtOiAkLnRvU3RyaW5nKChtYWcpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBtYWc7XFxuICAgICAgICAgICAgICAgIH0sIGlucHV0KSxcXG4gICAgICAgICAgICAgICAgY2FuY2VsOiAkLnRvU3RyaW5nKChtYWcpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiY29weTovL1xcXCIgKyBtYWdcXG4gICAgICAgICAgICAgICAgfSwgaW5wdXQpXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcXG4gICAgICAgIH0gZWxzZSBpZiAoaW5wdXQuaW5jbHVkZXMoXFxcImFsaXl1bmRyaXZlLmNvbVxcXCIpKSB7XFxuICAgICAgICAgICAgbG9nKGlucHV0KTtcXG4gICAgICAgICAgICBsZXQgcjEgPSBmZXRjaChcXFwiaGlrZXI6Ly9ob21lQOS6keebmOaxh+W9sVxcXCIpO1xcbiAgICAgICAgICAgIGlmICghcjEgfHwgcjEubGVuZ3RoIDw9IDUpIHtcXG4gICAgICAgICAgICAgICAgbGV0IHJ1ID0gJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcIua1t+mYlOinhueVjOinhOWImeWIhuS6q++8jOW9k+WJjeWIhuS6q+eahOaYr++8muWwj+eoi+W6j++/pWhvbWVfcnVsZV92Mu+/pWJhc2U2NDovL0DkupHnm5jmsYflvbFAZXlKc1lYTjBYMk5vWVhCMFpYSmZjblZzWlNJNklpSXNJblJwZEd4bElqb2k1THFSNTV1WTVyR0g1YjJ4SWl3aVlYVjBhRzl5SWpvaVRYSkdiSGtpTENKMWNtd2lPaUpvYVd0bGNqb3ZMMlZ0Y0hSNUpDUWtabmx3WVdkbElpd2lkbVZ5YzJsdmJpSTZOaXdpWTI5c1gzUjVjR1VpT2lKMFpYaDBYekVpTENKamJHRnpjMTl1WVcxbElqb2lJaXdpZEhsd1pTSTZJbUZzYkNJc0ltTnNZWE56WDNWeWJDSTZJaUlzSW1GeVpXRmZibUZ0WlNJNklpSXNJbUZ5WldGZmRYSnNJam9pSWl3aWMyOXlkRjl1WVcxbElqb2lJaXdpZVdWaGNsOXVZVzFsSWpvaUlpd2ljMjl5ZEY5MWNtd2lPaUlpTENKNVpXRnlYM1Z5YkNJNklpSXNJbVpwYm1SZmNuVnNaU0k2SW1wek9seHVaWFpoYkNobVpYUmphQ2duYUdsclpYSTZMeTltYVd4bGN5OXlkV3hsY3k5cFkza3ZZV3hwTG1wekp5a3BPMXh1WVd4cExtaHZiV1ZRWVdkbEtDazdJaXdpYzJWaGNtTm9YM1Z5YkNJNkltaHBhMlZ5T2k4dlpXMXdkSGtrSkNRcUtpUWtKR1o1Y0dGblpTUWtKQ0lzSW1keWIzVndJam9pNHBHZzU3MlI1NXVZSWl3aWMyVmhjbU5vUm1sdVpDSTZJbXB6T2x4dVpYWmhiQ2htWlhSamFDZ25hR2xyWlhJNkx5OW1hV3hsY3k5eWRXeGxjeTlwWTNrdllXeHBMbXB6SnlrcE8xeHVZV3hwTG5ObFlYSmphRkJoWjJVb2RISjFaU2s3WEc0aUxDSmtaWFJoYVd4ZlkyOXNYM1I1Y0dVaU9pSnRiM1pwWlY4eElpd2laR1YwWVdsc1gyWnBibVJmY25Wc1pTSTZJbXB6T2x4dVpYWmhiQ2htWlhSamFDZ25hR2xyWlhJNkx5OW1hV3hsY3k5eWRXeGxjeTlwWTNrdllXeHBMbXB6SnlrcE8xeHVZV3hwTG1SbGRHRnBiRkJoWjJVb0tUc2lMQ0p6WkdWMFlXbHNYMk52YkY5MGVYQmxJam9pYlc5MmFXVmZNU0lzSW5Oa1pYUmhhV3hmWm1sdVpGOXlkV3hsSWpvaUlpd2lkV0VpT2lKdGIySnBiR1VpTENKd2NtVlNkV3hsSWpvaWRtRnlJR0ZzYVdweklEMGdabVYwWTJoRFlXTm9aU2duYUhSMGNITTZMeTluYVhSbFpTNWpiMjB2Wm14NU1UTTVOeTlvYVd0bGNpMXBZM2t2Y21GM0wyMWhjM1JsY2k5aGJHa3Vhbk1uS1R0Y2JtbG1JQ2doWVd4cGFuTWdmSHdnSVdGc2FXcHpMbWx1WTJ4MVpHVnpLQ2RoYkdrdUp5a3BJSHRjYmlBZ0lDQmhiR2xxY3lBOUlHWmxkR05vUTJGamFHVW9KMmgwZEhCek9pOHZZMlJ1TG1welpHVnNhWFp5TG01bGRDOW5hQzltYkhreE16azNMMmhwYTJWeUxXbGplUzloYkdrdWFuTW5LVnh1ZlZ4dWFXWWdLQ0ZoYkdscWN5QjhmQ0FoWVd4cGFuTXVhVzVqYkhWa1pYTW9KMkZzYVM0bktTa2dlMXh1SUNBZ0lHRnNhV3B6SUQwZ1ptVjBZMmhEWVdOb1pTZ25hSFIwY0RvdkwyeG1hV041TG1OdmJUb3pNREF3TUM5dGNtWnNlUzlvYVd0bGNpMXBZM2t2Y21GM0wyMWhjM1JsY2k5aGJHa3Vhbk1uS1Z4dWZWeHVhV1lnS0dGc2FXcHpLU0I3WEc0Z0lDQWdkM0pwZEdWR2FXeGxLRndpYUdsclpYSTZMeTltYVd4bGN5OXlkV3hsY3k5cFkza3ZZV3hwTG1welhDSXNJR0ZzYVdwektUdGNiaUFnSUNCbGRtRnNLR0ZzYVdwektUdGNiaUFnSUNCaGJHa3VjSEpsVW5Wc1pTZ3BPMXh1ZlNJc0luQmhaMlZ6SWpvaVczdGNJbU52YkY5MGVYQmxYQ0k2WENKdGIzWnBaVjh6WENJc1hDSnVZVzFsWENJNlhDTG52WkhubTVqb3I2Ym1nNFZjSWl4Y0luQmhkR2hjSWpwY0ltUmxkR0ZwYkZ3aUxGd2ljblZzWlZ3aU9sd2lhbk02WEZ4dVpYWmhiQ2htWlhSamFDZ25hR2xyWlhJNkx5OW1hV3hsY3k5eWRXeGxjeTlwWTNrdllXeHBMbXB6SnlrcE8xeGNibUZzYVM1cGJtbDBRMjl1Wm1sbktDazdYRnh1WVd4cExtRnNhVkoxYkdVb0tUdGNJbjBzZTF3aVkyOXNYM1I1Y0dWY0lqcGNJbTF2ZG1sbFh6RmZiR1ZtZEY5d2FXTmNJaXhjSW01aGJXVmNJanBjSXVpMWhPYTZrT2U5a2VtaHRlaXZwdWFEaFZ3aUxGd2ljR0YwYUZ3aU9sd2ljMmwwWlMxa1pYUmhhV3hjSWl4Y0luSjFiR1ZjSWpwY0ltcHpPbHhjYm1WMllXd29abVYwWTJnb0oyaHBhMlZ5T2k4dlptbHNaWE12Y25Wc1pYTXZhV041TDJGc2FTNXFjeWNwS1R0Y1hHNWhiR2t1WkdWMFlXbHNVR0ZuWlNncE8xd2lmU3g3WENKamIyeGZkSGx3WlZ3aU9sd2liVzkyYVdWZk0xd2lMRndpYm1GdFpWd2lPbHdpNUxpcTVMcTY1NzJSNTV1WTZLK201b09GWENJc1hDSndZWFJvWENJNlhDSmtjbWwyWlZ3aUxGd2ljblZzWlZ3aU9sd2lhbk02WEZ4dVpYWmhiQ2htWlhSamFDZ25hR2xyWlhJNkx5OW1hV3hsY3k5eWRXeGxjeTlwWTNrdllXeHBMbXB6SnlrcE8xeGNibUZzYVM1cGJtbDBRMjl1Wm1sbktDazdYRnh1WVd4cExtMTVRV3hwVW5Wc1pTZ3BPMXdpZlYwaUxDSnBZMjl1SWpvaWFIUjBjSE02THk5bmFYUmxaUzVqYjIwdlpteDVNVE01Tnk5b2FXdGxjaTFwWTNrdmNtRjNMMjFoYzNSbGNpOWhiR2w1ZFc0dWNHNW5JaXdpY0hKdmVIa2lPaUlpZlE9PVxcXCJcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIGNvbmZpcm0oe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfmuKnppqjmj5DnpLonLFxcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogJ+acrOinhOWImeS+nei1luS6keebmOaxh+W9seinhOWIme+8jOeCueWHu+S4i+mdoueahOehruWumuaMiemSruWvvOWFpe+8jOazqOaEj+WvvOWFpeWQjuS4gOWumuimgeWcqOS6keebmOaxh+W9seeZu+W9lemYv+mHjOS6keebmOi0puWPt++8jOWQpuWImeS4jeiDveeUqCcsXFxuICAgICAgICAgICAgICAgICAgICBjb25maXJtOiBydSxcXG4gICAgICAgICAgICAgICAgICAgIGNhbmNlbDogcnVcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgbG9nKFxcXCJpbnB1dFxcXCIpO1xcbiAgICAgICAgICAgIHJldHVybiAkLnRvU3RyaW5nKCh1cmwsIHJ1bGUpID0+IHtcXG4gICAgICAgICAgICAgICAgZnlfYnJpZGdlX2FwcC5vcGVuKEpTT04uc3RyaW5naWZ5KHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi6Zi/6YeM5LqR55uYXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vcGFnZS9kZXRhaWw/cnVsZT3kupHnm5jmsYflvbEmdXJsPVxcXCIgKyB1cmwgKyAnPz9meXBhZ2UnLFxcbiAgICAgICAgICAgICAgICB9KSlcXG4gICAgICAgICAgICB9LCBpbnB1dCwgcnVsZSlcXG4gICAgICAgIH0gZWxzZSBpZiAoL1xcXFwuKG1wM3xmbGFjfG00YSkkLy50ZXN0KGlucHV0KSkge1xcbiAgICAgICAgICAgIGxvZyhpbnB1dCk7XFxuICAgICAgICAgICAgcmV0dXJuICQudG9TdHJpbmcoKHVybCwgcnVsZSkgPT4ge1xcbiAgICAgICAgICAgICAgICBmeV9icmlkZ2VfYXBwLnBsYXlWaWRlbyh1cmwpO1xcbiAgICAgICAgICAgIH0sIGlucHV0LCBydWxlKVxcbiAgICAgICAgfSBlbHNlIGlmICghaW5wdXQuaW5jbHVkZXMoaG9zdCkgJiYgaW5wdXQuc3RhcnRzV2l0aChcXFwiaHR0cFxcXCIpKSB7XFxuICAgICAgICAgICAgbG9nKGlucHV0KTtcXG4gICAgICAgICAgICByZXR1cm4gJC50b1N0cmluZygodXJsLCBydWxlKSA9PiB7XFxuICAgICAgICAgICAgICAgIGxldCB3aGl0ZSA9IFtcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJkb3V5aW5cXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgXFxcImRvdWJhblxcXCIsXFxuICAgICAgICAgICAgICAgICAgICBcXFwiaXhpZ3VhLmNvbVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICBcXFwia3VhaXNob3VcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgXFxcImJpbGliaWxpXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJ3ZWlib1xcXCIsXFxuICAgICAgICAgICAgICAgICAgICBcXFwid2VpeGluXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJiYWlkdVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICBcXFwiem1rLlxcXCIsXFxuICAgICAgICAgICAgICAgICAgICBcXFwic3ViaGRcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgXFxcInRodW5kZXJcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgXFxcInhpbmp1Y1xcXCIsXFxuICAgICAgICAgICAgICAgICAgICBcXFwiZ3JhYjRrXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIFxcXCIvYnRcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgXFxcImpzcjEwXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJhc3NydFxcXCIsXFxuICAgICAgICAgICAgICAgICAgICBcXFwicXVhcmtcXFwiXFxuICAgICAgICAgICAgICAgIF07XFxuICAgICAgICAgICAgICAgIGxldCBpbldoaXRlID0gd2hpdGUuZmlsdGVyKGl0ID0+IHVybC5pbmNsdWRlcyhpdCkpLmxlbmd0aCA+IDA7XFxuICAgICAgICAgICAgICAgIGlmIChpbldoaXRlKSB7XFxuICAgICAgICAgICAgICAgICAgICAvL+i3s+e9kemhtVxcbiAgICAgICAgICAgICAgICAgICAgZnlfYnJpZGdlX2FwcC5vcGVuKEpTT04uc3RyaW5naWZ5KHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogXFxcIuivpuaDhVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL3lzZng/cnVsZT1cXFwiICsgcnVsZSArIFxcXCImcj1cXFwiICsgcnVsZSArIFxcXCIjI1xcXCIgKyB1cmwsXFxuICAgICAgICAgICAgICAgICAgICB9KSlcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgIC8vQUnop6PmnpBcXG4gICAgICAgICAgICAgICAgICAgIGZ5X2JyaWRnZV9hcHAub3BlbihKU09OLnN0cmluZ2lmeSh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGRvY3VtZW50LnRpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vcGFnZS9wP3J1bGU9XFxcIiArIHJ1bGUgKyBcXFwiJnI9XFxcIiArIHJ1bGUgKyBcXFwiJnU9XFxcIiArIGZ5X2JyaWRnZV9hcHAuYmFzZTY0RW5jb2RlKHVybCksXFxuICAgICAgICAgICAgICAgICAgICB9KSlcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0sIGlucHV0LCBydWxlKTtcXG4gICAgICAgIH0gZWxzZSBpZiAoIWlucHV0LnN0YXJ0c1dpdGgoXFxcImh0dHBcXFwiKSkge1xcbiAgICAgICAgICAgIGxvZyhpbnB1dCk7XFxuICAgICAgICAgICAgLy/og73llKTotbdBUFDnmoTnmb3lkI3ljZVcXG4gICAgICAgICAgICBsZXQgd2hpdGUgPSBbXFxuICAgICAgICAgICAgICAgIFxcXCJxa2xpbmtcXFwiLFxcbiAgICAgICAgICAgICAgICBcXFwiYmRuZXRkaXNrXFxcIixcXG4gICAgICAgICAgICAgICAgXFxcInh1bmxlaWFwcFxcXCJcXG4gICAgICAgICAgICBdO1xcbiAgICAgICAgICAgIGxldCBpbldoaXRlID0gd2hpdGUuZmlsdGVyKGl0ID0+IGlucHV0LnN0YXJ0c1dpdGgoaXQpKS5sZW5ndGggPiAwO1xcbiAgICAgICAgICAgIGlmICghaW5XaGl0ZSkge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIHJldHVybiAkLnRvU3RyaW5nKCh1cmwsIHJ1bGUpID0+IHtcXG4gICAgICAgICAgICAgICAgZnlfYnJpZGdlX2FwcC5vcGVuVGhpcmRBcHAgJiYgZnlfYnJpZGdlX2FwcC5vcGVuVGhpcmRBcHAodXJsKTtcXG4gICAgICAgICAgICB9LCBpbnB1dCwgcnVsZSlcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgbGV0IHdoaXRlID0gW1xcbiAgICAgICAgICAgICAgICBcXFwidXJsPVxcXCIsXFxuICAgICAgICAgICAgICAgIFxcXCJmc291LmNvbVxcXCIsXFxuICAgICAgICAgICAgICAgIFxcXCJiaW5nLlxcXCIsICAgICAgICAgICAgICAgIFxcbiAgICAgICAgICAgIF07XFxuICAgICAgICAgICAgbGV0IGluV2hpdGUgPSB3aGl0ZS5maWx0ZXIoaXQgPT4gaW5wdXQuaW5jbHVkZXMoaXQpKS5sZW5ndGggPiAwO1xcbiAgICAgICAgICAgIGlmIChpbldoaXRlKSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgbGV0IHJlZyA9IG5ldyBSZWdFeHAoXFxcIltcXFxcdTRlMDAtXFxcXHU5ZmE1XStcXFwiLCBcXFwiZ1xcXCIpO1xcbiAgICAgICAgICAgIGxldCByID0gZGVjb2RlVVJJQ29tcG9uZW50KGlucHV0KTtcXG4gICAgICAgICAgICBpZiAocmVnLnRlc3QocikgfHwgKGlucHV0LnN0YXJ0c1dpdGgob3JpZ2luKSAmJiBpbnB1dC5sZW5ndGggLSBvcmlnaW4ubGVuZ3RoID4gMikpIHtcXG4gICAgICAgICAgICAgICAgLy/mnInkuK3mlofvvIzlupTor6XmmK/lnKjmkJzntKLvvIzot7PmlrDpobXpnaJcXG4gICAgICAgICAgICAgICAgcmV0dXJuICQudG9TdHJpbmcoKHVybCwgcnVsZSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgZnlfYnJpZGdlX2FwcC5vcGVuKEpTT04uc3RyaW5naWZ5KHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogXFxcIuivpuaDhVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL3lzZng/cnVsZT1cXFwiICsgcnVsZSArIFxcXCImcj1cXFwiICsgcnVsZSArIFxcXCIjI1xcXCIgKyB1cmwsXFxuICAgICAgICAgICAgICAgICAgICB9KSk7XFxuICAgICAgICAgICAgICAgIH0sIGlucHV0LCBydWxlKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgIH0sIHJ1bGUsIG9yaWdpbik7XFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5LqM57qn6Kej5p6QXCIsXCJwYXRoXCI6XCJwXCIsXCJydWxlXCI6XCJqczpcXG52YXIgZCA9IFtdO1xcbmxldCB1cmwgPSBiYXNlNjREZWNvZGUoZ2V0UGFyYW0oXFxcInVcXFwiKSk7XFxubGV0IGxpc3QgPSBzdG9yYWdlMC5nZXRJdGVtKFxcXCJ3aGl0ZVxcXCIsIFtdKTtcXG5sZXQgaW5XaGl0ZSA9IGxpc3QuaW5jbHVkZXModXJsKTtcXG5sZXQgZCA9IFtdO1xcbmlmICghaW5XaGl0ZSkge1xcbiAgICBsZXQgaHRtbCA9IHJlcXVlc3QodXJsKTtcXG4gICAgbGV0IHdlYiA9IGdldEl0ZW0oJ3dlYicsICcwJykgPT0gXFxcIjFcXFwiO1xcbiAgICBsZXQgcnVsZSA9IGdldFBhcmFtKFxcXCJyXFxcIik7XFxuICAgIGxldCBwYXJzZSA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL3BhcnNlXFxcIik7XFxuICAgIGQgPSBwYXJzZShydWxlLCB3ZWIsIHVybCwgaHRtbCk7XFxufVxcbmlmIChkLmxlbmd0aCA9PSAwKSB7XFxuICAgIC8v5Yy56YWN5aSx6LSlXFxuICAgIGxldCBpdGUgPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS91XFxcIikoZ2V0UGFyYW0oXFxcInJcXFwiKSwgZ2V0SG9tZSh1cmwpKTtcXG4gICAgbGV0IGpzID0gJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICB0cnkge1xcbiAgICAgICAgICAgIGlmIChkb2N1bWVudC50aXRsZSAmJiBkb2N1bWVudC50aXRsZS5sZW5ndGgpIHtcXG4gICAgICAgICAgICAgICAgbGV0IHIgPSAkJCQoKS5sYXp5UnVsZSgodCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgc2V0UGFnZVRpdGxlKHQpO1xcbiAgICAgICAgICAgICAgICB9LCBkb2N1bWVudC50aXRsZSk7XFxuICAgICAgICAgICAgICAgIGZ5X2JyaWRnZV9hcHAucGFyc2VMYXp5UnVsZShyKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICAgICAgZnlfYnJpZGdlX2FwcC5sb2coZS50b1N0cmluZygpKTtcXG4gICAgICAgIH1cXG4gICAgfSk7XFxuICAgIGxldCBqczIgPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS94NWFpXFxcIikoZ2V0UGFyYW0oXFxcInJcXFwiKSwgdXJsKTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwiXFxcIixcXG4gICAgICAgIHVybDogdXJsLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJ4NV93ZWJ2aWV3X3NpbmdsZVxcXCIsXFxuICAgICAgICBkZXNjOiBcXFwiZmxvYXQmJjEwMCVcXFwiLFxcbiAgICAgICAgcGljX3VybDogXFxcIlxcXCIsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIGpzOiBqcyArIFxcXCI7XFxcXG5cXFwiICsganMyLFxcbiAgICAgICAgICAgIHVybEludGVyY2VwdG9yOiBpdGUsXFxuICAgICAgICAgICAgY2FuQmFjazogdHJ1ZSxcXG4gICAgICAgICAgICBmbG9hdFZpZGVvOiB0cnVlLFxcbiAgICAgICAgICAgIGpzTG9hZGluZ0luamVjdDogdHJ1ZSxcXG4gICAgICAgICAgICBibG9ja1J1bGVzOiBbXFxcIi5naWZcXFwiLCBcXFwiL2FkL1xcXCIsIFxcXCIvYWRzL1xcXCIsIFxcXCJnb29nbGVcXFwiLCBcXFwiL3NoL3RvL1xcXCIsIFxcXCIuR0lGXFxcIl1cXG4gICAgICAgIH1cXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICBjb2xfdHlwZTogXFxcImxpbmVcXFwiLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBpZDogdXJsXFxuICAgICAgICB9XFxuICAgIH0pO1xcbiAgICBpZiAoIWluV2hpdGUpIHtcXG4gICAgICAgIHRvYXN0KFxcXCJBSeWMuemFjeWksei0pe+8jOW3suS9v+eUqFg15Yqg6L29XFxcIik7XFxuICAgIH1cXG4gICAgc2V0UmVzdWx0KGQpO1xcbn0gZWxzZSB7XFxuICAgIHNldFJlc3VsdChkKTtcXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuoznuqdwYXJzZVwiLFwicGF0aFwiOlwicGFyc2VcIixcInJ1bGVcIjpcIiQuZXhwb3J0cyA9IGZ1bmN0aW9uKHJ1bGUsIHdlYiwgdXJsLCBodG1sKSB7XFxuICAgIGxldCBkID0gW107XFxuXFxuICAgIGxldCBhbGlzdCA9IHBkZmEoaHRtbCwgXFxcImJvZHkmJmFcXFwiKTtcXG4gICAgbGV0IGFyciA9IGFsaXN0Lm1hcChpdCA9PiB7XFxuICAgICAgICByZXR1cm4ge1xcbiAgICAgICAgICAgIC8vaHRtbDogaXQsXFxuICAgICAgICAgICAgdGV4dDogcGRmaChpdCwgXFxcImEmJlRleHRcXFwiKSxcXG4gICAgICAgICAgICB0aXRsZTogcGRmaChpdCwgXFxcImEmJnRpdGxlXFxcIiksXFxuICAgICAgICAgICAgaHJlZjogcGQoaXQsIFxcXCJhJiZocmVmXFxcIiwgdXJsKVxcbiAgICAgICAgfVxcbiAgICB9KTtcXG4gICAgLy9sb2coYXJyKTtcXG4gICAgbGV0IGRlYnVnID0gZmFsc2U7XFxuXFxuICAgIGZ1bmN0aW9uIGNsZWFyVGV4dChpdCkge1xcbiAgICAgICAgcmV0dXJuIGl0LnJlcGxhY2UoL+esrHzpm4Z856ugfOivnS9nLCBcXFwiXFxcIik7XFxuICAgIH1cXG5cXG4gICAgZnVuY3Rpb24gaXNNb3ZpZShpdCkge1xcbiAgICAgICAgaWYgKGl0ID09IG51bGwgfHwgaXQudGV4dCA9PSBudWxsKSB7XFxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xcbiAgICAgICAgfVxcbiAgICAgICAgbGV0IHRpdCA9IGl0LnRpdGxlIHx8IFxcXCJcXFwiO1xcbiAgICAgICAgaXQgPSBpdC50ZXh0IHx8IFxcXCJcXFwiO1xcbiAgICAgICAgaWYgKGl0ID09IFxcXCJcXFwiIHx8IGl0Lmxlbmd0aCA+IDgpIHtcXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XFxuICAgICAgICB9XFxuICAgICAgICAvL+aOkumZpFxcbiAgICAgICAgbGV0IHJlZyA9IC9cXFxcLnzpq5jmuIXnm7Tmkq185YaZ55yf5o6o6I2QfOW9semZonzlvbHop4Z86JOd5YWJ55S15b2xfOmrmOa4heeUteW9sXznrKzkuIDlraN856ys5LqM5a2jfOesrOS4ieWto3znrKzlm5vlraN856ys5LqU5a2jLztcXG4gICAgICAgIGlmICh0aXQgIT0gXFxcIlxcXCIgJiYgIXRpdC5pbmNsdWRlcyhpdCkgfHwgcmVnLnRlc3QoaXQpKSB7XFxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIGl0Lm1hdGNoKC/ljp/nlLt85aSH55SofOiTneWFiXzotoXmuIV86auY5riFfOato+eJh3zpn6nniYh8NEt8NGt8MTA4MFB8NzIwUHxUQ3xIRHxCRC8pXFxuICAgIH1cXG5cXG4gICAgZnVuY3Rpb24gbm90Q2hhcHRlcihpdCkge1xcbiAgICAgICAgaWYgKGl0ID09IG51bGwgfHwgaXQudGV4dCA9PSBudWxsKSB7XFxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XFxuICAgICAgICB9XFxuICAgICAgICByZXR1cm4gaXQudGV4dC5tYXRjaCgvWzAtOV1cXFxcLlswLTld5YiGLyk7XFxuICAgIH1cXG5cXG4gICAgZnVuY3Rpb24gaXNDaGFwdGVyKGl0LCBwcmUsIG5leHQpIHtcXG4gICAgICAgIGlmIChub3RDaGFwdGVyKGl0KSkge1xcbiAgICAgICAgICAgIC8v5LyY5YWI5o6S6ZmkXFxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xcbiAgICAgICAgfVxcbiAgICAgICAgLy/liKTmlq3mmK/kuI3mmK/nlLXlvbFcXG4gICAgICAgIGlmIChpc01vdmllKGl0KSkge1xcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIGlzQ2hhcHRlcjAoaXQsIHByZSkgfHwgaXNDaGFwdGVyMChpdCwgbmV4dCk7XFxuICAgIH1cXG5cXG4gICAgZnVuY3Rpb24gZ2V0Q2hhcHRlck51bShpdCkge1xcbiAgICAgICAgaWYgKGl0ID09IG51bGwgfHwgaXQudGV4dCA9PSBudWxsKSB7XFxuICAgICAgICAgICAgcmV0dXJuIC0xO1xcbiAgICAgICAgfVxcbiAgICAgICAgaXQgPSBpdC50ZXh0IHx8IFxcXCJcXFwiO1xcbiAgICAgICAgaWYgKGl0ID09IFxcXCJcXFwiKSB7XFxuICAgICAgICAgICAgcmV0dXJuIC0xO1xcbiAgICAgICAgfVxcbiAgICAgICAgaXQgPSBjbGVhclRleHQoaXQpO1xcbiAgICAgICAgbGV0IHJlZyA9IC9eWzAtOV0qJC87XFxuICAgICAgICBpZiAoIXJlZy50ZXN0KGl0KSkge1xcbiAgICAgICAgICAgIHJldHVybiAtMTtcXG4gICAgICAgIH1cXG4gICAgICAgIGl0ID0gcGFyc2VJbnQoaXQpO1xcbiAgICAgICAgaWYgKGlzTmFOKGl0KSkge1xcbiAgICAgICAgICAgIHJldHVybiAtMTtcXG4gICAgICAgIH1cXG4gICAgICAgIGlmIChpdCA+IDE5MDAgJiYgaXQgPCAyMTAwKSB7XFxuICAgICAgICAgICAgcmV0dXJuIC0xO1xcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIGl0O1xcbiAgICB9XFxuXFxuICAgIGZ1bmN0aW9uIGlzQ2hhcHRlcjAoaXQsIGJyb3RoZXIpIHtcXG4gICAgICAgIC8qaWYgKGRlYnVnKSB7XFxuICAgICAgICAgICAgbG9nKHtcXG4gICAgICAgICAgICAgICAgaXQ6IGl0LFxcbiAgICAgICAgICAgICAgICBicm90aGVyOiBicm90aGVyXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9Ki9cXG4gICAgICAgIGl0ID0gZ2V0Q2hhcHRlck51bShpdCk7XFxuICAgICAgICAvL2lmIChkZWJ1ZykgbG9nKGl0KTtcXG4gICAgICAgIGlmIChpdCA8IDApIHtcXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XFxuICAgICAgICB9XFxuICAgICAgICBicm90aGVyID0gZ2V0Q2hhcHRlck51bShicm90aGVyKTtcXG4gICAgICAgIC8vaWYgKGRlYnVnKSBsb2coYnJvdGhlcik7XFxuICAgICAgICBpZiAoYnJvdGhlciA8IDApIHtcXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XFxuICAgICAgICB9XFxuICAgICAgICByZXR1cm4gaXQgLSBicm90aGVyIDwgMiAmJiBpdCAtIGJyb3RoZXIgPiAtMjtcXG4gICAgfVxcblxcbiAgICBsZXQgX3dlYiA9ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgbGV0IHVybHMgPSBfZ2V0VXJscygpO1xcbiAgICAgICAgbGV0IHJlZyA9IC9cXFxcLmh0bWx8XFxcXC5jc3N8XFxcXC5qcy87XFxuICAgICAgICBmb3IgKGxldCBrIGluIHVybHMpIHtcXG4gICAgICAgICAgICBpZiAoIXJlZy50ZXN0KHVybHNba10pICYmIHVybHNba10ubWF0Y2goL1xcXFwubXA0fFxcXFwubTN1OC8pKSB7XFxuICAgICAgICAgICAgICAgIGZ5X2JyaWRnZV9hcHAubG9nKHVybHNba10pO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gZnlfYnJpZGdlX2FwcC5nZXRIZWFkZXJVcmwodXJsc1trXS5yZXBsYWNlKC8uKj91cmw9LywgXFxcIlxcXCIpKSArIFxcXCIjaWdub3JlSW1nPXRydWUjXFxcIjtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgIH0pO1xcblxcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgbGV0IGl0ID0gYXJyW2ldO1xcbiAgICAgICAgbGV0IHQgPSBpdC50ZXh0O1xcbiAgICAgICAgaWYgKCFpdC5ocmVmIHx8IGl0LmhyZWYgPT0gXFxcIlxcXCIpIHtcXG4gICAgICAgICAgICBjb250aW51ZTtcXG4gICAgICAgIH1cXG4gICAgICAgIGxldCBwcmUgPSBpID09IDAgPyBudWxsIDogYXJyW2kgLSAxXTtcXG4gICAgICAgIGxldCBuZXh0ID0gaSA9PSAoYXJyLmxlbmd0aCAtIDEpID8gbnVsbCA6IGFycltpICsgMV07XFxuICAgICAgICBpZiAoaXNDaGFwdGVyKGl0LCBwcmUsIG5leHQpKSB7XFxuICAgICAgICAgICAgaWYgKHdlYikge1xcbiAgICAgICAgICAgICAgICB2YXIgdXJseCA9IFxcXCJ3ZWJSdWxlOi8vXFxcIiArIGl0LmhyZWYgKyBcXFwiQFxcXCIgKyBfd2ViO1xcbiAgICAgICAgICAgICAgICB2YXIgZXh0cmF4ID0ge1xcbiAgICAgICAgICAgICAgICAgICAganNMb2FkaW5nSW5qZWN0OiB0cnVlLFxcbiAgICAgICAgICAgICAgICAgICAgaWQ6IGl0LmhyZWYsXFxuICAgICAgICAgICAgICAgICAgICBibG9ja1J1bGVzOiBbJy5tNGEnLCAnLm1wMycsICcuZmx2JywgJy5hdmknLCAnLjNncCcsICcubXBlZycsICcud212JywgJy5tb3YnLCAnLnJtdmInLCAnLmdpZicsICcuanBlZycsICcucG5nJywgJy5pY28nLCAnLnN2ZyddXFxuICAgICAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgdmFyIHVybHggPSBcXFwidmlkZW86Ly9cXFwiICsgaXQuaHJlZjtcXG4gICAgICAgICAgICAgICAgdmFyIGV4dHJheCA9IHtcXG4gICAgICAgICAgICAgICAgICAgIGlkOiBpdC5ocmVmXFxuICAgICAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0LFxcbiAgICAgICAgICAgICAgICB1cmw6IHVybHgsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF8zXFxcIixcXG4gICAgICAgICAgICAgICAgZXh0cmE6IGV4dHJheFxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICB9XFxuICAgIGlmIChkLmxlbmd0aCA9PSAwKSB7XFxuICAgICAgICByZXR1cm4gZDtcXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIGQuc3BsaWNlKDAsIDAsIHtcXG4gICAgICAgICAgICB0aXRsZTogXFxcIuKAnOKAnOKAneKAnTxzbWFsbD48Zm9udCBjb2xvcj0nI2FhYWFhYSc+8J+Ul1xcXCIgKyB1cmwgKyBcXFwiPC9mb250Pjwvc21hbGw+XFxcIixcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL3BhZ2UveXNmeD9ydWxlPVxcXCIgKyBydWxlICsgXFxcIiZyPVxcXCIgKyBydWxlICsgXFxcIiMjXFxcIiArIHVybCxcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfMVxcXCIsXFxuICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgbGluZVZpc2libGU6IGZhbHNlXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSk7XFxuICAgICAgICAvL+S4uue6v+i3r+WKoOWIhuWJsue6v1xcbiAgICAgICAgbGV0IGQyID0gW107XFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGQubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICBkMi5wdXNoKGRbaV0pO1xcbiAgICAgICAgICAgIGlmIChpIDwgZC5sZW5ndGggLSAxKSB7XFxuICAgICAgICAgICAgICAgIGxldCBpdCA9IGRbaV07XFxuICAgICAgICAgICAgICAgIGxldCB0MSA9IHBhcnNlSW50KGNsZWFyVGV4dChpdC50aXRsZSkpO1xcbiAgICAgICAgICAgICAgICBsZXQgbmV4dCA9IGRbaSArIDFdO1xcbiAgICAgICAgICAgICAgICBsZXQgdDIgPSBwYXJzZUludChjbGVhclRleHQobmV4dC50aXRsZSkpO1xcbiAgICAgICAgICAgICAgICBpZiAodDIgLSB0MSA+IDEgfHwgdDEgLSB0MiA+IDEpIHtcXG4gICAgICAgICAgICAgICAgICAgIGQyLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiYmlnX2JsYW5rX2Jsb2NrXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICBkMi5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImxpbmVfYmxhbmtcXFwiXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIGQyLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiYmlnX2JsYW5rX2Jsb2NrXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9XFxuICAgICAgICB9ICAgICAgIFxcbiAgICAgICAgZDIucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IFxcXCI8c21hbGw+PGZvbnQgY29sb3I9JyNhYWFhYWEnPuWMuemFjeacieivr++8n+eCueaIkeS4jeWGjeWMuemFjeatpOmhtemdojwvZm9udD48L3NtYWxsPlxcXCIsXFxuICAgICAgICAgICAgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKCh1cmwpID0+IHtcXG4gICAgICAgICAgICAgICAgY29uZmlybSh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogXFxcIua4qemmqOaPkOekulxcXCIsXFxuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBcXFwi5aaC5p6c5Y+q5piv5Y2V5qyh5Yy56YWN5aSx6LSl77yM54K55Ye75LiL5pa55Y+W5raI5oyJ6ZKu5Yi35paw6aG16Z2i6YeN5paw5Yy56YWN77yM5aaC5p6c56Gu6K6k5peg5rOV5Yy56YWN77yM54K55Ye75LiL5pa556Gu5a6a5oyJ6ZKu5Yqg5YWl55m95ZCN5Y2VXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIGNhbmNlbDogXFxcInJlZnJlc2hQYWdlKClcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlybTogJC50b1N0cmluZygodXJsKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxpc3QgPSBzdG9yYWdlMC5nZXRJdGVtKFxcXCJ3aGl0ZVxcXCIsIFtdKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsaXN0LnB1c2godXJsKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBzdG9yYWdlMC5zZXRJdGVtKFxcXCJ3aGl0ZVxcXCIsIGxpc3QpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+W3suWKoOWFpeeZveWQjeWNlVxcXCJcXG4gICAgICAgICAgICAgICAgICAgIH0sIHVybClcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgICAgICAgICB9LCB1cmwpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiYXZhdGFyXFxcIixcXG4gICAgICAgICAgICBpbWc6IFxcXCJoaWtlcjovL2ltYWdlcy9hY2NvdW50XFxcIlxcbiAgICAgICAgfSk7XFxuICAgICAgICByZXR1cm4gZDI7XFxuICAgIH1cXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCJ4NUFJXCIsXCJwYXRoXCI6XCJ4NWFpXCIsXCJydWxlXCI6XCIkLmV4cG9ydHMgPSBmdW5jdGlvbihydWxlLCBhbmNob3JJZCkge1xcbiAgICByZXR1cm4gJC50b1N0cmluZygocnVsZSwgYW5jaG9ySWQsIHdoaXRlKSA9PiB7XFxuICAgICAgICBpZiAod2luZG93LmNoZWNrMCA9PSBudWxsKSB7XFxuICAgICAgICAgICAgZnVuY3Rpb24gY2hlY2swKCkge1xcbiAgICAgICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IHUxID0gbG9jYXRpb24uaHJlZi5yZXBsYWNlKFxcXCJodHRwczovL1xcXCIsIFxcXCJcXFwiKS5yZXBsYWNlKFxcXCJodHRwOi8vXFxcIiwgXFxcIlxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IHUyID0gdTEuc3BsaXQoXFxcIi9cXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIGxldCBpc0hvbWUgPSB1Mi5sZW5ndGggPCAyIHx8ICh1Mi5sZW5ndGggPT0gMiAmJiB1MlsxXSA9PSBcXFwiXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgaCA9IGxvY2F0aW9uLmhhc2g7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoaCAhPSBudWxsICYmIGggIT0gXFxcIlxcXCIgJiYgaCAhPSBcXFwiIy9cXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNIb21lID0gZmFsc2U7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNIb21lKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCh3aW5kb3cuY2hlY2swLCAyNTApO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVyblxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgbGV0IGh0bWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxcXCJodG1sXFxcIikuaW5uZXJIVE1MO1xcbiAgICAgICAgICAgICAgICAgICAgZmJhLnB1dFZhcihcXFwiaHRtbDBcXFwiLCBodG1sKTtcXG4gICAgICAgICAgICAgICAgICAgIGZiYS5wYXJzZUxhenlSdWxlQXN5bmMoJCQkKCkubGF6eVJ1bGUoKHJ1bGUsIHVybCwgYW5jaG9ySWQsIHdoaXRlKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGQgPSBbXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGh0bWwgPSBnZXRWYXIoXFxcImh0bWwwXFxcIiwgXFxcIlxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhclZhcihcXFwiaHRtbDBcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHdlYiA9IGZhbHNlO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgd2hpdGUyID0gW1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcImZzb3UuY29tXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJiaW5nLlxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwYXJzZSA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL3BhcnNlP3J1bGU9XFxcIiArIHJ1bGUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW5XaGl0ZSA9IHdoaXRlMi5maWx0ZXIoaXQgPT4gdXJsLmluY2x1ZGVzKGl0KSkubGVuZ3RoID4gMDtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpbldoaXRlICYmICF3aGl0ZS5pbmNsdWRlcyh1cmwpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gcGFyc2UocnVsZSwgd2ViLCB1cmwsIGh0bWwpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaW5XaGl0ZSAmJiBkLmxlbmd0aCA8IDEpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGFyciA9IHBkZmEoaHRtbCwgXFxcImJvZHkmJmlmcmFtZVxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhcnIubGVuZ3RoID4gMCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgc3JjID0gcGRmaChhcnJbMF0sIFxcXCJpZnJhbWUmJnNyY1xcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2coXFxcIuiOt+WPluWIsGlmcmFtZe+8mlxcXCIgKyBzcmMpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXdoaXRlLmluY2x1ZGVzKHNyYykpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzcmMgJiYgc3JjLnN0YXJ0c1dpdGgoXFxcImh0dHBcXFwiKSAmJiAhc3JjLm1hdGNoKC9cXFxcLm1wNHxcXFxcLm0zdTh8XFxcXC5tcDN8XFxcXC5mbHZ8XFxcXC5ta3YvKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwgPSByZXF1ZXN0KHNyYyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IHBhcnNlKHJ1bGUsIHdlYiwgc3JjLCBodG1sKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2coXFxcIuWwneivleiOt+WPlmlmcmFtZeWksei0pVxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkLmxlbmd0aCA+IDApIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRbMF0udXJsID0gJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgoYW5jaG9ySWQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGVzYyA9IGdldFZhcihhbmNob3JJZCwgXFxcIjBcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGVzYyA9PSBcXFwiMFxcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFg1RGVzYyhcXFwiZmxvYXQmJnNjcmVlbi0xNzBcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0VmFyKGFuY2hvcklkLCBcXFwiMVxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hYNURlc2MoXFxcImZsb2F0JiYwXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcihhbmNob3JJZCwgXFxcIjBcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIjtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGFuY2hvcklkICsgXFxcIng1XFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkWzBdLnRpdGxlID0gXFxcIuWxleW8gC/mlLbotbdcXFwiICsgZFswXS50aXRsZTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcihhbmNob3JJZCArIFxcXCJ4NVxcXCIsIFxcXCIwXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoWDVEZXNjKFxcXCJmbG9hdCYmMFxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaXQgb2YgZCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBleHRyYSA9IGl0LmV4dHJhIHx8IHt9O1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhLmNscyA9IFxcXCJ4NWFpXFxcIjtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5leHRyYSA9IGV4dHJhO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlSXRlbUJ5Q2xzKFxcXCJ4NWFpXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRJdGVtQWZ0ZXIoYW5jaG9ySWQsIGQpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9hc3QoXFxcIkFJ5Yy56YWN5oiQ5YqfXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGQubGVuZ3RoID4gMCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nKFxcXCJwYXJzZUxhenlSdWxlQXN5bmM6XFxcIiArIGQubGVuZ3RoKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZC5sZW5ndGggPiAwID8gXFxcIjFcXFwiIDogXFxcIjBcXFwiO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nKGUudG9TdHJpbmcoKSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfSwgcnVsZSwgbG9jYXRpb24uaHJlZiwgYW5jaG9ySWQsIHdoaXRlKSwgJCQkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoXFxcIjBcXFwiID09IGlucHV0KSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5jaGVja2MgPSB3aW5kb3cuY2hlY2tjICsgMTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLyppZiAod2luZG93LmNoZWNrYyA+IDEyMCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmJhLmxvZyhcXFwi5omn6KGM6LaF6L+HMzDnp5LvvIzml6Dms5Xop6PmnpBcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsqL1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHdpbmRvdy5jaGVjazAsIDI1MCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5jaGVja3VybCA9IGxvY2F0aW9uLmhyZWY7XFxuXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGNoZWNrdTAoKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93LmNoZWNrdXJsICE9IGxvY2F0aW9uLmhyZWYpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2hhc2jlj5HnlJ/kuoblj5jljJZcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuY2hlY2tjID0gMDtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2swKCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgMjAwMCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoY2hlY2t1MCwgMjUwKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja3UwKCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICAgICAgICAgICAgICBmYmEubG9nKGUudG9TdHJpbmcoKSk7XFxuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHdpbmRvdy5jaGVjazAsIDI1MCk7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgd2luZG93LmNoZWNrYyA9IDA7XFxuICAgICAgICAgICAgd2luZG93LmNoZWNrMCA9IGNoZWNrMDtcXG4gICAgICAgICAgICBjaGVjazAoKTtcXG4gICAgICAgIH1cXG4gICAgfSwgcnVsZSwgYW5jaG9ySWQsIHN0b3JhZ2UwLmdldEl0ZW0oXFxcIndoaXRlXFxcIiwgW10pKTtcXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLpppbpobVcIixcInBhdGhcIjpcImhvbWVcIixcInJ1bGVcIjpcInZhciBkID0gW107XFxubGV0IHVybCA9IOe9keermTtcXG5sZXQgYW5jaG9ySWQgPSB1cmw7XFxubGV0IGpzID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UveDVhaVxcXCIpKE1ZX1JVTEUudGl0bGUsIGFuY2hvcklkKTtcXG5sZXQgaXRlID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvdVxcXCIpKE1ZX1JVTEUudGl0bGUsIGdldEhvbWUodXJsKSk7XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IFxcXCJcXFwiLFxcbiAgICB1cmw6IHVybCxcXG4gICAgY29sX3R5cGU6IFxcXCJ4NV93ZWJ2aWV3X3NpbmdsZVxcXCIsXFxuICAgIGRlc2M6IFxcXCIxMDAlJiZmbG9hdFxcXCIsXFxuICAgIHBpY191cmw6IFxcXCJcXFwiLFxcbiAgICBleHRyYToge1xcbiAgICAgICAgdXJsSW50ZXJjZXB0b3I6IGl0ZSxcXG4gICAgICAgIGNhbkJhY2s6IHRydWUsXFxuICAgICAgICBqczoganMsXFxuICAgICAgICBqc0xvYWRpbmdJbmplY3Q6IHRydWUsXFxuICAgICAgICBibG9ja1J1bGVzOiBbXFxcIi5naWZcXFwiLCBcXFwiL2FkL1xcXCIsIFxcXCIvYWRzL1xcXCIsIFxcXCJnb29nbGVcXFwiLCBcXFwiL3NoL3RvL1xcXCIsIFxcXCIuR0lGXFxcIl1cXG4gICAgfVxcbn0pO1xcbmQucHVzaCh7XFxuICAgIGNvbF90eXBlOiBcXFwibGluZVxcXCIsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICBpZDogYW5jaG9ySWRcXG4gICAgfVxcbn0pO1xcblxcbnNldFJlc3VsdChkKTtcIn1dLFwicGFyYW1zXCI6XCJ7XFxcImxpbmVWaXNpYmxlXFxcIjpmYWxzZX1cIixcInNhdmVkXCI6ZmFsc2UsXCJ0aXRsZVwiOlwicG9ybmZpbmRcIixcInZlcnNpb25cIjowLFwidXJsXCI6XCJoaWtlcjovL3BhZ2UveXNmeD9ydWxlPXBvcm5maW5kJnI9cG9ybmZpbmQjI2h0dHBzOi8vc2hhc2hhLm9uZS9pbmRleC8xLzMzXCIsXCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwiZmluZF9ydWxlXCI6XCJqczpcXG52YXIgZCA9IFtdO1xcbmxldCBydWxlID0gZ2V0UGFyYW0oXFxcInJcXFwiKS5zcGxpdChcXFwiIyNcXFwiKVswXTtcXG5sZXQgdXJsID0gTVlfVVJMLnNwbGl0KFxcXCIjI1xcXCIpWzFdO1xcbmxldCBpdGUgPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS91XFxcIikocnVsZSwgZ2V0SG9tZSh1cmwpKTtcXG5sZXQganMgPSAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgdHJ5IHtcXG4gICAgICAgIGlmIChkb2N1bWVudC50aXRsZSAmJiBkb2N1bWVudC50aXRsZS5sZW5ndGgpIHtcXG4gICAgICAgICAgICBsZXQgciA9ICQkJCgpLmxhenlSdWxlKCh0KSA9PiB7XFxuICAgICAgICAgICAgICAgIHNldFBhZ2VUaXRsZSh0KTtcXG4gICAgICAgICAgICB9LCBkb2N1bWVudC50aXRsZSk7XFxuICAgICAgICAgICAgZnlfYnJpZGdlX2FwcC5wYXJzZUxhenlSdWxlKHIpO1xcbiAgICAgICAgfVxcbiAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICBmeV9icmlkZ2VfYXBwLmxvZyhlLnRvU3RyaW5nKCkpO1xcbiAgICB9XFxufSk7XFxubGV0IGpzMiA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL3g1YWlcXFwiKShydWxlLCB1cmwpO1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBcXFwiXFxcIixcXG4gICAgdXJsOiB1cmwsXFxuICAgIGNvbF90eXBlOiBcXFwieDVfd2Vidmlld19zaW5nbGVcXFwiLFxcbiAgICBkZXNjOiBcXFwiMTAwJSYmZmxvYXRcXFwiLFxcbiAgICBwaWNfdXJsOiBcXFwiXFxcIixcXG4gICAgZXh0cmE6IHtcXG4gICAgICAgIHVybEludGVyY2VwdG9yOiBpdGUsXFxuICAgICAgICBqczoganMgKyBcXFwiO1xcXFxuXFxcIiArIGpzMixcXG4gICAgICAgIGNhbkJhY2s6IHRydWUsXFxuICAgICAgICBqc0xvYWRpbmdJbmplY3Q6IHRydWUsXFxuICAgICAgICBmbG9hdFZpZGVvOiB0cnVlLFxcbiAgICAgICAgYmxvY2tSdWxlczogW1xcXCIuZ2lmXFxcIiwgXFxcIi9hZC9cXFwiLCBcXFwiL2Fkcy9cXFwiLCBcXFwiZ29vZ2xlXFxcIiwgXFxcIi9zaC90by9cXFwiLCBcXFwiLkdJRlxcXCJdXFxuICAgIH1cXG59KTtcXG5kLnB1c2goe1xcbiAgICBjb2xfdHlwZTogXFxcImxpbmVcXFwiLFxcbiAgICBleHRyYToge1xcbiAgICAgICAgaWQ6IHVybFxcbiAgICB9XFxufSk7XFxuc2V0UmVzdWx0KGQpO1wiLFwiZ3JvdXBcIjpcIuKRokFJXCIsXCJ1YVwiOlwibW9iaWxlXCIsXCJwcmVSdWxlXCI6XCJcIixcInBhZ2VzXCI6XCJbe1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwieXNmeFxcXCIsXFxcInBhdGhcXFwiOlxcXCJ5c2Z4XFxcIixcXFwicnVsZVxcXCI6XFxcImpzOlxcXFxudmFyIGQgPSBbXTtcXFxcbmxldCBydWxlID0gZ2V0UGFyYW0oXFxcXFxcXCJyXFxcXFxcXCIpLnNwbGl0KFxcXFxcXFwiIyNcXFxcXFxcIilbMF07XFxcXG5sZXQgdXJsID0gTVlfVVJMLnNwbGl0KFxcXFxcXFwiIyNcXFxcXFxcIilbMV07XFxcXG5sZXQgaXRlID0gJC5yZXF1aXJlKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL3VcXFxcXFxcIikocnVsZSwgZ2V0SG9tZSh1cmwpKTtcXFxcbmxldCBqcyA9ICQudG9TdHJpbmcoKCkgPT4ge1xcXFxuICAgIHRyeSB7XFxcXG4gICAgICAgIGlmIChkb2N1bWVudC50aXRsZSAmJiBkb2N1bWVudC50aXRsZS5sZW5ndGgpIHtcXFxcbiAgICAgICAgICAgIGxldCByID0gJCQkKCkubGF6eVJ1bGUoKHQpID0+IHtcXFxcbiAgICAgICAgICAgICAgICBzZXRQYWdlVGl0bGUodCk7XFxcXG4gICAgICAgICAgICB9LCBkb2N1bWVudC50aXRsZSk7XFxcXG4gICAgICAgICAgICBmeV9icmlkZ2VfYXBwLnBhcnNlTGF6eVJ1bGUocik7XFxcXG4gICAgICAgIH1cXFxcbiAgICB9IGNhdGNoIChlKSB7XFxcXG4gICAgICAgIGZ5X2JyaWRnZV9hcHAubG9nKGUudG9TdHJpbmcoKSk7XFxcXG4gICAgfVxcXFxufSk7XFxcXG5sZXQganMyID0gJC5yZXF1aXJlKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL3g1YWlcXFxcXFxcIikocnVsZSwgdXJsKTtcXFxcbmQucHVzaCh7XFxcXG4gICAgdGl0bGU6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgdXJsOiB1cmwsXFxcXG4gICAgY29sX3R5cGU6IFxcXFxcXFwieDVfd2Vidmlld19zaW5nbGVcXFxcXFxcIixcXFxcbiAgICBkZXNjOiBcXFxcXFxcIjEwMCUmJmZsb2F0XFxcXFxcXCIsXFxcXG4gICAgcGljX3VybDogXFxcXFxcXCJcXFxcXFxcIixcXFxcbiAgICBleHRyYToge1xcXFxuICAgICAgICB1cmxJbnRlcmNlcHRvcjogaXRlLFxcXFxuICAgICAgICBqczoganMgKyBcXFxcXFxcIjtcXFxcXFxcXG5cXFxcXFxcIiArIGpzMixcXFxcbiAgICAgICAgY2FuQmFjazogdHJ1ZSxcXFxcbiAgICAgICAganNMb2FkaW5nSW5qZWN0OiB0cnVlLFxcXFxuICAgICAgICBmbG9hdFZpZGVvOiB0cnVlLFxcXFxuICAgICAgICBibG9ja1J1bGVzOiBbXFxcXFxcXCIuZ2lmXFxcXFxcXCIsIFxcXFxcXFwiL2FkL1xcXFxcXFwiLCBcXFxcXFxcIi9hZHMvXFxcXFxcXCIsIFxcXFxcXFwiZ29vZ2xlXFxcXFxcXCIsIFxcXFxcXFwiL3NoL3RvL1xcXFxcXFwiLCBcXFxcXFxcIi5HSUZcXFxcXFxcIl1cXFxcbiAgICB9XFxcXG59KTtcXFxcbmQucHVzaCh7XFxcXG4gICAgY29sX3R5cGU6IFxcXFxcXFwibGluZVxcXFxcXFwiLFxcXFxuICAgIGV4dHJhOiB7XFxcXG4gICAgICAgIGlkOiB1cmxcXFxcbiAgICB9XFxcXG59KTtcXFxcbnNldFJlc3VsdChkKTtcXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCJ1XFxcIixcXFwicGF0aFxcXCI6XFxcInVcXFwiLFxcXCJydWxlXFxcIjpcXFwiJC5leHBvcnRzID0gZnVuY3Rpb24ocnVsZSwgb3JpZ2luKSB7XFxcXG4gICAgcmV0dXJuICQudG9TdHJpbmcoKHJ1bGUsIG9yaWdpbikgPT4ge1xcXFxuICAgICAgICBsZXQgaG9zdCA9IG9yaWdpbi5yZXBsYWNlKG5ldyBSZWdFeHAoXFxcXFxcXCJodHRwOi8vfGh0dHBzOi8vXFxcXFxcXCIpLCBcXFxcXFxcIlxcXFxcXFwiKS5zcGxpdChcXFxcXFxcIi9cXFxcXFxcIilbMF07XFxcXG4gICAgICAgIGxldCBob3N0cyA9IGhvc3Quc3BsaXQoXFxcXFxcXCIuXFxcXFxcXCIpO1xcXFxuICAgICAgICBpZiAoaG9zdHMubGVuZ3RoID4gMikge1xcXFxuICAgICAgICAgICAgaG9zdCA9IGhvc3RzW2hvc3RzLmxlbmd0aCAtIDJdICsgXFxcXFxcXCIuXFxcXFxcXCIgKyBob3N0c1tob3N0cy5sZW5ndGggLSAxXTtcXFxcbiAgICAgICAgfVxcXFxuICAgICAgICBpZiAoaW5wdXQuc3RhcnRzV2l0aChcXFxcXFxcIm1hZ25ldFxcXFxcXFwiKSkge1xcXFxuICAgICAgICAgICAgY29uZmlybSh7XFxcXG4gICAgICAgICAgICAgICAgdGl0bGU6IFxcXFxcXFwi5rip6aao5o+Q56S6XFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgY29udGVudDogXFxcXFxcXCLmo4DmtYvliLDmlrDnmoTno4Hpk77lnLDlnYDvvIzngrnlh7vnoa7lrprmjInpkq7ljbPlj6/mkq3mlL7vvIzngrnlh7vlj5bmtojmjInpkq7lj6/ku6XlpI3liLbpk77mjqVcXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICBjb25maXJtOiAkLnRvU3RyaW5nKChtYWcpID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hZztcXFxcbiAgICAgICAgICAgICAgICB9LCBpbnB1dCksXFxcXG4gICAgICAgICAgICAgICAgY2FuY2VsOiAkLnRvU3RyaW5nKChtYWcpID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwiY29weTovL1xcXFxcXFwiICsgbWFnXFxcXG4gICAgICAgICAgICAgICAgfSwgaW5wdXQpXFxcXG4gICAgICAgICAgICB9KVxcXFxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XFxcXG4gICAgICAgIH0gZWxzZSBpZiAoaW5wdXQuaW5jbHVkZXMoXFxcXFxcXCJhbGl5dW5kcml2ZS5jb21cXFxcXFxcIikpIHtcXFxcbiAgICAgICAgICAgIGxvZyhpbnB1dCk7XFxcXG4gICAgICAgICAgICBsZXQgcjEgPSBmZXRjaChcXFxcXFxcImhpa2VyOi8vaG9tZUDkupHnm5jmsYflvbFcXFxcXFxcIik7XFxcXG4gICAgICAgICAgICBpZiAoIXIxIHx8IHIxLmxlbmd0aCA8PSA1KSB7XFxcXG4gICAgICAgICAgICAgICAgbGV0IHJ1ID0gJC50b1N0cmluZygoKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcIua1t+mYlOinhueVjOinhOWImeWIhuS6q++8jOW9k+WJjeWIhuS6q+eahOaYr++8muWwj+eoi+W6j++/pWhvbWVfcnVsZV92Mu+/pWJhc2U2NDovL0DkupHnm5jmsYflvbFAZXlKc1lYTjBYMk5vWVhCMFpYSmZjblZzWlNJNklpSXNJblJwZEd4bElqb2k1THFSNTV1WTVyR0g1YjJ4SWl3aVlYVjBhRzl5SWpvaVRYSkdiSGtpTENKMWNtd2lPaUpvYVd0bGNqb3ZMMlZ0Y0hSNUpDUWtabmx3WVdkbElpd2lkbVZ5YzJsdmJpSTZOaXdpWTI5c1gzUjVjR1VpT2lKMFpYaDBYekVpTENKamJHRnpjMTl1WVcxbElqb2lJaXdpZEhsd1pTSTZJbUZzYkNJc0ltTnNZWE56WDNWeWJDSTZJaUlzSW1GeVpXRmZibUZ0WlNJNklpSXNJbUZ5WldGZmRYSnNJam9pSWl3aWMyOXlkRjl1WVcxbElqb2lJaXdpZVdWaGNsOXVZVzFsSWpvaUlpd2ljMjl5ZEY5MWNtd2lPaUlpTENKNVpXRnlYM1Z5YkNJNklpSXNJbVpwYm1SZmNuVnNaU0k2SW1wek9seHVaWFpoYkNobVpYUmphQ2duYUdsclpYSTZMeTltYVd4bGN5OXlkV3hsY3k5cFkza3ZZV3hwTG1wekp5a3BPMXh1WVd4cExtaHZiV1ZRWVdkbEtDazdJaXdpYzJWaGNtTm9YM1Z5YkNJNkltaHBhMlZ5T2k4dlpXMXdkSGtrSkNRcUtpUWtKR1o1Y0dGblpTUWtKQ0lzSW1keWIzVndJam9pNHBHZzU3MlI1NXVZSWl3aWMyVmhjbU5vUm1sdVpDSTZJbXB6T2x4dVpYWmhiQ2htWlhSamFDZ25hR2xyWlhJNkx5OW1hV3hsY3k5eWRXeGxjeTlwWTNrdllXeHBMbXB6SnlrcE8xeHVZV3hwTG5ObFlYSmphRkJoWjJVb2RISjFaU2s3WEc0aUxDSmtaWFJoYVd4ZlkyOXNYM1I1Y0dVaU9pSnRiM1pwWlY4eElpd2laR1YwWVdsc1gyWnBibVJmY25Wc1pTSTZJbXB6T2x4dVpYWmhiQ2htWlhSamFDZ25hR2xyWlhJNkx5OW1hV3hsY3k5eWRXeGxjeTlwWTNrdllXeHBMbXB6SnlrcE8xeHVZV3hwTG1SbGRHRnBiRkJoWjJVb0tUc2lMQ0p6WkdWMFlXbHNYMk52YkY5MGVYQmxJam9pYlc5MmFXVmZNU0lzSW5Oa1pYUmhhV3hmWm1sdVpGOXlkV3hsSWpvaUlpd2lkV0VpT2lKdGIySnBiR1VpTENKd2NtVlNkV3hsSWpvaWRtRnlJR0ZzYVdweklEMGdabVYwWTJoRFlXTm9aU2duYUhSMGNITTZMeTluYVhSbFpTNWpiMjB2Wm14NU1UTTVOeTlvYVd0bGNpMXBZM2t2Y21GM0wyMWhjM1JsY2k5aGJHa3Vhbk1uS1R0Y2JtbG1JQ2doWVd4cGFuTWdmSHdnSVdGc2FXcHpMbWx1WTJ4MVpHVnpLQ2RoYkdrdUp5a3BJSHRjYmlBZ0lDQmhiR2xxY3lBOUlHWmxkR05vUTJGamFHVW9KMmgwZEhCek9pOHZZMlJ1TG1welpHVnNhWFp5TG01bGRDOW5hQzltYkhreE16azNMMmhwYTJWeUxXbGplUzloYkdrdWFuTW5LVnh1ZlZ4dWFXWWdLQ0ZoYkdscWN5QjhmQ0FoWVd4cGFuTXVhVzVqYkhWa1pYTW9KMkZzYVM0bktTa2dlMXh1SUNBZ0lHRnNhV3B6SUQwZ1ptVjBZMmhEWVdOb1pTZ25hSFIwY0RvdkwyeG1hV041TG1OdmJUb3pNREF3TUM5dGNtWnNlUzlvYVd0bGNpMXBZM2t2Y21GM0wyMWhjM1JsY2k5aGJHa3Vhbk1uS1Z4dWZWeHVhV1lnS0dGc2FXcHpLU0I3WEc0Z0lDQWdkM0pwZEdWR2FXeGxLRndpYUdsclpYSTZMeTltYVd4bGN5OXlkV3hsY3k5cFkza3ZZV3hwTG1welhDSXNJR0ZzYVdwektUdGNiaUFnSUNCbGRtRnNLR0ZzYVdwektUdGNiaUFnSUNCaGJHa3VjSEpsVW5Wc1pTZ3BPMXh1ZlNJc0luQmhaMlZ6SWpvaVczdGNJbU52YkY5MGVYQmxYQ0k2WENKdGIzWnBaVjh6WENJc1hDSnVZVzFsWENJNlhDTG52WkhubTVqb3I2Ym1nNFZjSWl4Y0luQmhkR2hjSWpwY0ltUmxkR0ZwYkZ3aUxGd2ljblZzWlZ3aU9sd2lhbk02WEZ4dVpYWmhiQ2htWlhSamFDZ25hR2xyWlhJNkx5OW1hV3hsY3k5eWRXeGxjeTlwWTNrdllXeHBMbXB6SnlrcE8xeGNibUZzYVM1cGJtbDBRMjl1Wm1sbktDazdYRnh1WVd4cExtRnNhVkoxYkdVb0tUdGNJbjBzZTF3aVkyOXNYM1I1Y0dWY0lqcGNJbTF2ZG1sbFh6RmZiR1ZtZEY5d2FXTmNJaXhjSW01aGJXVmNJanBjSXVpMWhPYTZrT2U5a2VtaHRlaXZwdWFEaFZ3aUxGd2ljR0YwYUZ3aU9sd2ljMmwwWlMxa1pYUmhhV3hjSWl4Y0luSjFiR1ZjSWpwY0ltcHpPbHhjYm1WMllXd29abVYwWTJnb0oyaHBhMlZ5T2k4dlptbHNaWE12Y25Wc1pYTXZhV041TDJGc2FTNXFjeWNwS1R0Y1hHNWhiR2t1WkdWMFlXbHNVR0ZuWlNncE8xd2lmU3g3WENKamIyeGZkSGx3WlZ3aU9sd2liVzkyYVdWZk0xd2lMRndpYm1GdFpWd2lPbHdpNUxpcTVMcTY1NzJSNTV1WTZLK201b09GWENJc1hDSndZWFJvWENJNlhDSmtjbWwyWlZ3aUxGd2ljblZzWlZ3aU9sd2lhbk02WEZ4dVpYWmhiQ2htWlhSamFDZ25hR2xyWlhJNkx5OW1hV3hsY3k5eWRXeGxjeTlwWTNrdllXeHBMbXB6SnlrcE8xeGNibUZzYVM1cGJtbDBRMjl1Wm1sbktDazdYRnh1WVd4cExtMTVRV3hwVW5Wc1pTZ3BPMXdpZlYwaUxDSnBZMjl1SWpvaWFIUjBjSE02THk5bmFYUmxaUzVqYjIwdlpteDVNVE01Tnk5b2FXdGxjaTFwWTNrdmNtRjNMMjFoYzNSbGNpOWhiR2w1ZFc0dWNHNW5JaXdpY0hKdmVIa2lPaUlpZlE9PVxcXFxcXFwiXFxcXG4gICAgICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICAgICAgY29uZmlybSh7XFxcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5rip6aao5o+Q56S6JyxcXFxcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogJ+acrOinhOWImeS+nei1luS6keebmOaxh+W9seinhOWIme+8jOeCueWHu+S4i+mdoueahOehruWumuaMiemSruWvvOWFpe+8jOazqOaEj+WvvOWFpeWQjuS4gOWumuimgeWcqOS6keebmOaxh+W9seeZu+W9lemYv+mHjOS6keebmOi0puWPt++8jOWQpuWImeS4jeiDveeUqCcsXFxcXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpcm06IHJ1LFxcXFxuICAgICAgICAgICAgICAgICAgICBjYW5jZWw6IHJ1XFxcXG4gICAgICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgbG9nKFxcXFxcXFwiaW5wdXRcXFxcXFxcIik7XFxcXG4gICAgICAgICAgICByZXR1cm4gJC50b1N0cmluZygodXJsLCBydWxlKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgZnlfYnJpZGdlX2FwcC5vcGVuKEpTT04uc3RyaW5naWZ5KHtcXFxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFxcXFxcXFwi6Zi/6YeM5LqR55uYXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogXFxcXFxcXCJoaWtlcjovL3BhZ2UvZGV0YWlsP3J1bGU95LqR55uY5rGH5b2xJnVybD1cXFxcXFxcIiArIHVybCArICc/P2Z5cGFnZScsXFxcXG4gICAgICAgICAgICAgICAgfSkpXFxcXG4gICAgICAgICAgICB9LCBpbnB1dCwgcnVsZSlcXFxcbiAgICAgICAgfSBlbHNlIGlmICgvXFxcXFxcXFwuKG1wM3xmbGFjfG00YSkkLy50ZXN0KGlucHV0KSkge1xcXFxuICAgICAgICAgICAgbG9nKGlucHV0KTtcXFxcbiAgICAgICAgICAgIHJldHVybiAkLnRvU3RyaW5nKCh1cmwsIHJ1bGUpID0+IHtcXFxcbiAgICAgICAgICAgICAgICBmeV9icmlkZ2VfYXBwLnBsYXlWaWRlbyh1cmwpO1xcXFxuICAgICAgICAgICAgfSwgaW5wdXQsIHJ1bGUpXFxcXG4gICAgICAgIH0gZWxzZSBpZiAoIWlucHV0LmluY2x1ZGVzKGhvc3QpICYmIGlucHV0LnN0YXJ0c1dpdGgoXFxcXFxcXCJodHRwXFxcXFxcXCIpKSB7XFxcXG4gICAgICAgICAgICBsb2coaW5wdXQpO1xcXFxuICAgICAgICAgICAgcmV0dXJuICQudG9TdHJpbmcoKHVybCwgcnVsZSkgPT4ge1xcXFxuICAgICAgICAgICAgICAgIGxldCB3aGl0ZSA9IFtcXFxcbiAgICAgICAgICAgICAgICAgICAgXFxcXFxcXCJkb3V5aW5cXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICAgICAgXFxcXFxcXCJkb3ViYW5cXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICAgICAgXFxcXFxcXCJpeGlndWEuY29tXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgIFxcXFxcXFwia3VhaXNob3VcXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICAgICAgXFxcXFxcXCJiaWxpYmlsaVxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgICAgICBcXFxcXFxcIndlaWJvXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgIFxcXFxcXFwid2VpeGluXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgIFxcXFxcXFwiYmFpZHVcXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICAgICAgXFxcXFxcXCJ6bWsuXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgIFxcXFxcXFwic3ViaGRcXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICAgICAgXFxcXFxcXCJ0aHVuZGVyXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgIFxcXFxcXFwieGluanVjXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgIFxcXFxcXFwiZ3JhYjRrXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgIFxcXFxcXFwiL2J0XFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgIFxcXFxcXFwianNyMTBcXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICAgICAgXFxcXFxcXCJhc3NydFxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgICAgICBcXFxcXFxcInF1YXJrXFxcXFxcXCJcXFxcbiAgICAgICAgICAgICAgICBdO1xcXFxuICAgICAgICAgICAgICAgIGxldCBpbldoaXRlID0gd2hpdGUuZmlsdGVyKGl0ID0+IHVybC5pbmNsdWRlcyhpdCkpLmxlbmd0aCA+IDA7XFxcXG4gICAgICAgICAgICAgICAgaWYgKGluV2hpdGUpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgLy/ot7PnvZHpobVcXFxcbiAgICAgICAgICAgICAgICAgICAgZnlfYnJpZGdlX2FwcC5vcGVuKEpTT04uc3RyaW5naWZ5KHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFxcXFxcIuivpuaDhVxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBcXFxcXFxcImhpa2VyOi8vcGFnZS95c2Z4P3J1bGU9XFxcXFxcXCIgKyBydWxlICsgXFxcXFxcXCImcj1cXFxcXFxcIiArIHJ1bGUgKyBcXFxcXFxcIiMjXFxcXFxcXCIgKyB1cmwsXFxcXG4gICAgICAgICAgICAgICAgICAgIH0pKVxcXFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICAgICAgICAgIC8vQUnop6PmnpBcXFxcbiAgICAgICAgICAgICAgICAgICAgZnlfYnJpZGdlX2FwcC5vcGVuKEpTT04uc3RyaW5naWZ5KHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBkb2N1bWVudC50aXRsZSxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogXFxcXFxcXCJoaWtlcjovL3BhZ2UvcD9ydWxlPVxcXFxcXFwiICsgcnVsZSArIFxcXFxcXFwiJnI9XFxcXFxcXCIgKyBydWxlICsgXFxcXFxcXCImdT1cXFxcXFxcIiArIGZ5X2JyaWRnZV9hcHAuYmFzZTY0RW5jb2RlKHVybCksXFxcXG4gICAgICAgICAgICAgICAgICAgIH0pKVxcXFxuICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIH0sIGlucHV0LCBydWxlKTtcXFxcbiAgICAgICAgfSBlbHNlIGlmICghaW5wdXQuc3RhcnRzV2l0aChcXFxcXFxcImh0dHBcXFxcXFxcIikpIHtcXFxcbiAgICAgICAgICAgIGxvZyhpbnB1dCk7XFxcXG4gICAgICAgICAgICAvL+iDveWUpOi1t0FQUOeahOeZveWQjeWNlVxcXFxuICAgICAgICAgICAgbGV0IHdoaXRlID0gW1xcXFxuICAgICAgICAgICAgICAgIFxcXFxcXFwicWtsaW5rXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgXFxcXFxcXCJiZG5ldGRpc2tcXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICBcXFxcXFxcInh1bmxlaWFwcFxcXFxcXFwiXFxcXG4gICAgICAgICAgICBdO1xcXFxuICAgICAgICAgICAgbGV0IGluV2hpdGUgPSB3aGl0ZS5maWx0ZXIoaXQgPT4gaW5wdXQuc3RhcnRzV2l0aChpdCkpLmxlbmd0aCA+IDA7XFxcXG4gICAgICAgICAgICBpZiAoIWluV2hpdGUpIHtcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICByZXR1cm4gJC50b1N0cmluZygodXJsLCBydWxlKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgZnlfYnJpZGdlX2FwcC5vcGVuVGhpcmRBcHAgJiYgZnlfYnJpZGdlX2FwcC5vcGVuVGhpcmRBcHAodXJsKTtcXFxcbiAgICAgICAgICAgIH0sIGlucHV0LCBydWxlKVxcXFxuICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgbGV0IHdoaXRlID0gW1xcXFxuICAgICAgICAgICAgICAgIFxcXFxcXFwidXJsPVxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgIFxcXFxcXFwiZnNvdS5jb21cXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICBcXFxcXFxcImJpbmcuXFxcXFxcXCIsICAgICAgICAgICAgICAgIFxcXFxuICAgICAgICAgICAgXTtcXFxcbiAgICAgICAgICAgIGxldCBpbldoaXRlID0gd2hpdGUuZmlsdGVyKGl0ID0+IGlucHV0LmluY2x1ZGVzKGl0KSkubGVuZ3RoID4gMDtcXFxcbiAgICAgICAgICAgIGlmIChpbldoaXRlKSB7XFxcXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgbGV0IHJlZyA9IG5ldyBSZWdFeHAoXFxcXFxcXCJbXFxcXFxcXFx1NGUwMC1cXFxcXFxcXHU5ZmE1XStcXFxcXFxcIiwgXFxcXFxcXCJnXFxcXFxcXCIpO1xcXFxuICAgICAgICAgICAgbGV0IHIgPSBkZWNvZGVVUklDb21wb25lbnQoaW5wdXQpO1xcXFxuICAgICAgICAgICAgaWYgKHJlZy50ZXN0KHIpIHx8IChpbnB1dC5zdGFydHNXaXRoKG9yaWdpbikgJiYgaW5wdXQubGVuZ3RoIC0gb3JpZ2luLmxlbmd0aCA+IDIpKSB7XFxcXG4gICAgICAgICAgICAgICAgLy/mnInkuK3mlofvvIzlupTor6XmmK/lnKjmkJzntKLvvIzot7PmlrDpobXpnaJcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gJC50b1N0cmluZygodXJsLCBydWxlKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgIGZ5X2JyaWRnZV9hcHAub3BlbihKU09OLnN0cmluZ2lmeSh7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogXFxcXFxcXCLor6bmg4VcXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogXFxcXFxcXCJoaWtlcjovL3BhZ2UveXNmeD9ydWxlPVxcXFxcXFwiICsgcnVsZSArIFxcXFxcXFwiJnI9XFxcXFxcXCIgKyBydWxlICsgXFxcXFxcXCIjI1xcXFxcXFwiICsgdXJsLFxcXFxuICAgICAgICAgICAgICAgICAgICB9KSk7XFxcXG4gICAgICAgICAgICAgICAgfSwgaW5wdXQsIHJ1bGUpO1xcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICB9XFxcXG4gICAgfSwgcnVsZSwgb3JpZ2luKTtcXFxcbn1cXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLkuoznuqfop6PmnpBcXFwiLFxcXCJwYXRoXFxcIjpcXFwicFxcXCIsXFxcInJ1bGVcXFwiOlxcXCJqczpcXFxcbnZhciBkID0gW107XFxcXG5sZXQgdXJsID0gYmFzZTY0RGVjb2RlKGdldFBhcmFtKFxcXFxcXFwidVxcXFxcXFwiKSk7XFxcXG5sZXQgbGlzdCA9IHN0b3JhZ2UwLmdldEl0ZW0oXFxcXFxcXCJ3aGl0ZVxcXFxcXFwiLCBbXSk7XFxcXG5sZXQgaW5XaGl0ZSA9IGxpc3QuaW5jbHVkZXModXJsKTtcXFxcbmxldCBkID0gW107XFxcXG5pZiAoIWluV2hpdGUpIHtcXFxcbiAgICBsZXQgaHRtbCA9IHJlcXVlc3QodXJsKTtcXFxcbiAgICBsZXQgd2ViID0gZ2V0SXRlbSgnd2ViJywgJzAnKSA9PSBcXFxcXFxcIjFcXFxcXFxcIjtcXFxcbiAgICBsZXQgcnVsZSA9IGdldFBhcmFtKFxcXFxcXFwiclxcXFxcXFwiKTtcXFxcbiAgICBsZXQgcGFyc2UgPSAkLnJlcXVpcmUoXFxcXFxcXCJoaWtlcjovL3BhZ2UvcGFyc2VcXFxcXFxcIik7XFxcXG4gICAgZCA9IHBhcnNlKHJ1bGUsIHdlYiwgdXJsLCBodG1sKTtcXFxcbn1cXFxcbmlmIChkLmxlbmd0aCA9PSAwKSB7XFxcXG4gICAgLy/ljLnphY3lpLHotKVcXFxcbiAgICBsZXQgaXRlID0gJC5yZXF1aXJlKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL3VcXFxcXFxcIikoZ2V0UGFyYW0oXFxcXFxcXCJyXFxcXFxcXCIpLCBnZXRIb21lKHVybCkpO1xcXFxuICAgIGxldCBqcyA9ICQudG9TdHJpbmcoKCkgPT4ge1xcXFxuICAgICAgICB0cnkge1xcXFxuICAgICAgICAgICAgaWYgKGRvY3VtZW50LnRpdGxlICYmIGRvY3VtZW50LnRpdGxlLmxlbmd0aCkge1xcXFxuICAgICAgICAgICAgICAgIGxldCByID0gJCQkKCkubGF6eVJ1bGUoKHQpID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgc2V0UGFnZVRpdGxlKHQpO1xcXFxuICAgICAgICAgICAgICAgIH0sIGRvY3VtZW50LnRpdGxlKTtcXFxcbiAgICAgICAgICAgICAgICBmeV9icmlkZ2VfYXBwLnBhcnNlTGF6eVJ1bGUocik7XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcXFxcbiAgICAgICAgICAgIGZ5X2JyaWRnZV9hcHAubG9nKGUudG9TdHJpbmcoKSk7XFxcXG4gICAgICAgIH1cXFxcbiAgICB9KTtcXFxcbiAgICBsZXQganMyID0gJC5yZXF1aXJlKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL3g1YWlcXFxcXFxcIikoZ2V0UGFyYW0oXFxcXFxcXCJyXFxcXFxcXCIpLCB1cmwpO1xcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgICAgICB1cmw6IHVybCxcXFxcbiAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwieDVfd2Vidmlld19zaW5nbGVcXFxcXFxcIixcXFxcbiAgICAgICAgZGVzYzogXFxcXFxcXCJmbG9hdCYmMTAwJVxcXFxcXFwiLFxcXFxuICAgICAgICBwaWNfdXJsOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgICAgICBleHRyYToge1xcXFxuICAgICAgICAgICAganM6IGpzICsgXFxcXFxcXCI7XFxcXFxcXFxuXFxcXFxcXCIgKyBqczIsXFxcXG4gICAgICAgICAgICB1cmxJbnRlcmNlcHRvcjogaXRlLFxcXFxuICAgICAgICAgICAgY2FuQmFjazogdHJ1ZSxcXFxcbiAgICAgICAgICAgIGZsb2F0VmlkZW86IHRydWUsXFxcXG4gICAgICAgICAgICBqc0xvYWRpbmdJbmplY3Q6IHRydWUsXFxcXG4gICAgICAgICAgICBibG9ja1J1bGVzOiBbXFxcXFxcXCIuZ2lmXFxcXFxcXCIsIFxcXFxcXFwiL2FkL1xcXFxcXFwiLCBcXFxcXFxcIi9hZHMvXFxcXFxcXCIsIFxcXFxcXFwiZ29vZ2xlXFxcXFxcXCIsIFxcXFxcXFwiL3NoL3RvL1xcXFxcXFwiLCBcXFxcXFxcIi5HSUZcXFxcXFxcIl1cXFxcbiAgICAgICAgfVxcXFxuICAgIH0pO1xcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIGNvbF90eXBlOiBcXFxcXFxcImxpbmVcXFxcXFxcIixcXFxcbiAgICAgICAgZXh0cmE6IHtcXFxcbiAgICAgICAgICAgIGlkOiB1cmxcXFxcbiAgICAgICAgfVxcXFxuICAgIH0pO1xcXFxuICAgIGlmICghaW5XaGl0ZSkge1xcXFxuICAgICAgICB0b2FzdChcXFxcXFxcIkFJ5Yy56YWN5aSx6LSl77yM5bey5L2/55SoWDXliqDovb1cXFxcXFxcIik7XFxcXG4gICAgfVxcXFxuICAgIHNldFJlc3VsdChkKTtcXFxcbn0gZWxzZSB7XFxcXG4gICAgc2V0UmVzdWx0KGQpO1xcXFxufVxcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIuS6jOe6p3BhcnNlXFxcIixcXFwicGF0aFxcXCI6XFxcInBhcnNlXFxcIixcXFwicnVsZVxcXCI6XFxcIiQuZXhwb3J0cyA9IGZ1bmN0aW9uKHJ1bGUsIHdlYiwgdXJsLCBodG1sKSB7XFxcXG4gICAgbGV0IGQgPSBbXTtcXFxcblxcXFxuICAgIGxldCBhbGlzdCA9IHBkZmEoaHRtbCwgXFxcXFxcXCJib2R5JiZhXFxcXFxcXCIpO1xcXFxuICAgIGxldCBhcnIgPSBhbGlzdC5tYXAoaXQgPT4ge1xcXFxuICAgICAgICByZXR1cm4ge1xcXFxuICAgICAgICAgICAgLy9odG1sOiBpdCxcXFxcbiAgICAgICAgICAgIHRleHQ6IHBkZmgoaXQsIFxcXFxcXFwiYSYmVGV4dFxcXFxcXFwiKSxcXFxcbiAgICAgICAgICAgIHRpdGxlOiBwZGZoKGl0LCBcXFxcXFxcImEmJnRpdGxlXFxcXFxcXCIpLFxcXFxuICAgICAgICAgICAgaHJlZjogcGQoaXQsIFxcXFxcXFwiYSYmaHJlZlxcXFxcXFwiLCB1cmwpXFxcXG4gICAgICAgIH1cXFxcbiAgICB9KTtcXFxcbiAgICAvL2xvZyhhcnIpO1xcXFxuICAgIGxldCBkZWJ1ZyA9IGZhbHNlO1xcXFxuXFxcXG4gICAgZnVuY3Rpb24gY2xlYXJUZXh0KGl0KSB7XFxcXG4gICAgICAgIHJldHVybiBpdC5yZXBsYWNlKC/nrKx86ZuGfOeroHzor50vZywgXFxcXFxcXCJcXFxcXFxcIik7XFxcXG4gICAgfVxcXFxuXFxcXG4gICAgZnVuY3Rpb24gaXNNb3ZpZShpdCkge1xcXFxuICAgICAgICBpZiAoaXQgPT0gbnVsbCB8fCBpdC50ZXh0ID09IG51bGwpIHtcXFxcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcXFxcbiAgICAgICAgfVxcXFxuICAgICAgICBsZXQgdGl0ID0gaXQudGl0bGUgfHwgXFxcXFxcXCJcXFxcXFxcIjtcXFxcbiAgICAgICAgaXQgPSBpdC50ZXh0IHx8IFxcXFxcXFwiXFxcXFxcXCI7XFxcXG4gICAgICAgIGlmIChpdCA9PSBcXFxcXFxcIlxcXFxcXFwiIHx8IGl0Lmxlbmd0aCA+IDgpIHtcXFxcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcXFxcbiAgICAgICAgfVxcXFxuICAgICAgICAvL+aOkumZpFxcXFxuICAgICAgICBsZXQgcmVnID0gL1xcXFxcXFxcLnzpq5jmuIXnm7Tmkq185YaZ55yf5o6o6I2QfOW9semZonzlvbHop4Z86JOd5YWJ55S15b2xfOmrmOa4heeUteW9sXznrKzkuIDlraN856ys5LqM5a2jfOesrOS4ieWto3znrKzlm5vlraN856ys5LqU5a2jLztcXFxcbiAgICAgICAgaWYgKHRpdCAhPSBcXFxcXFxcIlxcXFxcXFwiICYmICF0aXQuaW5jbHVkZXMoaXQpIHx8IHJlZy50ZXN0KGl0KSkge1xcXFxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xcXFxuICAgICAgICB9XFxcXG4gICAgICAgIHJldHVybiBpdC5tYXRjaCgv5Y6f55S7fOWkh+eUqHzok53lhYl86LaF5riFfOmrmOa4hXzmraPniYd86Z+p54mIfDRLfDRrfDEwODBQfDcyMFB8VEN8SER8QkQvKVxcXFxuICAgIH1cXFxcblxcXFxuICAgIGZ1bmN0aW9uIG5vdENoYXB0ZXIoaXQpIHtcXFxcbiAgICAgICAgaWYgKGl0ID09IG51bGwgfHwgaXQudGV4dCA9PSBudWxsKSB7XFxcXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcXFxcbiAgICAgICAgfVxcXFxuICAgICAgICByZXR1cm4gaXQudGV4dC5tYXRjaCgvWzAtOV1cXFxcXFxcXC5bMC05XeWIhi8pO1xcXFxuICAgIH1cXFxcblxcXFxuICAgIGZ1bmN0aW9uIGlzQ2hhcHRlcihpdCwgcHJlLCBuZXh0KSB7XFxcXG4gICAgICAgIGlmIChub3RDaGFwdGVyKGl0KSkge1xcXFxuICAgICAgICAgICAgLy/kvJjlhYjmjpLpmaRcXFxcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcXFxcbiAgICAgICAgfVxcXFxuICAgICAgICAvL+WIpOaWreaYr+S4jeaYr+eUteW9sVxcXFxuICAgICAgICBpZiAoaXNNb3ZpZShpdCkpIHtcXFxcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xcXFxuICAgICAgICB9XFxcXG4gICAgICAgIHJldHVybiBpc0NoYXB0ZXIwKGl0LCBwcmUpIHx8IGlzQ2hhcHRlcjAoaXQsIG5leHQpO1xcXFxuICAgIH1cXFxcblxcXFxuICAgIGZ1bmN0aW9uIGdldENoYXB0ZXJOdW0oaXQpIHtcXFxcbiAgICAgICAgaWYgKGl0ID09IG51bGwgfHwgaXQudGV4dCA9PSBudWxsKSB7XFxcXG4gICAgICAgICAgICByZXR1cm4gLTE7XFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgaXQgPSBpdC50ZXh0IHx8IFxcXFxcXFwiXFxcXFxcXCI7XFxcXG4gICAgICAgIGlmIChpdCA9PSBcXFxcXFxcIlxcXFxcXFwiKSB7XFxcXG4gICAgICAgICAgICByZXR1cm4gLTE7XFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgaXQgPSBjbGVhclRleHQoaXQpO1xcXFxuICAgICAgICBsZXQgcmVnID0gL15bMC05XSokLztcXFxcbiAgICAgICAgaWYgKCFyZWcudGVzdChpdCkpIHtcXFxcbiAgICAgICAgICAgIHJldHVybiAtMTtcXFxcbiAgICAgICAgfVxcXFxuICAgICAgICBpdCA9IHBhcnNlSW50KGl0KTtcXFxcbiAgICAgICAgaWYgKGlzTmFOKGl0KSkge1xcXFxuICAgICAgICAgICAgcmV0dXJuIC0xO1xcXFxuICAgICAgICB9XFxcXG4gICAgICAgIGlmIChpdCA+IDE5MDAgJiYgaXQgPCAyMTAwKSB7XFxcXG4gICAgICAgICAgICByZXR1cm4gLTE7XFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgcmV0dXJuIGl0O1xcXFxuICAgIH1cXFxcblxcXFxuICAgIGZ1bmN0aW9uIGlzQ2hhcHRlcjAoaXQsIGJyb3RoZXIpIHtcXFxcbiAgICAgICAgLyppZiAoZGVidWcpIHtcXFxcbiAgICAgICAgICAgIGxvZyh7XFxcXG4gICAgICAgICAgICAgICAgaXQ6IGl0LFxcXFxuICAgICAgICAgICAgICAgIGJyb3RoZXI6IGJyb3RoZXJcXFxcbiAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICB9Ki9cXFxcbiAgICAgICAgaXQgPSBnZXRDaGFwdGVyTnVtKGl0KTtcXFxcbiAgICAgICAgLy9pZiAoZGVidWcpIGxvZyhpdCk7XFxcXG4gICAgICAgIGlmIChpdCA8IDApIHtcXFxcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcXFxcbiAgICAgICAgfVxcXFxuICAgICAgICBicm90aGVyID0gZ2V0Q2hhcHRlck51bShicm90aGVyKTtcXFxcbiAgICAgICAgLy9pZiAoZGVidWcpIGxvZyhicm90aGVyKTtcXFxcbiAgICAgICAgaWYgKGJyb3RoZXIgPCAwKSB7XFxcXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgcmV0dXJuIGl0IC0gYnJvdGhlciA8IDIgJiYgaXQgLSBicm90aGVyID4gLTI7XFxcXG4gICAgfVxcXFxuXFxcXG4gICAgbGV0IF93ZWIgPSAkLnRvU3RyaW5nKCgpID0+IHtcXFxcbiAgICAgICAgbGV0IHVybHMgPSBfZ2V0VXJscygpO1xcXFxuICAgICAgICBsZXQgcmVnID0gL1xcXFxcXFxcLmh0bWx8XFxcXFxcXFwuY3NzfFxcXFxcXFxcLmpzLztcXFxcbiAgICAgICAgZm9yIChsZXQgayBpbiB1cmxzKSB7XFxcXG4gICAgICAgICAgICBpZiAoIXJlZy50ZXN0KHVybHNba10pICYmIHVybHNba10ubWF0Y2goL1xcXFxcXFxcLm1wNHxcXFxcXFxcXC5tM3U4LykpIHtcXFxcbiAgICAgICAgICAgICAgICBmeV9icmlkZ2VfYXBwLmxvZyh1cmxzW2tdKTtcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gZnlfYnJpZGdlX2FwcC5nZXRIZWFkZXJVcmwodXJsc1trXS5yZXBsYWNlKC8uKj91cmw9LywgXFxcXFxcXCJcXFxcXFxcIikpICsgXFxcXFxcXCIjaWdub3JlSW1nPXRydWUjXFxcXFxcXCI7XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgIH1cXFxcbiAgICB9KTtcXFxcblxcXFxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XFxcXG4gICAgICAgIGxldCBpdCA9IGFycltpXTtcXFxcbiAgICAgICAgbGV0IHQgPSBpdC50ZXh0O1xcXFxuICAgICAgICBpZiAoIWl0LmhyZWYgfHwgaXQuaHJlZiA9PSBcXFxcXFxcIlxcXFxcXFwiKSB7XFxcXG4gICAgICAgICAgICBjb250aW51ZTtcXFxcbiAgICAgICAgfVxcXFxuICAgICAgICBsZXQgcHJlID0gaSA9PSAwID8gbnVsbCA6IGFycltpIC0gMV07XFxcXG4gICAgICAgIGxldCBuZXh0ID0gaSA9PSAoYXJyLmxlbmd0aCAtIDEpID8gbnVsbCA6IGFycltpICsgMV07XFxcXG4gICAgICAgIGlmIChpc0NoYXB0ZXIoaXQsIHByZSwgbmV4dCkpIHtcXFxcbiAgICAgICAgICAgIGlmICh3ZWIpIHtcXFxcbiAgICAgICAgICAgICAgICB2YXIgdXJseCA9IFxcXFxcXFwid2ViUnVsZTovL1xcXFxcXFwiICsgaXQuaHJlZiArIFxcXFxcXFwiQFxcXFxcXFwiICsgX3dlYjtcXFxcbiAgICAgICAgICAgICAgICB2YXIgZXh0cmF4ID0ge1xcXFxuICAgICAgICAgICAgICAgICAgICBqc0xvYWRpbmdJbmplY3Q6IHRydWUsXFxcXG4gICAgICAgICAgICAgICAgICAgIGlkOiBpdC5ocmVmLFxcXFxuICAgICAgICAgICAgICAgICAgICBibG9ja1J1bGVzOiBbJy5tNGEnLCAnLm1wMycsICcuZmx2JywgJy5hdmknLCAnLjNncCcsICcubXBlZycsICcud212JywgJy5tb3YnLCAnLnJtdmInLCAnLmdpZicsICcuanBlZycsICcucG5nJywgJy5pY28nLCAnLnN2ZyddXFxcXG4gICAgICAgICAgICAgICAgfTtcXFxcbiAgICAgICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICAgICAgdmFyIHVybHggPSBcXFxcXFxcInZpZGVvOi8vXFxcXFxcXCIgKyBpdC5ocmVmO1xcXFxuICAgICAgICAgICAgICAgIHZhciBleHRyYXggPSB7XFxcXG4gICAgICAgICAgICAgICAgICAgIGlkOiBpdC5ocmVmXFxcXG4gICAgICAgICAgICAgICAgfTtcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHQsXFxcXG4gICAgICAgICAgICAgICAgdXJsOiB1cmx4LFxcXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFxcXFxcInRleHRfM1xcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgIGV4dHJhOiBleHRyYXhcXFxcbiAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICB9XFxcXG4gICAgfVxcXFxuICAgIGlmIChkLmxlbmd0aCA9PSAwKSB7XFxcXG4gICAgICAgIHJldHVybiBkO1xcXFxuICAgIH0gZWxzZSB7XFxcXG4gICAgICAgIGQuc3BsaWNlKDAsIDAsIHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiBcXFxcXFxcIuKAnOKAnOKAneKAnTxzbWFsbD48Zm9udCBjb2xvcj0nI2FhYWFhYSc+8J+Ul1xcXFxcXFwiICsgdXJsICsgXFxcXFxcXCI8L2ZvbnQ+PC9zbWFsbD5cXFxcXFxcIixcXFxcbiAgICAgICAgICAgIHVybDogXFxcXFxcXCJoaWtlcjovL3BhZ2UveXNmeD9ydWxlPVxcXFxcXFwiICsgcnVsZSArIFxcXFxcXFwiJnI9XFxcXFxcXCIgKyBydWxlICsgXFxcXFxcXCIjI1xcXFxcXFwiICsgdXJsLFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwidGV4dF8xXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICBleHRyYToge1xcXFxuICAgICAgICAgICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZVxcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICB9KTtcXFxcbiAgICAgICAgLy/kuLrnur/ot6/liqDliIblibLnur9cXFxcbiAgICAgICAgbGV0IGQyID0gW107XFxcXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZC5sZW5ndGg7IGkrKykge1xcXFxuICAgICAgICAgICAgZDIucHVzaChkW2ldKTtcXFxcbiAgICAgICAgICAgIGlmIChpIDwgZC5sZW5ndGggLSAxKSB7XFxcXG4gICAgICAgICAgICAgICAgbGV0IGl0ID0gZFtpXTtcXFxcbiAgICAgICAgICAgICAgICBsZXQgdDEgPSBwYXJzZUludChjbGVhclRleHQoaXQudGl0bGUpKTtcXFxcbiAgICAgICAgICAgICAgICBsZXQgbmV4dCA9IGRbaSArIDFdO1xcXFxuICAgICAgICAgICAgICAgIGxldCB0MiA9IHBhcnNlSW50KGNsZWFyVGV4dChuZXh0LnRpdGxlKSk7XFxcXG4gICAgICAgICAgICAgICAgaWYgKHQyIC0gdDEgPiAxIHx8IHQxIC0gdDIgPiAxKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgIGQyLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwiYmlnX2JsYW5rX2Jsb2NrXFxcXFxcXCJcXFxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICAgICAgICAgIGQyLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwibGluZV9ibGFua1xcXFxcXFwiXFxcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgICAgICAgICBkMi5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFxcXFxcImJpZ19ibGFua19ibG9ja1xcXFxcXFwiXFxcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgfSAgICAgICBcXFxcbiAgICAgICAgZDIucHVzaCh7XFxcXG4gICAgICAgICAgICB0aXRsZTogXFxcXFxcXCI8c21hbGw+PGZvbnQgY29sb3I9JyNhYWFhYWEnPuWMuemFjeacieivr++8n+eCueaIkeS4jeWGjeWMuemFjeatpOmhtemdojwvZm9udD48L3NtYWxsPlxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgdXJsOiAkKFxcXFxcXFwiI25vTG9hZGluZyNcXFxcXFxcIikubGF6eVJ1bGUoKHVybCkgPT4ge1xcXFxuICAgICAgICAgICAgICAgIGNvbmZpcm0oe1xcXFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogXFxcXFxcXCLmuKnppqjmj5DnpLpcXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogXFxcXFxcXCLlpoLmnpzlj6rmmK/ljZXmrKHljLnphY3lpLHotKXvvIzngrnlh7vkuIvmlrnlj5bmtojmjInpkq7liLfmlrDpobXpnaLph43mlrDljLnphY3vvIzlpoLmnpznoa7orqTml6Dms5XljLnphY3vvIzngrnlh7vkuIvmlrnnoa7lrprmjInpkq7liqDlhaXnmb3lkI3ljZVcXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICAgICAgY2FuY2VsOiBcXFxcXFxcInJlZnJlc2hQYWdlKClcXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlybTogJC50b1N0cmluZygodXJsKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbGlzdCA9IHN0b3JhZ2UwLmdldEl0ZW0oXFxcXFxcXCJ3aGl0ZVxcXFxcXFwiLCBbXSk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBsaXN0LnB1c2godXJsKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2UwLnNldEl0ZW0oXFxcXFxcXCJ3aGl0ZVxcXFxcXFwiLCBsaXN0KTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL+W3suWKoOWFpeeZveWQjeWNlVxcXFxcXFwiXFxcXG4gICAgICAgICAgICAgICAgICAgIH0sIHVybClcXFxcbiAgICAgICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJoaWtlcjovL2VtcHR5XFxcXFxcXCJcXFxcbiAgICAgICAgICAgIH0sIHVybCksXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcXFxcXCJhdmF0YXJcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIGltZzogXFxcXFxcXCJoaWtlcjovL2ltYWdlcy9hY2NvdW50XFxcXFxcXCJcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgICAgIHJldHVybiBkMjtcXFxcbiAgICB9XFxcXG59XFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwieDVBSVxcXCIsXFxcInBhdGhcXFwiOlxcXCJ4NWFpXFxcIixcXFwicnVsZVxcXCI6XFxcIiQuZXhwb3J0cyA9IGZ1bmN0aW9uKHJ1bGUsIGFuY2hvcklkKSB7XFxcXG4gICAgcmV0dXJuICQudG9TdHJpbmcoKHJ1bGUsIGFuY2hvcklkLCB3aGl0ZSkgPT4ge1xcXFxuICAgICAgICBpZiAod2luZG93LmNoZWNrMCA9PSBudWxsKSB7XFxcXG4gICAgICAgICAgICBmdW5jdGlvbiBjaGVjazAoKSB7XFxcXG4gICAgICAgICAgICAgICAgdHJ5IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgbGV0IHUxID0gbG9jYXRpb24uaHJlZi5yZXBsYWNlKFxcXFxcXFwiaHR0cHM6Ly9cXFxcXFxcIiwgXFxcXFxcXCJcXFxcXFxcIikucmVwbGFjZShcXFxcXFxcImh0dHA6Ly9cXFxcXFxcIiwgXFxcXFxcXCJcXFxcXFxcIik7XFxcXG4gICAgICAgICAgICAgICAgICAgIGxldCB1MiA9IHUxLnNwbGl0KFxcXFxcXFwiL1xcXFxcXFwiKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgbGV0IGlzSG9tZSA9IHUyLmxlbmd0aCA8IDIgfHwgKHUyLmxlbmd0aCA9PSAyICYmIHUyWzFdID09IFxcXFxcXFwiXFxcXFxcXCIpO1xcXFxuICAgICAgICAgICAgICAgICAgICBsZXQgaCA9IGxvY2F0aW9uLmhhc2g7XFxcXG4gICAgICAgICAgICAgICAgICAgIGlmIChoICE9IG51bGwgJiYgaCAhPSBcXFxcXFxcIlxcXFxcXFwiICYmIGggIT0gXFxcXFxcXCIjL1xcXFxcXFwiKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0hvbWUgPSBmYWxzZTtcXFxcbiAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNIb21lKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHdpbmRvdy5jaGVjazAsIDI1MCk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5cXFxcbiAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICBsZXQgaHRtbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXFxcXFxcXCJodG1sXFxcXFxcXCIpLmlubmVySFRNTDtcXFxcbiAgICAgICAgICAgICAgICAgICAgZmJhLnB1dFZhcihcXFxcXFxcImh0bWwwXFxcXFxcXCIsIGh0bWwpO1xcXFxuICAgICAgICAgICAgICAgICAgICBmYmEucGFyc2VMYXp5UnVsZUFzeW5jKCQkJCgpLmxhenlSdWxlKChydWxlLCB1cmwsIGFuY2hvcklkLCB3aGl0ZSkgPT4ge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZCA9IFtdO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBodG1sID0gZ2V0VmFyKFxcXFxcXFwiaHRtbDBcXFxcXFxcIiwgXFxcXFxcXCJcXFxcXFxcIik7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJWYXIoXFxcXFxcXCJodG1sMFxcXFxcXFwiKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgd2ViID0gZmFsc2U7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHdoaXRlMiA9IFtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcXFxcXCJmc291LmNvbVxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxcImJpbmcuXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcGFyc2UgPSAkLnJlcXVpcmUoXFxcXFxcXCJoaWtlcjovL3BhZ2UvcGFyc2U/cnVsZT1cXFxcXFxcIiArIHJ1bGUpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbldoaXRlID0gd2hpdGUyLmZpbHRlcihpdCA9PiB1cmwuaW5jbHVkZXMoaXQpKS5sZW5ndGggPiAwO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaW5XaGl0ZSAmJiAhd2hpdGUuaW5jbHVkZXModXJsKSkge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gcGFyc2UocnVsZSwgd2ViLCB1cmwsIGh0bWwpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWluV2hpdGUgJiYgZC5sZW5ndGggPCAxKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYXJyID0gcGRmYShodG1sLCBcXFxcXFxcImJvZHkmJmlmcmFtZVxcXFxcXFwiKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhcnIubGVuZ3RoID4gMCkge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzcmMgPSBwZGZoKGFyclswXSwgXFxcXFxcXCJpZnJhbWUmJnNyY1xcXFxcXFwiKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2coXFxcXFxcXCLojrflj5bliLBpZnJhbWXvvJpcXFxcXFxcIiArIHNyYyk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF3aGl0ZS5pbmNsdWRlcyhzcmMpKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzcmMgJiYgc3JjLnN0YXJ0c1dpdGgoXFxcXFxcXCJodHRwXFxcXFxcXCIpICYmICFzcmMubWF0Y2goL1xcXFxcXFxcLm1wNHxcXFxcXFxcXC5tM3U4fFxcXFxcXFxcLm1wM3xcXFxcXFxcXC5mbHZ8XFxcXFxcXFwubWt2LykpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwgPSByZXF1ZXN0KHNyYyk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gcGFyc2UocnVsZSwgd2ViLCBzcmMsIGh0bWwpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2coXFxcXFxcXCLlsJ3or5Xojrflj5ZpZnJhbWXlpLHotKVcXFxcXFxcIik7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGQubGVuZ3RoID4gMCkge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkWzBdLnVybCA9ICQoXFxcXFxcXCIjbm9Mb2FkaW5nI1xcXFxcXFwiKS5sYXp5UnVsZSgoYW5jaG9ySWQpID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkZXNjID0gZ2V0VmFyKGFuY2hvcklkLCBcXFxcXFxcIjBcXFxcXFxcIik7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGVzYyA9PSBcXFxcXFxcIjBcXFxcXFxcIikge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hYNURlc2MoXFxcXFxcXCJmbG9hdCYmc2NyZWVuLTE3MFxcXFxcXFwiKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoYW5jaG9ySWQsIFxcXFxcXFwiMVxcXFxcXFwiKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFg1RGVzYyhcXFxcXFxcImZsb2F0JiYwXFxcXFxcXCIpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcihhbmNob3JJZCwgXFxcXFxcXCIwXFxcXFxcXCIpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwiaGlrZXI6Ly9lbXB0eVxcXFxcXFwiO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBhbmNob3JJZCArIFxcXFxcXFwieDVcXFxcXFxcIik7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRbMF0udGl0bGUgPSBcXFxcXFxcIuWxleW8gC/mlLbotbdcXFxcXFxcIiArIGRbMF0udGl0bGU7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcihhbmNob3JJZCArIFxcXFxcXFwieDVcXFxcXFxcIiwgXFxcXFxcXCIwXFxcXFxcXCIpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoWDVEZXNjKFxcXFxcXFwiZmxvYXQmJjBcXFxcXFxcIik7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGl0IG9mIGQpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBleHRyYSA9IGl0LmV4dHJhIHx8IHt9O1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmEuY2xzID0gXFxcXFxcXCJ4NWFpXFxcXFxcXCI7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5leHRyYSA9IGV4dHJhO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZUl0ZW1CeUNscyhcXFxcXFxcIng1YWlcXFxcXFxcIik7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZEl0ZW1BZnRlcihhbmNob3JJZCwgZCk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvYXN0KFxcXFxcXFwiQUnljLnphY3miJDlip9cXFxcXFxcIik7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkLmxlbmd0aCA+IDApIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nKFxcXFxcXFwicGFyc2VMYXp5UnVsZUFzeW5jOlxcXFxcXFwiICsgZC5sZW5ndGgpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZC5sZW5ndGggPiAwID8gXFxcXFxcXCIxXFxcXFxcXCIgOiBcXFxcXFxcIjBcXFxcXFxcIjtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2coZS50b1N0cmluZygpKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgfSwgcnVsZSwgbG9jYXRpb24uaHJlZiwgYW5jaG9ySWQsIHdoaXRlKSwgJCQkLnRvU3RyaW5nKCgpID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcXFxcXFxcIjBcXFxcXFxcIiA9PSBpbnB1dCkge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5jaGVja2MgPSB3aW5kb3cuY2hlY2tjICsgMTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKmlmICh3aW5kb3cuY2hlY2tjID4gMTIwKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZiYS5sb2coXFxcXFxcXCLmiafooYzotoXov4czMOenku+8jOaXoOazleino+aekFxcXFxcXFwiKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeyovXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCh3aW5kb3cuY2hlY2swLCAyNTApO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vfVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuY2hlY2t1cmwgPSBsb2NhdGlvbi5ocmVmO1xcXFxuXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gY2hlY2t1MCgpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5jaGVja3VybCAhPSBsb2NhdGlvbi5ocmVmKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2hhc2jlj5HnlJ/kuoblj5jljJZcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmNoZWNrYyA9IDA7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2swKCk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAyMDAwKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoY2hlY2t1MCwgMjUwKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja3UwKCk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcXFxcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgIGZiYS5sb2coZS50b1N0cmluZygpKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCh3aW5kb3cuY2hlY2swLCAyNTApO1xcXFxuICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIHdpbmRvdy5jaGVja2MgPSAwO1xcXFxuICAgICAgICAgICAgd2luZG93LmNoZWNrMCA9IGNoZWNrMDtcXFxcbiAgICAgICAgICAgIGNoZWNrMCgpO1xcXFxuICAgICAgICB9XFxcXG4gICAgfSwgcnVsZSwgYW5jaG9ySWQsIHN0b3JhZ2UwLmdldEl0ZW0oXFxcXFxcXCJ3aGl0ZVxcXFxcXFwiLCBbXSkpO1xcXFxufVxcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIummlumhtVxcXCIsXFxcInBhdGhcXFwiOlxcXCJob21lXFxcIixcXFwicnVsZVxcXCI6XFxcInZhciBkID0gW107XFxcXG5sZXQgdXJsID0g572R56uZO1xcXFxubGV0IGFuY2hvcklkID0gdXJsO1xcXFxubGV0IGpzID0gJC5yZXF1aXJlKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL3g1YWlcXFxcXFxcIikoTVlfUlVMRS50aXRsZSwgYW5jaG9ySWQpO1xcXFxubGV0IGl0ZSA9ICQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vcGFnZS91XFxcXFxcXCIpKE1ZX1JVTEUudGl0bGUsIGdldEhvbWUodXJsKSk7XFxcXG5kLnB1c2goe1xcXFxuICAgIHRpdGxlOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgIHVybDogdXJsLFxcXFxuICAgIGNvbF90eXBlOiBcXFxcXFxcIng1X3dlYnZpZXdfc2luZ2xlXFxcXFxcXCIsXFxcXG4gICAgZGVzYzogXFxcXFxcXCIxMDAlJiZmbG9hdFxcXFxcXFwiLFxcXFxuICAgIHBpY191cmw6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgZXh0cmE6IHtcXFxcbiAgICAgICAgdXJsSW50ZXJjZXB0b3I6IGl0ZSxcXFxcbiAgICAgICAgY2FuQmFjazogdHJ1ZSxcXFxcbiAgICAgICAganM6IGpzLFxcXFxuICAgICAgICBqc0xvYWRpbmdJbmplY3Q6IHRydWUsXFxcXG4gICAgICAgIGJsb2NrUnVsZXM6IFtcXFxcXFxcIi5naWZcXFxcXFxcIiwgXFxcXFxcXCIvYWQvXFxcXFxcXCIsIFxcXFxcXFwiL2Fkcy9cXFxcXFxcIiwgXFxcXFxcXCJnb29nbGVcXFxcXFxcIiwgXFxcXFxcXCIvc2gvdG8vXFxcXFxcXCIsIFxcXFxcXFwiLkdJRlxcXFxcXFwiXVxcXFxuICAgIH1cXFxcbn0pO1xcXFxuZC5wdXNoKHtcXFxcbiAgICBjb2xfdHlwZTogXFxcXFxcXCJsaW5lXFxcXFxcXCIsXFxcXG4gICAgZXh0cmE6IHtcXFxcbiAgICAgICAgaWQ6IGFuY2hvcklkXFxcXG4gICAgfVxcXFxufSk7XFxcXG5cXFxcbnNldFJlc3VsdChkKTtcXFwifV1cIixcInByb3h5XCI6XCJcIn0iLCJ0aXRsZSI6IuS8pueQhueUteW9sSAtIOWcqOe6v+i/veWJpyAtIOWCu+WCu+e9kSJ9
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement