mberr · data · 2.7c767379.chunk.js_67
{
"2.7c767379.chunk.js_67": "base64:PWUuY2hpbGRyZW4scj1lLmluLGk9ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciByLG4saT17fSxvPU9iamVjdC5rZXlzKGUpO2ZvcihuPTA7bjxvLmxlbmd0aDtuKyspcj1vW25dLHQuaW5kZXhPZihyKT49MHx8KGlbcl09ZVtyXSk7cmV0dXJuIGl9KGUsWyJjaGlsZHJlbiIsImluIl0pLGE9bi5kZWZhdWx0LkNoaWxkcmVuLnRvQXJyYXkodCkscz1hWzBdLHU9YVsxXTtyZXR1cm4gZGVsZXRlIGkub25FbnRlcixkZWxldGUgaS5vbkVudGVyaW5nLGRlbGV0ZSBpLm9uRW50ZXJlZCxkZWxldGUgaS5vbkV4aXQsZGVsZXRlIGkub25FeGl0aW5nLGRlbGV0ZSBpLm9uRXhpdGVkLG4uZGVmYXVsdC5jcmVhdGVFbGVtZW50KG8uZGVmYXVsdCxpLHI/bi5kZWZhdWx0LmNsb25lRWxlbWVudChzLHtrZXk6ImZpcnN0IixvbkVudGVyOnRoaXMuaGFuZGxlRW50ZXIsb25FbnRlcmluZzp0aGlzLmhhbmRsZUVudGVyaW5nLG9uRW50ZXJlZDp0aGlzLmhhbmRsZUVudGVyZWR9KTpuLmRlZmF1bHQuY2xvbmVFbGVtZW50KHUse2tleToic2Vjb25kIixvbkVudGVyOnRoaXMuaGFuZGxlRXhpdCxvbkVudGVyaW5nOnRoaXMuaGFuZGxlRXhpdGluZyxvbkVudGVyZWQ6dGhpcy5oYW5kbGVFeGl0ZWR9KSl9LGF9KG4uZGVmYXVsdC5Db21wb25lbnQpO3MucHJvcFR5cGVzPXt9O3ZhciB1PXM7dC5kZWZhdWx0PXUsZS5leHBvcnRzPXQuZGVmYXVsdH0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt0Ll9fZXNNb2R1bGU9ITAsdC5nZXRDaGlsZE1hcHBpbmc9aSx0Lm1lcmdlQ2hpbGRNYXBwaW5ncz1vLHQuZ2V0SW5pdGlhbENoaWxkTWFwcGluZz1mdW5jdGlvbihlLHQpe3JldHVybiBpKGUuY2hpbGRyZW4sZnVuY3Rpb24ocil7cmV0dXJuKDAsbi5jbG9uZUVsZW1lbnQpKHIse29uRXhpdGVkOnQuYmluZChudWxsLHIpLGluOiEwLGFwcGVhcjphKHIsImFwcGVhciIsZSksZW50ZXI6YShyLCJlbnRlciIsZSksZXhpdDphKHIsImV4aXQiLGUpfSl9KX0sdC5nZXROZXh0Q2hpbGRNYXBwaW5nPWZ1bmN0aW9uKGUsdCxyKXt2YXIgcz1pKGUuY2hpbGRyZW4pLHU9byh0LHMpO3JldHVybiBPYmplY3Qua2V5cyh1KS5mb3JFYWNoKGZ1bmN0aW9uKGkpe3ZhciBvPXVbaV07aWYoKDAsbi5pc1ZhbGlkRWxlbWVudCkobykpe3ZhciBjPWkgaW4gdCxmPWkgaW4gcyxsPXRbaV0saD0oMCxuLmlzVmFsaWRFbGVtZW50KShsKSYmIWwucHJvcHMuaW47IWZ8fGMmJiFoP2Z8fCFjfHxoP2YmJmMmJigwLG4uaXNWYWxpZEVsZW1lbnQpKGwpJiYodVtpXT0oMCxuLmNsb25lRWxlbWVudCkobyx7b25FeGl0ZWQ6ci5iaW5kKG51bGwsbyksaW46bC5wcm9wcy5pbixleGl0OmEobywiZXhpdCIsZSksZW50ZXI6YShvLCJlbnRlciIsZSl9KSk6dVtpXT0oMCxuLmNsb25lRWxlbWVudCkobyx7aW46ITF9KTp1W2ldPSgwLG4uY2xvbmVFbGVtZW50KShvLHtvbkV4aXRlZDpyLmJpbmQobnVsbCxvKSxpbjohMCxleGl0OmEobywiZXhpdCIsZSksZW50ZXI6YShvLCJlbnRlciIsZSl9KX19KSx1fTt2YXIgbj1yKDEpO2Z1bmN0aW9uIGkoZSx0KXt2YXIgcj1PYmplY3QuY3JlYXRlKG51bGwpO3JldHVybiBlJiZuLkNoaWxkcmVuLm1hcChlLGZ1bmN0aW9uKGUpe3JldHVybiBlfSkuZm9yRWFjaChmdW5jdGlvbihlKXtyW2Uua2V5XT1mdW5jdGlvbihlKXtyZXR1cm4gdCYmKDAsbi5pc1ZhbGlkRWxlbWVudCkoZSk/dChlKTplfShlKX0pLHJ9ZnVuY3Rpb24gbyhlLHQpe2Z1bmN0aW9uIHIocil7cmV0dXJuIHIgaW4gdD90W3JdOmVbcl19ZT1lfHx7fSx0PXR8fHt9O3ZhciBuLGk9T2JqZWN0LmNyZWF0ZShudWxsKSxvPVtdO2Zvcih2YXIgYSBpbiBlKWEgaW4gdD9vLmxlbmd0aCYmKGlbYV09byxvPVtdKTpvLnB1c2goYSk7dmFyIHM9e307Zm9yKHZhciB1IGluIHQpe2lmKGlbdV0pZm9yKG49MDtuPGlbdV0ubGVuZ3RoO24rKyl7dmFyIGM9aVt1XVtuXTtzW2lbdV1bbl1dPXIoYyl9c1t1XT1yKHUpfWZvcihuPTA7bjxvLmxlbmd0aDtuKyspc1tvW25dXT1yKG9bbl0pO3JldHVybiBzfWZ1bmN0aW9uIGEoZSx0LHIpe3JldHVybiBudWxsIT1yW3RdP3JbdF06ZS5wcm9wc1t0XX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDc1KSxpPXIoMTE3KSxvPXIoMTk2KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQscixhKXt2YXIgcz1PYmplY3QodCk7aWYoIWkodCkpe3ZhciB1PW4ociwzKTt0PW8odCkscj1mdW5jdGlvbihlKXtyZXR1cm4gdShzW2VdLGUscyl9fXZhciBjPWUodCxyLGEpO3JldHVybiBjPi0xP3NbdT90W2NdOmNdOnZvaWQgMH19fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig0OTUpLGk9cig3NSksbz1yKDExMTMpLGE9TWF0aC5tYXg7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXt2YXIgcz1udWxsPT1lPzA6ZS5sZW5ndGg7aWYoIXMpcmV0dXJuLTE7dmFyIHU9bnVsbD09cj8wOm8ocik7cmV0dXJuIHU8MCYmKHU9YShzK3UsMCkpLG4oZSxpKHQsMyksdSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig1MDEpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1uKGUpLHI9dCUxO3JldHVybiB0PT09dD9yP3Qtcjp0OjB9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxMTE1KSxpPXIoMTk5KSxvPXIoNTAxKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQscixhKXtyZXR1cm4gYSYmIm51bWJlciIhPXR5cGVvZiBhJiZpKHQscixhKSYmKHI9YT12b2lkIDApLHQ9byh0KSx2b2lkIDA9PT1yPyhyPXQsdD0wKTpyPW8ociksYT12b2lkIDA9PT1hP3Q8cj8xOi0xOm8oYSksbih0LHIsYSxlKX19fSxmdW5jdGlvbihlLHQpe3ZhciByPU1hdGguY2VpbCxuPU1hdGgubWF4O2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsaSxvKXtmb3IodmFyIGE9LTEscz1uKHIoKHQtZSkvKGl8fDEpKSwwKSx1PUFycmF5KHMpO3MtLTspdVtvP3M6KythXT1lLGUrPWk7cmV0dXJuIHV9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigzNSksaT1yKDExMTcpLG89cig1MDIpLGE9IkV4cGVjdGVkIGEgZnVuY3Rpb24iLHM9TWF0aC5tYXgsdT1NYXRoLm1pbjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe3ZhciBjLGYsbCxoLHAsZCx5PTAsZz0hMSx2PSExLG09ITA7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcihhKTtmdW5jdGlvbiBiKHQpe3ZhciByPWMsbj1mO3JldHVybiBjPWY9dm9pZCAwLHk9dCxoPWUuYXBwbHkobixyKX1mdW5jdGlvbiBfKGUpe3ZhciByPWUtZDtyZXR1cm4gdm9pZCAwPT09ZHx8cj49dHx8cjwwfHx2JiZlLXk+PWx9ZnVuY3Rpb24gUygpe3ZhciBlPWkoKTtpZihfKGUpKXJldHVybiBFKGUpO3A9c2V0VGltZW91dChTLGZ1bmN0aW9uKGUpe3ZhciByPXQtKGUtZCk7cmV0dXJuIHY/dShyLGwtKGUteSkpOnJ9KGUpKX1mdW5jdGlvbiBFKGUpe3JldHVybiBwPXZvaWQgMCxtJiZjP2IoZSk6KGM9Zj12b2lkIDAsaCl9ZnVuY3Rpb24gdygpe3ZhciBlPWkoKSxyPV8oZSk7aWYoYz1hcmd1bWVudHMsZj10aGlzLGQ9ZSxyKXtpZih2b2lkIDA9PT1wKXJldHVybiBmdW5jdGlvbihlKXtyZXR1cm4geT1lLHA9c2V0VGltZW91dChTLHQpLGc/YihlKTpofShkKTtpZih2KXJldHVybiBjbGVhclRpbWVvdXQocCkscD1zZXRUaW1lb3V0KFMsdCksYihkKX1yZXR1cm4gdm9pZCAwPT09cCYmKHA9c2V0VGltZW91dChTLHQpKSxofXJldHVybiB0PW8odCl8fDAsbihyKSYmKGc9ISFyLmxlYWRpbmcsbD0odj0ibWF4V2FpdCJpbiByKT9zKG8oci5tYXhXYWl0KXx8MCx0KTpsLG09InRyYWlsaW5nImluIHI/ISFyLnRyYWlsaW5nOm0pLHcuY2FuY2VsPWZ1bmN0aW9uKCl7dm9pZCAwIT09cCYmY2xlYXJUaW1lb3V0KHApLHk9MCxjPWQ9Zj1wPXZvaWQgMH0sdy5mbHVzaD1mdW5jdGlvbigpe3JldHVybiB2b2lkIDA9PT1wP2g6RShpKCkpfSx3fX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNjQpO2UuZXhwb3J0cz1mdW5jdGlvbigpe3JldHVybiBuLkRhdGUubm93KCl9fSwsZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe3JldHVybiBudWxsIT1lJiYib2JqZWN0Ij09PXR5cGVvZiBlJiYhMD09PWVbIkBAZnVuY3Rpb25hbC9wbGFjZWhvbGRlciJdfWZ1bmN0aW9uIGkoZSl7cmV0dXJuIGZ1bmN0aW9uIHQocil7cmV0dXJuIDA9PT1hcmd1bWVudHMubGVuZ3RofHxuKHIpP3Q6ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fXIucih0KTt2YXIgbz1pKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlfX0pLGE9byghMSkscz1vKCEwKSx1PXsiQEBmdW5jdGlvbmFsL3BsYWNlaG9sZGVyIjohMH07ZnVuY3Rpb24gYyhlKXtyZXR1cm4gZnVuY3Rpb24gdChyLG8pe3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIHQ7Y2FzZSAxOnJldHVybiBuKHIpP3Q6aShmdW5jdGlvbih0KXtyZXR1cm4gZShyLHQpfSk7ZGVmYXVsdDpyZXR1cm4gbihyKSYmbihvKT90Om4ocik/aShmdW5jdGlvbih0KXtyZXR1cm4gZSh0LG8pfSk6bihvKT9pKGZ1bmN0aW9uKHQpe3JldHVybiBlKHIsdCl9KTplKHIsbyl9fX12YXIgZj1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIE51bWJlcihlKStOdW1iZXIodCl9KTtmdW5jdGlvbiBsKGUsdCl7dmFyIHI7dD10fHxbXTt2YXIgbj0oZT1lfHxbXSkubGVuZ3RoLGk9dC5sZW5ndGgsbz1bXTtmb3Iocj0wO3I8bjspb1tvLmxlbmd0aF09ZVtyXSxyKz0xO2ZvcihyPTA7cjxpOylvW28ubGVuZ3RoXT10W3JdLHIrPTE7cmV0dXJuIG99ZnVuY3Rpb24gaChlLHQpe3N3aXRjaChlKXtjYXNlIDA6cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtjYXNlIDE6cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSAyOnJldHVybiBmdW5jdGlvbihlLHIpe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSAzOnJldHVybiBmdW5jdGlvbihlLHIsbil7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtjYXNlIDQ6cmV0dXJuIGZ1bmN0aW9uKGUscixuLGkpe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSA1OnJldHVybiBmdW5jdGlvbihlLHIsbixpLG8pe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSA2OnJldHVybiBmdW5jdGlvbihlLHIsbixpLG8sYSl7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtjYXNlIDc6cmV0dXJuIGZ1bmN0aW9uKGUscixuLGksbyxhLHMpe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSA4OnJldHVybiBmdW5jdGlvbihlLHIsbixpLG8sYSxzLHUpe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSA5OnJldHVybiBmdW5jdGlvbihlLHIsbixpLG8sYSxzLHUsYyl7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtjYXNlIDEwOnJldHVybiBmdW5jdGlvbihlLHIsbixpLG8sYSxzLHUsYyxmKXtyZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJGaXJzdCBhcmd1bWVudCB0byBfYXJpdHkgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyIG5vIGdyZWF0ZXIgdGhhbiB0ZW4iKX19ZnVuY3Rpb24gcChlLHQscil7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciBpPVtdLG89MCxhPWUscz0wO3M8dC5sZW5ndGh8fG88YXJndW1lbnRzLmxlbmd0aDspe3ZhciB1O3M8dC5sZW5ndGgmJighbih0W3NdKXx8bz49YXJndW1lbnRzLmxlbmd0aCk/dT10W3NdOih1PWFyZ3VtZW50c1tvXSxvKz0xKSxpW3NdPXUsbih1KXx8KGEtPTEpLHMrPTF9cmV0dXJuIGE8PTA/ci5hcHBseSh0aGlzLGkpOmgoYSxwKGUsaSxyKSl9fXZhciBkPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gMT09PWU/aSh0KTpoKGUscChlLFtdLHQpKX0pLHk9aShmdW5jdGlvbihlKXtyZXR1cm4gZChlLmxlbmd0aCxmdW5jdGlvbigpe3ZhciB0PTAscj1hcmd1bWVudHNbMF0sbj1hcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aC0xXSxpPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKTtyZXR1cm4gaVswXT1mdW5jdGlvbigpe3ZhciBlPXIuYXBwbHkodGhpcyxsKGFyZ3VtZW50cyxbdCxuXSkpO3JldHVybiB0Kz0xLGV9LGUuYXBwbHkodGhpcyxpKX0pfSk7ZnVuY3Rpb24gZyhlKXtyZXR1cm4gZnVuY3Rpb24gdChyLG8sYSl7c3dpdGNoKGFyZ3VtZW50cy5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gdDtjYXNlIDE6cmV0dXJuIG4ocik/dDpjKGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUocix0LG4pfSk7Y2FzZSAyOnJldHVybiBuKHIpJiZuKG8pP3Q6bihyKT9jKGZ1bmN0aW9uKHQscil7cmV0dXJuIGUodCxvLHIpfSk6bihvKT9jKGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUocix0LG4pfSk6aShmdW5jdGlvbih0KXtyZXR1cm4gZShyLG8sdCl9KTtkZWZhdWx0OnJldHVybiBuKHIpJiZuKG8pJiZuKGEpP3Q6bihyKSYmbihvKT9jKGZ1bmN0aW9uKHQscil7cmV0dXJuIGUodCxyLGEpfSk6bihyKSYmbihhKT9jKGZ1bmN0aW9uKHQscil7cmV0dXJuIGUodCxvLHIpfSk6bihvKSYmbihhKT9jKGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUocix0LG4pfSk6bihyKT9pKGZ1bmN0aW9uKHQpe3JldHVybiBlKHQsbyxhKX0pOm4obyk/aShmdW5jdGlvbih0KXtyZXR1cm4gZShyLHQsYSl9KTpuKGEpP2koZnVuY3Rpb24odCl7cmV0dXJuIGUocixvLHQpfSk6ZShyLG8sYSl9fX12YXIgdj1nKGZ1bmN0aW9uKGUsdCxyKXtpZih0Pj1yLmxlbmd0aHx8dDwtci5sZW5ndGgpcmV0dXJuIHI7dmFyIG49KHQ8MD9yLmxlbmd0aDowKSt0LGk9bChyKTtyZXR1cm4gaVtuXT1lKHJbbl0pLGl9KSxtPUFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT1lJiZlLmxlbmd0aD49MCYmIltvYmplY3QgQXJyYXldIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKX07ZnVuY3Rpb24gYihlKXtyZXR1cm4iZnVuY3Rpb24iPT09dHlwZW9mIGVbIkBAdHJhbnNkdWNlci9zdGVwIl19ZnVuY3Rpb24gXyhlLHQscil7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoMD09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHIoKTt2YXIgbj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMCksaT1uLnBvcCgpO2lmKCFtKGkpKXtmb3IodmFyIG89MDtvPGUubGVuZ3RoOyl7aWYoImZ1bmN0aW9uIj09PXR5cGVvZiBpW2Vbb11dKXJldHVybiBpW2Vbb11dLmFwcGx5KGksbik7bys9MX1pZihiKGkpKXJldHVybiB0LmFwcGx5KG51bGwsbikoaSl9cmV0dXJuIHIuYXBwbHkodGhpcyxhcmd1bWVudHMpfX1mdW5jdGlvbiBTKGUpe3JldHVybiBlJiZlWyJAQHRyYW5zZHVjZXIvcmVkdWNlZCJdP2U6eyJAQHRyYW5zZHVjZXIvdmFsdWUiOmUsIkBAdHJhbnNkdWNlci9yZWR1Y2VkIjohMH19dmFyIEU9e2luaXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy54ZlsiQEB0cmFuc2R1Y2VyL2luaXQiXSgpfSxyZXN1bHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMueGZbIkBAdHJhbnNkdWNlci9yZXN1bHQiXShlKX19LHc9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7dGhpcy54Zj10LHRoaXMuZj1lLHRoaXMuYWxsPSEwfXJldHVybiBlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL2luaXQiXT1FLmluaXQsZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9yZXN1bHQiXT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5hbGwmJihlPXRoaXMueGZbIkBAdHJhbnNkdWNlci9zdGVwIl0oZSwhMCkpLHRoaXMueGZbIkBAdHJhbnNkdWNlci9yZXN1bHQiXShlKX0sZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9zdGVwIl09ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5mKHQpfHwodGhpcy5hbGw9ITEsZT1TKHRoaXMueGZbIkBAdHJhbnNkdWNlci9zdGVwIl0oZSwhMSkpKSxlfSxlfSgpLFQ9YyhfKFsiYWxsIl0sYyhmdW5jdGlvbihlLHQpe3JldHVybiBuZXcgdyhlLHQpfSksZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoOyl7aWYoIWUodFtyXSkpcmV0dXJuITE7cis9MX1yZXR1cm4hMH0pKSxBPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD5lP3Q6ZX0pO2Z1bmN0aW9uIEMoZSx0KXtmb3IodmFyIHI9MCxuPXQubGVuZ3RoLGk9QXJyYXkobik7cjxuOylpW3JdPWUodFtyXSkscis9MTtyZXR1cm4gaX1mdW5jdGlvbiB4KGUpe3JldHVybiJbb2JqZWN0IFN0cmluZ10iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpfXZhciBJPWkoZnVuY3Rpb24oZSl7cmV0dXJuISFtKGUpfHwhIWUmJigib2JqZWN0Ij09PXR5cGVvZiBlJiYoIXgoZSkmJigxPT09ZS5ub2RlVHlwZT8hIWUubGVuZ3RoOjA9PT1lLmxlbmd0aHx8ZS5sZW5ndGg+MCYmKGUuaGFzT3duUHJvcGVydHkoMCkmJmUuaGFzT3duUHJvcGVydHkoZS5sZW5ndGgtMSkpKSkpfSksaz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dGhpcy5mPWV9cmV0dXJuIGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvaW5pdCJdPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJpbml0IG5vdCBpbXBsZW1lbnRlZCBvbiBYV3JhcCIpfSxlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL3Jlc3VsdCJdPWZ1bmN0aW9uKGUpe3JldHVybiBlfSxlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL3N0ZXAiXT1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmYoZSx0KX0sZX0oKTtmdW5jdGlvbiBPKGUpe3JldHVybiBuZXcgayhlKX12YXIgTj1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGgoZS5sZW5ndGgsZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0LGFyZ3VtZW50cyl9KX0pO2Z1bmN0aW9uIFAoZSx0LHIpe2Zvcih2YXIgbj1yLm5leHQoKTshbi5kb25lOyl7aWYoKHQ9ZVsiQEB0cmFuc2R1Y2VyL3N0ZXAiXSh0LG4udmFsdWUpKSYmdFsiQEB0cmFuc2R1Y2VyL3JlZHVjZWQiXSl7dD10WyJAQHRyYW5zZHVjZXIvdmFsdWUiXTticmVha31uPXIubmV4dCgpfXJldHVybiBlWyJAQHRyYW5zZHVjZXIvcmVzdWx0Il0odCl9ZnVuY3Rpb24gUihlLHQscixuKXtyZXR1cm4gZVsiQEB0cmFuc2R1Y2VyL3Jlc3VsdCJdKHJbbl0oTihlWyJAQHRyYW5zZHVjZXIvc3RlcCJdLGUpLHQpKX12YXIgQj0idW5kZWZpbmVkIiE9PXR5cGVvZiBTeW1ib2w/U3ltYm9sLml0ZXJhdG9yOiJAQGl0ZXJhdG9yIjtmdW5jdGlvbiBNKGUsdCxyKXtpZigiZnVuY3Rpb24iPT09dHlwZW9mIGUmJihlPU8oZSkpLEkocikpcmV0dXJuIGZ1bmN0aW9uKGUsdCxyKXtmb3IodmFyIG49MCxpPXIubGVuZ3RoO248aTspe2lmKCh0PWVbIkBAdHJhbnNkdWNlci9zdGVwIl0odCxyW25dKSkmJnRbIkBAdHJhbnNkdWNlci9yZWR1Y2VkIl0pe3Q9dFsiQEB0cmFuc2R1Y2VyL3ZhbHVlIl07YnJlYWt9bis9MX1yZXR1cm4gZVsiQEB0cmFuc2R1Y2VyL3Jlc3VsdCJdKHQpfShlLHQscik7aWYoImZ1bmN0aW9uIj09PXR5cGVvZiByWyJmYW50YXN5LWxhbmQvcmVkdWNlIl0pcmV0dXJuIFIoZSx0LHIsImZhbnRhc3ktbGFuZC9yZWR1Y2UiKTtpZihudWxsIT1yW0JdKXJldHVybiBQKGUsdCxyW0JdKCkpO2lmKCJmdW5jdGlvbiI9PT10eXBlb2Ygci5uZXh0KXJldHVybiBQKGUsdCxyKTtpZigiZnVuY3Rpb24iPT09dHlwZW9mIHIucmVkdWNlKXJldHVybiBSKGUsdCxyLCJyZWR1Y2UiKTt0aHJvdyBuZXcgVHlwZUVycm9yKCJyZWR1Y2U6IGxpc3QgbXVzdCBiZSBhcnJheSBvciBpdGVyYWJsZSIpfXZhciBMPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3RoaXMueGY9dCx0aGlzLmY9ZX1yZXR1cm4gZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9pbml0Il09RS5pbml0LGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvcmVzdWx0Il09RS5yZXN1bHQsZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9zdGVwIl09ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy54ZlsiQEB0cmFuc2R1Y2VyL3N0ZXAiXShlLHRoaXMuZih0KSl9LGV9KCksRD1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBMKGUsdCl9KTtmdW5jdGlvbiBqKGUsdCl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LGUpfXZhciBVPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsRj1mdW5jdGlvbigpe3JldHVybiJbb2JqZWN0IEFyZ3VtZW50c10iPT09VS5jYWxsKGFyZ3VtZW50cyk/ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgQXJndW1lbnRzXSI9PT1VLmNhbGwoZSl9OmZ1bmN0aW9uKGUpe3JldHVybiBqKCJjYWxsZWUiLGUpfX0sVj0he3RvU3RyaW5nOm51bGx9LnByb3BlcnR5SXNFbnVtZXJhYmxlKCJ0b1N0cmluZyIpLHE9WyJjb25zdHJ1Y3RvciIsInZhbHVlT2YiLCJpc1Byb3RvdHlwZU9mIiwidG9TdHJpbmciLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImhhc093blByb3BlcnR5IiwidG9Mb2NhbGVTdHJpbmciXSxLPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5wcm9wZXJ0eUlzRW51bWVyYWJsZSgibGVuZ3RoIil9KCksej1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcj0wO3I8ZS5sZW5ndGg7KXtpZihlW3JdPT09dClyZXR1cm4hMDtyKz0xfXJldHVybiExfSxHPWkoImZ1bmN0aW9uIiE9PXR5cGVvZiBPYmplY3Qua2V5c3x8Sz9mdW5jdGlvbihlKXtpZihPYmplY3QoZSkhPT1lKXJldHVybltdO3ZhciB0LHIsbj1bXSxpPUsmJkYoZSk7Zm9yKHQgaW4gZSkhaih0LGUpfHxpJiYibGVuZ3RoIj09PXR8fChuW24ubGVuZ3RoXT10KTtpZihWKWZvcihyPXEubGVuZ3RoLTE7cj49MDspaih0PXFbcl0sZSkmJiF6KG4sdCkmJihuW24ubGVuZ3RoXT10KSxyLT0xO3JldHVybiBufTpmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0KGUpIT09ZT9bXTpPYmplY3Qua2V5cyhlKX0pLEg9YyhfKFsiZmFudGFzeS1sYW5kL21hcCIsIm1hcCJdLEQsZnVuY3Rpb24oZSx0KXtzd2l0Y2goT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpKXtjYXNlIltvYmplY3QgRnVuY3Rpb25dIjpyZXR1cm4gZCh0Lmxlbmd0aCxmdW5jdGlvbigpe3JldHVybiBlLmNhbGwodGhpcyx0LmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9KTtjYXNlIltvYmplY3QgT2JqZWN0XSI6cmV0dXJuIE0oZnVuY3Rpb24ocixuKXtyZXR1cm4gcltuXT1lKHRbbl0pLHJ9LHt9LEcodCkpO2RlZmF1bHQ6cmV0dXJuIEMoZSx0KX19KSksVz1jKGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPXQsbj0wO248ZS5sZW5ndGg7KXtpZihudWxsPT1yKXJldHVybjtyPXJbZVtuXV0sbis9MX1yZXR1cm4gcn0pLFk9YyhmdW5jdGlvbihlLHQpe3JldHVybiBXKFtlXSx0KX0pLFg9YyhmdW5jdGlvbihlLHQpe3JldHVybiBIKFkoZSksdCl9KSxRPWcoTSksJD1pKGZ1bmN0aW9uKGUpe3JldHVybiBkKFEoQSwwLFgoImxlbmd0aCIsZSkpLGZ1bmN0aW9uKCl7Zm9yKHZhciB0PTAscj1lLmxlbmd0aDt0PHI7KXtpZighZVt0XS5hcHBseSh0aGlzLGFyZ3VtZW50cykpcmV0dXJuITE7dCs9MX1yZXR1cm4hMH0pfSksWj1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUmJnR9KSxKPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3RoaXMueGY9dCx0aGlzLmY9ZSx0aGlzLmFueT0hMX1yZXR1cm4gZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9pbml0Il09RS5pbml0LGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvcmVzdWx0Il09ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuYW55fHwoZT10aGlzLnhmWyJAQHRyYW5zZHVjZXIvc3RlcCJdKGUsITEpKSx0aGlzLnhmWyJAQHRyYW5zZHVjZXIvcmVzdWx0Il0oZSl9LGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvc3RlcCJdPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuZih0KSYmKHRoaXMuYW55PSEwLGU9Uyh0aGlzLnhmWyJAQHRyYW5zZHVjZXIvc3RlcCJdKGUsITApKSksZX0sZX0oKSxlZT1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBKKGUsdCl9KSx0ZT1jKF8oWyJhbnkiXSxlZSxmdW5jdGlvbihlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7KXtpZihlKHRbcl0pKXJldHVybiEwO3IrPTF9cmV0dXJuITF9KSkscmU9aShmdW5jdGlvbihlKXtyZXR1cm4gZChRKEEsMCxYKCJsZW5ndGgiLGUpKSxmdW5jdGlvbigpe2Zvcih2YXIgdD0wLHI9ZS5sZW5ndGg7dDxyOyl7aWYoZVt0XS5hcHBseSh0aGlzLGFyZ3VtZW50cykpcmV0dXJuITA7dCs9MX1yZXR1cm4hMX0pfSksbmU9YyhmdW5jdGlvbihlLHQpe3JldHVybiJmdW5jdGlvbiI9PT10eXBlb2YgdFsiZmFudGFzeS1sYW5kL2FwIl0/dFsiZmFudGFzeS1sYW5kL2FwIl0oZSk6ImZ1bmN0aW9uIj09PXR5cGVvZiBlLmFwP2UuYXAodCk6ImZ1bmN0aW9uIj09PXR5cGVvZiBlP2Z1bmN0aW9uKHIpe3JldHVybiBlKHIpKHQocikpfTpNKGZ1bmN0aW9uKGUscil7cmV0dXJuIGwoZSxIKHIsdCkpfSxbXSxlKX0pO2Z1bmN0aW9uIGllKGUsdCl7Zm9yKHZhciByPTAsbj10Lmxlbmd0aC0oZS0xKSxpPW5ldyBBcnJheShuPj0wP246MCk7cjxuOylpW3JdPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQscixyK2UpLHIrPTE7cmV0dXJuIGl9dmFyIG9lPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3RoaXMueGY9dCx0aGlzLnBvcz0wLHRoaXMuZnVsbD0hMSx0aGlzLmFjYz1uZXcgQXJyYXkoZSl9cmV0dXJuIGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvaW5pdCJdPUUuaW5pdCxlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL3Jlc3VsdCJdPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmFjYz1udWxsLHRoaXMueGZbIkBAdHJhbnNkdWNlci9yZXN1bHQiXShlKX0sZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9zdGVwIl09ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5zdG9yZSh0KSx0aGlzLmZ1bGw/dGhpcy54ZlsiQEB0cmFuc2R1Y2VyL3N0ZXAiXShlLHRoaXMuZ2V0Q29weSgpKTplfSxlLnByb3RvdHlwZS5zdG9yZT1mdW5jdGlvbihlKXt0aGlzLmFjY1t0aGlzLnBvc109ZSx0aGlzLnBvcys9MSx0aGlzLnBvcz09PXRoaXMuYWNjLmxlbmd0aCYmKHRoaXMucG9zPTAsdGhpcy5mdWxsPSEwKX0sZS5wcm90b3R5cGUuZ2V0Q29weT1mdW5jdGlvbigpe3JldHVybiBsKEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuYWNjLHRoaXMucG9zKSxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzLmFjYywwLHRoaXMucG9zKSl9LGV9KCksYWU9YyhfKFtdLGMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3IG9lKGUsdCl9KSxpZSkpLHNlPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gbCh0LFtlXSl9KSx1ZT1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuYXBwbHkodGhpcyx0KX0pLGNlPWkoZnVuY3Rpb24oZSl7Zm9yKHZhciB0PUcoZSkscj10Lmxlbmd0aCxuPVtdLGk9MDtpPHI7KW5baV09ZVt0W2ldXSxpKz0xO3JldHVybiBufSksZmU9aShmdW5jdGlvbiBlKHQpe3JldHVybiB0PUgoZnVuY3Rpb24odCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDplKHQpfSx0KSxkKFEoQSwwLFgoImxlbmd0aCIsY2UodCkpKSxmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cztyZXR1cm4gSChmdW5jdGlvbih0KXtyZXR1cm4gdWUodCxlKX0sdCl9KX0pLGxlPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdChlKX0pLGhlPWcoZnVuY3Rpb24oZSx0LHIpe3ZhciBuPWUodCksaT1lKHIpO3JldHVybiBuPGk/LTE6bj5pPzE6MH0pLHBlPWcoZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXt9O2Zvcih2YXIgaSBpbiByKW5baV09cltpXTtyZXR1cm4gbltlXT10LG59KSxkZT1OdW1iZXIuaXNJbnRlZ2VyfHxmdW5jdGlvbihlKXtyZXR1cm4gZTw8MD09PWV9LHllPWkoZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWV9KSxnZT1nKGZ1bmN0aW9uIGUodCxyLG4pe2lmKDA9PT10Lmxlbmd0aClyZXR1cm4gcjt2YXIgaT10WzBdO2lmKHQubGVuZ3RoPjEpe3ZhciBvPSF5ZShuKSYmaihpLG4pP25baV06ZGUodFsxXSk/W106e307cj1lKEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQsMSkscixvKX1pZihkZShpKSYmbShuKSl7dmFyIGE9W10uY29uY2F0KG4pO3JldHVybiBhW2ldPXIsYX1yZXR1cm4gcGUoaSxyLG4pfSksdmU9YyhmdW5jdGlvbihlLHQpe3N3aXRjaChlKXtjYXNlIDA6cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQuY2FsbCh0aGlzKX07Y2FzZSAxOnJldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdC5jYWxsKHRoaXMsZSl9O2Nhc2UgMjpyZXR1cm4gZnVuY3Rpb24oZSxyKXtyZXR1cm4gdC5jYWxsKHRoaXMsZSxyKX07Y2FzZSAzOnJldHVybiBmdW5jdGlvbihlLHIsbil7cmV0dXJuIHQuY2FsbCh0aGlzLGUscixuKX07Y2FzZSA0OnJldHVybiBmdW5jdGlvbihlLHIsbixpKXtyZXR1cm4gdC5jYWxsKHRoaXMsZSxyLG4saSl9O2Nhc2UgNTpyZXR1cm4gZnVuY3Rpb24oZSxyLG4saSxvKXtyZXR1cm4gdC5jYWxsKHRoaXMsZSxyLG4saSxvKX07Y2FzZSA2OnJldHVybiBmdW5jdGlvbihlLHIsbixpLG8sYSl7cmV0dXJuIHQuY2FsbCh0aGlzLGUscixuLGksbyxhKX07Y2FzZSA3OnJldHVybiBmdW5jdGlvbihlLHIsbixpLG8sYSxzKXtyZXR1cm4gdC5jYWxsKHRoaXMsZSxyLG4saSxvLGEscyl9O2Nhc2UgODpyZXR1cm4gZnVuY3Rpb24oZSxyLG4saSxvLGEscyx1KXtyZXR1cm4gdC5jYWxsKHRoaXMsZSxyLG4saSxvLGEscyx1KX07Y2FzZSA5OnJldHVybiBmdW5jdGlvbihlLHIsbixpLG8sYSxzLHUsYyl7cmV0dXJuIHQuY2FsbCh0aGlzLGUscixuLGksbyxhLHMsdSxjKX07Y2FzZSAxMDpyZXR1cm4gZnVuY3Rpb24oZSxyLG4saSxvLGEscyx1LGMsZil7cmV0dXJuIHQuY2FsbCh0aGlzLGUscixuLGksbyxhLHMsdSxjLGYpfTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiRmlyc3QgYXJndW1lbnQgdG8gbkFyeSBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGludGVnZXIgbm8gZ3JlYXRlciB0aGFuIHRlbiIpfX0pLG1lPWkoZnVuY3Rpb24oZSl7cmV0dXJuIHZlKDIsZSl9KTtmdW5jdGlvbiBiZShlKXtyZXR1cm4iW29iamVjdCBGdW5jdGlvbl0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpfXZhciBfZT1jKGZ1bmN0aW9uKGUsdCl7dmFyIHI9ZChlLHQpO3JldHVybiBkKGUsZnVuY3Rpb24oKXtyZXR1cm4gTShuZSxIKHIsYXJndW1lbnRzWzBdKSxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSkpfSl9KSxTZT1pKGZ1bmN0aW9uKGUpe3JldHVybiBfZShlLmxlbmd0aCxlKX0pLEVlPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gYmUoZSk/ZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cykmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfTpTZShaKShlLHQpfSksd2U9aShmdW5jdGlvbihlKXtyZXR1cm4gZChlLmxlbmd0aCxlKX0pLFRlPXdlKGZ1bmN0aW9uKGUpe3JldHVybiBlLmFwcGx5KHRoaXMsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpKX0pO2Z1bmN0aW9uIEFlKGUpe3JldHVybiBmdW5jdGlvbiB0KHIpe2Zvcih2YXIgbixpLG8sYT1bXSxzPTAsdT1yLmxlbmd0aDtzPHU7KXtpZihJKHJbc10pKWZvcihvPTAsaT0obj1lP3QocltzXSk6cltzXSkubGVuZ3RoO288aTspYVthLmxlbmd0aF09bltvXSxvKz0xO2Vsc2UgYVthLmxlbmd0aF09cltzXTtzKz0xfXJldHVybiBhfX12YXIgQ2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZnVuY3Rpb24oZSl7cmV0dXJueyJAQHRyYW5zZHVjZXIvaW5pdCI6RS5pbml0LCJAQHRyYW5zZHVjZXIvcmVzdWx0IjpmdW5jdGlvbih0KXtyZXR1cm4gZVsiQEB0cmFuc2R1Y2VyL3Jlc3VsdCJdKHQpfSwiQEB0cmFuc2R1Y2VyL3N0ZXAiOmZ1bmN0aW9uKHQscil7dmFyIG49ZVsiQEB0cmFuc2R1Y2VyL3N0ZXAiXSh0LHIpO3JldHVybiBuWyJAQHRyYW5zZHVjZXIvcmVkdWNlZCJdP3siQEB0cmFuc2R1Y2VyL3ZhbHVlIjpuLCJAQHRyYW5zZHVjZXIvcmVkdWNlZCI6ITB9Om59fX0oZSk7cmV0dXJueyJAQHRyYW5zZHVjZXIvaW5pdCI6RS5pbml0LCJAQHRyYW5zZHVjZXIvcmVzdWx0IjpmdW5jdGlvbihlKXtyZXR1cm4gdFsiQEB0cmFuc2R1Y2VyL3Jlc3VsdCJdKGUpfSwiQEB0cmFuc2R1Y2VyL3N0ZXAiOmZ1bmN0aW9uKGUscil7cmV0dXJuIEkocik/TSh0LGUscik6TSh0LGUsW3JdKX19fSx4ZT1jKF8oWyJmYW50YXN5LWxhbmQvY2hhaW4iLCJjaGFpbiJdLGMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gSChlLENlKHQpKX0pLGZ1bmN0aW9uKGUsdCl7cmV0dXJuImZ1bmN0aW9uIj09PXR5cGVvZiB0P2Z1bmN0aW9uKHIpe3JldHVybiBlKHQocikpKHIpfTpBZSghMSkoSChlLHQpKX0pKSxJZT1nKGZ1bmN0aW9uKGUsdCxyKXtpZihlPnQpdGhyb3cgbmV3IEVycm9yKCJtaW4gbXVzdCBub3QgYmUgZ3JlYXRlciB0aGFuIG1heCBpbiBjbGFtcChtaW4sIG1heCwgdmFsdWUpIik7cmV0dXJuIHI8ZT9lOnI+dD90OnJ9KTtmdW5jdGlvbiBrZShlKXtyZXR1cm4gbmV3IFJlZ0V4cChlLnNvdXJjZSwoZS5nbG9iYWw/ImciOiIiKSsoZS5pZ25vcmVDYXNlPyJpIjoiIikrKGUubXVsdGlsaW5lPyJtIjoiIikrKGUuc3RpY2t5PyJ5IjoiIikrKGUudW5pY29kZT8idSI6IiIpKX12YXIgT2U9aShmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09PWU/Ik51bGwiOnZvaWQgMD09PWU/IlVuZGVmaW5lZCI6T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpfSk7ZnVuY3Rpb24gTmUoZSx0LHIsbil7dmFyIGk9ZnVuY3Rpb24oaSl7Zm9yKHZhciBvPXQubGVuZ3RoLGE9MDthPG87KXtpZihlPT09dFthXSlyZXR1cm4gclthXTthKz0xfWZvcih2YXIgcyBpbiB0W2ErMV09ZSxyW2ErMV09aSxlKWlbc109bj9OZShlW3NdLHQsciwhMCk6ZVtzXTtyZXR1cm4gaX07c3dpdGNoKE9lKGUpKXtjYXNlIk9iamVjdCI6cmV0dXJuIGkoe30pO2Nhc2UiQXJyYXkiOnJldHVybiBpKFtdKTtjYXNlIkRhdGUiOnJldHVybiBuZXcgRGF0ZShlLnZhbHVlT2YoKSk7Y2FzZSJSZWdFeHAiOnJldHVybiBrZShlKTtkZWZhdWx0OnJldHVybiBlfX12YXIgUGU9aShmdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZSYmImZ1bmN0aW9uIj09PXR5cGVvZiBlLmNsb25lP2UuY2xvbmUoKTpOZShlLFtdLFtdLCEwKX0pLFJlPWkoZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQscil7cmV0dXJuIGUodCxyKT8tMTplKHIsdCk/MTowfX0pLEJlPWkoZnVuY3Rpb24oZSl7cmV0dXJuIWV9KSxNZT1TZShCZSk7ZnVuY3Rpb24gTGUoZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdC5jYWxsKHRoaXMsZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfX1mdW5jdGlvbiBEZShlLHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciByPWFyZ3VtZW50cy5sZW5ndGg7aWYoMD09PXIpcmV0dXJuIHQoKTt2YXIgbj1hcmd1bWVudHNbci0xXTtyZXR1cm4gbShuKXx8ImZ1bmN0aW9uIiE9PXR5cGVvZiBuW2VdP3QuYXBwbHkodGhpcyxhcmd1bWVudHMpOm5bZV0uYXBwbHkobixBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMCxyLTEpKX19dmFyIGplPWcoRGUoInNsaWNlIixmdW5jdGlvbihlLHQscil7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHIsZSx0KX0pKSxVZT1pKERlKCJ0YWlsIixqZSgxLDEvMCkpKTtmdW5jdGlvbiBGZSgpe2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXRocm93IG5ldyBFcnJvcigicGlwZSByZXF1aXJlcyBhdCBsZWFzdCBvbmUgYXJndW1lbnQiKTtyZXR1cm4gaChhcmd1bWVudHNbMF0ubGVuZ3RoLFEoTGUsYXJndW1lbnRzWzBdLFVlKGFyZ3VtZW50cykpKX12YXIgVmU9aShmdW5jdGlvbihlKXtyZXR1cm4geChlKT9lLnNwbGl0KCIiKS5yZXZlcnNlKCkuam9pbigiIik6QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZSwwKS5yZXZlcnNlKCl9KTtmdW5jdGlvbiBxZSgpe2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiY29tcG9zZSByZXF1aXJlcyBhdCBsZWFzdCBvbmUgYXJndW1lbnQiKTtyZXR1cm4gRmUuYXBwbHkodGhpcyxWZShhcmd1bWVudHMpKX1mdW5jdGlvbiBLZSgpe2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiY29tcG9zZUsgcmVxdWlyZXMgYXQgbGVhc3Qgb25lIGFyZ3VtZW50Iik7dmFyIGU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSx0PWUucG9wKCk7cmV0dXJuIHFlKHFlLmFwcGx5KHRoaXMsSCh4ZSxlKSksdCl9ZnVuY3Rpb24gemUoZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcj10aGlzO3JldHVybiBlLmFwcGx5KHIsYXJndW1lbnRzKS50aGVuKGZ1bmN0aW9uKGUpe3JldHVybiB0LmNhbGwocixlKX0pfX1mdW5jdGlvbiBHZSgpe2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXRocm93IG5ldyBFcnJvcigicGlwZVAgcmVxdWlyZXMgYXQgbGVhc3Qgb25lIGFyZ3VtZW50Iik7cmV0dXJuIGgoYXJndW1lbnRzWzBdLmxlbmd0aCxRKHplLGFyZ3VtZW50c1swXSxVZShhcmd1bWVudHMpKSl9ZnVuY3Rpb24gSGUoKXtpZigwPT09YXJndW1lbnRzLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoImNvbXBvc2VQIHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBhcmd1bWVudCIpO3JldHVybiBHZS5hcHBseSh0aGlzLFZlKGFyZ3VtZW50cykpfWZ1bmN0aW9uIFdlKGUpe2Zvcih2YXIgdCxyPVtdOyEodD1lLm5leHQoKSkuZG9uZTspci5wdXNoKHQudmFsdWUpO3JldHVybiByfWZ1bmN0aW9uIFllKGUsdCxyKXtmb3IodmFyIG49MCxpPXIubGVuZ3RoO248aTspe2lmKGUodCxyW25dKSlyZXR1cm4hMDtuKz0xfXJldHVybiExfXZhciBYZT1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9PT10PzAhPT1lfHwxL2U9PT0xL3Q6ZSE9PWUmJnQhPT10fSk7ZnVuY3Rpb24gUWUoZSx0LHIsbil7dmFyIGk9V2UoZSk7ZnVuY3Rpb24gbyhlLHQpe3JldHVybiAkZShlLHQsci5zbGljZSgpLG4uc2xpY2UoKSl9cmV0dXJuIVllKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIVllKG8sdCxlKX0sV2UodCksaSl9ZnVuY3Rpb24gJGUoZSx0LHIsbil7aWYoWGUoZSx0KSlyZXR1cm4hMDt2YXIgaT1PZShlKTtpZihpIT09T2UodCkpcmV0dXJuITE7aWYobnVsbD09ZXx8bnVsbD09dClyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT09dHlwZW9mIGVbImZhbnRhc3ktbGFuZC9lcXVhbHMiXXx8ImZ1bmN0aW9uIj09PXR5cGVvZiB0WyJmYW50YXN5LWxhbmQvZXF1YWxzIl0pcmV0dXJuImZ1bmN0aW9uIj09PXR5cGVvZiBlWyJmYW50YXN5LWxhbmQvZXF1YWxzIl0mJmVbImZhbnRhc3ktbGFuZC9lcXVhbHMiXSh0KSYmImZ1bmN0aW9uIj09PXR5cGVvZiB0WyJmYW50YXN5LWxhbmQvZXF1YWxzIl0mJnRbImZhbnRhc3ktbGFuZC9lcXVhbHMiXShlKTtpZigiZnVuY3Rpb24iPT09dHlwZW9mIGUuZXF1YWxzfHwiZnVuY3Rpb24iPT09dHlwZW9mIHQuZXF1YWxzKXJldHVybiJmdW5jdGlvbiI9PT10eXBlb2YgZS5lcXVhbHMmJmUuZXF1YWxzKHQpJiYiZnVuY3Rpb24iPT09dHlwZW9mIHQuZXF1YWxzJiZ0LmVxdWFscyhlKTtzd2l0Y2goaSl7Y2FzZSJBcmd1bWVudHMiOmNhc2UiQXJyYXkiOmNhc2UiT2JqZWN0IjppZigiZnVuY3Rpb24iPT09dHlwZW9mIGUuY29uc3RydWN0b3ImJiJQcm9taXNlIj09PWZ1bmN0aW9uKGUpe3ZhciB0PVN0cmluZyhlKS5tYXRjaCgvXmZ1bmN0aW9uIChcdyopLyk7cmV0dXJuIG51bGw9PXQ/IiI6dFsxXX0oZS5jb25zdHJ1Y3RvcikpcmV0dXJuIGU9PT10O2JyZWFrO2Nhc2UiQm9vbGVhbiI6Y2FzZSJOdW1iZXIiOmNhc2UiU3RyaW5nIjppZih0eXBlb2YgZSE9PXR5cGVvZiB0fHwhWGUoZS52YWx1ZU9mKCksdC52YWx1ZU9mKCkpKXJldHVybiExO2JyZWFrO2Nhc2UiRGF0ZSI6aWYoIVhlKGUudmFsdWVPZigpLHQudmFsdWVPZigpKSlyZXR1cm4hMTticmVhaztjYXNlIkVycm9yIjpyZXR1cm4gZS5uYW1lPT09dC5uYW1lJiZlLm1lc3NhZ2U9PT10Lm1lc3NhZ2U7Y2FzZSJSZWdFeHAiOmlmKGUuc291cmNlIT09dC5zb3VyY2V8fGUuZ2xvYmFsIT09dC5nbG9iYWx8fGUuaWdub3JlQ2FzZSE9PXQuaWdub3JlQ2FzZXx8ZS5tdWx0aWxpbmUhPT10Lm11bHRpbGluZXx8ZS5zdGlja3khPT10LnN0aWNreXx8ZS51bmljb2RlIT09dC51bmljb2RlKXJldHVybiExfWZvcih2YXIgbz1yLmxlbmd0aC0xO28+PTA7KXtpZihyW29dPT09ZSlyZXR1cm4gbltvXT09PXQ7by09MX1zd2l0Y2goaSl7Y2FzZSJNYXAiOnJldHVybiBlLnNpemU9PT10LnNpemUmJlFlKGUuZW50cmllcygpLHQuZW50cmllcygpLHIuY29uY2F0KFtlXSksbi5jb25jYXQoW3RdKSk7Y2FzZSJTZXQiOnJldHVybiBlLnNpemU9PT10LnNpemUmJlFlKGUudmFsdWVzKCksdC52YWx1ZXMoKSxyLmNvbmNhdChbZV0pLG4uY29uY2F0KFt0XSkpO2Nhc2UiQXJndW1lbnRzIjpjYXNlIkFycmF5IjpjYXNlIk9iamVjdCI6Y2FzZSJCb29sZWFuIjpjYXNlIk51bWJlciI6Y2FzZSJTdHJpbmciOmNhc2UiRGF0ZSI6Y2FzZSJFcnJvciI6Y2FzZSJSZWdFeHAiOmNhc2UiSW50OEFycmF5IjpjYXNlIlVpbnQ4QXJyYXkiOmNhc2UiVWludDhDbGFtcGVkQXJyYXkiOmNhc2UiSW50MTZBcnJheSI6Y2FzZSJVaW50MTZBcnJheSI6Y2FzZSJJbnQzMkFycmF5IjpjYXNlIlVpbnQzMkFycmF5IjpjYXNlIkZsb2F0MzJBcnJheSI6Y2FzZSJGbG9hdDY0QXJyYXkiOmNhc2UiQXJyYXlCdWZmZXIiOmJyZWFrO2RlZmF1bHQ6cmV0dXJuITF9dmFyIGE9RyhlKTtpZihhLmxlbmd0aCE9PUcodCkubGVuZ3RoKXJldHVybiExO3ZhciBzPXIuY29uY2F0KFtlXSksdT1uLmNvbmNhdChbdF0pO2ZvcihvPWEubGVuZ3RoLTE7bz49MDspe3ZhciBjPWFbb107aWYoIWooYyx0KXx8ISRlKHRbY10sZVtjXSxzLHUpKXJldHVybiExO28tPTF9cmV0dXJuITB9dmFyIFplPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gJGUoZSx0LFtdLFtdKX0pO2Z1bmN0aW9uIEplKGUsdCxyKXt2YXIgbixpO2lmKCJmdW5jdGlvbiI9PT10eXBlb2YgZS5pbmRleE9mKXN3aXRjaCh0eXBlb2YgdCl7Y2FzZSJudW1iZXIiOmlmKDA9PT10KXtmb3Iobj0xL3Q7cjxlLmxlbmd0aDspe2lmKDA9PT0oaT1lW3JdKSYmMS9pPT09bilyZXR1cm4gcjtyKz0xfXJldHVybi0xfWlmKHQhPT10KXtmb3IoO3I8ZS5sZW5ndGg7KXtpZigibnVtYmVyIj09PXR5cGVvZihpPWVbcl0pJiZpIT09aSlyZXR1cm4gcjtyKz0xfXJldHVybi0xfXJldHVybiBlLmluZGV4T2YodCxyKTtjYXNlInN0cmluZyI6Y2FzZSJib29sZWFuIjpjYXNlImZ1bmN0aW9uIjpjYXNlInVuZGVmaW5lZCI6cmV0dXJuIGUuaW5kZXhPZih0LHIpO2Nhc2Uib2JqZWN0IjppZihudWxsPT09dClyZXR1cm4gZS5pbmRleE9mKHQscil9Zm9yKDtyPGUubGVuZ3RoOyl7aWYoWmUoZVtyXSx0KSlyZXR1cm4gcjtyKz0xfXJldHVybi0xfWZ1bmN0aW9uIGV0KGUsdCl7cmV0dXJuIEplKHQsZSwwKT49MH1mdW5jdGlvbiB0dChlKXtyZXR1cm4nIicrZS5yZXBsYWNlKC9cXC9nLCJcXFxcIikucmVwbGFjZSgvW1xiXS9nLCJcXGIiKS5yZXBsYWNlKC9cZi9nLCJcXGYiKS5yZXBsYWNlKC9cbi9nLCJcXG4iKS5yZXBsYWNlKC9cci9nLCJcXHIiKS5yZXBsYWNlKC9cdC9nLCJcXHQiKS5yZXBsYWNlKC9cdi9nLCJcXHYiKS5yZXBsYWNlKC9cMC9nLCJcXDAiKS5yZXBsYWNlKC8iL2csJ1xcIicpKyciJ312YXIgcnQ9ZnVuY3Rpb24oZSl7cmV0dXJuKGU8MTA/IjAiOiIiKStlfSxudD0iZnVuY3Rpb24iPT09dHlwZW9mIERhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nP2Z1bmN0aW9uKGUpe3JldHVybiBlLnRvSVNPU3RyaW5nKCl9OmZ1bmN0aW9uKGUpe3JldHVybiBlLmdldFVUQ0Z1bGxZZWFyKCkrIi0iK3J0KGUuZ2V0VVRDTW9udGgoKSsxKSsiLSIrcnQoZS5nZXRVVENEYXRlKCkpKyJUIitydChlLmdldFVUQ0hvdXJzKCkpKyI6IitydChlLmdldFVUQ01pbnV0ZXMoKSkrIjoiK3J0KGUuZ2V0VVRDU2Vjb25kcygpKSsiLiIrKGUuZ2V0VVRDTWlsbGlzZWNvbmRzKCkvMWUzKS50b0ZpeGVkKDMpLnNsaWNlKDIsNSkrIloifTtmdW5jdGlvbiBpdChlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4hZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIG90KGUsdCl7Zm9yKHZhciByPTAsbj10Lmxlbmd0aCxpPVtdO3I8bjspZSh0W3JdKSYmKGlbaS5sZW5ndGhdPXRbcl0pLHIrPTE7cmV0dXJuIGl9ZnVuY3Rpb24gYXQoZSl7cmV0dXJuIltvYmplY3QgT2JqZWN0XSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSl9dmFyIHN0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3RoaXMueGY9dCx0aGlzLmY9ZX1yZXR1cm4gZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9pbml0Il09RS5pbml0LGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvcmVzdWx0Il09RS5yZXN1bHQsZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9zdGVwIl09ZnVuY3Rpb24oZSx0KXtyZXQ="
}
Changelog:
{
"2020.03.29 15:15": "base64:PWUuY2hpbGRyZW4scj1lLmluLGk9ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciByLG4saT17fSxvPU9iamVjdC5rZXlzKGUpO2ZvcihuPTA7bjxvLmxlbmd0aDtuKyspcj1vW25dLHQuaW5kZXhPZihyKT49MHx8KGlbcl09ZVtyXSk7cmV0dXJuIGl9KGUsWyJjaGlsZHJlbiIsImluIl0pLGE9bi5kZWZhdWx0LkNoaWxkcmVuLnRvQXJyYXkodCkscz1hWzBdLHU9YVsxXTtyZXR1cm4gZGVsZXRlIGkub25FbnRlcixkZWxldGUgaS5vbkVudGVyaW5nLGRlbGV0ZSBpLm9uRW50ZXJlZCxkZWxldGUgaS5vbkV4aXQsZGVsZXRlIGkub25FeGl0aW5nLGRlbGV0ZSBpLm9uRXhpdGVkLG4uZGVmYXVsdC5jcmVhdGVFbGVtZW50KG8uZGVmYXVsdCxpLHI/bi5kZWZhdWx0LmNsb25lRWxlbWVudChzLHtrZXk6ImZpcnN0IixvbkVudGVyOnRoaXMuaGFuZGxlRW50ZXIsb25FbnRlcmluZzp0aGlzLmhhbmRsZUVudGVyaW5nLG9uRW50ZXJlZDp0aGlzLmhhbmRsZUVudGVyZWR9KTpuLmRlZmF1bHQuY2xvbmVFbGVtZW50KHUse2tleToic2Vjb25kIixvbkVudGVyOnRoaXMuaGFuZGxlRXhpdCxvbkVudGVyaW5nOnRoaXMuaGFuZGxlRXhpdGluZyxvbkVudGVyZWQ6dGhpcy5oYW5kbGVFeGl0ZWR9KSl9LGF9KG4uZGVmYXVsdC5Db21wb25lbnQpO3MucHJvcFR5cGVzPXt9O3ZhciB1PXM7dC5kZWZhdWx0PXUsZS5leHBvcnRzPXQuZGVmYXVsdH0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt0Ll9fZXNNb2R1bGU9ITAsdC5nZXRDaGlsZE1hcHBpbmc9aSx0Lm1lcmdlQ2hpbGRNYXBwaW5ncz1vLHQuZ2V0SW5pdGlhbENoaWxkTWFwcGluZz1mdW5jdGlvbihlLHQpe3JldHVybiBpKGUuY2hpbGRyZW4sZnVuY3Rpb24ocil7cmV0dXJuKDAsbi5jbG9uZUVsZW1lbnQpKHIse29uRXhpdGVkOnQuYmluZChudWxsLHIpLGluOiEwLGFwcGVhcjphKHIsImFwcGVhciIsZSksZW50ZXI6YShyLCJlbnRlciIsZSksZXhpdDphKHIsImV4aXQiLGUpfSl9KX0sdC5nZXROZXh0Q2hpbGRNYXBwaW5nPWZ1bmN0aW9uKGUsdCxyKXt2YXIgcz1pKGUuY2hpbGRyZW4pLHU9byh0LHMpO3JldHVybiBPYmplY3Qua2V5cyh1KS5mb3JFYWNoKGZ1bmN0aW9uKGkpe3ZhciBvPXVbaV07aWYoKDAsbi5pc1ZhbGlkRWxlbWVudCkobykpe3ZhciBjPWkgaW4gdCxmPWkgaW4gcyxsPXRbaV0saD0oMCxuLmlzVmFsaWRFbGVtZW50KShsKSYmIWwucHJvcHMuaW47IWZ8fGMmJiFoP2Z8fCFjfHxoP2YmJmMmJigwLG4uaXNWYWxpZEVsZW1lbnQpKGwpJiYodVtpXT0oMCxuLmNsb25lRWxlbWVudCkobyx7b25FeGl0ZWQ6ci5iaW5kKG51bGwsbyksaW46bC5wcm9wcy5pbixleGl0OmEobywiZXhpdCIsZSksZW50ZXI6YShvLCJlbnRlciIsZSl9KSk6dVtpXT0oMCxuLmNsb25lRWxlbWVudCkobyx7aW46ITF9KTp1W2ldPSgwLG4uY2xvbmVFbGVtZW50KShvLHtvbkV4aXRlZDpyLmJpbmQobnVsbCxvKSxpbjohMCxleGl0OmEobywiZXhpdCIsZSksZW50ZXI6YShvLCJlbnRlciIsZSl9KX19KSx1fTt2YXIgbj1yKDEpO2Z1bmN0aW9uIGkoZSx0KXt2YXIgcj1PYmplY3QuY3JlYXRlKG51bGwpO3JldHVybiBlJiZuLkNoaWxkcmVuLm1hcChlLGZ1bmN0aW9uKGUpe3JldHVybiBlfSkuZm9yRWFjaChmdW5jdGlvbihlKXtyW2Uua2V5XT1mdW5jdGlvbihlKXtyZXR1cm4gdCYmKDAsbi5pc1ZhbGlkRWxlbWVudCkoZSk/dChlKTplfShlKX0pLHJ9ZnVuY3Rpb24gbyhlLHQpe2Z1bmN0aW9uIHIocil7cmV0dXJuIHIgaW4gdD90W3JdOmVbcl19ZT1lfHx7fSx0PXR8fHt9O3ZhciBuLGk9T2JqZWN0LmNyZWF0ZShudWxsKSxvPVtdO2Zvcih2YXIgYSBpbiBlKWEgaW4gdD9vLmxlbmd0aCYmKGlbYV09byxvPVtdKTpvLnB1c2goYSk7dmFyIHM9e307Zm9yKHZhciB1IGluIHQpe2lmKGlbdV0pZm9yKG49MDtuPGlbdV0ubGVuZ3RoO24rKyl7dmFyIGM9aVt1XVtuXTtzW2lbdV1bbl1dPXIoYyl9c1t1XT1yKHUpfWZvcihuPTA7bjxvLmxlbmd0aDtuKyspc1tvW25dXT1yKG9bbl0pO3JldHVybiBzfWZ1bmN0aW9uIGEoZSx0LHIpe3JldHVybiBudWxsIT1yW3RdP3JbdF06ZS5wcm9wc1t0XX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDc1KSxpPXIoMTE3KSxvPXIoMTk2KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQscixhKXt2YXIgcz1PYmplY3QodCk7aWYoIWkodCkpe3ZhciB1PW4ociwzKTt0PW8odCkscj1mdW5jdGlvbihlKXtyZXR1cm4gdShzW2VdLGUscyl9fXZhciBjPWUodCxyLGEpO3JldHVybiBjPi0xP3NbdT90W2NdOmNdOnZvaWQgMH19fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig0OTUpLGk9cig3NSksbz1yKDExMTMpLGE9TWF0aC5tYXg7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXt2YXIgcz1udWxsPT1lPzA6ZS5sZW5ndGg7aWYoIXMpcmV0dXJuLTE7dmFyIHU9bnVsbD09cj8wOm8ocik7cmV0dXJuIHU8MCYmKHU9YShzK3UsMCkpLG4oZSxpKHQsMyksdSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig1MDEpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1uKGUpLHI9dCUxO3JldHVybiB0PT09dD9yP3Qtcjp0OjB9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxMTE1KSxpPXIoMTk5KSxvPXIoNTAxKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQscixhKXtyZXR1cm4gYSYmIm51bWJlciIhPXR5cGVvZiBhJiZpKHQscixhKSYmKHI9YT12b2lkIDApLHQ9byh0KSx2b2lkIDA9PT1yPyhyPXQsdD0wKTpyPW8ociksYT12b2lkIDA9PT1hP3Q8cj8xOi0xOm8oYSksbih0LHIsYSxlKX19fSxmdW5jdGlvbihlLHQpe3ZhciByPU1hdGguY2VpbCxuPU1hdGgubWF4O2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsaSxvKXtmb3IodmFyIGE9LTEscz1uKHIoKHQtZSkvKGl8fDEpKSwwKSx1PUFycmF5KHMpO3MtLTspdVtvP3M6KythXT1lLGUrPWk7cmV0dXJuIHV9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigzNSksaT1yKDExMTcpLG89cig1MDIpLGE9IkV4cGVjdGVkIGEgZnVuY3Rpb24iLHM9TWF0aC5tYXgsdT1NYXRoLm1pbjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe3ZhciBjLGYsbCxoLHAsZCx5PTAsZz0hMSx2PSExLG09ITA7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcihhKTtmdW5jdGlvbiBiKHQpe3ZhciByPWMsbj1mO3JldHVybiBjPWY9dm9pZCAwLHk9dCxoPWUuYXBwbHkobixyKX1mdW5jdGlvbiBfKGUpe3ZhciByPWUtZDtyZXR1cm4gdm9pZCAwPT09ZHx8cj49dHx8cjwwfHx2JiZlLXk+PWx9ZnVuY3Rpb24gUygpe3ZhciBlPWkoKTtpZihfKGUpKXJldHVybiBFKGUpO3A9c2V0VGltZW91dChTLGZ1bmN0aW9uKGUpe3ZhciByPXQtKGUtZCk7cmV0dXJuIHY/dShyLGwtKGUteSkpOnJ9KGUpKX1mdW5jdGlvbiBFKGUpe3JldHVybiBwPXZvaWQgMCxtJiZjP2IoZSk6KGM9Zj12b2lkIDAsaCl9ZnVuY3Rpb24gdygpe3ZhciBlPWkoKSxyPV8oZSk7aWYoYz1hcmd1bWVudHMsZj10aGlzLGQ9ZSxyKXtpZih2b2lkIDA9PT1wKXJldHVybiBmdW5jdGlvbihlKXtyZXR1cm4geT1lLHA9c2V0VGltZW91dChTLHQpLGc/YihlKTpofShkKTtpZih2KXJldHVybiBjbGVhclRpbWVvdXQocCkscD1zZXRUaW1lb3V0KFMsdCksYihkKX1yZXR1cm4gdm9pZCAwPT09cCYmKHA9c2V0VGltZW91dChTLHQpKSxofXJldHVybiB0PW8odCl8fDAsbihyKSYmKGc9ISFyLmxlYWRpbmcsbD0odj0ibWF4V2FpdCJpbiByKT9zKG8oci5tYXhXYWl0KXx8MCx0KTpsLG09InRyYWlsaW5nImluIHI/ISFyLnRyYWlsaW5nOm0pLHcuY2FuY2VsPWZ1bmN0aW9uKCl7dm9pZCAwIT09cCYmY2xlYXJUaW1lb3V0KHApLHk9MCxjPWQ9Zj1wPXZvaWQgMH0sdy5mbHVzaD1mdW5jdGlvbigpe3JldHVybiB2b2lkIDA9PT1wP2g6RShpKCkpfSx3fX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNjQpO2UuZXhwb3J0cz1mdW5jdGlvbigpe3JldHVybiBuLkRhdGUubm93KCl9fSwsZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe3JldHVybiBudWxsIT1lJiYib2JqZWN0Ij09PXR5cGVvZiBlJiYhMD09PWVbIkBAZnVuY3Rpb25hbC9wbGFjZWhvbGRlciJdfWZ1bmN0aW9uIGkoZSl7cmV0dXJuIGZ1bmN0aW9uIHQocil7cmV0dXJuIDA9PT1hcmd1bWVudHMubGVuZ3RofHxuKHIpP3Q6ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fXIucih0KTt2YXIgbz1pKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlfX0pLGE9byghMSkscz1vKCEwKSx1PXsiQEBmdW5jdGlvbmFsL3BsYWNlaG9sZGVyIjohMH07ZnVuY3Rpb24gYyhlKXtyZXR1cm4gZnVuY3Rpb24gdChyLG8pe3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIHQ7Y2FzZSAxOnJldHVybiBuKHIpP3Q6aShmdW5jdGlvbih0KXtyZXR1cm4gZShyLHQpfSk7ZGVmYXVsdDpyZXR1cm4gbihyKSYmbihvKT90Om4ocik/aShmdW5jdGlvbih0KXtyZXR1cm4gZSh0LG8pfSk6bihvKT9pKGZ1bmN0aW9uKHQpe3JldHVybiBlKHIsdCl9KTplKHIsbyl9fX12YXIgZj1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIE51bWJlcihlKStOdW1iZXIodCl9KTtmdW5jdGlvbiBsKGUsdCl7dmFyIHI7dD10fHxbXTt2YXIgbj0oZT1lfHxbXSkubGVuZ3RoLGk9dC5sZW5ndGgsbz1bXTtmb3Iocj0wO3I8bjspb1tvLmxlbmd0aF09ZVtyXSxyKz0xO2ZvcihyPTA7cjxpOylvW28ubGVuZ3RoXT10W3JdLHIrPTE7cmV0dXJuIG99ZnVuY3Rpb24gaChlLHQpe3N3aXRjaChlKXtjYXNlIDA6cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtjYXNlIDE6cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSAyOnJldHVybiBmdW5jdGlvbihlLHIpe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSAzOnJldHVybiBmdW5jdGlvbihlLHIsbil7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtjYXNlIDQ6cmV0dXJuIGZ1bmN0aW9uKGUscixuLGkpe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSA1OnJldHVybiBmdW5jdGlvbihlLHIsbixpLG8pe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSA2OnJldHVybiBmdW5jdGlvbihlLHIsbixpLG8sYSl7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtjYXNlIDc6cmV0dXJuIGZ1bmN0aW9uKGUscixuLGksbyxhLHMpe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSA4OnJldHVybiBmdW5jdGlvbihlLHIsbixpLG8sYSxzLHUpe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSA5OnJldHVybiBmdW5jdGlvbihlLHIsbixpLG8sYSxzLHUsYyl7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtjYXNlIDEwOnJldHVybiBmdW5jdGlvbihlLHIsbixpLG8sYSxzLHUsYyxmKXtyZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJGaXJzdCBhcmd1bWVudCB0byBfYXJpdHkgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyIG5vIGdyZWF0ZXIgdGhhbiB0ZW4iKX19ZnVuY3Rpb24gcChlLHQscil7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciBpPVtdLG89MCxhPWUscz0wO3M8dC5sZW5ndGh8fG88YXJndW1lbnRzLmxlbmd0aDspe3ZhciB1O3M8dC5sZW5ndGgmJighbih0W3NdKXx8bz49YXJndW1lbnRzLmxlbmd0aCk/dT10W3NdOih1PWFyZ3VtZW50c1tvXSxvKz0xKSxpW3NdPXUsbih1KXx8KGEtPTEpLHMrPTF9cmV0dXJuIGE8PTA/ci5hcHBseSh0aGlzLGkpOmgoYSxwKGUsaSxyKSl9fXZhciBkPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gMT09PWU/aSh0KTpoKGUscChlLFtdLHQpKX0pLHk9aShmdW5jdGlvbihlKXtyZXR1cm4gZChlLmxlbmd0aCxmdW5jdGlvbigpe3ZhciB0PTAscj1hcmd1bWVudHNbMF0sbj1hcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aC0xXSxpPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKTtyZXR1cm4gaVswXT1mdW5jdGlvbigpe3ZhciBlPXIuYXBwbHkodGhpcyxsKGFyZ3VtZW50cyxbdCxuXSkpO3JldHVybiB0Kz0xLGV9LGUuYXBwbHkodGhpcyxpKX0pfSk7ZnVuY3Rpb24gZyhlKXtyZXR1cm4gZnVuY3Rpb24gdChyLG8sYSl7c3dpdGNoKGFyZ3VtZW50cy5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gdDtjYXNlIDE6cmV0dXJuIG4ocik/dDpjKGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUocix0LG4pfSk7Y2FzZSAyOnJldHVybiBuKHIpJiZuKG8pP3Q6bihyKT9jKGZ1bmN0aW9uKHQscil7cmV0dXJuIGUodCxvLHIpfSk6bihvKT9jKGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUocix0LG4pfSk6aShmdW5jdGlvbih0KXtyZXR1cm4gZShyLG8sdCl9KTtkZWZhdWx0OnJldHVybiBuKHIpJiZuKG8pJiZuKGEpP3Q6bihyKSYmbihvKT9jKGZ1bmN0aW9uKHQscil7cmV0dXJuIGUodCxyLGEpfSk6bihyKSYmbihhKT9jKGZ1bmN0aW9uKHQscil7cmV0dXJuIGUodCxvLHIpfSk6bihvKSYmbihhKT9jKGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUocix0LG4pfSk6bihyKT9pKGZ1bmN0aW9uKHQpe3JldHVybiBlKHQsbyxhKX0pOm4obyk/aShmdW5jdGlvbih0KXtyZXR1cm4gZShyLHQsYSl9KTpuKGEpP2koZnVuY3Rpb24odCl7cmV0dXJuIGUocixvLHQpfSk6ZShyLG8sYSl9fX12YXIgdj1nKGZ1bmN0aW9uKGUsdCxyKXtpZih0Pj1yLmxlbmd0aHx8dDwtci5sZW5ndGgpcmV0dXJuIHI7dmFyIG49KHQ8MD9yLmxlbmd0aDowKSt0LGk9bChyKTtyZXR1cm4gaVtuXT1lKHJbbl0pLGl9KSxtPUFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT1lJiZlLmxlbmd0aD49MCYmIltvYmplY3QgQXJyYXldIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKX07ZnVuY3Rpb24gYihlKXtyZXR1cm4iZnVuY3Rpb24iPT09dHlwZW9mIGVbIkBAdHJhbnNkdWNlci9zdGVwIl19ZnVuY3Rpb24gXyhlLHQscil7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoMD09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHIoKTt2YXIgbj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMCksaT1uLnBvcCgpO2lmKCFtKGkpKXtmb3IodmFyIG89MDtvPGUubGVuZ3RoOyl7aWYoImZ1bmN0aW9uIj09PXR5cGVvZiBpW2Vbb11dKXJldHVybiBpW2Vbb11dLmFwcGx5KGksbik7bys9MX1pZihiKGkpKXJldHVybiB0LmFwcGx5KG51bGwsbikoaSl9cmV0dXJuIHIuYXBwbHkodGhpcyxhcmd1bWVudHMpfX1mdW5jdGlvbiBTKGUpe3JldHVybiBlJiZlWyJAQHRyYW5zZHVjZXIvcmVkdWNlZCJdP2U6eyJAQHRyYW5zZHVjZXIvdmFsdWUiOmUsIkBAdHJhbnNkdWNlci9yZWR1Y2VkIjohMH19dmFyIEU9e2luaXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy54ZlsiQEB0cmFuc2R1Y2VyL2luaXQiXSgpfSxyZXN1bHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMueGZbIkBAdHJhbnNkdWNlci9yZXN1bHQiXShlKX19LHc9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7dGhpcy54Zj10LHRoaXMuZj1lLHRoaXMuYWxsPSEwfXJldHVybiBlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL2luaXQiXT1FLmluaXQsZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9yZXN1bHQiXT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5hbGwmJihlPXRoaXMueGZbIkBAdHJhbnNkdWNlci9zdGVwIl0oZSwhMCkpLHRoaXMueGZbIkBAdHJhbnNkdWNlci9yZXN1bHQiXShlKX0sZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9zdGVwIl09ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5mKHQpfHwodGhpcy5hbGw9ITEsZT1TKHRoaXMueGZbIkBAdHJhbnNkdWNlci9zdGVwIl0oZSwhMSkpKSxlfSxlfSgpLFQ9YyhfKFsiYWxsIl0sYyhmdW5jdGlvbihlLHQpe3JldHVybiBuZXcgdyhlLHQpfSksZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoOyl7aWYoIWUodFtyXSkpcmV0dXJuITE7cis9MX1yZXR1cm4hMH0pKSxBPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD5lP3Q6ZX0pO2Z1bmN0aW9uIEMoZSx0KXtmb3IodmFyIHI9MCxuPXQubGVuZ3RoLGk9QXJyYXkobik7cjxuOylpW3JdPWUodFtyXSkscis9MTtyZXR1cm4gaX1mdW5jdGlvbiB4KGUpe3JldHVybiJbb2JqZWN0IFN0cmluZ10iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpfXZhciBJPWkoZnVuY3Rpb24oZSl7cmV0dXJuISFtKGUpfHwhIWUmJigib2JqZWN0Ij09PXR5cGVvZiBlJiYoIXgoZSkmJigxPT09ZS5ub2RlVHlwZT8hIWUubGVuZ3RoOjA9PT1lLmxlbmd0aHx8ZS5sZW5ndGg+MCYmKGUuaGFzT3duUHJvcGVydHkoMCkmJmUuaGFzT3duUHJvcGVydHkoZS5sZW5ndGgtMSkpKSkpfSksaz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dGhpcy5mPWV9cmV0dXJuIGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvaW5pdCJdPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJpbml0IG5vdCBpbXBsZW1lbnRlZCBvbiBYV3JhcCIpfSxlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL3Jlc3VsdCJdPWZ1bmN0aW9uKGUpe3JldHVybiBlfSxlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL3N0ZXAiXT1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmYoZSx0KX0sZX0oKTtmdW5jdGlvbiBPKGUpe3JldHVybiBuZXcgayhlKX12YXIgTj1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGgoZS5sZW5ndGgsZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0LGFyZ3VtZW50cyl9KX0pO2Z1bmN0aW9uIFAoZSx0LHIpe2Zvcih2YXIgbj1yLm5leHQoKTshbi5kb25lOyl7aWYoKHQ9ZVsiQEB0cmFuc2R1Y2VyL3N0ZXAiXSh0LG4udmFsdWUpKSYmdFsiQEB0cmFuc2R1Y2VyL3JlZHVjZWQiXSl7dD10WyJAQHRyYW5zZHVjZXIvdmFsdWUiXTticmVha31uPXIubmV4dCgpfXJldHVybiBlWyJAQHRyYW5zZHVjZXIvcmVzdWx0Il0odCl9ZnVuY3Rpb24gUihlLHQscixuKXtyZXR1cm4gZVsiQEB0cmFuc2R1Y2VyL3Jlc3VsdCJdKHJbbl0oTihlWyJAQHRyYW5zZHVjZXIvc3RlcCJdLGUpLHQpKX12YXIgQj0idW5kZWZpbmVkIiE9PXR5cGVvZiBTeW1ib2w/U3ltYm9sLml0ZXJhdG9yOiJAQGl0ZXJhdG9yIjtmdW5jdGlvbiBNKGUsdCxyKXtpZigiZnVuY3Rpb24iPT09dHlwZW9mIGUmJihlPU8oZSkpLEkocikpcmV0dXJuIGZ1bmN0aW9uKGUsdCxyKXtmb3IodmFyIG49MCxpPXIubGVuZ3RoO248aTspe2lmKCh0PWVbIkBAdHJhbnNkdWNlci9zdGVwIl0odCxyW25dKSkmJnRbIkBAdHJhbnNkdWNlci9yZWR1Y2VkIl0pe3Q9dFsiQEB0cmFuc2R1Y2VyL3ZhbHVlIl07YnJlYWt9bis9MX1yZXR1cm4gZVsiQEB0cmFuc2R1Y2VyL3Jlc3VsdCJdKHQpfShlLHQscik7aWYoImZ1bmN0aW9uIj09PXR5cGVvZiByWyJmYW50YXN5LWxhbmQvcmVkdWNlIl0pcmV0dXJuIFIoZSx0LHIsImZhbnRhc3ktbGFuZC9yZWR1Y2UiKTtpZihudWxsIT1yW0JdKXJldHVybiBQKGUsdCxyW0JdKCkpO2lmKCJmdW5jdGlvbiI9PT10eXBlb2Ygci5uZXh0KXJldHVybiBQKGUsdCxyKTtpZigiZnVuY3Rpb24iPT09dHlwZW9mIHIucmVkdWNlKXJldHVybiBSKGUsdCxyLCJyZWR1Y2UiKTt0aHJvdyBuZXcgVHlwZUVycm9yKCJyZWR1Y2U6IGxpc3QgbXVzdCBiZSBhcnJheSBvciBpdGVyYWJsZSIpfXZhciBMPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3RoaXMueGY9dCx0aGlzLmY9ZX1yZXR1cm4gZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9pbml0Il09RS5pbml0LGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvcmVzdWx0Il09RS5yZXN1bHQsZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9zdGVwIl09ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy54ZlsiQEB0cmFuc2R1Y2VyL3N0ZXAiXShlLHRoaXMuZih0KSl9LGV9KCksRD1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBMKGUsdCl9KTtmdW5jdGlvbiBqKGUsdCl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LGUpfXZhciBVPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsRj1mdW5jdGlvbigpe3JldHVybiJbb2JqZWN0IEFyZ3VtZW50c10iPT09VS5jYWxsKGFyZ3VtZW50cyk/ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgQXJndW1lbnRzXSI9PT1VLmNhbGwoZSl9OmZ1bmN0aW9uKGUpe3JldHVybiBqKCJjYWxsZWUiLGUpfX0sVj0he3RvU3RyaW5nOm51bGx9LnByb3BlcnR5SXNFbnVtZXJhYmxlKCJ0b1N0cmluZyIpLHE9WyJjb25zdHJ1Y3RvciIsInZhbHVlT2YiLCJpc1Byb3RvdHlwZU9mIiwidG9TdHJpbmciLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImhhc093blByb3BlcnR5IiwidG9Mb2NhbGVTdHJpbmciXSxLPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5wcm9wZXJ0eUlzRW51bWVyYWJsZSgibGVuZ3RoIil9KCksej1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcj0wO3I8ZS5sZW5ndGg7KXtpZihlW3JdPT09dClyZXR1cm4hMDtyKz0xfXJldHVybiExfSxHPWkoImZ1bmN0aW9uIiE9PXR5cGVvZiBPYmplY3Qua2V5c3x8Sz9mdW5jdGlvbihlKXtpZihPYmplY3QoZSkhPT1lKXJldHVybltdO3ZhciB0LHIsbj1bXSxpPUsmJkYoZSk7Zm9yKHQgaW4gZSkhaih0LGUpfHxpJiYibGVuZ3RoIj09PXR8fChuW24ubGVuZ3RoXT10KTtpZihWKWZvcihyPXEubGVuZ3RoLTE7cj49MDspaih0PXFbcl0sZSkmJiF6KG4sdCkmJihuW24ubGVuZ3RoXT10KSxyLT0xO3JldHVybiBufTpmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0KGUpIT09ZT9bXTpPYmplY3Qua2V5cyhlKX0pLEg9YyhfKFsiZmFudGFzeS1sYW5kL21hcCIsIm1hcCJdLEQsZnVuY3Rpb24oZSx0KXtzd2l0Y2goT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpKXtjYXNlIltvYmplY3QgRnVuY3Rpb25dIjpyZXR1cm4gZCh0Lmxlbmd0aCxmdW5jdGlvbigpe3JldHVybiBlLmNhbGwodGhpcyx0LmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9KTtjYXNlIltvYmplY3QgT2JqZWN0XSI6cmV0dXJuIE0oZnVuY3Rpb24ocixuKXtyZXR1cm4gcltuXT1lKHRbbl0pLHJ9LHt9LEcodCkpO2RlZmF1bHQ6cmV0dXJuIEMoZSx0KX19KSksVz1jKGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPXQsbj0wO248ZS5sZW5ndGg7KXtpZihudWxsPT1yKXJldHVybjtyPXJbZVtuXV0sbis9MX1yZXR1cm4gcn0pLFk9YyhmdW5jdGlvbihlLHQpe3JldHVybiBXKFtlXSx0KX0pLFg9YyhmdW5jdGlvbihlLHQpe3JldHVybiBIKFkoZSksdCl9KSxRPWcoTSksJD1pKGZ1bmN0aW9uKGUpe3JldHVybiBkKFEoQSwwLFgoImxlbmd0aCIsZSkpLGZ1bmN0aW9uKCl7Zm9yKHZhciB0PTAscj1lLmxlbmd0aDt0PHI7KXtpZighZVt0XS5hcHBseSh0aGlzLGFyZ3VtZW50cykpcmV0dXJuITE7dCs9MX1yZXR1cm4hMH0pfSksWj1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUmJnR9KSxKPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3RoaXMueGY9dCx0aGlzLmY9ZSx0aGlzLmFueT0hMX1yZXR1cm4gZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9pbml0Il09RS5pbml0LGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvcmVzdWx0Il09ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuYW55fHwoZT10aGlzLnhmWyJAQHRyYW5zZHVjZXIvc3RlcCJdKGUsITEpKSx0aGlzLnhmWyJAQHRyYW5zZHVjZXIvcmVzdWx0Il0oZSl9LGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvc3RlcCJdPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuZih0KSYmKHRoaXMuYW55PSEwLGU9Uyh0aGlzLnhmWyJAQHRyYW5zZHVjZXIvc3RlcCJdKGUsITApKSksZX0sZX0oKSxlZT1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBKKGUsdCl9KSx0ZT1jKF8oWyJhbnkiXSxlZSxmdW5jdGlvbihlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7KXtpZihlKHRbcl0pKXJldHVybiEwO3IrPTF9cmV0dXJuITF9KSkscmU9aShmdW5jdGlvbihlKXtyZXR1cm4gZChRKEEsMCxYKCJsZW5ndGgiLGUpKSxmdW5jdGlvbigpe2Zvcih2YXIgdD0wLHI9ZS5sZW5ndGg7dDxyOyl7aWYoZVt0XS5hcHBseSh0aGlzLGFyZ3VtZW50cykpcmV0dXJuITA7dCs9MX1yZXR1cm4hMX0pfSksbmU9YyhmdW5jdGlvbihlLHQpe3JldHVybiJmdW5jdGlvbiI9PT10eXBlb2YgdFsiZmFudGFzeS1sYW5kL2FwIl0/dFsiZmFudGFzeS1sYW5kL2FwIl0oZSk6ImZ1bmN0aW9uIj09PXR5cGVvZiBlLmFwP2UuYXAodCk6ImZ1bmN0aW9uIj09PXR5cGVvZiBlP2Z1bmN0aW9uKHIpe3JldHVybiBlKHIpKHQocikpfTpNKGZ1bmN0aW9uKGUscil7cmV0dXJuIGwoZSxIKHIsdCkpfSxbXSxlKX0pO2Z1bmN0aW9uIGllKGUsdCl7Zm9yKHZhciByPTAsbj10Lmxlbmd0aC0oZS0xKSxpPW5ldyBBcnJheShuPj0wP246MCk7cjxuOylpW3JdPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQscixyK2UpLHIrPTE7cmV0dXJuIGl9dmFyIG9lPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3RoaXMueGY9dCx0aGlzLnBvcz0wLHRoaXMuZnVsbD0hMSx0aGlzLmFjYz1uZXcgQXJyYXkoZSl9cmV0dXJuIGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvaW5pdCJdPUUuaW5pdCxlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL3Jlc3VsdCJdPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmFjYz1udWxsLHRoaXMueGZbIkBAdHJhbnNkdWNlci9yZXN1bHQiXShlKX0sZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9zdGVwIl09ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5zdG9yZSh0KSx0aGlzLmZ1bGw/dGhpcy54ZlsiQEB0cmFuc2R1Y2VyL3N0ZXAiXShlLHRoaXMuZ2V0Q29weSgpKTplfSxlLnByb3RvdHlwZS5zdG9yZT1mdW5jdGlvbihlKXt0aGlzLmFjY1t0aGlzLnBvc109ZSx0aGlzLnBvcys9MSx0aGlzLnBvcz09PXRoaXMuYWNjLmxlbmd0aCYmKHRoaXMucG9zPTAsdGhpcy5mdWxsPSEwKX0sZS5wcm90b3R5cGUuZ2V0Q29weT1mdW5jdGlvbigpe3JldHVybiBsKEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuYWNjLHRoaXMucG9zKSxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzLmFjYywwLHRoaXMucG9zKSl9LGV9KCksYWU9YyhfKFtdLGMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3IG9lKGUsdCl9KSxpZSkpLHNlPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gbCh0LFtlXSl9KSx1ZT1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuYXBwbHkodGhpcyx0KX0pLGNlPWkoZnVuY3Rpb24oZSl7Zm9yKHZhciB0PUcoZSkscj10Lmxlbmd0aCxuPVtdLGk9MDtpPHI7KW5baV09ZVt0W2ldXSxpKz0xO3JldHVybiBufSksZmU9aShmdW5jdGlvbiBlKHQpe3JldHVybiB0PUgoZnVuY3Rpb24odCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDplKHQpfSx0KSxkKFEoQSwwLFgoImxlbmd0aCIsY2UodCkpKSxmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cztyZXR1cm4gSChmdW5jdGlvbih0KXtyZXR1cm4gdWUodCxlKX0sdCl9KX0pLGxlPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdChlKX0pLGhlPWcoZnVuY3Rpb24oZSx0LHIpe3ZhciBuPWUodCksaT1lKHIpO3JldHVybiBuPGk/LTE6bj5pPzE6MH0pLHBlPWcoZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXt9O2Zvcih2YXIgaSBpbiByKW5baV09cltpXTtyZXR1cm4gbltlXT10LG59KSxkZT1OdW1iZXIuaXNJbnRlZ2VyfHxmdW5jdGlvbihlKXtyZXR1cm4gZTw8MD09PWV9LHllPWkoZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWV9KSxnZT1nKGZ1bmN0aW9uIGUodCxyLG4pe2lmKDA9PT10Lmxlbmd0aClyZXR1cm4gcjt2YXIgaT10WzBdO2lmKHQubGVuZ3RoPjEpe3ZhciBvPSF5ZShuKSYmaihpLG4pP25baV06ZGUodFsxXSk/W106e307cj1lKEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQsMSkscixvKX1pZihkZShpKSYmbShuKSl7dmFyIGE9W10uY29uY2F0KG4pO3JldHVybiBhW2ldPXIsYX1yZXR1cm4gcGUoaSxyLG4pfSksdmU9YyhmdW5jdGlvbihlLHQpe3N3aXRjaChlKXtjYXNlIDA6cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQuY2FsbCh0aGlzKX07Y2FzZSAxOnJldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdC5jYWxsKHRoaXMsZSl9O2Nhc2UgMjpyZXR1cm4gZnVuY3Rpb24oZSxyKXtyZXR1cm4gdC5jYWxsKHRoaXMsZSxyKX07Y2FzZSAzOnJldHVybiBmdW5jdGlvbihlLHIsbil7cmV0dXJuIHQuY2FsbCh0aGlzLGUscixuKX07Y2FzZSA0OnJldHVybiBmdW5jdGlvbihlLHIsbixpKXtyZXR1cm4gdC5jYWxsKHRoaXMsZSxyLG4saSl9O2Nhc2UgNTpyZXR1cm4gZnVuY3Rpb24oZSxyLG4saSxvKXtyZXR1cm4gdC5jYWxsKHRoaXMsZSxyLG4saSxvKX07Y2FzZSA2OnJldHVybiBmdW5jdGlvbihlLHIsbixpLG8sYSl7cmV0dXJuIHQuY2FsbCh0aGlzLGUscixuLGksbyxhKX07Y2FzZSA3OnJldHVybiBmdW5jdGlvbihlLHIsbixpLG8sYSxzKXtyZXR1cm4gdC5jYWxsKHRoaXMsZSxyLG4saSxvLGEscyl9O2Nhc2UgODpyZXR1cm4gZnVuY3Rpb24oZSxyLG4saSxvLGEscyx1KXtyZXR1cm4gdC5jYWxsKHRoaXMsZSxyLG4saSxvLGEscyx1KX07Y2FzZSA5OnJldHVybiBmdW5jdGlvbihlLHIsbixpLG8sYSxzLHUsYyl7cmV0dXJuIHQuY2FsbCh0aGlzLGUscixuLGksbyxhLHMsdSxjKX07Y2FzZSAxMDpyZXR1cm4gZnVuY3Rpb24oZSxyLG4saSxvLGEscyx1LGMsZil7cmV0dXJuIHQuY2FsbCh0aGlzLGUscixuLGksbyxhLHMsdSxjLGYpfTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiRmlyc3QgYXJndW1lbnQgdG8gbkFyeSBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGludGVnZXIgbm8gZ3JlYXRlciB0aGFuIHRlbiIpfX0pLG1lPWkoZnVuY3Rpb24oZSl7cmV0dXJuIHZlKDIsZSl9KTtmdW5jdGlvbiBiZShlKXtyZXR1cm4iW29iamVjdCBGdW5jdGlvbl0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpfXZhciBfZT1jKGZ1bmN0aW9uKGUsdCl7dmFyIHI9ZChlLHQpO3JldHVybiBkKGUsZnVuY3Rpb24oKXtyZXR1cm4gTShuZSxIKHIsYXJndW1lbnRzWzBdKSxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSkpfSl9KSxTZT1pKGZ1bmN0aW9uKGUpe3JldHVybiBfZShlLmxlbmd0aCxlKX0pLEVlPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gYmUoZSk/ZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cykmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfTpTZShaKShlLHQpfSksd2U9aShmdW5jdGlvbihlKXtyZXR1cm4gZChlLmxlbmd0aCxlKX0pLFRlPXdlKGZ1bmN0aW9uKGUpe3JldHVybiBlLmFwcGx5KHRoaXMsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpKX0pO2Z1bmN0aW9uIEFlKGUpe3JldHVybiBmdW5jdGlvbiB0KHIpe2Zvcih2YXIgbixpLG8sYT1bXSxzPTAsdT1yLmxlbmd0aDtzPHU7KXtpZihJKHJbc10pKWZvcihvPTAsaT0obj1lP3QocltzXSk6cltzXSkubGVuZ3RoO288aTspYVthLmxlbmd0aF09bltvXSxvKz0xO2Vsc2UgYVthLmxlbmd0aF09cltzXTtzKz0xfXJldHVybiBhfX12YXIgQ2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZnVuY3Rpb24oZSl7cmV0dXJueyJAQHRyYW5zZHVjZXIvaW5pdCI6RS5pbml0LCJAQHRyYW5zZHVjZXIvcmVzdWx0IjpmdW5jdGlvbih0KXtyZXR1cm4gZVsiQEB0cmFuc2R1Y2VyL3Jlc3VsdCJdKHQpfSwiQEB0cmFuc2R1Y2VyL3N0ZXAiOmZ1bmN0aW9uKHQscil7dmFyIG49ZVsiQEB0cmFuc2R1Y2VyL3N0ZXAiXSh0LHIpO3JldHVybiBuWyJAQHRyYW5zZHVjZXIvcmVkdWNlZCJdP3siQEB0cmFuc2R1Y2VyL3ZhbHVlIjpuLCJAQHRyYW5zZHVjZXIvcmVkdWNlZCI6ITB9Om59fX0oZSk7cmV0dXJueyJAQHRyYW5zZHVjZXIvaW5pdCI6RS5pbml0LCJAQHRyYW5zZHVjZXIvcmVzdWx0IjpmdW5jdGlvbihlKXtyZXR1cm4gdFsiQEB0cmFuc2R1Y2VyL3Jlc3VsdCJdKGUpfSwiQEB0cmFuc2R1Y2VyL3N0ZXAiOmZ1bmN0aW9uKGUscil7cmV0dXJuIEkocik/TSh0LGUscik6TSh0LGUsW3JdKX19fSx4ZT1jKF8oWyJmYW50YXN5LWxhbmQvY2hhaW4iLCJjaGFpbiJdLGMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gSChlLENlKHQpKX0pLGZ1bmN0aW9uKGUsdCl7cmV0dXJuImZ1bmN0aW9uIj09PXR5cGVvZiB0P2Z1bmN0aW9uKHIpe3JldHVybiBlKHQocikpKHIpfTpBZSghMSkoSChlLHQpKX0pKSxJZT1nKGZ1bmN0aW9uKGUsdCxyKXtpZihlPnQpdGhyb3cgbmV3IEVycm9yKCJtaW4gbXVzdCBub3QgYmUgZ3JlYXRlciB0aGFuIG1heCBpbiBjbGFtcChtaW4sIG1heCwgdmFsdWUpIik7cmV0dXJuIHI8ZT9lOnI+dD90OnJ9KTtmdW5jdGlvbiBrZShlKXtyZXR1cm4gbmV3IFJlZ0V4cChlLnNvdXJjZSwoZS5nbG9iYWw/ImciOiIiKSsoZS5pZ25vcmVDYXNlPyJpIjoiIikrKGUubXVsdGlsaW5lPyJtIjoiIikrKGUuc3RpY2t5PyJ5IjoiIikrKGUudW5pY29kZT8idSI6IiIpKX12YXIgT2U9aShmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09PWU/Ik51bGwiOnZvaWQgMD09PWU/IlVuZGVmaW5lZCI6T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpfSk7ZnVuY3Rpb24gTmUoZSx0LHIsbil7dmFyIGk9ZnVuY3Rpb24oaSl7Zm9yKHZhciBvPXQubGVuZ3RoLGE9MDthPG87KXtpZihlPT09dFthXSlyZXR1cm4gclthXTthKz0xfWZvcih2YXIgcyBpbiB0W2ErMV09ZSxyW2ErMV09aSxlKWlbc109bj9OZShlW3NdLHQsciwhMCk6ZVtzXTtyZXR1cm4gaX07c3dpdGNoKE9lKGUpKXtjYXNlIk9iamVjdCI6cmV0dXJuIGkoe30pO2Nhc2UiQXJyYXkiOnJldHVybiBpKFtdKTtjYXNlIkRhdGUiOnJldHVybiBuZXcgRGF0ZShlLnZhbHVlT2YoKSk7Y2FzZSJSZWdFeHAiOnJldHVybiBrZShlKTtkZWZhdWx0OnJldHVybiBlfX12YXIgUGU9aShmdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZSYmImZ1bmN0aW9uIj09PXR5cGVvZiBlLmNsb25lP2UuY2xvbmUoKTpOZShlLFtdLFtdLCEwKX0pLFJlPWkoZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQscil7cmV0dXJuIGUodCxyKT8tMTplKHIsdCk/MTowfX0pLEJlPWkoZnVuY3Rpb24oZSl7cmV0dXJuIWV9KSxNZT1TZShCZSk7ZnVuY3Rpb24gTGUoZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdC5jYWxsKHRoaXMsZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfX1mdW5jdGlvbiBEZShlLHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciByPWFyZ3VtZW50cy5sZW5ndGg7aWYoMD09PXIpcmV0dXJuIHQoKTt2YXIgbj1hcmd1bWVudHNbci0xXTtyZXR1cm4gbShuKXx8ImZ1bmN0aW9uIiE9PXR5cGVvZiBuW2VdP3QuYXBwbHkodGhpcyxhcmd1bWVudHMpOm5bZV0uYXBwbHkobixBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMCxyLTEpKX19dmFyIGplPWcoRGUoInNsaWNlIixmdW5jdGlvbihlLHQscil7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHIsZSx0KX0pKSxVZT1pKERlKCJ0YWlsIixqZSgxLDEvMCkpKTtmdW5jdGlvbiBGZSgpe2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXRocm93IG5ldyBFcnJvcigicGlwZSByZXF1aXJlcyBhdCBsZWFzdCBvbmUgYXJndW1lbnQiKTtyZXR1cm4gaChhcmd1bWVudHNbMF0ubGVuZ3RoLFEoTGUsYXJndW1lbnRzWzBdLFVlKGFyZ3VtZW50cykpKX12YXIgVmU9aShmdW5jdGlvbihlKXtyZXR1cm4geChlKT9lLnNwbGl0KCIiKS5yZXZlcnNlKCkuam9pbigiIik6QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZSwwKS5yZXZlcnNlKCl9KTtmdW5jdGlvbiBxZSgpe2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiY29tcG9zZSByZXF1aXJlcyBhdCBsZWFzdCBvbmUgYXJndW1lbnQiKTtyZXR1cm4gRmUuYXBwbHkodGhpcyxWZShhcmd1bWVudHMpKX1mdW5jdGlvbiBLZSgpe2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiY29tcG9zZUsgcmVxdWlyZXMgYXQgbGVhc3Qgb25lIGFyZ3VtZW50Iik7dmFyIGU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSx0PWUucG9wKCk7cmV0dXJuIHFlKHFlLmFwcGx5KHRoaXMsSCh4ZSxlKSksdCl9ZnVuY3Rpb24gemUoZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcj10aGlzO3JldHVybiBlLmFwcGx5KHIsYXJndW1lbnRzKS50aGVuKGZ1bmN0aW9uKGUpe3JldHVybiB0LmNhbGwocixlKX0pfX1mdW5jdGlvbiBHZSgpe2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXRocm93IG5ldyBFcnJvcigicGlwZVAgcmVxdWlyZXMgYXQgbGVhc3Qgb25lIGFyZ3VtZW50Iik7cmV0dXJuIGgoYXJndW1lbnRzWzBdLmxlbmd0aCxRKHplLGFyZ3VtZW50c1swXSxVZShhcmd1bWVudHMpKSl9ZnVuY3Rpb24gSGUoKXtpZigwPT09YXJndW1lbnRzLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoImNvbXBvc2VQIHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBhcmd1bWVudCIpO3JldHVybiBHZS5hcHBseSh0aGlzLFZlKGFyZ3VtZW50cykpfWZ1bmN0aW9uIFdlKGUpe2Zvcih2YXIgdCxyPVtdOyEodD1lLm5leHQoKSkuZG9uZTspci5wdXNoKHQudmFsdWUpO3JldHVybiByfWZ1bmN0aW9uIFllKGUsdCxyKXtmb3IodmFyIG49MCxpPXIubGVuZ3RoO248aTspe2lmKGUodCxyW25dKSlyZXR1cm4hMDtuKz0xfXJldHVybiExfXZhciBYZT1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9PT10PzAhPT1lfHwxL2U9PT0xL3Q6ZSE9PWUmJnQhPT10fSk7ZnVuY3Rpb24gUWUoZSx0LHIsbil7dmFyIGk9V2UoZSk7ZnVuY3Rpb24gbyhlLHQpe3JldHVybiAkZShlLHQsci5zbGljZSgpLG4uc2xpY2UoKSl9cmV0dXJuIVllKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIVllKG8sdCxlKX0sV2UodCksaSl9ZnVuY3Rpb24gJGUoZSx0LHIsbil7aWYoWGUoZSx0KSlyZXR1cm4hMDt2YXIgaT1PZShlKTtpZihpIT09T2UodCkpcmV0dXJuITE7aWYobnVsbD09ZXx8bnVsbD09dClyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT09dHlwZW9mIGVbImZhbnRhc3ktbGFuZC9lcXVhbHMiXXx8ImZ1bmN0aW9uIj09PXR5cGVvZiB0WyJmYW50YXN5LWxhbmQvZXF1YWxzIl0pcmV0dXJuImZ1bmN0aW9uIj09PXR5cGVvZiBlWyJmYW50YXN5LWxhbmQvZXF1YWxzIl0mJmVbImZhbnRhc3ktbGFuZC9lcXVhbHMiXSh0KSYmImZ1bmN0aW9uIj09PXR5cGVvZiB0WyJmYW50YXN5LWxhbmQvZXF1YWxzIl0mJnRbImZhbnRhc3ktbGFuZC9lcXVhbHMiXShlKTtpZigiZnVuY3Rpb24iPT09dHlwZW9mIGUuZXF1YWxzfHwiZnVuY3Rpb24iPT09dHlwZW9mIHQuZXF1YWxzKXJldHVybiJmdW5jdGlvbiI9PT10eXBlb2YgZS5lcXVhbHMmJmUuZXF1YWxzKHQpJiYiZnVuY3Rpb24iPT09dHlwZW9mIHQuZXF1YWxzJiZ0LmVxdWFscyhlKTtzd2l0Y2goaSl7Y2FzZSJBcmd1bWVudHMiOmNhc2UiQXJyYXkiOmNhc2UiT2JqZWN0IjppZigiZnVuY3Rpb24iPT09dHlwZW9mIGUuY29uc3RydWN0b3ImJiJQcm9taXNlIj09PWZ1bmN0aW9uKGUpe3ZhciB0PVN0cmluZyhlKS5tYXRjaCgvXmZ1bmN0aW9uIChcdyopLyk7cmV0dXJuIG51bGw9PXQ/IiI6dFsxXX0oZS5jb25zdHJ1Y3RvcikpcmV0dXJuIGU9PT10O2JyZWFrO2Nhc2UiQm9vbGVhbiI6Y2FzZSJOdW1iZXIiOmNhc2UiU3RyaW5nIjppZih0eXBlb2YgZSE9PXR5cGVvZiB0fHwhWGUoZS52YWx1ZU9mKCksdC52YWx1ZU9mKCkpKXJldHVybiExO2JyZWFrO2Nhc2UiRGF0ZSI6aWYoIVhlKGUudmFsdWVPZigpLHQudmFsdWVPZigpKSlyZXR1cm4hMTticmVhaztjYXNlIkVycm9yIjpyZXR1cm4gZS5uYW1lPT09dC5uYW1lJiZlLm1lc3NhZ2U9PT10Lm1lc3NhZ2U7Y2FzZSJSZWdFeHAiOmlmKGUuc291cmNlIT09dC5zb3VyY2V8fGUuZ2xvYmFsIT09dC5nbG9iYWx8fGUuaWdub3JlQ2FzZSE9PXQuaWdub3JlQ2FzZXx8ZS5tdWx0aWxpbmUhPT10Lm11bHRpbGluZXx8ZS5zdGlja3khPT10LnN0aWNreXx8ZS51bmljb2RlIT09dC51bmljb2RlKXJldHVybiExfWZvcih2YXIgbz1yLmxlbmd0aC0xO28+PTA7KXtpZihyW29dPT09ZSlyZXR1cm4gbltvXT09PXQ7by09MX1zd2l0Y2goaSl7Y2FzZSJNYXAiOnJldHVybiBlLnNpemU9PT10LnNpemUmJlFlKGUuZW50cmllcygpLHQuZW50cmllcygpLHIuY29uY2F0KFtlXSksbi5jb25jYXQoW3RdKSk7Y2FzZSJTZXQiOnJldHVybiBlLnNpemU9PT10LnNpemUmJlFlKGUudmFsdWVzKCksdC52YWx1ZXMoKSxyLmNvbmNhdChbZV0pLG4uY29uY2F0KFt0XSkpO2Nhc2UiQXJndW1lbnRzIjpjYXNlIkFycmF5IjpjYXNlIk9iamVjdCI6Y2FzZSJCb29sZWFuIjpjYXNlIk51bWJlciI6Y2FzZSJTdHJpbmciOmNhc2UiRGF0ZSI6Y2FzZSJFcnJvciI6Y2FzZSJSZWdFeHAiOmNhc2UiSW50OEFycmF5IjpjYXNlIlVpbnQ4QXJyYXkiOmNhc2UiVWludDhDbGFtcGVkQXJyYXkiOmNhc2UiSW50MTZBcnJheSI6Y2FzZSJVaW50MTZBcnJheSI6Y2FzZSJJbnQzMkFycmF5IjpjYXNlIlVpbnQzMkFycmF5IjpjYXNlIkZsb2F0MzJBcnJheSI6Y2FzZSJGbG9hdDY0QXJyYXkiOmNhc2UiQXJyYXlCdWZmZXIiOmJyZWFrO2RlZmF1bHQ6cmV0dXJuITF9dmFyIGE9RyhlKTtpZihhLmxlbmd0aCE9PUcodCkubGVuZ3RoKXJldHVybiExO3ZhciBzPXIuY29uY2F0KFtlXSksdT1uLmNvbmNhdChbdF0pO2ZvcihvPWEubGVuZ3RoLTE7bz49MDspe3ZhciBjPWFbb107aWYoIWooYyx0KXx8ISRlKHRbY10sZVtjXSxzLHUpKXJldHVybiExO28tPTF9cmV0dXJuITB9dmFyIFplPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gJGUoZSx0LFtdLFtdKX0pO2Z1bmN0aW9uIEplKGUsdCxyKXt2YXIgbixpO2lmKCJmdW5jdGlvbiI9PT10eXBlb2YgZS5pbmRleE9mKXN3aXRjaCh0eXBlb2YgdCl7Y2FzZSJudW1iZXIiOmlmKDA9PT10KXtmb3Iobj0xL3Q7cjxlLmxlbmd0aDspe2lmKDA9PT0oaT1lW3JdKSYmMS9pPT09bilyZXR1cm4gcjtyKz0xfXJldHVybi0xfWlmKHQhPT10KXtmb3IoO3I8ZS5sZW5ndGg7KXtpZigibnVtYmVyIj09PXR5cGVvZihpPWVbcl0pJiZpIT09aSlyZXR1cm4gcjtyKz0xfXJldHVybi0xfXJldHVybiBlLmluZGV4T2YodCxyKTtjYXNlInN0cmluZyI6Y2FzZSJib29sZWFuIjpjYXNlImZ1bmN0aW9uIjpjYXNlInVuZGVmaW5lZCI6cmV0dXJuIGUuaW5kZXhPZih0LHIpO2Nhc2Uib2JqZWN0IjppZihudWxsPT09dClyZXR1cm4gZS5pbmRleE9mKHQscil9Zm9yKDtyPGUubGVuZ3RoOyl7aWYoWmUoZVtyXSx0KSlyZXR1cm4gcjtyKz0xfXJldHVybi0xfWZ1bmN0aW9uIGV0KGUsdCl7cmV0dXJuIEplKHQsZSwwKT49MH1mdW5jdGlvbiB0dChlKXtyZXR1cm4nIicrZS5yZXBsYWNlKC9cXC9nLCJcXFxcIikucmVwbGFjZSgvW1xiXS9nLCJcXGIiKS5yZXBsYWNlKC9cZi9nLCJcXGYiKS5yZXBsYWNlKC9cbi9nLCJcXG4iKS5yZXBsYWNlKC9cci9nLCJcXHIiKS5yZXBsYWNlKC9cdC9nLCJcXHQiKS5yZXBsYWNlKC9cdi9nLCJcXHYiKS5yZXBsYWNlKC9cMC9nLCJcXDAiKS5yZXBsYWNlKC8iL2csJ1xcIicpKyciJ312YXIgcnQ9ZnVuY3Rpb24oZSl7cmV0dXJuKGU8MTA/IjAiOiIiKStlfSxudD0iZnVuY3Rpb24iPT09dHlwZW9mIERhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nP2Z1bmN0aW9uKGUpe3JldHVybiBlLnRvSVNPU3RyaW5nKCl9OmZ1bmN0aW9uKGUpe3JldHVybiBlLmdldFVUQ0Z1bGxZZWFyKCkrIi0iK3J0KGUuZ2V0VVRDTW9udGgoKSsxKSsiLSIrcnQoZS5nZXRVVENEYXRlKCkpKyJUIitydChlLmdldFVUQ0hvdXJzKCkpKyI6IitydChlLmdldFVUQ01pbnV0ZXMoKSkrIjoiK3J0KGUuZ2V0VVRDU2Vjb25kcygpKSsiLiIrKGUuZ2V0VVRDTWlsbGlzZWNvbmRzKCkvMWUzKS50b0ZpeGVkKDMpLnNsaWNlKDIsNSkrIloifTtmdW5jdGlvbiBpdChlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4hZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIG90KGUsdCl7Zm9yKHZhciByPTAsbj10Lmxlbmd0aCxpPVtdO3I8bjspZSh0W3JdKSYmKGlbaS5sZW5ndGhdPXRbcl0pLHIrPTE7cmV0dXJuIGl9ZnVuY3Rpb24gYXQoZSl7cmV0dXJuIltvYmplY3QgT2JqZWN0XSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSl9dmFyIHN0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3RoaXMueGY9dCx0aGlzLmY9ZX1yZXR1cm4gZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9pbml0Il09RS5pbml0LGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvcmVzdWx0Il09RS5yZXN1bHQsZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9zdGVwIl09ZnVuY3Rpb24oZSx0KXtyZXQ=",
"2020.03.29 15:12": "base64:PWUuY2hpbGRyZW4scj1lLmluLGk9ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciByLG4saT17fSxvPU9iamVjdC5rZXlzKGUpO2ZvcihuPTA7bjxvLmxlbmd0aDtuKyspcj1vW25dLHQuaW5kZXhPZihyKT49MHx8KGlbcl09ZVtyXSk7cmV0dXJuIGl9KGUsWyJjaGlsZHJlbiIsImluIl0pLGE9bi5kZWZhdWx0LkNoaWxkcmVuLnRvQXJyYXkodCkscz1hWzBdLHU9YVsxXTtyZXR1cm4gZGVsZXRlIGkub25FbnRlcixkZWxldGUgaS5vbkVudGVyaW5nLGRlbGV0ZSBpLm9uRW50ZXJlZCxkZWxldGUgaS5vbkV4aXQsZGVsZXRlIGkub25FeGl0aW5nLGRlbGV0ZSBpLm9uRXhpdGVkLG4uZGVmYXVsdC5jcmVhdGVFbGVtZW50KG8uZGVmYXVsdCxpLHI/bi5kZWZhdWx0LmNsb25lRWxlbWVudChzLHtrZXk6ImZpcnN0IixvbkVudGVyOnRoaXMuaGFuZGxlRW50ZXIsb25FbnRlcmluZzp0aGlzLmhhbmRsZUVudGVyaW5nLG9uRW50ZXJlZDp0aGlzLmhhbmRsZUVudGVyZWR9KTpuLmRlZmF1bHQuY2xvbmVFbGVtZW50KHUse2tleToic2Vjb25kIixvbkVudGVyOnRoaXMuaGFuZGxlRXhpdCxvbkVudGVyaW5nOnRoaXMuaGFuZGxlRXhpdGluZyxvbkVudGVyZWQ6dGhpcy5oYW5kbGVFeGl0ZWR9KSl9LGF9KG4uZGVmYXVsdC5Db21wb25lbnQpO3MucHJvcFR5cGVzPXt9O3ZhciB1PXM7dC5kZWZhdWx0PXUsZS5leHBvcnRzPXQuZGVmYXVsdH0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt0Ll9fZXNNb2R1bGU9ITAsdC5nZXRDaGlsZE1hcHBpbmc9aSx0Lm1lcmdlQ2hpbGRNYXBwaW5ncz1vLHQuZ2V0SW5pdGlhbENoaWxkTWFwcGluZz1mdW5jdGlvbihlLHQpe3JldHVybiBpKGUuY2hpbGRyZW4sZnVuY3Rpb24ocil7cmV0dXJuKDAsbi5jbG9uZUVsZW1lbnQpKHIse29uRXhpdGVkOnQuYmluZChudWxsLHIpLGluOiEwLGFwcGVhcjphKHIsImFwcGVhciIsZSksZW50ZXI6YShyLCJlbnRlciIsZSksZXhpdDphKHIsImV4aXQiLGUpfSl9KX0sdC5nZXROZXh0Q2hpbGRNYXBwaW5nPWZ1bmN0aW9uKGUsdCxyKXt2YXIgcz1pKGUuY2hpbGRyZW4pLHU9byh0LHMpO3JldHVybiBPYmplY3Qua2V5cyh1KS5mb3JFYWNoKGZ1bmN0aW9uKGkpe3ZhciBvPXVbaV07aWYoKDAsbi5pc1ZhbGlkRWxlbWVudCkobykpe3ZhciBjPWkgaW4gdCxmPWkgaW4gcyxsPXRbaV0saD0oMCxuLmlzVmFsaWRFbGVtZW50KShsKSYmIWwucHJvcHMuaW47IWZ8fGMmJiFoP2Z8fCFjfHxoP2YmJmMmJigwLG4uaXNWYWxpZEVsZW1lbnQpKGwpJiYodVtpXT0oMCxuLmNsb25lRWxlbWVudCkobyx7b25FeGl0ZWQ6ci5iaW5kKG51bGwsbyksaW46bC5wcm9wcy5pbixleGl0OmEobywiZXhpdCIsZSksZW50ZXI6YShvLCJlbnRlciIsZSl9KSk6dVtpXT0oMCxuLmNsb25lRWxlbWVudCkobyx7aW46ITF9KTp1W2ldPSgwLG4uY2xvbmVFbGVtZW50KShvLHtvbkV4aXRlZDpyLmJpbmQobnVsbCxvKSxpbjohMCxleGl0OmEobywiZXhpdCIsZSksZW50ZXI6YShvLCJlbnRlciIsZSl9KX19KSx1fTt2YXIgbj1yKDEpO2Z1bmN0aW9uIGkoZSx0KXt2YXIgcj1PYmplY3QuY3JlYXRlKG51bGwpO3JldHVybiBlJiZuLkNoaWxkcmVuLm1hcChlLGZ1bmN0aW9uKGUpe3JldHVybiBlfSkuZm9yRWFjaChmdW5jdGlvbihlKXtyW2Uua2V5XT1mdW5jdGlvbihlKXtyZXR1cm4gdCYmKDAsbi5pc1ZhbGlkRWxlbWVudCkoZSk/dChlKTplfShlKX0pLHJ9ZnVuY3Rpb24gbyhlLHQpe2Z1bmN0aW9uIHIocil7cmV0dXJuIHIgaW4gdD90W3JdOmVbcl19ZT1lfHx7fSx0PXR8fHt9O3ZhciBuLGk9T2JqZWN0LmNyZWF0ZShudWxsKSxvPVtdO2Zvcih2YXIgYSBpbiBlKWEgaW4gdD9vLmxlbmd0aCYmKGlbYV09byxvPVtdKTpvLnB1c2goYSk7dmFyIHM9e307Zm9yKHZhciB1IGluIHQpe2lmKGlbdV0pZm9yKG49MDtuPGlbdV0ubGVuZ3RoO24rKyl7dmFyIGM9aVt1XVtuXTtzW2lbdV1bbl1dPXIoYyl9c1t1XT1yKHUpfWZvcihuPTA7bjxvLmxlbmd0aDtuKyspc1tvW25dXT1yKG9bbl0pO3JldHVybiBzfWZ1bmN0aW9uIGEoZSx0LHIpe3JldHVybiBudWxsIT1yW3RdP3JbdF06ZS5wcm9wc1t0XX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDc1KSxpPXIoMTE3KSxvPXIoMTk2KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQscixhKXt2YXIgcz1PYmplY3QodCk7aWYoIWkodCkpe3ZhciB1PW4ociwzKTt0PW8odCkscj1mdW5jdGlvbihlKXtyZXR1cm4gdShzW2VdLGUscyl9fXZhciBjPWUodCxyLGEpO3JldHVybiBjPi0xP3NbdT90W2NdOmNdOnZvaWQgMH19fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig0OTUpLGk9cig3NSksbz1yKDExMTMpLGE9TWF0aC5tYXg7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXt2YXIgcz1udWxsPT1lPzA6ZS5sZW5ndGg7aWYoIXMpcmV0dXJuLTE7dmFyIHU9bnVsbD09cj8wOm8ocik7cmV0dXJuIHU8MCYmKHU9YShzK3UsMCkpLG4oZSxpKHQsMyksdSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig1MDEpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1uKGUpLHI9dCUxO3JldHVybiB0PT09dD9yP3Qtcjp0OjB9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxMTE1KSxpPXIoMTk5KSxvPXIoNTAxKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQscixhKXtyZXR1cm4gYSYmIm51bWJlciIhPXR5cGVvZiBhJiZpKHQscixhKSYmKHI9YT12b2lkIDApLHQ9byh0KSx2b2lkIDA9PT1yPyhyPXQsdD0wKTpyPW8ociksYT12b2lkIDA9PT1hP3Q8cj8xOi0xOm8oYSksbih0LHIsYSxlKX19fSxmdW5jdGlvbihlLHQpe3ZhciByPU1hdGguY2VpbCxuPU1hdGgubWF4O2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsaSxvKXtmb3IodmFyIGE9LTEscz1uKHIoKHQtZSkvKGl8fDEpKSwwKSx1PUFycmF5KHMpO3MtLTspdVtvP3M6KythXT1lLGUrPWk7cmV0dXJuIHV9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigzNSksaT1yKDExMTcpLG89cig1MDIpLGE9IkV4cGVjdGVkIGEgZnVuY3Rpb24iLHM9TWF0aC5tYXgsdT1NYXRoLm1pbjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe3ZhciBjLGYsbCxoLHAsZCx5PTAsZz0hMSx2PSExLG09ITA7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcihhKTtmdW5jdGlvbiBiKHQpe3ZhciByPWMsbj1mO3JldHVybiBjPWY9dm9pZCAwLHk9dCxoPWUuYXBwbHkobixyKX1mdW5jdGlvbiBfKGUpe3ZhciByPWUtZDtyZXR1cm4gdm9pZCAwPT09ZHx8cj49dHx8cjwwfHx2JiZlLXk+PWx9ZnVuY3Rpb24gUygpe3ZhciBlPWkoKTtpZihfKGUpKXJldHVybiBFKGUpO3A9c2V0VGltZW91dChTLGZ1bmN0aW9uKGUpe3ZhciByPXQtKGUtZCk7cmV0dXJuIHY/dShyLGwtKGUteSkpOnJ9KGUpKX1mdW5jdGlvbiBFKGUpe3JldHVybiBwPXZvaWQgMCxtJiZjP2IoZSk6KGM9Zj12b2lkIDAsaCl9ZnVuY3Rpb24gdygpe3ZhciBlPWkoKSxyPV8oZSk7aWYoYz1hcmd1bWVudHMsZj10aGlzLGQ9ZSxyKXtpZih2b2lkIDA9PT1wKXJldHVybiBmdW5jdGlvbihlKXtyZXR1cm4geT1lLHA9c2V0VGltZW91dChTLHQpLGc/YihlKTpofShkKTtpZih2KXJldHVybiBjbGVhclRpbWVvdXQocCkscD1zZXRUaW1lb3V0KFMsdCksYihkKX1yZXR1cm4gdm9pZCAwPT09cCYmKHA9c2V0VGltZW91dChTLHQpKSxofXJldHVybiB0PW8odCl8fDAsbihyKSYmKGc9ISFyLmxlYWRpbmcsbD0odj0ibWF4V2FpdCJpbiByKT9zKG8oci5tYXhXYWl0KXx8MCx0KTpsLG09InRyYWlsaW5nImluIHI/ISFyLnRyYWlsaW5nOm0pLHcuY2FuY2VsPWZ1bmN0aW9uKCl7dm9pZCAwIT09cCYmY2xlYXJUaW1lb3V0KHApLHk9MCxjPWQ9Zj1wPXZvaWQgMH0sdy5mbHVzaD1mdW5jdGlvbigpe3JldHVybiB2b2lkIDA9PT1wP2g6RShpKCkpfSx3fX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNjQpO2UuZXhwb3J0cz1mdW5jdGlvbigpe3JldHVybiBuLkRhdGUubm93KCl9fSwsZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe3JldHVybiBudWxsIT1lJiYib2JqZWN0Ij09PXR5cGVvZiBlJiYhMD09PWVbIkBAZnVuY3Rpb25hbC9wbGFjZWhvbGRlciJdfWZ1bmN0aW9uIGkoZSl7cmV0dXJuIGZ1bmN0aW9uIHQocil7cmV0dXJuIDA9PT1hcmd1bWVudHMubGVuZ3RofHxuKHIpP3Q6ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fXIucih0KTt2YXIgbz1pKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlfX0pLGE9byghMSkscz1vKCEwKSx1PXsiQEBmdW5jdGlvbmFsL3BsYWNlaG9sZGVyIjohMH07ZnVuY3Rpb24gYyhlKXtyZXR1cm4gZnVuY3Rpb24gdChyLG8pe3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIHQ7Y2FzZSAxOnJldHVybiBuKHIpP3Q6aShmdW5jdGlvbih0KXtyZXR1cm4gZShyLHQpfSk7ZGVmYXVsdDpyZXR1cm4gbihyKSYmbihvKT90Om4ocik/aShmdW5jdGlvbih0KXtyZXR1cm4gZSh0LG8pfSk6bihvKT9pKGZ1bmN0aW9uKHQpe3JldHVybiBlKHIsdCl9KTplKHIsbyl9fX12YXIgZj1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIE51bWJlcihlKStOdW1iZXIodCl9KTtmdW5jdGlvbiBsKGUsdCl7dmFyIHI7dD10fHxbXTt2YXIgbj0oZT1lfHxbXSkubGVuZ3RoLGk9dC5sZW5ndGgsbz1bXTtmb3Iocj0wO3I8bjspb1tvLmxlbmd0aF09ZVtyXSxyKz0xO2ZvcihyPTA7cjxpOylvW28ubGVuZ3RoXT10W3JdLHIrPTE7cmV0dXJuIG99ZnVuY3Rpb24gaChlLHQpe3N3aXRjaChlKXtjYXNlIDA6cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtjYXNlIDE6cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSAyOnJldHVybiBmdW5jdGlvbihlLHIpe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSAzOnJldHVybiBmdW5jdGlvbihlLHIsbil7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtjYXNlIDQ6cmV0dXJuIGZ1bmN0aW9uKGUscixuLGkpe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSA1OnJldHVybiBmdW5jdGlvbihlLHIsbixpLG8pe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSA2OnJldHVybiBmdW5jdGlvbihlLHIsbixpLG8sYSl7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtjYXNlIDc6cmV0dXJuIGZ1bmN0aW9uKGUscixuLGksbyxhLHMpe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSA4OnJldHVybiBmdW5jdGlvbihlLHIsbixpLG8sYSxzLHUpe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSA5OnJldHVybiBmdW5jdGlvbihlLHIsbixpLG8sYSxzLHUsYyl7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtjYXNlIDEwOnJldHVybiBmdW5jdGlvbihlLHIsbixpLG8sYSxzLHUsYyxmKXtyZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJGaXJzdCBhcmd1bWVudCB0byBfYXJpdHkgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyIG5vIGdyZWF0ZXIgdGhhbiB0ZW4iKX19ZnVuY3Rpb24gcChlLHQscil7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciBpPVtdLG89MCxhPWUscz0wO3M8dC5sZW5ndGh8fG88YXJndW1lbnRzLmxlbmd0aDspe3ZhciB1O3M8dC5sZW5ndGgmJighbih0W3NdKXx8bz49YXJndW1lbnRzLmxlbmd0aCk/dT10W3NdOih1PWFyZ3VtZW50c1tvXSxvKz0xKSxpW3NdPXUsbih1KXx8KGEtPTEpLHMrPTF9cmV0dXJuIGE8PTA/ci5hcHBseSh0aGlzLGkpOmgoYSxwKGUsaSxyKSl9fXZhciBkPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gMT09PWU/aSh0KTpoKGUscChlLFtdLHQpKX0pLHk9aShmdW5jdGlvbihlKXtyZXR1cm4gZChlLmxlbmd0aCxmdW5jdGlvbigpe3ZhciB0PTAscj1hcmd1bWVudHNbMF0sbj1hcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aC0xXSxpPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKTtyZXR1cm4gaVswXT1mdW5jdGlvbigpe3ZhciBlPXIuYXBwbHkodGhpcyxsKGFyZ3VtZW50cyxbdCxuXSkpO3JldHVybiB0Kz0xLGV9LGUuYXBwbHkodGhpcyxpKX0pfSk7ZnVuY3Rpb24gZyhlKXtyZXR1cm4gZnVuY3Rpb24gdChyLG8sYSl7c3dpdGNoKGFyZ3VtZW50cy5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gdDtjYXNlIDE6cmV0dXJuIG4ocik/dDpjKGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUocix0LG4pfSk7Y2FzZSAyOnJldHVybiBuKHIpJiZuKG8pP3Q6bihyKT9jKGZ1bmN0aW9uKHQscil7cmV0dXJuIGUodCxvLHIpfSk6bihvKT9jKGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUocix0LG4pfSk6aShmdW5jdGlvbih0KXtyZXR1cm4gZShyLG8sdCl9KTtkZWZhdWx0OnJldHVybiBuKHIpJiZuKG8pJiZuKGEpP3Q6bihyKSYmbihvKT9jKGZ1bmN0aW9uKHQscil7cmV0dXJuIGUodCxyLGEpfSk6bihyKSYmbihhKT9jKGZ1bmN0aW9uKHQscil7cmV0dXJuIGUodCxvLHIpfSk6bihvKSYmbihhKT9jKGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUocix0LG4pfSk6bihyKT9pKGZ1bmN0aW9uKHQpe3JldHVybiBlKHQsbyxhKX0pOm4obyk/aShmdW5jdGlvbih0KXtyZXR1cm4gZShyLHQsYSl9KTpuKGEpP2koZnVuY3Rpb24odCl7cmV0dXJuIGUocixvLHQpfSk6ZShyLG8sYSl9fX12YXIgdj1nKGZ1bmN0aW9uKGUsdCxyKXtpZih0Pj1yLmxlbmd0aHx8dDwtci5sZW5ndGgpcmV0dXJuIHI7dmFyIG49KHQ8MD9yLmxlbmd0aDowKSt0LGk9bChyKTtyZXR1cm4gaVtuXT1lKHJbbl0pLGl9KSxtPUFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT1lJiZlLmxlbmd0aD49MCYmIltvYmplY3QgQXJyYXldIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKX07ZnVuY3Rpb24gYihlKXtyZXR1cm4iZnVuY3Rpb24iPT09dHlwZW9mIGVbIkBAdHJhbnNkdWNlci9zdGVwIl19ZnVuY3Rpb24gXyhlLHQscil7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoMD09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHIoKTt2YXIgbj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMCksaT1uLnBvcCgpO2lmKCFtKGkpKXtmb3IodmFyIG89MDtvPGUubGVuZ3RoOyl7aWYoImZ1bmN0aW9uIj09PXR5cGVvZiBpW2Vbb11dKXJldHVybiBpW2Vbb11dLmFwcGx5KGksbik7bys9MX1pZihiKGkpKXJldHVybiB0LmFwcGx5KG51bGwsbikoaSl9cmV0dXJuIHIuYXBwbHkodGhpcyxhcmd1bWVudHMpfX1mdW5jdGlvbiBTKGUpe3JldHVybiBlJiZlWyJAQHRyYW5zZHVjZXIvcmVkdWNlZCJdP2U6eyJAQHRyYW5zZHVjZXIvdmFsdWUiOmUsIkBAdHJhbnNkdWNlci9yZWR1Y2VkIjohMH19dmFyIEU9e2luaXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy54ZlsiQEB0cmFuc2R1Y2VyL2luaXQiXSgpfSxyZXN1bHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMueGZbIkBAdHJhbnNkdWNlci9yZXN1bHQiXShlKX19LHc9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7dGhpcy54Zj10LHRoaXMuZj1lLHRoaXMuYWxsPSEwfXJldHVybiBlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL2luaXQiXT1FLmluaXQsZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9yZXN1bHQiXT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5hbGwmJihlPXRoaXMueGZbIkBAdHJhbnNkdWNlci9zdGVwIl0oZSwhMCkpLHRoaXMueGZbIkBAdHJhbnNkdWNlci9yZXN1bHQiXShlKX0sZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9zdGVwIl09ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5mKHQpfHwodGhpcy5hbGw9ITEsZT1TKHRoaXMueGZbIkBAdHJhbnNkdWNlci9zdGVwIl0oZSwhMSkpKSxlfSxlfSgpLFQ9YyhfKFsiYWxsIl0sYyhmdW5jdGlvbihlLHQpe3JldHVybiBuZXcgdyhlLHQpfSksZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoOyl7aWYoIWUodFtyXSkpcmV0dXJuITE7cis9MX1yZXR1cm4hMH0pKSxBPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD5lP3Q6ZX0pO2Z1bmN0aW9uIEMoZSx0KXtmb3IodmFyIHI9MCxuPXQubGVuZ3RoLGk9QXJyYXkobik7cjxuOylpW3JdPWUodFtyXSkscis9MTtyZXR1cm4gaX1mdW5jdGlvbiB4KGUpe3JldHVybiJbb2JqZWN0IFN0cmluZ10iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpfXZhciBJPWkoZnVuY3Rpb24oZSl7cmV0dXJuISFtKGUpfHwhIWUmJigib2JqZWN0Ij09PXR5cGVvZiBlJiYoIXgoZSkmJigxPT09ZS5ub2RlVHlwZT8hIWUubGVuZ3RoOjA9PT1lLmxlbmd0aHx8ZS5sZW5ndGg+MCYmKGUuaGFzT3duUHJvcGVydHkoMCkmJmUuaGFzT3duUHJvcGVydHkoZS5sZW5ndGgtMSkpKSkpfSksaz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dGhpcy5mPWV9cmV0dXJuIGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvaW5pdCJdPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJpbml0IG5vdCBpbXBsZW1lbnRlZCBvbiBYV3JhcCIpfSxlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL3Jlc3VsdCJdPWZ1bmN0aW9uKGUpe3JldHVybiBlfSxlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL3N0ZXAiXT1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmYoZSx0KX0sZX0oKTtmdW5jdGlvbiBPKGUpe3JldHVybiBuZXcgayhlKX12YXIgTj1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGgoZS5sZW5ndGgsZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0LGFyZ3VtZW50cyl9KX0pO2Z1bmN0aW9uIFAoZSx0LHIpe2Zvcih2YXIgbj1yLm5leHQoKTshbi5kb25lOyl7aWYoKHQ9ZVsiQEB0cmFuc2R1Y2VyL3N0ZXAiXSh0LG4udmFsdWUpKSYmdFsiQEB0cmFuc2R1Y2VyL3JlZHVjZWQiXSl7dD10WyJAQHRyYW5zZHVjZXIvdmFsdWUiXTticmVha31uPXIubmV4dCgpfXJldHVybiBlWyJAQHRyYW5zZHVjZXIvcmVzdWx0Il0odCl9ZnVuY3Rpb24gUihlLHQscixuKXtyZXR1cm4gZVsiQEB0cmFuc2R1Y2VyL3Jlc3VsdCJdKHJbbl0oTihlWyJAQHRyYW5zZHVjZXIvc3RlcCJdLGUpLHQpKX12YXIgQj0idW5kZWZpbmVkIiE9PXR5cGVvZiBTeW1ib2w/U3ltYm9sLml0ZXJhdG9yOiJAQGl0ZXJhdG9yIjtmdW5jdGlvbiBNKGUsdCxyKXtpZigiZnVuY3Rpb24iPT09dHlwZW9mIGUmJihlPU8oZSkpLEkocikpcmV0dXJuIGZ1bmN0aW9uKGUsdCxyKXtmb3IodmFyIG49MCxpPXIubGVuZ3RoO248aTspe2lmKCh0PWVbIkBAdHJhbnNkdWNlci9zdGVwIl0odCxyW25dKSkmJnRbIkBAdHJhbnNkdWNlci9yZWR1Y2VkIl0pe3Q9dFsiQEB0cmFuc2R1Y2VyL3ZhbHVlIl07YnJlYWt9bis9MX1yZXR1cm4gZVsiQEB0cmFuc2R1Y2VyL3Jlc3VsdCJdKHQpfShlLHQscik7aWYoImZ1bmN0aW9uIj09PXR5cGVvZiByWyJmYW50YXN5LWxhbmQvcmVkdWNlIl0pcmV0dXJuIFIoZSx0LHIsImZhbnRhc3ktbGFuZC9yZWR1Y2UiKTtpZihudWxsIT1yW0JdKXJldHVybiBQKGUsdCxyW0JdKCkpO2lmKCJmdW5jdGlvbiI9PT10eXBlb2Ygci5uZXh0KXJldHVybiBQKGUsdCxyKTtpZigiZnVuY3Rpb24iPT09dHlwZW9mIHIucmVkdWNlKXJldHVybiBSKGUsdCxyLCJyZWR1Y2UiKTt0aHJvdyBuZXcgVHlwZUVycm9yKCJyZWR1Y2U6IGxpc3QgbXVzdCBiZSBhcnJheSBvciBpdGVyYWJsZSIpfXZhciBMPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3RoaXMueGY9dCx0aGlzLmY9ZX1yZXR1cm4gZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9pbml0Il09RS5pbml0LGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvcmVzdWx0Il09RS5yZXN1bHQsZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9zdGVwIl09ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy54ZlsiQEB0cmFuc2R1Y2VyL3N0ZXAiXShlLHRoaXMuZih0KSl9LGV9KCksRD1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBMKGUsdCl9KTtmdW5jdGlvbiBqKGUsdCl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LGUpfXZhciBVPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsRj1mdW5jdGlvbigpe3JldHVybiJbb2JqZWN0IEFyZ3VtZW50c10iPT09VS5jYWxsKGFyZ3VtZW50cyk/ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgQXJndW1lbnRzXSI9PT1VLmNhbGwoZSl9OmZ1bmN0aW9uKGUpe3JldHVybiBqKCJjYWxsZWUiLGUpfX0sVj0he3RvU3RyaW5nOm51bGx9LnByb3BlcnR5SXNFbnVtZXJhYmxlKCJ0b1N0cmluZyIpLHE9WyJjb25zdHJ1Y3RvciIsInZhbHVlT2YiLCJpc1Byb3RvdHlwZU9mIiwidG9TdHJpbmciLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImhhc093blByb3BlcnR5IiwidG9Mb2NhbGVTdHJpbmciXSxLPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5wcm9wZXJ0eUlzRW51bWVyYWJsZSgibGVuZ3RoIil9KCksej1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcj0wO3I8ZS5sZW5ndGg7KXtpZihlW3JdPT09dClyZXR1cm4hMDtyKz0xfXJldHVybiExfSxHPWkoImZ1bmN0aW9uIiE9PXR5cGVvZiBPYmplY3Qua2V5c3x8Sz9mdW5jdGlvbihlKXtpZihPYmplY3QoZSkhPT1lKXJldHVybltdO3ZhciB0LHIsbj1bXSxpPUsmJkYoZSk7Zm9yKHQgaW4gZSkhaih0LGUpfHxpJiYibGVuZ3RoIj09PXR8fChuW24ubGVuZ3RoXT10KTtpZihWKWZvcihyPXEubGVuZ3RoLTE7cj49MDspaih0PXFbcl0sZSkmJiF6KG4sdCkmJihuW24ubGVuZ3RoXT10KSxyLT0xO3JldHVybiBufTpmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0KGUpIT09ZT9bXTpPYmplY3Qua2V5cyhlKX0pLEg9YyhfKFsiZmFudGFzeS1sYW5kL21hcCIsIm1hcCJdLEQsZnVuY3Rpb24oZSx0KXtzd2l0Y2goT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpKXtjYXNlIltvYmplY3QgRnVuY3Rpb25dIjpyZXR1cm4gZCh0Lmxlbmd0aCxmdW5jdGlvbigpe3JldHVybiBlLmNhbGwodGhpcyx0LmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9KTtjYXNlIltvYmplY3QgT2JqZWN0XSI6cmV0dXJuIE0oZnVuY3Rpb24ocixuKXtyZXR1cm4gcltuXT1lKHRbbl0pLHJ9LHt9LEcodCkpO2RlZmF1bHQ6cmV0dXJuIEMoZSx0KX19KSksVz1jKGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPXQsbj0wO248ZS5sZW5ndGg7KXtpZihudWxsPT1yKXJldHVybjtyPXJbZVtuXV0sbis9MX1yZXR1cm4gcn0pLFk9YyhmdW5jdGlvbihlLHQpe3JldHVybiBXKFtlXSx0KX0pLFg9YyhmdW5jdGlvbihlLHQpe3JldHVybiBIKFkoZSksdCl9KSxRPWcoTSksJD1pKGZ1bmN0aW9uKGUpe3JldHVybiBkKFEoQSwwLFgoImxlbmd0aCIsZSkpLGZ1bmN0aW9uKCl7Zm9yKHZhciB0PTAscj1lLmxlbmd0aDt0PHI7KXtpZighZVt0XS5hcHBseSh0aGlzLGFyZ3VtZW50cykpcmV0dXJuITE7dCs9MX1yZXR1cm4hMH0pfSksWj1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUmJnR9KSxKPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3RoaXMueGY9dCx0aGlzLmY9ZSx0aGlzLmFueT0hMX1yZXR1cm4gZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9pbml0Il09RS5pbml0LGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvcmVzdWx0Il09ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuYW55fHwoZT10aGlzLnhmWyJAQHRyYW5zZHVjZXIvc3RlcCJdKGUsITEpKSx0aGlzLnhmWyJAQHRyYW5zZHVjZXIvcmVzdWx0Il0oZSl9LGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvc3RlcCJdPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuZih0KSYmKHRoaXMuYW55PSEwLGU9Uyh0aGlzLnhmWyJAQHRyYW5zZHVjZXIvc3RlcCJdKGUsITApKSksZX0sZX0oKSxlZT1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBKKGUsdCl9KSx0ZT1jKF8oWyJhbnkiXSxlZSxmdW5jdGlvbihlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7KXtpZihlKHRbcl0pKXJldHVybiEwO3IrPTF9cmV0dXJuITF9KSkscmU9aShmdW5jdGlvbihlKXtyZXR1cm4gZChRKEEsMCxYKCJsZW5ndGgiLGUpKSxmdW5jdGlvbigpe2Zvcih2YXIgdD0wLHI9ZS5sZW5ndGg7dDxyOyl7aWYoZVt0XS5hcHBseSh0aGlzLGFyZ3VtZW50cykpcmV0dXJuITA7dCs9MX1yZXR1cm4hMX0pfSksbmU9YyhmdW5jdGlvbihlLHQpe3JldHVybiJmdW5jdGlvbiI9PT10eXBlb2YgdFsiZmFudGFzeS1sYW5kL2FwIl0/dFsiZmFudGFzeS1sYW5kL2FwIl0oZSk6ImZ1bmN0aW9uIj09PXR5cGVvZiBlLmFwP2UuYXAodCk6ImZ1bmN0aW9uIj09PXR5cGVvZiBlP2Z1bmN0aW9uKHIpe3JldHVybiBlKHIpKHQocikpfTpNKGZ1bmN0aW9uKGUscil7cmV0dXJuIGwoZSxIKHIsdCkpfSxbXSxlKX0pO2Z1bmN0aW9uIGllKGUsdCl7Zm9yKHZhciByPTAsbj10Lmxlbmd0aC0oZS0xKSxpPW5ldyBBcnJheShuPj0wP246MCk7cjxuOylpW3JdPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQscixyK2UpLHIrPTE7cmV0dXJuIGl9dmFyIG9lPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3RoaXMueGY9dCx0aGlzLnBvcz0wLHRoaXMuZnVsbD0hMSx0aGlzLmFjYz1uZXcgQXJyYXkoZSl9cmV0dXJuIGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvaW5pdCJdPUUuaW5pdCxlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL3Jlc3VsdCJdPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmFjYz1udWxsLHRoaXMueGZbIkBAdHJhbnNkdWNlci9yZXN1bHQiXShlKX0sZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9zdGVwIl09ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5zdG9yZSh0KSx0aGlzLmZ1bGw/dGhpcy54ZlsiQEB0cmFuc2R1Y2VyL3N0ZXAiXShlLHRoaXMuZ2V0Q29weSgpKTplfSxlLnByb3RvdHlwZS5zdG9yZT1mdW5jdGlvbihlKXt0aGlzLmFjY1t0aGlzLnBvc109ZSx0aGlzLnBvcys9MSx0aGlzLnBvcz09PXRoaXMuYWNjLmxlbmd0aCYmKHRoaXMucG9zPTAsdGhpcy5mdWxsPSEwKX0sZS5wcm90b3R5cGUuZ2V0Q29weT1mdW5jdGlvbigpe3JldHVybiBsKEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuYWNjLHRoaXMucG9zKSxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzLmFjYywwLHRoaXMucG9zKSl9LGV9KCksYWU9YyhfKFtdLGMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3IG9lKGUsdCl9KSxpZSkpLHNlPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gbCh0LFtlXSl9KSx1ZT1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuYXBwbHkodGhpcyx0KX0pLGNlPWkoZnVuY3Rpb24oZSl7Zm9yKHZhciB0PUcoZSkscj10Lmxlbmd0aCxuPVtdLGk9MDtpPHI7KW5baV09ZVt0W2ldXSxpKz0xO3JldHVybiBufSksZmU9aShmdW5jdGlvbiBlKHQpe3JldHVybiB0PUgoZnVuY3Rpb24odCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDplKHQpfSx0KSxkKFEoQSwwLFgoImxlbmd0aCIsY2UodCkpKSxmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cztyZXR1cm4gSChmdW5jdGlvbih0KXtyZXR1cm4gdWUodCxlKX0sdCl9KX0pLGxlPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdChlKX0pLGhlPWcoZnVuY3Rpb24oZSx0LHIpe3ZhciBuPWUodCksaT1lKHIpO3JldHVybiBuPGk/LTE6bj5pPzE6MH0pLHBlPWcoZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXt9O2Zvcih2YXIgaSBpbiByKW5baV09cltpXTtyZXR1cm4gbltlXT10LG59KSxkZT1OdW1iZXIuaXNJbnRlZ2VyfHxmdW5jdGlvbihlKXtyZXR1cm4gZTw8MD09PWV9LHllPWkoZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWV9KSxnZT1nKGZ1bmN0aW9uIGUodCxyLG4pe2lmKDA9PT10Lmxlbmd0aClyZXR1cm4gcjt2YXIgaT10WzBdO2lmKHQubGVuZ3RoPjEpe3ZhciBvPSF5ZShuKSYmaihpLG4pP25baV06ZGUodFsxXSk/W106e307cj1lKEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQsMSkscixvKX1pZihkZShpKSYmbShuKSl7dmFyIGE9W10uY29uY2F0KG4pO3JldHVybiBhW2ldPXIsYX1yZXR1cm4gcGUoaSxyLG4pfSksdmU9YyhmdW5jdGlvbihlLHQpe3N3aXRjaChlKXtjYXNlIDA6cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQuY2FsbCh0aGlzKX07Y2FzZSAxOnJldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdC5jYWxsKHRoaXMsZSl9O2Nhc2UgMjpyZXR1cm4gZnVuY3Rpb24oZSxyKXtyZXR1cm4gdC5jYWxsKHRoaXMsZSxyKX07Y2FzZSAzOnJldHVybiBmdW5jdGlvbihlLHIsbil7cmV0dXJuIHQuY2FsbCh0aGlzLGUscixuKX07Y2FzZSA0OnJldHVybiBmdW5jdGlvbihlLHIsbixpKXtyZXR1cm4gdC5jYWxsKHRoaXMsZSxyLG4saSl9O2Nhc2UgNTpyZXR1cm4gZnVuY3Rpb24oZSxyLG4saSxvKXtyZXR1cm4gdC5jYWxsKHRoaXMsZSxyLG4saSxvKX07Y2FzZSA2OnJldHVybiBmdW5jdGlvbihlLHIsbixpLG8sYSl7cmV0dXJuIHQuY2FsbCh0aGlzLGUscixuLGksbyxhKX07Y2FzZSA3OnJldHVybiBmdW5jdGlvbihlLHIsbixpLG8sYSxzKXtyZXR1cm4gdC5jYWxsKHRoaXMsZSxyLG4saSxvLGEscyl9O2Nhc2UgODpyZXR1cm4gZnVuY3Rpb24oZSxyLG4saSxvLGEscyx1KXtyZXR1cm4gdC5jYWxsKHRoaXMsZSxyLG4saSxvLGEscyx1KX07Y2FzZSA5OnJldHVybiBmdW5jdGlvbihlLHIsbixpLG8sYSxzLHUsYyl7cmV0dXJuIHQuY2FsbCh0aGlzLGUscixuLGksbyxhLHMsdSxjKX07Y2FzZSAxMDpyZXR1cm4gZnVuY3Rpb24oZSxyLG4saSxvLGEscyx1LGMsZil7cmV0dXJuIHQuY2FsbCh0aGlzLGUscixuLGksbyxhLHMsdSxjLGYpfTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiRmlyc3QgYXJndW1lbnQgdG8gbkFyeSBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGludGVnZXIgbm8gZ3JlYXRlciB0aGFuIHRlbiIpfX0pLG1lPWkoZnVuY3Rpb24oZSl7cmV0dXJuIHZlKDIsZSl9KTtmdW5jdGlvbiBiZShlKXtyZXR1cm4iW29iamVjdCBGdW5jdGlvbl0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpfXZhciBfZT1jKGZ1bmN0aW9uKGUsdCl7dmFyIHI9ZChlLHQpO3JldHVybiBkKGUsZnVuY3Rpb24oKXtyZXR1cm4gTShuZSxIKHIsYXJndW1lbnRzWzBdKSxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSkpfSl9KSxTZT1pKGZ1bmN0aW9uKGUpe3JldHVybiBfZShlLmxlbmd0aCxlKX0pLEVlPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gYmUoZSk/ZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cykmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfTpTZShaKShlLHQpfSksd2U9aShmdW5jdGlvbihlKXtyZXR1cm4gZChlLmxlbmd0aCxlKX0pLFRlPXdlKGZ1bmN0aW9uKGUpe3JldHVybiBlLmFwcGx5KHRoaXMsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpKX0pO2Z1bmN0aW9uIEFlKGUpe3JldHVybiBmdW5jdGlvbiB0KHIpe2Zvcih2YXIgbixpLG8sYT1bXSxzPTAsdT1yLmxlbmd0aDtzPHU7KXtpZihJKHJbc10pKWZvcihvPTAsaT0obj1lP3QocltzXSk6cltzXSkubGVuZ3RoO288aTspYVthLmxlbmd0aF09bltvXSxvKz0xO2Vsc2UgYVthLmxlbmd0aF09cltzXTtzKz0xfXJldHVybiBhfX12YXIgQ2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZnVuY3Rpb24oZSl7cmV0dXJueyJAQHRyYW5zZHVjZXIvaW5pdCI6RS5pbml0LCJAQHRyYW5zZHVjZXIvcmVzdWx0IjpmdW5jdGlvbih0KXtyZXR1cm4gZVsiQEB0cmFuc2R1Y2VyL3Jlc3VsdCJdKHQpfSwiQEB0cmFuc2R1Y2VyL3N0ZXAiOmZ1bmN0aW9uKHQscil7dmFyIG49ZVsiQEB0cmFuc2R1Y2VyL3N0ZXAiXSh0LHIpO3JldHVybiBuWyJAQHRyYW5zZHVjZXIvcmVkdWNlZCJdP3siQEB0cmFuc2R1Y2VyL3ZhbHVlIjpuLCJAQHRyYW5zZHVjZXIvcmVkdWNlZCI6ITB9Om59fX0oZSk7cmV0dXJueyJAQHRyYW5zZHVjZXIvaW5pdCI6RS5pbml0LCJAQHRyYW5zZHVjZXIvcmVzdWx0IjpmdW5jdGlvbihlKXtyZXR1cm4gdFsiQEB0cmFuc2R1Y2VyL3Jlc3VsdCJdKGUpfSwiQEB0cmFuc2R1Y2VyL3N0ZXAiOmZ1bmN0aW9uKGUscil7cmV0dXJuIEkocik/TSh0LGUscik6TSh0LGUsW3JdKX19fSx4ZT1jKF8oWyJmYW50YXN5LWxhbmQvY2hhaW4iLCJjaGFpbiJdLGMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gSChlLENlKHQpKX0pLGZ1bmN0aW9uKGUsdCl7cmV0dXJuImZ1bmN0aW9uIj09PXR5cGVvZiB0P2Z1bmN0aW9uKHIpe3JldHVybiBlKHQocikpKHIpfTpBZSghMSkoSChlLHQpKX0pKSxJZT1nKGZ1bmN0aW9uKGUsdCxyKXtpZihlPnQpdGhyb3cgbmV3IEVycm9yKCJtaW4gbXVzdCBub3QgYmUgZ3JlYXRlciB0aGFuIG1heCBpbiBjbGFtcChtaW4sIG1heCwgdmFsdWUpIik7cmV0dXJuIHI8ZT9lOnI+dD90OnJ9KTtmdW5jdGlvbiBrZShlKXtyZXR1cm4gbmV3IFJlZ0V4cChlLnNvdXJjZSwoZS5nbG9iYWw/ImciOiIiKSsoZS5pZ25vcmVDYXNlPyJpIjoiIikrKGUubXVsdGlsaW5lPyJtIjoiIikrKGUuc3RpY2t5PyJ5IjoiIikrKGUudW5pY29kZT8idSI6IiIpKX12YXIgT2U9aShmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09PWU/Ik51bGwiOnZvaWQgMD09PWU/IlVuZGVmaW5lZCI6T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpfSk7ZnVuY3Rpb24gTmUoZSx0LHIsbil7dmFyIGk9ZnVuY3Rpb24oaSl7Zm9yKHZhciBvPXQubGVuZ3RoLGE9MDthPG87KXtpZihlPT09dFthXSlyZXR1cm4gclthXTthKz0xfWZvcih2YXIgcyBpbiB0W2ErMV09ZSxyW2ErMV09aSxlKWlbc109bj9OZShlW3NdLHQsciwhMCk6ZVtzXTtyZXR1cm4gaX07c3dpdGNoKE9lKGUpKXtjYXNlIk9iamVjdCI6cmV0dXJuIGkoe30pO2Nhc2UiQXJyYXkiOnJldHVybiBpKFtdKTtjYXNlIkRhdGUiOnJldHVybiBuZXcgRGF0ZShlLnZhbHVlT2YoKSk7Y2FzZSJSZWdFeHAiOnJldHVybiBrZShlKTtkZWZhdWx0OnJldHVybiBlfX12YXIgUGU9aShmdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZSYmImZ1bmN0aW9uIj09PXR5cGVvZiBlLmNsb25lP2UuY2xvbmUoKTpOZShlLFtdLFtdLCEwKX0pLFJlPWkoZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQscil7cmV0dXJuIGUodCxyKT8tMTplKHIsdCk/MTowfX0pLEJlPWkoZnVuY3Rpb24oZSl7cmV0dXJuIWV9KSxNZT1TZShCZSk7ZnVuY3Rpb24gTGUoZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdC5jYWxsKHRoaXMsZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfX1mdW5jdGlvbiBEZShlLHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciByPWFyZ3VtZW50cy5sZW5ndGg7aWYoMD09PXIpcmV0dXJuIHQoKTt2YXIgbj1hcmd1bWVudHNbci0xXTtyZXR1cm4gbShuKXx8ImZ1bmN0aW9uIiE9PXR5cGVvZiBuW2VdP3QuYXBwbHkodGhpcyxhcmd1bWVudHMpOm5bZV0uYXBwbHkobixBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMCxyLTEpKX19dmFyIGplPWcoRGUoInNsaWNlIixmdW5jdGlvbihlLHQscil7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHIsZSx0KX0pKSxVZT1pKERlKCJ0YWlsIixqZSgxLDEvMCkpKTtmdW5jdGlvbiBGZSgpe2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXRocm93IG5ldyBFcnJvcigicGlwZSByZXF1aXJlcyBhdCBsZWFzdCBvbmUgYXJndW1lbnQiKTtyZXR1cm4gaChhcmd1bWVudHNbMF0ubGVuZ3RoLFEoTGUsYXJndW1lbnRzWzBdLFVlKGFyZ3VtZW50cykpKX12YXIgVmU9aShmdW5jdGlvbihlKXtyZXR1cm4geChlKT9lLnNwbGl0KCIiKS5yZXZlcnNlKCkuam9pbigiIik6QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZSwwKS5yZXZlcnNlKCl9KTtmdW5jdGlvbiBxZSgpe2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiY29tcG9zZSByZXF1aXJlcyBhdCBsZWFzdCBvbmUgYXJndW1lbnQiKTtyZXR1cm4gRmUuYXBwbHkodGhpcyxWZShhcmd1bWVudHMpKX1mdW5jdGlvbiBLZSgpe2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiY29tcG9zZUsgcmVxdWlyZXMgYXQgbGVhc3Qgb25lIGFyZ3VtZW50Iik7dmFyIGU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSx0PWUucG9wKCk7cmV0dXJuIHFlKHFlLmFwcGx5KHRoaXMsSCh4ZSxlKSksdCl9ZnVuY3Rpb24gemUoZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcj10aGlzO3JldHVybiBlLmFwcGx5KHIsYXJndW1lbnRzKS50aGVuKGZ1bmN0aW9uKGUpe3JldHVybiB0LmNhbGwocixlKX0pfX1mdW5jdGlvbiBHZSgpe2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXRocm93IG5ldyBFcnJvcigicGlwZVAgcmVxdWlyZXMgYXQgbGVhc3Qgb25lIGFyZ3VtZW50Iik7cmV0dXJuIGgoYXJndW1lbnRzWzBdLmxlbmd0aCxRKHplLGFyZ3VtZW50c1swXSxVZShhcmd1bWVudHMpKSl9ZnVuY3Rpb24gSGUoKXtpZigwPT09YXJndW1lbnRzLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoImNvbXBvc2VQIHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBhcmd1bWVudCIpO3JldHVybiBHZS5hcHBseSh0aGlzLFZlKGFyZ3VtZW50cykpfWZ1bmN0aW9uIFdlKGUpe2Zvcih2YXIgdCxyPVtdOyEodD1lLm5leHQoKSkuZG9uZTspci5wdXNoKHQudmFsdWUpO3JldHVybiByfWZ1bmN0aW9uIFllKGUsdCxyKXtmb3IodmFyIG49MCxpPXIubGVuZ3RoO248aTspe2lmKGUodCxyW25dKSlyZXR1cm4hMDtuKz0xfXJldHVybiExfXZhciBYZT1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9PT10PzAhPT1lfHwxL2U9PT0xL3Q6ZSE9PWUmJnQhPT10fSk7ZnVuY3Rpb24gUWUoZSx0LHIsbil7dmFyIGk9V2UoZSk7ZnVuY3Rpb24gbyhlLHQpe3JldHVybiAkZShlLHQsci5zbGljZSgpLG4uc2xpY2UoKSl9cmV0dXJuIVllKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIVllKG8sdCxlKX0sV2UodCksaSl9ZnVuY3Rpb24gJGUoZSx0LHIsbil7aWYoWGUoZSx0KSlyZXR1cm4hMDt2YXIgaT1PZShlKTtpZihpIT09T2UodCkpcmV0dXJuITE7aWYobnVsbD09ZXx8bnVsbD09dClyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT09dHlwZW9mIGVbImZhbnRhc3ktbGFuZC9lcXVhbHMiXXx8ImZ1bmN0aW9uIj09PXR5cGVvZiB0WyJmYW50YXN5LWxhbmQvZXF1YWxzIl0pcmV0dXJuImZ1bmN0aW9uIj09PXR5cGVvZiBlWyJmYW50YXN5LWxhbmQvZXF1YWxzIl0mJmVbImZhbnRhc3ktbGFuZC9lcXVhbHMiXSh0KSYmImZ1bmN0aW9uIj09PXR5cGVvZiB0WyJmYW50YXN5LWxhbmQvZXF1YWxzIl0mJnRbImZhbnRhc3ktbGFuZC9lcXVhbHMiXShlKTtpZigiZnVuY3Rpb24iPT09dHlwZW9mIGUuZXF1YWxzfHwiZnVuY3Rpb24iPT09dHlwZW9mIHQuZXF1YWxzKXJldHVybiJmdW5jdGlvbiI9PT10eXBlb2YgZS5lcXVhbHMmJmUuZXF1YWxzKHQpJiYiZnVuY3Rpb24iPT09dHlwZW9mIHQuZXF1YWxzJiZ0LmVxdWFscyhlKTtzd2l0Y2goaSl7Y2FzZSJBcmd1bWVudHMiOmNhc2UiQXJyYXkiOmNhc2UiT2JqZWN0IjppZigiZnVuY3Rpb24iPT09dHlwZW9mIGUuY29uc3RydWN0b3ImJiJQcm9taXNlIj09PWZ1bmN0aW9uKGUpe3ZhciB0PVN0cmluZyhlKS5tYXRjaCgvXmZ1bmN0aW9uIChcdyopLyk7cmV0dXJuIG51bGw9PXQ/IiI6dFsxXX0oZS5jb25zdHJ1Y3RvcikpcmV0dXJuIGU9PT10O2JyZWFrO2Nhc2UiQm9vbGVhbiI6Y2FzZSJOdW1iZXIiOmNhc2UiU3RyaW5nIjppZih0eXBlb2YgZSE9PXR5cGVvZiB0fHwhWGUoZS52YWx1ZU9mKCksdC52YWx1ZU9mKCkpKXJldHVybiExO2JyZWFrO2Nhc2UiRGF0ZSI6aWYoIVhlKGUudmFsdWVPZigpLHQudmFsdWVPZigpKSlyZXR1cm4hMTticmVhaztjYXNlIkVycm9yIjpyZXR1cm4gZS5uYW1lPT09dC5uYW1lJiZlLm1lc3NhZ2U9PT10Lm1lc3NhZ2U7Y2FzZSJSZWdFeHAiOmlmKGUuc291cmNlIT09dC5zb3VyY2V8fGUuZ2xvYmFsIT09dC5nbG9iYWx8fGUuaWdub3JlQ2FzZSE9PXQuaWdub3JlQ2FzZXx8ZS5tdWx0aWxpbmUhPT10Lm11bHRpbGluZXx8ZS5zdGlja3khPT10LnN0aWNreXx8ZS51bmljb2RlIT09dC51bmljb2RlKXJldHVybiExfWZvcih2YXIgbz1yLmxlbmd0aC0xO28+PTA7KXtpZihyW29dPT09ZSlyZXR1cm4gbltvXT09PXQ7by09MX1zd2l0Y2goaSl7Y2FzZSJNYXAiOnJldHVybiBlLnNpemU9PT10LnNpemUmJlFlKGUuZW50cmllcygpLHQuZW50cmllcygpLHIuY29uY2F0KFtlXSksbi5jb25jYXQoW3RdKSk7Y2FzZSJTZXQiOnJldHVybiBlLnNpemU9PT10LnNpemUmJlFlKGUudmFsdWVzKCksdC52YWx1ZXMoKSxyLmNvbmNhdChbZV0pLG4uY29uY2F0KFt0XSkpO2Nhc2UiQXJndW1lbnRzIjpjYXNlIkFycmF5IjpjYXNlIk9iamVjdCI6Y2FzZSJCb29sZWFuIjpjYXNlIk51bWJlciI6Y2FzZSJTdHJpbmciOmNhc2UiRGF0ZSI6Y2FzZSJFcnJvciI6Y2FzZSJSZWdFeHAiOmNhc2UiSW50OEFycmF5IjpjYXNlIlVpbnQ4QXJyYXkiOmNhc2UiVWludDhDbGFtcGVkQXJyYXkiOmNhc2UiSW50MTZBcnJheSI6Y2FzZSJVaW50MTZBcnJheSI6Y2FzZSJJbnQzMkFycmF5IjpjYXNlIlVpbnQzMkFycmF5IjpjYXNlIkZsb2F0MzJBcnJheSI6Y2FzZSJGbG9hdDY0QXJyYXkiOmNhc2UiQXJyYXlCdWZmZXIiOmJyZWFrO2RlZmF1bHQ6cmV0dXJuITF9dmFyIGE9RyhlKTtpZihhLmxlbmd0aCE9PUcodCkubGVuZ3RoKXJldHVybiExO3ZhciBzPXIuY29uY2F0KFtlXSksdT1uLmNvbmNhdChbdF0pO2ZvcihvPWEubGVuZ3RoLTE7bz49MDspe3ZhciBjPWFbb107aWYoIWooYyx0KXx8ISRlKHRbY10sZVtjXSxzLHUpKXJldHVybiExO28tPTF9cmV0dXJuITB9dmFyIFplPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gJGUoZSx0LFtdLFtdKX0pO2Z1bmN0aW9uIEplKGUsdCxyKXt2YXIgbixpO2lmKCJmdW5jdGlvbiI9PT10eXBlb2YgZS5pbmRleE9mKXN3aXRjaCh0eXBlb2YgdCl7Y2FzZSJudW1iZXIiOmlmKDA9PT10KXtmb3Iobj0xL3Q7cjxlLmxlbmd0aDspe2lmKDA9PT0oaT1lW3JdKSYmMS9pPT09bilyZXR1cm4gcjtyKz0xfXJldHVybi0xfWlmKHQhPT10KXtmb3IoO3I8ZS5sZW5ndGg7KXtpZigibnVtYmVyIj09PXR5cGVvZihpPWVbcl0pJiZpIT09aSlyZXR1cm4gcjtyKz0xfXJldHVybi0xfXJldHVybiBlLmluZGV4T2YodCxyKTtjYXNlInN0cmluZyI6Y2FzZSJib29sZWFuIjpjYXNlImZ1bmN0aW9uIjpjYXNlInVuZGVmaW5lZCI6cmV0dXJuIGUuaW5kZXhPZih0LHIpO2Nhc2Uib2JqZWN0IjppZihudWxsPT09dClyZXR1cm4gZS5pbmRleE9mKHQscil9Zm9yKDtyPGUubGVuZ3RoOyl7aWYoWmUoZVtyXSx0KSlyZXR1cm4gcjtyKz0xfXJldHVybi0xfWZ1bmN0aW9uIGV0KGUsdCl7cmV0dXJuIEplKHQsZSwwKT49MH1mdW5jdGlvbiB0dChlKXtyZXR1cm4nIicrZS5yZXBsYWNlKC9cXC9nLCJcXFxcIikucmVwbGFjZSgvW1xiXS9nLCJcXGIiKS5yZXBsYWNlKC9cZi9nLCJcXGYiKS5yZXBsYWNlKC9cbi9nLCJcXG4iKS5yZXBsYWNlKC9cci9nLCJcXHIiKS5yZXBsYWNlKC9cdC9nLCJcXHQiKS5yZXBsYWNlKC9cdi9nLCJcXHYiKS5yZXBsYWNlKC9cMC9nLCJcXDAiKS5yZXBsYWNlKC8iL2csJ1xcIicpKyciJ312YXIgcnQ9ZnVuY3Rpb24oZSl7cmV0dXJuKGU8MTA/IjAiOiIiKStlfSxudD0iZnVuY3Rpb24iPT09dHlwZW9mIERhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nP2Z1bmN0aW9uKGUpe3JldHVybiBlLnRvSVNPU3RyaW5nKCl9OmZ1bmN0aW9uKGUpe3JldHVybiBlLmdldFVUQ0Z1bGxZZWFyKCkrIi0iK3J0KGUuZ2V0VVRDTW9udGgoKSsxKSsiLSIrcnQoZS5nZXRVVENEYXRlKCkpKyJUIitydChlLmdldFVUQ0hvdXJzKCkpKyI6IitydChlLmdldFVUQ01pbnV0ZXMoKSkrIjoiK3J0KGUuZ2V0VVRDU2Vjb25kcygpKSsiLiIrKGUuZ2V0VVRDTWlsbGlzZWNvbmRzKCkvMWUzKS50b0ZpeGVkKDMpLnNsaWNlKDIsNSkrIloifTtmdW5jdGlvbiBpdChlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4hZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIG90KGUsdCl7Zm9yKHZhciByPTAsbj10Lmxlbmd0aCxpPVtdO3I8bjspZSh0W3JdKSYmKGlbaS5sZW5ndGhdPXRbcl0pLHIrPTE7cmV0dXJuIGl9ZnVuY3Rpb24gYXQoZSl7cmV0dXJuIltvYmplY3QgT2JqZWN0XSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSl9dmFyIHN0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3RoaXMueGY9dCx0aGlzLmY9ZX1yZXR1cm4gZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9pbml0Il09RS5pbml0LGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvcmVzdWx0Il09RS5yZXN1bHQsZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9zdGVwIl09ZnVuY3Rpb24oZSx0KXtyZXQ="
}