| 1 | PjA/eFswXToiICIsST14Lmxlbmd0aD4wP3guc3Vic3RyKDEpOngsUj1ULmxpbmVkZWxpbWl0ZXJzW2tdO2lmKCIgIj09PUMpQSsrO2Vsc2UgaWYoIi0iPT09QylhLnNwbGljZShBLDEpLG8uc3BsaWNlKEEsMSk7ZWxzZSBpZigiKyI9PT1DKWEuc3BsaWNlKEEsMCxJKSxvLnNwbGljZShBLDAsUiksQSsrO2Vsc2UgaWYoIlxcIj09PUMpe3ZhciBPPVQubGluZXNbay0xXT9ULmxpbmVzW2stMV1bMF06bnVsbDsiKyI9PT1PP3I9ITA6Ii0iPT09TyYmKGk9ITApfX19aWYocilmb3IoOyFhW2EubGVuZ3RoLTFdOylhLnBvcCgpLG8ucG9wKCk7ZWxzZSBpJiYoYS5wdXNoKCIiKSxvLnB1c2goIlxuIikpO2Zvcih2YXIgTj0wO048YS5sZW5ndGgtMTtOKyspYVtOXT1hW05dK29bTl07cmV0dXJuIGEuam9pbigiIil9ZnVuY3Rpb24gUyhlLHQsbixyLGksYSxvKXtvfHwobz17fSksInVuZGVmaW5lZCI9PT10eXBlb2Ygby5jb250ZXh0JiYoby5jb250ZXh0PTQpO3ZhciBzPXUobixyLG8pO2Z1bmN0aW9uIGwoZSl7cmV0dXJuIGUubWFwKChmdW5jdGlvbihlKXtyZXR1cm4iICIrZX0pKX1zLnB1c2goe3ZhbHVlOiIiLGxpbmVzOltdfSk7Zm9yKHZhciBjPVtdLGQ9MCxwPTAsZj1bXSxtPTEsZz0xLGI9ZnVuY3Rpb24oZSl7dmFyIHQ9c1tlXSxpPXQubGluZXN8fHQudmFsdWUucmVwbGFjZSgvXG4kLywiIikuc3BsaXQoIlxuIik7aWYodC5saW5lcz1pLHQuYWRkZWR8fHQucmVtb3ZlZCl7dmFyIGE7aWYoIWQpe3ZhciB1PXNbZS0xXTtkPW0scD1nLHUmJihmPW8uY29udGV4dD4wP2wodS5saW5lcy5zbGljZSgtby5jb250ZXh0KSk6W10sZC09Zi5sZW5ndGgscC09Zi5sZW5ndGgpfShhPWYpLnB1c2guYXBwbHkoYSxoKGkubWFwKChmdW5jdGlvbihlKXtyZXR1cm4odC5hZGRlZD8iKyI6Ii0iKStlfSkpKSksdC5hZGRlZD9nKz1pLmxlbmd0aDptKz1pLmxlbmd0aH1lbHNle2lmKGQpaWYoaS5sZW5ndGg8PTIqby5jb250ZXh0JiZlPHMubGVuZ3RoLTIpe3ZhciBiOyhiPWYpLnB1c2guYXBwbHkoYixoKGwoaSkpKX1lbHNle3ZhciB5LHY9TWF0aC5taW4oaS5sZW5ndGgsby5jb250ZXh0KTsoeT1mKS5wdXNoLmFwcGx5KHksaChsKGkuc2xpY2UoMCx2KSkpKTt2YXIgRT17b2xkU3RhcnQ6ZCxvbGRMaW5lczptLWQrdixuZXdTdGFydDpwLG5ld0xpbmVzOmctcCt2LGxpbmVzOmZ9O2lmKGU+PXMubGVuZ3RoLTImJmkubGVuZ3RoPD1vLmNvbnRleHQpe3ZhciB3PS9cbiQvLnRlc3QobiksUz0vXG4kLy50ZXN0KHIpLF89MD09aS5sZW5ndGgmJmYubGVuZ3RoPkUub2xkTGluZXM7IXcmJl8mJmYuc3BsaWNlKEUub2xkTGluZXMsMCwiXFwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZSIpLCh3fHxfKSYmU3x8Zi5wdXNoKCJcXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlIil9Yy5wdXNoKEUpLGQ9MCxwPTAsZj1bXX1tKz1pLmxlbmd0aCxnKz1pLmxlbmd0aH19LHk9MDt5PHMubGVuZ3RoO3krKyliKHkpO3JldHVybntvbGRGaWxlTmFtZTplLG5ld0ZpbGVOYW1lOnQsb2xkSGVhZGVyOmksbmV3SGVhZGVyOmEsaHVua3M6Y319ZnVuY3Rpb24gXyhlLHQsbixyLGksYSxvKXt2YXIgcz1TKGUsdCxuLHIsaSxhLG8pLGw9W107ZT09dCYmbC5wdXNoKCJJbmRleDogIitlKSxsLnB1c2goIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKSxsLnB1c2goIi0tLSAiK3Mub2xkRmlsZU5hbWUrKCJ1bmRlZmluZWQiPT09dHlwZW9mIHMub2xkSGVhZGVyPyIiOiJcdCIrcy5vbGRIZWFkZXIpKSxsLnB1c2goIisrKyAiK3MubmV3RmlsZU5hbWUrKCJ1bmRlZmluZWQiPT09dHlwZW9mIHMubmV3SGVhZGVyPyIiOiJcdCIrcy5uZXdIZWFkZXIpKTtmb3IodmFyIGM9MDtjPHMuaHVua3MubGVuZ3RoO2MrKyl7dmFyIHU9cy5odW5rc1tjXTtsLnB1c2goIkBAIC0iK3Uub2xkU3RhcnQrIiwiK3Uub2xkTGluZXMrIiArIit1Lm5ld1N0YXJ0KyIsIit1Lm5ld0xpbmVzKyIgQEAiKSxsLnB1c2guYXBwbHkobCx1LmxpbmVzKX1yZXR1cm4gbC5qb2luKCJcbiIpKyJcbiJ9ZnVuY3Rpb24gVChlLHQpe2lmKHQubGVuZ3RoPmUubGVuZ3RoKXJldHVybiExO2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKWlmKHRbbl0hPT1lW25dKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIEEoZSl7dmFyIHQ9ZnVuY3Rpb24gZSh0KXt2YXIgbj0wLHI9MDtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXtpZigic3RyaW5nIiE9PXR5cGVvZiB0KXt2YXIgaT1lKHQubWluZSksYT1lKHQudGhlaXJzKTt2b2lkIDAhPT1uJiYoaS5vbGRMaW5lcz09PWEub2xkTGluZXM/bis9aS5vbGRMaW5lczpuPXZvaWQgMCksdm9pZCAwIT09ciYmKGkubmV3TGluZXM9PT1hLm5ld0xpbmVzP3IrPWkubmV3TGluZXM6cj12b2lkIDApfWVsc2Ugdm9pZCAwPT09cnx8IisiIT09dFswXSYmIiAiIT09dFswXXx8cisrLHZvaWQgMD09PW58fCItIiE9PXRbMF0mJiIgIiE9PXRbMF18fG4rK30pKSx7b2xkTGluZXM6bixuZXdMaW5lczpyfX0oZS5saW5lcyksbj10Lm9sZExpbmVzLHI9dC5uZXdMaW5lczt2b2lkIDAhPT1uP2Uub2xkTGluZXM9bjpkZWxldGUgZS5vbGRMaW5lcyx2b2lkIDAhPT1yP2UubmV3TGluZXM9cjpkZWxldGUgZS5uZXdMaW5lc31mdW5jdGlvbiBrKGUsdCl7aWYoInN0cmluZyI9PT10eXBlb2YgZSl7aWYoL15AQC9tLnRlc3QoZSl8fC9eSW5kZXg6L20udGVzdChlKSlyZXR1cm4gdihlKVswXTtpZighdCl0aHJvdyBuZXcgRXJyb3IoIk11c3QgcHJvdmlkZSBhIGJhc2UgcmVmZXJlbmNlIG9yIHBhc3MgaW4gYSBwYXRjaCIpO3JldHVybiBTKHZvaWQgMCx2b2lkIDAsdCxlKX1yZXR1cm4gZX1mdW5jdGlvbiB4KGUpe3JldHVybiBlLm5ld0ZpbGVOYW1lJiZlLm5ld0ZpbGVOYW1lIT09ZS5vbGRGaWxlTmFtZX1mdW5jdGlvbiBDKGUsdCxuKXtyZXR1cm4gdD09PW4/dDooZS5jb25mbGljdD0hMCx7bWluZTp0LHRoZWlyczpufSl9ZnVuY3Rpb24gSShlLHQpe3JldHVybiBlLm9sZFN0YXJ0PHQub2xkU3RhcnQmJmUub2xkU3RhcnQrZS5vbGRMaW5lczx0Lm9sZFN0YXJ0fWZ1bmN0aW9uIFIoZSx0KXtyZXR1cm57b2xkU3RhcnQ6ZS5vbGRTdGFydCxvbGRMaW5lczplLm9sZExpbmVzLG5ld1N0YXJ0OmUubmV3U3RhcnQrdCxuZXdMaW5lczplLm5ld0xpbmVzLGxpbmVzOmUubGluZXN9fWZ1bmN0aW9uIE8oZSx0LG4scixpKXt2YXIgYT17b2Zmc2V0OnQsbGluZXM6bixpbmRleDowfSxvPXtvZmZzZXQ6cixsaW5lczppLGluZGV4OjB9O2ZvcihEKGUsYSxvKSxEKGUsbyxhKTthLmluZGV4PGEubGluZXMubGVuZ3RoJiZvLmluZGV4PG8ubGluZXMubGVuZ3RoOyl7dmFyIHM9YS5saW5lc1thLmluZGV4XSxsPW8ubGluZXNbby5pbmRleF07aWYoIi0iIT09c1swXSYmIisiIT09c1swXXx8Ii0iIT09bFswXSYmIisiIT09bFswXSlpZigiKyI9PT1zWzBdJiYiICI9PT1sWzBdKXt2YXIgYzsoYz1lLmxpbmVzKS5wdXNoLmFwcGx5KGMsaChGKGEpKSl9ZWxzZSBpZigiKyI9PT1sWzBdJiYiICI9PT1zWzBdKXt2YXIgdTsodT1lLmxpbmVzKS5wdXNoLmFwcGx5KHUsaChGKG8pKSl9ZWxzZSItIj09PXNbMF0mJiIgIj09PWxbMF0/TShlLGEsbyk6Ii0iPT09bFswXSYmIiAiPT09c1swXT9NKGUsbyxhLCEwKTpzPT09bD8oZS5saW5lcy5wdXNoKHMpLGEuaW5kZXgrKyxvLmluZGV4KyspOkwoZSxGKGEpLEYobykpO2Vsc2UgTihlLGEsbyl9UChlLGEpLFAoZSxvKSxBKGUpfWZ1bmN0aW9uIE4oZSx0LG4pe3ZhciByLGksYT1GKHQpLG89RihuKTtpZihVKGEpJiZVKG8pKXt2YXIgcyxsO2lmKFQoYSxvKSYmQihuLGEsYS5sZW5ndGgtby5sZW5ndGgpKXJldHVybiB2b2lkKHM9ZS5saW5lcykucHVzaC5hcHBseShzLGgoYSkpO2lmKFQobyxhKSYmQih0LG8sby5sZW5ndGgtYS5sZW5ndGgpKXJldHVybiB2b2lkKGw9ZS5saW5lcykucHVzaC5hcHBseShsLGgobykpfWVsc2UgaWYoaT1vLChyPWEpLmxlbmd0aD09PWkubGVuZ3RoJiZUKHIsaSkpe3ZhciBjO3JldHVybiB2b2lkKGM9ZS5saW5lcykucHVzaC5hcHBseShjLGgoYSkpfUwoZSxhLG8pfWZ1bmN0aW9uIE0oZSx0LG4scil7dmFyIGksYT1GKHQpLG89ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49W10scj1bXSxpPTAsYT0hMSxvPSExO2k8dC5sZW5ndGgmJmUuaW5kZXg8ZS5saW5lcy5sZW5ndGg7KXt2YXIgcz1lLmxpbmVzW2UuaW5kZXhdLGw9dFtpXTtpZigiKyI9PT1sWzBdKWJyZWFrO2lmKGE9YXx8IiAiIT09c1swXSxyLnB1c2gobCksaSsrLCIrIj09PXNbMF0pZm9yKG89ITA7IisiPT09c1swXTspbi5wdXNoKHMpLHM9ZS5saW5lc1srK2UuaW5kZXhdO2wuc3Vic3RyKDEpPT09cy5zdWJzdHIoMSk/KG4ucHVzaChzKSxlLmluZGV4KyspOm89ITB9aWYoIisiPT09KHRbaV18fCIiKVswXSYmYSYmKG89ITApLG8pcmV0dXJuIG47Zm9yKDtpPHQubGVuZ3RoOylyLnB1c2godFtpKytdKTtyZXR1cm57bWVyZ2VkOnIsY2hhbmdlczpufX0obixhKTtvLm1lcmdlZD8oaT1lLmxpbmVzKS5wdXNoLmFwcGx5KGksaChvLm1lcmdlZCkpOkwoZSxyP286YSxyP2E6byl9ZnVuY3Rpb24gTChlLHQsbil7ZS5jb25mbGljdD0hMCxlLmxpbmVzLnB1c2goe2NvbmZsaWN0OiEwLG1pbmU6dCx0aGVpcnM6bn0pfWZ1bmN0aW9uIEQoZSx0LG4pe2Zvcig7dC5vZmZzZXQ8bi5vZmZzZXQmJnQuaW5kZXg8dC5saW5lcy5sZW5ndGg7KXt2YXIgcj10LmxpbmVzW3QuaW5kZXgrK107ZS5saW5lcy5wdXNoKHIpLHQub2Zmc2V0Kyt9fWZ1bmN0aW9uIFAoZSx0KXtmb3IoO3QuaW5kZXg8dC5saW5lcy5sZW5ndGg7KXt2YXIgbj10LmxpbmVzW3QuaW5kZXgrK107ZS5saW5lcy5wdXNoKG4pfX1mdW5jdGlvbiBGKGUpe2Zvcih2YXIgdD1bXSxuPWUubGluZXNbZS5pbmRleF1bMF07ZS5pbmRleDxlLmxpbmVzLmxlbmd0aDspe3ZhciByPWUubGluZXNbZS5pbmRleF07aWYoIi0iPT09biYmIisiPT09clswXSYmKG49IisiKSxuIT09clswXSlicmVhazt0LnB1c2gociksZS5pbmRleCsrfXJldHVybiB0fWZ1bmN0aW9uIFUoZSl7cmV0dXJuIGUucmVkdWNlKChmdW5jdGlvbihlLHQpe3JldHVybiBlJiYiLSI9PT10WzBdfSksITApfWZ1bmN0aW9uIEIoZSx0LG4pe2Zvcih2YXIgcj0wO3I8bjtyKyspe3ZhciBpPXRbdC5sZW5ndGgtbityXS5zdWJzdHIoMSk7aWYoZS5saW5lc1tlLmluZGV4K3JdIT09IiAiK2kpcmV0dXJuITF9cmV0dXJuIGUuaW5kZXgrPW4sITB9ZnVuY3Rpb24gaihlKXt2YXIgdD1lO3JldHVybiB0PSh0PSh0PSh0PXQucmVwbGFjZSgvJi9nLCImYW1wOyIpKS5yZXBsYWNlKC88L2csIiZsdDsiKSkucmVwbGFjZSgvPi9nLCImZ3Q7IikpLnJlcGxhY2UoLyIvZywiJnF1b3Q7Iil9eS50b2tlbml6ZT1mdW5jdGlvbihlKXtyZXR1cm4gZS5zbGljZSgpfSx5LmpvaW49eS5yZW1vdmVFbXB0eT1mdW5jdGlvbihlKXtyZXR1cm4gZX0sZS5EaWZmPXQsZS5kaWZmQ2hhcnM9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBpLmRpZmYoZSx0LG4pfSxlLmRpZmZXb3Jkcz1mdW5jdGlvbihlLHQsbil7cmV0dXJuIG49YShuLHtpZ25vcmVXaGl0ZXNwYWNlOiEwfSksbC5kaWZmKGUsdCxuKX0sZS5kaWZmV29yZHNXaXRoU3BhY2U9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBsLmRpZmYoZSx0LG4pfSxlLmRpZmZMaW5lcz11LGUuZGlmZlRyaW1tZWRMaW5lcz1mdW5jdGlvbihlLHQsbil7dmFyIHI9YShuLHtpZ25vcmVXaGl0ZXNwYWNlOiEwfSk7cmV0dXJuIGMuZGlmZihlLHQscil9LGUuZGlmZlNlbnRlbmNlcz1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGQuZGlmZihlLHQsbil9LGUuZGlmZkNzcz1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHAuZGlmZihlLHQsbil9LGUuZGlmZkpzb249ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBnLmRpZmYoZSx0LG4pfSxlLmRpZmZBcnJheXM9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB5LmRpZmYoZSx0LG4pfSxlLnN0cnVjdHVyZWRQYXRjaD1TLGUuY3JlYXRlVHdvRmlsZXNQYXRjaD1fLGUuY3JlYXRlUGF0Y2g9ZnVuY3Rpb24oZSx0LG4scixpLGEpe3JldHVybiBfKGUsZSx0LG4scixpLGEpfSxlLmFwcGx5UGF0Y2g9dyxlLmFwcGx5UGF0Y2hlcz1mdW5jdGlvbihlLHQpeyJzdHJpbmciPT09dHlwZW9mIGUmJihlPXYoZSkpO3ZhciBuPTA7IWZ1bmN0aW9uIHIoKXt2YXIgaT1lW24rK107aWYoIWkpcmV0dXJuIHQuY29tcGxldGUoKTt0LmxvYWRGaWxlKGksKGZ1bmN0aW9uKGUsbil7aWYoZSlyZXR1cm4gdC5jb21wbGV0ZShlKTt2YXIgYT13KG4saSx0KTt0LnBhdGNoZWQoaSxhLChmdW5jdGlvbihlKXtpZihlKXJldHVybiB0LmNvbXBsZXRlKGUpO3IoKX0pKX0pKX0oKX0sZS5wYXJzZVBhdGNoPXYsZS5tZXJnZT1mdW5jdGlvbihlLHQsbil7ZT1rKGUsbiksdD1rKHQsbik7dmFyIHI9e307KGUuaW5kZXh8fHQuaW5kZXgpJiYoci5pbmRleD1lLmluZGV4fHx0LmluZGV4KSwoZS5uZXdGaWxlTmFtZXx8dC5uZXdGaWxlTmFtZSkmJih4KGUpP3godCk/KHIub2xkRmlsZU5hbWU9QyhyLGUub2xkRmlsZU5hbWUsdC5vbGRGaWxlTmFtZSksci5uZXdGaWxlTmFtZT1DKHIsZS5uZXdGaWxlTmFtZSx0Lm5ld0ZpbGVOYW1lKSxyLm9sZEhlYWRlcj1DKHIsZS5vbGRIZWFkZXIsdC5vbGRIZWFkZXIpLHIubmV3SGVhZGVyPUMocixlLm5ld0hlYWRlcix0Lm5ld0hlYWRlcikpOihyLm9sZEZpbGVOYW1lPWUub2xkRmlsZU5hbWUsci5uZXdGaWxlTmFtZT1lLm5ld0ZpbGVOYW1lLHIub2xkSGVhZGVyPWUub2xkSGVhZGVyLHIubmV3SGVhZGVyPWUubmV3SGVhZGVyKTooci5vbGRGaWxlTmFtZT10Lm9sZEZpbGVOYW1lfHxlLm9sZEZpbGVOYW1lLHIubmV3RmlsZU5hbWU9dC5uZXdGaWxlTmFtZXx8ZS5uZXdGaWxlTmFtZSxyLm9sZEhlYWRlcj10Lm9sZEhlYWRlcnx8ZS5vbGRIZWFkZXIsci5uZXdIZWFkZXI9dC5uZXdIZWFkZXJ8fGUubmV3SGVhZGVyKSksci5odW5rcz1bXTtmb3IodmFyIGk9MCxhPTAsbz0wLHM9MDtpPGUuaHVua3MubGVuZ3RofHxhPHQuaHVua3MubGVuZ3RoOyl7dmFyIGw9ZS5odW5rc1tpXXx8e29sZFN0YXJ0OjEvMH0sYz10Lmh1bmtzW2FdfHx7b2xkU3RhcnQ6MS8wfTtpZihJKGwsYykpci5odW5rcy5wdXNoKFIobCxvKSksaSsrLHMrPWwubmV3TGluZXMtbC5vbGRMaW5lcztlbHNlIGlmKEkoYyxsKSlyLmh1bmtzLnB1c2goUihjLHMpKSxhKyssbys9Yy5uZXdMaW5lcy1jLm9sZExpbmVzO2Vsc2V7dmFyIHU9e29sZFN0YXJ0Ok1hdGgubWluKGwub2xkU3RhcnQsYy5vbGRTdGFydCksb2xkTGluZXM6MCxuZXdTdGFydDpNYXRoLm1pbihsLm5ld1N0YXJ0K28sYy5vbGRTdGFydCtzKSxuZXdMaW5lczowLGxpbmVzOltdfTtPKHUsbC5vbGRTdGFydCxsLmxpbmVzLGMub2xkU3RhcnQsYy5saW5lcyksYSsrLGkrKyxyLmh1bmtzLnB1c2godSl9fXJldHVybiByfSxlLmNvbnZlcnRDaGFuZ2VzVG9ETVA9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LG4scj1bXSxpPTA7aTxlLmxlbmd0aDtpKyspbj0odD1lW2ldKS5hZGRlZD8xOnQucmVtb3ZlZD8tMTowLHIucHVzaChbbix0LnZhbHVlXSk7cmV0dXJuIHJ9LGUuY29udmVydENoYW5nZXNUb1hNTD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9W10sbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcj1lW25dO3IuYWRkZWQ/dC5wdXNoKCI8aW5zPiIpOnIucmVtb3ZlZCYmdC5wdXNoKCI8ZGVsPiIpLHQucHVzaChqKHIudmFsdWUpKSxyLmFkZGVkP3QucHVzaCgiPC9pbnM+Iik6ci5yZW1vdmVkJiZ0LnB1c2goIjwvZGVsPiIpfXJldHVybiB0LmpvaW4oIiIpfSxlLmNhbm9uaWNhbGl6ZT1iLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0odCl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9dGhpcyYmdGhpcy5fX2Fzc2lnbnx8ZnVuY3Rpb24oKXtyZXR1cm4ocj1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQsbj0xLHI9YXJndW1lbnRzLmxlbmd0aDtuPHI7bisrKWZvcih2YXIgaSBpbiB0PWFyZ3VtZW50c1tuXSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxpKSYmKGVbaV09dFtpXSk7cmV0dXJuIGV9KS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGk9dGhpcyYmdGhpcy5fX3Jlc3R8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiYiZnVuY3Rpb24iPT09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBpPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtpPHIubGVuZ3RoO2krKyl0LmluZGV4T2YocltpXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltpXSkmJihuW3JbaV1dPWVbcltpXV0pfXJldHVybiBufTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGE9big1MDApO3QuZGVmYXVsdD1mdW5jdGlvbihlLHQpe3ZhciBuLG8scyxsLGMsdSxkO3ZvaWQgMD09PXQmJih0PSExKTt2YXIgcD1lLnZhcmlhYmxlcyxmPXZvaWQgMD09PXA/e306cCxoPWkoZSxbInZhcmlhYmxlcyJdKSxtPXtsaWdodDpyKHtkaWZmVmlld2VyQmFja2dyb3VuZDoiI2ZmZiIsZGlmZlZpZXdlckNvbG9yOiIyMTI1MjkiLGFkZGVkQmFja2dyb3VuZDoiI2U2ZmZlZCIsYWRkZWRDb2xvcjoiIzI0MjkyZSIscmVtb3ZlZEJhY2tncm91bmQ6IiNmZmVlZjAiLHJlbW92ZWRDb2xvcjoiIzI0MjkyZSIsd29yZEFkZGVkQmFja2dyb3VuZDoiI2FjZjJiZCIsd29yZFJlbW92ZWRCYWNrZ3JvdW5kOiIjZmRiOGMwIixhZGRlZEd1dHRlckJhY2tncm91bmQ6IiNjZGZmZDgiLHJlbW92ZWRHdXR0ZXJCYWNrZ3JvdW5kOiIjZmZkY2UwIixndXR0ZXJCYWNrZ3JvdW5kOiIjZjdmN2Y3IixndXR0ZXJCYWNrZ3JvdW5kRGFyazoiI2YzZjFmMSIsaGlnaGxpZ2h0QmFja2dyb3VuZDoiI2ZmZmJkZCIsaGlnaGxpZ2h0R3V0dGVyQmFja2dyb3VuZDoiI2ZmZjViMSIsY29kZUZvbGRHdXR0ZXJCYWNrZ3JvdW5kOiIjZGJlZGZmIixjb2RlRm9sZEJhY2tncm91bmQ6IiNmMWY4ZmYiLGVtcHR5TGluZUJhY2tncm91bmQ6IiNmYWZiZmMiLGd1dHRlckNvbG9yOiIjMjEyNTI5IixhZGRlZEd1dHRlckNvbG9yOiIjMjEyNTI5IixyZW1vdmVkR3V0dGVyQ29sb3I6IiMyMTI1MjkiLGNvZGVGb2xkQ29udGVudENvbG9yOiIjMjEyNTI5IixkaWZmVmlld2VyVGl0bGVCYWNrZ3JvdW5kOiIjZmFmYmZjIixkaWZmVmlld2VyVGl0bGVDb2xvcjoiIzIxMjUyOSIsZGlmZlZpZXdlclRpdGxlQm9yZGVyQ29sb3I6IiNlZWUifSxmLmxpZ2h0fHx7fSksZGFyazpyKHtkaWZmVmlld2VyQmFja2dyb3VuZDoiIzJlMzAzYyIsZGlmZlZpZXdlckNvbG9yOiIjRkZGIixhZGRlZEJhY2tncm91bmQ6IiMwNDRCNTMiLGFkZGVkQ29sb3I6IndoaXRlIixyZW1vdmVkQmFja2dyb3VuZDoiIzYzMkYzNCIscmVtb3ZlZENvbG9yOiJ3aGl0ZSIsd29yZEFkZGVkQmFja2dyb3VuZDoiIzA1NWQ2NyIsd29yZFJlbW92ZWRCYWNrZ3JvdW5kOiIjN2QzODNmIixhZGRlZEd1dHRlckJhY2tncm91bmQ6IiMwMzQxNDgiLHJlbW92ZWRHdXR0ZXJCYWNrZ3JvdW5kOiIjNjMyYjMwIixndXR0ZXJCYWNrZ3JvdW5kOiIjMmMyZjNhIixndXR0ZXJCYWNrZ3JvdW5kRGFyazoiIzI2MjkzMyIsaGlnaGxpZ2h0QmFja2dyb3VuZDoiIzJhMzk2NyIsaGlnaGxpZ2h0R3V0dGVyQmFja2dyb3VuZDoiIzJkNDA3NyIsY29kZUZvbGRHdXR0ZXJCYWNrZ3JvdW5kOiIjMjEyMzJiIixjb2RlRm9sZEJhY2tncm91bmQ6IiMyNjI4MzEiLGVtcHR5TGluZUJhY2tncm91bmQ6IiMzNjM5NDYiLGd1dHRlckNvbG9yOiIjNDY0YzY3IixhZGRlZEd1dHRlckNvbG9yOiIjOGM4YzhjIixyZW1vdmVkR3V0dGVyQ29sb3I6IiM4YzhjOGMiLGNvZGVGb2xkQ29udGVudENvbG9yOiIjNTU1YTdiIixkaWZmVmlld2VyVGl0bGVCYWNrZ3JvdW5kOiIjMmYzMjNlIixkaWZmVmlld2VyVGl0bGVDb2xvcjoiIzU1NWE3YiIsZGlmZlZpZXdlclRpdGxlQm9yZGVyQ29sb3I6IiMzNTM4NDYifSxmLmRhcmt8fHt9KX0sZz10P20uZGFyazptLmxpZ2h0LGI9YS5jc3Moe3dpZHRoOiIxMDAlIixsYWJlbDoiY29udGVudCJ9KSx5PWEuY3NzKCgobj17fSlbIi4iK2JdPXt3aWR0aDoiNTAlIn0sbi5sYWJlbD0ic3BsaXQtdmlldyIsbikpLHY9YS5jc3Moe3dpZHRoOiIxMDAlIixiYWNrZ3JvdW5kOmcuZGlmZlZpZXdlckJhY2tncm91bmQscHJlOnttYXJnaW46MCx3aGl0ZVNwYWNlOiJwcmUtd3JhcCIsbGluZUhlaWdodDoiMjVweCJ9LGxhYmVsOiJkaWZmLWNvbnRhaW5lciIsYm9yZGVyQ29sbGFwc2U6ImNvbGxhcHNlIn0pLEU9YS5jc3Moe2NvbG9yOmcuY29kZUZvbGRDb250ZW50Q29sb3IsbGFiZWw6ImNvZGUtZm9sZC1jb250ZW50In0pLHc9YS5jc3Moe2NvbG9yOmcuZGlmZlZpZXdlckNvbG9yLGxhYmVsOiJjb250ZW50LXRleHQifSksUz1hLmNzcygoKG89e2JhY2tncm91bmQ6Zy5kaWZmVmlld2VyVGl0bGVCYWNrZ3JvdW5kLHBhZGRpbmc6MTAsYm9yZGVyQm90dG9tOiIxcHggc29saWQgIitnLmRpZmZWaWV3ZXJUaXRsZUJvcmRlckNvbG9yLGxhYmVsOiJ0aXRsZS1ibG9jayIsIjpsYXN0LWNoaWxkIjp7Ym9yZGVyTGVmdDoiMXB4IHNvbGlkICIrZy5kaWZmVmlld2VyVGl0bGVCb3JkZXJDb2xvcn19KVsiLiIrd109e2NvbG9yOmcuZGlmZlZpZXdlclRpdGxlQ29sb3J9LG8pKSxfPWEuY3NzKHtjb2xvcjpnLmd1dHRlckNvbG9yLGxhYmVsOiJsaW5lLW51bWJlciJ9KSxUPWEuY3NzKCgocz17YmFja2dyb3VuZDpnLnJlbW92ZWRCYWNrZ3JvdW5kLGNvbG9yOmcucmVtb3ZlZENvbG9yLHByZTp7Y29sb3I6Zy5yZW1vdmVkQ29sb3J9fSlbIi4iK19dPXtjb2xvcjpnLnJlbW92ZWRHdXR0ZXJDb2xvcn0scy5sYWJlbD0iZGlmZi1yZW1vdmVkIixzKSksQT1hLmNzcygoKGw9e2JhY2tncm91bmQ6Zy5hZGRlZEJhY2tncm91bmQsY29sb3I6Zy5hZGRlZENvbG9yLHByZTp7Y29sb3I6Zy5hZGRlZENvbG9yfX0pWyIuIitfXT17Y29sb3I6Zy5hZGRlZEd1dHRlckNvbG9yfSxsLmxhYmVsPSJkaWZmLWFkZGVkIixsKSksaz1hLmNzcyh7cGFkZGluZzoyLGRpc3BsYXk6ImlubGluZS1mbGV4Iixib3JkZXJSYWRpdXM6MSxsYWJlbDoid29yZC1kaWZmIn0pLHg9YS5jc3Moe2JhY2tncm91bmQ6Zy53b3JkQWRkZWRCYWNrZ3JvdW5kLGxhYmVsOiJ3b3JkLWFkZGVkIn0pLEM9YS5jc3Moe2JhY2tncm91bmQ6Zy53b3JkUmVtb3ZlZEJhY2tncm91bmQsbGFiZWw6IndvcmQtcmVtb3ZlZCJ9KSxJPWEuY3NzKHtiYWNrZ3JvdW5kQ29sb3I6Zy5jb2RlRm9sZEd1dHRlckJhY2tncm91bmQsbGFiZWw6ImNvZGUtZm9sZC1ndXR0ZXIifSksUj1hLmNzcyh7YmFja2dyb3VuZENvbG9yOmcuY29kZUZvbGRCYWNrZ3JvdW5kLGhlaWdodDo0MCxmb250U2l6ZToxNCxmb250V2VpZ2h0OjcwMCxsYWJlbDoiY29kZS1mb2xkIixhOnt0ZXh0RGVjb3JhdGlvbjoidW5kZXJsaW5lICFpbXBvcnRhbnQiLGN1cnNvcjoicG9pbnRlciIscHJlOntkaXNwbGF5OiJpbmxpbmUifX19KSxPPWEuY3NzKHtiYWNrZ3JvdW5kQ29sb3I6Zy5lbXB0eUxpbmVCYWNrZ3JvdW5kLGxhYmVsOiJlbXB0eS1saW5lIn0pLE49YS5jc3MoKChjPXt3aWR0aDoyNSxwYWRkaW5nTGVmdDoxMCxwYWRkaW5nUmlnaHQ6MTAsdXNlclNlbGVjdDoibm9uZSIsbGFiZWw6Im1hcmtlciJ9KVsiJi4iK0FdPXtwcmU6e2NvbG9yOmcuYWRkZWRDb2xvcn19LGNbIiYuIitUXT17cHJlOntjb2xvcjpnLnJlbW92ZWRDb2xvcn19LGMpKSxNPWEuY3NzKCgodT17YmFja2dyb3VuZDpnLmhpZ2hsaWdodEJhY2tncm91bmQsbGFiZWw6ImhpZ2hsaWdodGVkLWxpbmUifSlbIi4iK3grIiwgLiIrQ109e2JhY2tncm91bmRDb2xvcjoiaW5pdGlhbCJ9LHUpKSxMPWEuY3NzKHtsYWJlbDoiaGlnaGxpZ2h0ZWQtZ3V0dGVyIn0pLEQ9YS5jc3MoKChkPXt1c2VyU2VsZWN0OiJub25lIixtaW5XaWR0aDo1MCxwYWRkaW5nOiIwIDEwcHgiLGxhYmVsOiJndXR0ZXIiLHRleHRBbGlnbjoicmlnaHQiLGJhY2tncm91bmQ6Zy5ndXR0ZXJCYWNrZ3JvdW5kLCImOmhvdmVyIjp7Y3Vyc29yOiJwb2ludGVyIixiYWNrZ3JvdW5kOmcuZ3V0dGVyQmFja2dyb3VuZERhcmsscHJlOntvcGFjaXR5OjF9fSxwcmU6e29wYWNpdHk6LjV9fSlbIiYuIitBXT17YmFja2dyb3VuZDpnLmFkZGVkR3V0dGVyQmFja2dyb3VuZH0sZFsiJi4iK1RdPXtiYWNrZ3JvdW5kOmcucmVtb3ZlZEd1dHRlckJhY2tncm91bmR9LGRbIiYuIitMXT17YmFja2dyb3VuZDpnLmhpZ2hsaWdodEd1dHRlckJhY2tncm91bmQsIiY6aG92ZXIiOntiYWNrZ3JvdW5kOmcuaGlnaGxpZ2h0R3V0dGVyQmFja2dyb3VuZH19LGQpKSxQPWEuY3NzKHsiJjpob3ZlciI6e2JhY2tncm91bmQ6Zy5ndXR0ZXJCYWNrZ3JvdW5kLGN1cnNvcjoiaW5pdGlhbCJ9LGxhYmVsOiJlbXB0eS1ndXR0ZXIifSksRj17ZGlmZkNvbnRhaW5lcjp2LGRpZmZSZW1vdmVkOlQsZGlmZkFkZGVkOkEsc3BsaXRWaWV3OnksbWFya2VyOk4saGlnaGxpZ2h0ZWRHdXR0ZXI6TCxoaWdobGlnaHRlZExpbmU6TSxndXR0ZXI6RCxsaW5lOmEuY3NzKHt2ZXJ0aWNhbEFsaWduOiJiYXNlbGluZSIsbGFiZWw6ImxpbmUifSksd29yZERpZmY6ayx3b3JkQWRkZWQ6eCx3b3JkUmVtb3ZlZDpDLGNvZGVGb2xkR3V0dGVyOkksY29kZUZvbGQ6UixlbXB0eUd1dHRlcjpQLGVtcHR5TGluZTpPLGxpbmVOdW1iZXI6Xyxjb250ZW50VGV4dDp3LGNvbnRlbnQ6Yixjb2RlRm9sZENvbnRlbnQ6RSx0aXRsZUJsb2NrOlN9LFU9T2JqZWN0LmtleXMoaCkucmVkdWNlKChmdW5jdGlvbihlLHQpe3ZhciBuO3JldHVybiByKHt9LGUsKChuPXt9KVt0XT1hLmNzcyhoW3RdKSxuKSl9KSx7fSk7cmV0dXJuIE9iamVjdC5rZXlzKEYpLnJlZHVjZSgoZnVuY3Rpb24oZSx0KXt2YXIgbjtyZXR1cm4gcih7fSxlLCgobj17fSlbdF09VVt0XT9hLmN4KEZbdF0sVVt0XSk6Rlt0XSxuKSl9KSx7fSl9fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO24ucih0KTt2YXIgcj1OdW1iZXIuaXNOYU58fGZ1bmN0aW9uKGUpe3JldHVybiJudW1iZXIiPT09dHlwZW9mIGUmJmUhPT1lfTtmdW5jdGlvbiBpKGUsdCl7aWYoZS5sZW5ndGghPT10Lmxlbmd0aClyZXR1cm4hMTtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKylpZihpPWVbbl0sYT10W25dLCEoaT09PWF8fHIoaSkmJnIoYSkpKXJldHVybiExO3ZhciBpLGE7cmV0dXJuITB9dC5kZWZhdWx0PWZ1bmN0aW9uKGUsdCl7dmFyIG47dm9pZCAwPT09dCYmKHQ9aSk7dmFyIHIsYT1bXSxvPSExO3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgaT1bXSxzPTA7czxhcmd1bWVudHMubGVuZ3RoO3MrKylpW3NdPWFyZ3VtZW50c1tzXTtyZXR1cm4gbyYmbj09PXRoaXMmJnQoaSxhKXx8KHI9ZS5hcHBseSh0aGlzLGkpLG89ITAsbj10aGlzLGE9aSkscn19fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO24ucih0KTt2YXIgcj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dGhpcy5pc1NwZWVkeT12b2lkIDA9PT1lLnNwZWVkeXx8ZS5zcGVlZHksdGhpcy50YWdzPVtdLHRoaXMuY3RyPTAsdGhpcy5ub25jZT1lLm5vbmNlLHRoaXMua2V5PWUua2V5LHRoaXMuY29udGFpbmVyPWUuY29udGFpbmVyLHRoaXMuYmVmb3JlPW51bGx9dmFyIHQ9ZS5wcm90b3R5cGU7cmV0dXJuIHQuaW5zZXJ0PWZ1bmN0aW9uKGUpe2lmKHRoaXMuY3RyJSh0aGlzLmlzU3BlZWR5PzY1ZTM6MSk9PT0wKXt2YXIgdCxuPWZ1bmN0aW9uKGUpe3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7cmV0dXJuIHQuc2V0QXR0cmlidXRlKCJkYXRhLWVtb3Rpb24iLGUua2V5KSx2b2lkIDAhPT1lLm5vbmNlJiZ0LnNldEF0dHJpYnV0ZSgibm9uY2UiLGUubm9uY2UpLHQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiIpKSx0fSh0aGlzKTt0PTA9PT10aGlzLnRhZ3MubGVuZ3RoP3RoaXMuYmVmb3JlOnRoaXMudGFnc1t0aGlzLnRhZ3MubGVuZ3RoLTFdLm5leHRTaWJsaW5nLHRoaXMuY29udGFpbmVyLmluc2VydEJlZm9yZShuLHQpLHRoaXMudGFncy5wdXNoKG4pfXZhciByPXRoaXMudGFnc1t0aGlzLnRhZ3MubGVuZ3RoLTFdO2lmKHRoaXMuaXNTcGVlZHkpe3ZhciBpPWZ1bmN0aW9uKGUpe2lmKGUuc2hlZXQpcmV0dXJuIGUuc2hlZXQ7Zm9yKHZhciB0PTA7dDxkb2N1bWVudC5zdHlsZVNoZWV0cy5sZW5ndGg7dCsrKWlmKGRvY3VtZW50LnN0eWxlU2hlZXRzW3RdLm93bmVyTm9kZT09PWUpcmV0dXJuIGRvY3VtZW50LnN0eWxlU2hlZXRzW3RdfShyKTt0cnl7dmFyIGE9MTA1PT09ZS5jaGFyQ29kZUF0KDEpJiY2ND09PWUuY2hhckNvZGVBdCgwKTtpLmluc2VydFJ1bGUoZSxhPzA6aS5jc3NSdWxlcy5sZW5ndGgpfWNhdGNoKG8pezB9fWVsc2Ugci5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShlKSk7dGhpcy5jdHIrK30sdC5mbHVzaD1mdW5jdGlvbigpe3RoaXMudGFncy5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGUpfSkpLHRoaXMudGFncz1bXSx0aGlzLmN0cj0wfSxlfSgpO3ZhciBpPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSx0LHIpe3ZhciBpPXQudHJpbSgpLnNwbGl0KGgpO3Q9aTt2YXIgYT1pLmxlbmd0aCxvPWUubGVuZ3RoO3N3aXRjaChvKXtjYXNlIDA6Y2FzZSAxOnZhciBzPTA7Zm9yKGU9MD09PW8/IiI6ZVswXSsiICI7czxhOysrcyl0W3NdPW4oZSx0W3NdLHIpLnRyaW0oKTticmVhaztkZWZhdWx0OnZhciBsPXM9MDtmb3IodD1bXTtzPGE7KytzKWZvcih2YXIgYz0wO2M8bzsrK2MpdFtsKytdPW4oZVtjXSsiICIsaVtzXSxyKS50cmltKCl9cmV0dXJuIHR9ZnVuY3Rpb24gbihlLHQsbil7dmFyIHI9dC5jaGFyQ29kZUF0KDApO3N3aXRjaCgzMz5yJiYocj0odD10LnRyaW0oKSkuY2hhckNvZGVBdCgwKSkscil7Y2FzZSAzODpyZXR1cm4gdC5yZXBsYWNlKG0sIiQxIitlLnRyaW0oKSk7Y2FzZSA1ODpyZXR1cm4gZS50cmltKCkrdC5yZXBsYWNlKG0sIiQxIitlLnRyaW0oKSk7ZGVmYXVsdDppZigwPDEqbiYmMDx0LmluZGV4T2YoIlxmIikpcmV0dXJuIHQucmVwbGFjZShtLCg1OD09PWUuY2hhckNvZGVBdCgwKT8iIjoiJDEiKStlLnRyaW0oKSl9cmV0dXJuIGUrdH1mdW5jdGlvbiByKGUsdCxuLGEpe3ZhciBvPWUrIjsiLHM9Mip0KzMqbis0KmE7aWYoOTQ0PT09cyl7ZT1vLmluZGV4T2YoIjoiLDkpKzE7dmFyIGw9by5zdWJzdHJpbmcoZSxvLmxlbmd0aC0xKS50cmltKCk7cmV0dXJuIGw9by5zdWJzdHJpbmcoMCxlKS50cmltKCkrbCsiOyIsMT09PUl8fDI9PT1JJiZpKGwsMSk/Ii13ZWJraXQtIitsK2w6bH1pZigwPT09SXx8Mj09PUkmJiFpKG8sMSkpcmV0dXJuIG87c3dpdGNoKHMpe2Nhc2UgMTAxNTpyZXR1cm4gOTc9PT1vLmNoYXJDb2RlQXQoMTApPyItd2Via2l0LSIrbytvOm87Y2FzZSA5NTE6cmV0dXJuIDExNj09PW8uY2hhckNvZGVBdCgzKT8iLXdlYmtpdC0iK28rbzpvO2Nhc2UgOTYzOnJldHVybiAxMTA9PT1vLmNoYXJDb2RlQXQoNSk/Ii13ZWJraXQtIitvK286bztjYXNlIDEwMDk6aWYoMTAwIT09by5jaGFyQ29kZUF0KDQpKWJyZWFrO2Nhc2UgOTY5OmNhc2UgOTQyOnJldHVybiItd2Via2l0LSIrbytvO2Nhc2UgOTc4OnJldHVybiItd2Via2l0LSIrbysiLW1vei0iK28rbztjYXNlIDEwMTk6Y2FzZSA5ODM6cmV0dXJuIi13ZWJraXQtIitvKyItbW96LSIrbysiLW1zLSIrbytvO2Nhc2UgODgzOmlmKDQ1PT09by5jaGFyQ29kZUF0KDgpKXJldHVybiItd2Via2l0LSIrbytvO2lmKDA8by5pbmRleE9mKCJpbWFnZS1zZXQoIiwxMSkpcmV0dXJuIG8ucmVwbGFjZShBLCIkMS13ZWJraXQtJDIiKStvO2JyZWFrO2Nhc2UgOTMyOmlmKDQ1PT09by5jaGFyQ29kZUF0KDQpKXN3aXRjaChvLmNoYXJDb2RlQXQoNSkpe2Nhc2UgMTAzOnJldHVybiItd2Via2l0LWJveC0iK28ucmVwbGFjZSgiLWdyb3ciLCIiKSsiLXdlYmtpdC0iK28rIi1tcy0iK28ucmVwbGFjZSgiZ3JvdyIsInBvc2l0aXZlIikrbztjYXNlIDExNTpyZXR1cm4iLXdlYmtpdC0iK28rIi1tcy0iK28ucmVwbGFjZSgic2hyaW5rIiwibmVnYXRpdmUiKStvO2Nhc2UgOTg6cmV0dXJuIi13ZWJraXQtIitvKyItbXMtIitvLnJlcGxhY2UoImJhc2lzIiwicHJlZmVycmVkLXNpemUiKStvfXJldHVybiItd2Via2l0LSIrbysiLW1zLSIrbytvO2Nhc2UgOTY0OnJldHVybiItd2Via2l0LSIrbysiLW1zLWZsZXgtIitvK287Y2FzZSAxMDIzOmlmKDk5IT09by5jaGFyQ29kZUF0KDgpKWJyZWFrO3JldHVybiItd2Via2l0LWJveC1wYWNrIisobD1vLnN1YnN0cmluZyhvLmluZGV4T2YoIjoiLDE1KSkucmVwbGFjZSgiZmxleC0iLCIiKS5yZXBsYWNlKCJzcGFjZS1iZXR3ZWVuIiwianVzdGlmeSIpKSsiLXdlYmtpdC0iK28rIi1tcy1mbGV4LXBhY2siK2wrbztjYXNlIDEwMDU6cmV0dXJuIHAudGVzdChvKT9vLnJlcGxhY2UoZCwiOi13ZWJraXQtIikrby5yZXBsYWNlKGQsIjotbW96LSIpK286bztjYXNlIDFlMzpzd2l0Y2godD0obD1vLnN1YnN0cmluZygxMykudHJpbSgpKS5pbmRleE9mKCItIikrMSxsLmNoYXJDb2RlQXQoMCkrbC5jaGFyQ29kZUF0KHQpKXtjYXNlIDIyNjpsPW8ucmVwbGFjZSh2LCJ0YiIpO2JyZWFrO2Nhc2UgMjMyOmw9by5yZXBsYWNlKHYsInRiLXJsIik7YnJlYWs7Y2FzZSAyMjA6bD1vLnJlcGxhY2UodiwibHIiKTticmVhaztkZWZhdWx0OnJldHVybiBvfXJldHVybiItd2Via2l0LSIrbysiLW1zLSIrbCtvO2Nhc2UgMTAxNzppZigtMT09PW8uaW5kZXhPZigic3RpY2t5Iiw5KSlicmVhaztjYXNlIDk3NTpzd2l0Y2godD0obz1lKS5sZW5ndGgtMTAscz0obD0oMzM9PT1vLmNoYXJDb2RlQXQodCk/by5zdWJzdHJpbmcoMCx0KTpvKS5zdWJzdHJpbmcoZS5pbmRleE9mKCI6Iiw3KSsxKS50cmltKCkpLmNoYXJDb2RlQXQoMCkrKDB8bC5jaGFyQ29kZUF0KDcpKSl7Y2FzZSAyMDM6aWYoMTExPmwuY2hhckNvZGVBdCg4KSlicmVhaztjYXNlIDExNTpvPW8ucmVwbGFjZShsLCItd2Via2l0LSIrbCkrIjsiK287YnJlYWs7Y2FzZSAyMDc6Y2FzZSAxMDI6bz1vLnJlcGxhY2UobCwiLXdlYmtpdC0iKygxMDI8cz8iaW5saW5lLSI6IiIpKyJib3giKSsiOyIrby5yZXBsYWNlKGwsIi13ZWJraXQtIitsKSsiOyIrby5yZXBsYWNlKGwsIi1tcy0iK2wrImJveCIpKyI7IitvfXJldHVybiBvKyI7IjtjYXNlIDkzODppZig0NT09PW8uY2hhckNvZGVBdCg1KSlzd2l0Y2goby5jaGFyQ29kZUF0KDYpKXtjYXNlIDEwNTpyZXR1cm4gbD1vLnJlcGxhY2UoIi1pdGVtcyIsIiIpLCItd2Via2l0LSIrbysiLXdlYmtpdC1ib3gtIitsKyItbXMtZmxleC0iK2wrbztjYXNlIDExNTpyZXR1cm4iLXdlYmtpdC0iK28rIi1tcy1mbGV4LWl0ZW0tIitvLnJlcGxhY2UoUywiIikrbztkZWZhdWx0OnJldHVybiItd2Via2l0LSIrbysiLW1zLWZsZXgtbGluZS1wYWNrIitvLnJlcGxhY2UoImFsaWduLWNvbnRlbnQiLCIiKS5yZXBsYWNlKFMsIiIpK299YnJlYWs7Y2FzZSA5NzM6Y2FzZSA5ODk6aWYoNDUhPT1vLmNoYXJDb2RlQXQoMyl8fDEyMj09PW8uY2hhckNvZGVBdCg0KSlicmVhaztjYXNlIDkzMTpjYXNlIDk1MzppZighMD09PVQudGVzdChlKSlyZXR1cm4gMTE1PT09KGw9ZS5zdWJzdHJpbmcoZS5pbmRleE9mKCI6IikrMSkpLmNoYXJDb2RlQXQoMCk/cihlLnJlcGxhY2UoInN0cmV0Y2giLCJmaWxsLWF2YWlsYWJsZSIpLHQsbixhKS5yZXBsYWNlKCI6ZmlsbC1hdmFpbGFibGUiLCI6c3RyZXRjaCIpOm8ucmVwbGFjZShsLCItd2Via2l0LSIrbCkrby5yZXBsYWNlKGwsIi1tb3otIitsLnJlcGxhY2UoImZpbGwtIiwiIikpK287YnJlYWs7Y2FzZSA5NjI6aWYobz0iLXdlYmtpdC0iK28rKDEwMj09PW8uY2hhckNvZGVBdCg1KT8iLW1zLSIrbzoiIikrbywyMTE9PT1uK2EmJjEwNT09PW8uY2hhckNvZGVBdCgxMykmJjA8by5pbmRleE9mKCJ0cmFuc2Zvcm0iLDEwKSlyZXR1cm4gby5zdWJzdHJpbmcoMCxvLmluZGV4T2YoIjsiLDI3KSsxKS5yZXBsYWNlKGYsIiQxLXdlYmtpdC0kMiIpK299cmV0dXJuIG99ZnVuY3Rpb24gaShlLHQpe3ZhciBuPWUuaW5kZXhPZigxPT09dD8iOiI6InsiKSxyPWUuc3Vic3RyaW5nKDAsMyE9PXQ/bjoxMCk7cmV0dXJuIG49ZS5zdWJzdHJpbmcobisxLGUubGVuZ3RoLTEpLE0oMiE9PXQ/cjpyLnJlcGxhY2UoXywiJDEiKSxuLHQpfWZ1bmN0aW9uIGEoZSx0KXt2YXIgbj1yKHQsdC5jaGFyQ29kZUF0KDApLHQuY2hhckNvZGVBdCgxKSx0LmNoYXJDb2RlQXQoMikpO3JldHVybiBuIT09dCsiOyI/bi5yZXBsYWNlKHcsIiBvciAoJDEpIikuc3Vic3RyaW5nKDQpOiIoIit0KyIpIn1mdW5jdGlvbiBvKGUsdCxuLHIsaSxhLG8scyxjLHUpe2Zvcih2YXIgZCxwPTAsZj10O3A8TjsrK3Apc3dpdGNoKGQ9T1twXS5jYWxsKGwsZSxmLG4scixpLGEsbyxzLGMsdSkpe2Nhc2Ugdm9pZCAwOmNhc2UhMTpjYXNlITA6Y2FzZSBudWxsOmJyZWFrO2RlZmF1bHQ6Zj1kfWlmKGYhPT10KXJldHVybiBmfWZ1bmN0aW9uIHMoZSl7cmV0dXJuIHZvaWQgMCE9PShlPWUucHJlZml4KSYmKE09bnVsbCxlPyJmdW5jdGlvbiIhPT10eXBlb2YgZT9JPTE6KEk9MixNPWUpOkk9MCksc31mdW5jdGlvbiBsKGUsbil7dmFyIHM9ZTtpZigzMz5zLmNoYXJDb2RlQXQoMCkmJihzPXMudHJpbSgpKSxzPVtzXSwwPE4pe3ZhciBsPW8oLTEsbixzLHMseCxrLDAsMCwwLDApO3ZvaWQgMCE9PWwmJiJzdHJpbmciPT09dHlwZW9mIGwmJihuPWwpfXZhciBkPWZ1bmN0aW9uIGUobixzLGwsZCxwKXtmb3IodmFyIGYsaCxtLHYsdyxTPTAsXz0wLFQ9MCxBPTAsTz0wLE09MCxEPW09Zj0wLFA9MCxGPTAsVT0wLEI9MCxqPWwubGVuZ3RoLEg9ai0xLHo9IiIsRz0iIiwkPSIiLFY9IiI7UDxqOyl7aWYoaD1sLmNoYXJDb2RlQXQoUCksUD09PUgmJjAhPT1fK0ErVCtTJiYoMCE9PV8mJihoPTQ3PT09Xz8xMDo0NyksQT1UPVM9MCxqKyssSCsrKSwwPT09XytBK1QrUyl7aWYoUD09PUgmJigwPEYmJih6PXoucmVwbGFjZSh1LCIiKSksMDx6LnRyaW0oKS5sZW5ndGgpKXtzd2l0Y2goaCl7Y2FzZSAzMjpjYXNlIDk6Y2FzZSA1OTpjYXNlIDEzOmNhc2UgMTA6YnJlYWs7ZGVmYXVsdDp6Kz1sLmNoYXJBdChQKX1oPTU5fXN3aXRjaChoKXtjYXNlIDEyMzpmb3IoZj0oej16LnRyaW0oKSkuY2hhckNvZGVBdCgwKSxtPTEsQj0rK1A7UDxqOyl7c3dpdGNoKGg9bC5jaGFyQ29kZUF0KFApKXtjYXNlIDEyMzptKys7YnJlYWs7Y2FzZSAxMjU6bS0tO2JyZWFrO2Nhc2UgNDc6c3dpdGNoKGg9bC5jaGFyQ29kZUF0KFArMSkpe2Nhc2UgNDI6Y2FzZSA0NzplOntmb3IoRD1QKzE7RDxIOysrRClzd2l0Y2gobC5jaGFyQ29kZUF0KEQpKXtjYXNlIDQ3OmlmKDQyPT09aCYmNDI9PT1sLmNoYXJDb2RlQXQoRC0xKSYmUCsyIT09RCl7UD1EKzE7YnJlYWsgZX1icmVhaztjYXNlIDEwOmlmKDQ3PT09aCl7UD1EKzE7YnJlYWsgZX19UD1EfX1icmVhaztjYXNlIDkxOmgrKztjYXNlIDQwOmgrKztjYXNlIDM0OmNhc2UgMzk6Zm9yKDtQKys8SCYmbC5jaGFyQ29kZUF0KFApIT09aDspO31pZigwPT09bSlicmVhaztQKyt9c3dpdGNoKG09bC5zdWJzdHJpbmcoQixQKSwwPT09ZiYmKGY9KHo9ei5yZXBsYWNlKGMsIiIpLnRyaW0oKSkuY2hhckNvZGVBdCgwKSksZil7Y2FzZSA2NDpzd2l0Y2goMDxGJiYoej16LnJlcGxhY2UodSwiIikpLGg9ei5jaGFyQ29kZUF0KDEpKXtjYXNlIDEwMDpjYXNlIDEwOTpjYXNlIDExNTpjYXNlIDQ1OkY9czticmVhaztkZWZhdWx0OkY9Un1pZihCPShtPWUocyxGLG0saCxwKzEpKS5sZW5ndGgsMDxOJiYodz1vKDMsbSxGPXQoUix6LFUpLHMseCxrLEIsaCxwLGQpLHo9Ri5qb2luKCIiKSx2b2lkIDAhPT13JiYwPT09KEI9KG09dy50cmltKCkpLmxlbmd0aCkmJihoPTAsbT0iIikpLDA8Qilzd2l0Y2goaCl7Y2FzZSAxMTU6ej16LnJlcGxhY2UoRSxhKTtjYXNlIDEwMDpjYXNlIDEwOTpjYXNlIDQ1Om09eisieyIrbSsifSI7YnJlYWs7Y2FzZSAxMDc6bT0oej16LnJlcGxhY2UoZywiJDEgJDIiKSkrInsiK20rIn0iLG09MT09PUl8fDI9PT1JJiZpKCJAIittLDMpPyJALXdlYmtpdC0iK20rIkAiK206IkAiK207YnJlYWs7ZGVmYXVsdDptPXorbSwxMTI9PT1kJiYoRys9bSxtPSIiKX1lbHNlIG09IiI7YnJlYWs7ZGVmYXVsdDptPWUocyx0KHMseixVKSxtLGQscCsxKX0kKz1tLG09VT1GPUQ9Zj0wLHo9IiIsaD1sLmNoYXJDb2RlQXQoKytQKTticmVhaztjYXNlIDEyNTpjYXNlIDU5OmlmKDE8KEI9KHo9KDA8Rj96LnJlcGxhY2UodSwiIik6eikudHJpbSgpKS5sZW5ndGgpKXN3aXRjaCgwPT09RCYmKGY9ei5jaGFyQ29kZUF0KDApLDQ1PT09Znx8OTY8ZiYmMTIzPmYpJiYoQj0oej16LnJlcGxhY2UoIiAiLCI6IikpLmxlbmd0aCksMDxOJiZ2b2lkIDAhPT0odz1vKDEseixzLG4seCxrLEcubGVuZ3RoLGQscCxkKSkmJjA9PT0oQj0oej13LnRyaW0oKSkubGVuZ3RoKSYmKHo9IlwwXDAiKSxmPXouY2hhckNvZGVBdCgwKSxoPXouY2hhckNvZGVBdCgxKSxmKXtjYXNlIDA6YnJlYWs7Y2FzZSA2NDppZigxMDU9PT1ofHw5OT09PWgpe1YrPXorbC5jaGFyQXQoUCk7YnJlYWt9ZGVmYXVsdDo1OCE9PXouY2hhckNvZGVBdChCLTEpJiYoRys9cih6LGYsaCx6LmNoYXJDb2RlQXQoMikpKX1VPUY9RD1mPTAsej0iIixoPWwuY2hhckNvZGVBdCgrK1ApfX1zd2l0Y2goaCl7Y2FzZSAxMzpjYXNlIDEwOjQ3PT09Xz9fPTA6MD09PTErZiYmMTA3IT09ZCYmMDx6Lmxlbmd0aCYmKEY9MSx6Kz0iXDAiKSwwPE4qTCYmbygwLHoscyxuLHgsayxHLmxlbmd0aCxkLHAsZCksaz0xLHgrKzticmVhaztjYXNlIDU5OmNhc2UgMTI1OmlmKDA9PT1fK0ErVCtTKXtrKys7YnJlYWt9ZGVmYXVsdDpzd2l0Y2goaysrLHY9bC5jaGFyQXQoUCksaCl7Y2FzZSA5OmNhc2UgMzI6aWYoMD09PUErUytfKXN3aXRjaChPKXtjYXNlIDQ0OmNhc2UgNTg6Y2FzZSA5OmNhc2UgMzI6dj0iIjticmVhaztkZWZhdWx0OjMyIT09aCYmKHY9IiAiKX1icmVhaztjYXNlIDA6dj0iXFwwIjticmVhaztjYXNlIDEyOnY9IlxcZiI7YnJlYWs7Y2FzZSAxMTp2PSJcXHYiO2JyZWFrO2Nhc2UgMzg6MD09PUErXytTJiYoRj1VPTEsdj0iXGYiK3YpO2JyZWFrO2Nhc2UgMTA4OmlmKDA9PT1BK18rUytDJiYwPEQpc3dpdGNoKFAtRCl7Y2FzZSAyOjExMj09PU8mJjU4PT09bC5jaGFyQ29kZUF0KFAtMykmJihDPU8pO2Nhc2UgODoxMTE9PT1NJiYoQz1NKX1icmVhaztjYXNlIDU4OjA9PT1BK18rUyYmKEQ9UCk7YnJlYWs7Y2FzZSA0NDowPT09XytUK0ErUyYmKEY9MSx2Kz0iXHIiKTticmVhaztjYXNlIDM0OmNhc2UgMzk6MD09PV8mJihBPUE9PT1oPzA6MD09PUE/aDpBKTticmVhaztjYXNlIDkxOjA9PT1BK18rVCYmUysrO2JyZWFrO2Nhc2UgOTM6MD09PUErXytUJiZTLS07YnJlYWs7Y2FzZSA0MTowPT09QStfK1MmJlQtLTticmVhaztjYXNlIDQwOmlmKDA9PT1BK18rUyl7aWYoMD09PWYpc3dpdGNoKDIqTyszKk0pe2Nhc2UgNTMzOmJyZWFrO2RlZmF1bHQ6Zj0xfVQrK31icmVhaztjYXNlIDY0OjA9PT1fK1QrQStTK0QrbSYmKG09MSk7YnJlYWs7Y2FzZSA0MjpjYXNlIDQ3OmlmKCEoMDxBK1MrVCkpc3dpdGNoKF8pe2Nhc2UgMDpzd2l0Y2goMipoKzMqbC5jaGFyQ29kZUF0KFArMSkpe2Nhc2UgMjM1Ol89NDc7YnJlYWs7Y2FzZSAyMjA6Qj1QLF89NDJ9YnJlYWs7Y2FzZSA0Mjo0Nz09PWgmJjQyPT09TyYmQisyIT09UCYmKDMzPT09bC5jaGFyQ29kZUF0KEIrMikmJihHKz1sLnN1YnN0cmluZyhCLFArMSkpLHY9IiIsXz0wKX19MD09PV8mJih6Kz12KX1NPU8sTz1oLFArK31pZigwPChCPUcubGVuZ3RoKSl7aWYoRj1zLDA8TiYmKHZvaWQgMCE9PSh3PW8oMixHLEYsbix4LGssQixkLHAsZCkpJiYwPT09KEc9dykubGVuZ3RoKSlyZXR1cm4gVitHKyQ7aWYoRz1GLmpvaW4oIiwiKSsieyIrRysifSIsMCE9PUkqQyl7c3dpdGNoKDIhPT1JfHxpKEcsMil8fChDPTApLEMpe2Nhc2UgMTExOkc9Ry5yZXBsYWNlKHksIjotbW96LSQxIikrRzticmVhaztjYXNlIDExMjpHPUcucmVwbGFjZShiLCI6Oi13ZWJraXQtaW5wdXQtJDEiKStHLnJlcGxhY2UoYiwiOjotbW96LSQxIikrRy5yZXBsYWNlKGIsIjotbXMtaW5wdXQtJDEiKStHfUM9MH19cmV0dXJuIFYrRyskfShSLHMsbiwwLDApO3JldHVybiAwPE4mJih2b2lkIDAhPT0obD1vKC0yLGQscyxzLHgsayxkLmxlbmd0aCwwLDAsMCkpJiYoZD1sKSksIiIsQz0wLGs9eD0xLGR9dmFyIGM9L15cMCsvZyx1PS9bXDBcclxmXS9nLGQ9LzogKi9nLHA9L3pvb3xncmEvLGY9LyhbLDogXSkodHJhbnNmb3JtKS9nLGg9Lyxccis/L2csbT0vKFtcdFxyXG4gXSkqXGY/Ji9nLGc9L0Aoa1x3KylccyooXFMqKVxzKi8sYj0vOjoocGxhY2UpL2cseT0vOihyZWFkLW9ubHkpL2csdj0vW3N2aF1cdystW3RibHJdezJ9LyxFPS9cKFxzKiguKilccypcKS9nLHc9LyhbXHNcU10qPyk7L2csUz0vLXNlbGZ8ZmxleC0vZyxfPS9bXl0qPyg6W3JwXVtlbF1hW1x3LV0rKVteXSovLFQ9L3N0cmV0Y2h8OlxzKlx3K1wtKD86Y29udGV8YXZhaWwpLyxBPS8oW14tXSkoaW1hZ2Utc2V0XCgpLyxrPTEseD0xLEM9MCxJPTEsUj1bXSxPPVtdLE49MCxNPW51bGwsTD0wO3JldHVybiBsLnVzZT1mdW5jdGlvbiBlKHQpe3N3aXRjaCh0KXtjYXNlIHZvaWQgMDpjYXNlIG51bGw6Tj1PLmxlbmd0aD0wO2JyZWFrO2RlZmF1bHQ6aWYoImZ1bmN0aW9uIj09PXR5cGVvZiB0KU9bTisrXT10O2Vsc2UgaWYoIm9iamVjdCI9PT10eXBlb2YgdClmb3IodmFyIG49MCxyPXQubGVuZ3RoO248cjsrK24pZSh0W25dKTtlbHNlIEw9MHwhIXR9cmV0dXJuIGV9LGwuc2V0PXMsdm9pZCAwIT09ZSYmcyhlKSxsfTtmdW5jdGlvbiBhKGUpe2UmJm8uY3VycmVudC5pbnNlcnQoZSsifSIpfXZhciBvPXtjdXJyZW50Om51bGx9LHM9ZnVuY3Rpb24oZSx0LG4scixpLHMsbCxjLHUsZCl7c3dpdGNoKGUpe2Nhc2UgMTpzd2l0Y2godC5jaGFyQ29kZUF0KDApKXtjYXNlIDY0OnJldHVybiBvLmN1cnJlbnQuaW5zZXJ0KHQrIjsiKSwiIjtjYXNlIDEwODppZig5OD09PXQuY2hhckNvZGVBdCgyKSlyZXR1cm4iIn1icmVhaztjYXNlIDI6aWYoMD09PWMpcmV0dXJuIHQrIi8qfCovIjticmVhaztjYXNlIDM6c3dpdGNoKGMpe2Nhc2UgMTAyOmNhc2UgMTEyOnJldHVybiBvLmN1cnJlbnQuaW5zZXJ0KG5bMF0rdCksIiI7ZGVmYXVsdDpyZXR1cm4gdCsoMD09PWQ/Ii8qfCovIjoiIil9Y2FzZS0yOnQuc3BsaXQoIi8qfCovfSIpLmZvckVhY2goYSl9fSxsPWZ1bmN0aW9uKGUpe3ZvaWQgMD09PWUmJihlPXt9KTt2YXIgdCxuPWUua2V5fHwiY3NzIjt2b2lkIDAhPT1lLnByZWZpeCYmKHQ9e3ByZWZpeDplLnByZWZpeH0pO3ZhciBhPW5ldyBpKHQpO3ZhciBsLGM9e307bD1lLmNvbnRhaW5lcnx8ZG9jdW1lbnQuaGVhZDt2YXIgdSxkPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoInN0eWxlW2RhdGEtZW1vdGlvbi0iK24rIl0iKTtBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGQsKGZ1bmN0aW9uKGUpe2UuZ2V0QXR0cmlidXRlKCJkYXRhLWVtb3Rpb24tIituKS5zcGxpdCgiICIpLmZvckVhY2goKGZ1bmN0aW9uKGUpe2NbZV09ITB9KSksZS5wYXJlbnROb2RlIT09bCYmbC5hcHBlbmRDaGlsZChlKX0pKSxhLnVzZShlLnN0eWxpc1BsdWdpbnMpKHMpLHU9ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9dC5uYW1lO28uY3VycmVudD1uLGEoZSx0LnN0eWxlcyksciYmKHAuaW5zZXJ0ZWRbaV09ITApfTt2YXIgcD17a2V5Om4sc2hlZXQ6bmV3IHIoe2tleTpuLGNvbnRhaW5lcjpsLG5vbmNlOmUubm9uY2Usc3BlZWR5OmUuc3BlZWR5fSksbm9uY2U6ZS5ub25jZSxpbnNlcnRlZDpjLHJlZ2lzdGVyZWQ6e30saW5zZXJ0OnV9O3JldHVybiBwfTt2YXIgYz1mdW5jdGlvbihlKXtmb3IodmFyIHQsbj0wLHI9MCxpPWUubGVuZ3RoO2k+PTQ7KytyLGktPTQpdD0xNTQwNDgzNDc3Kig2NTUzNSYodD0yNTUmZS5jaGFyQ29kZUF0KHIpfCgyNTUmZS5jaGFyQ29kZUF0KCsrcikpPDw4fCgyNTUmZS5jaGFyQ29kZUF0KCsrcikpPDwxNnwoMjU1JmUuY2hhckNvZGVBdCgrK3IpKTw8MjQpKSsoNTk3OTcqKHQ+Pj4xNik8PDE2KSxuPTE1NDA0ODM0NzcqKDY1NTM1Jih0Xj10Pj4+MjQpKSsoNTk3OTcqKHQ+Pj4xNik8PDE2KV4xNTQwNDgzNDc3Kig2NTUzNSZuKSsoNTk3OTcqKG4+Pj4xNik8PDE2KTtzd2l0Y2goaSl7Y2FzZSAzOm5ePSgyNTUmZS5jaGFyQ29kZUF0KHIrMikpPDwxNjtjYXNlIDI6bl49KDI1NSZlLmNoYXJDb2RlQXQocisxKSk8PDg7Y2FzZSAxOm49MTU0MDQ4MzQ3NyooNjU1MzUmKG5ePTI1NSZlLmNoYXJDb2RlQXQocikpKSsoNTk3OTcqKG4+Pj4xNik8PDE2KX1yZXR1cm4oKChuPTE1NDA0ODM0NzcqKDY1NTM1JihuXj1uPj4+MTMpKSsoNTk3OTcqKG4+Pj4xNik8PDE2KSlebj4+PjE1KT4+PjApLnRvU3RyaW5nKDM2KX0sdT17YW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6MSxib3JkZXJJbWFnZU91dHNldDoxLGJvcmRlckltYWdlU2xpY2U6MSxib3JkZXJJbWFnZVdpZHRoOjEsYm94RmxleDoxLGJveEZsZXhHcm91cDoxLGJveE9yZGluYWxHcm91cDoxLGNvbHVtbkNvdW50OjEsY29sdW1uczoxLGZsZXg6MSxmbGV4R3JvdzoxLGZsZXhQb3NpdGl2ZToxLGZsZXhTaHJpbms6MSxmbGV4TmVnYXRpdmU6MSxmbGV4T3JkZXI6MSxncmlkUm93OjEsZ3JpZFJvd0VuZDoxLGdyaWRSb3dTcGFuOjEsZ3JpZFJvd1N0YXJ0OjEsZ3JpZENvbHVtbjoxLGdyaWRDb2x1bW5FbmQ6MSxncmlkQ29sdW1uU3BhbjoxLGdyaWRDb2x1bW5TdGFydDoxLG1zR3JpZFJvdzoxLG1zR3JpZFJvd1NwYW46MSxtc0dyaWRDb2x1bW46MSxtc0dyaWRDb2x1bW5TcGFuOjEsZm9udFdlaWdodDoxLGxpbmVIZWlnaHQ6MSxvcGFjaXR5OjEsb3JkZXI6MSxvcnBoYW5zOjEsdGFiU2l6ZToxLHdpZG93czoxLHpJbmRleDoxLHpvb206MSxXZWJraXRMaW5lQ2xhbXA6MSxmaWxsT3BhY2l0eToxLGZsb29kT3BhY2l0eToxLHN0b3BPcGFjaXR5OjEsc3Ryb2tlRGFzaGFycmF5OjEsc3Ryb2tlRGFzaG9mZnNldDoxLHN0cm9rZU1pdGVybGltaXQ6MSxzdHJva2VPcGFjaXR5OjEsc3Ryb2tlV2lkdGg6MX07dmFyIGQ9L1tBLVpdfF5tcy9nLHA9L19FTU9fKFteX10rPylfKFteXSo/KV9FTU9fL2csZj1mdW5jdGlvbihlKXtyZXR1cm4gNDU9PT1lLmNoYXJDb2RlQXQoMSl9LGg9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPWUmJiJib29sZWFuIiE9PXR5cGVvZiBlfSxtPWZ1bmN0aW9uKGUpe3ZhciB0PXt9O3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdm9pZCAwPT09dFtuXSYmKHRbbl09ZShuKSksdFtuXX19KChmdW5jdGlvbihlKXtyZXR1cm4gZihlKT9lOmUucmVwbGFjZShkLCItJCYiKS50b0xvd2VyQ2FzZSgpfSkpLGc9ZnVuY3Rpb24oZSx0KXtzd2l0Y2goZSl7Y2FzZSJhbmltYXRpb24iOmNhc2UiYW5pbWF0aW9uTmFtZSI6aWYoInN0cmluZyI9PT10eXBlb2YgdClyZXR1cm4gdC5yZXBsYWNlKHAsKGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4geT17bmFtZTp0LHN0eWxlczpuLG5leHQ6eX0sdH0pKX1yZXR1cm4gMT09PXVbZV18fGYoZSl8fCJudW1iZXIiIT09dHlwZW9mIHR8fDA9PT10P3Q6dCsicHgifTtmdW5jdGlvbiBiKGUsdCxuLHIpe2lmKG51bGw9PW4pcmV0dXJuIiI7aWYodm9pZCAwIT09bi5fX2Vtb3Rpb25fc3R5bGVzKXJldHVybiBuO3N3aXRjaCh0eXBlb2Ygbil7Y2FzZSJib29sZWFuIjpyZXR1cm4iIjtjYXNlIm9iamVjdCI6aWYoMT09PW4uYW5pbSlyZXR1cm4geT17bmFtZTpuLm5hbWUsc3R5bGVzOm4uc3R5bGVzLG5leHQ6eX0sbi5uYW1lO2lmKHZvaWQgMCE9PW4uc3R5bGVzKXt2YXIgaT1uLm5leHQ7aWYodm9pZCAwIT09aSlmb3IoO3ZvaWQgMCE9PWk7KXk9e25hbWU6aS5uYW1lLHN0eWxlczppLnN0eWxlcyxuZXh0Onl9LGk9aS5uZXh0O3JldHVybiBuLnN0eWxlcysiOyJ9cmV0dXJuIGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj0iIjtpZihBcnJheS5pc0FycmF5KG4pKWZvcih2YXIgaT0wO2k8bi5sZW5ndGg7aSsrKXIrPWIoZSx0LG5baV0sITEpO2Vsc2UgZm9yKHZhciBhIGluIG4pe3ZhciBvPW5bYV07aWYoIm9iamVjdCIhPT10eXBlb2YgbyludWxsIT10JiZ2b2lkIDAhPT10W29dP3IrPWErInsiK3Rbb10rIn0iOmgobykmJihyKz1tKGEpKyI6IitnKGEsbykrIjsiKTtlbHNlIGlmKCFBcnJheS5pc0FycmF5KG8pfHwic3RyaW5nIiE9PXR5cGVvZiBvWzBdfHxudWxsIT10JiZ2b2lkIDAhPT10W29bMF1dKXt2YXIgcz1iKGUsdCxvLCExKTtzd2l0Y2goYSl7Y2FzZSJhbmltYXRpb24iOmNhc2UiYW5pbWF0aW9uTmFtZSI6cis9bShhKSsiOiIrcysiOyI7YnJlYWs7ZGVmYXVsdDpyKz1hKyJ7IitzKyJ9In19ZWxzZSBmb3IodmFyIGw9MDtsPG8ubGVuZ3RoO2wrKyloKG9bbF0pJiYocis9bShhKSsiOiIrZyhhLG9bbF0pKyI7Iil9cmV0dXJuIHJ9KGUsdCxuKTtjYXNlImZ1bmN0aW9uIjppZih2b2lkIDAhPT1lKXt2YXIgYT15LG89bihlKTtyZXR1cm4geT1hLGIoZSx0LG8scil9YnJlYWs7Y2FzZSJzdHJpbmciOn1pZihudWxsPT10KXJldHVybiBuO3ZhciBzPXRbbl07cmV0dXJuIHZvaWQgMD09PXN8fHI/bjpzfXZhciB5LHY9L2xhYmVsOlxzKihbXlxzO1xue10rKVxzKjsvZzt2YXIgRT1mdW5jdGlvbihlLHQsbil7aWYoMT09PWUubGVuZ3RoJiYib2JqZWN0Ij09PXR5cGVvZiBlWzBdJiZudWxsIT09ZVswXSYmdm9pZCAwIT09ZVswXS5zdHlsZXMpcmV0dXJuIGVbMF07dmFyIHI9ITAsaT0iIjt5PXZvaWQgMDt2YXIgYT1lWzBdO251bGw9PWF8fHZvaWQgMD09PWEucmF3PyhyPSExLGkrPWIobix0LGEsITEpKTppKz1hWzBdO2Zvcih2YXIgbz0xO288ZS5sZW5ndGg7bysrKWkrPWIobix0LGVbb10sNDY9PT1pLmNoYXJDb2RlQXQoaS5sZW5ndGgtMSkpLHImJihpKz1hW29dKTt2Lmxhc3RJbmRleD0wO2Zvcih2YXIgcyxsPSIiO251bGwhPT0ocz12LmV4ZWMoaSkpOylsKz0iLSIrc1sxXTtyZXR1cm57bmFtZTpjKGkpK2wsc3R5bGVzOmksbmV4dDp5fX07ZnVuY3Rpb24gdyhlLHQsbil7dmFyIHI9IiI7cmV0dXJuIG4uc3BsaXQoIiAiKS5mb3JFYWNoKChmdW5jdGlvbihuKXt2b2lkIDAhPT1lW25dP3QucHVzaChlW25dKTpyKz1uKyIgIn0pKSxyfXZhciBTPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lLmtleSsiLSIrdC5uYW1lO2lmKCExPT09biYmdm9pZCAwPT09ZS5yZWdpc3RlcmVkW3JdJiYoZS5yZWdpc3RlcmVkW3JdPXQuc3R5bGVzKSx2b2lkIDA9PT1lLmluc2VydGVkW3QubmFtZV0pe3ZhciBpPXQ7ZG97ZS5pbnNlcnQoIi4iK3IsaSxlLnNoZWV0LCEwKTtpPWkubmV4dH13aGlsZSh2b2lkIDAhPT1pKX19O2Z1bmN0aW9uIF8oZSx0KXtpZih2b2lkIDA9PT1lLmluc2VydGVkW3QubmFtZV0pcmV0dXJuIGUuaW5zZXJ0KCIiLHQsZS5zaGVldCwhMCl9ZnVuY3Rpb24gVChlLHQsbil7dmFyIHI9W10saT13KGUscixuKTtyZXR1cm4gci5sZW5ndGg8Mj9uOmkrdChyKX12YXIgQT1mdW5jdGlvbiBlKHQpe2Zvcih2YXIgbj0iIixyPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBpPXRbcl07aWYobnVsbCE9aSl7dmFyIGE9dm9pZCAwO3N3aXRjaCh0eXBlb2YgaSl7Y2FzZSJib29sZWFuIjpicmVhaztjYXNlIm9iamVjdCI6aWYoQXJyYXkuaXNBcnJheShpKSlhPWUoaSk7ZWxzZSBmb3IodmFyIG8gaW4gYT0iIixpKWlbb10mJm8mJihhJiYoYSs9IiAiKSxhKz1vKTticmVhaztkZWZhdWx0OmE9aX1hJiYobiYmKG4rPSIgIiksbis9YSl9fXJldHVybiBufSxrPWZ1bmN0aW9uKGUpe3ZhciB0PWwoZSk7dC5zaGVldC5zcGVlZHk9ZnVuY3Rpb24oZSl7dGhpcy5pc1NwZWVkeT1lfSx0LmNvbXBhdD0hMDt2YXIgbj1mdW5jdGlvbigpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLG49bmV3IEFycmF5KGUpLHI9MDtyPGU7cisrKW5bcl09YXJndW1lbnRzW3JdO3ZhciBpPUUobix0LnJlZ2lzdGVyZWQsdm9pZCAwKTtyZXR1cm4gUyh0LGksITEpLHQua2V5KyItIitpLm5hbWV9O3JldHVybntjc3M6bixjeDpmdW5jdGlvbigpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHI9bmV3IEFycmF5KGUpLGk9MDtpPGU7aSsrKXJbaV09YXJndW1lbnRzW2ldO3JldHVybiBUKHQucmVnaXN0ZXJlZCxuLEEocikpfSxpbmplY3RHbG9iYWw6ZnVuY3Rpb24oKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCxuPW5ldyBBcnJheShlKSxyPTA7cjxlO3IrKyluW3JdPWFyZ3VtZW50c1tyXTt2YXIgaT1FKG4sdC5yZWdpc3RlcmVkKTtfKHQsaSl9LGtleWZyYW1lczpmdW5jdGlvbigpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLG49bmV3IEFycmF5KGUpLHI9MDtyPGU7cisrKW5bcl09YXJndW1lbnRzW3JdO3ZhciBpPUUobix0LnJlZ2lzdGVyZWQpLGE9ImFuaW1hdGlvbi0iK2kubmFtZTtyZXR1cm4gXyh0LHtuYW1lOmkubmFtZSxzdHlsZXM6IkBrZXlmcmFtZXMgIithKyJ7IitpLnN0eWxlcysifSJ9KSxhfSxoeWRyYXRlOmZ1bmN0aW9uKGUpe2UuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dC5pbnNlcnRlZFtlXT0hMH0pKX0sZmx1c2g6ZnVuY3Rpb24oKXt0LnJlZ2lzdGVyZWQ9e30sdC5pbnNlcnRlZD17fSx0LnNoZWV0LmZsdXNoKCl9LHNoZWV0OnQuc2hlZXQsY2FjaGU6dCxnZXRSZWdpc3RlcmVkU3R5bGVzOncuYmluZChudWxsLHQucmVnaXN0ZXJlZCksbWVyZ2U6VC5iaW5kKG51bGwsdC5yZWdpc3RlcmVkLG4pfX07bi5kKHQsImNhY2hlIiwoZnVuY3Rpb24oKXtyZXR1cm4gRn0pKSxuLmQodCwiY3NzIiwoZnVuY3Rpb24oKXtyZXR1cm4gRH0pKSxuLmQodCwiY3giLChmdW5jdGlvbigpe3JldHVybiBSfSkpLG4uZCh0LCJmbHVzaCIsKGZ1bmN0aW9uKCl7cmV0dXJuIEN9KSksbi5kKHQsImdldFJlZ2lzdGVyZWRTdHlsZXMiLChmdW5jdGlvbigpe3JldHVybiBOfSkpLG4uZCh0LCJoeWRyYXRlIiwoZnVuY3Rpb24oKXtyZXR1cm4gSX0pKSxuLmQodCwiaW5qZWN0R2xvYmFsIiwoZnVuY3Rpb24oKXtyZXR1cm4gTX0pKSxuLmQodCwia2V5ZnJhbWVzIiwoZnVuY3Rpb24oKXtyZXR1cm4gTH0pKSxuLmQodCwibWVyZ2UiLChmdW5jdGlvbigpe3JldHVybiBPfSkpLG4uZCh0LCJzaGVldCIsKGZ1bmN0aW9uKCl7cmV0dXJuIFB9KSk7dmFyIHg9aygpLEM9eC5mbHVzaCxJPXguaHlkcmF0ZSxSPXguY3gsTz14Lm1lcmdlLE49eC5nZXRSZWdpc3RlcmVkU3R5bGVzLE09eC5pbmplY3RHbG9iYWwsTD14LmtleWZyYW1lcyxEPXguY3NzLFA9eC5zaGVldCxGPXguY2FjaGV9LCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7bi5kKHQsImEiLChmdW5jdGlvbigpe3JldHVybiByfSkpO2NvbnN0IHI9ZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZXx8bnVsbD09PWUpcmV0dXJuIGE7aWYoInN0cmluZyI9PT10eXBlb2YgZSlyZXR1cm4gdD1lLGkoKGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLnR5cGU9PT10fSkpO3ZhciB0O2lmKCJvYmplY3QiPT09dHlwZW9mIGUpcmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ZnVuY3Rpb24oZSl7Y29uc3QgdD1bXTtsZXQgbj0tMTtmb3IoOysrbjxlLmxlbmd0aDspdFtuXT1yKGVbbl0pO3JldHVybiBpKChmdW5jdGlvbigpe2xldCBlPS0xO2Zvcih2YXIgbj1hcmd1bWVudHMubGVuZ3RoLHI9bmV3IEFycmF5KG4pLGk9MDtpPG47aSsrKXJbaV09YXJndW1lbnRzW2ldO2Zvcig7KytlPHQubGVuZ3RoOylpZih0W2VdLmNhbGwodGhpcywuLi5yKSlyZXR1cm4hMDtyZXR1cm4hMX0pKX0oZSk6ZnVuY3Rpb24oZSl7cmV0dXJuIGkoKGZ1bmN0aW9uKHQpe2xldCBuO2ZvcihuIGluIGUpaWYodFtuXSE9PWVbbl0pcmV0dXJuITE7cmV0dXJuITB9KSl9KGUpO2lmKCJmdW5jdGlvbiI9PT10eXBlb2YgZSlyZXR1cm4gaShlKTt0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIGZ1bmN0aW9uLCBzdHJpbmcsIG9yIG9iamVjdCBhcyB0ZXN0Iil9O2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe2Zvcih2YXIgbj1hcmd1bWVudHMubGVuZ3RoLHI9bmV3IEFycmF5KG4+MT9uLTE6MCksaT0xO2k8bjtpKyspcltpLTFdPWFyZ3VtZW50c1tpXTtyZXR1cm4gQm9vbGVhbih0JiYib2JqZWN0Ij09PXR5cGVvZiB0JiYidHlwZSJpbiB0JiZCb29sZWFuKGUuY2FsbCh0aGlzLHQsLi4ucikpKX19ZnVuY3Rpb24gYSgpe3JldHVybiEwfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt0LmE9eydjb2RlW2NsYXNzKj0ibGFuZ3VhZ2UtIl0nOntjb2xvcjoiI2NjYyIsYmFja2dyb3VuZDoibm9uZSIsZm9udEZhbWlseToiQ29uc29sYXMsIE1vbmFjbywgJ0FuZGFsZSBNb25vJywgJ1VidW50dSBNb25vJywgbW9ub3NwYWNlIixmb250U2l6ZToiMWVtIix0ZXh0QWxpZ246ImxlZnQiLHdoaXRlU3BhY2U6InByZSIsd29yZFNwYWNpbmc6Im5vcm1hbCIsd29yZEJyZWFrOiJub3JtYWwiLHdvcmRXcmFwOiJub3JtYWwiLGxpbmVIZWlnaHQ6IjEuNSIsTW96VGFiU2l6ZToiNCIsT1RhYlNpemU6IjQiLHRhYlNpemU6IjQiLFdlYmtpdEh5cGhlbnM6Im5vbmUiLE1vekh5cGhlbnM6Im5vbmUiLG1zSHlwaGVuczoibm9uZSIsaHlwaGVuczoibm9uZSJ9LCdwcmVbY2xhc3MqPSJsYW5ndWFnZS0iXSc6e2NvbG9yOiIjY2NjIixiYWNrZ3JvdW5kOiIjMmQyZDJkIixmb250RmFtaWx5OiJDb25zb2xhcywgTW9uYWNvLCAnQW5kYWxlIE1vbm8nLCAnVWJ1bnR1IE1vbm8nLCBtb25vc3BhY2UiLGZvbnRTaXplOiIxZW0iLHRleHRBbGlnbjoibGVmdCIsd2hpdGVTcGFjZToicHJlIix3b3JkU3BhY2luZzoibm9ybWFsIix3b3JkQnJlYWs6Im5vcm1hbCIsd29yZFdyYXA6Im5vcm1hbCIsbGluZUhlaWdodDoiMS41IixNb3pUYWJTaXplOiI0IixPVGFiU2l6ZToiNCIsdGFiU2l6ZToiNCIsV2Via2l0SHlwaGVuczoibm9uZSIsTW96SHlwaGVuczoibm9uZSIsbXNIeXBoZW5zOiJub25lIixoeXBoZW5zOiJub25lIixwYWRkaW5nOiIxZW0iLG1hcmdpbjoiLjVlbSAwIixvdmVyZmxvdzoiYXV0byJ9LCc6bm90KHByZSkgPiBjb2RlW2NsYXNzKj0ibGFuZ3VhZ2UtIl0nOntiYWNrZ3JvdW5kOiIjMmQyZDJkIixwYWRkaW5nOiIuMWVtIixib3JkZXJSYWRpdXM6Ii4zZW0iLHdoaXRlU3BhY2U6Im5vcm1hbCJ9LGNvbW1lbnQ6e2NvbG9yOiIjOTk5In0sImJsb2NrLWNvbW1lbnQiOntjb2xvcjoiIzk5OSJ9LHByb2xvZzp7Y29sb3I6IiM5OTkifSxkb2N0eXBlOntjb2xvcjoiIzk5OSJ9LGNkYXRhOntjb2xvcjoiIzk5OSJ9LHB1bmN0dWF0aW9uOntjb2xvcjoiI2NjYyJ9LHRhZzp7Y29sb3I6IiNlMjc3N2EifSwiYXR0ci1uYW1lIjp7Y29sb3I6IiNlMjc3N2EifSxuYW1lc3BhY2U6e2NvbG9yOiIjZTI3NzdhIn0sZGVsZXRlZDp7Y29sb3I6IiNlMjc3N2EifSwiZnVuY3Rpb24tbmFtZSI6e2NvbG9yOiIjNjE5NmNjIn0sYm9vbGVhbjp7Y29sb3I6IiNmMDhkNDkifSxudW1iZXI6e2NvbG9yOiIjZjA4ZDQ5In0sZnVuY3Rpb246e2NvbG9yOiIjZjA4ZDQ5In0scHJvcGVydHk6e2NvbG9yOiIjZjhjNTU1In0sImNsYXNzLW5hbWUiOntjb2xvcjoiI2Y4YzU1NSJ9LGNvbnN0YW50Ontjb2xvcjoiI2Y4YzU1NSJ9LHN5bWJvbDp7Y29sb3I6IiNmOGM1NTUifSxzZWxlY3Rvcjp7Y29sb3I6IiNjYzk5Y2QifSxpbXBvcnRhbnQ6e2NvbG9yOiIjY2M5OWNkIixmb250V2VpZ2h0OiJib2xkIn0sYXRydWxlOntjb2xvcjoiI2NjOTljZCJ9LGtleXdvcmQ6e2NvbG9yOiIjY2M5OWNkIn0sYnVpbHRpbjp7Y29sb3I6IiNjYzk5Y2QifSxzdHJpbmc6e2NvbG9yOiIjN2VjNjk5In0sY2hhcjp7Y29sb3I6IiM3ZWM2OTkifSwiYXR0ci12YWx1ZSI6e2NvbG9yOiIjN2VjNjk5In0scmVnZXg6e2NvbG9yOiIjN2VjNjk5In0sdmFyaWFibGU6e2NvbG9yOiIjN2VjNjk5In0sb3BlcmF0b3I6e2NvbG9yOiIjNjdjZGNjIn0sZW50aXR5Ontjb2xvcjoiIzY3Y2RjYyIsY3Vyc29yOiJoZWxwIn0sdXJsOntjb2xvcjoiIzY3Y2RjYyJ9LGJvbGQ6e2ZvbnRXZWlnaHQ6ImJvbGQifSxpdGFsaWM6e2ZvbnRTdHlsZToiaXRhbGljIn0saW5zZXJ0ZWQ6e2NvbG9yOiJncmVlbiJ9fX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj17fTtuLnIociksbi5kKHIsImRvY3VtZW50IiwoZnVuY3Rpb24oKXtyZXR1cm4gcWV9KSksbi5kKHIsImNvbnRlbnRJbml0aWFsIiwoZnVuY3Rpb24oKXtyZXR1cm4gV2V9KSksbi5kKHIsImZsb3dJbml0aWFsIiwoZnVuY3Rpb24oKXtyZXR1cm4gS2V9KSksbi5kKHIsImZsb3ciLChmdW5jdGlvbigpe3JldHVybiBZZX0pKSxuLmQociwic3RyaW5nIiwoZnVuY3Rpb24oKXtyZXR1cm4gWGV9KSksbi5kKHIsInRleHQiLChmdW5jdGlvbigpe3JldHVybiBaZX0pKSxuLmQociwiaW5zaWRlU3BhbiIsKGZ1bmN0aW9uKCl7cmV0dXJuIFFlfSkpLG4uZChyLCJhdHRlbnRpb25NYXJrZXJzIiwoZnVuY3Rpb24oKXtyZXR1cm4gSmV9KSksbi5kKHIsImRpc2FibGUiLChmdW5jdGlvbigpe3JldHVybiBldH0pKTt2YXIgaT17fTtuLnIoaSksbi5kKGksImJvb2xlYW4iLChmdW5jdGlvbigpe3JldHVybiAkdH0pKSxuLmQoaSwiYm9vbGVhbmlzaCIsKGZ1bmN0aW9uKCl7cmV0dXJuIFZ0fSkpLG4uZChpLCJvdmVybG9hZGVkQm9vbGVhbiIsKGZ1bmN0aW9uKCl7cmV0dXJuIHF0fSkpLG4uZChpLCJudW1iZXIiLChmdW5jdGlvbigpe3JldHVybiBXdH0pKSxuLmQoaSwic3BhY2VTZXBhcmF0ZWQiLChmdW5jdGlvbigpe3JldHVybiBLdH0pKSxuLmQoaSwiY29tbWFTZXBhcmF0ZWQiLChmdW5jdGlvbigpe3JldHVybiBZdH0pKSxuLmQoaSwiY29tbWFPclNwYWNlU2VwYXJhdGVkIiwoZnVuY3Rpb24oKXtyZXR1cm4gWHR9KSk7dmFyIGE9bigwKSxvPW4ubihhKSxzPW4oMTIyKSxsPW4ubihzKTtmdW5jdGlvbiBjKGUpe3JldHVybiBlJiYib2JqZWN0Ij09PXR5cGVvZiBlPyJwb3NpdGlvbiJpbiBlfHwidHlwZSJpbiBlP2QoZS5wb3NpdGlvbik6InN0YXJ0ImluIGV8fCJlbmQiaW4gZT9kKGUpOiJsaW5lImluIGV8fCJjb2x1bW4iaW4gZT91KGUpOiIiOiIifWZ1bmN0aW9uIHUoZSl7cmV0dXJuIHAoZSYmZS5saW5lKSsiOiIrcChlJiZlLmNvbHVtbil9ZnVuY3Rpb24gZChlKXtyZXR1cm4gdShlJiZlLnN0YXJ0KSsiLSIrdShlJiZlLmVuZCl9ZnVuY3Rpb24gcChlKXtyZXR1cm4gZSYmIm51bWJlciI9PT10eXBlb2YgZT9lOjF9Y2xhc3MgZiBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKGUsdCxuKXtjb25zdCByPVtudWxsLG51bGxdO2xldCBpPXtzdGFydDp7bGluZTpudWxsLGNvbHVtbjpudWxsfSxlbmQ6e2xpbmU6bnVsbCxjb2x1bW46bnVsbH19O2lmKHN1cGVyKCksInN0cmluZyI9PT10eXBlb2YgdCYmKG49dCx0PXZvaWQgMCksInN0cmluZyI9PT10eXBlb2Ygbil7Y29uc3QgZT1uLmluZGV4T2YoIjoiKTstMT09PWU/clsxXT1uOihyWzBdPW4uc2xpY2UoMCxlKSxyWzFdPW4uc2xpY2UoZSsxKSl9dCYmKCJ0eXBlImluIHR8fCJwb3NpdGlvbiJpbiB0P3QucG9zaXRpb24mJihpPXQucG9zaXRpb24pOiJzdGFydCJpbiB0fHwiZW5kImluIHQ/aT10OigibGluZSJpbiB0fHwiY29sdW1uImluIHQpJiYoaS5zdGFydD10KSksdGhpcy5uYW1lPWModCl8fCIxOjEiLHRoaXMubWVzc2FnZT0ib2JqZWN0Ij09PXR5cGVvZiBlP2UubWVzc2FnZTplLHRoaXMuc3RhY2s9IiIsIm9iamVjdCI9PT10eXBlb2YgZSYmZS5zdGFjayYmKHRoaXMuc3RhY2s9ZS5zdGFjayksdGhpcy5yZWFzb249dGhpcy5tZXNzYWdlLHRoaXMuZmF0YWwsdGhpcy5saW5lPWkuc3RhcnQubGluZSx0aGlzLmNvbHVtbj1pLnN0YXJ0LmNvbHVtbix0aGlzLnBvc2l0aW9uPWksdGhpcy5zb3VyY2U9clswXSx0aGlzLnJ1bGVJZD1yWzFdLHRoaXMuZmlsZSx0aGlzLmFjdHVhbCx0aGlzLmV4cGVjdGVkLHRoaXMudXJsLHRoaXMubm90ZX19Zi5wcm90b3R5cGUuZmlsZT0iIixmLnByb3RvdHlwZS5uYW1lPSIiLGYucHJvdG90eXBlLnJlYXNvbj0iIixmLnByb3RvdHlwZS5tZXNzYWdlPSIiLGYucHJvdG90eXBlLnN0YWNrPSIiLGYucHJvdG90eXBlLmZhdGFsPW51bGwsZi5wcm90b3R5cGUuY29sdW1uPW51bGwsZi5wcm90b3R5cGUubGluZT1udWxsLGYucHJvdG90eXBlLnNvdXJjZT1udWxsLGYucHJvdG90eXBlLnJ1bGVJZD1udWxsLGYucHJvdG90eXBlLnBvc2l0aW9uPW51bGw7Y29uc3QgaD17YmFzZW5hbWU6ZnVuY3Rpb24oZSx0KXtpZih2b2lkIDAhPT10JiYic3RyaW5nIiE9PXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoJyJleHQiIGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcnKTtnKGUpO2xldCBuLHI9MCxpPS0xLGE9ZS5sZW5ndGg7aWYodm9pZCAwPT09dHx8MD09PXQubGVuZ3RofHx0Lmxlbmd0aD5lLmxlbmd0aCl7Zm9yKDthLS07KWlmKDQ3PT09ZS5jaGFyQ29kZUF0KGEpKXtpZihuKXtyPWErMTticmVha319ZWxzZSBpPDAmJihuPSEwLGk9YSsxKTtyZXR1cm4gaTwwPyIiOmUuc2xpY2UocixpKX1pZih0PT09ZSlyZXR1cm4iIjtsZXQgbz0tMSxzPXQubGVuZ3RoLTE7Zm9yKDthLS07KWlmKDQ3PT09ZS5jaGFyQ29kZUF0KGEpKXtpZihuKXtyPWErMTticmVha319ZWxzZSBvPDAmJihuPSEwLG89YSsxKSxzPi0xJiYoZS5jaGFyQ29kZUF0KGEpPT09dC5jaGFyQ29kZUF0KHMtLSk/czwwJiYoaT1hKToocz0tMSxpPW8pKTtyPT09aT9pPW86aTwwJiYoaT1lLmxlbmd0aCk7cmV0dXJuIGUuc2xpY2UocixpKX0sZGlybmFtZTpmdW5jdGlvbihlKXtpZihnKGUpLDA9PT1lLmxlbmd0aClyZXR1cm4iLiI7bGV0IHQsbj0tMSxyPWUubGVuZ3RoO2Zvcig7LS1yOylpZig0Nz09PWUuY2hhckNvZGVBdChyKSl7aWYodCl7bj1yO2JyZWFrfX1lbHNlIHR8fCh0PSEwKTtyZXR1cm4gbjwwPzQ3PT09ZS5jaGFyQ29kZUF0KDApPyIvIjoiLiI6MT09PW4mJjQ3PT09ZS5jaGFyQ29kZUF0KDApPyIvLyI6ZS5zbGljZSgwLG4pfSxleHRuYW1lOmZ1bmN0aW9uKGUpe2coZSk7bGV0IHQsbj1lLmxlbmd0aCxyPS0xLGk9MCxhPS0xLG89MDtmb3IoO24tLTspe2NvbnN0IHM9ZS5jaGFyQ29kZUF0KG4pO2lmKDQ3IT09cylyPDAmJih0PSEwLHI9bisxKSw0Nj09PXM/YTwwP2E9bjoxIT09byYmKG89MSk6YT4tMSYmKG89LTEpO2Vsc2UgaWYodCl7aT1uKzE7YnJlYWt9fWlmKGE8MHx8cjwwfHwwPT09b3x8MT09PW8mJmE9PT1yLTEmJmE9PT1pKzEpcmV0dXJuIiI7cmV0dXJuIGUuc2xpY2UoYSxyKX0sam9pbjpmdW5jdGlvbigpe2xldCBlLHQ9LTE7Zm9yKHZhciBuPWFyZ3VtZW50cy5sZW5ndGgscj1uZXcgQXJyYXkobiksaT0wO2k8bjtpKyspcltpXT1hcmd1bWVudHNbaV07Zm9yKDsrK3Q8ci5sZW5ndGg7KWcoclt0XSksclt0XSYmKGU9dm9pZCAwPT09ZT9yW3RdOmUrIi8iK3JbdF0pO3JldHVybiB2b2lkIDA9PT1lPyIuIjptKGUpfSxzZXA6Ii8ifTtmdW5jdGlvbiBtKGUpe2coZSk7Y29uc3QgdD00Nz09PWUuY2hhckNvZGVBdCgwKTtsZXQgbj1mdW5jdGlvbihlLHQpe2xldCBuLHIsaT0iIixhPTAsbz0tMSxzPTAsbD0tMTtmb3IoOysrbDw9ZS5sZW5ndGg7KXtpZihsPGUubGVuZ3RoKW49ZS5jaGFyQ29kZUF0KGwpO2Vsc2V7aWYoNDc9PT1uKWJyZWFrO249NDd9aWYoNDc9PT1uKXtpZihvPT09bC0xfHwxPT09cyk7ZWxzZSBpZihvIT09bC0xJiYyPT09cyl7aWYoaS5sZW5ndGg8Mnx8MiE9PWF8fDQ2IT09aS5jaGFyQ29kZUF0KGkubGVuZ3RoLTEpfHw0NiE9PWkuY2hhckNvZGVBdChpLmxlbmd0aC0yKSlpZihpLmxlbmd0aD4yKXtpZihyPWkubGFzdEluZGV4T2YoIi8iKSxyIT09aS5sZW5ndGgtMSl7cjwwPyhpPSIiLGE9MCk6KGk9aS5zbGljZSgwLHIpLGE9aS5sZW5ndGgtMS1pLmxhc3RJbmRleE9mKCIvIikpLG89bCxzPTA7Y29udGludWV9fWVsc2UgaWYoaS5sZW5ndGg+MCl7aT0iIixhPTAsbz1sLHM9MDtjb250aW51ZX10JiYoaT1pLmxlbmd0aD4wP2krIi8uLiI6Ii4uIixhPTIpfWVsc2UgaS5sZW5ndGg+MD9pKz0iLyIrZS5zbGljZShvKzEsbCk6aT1lLnNsaWNlKG8rMSxsKSxhPWwtby0xO289bCxzPTB9ZWxzZSA0Nj09PW4mJnM+LTE/cysrOnM9LTF9cmV0dXJuIGl9KGUsIXQpO3JldHVybiAwIT09bi5sZW5ndGh8fHR8fChuPSIuIiksbi5sZW5ndGg+MCYmNDc9PT1lLmNoYXJDb2RlQXQoZS5sZW5ndGgtMSkmJihuKz0iLyIpLHQ/Ii8iK246bn1mdW5jdGlvbiBnKGUpe2lmKCJzdHJpbmciIT09dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiUGF0aCBtdXN0IGJlIGEgc3RyaW5nLiBSZWNlaXZlZCAiK0pTT04uc3RyaW5naWZ5KGUpKX1jb25zdCBiPXtjd2Q6ZnVuY3Rpb24oKXtyZXR1cm4iLyJ9fTtmdW5jdGlvbiB5KGUpe3JldHVybiBudWxsIT09ZSYmIm9iamVjdCI9PT10eXBlb2YgZSYmZS5ocmVmJiZlLm9yaWdpbn1mdW5jdGlvbiB2KGUpe2lmKCJzdHJpbmciPT09dHlwZW9mIGUpZT1uZXcgVVJMKGUpO2Vsc2UgaWYoIXkoZSkpe2NvbnN0IHQ9bmV3IFR5cGVFcnJvcignVGhlICJwYXRoIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgc3RyaW5nIG9yIGFuIGluc3RhbmNlIG9mIFVSTC4gUmVjZWl2ZWQgYCcrZSsiYCIpO3Rocm93IHQuY29kZT0iRVJSX0lOVkFMSURfQVJHX1RZUEUiLHR9aWYoImZpbGU6IiE9PWUucHJvdG9jb2wpe2NvbnN0IGU9bmV3IFR5cGVFcnJvcigiVGhlIFVSTCBtdXN0IGJlIG9mIHNjaGVtZSBmaWxlIik7dGhyb3cgZS5jb2RlPSJFUlJfSU5WQUxJRF9VUkxfU0NIRU1FIixlfXJldHVybiBmdW5jdGlvbihlKXtpZigiIiE9PWUuaG9zdG5hbWUpe2NvbnN0IGU9bmV3IFR5cGVFcnJvcignRmlsZSBVUkwgaG9zdCBtdXN0IGJlICJsb2NhbGhvc3QiIG9yIGVtcHR5IG9uIGRhcndpbicpO3Rocm93IGUuY29kZT0iRVJSX0lOVkFMSURfRklMRV9VUkxfSE9TVCIsZX1jb25zdCB0PWUucGF0aG5hbWU7bGV0IG49LTE7Zm9yKDsrK248dC5sZW5ndGg7KWlmKDM3PT09dC5jaGFyQ29kZUF0KG4pJiY1MD09PXQuY2hhckNvZGVBdChuKzEpKXtjb25zdCBlPXQuY2hhckNvZGVBdChuKzIpO2lmKDcwPT09ZXx8MTAyPT09ZSl7Y29uc3QgZT1uZXcgVHlwZUVycm9yKCJGaWxlIFVSTCBwYXRoIG11c3Qgbm90IGluY2x1ZGUgZW5jb2RlZCAvIGNoYXJhY3RlcnMiKTt0aHJvdyBlLmNvZGU9IkVSUl9JTlZBTElEX0ZJTEVfVVJMX1BBVEgiLGV9fXJldHVybiBkZWNvZGVVUklDb21wb25lbnQodCl9KGUpfWNvbnN0IEU9WyJoaXN0b3J5IiwicGF0aCIsImJhc2VuYW1lIiwic3RlbSIsImV4dG5hbWUiLCJkaXJuYW1lIl07Y2xhc3Mgd3tjb25zdHJ1Y3RvcihlKXtsZXQgdDt0PWU/InN0cmluZyI9PT10eXBlb2YgZXx8ZnVuY3Rpb24oZSl7cmV0dXJuIGwoKShlKX0oZSk/e3ZhbHVlOmV9OnkoZSk/e3BhdGg6ZX06ZTp7fSx0aGlzLmRhdGE9e30sdGhpcy5tZXNzYWdlcz1bXSx0aGlzLmhpc3Rvcnk9W10sdGhpcy5jd2Q9Yi5jd2QoKSx0aGlzLnZhbHVlLHRoaXMuc3RvcmVkLHRoaXMucmVzdWx0LHRoaXMubWFwO2xldCBuLHI9LTE7Zm9yKDsrK3I8RS5sZW5ndGg7KXtjb25zdCBlPUVbcl07ZSBpbiB0JiZ2b2lkIDAhPT10W2VdJiZudWxsIT09dFtlXSYmKHRoaXNbZV09Imhpc3RvcnkiPT09ZT9bLi4udFtlXV06dFtlXSl9Zm9yKG4gaW4gdClFLmluY2x1ZGVzKG4pfHwodGhpc1tuXT10W25dKX1nZXQgcGF0aCgpe3JldHVybiB0aGlzLmhpc3RvcnlbdGhpcy5oaXN0b3J5Lmxlbmd0aC0xXX1zZXQgcGF0aChlKXt5KGUpJiYoZT12KGUpKSxfKGUsInBhdGgiKSx0aGlzLnBhdGghPT1lJiZ0aGlzLmhpc3RvcnkucHVzaChlKX1nZXQgZGlybmFtZSgpe3JldHVybiJzdHJpbmciPT09dHlwZW9mIHRoaXMucGF0aD9oLmRpcm5hbWUodGhpcy5wYXRoKTp2b2lkIDB9c2V0IGRpcm5hbWUoZSl7VCh0aGlzLmJhc2VuYW1lLCJkaXJuYW1lIiksdGhpcy5wYXRoPWguam9pbihlfHwiIix0aGlzLmJhc2VuYW1lKX1nZXQgYmFzZW5hbWUoKXtyZXR1cm4ic3RyaW5nIj09PXR5cGVvZiB0aGlzLnBhdGg/aC5iYXNlbmFtZSh0aGlzLnBhdGgpOnZvaWQgMH1zZXQgYmFzZW5hbWUoZSl7XyhlLCJiYXNlbmFtZSIpLFMoZSwiYmFzZW5hbWUiKSx0aGlzLnBhdGg9aC5qb2luKHRoaXMuZGlybmFtZXx8IiIsZSl9Z2V0IGV4dG5hbWUoKXtyZXR1cm4ic3RyaW5nIj09PXR5cGVvZiB0aGlzLnBhdGg/aC5leHRuYW1lKHRoaXMucGF0aCk6dm9pZCAwfXNldCBleHRuYW1lKGUpe2lmKFMoZSwiZXh0bmFtZSIpLFQodGhpcy5kaXJuYW1lLCJleHRuYW1lIiksZSl7aWYoNDYhPT1lLmNoYXJDb2RlQXQoMCkpdGhyb3cgbmV3IEVycm9yKCJgZXh0bmFtZWAgbXVzdCBzdGFydCB3aXRoIGAuYCIpO2lmKGUuaW5jbHVkZXMoIi4iLDEpKXRocm93IG5ldyBFcnJvcigiYGV4dG5hbWVgIGNhbm5vdCBjb250YWluIG11bHRpcGxlIGRvdHMiKX10aGlzLnBhdGg9aC5qb2luKHRoaXMuZGlybmFtZSx0aGlzLnN0ZW0rKGV8fCIiKSl9Z2V0IHN0ZW0oKXtyZXR1cm4ic3RyaW5nIj09PXR5cGVvZiB0aGlzLnBhdGg/aC5iYXNlbmFtZSh0aGlzLnBhdGgsdGhpcy5leHRuYW1lKTp2b2lkIDB9c2V0IHN0ZW0oZSl7XyhlLCJzdGVtIiksUyhlLCJzdGVtIiksdGhpcy5wYXRoPWguam9pbih0aGlzLmRpcm5hbWV8fCIiLGUrKHRoaXMuZXh0bmFtZXx8IiIpKX10b1N0cmluZyhlKXtyZXR1cm4odGhpcy52YWx1ZXx8IiIpLnRvU3RyaW5nKGV8fHZvaWQgMCl9bWVzc2FnZShlLHQsbil7Y29uc3Qgcj1uZXcgZihlLHQsbik7cmV0dXJuIHRoaXMucGF0aCYmKHIubmFtZT10aGlzLnBhdGgrIjoiK3IubmFtZSxyLmZpbGU9dGhpcy5wYXRoKSxyLmZhdGFsPSExLHRoaXMubWVzc2FnZXMucHVzaChyKSxyfWluZm8oZSx0LG4pe2NvbnN0IHI9dGhpcy5tZXNzYWdlKGUsdCxuKTtyZXR1cm4gci5mYXRhbD1udWxsLHJ9ZmFpbChlLHQsbil7Y29uc3Qgcj10aGlzLm1lc3NhZ2UoZSx0LG4pO3Rocm93IHIuZmF0YWw9ITAscn19ZnVuY3Rpb24gUyhlLHQpe2lmKGUmJmUuaW5jbHVkZXMoaC5zZXApKXRocm93IG5ldyBFcnJvcigiYCIrdCsiYCBjYW5ub3QgYmUgYSBwYXRoOiBkaWQgbm90IGV4cGVjdCBgIitoLnNlcCsiYCIpfWZ1bmN0aW9uIF8oZSx0KXtpZighZSl0aHJvdyBuZXcgRXJyb3IoImAiK3QrImAgY2Fubm90IGJlIGVtcHR5Iil9ZnVuY3Rpb24gVChlLHQpe2lmKCFlKXRocm93IG5ldyBFcnJvcigiU2V0dGluZyBgIit0KyJgIHJlcXVpcmVzIGBwYXRoYCB0byBiZSBzZXQgdG9vIil9ZnVuY3Rpb24gQShlKXtpZihlKXRocm93IGV9dmFyIGs9bigxMjEpLHg9bi5uKGspLEM9big3OCksST1uLm4oQyk7ZnVuY3Rpb24gUihlKXtpZigib2JqZWN0IiE9PXR5cGVvZiBlfHxudWxsPT09ZSlyZXR1cm4hMTtjb25zdCB0PU9iamVjdC5nZXRQcm90b3R5cGVPZihlKTtyZXR1cm4obnVsbD09PXR8fHQ9PT1PYmplY3QucHJvdG90eXBlfHxudWxsPT09T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKSYmIShTeW1ib2wudG9TdHJpbmdUYWcgaW4gZSkmJiEoU3ltYm9sLml0ZXJhdG9yIGluIGUpfWZ1bmN0aW9uIE8oZSx0KXtsZXQgbjtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxhPW5ldyBBcnJheSh0KSxvPTA7bzx0O28rKylhW29dPWFyZ3VtZW50c1tvXTtjb25zdCBzPWUubGVuZ3RoPmEubGVuZ3RoO2xldCBsO3MmJmEucHVzaChyKTt0cnl7bD1lLmFwcGx5KHRoaXMsYSl9Y2F0Y2goYyl7Y29uc3QgZT1jO2lmKHMmJm4pdGhyb3cgZTtyZXR1cm4gcihlKX1zfHwobCYmbC50aGVuJiYiZnVuY3Rpb24iPT09dHlwZW9mIGwudGhlbj9sLnRoZW4oaSxyKTpsIGluc3RhbmNlb2YgRXJyb3I/cihsKTppKGwpKX07ZnVuY3Rpb24gcihlKXtpZighbil7bj0hMDtmb3IodmFyIHI9YXJndW1lbnRzLmxlbmd0aCxpPW5ldyBBcnJheShyPjE/ci0xOjApLGE9MTthPHI7YSsrKWlbYS0xXT1hcmd1bWVudHNbYV07dChlLC4uLmkpfX1mdW5jdGlvbiBpKGUpe3IobnVsbCxlKX19Y29uc3QgTj1mdW5jdGlvbiBlKCl7Y29uc3QgdD1mdW5jdGlvbigpe2NvbnN0IGU9W10sdD17cnVuOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgsbj1uZXcgQXJyYXkodCkscj0wO3I8dDtyKyspbltyXT1hcmd1bWVudHNbcl07bGV0IGk9LTE7Y29uc3QgYT1uLnBvcCgpO2lmKCJmdW5jdGlvbiIhPT10eXBlb2YgYSl0aHJvdyBuZXcgVHlwZUVycm9yKCJFeHBlY3RlZCBmdW5jdGlvbiBhcyBsYXN0IGFyZ3VtZW50LCBub3QgIithKTtmdW5jdGlvbiBvKHQpe2NvbnN0IHI9ZVsrK2ldO2xldCBzPS0xO2lmKHQpYSh0KTtlbHNle2Zvcih2YXIgbD1hcmd1bWVudHMubGVuZ3RoLGM9bmV3IEFycmF5KGw+MT9sLTE6MCksdT0xO3U8bDt1KyspY1t1LTFdPWFyZ3VtZW50c1t1XTtmb3IoOysrczxuLmxlbmd0aDspbnVsbCE9PWNbc10mJnZvaWQgMCE9PWNbc118fChjW3NdPW5bc10pO249YyxyP08ocixvKSguLi5jKTphKG51bGwsLi4uYyl9fW8obnVsbCwuLi5uKX0sdXNlOmZ1bmN0aW9uKG4pe2lmKCJmdW5jdGlvbiIhPT10eXBlb2Ygbil0aHJvdyBuZXcgVHlwZUVycm9yKCJFeHBlY3RlZCBgbWlkZGVsd2FyZWAgdG8gYmUgYSBmdW5jdGlvbiwgbm90ICIrbik7cmV0dXJuIGUucHVzaChuKSx0fX07cmV0dXJuIHR9KCksbj1bXTtsZXQgcixpPXt9LGE9LTE7cmV0dXJuIG8uZGF0YT1mdW5jdGlvbihlLHQpe2lmKCJzdHJpbmciPT09dHlwZW9mIGUpcmV0dXJuIDI9PT1hcmd1bWVudHMubGVuZ3RoPyhGKCJkYXRhIixyKSxpW2VdPXQsbyk6TS5jYWxsKGksZSkmJmlbZV18fG51bGw7aWYoZSlyZXR1cm4gRigiZGF0YSIsciksaT1lLG87cmV0dXJuIGl9LG8uUGFyc2VyPXZvaWQgMCxvLkNvbXBpbGVyPXZvaWQgMCxvLmZyZWV6ZT1mdW5jdGlvbigpe2lmKHIpcmV0dXJuIG87Zm9yKDsrK2E8bi5sZW5ndGg7KXtjb25zdFtlLC4uLnJdPW5bYV07aWYoITE9PT1yWzBdKWNvbnRpbnVlOyEwPT09clswXSYmKHJbMF09dm9pZCAwKTtjb25zdCBpPWUuY2FsbChvLC4uLnIpOyJmdW5jdGlvbiI9PT10eXBlb2YgaSYmdC51c2UoaSl9cmV0dXJuIHI9ITAsYT1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksb30sby5hdHRhY2hlcnM9bixvLnVzZT1mdW5jdGlvbihlKXtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxhPW5ldyBBcnJheSh0PjE/dC0xOjApLHM9MTtzPHQ7cysrKWFbcy0xXT1hcmd1bWVudHNbc107bGV0IGw7aWYoRigidXNlIixyKSxudWxsPT09ZXx8dm9pZCAwPT09ZSk7ZWxzZSBpZigiZnVuY3Rpb24iPT09dHlwZW9mIGUpcChlLC4uLmEpO2Vsc2V7aWYoIm9iamVjdCIhPT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJFeHBlY3RlZCB1c2FibGUgdmFsdWUsIG5vdCBgIitlKyJgIik7QXJyYXkuaXNBcnJheShlKT9kKGUpOnUoZSl9bCYmKGkuc2V0dGluZ3M9T2JqZWN0LmFzc2lnbihpLnNldHRpbmdzfHx7fSxsKSk7cmV0dXJuIG87ZnVuY3Rpb24gYyhlKXtpZigiZnVuY3Rpb24iPT09dHlwZW9mIGUpcChlKTtlbHNle2lmKCJvYmplY3QiIT09dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiRXhwZWN0ZWQgdXNhYmxlIHZhbHVlLCBub3QgYCIrZSsiYCIpO2lmKEFycmF5LmlzQXJyYXkoZSkpe2NvbnN0W3QsLi4ubl09ZTtwKHQsLi4ubil9ZWxzZSB1KGUpfX1mdW5jdGlvbiB1KGUpe2QoZS5wbHVnaW5zKSxlLnNldHRpbmdzJiYobD1PYmplY3QuYXNzaWduKGx8fHt9LGUuc2V0dGluZ3MpKX1mdW5jdGlvbiBkKGUpe2xldCB0PS0xO2lmKG51bGw9PT1lfHx2b2lkIDA9PT1lKTtlbHNle2lmKCFBcnJheS5pc0FycmF5KGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkV4cGVjdGVkIGEgbGlzdCBvZiBwbHVnaW5zLCBub3QgYCIrZSsiYCIpO2Zvcig7Kyt0PGUubGVuZ3RoOyl7YyhlW3RdKX19fWZ1bmN0aW9uIHAoZSx0KXtsZXQgcixpPS0xO2Zvcig7KytpPG4ubGVuZ3RoOylpZihuW2ldWzBdPT09ZSl7cj1uW2ldO2JyZWFrfXI/KFIoclsxXSkmJlIodCkmJih0PUkoKSghMCxyWzFdLHQpKSxyWzFdPXQpOm4ucHVzaChbLi4uYXJndW1lbnRzXSl9fSxvLnBhcnNlPWZ1bmN0aW9uKGUpe28uZnJlZXplKCk7Y29uc3QgdD1qKGUpLG49by5QYXJzZXI7aWYoRCgicGFyc2UiLG4pLEwobiwicGFyc2UiKSlyZXR1cm4gbmV3IG4oU3RyaW5nKHQpLHQpLnBhcnNlKCk7cmV0dXJuIG4oU3RyaW5nKHQpLHQpfSxvLnN0cmluZ2lmeT1mdW5jdGlvbihlLHQpe28uZnJlZXplKCk7Y29uc3Qgbj1qKHQpLHI9by5Db21waWxlcjtpZihQKCJzdHJpbmdpZnkiLHIpLFUoZSksTChyLCJjb21waWxlIikpcmV0dXJuIG5ldyByKGUsbikuY29tcGlsZSgpO3JldHVybiByKGUsbil9LG8ucnVuPWZ1bmN0aW9uKGUsbixyKXtVKGUpLG8uZnJlZXplKCkscnx8ImZ1bmN0aW9uIiE9PXR5cGVvZiBufHwocj1uLG49dm9pZCAwKTtpZighcilyZXR1cm4gbmV3IFByb21pc2UoaSk7ZnVuY3Rpb24gaShpLGEpe3QucnVuKGUsaihuKSwoZnVuY3Rpb24odCxuLG8pe249bnx8ZSx0P2EodCk6aT9pKG4pOnIobnVsbCxuLG8pfSkpfWkobnVsbCxyKX0sby5ydW5TeW5jPWZ1bmN0aW9uKGUsdCl7bGV0IG4scjtyZXR1cm4gby5ydW4oZSx0LChmdW5jdGlvbihlLHQpe0EoZSksbj10LHI9ITB9KSksQigicnVuU3luYyIsInJ1biIsciksbn0sby5wcm9jZXNzPWZ1bmN0aW9uKGUsdCl7aWYoby5mcmVlemUoKSxEKCJwcm9jZXNzIixvLlBhcnNlciksUCgicHJvY2VzcyIsby5Db21waWxlciksIXQpcmV0dXJuIG5ldyBQcm9taXNlKG4pO2Z1bmN0aW9uIG4obixyKXtjb25zdCBpPWooZSk7ZnVuY3Rpb24gYShlLGkpe2V8fCFpP3IoZSk6bj9uKGkpOnQobnVsbCxpKX1vLnJ1bihvLnBhcnNlKGkpLGksKGUsdCxuKT0+e2lmKCFlJiZ0JiZuKXtjb25zdCBpPW8uc3RyaW5naWZ5KHQsbik7dm9pZCAwPT09aXx8bnVsbD09PWl8fCgic3RyaW5nIj09PXR5cGVvZihyPWkpfHx4KCkocik/bi52YWx1ZT1pOm4ucmVzdWx0PWkpLGEoZSxuKX1lbHNlIGEoZSk7dmFyIHJ9KX1uKG51bGwsdCl9LG8ucHJvY2Vzc1N5bmM9ZnVuY3Rpb24oZSl7bGV0IHQ7by5mcmVlemUoKSxEKCJwcm9jZXNzU3luYyIsby5QYXJzZXIpLFAoInByb2Nlc3NTeW5jIixvLkNvbXBpbGVyKTtjb25zdCBuPWooZSk7cmV0dXJuIG8ucHJvY2VzcyhuLChmdW5jdGlvbihlKXt0PSEwLEEoZSl9KSksQigicHJvY2Vzc1N5bmMiLCJwcm9jZXNzIix0KSxufSxvO2Z1bmN0aW9uIG8oKXtjb25zdCB0PWUoKTtsZXQgcj0tMTtmb3IoOysrcjxuLmxlbmd0aDspdC51c2UoLi4ubltyXSk7cmV0dXJuIHQuZGF0YShJKCkoITAse30saSkpLHR9fSgpLmZyZWV6ZSgpLE09e30uaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gTChlLHQpe3JldHVybiJmdW5jdGlvbiI9PT10eXBlb2YgZSYmZS5wcm90b3R5cGUmJihmdW5jdGlvbihlKXtsZXQgdDtmb3IodCBpbiBlKWlmKE0uY2FsbChlLHQpKXJldHVybiEwO3JldHVybiExfShlLnByb3RvdHlwZSl8fHQgaW4gZS5wcm90b3R5cGUpfWZ1bmN0aW9uIEQoZSx0KXtpZigiZnVuY3Rpb24iIT09dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGAiK2UrImAgd2l0aG91dCBgUGFyc2VyYCIpfWZ1bmN0aW9uIFAoZSx0KXtpZigiZnVuY3Rpb24iIT09dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGAiK2UrImAgd2l0aG91dCBgQ29tcGlsZXJgIil9ZnVuY3Rpb24gRihlLHQpe2lmKHQpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgY2FsbCBgIitlKyJgIG9uIGEgZnJvemVuIHByb2Nlc3Nvci5cbkNyZWF0ZSBhIG5ldyBwcm9jZXNzb3IgZmlyc3QsIGJ5IGNhbGxpbmcgaXQ6IHVzZSBgcHJvY2Vzc29yKClgIGluc3RlYWQgb2YgYHByb2Nlc3NvcmAuIil9ZnVuY3Rpb24gVShlKXtpZighUihlKXx8InN0cmluZyIhPT10eXBlb2YgZS50eXBlKXRocm93IG5ldyBUeXBlRXJyb3IoIkV4cGVjdGVkIG5vZGUsIGdvdCBgIitlKyJgIil9ZnVuY3Rpb24gQihlLHQsbil7aWYoIW4pdGhyb3cgbmV3IEVycm9yKCJgIitlKyJgIGZpbmlzaGVkIGFzeW5jLiBVc2UgYCIrdCsiYCBpbnN0ZWFkIil9ZnVuY3Rpb24gaihlKXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIEJvb2xlYW4oZSYmIm9iamVjdCI9PT10eXBlb2YgZSYmIm1lc3NhZ2UiaW4gZSYmIm1lc3NhZ2VzImluIGUpfShlKT9lOm5ldyB3KGUpfWNvbnN0IEg9e307ZnVuY3Rpb24geihlLHQsbil7aWYoZnVuY3Rpb24oZSl7cmV0dXJuIEJvb2xlYW4oZSYmIm9iamVjdCI9PT10eXBlb2YgZSl9KGUpKXtpZigidmFsdWUiaW4gZSlyZXR1cm4iaHRtbCIhPT1lLnR5cGV8fG4/ZS52YWx1ZToiIjtpZih0JiYiYWx0ImluIGUmJmUuYWx0KXJldHVybiBlLmFsdDtpZigiY2hpbGRyZW4iaW4gZSlyZXR1cm4gRyhlLmNoaWxkcmVuLHQsbil9cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/RyhlLHQsbik6IiJ9ZnVuY3Rpb24gRyhlLHQsbil7Y29uc3Qgcj1bXTtsZXQgaT0tMTtmb3IoOysraTxlLmxlbmd0aDspcltpXT16KGVbaV0sdCxuKTtyZXR1cm4gci5qb2luKCIiKX12YXIgJD1uKDQxKSxWPW4oMykscT1uKDEpO2NvbnN0IFc9e3Rva2VuaXplOmZ1bmN0aW9uKGUpe2NvbnN0IHQ9ZS5hdHRlbXB0KHRoaXMucGFyc2VyLmNvbnN0cnVjdHMuY29udGVudEluaXRpYWwsKGZ1bmN0aW9uKG4pe2lmKG51bGw9PT1uKXJldHVybiB2b2lkIGUuY29uc3VtZShuKTtyZXR1cm4gZS5lbnRlcigibGluZUVuZGluZyIpLGUuY29uc3VtZShuKSxlLmV4aXQoImxpbmVFbmRpbmciKSxPYmplY3QoVi5hKShlLHQsImxpbmVQcmVmaXgiKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gZS5lbnRlcigicGFyYWdyYXBoIikscih0KX0pKTtsZXQgbjtyZXR1cm4gdDtmdW5jdGlvbiByKHQpe2NvbnN0IHI9ZS5lbnRlcigiY2h1bmtUZXh0Iix7Y29udGVudFR5cGU6InRleHQiLHByZXZpb3VzOm59KTtyZXR1cm4gbiYmKG4ubmV4dD1yKSxuPXIsaSh0KX1mdW5jdGlvbiBpKHQpe3JldHVybiBudWxsPT09dD8oZS5leGl0KCJjaHVua1RleHQiKSxlLmV4aXQoInBhcmFncmFwaCIpLHZvaWQgZS5jb25zdW1lKHQpKTpPYmplY3QocS5oKSh0KT8oZS5jb25zdW1lKHQpLGUuZXhpdCgiY2h1bmtUZXh0Iikscik6KGUuY29uc3VtZSh0KSxpKX19fTt2YXIgSz1uKDYpO2NvbnN0IFk9e3Rva2VuaXplOmZ1bmN0aW9uKGUpe2NvbnN0IHQ9dGhpcyxuPVtdO2xldCByLGksYSxvPTA7cmV0dXJuIHM7ZnVuY3Rpb24gcyhyKXtpZihvPG4ubGVuZ3RoKXtjb25zdCBpPW5bb107cmV0dXJuIHQuY29udGFpbmVyU3RhdGU9aVsxXSxlLmF0dGVtcHQoaVswXS5jb250aW51YXRpb24sbCxjKShyKX1yZXR1cm4gYyhyKX1mdW5jdGlvbiBsKGUpe2lmKG8rKyx0LmNvbnRhaW5lclN0YXRlLl9jbG9zZUZsb3cpe3QuY29udGFpbmVyU3RhdGUuX2Nsb3NlRmxvdz12b2lkIDAsciYmeSgpO2NvbnN0IG49dC5ldmVudHMubGVuZ3RoO2xldCBpLGE9bjtmb3IoO2EtLTspaWYoImV4aXQiPT09dC5ldmVudHNbYV1bMF0mJiJjaHVua0Zsb3ciPT09dC5ldmVudHNbYV1bMV0udHlwZSl7aT10LmV2ZW50c1thXVsxXS5lbmQ7YnJlYWt9YihvKTtsZXQgcz1uO2Zvcig7czx0LmV2ZW50cy5sZW5ndGg7KXQuZXZlbnRzW3NdWzFdLmVuZD1PYmplY3QuYXNzaWduKHt9LGkpLHMrKztyZXR1cm4gT2JqZWN0KEsuYikodC5ldmVudHMsYSsxLDAsdC5ldmVudHMuc2xpY2UobikpLHQuZXZlbnRzLmxlbmd0aD1zLGMoZSl9cmV0dXJuIHMoZSl9ZnVuY3Rpb24gYyhpKXtpZihvPT09bi5sZW5ndGgpe2lmKCFyKXJldHVybiBwKGkpO2lmKHIuY3VycmVudENvbnN0cnVjdCYmci5jdXJyZW50Q29uc3RydWN0LmNvbmNyZXRlKXJldHVybiBoKGkpO3QuaW50ZXJydXB0PUJvb2xlYW4oci5jdXJyZW50Q29uc3RydWN0JiYhci5fZ2ZtVGFibGVEeW5hbWljSW50ZXJydXB0SGFjayl9cmV0dXJuIHQuY29udGFpbmVyU3RhdGU9e30sZS5jaGVjayhYLHUsZCkoaSl9ZnVuY3Rpb24gdShlKXtyZXR1cm4gciYmeSgpLGIobykscChlKX1mdW5jdGlvbiBkKGUpe3JldHVybiB0LnBhcnNlci5sYXp5W3Qubm93KCkubGluZV09byE9PW4ubGVuZ3RoLGE9dC5ub3coKS5vZmZzZXQsaChlKX1mdW5jdGlvbiBwKG4pe3JldHVybiB0LmNvbnRhaW5lclN0YXRlPXt9LGUuYXR0ZW1wdChYLGYsaCkobil9ZnVuY3Rpb24gZihlKXtyZXR1cm4gbysrLG4ucHVzaChbdC5jdXJyZW50Q29uc3RydWN0LHQuY29udGFpbmVyU3RhdGVdKSxwKGUpfWZ1bmN0aW9uIGgobil7cmV0dXJuIG51bGw9PT1uPyhyJiZ5KCksYigwKSx2b2lkIGUuY29uc3VtZShuKSk6KHI9cnx8dC5wYXJzZXIuZmxvdyh0Lm5vdygpKSxlLmVudGVyKCJjaHVua0Zsb3ciLHtjb250ZW50VHlwZToiZmxvdyIscHJldmlvdXM6aSxfdG9rZW5pemVyOnJ9KSxtKG4pKX1mdW5jdGlvbiBtKG4pe3JldHVybiBudWxsPT09bj8oZyhlLmV4aXQoImNodW5rRmxvdyIpLCEwKSxiKDApLHZvaWQgZS5jb25zdW1lKG4pKTpPYmplY3QocS5oKShuKT8oZS5jb25zdW1lKG4pLGcoZS5leGl0KCJjaHVua0Zsb3ciKSksbz0wLHQuaW50ZXJydXB0PXZvaWQgMCxzKTooZS5jb25zdW1lKG4pLG0pfWZ1bmN0aW9uIGcoZSxuKXtjb25zdCBzPXQuc2xpY2VTdHJlYW0oZSk7aWYobiYmcy5wdXNoKG51bGwpLGUucHJldmlvdXM9aSxpJiYoaS5uZXh0PWUpLGk9ZSxyLmRlZmluZVNraXAoZS5zdGFydCksci53cml0ZShzKSx0LnBhcnNlci5sYXp5W2Uuc3RhcnQubGluZV0pe2xldCBlPXIuZXZlbnRzLmxlbmd0aDtmb3IoO2UtLTspaWYoci5ldmVudHNbZV1bMV0uc3RhcnQub2Zmc2V0PGEmJighci5ldmVudHNbZV1bMV0uZW5kfHxyLmV2ZW50c1tlXVsxXS5lbmQub2Zmc2V0PmEpKXJldHVybjtjb25zdCBuPXQuZXZlbnRzLmxlbmd0aDtsZXQgaSxzLGw9bjtmb3IoO2wtLTspaWYoImV4aXQiPT09dC5ldmVudHNbbF1bMF0mJiJjaHVua0Zsb3ciPT09dC5ldmVudHNbbF1bMV0udHlwZSl7aWYoaSl7cz10LmV2ZW50c1tsXVsxXS5lbmQ7YnJlYWt9aT0hMH1mb3IoYihvKSxlPW47ZTx0LmV2ZW50cy5sZW5ndGg7KXQuZXZlbnRzW2VdWzFdLmVuZD1PYmplY3QuYXNzaWduKHt9LHMpLGUrKztPYmplY3QoSy5iKSh0LmV2ZW50cyxsKzEsMCx0LmV2ZW50cy5zbGljZShuKSksdC5ldmVudHMubGVuZ3RoPWV9fWZ1bmN0aW9uIGIocil7bGV0IGk9bi5sZW5ndGg7Zm9yKDtpLS0gPnI7KXtjb25zdCByPW5baV07dC5jb250YWluZXJTdGF0ZT1yWzFdLHJbMF0uZXhpdC5jYWxsKHQsZSl9bi5sZW5ndGg9cn1mdW5jdGlvbiB5KCl7ci53cml0ZShbbnVsbF0pLGk9dm9pZCAwLHI9dm9pZCAwLHQuY29udGFpbmVyU3RhdGUuX2Nsb3NlRmxvdz12b2lkIDB9fX0sWD17dG9rZW5pemU6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBPYmplY3QoVi5hKShlLGUuYXR0ZW1wdCh0aGlzLnBhcnNlci5jb25zdHJ1Y3RzLmRvY3VtZW50LHQsbiksImxpbmVQcmVmaXgiLHRoaXMucGFyc2VyLmNvbnN0cnVjdHMuZGlzYWJsZS5udWxsLmluY2x1ZGVzKCJjb2RlSW5kZW50ZWQiKT92b2lkIDA6NCl9fTt2YXIgWj1uKDQyKTtmdW5jdGlvbiBRKGUpe2NvbnN0IHQ9e307bGV0IG4scixpLGEsbyxzLGwsYz0tMTtmb3IoOysrYzxlLmxlbmd0aDspe2Zvcig7YyBpbiB0OyljPXRbY107aWYobj1lW2NdLGMmJiJjaHVua0Zsb3ciPT09blsxXS50eXBlJiYibGlzdEl0ZW1QcmVmaXgiPT09ZVtjLTFdWzFdLnR5cGUmJihzPW5bMV0uX3Rva2VuaXplci5ldmVudHMsaT0wLGk8cy5sZW5ndGgmJiJsaW5lRW5kaW5nQmxhbmsiPT09c1tpXVsxXS50eXBlJiYoaSs9MiksaTxzLmxlbmd0aCYmImNvbnRlbnQiPT09c1tpXVsxXS50eXBlKSlmb3IoOysraTxzLmxlbmd0aCYmImNvbnRlbnQiIT09c1tpXVsxXS50eXBlOykiY2h1bmtUZXh0Ij09PXNbaV1bMV0udHlwZSYmKHNbaV1bMV0uX2lzSW5GaXJzdENvbnRlbnRPZkxpc3RJdGVtPSEwLGkrKyk7aWYoImVudGVyIj09PW5bMF0pblsxXS5jb250ZW50VHlwZSYmKE9iamVjdC5hc3NpZ24odCxKKGUsYykpLGM9dFtjXSxsPSEwKTtlbHNlIGlmKG5bMV0uX2NvbnRhaW5lcil7Zm9yKGk9YyxyPXZvaWQgMDtpLS0mJihhPWVbaV0sImxpbmVFbmRpbmciPT09YVsxXS50eXBlfHwibGluZUVuZGluZ0JsYW5rIj09PWFbMV0udHlwZSk7KSJlbnRlciI9PT1hWzBdJiYociYmKGVbcl1bMV0udHlwZT0ibGluZUVuZGluZ0JsYW5rIiksYVsxXS50eXBlPSJsaW5lRW5kaW5nIixyPWkpO3ImJihuWzFdLmVuZD1PYmplY3QuYXNzaWduKHt9LGVbcl1bMV0uc3RhcnQpLG89ZS5zbGljZShyLGMpLG8udW5zaGlmdChuKSxPYmplY3QoSy5iKShlLHIsYy1yKzEsbykpfX1yZXR1cm4hbH1mdW5jdGlvbiBKKGUsdCl7Y29uc3Qgbj1lW3RdWzFdLHI9ZVt0XVsyXTtsZXQgaT10LTE7Y29uc3QgYT1bXSxvPW4uX3Rva2VuaXplcnx8ci5wYXJzZXJbbi5jb250ZW50VHlwZV0obi5zdGFydCkscz1vLmV2ZW50cyxsPVtdLGM9e307bGV0IHUsZCxwPS0xLGY9bixoPTAsbT0wO2NvbnN0IGc9W21dO2Zvcig7Zjspe2Zvcig7ZVsrK2ldWzFdIT09ZjspO2EucHVzaChpKSxmLl90b2tlbml6ZXJ8fCh1PXIuc2xpY2VTdHJlYW0oZiksZi5uZXh0fHx1LnB1c2gobnVsbCksZCYmby5kZWZpbmVTa2lwKGYuc3RhcnQpLGYuX2lzSW5GaXJzdENvbnRlbnRPZkxpc3RJdGVtJiYoby5fZ2ZtVGFza2xpc3RGaXJzdENvbnRlbnRPZkxpc3RJdGVtPSEwKSxvLndyaXRlKHUpLGYuX2lzSW5GaXJzdENvbnRlbnRPZkxpc3RJdGVtJiYoby5fZ2ZtVGFza2xpc3RGaXJzdENvbnRlbnRPZkxpc3RJdGVtPXZvaWQgMCkpLGQ9ZixmPWYubmV4dH1mb3IoZj1uOysrcDxzLmxlbmd0aDspImV4aXQiPT09c1twXVswXSYmImVudGVyIj09PXNbcC0xXVswXSYmc1twXVsxXS50eXBlPT09c1twLTFdWzFdLnR5cGUmJnNbcF1bMV0uc3RhcnQubGluZSE9PXNbcF1bMV0uZW5kLmxpbmUmJihtPXArMSxnLnB1c2gobSksZi5fdG9rZW5pemVyPXZvaWQgMCxmLnByZXZpb3VzPXZvaWQgMCxmPWYubmV4dCk7Zm9yKG8uZXZlbnRzPVtdLGY/KGYuX3Rva2VuaXplcj12b2lkIDAsZi5wcmV2aW91cz12b2lkIDApOmcucG9wKCkscD1nLmxlbmd0aDtwLS07KXtjb25zdCB0PXMuc2xpY2UoZ1twXSxnW3ArMV0pLG49YS5wb3AoKTtsLnVuc2hpZnQoW24sbit0Lmxlbmd0aC0xXSksT2JqZWN0KEsuYikoZSxuLDIsdCl9Zm9yKHA9LTE7KytwPGwubGVuZ3RoOyljW2grbFtwXVswXV09aCtsW3BdWzFdLGgrPWxbcF1bMV0tbFtwXVswXS0xO3JldHVybiBjfWNvbnN0IGVlPXt0b2tlbml6ZTpmdW5jdGlvbihlLHQpe2xldCBuO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZS5lbnRlcigiY29udGVudCIpLG49ZS5lbnRlcigiY2h1bmtDb250ZW50Iix7Y29udGVudFR5cGU6ImNvbnRlbnQifSkscih0KX07ZnVuY3Rpb24gcih0KXtyZXR1cm4gbnVsbD09PXQ/aSh0KTpPYmplY3QocS5oKSh0KT9lLmNoZWNrKHRlLGEsaSkodCk6KGUuY29uc3VtZSh0KSxyKX1mdW5jdGlvbiBpKG4pe3JldHVybiBlLmV4aXQoImNodW5rQ29udGVudCIpLGUuZXhpdCgiY29udGVudCIpLHQobil9ZnVuY3Rpb24gYSh0KXtyZXR1cm4gZS5jb25zdW1lKHQpLGUuZXhpdCgiY2h1bmtDb250ZW50Iiksbi5uZXh0PWUuZW50ZXIoImNodW5rQ29udGVudCIse2NvbnRlbnRUeXBlOiJjb250ZW50IixwcmV2aW91czpufSksbj1uLm5leHQscn19LHJlc29sdmU6ZnVuY3Rpb24oZSl7cmV0dXJuIFEoZSksZX19LHRlPXt0b2tlbml6ZTpmdW5jdGlvbihlLHQsbil7Y29uc3Qgcj10aGlzO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZS5leGl0KCJjaHVua0NvbnRlbnQiKSxlLmVudGVyKCJsaW5lRW5kaW5nIiksZS5jb25zdW1lKHQpLGUuZXhpdCgibGluZUVuZGluZyIpLE9iamVjdChWLmEpKGUsaSwibGluZVByZWZpeCIpfTtmdW5jdGlvbiBpKGkpe2lmKG51bGw9PT1pfHxPYmplY3QocS5oKShpKSlyZXR1cm4gbihpKTtjb25zdCBhPXIuZXZlbnRzW3IuZXZlbnRzLmxlbmd0aC0xXTtyZXR1cm4hci5wYXJzZXIuY29uc3RydWN0cy5kaXNhYmxlLm51bGwuaW5jbHVkZXMoImNvZGVJbmRlbnRlZCIpJiZhJiYibGluZVByZWZpeCI9PT1hWzFdLnR5cGUmJmFbMl0uc2xpY2VTZXJpYWxpemUoYVsxXSwhMCkubGVuZ3RoPj00P3QoaSk6ZS5pbnRlcnJ1cHQoci5wYXJzZXIuY29uc3RydWN0cy5mbG93LG4sdCkoaSl9fSxwYXJ0aWFsOiEwfTtjb25zdCBuZT17dG9rZW5pemU6ZnVuY3Rpb24oZSl7Y29uc3QgdD10aGlzLG49ZS5hdHRlbXB0KFouYSwoZnVuY3Rpb24ocil7aWYobnVsbD09PXIpcmV0dXJuIHZvaWQgZS5jb25zdW1lKHIpO3JldHVybiBlLmVudGVyKCJsaW5lRW5kaW5nQmxhbmsiKSxlLmNvbnN1bWUociksZS5leGl0KCJsaW5lRW5kaW5nQmxhbmsiKSx0LmN1cnJlbnRDb25zdHJ1Y3Q9dm9pZCAwLG59KSxlLmF0dGVtcHQodGhpcy5wYXJzZXIuY29uc3RydWN0cy5mbG93SW5pdGlhbCxyLE9iamVjdChWLmEpKGUsZS5hdHRlbXB0KHRoaXMucGFyc2VyLmNvbnN0cnVjdHMuZmxvdyxyLGUuYXR0ZW1wdChlZSxyKSksImxpbmVQcmVmaXgiKSkpO3JldHVybiBuO2Z1bmN0aW9uIHIocil7aWYobnVsbCE9PXIpcmV0dXJuIGUuZW50ZXIoImxpbmVFbmRpbmciKSxlLmNvbnN1bWUociksZS5leGl0KCJsaW5lRW5kaW5nIiksdC5jdXJyZW50Q29uc3RydWN0PXZvaWQgMCxuO2UuY29uc3VtZShyKX19fTtjb25zdCByZT17cmVzb2x2ZUFsbDpzZSgpfSxpZT1vZSgic3RyaW5nIiksYWU9b2UoInRleHQiKTtmdW5jdGlvbiBvZShlKXtyZXR1cm57dG9rZW5pemU6ZnVuY3Rpb24odCl7Y29uc3Qgbj10aGlzLHI9dGhpcy5wYXJzZXIuY29uc3RydWN0c1tlXSxpPXQuYXR0ZW1wdChyLGEsbyk7cmV0dXJuIGE7ZnVuY3Rpb24gYShlKXtyZXR1cm4gbChlKT9pKGUpOm8oZSl9ZnVuY3Rpb24gbyhlKXtpZihudWxsIT09ZSlyZXR1cm4gdC5lbnRlcigiZGF0YSIpLHQuY29uc3VtZShlKSxzO3QuY29uc3VtZShlKX1mdW5jdGlvbiBzKGUpe3JldHVybiBsKGUpPyh0LmV4aXQoImRhdGEiKSxpKGUpKToodC5jb25zdW1lKGUpLHMpfWZ1bmN0aW9uIGwoZSl7aWYobnVsbD09PWUpcmV0dXJuITA7Y29uc3QgdD1yW2VdO2xldCBpPS0xO2lmKHQpZm9yKDsrK2k8dC5sZW5ndGg7KXtjb25zdCBlPXRbaV07aWYoIWUucHJldmlvdXN8fGUucHJldmlvdXMuY2FsbChuLG4ucHJldmlvdXMpKXJldHVybiEwfXJldHVybiExfX0scmVzb2x2ZUFsbDpzZSgidGV4dCI9PT1lP2xlOnZvaWQgMCl9fWZ1bmN0aW9uIHNlKGUpe3JldHVybiBmdW5jdGlvbih0LG4pe2xldCByLGk9LTE7Zm9yKDsrK2k8PXQubGVuZ3RoOyl2b2lkIDA9PT1yP3RbaV0mJiJkYXRhIj09PXRbaV1bMV0udHlwZSYmKHI9aSxpKyspOnRbaV0mJiJkYXRhIj09PXRbaV1bMV0udHlwZXx8KGkhPT1yKzImJih0W3JdWzFdLmVuZD10W2ktMV1bMV0uZW5kLHQuc3BsaWNlKHIrMixpLXItMiksaT1yKzIpLHI9dm9pZCAwKTtyZXR1cm4gZT9lKHQsbik6dH19ZnVuY3Rpb24gbGUoZSx0KXtsZXQgbj0wO2Zvcig7KytuPD1lLmxlbmd0aDspaWYoKG49PT1lLmxlbmd0aHx8ImxpbmVFbmRpbmciPT09ZVtuXVsxXS50eXBlKSYmImRhdGEiPT09ZVtuLTFdWzFdLnR5cGUpe2NvbnN0IHI9ZVtuLTFdWzFdLGk9dC5zbGljZVN0cmVhbShyKTtsZXQgYSxvPWkubGVuZ3RoLHM9LTEsbD0wO2Zvcig7by0tOyl7Y29uc3QgZT1pW29dO2lmKCJzdHJpbmciPT09dHlwZW9mIGUpe2ZvcihzPWUubGVuZ3RoOzMyPT09ZS5jaGFyQ29kZUF0KHMtMSk7KWwrKyxzLS07aWYocylicmVhaztzPS0xfWVsc2UgaWYoLTI9PT1lKWE9ITAsbCsrO2Vsc2UgaWYoLTEhPT1lKXtvKys7YnJlYWt9fWlmKGwpe2NvbnN0IGk9e3R5cGU6bj09PWUubGVuZ3RofHxhfHxsPDI/ImxpbmVTdWZmaXgiOiJoYXJkQnJlYWtUcmFpbGluZyIsc3RhcnQ6e2xpbmU6ci5lbmQubGluZSxjb2x1bW46ci5lbmQuY29sdW1uLWwsb2Zmc2V0OnIuZW5kLm9mZnNldC1sLF9pbmRleDpyLnN0YXJ0Ll9pbmRleCtvLF9idWZmZXJJbmRleDpvP3M6ci5zdGFydC5fYnVmZmVySW5kZXgrc30sZW5kOk9iamVjdC5hc3NpZ24oe30sci5lbmQpfTtyLmVuZD1PYmplY3QuYXNzaWduKHt9LGkuc3RhcnQpLHIuc3RhcnQub2Zmc2V0PT09ci5lbmQub2Zmc2V0P09iamVjdC5hc3NpZ24ocixpKTooZS5zcGxpY2UobiwwLFsiZW50ZXIiLGksdF0sWyJleGl0IixpLHRdKSxuKz0yKX1uKyt9cmV0dXJuIGV9dmFyIGNlPW4oMjMpO2Z1bmN0aW9uIHVlKGUsdCxuKXtsZXQgcj1PYmplY3QuYXNzaWduKG4/T2JqZWN0LmFzc2lnbih7fSxuKTp7bGluZToxLGNvbHVtbjoxLG9mZnNldDowfSx7X2luZGV4OjAsX2J1ZmZlckluZGV4Oi0xfSk7Y29uc3QgaT17fSxhPVtdO2xldCBvPVtdLHM9W10sbD0hMDtjb25zdCBjPXtjb25zdW1lOmZ1bmN0aW9uKGUpe09iamVjdChxLmgpKGUpPyhyLmxpbmUrKyxyLmNvbHVtbj0xLHIub2Zmc2V0Kz0tMz09PWU/MjoxLEUoKSk6LTEhPT1lJiYoci5jb2x1bW4rKyxyLm9mZnNldCsrKTtyLl9idWZmZXJJbmRleDwwP3IuX2luZGV4Kys6KHIuX2J1ZmZlckluZGV4Kyssci5fYnVmZmVySW5kZXg9PT1vW3IuX2luZGV4XS5sZW5ndGgmJihyLl9idWZmZXJJbmRleD0tMSxyLl9pbmRleCsrKSk7dS5wcmV2aW91cz1lLGw9ITB9LGVudGVyOmZ1bmN0aW9uKGUsdCl7Y29uc3Qgbj10fHx7fTtyZXR1cm4gbi50eXBlPWUsbi5zdGFydD1oKCksdS5ldmVudHMucHVzaChbImVudGVyIixuLHVdKSxzLnB1c2gobiksbn0sZXhpdDpmdW5jdGlvbihlKXtjb25zdCB0PXMucG9wKCk7cmV0dXJuIHQuZW5kPWgoKSx1LmV2ZW50cy5wdXNoKFsiZXhpdCIsdCx1XSksdH0sYXR0ZW1wdDp5KChmdW5jdGlvbihlLHQpe3YoZSx0LmZyb20pfSkpLGNoZWNrOnkoYiksaW50ZXJydXB0OnkoYix7aW50ZXJydXB0OiEwfSl9LHU9e3ByZXZpb3VzOm51bGwsY29kZTpudWxsLGNvbnRhaW5lclN0YXRlOnt9LGV2ZW50czpbXSxwYXJzZXI6ZSxzbGljZVN0cmVhbTpmLHNsaWNlU2VyaWFsaXplOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7bGV0IG49LTE7Y29uc3Qgcj1bXTtsZXQgaTtmb3IoOysrbjxlLmxlbmd0aDspe2NvbnN0IGE9ZVtuXTtsZXQgbztpZigic3RyaW5nIj09PXR5cGVvZiBhKW89YTtlbHNlIHN3aXRjaChhKXtjYXNlLTU6bz0iXHIiO2JyZWFrO2Nhc2UtNDpvPSJcbiI7YnJlYWs7Y2FzZS0zOm89IlxyXG4iO2JyZWFrO2Nhc2UtMjpvPXQ/IiAiOiJcdCI7YnJlYWs7Y2FzZS0xOmlmKCF0JiZpKWNvbnRpbnVlO289IiAiO2JyZWFrO2RlZmF1bHQ6bz1TdHJpbmcuZnJvbUNoYXJDb2RlKGEpfWk9LTI9PT1hLHIucHVzaChvKX1yZXR1cm4gci5qb2luKCIiKX0oZihlKSx0KX0sbm93OmgsZGVmaW5lU2tpcDpmdW5jdGlvbihlKXtpW2UubGluZV09ZS5jb2x1bW4sRSgpfSx3cml0ZTpmdW5jdGlvbihlKXtpZihvPU9iamVjdChLLmEpKG8sZSksbSgpLG51bGwhPT1vW28ubGVuZ3RoLTFdKXJldHVybltdO3JldHVybiB2KHQsMCksdS5ldmVudHM9T2JqZWN0KGNlLmEpKGEsdS5ldmVudHMsdSksdS5ldmVudHN9fTtsZXQgZCxwPXQudG9rZW5pemUuY2FsbCh1LGMpO3JldHVybiB0LnJlc29sdmVBbGwmJmEucHVzaCh0KSx1O2Z1bmN0aW9uIGYoZSl7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7Y29uc3Qgbj10LnN0YXJ0Ll9pbmRleCxyPXQuc3RhcnQuX2J1ZmZlckluZGV4LGk9dC5lbmQuX2luZGV4LGE9dC5lbmQuX2J1ZmZlckluZGV4O2xldCBvO2lmKG49PT1pKW89W2Vbbl0uc2xpY2UocixhKV07ZWxzZXtpZihvPWUuc2xpY2UobixpKSxyPi0xKXtjb25zdCBlPW9bMF07InN0cmluZyI9PT10eXBlb2YgZT9vWzBdPWUuc2xpY2Uocik6by5zaGlmdCgpfWE+MCYmby5wdXNoKGVbaV0uc2xpY2UoMCxhKSl9cmV0dXJuIG99KG8sZSl9ZnVuY3Rpb24gaCgpe2NvbnN0e2xpbmU6ZSxjb2x1bW46dCxvZmZzZXQ6bixfaW5kZXg6aSxfYnVmZmVySW5kZXg6YX09cjtyZXR1cm57bGluZTplLGNvbHVtbjp0LG9mZnNldDpuLF9pbmRleDppLF9idWZmZXJJbmRleDphfX1mdW5jdGlvbiBtKCl7bGV0IGU7Zm9yKDtyLl9pbmRleDxvLmxlbmd0aDspe2NvbnN0IHQ9b1tyLl9pbmRleF07aWYoInN0cmluZyI9PT10eXBlb2YgdClmb3IoZT1yLl9pbmRleCxyLl9idWZmZXJJbmRleDwwJiYoci5fYnVmZmVySW5kZXg9MCk7ci5faW5kZXg9PT1lJiZyLl9idWZmZXJJbmRleDx0Lmxlbmd0aDspZyh0LmNoYXJDb2RlQXQoci5fYnVmZmVySW5kZXgpKTtlbHNlIGcodCl9fWZ1bmN0aW9uIGcoZSl7bD12b2lkIDAsZD1lLHA9cChlKX1mdW5jdGlvbiBiKGUsdCl7dC5yZXN0b3JlKCl9ZnVuY3Rpb24geShlLHQpe3JldHVybiBmdW5jdGlvbihuLGksYSl7bGV0IG8sZCxwLGY7cmV0dXJuIEFycmF5LmlzQXJyYXkobik/ZyhuKToidG9rZW5pemUiaW4gbj9nKFtuXSk6KG09bixmdW5jdGlvbihlKXtjb25zdCB0PW51bGwhPT1lJiZtW2VdLG49bnVsbCE9PWUmJm0ubnVsbDtyZXR1cm4gZyhbLi4uQXJyYXkuaXNBcnJheSh0KT90OnQ/W3RdOltdLC4uLkFycmF5LmlzQXJyYXkobik/bjpuP1tuXTpbXV0pKGUpfSk7dmFyIG07ZnVuY3Rpb24gZyhlKXtyZXR1cm4gbz1lLGQ9MCwwPT09ZS5sZW5ndGg/YTpiKGVbZF0pfWZ1bmN0aW9uIGIoZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe2Y9ZnVuY3Rpb24oKXtjb25zdCBlPWgoKSx0PXUucHJldmlvdXMsbj11LmN1cnJlbnRDb25zdHJ1Y3QsaT11LmV2ZW50cy5sZW5ndGgsYT1BcnJheS5mcm9tKHMpO3JldHVybntyZXN0b3JlOmZ1bmN0aW9uKCl7cj1lLHUucHJldmlvdXM9dCx1LmN1cnJlbnRDb25zdHJ1Y3Q9bix1LmV2ZW50cy5sZW5ndGg9aSxzPWEsRSgpfSxmcm9tOml9fSgpLHA9ZSxlLnBhcnRpYWx8fCh1LmN1cnJlbnRDb25zdHJ1Y3Q9ZSk7aWYoZS5uYW1lJiZ1LnBhcnNlci5jb25zdHJ1Y3RzLmRpc2FibGUubnVsbC5pbmNsdWRlcyhlLm5hbWUpKXJldHVybiB2KG4pO3JldHVybiBlLnRva2VuaXplLmNhbGwodD9PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUodSksdCk6dSxjLHksdikobil9fWZ1bmN0aW9uIHkodCl7cmV0dXJuIGw9ITAsZShwLGYpLGl9ZnVuY3Rpb24gdihlKXtyZXR1cm4gbD0hMCxmLnJlc3RvcmUoKSwrK2Q8by5sZW5ndGg/YihvW2RdKTphfX19ZnVuY3Rpb24gdihlLHQpe2UucmVzb2x2ZUFsbCYmIWEuaW5jbHVkZXMoZSkmJmEucHVzaChlKSxlLnJlc29sdmUmJk9iamVjdChLLmIpKHUuZXZlbnRzLHQsdS5ldmVudHMubGVuZ3RoLXQsZS5yZXNvbHZlKHUuZXZlbnRzLnNsaWNlKHQpLHUpKSxlLnJlc29sdmVUbyYmKHUuZXZlbnRzPWUucmVzb2x2ZVRvKHUuZXZlbnRzLHUpKX1mdW5jdGlvbiBFKCl7ci5saW5lIGluIGkmJnIuY29sdW1uPDImJihyLmNvbHVtbj1pW3IubGluZV0sci5vZmZzZXQrPWlbci5saW5lXS0xKX19Y29uc3QgZGU9e25hbWU6InRoZW1hdGljQnJlYWsiLHRva2VuaXplOmZ1bmN0aW9uKGUsdCxuKXtsZXQgcixpPTA7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlLmVudGVyKCJ0aGVtYXRpY0JyZWFrIiksZnVuY3Rpb24oZSl7cmV0dXJuIHI9ZSxhKGUpfSh0KX07ZnVuY3Rpb24gYShhKXtyZXR1cm4gYT09PXI/KGUuZW50ZXIoInRoZW1hdGljQnJlYWtTZXF1ZW5jZSIpLG8oYSkpOmk+PTMmJihudWxsPT09YXx8T2JqZWN0KHEuaCkoYSkpPyhlLmV4aXQoInRoZW1hdGljQnJlYWsiKSx0KGEpKTpuKGEpfWZ1bmN0aW9uIG8odCl7cmV0dXJuIHQ9PT1yPyhlLmNvbnN1bWUodCksaSsrLG8pOihlLmV4aXQoInRoZW1hdGljQnJlYWtTZXF1ZW5jZSIpLE9iamVjdChxLmopKHQpP09iamVjdChWLmEpKGUsYSwid2hpdGVzcGFjZSIpKHQpOmEodCkpfX19O2NvbnN0IHBlPXtuYW1lOiJsaXN0Iix0b2tlbml6ZTpmdW5jdGlvbihlLHQsbil7Y29uc3Qgcj10aGlzLGk9ci5ldmVudHNbci5ldmVudHMubGVuZ3RoLTFdO2xldCBhPWkmJiJsaW5lUHJlZml4Ij09PWlbMV0udHlwZT9pWzJdLnNsaWNlU2VyaWFsaXplKGlbMV0sITApLmxlbmd0aDowLG89MDtyZXR1cm4gZnVuY3Rpb24odCl7Y29uc3QgaT1yLmNvbnRhaW5lclN0YXRlLnR5cGV8fCg0Mj09PXR8fDQzPT09dHx8NDU9PT10PyJsaXN0VW5vcmRlcmVkIjoibGlzdE9yZGVyZWQiKTtpZigibGlzdFVub3JkZXJlZCI9PT1pPyFyLmNvbnRhaW5lclN0YXRlLm1hcmtlcnx8dD09PXIuY29udGFpbmVyU3RhdGUubWFya2VyOk9iamVjdChxLmUpKHQpKXtpZihyLmNvbnRhaW5lclN0YXRlLnR5cGV8fChyLmNvbnRhaW5lclN0YXRlLnR5cGU9aSxlLmVudGVyKGkse19jb250YWluZXI6ITB9KSksImxpc3RVbm9yZGVyZWQiPT09aSlyZXR1cm4gZS5lbnRlcigibGlzdEl0ZW1QcmVmaXgiKSw0Mj09PXR8fDQ1PT09dD9lLmNoZWNrKGRlLG4sbCkodCk6bCh0KTtpZighci5pbnRlcnJ1cHR8fDQ5PT09dClyZXR1cm4gZS5lbnRlcigibGlzdEl0ZW1QcmVmaXgiKSxlLmVudGVyKCJsaXN0SXRlbVZhbHVlIikscyh0KX1yZXR1cm4gbih0KX07ZnVuY3Rpb24gcyh0KXtyZXR1cm4gT2JqZWN0KHEuZSkodCkmJisrbzwxMD8oZS5jb25zdW1lKHQpLHMpOighci5pbnRlcnJ1cHR8fG88MikmJihyLmNvbnRhaW5lclN0YXRlLm1hcmtlcj90PT09ci5jb250YWluZXJTdGF0ZS5tYXJrZXI6NDE9PT10fHw0Nj09PXQpPyhlLmV4aXQoImxpc3RJdGVtVmFsdWUiKSxsKHQpKTpuKHQpfWZ1bmN0aW9uIGwodCl7cmV0dXJuIGUuZW50ZXIoImxpc3RJdGVtTWFya2VyIiksZS5jb25zdW1lKHQpLGUuZXhpdCgibGlzdEl0ZW1NYXJrZXIiKSxyLmNvbnRhaW5lclN0YXRlLm1hcmtlcj1yLmNvbnRhaW5lclN0YXRlLm1hcmtlcnx8dCxlLmNoZWNrKFouYSxyLmludGVycnVwdD9uOmMsZS5hdHRlbXB0KGZlLGQsdSkpfWZ1bmN0aW9uIGMoZSl7cmV0dXJuIHIuY29udGFpbmVyU3RhdGUuaW5pdGlhbEJsYW5rTGluZT0hMCxhKyssZChlKX1mdW5jdGlvbiB1KHQpe3JldHVybiBPYmplY3QocS5qKSh0KT8oZS5lbnRlcigibGlzdEl0ZW1QcmVmaXhXaGl0ZXNwYWNlIiksZS5jb25zdW1lKHQpLGUuZXhpdCgibGlzdEl0ZW1QcmVmaXhXaGl0ZXNwYWNlIiksZCk6bih0KX1mdW5jdGlvbiBkKG4pe3JldHVybiByLmNvbnRhaW5lclN0YXRlLnNpemU9YStyLnNsaWNlU2VyaWFsaXplKGUuZXhpdCgibGlzdEl0ZW1QcmVmaXgiKSwhMCkubGVuZ3RoLHQobil9fSxjb250aW51YXRpb246e3Rva2VuaXplOmZ1bmN0aW9uKGUsdCxuKXtjb25zdCByPXRoaXM7cmV0dXJuIHIuY29udGFpbmVyU3RhdGUuX2Nsb3NlRmxvdz12b2lkIDAsZS5jaGVjayhaLmEsKGZ1bmN0aW9uKG4pe3JldHVybiByLmNvbnRhaW5lclN0YXRlLmZ1cnRoZXJCbGFua0xpbmVzPXIuY29udGFpbmVyU3RhdGUuZnVydGhlckJsYW5rTGluZXN8fHIuY29udGFpbmVyU3RhdGUuaW5pdGlhbEJsYW5rTGluZSxPYmplY3QoVi5hKShlLHQsImxpc3RJdGVtSW5kZW50IixyLmNvbnRhaW5lclN0YXRlLnNpemUrMSkobil9KSwoZnVuY3Rpb24obil7aWYoci5jb250YWluZXJTdGF0ZS5mdXJ0aGVyQmxhbmtMaW5lc3x8IU9iamVjdChxLmopKG4pKXJldHVybiByLmNvbnRhaW5lclN0YXRlLmZ1cnRoZXJCbGFua0xpbmVzPXZvaWQgMCxyLmNvbnRhaW5lclN0YXRlLmluaXRpYWxCbGFua0xpbmU9dm9pZCAwLGkobik7cmV0dXJuIHIuY29udGFpbmVyU3RhdGUuZnVydGhlckJsYW5rTGluZXM9dm9pZCAwLHIuY29udGFpbmVyU3RhdGUuaW5pdGlhbEJsYW5rTGluZT12b2lkIDAsZS5hdHRlbXB0KGhlLHQsaSkobil9KSk7ZnVuY3Rpb24gaShpKXtyZXR1cm4gci5jb250YWluZXJTdGF0ZS5fY2xvc2VGbG93PSEwLHIuaW50ZXJydXB0PXZvaWQgMCxPYmplY3QoVi5hKShlLGUuYXR0ZW1wdChwZSx0LG4pLCJsaW5lUHJlZml4IixyLnBhcnNlci5jb25zdHJ1Y3RzLmRpc2FibGUubnVsbC5pbmNsdWRlcygiY29kZUluZGVudGVkIik/dm9pZCAwOjQpKGkpfX19LGV4aXQ6ZnVuY3Rpb24oZSl7ZS5leGl0KHRoaXMuY29udGFpbmVyU3RhdGUudHlwZSl9fSxmZT17dG9rZW5pemU6ZnVuY3Rpb24oZSx0LG4pe2NvbnN0IHI9dGhpcztyZXR1cm4gT2JqZWN0KFYuYSkoZSwoZnVuY3Rpb24oZSl7Y29uc3QgaT1yLmV2ZW50c1tyLmV2ZW50cy5sZW5ndGgtMV07cmV0dXJuIU9iamVjdChxLmopKGUpJiZpJiYibGlzdEl0ZW1QcmVmaXhXaGl0ZXNwYWNlIj09PWlbMV0udHlwZT90KGUpOm4oZSl9KSwibGlzdEl0ZW1QcmVmaXhXaGl0ZXNwYWNlIixyLnBhcnNlci5jb25zdHJ1Y3RzLmRpc2FibGUubnVsbC5pbmNsdWRlcygiY29kZUluZGVudGVkIik/dm9pZCAwOjUpfSxwYXJ0aWFsOiEwfSxoZT17dG9rZW5pemU6ZnVuY3Rpb24oZSx0LG4pe2NvbnN0IHI9dGhpcztyZXR1cm4gT2JqZWN0KFYuYSkoZSwoZnVuY3Rpb24oZSl7Y29uc3QgaT1yLmV2ZW50c1tyLmV2ZW50cy5sZW5ndGgtMV07cmV0dXJuIGkmJiJsaXN0SXRlbUluZGVudCI9PT1pWzFdLnR5cGUmJmlbMl0uc2xpY2VTZXJpYWxpemUoaVsxXSwhMCkubGVuZ3RoPT09ci5jb250YWluZXJTdGF0ZS5zaXplP3QoZSk6bihlKX0pLCJsaXN0SXRlbUluZGVudCIsci5jb250YWluZXJTdGF0ZS5zaXplKzEpfSxwYXJ0aWFsOiEwfTtjb25zdCBtZT17bmFtZToiYmxvY2tRdW90ZSIsdG9rZW5pemU6ZnVuY3Rpb24oZSx0LG4pe2NvbnN0IHI9dGhpcztyZXR1cm4gZnVuY3Rpb24odCl7aWYoNjI9PT10KXtjb25zdCBuPXIuY29udGFpbmVyU3RhdGU7cmV0dXJuIG4ub3Blbnx8KGUuZW50ZXIoImJsb2NrUXVvdGUiLHtfY29udGFpbmVyOiEwfSksbi5vcGVuPSEwKSxlLmVudGVyKCJibG9ja1F1b3RlUHJlZml4IiksZS5lbnRlcigiYmxvY2tRdW90ZU1hcmtlciIpLGUuY29uc3VtZSh0KSxlLmV4aXQoImJsb2NrUXVvdGVNYXJrZXIiKSxpfXJldHVybiBuKHQpfTtmdW5jdGlvbiBpKG4pe3JldHVybiBPYmplY3QocS5qKShuKT8oZS5lbnRlcigiYmxvY2tRdW90ZVByZWZpeFdoaXRlc3BhY2UiKSxlLmNvbnN1bWUobiksZS5leGl0KCJibG9ja1F1b3RlUHJlZml4V2hpdGVzcGFjZSIpLGUuZXhpdCgiYmxvY2tRdW90ZVByZWZpeCIpLHQpOihlLmV4aXQoImJsb2NrUXVvdGVQcmVmaXgiKSx0KG4pKX19LGNvbnRpbnVhdGlvbjp7dG9rZW5pemU6ZnVuY3Rpb24oZSx0LG4pe2NvbnN0IHI9dGhpcztyZXR1cm4gZnVuY3Rpb24odCl7aWYoT2JqZWN0KHEuaikodCkpcmV0dXJuIE9iamVjdChWLmEpKGUsaSwibGluZVByZWZpeCIsci5wYXJzZXIuY29uc3RydWN0cy5kaXNhYmxlLm51bGwuaW5jbHVkZXMoImNvZGVJbmRlbnRlZCIpP3ZvaWQgMDo0KSh0KTtyZXR1cm4gaSh0KX07ZnVuY3Rpb24gaShyKXtyZXR1cm4gZS5hdHRlbXB0KG1lLHQsbikocil9fX0sZXhpdDpmdW5jdGlvbihlKXtlLmV4aXQoImJsb2NrUXVvdGUiKX19O2Z1bmN0aW9uIGdlKGUsdCxuLHIsaSxhLG8scyxsKXtjb25zdCBjPWx8fE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtsZXQgdT0wO3JldHVybiBmdW5jdGlvbih0KXtpZig2MD09PXQpcmV0dXJuIGUuZW50ZXIociksZS5lbnRlcihpKSxlLmVudGVyKGEpLGUuY29uc3VtZSh0KSxlLmV4aXQoYSksZDtpZihudWxsPT09dHx8MzI9PT10fHw0MT09PXR8fE9iamVjdChxLmQpKHQpKXJldHVybiBuKHQpO3JldHVybiBlLmVudGVyKHIpLGUuZW50ZXIobyksZS5lbnRlcihzKSxlLmVudGVyKCJjaHVua1N0cmluZyIse2NvbnRlbnRUeXBlOiJzdHJpbmcifSksaCh0KX07ZnVuY3Rpb24gZChuKXtyZXR1cm4gNjI9PT1uPyhlLmVudGVyKGEpLGUuY29uc3VtZShuKSxlLmV4aXQoYSksZS5leGl0KGkpLGUuZXhpdChyKSx0KTooZS5lbnRlcihzKSxlLmVudGVyKCJjaHVua1N0cmluZyIse2NvbnRlbnRUeXBlOiJzdHJpbmcifSkscChuKSl9ZnVuY3Rpb24gcCh0KXtyZXR1cm4gNjI9PT10PyhlLmV4aXQoImNodW5rU3RyaW5nIiksZS5leGl0KHMpLGQodCkpOm51bGw9PT10fHw2MD09PXR8fE9iamVjdChxLmgpKHQpP24odCk6KGUuY29uc3VtZSh0KSw5Mj09PXQ/ZjpwKX1mdW5jdGlvbiBmKHQpe3JldHVybiA2MD09PXR8fDYyPT09dHx8OTI9PT10PyhlLmNvbnN1bWUodCkscCk6cCh0KX1mdW5jdGlvbiBoKGkpe3JldHVybiB1fHxudWxsIT09aSYmNDEhPT1pJiYhT2JqZWN0KHEuaSkoaSk/dTxjJiY0MD09PWk/KGUuY29uc3VtZShpKSx1KyssaCk6NDE9PT1pPyhlLmNvbnN1bWUoaSksdS0tLGgpOm51bGw9PT1pfHwzMj09PWl8fDQwPT09aXx8T2JqZWN0KHEuZCkoaSk/bihpKTooZS5jb25zdW1lKGkpLDkyPT09aT9tOmgpOihlLmV4aXQoImNodW5rU3RyaW5nIiksZS5leGl0KHMpLGUuZXhpdChvKSxlLmV4aXQociksdChpKSl9ZnVuY3Rpb24gbSh0KXtyZXR1cm4gNDA9PT10fHw0MT09PXR8fDkyPT09dD8oZS5jb25zdW1lKHQpLGgpOmgodCl9fWZ1bmN0aW9uIGJlKGUsdCxuLHIsaSxhKXtjb25zdCBvPXRoaXM7bGV0IHMsbD0wO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZS5lbnRlcihyKSxlLmVudGVyKGkpLGUuY29uc3VtZSh0KSxlLmV4aXQoaSksZS5lbnRlcihhKSxjfTtmdW5jdGlvbiBjKGQpe3JldHVybiBsPjk5OXx8bnVsbD09PWR8fDkxPT09ZHx8OTM9PT1kJiYhc3x8OTQ9PT1kJiYhbCYmIl9oaWRkZW5Gb290bm90ZVN1cHBvcnQiaW4gby5wYXJzZXIuY29uc3RydWN0cz9uKGQpOjkzPT09ZD8oZS5leGl0KGEpLGUuZW50ZXIoaSksZS5jb25zdW1lKGQpLGUuZXhpdChpKSxlLmV4aXQociksdCk6T2JqZWN0KHEuaCkoZCk/KGUuZW50ZXIoImxpbmVFbmRpbmciKSxlLmNvbnN1bWUoZCksZS5leGl0KCJsaW5lRW5kaW5nIiksYyk6KGUuZW50ZXIoImNodW5rU3RyaW5nIix7Y29udGVudFR5cGU6InN0cmluZyJ9KSx1KGQpKX1mdW5jdGlvbiB1KHQpe3JldHVybiBudWxsPT09dHx8OTE9PT10fHw5Mz09PXR8fE9iamVjdChxLmgpKHQpfHxsKys+OTk5PyhlLmV4aXQoImNodW5rU3RyaW5nIiksYyh0KSk6KGUuY29uc3VtZSh0KSxzfHwocz0hT2JqZWN0KHEuaikodCkpLDkyPT09dD9kOnUpfWZ1bmN0aW9uIGQodCl7cmV0dXJuIDkxPT09dHx8OTI9PT10fHw5Mz09PXQ/KGUuY29uc3VtZSh0KSxsKyssdSk6dSh0KX19ZnVuY3Rpb24geWUoZSx0LG4scixpLGEpe2xldCBvO3JldHVybiBmdW5jdGlvbih0KXtpZigzND09PXR8fDM5PT09dHx8NDA9PT10KXJldHVybiBlLmVudGVyKHIpLGUuZW50ZXIoaSksZS5jb25zdW1lKHQpLGUuZXhpdChpKSxvPTQwPT09dD80MTp0LHM7cmV0dXJuIG4odCl9O2Z1bmN0aW9uIHMobil7cmV0dXJuIG49PT1vPyhlLmVudGVyKGkpLGUuY29uc3VtZShuKSxlLmV4aXQoaSksZS5leGl0KHIpLHQpOihlLmVudGVyKGEpLGwobikpfWZ1bmN0aW9uIGwodCl7cmV0dXJuIHQ9PT1vPyhlLmV4aXQoYSkscyhvKSk6bnVsbD09PXQ/bih0KTpPYmplY3QocS5oKSh0KT8oZS5lbnRlcigibGluZUVuZGluZyIpLGUuY29uc3VtZSh0KSxlLmV4aXQoImxpbmVFbmRpbmciKSxPYmplY3QoVi5hKShlLGwsImxpbmVQcmVmaXgiKSk6KGUuZW50ZXIoImNodW5rU3RyaW5nIix7Y29udGVudFR5cGU6InN0cmluZyJ9KSxjKHQpKX1mdW5jdGlvbiBjKHQpe3JldHVybiB0PT09b3x8bnVsbD09PXR8fE9iamVjdChxLmgpKHQpPyhlLmV4aXQoImNodW5rU3RyaW5nIiksbCh0KSk6KGUuY29uc3VtZSh0KSw5Mj09PXQ/dTpjKX1mdW5jdGlvbiB1KHQpe3JldHVybiB0PT09b3x8OTI9PT10PyhlLmNvbnN1bWUodCksYyk6Yyh0KX19ZnVuY3Rpb24gdmUoZSx0KXtsZXQgbjtyZXR1cm4gZnVuY3Rpb24gcihpKXtpZihPYmplY3QocS5oKShpKSlyZXR1cm4gZS5lbnRlcigibGluZUVuZGluZyIpLGUuY29uc3VtZShpKSxlLmV4aXQoImxpbmVFbmRpbmciKSxuPSEwLHI7aWYoT2JqZWN0KHEuaikoaSkpcmV0dXJuIE9iamVjdChWLmEpKGUscixuPyJsaW5lUHJlZml4IjoibGluZVN1ZmZpeCIpKGkpO3JldHVybiB0KGkpfX12YXIgRWU9big5KTtjb25zdCB3ZT17bmFtZToiZGVmaW5pdGlvbiIsdG9rZW5pemU6ZnVuY3Rpb24oZSx0LG4pe2NvbnN0IHI9dGhpcztsZXQgaTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUuZW50ZXIoImRlZmluaXRpb24iKSxmdW5jdGlvbih0KXtyZXR1cm4gYmUuY2FsbChyLGUsYSxuLCJkZWZpbml0aW9uTGFiZWwiLCJkZWZpbml0aW9uTGFiZWxNYXJrZXIiLCJkZWZpbml0aW9uTGFiZWxTdHJpbmciKSh0KX0odCl9O2Z1bmN0aW9uIGEodCl7cmV0dXJuIGk9T2JqZWN0KEVlLmEpKHIuc2xpY2VTZXJpYWxpemUoci5ldmVudHNbci5ldmVudHMubGVuZ3RoLTFdWzFdKS5zbGljZSgxLC0xKSksNTg9PT10PyhlLmVudGVyKCJkZWZpbml0aW9uTWFya2VyIiksZS5jb25zdW1lKHQpLGUuZXhpdCgiZGVmaW5pdGlvbk1hcmtlciIpLG8pOm4odCl9ZnVuY3Rpb24gbyh0KXtyZXR1cm4gT2JqZWN0KHEuaSkodCk/dmUoZSxzKSh0KTpzKHQpfWZ1bmN0aW9uIHModCl7cmV0dXJuIGdlKGUsbCxuLCJkZWZpbml0aW9uRGVzdGluYXRpb24iLCJkZWZpbml0aW9uRGVzdGluYXRpb25MaXRlcmFsIiwiZGVmaW5pdGlvbkRlc3RpbmF0aW9uTGl0ZXJhbE1hcmtlciIsImRlZmluaXRpb25EZXN0aW5hdGlvblJhdyIsImRlZmluaXRpb25EZXN0aW5hdGlvblN0cmluZyIpKHQpfWZ1bmN0aW9uIGwodCl7cmV0dXJuIGUuYXR0ZW1wdChTZSxjLGMpKHQpfWZ1bmN0aW9uIGModCl7cmV0dXJuIE9iamVjdChxLmopKHQpP09iamVjdChWLmEpKGUsdSwid2hpdGVzcGFjZSIpKHQpOnUodCl9ZnVuY3Rpb24gdShhKXtyZXR1cm4gbnVsbD09PWF8fE9iamVjdChxLmgpKGEpPyhlLmV4aXQoImRlZmluaXRpb24iKSxyLnBhcnNlci5kZWZpbmVkLnB1c2goaSksdChhKSk6bihhKX19fSxTZT17dG9rZW5pemU6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0KHEuaSkodCk/dmUoZSxyKSh0KTpuKHQpfTtmdW5jdGlvbiByKHQpe3JldHVybiB5ZShlLGksbiwiZGVmaW5pdGlvblRpdGxlIiwiZGVmaW5pdGlvblRpdGxlTWFya2VyIiwiZGVmaW5pdGlvblRpdGxlU3RyaW5nIikodCl9ZnVuY3Rpb24gaSh0KXtyZXR1cm4gT2JqZWN0KHEuaikodCk/T2JqZWN0KFYuYSkoZSxhLCJ3aGl0ZXNwYWNlIikodCk6YSh0KX1mdW5jdGlvbiBhKGUpe3JldHVybiBudWxsPT09ZXx8T2JqZWN0KHEuaCkoZSk/dChlKTpuKGUpfX0scGFydGlhbDohMH07Y29uc3QgX2U9e25hbWU6ImNvZGVJbmRlbnRlZCIsdG9rZW5pemU6ZnVuY3Rpb24oZSx0LG4pe2NvbnN0IHI9dGhpcztyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUuZW50ZXIoImNvZGVJbmRlbnRlZCIpLE9iamVjdChWLmEpKGUsaSwibGluZVByZWZpeCIsNSkodCl9O2Z1bmN0aW9uIGkoZSl7Y29uc3QgdD1yLmV2ZW50c1tyLmV2ZW50cy5sZW5ndGgtMV07cmV0dXJuIHQmJiJsaW5lUHJlZml4Ij09PXRbMV0udHlwZSYmdFsyXS5zbGljZVNlcmlhbGl6ZSh0WzFdLCEwKS5sZW5ndGg+PTQ/YShlKTpuKGUpfWZ1bmN0aW9uIGEodCl7cmV0dXJuIG51bGw9PT10P3ModCk6T2JqZWN0KHEuaCkodCk/ZS5hdHRlbXB0KFRlLGEscykodCk6KGUuZW50ZXIoImNvZGVGbG93VmFsdWUiKSxvKHQpKX1mdW5jdGlvbiBvKHQpe3JldHVybiBudWxsPT09dHx8T2JqZWN0KHEuaCkodCk/KGUuZXhpdCgiY29kZUZsb3dWYWx1ZSIpLGEodCkpOihlLmNvbnN1bWUodCksbyl9ZnVuY3Rpb24gcyhuKXtyZXR1cm4gZS5leGl0KCJjb2RlSW5kZW50ZWQiKSx0KG4pfX19LFRlPXt0b2tlbml6ZTpmdW5jdGlvbihlLHQsbil7Y29uc3Qgcj10aGlzO3JldHVybiBpO2Z1bmN0aW9uIGkodCl7cmV0dXJuIHIucGFyc2VyLmxhenlbci5ub3coKS5saW5lXT9uKHQpOk9iamVjdChxLmgpKHQpPyhlLmVudGVyKCJsaW5lRW5kaW5nIiksZS5jb25zdW1lKHQpLGUuZXhpdCgibGluZUVuZGluZyIpLGkpOk9iamVjdChWLmEpKGUsYSwibGluZVByZWZpeCIsNSkodCl9ZnVuY3Rpb24gYShlKXtjb25zdCBhPXIuZXZlbnRzW3IuZXZlbnRzLmxlbmd0aC0xXTtyZXR1cm4gYSYmImxpbmVQcmVmaXgiPT09YVsxXS50eXBlJiZhWzJdLnNsaWNlU2VyaWFsaXplKGFbMV0sITApLmxlbmd0aD49ND90KGUpOk9iamVjdChxLmgpKGUpP2koZSk6bihlKX19LHBhcnRpYWw6ITB9O2NvbnN0IEFlPXtuYW1lOiJoZWFkaW5nQXR4Iix0b2tlbml6ZTpmdW5jdGlvbihlLHQsbil7bGV0IHI9MDtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUuZW50ZXIoImF0eEhlYWRpbmciKSxmdW5jdGlvbih0KXtyZXR1cm4gZS5lbnRlcigiYXR4SGVhZGluZ1NlcXVlbmNlIiksaSh0KX0odCl9O2Z1bmN0aW9uIGkodCl7cmV0dXJuIDM1PT09dCYmcisrPDY/KGUuY29uc3VtZSh0KSxpKTpudWxsPT09dHx8T2JqZWN0KHEuaSkodCk/KGUuZXhpdCgiYXR4SGVhZGluZ1NlcXVlbmNlIiksYSh0KSk6bih0KX1mdW5jdGlvbiBhKG4pe3JldHVybiAzNT09PW4/KGUuZW50ZXIoImF0eEhlYWRpbmdTZXF1ZW5jZSIpLG8obikpOm51bGw9PT1ufHxPYmplY3QocS5oKShuKT8oZS5leGl0KCJhdHhIZWFkaW5nIiksdChuKSk6T2JqZWN0KHEuaikobik/T2JqZWN0KFYuYSkoZSxhLCJ3aGl0ZXNwYWNlIikobik6KGUuZW50ZXIoImF0eEhlYWRpbmdUZXh0IikscyhuKSl9ZnVuY3Rpb24gbyh0KXtyZXR1cm4gMzU9PT10PyhlLmNvbnN1bWUodCksbyk6KGUuZXhpdCgiYXR4SGVhZGluZ1NlcXVlbmNlIiksYSh0KSl9ZnVuY3Rpb24gcyh0KXtyZXR1cm4gbnVsbD09PXR8fDM1PT09dHx8T2JqZWN0KHEuaSkodCk/KGUuZXhpdCgiYXR4SGVhZGluZ1RleHQiKSxhKHQpKTooZS5jb25zdW1lKHQpLHMpfX0scmVzb2x2ZTpmdW5jdGlvbihlLHQpe2xldCBuLHIsaT1lLmxlbmd0aC0yLGE9Mzsid2hpdGVzcGFjZSI9PT1lW2FdWzFdLnR5cGUmJihhKz0yKTtpLTI+YSYmIndoaXRlc3BhY2UiPT09ZVtpXVsxXS50eXBlJiYoaS09Mik7ImF0eEhlYWRpbmdTZXF1ZW5jZSI9PT1lW2ldWzFdLnR5cGUmJihhPT09aS0xfHxpLTQ+YSYmIndoaXRlc3BhY2UiPT09ZVtpLTJdWzFdLnR5cGUpJiYoaS09YSsxPT09aT8yOjQpO2k+YSYmKG49e3R5cGU6ImF0eEhlYWRpbmdUZXh0IixzdGFydDplW2FdWzFdLnN0YXJ0LGVuZDplW2ldWzFdLmVuZH0scj17dHlwZToiY2h1bmtUZXh0IixzdGFydDplW2FdWzFdLnN0YXJ0LGVuZDplW2ldWzFdLmVuZCxjb250ZW50VHlwZToidGV4dCJ9LE9iamVjdChLLmIpKGUsYSxpLWErMSxbWyJlbnRlciIsbix0XSxbImVudGVyIixyLHRdLFsiZXhpdCIscix0XSxbImV4aXQiLG4sdF1dKSk7cmV0dXJuIGV9fTtjb25zdCBrZT17bmFtZToic2V0ZXh0VW5kZXJsaW5lIix0b2tlbml6ZTpmdW5jdGlvbihlLHQsbil7Y29uc3Qgcj10aGlzO2xldCBpO3JldHVybiBmdW5jdGlvbih0KXtsZXQgbyxzPXIuZXZlbnRzLmxlbmd0aDtmb3IoO3MtLTspaWYoImxpbmVFbmRpbmciIT09ci5ldmVudHNbc11bMV0udHlwZSYmImxpbmVQcmVmaXgiIT09ci5ldmVudHNbc11bMV0udHlwZSYmImNvbnRlbnQiIT09ci5ldmVudHNbc11bMV0udHlwZSl7bz0icGFyYWdyYXBoIj09PXIuZXZlbnRzW3NdWzFdLnR5cGU7YnJlYWt9aWYoIXIucGFyc2VyLmxhenlbci5ub3coKS5saW5lXSYmKHIuaW50ZXJydXB0fHxvKSlyZXR1cm4gZS5lbnRlcigic2V0ZXh0SGVhZGluZ0xpbmUiKSxpPXQsZnVuY3Rpb24odCl7cmV0dXJuIGUuZW50ZXIoInNldGV4dEhlYWRpbmdMaW5lU2VxdWVuY2UiKSxhKHQpfSh0KTtyZXR1cm4gbih0KX07ZnVuY3Rpb24gYSh0KXtyZXR1cm4gdD09PWk/KGUuY29uc3VtZSh0KSxhKTooZS5leGl0KCJzZXRleHRIZWFkaW5nTGluZVNlcXVlbmNlIiksT2JqZWN0KHEuaikodCk/T2JqZWN0KFYuYSkoZSxvLCJsaW5lU3VmZml4IikodCk6byh0KSl9ZnVuY3Rpb24gbyhyKXtyZXR1cm4gbnVsbD09PXJ8fE9iamVjdChxLmgpKHIpPyhlLmV4aXQoInNldGV4dEhlYWRpbmdMaW5lIiksdChyKSk6bihyKX19LHJlc29sdmVUbzpmdW5jdGlvbihlLHQpe2xldCBuLHIsaSxhPWUubGVuZ3RoO2Zvcig7YS0tOylpZigiZW50ZXIiPT09ZVthXVswXSl7aWYoImNvbnRlbnQiPT09ZVthXVsxXS50eXBlKXtuPWE7YnJlYWt9InBhcmFncmFwaCI9PT1lW2FdWzFdLnR5cGUmJihyPWEpfWVsc2UiY29udGVudCI9PT1lW2FdWzFdLnR5cGUmJmUuc3BsaWNlKGEsMSksaXx8ImRlZmluaXRpb24iIT09ZVthXVsxXS50eXBlfHwoaT1hKTtjb25zdCBvPXt0eXBlOiJzZXRleHRIZWFkaW5nIixzdGFydDpPYmplY3QuYXNzaWduKHt9LGVbcl1bMV0uc3RhcnQpLGVuZDpPYmplY3QuYXNzaWduKHt9LGVbZS5sZW5ndGgtMV1bMV0uZW5kKX07ZVtyXVsxXS50eXBlPSJzZXRleHRIZWFkaW5nVGV4dCIsaT8oZS5zcGxpY2UociwwLFsiZW50ZXIiLG8sdF0pLGUuc3BsaWNlKGkrMSwwLFsiZXhpdCIsZVtuXVsxXSx0XSksZVtuXVsxXS5lbmQ9T2JqZWN0LmFzc2lnbih7fSxlW2ldWzFdLmVuZCkpOmVbbl1bMV09bztyZXR1cm4gZS5wdXNoKFsiZXhpdCIsbyx0XSksZX19O2NvbnN0IHhlPVsiYWRkcmVzcyIsImFydGljbGUiLCJhc2lkZSIsImJhc2UiLCJiYXNlZm9udCIsImJsb2NrcXVvdGUiLCJib2R5IiwiY2FwdGlvbiIsImNlbnRlciIsImNvbCIsImNvbGdyb3VwIiwiZGQiLCJkZXRhaWxzIiwiZGlhbG9nIiwiZGlyIiwiZGl2IiwiZGwiLCJkdCIsImZpZWxkc2V0IiwiZmlnY2FwdGlvbiIsImZpZ3VyZSIsImZvb3RlciIsImZvcm0iLCJmcmFtZSIsImZyYW1lc2V0IiwiaDEiLCJoMiIsImgzIiwiaDQiLCJoNSIsImg2IiwiaGVhZCIsImhlYWRlciIsImhyIiwiaHRtbCIsImlmcmFtZSIsImxlZ2VuZCIsImxpIiwibGluayIsIm1haW4iLCJtZW51IiwibWVudWl0ZW0iLCJuYXYiLCJub2ZyYW1lcyIsIm9sIiwib3B0Z3JvdXAiLCJvcHRpb24iLCJwIiwicGFyYW0iLCJzZWFyY2giLCJzZWN0aW9uIiwic3VtbWFyeSIsInRhYmxlIiwidGJvZHkiLCJ0ZCIsInRmb290IiwidGgiLCJ0aGVhZCIsInRpdGxlIiwidHIiLCJ0cmFjayIsInVsIl0sQ2U9WyJwcmUiLCJzY3JpcHQiLCJzdHlsZSIsInRleHRhcmVhIl0sSWU9e25hbWU6Imh0bWxGbG93Iix0b2tlbml6ZTpmdW5jdGlvbihlLHQsbil7Y29uc3Qgcj10aGlzO2xldCBpLGEsbyxzLGw7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZS5lbnRlcigiaHRtbEZsb3ciKSxlLmVudGVyKCJodG1sRmxvd0RhdGEiKSxlLmNvbnN1bWUodCksY30odCl9O2Z1bmN0aW9uIGMocyl7cmV0dXJuIDMzPT09cz8oZS5jb25zdW1lKHMpLHUpOjQ3PT09cz8oZS5jb25zdW1lKHMpLGE9ITAsZik6NjM9PT1zPyhlLmNvbnN1bWUocyksaT0zLHIuaW50ZXJydXB0P3Q6TCk6T2JqZWN0KHEuYSkocyk/KGUuY29uc3VtZShzKSxvPVN0cmluZy5mcm9tQ2hhckNvZGUocyksaCk6bihzKX1mdW5jdGlvbiB1KGEpe3JldHVybiA0NT09PWE/KGUuY29uc3VtZShhKSxpPTIsZCk6OTE9PT1hPyhlLmNvbnN1bWUoYSksaT01LHM9MCxwKTpPYmplY3QocS5hKShhKT8oZS5jb25zdW1lKGEpLGk9NCxyLmludGVycnVwdD90OkwpOm4oYSl9ZnVuY3Rpb24gZChpKXtyZXR1cm4gNDU9PT1pPyhlLmNvbnN1bWUoaSksci5pbnRlcnJ1cHQ/dDpMKTpuKGkpfWZ1bmN0aW9uIHAoaSl7cmV0dXJuIGk9PT0iQ0RBVEFbIi5jaGFyQ29kZUF0KHMrKyk/KGUuY29uc3VtZShpKSxzPT09IkNEQVRBWyIubGVuZ3RoP3IuaW50ZXJydXB0P3Q6azpwKTpuKGkpfWZ1bmN0aW9uIGYodCl7cmV0dXJuIE9iamVjdChxLmEpKHQpPyhlLmNvbnN1bWUodCksbz1TdHJpbmcuZnJvbUNoYXJDb2RlKHQpLGgpOm4odCl9ZnVuY3Rpb24gaChzKXtpZihudWxsPT09c3x8NDc9PT1zfHw2Mj09PXN8fE9iamVjdChxLmkpKHMpKXtjb25zdCBsPTQ3PT09cyxjPW8udG9Mb3dlckNhc2UoKTtyZXR1cm4gbHx8YXx8IUNlLmluY2x1ZGVzKGMpP3hlLmluY2x1ZGVzKG8udG9Mb3dlckNhc2UoKSk/KGk9NixsPyhlLmNvbnN1bWUocyksbSk6ci5pbnRlcnJ1cHQ/dChzKTprKHMpKTooaT03LHIuaW50ZXJydXB0JiYhci5wYXJzZXIubGF6eVtyLm5vdygpLmxpbmVdP24ocyk6YT9nKHMpOmIocykpOihpPTEsci5pbnRlcnJ1cHQ/dChzKTprKHMpKX1yZXR1cm4gNDU9PT1zfHxPYmplY3QocS5iKShzKT8oZS5jb25zdW1lKHMpLG8rPVN0cmluZy5mcm9tQ2hhckNvZGUocyksaCk6bihzKX1mdW5jdGlvbiBtKGkpe3JldHVybiA2Mj09PWk/KGUuY29uc3VtZShpKSxyLmludGVycnVwdD90OmspOm4oaSl9ZnVuY3Rpb24gZyh0KXtyZXR1cm4gT2JqZWN0KHEuaikodCk/KGUuY29uc3VtZSh0KSxnKTpUKHQpfWZ1bmN0aW9uIGIodCl7cmV0dXJuIDQ3PT09dD8oZS5jb25zdW1lKHQpLFQpOjU4PT09dHx8OTU9PT10fHxPYmplY3QocS5hKSh0KT8oZS5jb25zdW1lKHQpLHkpOk9iamVjdChxLmopKHQpPyhlLmNvbnN1bWUodCksYik6VCh0KX1mdW5jdGlvbiB5KHQpe3JldHVybiA0NT09PXR8fDQ2PT09dHx8NTg9PT10fHw5NT09PXR8fE9iamVjdChxLmIpKHQpPyhlLmNvbnN1bWUodCkseSk6dih0KX1mdW5jdGlvbiB2KHQpe3JldHVybiA2MT09PXQ/KGUuY29uc3VtZSh0KSxFKTpPYmplY3QocS5qKSh0KT8oZS5jb25zdW1lKHQpLHYpOmIodCl9ZnVuY3Rpb24gRSh0KXtyZXR1cm4gbnVsbD09PXR8fDYwPT09dHx8NjE9PT10fHw2Mj09PXR8fDk2PT09dD9uKHQpOjM0PT09dHx8Mzk9PT10PyhlLmNvbnN1bWUodCksbD10LHcpOk9iamVjdChxLmopKHQpPyhlLmNvbnN1bWUodCksRSk6Uyh0KX1mdW5jdGlvbiB3KHQpe3JldHVybiB0PT09bD8oZS5jb25zdW1lKHQpLGw9bnVsbCxfKTpudWxsPT09dHx8T2JqZWN0KHEuaCkodCk/bih0KTooZS5jb25zdW1lKHQpLHcpfWZ1bmN0aW9uIFModCl7cmV0dXJuIG51bGw9PT10fHwzND09PXR8fDM5PT09dHx8NDc9PT10fHw2MD09PXR8fDYxPT09dHx8NjI9PT10fHw5Nj09PXR8fE9iamVjdChxLmkpKHQpP3YodCk6KGUuY29uc3VtZSh0KSxTKX1mdW5jdGlvbiBfKGUpe3JldHVybiA0Nz09PWV8fDYyPT09ZXx8T2JqZWN0KHEuaikoZSk/YihlKTpuKGUpfWZ1bmN0aW9uIFQodCl7cmV0dXJuIDYyPT09dD8oZS5jb25zdW1lKHQpLEEpOm4odCl9ZnVuY3Rpb24gQSh0KXtyZXR1cm4gbnVsbD09PXR8fE9iamVjdChxLmgpKHQpP2sodCk6T2JqZWN0KHEuaikodCk/KGUuY29uc3VtZSh0KSxBKTpuKHQpfWZ1bmN0aW9uIGsodCl7cmV0dXJuIDQ1PT09dCYmMj09PWk/KGUuY29uc3VtZSh0KSxSKTo2MD09PXQmJjE9PT1pPyhlLmNvbnN1bWUodCksTyk6NjI9PT10JiY0PT09aT8oZS5jb25zdW1lKHQpLEQpOjYzPT09dCYmMz09PWk/KGUuY29uc3VtZSh0KSxMKTo5Mz09PXQmJjU9PT1pPyhlLmNvbnN1bWUodCksTSk6IU9iamVjdChxLmgpKHQpfHw2IT09aSYmNyE9PWk/bnVsbD09PXR8fE9iamVjdChxLmgpKHQpPyhlLmV4aXQoImh0bWxGbG93RGF0YSIpLHgodCkpOihlLmNvbnN1bWUodCksayk6KGUuZXhpdCgiaHRtbEZsb3dEYXRhIiksZS5jaGVjayhSZSxQLHgpKHQpKX1mdW5jdGlvbiB4KHQpe3JldHVybiBlLmNoZWNrKE9lLEMsUCkodCl9ZnVuY3Rpb24gQyh0KXtyZXR1cm4gZS5lbnRlcigibGluZUVuZGluZyIpLGUuY29uc3VtZSh0KSxlLmV4aXQoImxpbmVFbmRpbmciKSxJfWZ1bmN0aW9uIEkodCl7cmV0dXJuIG51bGw9PT10fHxPYmplY3QocS5oKSh0KT94KHQpOihlLmVudGVyKCJodG1sRmxvd0RhdGEiKSxrKHQpKX1mdW5jdGlvbiBSKHQpe3JldHVybiA0NT09PXQ/KGUuY29uc3VtZSh0KSxMKTprKHQpfWZ1bmN0aW9uIE8odCl7cmV0dXJuIDQ3PT09dD8oZS5jb25zdW1lKHQpLG89IiIsTik6ayh0KX1mdW5jdGlvbiBOKHQpe2lmKDYyPT09dCl7Y29uc3Qgbj1vLnRvTG93ZXJDYXNlKCk7cmV0dXJuIENlLmluY2x1ZGVzKG4pPyhlLmNvbnN1bWUodCksRCk6ayh0KX1yZXR1cm4gT2JqZWN0KHEuYSkodCkmJm8ubGVuZ3RoPDg/KGUuY29uc3VtZSh0KSxvKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHQpLE4pOmsodCl9ZnVuY3Rpb24gTSh0KXtyZXR1cm4gOTM9PT10PyhlLmNvbnN1bWUodCksTCk6ayh0KX1mdW5jdGlvbiBMKHQpe3JldHVybiA2Mj09PXQ/KGUuY29uc3VtZSh0KSxEKTo0NT09PXQmJjI9PT1pPyhlLmNvbnN1bWUodCksTCk6ayh0KX1mdW5jdGlvbiBEKHQpe3JldHVybiBudWxsPT09dHx8T2JqZWN0KHEuaCkodCk/KGUuZXhpdCgiaHRtbEZsb3dEYXRhIiksUCh0KSk6KGUuY29uc3VtZSh0KSxEKX1mdW5jdGlvbiBQKG4pe3JldHVybiBlLmV4aXQoImh0bWxGbG93IiksdChuKX19LHJlc29sdmVUbzpmdW5jdGlvbihlKXtsZXQgdD1lLmxlbmd0aDtmb3IoO3QtLSYmKCJlbnRlciIhPT1lW3RdWzBdfHwiaHRtbEZsb3ciIT09ZVt0XVsxXS50eXBlKTspO3Q+MSYmImxpbmVQcmVmaXgiPT09ZVt0LTJdWzFdLnR5cGUmJihlW3RdWzFdLnN0YXJ0PWVbdC0yXVsxXS5zdGFydCxlW3QrMV1bMV0uc3RhcnQ9ZVt0LTJdWzFdLnN0YXJ0LGUuc3BsaWNlKHQtMiwyKSk7cmV0dXJuIGV9LGNvbmNyZXRlOiEwfSxSZT17dG9rZW5pemU6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBmdW5jdGlvbihyKXtyZXR1cm4gZS5lbnRlcigibGluZUVuZGluZyIpLGUuY29uc3VtZShyKSxlLmV4aXQoImxpbmVFbmRpbmciKSxlLmF0dGVtcHQoWi5hLHQsbil9fSxwYXJ0aWFsOiEwfSxPZT17dG9rZW5pemU6ZnVuY3Rpb24oZSx0LG4pe2NvbnN0IHI9dGhpcztyZXR1cm4gZnVuY3Rpb24odCl7aWYoT2JqZWN0KHEuaCkodCkpcmV0dXJuIGUuZW50ZXIoImxpbmVFbmRpbmciKSxlLmNvbnN1bWUodCksZS5leGl0KCJsaW5lRW5kaW5nIiksaTtyZXR1cm4gbih0KX07ZnVuY3Rpb24gaShlKXtyZXR1cm4gci5wYXJzZXIubGF6eVtyLm5vdygpLmxpbmVdP24oZSk6dChlKX19LHBhcnRpYWw6ITB9O2NvbnN0IE5lPXt0b2tlbml6ZTpmdW5jdGlvbihlLHQsbil7Y29uc3Qgcj10aGlzO3JldHVybiBmdW5jdGlvbih0KXtpZihudWxsPT09dClyZXR1cm4gbih0KTtyZXR1cm4gZS5lbnRlcigibGluZUVuZGluZyIpLGUuY29uc3VtZSh0KSxlLmV4aXQoImxpbmVFbmRpbmciKSxpfTtmdW5jdGlvbiBpKGUpe3JldHVybiByLnBhcnNlci5sYXp5W3Iubm93KCkubGluZV0/bihlKTp0KGUpfX0scGFydGlhbDohMH0sTWU9e25hbWU6ImNvZGVGZW5jZWQiLHRva2VuaXplOmZ1bmN0aW9uKGUsdCxuKXtjb25zdCByPXRoaXMsaT17dG9rZW5pemU6ZnVuY3Rpb24oZSx0LG4pe2xldCBpPTA7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlLmVudGVyKCJsaW5lRW5kaW5nIiksZS5jb25zdW1lKHQpLGUuZXhpdCgibGluZUVuZGluZyIpLG99O2Z1bmN0aW9uIG8odCl7cmV0dXJuIGUuZW50ZXIoImNvZGVGZW5jZWRGZW5jZSIpLE9iamVjdChxLmopKHQpP09iamVjdChWLmEpKGUsbCwibGluZVByZWZpeCIsci5wYXJzZXIuY29uc3RydWN0cy5kaXNhYmxlLm51bGwuaW5jbHVkZXMoImNvZGVJbmRlbnRlZCIpP3ZvaWQgMDo0KSh0KTpsKHQpfWZ1bmN0aW9uIGwodCl7cmV0dXJuIHQ9PT1hPyhlLmVudGVyKCJjb2RlRmVuY2VkRmVuY2VTZXF1ZW5jZSIpLGModCkpOm4odCl9ZnVuY3Rpb24gYyh0KXtyZXR1cm4gdD09PWE/KGkrKyxlLmNvbnN1bWUodCksYyk6aT49cz8oZS5leGl0KCJjb2RlRmVuY2VkRmVuY2VTZXF1ZW5jZSIpLE9iamVjdChxLmopKHQpP09iamVjdChWLmEpKGUsdSwid2hpdGVzcGFjZSIpKHQpOnUodCkpOm4odCl9ZnVuY3Rpb24gdShyKXtyZXR1cm4gbnVsbD09PXJ8fE9iamVjdChxLmgpKHIpPyhlLmV4aXQoImNvZGVGZW5jZWRGZW5jZSIpLHQocikpOm4ocil9fSxwYXJ0aWFsOiEwfTtsZXQgYSxvPTAscz0wO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24odCl7Y29uc3Qgbj1yLmV2ZW50c1tyLmV2ZW50cy5sZW5ndGgtMV07cmV0dXJuIG89biYmImxpbmVQcmVmaXgiPT09blsxXS50eXBlP25bMl0uc2xpY2VTZXJpYWxpemUoblsxXSwhMCkubGVuZ3RoOjAsYT10LGUuZW50ZXIoImNvZGVGZW5jZWQiKSxlLmVudGVyKCJjb2RlRmVuY2VkRmVuY2UiKSxlLmVudGVyKCJjb2RlRmVuY2VkRmVuY2VTZXF1ZW5jZSIpLGwodCl9KHQpfTtmdW5jdGlvbiBsKHQpe3JldHVybiB0PT09YT8ocysrLGUuY29uc3VtZSh0KSxsKTpzPDM/bih0KTooZS5leGl0KCJjb2RlRmVuY2VkRmVuY2VTZXF1ZW5jZSIpLE9iamVjdChxLmopKHQpP09iamVjdChWLmEpKGUsYywid2hpdGVzcGFjZSIpKHQpOmModCkpfWZ1bmN0aW9uIGMobil7cmV0dXJuIG51bGw9PT1ufHxPYmplY3QocS5oKShuKT8oZS5leGl0KCJjb2RlRmVuY2VkRmVuY2UiKSxyLmludGVycnVwdD90KG4pOmUuY2hlY2soTmUsZix5KShuKSk6KGUuZW50ZXIoImNvZGVGZW5jZWRGZW5jZUluZm8iKSxlLmVudGVyKCJjaHVua1N0cmluZyIse2NvbnRlbnRUeXBlOiJzdHJpbmcifSksdShuKSl9ZnVuY3Rpb24gdSh0KXtyZXR1cm4gbnVsbD09PXR8fE9iamVjdChxLmgpKHQpPyhlLmV4aXQoImNodW5rU3RyaW5nIiksZS5leGl0KCJjb2RlRmVuY2VkRmVuY2VJbmZvIiksYyh0KSk6T2JqZWN0KHEuaikodCk/KGUuZXhpdCgiY2h1bmtTdHJpbmciKSxlLmV4aXQoImNvZGVGZW5jZWRGZW5jZUluZm8iKSxPYmplY3QoVi5hKShlLGQsIndoaXRlc3BhY2UiKSh0KSk6OTY9PT10JiZ0PT09YT9uKHQpOihlLmNvbnN1bWUodCksdSl9ZnVuY3Rpb24gZCh0KXtyZXR1cm4gbnVsbD09PXR8fE9iamVjdChxLmgpKHQpP2ModCk6KGUuZW50ZXIoImNvZGVGZW5jZWRGZW5jZU1ldGEiKSxlLmVudGVyKCJjaHVua1N0cmluZyIse2NvbnRlbnRUeXBlOiJzdHJpbmcifSkscCh0KSl9ZnVuY3Rpb24gcCh0KXtyZXR1cm4gbnVsbD09PXR8fE9iamVjdChxLmgpKHQpPyhlLmV4aXQoImNodW5rU3RyaW5nIiksZS5leGl0KCJjb2RlRmVuY2VkRmVuY2VNZXRhIiksYyh0KSk6OTY9PT10JiZ0PT09YT9uKHQpOihlLmNvbnN1bWUodCkscCl9ZnVuY3Rpb24gZih0KXtyZXR1cm4gZS5hdHRlbXB0KGkseSxoKSh0KX1mdW5jdGlvbiBoKHQpe3JldHVybiBlLmVudGVyKCJsaW5lRW5kaW5nIiksZS5jb25zdW1lKHQpLGUuZXhpdCgibGluZUVuZGluZyIpLG19ZnVuY3Rpb24gbSh0KXtyZXR1cm4gbz4wJiZPYmplY3QocS5qKSh0KT9PYmplY3QoVi5hKShlLGcsImxpbmVQcmVmaXgiLG8rMSkodCk6Zyh0KX1mdW5jdGlvbiBnKHQpe3JldHVybiBudWxsPT09dHx8T2JqZWN0KHEuaCkodCk/ZS5jaGVjayhOZSxmLHkpKHQpOihlLmVudGVyKCJjb2RlRmxvd1ZhbHVlIiksYih0KSl9ZnVuY3Rpb24gYih0KXtyZXR1cm4gbnVsbD09PXR8fE9iamVjdChxLmgpKHQpPyhlLmV4aXQoImNvZGVGbG93VmFsdWUiKSxnKHQpKTooZS5jb25zdW1lKHQpLGIpfWZ1bmN0aW9uIHkobil7cmV0dXJuIGUuZXhpdCgiY29kZUZlbmNlZCIpLHQobil9fSxjb25jcmV0ZTohMH07dmFyIExlPW4oMzIpO2NvbnN0IERlPXtuYW1lOiJjaGFyYWN0ZXJSZWZlcmVuY2UiLHRva2VuaXplOmZ1bmN0aW9uKGUsdCxuKXtjb25zdCByPXRoaXM7bGV0IGksYSxvPTA7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlLmVudGVyKCJjaGFyYWN0ZXJSZWZlcmVuY2UiKSxlLmVudGVyKCJjaGFyYWN0ZXJSZWZlcmVuY2VNYXJrZXIiKSxlLmNvbnN1bWUodCksZS5leGl0KCJjaGFyYWN0ZXJSZWZlcmVuY2VNYXJrZXIiKSxzfTtmdW5jdGlvbiBzKHQpe3JldHVybiAzNT09PXQ/KGUuZW50ZXIoImNoYXJhY3RlclJlZmVyZW5jZU1hcmtlck51bWVyaWMiKSxlLmNvbnN1bWUodCksZS5leGl0KCJjaGFyYWN0ZXJSZWZlcmVuY2VNYXJrZXJOdW1lcmljIiksbCk6KGUuZW50ZXIoImNoYXJhY3RlclJlZmVyZW5jZVZhbHVlIiksaT0zMSxhPXEuYixjKHQpKX1mdW5jdGlvbiBsKHQpe3JldHVybiA4OD09PXR8fDEyMD09PXQ/KGUuZW50ZXIoImNoYXJhY3RlclJlZmVyZW5jZU1hcmtlckhleGFkZWNpbWFsIiksZS5jb25zdW1lKHQpLGUuZXhpdCgiY2hhcmFjdGVyUmVmZXJlbmNlTWFya2VySGV4YWRlY2ltYWwiKSxlLmVudGVyKCJjaGFyYWN0ZXJSZWZlcmVuY2VWYWx1ZSIpLGk9NixhPXEuZixjKTooZS5lbnRlcigiY2hhcmFjdGVyUmVmZXJlbmNlVmFsdWUiKSxpPTcsYT1xLmUsYyh0KSl9ZnVuY3Rpb24gYyhzKXtpZig1OT09PXMmJm8pe2NvbnN0IGk9ZS5leGl0KCJjaGFyYWN0ZXJSZWZlcmVuY2VWYWx1ZSIpO3JldHVybiBhIT09cS5ifHxPYmplY3QoTGUuYSkoci5zbGljZVNlcmlhbGl6ZShpKSk/KGUuZW50ZXIoImNoYXJhY3RlclJlZmVyZW5jZU1hcmtlciIpLGUuY29uc3VtZShzKSxlLmV4aXQoImNoYXJhY3RlclJlZmVyZW5jZU1hcmtlciIpLGUuZXhpdCgiY2hhcmFjdGVyUmVmZXJlbmNlIiksdCk6bihzKX1yZXR1cm4gYShzKSYmbysrPGk/KGUuY29uc3VtZShzKSxjKTpuKHMpfX19O2NvbnN0IFBlPXtuYW1lOiJjaGFyYWN0ZXJFc2NhcGUiLHRva2VuaXplOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUuZW50ZXIoImNoYXJhY3RlckVzY2FwZSIpLGUuZW50ZXIoImVzY2FwZU1hcmtlciIpLGUuY29uc3VtZSh0KSxlLmV4aXQoImVzY2FwZU1hcmtlciIpLHJ9O2Z1bmN0aW9uIHIocil7cmV0dXJuIE9iamVjdChxLmcpKHIpPyhlLmVudGVyKCJjaGFyYWN0ZXJFc2NhcGVWYWx1ZSIpLGUuY29uc3VtZShyKSxlLmV4aXQoImNoYXJhY3RlckVzY2FwZVZhbHVlIiksZS5leGl0KCJjaGFyYWN0ZXJFc2NhcGUiKSx0KTpuKHIpfX19O2NvbnN0IEZlPXtuYW1lOiJsaW5lRW5kaW5nIix0b2tlbml6ZTpmdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gZS5lbnRlcigibGluZUVuZGluZyIpLGUuY29uc3VtZShuKSxlLmV4aXQoImxpbmVFbmRpbmciKSxPYmplY3QoVi5hKShlLHQsImxpbmVQcmVmaXgiKX19fTtjb25zdCBVZT17bmFtZToibGFiZWxFbmQiLHRva2VuaXplOmZ1bmN0aW9uKGUsdCxuKXtjb25zdCByPXRoaXM7bGV0IGksYSxvPXIuZXZlbnRzLmxlbmd0aDtmb3IoO28tLTspaWYoKCJsYWJlbEltYWdlIj09PXIuZXZlbnRzW29dWzFdLnR5cGV8fCJsYWJlbExpbmsiPT09ci5ldmVudHNbb11bMV0udHlwZSkmJiFyLmV2ZW50c1tvXVsxXS5fYmFsYW5jZWQpe2k9ci5ldmVudHNbb11bMV07YnJlYWt9cmV0dXJuIGZ1bmN0aW9uKHQpe2lmKCFpKXJldHVybiBuKHQpO2lmKGkuX2luYWN0aXZlKXJldHVybiB1KHQpO3JldHVybiBhPXIucGFyc2VyLmRlZmluZWQuaW5jbHVkZXMoT2JqZWN0KEVlLmEpKHIuc2xpY2VTZXJpYWxpemUoe3N0YXJ0OmkuZW5kLGVuZDpyLm5vdygpfSkpKSxlLmVudGVyKCJsYWJlbEVuZCIpLGUuZW50ZXIoImxhYmVsTWFya2VyIiksZS5jb25zdW1lKHQpLGUuZXhpdCgibGFiZWxNYXJrZXIiKSxlLmV4aXQoImxhYmVsRW5kIiksc307ZnVuY3Rpb24gcyh0KXtyZXR1cm4gNDA9PT10P2UuYXR0ZW1wdChCZSxjLGE/Yzp1KSh0KTo5MT09PXQ/ZS5hdHRlbXB0KGplLGMsYT9sOnUpKHQpOmE/Yyh0KTp1KHQpfWZ1bmN0aW9uIGwodCl7cmV0dXJuIGUuYXR0ZW1wdChIZSxjLHUpKHQpfWZ1bmN0aW9uIGMoZSl7cmV0dXJuIHQoZSl9ZnVuY3Rpb24gdShlKXtyZXR1cm4gaS5fYmFsYW5jZWQ9ITAsbihlKX19LHJlc29sdmVUbzpmdW5jdGlvbihlLHQpe2xldCBuLHIsaSxhLG89ZS5sZW5ndGgscz0wO2Zvcig7by0tOylpZihuPWVbb11bMV0scil7aWYoImxpbmsiPT09bi50eXBlfHwibGFiZWxMaW5rIj09PW4udHlwZSYmbi5faW5hY3RpdmUpYnJlYWs7ImVudGVyIj09PWVbb11bMF0mJiJsYWJlbExpbmsiPT09bi50eXBlJiYobi5faW5hY3RpdmU9ITApfWVsc2UgaWYoaSl7aWYoImVudGVyIj09PWVbb11bMF0mJigibGFiZWxJbWFnZSI9PT1uLnR5cGV8fCJsYWJlbExpbmsiPT09bi50eXBlKSYmIW4uX2JhbGFuY2VkJiYocj1vLCJsYWJlbExpbmsiIT09bi50eXBlKSl7cz0yO2JyZWFrfX1lbHNlImxhYmVsRW5kIj09PW4udHlwZSYmKGk9byk7Y29uc3QgbD17dHlwZToibGFiZWxMaW5rIj09PWVbcl1bMV0udHlwZT8ibGluayI6ImltYWdlIixzdGFydDpPYmplY3QuYXNzaWduKHt9LGVbcl1bMV0uc3RhcnQpLGVuZDpPYmplY3QuYXNzaWduKHt9LGVbZS5sZW5ndGgtMV1bMV0uZW5kKX0sYz17dHlwZToibGFiZWwiLHN0YXJ0Ok9iamVjdC5hc3NpZ24oe30sZVtyXVsxXS5zdGFydCksZW5kOk9iamVjdC5hc3NpZ24oe30sZVtpXVsxXS5lbmQpfSx1PXt0eXBlOiJsYWJlbFRleHQiLHN0YXJ0Ok9iamVjdC5hc3NpZ24oe30sZVtyK3MrMl1bMV0uZW5kKSxlbmQ6T2JqZWN0LmFzc2lnbih7fSxlW2ktMl1bMV0uc3RhcnQpfTtyZXR1cm4gYT1bWyJlbnRlciIsbCx0XSxbImVudGVyIixjLHRdXSxhPU9iamVjdChLLmEpKGEsZS5zbGljZShyKzEscitzKzMpKSxhPU9iamVjdChLLmEpKGEsW1siZW50ZXIiLHUsdF1dKSxhPU9iamVjdChLLmEpKGEsT2JqZWN0KGNlLmEpKHQucGFyc2VyLmNvbnN0cnVjdHMuaW5zaWRlU3Bhbi5udWxsLGUuc2xpY2UocitzKzQsaS0zKSx0KSksYT1PYmplY3QoSy5hKShhLFtbImV4aXQiLHUsdF0sZVtpLTJdLGVbaS0xXSxbImV4aXQiLGMsdF1dKSxhPU9iamVjdChLLmEpKGEsZS5zbGljZShpKzEpKSxhPU9iamVjdChLLmEpKGEsW1siZXhpdCIsbCx0XV0pLE9iamVjdChLLmIpKGUscixlLmxlbmd0aCxhKSxlfSxyZXNvbHZlQWxsOmZ1bmN0aW9uKGUpe2xldCB0PS0xO2Zvcig7Kyt0PGUubGVuZ3RoOyl7Y29uc3Qgbj1lW3RdWzFdOyJsYWJlbEltYWdlIiE9PW4udHlwZSYmImxhYmVsTGluayIhPT1uLnR5cGUmJiJsYWJlbEVuZCIhPT1uLnR5cGV8fChlLnNwbGljZSh0KzEsImxhYmVsSW1hZ2UiPT09bi50eXBlPzQ6Miksbi50eXBlPSJkYXRhIix0KyspfXJldHVybiBlfX0sQmU9e3Rva2VuaXplOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUuZW50ZXIoInJlc291cmNlIiksZS5lbnRlcigicmVzb3VyY2VNYXJrZXIiKSxlLmNvbnN1bWUodCksZS5leGl0KCJyZXNvdXJjZU1hcmtlciIpLHJ9O2Z1bmN0aW9uIHIodCl7cmV0dXJuIE9iamVjdChxLmkpKHQpP3ZlKGUsaSkodCk6aSh0KX1mdW5jdGlvbiBpKHQpe3JldHVybiA0MT09PXQ/Yyh0KTpnZShlLGEsbywicmVzb3VyY2VEZXN0aW5hdGlvbiIsInJlc291cmNlRGVzdGluYXRpb25MaXRlcmFsIiwicmVzb3VyY2VEZXN0aW5hdGlvbkxpdGVyYWxNYXJrZXIiLCJyZXNvdXJjZURlc3RpbmF0aW9uUmF3IiwicmVzb3VyY2VEZXN0aW5hdGlvblN0cmluZyIsMzIpKHQpfWZ1bmN0aW9uIGEodCl7cmV0dXJuIE9iamVjdChxLmkpKHQpP3ZlKGUscykodCk6Yyh0KX1mdW5jdGlvbiBvKGUpe3JldHVybiBuKGUpfWZ1bmN0aW9uIHModCl7cmV0dXJuIDM0PT09dHx8Mzk9PT10fHw0MD09PXQ/eWUoZSxsLG4sInJlc291cmNlVGl0bGUiLCJyZXNvdXJjZVRpdGxlTWFya2VyIiwicmVzb3VyY2VUaXRsZVN0cmluZyIpKHQpOmModCl9ZnVuY3Rpb24gbCh0KXtyZXR1cm4gT2JqZWN0KHEuaSkodCk/dmUoZSxjKSh0KTpjKHQpfWZ1bmN0aW9uIGMocil7cmV0dXJuIDQxPT09cj8oZS5lbnRlcigicmVzb3VyY2VNYXJrZXIiKSxlLmNvbnN1bWUociksZS5leGl0KCJyZXNvdXJjZU1hcmtlciIpLGUuZXhpdCgicmVzb3VyY2UiKSx0KTpuKHIpfX19LGplPXt0b2tlbml6ZTpmdW5jdGlvbihlLHQsbil7Y29uc3Qgcj10aGlzO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gYmUuY2FsbChyLGUsaSxhLCJyZWZlcmVuY2UiLCJyZWZlcmVuY2VNYXJrZXIiLCJyZWZlcmVuY2VTdHJpbmciKSh0KX07ZnVuY3Rpb24gaShlKXtyZXR1cm4gci5wYXJzZXIuZGVmaW5lZC5pbmNsdWRlcyhPYmplY3QoRWUuYSkoci5zbGljZVNlcmlhbGl6ZShyLmV2ZW50c1tyLmV2ZW50cy5sZW5ndGgtMV1bMV0pLnNsaWNlKDEsLTEpKSk/dChlKTpuKGUpfWZ1bmN0aW9uIGEoZSl7cmV0dXJuIG4oZSl9fX0sSGU9e3Rva2VuaXplOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUuZW50ZXIoInJlZmVyZW5jZSIpLGUuZW50ZXIoInJlZmVyZW5jZU1hcmtlciIpLGUuY29uc3VtZSh0KSxlLmV4aXQoInJlZmVyZW5jZU1hcmtlciIpLHJ9O2Z1bmN0aW9uIHIocil7cmV0dXJuIDkzPT09cj8oZS5lbnRlcigicmVmZXJlbmNlTWFya2VyIiksZS5jb25zdW1lKHIpLGUuZXhpdCgicmVmZXJlbmNlTWFya2VyIiksZS5leGl0KCJyZWZlcmVuY2UiKSx0KTpuKHIpfX19O2NvbnN0IHplPXtuYW1lOiJsYWJlbFN0YXJ0SW1hZ2UiLHRva2VuaXplOmZ1bmN0aW9uKGUsdCxuKXtjb25zdCByPXRoaXM7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlLmVudGVyKCJsYWJlbEltYWdlIiksZS5lbnRlcigibGFiZWxJbWFnZU1hcmtlciIpLGUuY29uc3VtZSh0KSxlLmV4aXQoImxhYmVsSW1hZ2VNYXJrZXIiKSxpfTtmdW5jdGlvbiBpKHQpe3JldHVybiA5MT09PXQ/KGUuZW50ZXIoImxhYmVsTWFya2VyIiksZS5jb25zdW1lKHQpLGUuZXhpdCgibGFiZWxNYXJrZXIiKSxlLmV4aXQoImxhYmVsSW1hZ2UiKSxhKTpuKHQpfWZ1bmN0aW9uIGEoZSl7cmV0dXJuIDk0PT09ZSYmIl9oaWRkZW5Gb290bm90ZVN1cHBvcnQiaW4gci5wYXJzZXIuY29uc3RydWN0cz9uKGUpOnQoZSl9fSxyZXNvbHZlQWxsOlVlLnJlc29sdmVBbGx9O3ZhciBHZT1uKDMzKTtjb25zdCAkZT17bmFtZToiYXR0ZW50aW9uIix0b2tlbml6ZTpmdW5jdGlvbihlLHQpe2NvbnN0IG49dGhpcy5wYXJzZXIuY29uc3RydWN0cy5hdHRlbnRpb25NYXJrZXJzLm51bGwscj10aGlzLnByZXZpb3VzLGk9T2JqZWN0KEdlLmEpKHIpO2xldCBhO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gYT10LGUuZW50ZXIoImF0dGVudGlvblNlcXVlbmNlIiksbyh0KX07ZnVuY3Rpb24gbyhzKXtpZihzPT09YSlyZXR1cm4gZS5jb25zdW1lKHMpLG87Y29uc3QgbD1lLmV4aXQoImF0dGVudGlvblNlcXVlbmNlIiksYz1PYmplY3QoR2UuYSkocyksdT0hY3x8Mj09PWMmJml8fG4uaW5jbHVkZXMocyksZD0haXx8Mj09PWkmJmN8fG4uaW5jbHVkZXMocik7cmV0dXJuIGwuX29wZW49Qm9vbGVhbig0Mj09PWE/dTp1JiYoaXx8IWQpKSxsLl9jbG9zZT1Cb29sZWFuKDQyPT09YT9kOmQmJihjfHwhdSkpLHQocyl9fSxyZXNvbHZlQWxsOmZ1bmN0aW9uKGUsdCl7bGV0IG4scixpLGEsbyxzLGwsYyx1PS0xO2Zvcig7Kyt1PGUubGVuZ3RoOylpZigiZW50ZXIiPT09ZVt1XVswXSYmImF0dGVudGlvblNlcXVlbmNlIj09PWVbdV1bMV0udHlwZSYmZVt1XVsxXS5fY2xvc2UpZm9yKG49dTtuLS07KWlmKCJleGl0Ij09PWVbbl1bMF0mJiJhdHRlbnRpb25TZXF1ZW5jZSI9PT1lW25dWzFdLnR5cGUmJmVbbl1bMV0uX29wZW4mJnQuc2xpY2VTZXJpYWxpemUoZVtuXVsxXSkuY2hhckNvZGVBdCgwKT09PXQuc2xpY2VTZXJpYWxpemUoZVt1XVsxXSkuY2hhckNvZGVBdCgwKSl7aWYoKGVbbl1bMV0uX2Nsb3NlfHxlW3VdWzFdLl9vcGVuKSYmKGVbdV1bMV0uZW5kLm9mZnNldC1lW3VdWzFdLnN0YXJ0Lm9mZnNldCklMyYmISgoZVtuXVsxXS5lbmQub2Zmc2V0LWVbbl1bMV0uc3RhcnQub2Zmc2V0K2VbdV1bMV0uZW5kLm9mZnNldC1lW3VdWzFdLnN0YXJ0Lm9mZnNldCklMykpY29udGludWU7cz1lW25dWzFdLmVuZC5vZmZzZXQtZVtuXVsxXS5zdGFydC5vZmZzZXQ+MSYmZVt1XVsxXS5lbmQub2Zmc2V0LWVbdV1bMV0uc3RhcnQub2Zmc2V0PjE/MjoxO2NvbnN0IGQ9T2JqZWN0LmFzc2lnbih7fSxlW25dWzFdLmVuZCkscD1PYmplY3QuYXNzaWduKHt9LGVbdV1bMV0uc3RhcnQpO1ZlKGQsLXMpLFZlKHAscyksYT17dHlwZTpzPjE/InN0cm9uZ1NlcXVlbmNlIjoiZW1waGFzaXNTZXF1ZW5jZSIsc3RhcnQ6ZCxlbmQ6T2JqZWN0LmFzc2lnbih7fSxlW25dWzFdLmVuZCl9LG89e3R5cGU6cz4xPyJzdHJvbmdTZXF1ZW5jZSI6ImVtcGhhc2lzU2VxdWVuY2UiLHN0YXJ0Ok9iamVjdC5hc3NpZ24oe30sZVt1XVsxXS5zdGFydCksZW5kOnB9LGk9e3R5cGU6cz4xPyJzdHJvbmdUZXh0IjoiZW1waGFzaXNUZXh0IixzdGFydDpPYmplY3QuYXNzaWduKHt9LGVbbl1bMV0uZW5kKSxlbmQ6T2JqZWN0LmFzc2lnbih7fSxlW3VdWzFdLnN0YXJ0KX0scj17dHlwZTpzPjE/InN0cm9uZyI6ImVtcGhhc2lzIixzdGFydDpPYmplY3QuYXNzaWduKHt9LGEuc3RhcnQpLGVuZDpPYmplY3QuYXNzaWduKHt9LG8uZW5kKX0sZVtuXVsxXS5lbmQ9T2JqZWN0LmFzc2lnbih7fSxhLnN0YXJ0KSxlW3VdWzFdLnN0YXJ0PU9iamVjdC5hc3NpZ24oe30sby5lbmQpLGw9W10sZVtuXVsxXS5lbmQub2Zmc2V0LWVbbl1bMV0uc3RhcnQub2Zmc2V0JiYobD1PYmplY3QoSy5hKShsLFtbImVudGVyIixlW25dWzFdLHRdLFsiZXhpdCIsZVtuXVsxXSx0XV0pKSxsPU9iamVjdChLLmEpKGwsW1siZW50ZXIiLHIsdF0sWyJlbnRlciIsYSx0XSxbImV4aXQiLGEsdF0sWyJlbnRlciIsaSx0XV0pLGw9T2JqZWN0KEsuYSkobCxPYmplY3QoY2UuYSkodC5wYXJzZXIuY29uc3RydWN0cy5pbnNpZGVTcGFuLm51bGwsZS5zbGljZShuKzEsdSksdCkpLGw9T2JqZWN0KEsuYSkobCxbWyJleGl0IixpLHRdLFsiZW50ZXIiLG8sdF0sWyJleGl0IixvLHRdLFsiZXhpdCIscix0XV0pLGVbdV1bMV0uZW5kLm9mZnNldC1lW3VdWzFdLnN0YXJ0Lm9mZnNldD8oYz0yLGw9T2JqZWN0KEsuYSkobCxbWyJlbnRlciIsZVt1XVsxXSx0XSxbImV4aXQiLGVbdV1bMV0sdF1dKSk6Yz0wLE9iamVjdChLLmIpKGUsbi0xLHUtbiszLGwpLHU9bitsLmxlbmd0aC1jLTI7YnJlYWt9dT0tMTtmb3IoOysrdTxlLmxlbmd0aDspImF0dGVudGlvblNlcXVlbmNlIj09PWVbdV1bMV0udHlwZSYmKGVbdV1bMV0udHlwZT0iZGF0YSIpO3JldHVybiBlfX07ZnVuY3Rpb24gVmUoZSx0KXtlLmNvbHVtbis9dCxlLm9mZnNldCs9dCxlLl9idWZmZXJJbmRleCs9dH1jb25zdCBxZT17NDI6cGUsNDM6cGUsNDU6cGUsNDg6cGUsNDk6cGUsNTA6cGUsNTE6cGUsNTI6cGUsNTM6cGUsNTQ6cGUsNTU6cGUsNTY6cGUsNTc6cGUsNjI6bWV9LFdlPXs5MTp3ZX0sS2U9e1stMl06X2UsWy0xXTpfZSwzMjpfZX0sWWU9ezM1OkFlLDQyOmRlLDQ1OltrZSxkZV0sNjA6SWUsNjE6a2UsOTU6ZGUsOTY6TWUsMTI2Ok1lfSxYZT17Mzg6RGUsOTI6UGV9LFplPXtbLTVdOkZlLFstNF06RmUsWy0zXTpGZSwzMzp6ZSwzODpEZSw0MjokZSw2MDpbe25hbWU6ImF1dG9saW5rIix0b2tlbml6ZTpmdW5jdGlvbihlLHQsbil7bGV0IHI9MDtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUuZW50ZXIoImF1dG9saW5rIiksZS5lbnRlcigiYXV0b2xpbmtNYXJrZXIiKSxlLmNvbnN1bWUodCksZS5leGl0KCJhdXRvbGlua01hcmtlciIpLGUuZW50ZXIoImF1dG9saW5rUHJvdG9jb2wiKSxpfTtmdW5jdGlvbiBpKHQpe3JldHVybiBPYmplY3QocS5hKSh0KT8oZS5jb25zdW1lKHQpLGEpOmwodCl9ZnVuY3Rpb24gYShlKXtyZXR1cm4gNDM9PT1lfHw0NT09PWV8fDQ2PT09ZXx8T2JqZWN0KHEuYikoZSk/KHI9MSxvKGUpKTpsKGUpfWZ1bmN0aW9uIG8odCl7cmV0dXJuIDU4PT09dD8oZS5jb25zdW1lKHQpLHI9MCxzKTooNDM9PT10fHw0NT09PXR8fDQ2PT09dHx8T2JqZWN0KHEuYikodCkpJiZyKys8MzI/KGUuY29uc3VtZSh0KSxvKToocj0wLGwodCkpfWZ1bmN0aW9uIHMocil7cmV0dXJuIDYyPT09cj8oZS5leGl0KCJhdXRvbGlua1Byb3RvY29sIiksZS5lbnRlcigiYXV0b2xpbmtNYXJrZXIiKSxlLmNvbnN1bWUociksZS5leGl0KCJhdXRvbGlua01hcmtlciIpLGUuZXhpdCgiYXV0b2xpbmsiKSx0KTpudWxsPT09cnx8MzI9PT1yfHw2MD09PXJ8fE9iamVjdChxLmQpKHIpP24ocik6KGUuY29uc3VtZShyKSxzKX1mdW5jdGlvbiBsKHQpe3JldHVybiA2ND09PXQ/KGUuY29uc3VtZSh0KSxjKTpPYmplY3QocS5jKSh0KT8oZS5jb25zdW1lKHQpLGwpOm4odCl9ZnVuY3Rpb24gYyhlKXtyZXR1cm4gT2JqZWN0KHEuYikoZSk/dShlKTpuKGUpfWZ1bmN0aW9uIHUobil7cmV0dXJuIDQ2PT09bj8oZS5jb25zdW1lKG4pLHI9MCxjKTo2Mj09PW4/KGUuZXhpdCgiYXV0b2xpbmtQcm90b2NvbCIpLnR5cGU9ImF1dG9saW5rRW1haWwiLGUuZW50ZXIoImF1dG9saW5rTWFya2VyIiksZS5jb25zdW1lKG4pLGUuZXhpdCgiYXV0b2xpbmtNYXJrZXIiKSxlLmV4aXQoImF1dG9saW5rIiksdCk6ZChuKX1mdW5jdGlvbiBkKHQpe2lmKCg0NT09PXR8fE9iamVjdChxLmIpKHQpKSYmcisrPDYzKXtjb25zdCBuPTQ1PT09dD9kOnU7cmV0dXJuIGUuY29uc3VtZSh0KSxufXJldHVybiBuKHQpfX19LHtuYW1lOiJodG1sVGV4dCIsdG9rZW5pemU6ZnVuY3Rpb24oZSx0LG4pe2NvbnN0IHI9dGhpcztsZXQgaSxhLG87cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlLmVudGVyKCJodG1sVGV4dCIpLGUuZW50ZXIoImh0bWxUZXh0RGF0YSIpLGUuY29uc3VtZSh0KSxzfTtmdW5jdGlvbiBzKHQpe3JldHVybiAzMz09PXQ/KGUuY29uc3VtZSh0KSxsKTo0Nz09PXQ/KGUuY29uc3VtZSh0KSxFKTo2Mz09PXQ/KGUuY29uc3VtZSh0KSx5KTpPYmplY3QocS5hKSh0KT8oZS5jb25zdW1lKHQpLF8pOm4odCl9ZnVuY3Rpb24gbCh0KXtyZXR1cm4gNDU9PT10PyhlLmNvbnN1bWUodCksYyk6OTE9PT10PyhlLmNvbnN1bWUodCksYT0wLGYpOk9iamVjdChxLmEpKHQpPyhlLmNvbnN1bWUodCksYik6bih0KX1mdW5jdGlvbiBjKHQpe3JldHVybiA0NT09PXQ/KGUuY29uc3VtZSh0KSxwKTpuKHQpfWZ1bmN0aW9uIHUodCl7cmV0dXJuIG51bGw9PT10P24odCk6NDU9PT10PyhlLmNvbnN1bWUodCksZCk6T2JqZWN0KHEuaCkodCk/KG89dSxOKHQpKTooZS5jb25zdW1lKHQpLHUpfWZ1bmN0aW9uIGQodCl7cmV0dXJuIDQ1PT09dD8oZS5jb25zdW1lKHQpLHApOnUodCl9ZnVuY3Rpb24gcChlKXtyZXR1cm4gNjI9PT1lP08oZSk6NDU9PT1lP2QoZSk6dShlKX1mdW5jdGlvbiBmKHQpe3JldHVybiB0PT09IkNEQVRBWyIuY2hhckNvZGVBdChhKyspPyhlLmNvbnN1bWUodCksYT09PSJDREFUQVsiLmxlbmd0aD9oOmYpOm4odCl9ZnVuY3Rpb24gaCh0KXtyZXR1cm4gbnVsbD09PXQ/bih0KTo5Mz09PXQ/KGUuY29uc3VtZSh0KSxtKTpPYmplY3QocS5oKSh0KT8obz1oLE4odCkpOihlLmNvbnN1bWUodCksaCl9ZnVuY3Rpb24gbSh0KXtyZXR1cm4gOTM9PT10PyhlLmNvbnN1bWUodCksZyk6aCh0KX1mdW5jdGlvbiBnKHQpe3JldHVybiA2Mj09PXQ/Tyh0KTo5Mz09PXQ/KGUuY29uc3VtZSh0KSxnKTpoKHQpfWZ1bmN0aW9uIGIodCl7cmV0dXJuIG51bGw9PT10fHw2Mj09PXQ/Tyh0KTpPYmplY3QocS5oKSh0KT8obz1iLE4odCkpOihlLmNvbnN1bWUodCksYil9ZnVuY3Rpb24geSh0KXtyZXR1cm4gbnVsbD09PXQ/bih0KTo2Mz09PXQ/KGUuY29uc3VtZSh0KSx2KTpPYmplY3QocS5oKSh0KT8obz15LE4odCkpOihlLmNvbnN1bWUodCkseSl9ZnVuY3Rpb24gdihlKXtyZXR1cm4gNjI9PT1lP08oZSk6eShlKX1mdW5jdGlvbiBFKHQpe3JldHVybiBPYmplY3QocS5hKSh0KT8oZS5jb25zdW1lKHQpLHcpOm4odCl9ZnVuY3Rpb24gdyh0KXtyZXR1cm4gNDU9PT10fHxPYmplY3QocS5iKSh0KT8oZS5jb25zdW1lKHQpLHcpOlModCl9ZnVuY3Rpb24gUyh0KXtyZXR1cm4gT2JqZWN0KHEuaCkodCk/KG89UyxOKHQpKTpPYmplY3QocS5qKSh0KT8oZS5jb25zdW1lKHQpLFMpOk8odCl9ZnVuY3Rpb24gXyh0KXtyZXR1cm4gNDU9PT10fHxPYmplY3QocS5iKSh0KT8oZS5jb25zdW1lKHQpLF8pOjQ3PT09dHx8NjI9PT10fHxPYmplY3QocS5pKSh0KT9UKHQpOm4odCl9ZnVuY3Rpb24gVCh0KXtyZXR1cm4gNDc9PT10PyhlLmNvbnN1bWUodCksTyk6NTg9PT10fHw5NT09PXR8fE9iamVjdChxLmEpKHQpPyhlLmNvbnN1bWUodCksQSk6T2JqZWN0KHEuaCkodCk/KG89VCxOKHQpKTpPYmplY3QocS5qKSh0KT8oZS5jb25zdW1lKHQpLFQpOk8odCl9ZnVuY3Rpb24gQSh0KXtyZXR1cm4gNDU9PT10fHw0Nj09PXR8fDU4PT09dHx8OTU9PT10fHxPYmplY3QocS5iKSh0KT8oZS5jb25zdW1lKHQpLEEpOmsodCl9ZnVuY3Rpb24gayh0KXtyZXR1cm4gNjE9PT10PyhlLmNvbnN1bWUodCkseCk6T2JqZWN0KHEuaCkodCk/KG89ayxOKHQpKTpPYmplY3QocS5qKSh0KT8oZS5jb25zdW1lKHQpLGspOlQodCl9ZnVuY3Rpb24geCh0KXtyZXR1cm4gbnVsbD09PXR8fDYwPT09dHx8NjE9PT10fHw2Mj09PXR8fDk2PT09dD9uKHQpOjM0PT09dHx8Mzk9PT10PyhlLmNvbnN1bWUodCksaT10LEMpOk9iamVjdChxLmgpKHQpPyhvPXgsTih0KSk6T2JqZWN0KHEuaikodCk/KGUuY29uc3VtZSh0KSx4KTooZS5jb25zdW1lKHQpLEkpfWZ1bmN0aW9uIEModCl7cmV0dXJuIHQ9PT1pPyhlLmNvbnN1bWUodCksaT12b2lkIDAsUik6bnVsbD09PXQ/bih0KTpPYmplY3QocS5oKSh0KT8obz1DLE4odCkpOihlLmNvbnN1bWUodCksQyl9ZnVuY3Rpb24gSSh0KXtyZXR1cm4gbnVsbD09PXR8fDM0PT09dHx8Mzk9PT10fHw2MD09PXR8fDYxPT09dHx8OTY9PT10P24odCk6NDc9PT10fHw2Mj09PXR8fE9iamVjdChxLmkpKHQpP1QodCk6KGUuY29uc3VtZSh0KSxJKX1mdW5jdGlvbiBSKGUpe3JldHVybiA0Nz09PWV8fDYyPT09ZXx8T2JqZWN0KHEuaSkoZSk/VChlKTpuKGUpfWZ1bmN0aW9uIE8ocil7cmV0dXJuIDYyPT09cj8oZS5jb25zdW1lKHIpLGUuZXhpdCgiaHRtbFRleHREYXRhIiksZS5leGl0KCJodG1sVGV4dCIpLHQpOm4ocil9ZnVuY3Rpb24gTih0KXtyZXR1cm4gZS5leGl0KCJodG1sVGV4dERhdGEiKSxlLmVudGVyKCJsaW5lRW5kaW5nIiksZS5jb25zdW1lKHQpLGUuZXhpdCgibGluZUVuZGluZyIpLE19ZnVuY3Rpb24gTSh0KXtyZXR1cm4gT2JqZWN0KHEuaikodCk/T2JqZWN0KFYuYSkoZSxMLCJsaW5lUHJlZml4IixyLnBhcnNlci5jb25zdHJ1Y3RzLmRpc2FibGUubnVsbC5pbmNsdWRlcygiY29kZUluZGVudGVkIik/dm9pZCAwOjQpKHQpOkwodCl9ZnVuY3Rpb24gTCh0KXtyZXR1cm4gZS5lbnRlcigiaHRtbFRleHREYXRhIiksbyh0KX19fV0sOTE6e25hbWU6ImxhYmVsU3RhcnRMaW5rIix0b2tlbml6ZTpmdW5jdGlvbihlLHQsbil7Y29uc3Qgcj10aGlzO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZS5lbnRlcigibGFiZWxMaW5rIiksZS5lbnRlcigibGFiZWxNYXJrZXIiKSxlLmNvbnN1bWUodCksZS5leGl0KCJsYWJlbE1hcmtlciIpLGUuZXhpdCgibGFiZWxMaW5rIiksaX07ZnVuY3Rpb24gaShlKXtyZXR1cm4gOTQ9PT1lJiYiX2hpZGRlbkZvb3Rub3RlU3VwcG9ydCJpbiByLnBhcnNlci5jb25zdHJ1Y3RzP24oZSk6dChlKX19LHJlc29sdmVBbGw6VWUucmVzb2x2ZUFsbH0sOTI6W3tuYW1lOiJoYXJkQnJlYWtFc2NhcGUiLHRva2VuaXplOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUuZW50ZXIoImhhcmRCcmVha0VzY2FwZSIpLGUuY29uc3VtZSh0KSxyfTtmdW5jdGlvbiByKHIpe3JldHVybiBPYmplY3QocS5oKShyKT8oZS5leGl0KCJoYXJkQnJlYWtFc2NhcGUiKSx0KHIpKTpuKHIpfX19LFBlXSw5MzpVZSw5NTokZSw5Njp7bmFtZToiY29kZVRleHQiLHRva2VuaXplOmZ1bmN0aW9uKGUsdCxuKXtsZXQgcixpLGE9MDtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUuZW50ZXIoImNvZGVUZXh0IiksZS5lbnRlcigiY29kZVRleHRTZXF1ZW5jZSIpLG8odCl9O2Z1bmN0aW9uIG8odCl7cmV0dXJuIDk2PT09dD8oZS5jb25zdW1lKHQpLGErKyxvKTooZS5leGl0KCJjb2RlVGV4dFNlcXVlbmNlIikscyh0KSl9ZnVuY3Rpb24gcyh0KXtyZXR1cm4gbnVsbD09PXQ/bih0KTozMj09PXQ/KGUuZW50ZXIoInNwYWNlIiksZS5jb25zdW1lKHQpLGUuZXhpdCgic3BhY2UiKSxzKTo5Nj09PXQ/KGk9ZS5lbnRlcigiY29kZVRleHRTZXF1ZW5jZSIpLHI9MCxjKHQpKTpPYmplY3QocS5oKSh0KT8oZS5lbnRlcigibGluZUVuZGluZyIpLGUuY29uc3VtZSh0KSxlLmV4aXQoImxpbmVFbmRpbmciKSxzKTooZS5lbnRlcigiY29kZVRleHREYXRhIiksbCh0KSl9ZnVuY3Rpb24gbCh0KXtyZXR1cm4gbnVsbD09PXR8fDMyPT09dHx8OTY9PT10fHxPYmplY3QocS5oKSh0KT8oZS5leGl0KCJjb2RlVGV4dERhdGEiKSxzKHQpKTooZS5jb25zdW1lKHQpLGwpfWZ1bmN0aW9uIGMobil7cmV0dXJuIDk2PT09bj8oZS5jb25zdW1lKG4pLHIrKyxjKTpyPT09YT8oZS5leGl0KCJjb2RlVGV4dFNlcXVlbmNlIiksZS5leGl0KCJjb2RlVGV4dCIpLHQobikpOihpLnR5cGU9ImNvZGVUZXh0RGF0YSIsbChuKSl9fSxyZXNvbHZlOmZ1bmN0aW9uKGUpe2xldCB0LG4scj1lLmxlbmd0aC00LGk9MztpZigoImxpbmVFbmRpbmciPT09ZVtpXVsxXS50eXBlfHwic3BhY2UiPT09ZVtpXVsxXS50eXBlKSYmKCJsaW5lRW5kaW5nIj09PWVbcl1bMV0udHlwZXx8InNwYWNlIj09PWVbcl1bMV0udHlwZSkpZm9yKHQ9aTsrK3Q8cjspaWYoImNvZGVUZXh0RGF0YSI9PT1lW3RdWzFdLnR5cGUpe2VbaV1bMV0udHlwZT0iY29kZVRleHRQYWRkaW5nIixlW3JdWzFdLnR5cGU9ImNvZGVUZXh0UGFkZGluZyIsaSs9MixyLT0yO2JyZWFrfXQ9aS0xLHIrKztmb3IoOysrdDw9cjspdm9pZCAwPT09bj90IT09ciYmImxpbmVFbmRpbmciIT09ZVt0XVsxXS50eXBlJiYobj10KTp0IT09ciYmImxpbmVFbmRpbmciIT09ZVt0XVsxXS50eXBlfHwoZVtuXVsxXS50eXBlPSJjb2RlVGV4dERhdGEiLHQhPT1uKzImJihlW25dWzFdLmVuZD1lW3QtMV1bMV0uZW5kLGUuc3BsaWNlKG4rMix0LW4tMiksci09dC1uLTIsdD1uKzIpLG49dm9pZCAwKTtyZXR1cm4gZX0scHJldmlvdXM6ZnVuY3Rpb24oZSl7cmV0dXJuIDk2IT09ZXx8ImNoYXJhY3RlckVzY2FwZSI9PT10aGlzLmV2ZW50c1t0aGlzLmV2ZW50cy5sZW5ndGgtMV1bMV0udHlwZX19fSxRZT17bnVsbDpbJGUscmVdfSxKZT17bnVsbDpbNDIsOTVdfSxldD17bnVsbDpbXX07Y29uc3QgdHQ9L1tcMFx0XG5ccl0vZzt2YXIgbnQ9big1NikscnQ9big1NSk7Y29uc3QgaXQ9e30uaGFzT3duUHJvcGVydHksYXQ9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiJzdHJpbmciIT09dHlwZW9mIHQmJihuPXQsdD12b2lkIDApLGZ1bmN0aW9uKGUpe2NvbnN0IHQ9e3RyYW5zZm9ybXM6W10sY2FuQ29udGFpbkVvbHM6WyJlbXBoYXNpcyIsImZyYWdtZW50IiwiaGVhZGluZyIsInBhcmFncmFwaCIsInN0cm9uZyJdLGVudGVyOnthdXRvbGluazpvKHcpLGF1dG9saW5rUHJvdG9jb2w6ZixhdXRvbGlua0VtYWlsOmYsYXR4SGVhZGluZzpvKHkpLGJsb2NrUXVvdGU6bygoZnVuY3Rpb24oKXtyZXR1cm57dHlwZToiYmxvY2txdW90ZSIsY2hpbGRyZW46W119fSkpLGNoYXJhY3RlckVzY2FwZTpmLGNoYXJhY3RlclJlZmVyZW5jZTpmLGNvZGVGZW5jZWQ6byhiKSxjb2RlRmVuY2VkRmVuY2VJbmZvOnMsY29kZUZlbmNlZEZlbmNlTWV0YTpzLGNvZGVJbmRlbnRlZDpvKGIscyksY29kZVRleHQ6bygoZnVuY3Rpb24oKXtyZXR1cm57dHlwZToiaW5saW5lQ29kZSIsdmFsdWU6IiJ9fSkscyksY29kZVRleHREYXRhOmYsZGF0YTpmLGNvZGVGbG93VmFsdWU6ZixkZWZpbml0aW9uOm8oKGZ1bmN0aW9uKCl7cmV0dXJue3R5cGU6ImRlZmluaXRpb24iLGlkZW50aWZpZXI6IiIsbGFiZWw6bnVsbCx0aXRsZTpudWxsLHVybDoiIn19KSksZGVmaW5pdGlvbkRlc3RpbmF0aW9uU3RyaW5nOnMsZGVmaW5pdGlvbkxhYmVsU3RyaW5nOnMsZGVmaW5pdGlvblRpdGxlU3RyaW5nOnMsZW1waGFzaXM6bygoZnVuY3Rpb24oKXtyZXR1cm57dHlwZToiZW1waGFzaXMiLGNoaWxkcmVuOltdfX0pKSxoYXJkQnJlYWtFc2NhcGU6byh2KSxoYXJkQnJlYWtUcmFpbGluZzpvKHYpLGh0bWxGbG93Om8oRSxzKSxodG1sRmxvd0RhdGE6ZixodG1sVGV4dDpvKEUscyksaHRtbFRleHREYXRhOmYsaW1hZ2U6bygoZnVuY3Rpb24oKXtyZXR1cm57dHlwZToiaW1hZ2UiLHRpdGxlOm51bGwsdXJsOiIiLGFsdDpudWxsfX0pKSxsYWJlbDpzLGxpbms6byh3KSxsaXN0SXRlbTpvKChmdW5jdGlvbihlKXtyZXR1cm57dHlwZToibGlzdEl0ZW0iLHNwcmVhZDplLl9zcHJlYWQsY2hlY2tlZDpudWxsLGNoaWxkcmVuOltdfX0pKSxsaXN0SXRlbVZhbHVlOmZ1bmN0aW9uKGUpe2lmKGEoImV4cGVjdGluZ0ZpcnN0TGlzdEl0ZW1WYWx1ZSIpKXt0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoLTJdLnN0YXJ0PU51bWJlci5wYXJzZUludCh0aGlzLnNsaWNlU2VyaWFsaXplKGUpLDEwKSxpKCJleHBlY3RpbmdGaXJzdExpc3RJdGVtVmFsdWUiKX19LGxpc3RPcmRlcmVkOm8oUywoZnVuY3Rpb24oKXtpKCJleHBlY3RpbmdGaXJzdExpc3RJdGVtVmFsdWUiLCEwKX0pKSxsaXN0VW5vcmRlcmVkOm8oUykscGFyYWdyYXBoOm8oKGZ1bmN0aW9uKCl7cmV0dXJue3R5cGU6InBhcmFncmFwaCIsY2hpbGRyZW46W119fSkpLHJlZmVyZW5jZTpmdW5jdGlvbigpe2koInJlZmVyZW5jZVR5cGUiLCJjb2xsYXBzZWQiKX0scmVmZXJlbmNlU3RyaW5nOnMscmVzb3VyY2VEZXN0aW5hdGlvblN0cmluZzpzLHJlc291cmNlVGl0bGVTdHJpbmc6cyxzZXRleHRIZWFkaW5nOm8oeSksc3Ryb25nOm8oKGZ1bmN0aW9uKCl7cmV0dXJue3R5cGU6InN0cm9uZyIsY2hpbGRyZW46W119fSkpLHRoZW1hdGljQnJlYWs6bygoZnVuY3Rpb24oKXtyZXR1cm57dHlwZToidGhlbWF0aWNCcmVhayJ9fSkpfSxleGl0OnthdHhIZWFkaW5nOnUoKSxhdHhIZWFkaW5nU2VxdWVuY2U6ZnVuY3Rpb24oZSl7Y29uc3QgdD10aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoLTFdO2lmKCF0LmRlcHRoKXtjb25zdCBuPXRoaXMuc2xpY2VTZXJpYWxpemUoZSkubGVuZ3RoO3QuZGVwdGg9bn19LGF1dG9saW5rOnUoKSxhdXRvbGlua0VtYWlsOmZ1bmN0aW9uKGUpe2guY2FsbCh0aGlzLGUpO3RoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGgtMV0udXJsPSJtYWlsdG86Iit0aGlzLnNsaWNlU2VyaWFsaXplKGUpfSxhdXRvbGlua1Byb3RvY29sOmZ1bmN0aW9uKGUpe2guY2FsbCh0aGlzLGUpO3RoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGgtMV0udXJsPXRoaXMuc2xpY2VTZXJpYWxpemUoZSl9LGJsb2NrUXVvdGU6dSgpLGNoYXJhY3RlckVzY2FwZVZhbHVlOmgsY2hhcmFjdGVyUmVmZXJlbmNlTWFya2VySGV4YWRlY2ltYWw6ZyxjaGFyYWN0ZXJSZWZlcmVuY2VNYXJrZXJOdW1lcmljOmcsY2hhcmFjdGVyUmVmZXJlbmNlVmFsdWU6ZnVuY3Rpb24oZSl7Y29uc3QgdD10aGlzLnNsaWNlU2VyaWFsaXplKGUpLG49YSgiY2hhcmFjdGVyUmVmZXJlbmNlVHlwZSIpO2xldCByO2lmKG4pcj1PYmplY3QobnQuYSkodCwiY2hhcmFjdGVyUmVmZXJlbmNlTWFya2VyTnVtZXJpYyI9PT1uPzEwOjE2KSxpKCJjaGFyYWN0ZXJSZWZlcmVuY2VUeXBlIik7ZWxzZXtjb25zdCBlPU9iamVjdChMZS5hKSh0KTtyPWV9Y29uc3Qgbz10aGlzLnN0YWNrLnBvcCgpO28udmFsdWUrPXIsby5wb3NpdGlvbi5lbmQ9b3QoZS5lbmQpfSxjb2RlRmVuY2VkOnUoKGZ1bmN0aW9uKCl7Y29uc3QgZT10aGlzLnJlc3VtZSgpO3RoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGgtMV0udmFsdWU9ZS5yZXBsYWNlKC9eKFxyP1xufFxyKXwoXHI/XG58XHIpJC9nLCIiKSxpKCJmbG93Q29kZUluc2lkZSIpfSkpLGNvZGVGZW5jZWRGZW5jZTpmdW5jdGlvbigpe2lmKGEoImZsb3dDb2RlSW5zaWRlIikpcmV0dXJuO3RoaXMuYnVmZmVyKCksaSgiZmxvd0NvZGVJbnNpZGUiLCEwKX0sY29kZUZlbmNlZEZlbmNlSW5mbzpmdW5jdGlvbigpe2NvbnN0IGU9dGhpcy5yZXN1bWUoKTt0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoLTFdLmxhbmc9ZX0sY29kZUZlbmNlZEZlbmNlTWV0YTpmdW5jdGlvbigpe2NvbnN0IGU9dGhpcy5yZXN1bWUoKTt0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoLTFdLm1ldGE9ZX0sY29kZUZsb3dWYWx1ZTpoLGNvZGVJbmRlbnRlZDp1KChmdW5jdGlvbigpe2NvbnN0IGU9dGhpcy5yZXN1bWUoKTt0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoLTFdLnZhbHVlPWUucmVwbGFjZSgvKFxyP1xufFxyKSQvZywiIil9KSksY29kZVRleHQ6dSgoZnVuY3Rpb24oKXtjb25zdCBlPXRoaXMucmVzdW1lKCk7dGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aC0xXS52YWx1ZT1lfSkpLGNvZGVUZXh0RGF0YTpoLGRhdGE6aCxkZWZpbml0aW9uOnUoKSxkZWZpbml0aW9uRGVzdGluYXRpb25TdHJpbmc6ZnVuY3Rpb24oKXtjb25zdCBlPXRoaXMucmVzdW1lKCk7dGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aC0xXS51cmw9ZX0sZGVmaW5pdGlvbkxhYmVsU3RyaW5nOmZ1bmN0aW9uKGUpe2NvbnN0IHQ9dGhpcy5yZXN1bWUoKSxuPXRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGgtMV07bi5sYWJlbD10LG4uaWRlbnRpZmllcj1PYmplY3QoRWUuYSkodGhpcy5zbGljZVNlcmlhbGl6ZShlKSkudG9Mb3dlckNhc2UoKX0sZGVmaW5pdGlvblRpdGxlU3RyaW5nOmZ1bmN0aW9uKCl7Y29uc3QgZT10aGlzLnJlc3VtZSgpO3RoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGgtMV0udGl0bGU9ZX0sZW1waGFzaXM6dSgpLGhhcmRCcmVha0VzY2FwZTp1KG0pLGhhcmRCcmVha1RyYWlsaW5nOnUobSksaHRtbEZsb3c6dSgoZnVuY3Rpb24oKXtjb25zdCBlPXRoaXMucmVzdW1lKCk7dGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aC0xXS52YWx1ZT1lfSkpLGh0bWxGbG93RGF0YTpoLGh0bWxUZXh0OnUoKGZ1bmN0aW9uKCl7Y29uc3QgZT10aGlzLnJlc3VtZSgpO3RoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGgtMV0udmFsdWU9ZX0pKSxodG1sVGV4dERhdGE6aCxpbWFnZTp1KChmdW5jdGlvbigpe2NvbnN0IGU9dGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aC0xXTtpZihhKCJpblJlZmVyZW5jZSIpKXtjb25zdCB0PWEoInJlZmVyZW5jZVR5cGUiKXx8InNob3J0Y3V0IjtlLnR5cGUrPSJSZWZlcmVuY2UiLGUucmVmZXJlbmNlVHlwZT10LGRlbGV0ZSBlLnVybCxkZWxldGUgZS50aXRsZX1lbHNlIGRlbGV0ZSBlLmlkZW50aWZpZXIsZGVsZXRlIGUubGFiZWw7aSgicmVmZXJlbmNlVHlwZSIpfSkpLGxhYmVsOmZ1bmN0aW9uKCl7Y29uc3QgZT10aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoLTFdLHQ9dGhpcy5yZXN1bWUoKSxuPXRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGgtMV07aWYoaSgiaW5SZWZlcmVuY2UiLCEwKSwibGluayI9PT1uLnR5cGUpe2NvbnN0IHQ9ZS5jaGlsZHJlbjtuLmNoaWxkcmVuPXR9ZWxzZSBuLmFsdD10fSxsYWJlbFRleHQ6ZnVuY3Rpb24oZSl7Y29uc3QgdD10aGlzLnNsaWNlU2VyaWFsaXplKGUpLG49dGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aC0yXTtuLmxhYmVsPU9iamVjdChydC5hKSh0KSxuLmlkZW50aWZpZXI9T2JqZWN0KEVlLmEpKHQpLnRvTG93ZXJDYXNlKCl9LGxpbmVFbmRpbmc6ZnVuY3Rpb24oZSl7Y29uc3Qgbj10aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoLTFdO2lmKGEoImF0SGFyZEJyZWFrIikpe3JldHVybiBuLmNoaWxkcmVuW24uY2hpbGRyZW4ubGVuZ3RoLTFdLnBvc2l0aW9uLmVuZD1vdChlLmVuZCksdm9pZCBpKCJhdEhhcmRCcmVhayIpfSFhKCJzZXRleHRIZWFkaW5nU2x1cnBMaW5lRW5kaW5nIikmJnQuY2FuQ29udGFpbkVvbHMuaW5jbHVkZXMobi50eXBlKSYmKGYuY2FsbCh0aGlzLGUpLGguY2FsbCh0aGlzLGUpKX0sbGluazp1KChmdW5jdGlvbigpe2NvbnN0IGU9dGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aC0xXTtpZihhKCJpblJlZmVyZW5jZSIpKXtjb25zdCB0PWEoInJlZmVyZW5jZVR5cGUiKXx8InNob3J0Y3V0IjtlLnR5cGUrPSJSZWZlcmVuY2UiLGUucmVmZXJlbmNlVHlwZT10LGRlbGV0ZSBlLnVybCxkZWxldGUgZS50aXRsZX1lbHNlIGRlbGV0ZSBlLmlkZW50aWZpZXIsZGVsZXRlIGUubGFiZWw7aSgicmVmZXJlbmNlVHlwZSIpfSkpLGxpc3RJdGVtOnUoKSxsaXN0T3JkZXJlZDp1KCksbGlzdFVub3JkZXJlZDp1KCkscGFyYWdyYXBoOnUoKSxyZWZlcmVuY2VTdHJpbmc6ZnVuY3Rpb24oZSl7Y29uc3QgdD10aGlzLnJlc3VtZSgpLG49dGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aC0xXTtuLmxhYmVsPXQsbi5pZGVudGlmaWVyPU9iamVjdChFZS5hKSh0aGlzLnNsaWNlU2VyaWFsaXplKGUpKS50b0xvd2VyQ2FzZSgpLGkoInJlZmVyZW5jZVR5cGUiLCJmdWxsIil9LHJlc291cmNlRGVzdGluYXRpb25TdHJpbmc6ZnVuY3Rpb24oKXtjb25zdCBlPXRoaXMucmVzdW1lKCk7dGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aC0xXS51cmw9ZX0scmVzb3VyY2VUaXRsZVN0cmluZzpmdW5jdGlvbigpe2NvbnN0IGU9dGhpcy5yZXN1bWUoKTt0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoLTFdLnRpdGxlPWV9LHJlc291cmNlOmZ1bmN0aW9uKCl7aSgiaW5SZWZlcmVuY2UiKX0sc2V0ZXh0SGVhZGluZzp1KChmdW5jdGlvbigpe2koInNldGV4dEhlYWRpbmdTbHVycExpbmVFbmRpbmciKX0pKSxzZXRleHRIZWFkaW5nTGluZVNlcXVlbmNlOmZ1bmN0aW9uKGUpe3RoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGgtMV0uZGVwdGg9NjE9PT10aGlzLnNsaWNlU2VyaWFsaXplKGUpLmNoYXJDb2RlQXQoMCk/MToyfSxzZXRleHRIZWFkaW5nVGV4dDpmdW5jdGlvbigpe2koInNldGV4dEhlYWRpbmdTbHVycExpbmVFbmRpbmciLCEwKX0sc3Ryb25nOnUoKSx0aGVtYXRpY0JyZWFrOnUoKX19OyFmdW5jdGlvbiBlKHQsbil7bGV0IHI9LTE7Zm9yKDsrK3I8bi5sZW5ndGg7KXtjb25zdCBpPW5bcl07QXJyYXkuaXNBcnJheShpKT9lKHQsaSk6c3QodCxpKX19KHQsKGV8fHt9KS5tZGFzdEV4dGVuc2lvbnN8fFtdKTtjb25zdCBuPXt9O3JldHVybiBmdW5jdGlvbihlKXtsZXQgbj17dHlwZToicm9vdCIsY2hpbGRyZW46W119O2NvbnN0IG89e3N0YWNrOltuXSx0b2tlblN0YWNrOltdLGNvbmZpZzp0LGVudGVyOmwsZXhpdDpkLGJ1ZmZlcjpzLHJlc3VtZTpwLHNldERhdGE6aSxnZXREYXRhOmF9LGM9W107bGV0IHU9LTE7Zm9yKDsrK3U8ZS5sZW5ndGg7KWlmKCJsaXN0T3JkZXJlZCI9PT1lW3VdWzFdLnR5cGV8fCJsaXN0VW5vcmRlcmVkIj09PWVbdV1bMV0udHlwZSlpZigiZW50ZXIiPT09ZVt1XVswXSljLnB1c2godSk7ZWxzZXtjb25zdCB0PWMucG9wKCk7dT1yKGUsdCx1KX11PS0xO2Zvcig7Kyt1PGUubGVuZ3RoOyl7Y29uc3Qgbj10W2VbdV1bMF1dO2l0LmNhbGwobixlW3VdWzFdLnR5cGUpJiZuW2VbdV1bMV0udHlwZV0uY2FsbChPYmplY3QuYXNzaWduKHtzbGljZVNlcmlhbGl6ZTplW3VdWzJdLnNsaWNlU2VyaWFsaXplfSxvKSxlW3VdWzFdKX1pZihvLnRva2VuU3RhY2subGVuZ3RoPjApe2NvbnN0IGU9by50b2tlblN0YWNrW28udG9rZW5TdGFjay5sZW5ndGgtMV07KGVbMV18fGx0KS5jYWxsKG8sdm9pZCAwLGVbMF0pfW4ucG9zaXRpb249e3N0YXJ0Om90KGUubGVuZ3RoPjA/ZVswXVsxXS5zdGFydDp7bGluZToxLGNvbHVtbjoxLG9mZnNldDowfSksZW5kOm90KGUubGVuZ3RoPjA/ZVtlLmxlbmd0aC0yXVsxXS5lbmQ6e2xpbmU6MSxjb2x1bW46MSxvZmZzZXQ6MH0pfSx1PS0xO2Zvcig7Kyt1PHQudHJhbnNmb3Jtcy5sZW5ndGg7KW49dC50cmFuc2Zvcm1zW3VdKG4pfHxuO3JldHVybiBufTtmdW5jdGlvbiByKGUsdCxuKXtsZXQgcixpLGEsbyxzPXQtMSxsPS0xLGM9ITE7Zm9yKDsrK3M8PW47KXtjb25zdCB0PWVbc107aWYoImxpc3RVbm9yZGVyZWQiPT09dFsxXS50eXBlfHwibGlzdE9yZGVyZWQiPT09dFsxXS50eXBlfHwiYmxvY2tRdW90ZSI9PT10WzFdLnR5cGU/KCJlbnRlciI9PT10WzBdP2wrKzpsLS0sbz12b2lkIDApOiJsaW5lRW5kaW5nQmxhbmsiPT09dFsxXS50eXBlPyJlbnRlciI9PT10WzBdJiYoIXJ8fG98fGx8fGF8fChhPXMpLG89dm9pZCAwKToibGluZVByZWZpeCI9PT10WzFdLnR5cGV8fCJsaXN0SXRlbVZhbHVlIj09PXRbMV0udHlwZXx8Imxpc3RJdGVtTWFya2VyIj09PXRbMV0udHlwZXx8Imxpc3RJdGVtUHJlZml4Ij09PXRbMV0udHlwZXx8Imxpc3RJdGVtUHJlZml4V2hpdGVzcGFjZSI9PT10WzFdLnR5cGV8fChvPXZvaWQgMCksIWwmJiJlbnRlciI9PT10WzBdJiYibGlzdEl0ZW1QcmVmaXgiPT09dFsxXS50eXBlfHwtMT09PWwmJiJleGl0Ij09PXRbMF0mJigibGlzdFVub3JkZXJlZCI9PT10WzFdLnR5cGV8fCJsaXN0T3JkZXJlZCI9PT10WzFdLnR5cGUpKXtpZihyKXtsZXQgbz1zO2ZvcihpPXZvaWQgMDtvLS07KXtjb25zdCB0PWVbb107aWYoImxpbmVFbmRpbmciPT09dFsxXS50eXBlfHwibGluZUVuZGluZ0JsYW5rIj09PXRbMV0udHlwZSl7aWYoImV4aXQiPT09dFswXSljb250aW51ZTtpJiYoZVtpXVsxXS50eXBlPSJsaW5lRW5kaW5nQmxhbmsiLGM9ITApLHRbMV0udHlwZT0ibGluZUVuZGluZyIsaT1vfWVsc2UgaWYoImxpbmVQcmVmaXgiIT09dFsxXS50eXBlJiYiYmxvY2tRdW90ZVByZWZpeCIhPT10WzFdLnR5cGUmJiJibG9ja1F1b3RlUHJlZml4V2hpdGVzcGFjZSIhPT10WzFdLnR5cGUmJiJibG9ja1F1b3RlTWFya2VyIiE9PXRbMV0udHlwZSYmImxpc3RJdGVtSW5kZW50IiE9PXRbMV0udHlwZSlicmVha31hJiYoIWl8fGE8aSkmJihyLl9zcHJlYWQ9ITApLHIuZW5kPU9iamVjdC5hc3NpZ24oe30saT9lW2ldWzFdLnN0YXJ0OnRbMV0uZW5kKSxlLnNwbGljZShpfHxzLDAsWyJleGl0IixyLHRbMl1dKSxzKyssbisrfSJsaXN0SXRlbVByZWZpeCI9PT10WzFdLnR5cGUmJihyPXt0eXBlOiJsaXN0SXRlbSIsX3NwcmVhZDohMSxzdGFydDpPYmplY3QuYXNzaWduKHt9LHRbMV0uc3RhcnQpLGVuZDp2b2lkIDB9LGUuc3BsaWNlKHMsMCxbImVudGVyIixyLHRbMl1dKSxzKyssbisrLGE9dm9pZCAwLG89ITApfX1yZXR1cm4gZVt0XVsxXS5fc3ByZWFkPWMsbn1mdW5jdGlvbiBpKGUsdCl7bltlXT10fWZ1bmN0aW9uIGEoZSl7cmV0dXJuIG5bZV19ZnVuY3Rpb24gbyhlLHQpe3JldHVybiBmdW5jdGlvbihuKXtsLmNhbGwodGhpcyxlKG4pLG4pLHQmJnQuY2FsbCh0aGlzLG4pfX1mdW5jdGlvbiBzKCl7dGhpcy5zdGFjay5wdXNoKHt0eXBlOiJmcmFnbWVudCIsY2hpbGRyZW46W119KX1mdW5jdGlvbiBsKGUsdCxuKXtyZXR1cm4gdGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aC0xXS5jaGlsZHJlbi5wdXNoKGUpLHRoaXMuc3RhY2sucHVzaChlKSx0aGlzLnRva2VuU3RhY2sucHVzaChbdCxuXSksZS5wb3NpdGlvbj17c3RhcnQ6b3QodC5zdGFydCl9LGV9ZnVuY3Rpb24gdShlKXtyZXR1cm4gZnVuY3Rpb24odCl7ZSYmZS5jYWxsKHRoaXMsdCk7ZC5jYWxsKHRoaXMsdCl9fWZ1bmN0aW9uIGQoZSx0KXtjb25zdCBuPXRoaXMuc3RhY2sucG9wKCkscj10aGlzLnRva2VuU3RhY2sucG9wKCk7aWYoIXIpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgY2xvc2UgYCIrZS50eXBlKyJgICgiK2Moe3N0YXJ0OmUuc3RhcnQsZW5kOmUuZW5kfSkrIik6IGl0XHUyMDE5cyBub3Qgb3BlbiIpO2lmKHJbMF0udHlwZSE9PWUudHlwZSlpZih0KXQuY2FsbCh0aGlzLGUsclswXSk7ZWxzZXsoclsxXXx8bHQpLmNhbGwodGhpcyxlLHJbMF0pfXJldHVybiBuLnBvc2l0aW9uLmVuZD1vdChlLmVuZCksbn1mdW5jdGlvbiBwKCl7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7Y29uc3Qgbj10fHxIO3JldHVybiB6KGUsImJvb2xlYW4iIT09dHlwZW9mIG4uaW5jbHVkZUltYWdlQWx0fHxuLmluY2x1ZGVJbWFnZUFsdCwiYm9vbGVhbiIhPT10eXBlb2Ygbi5pbmNsdWRlSHRtbHx8bi5pbmNsdWRlSHRtbCl9KHRoaXMuc3RhY2sucG9wKCkpfWZ1bmN0aW9uIGYoZSl7Y29uc3QgdD10aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoLTFdO2xldCBuPXQuY2hpbGRyZW5bdC5jaGlsZHJlbi5sZW5ndGgtMV07biYmInRleHQiPT09bi50eXBlfHwobj17dHlwZToidGV4dCIsdmFsdWU6IiJ9LG4ucG9zaXRpb249e3N0YXJ0Om90KGUuc3RhcnQpfSx0LmNoaWxkcmVuLnB1c2gobikpLHRoaXMuc3RhY2sucHVzaChuKX1mdW5jdGlvbiBoKGUpe2NvbnN0IHQ9dGhpcy5zdGFjay5wb3AoKTt0LnZhbHVlKz10aGlzLnNsaWNlU2VyaWFsaXplKGUpLHQucG9zaXRpb24uZW5kPW90KGUuZW5kKX1mdW5jdGlvbiBtKCl7aSgiYXRIYXJkQnJlYWsiLCEwKX1mdW5jdGlvbiBnKGUpe2koImNoYXJhY3RlclJlZmVyZW5jZVR5cGUiLGUudHlwZSl9ZnVuY3Rpb24gYigpe3JldHVybnt0eXBlOiJjb2RlIixsYW5nOm51bGwsbWV0YTpudWxsLHZhbHVlOiIifX1mdW5jdGlvbiB5KCl7cmV0dXJue3R5cGU6ImhlYWRpbmciLGRlcHRoOnZvaWQgMCxjaGlsZHJlbjpbXX19ZnVuY3Rpb24gdigpe3JldHVybnt0eXBlOiJicmVhayJ9fWZ1bmN0aW9uIEUoKXtyZXR1cm57dHlwZToiaHRtbCIsdmFsdWU6IiJ9fWZ1bmN0aW9uIHcoKXtyZXR1cm57dHlwZToibGluayIsdGl0bGU6bnVsbCx1cmw6IiIsY2hpbGRyZW46W119fWZ1bmN0aW9uIFMoZSl7cmV0dXJue3R5cGU6Imxpc3QiLG9yZGVyZWQ6Imxpc3RPcmRlcmVkIj09PWUudHlwZSxzdGFydDpudWxsLHNwcmVhZDplLl9zcHJlYWQsY2hpbGRyZW46W119fX0obikoZnVuY3Rpb24oZSl7Zm9yKDshUShlKTspO3JldHVybiBlfShmdW5jdGlvbihlKXtjb25zdCB0PWV8fHt9LG49e2RlZmluZWQ6W10sbGF6eTp7fSxjb25zdHJ1Y3RzOk9iamVjdCgkLmEpKFtyLC4uLnQuZXh0ZW5zaW9uc3x8W11dKSxjb250ZW50OmkoVyksZG9jdW1lbnQ6aShZKSxmbG93OmkobmUpLHN0cmluZzppKGllKSx0ZXh0OmkoYWUpfTtyZXR1cm4gbjtmdW5jdGlvbiBpKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gdWUobixlLHQpfX19KG4pLmRvY3VtZW50KCkud3JpdGUoZnVuY3Rpb24oKXtsZXQgZSx0PTEsbj0iIixyPSEwO3JldHVybiBmdW5jdGlvbihpLGEsbyl7Y29uc3Qgcz1bXTtsZXQgbCxjLHUsZCxwO2k9bitpLnRvU3RyaW5nKGEpLHU9MCxuPSIiLHImJig2NTI3OT09PWkuY2hhckNvZGVBdCgwKSYmdSsrLHI9dm9pZCAwKTtmb3IoO3U8aS5sZW5ndGg7KXtpZih0dC5sYXN0SW5kZXg9dSxsPXR0LmV4ZWMoaSksZD1sJiZ2b2lkIDAhPT1sLmluZGV4P2wuaW5kZXg6aS5sZW5ndGgscD1pLmNoYXJDb2RlQXQoZCksIWwpe249aS5zbGljZSh1KTticmVha31pZigxMD09PXAmJnU9PT1kJiZlKXMucHVzaCgtMyksZT12b2lkIDA7ZWxzZSBzd2l0Y2goZSYmKHMucHVzaCgtNSksZT12b2lkIDApLHU8ZCYmKHMucHVzaChpLnNsaWNlKHUsZCkpLHQrPWQtdSkscCl7Y2FzZSAwOnMucHVzaCg2NTUzMyksdCsrO2JyZWFrO2Nhc2UgOTpmb3IoYz00Kk1hdGguY2VpbCh0LzQpLHMucHVzaCgtMik7dCsrPGM7KXMucHVzaCgtMSk7YnJlYWs7Y2FzZSAxMDpzLnB1c2goLTQpLHQ9MTticmVhaztkZWZhdWx0OmU9ITAsdD0xfXU9ZCsxfW8mJihlJiZzLnB1c2goLTUpLG4mJnMucHVzaChuKSxzLnB1c2gobnVsbCkpO3JldHVybiBzfX0oKShlLHQsITApKSkpfTtmdW5jdGlvbiBvdChlKXtyZXR1cm57bGluZTplLmxpbmUsY29sdW1uOmUuY29sdW1uLG9mZnNldDplLm9mZnNldH19ZnVuY3Rpb24gc3QoZSx0KXtsZXQgbjtmb3IobiBpbiB0KWlmKGl0LmNhbGwodCxuKSlpZigiY2FuQ29udGFpbkVvbHMiPT09bil7Y29uc3Qgcj10W25dO3ImJmVbbl0ucHVzaCguLi5yKX1lbHNlIGlmKCJ0cmFuc2Zvcm1zIj09PW4pe2NvbnN0IHI9dFtuXTtyJiZlW25dLnB1c2goLi4ucil9ZWxzZSBpZigiZW50ZXIiPT09bnx8ImV4aXQiPT09bil7Y29uc3Qgcj10W25dO3ImJk9iamVjdC5hc3NpZ24oZVtuXSxyKX19ZnVuY3Rpb24gbHQoZSx0KXt0aHJvdyBlP25ldyBFcnJvcigiQ2Fubm90IGNsb3NlIGAiK2UudHlwZSsiYCAoIitjKHtzdGFydDplLnN0YXJ0LGVuZDplLmVuZH0pKyIpOiBhIGRpZmZlcmVudCB0b2tlbiAoYCIrdC50eXBlKyJgLCAiK2Moe3N0YXJ0OnQuc3RhcnQsZW5kOnQuZW5kfSkrIikgaXMgb3BlbiIpOm5ldyBFcnJvcigiQ2Fubm90IGNsb3NlIGRvY3VtZW50LCBhIHRva2VuIChgIit0LnR5cGUrImAsICIrYyh7c3RhcnQ6dC5zdGFydCxlbmQ6dC5lbmR9KSsiKSBpcyBzdGlsbCBvcGVuIil9ZnVuY3Rpb24gY3QoZSl7T2JqZWN0LmFzc2lnbih0aGlzLHtQYXJzZXI6dD0+e2NvbnN0IG49dGhpcy5kYXRhKCJzZXR0aW5ncyIpO3JldHVybiBhdCh0LE9iamVjdC5hc3NpZ24oe30sbixlLHtleHRlbnNpb25zOnRoaXMuZGF0YSgibWljcm9tYXJrRXh0ZW5zaW9ucyIpfHxbXSxtZGFzdEV4dGVuc2lvbnM6dGhpcy5kYXRhKCJmcm9tTWFya2Rvd25FeHRlbnNpb25zIil8fFtdfSkpfX0pfWNvbnN0IHV0PWZ1bmN0aW9uKGUsdCxuKXtjb25zdCByPXt0eXBlOlN0cmluZyhlKX07cmV0dXJuIHZvaWQgMCE9PW4mJm51bGwhPT1ufHwic3RyaW5nIiE9PXR5cGVvZiB0JiYhQXJyYXkuaXNBcnJheSh0KT9PYmplY3QuYXNzaWduKHIsdCk6bj10LEFycmF5LmlzQXJyYXkobik/ci5jaGlsZHJlbj1uOnZvaWQgMCE9PW4mJm51bGwhPT1uJiYoci52YWx1ZT1TdHJpbmcobikpLHJ9O3ZhciBkdD1uKDUyOSk7Y29uc3QgcHQ9ZnVuY3Rpb24oZSx0LG4scil7ImZ1bmN0aW9uIj09PXR5cGVvZiB0JiYiZnVuY3Rpb24iIT09dHlwZW9mIG4mJihyPW4sbj10LHQ9bnVsbCksT2JqZWN0KGR0LmEpKGUsdCwoZnVuY3Rpb24oZSx0KXtjb25zdCByPXRbdC5sZW5ndGgtMV07cmV0dXJuIG4oZSxyP3IuY2hpbGRyZW4uaW5kZXhPZihlKTpudWxsLHIpfSkscil9LGZ0PW10KCJzdGFydCIpLGh0PW10KCJlbmQiKTtmdW5jdGlvbiBtdChlKXtyZXR1cm4gZnVuY3Rpb24odCl7Y29uc3Qgbj10JiZ0LnBvc2l0aW9uJiZ0LnBvc2l0aW9uW2VdfHx7fTtyZXR1cm57bGluZTpuLmxpbmV8fG51bGwsY29sdW1uOm4uY29sdW1ufHxudWxsLG9mZnNldDpuLm9mZnNldD4tMT9uLm9mZnNldDpudWxsfX19Y29uc3QgZ3Q9e30uaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gYnQoZSl7cmV0dXJuIFN0cmluZyhlfHwiIikudG9VcHBlckNhc2UoKX1jb25zdCB5dD17fS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiB2dChlLHQpe2NvbnN0IG49dC5kYXRhfHx7fTtyZXR1cm4idmFsdWUiaW4gdCYmISh5dC5jYWxsKG4sImhOYW1lIil8fHl0LmNhbGwobiwiaFByb3BlcnRpZXMiKXx8eXQuY2FsbChuLCJoQ2hpbGRyZW4iKSk/ZS5hdWdtZW50KHQsdXQoInRleHQiLHQudmFsdWUpKTplKHQsImRpdiIsU3QoZSx0KSl9ZnVuY3Rpb24gRXQoZSx0LG4pe2NvbnN0IHI9dCYmdC50eXBlO2xldCBpO2lmKCFyKXRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgbm9kZSwgZ290IGAiK3QrImAiKTtyZXR1cm4gaT15dC5jYWxsKGUuaGFuZGxlcnMscik/ZS5oYW5kbGVyc1tyXTplLnBhc3NUaHJvdWdoJiZlLnBhc3NUaHJvdWdoLmluY2x1ZGVzKHIpP3d0OmUudW5rbm93bkhhbmRsZXIsKCJmdW5jdGlvbiI9PT10eXBlb2YgaT9pOnZ0KShlLHQsbil9ZnVuY3Rpb24gd3QoZSx0KXtyZXR1cm4iY2hpbGRyZW4iaW4gdD97Li4udCxjaGlsZHJlbjpTdChlLHQpfTp0fWZ1bmN0aW9uIFN0KGUsdCl7Y29uc3Qgbj1bXTtpZigiY2hpbGRyZW4iaW4gdCl7Y29uc3Qgcj10LmNoaWxkcmVuO2xldCBpPS0xO2Zvcig7KytpPHIubGVuZ3RoOyl7Y29uc3QgYT1FdChlLHJbaV0sdCk7aWYoYSl7aWYoaSYmImJyZWFrIj09PXJbaS0xXS50eXBlJiYoQXJyYXkuaXNBcnJheShhKXx8InRleHQiIT09YS50eXBlfHwoYS52YWx1ZT1hLnZhbHVlLnJlcGxhY2UoL15ccysvLCIiKSksIUFycmF5LmlzQXJyYXkoYSkmJiJlbGVtZW50Ij09PWEudHlwZSkpe2NvbnN0IGU9YS5jaGlsZHJlblswXTtlJiYidGV4dCI9PT1lLnR5cGUmJihlLnZhbHVlPWUudmFsdWUucmVwbGFjZSgvXlxzKy8sIiIpKX1BcnJheS5pc0FycmF5KGEpP24ucHVzaCguLi5hKTpuLnB1c2goYSl9fX1yZXR1cm4gbn1mdW5jdGlvbiBfdChlLHQpe3JldHVybiBlKHQsImhyIil9ZnVuY3Rpb24gVHQoZSx0KXtjb25zdCBuPVtdO2xldCByPS0xO2Zvcih0JiZuLnB1c2godXQoInRleHQiLCJcbiIpKTsrK3I8ZS5sZW5ndGg7KXImJm4ucHVzaCh1dCgidGV4dCIsIlxuIikpLG4ucHVzaChlW3JdKTtyZXR1cm4gdCYmZS5sZW5ndGg+MCYmbi5wdXNoKHV0KCJ0ZXh0IiwiXG4iKSksbn1mdW5jdGlvbiBBdChlLHQpe2NvbnN0IG49e30scj10Lm9yZGVyZWQ/Im9sIjoidWwiLGk9U3QoZSx0KTtsZXQgYT0tMTtmb3IoIm51bWJlciI9PT10eXBlb2YgdC5zdGFydCYmMSE9PXQuc3RhcnQmJihuLnN0YXJ0PXQuc3RhcnQpOysrYTxpLmxlbmd0aDspe2NvbnN0IGU9aVthXTtpZigiZWxlbWVudCI9PT1lLnR5cGUmJiJsaSI9PT1lLnRhZ05hbWUmJmUucHJvcGVydGllcyYmQXJyYXkuaXNBcnJheShlLnByb3BlcnRpZXMuY2xhc3NOYW1lKSYmZS5wcm9wZXJ0aWVzLmNsYXNzTmFtZS5pbmNsdWRlcygidGFzay1saXN0LWl0ZW0iKSl7bi5jbGFzc05hbWU9WyJjb250YWlucy10YXNrLWxpc3QiXTticmVha319cmV0dXJuIGUodCxyLG4sVHQoaSwhMCkpfWZ1bmN0aW9uIGt0KGUsdCl7Y29uc3Qgbj1lLmZvb3Rub3RlT3JkZXIscj1TdHJpbmcodC5pZGVudGlmaWVyKSxpPW4uaW5kZXhPZihyKSxhPVN0cmluZygtMT09PWk/bi5wdXNoKHIpOmkrMSk7cmV0dXJuIGUodCwiYSIse2hyZWY6IiNmbiIrYSxjbGFzc05hbWU6WyJmb290bm90ZS1yZWYiXSxpZDoiZm5yZWYiK2Escm9sZToiZG9jLW5vdGVyZWYifSxbZSh0LnBvc2l0aW9uLCJzdXAiLFt1dCgidGV4dCIsYSldKV0pfXZhciB4dD1uKDI0KSxDdD1uLm4oeHQpO2Z1bmN0aW9uIEl0KGUsdCl7Y29uc3Qgbj10LnJlZmVyZW5jZVR5cGU7bGV0IHI9Il0iO2lmKCJjb2xsYXBzZWQiPT09bj9yKz0iW10iOiJmdWxsIj09PW4mJihyKz0iWyIrKHQubGFiZWx8fHQuaWRlbnRpZmllcikrIl0iKSwiaW1hZ2VSZWZlcmVuY2UiPT09dC50eXBlKXJldHVybiB1dCgidGV4dCIsIiFbIit0LmFsdCtyKTtjb25zdCBpPVN0KGUsdCksYT1pWzBdO2EmJiJ0ZXh0Ij09PWEudHlwZT9hLnZhbHVlPSJbIithLnZhbHVlOmkudW5zaGlmdCh1dCgidGV4dCIsIlsiKSk7Y29uc3Qgbz1pW2kubGVuZ3RoLTFdO3JldHVybiBvJiYidGV4dCI9PT1vLnR5cGU/by52YWx1ZSs9cjppLnB1c2godXQoInRleHQiLHIpKSxpfWZ1bmN0aW9uIFJ0KGUpe2NvbnN0IHQ9ZS5zcHJlYWQ7cmV0dXJuIHZvaWQgMD09PXR8fG51bGw9PT10P2UuY2hpbGRyZW4ubGVuZ3RoPjE6dH1jb25zdCBPdD17YmxvY2txdW90ZTpmdW5jdGlvbihlLHQpe3JldHVybiBlKHQsImJsb2NrcXVvdGUiLFR0KFN0KGUsdCksITApKX0sYnJlYWs6ZnVuY3Rpb24oZSx0KXtyZXR1cm5bZSh0LCJiciIpLHV0KCJ0ZXh0IiwiXG4iKV19LGNvZGU6ZnVuY3Rpb24oZSx0KXtjb25zdCBuPXQudmFsdWU/dC52YWx1ZSsiXG4iOiIiLHI9dC5sYW5nJiZ0LmxhbmcubWF0Y2goL15bXiBcdF0rKD89WyBcdF18JCkvKSxpPXt9O3ImJihpLmNsYXNzTmFtZT1bImxhbmd1YWdlLSIrcl0pO2NvbnN0IGE9ZSh0LCJjb2RlIixpLFt1dCgidGV4dCIsbildKTtyZXR1cm4gdC5tZXRhJiYoYS5kYXRhPXttZXRhOnQubWV0YX0pLGUodC5wb3NpdGlvbiwicHJlIixbYV0pfSxkZWxldGU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSh0LCJkZWwiLFN0KGUsdCkpfSxlbXBoYXNpczpmdW5jdGlvbihlLHQpe3JldHVybiBlKHQsImVtIixTdChlLHQpKX0sZm9vdG5vdGVSZWZlcmVuY2U6a3QsZm9vdG5vdGU6ZnVuY3Rpb24oZSx0KXtjb25zdCBuPWUuZm9vdG5vdGVCeUlkLHI9ZS5mb290bm90ZU9yZGVyO2xldCBpPTE7Zm9yKDtpIGluIG47KWkrKztjb25zdCBhPVN0cmluZyhpKTtyZXR1cm4gci5wdXNoKGEpLG5bYV09e3R5cGU6ImZvb3Rub3RlRGVmaW5pdGlvbiIsaWRlbnRpZmllcjphLGNoaWxkcmVuOlt7dHlwZToicGFyYWdyYXBoIixjaGlsZHJlbjp0LmNoaWxkcmVufV0scG9zaXRpb246dC5wb3NpdGlvbn0sa3QoZSx7dHlwZToiZm9vdG5vdGVSZWZlcmVuY2UiLGlkZW50aWZpZXI6YSxwb3NpdGlvbjp0LnBvc2l0aW9ufSl9LGhlYWRpbmc6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSh0LCJoIit0LmRlcHRoLFN0KGUsdCkpfSxodG1sOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuZGFuZ2Vyb3VzP2UuYXVnbWVudCh0LHV0KCJyYXciLHQudmFsdWUpKTpudWxsfSxpbWFnZVJlZmVyZW5jZTpmdW5jdGlvbihlLHQpe2NvbnN0IG49ZS5kZWZpbml0aW9uKHQuaWRlbnRpZmllcik7aWYoIW4pcmV0dXJuIEl0KGUsdCk7Y29uc3Qgcj17c3JjOkN0KCkobi51cmx8fCIiKSxhbHQ6dC5hbHR9O3JldHVybiBudWxsIT09bi50aXRsZSYmdm9pZCAwIT09bi50aXRsZSYmKHIudGl0bGU9bi50aXRsZSksZSh0LCJpbWciLHIpfSxpbWFnZTpmdW5jdGlvbihlLHQpe2NvbnN0IG49e3NyYzpDdCgpKHQudXJsKSxhbHQ6dC5hbHR9O3JldHVybiBudWxsIT09dC50aXRsZSYmdm9pZCAwIT09dC50aXRsZSYmKG4udGl0bGU9dC50aXRsZSksZSh0LCJpbWciLG4pfSxpbmxpbmVDb2RlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUodCwiY29kZSIsW3V0KCJ0ZXh0Iix0LnZhbHVlLnJlcGxhY2UoL1xyP1xufFxyL2csIiAiKSldKX0sbGlua1JlZmVyZW5jZTpmdW5jdGlvbihlLHQpe2NvbnN0IG49ZS5kZWZpbml0aW9uKHQuaWRlbnRpZmllcik7aWYoIW4pcmV0dXJuIEl0KGUsdCk7Y29uc3Qgcj17aHJlZjpDdCgpKG4udXJsfHwiIil9O3JldHVybiBudWxsIT09bi50aXRsZSYmdm9pZCAwIT09bi50aXRsZSYmKHIudGl0bGU9bi50aXRsZSksZSh0LCJhIixyLFN0KGUsdCkpfSxsaW5rOmZ1bmN0aW9uKGUsdCl7Y29uc3Qgbj17aHJlZjpDdCgpKHQudXJsKX07cmV0dXJuIG51bGwhPT10LnRpdGxlJiZ2b2lkIDAhPT10LnRpdGxlJiYobi50aXRsZT10LnRpdGxlKSxlKHQsImEiLG4sU3QoZSx0KSl9LGxpc3RJdGVtOmZ1bmN0aW9uKGUsdCxuKXtjb25zdCByPVN0KGUsdCksaT1uP2Z1bmN0aW9uKGUpe2xldCB0PWUuc3ByZWFkO2NvbnN0IG49ZS5jaGlsZHJlbjtsZXQgcj0tMTtmb3IoOyF0JiYrK3I8bi5sZW5ndGg7KXQ9UnQobltyXSk7cmV0dXJuIEJvb2xlYW4odCl9KG4pOlJ0KHQpLGE9e30sbz1bXTtpZigiYm9vbGVhbiI9PT10eXBlb2YgdC5jaGVja2VkKXtsZXQgbjtyWzBdJiYiZWxlbWVudCI9PT1yWzBdLnR5cGUmJiJwIj09PXJbMF0udGFnTmFtZT9uPXJbMF06KG49ZShudWxsLCJwIixbXSksci51bnNoaWZ0KG4pKSxuLmNoaWxkcmVuLmxlbmd0aD4wJiZuLmNoaWxkcmVuLnVuc2hpZnQodXQoInRleHQiLCIgIikpLG4uY2hpbGRyZW4udW5zaGlmdChlKG51bGwsImlucHV0Iix7dHlwZToiY2hlY2tib3giLGNoZWNrZWQ6dC5jaGVja2VkLGRpc2FibGVkOiEwfSkpLGEuY2xhc3NOYW1lPVsidGFzay1saXN0LWl0ZW0iXX1sZXQgcz0tMTtmb3IoOysrczxyLmxlbmd0aDspe2NvbnN0IGU9cltzXTsoaXx8MCE9PXN8fCJlbGVtZW50IiE9PWUudHlwZXx8InAiIT09ZS50YWdOYW1lKSYmby5wdXNoKHV0KCJ0ZXh0IiwiXG4iKSksImVsZW1lbnQiIT09ZS50eXBlfHwicCIhPT1lLnRhZ05hbWV8fGk/by5wdXNoKGUpOm8ucHVzaCguLi5lLmNoaWxkcmVuKX1jb25zdCBsPXJbci5sZW5ndGgtMV07cmV0dXJuIWx8fCFpJiYidGFnTmFtZSJpbiBsJiYicCI9PT1sLnRhZ05hbWV8fG8ucHVzaCh1dCgidGV4dCIsIlxuIikpLGUodCwibGkiLGEsbyl9LGxpc3Q6QXQscGFyYWdyYXBoOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUodCwicCIsU3QoZSx0KSl9LHJvb3Q6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5hdWdtZW50KHQsdXQoInJvb3QiLFR0KFN0KGUsdCkpKSl9LHN0cm9uZzpmdW5jdGlvbihlLHQpe3JldHVybiBlKHQsInN0cm9uZyIsU3QoZSx0KSl9LHRhYmxlOmZ1bmN0aW9uKGUsdCl7Y29uc3Qgbj10LmNoaWxkcmVuO2xldCByPS0xO2NvbnN0IGk9dC5hbGlnbnx8W10sYT1bXTtmb3IoOysrcjxuLmxlbmd0aDspe2NvbnN0IG89bltyXS5jaGlsZHJlbixzPTA9PT1yPyJ0aCI6InRkIjtsZXQgbD10LmFsaWduP2kubGVuZ3RoOm8ubGVuZ3RoO2NvbnN0IGM9W107Zm9yKDtsLS07KXtjb25zdCB0PW9bbF07Y1tsXT1lKHQscyx7YWxpZ246aVtsXX0sdD9TdChlLHQpOltdKX1hW3JdPWUobltyXSwidHIiLFR0KGMsITApKX1yZXR1cm4gZSh0LCJ0YWJsZSIsVHQoW2UoYVswXS5wb3NpdGlvbiwidGhlYWQiLFR0KFthWzBdXSwhMCkpXS5jb25jYXQoYVsxXT9lKHtzdGFydDpmdChhWzFdKSxlbmQ6aHQoYVthLmxlbmd0aC0xXSl9LCJ0Ym9keSIsVHQoYS5zbGljZSgxKSwhMCkpOltdKSwhMCkpfSx0ZXh0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuYXVnbWVudCh0LHV0KCJ0ZXh0IixTdHJpbmcodC52YWx1ZSkucmVwbGFjZSgvWyBcdF0qKFxyP1xufFxyKVsgXHRdKi9nLCIkMSIpKSl9LHRoZW1hdGljQnJlYWs6X3QsdG9tbDpOdCx5YW1sOk50LGRlZmluaXRpb246TnQsZm9vdG5vdGVEZWZpbml0aW9uOk50fTtmdW5jdGlvbiBOdCgpe3JldHVybiBudWxsfWNvbnN0IE10PXt9Lmhhc093blByb3BlcnR5O2Z1bmN0aW9uIEx0KGUsdCl7Y29uc3Qgbj10fHx7fSxyPW4uYWxsb3dEYW5nZXJvdXNIdG1sfHwhMSxpPXt9O3JldHVybiBvLmRhbmdlcm91cz1yLG8uZGVmaW5pdGlvbj1mdW5jdGlvbihlKXtjb25zdCB0PU9iamVjdC5jcmVhdGUobnVsbCk7aWYoIWV8fCFlLnR5cGUpdGhyb3cgbmV3IEVycm9yKCJtZGFzdC11dGlsLWRlZmluaXRpb25zIGV4cGVjdGVkIG5vZGUiKTtyZXR1cm4gcHQoZSwiZGVmaW5pdGlvbiIsZT0+e2NvbnN0IG49YnQoZS5pZGVudGlmaWVyKTtuJiYhZ3QuY2FsbCh0LG4pJiYodFtuXT1lKX0pLGZ1bmN0aW9uKGUpe2NvbnN0IG49YnQoZSk7cmV0dXJuIG4mJmd0LmNhbGwodCxuKT90W25dOm51bGx9fShlKSxvLmZvb3Rub3RlQnlJZD1pLG8uZm9vdG5vdGVPcmRlcj1bXSxvLmF1Z21lbnQ9YSxvLmhhbmRsZXJzPXsuLi5PdCwuLi5uLmhhbmRsZXJzfSxvLnVua25vd25IYW5kbGVyPW4udW5rbm93bkhhbmRsZXIsby5wYXNzVGhyb3VnaD1uLnBhc3NUaHJvdWdoLHB0KGUsImZvb3Rub3RlRGVmaW5pdGlvbiIsZT0+e2NvbnN0IHQ9U3RyaW5nKGUuaWRlbnRpZmllcikudG9VcHBlckNhc2UoKTtNdC5jYWxsKGksdCl8fChpW3RdPWUpfSksbztmdW5jdGlvbiBhKGUsdCl7aWYoZSYmImRhdGEiaW4gZSYmZS5kYXRhKXtjb25zdCBuPWUuZGF0YTtuLmhOYW1lJiYoImVsZW1lbnQiIT09dC50eXBlJiYodD17dHlwZToiZWxlbWVudCIsdGFnTmFtZToiIixwcm9wZXJ0aWVzOnt9LGNoaWxkcmVuOltdfSksdC50YWdOYW1lPW4uaE5hbWUpLCJlbGVtZW50Ij09PXQudHlwZSYmbi5oUHJvcGVydGllcyYmKHQucHJvcGVydGllcz17Li4udC5wcm9wZXJ0aWVzLC4uLm4uaFByb3BlcnRpZXN9KSwiY2hpbGRyZW4iaW4gdCYmdC5jaGlsZHJlbiYmbi5oQ2hpbGRyZW4mJih0LmNoaWxkcmVuPW4uaENoaWxkcmVuKX1pZihlKXtjb25zdCByPSJ0eXBlImluIGU/ZTp7cG9zaXRpb246ZX07KG49cikmJm4ucG9zaXRpb24mJm4ucG9zaXRpb24uc3RhcnQmJm4ucG9zaXRpb24uc3RhcnQubGluZSYmbi5wb3NpdGlvbi5zdGFydC5jb2x1bW4mJm4ucG9zaXRpb24uZW5kJiZuLnBvc2l0aW9uLmVuZC5saW5lJiZuLnBvc2l0aW9uLmVuZC5jb2x1bW4mJih0LnBvc2l0aW9uPXtzdGFydDpmdChyKSxlbmQ6aHQocil9KX12YXIgbjtyZXR1cm4gdH1mdW5jdGlvbiBvKGUsdCxuLHIpe3JldHVybiBBcnJheS5pc0FycmF5KG4pJiYocj1uLG49e30pLGEoZSx7dHlwZToiZWxlbWVudCIsdGFnTmFtZTp0LHByb3BlcnRpZXM6bnx8e30sY2hpbGRyZW46cnx8W119KX19ZnVuY3Rpb24gRHQoZSx0KXtjb25zdCBuPUx0KGUsdCkscj1FdChuLGUsbnVsbCksaT1mdW5jdGlvbihlKXtjb25zdCB0PWUuZm9vdG5vdGVCeUlkLG49ZS5mb290bm90ZU9yZGVyO2xldCByPS0xO2NvbnN0IGk9W107Zm9yKDsrK3I8bi5sZW5ndGg7KXtjb25zdCBlPXRbbltyXS50b1VwcGVyQ2FzZSgpXTtpZighZSljb250aW51ZTtjb25zdCBhPVN0cmluZyhyKzEpLG89Wy4uLmUuY2hpbGRyZW5dLHM9e3R5cGU6ImxpbmsiLHVybDoiI2ZucmVmIithLGRhdGE6e2hQcm9wZXJ0aWVzOntjbGFzc05hbWU6WyJmb290bm90ZS1iYWNrIl0scm9sZToiZG9jLWJhY2tsaW5rIn19LGNoaWxkcmVuOlt7dHlwZToidGV4dCIsdmFsdWU6Ilx1MjFhOSJ9XX0sbD1vW28ubGVuZ3RoLTFdO2wmJiJwYXJhZ3JhcGgiPT09bC50eXBlP2wuY2hpbGRyZW4ucHVzaChzKTpvLnB1c2gocyksaS5wdXNoKHt0eXBlOiJsaXN0SXRlbSIsZGF0YTp7aFByb3BlcnRpZXM6e2lkOiJmbiIrYSxyb2xlOiJkb2MtZW5kbm90ZSJ9fSxjaGlsZHJlbjpvLHBvc2l0aW9uOmUucG9zaXRpb259KX1yZXR1cm4gMD09PWkubGVuZ3RoP251bGw6ZShudWxsLCJzZWN0aW9uIix7Y2xhc3NOYW1lOlsiZm9vdG5vdGVzIl0scm9sZToiZG9jLWVuZG5vdGVzIn0sVHQoW190KGUpLEF0KGUse3R5cGU6Imxpc3QiLG9yZGVyZWQ6ITAsY2hpbGRyZW46aX0pXSwhMCkpfShuKTtyZXR1cm4gaSYmci5jaGlsZHJlbi5wdXNoKHV0KCJ0ZXh0IiwiXG4iKSxpKSxBcnJheS5pc0FycmF5KHIpP3t0eXBlOiJyb290IixjaGlsZHJlbjpyfTpyfXZhciBQdD1mdW5jdGlvbihlLHQpe3JldHVybiBlJiYicnVuImluIGU/ZnVuY3Rpb24oZSx0KXtyZXR1cm4obixyLGkpPT57ZS5ydW4oRHQobix0KSxyLGU9PntpKGUpfSl9fShlLHQpOmZ1bmN0aW9uKGUpe3JldHVybiB0PT5EdCh0LGUpfShlKX07dmFyIEZ0PW4oNSksVXQ9bi5uKEZ0KTtjbGFzcyBCdHtjb25zdHJ1Y3RvcihlLHQsbil7dGhpcy5wcm9wZXJ0eT1lLHRoaXMubm9ybWFsPXQsbiYmKHRoaXMuc3BhY2U9bil9fWZ1bmN0aW9uIGp0KGUsdCl7Y29uc3Qgbj17fSxyPXt9O2xldCBpPS0xO2Zvcig7KytpPGUubGVuZ3RoOylPYmplY3QuYXNzaWduKG4sZVtpXS5wcm9wZXJ0eSksT2JqZWN0LmFzc2lnbihyLGVbaV0ubm9ybWFsKTtyZXR1cm4gbmV3IEJ0KG4scix0KX1mdW5jdGlvbiBIdChlKXtyZXR1cm4gZS50b0xvd2VyQ2FzZSgpfUJ0LnByb3RvdHlwZS5wcm9wZXJ0eT17fSxCdC5wcm90b3R5cGUubm9ybWFsPXt9LEJ0LnByb3RvdHlwZS5zcGFjZT1udWxsO2NsYXNzIHp0e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5wcm9wZXJ0eT1lLHRoaXMuYXR0cmlidXRlPXR9fXp0LnByb3RvdHlwZS5zcGFjZT1udWxsLHp0LnByb3RvdHlwZS5ib29sZWFuPSExLHp0LnByb3RvdHlwZS5ib29sZWFuaXNoPSExLHp0LnByb3RvdHlwZS5vdmVybG9hZGVkQm9vbGVhbj0hMSx6dC5wcm90b3R5cGUubnVtYmVyPSExLHp0LnByb3RvdHlwZS5jb21tYVNlcGFyYXRlZD0hMSx6dC5wcm90b3R5cGUuc3BhY2VTZXBhcmF0ZWQ9ITEsenQucHJvdG90eXBlLmNvbW1hT3JTcGFjZVNlcGFyYXRlZD0hMSx6dC5wcm90b3R5cGUubXVzdFVzZVByb3BlcnR5PSExLHp0LnByb3RvdHlwZS5kZWZpbmVkPSExO2xldCBHdD0wO2NvbnN0ICR0PVp0KCksVnQ9WnQoKSxxdD1adCgpLFd0PVp0KCksS3Q9WnQoKSxZdD1adCgpLFh0PVp0KCk7ZnVuY3Rpb24gWnQoKXtyZXR1cm4gMioqKytHdH1jb25zdCBRdD1PYmplY3Qua2V5cyhpKTtjbGFzcyBKdCBleHRlbmRzIHp0e2NvbnN0cnVjdG9yKGUsdCxuLHIpe2xldCBhPS0xO2lmKHN1cGVyKGUsdCksZW4odGhpcywic3BhY2UiLHIpLCJudW1iZXIiPT09dHlwZW9mIG4pZm9yKDsrK2E8UXQubGVuZ3RoOyl7Y29uc3QgZT1RdFthXTtlbih0aGlzLFF0W2FdLChuJmlbZV0pPT09aVtlXSl9fX1mdW5jdGlvbiBlbihlLHQsbil7biYmKGVbdF09bil9SnQucHJvdG90eXBlLmRlZmluZWQ9ITA7Y29uc3QgdG49e30uaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gbm4oZSl7Y29uc3QgdD17fSxuPXt9O2xldCByO2ZvcihyIGluIGUucHJvcGVydGllcylpZih0bi5jYWxsKGUucHJvcGVydGllcyxyKSl7Y29uc3QgaT1lLnByb3BlcnRpZXNbcl0sYT1uZXcgSnQocixlLnRyYW5zZm9ybShlLmF0dHJpYnV0ZXN8fHt9LHIpLGksZS5zcGFjZSk7ZS5tdXN0VXNlUHJvcGVydHkmJmUubXVzdFVzZVByb3BlcnR5LmluY2x1ZGVzKHIpJiYoYS5tdXN0VXNlUHJvcGVydHk9ITApLHRbcl09YSxuW0h0KHIpXT1yLG5bSHQoYS5hdHRyaWJ1dGUpXT1yfXJldHVybiBuZXcgQnQodCxuLGUuc3BhY2UpfWNvbnN0IHJuPW5uKHtzcGFjZToieGxpbmsiLHRyYW5zZm9ybTooZSx0KT0+InhsaW5rOiIrdC5zbGljZSg1KS50b0xvd2VyQ2FzZSgpLHByb3BlcnRpZXM6e3hMaW5rQWN0dWF0ZTpudWxsLHhMaW5rQXJjUm9sZTpudWxsLHhMaW5rSHJlZjpudWxsLHhMaW5rUm9sZTpudWxsLHhMaW5rU2hvdzpudWxsLHhMaW5rVGl0bGU6bnVsbCx4TGlua1R5cGU6bnVsbH19KSxhbj1ubih7c3BhY2U6InhtbCIsdHJhbnNmb3JtOihlLHQpPT4ieG1sOiIrdC5zbGljZSgzKS50b0xvd2VyQ2FzZSgpLHByb3BlcnRpZXM6e3htbExhbmc6bnVsbCx4bWxCYXNlOm51bGwseG1sU3BhY2U6bnVsbH19KTtmdW5jdGlvbiBvbihlLHQpe3JldHVybiB0IGluIGU/ZVt0XTp0fWZ1bmN0aW9uIHNuKGUsdCl7cmV0dXJuIG9uKGUsdC50b0xvd2VyQ2FzZSgpKX1jb25zdCBsbj1ubih7c3BhY2U6InhtbG5zIixhdHRyaWJ1dGVzOnt4bWxuc3hsaW5rOiJ4bWxuczp4bGluayJ9LHRyYW5zZm9ybTpzbixwcm9wZXJ0aWVzOnt4bWxuczpudWxsLHhtbG5zWExpbms6bnVsbH19KSxjbj1ubih7dHJhbnNmb3JtOihlLHQpPT4icm9sZSI9PT10P3Q6ImFyaWEtIit0LnNsaWNlKDQpLnRvTG93ZXJDYXNlKCkscHJvcGVydGllczp7YXJpYUFjdGl2ZURlc2NlbmRhbnQ6bnVsbCxhcmlhQXRvbWljOlZ0LGFyaWFBdXRvQ29tcGxldGU6bnVsbCxhcmlhQnVzeTpWdCxhcmlhQ2hlY2tlZDpWdCxhcmlhQ29sQ291bnQ6V3QsYXJpYUNvbEluZGV4Old0LGFyaWFDb2xTcGFuOld0LGFyaWFDb250cm9sczpLdCxhcmlhQ3VycmVudDpudWxsLGFyaWFEZXNjcmliZWRCeTpLdCxhcmlhRGV0YWlsczpudWxsLGFyaWFEaXNhYmxlZDpWdCxhcmlhRHJvcEVmZmVjdDpLdCxhcmlhRXJyb3JNZXNzYWdlOm51bGwsYXJpYUV4cGFuZGVkOlZ0LGFyaWFGbG93VG86S3QsYXJpYUdyYWJiZWQ6VnQsYXJpYUhhc1BvcHVwOm51bGwsYXJpYUhpZGRlbjpWdCxhcmlhSW52YWxpZDpudWxsLGFyaWFLZXlTaG9ydGN1dHM6bnVsbCxhcmlhTGFiZWw6bnVsbCxhcmlhTGFiZWxsZWRCeTpLdCxhcmlhTGV2ZWw6V3QsYXJpYUxpdmU6bnVsbCxhcmlhTW9kYWw6VnQsYXJpYU11bHRpTGluZTpWdCxhcmlhTXVsdGlTZWxlY3RhYmxlOlZ0LGFyaWFPcmllbnRhdGlvbjpudWxsLGFyaWFPd25zOkt0LGFyaWFQbGFjZWhvbGRlcjpudWxsLGFyaWFQb3NJblNldDpXdCxhcmlhUHJlc3NlZDpWdCxhcmlhUmVhZE9ubHk6VnQsYXJpYVJlbGV2YW50Om51bGwsYXJpYVJlcXVpcmVkOlZ0LGFyaWFSb2xlRGVzY3JpcHRpb246S3QsYXJpYVJvd0NvdW50Old0LGFyaWFSb3dJbmRleDpXdCxhcmlhUm93U3BhbjpXdCxhcmlhU2VsZWN0ZWQ6VnQsYXJpYVNldFNpemU6V3QsYXJpYVNvcnQ6bnVsbCxhcmlhVmFsdWVNYXg6V3QsYXJpYVZhbHVlTWluOld0LGFyaWFWYWx1ZU5vdzpXdCxhcmlhVmFsdWVUZXh0Om51bGwscm9sZTpudWxsfX0pLHVuPW5uKHtzcGFjZToiaHRtbCIsYXR0cmlidXRlczp7YWNjZXB0Y2hhcnNldDoiYWNjZXB0LWNoYXJzZXQiLGNsYXNzbmFtZToiY2xhc3MiLGh0bWxmb3I6ImZvciIsaHR0cGVxdWl2OiJodHRwLWVxdWl2In0sdHJhbnNmb3JtOnNuLG11c3RVc2VQcm9wZXJ0eTpbImNoZWNrZWQiLCJtdWx0aXBsZSIsIm11dGVkIiwic2VsZWN0ZWQiXSxwcm9wZXJ0aWVzOnthYmJyOm51bGwsYWNjZXB0Oll0LGFjY2VwdENoYXJzZXQ6S3QsYWNjZXNzS2V5Okt0LGFjdGlvbjpudWxsLGFsbG93Om51bGwsYWxsb3dGdWxsU2NyZWVuOiR0LGFsbG93UGF5bWVudFJlcXVlc3Q6JHQsYWxsb3dVc2VyTWVkaWE6JHQsYWx0Om51bGwsYXM6bnVsbCxhc3luYzokdCxhdXRvQ2FwaXRhbGl6ZTpudWxsLGF1dG9Db21wbGV0ZTpLdCxhdXRvRm9jdXM6JHQsYXV0b1BsYXk6JHQsYmxvY2tpbmc6S3QsY2FwdHVyZTpudWxsLGNoYXJTZXQ6bnVsbCxjaGVja2VkOiR0LGNpdGU6bnVsbCxjbGFzc05hbWU6S3QsY29sczpXdCxjb2xTcGFuOm51bGwsY29udGVudDpudWxsLGNvbnRlbnRFZGl0YWJsZTpWdCxjb250cm9sczokdCxjb250cm9sc0xpc3Q6S3QsY29vcmRzOld0fFl0LGNyb3NzT3JpZ2luOm51bGwsZGF0YTpudWxsLGRhdGVUaW1lOm51bGwsZGVjb2Rpbmc6bnVsbCxkZWZhdWx0OiR0LGRlZmVyOiR0LGRpcjpudWxsLGRpck5hbWU6bnVsbCxkaXNhYmxlZDokdCxkb3dubG9hZDpxdCxkcmFnZ2FibGU6VnQsZW5jVHlwZTpudWxsLGVudGVyS2V5SGludDpudWxsLGZldGNoUHJpb3JpdHk6bnVsbCxmb3JtOm51bGwsZm9ybUFjdGlvbjpudWxsLGZvcm1FbmNUeXBlOm51bGwsZm9ybU1ldGhvZDpudWxsLGZvcm1Ob1ZhbGlkYXRlOiR0LGZvcm1UYXJnZXQ6bnVsbCxoZWFkZXJzOkt0LGhlaWdodDpXdCxoaWRkZW46JHQsaGlnaDpXdCxocmVmOm51bGwsaHJlZkxhbmc6bnVsbCxodG1sRm9yOkt0LGh0dHBFcXVpdjpLdCxpZDpudWxsLGltYWdlU2l6ZXM6bnVsbCxpbWFnZVNyY1NldDpudWxsLGluZXJ0OiR0LGlucHV0TW9kZTpudWxsLGludGVncml0eTpudWxsLGlzOm51bGwsaXNNYXA6JHQsaXRlbUlkOm51bGwsaXRlbVByb3A6S3QsaXRlbVJlZjpLdCxpdGVtU2NvcGU6JHQsaXRlbVR5cGU6S3Qsa2luZDpudWxsLGxhYmVsOm51bGwsbGFuZzpudWxsLGxhbmd1YWdlOm51bGwsbGlzdDpudWxsLGxvYWRpbmc6bnVsbCxsb29wOiR0LGxvdzpXdCxtYW5pZmVzdDpudWxsLG1heDpudWxsLG1heExlbmd0aDpXdCxtZWRpYTpudWxsLG1ldGhvZDpudWxsLG1pbjpudWxsLG1pbkxlbmd0aDpXdCxtdWx0aXBsZTokdCxtdXRlZDokdCxuYW1lOm51bGwsbm9uY2U6bnVsbCxub01vZHVsZTokdCxub1ZhbGlkYXRlOiR0LG9uQWJvcnQ6bnVsbCxvbkFmdGVyUHJpbnQ6bnVsbCxvbkF1eENsaWNrOm51bGwsb25CZWZvcmVNYXRjaDpudWxsLG9uQmVmb3JlUHJpbnQ6bnVsbCxvbkJlZm9yZVRvZ2dsZTpudWxsLG9uQmVmb3JlVW5sb2FkOm51bGwsb25CbHVyOm51bGwsb25DYW5jZWw6bnVsbCxvbkNhblBsYXk6bnVsbCxvbkNhblBsYXlUaHJvdWdoOm51bGwsb25DaGFuZ2U6bnVsbCxvbkNsaWNrOm51bGwsb25DbG9zZTpudWxsLG9uQ29udGV4dExvc3Q6bnVsbCxvbkNvbnRleHRNZW51Om51bGwsb25Db250ZXh0UmVzdG9yZWQ6bnVsbCxvbkNvcHk6bnVsbCxvbkN1ZUNoYW5nZTpudWxsLG9uQ3V0Om51bGwsb25EYmxDbGljazpudWxsLG9uRHJhZzpudWxsLG9uRHJhZ0VuZDpudWxsLG9uRHJhZ0VudGVyOm51bGwsb25EcmFnRXhpdDpudWxsLG9uRHJhZ0xlYXZlOm51bGwsb25EcmFnT3ZlcjpudWxsLG9uRHJhZ1N0YXJ0Om51bGwsb25Ecm9wOm51bGwsb25EdXJhdGlvbkNoYW5nZTpudWxsLG9uRW1wdGllZDpudWxsLG9uRW5kZWQ6bnVsbCxvbkVycm9yOm51bGwsb25Gb2N1czpudWxsLG9uRm9ybURhdGE6bnVsbCxvbkhhc2hDaGFuZ2U6bnVsbCxvbklucHV0Om51bGwsb25JbnZhbGlkOm51bGwsb25LZXlEb3duOm51bGwsb25LZXlQcmVzczpudWxsLG9uS2V5VXA6bnVsbCxvbkxhbmd1YWdlQ2hhbmdlOm51bGwsb25Mb2FkOm51bGwsb25Mb2FkZWREYXRhOm51bGwsb25Mb2FkZWRNZXRhZGF0YTpudWxsLG9uTG9hZEVuZDpudWxsLG9uTG9hZFN0YXJ0Om51bGwsb25NZXNzYWdlOm51bGwsb25NZXNzYWdlRXJyb3I6bnVsbCxvbk1vdXNlRG93bjpudWxsLG9uTW91c2VFbnRlcjpudWxsLG9uTW91c2VMZWF2ZTpudWxsLG9uTW91c2VNb3ZlOm51bGwsb25Nb3VzZU91dDpudWxsLG9uTW91c2VPdmVyOm51bGwsb25Nb3VzZVVwOm51bGwsb25PZmZsaW5lOm51bGwsb25PbmxpbmU6bnVsbCxvblBhZ2VIaWRlOm51bGwsb25QYWdlU2hvdzpudWxsLG9uUGFzdGU6bnVsbCxvblBhdXNlOm51bGwsb25QbGF5Om51bGwsb25QbGF5aW5nOm51bGwsb25Qb3BTdGF0ZTpudWxsLG9uUHJvZ3Jlc3M6bnVsbCxvblJhdGVDaGFuZ2U6bnVsbCxvblJlamVjdGlvbkhhbmRsZWQ6bnVsbCxvblJlc2V0Om51bGwsb25SZXNpemU6bnVsbCxvblNjcm9sbDpudWxsLG9uU2Nyb2xsRW5kOm51bGwsb25TZWN1cml0eVBvbGljeVZpb2xhdGlvbjpudWxsLG9uU2Vla2VkOm51bGwsb25TZWVraW5nOm51bGwsb25TZWxlY3Q6bnVsbCxvblNsb3RDaGFuZ2U6bnVsbCxvblN0YWxsZWQ6bnVsbCxvblN0b3JhZ2U6bnVsbCxvblN1Ym1pdDpudWxsLG9uU3VzcGVuZDpudWxsLG9uVGltZVVwZGF0ZTpudWxsLG9uVG9nZ2xlOm51bGwsb25VbmhhbmRsZWRSZWplY3Rpb246bnVsbCxvblVubG9hZDpudWxsLG9uVm9sdW1lQ2hhbmdlOm51bGwsb25XYWl0aW5nOm51bGwsb25XaGVlbDpudWxsLG9wZW46JHQsb3B0aW11bTpXdCxwYXR0ZXJuOm51bGwscGluZzpLdCxwbGFjZWhvbGRlcjpudWxsLHBsYXlzSW5saW5lOiR0LHBvcG92ZXI6bnVsbCxwb3BvdmVyVGFyZ2V0Om51bGwscG9wb3ZlclRhcmdldEFjdGlvbjpudWxsLHBvc3RlcjpudWxsLHByZWxvYWQ6bnVsbCxyZWFkT25seTokdCxyZWZlcnJlclBvbGljeTpudWxsLHJlbDpLdCxyZXF1aXJlZDokdCxyZXZlcnNlZDokdCxyb3dzOld0LHJvd1NwYW46V3Qsc2FuZGJveDpLdCxzY29wZTpudWxsLHNjb3BlZDokdCxzZWFtbGVzczokdCxzZWxlY3RlZDokdCxzaGFkb3dSb290Q2xvbmFibGU6JHQsc2hhZG93Um9vdERlbGVnYXRlc0ZvY3VzOiR0LHNoYWRvd1Jvb3RNb2RlOm51bGwsc2hhcGU6bnVsbCxzaXplOld0LHNpemVzOm51bGwsc2xvdDpudWxsLHNwYW46V3Qsc3BlbGxDaGVjazpWdCxzcmM6bnVsbCxzcmNEb2M6bnVsbCxzcmNMYW5nOm51bGwsc3JjU2V0Om51bGwsc3RhcnQ6V3Qsc3RlcDpudWxsLHN0eWxlOm51bGwsdGFiSW5kZXg6V3QsdGFyZ2V0Om51bGwsdGl0bGU6bnVsbCx0cmFuc2xhdGU6bnVsbCx0eXBlOm51bGwsdHlwZU11c3RNYXRjaDokdCx1c2VNYXA6bnVsbCx2YWx1ZTpWdCx3aWR0aDpXdCx3cmFwOm51bGwsd3JpdGluZ1N1Z2dlc3Rpb25zOm51bGwsYWxpZ246bnVsbCxhTGluazpudWxsLGFyY2hpdmU6S3QsYXhpczpudWxsLGJhY2tncm91bmQ6bnVsbCxiZ0NvbG9yOm51bGwsYm9yZGVyOld0LGJvcmRlckNvbG9yOm51bGwsYm90dG9tTWFyZ2luOld0LGNlbGxQYWRkaW5nOm51bGwsY2VsbFNwYWNpbmc6bnVsbCxjaGFyOm51bGwsY2hhck9mZjpudWxsLGNsYXNzSWQ6bnVsbCxjbGVhcjpudWxsLGNvZGU6bnVsbCxjb2RlQmFzZTpudWxsLGNvZGVUeXBlOm51bGwsY29sb3I6bnVsbCxjb21wYWN0OiR0LGRlY2xhcmU6JHQsZXZlbnQ6bnVsbCxmYWNlOm51bGwsZnJhbWU6bnVsbCxmcmFtZUJvcmRlcjpudWxsLGhTcGFjZTpXdCxsZWZ0TWFyZ2luOld0LGxpbms6bnVsbCxsb25nRGVzYzpudWxsLGxvd1NyYzpudWxsLG1hcmdpbkhlaWdodDpXdCxtYXJnaW5XaWR0aDpXdCxub1Jlc2l6ZTokdCxub0hyZWY6JHQsbm9TaGFkZTokdCxub1dyYXA6JHQsb2JqZWN0Om51bGwscHJvZmlsZTpudWxsLHByb21wdDpudWxsLHJldjpudWxsLHJpZ2h0TWFyZ2luOld0LHJ1bGVzOm51bGwsc2NoZW1lOm51bGwsc2Nyb2xsaW5nOlZ0LHN0YW5kYnk6bnVsbCxzdW1tYXJ5Om51bGwsdGV4dDpudWxsLHRvcE1hcmdpbjpXdCx2YWx1ZVR5cGU6bnVsbCx2ZXJzaW9uOm51bGwsdkFsaWduOm51bGwsdkxpbms6bnVsbCx2U3BhY2U6V3QsYWxsb3dUcmFuc3BhcmVuY3k6bnVsbCxhdXRvQ29ycmVjdDpudWxsLGF1dG9TYXZlOm51bGwsZGlzYWJsZVBpY3R1cmVJblBpY3R1cmU6JHQsZGlzYWJsZVJlbW90ZVBsYXliYWNrOiR0LHByZWZpeDpudWxsLHByb3BlcnR5Om51bGwscmVzdWx0czpXdCxzZWN1cml0eTpudWxsLHVuc2VsZWN0YWJsZTpudWxsfX0pLGRuPW5uKHtzcGFjZToic3ZnIixhdHRyaWJ1dGVzOnthY2NlbnRIZWlnaHQ6ImFjY2VudC1oZWlnaHQiLGFsaWdubWVudEJhc2VsaW5lOiJhbGlnbm1lbnQtYmFzZWxpbmUiLGFyYWJpY0Zvcm06ImFyYWJpYy1mb3JtIixiYXNlbGluZVNoaWZ0OiJiYXNlbGluZS1zaGlmdCIsY2FwSGVpZ2h0OiJjYXAtaGVpZ2h0IixjbGFzc05hbWU6ImNsYXNzIixjbGlwUGF0aDoiY2xpcC1wYXRoIixjbGlwUnVsZToiY2xpcC1ydWxlIixjb2xvckludGVycG9sYXRpb246ImNvbG9yLWludGVycG9sYXRpb24iLGNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnM6ImNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycyIsY29sb3JQcm9maWxlOiJjb2xvci1wcm9maWxlIixjb2xvclJlbmRlcmluZzoiY29sb3ItcmVuZGVyaW5nIixjcm9zc09yaWdpbjoiY3Jvc3NvcmlnaW4iLGRhdGFUeXBlOiJkYXRhdHlwZSIsZG9taW5hbnRCYXNlbGluZToiZG9taW5hbnQtYmFzZWxpbmUiLGVuYWJsZUJhY2tncm91bmQ6ImVuYWJsZS1iYWNrZ3JvdW5kIixmaWxsT3BhY2l0eToiZmlsbC1vcGFjaXR5IixmaWxsUnVsZToiZmlsbC1ydWxlIixmbG9vZENvbG9yOiJmbG9vZC1jb2xvciIsZmxvb2RPcGFjaXR5OiJmbG9vZC1vcGFjaXR5Iixmb250RmFtaWx5OiJmb250LWZhbWlseSIsZm9udFNpemU6ImZvbnQtc2l6ZSIsZm9udFNpemVBZGp1c3Q6ImZvbnQtc2l6ZS1hZGp1c3QiLGZvbnRTdHJldGNoOiJmb250LXN0cmV0Y2giLGZvbnRTdHlsZToiZm9udC1zdHlsZSIsZm9udFZhcmlhbnQ6ImZvbnQtdmFyaWFudCIsZm9udFdlaWdodDoiZm9udC13ZWlnaHQiLGdseXBoTmFtZToiZ2x5cGgtbmFtZSIsZ2x5cGhPcmllbnRhdGlvbkhvcml6b250YWw6ImdseXBoLW9yaWVudGF0aW9uLWhvcml6b250YWwiLGdseXBoT3JpZW50YXRpb25WZXJ0aWNhbDoiZ2x5cGgtb3JpZW50YXRpb24tdmVydGljYWwiLGhyZWZMYW5nOiJocmVmbGFuZyIsaG9yaXpBZHZYOiJob3Jpei1hZHYteCIsaG9yaXpPcmlnaW5YOiJob3Jpei1vcmlnaW4teCIsaG9yaXpPcmlnaW5ZOiJob3Jpei1vcmlnaW4teSIsaW1hZ2VSZW5kZXJpbmc6ImltYWdlLXJlbmRlcmluZyIsbGV0dGVyU3BhY2luZzoibGV0dGVyLXNwYWNpbmciLGxpZ2h0aW5nQ29sb3I6ImxpZ2h0aW5nLWNvbG9yIixtYXJrZXJFbmQ6Im1hcmtlci1lbmQiLG1hcmtlck1pZDoibWFya2VyLW1pZCIsbWFya2VyU3RhcnQ6Im1hcmtlci1zdGFydCIsbmF2RG93bjoibmF2LWRvd24iLG5hdkRvd25MZWZ0OiJuYXYtZG93bi1sZWZ0IixuYXZEb3duUmlnaHQ6Im5hdi1kb3duLXJpZ2h0IixuYXZMZWZ0OiJuYXYtbGVmdCIsbmF2TmV4dDoibmF2LW5leHQiLG5hdlByZXY6Im5hdi1wcmV2IixuYXZSaWdodDoibmF2LXJpZ2h0IixuYXZVcDoibmF2LXVwIixuYXZVcExlZnQ6Im5hdi11cC1sZWZ0IixuYXZVcFJpZ2h0OiJuYXYtdXAtcmlnaHQiLG9uQWJvcnQ6Im9uYWJvcnQiLG9uQWN0aXZhdGU6Im9uYWN0aXZhdGUiLG9uQWZ0ZXJQcmludDoib25hZnRlcnByaW50IixvbkJlZm9yZVByaW50OiJvbmJlZm9yZXByaW50IixvbkJlZ2luOiJvbmJlZ2luIixvbkNhbmNlbDoib25jYW5jZWwiLG9uQ2FuUGxheToib25jYW5wbGF5IixvbkNhblBsYXlUaHJvdWdoOiJvbmNhbnBsYXl0aHJvdWdoIixvbkNoYW5nZToib25jaGFuZ2UiLG9uQ2xpY2s6Im9uY2xpY2siLG9uQ2xvc2U6Im9uY2xvc2UiLG9uQ29weToib25jb3B5IixvbkN1ZUNoYW5nZToib25jdWVjaGFuZ2UiLG9uQ3V0OiJvbmN1dCIsb25EYmxDbGljazoib25kYmxjbGljayIsb25EcmFnOiJvbmRyYWciLG9uRHJhZ0VuZDoib25kcmFnZW5kIixvbkRyYWdFbnRlcjoib25kcmFnZW50ZXIiLG9uRHJhZ0V4aXQ6Im9uZHJhZ2V4aXQiLG9uRHJhZ0xlYXZlOiJvbmRyYWdsZWF2ZSIsb25EcmFnT3Zlcjoib25kcmFnb3ZlciIsb25EcmFnU3RhcnQ6Im9uZHJhZ3N0YXJ0IixvbkRyb3A6Im9uZHJvcCIsb25EdXJhdGlvbkNoYW5nZToib25kdXJhdGlvbmNoYW5nZSIsb25FbXB0aWVkOiJvbmVtcHRpZWQiLG9uRW5kOiJvbmVuZCIsb25FbmRlZDoib25lbmRlZCIsb25FcnJvcjoib25lcnJvciIsb25Gb2N1czoib25mb2N1cyIsb25Gb2N1c0luOiJvbmZvY3VzaW4iLG9uRm9jdXNPdXQ6Im9uZm9jdXNvdXQiLG9uSGFzaENoYW5nZToib25oYXNoY2hhbmdlIixvbklucHV0OiJvbmlucHV0IixvbkludmFsaWQ6Im9uaW52YWxpZCIsb25LZXlEb3duOiJvbmtleWRvd24iLG9uS2V5UHJlc3M6Im9ua2V5cHJlc3MiLG9uS2V5VXA6Im9ua2V5dXAiLG9uTG9hZDoib25sb2FkIixvbkxvYWRlZERhdGE6Im9ubG9hZGVkZGF0YSIsb25Mb2FkZWRNZXRhZGF0YToib25sb2FkZWRtZXRhZGF0YSIsb25Mb2FkU3RhcnQ6Im9ubG9hZHN0YXJ0Iixvbk1lc3NhZ2U6Im9ubWVzc2FnZSIsb25Nb3VzZURvd246Im9ubW91c2Vkb3duIixvbk1vdXNlRW50ZXI6Im9ubW91c2VlbnRlciIsb25Nb3VzZUxlYXZlOiJvbm1vdXNlbGVhdmUiLG9uTW91c2VNb3ZlOiJvbm1vdXNlbW92ZSIsb25Nb3VzZU91dDoib25tb3VzZW91dCIsb25Nb3VzZU92ZXI6Im9ubW91c2VvdmVyIixvbk1vdXNlVXA6Im9ubW91c2V1cCIsb25Nb3VzZVdoZWVsOiJvbm1vdXNld2hlZWwiLG9uT2ZmbGluZToib25vZmZsaW5lIixvbk9ubGluZToib25vbmxpbmUiLG9uUGFnZUhpZGU6Im9ucGFnZWhpZGUiLG9uUGFnZVNob3c6Im9ucGFnZXNob3ciLG9uUGFzdGU6Im9ucGFzdGUiLG9uUGF1c2U6Im9ucGF1c2UiLG9uUGxheToib25wbGF5IixvblBsYXlpbmc6Im9ucGxheWluZyIsb25Qb3BTdGF0ZToib25wb3BzdGF0ZSIsb25Qcm9ncmVzczoib25wcm9ncmVzcyIsb25SYXRlQ2hhbmdlOiJvbnJhdGVjaGFuZ2UiLG9uUmVwZWF0OiJvbnJlcGVhdCIsb25SZXNldDoib25yZXNldCIsb25SZXNpemU6Im9ucmVzaXplIixvblNjcm9sbDoib25zY3JvbGwiLG9uU2Vla2VkOiJvbnNlZWtlZCIsb25TZWVraW5nOiJvbnNlZWtpbmciLG9uU2VsZWN0OiJvbnNlbGVjdCIsb25TaG93OiJvbnNob3ciLG9uU3RhbGxlZDoib25zdGFsbGVkIixvblN0b3JhZ2U6Im9uc3RvcmFnZSIsb25TdWJtaXQ6Im9uc3VibWl0IixvblN1c3BlbmQ6Im9uc3VzcGVuZCIsb25UaW1lVXBkYXRlOiJvbnRpbWV1cGRhdGUiLG9uVG9nZ2xlOiJvbnRvZ2dsZSIsb25VbmxvYWQ6Im9udW5sb2FkIixvblZvbHVtZUNoYW5nZToib252b2x1bWVjaGFuZ2UiLG9uV2FpdGluZzoib253YWl0aW5nIixvblpvb206Im9uem9vbSIsb3ZlcmxpbmVQb3NpdGlvbjoib3ZlcmxpbmUtcG9zaXRpb24iLG92ZXJsaW5lVGhpY2tuZXNzOiJvdmVybGluZS10aGlja25lc3MiLHBhaW50T3JkZXI6InBhaW50LW9yZGVyIixwYW5vc2UxOiJwYW5vc2UtMSIscG9pbnRlckV2ZW50czoicG9pbnRlci1ldmVudHMiLHJlZmVycmVyUG9saWN5OiJyZWZlcnJlcnBvbGljeSIscmVuZGVyaW5nSW50ZW50OiJyZW5kZXJpbmctaW50ZW50IixzaGFwZVJlbmRlcmluZzoic2hhcGUtcmVuZGVyaW5nIixzdG9wQ29sb3I6InN0b3AtY29sb3IiLHN0b3BPcGFjaXR5OiJzdG9wLW9wYWNpdHkiLHN0cmlrZXRocm91Z2hQb3NpdGlvbjoic3RyaWtldGhyb3VnaC1wb3NpdGlvbiIsc3RyaWtldGhyb3VnaFRoaWNrbmVzczoic3RyaWtldGhyb3VnaC10aGlja25lc3MiLHN0cm9rZURhc2hBcnJheToic3Ryb2tlLWRhc2hhcnJheSIsc3Ryb2tlRGFzaE9mZnNldDoic3Ryb2tlLWRhc2hvZmZzZXQiLHN0cm9rZUxpbmVDYXA6InN0cm9rZS1saW5lY2FwIixzdHJva2VMaW5lSm9pbjoic3Ryb2tlLWxpbmVqb2luIixzdHJva2VNaXRlckxpbWl0OiJzdHJva2UtbWl0ZXJsaW1pdCIsc3Ryb2tlT3BhY2l0eToic3Ryb2tlLW9wYWNpdHkiLHN0cm9rZVdpZHRoOiJzdHJva2Utd2lkdGgiLHRhYkluZGV4OiJ0YWJpbmRleCIsdGV4dEFuY2hvcjoidGV4dC1hbmNob3IiLHRleHREZWNvcmF0aW9uOiJ0ZXh0LWRlY29yYXRpb24iLHRleHRSZW5kZXJpbmc6InRleHQtcmVuZGVyaW5nIix0cmFuc2Zvcm1PcmlnaW46InRyYW5zZm9ybS1vcmlnaW4iLHR5cGVPZjoidHlwZW9mIix1bmRlcmxpbmVQb3NpdGlvbjoidW5kZXJsaW5lLXBvc2l0aW9uIix1bmRlcmxpbmVUaGlja25lc3M6InVuZGVybGluZS10aGlja25lc3MiLHVuaWNvZGVCaWRpOiJ1bmljb2RlLWJpZGkiLHVuaWNvZGVSYW5nZToidW5pY29kZS1yYW5nZSIsdW5pdHNQZXJFbToidW5pdHMtcGVyLWVtIix2QWxwaGFiZXRpYzoidi1hbHBoYWJldGljIix2SGFuZ2luZzoidi1oYW5naW5nIix2SWRlb2dyYXBoaWM6InYtaWRlb2dyYXBoaWMiLHZNYXRoZW1hdGljYWw6InYtbWF0aGVtYXRpY2FsIix2ZWN0b3JFZmZlY3Q6InZlY3Rvci1lZmZlY3QiLHZlcnRBZHZZOiJ2ZXJ0LWFkdi15Iix2ZXJ0T3JpZ2luWDoidmVydC1vcmlnaW4teCIsdmVydE9yaWdpblk6InZlcnQtb3JpZ2luLXkiLHdvcmRTcGFjaW5nOiJ3b3JkLXNwYWNpbmciLHdyaXRpbmdNb2RlOiJ3cml0aW5nLW1vZGUiLHhIZWlnaHQ6IngtaGVpZ2h0IixwbGF5YmFja09yZGVyOiJwbGF5YmFja29yZGVyIix0aW1lbGluZUJlZ2luOiJ0aW1lbGluZWJlZ2luIn0sdHJhbnNmb3JtOm9uLHByb3BlcnRpZXM6e2Fib3V0Olh0LGFjY2VudEhlaWdodDpXdCxhY2N1bXVsYXRlOm51bGwsYWRkaXRpdmU6bnVsbCxhbGlnbm1lbnRCYXNlbGluZTpudWxsLGFscGhhYmV0aWM6V3QsYW1wbGl0dWRlOld0LGFyYWJpY0Zvcm06bnVsbCxhc2NlbnQ6V3QsYXR0cmlidXRlTmFtZTpudWxsLGF0dHJpYnV0ZVR5cGU6bnVsbCxhemltdXRoOld0LGJhbmR3aWR0aDpudWxsLGJhc2VsaW5lU2hpZnQ6bnVsbCxiYXNlRnJlcXVlbmN5Om51bGwsYmFzZVByb2ZpbGU6bnVsbCxiYm94Om51bGwsYmVnaW46bnVsbCxiaWFzOld0LGJ5Om51bGwsY2FsY01vZGU6bnVsbCxjYXBIZWlnaHQ6V3QsY2xhc3NOYW1lOkt0LGNsaXA6bnVsbCxjbGlwUGF0aDpudWxsLGNsaXBQYXRoVW5pdHM6bnVsbCxjbGlwUnVsZTpudWxsLGNvbG9yOm51bGwsY29sb3JJbnRlcnBvbGF0aW9uOm51bGwsY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVyczpudWxsLGNvbG9yUHJvZmlsZTpudWxsLGNvbG9yUmVuZGVyaW5nOm51bGwsY29udGVudDpudWxsLGNvbnRlbnRTY3JpcHRUeXBlOm51bGwsY29udGVudFN0eWxlVHlwZTpudWxsLGNyb3NzT3JpZ2luOm51bGwsY3Vyc29yOm51bGwsY3g6bnVsbCxjeTpudWxsLGQ6bnVsbCxkYXRhVHlwZTpudWxsLGRlZmF1bHRBY3Rpb246bnVsbCxkZXNjZW50Old0LGRpZmZ1c2VDb25zdGFudDpXdCxkaXJlY3Rpb246bnVsbCxkaXNwbGF5Om51bGwsZHVyOm51bGwsZGl2aXNvcjpXdCxkb21pbmFudEJhc2VsaW5lOm51bGwsZG93bmxvYWQ6JHQsZHg6bnVsbCxkeTpudWxsLGVkZ2VNb2RlOm51bGwsZWRpdGFibGU6bnVsbCxlbGV2YXRpb246V3QsZW5hYmxlQmFja2dyb3VuZDpudWxsLGVuZDpudWxsLGV2ZW50Om51bGwsZXhwb25lbnQ6V3QsZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDpudWxsLGZpbGw6bnVsbCxmaWxsT3BhY2l0eTpXdCxmaWxsUnVsZTpudWxsLGZpbHRlcjpudWxsLGZpbHRlclJlczpudWxsLGZpbHRlclVuaXRzOm51bGwsZmxvb2RDb2xvcjpudWxsLGZsb29kT3BhY2l0eTpudWxsLGZvY3VzYWJsZTpudWxsLGZvY3VzSGlnaGxpZ2h0Om51bGwsZm9udEZhbWlseTpudWxsLGZvbnRTaXplOm51bGwsZm9udFNpemVBZGp1c3Q6bnVsbCxmb250U3RyZXRjaDpudWxsLGZvbnRTdHlsZTpudWxsLGZvbnRWYXJpYW50Om51bGwsZm9udFdlaWdodDpudWxsLGZvcm1hdDpudWxsLGZyOm51bGwsZnJvbTpudWxsLGZ4Om51bGwsZnk6bnVsbCxnMTpZdCxnMjpZdCxnbHlwaE5hbWU6WXQsZ2x5cGhPcmllbnRhdGlvbkhvcml6b250YWw6bnVsbCxnbHlwaE9yaWVudGF0aW9uVmVydGljYWw6bnVsbCxnbHlwaFJlZjpudWxsLGdyYWRpZW50VHJhbnNmb3JtOm51bGwsZ3JhZGllbnRVbml0czpudWxsLGhhbmRsZXI6bnVsbCxoYW5naW5nOld0LGhhdGNoQ29udGVudFVuaXRzOm51bGwsaGF0Y2hVbml0czpudWxsLGhlaWdodDpudWxsLGhyZWY6bnVsbCxocmVmTGFuZzpudWxsLGhvcml6QWR2WDpXdCxob3Jpek9yaWdpblg6V3QsaG9yaXpPcmlnaW5ZOld0LGlkOm51bGwsaWRlb2dyYXBoaWM6V3QsaW1hZ2VSZW5kZXJpbmc6bnVsbCxpbml0aWFsVmlzaWJpbGl0eTpudWxsLGluOm51bGwsaW4yOm51bGwsaW50ZXJjZXB0Old0LGs6V3QsazE6V3QsazI6V3QsazM6V3QsazQ6V3Qsa2VybmVsTWF0cml4Olh0LGtlcm5lbFVuaXRMZW5ndGg6bnVsbCxrZXlQb2ludHM6bnVsbCxrZXlTcGxpbmVzOm51bGwsa2V5VGltZXM6bnVsbCxrZXJuaW5nOm51bGwsbGFuZzpudWxsLGxlbmd0aEFkanVzdDpudWxsLGxldHRlclNwYWNpbmc6bnVsbCxsaWdodGluZ0NvbG9yOm51bGwsbGltaXRpbmdDb25lQW5nbGU6V3QsbG9jYWw6bnVsbCxtYXJrZXJFbmQ6bnVsbCxtYXJrZXJNaWQ6bnVsbCxtYXJrZXJTdGFydDpudWxsLG1hcmtlckhlaWdodDpudWxsLG1hcmtlclVuaXRzOm51bGwsbWFya2VyV2lkdGg6bnVsbCxtYXNrOm51bGwsbWFza0NvbnRlbnRVbml0czpudWxsLG1hc2tVbml0czpudWxsLG1hdGhlbWF0aWNhbDpudWxsLG1heDpudWxsLG1lZGlhOm51bGwsbWVkaWFDaGFyYWN0ZXJFbmNvZGluZzpudWxsLG1lZGlhQ29udGVudEVuY29kaW5nczpudWxsLG1lZGlhU2l6ZTpXdCxtZWRpYVRpbWU6bnVsbCxtZXRob2Q6bnVsbCxtaW46bnVsbCxtb2RlOm51bGwsbmFtZTpudWxsLG5hdkRvd246bnVsbCxuYXZEb3duTGVmdDpudWxsLG5hdkRvd25SaWdodDpudWxsLG5hdkxlZnQ6bnVsbCxuYXZOZXh0Om51bGwsbmF2UHJldjpudWxsLG5hdlJpZ2h0Om51bGwsbmF2VXA6bnVsbCxuYXZVcExlZnQ6bnVsbCxuYXZVcFJpZ2h0Om51bGwsbnVtT2N0YXZlczpudWxsLG9ic2VydmVyOm51bGwsb2Zmc2V0Om51bGwsb25BYm9ydDpudWxsLG9uQWN0aXZhdGU6bnVsbCxvbkFmdGVyUHJpbnQ6bnVsbCxvbkJlZm9yZVByaW50Om51bGwsb25CZWdpbjpudWxsLG9uQ2FuY2VsOm51bGwsb25DYW5QbGF5Om51bGwsb25DYW5QbGF5VGhyb3VnaDpudWxsLG9uQ2hhbmdlOm51bGwsb25DbGljazpudWxsLG9uQ2xvc2U6bnVsbCxvbkNvcHk6bnVsbCxvbkN1ZUNoYW5nZTpudWxsLG9uQ3V0Om51bGwsb25EYmxDbGljazpudWxsLG9uRHJhZzpudWxsLG9uRHJhZ0VuZDpudWxsLG9uRHJhZ0VudGVyOm51bGwsb25EcmFnRXhpdDpudWxsLG9uRHJhZ0xlYXZlOm51bGwsb25EcmFnT3ZlcjpudWxsLG9uRHJhZ1N0YXJ0Om51bGwsb25Ecm9wOm51bGwsb25EdXJhdGlvbkNoYW5nZTpudWxsLG9uRW1wdGllZDpudWxsLG9uRW5kOm51bGwsb25FbmRlZDpudWxsLG9uRXJyb3I6bnVsbCxvbkZvY3VzOm51bGwsb25Gb2N1c0luOm51bGwsb25Gb2N1c091dDpudWxsLG9uSGFzaENoYW5nZTpudWxsLG9uSW5wdXQ6bnVsbCxvbkludmFsaWQ6bnVsbCxvbktleURvd246bnVsbCxvbktleVByZXNzOm51bGwsb25LZXlVcDpudWxsLG9uTG9hZDpudWxsLG9uTG9hZGVkRGF0YTpudWxsLG9uTG9hZGVkTWV0YWRhdGE6bnVsbCxvbkxvYWRTdGFydDpudWxsLG9uTWVzc2FnZTpudWxsLG9uTW91c2VEb3duOm51bGwsb25Nb3VzZUVudGVyOm51bGwsb25Nb3VzZUxlYXZlOm51bGwsb25Nb3VzZU1vdmU6bnVsbCxvbk1vdXNlT3V0Om51bGwsb25Nb3VzZU92ZXI6bnVsbCxvbk1vdXNlVXA6bnVsbCxvbk1vdXNlV2hlZWw6bnVsbCxvbk9mZmxpbmU6bnVsbCxvbk9ubGluZTpudWxsLG9uUGFnZUhpZGU6bnVsbCxvblBhZ2VTaG93Om51bGwsb25QYXN0ZTpudWxsLG9uUGF1c2U6bnVsbCxvblBsYXk6bnVsbCxvblBsYXlpbmc6bnVsbCxvblBvcFN0YXRlOm51bGwsb25Qcm9ncmVzczpudWxsLG9uUmF0ZUNoYW5nZTpudWxsLG9uUmVwZWF0Om51bGwsb25SZXNldDpudWxsLG9uUmVzaXplOm51bGwsb25TY3JvbGw6bnVsbCxvblNlZWtlZDpudWxsLG9uU2Vla2luZzpudWxsLG9uU2VsZWN0Om51bGwsb25TaG93Om51bGwsb25TdGFsbGVkOm51bGwsb25TdG9yYWdlOm51bGwsb25TdWJtaXQ6bnVsbCxvblN1c3BlbmQ6bnVsbCxvblRpbWVVcGRhdGU6bnVsbCxvblRvZ2dsZTpudWxsLG9uVW5sb2FkOm51bGwsb25Wb2x1bWVDaGFuZ2U6bnVsbCxvbldhaXRpbmc6bnVsbCxvblpvb206bnVsbCxvcGFjaXR5Om51bGwsb3BlcmF0b3I6bnVsbCxvcmRlcjpudWxsLG9yaWVudDpudWxsLG9yaWVudGF0aW9uOm51bGwsb3JpZ2luOm51bGwsb3ZlcmZsb3c6bnVsbCxvdmVybGF5Om51bGwsb3ZlcmxpbmVQb3NpdGlvbjpXdCxvdmVybGluZVRoaWNrbmVzczpXdCxwYWludE9yZGVyOm51bGwscGFub3NlMTpudWxsLHBhdGg6bnVsbCxwYXRoTGVuZ3RoOld0LHBhdHRlcm5Db250ZW50VW5pdHM6bnVsbCxwYXR0ZXJuVHJhbnNmb3JtOm51bGwscGF0dGVyblVuaXRzOm51bGwscGhhc2U6bnVsbCxwaW5nOkt0LHBpdGNoOm51bGwscGxheWJhY2tPcmRlcjpudWxsLHBvaW50ZXJFdmVudHM6bnVsbCxwb2ludHM6bnVsbCxwb2ludHNBdFg6V3QscG9pbnRzQXRZOld0LHBvaW50c0F0WjpXdCxwcmVzZXJ2ZUFscGhhOm51bGwscHJlc2VydmVBc3BlY3RSYXRpbzpudWxsLHByaW1pdGl2ZVVuaXRzOm51bGwscHJvcGFnYXRlOm51bGwscHJvcGVydHk6WHQscjpudWxsLHJhZGl1czpudWxsLHJlZmVycmVyUG9saWN5Om51bGwscmVmWDpudWxsLHJlZlk6bnVsbCxyZWw6WHQscmV2Olh0LHJlbmRlcmluZ0ludGVudDpudWxsLHJlcGVhdENvdW50Om51bGwscmVwZWF0RHVyOm51bGwscmVxdWlyZWRFeHRlbnNpb25zOlh0LHJlcXVpcmVkRmVhdHVyZXM6WHQscmVxdWlyZWRGb250czpYdCxyZXF1aXJlZEZvcm1hdHM6WHQscmVzb3VyY2U6bnVsbCxyZXN0YXJ0Om51bGwscmVzdWx0Om51bGwscm90YXRlOm51bGwscng6bnVsbCxyeTpudWxsLHNjYWxlOm51bGwsc2VlZDpudWxsLHNoYXBlUmVuZGVyaW5nOm51bGwsc2lkZTpudWxsLHNsb3BlOm51bGwsc25hcHNob3RUaW1lOm51bGwsc3BlY3VsYXJDb25zdGFudDpXdCxzcGVjdWxhckV4cG9uZW50Old0LHNwcmVhZE1ldGhvZDpudWxsLHNwYWNpbmc6bnVsbCxzdGFydE9mZnNldDpudWxsLHN0ZERldmlhdGlvbjpudWxsLHN0ZW1oOm51bGwsc3RlbXY6bnVsbCxzdGl0Y2hUaWxlczpudWxsLHN0b3BDb2xvcjpudWxsLHN0b3BPcGFjaXR5Om51bGwsc3RyaWtldGhyb3VnaFBvc2l0aW9uOld0LHN0cmlrZXRocm91Z2hUaGlja25lc3M6V3Qsc3RyaW5nOm51bGwsc3Ryb2tlOm51bGwsc3Ryb2tlRGFzaEFycmF5Olh0LHN0cm9rZURhc2hPZmZzZXQ6bnVsbCxzdHJva2VMaW5lQ2FwOm51bGwsc3Ryb2tlTGluZUpvaW46bnVsbCxzdHJva2VNaXRlckxpbWl0Old0LHN0cm9rZU9wYWNpdHk6V3Qsc3Ryb2tlV2lkdGg6bnVsbCxzdHlsZTpudWxsLHN1cmZhY2VTY2FsZTpXdCxzeW5jQmVoYXZpb3I6bnVsbCxzeW5jQmVoYXZpb3JEZWZhdWx0Om51bGwsc3luY01hc3RlcjpudWxsLHN5bmNUb2xlcmFuY2U6bnVsbCxzeW5jVG9sZXJhbmNlRGVmYXVsdDpudWxsLHN5c3RlbUxhbmd1YWdlOlh0LHRhYkluZGV4Old0LHRhYmxlVmFsdWVzOm51bGwsdGFyZ2V0Om51bGwsdGFyZ2V0WDpXdCx0YXJnZXRZOld0LHRleHRBbmNob3I6bnVsbCx0ZXh0RGVjb3JhdGlvbjpudWxsLHRleHRSZW5kZXJpbmc6bnVsbCx0ZXh0TGVuZ3RoOm51bGwsdGltZWxpbmVCZWdpbjpudWxsLHRpdGxlOm51bGwsdHJhbnNmb3JtQmVoYXZpb3I6bnVsbCx0eXBlOm51bGwsdHlwZU9mOlh0LHRvOm51bGwsdHJhbnNmb3JtOm51bGwsdHJhbnNmb3JtT3JpZ2luOm51bGwsdTE6bnVsbCx1MjpudWxsLHVuZGVybGluZVBvc2l0aW9uOld0LHVuZGVybGluZVRoaWNrbmVzczpXdCx1bmljb2RlOm51bGwsdW5pY29kZUJpZGk6bnVsbCx1bmljb2RlUmFuZ2U6bnVsbCx1bml0c1BlckVtOld0LHZhbHVlczpudWxsLHZBbHBoYWJldGljOld0LHZNYXRoZW1hdGljYWw6V3QsdmVjdG9yRWZmZWN0Om51bGwsdkhhbmdpbmc6V3QsdklkZW9ncmFwaGljOld0LHZlcnNpb246bnVsbCx2ZXJ0QWR2WTpXdCx2ZXJ0T3JpZ2luWDpXdCx2ZXJ0T3JpZ2luWTpXdCx2aWV3Qm94Om51bGwsdmlld1RhcmdldDpudWxsLHZpc2liaWxpdHk6bnVsbCx3aWR0aDpudWxsLHdpZHRoczpudWxsLHdvcmRTcGFjaW5nOm51bGwsd3JpdGluZ01vZGU6bnVsbCx4Om51bGwseDE6bnVsbCx4MjpudWxsLHhDaGFubmVsU2VsZWN0b3I6bnVsbCx4SGVpZ2h0Old0LHk6bnVsbCx5MTpudWxsLHkyOm51bGwseUNoYW5uZWxTZWxlY3RvcjpudWxsLHo6bnVsbCx6b29tQW5kUGFuOm51bGx9fSkscG49anQoW2FuLHJuLGxuLGNuLHVuXSwiaHRtbCIpLGZuPWp0KFthbixybixsbixjbixkbl0sInN2ZyIpO2Z1bmN0aW9uIGhuKGUpe2lmKGUuYWxsb3dlZEVsZW1lbnRzJiZlLmRpc2FsbG93ZWRFbGVtZW50cyl0aHJvdyBuZXcgVHlwZUVycm9yKCJPbmx5IG9uZSBvZiBgYWxsb3dlZEVsZW1lbnRzYCBhbmQgYGRpc2FsbG93ZWRFbGVtZW50c2Agc2hvdWxkIGJlIGRlZmluZWQiKTtpZihlLmFsbG93ZWRFbGVtZW50c3x8ZS5kaXNhbGxvd2VkRWxlbWVudHN8fGUuYWxsb3dFbGVtZW50KXJldHVybiB0PT57cHQodCwiZWxlbWVudCIsKHQsbixyKT0+e2NvbnN0IGk9cjtsZXQgYTtpZihlLmFsbG93ZWRFbGVtZW50cz9hPSFlLmFsbG93ZWRFbGVtZW50cy5pbmNsdWRlcyh0LnRhZ05hbWUpOmUuZGlzYWxsb3dlZEVsZW1lbnRzJiYoYT1lLmRpc2FsbG93ZWRFbGVtZW50cy5pbmNsdWRlcyh0LnRhZ05hbWUpKSwhYSYmZS5hbGxvd0VsZW1lbnQmJiJudW1iZXIiPT09dHlwZW9mIG4mJihhPSFlLmFsbG93RWxlbWVudCh0LG4saSkpLGEmJiJudW1iZXIiPT09dHlwZW9mIG4pcmV0dXJuIGUudW53cmFwRGlzYWxsb3dlZCYmdC5jaGlsZHJlbj9pLmNoaWxkcmVuLnNwbGljZShuLDEsLi4udC5jaGlsZHJlbik6aS5jaGlsZHJlbi5zcGxpY2UobiwxKSxufSl9fWNvbnN0IG1uPVsiaHR0cCIsImh0dHBzIiwibWFpbHRvIiwidGVsIl07dmFyIGduPW4oMTIzKSxibj1uLm4oZ24pO2Z1bmN0aW9uIHluKGUpe2NvbnN0IHQ9ZSYmIm9iamVjdCI9PT10eXBlb2YgZSYmInRleHQiPT09ZS50eXBlP2UudmFsdWV8fCIiOmU7cmV0dXJuInN0cmluZyI9PT10eXBlb2YgdCYmIiI9PT10LnJlcGxhY2UoL1sgXHRcblxmXHJdL2csIiIpfWNvbnN0IHZuPS9eZGF0YVstXHcuOl0rJC9pLEVuPS8tW2Etel0vZyx3bj0vW0EtWl0vZztmdW5jdGlvbiBTbihlKXtyZXR1cm4iLSIrZS50b0xvd2VyQ2FzZSgpfWZ1bmN0aW9uIF9uKGUpe3JldHVybiBlLmNoYXJBdCgxKS50b1VwcGVyQ2FzZSgpfWNvbnN0IFRuPXtjbGFzc0lkOiJjbGFzc0lEIixkYXRhVHlwZToiZGF0YXR5cGUiLGl0ZW1JZDoiaXRlbUlEIixzdHJva2VEYXNoQXJyYXk6InN0cm9rZURhc2hhcnJheSIsc3Ryb2tlRGFzaE9mZnNldDoic3Ryb2tlRGFzaG9mZnNldCIsc3Ryb2tlTGluZUNhcDoic3Ryb2tlTGluZWNhcCIsc3Ryb2tlTGluZUpvaW46InN0cm9rZUxpbmVqb2luIixzdHJva2VNaXRlckxpbWl0OiJzdHJva2VNaXRlcmxpbWl0Iix0eXBlT2Y6InR5cGVvZiIseExpbmtBY3R1YXRlOiJ4bGlua0FjdHVhdGUiLHhMaW5rQXJjUm9sZToieGxpbmtBcmNyb2xlIix4TGlua0hyZWY6InhsaW5rSHJlZiIseExpbmtSb2xlOiJ4bGlua1JvbGUiLHhMaW5rU2hvdzoieGxpbmtTaG93Iix4TGlua1RpdGxlOiJ4bGlua1RpdGxlIix4TGlua1R5cGU6InhsaW5rVHlwZSIseG1sbnNYTGluazoieG1sbnNYbGluayJ9O3ZhciBBbj1uKDEyNCksa249bi5uKEFuKTtjb25zdCB4bj17fS5oYXNPd25Qcm9wZXJ0eSxDbj1uZXcgU2V0KFsidGFibGUiLCJ0aGVhZCIsInRib2R5IiwidGZvb3QiLCJ0ciJdKTtmdW5jdGlvbiBJbihlLHQpe2NvbnN0IG49W107bGV0IHIsaT0tMTtmb3IoOysraTx0LmNoaWxkcmVuLmxlbmd0aDspcj10LmNoaWxkcmVuW2ldLCJlbGVtZW50Ij09PXIudHlwZT9uLnB1c2goUm4oZSxyLGksdCkpOiJ0ZXh0Ij09PXIudHlwZT8iZWxlbWVudCI9PT10LnR5cGUmJkNuLmhhcyh0LnRhZ05hbWUpJiZ5bihyKXx8bi5wdXNoKHIudmFsdWUpOiJyYXciIT09ci50eXBlfHxlLm9wdGlvbnMuc2tpcEh0bWx8fG4ucHVzaChyLnZhbHVlKTtyZXR1cm4gbn1mdW5jdGlvbiBSbihlLHQsbixyKXtjb25zdCBpPWUub3B0aW9ucyxhPWUuc2NoZW1hLHM9dC50YWdOYW1lLGw9e307bGV0IGMsdT1hO2lmKCJodG1sIj09PWEuc3BhY2UmJiJzdmciPT09cyYmKHU9Zm4sZS5zY2hlbWE9dSksdC5wcm9wZXJ0aWVzKWZvcihjIGluIHQucHJvcGVydGllcyl4bi5jYWxsKHQucHJvcGVydGllcyxjKSYmTm4obCxjLHQucHJvcGVydGllc1tjXSxlKTsib2wiIT09cyYmInVsIiE9PXN8fGUubGlzdERlcHRoKys7Y29uc3QgZD1JbihlLHQpOyJvbCIhPT1zJiYidWwiIT09c3x8ZS5saXN0RGVwdGgtLSxlLnNjaGVtYT1hO2NvbnN0IHA9dC5wb3NpdGlvbnx8e3N0YXJ0OntsaW5lOm51bGwsY29sdW1uOm51bGwsb2Zmc2V0Om51bGx9LGVuZDp7bGluZTpudWxsLGNvbHVtbjpudWxsLG9mZnNldDpudWxsfX0sZj1pLmNvbXBvbmVudHMmJnhuLmNhbGwoaS5jb21wb25lbnRzLHMpP2kuY29tcG9uZW50c1tzXTpzLGg9InN0cmluZyI9PT10eXBlb2YgZnx8Zj09PW8uYS5GcmFnbWVudDtpZighYm4uYS5pc1ZhbGlkRWxlbWVudFR5cGUoZikpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ29tcG9uZW50IGZvciBuYW1lIGAiLmNvbmNhdChzLCJgIG5vdCBkZWZpbmVkIG9yIGlzIG5vdCByZW5kZXJhYmxlIikpO2lmKGwua2V5PVtzLHAuc3RhcnQubGluZSxwLnN0YXJ0LmNvbHVtbixuXS5qb2luKCItIiksImEiPT09cyYmaS5saW5rVGFyZ2V0JiYobC50YXJnZXQ9ImZ1bmN0aW9uIj09PXR5cGVvZiBpLmxpbmtUYXJnZXQ/aS5saW5rVGFyZ2V0KFN0cmluZyhsLmhyZWZ8fCIiKSx0LmNoaWxkcmVuLCJzdHJpbmciPT09dHlwZW9mIGwudGl0bGU/bC50aXRsZTpudWxsKTppLmxpbmtUYXJnZXQpLCJhIj09PXMmJmkudHJhbnNmb3JtTGlua1VyaSYmKGwuaHJlZj1pLnRyYW5zZm9ybUxpbmtVcmkoU3RyaW5nKGwuaHJlZnx8IiIpLHQuY2hpbGRyZW4sInN0cmluZyI9PT10eXBlb2YgbC50aXRsZT9sLnRpdGxlOm51bGwpKSxofHwiY29kZSIhPT1zfHwiZWxlbWVudCIhPT1yLnR5cGV8fCJwcmUiPT09ci50YWdOYW1lfHwobC5pbmxpbmU9ITApLGh8fCJoMSIhPT1zJiYiaDIiIT09cyYmImgzIiE9PXMmJiJoNCIhPT1zJiYiaDUiIT09cyYmImg2IiE9PXN8fChsLmxldmVsPU51bWJlci5wYXJzZUludChzLmNoYXJBdCgxKSwxMCkpLCJpbWciPT09cyYmaS50cmFuc2Zvcm1JbWFnZVVyaSYmKGwuc3JjPWkudHJhbnNmb3JtSW1hZ2VVcmkoU3RyaW5nKGwuc3JjfHwiIiksU3RyaW5nKGwuYWx0fHwiIiksInN0cmluZyI9PT10eXBlb2YgbC50aXRsZT9sLnRpdGxlOm51bGwpKSwhaCYmImxpIj09PXMmJiJlbGVtZW50Ij09PXIudHlwZSl7Y29uc3QgZT1mdW5jdGlvbihlKXtsZXQgdD0tMTtmb3IoOysrdDxlLmNoaWxkcmVuLmxlbmd0aDspe2NvbnN0IG49ZS5jaGlsZHJlblt0XTtpZigiZWxlbWVudCI9PT1uLnR5cGUmJiJpbnB1dCI9PT1uLnRhZ05hbWUpcmV0dXJuIG59cmV0dXJuIG51bGx9KHQpO2wuY2hlY2tlZD1lJiZlLnByb3BlcnRpZXM/Qm9vbGVhbihlLnByb3BlcnRpZXMuY2hlY2tlZCk6bnVsbCxsLmluZGV4PU9uKHIsdCksbC5vcmRlcmVkPSJvbCI9PT1yLnRhZ05hbWV9dmFyIG07cmV0dXJuIGh8fCJvbCIhPT1zJiYidWwiIT09c3x8KGwub3JkZXJlZD0ib2wiPT09cyxsLmRlcHRoPWUubGlzdERlcHRoKSwidGQiIT09cyYmInRoIiE9PXN8fChsLmFsaWduJiYobC5zdHlsZXx8KGwuc3R5bGU9e30pLGwuc3R5bGUudGV4dEFsaWduPWwuYWxpZ24sZGVsZXRlIGwuYWxpZ24pLGh8fChsLmlzSGVhZGVyPSJ0aCI9PT1zKSksaHx8InRyIiE9PXN8fCJlbGVtZW50IiE9PXIudHlwZXx8KGwuaXNIZWFkZXI9Qm9vbGVhbigidGhlYWQiPT09ci50YWdOYW1lKSksaS5zb3VyY2VQb3MmJihsWyJkYXRhLXNvdXJjZXBvcyJdPVsobT1wKS5zdGFydC5saW5lLCI6IixtLnN0YXJ0LmNvbHVtbiwiLSIsbS5lbmQubGluZSwiOiIsbS5lbmQuY29sdW1uXS5tYXAoZT0+U3RyaW5nKGUpKS5qb2luKCIiKSksIWgmJmkucmF3U291cmNlUG9zJiYobC5zb3VyY2VQb3NpdGlvbj10LnBvc2l0aW9uKSwhaCYmaS5pbmNsdWRlRWxlbWVudEluZGV4JiYobC5pbmRleD1PbihyLHQpLGwuc2libGluZ0NvdW50PU9uKHIpKSxofHwobC5ub2RlPXQpLGQubGVuZ3RoPjA/by5hLmNyZWF0ZUVsZW1lbnQoZixsLGQpOm8uYS5jcmVhdGVFbGVtZW50KGYsbCl9ZnVuY3Rpb24gT24oZSx0KXtsZXQgbj0tMSxyPTA7Zm9yKDsrK248ZS5jaGlsZHJlbi5sZW5ndGgmJmUuY2hpbGRyZW5bbl0hPT10OykiZWxlbWVudCI9PT1lLmNoaWxkcmVuW25dLnR5cGUmJnIrKztyZXR1cm4gcn1mdW5jdGlvbiBObihlLHQsbixyKXtjb25zdCBpPWZ1bmN0aW9uKGUsdCl7Y29uc3Qgbj1IdCh0KTtsZXQgcj10LGk9enQ7aWYobiBpbiBlLm5vcm1hbClyZXR1cm4gZS5wcm9wZXJ0eVtlLm5vcm1hbFtuXV07aWYobi5sZW5ndGg+NCYmImRhdGEiPT09bi5zbGljZSgwLDQpJiZ2bi50ZXN0KHQpKXtpZigiLSI9PT10LmNoYXJBdCg0KSl7Y29uc3QgZT10LnNsaWNlKDUpLnJlcGxhY2UoRW4sX24pO3I9ImRhdGEiK2UuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrZS5zbGljZSgxKX1lbHNle2NvbnN0IGU9dC5zbGljZSg0KTtpZighRW4udGVzdChlKSl7bGV0IG49ZS5yZXBsYWNlKHduLFNuKTsiLSIhPT1uLmNoYXJBdCgwKSYmKG49Ii0iK24pLHQ9ImRhdGEiK259fWk9SnR9cmV0dXJuIG5ldyBpKHIsdCl9KHIuc2NoZW1hLHQpO2xldCBhPW47bnVsbCE9PWEmJnZvaWQgMCE9PWEmJmE9PT1hJiYoQXJyYXkuaXNBcnJheShhKSYmKGE9aS5jb21tYVNlcGFyYXRlZD9mdW5jdGlvbihlLHQpe2NvbnN0IG49dHx8e307cmV0dXJuKCIiPT09ZVtlLmxlbmd0aC0xXT9bLi4uZSwiIl06ZSkuam9pbigobi5wYWRSaWdodD8iICI6IiIpKyIsIisoITE9PT1uLnBhZExlZnQ/IiI6IiAiKSkudHJpbSgpfShhKTphLmpvaW4oIiAiKS50cmltKCkpLCJzdHlsZSI9PT1pLnByb3BlcnR5JiYic3RyaW5nIj09PXR5cGVvZiBhJiYoYT1mdW5jdGlvbihlKXtjb25zdCB0PXt9O3RyeXtrbigpKGUsKGZ1bmN0aW9uKGUsbil7Y29uc3Qgcj0iLW1zLSI9PT1lLnNsaWNlKDAsNCk/Im1zLSIuY29uY2F0KGUuc2xpY2UoNCkpOmU7dFtyLnJlcGxhY2UoLy0oW2Etel0pL2csTW4pXT1ufSkpfWNhdGNoe31yZXR1cm4gdH0oYSkpLGkuc3BhY2UmJmkucHJvcGVydHk/ZVt4bi5jYWxsKFRuLGkucHJvcGVydHkpP1RuW2kucHJvcGVydHldOmkucHJvcGVydHldPWE6aS5hdHRyaWJ1dGUmJihlW2kuYXR0cmlidXRlXT1hKSl9ZnVuY3Rpb24gTW4oZSx0KXtyZXR1cm4gdC50b1VwcGVyQ2FzZSgpfW4uZCh0LCJhIiwoZnVuY3Rpb24oKXtyZXR1cm4gUG59KSk7Y29uc3QgTG49e30uaGFzT3duUHJvcGVydHksRG49e3JlbmRlcmVyczp7dG86ImNvbXBvbmVudHMiLGlkOiJjaGFuZ2UtcmVuZGVyZXJzLXRvLWNvbXBvbmVudHMifSxhc3RQbHVnaW5zOntpZDoicmVtb3ZlLWJ1Z2d5LWh0bWwtaW4tbWFya2Rvd24tcGFyc2VyIn0sYWxsb3dEYW5nZXJvdXNIdG1sOntpZDoicmVtb3ZlLWJ1Z2d5LWh0bWwtaW4tbWFya2Rvd24tcGFyc2VyIn0sZXNjYXBlSHRtbDp7aWQ6InJlbW92ZS1idWdneS1odG1sLWluLW1hcmtkb3duLXBhcnNlciJ9LHNvdXJjZTp7dG86ImNoaWxkcmVuIixpZDoiY2hhbmdlLXNvdXJjZS10by1jaGlsZHJlbiJ9LGFsbG93Tm9kZTp7dG86ImFsbG93RWxlbWVudCIsaWQ6InJlcGxhY2UtYWxsb3dub2RlLWFsbG93ZWR0eXBlcy1hbmQtZGlzYWxsb3dlZHR5cGVzIn0sYWxsb3dlZFR5cGVzOnt0bzoiYWxsb3dlZEVsZW1lbnRzIixpZDoicmVwbGFjZS1hbGxvd25vZGUtYWxsb3dlZHR5cGVzLWFuZC1kaXNhbGxvd2VkdHlwZXMifSxkaXNhbGxvd2VkVHlwZXM6e3RvOiJkaXNhbGxvd2VkRWxlbWVudHMiLGlkOiJyZXBsYWNlLWFsbG93bm9kZS1hbGxvd2VkdHlwZXMtYW5kLWRpc2FsbG93ZWR0eXBlcyJ9LGluY2x1ZGVOb2RlSW5kZXg6e3RvOiJpbmNsdWRlRWxlbWVudEluZGV4IixpZDoiY2hhbmdlLWluY2x1ZGVub2RlaW5kZXgtdG8taW5jbHVkZWVsZW1lbnRpbmRleCJ9fTtmdW5jdGlvbiBQbihlKXtmb3IoY29uc3QgYSBpbiBEbilpZihMbi5jYWxsKERuLGEpJiZMbi5jYWxsKGUsYSkpe2NvbnN0IGU9RG5bYV07Y29uc29sZS53YXJuKCJbcmVhY3QtbWFya2Rvd25dIFdhcm5pbmc6IHBsZWFzZSAiLmNvbmNhdChlLnRvPyJ1c2UgYCIuY29uY2F0KGUudG8sImAgaW5zdGVhZCBvZiIpOiJyZW1vdmUiLCIgYCIpLmNvbmNhdChhLCJgIChzZWUgPCIpLmNvbmNhdCgiaHR0cHM6Ly9naXRodWIuY29tL3JlbWFya2pzL3JlYWN0LW1hcmtkb3duL2Jsb2IvbWFpbi9jaGFuZ2Vsb2cubWQiLCIjIikuY29uY2F0KGUuaWQsIj4gZm9yIG1vcmUgaW5mbykiKSksZGVsZXRlIERuW2FdfWNvbnN0IHQ9TigpLnVzZShjdCkudXNlKGUucmVtYXJrUGx1Z2luc3x8ZS5wbHVnaW5zfHxbXSkudXNlKFB0LHthbGxvd0Rhbmdlcm91c0h0bWw6ITB9KS51c2UoZS5yZWh5cGVQbHVnaW5zfHxbXSkudXNlKGhuLGUpLG49bmV3IHc7InN0cmluZyI9PT10eXBlb2YgZS5jaGlsZHJlbj9uLnZhbHVlPWUuY2hpbGRyZW46dm9pZCAwIT09ZS5jaGlsZHJlbiYmbnVsbCE9PWUuY2hpbGRyZW4mJmNvbnNvbGUud2FybigiW3JlYWN0LW1hcmtkb3duXSBXYXJuaW5nOiBwbGVhc2UgcGFzcyBhIHN0cmluZyBhcyBgY2hpbGRyZW5gIChub3Q6IGAiLmNvbmNhdChlLmNoaWxkcmVuLCJgKSIpKTtjb25zdCByPXQucnVuU3luYyh0LnBhcnNlKG4pLG4pO2lmKCJyb290IiE9PXIudHlwZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJFeHBlY3RlZCBhIGByb290YCBub2RlIik7bGV0IGk9by5hLmNyZWF0ZUVsZW1lbnQoby5hLkZyYWdtZW50LHt9LEluKHtvcHRpb25zOmUsc2NoZW1hOnBuLGxpc3REZXB0aDowfSxyKSk7cmV0dXJuIGUuY2xhc3NOYW1lJiYoaT1vLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOmUuY2xhc3NOYW1lfSxpKSksaX1Qbi5kZWZhdWx0UHJvcHM9e3RyYW5zZm9ybUxpbmtVcmk6ZnVuY3Rpb24oZSl7Y29uc3QgdD0oZXx8IiIpLnRyaW0oKSxuPXQuY2hhckF0KDApO2lmKCIjIj09PW58fCIvIj09PW4pcmV0dXJuIHQ7Y29uc3Qgcj10LmluZGV4T2YoIjoiKTtpZigtMT09PXIpcmV0dXJuIHQ7bGV0IGk9LTE7Zm9yKDsrK2k8bW4ubGVuZ3RoOyl7Y29uc3QgZT1tbltpXTtpZihyPT09ZS5sZW5ndGgmJnQuc2xpY2UoMCxlLmxlbmd0aCkudG9Mb3dlckNhc2UoKT09PWUpcmV0dXJuIHR9cmV0dXJuIGk9dC5pbmRleE9mKCI/IiksLTEhPT1pJiZyPmk/dDooaT10LmluZGV4T2YoIiMiKSwtMSE9PWkmJnI+aT90OiJqYXZhc2NyaXB0OnZvaWQoMCkiKX19LFBuLnByb3BUeXBlcz17Y2hpbGRyZW46VXQuYS5zdHJpbmcsY2xhc3NOYW1lOlV0LmEuc3RyaW5nLGFsbG93RWxlbWVudDpVdC5hLmZ1bmMsYWxsb3dlZEVsZW1lbnRzOlV0LmEuYXJyYXlPZihVdC5hLnN0cmluZyksZGlzYWxsb3dlZEVsZW1lbnRzOlV0LmEuYXJyYXlPZihVdC5hLnN0cmluZyksdW53cmFwRGlzYWxsb3dlZDpVdC5hLmJvb2wscmVtYXJrUGx1Z2luczpVdC5hLmFycmF5T2YoVXQuYS5vbmVPZlR5cGUoW1V0LmEub2JqZWN0LFV0LmEuZnVuYyxVdC5hLmFycmF5T2YoVXQuYS5vbmVPZlR5cGUoW1V0LmEub2JqZWN0LFV0LmEuZnVuY10pKV0pKSxyZWh5cGVQbHVnaW5zOlV0LmEuYXJyYXlPZihVdC5hLm9uZU9mVHlwZShbVXQuYS5vYmplY3QsVXQuYS5mdW5jLFV0LmEuYXJyYXlPZihVdC5hLm9uZU9mVHlwZShbVXQuYS5vYmplY3QsVXQuYS5mdW5jXSkpXSkpLHNvdXJjZVBvczpVdC5hLmJvb2wscmF3U291cmNlUG9zOlV0LmEuYm9vbCxza2lwSHRtbDpVdC5hLmJvb2wsaW5jbHVkZUVsZW1lbnRJbmRleDpVdC5hLmJvb2wsdHJhbnNmb3JtTGlua1VyaTpVdC5hLm9uZU9mVHlwZShbVXQuYS5mdW5jLFV0LmEuYm9vbF0pLGxpbmtUYXJnZXQ6VXQuYS5vbmVPZlR5cGUoW1V0LmEuZnVuYyxVdC5hLnN0cmluZ10pLHRyYW5zZm9ybUltYWdlVXJpOlV0LmEuZnVuYyxjb21wb25lbnRzOlV0LmEub2JqZWN0fX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDEyNiksaT1uLm4ociksYT1uKDEyNyksbz1uLm4oYSkscz1uKDU3KSxsPW4ubihzKSxjPW4oMCksdT1uLm4oYyksZD1uKDE1KSxwPW4ubihkKTtmdW5jdGlvbiBmKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBoKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP2YoT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXtsKCkoZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOmYoT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9dmFyIG09e307ZnVuY3Rpb24gZyhlKXtpZigwPT09ZS5sZW5ndGh8fDE9PT1lLmxlbmd0aClyZXR1cm4gZTt2YXIgdD1lLmpvaW4oIi4iKTtyZXR1cm4gbVt0XXx8KG1bdF09ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5sZW5ndGg7cmV0dXJuIDA9PT10fHwxPT09dD9lOjI9PT10P1tlWzBdLGVbMV0sIiIuY29uY2F0KGVbMF0sIi4iKS5jb25jYXQoZVsxXSksIiIuY29uY2F0KGVbMV0sIi4iKS5jb25jYXQoZVswXSldOjM9PT10P1tlWzBdLGVbMV0sZVsyXSwiIi5jb25jYXQoZVswXSwiLiIpLmNvbmNhdChlWzFdKSwiIi5jb25jYXQoZVswXSwiLiIpLmNvbmNhdChlWzJdKSwiIi5jb25jYXQoZVsxXSwiLiIpLmNvbmNhdChlWzBdKSwiIi5jb25jYXQoZVsxXSwiLiIpLmNvbmNhdChlWzJdKSwiIi5jb25jYXQoZVsyXSwiLiIpLmNvbmNhdChlWzBdKSwiIi5jb25jYXQoZVsyXSwiLiIpLmNvbmNhdChlWzFdKSwiIi5jb25jYXQoZVswXSwiLiIpLmNvbmNhdChlWzFdLCIuIikuY29uY2F0KGVbMl0pLCIiLmNvbmNhdChlWzBdLCIuIikuY29uY2F0KGVbMl0sIi4iKS5jb25jYXQoZVsxXSksIiIuY29uY2F0KGVbMV0sIi4iKS5jb25jYXQoZVswXSwiLiIpLmNvbmNhdChlWzJdKSwiIi5jb25jYXQoZVsxXSwiLiIpLmNvbmNhdChlWzJdLCIuIikuY29uY2F0KGVbMF0pLCIiLmNvbmNhdChlWzJdLCIuIikuY29uY2F0KGVbMF0sIi4iKS5jb25jYXQoZVsxXSksIiIuY29uY2F0KGVbMl0sIi4iKS5jb25jYXQoZVsxXSwiLiIpLmNvbmNhdChlWzBdKV06dD49ND9bZVswXSxlWzFdLGVbMl0sZVszXSwiIi5jb25jYXQoZVswXSwiLiIpLmNvbmNhdChlWzFdKSwiIi5jb25jYXQoZVswXSwiLiIpLmNvbmNhdChlWzJdKSwiIi5jb25jYXQoZVswXSwiLiIpLmNvbmNhdChlWzNdKSwiIi5jb25jYXQoZVsxXSwiLiIpLmNvbmNhdChlWzBdKSwiIi5jb25jYXQoZVsxXSwiLiIpLmNvbmNhdChlWzJdKSwiIi5jb25jYXQoZVsxXSwiLiIpLmNvbmNhdChlWzNdKSwiIi5jb25jYXQoZVsyXSwiLiIpLmNvbmNhdChlWzBdKSwiIi5jb25jYXQoZVsyXSwiLiIpLmNvbmNhdChlWzFdKSwiIi5jb25jYXQoZVsyXSwiLiIpLmNvbmNhdChlWzNdKSwiIi5jb25jYXQoZVszXSwiLiIpLmNvbmNhdChlWzBdKSwiIi5jb25jYXQoZVszXSwiLiIpLmNvbmNhdChlWzFdKSwiIi5jb25jYXQoZVszXSwiLiIpLmNvbmNhdChlWzJdKSwiIi5jb25jYXQoZVswXSwiLiIpLmNvbmNhdChlWzFdLCIuIikuY29uY2F0KGVbMl0pLCIiLmNvbmNhdChlWzBdLCIuIikuY29uY2F0KGVbMV0sIi4iKS5jb25jYXQoZVszXSksIiIuY29uY2F0KGVbMF0sIi4iKS5jb25jYXQoZVsyXSwiLiIpLmNvbmNhdChlWzFdKSwiIi5jb25jYXQoZVswXSwiLiIpLmNvbmNhdChlWzJdLCIuIikuY29uY2F0KGVbM10pLCIiLmNvbmNhdChlWzBdLCIuIikuY29uY2F0KGVbM10sIi4iKS5jb25jYXQoZVsxXSksIiIuY29uY2F0KGVbMF0sIi4iKS5jb25jYXQoZVszXSwiLiIpLmNvbmNhdChlWzJdKSwiIi5jb25jYXQoZVsxXSwiLiIpLmNvbmNhdChlWzBdLCIuIikuY29uY2F0KGVbMl0pLCIiLmNvbmNhdChlWzFdLCIuIikuY29uY2F0KGVbMF0sIi4iKS5jb25jYXQoZVszXSksIiIuY29uY2F0KGVbMV0sIi4iKS5jb25jYXQoZVsyXSwiLiIpLmNvbmNhdChlWzBdKSwiIi5jb25jYXQoZVsxXSwiLiIpLmNvbmNhdChlWzJdLCIuIikuY29uY2F0KGVbM10pLCIiLmNvbmNhdChlWzFdLCIuIikuY29uY2F0KGVbM10sIi4iKS5jb25jYXQoZVswXSksIiIuY29uY2F0KGVbMV0sIi4iKS5jb25jYXQoZVszXSwiLiIpLmNvbmNhdChlWzJdKSwiIi5jb25jYXQoZVsyXSwiLiIpLmNvbmNhdChlWzBdLCIuIikuY29uY2F0KGVbMV0pLCIiLmNvbmNhdChlWzJdLCIuIikuY29uY2F0KGVbMF0sIi4iKS5jb25jYXQoZVszXSksIiIuY29uY2F0KGVbMl0sIi4iKS5jb25jYXQoZVsxXSwiLiIpLmNvbmNhdChlWzBdKSwiIi5jb25jYXQoZVsyXSwiLiIpLmNvbmNhdChlWzFdLCIuIikuY29uY2F0KGVbM10pLCIiLmNvbmNhdChlWzJdLCIuIikuY29uY2F0KGVbM10sIi4iKS5jb25jYXQoZVswXSksIiIuY29uY2F0KGVbMl0sIi4iKS5jb25jYXQoZVszXSwiLiIpLmNvbmNhdChlWzFdKSwiIi5jb25jYXQoZVszXSwiLiIpLmNvbmNhdChlWzBdLCIuIikuY29uY2F0KGVbMV0pLCIiLmNvbmNhdChlWzNdLCIuIikuY29uY2F0KGVbMF0sIi4iKS5jb25jYXQoZVsyXSksIiIuY29uY2F0KGVbM10sIi4iKS5jb25jYXQoZVsxXSwiLiIpLmNvbmNhdChlWzBdKSwiIi5jb25jYXQoZVszXSwiLiIpLmNvbmNhdChlWzFdLCIuIikuY29uY2F0KGVbMl0pLCIiLmNvbmNhdChlWzNdLCIuIikuY29uY2F0KGVbMl0sIi4iKS5jb25jYXQoZVswXSksIiIuY29uY2F0KGVbM10sIi4iKS5jb25jYXQoZVsyXSwiLiIpLmNvbmNhdChlWzFdKSwiIi5jb25jYXQoZVswXSwiLiIpLmNvbmNhdChlWzFdLCIuIikuY29uY2F0KGVbMl0sIi4iKS5jb25jYXQoZVszXSksIiIuY29uY2F0KGVbMF0sIi4iKS5jb25jYXQoZVsxXSwiLiIpLmNvbmNhdChlWzNdLCIuIikuY29uY2F0KGVbMl0pLCIiLmNvbmNhdChlWzBdLCIuIikuY29uY2F0KGVbMl0sIi4iKS5jb25jYXQoZVsxXSwiLiIpLmNvbmNhdChlWzNdKSwiIi5jb25jYXQoZVswXSwiLiIpLmNvbmNhdChlWzJdLCIuIikuY29uY2F0KGVbM10sIi4iKS5jb25jYXQoZVsxXSksIiIuY29uY2F0KGVbMF0sIi4iKS5jb25jYXQoZVszXSwiLiIpLmNvbmNhdChlWzFdLCIuIikuY29uY2F0KGVbMl0pLCIiLmNvbmNhdChlWzBdLCIuIikuY29uY2F0KGVbM10sIi4iKS5jb25jYXQoZVsyXSwiLiIpLmNvbmNhdChlWzFdKSwiIi5jb25jYXQoZVsxXSwiLiIpLmNvbmNhdChlWzBdLCIuIikuY29uY2F0KGVbMl0sIi4iKS5jb25jYXQoZVszXSksIiIuY29uY2F0KGVbMV0sIi4iKS5jb25jYXQoZVswXSwiLiIpLmNvbmNhdChlWzNdLCIuIikuY29uY2F0KGVbMl0pLCIiLmNvbmNhdChlWzFdLCIuIikuY29uY2F0KGVbMl0sIi4iKS5jb25jYXQoZVswXSwiLiIpLmNvbmNhdChlWzNdKSwiIi5jb25jYXQoZVsxXSwiLiIpLmNvbmNhdChlWzJdLCIuIikuY29uY2F0KGVbM10sIi4iKS5jb25jYXQoZVswXSksIiIuY29uY2F0KGVbMV0sIi4iKS5jb25jYXQoZVszXSwiLiIpLmNvbmNhdChlWzBdLCIuIikuY29uY2F0KGVbMl0pLCIiLmNvbmNhdChlWzFdLCIuIikuY29uY2F0KGVbM10sIi4iKS5jb25jYXQoZVsyXSwiLiIpLmNvbmNhdChlWzBdKSwiIi5jb25jYXQoZVsyXSwiLiIpLmNvbmNhdChlWzBdLCIuIikuY29uY2F0KGVbMV0sIi4iKS5jb25jYXQoZVszXSksIiIuY29uY2F0KGVbMl0sIi4iKS5jb25jYXQoZVswXSwiLiIpLmNvbmNhdChlWzNdLCIuIikuY29uY2F0KGVbMV0pLCIiLmNvbmNhdChlWzJdLCIuIikuY29uY2F0KGVbMV0sIi4iKS5jb25jYXQoZVswXSwiLiIpLmNvbmNhdChlWzNdKSwiIi5jb25jYXQoZVsyXSwiLiIpLmNvbmNhdChlWzFdLCIuIikuY29uY2F0KGVbM10sIi4iKS5jb25jYXQoZVswXSksIiIuY29uY2F0KGVbMl0sIi4iKS5jb25jYXQoZVszXSwiLiIpLmNvbmNhdChlWzBdLCIuIikuY29uY2F0KGVbMV0pLCIiLmNvbmNhdChlWzJdLCIuIikuY29uY2F0KGVbM10sIi4iKS5jb25jYXQoZVsxXSwiLiIpLmNvbmNhdChlWzBdKSwiIi5jb25jYXQoZVszXSwiLiIpLmNvbmNhdChlWzBdLCIuIikuY29uY2F0KGVbMV0sIi4iKS5jb25jYXQoZVsyXSksIiIuY29uY2F0KGVbM10sIi4iKS5jb25jYXQoZVswXSwiLiIpLmNvbmNhdChlWzJdLCIuIikuY29uY2F0KGVbMV0pLCIiLmNvbmNhdChlWzNdLCIuIikuY29uY2F0KGVbMV0sIi4iKS5jb25jYXQoZVswXSwiLiIpLmNvbmNhdChlWzJdKSwiIi5jb25jYXQoZVszXSwiLiIpLmNvbmNhdChlWzFdLCIuIikuY29uY2F0KGVbMl0sIi4iKS5jb25jYXQoZVswXSksIiIuY29uY2F0KGVbM10sIi4iKS5jb25jYXQoZVsyXSwiLiIpLmNvbmNhdChlWzBdLCIuIikuY29uY2F0KGVbMV0pLCIiLmNvbmNhdChlWzNdLCIuIikuY29uY2F0KGVbMl0sIi4iKS5jb25jYXQoZVsxXSwiLiIpLmNvbmNhdChlWzBdKV06dm9pZCAwfShlKSksbVt0XX1mdW5jdGlvbiBiKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fSxuPWFyZ3VtZW50cy5sZW5ndGg+Mj9hcmd1bWVudHNbMl06dm9pZCAwLHI9ZS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiJ0b2tlbiIhPT1lfSkpLGk9ZyhyKTtyZXR1cm4gaS5yZWR1Y2UoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGgoaCh7fSxlKSxuW3RdKX0pLHQpfWZ1bmN0aW9uIHkoZSl7cmV0dXJuIGUuam9pbigiICIpfWZ1bmN0aW9uIHYoZSl7dmFyIHQ9ZS5ub2RlLG49ZS5zdHlsZXNoZWV0LHI9ZS5zdHlsZSxpPXZvaWQgMD09PXI/e306cixhPWUudXNlSW5saW5lU3R5bGVzLG89ZS5rZXkscz10LnByb3BlcnRpZXMsbD10LnR5cGUsYz10LnRhZ05hbWUsZD10LnZhbHVlO2lmKCJ0ZXh0Ij09PWwpcmV0dXJuIGQ7aWYoYyl7dmFyIGYsbT1mdW5jdGlvbihlLHQpe3ZhciBuPTA7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiBuKz0xLHIubWFwKChmdW5jdGlvbihyLGkpe3JldHVybiB2KHtub2RlOnIsc3R5bGVzaGVldDplLHVzZUlubGluZVN0eWxlczp0LGtleToiY29kZS1zZWdtZW50LSIuY29uY2F0KG4sIi0iKS5jb25jYXQoaSl9KX0pKX19KG4sYSk7aWYoYSl7dmFyIGc9T2JqZWN0LmtleXMobikucmVkdWNlKChmdW5jdGlvbihlLHQpe3JldHVybiB0LnNwbGl0KCIuIikuZm9yRWFjaCgoZnVuY3Rpb24odCl7ZS5pbmNsdWRlcyh0KXx8ZS5wdXNoKHQpfSkpLGV9KSxbXSksRT1zLmNsYXNzTmFtZSYmcy5jbGFzc05hbWUuaW5jbHVkZXMoInRva2VuIik/WyJ0b2tlbiJdOltdLHc9cy5jbGFzc05hbWUmJkUuY29uY2F0KHMuY2xhc3NOYW1lLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIWcuaW5jbHVkZXMoZSl9KSkpO2Y9aChoKHt9LHMpLHt9LHtjbGFzc05hbWU6eSh3KXx8dm9pZCAwLHN0eWxlOmIocy5jbGFzc05hbWUsT2JqZWN0LmFzc2lnbih7fSxzLnN0eWxlLGkpLG4pfSl9ZWxzZSBmPWgoaCh7fSxzKSx7fSx7Y2xhc3NOYW1lOnkocy5jbGFzc05hbWUpfSk7dmFyIFM9bSh0LmNoaWxkcmVuKTtyZXR1cm4gdS5hLmNyZWF0ZUVsZW1lbnQoYyxwKCkoe2tleTpvfSxmKSxTKX19dmFyIEU9WyJsYW5ndWFnZSIsImNoaWxkcmVuIiwic3R5bGUiLCJjdXN0b21TdHlsZSIsImNvZGVUYWdQcm9wcyIsInVzZUlubGluZVN0eWxlcyIsInNob3dMaW5lTnVtYmVycyIsInNob3dJbmxpbmVMaW5lTnVtYmVycyIsInN0YXJ0aW5nTGluZU51bWJlciIsImxpbmVOdW1iZXJDb250YWluZXJTdHlsZSIsImxpbmVOdW1iZXJTdHlsZSIsIndyYXBMaW5lcyIsIndyYXBMb25nTGluZXMiLCJsaW5lUHJvcHMiLCJyZW5kZXJlciIsIlByZVRhZyIsIkNvZGVUYWciLCJjb2RlIiwiYXN0R2VuZXJhdG9yIl07ZnVuY3Rpb24gdyhlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gUyhlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj93KE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7bCgpKGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTp3KE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfXZhciBfPS9cbi9nO2Z1bmN0aW9uIFQoZSl7dmFyIHQ9ZS5jb2RlU3RyaW5nLG49ZS5jb2RlU3R5bGUscj1lLmNvbnRhaW5lclN0eWxlLGk9dm9pZCAwPT09cj97ZmxvYXQ6ImxlZnQiLHBhZGRpbmdSaWdodDoiMTBweCJ9OnIsYT1lLm51bWJlclN0eWxlLG89dm9pZCAwPT09YT97fTphLHM9ZS5zdGFydGluZ0xpbmVOdW1iZXI7cmV0dXJuIHUuYS5jcmVhdGVFbGVtZW50KCJjb2RlIix7c3R5bGU6T2JqZWN0LmFzc2lnbih7fSxuLGkpfSxmdW5jdGlvbihlKXt2YXIgdD1lLmxpbmVzLG49ZS5zdGFydGluZ0xpbmVOdW1iZXIscj1lLnN0eWxlO3JldHVybiB0Lm1hcCgoZnVuY3Rpb24oZSx0KXt2YXIgaT10K247cmV0dXJuIHUuYS5jcmVhdGVFbGVtZW50KCJzcGFuIix7a2V5OiJsaW5lLSIuY29uY2F0KHQpLGNsYXNzTmFtZToicmVhY3Qtc3ludGF4LWhpZ2hsaWdodGVyLWxpbmUtbnVtYmVyIixzdHlsZToiZnVuY3Rpb24iPT09dHlwZW9mIHI/cihpKTpyfSwiIi5jb25jYXQoaSwiXG4iKSl9KSl9KHtsaW5lczp0LnJlcGxhY2UoL1xuJC8sIiIpLnNwbGl0KCJcbiIpLHN0eWxlOm8sc3RhcnRpbmdMaW5lTnVtYmVyOnN9KSl9ZnVuY3Rpb24gQShlLHQpe3JldHVybnt0eXBlOiJlbGVtZW50Iix0YWdOYW1lOiJzcGFuIixwcm9wZXJ0aWVzOntrZXk6ImxpbmUtbnVtYmVyLS0iLmNvbmNhdChlKSxjbGFzc05hbWU6WyJjb21tZW50IiwibGluZW51bWJlciIsInJlYWN0LXN5bnRheC1oaWdobGlnaHRlci1saW5lLW51bWJlciJdLHN0eWxlOnR9LGNoaWxkcmVuOlt7dHlwZToidGV4dCIsdmFsdWU6ZX1dfX1mdW5jdGlvbiBrKGUsdCxuKXt2YXIgcixpPXtkaXNwbGF5OiJpbmxpbmUtYmxvY2siLG1pbldpZHRoOihyPW4sIiIuY29uY2F0KHIudG9TdHJpbmcoKS5sZW5ndGgsIi4yNWVtIikpLHBhZGRpbmdSaWdodDoiMWVtIix0ZXh0QWxpZ246InJpZ2h0Iix1c2VyU2VsZWN0OiJub25lIn0sYT0iZnVuY3Rpb24iPT09dHlwZW9mIGU/ZSh0KTplO3JldHVybiBTKFMoe30saSksYSl9ZnVuY3Rpb24geChlKXt2YXIgdD1lLmNoaWxkcmVuLG49ZS5saW5lTnVtYmVyLHI9ZS5saW5lTnVtYmVyU3R5bGUsaT1lLmxhcmdlc3RMaW5lTnVtYmVyLGE9ZS5zaG93SW5saW5lTGluZU51bWJlcnMsbz1lLmxpbmVQcm9wcyxzPXZvaWQgMD09PW8/e306byxsPWUuY2xhc3NOYW1lLGM9dm9pZCAwPT09bD9bXTpsLHU9ZS5zaG93TGluZU51bWJlcnMsZD1lLndyYXBMb25nTGluZXMscD0iZnVuY3Rpb24iPT09dHlwZW9mIHM/cyhuKTpzO2lmKHAuY2xhc3NOYW1lPWMsbiYmYSl7dmFyIGY9ayhyLG4saSk7dC51bnNoaWZ0KEEobixmKSl9cmV0dXJuIGQmdSYmKHAuc3R5bGU9UyhTKHt9LHAuc3R5bGUpLHt9LHtkaXNwbGF5OiJmbGV4In0pKSx7dHlwZToiZWxlbWVudCIsdGFnTmFtZToic3BhbiIscHJvcGVydGllczpwLGNoaWxkcmVuOnR9fWZ1bmN0aW9uIEMoZSx0LG4scixpLGEscyxsLGMpe3ZhciB1LGQ9ZnVuY3Rpb24gZSh0KXtmb3IodmFyIG49YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOltdLHI9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOltdLGk9MDtpPHQubGVuZ3RoO2krKyl7dmFyIGE9dFtpXTtpZigidGV4dCI9PT1hLnR5cGUpci5wdXNoKHgoe2NoaWxkcmVuOlthXSxjbGFzc05hbWU6bygpKG5ldyBTZXQobikpfSkpO2Vsc2UgaWYoYS5jaGlsZHJlbil7dmFyIHM9bi5jb25jYXQoYS5wcm9wZXJ0aWVzLmNsYXNzTmFtZSk7ZShhLmNoaWxkcmVuLHMpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiByLnB1c2goZSl9KSl9fXJldHVybiByfShlLnZhbHVlKSxwPVtdLGY9LTEsaD0wO2Z1bmN0aW9uIG0oZSx0KXt2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06W107cmV0dXJuIHgoe2NoaWxkcmVuOmUsbGluZU51bWJlcjp0LGxpbmVOdW1iZXJTdHlsZTpsLGxhcmdlc3RMaW5lTnVtYmVyOnMsc2hvd0lubGluZUxpbmVOdW1iZXJzOmksbGluZVByb3BzOm4sY2xhc3NOYW1lOmEsc2hvd0xpbmVOdW1iZXJzOnIsd3JhcExvbmdMaW5lczpjfSl9ZnVuY3Rpb24gZyhlLHQpe2lmKHImJnQmJmkpe3ZhciBuPWsobCx0LHMpO2UudW5zaGlmdChBKHQsbikpfXJldHVybiBlfWZ1bmN0aW9uIGIoZSxuKXt2YXIgcj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06W107cmV0dXJuIHR8fHIubGVuZ3RoPjA/bShlLG4scik6ZyhlLG4pfWZvcih2YXIgeT1mdW5jdGlvbigpe3ZhciBlPWRbaF0sdD1lLmNoaWxkcmVuWzBdLnZhbHVlO2lmKHQubWF0Y2goXykpe3ZhciBuPXQuc3BsaXQoIlxuIik7bi5mb3JFYWNoKChmdW5jdGlvbih0LGkpe3ZhciBvPXImJnAubGVuZ3RoK2Escz17dHlwZToidGV4dCIsdmFsdWU6IiIuY29uY2F0KHQsIlxuIil9O2lmKDA9PT1pKXt2YXIgbD1iKGQuc2xpY2UoZisxLGgpLmNvbmNhdCh4KHtjaGlsZHJlbjpbc10sY2xhc3NOYW1lOmUucHJvcGVydGllcy5jbGFzc05hbWV9KSksbyk7cC5wdXNoKGwpfWVsc2UgaWYoaT09PW4ubGVuZ3RoLTEpe3ZhciBjPWRbaCsxXSYmZFtoKzFdLmNoaWxkcmVuJiZkW2grMV0uY2hpbGRyZW5bMF0sdT17dHlwZToidGV4dCIsdmFsdWU6IiIuY29uY2F0KHQpfTtpZihjKXt2YXIgbT14KHtjaGlsZHJlbjpbdV0sY2xhc3NOYW1lOmUucHJvcGVydGllcy5jbGFzc05hbWV9KTtkLnNwbGljZShoKzEsMCxtKX1lbHNle3ZhciBnPWIoW3VdLG8sZS5wcm9wZXJ0aWVzLmNsYXNzTmFtZSk7cC5wdXNoKGcpfX1lbHNle3ZhciB5PWIoW3NdLG8sZS5wcm9wZXJ0aWVzLmNsYXNzTmFtZSk7cC5wdXNoKHkpfX0pKSxmPWh9aCsrfTtoPGQubGVuZ3RoOyl5KCk7aWYoZiE9PWQubGVuZ3RoLTEpe3ZhciB2PWQuc2xpY2UoZisxLGQubGVuZ3RoKTtpZih2JiZ2Lmxlbmd0aCl7dmFyIEU9Yih2LHImJnAubGVuZ3RoK2EpO3AucHVzaChFKX19cmV0dXJuIHQ/cDoodT1bXSkuY29uY2F0LmFwcGx5KHUscCl9ZnVuY3Rpb24gSShlKXt2YXIgdD1lLnJvd3Msbj1lLnN0eWxlc2hlZXQscj1lLnVzZUlubGluZVN0eWxlcztyZXR1cm4gdC5tYXAoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHYoe25vZGU6ZSxzdHlsZXNoZWV0Om4sdXNlSW5saW5lU3R5bGVzOnIsa2V5OiJjb2RlLXNlZ2VtZW50Ii5jb25jYXQodCl9KX0pKX1mdW5jdGlvbiBSKGUpe3JldHVybiBlJiYidW5kZWZpbmVkIiE9PXR5cGVvZiBlLmhpZ2hsaWdodEF1dG99dmFyIE8sTixNPW4oMTI1KSxMPShPPW4ubihNKS5hLE49eydjb2RlW2NsYXNzKj0ibGFuZ3VhZ2UtIl0nOntjb2xvcjoiYmxhY2siLGJhY2tncm91bmQ6Im5vbmUiLHRleHRTaGFkb3c6IjAgMXB4IHdoaXRlIixmb250RmFtaWx5OiJDb25zb2xhcywgTW9uYWNvLCAnQW5kYWxlIE1vbm8nLCAnVWJ1bnR1IE1vbm8nLCBtb25vc3BhY2UiLGZvbnRTaXplOiIxZW0iLHRleHRBbGlnbjoibGVmdCIsd2hpdGVTcGFjZToicHJlIix3b3JkU3BhY2luZzoibm9ybWFsIix3b3JkQnJlYWs6Im5vcm1hbCIsd29yZFdyYXA6Im5vcm1hbCIsbGluZUhlaWdodDoiMS41IixNb3pUYWJTaXplOiI0IixPVGFiU2l6ZToiNCIsdGFiU2l6ZToiNCIsV2Via2l0SHlwaGVuczoibm9uZSIsTW96SHlwaGVuczoibm9uZSIsbXNIeXBoZW5zOiJub25lIixoeXBoZW5zOiJub25lIn0sJ3ByZVtjbGFzcyo9Imxhbmd1YWdlLSJdJzp7Y29sb3I6ImJsYWNrIixiYWNrZ3JvdW5kOiIjZjVmMmYwIix0ZXh0U2hhZG93OiIwIDFweCB3aGl0ZSIsZm9udEZhbWlseToiQ29uc29sYXMsIE1vbmFjbywgJ0FuZGFsZSBNb25vJywgJ1VidW50dSBNb25vJywgbW9ub3NwYWNlIixmb250U2l6ZToiMWVtIix0ZXh0QWxpZ246ImxlZnQiLHdoaXRlU3BhY2U6InByZSIsd29yZFNwYWNpbmc6Im5vcm1hbCIsd29yZEJyZWFrOiJub3JtYWwiLHdvcmRXcmFwOiJub3JtYWwiLGxpbmVIZWlnaHQ6IjEuNSIsTW96VGFiU2l6ZToiNCIsT1RhYlNpemU6IjQiLHRhYlNpemU6IjQiLFdlYmtpdEh5cGhlbnM6Im5vbmUiLE1vekh5cGhlbnM6Im5vbmUiLG1zSHlwaGVuczoibm9uZSIsaHlwaGVuczoibm9uZSIscGFkZGluZzoiMWVtIixtYXJnaW46Ii41ZW0gMCIsb3ZlcmZsb3c6ImF1dG8ifSwncHJlW2NsYXNzKj0ibGFuZ3VhZ2UtIl06Oi1tb3otc2VsZWN0aW9uJzp7dGV4dFNoYWRvdzoibm9uZSIsYmFja2dyb3VuZDoiI2IzZDRmYyJ9LCdwcmVbY2xhc3MqPSJsYW5ndWFnZS0iXSA6Oi1tb3otc2VsZWN0aW9uJzp7dGV4dFNoYWRvdzoibm9uZSIsYmFja2dyb3VuZDoiI2IzZDRmYyJ9LCdjb2RlW2NsYXNzKj0ibGFuZ3VhZ2UtIl06Oi1tb3otc2VsZWN0aW9uJzp7dGV4dFNoYWRvdzoibm9uZSIsYmFja2dyb3VuZDoiI2IzZDRmYyJ9LCdjb2RlW2NsYXNzKj0ibGFuZ3VhZ2UtIl0gOjotbW96LXNlbGVjdGlvbic6e3RleHRTaGFkb3c6Im5vbmUiLGJhY2tncm91bmQ6IiNiM2Q0ZmMifSwncHJlW2NsYXNzKj0ibGFuZ3VhZ2UtIl06OnNlbGVjdGlvbic6e3RleHRTaGFkb3c6Im5vbmUiLGJhY2tncm91bmQ6IiNiM2Q0ZmMifSwncHJlW2NsYXNzKj0ibGFuZ3VhZ2UtIl0gOjpzZWxlY3Rpb24nOnt0ZXh0U2hhZG93OiJub25lIixiYWNrZ3JvdW5kOiIjYjNkNGZjIn0sJ2NvZGVbY2xhc3MqPSJsYW5ndWFnZS0iXTo6c2VsZWN0aW9uJzp7dGV4dFNoYWRvdzoibm9uZSIsYmFja2dyb3VuZDoiI2IzZDRmYyJ9LCdjb2RlW2NsYXNzKj0ibGFuZ3VhZ2UtIl0gOjpzZWxlY3Rpb24nOnt0ZXh0U2hhZG93OiJub25lIixiYWNrZ3JvdW5kOiIjYjNkNGZjIn0sJzpub3QocHJlKSA+IGNvZGVbY2xhc3MqPSJsYW5ndWFnZS0iXSc6e2JhY2tncm91bmQ6IiNmNWYyZjAiLHBhZGRpbmc6Ii4xZW0iLGJvcmRlclJhZGl1czoiLjNlbSIsd2hpdGVTcGFjZToibm9ybWFsIn0sY29tbWVudDp7Y29sb3I6InNsYXRlZ3JheSJ9LHByb2xvZzp7Y29sb3I6InNsYXRlZ3JheSJ9LGRvY3R5cGU6e2NvbG9yOiJzbGF0ZWdyYXkifSxjZGF0YTp7Y29sb3I6InNsYXRlZ3JheSJ9LHB1bmN0dWF0aW9uOntjb2xvcjoiIzk5OSJ9LG5hbWVzcGFjZTp7T3BhY2l0eToiLjcifSxwcm9wZXJ0eTp7Y29sb3I6IiM5MDUifSx0YWc6e2NvbG9yOiIjOTA1In0sYm9vbGVhbjp7Y29sb3I6IiM5MDUifSxudW1iZXI6e2NvbG9yOiIjOTA1In0sY29uc3RhbnQ6e2NvbG9yOiIjOTA1In0sc3ltYm9sOntjb2xvcjoiIzkwNSJ9LGRlbGV0ZWQ6e2NvbG9yOiIjOTA1In0sc2VsZWN0b3I6e2NvbG9yOiIjNjkwIn0sImF0dHItbmFtZSI6e2NvbG9yOiIjNjkwIn0sc3RyaW5nOntjb2xvcjoiIzY5MCJ9LGNoYXI6e2NvbG9yOiIjNjkwIn0sYnVpbHRpbjp7Y29sb3I6IiM2OTAifSxpbnNlcnRlZDp7Y29sb3I6IiM2OTAifSxvcGVyYXRvcjp7Y29sb3I6IiM5YTZlM2EiLGJhY2tncm91bmQ6ImhzbGEoMCwgMCUsIDEwMCUsIC41KSJ9LGVudGl0eTp7Y29sb3I6IiM5YTZlM2EiLGJhY2tncm91bmQ6ImhzbGEoMCwgMCUsIDEwMCUsIC41KSIsY3Vyc29yOiJoZWxwIn0sdXJsOntjb2xvcjoiIzlhNmUzYSIsYmFja2dyb3VuZDoiaHNsYSgwLCAwJSwgMTAwJSwgLjUpIn0sIi5sYW5ndWFnZS1jc3MgLnRva2VuLnN0cmluZyI6e2NvbG9yOiIjOWE2ZTNhIixiYWNrZ3JvdW5kOiJoc2xhKDAsIDAlLCAxMDAlLCAuNSkifSwiLnN0eWxlIC50b2tlbi5zdHJpbmciOntjb2xvcjoiIzlhNmUzYSIsYmFja2dyb3VuZDoiaHNsYSgwLCAwJSwgMTAwJSwgLjUpIn0sYXRydWxlOntjb2xvcjoiIzA3YSJ9LCJhdHRyLXZhbHVlIjp7Y29sb3I6IiMwN2EifSxrZXl3b3JkOntjb2xvcjoiIzA3YSJ9LGZ1bmN0aW9uOntjb2xvcjoiI0RENEE2OCJ9LCJjbGFzcy1uYW1lIjp7Y29sb3I6IiNERDRBNjgifSxyZWdleDp7Y29sb3I6IiNlOTAifSxpbXBvcnRhbnQ6e2NvbG9yOiIjZTkwIixmb250V2VpZ2h0OiJib2xkIn0sdmFyaWFibGU6e2NvbG9yOiIjZTkwIn0sYm9sZDp7Zm9udFdlaWdodDoiYm9sZCJ9LGl0YWxpYzp7Zm9udFN0eWxlOiJpdGFsaWMifX0sZnVuY3Rpb24oZSl7dmFyIHQ9ZS5sYW5ndWFnZSxuPWUuY2hpbGRyZW4scj1lLnN0eWxlLGE9dm9pZCAwPT09cj9OOnIsbz1lLmN1c3RvbVN0eWxlLHM9dm9pZCAwPT09bz97fTpvLGw9ZS5jb2RlVGFnUHJvcHMsYz12b2lkIDA9PT1sP3tjbGFzc05hbWU6dD8ibGFuZ3VhZ2UtIi5jb25jYXQodCk6dm9pZCAwLHN0eWxlOlMoUyh7fSxhWydjb2RlW2NsYXNzKj0ibGFuZ3VhZ2UtIl0nXSksYVsnY29kZVtjbGFzcyo9Imxhbmd1YWdlLScuY29uY2F0KHQsJyJdJyldKX06bCxkPWUudXNlSW5saW5lU3R5bGVzLHA9dm9pZCAwPT09ZHx8ZCxmPWUuc2hvd0xpbmVOdW1iZXJzLGg9dm9pZCAwIT09ZiYmZixtPWUuc2hvd0lubGluZUxpbmVOdW1iZXJzLGc9dm9pZCAwPT09bXx8bSxiPWUuc3RhcnRpbmdMaW5lTnVtYmVyLHk9dm9pZCAwPT09Yj8xOmIsdj1lLmxpbmVOdW1iZXJDb250YWluZXJTdHlsZSx3PWUubGluZU51bWJlclN0eWxlLF89dm9pZCAwPT09dz97fTp3LEE9ZS53cmFwTGluZXMsaz1lLndyYXBMb25nTGluZXMseD12b2lkIDAhPT1rJiZrLE09ZS5saW5lUHJvcHMsTD12b2lkIDA9PT1NP3t9Ok0sRD1lLnJlbmRlcmVyLFA9ZS5QcmVUYWcsRj12b2lkIDA9PT1QPyJwcmUiOlAsVT1lLkNvZGVUYWcsQj12b2lkIDA9PT1VPyJjb2RlIjpVLGo9ZS5jb2RlLEg9dm9pZCAwPT09aj8oQXJyYXkuaXNBcnJheShuKT9uWzBdOm4pfHwiIjpqLHo9ZS5hc3RHZW5lcmF0b3IsRz1pKCkoZSxFKTt6PXp8fE87dmFyICQ9aD91LmEuY3JlYXRlRWxlbWVudChULHtjb250YWluZXJTdHlsZTp2LGNvZGVTdHlsZTpjLnN0eWxlfHx7fSxudW1iZXJTdHlsZTpfLHN0YXJ0aW5nTGluZU51bWJlcjp5LGNvZGVTdHJpbmc6SH0pOm51bGwsVj1hLmhsanN8fGFbJ3ByZVtjbGFzcyo9Imxhbmd1YWdlLSJdJ118fHtiYWNrZ3JvdW5kQ29sb3I6IiNmZmYifSxxPVIoeik/ImhsanMiOiJwcmlzbWpzIixXPXA/T2JqZWN0LmFzc2lnbih7fSxHLHtzdHlsZTpPYmplY3QuYXNzaWduKHt9LFYscyl9KTpPYmplY3QuYXNzaWduKHt9LEcse2NsYXNzTmFtZTpHLmNsYXNzTmFtZT8iIi5jb25jYXQocSwiICIpLmNvbmNhdChHLmNsYXNzTmFtZSk6cSxzdHlsZTpPYmplY3QuYXNzaWduKHt9LHMpfSk7aWYoYy5zdHlsZT1TKFMoe30sYy5zdHlsZSkse30seD97d2hpdGVTcGFjZToicHJlLXdyYXAifTp7d2hpdGVTcGFjZToicHJlIn0pLCF6KXJldHVybiB1LmEuY3JlYXRlRWxlbWVudChGLFcsJCx1LmEuY3JlYXRlRWxlbWVudChCLGMsSCkpOyh2b2lkIDA9PT1BJiZEfHx4KSYmKEE9ITApLEQ9RHx8STt2YXIgSz1be3R5cGU6InRleHQiLHZhbHVlOkh9XSxZPWZ1bmN0aW9uKGUpe3ZhciB0PWUuYXN0R2VuZXJhdG9yLG49ZS5sYW5ndWFnZSxyPWUuY29kZSxpPWUuZGVmYXVsdENvZGVWYWx1ZTtpZihSKHQpKXt2YXIgYT1mdW5jdGlvbihlLHQpe3JldHVybi0xIT09ZS5saXN0TGFuZ3VhZ2VzKCkuaW5kZXhPZih0KX0odCxuKTtyZXR1cm4idGV4dCI9PT1uP3t2YWx1ZTppLGxhbmd1YWdlOiJ0ZXh0In06YT90LmhpZ2hsaWdodChuLHIpOnQuaGlnaGxpZ2h0QXV0byhyKX10cnl7cmV0dXJuIG4mJiJ0ZXh0IiE9PW4/e3ZhbHVlOnQuaGlnaGxpZ2h0KHIsbil9Ont2YWx1ZTppfX1jYXRjaChvKXtyZXR1cm57dmFsdWU6aX19fSh7YXN0R2VuZXJhdG9yOnosbGFuZ3VhZ2U6dCxjb2RlOkgsZGVmYXVsdENvZGVWYWx1ZTpLfSk7bnVsbD09PVkubGFuZ3VhZ2UmJihZLnZhbHVlPUspO3ZhciBYPUMoWSxBLEwsaCxnLHksWS52YWx1ZS5sZW5ndGgreSxfLHgpO3JldHVybiB1LmEuY3JlYXRlRWxlbWVudChGLFcsdS5hLmNyZWF0ZUVsZW1lbnQoQixjLCFnJiYkLEQoe3Jvd3M6WCxzdHlsZXNoZWV0OmEsdXNlSW5saW5lU3R5bGVzOnB9KSkpfSk7TC5zdXBwb3J0ZWRMYW5ndWFnZXM9WyJhYmFwIiwiYWJuZiIsImFjdGlvbnNjcmlwdCIsImFkYSIsImFnZGEiLCJhbCIsImFudGxyNCIsImFwYWNoZWNvbmYiLCJhcGV4IiwiYXBsIiwiYXBwbGVzY3JpcHQiLCJhcWwiLCJhcmR1aW5vIiwiYXJmZiIsImFzY2lpZG9jIiwiYXNtNjUwMiIsImFzbWF0bWVsIiwiYXNwbmV0IiwiYXV0b2hvdGtleSIsImF1dG9pdCIsImF2aXN5bnRoIiwiYXZyby1pZGwiLCJiYXNoIiwiYmFzaWMiLCJiYXRjaCIsImJiY29kZSIsImJpY2VwIiwiYmlyYiIsImJpc29uIiwiYm5mIiwiYnJhaW5mdWNrIiwiYnJpZ2h0c2NyaXB0IiwiYnJvIiwiYnNsIiwiYyIsImNmc2NyaXB0IiwiY2hhaXNjcmlwdCIsImNpbCIsImNsaWtlIiwiY2xvanVyZSIsImNtYWtlIiwiY29ib2wiLCJjb2ZmZWVzY3JpcHQiLCJjb25jdXJuYXMiLCJjb3EiLCJjcHAiLCJjcnlzdGFsIiwiY3NoYXJwIiwiY3NodG1sIiwiY3NwIiwiY3NzLWV4dHJhcyIsImNzcyIsImNzdiIsImN5cGhlciIsImQiLCJkYXJ0IiwiZGF0YXdlYXZlIiwiZGF4IiwiZGhhbGwiLCJkaWZmIiwiZGphbmdvIiwiZG5zLXpvbmUtZmlsZSIsImRvY2tlciIsImRvdCIsImVibmYiLCJlZGl0b3Jjb25maWciLCJlaWZmZWwiLCJlanMiLCJlbGl4aXIiLCJlbG0iLCJlcmIiLCJlcmxhbmciLCJldGx1YSIsImV4Y2VsLWZvcm11bGEiLCJmYWN0b3IiLCJmYWxzZSIsImZpcmVzdG9yZS1zZWN1cml0eS1ydWxlcyIsImZsb3ciLCJmb3J0cmFuIiwiZnNoYXJwIiwiZnRsIiwiZ2FwIiwiZ2NvZGUiLCJnZHNjcmlwdCIsImdlZGNvbSIsImdoZXJraW4iLCJnaXQiLCJnbHNsIiwiZ21sIiwiZ24iLCJnby1tb2R1bGUiLCJnbyIsImdyYXBocWwiLCJncm9vdnkiLCJoYW1sIiwiaGFuZGxlYmFycyIsImhhc2tlbGwiLCJoYXhlIiwiaGNsIiwiaGxzbCIsImhvb24iLCJocGtwIiwiaHN0cyIsImh0dHAiLCJpY2hpZ29qYW0iLCJpY29uIiwiaWN1LW1lc3NhZ2UtZm9ybWF0IiwiaWRyaXMiLCJpZWNzdCIsImlnbm9yZSIsImluZm9ybTciLCJpbmkiLCJpbyIsImoiLCJqYXZhIiwiamF2YWRvYyIsImphdmFkb2NsaWtlIiwiamF2YXNjcmlwdCIsImphdmFzdGFja3RyYWNlIiwiamV4bCIsImpvbGllIiwianEiLCJqcy1leHRyYXMiLCJqcy10ZW1wbGF0ZXMiLCJqc2RvYyIsImpzb24iLCJqc29uNSIsImpzb25wIiwianNzdGFja3RyYWNlIiwianN4IiwianVsaWEiLCJrZWVwYWxpdmVkIiwia2V5bWFuIiwia290bGluIiwia3VtaXIiLCJrdXN0byIsImxhdGV4IiwibGF0dGUiLCJsZXNzIiwibGlseXBvbmQiLCJsaXF1aWQiLCJsaXNwIiwibGl2ZXNjcmlwdCIsImxsdm0iLCJsb2ciLCJsb2xjb2RlIiwibHVhIiwibWFnbWEiLCJtYWtlZmlsZSIsIm1hcmtkb3duIiwibWFya3VwLXRlbXBsYXRpbmciLCJtYXJrdXAiLCJtYXRsYWIiLCJtYXhzY3JpcHQiLCJtZWwiLCJtZXJtYWlkIiwibWl6YXIiLCJtb25nb2RiIiwibW9ua2V5IiwibW9vbnNjcmlwdCIsIm4xcWwiLCJuNGpzIiwibmFuZDJ0ZXRyaXMtaGRsIiwibmFuaXNjcmlwdCIsIm5hc20iLCJuZW9uIiwibmV2b2QiLCJuZ2lueCIsIm5pbSIsIm5peCIsIm5zaXMiLCJvYmplY3RpdmVjIiwib2NhbWwiLCJvcGVuY2wiLCJvcGVucWFzbSIsIm96IiwicGFyaWdwIiwicGFyc2VyIiwicGFzY2FsIiwicGFzY2FsaWdvIiwicGNheGlzIiwicGVvcGxlY29kZSIsInBlcmwiLCJwaHAtZXh0cmFzIiwicGhwIiwicGhwZG9jIiwicGxzcWwiLCJwb3dlcnF1ZXJ5IiwicG93ZXJzaGVsbCIsInByb2Nlc3NpbmciLCJwcm9sb2ciLCJwcm9tcWwiLCJwcm9wZXJ0aWVzIiwicHJvdG9idWYiLCJwc2wiLCJwdWciLCJwdXBwZXQiLCJwdXJlIiwicHVyZWJhc2ljIiwicHVyZXNjcmlwdCIsInB5dGhvbiIsInEiLCJxbWwiLCJxb3JlIiwicXNoYXJwIiwiciIsInJhY2tldCIsInJlYXNvbiIsInJlZ2V4IiwicmVnbyIsInJlbnB5IiwicmVzdCIsInJpcCIsInJvYm9jb25mIiwicm9ib3RmcmFtZXdvcmsiLCJydWJ5IiwicnVzdCIsInNhcyIsInNhc3MiLCJzY2FsYSIsInNjaGVtZSIsInNjc3MiLCJzaGVsbC1zZXNzaW9uIiwic21hbGkiLCJzbWFsbHRhbGsiLCJzbWFydHkiLCJzbWwiLCJzb2xpZGl0eSIsInNvbHV0aW9uLWZpbGUiLCJzb3kiLCJzcGFycWwiLCJzcGx1bmstc3BsIiwic3FmIiwic3FsIiwic3F1aXJyZWwiLCJzdGFuIiwic3R5bHVzIiwic3dpZnQiLCJzeXN0ZW1kIiwidDQtY3MiLCJ0NC10ZW1wbGF0aW5nIiwidDQtdmIiLCJ0YXAiLCJ0Y2wiLCJ0ZXh0aWxlIiwidG9tbCIsInRyZW1vciIsInRzeCIsInR0MiIsInR1cnRsZSIsInR3aWciLCJ0eXBlc2NyaXB0IiwidHlwb3NjcmlwdCIsInVucmVhbHNjcmlwdCIsInVvcmF6b3IiLCJ1cmkiLCJ2IiwidmFsYSIsInZibmV0IiwidmVsb2NpdHkiLCJ2ZXJpbG9nIiwidmhkbCIsInZpbSIsInZpc3VhbC1iYXNpYyIsIndhcnBzY3JpcHQiLCJ3YXNtIiwid2ViLWlkbCIsIndpa2kiLCJ3b2xmcmFtIiwid3JlbiIsInhlb3JhIiwieG1sLWRvYyIsInhvam8iLCJ4cXVlcnkiLCJ5YW1sIiwieWFuZyIsInppZyJdO3QuYT1MfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oNTI1KTtuLmQodCwiYSIsKGZ1bmN0aW9uKCl7cmV0dXJuIGl9KSk7Y29uc3QgaT1mdW5jdGlvbihlLHQsbixpKXsiZnVuY3Rpb24iPT09dHlwZW9mIHQmJiJmdW5jdGlvbiIhPT10eXBlb2YgbiYmKGk9bixuPXQsdD1udWxsKTtjb25zdCBhPU9iamVjdChyLmEpKHQpLG89aT8tMToxOyFmdW5jdGlvbiBlKHIscyxsKXtjb25zdCBjPXImJiJvYmplY3QiPT09dHlwZW9mIHI/cjp7fTtpZigic3RyaW5nIj09PXR5cGVvZiBjLnR5cGUpe2NvbnN0IGU9InN0cmluZyI9PT10eXBlb2YgYy50YWdOYW1lP2MudGFnTmFtZToic3RyaW5nIj09PXR5cGVvZiBjLm5hbWU/Yy5uYW1lOnZvaWQgMDtPYmplY3QuZGVmaW5lUHJvcGVydHkodSwibmFtZSIse3ZhbHVlOiJub2RlICgiK3IudHlwZSsoZT8iPCIrZSsiPiI6IiIpKyIpIn0pfXJldHVybiB1O2Z1bmN0aW9uIHUoKXtsZXQgYyx1LGQscD1bXTtpZigoIXR8fGEocixzLGxbbC5sZW5ndGgtMV18fG51bGwpKSYmKHA9ZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZTtpZigibnVtYmVyIj09PXR5cGVvZiBlKXJldHVyblshMCxlXTtyZXR1cm5bZV19KG4ocixsKSksITE9PT1wWzBdKSlyZXR1cm4gcDtpZihyLmNoaWxkcmVuJiYic2tpcCIhPT1wWzBdKWZvcih1PShpP3IuY2hpbGRyZW4ubGVuZ3RoOi0xKStvLGQ9bC5jb25jYXQocik7dT4tMSYmdTxyLmNoaWxkcmVuLmxlbmd0aDspe2lmKGM9ZShyLmNoaWxkcmVuW3VdLHUsZCkoKSwhMT09PWNbMF0pcmV0dXJuIGM7dT0ibnVtYmVyIj09PXR5cGVvZiBjWzFdP2NbMV06dStvfXJldHVybiBwfX0oZSx2b2lkIDAsW10pKCl9fV1dKTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9Mi5mMWUyMWMyNi5jaHVuay5qcy5tYXA= |
| 1 | { |
| 2 | "files": { |
| 3 | "main.js": "/static/js/main.c68012c8.chunk.js", |
| 4 | "main.css": "/static/css/main.d8cc5cee.chunk.css", |
| 5 | "index.html": "/index.html", |
| 6 | "main.js.map": "/static/js/main.c68012c8.chunk.js.map", |
| 7 | "runtime-main.js": "/static/js/runtime-main.bce919bb.js", |
| 8 | "service-worker.js": "/service-worker.js", |
| 9 | "runtime-main.js.map": "/static/js/runtime-main.bce919bb.js.map", |
| 10 | "static/media/sasha_anon.png": "/static/media/sasha_anon.6ba19561.png", |
| 11 | "static/js/2.f1e21c26.chunk.js": "/static/js/2.f1e21c26.chunk.js", |
| 12 | "static/css/2.a5779d10.chunk.css": "/static/css/2.a5779d10.chunk.css", |
| 13 | "static/media/bootstrap-icons.css": "/static/media/bootstrap-icons.cc1e5eda.woff2", |
| 14 | "static/js/2.f1e21c26.chunk.js.map": "/static/js/2.f1e21c26.chunk.js.map", |
| 15 | "static/css/2.a5779d10.chunk.css.map": "/static/css/2.a5779d10.chunk.css.map", |
| 16 | "static/css/main.d8cc5cee.chunk.css.map": "/static/css/main.d8cc5cee.chunk.css.map", |
| 17 | "static/js/2.f1e21c26.chunk.js.LICENSE.txt": "/static/js/2.f1e21c26.chunk.js.LICENSE.txt", |
| 18 | "precache-manifest.e6f50967cd2618d0698eb898bdee1993.js": "/precache-manifest.e6f50967cd2618d0698eb898bdee1993.js" |
| 19 | }, |
| 20 | "entrypoints": [ |
| 21 | "static/js/runtime-main.bce919bb.js", |
| 22 | "static/css/2.a5779d10.chunk.css", |
| 23 | "static/js/2.f1e21c26.chunk.js", |
| 24 | "static/css/main.d8cc5cee.chunk.css", |
| 25 | "static/js/main.c68012c8.chunk.js" |
| 26 | ] |
| 27 | } |
| 1 | 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T29hLEVBQUksSUFBSyxHQUFHcGEsT0FBT29hLEVBQUksR0FBSSxLQUFLcGEsT0FBT29hLEVBQUksR0FBSSxLQUFLcGEsT0FBT29hLEVBQUksSUFBSyxHQUFHcGEsT0FBT29hLEVBQUksR0FBSSxLQUFLcGEsT0FBT29hLEVBQUksR0FBSSxLQUFLcGEsT0FBT29hLEVBQUksSUFBSyxHQUFHcGEsT0FBT29hLEVBQUksR0FBSSxLQUFLcGEsT0FBT29hLEVBQUksR0FBSSxLQUFLcGEsT0FBT29hLEVBQUksS0FHcm1CRSxHQUFhLEVBR1IsQ0FBQ0YsRUFBSSxHQUFJQSxFQUFJLEdBQUlBLEVBQUksR0FBSUEsRUFBSSxHQUFJLEdBQUdwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxJQUFLLEdBQUdwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxJQUFLLEdBQUdwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxJQUFLLEdBQUdwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxJQUFLLEdBQUdwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxJQUFLLEdBQUdwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxJQUFLLEdBQUdwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxJQUFLLEdBQUdwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxJQUFLLEdBQUdwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxJQUFLLEdBQUdwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxJQUFLLEdBQUdwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxJQUFLLEdBQUdwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxJQUFLLEdBQUdwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxJQUFLLEdBQUdwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxJQUFLLEdBQUdwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxJQUFLLEdBQUdwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxJQUFLLEdBQUdwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxJQUFLLEdBQUdwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxJQUFLLEdBQUdwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxJQUFLLEdBQUdwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxJQUFLLEdBQUdwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxJQUFLLEdBQUdwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxJQUFLLEdBQUdwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxJQUFLLEdBQUdwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxJQUFLLEdBQUdwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxJQUFLLEdBQUdwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxJQUFLLEdBQUdwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxJQUFLLEdBQUdwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxJQUFLLEdBQUdwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxJQUFLLEdBQUdwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxJQUFLLEdBQUdwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxJQUFLLEdBQUdwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxJQUFLLEdBQUdwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxJQUFLLEdBQUdwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxJQUFLLEdBQUdwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxJQUFLLEdBQUdwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxJQUFLLEdBQUdwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxJQUFLLEdBQUdwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxJQUFLLEdBQUdwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxJQUFLLEdBQUdwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxJQUFLLEdBQUdwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxJQUFLLEdBQUdwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxJQUFLLEdBQUdwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxJQUFLLEdBQUdwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxJQUFLLEdBQUdwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxJQUFLLEdBQUdwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxJQUFLLEdBQUdwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxJQUFLLEdBQUdwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxJQUFLLEdBQUdwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxJQUFLLEdBQUdwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxJQUFLLEdBQUdwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxJQUFLLEdBQUdwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxJQUFLLEdBQUdwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxJQUFLLEdBQUdwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxJQUFLLEdBQUdwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxJQUFLLEdBQUdwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxPQUFPb2EsRUFBSSxHQUFJLEtBQUtwYSxP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TzQxSCxHQUd2Qjk2RyxHQUFVLEdBQUtBLEVBQVM4NkcsRUFBSzE0SCxTQUFTM0MsUUFBUSxDQUluRCxHQUZBaXhTLEVBQVkzM0wsRUFBUStoQixFQUFLMTRILFNBQVM0ZCxHQUFTQSxFQUFRMndSLEVBQXZDNTNMLElBeEhOLElBMEhGMjNMLEVBQVUsR0FDWixPQUFPQSxFQUdUMXdSLEVBQzBCLGtCQUFqQjB3UixFQUFVLEdBQWtCQSxFQUFVLEdBQUsxd1IsRUFBU3VzQixFQUlqRSxPQUFPL21DLEdBckVYdXpHLENBQVEwd0MsT0FBTXptSixFQUFXLEdBQXpCKzFHIiwiZmlsZSI6InN0YXRpYy9qcy8yLmYxZTIxYzI2LmNodW5rLmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LmRldmVsb3BtZW50LmpzJyk7XG59XG4iLCIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29kZX0gQ29kZVxuICovXG5cbmltcG9ydCB7dW5pY29kZVB1bmN0dWF0aW9uUmVnZXh9IGZyb20gJy4vbGliL3VuaWNvZGUtcHVuY3R1YXRpb24tcmVnZXguanMnXG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciB0aGUgY2hhcmFjdGVyIGNvZGUgcmVwcmVzZW50cyBhbiBBU0NJSSBhbHBoYSAoYGFgIHRocm91Z2ggYHpgLFxuICogY2FzZSBpbnNlbnNpdGl2ZSkuXG4gKlxuICogQW4gKipBU0NJSSBhbHBoYSoqIGlzIGFuIEFTQ0lJIHVwcGVyIGFscGhhIG9yIEFTQ0lJIGxvd2VyIGFscGhhLlxuICpcbiAqIEFuICoqQVNDSUkgdXBwZXIgYWxwaGEqKiBpcyBhIGNoYXJhY3RlciBpbiB0aGUgaW5jbHVzaXZlIHJhbmdlIFUrMDA0MSAoYEFgKVxuICogdG8gVSswMDVBIChgWmApLlxuICpcbiAqIEFuICoqQVNDSUkgbG93ZXIgYWxwaGEqKiBpcyBhIGNoYXJhY3RlciBpbiB0aGUgaW5jbHVzaXZlIHJhbmdlIFUrMDA2MSAoYGFgKVxuICogdG8gVSswMDdBIChgemApLlxuICpcbiAqIEBwYXJhbSBjb2RlXG4gKiAgIENvZGUuXG4gKiBAcmV0dXJuc1xuICogICBXaGV0aGVyIGl0IG1hdGNoZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBhc2NpaUFscGhhID0gcmVnZXhDaGVjaygvW0EtWmEtel0vKVxuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgdGhlIGNoYXJhY3RlciBjb2RlIHJlcHJlc2VudHMgYW4gQVNDSUkgYWxwaGFudW1lcmljIChgYWBcbiAqIHRocm91Z2ggYHpgLCBjYXNlIGluc2Vuc2l0aXZlLCBvciBgMGAgdGhyb3VnaCBgOWApLlxuICpcbiAqIEFuICoqQVNDSUkgYWxwaGFudW1lcmljKiogaXMgYW4gQVNDSUkgZGlnaXQgKHNlZSBgYXNjaWlEaWdpdGApIG9yIEFTQ0lJIGFscGhhXG4gKiAoc2VlIGBhc2NpaUFscGhhYCkuXG4gKlxuICogQHBhcmFtIGNvZGVcbiAqICAgQ29kZS5cbiAqIEByZXR1cm5zXG4gKiAgIFdoZXRoZXIgaXQgbWF0Y2hlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IGFzY2lpQWxwaGFudW1lcmljID0gcmVnZXhDaGVjaygvW1xcZEEtWmEtel0vKVxuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgdGhlIGNoYXJhY3RlciBjb2RlIHJlcHJlc2VudHMgYW4gQVNDSUkgYXRleHQuXG4gKlxuICogYXRleHQgaXMgYW4gQVNDSUkgYWxwaGFudW1lcmljIChzZWUgYGFzY2lpQWxwaGFudW1lcmljYCksIG9yIGEgY2hhcmFjdGVyIGluXG4gKiB0aGUgaW5jbHVzaXZlIHJhbmdlcyBVKzAwMjMgTlVNQkVSIFNJR04gKGAjYCkgdG8gVSswMDI3IEFQT1NUUk9QSEUgKGAnYCksXG4gKiBVKzAwMkEgQVNURVJJU0sgKGAqYCksIFUrMDAyQiBQTFVTIFNJR04gKGArYCksIFUrMDAyRCBEQVNIIChgLWApLCBVKzAwMkZcbiAqIFNMQVNIIChgL2ApLCBVKzAwM0QgRVFVQUxTIFRPIChgPWApLCBVKzAwM0YgUVVFU1RJT04gTUFSSyAoYD9gKSwgVSswMDVFXG4gKiBDQVJFVCAoYF5gKSB0byBVKzAwNjAgR1JBVkUgQUNDRU5UIChgYCBgIGBgKSwgb3IgVSswMDdCIExFRlQgQ1VSTFkgQlJBQ0VcbiAqIChge2ApIHRvIFUrMDA3RSBUSUxERSAoYH5gKS5cbiAqXG4gKiBTZWU6XG4gKiAqKlxcW1JGQzUzMjJdKio6XG4gKiBbSW50ZXJuZXQgTWVzc2FnZSBGb3JtYXRdKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM1MzIyKS5cbiAqIFAuIFJlc25pY2suXG4gKiBJRVRGLlxuICpcbiAqIEBwYXJhbSBjb2RlXG4gKiAgIENvZGUuXG4gKiBAcmV0dXJuc1xuICogICBXaGV0aGVyIGl0IG1hdGNoZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBhc2NpaUF0ZXh0ID0gcmVnZXhDaGVjaygvWyMtJyorXFwtLTk9P0EtWl4tfl0vKVxuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgYSBjaGFyYWN0ZXIgY29kZSBpcyBhbiBBU0NJSSBjb250cm9sIGNoYXJhY3Rlci5cbiAqXG4gKiBBbiAqKkFTQ0lJIGNvbnRyb2wqKiBpcyBhIGNoYXJhY3RlciBpbiB0aGUgaW5jbHVzaXZlIHJhbmdlIFUrMDAwMCBOVUxMIChOVUwpXG4gKiB0byBVKzAwMUYgKFVTKSwgb3IgVSswMDdGIChERUwpLlxuICpcbiAqIEBwYXJhbSB7Q29kZX0gY29kZVxuICogICBDb2RlLlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKiAgIFdoZXRoZXIgaXQgbWF0Y2hlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzY2lpQ29udHJvbChjb2RlKSB7XG4gIHJldHVybiAoXG4gICAgLy8gU3BlY2lhbCB3aGl0ZXNwYWNlIGNvZGVzICh3aGljaCBoYXZlIG5lZ2F0aXZlIHZhbHVlcyksIEMwIGFuZCBDb250cm9sXG4gICAgLy8gY2hhcmFjdGVyIERFTFxuICAgIGNvZGUgIT09IG51bGwgJiYgKGNvZGUgPCAzMiB8fCBjb2RlID09PSAxMjcpXG4gIClcbn1cblxuLyoqXG4gKiBDaGVjayB3aGV0aGVyIHRoZSBjaGFyYWN0ZXIgY29kZSByZXByZXNlbnRzIGFuIEFTQ0lJIGRpZ2l0IChgMGAgdGhyb3VnaCBgOWApLlxuICpcbiAqIEFuICoqQVNDSUkgZGlnaXQqKiBpcyBhIGNoYXJhY3RlciBpbiB0aGUgaW5jbHVzaXZlIHJhbmdlIFUrMDAzMCAoYDBgKSB0b1xuICogVSswMDM5IChgOWApLlxuICpcbiAqIEBwYXJhbSBjb2RlXG4gKiAgIENvZGUuXG4gKiBAcmV0dXJuc1xuICogICBXaGV0aGVyIGl0IG1hdGNoZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBhc2NpaURpZ2l0ID0gcmVnZXhDaGVjaygvXFxkLylcblxuLyoqXG4gKiBDaGVjayB3aGV0aGVyIHRoZSBjaGFyYWN0ZXIgY29kZSByZXByZXNlbnRzIGFuIEFTQ0lJIGhleCBkaWdpdCAoYGFgIHRocm91Z2hcbiAqIGBmYCwgY2FzZSBpbnNlbnNpdGl2ZSwgb3IgYDBgIHRocm91Z2ggYDlgKS5cbiAqXG4gKiBBbiAqKkFTQ0lJIGhleCBkaWdpdCoqIGlzIGFuIEFTQ0lJIGRpZ2l0IChzZWUgYGFzY2lpRGlnaXRgKSwgQVNDSUkgdXBwZXIgaGV4XG4gKiBkaWdpdCwgb3IgYW4gQVNDSUkgbG93ZXIgaGV4IGRpZ2l0LlxuICpcbiAqIEFuICoqQVNDSUkgdXBwZXIgaGV4IGRpZ2l0KiogaXMgYSBjaGFyYWN0ZXIgaW4gdGhlIGluY2x1c2l2ZSByYW5nZSBVKzAwNDFcbiAqIChgQWApIHRvIFUrMDA0NiAoYEZgKS5cbiAqXG4gKiBBbiAqKkFTQ0lJIGxvd2VyIGhleCBkaWdpdCoqIGlzIGEgY2hhcmFjdGVyIGluIHRoZSBpbmNsdXNpdmUgcmFuZ2UgVSswMDYxXG4gKiAoYGFgKSB0byBVKzAwNjYgKGBmYCkuXG4gKlxuICogQHBhcmFtIGNvZGVcbiAqICAgQ29kZS5cbiAqIEByZXR1cm5zXG4gKiAgIFdoZXRoZXIgaXQgbWF0Y2hlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IGFzY2lpSGV4RGlnaXQgPSByZWdleENoZWNrKC9bXFxkQS1GYS1mXS8pXG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciB0aGUgY2hhcmFjdGVyIGNvZGUgcmVwcmVzZW50cyBBU0NJSSBwdW5jdHVhdGlvbi5cbiAqXG4gKiBBbiAqKkFTQ0lJIHB1bmN0dWF0aW9uKiogaXMgYSBjaGFyYWN0ZXIgaW4gdGhlIGluY2x1c2l2ZSByYW5nZXMgVSswMDIxXG4gKiBFWENMQU1BVElPTiBNQVJLIChgIWApIHRvIFUrMDAyRiBTTEFTSCAoYC9gKSwgVSswMDNBIENPTE9OIChgOmApIHRvIFUrMDA0MCBBVFxuICogU0lHTiAoYEBgKSwgVSswMDVCIExFRlQgU1FVQVJFIEJSQUNLRVQgKGBbYCkgdG8gVSswMDYwIEdSQVZFIEFDQ0VOVFxuICogKGBgIGAgYGApLCBvciBVKzAwN0IgTEVGVCBDVVJMWSBCUkFDRSAoYHtgKSB0byBVKzAwN0UgVElMREUgKGB+YCkuXG4gKlxuICogQHBhcmFtIGNvZGVcbiAqICAgQ29kZS5cbiAqIEByZXR1cm5zXG4gKiAgIFdoZXRoZXIgaXQgbWF0Y2hlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IGFzY2lpUHVuY3R1YXRpb24gPSByZWdleENoZWNrKC9bIS0vOi1AWy1gey1+XS8pXG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciBhIGNoYXJhY3RlciBjb2RlIGlzIGEgbWFya2Rvd24gbGluZSBlbmRpbmcuXG4gKlxuICogQSAqKm1hcmtkb3duIGxpbmUgZW5kaW5nKiogaXMgdGhlIHZpcnR1YWwgY2hhcmFjdGVycyBNLTAwMDMgQ0FSUklBR0UgUkVUVVJOXG4gKiBMSU5FIEZFRUQgKENSTEYpLCBNLTAwMDQgTElORSBGRUVEIChMRikgYW5kIE0tMDAwNSBDQVJSSUFHRSBSRVRVUk4gKENSKS5cbiAqXG4gKiBJbiBtaWNyb21hcmssIHRoZSBhY3R1YWwgY2hhcmFjdGVyIFUrMDAwQSBMSU5FIEZFRUQgKExGKSBhbmQgVSswMDBEIENBUlJJQUdFXG4gKiBSRVRVUk4gKENSKSBhcmUgcmVwbGFjZWQgYnkgdGhlc2UgdmlydHVhbCBjaGFyYWN0ZXJzIGRlcGVuZGluZyBvbiB3aGV0aGVyXG4gKiB0aGV5IG9jY3VycmVkIHRvZ2V0aGVyLlxuICpcbiAqIEBwYXJhbSB7Q29kZX0gY29kZVxuICogICBDb2RlLlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKiAgIFdoZXRoZXIgaXQgbWF0Y2hlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSB7XG4gIHJldHVybiBjb2RlICE9PSBudWxsICYmIGNvZGUgPCAtMlxufVxuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgYSBjaGFyYWN0ZXIgY29kZSBpcyBhIG1hcmtkb3duIGxpbmUgZW5kaW5nIChzZWVcbiAqIGBtYXJrZG93bkxpbmVFbmRpbmdgKSBvciBtYXJrZG93biBzcGFjZSAoc2VlIGBtYXJrZG93blNwYWNlYCkuXG4gKlxuICogQHBhcmFtIHtDb2RlfSBjb2RlXG4gKiAgIENvZGUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqICAgV2hldGhlciBpdCBtYXRjaGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFya2Rvd25MaW5lRW5kaW5nT3JTcGFjZShjb2RlKSB7XG4gIHJldHVybiBjb2RlICE9PSBudWxsICYmIChjb2RlIDwgMCB8fCBjb2RlID09PSAzMilcbn1cblxuLyoqXG4gKiBDaGVjayB3aGV0aGVyIGEgY2hhcmFjdGVyIGNvZGUgaXMgYSBtYXJrZG93biBzcGFjZS5cbiAqXG4gKiBBICoqbWFya2Rvd24gc3BhY2UqKiBpcyB0aGUgY29uY3JldGUgY2hhcmFjdGVyIFUrMDAyMCBTUEFDRSAoU1ApIGFuZCB0aGVcbiAqIHZpcnR1YWwgY2hhcmFjdGVycyBNLTAwMDEgVklSVFVBTCBTUEFDRSAoVlMpIGFuZCBNLTAwMDIgSE9SSVpPTlRBTCBUQUIgKEhUKS5cbiAqXG4gKiBJbiBtaWNyb21hcmssIHRoZSBhY3R1YWwgY2hhcmFjdGVyIFUrMDAwOSBDSEFSQUNURVIgVEFCVUxBVElPTiAoSFQpIGlzXG4gKiByZXBsYWNlZCBieSBvbmUgTS0wMDAyIEhPUklaT05UQUwgVEFCIChIVCkgYW5kIGJldHdlZW4gMCBhbmQgMyBNLTAwMDEgVklSVFVBTFxuICogU1BBQ0UgKFZTKSBjaGFyYWN0ZXJzLCBkZXBlbmRpbmcgb24gdGhlIGNvbHVtbiBhdCB3aGljaCB0aGUgdGFiIG9jY3VycmVkLlxuICpcbiAqIEBwYXJhbSB7Q29kZX0gY29kZVxuICogICBDb2RlLlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKiAgIFdoZXRoZXIgaXQgbWF0Y2hlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hcmtkb3duU3BhY2UoY29kZSkge1xuICByZXR1cm4gY29kZSA9PT0gLTIgfHwgY29kZSA9PT0gLTEgfHwgY29kZSA9PT0gMzJcbn1cblxuLy8gU2l6ZSBub3RlOiByZW1vdmluZyBBU0NJSSBmcm9tIHRoZSByZWdleCBhbmQgdXNpbmcgYGFzY2lpUHVuY3R1YXRpb25gIGhlcmVcbi8vIEluIGZhY3QgYWRkcyB0byB0aGUgYnVuZGxlIHNpemUuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgdGhlIGNoYXJhY3RlciBjb2RlIHJlcHJlc2VudHMgVW5pY29kZSBwdW5jdHVhdGlvbi5cbiAqXG4gKiBBICoqVW5pY29kZSBwdW5jdHVhdGlvbioqIGlzIGEgY2hhcmFjdGVyIGluIHRoZSBVbmljb2RlIGBQY2AgKFB1bmN0dWF0aW9uLFxuICogQ29ubmVjdG9yKSwgYFBkYCAoUHVuY3R1YXRpb24sIERhc2gpLCBgUGVgIChQdW5jdHVhdGlvbiwgQ2xvc2UpLCBgUGZgXG4gKiAoUHVuY3R1YXRpb24sIEZpbmFsIHF1b3RlKSwgYFBpYCAoUHVuY3R1YXRpb24sIEluaXRpYWwgcXVvdGUpLCBgUG9gXG4gKiAoUHVuY3R1YXRpb24sIE90aGVyKSwgb3IgYFBzYCAoUHVuY3R1YXRpb24sIE9wZW4pIGNhdGVnb3JpZXMsIG9yIGFuIEFTQ0lJXG4gKiBwdW5jdHVhdGlvbiAoc2VlIGBhc2NpaVB1bmN0dWF0aW9uYCkuXG4gKlxuICogU2VlOlxuICogKipcXFtVTklDT0RFXSoqOlxuICogW1RoZSBVbmljb2RlIFN0YW5kYXJkXShodHRwczovL3d3dy51bmljb2RlLm9yZy92ZXJzaW9ucy8pLlxuICogVW5pY29kZSBDb25zb3J0aXVtLlxuICpcbiAqIEBwYXJhbSBjb2RlXG4gKiAgIENvZGUuXG4gKiBAcmV0dXJuc1xuICogICBXaGV0aGVyIGl0IG1hdGNoZXMuXG4gKi9cbmV4cG9ydCBjb25zdCB1bmljb2RlUHVuY3R1YXRpb24gPSByZWdleENoZWNrKHVuaWNvZGVQdW5jdHVhdGlvblJlZ2V4KVxuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgdGhlIGNoYXJhY3RlciBjb2RlIHJlcHJlc2VudHMgVW5pY29kZSB3aGl0ZXNwYWNlLlxuICpcbiAqIE5vdGUgdGhhdCB0aGlzIGRvZXMgaGFuZGxlIG1pY3JvbWFyayBzcGVjaWZpYyBtYXJrZG93biB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMuXG4gKiBTZWUgYG1hcmtkb3duTGluZUVuZGluZ09yU3BhY2VgIHRvIGNoZWNrIHRoYXQuXG4gKlxuICogQSAqKlVuaWNvZGUgd2hpdGVzcGFjZSoqIGlzIGEgY2hhcmFjdGVyIGluIHRoZSBVbmljb2RlIGBac2AgKFNlcGFyYXRvcixcbiAqIFNwYWNlKSBjYXRlZ29yeSwgb3IgVSswMDA5IENIQVJBQ1RFUiBUQUJVTEFUSU9OIChIVCksIFUrMDAwQSBMSU5FIEZFRUQgKExGKSxcbiAqIFUrMDAwQyAoRkYpLCBvciBVKzAwMEQgQ0FSUklBR0UgUkVUVVJOIChDUikgKCoqXFxbVU5JQ09ERV0qKikuXG4gKlxuICogU2VlOlxuICogKipcXFtVTklDT0RFXSoqOlxuICogW1RoZSBVbmljb2RlIFN0YW5kYXJkXShodHRwczovL3d3dy51bmljb2RlLm9yZy92ZXJzaW9ucy8pLlxuICogVW5pY29kZSBDb25zb3J0aXVtLlxuICpcbiAqIEBwYXJhbSBjb2RlXG4gKiAgIENvZGUuXG4gKiBAcmV0dXJuc1xuICogICBXaGV0aGVyIGl0IG1hdGNoZXMuXG4gKi9cbmV4cG9ydCBjb25zdCB1bmljb2RlV2hpdGVzcGFjZSA9IHJlZ2V4Q2hlY2soL1xccy8pXG5cbi8qKlxuICogQ3JlYXRlIGEgY29kZSBjaGVjayBmcm9tIGEgcmVnZXguXG4gKlxuICogQHBhcmFtIHtSZWdFeHB9IHJlZ2V4XG4gKiBAcmV0dXJucyB7KGNvZGU6IENvZGUpID0+IGJvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIHJlZ2V4Q2hlY2socmVnZXgpIHtcbiAgcmV0dXJuIGNoZWNrXG5cbiAgLyoqXG4gICAqIENoZWNrIHdoZXRoZXIgYSBjb2RlIG1hdGNoZXMgdGhlIGJvdW5kIHJlZ2V4LlxuICAgKlxuICAgKiBAcGFyYW0ge0NvZGV9IGNvZGVcbiAgICogICBDaGFyYWN0ZXIgY29kZS5cbiAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAqICAgV2hldGhlciB0aGUgY2hhcmFjdGVyIGNvZGUgbWF0Y2hlcyB0aGUgYm91bmQgcmVnZXguXG4gICAqL1xuICBmdW5jdGlvbiBjaGVjayhjb2RlKSB7XG4gICAgcmV0dXJuIGNvZGUgIT09IG51bGwgJiYgcmVnZXgudGVzdChTdHJpbmcuZnJvbUNoYXJDb2RlKGNvZGUpKVxuICB9XG59XG4iLCIvLyBUaGlzIG1vZHVsZSBpcyBnZW5lcmF0ZWQgYnkgYHNjcmlwdC9gLlxuLy9cbi8vIENvbW1vbk1hcmsgaGFuZGxlcyBhdHRlbnRpb24gKGVtcGhhc2lzLCBzdHJvbmcpIG1hcmtlcnMgYmFzZWQgb24gd2hhdCBjb21lc1xuLy8gYmVmb3JlIG9yIGFmdGVyIHRoZW0uXG4vLyBPbmUgc3VjaCBkaWZmZXJlbmNlIGlzIGlmIHRob3NlIGNoYXJhY3RlcnMgYXJlIFVuaWNvZGUgcHVuY3R1YXRpb24uXG4vLyBUaGlzIHNjcmlwdCBpcyBnZW5lcmF0ZWQgZnJvbSB0aGUgVW5pY29kZSBkYXRhLlxuXG4vKipcbiAqIFJlZ3VsYXIgZXhwcmVzc2lvbiB0aGF0IG1hdGNoZXMgYSB1bmljb2RlIHB1bmN0dWF0aW9uIGNoYXJhY3Rlci5cbiAqL1xuZXhwb3J0IGNvbnN0IHVuaWNvZGVQdW5jdHVhdGlvblJlZ2V4ID1cbiAgL1shLVxcLzotQFxcWy1gXFx7LX5cXHhBMVxceEE3XFx4QUJcXHhCNlxceEI3XFx4QkJcXHhCRlxcdTAzN0VcXHUwMzg3XFx1MDU1QS1cXHUwNTVGXFx1MDU4OVxcdTA1OEFcXHUwNUJFXFx1MDVDMFxcdTA1QzNcXHUwNUM2XFx1MDVGM1xcdTA1RjRcXHUwNjA5XFx1MDYwQVxcdTA2MENcXHUwNjBEXFx1MDYxQlxcdTA2MUQtXFx1MDYxRlxcdTA2NkEtXFx1MDY2RFxcdTA2RDRcXHUwNzAwLVxcdTA3MERcXHUwN0Y3LVxcdTA3RjlcXHUwODMwLVxcdTA4M0VcXHUwODVFXFx1MDk2NFxcdTA5NjVcXHUwOTcwXFx1MDlGRFxcdTBBNzZcXHUwQUYwXFx1MEM3N1xcdTBDODRcXHUwREY0XFx1MEU0RlxcdTBFNUFcXHUwRTVCXFx1MEYwNC1cXHUwRjEyXFx1MEYxNFxcdTBGM0EtXFx1MEYzRFxcdTBGODVcXHUwRkQwLVxcdTBGRDRcXHUwRkQ5XFx1MEZEQVxcdTEwNEEtXFx1MTA0RlxcdTEwRkJcXHUxMzYwLVxcdTEzNjhcXHUxNDAwXFx1MTY2RVxcdTE2OUJcXHUxNjlDXFx1MTZFQi1cXHUxNkVEXFx1MTczNVxcdTE3MzZcXHUxN0Q0LVxcdTE3RDZcXHUxN0Q4LVxcdTE3REFcXHUxODAwLVxcdTE4MEFcXHUxOTQ0XFx1MTk0NVxcdTFBMUVcXHUxQTFGXFx1MUFBMC1cXHUxQUE2XFx1MUFBOC1cXHUxQUFEXFx1MUI1QS1cXHUxQjYwXFx1MUI3RFxcdTFCN0VcXHUxQkZDLVxcdTFCRkZcXHUxQzNCLVxcdTFDM0ZcXHUxQzdFXFx1MUM3RlxcdTFDQzAtXFx1MUNDN1xcdTFDRDNcXHUyMDEwLVxcdTIwMjdcXHUyMDMwLVxcdTIwNDNcXHUyMDQ1LVxcdTIwNTFcXHUyMDUzLVxcdTIwNUVcXHUyMDdEXFx1MjA3RVxcdTIwOERcXHUyMDhFXFx1MjMwOC1cXHUyMzBCXFx1MjMyOVxcdTIzMkFcXHUyNzY4LVxcdTI3NzVcXHUyN0M1XFx1MjdDNlxcdTI3RTYtXFx1MjdFRlxcdTI5ODMtXFx1Mjk5OFxcdTI5RDgtXFx1MjlEQlxcdTI5RkNcXHUyOUZEXFx1MkNGOS1cXHUyQ0ZDXFx1MkNGRVxcdTJDRkZcXHUyRDcwXFx1MkUwMC1cXHUyRTJFXFx1MkUzMC1cXHUyRTRGXFx1MkU1Mi1cXHUyRTVEXFx1MzAwMS1cXHUzMDAzXFx1MzAwOC1cXHUzMDExXFx1MzAxNC1cXHUzMDFGXFx1MzAzMFxcdTMwM0RcXHUzMEEwXFx1MzBGQlxcdUE0RkVcXHVBNEZGXFx1QTYwRC1cXHVBNjBGXFx1QTY3M1xcdUE2N0VcXHVBNkYyLVxcdUE2RjdcXHVBODc0LVxcdUE4NzdcXHVBOENFXFx1QThDRlxcdUE4RjgtXFx1QThGQVxcdUE4RkNcXHVBOTJFXFx1QTkyRlxcdUE5NUZcXHVBOUMxLVxcdUE5Q0RcXHVBOURFXFx1QTlERlxcdUFBNUMtXFx1QUE1RlxcdUFBREVcXHVBQURGXFx1QUFGMFxcdUFBRjFcXHVBQkVCXFx1RkQzRVxcdUZEM0ZcXHVGRTEwLVxcdUZFMTlcXHVGRTMwLVxcdUZFNTJcXHVGRTU0LVxcdUZFNjFcXHVGRTYzXFx1RkU2OFxcdUZFNkFcXHVGRTZCXFx1RkYwMS1cXHVGRjAzXFx1RkYwNS1cXHVGRjBBXFx1RkYwQy1cXHVGRjBGXFx1RkYxQVxcdUZGMUJcXHVGRjFGXFx1RkYyMFxcdUZGM0ItXFx1RkYzRFxcdUZGM0ZcXHVGRjVCXFx1RkY1RFxcdUZGNUYtXFx1RkY2NV0vXG4iLCJ2YXIgc2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKFwiLi9zZXRQcm90b3R5cGVPZi5qc1wiKTtcbmZ1bmN0aW9uIF9pbmhlcml0c0xvb3NlKHQsIG8pIHtcbiAgdC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKG8ucHJvdG90eXBlKSwgdC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSB0LCBzZXRQcm90b3R5cGVPZih0LCBvKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2luaGVyaXRzTG9vc2UsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuRWZmZWN0c30gRWZmZWN0c1xuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5TdGF0ZX0gU3RhdGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5UeXBlfSBUb2tlblR5cGVcbiAqL1xuXG5pbXBvcnQge21hcmtkb3duU3BhY2V9IGZyb20gJ21pY3JvbWFyay11dGlsLWNoYXJhY3RlcidcblxuLy8gVG8gZG86IGltcGxlbWVudCBgc3BhY2VPclRhYmAsIGBzcGFjZU9yVGFiTWluTWF4YCwgYHNwYWNlT3JUYWJXaXRoT3B0aW9uc2AuXG5cbi8qKlxuICogUGFyc2Ugc3BhY2VzIGFuZCB0YWJzLlxuICpcbiAqIFRoZXJlIGlzIG5vIGBub2tgIHBhcmFtZXRlcjpcbiAqXG4gKiAqICAgc3BhY2VzIGluIG1hcmtkb3duIGFyZSBvZnRlbiBvcHRpb25hbCwgaW4gd2hpY2ggY2FzZSB0aGlzIGZhY3RvcnkgY2FuIGJlXG4gKiAgICAgdXNlZCBhbmQgYG9rYCB3aWxsIGJlIHN3aXRjaGVkIHRvIHdoZXRoZXIgc3BhY2VzIHdlcmUgZm91bmQgb3Igbm90XG4gKiAqICAgb25lIGxpbmUgZW5kaW5nIG9yIHNwYWNlIGNhbiBiZSBkZXRlY3RlZCB3aXRoIGBtYXJrZG93blNwYWNlKGNvZGUpYCByaWdodFxuICogICAgIGJlZm9yZSB1c2luZyBgZmFjdG9yeVNwYWNlYFxuICpcbiAqICMjIyMjIyBFeGFtcGxlc1xuICpcbiAqIFdoZXJlIGDikIlgIHJlcHJlc2VudHMgYSB0YWIgKHBsdXMgaG93IG11Y2ggaXQgZXhwYW5kcykgYW5kIGDikKBgIHJlcHJlc2VudHMgYVxuICogc2luZ2xlIHNwYWNlLlxuICpcbiAqIGBgYG1hcmtkb3duXG4gKiDikIlcbiAqIOKQoOKQoOKQoOKQoFxuICog4pCJ4pCgXG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0ge0VmZmVjdHN9IGVmZmVjdHNcbiAqICAgQ29udGV4dC5cbiAqIEBwYXJhbSB7U3RhdGV9IG9rXG4gKiAgIFN0YXRlIHN3aXRjaGVkIHRvIHdoZW4gc3VjY2Vzc2Z1bC5cbiAqIEBwYXJhbSB7VG9rZW5UeXBlfSB0eXBlXG4gKiAgIFR5cGUgKGAnIFxcdCdgKS5cbiAqIEBwYXJhbSB7bnVtYmVyIHwgdW5kZWZpbmVkfSBbbWF4PUluZmluaXR5XVxuICogICBNYXggKGV4Y2x1c2l2ZSkuXG4gKiBAcmV0dXJuc1xuICogICBTdGFydCBzdGF0ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZhY3RvcnlTcGFjZShlZmZlY3RzLCBvaywgdHlwZSwgbWF4KSB7XG4gIGNvbnN0IGxpbWl0ID0gbWF4ID8gbWF4IC0gMSA6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWVxuICBsZXQgc2l6ZSA9IDBcbiAgcmV0dXJuIHN0YXJ0XG5cbiAgLyoqIEB0eXBlIHtTdGF0ZX0gKi9cbiAgZnVuY3Rpb24gc3RhcnQoY29kZSkge1xuICAgIGlmIChtYXJrZG93blNwYWNlKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmVudGVyKHR5cGUpXG4gICAgICByZXR1cm4gcHJlZml4KGNvZGUpXG4gICAgfVxuICAgIHJldHVybiBvayhjb2RlKVxuICB9XG5cbiAgLyoqIEB0eXBlIHtTdGF0ZX0gKi9cbiAgZnVuY3Rpb24gcHJlZml4KGNvZGUpIHtcbiAgICBpZiAobWFya2Rvd25TcGFjZShjb2RlKSAmJiBzaXplKysgPCBsaW1pdCkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gcHJlZml4XG4gICAgfVxuICAgIGVmZmVjdHMuZXhpdCh0eXBlKVxuICAgIHJldHVybiBvayhjb2RlKVxuICB9XG59XG4iLCJmdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKGUpIHtcbiAgaWYgKHZvaWQgMCA9PT0gZSkgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO1xuICByZXR1cm4gZTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2Fzc2VydFRoaXNJbml0aWFsaXplZCwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIFJlYWN0SXMgPSByZXF1aXJlKCdyZWFjdC1pcycpO1xuXG4gIC8vIEJ5IGV4cGxpY2l0bHkgdXNpbmcgYHByb3AtdHlwZXNgIHlvdSBhcmUgb3B0aW5nIGludG8gbmV3IGRldmVsb3BtZW50IGJlaGF2aW9yLlxuICAvLyBodHRwOi8vZmIubWUvcHJvcC10eXBlcy1pbi1wcm9kXG4gIHZhciB0aHJvd09uRGlyZWN0QWNjZXNzID0gdHJ1ZTtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2ZhY3RvcnlXaXRoVHlwZUNoZWNrZXJzJykoUmVhY3RJcy5pc0VsZW1lbnQsIHRocm93T25EaXJlY3RBY2Nlc3MpO1xufSBlbHNlIHtcbiAgLy8gQnkgZXhwbGljaXRseSB1c2luZyBgcHJvcC10eXBlc2AgeW91IGFyZSBvcHRpbmcgaW50byBuZXcgcHJvZHVjdGlvbiBiZWhhdmlvci5cbiAgLy8gaHR0cDovL2ZiLm1lL3Byb3AtdHlwZXMtaW4tcHJvZFxuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vZmFjdG9yeVdpdGhUaHJvd2luZ1NoaW1zJykoKTtcbn1cbiIsIi8qKlxuICogTGlrZSBgQXJyYXkjc3BsaWNlYCwgYnV0IHNtYXJ0ZXIgZm9yIGdpYW50IGFycmF5cy5cbiAqXG4gKiBgQXJyYXkjc3BsaWNlYCB0YWtlcyBhbGwgaXRlbXMgdG8gYmUgaW5zZXJ0ZWQgYXMgaW5kaXZpZHVhbCBhcmd1bWVudCB3aGljaFxuICogY2F1c2VzIGEgc3RhY2sgb3ZlcmZsb3cgaW4gVjggd2hlbiB0cnlpbmcgdG8gaW5zZXJ0IDEwMGsgaXRlbXMgZm9yIGluc3RhbmNlLlxuICpcbiAqIE90aGVyd2lzZSwgdGhpcyBkb2VzIG5vdCByZXR1cm4gdGhlIHJlbW92ZWQgaXRlbXMsIGFuZCB0YWtlcyBgaXRlbXNgIGFzIGFuXG4gKiBhcnJheSBpbnN0ZWFkIG9mIHJlc3QgcGFyYW1ldGVycy5cbiAqXG4gKiBAdGVtcGxhdGUge3Vua25vd259IFRcbiAqICAgSXRlbSB0eXBlLlxuICogQHBhcmFtIHtBcnJheTxUPn0gbGlzdFxuICogICBMaXN0IHRvIG9wZXJhdGUgb24uXG4gKiBAcGFyYW0ge251bWJlcn0gc3RhcnRcbiAqICAgSW5kZXggdG8gcmVtb3ZlL2luc2VydCBhdCAoY2FuIGJlIG5lZ2F0aXZlKS5cbiAqIEBwYXJhbSB7bnVtYmVyfSByZW1vdmVcbiAqICAgTnVtYmVyIG9mIGl0ZW1zIHRvIHJlbW92ZS5cbiAqIEBwYXJhbSB7QXJyYXk8VD59IGl0ZW1zXG4gKiAgIEl0ZW1zIHRvIGluamVjdCBpbnRvIGBsaXN0YC5cbiAqIEByZXR1cm5zIHt2b2lkfVxuICogICBOb3RoaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3BsaWNlKGxpc3QsIHN0YXJ0LCByZW1vdmUsIGl0ZW1zKSB7XG4gIGNvbnN0IGVuZCA9IGxpc3QubGVuZ3RoXG4gIGxldCBjaHVua1N0YXJ0ID0gMFxuICAvKiogQHR5cGUge0FycmF5PHVua25vd24+fSAqL1xuICBsZXQgcGFyYW1ldGVyc1xuXG4gIC8vIE1ha2Ugc3RhcnQgYmV0d2VlbiB6ZXJvIGFuZCBgZW5kYCAoaW5jbHVkZWQpLlxuICBpZiAoc3RhcnQgPCAwKSB7XG4gICAgc3RhcnQgPSAtc3RhcnQgPiBlbmQgPyAwIDogZW5kICsgc3RhcnRcbiAgfSBlbHNlIHtcbiAgICBzdGFydCA9IHN0YXJ0ID4gZW5kID8gZW5kIDogc3RhcnRcbiAgfVxuICByZW1vdmUgPSByZW1vdmUgPiAwID8gcmVtb3ZlIDogMFxuXG4gIC8vIE5vIG5lZWQgdG8gY2h1bmsgdGhlIGl0ZW1zIGlmIHRoZXJl4oCZcyBvbmx5IGEgY291cGxlICgxMGspIGl0ZW1zLlxuICBpZiAoaXRlbXMubGVuZ3RoIDwgMTAwMDApIHtcbiAgICBwYXJhbWV0ZXJzID0gQXJyYXkuZnJvbShpdGVtcylcbiAgICBwYXJhbWV0ZXJzLnVuc2hpZnQoc3RhcnQsIHJlbW92ZSlcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIEh1c2gsIGl04oCZcyBmaW5lLlxuICAgIGxpc3Quc3BsaWNlKC4uLnBhcmFtZXRlcnMpXG4gIH0gZWxzZSB7XG4gICAgLy8gRGVsZXRlIGByZW1vdmVgIGl0ZW1zIHN0YXJ0aW5nIGZyb20gYHN0YXJ0YFxuICAgIGlmIChyZW1vdmUpIGxpc3Quc3BsaWNlKHN0YXJ0LCByZW1vdmUpXG5cbiAgICAvLyBJbnNlcnQgdGhlIGl0ZW1zIGluIGNodW5rcyB0byBub3QgY2F1c2Ugc3RhY2sgb3ZlcmZsb3dzLlxuICAgIHdoaWxlIChjaHVua1N0YXJ0IDwgaXRlbXMubGVuZ3RoKSB7XG4gICAgICBwYXJhbWV0ZXJzID0gaXRlbXMuc2xpY2UoY2h1bmtTdGFydCwgY2h1bmtTdGFydCArIDEwMDAwKVxuICAgICAgcGFyYW1ldGVycy51bnNoaWZ0KHN0YXJ0LCAwKVxuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBIdXNoLCBpdOKAmXMgZmluZS5cbiAgICAgIGxpc3Quc3BsaWNlKC4uLnBhcmFtZXRlcnMpXG4gICAgICBjaHVua1N0YXJ0ICs9IDEwMDAwXG4gICAgICBzdGFydCArPSAxMDAwMFxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEFwcGVuZCBgaXRlbXNgIChhbiBhcnJheSkgYXQgdGhlIGVuZCBvZiBgbGlzdGAgKGFub3RoZXIgYXJyYXkpLlxuICogV2hlbiBgbGlzdGAgd2FzIGVtcHR5LCByZXR1cm5zIGBpdGVtc2AgaW5zdGVhZC5cbiAqXG4gKiBUaGlzIHByZXZlbnRzIGEgcG90ZW50aWFsbHkgZXhwZW5zaXZlIG9wZXJhdGlvbiB3aGVuIGBsaXN0YCBpcyBlbXB0eSxcbiAqIGFuZCBhZGRzIGl0ZW1zIGluIGJhdGNoZXMgdG8gcHJldmVudCBWOCBmcm9tIGhhbmdpbmcuXG4gKlxuICogQHRlbXBsYXRlIHt1bmtub3dufSBUXG4gKiAgIEl0ZW0gdHlwZS5cbiAqIEBwYXJhbSB7QXJyYXk8VD59IGxpc3RcbiAqICAgTGlzdCB0byBvcGVyYXRlIG9uLlxuICogQHBhcmFtIHtBcnJheTxUPn0gaXRlbXNcbiAqICAgSXRlbXMgdG8gYWRkIHRvIGBsaXN0YC5cbiAqIEByZXR1cm5zIHtBcnJheTxUPn1cbiAqICAgRWl0aGVyIGBsaXN0YCBvciBgaXRlbXNgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcHVzaChsaXN0LCBpdGVtcykge1xuICBpZiAobGlzdC5sZW5ndGggPiAwKSB7XG4gICAgc3BsaWNlKGxpc3QsIGxpc3QubGVuZ3RoLCAwLCBpdGVtcylcbiAgICByZXR1cm4gbGlzdFxuICB9XG4gIHJldHVybiBpdGVtc1xufVxuIiwiLy8gTUlUIExpY2Vuc2Vcbi8vIENvcHlyaWdodCAoYykgMjAxOS1wcmVzZW50IFN0cmluZ0Vwc2lsb24gPFN0cmluZ0Vwc2lsb25AZ21haWwuY29tPlxuLy8gQ29weXJpZ2h0IChjKSAyMDE3LTIwMTkgSmFtZXMgS3lsZSA8bWVAdGhlamFtZXNreWxlLmNvbT5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9TdHJpbmdFcHNpbG9uL21pbmktY3JlYXRlLXJlYWN0LWNvbnRleHRcbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB3YXJuaW5nIGZyb20gXCJ0aW55LXdhcm5pbmdcIjtcblxuY29uc3QgTUFYX1NJR05FRF8zMV9CSVRfSU5UID0gMTA3Mzc0MTgyMztcblxuY29uc3QgY29tbW9uanNHbG9iYWwgPVxuICB0eXBlb2YgZ2xvYmFsVGhpcyAhPT0gXCJ1bmRlZmluZWRcIiAvLyAnZ2xvYmFsIHByb3BlcidcbiAgICA/IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICAgICAgZ2xvYmFsVGhpc1xuICAgIDogdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIlxuICAgID8gd2luZG93IC8vIEJyb3dzZXJcbiAgICA6IHR5cGVvZiBnbG9iYWwgIT09IFwidW5kZWZpbmVkXCJcbiAgICA/IGdsb2JhbCAvLyBub2RlLmpzXG4gICAgOiB7fTtcblxuZnVuY3Rpb24gZ2V0VW5pcXVlSWQoKSB7XG4gIGxldCBrZXkgPSBcIl9fZ2xvYmFsX3VuaXF1ZV9pZF9fXCI7XG4gIHJldHVybiAoY29tbW9uanNHbG9iYWxba2V5XSA9IChjb21tb25qc0dsb2JhbFtrZXldIHx8IDApICsgMSk7XG59XG5cbi8vIElubGluZWQgT2JqZWN0LmlzIHBvbHlmaWxsLlxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvT2JqZWN0L2lzXG5mdW5jdGlvbiBvYmplY3RJcyh4LCB5KSB7XG4gIGlmICh4ID09PSB5KSB7XG4gICAgcmV0dXJuIHggIT09IDAgfHwgMSAvIHggPT09IDEgLyB5O1xuICB9IGVsc2Uge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICByZXR1cm4geCAhPT0geCAmJiB5ICE9PSB5O1xuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUV2ZW50RW1pdHRlcih2YWx1ZSkge1xuICBsZXQgaGFuZGxlcnMgPSBbXTtcbiAgcmV0dXJuIHtcbiAgICBvbihoYW5kbGVyKSB7XG4gICAgICBoYW5kbGVycy5wdXNoKGhhbmRsZXIpO1xuICAgIH0sXG5cbiAgICBvZmYoaGFuZGxlcikge1xuICAgICAgaGFuZGxlcnMgPSBoYW5kbGVycy5maWx0ZXIoaCA9PiBoICE9PSBoYW5kbGVyKTtcbiAgICB9LFxuXG4gICAgZ2V0KCkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0sXG5cbiAgICBzZXQobmV3VmFsdWUsIGNoYW5nZWRCaXRzKSB7XG4gICAgICB2YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgaGFuZGxlcnMuZm9yRWFjaChoYW5kbGVyID0+IGhhbmRsZXIodmFsdWUsIGNoYW5nZWRCaXRzKSk7XG4gICAgfVxuICB9O1xufVxuXG5mdW5jdGlvbiBvbmx5Q2hpbGQoY2hpbGRyZW4pIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pID8gY2hpbGRyZW5bMF0gOiBjaGlsZHJlbjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlUmVhY3RDb250ZXh0KGRlZmF1bHRWYWx1ZSwgY2FsY3VsYXRlQ2hhbmdlZEJpdHMpIHtcbiAgY29uc3QgY29udGV4dFByb3AgPSBcIl9fY3JlYXRlLXJlYWN0LWNvbnRleHQtXCIgKyBnZXRVbmlxdWVJZCgpICsgXCJfX1wiO1xuXG4gIGNsYXNzIFByb3ZpZGVyIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgICBlbWl0dGVyID0gY3JlYXRlRXZlbnRFbWl0dGVyKHRoaXMucHJvcHMudmFsdWUpO1xuXG4gICAgc3RhdGljIGNoaWxkQ29udGV4dFR5cGVzID0ge1xuICAgICAgW2NvbnRleHRQcm9wXTogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkXG4gICAgfTtcblxuICAgIGdldENoaWxkQ29udGV4dCgpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIFtjb250ZXh0UHJvcF06IHRoaXMuZW1pdHRlclxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKG5leHRQcm9wcykge1xuICAgICAgaWYgKHRoaXMucHJvcHMudmFsdWUgIT09IG5leHRQcm9wcy52YWx1ZSkge1xuICAgICAgICBsZXQgb2xkVmFsdWUgPSB0aGlzLnByb3BzLnZhbHVlO1xuICAgICAgICBsZXQgbmV3VmFsdWUgPSBuZXh0UHJvcHMudmFsdWU7XG4gICAgICAgIGxldCBjaGFuZ2VkQml0cztcblxuICAgICAgICBpZiAob2JqZWN0SXMob2xkVmFsdWUsIG5ld1ZhbHVlKSkge1xuICAgICAgICAgIGNoYW5nZWRCaXRzID0gMDsgLy8gTm8gY2hhbmdlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY2hhbmdlZEJpdHMgPVxuICAgICAgICAgICAgdHlwZW9mIGNhbGN1bGF0ZUNoYW5nZWRCaXRzID09PSBcImZ1bmN0aW9uXCJcbiAgICAgICAgICAgICAgPyBjYWxjdWxhdGVDaGFuZ2VkQml0cyhvbGRWYWx1ZSwgbmV3VmFsdWUpXG4gICAgICAgICAgICAgIDogTUFYX1NJR05FRF8zMV9CSVRfSU5UO1xuICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICAgICAgICAgIHdhcm5pbmcoXG4gICAgICAgICAgICAgIChjaGFuZ2VkQml0cyAmIE1BWF9TSUdORURfMzFfQklUX0lOVCkgPT09IGNoYW5nZWRCaXRzLFxuICAgICAgICAgICAgICBcImNhbGN1bGF0ZUNoYW5nZWRCaXRzOiBFeHBlY3RlZCB0aGUgcmV0dXJuIHZhbHVlIHRvIGJlIGEgXCIgK1xuICAgICAgICAgICAgICAgIFwiMzEtYml0IGludGVnZXIuIEluc3RlYWQgcmVjZWl2ZWQ6IFwiICtcbiAgICAgICAgICAgICAgICBjaGFuZ2VkQml0c1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjaGFuZ2VkQml0cyB8PSAwO1xuXG4gICAgICAgICAgaWYgKGNoYW5nZWRCaXRzICE9PSAwKSB7XG4gICAgICAgICAgICB0aGlzLmVtaXR0ZXIuc2V0KG5leHRQcm9wcy52YWx1ZSwgY2hhbmdlZEJpdHMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJlbmRlcigpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb3BzLmNoaWxkcmVuO1xuICAgIH1cbiAgfVxuXG4gIGNsYXNzIENvbnN1bWVyIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgICBzdGF0aWMgY29udGV4dFR5cGVzID0ge1xuICAgICAgW2NvbnRleHRQcm9wXTogUHJvcFR5cGVzLm9iamVjdFxuICAgIH07XG5cbiAgICBvYnNlcnZlZEJpdHM7XG5cbiAgICBzdGF0ZSA9IHtcbiAgICAgIHZhbHVlOiB0aGlzLmdldFZhbHVlKClcbiAgICB9O1xuXG4gICAgY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhuZXh0UHJvcHMpIHtcbiAgICAgIGxldCB7IG9ic2VydmVkQml0cyB9ID0gbmV4dFByb3BzO1xuICAgICAgdGhpcy5vYnNlcnZlZEJpdHMgPVxuICAgICAgICBvYnNlcnZlZEJpdHMgPT09IHVuZGVmaW5lZCB8fCBvYnNlcnZlZEJpdHMgPT09IG51bGxcbiAgICAgICAgICA/IE1BWF9TSUdORURfMzFfQklUX0lOVCAvLyBTdWJzY3JpYmUgdG8gYWxsIGNoYW5nZXMgYnkgZGVmYXVsdFxuICAgICAgICAgIDogb2JzZXJ2ZWRCaXRzO1xuICAgIH1cblxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgaWYgKHRoaXMuY29udGV4dFtjb250ZXh0UHJvcF0pIHtcbiAgICAgICAgdGhpcy5jb250ZXh0W2NvbnRleHRQcm9wXS5vbih0aGlzLm9uVXBkYXRlKTtcbiAgICAgIH1cbiAgICAgIGxldCB7IG9ic2VydmVkQml0cyB9ID0gdGhpcy5wcm9wcztcbiAgICAgIHRoaXMub2JzZXJ2ZWRCaXRzID1cbiAgICAgICAgb2JzZXJ2ZWRCaXRzID09PSB1bmRlZmluZWQgfHwgb2JzZXJ2ZWRCaXRzID09PSBudWxsXG4gICAgICAgICAgPyBNQVhfU0lHTkVEXzMxX0JJVF9JTlQgLy8gU3Vic2NyaWJlIHRvIGFsbCBjaGFuZ2VzIGJ5IGRlZmF1bHRcbiAgICAgICAgICA6IG9ic2VydmVkQml0cztcbiAgICB9XG5cbiAgICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICAgIGlmICh0aGlzLmNvbnRleHRbY29udGV4dFByb3BdKSB7XG4gICAgICAgIHRoaXMuY29udGV4dFtjb250ZXh0UHJvcF0ub2ZmKHRoaXMub25VcGRhdGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGdldFZhbHVlKCkge1xuICAgICAgaWYgKHRoaXMuY29udGV4dFtjb250ZXh0UHJvcF0pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGV4dFtjb250ZXh0UHJvcF0uZ2V0KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIG9uVXBkYXRlID0gKG5ld1ZhbHVlLCBjaGFuZ2VkQml0cykgPT4ge1xuICAgICAgY29uc3Qgb2JzZXJ2ZWRCaXRzID0gdGhpcy5vYnNlcnZlZEJpdHMgfCAwO1xuICAgICAgaWYgKChvYnNlcnZlZEJpdHMgJiBjaGFuZ2VkQml0cykgIT09IDApIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHZhbHVlOiB0aGlzLmdldFZhbHVlKCkgfSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHJlbmRlcigpIHtcbiAgICAgIHJldHVybiBvbmx5Q2hpbGQodGhpcy5wcm9wcy5jaGlsZHJlbikodGhpcy5zdGF0ZS52YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBQcm92aWRlcixcbiAgICBDb25zdW1lclxuICB9O1xufVxuIiwiLy8gTUlUIExpY2Vuc2Vcbi8vIENvcHlyaWdodCAoYykgMjAxOS1wcmVzZW50IFN0cmluZ0Vwc2lsb24gPFN0cmluZ0Vwc2lsb25AZ21haWwuY29tPlxuLy8gQ29weXJpZ2h0IChjKSAyMDE3LTIwMTkgSmFtZXMgS3lsZSA8bWVAdGhlamFtZXNreWxlLmNvbT5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9TdHJpbmdFcHNpbG9uL21pbmktY3JlYXRlLXJlYWN0LWNvbnRleHRcbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBjcmVhdGVSZWFjdENvbnRleHQgZnJvbSBcIi4vbWluaUNyZWF0ZVJlYWN0Q29udGV4dFwiO1xuXG5leHBvcnQgZGVmYXVsdCBSZWFjdC5jcmVhdGVDb250ZXh0IHx8IGNyZWF0ZVJlYWN0Q29udGV4dDtcbiIsIi8vIFRPRE86IFJlcGxhY2Ugd2l0aCBSZWFjdC5jcmVhdGVDb250ZXh0IG9uY2Ugd2UgY2FuIGFzc3VtZSBSZWFjdCAxNitcbmltcG9ydCBjcmVhdGVDb250ZXh0IGZyb20gXCIuL2NyZWF0ZUNvbnRleHRcIjtcblxuY29uc3QgY3JlYXRlTmFtZWRDb250ZXh0ID0gbmFtZSA9PiB7XG4gIGNvbnN0IGNvbnRleHQgPSBjcmVhdGVDb250ZXh0KCk7XG4gIGNvbnRleHQuZGlzcGxheU5hbWUgPSBuYW1lO1xuXG4gIHJldHVybiBjb250ZXh0O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY3JlYXRlTmFtZWRDb250ZXh0O1xuIiwiaW1wb3J0IGNyZWF0ZU5hbWVkQ29udGV4dCBmcm9tIFwiLi9jcmVhdGVOYW1lZENvbnRleHRcIjtcblxuY29uc3QgaGlzdG9yeUNvbnRleHQgPSAvKiNfX1BVUkVfXyovIGNyZWF0ZU5hbWVkQ29udGV4dChcIlJvdXRlci1IaXN0b3J5XCIpO1xuZXhwb3J0IGRlZmF1bHQgaGlzdG9yeUNvbnRleHQ7XG4iLCJpbXBvcnQgY3JlYXRlTmFtZWRDb250ZXh0IGZyb20gXCIuL2NyZWF0ZU5hbWVkQ29udGV4dFwiO1xuXG5jb25zdCBjb250ZXh0ID0gLyojX19QVVJFX18qLyBjcmVhdGVOYW1lZENvbnRleHQoXCJSb3V0ZXJcIik7XG5leHBvcnQgZGVmYXVsdCBjb250ZXh0O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHdhcm5pbmcgZnJvbSBcInRpbnktd2FybmluZ1wiO1xuXG5pbXBvcnQgSGlzdG9yeUNvbnRleHQgZnJvbSBcIi4vSGlzdG9yeUNvbnRleHQuanNcIjtcbmltcG9ydCBSb3V0ZXJDb250ZXh0IGZyb20gXCIuL1JvdXRlckNvbnRleHQuanNcIjtcblxuLyoqXG4gKiBUaGUgcHVibGljIEFQSSBmb3IgcHV0dGluZyBoaXN0b3J5IG9uIGNvbnRleHQuXG4gKi9cbmNsYXNzIFJvdXRlciBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHN0YXRpYyBjb21wdXRlUm9vdE1hdGNoKHBhdGhuYW1lKSB7XG4gICAgcmV0dXJuIHsgcGF0aDogXCIvXCIsIHVybDogXCIvXCIsIHBhcmFtczoge30sIGlzRXhhY3Q6IHBhdGhuYW1lID09PSBcIi9cIiB9O1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG5cbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgbG9jYXRpb246IHByb3BzLmhpc3RvcnkubG9jYXRpb25cbiAgICB9O1xuXG4gICAgLy8gVGhpcyBpcyBhIGJpdCBvZiBhIGhhY2suIFdlIGhhdmUgdG8gc3RhcnQgbGlzdGVuaW5nIGZvciBsb2NhdGlvblxuICAgIC8vIGNoYW5nZXMgaGVyZSBpbiB0aGUgY29uc3RydWN0b3IgaW4gY2FzZSB0aGVyZSBhcmUgYW55IDxSZWRpcmVjdD5zXG4gICAgLy8gb24gdGhlIGluaXRpYWwgcmVuZGVyLiBJZiB0aGVyZSBhcmUsIHRoZXkgd2lsbCByZXBsYWNlL3B1c2ggd2hlblxuICAgIC8vIHRoZXkgbW91bnQgYW5kIHNpbmNlIGNETSBmaXJlcyBpbiBjaGlsZHJlbiBiZWZvcmUgcGFyZW50cywgd2UgbWF5XG4gICAgLy8gZ2V0IGEgbmV3IGxvY2F0aW9uIGJlZm9yZSB0aGUgPFJvdXRlcj4gaXMgbW91bnRlZC5cbiAgICB0aGlzLl9pc01vdW50ZWQgPSBmYWxzZTtcbiAgICB0aGlzLl9wZW5kaW5nTG9jYXRpb24gPSBudWxsO1xuXG4gICAgaWYgKCFwcm9wcy5zdGF0aWNDb250ZXh0KSB7XG4gICAgICB0aGlzLnVubGlzdGVuID0gcHJvcHMuaGlzdG9yeS5saXN0ZW4obG9jYXRpb24gPT4ge1xuICAgICAgICB0aGlzLl9wZW5kaW5nTG9jYXRpb24gPSBsb2NhdGlvbjtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIHRoaXMuX2lzTW91bnRlZCA9IHRydWU7XG5cbiAgICBpZiAodGhpcy51bmxpc3Rlbikge1xuICAgICAgLy8gQW55IHByZS1tb3VudCBsb2NhdGlvbiBjaGFuZ2VzIGhhdmUgYmVlbiBjYXB0dXJlZCBhdFxuICAgICAgLy8gdGhpcyBwb2ludCwgc28gdW5yZWdpc3RlciB0aGUgbGlzdGVuZXIuXG4gICAgICB0aGlzLnVubGlzdGVuKCk7XG4gICAgfVxuICAgIGlmICghdGhpcy5wcm9wcy5zdGF0aWNDb250ZXh0KSB7XG4gICAgICB0aGlzLnVubGlzdGVuID0gdGhpcy5wcm9wcy5oaXN0b3J5Lmxpc3Rlbihsb2NhdGlvbiA9PiB7XG4gICAgICAgIGlmICh0aGlzLl9pc01vdW50ZWQpIHtcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgbG9jYXRpb24gfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAodGhpcy5fcGVuZGluZ0xvY2F0aW9uKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHsgbG9jYXRpb246IHRoaXMuX3BlbmRpbmdMb2NhdGlvbiB9KTtcbiAgICB9XG4gIH1cblxuICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICBpZiAodGhpcy51bmxpc3Rlbikge1xuICAgICAgdGhpcy51bmxpc3RlbigpO1xuICAgICAgdGhpcy5faXNNb3VudGVkID0gZmFsc2U7XG4gICAgICB0aGlzLl9wZW5kaW5nTG9jYXRpb24gPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPFJvdXRlckNvbnRleHQuUHJvdmlkZXJcbiAgICAgICAgdmFsdWU9e3tcbiAgICAgICAgICBoaXN0b3J5OiB0aGlzLnByb3BzLmhpc3RvcnksXG4gICAgICAgICAgbG9jYXRpb246IHRoaXMuc3RhdGUubG9jYXRpb24sXG4gICAgICAgICAgbWF0Y2g6IFJvdXRlci5jb21wdXRlUm9vdE1hdGNoKHRoaXMuc3RhdGUubG9jYXRpb24ucGF0aG5hbWUpLFxuICAgICAgICAgIHN0YXRpY0NvbnRleHQ6IHRoaXMucHJvcHMuc3RhdGljQ29udGV4dFxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICA8SGlzdG9yeUNvbnRleHQuUHJvdmlkZXJcbiAgICAgICAgICBjaGlsZHJlbj17dGhpcy5wcm9wcy5jaGlsZHJlbiB8fCBudWxsfVxuICAgICAgICAgIHZhbHVlPXt0aGlzLnByb3BzLmhpc3Rvcnl9XG4gICAgICAgIC8+XG4gICAgICA8L1JvdXRlckNvbnRleHQuUHJvdmlkZXI+XG4gICAgKTtcbiAgfVxufVxuXG5pZiAoX19ERVZfXykge1xuICBSb3V0ZXIucHJvcFR5cGVzID0ge1xuICAgIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgICBoaXN0b3J5OiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgc3RhdGljQ29udGV4dDogUHJvcFR5cGVzLm9iamVjdFxuICB9O1xuXG4gIFJvdXRlci5wcm90b3R5cGUuY29tcG9uZW50RGlkVXBkYXRlID0gZnVuY3Rpb24ocHJldlByb3BzKSB7XG4gICAgd2FybmluZyhcbiAgICAgIHByZXZQcm9wcy5oaXN0b3J5ID09PSB0aGlzLnByb3BzLmhpc3RvcnksXG4gICAgICBcIllvdSBjYW5ub3QgY2hhbmdlIDxSb3V0ZXIgaGlzdG9yeT5cIlxuICAgICk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IFJvdXRlcjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IGNyZWF0ZU1lbW9yeUhpc3RvcnkgYXMgY3JlYXRlSGlzdG9yeSB9IGZyb20gXCJoaXN0b3J5XCI7XG5pbXBvcnQgd2FybmluZyBmcm9tIFwidGlueS13YXJuaW5nXCI7XG5cbmltcG9ydCBSb3V0ZXIgZnJvbSBcIi4vUm91dGVyLmpzXCI7XG5cbi8qKlxuICogVGhlIHB1YmxpYyBBUEkgZm9yIGEgPFJvdXRlcj4gdGhhdCBzdG9yZXMgbG9jYXRpb24gaW4gbWVtb3J5LlxuICovXG5jbGFzcyBNZW1vcnlSb3V0ZXIgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBoaXN0b3J5ID0gY3JlYXRlSGlzdG9yeSh0aGlzLnByb3BzKTtcblxuICByZW5kZXIoKSB7XG4gICAgcmV0dXJuIDxSb3V0ZXIgaGlzdG9yeT17dGhpcy5oaXN0b3J5fSBjaGlsZHJlbj17dGhpcy5wcm9wcy5jaGlsZHJlbn0gLz47XG4gIH1cbn1cblxuaWYgKF9fREVWX18pIHtcbiAgTWVtb3J5Um91dGVyLnByb3BUeXBlcyA9IHtcbiAgICBpbml0aWFsRW50cmllczogUHJvcFR5cGVzLmFycmF5LFxuICAgIGluaXRpYWxJbmRleDogUHJvcFR5cGVzLm51bWJlcixcbiAgICBnZXRVc2VyQ29uZmlybWF0aW9uOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBrZXlMZW5ndGg6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlXG4gIH07XG5cbiAgTWVtb3J5Um91dGVyLnByb3RvdHlwZS5jb21wb25lbnREaWRNb3VudCA9IGZ1bmN0aW9uKCkge1xuICAgIHdhcm5pbmcoXG4gICAgICAhdGhpcy5wcm9wcy5oaXN0b3J5LFxuICAgICAgXCI8TWVtb3J5Um91dGVyPiBpZ25vcmVzIHRoZSBoaXN0b3J5IHByb3AuIFRvIHVzZSBhIGN1c3RvbSBoaXN0b3J5LCBcIiArXG4gICAgICAgIFwidXNlIGBpbXBvcnQgeyBSb3V0ZXIgfWAgaW5zdGVhZCBvZiBgaW1wb3J0IHsgTWVtb3J5Um91dGVyIGFzIFJvdXRlciB9YC5cIlxuICAgICk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IE1lbW9yeVJvdXRlcjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuY2xhc3MgTGlmZWN5Y2xlIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgaWYgKHRoaXMucHJvcHMub25Nb3VudCkgdGhpcy5wcm9wcy5vbk1vdW50LmNhbGwodGhpcywgdGhpcyk7XG4gIH1cblxuICBjb21wb25lbnREaWRVcGRhdGUocHJldlByb3BzKSB7XG4gICAgaWYgKHRoaXMucHJvcHMub25VcGRhdGUpIHRoaXMucHJvcHMub25VcGRhdGUuY2FsbCh0aGlzLCB0aGlzLCBwcmV2UHJvcHMpO1xuICB9XG5cbiAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgaWYgKHRoaXMucHJvcHMub25Vbm1vdW50KSB0aGlzLnByb3BzLm9uVW5tb3VudC5jYWxsKHRoaXMsIHRoaXMpO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IExpZmVjeWNsZTtcbiIsImltcG9ydCBwYXRoVG9SZWdleHAgZnJvbSBcInBhdGgtdG8tcmVnZXhwXCI7XG5cbmNvbnN0IGNhY2hlID0ge307XG5jb25zdCBjYWNoZUxpbWl0ID0gMTAwMDA7XG5sZXQgY2FjaGVDb3VudCA9IDA7XG5cbmZ1bmN0aW9uIGNvbXBpbGVQYXRoKHBhdGgsIG9wdGlvbnMpIHtcbiAgY29uc3QgY2FjaGVLZXkgPSBgJHtvcHRpb25zLmVuZH0ke29wdGlvbnMuc3RyaWN0fSR7b3B0aW9ucy5zZW5zaXRpdmV9YDtcbiAgY29uc3QgcGF0aENhY2hlID0gY2FjaGVbY2FjaGVLZXldIHx8IChjYWNoZVtjYWNoZUtleV0gPSB7fSk7XG5cbiAgaWYgKHBhdGhDYWNoZVtwYXRoXSkgcmV0dXJuIHBhdGhDYWNoZVtwYXRoXTtcblxuICBjb25zdCBrZXlzID0gW107XG4gIGNvbnN0IHJlZ2V4cCA9IHBhdGhUb1JlZ2V4cChwYXRoLCBrZXlzLCBvcHRpb25zKTtcbiAgY29uc3QgcmVzdWx0ID0geyByZWdleHAsIGtleXMgfTtcblxuICBpZiAoY2FjaGVDb3VudCA8IGNhY2hlTGltaXQpIHtcbiAgICBwYXRoQ2FjaGVbcGF0aF0gPSByZXN1bHQ7XG4gICAgY2FjaGVDb3VudCsrO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBQdWJsaWMgQVBJIGZvciBtYXRjaGluZyBhIFVSTCBwYXRobmFtZSB0byBhIHBhdGguXG4gKi9cbmZ1bmN0aW9uIG1hdGNoUGF0aChwYXRobmFtZSwgb3B0aW9ucyA9IHt9KSB7XG4gIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gXCJzdHJpbmdcIiB8fCBBcnJheS5pc0FycmF5KG9wdGlvbnMpKSB7XG4gICAgb3B0aW9ucyA9IHsgcGF0aDogb3B0aW9ucyB9O1xuICB9XG5cbiAgY29uc3QgeyBwYXRoLCBleGFjdCA9IGZhbHNlLCBzdHJpY3QgPSBmYWxzZSwgc2Vuc2l0aXZlID0gZmFsc2UgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3QgcGF0aHMgPSBbXS5jb25jYXQocGF0aCk7XG5cbiAgcmV0dXJuIHBhdGhzLnJlZHVjZSgobWF0Y2hlZCwgcGF0aCkgPT4ge1xuICAgIGlmICghcGF0aCAmJiBwYXRoICE9PSBcIlwiKSByZXR1cm4gbnVsbDtcbiAgICBpZiAobWF0Y2hlZCkgcmV0dXJuIG1hdGNoZWQ7XG5cbiAgICBjb25zdCB7IHJlZ2V4cCwga2V5cyB9ID0gY29tcGlsZVBhdGgocGF0aCwge1xuICAgICAgZW5kOiBleGFjdCxcbiAgICAgIHN0cmljdCxcbiAgICAgIHNlbnNpdGl2ZVxuICAgIH0pO1xuICAgIGNvbnN0IG1hdGNoID0gcmVnZXhwLmV4ZWMocGF0aG5hbWUpO1xuXG4gICAgaWYgKCFtYXRjaCkgcmV0dXJuIG51bGw7XG5cbiAgICBjb25zdCBbdXJsLCAuLi52YWx1ZXNdID0gbWF0Y2g7XG4gICAgY29uc3QgaXNFeGFjdCA9IHBhdGhuYW1lID09PSB1cmw7XG5cbiAgICBpZiAoZXhhY3QgJiYgIWlzRXhhY3QpIHJldHVybiBudWxsO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHBhdGgsIC8vIHRoZSBwYXRoIHVzZWQgdG8gbWF0Y2hcbiAgICAgIHVybDogcGF0aCA9PT0gXCIvXCIgJiYgdXJsID09PSBcIlwiID8gXCIvXCIgOiB1cmwsIC8vIHRoZSBtYXRjaGVkIHBvcnRpb24gb2YgdGhlIFVSTFxuICAgICAgaXNFeGFjdCwgLy8gd2hldGhlciBvciBub3Qgd2UgbWF0Y2hlZCBleGFjdGx5XG4gICAgICBwYXJhbXM6IGtleXMucmVkdWNlKChtZW1vLCBrZXksIGluZGV4KSA9PiB7XG4gICAgICAgIG1lbW9ba2V5Lm5hbWVdID0gdmFsdWVzW2luZGV4XTtcbiAgICAgICAgcmV0dXJuIG1lbW87XG4gICAgICB9LCB7fSlcbiAgICB9O1xuICB9LCBudWxsKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgbWF0Y2hQYXRoO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgaXNWYWxpZEVsZW1lbnRUeXBlIH0gZnJvbSBcInJlYWN0LWlzXCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgaW52YXJpYW50IGZyb20gXCJ0aW55LWludmFyaWFudFwiO1xuaW1wb3J0IHdhcm5pbmcgZnJvbSBcInRpbnktd2FybmluZ1wiO1xuXG5pbXBvcnQgUm91dGVyQ29udGV4dCBmcm9tIFwiLi9Sb3V0ZXJDb250ZXh0LmpzXCI7XG5pbXBvcnQgbWF0Y2hQYXRoIGZyb20gXCIuL21hdGNoUGF0aC5qc1wiO1xuXG5mdW5jdGlvbiBpc0VtcHR5Q2hpbGRyZW4oY2hpbGRyZW4pIHtcbiAgcmV0dXJuIFJlYWN0LkNoaWxkcmVuLmNvdW50KGNoaWxkcmVuKSA9PT0gMDtcbn1cblxuZnVuY3Rpb24gZXZhbENoaWxkcmVuRGV2KGNoaWxkcmVuLCBwcm9wcywgcGF0aCkge1xuICBjb25zdCB2YWx1ZSA9IGNoaWxkcmVuKHByb3BzKTtcblxuICB3YXJuaW5nKFxuICAgIHZhbHVlICE9PSB1bmRlZmluZWQsXG4gICAgXCJZb3UgcmV0dXJuZWQgYHVuZGVmaW5lZGAgZnJvbSB0aGUgYGNoaWxkcmVuYCBmdW5jdGlvbiBvZiBcIiArXG4gICAgICBgPFJvdXRlJHtwYXRoID8gYCBwYXRoPVwiJHtwYXRofVwiYCA6IFwiXCJ9PiwgYnV0IHlvdSBgICtcbiAgICAgIFwic2hvdWxkIGhhdmUgcmV0dXJuZWQgYSBSZWFjdCBlbGVtZW50IG9yIGBudWxsYFwiXG4gICk7XG5cbiAgcmV0dXJuIHZhbHVlIHx8IG51bGw7XG59XG5cbi8qKlxuICogVGhlIHB1YmxpYyBBUEkgZm9yIG1hdGNoaW5nIGEgc2luZ2xlIHBhdGggYW5kIHJlbmRlcmluZy5cbiAqL1xuY2xhc3MgUm91dGUgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICByZW5kZXIoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxSb3V0ZXJDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICB7Y29udGV4dCA9PiB7XG4gICAgICAgICAgaW52YXJpYW50KGNvbnRleHQsIFwiWW91IHNob3VsZCBub3QgdXNlIDxSb3V0ZT4gb3V0c2lkZSBhIDxSb3V0ZXI+XCIpO1xuXG4gICAgICAgICAgY29uc3QgbG9jYXRpb24gPSB0aGlzLnByb3BzLmxvY2F0aW9uIHx8IGNvbnRleHQubG9jYXRpb247XG4gICAgICAgICAgY29uc3QgbWF0Y2ggPSB0aGlzLnByb3BzLmNvbXB1dGVkTWF0Y2hcbiAgICAgICAgICAgID8gdGhpcy5wcm9wcy5jb21wdXRlZE1hdGNoIC8vIDxTd2l0Y2g+IGFscmVhZHkgY29tcHV0ZWQgdGhlIG1hdGNoIGZvciB1c1xuICAgICAgICAgICAgOiB0aGlzLnByb3BzLnBhdGhcbiAgICAgICAgICAgID8gbWF0Y2hQYXRoKGxvY2F0aW9uLnBhdGhuYW1lLCB0aGlzLnByb3BzKVxuICAgICAgICAgICAgOiBjb250ZXh0Lm1hdGNoO1xuXG4gICAgICAgICAgY29uc3QgcHJvcHMgPSB7IC4uLmNvbnRleHQsIGxvY2F0aW9uLCBtYXRjaCB9O1xuXG4gICAgICAgICAgbGV0IHsgY2hpbGRyZW4sIGNvbXBvbmVudCwgcmVuZGVyIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgICAgICAgLy8gUHJlYWN0IHVzZXMgYW4gZW1wdHkgYXJyYXkgYXMgY2hpbGRyZW4gYnlcbiAgICAgICAgICAvLyBkZWZhdWx0LCBzbyB1c2UgbnVsbCBpZiB0aGF0J3MgdGhlIGNhc2UuXG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pICYmIGlzRW1wdHlDaGlsZHJlbihjaGlsZHJlbikpIHtcbiAgICAgICAgICAgIGNoaWxkcmVuID0gbnVsbDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPFJvdXRlckNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3Byb3BzfT5cbiAgICAgICAgICAgICAge3Byb3BzLm1hdGNoXG4gICAgICAgICAgICAgICAgPyBjaGlsZHJlblxuICAgICAgICAgICAgICAgICAgPyB0eXBlb2YgY2hpbGRyZW4gPT09IFwiZnVuY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgICA/IF9fREVWX19cbiAgICAgICAgICAgICAgICAgICAgICA/IGV2YWxDaGlsZHJlbkRldihjaGlsZHJlbiwgcHJvcHMsIHRoaXMucHJvcHMucGF0aClcbiAgICAgICAgICAgICAgICAgICAgICA6IGNoaWxkcmVuKHByb3BzKVxuICAgICAgICAgICAgICAgICAgICA6IGNoaWxkcmVuXG4gICAgICAgICAgICAgICAgICA6IGNvbXBvbmVudFxuICAgICAgICAgICAgICAgICAgPyBSZWFjdC5jcmVhdGVFbGVtZW50KGNvbXBvbmVudCwgcHJvcHMpXG4gICAgICAgICAgICAgICAgICA6IHJlbmRlclxuICAgICAgICAgICAgICAgICAgPyByZW5kZXIocHJvcHMpXG4gICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgICAgICA6IHR5cGVvZiBjaGlsZHJlbiA9PT0gXCJmdW5jdGlvblwiXG4gICAgICAgICAgICAgICAgPyBfX0RFVl9fXG4gICAgICAgICAgICAgICAgICA/IGV2YWxDaGlsZHJlbkRldihjaGlsZHJlbiwgcHJvcHMsIHRoaXMucHJvcHMucGF0aClcbiAgICAgICAgICAgICAgICAgIDogY2hpbGRyZW4ocHJvcHMpXG4gICAgICAgICAgICAgICAgOiBudWxsfVxuICAgICAgICAgICAgPC9Sb3V0ZXJDb250ZXh0LlByb3ZpZGVyPlxuICAgICAgICAgICk7XG4gICAgICAgIH19XG4gICAgICA8L1JvdXRlckNvbnRleHQuQ29uc3VtZXI+XG4gICAgKTtcbiAgfVxufVxuXG5pZiAoX19ERVZfXykge1xuICBSb3V0ZS5wcm9wVHlwZXMgPSB7XG4gICAgY2hpbGRyZW46IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMubm9kZV0pLFxuICAgIGNvbXBvbmVudDogKHByb3BzLCBwcm9wTmFtZSkgPT4ge1xuICAgICAgaWYgKHByb3BzW3Byb3BOYW1lXSAmJiAhaXNWYWxpZEVsZW1lbnRUeXBlKHByb3BzW3Byb3BOYW1lXSkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBFcnJvcihcbiAgICAgICAgICBgSW52YWxpZCBwcm9wICdjb21wb25lbnQnIHN1cHBsaWVkIHRvICdSb3V0ZSc6IHRoZSBwcm9wIGlzIG5vdCBhIHZhbGlkIFJlYWN0IGNvbXBvbmVudGBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGV4YWN0OiBQcm9wVHlwZXMuYm9vbCxcbiAgICBsb2NhdGlvbjogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBwYXRoOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtcbiAgICAgIFByb3BUeXBlcy5zdHJpbmcsXG4gICAgICBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuc3RyaW5nKVxuICAgIF0pLFxuICAgIHJlbmRlcjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgc2Vuc2l0aXZlOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBzdHJpY3Q6IFByb3BUeXBlcy5ib29sXG4gIH07XG5cbiAgUm91dGUucHJvdG90eXBlLmNvbXBvbmVudERpZE1vdW50ID0gZnVuY3Rpb24oKSB7XG4gICAgd2FybmluZyhcbiAgICAgICEoXG4gICAgICAgIHRoaXMucHJvcHMuY2hpbGRyZW4gJiZcbiAgICAgICAgIWlzRW1wdHlDaGlsZHJlbih0aGlzLnByb3BzLmNoaWxkcmVuKSAmJlxuICAgICAgICB0aGlzLnByb3BzLmNvbXBvbmVudFxuICAgICAgKSxcbiAgICAgIFwiWW91IHNob3VsZCBub3QgdXNlIDxSb3V0ZSBjb21wb25lbnQ+IGFuZCA8Um91dGUgY2hpbGRyZW4+IGluIHRoZSBzYW1lIHJvdXRlOyA8Um91dGUgY29tcG9uZW50PiB3aWxsIGJlIGlnbm9yZWRcIlxuICAgICk7XG5cbiAgICB3YXJuaW5nKFxuICAgICAgIShcbiAgICAgICAgdGhpcy5wcm9wcy5jaGlsZHJlbiAmJlxuICAgICAgICAhaXNFbXB0eUNoaWxkcmVuKHRoaXMucHJvcHMuY2hpbGRyZW4pICYmXG4gICAgICAgIHRoaXMucHJvcHMucmVuZGVyXG4gICAgICApLFxuICAgICAgXCJZb3Ugc2hvdWxkIG5vdCB1c2UgPFJvdXRlIHJlbmRlcj4gYW5kIDxSb3V0ZSBjaGlsZHJlbj4gaW4gdGhlIHNhbWUgcm91dGU7IDxSb3V0ZSByZW5kZXI+IHdpbGwgYmUgaWdub3JlZFwiXG4gICAgKTtcblxuICAgIHdhcm5pbmcoXG4gICAgICAhKHRoaXMucHJvcHMuY29tcG9uZW50ICYmIHRoaXMucHJvcHMucmVuZGVyKSxcbiAgICAgIFwiWW91IHNob3VsZCBub3QgdXNlIDxSb3V0ZSBjb21wb25lbnQ+IGFuZCA8Um91dGUgcmVuZGVyPiBpbiB0aGUgc2FtZSByb3V0ZTsgPFJvdXRlIHJlbmRlcj4gd2lsbCBiZSBpZ25vcmVkXCJcbiAgICApO1xuICB9O1xuXG4gIFJvdXRlLnByb3RvdHlwZS5jb21wb25lbnREaWRVcGRhdGUgPSBmdW5jdGlvbihwcmV2UHJvcHMpIHtcbiAgICB3YXJuaW5nKFxuICAgICAgISh0aGlzLnByb3BzLmxvY2F0aW9uICYmICFwcmV2UHJvcHMubG9jYXRpb24pLFxuICAgICAgJzxSb3V0ZT4gZWxlbWVudHMgc2hvdWxkIG5vdCBjaGFuZ2UgZnJvbSB1bmNvbnRyb2xsZWQgdG8gY29udHJvbGxlZCAob3IgdmljZSB2ZXJzYSkuIFlvdSBpbml0aWFsbHkgdXNlZCBubyBcImxvY2F0aW9uXCIgcHJvcCBhbmQgdGhlbiBwcm92aWRlZCBvbmUgb24gYSBzdWJzZXF1ZW50IHJlbmRlci4nXG4gICAgKTtcblxuICAgIHdhcm5pbmcoXG4gICAgICAhKCF0aGlzLnByb3BzLmxvY2F0aW9uICYmIHByZXZQcm9wcy5sb2NhdGlvbiksXG4gICAgICAnPFJvdXRlPiBlbGVtZW50cyBzaG91bGQgbm90IGNoYW5nZSBmcm9tIGNvbnRyb2xsZWQgdG8gdW5jb250cm9sbGVkIChvciB2aWNlIHZlcnNhKS4gWW91IHByb3ZpZGVkIGEgXCJsb2NhdGlvblwiIHByb3AgaW5pdGlhbGx5IGJ1dCBvbWl0dGVkIGl0IG9uIGEgc3Vic2VxdWVudCByZW5kZXIuJ1xuICAgICk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IFJvdXRlO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgY3JlYXRlTG9jYXRpb24sIGNyZWF0ZVBhdGggfSBmcm9tIFwiaGlzdG9yeVwiO1xuaW1wb3J0IGludmFyaWFudCBmcm9tIFwidGlueS1pbnZhcmlhbnRcIjtcbmltcG9ydCB3YXJuaW5nIGZyb20gXCJ0aW55LXdhcm5pbmdcIjtcblxuaW1wb3J0IFJvdXRlciBmcm9tIFwiLi9Sb3V0ZXIuanNcIjtcblxuZnVuY3Rpb24gYWRkTGVhZGluZ1NsYXNoKHBhdGgpIHtcbiAgcmV0dXJuIHBhdGguY2hhckF0KDApID09PSBcIi9cIiA/IHBhdGggOiBcIi9cIiArIHBhdGg7XG59XG5cbmZ1bmN0aW9uIGFkZEJhc2VuYW1lKGJhc2VuYW1lLCBsb2NhdGlvbikge1xuICBpZiAoIWJhc2VuYW1lKSByZXR1cm4gbG9jYXRpb247XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5sb2NhdGlvbixcbiAgICBwYXRobmFtZTogYWRkTGVhZGluZ1NsYXNoKGJhc2VuYW1lKSArIGxvY2F0aW9uLnBhdGhuYW1lXG4gIH07XG59XG5cbmZ1bmN0aW9uIHN0cmlwQmFzZW5hbWUoYmFzZW5hbWUsIGxvY2F0aW9uKSB7XG4gIGlmICghYmFzZW5hbWUpIHJldHVybiBsb2NhdGlvbjtcblxuICBjb25zdCBiYXNlID0gYWRkTGVhZGluZ1NsYXNoKGJhc2VuYW1lKTtcblxuICBpZiAobG9jYXRpb24ucGF0aG5hbWUuaW5kZXhPZihiYXNlKSAhPT0gMCkgcmV0dXJuIGxvY2F0aW9uO1xuXG4gIHJldHVybiB7XG4gICAgLi4ubG9jYXRpb24sXG4gICAgcGF0aG5hbWU6IGxvY2F0aW9uLnBhdGhuYW1lLnN1YnN0cihiYXNlLmxlbmd0aClcbiAgfTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlVVJMKGxvY2F0aW9uKSB7XG4gIHJldHVybiB0eXBlb2YgbG9jYXRpb24gPT09IFwic3RyaW5nXCIgPyBsb2NhdGlvbiA6IGNyZWF0ZVBhdGgobG9jYXRpb24pO1xufVxuXG5mdW5jdGlvbiBzdGF0aWNIYW5kbGVyKG1ldGhvZE5hbWUpIHtcbiAgcmV0dXJuICgpID0+IHtcbiAgICBpbnZhcmlhbnQoZmFsc2UsIFwiWW91IGNhbm5vdCAlcyB3aXRoIDxTdGF0aWNSb3V0ZXI+XCIsIG1ldGhvZE5hbWUpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBub29wKCkge31cblxuLyoqXG4gKiBUaGUgcHVibGljIHRvcC1sZXZlbCBBUEkgZm9yIGEgXCJzdGF0aWNcIiA8Um91dGVyPiwgc28tY2FsbGVkIGJlY2F1c2UgaXRcbiAqIGNhbid0IGFjdHVhbGx5IGNoYW5nZSB0aGUgY3VycmVudCBsb2NhdGlvbi4gSW5zdGVhZCwgaXQganVzdCByZWNvcmRzXG4gKiBsb2NhdGlvbiBjaGFuZ2VzIGluIGEgY29udGV4dCBvYmplY3QuIFVzZWZ1bCBtYWlubHkgaW4gdGVzdGluZyBhbmRcbiAqIHNlcnZlci1yZW5kZXJpbmcgc2NlbmFyaW9zLlxuICovXG5jbGFzcyBTdGF0aWNSb3V0ZXIgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBuYXZpZ2F0ZVRvKGxvY2F0aW9uLCBhY3Rpb24pIHtcbiAgICBjb25zdCB7IGJhc2VuYW1lID0gXCJcIiwgY29udGV4dCA9IHt9IH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnRleHQuYWN0aW9uID0gYWN0aW9uO1xuICAgIGNvbnRleHQubG9jYXRpb24gPSBhZGRCYXNlbmFtZShiYXNlbmFtZSwgY3JlYXRlTG9jYXRpb24obG9jYXRpb24pKTtcbiAgICBjb250ZXh0LnVybCA9IGNyZWF0ZVVSTChjb250ZXh0LmxvY2F0aW9uKTtcbiAgfVxuXG4gIGhhbmRsZVB1c2ggPSBsb2NhdGlvbiA9PiB0aGlzLm5hdmlnYXRlVG8obG9jYXRpb24sIFwiUFVTSFwiKTtcbiAgaGFuZGxlUmVwbGFjZSA9IGxvY2F0aW9uID0+IHRoaXMubmF2aWdhdGVUbyhsb2NhdGlvbiwgXCJSRVBMQUNFXCIpO1xuICBoYW5kbGVMaXN0ZW4gPSAoKSA9PiBub29wO1xuICBoYW5kbGVCbG9jayA9ICgpID0+IG5vb3A7XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHsgYmFzZW5hbWUgPSBcIlwiLCBjb250ZXh0ID0ge30sIGxvY2F0aW9uID0gXCIvXCIsIC4uLnJlc3QgfSA9IHRoaXMucHJvcHM7XG5cbiAgICBjb25zdCBoaXN0b3J5ID0ge1xuICAgICAgY3JlYXRlSHJlZjogcGF0aCA9PiBhZGRMZWFkaW5nU2xhc2goYmFzZW5hbWUgKyBjcmVhdGVVUkwocGF0aCkpLFxuICAgICAgYWN0aW9uOiBcIlBPUFwiLFxuICAgICAgbG9jYXRpb246IHN0cmlwQmFzZW5hbWUoYmFzZW5hbWUsIGNyZWF0ZUxvY2F0aW9uKGxvY2F0aW9uKSksXG4gICAgICBwdXNoOiB0aGlzLmhhbmRsZVB1c2gsXG4gICAgICByZXBsYWNlOiB0aGlzLmhhbmRsZVJlcGxhY2UsXG4gICAgICBnbzogc3RhdGljSGFuZGxlcihcImdvXCIpLFxuICAgICAgZ29CYWNrOiBzdGF0aWNIYW5kbGVyKFwiZ29CYWNrXCIpLFxuICAgICAgZ29Gb3J3YXJkOiBzdGF0aWNIYW5kbGVyKFwiZ29Gb3J3YXJkXCIpLFxuICAgICAgbGlzdGVuOiB0aGlzLmhhbmRsZUxpc3RlbixcbiAgICAgIGJsb2NrOiB0aGlzLmhhbmRsZUJsb2NrXG4gICAgfTtcblxuICAgIHJldHVybiA8Um91dGVyIHsuLi5yZXN0fSBoaXN0b3J5PXtoaXN0b3J5fSBzdGF0aWNDb250ZXh0PXtjb250ZXh0fSAvPjtcbiAgfVxufVxuXG5pZiAoX19ERVZfXykge1xuICBTdGF0aWNSb3V0ZXIucHJvcFR5cGVzID0ge1xuICAgIGJhc2VuYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGNvbnRleHQ6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgbG9jYXRpb246IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5zdHJpbmcsIFByb3BUeXBlcy5vYmplY3RdKVxuICB9O1xuXG4gIFN0YXRpY1JvdXRlci5wcm90b3R5cGUuY29tcG9uZW50RGlkTW91bnQgPSBmdW5jdGlvbigpIHtcbiAgICB3YXJuaW5nKFxuICAgICAgIXRoaXMucHJvcHMuaGlzdG9yeSxcbiAgICAgIFwiPFN0YXRpY1JvdXRlcj4gaWdub3JlcyB0aGUgaGlzdG9yeSBwcm9wLiBUbyB1c2UgYSBjdXN0b20gaGlzdG9yeSwgXCIgK1xuICAgICAgICBcInVzZSBgaW1wb3J0IHsgUm91dGVyIH1gIGluc3RlYWQgb2YgYGltcG9ydCB7IFN0YXRpY1JvdXRlciBhcyBSb3V0ZXIgfWAuXCJcbiAgICApO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBTdGF0aWNSb3V0ZXI7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgaW52YXJpYW50IGZyb20gXCJ0aW55LWludmFyaWFudFwiO1xuaW1wb3J0IHdhcm5pbmcgZnJvbSBcInRpbnktd2FybmluZ1wiO1xuXG5pbXBvcnQgUm91dGVyQ29udGV4dCBmcm9tIFwiLi9Sb3V0ZXJDb250ZXh0LmpzXCI7XG5pbXBvcnQgbWF0Y2hQYXRoIGZyb20gXCIuL21hdGNoUGF0aC5qc1wiO1xuXG4vKipcbiAqIFRoZSBwdWJsaWMgQVBJIGZvciByZW5kZXJpbmcgdGhlIGZpcnN0IDxSb3V0ZT4gdGhhdCBtYXRjaGVzLlxuICovXG5jbGFzcyBTd2l0Y2ggZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICByZW5kZXIoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxSb3V0ZXJDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICB7Y29udGV4dCA9PiB7XG4gICAgICAgICAgaW52YXJpYW50KGNvbnRleHQsIFwiWW91IHNob3VsZCBub3QgdXNlIDxTd2l0Y2g+IG91dHNpZGUgYSA8Um91dGVyPlwiKTtcblxuICAgICAgICAgIGNvbnN0IGxvY2F0aW9uID0gdGhpcy5wcm9wcy5sb2NhdGlvbiB8fCBjb250ZXh0LmxvY2F0aW9uO1xuXG4gICAgICAgICAgbGV0IGVsZW1lbnQsIG1hdGNoO1xuXG4gICAgICAgICAgLy8gV2UgdXNlIFJlYWN0LkNoaWxkcmVuLmZvckVhY2ggaW5zdGVhZCBvZiBSZWFjdC5DaGlsZHJlbi50b0FycmF5KCkuZmluZCgpXG4gICAgICAgICAgLy8gaGVyZSBiZWNhdXNlIHRvQXJyYXkgYWRkcyBrZXlzIHRvIGFsbCBjaGlsZCBlbGVtZW50cyBhbmQgd2UgZG8gbm90IHdhbnRcbiAgICAgICAgICAvLyB0byB0cmlnZ2VyIGFuIHVubW91bnQvcmVtb3VudCBmb3IgdHdvIDxSb3V0ZT5zIHRoYXQgcmVuZGVyIHRoZSBzYW1lXG4gICAgICAgICAgLy8gY29tcG9uZW50IGF0IGRpZmZlcmVudCBVUkxzLlxuICAgICAgICAgIFJlYWN0LkNoaWxkcmVuLmZvckVhY2godGhpcy5wcm9wcy5jaGlsZHJlbiwgY2hpbGQgPT4ge1xuICAgICAgICAgICAgaWYgKG1hdGNoID09IG51bGwgJiYgUmVhY3QuaXNWYWxpZEVsZW1lbnQoY2hpbGQpKSB7XG4gICAgICAgICAgICAgIGVsZW1lbnQgPSBjaGlsZDtcblxuICAgICAgICAgICAgICBjb25zdCBwYXRoID0gY2hpbGQucHJvcHMucGF0aCB8fCBjaGlsZC5wcm9wcy5mcm9tO1xuXG4gICAgICAgICAgICAgIG1hdGNoID0gcGF0aFxuICAgICAgICAgICAgICAgID8gbWF0Y2hQYXRoKGxvY2F0aW9uLnBhdGhuYW1lLCB7IC4uLmNoaWxkLnByb3BzLCBwYXRoIH0pXG4gICAgICAgICAgICAgICAgOiBjb250ZXh0Lm1hdGNoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgcmV0dXJuIG1hdGNoXG4gICAgICAgICAgICA/IFJlYWN0LmNsb25lRWxlbWVudChlbGVtZW50LCB7IGxvY2F0aW9uLCBjb21wdXRlZE1hdGNoOiBtYXRjaCB9KVxuICAgICAgICAgICAgOiBudWxsO1xuICAgICAgICB9fVxuICAgICAgPC9Sb3V0ZXJDb250ZXh0LkNvbnN1bWVyPlxuICAgICk7XG4gIH1cbn1cblxuaWYgKF9fREVWX18pIHtcbiAgU3dpdGNoLnByb3BUeXBlcyA9IHtcbiAgICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gICAgbG9jYXRpb246IFByb3BUeXBlcy5vYmplY3RcbiAgfTtcblxuICBTd2l0Y2gucHJvdG90eXBlLmNvbXBvbmVudERpZFVwZGF0ZSA9IGZ1bmN0aW9uKHByZXZQcm9wcykge1xuICAgIHdhcm5pbmcoXG4gICAgICAhKHRoaXMucHJvcHMubG9jYXRpb24gJiYgIXByZXZQcm9wcy5sb2NhdGlvbiksXG4gICAgICAnPFN3aXRjaD4gZWxlbWVudHMgc2hvdWxkIG5vdCBjaGFuZ2UgZnJvbSB1bmNvbnRyb2xsZWQgdG8gY29udHJvbGxlZCAob3IgdmljZSB2ZXJzYSkuIFlvdSBpbml0aWFsbHkgdXNlZCBubyBcImxvY2F0aW9uXCIgcHJvcCBhbmQgdGhlbiBwcm92aWRlZCBvbmUgb24gYSBzdWJzZXF1ZW50IHJlbmRlci4nXG4gICAgKTtcblxuICAgIHdhcm5pbmcoXG4gICAgICAhKCF0aGlzLnByb3BzLmxvY2F0aW9uICYmIHByZXZQcm9wcy5sb2NhdGlvbiksXG4gICAgICAnPFN3aXRjaD4gZWxlbWVudHMgc2hvdWxkIG5vdCBjaGFuZ2UgZnJvbSBjb250cm9sbGVkIHRvIHVuY29udHJvbGxlZCAob3IgdmljZSB2ZXJzYSkuIFlvdSBwcm92aWRlZCBhIFwibG9jYXRpb25cIiBwcm9wIGluaXRpYWxseSBidXQgb21pdHRlZCBpdCBvbiBhIHN1YnNlcXVlbnQgcmVuZGVyLidcbiAgICApO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBTd2l0Y2g7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgaW52YXJpYW50IGZyb20gXCJ0aW55LWludmFyaWFudFwiO1xuXG5pbXBvcnQgUm91dGVyQ29udGV4dCBmcm9tIFwiLi9Sb3V0ZXJDb250ZXh0LmpzXCI7XG5pbXBvcnQgSGlzdG9yeUNvbnRleHQgZnJvbSBcIi4vSGlzdG9yeUNvbnRleHQuanNcIjtcbmltcG9ydCBtYXRjaFBhdGggZnJvbSBcIi4vbWF0Y2hQYXRoLmpzXCI7XG5cbmNvbnN0IHVzZUNvbnRleHQgPSBSZWFjdC51c2VDb250ZXh0O1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlSGlzdG9yeSgpIHtcbiAgaWYgKF9fREVWX18pIHtcbiAgICBpbnZhcmlhbnQoXG4gICAgICB0eXBlb2YgdXNlQ29udGV4dCA9PT0gXCJmdW5jdGlvblwiLFxuICAgICAgXCJZb3UgbXVzdCB1c2UgUmVhY3QgPj0gMTYuOCBpbiBvcmRlciB0byB1c2UgdXNlSGlzdG9yeSgpXCJcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIHVzZUNvbnRleHQoSGlzdG9yeUNvbnRleHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlTG9jYXRpb24oKSB7XG4gIGlmIChfX0RFVl9fKSB7XG4gICAgaW52YXJpYW50KFxuICAgICAgdHlwZW9mIHVzZUNvbnRleHQgPT09IFwiZnVuY3Rpb25cIixcbiAgICAgIFwiWW91IG11c3QgdXNlIFJlYWN0ID49IDE2LjggaW4gb3JkZXIgdG8gdXNlIHVzZUxvY2F0aW9uKClcIlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gdXNlQ29udGV4dChSb3V0ZXJDb250ZXh0KS5sb2NhdGlvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZVBhcmFtcygpIHtcbiAgaWYgKF9fREVWX18pIHtcbiAgICBpbnZhcmlhbnQoXG4gICAgICB0eXBlb2YgdXNlQ29udGV4dCA9PT0gXCJmdW5jdGlvblwiLFxuICAgICAgXCJZb3UgbXVzdCB1c2UgUmVhY3QgPj0gMTYuOCBpbiBvcmRlciB0byB1c2UgdXNlUGFyYW1zKClcIlxuICAgICk7XG4gIH1cblxuICBjb25zdCBtYXRjaCA9IHVzZUNvbnRleHQoUm91dGVyQ29udGV4dCkubWF0Y2g7XG4gIHJldHVybiBtYXRjaCA/IG1hdGNoLnBhcmFtcyA6IHt9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlUm91dGVNYXRjaChwYXRoKSB7XG4gIGlmIChfX0RFVl9fKSB7XG4gICAgaW52YXJpYW50KFxuICAgICAgdHlwZW9mIHVzZUNvbnRleHQgPT09IFwiZnVuY3Rpb25cIixcbiAgICAgIFwiWW91IG11c3QgdXNlIFJlYWN0ID49IDE2LjggaW4gb3JkZXIgdG8gdXNlIHVzZVJvdXRlTWF0Y2goKVwiXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IGxvY2F0aW9uID0gdXNlTG9jYXRpb24oKTtcbiAgY29uc3QgbWF0Y2ggPSB1c2VDb250ZXh0KFJvdXRlckNvbnRleHQpLm1hdGNoO1xuICByZXR1cm4gcGF0aCA/IG1hdGNoUGF0aChsb2NhdGlvbi5wYXRobmFtZSwgcGF0aCkgOiBtYXRjaDtcbn1cbiIsIi8qKlxuICogTm9ybWFsaXplIGFuIGlkZW50aWZpZXIgKGFzIGZvdW5kIGluIHJlZmVyZW5jZXMsIGRlZmluaXRpb25zKS5cbiAqXG4gKiBDb2xsYXBzZXMgbWFya2Rvd24gd2hpdGVzcGFjZSwgdHJpbSwgYW5kIHRoZW4gbG93ZXItIGFuZCB1cHBlcmNhc2UuXG4gKlxuICogU29tZSBjaGFyYWN0ZXJzIGFyZSBjb25zaWRlcmVkIOKAnHVwcGVyY2FzZeKAnSwgc3VjaCBhcyBVKzAzRjQgKGDPtGApLCBidXQgaWYgdGhlaXJcbiAqIGxvd2VyY2FzZSBjb3VudGVycGFydCAoVSswM0I4IChgzrhgKSkgaXMgdXBwZXJjYXNlZCB3aWxsIHJlc3VsdCBpbiBhIGRpZmZlcmVudFxuICogdXBwZXJjYXNlIGNoYXJhY3RlciAoVSswMzk4IChgzphgKSkuXG4gKiBTbywgdG8gZ2V0IGEgY2Fub25pY2FsIGZvcm0sIHdlIHBlcmZvcm0gYm90aCBsb3dlci0gYW5kIHVwcGVyY2FzZS5cbiAqXG4gKiBVc2luZyB1cHBlcmNhc2UgbGFzdCBtYWtlcyBzdXJlIGtleXMgd2lsbCBuZXZlciBpbnRlcmFjdCB3aXRoIGRlZmF1bHRcbiAqIHByb3RvdHlwYWwgdmFsdWVzIChzdWNoIGFzIGBjb25zdHJ1Y3RvcmApOiBub3RoaW5nIGluIHRoZSBwcm90b3R5cGUgb2ZcbiAqIGBPYmplY3RgIGlzIHVwcGVyY2FzZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqICAgSWRlbnRpZmllciB0byBub3JtYWxpemUuXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICogICBOb3JtYWxpemVkIGlkZW50aWZpZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVJZGVudGlmaWVyKHZhbHVlKSB7XG4gIHJldHVybiAoXG4gICAgdmFsdWVcbiAgICAgIC8vIENvbGxhcHNlIG1hcmtkb3duIHdoaXRlc3BhY2UuXG4gICAgICAucmVwbGFjZSgvW1xcdFxcblxcciBdKy9nLCAnICcpXG4gICAgICAvLyBUcmltLlxuICAgICAgLnJlcGxhY2UoL14gfCAkL2csICcnKVxuICAgICAgLy8gU29tZSBjaGFyYWN0ZXJzIGFyZSBjb25zaWRlcmVkIOKAnHVwcGVyY2FzZeKAnSwgYnV0IGlmIHRoZWlyIGxvd2VyY2FzZVxuICAgICAgLy8gY291bnRlcnBhcnQgaXMgdXBwZXJjYXNlZCB3aWxsIHJlc3VsdCBpbiBhIGRpZmZlcmVudCB1cHBlcmNhc2VcbiAgICAgIC8vIGNoYXJhY3Rlci5cbiAgICAgIC8vIEhlbmNlLCB0byBnZXQgdGhhdCBmb3JtLCB3ZSBwZXJmb3JtIGJvdGggbG93ZXItIGFuZCB1cHBlcmNhc2UuXG4gICAgICAvLyBVcHBlciBjYXNlIG1ha2VzIHN1cmUga2V5cyB3aWxsIG5vdCBpbnRlcmFjdCB3aXRoIGRlZmF1bHQgcHJvdG90eXBhbFxuICAgICAgLy8gbWV0aG9kczogbm8gbWV0aG9kIGlzIHVwcGVyY2FzZS5cbiAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAudG9VcHBlckNhc2UoKVxuICApXG59XG4iLCJmdW5jdGlvbiBfZXh0ZW5kcygpIHtcbiAgcmV0dXJuIF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiA/IE9iamVjdC5hc3NpZ24uYmluZCgpIDogZnVuY3Rpb24gKG4pIHtcbiAgICBmb3IgKHZhciBlID0gMTsgZSA8IGFyZ3VtZW50cy5sZW5ndGg7IGUrKykge1xuICAgICAgdmFyIHQgPSBhcmd1bWVudHNbZV07XG4gICAgICBmb3IgKHZhciByIGluIHQpICh7fSkuaGFzT3duUHJvcGVydHkuY2FsbCh0LCByKSAmJiAobltyXSA9IHRbcl0pO1xuICAgIH1cbiAgICByZXR1cm4gbjtcbiAgfSwgX2V4dGVuZHMuYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbn1cbmV4cG9ydCB7IF9leHRlbmRzIGFzIGRlZmF1bHQgfTsiLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tIFwicmVhY3Qtcm91dGVyXCI7XG5pbXBvcnQgeyBjcmVhdGVCcm93c2VySGlzdG9yeSBhcyBjcmVhdGVIaXN0b3J5IH0gZnJvbSBcImhpc3RvcnlcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB3YXJuaW5nIGZyb20gXCJ0aW55LXdhcm5pbmdcIjtcblxuLyoqXG4gKiBUaGUgcHVibGljIEFQSSBmb3IgYSA8Um91dGVyPiB0aGF0IHVzZXMgSFRNTDUgaGlzdG9yeS5cbiAqL1xuY2xhc3MgQnJvd3NlclJvdXRlciBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIGhpc3RvcnkgPSBjcmVhdGVIaXN0b3J5KHRoaXMucHJvcHMpO1xuXG4gIHJlbmRlcigpIHtcbiAgICByZXR1cm4gPFJvdXRlciBoaXN0b3J5PXt0aGlzLmhpc3Rvcnl9IGNoaWxkcmVuPXt0aGlzLnByb3BzLmNoaWxkcmVufSAvPjtcbiAgfVxufVxuXG5pZiAoX19ERVZfXykge1xuICBCcm93c2VyUm91dGVyLnByb3BUeXBlcyA9IHtcbiAgICBiYXNlbmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gICAgZm9yY2VSZWZyZXNoOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBnZXRVc2VyQ29uZmlybWF0aW9uOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBrZXlMZW5ndGg6IFByb3BUeXBlcy5udW1iZXJcbiAgfTtcblxuICBCcm93c2VyUm91dGVyLnByb3RvdHlwZS5jb21wb25lbnREaWRNb3VudCA9IGZ1bmN0aW9uKCkge1xuICAgIHdhcm5pbmcoXG4gICAgICAhdGhpcy5wcm9wcy5oaXN0b3J5LFxuICAgICAgXCI8QnJvd3NlclJvdXRlcj4gaWdub3JlcyB0aGUgaGlzdG9yeSBwcm9wLiBUbyB1c2UgYSBjdXN0b20gaGlzdG9yeSwgXCIgK1xuICAgICAgICBcInVzZSBgaW1wb3J0IHsgUm91dGVyIH1gIGluc3RlYWQgb2YgYGltcG9ydCB7IEJyb3dzZXJSb3V0ZXIgYXMgUm91dGVyIH1gLlwiXG4gICAgKTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgQnJvd3NlclJvdXRlcjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gXCJyZWFjdC1yb3V0ZXJcIjtcbmltcG9ydCB7IGNyZWF0ZUhhc2hIaXN0b3J5IGFzIGNyZWF0ZUhpc3RvcnkgfSBmcm9tIFwiaGlzdG9yeVwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHdhcm5pbmcgZnJvbSBcInRpbnktd2FybmluZ1wiO1xuXG4vKipcbiAqIFRoZSBwdWJsaWMgQVBJIGZvciBhIDxSb3V0ZXI+IHRoYXQgdXNlcyB3aW5kb3cubG9jYXRpb24uaGFzaC5cbiAqL1xuY2xhc3MgSGFzaFJvdXRlciBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIGhpc3RvcnkgPSBjcmVhdGVIaXN0b3J5KHRoaXMucHJvcHMpO1xuXG4gIHJlbmRlcigpIHtcbiAgICByZXR1cm4gPFJvdXRlciBoaXN0b3J5PXt0aGlzLmhpc3Rvcnl9IGNoaWxkcmVuPXt0aGlzLnByb3BzLmNoaWxkcmVufSAvPjtcbiAgfVxufVxuXG5pZiAoX19ERVZfXykge1xuICBIYXNoUm91dGVyLnByb3BUeXBlcyA9IHtcbiAgICBiYXNlbmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gICAgZ2V0VXNlckNvbmZpcm1hdGlvbjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgaGFzaFR5cGU6IFByb3BUeXBlcy5vbmVPZihbXCJoYXNoYmFuZ1wiLCBcIm5vc2xhc2hcIiwgXCJzbGFzaFwiXSlcbiAgfTtcblxuICBIYXNoUm91dGVyLnByb3RvdHlwZS5jb21wb25lbnREaWRNb3VudCA9IGZ1bmN0aW9uKCkge1xuICAgIHdhcm5pbmcoXG4gICAgICAhdGhpcy5wcm9wcy5oaXN0b3J5LFxuICAgICAgXCI8SGFzaFJvdXRlcj4gaWdub3JlcyB0aGUgaGlzdG9yeSBwcm9wLiBUbyB1c2UgYSBjdXN0b20gaGlzdG9yeSwgXCIgK1xuICAgICAgICBcInVzZSBgaW1wb3J0IHsgUm91dGVyIH1gIGluc3RlYWQgb2YgYGltcG9ydCB7IEhhc2hSb3V0ZXIgYXMgUm91dGVyIH1gLlwiXG4gICAgKTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgSGFzaFJvdXRlcjtcbiIsImltcG9ydCB7IGNyZWF0ZUxvY2F0aW9uIH0gZnJvbSBcImhpc3RvcnlcIjtcblxuZXhwb3J0IGNvbnN0IHJlc29sdmVUb0xvY2F0aW9uID0gKHRvLCBjdXJyZW50TG9jYXRpb24pID0+XG4gIHR5cGVvZiB0byA9PT0gXCJmdW5jdGlvblwiID8gdG8oY3VycmVudExvY2F0aW9uKSA6IHRvO1xuXG5leHBvcnQgY29uc3Qgbm9ybWFsaXplVG9Mb2NhdGlvbiA9ICh0bywgY3VycmVudExvY2F0aW9uKSA9PiB7XG4gIHJldHVybiB0eXBlb2YgdG8gPT09IFwic3RyaW5nXCJcbiAgICA/IGNyZWF0ZUxvY2F0aW9uKHRvLCBudWxsLCBudWxsLCBjdXJyZW50TG9jYXRpb24pXG4gICAgOiB0bztcbn07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBfX1JvdXRlckNvbnRleHQgYXMgUm91dGVyQ29udGV4dCB9IGZyb20gXCJyZWFjdC1yb3V0ZXJcIjtcbmltcG9ydCB7IGNyZWF0ZVBhdGggfSBmcm9tICdoaXN0b3J5JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCBpbnZhcmlhbnQgZnJvbSBcInRpbnktaW52YXJpYW50XCI7XG5pbXBvcnQge1xuICByZXNvbHZlVG9Mb2NhdGlvbixcbiAgbm9ybWFsaXplVG9Mb2NhdGlvblxufSBmcm9tIFwiLi91dGlscy9sb2NhdGlvblV0aWxzLmpzXCI7XG5cbi8vIFJlYWN0IDE1IGNvbXBhdFxuY29uc3QgZm9yd2FyZFJlZlNoaW0gPSBDID0+IEM7XG5sZXQgeyBmb3J3YXJkUmVmIH0gPSBSZWFjdDtcbmlmICh0eXBlb2YgZm9yd2FyZFJlZiA9PT0gXCJ1bmRlZmluZWRcIikge1xuICBmb3J3YXJkUmVmID0gZm9yd2FyZFJlZlNoaW07XG59XG5cbmZ1bmN0aW9uIGlzTW9kaWZpZWRFdmVudChldmVudCkge1xuICByZXR1cm4gISEoZXZlbnQubWV0YUtleSB8fCBldmVudC5hbHRLZXkgfHwgZXZlbnQuY3RybEtleSB8fCBldmVudC5zaGlmdEtleSk7XG59XG5cbmNvbnN0IExpbmtBbmNob3IgPSBmb3J3YXJkUmVmKFxuICAoXG4gICAge1xuICAgICAgaW5uZXJSZWYsIC8vIFRPRE86IGRlcHJlY2F0ZVxuICAgICAgbmF2aWdhdGUsXG4gICAgICBvbkNsaWNrLFxuICAgICAgLi4ucmVzdFxuICAgIH0sXG4gICAgZm9yd2FyZGVkUmVmXG4gICkgPT4ge1xuICAgIGNvbnN0IHsgdGFyZ2V0IH0gPSByZXN0O1xuXG4gICAgbGV0IHByb3BzID0ge1xuICAgICAgLi4ucmVzdCxcbiAgICAgIG9uQ2xpY2s6IGV2ZW50ID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpZiAob25DbGljaykgb25DbGljayhldmVudCk7XG4gICAgICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICB0aHJvdyBleDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAhZXZlbnQuZGVmYXVsdFByZXZlbnRlZCAmJiAvLyBvbkNsaWNrIHByZXZlbnRlZCBkZWZhdWx0XG4gICAgICAgICAgZXZlbnQuYnV0dG9uID09PSAwICYmIC8vIGlnbm9yZSBldmVyeXRoaW5nIGJ1dCBsZWZ0IGNsaWNrc1xuICAgICAgICAgICghdGFyZ2V0IHx8IHRhcmdldCA9PT0gXCJfc2VsZlwiKSAmJiAvLyBsZXQgYnJvd3NlciBoYW5kbGUgXCJ0YXJnZXQ9X2JsYW5rXCIgZXRjLlxuICAgICAgICAgICFpc01vZGlmaWVkRXZlbnQoZXZlbnQpIC8vIGlnbm9yZSBjbGlja3Mgd2l0aCBtb2RpZmllciBrZXlzXG4gICAgICAgICkge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgbmF2aWdhdGUoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBSZWFjdCAxNSBjb21wYXRcbiAgICBpZiAoZm9yd2FyZFJlZlNoaW0gIT09IGZvcndhcmRSZWYpIHtcbiAgICAgIHByb3BzLnJlZiA9IGZvcndhcmRlZFJlZiB8fCBpbm5lclJlZjtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJvcHMucmVmID0gaW5uZXJSZWY7XG4gICAgfVxuXG4gICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzeC1hMTF5L2FuY2hvci1oYXMtY29udGVudCAqL1xuICAgIHJldHVybiA8YSB7Li4ucHJvcHN9IC8+O1xuICB9XG4pO1xuXG5pZiAoX19ERVZfXykge1xuICBMaW5rQW5jaG9yLmRpc3BsYXlOYW1lID0gXCJMaW5rQW5jaG9yXCI7XG59XG5cbi8qKlxuICogVGhlIHB1YmxpYyBBUEkgZm9yIHJlbmRlcmluZyBhIGhpc3RvcnktYXdhcmUgPGE+LlxuICovXG5jb25zdCBMaW5rID0gZm9yd2FyZFJlZihcbiAgKFxuICAgIHtcbiAgICAgIGNvbXBvbmVudCA9IExpbmtBbmNob3IsXG4gICAgICByZXBsYWNlLFxuICAgICAgdG8sXG4gICAgICBpbm5lclJlZiwgLy8gVE9ETzogZGVwcmVjYXRlXG4gICAgICAuLi5yZXN0XG4gICAgfSxcbiAgICBmb3J3YXJkZWRSZWZcbiAgKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxSb3V0ZXJDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICB7Y29udGV4dCA9PiB7XG4gICAgICAgICAgaW52YXJpYW50KGNvbnRleHQsIFwiWW91IHNob3VsZCBub3QgdXNlIDxMaW5rPiBvdXRzaWRlIGEgPFJvdXRlcj5cIik7XG5cbiAgICAgICAgICBjb25zdCB7IGhpc3RvcnkgfSA9IGNvbnRleHQ7XG5cbiAgICAgICAgICBjb25zdCBsb2NhdGlvbiA9IG5vcm1hbGl6ZVRvTG9jYXRpb24oXG4gICAgICAgICAgICByZXNvbHZlVG9Mb2NhdGlvbih0bywgY29udGV4dC5sb2NhdGlvbiksXG4gICAgICAgICAgICBjb250ZXh0LmxvY2F0aW9uXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGNvbnN0IGhyZWYgPSBsb2NhdGlvbiA/IGhpc3RvcnkuY3JlYXRlSHJlZihsb2NhdGlvbikgOiBcIlwiO1xuICAgICAgICAgIGNvbnN0IHByb3BzID0ge1xuICAgICAgICAgICAgLi4ucmVzdCxcbiAgICAgICAgICAgIGhyZWYsXG4gICAgICAgICAgICBuYXZpZ2F0ZSgpIHtcbiAgICAgICAgICAgICAgY29uc3QgbG9jYXRpb24gPSByZXNvbHZlVG9Mb2NhdGlvbih0bywgY29udGV4dC5sb2NhdGlvbik7XG4gICAgICAgICAgICAgIGNvbnN0IGlzRHVwbGljYXRlTmF2aWdhdGlvbiA9IGNyZWF0ZVBhdGgoY29udGV4dC5sb2NhdGlvbikgPT09IGNyZWF0ZVBhdGgobm9ybWFsaXplVG9Mb2NhdGlvbihsb2NhdGlvbikpO1xuICAgICAgICAgICAgICBjb25zdCBtZXRob2QgPSAocmVwbGFjZSB8fCBpc0R1cGxpY2F0ZU5hdmlnYXRpb24pID8gaGlzdG9yeS5yZXBsYWNlIDogaGlzdG9yeS5wdXNoO1xuXG4gICAgICAgICAgICAgIG1ldGhvZChsb2NhdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcblxuICAgICAgICAgIC8vIFJlYWN0IDE1IGNvbXBhdFxuICAgICAgICAgIGlmIChmb3J3YXJkUmVmU2hpbSAhPT0gZm9yd2FyZFJlZikge1xuICAgICAgICAgICAgcHJvcHMucmVmID0gZm9yd2FyZGVkUmVmIHx8IGlubmVyUmVmO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwcm9wcy5pbm5lclJlZiA9IGlubmVyUmVmO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KGNvbXBvbmVudCwgcHJvcHMpO1xuICAgICAgICB9fVxuICAgICAgPC9Sb3V0ZXJDb250ZXh0LkNvbnN1bWVyPlxuICAgICk7XG4gIH1cbik7XG5cbmlmIChfX0RFVl9fKSB7XG4gIGNvbnN0IHRvVHlwZSA9IFByb3BUeXBlcy5vbmVPZlR5cGUoW1xuICAgIFByb3BUeXBlcy5zdHJpbmcsXG4gICAgUHJvcFR5cGVzLm9iamVjdCxcbiAgICBQcm9wVHlwZXMuZnVuY1xuICBdKTtcbiAgY29uc3QgcmVmVHlwZSA9IFByb3BUeXBlcy5vbmVPZlR5cGUoW1xuICAgIFByb3BUeXBlcy5zdHJpbmcsXG4gICAgUHJvcFR5cGVzLmZ1bmMsXG4gICAgUHJvcFR5cGVzLnNoYXBlKHsgY3VycmVudDogUHJvcFR5cGVzLmFueSB9KVxuICBdKTtcblxuICBMaW5rLmRpc3BsYXlOYW1lID0gXCJMaW5rXCI7XG5cbiAgTGluay5wcm9wVHlwZXMgPSB7XG4gICAgaW5uZXJSZWY6IHJlZlR5cGUsXG4gICAgb25DbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gICAgcmVwbGFjZTogUHJvcFR5cGVzLmJvb2wsXG4gICAgdGFyZ2V0OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIHRvOiB0b1R5cGUuaXNSZXF1aXJlZFxuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBMaW5rO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgX19Sb3V0ZXJDb250ZXh0IGFzIFJvdXRlckNvbnRleHQsIG1hdGNoUGF0aCB9IGZyb20gXCJyZWFjdC1yb3V0ZXJcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCBpbnZhcmlhbnQgZnJvbSBcInRpbnktaW52YXJpYW50XCI7XG5pbXBvcnQgTGluayBmcm9tIFwiLi9MaW5rLmpzXCI7XG5pbXBvcnQge1xuICByZXNvbHZlVG9Mb2NhdGlvbixcbiAgbm9ybWFsaXplVG9Mb2NhdGlvblxufSBmcm9tIFwiLi91dGlscy9sb2NhdGlvblV0aWxzLmpzXCI7XG5cbi8vIFJlYWN0IDE1IGNvbXBhdFxuY29uc3QgZm9yd2FyZFJlZlNoaW0gPSBDID0+IEM7XG5sZXQgeyBmb3J3YXJkUmVmIH0gPSBSZWFjdDtcbmlmICh0eXBlb2YgZm9yd2FyZFJlZiA9PT0gXCJ1bmRlZmluZWRcIikge1xuICBmb3J3YXJkUmVmID0gZm9yd2FyZFJlZlNoaW07XG59XG5cbmZ1bmN0aW9uIGpvaW5DbGFzc25hbWVzKC4uLmNsYXNzbmFtZXMpIHtcbiAgcmV0dXJuIGNsYXNzbmFtZXMuZmlsdGVyKGkgPT4gaSkuam9pbihcIiBcIik7XG59XG5cbi8qKlxuICogQSA8TGluaz4gd3JhcHBlciB0aGF0IGtub3dzIGlmIGl0J3MgXCJhY3RpdmVcIiBvciBub3QuXG4gKi9cbmNvbnN0IE5hdkxpbmsgPSBmb3J3YXJkUmVmKFxuICAoXG4gICAge1xuICAgICAgXCJhcmlhLWN1cnJlbnRcIjogYXJpYUN1cnJlbnQgPSBcInBhZ2VcIixcbiAgICAgIGFjdGl2ZUNsYXNzTmFtZSA9IFwiYWN0aXZlXCIsIC8vIFRPRE86IGRlcHJlY2F0ZVxuICAgICAgYWN0aXZlU3R5bGUsIC8vIFRPRE86IGRlcHJlY2F0ZVxuICAgICAgY2xhc3NOYW1lOiBjbGFzc05hbWVQcm9wLFxuICAgICAgZXhhY3QsXG4gICAgICBpc0FjdGl2ZTogaXNBY3RpdmVQcm9wLFxuICAgICAgbG9jYXRpb246IGxvY2F0aW9uUHJvcCxcbiAgICAgIHNlbnNpdGl2ZSxcbiAgICAgIHN0cmljdCxcbiAgICAgIHN0eWxlOiBzdHlsZVByb3AsXG4gICAgICB0byxcbiAgICAgIGlubmVyUmVmLCAvLyBUT0RPOiBkZXByZWNhdGVcbiAgICAgIC4uLnJlc3RcbiAgICB9LFxuICAgIGZvcndhcmRlZFJlZlxuICApID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgPFJvdXRlckNvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgIHtjb250ZXh0ID0+IHtcbiAgICAgICAgICBpbnZhcmlhbnQoY29udGV4dCwgXCJZb3Ugc2hvdWxkIG5vdCB1c2UgPE5hdkxpbms+IG91dHNpZGUgYSA8Um91dGVyPlwiKTtcblxuICAgICAgICAgIGNvbnN0IGN1cnJlbnRMb2NhdGlvbiA9IGxvY2F0aW9uUHJvcCB8fCBjb250ZXh0LmxvY2F0aW9uO1xuICAgICAgICAgIGNvbnN0IHRvTG9jYXRpb24gPSBub3JtYWxpemVUb0xvY2F0aW9uKFxuICAgICAgICAgICAgcmVzb2x2ZVRvTG9jYXRpb24odG8sIGN1cnJlbnRMb2NhdGlvbiksXG4gICAgICAgICAgICBjdXJyZW50TG9jYXRpb25cbiAgICAgICAgICApO1xuICAgICAgICAgIGNvbnN0IHsgcGF0aG5hbWU6IHBhdGggfSA9IHRvTG9jYXRpb247XG4gICAgICAgICAgLy8gUmVnZXggdGFrZW4gZnJvbTogaHR0cHM6Ly9naXRodWIuY29tL3BpbGxhcmpzL3BhdGgtdG8tcmVnZXhwL2Jsb2IvbWFzdGVyL2luZGV4LmpzI0wyMDJcbiAgICAgICAgICBjb25zdCBlc2NhcGVkUGF0aCA9XG4gICAgICAgICAgICBwYXRoICYmIHBhdGgucmVwbGFjZSgvKFsuKyo/PV4hOiR7fSgpW1xcXXwvXFxcXF0pL2csIFwiXFxcXCQxXCIpO1xuXG4gICAgICAgICAgY29uc3QgbWF0Y2ggPSBlc2NhcGVkUGF0aFxuICAgICAgICAgICAgPyBtYXRjaFBhdGgoY3VycmVudExvY2F0aW9uLnBhdGhuYW1lLCB7XG4gICAgICAgICAgICAgICAgcGF0aDogZXNjYXBlZFBhdGgsXG4gICAgICAgICAgICAgICAgZXhhY3QsXG4gICAgICAgICAgICAgICAgc2Vuc2l0aXZlLFxuICAgICAgICAgICAgICAgIHN0cmljdFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgOiBudWxsO1xuICAgICAgICAgIGNvbnN0IGlzQWN0aXZlID0gISEoaXNBY3RpdmVQcm9wXG4gICAgICAgICAgICA/IGlzQWN0aXZlUHJvcChtYXRjaCwgY3VycmVudExvY2F0aW9uKVxuICAgICAgICAgICAgOiBtYXRjaCk7XG5cbiAgICAgICAgICBsZXQgY2xhc3NOYW1lID1cbiAgICAgICAgICAgIHR5cGVvZiBjbGFzc05hbWVQcm9wID09PSBcImZ1bmN0aW9uXCJcbiAgICAgICAgICAgICAgPyBjbGFzc05hbWVQcm9wKGlzQWN0aXZlKVxuICAgICAgICAgICAgICA6IGNsYXNzTmFtZVByb3A7XG5cbiAgICAgICAgICBsZXQgc3R5bGUgPVxuICAgICAgICAgICAgdHlwZW9mIHN0eWxlUHJvcCA9PT0gXCJmdW5jdGlvblwiID8gc3R5bGVQcm9wKGlzQWN0aXZlKSA6IHN0eWxlUHJvcDtcblxuICAgICAgICAgIGlmIChpc0FjdGl2ZSkge1xuICAgICAgICAgICAgY2xhc3NOYW1lID0gam9pbkNsYXNzbmFtZXMoY2xhc3NOYW1lLCBhY3RpdmVDbGFzc05hbWUpO1xuICAgICAgICAgICAgc3R5bGUgPSB7IC4uLnN0eWxlLCAuLi5hY3RpdmVTdHlsZSB9O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHByb3BzID0ge1xuICAgICAgICAgICAgXCJhcmlhLWN1cnJlbnRcIjogKGlzQWN0aXZlICYmIGFyaWFDdXJyZW50KSB8fCBudWxsLFxuICAgICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICAgICAgc3R5bGUsXG4gICAgICAgICAgICB0bzogdG9Mb2NhdGlvbixcbiAgICAgICAgICAgIC4uLnJlc3RcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgLy8gUmVhY3QgMTUgY29tcGF0XG4gICAgICAgICAgaWYgKGZvcndhcmRSZWZTaGltICE9PSBmb3J3YXJkUmVmKSB7XG4gICAgICAgICAgICBwcm9wcy5yZWYgPSBmb3J3YXJkZWRSZWYgfHwgaW5uZXJSZWY7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHByb3BzLmlubmVyUmVmID0gaW5uZXJSZWY7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIDxMaW5rIHsuLi5wcm9wc30gLz47XG4gICAgICAgIH19XG4gICAgICA8L1JvdXRlckNvbnRleHQuQ29uc3VtZXI+XG4gICAgKTtcbiAgfVxuKTtcblxuaWYgKF9fREVWX18pIHtcbiAgTmF2TGluay5kaXNwbGF5TmFtZSA9IFwiTmF2TGlua1wiO1xuXG4gIGNvbnN0IGFyaWFDdXJyZW50VHlwZSA9IFByb3BUeXBlcy5vbmVPZihbXG4gICAgXCJwYWdlXCIsXG4gICAgXCJzdGVwXCIsXG4gICAgXCJsb2NhdGlvblwiLFxuICAgIFwiZGF0ZVwiLFxuICAgIFwidGltZVwiLFxuICAgIFwidHJ1ZVwiLFxuICAgIFwiZmFsc2VcIlxuICBdKTtcblxuICBOYXZMaW5rLnByb3BUeXBlcyA9IHtcbiAgICAuLi5MaW5rLnByb3BUeXBlcyxcbiAgICBcImFyaWEtY3VycmVudFwiOiBhcmlhQ3VycmVudFR5cGUsXG4gICAgYWN0aXZlQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGFjdGl2ZVN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIGNsYXNzTmFtZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLmZ1bmNdKSxcbiAgICBleGFjdDogUHJvcFR5cGVzLmJvb2wsXG4gICAgaXNBY3RpdmU6IFByb3BUeXBlcy5mdW5jLFxuICAgIGxvY2F0aW9uOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIHNlbnNpdGl2ZTogUHJvcFR5cGVzLmJvb2wsXG4gICAgc3RyaWN0OiBQcm9wVHlwZXMuYm9vbCxcbiAgICBzdHlsZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm9iamVjdCwgUHJvcFR5cGVzLmZ1bmNdKVxuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBOYXZMaW5rO1xuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gbWFya3VwVGVtcGxhdGluZ1xubWFya3VwVGVtcGxhdGluZy5kaXNwbGF5TmFtZSA9ICdtYXJrdXBUZW1wbGF0aW5nJ1xubWFya3VwVGVtcGxhdGluZy5hbGlhc2VzID0gW11cbmZ1bmN0aW9uIG1hcmt1cFRlbXBsYXRpbmcoUHJpc20pIHtcbiAgOyhmdW5jdGlvbiAoUHJpc20pIHtcbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBwbGFjZWhvbGRlciBmb3IgdGhlIGdpdmVuIGxhbmd1YWdlIGlkIGFuZCBpbmRleC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBsYW5ndWFnZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfG51bWJlcn0gaW5kZXhcbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGdldFBsYWNlaG9sZGVyKGxhbmd1YWdlLCBpbmRleCkge1xuICAgICAgcmV0dXJuICdfX18nICsgbGFuZ3VhZ2UudG9VcHBlckNhc2UoKSArIGluZGV4ICsgJ19fXydcbiAgICB9XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoKFByaXNtLmxhbmd1YWdlc1snbWFya3VwLXRlbXBsYXRpbmcnXSA9IHt9KSwge1xuICAgICAgYnVpbGRQbGFjZWhvbGRlcnM6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRva2VuaXplIGFsbCBpbmxpbmUgdGVtcGxhdGluZyBleHByZXNzaW9ucyBtYXRjaGluZyBgcGxhY2Vob2xkZXJQYXR0ZXJuYC5cbiAgICAgICAgICpcbiAgICAgICAgICogSWYgYHJlcGxhY2VGaWx0ZXJgIGlzIHByb3ZpZGVkLCBvbmx5IG1hdGNoZXMgb2YgYHBsYWNlaG9sZGVyUGF0dGVybmAgZm9yIHdoaWNoIGByZXBsYWNlRmlsdGVyYCByZXR1cm5zXG4gICAgICAgICAqIGB0cnVlYCB3aWxsIGJlIHJlcGxhY2VkLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcGFyYW0ge29iamVjdH0gZW52IFRoZSBlbnZpcm9ubWVudCBvZiB0aGUgYGJlZm9yZS10b2tlbml6ZWAgaG9vay5cbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IGxhbmd1YWdlIFRoZSBsYW5ndWFnZSBpZC5cbiAgICAgICAgICogQHBhcmFtIHtSZWdFeHB9IHBsYWNlaG9sZGVyUGF0dGVybiBUaGUgbWF0Y2hlcyBvZiB0aGlzIHBhdHRlcm4gd2lsbCBiZSByZXBsYWNlZCBieSBwbGFjZWhvbGRlcnMuXG4gICAgICAgICAqIEBwYXJhbSB7KG1hdGNoOiBzdHJpbmcpID0+IGJvb2xlYW59IFtyZXBsYWNlRmlsdGVyXVxuICAgICAgICAgKi9cbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIChlbnYsIGxhbmd1YWdlLCBwbGFjZWhvbGRlclBhdHRlcm4sIHJlcGxhY2VGaWx0ZXIpIHtcbiAgICAgICAgICBpZiAoZW52Lmxhbmd1YWdlICE9PSBsYW5ndWFnZSkge1xuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuICAgICAgICAgIHZhciB0b2tlblN0YWNrID0gKGVudi50b2tlblN0YWNrID0gW10pXG4gICAgICAgICAgZW52LmNvZGUgPSBlbnYuY29kZS5yZXBsYWNlKHBsYWNlaG9sZGVyUGF0dGVybiwgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHJlcGxhY2VGaWx0ZXIgPT09ICdmdW5jdGlvbicgJiYgIXJlcGxhY2VGaWx0ZXIobWF0Y2gpKSB7XG4gICAgICAgICAgICAgIHJldHVybiBtYXRjaFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGkgPSB0b2tlblN0YWNrLmxlbmd0aFxuICAgICAgICAgICAgdmFyIHBsYWNlaG9sZGVyIC8vIENoZWNrIGZvciBleGlzdGluZyBzdHJpbmdzXG4gICAgICAgICAgICB3aGlsZSAoXG4gICAgICAgICAgICAgIGVudi5jb2RlLmluZGV4T2YoKHBsYWNlaG9sZGVyID0gZ2V0UGxhY2Vob2xkZXIobGFuZ3VhZ2UsIGkpKSkgIT09XG4gICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgKytpXG4gICAgICAgICAgICB9IC8vIENyZWF0ZSBhIHNwYXJzZSBhcnJheVxuICAgICAgICAgICAgdG9rZW5TdGFja1tpXSA9IG1hdGNoXG4gICAgICAgICAgICByZXR1cm4gcGxhY2Vob2xkZXJcbiAgICAgICAgICB9KSAvLyBTd2l0Y2ggdGhlIGdyYW1tYXIgdG8gbWFya3VwXG4gICAgICAgICAgZW52LmdyYW1tYXIgPSBQcmlzbS5sYW5ndWFnZXMubWFya3VwXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB0b2tlbml6ZVBsYWNlaG9sZGVyczoge1xuICAgICAgICAvKipcbiAgICAgICAgICogUmVwbGFjZSBwbGFjZWhvbGRlcnMgd2l0aCBwcm9wZXIgdG9rZW5zIGFmdGVyIHRva2VuaXppbmcuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwYXJhbSB7b2JqZWN0fSBlbnYgVGhlIGVudmlyb25tZW50IG9mIHRoZSBgYWZ0ZXItdG9rZW5pemVgIGhvb2suXG4gICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBsYW5ndWFnZSBUaGUgbGFuZ3VhZ2UgaWQuXG4gICAgICAgICAqL1xuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gKGVudiwgbGFuZ3VhZ2UpIHtcbiAgICAgICAgICBpZiAoZW52Lmxhbmd1YWdlICE9PSBsYW5ndWFnZSB8fCAhZW52LnRva2VuU3RhY2spIHtcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH0gLy8gU3dpdGNoIHRoZSBncmFtbWFyIGJhY2tcbiAgICAgICAgICBlbnYuZ3JhbW1hciA9IFByaXNtLmxhbmd1YWdlc1tsYW5ndWFnZV1cbiAgICAgICAgICB2YXIgaiA9IDBcbiAgICAgICAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKGVudi50b2tlblN0YWNrKVxuICAgICAgICAgIGZ1bmN0aW9uIHdhbGtUb2tlbnModG9rZW5zKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRva2Vucy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAvLyBhbGwgcGxhY2Vob2xkZXJzIGFyZSByZXBsYWNlZCBhbHJlYWR5XG4gICAgICAgICAgICAgIGlmIChqID49IGtleXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB2YXIgdG9rZW4gPSB0b2tlbnNbaV1cbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHR5cGVvZiB0b2tlbiA9PT0gJ3N0cmluZycgfHxcbiAgICAgICAgICAgICAgICAodG9rZW4uY29udGVudCAmJiB0eXBlb2YgdG9rZW4uY29udGVudCA9PT0gJ3N0cmluZycpXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHZhciBrID0ga2V5c1tqXVxuICAgICAgICAgICAgICAgIHZhciB0ID0gZW52LnRva2VuU3RhY2tba11cbiAgICAgICAgICAgICAgICB2YXIgcyA9IHR5cGVvZiB0b2tlbiA9PT0gJ3N0cmluZycgPyB0b2tlbiA6IHRva2VuLmNvbnRlbnRcbiAgICAgICAgICAgICAgICB2YXIgcGxhY2Vob2xkZXIgPSBnZXRQbGFjZWhvbGRlcihsYW5ndWFnZSwgaylcbiAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSBzLmluZGV4T2YocGxhY2Vob2xkZXIpXG4gICAgICAgICAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICsralxuICAgICAgICAgICAgICAgICAgdmFyIGJlZm9yZSA9IHMuc3Vic3RyaW5nKDAsIGluZGV4KVxuICAgICAgICAgICAgICAgICAgdmFyIG1pZGRsZSA9IG5ldyBQcmlzbS5Ub2tlbihcbiAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2UsXG4gICAgICAgICAgICAgICAgICAgIFByaXNtLnRva2VuaXplKHQsIGVudi5ncmFtbWFyKSxcbiAgICAgICAgICAgICAgICAgICAgJ2xhbmd1YWdlLScgKyBsYW5ndWFnZSxcbiAgICAgICAgICAgICAgICAgICAgdFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgdmFyIGFmdGVyID0gcy5zdWJzdHJpbmcoaW5kZXggKyBwbGFjZWhvbGRlci5sZW5ndGgpXG4gICAgICAgICAgICAgICAgICB2YXIgcmVwbGFjZW1lbnQgPSBbXVxuICAgICAgICAgICAgICAgICAgaWYgKGJlZm9yZSkge1xuICAgICAgICAgICAgICAgICAgICByZXBsYWNlbWVudC5wdXNoLmFwcGx5KHJlcGxhY2VtZW50LCB3YWxrVG9rZW5zKFtiZWZvcmVdKSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50LnB1c2gobWlkZGxlKVxuICAgICAgICAgICAgICAgICAgaWYgKGFmdGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50LnB1c2guYXBwbHkocmVwbGFjZW1lbnQsIHdhbGtUb2tlbnMoW2FmdGVyXSkpXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHRva2VuID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICB0b2tlbnMuc3BsaWNlLmFwcGx5KHRva2VucywgW2ksIDFdLmNvbmNhdChyZXBsYWNlbWVudCkpXG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0b2tlbi5jb250ZW50ID0gcmVwbGFjZW1lbnRcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgdG9rZW4uY29udGVudFxuICAgICAgICAgICAgICAgIC8qICYmIHR5cGVvZiB0b2tlbi5jb250ZW50ICE9PSAnc3RyaW5nJyAqL1xuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB3YWxrVG9rZW5zKHRva2VuLmNvbnRlbnQpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0b2tlbnNcbiAgICAgICAgICB9XG4gICAgICAgICAgd2Fsa1Rva2VucyhlbnYudG9rZW5zKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSlcbiAgfSkoUHJpc20pXG59XG4iLCJmdW5jdGlvbiBpc0Fic29sdXRlKHBhdGhuYW1lKSB7XG4gIHJldHVybiBwYXRobmFtZS5jaGFyQXQoMCkgPT09ICcvJztcbn1cblxuLy8gQWJvdXQgMS41eCBmYXN0ZXIgdGhhbiB0aGUgdHdvLWFyZyB2ZXJzaW9uIG9mIEFycmF5I3NwbGljZSgpXG5mdW5jdGlvbiBzcGxpY2VPbmUobGlzdCwgaW5kZXgpIHtcbiAgZm9yICh2YXIgaSA9IGluZGV4LCBrID0gaSArIDEsIG4gPSBsaXN0Lmxlbmd0aDsgayA8IG47IGkgKz0gMSwgayArPSAxKSB7XG4gICAgbGlzdFtpXSA9IGxpc3Rba107XG4gIH1cblxuICBsaXN0LnBvcCgpO1xufVxuXG4vLyBUaGlzIGltcGxlbWVudGF0aW9uIGlzIGJhc2VkIGhlYXZpbHkgb24gbm9kZSdzIHVybC5wYXJzZVxuZnVuY3Rpb24gcmVzb2x2ZVBhdGhuYW1lKHRvLCBmcm9tKSB7XG4gIGlmIChmcm9tID09PSB1bmRlZmluZWQpIGZyb20gPSAnJztcblxuICB2YXIgdG9QYXJ0cyA9ICh0byAmJiB0by5zcGxpdCgnLycpKSB8fCBbXTtcbiAgdmFyIGZyb21QYXJ0cyA9IChmcm9tICYmIGZyb20uc3BsaXQoJy8nKSkgfHwgW107XG5cbiAgdmFyIGlzVG9BYnMgPSB0byAmJiBpc0Fic29sdXRlKHRvKTtcbiAgdmFyIGlzRnJvbUFicyA9IGZyb20gJiYgaXNBYnNvbHV0ZShmcm9tKTtcbiAgdmFyIG11c3RFbmRBYnMgPSBpc1RvQWJzIHx8IGlzRnJvbUFicztcblxuICBpZiAodG8gJiYgaXNBYnNvbHV0ZSh0bykpIHtcbiAgICAvLyB0byBpcyBhYnNvbHV0ZVxuICAgIGZyb21QYXJ0cyA9IHRvUGFydHM7XG4gIH0gZWxzZSBpZiAodG9QYXJ0cy5sZW5ndGgpIHtcbiAgICAvLyB0byBpcyByZWxhdGl2ZSwgZHJvcCB0aGUgZmlsZW5hbWVcbiAgICBmcm9tUGFydHMucG9wKCk7XG4gICAgZnJvbVBhcnRzID0gZnJvbVBhcnRzLmNvbmNhdCh0b1BhcnRzKTtcbiAgfVxuXG4gIGlmICghZnJvbVBhcnRzLmxlbmd0aCkgcmV0dXJuICcvJztcblxuICB2YXIgaGFzVHJhaWxpbmdTbGFzaDtcbiAgaWYgKGZyb21QYXJ0cy5sZW5ndGgpIHtcbiAgICB2YXIgbGFzdCA9IGZyb21QYXJ0c1tmcm9tUGFydHMubGVuZ3RoIC0gMV07XG4gICAgaGFzVHJhaWxpbmdTbGFzaCA9IGxhc3QgPT09ICcuJyB8fCBsYXN0ID09PSAnLi4nIHx8IGxhc3QgPT09ICcnO1xuICB9IGVsc2Uge1xuICAgIGhhc1RyYWlsaW5nU2xhc2ggPSBmYWxzZTtcbiAgfVxuXG4gIHZhciB1cCA9IDA7XG4gIGZvciAodmFyIGkgPSBmcm9tUGFydHMubGVuZ3RoOyBpID49IDA7IGktLSkge1xuICAgIHZhciBwYXJ0ID0gZnJvbVBhcnRzW2ldO1xuXG4gICAgaWYgKHBhcnQgPT09ICcuJykge1xuICAgICAgc3BsaWNlT25lKGZyb21QYXJ0cywgaSk7XG4gICAgfSBlbHNlIGlmIChwYXJ0ID09PSAnLi4nKSB7XG4gICAgICBzcGxpY2VPbmUoZnJvbVBhcnRzLCBpKTtcbiAgICAgIHVwKys7XG4gICAgfSBlbHNlIGlmICh1cCkge1xuICAgICAgc3BsaWNlT25lKGZyb21QYXJ0cywgaSk7XG4gICAgICB1cC0tO1xuICAgIH1cbiAgfVxuXG4gIGlmICghbXVzdEVuZEFicykgZm9yICg7IHVwLS07IHVwKSBmcm9tUGFydHMudW5zaGlmdCgnLi4nKTtcblxuICBpZiAoXG4gICAgbXVzdEVuZEFicyAmJlxuICAgIGZyb21QYXJ0c1swXSAhPT0gJycgJiZcbiAgICAoIWZyb21QYXJ0c1swXSB8fCAhaXNBYnNvbHV0ZShmcm9tUGFydHNbMF0pKVxuICApXG4gICAgZnJvbVBhcnRzLnVuc2hpZnQoJycpO1xuXG4gIHZhciByZXN1bHQgPSBmcm9tUGFydHMuam9pbignLycpO1xuXG4gIGlmIChoYXNUcmFpbGluZ1NsYXNoICYmIHJlc3VsdC5zdWJzdHIoLTEpICE9PSAnLycpIHJlc3VsdCArPSAnLyc7XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgcmVzb2x2ZVBhdGhuYW1lO1xuIiwiZnVuY3Rpb24gdmFsdWVPZihvYmopIHtcbiAgcmV0dXJuIG9iai52YWx1ZU9mID8gb2JqLnZhbHVlT2YoKSA6IE9iamVjdC5wcm90b3R5cGUudmFsdWVPZi5jYWxsKG9iaik7XG59XG5cbmZ1bmN0aW9uIHZhbHVlRXF1YWwoYSwgYikge1xuICAvLyBUZXN0IGZvciBzdHJpY3QgZXF1YWxpdHkgZmlyc3QuXG4gIGlmIChhID09PSBiKSByZXR1cm4gdHJ1ZTtcblxuICAvLyBPdGhlcndpc2UsIGlmIGVpdGhlciBvZiB0aGVtID09IG51bGwgdGhleSBhcmUgbm90IGVxdWFsLlxuICBpZiAoYSA9PSBudWxsIHx8IGIgPT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuXG4gIGlmIChBcnJheS5pc0FycmF5KGEpKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIEFycmF5LmlzQXJyYXkoYikgJiZcbiAgICAgIGEubGVuZ3RoID09PSBiLmxlbmd0aCAmJlxuICAgICAgYS5ldmVyeShmdW5jdGlvbihpdGVtLCBpbmRleCkge1xuICAgICAgICByZXR1cm4gdmFsdWVFcXVhbChpdGVtLCBiW2luZGV4XSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBpZiAodHlwZW9mIGEgPT09ICdvYmplY3QnIHx8IHR5cGVvZiBiID09PSAnb2JqZWN0Jykge1xuICAgIHZhciBhVmFsdWUgPSB2YWx1ZU9mKGEpO1xuICAgIHZhciBiVmFsdWUgPSB2YWx1ZU9mKGIpO1xuXG4gICAgaWYgKGFWYWx1ZSAhPT0gYSB8fCBiVmFsdWUgIT09IGIpIHJldHVybiB2YWx1ZUVxdWFsKGFWYWx1ZSwgYlZhbHVlKTtcblxuICAgIHJldHVybiBPYmplY3Qua2V5cyhPYmplY3QuYXNzaWduKHt9LCBhLCBiKSkuZXZlcnkoZnVuY3Rpb24oa2V5KSB7XG4gICAgICByZXR1cm4gdmFsdWVFcXVhbChhW2tleV0sIGJba2V5XSk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHZhbHVlRXF1YWw7XG4iLCJpbXBvcnQgX2V4dGVuZHMgZnJvbSAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kcyc7XG5pbXBvcnQgcmVzb2x2ZVBhdGhuYW1lIGZyb20gJ3Jlc29sdmUtcGF0aG5hbWUnO1xuaW1wb3J0IHZhbHVlRXF1YWwgZnJvbSAndmFsdWUtZXF1YWwnO1xuaW1wb3J0IHdhcm5pbmcgZnJvbSAndGlueS13YXJuaW5nJztcbmltcG9ydCBpbnZhcmlhbnQgZnJvbSAndGlueS1pbnZhcmlhbnQnO1xuXG5mdW5jdGlvbiBhZGRMZWFkaW5nU2xhc2gocGF0aCkge1xuICByZXR1cm4gcGF0aC5jaGFyQXQoMCkgPT09ICcvJyA/IHBhdGggOiAnLycgKyBwYXRoO1xufVxuZnVuY3Rpb24gc3RyaXBMZWFkaW5nU2xhc2gocGF0aCkge1xuICByZXR1cm4gcGF0aC5jaGFyQXQoMCkgPT09ICcvJyA/IHBhdGguc3Vic3RyKDEpIDogcGF0aDtcbn1cbmZ1bmN0aW9uIGhhc0Jhc2VuYW1lKHBhdGgsIHByZWZpeCkge1xuICByZXR1cm4gcGF0aC50b0xvd2VyQ2FzZSgpLmluZGV4T2YocHJlZml4LnRvTG93ZXJDYXNlKCkpID09PSAwICYmICcvPyMnLmluZGV4T2YocGF0aC5jaGFyQXQocHJlZml4Lmxlbmd0aCkpICE9PSAtMTtcbn1cbmZ1bmN0aW9uIHN0cmlwQmFzZW5hbWUocGF0aCwgcHJlZml4KSB7XG4gIHJldHVybiBoYXNCYXNlbmFtZShwYXRoLCBwcmVmaXgpID8gcGF0aC5zdWJzdHIocHJlZml4Lmxlbmd0aCkgOiBwYXRoO1xufVxuZnVuY3Rpb24gc3RyaXBUcmFpbGluZ1NsYXNoKHBhdGgpIHtcbiAgcmV0dXJuIHBhdGguY2hhckF0KHBhdGgubGVuZ3RoIC0gMSkgPT09ICcvJyA/IHBhdGguc2xpY2UoMCwgLTEpIDogcGF0aDtcbn1cbmZ1bmN0aW9uIHBhcnNlUGF0aChwYXRoKSB7XG4gIHZhciBwYXRobmFtZSA9IHBhdGggfHwgJy8nO1xuICB2YXIgc2VhcmNoID0gJyc7XG4gIHZhciBoYXNoID0gJyc7XG4gIHZhciBoYXNoSW5kZXggPSBwYXRobmFtZS5pbmRleE9mKCcjJyk7XG5cbiAgaWYgKGhhc2hJbmRleCAhPT0gLTEpIHtcbiAgICBoYXNoID0gcGF0aG5hbWUuc3Vic3RyKGhhc2hJbmRleCk7XG4gICAgcGF0aG5hbWUgPSBwYXRobmFtZS5zdWJzdHIoMCwgaGFzaEluZGV4KTtcbiAgfVxuXG4gIHZhciBzZWFyY2hJbmRleCA9IHBhdGhuYW1lLmluZGV4T2YoJz8nKTtcblxuICBpZiAoc2VhcmNoSW5kZXggIT09IC0xKSB7XG4gICAgc2VhcmNoID0gcGF0aG5hbWUuc3Vic3RyKHNlYXJjaEluZGV4KTtcbiAgICBwYXRobmFtZSA9IHBhdGhuYW1lLnN1YnN0cigwLCBzZWFyY2hJbmRleCk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHBhdGhuYW1lOiBwYXRobmFtZSxcbiAgICBzZWFyY2g6IHNlYXJjaCA9PT0gJz8nID8gJycgOiBzZWFyY2gsXG4gICAgaGFzaDogaGFzaCA9PT0gJyMnID8gJycgOiBoYXNoXG4gIH07XG59XG5mdW5jdGlvbiBjcmVhdGVQYXRoKGxvY2F0aW9uKSB7XG4gIHZhciBwYXRobmFtZSA9IGxvY2F0aW9uLnBhdGhuYW1lLFxuICAgICAgc2VhcmNoID0gbG9jYXRpb24uc2VhcmNoLFxuICAgICAgaGFzaCA9IGxvY2F0aW9uLmhhc2g7XG4gIHZhciBwYXRoID0gcGF0aG5hbWUgfHwgJy8nO1xuICBpZiAoc2VhcmNoICYmIHNlYXJjaCAhPT0gJz8nKSBwYXRoICs9IHNlYXJjaC5jaGFyQXQoMCkgPT09ICc/JyA/IHNlYXJjaCA6IFwiP1wiICsgc2VhcmNoO1xuICBpZiAoaGFzaCAmJiBoYXNoICE9PSAnIycpIHBhdGggKz0gaGFzaC5jaGFyQXQoMCkgPT09ICcjJyA/IGhhc2ggOiBcIiNcIiArIGhhc2g7XG4gIHJldHVybiBwYXRoO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVMb2NhdGlvbihwYXRoLCBzdGF0ZSwga2V5LCBjdXJyZW50TG9jYXRpb24pIHtcbiAgdmFyIGxvY2F0aW9uO1xuXG4gIGlmICh0eXBlb2YgcGF0aCA9PT0gJ3N0cmluZycpIHtcbiAgICAvLyBUd28tYXJnIGZvcm06IHB1c2gocGF0aCwgc3RhdGUpXG4gICAgbG9jYXRpb24gPSBwYXJzZVBhdGgocGF0aCk7XG4gICAgbG9jYXRpb24uc3RhdGUgPSBzdGF0ZTtcbiAgfSBlbHNlIHtcbiAgICAvLyBPbmUtYXJnIGZvcm06IHB1c2gobG9jYXRpb24pXG4gICAgbG9jYXRpb24gPSBfZXh0ZW5kcyh7fSwgcGF0aCk7XG4gICAgaWYgKGxvY2F0aW9uLnBhdGhuYW1lID09PSB1bmRlZmluZWQpIGxvY2F0aW9uLnBhdGhuYW1lID0gJyc7XG5cbiAgICBpZiAobG9jYXRpb24uc2VhcmNoKSB7XG4gICAgICBpZiAobG9jYXRpb24uc2VhcmNoLmNoYXJBdCgwKSAhPT0gJz8nKSBsb2NhdGlvbi5zZWFyY2ggPSAnPycgKyBsb2NhdGlvbi5zZWFyY2g7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvY2F0aW9uLnNlYXJjaCA9ICcnO1xuICAgIH1cblxuICAgIGlmIChsb2NhdGlvbi5oYXNoKSB7XG4gICAgICBpZiAobG9jYXRpb24uaGFzaC5jaGFyQXQoMCkgIT09ICcjJykgbG9jYXRpb24uaGFzaCA9ICcjJyArIGxvY2F0aW9uLmhhc2g7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvY2F0aW9uLmhhc2ggPSAnJztcbiAgICB9XG5cbiAgICBpZiAoc3RhdGUgIT09IHVuZGVmaW5lZCAmJiBsb2NhdGlvbi5zdGF0ZSA9PT0gdW5kZWZpbmVkKSBsb2NhdGlvbi5zdGF0ZSA9IHN0YXRlO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBsb2NhdGlvbi5wYXRobmFtZSA9IGRlY29kZVVSSShsb2NhdGlvbi5wYXRobmFtZSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoZSBpbnN0YW5jZW9mIFVSSUVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgVVJJRXJyb3IoJ1BhdGhuYW1lIFwiJyArIGxvY2F0aW9uLnBhdGhuYW1lICsgJ1wiIGNvdWxkIG5vdCBiZSBkZWNvZGVkLiAnICsgJ1RoaXMgaXMgbGlrZWx5IGNhdXNlZCBieSBhbiBpbnZhbGlkIHBlcmNlbnQtZW5jb2RpbmcuJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG5cbiAgaWYgKGtleSkgbG9jYXRpb24ua2V5ID0ga2V5O1xuXG4gIGlmIChjdXJyZW50TG9jYXRpb24pIHtcbiAgICAvLyBSZXNvbHZlIGluY29tcGxldGUvcmVsYXRpdmUgcGF0aG5hbWUgcmVsYXRpdmUgdG8gY3VycmVudCBsb2NhdGlvbi5cbiAgICBpZiAoIWxvY2F0aW9uLnBhdGhuYW1lKSB7XG4gICAgICBsb2NhdGlvbi5wYXRobmFtZSA9IGN1cnJlbnRMb2NhdGlvbi5wYXRobmFtZTtcbiAgICB9IGVsc2UgaWYgKGxvY2F0aW9uLnBhdGhuYW1lLmNoYXJBdCgwKSAhPT0gJy8nKSB7XG4gICAgICBsb2NhdGlvbi5wYXRobmFtZSA9IHJlc29sdmVQYXRobmFtZShsb2NhdGlvbi5wYXRobmFtZSwgY3VycmVudExvY2F0aW9uLnBhdGhuYW1lKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gV2hlbiB0aGVyZSBpcyBubyBwcmlvciBsb2NhdGlvbiBhbmQgcGF0aG5hbWUgaXMgZW1wdHksIHNldCBpdCB0byAvXG4gICAgaWYgKCFsb2NhdGlvbi5wYXRobmFtZSkge1xuICAgICAgbG9jYXRpb24ucGF0aG5hbWUgPSAnLyc7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGxvY2F0aW9uO1xufVxuZnVuY3Rpb24gbG9jYXRpb25zQXJlRXF1YWwoYSwgYikge1xuICByZXR1cm4gYS5wYXRobmFtZSA9PT0gYi5wYXRobmFtZSAmJiBhLnNlYXJjaCA9PT0gYi5zZWFyY2ggJiYgYS5oYXNoID09PSBiLmhhc2ggJiYgYS5rZXkgPT09IGIua2V5ICYmIHZhbHVlRXF1YWwoYS5zdGF0ZSwgYi5zdGF0ZSk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVRyYW5zaXRpb25NYW5hZ2VyKCkge1xuICB2YXIgcHJvbXB0ID0gbnVsbDtcblxuICBmdW5jdGlvbiBzZXRQcm9tcHQobmV4dFByb21wdCkge1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IHdhcm5pbmcocHJvbXB0ID09IG51bGwsICdBIGhpc3Rvcnkgc3VwcG9ydHMgb25seSBvbmUgcHJvbXB0IGF0IGEgdGltZScpIDogdm9pZCAwO1xuICAgIHByb21wdCA9IG5leHRQcm9tcHQ7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChwcm9tcHQgPT09IG5leHRQcm9tcHQpIHByb21wdCA9IG51bGw7XG4gICAgfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNvbmZpcm1UcmFuc2l0aW9uVG8obG9jYXRpb24sIGFjdGlvbiwgZ2V0VXNlckNvbmZpcm1hdGlvbiwgY2FsbGJhY2spIHtcbiAgICAvLyBUT0RPOiBJZiBhbm90aGVyIHRyYW5zaXRpb24gc3RhcnRzIHdoaWxlIHdlJ3JlIHN0aWxsIGNvbmZpcm1pbmdcbiAgICAvLyB0aGUgcHJldmlvdXMgb25lLCB3ZSBtYXkgZW5kIHVwIGluIGEgd2VpcmQgc3RhdGUuIEZpZ3VyZSBvdXQgdGhlXG4gICAgLy8gYmVzdCB3YXkgdG8gaGFuZGxlIHRoaXMuXG4gICAgaWYgKHByb21wdCAhPSBudWxsKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gdHlwZW9mIHByb21wdCA9PT0gJ2Z1bmN0aW9uJyA/IHByb21wdChsb2NhdGlvbiwgYWN0aW9uKSA6IHByb21wdDtcblxuICAgICAgaWYgKHR5cGVvZiByZXN1bHQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGlmICh0eXBlb2YgZ2V0VXNlckNvbmZpcm1hdGlvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIGdldFVzZXJDb25maXJtYXRpb24ocmVzdWx0LCBjYWxsYmFjayk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gd2FybmluZyhmYWxzZSwgJ0EgaGlzdG9yeSBuZWVkcyBhIGdldFVzZXJDb25maXJtYXRpb24gZnVuY3Rpb24gaW4gb3JkZXIgdG8gdXNlIGEgcHJvbXB0IG1lc3NhZ2UnKSA6IHZvaWQgMDtcbiAgICAgICAgICBjYWxsYmFjayh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gUmV0dXJuIGZhbHNlIGZyb20gYSB0cmFuc2l0aW9uIGhvb2sgdG8gY2FuY2VsIHRoZSB0cmFuc2l0aW9uLlxuICAgICAgICBjYWxsYmFjayhyZXN1bHQgIT09IGZhbHNlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY2FsbGJhY2sodHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgdmFyIGxpc3RlbmVycyA9IFtdO1xuXG4gIGZ1bmN0aW9uIGFwcGVuZExpc3RlbmVyKGZuKSB7XG4gICAgdmFyIGlzQWN0aXZlID0gdHJ1ZTtcblxuICAgIGZ1bmN0aW9uIGxpc3RlbmVyKCkge1xuICAgICAgaWYgKGlzQWN0aXZlKSBmbi5hcHBseSh2b2lkIDAsIGFyZ3VtZW50cyk7XG4gICAgfVxuXG4gICAgbGlzdGVuZXJzLnB1c2gobGlzdGVuZXIpO1xuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICBpc0FjdGl2ZSA9IGZhbHNlO1xuICAgICAgbGlzdGVuZXJzID0gbGlzdGVuZXJzLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICByZXR1cm4gaXRlbSAhPT0gbGlzdGVuZXI7XG4gICAgICB9KTtcbiAgICB9O1xuICB9XG5cbiAgZnVuY3Rpb24gbm90aWZ5TGlzdGVuZXJzKCkge1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICBsaXN0ZW5lcnMuZm9yRWFjaChmdW5jdGlvbiAobGlzdGVuZXIpIHtcbiAgICAgIHJldHVybiBsaXN0ZW5lci5hcHBseSh2b2lkIDAsIGFyZ3MpO1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBzZXRQcm9tcHQ6IHNldFByb21wdCxcbiAgICBjb25maXJtVHJhbnNpdGlvblRvOiBjb25maXJtVHJhbnNpdGlvblRvLFxuICAgIGFwcGVuZExpc3RlbmVyOiBhcHBlbmRMaXN0ZW5lcixcbiAgICBub3RpZnlMaXN0ZW5lcnM6IG5vdGlmeUxpc3RlbmVyc1xuICB9O1xufVxuXG52YXIgY2FuVXNlRE9NID0gISEodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmRvY3VtZW50ICYmIHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KTtcbmZ1bmN0aW9uIGdldENvbmZpcm1hdGlvbihtZXNzYWdlLCBjYWxsYmFjaykge1xuICBjYWxsYmFjayh3aW5kb3cuY29uZmlybShtZXNzYWdlKSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tYWxlcnRcbn1cbi8qKlxuICogUmV0dXJucyB0cnVlIGlmIHRoZSBIVE1MNSBoaXN0b3J5IEFQSSBpcyBzdXBwb3J0ZWQuIFRha2VuIGZyb20gTW9kZXJuaXpyLlxuICpcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9Nb2Rlcm5penIvTW9kZXJuaXpyL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9Nb2Rlcm5penIvTW9kZXJuaXpyL2Jsb2IvbWFzdGVyL2ZlYXR1cmUtZGV0ZWN0cy9oaXN0b3J5LmpzXG4gKiBjaGFuZ2VkIHRvIGF2b2lkIGZhbHNlIG5lZ2F0aXZlcyBmb3IgV2luZG93cyBQaG9uZXM6IGh0dHBzOi8vZ2l0aHViLmNvbS9yZWFjdGpzL3JlYWN0LXJvdXRlci9pc3N1ZXMvNTg2XG4gKi9cblxuZnVuY3Rpb24gc3VwcG9ydHNIaXN0b3J5KCkge1xuICB2YXIgdWEgPSB3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudDtcbiAgaWYgKCh1YS5pbmRleE9mKCdBbmRyb2lkIDIuJykgIT09IC0xIHx8IHVhLmluZGV4T2YoJ0FuZHJvaWQgNC4wJykgIT09IC0xKSAmJiB1YS5pbmRleE9mKCdNb2JpbGUgU2FmYXJpJykgIT09IC0xICYmIHVhLmluZGV4T2YoJ0Nocm9tZScpID09PSAtMSAmJiB1YS5pbmRleE9mKCdXaW5kb3dzIFBob25lJykgPT09IC0xKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiB3aW5kb3cuaGlzdG9yeSAmJiAncHVzaFN0YXRlJyBpbiB3aW5kb3cuaGlzdG9yeTtcbn1cbi8qKlxuICogUmV0dXJucyB0cnVlIGlmIGJyb3dzZXIgZmlyZXMgcG9wc3RhdGUgb24gaGFzaCBjaGFuZ2UuXG4gKiBJRTEwIGFuZCBJRTExIGRvIG5vdC5cbiAqL1xuXG5mdW5jdGlvbiBzdXBwb3J0c1BvcFN0YXRlT25IYXNoQ2hhbmdlKCkge1xuICByZXR1cm4gd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignVHJpZGVudCcpID09PSAtMTtcbn1cbi8qKlxuICogUmV0dXJucyBmYWxzZSBpZiB1c2luZyBnbyhuKSB3aXRoIGhhc2ggaGlzdG9yeSBjYXVzZXMgYSBmdWxsIHBhZ2UgcmVsb2FkLlxuICovXG5cbmZ1bmN0aW9uIHN1cHBvcnRzR29XaXRob3V0UmVsb2FkVXNpbmdIYXNoKCkge1xuICByZXR1cm4gd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignRmlyZWZveCcpID09PSAtMTtcbn1cbi8qKlxuICogUmV0dXJucyB0cnVlIGlmIGEgZ2l2ZW4gcG9wc3RhdGUgZXZlbnQgaXMgYW4gZXh0cmFuZW91cyBXZWJLaXQgZXZlbnQuXG4gKiBBY2NvdW50cyBmb3IgdGhlIGZhY3QgdGhhdCBDaHJvbWUgb24gaU9TIGZpcmVzIHJlYWwgcG9wc3RhdGUgZXZlbnRzXG4gKiBjb250YWluaW5nIHVuZGVmaW5lZCBzdGF0ZSB3aGVuIHByZXNzaW5nIHRoZSBiYWNrIGJ1dHRvbi5cbiAqL1xuXG5mdW5jdGlvbiBpc0V4dHJhbmVvdXNQb3BzdGF0ZUV2ZW50KGV2ZW50KSB7XG4gIHJldHVybiBldmVudC5zdGF0ZSA9PT0gdW5kZWZpbmVkICYmIG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignQ3JpT1MnKSA9PT0gLTE7XG59XG5cbnZhciBQb3BTdGF0ZUV2ZW50ID0gJ3BvcHN0YXRlJztcbnZhciBIYXNoQ2hhbmdlRXZlbnQgPSAnaGFzaGNoYW5nZSc7XG5cbmZ1bmN0aW9uIGdldEhpc3RvcnlTdGF0ZSgpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gd2luZG93Lmhpc3Rvcnkuc3RhdGUgfHwge307XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAvLyBJRSAxMSBzb21ldGltZXMgdGhyb3dzIHdoZW4gYWNjZXNzaW5nIHdpbmRvdy5oaXN0b3J5LnN0YXRlXG4gICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9SZWFjdFRyYWluaW5nL2hpc3RvcnkvcHVsbC8yODlcbiAgICByZXR1cm4ge307XG4gIH1cbn1cbi8qKlxuICogQ3JlYXRlcyBhIGhpc3Rvcnkgb2JqZWN0IHRoYXQgdXNlcyB0aGUgSFRNTDUgaGlzdG9yeSBBUEkgaW5jbHVkaW5nXG4gKiBwdXNoU3RhdGUsIHJlcGxhY2VTdGF0ZSwgYW5kIHRoZSBwb3BzdGF0ZSBldmVudC5cbiAqL1xuXG5cbmZ1bmN0aW9uIGNyZWF0ZUJyb3dzZXJIaXN0b3J5KHByb3BzKSB7XG4gIGlmIChwcm9wcyA9PT0gdm9pZCAwKSB7XG4gICAgcHJvcHMgPSB7fTtcbiAgfVxuXG4gICFjYW5Vc2VET00gPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZmFsc2UsICdCcm93c2VyIGhpc3RvcnkgbmVlZHMgYSBET00nKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG4gIHZhciBnbG9iYWxIaXN0b3J5ID0gd2luZG93Lmhpc3Rvcnk7XG4gIHZhciBjYW5Vc2VIaXN0b3J5ID0gc3VwcG9ydHNIaXN0b3J5KCk7XG4gIHZhciBuZWVkc0hhc2hDaGFuZ2VMaXN0ZW5lciA9ICFzdXBwb3J0c1BvcFN0YXRlT25IYXNoQ2hhbmdlKCk7XG4gIHZhciBfcHJvcHMgPSBwcm9wcyxcbiAgICAgIF9wcm9wcyRmb3JjZVJlZnJlc2ggPSBfcHJvcHMuZm9yY2VSZWZyZXNoLFxuICAgICAgZm9yY2VSZWZyZXNoID0gX3Byb3BzJGZvcmNlUmVmcmVzaCA9PT0gdm9pZCAwID8gZmFsc2UgOiBfcHJvcHMkZm9yY2VSZWZyZXNoLFxuICAgICAgX3Byb3BzJGdldFVzZXJDb25maXJtID0gX3Byb3BzLmdldFVzZXJDb25maXJtYXRpb24sXG4gICAgICBnZXRVc2VyQ29uZmlybWF0aW9uID0gX3Byb3BzJGdldFVzZXJDb25maXJtID09PSB2b2lkIDAgPyBnZXRDb25maXJtYXRpb24gOiBfcHJvcHMkZ2V0VXNlckNvbmZpcm0sXG4gICAgICBfcHJvcHMka2V5TGVuZ3RoID0gX3Byb3BzLmtleUxlbmd0aCxcbiAgICAgIGtleUxlbmd0aCA9IF9wcm9wcyRrZXlMZW5ndGggPT09IHZvaWQgMCA/IDYgOiBfcHJvcHMka2V5TGVuZ3RoO1xuICB2YXIgYmFzZW5hbWUgPSBwcm9wcy5iYXNlbmFtZSA/IHN0cmlwVHJhaWxpbmdTbGFzaChhZGRMZWFkaW5nU2xhc2gocHJvcHMuYmFzZW5hbWUpKSA6ICcnO1xuXG4gIGZ1bmN0aW9uIGdldERPTUxvY2F0aW9uKGhpc3RvcnlTdGF0ZSkge1xuICAgIHZhciBfcmVmID0gaGlzdG9yeVN0YXRlIHx8IHt9LFxuICAgICAgICBrZXkgPSBfcmVmLmtleSxcbiAgICAgICAgc3RhdGUgPSBfcmVmLnN0YXRlO1xuXG4gICAgdmFyIF93aW5kb3ckbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb24sXG4gICAgICAgIHBhdGhuYW1lID0gX3dpbmRvdyRsb2NhdGlvbi5wYXRobmFtZSxcbiAgICAgICAgc2VhcmNoID0gX3dpbmRvdyRsb2NhdGlvbi5zZWFyY2gsXG4gICAgICAgIGhhc2ggPSBfd2luZG93JGxvY2F0aW9uLmhhc2g7XG4gICAgdmFyIHBhdGggPSBwYXRobmFtZSArIHNlYXJjaCArIGhhc2g7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gd2FybmluZyghYmFzZW5hbWUgfHwgaGFzQmFzZW5hbWUocGF0aCwgYmFzZW5hbWUpLCAnWW91IGFyZSBhdHRlbXB0aW5nIHRvIHVzZSBhIGJhc2VuYW1lIG9uIGEgcGFnZSB3aG9zZSBVUkwgcGF0aCBkb2VzIG5vdCBiZWdpbiAnICsgJ3dpdGggdGhlIGJhc2VuYW1lLiBFeHBlY3RlZCBwYXRoIFwiJyArIHBhdGggKyAnXCIgdG8gYmVnaW4gd2l0aCBcIicgKyBiYXNlbmFtZSArICdcIi4nKSA6IHZvaWQgMDtcbiAgICBpZiAoYmFzZW5hbWUpIHBhdGggPSBzdHJpcEJhc2VuYW1lKHBhdGgsIGJhc2VuYW1lKTtcbiAgICByZXR1cm4gY3JlYXRlTG9jYXRpb24ocGF0aCwgc3RhdGUsIGtleSk7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVLZXkoKSB7XG4gICAgcmV0dXJuIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyLCBrZXlMZW5ndGgpO1xuICB9XG5cbiAgdmFyIHRyYW5zaXRpb25NYW5hZ2VyID0gY3JlYXRlVHJhbnNpdGlvbk1hbmFnZXIoKTtcblxuICBmdW5jdGlvbiBzZXRTdGF0ZShuZXh0U3RhdGUpIHtcbiAgICBfZXh0ZW5kcyhoaXN0b3J5LCBuZXh0U3RhdGUpO1xuXG4gICAgaGlzdG9yeS5sZW5ndGggPSBnbG9iYWxIaXN0b3J5Lmxlbmd0aDtcbiAgICB0cmFuc2l0aW9uTWFuYWdlci5ub3RpZnlMaXN0ZW5lcnMoaGlzdG9yeS5sb2NhdGlvbiwgaGlzdG9yeS5hY3Rpb24pO1xuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlUG9wU3RhdGUoZXZlbnQpIHtcbiAgICAvLyBJZ25vcmUgZXh0cmFuZW91cyBwb3BzdGF0ZSBldmVudHMgaW4gV2ViS2l0LlxuICAgIGlmIChpc0V4dHJhbmVvdXNQb3BzdGF0ZUV2ZW50KGV2ZW50KSkgcmV0dXJuO1xuICAgIGhhbmRsZVBvcChnZXRET01Mb2NhdGlvbihldmVudC5zdGF0ZSkpO1xuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlSGFzaENoYW5nZSgpIHtcbiAgICBoYW5kbGVQb3AoZ2V0RE9NTG9jYXRpb24oZ2V0SGlzdG9yeVN0YXRlKCkpKTtcbiAgfVxuXG4gIHZhciBmb3JjZU5leHRQb3AgPSBmYWxzZTtcblxuICBmdW5jdGlvbiBoYW5kbGVQb3AobG9jYXRpb24pIHtcbiAgICBpZiAoZm9yY2VOZXh0UG9wKSB7XG4gICAgICBmb3JjZU5leHRQb3AgPSBmYWxzZTtcbiAgICAgIHNldFN0YXRlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBhY3Rpb24gPSAnUE9QJztcbiAgICAgIHRyYW5zaXRpb25NYW5hZ2VyLmNvbmZpcm1UcmFuc2l0aW9uVG8obG9jYXRpb24sIGFjdGlvbiwgZ2V0VXNlckNvbmZpcm1hdGlvbiwgZnVuY3Rpb24gKG9rKSB7XG4gICAgICAgIGlmIChvaykge1xuICAgICAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgICAgIGFjdGlvbjogYWN0aW9uLFxuICAgICAgICAgICAgbG9jYXRpb246IGxvY2F0aW9uXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV2ZXJ0UG9wKGxvY2F0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcmV2ZXJ0UG9wKGZyb21Mb2NhdGlvbikge1xuICAgIHZhciB0b0xvY2F0aW9uID0gaGlzdG9yeS5sb2NhdGlvbjsgLy8gVE9ETzogV2UgY291bGQgcHJvYmFibHkgbWFrZSB0aGlzIG1vcmUgcmVsaWFibGUgYnlcbiAgICAvLyBrZWVwaW5nIGEgbGlzdCBvZiBrZXlzIHdlJ3ZlIHNlZW4gaW4gc2Vzc2lvblN0b3JhZ2UuXG4gICAgLy8gSW5zdGVhZCwgd2UganVzdCBkZWZhdWx0IHRvIDAgZm9yIGtleXMgd2UgZG9uJ3Qga25vdy5cblxuICAgIHZhciB0b0luZGV4ID0gYWxsS2V5cy5pbmRleE9mKHRvTG9jYXRpb24ua2V5KTtcbiAgICBpZiAodG9JbmRleCA9PT0gLTEpIHRvSW5kZXggPSAwO1xuICAgIHZhciBmcm9tSW5kZXggPSBhbGxLZXlzLmluZGV4T2YoZnJvbUxvY2F0aW9uLmtleSk7XG4gICAgaWYgKGZyb21JbmRleCA9PT0gLTEpIGZyb21JbmRleCA9IDA7XG4gICAgdmFyIGRlbHRhID0gdG9JbmRleCAtIGZyb21JbmRleDtcblxuICAgIGlmIChkZWx0YSkge1xuICAgICAgZm9yY2VOZXh0UG9wID0gdHJ1ZTtcbiAgICAgIGdvKGRlbHRhKTtcbiAgICB9XG4gIH1cblxuICB2YXIgaW5pdGlhbExvY2F0aW9uID0gZ2V0RE9NTG9jYXRpb24oZ2V0SGlzdG9yeVN0YXRlKCkpO1xuICB2YXIgYWxsS2V5cyA9IFtpbml0aWFsTG9jYXRpb24ua2V5XTsgLy8gUHVibGljIGludGVyZmFjZVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZUhyZWYobG9jYXRpb24pIHtcbiAgICByZXR1cm4gYmFzZW5hbWUgKyBjcmVhdGVQYXRoKGxvY2F0aW9uKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHB1c2gocGF0aCwgc3RhdGUpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyB3YXJuaW5nKCEodHlwZW9mIHBhdGggPT09ICdvYmplY3QnICYmIHBhdGguc3RhdGUgIT09IHVuZGVmaW5lZCAmJiBzdGF0ZSAhPT0gdW5kZWZpbmVkKSwgJ1lvdSBzaG91bGQgYXZvaWQgcHJvdmlkaW5nIGEgMm5kIHN0YXRlIGFyZ3VtZW50IHRvIHB1c2ggd2hlbiB0aGUgMXN0ICcgKyAnYXJndW1lbnQgaXMgYSBsb2NhdGlvbi1saWtlIG9iamVjdCB0aGF0IGFscmVhZHkgaGFzIHN0YXRlOyBpdCBpcyBpZ25vcmVkJykgOiB2b2lkIDA7XG4gICAgdmFyIGFjdGlvbiA9ICdQVVNIJztcbiAgICB2YXIgbG9jYXRpb24gPSBjcmVhdGVMb2NhdGlvbihwYXRoLCBzdGF0ZSwgY3JlYXRlS2V5KCksIGhpc3RvcnkubG9jYXRpb24pO1xuICAgIHRyYW5zaXRpb25NYW5hZ2VyLmNvbmZpcm1UcmFuc2l0aW9uVG8obG9jYXRpb24sIGFjdGlvbiwgZ2V0VXNlckNvbmZpcm1hdGlvbiwgZnVuY3Rpb24gKG9rKSB7XG4gICAgICBpZiAoIW9rKSByZXR1cm47XG4gICAgICB2YXIgaHJlZiA9IGNyZWF0ZUhyZWYobG9jYXRpb24pO1xuICAgICAgdmFyIGtleSA9IGxvY2F0aW9uLmtleSxcbiAgICAgICAgICBzdGF0ZSA9IGxvY2F0aW9uLnN0YXRlO1xuXG4gICAgICBpZiAoY2FuVXNlSGlzdG9yeSkge1xuICAgICAgICBnbG9iYWxIaXN0b3J5LnB1c2hTdGF0ZSh7XG4gICAgICAgICAga2V5OiBrZXksXG4gICAgICAgICAgc3RhdGU6IHN0YXRlXG4gICAgICAgIH0sIG51bGwsIGhyZWYpO1xuXG4gICAgICAgIGlmIChmb3JjZVJlZnJlc2gpIHtcbiAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGhyZWY7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIHByZXZJbmRleCA9IGFsbEtleXMuaW5kZXhPZihoaXN0b3J5LmxvY2F0aW9uLmtleSk7XG4gICAgICAgICAgdmFyIG5leHRLZXlzID0gYWxsS2V5cy5zbGljZSgwLCBwcmV2SW5kZXggKyAxKTtcbiAgICAgICAgICBuZXh0S2V5cy5wdXNoKGxvY2F0aW9uLmtleSk7XG4gICAgICAgICAgYWxsS2V5cyA9IG5leHRLZXlzO1xuICAgICAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgICAgIGFjdGlvbjogYWN0aW9uLFxuICAgICAgICAgICAgbG9jYXRpb246IGxvY2F0aW9uXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IHdhcm5pbmcoc3RhdGUgPT09IHVuZGVmaW5lZCwgJ0Jyb3dzZXIgaGlzdG9yeSBjYW5ub3QgcHVzaCBzdGF0ZSBpbiBicm93c2VycyB0aGF0IGRvIG5vdCBzdXBwb3J0IEhUTUw1IGhpc3RvcnknKSA6IHZvaWQgMDtcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBocmVmO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVwbGFjZShwYXRoLCBzdGF0ZSkge1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IHdhcm5pbmcoISh0eXBlb2YgcGF0aCA9PT0gJ29iamVjdCcgJiYgcGF0aC5zdGF0ZSAhPT0gdW5kZWZpbmVkICYmIHN0YXRlICE9PSB1bmRlZmluZWQpLCAnWW91IHNob3VsZCBhdm9pZCBwcm92aWRpbmcgYSAybmQgc3RhdGUgYXJndW1lbnQgdG8gcmVwbGFjZSB3aGVuIHRoZSAxc3QgJyArICdhcmd1bWVudCBpcyBhIGxvY2F0aW9uLWxpa2Ugb2JqZWN0IHRoYXQgYWxyZWFkeSBoYXMgc3RhdGU7IGl0IGlzIGlnbm9yZWQnKSA6IHZvaWQgMDtcbiAgICB2YXIgYWN0aW9uID0gJ1JFUExBQ0UnO1xuICAgIHZhciBsb2NhdGlvbiA9IGNyZWF0ZUxvY2F0aW9uKHBhdGgsIHN0YXRlLCBjcmVhdGVLZXkoKSwgaGlzdG9yeS5sb2NhdGlvbik7XG4gICAgdHJhbnNpdGlvbk1hbmFnZXIuY29uZmlybVRyYW5zaXRpb25Ubyhsb2NhdGlvbiwgYWN0aW9uLCBnZXRVc2VyQ29uZmlybWF0aW9uLCBmdW5jdGlvbiAob2spIHtcbiAgICAgIGlmICghb2spIHJldHVybjtcbiAgICAgIHZhciBocmVmID0gY3JlYXRlSHJlZihsb2NhdGlvbik7XG4gICAgICB2YXIga2V5ID0gbG9jYXRpb24ua2V5LFxuICAgICAgICAgIHN0YXRlID0gbG9jYXRpb24uc3RhdGU7XG5cbiAgICAgIGlmIChjYW5Vc2VIaXN0b3J5KSB7XG4gICAgICAgIGdsb2JhbEhpc3RvcnkucmVwbGFjZVN0YXRlKHtcbiAgICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgICBzdGF0ZTogc3RhdGVcbiAgICAgICAgfSwgbnVsbCwgaHJlZik7XG5cbiAgICAgICAgaWYgKGZvcmNlUmVmcmVzaCkge1xuICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKGhyZWYpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhciBwcmV2SW5kZXggPSBhbGxLZXlzLmluZGV4T2YoaGlzdG9yeS5sb2NhdGlvbi5rZXkpO1xuICAgICAgICAgIGlmIChwcmV2SW5kZXggIT09IC0xKSBhbGxLZXlzW3ByZXZJbmRleF0gPSBsb2NhdGlvbi5rZXk7XG4gICAgICAgICAgc2V0U3RhdGUoe1xuICAgICAgICAgICAgYWN0aW9uOiBhY3Rpb24sXG4gICAgICAgICAgICBsb2NhdGlvbjogbG9jYXRpb25cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gd2FybmluZyhzdGF0ZSA9PT0gdW5kZWZpbmVkLCAnQnJvd3NlciBoaXN0b3J5IGNhbm5vdCByZXBsYWNlIHN0YXRlIGluIGJyb3dzZXJzIHRoYXQgZG8gbm90IHN1cHBvcnQgSFRNTDUgaGlzdG9yeScpIDogdm9pZCAwO1xuICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVwbGFjZShocmVmKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdvKG4pIHtcbiAgICBnbG9iYWxIaXN0b3J5LmdvKG4pO1xuICB9XG5cbiAgZnVuY3Rpb24gZ29CYWNrKCkge1xuICAgIGdvKC0xKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdvRm9yd2FyZCgpIHtcbiAgICBnbygxKTtcbiAgfVxuXG4gIHZhciBsaXN0ZW5lckNvdW50ID0gMDtcblxuICBmdW5jdGlvbiBjaGVja0RPTUxpc3RlbmVycyhkZWx0YSkge1xuICAgIGxpc3RlbmVyQ291bnQgKz0gZGVsdGE7XG5cbiAgICBpZiAobGlzdGVuZXJDb3VudCA9PT0gMSAmJiBkZWx0YSA9PT0gMSkge1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoUG9wU3RhdGVFdmVudCwgaGFuZGxlUG9wU3RhdGUpO1xuICAgICAgaWYgKG5lZWRzSGFzaENoYW5nZUxpc3RlbmVyKSB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihIYXNoQ2hhbmdlRXZlbnQsIGhhbmRsZUhhc2hDaGFuZ2UpO1xuICAgIH0gZWxzZSBpZiAobGlzdGVuZXJDb3VudCA9PT0gMCkge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoUG9wU3RhdGVFdmVudCwgaGFuZGxlUG9wU3RhdGUpO1xuICAgICAgaWYgKG5lZWRzSGFzaENoYW5nZUxpc3RlbmVyKSB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihIYXNoQ2hhbmdlRXZlbnQsIGhhbmRsZUhhc2hDaGFuZ2UpO1xuICAgIH1cbiAgfVxuXG4gIHZhciBpc0Jsb2NrZWQgPSBmYWxzZTtcblxuICBmdW5jdGlvbiBibG9jayhwcm9tcHQpIHtcbiAgICBpZiAocHJvbXB0ID09PSB2b2lkIDApIHtcbiAgICAgIHByb21wdCA9IGZhbHNlO1xuICAgIH1cblxuICAgIHZhciB1bmJsb2NrID0gdHJhbnNpdGlvbk1hbmFnZXIuc2V0UHJvbXB0KHByb21wdCk7XG5cbiAgICBpZiAoIWlzQmxvY2tlZCkge1xuICAgICAgY2hlY2tET01MaXN0ZW5lcnMoMSk7XG4gICAgICBpc0Jsb2NrZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoaXNCbG9ja2VkKSB7XG4gICAgICAgIGlzQmxvY2tlZCA9IGZhbHNlO1xuICAgICAgICBjaGVja0RPTUxpc3RlbmVycygtMSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB1bmJsb2NrKCk7XG4gICAgfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGxpc3RlbihsaXN0ZW5lcikge1xuICAgIHZhciB1bmxpc3RlbiA9IHRyYW5zaXRpb25NYW5hZ2VyLmFwcGVuZExpc3RlbmVyKGxpc3RlbmVyKTtcbiAgICBjaGVja0RPTUxpc3RlbmVycygxKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgY2hlY2tET01MaXN0ZW5lcnMoLTEpO1xuICAgICAgdW5saXN0ZW4oKTtcbiAgICB9O1xuICB9XG5cbiAgdmFyIGhpc3RvcnkgPSB7XG4gICAgbGVuZ3RoOiBnbG9iYWxIaXN0b3J5Lmxlbmd0aCxcbiAgICBhY3Rpb246ICdQT1AnLFxuICAgIGxvY2F0aW9uOiBpbml0aWFsTG9jYXRpb24sXG4gICAgY3JlYXRlSHJlZjogY3JlYXRlSHJlZixcbiAgICBwdXNoOiBwdXNoLFxuICAgIHJlcGxhY2U6IHJlcGxhY2UsXG4gICAgZ286IGdvLFxuICAgIGdvQmFjazogZ29CYWNrLFxuICAgIGdvRm9yd2FyZDogZ29Gb3J3YXJkLFxuICAgIGJsb2NrOiBibG9jayxcbiAgICBsaXN0ZW46IGxpc3RlblxuICB9O1xuICByZXR1cm4gaGlzdG9yeTtcbn1cblxudmFyIEhhc2hDaGFuZ2VFdmVudCQxID0gJ2hhc2hjaGFuZ2UnO1xudmFyIEhhc2hQYXRoQ29kZXJzID0ge1xuICBoYXNoYmFuZzoge1xuICAgIGVuY29kZVBhdGg6IGZ1bmN0aW9uIGVuY29kZVBhdGgocGF0aCkge1xuICAgICAgcmV0dXJuIHBhdGguY2hhckF0KDApID09PSAnIScgPyBwYXRoIDogJyEvJyArIHN0cmlwTGVhZGluZ1NsYXNoKHBhdGgpO1xuICAgIH0sXG4gICAgZGVjb2RlUGF0aDogZnVuY3Rpb24gZGVjb2RlUGF0aChwYXRoKSB7XG4gICAgICByZXR1cm4gcGF0aC5jaGFyQXQoMCkgPT09ICchJyA/IHBhdGguc3Vic3RyKDEpIDogcGF0aDtcbiAgICB9XG4gIH0sXG4gIG5vc2xhc2g6IHtcbiAgICBlbmNvZGVQYXRoOiBzdHJpcExlYWRpbmdTbGFzaCxcbiAgICBkZWNvZGVQYXRoOiBhZGRMZWFkaW5nU2xhc2hcbiAgfSxcbiAgc2xhc2g6IHtcbiAgICBlbmNvZGVQYXRoOiBhZGRMZWFkaW5nU2xhc2gsXG4gICAgZGVjb2RlUGF0aDogYWRkTGVhZGluZ1NsYXNoXG4gIH1cbn07XG5cbmZ1bmN0aW9uIHN0cmlwSGFzaCh1cmwpIHtcbiAgdmFyIGhhc2hJbmRleCA9IHVybC5pbmRleE9mKCcjJyk7XG4gIHJldHVybiBoYXNoSW5kZXggPT09IC0xID8gdXJsIDogdXJsLnNsaWNlKDAsIGhhc2hJbmRleCk7XG59XG5cbmZ1bmN0aW9uIGdldEhhc2hQYXRoKCkge1xuICAvLyBXZSBjYW4ndCB1c2Ugd2luZG93LmxvY2F0aW9uLmhhc2ggaGVyZSBiZWNhdXNlIGl0J3Mgbm90XG4gIC8vIGNvbnNpc3RlbnQgYWNyb3NzIGJyb3dzZXJzIC0gRmlyZWZveCB3aWxsIHByZS1kZWNvZGUgaXQhXG4gIHZhciBocmVmID0gd2luZG93LmxvY2F0aW9uLmhyZWY7XG4gIHZhciBoYXNoSW5kZXggPSBocmVmLmluZGV4T2YoJyMnKTtcbiAgcmV0dXJuIGhhc2hJbmRleCA9PT0gLTEgPyAnJyA6IGhyZWYuc3Vic3RyaW5nKGhhc2hJbmRleCArIDEpO1xufVxuXG5mdW5jdGlvbiBwdXNoSGFzaFBhdGgocGF0aCkge1xuICB3aW5kb3cubG9jYXRpb24uaGFzaCA9IHBhdGg7XG59XG5cbmZ1bmN0aW9uIHJlcGxhY2VIYXNoUGF0aChwYXRoKSB7XG4gIHdpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKHN0cmlwSGFzaCh3aW5kb3cubG9jYXRpb24uaHJlZikgKyAnIycgKyBwYXRoKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlSGFzaEhpc3RvcnkocHJvcHMpIHtcbiAgaWYgKHByb3BzID09PSB2b2lkIDApIHtcbiAgICBwcm9wcyA9IHt9O1xuICB9XG5cbiAgIWNhblVzZURPTSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChmYWxzZSwgJ0hhc2ggaGlzdG9yeSBuZWVkcyBhIERPTScpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcbiAgdmFyIGdsb2JhbEhpc3RvcnkgPSB3aW5kb3cuaGlzdG9yeTtcbiAgdmFyIGNhbkdvV2l0aG91dFJlbG9hZCA9IHN1cHBvcnRzR29XaXRob3V0UmVsb2FkVXNpbmdIYXNoKCk7XG4gIHZhciBfcHJvcHMgPSBwcm9wcyxcbiAgICAgIF9wcm9wcyRnZXRVc2VyQ29uZmlybSA9IF9wcm9wcy5nZXRVc2VyQ29uZmlybWF0aW9uLFxuICAgICAgZ2V0VXNlckNvbmZpcm1hdGlvbiA9IF9wcm9wcyRnZXRVc2VyQ29uZmlybSA9PT0gdm9pZCAwID8gZ2V0Q29uZmlybWF0aW9uIDogX3Byb3BzJGdldFVzZXJDb25maXJtLFxuICAgICAgX3Byb3BzJGhhc2hUeXBlID0gX3Byb3BzLmhhc2hUeXBlLFxuICAgICAgaGFzaFR5cGUgPSBfcHJvcHMkaGFzaFR5cGUgPT09IHZvaWQgMCA/ICdzbGFzaCcgOiBfcHJvcHMkaGFzaFR5cGU7XG4gIHZhciBiYXNlbmFtZSA9IHByb3BzLmJhc2VuYW1lID8gc3RyaXBUcmFpbGluZ1NsYXNoKGFkZExlYWRpbmdTbGFzaChwcm9wcy5iYXNlbmFtZSkpIDogJyc7XG4gIHZhciBfSGFzaFBhdGhDb2RlcnMkaGFzaFQgPSBIYXNoUGF0aENvZGVyc1toYXNoVHlwZV0sXG4gICAgICBlbmNvZGVQYXRoID0gX0hhc2hQYXRoQ29kZXJzJGhhc2hULmVuY29kZVBhdGgsXG4gICAgICBkZWNvZGVQYXRoID0gX0hhc2hQYXRoQ29kZXJzJGhhc2hULmRlY29kZVBhdGg7XG5cbiAgZnVuY3Rpb24gZ2V0RE9NTG9jYXRpb24oKSB7XG4gICAgdmFyIHBhdGggPSBkZWNvZGVQYXRoKGdldEhhc2hQYXRoKCkpO1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IHdhcm5pbmcoIWJhc2VuYW1lIHx8IGhhc0Jhc2VuYW1lKHBhdGgsIGJhc2VuYW1lKSwgJ1lvdSBhcmUgYXR0ZW1wdGluZyB0byB1c2UgYSBiYXNlbmFtZSBvbiBhIHBhZ2Ugd2hvc2UgVVJMIHBhdGggZG9lcyBub3QgYmVnaW4gJyArICd3aXRoIHRoZSBiYXNlbmFtZS4gRXhwZWN0ZWQgcGF0aCBcIicgKyBwYXRoICsgJ1wiIHRvIGJlZ2luIHdpdGggXCInICsgYmFzZW5hbWUgKyAnXCIuJykgOiB2b2lkIDA7XG4gICAgaWYgKGJhc2VuYW1lKSBwYXRoID0gc3RyaXBCYXNlbmFtZShwYXRoLCBiYXNlbmFtZSk7XG4gICAgcmV0dXJuIGNyZWF0ZUxvY2F0aW9uKHBhdGgpO1xuICB9XG5cbiAgdmFyIHRyYW5zaXRpb25NYW5hZ2VyID0gY3JlYXRlVHJhbnNpdGlvbk1hbmFnZXIoKTtcblxuICBmdW5jdGlvbiBzZXRTdGF0ZShuZXh0U3RhdGUpIHtcbiAgICBfZXh0ZW5kcyhoaXN0b3J5LCBuZXh0U3RhdGUpO1xuXG4gICAgaGlzdG9yeS5sZW5ndGggPSBnbG9iYWxIaXN0b3J5Lmxlbmd0aDtcbiAgICB0cmFuc2l0aW9uTWFuYWdlci5ub3RpZnlMaXN0ZW5lcnMoaGlzdG9yeS5sb2NhdGlvbiwgaGlzdG9yeS5hY3Rpb24pO1xuICB9XG5cbiAgdmFyIGZvcmNlTmV4dFBvcCA9IGZhbHNlO1xuICB2YXIgaWdub3JlUGF0aCA9IG51bGw7XG5cbiAgZnVuY3Rpb24gbG9jYXRpb25zQXJlRXF1YWwkJDEoYSwgYikge1xuICAgIHJldHVybiBhLnBhdGhuYW1lID09PSBiLnBhdGhuYW1lICYmIGEuc2VhcmNoID09PSBiLnNlYXJjaCAmJiBhLmhhc2ggPT09IGIuaGFzaDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGhhbmRsZUhhc2hDaGFuZ2UoKSB7XG4gICAgdmFyIHBhdGggPSBnZXRIYXNoUGF0aCgpO1xuICAgIHZhciBlbmNvZGVkUGF0aCA9IGVuY29kZVBhdGgocGF0aCk7XG5cbiAgICBpZiAocGF0aCAhPT0gZW5jb2RlZFBhdGgpIHtcbiAgICAgIC8vIEVuc3VyZSB3ZSBhbHdheXMgaGF2ZSBhIHByb3Blcmx5LWVuY29kZWQgaGFzaC5cbiAgICAgIHJlcGxhY2VIYXNoUGF0aChlbmNvZGVkUGF0aCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBsb2NhdGlvbiA9IGdldERPTUxvY2F0aW9uKCk7XG4gICAgICB2YXIgcHJldkxvY2F0aW9uID0gaGlzdG9yeS5sb2NhdGlvbjtcbiAgICAgIGlmICghZm9yY2VOZXh0UG9wICYmIGxvY2F0aW9uc0FyZUVxdWFsJCQxKHByZXZMb2NhdGlvbiwgbG9jYXRpb24pKSByZXR1cm47IC8vIEEgaGFzaGNoYW5nZSBkb2Vzbid0IGFsd2F5cyA9PSBsb2NhdGlvbiBjaGFuZ2UuXG5cbiAgICAgIGlmIChpZ25vcmVQYXRoID09PSBjcmVhdGVQYXRoKGxvY2F0aW9uKSkgcmV0dXJuOyAvLyBJZ25vcmUgdGhpcyBjaGFuZ2U7IHdlIGFscmVhZHkgc2V0U3RhdGUgaW4gcHVzaC9yZXBsYWNlLlxuXG4gICAgICBpZ25vcmVQYXRoID0gbnVsbDtcbiAgICAgIGhhbmRsZVBvcChsb2NhdGlvbik7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlUG9wKGxvY2F0aW9uKSB7XG4gICAgaWYgKGZvcmNlTmV4dFBvcCkge1xuICAgICAgZm9yY2VOZXh0UG9wID0gZmFsc2U7XG4gICAgICBzZXRTdGF0ZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgYWN0aW9uID0gJ1BPUCc7XG4gICAgICB0cmFuc2l0aW9uTWFuYWdlci5jb25maXJtVHJhbnNpdGlvblRvKGxvY2F0aW9uLCBhY3Rpb24sIGdldFVzZXJDb25maXJtYXRpb24sIGZ1bmN0aW9uIChvaykge1xuICAgICAgICBpZiAob2spIHtcbiAgICAgICAgICBzZXRTdGF0ZSh7XG4gICAgICAgICAgICBhY3Rpb246IGFjdGlvbixcbiAgICAgICAgICAgIGxvY2F0aW9uOiBsb2NhdGlvblxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldmVydFBvcChsb2NhdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHJldmVydFBvcChmcm9tTG9jYXRpb24pIHtcbiAgICB2YXIgdG9Mb2NhdGlvbiA9IGhpc3RvcnkubG9jYXRpb247IC8vIFRPRE86IFdlIGNvdWxkIHByb2JhYmx5IG1ha2UgdGhpcyBtb3JlIHJlbGlhYmxlIGJ5XG4gICAgLy8ga2VlcGluZyBhIGxpc3Qgb2YgcGF0aHMgd2UndmUgc2VlbiBpbiBzZXNzaW9uU3RvcmFnZS5cbiAgICAvLyBJbnN0ZWFkLCB3ZSBqdXN0IGRlZmF1bHQgdG8gMCBmb3IgcGF0aHMgd2UgZG9uJ3Qga25vdy5cblxuICAgIHZhciB0b0luZGV4ID0gYWxsUGF0aHMubGFzdEluZGV4T2YoY3JlYXRlUGF0aCh0b0xvY2F0aW9uKSk7XG4gICAgaWYgKHRvSW5kZXggPT09IC0xKSB0b0luZGV4ID0gMDtcbiAgICB2YXIgZnJvbUluZGV4ID0gYWxsUGF0aHMubGFzdEluZGV4T2YoY3JlYXRlUGF0aChmcm9tTG9jYXRpb24pKTtcbiAgICBpZiAoZnJvbUluZGV4ID09PSAtMSkgZnJvbUluZGV4ID0gMDtcbiAgICB2YXIgZGVsdGEgPSB0b0luZGV4IC0gZnJvbUluZGV4O1xuXG4gICAgaWYgKGRlbHRhKSB7XG4gICAgICBmb3JjZU5leHRQb3AgPSB0cnVlO1xuICAgICAgZ28oZGVsdGEpO1xuICAgIH1cbiAgfSAvLyBFbnN1cmUgdGhlIGhhc2ggaXMgZW5jb2RlZCBwcm9wZXJseSBiZWZvcmUgZG9pbmcgYW55dGhpbmcgZWxzZS5cblxuXG4gIHZhciBwYXRoID0gZ2V0SGFzaFBhdGgoKTtcbiAgdmFyIGVuY29kZWRQYXRoID0gZW5jb2RlUGF0aChwYXRoKTtcbiAgaWYgKHBhdGggIT09IGVuY29kZWRQYXRoKSByZXBsYWNlSGFzaFBhdGgoZW5jb2RlZFBhdGgpO1xuICB2YXIgaW5pdGlhbExvY2F0aW9uID0gZ2V0RE9NTG9jYXRpb24oKTtcbiAgdmFyIGFsbFBhdGhzID0gW2NyZWF0ZVBhdGgoaW5pdGlhbExvY2F0aW9uKV07IC8vIFB1YmxpYyBpbnRlcmZhY2VcblxuICBmdW5jdGlvbiBjcmVhdGVIcmVmKGxvY2F0aW9uKSB7XG4gICAgdmFyIGJhc2VUYWcgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdiYXNlJyk7XG4gICAgdmFyIGhyZWYgPSAnJztcblxuICAgIGlmIChiYXNlVGFnICYmIGJhc2VUYWcuZ2V0QXR0cmlidXRlKCdocmVmJykpIHtcbiAgICAgIGhyZWYgPSBzdHJpcEhhc2god2luZG93LmxvY2F0aW9uLmhyZWYpO1xuICAgIH1cblxuICAgIHJldHVybiBocmVmICsgJyMnICsgZW5jb2RlUGF0aChiYXNlbmFtZSArIGNyZWF0ZVBhdGgobG9jYXRpb24pKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHB1c2gocGF0aCwgc3RhdGUpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyB3YXJuaW5nKHN0YXRlID09PSB1bmRlZmluZWQsICdIYXNoIGhpc3RvcnkgY2Fubm90IHB1c2ggc3RhdGU7IGl0IGlzIGlnbm9yZWQnKSA6IHZvaWQgMDtcbiAgICB2YXIgYWN0aW9uID0gJ1BVU0gnO1xuICAgIHZhciBsb2NhdGlvbiA9IGNyZWF0ZUxvY2F0aW9uKHBhdGgsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBoaXN0b3J5LmxvY2F0aW9uKTtcbiAgICB0cmFuc2l0aW9uTWFuYWdlci5jb25maXJtVHJhbnNpdGlvblRvKGxvY2F0aW9uLCBhY3Rpb24sIGdldFVzZXJDb25maXJtYXRpb24sIGZ1bmN0aW9uIChvaykge1xuICAgICAgaWYgKCFvaykgcmV0dXJuO1xuICAgICAgdmFyIHBhdGggPSBjcmVhdGVQYXRoKGxvY2F0aW9uKTtcbiAgICAgIHZhciBlbmNvZGVkUGF0aCA9IGVuY29kZVBhdGgoYmFzZW5hbWUgKyBwYXRoKTtcbiAgICAgIHZhciBoYXNoQ2hhbmdlZCA9IGdldEhhc2hQYXRoKCkgIT09IGVuY29kZWRQYXRoO1xuXG4gICAgICBpZiAoaGFzaENoYW5nZWQpIHtcbiAgICAgICAgLy8gV2UgY2Fubm90IHRlbGwgaWYgYSBoYXNoY2hhbmdlIHdhcyBjYXVzZWQgYnkgYSBQVVNILCBzbyB3ZSdkXG4gICAgICAgIC8vIHJhdGhlciBzZXRTdGF0ZSBoZXJlIGFuZCBpZ25vcmUgdGhlIGhhc2hjaGFuZ2UuIFRoZSBjYXZlYXQgaGVyZVxuICAgICAgICAvLyBpcyB0aGF0IG90aGVyIGhhc2ggaGlzdG9yaWVzIGluIHRoZSBwYWdlIHdpbGwgY29uc2lkZXIgaXQgYSBQT1AuXG4gICAgICAgIGlnbm9yZVBhdGggPSBwYXRoO1xuICAgICAgICBwdXNoSGFzaFBhdGgoZW5jb2RlZFBhdGgpO1xuICAgICAgICB2YXIgcHJldkluZGV4ID0gYWxsUGF0aHMubGFzdEluZGV4T2YoY3JlYXRlUGF0aChoaXN0b3J5LmxvY2F0aW9uKSk7XG4gICAgICAgIHZhciBuZXh0UGF0aHMgPSBhbGxQYXRocy5zbGljZSgwLCBwcmV2SW5kZXggKyAxKTtcbiAgICAgICAgbmV4dFBhdGhzLnB1c2gocGF0aCk7XG4gICAgICAgIGFsbFBhdGhzID0gbmV4dFBhdGhzO1xuICAgICAgICBzZXRTdGF0ZSh7XG4gICAgICAgICAgYWN0aW9uOiBhY3Rpb24sXG4gICAgICAgICAgbG9jYXRpb246IGxvY2F0aW9uXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gd2FybmluZyhmYWxzZSwgJ0hhc2ggaGlzdG9yeSBjYW5ub3QgUFVTSCB0aGUgc2FtZSBwYXRoOyBhIG5ldyBlbnRyeSB3aWxsIG5vdCBiZSBhZGRlZCB0byB0aGUgaGlzdG9yeSBzdGFjaycpIDogdm9pZCAwO1xuICAgICAgICBzZXRTdGF0ZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVwbGFjZShwYXRoLCBzdGF0ZSkge1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IHdhcm5pbmcoc3RhdGUgPT09IHVuZGVmaW5lZCwgJ0hhc2ggaGlzdG9yeSBjYW5ub3QgcmVwbGFjZSBzdGF0ZTsgaXQgaXMgaWdub3JlZCcpIDogdm9pZCAwO1xuICAgIHZhciBhY3Rpb24gPSAnUkVQTEFDRSc7XG4gICAgdmFyIGxvY2F0aW9uID0gY3JlYXRlTG9jYXRpb24ocGF0aCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGhpc3RvcnkubG9jYXRpb24pO1xuICAgIHRyYW5zaXRpb25NYW5hZ2VyLmNvbmZpcm1UcmFuc2l0aW9uVG8obG9jYXRpb24sIGFjdGlvbiwgZ2V0VXNlckNvbmZpcm1hdGlvbiwgZnVuY3Rpb24gKG9rKSB7XG4gICAgICBpZiAoIW9rKSByZXR1cm47XG4gICAgICB2YXIgcGF0aCA9IGNyZWF0ZVBhdGgobG9jYXRpb24pO1xuICAgICAgdmFyIGVuY29kZWRQYXRoID0gZW5jb2RlUGF0aChiYXNlbmFtZSArIHBhdGgpO1xuICAgICAgdmFyIGhhc2hDaGFuZ2VkID0gZ2V0SGFzaFBhdGgoKSAhPT0gZW5jb2RlZFBhdGg7XG5cbiAgICAgIGlmIChoYXNoQ2hhbmdlZCkge1xuICAgICAgICAvLyBXZSBjYW5ub3QgdGVsbCBpZiBhIGhhc2hjaGFuZ2Ugd2FzIGNhdXNlZCBieSBhIFJFUExBQ0UsIHNvIHdlJ2RcbiAgICAgICAgLy8gcmF0aGVyIHNldFN0YXRlIGhlcmUgYW5kIGlnbm9yZSB0aGUgaGFzaGNoYW5nZS4gVGhlIGNhdmVhdCBoZXJlXG4gICAgICAgIC8vIGlzIHRoYXQgb3RoZXIgaGFzaCBoaXN0b3JpZXMgaW4gdGhlIHBhZ2Ugd2lsbCBjb25zaWRlciBpdCBhIFBPUC5cbiAgICAgICAgaWdub3JlUGF0aCA9IHBhdGg7XG4gICAgICAgIHJlcGxhY2VIYXNoUGF0aChlbmNvZGVkUGF0aCk7XG4gICAgICB9XG5cbiAgICAgIHZhciBwcmV2SW5kZXggPSBhbGxQYXRocy5pbmRleE9mKGNyZWF0ZVBhdGgoaGlzdG9yeS5sb2NhdGlvbikpO1xuICAgICAgaWYgKHByZXZJbmRleCAhPT0gLTEpIGFsbFBhdGhzW3ByZXZJbmRleF0gPSBwYXRoO1xuICAgICAgc2V0U3RhdGUoe1xuICAgICAgICBhY3Rpb246IGFjdGlvbixcbiAgICAgICAgbG9jYXRpb246IGxvY2F0aW9uXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdvKG4pIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyB3YXJuaW5nKGNhbkdvV2l0aG91dFJlbG9hZCwgJ0hhc2ggaGlzdG9yeSBnbyhuKSBjYXVzZXMgYSBmdWxsIHBhZ2UgcmVsb2FkIGluIHRoaXMgYnJvd3NlcicpIDogdm9pZCAwO1xuICAgIGdsb2JhbEhpc3RvcnkuZ28obik7XG4gIH1cblxuICBmdW5jdGlvbiBnb0JhY2soKSB7XG4gICAgZ28oLTEpO1xuICB9XG5cbiAgZnVuY3Rpb24gZ29Gb3J3YXJkKCkge1xuICAgIGdvKDEpO1xuICB9XG5cbiAgdmFyIGxpc3RlbmVyQ291bnQgPSAwO1xuXG4gIGZ1bmN0aW9uIGNoZWNrRE9NTGlzdGVuZXJzKGRlbHRhKSB7XG4gICAgbGlzdGVuZXJDb3VudCArPSBkZWx0YTtcblxuICAgIGlmIChsaXN0ZW5lckNvdW50ID09PSAxICYmIGRlbHRhID09PSAxKSB7XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihIYXNoQ2hhbmdlRXZlbnQkMSwgaGFuZGxlSGFzaENoYW5nZSk7XG4gICAgfSBlbHNlIGlmIChsaXN0ZW5lckNvdW50ID09PSAwKSB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihIYXNoQ2hhbmdlRXZlbnQkMSwgaGFuZGxlSGFzaENoYW5nZSk7XG4gICAgfVxuICB9XG5cbiAgdmFyIGlzQmxvY2tlZCA9IGZhbHNlO1xuXG4gIGZ1bmN0aW9uIGJsb2NrKHByb21wdCkge1xuICAgIGlmIChwcm9tcHQgPT09IHZvaWQgMCkge1xuICAgICAgcHJvbXB0ID0gZmFsc2U7XG4gICAgfVxuXG4gICAgdmFyIHVuYmxvY2sgPSB0cmFuc2l0aW9uTWFuYWdlci5zZXRQcm9tcHQocHJvbXB0KTtcblxuICAgIGlmICghaXNCbG9ja2VkKSB7XG4gICAgICBjaGVja0RPTUxpc3RlbmVycygxKTtcbiAgICAgIGlzQmxvY2tlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChpc0Jsb2NrZWQpIHtcbiAgICAgICAgaXNCbG9ja2VkID0gZmFsc2U7XG4gICAgICAgIGNoZWNrRE9NTGlzdGVuZXJzKC0xKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHVuYmxvY2soKTtcbiAgICB9O1xuICB9XG5cbiAgZnVuY3Rpb24gbGlzdGVuKGxpc3RlbmVyKSB7XG4gICAgdmFyIHVubGlzdGVuID0gdHJhbnNpdGlvbk1hbmFnZXIuYXBwZW5kTGlzdGVuZXIobGlzdGVuZXIpO1xuICAgIGNoZWNrRE9NTGlzdGVuZXJzKDEpO1xuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICBjaGVja0RPTUxpc3RlbmVycygtMSk7XG4gICAgICB1bmxpc3RlbigpO1xuICAgIH07XG4gIH1cblxuICB2YXIgaGlzdG9yeSA9IHtcbiAgICBsZW5ndGg6IGdsb2JhbEhpc3RvcnkubGVuZ3RoLFxuICAgIGFjdGlvbjogJ1BPUCcsXG4gICAgbG9jYXRpb246IGluaXRpYWxMb2NhdGlvbixcbiAgICBjcmVhdGVIcmVmOiBjcmVhdGVIcmVmLFxuICAgIHB1c2g6IHB1c2gsXG4gICAgcmVwbGFjZTogcmVwbGFjZSxcbiAgICBnbzogZ28sXG4gICAgZ29CYWNrOiBnb0JhY2ssXG4gICAgZ29Gb3J3YXJkOiBnb0ZvcndhcmQsXG4gICAgYmxvY2s6IGJsb2NrLFxuICAgIGxpc3RlbjogbGlzdGVuXG4gIH07XG4gIHJldHVybiBoaXN0b3J5O1xufVxuXG5mdW5jdGlvbiBjbGFtcChuLCBsb3dlckJvdW5kLCB1cHBlckJvdW5kKSB7XG4gIHJldHVybiBNYXRoLm1pbihNYXRoLm1heChuLCBsb3dlckJvdW5kKSwgdXBwZXJCb3VuZCk7XG59XG4vKipcbiAqIENyZWF0ZXMgYSBoaXN0b3J5IG9iamVjdCB0aGF0IHN0b3JlcyBsb2NhdGlvbnMgaW4gbWVtb3J5LlxuICovXG5cblxuZnVuY3Rpb24gY3JlYXRlTWVtb3J5SGlzdG9yeShwcm9wcykge1xuICBpZiAocHJvcHMgPT09IHZvaWQgMCkge1xuICAgIHByb3BzID0ge307XG4gIH1cblxuICB2YXIgX3Byb3BzID0gcHJvcHMsXG4gICAgICBnZXRVc2VyQ29uZmlybWF0aW9uID0gX3Byb3BzLmdldFVzZXJDb25maXJtYXRpb24sXG4gICAgICBfcHJvcHMkaW5pdGlhbEVudHJpZXMgPSBfcHJvcHMuaW5pdGlhbEVudHJpZXMsXG4gICAgICBpbml0aWFsRW50cmllcyA9IF9wcm9wcyRpbml0aWFsRW50cmllcyA9PT0gdm9pZCAwID8gWycvJ10gOiBfcHJvcHMkaW5pdGlhbEVudHJpZXMsXG4gICAgICBfcHJvcHMkaW5pdGlhbEluZGV4ID0gX3Byb3BzLmluaXRpYWxJbmRleCxcbiAgICAgIGluaXRpYWxJbmRleCA9IF9wcm9wcyRpbml0aWFsSW5kZXggPT09IHZvaWQgMCA/IDAgOiBfcHJvcHMkaW5pdGlhbEluZGV4LFxuICAgICAgX3Byb3BzJGtleUxlbmd0aCA9IF9wcm9wcy5rZXlMZW5ndGgsXG4gICAgICBrZXlMZW5ndGggPSBfcHJvcHMka2V5TGVuZ3RoID09PSB2b2lkIDAgPyA2IDogX3Byb3BzJGtleUxlbmd0aDtcbiAgdmFyIHRyYW5zaXRpb25NYW5hZ2VyID0gY3JlYXRlVHJhbnNpdGlvbk1hbmFnZXIoKTtcblxuICBmdW5jdGlvbiBzZXRTdGF0ZShuZXh0U3RhdGUpIHtcbiAgICBfZXh0ZW5kcyhoaXN0b3J5LCBuZXh0U3RhdGUpO1xuXG4gICAgaGlzdG9yeS5sZW5ndGggPSBoaXN0b3J5LmVudHJpZXMubGVuZ3RoO1xuICAgIHRyYW5zaXRpb25NYW5hZ2VyLm5vdGlmeUxpc3RlbmVycyhoaXN0b3J5LmxvY2F0aW9uLCBoaXN0b3J5LmFjdGlvbik7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVLZXkoKSB7XG4gICAgcmV0dXJuIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyLCBrZXlMZW5ndGgpO1xuICB9XG5cbiAgdmFyIGluZGV4ID0gY2xhbXAoaW5pdGlhbEluZGV4LCAwLCBpbml0aWFsRW50cmllcy5sZW5ndGggLSAxKTtcbiAgdmFyIGVudHJpZXMgPSBpbml0aWFsRW50cmllcy5tYXAoZnVuY3Rpb24gKGVudHJ5KSB7XG4gICAgcmV0dXJuIHR5cGVvZiBlbnRyeSA9PT0gJ3N0cmluZycgPyBjcmVhdGVMb2NhdGlvbihlbnRyeSwgdW5kZWZpbmVkLCBjcmVhdGVLZXkoKSkgOiBjcmVhdGVMb2NhdGlvbihlbnRyeSwgdW5kZWZpbmVkLCBlbnRyeS5rZXkgfHwgY3JlYXRlS2V5KCkpO1xuICB9KTsgLy8gUHVibGljIGludGVyZmFjZVxuXG4gIHZhciBjcmVhdGVIcmVmID0gY3JlYXRlUGF0aDtcblxuICBmdW5jdGlvbiBwdXNoKHBhdGgsIHN0YXRlKSB7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gd2FybmluZyghKHR5cGVvZiBwYXRoID09PSAnb2JqZWN0JyAmJiBwYXRoLnN0YXRlICE9PSB1bmRlZmluZWQgJiYgc3RhdGUgIT09IHVuZGVmaW5lZCksICdZb3Ugc2hvdWxkIGF2b2lkIHByb3ZpZGluZyBhIDJuZCBzdGF0ZSBhcmd1bWVudCB0byBwdXNoIHdoZW4gdGhlIDFzdCAnICsgJ2FyZ3VtZW50IGlzIGEgbG9jYXRpb24tbGlrZSBvYmplY3QgdGhhdCBhbHJlYWR5IGhhcyBzdGF0ZTsgaXQgaXMgaWdub3JlZCcpIDogdm9pZCAwO1xuICAgIHZhciBhY3Rpb24gPSAnUFVTSCc7XG4gICAgdmFyIGxvY2F0aW9uID0gY3JlYXRlTG9jYXRpb24ocGF0aCwgc3RhdGUsIGNyZWF0ZUtleSgpLCBoaXN0b3J5LmxvY2F0aW9uKTtcbiAgICB0cmFuc2l0aW9uTWFuYWdlci5jb25maXJtVHJhbnNpdGlvblRvKGxvY2F0aW9uLCBhY3Rpb24sIGdldFVzZXJDb25maXJtYXRpb24sIGZ1bmN0aW9uIChvaykge1xuICAgICAgaWYgKCFvaykgcmV0dXJuO1xuICAgICAgdmFyIHByZXZJbmRleCA9IGhpc3RvcnkuaW5kZXg7XG4gICAgICB2YXIgbmV4dEluZGV4ID0gcHJldkluZGV4ICsgMTtcbiAgICAgIHZhciBuZXh0RW50cmllcyA9IGhpc3RvcnkuZW50cmllcy5zbGljZSgwKTtcblxuICAgICAgaWYgKG5leHRFbnRyaWVzLmxlbmd0aCA+IG5leHRJbmRleCkge1xuICAgICAgICBuZXh0RW50cmllcy5zcGxpY2UobmV4dEluZGV4LCBuZXh0RW50cmllcy5sZW5ndGggLSBuZXh0SW5kZXgsIGxvY2F0aW9uKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5leHRFbnRyaWVzLnB1c2gobG9jYXRpb24pO1xuICAgICAgfVxuXG4gICAgICBzZXRTdGF0ZSh7XG4gICAgICAgIGFjdGlvbjogYWN0aW9uLFxuICAgICAgICBsb2NhdGlvbjogbG9jYXRpb24sXG4gICAgICAgIGluZGV4OiBuZXh0SW5kZXgsXG4gICAgICAgIGVudHJpZXM6IG5leHRFbnRyaWVzXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlcGxhY2UocGF0aCwgc3RhdGUpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyB3YXJuaW5nKCEodHlwZW9mIHBhdGggPT09ICdvYmplY3QnICYmIHBhdGguc3RhdGUgIT09IHVuZGVmaW5lZCAmJiBzdGF0ZSAhPT0gdW5kZWZpbmVkKSwgJ1lvdSBzaG91bGQgYXZvaWQgcHJvdmlkaW5nIGEgMm5kIHN0YXRlIGFyZ3VtZW50IHRvIHJlcGxhY2Ugd2hlbiB0aGUgMXN0ICcgKyAnYXJndW1lbnQgaXMgYSBsb2NhdGlvbi1saWtlIG9iamVjdCB0aGF0IGFscmVhZHkgaGFzIHN0YXRlOyBpdCBpcyBpZ25vcmVkJykgOiB2b2lkIDA7XG4gICAgdmFyIGFjdGlvbiA9ICdSRVBMQUNFJztcbiAgICB2YXIgbG9jYXRpb24gPSBjcmVhdGVMb2NhdGlvbihwYXRoLCBzdGF0ZSwgY3JlYXRlS2V5KCksIGhpc3RvcnkubG9jYXRpb24pO1xuICAgIHRyYW5zaXRpb25NYW5hZ2VyLmNvbmZpcm1UcmFuc2l0aW9uVG8obG9jYXRpb24sIGFjdGlvbiwgZ2V0VXNlckNvbmZpcm1hdGlvbiwgZnVuY3Rpb24gKG9rKSB7XG4gICAgICBpZiAoIW9rKSByZXR1cm47XG4gICAgICBoaXN0b3J5LmVudHJpZXNbaGlzdG9yeS5pbmRleF0gPSBsb2NhdGlvbjtcbiAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgYWN0aW9uOiBhY3Rpb24sXG4gICAgICAgIGxvY2F0aW9uOiBsb2NhdGlvblxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBnbyhuKSB7XG4gICAgdmFyIG5leHRJbmRleCA9IGNsYW1wKGhpc3RvcnkuaW5kZXggKyBuLCAwLCBoaXN0b3J5LmVudHJpZXMubGVuZ3RoIC0gMSk7XG4gICAgdmFyIGFjdGlvbiA9ICdQT1AnO1xuICAgIHZhciBsb2NhdGlvbiA9IGhpc3RvcnkuZW50cmllc1tuZXh0SW5kZXhdO1xuICAgIHRyYW5zaXRpb25NYW5hZ2VyLmNvbmZpcm1UcmFuc2l0aW9uVG8obG9jYXRpb24sIGFjdGlvbiwgZ2V0VXNlckNvbmZpcm1hdGlvbiwgZnVuY3Rpb24gKG9rKSB7XG4gICAgICBpZiAob2spIHtcbiAgICAgICAgc2V0U3RhdGUoe1xuICAgICAgICAgIGFjdGlvbjogYWN0aW9uLFxuICAgICAgICAgIGxvY2F0aW9uOiBsb2NhdGlvbixcbiAgICAgICAgICBpbmRleDogbmV4dEluZGV4XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gTWltaWMgdGhlIGJlaGF2aW9yIG9mIERPTSBoaXN0b3JpZXMgYnlcbiAgICAgICAgLy8gY2F1c2luZyBhIHJlbmRlciBhZnRlciBhIGNhbmNlbGxlZCBQT1AuXG4gICAgICAgIHNldFN0YXRlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBnb0JhY2soKSB7XG4gICAgZ28oLTEpO1xuICB9XG5cbiAgZnVuY3Rpb24gZ29Gb3J3YXJkKCkge1xuICAgIGdvKDEpO1xuICB9XG5cbiAgZnVuY3Rpb24gY2FuR28obikge1xuICAgIHZhciBuZXh0SW5kZXggPSBoaXN0b3J5LmluZGV4ICsgbjtcbiAgICByZXR1cm4gbmV4dEluZGV4ID49IDAgJiYgbmV4dEluZGV4IDwgaGlzdG9yeS5lbnRyaWVzLmxlbmd0aDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGJsb2NrKHByb21wdCkge1xuICAgIGlmIChwcm9tcHQgPT09IHZvaWQgMCkge1xuICAgICAgcHJvbXB0ID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRyYW5zaXRpb25NYW5hZ2VyLnNldFByb21wdChwcm9tcHQpO1xuICB9XG5cbiAgZnVuY3Rpb24gbGlzdGVuKGxpc3RlbmVyKSB7XG4gICAgcmV0dXJuIHRyYW5zaXRpb25NYW5hZ2VyLmFwcGVuZExpc3RlbmVyKGxpc3RlbmVyKTtcbiAgfVxuXG4gIHZhciBoaXN0b3J5ID0ge1xuICAgIGxlbmd0aDogZW50cmllcy5sZW5ndGgsXG4gICAgYWN0aW9uOiAnUE9QJyxcbiAgICBsb2NhdGlvbjogZW50cmllc1tpbmRleF0sXG4gICAgaW5kZXg6IGluZGV4LFxuICAgIGVudHJpZXM6IGVudHJpZXMsXG4gICAgY3JlYXRlSHJlZjogY3JlYXRlSHJlZixcbiAgICBwdXNoOiBwdXNoLFxuICAgIHJlcGxhY2U6IHJlcGxhY2UsXG4gICAgZ286IGdvLFxuICAgIGdvQmFjazogZ29CYWNrLFxuICAgIGdvRm9yd2FyZDogZ29Gb3J3YXJkLFxuICAgIGNhbkdvOiBjYW5HbyxcbiAgICBibG9jazogYmxvY2ssXG4gICAgbGlzdGVuOiBsaXN0ZW5cbiAgfTtcbiAgcmV0dXJuIGhpc3Rvcnk7XG59XG5cbmV4cG9ydCB7IGNyZWF0ZUJyb3dzZXJIaXN0b3J5LCBjcmVhdGVIYXNoSGlzdG9yeSwgY3JlYXRlTWVtb3J5SGlzdG9yeSwgY3JlYXRlTG9jYXRpb24sIGxvY2F0aW9uc0FyZUVxdWFsLCBwYXJzZVBhdGgsIGNyZWF0ZVBhdGggfTtcbiIsInZhciBpc1Byb2R1Y3Rpb24gPSBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nO1xudmFyIHByZWZpeCA9ICdJbnZhcmlhbnQgZmFpbGVkJztcbmZ1bmN0aW9uIGludmFyaWFudChjb25kaXRpb24sIG1lc3NhZ2UpIHtcbiAgICBpZiAoY29uZGl0aW9uKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGlzUHJvZHVjdGlvbikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IocHJlZml4KTtcbiAgICB9XG4gICAgdmFyIHByb3ZpZGVkID0gdHlwZW9mIG1lc3NhZ2UgPT09ICdmdW5jdGlvbicgPyBtZXNzYWdlKCkgOiBtZXNzYWdlO1xuICAgIHZhciB2YWx1ZSA9IHByb3ZpZGVkID8gXCJcIi5jb25jYXQocHJlZml4LCBcIjogXCIpLmNvbmNhdChwcm92aWRlZCkgOiBwcmVmaXg7XG4gICAgdGhyb3cgbmV3IEVycm9yKHZhbHVlKTtcbn1cblxuZXhwb3J0IHsgaW52YXJpYW50IGFzIGRlZmF1bHQgfTtcbiIsImZ1bmN0aW9uIF9leHRlbmRzKCkge1xuICByZXR1cm4gKG1vZHVsZS5leHBvcnRzID0gX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduID8gT2JqZWN0LmFzc2lnbi5iaW5kKCkgOiBmdW5jdGlvbiAobikge1xuICAgIGZvciAodmFyIGUgPSAxOyBlIDwgYXJndW1lbnRzLmxlbmd0aDsgZSsrKSB7XG4gICAgICB2YXIgdCA9IGFyZ3VtZW50c1tlXTtcbiAgICAgIGZvciAodmFyIHIgaW4gdCkgKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsIHIpICYmIChuW3JdID0gdFtyXSk7XG4gICAgfVxuICAgIHJldHVybiBuO1xuICB9LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHMpLCBfZXh0ZW5kcy5hcHBseShudWxsLCBhcmd1bWVudHMpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfZXh0ZW5kcywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsIi8qXHJcbiAqICBiaWcuanMgdjYuMi4xXHJcbiAqICBBIHNtYWxsLCBmYXN0LCBlYXN5LXRvLXVzZSBsaWJyYXJ5IGZvciBhcmJpdHJhcnktcHJlY2lzaW9uIGRlY2ltYWwgYXJpdGhtZXRpYy5cclxuICogIENvcHlyaWdodCAoYykgMjAyMiBNaWNoYWVsIE1jbGF1Z2hsaW5cclxuICogIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWtlTWNsL2JpZy5qcy9MSUNFTkNFLm1kXHJcbiAqL1xyXG47KGZ1bmN0aW9uIChHTE9CQUwpIHtcclxuICAndXNlIHN0cmljdCc7XHJcbiAgdmFyIEJpZyxcclxuXHJcblxyXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogRURJVEFCTEUgREVGQVVMVFMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHJcblxyXG5cclxuICAgIC8vIFRoZSBkZWZhdWx0IHZhbHVlcyBiZWxvdyBtdXN0IGJlIGludGVnZXJzIHdpdGhpbiB0aGUgc3RhdGVkIHJhbmdlcy5cclxuXHJcbiAgICAvKlxyXG4gICAgICogVGhlIG1heGltdW0gbnVtYmVyIG9mIGRlY2ltYWwgcGxhY2VzIChEUCkgb2YgdGhlIHJlc3VsdHMgb2Ygb3BlcmF0aW9ucyBpbnZvbHZpbmcgZGl2aXNpb246XHJcbiAgICAgKiBkaXYgYW5kIHNxcnQsIGFuZCBwb3cgd2l0aCBuZWdhdGl2ZSBleHBvbmVudHMuXHJcbiAgICAgKi9cclxuICAgIERQID0gMjAsICAgICAgICAgICAgLy8gMCB0byBNQVhfRFBcclxuXHJcbiAgICAvKlxyXG4gICAgICogVGhlIHJvdW5kaW5nIG1vZGUgKFJNKSB1c2VkIHdoZW4gcm91bmRpbmcgdG8gdGhlIGFib3ZlIGRlY2ltYWwgcGxhY2VzLlxyXG4gICAgICpcclxuICAgICAqICAwICBUb3dhcmRzIHplcm8gKGkuZS4gdHJ1bmNhdGUsIG5vIHJvdW5kaW5nKS4gICAgICAgKFJPVU5EX0RPV04pXHJcbiAgICAgKiAgMSAgVG8gbmVhcmVzdCBuZWlnaGJvdXIuIElmIGVxdWlkaXN0YW50LCByb3VuZCB1cC4gIChST1VORF9IQUxGX1VQKVxyXG4gICAgICogIDIgIFRvIG5lYXJlc3QgbmVpZ2hib3VyLiBJZiBlcXVpZGlzdGFudCwgdG8gZXZlbi4gICAoUk9VTkRfSEFMRl9FVkVOKVxyXG4gICAgICogIDMgIEF3YXkgZnJvbSB6ZXJvLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUk9VTkRfVVApXHJcbiAgICAgKi9cclxuICAgIFJNID0gMSwgICAgICAgICAgICAgLy8gMCwgMSwgMiBvciAzXHJcblxyXG4gICAgLy8gVGhlIG1heGltdW0gdmFsdWUgb2YgRFAgYW5kIEJpZy5EUC5cclxuICAgIE1BWF9EUCA9IDFFNiwgICAgICAgLy8gMCB0byAxMDAwMDAwXHJcblxyXG4gICAgLy8gVGhlIG1heGltdW0gbWFnbml0dWRlIG9mIHRoZSBleHBvbmVudCBhcmd1bWVudCB0byB0aGUgcG93IG1ldGhvZC5cclxuICAgIE1BWF9QT1dFUiA9IDFFNiwgICAgLy8gMSB0byAxMDAwMDAwXHJcblxyXG4gICAgLypcclxuICAgICAqIFRoZSBuZWdhdGl2ZSBleHBvbmVudCAoTkUpIGF0IGFuZCBiZW5lYXRoIHdoaWNoIHRvU3RyaW5nIHJldHVybnMgZXhwb25lbnRpYWwgbm90YXRpb24uXHJcbiAgICAgKiAoSmF2YVNjcmlwdCBudW1iZXJzOiAtNylcclxuICAgICAqIC0xMDAwMDAwIGlzIHRoZSBtaW5pbXVtIHJlY29tbWVuZGVkIGV4cG9uZW50IHZhbHVlIG9mIGEgQmlnLlxyXG4gICAgICovXHJcbiAgICBORSA9IC03LCAgICAgICAgICAgIC8vIDAgdG8gLTEwMDAwMDBcclxuXHJcbiAgICAvKlxyXG4gICAgICogVGhlIHBvc2l0aXZlIGV4cG9uZW50IChQRSkgYXQgYW5kIGFib3ZlIHdoaWNoIHRvU3RyaW5nIHJldHVybnMgZXhwb25lbnRpYWwgbm90YXRpb24uXHJcbiAgICAgKiAoSmF2YVNjcmlwdCBudW1iZXJzOiAyMSlcclxuICAgICAqIDEwMDAwMDAgaXMgdGhlIG1heGltdW0gcmVjb21tZW5kZWQgZXhwb25lbnQgdmFsdWUgb2YgYSBCaWcsIGJ1dCB0aGlzIGxpbWl0IGlzIG5vdCBlbmZvcmNlZC5cclxuICAgICAqL1xyXG4gICAgUEUgPSAyMSwgICAgICAgICAgICAvLyAwIHRvIDEwMDAwMDBcclxuXHJcbiAgICAvKlxyXG4gICAgICogV2hlbiB0cnVlLCBhbiBlcnJvciB3aWxsIGJlIHRocm93biBpZiBhIHByaW1pdGl2ZSBudW1iZXIgaXMgcGFzc2VkIHRvIHRoZSBCaWcgY29uc3RydWN0b3IsXHJcbiAgICAgKiBvciBpZiB2YWx1ZU9mIGlzIGNhbGxlZCwgb3IgaWYgdG9OdW1iZXIgaXMgY2FsbGVkIG9uIGEgQmlnIHdoaWNoIGNhbm5vdCBiZSBjb252ZXJ0ZWQgdG8gYVxyXG4gICAgICogcHJpbWl0aXZlIG51bWJlciB3aXRob3V0IGEgbG9zcyBvZiBwcmVjaXNpb24uXHJcbiAgICAgKi9cclxuICAgIFNUUklDVCA9IGZhbHNlLCAgICAgLy8gdHJ1ZSBvciBmYWxzZVxyXG5cclxuXHJcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cclxuXHJcblxyXG4gICAgLy8gRXJyb3IgbWVzc2FnZXMuXHJcbiAgICBOQU1FID0gJ1tiaWcuanNdICcsXHJcbiAgICBJTlZBTElEID0gTkFNRSArICdJbnZhbGlkICcsXHJcbiAgICBJTlZBTElEX0RQID0gSU5WQUxJRCArICdkZWNpbWFsIHBsYWNlcycsXHJcbiAgICBJTlZBTElEX1JNID0gSU5WQUxJRCArICdyb3VuZGluZyBtb2RlJyxcclxuICAgIERJVl9CWV9aRVJPID0gTkFNRSArICdEaXZpc2lvbiBieSB6ZXJvJyxcclxuXHJcbiAgICAvLyBUaGUgc2hhcmVkIHByb3RvdHlwZSBvYmplY3QuXHJcbiAgICBQID0ge30sXHJcbiAgICBVTkRFRklORUQgPSB2b2lkIDAsXHJcbiAgICBOVU1FUklDID0gL14tPyhcXGQrKFxcLlxcZCopP3xcXC5cXGQrKShlWystXT9cXGQrKT8kL2k7XHJcblxyXG5cclxuICAvKlxyXG4gICAqIENyZWF0ZSBhbmQgcmV0dXJuIGEgQmlnIGNvbnN0cnVjdG9yLlxyXG4gICAqL1xyXG4gIGZ1bmN0aW9uIF9CaWdfKCkge1xyXG5cclxuICAgIC8qXHJcbiAgICAgKiBUaGUgQmlnIGNvbnN0cnVjdG9yIGFuZCBleHBvcnRlZCBmdW5jdGlvbi5cclxuICAgICAqIENyZWF0ZSBhbmQgcmV0dXJuIGEgbmV3IGluc3RhbmNlIG9mIGEgQmlnIG51bWJlciBvYmplY3QuXHJcbiAgICAgKlxyXG4gICAgICogbiB7bnVtYmVyfHN0cmluZ3xCaWd9IEEgbnVtZXJpYyB2YWx1ZS5cclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gQmlnKG4pIHtcclxuICAgICAgdmFyIHggPSB0aGlzO1xyXG5cclxuICAgICAgLy8gRW5hYmxlIGNvbnN0cnVjdG9yIHVzYWdlIHdpdGhvdXQgbmV3LlxyXG4gICAgICBpZiAoISh4IGluc3RhbmNlb2YgQmlnKSkgcmV0dXJuIG4gPT09IFVOREVGSU5FRCA/IF9CaWdfKCkgOiBuZXcgQmlnKG4pO1xyXG5cclxuICAgICAgLy8gRHVwbGljYXRlLlxyXG4gICAgICBpZiAobiBpbnN0YW5jZW9mIEJpZykge1xyXG4gICAgICAgIHgucyA9IG4ucztcclxuICAgICAgICB4LmUgPSBuLmU7XHJcbiAgICAgICAgeC5jID0gbi5jLnNsaWNlKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBuICE9PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgaWYgKEJpZy5zdHJpY3QgPT09IHRydWUgJiYgdHlwZW9mIG4gIT09ICdiaWdpbnQnKSB7XHJcbiAgICAgICAgICAgIHRocm93IFR5cGVFcnJvcihJTlZBTElEICsgJ3ZhbHVlJyk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gTWludXMgemVybz9cclxuICAgICAgICAgIG4gPSBuID09PSAwICYmIDEgLyBuIDwgMCA/ICctMCcgOiBTdHJpbmcobik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBwYXJzZSh4LCBuKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gUmV0YWluIGEgcmVmZXJlbmNlIHRvIHRoaXMgQmlnIGNvbnN0cnVjdG9yLlxyXG4gICAgICAvLyBTaGFkb3cgQmlnLnByb3RvdHlwZS5jb25zdHJ1Y3RvciB3aGljaCBwb2ludHMgdG8gT2JqZWN0LlxyXG4gICAgICB4LmNvbnN0cnVjdG9yID0gQmlnO1xyXG4gICAgfVxyXG5cclxuICAgIEJpZy5wcm90b3R5cGUgPSBQO1xyXG4gICAgQmlnLkRQID0gRFA7XHJcbiAgICBCaWcuUk0gPSBSTTtcclxuICAgIEJpZy5ORSA9IE5FO1xyXG4gICAgQmlnLlBFID0gUEU7XHJcbiAgICBCaWcuc3RyaWN0ID0gU1RSSUNUO1xyXG4gICAgQmlnLnJvdW5kRG93biA9IDA7XHJcbiAgICBCaWcucm91bmRIYWxmVXAgPSAxO1xyXG4gICAgQmlnLnJvdW5kSGFsZkV2ZW4gPSAyO1xyXG4gICAgQmlnLnJvdW5kVXAgPSAzO1xyXG5cclxuICAgIHJldHVybiBCaWc7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBQYXJzZSB0aGUgbnVtYmVyIG9yIHN0cmluZyB2YWx1ZSBwYXNzZWQgdG8gYSBCaWcgY29uc3RydWN0b3IuXHJcbiAgICpcclxuICAgKiB4IHtCaWd9IEEgQmlnIG51bWJlciBpbnN0YW5jZS5cclxuICAgKiBuIHtudW1iZXJ8c3RyaW5nfSBBIG51bWVyaWMgdmFsdWUuXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gcGFyc2UoeCwgbikge1xyXG4gICAgdmFyIGUsIGksIG5sO1xyXG5cclxuICAgIGlmICghTlVNRVJJQy50ZXN0KG4pKSB7XHJcbiAgICAgIHRocm93IEVycm9yKElOVkFMSUQgKyAnbnVtYmVyJyk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gRGV0ZXJtaW5lIHNpZ24uXHJcbiAgICB4LnMgPSBuLmNoYXJBdCgwKSA9PSAnLScgPyAobiA9IG4uc2xpY2UoMSksIC0xKSA6IDE7XHJcblxyXG4gICAgLy8gRGVjaW1hbCBwb2ludD9cclxuICAgIGlmICgoZSA9IG4uaW5kZXhPZignLicpKSA+IC0xKSBuID0gbi5yZXBsYWNlKCcuJywgJycpO1xyXG5cclxuICAgIC8vIEV4cG9uZW50aWFsIGZvcm0/XHJcbiAgICBpZiAoKGkgPSBuLnNlYXJjaCgvZS9pKSkgPiAwKSB7XHJcblxyXG4gICAgICAvLyBEZXRlcm1pbmUgZXhwb25lbnQuXHJcbiAgICAgIGlmIChlIDwgMCkgZSA9IGk7XHJcbiAgICAgIGUgKz0gK24uc2xpY2UoaSArIDEpO1xyXG4gICAgICBuID0gbi5zdWJzdHJpbmcoMCwgaSk7XHJcbiAgICB9IGVsc2UgaWYgKGUgPCAwKSB7XHJcblxyXG4gICAgICAvLyBJbnRlZ2VyLlxyXG4gICAgICBlID0gbi5sZW5ndGg7XHJcbiAgICB9XHJcblxyXG4gICAgbmwgPSBuLmxlbmd0aDtcclxuXHJcbiAgICAvLyBEZXRlcm1pbmUgbGVhZGluZyB6ZXJvcy5cclxuICAgIGZvciAoaSA9IDA7IGkgPCBubCAmJiBuLmNoYXJBdChpKSA9PSAnMCc7KSArK2k7XHJcblxyXG4gICAgaWYgKGkgPT0gbmwpIHtcclxuXHJcbiAgICAgIC8vIFplcm8uXHJcbiAgICAgIHguYyA9IFt4LmUgPSAwXTtcclxuICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAvLyBEZXRlcm1pbmUgdHJhaWxpbmcgemVyb3MuXHJcbiAgICAgIGZvciAoOyBubCA+IDAgJiYgbi5jaGFyQXQoLS1ubCkgPT0gJzAnOyk7XHJcbiAgICAgIHguZSA9IGUgLSBpIC0gMTtcclxuICAgICAgeC5jID0gW107XHJcblxyXG4gICAgICAvLyBDb252ZXJ0IHN0cmluZyB0byBhcnJheSBvZiBkaWdpdHMgd2l0aG91dCBsZWFkaW5nL3RyYWlsaW5nIHplcm9zLlxyXG4gICAgICBmb3IgKGUgPSAwOyBpIDw9IG5sOykgeC5jW2UrK10gPSArbi5jaGFyQXQoaSsrKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4geDtcclxuICB9XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJvdW5kIEJpZyB4IHRvIGEgbWF4aW11bSBvZiBzZCBzaWduaWZpY2FudCBkaWdpdHMgdXNpbmcgcm91bmRpbmcgbW9kZSBybS5cclxuICAgKlxyXG4gICAqIHgge0JpZ30gVGhlIEJpZyB0byByb3VuZC5cclxuICAgKiBzZCB7bnVtYmVyfSBTaWduaWZpY2FudCBkaWdpdHM6IGludGVnZXIsIDAgdG8gTUFYX0RQIGluY2x1c2l2ZS5cclxuICAgKiBybSB7bnVtYmVyfSBSb3VuZGluZyBtb2RlOiAwIChkb3duKSwgMSAoaGFsZi11cCksIDIgKGhhbGYtZXZlbikgb3IgMyAodXApLlxyXG4gICAqIFttb3JlXSB7Ym9vbGVhbn0gV2hldGhlciB0aGUgcmVzdWx0IG9mIGRpdmlzaW9uIHdhcyB0cnVuY2F0ZWQuXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gcm91bmQoeCwgc2QsIHJtLCBtb3JlKSB7XHJcbiAgICB2YXIgeGMgPSB4LmM7XHJcblxyXG4gICAgaWYgKHJtID09PSBVTkRFRklORUQpIHJtID0geC5jb25zdHJ1Y3Rvci5STTtcclxuICAgIGlmIChybSAhPT0gMCAmJiBybSAhPT0gMSAmJiBybSAhPT0gMiAmJiBybSAhPT0gMykge1xyXG4gICAgICB0aHJvdyBFcnJvcihJTlZBTElEX1JNKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoc2QgPCAxKSB7XHJcbiAgICAgIG1vcmUgPVxyXG4gICAgICAgIHJtID09PSAzICYmIChtb3JlIHx8ICEheGNbMF0pIHx8IHNkID09PSAwICYmIChcclxuICAgICAgICBybSA9PT0gMSAmJiB4Y1swXSA+PSA1IHx8XHJcbiAgICAgICAgcm0gPT09IDIgJiYgKHhjWzBdID4gNSB8fCB4Y1swXSA9PT0gNSAmJiAobW9yZSB8fCB4Y1sxXSAhPT0gVU5ERUZJTkVEKSlcclxuICAgICAgKTtcclxuXHJcbiAgICAgIHhjLmxlbmd0aCA9IDE7XHJcblxyXG4gICAgICBpZiAobW9yZSkge1xyXG5cclxuICAgICAgICAvLyAxLCAwLjEsIDAuMDEsIDAuMDAxLCAwLjAwMDEgZXRjLlxyXG4gICAgICAgIHguZSA9IHguZSAtIHNkICsgMTtcclxuICAgICAgICB4Y1swXSA9IDE7XHJcbiAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgIC8vIFplcm8uXHJcbiAgICAgICAgeGNbMF0gPSB4LmUgPSAwO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKHNkIDwgeGMubGVuZ3RoKSB7XHJcblxyXG4gICAgICAvLyB4Y1tzZF0gaXMgdGhlIGRpZ2l0IGFmdGVyIHRoZSBkaWdpdCB0aGF0IG1heSBiZSByb3VuZGVkIHVwLlxyXG4gICAgICBtb3JlID1cclxuICAgICAgICBybSA9PT0gMSAmJiB4Y1tzZF0gPj0gNSB8fFxyXG4gICAgICAgIHJtID09PSAyICYmICh4Y1tzZF0gPiA1IHx8IHhjW3NkXSA9PT0gNSAmJlxyXG4gICAgICAgICAgKG1vcmUgfHwgeGNbc2QgKyAxXSAhPT0gVU5ERUZJTkVEIHx8IHhjW3NkIC0gMV0gJiAxKSkgfHxcclxuICAgICAgICBybSA9PT0gMyAmJiAobW9yZSB8fCAhIXhjWzBdKTtcclxuXHJcbiAgICAgIC8vIFJlbW92ZSBhbnkgZGlnaXRzIGFmdGVyIHRoZSByZXF1aXJlZCBwcmVjaXNpb24uXHJcbiAgICAgIHhjLmxlbmd0aCA9IHNkO1xyXG5cclxuICAgICAgLy8gUm91bmQgdXA/XHJcbiAgICAgIGlmIChtb3JlKSB7XHJcblxyXG4gICAgICAgIC8vIFJvdW5kaW5nIHVwIG1heSBtZWFuIHRoZSBwcmV2aW91cyBkaWdpdCBoYXMgdG8gYmUgcm91bmRlZCB1cC5cclxuICAgICAgICBmb3IgKDsgKyt4Y1stLXNkXSA+IDk7KSB7XHJcbiAgICAgICAgICB4Y1tzZF0gPSAwO1xyXG4gICAgICAgICAgaWYgKHNkID09PSAwKSB7XHJcbiAgICAgICAgICAgICsreC5lO1xyXG4gICAgICAgICAgICB4Yy51bnNoaWZ0KDEpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIFJlbW92ZSB0cmFpbGluZyB6ZXJvcy5cclxuICAgICAgZm9yIChzZCA9IHhjLmxlbmd0aDsgIXhjWy0tc2RdOykgeGMucG9wKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHg7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSB2YWx1ZSBvZiBCaWcgeCBpbiBub3JtYWwgb3IgZXhwb25lbnRpYWwgbm90YXRpb24uXHJcbiAgICogSGFuZGxlcyBQLnRvRXhwb25lbnRpYWwsIFAudG9GaXhlZCwgUC50b0pTT04sIFAudG9QcmVjaXNpb24sIFAudG9TdHJpbmcgYW5kIFAudmFsdWVPZi5cclxuICAgKi9cclxuICBmdW5jdGlvbiBzdHJpbmdpZnkoeCwgZG9FeHBvbmVudGlhbCwgaXNOb256ZXJvKSB7XHJcbiAgICB2YXIgZSA9IHguZSxcclxuICAgICAgcyA9IHguYy5qb2luKCcnKSxcclxuICAgICAgbiA9IHMubGVuZ3RoO1xyXG5cclxuICAgIC8vIEV4cG9uZW50aWFsIG5vdGF0aW9uP1xyXG4gICAgaWYgKGRvRXhwb25lbnRpYWwpIHtcclxuICAgICAgcyA9IHMuY2hhckF0KDApICsgKG4gPiAxID8gJy4nICsgcy5zbGljZSgxKSA6ICcnKSArIChlIDwgMCA/ICdlJyA6ICdlKycpICsgZTtcclxuXHJcbiAgICAvLyBOb3JtYWwgbm90YXRpb24uXHJcbiAgICB9IGVsc2UgaWYgKGUgPCAwKSB7XHJcbiAgICAgIGZvciAoOyArK2U7KSBzID0gJzAnICsgcztcclxuICAgICAgcyA9ICcwLicgKyBzO1xyXG4gICAgfSBlbHNlIGlmIChlID4gMCkge1xyXG4gICAgICBpZiAoKytlID4gbikge1xyXG4gICAgICAgIGZvciAoZSAtPSBuOyBlLS07KSBzICs9ICcwJztcclxuICAgICAgfSBlbHNlIGlmIChlIDwgbikge1xyXG4gICAgICAgIHMgPSBzLnNsaWNlKDAsIGUpICsgJy4nICsgcy5zbGljZShlKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChuID4gMSkge1xyXG4gICAgICBzID0gcy5jaGFyQXQoMCkgKyAnLicgKyBzLnNsaWNlKDEpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB4LnMgPCAwICYmIGlzTm9uemVybyA/ICctJyArIHMgOiBzO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vIFByb3RvdHlwZS9pbnN0YW5jZSBtZXRob2RzXHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBCaWcgd2hvc2UgdmFsdWUgaXMgdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoaXMgQmlnLlxyXG4gICAqL1xyXG4gIFAuYWJzID0gZnVuY3Rpb24gKCkge1xyXG4gICAgdmFyIHggPSBuZXcgdGhpcy5jb25zdHJ1Y3Rvcih0aGlzKTtcclxuICAgIHgucyA9IDE7XHJcbiAgICByZXR1cm4geDtcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gMSBpZiB0aGUgdmFsdWUgb2YgdGhpcyBCaWcgaXMgZ3JlYXRlciB0aGFuIHRoZSB2YWx1ZSBvZiBCaWcgeSxcclxuICAgKiAgICAgICAtMSBpZiB0aGUgdmFsdWUgb2YgdGhpcyBCaWcgaXMgbGVzcyB0aGFuIHRoZSB2YWx1ZSBvZiBCaWcgeSwgb3JcclxuICAgKiAgICAgICAgMCBpZiB0aGV5IGhhdmUgdGhlIHNhbWUgdmFsdWUuXHJcbiAgICovXHJcbiAgUC5jbXAgPSBmdW5jdGlvbiAoeSkge1xyXG4gICAgdmFyIGlzbmVnLFxyXG4gICAgICB4ID0gdGhpcyxcclxuICAgICAgeGMgPSB4LmMsXHJcbiAgICAgIHljID0gKHkgPSBuZXcgeC5jb25zdHJ1Y3Rvcih5KSkuYyxcclxuICAgICAgaSA9IHgucyxcclxuICAgICAgaiA9IHkucyxcclxuICAgICAgayA9IHguZSxcclxuICAgICAgbCA9IHkuZTtcclxuXHJcbiAgICAvLyBFaXRoZXIgemVybz9cclxuICAgIGlmICgheGNbMF0gfHwgIXljWzBdKSByZXR1cm4gIXhjWzBdID8gIXljWzBdID8gMCA6IC1qIDogaTtcclxuXHJcbiAgICAvLyBTaWducyBkaWZmZXI/XHJcbiAgICBpZiAoaSAhPSBqKSByZXR1cm4gaTtcclxuXHJcbiAgICBpc25lZyA9IGkgPCAwO1xyXG5cclxuICAgIC8vIENvbXBhcmUgZXhwb25lbnRzLlxyXG4gICAgaWYgKGsgIT0gbCkgcmV0dXJuIGsgPiBsIF4gaXNuZWcgPyAxIDogLTE7XHJcblxyXG4gICAgaiA9IChrID0geGMubGVuZ3RoKSA8IChsID0geWMubGVuZ3RoKSA/IGsgOiBsO1xyXG5cclxuICAgIC8vIENvbXBhcmUgZGlnaXQgYnkgZGlnaXQuXHJcbiAgICBmb3IgKGkgPSAtMTsgKytpIDwgajspIHtcclxuICAgICAgaWYgKHhjW2ldICE9IHljW2ldKSByZXR1cm4geGNbaV0gPiB5Y1tpXSBeIGlzbmVnID8gMSA6IC0xO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIENvbXBhcmUgbGVuZ3Rocy5cclxuICAgIHJldHVybiBrID09IGwgPyAwIDogayA+IGwgXiBpc25lZyA/IDEgOiAtMTtcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgQmlnIHdob3NlIHZhbHVlIGlzIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZyBkaXZpZGVkIGJ5IHRoZSB2YWx1ZSBvZiBCaWcgeSwgcm91bmRlZCxcclxuICAgKiBpZiBuZWNlc3NhcnksIHRvIGEgbWF4aW11bSBvZiBCaWcuRFAgZGVjaW1hbCBwbGFjZXMgdXNpbmcgcm91bmRpbmcgbW9kZSBCaWcuUk0uXHJcbiAgICovXHJcbiAgUC5kaXYgPSBmdW5jdGlvbiAoeSkge1xyXG4gICAgdmFyIHggPSB0aGlzLFxyXG4gICAgICBCaWcgPSB4LmNvbnN0cnVjdG9yLFxyXG4gICAgICBhID0geC5jLCAgICAgICAgICAgICAgICAgIC8vIGRpdmlkZW5kXHJcbiAgICAgIGIgPSAoeSA9IG5ldyBCaWcoeSkpLmMsICAgLy8gZGl2aXNvclxyXG4gICAgICBrID0geC5zID09IHkucyA/IDEgOiAtMSxcclxuICAgICAgZHAgPSBCaWcuRFA7XHJcblxyXG4gICAgaWYgKGRwICE9PSB+fmRwIHx8IGRwIDwgMCB8fCBkcCA+IE1BWF9EUCkge1xyXG4gICAgICB0aHJvdyBFcnJvcihJTlZBTElEX0RQKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBEaXZpc29yIGlzIHplcm8/XHJcbiAgICBpZiAoIWJbMF0pIHtcclxuICAgICAgdGhyb3cgRXJyb3IoRElWX0JZX1pFUk8pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIERpdmlkZW5kIGlzIDA/IFJldHVybiArLTAuXHJcbiAgICBpZiAoIWFbMF0pIHtcclxuICAgICAgeS5zID0gaztcclxuICAgICAgeS5jID0gW3kuZSA9IDBdO1xyXG4gICAgICByZXR1cm4geTtcclxuICAgIH1cclxuXHJcbiAgICB2YXIgYmwsIGJ0LCBuLCBjbXAsIHJpLFxyXG4gICAgICBieiA9IGIuc2xpY2UoKSxcclxuICAgICAgYWkgPSBibCA9IGIubGVuZ3RoLFxyXG4gICAgICBhbCA9IGEubGVuZ3RoLFxyXG4gICAgICByID0gYS5zbGljZSgwLCBibCksICAgLy8gcmVtYWluZGVyXHJcbiAgICAgIHJsID0gci5sZW5ndGgsXHJcbiAgICAgIHEgPSB5LCAgICAgICAgICAgICAgICAvLyBxdW90aWVudFxyXG4gICAgICBxYyA9IHEuYyA9IFtdLFxyXG4gICAgICBxaSA9IDAsXHJcbiAgICAgIHAgPSBkcCArIChxLmUgPSB4LmUgLSB5LmUpICsgMTsgICAgLy8gcHJlY2lzaW9uIG9mIHRoZSByZXN1bHRcclxuXHJcbiAgICBxLnMgPSBrO1xyXG4gICAgayA9IHAgPCAwID8gMCA6IHA7XHJcblxyXG4gICAgLy8gQ3JlYXRlIHZlcnNpb24gb2YgZGl2aXNvciB3aXRoIGxlYWRpbmcgemVyby5cclxuICAgIGJ6LnVuc2hpZnQoMCk7XHJcblxyXG4gICAgLy8gQWRkIHplcm9zIHRvIG1ha2UgcmVtYWluZGVyIGFzIGxvbmcgYXMgZGl2aXNvci5cclxuICAgIGZvciAoOyBybCsrIDwgYmw7KSByLnB1c2goMCk7XHJcblxyXG4gICAgZG8ge1xyXG5cclxuICAgICAgLy8gbiBpcyBob3cgbWFueSB0aW1lcyB0aGUgZGl2aXNvciBnb2VzIGludG8gY3VycmVudCByZW1haW5kZXIuXHJcbiAgICAgIGZvciAobiA9IDA7IG4gPCAxMDsgbisrKSB7XHJcblxyXG4gICAgICAgIC8vIENvbXBhcmUgZGl2aXNvciBhbmQgcmVtYWluZGVyLlxyXG4gICAgICAgIGlmIChibCAhPSAocmwgPSByLmxlbmd0aCkpIHtcclxuICAgICAgICAgIGNtcCA9IGJsID4gcmwgPyAxIDogLTE7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGZvciAocmkgPSAtMSwgY21wID0gMDsgKytyaSA8IGJsOykge1xyXG4gICAgICAgICAgICBpZiAoYltyaV0gIT0gcltyaV0pIHtcclxuICAgICAgICAgICAgICBjbXAgPSBiW3JpXSA+IHJbcmldID8gMSA6IC0xO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBJZiBkaXZpc29yIDwgcmVtYWluZGVyLCBzdWJ0cmFjdCBkaXZpc29yIGZyb20gcmVtYWluZGVyLlxyXG4gICAgICAgIGlmIChjbXAgPCAwKSB7XHJcblxyXG4gICAgICAgICAgLy8gUmVtYWluZGVyIGNhbid0IGJlIG1vcmUgdGhhbiAxIGRpZ2l0IGxvbmdlciB0aGFuIGRpdmlzb3IuXHJcbiAgICAgICAgICAvLyBFcXVhbGlzZSBsZW5ndGhzIHVzaW5nIGRpdmlzb3Igd2l0aCBleHRyYSBsZWFkaW5nIHplcm8/XHJcbiAgICAgICAgICBmb3IgKGJ0ID0gcmwgPT0gYmwgPyBiIDogYno7IHJsOykge1xyXG4gICAgICAgICAgICBpZiAoclstLXJsXSA8IGJ0W3JsXSkge1xyXG4gICAgICAgICAgICAgIHJpID0gcmw7XHJcbiAgICAgICAgICAgICAgZm9yICg7IHJpICYmICFyWy0tcmldOykgcltyaV0gPSA5O1xyXG4gICAgICAgICAgICAgIC0tcltyaV07XHJcbiAgICAgICAgICAgICAgcltybF0gKz0gMTA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcltybF0gLT0gYnRbcmxdO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGZvciAoOyAhclswXTspIHIuc2hpZnQoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBBZGQgdGhlIGRpZ2l0IG4gdG8gdGhlIHJlc3VsdCBhcnJheS5cclxuICAgICAgcWNbcWkrK10gPSBjbXAgPyBuIDogKytuO1xyXG5cclxuICAgICAgLy8gVXBkYXRlIHRoZSByZW1haW5kZXIuXHJcbiAgICAgIGlmIChyWzBdICYmIGNtcCkgcltybF0gPSBhW2FpXSB8fCAwO1xyXG4gICAgICBlbHNlIHIgPSBbYVthaV1dO1xyXG5cclxuICAgIH0gd2hpbGUgKChhaSsrIDwgYWwgfHwgclswXSAhPT0gVU5ERUZJTkVEKSAmJiBrLS0pO1xyXG5cclxuICAgIC8vIExlYWRpbmcgemVybz8gRG8gbm90IHJlbW92ZSBpZiByZXN1bHQgaXMgc2ltcGx5IHplcm8gKHFpID09IDEpLlxyXG4gICAgaWYgKCFxY1swXSAmJiBxaSAhPSAxKSB7XHJcblxyXG4gICAgICAvLyBUaGVyZSBjYW4ndCBiZSBtb3JlIHRoYW4gb25lIHplcm8uXHJcbiAgICAgIHFjLnNoaWZ0KCk7XHJcbiAgICAgIHEuZS0tO1xyXG4gICAgICBwLS07XHJcbiAgICB9XHJcblxyXG4gICAgLy8gUm91bmQ/XHJcbiAgICBpZiAocWkgPiBwKSByb3VuZChxLCBwLCBCaWcuUk0sIHJbMF0gIT09IFVOREVGSU5FRCk7XHJcblxyXG4gICAgcmV0dXJuIHE7XHJcbiAgfTtcclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIHRydWUgaWYgdGhlIHZhbHVlIG9mIHRoaXMgQmlnIGlzIGVxdWFsIHRvIHRoZSB2YWx1ZSBvZiBCaWcgeSwgb3RoZXJ3aXNlIHJldHVybiBmYWxzZS5cclxuICAgKi9cclxuICBQLmVxID0gZnVuY3Rpb24gKHkpIHtcclxuICAgIHJldHVybiB0aGlzLmNtcCh5KSA9PT0gMDtcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgdmFsdWUgb2YgdGhpcyBCaWcgaXMgZ3JlYXRlciB0aGFuIHRoZSB2YWx1ZSBvZiBCaWcgeSwgb3RoZXJ3aXNlIHJldHVyblxyXG4gICAqIGZhbHNlLlxyXG4gICAqL1xyXG4gIFAuZ3QgPSBmdW5jdGlvbiAoeSkge1xyXG4gICAgcmV0dXJuIHRoaXMuY21wKHkpID4gMDtcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgdmFsdWUgb2YgdGhpcyBCaWcgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSB2YWx1ZSBvZiBCaWcgeSwgb3RoZXJ3aXNlXHJcbiAgICogcmV0dXJuIGZhbHNlLlxyXG4gICAqL1xyXG4gIFAuZ3RlID0gZnVuY3Rpb24gKHkpIHtcclxuICAgIHJldHVybiB0aGlzLmNtcCh5KSA+IC0xO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiB0cnVlIGlmIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZyBpcyBsZXNzIHRoYW4gdGhlIHZhbHVlIG9mIEJpZyB5LCBvdGhlcndpc2UgcmV0dXJuIGZhbHNlLlxyXG4gICAqL1xyXG4gIFAubHQgPSBmdW5jdGlvbiAoeSkge1xyXG4gICAgcmV0dXJuIHRoaXMuY21wKHkpIDwgMDtcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgdmFsdWUgb2YgdGhpcyBCaWcgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSB2YWx1ZSBvZiBCaWcgeSwgb3RoZXJ3aXNlXHJcbiAgICogcmV0dXJuIGZhbHNlLlxyXG4gICAqL1xyXG4gIFAubHRlID0gZnVuY3Rpb24gKHkpIHtcclxuICAgIHJldHVybiB0aGlzLmNtcCh5KSA8IDE7XHJcbiAgfTtcclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgbmV3IEJpZyB3aG9zZSB2YWx1ZSBpcyB0aGUgdmFsdWUgb2YgdGhpcyBCaWcgbWludXMgdGhlIHZhbHVlIG9mIEJpZyB5LlxyXG4gICAqL1xyXG4gIFAubWludXMgPSBQLnN1YiA9IGZ1bmN0aW9uICh5KSB7XHJcbiAgICB2YXIgaSwgaiwgdCwgeGx0eSxcclxuICAgICAgeCA9IHRoaXMsXHJcbiAgICAgIEJpZyA9IHguY29uc3RydWN0b3IsXHJcbiAgICAgIGEgPSB4LnMsXHJcbiAgICAgIGIgPSAoeSA9IG5ldyBCaWcoeSkpLnM7XHJcblxyXG4gICAgLy8gU2lnbnMgZGlmZmVyP1xyXG4gICAgaWYgKGEgIT0gYikge1xyXG4gICAgICB5LnMgPSAtYjtcclxuICAgICAgcmV0dXJuIHgucGx1cyh5KTtcclxuICAgIH1cclxuXHJcbiAgICB2YXIgeGMgPSB4LmMuc2xpY2UoKSxcclxuICAgICAgeGUgPSB4LmUsXHJcbiAgICAgIHljID0geS5jLFxyXG4gICAgICB5ZSA9IHkuZTtcclxuXHJcbiAgICAvLyBFaXRoZXIgemVybz9cclxuICAgIGlmICgheGNbMF0gfHwgIXljWzBdKSB7XHJcbiAgICAgIGlmICh5Y1swXSkge1xyXG4gICAgICAgIHkucyA9IC1iO1xyXG4gICAgICB9IGVsc2UgaWYgKHhjWzBdKSB7XHJcbiAgICAgICAgeSA9IG5ldyBCaWcoeCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgeS5zID0gMTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4geTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBEZXRlcm1pbmUgd2hpY2ggaXMgdGhlIGJpZ2dlciBudW1iZXIuIFByZXBlbmQgemVyb3MgdG8gZXF1YWxpc2UgZXhwb25lbnRzLlxyXG4gICAgaWYgKGEgPSB4ZSAtIHllKSB7XHJcblxyXG4gICAgICBpZiAoeGx0eSA9IGEgPCAwKSB7XHJcbiAgICAgICAgYSA9IC1hO1xyXG4gICAgICAgIHQgPSB4YztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB5ZSA9IHhlO1xyXG4gICAgICAgIHQgPSB5YztcclxuICAgICAgfVxyXG5cclxuICAgICAgdC5yZXZlcnNlKCk7XHJcbiAgICAgIGZvciAoYiA9IGE7IGItLTspIHQucHVzaCgwKTtcclxuICAgICAgdC5yZXZlcnNlKCk7XHJcbiAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgLy8gRXhwb25lbnRzIGVxdWFsLiBDaGVjayBkaWdpdCBieSBkaWdpdC5cclxuICAgICAgaiA9ICgoeGx0eSA9IHhjLmxlbmd0aCA8IHljLmxlbmd0aCkgPyB4YyA6IHljKS5sZW5ndGg7XHJcblxyXG4gICAgICBmb3IgKGEgPSBiID0gMDsgYiA8IGo7IGIrKykge1xyXG4gICAgICAgIGlmICh4Y1tiXSAhPSB5Y1tiXSkge1xyXG4gICAgICAgICAgeGx0eSA9IHhjW2JdIDwgeWNbYl07XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyB4IDwgeT8gUG9pbnQgeGMgdG8gdGhlIGFycmF5IG9mIHRoZSBiaWdnZXIgbnVtYmVyLlxyXG4gICAgaWYgKHhsdHkpIHtcclxuICAgICAgdCA9IHhjO1xyXG4gICAgICB4YyA9IHljO1xyXG4gICAgICB5YyA9IHQ7XHJcbiAgICAgIHkucyA9IC15LnM7XHJcbiAgICB9XHJcblxyXG4gICAgLypcclxuICAgICAqIEFwcGVuZCB6ZXJvcyB0byB4YyBpZiBzaG9ydGVyLiBObyBuZWVkIHRvIGFkZCB6ZXJvcyB0byB5YyBpZiBzaG9ydGVyIGFzIHN1YnRyYWN0aW9uIG9ubHlcclxuICAgICAqIG5lZWRzIHRvIHN0YXJ0IGF0IHljLmxlbmd0aC5cclxuICAgICAqL1xyXG4gICAgaWYgKChiID0gKGogPSB5Yy5sZW5ndGgpIC0gKGkgPSB4Yy5sZW5ndGgpKSA+IDApIGZvciAoOyBiLS07KSB4Y1tpKytdID0gMDtcclxuXHJcbiAgICAvLyBTdWJ0cmFjdCB5YyBmcm9tIHhjLlxyXG4gICAgZm9yIChiID0gaTsgaiA+IGE7KSB7XHJcbiAgICAgIGlmICh4Y1stLWpdIDwgeWNbal0pIHtcclxuICAgICAgICBmb3IgKGkgPSBqOyBpICYmICF4Y1stLWldOykgeGNbaV0gPSA5O1xyXG4gICAgICAgIC0teGNbaV07XHJcbiAgICAgICAgeGNbal0gKz0gMTA7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHhjW2pdIC09IHljW2pdO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFJlbW92ZSB0cmFpbGluZyB6ZXJvcy5cclxuICAgIGZvciAoOyB4Y1stLWJdID09PSAwOykgeGMucG9wKCk7XHJcblxyXG4gICAgLy8gUmVtb3ZlIGxlYWRpbmcgemVyb3MgYW5kIGFkanVzdCBleHBvbmVudCBhY2NvcmRpbmdseS5cclxuICAgIGZvciAoOyB4Y1swXSA9PT0gMDspIHtcclxuICAgICAgeGMuc2hpZnQoKTtcclxuICAgICAgLS15ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXhjWzBdKSB7XHJcblxyXG4gICAgICAvLyBuIC0gbiA9ICswXHJcbiAgICAgIHkucyA9IDE7XHJcblxyXG4gICAgICAvLyBSZXN1bHQgbXVzdCBiZSB6ZXJvLlxyXG4gICAgICB4YyA9IFt5ZSA9IDBdO1xyXG4gICAgfVxyXG5cclxuICAgIHkuYyA9IHhjO1xyXG4gICAgeS5lID0geWU7XHJcblxyXG4gICAgcmV0dXJuIHk7XHJcbiAgfTtcclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgbmV3IEJpZyB3aG9zZSB2YWx1ZSBpcyB0aGUgdmFsdWUgb2YgdGhpcyBCaWcgbW9kdWxvIHRoZSB2YWx1ZSBvZiBCaWcgeS5cclxuICAgKi9cclxuICBQLm1vZCA9IGZ1bmN0aW9uICh5KSB7XHJcbiAgICB2YXIgeWd0eCxcclxuICAgICAgeCA9IHRoaXMsXHJcbiAgICAgIEJpZyA9IHguY29uc3RydWN0b3IsXHJcbiAgICAgIGEgPSB4LnMsXHJcbiAgICAgIGIgPSAoeSA9IG5ldyBCaWcoeSkpLnM7XHJcblxyXG4gICAgaWYgKCF5LmNbMF0pIHtcclxuICAgICAgdGhyb3cgRXJyb3IoRElWX0JZX1pFUk8pO1xyXG4gICAgfVxyXG5cclxuICAgIHgucyA9IHkucyA9IDE7XHJcbiAgICB5Z3R4ID0geS5jbXAoeCkgPT0gMTtcclxuICAgIHgucyA9IGE7XHJcbiAgICB5LnMgPSBiO1xyXG5cclxuICAgIGlmICh5Z3R4KSByZXR1cm4gbmV3IEJpZyh4KTtcclxuXHJcbiAgICBhID0gQmlnLkRQO1xyXG4gICAgYiA9IEJpZy5STTtcclxuICAgIEJpZy5EUCA9IEJpZy5STSA9IDA7XHJcbiAgICB4ID0geC5kaXYoeSk7XHJcbiAgICBCaWcuRFAgPSBhO1xyXG4gICAgQmlnLlJNID0gYjtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5taW51cyh4LnRpbWVzKHkpKTtcclxuICB9O1xyXG4gIFxyXG4gIFxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgbmV3IEJpZyB3aG9zZSB2YWx1ZSBpcyB0aGUgdmFsdWUgb2YgdGhpcyBCaWcgbmVnYXRlZC5cclxuICAgKi9cclxuICBQLm5lZyA9IGZ1bmN0aW9uICgpIHtcclxuICAgIHZhciB4ID0gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcyk7XHJcbiAgICB4LnMgPSAteC5zO1xyXG4gICAgcmV0dXJuIHg7XHJcbiAgfTtcclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgbmV3IEJpZyB3aG9zZSB2YWx1ZSBpcyB0aGUgdmFsdWUgb2YgdGhpcyBCaWcgcGx1cyB0aGUgdmFsdWUgb2YgQmlnIHkuXHJcbiAgICovXHJcbiAgUC5wbHVzID0gUC5hZGQgPSBmdW5jdGlvbiAoeSkge1xyXG4gICAgdmFyIGUsIGssIHQsXHJcbiAgICAgIHggPSB0aGlzLFxyXG4gICAgICBCaWcgPSB4LmNvbnN0cnVjdG9yO1xyXG5cclxuICAgIHkgPSBuZXcgQmlnKHkpO1xyXG5cclxuICAgIC8vIFNpZ25zIGRpZmZlcj9cclxuICAgIGlmICh4LnMgIT0geS5zKSB7XHJcbiAgICAgIHkucyA9IC15LnM7XHJcbiAgICAgIHJldHVybiB4Lm1pbnVzKHkpO1xyXG4gICAgfVxyXG5cclxuICAgIHZhciB4ZSA9IHguZSxcclxuICAgICAgeGMgPSB4LmMsXHJcbiAgICAgIHllID0geS5lLFxyXG4gICAgICB5YyA9IHkuYztcclxuXHJcbiAgICAvLyBFaXRoZXIgemVybz9cclxuICAgIGlmICgheGNbMF0gfHwgIXljWzBdKSB7XHJcbiAgICAgIGlmICgheWNbMF0pIHtcclxuICAgICAgICBpZiAoeGNbMF0pIHtcclxuICAgICAgICAgIHkgPSBuZXcgQmlnKHgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB5LnMgPSB4LnM7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB5O1xyXG4gICAgfVxyXG5cclxuICAgIHhjID0geGMuc2xpY2UoKTtcclxuXHJcbiAgICAvLyBQcmVwZW5kIHplcm9zIHRvIGVxdWFsaXNlIGV4cG9uZW50cy5cclxuICAgIC8vIE5vdGU6IHJldmVyc2UgZmFzdGVyIHRoYW4gdW5zaGlmdHMuXHJcbiAgICBpZiAoZSA9IHhlIC0geWUpIHtcclxuICAgICAgaWYgKGUgPiAwKSB7XHJcbiAgICAgICAgeWUgPSB4ZTtcclxuICAgICAgICB0ID0geWM7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZSA9IC1lO1xyXG4gICAgICAgIHQgPSB4YztcclxuICAgICAgfVxyXG5cclxuICAgICAgdC5yZXZlcnNlKCk7XHJcbiAgICAgIGZvciAoOyBlLS07KSB0LnB1c2goMCk7XHJcbiAgICAgIHQucmV2ZXJzZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFBvaW50IHhjIHRvIHRoZSBsb25nZXIgYXJyYXkuXHJcbiAgICBpZiAoeGMubGVuZ3RoIC0geWMubGVuZ3RoIDwgMCkge1xyXG4gICAgICB0ID0geWM7XHJcbiAgICAgIHljID0geGM7XHJcbiAgICAgIHhjID0gdDtcclxuICAgIH1cclxuXHJcbiAgICBlID0geWMubGVuZ3RoO1xyXG5cclxuICAgIC8vIE9ubHkgc3RhcnQgYWRkaW5nIGF0IHljLmxlbmd0aCAtIDEgYXMgdGhlIGZ1cnRoZXIgZGlnaXRzIG9mIHhjIGNhbiBiZSBsZWZ0IGFzIHRoZXkgYXJlLlxyXG4gICAgZm9yIChrID0gMDsgZTsgeGNbZV0gJT0gMTApIGsgPSAoeGNbLS1lXSA9IHhjW2VdICsgeWNbZV0gKyBrKSAvIDEwIHwgMDtcclxuXHJcbiAgICAvLyBObyBuZWVkIHRvIGNoZWNrIGZvciB6ZXJvLCBhcyAreCArICt5ICE9IDAgJiYgLXggKyAteSAhPSAwXHJcblxyXG4gICAgaWYgKGspIHtcclxuICAgICAgeGMudW5zaGlmdChrKTtcclxuICAgICAgKyt5ZTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBSZW1vdmUgdHJhaWxpbmcgemVyb3MuXHJcbiAgICBmb3IgKGUgPSB4Yy5sZW5ndGg7IHhjWy0tZV0gPT09IDA7KSB4Yy5wb3AoKTtcclxuXHJcbiAgICB5LmMgPSB4YztcclxuICAgIHkuZSA9IHllO1xyXG5cclxuICAgIHJldHVybiB5O1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIEJpZyB3aG9zZSB2YWx1ZSBpcyB0aGUgdmFsdWUgb2YgdGhpcyBCaWcgcmFpc2VkIHRvIHRoZSBwb3dlciBuLlxyXG4gICAqIElmIG4gaXMgbmVnYXRpdmUsIHJvdW5kIHRvIGEgbWF4aW11bSBvZiBCaWcuRFAgZGVjaW1hbCBwbGFjZXMgdXNpbmcgcm91bmRpbmdcclxuICAgKiBtb2RlIEJpZy5STS5cclxuICAgKlxyXG4gICAqIG4ge251bWJlcn0gSW50ZWdlciwgLU1BWF9QT1dFUiB0byBNQVhfUE9XRVIgaW5jbHVzaXZlLlxyXG4gICAqL1xyXG4gIFAucG93ID0gZnVuY3Rpb24gKG4pIHtcclxuICAgIHZhciB4ID0gdGhpcyxcclxuICAgICAgb25lID0gbmV3IHguY29uc3RydWN0b3IoJzEnKSxcclxuICAgICAgeSA9IG9uZSxcclxuICAgICAgaXNuZWcgPSBuIDwgMDtcclxuXHJcbiAgICBpZiAobiAhPT0gfn5uIHx8IG4gPCAtTUFYX1BPV0VSIHx8IG4gPiBNQVhfUE9XRVIpIHtcclxuICAgICAgdGhyb3cgRXJyb3IoSU5WQUxJRCArICdleHBvbmVudCcpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChpc25lZykgbiA9IC1uO1xyXG5cclxuICAgIGZvciAoOzspIHtcclxuICAgICAgaWYgKG4gJiAxKSB5ID0geS50aW1lcyh4KTtcclxuICAgICAgbiA+Pj0gMTtcclxuICAgICAgaWYgKCFuKSBicmVhaztcclxuICAgICAgeCA9IHgudGltZXMoeCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGlzbmVnID8gb25lLmRpdih5KSA6IHk7XHJcbiAgfTtcclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgbmV3IEJpZyB3aG9zZSB2YWx1ZSBpcyB0aGUgdmFsdWUgb2YgdGhpcyBCaWcgcm91bmRlZCB0byBhIG1heGltdW0gcHJlY2lzaW9uIG9mIHNkXHJcbiAgICogc2lnbmlmaWNhbnQgZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgcm0sIG9yIEJpZy5STSBpZiBybSBpcyBub3Qgc3BlY2lmaWVkLlxyXG4gICAqXHJcbiAgICogc2Qge251bWJlcn0gU2lnbmlmaWNhbnQgZGlnaXRzOiBpbnRlZ2VyLCAxIHRvIE1BWF9EUCBpbmNsdXNpdmUuXHJcbiAgICogcm0/IHtudW1iZXJ9IFJvdW5kaW5nIG1vZGU6IDAgKGRvd24pLCAxIChoYWxmLXVwKSwgMiAoaGFsZi1ldmVuKSBvciAzICh1cCkuXHJcbiAgICovXHJcbiAgUC5wcmVjID0gZnVuY3Rpb24gKHNkLCBybSkge1xyXG4gICAgaWYgKHNkICE9PSB+fnNkIHx8IHNkIDwgMSB8fCBzZCA+IE1BWF9EUCkge1xyXG4gICAgICB0aHJvdyBFcnJvcihJTlZBTElEICsgJ3ByZWNpc2lvbicpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJvdW5kKG5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMpLCBzZCwgcm0pO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBCaWcgd2hvc2UgdmFsdWUgaXMgdGhlIHZhbHVlIG9mIHRoaXMgQmlnIHJvdW5kZWQgdG8gYSBtYXhpbXVtIG9mIGRwIGRlY2ltYWwgcGxhY2VzXHJcbiAgICogdXNpbmcgcm91bmRpbmcgbW9kZSBybSwgb3IgQmlnLlJNIGlmIHJtIGlzIG5vdCBzcGVjaWZpZWQuXHJcbiAgICogSWYgZHAgaXMgbmVnYXRpdmUsIHJvdW5kIHRvIGFuIGludGVnZXIgd2hpY2ggaXMgYSBtdWx0aXBsZSBvZiAxMCoqLWRwLlxyXG4gICAqIElmIGRwIGlzIG5vdCBzcGVjaWZpZWQsIHJvdW5kIHRvIDAgZGVjaW1hbCBwbGFjZXMuXHJcbiAgICpcclxuICAgKiBkcD8ge251bWJlcn0gSW50ZWdlciwgLU1BWF9EUCB0byBNQVhfRFAgaW5jbHVzaXZlLlxyXG4gICAqIHJtPyB7bnVtYmVyfSBSb3VuZGluZyBtb2RlOiAwIChkb3duKSwgMSAoaGFsZi11cCksIDIgKGhhbGYtZXZlbikgb3IgMyAodXApLlxyXG4gICAqL1xyXG4gIFAucm91bmQgPSBmdW5jdGlvbiAoZHAsIHJtKSB7XHJcbiAgICBpZiAoZHAgPT09IFVOREVGSU5FRCkgZHAgPSAwO1xyXG4gICAgZWxzZSBpZiAoZHAgIT09IH5+ZHAgfHwgZHAgPCAtTUFYX0RQIHx8IGRwID4gTUFYX0RQKSB7XHJcbiAgICAgIHRocm93IEVycm9yKElOVkFMSURfRFApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJvdW5kKG5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMpLCBkcCArIHRoaXMuZSArIDEsIHJtKTtcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgQmlnIHdob3NlIHZhbHVlIGlzIHRoZSBzcXVhcmUgcm9vdCBvZiB0aGUgdmFsdWUgb2YgdGhpcyBCaWcsIHJvdW5kZWQsIGlmXHJcbiAgICogbmVjZXNzYXJ5LCB0byBhIG1heGltdW0gb2YgQmlnLkRQIGRlY2ltYWwgcGxhY2VzIHVzaW5nIHJvdW5kaW5nIG1vZGUgQmlnLlJNLlxyXG4gICAqL1xyXG4gIFAuc3FydCA9IGZ1bmN0aW9uICgpIHtcclxuICAgIHZhciByLCBjLCB0LFxyXG4gICAgICB4ID0gdGhpcyxcclxuICAgICAgQmlnID0geC5jb25zdHJ1Y3RvcixcclxuICAgICAgcyA9IHgucyxcclxuICAgICAgZSA9IHguZSxcclxuICAgICAgaGFsZiA9IG5ldyBCaWcoJzAuNScpO1xyXG5cclxuICAgIC8vIFplcm8/XHJcbiAgICBpZiAoIXguY1swXSkgcmV0dXJuIG5ldyBCaWcoeCk7XHJcblxyXG4gICAgLy8gTmVnYXRpdmU/XHJcbiAgICBpZiAocyA8IDApIHtcclxuICAgICAgdGhyb3cgRXJyb3IoTkFNRSArICdObyBzcXVhcmUgcm9vdCcpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEVzdGltYXRlLlxyXG4gICAgcyA9IE1hdGguc3FydCh4ICsgJycpO1xyXG5cclxuICAgIC8vIE1hdGguc3FydCB1bmRlcmZsb3cvb3ZlcmZsb3c/XHJcbiAgICAvLyBSZS1lc3RpbWF0ZTogcGFzcyB4IGNvZWZmaWNpZW50IHRvIE1hdGguc3FydCBhcyBpbnRlZ2VyLCB0aGVuIGFkanVzdCB0aGUgcmVzdWx0IGV4cG9uZW50LlxyXG4gICAgaWYgKHMgPT09IDAgfHwgcyA9PT0gMSAvIDApIHtcclxuICAgICAgYyA9IHguYy5qb2luKCcnKTtcclxuICAgICAgaWYgKCEoYy5sZW5ndGggKyBlICYgMSkpIGMgKz0gJzAnO1xyXG4gICAgICBzID0gTWF0aC5zcXJ0KGMpO1xyXG4gICAgICBlID0gKChlICsgMSkgLyAyIHwgMCkgLSAoZSA8IDAgfHwgZSAmIDEpO1xyXG4gICAgICByID0gbmV3IEJpZygocyA9PSAxIC8gMCA/ICc1ZScgOiAocyA9IHMudG9FeHBvbmVudGlhbCgpKS5zbGljZSgwLCBzLmluZGV4T2YoJ2UnKSArIDEpKSArIGUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgciA9IG5ldyBCaWcocyArICcnKTtcclxuICAgIH1cclxuXHJcbiAgICBlID0gci5lICsgKEJpZy5EUCArPSA0KTtcclxuXHJcbiAgICAvLyBOZXd0b24tUmFwaHNvbiBpdGVyYXRpb24uXHJcbiAgICBkbyB7XHJcbiAgICAgIHQgPSByO1xyXG4gICAgICByID0gaGFsZi50aW1lcyh0LnBsdXMoeC5kaXYodCkpKTtcclxuICAgIH0gd2hpbGUgKHQuYy5zbGljZSgwLCBlKS5qb2luKCcnKSAhPT0gci5jLnNsaWNlKDAsIGUpLmpvaW4oJycpKTtcclxuXHJcbiAgICByZXR1cm4gcm91bmQociwgKEJpZy5EUCAtPSA0KSArIHIuZSArIDEsIEJpZy5STSk7XHJcbiAgfTtcclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgbmV3IEJpZyB3aG9zZSB2YWx1ZSBpcyB0aGUgdmFsdWUgb2YgdGhpcyBCaWcgdGltZXMgdGhlIHZhbHVlIG9mIEJpZyB5LlxyXG4gICAqL1xyXG4gIFAudGltZXMgPSBQLm11bCA9IGZ1bmN0aW9uICh5KSB7XHJcbiAgICB2YXIgYyxcclxuICAgICAgeCA9IHRoaXMsXHJcbiAgICAgIEJpZyA9IHguY29uc3RydWN0b3IsXHJcbiAgICAgIHhjID0geC5jLFxyXG4gICAgICB5YyA9ICh5ID0gbmV3IEJpZyh5KSkuYyxcclxuICAgICAgYSA9IHhjLmxlbmd0aCxcclxuICAgICAgYiA9IHljLmxlbmd0aCxcclxuICAgICAgaSA9IHguZSxcclxuICAgICAgaiA9IHkuZTtcclxuXHJcbiAgICAvLyBEZXRlcm1pbmUgc2lnbiBvZiByZXN1bHQuXHJcbiAgICB5LnMgPSB4LnMgPT0geS5zID8gMSA6IC0xO1xyXG5cclxuICAgIC8vIFJldHVybiBzaWduZWQgMCBpZiBlaXRoZXIgMC5cclxuICAgIGlmICgheGNbMF0gfHwgIQ== |
| 1 | { |
| 2 | "ActionError": { |
| 3 | "kind": { |
| 4 | "FunctionCallError": { |
| 5 | "MethodResolveError": "MethodNotFound" |
| 6 | } |
| 7 | }, |
| 8 | "index": 0 |
| 9 | } |
| 10 | } |
| 1 | |
| 1 | { |
| 2 | "deposit": "15773439680254355172748" |
| 3 | } |
| 1 | |
| 1 | |