Advertisement
xiaomianao666

邀您一起看:【封茗囧菌】今晚月色,扑朔迷离般《朦胧》

Oct 3rd, 2022
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:二级页面详情¥page_detail¥【封茗囧菌】今晚月色,扑朔迷离般《朦胧》@@eyJkYXRhIjoie1wiYXNzb2NpYXRlZE1vZGVsc01hcEZvckpvaW5UYWJsZVwiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhGS1wiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhvdXRGS1wiOnt9LFwiZmllbGRzVG9TZXRUb0RlZmF1bHRcIjpbXSxcImlkXCI6MCxcImxhc3RfY2hhcHRlcl9ydWxlXCI6XCJcIixcImxpc3RUb0NsZWFyQXNzb2NpYXRlZEZLXCI6W10sXCJsaXN0VG9DbGVhclNlbGZGS1wiOltdLFwicGFnZUxpc3RcIjpbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuWIhuexu+eJh+W6k1wiLFwicGF0aFwiOlwidmF1bHRcIixcInJ1bGVcIjpcIumhtumDqOWkp+exuyA9IFsn5Zu95YibJywgJ+eUteinhicsICfnuqrlvZXniYcnLCAn57u86Im6JywgJ+eVquWJpycsICfnlLXlvbEnXVxcblxcbmlmIChwYWdlID09IDEpIHtcXG5cXG7CoCDCoCAvLyDmipjlj6DlvIDlhbNcXG5cXG7CoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIHRpdGxlOiBnZXRNeVZhcign5oqY5Y+gJywgJ+WFsycpID09ICflhbMnID8gJ+KAnOKAnOKAneKAnTxiPjxzcGFuIHN0eWxlPVxcXCJjb2xvcjogI0ZGMDAwMFxcXCI+4oioPC9zcGFuPjwvYj4nIDogJ+KAnOKAnOKAneKAnTxiPjxzcGFuIHN0eWxlPVxcXCJjb2xvcjogIzFhYWQxOVxcXCI+4oinPC9zcGFuPjwvYj4nLFxcblxcbsKgIMKgIMKgIMKgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgaWYgKGdldE15VmFyKCfmipjlj6AnLCAn5YWzJykgPT0gJ+W8gCcpIHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBwdXRNeVZhcign5oqY5Y+gJywgJ+WFsycpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIH0gZWxzZSB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcHV0TXlWYXIoJ+aKmOWPoCcsICflvIAnKTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIjtcXG5cXG7CoCDCoCDCoCDCoCB9KSxcXG5cXG7CoCDCoCDCoCDCoCBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nLFxcblxcbsKgIMKgIH0pXFxuXFxuwqAgwqAg6aG26YOo5aSn57G7LmZvckVhY2gobGkgPT4ge1xcblxcbsKgIMKgIMKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IGxpID09IGdldE15VmFyKCflpKfnsbsnLCAn5Zu95YibJykgPyAn4oCc4oCc4oCd4oCdPGI+PGZvbnQgY29sb3I9IzFhYWQxOT4nICsgbGkgKyAnPC9mb250PjwvYj4nIDogbGksXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChsaSkgPT4ge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHB1dE15VmFyKCflpKfnsbsnLCBsaSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIjtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB9LCBsaSksXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcXG5cXG7CoCDCoCDCoCDCoCB9KVxcblxcbsKgIMKgIH0pO1xcblxcbsKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdibGFua19ibG9jaydcXG5cXG7CoCDCoCB9KVxcblxcbn1cXG5cXG4vLyDpobbpg6jliIbnsbvlj4LmlbDmmKDlsIRcXG5cXG5zd2l0Y2ggKGdldE15VmFyKCflpKfnsbsnLCAn5Zu95YibJykpIHtcXG5cXG7CoCDCoCBjYXNlICflm73liJsnOlxcblxcbsKgIMKgIMKgIMKgIHNlYXNvblR5cGUgPSA0O1xcblxcbsKgIMKgIMKgIMKgIGlmIChnZXRNeVZhcign5oqY5Y+gJywgJ+WFsycpID09ICflvIAnKSB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgaWYgKHBhZ2UgPT0gMSkge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGh0bWwgPSBmZXRjaCgnaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL2d1b2NodWFuZy9pbmRleCcpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIOWIhuexu+WIl+ihqCA9IHBkZmEoaHRtbCwgJy5maWx0ZXItbGlzdCYmLmZpbHRlci1ibG9jaycpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIOWIhuexu+WIl+ihqC5mb3JFYWNoKHVsID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDnrZvpgInmnaHku7YgPSBwZGZoKHVsLCAnLmZpbHRlci1uYW1lJiZUZXh0Jyk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg5a2Q5YiG57G75YiX6KGoID0gcGRmYSh1bCwgJ3VsJiZsaScpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIOWtkOWIhuexu+WIl+ihqC5mb3JFYWNoKGxpID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZiAocGRmaChsaSwgJ2xpJiZUZXh0JykgPT0gJ+WFtuS7licpIHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXR1cm47XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IGdldE15VmFyKOetm+mAieadoeS7tiwgJ+WFqOmDqCcpID09IHBkZmgobGksICdsaSYmVGV4dCcpID8gJ+KAnOKAnOKAneKAnTxiPjxmb250IGNvbG9yPSMxYWFkMTk+JyArIHBkZmgobGksICdsaSYmVGV4dCcpICsgJzwvZm9udD48L2I+JyA6IHBkZmgobGksICdsaSYmVGV4dCcpLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgobGksIOetm+mAieadoeS7tikgPT4ge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHB1dE15VmFyKOetm+mAieadoeS7tiwgcGRmaChsaSwgJ2xpJiZUZXh0JykpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJlZnJlc2hQYWdlKHRydWUpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSwgbGksIOetm+mAieadoeS7tiksXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ2JsYW5rX2Jsb2NrJ1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfnlLXop4YnOlxcblxcbsKgIMKgIMKgIMKgIHNlYXNvblR5cGUgPSA1O1xcblxcbsKgIMKgIMKgIMKgIGlmIChnZXRNeVZhcign5oqY5Y+gJywgJ+WFsycpID09ICflvIAnKSB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgaWYgKHBhZ2UgPT0gMSkge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGh0bWwgPSBmZXRjaCgnaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL3R2L2luZGV4Jyk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg5YiG57G75YiX6KGoID0gcGRmYShodG1sLCAnLmZpbHRlci1saXN0JiYuZmlsdGVyLWJsb2NrJyk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg5YiG57G75YiX6KGoLmZvckVhY2godWwgPT4ge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIOetm+mAieadoeS7tiA9IHBkZmgodWwsICcuZmlsdGVyLW5hbWUmJlRleHQnKTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDlrZDliIbnsbvliJfooaggPSBwZGZhKHVsLCAndWwmJmxpJyk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg5a2Q5YiG57G75YiX6KGoLmZvckVhY2gobGkgPT4ge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlmIChwZGZoKGxpLCAnbGkmJlRleHQnKSA9PSAn5YW25LuWJykge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybjtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogZ2V0TXlWYXIo562b6YCJ5p2h5Lu2LCAn5YWo6YOoJykgPT0gcGRmaChsaSwgJ2xpJiZUZXh0JykgPyAn4oCc4oCc4oCd4oCdPGI+PGZvbnQgY29sb3I9IzFhYWQxOT4nICsgcGRmaChsaSwgJ2xpJiZUZXh0JykgKyAnPC9mb250PjwvYj4nIDogcGRmaChsaSwgJ2xpJiZUZXh0JyksXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChsaSwg562b6YCJ5p2h5Lu2KSA9PiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcHV0TXlWYXIo562b6YCJ5p2h5Lu2LCBwZGZoKGxpLCAnbGkmJlRleHQnKSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIjtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9LCBsaSwg562b6YCJ5p2h5Lu2KSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSlcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiAnYmxhbmtfYmxvY2snXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSlcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+e6quW9leeJhyc6XFxuXFxuwqAgwqAgwqAgwqAgc2Vhc29uVHlwZSA9IDM7XFxuXFxuwqAgwqAgwqAgwqAgaWYgKGdldE15VmFyKCfmipjlj6AnLCAn5YWzJykgPT0gJ+W8gCcpIHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBpZiAocGFnZSA9PSAxKSB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaHRtbCA9IGZldGNoKCdodHRwczovL3d3dy5iaWxpYmlsaS5jb20vZG9jdW1lbnRhcnkvaW5kZXgvJyk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg5YiG57G75YiX6KGoID0gcGRmYShodG1sLCAnLmZpbHRlci1saXN0JiYuZmlsdGVyLWJsb2NrJyk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg5YiG57G75YiX6KGoLmZvckVhY2godWwgPT4ge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIOetm+mAieadoeS7tiA9IHBkZmgodWwsICcuZmlsdGVyLW5hbWUmJlRleHQnKTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDlrZDliIbnsbvliJfooaggPSBwZGZhKHVsLCAndWwmJmxpJyk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg5a2Q5YiG57G75YiX6KGoLmZvckVhY2gobGkgPT4ge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlmIChwZGZoKGxpLCAnbGkmJlRleHQnKSA9PSAn5YW25LuWJykge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybjtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogZ2V0TXlWYXIo562b6YCJ5p2h5Lu2LCAn5YWo6YOoJykgPT0gcGRmaChsaSwgJ2xpJiZUZXh0JykgPyAn4oCc4oCc4oCd4oCdPGI+PGZvbnQgY29sb3I9IzFhYWQxOT4nICsgcGRmaChsaSwgJ2xpJiZUZXh0JykgKyAnPC9mb250PjwvYj4nIDogcGRmaChsaSwgJ2xpJiZUZXh0JyksXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChsaSwg562b6YCJ5p2h5Lu2KSA9PiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcHV0TXlWYXIo562b6YCJ5p2h5Lu2LCBwZGZoKGxpLCAnbGkmJlRleHQnKSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIjtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9LCBsaSwg562b6YCJ5p2h5Lu2KSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSlcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiAnYmxhbmtfYmxvY2snXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSlcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+e7vOiJuic6XFxuXFxuwqAgwqAgwqAgwqAgc2Vhc29uVHlwZSA9IDc7XFxuXFxuwqAgwqAgwqAgwqAgaWYgKGdldE15VmFyKCfmipjlj6AnLCAn5YWzJykgPT0gJ+W8gCcpIHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBpZiAocGFnZSA9PSAxKSB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaHRtbCA9IGZldGNoKCdodHRwczovL3d3dy5iaWxpYmlsaS5jb20vdmFyaWV0eS9pbmRleCcpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIOWIhuexu+WIl+ihqCA9IHBkZmEoaHRtbCwgJy5maWx0ZXItbGlzdCYmLmZpbHRlci1ibG9jaycpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIOWIhuexu+WIl+ihqC5mb3JFYWNoKHVsID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDnrZvpgInmnaHku7YgPSBwZGZoKHVsLCAnLmZpbHRlci1uYW1lJiZUZXh0Jyk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg5a2Q5YiG57G75YiX6KGoID0gcGRmYSh1bCwgJ3VsJiZsaScpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIOWtkOWIhuexu+WIl+ihqC5mb3JFYWNoKGxpID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZiAocGRmaChsaSwgJ2xpJiZUZXh0JykgPT0gJ+WFtuS7licpIHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXR1cm47XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IGdldE15VmFyKOetm+mAieadoeS7tiwgJ+WFqOmDqCcpID09IHBkZmgobGksICdsaSYmVGV4dCcpID8gJ+KAnOKAnOKAneKAnTxiPjxmb250IGNvbG9yPSMxYWFkMTk+JyArIHBkZmgobGksICdsaSYmVGV4dCcpICsgJzwvZm9udD48L2I+JyA6IHBkZmgobGksICdsaSYmVGV4dCcpLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgobGksIOetm+mAieadoeS7tikgPT4ge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHB1dE15VmFyKOetm+mAieadoeS7tiwgcGRmaChsaSwgJ2xpJiZUZXh0JykpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJlZnJlc2hQYWdlKHRydWUpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSwgbGksIOetm+mAieadoeS7tiksXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ2JsYW5rX2Jsb2NrJ1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfnlarliacnOlxcblxcbsKgIMKgIMKgIMKgIHNlYXNvblR5cGUgPSAxO1xcblxcbsKgIMKgIMKgIMKgIGlmIChnZXRNeVZhcign5oqY5Y+gJywgJ+WFsycpID09ICflvIAnKSB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgaWYgKHBhZ2UgPT0gMSkge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGh0bWwgPSBmZXRjaCgnaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL2FuaW1lL2luZGV4Jyk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg5YiG57G75YiX6KGoID0gcGRmYShodG1sLCAnLmZpbHRlci1saXN0JiYuZmlsdGVyLWJsb2NrJyk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg5YiG57G75YiX6KGoLmZvckVhY2godWwgPT4ge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIOetm+mAieadoeS7tiA9IHBkZmgodWwsICcuZmlsdGVyLW5hbWUmJlRleHQnKTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDlrZDliIbnsbvliJfooaggPSBwZGZhKHVsLCAndWwmJmxpJyk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg5a2Q5YiG57G75YiX6KGoLmZvckVhY2gobGkgPT4ge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlmIChwZGZoKGxpLCAnbGkmJlRleHQnKSA9PSAn5YW25LuWJykge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybjtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogZ2V0TXlWYXIo562b6YCJ5p2h5Lu2LCAn5YWo6YOoJykgPT0gcGRmaChsaSwgJ2xpJiZUZXh0JykgPyAn4oCc4oCc4oCd4oCdPGI+PGZvbnQgY29sb3I9IzFhYWQxOT4nICsgcGRmaChsaSwgJ2xpJiZUZXh0JykgKyAnPC9mb250PjwvYj4nIDogcGRmaChsaSwgJ2xpJiZUZXh0JyksXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChsaSwg562b6YCJ5p2h5Lu2KSA9PiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcHV0TXlWYXIo562b6YCJ5p2h5Lu2LCBwZGZoKGxpLCAnbGkmJlRleHQnKSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIjtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9LCBsaSwg562b6YCJ5p2h5Lu2KSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSlcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiAnYmxhbmtfYmxvY2snXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSlcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+eUteW9sSc6XFxuXFxuwqAgwqAgwqAgwqAgc2Vhc29uVHlwZSA9IDI7XFxuXFxuwqAgwqAgwqAgwqAgaWYgKGdldE15VmFyKCfmipjlj6AnLCAn5YWzJykgPT0gJ+W8gCcpIHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBpZiAocGFnZSA9PSAxKSB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaHRtbCA9IGZldGNoKCdodHRwczovL3d3dy5iaWxpYmlsaS5jb20vbW92aWUvaW5kZXgnKTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDliIbnsbvliJfooaggPSBwZGZhKGh0bWwsICcuZmlsdGVyLWxpc3QmJi5maWx0ZXItYmxvY2snKTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDliIbnsbvliJfooaguZm9yRWFjaCh1bCA9PiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg562b6YCJ5p2h5Lu2ID0gcGRmaCh1bCwgJy5maWx0ZXItbmFtZSYmVGV4dCcpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIOWtkOWIhuexu+WIl+ihqCA9IHBkZmEodWwsICd1bCYmbGknKTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDlrZDliIbnsbvliJfooaguZm9yRWFjaChsaSA9PiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKHBkZmgobGksICdsaSYmVGV4dCcpID09ICflhbbku5YnKSB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBnZXRNeVZhcijnrZvpgInmnaHku7YsICflhajpg6gnKSA9PSBwZGZoKGxpLCAnbGkmJlRleHQnKSA/ICfigJzigJzigJ3igJ08Yj48Zm9udCBjb2xvcj0jMWFhZDE5PicgKyBwZGZoKGxpLCAnbGkmJlRleHQnKSArICc8L2ZvbnQ+PC9iPicgOiBwZGZoKGxpLCAnbGkmJlRleHQnKSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKGxpLCDnrZvpgInmnaHku7YpID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBwdXRNeVZhcijnrZvpgInmnaHku7YsIHBkZmgobGksICdsaSYmVGV4dCcpKTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZWZyZXNoUGFnZSh0cnVlKTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0sIGxpLCDnrZvpgInmnaHku7YpLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdibGFua19ibG9jaydcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgZGVmYXVsdDpcXG5cXG7CoCDCoCDCoCDCoCBzZWFzb25UeXBlID0gNDtcXG5cXG7CoCDCoCDCoCDCoCBpZiAoZ2V0TXlWYXIoJ+aKmOWPoCcsICflhbMnKSA9PSAn5byAJykge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGlmIChwYWdlID09IDEpIHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBodG1sID0gZmV0Y2goJ2h0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS9hbmltZS9pbmRleCcpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIOWIhuexu+WIl+ihqCA9IHBkZmEoaHRtbCwgJy5maWx0ZXItbGlzdCYmLmZpbHRlci1ibG9jaycpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIOWIhuexu+WIl+ihqC5mb3JFYWNoKHVsID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDnrZvpgInmnaHku7YgPSBwZGZoKHVsLCAnLmZpbHRlci1uYW1lJiZUZXh0Jyk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg5a2Q5YiG57G75YiX6KGoID0gcGRmYSh1bCwgJ3VsJiZsaScpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIOWtkOWIhuexu+WIl+ihqC5mb3JFYWNoKGxpID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZiAocGRmaChsaSwgJ2xpJiZUZXh0JykgPT0gJ+WFtuS7licpIHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXR1cm47XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IGdldE15VmFyKOetm+mAieadoeS7tiwgJ+WFqOmDqCcpID09IHBkZmgobGksICdsaSYmVGV4dCcpID8gJ+KAnOKAnOKAneKAnTxiPjxmb250IGNvbG9yPSMxYWFkMTk+JyArIHBkZmgobGksICdsaSYmVGV4dCcpICsgJzwvZm9udD48L2I+JyA6IHBkZmgobGksICdsaSYmVGV4dCcpLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgobGksIOetm+mAieadoeS7tikgPT4ge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHB1dE15VmFyKOetm+mAieadoeS7tiwgcGRmaChsaSwgJ2xpJiZUZXh0JykpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJlZnJlc2hQYWdlKHRydWUpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSwgbGksIOetm+mAieadoeS7tiksXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ2JsYW5rX2Jsb2NrJ1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG59XFxuXFxuLy8g5a2Q5YiG57G75Y+C5pWw5pig5bCEXFxuXFxuc3dpdGNoIChnZXRNeVZhcign57G75Z6LJywgJ+WFqOmDqCcpKSB7XFxuXFxuwqAgwqAgY2FzZSAn5q2j54mHJzpcXG5cXG7CoCDCoCDCoCDCoCBzZWFzb25fdmVyc2lvbiA9IDE7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn55S15b2xJzpcXG5cXG7CoCDCoCDCoCDCoCBzZWFzb25fdmVyc2lvbiA9IDI7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn5YW25LuWJzpcXG5cXG7CoCDCoCDCoCDCoCBzZWFzb25fdmVyc2lvbiA9IDM7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgZGVmYXVsdDpcXG5cXG7CoCDCoCDCoCDCoCBzZWFzb25fdmVyc2lvbiA9IC0xO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbn1cXG5cXG5zd2l0Y2ggKGdldE15VmFyKCfphY3pn7MnLCAn5YWo6YOoJykpIHtcXG5cXG7CoCDCoCBjYXNlICfljp/lo7AnOlxcblxcbsKgIMKgIMKgIMKgIHNwb2tlbl9sYW5ndWFnZV90eXBlID0gMTtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfkuK3mlofphY3pn7MnOlxcblxcbsKgIMKgIMKgIMKgIHNwb2tlbl9sYW5ndWFnZV90eXBlID0gMjtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBkZWZhdWx0OlxcblxcbsKgIMKgIMKgIMKgIHNwb2tlbl9sYW5ndWFnZV90eXBlID0gLTE7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxufVxcblxcbnN3aXRjaCAoZ2V0TXlWYXIoJ+WcsOWMuicsICflhajpg6gnKSkge1xcblxcbsKgIMKgIGNhc2UgJ+S4reWbveWkp+mZhic6XFxuXFxuwqAgwqAgwqAgwqAgYXJlYSA9IDE7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn5pel5pysJzpcXG5cXG7CoCDCoCDCoCDCoCBhcmVhID0gMjtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfnvo7lm70nOlxcblxcbsKgIMKgIMKgIMKgIGFyZWEgPSAzO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+iLseWbvSc6XFxuXFxuwqAgwqAgwqAgwqAgYXJlYSA9IDQ7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn5Lit5Zu95riv5Y+wJzpcXG5cXG7CoCDCoCDCoCDCoCBhcmVhID0gWzYsIDddO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+mfqeWbvSc6XFxuXFxuwqAgwqAgwqAgwqAgYXJlYSA9IDg7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn5rOV5Zu9JzpcXG5cXG7CoCDCoCDCoCDCoCBhcmVhID0gOTtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfms7Dlm70nOlxcblxcbsKgIMKgIMKgIMKgIGFyZWEgPSAxMDtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfopb/nj63niZknOlxcblxcbsKgIMKgIMKgIMKgIGFyZWEgPSAxMztcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICflvrflm70nOlxcblxcbsKgIMKgIMKgIMKgIGFyZWEgPSAxNTtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfmhI/lpKfliKknOlxcblxcbsKgIMKgIMKgIMKgIGFyZWEgPSAzNTtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICflhbbku5YnOlxcblxcbsKgIMKgIMKgIMKgIC8vIOWPquaYr+eVquWJp+eahOaDheWGtV/lhbE1Ne+8jOimgeWHj+WOu+WHuueOsOeahOKAlOKAlOeul+S6hu+8jOebtOaOpeWcqOWKqOaAgeWIhuexu+eahOaXtuWAmeWOu+aOieS6hlxcblxcbsKgIMKgIMKgIMKgIGFyZWEgPSBbMSwgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDE3LCAxOCwgMTksIDIwLCAyMSwgMjIsIDIzLCAyNCwgMjUsIDI2LCAyNywgMjgsIDI5LCAzMCwgMzEsIDMyLCAzMywgMzQsIDM1LCAzNiwgMzcsIDM4LCAzOSwgNDAsIDQxLCA0MiwgNDMsIDQ0LCA0NSwgNDYsIDQ3LCA0OCwgNDksIDUwLCA1MSwgNTIsIDUzLCA1NCwgNTVdO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGRlZmF1bHQ6XFxuXFxuwqAgwqAgwqAgwqAgYXJlYSA9IC0xO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbn1cXG5cXG5zd2l0Y2ggKGdldE15VmFyKCfnirbmgIEnLCAn5YWo6YOoJykpIHtcXG5cXG7CoCDCoCBjYXNlICflroznu5MnOlxcblxcbsKgIMKgIMKgIMKgIGlzX2ZpbmlzaCA9IDE7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn6L+e6L29JzpcXG5cXG7CoCDCoCDCoCDCoCBpc19maW5pc2ggPSAwO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGRlZmF1bHQ6XFxuXFxuwqAgwqAgwqAgwqAgaXNfZmluaXNoID0gLTE7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxufVxcblxcbnN3aXRjaCAoZ2V0TXlWYXIoJ+WHuuWTgScsICflhajpg6gnKSkge1xcblxcbsKgIMKgIGNhc2UgJ+Wkruinhic6XFxuXFxuwqAgwqAgwqAgwqAgcHJvZHVjZXJfaWQgPSA0O1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ0JCQyc6XFxuXFxuwqAgwqAgwqAgwqAgcHJvZHVjZXJfaWQgPSAxO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+aOoue0oumikemBkyc6XFxuXFxuwqAgwqAgwqAgwqAgcHJvZHVjZXJfaWQgPSA3O1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+WbveWutuWcsOeQhic6XFxuXFxuwqAgwqAgwqAgwqAgcHJvZHVjZXJfaWQgPSAxNDtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICdOSEsnOlxcblxcbsKgIMKgIMKgIMKgIHByb2R1Y2VyX2lkID0gMjtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfljoblj7LpopHpgZMnOlxcblxcbsKgIMKgIMKgIMKgIHByb2R1Y2VyX2lkID0gNjtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfljavop4YnOlxcblxcbsKgIMKgIMKgIMKgIHByb2R1Y2VyX2lkID0gODtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfoh6rliLYnOlxcblxcbsKgIMKgIMKgIMKgIHByb2R1Y2VyX2lkID0gOTtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICdJVFYnOlxcblxcbsKgIMKgIMKgIMKgIHByb2R1Y2VyX2lkID0gNTtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICdTS1knOlxcblxcbsKgIMKgIMKgIMKgIHByb2R1Y2VyX2lkID0gMztcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICdaREYnOlxcblxcbsKgIMKgIMKgIMKgIHByb2R1Y2VyX2lkID0gMTA7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn5ZCI5L2c5py65p6EJzpcXG5cXG7CoCDCoCDCoCDCoCBwcm9kdWNlcl9pZCA9IDExO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+WbveWGheWFtuS7lic6XFxuXFxuwqAgwqAgwqAgwqAgcHJvZHVjZXJfaWQgPSAxMjtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICflm73lpJblhbblroMnOlxcblxcbsKgIMKgIMKgIMKgIHByb2R1Y2VyX2lkID0gMTM7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgZGVmYXVsdDpcXG5cXG7CoCDCoCDCoCDCoCBwcm9kdWNlcl9pZCA9IC0xO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbn1cXG5cXG5zd2l0Y2ggKGdldE15VmFyKCfniYjmnYMnLCAn5YWo6YOoJykpIHtcXG5cXG7CoCDCoCBjYXNlICfni6zlrrYnOlxcblxcbsKgIMKgIMKgIMKgIGNvcHlyaWdodCA9IDM7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn5YW25LuWJzpcXG5cXG7CoCDCoCDCoCDCoCBjb3B5cmlnaHQgPSBbMSwgMiwgNF07XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgZGVmYXVsdDpcXG5cXG7CoCDCoCDCoCDCoCBjb3B5cmlnaHQgPSAtMTtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG59XFxuXFxuc3dpdGNoIChnZXRNeVZhcign5LuY6LS5JywgJ+WFqOmDqCcpKSB7XFxuXFxuwqAgwqAgY2FzZSAn5YWN6LS5JzpcXG5cXG7CoCDCoCDCoCDCoCBzZWFzb25fc3RhdHVzID0gMTtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfku5jotLknOlxcblxcbsKgIMKgIMKgIMKgIHNlYXNvbl9zdGF0dXMgPSBbMiwgNl07XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn5aSn5Lya5ZGYJzpcXG5cXG7CoCDCoCDCoCDCoCBzZWFzb25fc3RhdHVzID0gWzQsIDZdO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGRlZmF1bHQ6XFxuXFxuwqAgwqAgwqAgwqAgc2Vhc29uX3N0YXR1cyA9IC0xO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbn1cXG5cXG5zd2l0Y2ggKGdldE15VmFyKCflraPluqYnLCAn5YWo6YOoJykpIHtcXG5cXG7CoCDCoCBjYXNlICcx5pyIJzpcXG5cXG7CoCDCoCDCoCDCoCBzZWFzb25fbW9udGggPSAxO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJzTmnIgnOlxcblxcbsKgIMKgIMKgIMKgIHNlYXNvbl9tb250aCA9IDQ7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAnN+aciCc6XFxuXFxuwqAgwqAgwqAgwqAgc2Vhc29uX21vbnRoID0gNztcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICcxMOaciCc6XFxuXFxuwqAgwqAgwqAgwqAgc2Vhc29uX21vbnRoID0gMTA7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgZGVmYXVsdDpcXG5cXG7CoCDCoCDCoCDCoCBzZWFzb25fbW9udGggPSAtMTtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG59XFxuXFxuc3dpdGNoIChnZXRNeVZhcign5pe26Ze0JywgJ+WFqOmDqCcpKSB7XFxuXFxuwqAgwqAgY2FzZSAnMjAyMic6XFxuXFxuwqAgwqAgwqAgwqAgeWVhciA9ICdbMjAyMiwyMDIzKSc7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAnMjAyMSc6XFxuXFxuwqAgwqAgwqAgwqAgeWVhciA9ICdbMjAyMSwyMDIyKSc7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAnMjAyMCc6XFxuXFxuwqAgwqAgwqAgwqAgeWVhciA9ICdbMjAyMCwyMDIxKSc7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAnMjAxOSc6XFxuXFxuwqAgwqAgwqAgwqAgeWVhciA9ICdbMjAxOSwyMDIwKSc7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAnMjAxOCc6XFxuXFxuwqAgwqAgwqAgwqAgeWVhciA9ICdbMjAxOCwyMDE5KSc7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAnMjAxNyc6XFxuXFxuwqAgwqAgwqAgwqAgeWVhciA9ICdbMjAxNywyMDE4KSc7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAnMjAxNic6XFxuXFxuwqAgwqAgwqAgwqAgeWVhciA9ICdbMjAxNiwyMDE3KSc7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAnMjAxNSc6XFxuXFxuwqAgwqAgwqAgwqAgeWVhciA9ICdbMjAxNSwyMDE2KSc7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAnMjAxNC0yMDEwJzpcXG5cXG7CoCDCoCDCoCDCoCB5ZWFyID0gJ1syMDEwLDIwMTUpJztcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICcyMDA5LTIwMDUnOlxcblxcbsKgIMKgIMKgIMKgIHllYXIgPSAnWzIwMDUsMjAxMCknO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJzIwMDQtMjAwMCc6XFxuXFxuwqAgwqAgwqAgwqAgeWVhciA9ICdbMjAwMCwyMDA1KSc7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAnOTDlubTku6MnOlxcblxcbsKgIMKgIMKgIMKgIHllYXIgPSAnWzE5OTAsMjAwMCknO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJzgw5bm05LujJzpcXG5cXG7CoCDCoCDCoCDCoCB5ZWFyID0gJ1sxOTgwLDE5OTApJztcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfmm7Tml6knOlxcblxcbsKgIMKgIMKgIMKgIHllYXIgPSAnWywxOTgwKSc7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgZGVmYXVsdDpcXG5cXG7CoCDCoCDCoCDCoCB5ZWFyID0gLTE7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxufVxcblxcbnN3aXRjaCAoZ2V0TXlWYXIoJ+W5tOS7vScsICflhajpg6gnKSkge1xcblxcbsKgIMKgIGNhc2UgJzIwMjInOlxcblxcbsKgIMKgIMKgIMKgIHJlbGVhc2VfZGF0ZSA9ICdbMjAyMi0wMS0wMSAwMDowMDowMCwyMDIzLTAxLTAxIDAwOjAwOjAwKSc7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAnMjAyMSc6XFxuXFxuwqAgwqAgwqAgwqAgcmVsZWFzZV9kYXRlID0gJ1syMDIxLTAxLTAxIDAwOjAwOjAwLDIwMjItMDEtMDEgMDA6MDA6MDApJztcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICcyMDIwJzpcXG5cXG7CoCDCoCDCoCDCoCByZWxlYXNlX2RhdGUgPSAnWzIwMjAtMDEtMDEgMDA6MDA6MDAsMjAyMS0wMS0wMSAwMDowMDowMCknO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJzIwMTknOlxcblxcbsKgIMKgIMKgIMKgIHJlbGVhc2VfZGF0ZSA9ICdbMjAxOS0wMS0wMSAwMDowMDowMCwyMDIwLTAxLTAxIDAwOjAwOjAwKSc7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAnMjAxOCc6XFxuXFxuwqAgwqAgwqAgwqAgcmVsZWFzZV9kYXRlID0gJ1syMDE4LTAxLTAxIDAwOjAwOjAwLDIwMTktMDEtMDEgMDA6MDA6MDApJztcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICcyMDE3JzpcXG5cXG7CoCDCoCDCoCDCoCByZWxlYXNlX2RhdGUgPSAnWzIwMTctMDEtMDEgMDA6MDA6MDAsMjAxOC0wMS0wMSAwMDowMDowMCknO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJzIwMTYnOlxcblxcbsKgIMKgIMKgIMKgIHJlbGVhc2VfZGF0ZSA9ICdbMjAxNi0wMS0wMSAwMDowMDowMCwyMDE3LTAxLTAxIDAwOjAwOjAwKSc7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAnMjAxNS0yMDEwJzpcXG5cXG7CoCDCoCDCoCDCoCByZWxlYXNlX2RhdGUgPSAnWzIwMTAtMDEtMDEgMDA6MDA6MDAsMjAxNi0wMS0wMSAwMDowMDowMCknXFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAnMjAwOS0yMDA1JzpcXG5cXG7CoCDCoCDCoCDCoCByZWxlYXNlX2RhdGUgPSAnWzIwMDUtMDEtMDEgMDA6MDA6MDAsMjAxMC0wMS0wMSAwMDowMDowMCknXFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAnMjAwNC0yMDAwJzpcXG5cXG7CoCDCoCDCoCDCoCByZWxlYXNlX2RhdGUgPSAnWzIwMDAtMDEtMDEgMDA6MDA6MDAsMjAwNS0wMS0wMSAwMDowMDowMCknXFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAnOTDlubTku6MnOlxcblxcbsKgIMKgIMKgIMKgIHJlbGVhc2VfZGF0ZSA9ICdbMTk5MC0wMS0wMSAwMDowMDowMCwyMDAwLTAxLTAxIDAwOjAwOjAwKSdcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICc4MOW5tOS7oyc6XFxuXFxuwqAgwqAgwqAgwqAgcmVsZWFzZV9kYXRlID0gJ1sxOTgwLTAxLTAxIDAwOjAwOjAwLDE5OTAtMDEtMDEgMDA6MDA6MDApJ1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+abtOaXqSc6XFxuXFxuwqAgwqAgwqAgwqAgcmVsZWFzZV9kYXRlID0gJ1ssMTk4MC0wMS0wMSAwMDowMDowMCknO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGRlZmF1bHQ6XFxuXFxuwqAgwqAgwqAgwqAgcmVsZWFzZV9kYXRlID0gLTE7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxufVxcblxcbnN3aXRjaCAoZ2V0TXlWYXIoJ+mjjuagvCcsICflhajpg6gnKSkge1xcblxcbsKgIMKgIGNhc2UgJ+eUteW9sSc6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAtMTA7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgwqAgwqAgLy8g55Wq5Ymn5qCP55uuXFxuXFxuwqAgwqAgY2FzZSAn5Y6f5YibJzpcXG5cXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDEwO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+a8q+eUu+aUuSc6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDAxMTtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICflsI/or7TmlLknOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwMTI7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn5ri45oiP5pS5JzpcXG5cXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDEzO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+eJueaRhCc6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDAxNDtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfluIPooovmiI8nOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwMTU7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn54Ot6KGAJzpcXG5cXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDE2O1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+epv+i2iic6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDAxNztcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICflpYflubsnOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwMTg7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgwqAgwqAgLy8g5ZKL6Lez5LqG5LiA5Liq5o2PflxcblxcbsKgIMKgIGNhc2UgJ+aImOaWlyc6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDAyMDtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfmkJ7nrJEnOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwMjE7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn5pel5bi4JzpcXG5cXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDIyO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+enkeW5uyc6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDAyMztcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfokIzns7snOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwMjQ7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn5rK75oSIJzpcXG5cXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDI1O1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+agoeWbrSc6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDAyNjtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICflsJHlhL8nOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwMjc7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn5rOh6Z2iJzpcXG5cXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDI4O1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+aBi+eIsSc6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDAyOTtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICflsJHlpbMnOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwMzA7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn6a2U5rOVJzpcXG5cXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDMxO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+WGkumZqSc6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDAzMjtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfljoblj7InOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwMzM7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn5p6256m6JzpcXG5cXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDM0O1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+acuuaImCc6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDAzNTtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfnpZ7prZQnOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwMzY7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn5aOw5o6nJzpcXG5cXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDM3O1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+i/kOWKqCc6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDAzODtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICflirHlv5cnOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwMzk7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn6Z+z5LmQJzpcXG5cXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDQwO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+aOqOeQhic6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDA0MTtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfnpL7lm6InOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwNDI7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn5pm65paXJzpcXG5cXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDQzO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+WCrOazqic6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDA0NDtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfnvo7po58nOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwNDU7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn5YG25YOPJzpcXG5cXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDQ2O1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+S5meWlsyc6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDA0NztcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfogYzlnLonOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwNDg7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuXFxuwqAgwqAgwqAgwqAgLy8g57u86Im65qCP55uu44CB55S15b2xXFxuXFxuwqAgwqAgY2FzZSAn5Ymn5oOFJzpcXG5cXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDUwO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+WWnOWJpyc6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDA1MTtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfniLHmg4UnOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwNTI7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn5Yqo5L2cJzpcXG5cXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDUzO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+aBkOaAlic6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDA1NDtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfniq/nvaonOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwNTU7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn5oOK5oKaJzpcXG5cXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDU2O1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+aCrOeWkSc6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDA1NztcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfmiJjkuoknOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwNTg7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn5Yqo55S7JzpcXG5cXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDU5O1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+S8oOiusCc6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDA2MDtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICflrrbluq0nOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwNjE7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn5q2M6IieJzpcXG5cXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDYyO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+e6quWunic6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDA2MztcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfngb7pmr4nOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwNjQ7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn5Lq65paHJzpcXG5cXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDY1O1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+enkeaKgCc6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDA2NjtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICflroflrpknOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwNjg7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn6JCM5a6gJzpcXG5cXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDY5O1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+ekvuS8mic6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDA3MDtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfliqjniaknOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwNzE7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn6Ieq54S2JzpcXG5cXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDcyO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+WMu+eWlyc6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDA3MztcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICflhpvkuosnOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwNzQ7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn572q5qGIJzpcXG5cXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDc1O1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+elnuenmCc6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDA3NjtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfml4XooYwnOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwNzc7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn5q2m5L6gJzpcXG5cXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDc4O1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+mdkuaYpSc6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDA3OTtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfpg73luIInOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwODA7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn5Y+k6KOFJzpcXG5cXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDgxO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+iwjeaImCc6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDA4MjtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfnu4/lhbgnOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwODM7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn5oOF5oSfJzpcXG5cXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDg0O1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+elnuivnSc6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDA4NTtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICflubTku6MnOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwODY7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn5Yac5p2RJzpcXG5cXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDg3O1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+WIkeS+pic6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDA4ODtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICflhpvml4UnOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwODk7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn6K6/6LCIJzpcXG5cXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDkwO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+iEseWPo+engCc6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDA5MTtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfnnJ/kurrnp4AnOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwOTI7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn6YCJ56eAJzpcXG5cXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDk0O1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+aXhea4uCc6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDA5NTtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfmmZrkvJonOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwOTg7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn5ryU5ZSx5LyaJzpcXG5cXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDk2O1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+S6suWtkCc6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDA5NztcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICflhbvmiJAnOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwOTk7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn5paH5YyWJzpcXG5cXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMTAwO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIMKgIMKgIC8vIOeUteW9seagj+ebrlxcblxcbsKgIMKgIGNhc2UgJ+efreeJhyc6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDEwNDtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBkZWZhdWx0OlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gLTE7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxufVxcblxcbi8vIOaYoOWwhOecn+Wunuivt+axguWcsOWdgFxcblxcbnN3aXRjaCAoc2Vhc29uVHlwZSkge1xcblxcbsKgIMKgIGNhc2UgNDpcXG5cXG7CoCDCoCDCoCDCoCAvLyDlm73liJtcXG5cXG7CoCDCoCDCoCDCoCB0cnVlX3VybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20vcGdjL3NlYXNvbi9pbmRleC9yZXN1bHQ/c2Vhc29uX3ZlcnNpb249JyArIHNlYXNvbl92ZXJzaW9uICsgJyZpc19maW5pc2g9JyArIGlzX2ZpbmlzaCArICcmY29weXJpZ2h0PSZzJyArIGNvcHlyaWdodCArICdlYXNvbl9zdGF0dXM9JyArIHNlYXNvbl9zdGF0dXMgKyAnJnllYXI9JyArIHllYXIgKyAnJnN0eWxlX2lkPScgKyBzdHlsZV9pZCArICcmb3JkZXI9MyZzdD00JnNvcnQ9MCZwYWdlPScgKyBwYWdlICsgJyZzZWFzb25fdHlwZT00JnBhZ2VzaXplPTIwJnR5cGU9MSdcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlIDU6XFxuXFxuwqAgwqAgwqAgwqAgLy8g55S16KeG5YmnXFxuXFxuwqAgwqAgwqAgwqAgdHJ1ZV91cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3BnYy9zZWFzb24vaW5kZXgvcmVzdWx0P2FyZWE9JyArIGFyZWEgKyAnJnN0eWxlX2lkPScgKyBzdHlsZV9pZCArICcmcmVsZWFzZV9kYXRlPScgKyByZWxlYXNlX2RhdGUgKyAnJnNlYXNvbl9zdGF0dXM9JyArIHNlYXNvbl9zdGF0dXMgKyAnJm9yZGVyPTImc3Q9NSZzb3J0PTAmcGFnZT0nICsgcGFnZSArICcmc2Vhc29uX3R5cGU9NSZwYWdlc2l6ZT0yMCZ0eXBlPTEnXFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSA3OlxcblxcbsKgIMKgIMKgIMKgIC8vIOe7vOiJulxcblxcbsKgIMKgIMKgIMKgIHRydWVfdXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS9wZ2Mvc2Vhc29uL2luZGV4L3Jlc3VsdD9zZWFzb25fc3RhdHVzPScgKyBzZWFzb25fc3RhdHVzICsgJyZzdHlsZV9pZD0nICsgc3R5bGVfaWQgKyAnJm9yZGVyPTImc3Q9NyZzb3J0PTAmcGFnZT0nICsgcGFnZSArICcmc2Vhc29uX3R5cGU9NyZwYWdlc2l6ZT0yMCZ0eXBlPTEnO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgMTpcXG5cXG7CoCDCoCDCoCDCoCAvLyDnlarliadcXG5cXG7CoCDCoCDCoCDCoCB0cnVlX3VybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20vcGdjL3NlYXNvbi9pbmRleC9yZXN1bHQ/c2Vhc29uX3ZlcnNpb249JyArIHNlYXNvbl92ZXJzaW9uICsgJyZzcG9rZW5fbGFuZ3VhZ2VfdHlwZT0nICsgc3Bva2VuX2xhbmd1YWdlX3R5cGUgKyAnJmFyZWE9JyArIGFyZWEgKyAnJmlzX2ZpbmlzaD0nICsgaXNfZmluaXNoICsgJyZjb3B5cmlnaHQ9JyArIGNvcHlyaWdodCArICcmc2Vhc29uX3N0YXR1cz0nICsgc2Vhc29uX3N0YXR1cyArICcmc2Vhc29uX21vbnRoPScgKyBzZWFzb25fbW9udGggKyAnJnllYXI9JyArIHllYXIgKyAnJnN0eWxlX2lkPScgKyBzdHlsZV9pZCArICcmb3JkZXI9MyZzdD0xJnNvcnQ9MCZwYWdlPScgKyBwYWdlICsgJyZzZWFzb25fdHlwZT0xJnBhZ2VzaXplPTIwJnR5cGU9MSc7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAzOlxcblxcbsKgIMKgIMKgIMKgIC8vIOe6quW9leeJh1xcblxcbsKgIMKgIMKgIMKgIHRydWVfdXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS9wZ2Mvc2Vhc29uL2luZGV4L3Jlc3VsdD9zdHlsZV9pZD0nICsgc3R5bGVfaWQgKyAnJnByb2R1Y2VyX2lkPScgKyBwcm9kdWNlcl9pZCArICcmcmVsZWFzZV9kYXRlPScgKyByZWxlYXNlX2RhdGUgKyAnJnNlYXNvbl9zdGF0dXM9JyArIHNlYXNvbl9zdGF0dXMgKyAnJm9yZGVyPTImc3Q9MyZzb3J0PTAmcGFnZT0nICsgcGFnZSArICcmc2Vhc29uX3R5cGU9MyZwYWdlc2l6ZT0yMCZ0eXBlPTEnXFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAyOlxcblxcbsKgIMKgIMKgIMKgIC8vIOeUteW9sVxcblxcbsKgIMKgIMKgIMKgIHRydWVfdXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS9wZ2Mvc2Vhc29uL2luZGV4L3Jlc3VsdD9hcmVhPScgKyBhcmVhICsgJyZzdHlsZV9pZD0nICsgc3R5bGVfaWQgKyAnJnJlbGVhc2VfZGF0ZT0nICsgcmVsZWFzZV9kYXRlICsgJyZzZWFzb25fc3RhdHVzPScgKyBzZWFzb25fc3RhdHVzICsgJyZvcmRlcj0yJnN0PTImc29ydD0wJnBhZ2U9JyArIHBhZ2UgKyAnJnNlYXNvbl90eXBlPTImcGFnZXNpemU9MjAmdHlwZT0xJ1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbn1cXG5cXG50cnVlX3VybCA9IGVuY29kZVVSSSh0cnVlX3VybCk7XFxuXFxubGlzdCA9IEpTT04ucGFyc2UoZmV0Y2godHJ1ZV91cmwpKS5kYXRhLmxpc3Q7XFxuXFxudHJ5IHtcXG5cXG7CoCDCoCBsaXN0LmZvckVhY2gobW92aWUgPT4ge1xcblxcbsKgIMKgIMKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IG1vdmllLnRpdGxlLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHVybDogXFxcImhpa2VyOi8vcGFnZS9maWxtZXJqaSNpbW1lcnNpdmVUaGVtZSNcXFwiLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGltZzogbW92aWUuY292ZXIgKyBcXFwiQFJlZmVyZXI9XFxcIixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBkZXNjOiBtb3ZpZS5vcmRlcixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ21vdmllXzMnLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGV4dHJhOiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgc2Vhc29uX2lkOiBtb3ZpZS5zZWFzb25faWRcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgfSk7XFxuXFxufSBjYXRjaCAoZSkge1xcblxcbsKgIMKgIGxvZygn5bey57uP5oq16L6+6aG15bqVJyArIE1ZX1BBR0UpO1xcblxcbn1cXG5cXG5cXG5cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIueDreaYoOaXtumXtOihqFwiLFwicGF0aFwiOlwiVXBkYXRlVGFibGVzXCIsXCJydWxlXCI6XCJmdW5jdGlvbiBjb2xvcih0ZXh0LCBjb2xvcikge1xcblxcbsKgIMKgIHRleHQgKz0gXFxcIlxcXCI7XFxuXFxuwqAgwqAgaWYgKHRleHQuaW5kZXhPZihcXFwi4oCc4oCc4oCd4oCdXFxcIikgPT09IDApIHtcXG5cXG7CoCDCoCDCoCDCoCB0ZXh0LnJlcGxhY2UoXFxcIuKAnOKAnOKAneKAnVxcXCIsIFxcXCJcXFwiKTtcXG5cXG7CoCDCoCB9XFxuXFxuwqAgwqAgcmV0dXJuIFxcXCLigJzigJzigJ3igJ08Zm9udCBjb2xvcj0nXFxcIiArIGNvbG9yICsgXFxcIic+XFxcIiArIHRleHQgKyBcXFwiPC9mb250PlxcXCI7XFxuXFxufVxcblxcbnZhciB0YWJzID0ge1xcblxcbsKgIMKgIFxcXCLnlarliadcXFwiOiAxLFxcblxcbsKgIMKgIFxcXCLnuqrlvZXniYdcXFwiOiAzLFxcblxcbsKgIMKgIFxcXCLlm73liJtcXFwiOiA0XFxuXFxufVxcblxcbmlmIChNWV9QQUdFID09IDEpIHtcXG5cXG7CoCDCoCBPYmplY3Qua2V5cyh0YWJzKS5mb3JFYWNoKGl0ZW0gPT4ge1xcblxcbsKgIMKgIMKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IChnZXRNeVZhcihcXFwianVqaVxcXCIsIFxcXCLlm73liJtcXFwiKSA9PSBpdGVtID8gY29sb3IoaXRlbSwgXFxcInJlZFxcXCIpIDogaXRlbSksXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiAkKCkubGF6eVJ1bGUoKGEpID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBwdXRNeVZhcihcXFwianVqaVxcXCIsIGEpXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmVmcmVzaFBhZ2UoKVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybiBcXFwidG9hc3Q6Ly/liIfmjaLmiJDlip9cXFwiXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgfSwgaXRlbSksXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6IFxcXCJzY3JvbGxfYnV0dG9uXFxcIlxcblxcbsKgIMKgIMKgIMKgIH0pXFxuXFxuwqAgwqAgfSlcXG5cXG7CoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIGNvbF90eXBlOiBcXFwibGluZVxcXCJcXG5cXG7CoCDCoCB9KVxcblxcbsKgIMKgIGxldCBkYXlzID0gN1xcblxcbsKgIMKgIGZvciAobGV0IGkgPSAxOyBpIDwgZGF5czsgaSsrKSB7XFxuXFxuwqAgwqAgwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogKGdldE15VmFyKFxcXCJmcm9tXFxcIiwgXFxcIjFcXFwiKSA9PSBpICsgXFxcIlxcXCIgPyBjb2xvcihpICsgXFxcIuWkqeWJjVxcXCIsIFxcXCJyZWRcXFwiKSA6IGkgKyBcXFwi5aSp5YmNXFxcIiksXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiAkKCkubGF6eVJ1bGUoKGkpID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBwdXRNeVZhcihcXFwiZnJvbVxcXCIsIGkgKyBcXFwiXFxcIilcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZWZyZXNoUGFnZSgpXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIH0sIGkpLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiBcXFwic2Nyb2xsX2J1dHRvblxcXCJcXG5cXG7CoCDCoCDCoCDCoCB9KVxcblxcbsKgIMKgIH1cXG5cXG7CoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIGNvbF90eXBlOiBcXFwibGluZVxcXCJcXG5cXG7CoCDCoCB9KVxcblxcbsKgIMKgIGZvciAobGV0IGkgPSAxOyBpIDwgZGF5czsgaSsrKSB7XFxuXFxuwqAgwqAgwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogKGdldE15VmFyKFxcXCJ0b1xcXCIsIFxcXCIxXFxcIikgPT0gaSArIFxcXCJcXFwiID8gY29sb3IoaSArIFxcXCLlpKnlkI5cXFwiLCBcXFwicmVkXFxcIikgOiBpICsgXFxcIuWkqeWQjlxcXCIpLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHVybDogJCgpLmxhenlSdWxlKChpKSA9PiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcHV0TXlWYXIoXFxcInRvXFxcIiwgaSArIFxcXCJcXFwiKVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJlZnJlc2hQYWdlKClcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgfSwgaSksXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6IFxcXCJzY3JvbGxfYnV0dG9uXFxcIlxcblxcbsKgIMKgIMKgIMKgIH0pXFxuXFxuwqAgwqAgfVxcblxcblxcbsKgIMKgICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXCIpLmdldE1vdmllcyh0YWJzW2dldE15VmFyKFxcXCJqdWppXFxcIiwgXFxcIuWbveWIm1xcXCIpXSwgZ2V0TXlWYXIoXFxcImZyb21cXFwiLCBcXFwiMVxcXCIpLCBnZXRNeVZhcihcXFwidG9cXFwiLCBcXFwiMVxcXCIpKS5mb3JFYWNoKGl0ZW0gPT4ge1xcblxcbsKgIMKgIMKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IGl0ZW0uZGF0ZSArIFxcXCIg5ZGoXFxcIiArIGl0ZW0uZGF5X29mX3dlZWssXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6IFxcXCJ0ZXh0XzFcXFwiLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHVybDogXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuXFxuwqAgwqAgwqAgwqAgfSlcXG5cXG7CoCDCoCDCoCDCoCBpdGVtLmVwaXNvZGVzLmZvckVhY2goaSA9PiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogaS50aXRsZSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpbWc6IGkuY292ZXIrJ0BSZWZlcmVyPScsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZGVzYzppLnB1Yl9pbmRleC5tYXRjaCgv5Y2z5bCGLyk/J+KAmOKAmOKAmeKAmTxmb250IGNvbG9yPVxcXCJyZWRcXFwiPicraS5wdWJfaW5kZXgrJ1xcXFxuJytpLnB1Yl90aW1lKyc8L2ZvbnQ+JzogaS5wdWJfaW5kZXgrICdcXFxcbicgKyBpLnB1Yl90aW1lLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVybDogXFxcImhpa2VyOi8vcGFnZS9maWxtZXJqaSNpbW1lcnNpdmVUaGVtZSNcXFwiLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGV4dHJhOiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgXFxcInNlYXNvbl9pZFxcXCI6IGkuc2Vhc29uX2lkXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIH0pXFxuXFxuwqAgwqAgwqAgwqAgfSlcXG5cXG7CoCDCoCB9KVxcblxcbn1cXG5cXG5cXG5cXG5cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS4quS6uuS4u+mhtVwiLFwicGF0aFwiOlwidXNlckhvbWVcIixcInJ1bGVcIjpcImlmIChNWV9QQUdFID09IDEpIHtcXG5cXG7CoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIGNvbF90eXBlOiAnbGluZSdcXG5cXG7CoCDCoCB9KVxcblxcbsKgIMKgIHRyeSB7XFxuXFxuwqAgwqAgwqAgwqAgaWYgKGlzTG9naW4udHlwZSA9PT0gdHJ1ZSkge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6ICforqLpmIUnID09IGdldEl0ZW0oJ+S4u+mhteWxleekuicsICforqLpmIUnKSA/ICfigJjigJjigJnigJk8YmlnPjxmb250IGNvbG9yPVxcXCJyZWRcXFwiPuiuoumYhTwvZm9udD48L2JpZz4nIDogJ+iuoumYhScsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBzZXRJdGVtKCfkuLvpobXlsZXnpLonLCAn6K6i6ZiFJyk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgc2VsZWN0aW9uID0gWyfov73nlaonLCAn6L+95YmnJ107XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgc2VsZWN0aW9uID0gc2VsZWN0aW9uLm1hcCgoaXQpID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZiAoaXQgPT0gJ+i/veeVqicpIHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0eXBlSWQgPSAnMSc7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSBlbHNlIHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0eXBlSWQgPSAnMic7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybiB0eXBlSWQgPT09IGdldEl0ZW0oJ+iuoumYheexu+WeiycsICfov73nlaonKSA/ICfwn5GJJyArIGl0IDogaXQ7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuICQoc2VsZWN0aW9uLCAxKS5zZWxlY3QoKCkgPT4ge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlucHV0ID0gaW5wdXQucmVwbGFjZSgv8J+RiS9nLCAnJyk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKGlucHV0ID09ICfov73nlaonKSB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgc2V0SXRlbSgn6K6i6ZiF57G75Z6LJywgJzEnKTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9IGVsc2Uge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHNldEl0ZW0oJ+iuoumYheexu+WeiycsICcyJyk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJlZnJlc2hQYWdlKHRydWUpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybiBcXFwidG9hc3Q6Ly/liIfmjaLorqLpmIXkuLo6XFxcIiArIGlucHV0O1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSksXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICd0ZXh0XzQnLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIH0pO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6ICflhbPms6gnID09IGdldEl0ZW0oJ+S4u+mhteWxleekuicsICforqLpmIUnKSA/ICfigJjigJjigJnigJk8YmlnPjxmb250IGNvbG9yPVxcXCJyZWRcXFwiPuWFs+azqDwvZm9udD48L2JpZz4nIDogJ+WFs+azqCcsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBzZXRJdGVtKCfkuLvpobXlsZXnpLonLCAn5YWz5rOoJyk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIjtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ3RleHRfNCcsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogJ+aUtuiXjycgPT0gZ2V0SXRlbSgn5Li76aG15bGV56S6JywgJ+iuoumYhScpID8gJ+KAmOKAmOKAmeKAmTxiaWc+PGZvbnQgY29sb3I9XFxcInJlZFxcXCI+5pS26JePPC9mb250PjwvYmlnPicgOiAn5pS26JePJyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHNldEl0ZW0oJ+S4u+mhteWxleekuicsICfmlLbol48nKTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBzZWxlY3Rpb24gPSBbJ+aIkeWIm+W7uueahOaUtuiXj+WkuScsICfnqI3lkI7lnKjnnIsnXTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBzZWxlY3Rpb24gPSBzZWxlY3Rpb24ubWFwKChpdCkgPT4ge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybiBpdCA9PT0gZ2V0SXRlbSgn5pS26JeP57G75Z6LJywgJ+aIkeWIm+W7uueahOaUtuiXj+WkuScpID8gJ/CfkYknICsgaXQgOiBpdDtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXR1cm4gJChzZWxlY3Rpb24sIDEpLnNlbGVjdCgoKSA9PiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaW5wdXQgPSBpbnB1dC5yZXBsYWNlKC/wn5GJL2csICcnKTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBzZXRJdGVtKCfmlLbol4/nsbvlnosnLCBpbnB1dCk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuIFxcXCJ0b2FzdDovL+WIh+aNouiuoumYheS4ujpcXFwiICsgaW5wdXQ7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSlcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ3RleHRfNCcsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogJ+WOhuWPsicgPT0gZ2V0SXRlbSgn5Li76aG15bGV56S6JywgJ+iuoumYhScpID8gJ+KAmOKAmOKAmeKAmTxiaWc+PGZvbnQgY29sb3I9XFxcInJlZFxcXCI+5Y6G5Y+yPC9mb250PjwvYmlnPicgOiAn5Y6G5Y+yJyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHNldEl0ZW0oJ+S4u+mhteWxleekuicsICfljoblj7InKTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZWZyZXNoUGFnZSh0cnVlKTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiAndGV4dF80JyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB9KTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiAnbGluZSdcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB9KVxcblxcbsKgIMKgIMKgIMKgIH0gZWxzZSB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogXFxcIueZu+mZhlxcXCIsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL2xvZ2luXFxcIixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgfSlcXG5cXG7CoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgfSBjYXRjaCAoZSkge1xcblxcbsKgIMKgIMKgIMKgIGxvZyhlLm1lc3NhZ2UpXFxuXFxuwqAgwqAgfVxcblxcbn1cXG5cXG4vLyDkuLvpobXlsZXnpLrljLpcXG5cXG5pZiAoaXNMb2dpbi50eXBlID09PSB0cnVlKSB7XFxuXFxuwqAgwqAgYmlsaURhdGUgPSBKU09OLnBhcnNlKHJlcXVlc3QoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvY3kvYmlsaS50eHRcXFwiKSk7XFxuXFxuwqAgwqAgY29va2llID0gYmlsaURhdGUuY29va2llO1xcblxcbsKgIMKgIG1pZCA9IGJpbGlEYXRlLnVzZXJNaWQ7XFxuXFxuwqAgwqAgc3dpdGNoIChnZXRJdGVtKCfkuLvpobXlsZXnpLonLCAn6K6i6ZiFJykpIHtcXG5cXG7CoCDCoCDCoCDCoCBjYXNlICflhbPms6gnOlxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGlmIChNWV9QQUdFID09IDEpIHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbicsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiAnaGlrZXI6Ly9lbXB0eScsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6ICfiiLcnLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGV4dHJhOiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWQ6ICfljaDkvY3nrKYnLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBmb2N1c0dyb3VwcyA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3JlbGF0aW9uL3RhZ3M/anNvbnA9anNvbnBcXFwiLCB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaGVhZGVyczoge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIFxcXCJDb29raWVcXFwiOiBjb29raWUsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgXFxcIlVzZXItQWdlbnRcXFwiOiBQQ19VQSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBcXFwiUmVmZXJlclxcXCI6IFxcXCJodHRwczovL3d3dy5iaWxpYmlsaS5jb20vXFxcIlxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KSkuZGF0YTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBwdXRNeVZhcigndGVtcElkJywgSlNPTi5zdHJpbmdpZnkoZm9jdXNHcm91cHNbMV0udGFnaWQpKTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBmb2N1c0dyb3Vwcy5mb3JFYWNoKGxpc3QgPT4ge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IGxpc3QudGFnaWQgPT0gZ2V0SXRlbSgn5YWz5rOo5YiG57uEJywgSlNPTi5zdHJpbmdpZnkoZm9jdXNHcm91cHNbMV0uaWQpKSA/IFxcXCLigJzigJzigJ3igJ08Zm9udCBjb2xvcj0ncmVkJz5cXFwiICsgbGlzdC5uYW1lICsgbGlzdC5jb3VudCArIFxcXCI8L2ZvbnQ+XFxcIiA6IGxpc3QubmFtZSArIGxpc3QuY291bnQsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiAkKCcjbm9Mb2FkaW5nIyNub0hpc3RvcnkjJykubGF6eVJ1bGUoKGxpc3QpID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBzZXRJdGVtKCflhbPms6jliIbnu4QnLCBKU09OLnN0cmluZ2lmeShsaXN0LnRhZ2lkKSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuIFxcXCJ0b2FzdDovL+WIh+aNouWFs+azqOWIhue7hOS4ujpcXFwiICsgbGlzdC5uYW1lO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0sIGxpc3QpLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbicsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ2xpbmUnXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZ3JvdXBDb250ZW50ID0gSlNPTi5wYXJzZShmZXRjaChcXFwiaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvcmVsYXRpb24vdGFnP21pZD1cXFwiICsgbWlkICsgXFxcIiZ0YWdpZD1cXFwiICsgZ2V0SXRlbSgn5YWz5rOo5YiG57uEJywgZ2V0TXlWYXIoJ3RlbXBJZCcpKSArIFxcXCImcG49XFxcIiArIHBhZ2UgKyBcXFwiJnBzPTIwJmpzb25wPWpzb25wXFxcIiwge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGhlYWRlcnM6IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBcXFwiQ29va2llXFxcIjogY29va2llXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pKS5kYXRhO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGdyb3VwQ29udGVudC5mb3JFYWNoKGxpc3QgPT4ge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IFxcXCI8YmlnPjxmb250IGNvbG9yPSdibHVlJz5cXFwiICsgbGlzdC51bmFtZSArIFxcXCI8L2ZvbnQ+PC9iaWc+PHNtYWxsPlxcXCIgKyBsaXN0LnNpZ24gKyBcXFwiPC9zbWFsbD5cXFwiLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGltZzogbGlzdC5mYWNlICsgXFxcIkBSZWZlcmVyPVxcXCIsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdhdmF0YXInLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVybDogXFxcImhpa2VyOi8vcGFnZS91cEhvbWVcXFwiLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGV4dHJhOiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgbWlkOiBsaXN0Lm1pZCxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogbGlzdC51bmFtZSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBmYWNlOiBsaXN0LmZhY2VcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIMKgIMKgIGNhc2UgJ+aUtuiXjyc6XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgaWYgKHBhZ2UgPT0gMSkge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlmIChnZXRJdGVtKCfmlLbol4/nsbvlnosnLCAn5oiR5Yib5bu655qE5pS26JeP5aS5JykgPT0gJ+aIkeWIm+W7uueahOaUtuiXj+WkuScpIHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbicsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiAnaGlrZXI6Ly9lbXB0eScsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6ICfiiLcnLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGV4dHJhOiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWQ6ICfljaDkvY3nrKYnLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb2xsZWN0aW9ucyA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3YzL2Zhdi9mb2xkZXIvbGlzdDRuYXZpZ2F0ZVxcXCIsIHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBoZWFkZXJzOiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgXFxcIkNvb2tpZVxcXCI6IGNvb2tpZVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KSkuZGF0YTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBncm91cHMgPSBjb2xsZWN0aW9uc1swXS5tZWRpYUxpc3RSZXNwb25zZS5saXN0O1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHB1dE15VmFyKCd0ZW1wSWQnLCBKU09OLnN0cmluZ2lmeShncm91cHNbMF0uaWQpKTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBncm91cHMuZm9yRWFjaChsaXN0ID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBsaXN0LmlkID09IGdldEl0ZW0oJ+aUtuiXj+WkuScsIEpTT04uc3RyaW5naWZ5KGdyb3Vwc1swXS5pZCkpID8gXFxcIuKAnOKAnOKAneKAnTxmb250IGNvbG9yPSdyZWQnPlxcXCIgKyBsaXN0LnRpdGxlICsgXFxcIjwvZm9udD5cXFwiIDogbGlzdC50aXRsZSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB1cmw6ICQoJyNub0xvYWRpbmcjI25vSGlzdG9yeSMnKS5sYXp5UnVsZSgobGlzdCkgPT4ge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHNldEl0ZW0oJ+aUtuiXj+WkuScsIEpTT04uc3RyaW5naWZ5KGxpc3QuaWQpKTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZWZyZXNoUGFnZSh0cnVlKTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXR1cm4gXFxcInRvYXN0Oi8v5YiH5o2i5pS26JeP5aS55Li6OlxcXCIgKyBsaXN0LnRpdGxlO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0sIGxpc3QpLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbicsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ2xpbmUnXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZ3JvdXBDb250ZW50ID0gSlNPTi5wYXJzZShmZXRjaChcXFwiaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvdjMvZmF2L3Jlc291cmNlL2xpc3Q/bWVkaWFfaWQ9XFxcIiArIGdldEl0ZW0oJ+aUtuiXj+WkuScsIGdldE15VmFyKCd0ZW1wSWQnKSkgKyBcXFwiJnBuPVxcXCIgKyBwYWdlICsgXFxcIiZwcz0yMCZrZXl3b3JkPSZvcmRlcj1tdGltZSZ0eXBlPTAmdGlkPTAmcGxhdGZvcm09d2ViJmpzb25wPWpzb25wXFxcIiwge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGhlYWRlcnM6IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBcXFwiQ29va2llXFxcIjogY29va2llXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pKS5kYXRhLm1lZGlhcztcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBncm91cENvbnRlbnQuZm9yRWFjaChsaXN0ID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBsaXN0LnRpdGxlLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGltZzogbGlzdC5jb3ZlciArIFxcXCJAUmVmZXJlcj1cXFwiLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiAnbW92aWVfMV9sZWZ0X3BpYycsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL3ZpZGVvXFxcIixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkZXNjOiAnVVA6JyArIGxpc3QudXBwZXIubmFtZSArICdcXFxcbicgKyBsaXN0LmludHJvLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGV4dHJhOiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgYWlkOiBsaXN0LmlkXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0gZWxzZSB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgbGF0ZXJWaWV3cyA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3YyL2hpc3RvcnkvdG92aWV3L3dlYj9qc29ucD1qc29ucFxcXCIsIHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBoZWFkZXJzOiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgXFxcIkNvb2tpZVxcXCI6IGNvb2tpZVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KSkuZGF0YTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb3VudCA9IGxhdGVyVmlld3MuY291bnQ7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogXFxcIuWFseaciVxcXCIgKyBjb3VudCArIFxcXCLmnaHlvoXnnIvop4bpopHorrDlvZVcXFwiLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVybDogXFxcImhpa2VyOi8vZW1wdHlcXFwiLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCJcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBsYXRlclZpZXdzLmxpc3QuZm9yRWFjaChsaXN0ID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBsaXN0LnRpdGxlLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGltZzogbGlzdC5waWMgKyBcXFwiQFJlZmVyZXI9XFxcIixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVybDogXFxcImhpa2VyOi8vcGFnZS92aWRlb1xcXCIsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZGVzYzogJ1VQOicgKyBsaXN0Lm93bmVyLm5hbWUgKyAnXFxcXG4nICsgbGlzdC5kZXNjLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGV4dHJhOiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgYWlkOiBsaXN0LmFpZFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIMKgIMKgIGNhc2UgJ+iuoumYhSc6XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgc3Vic2NyaXB0aW9ucyA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2Jhbmd1bWkvZm9sbG93L2xpc3Q/dHlwZT1cXFwiICsgZ2V0SXRlbSgn6K6i6ZiF57G75Z6LJywgJzEnKSArIFxcXCImZm9sbG93X3N0YXR1cz0wJnBuPVxcXCIgKyBwYWdlICsgXFxcIiZwcz0xNSZ2bWlkPVxcXCIgKyBtaWQsIHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBoZWFkZXJzOiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgXFxcIkNvb2tpZVxcXCI6IGNvb2tpZVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB9KSkuZGF0YTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBpZiAoZ2V0SXRlbSgn6K6i6ZiF57G75Z6LJywgJzEnKSA9PSAnMScpIHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0eXBlck5hbWUgPSAn6L+955WqJztcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB9IGVsc2Uge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHR5cGVyTmFtZSA9ICfov73liacnO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBpZiAocGFnZSA9PSAxKSB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogXFxcIuW9k+WJjVxcXCIgKyB0eXBlck5hbWUgKyBcXFwi5pWw6YePOlxcXCIgKyBzdWJzY3JpcHRpb25zLnRvdGFsLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVybDogXFxcImhpa2VyOi8vZW1wdHlcXFwiLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCJcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBzdWJzY3JpcHRpb25zLmxpc3QuZm9yRWFjaChsaXN0ID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBsaXN0LnRpdGxlLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGltZzogbGlzdC5jb3ZlciArIFxcXCJAUmVmZXJlcj1cXFwiLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVybDogXFxcImhpa2VyOi8vcGFnZS9maWxtZXJqaSNpbW1lcnNpdmVUaGVtZSNcXFwiLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGRlc2M6IGxpc3QuZXZhbHVhdGUuc3Vic3RyaW5nKDAsIDEyKSArICfigJjigJjigJnigJnigKY8Zm9udCBjb2xvcj1cXFwiIzFDMUMxQ1xcXCI+6K+m5oOFPC9mb250PicgKyAnXFxcXG4nICsgbGlzdC5zZWFzb25fdHlwZV9uYW1lICsgJ3wnICsgbGlzdC5hcmVhc1swXS5uYW1lICsgJ1xcXFxuJyArIChsaXN0LnByb2dyZXNzID09ICcnID8gJ+WwmuacquingueciycgOiBsaXN0LnByb2dyZXNzKSArICd8JyArIChsaXN0Lm5ld19lcC5pbmRleF9zaG93Lm1hdGNoKC/mm7TmlrAvKSA/ICfigJjigJjigJnigJk8Zm9udCBjb2xvcj1cXFwicmVkXFxcIj4nICsgbGlzdC5uZXdfZXAuaW5kZXhfc2hvdyArICc8L2ZvbnQ+JyA6IGxpc3QubmV3X2VwLmluZGV4X3Nob3cpLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiAnbW92aWVfMV92ZXJ0aWNhbF9waWMnLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGV4dHJhOiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgc2Vhc29uX2lkOiBsaXN0LnNlYXNvbl9pZFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB9KTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCDCoCDCoCBjYXNlICfljoblj7InOlxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHZhciBuZXh0SW5mbyA9IHt9O1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGlmIChwYWdlID09IDEpIHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBoaXN0b3JpZXMgPSBKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL2hpc3RvcnkvY3Vyc29yP21heD0wJnZpZXdfYXQ9MCZidXNpbmVzcz1cXFwiLCB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaGVhZGVyczoge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIFxcXCJDb29raWVcXFwiOiBjb29raWVcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSkpLmRhdGE7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgbmV4dEluZm8ubWF4ID0gaGlzdG9yaWVzLmN1cnNvci5tYXg7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgbmV4dEluZm8udmlld19hdCA9IGhpc3Rvcmllcy5jdXJzb3Iudmlld19hdDtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBuZXh0SW5mby5idXNpbmVzcyA9IGhpc3Rvcmllcy5jdXJzb3IuYnVzaW5lc3M7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgfSBlbHNlIHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBoaXN0b3JpZXMgPSBKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL2hpc3RvcnkvY3Vyc29yP21heD1cXFwiICsgc3RvcmFnZTAuZ2V0TXlWYXIoSlNPTi5zdHJpbmdpZnkocGFnZSkpLm1heCArIFxcXCImdmlld19hdD1cXFwiICsgc3RvcmFnZTAuZ2V0TXlWYXIoSlNPTi5zdHJpbmdpZnkocGFnZSkpLnZpZXdfYXQgKyBcXFwiJmJ1c2luZXNzPVxcXCIgKyBzdG9yYWdlMC5nZXRNeVZhcihKU09OLnN0cmluZ2lmeShwYWdlKSkuYnVzaW5lc3MsIHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBoZWFkZXJzOiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgXFxcIkNvb2tpZVxcXCI6IGNvb2tpZVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KSkuZGF0YTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBuZXh0SW5mby5tYXggPSBoaXN0b3JpZXMuY3Vyc29yLm1heDtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBuZXh0SW5mby52aWV3X2F0ID0gaGlzdG9yaWVzLmN1cnNvci52aWV3X2F0O1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIG5leHRJbmZvLmJ1c2luZXNzID0gaGlzdG9yaWVzLmN1cnNvci5idXNpbmVzcztcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgc3RvcmFnZTAucHV0TXlWYXIoSlNPTi5zdHJpbmdpZnkocGFnZSArIDEpLCBuZXh0SW5mbyk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgaGlzdG9yaWVzLmxpc3QuZm9yRWFjaChsaXN0ID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAvLyDov5jmnInopoHliKTmlq3nlarliaflvbHop4bnsbvlnotcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZiAobGlzdC5iYWRnZSA9PSAn5LiT5qCPJykge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIC8vIOWQjue7reWkhOeQhlxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IGxpc3Quc2hvd190aXRsZSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpbWc6IGxpc3QuY292ZXJzWzBdICsgXFxcIkBSZWZlcmVyPVxcXCIsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdtb3ZpZV8xX2xlZnRfcGljJyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB1cmw6IFxcXCJoaWtlcjovL3BhZ2Uvbm90ZSNpbW1lcnNpdmVUaGVtZSNcXFwiLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGRlc2M6ICdVUDonICsgbGlzdC5hdXRob3JfbmFtZSArICdcXFxcbicgKyBsaXN0LnRhZ19uYW1lLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGV4dHJhOiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgYWlkOiBsaXN0Lmhpc3Rvcnkub2lkLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9IGVsc2Uge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IGxpc3Quc2hvd190aXRsZSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpbWc6IGxpc3QuY292ZXIgKyBcXFwiQFJlZmVyZXI9XFxcIixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVybDogXFxcImhpa2VyOi8vcGFnZS92aWRlbyNpbW1lcnNpdmVUaGVtZSNcXFwiLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGRlc2M6ICdVUDonICsgbGlzdC5hdXRob3JfbmFtZSArICdcXFxcbicgKyBsaXN0LnRhZ19uYW1lLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGV4dHJhOiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgYWlkOiBsaXN0Lmhpc3Rvcnkub2lkLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgwqAgwqAgZGVmYXVsdDpcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBsb2coJ+WHuumUmeS6hn4nKTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCB9XFxuXFxufVxcblxcblxcblwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi55m75b2VXCIsXCJwYXRoXCI6XCJsb2dpblwiLFwicnVsZVwiOlwianM6XFxuXFxudmFyIGQgPSBbXTtcXG5cXG4vLyDlpoLmnpzojrflj5blpLHotKXlsLHlho3or5XkuIDmrKF+XFxuXFxuZC5wdXNoKHtcXG5cXG7CoCDCoCB1cmw6IFxcXCJodHRwczovL3d3dy5iaWxpYmlsaS5jb20vXFxcIixcXG5cXG7CoCDCoCBjb2xfdHlwZTogXFxcIng1X3dlYnZpZXdfc2luZ2xlXFxcIixcXG5cXG7CoCDCoCBkZXNjOiBcXFwiMTAwJSYmZmxvYXRcXFwiLFxcblxcbsKgIMKgIGV4dHJhOiB7XFxuXFxuwqAgwqAgwqAgwqAganM6ICQudG9TdHJpbmcoKCkgPT4ge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGZiYS5zZXRBcHBCYXJDb2xvcihcXFwicGlua1xcXCIpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHZhciB0b2tlbl90aW1lciA9IGZ1bmN0aW9uICgpIHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB2YXIgdGltZXIgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgLy8gaWYgKGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXFxcImhlYWRlci1sb2dpbi1lbnRyeVxcXCIpWzBdID09PSB1bmRlZmluZWQpIHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcXFwidW5sb2dpbi1hdmF0YXJcXFwiKVswXSA9PT0gdW5kZWZpbmVkKSB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgc2V0dGluZ3MgPSBKU09OLnN0cmluZ2lmeSh7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29va2llOiBmYmEuZ2V0Q29va2llKFxcXCJodHRwczovL3d3dy5iaWxpYmlsaS5jb20vXFxcIiksXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZmFjZTogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9tb3ZpZS8yMC5zdmcnXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZmJhLndyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9iaWxpLnR4dFxcXCIsIHNldHRpbmdzKTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBhbGVydChcXFwi5bey6I635Y+W5YiwY29va2llXFxcIik7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZmJhLmJhY2soKVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9LCAxMDApXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgfTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB0b2tlbl90aW1lcigpO1xcblxcbsKgIMKgIMKgIMKgIH0pLFxcblxcbsKgIMKgIMKgIMKgIHVhOiBQQ19VQSxcXG5cXG7CoCDCoCDCoCDCoCBjYW5CYWNrOiB0cnVlXFxuXFxuwqAgwqAgfVxcblxcbn0pXFxuXFxuc2V0UmVzdWx0KGQpO1xcblxcblxcbmpzOlxcblxcbnZhciBkID0gW107XFxuXFxuLy8g5aaC5p6c6I635Y+W5aSx6LSl5bCx5YaN6K+V5LiA5qyhflxcblxcbmQucHVzaCh7XFxuXFxuwqAgwqAgdXJsOiBcXFwiaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL1xcXCIsXFxuXFxuwqAgwqAgY29sX3R5cGU6IFxcXCJ4NV93ZWJ2aWV3X3NpbmdsZVxcXCIsXFxuXFxuwqAgwqAgZGVzYzogXFxcIjEwMCUmJmZsb2F0XFxcIixcXG5cXG7CoCDCoCBleHRyYToge1xcblxcbsKgIMKgIMKgIMKgIGpzOiAkLnRvU3RyaW5nKCgpID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBmYmEuc2V0QXBwQmFyQ29sb3IoXFxcInBpbmtcXFwiKTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB2YXIgdG9rZW5fdGltZXIgPSBmdW5jdGlvbiAoKSB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdmFyIHRpbWVyID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIC8vIGlmIChkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFxcXCJoZWFkZXItbG9naW4tZW50cnlcXFwiKVswXSA9PT0gdW5kZWZpbmVkKSB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXFxcInVubG9naW4tYXZhdGFyXFxcIilbMF0gPT09IHVuZGVmaW5lZCkge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHNldHRpbmdzID0gSlNPTi5zdHJpbmdpZnkoe1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNvb2tpZTogZmJhLmdldENvb2tpZShcXFwiaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL1xcXCIpLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGZhY2U6ICdodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8vbW92aWUvMjAuc3ZnJ1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGZiYS53cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvY3kvYmlsaS50eHRcXFwiLCBzZXR0aW5ncyk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgYWxlcnQoXFxcIuW3suiOt+WPluWIsGNvb2tpZVxcXCIpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGZiYS5iYWNrKClcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSwgMTAwKVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIH07XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgdG9rZW5fdGltZXIoKTtcXG5cXG7CoCDCoCDCoCDCoCB9KSxcXG5cXG7CoCDCoCDCoCDCoCB1YTogUENfVUEsXFxuXFxuwqAgwqAgwqAgwqAgY2FuQmFjazogdHJ1ZVxcblxcbsKgIMKgIH1cXG5cXG59KVxcblxcbnNldFJlc3VsdChkKTtcXG5cXG5cXG5cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuW9seinhuS6jOe6p1wiLFwicGF0aFwiOlwiZmlsbWVyamlcIixcInJ1bGVcIjpcImpzOlxcbi8vIOaVsOaNruWumuS9jVxcbnZhciBkID0gW107XFxuaWYgKE1ZX1BBUkFNUy5zZWFzb25faWQpIHtcXG4gICAgc2Vhc29uX2lkID0gTVlfUEFSQU1TLnNlYXNvbl9pZCArIFxcXCJcXFwiO1xcbiAgICBEYXRhID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3BnYy92aWV3L3dlYi9zZWFzb24/c2Vhc29uX2lkPScgKyBzZWFzb25faWQpKS5yZXN1bHQ7XFxufSBlbHNlIHtcXG4gICAgRGF0YSA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS9wZ2Mvdmlldy93ZWIvc2Vhc29uP2VwX2lkPScgKyBNWV9QQVJBTVMuZXBfaWQpKS5yZXN1bHQ7XFxufVxcbuWwgemdoiA9IERhdGEuY292ZXIgKyBcXFwiQFJlZmVyZXI9XFxcIjtcXG7lnLDljLogPSBEYXRhLmFyZWFzWzBdLm5hbWU7XFxu566A5LuLID0gRGF0YS5ldmFsdWF0ZTtcXG4vLyDmraPniYdcXG7nsbvlnosgPSBEYXRhLnBvc2l0aXZlLnRpdGxlO1xcbuS4iuaYoOaXtumXtCA9IERhdGEucHVibGlzaC5wdWJfdGltZTtcXG50cnkge1xcbiAgICDlvpfliIYgPSBEYXRhLnJhdGluZy5zY29yZTtcXG59IGNhdGNoIChlKSB7XFxuICAgIOW+l+WIhiA9ICfmmoLml6DlvpcnO1xcbn1cXG7ov73liafml6XljoYgPSBEYXRhLm5ld19lcC5kZXNjO1xcbuabtOaWsOi/m+W6piA9IERhdGEubmV3X2VwLnRpdGxlO1xcbuW9seeJh+WQjeensCA9IERhdGEudGl0bGU7XFxu56ys5LqM5qCH6aKYID0gRGF0YS5zaGFyZV9zdWJfdGl0bGU7XFxu5Ymn6ZuG5YiX6KGoID0gRGF0YS5lcGlzb2RlcztcXG7nn63orq8gPSBcXFwi4q2QXFxcIiArIOexu+WeiyArIFxcXCLirZBcXFwiICsg56ys5LqM5qCH6aKYICsgJ1xcXFxuJyArIOWcsOWMuiArICctJyArIOW+l+WIhiArICfliIZcXFxcbi0nICsg5LiK5pig5pe26Ze0ICsgJy0nO1xcbi8vIOmHjeWumuS5ieS6jOe6p+mhtemdouaVsOaNrlxcbnNldFBhZ2VUaXRsZSjlvbHniYflkI3np7ApO1xcbnNldFBhZ2VQaWNVcmwo5bCB6Z2iKTtcXG4vLyDliY3nva7lj4LmlbDlkozpooTlpITnkIYtLS1cXG5pbWdMaW5rID0gc3RvcmFnZTAuZ2V0TXlWYXIoJ+WbvuaghycpO1xcbi8vIOWFqOWxgGxhennigJTigJTnm7Tpk74r5pat5o+SXFxudmFyIGxhenkgPSAkKCcnKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgIHZpZGVvUGFybXMgPSBmaW5kSXRlbShpbnB1dCk7XFxuICAgIGFpZCA9IHZpZGVvUGFybXMuZXh0cmEuYWlkO1xcbiAgICBidmlkID0gdmlkZW9QYXJtcy5leHRyYS5idmlkO1xcbiAgICBjaWQgPSB2aWRlb1Bhcm1zLmV4dHJhLmNpZDtcXG4gICAgYmFkZ2UgPSB2aWRlb1Bhcm1zLmV4dHJhLmJhZGdlO1xcbiAgICAvLyDmj5DkuqTljoblj7LorrDlvZVcXG4gICAgJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcIikucmVwb3J0UHJvY2VzcyhhaWQsIGNpZCk7XFxuICAgIGlmIChnZXRNeVZhcignYXV0aG9yaXR5JywgJ25vcm1hbCcpID09ICdTVklQJykge1xcbiAgICAgICAgcmV0dXJuICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXCIpLmJpbGlMYXp5KGFpZCwgY2lkLCAxMTYpLnJlcGxhY2UoLzsvZywgXFxcIu+8m++8m1xcXCIpO1xcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgaWYgKGJhZGdlLm1hdGNoKC/kvJrlkZh85LuY6LS5LykpIHtcXG4gICAgICAgICAgICBldmFsKFxcXCJ2YXIgY29uZmlnID1cXFwiICsgZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvY2FjaGUvTXlQYXJzZVNldC5qc29uXFxcIikpO1xcbiAgICAgICAgICAgIGV2YWwoZmV0Y2goJ2hpa2VyOi8vZmlsZXMvY2FjaGUvUGFyc2VfRG4uanMnLCB7fSkpO1xcbiAgICAgICAgICAgIHJldHVybiBheXRtUGFyc2UoaW5wdXQpO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICByZXR1cm4gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcIikuYmlsaUxhenkoYWlkLCBjaWQsIDExNikucmVwbGFjZSgvOy9nLCBcXFwi77yb77ybXFxcIik7XFxuICAgICAgICB9XFxuICAgIH1cXG59KTtcXG52YXIgQ29sb3IgPSBcXFwiIzE5Qjg5RFxcXCI7XFxudmFyIOavj+mhtembhuaVsCA9IDMwO1xcbnZhciDmkJzntKLmqKHlvI8gPSAn5YiG57uEJztcXG52YXIg6LCD55So5ZCN56ewID0gJ+eugOW9sSc7XFxucHV0TXlWYXIoJ+aKmOWPoCcsICflhbMnKTtcXG5wdXRNeVZhcign5pel5Y6GJywgJ+WFsycpO1xcbnB1dE15VmFyKCdEYXRhJywgRGF0YSk7XFxucHV0TXlWYXIoJ2xhenknLCBsYXp5KTtcXG4vLyDmuIXpmaTlj5jph49cXG5hZGRMaXN0ZW5lcignb25DbG9zZScsICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICBjbGVhck15VmFyKCfliIbpm4botbcnKTtcXG4gICAgY2xlYXJNeVZhcign5YiG6ZuG57uIJyk7XFxuICAgIGNsZWFyTXlWYXIoJ+aKmOWPoCcpO1xcbiAgICBjbGVhck15VmFyKCfml6XljoYnKTtcXG4gICAgY2xlYXJNeVZhcignRGF0YScpO1xcbiAgICBjbGVhck15VmFyKCdsYXp5Jyk7XFxuICAgIGNsZWFyTXlWYXIoJ+WJp+mbhuWIl+ihqCcpO1xcbn0pKVxcbi8vIOiuvue9ruWKqOaAgeacgOaWsOeroOiKglxcbnNldExhc3RDaGFwdGVyUnVsZSgnanM6JyArICQudG9TdHJpbmcoKE1ZX1VSTCkgPT4ge1xcbiAgICBodG1sID0gZmV0Y2goTVlfVVJMKTtcXG4gICAgRGF0YSA9IEpTT04ucGFyc2UoaHRtbC5tYXRjaCgvXFxcIm1lZGlhSW5mb1xcXCJbXFxcXFNcXFxcc10rKD89LFxcXCJpbml0RXBMaXN0XFxcIikvKVswXS5yZXBsYWNlKCdcXFwibWVkaWFJbmZvXFxcIjonLCAnJykucmVwbGFjZSgnXFxcXHUwMDJGJywgJy8nKSk7XFxuICAgIOi/veWJp+aXpeWOhiA9IERhdGEubmV3X2VwLmRlc2M7XFxuICAgIOabtOaWsOi/m+W6piA9IERhdGEubmV3X2VwLnRpdGxlO1xcbiAgICDmm7TmlrDnirbmgIEgPSDov73liafml6XljoYubWF0Y2goL+WujOe7k3zmnJ/lvoUvKSA/IOi/veWJp+aXpeWOhiA6ICfmm7TmlrDoh7MnICsgKOabtOaWsOi/m+W6pi5tYXRjaCgvW1xcXFx1NGUwMC1cXFxcdTlmYTVdLykgPyDmm7TmlrDov5vluqYgOiAoJ+esrCcgKyAo5pu05paw6L+b5bqmID09ICcnID8gMCA6IOabtOaWsOi/m+W6pikpICsgJ+ivnScpXFxuICAgIHNldFJlc3VsdCjmm7TmlrDnirbmgIEpO1xcbn0sIE1ZX1VSTCkpO1xcbi8vIOmhtemdouWGheWuueato+aWhy0tLVxcbi8vIOWfuuacrOS/oeaBr+aooeWdl1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOiDnn63orq8sXFxuICAgIGRlc2M6IOeugOS7iyA9PSAnJyA/ICfmmoLml6DnroDku4snIDog566A5LuLLnN1YnN0cmluZygwLCA0NSkgKyAn4oCY4oCY4oCZ4oCZ4oCmPGZvbnQgY29sb3I9XFxcIiMxQzFDMUNcXFwiPuivpuaDhTwvZm9udD4nLFxcbiAgICBpbWc6IOWwgemdoixcXG4gICAgdXJsOiAkKCkucnVsZSgo566A5LuLKSA9PiB7XFxuICAgICAgICByZXMgPSB7fTtcXG4gICAgICAgIHZhciBkID0gW107XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn5b2x54mH566A5LuL77yaJyArICdcXFxcblxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0JyArIOeugOS7iyxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ2xvbmdfdGV4dCdcXG4gICAgICAgIH0pO1xcbiAgICAgICAgcmVzLmRhdGEgPSBkO1xcbiAgICAgICAgc2V0SG9tZVJlc3VsdChyZXMpO1xcbiAgICB9LCDnroDku4spLFxcbiAgICBjb2xfdHlwZTogJ21vdmllXzFfdmVydGljYWxfcGljX2JsdXInLFxcbn0pO1xcbi8vIOabtOaWsOaXpeWOhuaooeWdl1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOiAn5pel5Y6GJyxcXG4gICAgaW1nOiBpbWdMaW5rLuaXpeWOhixcXG4gICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCjov73liafml6XljoYsIOabtOaWsOi/m+W6pikgPT4ge1xcbiAgICAgICAgaWYgKGdldE15VmFyKCfml6XljoYnLCAn5YWzJykgPT0gJ+W8gCcpIHtcXG4gICAgICAgICAgICBkZWxldGVJdGVtKCfov73liafml6XljoYnKTtcXG4gICAgICAgICAgICBwdXRNeVZhcign5pel5Y6GJywgJ+WFsycpO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBhZGRJdGVtQWZ0ZXIoJ+aYvuekuuaooeW8jycsIHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IOi/veWJp+aXpeWOhi5tYXRjaCgv5a6M57uTfOacn+W+hS8pID8g6L+95Ymn5pel5Y6GIDog6L+95Ymn5pel5Y6GICsgJzxicj48Zm9udCBjb2xvcj1cXFwicmVkXFxcIj7mm7TmlrDoh7MnICsgKOabtOaWsOi/m+W6pi5tYXRjaCgvW1xcXFx1NGUwMC1cXFxcdTlmYTVdLykgPyDmm7TmlrDov5vluqYgOiAoJ+esrCcgKyAo5pu05paw6L+b5bqmID09ICcnID8gMCA6IOabtOaWsOi/m+W6pikgKyAn6K+dJykpICsgJzwvZm9udD4nLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcInJpY2hfdGV4dFxcXCIsXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICBpZDogJ+i/veWJp+aXpeWOhidcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIHB1dE15VmFyKCfml6XljoYnLCAn5byAJyk7XFxuICAgICAgICB9XFxuICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5bey5YiH5o2i5pel5Y6G5Li6OicgKyBnZXRNeVZhcign5pel5Y6GJywgJ+W8gCcpXFxuICAgIH0sIOi/veWJp+aXpeWOhiwg5pu05paw6L+b5bqmKSxcXG4gICAgY29sX3R5cGU6ICdpY29uXzUnXFxufSk7XFxuLy8g6K6i6ZiF5qih5Z2XXFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6ICforqLpmIUnLFxcbiAgICBpbWc6IGltZ0xpbmsu6K6i6ZiFLFxcbiAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgc2VsZWN0aW9uTGlzdCA9IFsn6K6i6ZiFJywgJ+WPlua2iOiuoumYhSddO1xcbiAgICAgICAgcmV0dXJuICQoc2VsZWN0aW9uTGlzdCwgMikuc2VsZWN0KCgpID0+IHtcXG4gICAgICAgICAgICBzZWFzb25faWQgPSBKU09OLnBhcnNlKGdldE15VmFyKCdEYXRhJykpLnNlYXNvbl9pZDtcXG4gICAgICAgICAgICBpZiAoaW5wdXQgPT0gJ+iuoumYhScpIHtcXG4gICAgICAgICAgICAgICAgcmVzID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcIikuc3Vic2NyaWJlRmlsbShzZWFzb25faWQpO1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIHJlcyA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXCIpLmNhbmNlbFN1YnNjcmliZUZpbG0oc2Vhc29uX2lkKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovLycgKyByZXM7XFxuICAgICAgICB9KTtcXG4gICAgfSksXFxuICAgIGNvbF90eXBlOiAnaWNvbl81J1xcbn0pO1xcbi8vIOivhOiuuuaooeWdl1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOiAn6K+E6K66JyxcXG4gICAgaW1nOiBpbWdMaW5rLuafpeeci+ivhOiuuixcXG4gICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgIHJldHVybiAkKCdoaWtlcjovL2VtcHR5JykucnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgdmFyIGQgPSBbXTtcXG4gICAgICAgICAgICBMaXN0ID0gSlNPTi5wYXJzZShnZXRNeVZhcignRGF0YScpKS5lcGlzb2RlcztcXG4gICAgICAgICAgICBMaXN0LmZvckVhY2goaXRlbSA9PiB7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS5zaGFyZV9jb3B5ICsgJzxmb250IGNvbG9yPVxcXCIjMzNjY2NjXFxcIj5cXHTinq48L2ZvbnQ+JyxcXG4gICAgICAgICAgICAgICAgICAgIGltZzogaXRlbS5jb3ZlciArICdAUmVmZXJlcj0nLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL0NvbW1lbnRzP3A9ZnlwYWdlJyxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiYXZhdGFyXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgXFxcImlkXFxcIjogaXRlbS5haWQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgXFxcInR5cGVcXFwiOiAxXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIHNldFJlc3VsdChkKTtcXG4gICAgICAgIH0pO1xcbiAgICB9KSxcXG4gICAgY29sX3R5cGU6ICdpY29uXzUnXFxufSk7XFxuXFxuLy8g57K+5b2p57un57ut5qih5Z2XXFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6ICflkajovrknLFxcbiAgICBpbWc6IGltZ0xpbmsu5ZGo6L65LFxcbiAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgRGF0YSA9IEpTT04ucGFyc2UoZ2V0TXlWYXIoJ0RhdGEnKSk7XFxuICAgICAgICAvLyDmnInkupvmsqHmnInnm7TmjqXljrvmjonmh5LlvpflpITnkIZ+XFxuICAgICAgICBpZiAoRGF0YS5zZWN0aW9uKSB7XFxuICAgICAgICAgICAg5ZGo6L655pWw57uEID0gW1xcXCLwn4+377iP55u45YWz57O75YiXXFxcIiwgXFxcIvCfpKNQViboirHnta5cXFwiLCBcXFwi8J+NieerluWxj+S5n+eyvuW9qVxcXCIsIFxcXCLwn5Sl57K+5b2p5LqM5YibXFxcIl07XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIOWRqOi+ueaVsOe7hCA9IFtcXFwi8J+Pt++4j+ebuOWFs+ezu+WIl1xcXCJdO1xcbiAgICAgICAgfVxcbiAgICAgICAgLy8g5ZGo6L655pWw57uEID0gW1xcXCLwn4+377iP55u45YWz57O75YiXXFxcIiwgXFxcIvCfpKNQViboirHnta5cXFwiLCBcXFwi56uW5bGP5Lmf57K+5b2pXFxcIiwgXFxcIueyvuW9qeS6jOWIm1xcXCJdO1xcbiAgICAgICAgcmV0dXJuICQo5ZGo6L655pWw57uELCAxLCAn4YOm57K+5b2p57un57utJykuc2VsZWN0KCgpID0+IHtcXG4gICAgICAgICAgICBEYXRhID0gSlNPTi5wYXJzZShnZXRNeVZhcignRGF0YScpKTtcXG4gICAgICAgICAgICBsYXp5ID0gZ2V0TXlWYXIoJ2xhenknKTtcXG4gICAgICAgICAgICBpZiAoaW5wdXQgPT09ICfwn4+377iP55u45YWz57O75YiXJykge1xcbiAgICAgICAgICAgICAgICDns7vliJflkI3np7AgPSBEYXRhLnNlYXNvbl90aXRsZVxcbiAgICAgICAgICAgICAgICDns7vliJfmlbDmja4gPSBEYXRhLnNlYXNvbnM7XFxuICAgICAgICAgICAgICAgIHJldHVybiAkKCkucnVsZSgo57O75YiX5pWw5o2uKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBkID0gW107XFxuICAgICAgICAgICAgICAgICAgICBzZXRQYWdlVGl0bGUoJ/Cfj7fvuI/nm7jlhbPns7vliJcnKTtcXG4gICAgICAgICAgICAgICAgICAgIGlmICjns7vliJfmlbDmja4gPT0gW10gfHwg57O75YiX5pWw5o2uID09ICcnKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfigJjigJjigJnigJk8YmlnPjxmb250IGNvbG9yPVxcXCJyZWRcXFwiPuKtkOivpeW9seeJh+ayoeacieebuOWFs+ezu+WIl+WTpn7irZA8L2ZvbnQ+PC9iaWc+JyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAndG9hc3Q6Ly/pg73msqHmnInvvIzvvIzkvaDngrnllaXlkYB+JyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogJ+aVrOivt+acn+W+hX4nLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICDns7vliJfmlbDmja4uZm9yRWFjaChsaXN0ID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogbGlzdC5zZWFzb25fdGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZzogKGxpc3QuaG9yaXpvbnRhbF9jb3Zlcl8xNjEwID09ICcnID8gKGxpc3QuaG9yaXpvbnRhbF9jb3Zlcl8xNjkgPT0gJycgPyBsaXN0LmNvdmVyIDogbGlzdC5ob3Jpem9udGFsX2NvdmVyXzE2OSkgOiBsaXN0Lmhvcml6b250YWxfY292ZXJfMTYxMCkgKyBcXFwiQFJlZmVyZXI9XFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL2ZpbG1lcmppI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6IGxpc3QubmV3X2VwLmluZGV4X3Nob3csXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV9sZWZ0X3BpYycsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwiZXBfaWRcXFwiOiBsaXN0Lm5ld19lcC5pZFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIHNldEhvbWVSZXN1bHQoZCk7XFxuICAgICAgICAgICAgICAgIH0sIOezu+WIl+aVsOaNrilcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlucHV0ID09PSAn8J+ko1BWJuiKsee1ricpIHtcXG4gICAgICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgICAgIFBW5ZKM6Iqx57Wu5pWw5o2uID0gRGF0YS5zZWN0aW9uWzBdLmVwaXNvZGVzO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoKS5ydWxlKChQVuWSjOiKsee1ruaVsOaNriwgbGF6eSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBbXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRQYWdlVGl0bGUoJ/CfpKNQViboirHnta4nKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoUFblkozoirHnta7mlbDmja4gPT0gW10gfHwgUFblkozoirHnta7mlbDmja4gPT0gJycpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPGJpZz48Zm9udCBjb2xvcj1cXFwicmVkXFxcIj7irZDor6XlvbHniYcv6KeG6aKR5rKh5pyJ55u45YWzUFblkozoirHnta7lk6Z+4q2QPC9mb250PjwvYmlnPicsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICd0b2FzdDovL+mDveayoeacie+8jO+8jOS9oOeCueWVpeWRgH4nLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogJ+aVrOivt+acn+W+hX4nLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgUFblkozoirHnta7mlbDmja4uZm9yRWFjaChsaXN0ID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBsaXN0LnRpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiBsaXN0LmNvdmVyICsgXFxcIkBSZWZlcmVyPVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGxpc3QubGluayArIGxhenksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiBsaXN0LnN1YnRpdGxlICsgJ1xcXFxuJyArIGxpc3QubG9uZ190aXRsZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV9sZWZ0X3BpYycsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBsaXN0LmxpbmssXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWlkOiBsaXN0LmFpZCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidmlkOiBsaXN0LmJ2aWQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2lkOiBsaXN0LmNpZCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWRnZTogbGlzdC5iYWRnZVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRIb21lUmVzdWx0KGQpO1xcbiAgICAgICAgICAgICAgICAgICAgfSwgUFblkozoirHnta7mlbDmja4sIGxhenkpXFxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/msqHmnInmlbDmja7lk6Z+J1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSBlbHNlIGlmIChpbnB1dCA9PT0gJ/CfjYnnq5blsY/kuZ/nsr7lvaknKSB7XFxuICAgICAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgICAgICDnq5blsY/kuZ/nsr7lvanmlbDmja4gPSBEYXRhLnNlY3Rpb25bMV0uZXBpc29kZXM7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJCgpLnJ1bGUoKOerluWxj+S5n+eyvuW9qeaVsOaNriwgbGF6eSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBbXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRQYWdlVGl0bGUoJ/CfjYnnq5blsY/kuZ/nsr7lvaknKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAo56uW5bGP5Lmf57K+5b2p5pWw5o2uID09IFtdIHx8IOerluWxj+S5n+eyvuW9qeaVsOaNriA9PSAnJykge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfigJjigJjigJnigJk8YmlnPjxmb250IGNvbG9yPVxcXCJyZWRcXFwiPuKtkOivpeW9seeJhy/op4bpopHmsqHmnInnm7jlhbPnq5blsY/nn63op4bpopHlk6Z+4q2QPC9mb250PjwvYmlnPicsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICd0b2FzdDovL+mDveayoeacie+8jO+8jOS9oOeCueWVpeWRgH4nLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogJ+aVrOivt+acn+W+hX4nLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAg56uW5bGP5Lmf57K+5b2p5pWw5o2uLmZvckVhY2gobGlzdCA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogbGlzdC50aXRsZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZzogbGlzdC5jb3ZlciArIFxcXCJAUmVmZXJlcj1cXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBsaXN0LmxpbmsgKyBsYXp5LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogbGlzdC5zdWJ0aXRsZSArICdcXFxcbicgKyBsaXN0LmxvbmdfdGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogbGlzdC5saW5rLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFpZDogbGlzdC5haWQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnZpZDogbGlzdC5idmlkLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNpZDogbGlzdC5jaWQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFkZ2U6IGxpc3QuYmFkZ2VcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0SG9tZVJlc3VsdChkKTtcXG4gICAgICAgICAgICAgICAgICAgIH0sIOerluWxj+S5n+eyvuW9qeaVsOaNriwgbGF6eSlcXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+ayoeacieaVsOaNruWTpn4nXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlucHV0ID09PSAn8J+UpeeyvuW9qeS6jOWImycpIHtcXG4gICAgICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgICAgIOeyvuW9qeS6jOWIm+aVsOaNriA9IERhdGEuc2VjdGlvblsyXS5lcGlzb2RlcztcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAkKCkucnVsZSgo57K+5b2p5LqM5Yib5pWw5o2uLCBsYXp5KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZCA9IFtdO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFBhZ2VUaXRsZSgn8J+UpeeyvuW9qeS6jOWImycpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICjnsr7lvankuozliJvmlbDmja4gPT0gW10gfHwg57K+5b2p5LqM5Yib5pWw5o2uID09ICcnKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxiaWc+PGZvbnQgY29sb3I9XFxcInJlZFxcXCI+4q2Q6K+l5b2x54mHL+inhumikeayoeacieS6jOWIm+S9nOWTgeWTpn7irZA8L2ZvbnQ+PC9iaWc+JyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ3RvYXN0Oi8v6YO95rKh5pyJ77yM77yM5L2g54K55ZWl5ZGAficsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiAn5pWs6K+35pyf5b6FficsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICDnsr7lvankuozliJvmlbDmja4uZm9yRWFjaChsaXN0ID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g6ZKI5a+56YOo5YiG5Y+C5pWw57y65aSx55qE5oOF5Ya15aaC5Yeh5Lq65L+u5LuZ5Lyg5YaZ55qE77yM77yMXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaXN0LmFpZCA9PSAwIHx8IGxpc3QuY2lkID09IDApIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZWRlb0RhdGEgPSBKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXc/YWlkPVxcXCIgKyBsaXN0Lmxpbmsuc3BsaXQoJ2F2JylbMV0sIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJVc2VyLUFnZW50XFxcIjogUENfVUEsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJSZWZlcmVyXFxcIjogJ2h0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS8nXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6IFxcXCJHRVRcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkuZGF0YTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFpZCA9IHZpZWRlb0RhdGEuYWlkO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnZpZCA9IHZpZWRlb0RhdGEuYnZpZDtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNpZCA9IHZpZWRlb0RhdGEuY2lkO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWlkID0gbGlzdC5haWQ7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidmlkID0gbGlzdC5idmlkO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2lkID0gbGlzdC5jaWQ7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBsaXN0LnRpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiBsaXN0LmNvdmVyICsgXFxcIkBSZWZlcmVyPVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGxpc3QubGluayArIGxhenksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiBsaXN0LnN1YnRpdGxlICsgJ1xcXFxuJyArIGxpc3QubG9uZ190aXRsZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV9sZWZ0X3BpYycsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBsaXN0LmxpbmssXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWlkOiBhaWQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnZpZDogYnZpZCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaWQ6IGNpZCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWRnZTogbGlzdC5iYWRnZVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRIb21lUmVzdWx0KGQpO1xcbiAgICAgICAgICAgICAgICAgICAgfSwg57K+5b2p5LqM5Yib5pWw5o2uLCBsYXp5KVxcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5rKh5pyJ5pWw5o2u5ZOmfidcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5q2j5Zyo6L+b5YWlXFxcIiArIGlucHV0ICsgXFxcIueVjOmdoi4uLlxcXCI7XFxuICAgICAgICB9KVxcbiAgICB9KSxcXG4gICAgY29sX3R5cGU6IFxcXCJpY29uXzVcXFwiLFxcbiAgICBleHRyYToge1xcbiAgICAgICAgaWQ6ICfnsr7lvannu6fnu60nXFxuICAgIH1cXG59KTtcXG4vLyDmmL7npLrmqKHlvI/mm7TmlLnmqKHlnZdcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogZ2V0SXRlbSgn5qih5byPJywgJ+WPjOi+uScpLFxcbiAgICBpbWc6IGdldEl0ZW0oJ+aooeW8jycsICflj4zovrknKSA9PSAn5YiX6KGoJyA/IGltZ0xpbmsu5YiX6KGoIDogaW1nTGluay7lj4zovrksXFxuICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICDmmL7npLrnmoTliafpm4bliJfooaggPSBKU09OLnBhcnNlKGdldE15VmFyKCfmmL7npLrnmoTliafpm4bliJfooagnKSk7XFxuICAgICAgICBpZiAoZ2V0SXRlbSgn5qih5byPJywgJ+WPjOi+uScpID09ICfliJfooagnKSB7XFxuICAgICAgICAgICAg5pi+56S655qE5Ymn6ZuG5YiX6KGoLmZvckVhY2goZWwgPT4ge1xcbiAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKGVsLmxpbmssIHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMicsXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIHNldEl0ZW0oJ+aooeW8jycsICflj4zovrknKVxcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICDmmL7npLrnmoTliafpm4bliJfooaguZm9yRWFjaChlbCA9PiB7XFxuICAgICAgICAgICAgICAgIHVwZGF0ZUl0ZW0oZWwubGluaywge1xcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX2xlZnRfcGljJyxcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgc2V0SXRlbSgn5qih5byPJywgJ+WIl+ihqCcpXFxuICAgICAgICB9XFxuICAgICAgICBpbWdMaW5rID0gc3RvcmFnZTAuZ2V0TXlWYXIoJ+WbvuaghycpO1xcbiAgICAgICAgdXBkYXRlSXRlbSgn5pi+56S65qih5byPJywge1xcbiAgICAgICAgICAgIHRpdGxlOiBnZXRJdGVtKCfmqKHlvI8nLCAn5Y+M6L65JyksXFxuICAgICAgICAgICAgaW1nOiBnZXRJdGVtKCfmqKHlvI8nLCAn5Y+M6L65JykgPT0gJ+WIl+ihqCcgPyBpbWdMaW5rLuWIl+ihqCA6IGltZ0xpbmsu5Y+M6L65LFxcbiAgICAgICAgfSk7XFxuICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5bey5YiH5o2i5qih5byP5Li6OicgKyBnZXRJdGVtKCfmqKHlvI8nLCAn5Y+M6L65JylcXG4gICAgfSksXFxuICAgIGNvbF90eXBlOiAnaWNvbl81JyxcXG4gICAgZXh0cmE6IHtcXG4gICAgICAgIGlkOiAn5pi+56S65qih5byPJ1xcbiAgICB9XFxufSwge1xcbiAgICBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnLFxcbn0pO1xcbi8vIOmAieaPkuaooeWdl+KAlOKAlOWxgOmDqOWIt+aWsOeJiFxcbuadpea6kCA9ICdibCc7XFxucHV0TXlWYXIoJ+eugOaPkicsICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICBsZXQgdGl0bGVBcnIgPSBbXVxcbiAgICBzZXRGaWxlID0gcmVhZEZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvRHVhbk5pYW4vTXlQYXJzZS5qc29uJyk7XFxuICAgIHRyeSB7XFxuICAgICAgICBldmFsKCdqc29uPScgKyBzZXRGaWxlKTtcXG4gICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgbG9nKCdKc29u6Kej5p6Q5Y+R55Sf5LqG6ZSZ6K+vOicgKyBlLm1lc3NhZ2UpO1xcbiAgICB9XFxuICAgIHRpdGxlQXJyID0ganNvbi50aXRsZTtcXG4gICAgbGV0IGJhcnJ5MSA9IFsn8J+TnSddO1xcbiAgICBsZXQgYmFycnkyID0gWyfwn5SNJ107XFxuICAgIHRpdGxlQXJyID0gYmFycnkyLmNvbmNhdCh0aXRsZUFycik7XFxuICAgIHRpdGxlQXJyID0gYmFycnkxLmNvbmNhdCh0aXRsZUFycik7XFxuICAgIGV2YWwoJ29wPWpzb24uc2V0dGluZ3MuJyArIOadpea6kCk7XFxuICAgIHRpdGxlQXJyID0gdGl0bGVBcnIubWFwKChpdCkgPT4ge1xcbiAgICAgICAgcmV0dXJuIGl0ID09PSBvcCA/ICfwn5GJJyArIGl0IDogaXQ7XFxuICAgIH0pO1xcbiAgICBwdXRNeVZhcign6Kej5p6Q5pWw57uEJywgdGl0bGVBcnIpO1xcbiAgICBwdXRNeVZhcignc2V0RmlsZScsIHNldEZpbGUpO1xcbn0pKVxcbmV2YWwoZ2V0TXlWYXIoJ+eugOaPkicpKTtcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogJ+ino+aekO+8mvCflJg8Zm9udCBjb2xvcj1cXFwiJyArIENvbG9yICsgJ1xcXCI+JyArIG9wICsgJzwvZm9udD5cXFxcdFxcXFx06aG156CB77yaPGZvbnQgY29sb3I9XFxcIicgKyBDb2xvciArICdcXFwiPicgKyAoKGdldE15VmFyKCfliIbpm4botbcnLCAn6aaW6aG1JykgPT0gJ+mmlumhtScpID8gJ+mmlumhtScgOiAoZ2V0TXlWYXIoJ+WIhumbhui1tycpICsgJy0nICsgZ2V0TXlWYXIoJ+WIhumbhue7iCcpKSkgKyAnPC9mb250PicsXFxuICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoanNvbiwg5p2l5rqQLCBDb2xvciwgb3AsIOW9seeJh+WQjeensCwg5pCc57Si5qih5byPLCDosIPnlKjlkI3np7ApID0+IHtcXG4gICAgICAgIGV2YWwoZ2V0TXlWYXIoJ+eugOaPkicpKTtcXG4gICAgICAgIHJldHVybiAkKGV2YWwoZ2V0TXlWYXIoJ+ino+aekOaVsOe7hCcpKSwgMykuc2VsZWN0KChqc29uLCDmnaXmupAsIENvbG9yLCBvcCwg5b2x54mH5ZCN56ewLCDmkJzntKLmqKHlvI8sIOiwg+eUqOWQjeensCkgPT4ge1xcbiAgICAgICAgICAgIHNldEZpbGUgPSBnZXRNeVZhcignc2V0RmlsZScpO1xcbiAgICAgICAgICAgIGlucHV0ID0gaW5wdXQucmVwbGFjZSgv8J+RiS9nLCAnJyk7XFxuICAgICAgICAgICAgaWYgKGlucHV0ID09PSAn8J+TnScpIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL3BhZ2UvUm91dGU/cnVsZT1NeUZpZWxk4bSw4oG/JnR5cGU957yW6L6RI25vSGlzdG9yeSNcXFwiO1xcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5wdXQgPT09ICfwn5SNJykge1xcbiAgICAgICAgICAgICAgICBpZiAo5pCc57Si5qih5byPID09ICfliIbnu4QnKSB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vc2VhcmNoP3M9XFxcIiArIOW9seeJh+WQjeensCArIFxcXCImZ3JvdXA9XFxcIiArIOiwg+eUqOWQjeensDtcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9zZWFyY2g/cz1cXFwiICsg5b2x54mH5ZCN56ewICsgXFxcIiZydWxlPVxcXCIgKyDosIPnlKjlkI3np7A7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgLy8g5Y6f5YWI55qE6YWN572uXFxuICAgICAgICAgICAgb3JpZ2luU2V0dGluZ3MgPSBKU09OLnN0cmluZ2lmeShqc29uLnNldHRpbmdzKTtcXG4gICAgICAgICAgICAvLyDkv67mlLnphY3nva5cXG4gICAgICAgICAgICBldmFsKCdqc29uLnNldHRpbmdzLicgKyDmnaXmupAgKyAnPWlucHV0OycpO1xcbiAgICAgICAgICAgIHNldEZpbGUgPSBzZXRGaWxlLnJlcGxhY2Uob3JpZ2luU2V0dGluZ3MsIEpTT04uc3RyaW5naWZ5KGpzb24uc2V0dGluZ3MpKTtcXG4gICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9EdWFuTmlhbi9NeVBhcnNlLmpzb24nLCBzZXRGaWxlKTtcXG4gICAgICAgICAgICAvLyDliLfmlrDlhYPntKBcXG4gICAgICAgICAgICBldmFsKGdldE15VmFyKCfnroDmj5InKSk7XFxuICAgICAgICAgICAgdXBkYXRlSXRlbSgnb3AnLCB7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn6Kej5p6Q77ya8J+UmDxmb250IGNvbG9yPVxcXCInICsgQ29sb3IgKyAnXFxcIj4nICsgb3AgKyAnPC9mb250PlxcXFx0XFxcXHTpobXnoIHvvJo8Zm9udCBjb2xvcj1cXFwiJyArIENvbG9yICsgJ1xcXCI+JyArICgoZ2V0TXlWYXIoJ+WIhumbhui1tycsICfpppbpobUnKSA9PSAn6aaW6aG1JykgPyAn6aaW6aG1JyA6IChnZXRNeVZhcign5YiG6ZuG6LW3JykgKyAnLScgKyBnZXRNeVZhcign5YiG6ZuG57uIJykpKSArICc8L2ZvbnQ+JyxcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5YiH5o2i6Kej5p6Q5Y+j5Li6OlxcXCIgKyBpbnB1dDtcXG4gICAgICAgIH0sIGpzb24sIOadpea6kCwgQ29sb3IsIG9wLCDlvbHniYflkI3np7AsIOaQnOe0ouaooeW8jywg6LCD55So5ZCN56ewKVxcbiAgICB9LCBqc29uLCDmnaXmupAsIENvbG9yLCBvcCwg5b2x54mH5ZCN56ewLCDmkJzntKLmqKHlvI8sIOiwg+eUqOWQjeensCksXFxuICAgIGltZzogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9tb3ZpZS8yMC5zdmcnLFxcbiAgICBjb2xfdHlwZTogXFxcImF2YXRhclxcXCIsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICBpZDogJ29wJ1xcbiAgICB9XFxufSk7XFxuLy8g5rua5Yqo5Ymn6ZuG5p2h5qCPXFxu5Ymn6ZuG6ZW/5bqmID0g5Ymn6ZuG5YiX6KGoLmxlbmd0aDtcXG5pZiAo5Ymn6ZuG6ZW/5bqmID4g5q+P6aG16ZuG5pWwKSB7XFxuICAgIHB1dE15VmFyKCfliLfmlrDpgInpm4YnLCAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgIHB1dE15VmFyKCfliIbpm4botbcnLCBzdGFydCk7XFxuICAgICAgICBwdXRNeVZhcign5YiG6ZuG57uIJywgZW5kKTtcXG4gICAgICAgIGV2YWwoZ2V0TXlWYXIoJ+eugOaPkicpKTtcXG4gICAgICAgIHVwZGF0ZUl0ZW0oJ29wJywge1xcbiAgICAgICAgICAgIHRpdGxlOiAn6Kej5p6Q77ya8J+UmDxmb250IGNvbG9yPVxcXCInICsgQ29sb3IgKyAnXFxcIj4nICsgb3AgKyAnPC9mb250PlxcXFx0XFxcXHTpobXnoIHvvJo8Zm9udCBjb2xvcj1cXFwiJyArIENvbG9yICsgJ1xcXCI+JyArICgoZ2V0TXlWYXIoJ+WIhumbhui1tycsICfpppbpobUnKSA9PSAn6aaW6aG1JykgPyAn6aaW6aG1JyA6IChnZXRNeVZhcign5YiG6ZuG6LW3JykgKyAnLScgKyBnZXRNeVZhcign5YiG6ZuG57uIJykpKSArICc8L2ZvbnQ+JyxcXG4gICAgICAgIH0pXFxuICAgICAgICAvLyDliKDpmaRcXG4gICAgICAgIOaYvuekuueahOWJp+mbhuWIl+ihqCA9IEpTT04ucGFyc2UoZ2V0TXlWYXIoJ+aYvuekuueahOWJp+mbhuWIl+ihqCcpKTtcXG4gICAgICAgIOaYvuekuueahOWJp+mbhuWIl+ihqC5mb3JFYWNoKGVsID0+IHtcXG4gICAgICAgICAgICBkZWxldGVJdGVtKGVsLmxpbmspO1xcbiAgICAgICAgfSk7XFxuICAgICAgICAvLyDmt7vliqBcXG4gICAgICAgIGxhenkgPSBnZXRNeVZhcignbGF6eScpO1xcbiAgICAgICAg5Ymn6ZuG5YiX6KGoID0gSlNPTi5wYXJzZShnZXRNeVZhcign5Ymn6ZuG5YiX6KGoJykpO1xcbiAgICAgICAg5pi+56S655qE5Ymn6ZuG5YiX6KGoID0g5Ymn6ZuG5YiX6KGoLnNsaWNlKHN0YXJ0IC0gMSwgZW5kKTtcXG4gICAgICAgIG5ld0FycmF5ID0gW107XFxuICAgICAgICBpbmRleCA9IDE7XFxuICAgICAgICDmmL7npLrnmoTliafpm4bliJfooaguZm9yRWFjaChsaXN0ID0+IHtcXG4gICAgICAgICAgICBpZiAoZ2V0SXRlbSgn5qih5byPJywgJ+WPjOi+uScpID09ICfliJfooagnKSB7XFxuICAgICAgICAgICAgICAgIG5ld0FycmF5LnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGxpc3QubG9uZ190aXRsZSxcXG4gICAgICAgICAgICAgICAgICAgIGltZzogbGlzdC5jb3ZlciArIFxcXCJAUmVmZXJlcj1cXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBsaXN0LmxpbmsgKyBsYXp5LFxcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogbGlzdC50aXRsZS5tYXRjaCgvWzAtOV0vKSA/IChsaXN0LmJhZGdlICsgJ+esrCcgKyBsaXN0LnRpdGxlICsgJ+ivnScpIDogbGlzdC50aXRsZSxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV9sZWZ0X3BpYycsXFxuICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBsaXN0LmxpbmssXFxuICAgICAgICAgICAgICAgICAgICAgICAgYWlkOiBsaXN0LmFpZCxcXG4gICAgICAgICAgICAgICAgICAgICAgICBidmlkOiBsaXN0LmJ2aWQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgY2lkOiBsaXN0LmNpZCxcXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWRnZTogbGlzdC5iYWRnZVxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICBuZXdBcnJheS5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBsaXN0LmxvbmdfdGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICBpbWc6IGxpc3QuY292ZXIgKyBcXFwiQFJlZmVyZXI9XFxcIixcXG4gICAgICAgICAgICAgICAgICAgIHVybDogbGlzdC5saW5rICsgbGF6eSxcXG4gICAgICAgICAgICAgICAgICAgIGRlc2M6IGxpc3QudGl0bGUubWF0Y2goL1swLTldLykgPyAobGlzdC5iYWRnZSArICfnrKwnICsgbGlzdC50aXRsZSArICfor50nKSA6IGxpc3QudGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzInLFxcbiAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogbGlzdC5saW5rLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFpZDogbGlzdC5haWQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgYnZpZDogbGlzdC5idmlkLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNpZDogbGlzdC5jaWQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgYmFkZ2U6IGxpc3QuYmFkZ2VcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGluZGV4ICs9IDE7XFxuICAgICAgICB9KTtcXG4gICAgICAgIGFkZEl0ZW1BZnRlcihnZXRNeVZhcign5pyr6aG1JyksIG5ld0FycmF5KTtcXG4gICAgICAgIHB1dE15VmFyKCfmmL7npLrnmoTliafpm4bliJfooagnLCDmmL7npLrnmoTliafpm4bliJfooagpO1xcbiAgICB9KSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nLFxcbiAgICAgICAgdXJsOiAnaGlrZXI6Ly9lbXB0eScsXFxuICAgICAgICB0aXRsZTogJ+KItycsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIGlkOiAn5Y2g5L2N56ymJyxcXG4gICAgICAgIH1cXG4gICAgfSlcXG4gICAgcHV0TXlWYXIoJ+WIhumbhui1tycsIDEpO1xcbiAgICBwdXRNeVZhcign5YiG6ZuG57uIJywg5q+P6aG16ZuG5pWwKTtcXG4gICAgcHV0TXlWYXIoJ+WJp+mbhuWIl+ihqCcsIOWJp+mbhuWIl+ihqCk7XFxuICAgIOaAu+mhteaVsCA9IE1hdGguY2VpbCjliafpm4bplb/luqYgLyDmr4/pobXpm4bmlbApO1xcbiAgICBzdGFydCA9IDE7XFxuICAgIGVuZCA9IOavj+mhtembhuaVsDtcXG4gICAgZm9yIChsZXQgcGFnZSA9IDE7IHBhZ2UgPD0g5oC76aG15pWwOyBwYWdlKyspIHtcXG4gICAgICAgIGlmIChlbmQgPiDliafpm4bplb/luqYpIHtcXG4gICAgICAgICAgICBlbmQgPSDliafpm4bplb/luqY7XFxuICAgICAgICB9XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBzdGFydCArICctJyArIGVuZCxcXG4gICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjI25vSGlzdG9yeSMnKS5sYXp5UnVsZSgoc3RhcnQsIGVuZCwgQ29sb3IsIOadpea6kCkgPT4ge1xcbiAgICAgICAgICAgICAgICBldmFsKGdldE15VmFyKCfliLfmlrDpgInpm4YnKSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxuICAgICAgICAgICAgfSwgc3RhcnQsIGVuZCwgQ29sb3IsIOadpea6kCksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcXG4gICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICBpZDogc3RhcnQgKyAnLScgKyBlbmRcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KTtcXG4gICAgICAgIGlmIChlbmQgPCDliafpm4bplb/luqYpIHtcXG4gICAgICAgICAgICBzdGFydCArPSDmr4/pobXpm4bmlbA7XFxuICAgICAgICAgICAgZW5kICs9IOavj+mhtembhuaVsDtcXG4gICAgICAgIH1cXG4gICAgfVxcbiAgICAvLyDorrDlvZXmnKvpobXnmoRpZFxcbiAgICBwdXRNeVZhcign5pyr6aG1Jywgc3RhcnQgKyAnLScgKyBlbmQpO1xcbn0gZWxzZSB7XFxuICAgIHB1dE15VmFyKCfliIbpm4botbcnLCAxKTtcXG4gICAgcHV0TXlWYXIoJ+WIhumbhue7iCcsIOWJp+mbhumVv+W6pik7XFxufVxcbi8vIOWxleekuuWJp+mbhjpcXG7mmL7npLrnmoTliafpm4bliJfooaggPSDliafpm4bliJfooaguc2xpY2UoMCwgZ2V0TXlWYXIoJ+WIhumbhue7iCcpKTtcXG5wdXRNeVZhcign5pi+56S655qE5Ymn6ZuG5YiX6KGoJywg5pi+56S655qE5Ymn6ZuG5YiX6KGoKTtcXG5pbmRleCA9IDE7XFxu5pi+56S655qE5Ymn6ZuG5YiX6KGoLmZvckVhY2gobGlzdCA9PiB7XFxuICAgIGlmIChnZXRJdGVtKCfmqKHlvI8nLCAn5Y+M6L65JykgPT0gJ+WIl+ihqCcpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGxpc3QubG9uZ190aXRsZSxcXG4gICAgICAgICAgICBpbWc6IGxpc3QuY292ZXIgKyBcXFwiQFJlZmVyZXI9XFxcIixcXG4gICAgICAgICAgICB1cmw6IGxpc3QubGluayArIGxhenksXFxuICAgICAgICAgICAgZGVzYzogbGlzdC50aXRsZS5tYXRjaCgvWzAtOV0vKSA/IChsaXN0LmJhZGdlICsgJ+esrCcgKyBsaXN0LnRpdGxlICsgJ+ivnScpIDogbGlzdC50aXRsZSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnLFxcbiAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgIGlkOiBsaXN0LmxpbmssXFxuICAgICAgICAgICAgICAgIGFpZDogbGlzdC5haWQsXFxuICAgICAgICAgICAgICAgIGJ2aWQ6IGxpc3QuYnZpZCxcXG4gICAgICAgICAgICAgICAgY2lkOiBsaXN0LmNpZCxcXG4gICAgICAgICAgICAgICAgYmFkZ2U6IGxpc3QuYmFkZ2VcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KTtcXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGxpc3QubG9uZ190aXRsZSxcXG4gICAgICAgICAgICBpbWc6IGxpc3QuY292ZXIgKyBcXFwiQFJlZmVyZXI9XFxcIixcXG4gICAgICAgICAgICB1cmw6IGxpc3QubGluayArIGxhenksXFxuICAgICAgICAgICAgZGVzYzogbGlzdC50aXRsZS5tYXRjaCgvWzAtOV0vKSA/IChsaXN0LmJhZGdlICsgJ+esrCcgKyBsaXN0LnRpdGxlICsgJ+ivnScpIDogbGlzdC50aXRsZSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzInLFxcbiAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgIGlkOiBsaXN0LmxpbmssXFxuICAgICAgICAgICAgICAgIGFpZDogbGlzdC5haWQsXFxuICAgICAgICAgICAgICAgIGJ2aWQ6IGxpc3QuYnZpZCxcXG4gICAgICAgICAgICAgICAgY2lkOiBsaXN0LmNpZCxcXG4gICAgICAgICAgICAgICAgYmFkZ2U6IGxpc3QuYmFkZ2VcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KTtcXG4gICAgfVxcbiAgICBpbmRleCArPSAxO1xcbn0pO1xcbnNldFJlc3VsdChkKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcInVw5Li76aG1XCIsXCJwYXRoXCI6XCJ1cEhvbWVcIixcInJ1bGVcIjpcImpzOlxcblxcbnZhciBkID0gW107XFxuXFxuLy8g6aKE5aSE55CGXFxuXFxucHV0TXlWYXIoJ3VwSW5mbycsICflhbMnKTtcXG5cXG5zZXRQYWdlVGl0bGUoTVlfUEFSQU1TLnRpdGxlKTtcXG5cXG5pbWdMaW5rPXN0b3JhZ2UwLmdldE15VmFyKCflm77moIcnKTtcXG5cXG4vLyDpmLLmraLlj43niKzomavvvIzku47kuIrkuIDkuKrpobXpnaLkvKDpgJLmlbDmja7igJTigJTlj43niKzomavkuKXph41cXG5cXG51cE1pZCA9IE1ZX1BBUkFNUy5taWQgKyBcXFwiXFxcIjtcXG5cXG51cE5hbWUgPSBNWV9QQVJBTVMudGl0bGU7XFxuXFxudXBGYWNlID0gTVlfUEFSQU1TLmZhY2U7XFxuXFxucmVsYXRpb249JC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcIikudXNlck1hcHBpbmcodXBNaWQpO1xcblxcbi8vIOWktOWDj+agj1xcblxcbmQucHVzaCh7XFxuXFxuwqAgwqAgdGl0bGU6ICc8Zm9udCBjb2xvcj1cXFwiYmx1ZVxcXCI+JyArIHVwTmFtZSArICc8L2ZvbnQ+JyxcXG5cXG7CoCDCoCB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKHVwTWlkKSA9PiB7XFxuXFxuwqAgwqAgwqAgwqAgaWYgKGdldE15VmFyKCd1cEluZm8nLCAn5YWzJykgPT0gJ+W8gCcpIHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBkZWxldGVJdGVtKCd1cEluZm8nKTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBwdXRNeVZhcigndXBJbmZvJywgJ+WFsycpO1xcblxcbsKgIMKgIMKgIMKgIH0gZWxzZSB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgLy8g55So5oi35Z+65pys5L+h5oGv4oCU4oCU5Zug5Li655u05o6l5L2/55So5o6l5Y+j57uP5bi46Kem5Y+R5Y+N54is6Jmr5py65Yi25pWF5L2/55So572R6aG15rqQ56CB6I635Y+W5L+h5oGv77yM6ICM5LiU5Y+q6IO9ZmV0Y2hDb2RlQnlXZWJWaWV3XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgbGV0IHUgPSBcXFwiaHR0cHM6Ly9tLmJpbGliaWxpLmNvbS9zcGFjZS9cXFwiICsgdXBNaWQ7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgaHRtbCA9IGZldGNoQ29kZUJ5V2ViVmlldyh1LCB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgYmxvY2tSdWxlczogWycucG5nJywgJy5qcGcnXSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0aW1lb3V0OiA1MDAwXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgaW5mb0NhcmQgPSBwZGZhKGh0bWwsICcuaW5mby1jYXJkJiZ0cicpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIC8vIOWeg+WcvuWumuS9je+8jOaIkeebtOaOpeWMuemFjeWkhOeQhuWtl+espuS4suW+l+S6hn5cXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBpbmZvPScnO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIC8vIOaOkumZpHVw5bCB6Z2i5pWw5o2uXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgZm9yIChsZXQgaSA9IDE7IGkgPCBpbmZvQ2FyZC5sZW5ndGg7IGkrKykge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlmIChpPT1pbmZvQ2FyZC5sZW5ndGgtMSkge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGRhdGE9aW5mb0NhcmRbaV0ucmVwbGFjZSgnPHRyPlxcXFxuIDx0ZD4nLCcnKS5yZXBsYWNlKCc8L3RkPlxcXFxuPC90cj4nLCcnKS5yZXBsYWNlKCc8L3RkPiBcXFxcbiA8dGQ+JywnOicpXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfWVsc2V7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZGF0YT1pbmZvQ2FyZFtpXS5yZXBsYWNlKCc8dHI+XFxcXG4gPHRkPicsJycpLnJlcGxhY2UoJzwvdGQ+XFxcXG48L3RyPicsJycpLnJlcGxhY2UoJzwvdGQ+IFxcXFxuIDx0ZD4nLCc6JykrJ1xcXFxuJ1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpbmZvKz1kYXRhO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBhZGRJdGVtQWZ0ZXIoJ2N1cnJlbnRVcCcsIHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogaW5mbyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB1cmw6ICdoaWtlcjovL2VtcHR5JyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ2xvbmdfdGV4dCcsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZXh0cmE6IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZDogJ3VwSW5mbydcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgcHV0TXlWYXIoJ3VwSW5mbycsICflvIAnKTtcXG5cXG7CoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgcmV0dXJuICd0b2FzdDovL+S/oeaBr+aKmOWPoDonICsgZ2V0TXlWYXIoJ3VwSW5mbycsICflvIAnKVxcblxcbsKgIMKgIH0sIHVwTWlkKSxcXG5cXG7CoCDCoCBpbWc6IHVwRmFjZSArIFxcXCJAUmVmZXJlcj1cXFwiLFxcblxcbsKgIMKgIGNvbF90eXBlOiBcXFwiYXZhdGFyXFxcIixcXG5cXG7CoCDCoCBleHRyYToge1xcblxcbsKgIMKgIMKgIMKgIGlkOiAnY3VycmVudFVwJ1xcblxcbsKgIMKgIH1cXG5cXG59LHtcXG5cXG7CoCDCoCBjb2xfdHlwZTogJ2xpbmUnXFxuXFxufSk7XFxuXFxuLy8g5YWs5ZGKXFxuXFxubm90aWNlVGV4dCA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL25vdGljZT9taWQ9JyArIHVwTWlkICsgJyZqc29ucD1qc29ucCcsIHtcXG5cXG7CoCDCoCBoZWFkZXJzOiB7XFxuXFxuwqAgwqAgwqAgwqAgXFxcIlVzZXItQWdlbnRcXFwiOiBQQ19VQSxcXG5cXG7CoCDCoCDCoCDCoCBcXFwiUmVmZXJlclxcXCI6IFxcXCJodHRwczovL3d3dy5iaWxpYmlsaS5jb20vXFxcIlxcblxcbsKgIMKgIH1cXG5cXG59KSkuZGF0YTtcXG5cXG5pZiAobm90aWNlVGV4dCAhPSAnJykge1xcblxcbsKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgdGl0bGU6ICflhazlkYonLFxcblxcbsKgIMKgIMKgIMKgIHVybDogJCgpLnJ1bGUoKG5vdGljZVRleHQpID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB2YXIgZCA9IFtdO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6ICflhazlkYrvvJonICsgJ1xcXFxuXFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHQnICsgbm90aWNlVGV4dCxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ2xvbmdfdGV4dCdcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB9KTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBzZXRIb21lUmVzdWx0KGQpO1xcblxcbsKgIMKgIMKgIMKgIH0sIG5vdGljZVRleHQpLFxcblxcbsKgIMKgIMKgIMKgIGRlc2M6IG5vdGljZVRleHQgPT0gJycgPyAn5pqC5peg5YWs5ZGKJyA6IG5vdGljZVRleHQsXFxuXFxuwqAgwqAgwqAgwqAgY29sX3R5cGU6ICd0ZXh0XzEnLFxcblxcbsKgIMKgIH0pO1xcblxcbn1cXG5cXG5kLnB1c2goe1xcblxcbsKgIMKgIGNvbF90eXBlOiAnbGluZSdcXG5cXG59LCB7XFxuXFxuwqAgwqAgdGl0bGU6IHJlbGF0aW9uLFxcblxcbsKgIMKgIGltZzogcmVsYXRpb249PSfmnKrlhbPms6gnP2ltZ0xpbmsu5re75Yqg5YWz5rOoOmltZ0xpbmsu5bey5YWz5rOoLFxcblxcbsKgIMKgIHVybDogJCgnI25vTG9hZGluZyMjbm9IaXN0b3J5IycpLmxhenlSdWxlKCh1cE1pZCkgPT4ge1xcblxcbsKgIMKgIMKgIMKgIHJldHVybiAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9hcGlcXFwiKS5jaGFuZ2VVc2VyUmVsYXRpb24odXBNaWQsIDExKVxcblxcbsKgIMKgIH0sIHVwTWlkKSxcXG5cXG7CoCDCoCBjb2xfdHlwZTogXFxcImljb25fc21hbGxfNFxcXCIsXFxuXFxuwqAgwqAgZXh0cmE6e1xcblxcbsKgIMKgIMKgIMKgIGlkOidyZWxhdGlvbidcXG5cXG7CoCDCoCB9XFxuXFxufSwge1xcblxcbsKgIMKgIHRpdGxlOiAn5Yqo5oCBJyxcXG5cXG7CoCDCoCBpbWc6IGltZ0xpbmsu5Yqo5oCBLFxcblxcbsKgIMKgIHVybDogJCgnI25vTG9hZGluZyMjbm9IaXN0b3J5IycpLmxhenlSdWxlKCh1cE1pZCkgPT4ge1xcblxcbsKgIMKgIMKgIMKgIHJldHVybiAkKCdoaWtlcjovL2VtcHR5P3A9ZnlwYWdlJykucnVsZSgodXBNaWQpPT57XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgbGV0IGQ9W107XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgbGF0ZW5ld3M9JC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcIikuZ2V0RHluYW1pY0RhdGEoJ3VwU3BhY2UnLHVwTWlkKTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBldmFsKCQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXCIpLnNob3dEeW5hbWljRGF0YSgpKTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBzZXRSZXN1bHQoZCk7XFxuXFxuwqAgwqAgwqAgwqAgfSx1cE1pZClcXG5cXG7CoCDCoCB9LCB1cE1pZCksXFxuXFxuwqAgwqAgY29sX3R5cGU6IFxcXCJpY29uX3NtYWxsXzRcXFwiLFxcblxcbn0se1xcblxcbsKgIMKgIHRpdGxlOiAn5LiT5qCPJyxcXG5cXG7CoCDCoCBpbWc6IGltZ0xpbmsu5LiT5qCPLFxcblxcbsKgIMKgIHVybDogXFxcImhpa2VyOi8vcGFnZS9hY3RpY2xlTGlzdD9wPWZ5cGFnZVxcXCIsXFxuXFxuwqAgwqAgY29sX3R5cGU6IFxcXCJpY29uX3NtYWxsXzRcXFwiLFxcblxcbsKgIMKgIGV4dHJhOiB7XFxuXFxuwqAgwqAgwqAgwqAgbWlkOiB1cE1pZFxcblxcbsKgIMKgIH1cXG5cXG59KVxcblxcbi8vIOeUqOaIt+inhumikS3lkIjpm4bjgIHns7vliJdcXG5cXG51cFZpZGVvID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvcG9seW1lci9zcGFjZS9zZWFzb25zX3Nlcmllc19saXN0P21pZD0nICsgdXBNaWQgKyAnJnBhZ2VfbnVtPTEmcGFnZV9zaXplPTEwJywge1xcblxcbsKgIMKgIGhlYWRlcnM6IHtcXG5cXG7CoCDCoCDCoCDCoCBcXFwiVXNlci1BZ2VudFxcXCI6IFBDX1VBLFxcblxcbsKgIMKgIMKgIMKgIFxcXCJSZWZlcmVyXFxcIjogXFxcImh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS9cXFwiXFxuXFxuwqAgwqAgfVxcblxcbn0pKS5kYXRhLml0ZW1zX2xpc3RzO1xcblxcbi8vIOinhumikeWQiOmbhuOAgeezu+WIl1xcblxcbnRyeSB7XFxuXFxuwqAgwqAgdXBWaWRlby5zZWFzb25zX2xpc3QuZm9yRWFjaChsaXN0ID0+IHtcXG5cXG7CoCDCoCDCoCDCoCBzZWFzb25faWQgPSBsaXN0Lm1ldGEuc2Vhc29uX2lkO1xcblxcbsKgIMKgIMKgIMKgIC8vIOagh+mimC3ot7Povazmm7TlpJpcXG5cXG7CoCDCoCDCoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiAnPGZvbnQgY29sb3I9XFxcIiMzM2NjY2NcXFwiPicgKyBsaXN0Lm1ldGEubmFtZS5zdWJzdHJpbmcoMCwgMzApICsgJzwvZm9udD5cXFxcdFxcXFx0PGZvbnQgY29sb3I9XFxcInJlZFxcXCI+JyArIGxpc3QubWV0YS50b3RhbCArICc8L2ZvbnQ+IMKgIMKg4p6uJyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBpbWc6ICdodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8vbW9yZS8xMzcucG5nQFJlZmVyZXI9JyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCAvLyBpbWc6IGxpc3QubWV0YS5jb3ZlcisnQFJlZmVyZXI9JyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ2F2YXRhcicsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiAkKCcjbm9Mb2FkaW5nIyNub0hpc3RvcnkjJykubGF6eVJ1bGUoKHVwTWlkLCBzZWFzb25faWQpID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXR1cm4gJCgnaGlrZXI6Ly9lbXB0eT9meXBhZ2UnKS5ydWxlKCh1cE1pZCwgc2Vhc29uX2lkKSA9PiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdmFyIGQgPSBbXTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBsZXQgdSA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9wb2x5bWVyL3NwYWNlL3NlYXNvbnNfYXJjaGl2ZXNfbGlzdD9taWQ9JyArIHVwTWlkICsgJyZzZWFzb25faWQ9JyArIHNlYXNvbl9pZCArICcmc29ydF9yZXZlcnNlPWZhbHNlJnBhZ2VfbnVtPScgKyBNWV9QQUdFICsgJyZwYWdlX3NpemU9MzAnO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIFZpZGVvID0gSlNPTi5wYXJzZShmZXRjaCh1LCB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaGVhZGVyczoge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIFxcXCJVc2VyLUFnZW50XFxcIjogUENfVUEsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgXFxcIlJlZmVyZXJcXFwiOiBcXFwiaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL1xcXCJcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSkpLmRhdGE7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgbWF4UGFnZSA9IE1hdGguY2VpbChWaWRlby5wYWdlLnRvdGFsIC8gVmlkZW8ucGFnZS5wYWdlX3NpemUpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlmIChNWV9QQUdFIDw9IG1heFBhZ2UpIHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiAn5b2T5YmNOuesrCcgKyBWaWRlby5wYWdlLnBhZ2VfbnVtICsgJ+mhtVxcXFx0XFxcXHRcXFxcdOWFseaciScgKyBtYXhQYWdlICsgJ+mhtSwnICsgVmlkZW8ucGFnZS50b3RhbCArICfmnaHmlbDmja4nLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVybDogXFxcImhpa2VyOi8vZW1wdHlcXFwiLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgVmlkZW8uYXJjaGl2ZXMuZm9yRWFjaChsaXN0ID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBsaXN0LnRpdGxlLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGltZzogbGlzdC5waWMgKyAnQFJlZmVyZXI9JyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkZXNjOiAn5pKt5pS+6YeP77yaJyArIGxpc3Quc3RhdC52aWV3LFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiAnbW92aWVfMV9sZWZ0X3BpYycsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL3ZpZGVvXFxcIixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBleHRyYToge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGFpZDogbGlzdC5haWRcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHNldEhvbWVSZXN1bHQoZCk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSwgdXBNaWQsIHNlYXNvbl9pZClcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB9LCB1cE1pZCwgc2Vhc29uX2lkKVxcblxcbsKgIMKgIMKgIMKgIH0pO1xcblxcbsKgIMKgIMKgIMKgIGlmIChsaXN0LmFyY2hpdmVzID09PSB1bmRlZmluZWQpIHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBsb2cobGlzdC5tZXRhLm5hbWUgKyAn5Li656m6Jyk7XFxuXFxuwqAgwqAgwqAgwqAgfSBlbHNlIHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBpZiAobGlzdC5hcmNoaXZlcy5sZW5ndGggPCAyKSB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgbGlzdC5hcmNoaXZlcy5mb3JFYWNoKGxpc3QgPT4ge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IGxpc3QudGl0bGUsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaW1nOiBsaXN0LnBpYyArICdAUmVmZXJlcj0nLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGRlc2M6ICfmkq3mlL7ph4/vvJonICsgbGlzdC5zdGF0LnZpZXcsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdtb3ZpZV8xX2xlZnRfcGljJyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB1cmw6IFxcXCJoaWtlcjovL3BhZ2UvdmlkZW9cXFwiLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGV4dHJhOiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgYWlkOiBsaXN0LmFpZFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB9IGVsc2UgaWYgKGxpc3QuYXJjaGl2ZXMubGVuZ3RoID09IDApIHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBcXFwi5aW95a625LyZ77yM6L+Z5a625LyZ5rKh5pyJ5ZCI6ZuG6KeG6aKR77yBXFxcIixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkZXNjOiBcXFwi6KaB5LiN5Y6754K55Ye75YWo6YOo6KeG6aKR55yL55yLflxcXCIsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB9IGVsc2Uge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGZvciAobGV0IGkgPSAwOyBpIDwgMjsgaSsrKSB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogbGlzdC5hcmNoaXZlc1tpXS50aXRsZSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpbWc6IGxpc3QuYXJjaGl2ZXNbaV0ucGljICsgJ0BSZWZlcmVyPScsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZGVzYzogJ+aSreaUvumHj++8micgKyBsaXN0LmFyY2hpdmVzW2ldLnN0YXQudmlldyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVybDogXFxcImhpa2VyOi8vcGFnZS92aWRlb1xcXCIsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZXh0cmE6IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBhaWQ6IGxpc3QuYXJjaGl2ZXNbaV0uYWlkXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIH0pO1xcblxcbn0gY2F0Y2ggKGUpIHtcXG5cXG7CoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIHRpdGxlOiAn5ZCI6ZuG5Li656m6JyxcXG5cXG7CoCDCoCDCoCDCoCB1cmw6ICdoaWtlcjovL2VtcHR5JyxcXG5cXG7CoCDCoCDCoCDCoCBkZXNjOiAnU29ycnks5rKh5pyJ5pWw5o2u5ZGificsXFxuXFxuwqAgwqAgwqAgwqAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJyxcXG5cXG7CoCDCoCB9KTtcXG5cXG59XFxuXFxudHJ5IHtcXG5cXG7CoCDCoCB1cFZpZGVvLnNlcmllc19saXN0LmZvckVhY2gobGlzdCA9PiB7XFxuXFxuwqAgwqAgwqAgwqAgc2VyaWVzX2lkID0gbGlzdC5tZXRhLnNlcmllc19pZDtcXG5cXG7CoCDCoCDCoCDCoCAvLyDmoIfpopgt6Lez6L2s5pu05aSaXFxuXFxuwqAgwqAgwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogJzxmb250IGNvbG9yPVxcXCIjMzNjY2NjXFxcIj4nICsgbGlzdC5tZXRhLm5hbWUuc3Vic3RyaW5nKDAsIDMwKSArICc8L2ZvbnQ+XFxcXHRcXFxcdDxmb250IGNvbG9yPVxcXCJyZWRcXFwiPicgKyBsaXN0Lm1ldGEudG90YWwgKyAnPC9mb250PiDCoCDCoOKericsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgaW1nOiAnaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL21vcmUvMTM3LnBuZ0BSZWZlcmVyPScsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgLy8gaW1nOiBsaXN0Lm1ldGEuY292ZXIrJ0BSZWZlcmVyPScsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdhdmF0YXInLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHVybDogJCgnI25vTG9hZGluZyMjbm9IaXN0b3J5IycpLmxhenlSdWxlKCh1cE1pZCwgc2VyaWVzX2lkKSA9PiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuICQoJ2hpa2VyOi8vZW1wdHk/ZnlwYWdlJykucnVsZSgodXBNaWQsIHNlcmllc19pZCkgPT4ge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHZhciBkID0gW107XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgbGV0IHUgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc2VyaWVzL2FyY2hpdmVzP21pZD0nICsgdXBNaWQgKyAnJnNlcmllc19pZD0nICsgc2VyaWVzX2lkICsgJyZvbmx5X25vcm1hbD10cnVlJnNvcnQ9ZGVzYyZwbj0nICsgTVlfUEFHRSArICcmcHM9MzAnO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIFZpZGVvID0gSlNPTi5wYXJzZShmZXRjaCh1LCB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaGVhZGVyczoge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIFxcXCJVc2VyLUFnZW50XFxcIjogUENfVUEsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgXFxcIlJlZmVyZXJcXFwiOiBcXFwiaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL1xcXCJcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSkpLmRhdGE7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgbWF4UGFnZSA9IE1hdGguY2VpbChWaWRlby5wYWdlLnRvdGFsIC8gVmlkZW8ucGFnZS5zaXplKTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZiAoTVlfUEFHRSA8PSBtYXhQYWdlKSB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogJ+W9k+WJjTrnrKwnICsgVmlkZW8ucGFnZS5udW0gKyAn6aG1XFxcXHRcXFxcdFxcXFx05YWx5pyJJyArIG1heFBhZ2UgKyAn6aG1LCcgKyBWaWRlby5wYWdlLnRvdGFsICsgJ+adoeaVsOaNricsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCIsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBWaWRlby5hcmNoaXZlcy5mb3JFYWNoKGxpc3QgPT4ge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IGxpc3QudGl0bGUsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaW1nOiBsaXN0LnBpYyArICdAUmVmZXJlcj0nLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGRlc2M6ICfmkq3mlL7ph4/vvJonICsgbGlzdC5zdGF0LnZpZXcsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdtb3ZpZV8xX2xlZnRfcGljJyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB1cmw6IFxcXCJoaWtlcjovL3BhZ2UvdmlkZW9cXFwiLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGV4dHJhOiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgYWlkOiBsaXN0LmFpZFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgc2V0SG9tZVJlc3VsdChkKTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9LCB1cE1pZCwgc2VyaWVzX2lkKVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIH0sIHVwTWlkLCBzZXJpZXNfaWQpXFxuXFxuwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgwqAgwqAgaWYgKGxpc3QuYXJjaGl2ZXMgPT09IHVuZGVmaW5lZCkge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGxvZyhsaXN0Lm1ldGEubmFtZSArICfkuLrnqbonKTtcXG5cXG7CoCDCoCDCoCDCoCB9IGVsc2Uge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGlmIChsaXN0LmFyY2hpdmVzLmxlbmd0aCA8IDIpIHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBsaXN0LmFyY2hpdmVzLmZvckVhY2gobGlzdCA9PiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogbGlzdC50aXRsZSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpbWc6IGxpc3QucGljICsgJ0BSZWZlcmVyPScsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZGVzYzogJ+aSreaUvumHj++8micgKyBsaXN0LnN0YXQudmlldyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVybDogXFxcImhpa2VyOi8vcGFnZS92aWRlb1xcXCIsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZXh0cmE6IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBhaWQ6IGxpc3QuYWlkXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIH0gZWxzZSBpZiAobGlzdC5hcmNoaXZlcy5sZW5ndGggPT0gMCkge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IFxcXCLlpb3lrrbkvJnvvIzov5nlrrbkvJnmsqHmnInlkIjpm4bop4bpopHvvIFcXFwiLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGRlc2M6IFxcXCLopoHkuI3ljrvngrnlh7vlhajpg6jop4bpopHnnIvnnIt+XFxcIixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVybDogXFxcImhpa2VyOi8vZW1wdHlcXFwiLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIH0gZWxzZSB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZm9yIChsZXQgaSA9IDA7IGkgPCAyOyBpKyspIHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBsaXN0LmFyY2hpdmVzW2ldLnRpdGxlLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGltZzogbGlzdC5hcmNoaXZlc1tpXS5waWMgKyAnQFJlZmVyZXI9JyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkZXNjOiAn5pKt5pS+6YeP77yaJyArIGxpc3QuYXJjaGl2ZXNbaV0uc3RhdC52aWV3LFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiAnbW92aWVfMV9sZWZ0X3BpYycsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL3ZpZGVvXFxcIixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBleHRyYToge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGFpZDogbGlzdC5hcmNoaXZlc1tpXS5haWRcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgfSk7XFxuXFxufSBjYXRjaCAoZSkge1xcblxcbsKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgdGl0bGU6ICfns7vliJfkuLrnqbonLFxcblxcbsKgIMKgIMKgIMKgIHVybDogJ2hpa2VyOi8vZW1wdHknLFxcblxcbsKgIMKgIMKgIMKgIGRlc2M6ICdTb3JyeSzmsqHmnInmlbDmja7lkaJ+JyxcXG5cXG7CoCDCoCDCoCDCoCBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnLFxcblxcbsKgIMKgIH0pO1xcblxcbn1cXG5cXG4vLyB1cOaKleeov1xcblxcbmQucHVzaCh7XFxuXFxuwqAgwqAgdGl0bGU6ICdUQeeahOinhumikSzngrnlh7vlsZXlvIDlhajpg6gnLFxcblxcbsKgIMKgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXFxuXFxuwqAgwqAgdXJsOiAkKCcjbm9Mb2FkaW5nIyNub0hpc3RvcnkjJykubGF6eVJ1bGUoKHVwTWlkKSA9PiB7XFxuXFxuwqAgwqAgwqAgwqAgcmV0dXJuICQoKS5ydWxlKCh1cE1pZCkgPT4ge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHZhciBkID0gW107XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgdHJ5IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB1cFRvdGFsVmlkZW9JbmZvID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYXJjL3NlYXJjaD9taWQ9JyArIHVwTWlkICsgJyZwbj0nICsgZ2V0TXlWYXIoJ19wYWdlJywgJzEnKSArICcmcHM9MjUmaW5kZXg9MSZqc29ucD1qc29ucCcsIHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBoZWFkZXJzOiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgXFxcIlVzZXItQWdlbnRcXFwiOiBQQ19VQSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBcXFwiUmVmZXJlclxcXCI6IFxcXCJodHRwczovL3d3dy5iaWxpYmlsaS5jb20vXFxcIlxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKHVwVG90YWxWaWRlb0luZm8ubWVzc2FnZSA9PSAn5ZWl6YO95pyo5pyJJykge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6ICfllaXpg73mnKjmnIkuLi4nLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGltZzogJ2h0dHBzOi8vcGljLmltZ2RiLmNuL2l0ZW0vNjMyYzIwNGUxNmYyYzJiZWIxMzY1MmFhLmpwZ0BSZWZlcmVyPScsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiAnaGlrZXI6Ly9lbXB0eScsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZGVzYzogJ+S4jeWwj+W/g+adpeWIsOS6huecn+epuueahOS4lueVjH4nLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiBcXFwicGljXzFcXFwiXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSBlbHNlIHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB1cFRvdGFsVmlkZW8gPSB1cFRvdGFsVmlkZW9JbmZvLmRhdGE7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgbWF4UGFnZSA9IE1hdGguY2VpbCh1cFRvdGFsVmlkZW8ucGFnZS5jb3VudCAvIHVwVG90YWxWaWRlby5wYWdlLnBzKTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBmb3IgKGxldCBwYWdlID0gMTsgcGFnZSA8PSBtYXhQYWdlOyBwYWdlKyspIHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiAocGFnZSArIFxcXCJcXFwiKSA9PSBnZXRNeVZhcignX3BhZ2UnLCAnMScpID8gJ+KAmOKAmOKAmeKAmTxmb250IGNvbG9yPVxcXCJyZWRcXFwiPicgKyAocGFnZSArIFxcXCJcXFwiKSArICc8L2ZvbnQ+JyA6IChwYWdlICsgXFxcIlxcXCIpLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVybDogJCgnI25vTG9hZGluZyMjbm9IaXN0b3J5IycpLmxhenlSdWxlKChwYWdlKSA9PiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcHV0TXlWYXIoJ19wYWdlJywgKHBhZ2UgKyBcXFwiXFxcIikpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJlZnJlc2hQYWdlKHRydWUpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSwgcGFnZSksXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdXBUb3RhbFZpZGVvLmxpc3Qudmxpc3QuZm9yRWFjaChsaXN0ID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBsaXN0LnRpdGxlLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGltZzogbGlzdC5waWMgKyAnQFJlZmVyZXI9JyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkZXNjOiAn5pKt5pS+6YeP77yaJyArIGxpc3QucGxheSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVybDogXFxcImhpa2VyOi8vcGFnZS92aWRlb1xcXCIsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZXh0cmE6IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBhaWQ6IGxpc3QuYWlkXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB9IGNhdGNoIChlKSB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogJ+mhtemdoui1sOS4ouS6hi4uLicsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaW1nOiAnaHR0cHM6Ly9pMC5oZHNsYi5jb20vYmZzL2dlbmVyYWwvZjdiNjY3MDExYTQ2NjE1NzMyYzcwMWY0YmIxZDA3Zjc5M2Y4ZDFkZi5wbmdAUmVmZXJlcj0nLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVybDogJ2hpa2VyOi8vZW1wdHknLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGRlc2M6ICflpKrpopHnuYHkuobvvIHnqI3lkI7lho3or5V+JyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogXFxcInBpY18xXFxcIlxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBzZXRIb21lUmVzdWx0KGQpO1xcblxcbsKgIMKgIMKgIMKgIH0sIHVwTWlkKVxcblxcbsKgIMKgIH0sIHVwTWlkKVxcblxcbn0pO1xcblxcbnNldFJlc3VsdChkKTtcXG5cXG5cXG5cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcInVw5pCc57SiXCIsXCJwYXRoXCI6XCJ1cFNlYXJjaFwiLFwicnVsZVwiOlwianM6XFxuXFxuc2Vhd29yZCA9IE1ZX1BBUkFNUy5zZWF3b3JkO1xcblxcbnZhciBkID0gW107XFxuXFxuY29va2llID0gSlNPTi5wYXJzZShmZXRjaENvb2tpZSgnaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tLycsIHtcXG5cXG7CoCDCoCBoZWFkZXJzOiB7XFxuXFxuwqAgwqAgwqAgwqAgXFxcIlVzZXItQWdlbnRcXFwiOiBQQ19VQSxcXG5cXG7CoCDCoCDCoCDCoCBcXFwiUmVmZXJlclxcXCI6IFxcXCJodHRwczovL3d3dy5iaWxpYmlsaS5jb20vXFxcIixcXG5cXG7CoCDCoCB9LFxcblxcbsKgIMKgIG1ldGhvZDogXFxcIkdFVFxcXCJcXG5cXG59KSlbMV07XFxuXFxucmVzdWx0RGF0YSA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvc2VhcmNoL3R5cGU/X19yZWZyZXNoX189dHJ1ZSZfZXh0cmE9JmNvbnRleHQ9JnBhZ2U9XFxcIiArIE1ZX1BBR0UgKyBcXFwiJnBhZ2Vfc2l6ZT0zNiZvcmRlcj0mZHVyYXRpb249JmZyb21fc291cmNlPSZmcm9tX3NwbWlkPTMzMy4zMzcmcGxhdGZvcm09cGMmaGlnaGxpZ2h0PTEmc2luZ2xlX2NvbHVtbj0wJmtleXdvcmQ9XFxcIiArIHNlYXdvcmQgKyBcXFwiJnF2X2lkPVIySWhCRGIwWFo4RU02OWNsbzJyd2VzejlMNHdSZ1p5JmNhdGVnb3J5X2lkPSZzZWFyY2hfdHlwZT1iaWxpX3VzZXImb3JkZXJfc29ydD0wJnVzZXJfdHlwZT0wJmR5bmFtaWNfb2Zmc2V0PTAmcHJlbG9hZD10cnVlJmNvbTJjbz10cnVlXFxcIiwge1xcblxcbsKgIMKgIGhlYWRlcnM6IHtcXG5cXG7CoCDCoCDCoCDCoCBcXFwiVXNlci1BZ2VudFxcXCI6IFBDX1VBLFxcblxcbsKgIMKgIMKgIMKgIFxcXCJSZWZlcmVyXFxcIjogXFxcImh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS9cXFwiLFxcblxcbsKgIMKgIMKgIMKgIFxcXCJDb29raWVcXFwiOiBjb29raWVcXG5cXG7CoCDCoCB9LFxcblxcbsKgIMKgIG1ldGhvZDogXFxcIkdFVFxcXCJcXG5cXG59KSkuZGF0YTtcXG5cXG5pZiAoTVlfUEFHRSA8PSByZXN1bHREYXRhLm51bVBhZ2VzKSB7XFxuXFxuwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCB0aXRsZTogJ+W9k+WJjTrnrKwnICsgcmVzdWx0RGF0YS5wYWdlICsgJ+mhtVxcXFx0XFxcXHRcXFxcdOWFseaciScgKyByZXN1bHREYXRhLm51bVBhZ2VzICsgJ+mhtSwnICsgcmVzdWx0RGF0YS5udW1SZXN1bHRzICsgJ+adoeaVsOaNricsXFxuXFxuwqAgwqAgwqAgwqAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCIsXFxuXFxuwqAgwqAgwqAgwqAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG5cXG7CoCDCoCB9KTtcXG5cXG7CoCDCoCByZXN1bHREYXRhLnJlc3VsdC5mb3JFYWNoKGxpc3QgPT4ge1xcblxcbsKgIMKgIMKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IFxcXCI8YmlnPjxmb250IGNvbG9yPSdibHVlJz5cXFwiICsgbGlzdC51bmFtZSArIFxcXCI8L2ZvbnQ+PC9iaWc+PHNtYWxsPlxcXCIgKyBsaXN0LnVzaWduICsgXFxcIjwvc21hbGw+XFxcIixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBpbWc6ICdodHRwczovLycgKyBsaXN0LnVwaWMgKyBcXFwiQFJlZmVyZXI9XFxcIixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ2F2YXRhcicsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL3VwSG9tZVxcXCIsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgZXh0cmE6IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBtaWQ6IGxpc3QubWlkLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBsaXN0LnVuYW1lLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGZhY2U6ICdodHRwczovLycgKyBsaXN0LnVwaWNcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgfSk7XFxuXFxufVxcblxcbnNldFNlYXJjaFJlc3VsdChkKTtcXG5cXG5cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcInZpZGVv5pCc57SiXCIsXCJwYXRoXCI6XCJ2aWRlb1NlYXJjaFwiLFwicnVsZVwiOlwianM6XFxuXFxuc2Vhd29yZCA9IE1ZX1BBUkFNUy5zZWF3b3JkO1xcblxcbnZhciBkID0gW107XFxuXFxuY29va2llID0gSlNPTi5wYXJzZShmZXRjaENvb2tpZSgnaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tLycsIHtcXG5cXG7CoCDCoCBoZWFkZXJzOiB7XFxuXFxuwqAgwqAgwqAgwqAgXFxcIlVzZXItQWdlbnRcXFwiOiBQQ19VQSxcXG5cXG7CoCDCoCDCoCDCoCBcXFwiUmVmZXJlclxcXCI6IFxcXCJodHRwczovL3d3dy5iaWxpYmlsaS5jb20vXFxcIixcXG5cXG7CoCDCoCB9LFxcblxcbsKgIMKgIG1ldGhvZDogXFxcIkdFVFxcXCJcXG5cXG59KSlbMV07XFxuXFxucmVzdWx0RGF0YSA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvc2VhcmNoL3R5cGU/X19yZWZyZXNoX189dHJ1ZSZfZXh0cmE9JmNvbnRleHQ9JnBhZ2U9XFxcIiArIE1ZX1BBR0UgKyBcXFwiJnBhZ2Vfc2l6ZT00MiZmcm9tX3NvdXJjZT0mZnJvbV9zcG1pZD0zMzMuMzM3JnBsYXRmb3JtPXBjJmhpZ2hsaWdodD0xJnNpbmdsZV9jb2x1bW49MCZrZXl3b3JkPVxcXCIgKyBzZWF3b3JkICsgXFxcIiZxdl9pZD12VHRVVDRSZmh6dDJwUHo5cDVXdTNaSTlRUWdVZnhzQSZjYXRlZ29yeV9pZD0mc2VhcmNoX3R5cGU9dmlkZW8mZHluYW1pY19vZmZzZXQ9MCZwcmVsb2FkPXRydWUmY29tMmNvPXRydWVcXFwiLCB7XFxuXFxuwqAgwqAgaGVhZGVyczoge1xcblxcbsKgIMKgIMKgIMKgIFxcXCJVc2VyLUFnZW50XFxcIjogUENfVUEsXFxuXFxuwqAgwqAgwqAgwqAgXFxcIlJlZmVyZXJcXFwiOiBcXFwiaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL1xcXCIsXFxuXFxuwqAgwqAgwqAgwqAgXFxcIkNvb2tpZVxcXCI6IGNvb2tpZVxcblxcbsKgIMKgIH0sXFxuXFxuwqAgwqAgbWV0aG9kOiBcXFwiR0VUXFxcIlxcblxcbn0pKS5kYXRhO1xcblxcbmlmIChNWV9QQUdFIDw9IHJlc3VsdERhdGEubnVtUGFnZXMpIHtcXG5cXG7CoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIHRpdGxlOiAn5b2T5YmNOuesrCcgKyByZXN1bHREYXRhLnBhZ2UgKyAn6aG1XFxcXHRcXFxcdFxcXFx05YWx5pyJJyArIHJlc3VsdERhdGEubnVtUGFnZXMgKyAn6aG1LCcgKyByZXN1bHREYXRhLm51bVJlc3VsdHMgKyAn5p2h5pWw5o2uJyxcXG5cXG7CoCDCoCDCoCDCoCB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG5cXG7CoCDCoCDCoCDCoCBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiLFxcblxcbsKgIMKgIH0pO1xcblxcbsKgIMKgIHJlc3VsdERhdGEucmVzdWx0LmZvckVhY2gobGlzdCA9PiB7XFxuXFxuwqAgwqAgwqAgwqAgLy8gdGl0bGU9bGlzdC50aXRsZS5yZXBsYWNlKCc8ZW0gY2xhc3M9XFxcXFxcXCJrZXl3b3JkXFxcXFxcXCI+JywnPGZvbnQgY29sb3I9XFxcInJlZFxcXCI+JykucmVwbGFjZSgnPC9lbT4nLCc8L2ZvbnQ+JylcXG5cXG7CoCDCoCDCoCDCoCB0aXRsZSA9IGxpc3QudGl0bGUucmVwbGFjZSgvPGVtIGNsYXNzPVxcXFxcXFwia2V5d29yZFxcXFxcXFwiPi9nLCAnJykucmVwbGFjZSgvPFxcXFwvZW0+L2csICcnKVxcblxcbsKgIMKgIMKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IHRpdGxlLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGltZzogJ2h0dHBzOi8vJyArIGxpc3QucGljICsgXFxcIkBSZWZlcmVyPVxcXCIsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgZGVzYzogbGlzdC5kZXNjcmlwdGlvbixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHVybDogXFxcImhpa2VyOi8vcGFnZS92aWRlb1xcXCIsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgZXh0cmE6IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAvLyDop4bpopHmoIfor4ZcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBhaWQ6IGxpc3QuYWlkLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiB0aXRsZVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCB9KTtcXG5cXG7CoCDCoCB9KTtcXG5cXG59XFxuXFxuc2V0U2VhcmNoUmVzdWx0KGQpO1xcblxcblwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi5o6o6YCBXCIsXCJwYXRoXCI6XCJmZWVkXCIsXCJydWxlXCI6XCIkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9hcGlcXFwiKS5nZXRGZWVkKCkuZm9yRWFjaChpdGVtID0+IHtcXG5cXG7CoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIHRpdGxlOiBpdGVtLnRpdGxlLFxcblxcbsKgIMKgIMKgIMKgIGltZzogaXRlbS5waWMrJ0BSZWZlcmVyPScsXFxuXFxuwqAgwqAgwqAgwqAgZGVzYzogJ3VwOicgKyBpdGVtLm93bmVyLm5hbWUgKyAnXFxcXG4nICsgaXRlbS5zdGF0LnZpZXcgKyBcXFwi5pKt5pS+4oC7XFxcIiArIGl0ZW0uc3RhdC5saWtlICsgXFxcIueCuei1nlxcXCIsXFxuXFxuwqAgwqAgwqAgwqAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL3ZpZGVvXFxcIixcXG5cXG7CoCDCoCDCoCDCoCBjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnLFxcblxcbsKgIMKgIMKgIMKgIGV4dHJhOiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgLy8gaWTlhbblrp7mmK9haWRcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBhaWQ6IGl0ZW0uaWQsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgY2lkOiBpdGVtLmNpZCxcXG5cXG7CoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgfSlcXG5cXG59KVxcblxcblxcblwifSx7XCJjb2xfdHlwZVwiOlwidGV4dF8xXCIsXCJuYW1lXCI6XCJBUElcIixcInBhdGhcIjpcImFwaVwiLFwicnVsZVwiOlwiLy8gcGFydDE66IGa5ZCI5Ye95pWwLS0tLS0tLS0tLS0tLS0tLVxcbi8vIOeZu+W9lemqjOivgVxcbiQuZXhwb3J0cy5pc0xvZ2dlZEluID0gZnVuY3Rpb24gKCkge1xcbiAgICBpZiAoZmlsZUV4aXN0KFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2JpbGkudHh0XFxcIikpIHtcXG4gICAgICAgIGJpbGlEYXRlID0gSlNPTi5wYXJzZShyZXF1ZXN0KFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2JpbGkudHh0XFxcIikpO1xcbiAgICAgICAgdmFyIGNvb2tpZSA9IGJpbGlEYXRlLmNvb2tpZTtcXG4gICAgICAgIGxldCB1c2VyaW5mbyA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2UvbmF2XFxcIiwge1xcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgXFxcIkNvb2tpZVxcXCI6IGNvb2tpZVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pKS5kYXRhO1xcbiAgICAgICAgaWYgKHVzZXJpbmZvLmlzTG9naW4gPT09IGZhbHNlKSB7XFxuICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHtcXG4gICAgICAgICAgICAgICAgXFxcInVzZXJOYW1lXFxcIjogJ+acqueZu+W9lScsXFxuICAgICAgICAgICAgICAgIFxcXCJ1c2VyTWlkXFxcIjogJycsXFxuICAgICAgICAgICAgICAgIFxcXCJ1c2VyRmFjZVxcXCI6ICcnLFxcbiAgICAgICAgICAgICAgICBcXFwidHlwZVxcXCI6IGZhbHNlXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgYmlsaURhdGUudXNlck5hbWUgPSB1c2VyaW5mby51bmFtZTtcXG4gICAgICAgICAgICBiaWxpRGF0ZS51c2VyTWlkID0gdXNlcmluZm8ubWlkO1xcbiAgICAgICAgICAgIGJpbGlEYXRlLmZhY2UgPSB1c2VyaW5mby5mYWNlICsgXFxcIkBSZWZlcmVyPVxcXCI7XFxuICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvYmlsaS50eHQnLCBKU09OLnN0cmluZ2lmeShiaWxpRGF0ZSkpO1xcbiAgICAgICAgICAgIC8vIHJldHVybiB0cnVlO1xcbiAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7XFxuICAgICAgICAgICAgICAgIFxcXCJ1c2VyTmFtZVxcXCI6IGJpbGlEYXRlLnVzZXJOYW1lLFxcbiAgICAgICAgICAgICAgICBcXFwidXNlck1pZFxcXCI6IGJpbGlEYXRlLnVzZXJNaWQsXFxuICAgICAgICAgICAgICAgIFxcXCJ1c2VyRmFjZVxcXCI6IGJpbGlEYXRlLmZhY2UsXFxuICAgICAgICAgICAgICAgIFxcXCJ0eXBlXFxcIjogdHJ1ZVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHtcXG4gICAgICAgICAgICBcXFwidXNlck5hbWVcXFwiOiAn5pyq55m75b2VJyxcXG4gICAgICAgICAgICBcXFwidXNlck1pZFxcXCI6ICcnLFxcbiAgICAgICAgICAgIFxcXCJ1c2VyRmFjZVxcXCI6ICcnLFxcbiAgICAgICAgICAgIFxcXCJ0eXBlXFxcIjogZmFsc2VcXG4gICAgICAgIH0pO1xcbiAgICB9XFxufVxcbi8vIOWTlOWTqeinhumikeino+aekO+8muiOt+WPluaSreaUvuWcsOWdgCvmj5DkuqTmkq3mlL7orrDlvZVcXG4kLmV4cG9ydHMuYmlsaUxhenkgPSBmdW5jdGlvbiAoaWQsIGNpZCwgcW4pIHtcXG4gICAgdmFyIGRhc2ggPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9hcGlcXFwiKS5nZXRVcmwoaWQsIGNpZCwgcW4pO1xcbiAgICAvLyDmj5DkuqTljoblj7LorrDlvZVcXG4gICAgJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcIikucmVwb3J0UHJvY2VzcyhpZCwgY2lkKTtcXG4gICAgLy8gcXVhbGl0eU51bT1kYXNoLmF1ZGlvLmxlbmd0aDvkuI3pnIDopoHkuobvvIzmib7liLDkuobmm7Tlpb3nmoTliKTmlq3mlrnms5XvvIzomb3nhLbmiJHlubbkuI3nn6XpgZPov5nkupvlj4LmlbDnmoTlkKvkuYnmmK/ku4DkuYhcXG4gICAgdmlkZW9MaXN0ID0gW107XFxuICAgIGF1ZGlvTGlzdCA9IFtdO1xcbiAgICBuYW1lTGlzdCA9IFtdO1xcbiAgICBoZXJhZGVycyA9IFtdO1xcbiAgICBkYXNoLmF1ZGlvLmZvckVhY2goaXRlbSA9PiB7XFxuICAgICAgICBhdWRpb0xpc3QucHVzaChpdGVtLmJhc2VVcmwpO1xcbiAgICAgICAgaGVyYWRlcnMucHVzaCh7XFxuICAgICAgICAgICAgXFxcIlVzZXItQWdlbnRcXFwiOiBQQ19VQSxcXG4gICAgICAgICAgICBcXFwiUmVmZXJlclxcXCI6IFxcXCJodHRwczovL3d3dy5iaWxpYmlsaS5jb21cXFwiXFxuICAgICAgICB9KTtcXG4gICAgfSk7XFxuICAgIGRhc2gudmlkZW8uZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgIGlmIChpdGVtLmNvZGVjaWQgPT0gNykge1xcbiAgICAgICAgICAgIHZpZGVvTGlzdC5wdXNoKGl0ZW0uYmFzZVVybCArIFxcXCIjaXNWaWRlbz10cnVlI1xcXCIpO1xcbiAgICAgICAgICAgIGlmIChpdGVtLmlkID09IDEyNikge1xcbiAgICAgICAgICAgICAgICBuYW1lTGlzdC5wdXNoKCfmnZzmr5Top4bnlYwnKTtcXG4gICAgICAgICAgICB9ZWxzZSBpZiAoaXRlbS5pZCA9PSAxMjUpIHtcXG4gICAgICAgICAgICAgICAgbmFtZUxpc3QucHVzaCgnSERSIOecn+W9qeiJsicpO1xcbiAgICAgICAgICAgIH1lbHNlIGlmIChpdGVtLmlkID09IDEyMCkge1xcbiAgICAgICAgICAgICAgICBuYW1lTGlzdC5wdXNoKCc0S+i2hea4hScpO1xcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbS5pZCA9PSAxMTYpIHtcXG4gICAgICAgICAgICAgICAgbmFtZUxpc3QucHVzaCgnMTA4MFA2MOmrmOW4p+eOhycpO1xcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbS5pZCA9PSAxMTIpIHtcXG4gICAgICAgICAgICAgICAgbmFtZUxpc3QucHVzaCgnMTA4MFAr6auY56CB546HJyk7XFxuICAgICAgICAgICAgfWVsc2UgaWYgKGl0ZW0uaWQgPT0gODApIHtcXG4gICAgICAgICAgICAgICAgbmFtZUxpc3QucHVzaCgnMTA4MFDpq5jmuIUnKTtcXG4gICAgICAgICAgICB9ZWxzZSBpZiAoaXRlbS5pZCA9PSA3NCkge1xcbiAgICAgICAgICAgICAgICBuYW1lTGlzdC5wdXNoKCc3MjBQNjDpq5jluKfnjocnKTtcXG4gICAgICAgICAgICB9ZWxzZSBpZiAoaXRlbS5pZCA9PSA2NCkge1xcbiAgICAgICAgICAgICAgICBuYW1lTGlzdC5wdXNoKCc3MjBQ6auY5riFJyk7XFxuICAgICAgICAgICAgfWVsc2UgaWYgKGl0ZW0uaWQgPT0gMzIpIHtcXG4gICAgICAgICAgICAgICAgbmFtZUxpc3QucHVzaCgnNDgwUOa4heaZsCcpO1xcbiAgICAgICAgICAgIH1lbHNlIGlmIChpdGVtLmlkID09IDE2KSB7XFxuICAgICAgICAgICAgICAgIG5hbWVMaXN0LnB1c2goJzM2MFDmtYHnlYUnKTtcXG4gICAgICAgICAgICB9ZWxzZSBpZiAoaXRlbS5pZCA9PSA2KSB7XFxuICAgICAgICAgICAgICAgIG5hbWVMaXN0LnB1c2goJzI0MFDmnoHpgJ8nKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgIH0pO1xcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoe1xcbiAgICAgICAgdXJsczogdmlkZW9MaXN0LFxcbiAgICAgICAgYXVkaW9VcmxzOiBhdWRpb0xpc3QsXFxuICAgICAgICBkYW5tdTogJ2h0dHBzOi8vY29tbWVudC5iaWxpYmlsaS5jb20vJyArIGNpZCArICcueG1sJyxcXG4gICAgICAgIG5hbWVzOiBuYW1lTGlzdCxcXG4gICAgICAgIGhlYWRlcnM6IGhlcmFkZXJzXFxuICAgIH0pXFxufVxcbi8vIOeojeWQjuWcqOeci+KAlOKAlOaAu+aTjeS9nOWIpOaWrVxcbiQuZXhwb3J0cy5qdWRnZVRvdmlldyA9IGZ1bmN0aW9uIChhaWQpIHtcXG4gICAgc2VsZWN0aW9uID0gWyfmt7vliqAnLCAn56e76ZmkJ107XFxuICAgIHJldHVybiAkKHNlbGVjdGlvbiwgMSkuc2VsZWN0KChhaWQpID0+IHtcXG4gICAgICAgIGlmIChpbnB1dCA9PSAn5re75YqgJykge1xcbiAgICAgICAgICAgIHJlcyA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXCIpLmFkZFRvdmlldyhhaWQpO1xcbiAgICAgICAgICAgIGlmIChyZXMgPT0gMCkge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5re75Yqg5oiQ5YqfXFxcIlxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzID09IC0xMDEpIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+i0puWPt+acqueZu+W9lVxcXCJcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJlcyA9PSAtMTExKSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly9jc3Jm5qCh6aqM5aSx6LSlXFxcIlxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzID09IC00MDApIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+ivt+axgumUmeivr1xcXCJcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJlcyA9PSA5MDAwMSkge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5YiX6KGo5bey5ruhXFxcIlxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzID09IDkwMDAzKSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/nqL/ku7blt7Lnu4/ooqvliKDpmaRcXFwiXFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+acquefpemUmeivr1xcXCJcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIHJlcyA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXCIpLmRlbFRvdmlldyhhaWQpO1xcbiAgICAgICAgICAgIGlmIChyZXMgPT0gMCkge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v56e76Zmk5oiQ5YqfXFxcIlxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzID09IC0xMDEpIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+i0puWPt+acqueZu+W9lVxcXCJcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJlcyA9PSAtMTExKSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly9jc3Jm5qCh6aqM5aSx6LSlXFxcIlxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzID09IC00MDApIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+ivt+axgumUmeivr1xcXCJcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5pyq55+l6ZSZ6K+vXFxcIlxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgfSwgYWlkKVxcbn1cXG4vLyDmk43kvZznlKjmiLflhbPns7tcXG4kLmV4cG9ydHMuY2hhbmdlVXNlclJlbGF0aW9uID0gZnVuY3Rpb24gKG1pZCwgcmVfc3JjKSB7XFxuICAgIHNlbGVjdGlvbiA9IFsn5YWz5rOoJywgJ+WPluWFsycsICfmgoTmgoTlhbPms6gnLCAn5Y+W5raI5oKE5oKE5YWz5rOoJywgJ+aLiem7kScsICflj5bmtojmi4npu5EnLCAn6Lii5Ye657KJ5LidJywgJ+enu+WKqOWIhue7hCddO1xcbiAgICByZXR1cm4gJChzZWxlY3Rpb24sIDIpLnNlbGVjdCgobWlkLCByZV9zcmMpID0+IHtcXG4gICAgICAgIGlmIChpbnB1dCA9PSAn56e75Yqo5YiG57uEJykge1xcbiAgICAgICAgICAgIGJlZm9yZVRhZ2lkcyA9IFtdO1xcbiAgICAgICAgICAgIGdyb3VwcyA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXCIpLmdldFVzZXJHcm91cChtaWQpO1xcbiAgICAgICAgICAgIGlmIChKU09OLnN0cmluZ2lmeShncm91cHMpID09ICd7fScpIHtcXG4gICAgICAgICAgICAgICAgYmVmb3JlVGFnaWRzLnB1c2goMCk7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgcHJvcCBpbiBncm91cHMpIHtcXG4gICAgICAgICAgICAgICAgICAgIGJlZm9yZVRhZ2lkcy5wdXNoKHBhcnNlSW50KHByb3ApKTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAvLyDojrflj5bmiJHnmoTliIbnu4RcXG4gICAgICAgICAgICBmb2N1c0dyb3VwTGlzdCA9IFtdO1xcbiAgICAgICAgICAgICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXCIpLmdldE15QXR0ZW50aW9uR3JvdXBMaXN0KCkuZm9yRWFjaChsaXN0ID0+IHtcXG4gICAgICAgICAgICAgICAgZm9jdXNHcm91cExpc3QucHVzaChsaXN0Lm5hbWUgKyAnICcgKyBsaXN0LnRhZ2lkKTtcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICByZXR1cm4gJChmb2N1c0dyb3VwTGlzdCwgMSkuc2VsZWN0KChiZWZvcmVUYWdpZHMsIG1pZCkgPT4ge1xcbiAgICAgICAgICAgICAgICBhZnRlclRhZ2lkcyA9IFtdO1xcbiAgICAgICAgICAgICAgICBhZnRlclRhZ2lkcy5wdXNoKHBhcnNlSW50KGlucHV0LnNwbGl0KCcgJylbMV0pKTtcXG4gICAgICAgICAgICAgICAgZmlkcyA9IFtdO1xcbiAgICAgICAgICAgICAgICBmaWRzLnB1c2goTnVtYmVyKG1pZCkpO1xcbiAgICAgICAgICAgICAgICByZXMgPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9hcGlcXFwiKS5tb3ZlVXNlcnMoYmVmb3JlVGFnaWRzLCBhZnRlclRhZ2lkcywgZmlkcyk7XFxuICAgICAgICAgICAgICAgIGlmIChyZXMgPT0gMCkge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+enu+WKqOeUqOaIt+WIsFxcXCIgKyBpbnB1dC5zcGxpdCgnICcpWzBdICsgXFxcIuWIhue7hOaIkOWKn1xcXCJcXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXMgPT0gLTEwMSkge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+i0puWPt+acqueZu+W9lVxcXCJcXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXMgPT0gLTExMSkge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL2NzcmbmoKHpqozlpLHotKVcXFwiXFxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzID09IC00MDApIHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/or7fmsYLplJnor69cXFwiXFxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzID09IDIyMTA0KSB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5peg5p2D6ZmQXFxcIlxcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlcyA9PSAyMjEwNSkge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+acquWFs+azqFxcXCJcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/mnKrnn6XplJnor69cXFwiXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9LCBiZWZvcmVUYWdpZHMsIG1pZCk7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIGlmIChpbnB1dCA9PSAn5YWz5rOoJykge1xcbiAgICAgICAgICAgICAgICB2YXIgYWN0ID0gMTtcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlucHV0ID09ICflj5blhbMnKSB7XFxuICAgICAgICAgICAgICAgIHZhciBhY3QgPSAyO1xcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5wdXQgPT0gJ+aChOaChOWFs+azqCcpIHtcXG4gICAgICAgICAgICAgICAgdmFyIGFjdCA9IDM7XFxuICAgICAgICAgICAgfSBlbHNlIGlmIChpbnB1dCA9PSAn5Y+W5raI5oKE5oKE5YWz5rOoJykge1xcbiAgICAgICAgICAgICAgICB2YXIgYWN0ID0gNDtcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlucHV0ID09ICfmi4npu5EnKSB7XFxuICAgICAgICAgICAgICAgIHZhciBhY3QgPSA1O1xcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5wdXQgPT0gJ+WPlua2iOaLiem7kScpIHtcXG4gICAgICAgICAgICAgICAgdmFyIGFjdCA9IDY7XFxuICAgICAgICAgICAgfSBlbHNlIGlmIChpbnB1dCA9PSAn6Lii5Ye657KJ5LidJykge1xcbiAgICAgICAgICAgICAgICB2YXIgYWN0ID0gNztcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgcmVzID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcIikuYWRkQXR0ZW50aW9uKG1pZCwgYWN0LCByZV9zcmMpO1xcbiAgICAgICAgICAgIHJlbGF0aW9uID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcIikudXNlck1hcHBpbmcobWlkKTtcXG4gICAgICAgICAgICB1cGRhdGVJdGVtKCdyZWxhdGlvbicsIHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHJlbGF0aW9uLFxcbiAgICAgICAgICAgICAgICBpbWc6IHJlbGF0aW9uID09ICfmnKrlhbPms6gnID8gc3RvcmFnZTAuZ2V0TXlWYXIoJ+WbvuaghycpLua3u+WKoOWFs+azqCA6IHN0b3JhZ2UwLmdldE15VmFyKCflm77moIcnKS7lt7LlhbPms6hcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBpZiAocmVzID09IDApIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL1xcXCIgKyBpbnB1dCArIFxcXCLmiJDlip9cXFwiXFxuICAgICAgICAgICAgfSBlbHNlIGlmIChyZXMgPT0gLTEwMSkge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v6LSm5Y+35pyq55m75b2VXFxcIlxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzID09IC0xMTEpIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL2NzcmbmoKHpqozlpLHotKVcXFwiXFxuICAgICAgICAgICAgfSBlbHNlIGlmIChyZXMgPT0gLTQwMCkge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v6K+35rGC6ZSZ6K+vXFxcIlxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzID09IDIyMDAxKSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/kuI3og73lr7noh6rlt7Hov5vooYzmraTmk43kvZxcXFwiXFxuICAgICAgICAgICAgfSBlbHNlIGlmIChyZXMgPT0gMjIwMDMpIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+eUqOaIt+S9jeS6jum7keWQjeWNlVxcXCJcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5pyq55+l6ZSZ6K+vXFxcIlxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgfSwgbWlkLCByZV9zcmMpXFxufVxcbi8vIOaYoOWwhOeUqOaIt+WFs+ezu1xcbiQuZXhwb3J0cy51c2VyTWFwcGluZyA9IGZ1bmN0aW9uIChtaWQpIHtcXG4gICAgcmVsYXRpb25SZXMgPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9hcGlcXFwiKS5nZXRSZWxhdGlvbihtaWQpO1xcbiAgICBpZiAocmVsYXRpb25SZXMucmVsYXRpb24uYXR0cmlidXRlID09IDApIHtcXG4gICAgICAgIHJlbGF0aW9uID0gJ+acquWFs+azqCdcXG4gICAgfSBlbHNlIGlmIChyZWxhdGlvblJlcy5yZWxhdGlvbi5hdHRyaWJ1dGUgPT0gMSkge1xcbiAgICAgICAgcmVsYXRpb24gPSAn5oKE5oKE5YWz5rOoJ1xcbiAgICB9IGVsc2UgaWYgKHJlbGF0aW9uUmVzLnJlbGF0aW9uLmF0dHJpYnV0ZSA9PSAyKSB7XFxuICAgICAgICByZWxhdGlvbiA9ICflt7LlhbPms6gnXFxuICAgIH0gZWxzZSBpZiAocmVsYXRpb25SZXMucmVsYXRpb24uYXR0cmlidXRlID09IDYpIHtcXG4gICAgICAgIHJlbGF0aW9uID0gJ+W3suS6kueyiSdcXG4gICAgfSBlbHNlIGlmIChyZWxhdGlvblJlcy5yZWxhdGlvbi5hdHRyaWJ1dGUgPT0gMTI4KSB7XFxuICAgICAgICByZWxhdGlvbiA9ICflt7Lmi4npu5EnXFxuICAgIH1cXG4gICAgcmV0dXJuIHJlbGF0aW9uO1xcbn1cXG4vLyDngrnotZ7mk43kvZzpgLvovpFcXG4kLmV4cG9ydHMubGlrZUxvZ2ljID0gZnVuY3Rpb24gKGFpZCkge1xcbiAgICBoYXNMaWtlID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcIikuaGFzTGlrZShhaWQpO1xcbiAgICBpZiAoaGFzTGlrZSA9PSAwKSB7XFxuICAgICAgICByZXMgPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9hcGlcXFwiKS5zZXRMaWtlKGFpZCwgMSk7XFxuICAgICAgICBpZiAocmVzID09IDApIHtcXG4gICAgICAgICAgICBsaWtlID0gSlNPTi5wYXJzZShmZXRjaChcXFwiaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3P2FpZD1cXFwiICsgYWlkKSkuZGF0YS5zdGF0Lmxpa2U7XFxuICAgICAgICAgICAgdXBkYXRlSXRlbSgnc2V0TGlrZScsIHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IChsaWtlICsgMSkgKyAnJyxcXG4gICAgICAgICAgICAgICAgaW1nOiBzdG9yYWdlMC5nZXRNeVZhcign5Zu+5qCHJyku5bey54K56LWeXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+eCuei1nuaIkOWKn1xcXCI7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/ngrnotZ7lh7rplJnkuoZ+XFxcIjtcXG4gICAgICAgIH1cXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIHJlcyA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXCIpLnNldExpa2UoYWlkLCAyKTtcXG4gICAgICAgIGlmIChyZXMgPT0gMCkge1xcbiAgICAgICAgICAgIGxpa2UgPSBKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXc/YWlkPVxcXCIgKyBhaWQpKS5kYXRhLnN0YXQubGlrZTtcXG4gICAgICAgICAgICB1cGRhdGVJdGVtKCdzZXRMaWtlJywge1xcbiAgICAgICAgICAgICAgICB0aXRsZTogKGxpa2UgLSAxKSArICcnLFxcbiAgICAgICAgICAgICAgICBpbWc6IHN0b3JhZ2UwLmdldE15VmFyKCflm77moIcnKS7mnKrngrnotZ5cXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5Y+W5raI54K56LWe5oiQ5YqfXFxcIjtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+WPlua2iOeCuei1nuWHuumUmeS6hn5cXFwiO1xcbiAgICAgICAgfVxcbiAgICB9XFxufVxcbi8vIOaUtuiXj+aTjeS9nOmAu+i+kVxcbiQuZXhwb3J0cy5mYXZvdXJMb2dpYyA9IGZ1bmN0aW9uIChhaWQsIG1pZCkge1xcbiAgICBoYXNGYXZvdXIgPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9hcGlcXFwiKS5oYXNGYXZvdXIoYWlkKTtcXG4gICAgaWYgKGhhc0Zhdm91cikge1xcbiAgICAgICAgLy8g56e75Ye65pS26JePXFxuICAgICAgICBmYXZvdXJJZExpc3QgPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9hcGlcXFwiKS5nZXRGYXZvdXJJZExpc3QoYWlkLCBtaWQpO1xcbiAgICAgICAgcmVzID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcIikuc2V0RmF2b3VyKGFpZCwgJycsIGZhdm91cklkTGlzdCk7XFxuICAgICAgICBpZiAocmVzID09IDApIHtcXG4gICAgICAgICAgICBsaWtlID0gSlNPTi5wYXJzZShmZXRjaChcXFwiaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3P2FpZD1cXFwiICsgYWlkKSkuZGF0YS5zdGF0LmZhdm9yaXRlO1xcbiAgICAgICAgICAgIHVwZGF0ZUl0ZW0oJ3NldEZhdm91cicsIHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IChsaWtlIC0gMSkgKyAnJyxcXG4gICAgICAgICAgICAgICAgaW1nOiBzdG9yYWdlMC5nZXRNeVZhcign5Zu+5qCHJyku5pyq5pS26JePXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+WPlua2iOaUtuiXj+aIkOWKn1xcXCI7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/lj5bmtojmlLbol4/lh7rplJnkuoZ+XFxcIjtcXG4gICAgICAgIH1cXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIC8vIOmAieaLqeaUtuiXj1xcbiAgICAgICAgcmVzID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcIikuZ2V0Q29sbGVjdGlvbkdyb3VwTGlzdCgpWzBdLm1lZGlhTGlzdFJlc3BvbnNlLmxpc3Q7XFxuICAgICAgICBHcm91cExpc3QgPSBbXTtcXG4gICAgICAgIHJlcy5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICAgICAgICAgIEdyb3VwTGlzdC5wdXNoKGl0ZW0udGl0bGUgKyAnICcgKyBpdGVtLmlkKTtcXG4gICAgICAgIH0pO1xcbiAgICAgICAgcmV0dXJuICQoR3JvdXBMaXN0LCAxKS5zZWxlY3QoKGFpZCkgPT4ge1xcbiAgICAgICAgICAgIHNlbGVjdElkID0gcGFyc2VJbnQoaW5wdXQuc3BsaXQoJyAnKVsxXSlcXG4gICAgICAgICAgICByZXMgPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9hcGlcXFwiKS5zZXRGYXZvdXIoYWlkLCBzZWxlY3RJZCwgJycpO1xcbiAgICAgICAgICAgIGlmIChyZXMgPT0gMCkge1xcbiAgICAgICAgICAgICAgICBsaWtlID0gSlNPTi5wYXJzZShmZXRjaChcXFwiaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3P2FpZD1cXFwiICsgYWlkKSkuZGF0YS5zdGF0LmZhdm9yaXRlO1xcbiAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKCdzZXRGYXZvdXInLCB7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogKGxpa2UgKyAxKSArICcnLFxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiBzdG9yYWdlMC5nZXRNeVZhcign5Zu+5qCHJyku5bey5pS26JePXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5pS26JeP5oiQ5YqfXFxcIjtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5pS26JeP5Ye66ZSZ5LqGflxcXCI7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSwgYWlkKTtcXG4gICAgfVxcbn1cXG5cXG5cXG5cXG4vLyBwYXJ0MjrmlaPoo4VBUEktLS0tLS0tLS0tLS0tLS0tXFxuLy8g6KeG6aKR5o6o6I2QXFxuJC5leHBvcnRzLmdldEZlZWQgPSBmdW5jdGlvbiAoKSB7XFxuICAgIGxldCB1ID0gXFxcImh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2UvaW5kZXgvdG9wL2ZlZWQvcmNtZFxcXCI7XFxuICAgIHZhciByZXMgPSBKU09OLnBhcnNlKGZldGNoKHUsIHtcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICBcXFwiQ29va2llXFxcIjogSlNPTi5wYXJzZShyZXF1ZXN0KFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2JpbGkudHh0XFxcIikpLmNvb2tpZVxcbiAgICAgICAgfVxcbiAgICB9KSk7XFxuICAgIHJldHVybiByZXMuZGF0YS5pdGVtXFxufVxcbi8vIOiOt+WPluaSreaUvuWcsOWdgFxcbiQuZXhwb3J0cy5nZXRVcmwgPSBmdW5jdGlvbiAoYXZpZCwgY2lkLCBxbikge1xcbiAgICBsZXQgdSA9IHJlcXVlc3QoYnVpbGRVcmwoXFxcImh0dHA6Ly9hcGkuYmlsaWJpbGkuY29tL3gvcGxheWVyL3BsYXl1cmxcXFwiLCB7XFxuICAgICAgICBcXFwiYXZpZFxcXCI6IGF2aWQsXFxuICAgICAgICBcXFwiY2lkXFxcIjogY2lkLFxcbiAgICAgICAgXFxcInFuXFxcIjogcW4sXFxuICAgICAgICBcXFwiZm52ZXJcXFwiOiAwLFxcbiAgICAgICAgXFxcImZudmFsXFxcIjogNDA0OCxcXG4gICAgICAgIFxcXCJmb3Vya1xcXCI6IDFcXG4gICAgfSksIHtcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICBDb29raWU6IEpTT04ucGFyc2UocmVxdWVzdChcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9iaWxpLnR4dFxcXCIpKS5jb29raWVcXG4gICAgICAgIH1cXG4gICAgfSlcXG4gICAgcmV0dXJuIEpTT04ucGFyc2UodSkuZGF0YS5kYXNoXFxufVxcbi8vIOaPkOS6pOaSreaUvuiusOW9lVxcbiQuZXhwb3J0cy5yZXBvcnRQcm9jZXNzID0gZnVuY3Rpb24gKGF2aWQsIGNpZCkge1xcbiAgICAvLyBsZXQgY3NyZiA9IHJlYWRGaWxlKFxcXCJDb29raWUudHh0XFxcIikubWF0Y2goL2JpbGlfamN0PSguKj8pOy8pWzFdXFxuICAgIGxldCBjc3JmID0gSlNPTi5wYXJzZShyZXF1ZXN0KFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2JpbGkudHh0XFxcIikpLmNvb2tpZS5tYXRjaCgvYmlsaV9qY3Q9KC4qPyk7LylbMV1cXG4gICAgbGV0IHJlcyA9IHBvc3QoXFxcImh0dHA6Ly9hcGkuYmlsaWJpbGkuY29tL3gvdjIvaGlzdG9yeS9yZXBvcnRcXFwiLCB7XFxuICAgICAgICBib2R5OiB7XFxuICAgICAgICAgICAgXFxcImFpZFxcXCI6IGF2aWQsXFxuICAgICAgICAgICAgXFxcImNpZFxcXCI6IGNpZCxcXG4gICAgICAgICAgICBcXFwiY3NyZlxcXCI6IGNzcmYsXFxuICAgICAgICAgICAgXFxcInByb2dyZXNzXFxcIjogMFxcbiAgICAgICAgfSxcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICBDb29raWU6IEpTT04ucGFyc2UocmVxdWVzdChcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9iaWxpLnR4dFxcXCIpKS5jb29raWVcXG4gICAgICAgIH1cXG4gICAgfSlcXG59XFxuXFxuLy8g6I635Y+W6K+E6K66XFxuJC5leHBvcnRzLmdldENvbW1lbnRzID0gZnVuY3Rpb24gKGlkLCB0eXBlLCBwYWdlKSB7XFxuICAgIGxldCB1ID0gYnVpbGRVcmwoXFxcImh0dHA6Ly9hcGkuYmlsaWJpbGkuY29tL3gvdjIvcmVwbHlcXFwiLCB7XFxuICAgICAgICBcXFwidHlwZVxcXCI6IHR5cGUsXFxuICAgICAgICBcXFwib2lkXFxcIjogaWQsXFxuICAgICAgICBcXFwicG5cXFwiOiBwYWdlXFxuICAgIH0pO1xcbiAgICBsZXQgcmVzID0gcmVxdWVzdCh1LCB7XFxuICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgQ29va2llOiBKU09OLnBhcnNlKHJlcXVlc3QoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvY3kvYmlsaS50eHRcXFwiKSkuY29va2llXFxuICAgICAgICB9XFxuICAgIH0pXFxuICAgIHJldHVybiBKU09OLnBhcnNlKHJlcykuZGF0YS5yZXBsaWVzXFxufVxcbi8vIOa3u+WKoOeojeWQjuWcqOeci+KAlOKAlOecn+eahOm6u+S6hu+8jOS4uuS7gOS5iGZldGNo5bCx6ZSZ5ZGiflxcbiQuZXhwb3J0cy5hZGRUb3ZpZXcgPSBmdW5jdGlvbiAoYWlkKSB7XFxuICAgIGxldCBjc3JmID0gSlNPTi5wYXJzZShyZXF1ZXN0KFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2JpbGkudHh0XFxcIikpLmNvb2tpZS5tYXRjaCgvYmlsaV9qY3Q9KC4qPyk7LylbMV07XFxuICAgIGxldCB1ID0gXFxcImh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3YyL2hpc3RvcnkvdG92aWV3L2FkZFxcXCI7XFxuICAgIGxldCByZXMgPSByZXF1ZXN0KGJ1aWxkVXJsKHUsIHtcXG4gICAgICAgIFxcXCJhaWRcXFwiOiBhaWQsXFxuICAgICAgICBcXFwiY3NyZlxcXCI6IGNzcmYsXFxuICAgIH0pLCB7XFxuICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgXFxcIlJlZmVyZXJcXFwiOiBcXFwiaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL1xcXCIsXFxuICAgICAgICAgICAgXFxcIkNvb2tpZVxcXCI6IEpTT04ucGFyc2UocmVxdWVzdChcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9iaWxpLnR4dFxcXCIpKS5jb29raWVcXG4gICAgICAgIH0sXFxuICAgICAgICBtZXRob2Q6IFxcXCJQT1NUXFxcIlxcbiAgICB9KVxcbiAgICByZXR1cm4gSlNPTi5wYXJzZShyZXMpLmNvZGU7XFxufVxcbi8vIOWIoOmZpOeojeWQjuWcqOeci1xcbiQuZXhwb3J0cy5kZWxUb3ZpZXcgPSBmdW5jdGlvbiAoYWlkKSB7XFxuICAgIGxldCBjc3JmID0gSlNPTi5wYXJzZShyZXF1ZXN0KFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2JpbGkudHh0XFxcIikpLmNvb2tpZS5tYXRjaCgvYmlsaV9qY3Q9KC4qPyk7LylbMV07XFxuICAgIGxldCB1ID0gXFxcImh0dHA6Ly9hcGkuYmlsaWJpbGkuY29tL3gvdjIvaGlzdG9yeS90b3ZpZXcvZGVsXFxcIjtcXG4gICAgbGV0IHJlcyA9IHJlcXVlc3QoYnVpbGRVcmwodSwge1xcbiAgICAgICAgXFxcImFpZFxcXCI6IGFpZCxcXG4gICAgICAgIFxcXCJjc3JmXFxcIjogY3NyZixcXG4gICAgfSksIHtcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICBcXFwiUmVmZXJlclxcXCI6IFxcXCJodHRwczovL3d3dy5iaWxpYmlsaS5jb20vXFxcIixcXG4gICAgICAgICAgICBcXFwiQ29va2llXFxcIjogSlNPTi5wYXJzZShyZXF1ZXN0KFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2JpbGkudHh0XFxcIikpLmNvb2tpZVxcbiAgICAgICAgfSxcXG4gICAgICAgIG1ldGhvZDogXFxcIlBPU1RcXFwiXFxuICAgIH0pXFxuICAgIHJldHVybiBKU09OLnBhcnNlKHJlcykuY29kZTtcXG59XFxuLy8g6K6i6ZiF5b2x6KeGKOi/veeVquOAgei/veWJpylcXG4kLmV4cG9ydHMuc3Vic2NyaWJlRmlsbSA9IGZ1bmN0aW9uIChzZWFzb25faWQpIHtcXG4gICAgbGV0IGNzcmYgPSBKU09OLnBhcnNlKHJlcXVlc3QoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvY3kvYmlsaS50eHRcXFwiKSkuY29va2llLm1hdGNoKC9iaWxpX2pjdD0oLio/KTsvKVsxXTtcXG4gICAgbGV0IHUgPSBcXFwiaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3BnYy93ZWIvZm9sbG93L2FkZFxcXCI7XFxuICAgIGxldCByZXMgPSByZXF1ZXN0KGJ1aWxkVXJsKHUsIHtcXG4gICAgICAgIFxcXCJzZWFzb25faWRcXFwiOiBzZWFzb25faWQsXFxuICAgICAgICBcXFwiY3NyZlxcXCI6IGNzcmYsXFxuICAgIH0pLCB7XFxuICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgXFxcIlJlZmVyZXJcXFwiOiBcXFwiaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL1xcXCIsXFxuICAgICAgICAgICAgXFxcIkNvb2tpZVxcXCI6IEpTT04ucGFyc2UocmVxdWVzdChcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9iaWxpLnR4dFxcXCIpKS5jb29raWVcXG4gICAgICAgIH0sXFxuICAgICAgICBtZXRob2Q6IFxcXCJQT1NUXFxcIlxcbiAgICB9KVxcbiAgICByZXR1cm4gSlNPTi5wYXJzZShyZXMpLnJlc3VsdC50b2FzdDtcXG59XFxuLy8g5Y+W5raI6K6i6ZiFXFxuJC5leHBvcnRzLmNhbmNlbFN1YnNjcmliZUZpbG0gPSBmdW5jdGlvbiAoc2Vhc29uX2lkKSB7XFxuICAgIGxldCBjc3JmID0gSlNPTi5wYXJzZShyZXF1ZXN0KFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2JpbGkudHh0XFxcIikpLmNvb2tpZS5tYXRjaCgvYmlsaV9qY3Q9KC4qPyk7LylbMV07XFxuICAgIGxldCB1ID0gXFxcImh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS9wZ2Mvd2ViL2ZvbGxvdy9kZWxcXFwiO1xcbiAgICBsZXQgcmVzID0gcmVxdWVzdChidWlsZFVybCh1LCB7XFxuICAgICAgICBcXFwic2Vhc29uX2lkXFxcIjogc2Vhc29uX2lkLFxcbiAgICAgICAgXFxcImNzcmZcXFwiOiBjc3JmLFxcbiAgICB9KSwge1xcbiAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgIFxcXCJSZWZlcmVyXFxcIjogXFxcImh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS9cXFwiLFxcbiAgICAgICAgICAgIFxcXCJDb29raWVcXFwiOiBKU09OLnBhcnNlKHJlcXVlc3QoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvY3kvYmlsaS50eHRcXFwiKSkuY29va2llXFxuICAgICAgICB9LFxcbiAgICAgICAgbWV0aG9kOiBcXFwiUE9TVFxcXCJcXG4gICAgfSlcXG4gICAgcmV0dXJuIEpTT04ucGFyc2UocmVzKS5yZXN1bHQudG9hc3Q7XFxufVxcbi8q5pON5L2c55So5oi35YWz57O7XFxuZmlkOueUqOaIt21pZFxcbmFjdDrmk43kvZzku6PnoIFcXG5yZV9zcmPvvJrlhbPms6jmnaXmupBcXG4qL1xcbiQuZXhwb3J0cy5hZGRBdHRlbnRpb24gPSBmdW5jdGlvbiAobWlkLCBhY3QsIHJlX3NyYykge1xcbiAgICBsZXQgY3NyZiA9IEpTT04ucGFyc2UocmVxdWVzdChcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9iaWxpLnR4dFxcXCIpKS5jb29raWUubWF0Y2goL2JpbGlfamN0PSguKj8pOy8pWzFdO1xcbiAgICBsZXQgdSA9IFxcXCJodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9yZWxhdGlvbi9tb2RpZnlcXFwiO1xcbiAgICBsZXQgcmVzID0gcmVxdWVzdChidWlsZFVybCh1LCB7XFxuICAgICAgICBcXFwiZmlkXFxcIjogbWlkLFxcbiAgICAgICAgXFxcImFjdFxcXCI6IGFjdCxcXG4gICAgICAgIFxcXCJyZV9zcmNcXFwiOiByZV9zcmMsXFxuICAgICAgICBcXFwiY3NyZlxcXCI6IGNzcmZcXG4gICAgfSksIHtcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICBcXFwiUmVmZXJlclxcXCI6IFxcXCJodHRwczovL3d3dy5iaWxpYmlsaS5jb20vXFxcIixcXG4gICAgICAgICAgICBcXFwiQ29va2llXFxcIjogSlNPTi5wYXJzZShyZXF1ZXN0KFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2JpbGkudHh0XFxcIikpLmNvb2tpZVxcbiAgICAgICAgfSxcXG4gICAgICAgIG1ldGhvZDogXFxcIlBPU1RcXFwiXFxuICAgIH0pXFxuICAgIHJldHVybiBKU09OLnBhcnNlKHJlcykuY29kZTtcXG59XFxuLy8g56e75Yqo5YWz5rOo55So5oi35YiG57uEXFxuJC5leHBvcnRzLm1vdmVVc2VycyA9IGZ1bmN0aW9uIChiZWZvcmVUYWdpZHMsIGFmdGVyVGFnaWRzLCBmaWRzKSB7XFxuICAgIGxldCBjc3JmID0gSlNPTi5wYXJzZShyZXF1ZXN0KFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2JpbGkudHh0XFxcIikpLmNvb2tpZS5tYXRjaCgvYmlsaV9qY3Q9KC4qPyk7LylbMV07XFxuICAgIGxldCB1ID0gXFxcImh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3JlbGF0aW9uL3RhZ3MvbW92ZVVzZXJzXFxcIjtcXG4gICAgbGV0IHJlcyA9IHJlcXVlc3QoYnVpbGRVcmwodSwge1xcbiAgICAgICAgXFxcImJlZm9yZVRhZ2lkc1xcXCI6IGJlZm9yZVRhZ2lkcy50b1N0cmluZygpLFxcbiAgICAgICAgXFxcImFmdGVyVGFnaWRzXFxcIjogYWZ0ZXJUYWdpZHMudG9TdHJpbmcoKSxcXG4gICAgICAgIFxcXCJmaWRzXFxcIjogZmlkcy50b1N0cmluZygpLFxcbiAgICAgICAgXFxcImNzcmZcXFwiOiBjc3JmXFxuICAgIH0pLCB7XFxuICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgXFxcIlJlZmVyZXJcXFwiOiBcXFwiaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL1xcXCIsXFxuICAgICAgICAgICAgXFxcIkNvb2tpZVxcXCI6IEpTT04ucGFyc2UocmVxdWVzdChcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9iaWxpLnR4dFxcXCIpKS5jb29raWVcXG4gICAgICAgIH0sXFxuICAgICAgICBtZXRob2Q6IFxcXCJQT1NUXFxcIlxcbiAgICB9KVxcbiAgICByZXR1cm4gSlNPTi5wYXJzZShyZXMpLmNvZGU7XFxufVxcbi8vIOiOt+WPlueUqOaIt+WFs+ezu1xcbiQuZXhwb3J0cy5nZXRSZWxhdGlvbiA9IGZ1bmN0aW9uIChtaWQpIHtcXG4gICAgcmV0dXJuIEpTT04ucGFyc2UocmVxdWVzdChcXFwiaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYWNjL3JlbGF0aW9uP21pZD1cXFwiICsgbWlkLCB7XFxuICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgXFxcIkNvb2tpZVxcXCI6IEpTT04ucGFyc2UocmVxdWVzdChcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9iaWxpLnR4dFxcXCIpKS5jb29raWVcXG4gICAgICAgIH1cXG4gICAgfSkpLmRhdGFcXG59XFxuLy8g5p+l6K+i55uu5qCH55So5oi35omA5Zyo55qE5YiG57uEXFxuJC5leHBvcnRzLmdldFVzZXJHcm91cCA9IGZ1bmN0aW9uIChtaWQpIHtcXG4gICAgcmV0dXJuIEpTT04ucGFyc2UocmVxdWVzdChcXFwiaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvcmVsYXRpb24vdGFnL3VzZXI/ZmlkPVxcXCIgKyBtaWQsIHtcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICBcXFwiQ29va2llXFxcIjogSlNPTi5wYXJzZShyZXF1ZXN0KFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2JpbGkudHh0XFxcIikpLmNvb2tpZVxcbiAgICAgICAgfVxcbiAgICB9KSkuZGF0YVxcbn1cXG4vLyDojrflj5blhbPms6jliIbnu4RcXG4kLmV4cG9ydHMuZ2V0TXlBdHRlbnRpb25Hcm91cExpc3QgPSBmdW5jdGlvbiAoKSB7XFxuICAgIHJldHVybiBKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9yZWxhdGlvbi90YWdzP2pzb25wPWpzb25wXFxcIiwge1xcbiAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgIFxcXCJDb29raWVcXFwiOiBKU09OLnBhcnNlKHJlcXVlc3QoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvY3kvYmlsaS50eHRcXFwiKSkuY29va2llLFxcbiAgICAgICAgICAgIFxcXCJVc2VyLUFnZW50XFxcIjogUENfVUEsXFxuICAgICAgICAgICAgXFxcIlJlZmVyZXJcXFwiOiBcXFwiaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL1xcXCJcXG4gICAgICAgIH1cXG4gICAgfSkpLmRhdGE7XFxufVxcbi8vIOaYr+WQpueCuei1nlxcbiQuZXhwb3J0cy5oYXNMaWtlID0gZnVuY3Rpb24gKGFpZCkge1xcbiAgICByZXR1cm4gSlNPTi5wYXJzZShyZXF1ZXN0KGJ1aWxkVXJsKFxcXCJodHRwOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2UvYXJjaGl2ZS9oYXMvbGlrZVxcXCIsIHtcXG4gICAgICAgIFxcXCJhaWRcXFwiOiBhaWRcXG4gICAgfSksIHtcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICBcXFwiQ29va2llXFxcIjogSlNPTi5wYXJzZShyZXF1ZXN0KFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2JpbGkudHh0XFxcIikpLmNvb2tpZVxcbiAgICAgICAgfVxcbiAgICB9KSkuZGF0YVxcbn1cXG4vLyDmmK/lkKbmlLbol49cXG4kLmV4cG9ydHMuaGFzRmF2b3VyID0gZnVuY3Rpb24gKGFpZCkge1xcbiAgICByZXR1cm4gSlNPTi5wYXJzZShyZXF1ZXN0KGJ1aWxkVXJsKFxcXCJodHRwOi8vYXBpLmJpbGliaWxpLmNvbS94L3YyL2Zhdi92aWRlby9mYXZvdXJlZFxcXCIsIHtcXG4gICAgICAgIFxcXCJhaWRcXFwiOiBhaWRcXG4gICAgfSksIHtcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICBcXFwiQ29va2llXFxcIjogSlNPTi5wYXJzZShyZXF1ZXN0KFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2JpbGkudHh0XFxcIikpLmNvb2tpZVxcbiAgICAgICAgfVxcbiAgICB9KSkuZGF0YS5mYXZvdXJlZFxcbn1cXG4vLyDop4bpopHngrnotZ5cXG4kLmV4cG9ydHMuc2V0TGlrZSA9IGZ1bmN0aW9uIChhaWQsIGRlYWxXYXkpIHtcXG4gICAgbGV0IGNzcmYgPSBKU09OLnBhcnNlKHJlcXVlc3QoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvY3kvYmlsaS50eHRcXFwiKSkuY29va2llLm1hdGNoKC9iaWxpX2pjdD0oLio/KTsvKVsxXTtcXG4gICAgbGV0IHJlcyA9IHBvc3QoXFxcImh0dHA6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS9hcmNoaXZlL2xpa2VcXFwiLCB7XFxuICAgICAgICBib2R5OiB7XFxuICAgICAgICAgICAgXFxcImFpZFxcXCI6IGFpZCxcXG4gICAgICAgICAgICBcXFwibGlrZVxcXCI6IGRlYWxXYXksXFxuICAgICAgICAgICAgXFxcImNzcmZcXFwiOiBjc3JmXFxuICAgICAgICB9LFxcbiAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgIFxcXCJDb29raWVcXFwiOiBKU09OLnBhcnNlKHJlcXVlc3QoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvY3kvYmlsaS50eHRcXFwiKSkuY29va2llXFxuICAgICAgICB9XFxuICAgIH0pXFxuICAgIHJldHVybiBKU09OLnBhcnNlKHJlcykuY29kZTtcXG59XFxuLy8g6I635Y+W5pS26JeP5YiX6KGoXFxuJC5leHBvcnRzLmdldENvbGxlY3Rpb25Hcm91cExpc3QgPSBmdW5jdGlvbiAoKSB7XFxuICAgIHJldHVybiBjb2xsZWN0aW9ucyA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3YzL2Zhdi9mb2xkZXIvbGlzdDRuYXZpZ2F0ZVxcXCIsIHtcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICBcXFwiQ29va2llXFxcIjogSlNPTi5wYXJzZShyZXF1ZXN0KFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2JpbGkudHh0XFxcIikpLmNvb2tpZSxcXG4gICAgICAgIH1cXG4gICAgfSkpLmRhdGE7XFxufVxcbi8vIOaUtuiXjy/lj5bmtojop4bpopFBUElcXG4kLmV4cG9ydHMuc2V0RmF2b3VyID0gZnVuY3Rpb24gKGFpZCwgYWRkX21lZGlhX2lkcywgZGVsX21lZGlhX2lkcykge1xcbiAgICBsZXQgY3NyZiA9IEpTT04ucGFyc2UocmVxdWVzdChcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9iaWxpLnR4dFxcXCIpKS5jb29raWUubWF0Y2goL2JpbGlfamN0PSguKj8pOy8pWzFdO1xcbiAgICBsZXQgcmVzID0gcG9zdChcXFwiaHR0cDovL2FwaS5iaWxpYmlsaS5jb20vbWVkaWFsaXN0L2dhdGV3YXkvY29sbC9yZXNvdXJjZS9kZWFsXFxcIiwge1xcbiAgICAgICAgYm9keToge1xcbiAgICAgICAgICAgIFxcXCJyaWRcXFwiOiBhaWQsXFxuICAgICAgICAgICAgXFxcInR5cGVcXFwiOiAyLFxcbiAgICAgICAgICAgIFxcXCJhZGRfbWVkaWFfaWRzXFxcIjogYWRkX21lZGlhX2lkcy50b1N0cmluZygpLFxcbiAgICAgICAgICAgIFxcXCJkZWxfbWVkaWFfaWRzXFxcIjogZGVsX21lZGlhX2lkcy50b1N0cmluZygpLFxcbiAgICAgICAgICAgIFxcXCJjc3JmXFxcIjogY3NyZlxcbiAgICAgICAgfSxcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICBcXFwiQ29va2llXFxcIjogSlNPTi5wYXJzZShyZXF1ZXN0KFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2JpbGkudHh0XFxcIikpLmNvb2tpZSxcXG4gICAgICAgICAgICBcXFwiUmVmZXJlclxcXCI6IFxcXCJodHRwczovL3d3dy5iaWxpYmlsaS5jb21cXFwiXFxuICAgICAgICB9XFxuICAgIH0pXFxuICAgIHJldHVybiBKU09OLnBhcnNlKHJlcykuY29kZTtcXG59XFxuLy8g6I635Y+W6KeG6aKR5omA5Zyo5pS26JeP5aS5XFxuJC5leHBvcnRzLmdldEZhdm91cklkTGlzdCA9IGZ1bmN0aW9uIChhaWQsIHVzZXJNaWQpIHtcXG4gICAgbGV0IHUgPSBcXFwiaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvdjMvZmF2L2ZvbGRlci9jcmVhdGVkL2xpc3QtYWxsXFxcIjtcXG4gICAgbGV0IHJlcyA9IHJlcXVlc3QoYnVpbGRVcmwodSwge1xcbiAgICAgICAgXFxcInR5cGVcXFwiOiAyLFxcbiAgICAgICAgXFxcInJpZFxcXCI6IGFpZCxcXG4gICAgICAgIFxcXCJ1cF9taWRcXFwiOiB1c2VyTWlkLFxcbiAgICB9KSwge1xcbiAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgIFxcXCJDb29raWVcXFwiOiBKU09OLnBhcnNlKHJlcXVlc3QoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvY3kvYmlsaS50eHRcXFwiKSkuY29va2llLFxcbiAgICAgICAgICAgIFxcXCJSZWZlcmVyXFxcIjogXFxcImh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbVxcXCJcXG4gICAgICAgIH1cXG4gICAgfSk7XFxuICAgIGZhdm91cklkTGlzdCA9IFtdO1xcbiAgICBKU09OLnBhcnNlKHJlcykuZGF0YS5saXN0LmZvckVhY2goKGl0ZW0pID0+IHtcXG4gICAgICAgIGlmIChpdGVtLmZhdl9zdGF0ZSA9PSAxKSB7XFxuICAgICAgICAgICAgZmF2b3VySWRMaXN0LnB1c2goaXRlbS5pZCk7XFxuICAgICAgICB9XFxuICAgIH0pXFxuICAgIHJldHVybiBmYXZvdXJJZExpc3Q7XFxufVxcbi8vIOeDreaYoOWJp+mbhuaXtumXtOi9tFxcbiQuZXhwb3J0cy5nZXRNb3ZpZXMgPSBmdW5jdGlvbiAodHlwZSwgYmVmb3JlLCBhZnRlcikge1xcbiAgICBsZXQgdSA9IGJ1aWxkVXJsKFxcXCJodHRwOi8vYXBpLmJpbGliaWxpLmNvbS9wZ2Mvd2ViL3RpbWVsaW5lXFxcIiwge1xcbiAgICAgICAgXFxcInR5cGVzXFxcIjogdHlwZSxcXG4gICAgICAgIFxcXCJiZWZvcmVcXFwiOiBiZWZvcmUsXFxuICAgICAgICBcXFwiYWZ0ZXJcXFwiOiBhZnRlclxcbiAgICB9KVxcbiAgICBsZXQgcmVzID0gSlNPTi5wYXJzZShyZXF1ZXN0KHUsIHtcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICBcXFwiQ29va2llXFxcIjogSlNPTi5wYXJzZShyZXF1ZXN0KFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2JpbGkudHh0XFxcIikpLmNvb2tpZVxcbiAgICAgICAgfVxcbiAgICB9KSlcXG4gICAgcmV0dXJuIHJlcy5yZXN1bHRcXG59XFxuLy8g6I635Y+W5LiT5qCP5paH56ugXFxuJC5leHBvcnRzLmdldFVzZXJBcnRpY2xlID0gZnVuY3Rpb24gKHVwTWlkLCBwYWdlKSB7XFxuICAgIGxldCB1ID0gXFxcImh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FydGljbGVcXFwiO1xcbiAgICBsZXQgcmVzID0gcmVxdWVzdChidWlsZFVybCh1LCB7XFxuICAgICAgICBcXFwibWlkXFxcIjogdXBNaWQsXFxuICAgICAgICBcXFwicG5cXFwiOiBwYWdlLFxcbiAgICAgICAgXFxcInBzXFxcIjogMTIsXFxuICAgICAgICBcXFwic29ydFxcXCI6ICdwdWJsaXNoX3RpbWUnXFxuICAgIH0pLCB7XFxuICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgXFxcIkNvb2tpZVxcXCI6IEpTT04ucGFyc2UocmVxdWVzdChcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9iaWxpLnR4dFxcXCIpKS5jb29raWUsXFxuICAgICAgICAgICAgXFxcIlJlZmVyZXJcXFwiOiBcXFwiaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tXFxcIlxcbiAgICAgICAgfVxcbiAgICB9KTtcXG4gICAgcmV0dXJuIEpTT04ucGFyc2UocmVzKS5kYXRhO1xcbn1cXG4vLyDojrflj5bliqjmgIHmlbDmja5cXG4kLmV4cG9ydHMuZ2V0RHluYW1pY0RhdGEgPSBmdW5jdGlvbiAoZnJvbSwgdXBNaWQpIHtcXG4gICAgdmFyIG5leHRJbmZvID0ge307XFxuICAgIGlmIChNWV9QQUdFID09IDEpIHtcXG4gICAgICAgIGlmIChmcm9tID09ICd1cFNwYWNlJykge1xcbiAgICAgICAgICAgIHZhciB1ID0gXFxcImh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3BvbHltZXIvd2ViLWR5bmFtaWMvdjEvZmVlZC9zcGFjZT9vZmZzZXQ9Jmhvc3RfbWlkPVxcXCIgKyB1cE1pZCArIFxcXCImdGltZXpvbmVfb2Zmc2V0PS00ODBcXFwiO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICB2YXIgdSA9IFxcXCJodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9wb2x5bWVyL3dlYi1keW5hbWljL3YxL2ZlZWQvYWxsP3RpbWV6b25lX29mZnNldD0tNDgwJnR5cGU9YWxsXFxcIjtcXG4gICAgICAgIH1cXG4gICAgICAgIGxhdGVuZXdzID0gSlNPTi5wYXJzZShmZXRjaCh1LCB7XFxuICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICBcXFwiQ29va2llXFxcIjogSlNPTi5wYXJzZShyZXF1ZXN0KFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2JpbGkudHh0XFxcIikpLmNvb2tpZSxcXG4gICAgICAgICAgICAgICAgXFxcIlVzZXItQWdlbnRcXFwiOiBQQ19VQSxcXG4gICAgICAgICAgICAgICAgXFxcIlJlZmVyZXJcXFwiOiBcXFwiaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL1xcXCJcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KSkuZGF0YTtcXG4gICAgICAgIG5leHRJbmZvLm9mZnNldCA9IGxhdGVuZXdzLm9mZnNldDtcXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIGlmIChmcm9tID09ICd1cFNwYWNlJykge1xcbiAgICAgICAgICAgIHZhciB1ID0gXFxcImh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3BvbHltZXIvd2ViLWR5bmFtaWMvdjEvZmVlZC9zcGFjZT9vZmZzZXQ9XFxcIiArIHN0b3JhZ2UwLmdldE15VmFyKEpTT04uc3RyaW5naWZ5KE1ZX1BBR0UpKS5vZmZzZXQgKyBcXFwiJmhvc3RfbWlkPVxcXCIgKyB1cE1pZCArIFxcXCImdGltZXpvbmVfb2Zmc2V0PS00ODBcXFwiO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICB2YXIgdSA9IFxcXCJodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9wb2x5bWVyL3dlYi1keW5hbWljL3YxL2ZlZWQvYWxsP3RpbWV6b25lX29mZnNldD0tNDgwJnR5cGU9YWxsJm9mZnNldD1cXFwiICsgc3RvcmFnZTAuZ2V0TXlWYXIoSlNPTi5zdHJpbmdpZnkoTVlfUEFHRSkpLm9mZnNldDtcXG4gICAgICAgIH1cXG4gICAgICAgIGxhdGVuZXdzID0gSlNPTi5wYXJzZShmZXRjaCh1LCB7XFxuICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICBcXFwiQ29va2llXFxcIjogSlNPTi5wYXJzZShyZXF1ZXN0KFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2JpbGkudHh0XFxcIikpLmNvb2tpZVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pKS5kYXRhO1xcbiAgICAgICAgbmV4dEluZm8ub2Zmc2V0ID0gbGF0ZW5ld3Mub2Zmc2V0O1xcbiAgICB9XFxuICAgIHN0b3JhZ2UwLnB1dE15VmFyKEpTT04uc3RyaW5naWZ5KE1ZX1BBR0UgKyAxKSwgbmV4dEluZm8pO1xcbiAgICByZXR1cm4gbGF0ZW5ld3M7XFxufVxcblxcbi8vIOKAlOKAlOeJueWIq+eahOihjOS4uuOAgeW3peWFt+WHveaVsOKAlOKAlFxcbi8vIOWxleekuuWKqOaAgeaVsOaNrijov5Tlm57lh73mlbDmlrnms5XnmoTlj6/miafooYzlrZfnrKbkuLIpXFxuJC5leHBvcnRzLnNob3dEeW5hbWljRGF0YSA9IGZ1bmN0aW9uICgpIHtcXG4gICAgcmV0dXJuICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgbGF0ZW5ld3MuaXRlbXMuZm9yRWFjaChsaXN0ID0+IHtcXG4gICAgICAgICAgICBpZiAobGlzdC50eXBlID09ICdEWU5BTUlDX1RZUEVfQVYnKSB7XFxuICAgICAgICAgICAgICAgIC8vIOaKleeov+inhumike+8iOW9k+WJjeWPkeW4g++8ieKImlxcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGxpc3QubW9kdWxlcy5tb2R1bGVfYXV0aG9yLm5hbWUgKyAnXFxcXHRcXFxcdFxcXFx0PHNtYWxsPjxzbWFsbD48Zm9udCBjb2xvcj1cXFwiZ3JleVxcXCI+JyArIGxpc3QubW9kdWxlcy5tb2R1bGVfYXV0aG9yLnB1Yl90aW1lICsgJy0nICsgbGlzdC5tb2R1bGVzLm1vZHVsZV9hdXRob3IucHViX2FjdGlvbiArICc8L2ZvbnQ+PC9zbWFsbD48L3NtYWxsPicsXFxuICAgICAgICAgICAgICAgICAgICBpbWc6IGxpc3QubW9kdWxlcy5tb2R1bGVfYXV0aG9yLmZhY2UgKyBcXFwiQFJlZmVyZXI9XFxcIixcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS91cEhvbWUnLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdhdmF0YXInLFxcbiAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBtaWQ6IGxpc3QubW9kdWxlcy5tb2R1bGVfYXV0aG9yLm1pZCxcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogbGlzdC5tb2R1bGVzLm1vZHVsZV9hdXRob3IubmFtZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBmYWNlOiBsaXN0Lm1vZHVsZXMubW9kdWxlX2F1dGhvci5mYWNlXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbGluZSdcXG4gICAgICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICAgICAgLy8g5LiN5LiA5a6a5pyJ5paH5a2X5ZWKXFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogKGxpc3QubW9kdWxlcy5tb2R1bGVfZHluYW1pYy5kZXNjID09PSBudWxsID8gJzxmb250IGNvbG9yPVxcXCJncmV5XFxcIj51cOWkquaHkuS6hu+8jOi/nuaWh+ahiOmDveS4jeaDs+mFjS4uLjwvZm9udD4nIDogbGlzdC5tb2R1bGVzLm1vZHVsZV9keW5hbWljLmRlc2MudGV4dCkgKyAnPGJyPjxhIGhyZWY9XFxcImhpa2VyOi8vcGFnZS9Db21tZW50cz9wPWZ5cGFnZVxcXCI+5p+l55yL6K+E6K66PC9hPicsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvQ29tbWVudHM/cD1meXBhZ2UnLFxcbiAgICAgICAgICAgICAgICAgICAgLy8g6L+Z5Liq5LiN6IO955SobG9uZ190ZXh0XFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCcsXFxuICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBsaXN0LmJhc2ljLmNvbW1lbnRfaWRfc3RyLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IDFcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGxpc3QubW9kdWxlcy5tb2R1bGVfZHluYW1pYy5tYWpvci5hcmNoaXZlLnRpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiBsaXN0Lm1vZHVsZXMubW9kdWxlX2R5bmFtaWMubWFqb3IuYXJjaGl2ZS5jb3ZlciArIFxcXCJAUmVmZXJlcj1cXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX2xlZnRfcGljJyxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vcGFnZS92aWRlb1xcXCIsXFxuICAgICAgICAgICAgICAgICAgICBkZXNjOiBsaXN0Lm1vZHVsZXMubW9kdWxlX2R5bmFtaWMubWFqb3IuYXJjaGl2ZS5kZXNjLFxcbiAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBhaWQ6IGxpc3QubW9kdWxlcy5tb2R1bGVfZHluYW1pYy5tYWpvci5hcmNoaXZlLmFpZFxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJzxzbWFsbD48c21hbGw+PGZvbnQgY29sb3I9XFxcImdyZXlcXFwiPueVmeiogDonICsgbGlzdC5tb2R1bGVzLm1vZHVsZV9zdGF0LmNvbW1lbnQuY291bnQgKyAnXFxcXHRcXFxcdOWIhuS6qzonICsgbGlzdC5tb2R1bGVzLm1vZHVsZV9zdGF0LmZvcndhcmQuY291bnQgKyAnXFxcXHRcXFxcdOWWnOasojonICsgbGlzdC5tb2R1bGVzLm1vZHVsZV9zdGF0Lmxpa2UuY291bnQgKyAnPC9mb250Pjwvc21hbGw+PC9zbWFsbD4nLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdyaWNoX3RleHQnXFxuICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfSBlbHNlIGlmIChsaXN0LnR5cGUgPT0gJ0RZTkFNSUNfVFlQRV9GT1JXQVJEJykge1xcbiAgICAgICAgICAgICAgICAvLyDop4bpopHlvJXnlKjvvIzlpJrlh7rkuoZvcmln5oyH5ZCR5LiA5LiqKOi/h+WOuynlt7Llj5HluIPnmoTop4bpopEs5YeG56Gu55qE6K+05piv5byV55So5LmL5YmN55qE5biW5a2Q5LiN5LiA5a6a5piv6KeG6aKR4oiaXFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogbGlzdC5tb2R1bGVzLm1vZHVsZV9hdXRob3IubmFtZSArICdcXFxcdFxcXFx0XFxcXHQ8c21hbGw+PHNtYWxsPjxmb250IGNvbG9yPVxcXCJncmV5XFxcIj4nICsgbGlzdC5tb2R1bGVzLm1vZHVsZV9hdXRob3IucHViX3RpbWUgKyAnPC9mb250Pjwvc21hbGw+PC9zbWFsbD4nLFxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiBsaXN0Lm1vZHVsZXMubW9kdWxlX2F1dGhvci5mYWNlICsgXFxcIkBSZWZlcmVyPVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvdXBIb21lJyxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnYXZhdGFyJyxcXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbWlkOiBsaXN0Lm1vZHVsZXMubW9kdWxlX2F1dGhvci5taWQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGxpc3QubW9kdWxlcy5tb2R1bGVfYXV0aG9yLm5hbWUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFjZTogbGlzdC5tb2R1bGVzLm1vZHVsZV9hdXRob3IuZmFjZVxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmUnXFxuICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAobGlzdC5tb2R1bGVzLm1vZHVsZV9keW5hbWljLmRlc2MgPT09IG51bGwgPyAnPGZvbnQgY29sb3I9XFxcImdyZXlcXFwiPnVw5aSq5oeS5LqG77yM6L+e5paH5qGI6YO95LiN5oOz6YWNLi4uPC9mb250PicgOiBsaXN0Lm1vZHVsZXMubW9kdWxlX2R5bmFtaWMuZGVzYy50ZXh0KS5yZXBsYWNlKC9cXFxcXFxcXG4vZywgJzxicj4nKSArICc8YnI+PGEgaHJlZj1cXFwiaGlrZXI6Ly9wYWdlL0NvbW1lbnRzP3A9ZnlwYWdlXFxcIj7mn6XnnIvor4Torro8L2E+JyxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9Db21tZW50cz9wPWZ5cGFnZScsXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCcsXFxuICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBsaXN0LmJhc2ljLmNvbW1lbnRfaWRfc3RyLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOS5n+aYr+e6r+aWh+Wtl++8jOWboOS4uuWPquaYr+aWh+WtlyvlvJXnlKjml6nlt7LmipXnqL/nmoTop4bpopFcXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAxN1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgLy8g5byV55So55qE5YaF5a654oCU4oCU5oiq5pat77yI5qC55o2u5LiN5ZCM55qE5byV55So57G75Z6L6L+b6KGM5aSE55CG77yJXFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJzxzbWFsbD48c21hbGw+5LiL6Z2i5YaF5a655p2l6Ieq5byV55So55qE5biW5a2QLHVw5pivOicgKyBsaXN0Lm9yaWcubW9kdWxlcy5tb2R1bGVfYXV0aG9yLm5hbWUgKyAnPC9zbWFsbD48L3NtYWxsPicsXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcInJpY2hfdGV4dFxcXCJcXG4gICAgICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJsaW5lXFxcIlxcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgaWYgKGxpc3Qub3JpZy50eXBlID09ICdEWU5BTUlDX1RZUEVfQVYnKSB7XFxuICAgICAgICAgICAgICAgICAgICAvLyDlvJXnlKjop4bpopHor7Tor7RcXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGxpc3Qub3JpZy5tb2R1bGVzLm1vZHVsZV9keW5hbWljLm1ham9yLmFyY2hpdmUudGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiBsaXN0Lm9yaWcubW9kdWxlcy5tb2R1bGVfZHluYW1pYy5tYWpvci5hcmNoaXZlLmNvdmVyICsgXFxcIkBSZWZlcmVyPVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX2xlZnRfcGljJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL3BhZ2UvdmlkZW9cXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6IGxpc3Qub3JpZy5tb2R1bGVzLm1vZHVsZV9keW5hbWljLm1ham9yLmFyY2hpdmUuZGVzYyxcXG4gICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhaWQ6IGxpc3Qub3JpZy5tb2R1bGVzLm1vZHVsZV9keW5hbWljLm1ham9yLmFyY2hpdmUuYWlkXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobGlzdC5vcmlnLnR5cGUgPT0gJ0RZTkFNSUNfVFlQRV9XT1JEJykge1xcbiAgICAgICAgICAgICAgICAgICAgLy8g5byV55So5paH5a2X6K+06K+0XFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAobGlzdC5vcmlnLm1vZHVsZXMubW9kdWxlX2R5bmFtaWMuZGVzYy50ZXh0ID09PSBudWxsID8gJzxmb250IGNvbG9yPVxcXCJncmV5XFxcIj51cOWkquaHkuS6hu+8jOi/nuaWh+ahiOmDveS4jeaDs+mFjS4uLjwvZm9udD4nIDogbGlzdC5vcmlnLm1vZHVsZXMubW9kdWxlX2R5bmFtaWMuZGVzYy50ZXh0KS5yZXBsYWNlKC9cXFxcXFxcXG4vZywgJzxicj4nKSArICc8YnI+PGEgaHJlZj1cXFwiaGlrZXI6Ly9wYWdlL0NvbW1lbnRzP3A9ZnlwYWdlXFxcIj7mn6XnnIvor4Torro8L2E+JyxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvQ29tbWVudHM/cD1meXBhZ2UnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0JyxcXG4gICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDor4TorrppZOadpea6kOmDveS4jeS4gOagt1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogbGlzdC5vcmlnLmlkX3N0cixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g57qv5paH5a2XXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IDE3XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuXFxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobGlzdC5vcmlnLnR5cGUgPT0gJ0RZTkFNSUNfVFlQRV9EUkFXJykge1xcbiAgICAgICAgICAgICAgICAgICAgLy8g5byV55So5Zu+54mH6K+06K+0XFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAobGlzdC5vcmlnLm1vZHVsZXMubW9kdWxlX2R5bmFtaWMuZGVzYy50ZXh0ID09PSBudWxsID8gJzxmb250IGNvbG9yPVxcXCJncmV5XFxcIj51cOWkquaHkuS6hu+8jOi/nuaWh+ahiOmDveS4jeaDs+mFjS4uLjwvZm9udD4nIDogbGlzdC5vcmlnLm1vZHVsZXMubW9kdWxlX2R5bmFtaWMuZGVzYy50ZXh0KS5yZXBsYWNlKC9cXFxcXFxcXG4vZywgJzxicj4nKSArICc8YnI+PGEgaHJlZj1cXFwiaGlrZXI6Ly9wYWdlL0NvbW1lbnRzP3A9ZnlwYWdlXFxcIj7mn6XnnIvor4Torro8L2E+JyxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCcsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL0NvbW1lbnRzP3A9ZnlwYWdlXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogbGlzdC5vcmlnLm1vZHVsZXMubW9kdWxlX2R5bmFtaWMubWFqb3IuZHJhdy5pZCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogMTFcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIGxpc3Qub3JpZy5tb2R1bGVzLm1vZHVsZV9keW5hbWljLm1ham9yLmRyYXcuaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc6IGl0ZW0uc3JjICsgXFxcIkBSZWZlcmVyPVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAncGljXzNfc3F1YXJlJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBpdGVtLnNyYyArIFxcXCJAUmVmZXJlcj1cXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICBsb2coJ+WPr+iDvei/mOacieacqumAgumFjeeahOivtOivtOexu+WeiycpO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIC8vIOWIhuWJslxcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICc8c21hbGw+PHNtYWxsPjxmb250IGNvbG9yPVxcXCJncmV5XFxcIj7nlZnoqIA6JyArIGxpc3QubW9kdWxlcy5tb2R1bGVfc3RhdC5jb21tZW50LmNvdW50ICsgJ1xcXFx0XFxcXHTliIbkuqs6JyArIGxpc3QubW9kdWxlcy5tb2R1bGVfc3RhdC5mb3J3YXJkLmNvdW50ICsgJ1xcXFx0XFxcXHTllpzmrKI6JyArIGxpc3QubW9kdWxlcy5tb2R1bGVfc3RhdC5saWtlLmNvdW50ICsgJzwvZm9udD48L3NtYWxsPjwvc21hbGw+JyxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0J1xcbiAgICAgICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobGlzdC50eXBlID09ICdEWU5BTUlDX1RZUEVfV09SRCcpIHtcXG4gICAgICAgICAgICAgICAgLy8g57qv5paH5a2XXFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogbGlzdC5tb2R1bGVzLm1vZHVsZV9hdXRob3IubmFtZSArICdcXFxcdFxcXFx0XFxcXHQ8c21hbGw+PHNtYWxsPjxmb250IGNvbG9yPVxcXCJncmV5XFxcIj4nICsgbGlzdC5tb2R1bGVzLm1vZHVsZV9hdXRob3IucHViX3RpbWUgKyAnPC9mb250Pjwvc21hbGw+PC9zbWFsbD4nLFxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiBsaXN0Lm1vZHVsZXMubW9kdWxlX2F1dGhvci5mYWNlICsgXFxcIkBSZWZlcmVyPVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvdXBIb21lJyxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnYXZhdGFyJyxcXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbWlkOiBsaXN0Lm1vZHVsZXMubW9kdWxlX2F1dGhvci5taWQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGxpc3QubW9kdWxlcy5tb2R1bGVfYXV0aG9yLm5hbWUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFjZTogbGlzdC5tb2R1bGVzLm1vZHVsZV9hdXRob3IuZmFjZVxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmUnXFxuICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAobGlzdC5tb2R1bGVzLm1vZHVsZV9keW5hbWljLmRlc2MgPT09IG51bGwgPyAnPGZvbnQgY29sb3I9XFxcImdyZXlcXFwiPnVw5aSq5oeS5LqG77yM6L+e5paH5qGI6YO95LiN5oOz6YWNLi4uPC9mb250PicgOiBsaXN0Lm1vZHVsZXMubW9kdWxlX2R5bmFtaWMuZGVzYy50ZXh0KS5yZXBsYWNlKC9cXFxcXFxcXG4vZywgJzxicj4nKSArICc8YnI+PGEgaHJlZj1cXFwiaGlrZXI6Ly9wYWdlL0NvbW1lbnRzP3A9ZnlwYWdlXFxcIj7mn6XnnIvor4Torro8L2E+JyxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9Db21tZW50cz9wPWZ5cGFnZScsXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCcsXFxuICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBsaXN0LmJhc2ljLmNvbW1lbnRfaWRfc3RyLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOe6r+aWh+Wtl1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IDE3XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAnPHNtYWxsPjxzbWFsbD48Zm9udCBjb2xvcj1cXFwiZ3JleVxcXCI+55WZ6KiAOicgKyBsaXN0Lm1vZHVsZXMubW9kdWxlX3N0YXQuY29tbWVudC5jb3VudCArICdcXFxcdFxcXFx05YiG5LqrOicgKyBsaXN0Lm1vZHVsZXMubW9kdWxlX3N0YXQuZm9yd2FyZC5jb3VudCArICdcXFxcdFxcXFx05Zac5qyiOicgKyBsaXN0Lm1vZHVsZXMubW9kdWxlX3N0YXQubGlrZS5jb3VudCArICc8L2ZvbnQ+PC9zbWFsbD48L3NtYWxsPicsXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCdcXG4gICAgICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdsaW5lX2JsYW5rJ1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGxpc3QudHlwZSA9PSAnRFlOQU1JQ19UWVBFX0RSQVcnKSB7XFxuICAgICAgICAgICAgICAgIC8vIOWbvueJh+ivtOivtFxcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGxpc3QubW9kdWxlcy5tb2R1bGVfYXV0aG9yLm5hbWUgKyAnXFxcXHRcXFxcdFxcXFx0PHNtYWxsPjxzbWFsbD48Zm9udCBjb2xvcj1cXFwiZ3JleVxcXCI+JyArIGxpc3QubW9kdWxlcy5tb2R1bGVfYXV0aG9yLnB1Yl90aW1lICsgJzwvZm9udD48L3NtYWxsPjwvc21hbGw+JyxcXG4gICAgICAgICAgICAgICAgICAgIGltZzogbGlzdC5tb2R1bGVzLm1vZHVsZV9hdXRob3IuZmFjZSArIFxcXCJAUmVmZXJlcj1cXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL3VwSG9tZScsXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2F2YXRhcicsXFxuICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pZDogbGlzdC5tb2R1bGVzLm1vZHVsZV9hdXRob3IubWlkLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBsaXN0Lm1vZHVsZXMubW9kdWxlX2F1dGhvci5uYW1lLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhY2U6IGxpc3QubW9kdWxlcy5tb2R1bGVfYXV0aG9yLmZhY2VcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdsaW5lJ1xcbiAgICAgICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogKGxpc3QubW9kdWxlcy5tb2R1bGVfZHluYW1pYy5kZXNjID09PSBudWxsID8gJzxmb250IGNvbG9yPVxcXCJncmV5XFxcIj51cOWkquaHkuS6hu+8jOi/nuaWh+ahiOmDveS4jeaDs+mFjS4uLjwvZm9udD4nIDogbGlzdC5tb2R1bGVzLm1vZHVsZV9keW5hbWljLmRlc2MudGV4dCkucmVwbGFjZSgvXFxcXFxcXFxuL2csICc8YnI+JykgKyAnPGJyPjxhIGhyZWY9XFxcImhpa2VyOi8vcGFnZS9Db21tZW50cz9wPWZ5cGFnZVxcXCI+5p+l55yL6K+E6K66PC9hPicsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvQ29tbWVudHM/cD1meXBhZ2UnLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdyaWNoX3RleHQnLFxcbiAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogbGlzdC5iYXNpYy5jb21tZW50X2lkX3N0cixcXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDnm7jnsL/vvIjlm77niYfliqjmgIHvvIlcXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAxMVxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgbGlzdC5tb2R1bGVzLm1vZHVsZV9keW5hbWljLm1ham9yLmRyYXcuaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiBpdGVtLnNyYyArIFxcXCJAUmVmZXJlcj1cXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAncGljXzNfc3F1YXJlJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGl0ZW0uc3JjICsgXFxcIkBSZWZlcmVyPVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJzxzbWFsbD48c21hbGw+PGZvbnQgY29sb3I9XFxcImdyZXlcXFwiPueVmeiogDonICsgbGlzdC5tb2R1bGVzLm1vZHVsZV9zdGF0LmNvbW1lbnQuY291bnQgKyAnXFxcXHRcXFxcdOWIhuS6qzonICsgbGlzdC5tb2R1bGVzLm1vZHVsZV9zdGF0LmZvcndhcmQuY291bnQgKyAnXFxcXHRcXFxcdOWWnOasojonICsgbGlzdC5tb2R1bGVzLm1vZHVsZV9zdGF0Lmxpa2UuY291bnQgKyAnPC9mb250Pjwvc21hbGw+PC9zbWFsbD4nLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdyaWNoX3RleHQnXFxuICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSk7XFxuICAgIH0pXFxufVxcbi8vIOaXtumXtOi9rOaNouWHveaVsFxcbiQuZXhwb3J0cy50aW1lQ29udmVydCA9IGZ1bmN0aW9uICh0aW1lKSB7XFxuICAgIGZ1bmN0aW9uIGZvcm1hdERhdGUoZSwgdCkge1xcbiAgICAgICAgZSA9IG5ldyBEYXRlKGUgKiAxMDAwKTsgLy/ml7bpl7TmiLPkuLoxMOS9jemcgCoxMDAw77yM5pe26Ze05oiz5Li6MTPkvY3nmoTor53kuI3pnIDkuZgxMDAwXFxuICAgICAgICByZXR1cm4gdC5yZXBsYWNlKC95eXl5fFlZWVkvLCBlLmdldEZ1bGxZZWFyKCkpXFxuICAgICAgICAgICAgLnJlcGxhY2UoL3l5fFlZLywgcihlLmdldEZ1bGxZZWFyKCkgJSAxMDAsIDIpKVxcbiAgICAgICAgICAgIC5yZXBsYWNlKC9tbXxNTS8sIHIoZS5nZXRNb250aCgpICsgMSwgMikpXFxuICAgICAgICAgICAgLnJlcGxhY2UoL218TS9nLCBlLmdldE1vbnRoKCkgKyAxKVxcbiAgICAgICAgICAgIC5yZXBsYWNlKC9kZHxERC8sIHIoZS5nZXREYXRlKCksIDIpKVxcbiAgICAgICAgICAgIC5yZXBsYWNlKC9kfEQvZywgZS5nZXREYXRlKCkpXFxuICAgICAgICAgICAgLnJlcGxhY2UoL2hofEhILywgcihlLmdldEhvdXJzKCksIDIpKVxcbiAgICAgICAgICAgIC5yZXBsYWNlKC9ofEgvZywgZS5nZXRIb3VycygpKVxcbiAgICAgICAgICAgIC5yZXBsYWNlKC9paXxJSS8sIHIoZS5nZXRNaW51dGVzKCksIDIpKVxcbiAgICAgICAgICAgIC5yZXBsYWNlKC9pfEkvZywgZS5nZXRNaW51dGVzKCkpXFxuICAgICAgICAgICAgLnJlcGxhY2UoL3NzfFNTLywgcihlLmdldFNlY29uZHMoKSwgMikpXFxuICAgICAgICAgICAgLnJlcGxhY2UoL3N8Uy9nLCBlLmdldFNlY29uZHMoKSlcXG4gICAgICAgICAgICAucmVwbGFjZSgvdy9nLCBlLmdldERheSgpKVxcbiAgICAgICAgICAgIC5yZXBsYWNlKC9XL2csIFtcXFwi5pelXFxcIiwgXFxcIuS4gFxcXCIsIFxcXCLkuoxcXFwiLCBcXFwi5LiJXFxcIiwgXFxcIuWbm1xcXCIsIFxcXCLkupRcXFwiLCBcXFwi5YWtXFxcIl1bZS5nZXREYXkoKV0pXFxuICAgIH1cXG5cXG4gICAgZnVuY3Rpb24gcihlLCB0KSB7XFxuICAgICAgICBmb3IgKHZhciByID0gMCwgbiA9IHQgLSAoZSArIFxcXCJcXFwiKS5sZW5ndGg7IHIgPCBuOyByKyspIGUgPSBcXFwiMFxcXCIgKyBlO1xcbiAgICAgICAgcmV0dXJuIGUgKyBcXFwiXFxcIlxcbiAgICB9XFxuICAgIHJldHVybiBmb3JtYXREYXRlKHRpbWUsICdZWVlZLU1NLUREIGhoOmlpOnNzJyk7XFxuICAgIC8vIGNvbnNvbGUubG9nKGZvcm1hdERhdGUoMTY2NDA4OTUzMiwgJ1lZWVktTU0tREQgaGg6aWk6c3MnKSk7XFxufVxcblwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwidmlkZW9QYWdlXCIsXCJwYXRoXCI6XCJ2aWRlb1wiLFwicnVsZVwiOlwianM6XFxuXFxudmFyIGQgPSBbXTtcXG5cXG4vLyDpooTlpITnkIZcXG5cXG5wdXRNeVZhcign5Yqf6IO95oqY5Y+gJywgJ+WFsycpO1xcblxcbmltZ0xpbms9c3RvcmFnZTAuZ2V0TXlWYXIoJ+WbvuaghycpO1xcblxcbmFpZCA9IE1ZX1BBUkFNUy5haWQgKyBcXFwiXFxcIjtcXG5cXG5taWQgPSBNWV9QQVJBTVMubWlkICsgXFxcIlxcXCI7XFxuXFxudHJ5IHtcXG5cXG7CoCDCoCAvL+iOt+WPluinhumikeWIhlDkv6Hmga9cXG5cXG7CoCDCoCB2YXIgcCA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldz9haWQ9XFxcIiArIGFpZCkpLmRhdGE7XFxuXFxuwqAgwqAgaGFzTGlrZT0kLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9hcGlcXFwiKS5oYXNMaWtlKGFpZCk7XFxuXFxuwqAgwqAgaGFzRmF2b3VyPSQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXCIpLmhhc0Zhdm91cihhaWQpO1xcblxcbsKgIMKgIGlmIChwLnBhZ2VzLmxlbmd0aCA9PSAxKSB7XFxuXFxuwqAgwqAgwqAgwqAgY2lkID0gcC5wYWdlc1swXS5jaWQ7XFxuXFxuwqAgwqAgwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogcC50aXRsZSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBpbWc6IHAucGljICsgJ0BSZWZlcmVyPScsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiAkKCkubGF6eVJ1bGUoKGFpZCwgY2lkLCBxbikgPT4ge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIC8vIOecn+emu+S6huS4quWkp+iwse+8jOaYjuaYjuabv+aNouaOieS6hu+8jHVh5a2X56ym5Liy5Y+I5Y+Y5Zue5p2l5LqG77yM5Y+I6KaB5aSE55CG5LiA5qyhXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXCIpLmJpbGlMYXp5KGFpZCwgY2lkLCBxbikucmVwbGFjZSgvOy9nLCBcXFwi77yb77ybXFxcIik7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgfSwgYWlkICsgXFxcIlxcXCIsIGNpZCArIFxcXCJcXFwiLCAnMTEyJyksXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6IFxcXCJwaWNfMVxcXCJcXG5cXG7CoCDCoCDCoCDCoCB9KTtcXG5cXG7CoCDCoCDCoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiAnPGZvbnQgY29sb3I9XFxcImJsdWVcXFwiPicgKyBwLm93bmVyLm5hbWUgKyAnPC9mb250PicsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL3VwSG9tZVxcXCIsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgaW1nOiBwLm93bmVyLmZhY2UgKyBcXFwiQFJlZmVyZXI9XFxcIixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogXFxcImF2YXRhclxcXCIsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgZXh0cmE6IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBtaWQ6IHAub3duZXIubWlkLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBwLm93bmVyLm5hbWUsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZmFjZTogcC5vd25lci5mYWNlXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIMKgIMKgIH0se1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiAnbGluZSdcXG5cXG7CoCDCoCDCoCDCoCB9LHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogcC5zdGF0Lmxpa2UsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgaW1nOiBoYXNMaWtlPT0xP2ltZ0xpbmsu5bey54K56LWeOmltZ0xpbmsu5pyq54K56LWeLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHVybDogJCgnI25vTG9hZGluZyMjbm9IaXN0b3J5IycpLmxhenlSdWxlKChhaWQpID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXR1cm4gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcIikubGlrZUxvZ2ljKGFpZClcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB9LCBhaWQpLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiBcXFwiaWNvbl9zbWFsbF80XFxcIixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBleHRyYTp7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWQ6J3NldExpa2UnXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIMKgIMKgIH0se1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiDCoHAuc3RhdC5mYXZvcml0ZSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBpbWc6IGhhc0Zhdm91cj9pbWdMaW5rLuW3suaUtuiXjzppbWdMaW5rLuacquaUtuiXjyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB1cmw6ICQoJyNub0xvYWRpbmcjI25vSGlzdG9yeSMnKS5sYXp5UnVsZSgoYWlkKSA9PiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdXBNaWQ9SlNPTi5wYXJzZShyZXF1ZXN0KFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2JpbGkudHh0XFxcIikpLnVzZXJNaWQ7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXCIpLmZhdm91ckxvZ2ljKGFpZCx1cE1pZClcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB9LCBhaWQpLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiBcXFwiaWNvbl9zbWFsbF80XFxcIixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBleHRyYTp7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWQ6J3NldEZhdm91cidcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgfSx7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6ICfnqI3lkI7lho3nnIsnLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGltZzogaW1nTGluay7nqI3lkI7lho3nnIssXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiAkKCcjbm9Mb2FkaW5nIyNub0hpc3RvcnkjJykubGF6eVJ1bGUoKGFpZCkgPT4ge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybiAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9hcGlcXFwiKS5qdWRnZVRvdmlldyhhaWQpXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgfSwgYWlkKSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogXFxcImljb25fc21hbGxfNFxcXCIsXFxuXFxuwqAgwqAgwqAgwqAgfSwge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiAn5p+l55yL6K+E6K66JyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB1cmw6ICdoaWtlcjovL3BhZ2UvQ29tbWVudHM/cD1meXBhZ2UnLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGltZzogaW1nTGluay7mn6XnnIvor4TorrosXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6IFxcXCJpY29uX3NtYWxsXzRcXFwiLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGV4dHJhOiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgXFxcImlkXFxcIjogYWlkLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIFxcXCJ0eXBlXFxcIjoxXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIMKgIMKgIH0se1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXG5cXG7CoCDCoCDCoCDCoCB9LHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogcC5kZXNjLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiBcXFwibG9uZ190ZXh0XFxcIixcXG5cXG7CoCDCoCDCoCDCoCB9KTtcXG5cXG7CoCDCoCB9IGVsc2Uge1xcblxcbsKgIMKgIMKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IHAudGl0bGUsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgaW1nOnAucGljICsgJ0BSZWZlcmVyPScsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiAkKCcjbm9Mb2FkaW5nIyNub0hpc3RvcnkjJykubGF6eVJ1bGUoKHApID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXR1cm4gJCgnaGlrZXI6Ly9lbXB0eT9meXBhZ2UnKS5ydWxlKChwKSA9PiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZCA9IFtdO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IHAuZGVzYyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogXFxcImxvbmdfdGV4dFxcXCIsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSlcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBzZXRSZXN1bHQoZCk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSwgcClcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB9LCBwKSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogXFxcInBpY18xXFxcIlxcblxcbsKgIMKgIMKgIMKgIH0se1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiAnPGZvbnQgY29sb3I9XFxcImJsdWVcXFwiPicgKyBwLm93bmVyLm5hbWUgKyAnPC9mb250PicsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL3VwSG9tZVxcXCIsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgaW1nOiBwLm93bmVyLmZhY2UgKyBcXFwiQFJlZmVyZXI9XFxcIixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogXFxcImF2YXRhclxcXCIsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgZXh0cmE6IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBtaWQ6IHAub3duZXIubWlkLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBwLm93bmVyLm5hbWUsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZmFjZTogcC5vd25lci5mYWNlXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIMKgIMKgIH0se1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiAnbGluZSdcXG5cXG7CoCDCoCDCoCDCoCB9LHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogcC5zdGF0Lmxpa2UsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgaW1nOiBoYXNMaWtlPT0xP2ltZ0xpbmsu5bey54K56LWeOmltZ0xpbmsu5pyq54K56LWeLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHVybDogJCgnI25vTG9hZGluZyMjbm9IaXN0b3J5IycpLmxhenlSdWxlKChhaWQpID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXR1cm4gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcIikubGlrZUxvZ2ljKGFpZClcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB9LCBhaWQpLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiBcXFwiaWNvbl9zbWFsbF80XFxcIixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBleHRyYTp7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWQ6J3NldExpa2UnXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIMKgIMKgIH0se1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBwLnN0YXQuZmF2b3JpdGUsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgaW1nOiBoYXNGYXZvdXI/aW1nTGluay7lt7LmlLbol486aW1nTGluay7mnKrmlLbol48sXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiAkKCcjbm9Mb2FkaW5nIyNub0hpc3RvcnkjJykubGF6eVJ1bGUoKGFpZCkgPT4ge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVwTWlkPUpTT04ucGFyc2UocmVxdWVzdChcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9iaWxpLnR4dFxcXCIpKS51c2VyTWlkO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybiAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9hcGlcXFwiKS5mYXZvdXJMb2dpYyhhaWQsdXBNaWQpXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgfSwgYWlkKSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogXFxcImljb25fc21hbGxfNFxcXCIsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgZXh0cmE6e1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlkOidzZXRGYXZvdXInXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIMKgIMKgIH0se1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiAn56iN5ZCO5YaN55yLJyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBpbWc6IGltZ0xpbmsu56iN5ZCO5YaN55yLLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHVybDogJCgnI25vTG9hZGluZyMjbm9IaXN0b3J5IycpLmxhenlSdWxlKChhaWQpID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXR1cm4gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcIikuanVkZ2VUb3ZpZXcoYWlkKVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIH0sIGFpZCksXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6IFxcXCJpY29uX3NtYWxsXzRcXFwiLFxcblxcbsKgIMKgIMKgIMKgIH0sIHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogJ+afpeeci+ivhOiuuicsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiAnaGlrZXI6Ly9wYWdlL0NvbW1lbnRzP3A9ZnlwYWdlJyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBpbWc6IGltZ0xpbmsu5p+l55yL6K+E6K66LFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiBcXFwiaWNvbl9zbWFsbF80XFxcIixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBleHRyYToge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIFxcXCJpZFxcXCI6IGFpZCxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBcXFwidHlwZVxcXCI6MVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCB9KVxcblxcbsKgIMKgIMKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdsaW5lX2JsYW5rJ1xcblxcbsKgIMKgIMKgIMKgIH0se1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiAn6YCJ6ZuG5YiX6KGoXFxcXHRcXFxcdFxcXFx0PHNtYWxsPjxzbWFsbD7lhbEnK3AudmlkZW9zKyfmnaHop4bpopE8L3NtYWxsPjwvc21hbGw+JyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBpbWc6IGltZ0xpbmsu5YiX6KGoLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiBcXFwiYXZhdGFyXFxcIixcXG5cXG7CoCDCoCDCoCDCoCB9LHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ2xpbmUnXFxuXFxuwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgwqAgwqAgcC5wYWdlcy5mb3JFYWNoKGl0ZW0gPT4ge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGNpZCA9IGl0ZW0uY2lkO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IGl0ZW0ucGFydCxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB1cmw6ICQoKS5sYXp5UnVsZSgoYWlkLCBjaWQsIHFuKSA9PiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXCIpLmJpbGlMYXp5KGFpZCwgY2lkLCBxbikucmVwbGFjZSgvOy9nLCBcXFwi77yb77ybXFxcIik7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSwgYWlkICsgXFxcIlxcXCIsIGNpZCArIFxcXCJcXFwiLCAnMTEyJyksXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6IFxcXCJ0ZXh0XzFcXFwiXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgfSlcXG5cXG7CoCDCoCDCoCDCoCB9KVxcblxcbsKgIMKgIH1cXG5cXG59IGNhdGNoIChlKSB7XFxuXFxuwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCB0aXRsZTogJ+mhtemdoui1sOS4ouS6hi4uLicsXFxuXFxuwqAgwqAgwqAgwqAgaW1nOiAnaHR0cHM6Ly9pMC5oZHNsYi5jb20vYmZzL2dlbmVyYWwvZjdiNjY3MDExYTQ2NjE1NzMyYzcwMWY0YmIxZDA3Zjc5M2Y4ZDFkZi5wbmdAUmVmZXJlcj0nLFxcblxcbsKgIMKgIMKgIMKgIHVybDogJ2hpa2VyOi8vZW1wdHknLFxcblxcbsKgIMKgIMKgIMKgIGRlc2M6ICflpKfmpoLnjofop4bpopHooqvlsIHnpoHvvIzmiJbogIV1cOW3sui3kei3r34nLFxcblxcbsKgIMKgIMKgIMKgIGNvbF90eXBlOiBcXFwicGljXzFcXFwiXFxuXFxuwqAgwqAgfSk7XFxuXFxufVxcblxcbnNldFJlc3VsdChkKTtcXG5cXG5cXG5cIn0se1wiY29sX3R5cGVcIjpcImxvbmdfdGV4dFwiLFwibmFtZVwiOlwi6K+E6K66XCIsXCJwYXRoXCI6XCJDb21tZW50c1wiLFwicnVsZVwiOlwianM6XFxuXFxudmFyIGQgPSBbXTtcXG5cXG52YXIgaWQgPSBNWV9QQVJBTVMuaWQ7XFxuXFxudmFyIHR5cGUgPSBNWV9QQVJBTVMudHlwZTtcXG5cXG5sb2coaWQpO1xcblxcbmlmIChNWV9QQUdFID09IDEpIHtcXG5cXG7CoCDCoCAvLyDosozkvLzmmoLml7blj6rog73mloflrZcr5pWw5a2XXFxuXFxuwqAgwqAgZC51bnNoaWZ0KHtcXG5cXG7CoCDCoCDCoCDCoCB0aXRsZTogXFxcIuWPkeadoeivhOiuuuWQp1xcXCIsXFxuXFxuwqAgwqAgwqAgwqAgY29sX3R5cGU6IFxcXCJpbnB1dFxcXCIsXFxuXFxuwqAgwqAgwqAgwqAgdXJsOiAkLnRvU3RyaW5nKChpZCx0eXBlKSA9PiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgbGV0IGNzcmYgPSBKU09OLnBhcnNlKHJlcXVlc3QoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvY3kvYmlsaS50eHRcXFwiKSkuY29va2llLm1hdGNoKC9iaWxpX2pjdD0oLio/KTsvKVsxXTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBwb3N0KFxcXCJodHRwOi8vYXBpLmJpbGliaWxpLmNvbS94L3YyL3JlcGx5L2FkZFxcXCIsIHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBib2R5OiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgXFxcInR5cGVcXFwiOiB0eXBlLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIFxcXCJvaWRcXFwiOiBpZCxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBcXFwiY3NyZlxcXCI6IGNzcmYsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgXFxcIm1lc3NhZ2VcXFwiOiBpbnB1dFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0sXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaGVhZGVyczoge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIFxcXCJDb29raWVcXFwiOiBKU09OLnBhcnNlKHJlcXVlc3QoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvY3kvYmlsaS50eHRcXFwiKSkuY29va2llXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIH0pXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgcmVmcmVzaFBhZ2UoKVxcblxcbsKgIMKgIMKgIMKgIH0sIGlkLHR5cGUpXFxuXFxuwqAgwqAgfSlcXG5cXG59XFxuXFxubGV0IGRhdGEgPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9hcGlcXFwiKS5nZXRDb21tZW50cyhpZCx0eXBlLE1ZX1BBR0UpXFxuXFxuZGF0YS5mb3JFYWNoKGl0ZW0gPT4ge1xcblxcbsKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgdGl0bGU6IGl0ZW0ubWVtYmVyLnVuYW1lKydcXFxcdFxcXFx0XFxcXHQ8c21hbGw+PHNtYWxsPjxmb250IGNvbG9yPVxcXCJncmV5XFxcIj4nK2l0ZW0ucmVwbHlfY29udHJvbC5sb2NhdGlvbiArIFxcXCIgXFxcIiArIGl0ZW0ucmVwbHlfY29udHJvbC50aW1lX2Rlc2MrJzwvZm9udD48L3NtYWxsPjwvc21hbGw+JyxcXG5cXG7CoCDCoCDCoCDCoCBpbWc6IGl0ZW0ubWVtYmVyLmF2YXRhcisnQFJlZmVyZXI9JyxcXG5cXG7CoCDCoCDCoCDCoCB1cmw6J2hpa2VyOi8vcGFnZS91cEhvbWUnLFxcblxcbsKgIMKgIMKgIMKgIGNvbF90eXBlOiBcXFwiYXZhdGFyXFxcIixcXG5cXG7CoCDCoCDCoCDCoCBleHRyYToge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIG1pZDogaXRlbS5tZW1iZXIubWlkLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBpdGVtLm1lbWJlci51bmFtZSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBmYWNlOiBpdGVtLm1lbWJlci5hdmF0YXJcXG5cXG7CoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgfSlcXG5cXG7CoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIHRpdGxlOiBpdGVtLmNvbnRlbnQubWVzc2FnZSxcXG5cXG7CoCDCoCB9KVxcblxcbn0pXFxuXFxuc2V0UmVzdWx0KGQpO1xcblxcblwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6K6i6ZiF5YiX6KGoXCIsXCJwYXRoXCI6XCJzdWJzY3JpcHRpb25cIixcInJ1bGVcIjpcImlmIChnZXRJdGVtKCforqLpmIXnsbvlnosnLCAnMScpID09ICcxJykge1xcblxcbsKgIMKgIHR5cGVyTmFtZSA9ICfov73nlaonO1xcblxcbn0gZWxzZSB7XFxuXFxuwqAgwqAgdHlwZXJOYW1lID0gJ+i/veWJpyc7XFxuXFxufVxcblxcbmQucHVzaCh7XFxuXFxuwqAgwqAgdGl0bGU6ICfov73nlaonID09IHR5cGVyTmFtZSA/ICfigJjigJjigJnigJk8Zm9udCBjb2xvcj1cXFwicmVkXFxcIj7ov73nlao8L2ZvbnQ+JyA6ICfov73nlaonLFxcblxcbsKgIMKgIHVybDogJCgnI25vTG9hZGluZyMjbm9IaXN0b3J5IycpLmxhenlSdWxlKCgpID0+IHtcXG5cXG7CoCDCoCDCoCDCoCBzZXRJdGVtKCforqLpmIXnsbvlnosnLCAnMScpXFxuXFxuwqAgwqAgwqAgwqAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxuXFxuwqAgwqAgwqAgwqAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIjtcXG5cXG7CoCDCoCB9KSxcXG5cXG7CoCDCoCBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuXFxufSx7XFxuXFxuwqAgwqAgdGl0bGU6ICfov73liacnID09IHR5cGVyTmFtZSA/ICfigJjigJjigJnigJk8Zm9udCBjb2xvcj1cXFwicmVkXFxcIj7ov73liac8L2ZvbnQ+JyA6ICfov73liacnLFxcblxcbsKgIMKgIHVybDogJCgnI25vTG9hZGluZyMjbm9IaXN0b3J5IycpLmxhenlSdWxlKCgpID0+IHtcXG5cXG7CoCDCoCDCoCDCoCBzZXRJdGVtKCforqLpmIXnsbvlnosnLCAnMicpXFxuXFxuwqAgwqAgwqAgwqAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxuXFxuwqAgwqAgwqAgwqAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIjtcXG5cXG7CoCDCoCB9KSxcXG5cXG7CoCDCoCBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuXFxufSk7XFxuXFxuc3Vic2NyaXB0aW9ucyA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2Jhbmd1bWkvZm9sbG93L2xpc3Q/dHlwZT1cXFwiICsgZ2V0SXRlbSgn6K6i6ZiF57G75Z6LJywgJzEnKSArIFxcXCImZm9sbG93X3N0YXR1cz0wJnBuPVxcXCIgKyBwYWdlICsgXFxcIiZwcz0xNSZ2bWlkPVxcXCIgKyBtaWQsIHtcXG5cXG7CoCDCoCBoZWFkZXJzOiB7XFxuXFxuwqAgwqAgwqAgwqAgXFxcIkNvb2tpZVxcXCI6IGNvb2tpZVxcblxcbsKgIMKgIH1cXG5cXG59KSkuZGF0YTtcXG5cXG5pZiAocGFnZSA9PSAxKSB7XFxuXFxuwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCB0aXRsZTogXFxcIuW9k+WJjVxcXCIgKyB0eXBlck5hbWUgKyBcXFwi5pWw6YePOlxcXCIgKyBzdWJzY3JpcHRpb25zLnRvdGFsLFxcblxcbsKgIMKgIMKgIMKgIHVybDogXFxcImhpa2VyOi8vZW1wdHlcXFwiLFxcblxcbsKgIMKgIMKgIMKgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCJcXG5cXG7CoCDCoCB9KVxcblxcbn1cXG5cXG5zdWJzY3JpcHRpb25zLmxpc3QuZm9yRWFjaChsaXN0ID0+IHtcXG5cXG7CoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIHRpdGxlOiBsaXN0LnRpdGxlLFxcblxcbsKgIMKgIMKgIMKgIGltZzogbGlzdC5jb3ZlciArIFxcXCJAUmVmZXJlcj1cXFwiLFxcblxcbsKgIMKgIMKgIMKgIHVybDogXFxcImhpa2VyOi8vcGFnZS9maWxtZXJqaSNpbW1lcnNpdmVUaGVtZSNcXFwiLFxcblxcbsKgIMKgIMKgIMKgIGRlc2M6IGxpc3QuZXZhbHVhdGUuc3Vic3RyaW5nKDAsIDEyKSArICfigJjigJjigJnigJnigKY8Zm9udCBjb2xvcj1cXFwiIzFDMUMxQ1xcXCI+6K+m5oOFPC9mb250PicgKyAnXFxcXG4nICsgbGlzdC5zZWFzb25fdHlwZV9uYW1lICsgJ3wnICsgKGxpc3QuYXJlYXM9PT11bmRlZmluZWQ/Jyc6bGlzdC5hcmVhc1swXS5uYW1lICsgJ1xcXFxuJykgKyAobGlzdC5wcm9ncmVzcyA9PSAnJyA/ICflsJrmnKrop4LnnIsnIDogbGlzdC5wcm9ncmVzcykgKyAobGlzdC5uZXdfZXAuaW5kZXhfc2hvdz09PXVuZGVmaW5lZD8nJzonfCcrKGxpc3QubmV3X2VwLmluZGV4X3Nob3cubWF0Y2goL+abtOaWsHzljbPlsIYvKSA/ICfigJjigJjigJnigJk8Zm9udCBjb2xvcj1cXFwicmVkXFxcIj4nICsgbGlzdC5uZXdfZXAuaW5kZXhfc2hvdyArICc8L2ZvbnQ+JzogbGlzdC5uZXdfZXAuaW5kZXhfc2hvdykpLFxcblxcbsKgIMKgIMKgIMKgIGNvbF90eXBlOiAnbW92aWVfMV92ZXJ0aWNhbF9waWMnLFxcblxcbsKgIMKgIMKgIMKgIGV4dHJhOiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgc2Vhc29uX2lkOiBsaXN0LnNlYXNvbl9pZFxcblxcbsKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCB9KTtcXG5cXG59KTtcXG5cXG5cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuWFs+azqOWIl+ihqFwiLFwicGF0aFwiOlwiYXR0ZW50aW9uXCIsXCJydWxlXCI6XCJpZiAoTVlfUEFHRSA9PSAxKSB7XFxuXFxuwqAgwqAgZm9jdXNHcm91cHM9JC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcIikuZ2V0TXlBdHRlbnRpb25Hcm91cExpc3QoKTtcXG5cXG7CoCDCoCBwdXRNeVZhcigndGVtcElkJywgSlNPTi5zdHJpbmdpZnkoZm9jdXNHcm91cHNbMV0udGFnaWQpKTtcXG5cXG7CoCDCoCBmb2N1c0dyb3Vwcy5mb3JFYWNoKGxpc3QgPT4ge1xcblxcbsKgIMKgIMKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IGxpc3QudGFnaWQgPT0gZ2V0SXRlbSgn5YWz5rOo5YiG57uEJywgSlNPTi5zdHJpbmdpZnkoZm9jdXNHcm91cHNbMV0uaWQpKSA/IFxcXCLigJzigJzigJ3igJ08Zm9udCBjb2xvcj0ncmVkJz5cXFwiICsgbGlzdC5uYW1lICsgbGlzdC5jb3VudCArIFxcXCI8L2ZvbnQ+XFxcIiA6IGxpc3QubmFtZSArIGxpc3QuY291bnQsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiAkKCcjbm9Mb2FkaW5nIyNub0hpc3RvcnkjJykubGF6eVJ1bGUoKGxpc3QpID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBzZXRJdGVtKCflhbPms6jliIbnu4QnLCBKU09OLnN0cmluZ2lmeShsaXN0LnRhZ2lkKSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuIFxcXCJ0b2FzdDovL+WIh+aNouWFs+azqOWIhue7hOS4ujpcXFwiICsgbGlzdC5uYW1lO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIH0sIGxpc3QpLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbicsXFxuXFxuwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgfSk7XFxuXFxuwqAgwqAgLy8g5pyr5bC+6KGl5YWF5oKE5oKE5YWz5rOo5YiG57uEXFxuXFxuwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCB0aXRsZTogJ+aChOaChOWFs+azqCcgPT0gZ2V0SXRlbSgn5YWz5rOo5YiG57uEJywgSlNPTi5zdHJpbmdpZnkoZm9jdXNHcm91cHNbMF0uaWQpKSA/IFxcXCLigJzigJzigJ3igJ08Zm9udCBjb2xvcj0ncmVkJz7mgoTmgoTlhbPms6g8L2ZvbnQ+XFxcIiA6IFxcXCLmgoTmgoTlhbPms6hcXFwiLFxcblxcbsKgIMKgIMKgIMKgIHVybDogJCgnI25vTG9hZGluZyMjbm9IaXN0b3J5IycpLmxhenlSdWxlKCgpID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBzZXRJdGVtKCflhbPms6jliIbnu4QnLCBcXFwi5oKE5oKE5YWz5rOoXFxcIik7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuIFxcXCJ0b2FzdDovL+WIh+aNouWFs+azqOWIhue7hOS4ujpcXFwiICsgXFxcIuaChOaChOWFs+azqFxcXCI7XFxuXFxuwqAgwqAgwqAgwqAgfSksXFxuXFxuwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcXG5cXG7CoCDCoCB9LHtcXG5cXG7CoCDCoCDCoCDCoCBjb2xfdHlwZTogJ2xpbmUnXFxuXFxuwqAgwqAgfSk7XFxuXFxufVxcblxcbmlmIChnZXRJdGVtKCflhbPms6jliIbnu4QnKT09J+aChOaChOWFs+azqCcpIHtcXG5cXG7CoCDCoCBncm91cENvbnRlbnQgPSBKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9yZWxhdGlvbi93aGlzcGVycz9wbj1cXFwiK3BhZ2UrXFxcIiZwcz0yMCZqc29ucD1qc29ucFxcXCIsIHtcXG5cXG7CoCDCoCDCoCDCoCBoZWFkZXJzOiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgXFxcIkNvb2tpZVxcXCI6IGNvb2tpZVxcblxcbsKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCB9KSkuZGF0YS5saXN0O1xcblxcbsKgIMKgIGdyb3VwQ29udGVudC5mb3JFYWNoKGxpc3QgPT4ge1xcblxcbsKgIMKgIMKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IFxcXCI8YmlnPjxmb250IGNvbG9yPSdibHVlJz5cXFwiICsgbGlzdC51bmFtZSArIFxcXCI8L2ZvbnQ+PC9iaWc+PHNtYWxsPlxcXCIgKyBsaXN0LnNpZ24gKyBcXFwiPC9zbWFsbD5cXFwiLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGltZzogbGlzdC5mYWNlICsgXFxcIkBSZWZlcmVyPVxcXCIsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdhdmF0YXInLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHVybDogXFxcImhpa2VyOi8vcGFnZS91cEhvbWVcXFwiLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGV4dHJhOiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgbWlkOiBsaXN0Lm1pZCxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogbGlzdC51bmFtZSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBmYWNlOiBsaXN0LmZhY2VcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgfSk7XFxuXFxufWVsc2V7XFxuXFxuwqAgwqAgZ3JvdXBDb250ZW50ID0gSlNPTi5wYXJzZShmZXRjaChcXFwiaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvcmVsYXRpb24vdGFnP21pZD1cXFwiICsgbWlkICsgXFxcIiZ0YWdpZD1cXFwiICsgZ2V0SXRlbSgn5YWz5rOo5YiG57uEJywgZ2V0TXlWYXIoJ3RlbXBJZCcpKSArIFxcXCImcG49XFxcIiArIHBhZ2UgKyBcXFwiJnBzPTIwJmpzb25wPWpzb25wXFxcIiwge1xcblxcbsKgIMKgIMKgIMKgIGhlYWRlcnM6IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBcXFwiQ29va2llXFxcIjogY29va2llXFxuXFxuwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIH0pKS5kYXRhO1xcblxcbsKgIMKgIGdyb3VwQ29udGVudC5mb3JFYWNoKGxpc3QgPT4ge1xcblxcbsKgIMKgIMKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IFxcXCI8YmlnPjxmb250IGNvbG9yPSdibHVlJz5cXFwiICsgbGlzdC51bmFtZSArIFxcXCI8L2ZvbnQ+PC9iaWc+PHNtYWxsPlxcXCIgKyBsaXN0LnNpZ24gKyBcXFwiPC9zbWFsbD5cXFwiLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGltZzogbGlzdC5mYWNlICsgXFxcIkBSZWZlcmVyPVxcXCIsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdhdmF0YXInLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHVybDogXFxcImhpa2VyOi8vcGFnZS91cEhvbWVcXFwiLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGV4dHJhOiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgbWlkOiBsaXN0Lm1pZCxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogbGlzdC51bmFtZSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBmYWNlOiBsaXN0LmZhY2VcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgfSk7XFxuXFxufVxcblxcblxcblwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5pS26JeP5YiX6KGoXCIsXCJwYXRoXCI6XCJjb2xlY3Rpb25cIixcInJ1bGVcIjpcImlmIChwYWdlID09IDEpIHtcXHJcXG4gICAgZC5wdXNoKHtcXHJcXG4gICAgICAgIHRpdGxlOiAn5oiR5Yib5bu655qE5pS26JeP5aS5JyA9PSBnZXRJdGVtKCfmlLbol4/nsbvlnosnLCAn5oiR5Yib5bu655qE5pS26JeP5aS5JykgPyAn4oCY4oCY4oCZ4oCZPGZvbnQgY29sb3I9XFxcInJlZFxcXCI+5oiR5Yib5bu655qE5pS26JeP5aS5PC9mb250PicgOiAn5oiR5Yib5bu655qE5pS26JeP5aS5JyxcXHJcXG4gICAgICAgIHVybDogJCgnI25vTG9hZGluZyMjbm9IaXN0b3J5IycpLmxhenlSdWxlKCgpID0+IHtcXHJcXG4gICAgICAgICAgICBzZXRJdGVtKCfmlLbol4/nsbvlnosnLCAn5oiR5Yib5bu655qE5pS26JeP5aS5JylcXHJcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKTtcXHJcXG4gICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiO1xcclxcbiAgICAgICAgfSksXFxyXFxuICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxyXFxuICAgIH0sIHtcXHJcXG4gICAgICAgIHRpdGxlOiAn56iN5ZCO5Zyo55yLJyA9PSBnZXRJdGVtKCfmlLbol4/nsbvlnosnLCAn5oiR5Yib5bu655qE5pS26JeP5aS5JykgPyAn4oCY4oCY4oCZ4oCZPGZvbnQgY29sb3I9XFxcInJlZFxcXCI+56iN5ZCO5Zyo55yLPC9mb250PicgOiAn56iN5ZCO5Zyo55yLJyxcXHJcXG4gICAgICAgIHVybDogJCgnI25vTG9hZGluZyMjbm9IaXN0b3J5IycpLmxhenlSdWxlKCgpID0+IHtcXHJcXG4gICAgICAgICAgICBzZXRJdGVtKCfmlLbol4/nsbvlnosnLCAn56iN5ZCO5Zyo55yLJylcXHJcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKTtcXHJcXG4gICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiO1xcclxcbiAgICAgICAgfSksXFxyXFxuICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxyXFxuICAgIH0pO1xcclxcbn1cXHJcXG5pZiAoZ2V0SXRlbSgn5pS26JeP57G75Z6LJywgJ+aIkeWIm+W7uueahOaUtuiXj+WkuScpID09ICfmiJHliJvlu7rnmoTmlLbol4/lpLknKSB7XFxyXFxuICAgIHRyeSB7XFxyXFxuICAgICAgICBpZiAocGFnZSA9PSAxKSB7XFxyXFxuICAgICAgICAgICAgZC5wdXNoKHtcXHJcXG4gICAgICAgICAgICAgICAgLy8gY29sX3R5cGU6ICdibGFua19ibG9jaydcXHJcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdsaW5lJ1xcclxcbiAgICAgICAgICAgIH0sICk7XFxyXFxuICAgICAgICB9XFxyXFxuICAgICAgICBjb2xsZWN0aW9ucyA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3YzL2Zhdi9mb2xkZXIvbGlzdDRuYXZpZ2F0ZVxcXCIsIHtcXHJcXG4gICAgICAgICAgICBoZWFkZXJzOiB7XFxyXFxuICAgICAgICAgICAgICAgIFxcXCJDb29raWVcXFwiOiBjb29raWVcXHJcXG4gICAgICAgICAgICB9XFxyXFxuICAgICAgICB9KSkuZGF0YTtcXHJcXG4gICAgICAgIGdyb3VwcyA9IGNvbGxlY3Rpb25zWzBdLm1lZGlhTGlzdFJlc3BvbnNlLmxpc3Q7XFxyXFxuICAgICAgICBwdXRNeVZhcigndGVtcElkJywgSlNPTi5zdHJpbmdpZnkoZ3JvdXBzWzBdLmlkKSk7XFxyXFxuICAgICAgICBncm91cHMuZm9yRWFjaChsaXN0ID0+IHtcXHJcXG4gICAgICAgICAgICBkLnB1c2goe1xcclxcbiAgICAgICAgICAgICAgICB0aXRsZTogbGlzdC5pZCA9PSBnZXRJdGVtKCfmlLbol4/lpLknLCBKU09OLnN0cmluZ2lmeShncm91cHNbMF0uaWQpKSA/IFxcXCLigJzigJzigJ3igJ08Zm9udCBjb2xvcj0ncmVkJz5cXFwiICsgbGlzdC50aXRsZSArIFxcXCI8L2ZvbnQ+XFxcIiA6IGxpc3QudGl0bGUsXFxyXFxuICAgICAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMjbm9IaXN0b3J5IycpLmxhenlSdWxlKChsaXN0KSA9PiB7XFxyXFxuICAgICAgICAgICAgICAgICAgICBzZXRJdGVtKCfmlLbol4/lpLknLCBKU09OLnN0cmluZ2lmeShsaXN0LmlkKSk7XFxyXFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKTtcXHJcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/liIfmjaLmlLbol4/lpLnkuLo6XFxcIiArIGxpc3QudGl0bGU7XFxyXFxuICAgICAgICAgICAgICAgIH0sIGxpc3QpLFxcclxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nLFxcclxcbiAgICAgICAgICAgIH0pO1xcclxcbiAgICAgICAgfSk7XFxyXFxuICAgICAgICBkLnB1c2goe1xcclxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnbGluZSdcXHJcXG4gICAgICAgIH0pO1xcclxcbiAgICAgICAgZ3JvdXBDb250ZW50ID0gSlNPTi5wYXJzZShmZXRjaChcXFwiaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvdjMvZmF2L3Jlc291cmNlL2xpc3Q/bWVkaWFfaWQ9XFxcIiArIGdldEl0ZW0oJ+aUtuiXj+WkuScsIGdldE15VmFyKCd0ZW1wSWQnKSkgKyBcXFwiJnBuPVxcXCIgKyBwYWdlICsgXFxcIiZwcz0yMCZrZXl3b3JkPSZvcmRlcj1tdGltZSZ0eXBlPTAmdGlkPTAmcGxhdGZvcm09d2ViJmpzb25wPWpzb25wXFxcIiwge1xcclxcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcXHJcXG4gICAgICAgICAgICAgICAgXFxcIkNvb2tpZVxcXCI6IGNvb2tpZVxcclxcbiAgICAgICAgICAgIH1cXHJcXG4gICAgICAgIH0pKS5kYXRhLm1lZGlhcztcXHJcXG4gICAgICAgIGdyb3VwQ29udGVudC5mb3JFYWNoKGxpc3QgPT4ge1xcclxcbiAgICAgICAgICAgIGQucHVzaCh7XFxyXFxuICAgICAgICAgICAgICAgIHRpdGxlOiBsaXN0LnRpdGxlLFxcclxcbiAgICAgICAgICAgICAgICBpbWc6IGxpc3QuY292ZXIgKyBcXFwiQFJlZmVyZXI9XFxcIixcXHJcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX2xlZnRfcGljJyxcXHJcXG4gICAgICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL3ZpZGVvXFxcIixcXHJcXG4gICAgICAgICAgICAgICAgZGVzYzogJ1VQOicgKyBsaXN0LnVwcGVyLm5hbWUgKyAnXFxcXG4nICsgbGlzdC5pbnRybyxcXHJcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXHJcXG4gICAgICAgICAgICAgICAgICAgIGFpZDogbGlzdC5pZCxcXHJcXG4gICAgICAgICAgICAgICAgICAgIG1pZDogbGlzdC51cHBlci5taWRcXHJcXG4gICAgICAgICAgICAgICAgfVxcclxcbiAgICAgICAgICAgIH0pO1xcclxcbiAgICAgICAgfSk7XFxyXFxuICAgIH0gY2F0Y2ggKGUpIHtcXHJcXG4gICAgICAgIHNob3dMb2FkaW5nKCflhYTlvJ/vvIzkvaDnoa7orqTkvaDmnInmlLbol4/lkJfvvIzlv6vljrvmlLbol4/kuIDkuKrop4bpopF+Jyk7XFxyXFxuICAgIH1cXHJcXG59IGVsc2Uge1xcclxcbiAgICBsYXRlclZpZXdzID0gSlNPTi5wYXJzZShmZXRjaChcXFwiaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvdjIvaGlzdG9yeS90b3ZpZXcvd2ViP2pzb25wPWpzb25wXFxcIiwge1xcclxcbiAgICAgICAgaGVhZGVyczoge1xcclxcbiAgICAgICAgICAgIFxcXCJDb29raWVcXFwiOiBjb29raWVcXHJcXG4gICAgICAgIH1cXHJcXG4gICAgfSkpLmRhdGE7XFxyXFxuICAgIGNvdW50ID0gbGF0ZXJWaWV3cy5jb3VudDtcXHJcXG4gICAgZC5wdXNoKHtcXHJcXG4gICAgICAgIHRpdGxlOiBcXFwi5YWx5pyJXFxcIiArIGNvdW50ICsgXFxcIuadoeW+heeci+inhumikeiusOW9lVxcXCIsXFxyXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXHJcXG4gICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCJcXHJcXG4gICAgfSk7XFxyXFxuICAgIGxhdGVyVmlld3MubGlzdC5mb3JFYWNoKGxpc3QgPT4ge1xcclxcbiAgICAgICAgZC5wdXNoKHtcXHJcXG4gICAgICAgICAgICB0aXRsZTogbGlzdC50aXRsZSxcXHJcXG4gICAgICAgICAgICBpbWc6IGxpc3QucGljICsgXFxcIkBSZWZlcmVyPVxcXCIsXFxyXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX2xlZnRfcGljJyxcXHJcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL3BhZ2UvdmlkZW9cXFwiLFxcclxcbiAgICAgICAgICAgIGRlc2M6ICdVUDonICsgbGlzdC5vd25lci5uYW1lICsgJ1xcXFxuJyArIGxpc3QuZGVzYyxcXHJcXG4gICAgICAgICAgICBleHRyYToge1xcclxcbiAgICAgICAgICAgICAgICBhaWQ6IGxpc3QuYWlkLFxcclxcbiAgICAgICAgICAgICAgICBtaWQ6IGxpc3Qub3duZXIubWlkXFxyXFxuICAgICAgICAgICAgfVxcclxcbiAgICAgICAgfSk7XFxyXFxuICAgIH0pO1xcclxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIui2s+i/uVwiLFwicGF0aFwiOlwidHJhY2tcIixcInJ1bGVcIjpcInZhciBuZXh0SW5mbyA9IHt9O1xcblxcbmlmIChwYWdlID09IDEpIHtcXG5cXG7CoCDCoCBoaXN0b3JpZXMgPSBKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL2hpc3RvcnkvY3Vyc29yP21heD0wJnZpZXdfYXQ9MCZidXNpbmVzcz1cXFwiLCB7XFxuXFxuwqAgwqAgwqAgwqAgaGVhZGVyczoge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIFxcXCJDb29raWVcXFwiOiBjb29raWVcXG5cXG7CoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgfSkpLmRhdGE7XFxuXFxuwqAgwqAgbmV4dEluZm8ubWF4ID0gaGlzdG9yaWVzLmN1cnNvci5tYXg7XFxuXFxuwqAgwqAgbmV4dEluZm8udmlld19hdCA9IGhpc3Rvcmllcy5jdXJzb3Iudmlld19hdDtcXG5cXG7CoCDCoCBuZXh0SW5mby5idXNpbmVzcyA9IGhpc3Rvcmllcy5jdXJzb3IuYnVzaW5lc3M7XFxuXFxufSBlbHNlIHtcXG5cXG7CoCDCoCBoaXN0b3JpZXMgPSBKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL2hpc3RvcnkvY3Vyc29yP21heD1cXFwiICsgc3RvcmFnZTAuZ2V0TXlWYXIoSlNPTi5zdHJpbmdpZnkocGFnZSkpLm1heCArIFxcXCImdmlld19hdD1cXFwiICsgc3RvcmFnZTAuZ2V0TXlWYXIoSlNPTi5zdHJpbmdpZnkocGFnZSkpLnZpZXdfYXQgKyBcXFwiJmJ1c2luZXNzPVxcXCIgKyBzdG9yYWdlMC5nZXRNeVZhcihKU09OLnN0cmluZ2lmeShwYWdlKSkuYnVzaW5lc3MsIHtcXG5cXG7CoCDCoCDCoCDCoCBoZWFkZXJzOiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgXFxcIkNvb2tpZVxcXCI6IGNvb2tpZVxcblxcbsKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCB9KSkuZGF0YTtcXG5cXG7CoCDCoCBuZXh0SW5mby5tYXggPSBoaXN0b3JpZXMuY3Vyc29yLm1heDtcXG5cXG7CoCDCoCBuZXh0SW5mby52aWV3X2F0ID0gaGlzdG9yaWVzLmN1cnNvci52aWV3X2F0O1xcblxcbsKgIMKgIG5leHRJbmZvLmJ1c2luZXNzID0gaGlzdG9yaWVzLmN1cnNvci5idXNpbmVzcztcXG5cXG59XFxuXFxuc3RvcmFnZTAucHV0TXlWYXIoSlNPTi5zdHJpbmdpZnkocGFnZSArIDEpLCBuZXh0SW5mbyk7XFxuXFxuaGlzdG9yaWVzLmxpc3QuZm9yRWFjaChsaXN0ID0+IHtcXG5cXG7CoCDCoCB2aWV3VGltZT1wYnRpbWUgPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9hcGlcXFwiKS50aW1lQ29udmVydChsaXN0LnZpZXdfYXQpO1xcblxcbsKgIMKgIGlmIChsaXN0Lmhpc3RvcnkuYnVzaW5lc3MgPT0gJ2FydGljbGUnKSB7XFxuXFxuwqAgwqAgwqAgwqAgLy8g5LiT5qCP5paH56ugXFxuXFxuwqAgwqAgwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogbGlzdC5zaG93X3RpdGxlPT0nJz9saXN0LnRpdGxlOmxpc3Quc2hvd190aXRsZSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBpbWc6IGxpc3QuY292ZXJzWzBdICsgXFxcIkBSZWZlcmVyPVxcXCIsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdtb3ZpZV8xX2xlZnRfcGljJyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB1cmw6IFxcXCJoaWtlcjovL3BhZ2UvYXJ0aWNsZURldGFpbFxcXCIsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgZGVzYzogKGxpc3QuYXV0aG9yX25hbWU9PScnP3ZpZXdUaW1lOidVUDonICsgbGlzdC5hdXRob3JfbmFtZSsnXFxcXG4nICkrIHZpZXdUaW1lLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGV4dHJhOiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWQ6IGxpc3QuaGlzdG9yeS5vaWQsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIMKgIMKgIH0pO1xcblxcbsKgIMKgIH0gZWxzZSBpZihsaXN0Lmhpc3RvcnkuYnVzaW5lc3MgPT0gJ2FydGljbGUtbGlzdCcpe1xcblxcbsKgIMKgIMKgIMKgIC8vIOaWh+eroOWIl+ihqO+8n++8iOWPjeato2lk5a2Y5pS+5L2N572u5LiN5LiA5qC377yJXFxuXFxuwqAgwqAgwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogbGlzdC5zaG93X3RpdGxlPT0nJz9saXN0LnRpdGxlOmxpc3Quc2hvd190aXRsZSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBpbWc6IGxpc3QuY292ZXJzWzBdICsgXFxcIkBSZWZlcmVyPVxcXCIsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdtb3ZpZV8xX2xlZnRfcGljJyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB1cmw6IFxcXCJoaWtlcjovL3BhZ2UvYXJ0aWNsZURldGFpbFxcXCIsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgZGVzYzogKGxpc3QuYXV0aG9yX25hbWU9PScnP3ZpZXdUaW1lOidVUDonICsgbGlzdC5hdXRob3JfbmFtZSsnXFxcXG4nICkrIHZpZXdUaW1lLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGV4dHJhOiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWQ6IGxpc3QuaGlzdG9yeS5jaWQsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIMKgIMKgIH0pO1xcblxcbsKgIMKgIH1lbHNlIGlmKGxpc3QuaGlzdG9yeS5idXNpbmVzcyA9PSAncGdjJyl7XFxuXFxuwqAgwqAgwqAgwqAgLy8g57O75YiX5Ymn6ZuG77yI5Y2V6ZuG77yJXFxuXFxuwqAgwqAgwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogbGlzdC5zaG93X3RpdGxlPT0nJz9saXN0LnRpdGxlOmxpc3Quc2hvd190aXRsZSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBpbWc6IGxpc3QuY292ZXIgKyBcXFwiQFJlZmVyZXI9XFxcIixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHVybDogXFxcImhpa2VyOi8vcGFnZS9maWxtZXJqaSNpbW1lcnNpdmVUaGVtZSNcXFwiLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGRlc2M6IChsaXN0LmF1dGhvcl9uYW1lPT0nJz9saXN0LnRhZ19uYW1lKydcXFxcdFxcXFx0JytsaXN0Lm5ld19kZXNjKydcXFxcbicrdmlld1RpbWU6J1VQOicgKyBsaXN0LmF1dGhvcl9uYW1lKydcXFxcbicrdmlld1RpbWUpLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGV4dHJhOiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZXBfaWQ6bGlzdC5oaXN0b3J5LmVwaWRcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgfWVsc2Uge1xcblxcbsKgIMKgIMKgIMKgIC8vIOaZrumAmnZpZGVvXFxuXFxuwqAgwqAgwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogbGlzdC5zaG93X3RpdGxlPT0nJz9saXN0LnRpdGxlOmxpc3Quc2hvd190aXRsZSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBpbWc6IGxpc3QuY292ZXIgKyBcXFwiQFJlZmVyZXI9XFxcIixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHVybDogXFxcImhpa2VyOi8vcGFnZS92aWRlb1xcXCIsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgZGVzYzogKGxpc3QuYXV0aG9yX25hbWU9PScnP2xpc3QudGFnX25hbWUrJ1xcXFx0XFxcXHQnK2xpc3QubmV3X2Rlc2MrJ1xcXFxuJyt2aWV3VGltZTonVVA6JyArIGxpc3QuYXV0aG9yX25hbWUrJ1xcXFxuJyt2aWV3VGltZSksXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgZXh0cmE6IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBhaWQ6IGxpc3QuaGlzdG9yeS5vaWQsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIMKgIMKgIH0pO1xcblxcbsKgIMKgIH1cXG5cXG59KTtcXG5cXG5cXG5cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuWKqOaAgVwiLFwicGF0aFwiOlwibGF0ZXROZXdzXCIsXCJydWxlXCI6XCJkLnB1c2goe1xcblxcbsKgIMKgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXG5cXG59KTtcXG5cXG5sYXRlbmV3cz0kLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9hcGlcXFwiKS5nZXREeW5hbWljRGF0YSgnbXlIb21lJyk7XFxuXFxuZXZhbCgkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9hcGlcXFwiKS5zaG93RHluYW1pY0RhdGEoKSk7XFxuXFxuXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuJPmoI/liJfooahcIixcInBhdGhcIjpcImFjdGljbGVMaXN0XCIsXCJydWxlXCI6XCJqczpcXG5cXG52YXIgZD1bXTtcXG5cXG5wYWdlPU1ZX1BBR0U7XFxuXFxudXBNaWQgPSBNWV9QQVJBTVMubWlkICsgXFxcIlxcXCI7XFxuXFxuYXJ0aWNsZUxpc3Q9JC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcIikuZ2V0VXNlckFydGljbGUodXBNaWQscGFnZSk7XFxuXFxuYXJ0aWNsZU51bT1hcnRpY2xlTGlzdC5jb3VudDtcXG5cXG5pZiAoYXJ0aWNsZU51bT09dW5kZWZpbmVkKSB7XFxuXFxuwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCB0aXRsZTogJ+i/mXVw5rKh5pyJ5LiT5qCP5paH56ugJyxcXG5cXG7CoCDCoCDCoCDCoCB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG5cXG7CoCDCoCDCoCDCoCBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiLFxcblxcbsKgIMKgIH0pO1xcblxcbn1lbHNle1xcblxcbsKgIMKgIG1heFBhZ2UgPSBNYXRoLmNlaWwoYXJ0aWNsZU51bSAvIGFydGljbGVMaXN0LnBzKTtcXG5cXG7CoCDCoCBpZiAocGFnZSA8PSBtYXhQYWdlKSB7XFxuXFxuwqAgwqAgwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogJ+W9k+WJjTrnrKwnICsgYXJ0aWNsZUxpc3QucG4gKyAn6aG1XFxcXHRcXFxcdFxcXFx05YWx5pyJJyArIG1heFBhZ2UgKyAn6aG1LCcgKyBhcnRpY2xlTnVtICsgJ+adoeaVsOaNricsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCIsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG5cXG7CoCDCoCDCoCDCoCB9KTtcXG5cXG7CoCDCoCDCoCDCoCBhcnRpY2xlTGlzdC5hcnRpY2xlcy5mb3JFYWNoKGxpc3QgPT4ge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHBidGltZT0kLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9hcGlcXFwiKS50aW1lQ29udmVydChsaXN0LnB1Ymxpc2hfdGltZSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogbGlzdC50aXRsZSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpbWc6IGxpc3QuYmFubmVyX3VybD09Jyc/IChsaXN0LmltYWdlX3VybHMrICdAUmVmZXJlcj0nKToobGlzdC5iYW5uZXJfdXJsKyAnQFJlZmVyZXI9JyksXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZGVzYzogJ+KAmOKAmOKAmeKAmTxzbWFsbD4nK2xpc3Quc3RhdHMudmlldysn55yL6L+HXFxcXHRcXFxcdCcrbGlzdC5zdGF0cy5saWtlKyfllpzmrKJcXFxcdFxcXFx0JytsaXN0LnN0YXRzLmZhdm9yaXRlKyfmlLbol49cXFxcbicgKyBwYnRpbWUrJzwvc21hbGw+JyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVybDogXFxcImhpa2VyOi8vcGFnZS9hcnRpY2xlRGV0YWlsXFxcIixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBleHRyYToge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIC8vIOS4k+agj+aWh+eroGlkXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWQ6IGxpc3QuaWRcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgfVxcblxcbn1cXG5cXG5zZXRSZXN1bHQoZCk7XFxuXFxuXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuJPmoI/mlofnq6BYNVwiLFwicGF0aFwiOlwiYXJ0aWNsZURldGFpbFwiLFwicnVsZVwiOlwianM6XFxuXFxudmFyIGQgPSBbXTtcXG5cXG5wYWdlID0gTVlfUEFHRTtcXG5cXG5jdmlkID0gTVlfUEFSQU1TLmlkICsgXFxcIlxcXCI7XFxuXFxuZC5wdXNoKHtcXG5cXG7CoCDCoCB1cmw6IFxcXCJodHRwczovL3d3dy5iaWxpYmlsaS5jb20vcmVhZC9jdlxcXCIrY3ZpZCxcXG5cXG7CoCDCoCBjb2xfdHlwZTogXFxcIng1X3dlYnZpZXdfc2luZ2xlXFxcIixcXG5cXG7CoCDCoCBkZXNjOiBcXFwiMTAwJSYmZmxvYXRcXFwiLFxcblxcbsKgIMKgIGV4dHJhOiB7XFxuXFxuwqAgwqAgwqAgwqAgY2FuQmFjazogdHJ1ZVxcblxcbsKgIMKgIH1cXG5cXG59KVxcblxcbnNldFJlc3VsdChkKTtcXG5cXG5cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue7vOWQiOeDremXqFwiLFwicGF0aFwiOlwiaG90VmlkZW9cIixcInJ1bGVcIjpcImxldCByZXMgPSBKU09OLnBhcnNlKHJlcXVlc3QoXFxcImh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2UvcG9wdWxhcj9wbj1cXFwiICsgTVlfUEFHRSwge1xcblxcbsKgIMKgIGhlYWRlcnM6IHtcXG5cXG7CoCDCoCDCoCDCoCBDb29raWU6IEpTT04ucGFyc2UocmVxdWVzdChcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9iaWxpLnR4dFxcXCIpKS5jb29raWVcXG5cXG7CoCDCoCB9XFxuXFxufSkpLmRhdGFcXG5cXG5yZXMubGlzdC5mb3JFYWNoKGl0ZW0gPT4ge1xcblxcbsKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgdGl0bGU6IGl0ZW0udGl0bGUsXFxuXFxuwqAgwqAgwqAgwqAgaW1nOiBpdGVtLnBpYysgXFxcIkBSZWZlcmVyPVxcXCIsXFxuXFxuwqAgwqAgwqAgwqAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL3ZpZGVvXFxcIixcXG5cXG7CoCDCoCDCoCDCoCBkZXNjOiBpdGVtLnB1Yl9sb2NhdGlvbixcXG5cXG7CoCDCoCDCoCDCoCBjb2xfdHlwZTogXFxcIm1vdmllXzJcXFwiLFxcblxcbsKgIMKgIMKgIMKgIGV4dHJhOiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgXFxcImFpZFxcXCI6IGl0ZW0uYWlkLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIFxcXCJjaWRcXFwiOiBpdGVtLmNpZCxcXG5cXG7CoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgfSlcXG5cXG59KVxcblxcblxcblwifV0sXCJwYXJhbXNcIjpcIntcXFwiYWlkXFxcIjo5ODUyNTc1NzAsXFxcImNpZFxcXCI6ODI1MzU2NTc0fVwiLFwic2F2ZWRcIjpmYWxzZSxcInRpdGxlXCI6XCLlk5Tlk6nlk5Tlk6lcIixcInZlcnNpb25cIjowLFwidXJsXCI6XCJoaWtlcjovL3BhZ2UvdmlkZW9cIixcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJmaW5kX3J1bGVcIjpcImpzOlxcblxcbnZhciBkID0gW107XFxuXFxuLy8g6aKE5aSE55CGXFxuXFxucHV0TXlWYXIoJ+WKn+iDveaKmOWPoCcsICflhbMnKTtcXG5cXG5pbWdMaW5rPXN0b3JhZ2UwLmdldE15VmFyKCflm77moIcnKTtcXG5cXG5haWQgPSBNWV9QQVJBTVMuYWlkICsgXFxcIlxcXCI7XFxuXFxubWlkID0gTVlfUEFSQU1TLm1pZCArIFxcXCJcXFwiO1xcblxcbnRyeSB7XFxuXFxuwqAgwqAgLy/ojrflj5bop4bpopHliIZQ5L+h5oGvXFxuXFxuwqAgwqAgdmFyIHAgPSBKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXc/YWlkPVxcXCIgKyBhaWQpKS5kYXRhO1xcblxcbsKgIMKgIGhhc0xpa2U9JC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcIikuaGFzTGlrZShhaWQpO1xcblxcbsKgIMKgIGhhc0Zhdm91cj0kLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9hcGlcXFwiKS5oYXNGYXZvdXIoYWlkKTtcXG5cXG7CoCDCoCBpZiAocC5wYWdlcy5sZW5ndGggPT0gMSkge1xcblxcbsKgIMKgIMKgIMKgIGNpZCA9IHAucGFnZXNbMF0uY2lkO1xcblxcbsKgIMKgIMKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IHAudGl0bGUsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgaW1nOiBwLnBpYyArICdAUmVmZXJlcj0nLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHVybDogJCgpLmxhenlSdWxlKChhaWQsIGNpZCwgcW4pID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAvLyDnnJ/nprvkuobkuKrlpKfosLHvvIzmmI7mmI7mm7/mjaLmjonkuobvvIx1YeWtl+espuS4suWPiOWPmOWbnuadpeS6hu+8jOWPiOimgeWkhOeQhuS4gOasoVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybiAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9hcGlcXFwiKS5iaWxpTGF6eShhaWQsIGNpZCwgcW4pLnJlcGxhY2UoLzsvZywgXFxcIu+8m++8m1xcXCIpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIH0sIGFpZCArIFxcXCJcXFwiLCBjaWQgKyBcXFwiXFxcIiwgJzExMicpLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiBcXFwicGljXzFcXFwiXFxuXFxuwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogJzxmb250IGNvbG9yPVxcXCJibHVlXFxcIj4nICsgcC5vd25lci5uYW1lICsgJzwvZm9udD4nLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHVybDogXFxcImhpa2VyOi8vcGFnZS91cEhvbWVcXFwiLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGltZzogcC5vd25lci5mYWNlICsgXFxcIkBSZWZlcmVyPVxcXCIsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6IFxcXCJhdmF0YXJcXFwiLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGV4dHJhOiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgbWlkOiBwLm93bmVyLm1pZCxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogcC5vd25lci5uYW1lLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGZhY2U6IHAub3duZXIuZmFjZVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCB9LHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ2xpbmUnXFxuXFxuwqAgwqAgwqAgwqAgfSx7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IHAuc3RhdC5saWtlLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGltZzogaGFzTGlrZT09MT9pbWdMaW5rLuW3sueCuei1njppbWdMaW5rLuacqueCuei1nixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB1cmw6ICQoJyNub0xvYWRpbmcjI25vSGlzdG9yeSMnKS5sYXp5UnVsZSgoYWlkKSA9PiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXCIpLmxpa2VMb2dpYyhhaWQpXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgfSwgYWlkKSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogXFxcImljb25fc21hbGxfNFxcXCIsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgZXh0cmE6e1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlkOidzZXRMaWtlJ1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCB9LHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogwqBwLnN0YXQuZmF2b3JpdGUsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgaW1nOiBoYXNGYXZvdXI/aW1nTGluay7lt7LmlLbol486aW1nTGluay7mnKrmlLbol48sXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiAkKCcjbm9Mb2FkaW5nIyNub0hpc3RvcnkjJykubGF6eVJ1bGUoKGFpZCkgPT4ge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVwTWlkPUpTT04ucGFyc2UocmVxdWVzdChcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9iaWxpLnR4dFxcXCIpKS51c2VyTWlkO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybiAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9hcGlcXFwiKS5mYXZvdXJMb2dpYyhhaWQsdXBNaWQpXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgfSwgYWlkKSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogXFxcImljb25fc21hbGxfNFxcXCIsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgZXh0cmE6e1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlkOidzZXRGYXZvdXInXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIMKgIMKgIH0se1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiAn56iN5ZCO5YaN55yLJyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBpbWc6IGltZ0xpbmsu56iN5ZCO5YaN55yLLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHVybDogJCgnI25vTG9hZGluZyMjbm9IaXN0b3J5IycpLmxhenlSdWxlKChhaWQpID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXR1cm4gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcIikuanVkZ2VUb3ZpZXcoYWlkKVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIH0sIGFpZCksXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6IFxcXCJpY29uX3NtYWxsXzRcXFwiLFxcblxcbsKgIMKgIMKgIMKgIH0sIHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogJ+afpeeci+ivhOiuuicsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiAnaGlrZXI6Ly9wYWdlL0NvbW1lbnRzP3A9ZnlwYWdlJyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBpbWc6IGltZ0xpbmsu5p+l55yL6K+E6K66LFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiBcXFwiaWNvbl9zbWFsbF80XFxcIixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBleHRyYToge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIFxcXCJpZFxcXCI6IGFpZCxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBcXFwidHlwZVxcXCI6MVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCB9LHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnXFxuXFxuwqAgwqAgwqAgwqAgfSx7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IHAuZGVzYyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogXFxcImxvbmdfdGV4dFxcXCIsXFxuXFxuwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgfSBlbHNlIHtcXG5cXG7CoCDCoCDCoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBwLnRpdGxlLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGltZzpwLnBpYyArICdAUmVmZXJlcj0nLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHVybDogJCgnI25vTG9hZGluZyMjbm9IaXN0b3J5IycpLmxhenlSdWxlKChwKSA9PiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuICQoJ2hpa2VyOi8vZW1wdHk/ZnlwYWdlJykucnVsZSgocCkgPT4ge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGQgPSBbXTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBwLmRlc2MsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6IFxcXCJsb25nX3RleHRcXFwiLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgc2V0UmVzdWx0KGQpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0sIHApXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgfSwgcCksXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6IFxcXCJwaWNfMVxcXCJcXG5cXG7CoCDCoCDCoCDCoCB9LHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogJzxmb250IGNvbG9yPVxcXCJibHVlXFxcIj4nICsgcC5vd25lci5uYW1lICsgJzwvZm9udD4nLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHVybDogXFxcImhpa2VyOi8vcGFnZS91cEhvbWVcXFwiLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGltZzogcC5vd25lci5mYWNlICsgXFxcIkBSZWZlcmVyPVxcXCIsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6IFxcXCJhdmF0YXJcXFwiLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGV4dHJhOiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgbWlkOiBwLm93bmVyLm1pZCxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogcC5vd25lci5uYW1lLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGZhY2U6IHAub3duZXIuZmFjZVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCB9LHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ2xpbmUnXFxuXFxuwqAgwqAgwqAgwqAgfSx7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IHAuc3RhdC5saWtlLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGltZzogaGFzTGlrZT09MT9pbWdMaW5rLuW3sueCuei1njppbWdMaW5rLuacqueCuei1nixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB1cmw6ICQoJyNub0xvYWRpbmcjI25vSGlzdG9yeSMnKS5sYXp5UnVsZSgoYWlkKSA9PiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXCIpLmxpa2VMb2dpYyhhaWQpXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgfSwgYWlkKSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogXFxcImljb25fc21hbGxfNFxcXCIsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgZXh0cmE6e1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlkOidzZXRMaWtlJ1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCB9LHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogcC5zdGF0LmZhdm9yaXRlLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGltZzogaGFzRmF2b3VyP2ltZ0xpbmsu5bey5pS26JePOmltZ0xpbmsu5pyq5pS26JePLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHVybDogJCgnI25vTG9hZGluZyMjbm9IaXN0b3J5IycpLmxhenlSdWxlKChhaWQpID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB1cE1pZD1KU09OLnBhcnNlKHJlcXVlc3QoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvY3kvYmlsaS50eHRcXFwiKSkudXNlck1pZDtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXR1cm4gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcIikuZmF2b3VyTG9naWMoYWlkLHVwTWlkKVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIH0sIGFpZCksXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6IFxcXCJpY29uX3NtYWxsXzRcXFwiLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGV4dHJhOntcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZDonc2V0RmF2b3VyJ1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCB9LHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogJ+eojeWQjuWGjeeciycsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgaW1nOiBpbWdMaW5rLueojeWQjuWGjeeciyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB1cmw6ICQoJyNub0xvYWRpbmcjI25vSGlzdG9yeSMnKS5sYXp5UnVsZSgoYWlkKSA9PiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXCIpLmp1ZGdlVG92aWV3KGFpZClcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB9LCBhaWQpLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiBcXFwiaWNvbl9zbWFsbF80XFxcIixcXG5cXG7CoCDCoCDCoCDCoCB9LCB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6ICfmn6XnnIvor4TorronLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHVybDogJ2hpa2VyOi8vcGFnZS9Db21tZW50cz9wPWZ5cGFnZScsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgaW1nOiBpbWdMaW5rLuafpeeci+ivhOiuuixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogXFxcImljb25fc21hbGxfNFxcXCIsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgZXh0cmE6IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBcXFwiaWRcXFwiOiBhaWQsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgXFxcInR5cGVcXFwiOjFcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgfSlcXG5cXG7CoCDCoCDCoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXG5cXG7CoCDCoCDCoCDCoCB9LHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogJ+mAiembhuWIl+ihqFxcXFx0XFxcXHRcXFxcdDxzbWFsbD48c21hbGw+5YWxJytwLnZpZGVvcysn5p2h6KeG6aKRPC9zbWFsbD48L3NtYWxsPicsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCIsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgaW1nOiBpbWdMaW5rLuWIl+ihqCxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogXFxcImF2YXRhclxcXCIsXFxuXFxuwqAgwqAgwqAgwqAgfSx7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdsaW5lJ1xcblxcbsKgIMKgIMKgIMKgIH0pO1xcblxcbsKgIMKgIMKgIMKgIHAucGFnZXMuZm9yRWFjaChpdGVtID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBjaWQgPSBpdGVtLmNpZDtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBpdGVtLnBhcnQsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiAkKCkubGF6eVJ1bGUoKGFpZCwgY2lkLCBxbikgPT4ge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybiAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9hcGlcXFwiKS5iaWxpTGF6eShhaWQsIGNpZCwgcW4pLnJlcGxhY2UoLzsvZywgXFxcIu+8m++8m1xcXCIpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0sIGFpZCArIFxcXCJcXFwiLCBjaWQgKyBcXFwiXFxcIiwgJzExMicpLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiBcXFwidGV4dF8xXFxcIlxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIH0pXFxuXFxuwqAgwqAgwqAgwqAgfSlcXG5cXG7CoCDCoCB9XFxuXFxufSBjYXRjaCAoZSkge1xcblxcbsKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgdGl0bGU6ICfpobXpnaLotbDkuKLkuoYuLi4nLFxcblxcbsKgIMKgIMKgIMKgIGltZzogJ2h0dHBzOi8vaTAuaGRzbGIuY29tL2Jmcy9nZW5lcmFsL2Y3YjY2NzAxMWE0NjYxNTczMmM3MDFmNGJiMWQwN2Y3OTNmOGQxZGYucG5nQFJlZmVyZXI9JyxcXG5cXG7CoCDCoCDCoCDCoCB1cmw6ICdoaWtlcjovL2VtcHR5JyxcXG5cXG7CoCDCoCDCoCDCoCBkZXNjOiAn5aSn5qaC546H6KeG6aKR6KKr5bCB56aB77yM5oiW6ICFdXDlt7Lot5Hot69+JyxcXG5cXG7CoCDCoCDCoCDCoCBjb2xfdHlwZTogXFxcInBpY18xXFxcIlxcblxcbsKgIMKgIH0pO1xcblxcbn1cXG5cXG5zZXRSZXN1bHQoZCk7XFxuXFxuXFxuXCIsXCJncm91cFwiOlwiXCIsXCJ1YVwiOlwicGNcIixcInByZVJ1bGVcIjpcImpzOlxcblxcbi8vIOWbvueJh+mihOWkhOeQhlxcblxcbmltZ0xvY2F0aW9uID0ge1xcblxcbsKgIMKgIFxcXCLlt7LmlLbol49cXFwiOiAnaHR0cHM6Ly9zMS4zMjg4ODgueHl6LzIwMjIvMDkvMjYvVnBUZnkucG5nQFJlZmVyZXI9JyxcXG5cXG7CoCDCoCBcXFwi5pyq5pS26JePXFxcIjogJ2h0dHBzOi8vczEuMzI4ODg4Lnh5ei8yMDIyLzA5LzI2L1ZxcEs3LnBuZ0BSZWZlcmVyPScsXFxuXFxuwqAgwqAgXFxcIueojeWQjuWGjeeci1xcXCI6ICdodHRwczovL3MxLjMyODg4OC54eXovMjAyMi8wOS8yNi9WcGhuQy5wbmdAUmVmZXJlcj0nLFxcblxcbsKgIMKgIFxcXCLmnKrngrnotZ5cXFwiOiAnaHR0cHM6Ly9zMS4zMjg4ODgueHl6LzIwMjIvMDkvMjYvVnBiMlUucG5nQFJlZmVyZXI9JyxcXG5cXG7CoCDCoCBcXFwi5bey54K56LWeXFxcIjogJ2h0dHBzOi8vczEuMzI4ODg4Lnh5ei8yMDIyLzA5LzI2L1ZwMGQ1LnBuZ0BSZWZlcmVyPScsXFxuXFxuwqAgwqAgXFxcIua3u+WKoOWFs+azqFxcXCI6ICdodHRwczovL3MxLjMyODg4OC54eXovMjAyMi8wOS8yNi9WcENtUi5wbmdAUmVmZXJlcj0nLFxcblxcbsKgIMKgIFxcXCLlt7LlhbPms6hcXFwiOiAnaHR0cHM6Ly9zMS4zMjg4ODgueHl6LzIwMjIvMDkvMjYvVnFZTkUucG5nQFJlZmVyZXI9JyxcXG5cXG7CoCDCoCBcXFwi5LiT5qCPXFxcIjogJ2h0dHBzOi8vczEuMzI4ODg4Lnh5ei8yMDIyLzA5LzI2L1Zwd3JCLnBuZ0BSZWZlcmVyPScsXFxuXFxuwqAgwqAgXFxcIuafpeeci+ivhOiuulxcXCI6ICdodHRwczovL3MxLjMyODg4OC54eXovMjAyMi8wOS8yNi9WcHpJcy5wbmdAUmVmZXJlcj0nLFxcblxcbsKgIMKgIFxcXCLlkajovrlcXFwiOiAnaHR0cHM6Ly9zMS4zMjg4ODgueHl6LzIwMjIvMDkvMjYvVnBobkMucG5nQFJlZmVyZXI9JyxcXG5cXG7CoCDCoCBcXFwi5Y+M6L65XFxcIjogJ2h0dHBzOi8vczEuMzI4ODg4Lnh5ei8yMDIyLzA5LzI2L1ZwcXc1LnBuZ0BSZWZlcmVyPScsXFxuXFxuwqAgwqAgXFxcIuWIl+ihqFxcXCI6ICdodHRwczovL3MxLjMyODg4OC54eXovMjAyMi8wOS8yNi9WcEh2Uy5wbmdAUmVmZXJlcj0nLFxcblxcbsKgIMKgIFxcXCLorqLpmIVcXFwiOiAnaHR0cHM6Ly9zMS4zMjg4ODgueHl6LzIwMjIvMDkvMjYvVnBYOE4ucG5nQFJlZmVyZXI9JyxcXG5cXG7CoCDCoCBcXFwi5pel5Y6GXFxcIjogJ2h0dHBzOi8vczEuMzI4ODg4Lnh5ei8yMDIyLzA5LzI2L1ZxM0d3LnBuZ0BSZWZlcmVyPScsXFxuXFxuwqAgwqAgXFxcIuWKqOaAgVxcXCI6ICdodHRwczovL3MxLjMyODg4OC54eXovMjAyMi8wOS8yNi9WQUt1eS5wbmdAUmVmZXJlcj0nXFxuXFxufVxcblxcbnN0b3JhZ2UwLnB1dE15VmFyKCflm77moIcnLCBpbWdMb2NhdGlvbik7XFxuXFxuLy8g5aSn5Lya5ZGY5Y+v5Lul5bCd6K+V5pS55Li6U1ZJUFxcblxcbnB1dE15VmFyKCdhdXRob3JpdHknLCdub3JtYWwnKTtcXG5cXG5cIixcInBhZ2VzXCI6XCJbe1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi5YiG57G754mH5bqTXFxcIixcXFwicGF0aFxcXCI6XFxcInZhdWx0XFxcIixcXFwicnVsZVxcXCI6XFxcIumhtumDqOWkp+exuyA9IFsn5Zu95YibJywgJ+eUteinhicsICfnuqrlvZXniYcnLCAn57u86Im6JywgJ+eVquWJpycsICfnlLXlvbEnXVxcXFxuXFxcXG5pZiAocGFnZSA9PSAxKSB7XFxcXG5cXFxcbsKgIMKgIC8vIOaKmOWPoOW8gOWFs1xcXFxuXFxcXG7CoCDCoCBkLnB1c2goe1xcXFxuXFxcXG7CoCDCoCDCoCDCoCB0aXRsZTogZ2V0TXlWYXIoJ+aKmOWPoCcsICflhbMnKSA9PSAn5YWzJyA/ICfigJzigJzigJ3igJ08Yj48c3BhbiBzdHlsZT1cXFxcXFxcImNvbG9yOiAjRkYwMDAwXFxcXFxcXCI+4oioPC9zcGFuPjwvYj4nIDogJ+KAnOKAnOKAneKAnTxiPjxzcGFuIHN0eWxlPVxcXFxcXFwiY29sb3I6ICMxYWFkMTlcXFxcXFxcIj7iiKc8L3NwYW4+PC9iPicsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIGlmIChnZXRNeVZhcign5oqY5Y+gJywgJ+WFsycpID09ICflvIAnKSB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHB1dE15VmFyKCfmipjlj6AnLCAn5YWzJyk7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIH0gZWxzZSB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHB1dE15VmFyKCfmipjlj6AnLCAn5byAJyk7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIH1cXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIHJldHVybiBcXFxcXFxcImhpa2VyOi8vZW1wdHlcXFxcXFxcIjtcXFxcblxcXFxuwqAgwqAgwqAgwqAgfSksXFxcXG5cXFxcbsKgIMKgIMKgIMKgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbicsXFxcXG5cXFxcbsKgIMKgIH0pXFxcXG5cXFxcbsKgIMKgIOmhtumDqOWkp+exuy5mb3JFYWNoKGxpID0+IHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgZC5wdXNoKHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IGxpID09IGdldE15VmFyKCflpKfnsbsnLCAn5Zu95YibJykgPyAn4oCc4oCc4oCd4oCdPGI+PGZvbnQgY29sb3I9IzFhYWQxOT4nICsgbGkgKyAnPC9mb250PjwvYj4nIDogbGksXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgobGkpID0+IHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcHV0TXlWYXIoJ+Wkp+exuycsIGxpKTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybiBcXFxcXFxcImhpa2VyOi8vZW1wdHlcXFxcXFxcIjtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgfSwgbGkpLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCB9KVxcXFxuXFxcXG7CoCDCoCB9KTtcXFxcblxcXFxuwqAgwqAgZC5wdXNoKHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdibGFua19ibG9jaydcXFxcblxcXFxuwqAgwqAgfSlcXFxcblxcXFxufVxcXFxuXFxcXG4vLyDpobbpg6jliIbnsbvlj4LmlbDmmKDlsIRcXFxcblxcXFxuc3dpdGNoIChnZXRNeVZhcign5aSn57G7JywgJ+WbveWImycpKSB7XFxcXG5cXFxcbsKgIMKgIGNhc2UgJ+WbveWImyc6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHNlYXNvblR5cGUgPSA0O1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBpZiAoZ2V0TXlWYXIoJ+aKmOWPoCcsICflhbMnKSA9PSAn5byAJykge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCBpZiAocGFnZSA9PSAxKSB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGh0bWwgPSBmZXRjaCgnaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL2d1b2NodWFuZy9pbmRleCcpO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDliIbnsbvliJfooaggPSBwZGZhKGh0bWwsICcuZmlsdGVyLWxpc3QmJi5maWx0ZXItYmxvY2snKTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg5YiG57G75YiX6KGoLmZvckVhY2godWwgPT4ge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDnrZvpgInmnaHku7YgPSBwZGZoKHVsLCAnLmZpbHRlci1uYW1lJiZUZXh0Jyk7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIOWtkOWIhuexu+WIl+ihqCA9IHBkZmEodWwsICd1bCYmbGknKTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg5a2Q5YiG57G75YiX6KGoLmZvckVhY2gobGkgPT4ge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZiAocGRmaChsaSwgJ2xpJiZUZXh0JykgPT0gJ+WFtuS7licpIHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGQucHVzaCh7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBnZXRNeVZhcijnrZvpgInmnaHku7YsICflhajpg6gnKSA9PSBwZGZoKGxpLCAnbGkmJlRleHQnKSA/ICfigJzigJzigJ3igJ08Yj48Zm9udCBjb2xvcj0jMWFhZDE5PicgKyBwZGZoKGxpLCAnbGkmJlRleHQnKSArICc8L2ZvbnQ+PC9iPicgOiBwZGZoKGxpLCAnbGkmJlRleHQnKSxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChsaSwg562b6YCJ5p2h5Lu2KSA9PiB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHB1dE15VmFyKOetm+mAieadoeS7tiwgcGRmaChsaSwgJ2xpJiZUZXh0JykpO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZWZyZXNoUGFnZSh0cnVlKTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuIFxcXFxcXFwiaGlrZXI6Ly9lbXB0eVxcXFxcXFwiO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9LCBsaSwg562b6YCJ5p2h5Lu2KSxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KVxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZC5wdXNoKHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdibGFua19ibG9jaydcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSlcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIH1cXFxcblxcXFxuwqAgwqAgwqAgwqAgfVxcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgY2FzZSAn55S16KeGJzpcXFxcblxcXFxuwqAgwqAgwqAgwqAgc2Vhc29uVHlwZSA9IDU7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGlmIChnZXRNeVZhcign5oqY5Y+gJywgJ+WFsycpID09ICflvIAnKSB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIGlmIChwYWdlID09IDEpIHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaHRtbCA9IGZldGNoKCdodHRwczovL3d3dy5iaWxpYmlsaS5jb20vdHYvaW5kZXgnKTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg5YiG57G75YiX6KGoID0gcGRmYShodG1sLCAnLmZpbHRlci1saXN0JiYuZmlsdGVyLWJsb2NrJyk7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIOWIhuexu+WIl+ihqC5mb3JFYWNoKHVsID0+IHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg562b6YCJ5p2h5Lu2ID0gcGRmaCh1bCwgJy5maWx0ZXItbmFtZSYmVGV4dCcpO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDlrZDliIbnsbvliJfooaggPSBwZGZhKHVsLCAndWwmJmxpJyk7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIOWtkOWIhuexu+WIl+ihqC5mb3JFYWNoKGxpID0+IHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKHBkZmgobGksICdsaSYmVGV4dCcpID09ICflhbbku5YnKSB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybjtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfVxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkLnB1c2goe1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogZ2V0TXlWYXIo562b6YCJ5p2h5Lu2LCAn5YWo6YOoJykgPT0gcGRmaChsaSwgJ2xpJiZUZXh0JykgPyAn4oCc4oCc4oCd4oCdPGI+PGZvbnQgY29sb3I9IzFhYWQxOT4nICsgcGRmaChsaSwgJ2xpJiZUZXh0JykgKyAnPC9mb250PjwvYj4nIDogcGRmaChsaSwgJ2xpJiZUZXh0JyksXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgobGksIOetm+mAieadoeS7tikgPT4ge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBwdXRNeVZhcijnrZvpgInmnaHku7YsIHBkZmgobGksICdsaSYmVGV4dCcpKTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybiBcXFxcXFxcImhpa2VyOi8vZW1wdHlcXFxcXFxcIjtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSwgbGksIOetm+mAieadoeS7tiksXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSlcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGQucHVzaCh7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiAnYmxhbmtfYmxvY2snXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCB9XFxcXG5cXFxcbsKgIMKgIMKgIMKgIH1cXFxcblxcXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxcXG5cXFxcbsKgIMKgIGNhc2UgJ+e6quW9leeJhyc6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHNlYXNvblR5cGUgPSAzO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBpZiAoZ2V0TXlWYXIoJ+aKmOWPoCcsICflhbMnKSA9PSAn5byAJykge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCBpZiAocGFnZSA9PSAxKSB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGh0bWwgPSBmZXRjaCgnaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL2RvY3VtZW50YXJ5L2luZGV4LycpO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDliIbnsbvliJfooaggPSBwZGZhKGh0bWwsICcuZmlsdGVyLWxpc3QmJi5maWx0ZXItYmxvY2snKTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg5YiG57G75YiX6KGoLmZvckVhY2godWwgPT4ge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDnrZvpgInmnaHku7YgPSBwZGZoKHVsLCAnLmZpbHRlci1uYW1lJiZUZXh0Jyk7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIOWtkOWIhuexu+WIl+ihqCA9IHBkZmEodWwsICd1bCYmbGknKTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg5a2Q5YiG57G75YiX6KGoLmZvckVhY2gobGkgPT4ge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZiAocGRmaChsaSwgJ2xpJiZUZXh0JykgPT0gJ+WFtuS7licpIHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGQucHVzaCh7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBnZXRNeVZhcijnrZvpgInmnaHku7YsICflhajpg6gnKSA9PSBwZGZoKGxpLCAnbGkmJlRleHQnKSA/ICfigJzigJzigJ3igJ08Yj48Zm9udCBjb2xvcj0jMWFhZDE5PicgKyBwZGZoKGxpLCAnbGkmJlRleHQnKSArICc8L2ZvbnQ+PC9iPicgOiBwZGZoKGxpLCAnbGkmJlRleHQnKSxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChsaSwg562b6YCJ5p2h5Lu2KSA9PiB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHB1dE15VmFyKOetm+mAieadoeS7tiwgcGRmaChsaSwgJ2xpJiZUZXh0JykpO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZWZyZXNoUGFnZSh0cnVlKTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuIFxcXFxcXFwiaGlrZXI6Ly9lbXB0eVxcXFxcXFwiO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9LCBsaSwg562b6YCJ5p2h5Lu2KSxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KVxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZC5wdXNoKHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdibGFua19ibG9jaydcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSlcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIH1cXFxcblxcXFxuwqAgwqAgwqAgwqAgfVxcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgY2FzZSAn57u86Im6JzpcXFxcblxcXFxuwqAgwqAgwqAgwqAgc2Vhc29uVHlwZSA9IDc7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGlmIChnZXRNeVZhcign5oqY5Y+gJywgJ+WFsycpID09ICflvIAnKSB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIGlmIChwYWdlID09IDEpIHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaHRtbCA9IGZldGNoKCdodHRwczovL3d3dy5iaWxpYmlsaS5jb20vdmFyaWV0eS9pbmRleCcpO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDliIbnsbvliJfooaggPSBwZGZhKGh0bWwsICcuZmlsdGVyLWxpc3QmJi5maWx0ZXItYmxvY2snKTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg5YiG57G75YiX6KGoLmZvckVhY2godWwgPT4ge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDnrZvpgInmnaHku7YgPSBwZGZoKHVsLCAnLmZpbHRlci1uYW1lJiZUZXh0Jyk7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIOWtkOWIhuexu+WIl+ihqCA9IHBkZmEodWwsICd1bCYmbGknKTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg5a2Q5YiG57G75YiX6KGoLmZvckVhY2gobGkgPT4ge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZiAocGRmaChsaSwgJ2xpJiZUZXh0JykgPT0gJ+WFtuS7licpIHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGQucHVzaCh7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBnZXRNeVZhcijnrZvpgInmnaHku7YsICflhajpg6gnKSA9PSBwZGZoKGxpLCAnbGkmJlRleHQnKSA/ICfigJzigJzigJ3igJ08Yj48Zm9udCBjb2xvcj0jMWFhZDE5PicgKyBwZGZoKGxpLCAnbGkmJlRleHQnKSArICc8L2ZvbnQ+PC9iPicgOiBwZGZoKGxpLCAnbGkmJlRleHQnKSxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChsaSwg562b6YCJ5p2h5Lu2KSA9PiB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHB1dE15VmFyKOetm+mAieadoeS7tiwgcGRmaChsaSwgJ2xpJiZUZXh0JykpO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZWZyZXNoUGFnZSh0cnVlKTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuIFxcXFxcXFwiaGlrZXI6Ly9lbXB0eVxcXFxcXFwiO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9LCBsaSwg562b6YCJ5p2h5Lu2KSxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KVxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZC5wdXNoKHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdibGFua19ibG9jaydcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSlcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIH1cXFxcblxcXFxuwqAgwqAgwqAgwqAgfVxcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgY2FzZSAn55Wq5YmnJzpcXFxcblxcXFxuwqAgwqAgwqAgwqAgc2Vhc29uVHlwZSA9IDE7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGlmIChnZXRNeVZhcign5oqY5Y+gJywgJ+WFsycpID09ICflvIAnKSB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIGlmIChwYWdlID09IDEpIHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaHRtbCA9IGZldGNoKCdodHRwczovL3d3dy5iaWxpYmlsaS5jb20vYW5pbWUvaW5kZXgnKTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg5YiG57G75YiX6KGoID0gcGRmYShodG1sLCAnLmZpbHRlci1saXN0JiYuZmlsdGVyLWJsb2NrJyk7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIOWIhuexu+WIl+ihqC5mb3JFYWNoKHVsID0+IHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg562b6YCJ5p2h5Lu2ID0gcGRmaCh1bCwgJy5maWx0ZXItbmFtZSYmVGV4dCcpO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDlrZDliIbnsbvliJfooaggPSBwZGZhKHVsLCAndWwmJmxpJyk7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIOWtkOWIhuexu+WIl+ihqC5mb3JFYWNoKGxpID0+IHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKHBkZmgobGksICdsaSYmVGV4dCcpID09ICflhbbku5YnKSB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybjtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfVxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkLnB1c2goe1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogZ2V0TXlWYXIo562b6YCJ5p2h5Lu2LCAn5YWo6YOoJykgPT0gcGRmaChsaSwgJ2xpJiZUZXh0JykgPyAn4oCc4oCc4oCd4oCdPGI+PGZvbnQgY29sb3I9IzFhYWQxOT4nICsgcGRmaChsaSwgJ2xpJiZUZXh0JykgKyAnPC9mb250PjwvYj4nIDogcGRmaChsaSwgJ2xpJiZUZXh0JyksXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgobGksIOetm+mAieadoeS7tikgPT4ge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBwdXRNeVZhcijnrZvpgInmnaHku7YsIHBkZmgobGksICdsaSYmVGV4dCcpKTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybiBcXFxcXFxcImhpa2VyOi8vZW1wdHlcXFxcXFxcIjtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSwgbGksIOetm+mAieadoeS7tiksXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSlcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGQucHVzaCh7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiAnYmxhbmtfYmxvY2snXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCB9XFxcXG5cXFxcbsKgIMKgIMKgIMKgIH1cXFxcblxcXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxcXG5cXFxcbsKgIMKgIGNhc2UgJ+eUteW9sSc6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHNlYXNvblR5cGUgPSAyO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBpZiAoZ2V0TXlWYXIoJ+aKmOWPoCcsICflhbMnKSA9PSAn5byAJykge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCBpZiAocGFnZSA9PSAxKSB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGh0bWwgPSBmZXRjaCgnaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL21vdmllL2luZGV4Jyk7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIOWIhuexu+WIl+ihqCA9IHBkZmEoaHRtbCwgJy5maWx0ZXItbGlzdCYmLmZpbHRlci1ibG9jaycpO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDliIbnsbvliJfooaguZm9yRWFjaCh1bCA9PiB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIOetm+mAieadoeS7tiA9IHBkZmgodWwsICcuZmlsdGVyLW5hbWUmJlRleHQnKTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg5a2Q5YiG57G75YiX6KGoID0gcGRmYSh1bCwgJ3VsJiZsaScpO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDlrZDliIbnsbvliJfooaguZm9yRWFjaChsaSA9PiB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlmIChwZGZoKGxpLCAnbGkmJlRleHQnKSA9PSAn5YW25LuWJykge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXR1cm47XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH1cXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZC5wdXNoKHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IGdldE15VmFyKOetm+mAieadoeS7tiwgJ+WFqOmDqCcpID09IHBkZmgobGksICdsaSYmVGV4dCcpID8gJ+KAnOKAnOKAneKAnTxiPjxmb250IGNvbG9yPSMxYWFkMTk+JyArIHBkZmgobGksICdsaSYmVGV4dCcpICsgJzwvZm9udD48L2I+JyA6IHBkZmgobGksICdsaSYmVGV4dCcpLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKGxpLCDnrZvpgInmnaHku7YpID0+IHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcHV0TXlWYXIo562b6YCJ5p2h5Lu2LCBwZGZoKGxpLCAnbGkmJlRleHQnKSk7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJlZnJlc2hQYWdlKHRydWUpO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXR1cm4gXFxcXFxcXCJoaWtlcjovL2VtcHR5XFxcXFxcXCI7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0sIGxpLCDnrZvpgInmnaHku7YpLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkLnB1c2goe1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ2JsYW5rX2Jsb2NrJ1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KVxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgfVxcXFxuXFxcXG7CoCDCoCDCoCDCoCB9XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcXFxuXFxcXG7CoCDCoCBkZWZhdWx0OlxcXFxuXFxcXG7CoCDCoCDCoCDCoCBzZWFzb25UeXBlID0gNDtcXFxcblxcXFxuwqAgwqAgwqAgwqAgaWYgKGdldE15VmFyKCfmipjlj6AnLCAn5YWzJykgPT0gJ+W8gCcpIHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgaWYgKHBhZ2UgPT0gMSkge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBodG1sID0gZmV0Y2goJ2h0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS9hbmltZS9pbmRleCcpO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDliIbnsbvliJfooaggPSBwZGZhKGh0bWwsICcuZmlsdGVyLWxpc3QmJi5maWx0ZXItYmxvY2snKTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg5YiG57G75YiX6KGoLmZvckVhY2godWwgPT4ge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDnrZvpgInmnaHku7YgPSBwZGZoKHVsLCAnLmZpbHRlci1uYW1lJiZUZXh0Jyk7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIOWtkOWIhuexu+WIl+ihqCA9IHBkZmEodWwsICd1bCYmbGknKTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg5a2Q5YiG57G75YiX6KGoLmZvckVhY2gobGkgPT4ge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZiAocGRmaChsaSwgJ2xpJiZUZXh0JykgPT0gJ+WFtuS7licpIHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGQucHVzaCh7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBnZXRNeVZhcijnrZvpgInmnaHku7YsICflhajpg6gnKSA9PSBwZGZoKGxpLCAnbGkmJlRleHQnKSA/ICfigJzigJzigJ3igJ08Yj48Zm9udCBjb2xvcj0jMWFhZDE5PicgKyBwZGZoKGxpLCAnbGkmJlRleHQnKSArICc8L2ZvbnQ+PC9iPicgOiBwZGZoKGxpLCAnbGkmJlRleHQnKSxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChsaSwg562b6YCJ5p2h5Lu2KSA9PiB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHB1dE15VmFyKOetm+mAieadoeS7tiwgcGRmaChsaSwgJ2xpJiZUZXh0JykpO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZWZyZXNoUGFnZSh0cnVlKTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuIFxcXFxcXFwiaGlrZXI6Ly9lbXB0eVxcXFxcXFwiO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9LCBsaSwg562b6YCJ5p2h5Lu2KSxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KVxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZC5wdXNoKHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdibGFua19ibG9jaydcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSlcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIH1cXFxcblxcXFxuwqAgwqAgwqAgwqAgfVxcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxufVxcXFxuXFxcXG4vLyDlrZDliIbnsbvlj4LmlbDmmKDlsIRcXFxcblxcXFxuc3dpdGNoIChnZXRNeVZhcign57G75Z6LJywgJ+WFqOmDqCcpKSB7XFxcXG5cXFxcbsKgIMKgIGNhc2UgJ+ato+eJhyc6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHNlYXNvbl92ZXJzaW9uID0gMTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxcXG5cXFxcbsKgIMKgIGNhc2UgJ+eUteW9sSc6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHNlYXNvbl92ZXJzaW9uID0gMjtcXFxcblxcXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxcXG5cXFxcbsKgIMKgIGNhc2UgJ+WFtuS7lic6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHNlYXNvbl92ZXJzaW9uID0gMztcXFxcblxcXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxcXG5cXFxcbsKgIMKgIGRlZmF1bHQ6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHNlYXNvbl92ZXJzaW9uID0gLTE7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcXFxuXFxcXG59XFxcXG5cXFxcbnN3aXRjaCAoZ2V0TXlWYXIoJ+mFjemfsycsICflhajpg6gnKSkge1xcXFxuXFxcXG7CoCDCoCBjYXNlICfljp/lo7AnOlxcXFxuXFxcXG7CoCDCoCDCoCDCoCBzcG9rZW5fbGFuZ3VhZ2VfdHlwZSA9IDE7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcXFxuXFxcXG7CoCDCoCBjYXNlICfkuK3mlofphY3pn7MnOlxcXFxuXFxcXG7CoCDCoCDCoCDCoCBzcG9rZW5fbGFuZ3VhZ2VfdHlwZSA9IDI7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcXFxuXFxcXG7CoCDCoCBkZWZhdWx0OlxcXFxuXFxcXG7CoCDCoCDCoCDCoCBzcG9rZW5fbGFuZ3VhZ2VfdHlwZSA9IC0xO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxufVxcXFxuXFxcXG5zd2l0Y2ggKGdldE15VmFyKCflnLDljLonLCAn5YWo6YOoJykpIHtcXFxcblxcXFxuwqAgwqAgY2FzZSAn5Lit5Zu95aSn6ZmGJzpcXFxcblxcXFxuwqAgwqAgwqAgwqAgYXJlYSA9IDE7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcXFxuXFxcXG7CoCDCoCBjYXNlICfml6XmnKwnOlxcXFxuXFxcXG7CoCDCoCDCoCDCoCBhcmVhID0gMjtcXFxcblxcXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxcXG5cXFxcbsKgIMKgIGNhc2UgJ+e+juWbvSc6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGFyZWEgPSAzO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgY2FzZSAn6Iux5Zu9JzpcXFxcblxcXFxuwqAgwqAgwqAgwqAgYXJlYSA9IDQ7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcXFxuXFxcXG7CoCDCoCBjYXNlICfkuK3lm73muK/lj7AnOlxcXFxuXFxcXG7CoCDCoCDCoCDCoCBhcmVhID0gWzYsIDddO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgY2FzZSAn6Z+p5Zu9JzpcXFxcblxcXFxuwqAgwqAgwqAgwqAgYXJlYSA9IDg7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcXFxuXFxcXG7CoCDCoCBjYXNlICfms5Xlm70nOlxcXFxuXFxcXG7CoCDCoCDCoCDCoCBhcmVhID0gOTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxcXG5cXFxcbsKgIMKgIGNhc2UgJ+azsOWbvSc6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGFyZWEgPSAxMDtcXFxcblxcXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxcXG5cXFxcbsKgIMKgIGNhc2UgJ+ilv+ePreeJmSc6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGFyZWEgPSAxMztcXFxcblxcXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxcXG5cXFxcbsKgIMKgIGNhc2UgJ+W+t+WbvSc6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGFyZWEgPSAxNTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxcXG5cXFxcbsKgIMKgIGNhc2UgJ+aEj+Wkp+WIqSc6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGFyZWEgPSAzNTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxcXG5cXFxcbsKgIMKgIGNhc2UgJ+WFtuS7lic6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIC8vIOWPquaYr+eVquWJp+eahOaDheWGtV/lhbE1Ne+8jOimgeWHj+WOu+WHuueOsOeahOKAlOKAlOeul+S6hu+8jOebtOaOpeWcqOWKqOaAgeWIhuexu+eahOaXtuWAmeWOu+aOieS6hlxcXFxuXFxcXG7CoCDCoCDCoCDCoCBhcmVhID0gWzEsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxNywgMTgsIDE5LCAyMCwgMjEsIDIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4LCAyOSwgMzAsIDMxLCAzMiwgMzMsIDM0LCAzNSwgMzYsIDM3LCAzOCwgMzksIDQwLCA0MSwgNDIsIDQzLCA0NCwgNDUsIDQ2LCA0NywgNDgsIDQ5LCA1MCwgNTEsIDUyLCA1MywgNTQsIDU1XTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxcXG5cXFxcbsKgIMKgIGRlZmF1bHQ6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGFyZWEgPSAtMTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxcXG5cXFxcbn1cXFxcblxcXFxuc3dpdGNoIChnZXRNeVZhcign54q25oCBJywgJ+WFqOmDqCcpKSB7XFxcXG5cXFxcbsKgIMKgIGNhc2UgJ+WujOe7kyc6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGlzX2ZpbmlzaCA9IDE7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcXFxuXFxcXG7CoCDCoCBjYXNlICfov57ovb0nOlxcXFxuXFxcXG7CoCDCoCDCoCDCoCBpc19maW5pc2ggPSAwO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgZGVmYXVsdDpcXFxcblxcXFxuwqAgwqAgwqAgwqAgaXNfZmluaXNoID0gLTE7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcXFxuXFxcXG59XFxcXG5cXFxcbnN3aXRjaCAoZ2V0TXlWYXIoJ+WHuuWTgScsICflhajpg6gnKSkge1xcXFxuXFxcXG7CoCDCoCBjYXNlICflpK7op4YnOlxcXFxuXFxcXG7CoCDCoCDCoCDCoCBwcm9kdWNlcl9pZCA9IDQ7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcXFxuXFxcXG7CoCDCoCBjYXNlICdCQkMnOlxcXFxuXFxcXG7CoCDCoCDCoCDCoCBwcm9kdWNlcl9pZCA9IDE7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcXFxuXFxcXG7CoCDCoCBjYXNlICfmjqLntKLpopHpgZMnOlxcXFxuXFxcXG7CoCDCoCDCoCDCoCBwcm9kdWNlcl9pZCA9IDc7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcXFxuXFxcXG7CoCDCoCBjYXNlICflm73lrrblnLDnkIYnOlxcXFxuXFxcXG7CoCDCoCDCoCDCoCBwcm9kdWNlcl9pZCA9IDE0O1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgY2FzZSAnTkhLJzpcXFxcblxcXFxuwqAgwqAgwqAgwqAgcHJvZHVjZXJfaWQgPSAyO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgY2FzZSAn5Y6G5Y+y6aKR6YGTJzpcXFxcblxcXFxuwqAgwqAgwqAgwqAgcHJvZHVjZXJfaWQgPSA2O1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgY2FzZSAn5Y2r6KeGJzpcXFxcblxcXFxuwqAgwqAgwqAgwqAgcHJvZHVjZXJfaWQgPSA4O1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgY2FzZSAn6Ieq5Yi2JzpcXFxcblxcXFxuwqAgwqAgwqAgwqAgcHJvZHVjZXJfaWQgPSA5O1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgY2FzZSAnSVRWJzpcXFxcblxcXFxuwqAgwqAgwqAgwqAgcHJvZHVjZXJfaWQgPSA1O1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgY2FzZSAnU0tZJzpcXFxcblxcXFxuwqAgwqAgwqAgwqAgcHJvZHVjZXJfaWQgPSAzO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgY2FzZSAnWkRGJzpcXFxcblxcXFxuwqAgwqAgwqAgwqAgcHJvZHVjZXJfaWQgPSAxMDtcXFxcblxcXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxcXG5cXFxcbsKgIMKgIGNhc2UgJ+WQiOS9nOacuuaehCc6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHByb2R1Y2VyX2lkID0gMTE7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcXFxuXFxcXG7CoCDCoCBjYXNlICflm73lhoXlhbbku5YnOlxcXFxuXFxcXG7CoCDCoCDCoCDCoCBwcm9kdWNlcl9pZCA9IDEyO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgY2FzZSAn5Zu95aSW5YW25a6DJzpcXFxcblxcXFxuwqAgwqAgwqAgwqAgcHJvZHVjZXJfaWQgPSAxMztcXFxcblxcXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxcXG5cXFxcbsKgIMKgIGRlZmF1bHQ6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHByb2R1Y2VyX2lkID0gLTE7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcXFxuXFxcXG59XFxcXG5cXFxcbnN3aXRjaCAoZ2V0TXlWYXIoJ+eJiOadgycsICflhajpg6gnKSkge1xcXFxuXFxcXG7CoCDCoCBjYXNlICfni6zlrrYnOlxcXFxuXFxcXG7CoCDCoCDCoCDCoCBjb3B5cmlnaHQgPSAzO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgY2FzZSAn5YW25LuWJzpcXFxcblxcXFxuwqAgwqAgwqAgwqAgY29weXJpZ2h0ID0gWzEsIDIsIDRdO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgZGVmYXVsdDpcXFxcblxcXFxuwqAgwqAgwqAgwqAgY29weXJpZ2h0ID0gLTE7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcXFxuXFxcXG59XFxcXG5cXFxcbnN3aXRjaCAoZ2V0TXlWYXIoJ+S7mOi0uScsICflhajpg6gnKSkge1xcXFxuXFxcXG7CoCDCoCBjYXNlICflhY3otLknOlxcXFxuXFxcXG7CoCDCoCDCoCDCoCBzZWFzb25fc3RhdHVzID0gMTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxcXG5cXFxcbsKgIMKgIGNhc2UgJ+S7mOi0uSc6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHNlYXNvbl9zdGF0dXMgPSBbMiwgNl07XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcXFxuXFxcXG7CoCDCoCBjYXNlICflpKfkvJrlkZgnOlxcXFxuXFxcXG7CoCDCoCDCoCDCoCBzZWFzb25fc3RhdHVzID0gWzQsIDZdO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgZGVmYXVsdDpcXFxcblxcXFxuwqAgwqAgwqAgwqAgc2Vhc29uX3N0YXR1cyA9IC0xO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxufVxcXFxuXFxcXG5zd2l0Y2ggKGdldE15VmFyKCflraPluqYnLCAn5YWo6YOoJykpIHtcXFxcblxcXFxuwqAgwqAgY2FzZSAnMeaciCc6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHNlYXNvbl9tb250aCA9IDE7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcXFxuXFxcXG7CoCDCoCBjYXNlICc05pyIJzpcXFxcblxcXFxuwqAgwqAgwqAgwqAgc2Vhc29uX21vbnRoID0gNDtcXFxcblxcXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxcXG5cXFxcbsKgIMKgIGNhc2UgJzfmnIgnOlxcXFxuXFxcXG7CoCDCoCDCoCDCoCBzZWFzb25fbW9udGggPSA3O1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgY2FzZSAnMTDmnIgnOlxcXFxuXFxcXG7CoCDCoCDCoCDCoCBzZWFzb25fbW9udGggPSAxMDtcXFxcblxcXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxcXG5cXFxcbsKgIMKgIGRlZmF1bHQ6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHNlYXNvbl9tb250aCA9IC0xO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxufVxcXFxuXFxcXG5zd2l0Y2ggKGdldE15VmFyKCfml7bpl7QnLCAn5YWo6YOoJykpIHtcXFxcblxcXFxuwqAgwqAgY2FzZSAnMjAyMic6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHllYXIgPSAnWzIwMjIsMjAyMyknO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgY2FzZSAnMjAyMSc6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHllYXIgPSAnWzIwMjEsMjAyMiknO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgY2FzZSAnMjAyMCc6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHllYXIgPSAnWzIwMjAsMjAyMSknO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgY2FzZSAnMjAxOSc6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHllYXIgPSAnWzIwMTksMjAyMCknO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgY2FzZSAnMjAxOCc6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHllYXIgPSAnWzIwMTgsMjAxOSknO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgY2FzZSAnMjAxNyc6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHllYXIgPSAnWzIwMTcsMjAxOCknO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgY2FzZSAnMjAxNic6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHllYXIgPSAnWzIwMTYsMjAxNyknO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgY2FzZSAnMjAxNSc6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHllYXIgPSAnWzIwMTUsMjAxNiknO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgY2FzZSAnMjAxNC0yMDEwJzpcXFxcblxcXFxuwqAgwqAgwqAgwqAgeWVhciA9ICdbMjAxMCwyMDE1KSc7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcXFxuXFxcXG7CoCDCoCBjYXNlICcyMDA5LTIwMDUnOlxcXFxuXFxcXG7CoCDCoCDCoCDCoCB5ZWFyID0gJ1syMDA1LDIwMTApJztcXFxcblxcXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxcXG5cXFxcbsKgIMKgIGNhc2UgJzIwMDQtMjAwMCc6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHllYXIgPSAnWzIwMDAsMjAwNSknO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgY2FzZSAnOTDlubTku6MnOlxcXFxuXFxcXG7CoCDCoCDCoCDCoCB5ZWFyID0gJ1sxOTkwLDIwMDApJztcXFxcblxcXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxcXG5cXFxcbsKgIMKgIGNhc2UgJzgw5bm05LujJzpcXFxcblxcXFxuwqAgwqAgwqAgwqAgeWVhciA9ICdbMTk4MCwxOTkwKSc7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcXFxuXFxcXG7CoCDCoCBjYXNlICfmm7Tml6knOlxcXFxuXFxcXG7CoCDCoCDCoCDCoCB5ZWFyID0gJ1ssMTk4MCknO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgZGVmYXVsdDpcXFxcblxcXFxuwqAgwqAgwqAgwqAgeWVhciA9IC0xO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxufVxcXFxuXFxcXG5zd2l0Y2ggKGdldE15VmFyKCflubTku70nLCAn5YWo6YOoJykpIHtcXFxcblxcXFxuwqAgwqAgY2FzZSAnMjAyMic6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHJlbGVhc2VfZGF0ZSA9ICdbMjAyMi0wMS0wMSAwMDowMDowMCwyMDIzLTAxLTAxIDAwOjAwOjAwKSc7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcXFxuXFxcXG7CoCDCoCBjYXNlICcyMDIxJzpcXFxcblxcXFxuwqAgwqAgwqAgwqAgcmVsZWFzZV9kYXRlID0gJ1syMDIxLTAxLTAxIDAwOjAwOjAwLDIwMjItMDEtMDEgMDA6MDA6MDApJztcXFxcblxcXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxcXG5cXFxcbsKgIMKgIGNhc2UgJzIwMjAnOlxcXFxuXFxcXG7CoCDCoCDCoCDCoCByZWxlYXNlX2RhdGUgPSAnWzIwMjAtMDEtMDEgMDA6MDA6MDAsMjAyMS0wMS0wMSAwMDowMDowMCknO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgY2FzZSAnMjAxOSc6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHJlbGVhc2VfZGF0ZSA9ICdbMjAxOS0wMS0wMSAwMDowMDowMCwyMDIwLTAxLTAxIDAwOjAwOjAwKSc7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcXFxuXFxcXG7CoCDCoCBjYXNlICcyMDE4JzpcXFxcblxcXFxuwqAgwqAgwqAgwqAgcmVsZWFzZV9kYXRlID0gJ1syMDE4LTAxLTAxIDAwOjAwOjAwLDIwMTktMDEtMDEgMDA6MDA6MDApJztcXFxcblxcXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxcXG5cXFxcbsKgIMKgIGNhc2UgJzIwMTcnOlxcXFxuXFxcXG7CoCDCoCDCoCDCoCByZWxlYXNlX2RhdGUgPSAnWzIwMTctMDEtMDEgMDA6MDA6MDAsMjAxOC0wMS0wMSAwMDowMDowMCknO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgY2FzZSAnMjAxNic6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHJlbGVhc2VfZGF0ZSA9ICdbMjAxNi0wMS0wMSAwMDowMDowMCwyMDE3LTAxLTAxIDAwOjAwOjAwKSc7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcXFxuXFxcXG7CoCDCoCBjYXNlICcyMDE1LTIwMTAnOlxcXFxuXFxcXG7CoCDCoCDCoCDCoCByZWxlYXNlX2RhdGUgPSAnWzIwMTAtMDEtMDEgMDA6MDA6MDAsMjAxNi0wMS0wMSAwMDowMDowMCknXFxcXG5cXFxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcXFxuXFxcXG7CoCDCoCBjYXNlICcyMDA5LTIwMDUnOlxcXFxuXFxcXG7CoCDCoCDCoCDCoCByZWxlYXNlX2RhdGUgPSAnWzIwMDUtMDEtMDEgMDA6MDA6MDAsMjAxMC0wMS0wMSAwMDowMDowMCknXFxcXG5cXFxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcXFxuXFxcXG7CoCDCoCBjYXNlICcyMDA0LTIwMDAnOlxcXFxuXFxcXG7CoCDCoCDCoCDCoCByZWxlYXNlX2RhdGUgPSAnWzIwMDAtMDEtMDEgMDA6MDA6MDAsMjAwNS0wMS0wMSAwMDowMDowMCknXFxcXG5cXFxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcXFxuXFxcXG7CoCDCoCBjYXNlICc5MOW5tOS7oyc6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHJlbGVhc2VfZGF0ZSA9ICdbMTk5MC0wMS0wMSAwMDowMDowMCwyMDAwLTAxLTAxIDAwOjAwOjAwKSdcXFxcblxcXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxcXG5cXFxcbsKgIMKgIGNhc2UgJzgw5bm05LujJzpcXFxcblxcXFxuwqAgwqAgwqAgwqAgcmVsZWFzZV9kYXRlID0gJ1sxOTgwLTAxLTAxIDAwOjAwOjAwLDE5OTAtMDEtMDEgMDA6MDA6MDApJ1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgY2FzZSAn5pu05pepJzpcXFxcblxcXFxuwqAgwqAgwqAgwqAgcmVsZWFzZV9kYXRlID0gJ1ssMTk4MC0wMS0wMSAwMDowMDowMCknO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgZGVmYXVsdDpcXFxcblxcXFxuwqAgwqAgwqAgwqAgcmVsZWFzZV9kYXRlID0gLTE7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcXFxuXFxcXG59XFxcXG5cXFxcbnN3aXRjaCAoZ2V0TXlWYXIoJ+mjjuagvCcsICflhajpg6gnKSkge1xcXFxuXFxcXG7CoCDCoCBjYXNlICfnlLXlvbEnOlxcXFxuXFxcXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IC0xMDtcXFxcblxcXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIC8vIOeVquWJp+agj+ebrlxcXFxuXFxcXG7CoCDCoCBjYXNlICfljp/liJsnOlxcXFxuXFxcXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDEwO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgY2FzZSAn5ryr55S75pS5JzpcXFxcblxcXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDAxMTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxcXG5cXFxcbsKgIMKgIGNhc2UgJ+Wwj+ivtOaUuSc6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwMTI7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcXFxuXFxcXG7CoCDCoCBjYXNlICfmuLjmiI/mlLknOlxcXFxuXFxcXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDEzO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgY2FzZSAn54m55pGEJzpcXFxcblxcXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDAxNDtcXFxcblxcXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxcXG5cXFxcbsKgIMKgIGNhc2UgJ+W4g+iii+aIjyc6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwMTU7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcXFxuXFxcXG7CoCDCoCBjYXNlICfng63ooYAnOlxcXFxuXFxcXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDE2O1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgY2FzZSAn56m/6LaKJzpcXFxcblxcXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDAxNztcXFxcblxcXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxcXG5cXFxcbsKgIMKgIGNhc2UgJ+Wlh+W5uyc6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwMTg7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCAvLyDlkovot7PkuobkuIDkuKrmjY9+XFxcXG5cXFxcbsKgIMKgIGNhc2UgJ+aImOaWlyc6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwMjA7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcXFxuXFxcXG7CoCDCoCBjYXNlICfmkJ7nrJEnOlxcXFxuXFxcXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDIxO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgY2FzZSAn5pel5bi4JzpcXFxcblxcXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDAyMjtcXFxcblxcXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxcXG5cXFxcbsKgIMKgIGNhc2UgJ+enkeW5uyc6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwMjM7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcXFxuXFxcXG7CoCDCoCBjYXNlICfokIzns7snOlxcXFxuXFxcXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDI0O1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgY2FzZSAn5rK75oSIJzpcXFxcblxcXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDAyNTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxcXG5cXFxcbsKgIMKgIGNhc2UgJ+agoeWbrSc6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwMjY7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcXFxuXFxcXG7CoCDCoCBjYXNlICflsJHlhL8nOlxcXFxuXFxcXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDI3O1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgY2FzZSAn5rOh6Z2iJzpcXFxcblxcXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDAyODtcXFxcblxcXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxcXG5cXFxcbsKgIMKgIGNhc2UgJ+aBi+eIsSc6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwMjk7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcXFxuXFxcXG7CoCDCoCBjYXNlICflsJHlpbMnOlxcXFxuXFxcXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDMwO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgY2FzZSAn6a2U5rOVJzpcXFxcblxcXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDAzMTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxcXG5cXFxcbsKgIMKgIGNhc2UgJ+WGkumZqSc6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwMzI7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcXFxuXFxcXG7CoCDCoCBjYXNlICfljoblj7InOlxcXFxuXFxcXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDMzO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgY2FzZSAn5p6256m6JzpcXFxcblxcXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDAzNDtcXFxcblxcXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxcXG5cXFxcbsKgIMKgIGNhc2UgJ+acuuaImCc6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwMzU7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcXFxuXFxcXG7CoCDCoCBjYXNlICfnpZ7prZQnOlxcXFxuXFxcXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDM2O1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgY2FzZSAn5aOw5o6nJzpcXFxcblxcXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDAzNztcXFxcblxcXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxcXG5cXFxcbsKgIMKgIGNhc2UgJ+i/kOWKqCc6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwMzg7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcXFxuXFxcXG7CoCDCoCBjYXNlICflirHlv5cnOlxcXFxuXFxcXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDM5O1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgY2FzZSAn6Z+z5LmQJzpcXFxcblxcXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDA0MDtcXFxcblxcXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxcXG5cXFxcbsKgIMKgIGNhc2UgJ+aOqOeQhic6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwNDE7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcXFxuXFxcXG7CoCDCoCBjYXNlICfnpL7lm6InOlxcXFxuXFxcXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDQyO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgY2FzZSAn5pm65paXJzpcXFxcblxcXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDA0MztcXFxcblxcXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxcXG5cXFxcbsKgIMKgIGNhc2UgJ+WCrOazqic6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwNDQ7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcXFxuXFxcXG7CoCDCoCBjYXNlICfnvo7po58nOlxcXFxuXFxcXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDQ1O1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgY2FzZSAn5YG25YOPJzpcXFxcblxcXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDA0NjtcXFxcblxcXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxcXG5cXFxcbsKgIMKgIGNhc2UgJ+S5meWlsyc6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwNDc7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcXFxuXFxcXG7CoCDCoCBjYXNlICfogYzlnLonOlxcXFxuXFxcXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDQ4O1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuXFxcXG7CoCDCoCDCoCDCoCAvLyDnu7zoibrmoI/nm67jgIHnlLXlvbFcXFxcblxcXFxuwqAgwqAgY2FzZSAn5Ymn5oOFJzpcXFxcblxcXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDA1MDtcXFxcblxcXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxcXG5cXFxcbsKgIMKgIGNhc2UgJ+WWnOWJpyc6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwNTE7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcXFxuXFxcXG7CoCDCoCBjYXNlICfniLHmg4UnOlxcXFxuXFxcXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDUyO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgY2FzZSAn5Yqo5L2cJzpcXFxcblxcXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDA1MztcXFxcblxcXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxcXG5cXFxcbsKgIMKgIGNhc2UgJ+aBkOaAlic6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwNTQ7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcXFxuXFxcXG7CoCDCoCBjYXNlICfniq/nvaonOlxcXFxuXFxcXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDU1O1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgY2FzZSAn5oOK5oKaJzpcXFxcblxcXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDA1NjtcXFxcblxcXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxcXG5cXFxcbsKgIMKgIGNhc2UgJ+aCrOeWkSc6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwNTc7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcXFxuXFxcXG7CoCDCoCBjYXNlICfmiJjkuoknOlxcXFxuXFxcXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDU4O1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgY2FzZSAn5Yqo55S7JzpcXFxcblxcXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDA1OTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxcXG5cXFxcbsKgIMKgIGNhc2UgJ+S8oOiusCc6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwNjA7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcXFxuXFxcXG7CoCDCoCBjYXNlICflrrbluq0nOlxcXFxuXFxcXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDYxO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgY2FzZSAn5q2M6IieJzpcXFxcblxcXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDA2MjtcXFxcblxcXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxcXG5cXFxcbsKgIMKgIGNhc2UgJ+e6quWunic6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwNjM7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcXFxuXFxcXG7CoCDCoCBjYXNlICfngb7pmr4nOlxcXFxuXFxcXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDY0O1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgY2FzZSAn5Lq65paHJzpcXFxcblxcXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDA2NTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxcXG5cXFxcbsKgIMKgIGNhc2UgJ+enkeaKgCc6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwNjY7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcXFxuXFxcXG7CoCDCoCBjYXNlICflroflrpknOlxcXFxuXFxcXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDY4O1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgY2FzZSAn6JCM5a6gJzpcXFxcblxcXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDA2OTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxcXG5cXFxcbsKgIMKgIGNhc2UgJ+ekvuS8mic6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwNzA7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcXFxuXFxcXG7CoCDCoCBjYXNlICfliqjniaknOlxcXFxuXFxcXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDcxO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgY2FzZSAn6Ieq54S2JzpcXFxcblxcXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDA3MjtcXFxcblxcXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxcXG5cXFxcbsKgIMKgIGNhc2UgJ+WMu+eWlyc6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwNzM7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcXFxuXFxcXG7CoCDCoCBjYXNlICflhpvkuosnOlxcXFxuXFxcXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDc0O1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgY2FzZSAn572q5qGIJzpcXFxcblxcXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDA3NTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxcXG5cXFxcbsKgIMKgIGNhc2UgJ+elnuenmCc6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwNzY7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcXFxuXFxcXG7CoCDCoCBjYXNlICfml4XooYwnOlxcXFxuXFxcXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDc3O1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgY2FzZSAn5q2m5L6gJzpcXFxcblxcXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDA3ODtcXFxcblxcXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxcXG5cXFxcbsKgIMKgIGNhc2UgJ+mdkuaYpSc6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwNzk7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcXFxuXFxcXG7CoCDCoCBjYXNlICfpg73luIInOlxcXFxuXFxcXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDgwO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgY2FzZSAn5Y+k6KOFJzpcXFxcblxcXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDA4MTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxcXG5cXFxcbsKgIMKgIGNhc2UgJ+iwjeaImCc6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwODI7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcXFxuXFxcXG7CoCDCoCBjYXNlICfnu4/lhbgnOlxcXFxuXFxcXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDgzO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgY2FzZSAn5oOF5oSfJzpcXFxcblxcXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDA4NDtcXFxcblxcXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxcXG5cXFxcbsKgIMKgIGNhc2UgJ+elnuivnSc6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwODU7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcXFxuXFxcXG7CoCDCoCBjYXNlICflubTku6MnOlxcXFxuXFxcXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDg2O1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgY2FzZSAn5Yac5p2RJzpcXFxcblxcXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDA4NztcXFxcblxcXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxcXG5cXFxcbsKgIMKgIGNhc2UgJ+WIkeS+pic6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwODg7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcXFxuXFxcXG7CoCDCoCBjYXNlICflhpvml4UnOlxcXFxuXFxcXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDg5O1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgY2FzZSAn6K6/6LCIJzpcXFxcblxcXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDA5MDtcXFxcblxcXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxcXG5cXFxcbsKgIMKgIGNhc2UgJ+iEseWPo+engCc6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwOTE7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcXFxuXFxcXG7CoCDCoCBjYXNlICfnnJ/kurrnp4AnOlxcXFxuXFxcXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDkyO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgY2FzZSAn6YCJ56eAJzpcXFxcblxcXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDA5NDtcXFxcblxcXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxcXG5cXFxcbsKgIMKgIGNhc2UgJ+aXhea4uCc6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwOTU7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcXFxuXFxcXG7CoCDCoCBjYXNlICfmmZrkvJonOlxcXFxuXFxcXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDk4O1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgY2FzZSAn5ryU5ZSx5LyaJzpcXFxcblxcXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDA5NjtcXFxcblxcXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxcXG5cXFxcbsKgIMKgIGNhc2UgJ+S6suWtkCc6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwOTc7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcXFxuXFxcXG7CoCDCoCBjYXNlICflhbvmiJAnOlxcXFxuXFxcXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDk5O1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgY2FzZSAn5paH5YyWJzpcXFxcblxcXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDEwMDtcXFxcblxcXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIC8vIOeUteW9seagj+ebrlxcXFxuXFxcXG7CoCDCoCBjYXNlICfnn63niYcnOlxcXFxuXFxcXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMTA0O1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgZGVmYXVsdDpcXFxcblxcXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAtMTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxcXG5cXFxcbn1cXFxcblxcXFxuLy8g5pig5bCE55yf5a6e6K+35rGC5Zyw5Z2AXFxcXG5cXFxcbnN3aXRjaCAoc2Vhc29uVHlwZSkge1xcXFxuXFxcXG7CoCDCoCBjYXNlIDQ6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIC8vIOWbveWIm1xcXFxuXFxcXG7CoCDCoCDCoCDCoCB0cnVlX3VybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20vcGdjL3NlYXNvbi9pbmRleC9yZXN1bHQ/c2Vhc29uX3ZlcnNpb249JyArIHNlYXNvbl92ZXJzaW9uICsgJyZpc19maW5pc2g9JyArIGlzX2ZpbmlzaCArICcmY29weXJpZ2h0PSZzJyArIGNvcHlyaWdodCArICdlYXNvbl9zdGF0dXM9JyArIHNlYXNvbl9zdGF0dXMgKyAnJnllYXI9JyArIHllYXIgKyAnJnN0eWxlX2lkPScgKyBzdHlsZV9pZCArICcmb3JkZXI9MyZzdD00JnNvcnQ9MCZwYWdlPScgKyBwYWdlICsgJyZzZWFzb25fdHlwZT00JnBhZ2VzaXplPTIwJnR5cGU9MSdcXFxcblxcXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxcXG5cXFxcbsKgIMKgIGNhc2UgNTpcXFxcblxcXFxuwqAgwqAgwqAgwqAgLy8g55S16KeG5YmnXFxcXG5cXFxcbsKgIMKgIMKgIMKgIHRydWVfdXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS9wZ2Mvc2Vhc29uL2luZGV4L3Jlc3VsdD9hcmVhPScgKyBhcmVhICsgJyZzdHlsZV9pZD0nICsgc3R5bGVfaWQgKyAnJnJlbGVhc2VfZGF0ZT0nICsgcmVsZWFzZV9kYXRlICsgJyZzZWFzb25fc3RhdHVzPScgKyBzZWFzb25fc3RhdHVzICsgJyZvcmRlcj0yJnN0PTUmc29ydD0wJnBhZ2U9JyArIHBhZ2UgKyAnJnNlYXNvbl90eXBlPTUmcGFnZXNpemU9MjAmdHlwZT0xJ1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgY2FzZSA3OlxcXFxuXFxcXG7CoCDCoCDCoCDCoCAvLyDnu7zoibpcXFxcblxcXFxuwqAgwqAgwqAgwqAgdHJ1ZV91cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3BnYy9zZWFzb24vaW5kZXgvcmVzdWx0P3NlYXNvbl9zdGF0dXM9JyArIHNlYXNvbl9zdGF0dXMgKyAnJnN0eWxlX2lkPScgKyBzdHlsZV9pZCArICcmb3JkZXI9MiZzdD03JnNvcnQ9MCZwYWdlPScgKyBwYWdlICsgJyZzZWFzb25fdHlwZT03JnBhZ2VzaXplPTIwJnR5cGU9MSc7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcXFxuXFxcXG7CoCDCoCBjYXNlIDE6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIC8vIOeVquWJp1xcXFxuXFxcXG7CoCDCoCDCoCDCoCB0cnVlX3VybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20vcGdjL3NlYXNvbi9pbmRleC9yZXN1bHQ/c2Vhc29uX3ZlcnNpb249JyArIHNlYXNvbl92ZXJzaW9uICsgJyZzcG9rZW5fbGFuZ3VhZ2VfdHlwZT0nICsgc3Bva2VuX2xhbmd1YWdlX3R5cGUgKyAnJmFyZWE9JyArIGFyZWEgKyAnJmlzX2ZpbmlzaD0nICsgaXNfZmluaXNoICsgJyZjb3B5cmlnaHQ9JyArIGNvcHlyaWdodCArICcmc2Vhc29uX3N0YXR1cz0nICsgc2Vhc29uX3N0YXR1cyArICcmc2Vhc29uX21vbnRoPScgKyBzZWFzb25fbW9udGggKyAnJnllYXI9JyArIHllYXIgKyAnJnN0eWxlX2lkPScgKyBzdHlsZV9pZCArICcmb3JkZXI9MyZzdD0xJnNvcnQ9MCZwYWdlPScgKyBwYWdlICsgJyZzZWFzb25fdHlwZT0xJnBhZ2VzaXplPTIwJnR5cGU9MSc7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcXFxuXFxcXG7CoCDCoCBjYXNlIDM6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIC8vIOe6quW9leeJh1xcXFxuXFxcXG7CoCDCoCDCoCDCoCB0cnVlX3VybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20vcGdjL3NlYXNvbi9pbmRleC9yZXN1bHQ/c3R5bGVfaWQ9JyArIHN0eWxlX2lkICsgJyZwcm9kdWNlcl9pZD0nICsgcHJvZHVjZXJfaWQgKyAnJnJlbGVhc2VfZGF0ZT0nICsgcmVsZWFzZV9kYXRlICsgJyZzZWFzb25fc3RhdHVzPScgKyBzZWFzb25fc3RhdHVzICsgJyZvcmRlcj0yJnN0PTMmc29ydD0wJnBhZ2U9JyArIHBhZ2UgKyAnJnNlYXNvbl90eXBlPTMmcGFnZXNpemU9MjAmdHlwZT0xJ1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgY2FzZSAyOlxcXFxuXFxcXG7CoCDCoCDCoCDCoCAvLyDnlLXlvbFcXFxcblxcXFxuwqAgwqAgwqAgwqAgdHJ1ZV91cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3BnYy9zZWFzb24vaW5kZXgvcmVzdWx0P2FyZWE9JyArIGFyZWEgKyAnJnN0eWxlX2lkPScgKyBzdHlsZV9pZCArICcmcmVsZWFzZV9kYXRlPScgKyByZWxlYXNlX2RhdGUgKyAnJnNlYXNvbl9zdGF0dXM9JyArIHNlYXNvbl9zdGF0dXMgKyAnJm9yZGVyPTImc3Q9MiZzb3J0PTAmcGFnZT0nICsgcGFnZSArICcmc2Vhc29uX3R5cGU9MiZwYWdlc2l6ZT0yMCZ0eXBlPTEnXFxcXG5cXFxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcXFxuXFxcXG59XFxcXG5cXFxcbnRydWVfdXJsID0gZW5jb2RlVVJJKHRydWVfdXJsKTtcXFxcblxcXFxubGlzdCA9IEpTT04ucGFyc2UoZmV0Y2godHJ1ZV91cmwpKS5kYXRhLmxpc3Q7XFxcXG5cXFxcbnRyeSB7XFxcXG5cXFxcbsKgIMKgIGxpc3QuZm9yRWFjaChtb3ZpZSA9PiB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGQucHVzaCh7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBtb3ZpZS50aXRsZSxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiBcXFxcXFxcImhpa2VyOi8vcGFnZS9maWxtZXJqaSNpbW1lcnNpdmVUaGVtZSNcXFxcXFxcIixcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgaW1nOiBtb3ZpZS5jb3ZlciArIFxcXFxcXFwiQFJlZmVyZXI9XFxcXFxcXCIsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIGRlc2M6IG1vdmllLm9yZGVyLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ21vdmllXzMnLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCBleHRyYToge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBzZWFzb25faWQ6IG1vdmllLnNlYXNvbl9pZFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCB9XFxcXG5cXFxcbsKgIMKgIMKgIMKgIH0pO1xcXFxuXFxcXG7CoCDCoCB9KTtcXFxcblxcXFxufSBjYXRjaCAoZSkge1xcXFxuXFxcXG7CoCDCoCBsb2coJ+W3sue7j+aKtei+vumhteW6lScgKyBNWV9QQUdFKTtcXFxcblxcXFxufVxcXFxuXFxcXG5cXFxcblxcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIueDreaYoOaXtumXtOihqFxcXCIsXFxcInBhdGhcXFwiOlxcXCJVcGRhdGVUYWJsZXNcXFwiLFxcXCJydWxlXFxcIjpcXFwiZnVuY3Rpb24gY29sb3IodGV4dCwgY29sb3IpIHtcXFxcblxcXFxuwqAgwqAgdGV4dCArPSBcXFxcXFxcIlxcXFxcXFwiO1xcXFxuXFxcXG7CoCDCoCBpZiAodGV4dC5pbmRleE9mKFxcXFxcXFwi4oCc4oCc4oCd4oCdXFxcXFxcXCIpID09PSAwKSB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHRleHQucmVwbGFjZShcXFxcXFxcIuKAnOKAnOKAneKAnVxcXFxcXFwiLCBcXFxcXFxcIlxcXFxcXFwiKTtcXFxcblxcXFxuwqAgwqAgfVxcXFxuXFxcXG7CoCDCoCByZXR1cm4gXFxcXFxcXCLigJzigJzigJ3igJ08Zm9udCBjb2xvcj0nXFxcXFxcXCIgKyBjb2xvciArIFxcXFxcXFwiJz5cXFxcXFxcIiArIHRleHQgKyBcXFxcXFxcIjwvZm9udD5cXFxcXFxcIjtcXFxcblxcXFxufVxcXFxuXFxcXG52YXIgdGFicyA9IHtcXFxcblxcXFxuwqAgwqAgXFxcXFxcXCLnlarliadcXFxcXFxcIjogMSxcXFxcblxcXFxuwqAgwqAgXFxcXFxcXCLnuqrlvZXniYdcXFxcXFxcIjogMyxcXFxcblxcXFxuwqAgwqAgXFxcXFxcXCLlm73liJtcXFxcXFxcIjogNFxcXFxuXFxcXG59XFxcXG5cXFxcbmlmIChNWV9QQUdFID09IDEpIHtcXFxcblxcXFxuwqAgwqAgT2JqZWN0LmtleXModGFicykuZm9yRWFjaChpdGVtID0+IHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgZC5wdXNoKHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IChnZXRNeVZhcihcXFxcXFxcImp1amlcXFxcXFxcIiwgXFxcXFxcXCLlm73liJtcXFxcXFxcIikgPT0gaXRlbSA/IGNvbG9yKGl0ZW0sIFxcXFxcXFwicmVkXFxcXFxcXCIpIDogaXRlbSksXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIHVybDogJCgpLmxhenlSdWxlKChhKSA9PiB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHB1dE15VmFyKFxcXFxcXFwianVqaVxcXFxcXFwiLCBhKVxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZWZyZXNoUGFnZSgpXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybiBcXFxcXFxcInRvYXN0Oi8v5YiH5o2i5oiQ5YqfXFxcXFxcXCJcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgfSwgaXRlbSksXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiBcXFxcXFxcInNjcm9sbF9idXR0b25cXFxcXFxcIlxcXFxuXFxcXG7CoCDCoCDCoCDCoCB9KVxcXFxuXFxcXG7CoCDCoCB9KVxcXFxuXFxcXG7CoCDCoCBkLnB1c2goe1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBjb2xfdHlwZTogXFxcXFxcXCJsaW5lXFxcXFxcXCJcXFxcblxcXFxuwqAgwqAgfSlcXFxcblxcXFxuwqAgwqAgbGV0IGRheXMgPSA3XFxcXG5cXFxcbsKgIMKgIGZvciAobGV0IGkgPSAxOyBpIDwgZGF5czsgaSsrKSB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGQucHVzaCh7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiAoZ2V0TXlWYXIoXFxcXFxcXCJmcm9tXFxcXFxcXCIsIFxcXFxcXFwiMVxcXFxcXFwiKSA9PSBpICsgXFxcXFxcXCJcXFxcXFxcIiA/IGNvbG9yKGkgKyBcXFxcXFxcIuWkqeWJjVxcXFxcXFwiLCBcXFxcXFxcInJlZFxcXFxcXFwiKSA6IGkgKyBcXFxcXFxcIuWkqeWJjVxcXFxcXFwiKSxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiAkKCkubGF6eVJ1bGUoKGkpID0+IHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcHV0TXlWYXIoXFxcXFxcXCJmcm9tXFxcXFxcXCIsIGkgKyBcXFxcXFxcIlxcXFxcXFwiKVxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZWZyZXNoUGFnZSgpXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybiBcXFxcXFxcImhpa2VyOi8vZW1wdHlcXFxcXFxcIlxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCB9LCBpKSxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6IFxcXFxcXFwic2Nyb2xsX2J1dHRvblxcXFxcXFwiXFxcXG5cXFxcbsKgIMKgIMKgIMKgIH0pXFxcXG5cXFxcbsKgIMKgIH1cXFxcblxcXFxuwqAgwqAgZC5wdXNoKHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgY29sX3R5cGU6IFxcXFxcXFwibGluZVxcXFxcXFwiXFxcXG5cXFxcbsKgIMKgIH0pXFxcXG5cXFxcbsKgIMKgIGZvciAobGV0IGkgPSAxOyBpIDwgZGF5czsgaSsrKSB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGQucHVzaCh7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiAoZ2V0TXlWYXIoXFxcXFxcXCJ0b1xcXFxcXFwiLCBcXFxcXFxcIjFcXFxcXFxcIikgPT0gaSArIFxcXFxcXFwiXFxcXFxcXCIgPyBjb2xvcihpICsgXFxcXFxcXCLlpKnlkI5cXFxcXFxcIiwgXFxcXFxcXCJyZWRcXFxcXFxcIikgOiBpICsgXFxcXFxcXCLlpKnlkI5cXFxcXFxcIiksXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIHVybDogJCgpLmxhenlSdWxlKChpKSA9PiB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHB1dE15VmFyKFxcXFxcXFwidG9cXFxcXFxcIiwgaSArIFxcXFxcXFwiXFxcXFxcXCIpXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJlZnJlc2hQYWdlKClcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuIFxcXFxcXFwiaGlrZXI6Ly9lbXB0eVxcXFxcXFwiXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIH0sIGkpLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogXFxcXFxcXCJzY3JvbGxfYnV0dG9uXFxcXFxcXCJcXFxcblxcXFxuwqAgwqAgwqAgwqAgfSlcXFxcblxcXFxuwqAgwqAgfVxcXFxuXFxcXG5cXFxcbsKgIMKgICQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vcGFnZS9hcGlcXFxcXFxcIikuZ2V0TW92aWVzKHRhYnNbZ2V0TXlWYXIoXFxcXFxcXCJqdWppXFxcXFxcXCIsIFxcXFxcXFwi5Zu95YibXFxcXFxcXCIpXSwgZ2V0TXlWYXIoXFxcXFxcXCJmcm9tXFxcXFxcXCIsIFxcXFxcXFwiMVxcXFxcXFwiKSwgZ2V0TXlWYXIoXFxcXFxcXCJ0b1xcXFxcXFwiLCBcXFxcXFxcIjFcXFxcXFxcIikpLmZvckVhY2goaXRlbSA9PiB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGQucHVzaCh7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBpdGVtLmRhdGUgKyBcXFxcXFxcIiDlkahcXFxcXFxcIiArIGl0ZW0uZGF5X29mX3dlZWssXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiBcXFxcXFxcInRleHRfMVxcXFxcXFwiLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCB1cmw6IFxcXFxcXFwiaGlrZXI6Ly9lbXB0eVxcXFxcXFwiXFxcXG5cXFxcbsKgIMKgIMKgIMKgIH0pXFxcXG5cXFxcbsKgIMKgIMKgIMKgIGl0ZW0uZXBpc29kZXMuZm9yRWFjaChpID0+IHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgZC5wdXNoKHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IGkudGl0bGUsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGltZzogaS5jb3ZlcisnQFJlZmVyZXI9JyxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZGVzYzppLnB1Yl9pbmRleC5tYXRjaCgv5Y2z5bCGLyk/J+KAmOKAmOKAmeKAmTxmb250IGNvbG9yPVxcXFxcXFwicmVkXFxcXFxcXCI+JytpLnB1Yl9pbmRleCsnXFxcXFxcXFxuJytpLnB1Yl90aW1lKyc8L2ZvbnQ+JzogaS5wdWJfaW5kZXgrICdcXFxcXFxcXG4nICsgaS5wdWJfdGltZSxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiBcXFxcXFxcImhpa2VyOi8vcGFnZS9maWxtZXJqaSNpbW1lcnNpdmVUaGVtZSNcXFxcXFxcIixcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZXh0cmE6IHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgXFxcXFxcXCJzZWFzb25faWRcXFxcXFxcIjogaS5zZWFzb25faWRcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfVxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCB9KVxcXFxuXFxcXG7CoCDCoCDCoCDCoCB9KVxcXFxuXFxcXG7CoCDCoCB9KVxcXFxuXFxcXG59XFxcXG5cXFxcblxcXFxuXFxcXG5cXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLkuKrkurrkuLvpobVcXFwiLFxcXCJwYXRoXFxcIjpcXFwidXNlckhvbWVcXFwiLFxcXCJydWxlXFxcIjpcXFwiaWYgKE1ZX1BBR0UgPT0gMSkge1xcXFxuXFxcXG7CoCDCoCBkLnB1c2goe1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBjb2xfdHlwZTogJ2xpbmUnXFxcXG5cXFxcbsKgIMKgIH0pXFxcXG5cXFxcbsKgIMKgIHRyeSB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGlmIChpc0xvZ2luLnR5cGUgPT09IHRydWUpIHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgZC5wdXNoKHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6ICforqLpmIUnID09IGdldEl0ZW0oJ+S4u+mhteWxleekuicsICforqLpmIUnKSA/ICfigJjigJjigJnigJk8YmlnPjxmb250IGNvbG9yPVxcXFxcXFwicmVkXFxcXFxcXCI+6K6i6ZiFPC9mb250PjwvYmlnPicgOiAn6K6i6ZiFJyxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgc2V0SXRlbSgn5Li76aG15bGV56S6JywgJ+iuoumYhScpO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBzZWxlY3Rpb24gPSBbJ+i/veeVqicsICfov73liacnXTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgc2VsZWN0aW9uID0gc2VsZWN0aW9uLm1hcCgoaXQpID0+IHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKGl0ID09ICfov73nlaonKSB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHR5cGVJZCA9ICcxJztcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSBlbHNlIHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdHlwZUlkID0gJzInO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybiB0eXBlSWQgPT09IGdldEl0ZW0oJ+iuoumYheexu+WeiycsICfov73nlaonKSA/ICfwn5GJJyArIGl0IDogaXQ7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXR1cm4gJChzZWxlY3Rpb24sIDEpLnNlbGVjdCgoKSA9PiB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlucHV0ID0gaW5wdXQucmVwbGFjZSgv8J+RiS9nLCAnJyk7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlmIChpbnB1dCA9PSAn6L+955WqJykge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBzZXRJdGVtKCforqLpmIXnsbvlnosnLCAnMScpO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9IGVsc2Uge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBzZXRJdGVtKCforqLpmIXnsbvlnosnLCAnMicpO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJlZnJlc2hQYWdlKHRydWUpO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL+WIh+aNouiuoumYheS4ujpcXFxcXFxcIiArIGlucHV0O1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KVxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KSxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICd0ZXh0XzQnLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCB9KTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgZC5wdXNoKHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6ICflhbPms6gnID09IGdldEl0ZW0oJ+S4u+mhteWxleekuicsICforqLpmIUnKSA/ICfigJjigJjigJnigJk8YmlnPjxmb250IGNvbG9yPVxcXFxcXFwicmVkXFxcXFxcXCI+5YWz5rOoPC9mb250PjwvYmlnPicgOiAn5YWz5rOoJyxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgc2V0SXRlbSgn5Li76aG15bGV56S6JywgJ+WFs+azqCcpO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZWZyZXNoUGFnZSh0cnVlKTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuIFxcXFxcXFwiaGlrZXI6Ly9lbXB0eVxcXFxcXFwiO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KSxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICd0ZXh0XzQnLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCB9KTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgZC5wdXNoKHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6ICfmlLbol48nID09IGdldEl0ZW0oJ+S4u+mhteWxleekuicsICforqLpmIUnKSA/ICfigJjigJjigJnigJk8YmlnPjxmb250IGNvbG9yPVxcXFxcXFwicmVkXFxcXFxcXCI+5pS26JePPC9mb250PjwvYmlnPicgOiAn5pS26JePJyxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgc2V0SXRlbSgn5Li76aG15bGV56S6JywgJ+aUtuiXjycpO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBzZWxlY3Rpb24gPSBbJ+aIkeWIm+W7uueahOaUtuiXj+WkuScsICfnqI3lkI7lnKjnnIsnXTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgc2VsZWN0aW9uID0gc2VsZWN0aW9uLm1hcCgoaXQpID0+IHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuIGl0ID09PSBnZXRJdGVtKCfmlLbol4/nsbvlnosnLCAn5oiR5Yib5bu655qE5pS26JeP5aS5JykgPyAn8J+RiScgKyBpdCA6IGl0O1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuICQoc2VsZWN0aW9uLCAxKS5zZWxlY3QoKCkgPT4ge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpbnB1dCA9IGlucHV0LnJlcGxhY2UoL/CfkYkvZywgJycpO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBzZXRJdGVtKCfmlLbol4/nsbvlnosnLCBpbnB1dCk7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJlZnJlc2hQYWdlKHRydWUpO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL+WIh+aNouiuoumYheS4ujpcXFxcXFxcIiArIGlucHV0O1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KVxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KSxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICd0ZXh0XzQnLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCB9KTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgZC5wdXNoKHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6ICfljoblj7InID09IGdldEl0ZW0oJ+S4u+mhteWxleekuicsICforqLpmIUnKSA/ICfigJjigJjigJnigJk8YmlnPjxmb250IGNvbG9yPVxcXFxcXFwicmVkXFxcXFxcXCI+5Y6G5Y+yPC9mb250PjwvYmlnPicgOiAn5Y6G5Y+yJyxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgc2V0SXRlbSgn5Li76aG15bGV56S6JywgJ+WOhuWPsicpO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZWZyZXNoUGFnZSh0cnVlKTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuIFxcXFxcXFwiaGlrZXI6Ly9lbXB0eVxcXFxcXFwiO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KSxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICd0ZXh0XzQnLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCB9KTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgZC5wdXNoKHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdsaW5lJ1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCB9KVxcXFxuXFxcXG7CoCDCoCDCoCDCoCB9IGVsc2Uge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCBkLnB1c2goe1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogXFxcXFxcXCLnmbvpmYZcXFxcXFxcIixcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiBcXFxcXFxcImhpa2VyOi8vcGFnZS9sb2dpblxcXFxcXFwiLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogXFxcXFxcXCJ0ZXh0X2NlbnRlcl8xXFxcXFxcXCJcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgfSlcXFxcblxcXFxuwqAgwqAgwqAgwqAgfVxcXFxuXFxcXG7CoCDCoCB9IGNhdGNoIChlKSB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGxvZyhlLm1lc3NhZ2UpXFxcXG5cXFxcbsKgIMKgIH1cXFxcblxcXFxufVxcXFxuXFxcXG4vLyDkuLvpobXlsZXnpLrljLpcXFxcblxcXFxuaWYgKGlzTG9naW4udHlwZSA9PT0gdHJ1ZSkge1xcXFxuXFxcXG7CoCDCoCBiaWxpRGF0ZSA9IEpTT04ucGFyc2UocmVxdWVzdChcXFxcXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvY3kvYmlsaS50eHRcXFxcXFxcIikpO1xcXFxuXFxcXG7CoCDCoCBjb29raWUgPSBiaWxpRGF0ZS5jb29raWU7XFxcXG5cXFxcbsKgIMKgIG1pZCA9IGJpbGlEYXRlLnVzZXJNaWQ7XFxcXG5cXFxcbsKgIMKgIHN3aXRjaCAoZ2V0SXRlbSgn5Li76aG15bGV56S6JywgJ+iuoumYhScpKSB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGNhc2UgJ+WFs+azqCc6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIGlmIChNWV9QQUdFID09IDEpIHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZC5wdXNoKHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiAnaGlrZXI6Ly9lbXB0eScsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiAn4oi3JyxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZXh0cmE6IHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWQ6ICfljaDkvY3nrKYnLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBmb2N1c0dyb3VwcyA9IEpTT04ucGFyc2UoZmV0Y2goXFxcXFxcXCJodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9yZWxhdGlvbi90YWdzP2pzb25wPWpzb25wXFxcXFxcXCIsIHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaGVhZGVyczoge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBcXFxcXFxcIkNvb2tpZVxcXFxcXFwiOiBjb29raWUsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIFxcXFxcXFwiVXNlci1BZ2VudFxcXFxcXFwiOiBQQ19VQSxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgXFxcXFxcXCJSZWZlcmVyXFxcXFxcXCI6IFxcXFxcXFwiaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL1xcXFxcXFwiXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH1cXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSkpLmRhdGE7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHB1dE15VmFyKCd0ZW1wSWQnLCBKU09OLnN0cmluZ2lmeShmb2N1c0dyb3Vwc1sxXS50YWdpZCkpO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBmb2N1c0dyb3Vwcy5mb3JFYWNoKGxpc3QgPT4ge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkLnB1c2goe1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogbGlzdC50YWdpZCA9PSBnZXRJdGVtKCflhbPms6jliIbnu4QnLCBKU09OLnN0cmluZ2lmeShmb2N1c0dyb3Vwc1sxXS5pZCkpID8gXFxcXFxcXCLigJzigJzigJ3igJ08Zm9udCBjb2xvcj0ncmVkJz5cXFxcXFxcIiArIGxpc3QubmFtZSArIGxpc3QuY291bnQgKyBcXFxcXFxcIjwvZm9udD5cXFxcXFxcIiA6IGxpc3QubmFtZSArIGxpc3QuY291bnQsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVybDogJCgnI25vTG9hZGluZyMjbm9IaXN0b3J5IycpLmxhenlSdWxlKChsaXN0KSA9PiB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHNldEl0ZW0oJ+WFs+azqOWIhue7hCcsIEpTT04uc3RyaW5naWZ5KGxpc3QudGFnaWQpKTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybiBcXFxcXFxcInRvYXN0Oi8v5YiH5o2i5YWz5rOo5YiG57uE5Li6OlxcXFxcXFwiICsgbGlzdC5uYW1lO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9LCBsaXN0KSxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkLnB1c2goe1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ2xpbmUnXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBncm91cENvbnRlbnQgPSBKU09OLnBhcnNlKGZldGNoKFxcXFxcXFwiaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvcmVsYXRpb24vdGFnP21pZD1cXFxcXFxcIiArIG1pZCArIFxcXFxcXFwiJnRhZ2lkPVxcXFxcXFwiICsgZ2V0SXRlbSgn5YWz5rOo5YiG57uEJywgZ2V0TXlWYXIoJ3RlbXBJZCcpKSArIFxcXFxcXFwiJnBuPVxcXFxcXFwiICsgcGFnZSArIFxcXFxcXFwiJnBzPTIwJmpzb25wPWpzb25wXFxcXFxcXCIsIHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaGVhZGVyczoge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBcXFxcXFxcIkNvb2tpZVxcXFxcXFwiOiBjb29raWVcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfVxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KSkuZGF0YTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZ3JvdXBDb250ZW50LmZvckVhY2gobGlzdCA9PiB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGQucHVzaCh7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBcXFxcXFxcIjxiaWc+PGZvbnQgY29sb3I9J2JsdWUnPlxcXFxcXFwiICsgbGlzdC51bmFtZSArIFxcXFxcXFwiPC9mb250PjwvYmlnPjxzbWFsbD5cXFxcXFxcIiArIGxpc3Quc2lnbiArIFxcXFxcXFwiPC9zbWFsbD5cXFxcXFxcIixcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaW1nOiBsaXN0LmZhY2UgKyBcXFxcXFxcIkBSZWZlcmVyPVxcXFxcXFwiLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ2F2YXRhcicsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVybDogXFxcXFxcXCJoaWtlcjovL3BhZ2UvdXBIb21lXFxcXFxcXCIsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGV4dHJhOiB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIG1pZDogbGlzdC5taWQsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBsaXN0LnVuYW1lLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBmYWNlOiBsaXN0LmZhY2VcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfVxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIH1cXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgYnJlYWs7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGNhc2UgJ+aUtuiXjyc6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIGlmIChwYWdlID09IDEpIHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKGdldEl0ZW0oJ+aUtuiXj+exu+WeiycsICfmiJHliJvlu7rnmoTmlLbol4/lpLknKSA9PSAn5oiR5Yib5bu655qE5pS26JeP5aS5Jykge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkLnB1c2goe1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB1cmw6ICdoaWtlcjovL2VtcHR5JyxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6ICfiiLcnLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBleHRyYToge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZDogJ+WNoOS9jeespicsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH1cXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNvbGxlY3Rpb25zID0gSlNPTi5wYXJzZShmZXRjaChcXFxcXFxcImh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3YzL2Zhdi9mb2xkZXIvbGlzdDRuYXZpZ2F0ZVxcXFxcXFwiLCB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGhlYWRlcnM6IHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgXFxcXFxcXCJDb29raWVcXFxcXFxcIjogY29va2llXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH1cXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSkpLmRhdGE7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGdyb3VwcyA9IGNvbGxlY3Rpb25zWzBdLm1lZGlhTGlzdFJlc3BvbnNlLmxpc3Q7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHB1dE15VmFyKCd0ZW1wSWQnLCBKU09OLnN0cmluZ2lmeShncm91cHNbMF0uaWQpKTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZ3JvdXBzLmZvckVhY2gobGlzdCA9PiB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGQucHVzaCh7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBsaXN0LmlkID09IGdldEl0ZW0oJ+aUtuiXj+WkuScsIEpTT04uc3RyaW5naWZ5KGdyb3Vwc1swXS5pZCkpID8gXFxcXFxcXCLigJzigJzigJ3igJ08Zm9udCBjb2xvcj0ncmVkJz5cXFxcXFxcIiArIGxpc3QudGl0bGUgKyBcXFxcXFxcIjwvZm9udD5cXFxcXFxcIiA6IGxpc3QudGl0bGUsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVybDogJCgnI25vTG9hZGluZyMjbm9IaXN0b3J5IycpLmxhenlSdWxlKChsaXN0KSA9PiB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHNldEl0ZW0oJ+aUtuiXj+WkuScsIEpTT04uc3RyaW5naWZ5KGxpc3QuaWQpKTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybiBcXFxcXFxcInRvYXN0Oi8v5YiH5o2i5pS26JeP5aS55Li6OlxcXFxcXFwiICsgbGlzdC50aXRsZTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSwgbGlzdCksXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbicsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZC5wdXNoKHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdsaW5lJ1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZ3JvdXBDb250ZW50ID0gSlNPTi5wYXJzZShmZXRjaChcXFxcXFxcImh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3YzL2Zhdi9yZXNvdXJjZS9saXN0P21lZGlhX2lkPVxcXFxcXFwiICsgZ2V0SXRlbSgn5pS26JeP5aS5JywgZ2V0TXlWYXIoJ3RlbXBJZCcpKSArIFxcXFxcXFwiJnBuPVxcXFxcXFwiICsgcGFnZSArIFxcXFxcXFwiJnBzPTIwJmtleXdvcmQ9Jm9yZGVyPW10aW1lJnR5cGU9MCZ0aWQ9MCZwbGF0Zm9ybT13ZWImanNvbnA9anNvbnBcXFxcXFxcIiwge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBoZWFkZXJzOiB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIFxcXFxcXFwiQ29va2llXFxcXFxcXCI6IGNvb2tpZVxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pKS5kYXRhLm1lZGlhcztcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZ3JvdXBDb250ZW50LmZvckVhY2gobGlzdCA9PiB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGQucHVzaCh7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBsaXN0LnRpdGxlLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpbWc6IGxpc3QuY292ZXIgKyBcXFxcXFxcIkBSZWZlcmVyPVxcXFxcXFwiLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB1cmw6IFxcXFxcXFwiaGlrZXI6Ly9wYWdlL3ZpZGVvXFxcXFxcXCIsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGRlc2M6ICdVUDonICsgbGlzdC51cHBlci5uYW1lICsgJ1xcXFxcXFxcbicgKyBsaXN0LmludHJvLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBleHRyYToge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBhaWQ6IGxpc3QuaWRcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfVxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0gZWxzZSB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGxhdGVyVmlld3MgPSBKU09OLnBhcnNlKGZldGNoKFxcXFxcXFwiaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvdjIvaGlzdG9yeS90b3ZpZXcvd2ViP2pzb25wPWpzb25wXFxcXFxcXCIsIHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaGVhZGVyczoge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBcXFxcXFxcIkNvb2tpZVxcXFxcXFwiOiBjb29raWVcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfVxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KSkuZGF0YTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY291bnQgPSBsYXRlclZpZXdzLmNvdW50O1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkLnB1c2goe1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogXFxcXFxcXCLlhbHmnIlcXFxcXFxcIiArIGNvdW50ICsgXFxcXFxcXCLmnaHlvoXnnIvop4bpopHorrDlvZVcXFxcXFxcIixcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiBcXFxcXFxcImhpa2VyOi8vZW1wdHlcXFxcXFxcIixcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6IFxcXFxcXFwidGV4dF9jZW50ZXJfMVxcXFxcXFwiXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBsYXRlclZpZXdzLmxpc3QuZm9yRWFjaChsaXN0ID0+IHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZC5wdXNoKHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IGxpc3QudGl0bGUsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGltZzogbGlzdC5waWMgKyBcXFxcXFxcIkBSZWZlcmVyPVxcXFxcXFwiLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB1cmw6IFxcXFxcXFwiaGlrZXI6Ly9wYWdlL3ZpZGVvXFxcXFxcXCIsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGRlc2M6ICdVUDonICsgbGlzdC5vd25lci5uYW1lICsgJ1xcXFxcXFxcbicgKyBsaXN0LmRlc2MsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGV4dHJhOiB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGFpZDogbGlzdC5haWRcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfVxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH1cXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgfVxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCBicmVhaztcXFxcblxcXFxuwqAgwqAgwqAgwqAgY2FzZSAn6K6i6ZiFJzpcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgc3Vic2NyaXB0aW9ucyA9IEpTT04ucGFyc2UoZmV0Y2goXFxcXFxcXCJodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9iYW5ndW1pL2ZvbGxvdy9saXN0P3R5cGU9XFxcXFxcXCIgKyBnZXRJdGVtKCforqLpmIXnsbvlnosnLCAnMScpICsgXFxcXFxcXCImZm9sbG93X3N0YXR1cz0wJnBuPVxcXFxcXFwiICsgcGFnZSArIFxcXFxcXFwiJnBzPTE1JnZtaWQ9XFxcXFxcXCIgKyBtaWQsIHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaGVhZGVyczoge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBcXFxcXFxcIkNvb2tpZVxcXFxcXFwiOiBjb29raWVcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfVxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCB9KSkuZGF0YTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgaWYgKGdldEl0ZW0oJ+iuoumYheexu+WeiycsICcxJykgPT0gJzEnKSB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHR5cGVyTmFtZSA9ICfov73nlaonO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCB9IGVsc2Uge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0eXBlck5hbWUgPSAn6L+95YmnJztcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgfVxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCBpZiAocGFnZSA9PSAxKSB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGQucHVzaCh7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBcXFxcXFxcIuW9k+WJjVxcXFxcXFwiICsgdHlwZXJOYW1lICsgXFxcXFxcXCLmlbDph486XFxcXFxcXCIgKyBzdWJzY3JpcHRpb25zLnRvdGFsLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB1cmw6IFxcXFxcXFwiaGlrZXI6Ly9lbXB0eVxcXFxcXFwiLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogXFxcXFxcXCJ0ZXh0X2NlbnRlcl8xXFxcXFxcXCJcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSlcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgfVxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCBzdWJzY3JpcHRpb25zLmxpc3QuZm9yRWFjaChsaXN0ID0+IHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZC5wdXNoKHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IGxpc3QudGl0bGUsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGltZzogbGlzdC5jb3ZlciArIFxcXFxcXFwiQFJlZmVyZXI9XFxcXFxcXCIsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVybDogXFxcXFxcXCJoaWtlcjovL3BhZ2UvZmlsbWVyamkjaW1tZXJzaXZlVGhlbWUjXFxcXFxcXCIsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGRlc2M6IGxpc3QuZXZhbHVhdGUuc3Vic3RyaW5nKDAsIDEyKSArICfigJjigJjigJnigJnigKY8Zm9udCBjb2xvcj1cXFxcXFxcIiMxQzFDMUNcXFxcXFxcIj7or6bmg4U8L2ZvbnQ+JyArICdcXFxcXFxcXG4nICsgbGlzdC5zZWFzb25fdHlwZV9uYW1lICsgJ3wnICsgbGlzdC5hcmVhc1swXS5uYW1lICsgJ1xcXFxcXFxcbicgKyAobGlzdC5wcm9ncmVzcyA9PSAnJyA/ICflsJrmnKrop4LnnIsnIDogbGlzdC5wcm9ncmVzcykgKyAnfCcgKyAobGlzdC5uZXdfZXAuaW5kZXhfc2hvdy5tYXRjaCgv5pu05pawLykgPyAn4oCY4oCY4oCZ4oCZPGZvbnQgY29sb3I9XFxcXFxcXCJyZWRcXFxcXFxcIj4nICsgbGlzdC5uZXdfZXAuaW5kZXhfc2hvdyArICc8L2ZvbnQ+JyA6IGxpc3QubmV3X2VwLmluZGV4X3Nob3cpLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ21vdmllXzFfdmVydGljYWxfcGljJyxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZXh0cmE6IHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgc2Vhc29uX2lkOiBsaXN0LnNlYXNvbl9pZFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCB9KTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgYnJlYWs7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGNhc2UgJ+WOhuWPsic6XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIHZhciBuZXh0SW5mbyA9IHt9O1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCBpZiAocGFnZSA9PSAxKSB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGhpc3RvcmllcyA9IEpTT04ucGFyc2UoZmV0Y2goXFxcXFxcXCJodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL2hpc3RvcnkvY3Vyc29yP21heD0wJnZpZXdfYXQ9MCZidXNpbmVzcz1cXFxcXFxcIiwge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBoZWFkZXJzOiB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIFxcXFxcXFwiQ29va2llXFxcXFxcXCI6IGNvb2tpZVxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pKS5kYXRhO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBuZXh0SW5mby5tYXggPSBoaXN0b3JpZXMuY3Vyc29yLm1heDtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgbmV4dEluZm8udmlld19hdCA9IGhpc3Rvcmllcy5jdXJzb3Iudmlld19hdDtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgbmV4dEluZm8uYnVzaW5lc3MgPSBoaXN0b3JpZXMuY3Vyc29yLmJ1c2luZXNzO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCB9IGVsc2Uge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBoaXN0b3JpZXMgPSBKU09OLnBhcnNlKGZldGNoKFxcXFxcXFwiaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS9oaXN0b3J5L2N1cnNvcj9tYXg9XFxcXFxcXCIgKyBzdG9yYWdlMC5nZXRNeVZhcihKU09OLnN0cmluZ2lmeShwYWdlKSkubWF4ICsgXFxcXFxcXCImdmlld19hdD1cXFxcXFxcIiArIHN0b3JhZ2UwLmdldE15VmFyKEpTT04uc3RyaW5naWZ5KHBhZ2UpKS52aWV3X2F0ICsgXFxcXFxcXCImYnVzaW5lc3M9XFxcXFxcXCIgKyBzdG9yYWdlMC5nZXRNeVZhcihKU09OLnN0cmluZ2lmeShwYWdlKSkuYnVzaW5lc3MsIHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaGVhZGVyczoge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBcXFxcXFxcIkNvb2tpZVxcXFxcXFwiOiBjb29raWVcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfVxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KSkuZGF0YTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgbmV4dEluZm8ubWF4ID0gaGlzdG9yaWVzLmN1cnNvci5tYXg7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIG5leHRJbmZvLnZpZXdfYXQgPSBoaXN0b3JpZXMuY3Vyc29yLnZpZXdfYXQ7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIG5leHRJbmZvLmJ1c2luZXNzID0gaGlzdG9yaWVzLmN1cnNvci5idXNpbmVzcztcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgfVxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCBzdG9yYWdlMC5wdXRNeVZhcihKU09OLnN0cmluZ2lmeShwYWdlICsgMSksIG5leHRJbmZvKTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgaGlzdG9yaWVzLmxpc3QuZm9yRWFjaChsaXN0ID0+IHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgLy8g6L+Y5pyJ6KaB5Yik5pat55Wq5Ymn5b2x6KeG57G75Z6LXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlmIChsaXN0LmJhZGdlID09ICfkuJPmoI8nKSB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIC8vIOWQjue7reWkhOeQhlxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkLnB1c2goe1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogbGlzdC5zaG93X3RpdGxlLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpbWc6IGxpc3QuY292ZXJzWzBdICsgXFxcXFxcXCJAUmVmZXJlcj1cXFxcXFxcIixcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdtb3ZpZV8xX2xlZnRfcGljJyxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiBcXFxcXFxcImhpa2VyOi8vcGFnZS9ub3RlI2ltbWVyc2l2ZVRoZW1lI1xcXFxcXFwiLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkZXNjOiAnVVA6JyArIGxpc3QuYXV0aG9yX25hbWUgKyAnXFxcXFxcXFxuJyArIGxpc3QudGFnX25hbWUsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGV4dHJhOiB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGFpZDogbGlzdC5oaXN0b3J5Lm9pZCxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfVxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSBlbHNlIHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZC5wdXNoKHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IGxpc3Quc2hvd190aXRsZSxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaW1nOiBsaXN0LmNvdmVyICsgXFxcXFxcXCJAUmVmZXJlcj1cXFxcXFxcIixcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdtb3ZpZV8xX2xlZnRfcGljJyxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiBcXFxcXFxcImhpa2VyOi8vcGFnZS92aWRlbyNpbW1lcnNpdmVUaGVtZSNcXFxcXFxcIixcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZGVzYzogJ1VQOicgKyBsaXN0LmF1dGhvcl9uYW1lICsgJ1xcXFxcXFxcbicgKyBsaXN0LnRhZ19uYW1lLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBleHRyYToge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBhaWQ6IGxpc3QuaGlzdG9yeS5vaWQsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH1cXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH1cXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIGJyZWFrO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBkZWZhdWx0OlxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCBsb2coJ+WHuumUmeS6hn4nKTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgYnJlYWs7XFxcXG5cXFxcbsKgIMKgIH1cXFxcblxcXFxufVxcXFxuXFxcXG5cXFxcblxcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIueZu+W9lVxcXCIsXFxcInBhdGhcXFwiOlxcXCJsb2dpblxcXCIsXFxcInJ1bGVcXFwiOlxcXCJqczpcXFxcblxcXFxudmFyIGQgPSBbXTtcXFxcblxcXFxuLy8g5aaC5p6c6I635Y+W5aSx6LSl5bCx5YaN6K+V5LiA5qyhflxcXFxuXFxcXG5kLnB1c2goe1xcXFxuXFxcXG7CoCDCoCB1cmw6IFxcXFxcXFwiaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL1xcXFxcXFwiLFxcXFxuXFxcXG7CoCDCoCBjb2xfdHlwZTogXFxcXFxcXCJ4NV93ZWJ2aWV3X3NpbmdsZVxcXFxcXFwiLFxcXFxuXFxcXG7CoCDCoCBkZXNjOiBcXFxcXFxcIjEwMCUmJmZsb2F0XFxcXFxcXCIsXFxcXG5cXFxcbsKgIMKgIGV4dHJhOiB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGpzOiAkLnRvU3RyaW5nKCgpID0+IHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgZmJhLnNldEFwcEJhckNvbG9yKFxcXFxcXFwicGlua1xcXFxcXFwiKTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgdmFyIHRva2VuX3RpbWVyID0gZnVuY3Rpb24gKCkge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB2YXIgdGltZXIgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIC8vIGlmIChkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFxcXFxcXFwiaGVhZGVyLWxvZ2luLWVudHJ5XFxcXFxcXCIpWzBdID09PSB1bmRlZmluZWQpIHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXFxcXFxcXCJ1bmxvZ2luLWF2YXRhclxcXFxcXFwiKVswXSA9PT0gdW5kZWZpbmVkKSB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHNldHRpbmdzID0gSlNPTi5zdHJpbmdpZnkoe1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb29raWU6IGZiYS5nZXRDb29raWUoXFxcXFxcXCJodHRwczovL3d3dy5iaWxpYmlsaS5jb20vXFxcXFxcXCIpLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBmYWNlOiAnaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL21vdmllLzIwLnN2ZydcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGZiYS53cml0ZUZpbGUoXFxcXFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2JpbGkudHh0XFxcXFxcXCIsIHNldHRpbmdzKTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgYWxlcnQoXFxcXFxcXCLlt7Lojrflj5bliLBjb29raWVcXFxcXFxcIik7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGZiYS5iYWNrKClcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfVxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9LCAxMDApXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIH07XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIHRva2VuX3RpbWVyKCk7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIH0pLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCB1YTogUENfVUEsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIGNhbkJhY2s6IHRydWVcXFxcblxcXFxuwqAgwqAgfVxcXFxuXFxcXG59KVxcXFxuXFxcXG5zZXRSZXN1bHQoZCk7XFxcXG5cXFxcblxcXFxuanM6XFxcXG5cXFxcbnZhciBkID0gW107XFxcXG5cXFxcbi8vIOWmguaenOiOt+WPluWksei0peWwseWGjeivleS4gOasoX5cXFxcblxcXFxuZC5wdXNoKHtcXFxcblxcXFxuwqAgwqAgdXJsOiBcXFxcXFxcImh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS9cXFxcXFxcIixcXFxcblxcXFxuwqAgwqAgY29sX3R5cGU6IFxcXFxcXFwieDVfd2Vidmlld19zaW5nbGVcXFxcXFxcIixcXFxcblxcXFxuwqAgwqAgZGVzYzogXFxcXFxcXCIxMDAlJiZmbG9hdFxcXFxcXFwiLFxcXFxuXFxcXG7CoCDCoCBleHRyYToge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBqczogJC50b1N0cmluZygoKSA9PiB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIGZiYS5zZXRBcHBCYXJDb2xvcihcXFxcXFxcInBpbmtcXFxcXFxcIik7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIHZhciB0b2tlbl90aW1lciA9IGZ1bmN0aW9uICgpIHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdmFyIHRpbWVyID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAvLyBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcXFxcXFxcImhlYWRlci1sb2dpbi1lbnRyeVxcXFxcXFwiKVswXSA9PT0gdW5kZWZpbmVkKSB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFxcXFxcXFwidW5sb2dpbi1hdmF0YXJcXFxcXFxcIilbMF0gPT09IHVuZGVmaW5lZCkge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBzZXR0aW5ncyA9IEpTT04uc3RyaW5naWZ5KHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29va2llOiBmYmEuZ2V0Q29va2llKFxcXFxcXFwiaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL1xcXFxcXFwiKSxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZmFjZTogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9tb3ZpZS8yMC5zdmcnXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBmYmEud3JpdGVGaWxlKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9iaWxpLnR4dFxcXFxcXFwiLCBzZXR0aW5ncyk7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGFsZXJ0KFxcXFxcXFwi5bey6I635Y+W5YiwY29va2llXFxcXFxcXCIpO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBmYmEuYmFjaygpXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH1cXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSwgMTAwKVxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCB9O1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCB0b2tlbl90aW1lcigpO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCB9KSxcXFxcblxcXFxuwqAgwqAgwqAgwqAgdWE6IFBDX1VBLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCBjYW5CYWNrOiB0cnVlXFxcXG5cXFxcbsKgIMKgIH1cXFxcblxcXFxufSlcXFxcblxcXFxuc2V0UmVzdWx0KGQpO1xcXFxuXFxcXG5cXFxcblxcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIuW9seinhuS6jOe6p1xcXCIsXFxcInBhdGhcXFwiOlxcXCJmaWxtZXJqaVxcXCIsXFxcInJ1bGVcXFwiOlxcXCJqczpcXFxcbi8vIOaVsOaNruWumuS9jVxcXFxudmFyIGQgPSBbXTtcXFxcbmlmIChNWV9QQVJBTVMuc2Vhc29uX2lkKSB7XFxcXG4gICAgc2Vhc29uX2lkID0gTVlfUEFSQU1TLnNlYXNvbl9pZCArIFxcXFxcXFwiXFxcXFxcXCI7XFxcXG4gICAgRGF0YSA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS9wZ2Mvdmlldy93ZWIvc2Vhc29uP3NlYXNvbl9pZD0nICsgc2Vhc29uX2lkKSkucmVzdWx0O1xcXFxufSBlbHNlIHtcXFxcbiAgICBEYXRhID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3BnYy92aWV3L3dlYi9zZWFzb24/ZXBfaWQ9JyArIE1ZX1BBUkFNUy5lcF9pZCkpLnJlc3VsdDtcXFxcbn1cXFxcbuWwgemdoiA9IERhdGEuY292ZXIgKyBcXFxcXFxcIkBSZWZlcmVyPVxcXFxcXFwiO1xcXFxu5Zyw5Yy6ID0gRGF0YS5hcmVhc1swXS5uYW1lO1xcXFxu566A5LuLID0gRGF0YS5ldmFsdWF0ZTtcXFxcbi8vIOato+eJh1xcXFxu57G75Z6LID0gRGF0YS5wb3NpdGl2ZS50aXRsZTtcXFxcbuS4iuaYoOaXtumXtCA9IERhdGEucHVibGlzaC5wdWJfdGltZTtcXFxcbnRyeSB7XFxcXG4gICAg5b6X5YiGID0gRGF0YS5yYXRpbmcuc2NvcmU7XFxcXG59IGNhdGNoIChlKSB7XFxcXG4gICAg5b6X5YiGID0gJ+aaguaXoOW+lyc7XFxcXG59XFxcXG7ov73liafml6XljoYgPSBEYXRhLm5ld19lcC5kZXNjO1xcXFxu5pu05paw6L+b5bqmID0gRGF0YS5uZXdfZXAudGl0bGU7XFxcXG7lvbHniYflkI3np7AgPSBEYXRhLnRpdGxlO1xcXFxu56ys5LqM5qCH6aKYID0gRGF0YS5zaGFyZV9zdWJfdGl0bGU7XFxcXG7liafpm4bliJfooaggPSBEYXRhLmVwaXNvZGVzO1xcXFxu55+t6K6vID0gXFxcXFxcXCLirZBcXFxcXFxcIiArIOexu+WeiyArIFxcXFxcXFwi4q2QXFxcXFxcXCIgKyDnrKzkuozmoIfpopggKyAnXFxcXFxcXFxuJyArIOWcsOWMuiArICctJyArIOW+l+WIhiArICfliIZcXFxcXFxcXG4tJyArIOS4iuaYoOaXtumXtCArICctJztcXFxcbi8vIOmHjeWumuS5ieS6jOe6p+mhtemdouaVsOaNrlxcXFxuc2V0UGFnZVRpdGxlKOW9seeJh+WQjeensCk7XFxcXG5zZXRQYWdlUGljVXJsKOWwgemdoik7XFxcXG4vLyDliY3nva7lj4LmlbDlkozpooTlpITnkIYtLS1cXFxcbmltZ0xpbmsgPSBzdG9yYWdlMC5nZXRNeVZhcign5Zu+5qCHJyk7XFxcXG4vLyDlhajlsYBsYXp54oCU4oCU55u06ZO+K+aWreaPklxcXFxudmFyIGxhenkgPSAkKCcnKS5sYXp5UnVsZSgoKSA9PiB7XFxcXG4gICAgdmlkZW9QYXJtcyA9IGZpbmRJdGVtKGlucHV0KTtcXFxcbiAgICBhaWQgPSB2aWRlb1Bhcm1zLmV4dHJhLmFpZDtcXFxcbiAgICBidmlkID0gdmlkZW9QYXJtcy5leHRyYS5idmlkO1xcXFxuICAgIGNpZCA9IHZpZGVvUGFybXMuZXh0cmEuY2lkO1xcXFxuICAgIGJhZGdlID0gdmlkZW9QYXJtcy5leHRyYS5iYWRnZTtcXFxcbiAgICAvLyDmj5DkuqTljoblj7LorrDlvZVcXFxcbiAgICAkLnJlcXVpcmUoXFxcXFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcXFxcXCIpLnJlcG9ydFByb2Nlc3MoYWlkLCBjaWQpO1xcXFxuICAgIGlmIChnZXRNeVZhcignYXV0aG9yaXR5JywgJ25vcm1hbCcpID09ICdTVklQJykge1xcXFxuICAgICAgICByZXR1cm4gJC5yZXF1aXJlKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXFxcXFwiKS5iaWxpTGF6eShhaWQsIGNpZCwgMTE2KS5yZXBsYWNlKC87L2csIFxcXFxcXFwi77yb77ybXFxcXFxcXCIpO1xcXFxuICAgIH0gZWxzZSB7XFxcXG4gICAgICAgIGlmIChiYWRnZS5tYXRjaCgv5Lya5ZGYfOS7mOi0uS8pKSB7XFxcXG4gICAgICAgICAgICBldmFsKFxcXFxcXFwidmFyIGNvbmZpZyA9XFxcXFxcXCIgKyBmZXRjaChcXFxcXFxcImhpa2VyOi8vZmlsZXMvY2FjaGUvTXlQYXJzZVNldC5qc29uXFxcXFxcXCIpKTtcXFxcbiAgICAgICAgICAgIGV2YWwoZmV0Y2goJ2hpa2VyOi8vZmlsZXMvY2FjaGUvUGFyc2VfRG4uanMnLCB7fSkpO1xcXFxuICAgICAgICAgICAgcmV0dXJuIGF5dG1QYXJzZShpbnB1dCk7XFxcXG4gICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICByZXR1cm4gJC5yZXF1aXJlKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXFxcXFwiKS5iaWxpTGF6eShhaWQsIGNpZCwgMTE2KS5yZXBsYWNlKC87L2csIFxcXFxcXFwi77yb77ybXFxcXFxcXCIpO1xcXFxuICAgICAgICB9XFxcXG4gICAgfVxcXFxufSk7XFxcXG52YXIgQ29sb3IgPSBcXFxcXFxcIiMxOUI4OURcXFxcXFxcIjtcXFxcbnZhciDmr4/pobXpm4bmlbAgPSAzMDtcXFxcbnZhciDmkJzntKLmqKHlvI8gPSAn5YiG57uEJztcXFxcbnZhciDosIPnlKjlkI3np7AgPSAn566A5b2xJztcXFxcbnB1dE15VmFyKCfmipjlj6AnLCAn5YWzJyk7XFxcXG5wdXRNeVZhcign5pel5Y6GJywgJ+WFsycpO1xcXFxucHV0TXlWYXIoJ0RhdGEnLCBEYXRhKTtcXFxcbnB1dE15VmFyKCdsYXp5JywgbGF6eSk7XFxcXG4vLyDmuIXpmaTlj5jph49cXFxcbmFkZExpc3RlbmVyKCdvbkNsb3NlJywgJC50b1N0cmluZygoKSA9PiB7XFxcXG4gICAgY2xlYXJNeVZhcign5YiG6ZuG6LW3Jyk7XFxcXG4gICAgY2xlYXJNeVZhcign5YiG6ZuG57uIJyk7XFxcXG4gICAgY2xlYXJNeVZhcign5oqY5Y+gJyk7XFxcXG4gICAgY2xlYXJNeVZhcign5pel5Y6GJyk7XFxcXG4gICAgY2xlYXJNeVZhcignRGF0YScpO1xcXFxuICAgIGNsZWFyTXlWYXIoJ2xhenknKTtcXFxcbiAgICBjbGVhck15VmFyKCfliafpm4bliJfooagnKTtcXFxcbn0pKVxcXFxuLy8g6K6+572u5Yqo5oCB5pyA5paw56ug6IqCXFxcXG5zZXRMYXN0Q2hhcHRlclJ1bGUoJ2pzOicgKyAkLnRvU3RyaW5nKChNWV9VUkwpID0+IHtcXFxcbiAgICBodG1sID0gZmV0Y2goTVlfVVJMKTtcXFxcbiAgICBEYXRhID0gSlNPTi5wYXJzZShodG1sLm1hdGNoKC9cXFxcXFxcIm1lZGlhSW5mb1xcXFxcXFwiW1xcXFxcXFxcU1xcXFxcXFxcc10rKD89LFxcXFxcXFwiaW5pdEVwTGlzdFxcXFxcXFwiKS8pWzBdLnJlcGxhY2UoJ1xcXFxcXFwibWVkaWFJbmZvXFxcXFxcXCI6JywgJycpLnJlcGxhY2UoJ1xcXFxcXFxcdTAwMkYnLCAnLycpKTtcXFxcbiAgICDov73liafml6XljoYgPSBEYXRhLm5ld19lcC5kZXNjO1xcXFxuICAgIOabtOaWsOi/m+W6piA9IERhdGEubmV3X2VwLnRpdGxlO1xcXFxuICAgIOabtOaWsOeKtuaAgSA9IOi/veWJp+aXpeWOhi5tYXRjaCgv5a6M57uTfOacn+W+hS8pID8g6L+95Ymn5pel5Y6GIDogJ+abtOaWsOiHsycgKyAo5pu05paw6L+b5bqmLm1hdGNoKC9bXFxcXFxcXFx1NGUwMC1cXFxcXFxcXHU5ZmE1XS8pID8g5pu05paw6L+b5bqmIDogKCfnrKwnICsgKOabtOaWsOi/m+W6piA9PSAnJyA/IDAgOiDmm7TmlrDov5vluqYpKSArICfor50nKVxcXFxuICAgIHNldFJlc3VsdCjmm7TmlrDnirbmgIEpO1xcXFxufSwgTVlfVVJMKSk7XFxcXG4vLyDpobXpnaLlhoXlrrnmraPmloctLS1cXFxcbi8vIOWfuuacrOS/oeaBr+aooeWdl1xcXFxuZC5wdXNoKHtcXFxcbiAgICB0aXRsZTog55+t6K6vLFxcXFxuICAgIGRlc2M6IOeugOS7iyA9PSAnJyA/ICfmmoLml6DnroDku4snIDog566A5LuLLnN1YnN0cmluZygwLCA0NSkgKyAn4oCY4oCY4oCZ4oCZ4oCmPGZvbnQgY29sb3I9XFxcXFxcXCIjMUMxQzFDXFxcXFxcXCI+6K+m5oOFPC9mb250PicsXFxcXG4gICAgaW1nOiDlsIHpnaIsXFxcXG4gICAgdXJsOiAkKCkucnVsZSgo566A5LuLKSA9PiB7XFxcXG4gICAgICAgIHJlcyA9IHt9O1xcXFxuICAgICAgICB2YXIgZCA9IFtdO1xcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgdGl0bGU6ICflvbHniYfnroDku4vvvJonICsgJ1xcXFxcXFxcblxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdCcgKyDnroDku4ssXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ2xvbmdfdGV4dCdcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgICAgIHJlcy5kYXRhID0gZDtcXFxcbiAgICAgICAgc2V0SG9tZVJlc3VsdChyZXMpO1xcXFxuICAgIH0sIOeugOS7iyksXFxcXG4gICAgY29sX3R5cGU6ICdtb3ZpZV8xX3ZlcnRpY2FsX3BpY19ibHVyJyxcXFxcbn0pO1xcXFxuLy8g5pu05paw5pel5Y6G5qih5Z2XXFxcXG5kLnB1c2goe1xcXFxuICAgIHRpdGxlOiAn5pel5Y6GJyxcXFxcbiAgICBpbWc6IGltZ0xpbmsu5pel5Y6GLFxcXFxuICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgo6L+95Ymn5pel5Y6GLCDmm7TmlrDov5vluqYpID0+IHtcXFxcbiAgICAgICAgaWYgKGdldE15VmFyKCfml6XljoYnLCAn5YWzJykgPT0gJ+W8gCcpIHtcXFxcbiAgICAgICAgICAgIGRlbGV0ZUl0ZW0oJ+i/veWJp+aXpeWOhicpO1xcXFxuICAgICAgICAgICAgcHV0TXlWYXIoJ+aXpeWOhicsICflhbMnKTtcXFxcbiAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgIGFkZEl0ZW1BZnRlcign5pi+56S65qih5byPJywge1xcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiDov73liafml6XljoYubWF0Y2goL+WujOe7k3zmnJ/lvoUvKSA/IOi/veWJp+aXpeWOhiA6IOi/veWJp+aXpeWOhiArICc8YnI+PGZvbnQgY29sb3I9XFxcXFxcXCJyZWRcXFxcXFxcIj7mm7TmlrDoh7MnICsgKOabtOaWsOi/m+W6pi5tYXRjaCgvW1xcXFxcXFxcdTRlMDAtXFxcXFxcXFx1OWZhNV0vKSA/IOabtOaWsOi/m+W6piA6ICgn56ysJyArICjmm7TmlrDov5vluqYgPT0gJycgPyAwIDog5pu05paw6L+b5bqmKSArICfor50nKSkgKyAnPC9mb250PicsXFxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwicmljaF90ZXh0XFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgaWQ6ICfov73liafml6XljoYnXFxcXG4gICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICBwdXRNeVZhcign5pel5Y6GJywgJ+W8gCcpO1xcXFxuICAgICAgICB9XFxcXG4gICAgICAgIHJldHVybiAndG9hc3Q6Ly/lt7LliIfmjaLml6XljobkuLo6JyArIGdldE15VmFyKCfml6XljoYnLCAn5byAJylcXFxcbiAgICB9LCDov73liafml6XljoYsIOabtOaWsOi/m+W6piksXFxcXG4gICAgY29sX3R5cGU6ICdpY29uXzUnXFxcXG59KTtcXFxcbi8vIOiuoumYheaooeWdl1xcXFxuZC5wdXNoKHtcXFxcbiAgICB0aXRsZTogJ+iuoumYhScsXFxcXG4gICAgaW1nOiBpbWdMaW5rLuiuoumYhSxcXFxcbiAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcXFxuICAgICAgICBzZWxlY3Rpb25MaXN0ID0gWyforqLpmIUnLCAn5Y+W5raI6K6i6ZiFJ107XFxcXG4gICAgICAgIHJldHVybiAkKHNlbGVjdGlvbkxpc3QsIDIpLnNlbGVjdCgoKSA9PiB7XFxcXG4gICAgICAgICAgICBzZWFzb25faWQgPSBKU09OLnBhcnNlKGdldE15VmFyKCdEYXRhJykpLnNlYXNvbl9pZDtcXFxcbiAgICAgICAgICAgIGlmIChpbnB1dCA9PSAn6K6i6ZiFJykge1xcXFxuICAgICAgICAgICAgICAgIHJlcyA9ICQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vcGFnZS9hcGlcXFxcXFxcIikuc3Vic2NyaWJlRmlsbShzZWFzb25faWQpO1xcXFxuICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICByZXMgPSAkLnJlcXVpcmUoXFxcXFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcXFxcXCIpLmNhbmNlbFN1YnNjcmliZUZpbG0oc2Vhc29uX2lkKTtcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly8nICsgcmVzO1xcXFxuICAgICAgICB9KTtcXFxcbiAgICB9KSxcXFxcbiAgICBjb2xfdHlwZTogJ2ljb25fNSdcXFxcbn0pO1xcXFxuLy8g6K+E6K665qih5Z2XXFxcXG5kLnB1c2goe1xcXFxuICAgIHRpdGxlOiAn6K+E6K66JyxcXFxcbiAgICBpbWc6IGltZ0xpbmsu5p+l55yL6K+E6K66LFxcXFxuICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxcXG4gICAgICAgIHJldHVybiAkKCdoaWtlcjovL2VtcHR5JykucnVsZSgoKSA9PiB7XFxcXG4gICAgICAgICAgICB2YXIgZCA9IFtdO1xcXFxuICAgICAgICAgICAgTGlzdCA9IEpTT04ucGFyc2UoZ2V0TXlWYXIoJ0RhdGEnKSkuZXBpc29kZXM7XFxcXG4gICAgICAgICAgICBMaXN0LmZvckVhY2goaXRlbSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0uc2hhcmVfY29weSArICc8Zm9udCBjb2xvcj1cXFxcXFxcIiMzM2NjY2NcXFxcXFxcIj5cXFxcdOKerjwvZm9udD4nLFxcXFxuICAgICAgICAgICAgICAgICAgICBpbWc6IGl0ZW0uY292ZXIgKyAnQFJlZmVyZXI9JyxcXFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL0NvbW1lbnRzP3A9ZnlwYWdlJyxcXFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwiYXZhdGFyXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxcImlkXFxcXFxcXCI6IGl0ZW0uYWlkLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgXFxcXFxcXCJ0eXBlXFxcXFxcXCI6IDFcXFxcbiAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICBzZXRSZXN1bHQoZCk7XFxcXG4gICAgICAgIH0pO1xcXFxuICAgIH0pLFxcXFxuICAgIGNvbF90eXBlOiAnaWNvbl81J1xcXFxufSk7XFxcXG5cXFxcbi8vIOeyvuW9qee7p+e7reaooeWdl1xcXFxuZC5wdXNoKHtcXFxcbiAgICB0aXRsZTogJ+WRqOi+uScsXFxcXG4gICAgaW1nOiBpbWdMaW5rLuWRqOi+uSxcXFxcbiAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcXFxuICAgICAgICBEYXRhID0gSlNPTi5wYXJzZShnZXRNeVZhcignRGF0YScpKTtcXFxcbiAgICAgICAgLy8g5pyJ5Lqb5rKh5pyJ55u05o6l5Y675o6J5oeS5b6X5aSE55CGflxcXFxuICAgICAgICBpZiAoRGF0YS5zZWN0aW9uKSB7XFxcXG4gICAgICAgICAgICDlkajovrnmlbDnu4QgPSBbXFxcXFxcXCLwn4+377iP55u45YWz57O75YiXXFxcXFxcXCIsIFxcXFxcXFwi8J+ko1BWJuiKsee1rlxcXFxcXFwiLCBcXFxcXFxcIvCfjYnnq5blsY/kuZ/nsr7lvalcXFxcXFxcIiwgXFxcXFxcXCLwn5Sl57K+5b2p5LqM5YibXFxcXFxcXCJdO1xcXFxuICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAg5ZGo6L655pWw57uEID0gW1xcXFxcXFwi8J+Pt++4j+ebuOWFs+ezu+WIl1xcXFxcXFwiXTtcXFxcbiAgICAgICAgfVxcXFxuICAgICAgICAvLyDlkajovrnmlbDnu4QgPSBbXFxcXFxcXCLwn4+377iP55u45YWz57O75YiXXFxcXFxcXCIsIFxcXFxcXFwi8J+ko1BWJuiKsee1rlxcXFxcXFwiLCBcXFxcXFxcIuerluWxj+S5n+eyvuW9qVxcXFxcXFwiLCBcXFxcXFxcIueyvuW9qeS6jOWIm1xcXFxcXFwiXTtcXFxcbiAgICAgICAgcmV0dXJuICQo5ZGo6L655pWw57uELCAxLCAn4YOm57K+5b2p57un57utJykuc2VsZWN0KCgpID0+IHtcXFxcbiAgICAgICAgICAgIERhdGEgPSBKU09OLnBhcnNlKGdldE15VmFyKCdEYXRhJykpO1xcXFxuICAgICAgICAgICAgbGF6eSA9IGdldE15VmFyKCdsYXp5Jyk7XFxcXG4gICAgICAgICAgICBpZiAoaW5wdXQgPT09ICfwn4+377iP55u45YWz57O75YiXJykge1xcXFxuICAgICAgICAgICAgICAgIOezu+WIl+WQjeensCA9IERhdGEuc2Vhc29uX3RpdGxlXFxcXG4gICAgICAgICAgICAgICAg57O75YiX5pWw5o2uID0gRGF0YS5zZWFzb25zO1xcXFxuICAgICAgICAgICAgICAgIHJldHVybiAkKCkucnVsZSgo57O75YiX5pWw5o2uKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgIGQgPSBbXTtcXFxcbiAgICAgICAgICAgICAgICAgICAgc2V0UGFnZVRpdGxlKCfwn4+377iP55u45YWz57O75YiXJyk7XFxcXG4gICAgICAgICAgICAgICAgICAgIGlmICjns7vliJfmlbDmja4gPT0gW10gfHwg57O75YiX5pWw5o2uID09ICcnKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPGJpZz48Zm9udCBjb2xvcj1cXFxcXFxcInJlZFxcXFxcXFwiPuKtkOivpeW9seeJh+ayoeacieebuOWFs+ezu+WIl+WTpn7irZA8L2ZvbnQ+PC9iaWc+JyxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICd0b2FzdDovL+mDveayoeacie+8jO+8jOS9oOeCueWVpeWRgH4nLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6ICfmlazor7fmnJ/lvoV+JyxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICDns7vliJfmlbDmja4uZm9yRWFjaChsaXN0ID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGxpc3Quc2Vhc29uX3RpdGxlLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZzogKGxpc3QuaG9yaXpvbnRhbF9jb3Zlcl8xNjEwID09ICcnID8gKGxpc3QuaG9yaXpvbnRhbF9jb3Zlcl8xNjkgPT0gJycgPyBsaXN0LmNvdmVyIDogbGlzdC5ob3Jpem9udGFsX2NvdmVyXzE2OSkgOiBsaXN0Lmhvcml6b250YWxfY292ZXJfMTYxMCkgKyBcXFxcXFxcIkBSZWZlcmVyPVxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9maWxtZXJqaSNpbW1lcnNpdmVUaGVtZSMnLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6IGxpc3QubmV3X2VwLmluZGV4X3Nob3csXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX2xlZnRfcGljJyxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxcImVwX2lkXFxcXFxcXCI6IGxpc3QubmV3X2VwLmlkXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgICAgICAgICBzZXRIb21lUmVzdWx0KGQpO1xcXFxuICAgICAgICAgICAgICAgIH0sIOezu+WIl+aVsOaNrilcXFxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5wdXQgPT09ICfwn6SjUFYm6Iqx57WuJykge1xcXFxuICAgICAgICAgICAgICAgIHRyeSB7XFxcXG4gICAgICAgICAgICAgICAgICAgIFBW5ZKM6Iqx57Wu5pWw5o2uID0gRGF0YS5zZWN0aW9uWzBdLmVwaXNvZGVzO1xcXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJCgpLnJ1bGUoKFBW5ZKM6Iqx57Wu5pWw5o2uLCBsYXp5KSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBkID0gW107XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRQYWdlVGl0bGUoJ/CfpKNQViboirHnta4nKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChQVuWSjOiKsee1ruaVsOaNriA9PSBbXSB8fCBQVuWSjOiKsee1ruaVsOaNriA9PSAnJykge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPGJpZz48Zm9udCBjb2xvcj1cXFxcXFxcInJlZFxcXFxcXFwiPuKtkOivpeW9seeJhy/op4bpopHmsqHmnInnm7jlhbNQVuWSjOiKsee1ruWTpn7irZA8L2ZvbnQ+PC9iaWc+JyxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAndG9hc3Q6Ly/pg73msqHmnInvvIzvvIzkvaDngrnllaXlkYB+JyxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogJ+aVrOivt+acn+W+hX4nLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBQVuWSjOiKsee1ruaVsOaNri5mb3JFYWNoKGxpc3QgPT4ge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBsaXN0LnRpdGxlLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc6IGxpc3QuY292ZXIgKyBcXFxcXFxcIkBSZWZlcmVyPVxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGxpc3QubGluayArIGxhenksXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6IGxpc3Quc3VidGl0bGUgKyAnXFxcXFxcXFxuJyArIGxpc3QubG9uZ190aXRsZSxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX2xlZnRfcGljJyxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBsaXN0LmxpbmssXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhaWQ6IGxpc3QuYWlkLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnZpZDogbGlzdC5idmlkLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2lkOiBsaXN0LmNpZCxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhZGdlOiBsaXN0LmJhZGdlXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0SG9tZVJlc3VsdChkKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgfSwgUFblkozoirHnta7mlbDmja4sIGxhenkpXFxcXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xcXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5rKh5pyJ5pWw5o2u5ZOmfidcXFxcbiAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlucHV0ID09PSAn8J+NieerluWxj+S5n+eyvuW9qScpIHtcXFxcbiAgICAgICAgICAgICAgICB0cnkge1xcXFxuICAgICAgICAgICAgICAgICAgICDnq5blsY/kuZ/nsr7lvanmlbDmja4gPSBEYXRhLnNlY3Rpb25bMV0uZXBpc29kZXM7XFxcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAkKCkucnVsZSgo56uW5bGP5Lmf57K+5b2p5pWw5o2uLCBsYXp5KSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBkID0gW107XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRQYWdlVGl0bGUoJ/CfjYnnq5blsY/kuZ/nsr7lvaknKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICjnq5blsY/kuZ/nsr7lvanmlbDmja4gPT0gW10gfHwg56uW5bGP5Lmf57K+5b2p5pWw5o2uID09ICcnKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfigJjigJjigJnigJk8YmlnPjxmb250IGNvbG9yPVxcXFxcXFwicmVkXFxcXFxcXCI+4q2Q6K+l5b2x54mHL+inhumikeayoeacieebuOWFs+erluWxj+efreinhumikeWTpn7irZA8L2ZvbnQ+PC9iaWc+JyxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAndG9hc3Q6Ly/pg73msqHmnInvvIzvvIzkvaDngrnllaXlkYB+JyxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogJ+aVrOivt+acn+W+hX4nLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICDnq5blsY/kuZ/nsr7lvanmlbDmja4uZm9yRWFjaChsaXN0ID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogbGlzdC50aXRsZSxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiBsaXN0LmNvdmVyICsgXFxcXFxcXCJAUmVmZXJlcj1cXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBsaXN0LmxpbmsgKyBsYXp5LFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiBsaXN0LnN1YnRpdGxlICsgJ1xcXFxcXFxcbicgKyBsaXN0LmxvbmdfdGl0bGUsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV9sZWZ0X3BpYycsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogbGlzdC5saW5rLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWlkOiBsaXN0LmFpZCxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ2aWQ6IGxpc3QuYnZpZCxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNpZDogbGlzdC5jaWQsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWRnZTogbGlzdC5iYWRnZVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldEhvbWVSZXN1bHQoZCk7XFxcXG4gICAgICAgICAgICAgICAgICAgIH0sIOerluWxj+S5n+eyvuW9qeaVsOaNriwgbGF6eSlcXFxcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/msqHmnInmlbDmja7lk6Z+J1xcXFxuICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5wdXQgPT09ICfwn5Sl57K+5b2p5LqM5YibJykge1xcXFxuICAgICAgICAgICAgICAgIHRyeSB7XFxcXG4gICAgICAgICAgICAgICAgICAgIOeyvuW9qeS6jOWIm+aVsOaNriA9IERhdGEuc2VjdGlvblsyXS5lcGlzb2RlcztcXFxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoKS5ydWxlKCjnsr7lvankuozliJvmlbDmja4sIGxhenkpID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBbXTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFBhZ2VUaXRsZSgn8J+UpeeyvuW9qeS6jOWImycpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKOeyvuW9qeS6jOWIm+aVsOaNriA9PSBbXSB8fCDnsr7lvankuozliJvmlbDmja4gPT0gJycpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxiaWc+PGZvbnQgY29sb3I9XFxcXFxcXCJyZWRcXFxcXFxcIj7irZDor6XlvbHniYcv6KeG6aKR5rKh5pyJ5LqM5Yib5L2c5ZOB5ZOmfuKtkDwvZm9udD48L2JpZz4nLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICd0b2FzdDovL+mDveayoeacie+8jO+8jOS9oOeCueWVpeWRgH4nLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiAn5pWs6K+35pyf5b6FficsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIOeyvuW9qeS6jOWIm+aVsOaNri5mb3JFYWNoKGxpc3QgPT4ge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOmSiOWvuemDqOWIhuWPguaVsOe8uuWkseeahOaDheWGteWmguWHoeS6uuS/ruS7meS8oOWGmeeahO+8jO+8jFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaXN0LmFpZCA9PSAwIHx8IGxpc3QuY2lkID09IDApIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmllZGVvRGF0YSA9IEpTT04ucGFyc2UoZmV0Y2goXFxcXFxcXCJodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXc/YWlkPVxcXFxcXFwiICsgbGlzdC5saW5rLnNwbGl0KCdhdicpWzFdLCB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcXFxcXCJVc2VyLUFnZW50XFxcXFxcXCI6IFBDX1VBLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXFxcXFwiUmVmZXJlclxcXFxcXFwiOiAnaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tLydcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6IFxcXFxcXFwiR0VUXFxcXFxcXCJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLmRhdGE7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFpZCA9IHZpZWRlb0RhdGEuYWlkO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidmlkID0gdmllZGVvRGF0YS5idmlkO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaWQgPSB2aWVkZW9EYXRhLmNpZDtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhaWQgPSBsaXN0LmFpZDtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnZpZCA9IGxpc3QuYnZpZDtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2lkID0gbGlzdC5jaWQ7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBsaXN0LnRpdGxlLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc6IGxpc3QuY292ZXIgKyBcXFxcXFxcIkBSZWZlcmVyPVxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGxpc3QubGluayArIGxhenksXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6IGxpc3Quc3VidGl0bGUgKyAnXFxcXFxcXFxuJyArIGxpc3QubG9uZ190aXRsZSxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX2xlZnRfcGljJyxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBsaXN0LmxpbmssXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhaWQ6IGFpZCxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ2aWQ6IGJ2aWQsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaWQ6IGNpZCxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhZGdlOiBsaXN0LmJhZGdlXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0SG9tZVJlc3VsdChkKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgfSwg57K+5b2p5LqM5Yib5pWw5o2uLCBsYXp5KVxcXFxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+ayoeacieaVsOaNruWTpn4nXFxcXG4gICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/mraPlnKjov5vlhaVcXFxcXFxcIiArIGlucHV0ICsgXFxcXFxcXCLnlYzpnaIuLi5cXFxcXFxcIjtcXFxcbiAgICAgICAgfSlcXFxcbiAgICB9KSxcXFxcbiAgICBjb2xfdHlwZTogXFxcXFxcXCJpY29uXzVcXFxcXFxcIixcXFxcbiAgICBleHRyYToge1xcXFxuICAgICAgICBpZDogJ+eyvuW9qee7p+e7rSdcXFxcbiAgICB9XFxcXG59KTtcXFxcbi8vIOaYvuekuuaooeW8j+abtOaUueaooeWdl1xcXFxuZC5wdXNoKHtcXFxcbiAgICB0aXRsZTogZ2V0SXRlbSgn5qih5byPJywgJ+WPjOi+uScpLFxcXFxuICAgIGltZzogZ2V0SXRlbSgn5qih5byPJywgJ+WPjOi+uScpID09ICfliJfooagnID8gaW1nTGluay7liJfooaggOiBpbWdMaW5rLuWPjOi+uSxcXFxcbiAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcXFxuICAgICAgICDmmL7npLrnmoTliafpm4bliJfooaggPSBKU09OLnBhcnNlKGdldE15VmFyKCfmmL7npLrnmoTliafpm4bliJfooagnKSk7XFxcXG4gICAgICAgIGlmIChnZXRJdGVtKCfmqKHlvI8nLCAn5Y+M6L65JykgPT0gJ+WIl+ihqCcpIHtcXFxcbiAgICAgICAgICAgIOaYvuekuueahOWJp+mbhuWIl+ihqC5mb3JFYWNoKGVsID0+IHtcXFxcbiAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKGVsLmxpbmssIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8yJyxcXFxcbiAgICAgICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgc2V0SXRlbSgn5qih5byPJywgJ+WPjOi+uScpXFxcXG4gICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICDmmL7npLrnmoTliafpm4bliJfooaguZm9yRWFjaChlbCA9PiB7XFxcXG4gICAgICAgICAgICAgICAgdXBkYXRlSXRlbShlbC5saW5rLCB7XFxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV9sZWZ0X3BpYycsXFxcXG4gICAgICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgIHNldEl0ZW0oJ+aooeW8jycsICfliJfooagnKVxcXFxuICAgICAgICB9XFxcXG4gICAgICAgIGltZ0xpbmsgPSBzdG9yYWdlMC5nZXRNeVZhcign5Zu+5qCHJyk7XFxcXG4gICAgICAgIHVwZGF0ZUl0ZW0oJ+aYvuekuuaooeW8jycsIHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiBnZXRJdGVtKCfmqKHlvI8nLCAn5Y+M6L65JyksXFxcXG4gICAgICAgICAgICBpbWc6IGdldEl0ZW0oJ+aooeW8jycsICflj4zovrknKSA9PSAn5YiX6KGoJyA/IGltZ0xpbmsu5YiX6KGoIDogaW1nTGluay7lj4zovrksXFxcXG4gICAgICAgIH0pO1xcXFxuICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5bey5YiH5o2i5qih5byP5Li6OicgKyBnZXRJdGVtKCfmqKHlvI8nLCAn5Y+M6L65JylcXFxcbiAgICB9KSxcXFxcbiAgICBjb2xfdHlwZTogJ2ljb25fNScsXFxcXG4gICAgZXh0cmE6IHtcXFxcbiAgICAgICAgaWQ6ICfmmL7npLrmqKHlvI8nXFxcXG4gICAgfVxcXFxufSwge1xcXFxuICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaycsXFxcXG59KTtcXFxcbi8vIOmAieaPkuaooeWdl+KAlOKAlOWxgOmDqOWIt+aWsOeJiFxcXFxu5p2l5rqQID0gJ2JsJztcXFxcbnB1dE15VmFyKCfnroDmj5InLCAkLnRvU3RyaW5nKCgpID0+IHtcXFxcbiAgICBsZXQgdGl0bGVBcnIgPSBbXVxcXFxuICAgIHNldEZpbGUgPSByZWFkRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9EdWFuTmlhbi9NeVBhcnNlLmpzb24nKTtcXFxcbiAgICB0cnkge1xcXFxuICAgICAgICBldmFsKCdqc29uPScgKyBzZXRGaWxlKTtcXFxcbiAgICB9IGNhdGNoIChlKSB7XFxcXG4gICAgICAgIGxvZygnSnNvbuino+aekOWPkeeUn+S6humUmeivrzonICsgZS5tZXNzYWdlKTtcXFxcbiAgICB9XFxcXG4gICAgdGl0bGVBcnIgPSBqc29uLnRpdGxlO1xcXFxuICAgIGxldCBiYXJyeTEgPSBbJ/Cfk50nXTtcXFxcbiAgICBsZXQgYmFycnkyID0gWyfwn5SNJ107XFxcXG4gICAgdGl0bGVBcnIgPSBiYXJyeTIuY29uY2F0KHRpdGxlQXJyKTtcXFxcbiAgICB0aXRsZUFyciA9IGJhcnJ5MS5jb25jYXQodGl0bGVBcnIpO1xcXFxuICAgIGV2YWwoJ29wPWpzb24uc2V0dGluZ3MuJyArIOadpea6kCk7XFxcXG4gICAgdGl0bGVBcnIgPSB0aXRsZUFyci5tYXAoKGl0KSA9PiB7XFxcXG4gICAgICAgIHJldHVybiBpdCA9PT0gb3AgPyAn8J+RiScgKyBpdCA6IGl0O1xcXFxuICAgIH0pO1xcXFxuICAgIHB1dE15VmFyKCfop6PmnpDmlbDnu4QnLCB0aXRsZUFycik7XFxcXG4gICAgcHV0TXlWYXIoJ3NldEZpbGUnLCBzZXRGaWxlKTtcXFxcbn0pKVxcXFxuZXZhbChnZXRNeVZhcign566A5o+SJykpO1xcXFxuZC5wdXNoKHtcXFxcbiAgICB0aXRsZTogJ+ino+aekO+8mvCflJg8Zm9udCBjb2xvcj1cXFxcXFxcIicgKyBDb2xvciArICdcXFxcXFxcIj4nICsgb3AgKyAnPC9mb250PlxcXFxcXFxcdFxcXFxcXFxcdOmhteegge+8mjxmb250IGNvbG9yPVxcXFxcXFwiJyArIENvbG9yICsgJ1xcXFxcXFwiPicgKyAoKGdldE15VmFyKCfliIbpm4botbcnLCAn6aaW6aG1JykgPT0gJ+mmlumhtScpID8gJ+mmlumhtScgOiAoZ2V0TXlWYXIoJ+WIhumbhui1tycpICsgJy0nICsgZ2V0TXlWYXIoJ+WIhumbhue7iCcpKSkgKyAnPC9mb250PicsXFxcXG4gICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChqc29uLCDmnaXmupAsIENvbG9yLCBvcCwg5b2x54mH5ZCN56ewLCDmkJzntKLmqKHlvI8sIOiwg+eUqOWQjeensCkgPT4ge1xcXFxuICAgICAgICBldmFsKGdldE15VmFyKCfnroDmj5InKSk7XFxcXG4gICAgICAgIHJldHVybiAkKGV2YWwoZ2V0TXlWYXIoJ+ino+aekOaVsOe7hCcpKSwgMykuc2VsZWN0KChqc29uLCDmnaXmupAsIENvbG9yLCBvcCwg5b2x54mH5ZCN56ewLCDmkJzntKLmqKHlvI8sIOiwg+eUqOWQjeensCkgPT4ge1xcXFxuICAgICAgICAgICAgc2V0RmlsZSA9IGdldE15VmFyKCdzZXRGaWxlJyk7XFxcXG4gICAgICAgICAgICBpbnB1dCA9IGlucHV0LnJlcGxhY2UoL/CfkYkvZywgJycpO1xcXFxuICAgICAgICAgICAgaWYgKGlucHV0ID09PSAn8J+TnScpIHtcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJoaWtlcjovL3BhZ2UvUm91dGU/cnVsZT1NeUZpZWxk4bSw4oG/JnR5cGU957yW6L6RI25vSGlzdG9yeSNcXFxcXFxcIjtcXFxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5wdXQgPT09ICfwn5SNJykge1xcXFxuICAgICAgICAgICAgICAgIGlmICjmkJzntKLmqKHlvI8gPT0gJ+WIhue7hCcpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwiaGlrZXI6Ly9zZWFyY2g/cz1cXFxcXFxcIiArIOW9seeJh+WQjeensCArIFxcXFxcXFwiJmdyb3VwPVxcXFxcXFwiICsg6LCD55So5ZCN56ewO1xcXFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcImhpa2VyOi8vc2VhcmNoP3M9XFxcXFxcXCIgKyDlvbHniYflkI3np7AgKyBcXFxcXFxcIiZydWxlPVxcXFxcXFwiICsg6LCD55So5ZCN56ewO1xcXFxuICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIC8vIOWOn+WFiOeahOmFjee9rlxcXFxuICAgICAgICAgICAgb3JpZ2luU2V0dGluZ3MgPSBKU09OLnN0cmluZ2lmeShqc29uLnNldHRpbmdzKTtcXFxcbiAgICAgICAgICAgIC8vIOS/ruaUuemFjee9rlxcXFxuICAgICAgICAgICAgZXZhbCgnanNvbi5zZXR0aW5ncy4nICsg5p2l5rqQICsgJz1pbnB1dDsnKTtcXFxcbiAgICAgICAgICAgIHNldEZpbGUgPSBzZXRGaWxlLnJlcGxhY2Uob3JpZ2luU2V0dGluZ3MsIEpTT04uc3RyaW5naWZ5KGpzb24uc2V0dGluZ3MpKTtcXFxcbiAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL0R1YW5OaWFuL015UGFyc2UuanNvbicsIHNldEZpbGUpO1xcXFxuICAgICAgICAgICAgLy8g5Yi35paw5YWD57SgXFxcXG4gICAgICAgICAgICBldmFsKGdldE15VmFyKCfnroDmj5InKSk7XFxcXG4gICAgICAgICAgICB1cGRhdGVJdGVtKCdvcCcsIHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+ino+aekO+8mvCflJg8Zm9udCBjb2xvcj1cXFxcXFxcIicgKyBDb2xvciArICdcXFxcXFxcIj4nICsgb3AgKyAnPC9mb250PlxcXFxcXFxcdFxcXFxcXFxcdOmhteegge+8mjxmb250IGNvbG9yPVxcXFxcXFwiJyArIENvbG9yICsgJ1xcXFxcXFwiPicgKyAoKGdldE15VmFyKCfliIbpm4botbcnLCAn6aaW6aG1JykgPT0gJ+mmlumhtScpID8gJ+mmlumhtScgOiAoZ2V0TXlWYXIoJ+WIhumbhui1tycpICsgJy0nICsgZ2V0TXlWYXIoJ+WIhumbhue7iCcpKSkgKyAnPC9mb250PicsXFxcXG4gICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgIHJldHVybiBcXFxcXFxcInRvYXN0Oi8v5YiH5o2i6Kej5p6Q5Y+j5Li6OlxcXFxcXFwiICsgaW5wdXQ7XFxcXG4gICAgICAgIH0sIGpzb24sIOadpea6kCwgQ29sb3IsIG9wLCDlvbHniYflkI3np7AsIOaQnOe0ouaooeW8jywg6LCD55So5ZCN56ewKVxcXFxuICAgIH0sIGpzb24sIOadpea6kCwgQ29sb3IsIG9wLCDlvbHniYflkI3np7AsIOaQnOe0ouaooeW8jywg6LCD55So5ZCN56ewKSxcXFxcbiAgICBpbWc6ICdodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8vbW92aWUvMjAuc3ZnJyxcXFxcbiAgICBjb2xfdHlwZTogXFxcXFxcXCJhdmF0YXJcXFxcXFxcIixcXFxcbiAgICBleHRyYToge1xcXFxuICAgICAgICBpZDogJ29wJ1xcXFxuICAgIH1cXFxcbn0pO1xcXFxuLy8g5rua5Yqo5Ymn6ZuG5p2h5qCPXFxcXG7liafpm4bplb/luqYgPSDliafpm4bliJfooagubGVuZ3RoO1xcXFxuaWYgKOWJp+mbhumVv+W6piA+IOavj+mhtembhuaVsCkge1xcXFxuICAgIHB1dE15VmFyKCfliLfmlrDpgInpm4YnLCAkLnRvU3RyaW5nKCgpID0+IHtcXFxcbiAgICAgICAgcHV0TXlWYXIoJ+WIhumbhui1tycsIHN0YXJ0KTtcXFxcbiAgICAgICAgcHV0TXlWYXIoJ+WIhumbhue7iCcsIGVuZCk7XFxcXG4gICAgICAgIGV2YWwoZ2V0TXlWYXIoJ+eugOaPkicpKTtcXFxcbiAgICAgICAgdXBkYXRlSXRlbSgnb3AnLCB7XFxcXG4gICAgICAgICAgICB0aXRsZTogJ+ino+aekO+8mvCflJg8Zm9udCBjb2xvcj1cXFxcXFxcIicgKyBDb2xvciArICdcXFxcXFxcIj4nICsgb3AgKyAnPC9mb250PlxcXFxcXFxcdFxcXFxcXFxcdOmhteegge+8mjxmb250IGNvbG9yPVxcXFxcXFwiJyArIENvbG9yICsgJ1xcXFxcXFwiPicgKyAoKGdldE15VmFyKCfliIbpm4botbcnLCAn6aaW6aG1JykgPT0gJ+mmlumhtScpID8gJ+mmlumhtScgOiAoZ2V0TXlWYXIoJ+WIhumbhui1tycpICsgJy0nICsgZ2V0TXlWYXIoJ+WIhumbhue7iCcpKSkgKyAnPC9mb250PicsXFxcXG4gICAgICAgIH0pXFxcXG4gICAgICAgIC8vIOWIoOmZpFxcXFxuICAgICAgICDmmL7npLrnmoTliafpm4bliJfooaggPSBKU09OLnBhcnNlKGdldE15VmFyKCfmmL7npLrnmoTliafpm4bliJfooagnKSk7XFxcXG4gICAgICAgIOaYvuekuueahOWJp+mbhuWIl+ihqC5mb3JFYWNoKGVsID0+IHtcXFxcbiAgICAgICAgICAgIGRlbGV0ZUl0ZW0oZWwubGluayk7XFxcXG4gICAgICAgIH0pO1xcXFxuICAgICAgICAvLyDmt7vliqBcXFxcbiAgICAgICAgbGF6eSA9IGdldE15VmFyKCdsYXp5Jyk7XFxcXG4gICAgICAgIOWJp+mbhuWIl+ihqCA9IEpTT04ucGFyc2UoZ2V0TXlWYXIoJ+WJp+mbhuWIl+ihqCcpKTtcXFxcbiAgICAgICAg5pi+56S655qE5Ymn6ZuG5YiX6KGoID0g5Ymn6ZuG5YiX6KGoLnNsaWNlKHN0YXJ0IC0gMSwgZW5kKTtcXFxcbiAgICAgICAgbmV3QXJyYXkgPSBbXTtcXFxcbiAgICAgICAgaW5kZXggPSAxO1xcXFxuICAgICAgICDmmL7npLrnmoTliafpm4bliJfooaguZm9yRWFjaChsaXN0ID0+IHtcXFxcbiAgICAgICAgICAgIGlmIChnZXRJdGVtKCfmqKHlvI8nLCAn5Y+M6L65JykgPT0gJ+WIl+ihqCcpIHtcXFxcbiAgICAgICAgICAgICAgICBuZXdBcnJheS5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGxpc3QubG9uZ190aXRsZSxcXFxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiBsaXN0LmNvdmVyICsgXFxcXFxcXCJAUmVmZXJlcj1cXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBsaXN0LmxpbmsgKyBsYXp5LFxcXFxuICAgICAgICAgICAgICAgICAgICBkZXNjOiBsaXN0LnRpdGxlLm1hdGNoKC9bMC05XS8pID8gKGxpc3QuYmFkZ2UgKyAn56ysJyArIGxpc3QudGl0bGUgKyAn6K+dJykgOiBsaXN0LnRpdGxlLFxcXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnLFxcXFxuICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGxpc3QubGluayxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFpZDogbGlzdC5haWQsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBidmlkOiBsaXN0LmJ2aWQsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjaWQ6IGxpc3QuY2lkLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgYmFkZ2U6IGxpc3QuYmFkZ2VcXFxcbiAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICBuZXdBcnJheS5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGxpc3QubG9uZ190aXRsZSxcXFxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiBsaXN0LmNvdmVyICsgXFxcXFxcXCJAUmVmZXJlcj1cXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBsaXN0LmxpbmsgKyBsYXp5LFxcXFxuICAgICAgICAgICAgICAgICAgICBkZXNjOiBsaXN0LnRpdGxlLm1hdGNoKC9bMC05XS8pID8gKGxpc3QuYmFkZ2UgKyAn56ysJyArIGxpc3QudGl0bGUgKyAn6K+dJykgOiBsaXN0LnRpdGxlLFxcXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzInLFxcXFxuICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGxpc3QubGluayxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFpZDogbGlzdC5haWQsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBidmlkOiBsaXN0LmJ2aWQsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjaWQ6IGxpc3QuY2lkLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgYmFkZ2U6IGxpc3QuYmFkZ2VcXFxcbiAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgaW5kZXggKz0gMTtcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgICAgIGFkZEl0ZW1BZnRlcihnZXRNeVZhcign5pyr6aG1JyksIG5ld0FycmF5KTtcXFxcbiAgICAgICAgcHV0TXlWYXIoJ+aYvuekuueahOWJp+mbhuWIl+ihqCcsIOaYvuekuueahOWJp+mbhuWIl+ihqCk7XFxcXG4gICAgfSkpO1xcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbicsXFxcXG4gICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHknLFxcXFxuICAgICAgICB0aXRsZTogJ+KItycsXFxcXG4gICAgICAgIGV4dHJhOiB7XFxcXG4gICAgICAgICAgICBpZDogJ+WNoOS9jeespicsXFxcXG4gICAgICAgIH1cXFxcbiAgICB9KVxcXFxuICAgIHB1dE15VmFyKCfliIbpm4botbcnLCAxKTtcXFxcbiAgICBwdXRNeVZhcign5YiG6ZuG57uIJywg5q+P6aG16ZuG5pWwKTtcXFxcbiAgICBwdXRNeVZhcign5Ymn6ZuG5YiX6KGoJywg5Ymn6ZuG5YiX6KGoKTtcXFxcbiAgICDmgLvpobXmlbAgPSBNYXRoLmNlaWwo5Ymn6ZuG6ZW/5bqmIC8g5q+P6aG16ZuG5pWwKTtcXFxcbiAgICBzdGFydCA9IDE7XFxcXG4gICAgZW5kID0g5q+P6aG16ZuG5pWwO1xcXFxuICAgIGZvciAobGV0IHBhZ2UgPSAxOyBwYWdlIDw9IOaAu+mhteaVsDsgcGFnZSsrKSB7XFxcXG4gICAgICAgIGlmIChlbmQgPiDliafpm4bplb/luqYpIHtcXFxcbiAgICAgICAgICAgIGVuZCA9IOWJp+mbhumVv+W6pjtcXFxcbiAgICAgICAgfVxcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgdGl0bGU6IHN0YXJ0ICsgJy0nICsgZW5kLFxcXFxuICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIyNub0hpc3RvcnkjJykubGF6eVJ1bGUoKHN0YXJ0LCBlbmQsIENvbG9yLCDmnaXmupApID0+IHtcXFxcbiAgICAgICAgICAgICAgICBldmFsKGdldE15VmFyKCfliLfmlrDpgInpm4YnKSk7XFxcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwiaGlrZXI6Ly9lbXB0eVxcXFxcXFwiO1xcXFxuICAgICAgICAgICAgfSwgc3RhcnQsIGVuZCwgQ29sb3IsIOadpea6kCksXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nLFxcXFxuICAgICAgICAgICAgZXh0cmE6IHtcXFxcbiAgICAgICAgICAgICAgICBpZDogc3RhcnQgKyAnLScgKyBlbmRcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgfSk7XFxcXG4gICAgICAgIGlmIChlbmQgPCDliafpm4bplb/luqYpIHtcXFxcbiAgICAgICAgICAgIHN0YXJ0ICs9IOavj+mhtembhuaVsDtcXFxcbiAgICAgICAgICAgIGVuZCArPSDmr4/pobXpm4bmlbA7XFxcXG4gICAgICAgIH1cXFxcbiAgICB9XFxcXG4gICAgLy8g6K6w5b2V5pyr6aG155qEaWRcXFxcbiAgICBwdXRNeVZhcign5pyr6aG1Jywgc3RhcnQgKyAnLScgKyBlbmQpO1xcXFxufSBlbHNlIHtcXFxcbiAgICBwdXRNeVZhcign5YiG6ZuG6LW3JywgMSk7XFxcXG4gICAgcHV0TXlWYXIoJ+WIhumbhue7iCcsIOWJp+mbhumVv+W6pik7XFxcXG59XFxcXG4vLyDlsZXnpLrliafpm4Y6XFxcXG7mmL7npLrnmoTliafpm4bliJfooaggPSDliafpm4bliJfooaguc2xpY2UoMCwgZ2V0TXlWYXIoJ+WIhumbhue7iCcpKTtcXFxcbnB1dE15VmFyKCfmmL7npLrnmoTliafpm4bliJfooagnLCDmmL7npLrnmoTliafpm4bliJfooagpO1xcXFxuaW5kZXggPSAxO1xcXFxu5pi+56S655qE5Ymn6ZuG5YiX6KGoLmZvckVhY2gobGlzdCA9PiB7XFxcXG4gICAgaWYgKGdldEl0ZW0oJ+aooeW8jycsICflj4zovrknKSA9PSAn5YiX6KGoJykge1xcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgdGl0bGU6IGxpc3QubG9uZ190aXRsZSxcXFxcbiAgICAgICAgICAgIGltZzogbGlzdC5jb3ZlciArIFxcXFxcXFwiQFJlZmVyZXI9XFxcXFxcXCIsXFxcXG4gICAgICAgICAgICB1cmw6IGxpc3QubGluayArIGxhenksXFxcXG4gICAgICAgICAgICBkZXNjOiBsaXN0LnRpdGxlLm1hdGNoKC9bMC05XS8pID8gKGxpc3QuYmFkZ2UgKyAn56ysJyArIGxpc3QudGl0bGUgKyAn6K+dJykgOiBsaXN0LnRpdGxlLFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX2xlZnRfcGljJyxcXFxcbiAgICAgICAgICAgIGV4dHJhOiB7XFxcXG4gICAgICAgICAgICAgICAgaWQ6IGxpc3QubGluayxcXFxcbiAgICAgICAgICAgICAgICBhaWQ6IGxpc3QuYWlkLFxcXFxuICAgICAgICAgICAgICAgIGJ2aWQ6IGxpc3QuYnZpZCxcXFxcbiAgICAgICAgICAgICAgICBjaWQ6IGxpc3QuY2lkLFxcXFxuICAgICAgICAgICAgICAgIGJhZGdlOiBsaXN0LmJhZGdlXFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgIH0pO1xcXFxuICAgIH0gZWxzZSB7XFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICB0aXRsZTogbGlzdC5sb25nX3RpdGxlLFxcXFxuICAgICAgICAgICAgaW1nOiBsaXN0LmNvdmVyICsgXFxcXFxcXCJAUmVmZXJlcj1cXFxcXFxcIixcXFxcbiAgICAgICAgICAgIHVybDogbGlzdC5saW5rICsgbGF6eSxcXFxcbiAgICAgICAgICAgIGRlc2M6IGxpc3QudGl0bGUubWF0Y2goL1swLTldLykgPyAobGlzdC5iYWRnZSArICfnrKwnICsgbGlzdC50aXRsZSArICfor50nKSA6IGxpc3QudGl0bGUsXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzInLFxcXFxuICAgICAgICAgICAgZXh0cmE6IHtcXFxcbiAgICAgICAgICAgICAgICBpZDogbGlzdC5saW5rLFxcXFxuICAgICAgICAgICAgICAgIGFpZDogbGlzdC5haWQsXFxcXG4gICAgICAgICAgICAgICAgYnZpZDogbGlzdC5idmlkLFxcXFxuICAgICAgICAgICAgICAgIGNpZDogbGlzdC5jaWQsXFxcXG4gICAgICAgICAgICAgICAgYmFkZ2U6IGxpc3QuYmFkZ2VcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgfSk7XFxcXG4gICAgfVxcXFxuICAgIGluZGV4ICs9IDE7XFxcXG59KTtcXFxcbnNldFJlc3VsdChkKTtcXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCJ1cOS4u+mhtVxcXCIsXFxcInBhdGhcXFwiOlxcXCJ1cEhvbWVcXFwiLFxcXCJydWxlXFxcIjpcXFwianM6XFxcXG5cXFxcbnZhciBkID0gW107XFxcXG5cXFxcbi8vIOmihOWkhOeQhlxcXFxuXFxcXG5wdXRNeVZhcigndXBJbmZvJywgJ+WFsycpO1xcXFxuXFxcXG5zZXRQYWdlVGl0bGUoTVlfUEFSQU1TLnRpdGxlKTtcXFxcblxcXFxuaW1nTGluaz1zdG9yYWdlMC5nZXRNeVZhcign5Zu+5qCHJyk7XFxcXG5cXFxcbi8vIOmYsuatouWPjeeIrOiZq++8jOS7juS4iuS4gOS4qumhtemdouS8oOmAkuaVsOaNruKAlOKAlOWPjeeIrOiZq+S4pemHjVxcXFxuXFxcXG51cE1pZCA9IE1ZX1BBUkFNUy5taWQgKyBcXFxcXFxcIlxcXFxcXFwiO1xcXFxuXFxcXG51cE5hbWUgPSBNWV9QQVJBTVMudGl0bGU7XFxcXG5cXFxcbnVwRmFjZSA9IE1ZX1BBUkFNUy5mYWNlO1xcXFxuXFxcXG5yZWxhdGlvbj0kLnJlcXVpcmUoXFxcXFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcXFxcXCIpLnVzZXJNYXBwaW5nKHVwTWlkKTtcXFxcblxcXFxuLy8g5aS05YOP5qCPXFxcXG5cXFxcbmQucHVzaCh7XFxcXG5cXFxcbsKgIMKgIHRpdGxlOiAnPGZvbnQgY29sb3I9XFxcXFxcXCJibHVlXFxcXFxcXCI+JyArIHVwTmFtZSArICc8L2ZvbnQ+JyxcXFxcblxcXFxuwqAgwqAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCh1cE1pZCkgPT4ge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBpZiAoZ2V0TXlWYXIoJ3VwSW5mbycsICflhbMnKSA9PSAn5byAJykge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCBkZWxldGVJdGVtKCd1cEluZm8nKTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgcHV0TXlWYXIoJ3VwSW5mbycsICflhbMnKTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgfSBlbHNlIHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgLy8g55So5oi35Z+65pys5L+h5oGv4oCU4oCU5Zug5Li655u05o6l5L2/55So5o6l5Y+j57uP5bi46Kem5Y+R5Y+N54is6Jmr5py65Yi25pWF5L2/55So572R6aG15rqQ56CB6I635Y+W5L+h5oGv77yM6ICM5LiU5Y+q6IO9ZmV0Y2hDb2RlQnlXZWJWaWV3XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIGxldCB1ID0gXFxcXFxcXCJodHRwczovL20uYmlsaWJpbGkuY29tL3NwYWNlL1xcXFxcXFwiICsgdXBNaWQ7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIGh0bWwgPSBmZXRjaENvZGVCeVdlYlZpZXcodSwge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBibG9ja1J1bGVzOiBbJy5wbmcnLCAnLmpwZyddLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0aW1lb3V0OiA1MDAwXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIH0pO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCBpbmZvQ2FyZCA9IHBkZmEoaHRtbCwgJy5pbmZvLWNhcmQmJnRyJyk7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIC8vIOWeg+WcvuWumuS9je+8jOaIkeebtOaOpeWMuemFjeWkhOeQhuWtl+espuS4suW+l+S6hn5cXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgaW5mbz0nJztcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgLy8g5o6S6ZmkdXDlsIHpnaLmlbDmja5cXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgZm9yIChsZXQgaSA9IDE7IGkgPCBpbmZvQ2FyZC5sZW5ndGg7IGkrKykge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZiAoaT09aW5mb0NhcmQubGVuZ3RoLTEpIHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZGF0YT1pbmZvQ2FyZFtpXS5yZXBsYWNlKCc8dHI+XFxcXFxcXFxuIDx0ZD4nLCcnKS5yZXBsYWNlKCc8L3RkPlxcXFxcXFxcbjwvdHI+JywnJykucmVwbGFjZSgnPC90ZD4gXFxcXFxcXFxuIDx0ZD4nLCc6JylcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfWVsc2V7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGRhdGE9aW5mb0NhcmRbaV0ucmVwbGFjZSgnPHRyPlxcXFxcXFxcbiA8dGQ+JywnJykucmVwbGFjZSgnPC90ZD5cXFxcXFxcXG48L3RyPicsJycpLnJlcGxhY2UoJzwvdGQ+IFxcXFxcXFxcbiA8dGQ+JywnOicpKydcXFxcXFxcXG4nXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH1cXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaW5mbys9ZGF0YTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgfVxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCBhZGRJdGVtQWZ0ZXIoJ2N1cnJlbnRVcCcsIHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IGluZm8sXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVybDogJ2hpa2VyOi8vZW1wdHknLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ2xvbmdfdGV4dCcsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGV4dHJhOiB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlkOiAndXBJbmZvJ1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIH0pO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCBwdXRNeVZhcigndXBJbmZvJywgJ+W8gCcpO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCB9XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHJldHVybiAndG9hc3Q6Ly/kv6Hmga/mipjlj6A6JyArIGdldE15VmFyKCd1cEluZm8nLCAn5byAJylcXFxcblxcXFxuwqAgwqAgfSwgdXBNaWQpLFxcXFxuXFxcXG7CoCDCoCBpbWc6IHVwRmFjZSArIFxcXFxcXFwiQFJlZmVyZXI9XFxcXFxcXCIsXFxcXG5cXFxcbsKgIMKgIGNvbF90eXBlOiBcXFxcXFxcImF2YXRhclxcXFxcXFwiLFxcXFxuXFxcXG7CoCDCoCBleHRyYToge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBpZDogJ2N1cnJlbnRVcCdcXFxcblxcXFxuwqAgwqAgfVxcXFxuXFxcXG59LHtcXFxcblxcXFxuwqAgwqAgY29sX3R5cGU6ICdsaW5lJ1xcXFxuXFxcXG59KTtcXFxcblxcXFxuLy8g5YWs5ZGKXFxcXG5cXFxcbm5vdGljZVRleHQgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9ub3RpY2U/bWlkPScgKyB1cE1pZCArICcmanNvbnA9anNvbnAnLCB7XFxcXG5cXFxcbsKgIMKgIGhlYWRlcnM6IHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgXFxcXFxcXCJVc2VyLUFnZW50XFxcXFxcXCI6IFBDX1VBLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCBcXFxcXFxcIlJlZmVyZXJcXFxcXFxcIjogXFxcXFxcXCJodHRwczovL3d3dy5iaWxpYmlsaS5jb20vXFxcXFxcXCJcXFxcblxcXFxuwqAgwqAgfVxcXFxuXFxcXG59KSkuZGF0YTtcXFxcblxcXFxuaWYgKG5vdGljZVRleHQgIT0gJycpIHtcXFxcblxcXFxuwqAgwqAgZC5wdXNoKHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgdGl0bGU6ICflhazlkYonLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCB1cmw6ICQoKS5ydWxlKChub3RpY2VUZXh0KSA9PiB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIHZhciBkID0gW107XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIGQucHVzaCh7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiAn5YWs5ZGK77yaJyArICdcXFxcXFxcXG5cXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHQnICsgbm90aWNlVGV4dCxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdsb25nX3RleHQnXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIH0pO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCBzZXRIb21lUmVzdWx0KGQpO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCB9LCBub3RpY2VUZXh0KSxcXFxcblxcXFxuwqAgwqAgwqAgwqAgZGVzYzogbm90aWNlVGV4dCA9PSAnJyA/ICfmmoLml6DlhazlkYonIDogbm90aWNlVGV4dCxcXFxcblxcXFxuwqAgwqAgwqAgwqAgY29sX3R5cGU6ICd0ZXh0XzEnLFxcXFxuXFxcXG7CoCDCoCB9KTtcXFxcblxcXFxufVxcXFxuXFxcXG5kLnB1c2goe1xcXFxuXFxcXG7CoCDCoCBjb2xfdHlwZTogJ2xpbmUnXFxcXG5cXFxcbn0sIHtcXFxcblxcXFxuwqAgwqAgdGl0bGU6IHJlbGF0aW9uLFxcXFxuXFxcXG7CoCDCoCBpbWc6IHJlbGF0aW9uPT0n5pyq5YWz5rOoJz9pbWdMaW5rLua3u+WKoOWFs+azqDppbWdMaW5rLuW3suWFs+azqCxcXFxcblxcXFxuwqAgwqAgdXJsOiAkKCcjbm9Mb2FkaW5nIyNub0hpc3RvcnkjJykubGF6eVJ1bGUoKHVwTWlkKSA9PiB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHJldHVybiAkLnJlcXVpcmUoXFxcXFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcXFxcXCIpLmNoYW5nZVVzZXJSZWxhdGlvbih1cE1pZCwgMTEpXFxcXG5cXFxcbsKgIMKgIH0sIHVwTWlkKSxcXFxcblxcXFxuwqAgwqAgY29sX3R5cGU6IFxcXFxcXFwiaWNvbl9zbWFsbF80XFxcXFxcXCIsXFxcXG5cXFxcbsKgIMKgIGV4dHJhOntcXFxcblxcXFxuwqAgwqAgwqAgwqAgaWQ6J3JlbGF0aW9uJ1xcXFxuXFxcXG7CoCDCoCB9XFxcXG5cXFxcbn0sIHtcXFxcblxcXFxuwqAgwqAgdGl0bGU6ICfliqjmgIEnLFxcXFxuXFxcXG7CoCDCoCBpbWc6IGltZ0xpbmsu5Yqo5oCBLFxcXFxuXFxcXG7CoCDCoCB1cmw6ICQoJyNub0xvYWRpbmcjI25vSGlzdG9yeSMnKS5sYXp5UnVsZSgodXBNaWQpID0+IHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgcmV0dXJuICQoJ2hpa2VyOi8vZW1wdHk/cD1meXBhZ2UnKS5ydWxlKCh1cE1pZCk9PntcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgbGV0IGQ9W107XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIGxhdGVuZXdzPSQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vcGFnZS9hcGlcXFxcXFxcIikuZ2V0RHluYW1pY0RhdGEoJ3VwU3BhY2UnLHVwTWlkKTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgZXZhbCgkLnJlcXVpcmUoXFxcXFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcXFxcXCIpLnNob3dEeW5hbWljRGF0YSgpKTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgc2V0UmVzdWx0KGQpO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCB9LHVwTWlkKVxcXFxuXFxcXG7CoCDCoCB9LCB1cE1pZCksXFxcXG5cXFxcbsKgIMKgIGNvbF90eXBlOiBcXFxcXFxcImljb25fc21hbGxfNFxcXFxcXFwiLFxcXFxuXFxcXG59LHtcXFxcblxcXFxuwqAgwqAgdGl0bGU6ICfkuJPmoI8nLFxcXFxuXFxcXG7CoCDCoCBpbWc6IGltZ0xpbmsu5LiT5qCPLFxcXFxuXFxcXG7CoCDCoCB1cmw6IFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2FjdGljbGVMaXN0P3A9ZnlwYWdlXFxcXFxcXCIsXFxcXG5cXFxcbsKgIMKgIGNvbF90eXBlOiBcXFxcXFxcImljb25fc21hbGxfNFxcXFxcXFwiLFxcXFxuXFxcXG7CoCDCoCBleHRyYToge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBtaWQ6IHVwTWlkXFxcXG5cXFxcbsKgIMKgIH1cXFxcblxcXFxufSlcXFxcblxcXFxuLy8g55So5oi36KeG6aKRLeWQiOmbhuOAgeezu+WIl1xcXFxuXFxcXG51cFZpZGVvID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvcG9seW1lci9zcGFjZS9zZWFzb25zX3Nlcmllc19saXN0P21pZD0nICsgdXBNaWQgKyAnJnBhZ2VfbnVtPTEmcGFnZV9zaXplPTEwJywge1xcXFxuXFxcXG7CoCDCoCBoZWFkZXJzOiB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIFxcXFxcXFwiVXNlci1BZ2VudFxcXFxcXFwiOiBQQ19VQSxcXFxcblxcXFxuwqAgwqAgwqAgwqAgXFxcXFxcXCJSZWZlcmVyXFxcXFxcXCI6IFxcXFxcXFwiaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL1xcXFxcXFwiXFxcXG5cXFxcbsKgIMKgIH1cXFxcblxcXFxufSkpLmRhdGEuaXRlbXNfbGlzdHM7XFxcXG5cXFxcbi8vIOinhumikeWQiOmbhuOAgeezu+WIl1xcXFxuXFxcXG50cnkge1xcXFxuXFxcXG7CoCDCoCB1cFZpZGVvLnNlYXNvbnNfbGlzdC5mb3JFYWNoKGxpc3QgPT4ge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBzZWFzb25faWQgPSBsaXN0Lm1ldGEuc2Vhc29uX2lkO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCAvLyDmoIfpopgt6Lez6L2s5pu05aSaXFxcXG5cXFxcbsKgIMKgIMKgIMKgIGQucHVzaCh7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiAnPGZvbnQgY29sb3I9XFxcXFxcXCIjMzNjY2NjXFxcXFxcXCI+JyArIGxpc3QubWV0YS5uYW1lLnN1YnN0cmluZygwLCAzMCkgKyAnPC9mb250PlxcXFxcXFxcdFxcXFxcXFxcdDxmb250IGNvbG9yPVxcXFxcXFwicmVkXFxcXFxcXCI+JyArIGxpc3QubWV0YS50b3RhbCArICc8L2ZvbnQ+IMKgIMKg4p6uJyxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgaW1nOiAnaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL21vcmUvMTM3LnBuZ0BSZWZlcmVyPScsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIC8vIGltZzogbGlzdC5tZXRhLmNvdmVyKydAUmVmZXJlcj0nLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ2F2YXRhcicsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIHVybDogJCgnI25vTG9hZGluZyMjbm9IaXN0b3J5IycpLmxhenlSdWxlKCh1cE1pZCwgc2Vhc29uX2lkKSA9PiB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybiAkKCdoaWtlcjovL2VtcHR5P2Z5cGFnZScpLnJ1bGUoKHVwTWlkLCBzZWFzb25faWQpID0+IHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdmFyIGQgPSBbXTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgbGV0IHUgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvcG9seW1lci9zcGFjZS9zZWFzb25zX2FyY2hpdmVzX2xpc3Q/bWlkPScgKyB1cE1pZCArICcmc2Vhc29uX2lkPScgKyBzZWFzb25faWQgKyAnJnNvcnRfcmV2ZXJzZT1mYWxzZSZwYWdlX251bT0nICsgTVlfUEFHRSArICcmcGFnZV9zaXplPTMwJztcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgVmlkZW8gPSBKU09OLnBhcnNlKGZldGNoKHUsIHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaGVhZGVyczoge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBcXFxcXFxcIlVzZXItQWdlbnRcXFxcXFxcIjogUENfVUEsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIFxcXFxcXFwiUmVmZXJlclxcXFxcXFwiOiBcXFxcXFxcImh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS9cXFxcXFxcIlxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pKS5kYXRhO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBtYXhQYWdlID0gTWF0aC5jZWlsKFZpZGVvLnBhZ2UudG90YWwgLyBWaWRlby5wYWdlLnBhZ2Vfc2l6ZSk7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlmIChNWV9QQUdFIDw9IG1heFBhZ2UpIHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZC5wdXNoKHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6ICflvZPliY0656ysJyArIFZpZGVvLnBhZ2UucGFnZV9udW0gKyAn6aG1XFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx05YWx5pyJJyArIG1heFBhZ2UgKyAn6aG1LCcgKyBWaWRlby5wYWdlLnRvdGFsICsgJ+adoeaVsOaNricsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVybDogXFxcXFxcXCJoaWtlcjovL2VtcHR5XFxcXFxcXCIsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiBcXFxcXFxcInRleHRfY2VudGVyXzFcXFxcXFxcIixcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIFZpZGVvLmFyY2hpdmVzLmZvckVhY2gobGlzdCA9PiB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGQucHVzaCh7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBsaXN0LnRpdGxlLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpbWc6IGxpc3QucGljICsgJ0BSZWZlcmVyPScsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGRlc2M6ICfmkq3mlL7ph4/vvJonICsgbGlzdC5zdGF0LnZpZXcsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiAnbW92aWVfMV9sZWZ0X3BpYycsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVybDogXFxcXFxcXCJoaWtlcjovL3BhZ2UvdmlkZW9cXFxcXFxcIixcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZXh0cmE6IHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgYWlkOiBsaXN0LmFpZFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfVxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBzZXRIb21lUmVzdWx0KGQpO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9LCB1cE1pZCwgc2Vhc29uX2lkKVxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCB9LCB1cE1pZCwgc2Vhc29uX2lkKVxcXFxuXFxcXG7CoCDCoCDCoCDCoCB9KTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgaWYgKGxpc3QuYXJjaGl2ZXMgPT09IHVuZGVmaW5lZCkge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCBsb2cobGlzdC5tZXRhLm5hbWUgKyAn5Li656m6Jyk7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIH0gZWxzZSB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIGlmIChsaXN0LmFyY2hpdmVzLmxlbmd0aCA8IDIpIHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgbGlzdC5hcmNoaXZlcy5mb3JFYWNoKGxpc3QgPT4ge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkLnB1c2goe1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogbGlzdC50aXRsZSxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaW1nOiBsaXN0LnBpYyArICdAUmVmZXJlcj0nLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkZXNjOiAn5pKt5pS+6YeP77yaJyArIGxpc3Quc3RhdC52aWV3LFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB1cmw6IFxcXFxcXFwiaGlrZXI6Ly9wYWdlL3ZpZGVvXFxcXFxcXCIsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGV4dHJhOiB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGFpZDogbGlzdC5haWRcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfVxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIH0gZWxzZSBpZiAobGlzdC5hcmNoaXZlcy5sZW5ndGggPT0gMCkge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkLnB1c2goe1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogXFxcXFxcXCLlpb3lrrbkvJnvvIzov5nlrrbkvJnmsqHmnInlkIjpm4bop4bpopHvvIFcXFxcXFxcIixcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZGVzYzogXFxcXFxcXCLopoHkuI3ljrvngrnlh7vlhajpg6jop4bpopHnnIvnnIt+XFxcXFxcXCIsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVybDogXFxcXFxcXCJoaWtlcjovL2VtcHR5XFxcXFxcXCIsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCB9IGVsc2Uge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBmb3IgKGxldCBpID0gMDsgaSA8IDI7IGkrKykge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkLnB1c2goe1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogbGlzdC5hcmNoaXZlc1tpXS50aXRsZSxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaW1nOiBsaXN0LmFyY2hpdmVzW2ldLnBpYyArICdAUmVmZXJlcj0nLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkZXNjOiAn5pKt5pS+6YeP77yaJyArIGxpc3QuYXJjaGl2ZXNbaV0uc3RhdC52aWV3LFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB1cmw6IFxcXFxcXFwiaGlrZXI6Ly9wYWdlL3ZpZGVvXFxcXFxcXCIsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGV4dHJhOiB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGFpZDogbGlzdC5hcmNoaXZlc1tpXS5haWRcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfVxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfVxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCB9XFxcXG5cXFxcbsKgIMKgIMKgIMKgIH1cXFxcblxcXFxuwqAgwqAgfSk7XFxcXG5cXFxcbn0gY2F0Y2ggKGUpIHtcXFxcblxcXFxuwqAgwqAgZC5wdXNoKHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgdGl0bGU6ICflkIjpm4bkuLrnqbonLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCB1cmw6ICdoaWtlcjovL2VtcHR5JyxcXFxcblxcXFxuwqAgwqAgwqAgwqAgZGVzYzogJ1NvcnJ5LOayoeacieaVsOaNruWRon4nLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnLFxcXFxuXFxcXG7CoCDCoCB9KTtcXFxcblxcXFxufVxcXFxuXFxcXG50cnkge1xcXFxuXFxcXG7CoCDCoCB1cFZpZGVvLnNlcmllc19saXN0LmZvckVhY2gobGlzdCA9PiB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHNlcmllc19pZCA9IGxpc3QubWV0YS5zZXJpZXNfaWQ7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIC8vIOagh+mimC3ot7Povazmm7TlpJpcXFxcblxcXFxuwqAgwqAgwqAgwqAgZC5wdXNoKHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6ICc8Zm9udCBjb2xvcj1cXFxcXFxcIiMzM2NjY2NcXFxcXFxcIj4nICsgbGlzdC5tZXRhLm5hbWUuc3Vic3RyaW5nKDAsIDMwKSArICc8L2ZvbnQ+XFxcXFxcXFx0XFxcXFxcXFx0PGZvbnQgY29sb3I9XFxcXFxcXCJyZWRcXFxcXFxcIj4nICsgbGlzdC5tZXRhLnRvdGFsICsgJzwvZm9udD4gwqAgwqDinq4nLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCBpbWc6ICdodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8vbW9yZS8xMzcucG5nQFJlZmVyZXI9JyxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgLy8gaW1nOiBsaXN0Lm1ldGEuY292ZXIrJ0BSZWZlcmVyPScsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiAnYXZhdGFyJyxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiAkKCcjbm9Mb2FkaW5nIyNub0hpc3RvcnkjJykubGF6eVJ1bGUoKHVwTWlkLCBzZXJpZXNfaWQpID0+IHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuICQoJ2hpa2VyOi8vZW1wdHk/ZnlwYWdlJykucnVsZSgodXBNaWQsIHNlcmllc19pZCkgPT4ge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB2YXIgZCA9IFtdO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBsZXQgdSA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zZXJpZXMvYXJjaGl2ZXM/bWlkPScgKyB1cE1pZCArICcmc2VyaWVzX2lkPScgKyBzZXJpZXNfaWQgKyAnJm9ubHlfbm9ybWFsPXRydWUmc29ydD1kZXNjJnBuPScgKyBNWV9QQUdFICsgJyZwcz0zMCc7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIFZpZGVvID0gSlNPTi5wYXJzZShmZXRjaCh1LCB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGhlYWRlcnM6IHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgXFxcXFxcXCJVc2VyLUFnZW50XFxcXFxcXCI6IFBDX1VBLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBcXFxcXFxcIlJlZmVyZXJcXFxcXFxcIjogXFxcXFxcXCJodHRwczovL3d3dy5iaWxpYmlsaS5jb20vXFxcXFxcXCJcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfVxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KSkuZGF0YTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgbWF4UGFnZSA9IE1hdGguY2VpbChWaWRlby5wYWdlLnRvdGFsIC8gVmlkZW8ucGFnZS5zaXplKTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKE1ZX1BBR0UgPD0gbWF4UGFnZSkge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkLnB1c2goe1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogJ+W9k+WJjTrnrKwnICsgVmlkZW8ucGFnZS5udW0gKyAn6aG1XFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx05YWx5pyJJyArIG1heFBhZ2UgKyAn6aG1LCcgKyBWaWRlby5wYWdlLnRvdGFsICsgJ+adoeaVsOaNricsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVybDogXFxcXFxcXCJoaWtlcjovL2VtcHR5XFxcXFxcXCIsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiBcXFxcXFxcInRleHRfY2VudGVyXzFcXFxcXFxcIixcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIFZpZGVvLmFyY2hpdmVzLmZvckVhY2gobGlzdCA9PiB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGQucHVzaCh7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBsaXN0LnRpdGxlLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpbWc6IGxpc3QucGljICsgJ0BSZWZlcmVyPScsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGRlc2M6ICfmkq3mlL7ph4/vvJonICsgbGlzdC5zdGF0LnZpZXcsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiAnbW92aWVfMV9sZWZ0X3BpYycsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVybDogXFxcXFxcXCJoaWtlcjovL3BhZ2UvdmlkZW9cXFxcXFxcIixcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZXh0cmE6IHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgYWlkOiBsaXN0LmFpZFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfVxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBzZXRIb21lUmVzdWx0KGQpO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9LCB1cE1pZCwgc2VyaWVzX2lkKVxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCB9LCB1cE1pZCwgc2VyaWVzX2lkKVxcXFxuXFxcXG7CoCDCoCDCoCDCoCB9KTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgaWYgKGxpc3QuYXJjaGl2ZXMgPT09IHVuZGVmaW5lZCkge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCBsb2cobGlzdC5tZXRhLm5hbWUgKyAn5Li656m6Jyk7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIH0gZWxzZSB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIGlmIChsaXN0LmFyY2hpdmVzLmxlbmd0aCA8IDIpIHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgbGlzdC5hcmNoaXZlcy5mb3JFYWNoKGxpc3QgPT4ge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkLnB1c2goe1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogbGlzdC50aXRsZSxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaW1nOiBsaXN0LnBpYyArICdAUmVmZXJlcj0nLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkZXNjOiAn5pKt5pS+6YeP77yaJyArIGxpc3Quc3RhdC52aWV3LFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB1cmw6IFxcXFxcXFwiaGlrZXI6Ly9wYWdlL3ZpZGVvXFxcXFxcXCIsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGV4dHJhOiB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGFpZDogbGlzdC5haWRcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfVxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIH0gZWxzZSBpZiAobGlzdC5hcmNoaXZlcy5sZW5ndGggPT0gMCkge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkLnB1c2goe1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogXFxcXFxcXCLlpb3lrrbkvJnvvIzov5nlrrbkvJnmsqHmnInlkIjpm4bop4bpopHvvIFcXFxcXFxcIixcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZGVzYzogXFxcXFxcXCLopoHkuI3ljrvngrnlh7vlhajpg6jop4bpopHnnIvnnIt+XFxcXFxcXCIsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVybDogXFxcXFxcXCJoaWtlcjovL2VtcHR5XFxcXFxcXCIsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCB9IGVsc2Uge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBmb3IgKGxldCBpID0gMDsgaSA8IDI7IGkrKykge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkLnB1c2goe1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogbGlzdC5hcmNoaXZlc1tpXS50aXRsZSxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaW1nOiBsaXN0LmFyY2hpdmVzW2ldLnBpYyArICdAUmVmZXJlcj0nLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkZXNjOiAn5pKt5pS+6YeP77yaJyArIGxpc3QuYXJjaGl2ZXNbaV0uc3RhdC52aWV3LFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB1cmw6IFxcXFxcXFwiaGlrZXI6Ly9wYWdlL3ZpZGVvXFxcXFxcXCIsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGV4dHJhOiB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGFpZDogbGlzdC5hcmNoaXZlc1tpXS5haWRcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfVxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfVxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCB9XFxcXG5cXFxcbsKgIMKgIMKgIMKgIH1cXFxcblxcXFxuwqAgwqAgfSk7XFxcXG5cXFxcbn0gY2F0Y2ggKGUpIHtcXFxcblxcXFxuwqAgwqAgZC5wdXNoKHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgdGl0bGU6ICfns7vliJfkuLrnqbonLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCB1cmw6ICdoaWtlcjovL2VtcHR5JyxcXFxcblxcXFxuwqAgwqAgwqAgwqAgZGVzYzogJ1NvcnJ5LOayoeacieaVsOaNruWRon4nLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnLFxcXFxuXFxcXG7CoCDCoCB9KTtcXFxcblxcXFxufVxcXFxuXFxcXG4vLyB1cOaKleeov1xcXFxuXFxcXG5kLnB1c2goe1xcXFxuXFxcXG7CoCDCoCB0aXRsZTogJ1RB55qE6KeG6aKRLOeCueWHu+WxleW8gOWFqOmDqCcsXFxcXG5cXFxcbsKgIMKgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXFxcXG5cXFxcbsKgIMKgIHVybDogJCgnI25vTG9hZGluZyMjbm9IaXN0b3J5IycpLmxhenlSdWxlKCh1cE1pZCkgPT4ge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCByZXR1cm4gJCgpLnJ1bGUoKHVwTWlkKSA9PiB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIHZhciBkID0gW107XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIHRyeSB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVwVG90YWxWaWRlb0luZm8gPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hcmMvc2VhcmNoP21pZD0nICsgdXBNaWQgKyAnJnBuPScgKyBnZXRNeVZhcignX3BhZ2UnLCAnMScpICsgJyZwcz0yNSZpbmRleD0xJmpzb25wPWpzb25wJywge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBoZWFkZXJzOiB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIFxcXFxcXFwiVXNlci1BZ2VudFxcXFxcXFwiOiBQQ19VQSxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgXFxcXFxcXCJSZWZlcmVyXFxcXFxcXCI6IFxcXFxcXFwiaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL1xcXFxcXFwiXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH1cXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSkpO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZiAodXBUb3RhbFZpZGVvSW5mby5tZXNzYWdlID09ICfllaXpg73mnKjmnIknKSB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGQucHVzaCh7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiAn5ZWl6YO95pyo5pyJLi4uJyxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaW1nOiAnaHR0cHM6Ly9waWMuaW1nZGIuY24vaXRlbS82MzJjMjA0ZTE2ZjJjMmJlYjEzNjUyYWEuanBnQFJlZmVyZXI9JyxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiAnaGlrZXI6Ly9lbXB0eScsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGRlc2M6ICfkuI3lsI/lv4PmnaXliLDkuobnnJ/nqbrnmoTkuJbnlYx+JyxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6IFxcXFxcXFwicGljXzFcXFxcXFxcIlxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSBlbHNlIHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdXBUb3RhbFZpZGVvID0gdXBUb3RhbFZpZGVvSW5mby5kYXRhO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBtYXhQYWdlID0gTWF0aC5jZWlsKHVwVG90YWxWaWRlby5wYWdlLmNvdW50IC8gdXBUb3RhbFZpZGVvLnBhZ2UucHMpO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBmb3IgKGxldCBwYWdlID0gMTsgcGFnZSA8PSBtYXhQYWdlOyBwYWdlKyspIHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZC5wdXNoKHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IChwYWdlICsgXFxcXFxcXCJcXFxcXFxcIikgPT0gZ2V0TXlWYXIoJ19wYWdlJywgJzEnKSA/ICfigJjigJjigJnigJk8Zm9udCBjb2xvcj1cXFxcXFxcInJlZFxcXFxcXFwiPicgKyAocGFnZSArIFxcXFxcXFwiXFxcXFxcXCIpICsgJzwvZm9udD4nIDogKHBhZ2UgKyBcXFxcXFxcIlxcXFxcXFwiKSxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiAkKCcjbm9Mb2FkaW5nIyNub0hpc3RvcnkjJykubGF6eVJ1bGUoKHBhZ2UpID0+IHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcHV0TXlWYXIoJ19wYWdlJywgKHBhZ2UgKyBcXFxcXFxcIlxcXFxcXFwiKSk7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJlZnJlc2hQYWdlKHRydWUpO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXR1cm4gXFxcXFxcXCJoaWtlcjovL2VtcHR5XFxcXFxcXCI7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0sIHBhZ2UpLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfVxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB1cFRvdGFsVmlkZW8ubGlzdC52bGlzdC5mb3JFYWNoKGxpc3QgPT4ge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkLnB1c2goe1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogbGlzdC50aXRsZSxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaW1nOiBsaXN0LnBpYyArICdAUmVmZXJlcj0nLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkZXNjOiAn5pKt5pS+6YeP77yaJyArIGxpc3QucGxheSxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdtb3ZpZV8xX2xlZnRfcGljJyxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiBcXFxcXFxcImhpa2VyOi8vcGFnZS92aWRlb1xcXFxcXFwiLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBleHRyYToge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBhaWQ6IGxpc3QuYWlkXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH1cXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIH0gY2F0Y2ggKGUpIHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZC5wdXNoKHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6ICfpobXpnaLotbDkuKLkuoYuLi4nLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpbWc6ICdodHRwczovL2kwLmhkc2xiLmNvbS9iZnMvZ2VuZXJhbC9mN2I2NjcwMTFhNDY2MTU3MzJjNzAxZjRiYjFkMDdmNzkzZjhkMWRmLnBuZ0BSZWZlcmVyPScsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVybDogJ2hpa2VyOi8vZW1wdHknLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkZXNjOiAn5aSq6aKR57mB5LqG77yB56iN5ZCO5YaN6K+VficsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiBcXFxcXFxcInBpY18xXFxcXFxcXCJcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIH1cXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgc2V0SG9tZVJlc3VsdChkKTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgfSwgdXBNaWQpXFxcXG5cXFxcbsKgIMKgIH0sIHVwTWlkKVxcXFxuXFxcXG59KTtcXFxcblxcXFxuc2V0UmVzdWx0KGQpO1xcXFxuXFxcXG5cXFxcblxcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcInVw5pCc57SiXFxcIixcXFwicGF0aFxcXCI6XFxcInVwU2VhcmNoXFxcIixcXFwicnVsZVxcXCI6XFxcImpzOlxcXFxuXFxcXG5zZWF3b3JkID0gTVlfUEFSQU1TLnNlYXdvcmQ7XFxcXG5cXFxcbnZhciBkID0gW107XFxcXG5cXFxcbmNvb2tpZSA9IEpTT04ucGFyc2UoZmV0Y2hDb29raWUoJ2h0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS8nLCB7XFxcXG5cXFxcbsKgIMKgIGhlYWRlcnM6IHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgXFxcXFxcXCJVc2VyLUFnZW50XFxcXFxcXCI6IFBDX1VBLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCBcXFxcXFxcIlJlZmVyZXJcXFxcXFxcIjogXFxcXFxcXCJodHRwczovL3d3dy5iaWxpYmlsaS5jb20vXFxcXFxcXCIsXFxcXG5cXFxcbsKgIMKgIH0sXFxcXG5cXFxcbsKgIMKgIG1ldGhvZDogXFxcXFxcXCJHRVRcXFxcXFxcIlxcXFxuXFxcXG59KSlbMV07XFxcXG5cXFxcbnJlc3VsdERhdGEgPSBKU09OLnBhcnNlKGZldGNoKFxcXFxcXFwiaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS9zZWFyY2gvdHlwZT9fX3JlZnJlc2hfXz10cnVlJl9leHRyYT0mY29udGV4dD0mcGFnZT1cXFxcXFxcIiArIE1ZX1BBR0UgKyBcXFxcXFxcIiZwYWdlX3NpemU9MzYmb3JkZXI9JmR1cmF0aW9uPSZmcm9tX3NvdXJjZT0mZnJvbV9zcG1pZD0zMzMuMzM3JnBsYXRmb3JtPXBjJmhpZ2hsaWdodD0xJnNpbmdsZV9jb2x1bW49MCZrZXl3b3JkPVxcXFxcXFwiICsgc2Vhd29yZCArIFxcXFxcXFwiJnF2X2lkPVIySWhCRGIwWFo4RU02OWNsbzJyd2VzejlMNHdSZ1p5JmNhdGVnb3J5X2lkPSZzZWFyY2hfdHlwZT1iaWxpX3VzZXImb3JkZXJfc29ydD0wJnVzZXJfdHlwZT0wJmR5bmFtaWNfb2Zmc2V0PTAmcHJlbG9hZD10cnVlJmNvbTJjbz10cnVlXFxcXFxcXCIsIHtcXFxcblxcXFxuwqAgwqAgaGVhZGVyczoge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBcXFxcXFxcIlVzZXItQWdlbnRcXFxcXFxcIjogUENfVUEsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIFxcXFxcXFwiUmVmZXJlclxcXFxcXFwiOiBcXFxcXFxcImh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS9cXFxcXFxcIixcXFxcblxcXFxuwqAgwqAgwqAgwqAgXFxcXFxcXCJDb29raWVcXFxcXFxcIjogY29va2llXFxcXG5cXFxcbsKgIMKgIH0sXFxcXG5cXFxcbsKgIMKgIG1ldGhvZDogXFxcXFxcXCJHRVRcXFxcXFxcIlxcXFxuXFxcXG59KSkuZGF0YTtcXFxcblxcXFxuaWYgKE1ZX1BBR0UgPD0gcmVzdWx0RGF0YS5udW1QYWdlcykge1xcXFxuXFxcXG7CoCDCoCBkLnB1c2goe1xcXFxuXFxcXG7CoCDCoCDCoCDCoCB0aXRsZTogJ+W9k+WJjTrnrKwnICsgcmVzdWx0RGF0YS5wYWdlICsgJ+mhtVxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdOWFseaciScgKyByZXN1bHREYXRhLm51bVBhZ2VzICsgJ+mhtSwnICsgcmVzdWx0RGF0YS5udW1SZXN1bHRzICsgJ+adoeaVsOaNricsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIHVybDogXFxcXFxcXCJoaWtlcjovL2VtcHR5XFxcXFxcXCIsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIGNvbF90eXBlOiBcXFxcXFxcInRleHRfY2VudGVyXzFcXFxcXFxcIixcXFxcblxcXFxuwqAgwqAgfSk7XFxcXG5cXFxcbsKgIMKgIHJlc3VsdERhdGEucmVzdWx0LmZvckVhY2gobGlzdCA9PiB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGQucHVzaCh7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBcXFxcXFxcIjxiaWc+PGZvbnQgY29sb3I9J2JsdWUnPlxcXFxcXFwiICsgbGlzdC51bmFtZSArIFxcXFxcXFwiPC9mb250PjwvYmlnPjxzbWFsbD5cXFxcXFxcIiArIGxpc3QudXNpZ24gKyBcXFxcXFxcIjwvc21hbGw+XFxcXFxcXCIsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIGltZzogJ2h0dHBzOi8vJyArIGxpc3QudXBpYyArIFxcXFxcXFwiQFJlZmVyZXI9XFxcXFxcXCIsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiAnYXZhdGFyJyxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiBcXFxcXFxcImhpa2VyOi8vcGFnZS91cEhvbWVcXFxcXFxcIixcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgZXh0cmE6IHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgbWlkOiBsaXN0Lm1pZCxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IGxpc3QudW5hbWUsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGZhY2U6ICdodHRwczovLycgKyBsaXN0LnVwaWNcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgfVxcXFxuXFxcXG7CoCDCoCDCoCDCoCB9KTtcXFxcblxcXFxuwqAgwqAgfSk7XFxcXG5cXFxcbn1cXFxcblxcXFxuc2V0U2VhcmNoUmVzdWx0KGQpO1xcXFxuXFxcXG5cXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCJ2aWRlb+aQnOe0olxcXCIsXFxcInBhdGhcXFwiOlxcXCJ2aWRlb1NlYXJjaFxcXCIsXFxcInJ1bGVcXFwiOlxcXCJqczpcXFxcblxcXFxuc2Vhd29yZCA9IE1ZX1BBUkFNUy5zZWF3b3JkO1xcXFxuXFxcXG52YXIgZCA9IFtdO1xcXFxuXFxcXG5jb29raWUgPSBKU09OLnBhcnNlKGZldGNoQ29va2llKCdodHRwczovL3d3dy5iaWxpYmlsaS5jb20vJywge1xcXFxuXFxcXG7CoCDCoCBoZWFkZXJzOiB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIFxcXFxcXFwiVXNlci1BZ2VudFxcXFxcXFwiOiBQQ19VQSxcXFxcblxcXFxuwqAgwqAgwqAgwqAgXFxcXFxcXCJSZWZlcmVyXFxcXFxcXCI6IFxcXFxcXFwiaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL1xcXFxcXFwiLFxcXFxuXFxcXG7CoCDCoCB9LFxcXFxuXFxcXG7CoCDCoCBtZXRob2Q6IFxcXFxcXFwiR0VUXFxcXFxcXCJcXFxcblxcXFxufSkpWzFdO1xcXFxuXFxcXG5yZXN1bHREYXRhID0gSlNPTi5wYXJzZShmZXRjaChcXFxcXFxcImh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvc2VhcmNoL3R5cGU/X19yZWZyZXNoX189dHJ1ZSZfZXh0cmE9JmNvbnRleHQ9JnBhZ2U9XFxcXFxcXCIgKyBNWV9QQUdFICsgXFxcXFxcXCImcGFnZV9zaXplPTQyJmZyb21fc291cmNlPSZmcm9tX3NwbWlkPTMzMy4zMzcmcGxhdGZvcm09cGMmaGlnaGxpZ2h0PTEmc2luZ2xlX2NvbHVtbj0wJmtleXdvcmQ9XFxcXFxcXCIgKyBzZWF3b3JkICsgXFxcXFxcXCImcXZfaWQ9dlR0VVQ0UmZoenQycFB6OXA1V3UzWkk5UVFnVWZ4c0EmY2F0ZWdvcnlfaWQ9JnNlYXJjaF90eXBlPXZpZGVvJmR5bmFtaWNfb2Zmc2V0PTAmcHJlbG9hZD10cnVlJmNvbTJjbz10cnVlXFxcXFxcXCIsIHtcXFxcblxcXFxuwqAgwqAgaGVhZGVyczoge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBcXFxcXFxcIlVzZXItQWdlbnRcXFxcXFxcIjogUENfVUEsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIFxcXFxcXFwiUmVmZXJlclxcXFxcXFwiOiBcXFxcXFxcImh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS9cXFxcXFxcIixcXFxcblxcXFxuwqAgwqAgwqAgwqAgXFxcXFxcXCJDb29raWVcXFxcXFxcIjogY29va2llXFxcXG5cXFxcbsKgIMKgIH0sXFxcXG5cXFxcbsKgIMKgIG1ldGhvZDogXFxcXFxcXCJHRVRcXFxcXFxcIlxcXFxuXFxcXG59KSkuZGF0YTtcXFxcblxcXFxuaWYgKE1ZX1BBR0UgPD0gcmVzdWx0RGF0YS5udW1QYWdlcykge1xcXFxuXFxcXG7CoCDCoCBkLnB1c2goe1xcXFxuXFxcXG7CoCDCoCDCoCDCoCB0aXRsZTogJ+W9k+WJjTrnrKwnICsgcmVzdWx0RGF0YS5wYWdlICsgJ+mhtVxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdOWFseaciScgKyByZXN1bHREYXRhLm51bVBhZ2VzICsgJ+mhtSwnICsgcmVzdWx0RGF0YS5udW1SZXN1bHRzICsgJ+adoeaVsOaNricsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIHVybDogXFxcXFxcXCJoaWtlcjovL2VtcHR5XFxcXFxcXCIsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIGNvbF90eXBlOiBcXFxcXFxcInRleHRfY2VudGVyXzFcXFxcXFxcIixcXFxcblxcXFxuwqAgwqAgfSk7XFxcXG5cXFxcbsKgIMKgIHJlc3VsdERhdGEucmVzdWx0LmZvckVhY2gobGlzdCA9PiB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIC8vIHRpdGxlPWxpc3QudGl0bGUucmVwbGFjZSgnPGVtIGNsYXNzPVxcXFxcXFxcXFxcXFxcXCJrZXl3b3JkXFxcXFxcXFxcXFxcXFxcIj4nLCc8Zm9udCBjb2xvcj1cXFxcXFxcInJlZFxcXFxcXFwiPicpLnJlcGxhY2UoJzwvZW0+JywnPC9mb250PicpXFxcXG5cXFxcbsKgIMKgIMKgIMKgIHRpdGxlID0gbGlzdC50aXRsZS5yZXBsYWNlKC88ZW0gY2xhc3M9XFxcXFxcXFxcXFxcXFxcImtleXdvcmRcXFxcXFxcXFxcXFxcXFwiPi9nLCAnJykucmVwbGFjZSgvPFxcXFxcXFxcL2VtPi9nLCAnJylcXFxcblxcXFxuwqAgwqAgwqAgwqAgZC5wdXNoKHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IHRpdGxlLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCBpbWc6ICdodHRwczovLycgKyBsaXN0LnBpYyArIFxcXFxcXFwiQFJlZmVyZXI9XFxcXFxcXCIsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIGRlc2M6IGxpc3QuZGVzY3JpcHRpb24sXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiAnbW92aWVfMV9sZWZ0X3BpYycsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIHVybDogXFxcXFxcXCJoaWtlcjovL3BhZ2UvdmlkZW9cXFxcXFxcIixcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgZXh0cmE6IHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgLy8g6KeG6aKR5qCH6K+GXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGFpZDogbGlzdC5haWQsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiB0aXRsZVxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCB9XFxcXG5cXFxcbsKgIMKgIMKgIMKgIH0pO1xcXFxuXFxcXG7CoCDCoCB9KTtcXFxcblxcXFxufVxcXFxuXFxcXG5zZXRTZWFyY2hSZXN1bHQoZCk7XFxcXG5cXFxcblxcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8xX2xlZnRfcGljXFxcIixcXFwibmFtZVxcXCI6XFxcIuaOqOmAgVxcXCIsXFxcInBhdGhcXFwiOlxcXCJmZWVkXFxcIixcXFwicnVsZVxcXCI6XFxcIiQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vcGFnZS9hcGlcXFxcXFxcIikuZ2V0RmVlZCgpLmZvckVhY2goaXRlbSA9PiB7XFxcXG5cXFxcbsKgIMKgIGQucHVzaCh7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHRpdGxlOiBpdGVtLnRpdGxlLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCBpbWc6IGl0ZW0ucGljKydAUmVmZXJlcj0nLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCBkZXNjOiAndXA6JyArIGl0ZW0ub3duZXIubmFtZSArICdcXFxcXFxcXG4nICsgaXRlbS5zdGF0LnZpZXcgKyBcXFxcXFxcIuaSreaUvuKAu1xcXFxcXFwiICsgaXRlbS5zdGF0Lmxpa2UgKyBcXFxcXFxcIueCuei1nlxcXFxcXFwiLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCB1cmw6IFxcXFxcXFwiaGlrZXI6Ly9wYWdlL3ZpZGVvXFxcXFxcXCIsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIGNvbF90eXBlOiAnbW92aWVfMV9sZWZ0X3BpYycsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIGV4dHJhOiB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIC8vIGlk5YW25a6e5pivYWlkXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIGFpZDogaXRlbS5pZCxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgY2lkOiBpdGVtLmNpZCxcXFxcblxcXFxuwqAgwqAgwqAgwqAgfVxcXFxuXFxcXG7CoCDCoCB9KVxcXFxuXFxcXG59KVxcXFxuXFxcXG5cXFxcblxcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJ0ZXh0XzFcXFwiLFxcXCJuYW1lXFxcIjpcXFwiQVBJXFxcIixcXFwicGF0aFxcXCI6XFxcImFwaVxcXCIsXFxcInJ1bGVcXFwiOlxcXCIvLyBwYXJ0MTrogZrlkIjlh73mlbAtLS0tLS0tLS0tLS0tLS0tXFxcXG4vLyDnmbvlvZXpqozor4FcXFxcbiQuZXhwb3J0cy5pc0xvZ2dlZEluID0gZnVuY3Rpb24gKCkge1xcXFxuICAgIGlmIChmaWxlRXhpc3QoXFxcXFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2JpbGkudHh0XFxcXFxcXCIpKSB7XFxcXG4gICAgICAgIGJpbGlEYXRlID0gSlNPTi5wYXJzZShyZXF1ZXN0KFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9iaWxpLnR4dFxcXFxcXFwiKSk7XFxcXG4gICAgICAgIHZhciBjb29raWUgPSBiaWxpRGF0ZS5jb29raWU7XFxcXG4gICAgICAgIGxldCB1c2VyaW5mbyA9IEpTT04ucGFyc2UoZmV0Y2goXFxcXFxcXCJodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL25hdlxcXFxcXFwiLCB7XFxcXG4gICAgICAgICAgICBoZWFkZXJzOiB7XFxcXG4gICAgICAgICAgICAgICAgXFxcXFxcXCJDb29raWVcXFxcXFxcIjogY29va2llXFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgIH0pKS5kYXRhO1xcXFxuICAgICAgICBpZiAodXNlcmluZm8uaXNMb2dpbiA9PT0gZmFsc2UpIHtcXFxcbiAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7XFxcXG4gICAgICAgICAgICAgICAgXFxcXFxcXCJ1c2VyTmFtZVxcXFxcXFwiOiAn5pyq55m75b2VJyxcXFxcbiAgICAgICAgICAgICAgICBcXFxcXFxcInVzZXJNaWRcXFxcXFxcIjogJycsXFxcXG4gICAgICAgICAgICAgICAgXFxcXFxcXCJ1c2VyRmFjZVxcXFxcXFwiOiAnJyxcXFxcbiAgICAgICAgICAgICAgICBcXFxcXFxcInR5cGVcXFxcXFxcIjogZmFsc2VcXFxcbiAgICAgICAgICAgIH0pXFxcXG4gICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICBiaWxpRGF0ZS51c2VyTmFtZSA9IHVzZXJpbmZvLnVuYW1lO1xcXFxuICAgICAgICAgICAgYmlsaURhdGUudXNlck1pZCA9IHVzZXJpbmZvLm1pZDtcXFxcbiAgICAgICAgICAgIGJpbGlEYXRlLmZhY2UgPSB1c2VyaW5mby5mYWNlICsgXFxcXFxcXCJAUmVmZXJlcj1cXFxcXFxcIjtcXFxcbiAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2JpbGkudHh0JywgSlNPTi5zdHJpbmdpZnkoYmlsaURhdGUpKTtcXFxcbiAgICAgICAgICAgIC8vIHJldHVybiB0cnVlO1xcXFxuICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHtcXFxcbiAgICAgICAgICAgICAgICBcXFxcXFxcInVzZXJOYW1lXFxcXFxcXCI6IGJpbGlEYXRlLnVzZXJOYW1lLFxcXFxuICAgICAgICAgICAgICAgIFxcXFxcXFwidXNlck1pZFxcXFxcXFwiOiBiaWxpRGF0ZS51c2VyTWlkLFxcXFxuICAgICAgICAgICAgICAgIFxcXFxcXFwidXNlckZhY2VcXFxcXFxcIjogYmlsaURhdGUuZmFjZSxcXFxcbiAgICAgICAgICAgICAgICBcXFxcXFxcInR5cGVcXFxcXFxcIjogdHJ1ZVxcXFxuICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgIH1cXFxcbiAgICB9IGVsc2Uge1xcXFxuICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoe1xcXFxuICAgICAgICAgICAgXFxcXFxcXCJ1c2VyTmFtZVxcXFxcXFwiOiAn5pyq55m75b2VJyxcXFxcbiAgICAgICAgICAgIFxcXFxcXFwidXNlck1pZFxcXFxcXFwiOiAnJyxcXFxcbiAgICAgICAgICAgIFxcXFxcXFwidXNlckZhY2VcXFxcXFxcIjogJycsXFxcXG4gICAgICAgICAgICBcXFxcXFxcInR5cGVcXFxcXFxcIjogZmFsc2VcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgfVxcXFxufVxcXFxuLy8g5ZOU5ZOp6KeG6aKR6Kej5p6Q77ya6I635Y+W5pKt5pS+5Zyw5Z2AK+aPkOS6pOaSreaUvuiusOW9lVxcXFxuJC5leHBvcnRzLmJpbGlMYXp5ID0gZnVuY3Rpb24gKGlkLCBjaWQsIHFuKSB7XFxcXG4gICAgdmFyIGRhc2ggPSAkLnJlcXVpcmUoXFxcXFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcXFxcXCIpLmdldFVybChpZCwgY2lkLCBxbik7XFxcXG4gICAgLy8g5o+Q5Lqk5Y6G5Y+y6K6w5b2VXFxcXG4gICAgJC5yZXF1aXJlKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXFxcXFwiKS5yZXBvcnRQcm9jZXNzKGlkLCBjaWQpO1xcXFxuICAgIC8vIHF1YWxpdHlOdW09ZGFzaC5hdWRpby5sZW5ndGg75LiN6ZyA6KaB5LqG77yM5om+5Yiw5LqG5pu05aW955qE5Yik5pat5pa55rOV77yM6Jm954S25oiR5bm25LiN55+l6YGT6L+Z5Lqb5Y+C5pWw55qE5ZCr5LmJ5piv5LuA5LmIXFxcXG4gICAgdmlkZW9MaXN0ID0gW107XFxcXG4gICAgYXVkaW9MaXN0ID0gW107XFxcXG4gICAgbmFtZUxpc3QgPSBbXTtcXFxcbiAgICBoZXJhZGVycyA9IFtdO1xcXFxuICAgIGRhc2guYXVkaW8uZm9yRWFjaChpdGVtID0+IHtcXFxcbiAgICAgICAgYXVkaW9MaXN0LnB1c2goaXRlbS5iYXNlVXJsKTtcXFxcbiAgICAgICAgaGVyYWRlcnMucHVzaCh7XFxcXG4gICAgICAgICAgICBcXFxcXFxcIlVzZXItQWdlbnRcXFxcXFxcIjogUENfVUEsXFxcXG4gICAgICAgICAgICBcXFxcXFxcIlJlZmVyZXJcXFxcXFxcIjogXFxcXFxcXCJodHRwczovL3d3dy5iaWxpYmlsaS5jb21cXFxcXFxcIlxcXFxuICAgICAgICB9KTtcXFxcbiAgICB9KTtcXFxcbiAgICBkYXNoLnZpZGVvLmZvckVhY2goaXRlbSA9PiB7XFxcXG4gICAgICAgIGlmIChpdGVtLmNvZGVjaWQgPT0gNykge1xcXFxuICAgICAgICAgICAgdmlkZW9MaXN0LnB1c2goaXRlbS5iYXNlVXJsICsgXFxcXFxcXCIjaXNWaWRlbz10cnVlI1xcXFxcXFwiKTtcXFxcbiAgICAgICAgICAgIGlmIChpdGVtLmlkID09IDEyNikge1xcXFxuICAgICAgICAgICAgICAgIG5hbWVMaXN0LnB1c2goJ+adnOavlOinhueVjCcpO1xcXFxuICAgICAgICAgICAgfWVsc2UgaWYgKGl0ZW0uaWQgPT0gMTI1KSB7XFxcXG4gICAgICAgICAgICAgICAgbmFtZUxpc3QucHVzaCgnSERSIOecn+W9qeiJsicpO1xcXFxuICAgICAgICAgICAgfWVsc2UgaWYgKGl0ZW0uaWQgPT0gMTIwKSB7XFxcXG4gICAgICAgICAgICAgICAgbmFtZUxpc3QucHVzaCgnNEvotoXmuIUnKTtcXFxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbS5pZCA9PSAxMTYpIHtcXFxcbiAgICAgICAgICAgICAgICBuYW1lTGlzdC5wdXNoKCcxMDgwUDYw6auY5bin546HJyk7XFxcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0uaWQgPT0gMTEyKSB7XFxcXG4gICAgICAgICAgICAgICAgbmFtZUxpc3QucHVzaCgnMTA4MFAr6auY56CB546HJyk7XFxcXG4gICAgICAgICAgICB9ZWxzZSBpZiAoaXRlbS5pZCA9PSA4MCkge1xcXFxuICAgICAgICAgICAgICAgIG5hbWVMaXN0LnB1c2goJzEwODBQ6auY5riFJyk7XFxcXG4gICAgICAgICAgICB9ZWxzZSBpZiAoaXRlbS5pZCA9PSA3NCkge1xcXFxuICAgICAgICAgICAgICAgIG5hbWVMaXN0LnB1c2goJzcyMFA2MOmrmOW4p+eOhycpO1xcXFxuICAgICAgICAgICAgfWVsc2UgaWYgKGl0ZW0uaWQgPT0gNjQpIHtcXFxcbiAgICAgICAgICAgICAgICBuYW1lTGlzdC5wdXNoKCc3MjBQ6auY5riFJyk7XFxcXG4gICAgICAgICAgICB9ZWxzZSBpZiAoaXRlbS5pZCA9PSAzMikge1xcXFxuICAgICAgICAgICAgICAgIG5hbWVMaXN0LnB1c2goJzQ4MFDmuIXmmbAnKTtcXFxcbiAgICAgICAgICAgIH1lbHNlIGlmIChpdGVtLmlkID09IDE2KSB7XFxcXG4gICAgICAgICAgICAgICAgbmFtZUxpc3QucHVzaCgnMzYwUOa1geeVhScpO1xcXFxuICAgICAgICAgICAgfWVsc2UgaWYgKGl0ZW0uaWQgPT0gNikge1xcXFxuICAgICAgICAgICAgICAgIG5hbWVMaXN0LnB1c2goJzI0MFDmnoHpgJ8nKTtcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgfVxcXFxuICAgIH0pO1xcXFxuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7XFxcXG4gICAgICAgIHVybHM6IHZpZGVvTGlzdCxcXFxcbiAgICAgICAgYXVkaW9VcmxzOiBhdWRpb0xpc3QsXFxcXG4gICAgICAgIGRhbm11OiAnaHR0cHM6Ly9jb21tZW50LmJpbGliaWxpLmNvbS8nICsgY2lkICsgJy54bWwnLFxcXFxuICAgICAgICBuYW1lczogbmFtZUxpc3QsXFxcXG4gICAgICAgIGhlYWRlcnM6IGhlcmFkZXJzXFxcXG4gICAgfSlcXFxcbn1cXFxcbi8vIOeojeWQjuWcqOeci+KAlOKAlOaAu+aTjeS9nOWIpOaWrVxcXFxuJC5leHBvcnRzLmp1ZGdlVG92aWV3ID0gZnVuY3Rpb24gKGFpZCkge1xcXFxuICAgIHNlbGVjdGlvbiA9IFsn5re75YqgJywgJ+enu+mZpCddO1xcXFxuICAgIHJldHVybiAkKHNlbGVjdGlvbiwgMSkuc2VsZWN0KChhaWQpID0+IHtcXFxcbiAgICAgICAgaWYgKGlucHV0ID09ICfmt7vliqAnKSB7XFxcXG4gICAgICAgICAgICByZXMgPSAkLnJlcXVpcmUoXFxcXFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcXFxcXCIpLmFkZFRvdmlldyhhaWQpO1xcXFxuICAgICAgICAgICAgaWYgKHJlcyA9PSAwKSB7XFxcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/mt7vliqDmiJDlip9cXFxcXFxcIlxcXFxuICAgICAgICAgICAgfSBlbHNlIGlmIChyZXMgPT0gLTEwMSkge1xcXFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcInRvYXN0Oi8v6LSm5Y+35pyq55m75b2VXFxcXFxcXCJcXFxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzID09IC0xMTEpIHtcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL2NzcmbmoKHpqozlpLHotKVcXFxcXFxcIlxcXFxuICAgICAgICAgICAgfSBlbHNlIGlmIChyZXMgPT0gLTQwMCkge1xcXFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcInRvYXN0Oi8v6K+35rGC6ZSZ6K+vXFxcXFxcXCJcXFxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzID09IDkwMDAxKSB7XFxcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/liJfooajlt7Lmu6FcXFxcXFxcIlxcXFxuICAgICAgICAgICAgfSBlbHNlIGlmIChyZXMgPT0gOTAwMDMpIHtcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL+eov+S7tuW3sue7j+iiq+WIoOmZpFxcXFxcXFwiXFxcXG4gICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcInRvYXN0Oi8v5pyq55+l6ZSZ6K+vXFxcXFxcXCJcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgIHJlcyA9ICQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vcGFnZS9hcGlcXFxcXFxcIikuZGVsVG92aWV3KGFpZCk7XFxcXG4gICAgICAgICAgICBpZiAocmVzID09IDApIHtcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL+enu+mZpOaIkOWKn1xcXFxcXFwiXFxcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJlcyA9PSAtMTAxKSB7XFxcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/otKblj7fmnKrnmbvlvZVcXFxcXFxcIlxcXFxuICAgICAgICAgICAgfSBlbHNlIGlmIChyZXMgPT0gLTExMSkge1xcXFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcInRvYXN0Oi8vY3NyZuagoemqjOWksei0pVxcXFxcXFwiXFxcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJlcyA9PSAtNDAwKSB7XFxcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/or7fmsYLplJnor69cXFxcXFxcIlxcXFxuICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL+acquefpemUmeivr1xcXFxcXFwiXFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgIH1cXFxcbiAgICB9LCBhaWQpXFxcXG59XFxcXG4vLyDmk43kvZznlKjmiLflhbPns7tcXFxcbiQuZXhwb3J0cy5jaGFuZ2VVc2VyUmVsYXRpb24gPSBmdW5jdGlvbiAobWlkLCByZV9zcmMpIHtcXFxcbiAgICBzZWxlY3Rpb24gPSBbJ+WFs+azqCcsICflj5blhbMnLCAn5oKE5oKE5YWz5rOoJywgJ+WPlua2iOaChOaChOWFs+azqCcsICfmi4npu5EnLCAn5Y+W5raI5ouJ6buRJywgJ+i4ouWHuueyieS4nScsICfnp7vliqjliIbnu4QnXTtcXFxcbiAgICByZXR1cm4gJChzZWxlY3Rpb24sIDIpLnNlbGVjdCgobWlkLCByZV9zcmMpID0+IHtcXFxcbiAgICAgICAgaWYgKGlucHV0ID09ICfnp7vliqjliIbnu4QnKSB7XFxcXG4gICAgICAgICAgICBiZWZvcmVUYWdpZHMgPSBbXTtcXFxcbiAgICAgICAgICAgIGdyb3VwcyA9ICQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vcGFnZS9hcGlcXFxcXFxcIikuZ2V0VXNlckdyb3VwKG1pZCk7XFxcXG4gICAgICAgICAgICBpZiAoSlNPTi5zdHJpbmdpZnkoZ3JvdXBzKSA9PSAne30nKSB7XFxcXG4gICAgICAgICAgICAgICAgYmVmb3JlVGFnaWRzLnB1c2goMCk7XFxcXG4gICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgIGZvciAodmFyIHByb3AgaW4gZ3JvdXBzKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgIGJlZm9yZVRhZ2lkcy5wdXNoKHBhcnNlSW50KHByb3ApKTtcXFxcbiAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAvLyDojrflj5bmiJHnmoTliIbnu4RcXFxcbiAgICAgICAgICAgIGZvY3VzR3JvdXBMaXN0ID0gW107XFxcXG4gICAgICAgICAgICAkLnJlcXVpcmUoXFxcXFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcXFxcXCIpLmdldE15QXR0ZW50aW9uR3JvdXBMaXN0KCkuZm9yRWFjaChsaXN0ID0+IHtcXFxcbiAgICAgICAgICAgICAgICBmb2N1c0dyb3VwTGlzdC5wdXNoKGxpc3QubmFtZSArICcgJyArIGxpc3QudGFnaWQpO1xcXFxuICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICByZXR1cm4gJChmb2N1c0dyb3VwTGlzdCwgMSkuc2VsZWN0KChiZWZvcmVUYWdpZHMsIG1pZCkgPT4ge1xcXFxuICAgICAgICAgICAgICAgIGFmdGVyVGFnaWRzID0gW107XFxcXG4gICAgICAgICAgICAgICAgYWZ0ZXJUYWdpZHMucHVzaChwYXJzZUludChpbnB1dC5zcGxpdCgnICcpWzFdKSk7XFxcXG4gICAgICAgICAgICAgICAgZmlkcyA9IFtdO1xcXFxuICAgICAgICAgICAgICAgIGZpZHMucHVzaChOdW1iZXIobWlkKSk7XFxcXG4gICAgICAgICAgICAgICAgcmVzID0gJC5yZXF1aXJlKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXFxcXFwiKS5tb3ZlVXNlcnMoYmVmb3JlVGFnaWRzLCBhZnRlclRhZ2lkcywgZmlkcyk7XFxcXG4gICAgICAgICAgICAgICAgaWYgKHJlcyA9PSAwKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcInRvYXN0Oi8v56e75Yqo55So5oi35YiwXFxcXFxcXCIgKyBpbnB1dC5zcGxpdCgnICcpWzBdICsgXFxcXFxcXCLliIbnu4TmiJDlip9cXFxcXFxcIlxcXFxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzID09IC0xMDEpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/otKblj7fmnKrnmbvlvZVcXFxcXFxcIlxcXFxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzID09IC0xMTEpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly9jc3Jm5qCh6aqM5aSx6LSlXFxcXFxcXCJcXFxcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlcyA9PSAtNDAwKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcInRvYXN0Oi8v6K+35rGC6ZSZ6K+vXFxcXFxcXCJcXFxcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlcyA9PSAyMjEwNCkge1xcXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL+aXoOadg+mZkFxcXFxcXFwiXFxcXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXMgPT0gMjIxMDUpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/mnKrlhbPms6hcXFxcXFxcIlxcXFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcInRvYXN0Oi8v5pyq55+l6ZSZ6K+vXFxcXFxcXCJcXFxcbiAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICB9LCBiZWZvcmVUYWdpZHMsIG1pZCk7XFxcXG4gICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICBpZiAoaW5wdXQgPT0gJ+WFs+azqCcpIHtcXFxcbiAgICAgICAgICAgICAgICB2YXIgYWN0ID0gMTtcXFxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5wdXQgPT0gJ+WPluWFsycpIHtcXFxcbiAgICAgICAgICAgICAgICB2YXIgYWN0ID0gMjtcXFxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5wdXQgPT0gJ+aChOaChOWFs+azqCcpIHtcXFxcbiAgICAgICAgICAgICAgICB2YXIgYWN0ID0gMztcXFxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5wdXQgPT0gJ+WPlua2iOaChOaChOWFs+azqCcpIHtcXFxcbiAgICAgICAgICAgICAgICB2YXIgYWN0ID0gNDtcXFxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5wdXQgPT0gJ+aLiem7kScpIHtcXFxcbiAgICAgICAgICAgICAgICB2YXIgYWN0ID0gNTtcXFxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5wdXQgPT0gJ+WPlua2iOaLiem7kScpIHtcXFxcbiAgICAgICAgICAgICAgICB2YXIgYWN0ID0gNjtcXFxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5wdXQgPT0gJ+i4ouWHuueyieS4nScpIHtcXFxcbiAgICAgICAgICAgICAgICB2YXIgYWN0ID0gNztcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIHJlcyA9ICQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vcGFnZS9hcGlcXFxcXFxcIikuYWRkQXR0ZW50aW9uKG1pZCwgYWN0LCByZV9zcmMpO1xcXFxuICAgICAgICAgICAgcmVsYXRpb24gPSAkLnJlcXVpcmUoXFxcXFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcXFxcXCIpLnVzZXJNYXBwaW5nKG1pZCk7XFxcXG4gICAgICAgICAgICB1cGRhdGVJdGVtKCdyZWxhdGlvbicsIHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogcmVsYXRpb24sXFxcXG4gICAgICAgICAgICAgICAgaW1nOiByZWxhdGlvbiA9PSAn5pyq5YWz5rOoJyA/IHN0b3JhZ2UwLmdldE15VmFyKCflm77moIcnKS7mt7vliqDlhbPms6ggOiBzdG9yYWdlMC5nZXRNeVZhcign5Zu+5qCHJyku5bey5YWz5rOoXFxcXG4gICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgIGlmIChyZXMgPT0gMCkge1xcXFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcInRvYXN0Oi8vXFxcXFxcXCIgKyBpbnB1dCArIFxcXFxcXFwi5oiQ5YqfXFxcXFxcXCJcXFxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzID09IC0xMDEpIHtcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL+i0puWPt+acqueZu+W9lVxcXFxcXFwiXFxcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJlcyA9PSAtMTExKSB7XFxcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly9jc3Jm5qCh6aqM5aSx6LSlXFxcXFxcXCJcXFxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzID09IC00MDApIHtcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL+ivt+axgumUmeivr1xcXFxcXFwiXFxcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJlcyA9PSAyMjAwMSkge1xcXFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcInRvYXN0Oi8v5LiN6IO95a+56Ieq5bex6L+b6KGM5q2k5pON5L2cXFxcXFxcXCJcXFxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzID09IDIyMDAzKSB7XFxcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/nlKjmiLfkvY3kuo7pu5HlkI3ljZVcXFxcXFxcIlxcXFxuICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL+acquefpemUmeivr1xcXFxcXFwiXFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgIH1cXFxcbiAgICB9LCBtaWQsIHJlX3NyYylcXFxcbn1cXFxcbi8vIOaYoOWwhOeUqOaIt+WFs+ezu1xcXFxuJC5leHBvcnRzLnVzZXJNYXBwaW5nID0gZnVuY3Rpb24gKG1pZCkge1xcXFxuICAgIHJlbGF0aW9uUmVzID0gJC5yZXF1aXJlKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXFxcXFwiKS5nZXRSZWxhdGlvbihtaWQpO1xcXFxuICAgIGlmIChyZWxhdGlvblJlcy5yZWxhdGlvbi5hdHRyaWJ1dGUgPT0gMCkge1xcXFxuICAgICAgICByZWxhdGlvbiA9ICfmnKrlhbPms6gnXFxcXG4gICAgfSBlbHNlIGlmIChyZWxhdGlvblJlcy5yZWxhdGlvbi5hdHRyaWJ1dGUgPT0gMSkge1xcXFxuICAgICAgICByZWxhdGlvbiA9ICfmgoTmgoTlhbPms6gnXFxcXG4gICAgfSBlbHNlIGlmIChyZWxhdGlvblJlcy5yZWxhdGlvbi5hdHRyaWJ1dGUgPT0gMikge1xcXFxuICAgICAgICByZWxhdGlvbiA9ICflt7LlhbPms6gnXFxcXG4gICAgfSBlbHNlIGlmIChyZWxhdGlvblJlcy5yZWxhdGlvbi5hdHRyaWJ1dGUgPT0gNikge1xcXFxuICAgICAgICByZWxhdGlvbiA9ICflt7LkupLnsoknXFxcXG4gICAgfSBlbHNlIGlmIChyZWxhdGlvblJlcy5yZWxhdGlvbi5hdHRyaWJ1dGUgPT0gMTI4KSB7XFxcXG4gICAgICAgIHJlbGF0aW9uID0gJ+W3suaLiem7kSdcXFxcbiAgICB9XFxcXG4gICAgcmV0dXJuIHJlbGF0aW9uO1xcXFxufVxcXFxuLy8g54K56LWe5pON5L2c6YC76L6RXFxcXG4kLmV4cG9ydHMubGlrZUxvZ2ljID0gZnVuY3Rpb24gKGFpZCkge1xcXFxuICAgIGhhc0xpa2UgPSAkLnJlcXVpcmUoXFxcXFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcXFxcXCIpLmhhc0xpa2UoYWlkKTtcXFxcbiAgICBpZiAoaGFzTGlrZSA9PSAwKSB7XFxcXG4gICAgICAgIHJlcyA9ICQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vcGFnZS9hcGlcXFxcXFxcIikuc2V0TGlrZShhaWQsIDEpO1xcXFxuICAgICAgICBpZiAocmVzID09IDApIHtcXFxcbiAgICAgICAgICAgIGxpa2UgPSBKU09OLnBhcnNlKGZldGNoKFxcXFxcXFwiaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3P2FpZD1cXFxcXFxcIiArIGFpZCkpLmRhdGEuc3RhdC5saWtlO1xcXFxuICAgICAgICAgICAgdXBkYXRlSXRlbSgnc2V0TGlrZScsIHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogKGxpa2UgKyAxKSArICcnLFxcXFxuICAgICAgICAgICAgICAgIGltZzogc3RvcmFnZTAuZ2V0TXlWYXIoJ+WbvuaghycpLuW3sueCuei1nlxcXFxuICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL+eCuei1nuaIkOWKn1xcXFxcXFwiO1xcXFxuICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/ngrnotZ7lh7rplJnkuoZ+XFxcXFxcXCI7XFxcXG4gICAgICAgIH1cXFxcbiAgICB9IGVsc2Uge1xcXFxuICAgICAgICByZXMgPSAkLnJlcXVpcmUoXFxcXFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcXFxcXCIpLnNldExpa2UoYWlkLCAyKTtcXFxcbiAgICAgICAgaWYgKHJlcyA9PSAwKSB7XFxcXG4gICAgICAgICAgICBsaWtlID0gSlNPTi5wYXJzZShmZXRjaChcXFxcXFxcImh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldz9haWQ9XFxcXFxcXCIgKyBhaWQpKS5kYXRhLnN0YXQubGlrZTtcXFxcbiAgICAgICAgICAgIHVwZGF0ZUl0ZW0oJ3NldExpa2UnLCB7XFxcXG4gICAgICAgICAgICAgICAgdGl0bGU6IChsaWtlIC0gMSkgKyAnJyxcXFxcbiAgICAgICAgICAgICAgICBpbWc6IHN0b3JhZ2UwLmdldE15VmFyKCflm77moIcnKS7mnKrngrnotZ5cXFxcbiAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/lj5bmtojngrnotZ7miJDlip9cXFxcXFxcIjtcXFxcbiAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgIHJldHVybiBcXFxcXFxcInRvYXN0Oi8v5Y+W5raI54K56LWe5Ye66ZSZ5LqGflxcXFxcXFwiO1xcXFxuICAgICAgICB9XFxcXG4gICAgfVxcXFxufVxcXFxuLy8g5pS26JeP5pON5L2c6YC76L6RXFxcXG4kLmV4cG9ydHMuZmF2b3VyTG9naWMgPSBmdW5jdGlvbiAoYWlkLCBtaWQpIHtcXFxcbiAgICBoYXNGYXZvdXIgPSAkLnJlcXVpcmUoXFxcXFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcXFxcXCIpLmhhc0Zhdm91cihhaWQpO1xcXFxuICAgIGlmIChoYXNGYXZvdXIpIHtcXFxcbiAgICAgICAgLy8g56e75Ye65pS26JePXFxcXG4gICAgICAgIGZhdm91cklkTGlzdCA9ICQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vcGFnZS9hcGlcXFxcXFxcIikuZ2V0RmF2b3VySWRMaXN0KGFpZCwgbWlkKTtcXFxcbiAgICAgICAgcmVzID0gJC5yZXF1aXJlKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXFxcXFwiKS5zZXRGYXZvdXIoYWlkLCAnJywgZmF2b3VySWRMaXN0KTtcXFxcbiAgICAgICAgaWYgKHJlcyA9PSAwKSB7XFxcXG4gICAgICAgICAgICBsaWtlID0gSlNPTi5wYXJzZShmZXRjaChcXFxcXFxcImh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldz9haWQ9XFxcXFxcXCIgKyBhaWQpKS5kYXRhLnN0YXQuZmF2b3JpdGU7XFxcXG4gICAgICAgICAgICB1cGRhdGVJdGVtKCdzZXRGYXZvdXInLCB7XFxcXG4gICAgICAgICAgICAgICAgdGl0bGU6IChsaWtlIC0gMSkgKyAnJyxcXFxcbiAgICAgICAgICAgICAgICBpbWc6IHN0b3JhZ2UwLmdldE15VmFyKCflm77moIcnKS7mnKrmlLbol49cXFxcbiAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/lj5bmtojmlLbol4/miJDlip9cXFxcXFxcIjtcXFxcbiAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgIHJldHVybiBcXFxcXFxcInRvYXN0Oi8v5Y+W5raI5pS26JeP5Ye66ZSZ5LqGflxcXFxcXFwiO1xcXFxuICAgICAgICB9XFxcXG4gICAgfSBlbHNlIHtcXFxcbiAgICAgICAgLy8g6YCJ5oup5pS26JePXFxcXG4gICAgICAgIHJlcyA9ICQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vcGFnZS9hcGlcXFxcXFxcIikuZ2V0Q29sbGVjdGlvbkdyb3VwTGlzdCgpWzBdLm1lZGlhTGlzdFJlc3BvbnNlLmxpc3Q7XFxcXG4gICAgICAgIEdyb3VwTGlzdCA9IFtdO1xcXFxuICAgICAgICByZXMuZm9yRWFjaChpdGVtID0+IHtcXFxcbiAgICAgICAgICAgIEdyb3VwTGlzdC5wdXNoKGl0ZW0udGl0bGUgKyAnICcgKyBpdGVtLmlkKTtcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgICAgIHJldHVybiAkKEdyb3VwTGlzdCwgMSkuc2VsZWN0KChhaWQpID0+IHtcXFxcbiAgICAgICAgICAgIHNlbGVjdElkID0gcGFyc2VJbnQoaW5wdXQuc3BsaXQoJyAnKVsxXSlcXFxcbiAgICAgICAgICAgIHJlcyA9ICQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vcGFnZS9hcGlcXFxcXFxcIikuc2V0RmF2b3VyKGFpZCwgc2VsZWN0SWQsICcnKTtcXFxcbiAgICAgICAgICAgIGlmIChyZXMgPT0gMCkge1xcXFxuICAgICAgICAgICAgICAgIGxpa2UgPSBKU09OLnBhcnNlKGZldGNoKFxcXFxcXFwiaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3P2FpZD1cXFxcXFxcIiArIGFpZCkpLmRhdGEuc3RhdC5mYXZvcml0ZTtcXFxcbiAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKCdzZXRGYXZvdXInLCB7XFxcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAobGlrZSArIDEpICsgJycsXFxcXG4gICAgICAgICAgICAgICAgICAgIGltZzogc3RvcmFnZTAuZ2V0TXlWYXIoJ+WbvuaghycpLuW3suaUtuiXj1xcXFxuICAgICAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcInRvYXN0Oi8v5pS26JeP5oiQ5YqfXFxcXFxcXCI7XFxcXG4gICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcInRvYXN0Oi8v5pS26JeP5Ye66ZSZ5LqGflxcXFxcXFwiO1xcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICB9LCBhaWQpO1xcXFxuICAgIH1cXFxcbn1cXFxcblxcXFxuXFxcXG5cXFxcbi8vIHBhcnQyOuaVo+ijhUFQSS0tLS0tLS0tLS0tLS0tLS1cXFxcbi8vIOinhumikeaOqOiNkFxcXFxuJC5leHBvcnRzLmdldEZlZWQgPSBmdW5jdGlvbiAoKSB7XFxcXG4gICAgbGV0IHUgPSBcXFxcXFxcImh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2UvaW5kZXgvdG9wL2ZlZWQvcmNtZFxcXFxcXFwiO1xcXFxuICAgIHZhciByZXMgPSBKU09OLnBhcnNlKGZldGNoKHUsIHtcXFxcbiAgICAgICAgaGVhZGVyczoge1xcXFxuICAgICAgICAgICAgXFxcXFxcXCJDb29raWVcXFxcXFxcIjogSlNPTi5wYXJzZShyZXF1ZXN0KFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9iaWxpLnR4dFxcXFxcXFwiKSkuY29va2llXFxcXG4gICAgICAgIH1cXFxcbiAgICB9KSk7XFxcXG4gICAgcmV0dXJuIHJlcy5kYXRhLml0ZW1cXFxcbn1cXFxcbi8vIOiOt+WPluaSreaUvuWcsOWdgFxcXFxuJC5leHBvcnRzLmdldFVybCA9IGZ1bmN0aW9uIChhdmlkLCBjaWQsIHFuKSB7XFxcXG4gICAgbGV0IHUgPSByZXF1ZXN0KGJ1aWxkVXJsKFxcXFxcXFwiaHR0cDovL2FwaS5iaWxpYmlsaS5jb20veC9wbGF5ZXIvcGxheXVybFxcXFxcXFwiLCB7XFxcXG4gICAgICAgIFxcXFxcXFwiYXZpZFxcXFxcXFwiOiBhdmlkLFxcXFxuICAgICAgICBcXFxcXFxcImNpZFxcXFxcXFwiOiBjaWQsXFxcXG4gICAgICAgIFxcXFxcXFwicW5cXFxcXFxcIjogcW4sXFxcXG4gICAgICAgIFxcXFxcXFwiZm52ZXJcXFxcXFxcIjogMCxcXFxcbiAgICAgICAgXFxcXFxcXCJmbnZhbFxcXFxcXFwiOiA0MDQ4LFxcXFxuICAgICAgICBcXFxcXFxcImZvdXJrXFxcXFxcXCI6IDFcXFxcbiAgICB9KSwge1xcXFxuICAgICAgICBoZWFkZXJzOiB7XFxcXG4gICAgICAgICAgICBDb29raWU6IEpTT04ucGFyc2UocmVxdWVzdChcXFxcXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvY3kvYmlsaS50eHRcXFxcXFxcIikpLmNvb2tpZVxcXFxuICAgICAgICB9XFxcXG4gICAgfSlcXFxcbiAgICByZXR1cm4gSlNPTi5wYXJzZSh1KS5kYXRhLmRhc2hcXFxcbn1cXFxcbi8vIOaPkOS6pOaSreaUvuiusOW9lVxcXFxuJC5leHBvcnRzLnJlcG9ydFByb2Nlc3MgPSBmdW5jdGlvbiAoYXZpZCwgY2lkKSB7XFxcXG4gICAgLy8gbGV0IGNzcmYgPSByZWFkRmlsZShcXFxcXFxcIkNvb2tpZS50eHRcXFxcXFxcIikubWF0Y2goL2JpbGlfamN0PSguKj8pOy8pWzFdXFxcXG4gICAgbGV0IGNzcmYgPSBKU09OLnBhcnNlKHJlcXVlc3QoXFxcXFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2JpbGkudHh0XFxcXFxcXCIpKS5jb29raWUubWF0Y2goL2JpbGlfamN0PSguKj8pOy8pWzFdXFxcXG4gICAgbGV0IHJlcyA9IHBvc3QoXFxcXFxcXCJodHRwOi8vYXBpLmJpbGliaWxpLmNvbS94L3YyL2hpc3RvcnkvcmVwb3J0XFxcXFxcXCIsIHtcXFxcbiAgICAgICAgYm9keToge1xcXFxuICAgICAgICAgICAgXFxcXFxcXCJhaWRcXFxcXFxcIjogYXZpZCxcXFxcbiAgICAgICAgICAgIFxcXFxcXFwiY2lkXFxcXFxcXCI6IGNpZCxcXFxcbiAgICAgICAgICAgIFxcXFxcXFwiY3NyZlxcXFxcXFwiOiBjc3JmLFxcXFxuICAgICAgICAgICAgXFxcXFxcXCJwcm9ncmVzc1xcXFxcXFwiOiAwXFxcXG4gICAgICAgIH0sXFxcXG4gICAgICAgIGhlYWRlcnM6IHtcXFxcbiAgICAgICAgICAgIENvb2tpZTogSlNPTi5wYXJzZShyZXF1ZXN0KFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9iaWxpLnR4dFxcXFxcXFwiKSkuY29va2llXFxcXG4gICAgICAgIH1cXFxcbiAgICB9KVxcXFxufVxcXFxuXFxcXG4vLyDojrflj5bor4TorrpcXFxcbiQuZXhwb3J0cy5nZXRDb21tZW50cyA9IGZ1bmN0aW9uIChpZCwgdHlwZSwgcGFnZSkge1xcXFxuICAgIGxldCB1ID0gYnVpbGRVcmwoXFxcXFxcXCJodHRwOi8vYXBpLmJpbGliaWxpLmNvbS94L3YyL3JlcGx5XFxcXFxcXCIsIHtcXFxcbiAgICAgICAgXFxcXFxcXCJ0eXBlXFxcXFxcXCI6IHR5cGUsXFxcXG4gICAgICAgIFxcXFxcXFwib2lkXFxcXFxcXCI6IGlkLFxcXFxuICAgICAgICBcXFxcXFxcInBuXFxcXFxcXCI6IHBhZ2VcXFxcbiAgICB9KTtcXFxcbiAgICBsZXQgcmVzID0gcmVxdWVzdCh1LCB7XFxcXG4gICAgICAgIGhlYWRlcnM6IHtcXFxcbiAgICAgICAgICAgIENvb2tpZTogSlNPTi5wYXJzZShyZXF1ZXN0KFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9iaWxpLnR4dFxcXFxcXFwiKSkuY29va2llXFxcXG4gICAgICAgIH1cXFxcbiAgICB9KVxcXFxuICAgIHJldHVybiBKU09OLnBhcnNlKHJlcykuZGF0YS5yZXBsaWVzXFxcXG59XFxcXG4vLyDmt7vliqDnqI3lkI7lnKjnnIvigJTigJTnnJ/nmoTpurvkuobvvIzkuLrku4DkuYhmZXRjaOWwsemUmeWRon5cXFxcbiQuZXhwb3J0cy5hZGRUb3ZpZXcgPSBmdW5jdGlvbiAoYWlkKSB7XFxcXG4gICAgbGV0IGNzcmYgPSBKU09OLnBhcnNlKHJlcXVlc3QoXFxcXFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2JpbGkudHh0XFxcXFxcXCIpKS5jb29raWUubWF0Y2goL2JpbGlfamN0PSguKj8pOy8pWzFdO1xcXFxuICAgIGxldCB1ID0gXFxcXFxcXCJodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC92Mi9oaXN0b3J5L3Rvdmlldy9hZGRcXFxcXFxcIjtcXFxcbiAgICBsZXQgcmVzID0gcmVxdWVzdChidWlsZFVybCh1LCB7XFxcXG4gICAgICAgIFxcXFxcXFwiYWlkXFxcXFxcXCI6IGFpZCxcXFxcbiAgICAgICAgXFxcXFxcXCJjc3JmXFxcXFxcXCI6IGNzcmYsXFxcXG4gICAgfSksIHtcXFxcbiAgICAgICAgaGVhZGVyczoge1xcXFxuICAgICAgICAgICAgXFxcXFxcXCJSZWZlcmVyXFxcXFxcXCI6IFxcXFxcXFwiaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL1xcXFxcXFwiLFxcXFxuICAgICAgICAgICAgXFxcXFxcXCJDb29raWVcXFxcXFxcIjogSlNPTi5wYXJzZShyZXF1ZXN0KFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9iaWxpLnR4dFxcXFxcXFwiKSkuY29va2llXFxcXG4gICAgICAgIH0sXFxcXG4gICAgICAgIG1ldGhvZDogXFxcXFxcXCJQT1NUXFxcXFxcXCJcXFxcbiAgICB9KVxcXFxuICAgIHJldHVybiBKU09OLnBhcnNlKHJlcykuY29kZTtcXFxcbn1cXFxcbi8vIOWIoOmZpOeojeWQjuWcqOeci1xcXFxuJC5leHBvcnRzLmRlbFRvdmlldyA9IGZ1bmN0aW9uIChhaWQpIHtcXFxcbiAgICBsZXQgY3NyZiA9IEpTT04ucGFyc2UocmVxdWVzdChcXFxcXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvY3kvYmlsaS50eHRcXFxcXFxcIikpLmNvb2tpZS5tYXRjaCgvYmlsaV9qY3Q9KC4qPyk7LylbMV07XFxcXG4gICAgbGV0IHUgPSBcXFxcXFxcImh0dHA6Ly9hcGkuYmlsaWJpbGkuY29tL3gvdjIvaGlzdG9yeS90b3ZpZXcvZGVsXFxcXFxcXCI7XFxcXG4gICAgbGV0IHJlcyA9IHJlcXVlc3QoYnVpbGRVcmwodSwge1xcXFxuICAgICAgICBcXFxcXFxcImFpZFxcXFxcXFwiOiBhaWQsXFxcXG4gICAgICAgIFxcXFxcXFwiY3NyZlxcXFxcXFwiOiBjc3JmLFxcXFxuICAgIH0pLCB7XFxcXG4gICAgICAgIGhlYWRlcnM6IHtcXFxcbiAgICAgICAgICAgIFxcXFxcXFwiUmVmZXJlclxcXFxcXFwiOiBcXFxcXFxcImh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS9cXFxcXFxcIixcXFxcbiAgICAgICAgICAgIFxcXFxcXFwiQ29va2llXFxcXFxcXCI6IEpTT04ucGFyc2UocmVxdWVzdChcXFxcXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvY3kvYmlsaS50eHRcXFxcXFxcIikpLmNvb2tpZVxcXFxuICAgICAgICB9LFxcXFxuICAgICAgICBtZXRob2Q6IFxcXFxcXFwiUE9TVFxcXFxcXFwiXFxcXG4gICAgfSlcXFxcbiAgICByZXR1cm4gSlNPTi5wYXJzZShyZXMpLmNvZGU7XFxcXG59XFxcXG4vLyDorqLpmIXlvbHop4Yo6L+955Wq44CB6L+95YmnKVxcXFxuJC5leHBvcnRzLnN1YnNjcmliZUZpbG0gPSBmdW5jdGlvbiAoc2Vhc29uX2lkKSB7XFxcXG4gICAgbGV0IGNzcmYgPSBKU09OLnBhcnNlKHJlcXVlc3QoXFxcXFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2JpbGkudHh0XFxcXFxcXCIpKS5jb29raWUubWF0Y2goL2JpbGlfamN0PSguKj8pOy8pWzFdO1xcXFxuICAgIGxldCB1ID0gXFxcXFxcXCJodHRwczovL2FwaS5iaWxpYmlsaS5jb20vcGdjL3dlYi9mb2xsb3cvYWRkXFxcXFxcXCI7XFxcXG4gICAgbGV0IHJlcyA9IHJlcXVlc3QoYnVpbGRVcmwodSwge1xcXFxuICAgICAgICBcXFxcXFxcInNlYXNvbl9pZFxcXFxcXFwiOiBzZWFzb25faWQsXFxcXG4gICAgICAgIFxcXFxcXFwiY3NyZlxcXFxcXFwiOiBjc3JmLFxcXFxuICAgIH0pLCB7XFxcXG4gICAgICAgIGhlYWRlcnM6IHtcXFxcbiAgICAgICAgICAgIFxcXFxcXFwiUmVmZXJlclxcXFxcXFwiOiBcXFxcXFxcImh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS9cXFxcXFxcIixcXFxcbiAgICAgICAgICAgIFxcXFxcXFwiQ29va2llXFxcXFxcXCI6IEpTT04ucGFyc2UocmVxdWVzdChcXFxcXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvY3kvYmlsaS50eHRcXFxcXFxcIikpLmNvb2tpZVxcXFxuICAgICAgICB9LFxcXFxuICAgICAgICBtZXRob2Q6IFxcXFxcXFwiUE9TVFxcXFxcXFwiXFxcXG4gICAgfSlcXFxcbiAgICByZXR1cm4gSlNPTi5wYXJzZShyZXMpLnJlc3VsdC50b2FzdDtcXFxcbn1cXFxcbi8vIOWPlua2iOiuoumYhVxcXFxuJC5leHBvcnRzLmNhbmNlbFN1YnNjcmliZUZpbG0gPSBmdW5jdGlvbiAoc2Vhc29uX2lkKSB7XFxcXG4gICAgbGV0IGNzcmYgPSBKU09OLnBhcnNlKHJlcXVlc3QoXFxcXFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2JpbGkudHh0XFxcXFxcXCIpKS5jb29raWUubWF0Y2goL2JpbGlfamN0PSguKj8pOy8pWzFdO1xcXFxuICAgIGxldCB1ID0gXFxcXFxcXCJodHRwczovL2FwaS5iaWxpYmlsaS5jb20vcGdjL3dlYi9mb2xsb3cvZGVsXFxcXFxcXCI7XFxcXG4gICAgbGV0IHJlcyA9IHJlcXVlc3QoYnVpbGRVcmwodSwge1xcXFxuICAgICAgICBcXFxcXFxcInNlYXNvbl9pZFxcXFxcXFwiOiBzZWFzb25faWQsXFxcXG4gICAgICAgIFxcXFxcXFwiY3NyZlxcXFxcXFwiOiBjc3JmLFxcXFxuICAgIH0pLCB7XFxcXG4gICAgICAgIGhlYWRlcnM6IHtcXFxcbiAgICAgICAgICAgIFxcXFxcXFwiUmVmZXJlclxcXFxcXFwiOiBcXFxcXFxcImh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS9cXFxcXFxcIixcXFxcbiAgICAgICAgICAgIFxcXFxcXFwiQ29va2llXFxcXFxcXCI6IEpTT04ucGFyc2UocmVxdWVzdChcXFxcXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvY3kvYmlsaS50eHRcXFxcXFxcIikpLmNvb2tpZVxcXFxuICAgICAgICB9LFxcXFxuICAgICAgICBtZXRob2Q6IFxcXFxcXFwiUE9TVFxcXFxcXFwiXFxcXG4gICAgfSlcXFxcbiAgICByZXR1cm4gSlNPTi5wYXJzZShyZXMpLnJlc3VsdC50b2FzdDtcXFxcbn1cXFxcbi8q5pON5L2c55So5oi35YWz57O7XFxcXG5maWQ655So5oi3bWlkXFxcXG5hY3Q65pON5L2c5Luj56CBXFxcXG5yZV9zcmPvvJrlhbPms6jmnaXmupBcXFxcbiovXFxcXG4kLmV4cG9ydHMuYWRkQXR0ZW50aW9uID0gZnVuY3Rpb24gKG1pZCwgYWN0LCByZV9zcmMpIHtcXFxcbiAgICBsZXQgY3NyZiA9IEpTT04ucGFyc2UocmVxdWVzdChcXFxcXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvY3kvYmlsaS50eHRcXFxcXFxcIikpLmNvb2tpZS5tYXRjaCgvYmlsaV9qY3Q9KC4qPyk7LylbMV07XFxcXG4gICAgbGV0IHUgPSBcXFxcXFxcImh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3JlbGF0aW9uL21vZGlmeVxcXFxcXFwiO1xcXFxuICAgIGxldCByZXMgPSByZXF1ZXN0KGJ1aWxkVXJsKHUsIHtcXFxcbiAgICAgICAgXFxcXFxcXCJmaWRcXFxcXFxcIjogbWlkLFxcXFxuICAgICAgICBcXFxcXFxcImFjdFxcXFxcXFwiOiBhY3QsXFxcXG4gICAgICAgIFxcXFxcXFwicmVfc3JjXFxcXFxcXCI6IHJlX3NyYyxcXFxcbiAgICAgICAgXFxcXFxcXCJjc3JmXFxcXFxcXCI6IGNzcmZcXFxcbiAgICB9KSwge1xcXFxuICAgICAgICBoZWFkZXJzOiB7XFxcXG4gICAgICAgICAgICBcXFxcXFxcIlJlZmVyZXJcXFxcXFxcIjogXFxcXFxcXCJodHRwczovL3d3dy5iaWxpYmlsaS5jb20vXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICBcXFxcXFxcIkNvb2tpZVxcXFxcXFwiOiBKU09OLnBhcnNlKHJlcXVlc3QoXFxcXFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2JpbGkudHh0XFxcXFxcXCIpKS5jb29raWVcXFxcbiAgICAgICAgfSxcXFxcbiAgICAgICAgbWV0aG9kOiBcXFxcXFxcIlBPU1RcXFxcXFxcIlxcXFxuICAgIH0pXFxcXG4gICAgcmV0dXJuIEpTT04ucGFyc2UocmVzKS5jb2RlO1xcXFxufVxcXFxuLy8g56e75Yqo5YWz5rOo55So5oi35YiG57uEXFxcXG4kLmV4cG9ydHMubW92ZVVzZXJzID0gZnVuY3Rpb24gKGJlZm9yZVRhZ2lkcywgYWZ0ZXJUYWdpZHMsIGZpZHMpIHtcXFxcbiAgICBsZXQgY3NyZiA9IEpTT04ucGFyc2UocmVxdWVzdChcXFxcXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvY3kvYmlsaS50eHRcXFxcXFxcIikpLmNvb2tpZS5tYXRjaCgvYmlsaV9qY3Q9KC4qPyk7LylbMV07XFxcXG4gICAgbGV0IHUgPSBcXFxcXFxcImh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3JlbGF0aW9uL3RhZ3MvbW92ZVVzZXJzXFxcXFxcXCI7XFxcXG4gICAgbGV0IHJlcyA9IHJlcXVlc3QoYnVpbGRVcmwodSwge1xcXFxuICAgICAgICBcXFxcXFxcImJlZm9yZVRhZ2lkc1xcXFxcXFwiOiBiZWZvcmVUYWdpZHMudG9TdHJpbmcoKSxcXFxcbiAgICAgICAgXFxcXFxcXCJhZnRlclRhZ2lkc1xcXFxcXFwiOiBhZnRlclRhZ2lkcy50b1N0cmluZygpLFxcXFxuICAgICAgICBcXFxcXFxcImZpZHNcXFxcXFxcIjogZmlkcy50b1N0cmluZygpLFxcXFxuICAgICAgICBcXFxcXFxcImNzcmZcXFxcXFxcIjogY3NyZlxcXFxuICAgIH0pLCB7XFxcXG4gICAgICAgIGhlYWRlcnM6IHtcXFxcbiAgICAgICAgICAgIFxcXFxcXFwiUmVmZXJlclxcXFxcXFwiOiBcXFxcXFxcImh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS9cXFxcXFxcIixcXFxcbiAgICAgICAgICAgIFxcXFxcXFwiQ29va2llXFxcXFxcXCI6IEpTT04ucGFyc2UocmVxdWVzdChcXFxcXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvY3kvYmlsaS50eHRcXFxcXFxcIikpLmNvb2tpZVxcXFxuICAgICAgICB9LFxcXFxuICAgICAgICBtZXRob2Q6IFxcXFxcXFwiUE9TVFxcXFxcXFwiXFxcXG4gICAgfSlcXFxcbiAgICByZXR1cm4gSlNPTi5wYXJzZShyZXMpLmNvZGU7XFxcXG59XFxcXG4vLyDojrflj5bnlKjmiLflhbPns7tcXFxcbiQuZXhwb3J0cy5nZXRSZWxhdGlvbiA9IGZ1bmN0aW9uIChtaWQpIHtcXFxcbiAgICByZXR1cm4gSlNPTi5wYXJzZShyZXF1ZXN0KFxcXFxcXFwiaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYWNjL3JlbGF0aW9uP21pZD1cXFxcXFxcIiArIG1pZCwge1xcXFxuICAgICAgICBoZWFkZXJzOiB7XFxcXG4gICAgICAgICAgICBcXFxcXFxcIkNvb2tpZVxcXFxcXFwiOiBKU09OLnBhcnNlKHJlcXVlc3QoXFxcXFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2JpbGkudHh0XFxcXFxcXCIpKS5jb29raWVcXFxcbiAgICAgICAgfVxcXFxuICAgIH0pKS5kYXRhXFxcXG59XFxcXG4vLyDmn6Xor6Lnm67moIfnlKjmiLfmiYDlnKjnmoTliIbnu4RcXFxcbiQuZXhwb3J0cy5nZXRVc2VyR3JvdXAgPSBmdW5jdGlvbiAobWlkKSB7XFxcXG4gICAgcmV0dXJuIEpTT04ucGFyc2UocmVxdWVzdChcXFxcXFxcImh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3JlbGF0aW9uL3RhZy91c2VyP2ZpZD1cXFxcXFxcIiArIG1pZCwge1xcXFxuICAgICAgICBoZWFkZXJzOiB7XFxcXG4gICAgICAgICAgICBcXFxcXFxcIkNvb2tpZVxcXFxcXFwiOiBKU09OLnBhcnNlKHJlcXVlc3QoXFxcXFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2JpbGkudHh0XFxcXFxcXCIpKS5jb29raWVcXFxcbiAgICAgICAgfVxcXFxuICAgIH0pKS5kYXRhXFxcXG59XFxcXG4vLyDojrflj5blhbPms6jliIbnu4RcXFxcbiQuZXhwb3J0cy5nZXRNeUF0dGVudGlvbkdyb3VwTGlzdCA9IGZ1bmN0aW9uICgpIHtcXFxcbiAgICByZXR1cm4gSlNPTi5wYXJzZShmZXRjaChcXFxcXFxcImh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3JlbGF0aW9uL3RhZ3M/anNvbnA9anNvbnBcXFxcXFxcIiwge1xcXFxuICAgICAgICBoZWFkZXJzOiB7XFxcXG4gICAgICAgICAgICBcXFxcXFxcIkNvb2tpZVxcXFxcXFwiOiBKU09OLnBhcnNlKHJlcXVlc3QoXFxcXFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2JpbGkudHh0XFxcXFxcXCIpKS5jb29raWUsXFxcXG4gICAgICAgICAgICBcXFxcXFxcIlVzZXItQWdlbnRcXFxcXFxcIjogUENfVUEsXFxcXG4gICAgICAgICAgICBcXFxcXFxcIlJlZmVyZXJcXFxcXFxcIjogXFxcXFxcXCJodHRwczovL3d3dy5iaWxpYmlsaS5jb20vXFxcXFxcXCJcXFxcbiAgICAgICAgfVxcXFxuICAgIH0pKS5kYXRhO1xcXFxufVxcXFxuLy8g5piv5ZCm54K56LWeXFxcXG4kLmV4cG9ydHMuaGFzTGlrZSA9IGZ1bmN0aW9uIChhaWQpIHtcXFxcbiAgICByZXR1cm4gSlNPTi5wYXJzZShyZXF1ZXN0KGJ1aWxkVXJsKFxcXFxcXFwiaHR0cDovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL2FyY2hpdmUvaGFzL2xpa2VcXFxcXFxcIiwge1xcXFxuICAgICAgICBcXFxcXFxcImFpZFxcXFxcXFwiOiBhaWRcXFxcbiAgICB9KSwge1xcXFxuICAgICAgICBoZWFkZXJzOiB7XFxcXG4gICAgICAgICAgICBcXFxcXFxcIkNvb2tpZVxcXFxcXFwiOiBKU09OLnBhcnNlKHJlcXVlc3QoXFxcXFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2JpbGkudHh0XFxcXFxcXCIpKS5jb29raWVcXFxcbiAgICAgICAgfVxcXFxuICAgIH0pKS5kYXRhXFxcXG59XFxcXG4vLyDmmK/lkKbmlLbol49cXFxcbiQuZXhwb3J0cy5oYXNGYXZvdXIgPSBmdW5jdGlvbiAoYWlkKSB7XFxcXG4gICAgcmV0dXJuIEpTT04ucGFyc2UocmVxdWVzdChidWlsZFVybChcXFxcXFxcImh0dHA6Ly9hcGkuYmlsaWJpbGkuY29tL3gvdjIvZmF2L3ZpZGVvL2Zhdm91cmVkXFxcXFxcXCIsIHtcXFxcbiAgICAgICAgXFxcXFxcXCJhaWRcXFxcXFxcIjogYWlkXFxcXG4gICAgfSksIHtcXFxcbiAgICAgICAgaGVhZGVyczoge1xcXFxuICAgICAgICAgICAgXFxcXFxcXCJDb29raWVcXFxcXFxcIjogSlNPTi5wYXJzZShyZXF1ZXN0KFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9iaWxpLnR4dFxcXFxcXFwiKSkuY29va2llXFxcXG4gICAgICAgIH1cXFxcbiAgICB9KSkuZGF0YS5mYXZvdXJlZFxcXFxufVxcXFxuLy8g6KeG6aKR54K56LWeXFxcXG4kLmV4cG9ydHMuc2V0TGlrZSA9IGZ1bmN0aW9uIChhaWQsIGRlYWxXYXkpIHtcXFxcbiAgICBsZXQgY3NyZiA9IEpTT04ucGFyc2UocmVxdWVzdChcXFxcXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvY3kvYmlsaS50eHRcXFxcXFxcIikpLmNvb2tpZS5tYXRjaCgvYmlsaV9qY3Q9KC4qPyk7LylbMV07XFxcXG4gICAgbGV0IHJlcyA9IHBvc3QoXFxcXFxcXCJodHRwOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2UvYXJjaGl2ZS9saWtlXFxcXFxcXCIsIHtcXFxcbiAgICAgICAgYm9keToge1xcXFxuICAgICAgICAgICAgXFxcXFxcXCJhaWRcXFxcXFxcIjogYWlkLFxcXFxuICAgICAgICAgICAgXFxcXFxcXCJsaWtlXFxcXFxcXCI6IGRlYWxXYXksXFxcXG4gICAgICAgICAgICBcXFxcXFxcImNzcmZcXFxcXFxcIjogY3NyZlxcXFxuICAgICAgICB9LFxcXFxuICAgICAgICBoZWFkZXJzOiB7XFxcXG4gICAgICAgICAgICBcXFxcXFxcIkNvb2tpZVxcXFxcXFwiOiBKU09OLnBhcnNlKHJlcXVlc3QoXFxcXFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2JpbGkudHh0XFxcXFxcXCIpKS5jb29raWVcXFxcbiAgICAgICAgfVxcXFxuICAgIH0pXFxcXG4gICAgcmV0dXJuIEpTT04ucGFyc2UocmVzKS5jb2RlO1xcXFxufVxcXFxuLy8g6I635Y+W5pS26JeP5YiX6KGoXFxcXG4kLmV4cG9ydHMuZ2V0Q29sbGVjdGlvbkdyb3VwTGlzdCA9IGZ1bmN0aW9uICgpIHtcXFxcbiAgICByZXR1cm4gY29sbGVjdGlvbnMgPSBKU09OLnBhcnNlKGZldGNoKFxcXFxcXFwiaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvdjMvZmF2L2ZvbGRlci9saXN0NG5hdmlnYXRlXFxcXFxcXCIsIHtcXFxcbiAgICAgICAgaGVhZGVyczoge1xcXFxuICAgICAgICAgICAgXFxcXFxcXCJDb29raWVcXFxcXFxcIjogSlNPTi5wYXJzZShyZXF1ZXN0KFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9iaWxpLnR4dFxcXFxcXFwiKSkuY29va2llLFxcXFxuICAgICAgICB9XFxcXG4gICAgfSkpLmRhdGE7XFxcXG59XFxcXG4vLyDmlLbol48v5Y+W5raI6KeG6aKRQVBJXFxcXG4kLmV4cG9ydHMuc2V0RmF2b3VyID0gZnVuY3Rpb24gKGFpZCwgYWRkX21lZGlhX2lkcywgZGVsX21lZGlhX2lkcykge1xcXFxuICAgIGxldCBjc3JmID0gSlNPTi5wYXJzZShyZXF1ZXN0KFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9iaWxpLnR4dFxcXFxcXFwiKSkuY29va2llLm1hdGNoKC9iaWxpX2pjdD0oLio/KTsvKVsxXTtcXFxcbiAgICBsZXQgcmVzID0gcG9zdChcXFxcXFxcImh0dHA6Ly9hcGkuYmlsaWJpbGkuY29tL21lZGlhbGlzdC9nYXRld2F5L2NvbGwvcmVzb3VyY2UvZGVhbFxcXFxcXFwiLCB7XFxcXG4gICAgICAgIGJvZHk6IHtcXFxcbiAgICAgICAgICAgIFxcXFxcXFwicmlkXFxcXFxcXCI6IGFpZCxcXFxcbiAgICAgICAgICAgIFxcXFxcXFwidHlwZVxcXFxcXFwiOiAyLFxcXFxuICAgICAgICAgICAgXFxcXFxcXCJhZGRfbWVkaWFfaWRzXFxcXFxcXCI6IGFkZF9tZWRpYV9pZHMudG9TdHJpbmcoKSxcXFxcbiAgICAgICAgICAgIFxcXFxcXFwiZGVsX21lZGlhX2lkc1xcXFxcXFwiOiBkZWxfbWVkaWFfaWRzLnRvU3RyaW5nKCksXFxcXG4gICAgICAgICAgICBcXFxcXFxcImNzcmZcXFxcXFxcIjogY3NyZlxcXFxuICAgICAgICB9LFxcXFxuICAgICAgICBoZWFkZXJzOiB7XFxcXG4gICAgICAgICAgICBcXFxcXFxcIkNvb2tpZVxcXFxcXFwiOiBKU09OLnBhcnNlKHJlcXVlc3QoXFxcXFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2JpbGkudHh0XFxcXFxcXCIpKS5jb29raWUsXFxcXG4gICAgICAgICAgICBcXFxcXFxcIlJlZmVyZXJcXFxcXFxcIjogXFxcXFxcXCJodHRwczovL3d3dy5iaWxpYmlsaS5jb21cXFxcXFxcIlxcXFxuICAgICAgICB9XFxcXG4gICAgfSlcXFxcbiAgICByZXR1cm4gSlNPTi5wYXJzZShyZXMpLmNvZGU7XFxcXG59XFxcXG4vLyDojrflj5bop4bpopHmiYDlnKjmlLbol4/lpLlcXFxcbiQuZXhwb3J0cy5nZXRGYXZvdXJJZExpc3QgPSBmdW5jdGlvbiAoYWlkLCB1c2VyTWlkKSB7XFxcXG4gICAgbGV0IHUgPSBcXFxcXFxcImh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3YzL2Zhdi9mb2xkZXIvY3JlYXRlZC9saXN0LWFsbFxcXFxcXFwiO1xcXFxuICAgIGxldCByZXMgPSByZXF1ZXN0KGJ1aWxkVXJsKHUsIHtcXFxcbiAgICAgICAgXFxcXFxcXCJ0eXBlXFxcXFxcXCI6IDIsXFxcXG4gICAgICAgIFxcXFxcXFwicmlkXFxcXFxcXCI6IGFpZCxcXFxcbiAgICAgICAgXFxcXFxcXCJ1cF9taWRcXFxcXFxcIjogdXNlck1pZCxcXFxcbiAgICB9KSwge1xcXFxuICAgICAgICBoZWFkZXJzOiB7XFxcXG4gICAgICAgICAgICBcXFxcXFxcIkNvb2tpZVxcXFxcXFwiOiBKU09OLnBhcnNlKHJlcXVlc3QoXFxcXFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2JpbGkudHh0XFxcXFxcXCIpKS5jb29raWUsXFxcXG4gICAgICAgICAgICBcXFxcXFxcIlJlZmVyZXJcXFxcXFxcIjogXFxcXFxcXCJodHRwczovL3d3dy5iaWxpYmlsaS5jb21cXFxcXFxcIlxcXFxuICAgICAgICB9XFxcXG4gICAgfSk7XFxcXG4gICAgZmF2b3VySWRMaXN0ID0gW107XFxcXG4gICAgSlNPTi5wYXJzZShyZXMpLmRhdGEubGlzdC5mb3JFYWNoKChpdGVtKSA9PiB7XFxcXG4gICAgICAgIGlmIChpdGVtLmZhdl9zdGF0ZSA9PSAxKSB7XFxcXG4gICAgICAgICAgICBmYXZvdXJJZExpc3QucHVzaChpdGVtLmlkKTtcXFxcbiAgICAgICAgfVxcXFxuICAgIH0pXFxcXG4gICAgcmV0dXJuIGZhdm91cklkTGlzdDtcXFxcbn1cXFxcbi8vIOeDreaYoOWJp+mbhuaXtumXtOi9tFxcXFxuJC5leHBvcnRzLmdldE1vdmllcyA9IGZ1bmN0aW9uICh0eXBlLCBiZWZvcmUsIGFmdGVyKSB7XFxcXG4gICAgbGV0IHUgPSBidWlsZFVybChcXFxcXFxcImh0dHA6Ly9hcGkuYmlsaWJpbGkuY29tL3BnYy93ZWIvdGltZWxpbmVcXFxcXFxcIiwge1xcXFxuICAgICAgICBcXFxcXFxcInR5cGVzXFxcXFxcXCI6IHR5cGUsXFxcXG4gICAgICAgIFxcXFxcXFwiYmVmb3JlXFxcXFxcXCI6IGJlZm9yZSxcXFxcbiAgICAgICAgXFxcXFxcXCJhZnRlclxcXFxcXFwiOiBhZnRlclxcXFxuICAgIH0pXFxcXG4gICAgbGV0IHJlcyA9IEpTT04ucGFyc2UocmVxdWVzdCh1LCB7XFxcXG4gICAgICAgIGhlYWRlcnM6IHtcXFxcbiAgICAgICAgICAgIFxcXFxcXFwiQ29va2llXFxcXFxcXCI6IEpTT04ucGFyc2UocmVxdWVzdChcXFxcXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvY3kvYmlsaS50eHRcXFxcXFxcIikpLmNvb2tpZVxcXFxuICAgICAgICB9XFxcXG4gICAgfSkpXFxcXG4gICAgcmV0dXJuIHJlcy5yZXN1bHRcXFxcbn1cXFxcbi8vIOiOt+WPluS4k+agj+aWh+eroFxcXFxuJC5leHBvcnRzLmdldFVzZXJBcnRpY2xlID0gZnVuY3Rpb24gKHVwTWlkLCBwYWdlKSB7XFxcXG4gICAgbGV0IHUgPSBcXFxcXFxcImh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FydGljbGVcXFxcXFxcIjtcXFxcbiAgICBsZXQgcmVzID0gcmVxdWVzdChidWlsZFVybCh1LCB7XFxcXG4gICAgICAgIFxcXFxcXFwibWlkXFxcXFxcXCI6IHVwTWlkLFxcXFxuICAgICAgICBcXFxcXFxcInBuXFxcXFxcXCI6IHBhZ2UsXFxcXG4gICAgICAgIFxcXFxcXFwicHNcXFxcXFxcIjogMTIsXFxcXG4gICAgICAgIFxcXFxcXFwic29ydFxcXFxcXFwiOiAncHVibGlzaF90aW1lJ1xcXFxuICAgIH0pLCB7XFxcXG4gICAgICAgIGhlYWRlcnM6IHtcXFxcbiAgICAgICAgICAgIFxcXFxcXFwiQ29va2llXFxcXFxcXCI6IEpTT04ucGFyc2UocmVxdWVzdChcXFxcXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvY3kvYmlsaS50eHRcXFxcXFxcIikpLmNvb2tpZSxcXFxcbiAgICAgICAgICAgIFxcXFxcXFwiUmVmZXJlclxcXFxcXFwiOiBcXFxcXFxcImh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbVxcXFxcXFwiXFxcXG4gICAgICAgIH1cXFxcbiAgICB9KTtcXFxcbiAgICByZXR1cm4gSlNPTi5wYXJzZShyZXMpLmRhdGE7XFxcXG59XFxcXG4vLyDojrflj5bliqjmgIHmlbDmja5cXFxcbiQuZXhwb3J0cy5nZXREeW5hbWljRGF0YSA9IGZ1bmN0aW9uIChmcm9tLCB1cE1pZCkge1xcXFxuICAgIHZhciBuZXh0SW5mbyA9IHt9O1xcXFxuICAgIGlmIChNWV9QQUdFID09IDEpIHtcXFxcbiAgICAgICAgaWYgKGZyb20gPT0gJ3VwU3BhY2UnKSB7XFxcXG4gICAgICAgICAgICB2YXIgdSA9IFxcXFxcXFwiaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvcG9seW1lci93ZWItZHluYW1pYy92MS9mZWVkL3NwYWNlP29mZnNldD0maG9zdF9taWQ9XFxcXFxcXCIgKyB1cE1pZCArIFxcXFxcXFwiJnRpbWV6b25lX29mZnNldD0tNDgwXFxcXFxcXCI7XFxcXG4gICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICB2YXIgdSA9IFxcXFxcXFwiaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvcG9seW1lci93ZWItZHluYW1pYy92MS9mZWVkL2FsbD90aW1lem9uZV9vZmZzZXQ9LTQ4MCZ0eXBlPWFsbFxcXFxcXFwiO1xcXFxuICAgICAgICB9XFxcXG4gICAgICAgIGxhdGVuZXdzID0gSlNPTi5wYXJzZShmZXRjaCh1LCB7XFxcXG4gICAgICAgICAgICBoZWFkZXJzOiB7XFxcXG4gICAgICAgICAgICAgICAgXFxcXFxcXCJDb29raWVcXFxcXFxcIjogSlNPTi5wYXJzZShyZXF1ZXN0KFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9iaWxpLnR4dFxcXFxcXFwiKSkuY29va2llLFxcXFxuICAgICAgICAgICAgICAgIFxcXFxcXFwiVXNlci1BZ2VudFxcXFxcXFwiOiBQQ19VQSxcXFxcbiAgICAgICAgICAgICAgICBcXFxcXFxcIlJlZmVyZXJcXFxcXFxcIjogXFxcXFxcXCJodHRwczovL3d3dy5iaWxpYmlsaS5jb20vXFxcXFxcXCJcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgfSkpLmRhdGE7XFxcXG4gICAgICAgIG5leHRJbmZvLm9mZnNldCA9IGxhdGVuZXdzLm9mZnNldDtcXFxcbiAgICB9IGVsc2Uge1xcXFxuICAgICAgICBpZiAoZnJvbSA9PSAndXBTcGFjZScpIHtcXFxcbiAgICAgICAgICAgIHZhciB1ID0gXFxcXFxcXCJodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9wb2x5bWVyL3dlYi1keW5hbWljL3YxL2ZlZWQvc3BhY2U/b2Zmc2V0PVxcXFxcXFwiICsgc3RvcmFnZTAuZ2V0TXlWYXIoSlNPTi5zdHJpbmdpZnkoTVlfUEFHRSkpLm9mZnNldCArIFxcXFxcXFwiJmhvc3RfbWlkPVxcXFxcXFwiICsgdXBNaWQgKyBcXFxcXFxcIiZ0aW1lem9uZV9vZmZzZXQ9LTQ4MFxcXFxcXFwiO1xcXFxuICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgdmFyIHUgPSBcXFxcXFxcImh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3BvbHltZXIvd2ViLWR5bmFtaWMvdjEvZmVlZC9hbGw/dGltZXpvbmVfb2Zmc2V0PS00ODAmdHlwZT1hbGwmb2Zmc2V0PVxcXFxcXFwiICsgc3RvcmFnZTAuZ2V0TXlWYXIoSlNPTi5zdHJpbmdpZnkoTVlfUEFHRSkpLm9mZnNldDtcXFxcbiAgICAgICAgfVxcXFxuICAgICAgICBsYXRlbmV3cyA9IEpTT04ucGFyc2UoZmV0Y2godSwge1xcXFxuICAgICAgICAgICAgaGVhZGVyczoge1xcXFxuICAgICAgICAgICAgICAgIFxcXFxcXFwiQ29va2llXFxcXFxcXCI6IEpTT04ucGFyc2UocmVxdWVzdChcXFxcXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvY3kvYmlsaS50eHRcXFxcXFxcIikpLmNvb2tpZVxcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICB9KSkuZGF0YTtcXFxcbiAgICAgICAgbmV4dEluZm8ub2Zmc2V0ID0gbGF0ZW5ld3Mub2Zmc2V0O1xcXFxuICAgIH1cXFxcbiAgICBzdG9yYWdlMC5wdXRNeVZhcihKU09OLnN0cmluZ2lmeShNWV9QQUdFICsgMSksIG5leHRJbmZvKTtcXFxcbiAgICByZXR1cm4gbGF0ZW5ld3M7XFxcXG59XFxcXG5cXFxcbi8vIOKAlOKAlOeJueWIq+eahOihjOS4uuOAgeW3peWFt+WHveaVsOKAlOKAlFxcXFxuLy8g5bGV56S65Yqo5oCB5pWw5o2uKOi/lOWbnuWHveaVsOaWueazleeahOWPr+aJp+ihjOWtl+espuS4silcXFxcbiQuZXhwb3J0cy5zaG93RHluYW1pY0RhdGEgPSBmdW5jdGlvbiAoKSB7XFxcXG4gICAgcmV0dXJuICQudG9TdHJpbmcoKCkgPT4ge1xcXFxuICAgICAgICBsYXRlbmV3cy5pdGVtcy5mb3JFYWNoKGxpc3QgPT4ge1xcXFxuICAgICAgICAgICAgaWYgKGxpc3QudHlwZSA9PSAnRFlOQU1JQ19UWVBFX0FWJykge1xcXFxuICAgICAgICAgICAgICAgIC8vIOaKleeov+inhumike+8iOW9k+WJjeWPkeW4g++8ieKImlxcXFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBsaXN0Lm1vZHVsZXMubW9kdWxlX2F1dGhvci5uYW1lICsgJ1xcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdDxzbWFsbD48c21hbGw+PGZvbnQgY29sb3I9XFxcXFxcXCJncmV5XFxcXFxcXCI+JyArIGxpc3QubW9kdWxlcy5tb2R1bGVfYXV0aG9yLnB1Yl90aW1lICsgJy0nICsgbGlzdC5tb2R1bGVzLm1vZHVsZV9hdXRob3IucHViX2FjdGlvbiArICc8L2ZvbnQ+PC9zbWFsbD48L3NtYWxsPicsXFxcXG4gICAgICAgICAgICAgICAgICAgIGltZzogbGlzdC5tb2R1bGVzLm1vZHVsZV9hdXRob3IuZmFjZSArIFxcXFxcXFwiQFJlZmVyZXI9XFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS91cEhvbWUnLFxcXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2F2YXRhcicsXFxcXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBtaWQ6IGxpc3QubW9kdWxlcy5tb2R1bGVfYXV0aG9yLm1pZCxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBsaXN0Lm1vZHVsZXMubW9kdWxlX2F1dGhvci5uYW1lLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFjZTogbGlzdC5tb2R1bGVzLm1vZHVsZV9hdXRob3IuZmFjZVxcXFxuICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgfSwge1xcXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmUnXFxcXG4gICAgICAgICAgICAgICAgfSwge1xcXFxuICAgICAgICAgICAgICAgICAgICAvLyDkuI3kuIDlrprmnInmloflrZfllYpcXFxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IChsaXN0Lm1vZHVsZXMubW9kdWxlX2R5bmFtaWMuZGVzYyA9PT0gbnVsbCA/ICc8Zm9udCBjb2xvcj1cXFxcXFxcImdyZXlcXFxcXFxcIj51cOWkquaHkuS6hu+8jOi/nuaWh+ahiOmDveS4jeaDs+mFjS4uLjwvZm9udD4nIDogbGlzdC5tb2R1bGVzLm1vZHVsZV9keW5hbWljLmRlc2MudGV4dCkgKyAnPGJyPjxhIGhyZWY9XFxcXFxcXCJoaWtlcjovL3BhZ2UvQ29tbWVudHM/cD1meXBhZ2VcXFxcXFxcIj7mn6XnnIvor4Torro8L2E+JyxcXFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL0NvbW1lbnRzP3A9ZnlwYWdlJyxcXFxcbiAgICAgICAgICAgICAgICAgICAgLy8g6L+Z5Liq5LiN6IO955SobG9uZ190ZXh0XFxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0JyxcXFxcbiAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBsaXN0LmJhc2ljLmNvbW1lbnRfaWRfc3RyLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogMVxcXFxuICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgfSwge1xcXFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogbGlzdC5tb2R1bGVzLm1vZHVsZV9keW5hbWljLm1ham9yLmFyY2hpdmUudGl0bGUsXFxcXG4gICAgICAgICAgICAgICAgICAgIGltZzogbGlzdC5tb2R1bGVzLm1vZHVsZV9keW5hbWljLm1ham9yLmFyY2hpdmUuY292ZXIgKyBcXFxcXFxcIkBSZWZlcmVyPVxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnLFxcXFxuICAgICAgICAgICAgICAgICAgICB1cmw6IFxcXFxcXFwiaGlrZXI6Ly9wYWdlL3ZpZGVvXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgIGRlc2M6IGxpc3QubW9kdWxlcy5tb2R1bGVfZHluYW1pYy5tYWpvci5hcmNoaXZlLmRlc2MsXFxcXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBhaWQ6IGxpc3QubW9kdWxlcy5tb2R1bGVfZHluYW1pYy5tYWpvci5hcmNoaXZlLmFpZFxcXFxuICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgfSwge1xcXFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJzxzbWFsbD48c21hbGw+PGZvbnQgY29sb3I9XFxcXFxcXCJncmV5XFxcXFxcXCI+55WZ6KiAOicgKyBsaXN0Lm1vZHVsZXMubW9kdWxlX3N0YXQuY29tbWVudC5jb3VudCArICdcXFxcXFxcXHRcXFxcXFxcXHTliIbkuqs6JyArIGxpc3QubW9kdWxlcy5tb2R1bGVfc3RhdC5mb3J3YXJkLmNvdW50ICsgJ1xcXFxcXFxcdFxcXFxcXFxcdOWWnOasojonICsgbGlzdC5tb2R1bGVzLm1vZHVsZV9zdGF0Lmxpa2UuY291bnQgKyAnPC9mb250Pjwvc21hbGw+PC9zbWFsbD4nLFxcXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCdcXFxcbiAgICAgICAgICAgICAgICB9LCB7XFxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXFxcbiAgICAgICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobGlzdC50eXBlID09ICdEWU5BTUlDX1RZUEVfRk9SV0FSRCcpIHtcXFxcbiAgICAgICAgICAgICAgICAvLyDop4bpopHlvJXnlKjvvIzlpJrlh7rkuoZvcmln5oyH5ZCR5LiA5LiqKOi/h+WOuynlt7Llj5HluIPnmoTop4bpopEs5YeG56Gu55qE6K+05piv5byV55So5LmL5YmN55qE5biW5a2Q5LiN5LiA5a6a5piv6KeG6aKR4oiaXFxcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGxpc3QubW9kdWxlcy5tb2R1bGVfYXV0aG9yLm5hbWUgKyAnXFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx0PHNtYWxsPjxzbWFsbD48Zm9udCBjb2xvcj1cXFxcXFxcImdyZXlcXFxcXFxcIj4nICsgbGlzdC5tb2R1bGVzLm1vZHVsZV9hdXRob3IucHViX3RpbWUgKyAnPC9mb250Pjwvc21hbGw+PC9zbWFsbD4nLFxcXFxuICAgICAgICAgICAgICAgICAgICBpbWc6IGxpc3QubW9kdWxlcy5tb2R1bGVfYXV0aG9yLmZhY2UgKyBcXFxcXFxcIkBSZWZlcmVyPVxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvdXBIb21lJyxcXFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdhdmF0YXInLFxcXFxuICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgbWlkOiBsaXN0Lm1vZHVsZXMubW9kdWxlX2F1dGhvci5taWQsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogbGlzdC5tb2R1bGVzLm1vZHVsZV9hdXRob3IubmFtZSxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhY2U6IGxpc3QubW9kdWxlcy5tb2R1bGVfYXV0aG9yLmZhY2VcXFxcbiAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgIH0sIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdsaW5lJ1xcXFxuICAgICAgICAgICAgICAgIH0sIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IChsaXN0Lm1vZHVsZXMubW9kdWxlX2R5bmFtaWMuZGVzYyA9PT0gbnVsbCA/ICc8Zm9udCBjb2xvcj1cXFxcXFxcImdyZXlcXFxcXFxcIj51cOWkquaHkuS6hu+8jOi/nuaWh+ahiOmDveS4jeaDs+mFjS4uLjwvZm9udD4nIDogbGlzdC5tb2R1bGVzLm1vZHVsZV9keW5hbWljLmRlc2MudGV4dCkucmVwbGFjZSgvXFxcXFxcXFxcXFxcXFxcXG4vZywgJzxicj4nKSArICc8YnI+PGEgaHJlZj1cXFxcXFxcImhpa2VyOi8vcGFnZS9Db21tZW50cz9wPWZ5cGFnZVxcXFxcXFwiPuafpeeci+ivhOiuujwvYT4nLFxcXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvQ29tbWVudHM/cD1meXBhZ2UnLFxcXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCcsXFxcXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogbGlzdC5iYXNpYy5jb21tZW50X2lkX3N0cixcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOS5n+aYr+e6r+aWh+Wtl++8jOWboOS4uuWPquaYr+aWh+WtlyvlvJXnlKjml6nlt7LmipXnqL/nmoTop4bpopFcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IDE3XFxcXG4gICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgICAgICAvLyDlvJXnlKjnmoTlhoXlrrnigJTigJTmiKrmlq3vvIjmoLnmja7kuI3lkIznmoTlvJXnlKjnsbvlnovov5vooYzlpITnkIbvvIlcXFxcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJzxzbWFsbD48c21hbGw+5LiL6Z2i5YaF5a655p2l6Ieq5byV55So55qE5biW5a2QLHVw5pivOicgKyBsaXN0Lm9yaWcubW9kdWxlcy5tb2R1bGVfYXV0aG9yLm5hbWUgKyAnPC9zbWFsbD48L3NtYWxsPicsXFxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFxcXFxcInJpY2hfdGV4dFxcXFxcXFwiXFxcXG4gICAgICAgICAgICAgICAgfSwge1xcXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcXFxcXCJsaW5lXFxcXFxcXCJcXFxcbiAgICAgICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgICAgICBpZiAobGlzdC5vcmlnLnR5cGUgPT0gJ0RZTkFNSUNfVFlQRV9BVicpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgLy8g5byV55So6KeG6aKR6K+06K+0XFxcXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogbGlzdC5vcmlnLm1vZHVsZXMubW9kdWxlX2R5bmFtaWMubWFqb3IuYXJjaGl2ZS50aXRsZSxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzogbGlzdC5vcmlnLm1vZHVsZXMubW9kdWxlX2R5bmFtaWMubWFqb3IuYXJjaGl2ZS5jb3ZlciArIFxcXFxcXFwiQFJlZmVyZXI9XFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBcXFxcXFxcImhpa2VyOi8vcGFnZS92aWRlb1xcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogbGlzdC5vcmlnLm1vZHVsZXMubW9kdWxlX2R5bmFtaWMubWFqb3IuYXJjaGl2ZS5kZXNjLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhaWQ6IGxpc3Qub3JpZy5tb2R1bGVzLm1vZHVsZV9keW5hbWljLm1ham9yLmFyY2hpdmUuYWlkXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobGlzdC5vcmlnLnR5cGUgPT0gJ0RZTkFNSUNfVFlQRV9XT1JEJykge1xcXFxuICAgICAgICAgICAgICAgICAgICAvLyDlvJXnlKjmloflrZfor7Tor7RcXFxcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAobGlzdC5vcmlnLm1vZHVsZXMubW9kdWxlX2R5bmFtaWMuZGVzYy50ZXh0ID09PSBudWxsID8gJzxmb250IGNvbG9yPVxcXFxcXFwiZ3JleVxcXFxcXFwiPnVw5aSq5oeS5LqG77yM6L+e5paH5qGI6YO95LiN5oOz6YWNLi4uPC9mb250PicgOiBsaXN0Lm9yaWcubW9kdWxlcy5tb2R1bGVfZHluYW1pYy5kZXNjLnRleHQpLnJlcGxhY2UoL1xcXFxcXFxcXFxcXFxcXFxuL2csICc8YnI+JykgKyAnPGJyPjxhIGhyZWY9XFxcXFxcXCJoaWtlcjovL3BhZ2UvQ29tbWVudHM/cD1meXBhZ2VcXFxcXFxcIj7mn6XnnIvor4Torro8L2E+JyxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9Db21tZW50cz9wPWZ5cGFnZScsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCcsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOivhOiuumlk5p2l5rqQ6YO95LiN5LiA5qC3XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGxpc3Qub3JpZy5pZF9zdHIsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g57qv5paH5a2XXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogMTdcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxcXG5cXFxcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGxpc3Qub3JpZy50eXBlID09ICdEWU5BTUlDX1RZUEVfRFJBVycpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgLy8g5byV55So5Zu+54mH6K+06K+0XFxcXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogKGxpc3Qub3JpZy5tb2R1bGVzLm1vZHVsZV9keW5hbWljLmRlc2MudGV4dCA9PT0gbnVsbCA/ICc8Zm9udCBjb2xvcj1cXFxcXFxcImdyZXlcXFxcXFxcIj51cOWkquaHkuS6hu+8jOi/nuaWh+ahiOmDveS4jeaDs+mFjS4uLjwvZm9udD4nIDogbGlzdC5vcmlnLm1vZHVsZXMubW9kdWxlX2R5bmFtaWMuZGVzYy50ZXh0KS5yZXBsYWNlKC9cXFxcXFxcXFxcXFxcXFxcbi9nLCAnPGJyPicpICsgJzxicj48YSBocmVmPVxcXFxcXFwiaGlrZXI6Ly9wYWdlL0NvbW1lbnRzP3A9ZnlwYWdlXFxcXFxcXCI+5p+l55yL6K+E6K66PC9hPicsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCcsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IFxcXFxcXFwiaGlrZXI6Ly9wYWdlL0NvbW1lbnRzP3A9ZnlwYWdlXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBsaXN0Lm9yaWcubW9kdWxlcy5tb2R1bGVfZHluYW1pYy5tYWpvci5kcmF3LmlkLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IDExXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgICAgICAgICBsaXN0Lm9yaWcubW9kdWxlcy5tb2R1bGVfZHluYW1pYy5tYWpvci5kcmF3Lml0ZW1zLmZvckVhY2goaXRlbSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZzogaXRlbS5zcmMgKyBcXFxcXFxcIkBSZWZlcmVyPVxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAncGljXzNfc3F1YXJlJyxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGl0ZW0uc3JjICsgXFxcXFxcXCJAUmVmZXJlcj1cXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgICAgICBsb2coJ+WPr+iDvei/mOacieacqumAgumFjeeahOivtOivtOexu+WeiycpO1xcXFxuICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAvLyDliIblibJcXFxcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJzxzbWFsbD48c21hbGw+PGZvbnQgY29sb3I9XFxcXFxcXCJncmV5XFxcXFxcXCI+55WZ6KiAOicgKyBsaXN0Lm1vZHVsZXMubW9kdWxlX3N0YXQuY29tbWVudC5jb3VudCArICdcXFxcXFxcXHRcXFxcXFxcXHTliIbkuqs6JyArIGxpc3QubW9kdWxlcy5tb2R1bGVfc3RhdC5mb3J3YXJkLmNvdW50ICsgJ1xcXFxcXFxcdFxcXFxcXFxcdOWWnOasojonICsgbGlzdC5tb2R1bGVzLm1vZHVsZV9zdGF0Lmxpa2UuY291bnQgKyAnPC9mb250Pjwvc21hbGw+PC9zbWFsbD4nLFxcXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCdcXFxcbiAgICAgICAgICAgICAgICB9LCB7XFxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXFxcbiAgICAgICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobGlzdC50eXBlID09ICdEWU5BTUlDX1RZUEVfV09SRCcpIHtcXFxcbiAgICAgICAgICAgICAgICAvLyDnuq/mloflrZdcXFxcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogbGlzdC5tb2R1bGVzLm1vZHVsZV9hdXRob3IubmFtZSArICdcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHQ8c21hbGw+PHNtYWxsPjxmb250IGNvbG9yPVxcXFxcXFwiZ3JleVxcXFxcXFwiPicgKyBsaXN0Lm1vZHVsZXMubW9kdWxlX2F1dGhvci5wdWJfdGltZSArICc8L2ZvbnQ+PC9zbWFsbD48L3NtYWxsPicsXFxcXG4gICAgICAgICAgICAgICAgICAgIGltZzogbGlzdC5tb2R1bGVzLm1vZHVsZV9hdXRob3IuZmFjZSArIFxcXFxcXFwiQFJlZmVyZXI9XFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS91cEhvbWUnLFxcXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2F2YXRhcicsXFxcXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBtaWQ6IGxpc3QubW9kdWxlcy5tb2R1bGVfYXV0aG9yLm1pZCxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBsaXN0Lm1vZHVsZXMubW9kdWxlX2F1dGhvci5uYW1lLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFjZTogbGlzdC5tb2R1bGVzLm1vZHVsZV9hdXRob3IuZmFjZVxcXFxuICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgfSwge1xcXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmUnXFxcXG4gICAgICAgICAgICAgICAgfSwge1xcXFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogKGxpc3QubW9kdWxlcy5tb2R1bGVfZHluYW1pYy5kZXNjID09PSBudWxsID8gJzxmb250IGNvbG9yPVxcXFxcXFwiZ3JleVxcXFxcXFwiPnVw5aSq5oeS5LqG77yM6L+e5paH5qGI6YO95LiN5oOz6YWNLi4uPC9mb250PicgOiBsaXN0Lm1vZHVsZXMubW9kdWxlX2R5bmFtaWMuZGVzYy50ZXh0KS5yZXBsYWNlKC9cXFxcXFxcXFxcXFxcXFxcbi9nLCAnPGJyPicpICsgJzxicj48YSBocmVmPVxcXFxcXFwiaGlrZXI6Ly9wYWdlL0NvbW1lbnRzP3A9ZnlwYWdlXFxcXFxcXCI+5p+l55yL6K+E6K66PC9hPicsXFxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9Db21tZW50cz9wPWZ5cGFnZScsXFxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0JyxcXFxcbiAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBsaXN0LmJhc2ljLmNvbW1lbnRfaWRfc3RyLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g57qv5paH5a2XXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAxN1xcXFxuICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgfSwge1xcXFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJzxzbWFsbD48c21hbGw+PGZvbnQgY29sb3I9XFxcXFxcXCJncmV5XFxcXFxcXCI+55WZ6KiAOicgKyBsaXN0Lm1vZHVsZXMubW9kdWxlX3N0YXQuY29tbWVudC5jb3VudCArICdcXFxcXFxcXHRcXFxcXFxcXHTliIbkuqs6JyArIGxpc3QubW9kdWxlcy5tb2R1bGVfc3RhdC5mb3J3YXJkLmNvdW50ICsgJ1xcXFxcXFxcdFxcXFxcXFxcdOWWnOasojonICsgbGlzdC5tb2R1bGVzLm1vZHVsZV9zdGF0Lmxpa2UuY291bnQgKyAnPC9mb250Pjwvc21hbGw+PC9zbWFsbD4nLFxcXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCdcXFxcbiAgICAgICAgICAgICAgICB9LCB7XFxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXFxcbiAgICAgICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobGlzdC50eXBlID09ICdEWU5BTUlDX1RZUEVfRFJBVycpIHtcXFxcbiAgICAgICAgICAgICAgICAvLyDlm77niYfor7Tor7RcXFxcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogbGlzdC5tb2R1bGVzLm1vZHVsZV9hdXRob3IubmFtZSArICdcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHQ8c21hbGw+PHNtYWxsPjxmb250IGNvbG9yPVxcXFxcXFwiZ3JleVxcXFxcXFwiPicgKyBsaXN0Lm1vZHVsZXMubW9kdWxlX2F1dGhvci5wdWJfdGltZSArICc8L2ZvbnQ+PC9zbWFsbD48L3NtYWxsPicsXFxcXG4gICAgICAgICAgICAgICAgICAgIGltZzogbGlzdC5tb2R1bGVzLm1vZHVsZV9hdXRob3IuZmFjZSArIFxcXFxcXFwiQFJlZmVyZXI9XFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS91cEhvbWUnLFxcXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2F2YXRhcicsXFxcXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBtaWQ6IGxpc3QubW9kdWxlcy5tb2R1bGVfYXV0aG9yLm1pZCxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBsaXN0Lm1vZHVsZXMubW9kdWxlX2F1dGhvci5uYW1lLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFjZTogbGlzdC5tb2R1bGVzLm1vZHVsZV9hdXRob3IuZmFjZVxcXFxuICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgfSwge1xcXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmUnXFxcXG4gICAgICAgICAgICAgICAgfSwge1xcXFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogKGxpc3QubW9kdWxlcy5tb2R1bGVfZHluYW1pYy5kZXNjID09PSBudWxsID8gJzxmb250IGNvbG9yPVxcXFxcXFwiZ3JleVxcXFxcXFwiPnVw5aSq5oeS5LqG77yM6L+e5paH5qGI6YO95LiN5oOz6YWNLi4uPC9mb250PicgOiBsaXN0Lm1vZHVsZXMubW9kdWxlX2R5bmFtaWMuZGVzYy50ZXh0KS5yZXBsYWNlKC9cXFxcXFxcXFxcXFxcXFxcbi9nLCAnPGJyPicpICsgJzxicj48YSBocmVmPVxcXFxcXFwiaGlrZXI6Ly9wYWdlL0NvbW1lbnRzP3A9ZnlwYWdlXFxcXFxcXCI+5p+l55yL6K+E6K66PC9hPicsXFxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9Db21tZW50cz9wPWZ5cGFnZScsXFxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0JyxcXFxcbiAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBsaXN0LmJhc2ljLmNvbW1lbnRfaWRfc3RyLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g55u457C/77yI5Zu+54mH5Yqo5oCB77yJXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAxMVxcXFxuICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICAgICAgbGlzdC5tb2R1bGVzLm1vZHVsZV9keW5hbWljLm1ham9yLmRyYXcuaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzogaXRlbS5zcmMgKyBcXFxcXFxcIkBSZWZlcmVyPVxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdwaWNfM19zcXVhcmUnLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBpdGVtLnNyYyArIFxcXFxcXFwiQFJlZmVyZXI9XFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAnPHNtYWxsPjxzbWFsbD48Zm9udCBjb2xvcj1cXFxcXFxcImdyZXlcXFxcXFxcIj7nlZnoqIA6JyArIGxpc3QubW9kdWxlcy5tb2R1bGVfc3RhdC5jb21tZW50LmNvdW50ICsgJ1xcXFxcXFxcdFxcXFxcXFxcdOWIhuS6qzonICsgbGlzdC5tb2R1bGVzLm1vZHVsZV9zdGF0LmZvcndhcmQuY291bnQgKyAnXFxcXFxcXFx0XFxcXFxcXFx05Zac5qyiOicgKyBsaXN0Lm1vZHVsZXMubW9kdWxlX3N0YXQubGlrZS5jb3VudCArICc8L2ZvbnQ+PC9zbWFsbD48L3NtYWxsPicsXFxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0J1xcXFxuICAgICAgICAgICAgICAgIH0sIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdsaW5lX2JsYW5rJ1xcXFxuICAgICAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICB9KTtcXFxcbiAgICB9KVxcXFxufVxcXFxuLy8g5pe26Ze06L2s5o2i5Ye95pWwXFxcXG4kLmV4cG9ydHMudGltZUNvbnZlcnQgPSBmdW5jdGlvbiAodGltZSkge1xcXFxuICAgIGZ1bmN0aW9uIGZvcm1hdERhdGUoZSwgdCkge1xcXFxuICAgICAgICBlID0gbmV3IERhdGUoZSAqIDEwMDApOyAvL+aXtumXtOaIs+S4ujEw5L2N6ZyAKjEwMDDvvIzml7bpl7TmiLPkuLoxM+S9jeeahOivneS4jemcgOS5mDEwMDBcXFxcbiAgICAgICAgcmV0dXJuIHQucmVwbGFjZSgveXl5eXxZWVlZLywgZS5nZXRGdWxsWWVhcigpKVxcXFxuICAgICAgICAgICAgLnJlcGxhY2UoL3l5fFlZLywgcihlLmdldEZ1bGxZZWFyKCkgJSAxMDAsIDIpKVxcXFxuICAgICAgICAgICAgLnJlcGxhY2UoL21tfE1NLywgcihlLmdldE1vbnRoKCkgKyAxLCAyKSlcXFxcbiAgICAgICAgICAgIC5yZXBsYWNlKC9tfE0vZywgZS5nZXRNb250aCgpICsgMSlcXFxcbiAgICAgICAgICAgIC5yZXBsYWNlKC9kZHxERC8sIHIoZS5nZXREYXRlKCksIDIpKVxcXFxuICAgICAgICAgICAgLnJlcGxhY2UoL2R8RC9nLCBlLmdldERhdGUoKSlcXFxcbiAgICAgICAgICAgIC5yZXBsYWNlKC9oaHxISC8sIHIoZS5nZXRIb3VycygpLCAyKSlcXFxcbiAgICAgICAgICAgIC5yZXBsYWNlKC9ofEgvZywgZS5nZXRIb3VycygpKVxcXFxuICAgICAgICAgICAgLnJlcGxhY2UoL2lpfElJLywgcihlLmdldE1pbnV0ZXMoKSwgMikpXFxcXG4gICAgICAgICAgICAucmVwbGFjZSgvaXxJL2csIGUuZ2V0TWludXRlcygpKVxcXFxuICAgICAgICAgICAgLnJlcGxhY2UoL3NzfFNTLywgcihlLmdldFNlY29uZHMoKSwgMikpXFxcXG4gICAgICAgICAgICAucmVwbGFjZSgvc3xTL2csIGUuZ2V0U2Vjb25kcygpKVxcXFxuICAgICAgICAgICAgLnJlcGxhY2UoL3cvZywgZS5nZXREYXkoKSlcXFxcbiAgICAgICAgICAgIC5yZXBsYWNlKC9XL2csIFtcXFxcXFxcIuaXpVxcXFxcXFwiLCBcXFxcXFxcIuS4gFxcXFxcXFwiLCBcXFxcXFxcIuS6jFxcXFxcXFwiLCBcXFxcXFxcIuS4iVxcXFxcXFwiLCBcXFxcXFxcIuWbm1xcXFxcXFwiLCBcXFxcXFxcIuS6lFxcXFxcXFwiLCBcXFxcXFxcIuWFrVxcXFxcXFwiXVtlLmdldERheSgpXSlcXFxcbiAgICB9XFxcXG5cXFxcbiAgICBmdW5jdGlvbiByKGUsIHQpIHtcXFxcbiAgICAgICAgZm9yICh2YXIgciA9IDAsIG4gPSB0IC0gKGUgKyBcXFxcXFxcIlxcXFxcXFwiKS5sZW5ndGg7IHIgPCBuOyByKyspIGUgPSBcXFxcXFxcIjBcXFxcXFxcIiArIGU7XFxcXG4gICAgICAgIHJldHVybiBlICsgXFxcXFxcXCJcXFxcXFxcIlxcXFxuICAgIH1cXFxcbiAgICByZXR1cm4gZm9ybWF0RGF0ZSh0aW1lLCAnWVlZWS1NTS1ERCBoaDppaTpzcycpO1xcXFxuICAgIC8vIGNvbnNvbGUubG9nKGZvcm1hdERhdGUoMTY2NDA4OTUzMiwgJ1lZWVktTU0tREQgaGg6aWk6c3MnKSk7XFxcXG59XFxcXG5cXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCJ2aWRlb1BhZ2VcXFwiLFxcXCJwYXRoXFxcIjpcXFwidmlkZW9cXFwiLFxcXCJydWxlXFxcIjpcXFwianM6XFxcXG5cXFxcbnZhciBkID0gW107XFxcXG5cXFxcbi8vIOmihOWkhOeQhlxcXFxuXFxcXG5wdXRNeVZhcign5Yqf6IO95oqY5Y+gJywgJ+WFsycpO1xcXFxuXFxcXG5pbWdMaW5rPXN0b3JhZ2UwLmdldE15VmFyKCflm77moIcnKTtcXFxcblxcXFxuYWlkID0gTVlfUEFSQU1TLmFpZCArIFxcXFxcXFwiXFxcXFxcXCI7XFxcXG5cXFxcbm1pZCA9IE1ZX1BBUkFNUy5taWQgKyBcXFxcXFxcIlxcXFxcXFwiO1xcXFxuXFxcXG50cnkge1xcXFxuXFxcXG7CoCDCoCAvL+iOt+WPluinhumikeWIhlDkv6Hmga9cXFxcblxcXFxuwqAgwqAgdmFyIHAgPSBKU09OLnBhcnNlKGZldGNoKFxcXFxcXFwiaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3P2FpZD1cXFxcXFxcIiArIGFpZCkpLmRhdGE7XFxcXG5cXFxcbsKgIMKgIGhhc0xpa2U9JC5yZXF1aXJlKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXFxcXFwiKS5oYXNMaWtlKGFpZCk7XFxcXG5cXFxcbsKgIMKgIGhhc0Zhdm91cj0kLnJlcXVpcmUoXFxcXFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcXFxcXCIpLmhhc0Zhdm91cihhaWQpO1xcXFxuXFxcXG7CoCDCoCBpZiAocC5wYWdlcy5sZW5ndGggPT0gMSkge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBjaWQgPSBwLnBhZ2VzWzBdLmNpZDtcXFxcblxcXFxuwqAgwqAgwqAgwqAgZC5wdXNoKHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IHAudGl0bGUsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIGltZzogcC5waWMgKyAnQFJlZmVyZXI9JyxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiAkKCkubGF6eVJ1bGUoKGFpZCwgY2lkLCBxbikgPT4ge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAvLyDnnJ/nprvkuobkuKrlpKfosLHvvIzmmI7mmI7mm7/mjaLmjonkuobvvIx1YeWtl+espuS4suWPiOWPmOWbnuadpeS6hu+8jOWPiOimgeWkhOeQhuS4gOasoVxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXR1cm4gJC5yZXF1aXJlKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXFxcXFwiKS5iaWxpTGF6eShhaWQsIGNpZCwgcW4pLnJlcGxhY2UoLzsvZywgXFxcXFxcXCLvvJvvvJtcXFxcXFxcIik7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIH0sIGFpZCArIFxcXFxcXFwiXFxcXFxcXCIsIGNpZCArIFxcXFxcXFwiXFxcXFxcXCIsICcxMTInKSxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6IFxcXFxcXFwicGljXzFcXFxcXFxcIlxcXFxuXFxcXG7CoCDCoCDCoCDCoCB9KTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgZC5wdXNoKHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6ICc8Zm9udCBjb2xvcj1cXFxcXFxcImJsdWVcXFxcXFxcIj4nICsgcC5vd25lci5uYW1lICsgJzwvZm9udD4nLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCB1cmw6IFxcXFxcXFwiaGlrZXI6Ly9wYWdlL3VwSG9tZVxcXFxcXFwiLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCBpbWc6IHAub3duZXIuZmFjZSArIFxcXFxcXFwiQFJlZmVyZXI9XFxcXFxcXCIsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiBcXFxcXFxcImF2YXRhclxcXFxcXFwiLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCBleHRyYToge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBtaWQ6IHAub3duZXIubWlkLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogcC5vd25lci5uYW1lLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBmYWNlOiBwLm93bmVyLmZhY2VcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgfVxcXFxuXFxcXG7CoCDCoCDCoCDCoCB9LHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdsaW5lJ1xcXFxuXFxcXG7CoCDCoCDCoCDCoCB9LHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IHAuc3RhdC5saWtlLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCBpbWc6IGhhc0xpa2U9PTE/aW1nTGluay7lt7LngrnotZ46aW1nTGluay7mnKrngrnotZ4sXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIHVybDogJCgnI25vTG9hZGluZyMjbm9IaXN0b3J5IycpLmxhenlSdWxlKChhaWQpID0+IHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuICQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vcGFnZS9hcGlcXFxcXFxcIikubGlrZUxvZ2ljKGFpZClcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgfSwgYWlkKSxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6IFxcXFxcXFwiaWNvbl9zbWFsbF80XFxcXFxcXCIsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIGV4dHJhOntcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWQ6J3NldExpa2UnXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIH1cXFxcblxcXFxuwqAgwqAgwqAgwqAgfSx7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiDCoHAuc3RhdC5mYXZvcml0ZSxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgaW1nOiBoYXNGYXZvdXI/aW1nTGluay7lt7LmlLbol486aW1nTGluay7mnKrmlLbol48sXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIHVybDogJCgnI25vTG9hZGluZyMjbm9IaXN0b3J5IycpLmxhenlSdWxlKChhaWQpID0+IHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdXBNaWQ9SlNPTi5wYXJzZShyZXF1ZXN0KFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9iaWxpLnR4dFxcXFxcXFwiKSkudXNlck1pZDtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuICQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vcGFnZS9hcGlcXFxcXFxcIikuZmF2b3VyTG9naWMoYWlkLHVwTWlkKVxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCB9LCBhaWQpLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogXFxcXFxcXCJpY29uX3NtYWxsXzRcXFxcXFxcIixcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgZXh0cmE6e1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZDonc2V0RmF2b3VyJ1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCB9XFxcXG5cXFxcbsKgIMKgIMKgIMKgIH0se1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogJ+eojeWQjuWGjeeciycsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIGltZzogaW1nTGluay7nqI3lkI7lho3nnIssXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIHVybDogJCgnI25vTG9hZGluZyMjbm9IaXN0b3J5IycpLmxhenlSdWxlKChhaWQpID0+IHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuICQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vcGFnZS9hcGlcXFxcXFxcIikuanVkZ2VUb3ZpZXcoYWlkKVxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCB9LCBhaWQpLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogXFxcXFxcXCJpY29uX3NtYWxsXzRcXFxcXFxcIixcXFxcblxcXFxuwqAgwqAgwqAgwqAgfSwge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogJ+afpeeci+ivhOiuuicsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIHVybDogJ2hpa2VyOi8vcGFnZS9Db21tZW50cz9wPWZ5cGFnZScsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIGltZzogaW1nTGluay7mn6XnnIvor4TorrosXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiBcXFxcXFxcImljb25fc21hbGxfNFxcXFxcXFwiLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCBleHRyYToge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBcXFxcXFxcImlkXFxcXFxcXCI6IGFpZCxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgXFxcXFxcXCJ0eXBlXFxcXFxcXCI6MVxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCB9XFxcXG5cXFxcbsKgIMKgIMKgIMKgIH0se1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnXFxcXG5cXFxcbsKgIMKgIMKgIMKgIH0se1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogcC5kZXNjLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogXFxcXFxcXCJsb25nX3RleHRcXFxcXFxcIixcXFxcblxcXFxuwqAgwqAgwqAgwqAgfSk7XFxcXG5cXFxcbsKgIMKgIH0gZWxzZSB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGQucHVzaCh7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBwLnRpdGxlLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCBpbWc6cC5waWMgKyAnQFJlZmVyZXI9JyxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiAkKCcjbm9Mb2FkaW5nIyNub0hpc3RvcnkjJykubGF6eVJ1bGUoKHApID0+IHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuICQoJ2hpa2VyOi8vZW1wdHk/ZnlwYWdlJykucnVsZSgocCkgPT4ge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkID0gW107XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGQucHVzaCh7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBwLmRlc2MsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiBcXFxcXFxcImxvbmdfdGV4dFxcXFxcXFwiLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KVxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBzZXRSZXN1bHQoZCk7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0sIHApXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIH0sIHApLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogXFxcXFxcXCJwaWNfMVxcXFxcXFwiXFxcXG5cXFxcbsKgIMKgIMKgIMKgIH0se1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogJzxmb250IGNvbG9yPVxcXFxcXFwiYmx1ZVxcXFxcXFwiPicgKyBwLm93bmVyLm5hbWUgKyAnPC9mb250PicsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIHVybDogXFxcXFxcXCJoaWtlcjovL3BhZ2UvdXBIb21lXFxcXFxcXCIsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIGltZzogcC5vd25lci5mYWNlICsgXFxcXFxcXCJAUmVmZXJlcj1cXFxcXFxcIixcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6IFxcXFxcXFwiYXZhdGFyXFxcXFxcXCIsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIGV4dHJhOiB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIG1pZDogcC5vd25lci5taWQsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBwLm93bmVyLm5hbWUsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGZhY2U6IHAub3duZXIuZmFjZVxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCB9XFxcXG5cXFxcbsKgIMKgIMKgIMKgIH0se1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ2xpbmUnXFxcXG5cXFxcbsKgIMKgIMKgIMKgIH0se1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogcC5zdGF0Lmxpa2UsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIGltZzogaGFzTGlrZT09MT9pbWdMaW5rLuW3sueCuei1njppbWdMaW5rLuacqueCuei1nixcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiAkKCcjbm9Mb2FkaW5nIyNub0hpc3RvcnkjJykubGF6eVJ1bGUoKGFpZCkgPT4ge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXR1cm4gJC5yZXF1aXJlKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXFxcXFwiKS5saWtlTG9naWMoYWlkKVxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCB9LCBhaWQpLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogXFxcXFxcXCJpY29uX3NtYWxsXzRcXFxcXFxcIixcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgZXh0cmE6e1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZDonc2V0TGlrZSdcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgfVxcXFxuXFxcXG7CoCDCoCDCoCDCoCB9LHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IHAuc3RhdC5mYXZvcml0ZSxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgaW1nOiBoYXNGYXZvdXI/aW1nTGluay7lt7LmlLbol486aW1nTGluay7mnKrmlLbol48sXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIHVybDogJCgnI25vTG9hZGluZyMjbm9IaXN0b3J5IycpLmxhenlSdWxlKChhaWQpID0+IHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdXBNaWQ9SlNPTi5wYXJzZShyZXF1ZXN0KFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9iaWxpLnR4dFxcXFxcXFwiKSkudXNlck1pZDtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuICQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vcGFnZS9hcGlcXFxcXFxcIikuZmF2b3VyTG9naWMoYWlkLHVwTWlkKVxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCB9LCBhaWQpLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogXFxcXFxcXCJpY29uX3NtYWxsXzRcXFxcXFxcIixcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgZXh0cmE6e1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZDonc2V0RmF2b3VyJ1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCB9XFxcXG5cXFxcbsKgIMKgIMKgIMKgIH0se1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogJ+eojeWQjuWGjeeciycsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIGltZzogaW1nTGluay7nqI3lkI7lho3nnIssXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIHVybDogJCgnI25vTG9hZGluZyMjbm9IaXN0b3J5IycpLmxhenlSdWxlKChhaWQpID0+IHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuICQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vcGFnZS9hcGlcXFxcXFxcIikuanVkZ2VUb3ZpZXcoYWlkKVxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCB9LCBhaWQpLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogXFxcXFxcXCJpY29uX3NtYWxsXzRcXFxcXFxcIixcXFxcblxcXFxuwqAgwqAgwqAgwqAgfSwge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogJ+afpeeci+ivhOiuuicsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIHVybDogJ2hpa2VyOi8vcGFnZS9Db21tZW50cz9wPWZ5cGFnZScsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIGltZzogaW1nTGluay7mn6XnnIvor4TorrosXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiBcXFxcXFxcImljb25fc21hbGxfNFxcXFxcXFwiLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCBleHRyYToge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBcXFxcXFxcImlkXFxcXFxcXCI6IGFpZCxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgXFxcXFxcXCJ0eXBlXFxcXFxcXCI6MVxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCB9XFxcXG5cXFxcbsKgIMKgIMKgIMKgIH0pXFxcXG5cXFxcbsKgIMKgIMKgIMKgIGQucHVzaCh7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXFxcblxcXFxuwqAgwqAgwqAgwqAgfSx7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiAn6YCJ6ZuG5YiX6KGoXFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx0PHNtYWxsPjxzbWFsbD7lhbEnK3AudmlkZW9zKyfmnaHop4bpopE8L3NtYWxsPjwvc21hbGw+JyxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiBcXFxcXFxcImhpa2VyOi8vZW1wdHlcXFxcXFxcIixcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgaW1nOiBpbWdMaW5rLuWIl+ihqCxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6IFxcXFxcXFwiYXZhdGFyXFxcXFxcXCIsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIH0se1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ2xpbmUnXFxcXG5cXFxcbsKgIMKgIMKgIMKgIH0pO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBwLnBhZ2VzLmZvckVhY2goaXRlbSA9PiB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIGNpZCA9IGl0ZW0uY2lkO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCBkLnB1c2goe1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogaXRlbS5wYXJ0LFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB1cmw6ICQoKS5sYXp5UnVsZSgoYWlkLCBjaWQsIHFuKSA9PiB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybiAkLnJlcXVpcmUoXFxcXFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcXFxcXCIpLmJpbGlMYXp5KGFpZCwgY2lkLCBxbikucmVwbGFjZSgvOy9nLCBcXFxcXFxcIu+8m++8m1xcXFxcXFwiKTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSwgYWlkICsgXFxcXFxcXCJcXFxcXFxcIiwgY2lkICsgXFxcXFxcXCJcXFxcXFxcIiwgJzExMicpLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogXFxcXFxcXCJ0ZXh0XzFcXFxcXFxcIlxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCB9KVxcXFxuXFxcXG7CoCDCoCDCoCDCoCB9KVxcXFxuXFxcXG7CoCDCoCB9XFxcXG5cXFxcbn0gY2F0Y2ggKGUpIHtcXFxcblxcXFxuwqAgwqAgZC5wdXNoKHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgdGl0bGU6ICfpobXpnaLotbDkuKLkuoYuLi4nLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCBpbWc6ICdodHRwczovL2kwLmhkc2xiLmNvbS9iZnMvZ2VuZXJhbC9mN2I2NjcwMTFhNDY2MTU3MzJjNzAxZjRiYjFkMDdmNzkzZjhkMWRmLnBuZ0BSZWZlcmVyPScsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIHVybDogJ2hpa2VyOi8vZW1wdHknLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCBkZXNjOiAn5aSn5qaC546H6KeG6aKR6KKr5bCB56aB77yM5oiW6ICFdXDlt7Lot5Hot69+JyxcXFxcblxcXFxuwqAgwqAgwqAgwqAgY29sX3R5cGU6IFxcXFxcXFwicGljXzFcXFxcXFxcIlxcXFxuXFxcXG7CoCDCoCB9KTtcXFxcblxcXFxufVxcXFxuXFxcXG5zZXRSZXN1bHQoZCk7XFxcXG5cXFxcblxcXFxuXFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcImxvbmdfdGV4dFxcXCIsXFxcIm5hbWVcXFwiOlxcXCLor4TorrpcXFwiLFxcXCJwYXRoXFxcIjpcXFwiQ29tbWVudHNcXFwiLFxcXCJydWxlXFxcIjpcXFwianM6XFxcXG5cXFxcbnZhciBkID0gW107XFxcXG5cXFxcbnZhciBpZCA9IE1ZX1BBUkFNUy5pZDtcXFxcblxcXFxudmFyIHR5cGUgPSBNWV9QQVJBTVMudHlwZTtcXFxcblxcXFxubG9nKGlkKTtcXFxcblxcXFxuaWYgKE1ZX1BBR0UgPT0gMSkge1xcXFxuXFxcXG7CoCDCoCAvLyDosozkvLzmmoLml7blj6rog73mloflrZcr5pWw5a2XXFxcXG5cXFxcbsKgIMKgIGQudW5zaGlmdCh7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHRpdGxlOiBcXFxcXFxcIuWPkeadoeivhOiuuuWQp1xcXFxcXFwiLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCBjb2xfdHlwZTogXFxcXFxcXCJpbnB1dFxcXFxcXFwiLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCB1cmw6ICQudG9TdHJpbmcoKGlkLHR5cGUpID0+IHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgbGV0IGNzcmYgPSBKU09OLnBhcnNlKHJlcXVlc3QoXFxcXFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2JpbGkudHh0XFxcXFxcXCIpKS5jb29raWUubWF0Y2goL2JpbGlfamN0PSguKj8pOy8pWzFdO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCBwb3N0KFxcXFxcXFwiaHR0cDovL2FwaS5iaWxpYmlsaS5jb20veC92Mi9yZXBseS9hZGRcXFxcXFxcIiwge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBib2R5OiB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIFxcXFxcXFwidHlwZVxcXFxcXFwiOiB0eXBlLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBcXFxcXFxcIm9pZFxcXFxcXFwiOiBpZCxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgXFxcXFxcXCJjc3JmXFxcXFxcXCI6IGNzcmYsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIFxcXFxcXFwibWVzc2FnZVxcXFxcXFwiOiBpbnB1dFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9LFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBoZWFkZXJzOiB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIFxcXFxcXFwiQ29va2llXFxcXFxcXCI6IEpTT04ucGFyc2UocmVxdWVzdChcXFxcXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvY3kvYmlsaS50eHRcXFxcXFxcIikpLmNvb2tpZVxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIH0pXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIHJlZnJlc2hQYWdlKClcXFxcblxcXFxuwqAgwqAgwqAgwqAgfSwgaWQsdHlwZSlcXFxcblxcXFxuwqAgwqAgfSlcXFxcblxcXFxufVxcXFxuXFxcXG5sZXQgZGF0YSA9ICQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vcGFnZS9hcGlcXFxcXFxcIikuZ2V0Q29tbWVudHMoaWQsdHlwZSxNWV9QQUdFKVxcXFxuXFxcXG5kYXRhLmZvckVhY2goaXRlbSA9PiB7XFxcXG5cXFxcbsKgIMKgIGQucHVzaCh7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHRpdGxlOiBpdGVtLm1lbWJlci51bmFtZSsnXFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx0PHNtYWxsPjxzbWFsbD48Zm9udCBjb2xvcj1cXFxcXFxcImdyZXlcXFxcXFxcIj4nK2l0ZW0ucmVwbHlfY29udHJvbC5sb2NhdGlvbiArIFxcXFxcXFwiIFxcXFxcXFwiICsgaXRlbS5yZXBseV9jb250cm9sLnRpbWVfZGVzYysnPC9mb250Pjwvc21hbGw+PC9zbWFsbD4nLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCBpbWc6IGl0ZW0ubWVtYmVyLmF2YXRhcisnQFJlZmVyZXI9JyxcXFxcblxcXFxuwqAgwqAgwqAgwqAgdXJsOidoaWtlcjovL3BhZ2UvdXBIb21lJyxcXFxcblxcXFxuwqAgwqAgwqAgwqAgY29sX3R5cGU6IFxcXFxcXFwiYXZhdGFyXFxcXFxcXCIsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIGV4dHJhOiB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIG1pZDogaXRlbS5tZW1iZXIubWlkLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogaXRlbS5tZW1iZXIudW5hbWUsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIGZhY2U6IGl0ZW0ubWVtYmVyLmF2YXRhclxcXFxuXFxcXG7CoCDCoCDCoCDCoCB9XFxcXG5cXFxcbsKgIMKgIH0pXFxcXG5cXFxcbsKgIMKgIGQucHVzaCh7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHRpdGxlOiBpdGVtLmNvbnRlbnQubWVzc2FnZSxcXFxcblxcXFxuwqAgwqAgfSlcXFxcblxcXFxufSlcXFxcblxcXFxuc2V0UmVzdWx0KGQpO1xcXFxuXFxcXG5cXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLorqLpmIXliJfooahcXFwiLFxcXCJwYXRoXFxcIjpcXFwic3Vic2NyaXB0aW9uXFxcIixcXFwicnVsZVxcXCI6XFxcImlmIChnZXRJdGVtKCforqLpmIXnsbvlnosnLCAnMScpID09ICcxJykge1xcXFxuXFxcXG7CoCDCoCB0eXBlck5hbWUgPSAn6L+955WqJztcXFxcblxcXFxufSBlbHNlIHtcXFxcblxcXFxuwqAgwqAgdHlwZXJOYW1lID0gJ+i/veWJpyc7XFxcXG5cXFxcbn1cXFxcblxcXFxuZC5wdXNoKHtcXFxcblxcXFxuwqAgwqAgdGl0bGU6ICfov73nlaonID09IHR5cGVyTmFtZSA/ICfigJjigJjigJnigJk8Zm9udCBjb2xvcj1cXFxcXFxcInJlZFxcXFxcXFwiPui/veeVqjwvZm9udD4nIDogJ+i/veeVqicsXFxcXG5cXFxcbsKgIMKgIHVybDogJCgnI25vTG9hZGluZyMjbm9IaXN0b3J5IycpLmxhenlSdWxlKCgpID0+IHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgc2V0SXRlbSgn6K6i6ZiF57G75Z6LJywgJzEnKVxcXFxuXFxcXG7CoCDCoCDCoCDCoCByZWZyZXNoUGFnZSh0cnVlKTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgcmV0dXJuIFxcXFxcXFwiaGlrZXI6Ly9lbXB0eVxcXFxcXFwiO1xcXFxuXFxcXG7CoCDCoCB9KSxcXFxcblxcXFxuwqAgwqAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcXFxuXFxcXG59LHtcXFxcblxcXFxuwqAgwqAgdGl0bGU6ICfov73liacnID09IHR5cGVyTmFtZSA/ICfigJjigJjigJnigJk8Zm9udCBjb2xvcj1cXFxcXFxcInJlZFxcXFxcXFwiPui/veWJpzwvZm9udD4nIDogJ+i/veWJpycsXFxcXG5cXFxcbsKgIMKgIHVybDogJCgnI25vTG9hZGluZyMjbm9IaXN0b3J5IycpLmxhenlSdWxlKCgpID0+IHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgc2V0SXRlbSgn6K6i6ZiF57G75Z6LJywgJzInKVxcXFxuXFxcXG7CoCDCoCDCoCDCoCByZWZyZXNoUGFnZSh0cnVlKTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgcmV0dXJuIFxcXFxcXFwiaGlrZXI6Ly9lbXB0eVxcXFxcXFwiO1xcXFxuXFxcXG7CoCDCoCB9KSxcXFxcblxcXFxuwqAgwqAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcXFxuXFxcXG59KTtcXFxcblxcXFxuc3Vic2NyaXB0aW9ucyA9IEpTT04ucGFyc2UoZmV0Y2goXFxcXFxcXCJodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9iYW5ndW1pL2ZvbGxvdy9saXN0P3R5cGU9XFxcXFxcXCIgKyBnZXRJdGVtKCforqLpmIXnsbvlnosnLCAnMScpICsgXFxcXFxcXCImZm9sbG93X3N0YXR1cz0wJnBuPVxcXFxcXFwiICsgcGFnZSArIFxcXFxcXFwiJnBzPTE1JnZtaWQ9XFxcXFxcXCIgKyBtaWQsIHtcXFxcblxcXFxuwqAgwqAgaGVhZGVyczoge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBcXFxcXFxcIkNvb2tpZVxcXFxcXFwiOiBjb29raWVcXFxcblxcXFxuwqAgwqAgfVxcXFxuXFxcXG59KSkuZGF0YTtcXFxcblxcXFxuaWYgKHBhZ2UgPT0gMSkge1xcXFxuXFxcXG7CoCDCoCBkLnB1c2goe1xcXFxuXFxcXG7CoCDCoCDCoCDCoCB0aXRsZTogXFxcXFxcXCLlvZPliY1cXFxcXFxcIiArIHR5cGVyTmFtZSArIFxcXFxcXFwi5pWw6YePOlxcXFxcXFwiICsgc3Vic2NyaXB0aW9ucy50b3RhbCxcXFxcblxcXFxuwqAgwqAgwqAgwqAgdXJsOiBcXFxcXFxcImhpa2VyOi8vZW1wdHlcXFxcXFxcIixcXFxcblxcXFxuwqAgwqAgwqAgwqAgY29sX3R5cGU6IFxcXFxcXFwidGV4dF9jZW50ZXJfMVxcXFxcXFwiXFxcXG5cXFxcbsKgIMKgIH0pXFxcXG5cXFxcbn1cXFxcblxcXFxuc3Vic2NyaXB0aW9ucy5saXN0LmZvckVhY2gobGlzdCA9PiB7XFxcXG5cXFxcbsKgIMKgIGQucHVzaCh7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIHRpdGxlOiBsaXN0LnRpdGxlLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCBpbWc6IGxpc3QuY292ZXIgKyBcXFxcXFxcIkBSZWZlcmVyPVxcXFxcXFwiLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCB1cmw6IFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2ZpbG1lcmppI2ltbWVyc2l2ZVRoZW1lI1xcXFxcXFwiLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCBkZXNjOiBsaXN0LmV2YWx1YXRlLnN1YnN0cmluZygwLCAxMikgKyAn4oCY4oCY4oCZ4oCZ4oCmPGZvbnQgY29sb3I9XFxcXFxcXCIjMUMxQzFDXFxcXFxcXCI+6K+m5oOFPC9mb250PicgKyAnXFxcXFxcXFxuJyArIGxpc3Quc2Vhc29uX3R5cGVfbmFtZSArICd8JyArIChsaXN0LmFyZWFzPT09dW5kZWZpbmVkPycnOmxpc3QuYXJlYXNbMF0ubmFtZSArICdcXFxcXFxcXG4nKSArIChsaXN0LnByb2dyZXNzID09ICcnID8gJ+WwmuacquingueciycgOiBsaXN0LnByb2dyZXNzKSArIChsaXN0Lm5ld19lcC5pbmRleF9zaG93PT09dW5kZWZpbmVkPycnOid8JysobGlzdC5uZXdfZXAuaW5kZXhfc2hvdy5tYXRjaCgv5pu05pawfOWNs+Wwhi8pID8gJ+KAmOKAmOKAmeKAmTxmb250IGNvbG9yPVxcXFxcXFwicmVkXFxcXFxcXCI+JyArIGxpc3QubmV3X2VwLmluZGV4X3Nob3cgKyAnPC9mb250Pic6IGxpc3QubmV3X2VwLmluZGV4X3Nob3cpKSxcXFxcblxcXFxuwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdtb3ZpZV8xX3ZlcnRpY2FsX3BpYycsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIGV4dHJhOiB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIHNlYXNvbl9pZDogbGlzdC5zZWFzb25faWRcXFxcblxcXFxuwqAgwqAgwqAgwqAgfVxcXFxuXFxcXG7CoCDCoCB9KTtcXFxcblxcXFxufSk7XFxcXG5cXFxcblxcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIuWFs+azqOWIl+ihqFxcXCIsXFxcInBhdGhcXFwiOlxcXCJhdHRlbnRpb25cXFwiLFxcXCJydWxlXFxcIjpcXFwiaWYgKE1ZX1BBR0UgPT0gMSkge1xcXFxuXFxcXG7CoCDCoCBmb2N1c0dyb3Vwcz0kLnJlcXVpcmUoXFxcXFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcXFxcXCIpLmdldE15QXR0ZW50aW9uR3JvdXBMaXN0KCk7XFxcXG5cXFxcbsKgIMKgIHB1dE15VmFyKCd0ZW1wSWQnLCBKU09OLnN0cmluZ2lmeShmb2N1c0dyb3Vwc1sxXS50YWdpZCkpO1xcXFxuXFxcXG7CoCDCoCBmb2N1c0dyb3Vwcy5mb3JFYWNoKGxpc3QgPT4ge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBkLnB1c2goe1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogbGlzdC50YWdpZCA9PSBnZXRJdGVtKCflhbPms6jliIbnu4QnLCBKU09OLnN0cmluZ2lmeShmb2N1c0dyb3Vwc1sxXS5pZCkpID8gXFxcXFxcXCLigJzigJzigJ3igJ08Zm9udCBjb2xvcj0ncmVkJz5cXFxcXFxcIiArIGxpc3QubmFtZSArIGxpc3QuY291bnQgKyBcXFxcXFxcIjwvZm9udD5cXFxcXFxcIiA6IGxpc3QubmFtZSArIGxpc3QuY291bnQsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIHVybDogJCgnI25vTG9hZGluZyMjbm9IaXN0b3J5IycpLmxhenlSdWxlKChsaXN0KSA9PiB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHNldEl0ZW0oJ+WFs+azqOWIhue7hCcsIEpTT04uc3RyaW5naWZ5KGxpc3QudGFnaWQpKTtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybiBcXFxcXFxcInRvYXN0Oi8v5YiH5o2i5YWz5rOo5YiG57uE5Li6OlxcXFxcXFwiICsgbGlzdC5uYW1lO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCB9LCBsaXN0KSxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcXFxcblxcXFxuwqAgwqAgwqAgwqAgfSk7XFxcXG5cXFxcbsKgIMKgIH0pO1xcXFxuXFxcXG7CoCDCoCAvLyDmnKvlsL7ooaXlhYXmgoTmgoTlhbPms6jliIbnu4RcXFxcblxcXFxuwqAgwqAgZC5wdXNoKHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgdGl0bGU6ICfmgoTmgoTlhbPms6gnID09IGdldEl0ZW0oJ+WFs+azqOWIhue7hCcsIEpTT04uc3RyaW5naWZ5KGZvY3VzR3JvdXBzWzBdLmlkKSkgPyBcXFxcXFxcIuKAnOKAnOKAneKAnTxmb250IGNvbG9yPSdyZWQnPuaChOaChOWFs+azqDwvZm9udD5cXFxcXFxcIiA6IFxcXFxcXFwi5oKE5oKE5YWz5rOoXFxcXFxcXCIsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIHVybDogJCgnI25vTG9hZGluZyMjbm9IaXN0b3J5IycpLmxhenlSdWxlKCgpID0+IHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgc2V0SXRlbSgn5YWz5rOo5YiG57uEJywgXFxcXFxcXCLmgoTmgoTlhbPms6hcXFxcXFxcIik7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIHJlZnJlc2hQYWdlKHRydWUpO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL+WIh+aNouWFs+azqOWIhue7hOS4ujpcXFxcXFxcIiArIFxcXFxcXFwi5oKE5oKE5YWz5rOoXFxcXFxcXCI7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIH0pLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nLFxcXFxuXFxcXG7CoCDCoCB9LHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdsaW5lJ1xcXFxuXFxcXG7CoCDCoCB9KTtcXFxcblxcXFxufVxcXFxuXFxcXG5pZiAoZ2V0SXRlbSgn5YWz5rOo5YiG57uEJyk9PSfmgoTmgoTlhbPms6gnKSB7XFxcXG5cXFxcbsKgIMKgIGdyb3VwQ29udGVudCA9IEpTT04ucGFyc2UoZmV0Y2goXFxcXFxcXCJodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9yZWxhdGlvbi93aGlzcGVycz9wbj1cXFxcXFxcIitwYWdlK1xcXFxcXFwiJnBzPTIwJmpzb25wPWpzb25wXFxcXFxcXCIsIHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgaGVhZGVyczoge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCBcXFxcXFxcIkNvb2tpZVxcXFxcXFwiOiBjb29raWVcXFxcblxcXFxuwqAgwqAgwqAgwqAgfVxcXFxuXFxcXG7CoCDCoCB9KSkuZGF0YS5saXN0O1xcXFxuXFxcXG7CoCDCoCBncm91cENvbnRlbnQuZm9yRWFjaChsaXN0ID0+IHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgZC5wdXNoKHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IFxcXFxcXFwiPGJpZz48Zm9udCBjb2xvcj0nYmx1ZSc+XFxcXFxcXCIgKyBsaXN0LnVuYW1lICsgXFxcXFxcXCI8L2ZvbnQ+PC9iaWc+PHNtYWxsPlxcXFxcXFwiICsgbGlzdC5zaWduICsgXFxcXFxcXCI8L3NtYWxsPlxcXFxcXFwiLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCBpbWc6IGxpc3QuZmFjZSArIFxcXFxcXFwiQFJlZmVyZXI9XFxcXFxcXCIsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiAnYXZhdGFyJyxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiBcXFxcXFxcImhpa2VyOi8vcGFnZS91cEhvbWVcXFxcXFxcIixcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgZXh0cmE6IHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgbWlkOiBsaXN0Lm1pZCxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IGxpc3QudW5hbWUsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGZhY2U6IGxpc3QuZmFjZVxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCB9XFxcXG5cXFxcbsKgIMKgIMKgIMKgIH0pO1xcXFxuXFxcXG7CoCDCoCB9KTtcXFxcblxcXFxufWVsc2V7XFxcXG5cXFxcbsKgIMKgIGdyb3VwQ29udGVudCA9IEpTT04ucGFyc2UoZmV0Y2goXFxcXFxcXCJodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9yZWxhdGlvbi90YWc/bWlkPVxcXFxcXFwiICsgbWlkICsgXFxcXFxcXCImdGFnaWQ9XFxcXFxcXCIgKyBnZXRJdGVtKCflhbPms6jliIbnu4QnLCBnZXRNeVZhcigndGVtcElkJykpICsgXFxcXFxcXCImcG49XFxcXFxcXCIgKyBwYWdlICsgXFxcXFxcXCImcHM9MjAmanNvbnA9anNvbnBcXFxcXFxcIiwge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBoZWFkZXJzOiB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIFxcXFxcXFwiQ29va2llXFxcXFxcXCI6IGNvb2tpZVxcXFxuXFxcXG7CoCDCoCDCoCDCoCB9XFxcXG5cXFxcbsKgIMKgIH0pKS5kYXRhO1xcXFxuXFxcXG7CoCDCoCBncm91cENvbnRlbnQuZm9yRWFjaChsaXN0ID0+IHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgZC5wdXNoKHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IFxcXFxcXFwiPGJpZz48Zm9udCBjb2xvcj0nYmx1ZSc+XFxcXFxcXCIgKyBsaXN0LnVuYW1lICsgXFxcXFxcXCI8L2ZvbnQ+PC9iaWc+PHNtYWxsPlxcXFxcXFwiICsgbGlzdC5zaWduICsgXFxcXFxcXCI8L3NtYWxsPlxcXFxcXFwiLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCBpbWc6IGxpc3QuZmFjZSArIFxcXFxcXFwiQFJlZmVyZXI9XFxcXFxcXCIsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiAnYXZhdGFyJyxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiBcXFxcXFxcImhpa2VyOi8vcGFnZS91cEhvbWVcXFxcXFxcIixcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgZXh0cmE6IHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgbWlkOiBsaXN0Lm1pZCxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IGxpc3QudW5hbWUsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGZhY2U6IGxpc3QuZmFjZVxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCB9XFxcXG5cXFxcbsKgIMKgIMKgIMKgIH0pO1xcXFxuXFxcXG7CoCDCoCB9KTtcXFxcblxcXFxufVxcXFxuXFxcXG5cXFxcblxcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIuaUtuiXj+WIl+ihqFxcXCIsXFxcInBhdGhcXFwiOlxcXCJjb2xlY3Rpb25cXFwiLFxcXCJydWxlXFxcIjpcXFwiaWYgKHBhZ2UgPT0gMSkge1xcXFxyXFxcXG4gICAgZC5wdXNoKHtcXFxcclxcXFxuICAgICAgICB0aXRsZTogJ+aIkeWIm+W7uueahOaUtuiXj+WkuScgPT0gZ2V0SXRlbSgn5pS26JeP57G75Z6LJywgJ+aIkeWIm+W7uueahOaUtuiXj+WkuScpID8gJ+KAmOKAmOKAmeKAmTxmb250IGNvbG9yPVxcXFxcXFwicmVkXFxcXFxcXCI+5oiR5Yib5bu655qE5pS26JeP5aS5PC9mb250PicgOiAn5oiR5Yib5bu655qE5pS26JeP5aS5JyxcXFxcclxcXFxuICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjI25vSGlzdG9yeSMnKS5sYXp5UnVsZSgoKSA9PiB7XFxcXHJcXFxcbiAgICAgICAgICAgIHNldEl0ZW0oJ+aUtuiXj+exu+WeiycsICfmiJHliJvlu7rnmoTmlLbol4/lpLknKVxcXFxyXFxcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKTtcXFxcclxcXFxuICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwiaGlrZXI6Ly9lbXB0eVxcXFxcXFwiO1xcXFxyXFxcXG4gICAgICAgIH0pLFxcXFxyXFxcXG4gICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXFxcclxcXFxuICAgIH0sIHtcXFxcclxcXFxuICAgICAgICB0aXRsZTogJ+eojeWQjuWcqOeciycgPT0gZ2V0SXRlbSgn5pS26JeP57G75Z6LJywgJ+aIkeWIm+W7uueahOaUtuiXj+WkuScpID8gJ+KAmOKAmOKAmeKAmTxmb250IGNvbG9yPVxcXFxcXFwicmVkXFxcXFxcXCI+56iN5ZCO5Zyo55yLPC9mb250PicgOiAn56iN5ZCO5Zyo55yLJyxcXFxcclxcXFxuICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjI25vSGlzdG9yeSMnKS5sYXp5UnVsZSgoKSA9PiB7XFxcXHJcXFxcbiAgICAgICAgICAgIHNldEl0ZW0oJ+aUtuiXj+exu+WeiycsICfnqI3lkI7lnKjnnIsnKVxcXFxyXFxcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKTtcXFxcclxcXFxuICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwiaGlrZXI6Ly9lbXB0eVxcXFxcXFwiO1xcXFxyXFxcXG4gICAgICAgIH0pLFxcXFxyXFxcXG4gICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXFxcclxcXFxuICAgIH0pO1xcXFxyXFxcXG59XFxcXHJcXFxcbmlmIChnZXRJdGVtKCfmlLbol4/nsbvlnosnLCAn5oiR5Yib5bu655qE5pS26JeP5aS5JykgPT0gJ+aIkeWIm+W7uueahOaUtuiXj+WkuScpIHtcXFxcclxcXFxuICAgIHRyeSB7XFxcXHJcXFxcbiAgICAgICAgaWYgKHBhZ2UgPT0gMSkge1xcXFxyXFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgLy8gY29sX3R5cGU6ICdibGFua19ibG9jaydcXFxcclxcXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbGluZSdcXFxcclxcXFxuICAgICAgICAgICAgfSwgKTtcXFxcclxcXFxuICAgICAgICB9XFxcXHJcXFxcbiAgICAgICAgY29sbGVjdGlvbnMgPSBKU09OLnBhcnNlKGZldGNoKFxcXFxcXFwiaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvdjMvZmF2L2ZvbGRlci9saXN0NG5hdmlnYXRlXFxcXFxcXCIsIHtcXFxcclxcXFxuICAgICAgICAgICAgaGVhZGVyczoge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgXFxcXFxcXCJDb29raWVcXFxcXFxcIjogY29va2llXFxcXHJcXFxcbiAgICAgICAgICAgIH1cXFxcclxcXFxuICAgICAgICB9KSkuZGF0YTtcXFxcclxcXFxuICAgICAgICBncm91cHMgPSBjb2xsZWN0aW9uc1swXS5tZWRpYUxpc3RSZXNwb25zZS5saXN0O1xcXFxyXFxcXG4gICAgICAgIHB1dE15VmFyKCd0ZW1wSWQnLCBKU09OLnN0cmluZ2lmeShncm91cHNbMF0uaWQpKTtcXFxcclxcXFxuICAgICAgICBncm91cHMuZm9yRWFjaChsaXN0ID0+IHtcXFxcclxcXFxuICAgICAgICAgICAgZC5wdXNoKHtcXFxcclxcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiBsaXN0LmlkID09IGdldEl0ZW0oJ+aUtuiXj+WkuScsIEpTT04uc3RyaW5naWZ5KGdyb3Vwc1swXS5pZCkpID8gXFxcXFxcXCLigJzigJzigJ3igJ08Zm9udCBjb2xvcj0ncmVkJz5cXFxcXFxcIiArIGxpc3QudGl0bGUgKyBcXFxcXFxcIjwvZm9udD5cXFxcXFxcIiA6IGxpc3QudGl0bGUsXFxcXHJcXFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjI25vSGlzdG9yeSMnKS5sYXp5UnVsZSgobGlzdCkgPT4ge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgIHNldEl0ZW0oJ+aUtuiXj+WkuScsIEpTT04uc3RyaW5naWZ5KGxpc3QuaWQpKTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL+WIh+aNouaUtuiXj+WkueS4ujpcXFxcXFxcIiArIGxpc3QudGl0bGU7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICB9LCBsaXN0KSxcXFxcclxcXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbicsXFxcXHJcXFxcbiAgICAgICAgICAgIH0pO1xcXFxyXFxcXG4gICAgICAgIH0pO1xcXFxyXFxcXG4gICAgICAgIGQucHVzaCh7XFxcXHJcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnbGluZSdcXFxcclxcXFxuICAgICAgICB9KTtcXFxcclxcXFxuICAgICAgICBncm91cENvbnRlbnQgPSBKU09OLnBhcnNlKGZldGNoKFxcXFxcXFwiaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvdjMvZmF2L3Jlc291cmNlL2xpc3Q/bWVkaWFfaWQ9XFxcXFxcXCIgKyBnZXRJdGVtKCfmlLbol4/lpLknLCBnZXRNeVZhcigndGVtcElkJykpICsgXFxcXFxcXCImcG49XFxcXFxcXCIgKyBwYWdlICsgXFxcXFxcXCImcHM9MjAma2V5d29yZD0mb3JkZXI9bXRpbWUmdHlwZT0wJnRpZD0wJnBsYXRmb3JtPXdlYiZqc29ucD1qc29ucFxcXFxcXFwiLCB7XFxcXHJcXFxcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcXFxcclxcXFxuICAgICAgICAgICAgICAgIFxcXFxcXFwiQ29va2llXFxcXFxcXCI6IGNvb2tpZVxcXFxyXFxcXG4gICAgICAgICAgICB9XFxcXHJcXFxcbiAgICAgICAgfSkpLmRhdGEubWVkaWFzO1xcXFxyXFxcXG4gICAgICAgIGdyb3VwQ29udGVudC5mb3JFYWNoKGxpc3QgPT4ge1xcXFxyXFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGxpc3QudGl0bGUsXFxcXHJcXFxcbiAgICAgICAgICAgICAgICBpbWc6IGxpc3QuY292ZXIgKyBcXFxcXFxcIkBSZWZlcmVyPVxcXFxcXFwiLFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX2xlZnRfcGljJyxcXFxcclxcXFxuICAgICAgICAgICAgICAgIHVybDogXFxcXFxcXCJoaWtlcjovL3BhZ2UvdmlkZW9cXFxcXFxcIixcXFxcclxcXFxuICAgICAgICAgICAgICAgIGRlc2M6ICdVUDonICsgbGlzdC51cHBlci5uYW1lICsgJ1xcXFxcXFxcbicgKyBsaXN0LmludHJvLFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICBhaWQ6IGxpc3QuaWQsXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgbWlkOiBsaXN0LnVwcGVyLm1pZFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgfVxcXFxyXFxcXG4gICAgICAgICAgICB9KTtcXFxcclxcXFxuICAgICAgICB9KTtcXFxcclxcXFxuICAgIH0gY2F0Y2ggKGUpIHtcXFxcclxcXFxuICAgICAgICBzaG93TG9hZGluZygn5YWE5byf77yM5L2g56Gu6K6k5L2g5pyJ5pS26JeP5ZCX77yM5b+r5Y675pS26JeP5LiA5Liq6KeG6aKRficpO1xcXFxyXFxcXG4gICAgfVxcXFxyXFxcXG59IGVsc2Uge1xcXFxyXFxcXG4gICAgbGF0ZXJWaWV3cyA9IEpTT04ucGFyc2UoZmV0Y2goXFxcXFxcXCJodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC92Mi9oaXN0b3J5L3Rvdmlldy93ZWI/anNvbnA9anNvbnBcXFxcXFxcIiwge1xcXFxyXFxcXG4gICAgICAgIGhlYWRlcnM6IHtcXFxcclxcXFxuICAgICAgICAgICAgXFxcXFxcXCJDb29raWVcXFxcXFxcIjogY29va2llXFxcXHJcXFxcbiAgICAgICAgfVxcXFxyXFxcXG4gICAgfSkpLmRhdGE7XFxcXHJcXFxcbiAgICBjb3VudCA9IGxhdGVyVmlld3MuY291bnQ7XFxcXHJcXFxcbiAgICBkLnB1c2goe1xcXFxyXFxcXG4gICAgICAgIHRpdGxlOiBcXFxcXFxcIuWFseaciVxcXFxcXFwiICsgY291bnQgKyBcXFxcXFxcIuadoeW+heeci+inhumikeiusOW9lVxcXFxcXFwiLFxcXFxyXFxcXG4gICAgICAgIHVybDogXFxcXFxcXCJoaWtlcjovL2VtcHR5XFxcXFxcXCIsXFxcXHJcXFxcbiAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwidGV4dF9jZW50ZXJfMVxcXFxcXFwiXFxcXHJcXFxcbiAgICB9KTtcXFxcclxcXFxuICAgIGxhdGVyVmlld3MubGlzdC5mb3JFYWNoKGxpc3QgPT4ge1xcXFxyXFxcXG4gICAgICAgIGQucHVzaCh7XFxcXHJcXFxcbiAgICAgICAgICAgIHRpdGxlOiBsaXN0LnRpdGxlLFxcXFxyXFxcXG4gICAgICAgICAgICBpbWc6IGxpc3QucGljICsgXFxcXFxcXCJAUmVmZXJlcj1cXFxcXFxcIixcXFxcclxcXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX2xlZnRfcGljJyxcXFxcclxcXFxuICAgICAgICAgICAgdXJsOiBcXFxcXFxcImhpa2VyOi8vcGFnZS92aWRlb1xcXFxcXFwiLFxcXFxyXFxcXG4gICAgICAgICAgICBkZXNjOiAnVVA6JyArIGxpc3Qub3duZXIubmFtZSArICdcXFxcXFxcXG4nICsgbGlzdC5kZXNjLFxcXFxyXFxcXG4gICAgICAgICAgICBleHRyYToge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgYWlkOiBsaXN0LmFpZCxcXFxcclxcXFxuICAgICAgICAgICAgICAgIG1pZDogbGlzdC5vd25lci5taWRcXFxcclxcXFxuICAgICAgICAgICAgfVxcXFxyXFxcXG4gICAgICAgIH0pO1xcXFxyXFxcXG4gICAgfSk7XFxcXHJcXFxcbn1cXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLotrPov7lcXFwiLFxcXCJwYXRoXFxcIjpcXFwidHJhY2tcXFwiLFxcXCJydWxlXFxcIjpcXFwidmFyIG5leHRJbmZvID0ge307XFxcXG5cXFxcbmlmIChwYWdlID09IDEpIHtcXFxcblxcXFxuwqAgwqAgaGlzdG9yaWVzID0gSlNPTi5wYXJzZShmZXRjaChcXFxcXFxcImh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2UvaGlzdG9yeS9jdXJzb3I/bWF4PTAmdmlld19hdD0wJmJ1c2luZXNzPVxcXFxcXFwiLCB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIGhlYWRlcnM6IHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgXFxcXFxcXCJDb29raWVcXFxcXFxcIjogY29va2llXFxcXG5cXFxcbsKgIMKgIMKgIMKgIH1cXFxcblxcXFxuwqAgwqAgfSkpLmRhdGE7XFxcXG5cXFxcbsKgIMKgIG5leHRJbmZvLm1heCA9IGhpc3Rvcmllcy5jdXJzb3IubWF4O1xcXFxuXFxcXG7CoCDCoCBuZXh0SW5mby52aWV3X2F0ID0gaGlzdG9yaWVzLmN1cnNvci52aWV3X2F0O1xcXFxuXFxcXG7CoCDCoCBuZXh0SW5mby5idXNpbmVzcyA9IGhpc3Rvcmllcy5jdXJzb3IuYnVzaW5lc3M7XFxcXG5cXFxcbn0gZWxzZSB7XFxcXG5cXFxcbsKgIMKgIGhpc3RvcmllcyA9IEpTT04ucGFyc2UoZmV0Y2goXFxcXFxcXCJodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL2hpc3RvcnkvY3Vyc29yP21heD1cXFxcXFxcIiArIHN0b3JhZ2UwLmdldE15VmFyKEpTT04uc3RyaW5naWZ5KHBhZ2UpKS5tYXggKyBcXFxcXFxcIiZ2aWV3X2F0PVxcXFxcXFwiICsgc3RvcmFnZTAuZ2V0TXlWYXIoSlNPTi5zdHJpbmdpZnkocGFnZSkpLnZpZXdfYXQgKyBcXFxcXFxcIiZidXNpbmVzcz1cXFxcXFxcIiArIHN0b3JhZ2UwLmdldE15VmFyKEpTT04uc3RyaW5naWZ5KHBhZ2UpKS5idXNpbmVzcywge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBoZWFkZXJzOiB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIFxcXFxcXFwiQ29va2llXFxcXFxcXCI6IGNvb2tpZVxcXFxuXFxcXG7CoCDCoCDCoCDCoCB9XFxcXG5cXFxcbsKgIMKgIH0pKS5kYXRhO1xcXFxuXFxcXG7CoCDCoCBuZXh0SW5mby5tYXggPSBoaXN0b3JpZXMuY3Vyc29yLm1heDtcXFxcblxcXFxuwqAgwqAgbmV4dEluZm8udmlld19hdCA9IGhpc3Rvcmllcy5jdXJzb3Iudmlld19hdDtcXFxcblxcXFxuwqAgwqAgbmV4dEluZm8uYnVzaW5lc3MgPSBoaXN0b3JpZXMuY3Vyc29yLmJ1c2luZXNzO1xcXFxuXFxcXG59XFxcXG5cXFxcbnN0b3JhZ2UwLnB1dE15VmFyKEpTT04uc3RyaW5naWZ5KHBhZ2UgKyAxKSwgbmV4dEluZm8pO1xcXFxuXFxcXG5oaXN0b3JpZXMubGlzdC5mb3JFYWNoKGxpc3QgPT4ge1xcXFxuXFxcXG7CoCDCoCB2aWV3VGltZT1wYnRpbWUgPSAkLnJlcXVpcmUoXFxcXFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcXFxcXCIpLnRpbWVDb252ZXJ0KGxpc3Qudmlld19hdCk7XFxcXG5cXFxcbsKgIMKgIGlmIChsaXN0Lmhpc3RvcnkuYnVzaW5lc3MgPT0gJ2FydGljbGUnKSB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIC8vIOS4k+agj+aWh+eroFxcXFxuXFxcXG7CoCDCoCDCoCDCoCBkLnB1c2goe1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogbGlzdC5zaG93X3RpdGxlPT0nJz9saXN0LnRpdGxlOmxpc3Quc2hvd190aXRsZSxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgaW1nOiBsaXN0LmNvdmVyc1swXSArIFxcXFxcXFwiQFJlZmVyZXI9XFxcXFxcXCIsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiAnbW92aWVfMV9sZWZ0X3BpYycsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIHVybDogXFxcXFxcXCJoaWtlcjovL3BhZ2UvYXJ0aWNsZURldGFpbFxcXFxcXFwiLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCBkZXNjOiAobGlzdC5hdXRob3JfbmFtZT09Jyc/dmlld1RpbWU6J1VQOicgKyBsaXN0LmF1dGhvcl9uYW1lKydcXFxcXFxcXG4nICkrIHZpZXdUaW1lLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCBleHRyYToge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZDogbGlzdC5oaXN0b3J5Lm9pZCxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgfVxcXFxuXFxcXG7CoCDCoCDCoCDCoCB9KTtcXFxcblxcXFxuwqAgwqAgfSBlbHNlIGlmKGxpc3QuaGlzdG9yeS5idXNpbmVzcyA9PSAnYXJ0aWNsZS1saXN0Jyl7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIC8vIOaWh+eroOWIl+ihqO+8n++8iOWPjeato2lk5a2Y5pS+5L2N572u5LiN5LiA5qC377yJXFxcXG5cXFxcbsKgIMKgIMKgIMKgIGQucHVzaCh7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBsaXN0LnNob3dfdGl0bGU9PScnP2xpc3QudGl0bGU6bGlzdC5zaG93X3RpdGxlLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCBpbWc6IGxpc3QuY292ZXJzWzBdICsgXFxcXFxcXCJAUmVmZXJlcj1cXFxcXFxcIixcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdtb3ZpZV8xX2xlZnRfcGljJyxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiBcXFxcXFxcImhpa2VyOi8vcGFnZS9hcnRpY2xlRGV0YWlsXFxcXFxcXCIsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIGRlc2M6IChsaXN0LmF1dGhvcl9uYW1lPT0nJz92aWV3VGltZTonVVA6JyArIGxpc3QuYXV0aG9yX25hbWUrJ1xcXFxcXFxcbicgKSsgdmlld1RpbWUsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIGV4dHJhOiB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlkOiBsaXN0Lmhpc3RvcnkuY2lkLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCB9XFxcXG5cXFxcbsKgIMKgIMKgIMKgIH0pO1xcXFxuXFxcXG7CoCDCoCB9ZWxzZSBpZihsaXN0Lmhpc3RvcnkuYnVzaW5lc3MgPT0gJ3BnYycpe1xcXFxuXFxcXG7CoCDCoCDCoCDCoCAvLyDns7vliJfliafpm4bvvIjljZXpm4bvvIlcXFxcblxcXFxuwqAgwqAgwqAgwqAgZC5wdXNoKHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IGxpc3Quc2hvd190aXRsZT09Jyc/bGlzdC50aXRsZTpsaXN0LnNob3dfdGl0bGUsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIGltZzogbGlzdC5jb3ZlciArIFxcXFxcXFwiQFJlZmVyZXI9XFxcXFxcXCIsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiAnbW92aWVfMV9sZWZ0X3BpYycsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIHVybDogXFxcXFxcXCJoaWtlcjovL3BhZ2UvZmlsbWVyamkjaW1tZXJzaXZlVGhlbWUjXFxcXFxcXCIsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIGRlc2M6IChsaXN0LmF1dGhvcl9uYW1lPT0nJz9saXN0LnRhZ19uYW1lKydcXFxcXFxcXHRcXFxcXFxcXHQnK2xpc3QubmV3X2Rlc2MrJ1xcXFxcXFxcbicrdmlld1RpbWU6J1VQOicgKyBsaXN0LmF1dGhvcl9uYW1lKydcXFxcXFxcXG4nK3ZpZXdUaW1lKSxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgZXh0cmE6IHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZXBfaWQ6bGlzdC5oaXN0b3J5LmVwaWRcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgfVxcXFxuXFxcXG7CoCDCoCDCoCDCoCB9KTtcXFxcblxcXFxuwqAgwqAgfWVsc2Uge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCAvLyDmma7pgJp2aWRlb1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBkLnB1c2goe1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogbGlzdC5zaG93X3RpdGxlPT0nJz9saXN0LnRpdGxlOmxpc3Quc2hvd190aXRsZSxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgaW1nOiBsaXN0LmNvdmVyICsgXFxcXFxcXCJAUmVmZXJlcj1cXFxcXFxcIixcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdtb3ZpZV8xX2xlZnRfcGljJyxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiBcXFxcXFxcImhpa2VyOi8vcGFnZS92aWRlb1xcXFxcXFwiLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCBkZXNjOiAobGlzdC5hdXRob3JfbmFtZT09Jyc/bGlzdC50YWdfbmFtZSsnXFxcXFxcXFx0XFxcXFxcXFx0JytsaXN0Lm5ld19kZXNjKydcXFxcXFxcXG4nK3ZpZXdUaW1lOidVUDonICsgbGlzdC5hdXRob3JfbmFtZSsnXFxcXFxcXFxuJyt2aWV3VGltZSksXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIGV4dHJhOiB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGFpZDogbGlzdC5oaXN0b3J5Lm9pZCxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgfVxcXFxuXFxcXG7CoCDCoCDCoCDCoCB9KTtcXFxcblxcXFxuwqAgwqAgfVxcXFxuXFxcXG59KTtcXFxcblxcXFxuXFxcXG5cXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLliqjmgIFcXFwiLFxcXCJwYXRoXFxcIjpcXFwibGF0ZXROZXdzXFxcIixcXFwicnVsZVxcXCI6XFxcImQucHVzaCh7XFxcXG5cXFxcbsKgIMKgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXFxcblxcXFxufSk7XFxcXG5cXFxcbmxhdGVuZXdzPSQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vcGFnZS9hcGlcXFxcXFxcIikuZ2V0RHluYW1pY0RhdGEoJ215SG9tZScpO1xcXFxuXFxcXG5ldmFsKCQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vcGFnZS9hcGlcXFxcXFxcIikuc2hvd0R5bmFtaWNEYXRhKCkpO1xcXFxuXFxcXG5cXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLkuJPmoI/liJfooahcXFwiLFxcXCJwYXRoXFxcIjpcXFwiYWN0aWNsZUxpc3RcXFwiLFxcXCJydWxlXFxcIjpcXFwianM6XFxcXG5cXFxcbnZhciBkPVtdO1xcXFxuXFxcXG5wYWdlPU1ZX1BBR0U7XFxcXG5cXFxcbnVwTWlkID0gTVlfUEFSQU1TLm1pZCArIFxcXFxcXFwiXFxcXFxcXCI7XFxcXG5cXFxcbmFydGljbGVMaXN0PSQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vcGFnZS9hcGlcXFxcXFxcIikuZ2V0VXNlckFydGljbGUodXBNaWQscGFnZSk7XFxcXG5cXFxcbmFydGljbGVOdW09YXJ0aWNsZUxpc3QuY291bnQ7XFxcXG5cXFxcbmlmIChhcnRpY2xlTnVtPT11bmRlZmluZWQpIHtcXFxcblxcXFxuwqAgwqAgZC5wdXNoKHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgdGl0bGU6ICfov5l1cOayoeacieS4k+agj+aWh+eroCcsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIHVybDogXFxcXFxcXCJoaWtlcjovL2VtcHR5XFxcXFxcXCIsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIGNvbF90eXBlOiBcXFxcXFxcInRleHRfY2VudGVyXzFcXFxcXFxcIixcXFxcblxcXFxuwqAgwqAgfSk7XFxcXG5cXFxcbn1lbHNle1xcXFxuXFxcXG7CoCDCoCBtYXhQYWdlID0gTWF0aC5jZWlsKGFydGljbGVOdW0gLyBhcnRpY2xlTGlzdC5wcyk7XFxcXG5cXFxcbsKgIMKgIGlmIChwYWdlIDw9IG1heFBhZ2UpIHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgZC5wdXNoKHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6ICflvZPliY0656ysJyArIGFydGljbGVMaXN0LnBuICsgJ+mhtVxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdOWFseaciScgKyBtYXhQYWdlICsgJ+mhtSwnICsgYXJ0aWNsZU51bSArICfmnaHmlbDmja4nLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCB1cmw6IFxcXFxcXFwiaGlrZXI6Ly9lbXB0eVxcXFxcXFwiLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogXFxcXFxcXCJ0ZXh0X2NlbnRlcl8xXFxcXFxcXCIsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIH0pO1xcXFxuXFxcXG7CoCDCoCDCoCDCoCBhcnRpY2xlTGlzdC5hcnRpY2xlcy5mb3JFYWNoKGxpc3QgPT4ge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCBwYnRpbWU9JC5yZXF1aXJlKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXFxcXFwiKS50aW1lQ29udmVydChsaXN0LnB1Ymxpc2hfdGltZSk7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIGQucHVzaCh7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBsaXN0LnRpdGxlLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpbWc6IGxpc3QuYmFubmVyX3VybD09Jyc/IChsaXN0LmltYWdlX3VybHMrICdAUmVmZXJlcj0nKToobGlzdC5iYW5uZXJfdXJsKyAnQFJlZmVyZXI9JyksXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGRlc2M6ICfigJjigJjigJnigJk8c21hbGw+JytsaXN0LnN0YXRzLnZpZXcrJ+eci+i/h1xcXFxcXFxcdFxcXFxcXFxcdCcrbGlzdC5zdGF0cy5saWtlKyfllpzmrKJcXFxcXFxcXHRcXFxcXFxcXHQnK2xpc3Quc3RhdHMuZmF2b3JpdGUrJ+aUtuiXj1xcXFxcXFxcbicgKyBwYnRpbWUrJzwvc21hbGw+JyxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdtb3ZpZV8xX2xlZnRfcGljJyxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiBcXFxcXFxcImhpa2VyOi8vcGFnZS9hcnRpY2xlRGV0YWlsXFxcXFxcXCIsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGV4dHJhOiB7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIC8vIOS4k+agj+aWh+eroGlkXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlkOiBsaXN0LmlkXFxcXG5cXFxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH1cXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxcXG5cXFxcbsKgIMKgIMKgIMKgIH0pO1xcXFxuXFxcXG7CoCDCoCB9XFxcXG5cXFxcbn1cXFxcblxcXFxuc2V0UmVzdWx0KGQpO1xcXFxuXFxcXG5cXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLkuJPmoI/mlofnq6BYNVxcXCIsXFxcInBhdGhcXFwiOlxcXCJhcnRpY2xlRGV0YWlsXFxcIixcXFwicnVsZVxcXCI6XFxcImpzOlxcXFxuXFxcXG52YXIgZCA9IFtdO1xcXFxuXFxcXG5wYWdlID0gTVlfUEFHRTtcXFxcblxcXFxuY3ZpZCA9IE1ZX1BBUkFNUy5pZCArIFxcXFxcXFwiXFxcXFxcXCI7XFxcXG5cXFxcbmQucHVzaCh7XFxcXG5cXFxcbsKgIMKgIHVybDogXFxcXFxcXCJodHRwczovL3d3dy5iaWxpYmlsaS5jb20vcmVhZC9jdlxcXFxcXFwiK2N2aWQsXFxcXG5cXFxcbsKgIMKgIGNvbF90eXBlOiBcXFxcXFxcIng1X3dlYnZpZXdfc2luZ2xlXFxcXFxcXCIsXFxcXG5cXFxcbsKgIMKgIGRlc2M6IFxcXFxcXFwiMTAwJSYmZmxvYXRcXFxcXFxcIixcXFxcblxcXFxuwqAgwqAgZXh0cmE6IHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgY2FuQmFjazogdHJ1ZVxcXFxuXFxcXG7CoCDCoCB9XFxcXG5cXFxcbn0pXFxcXG5cXFxcbnNldFJlc3VsdChkKTtcXFxcblxcXFxuXFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi57u85ZCI54Ot6ZeoXFxcIixcXFwicGF0aFxcXCI6XFxcImhvdFZpZGVvXFxcIixcXFwicnVsZVxcXCI6XFxcImxldCByZXMgPSBKU09OLnBhcnNlKHJlcXVlc3QoXFxcXFxcXCJodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3BvcHVsYXI/cG49XFxcXFxcXCIgKyBNWV9QQUdFLCB7XFxcXG5cXFxcbsKgIMKgIGhlYWRlcnM6IHtcXFxcblxcXFxuwqAgwqAgwqAgwqAgQ29va2llOiBKU09OLnBhcnNlKHJlcXVlc3QoXFxcXFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2JpbGkudHh0XFxcXFxcXCIpKS5jb29raWVcXFxcblxcXFxuwqAgwqAgfVxcXFxuXFxcXG59KSkuZGF0YVxcXFxuXFxcXG5yZXMubGlzdC5mb3JFYWNoKGl0ZW0gPT4ge1xcXFxuXFxcXG7CoCDCoCBkLnB1c2goe1xcXFxuXFxcXG7CoCDCoCDCoCDCoCB0aXRsZTogaXRlbS50aXRsZSxcXFxcblxcXFxuwqAgwqAgwqAgwqAgaW1nOiBpdGVtLnBpYysgXFxcXFxcXCJAUmVmZXJlcj1cXFxcXFxcIixcXFxcblxcXFxuwqAgwqAgwqAgwqAgdXJsOiBcXFxcXFxcImhpa2VyOi8vcGFnZS92aWRlb1xcXFxcXFwiLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCBkZXNjOiBpdGVtLnB1Yl9sb2NhdGlvbixcXFxcblxcXFxuwqAgwqAgwqAgwqAgY29sX3R5cGU6IFxcXFxcXFwibW92aWVfMlxcXFxcXFwiLFxcXFxuXFxcXG7CoCDCoCDCoCDCoCBleHRyYToge1xcXFxuXFxcXG7CoCDCoCDCoCDCoCDCoCDCoCBcXFxcXFxcImFpZFxcXFxcXFwiOiBpdGVtLmFpZCxcXFxcblxcXFxuwqAgwqAgwqAgwqAgwqAgwqAgXFxcXFxcXCJjaWRcXFxcXFxcIjogaXRlbS5jaWQsXFxcXG5cXFxcbsKgIMKgIMKgIMKgIH1cXFxcblxcXFxuwqAgwqAgfSlcXFxcblxcXFxufSlcXFxcblxcXFxuXFxcXG5cXFwifV1cIixcInByb3h5XCI6XCJcIn0iLCJwaWNVcmwiOiJodHRwOi8vaTAuaGRzbGIuY29tL2Jmcy9hcmNoaXZlL2YzNDlhZDZkYzc5NWVjYjAwZDVlOWMwYmY1YzM2NzllMGQ0YjQ2YzguanBnQFJlZmVyZXI9IiwidGl0bGUiOiLjgJDlsIHojJflm6foj4zjgJHku4rmmZrmnIjoibLvvIzmiZHmnJTov7fnprvoiKzjgIrmnKbog6fjgIsifQ==
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement