Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:二级页面详情¥page_detail¥砂锅老母鸡汤,超简单教程~!@@eyJkYXRhIjoie1wiYXNzb2NpYXRlZE1vZGVsc01hcEZvckpvaW5UYWJsZVwiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhGS1wiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhvdXRGS1wiOnt9LFwiZGlzcGxheU5hbWVcIjpcIuWOqOWog1JcIixcImZpZWxkc1RvU2V0VG9EZWZhdWx0XCI6W10sXCJpZFwiOjAsXCJsYXN0X2NoYXB0ZXJfcnVsZVwiOlwiXCIsXCJsaXN0VG9DbGVhckFzc29jaWF0ZWRGS1wiOltdLFwibGlzdFRvQ2xlYXJTZWxmRktcIjpbXSxcInBhZ2VMaXN0XCI6W3tcImNvbF90eXBlXCI6XCJyaWNoX3RleHRcIixcIm5hbWVcIjpcIuiPnOWNleWIl+ihqFwiLFwicGF0aFwiOlwibWVudVwiLFwicnVsZVwiOlwianM6XFxuZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoXFxcImhpa2VyOi8vcGFnZS9yaWNodGV4dFxcXCIpKS5ydWxlKVxcbmV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KFxcXCJoaWtlcjovL3BhZ2Uvc2V0dGluZ3NcXFwiKSkucnVsZSlcXG5cXG52YXIgcmVzID0ge307XFxudmFyIGQgPSBbXTtcXG52YXIgaHRtbCA9IGdldFJlc0NvZGUoKTtcXG52YXIgdXJsU3BsaXRzID0gTVlfVVJMLnNwbGl0KCc/cGFnZT0nKTtcXG52YXIgcGFnZSA9IDE7XFxudHJ5IHtcXG4gICAgbGV0IHBhZ2VUZW1wID0gcGFyc2VJbnQodXJsU3BsaXRzWzFdKTtcXG4gICAgcGFnZSA9IGlzTmFOKHBhZ2VUZW1wKSA9PT0gdHJ1ZSA/IHBhZ2UgOiBwYWdlVGVtcDtcXG59IGNhdGNoIChlKSB7fVxcblxcbnRyeSB7XFxuICAgIGxldCBtYWluSHRtbCA9IHBhcnNlRG9tRm9ySHRtbChodG1sLCAnLm1haW4tcGFuZWwmJkh0bWwnKTtcXG5cXG4gICAgaWYgKHBhZ2UgPT09IDEpIHtcXG4gICAgICAgIC8qKlxcbiAgICAgICAgICogaGVhZGVyXFxuICAgICAgICAgKi9cXG4gICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgbGV0IGhlYWRlclRpdGxlID0gZ2V0QmlnVGV4dChnZXRTdHJvbmdUZXh0KHBhcnNlRG9tRm9ySHRtbChtYWluSHRtbCwgJ2gxJiZUZXh0JykpKSArXFxuICAgICAgICAgICAgICAgICcgJyArIGdldFNtYWxsVGV4dChnZXRBZGRyZXNzVGFnKE1ZX1VSTCwgJ1vmn6XnnIvljp/mloddJykpO1xcbiAgICAgICAgICAgIGxldCBoZWFkZXJIdG1sID0gcGFyc2VEb21Gb3JIdG1sKG1haW5IdG1sLCAnLnJsLXN1bW1hcnkmJkh0bWwnKTtcXG4gICAgICAgICAgICBsZXQgY29sbGVjdGlvbkNvdW50ID0gJzxicj4nICsgZ2V0U21hbGxUZXh0KHBhcnNlRG9tRm9ySHRtbChoZWFkZXJIdG1sLCAnLnN0YXRzJiZUZXh0JykpO1xcbiAgICAgICAgICAgIGxldCB0aW1lID0gJyAnICsgZ2V0U21hbGxUZXh0KGdldEdyZXlUZXh0KHBhcnNlRG9tRm9ySHRtbChoZWFkZXJIdG1sLCAnLnRpbWUmJlRleHQnKSkpO1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBoZWFkZXJUaXRsZSArIGNvbGxlY3Rpb25Db3VudCArIHRpbWVcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmUnXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgbGV0IGF1dGhvciA9IGdldEF1dGhvclRleHQocGFyc2VEb21Gb3JIdG1sKGhlYWRlckh0bWwsICcuYXZhdGFyLWxpbmsmJlRleHQnKSk7XFxuICAgICAgICAgICAgbGV0IGRlc2MgPSAnPGJyPicgKyBwYXJzZURvbUZvckh0bWwoaGVhZGVySHRtbCwgJy5kZXNjJiZUZXh0Jyk7XFxuICAgICAgICAgICAgbGV0IG1ldGEgPSBnZXRCbG9ja3F1b3RlVGV4dChhdXRob3IgKyBkZXNjKTtcXG4gICAgICAgICAgICBpZiAobW9kZWxfbGluZV9oZWlnaHQgPiAwKSB7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogbWV0YSArIGdldEdyZXlUZXh0KGNvbnRlbnRUaXBzKVxcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtb2RlbF9saW5lX2hlaWdodDsgaSsrKSB7XFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBtZXRhXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0gY2F0Y2ggKGUpIHt9XFxuICAgIH1cXG4gICAgLyoqXFxuICAgICAqIOato+aWh1xcbiAgICAgKi9cXG4gICAgdHJ5IHtcXG4gICAgICAgIGxldCBjb250ZW50c0h0bWwgPSBwYXJzZURvbUZvckh0bWwoaHRtbCwgJy5ybC1yZWNpcGVzJiZIdG1sJyk7XFxuICAgICAgICBpZiAocGFnZSA9PT0gMSkge1xcbiAgICAgICAgICAgIGxldCBjb250ZW50VGl0bGUgPSBnZXRCaWdUZXh0KHBhcnNlRG9tRm9ySHRtbChjb250ZW50c0h0bWwsICcuYmxvY2stdGl0bGUmJlRleHQnKSk7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGNvbnRlbnRUaXRsZVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICAgICAgbGV0IGNvbnRlbnRzSHRtbEFycmF5ID0gcGFyc2VEb21Gb3JBcnJheShjb250ZW50c0h0bWwsICcubm9ybWFsLXJlY2lwZS1saXN0JiZsaScpO1xcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb250ZW50c0h0bWxBcnJheS5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgIGxldCBjb250ZW50SXRlbUh0bWwgPSBjb250ZW50c0h0bWxBcnJheVtpXTtcXG4gICAgICAgICAgICBsZXQgY292ZXIgPSBwYXJzZURvbUZvckh0bWwoY29udGVudEl0ZW1IdG1sLCAnLmNvdmVyJiZpbWcmJmRhdGEtc3JjJyk7XFxuICAgICAgICAgICAgbGV0IHRpdGxlID0gcGFyc2VEb21Gb3JIdG1sKGNvbnRlbnRJdGVtSHRtbCwgJy5pbmZvJiYubmFtZSYmVGV4dCcpO1xcbiAgICAgICAgICAgIGxldCBkZXNjID0gcGFyc2VEb21Gb3JIdG1sKGNvbnRlbnRJdGVtSHRtbCwgJy5zdGF0cyYmVGV4dCcpO1xcbiAgICAgICAgICAgIGxldCB1cmwgPSBwYXJzZURvbShjb250ZW50SXRlbUh0bWwsICdhJiZocmVmJyk7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRpdGxlLFxcbiAgICAgICAgICAgICAgICBwaWNfdXJsOiBjb3ZlcixcXG4gICAgICAgICAgICAgICAgZGVzYzogZGVzYyxcXG4gICAgICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9XFxcIiArIHVybC5yZXBsYWNlKC9cXFxcPy8sIFxcXCLvvJ/vvJ9cXFwiKSArIFxcXCLvvJvvvJtnZXTvvJvvvJt1dGYtOO+8m++8m3tVc2VyLUFnZW50QE1vemlsbGEgNS4wfVxcXCJcXG5cXG4vKiQodXJsKS5ydWxlKCgpPT5ldmFsKEpTT04ucGFyc2UocmVxdWVzdChcXFwiaGlrZXI6Ly9wYWdlL2RldGFpbFxcXCIpKS5ydWxlKSkqLyxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xJ1xcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9XFxuICAgIH0gY2F0Y2ggKGUpIHt9XFxufSBjYXRjaCAoZSkge31cXG5cXG5cXG5yZXMuZGF0YSA9IGQ7XFxuc2V0SG9tZVJlc3VsdChyZXMpO1wifSx7XCJjb2xfdHlwZVwiOlwicmljaF90ZXh0XCIsXCJuYW1lXCI6XCLoj5zosLHor6bmg4VcIixcInBhdGhcIjpcImRldGFpbFwiLFwicnVsZVwiOlwianM6XFxudmFyIHJlcyA9IHt9O1xcbnZhciBkID0gW107XFxudmFyIGh0bWwgPSBnZXRSZXNDb2RlKCk7XFxubG9nKGh0bWwpXFxuLyp2YXIgdXJsU3BsaXRzID0gTVlfVVJMLnNwbGl0KCc/cGFnZT0nKTtcXG52YXIgcGFnZSA9IDE7XFxudHJ5IHtcXG4gICAgbGV0IHBhZ2VUZW1wID0gcGFyc2VJbnQodXJsU3BsaXRzWzFdKTtcXG4gICAgcGFnZSA9IGlzTmFOKHBhZ2VUZW1wKSA9PT0gdHJ1ZSA/IHBhZ2UgOiBwYWdlVGVtcDtcXG59IGNhdGNoIChlKSB7fSovXFxuXFxuZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoXFxcImhpa2VyOi8vcGFnZS9zZXR0aW5nc1xcXCIpKS5ydWxlKVxcblxcbmV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KFxcXCJoaWtlcjovL3BhZ2UvcmljaHRleHRcXFwiKSkucnVsZSlcXG5cXG5TdHJpbmcucHJvdG90eXBlLnJlcGxhY2VXaXRoQ2FsbGJhY2sgPSBmdW5jdGlvbihzZWFyY2hWYWx1ZSwgcmVwbGFjZVZhbHVlLCBjYWxsYmFjaykge1xcbiAgICBsZXQgcmV0dXJuVmFsdWUgPSB0aGlzO1xcbiAgICBpZiAoY2FsbGJhY2sgIT0gbnVsbCkge1xcbiAgICAgICAgcmV0dXJuVmFsdWUgPSBjYWxsYmFjayh0aGlzLCBzZWFyY2hWYWx1ZSwgcmVwbGFjZVZhbHVlKTtcXG4gICAgfVxcbiAgICByZXR1cm4gcmV0dXJuVmFsdWU7XFxufTtcXG5cXG5sZXQgaW1nRXJyb3IgPSAnPGZvbnQgY29sb3I9XFxcImdyZXlcXFwiPuWbvueJh+aaguaXtuaXoOazleaYvuekuu+8jOiLpeimgeafpeeci+ivtzxhIGhyZWY9XFxcIicgKyBNWV9VUkwgKyAnXFxcIj7orr/pl67ljp/mloc8L2E+PC9mb250Pic7XFxuXFxuZnVuY3Rpb24gaW1nVGFnKGNvbnRleHQsIHNvdXJjZVRhZywgaW1nVXJsKSB7XFxuICAgIGlmICgvKHdcXFxcLyhcXFxcZCspXFxcXC9pbnRlcmxhY2UpLy50ZXN0KGltZ1VybCkgPT09IHRydWUpIHtcXG4gICAgICAgIGxldCB1cmwgPSBSZWdFeHAuJDE7XFxuICAgICAgICAvLyBsb2coc291cmNlVGFnKVxcbiAgICAgICAgc291cmNlVGFnID0gc291cmNlVGFnLnJlcGxhY2UodXJsLCAndy8nICsgaW1nV2lkdGggKyAnL2ludGVybGFjZScpO1xcbiAgICAgICAgLy8gbG9nKHNvdXJjZVRhZylcXG4gICAgfVxcbiAgICBsZXQgcmVwbGFjZVN0cmluZyA9IHNvdXJjZVRhZztcXG4gICAgbGV0IHJlcGxhY2VTdHJpbmcxID0gaW1nVXJsID09PSAnJyA/XFxuICAgICAgICBpbWdFcnJvciA6XFxuICAgICAgICAoJzxhIGhyZWY9XFxcIicgKyBpbWdVcmwgKyAnXFxcIj4nICtcXG4gICAgICAgICAgICAoaGlkZUltZyA9PT0gMSA/ICdb54K55Ye75p+l55yL5aSn5Zu+XScgOiAn5Zu+54mH5peg5rOV5Yqg6L2977yf54K55oiR6K+V6K+VficpICtcXG4gICAgICAgICAgICAnPC9hPicpO1xcbiAgICBpZiAoc2hvd0Z1bGxJbWdUaXBzKSB7XFxuICAgICAgICByZXBsYWNlU3RyaW5nICs9ICgnPGJyPicgKyBnZXRTbWFsbFRleHQocmVwbGFjZVN0cmluZzEpKTtcXG4gICAgfVxcbiAgICBpZiAoaGlkZUltZykge1xcbiAgICAgICAgcmVwbGFjZVN0cmluZyA9IHJlcGxhY2VTdHJpbmcxO1xcbiAgICB9XFxuICAgIHJldHVybiBjb250ZXh0LnJlcGxhY2UoLzxpbWcgZGF0YS12Pi9nLCByZXBsYWNlU3RyaW5nKTtcXG59XFxuXFxuZnVuY3Rpb24gaW1nVGFnUmVwbGFjZW1lbnQyKGNvbnRleHQsIHNlYXJjaFZhbHVlLCByZXBsYWNlVmFsdWUpIHtcXG4gICAgbGV0IG1hdGNoQXJyYXkgPSBjb250ZXh0Lm1hdGNoKHNlYXJjaFZhbHVlKTtcXG4gICAgbGV0IHJldHVyblZhbHVlID0gY29udGV4dDtcXG4gICAgLy8gbG9nKG1hdGNoQXJyYXkpXFxuICAgIGlmIChtYXRjaEFycmF5ICE9IG51bGwpIHtcXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0Y2hBcnJheS5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgIGxldCBpdGVtID0gbWF0Y2hBcnJheVtpXTtcXG4gICAgICAgICAgICAvLyBsb2coaXRlbSk7XFxuICAgICAgICAgICAgLyg8aW1nIChzcmN8ZGF0YS1zcmMpPVxcXCIoLio/KVxcXCIoW1xcXFxzXFxcXFNdKj8pPikvLnRlc3QoaXRlbSk7XFxuICAgICAgICAgICAgbGV0IGltZ1VybCA9IFJlZ0V4cC4kMztcXG4gICAgICAgICAgICBpZiAoaW1nVXJsICE9PSAnJykge1xcbiAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IHJldHVyblZhbHVlLnJlcGxhY2UoaXRlbSwgcmVwbGFjZVZhbHVlKTtcXG4gICAgICAgICAgICAgICAgbGV0IHRhZyA9IGl0ZW07XFxuICAgICAgICAgICAgICAgIC8vIGxvZyh0YWcpXFxuICAgICAgICAgICAgICAgIHJldHVyblZhbHVlID0gaW1nVGFnKHJldHVyblZhbHVlLCB0YWcsIGltZ1VybCk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICB9XFxuICAgIHJldHVybiByZXR1cm5WYWx1ZTtcXG59XFxuXFxudHJ5IHtcXG4gICAgbGV0IG1haW5IdG1sID0gcGFyc2VEb21Gb3JIdG1sKGh0bWwsICcubWFpbi1wYW5lbCYmSHRtbCcpO1xcbiAgICAvKipcXG4gICAgICogaGVhZGVyXFxuICAgICAqL1xcbiAgICB0cnkge1xcbiAgICAgICAgbGV0IGhlYWRlclRpdGxlID0gZ2V0QmlnVGV4dChnZXRTdHJvbmdUZXh0KHBhcnNlRG9tRm9ySHRtbChtYWluSHRtbCwgJ2gxJiZUZXh0JykpKSArXFxuICAgICAgICAgICAgJyAnICsgZ2V0U21hbGxUZXh0KGdldEFkZHJlc3NUYWcoTVlfVVJMLCAnW+afpeeci+WOn+aWh10nKSk7XFxuICAgICAgICBsZXQgdGFncyA9ICcnO1xcbiAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICBsZXQgaGVhZGVyVGFnc0h0bWwgPSBwYXJzZURvbUZvckh0bWwoaHRtbCwgJy5yZWNpcGUtdGFncyYmSHRtbCcpO1xcbiAgICAgICAgICAgIGxldCB0YWdzSHRtbEFycmF5ID0gcGFyc2VEb21Gb3JBcnJheShoZWFkZXJUYWdzSHRtbCwgJy5yZWNpcGUtY2F0cyYmYScpO1xcbiAgICAgICAgICAgIC8vIHNldEVycm9yKEpTT04uc3RyaW5naWZ5KHRhZ3NIdG1sQXJyYXkpKTtcXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRhZ3NIdG1sQXJyYXkubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICAgICAgbGV0IHRhZ0h0bWwgPSB0YWdzSHRtbEFycmF5W2ldO1xcbiAgICAgICAgICAgICAgICBsZXQgdGFnID0gZ2V0Q29kZVRleHQocGFyc2VEb21Gb3JIdG1sKHRhZ0h0bWwsICdUZXh0JykpO1xcbiAgICAgICAgICAgICAgICB0YWdzICs9IHRhZztcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgLy8gc2V0RXJyb3IodGFncyk7XFxuICAgICAgICB9IGNhdGNoIChlKSB7fVxcbiAgICAgICAgdGFncyA9IHRhZ3MgPT09ICcnID8gJzxicj4nICsgZ2V0Q29kZVRleHQoJ+aaguaXoOWIhuexuycpIDogJzxicj4nICsgdGFncztcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGhlYWRlclRpdGxlICsgdGFnc1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIGNvbF90eXBlOiAnbGluZSdcXG4gICAgICAgIH0pO1xcbiAgICB9IGNhdGNoIChlKSB7fVxcblxcbiAgICAvKipcXG4gICAgICog5o+P6L+wXFxuICAgICAqL1xcbiAgICB0cnkge1xcbiAgICAgICAgbGV0IGF1dGhvciA9IGdldEF1dGhvclRleHQoJ+S9nOiAhe+8micgKyBwYXJzZURvbUZvckh0bWwobWFpbkh0bWwsICcuYXV0aG9yJiZUZXh0JykpO1xcbiAgICAgICAgbGV0IGRlc2MgPSAnJztcXG4gICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgZGVzYyA9ICc8YnI+JyArIHBhcnNlRG9tRm9ySHRtbChtYWluSHRtbCwgJy5kZXNjJiZIdG1sJyk7XFxuICAgICAgICB9IGNhdGNoIChlKSB7fVxcblxcbiAgICAgICAgLyoqXFxuICAgICAgICAgKiDlsZXnpLpcXG4gICAgICAgICAqL1xcbiAgICAgICAgbGV0IHNob3dWaWRlbyA9ICcnO1xcbiAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICBsZXQgc2hvd0h0bWwgPSBwYXJzZURvbUZvckh0bWwoaHRtbCwgJy5yZWNpcGUtc2hvdyYmSHRtbCcpO1xcbiAgICAgICAgICAgIGxldCBpZnJhbWVWaWRlb1VybCA9IHBhcnNlRG9tRm9ySHRtbChzaG93SHRtbCwgJ2lmcmFtZSYmc3JjJyk7XFxuICAgICAgICAgICAgLy8gc2V0RXJyb3IoaWZyYW1lVmlkZW9VcmwpO1xcbiAgICAgICAgICAgIGxldCBpZnJhbWVIdG1sID0gZmV0Y2goaWZyYW1lVmlkZW9VcmwsIHt9KTtcXG4gICAgICAgICAgICAvLyBzZXRFcnJvcihpZnJhbWVIdG1sKTtcXG4gICAgICAgICAgICBsZXQgdmlkZW9VcmwgPSBwYXJzZURvbUZvckh0bWwoaWZyYW1lSHRtbCwgJ3ZpZGVvJiZzcmMnKTtcXG4gICAgICAgICAgICBzaG93VmlkZW8gPSBnZXRBZGRyZXNzVGFnKHZpZGVvVXJsLCAn5pys5biW5ZCr6KeG6aKR77yM54K55oiR5p+l55yL772eJyk7XFxuICAgICAgICB9IGNhdGNoIChlKSB7fVxcblxcbiAgICAgICAgbGV0IGluZ3MgPSAnJztcXG4gICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgLyoqXFxuICAgICAgICAgICAgICog55So5paZXFxuICAgICAgICAgICAgICovXFxuICAgICAgICAgICAgbGV0IGluZ3NIdG1sID0gcGFyc2VEb21Gb3JIdG1sKG1haW5IdG1sLCAnLmluZ3MmJkh0bWwnKTtcXG4gICAgICAgICAgICBsZXQgaW5nc0h0bWxBcnJheSA9IHBhcnNlRG9tRm9yQXJyYXkoaW5nc0h0bWwsICd0YWJsZSYmdHInKTtcXG4gICAgICAgICAgICAvLyBzZXRFcnJvcihKU09OLnN0cmluZ2lmeShpbmdzSHRtbEFycmF5KSk7XFxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbmdzSHRtbEFycmF5Lmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgICAgIGxldCBpbmdIdG1sID0gaW5nc0h0bWxBcnJheVtpXTtcXG4gICAgICAgICAgICAgICAgLzx0ZCBjbGFzcz1cXFwibmFtZVxcXCI+KFtcXFxcc1xcXFxTXSo/KTxcXFxcL3RkPi8udGVzdChpbmdIdG1sKTtcXG4gICAgICAgICAgICAgICAgbGV0IGluZ05hbWUgPSBSZWdFeHAuJDE7XFxuICAgICAgICAgICAgICAgIGlmIChpbmdOYW1lICE9PSAnJykge1xcbiAgICAgICAgICAgICAgICAgICAgaW5nTmFtZSA9IGdldENvbG9yVGV4dChwYXJzZURvbUZvckh0bWwoaW5nTmFtZSwgJ1RleHQnKSwgaW5nTmFtZUNvbG9yKTtcXG4gICAgICAgICAgICAgICAgICAgIC88dGQgY2xhc3M9XFxcInVuaXRcXFwiPihbXFxcXHNcXFxcU10qPyk8XFxcXC90ZD4vLnRlc3QoaW5nSHRtbCk7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgaW5nVW5pdCA9IFJlZ0V4cC4kMTtcXG4gICAgICAgICAgICAgICAgICAgIGluZ1VuaXQgPSBnZXRDb2xvclRleHQoKChpbmdVbml0ID09PSBpbmdOYW1lKSA/ICfmnKrnn6UnIDogaW5nVW5pdCksIGluZ1VuaXRDb2xvcik7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgaW5nID0gaW5nTmFtZSArICcgJyArIGluZ1VuaXQ7XFxuICAgICAgICAgICAgICAgICAgICBpbmcgPSBpID09PSAoaW5nc0h0bWxBcnJheS5sZW5ndGggLSAxKSA/IGluZyA6IGluZyArIChpbmdzTW9kZSA9PT0gMSA/ICc8YnI+JyA6ICfjgIEnKTtcXG4gICAgICAgICAgICAgICAgICAgIGluZ3MgKz0gaW5nXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgaW5ncyA9IChnZXRCaWdUZXh0KGdldFRpdGxlVGV4dCgn55So5paZJykpICsgJzxicj4nKSArIGluZ3M7XFxuICAgICAgICB9IGNhdGNoIChlKSB7fVxcbiAgICAgICAgZGVzYyA9IHNob3dEZXNjID09PSAxID8gZGVzYyA6ICcnO1xcbiAgICAgICAgaWYgKG1vZGVsX2xpbmVfaGVpZ2h0ID4gMCkge1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBnZXRCbG9ja3F1b3RlVGV4dChhdXRob3IgKyBkZXNjKSArIChzaG93VmlkZW8gPT09ICcnID8gZ2V0R3JleVRleHQoY29udGVudFRpcHMpIDogc2hvd1ZpZGVvICsgJzxicj4nKVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbW9kZWxfbGluZV9oZWlnaHQ7IGkrKykge1xcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdsaW5lX2JsYW5rJ1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGluZ3NcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1vZGVsX2xpbmVfaGVpZ2h0OyBpKyspIHtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogZ2V0QmxvY2txdW90ZVRleHQoYXV0aG9yICsgZGVzYykgKyAoc2hvd1ZpZGVvID09PSAnJyA/ICcnIDogc2hvd1ZpZGVvICsgJzxicj48YnI+JykgKyBpbmdzXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgIH0gY2F0Y2ggKGUpIHt9XFxuXFxuICAgIC8qKlxcbiAgICAgKiDmraPmlodcXG4gICAgICovXFxuICAgIHRyeSB7XFxuICAgICAgICBsZXQgc3RlcHNUaXRsZSA9IGdldEJpZ1RleHQoZ2V0VGl0bGVUZXh0KCcnICsgcGFyc2VEb21Gb3JIdG1sKG1haW5IdG1sLCAnI3N0ZXBzJiZUZXh0JykgKyAnJykpO1xcbiAgICAgICAgbGV0IHN0ZXBzSHRtbEFycmF5ID0gcGFyc2VEb21Gb3JBcnJheShtYWluSHRtbCwgJy5zdGVwcyYmLmNvbnRhaW5lcicpO1xcbiAgICAgICAgaWYgKG11bHRpU3RlcE1vZGVsICYmIG1vZGVsX2xpbmVfaGVpZ2h0ID4gMCkge1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBzdGVwc1RpdGxlXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgICAgICBsZXQgc3RlcHMgPSAnJztcXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RlcHNIdG1sQXJyYXkubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICBsZXQgc3RlcCA9IHBhcnNlRG9tRm9ySHRtbChzdGVwc0h0bWxBcnJheVtpXSwgJy5jb250YWluZXImJkh0bWwnKTtcXG4gICAgICAgICAgICBzdGVwID0gZ2V0U3Ryb25nVGV4dCgn5q2l6aqkJyArIChpICsgMSkgKyAnPGJyPicpICtcXG4gICAgICAgICAgICAgICAgc3RlcFxcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvPFxcXFwvcD4gPGltZyBzcmM9L2csICc8YnI+PGltZyBzcmM9JylcXG4gICAgICAgICAgICAgICAgLnJlcGxhY2VXaXRoQ2FsbGJhY2soLyg8aW1nIChzcmN8ZGF0YS1zcmMpPVxcXCIoLio/KVxcXCIoW1xcXFxzXFxcXFNdKj8pPikvZywgXFxcIjxpbWcgZGF0YS12PlxcXCIsIGltZ1RhZ1JlcGxhY2VtZW50MilcXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoLyg8cCBjbGFzcz1cXFwidGV4dFxcXCIgc3R5bGU9XFxcIi4qP1xcXCI+KXwoPFxcXFwvcD4pLywgJycpO1xcbiAgICAgICAgICAgIGlmIChtdWx0aVN0ZXBNb2RlbCAmJiBtb2RlbF9saW5lX2hlaWdodCA+IDApIHtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBzdGVwXFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgc3RlcHMgKz0gJzxicj48YnI+JyArIHN0ZXA7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICAgICAgaWYgKCEobXVsdGlTdGVwTW9kZWwgJiYgbW9kZWxfbGluZV9oZWlnaHQgPiAwKSkge1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBzdGVwc1RpdGxlICsgc3RlcHNcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbW9kZWxfbGluZV9oZWlnaHQ7IGkrKykge1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG4gICAgICAgIC8qKlxcbiAgICAgICAgICogVGlwc1xcbiAgICAgICAgICovXFxuICAgICAgICBsZXQgdGlwcyA9ICcnO1xcbiAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICBsZXQgdGlwc0h0bWwgPSBwYXJzZURvbUZvckh0bWwobWFpbkh0bWwsICcudGlwLWNvbnRhaW5lciYmSHRtbCcpO1xcbiAgICAgICAgICAgIGxldCB0aXBzVGl0bGUgPSBnZXRCaWdUZXh0KGdldFRpdGxlVGV4dChwYXJzZURvbUZvckh0bWwodGlwc0h0bWwsICdoMiYmVGV4dCcpKSk7XFxuICAgICAgICAgICAgdGlwc0NvbnRlbnQgPSAnPGJyPicgKyBwYXJzZURvbUZvckh0bWwodGlwc0h0bWwsICcudGlwJiZIdG1sJyk7XFxuICAgICAgICAgICAgdGlwcyA9IGdldENvbG9yVGV4dCh0aXBzVGl0bGUgKyB0aXBzQ29udGVudCwgdGlwc0NvbG9yKTtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogdGlwc1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbW9kZWxfbGluZV9oZWlnaHQ7IGkrKykge1xcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdsaW5lX2JsYW5rJ1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9IGNhdGNoIChlKSB7fVxcbiAgICB9IGNhdGNoIChlKSB7fVxcblxcbiAgICAvKipcXG4gICAgICogZm9vdGVyXFxuICAgICAqL1xcbiAgICB0cnkge1xcbiAgICAgICAgbGV0IGZvb3Rlckh0bWwgPSBwYXJzZURvbUZvckh0bWwoaHRtbCwgJy5yZWNpcGUtc3RhdHMmJkh0bWwnKTtcXG4gICAgICAgIGxldCB0aW1lID0gcGFyc2VEb21Gb3JIdG1sKGZvb3Rlckh0bWwsICcudGltZSYmVGV4dCcpO1xcbiAgICAgICAgbGV0IGNvbGxlY3Rpb25Db3VudCA9IHBhcnNlRG9tRm9ySHRtbChmb290ZXJIdG1sLCAnLnB2JiZUZXh0Jyk7XFxuICAgICAgICBsZXQgY29weXJpZ2h0ID0gcGFyc2VEb21Gb3JIdG1sKGZvb3Rlckh0bWwsICcuY29weXJpZ2h0JiZUZXh0Jyk7XFxuICAgICAgICBsZXQgZm9vdGVyID0gZ2V0U21hbGxUZXh0KGdldEdyZXlUZXh0KHRpbWUgKyAnPGJyPicgKyBjb2xsZWN0aW9uQ291bnQgKyAnPGJyPicgKyBjb3B5cmlnaHQpKVxcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogZm9vdGVyXFxuICAgICAgICB9KTtcXG4gICAgfSBjYXRjaCAoZSkge31cXG5cXG4gICAgLyoqXFxuICAgICAqIOivhOiuulxcbiAgICAgKi9cXG4gICAgdHJ5IHtcXG4gICAgICAgIGxldCBjb21tZW50SHRtbCA9IHBhcnNlRG9tRm9ySHRtbChodG1sLCAnLnBhZ2UtYm90dG9tLW91dGVyJiYucGFnZS1jb250YWluZXImJkh0bWwnKTtcXG4gICAgICAgIGxldCBjb21tZW50VGl0bGUgPSBnZXRCaWdUZXh0KGdldFRpdGxlVGV4dChwYXJzZURvbUZvckh0bWwoY29tbWVudEh0bWwsICdoMiYmVGV4dCcpKSk7XFxuICAgICAgICBsZXQgY29tbWVudHNIdG1sQXJyYXkgPSBwYXJzZURvbUZvckFycmF5KGNvbW1lbnRIdG1sLCAnLnF1ZXN0aW9uLWxpc3QmJi5yZWNpcGUtcXVlc2lvbnMtY29udGVudCcpO1xcbiAgICAgICAgaWYgKGNvbW1lbnRzSHRtbEFycmF5Lmxlbmd0aCA+IDApIHtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGNvbW1lbnRUaXRsZVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICAgICAgbGV0IGNvbW1lbnQgPSAnJztcXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29tbWVudHNIdG1sQXJyYXkubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICBsZXQgY29tbWVudHNCbG9ja0h0bWxBcnJheSA9IHBhcnNlRG9tRm9yQXJyYXkoY29tbWVudHNIdG1sQXJyYXlbaV0sICdsaSYmLmF2YXRhci1yaWdodC0yJyk7XFxuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBjb21tZW50c0Jsb2NrSHRtbEFycmF5Lmxlbmd0aDsgaisrKSB7XFxuICAgICAgICAgICAgICAgIGxldCByZXBseUNvbW1lbnQgPSAnJztcXG4gICAgICAgICAgICAgICAgbGV0IGF1dGhvckNvbW1lbnQgPSAnJztcXG4gICAgICAgICAgICAgICAgaWYgKGNvbW1lbnRzQmxvY2tIdG1sQXJyYXlbal0uaW5kZXhPZign6LWeJykgPiAtMSkge1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlcGxpZXIgPSBnZXRBdXRob3JUZXh0KHBhcnNlRG9tRm9ySHRtbChjb21tZW50c0Jsb2NrSHRtbEFycmF5W2pdLCAnLmluZm8mJmEmJlRleHQnKSk7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgcmVwbHlfdGltZSA9ICcnO1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKC8oPHNwYW4gY2xhc3M9XFxcIm5vcm1hbC1mb250IGdyYXktZm9udCBhbGlnbi1iYXNlbGluZVxcXCI+W1xcXFxzXFxcXFNdKj88XFxcXC9zcGFuPikvLnRlc3QoY29tbWVudHNCbG9ja0h0bWxBcnJheVtqXSkgPT09IHRydWUpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXBseV90aW1lID0gZ2V0R3JleVRleHQoUmVnRXhwLiQxKTtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIGxldCByZXBseV9tZXRhID0gZ2V0Q29tbWVudE1ldGEoJzxicj4nICsgcmVwbGllciArIHJlcGx5X3RpbWUpO1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlcGx5X2NvbnRlbnQgPSBwYXJzZURvbUZvckh0bWwoY29tbWVudHNCbG9ja0h0bWxBcnJheVtqXSwgJy5yaWdodC1ib3R0b20mJkh0bWwnKTtcXG4gICAgICAgICAgICAgICAgICAgIHJlcGx5Q29tbWVudCA9IHJlcGx5X2NvbnRlbnQgKyByZXBseV9tZXRhO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIGlmIChjb21tZW50c0Jsb2NrSHRtbEFycmF5W2pdLmluZGV4T2YoJ+S9nOiAheWbnuWkjScpID4gLTEpIHtcXG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGF1dGhvciA9IGdldEF1dGhvclRleHQoJ+S9nOiAheWbnuWkjScpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0aW1lID0gJyc7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKC8oPHNwYW4gY2xhc3M9XFxcIm5vcm1hbC1mb250IGdyYXktZm9udCBhbGlnbi1iYXNlbGluZVxcXCI+W1xcXFxzXFxcXFNdKj88XFxcXC9zcGFuPikvLnRlc3QoY29tbWVudHNCbG9ja0h0bWxBcnJheVtqXSkgPT09IHRydWUpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZSA9IGdldEdyZXlUZXh0KFJlZ0V4cC4kMSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtZXRhID0gZ2V0Q29tbWVudE1ldGEoJzxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsnICsgYXV0aG9yICsgdGltZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbW1lbnRDb250ZW50ID0gJzxzcGFuPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvc3Bhbj4nICtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VEb21Gb3JIdG1sKGNvbW1lbnRzQmxvY2tIdG1sQXJyYXlbal0sICcucmlnaHQtYm90dG9tJiZIdG1sJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgYXV0aG9yQ29tbWVudCA9IGNvbW1lbnRDb250ZW50ICsgbWV0YTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBhdXRob3JDb21tZW50ID0gJzxicj4nICsgYXV0aG9yQ29tbWVudDtcXG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgY29tbWVudCA9IHJlcGx5Q29tbWVudCArIGF1dGhvckNvbW1lbnQ7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogY29tbWVudC5yZXBsYWNlKC88ZGl2IGNsYXNzPVxcXCJyZWNpcGUtcXVlc3Rpb25zLWRpZ2dcXFwiPi9nLCAnJylcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbGluZSdcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG4gICAgfSBjYXRjaCAoZSkge31cXG59IGNhdGNoIChlKSB7fVxcblxcblxcbnJlcy5kYXRhID0gZDtcXG5zZXRIb21lUmVzdWx0KHJlcyk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLlr4zmlofmnKzpgJrnlKjlh73mlbBcIixcInBhdGhcIjpcInJpY2h0ZXh0XCIsXCJydWxlXCI6XCJmdW5jdGlvbiBnZXRCaWdUZXh0KHRleHQpIHtcXG4gICAgcmV0dXJuICc8YmlnPicgKyB0ZXh0ICsgJzwvYmlnPic7XFxufVxcblxcbmZ1bmN0aW9uIGdldFNtYWxsVGV4dCh0ZXh0KSB7XFxuICAgIHJldHVybiAnPHNtYWxsPicgKyB0ZXh0ICsgJzwvc21hbGw+JztcXG59XFxuXFxuZnVuY3Rpb24gZ2V0U3Ryb25nVGV4dCh0ZXh0KSB7XFxuICAgIHJldHVybiAnPHN0cm9uZz4nICsgdGV4dCArICc8L3N0cm9uZz4nO1xcbn1cXG5cXG5mdW5jdGlvbiBnZXRUaXRsZVRleHQodGV4dCkge1xcbiAgICByZXR1cm4gZ2V0U3Ryb25nVGV4dCh0ZXh0KTtcXG59XFxuXFxuZnVuY3Rpb24gZ2V0Q29sb3JUZXh0KHRleHQsIGNvbG9yKSB7XFxuICAgIHJldHVybiAnPGZvbnQgY29sb3I9XFxcIicgKyBjb2xvciArICdcXFwiPicgKyB0ZXh0ICsgJzwvZm9udD4nO1xcbn1cXG5cXG5mdW5jdGlvbiBnZXRHcmV5VGV4dCh0ZXh0KSB7XFxuICAgIHJldHVybiBnZXRDb2xvclRleHQodGV4dCwgJ2dyZXknKTtcXG59XFxuXFxuZnVuY3Rpb24gZ2V0QXV0aG9yVGV4dCh0ZXh0KSB7XFxuICAgIHJldHVybiBnZXRDb2xvclRleHQodGV4dCwgdXNlckNvbG9yKTtcXG59XFxuXFxuZnVuY3Rpb24gZ2V0Q29kZVRleHQodGV4dCkge1xcbiAgICByZXR1cm4gJzxjb2RlPicgKyB0ZXh0ICsgJzwvY29kZT4nO1xcbn1cXG5cXG5mdW5jdGlvbiBnZXRCbG9ja3F1b3RlVGV4dCh0ZXh0KSB7XFxuICAgIHJldHVybiAnPGJsb2NrcXVvdGU+JyArIHRleHQgKyAnPC9ibG9ja3F1b3RlPidcXG59XFxuXFxuZnVuY3Rpb24gZ2V0QWRkcmVzc1RhZyh1cmwsIHRleHQpIHtcXG4gICAgcmV0dXJuICc8YSBocmVmPVxcXCInICsgdXJsICsgJ1xcXCI+JyArIHRleHQgKyAnPC9hPidcXG59XFxuXFxuZnVuY3Rpb24gZ2V0Q29tbWVudE1ldGEoaHRtbCkge1xcbiAgICByZXR1cm4gZ2V0U21hbGxUZXh0KGh0bWwpO1xcbn1cXG5cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuiOt+WPluS4quS6uumFjee9rlwiLFwicGF0aFwiOlwic2V0dGluZ3NcIixcInJ1bGVcIjpcIi8qKlxcbiAqIOS4quS6uumFjee9ruW3suenu+WIsOmihOWkhOeQhu+8jOivt+WJjeW+gOmihOWkhOeQhui/m+ihjOmFjee9rlxcbiAqL1xcblxcbi8qKlxcbiAqIOaYr+WQpuW8gOWQr+S8quW8guatpeWKoOi9veaooeW8jyAxL+W8gOWQryAwL+S4jeW8gOWQr1xcbiAqXFxuICog5rOo5oSP77ya5LqM57qn5Lya5Y2h5Y+v5Lul5bCd6K+V5byA5ZCv6K+l6YCJ6aG577yM5L2G5Y+v6IO95a+86Ie05p+Q5Lqb5Zu+54mH5LiN5pi+56S6XFxuICovXFxubGV0IHZhbHVlSW5NYXAgPSBnZXRWYXIoJ3hpYWNodV9tdWx0aVN0ZXBNb2RlbCcpO1xcbmxldCBtdWx0aVN0ZXBNb2RlbCA9IDA7XFxudmFsdWVJbk1hcCA9IHBhcnNlSW50KHZhbHVlSW5NYXApO1xcbm11bHRpU3RlcE1vZGVsID0gaXNOYU4odmFsdWVJbk1hcCkgPT09IHRydWUgPyBtdWx0aVN0ZXBNb2RlbCA6IHZhbHVlSW5NYXA7XFxuLy8g5piv5ZCm6ZqQ6JeP5Zu+54mHKOecgea1geaooeW8jykgMS/pmpDol48gMC/kuI3pmpDol49cXG5sZXQgaGlkZUltZyA9IDA7XFxudmFsdWVJbk1hcCA9IGdldFZhcigneGlhY2h1X2hpZGVJbWcnKTtcXG52YWx1ZUluTWFwID0gcGFyc2VJbnQodmFsdWVJbk1hcCk7XFxuaGlkZUltZyA9IGlzTmFOKHZhbHVlSW5NYXApID09PSB0cnVlID8gaGlkZUltZyA6IHZhbHVlSW5NYXA7XFxuLy8g5Zu+54mH6LSo6YeP77yM6buY6K6kIDMwMO+8jOaOqOiNkCA2MDAg5oiWIDgwMFxcbmxldCBpbWdXaWR0aCA9IDYwMDtcXG52YWx1ZUluTWFwID0gZ2V0VmFyKCd4aWFjaHVfaW1nV2lkdGgnKTtcXG52YWx1ZUluTWFwID0gcGFyc2VJbnQodmFsdWVJbk1hcCk7XFxuaW1nV2lkdGggPSBpc05hTih2YWx1ZUluTWFwKSA9PT0gdHJ1ZSA/IGltZ1dpZHRoIDogdmFsdWVJbk1hcDtcXG4vLyDmmK/lkKbmmL7npLrnnIvlpKflm74o6Ziy5q2i5peg5rOV5Yqg6L295Zu+54mHKSAxL+aYvuekuiAwL+S4jeaYvuekulxcbmxldCBzaG93RnVsbEltZ1RpcHMgPSAxO1xcbnZhbHVlSW5NYXAgPSBnZXRWYXIoJ3hpYWNodV9zaG93RnVsbEltZ1RpcHMnKTtcXG52YWx1ZUluTWFwID0gcGFyc2VJbnQodmFsdWVJbk1hcCk7XFxuc2hvd0Z1bGxJbWdUaXBzID0gaXNOYU4odmFsdWVJbk1hcCkgPT09IHRydWUgPyBzaG93RnVsbEltZ1RpcHMgOiB2YWx1ZUluTWFwO1xcbi8vIOeUqOaIt+minOiJsipcXG5sZXQgdXNlckNvbG9yID0gXFxcIiMyOTc5RkZcXFwiO1xcbnZhbHVlSW5NYXAgPSBnZXRWYXIoJ3hpYWNodV91c2VyQ29sb3InKTtcXG51c2VyQ29sb3IgPSB2YWx1ZUluTWFwID09PSAnJyA/IHVzZXJDb2xvciA6IHZhbHVlSW5NYXA7XFxuLy8g5piv5ZCm5pi+56S66I+c55qE5o+P6L+wIDEv5pi+56S6IDAv5LiN5pi+56S6XFxubGV0IHNob3dEZXNjID0gMTtcXG52YWx1ZUluTWFwID0gZ2V0VmFyKCd4aWFjaHVfc2hvd0Rlc2MnKTtcXG52YWx1ZUluTWFwID0gcGFyc2VJbnQodmFsdWVJbk1hcCk7XFxuc2hvd0Rlc2MgPSBpc05hTih2YWx1ZUluTWFwKSA9PT0gdHJ1ZSA/IHNob3dEZXNjIDogdmFsdWVJbk1hcDtcXG4vLyDnlKjmlpnmqKHlnZfmmL7npLrmlrnlvI8gMS/lrozmlbTop4blm74gMC/nvKnnlaXmqKHlvI9cXG5sZXQgaW5nc01vZGUgPSAwO1xcbnZhbHVlSW5NYXAgPSBnZXRWYXIoJ3hpYWNodV9pbmdzTW9kZScpO1xcbnZhbHVlSW5NYXAgPSBwYXJzZUludCh2YWx1ZUluTWFwKTtcXG5pbmdzTW9kZSA9IGlzTmFOKHZhbHVlSW5NYXApID09PSB0cnVlID8gaW5nc01vZGUgOiB2YWx1ZUluTWFwO1xcbi8vIOeUqOaWmeWQjeminOiJslxcbmxldCBpbmdOYW1lQ29sb3IgPSBcXFwiIzQ2YzIwMFxcXCI7XFxudmFsdWVJbk1hcCA9IGdldFZhcigneGlhY2h1X2luZ05hbWVDb2xvcicpO1xcbmluZ05hbWVDb2xvciA9IHZhbHVlSW5NYXAgPT09ICcnID8gaW5nTmFtZUNvbG9yIDogdmFsdWVJbk1hcDtcXG4vLyDnlKjmlpnph4/popzoibJcXG5sZXQgaW5nVW5pdENvbG9yID0gXFxcIiM3MDZhNmJcXFwiO1xcbnZhbHVlSW5NYXAgPSBnZXRWYXIoJ3hpYWNodV9pbmdVbml0Q29sb3InKTtcXG5pbmdVbml0Q29sb3IgPSB2YWx1ZUluTWFwID09PSAnJyA/IGluZ1VuaXRDb2xvciA6IHZhbHVlSW5NYXA7XFxuLy8g5bCP6LS05aOr6aKc6ImyXFxubGV0IHRpcHNDb2xvciA9IFxcXCIjNzA2YTZiXFxcIjtcXG52YWx1ZUluTWFwID0gZ2V0VmFyKCd4aWFjaHVfdGlwc0NvbG9yJyk7XFxudGlwc0NvbG9yID0gdmFsdWVJbk1hcCA9PT0gJycgPyB0aXBzQ29sb3IgOiB2YWx1ZUluTWFwO1xcbi8vIOaooeWdl+S5i+mXtOeahOmXtOmalCpcXG5sZXQgbW9kZWxfbGluZV9oZWlnaHQgPSAxO1xcbnZhbHVlSW5NYXAgPSBnZXRWYXIoJ3hpYWNodV9tb2RlbF9saW5lX2hlaWdodCcpO1xcbnZhbHVlSW5NYXAgPSBwYXJzZUludCh2YWx1ZUluTWFwKTtcXG5tb2RlbF9saW5lX2hlaWdodCA9IGlzTmFOKHZhbHVlSW5NYXApID09PSB0cnVlID8gbW9kZWxfbGluZV9oZWlnaHQgOiB2YWx1ZUluTWFwO1xcbi8vIOato+aWh+aPkOekuipcXG5sZXQgY29udGVudFRpcHMgPSAn5LiL5Y6o55qE5pe25YCZ5LiA5a6a6KaB5rOo5oSP5a6J5YWo5ZOm772eJyArICc8YnI+JztcXG52YWx1ZUluTWFwID0gZ2V0VmFyKCd4aWFjaHVfY29udGVudFRpcHMnKTtcXG5jb250ZW50VGlwcyA9IHZhbHVlSW5NYXAgPT09ICcnID8gY29udGVudFRpcHMgOiB2YWx1ZUluTWFwO1wifV0sXCJzYXZlZFwiOmZhbHNlLFwidGl0bGVcIjpcIvCfjZvnvo7po59cIixcInZlcnNpb25cIjowLFwidXJsXCI6XCJodHRwczovL3d3dy54aWFjaHVmYW5nLmNvbS9yZWNpcGUvMTA0NjM2MzYwLyNub0hpc3RvcnkjO2dldDt1dGYtODt7VXNlci1BZ2VudEBNb3ppbGxhIDUuMH1cIixcImNvbF90eXBlXCI6XCJyaWNoX3RleHRcIixcImZpbmRfcnVsZVwiOlwianM6XFxuaWYgKE1ZX1VSTC5pbmRleE9mKCdyZWNpcGVfbGlzdCcpID4gLTEpIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoXFxcImhpa2VyOi8vcGFnZS9tZW51XFxcIikpLnJ1bGUpXFxufSBlbHNlIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoXFxcImhpa2VyOi8vcGFnZS9kZXRhaWxcXFwiKSkucnVsZSlcXG59XCIsXCJncm91cFwiOlwi8J+Nm+e+jumjn1wiLFwidWFcIjpcInBjXCIsXCJwcmVSdWxlXCI6XCIvKipcXG4gKiDmmK/lkKblvIDlkK/kvKrlvILmraXliqDovb3mqKHlvI8gMS/lvIDlkK8gMC/kuI3lvIDlkK9cXG4gKlxcbiAqIOazqOaEj++8muS6jOe6p+S8muWNoeWPr+S7peWwneivleW8gOWQr+ivpemAiemhue+8jOS9huWPr+iDveWvvOiHtOafkOS6m+WbvueJh+S4jeaYvuekulxcbiAqL1xcbmxldCBtdWx0aVN0ZXBNb2RlbCA9IDA7XFxuLy8g5piv5ZCm6ZqQ6JeP5Zu+54mHKOecgea1geaooeW8jykgMS/pmpDol48gMC/kuI3pmpDol49cXG5sZXQgaGlkZUltZyA9IDA7XFxuLy8g5Zu+54mH6LSo6YeP77yM6buY6K6kIDMwMO+8jOaOqOiNkCA2MDAg5oiWIDgwMFxcbmxldCBpbWdXaWR0aCA9IDYwMDtcXG4vLyDmmK/lkKbmmL7npLrnnIvlpKflm74o6Ziy5q2i5peg5rOV5Yqg6L295Zu+54mHKSAxL+aYvuekuiAwL+S4jeaYvuekulxcbmxldCBzaG93RnVsbEltZ1RpcHMgPSAxO1xcbi8vIOeUqOaIt+minOiJslxcbmxldCB1c2VyQ29sb3IgPSBcXFwiIzI5NzlGRlxcXCI7XFxuLy8g5piv5ZCm5pi+56S66I+c55qE5o+P6L+wIDEv5pi+56S6IDAv5LiN5pi+56S6XFxubGV0IHNob3dEZXNjID0gMTtcXG4vLyDnlKjmlpnmqKHlnZfmmL7npLrmlrnlvI8gMS/lrozmlbTop4blm74gMC/nvKnnlaXmqKHlvI9cXG5sZXQgaW5nc01vZGUgPSAwO1xcbi8vIOeUqOaWmeWQjeminOiJslxcbmxldCBpbmdOYW1lQ29sb3IgPSBcXFwiIzQ2YzIwMFxcXCI7XFxuLy8g55So5paZ6YeP6aKc6ImyXFxubGV0IGluZ1VuaXRDb2xvciA9IFxcXCIjNzA2YTZiXFxcIjtcXG4vLyDlsI/otLTlo6vpopzoibJcXG5sZXQgdGlwc0NvbG9yID0gXFxcIiM3MDZhNmJcXFwiO1xcbi8vIOaooeWdl+S5i+mXtOeahOmXtOmalFxcbmxldCBtb2RlbF9saW5lX2hlaWdodCA9IDE7XFxuLy8g5q2j5paH5o+Q56S6XFxubGV0IGNvbnRlbnRUaXBzID0gJ+S4i+WOqOeahOaXtuWAmeS4gOWumuimgeazqOaEj+WuieWFqOWTpu+9nicgKyAnPGJyPic7XFxuXFxuLyoqXFxuICog5piv5ZCm5byA5ZCv5pCc57Si57uT5p6c5YyF5ZCr6I+c5Y2VXFxuICovXFxudmFyIGNvbnRhaW5NZW51ID0gMTtcXG5cXG5wdXRWYXIyKCd4aWFjaHVfbXVsdGlTdGVwTW9kZWwnLCBtdWx0aVN0ZXBNb2RlbC50b1N0cmluZygpKTtcXG5wdXRWYXIyKCd4aWFjaHVfaGlkZUltZycsIGhpZGVJbWcudG9TdHJpbmcoKSk7XFxucHV0VmFyMigneGlhY2h1X2ltZ1dpZHRoJywgaW1nV2lkdGgudG9TdHJpbmcoKSk7XFxucHV0VmFyMigneGlhY2h1X3Nob3dGdWxsSW1nVGlwcycsIHNob3dGdWxsSW1nVGlwcy50b1N0cmluZygpKTtcXG5wdXRWYXIyKCd4aWFjaHVfdXNlckNvbG9yJywgdXNlckNvbG9yKTtcXG5wdXRWYXIyKCd4aWFjaHVfc2hvd0Rlc2MnLCBzaG93RGVzYy50b1N0cmluZygpKTtcXG5wdXRWYXIyKCd4aWFjaHVfaW5nc01vZGUnLCBpbmdzTW9kZS50b1N0cmluZygpKTtcXG5wdXRWYXIyKCd4aWFjaHVfaW5nTmFtZUNvbG9yJywgaW5nTmFtZUNvbG9yKTtcXG5wdXRWYXIyKCd4aWFjaHVfaW5nVW5pdENvbG9yJywgaW5nVW5pdENvbG9yKTtcXG5wdXRWYXIyKCd4aWFjaHVfdGlwc0NvbG9yJywgdGlwc0NvbG9yKTtcXG5wdXRWYXIyKCd4aWFjaHVfbW9kZWxfbGluZV9oZWlnaHQnLCBtb2RlbF9saW5lX2hlaWdodC50b1N0cmluZygpKTtcXG5wdXRWYXIyKCd4aWFjaHVfY29udGVudFRpcHMnLCBjb250ZW50VGlwcyk7XFxuXFxucHV0VmFyMigneGlhY2h1X2NvbnRhaW5NZW51JywgY29udGFpbk1lbnUudG9TdHJpbmcoKSk7XFxuXFxucHV0VmFyMigneGlhY2h1X2hvc3QnLCBiYXNlNjREZWNvZGUoJ2QzZDNMbmhwWVdOb2RXWmhibWN1WTI5dCcpKVwiLFwicGFnZXNcIjpcIlt7XFxcImNvbF90eXBlXFxcIjpcXFwicmljaF90ZXh0XFxcIixcXFwibmFtZVxcXCI6XFxcIuiPnOWNleWIl+ihqFxcXCIsXFxcInBhdGhcXFwiOlxcXCJtZW51XFxcIixcXFwicnVsZVxcXCI6XFxcImpzOlxcXFxuZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoXFxcXFxcXCJoaWtlcjovL3BhZ2UvcmljaHRleHRcXFxcXFxcIikpLnJ1bGUpXFxcXG5ldmFsKEpTT04ucGFyc2UocmVxdWVzdChcXFxcXFxcImhpa2VyOi8vcGFnZS9zZXR0aW5nc1xcXFxcXFwiKSkucnVsZSlcXFxcblxcXFxudmFyIHJlcyA9IHt9O1xcXFxudmFyIGQgPSBbXTtcXFxcbnZhciBodG1sID0gZ2V0UmVzQ29kZSgpO1xcXFxudmFyIHVybFNwbGl0cyA9IE1ZX1VSTC5zcGxpdCgnP3BhZ2U9Jyk7XFxcXG52YXIgcGFnZSA9IDE7XFxcXG50cnkge1xcXFxuICAgIGxldCBwYWdlVGVtcCA9IHBhcnNlSW50KHVybFNwbGl0c1sxXSk7XFxcXG4gICAgcGFnZSA9IGlzTmFOKHBhZ2VUZW1wKSA9PT0gdHJ1ZSA/IHBhZ2UgOiBwYWdlVGVtcDtcXFxcbn0gY2F0Y2ggKGUpIHt9XFxcXG5cXFxcbnRyeSB7XFxcXG4gICAgbGV0IG1haW5IdG1sID0gcGFyc2VEb21Gb3JIdG1sKGh0bWwsICcubWFpbi1wYW5lbCYmSHRtbCcpO1xcXFxuXFxcXG4gICAgaWYgKHBhZ2UgPT09IDEpIHtcXFxcbiAgICAgICAgLyoqXFxcXG4gICAgICAgICAqIGhlYWRlclxcXFxuICAgICAgICAgKi9cXFxcbiAgICAgICAgdHJ5IHtcXFxcbiAgICAgICAgICAgIGxldCBoZWFkZXJUaXRsZSA9IGdldEJpZ1RleHQoZ2V0U3Ryb25nVGV4dChwYXJzZURvbUZvckh0bWwobWFpbkh0bWwsICdoMSYmVGV4dCcpKSkgK1xcXFxuICAgICAgICAgICAgICAgICcgJyArIGdldFNtYWxsVGV4dChnZXRBZGRyZXNzVGFnKE1ZX1VSTCwgJ1vmn6XnnIvljp/mloddJykpO1xcXFxuICAgICAgICAgICAgbGV0IGhlYWRlckh0bWwgPSBwYXJzZURvbUZvckh0bWwobWFpbkh0bWwsICcucmwtc3VtbWFyeSYmSHRtbCcpO1xcXFxuICAgICAgICAgICAgbGV0IGNvbGxlY3Rpb25Db3VudCA9ICc8YnI+JyArIGdldFNtYWxsVGV4dChwYXJzZURvbUZvckh0bWwoaGVhZGVySHRtbCwgJy5zdGF0cyYmVGV4dCcpKTtcXFxcbiAgICAgICAgICAgIGxldCB0aW1lID0gJyAnICsgZ2V0U21hbGxUZXh0KGdldEdyZXlUZXh0KHBhcnNlRG9tRm9ySHRtbChoZWFkZXJIdG1sLCAnLnRpbWUmJlRleHQnKSkpO1xcXFxuICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogaGVhZGVyVGl0bGUgKyBjb2xsZWN0aW9uQ291bnQgKyB0aW1lXFxcXG4gICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdsaW5lJ1xcXFxuICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICBsZXQgYXV0aG9yID0gZ2V0QXV0aG9yVGV4dChwYXJzZURvbUZvckh0bWwoaGVhZGVySHRtbCwgJy5hdmF0YXItbGluayYmVGV4dCcpKTtcXFxcbiAgICAgICAgICAgIGxldCBkZXNjID0gJzxicj4nICsgcGFyc2VEb21Gb3JIdG1sKGhlYWRlckh0bWwsICcuZGVzYyYmVGV4dCcpO1xcXFxuICAgICAgICAgICAgbGV0IG1ldGEgPSBnZXRCbG9ja3F1b3RlVGV4dChhdXRob3IgKyBkZXNjKTtcXFxcbiAgICAgICAgICAgIGlmIChtb2RlbF9saW5lX2hlaWdodCA+IDApIHtcXFxcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogbWV0YSArIGdldEdyZXlUZXh0KGNvbnRlbnRUaXBzKVxcXFxuICAgICAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbW9kZWxfbGluZV9oZWlnaHQ7IGkrKykge1xcXFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdsaW5lX2JsYW5rJ1xcXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBtZXRhXFxcXG4gICAgICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgIH0gY2F0Y2ggKGUpIHt9XFxcXG4gICAgfVxcXFxuICAgIC8qKlxcXFxuICAgICAqIOato+aWh1xcXFxuICAgICAqL1xcXFxuICAgIHRyeSB7XFxcXG4gICAgICAgIGxldCBjb250ZW50c0h0bWwgPSBwYXJzZURvbUZvckh0bWwoaHRtbCwgJy5ybC1yZWNpcGVzJiZIdG1sJyk7XFxcXG4gICAgICAgIGlmIChwYWdlID09PSAxKSB7XFxcXG4gICAgICAgICAgICBsZXQgY29udGVudFRpdGxlID0gZ2V0QmlnVGV4dChwYXJzZURvbUZvckh0bWwoY29udGVudHNIdG1sLCAnLmJsb2NrLXRpdGxlJiZUZXh0JykpO1xcXFxuICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogY29udGVudFRpdGxlXFxcXG4gICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgfVxcXFxuICAgICAgICBsZXQgY29udGVudHNIdG1sQXJyYXkgPSBwYXJzZURvbUZvckFycmF5KGNvbnRlbnRzSHRtbCwgJy5ub3JtYWwtcmVjaXBlLWxpc3QmJmxpJyk7XFxcXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29udGVudHNIdG1sQXJyYXkubGVuZ3RoOyBpKyspIHtcXFxcbiAgICAgICAgICAgIGxldCBjb250ZW50SXRlbUh0bWwgPSBjb250ZW50c0h0bWxBcnJheVtpXTtcXFxcbiAgICAgICAgICAgIGxldCBjb3ZlciA9IHBhcnNlRG9tRm9ySHRtbChjb250ZW50SXRlbUh0bWwsICcuY292ZXImJmltZyYmZGF0YS1zcmMnKTtcXFxcbiAgICAgICAgICAgIGxldCB0aXRsZSA9IHBhcnNlRG9tRm9ySHRtbChjb250ZW50SXRlbUh0bWwsICcuaW5mbyYmLm5hbWUmJlRleHQnKTtcXFxcbiAgICAgICAgICAgIGxldCBkZXNjID0gcGFyc2VEb21Gb3JIdG1sKGNvbnRlbnRJdGVtSHRtbCwgJy5zdGF0cyYmVGV4dCcpO1xcXFxuICAgICAgICAgICAgbGV0IHVybCA9IHBhcnNlRG9tKGNvbnRlbnRJdGVtSHRtbCwgJ2EmJmhyZWYnKTtcXFxcbiAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRpdGxlLFxcXFxuICAgICAgICAgICAgICAgIHBpY191cmw6IGNvdmVyLFxcXFxuICAgICAgICAgICAgICAgIGRlc2M6IGRlc2MsXFxcXG4gICAgICAgICAgICAgICAgdXJsOiBcXFxcXFxcImhpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPVxcXFxcXFwiICsgdXJsLnJlcGxhY2UoL1xcXFxcXFxcPy8sIFxcXFxcXFwi77yf77yfXFxcXFxcXCIpICsgXFxcXFxcXCLvvJvvvJtnZXTvvJvvvJt1dGYtOO+8m++8m3tVc2VyLUFnZW50QE1vemlsbGEgNS4wfVxcXFxcXFwiXFxcXG5cXFxcbi8qJCh1cmwpLnJ1bGUoKCk9PmV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2RldGFpbFxcXFxcXFwiKSkucnVsZSkpKi8sXFxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xJ1xcXFxuICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgfVxcXFxuICAgIH0gY2F0Y2ggKGUpIHt9XFxcXG59IGNhdGNoIChlKSB7fVxcXFxuXFxcXG5cXFxcbnJlcy5kYXRhID0gZDtcXFxcbnNldEhvbWVSZXN1bHQocmVzKTtcXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwicmljaF90ZXh0XFxcIixcXFwibmFtZVxcXCI6XFxcIuiPnOiwseivpuaDhVxcXCIsXFxcInBhdGhcXFwiOlxcXCJkZXRhaWxcXFwiLFxcXCJydWxlXFxcIjpcXFwianM6XFxcXG52YXIgcmVzID0ge307XFxcXG52YXIgZCA9IFtdO1xcXFxudmFyIGh0bWwgPSBnZXRSZXNDb2RlKCk7XFxcXG5sb2coaHRtbClcXFxcbi8qdmFyIHVybFNwbGl0cyA9IE1ZX1VSTC5zcGxpdCgnP3BhZ2U9Jyk7XFxcXG52YXIgcGFnZSA9IDE7XFxcXG50cnkge1xcXFxuICAgIGxldCBwYWdlVGVtcCA9IHBhcnNlSW50KHVybFNwbGl0c1sxXSk7XFxcXG4gICAgcGFnZSA9IGlzTmFOKHBhZ2VUZW1wKSA9PT0gdHJ1ZSA/IHBhZ2UgOiBwYWdlVGVtcDtcXFxcbn0gY2F0Y2ggKGUpIHt9Ki9cXFxcblxcXFxuZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoXFxcXFxcXCJoaWtlcjovL3BhZ2Uvc2V0dGluZ3NcXFxcXFxcIikpLnJ1bGUpXFxcXG5cXFxcbmV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KFxcXFxcXFwiaGlrZXI6Ly9wYWdlL3JpY2h0ZXh0XFxcXFxcXCIpKS5ydWxlKVxcXFxuXFxcXG5TdHJpbmcucHJvdG90eXBlLnJlcGxhY2VXaXRoQ2FsbGJhY2sgPSBmdW5jdGlvbihzZWFyY2hWYWx1ZSwgcmVwbGFjZVZhbHVlLCBjYWxsYmFjaykge1xcXFxuICAgIGxldCByZXR1cm5WYWx1ZSA9IHRoaXM7XFxcXG4gICAgaWYgKGNhbGxiYWNrICE9IG51bGwpIHtcXFxcbiAgICAgICAgcmV0dXJuVmFsdWUgPSBjYWxsYmFjayh0aGlzLCBzZWFyY2hWYWx1ZSwgcmVwbGFjZVZhbHVlKTtcXFxcbiAgICB9XFxcXG4gICAgcmV0dXJuIHJldHVyblZhbHVlO1xcXFxufTtcXFxcblxcXFxubGV0IGltZ0Vycm9yID0gJzxmb250IGNvbG9yPVxcXFxcXFwiZ3JleVxcXFxcXFwiPuWbvueJh+aaguaXtuaXoOazleaYvuekuu+8jOiLpeimgeafpeeci+ivtzxhIGhyZWY9XFxcXFxcXCInICsgTVlfVVJMICsgJ1xcXFxcXFwiPuiuv+mXruWOn+aWhzwvYT48L2ZvbnQ+JztcXFxcblxcXFxuZnVuY3Rpb24gaW1nVGFnKGNvbnRleHQsIHNvdXJjZVRhZywgaW1nVXJsKSB7XFxcXG4gICAgaWYgKC8od1xcXFxcXFxcLyhcXFxcXFxcXGQrKVxcXFxcXFxcL2ludGVybGFjZSkvLnRlc3QoaW1nVXJsKSA9PT0gdHJ1ZSkge1xcXFxuICAgICAgICBsZXQgdXJsID0gUmVnRXhwLiQxO1xcXFxuICAgICAgICAvLyBsb2coc291cmNlVGFnKVxcXFxuICAgICAgICBzb3VyY2VUYWcgPSBzb3VyY2VUYWcucmVwbGFjZSh1cmwsICd3LycgKyBpbWdXaWR0aCArICcvaW50ZXJsYWNlJyk7XFxcXG4gICAgICAgIC8vIGxvZyhzb3VyY2VUYWcpXFxcXG4gICAgfVxcXFxuICAgIGxldCByZXBsYWNlU3RyaW5nID0gc291cmNlVGFnO1xcXFxuICAgIGxldCByZXBsYWNlU3RyaW5nMSA9IGltZ1VybCA9PT0gJycgP1xcXFxuICAgICAgICBpbWdFcnJvciA6XFxcXG4gICAgICAgICgnPGEgaHJlZj1cXFxcXFxcIicgKyBpbWdVcmwgKyAnXFxcXFxcXCI+JyArXFxcXG4gICAgICAgICAgICAoaGlkZUltZyA9PT0gMSA/ICdb54K55Ye75p+l55yL5aSn5Zu+XScgOiAn5Zu+54mH5peg5rOV5Yqg6L2977yf54K55oiR6K+V6K+VficpICtcXFxcbiAgICAgICAgICAgICc8L2E+Jyk7XFxcXG4gICAgaWYgKHNob3dGdWxsSW1nVGlwcykge1xcXFxuICAgICAgICByZXBsYWNlU3RyaW5nICs9ICgnPGJyPicgKyBnZXRTbWFsbFRleHQocmVwbGFjZVN0cmluZzEpKTtcXFxcbiAgICB9XFxcXG4gICAgaWYgKGhpZGVJbWcpIHtcXFxcbiAgICAgICAgcmVwbGFjZVN0cmluZyA9IHJlcGxhY2VTdHJpbmcxO1xcXFxuICAgIH1cXFxcbiAgICByZXR1cm4gY29udGV4dC5yZXBsYWNlKC88aW1nIGRhdGEtdj4vZywgcmVwbGFjZVN0cmluZyk7XFxcXG59XFxcXG5cXFxcbmZ1bmN0aW9uIGltZ1RhZ1JlcGxhY2VtZW50Mihjb250ZXh0LCBzZWFyY2hWYWx1ZSwgcmVwbGFjZVZhbHVlKSB7XFxcXG4gICAgbGV0IG1hdGNoQXJyYXkgPSBjb250ZXh0Lm1hdGNoKHNlYXJjaFZhbHVlKTtcXFxcbiAgICBsZXQgcmV0dXJuVmFsdWUgPSBjb250ZXh0O1xcXFxuICAgIC8vIGxvZyhtYXRjaEFycmF5KVxcXFxuICAgIGlmIChtYXRjaEFycmF5ICE9IG51bGwpIHtcXFxcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXRjaEFycmF5Lmxlbmd0aDsgaSsrKSB7XFxcXG4gICAgICAgICAgICBsZXQgaXRlbSA9IG1hdGNoQXJyYXlbaV07XFxcXG4gICAgICAgICAgICAvLyBsb2coaXRlbSk7XFxcXG4gICAgICAgICAgICAvKDxpbWcgKHNyY3xkYXRhLXNyYyk9XFxcXFxcXCIoLio/KVxcXFxcXFwiKFtcXFxcXFxcXHNcXFxcXFxcXFNdKj8pPikvLnRlc3QoaXRlbSk7XFxcXG4gICAgICAgICAgICBsZXQgaW1nVXJsID0gUmVnRXhwLiQzO1xcXFxuICAgICAgICAgICAgaWYgKGltZ1VybCAhPT0gJycpIHtcXFxcbiAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IHJldHVyblZhbHVlLnJlcGxhY2UoaXRlbSwgcmVwbGFjZVZhbHVlKTtcXFxcbiAgICAgICAgICAgICAgICBsZXQgdGFnID0gaXRlbTtcXFxcbiAgICAgICAgICAgICAgICAvLyBsb2codGFnKVxcXFxuICAgICAgICAgICAgICAgIHJldHVyblZhbHVlID0gaW1nVGFnKHJldHVyblZhbHVlLCB0YWcsIGltZ1VybCk7XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgIH1cXFxcbiAgICB9XFxcXG4gICAgcmV0dXJuIHJldHVyblZhbHVlO1xcXFxufVxcXFxuXFxcXG50cnkge1xcXFxuICAgIGxldCBtYWluSHRtbCA9IHBhcnNlRG9tRm9ySHRtbChodG1sLCAnLm1haW4tcGFuZWwmJkh0bWwnKTtcXFxcbiAgICAvKipcXFxcbiAgICAgKiBoZWFkZXJcXFxcbiAgICAgKi9cXFxcbiAgICB0cnkge1xcXFxuICAgICAgICBsZXQgaGVhZGVyVGl0bGUgPSBnZXRCaWdUZXh0KGdldFN0cm9uZ1RleHQocGFyc2VEb21Gb3JIdG1sKG1haW5IdG1sLCAnaDEmJlRleHQnKSkpICtcXFxcbiAgICAgICAgICAgICcgJyArIGdldFNtYWxsVGV4dChnZXRBZGRyZXNzVGFnKE1ZX1VSTCwgJ1vmn6XnnIvljp/mloddJykpO1xcXFxuICAgICAgICBsZXQgdGFncyA9ICcnO1xcXFxuICAgICAgICB0cnkge1xcXFxuICAgICAgICAgICAgbGV0IGhlYWRlclRhZ3NIdG1sID0gcGFyc2VEb21Gb3JIdG1sKGh0bWwsICcucmVjaXBlLXRhZ3MmJkh0bWwnKTtcXFxcbiAgICAgICAgICAgIGxldCB0YWdzSHRtbEFycmF5ID0gcGFyc2VEb21Gb3JBcnJheShoZWFkZXJUYWdzSHRtbCwgJy5yZWNpcGUtY2F0cyYmYScpO1xcXFxuICAgICAgICAgICAgLy8gc2V0RXJyb3IoSlNPTi5zdHJpbmdpZnkodGFnc0h0bWxBcnJheSkpO1xcXFxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0YWdzSHRtbEFycmF5Lmxlbmd0aDsgaSsrKSB7XFxcXG4gICAgICAgICAgICAgICAgbGV0IHRhZ0h0bWwgPSB0YWdzSHRtbEFycmF5W2ldO1xcXFxuICAgICAgICAgICAgICAgIGxldCB0YWcgPSBnZXRDb2RlVGV4dChwYXJzZURvbUZvckh0bWwodGFnSHRtbCwgJ1RleHQnKSk7XFxcXG4gICAgICAgICAgICAgICAgdGFncyArPSB0YWc7XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAvLyBzZXRFcnJvcih0YWdzKTtcXFxcbiAgICAgICAgfSBjYXRjaCAoZSkge31cXFxcbiAgICAgICAgdGFncyA9IHRhZ3MgPT09ICcnID8gJzxicj4nICsgZ2V0Q29kZVRleHQoJ+aaguaXoOWIhuexuycpIDogJzxicj4nICsgdGFncztcXFxcbiAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiBoZWFkZXJUaXRsZSArIHRhZ3NcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmUnXFxcXG4gICAgICAgIH0pO1xcXFxuICAgIH0gY2F0Y2ggKGUpIHt9XFxcXG5cXFxcbiAgICAvKipcXFxcbiAgICAgKiDmj4/ov7BcXFxcbiAgICAgKi9cXFxcbiAgICB0cnkge1xcXFxuICAgICAgICBsZXQgYXV0aG9yID0gZ2V0QXV0aG9yVGV4dCgn5L2c6ICF77yaJyArIHBhcnNlRG9tRm9ySHRtbChtYWluSHRtbCwgJy5hdXRob3ImJlRleHQnKSk7XFxcXG4gICAgICAgIGxldCBkZXNjID0gJyc7XFxcXG4gICAgICAgIHRyeSB7XFxcXG4gICAgICAgICAgICBkZXNjID0gJzxicj4nICsgcGFyc2VEb21Gb3JIdG1sKG1haW5IdG1sLCAnLmRlc2MmJkh0bWwnKTtcXFxcbiAgICAgICAgfSBjYXRjaCAoZSkge31cXFxcblxcXFxuICAgICAgICAvKipcXFxcbiAgICAgICAgICog5bGV56S6XFxcXG4gICAgICAgICAqL1xcXFxuICAgICAgICBsZXQgc2hvd1ZpZGVvID0gJyc7XFxcXG4gICAgICAgIHRyeSB7XFxcXG4gICAgICAgICAgICBsZXQgc2hvd0h0bWwgPSBwYXJzZURvbUZvckh0bWwoaHRtbCwgJy5yZWNpcGUtc2hvdyYmSHRtbCcpO1xcXFxuICAgICAgICAgICAgbGV0IGlmcmFtZVZpZGVvVXJsID0gcGFyc2VEb21Gb3JIdG1sKHNob3dIdG1sLCAnaWZyYW1lJiZzcmMnKTtcXFxcbiAgICAgICAgICAgIC8vIHNldEVycm9yKGlmcmFtZVZpZGVvVXJsKTtcXFxcbiAgICAgICAgICAgIGxldCBpZnJhbWVIdG1sID0gZmV0Y2goaWZyYW1lVmlkZW9VcmwsIHt9KTtcXFxcbiAgICAgICAgICAgIC8vIHNldEVycm9yKGlmcmFtZUh0bWwpO1xcXFxuICAgICAgICAgICAgbGV0IHZpZGVvVXJsID0gcGFyc2VEb21Gb3JIdG1sKGlmcmFtZUh0bWwsICd2aWRlbyYmc3JjJyk7XFxcXG4gICAgICAgICAgICBzaG93VmlkZW8gPSBnZXRBZGRyZXNzVGFnKHZpZGVvVXJsLCAn5pys5biW5ZCr6KeG6aKR77yM54K55oiR5p+l55yL772eJyk7XFxcXG4gICAgICAgIH0gY2F0Y2ggKGUpIHt9XFxcXG5cXFxcbiAgICAgICAgbGV0IGluZ3MgPSAnJztcXFxcbiAgICAgICAgdHJ5IHtcXFxcbiAgICAgICAgICAgIC8qKlxcXFxuICAgICAgICAgICAgICog55So5paZXFxcXG4gICAgICAgICAgICAgKi9cXFxcbiAgICAgICAgICAgIGxldCBpbmdzSHRtbCA9IHBhcnNlRG9tRm9ySHRtbChtYWluSHRtbCwgJy5pbmdzJiZIdG1sJyk7XFxcXG4gICAgICAgICAgICBsZXQgaW5nc0h0bWxBcnJheSA9IHBhcnNlRG9tRm9yQXJyYXkoaW5nc0h0bWwsICd0YWJsZSYmdHInKTtcXFxcbiAgICAgICAgICAgIC8vIHNldEVycm9yKEpTT04uc3RyaW5naWZ5KGluZ3NIdG1sQXJyYXkpKTtcXFxcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW5nc0h0bWxBcnJheS5sZW5ndGg7IGkrKykge1xcXFxuICAgICAgICAgICAgICAgIGxldCBpbmdIdG1sID0gaW5nc0h0bWxBcnJheVtpXTtcXFxcbiAgICAgICAgICAgICAgICAvPHRkIGNsYXNzPVxcXFxcXFwibmFtZVxcXFxcXFwiPihbXFxcXFxcXFxzXFxcXFxcXFxTXSo/KTxcXFxcXFxcXC90ZD4vLnRlc3QoaW5nSHRtbCk7XFxcXG4gICAgICAgICAgICAgICAgbGV0IGluZ05hbWUgPSBSZWdFeHAuJDE7XFxcXG4gICAgICAgICAgICAgICAgaWYgKGluZ05hbWUgIT09ICcnKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgIGluZ05hbWUgPSBnZXRDb2xvclRleHQocGFyc2VEb21Gb3JIdG1sKGluZ05hbWUsICdUZXh0JyksIGluZ05hbWVDb2xvcik7XFxcXG4gICAgICAgICAgICAgICAgICAgIC88dGQgY2xhc3M9XFxcXFxcXCJ1bml0XFxcXFxcXCI+KFtcXFxcXFxcXHNcXFxcXFxcXFNdKj8pPFxcXFxcXFxcL3RkPi8udGVzdChpbmdIdG1sKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgbGV0IGluZ1VuaXQgPSBSZWdFeHAuJDE7XFxcXG4gICAgICAgICAgICAgICAgICAgIGluZ1VuaXQgPSBnZXRDb2xvclRleHQoKChpbmdVbml0ID09PSBpbmdOYW1lKSA/ICfmnKrnn6UnIDogaW5nVW5pdCksIGluZ1VuaXRDb2xvcik7XFxcXG4gICAgICAgICAgICAgICAgICAgIGxldCBpbmcgPSBpbmdOYW1lICsgJyAnICsgaW5nVW5pdDtcXFxcbiAgICAgICAgICAgICAgICAgICAgaW5nID0gaSA9PT0gKGluZ3NIdG1sQXJyYXkubGVuZ3RoIC0gMSkgPyBpbmcgOiBpbmcgKyAoaW5nc01vZGUgPT09IDEgPyAnPGJyPicgOiAn44CBJyk7XFxcXG4gICAgICAgICAgICAgICAgICAgIGluZ3MgKz0gaW5nXFxcXG4gICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgaW5ncyA9IChnZXRCaWdUZXh0KGdldFRpdGxlVGV4dCgn55So5paZJykpICsgJzxicj4nKSArIGluZ3M7XFxcXG4gICAgICAgIH0gY2F0Y2ggKGUpIHt9XFxcXG4gICAgICAgIGRlc2MgPSBzaG93RGVzYyA9PT0gMSA/IGRlc2MgOiAnJztcXFxcbiAgICAgICAgaWYgKG1vZGVsX2xpbmVfaGVpZ2h0ID4gMCkge1xcXFxuICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogZ2V0QmxvY2txdW90ZVRleHQoYXV0aG9yICsgZGVzYykgKyAoc2hvd1ZpZGVvID09PSAnJyA/IGdldEdyZXlUZXh0KGNvbnRlbnRUaXBzKSA6IHNob3dWaWRlbyArICc8YnI+JylcXFxcbiAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtb2RlbF9saW5lX2hlaWdodDsgaSsrKSB7XFxcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdsaW5lX2JsYW5rJ1xcXFxuICAgICAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogaW5nc1xcXFxuICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1vZGVsX2xpbmVfaGVpZ2h0OyBpKyspIHtcXFxcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnXFxcXG4gICAgICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiBnZXRCbG9ja3F1b3RlVGV4dChhdXRob3IgKyBkZXNjKSArIChzaG93VmlkZW8gPT09ICcnID8gJycgOiBzaG93VmlkZW8gKyAnPGJyPjxicj4nKSArIGluZ3NcXFxcbiAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICB9XFxcXG4gICAgfSBjYXRjaCAoZSkge31cXFxcblxcXFxuICAgIC8qKlxcXFxuICAgICAqIOato+aWh1xcXFxuICAgICAqL1xcXFxuICAgIHRyeSB7XFxcXG4gICAgICAgIGxldCBzdGVwc1RpdGxlID0gZ2V0QmlnVGV4dChnZXRUaXRsZVRleHQoJycgKyBwYXJzZURvbUZvckh0bWwobWFpbkh0bWwsICcjc3RlcHMmJlRleHQnKSArICcnKSk7XFxcXG4gICAgICAgIGxldCBzdGVwc0h0bWxBcnJheSA9IHBhcnNlRG9tRm9yQXJyYXkobWFpbkh0bWwsICcuc3RlcHMmJi5jb250YWluZXInKTtcXFxcbiAgICAgICAgaWYgKG11bHRpU3RlcE1vZGVsICYmIG1vZGVsX2xpbmVfaGVpZ2h0ID4gMCkge1xcXFxuICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogc3RlcHNUaXRsZVxcXFxuICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgbGV0IHN0ZXBzID0gJyc7XFxcXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RlcHNIdG1sQXJyYXkubGVuZ3RoOyBpKyspIHtcXFxcbiAgICAgICAgICAgIGxldCBzdGVwID0gcGFyc2VEb21Gb3JIdG1sKHN0ZXBzSHRtbEFycmF5W2ldLCAnLmNvbnRhaW5lciYmSHRtbCcpO1xcXFxuICAgICAgICAgICAgc3RlcCA9IGdldFN0cm9uZ1RleHQoJ+atpemqpCcgKyAoaSArIDEpICsgJzxicj4nKSArXFxcXG4gICAgICAgICAgICAgICAgc3RlcFxcXFxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC88XFxcXFxcXFwvcD4gPGltZyBzcmM9L2csICc8YnI+PGltZyBzcmM9JylcXFxcbiAgICAgICAgICAgICAgICAucmVwbGFjZVdpdGhDYWxsYmFjaygvKDxpbWcgKHNyY3xkYXRhLXNyYyk9XFxcXFxcXCIoLio/KVxcXFxcXFwiKFtcXFxcXFxcXHNcXFxcXFxcXFNdKj8pPikvZywgXFxcXFxcXCI8aW1nIGRhdGEtdj5cXFxcXFxcIiwgaW1nVGFnUmVwbGFjZW1lbnQyKVxcXFxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC8oPHAgY2xhc3M9XFxcXFxcXCJ0ZXh0XFxcXFxcXCIgc3R5bGU9XFxcXFxcXCIuKj9cXFxcXFxcIj4pfCg8XFxcXFxcXFwvcD4pLywgJycpO1xcXFxuICAgICAgICAgICAgaWYgKG11bHRpU3RlcE1vZGVsICYmIG1vZGVsX2xpbmVfaGVpZ2h0ID4gMCkge1xcXFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBzdGVwXFxcXG4gICAgICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICAgICAgc3RlcHMgKz0gJzxicj48YnI+JyArIHN0ZXA7XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgaWYgKCEobXVsdGlTdGVwTW9kZWwgJiYgbW9kZWxfbGluZV9oZWlnaHQgPiAwKSkge1xcXFxuICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogc3RlcHNUaXRsZSArIHN0ZXBzXFxcXG4gICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgfVxcXFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1vZGVsX2xpbmVfaGVpZ2h0OyBpKyspIHtcXFxcbiAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdsaW5lX2JsYW5rJ1xcXFxuICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgLyoqXFxcXG4gICAgICAgICAqIFRpcHNcXFxcbiAgICAgICAgICovXFxcXG4gICAgICAgIGxldCB0aXBzID0gJyc7XFxcXG4gICAgICAgIHRyeSB7XFxcXG4gICAgICAgICAgICBsZXQgdGlwc0h0bWwgPSBwYXJzZURvbUZvckh0bWwobWFpbkh0bWwsICcudGlwLWNvbnRhaW5lciYmSHRtbCcpO1xcXFxuICAgICAgICAgICAgbGV0IHRpcHNUaXRsZSA9IGdldEJpZ1RleHQoZ2V0VGl0bGVUZXh0KHBhcnNlRG9tRm9ySHRtbCh0aXBzSHRtbCwgJ2gyJiZUZXh0JykpKTtcXFxcbiAgICAgICAgICAgIHRpcHNDb250ZW50ID0gJzxicj4nICsgcGFyc2VEb21Gb3JIdG1sKHRpcHNIdG1sLCAnLnRpcCYmSHRtbCcpO1xcXFxuICAgICAgICAgICAgdGlwcyA9IGdldENvbG9yVGV4dCh0aXBzVGl0bGUgKyB0aXBzQ29udGVudCwgdGlwc0NvbG9yKTtcXFxcbiAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRpcHNcXFxcbiAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtb2RlbF9saW5lX2hlaWdodDsgaSsrKSB7XFxcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdsaW5lX2JsYW5rJ1xcXFxuICAgICAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICB9IGNhdGNoIChlKSB7fVxcXFxuICAgIH0gY2F0Y2ggKGUpIHt9XFxcXG5cXFxcbiAgICAvKipcXFxcbiAgICAgKiBmb290ZXJcXFxcbiAgICAgKi9cXFxcbiAgICB0cnkge1xcXFxuICAgICAgICBsZXQgZm9vdGVySHRtbCA9IHBhcnNlRG9tRm9ySHRtbChodG1sLCAnLnJlY2lwZS1zdGF0cyYmSHRtbCcpO1xcXFxuICAgICAgICBsZXQgdGltZSA9IHBhcnNlRG9tRm9ySHRtbChmb290ZXJIdG1sLCAnLnRpbWUmJlRleHQnKTtcXFxcbiAgICAgICAgbGV0IGNvbGxlY3Rpb25Db3VudCA9IHBhcnNlRG9tRm9ySHRtbChmb290ZXJIdG1sLCAnLnB2JiZUZXh0Jyk7XFxcXG4gICAgICAgIGxldCBjb3B5cmlnaHQgPSBwYXJzZURvbUZvckh0bWwoZm9vdGVySHRtbCwgJy5jb3B5cmlnaHQmJlRleHQnKTtcXFxcbiAgICAgICAgbGV0IGZvb3RlciA9IGdldFNtYWxsVGV4dChnZXRHcmV5VGV4dCh0aW1lICsgJzxicj4nICsgY29sbGVjdGlvbkNvdW50ICsgJzxicj4nICsgY29weXJpZ2h0KSlcXFxcbiAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiBmb290ZXJcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgfSBjYXRjaCAoZSkge31cXFxcblxcXFxuICAgIC8qKlxcXFxuICAgICAqIOivhOiuulxcXFxuICAgICAqL1xcXFxuICAgIHRyeSB7XFxcXG4gICAgICAgIGxldCBjb21tZW50SHRtbCA9IHBhcnNlRG9tRm9ySHRtbChodG1sLCAnLnBhZ2UtYm90dG9tLW91dGVyJiYucGFnZS1jb250YWluZXImJkh0bWwnKTtcXFxcbiAgICAgICAgbGV0IGNvbW1lbnRUaXRsZSA9IGdldEJpZ1RleHQoZ2V0VGl0bGVUZXh0KHBhcnNlRG9tRm9ySHRtbChjb21tZW50SHRtbCwgJ2gyJiZUZXh0JykpKTtcXFxcbiAgICAgICAgbGV0IGNvbW1lbnRzSHRtbEFycmF5ID0gcGFyc2VEb21Gb3JBcnJheShjb21tZW50SHRtbCwgJy5xdWVzdGlvbi1saXN0JiYucmVjaXBlLXF1ZXNpb25zLWNvbnRlbnQnKTtcXFxcbiAgICAgICAgaWYgKGNvbW1lbnRzSHRtbEFycmF5Lmxlbmd0aCA+IDApIHtcXFxcbiAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdsaW5lX2JsYW5rJ1xcXFxuICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiBjb21tZW50VGl0bGVcXFxcbiAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICB9XFxcXG4gICAgICAgIGxldCBjb21tZW50ID0gJyc7XFxcXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29tbWVudHNIdG1sQXJyYXkubGVuZ3RoOyBpKyspIHtcXFxcbiAgICAgICAgICAgIGxldCBjb21tZW50c0Jsb2NrSHRtbEFycmF5ID0gcGFyc2VEb21Gb3JBcnJheShjb21tZW50c0h0bWxBcnJheVtpXSwgJ2xpJiYuYXZhdGFyLXJpZ2h0LTInKTtcXFxcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgY29tbWVudHNCbG9ja0h0bWxBcnJheS5sZW5ndGg7IGorKykge1xcXFxuICAgICAgICAgICAgICAgIGxldCByZXBseUNvbW1lbnQgPSAnJztcXFxcbiAgICAgICAgICAgICAgICBsZXQgYXV0aG9yQ29tbWVudCA9ICcnO1xcXFxuICAgICAgICAgICAgICAgIGlmIChjb21tZW50c0Jsb2NrSHRtbEFycmF5W2pdLmluZGV4T2YoJ+i1nicpID4gLTEpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlcGxpZXIgPSBnZXRBdXRob3JUZXh0KHBhcnNlRG9tRm9ySHRtbChjb21tZW50c0Jsb2NrSHRtbEFycmF5W2pdLCAnLmluZm8mJmEmJlRleHQnKSk7XFxcXG4gICAgICAgICAgICAgICAgICAgIGxldCByZXBseV90aW1lID0gJyc7XFxcXG4gICAgICAgICAgICAgICAgICAgIGlmICgvKDxzcGFuIGNsYXNzPVxcXFxcXFwibm9ybWFsLWZvbnQgZ3JheS1mb250IGFsaWduLWJhc2VsaW5lXFxcXFxcXCI+W1xcXFxcXFxcc1xcXFxcXFxcU10qPzxcXFxcXFxcXC9zcGFuPikvLnRlc3QoY29tbWVudHNCbG9ja0h0bWxBcnJheVtqXSkgPT09IHRydWUpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcGx5X3RpbWUgPSBnZXRHcmV5VGV4dChSZWdFeHAuJDEpO1xcXFxuICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgICAgIGxldCByZXBseV9tZXRhID0gZ2V0Q29tbWVudE1ldGEoJzxicj4nICsgcmVwbGllciArIHJlcGx5X3RpbWUpO1xcXFxuICAgICAgICAgICAgICAgICAgICBsZXQgcmVwbHlfY29udGVudCA9IHBhcnNlRG9tRm9ySHRtbChjb21tZW50c0Jsb2NrSHRtbEFycmF5W2pdLCAnLnJpZ2h0LWJvdHRvbSYmSHRtbCcpO1xcXFxuICAgICAgICAgICAgICAgICAgICByZXBseUNvbW1lbnQgPSByZXBseV9jb250ZW50ICsgcmVwbHlfbWV0YTtcXFxcbiAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgaWYgKGNvbW1lbnRzQmxvY2tIdG1sQXJyYXlbal0uaW5kZXhPZign5L2c6ICF5Zue5aSNJykgPiAtMSkge1xcXFxuICAgICAgICAgICAgICAgICAgICB0cnkge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGF1dGhvciA9IGdldEF1dGhvclRleHQoJ+S9nOiAheWbnuWkjScpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRpbWUgPSAnJztcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgvKDxzcGFuIGNsYXNzPVxcXFxcXFwibm9ybWFsLWZvbnQgZ3JheS1mb250IGFsaWduLWJhc2VsaW5lXFxcXFxcXCI+W1xcXFxcXFxcc1xcXFxcXFxcU10qPzxcXFxcXFxcXC9zcGFuPikvLnRlc3QoY29tbWVudHNCbG9ja0h0bWxBcnJheVtqXSkgPT09IHRydWUpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lID0gZ2V0R3JleVRleHQoUmVnRXhwLiQxKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtZXRhID0gZ2V0Q29tbWVudE1ldGEoJzxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsnICsgYXV0aG9yICsgdGltZSk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29tbWVudENvbnRlbnQgPSAnPHNwYW4+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9zcGFuPicgK1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlRG9tRm9ySHRtbChjb21tZW50c0Jsb2NrSHRtbEFycmF5W2pdLCAnLnJpZ2h0LWJvdHRvbSYmSHRtbCcpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgYXV0aG9yQ29tbWVudCA9IGNvbW1lbnRDb250ZW50ICsgbWV0YTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGF1dGhvckNvbW1lbnQgPSAnPGJyPicgKyBhdXRob3JDb21tZW50O1xcXFxuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fVxcXFxuICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICBjb21tZW50ID0gcmVwbHlDb21tZW50ICsgYXV0aG9yQ29tbWVudDtcXFxcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogY29tbWVudC5yZXBsYWNlKC88ZGl2IGNsYXNzPVxcXFxcXFwicmVjaXBlLXF1ZXN0aW9ucy1kaWdnXFxcXFxcXCI+L2csICcnKVxcXFxuICAgICAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmUnXFxcXG4gICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgfVxcXFxuICAgIH0gY2F0Y2ggKGUpIHt9XFxcXG59IGNhdGNoIChlKSB7fVxcXFxuXFxcXG5cXFxcbnJlcy5kYXRhID0gZDtcXFxcbnNldEhvbWVSZXN1bHQocmVzKTtcXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLlr4zmlofmnKzpgJrnlKjlh73mlbBcXFwiLFxcXCJwYXRoXFxcIjpcXFwicmljaHRleHRcXFwiLFxcXCJydWxlXFxcIjpcXFwiZnVuY3Rpb24gZ2V0QmlnVGV4dCh0ZXh0KSB7XFxcXG4gICAgcmV0dXJuICc8YmlnPicgKyB0ZXh0ICsgJzwvYmlnPic7XFxcXG59XFxcXG5cXFxcbmZ1bmN0aW9uIGdldFNtYWxsVGV4dCh0ZXh0KSB7XFxcXG4gICAgcmV0dXJuICc8c21hbGw+JyArIHRleHQgKyAnPC9zbWFsbD4nO1xcXFxufVxcXFxuXFxcXG5mdW5jdGlvbiBnZXRTdHJvbmdUZXh0KHRleHQpIHtcXFxcbiAgICByZXR1cm4gJzxzdHJvbmc+JyArIHRleHQgKyAnPC9zdHJvbmc+JztcXFxcbn1cXFxcblxcXFxuZnVuY3Rpb24gZ2V0VGl0bGVUZXh0KHRleHQpIHtcXFxcbiAgICByZXR1cm4gZ2V0U3Ryb25nVGV4dCh0ZXh0KTtcXFxcbn1cXFxcblxcXFxuZnVuY3Rpb24gZ2V0Q29sb3JUZXh0KHRleHQsIGNvbG9yKSB7XFxcXG4gICAgcmV0dXJuICc8Zm9udCBjb2xvcj1cXFxcXFxcIicgKyBjb2xvciArICdcXFxcXFxcIj4nICsgdGV4dCArICc8L2ZvbnQ+JztcXFxcbn1cXFxcblxcXFxuZnVuY3Rpb24gZ2V0R3JleVRleHQodGV4dCkge1xcXFxuICAgIHJldHVybiBnZXRDb2xvclRleHQodGV4dCwgJ2dyZXknKTtcXFxcbn1cXFxcblxcXFxuZnVuY3Rpb24gZ2V0QXV0aG9yVGV4dCh0ZXh0KSB7XFxcXG4gICAgcmV0dXJuIGdldENvbG9yVGV4dCh0ZXh0LCB1c2VyQ29sb3IpO1xcXFxufVxcXFxuXFxcXG5mdW5jdGlvbiBnZXRDb2RlVGV4dCh0ZXh0KSB7XFxcXG4gICAgcmV0dXJuICc8Y29kZT4nICsgdGV4dCArICc8L2NvZGU+JztcXFxcbn1cXFxcblxcXFxuZnVuY3Rpb24gZ2V0QmxvY2txdW90ZVRleHQodGV4dCkge1xcXFxuICAgIHJldHVybiAnPGJsb2NrcXVvdGU+JyArIHRleHQgKyAnPC9ibG9ja3F1b3RlPidcXFxcbn1cXFxcblxcXFxuZnVuY3Rpb24gZ2V0QWRkcmVzc1RhZyh1cmwsIHRleHQpIHtcXFxcbiAgICByZXR1cm4gJzxhIGhyZWY9XFxcXFxcXCInICsgdXJsICsgJ1xcXFxcXFwiPicgKyB0ZXh0ICsgJzwvYT4nXFxcXG59XFxcXG5cXFxcbmZ1bmN0aW9uIGdldENvbW1lbnRNZXRhKGh0bWwpIHtcXFxcbiAgICByZXR1cm4gZ2V0U21hbGxUZXh0KGh0bWwpO1xcXFxufVxcXFxuXFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi6I635Y+W5Liq5Lq66YWN572uXFxcIixcXFwicGF0aFxcXCI6XFxcInNldHRpbmdzXFxcIixcXFwicnVsZVxcXCI6XFxcIi8qKlxcXFxuICog5Liq5Lq66YWN572u5bey56e75Yiw6aKE5aSE55CG77yM6K+35YmN5b6A6aKE5aSE55CG6L+b6KGM6YWN572uXFxcXG4gKi9cXFxcblxcXFxuLyoqXFxcXG4gKiDmmK/lkKblvIDlkK/kvKrlvILmraXliqDovb3mqKHlvI8gMS/lvIDlkK8gMC/kuI3lvIDlkK9cXFxcbiAqXFxcXG4gKiDms6jmhI/vvJrkuoznuqfkvJrljaHlj6/ku6XlsJ3or5XlvIDlkK/or6XpgInpobnvvIzkvYblj6/og73lr7zoh7Tmn5Dkupvlm77niYfkuI3mmL7npLpcXFxcbiAqL1xcXFxubGV0IHZhbHVlSW5NYXAgPSBnZXRWYXIoJ3hpYWNodV9tdWx0aVN0ZXBNb2RlbCcpO1xcXFxubGV0IG11bHRpU3RlcE1vZGVsID0gMDtcXFxcbnZhbHVlSW5NYXAgPSBwYXJzZUludCh2YWx1ZUluTWFwKTtcXFxcbm11bHRpU3RlcE1vZGVsID0gaXNOYU4odmFsdWVJbk1hcCkgPT09IHRydWUgPyBtdWx0aVN0ZXBNb2RlbCA6IHZhbHVlSW5NYXA7XFxcXG4vLyDmmK/lkKbpmpDol4/lm77niYco55yB5rWB5qih5byPKSAxL+makOiXjyAwL+S4jemakOiXj1xcXFxubGV0IGhpZGVJbWcgPSAwO1xcXFxudmFsdWVJbk1hcCA9IGdldFZhcigneGlhY2h1X2hpZGVJbWcnKTtcXFxcbnZhbHVlSW5NYXAgPSBwYXJzZUludCh2YWx1ZUluTWFwKTtcXFxcbmhpZGVJbWcgPSBpc05hTih2YWx1ZUluTWFwKSA9PT0gdHJ1ZSA/IGhpZGVJbWcgOiB2YWx1ZUluTWFwO1xcXFxuLy8g5Zu+54mH6LSo6YeP77yM6buY6K6kIDMwMO+8jOaOqOiNkCA2MDAg5oiWIDgwMFxcXFxubGV0IGltZ1dpZHRoID0gNjAwO1xcXFxudmFsdWVJbk1hcCA9IGdldFZhcigneGlhY2h1X2ltZ1dpZHRoJyk7XFxcXG52YWx1ZUluTWFwID0gcGFyc2VJbnQodmFsdWVJbk1hcCk7XFxcXG5pbWdXaWR0aCA9IGlzTmFOKHZhbHVlSW5NYXApID09PSB0cnVlID8gaW1nV2lkdGggOiB2YWx1ZUluTWFwO1xcXFxuLy8g5piv5ZCm5pi+56S655yL5aSn5Zu+KOmYsuatouaXoOazleWKoOi9veWbvueJhykgMS/mmL7npLogMC/kuI3mmL7npLpcXFxcbmxldCBzaG93RnVsbEltZ1RpcHMgPSAxO1xcXFxudmFsdWVJbk1hcCA9IGdldFZhcigneGlhY2h1X3Nob3dGdWxsSW1nVGlwcycpO1xcXFxudmFsdWVJbk1hcCA9IHBhcnNlSW50KHZhbHVlSW5NYXApO1xcXFxuc2hvd0Z1bGxJbWdUaXBzID0gaXNOYU4odmFsdWVJbk1hcCkgPT09IHRydWUgPyBzaG93RnVsbEltZ1RpcHMgOiB2YWx1ZUluTWFwO1xcXFxuLy8g55So5oi36aKc6ImyKlxcXFxubGV0IHVzZXJDb2xvciA9IFxcXFxcXFwiIzI5NzlGRlxcXFxcXFwiO1xcXFxudmFsdWVJbk1hcCA9IGdldFZhcigneGlhY2h1X3VzZXJDb2xvcicpO1xcXFxudXNlckNvbG9yID0gdmFsdWVJbk1hcCA9PT0gJycgPyB1c2VyQ29sb3IgOiB2YWx1ZUluTWFwO1xcXFxuLy8g5piv5ZCm5pi+56S66I+c55qE5o+P6L+wIDEv5pi+56S6IDAv5LiN5pi+56S6XFxcXG5sZXQgc2hvd0Rlc2MgPSAxO1xcXFxudmFsdWVJbk1hcCA9IGdldFZhcigneGlhY2h1X3Nob3dEZXNjJyk7XFxcXG52YWx1ZUluTWFwID0gcGFyc2VJbnQodmFsdWVJbk1hcCk7XFxcXG5zaG93RGVzYyA9IGlzTmFOKHZhbHVlSW5NYXApID09PSB0cnVlID8gc2hvd0Rlc2MgOiB2YWx1ZUluTWFwO1xcXFxuLy8g55So5paZ5qih5Z2X5pi+56S65pa55byPIDEv5a6M5pW06KeG5Zu+IDAv57yp55Wl5qih5byPXFxcXG5sZXQgaW5nc01vZGUgPSAwO1xcXFxudmFsdWVJbk1hcCA9IGdldFZhcigneGlhY2h1X2luZ3NNb2RlJyk7XFxcXG52YWx1ZUluTWFwID0gcGFyc2VJbnQodmFsdWVJbk1hcCk7XFxcXG5pbmdzTW9kZSA9IGlzTmFOKHZhbHVlSW5NYXApID09PSB0cnVlID8gaW5nc01vZGUgOiB2YWx1ZUluTWFwO1xcXFxuLy8g55So5paZ5ZCN6aKc6ImyXFxcXG5sZXQgaW5nTmFtZUNvbG9yID0gXFxcXFxcXCIjNDZjMjAwXFxcXFxcXCI7XFxcXG52YWx1ZUluTWFwID0gZ2V0VmFyKCd4aWFjaHVfaW5nTmFtZUNvbG9yJyk7XFxcXG5pbmdOYW1lQ29sb3IgPSB2YWx1ZUluTWFwID09PSAnJyA/IGluZ05hbWVDb2xvciA6IHZhbHVlSW5NYXA7XFxcXG4vLyDnlKjmlpnph4/popzoibJcXFxcbmxldCBpbmdVbml0Q29sb3IgPSBcXFxcXFxcIiM3MDZhNmJcXFxcXFxcIjtcXFxcbnZhbHVlSW5NYXAgPSBnZXRWYXIoJ3hpYWNodV9pbmdVbml0Q29sb3InKTtcXFxcbmluZ1VuaXRDb2xvciA9IHZhbHVlSW5NYXAgPT09ICcnID8gaW5nVW5pdENvbG9yIDogdmFsdWVJbk1hcDtcXFxcbi8vIOWwj+i0tOWjq+minOiJslxcXFxubGV0IHRpcHNDb2xvciA9IFxcXFxcXFwiIzcwNmE2YlxcXFxcXFwiO1xcXFxudmFsdWVJbk1hcCA9IGdldFZhcigneGlhY2h1X3RpcHNDb2xvcicpO1xcXFxudGlwc0NvbG9yID0gdmFsdWVJbk1hcCA9PT0gJycgPyB0aXBzQ29sb3IgOiB2YWx1ZUluTWFwO1xcXFxuLy8g5qih5Z2X5LmL6Ze055qE6Ze06ZqUKlxcXFxubGV0IG1vZGVsX2xpbmVfaGVpZ2h0ID0gMTtcXFxcbnZhbHVlSW5NYXAgPSBnZXRWYXIoJ3hpYWNodV9tb2RlbF9saW5lX2hlaWdodCcpO1xcXFxudmFsdWVJbk1hcCA9IHBhcnNlSW50KHZhbHVlSW5NYXApO1xcXFxubW9kZWxfbGluZV9oZWlnaHQgPSBpc05hTih2YWx1ZUluTWFwKSA9PT0gdHJ1ZSA/IG1vZGVsX2xpbmVfaGVpZ2h0IDogdmFsdWVJbk1hcDtcXFxcbi8vIOato+aWh+aPkOekuipcXFxcbmxldCBjb250ZW50VGlwcyA9ICfkuIvljqjnmoTml7blgJnkuIDlrpropoHms6jmhI/lronlhajlk6bvvZ4nICsgJzxicj4nO1xcXFxudmFsdWVJbk1hcCA9IGdldFZhcigneGlhY2h1X2NvbnRlbnRUaXBzJyk7XFxcXG5jb250ZW50VGlwcyA9IHZhbHVlSW5NYXAgPT09ICcnID8gY29udGVudFRpcHMgOiB2YWx1ZUluTWFwO1xcXCJ9XVwifSIsInBpY1VybCI6Imh0dHBzOi8vaTIuY2h1aW1nLmNvbS8zOGZhMGM2NWZiNzE0ZGRlOGZmYmE3ZDJiNmMwMmYwMF8xMDgwd184NjRoLmpwZz9pbWFnZVZpZXcyLzEvdy80MzAvaC8yNzIvaW50ZXJsYWNlLzEvcS85MCIsInRpdGxlIjoi56CC6ZSF6ICB5q+N6bih5rGk77yM6LaF566A5Y2V5pWZ56iL772e77yBIn0=
Add Comment
Please, Sign In to add comment